pax_global_header00006660000000000000000000000064131236653550014523gustar00rootroot0000000000000052 comment=2f9dc08e94ede42bb11b2a00cf5eafd4ddb33f1f ipv6calc-1.0.0/000077500000000000000000000000001312366535500132305ustar00rootroot00000000000000ipv6calc-1.0.0/.gitattributes000066400000000000000000000003171312366535500161240ustar00rootroot00000000000000README* ident ChangeLog ident CHANGES ident COPYING ident CREDITS ident INSTALLING ident TODO ident USAGE ident VERSION* ident Makefile ident *.c ident *.h ident *.lyx ident *.sh ident *.in ident *.pl ident ipv6calc-1.0.0/.gitignore000066400000000000000000000011161312366535500152170ustar00rootroot00000000000000*.o *.so *.so.* *.a *.la *.lo *.slo *~ Makefile autogen-all-variants.status autom4te.cache/ config.h config.log config.status databases/lib/Makefile getopt/Makefile ipv6calc/Makefile ipv6calcweb/Makefile ipv6loganon/Makefile ipv6logconv/Makefile ipv6logstats/Makefile lib/Makefile man/Makefile md5/Makefile mod_ipv6calc/Makefile tools/DBIP-update.sh tools/GeoIP-update.sh tools/IP2Location-update.sh tools/Makefile tools/ipv6calc-db-update.sh ipv6calc/ipv6calc ipv6calcweb/ipv6calcweb.cgi ipv6loganon/ipv6loganon ipv6logconv/ipv6logconv ipv6logstats/ipv6logstats databases/*/*.db */.libs/* ipv6calc-1.0.0/CHANGES000066400000000000000000000050501312366535500142230ustar00rootroot00000000000000Major Changes/Enhancements of ipv6calc 0.94 -> 0.95 ============ - full IPv6 address (prefix + IID) anonymization added by selecting method "kp" e.g. 2001:0a60:11e1:9501:e876:aee4:0721:e8ac => a909:16fa:9092:23ff:a909:4941::7 - type string "iid-privacy" is replaced with "iid-random" - add support for options to specify database directories db-ip2location-dir db-geoip-dir - add support for options to specify library files (in case of dynamic linking is configured) db-ip2location-lib db-geoip-lib - add support for options to disable GeoIP and IP2Location on runtime db-ip2location-disable db-geoip-disable - ignore options for specifying files for GeoIP & IP2Location db-ip2location-ipv4 db-ip2location-ipv6 db-ip2location-default db-ip2location-ipv4-default db-ip2location-ipv6-default db-geoip-ipv4 db-geoip-ipv6 db-geoip-default db-geoip-ipv4-default db-geoip-ipv6-default - add configure options --with-ip2location-db --with-geoip-db --with-ip2location-dyn-lib --with-geoip-dyn-lib - remove configure options --with-ip2location-ipv4-default-file=file --with-ip2location-ipv6-default-file=file --with-geoip-ipv4-default-file=file --with-geoip-ipv6-default-file=file - add support for anonymization of EUI-64 addresses option --mask-iid is now deprecated and replaced by new option --mask-eui64 - anonymization/zeroize: add option to autoadjust mask to keep some type or OUI/IAB values universal/local bit will be always kept on zeroizing EUI-48/EUI-64 ipv6calc - '-A filter' is autoselected if '-E ' is given ipv6calcweb.cgi - remove support for environment values HTTP_IPV6CALCWEB_DB_IP2LOCATION_IPV4 HTTP_IPV6CALCWEB_DB_IP2LOCATION_IPV6 HTTP_IPV6CALCWEB_DB_GEOPIP_IPV4 HTTP_IPV6CALCWEB_DB_GEOPIP_IPV6 - add support for environment values HTTP_IPV6CALCWEB_DB_IP2LOCATION_DIR HTTP_IPV6CALCWEB_DB_IP2LOCATION_LIB HTTP_IPV6CALCWEB_DB_GEOPIP_DIR HTTP_IPV6CALCWEB_DB_GEOPIP_LIB - ipv6logstats is now able to create additional statistics by CountryCode & AS Number (in case of related database support) DateTime and Unixtime is now displayed on generated statistics - ipv6calc/showinfo IP2LOCATION_DATABASE_INFO_IPV4 (replaced) IP2LOCATION_DATABASE_INFO_IPV6 (replaced) IP2LOCATION_DATABASE_INFO (reintroduced) GEOIP_DATABASE_INFO_IPV4 (replaced) GEOIP_DATABASE_INFO_IPV6 (replaced) GEOIP_DATABASE_INFO (reintroduced) IPV6CALC_OUTPUT_VERSION=7 0.93 -> 0.94 ============ - add OUI-36 database support ipv6calc-1.0.0/COPYING000066400000000000000000000431321312366535500142660ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ipv6calc-1.0.0/CREDITS000066400000000000000000000042101312366535500142450ustar00rootroot00000000000000Credits to * Paul Streander for testing db-ip.com "full" database support * Nikoli for supplying compilation compatibility patches * Luca Bruno for supplying security patches * Raphaël Assénat for contributing the 6rd extension * Evan Hunt & Dave Täht for bug hunting on MIPS platform * Pedro LaWwrench for bug reporting * JC Janos for bug reporting * Niko Tyni - clean reimplementation of RFC 1924 conversion code - some help on configure.in - contribution of patches and man files * Eric S. Raymond - contribution of patches for man page * Authors of ircd for RFC 1884 decompress algorithmus * Authors of net-tools (recycling of some code) * Authors of Linux kernel (recycling of some code) * Arkadiusz Miskiewicz - for previously used RFC 1884 compress example code - for hints how to use AC_CHECK_* in configure.in * Jun-ichiro itojun Hagino for previously used RFC 1884 compress example code * Horacio J. Peña for previously used RFC 1884 compress example code * Hubert Feyrer for BSD enabling patches, NetBSD testbed and several help * Pekka Savola for bug reporting * YOSHIFUJI Hideaki for MD5 hints * Vladimir Kotal for getopt patch for compiling on OpenBSD * Peter Poeml for bug reporting * Rolf Holtsmark for bug reporting * for contributing man pages * Radek Vokal some fixes * Simon Arlott patch to extend IPv6 TLA assignement * Brad Allen/sonic.net for bug reporting * VMware, in which my OpenBSD and FreeBSD installation is running * Peter A. Darnell and Philip E. Margolis C - A software engineering approach [one of the best books about programming language C around the world, forget Kerningham/Ritchie, use this book instead like me for over 17 years ] Peter Bieringer, 2017-02-21 ipv6calc-1.0.0/ChangeLog000066400000000000000000001726251312366535500150170ustar00rootroot00000000000000/* * $Id: e65e7b4c91b96980d473cb627e0b135590a79de4 $ */ Info: PB = Peter Bieringer NT = Niko Tyni ESR = Eric S. Raymond PV = Peter Volkov AGP = Anthony G. Basile -------------------------------------------------------------------- 20170625/PB mod_ipv6calc/test_mod_ipv6calc.sh: add fallback path for ps binary databases: update 20170622/PB various: cosmetics and fix help/version option handling 20170621/PB doc/*: update ipv6calc/ipv6calc.c, ipv6loganon/ipv6loganon.c, ipv6logconv/ipv6logconv.c, ipv6logstats/ipv6logstats.c: improve option handling 20170618/PB databases/lib/libipv6calc_db_wrapper_IP2Location.c: add fallback for library version display < 8.0.4 20170617/PB external-fallback/IP2Location: update to version 8.0.4 databases/lib/libipv6calc_db_wrapper.c: improve the limiter of a binary search autogen-support.sh: add GeoIP 1.6.10 1.6.11, IP2Location 8.0.4 20170616/PB databases/lib/libipv6calc_db_wrapper.c: detect loops in binary search earlier then reaching the limit 20170614/PB databases/lib/libipv6calc_db_wrapper_External.c: fix caching wrong pointers of subdbs 20170613/PB databases/lib/libipv6calc_db_wrapper.c: fix potential endless lookups in binary search in case database has holes 20170607/PB databases: update 20170228/PB ipv6calc/showinfo.h: increase output version to 11 20170227/PB various files: bugfixes tools/DBIP-generate-db.pl: add support for isp/location version of DBIP.com 20170226/PB various files: add LISP support in External database IP2Location: add enhancements for upcoming 8.0.4 20170225/PB various files: add LISP support in BuiltIn database ipv6calcweb/ipv6calcweb.cgi[.in]: add URL support for LISP and Longitude/Latitude (Openstreetmap) 20170219/PB tools/DBIP-generate-db.pl: add support for full version of DBIP.com databases/lib/libipv6calc_db_wrapper_DBIP.[ch]: add support for full version of DBIP.com databases/lib/libipv6calc_db_wrapper.c, lib/ipv6calchelp.c, lib/ipv6calccommands.h, lib/ipv6calcoptions_common.h: add support for DBIP.com DB selction options 20170205/PB databases/lib/libipv6calc_db_wrapper.c: add support for LISP internal: rename 'scope' to 'typeinfo' internal: switch from ipv*addr_gettype ipv*addr_settype test scripts: various cosmetics and add LISP tests lib/libipv6addr.[ch]: add support for anonymization of LISP adresses lib/libipv6calc.h: add LISP registry 20170127/PB lib/libipv4addr.[ch]: implement support for LISP-IPv4 lib/libipv6addr.[ch]: extend filter structure for typeinfo2 20170124/PB lib/libipv6addr.[ch]: implement support for LISP-IPv6 ipv6calc/showinfo.c: add typeinfo2 also on human readable output 20161231/PB lib/Makefile.in,databases/lib/Makefile.in: skip build of shared library if not selected by configure option (https://github.com/pbiering/ipv6calc/issues/3) 20161228/PB configure[.in]: add conditional support for -Wextra (clang) various *.c/*.h: fixes regarding -Wextra TODO: update contrib/ipv6calc.spec[.in]: add support for git commit hash tag version 0.99.2 20161224/PB databases: update databases/cc-assignment/create-cc-to-registry-list.pl: perl syntax fix databases/registries/Makefile: fix distclean 20161218/PB ipv6calc/ipv6calc.c: remove unnecessary paranthesis to fulfill -Wparentheses-equality configure[.in]: add conditional support for -Wparentheses-equality (seen on FreeBSD 12) README.BUILDING-IP2LOCATION: updates databases: update autogen.sh: add option '--clang' autogen-support.sh: add additional versions of GeoIP and IP2Location databases/lib/libipv6calc_db_wrapper_IP2Location.c: remove unnecessary paranthesis to fulfill -Wparentheses-equality 20160907/PB README,doc/ipv6calc.*: replace CVS with GitHub URL doc/ldp.dsl: original copy from TLDP databases/lib/libipv6calc_db_wrapper_IP2Location.c: add support for version 8 lib/ipv6calchelp.c: add support for IP2Location API version feature (new in version 8) TODO: update README: updates contrib/ipv6calc.spec: fix typos 20161004/PB ipv6calc: support (<|<=|>=|>) option in address filter strings ipv6calc: support =(lt|le|ge|gt)= as an alternative option in address filter strings 20161003/PB ipv6calc: add option --test_lt|gt|le|ge 20160929/PB ipv6calc: add option --test_prefix 20160902/PB databases/lib/libipv6calc_db_wrapper_IP2Location.c, lib/ipv6calchelp.c: display IP2Location library version if provided by library 20160309/ESR tools/ipv6calc-update-registries.sh: be more quiet in case called by cron 20160307/ESR man/*.8: cleaned-up, lift cleanly to XML-DocBook and HTML 20160204/PB man/ipv6logstats.8: cosmetic fixes contrib/ipv6calc.spec[.in]: add post/postun, minor fixes 20160203/PB use -Wno-unused-const-variable if available 20150905/PB databases: update, fix ieee parser ignoring " tag version 0.99.1 20150823/PB ipv6calc: autoselect IPv4 output on action 'conv6to4' if undefined ipv6calc: add new action 'convnat64' 20150818/PB databases: update 20150802/PB databases: update 20150712/PB databases/lib/libipv6calc_db_wrapper.c: implement last use cache for cc_index, as_num32, registry 20150614/PB databases/lib/libipv6calc_db_wrapper_IP2Location.c: some bugfixes regarding commercial DB file handling 20150527/PB ipv6calc: add action --6rd_extract_ipv4 20150526/PB ipv6calc: add option --6rd_prefixlength to specify a length of the 6RD prefix ipv6calc: --6rd_relay_prefix is now optional 201505xx/PB databases/lib/libipv6calc_db_wrapper.c: implementation of database priority selector 20150513/PB mod_ipv6calc: new 20150508/PB add internal library version checks for future usage lib/libipv6calc.c: fix bug in IPv4 address autodetection (e.g. 253.134.12.143/0) introduce new defines regarding program and API versions major/minor/bugfix 20150505/PB add support for IPv4/IPv6 address/mask filtering for option -E 20150504/PB display on -vv whether MD5 or GETOPT are bundled 20150503/PB fix missing prefix informational DB output on ipv6logstats add used DB info in row mode on ipv6logstats 20150502/PB add option: --db-ip2location-lite-to-sample-autoswitch-max-delta-months add option: --db-ip2location-comm-to-lite-switch-min-delta-months add option: --db-ip2location-only-type add option: --db-ip2location-allow-softlinks internal databases: updates tag version 0.99.0 20150429/PB add filter for token match and empty value on machine readable output 20150423/PB add extension for IP2Location LITE disclaimer improve quoting of machine readable ipv6calc output add additional options for controling quoting and filter machine readable output add all database fields to non-machinereadable output 20150417/PB internal databases: updates 20150416/PB external-fallback/IP2Location: update to 7.0.1 20150415/PB autogen-support.sh: add IP2Location 7.0.1 IP2Location: add support for 7.0.1 20150414/PB autogen-support.sh: add GeoIP 1.6.2 1.6.3 1.6.4 1.6.5 20150409/PB fallback compatibility for EOL IP2Location 4.x/6.x libraries (incompatible database layout for IPv6) ipv6calcweb.cgi: add additional IP2Location output (version 10) 20150406/PB IP2Location: add support for LITE databases and improve db autodetection ipv6calc action filter: add support for CountryCode and ASN filter 20150301/PB spec file: rebase with fedora-scm spec fix VERSION (still containing rc4) retag version 0.98.0 20150220/PB doc/*: update databases: update tag version 0.98.0 20150218/PB spec file: align with fedora-scm spec tools/*: remove now by autoconf generated scripts 20150215/PB tools/ipv6calc-db-update.sh: new for dedicated database update capability tools/ipv6calc-create-registry-list-ipv4.pl: migration from database dir tools/ipv6calc-create-registry-list-ipv6.pl: migration from database dir tools/ipv6calc-registries-check-run-create.sh: migration from database dir tools/ipv6calc-update-registries.sh: migration from database dir databases: update 20150213/PB ipv6calcweb/ipv6calcweb.cgi[.in]: add support for EXTERNAL db directory ipv6calcweb/ipv6calcweb.conf: add default ACL restriction to localhost 20150211/PB databases: update 20150123/PB databases/lib/libipv6calc_db_wrapper_GeoIP|IP2Location.c: add some missing dlerror calls 20141209/PB databases: update databases/registries/update-registries.sh: add dst directory option, some review databases/ipv4-assignment/create-registry-list.pl: add src/dst directory option, some review databases/ipv6-assignment/create-registry-list.pl: add src/dst directory option, some review databases/tools/ipv6calc-db-update.sh: new 20141127/PB lib/ipv6calcoptions.c: replace improper use of the MAXINTARRAY macro configure[.in]: add -Wsizeof-array-argument to CFLAGS if supported 20141024/PB recognize RFC6666 addresses databases: update ipv6calc/showinfo.c: add EXTERNAL db information ipv6calcweb/ipv6calcweb.cgi[.in]: support EXTERNAL db information 20141011/PB switch in DBIP and External db info from hash to btree (improves db compatibility) 20141008/PB some fixes 20141007/PB adjust DBIP generation tool for new db format: DBIP-generate-db.p 20141005/PB lib/libipaddr.[ch]: new generic library introduced to simplify code 20141003/PB autogen-support.sh: add GeoIP 1.6.1 1.6.2, IP2Location 6.0.3 20140927/PB ipv6calcweb/ipv6calcweb.cgi[.in]: minor bugfix, use background colors for optional database subcolumn mode 20140926/PB ipv6calcweb/ipv6calcweb.conf: extend with ipv6calcweb/ipv6calcweb.cgi[.in]: implement optional database subcolumn mode 20140924/PB databases: update implement "External" database lookups (superseeding BuiltIn databases for IP->Registry lookups) 20140913/PB libipv6addr.c: suppress ASN / country code lookup for IPV6_NEW_ADDR_6BONE showinfo.c: add IPV6_COUNTRYCODE_SOURCE, IPV4_COUNTRYCODE_SOURCE databases: update 20140909/PB more abstract implementation of BerkeleyDB and BuiltIn db lookups 20140901/PB [databases/]lib/Makefile[.in]: support different options for so library on OSX 20140831/PB add DBIP update tools: DBIP-generate-db.pl, DBIP-update.sh implement also output of DBIP_REGION add support for DBIP to ipv6calcweb.cgi 20140830/PB implement IPv6 city code lookup for DBIP, add DBIP output to DBIP_COUNTRY_SHORT, DBIP_CITY, DBIP_DATABASE_INFO 20140829/PB implement IPv6 country code lookup for DBIP 20140828/PB further DBIP support proper detection of options with missing arguments implement IPv4 country code lookup for DBIP 20140827/PB start implementation of db-ip.com (DBIP) support 20140826/PB implement for output type 'hex' prefix/suffix/uppercase print improve online help 20140802/PB tag version 0.97.4 20140731/PB add new output item on showinfo -i: IPV6CALC_CAPABILITIES databases: update 20140729/PB add external-fallback headers for GeoIP (1.4.8) and IP2Location (6.0.2) and add following config options: --with-ip2location-headers-fallback, --with-geoip-headers-fallback (only usable with dynamic load option) 20140723/PB man/*: major review of man pages 20140722/PB harmonize online help of binaries 20140721/PB lib/libipv6addr.c: extend countrycode retrievement for included client IPv4 addresses ipv6calc/ipv6logconv/ipv6logstats/ipv6loganon: extend online help for -v 20140720/PB ipv6calc/ipv6calchelp_local.c databases/lib/libipv6calc_db_wrapper_IP2Location.h databases/lib/libipv6calc_db_wrapper_GeoIP.c databases/lib/libipv6calc_db_wrapper.h databases/lib/libipv6calc_db_wrapper.c reorg feature string handling rename feature string DB_IPV{4,6} to DB_IPV{4,6}_REG 20140719/PB configure[.in]: fix broken IP2Location dynamic library support autogen.sh: add ldd check for dynamic library support 20140718/PB lib/libeui64.c,lib/libipv4addr.c,lib/libipv6addr.c,lib/libmac.c,lib/librfc1924.c,lib/librfc2874.c: align parser error messages ipv6calc/test_ipv6calc.sh: check for proper exit code on invalid input tests 20140716/PB ipv6calc/showinfo: display CC/ASN only for global unicast addresses lib/librfc2874.c: bugfix in snprintf lib/libipv6addr.c: bugfix in libipv6addr_cc_index_by_addr 20140714/PB databases: update tag version 0.97.3 20140705/PB configure[.in]: add option --disable-compiler-warning-to-error 20140704/PB several Makefile[.in]: add support for @CFLAGS_EXTRA@ defined by configure configure[.in]: add check for compiler supporting -Werror=format-security autogen.sh: remove support of -W (now handled automatically by configure) 20140625/PB autogen-support.sh: add support for GeoIP 1.5.2/1.6.0 20140624/PB autogen-all-variants.sh: improve disabling GeoIP/IP2Location if system wide no libraries are available 20140623/PB autogen-support.sh/autogen-all-variants.sh: skip default 'make test' on GeoIP/IP2Location cross version checks 20140622/PB databases/lib/libipv6calc_db_wrapper_GeoIP.c: improve detection of maximum database types autogen-support.sh/autogen-all-variants.sh: add support for GeoIP/IP2Location cross version checks 20140621/PB autogen-support.sh/autogen-all-variants.sh: minor adjustments 20140620/PB autogen-support.sh: add download and extract feature for GeoIP/IP2Location 20140619/PB autogen-support.sh: new, centralize support for autogen.sh and autogen-all-variants.sh autogen-all-variants.sh/autogen.sh: improvments for regression tests 20140617/PB configure[.in]: improve IP2Location include/library definition support several Makefile[.in]: fixes regarding include/library definition support autogen-all-variants.sh: extend for GeoIP/IP2Location version based regression tests 20140616/PB configure[.in]: improve GeoIP include/library definition support 20140611/PB configure[.in]: apply suggested changes from AGB to fix improper use of AC_ARG_ENABLE 20140523/PB ipv6logstats/ipv6logstats.c: skip cc/asn retrievement in case of simple and column mode (major speed up) ipv6logstats/ipv6logstats.c: fix missing ALL in column mode (column 1), add option -N|--column-numbers ipv6logstats/example_gnuplot.cmd: fix to run with newer gnuplot versions, extend with registries and IID pictures tag version 0.97.2 20140520/PB databases/lib/libipv6calc_db_wrapper_GeoIP.c: fix 2x improper GeoIP_delete call which causes trouble inside GeoIP library in case of a huge amount of calls ipv6logstats,ipv6loganon,ipv6logconv: add new test for processing huge amount of addresses tag version 0.97.1 20140518/PB databases: update tag version 0.97.0 20140511/PB (many files): replace NI_MAXHOST used in various functions by size_t option 20140503/PB libipv4addr.c: improve registry retrievement for anonymized IPv4 addresses 20140426/PB Add missing support for machinereadable output for IPv6 addresses (format flag allowed, but was not supported) ipv6logstats: add support for AFRINIC, change major output version to 4 ipv6logconv: add support of anonymized addresses ipv6logstats: improve support of anonymized addresses ipv6logstats: add output version column in column format 20140425/PB Introduce new functions for countrycode,AS and registry lookup covering also anonymized addresses 20140423/PB Add dedicated support for 6bone address anonymization 20140422/PB Small bugfix in ipv6calc test scripts 20140331/PB RFC1886 printout (reverse nibbles): mask prefix only in case of no printsuffix,printstart,printend 20140225/PB databases/ipv4-assignment: change from aggregated ip/networt to first-last structure, saving some space & getting rid of use of 'aggregate' 20140223/PB apply patch from gentoo regading order of LIBS in Makefile[.in] 20140213/PB prepend /sbin to ldconfig call tag version 0.96.0 20140211/PB databases: update 20140209/PB add tool for checking database lookup code against raw database information databases: update and fix of IPv4 data prep step befor aggretation (found during db lookup tests) ipv6calc: add input type "asn" for testing ASN database lookups 20140205/PB change lookup code for IPv4 registry assignment to binary sort, fix bug in binary sort for AS lookup 20140204/PB builtin IPv4/IPv6 databases: replace registry string by define, change related lookup code (saves space) databases: update 20140203/PB minor improvements in Makefiles, configure checks now for openssl/md5.h replace old debug code with macros in lib 20140202/PB move IEEE database from libieee to databases/BuiltIn apply some compilation compatibility fixes submitted by Nikoli move IPv4/IPv6 registriy database from libipv4addr.c/libipv6addr.c to databases/BuiltIn improve error catching in Makefiles add options to force bundled md5 or getopt (otherwise it depends on autodetection) configure: --enable-bundled-md5 --enable-bundled-getopt 20140201/PB add support for building with shared libraries: configure: --enable-shared autogen.sh: -S 20140115/PB databases: update ipv6calcweb/ipv6calcweb.cgi.in: add new outputformat "textkeyvalue" 20131201/PB databases/lib/libipv6calc_db_wrapper.c: fix snprintf usage (missing format string) 20131117/PB databases: update tag version 0.95.0 major changes were applied, but not listed here in detail, for overview see file: CHANGES 20131015/PB databases: update and add support for changed ARIN format 20130920/PB review and enhance option handling 20130903/PB databases/lib: finish implementation of IP2Location wrapper incl. dynamic load support 20130828/PB databases/lib: start implementation of IP2Location wrapper (dynamic load still missing) 20130820/PB further review 20130815/PB further improvements and review 20130811/PB commit IPv6 prefix and IPv4 address anonymization 20130708/PB recognize RFC 6598 addresses, extend test cases 20130707/PB ipv6logstats: further enhance output by country code / AS Number / proto statistics 20130702/PB migrate displaying verbose features into lib 20130701/PB ipv6logstats: enhance output by country code / AS Number / proto statistics databases/lib: major extensions of wrapper 20130622/PB databases/lib: start implementation of dynamic load of GeoIP library by adding a wrapper layer 20130513/PB ipv6calcweb/ipv6calcweb.cgi.in: improve colored output for some fields tag version 0.94.1 20130512/PB several *.c: replace strncpy/strcpy by snprintf (implicit fix of some improper/missing \0 termination) several *.c: fixes according to splint 20130510/PB ipv6calc/test_ipv6calc.sh: fix 2 typos (issue reported by PV) 20130413/PB fix code or add pragmas to avoid warnings tag version 0.94.0 20130412/PB lib/libmac.c/lib/libipv6calc.c: support Cisco format xxxx.xxxx.xxxx lib/libipv6calc.c: support Check Point IPsec debug log format of IPv4 addresses if first octet is < 16: xxxxxx (7 hex chars) ipv6calc/test_scenarios.sh: add related test scenarios 20130410/PB databases: update lib/libipv6addr.[hc]: add support for reliable anonymization of IAB/OUI36 based EUI-48/64 based IPv6 addresses lib/libieee.[hc]: add support for mapping of IAB/OUI36 ipv6calc/showinfo.c, ipv6calc/test_scenarios.sh: changes related to anonymized of IAB/OUI36 20130409/PB databases/ieee-oui36/*, lib/libieee.h, lib/libieee.c: add support for OUI36 databases/tools/create_ieee_headerfile.pl: replace databases/ieee-iab/create_ieee_iab_headerfile.pl Makefile[.in]: add support for databases/ieee-oui36 lib/libipv6calc.c: add detection for EUI-64 lib/libeui64.h, lib/libeui64.c: add support for parsing EUI-64 ipv6calc/showinfo.[hc], ipv6calc/ipv6calc.c: add support for EUI-64 ipv6calc/test_showinfo.sh, ipv6calc/test_scenarios.sh: add support for EUI-64 tests 20130408/PB databases: update databases/ieee-iab/create_ieee_iab_headerfile.pl: fixed for current supplied txt format databases/ieee-oui/create_ieee_oui_headerfile.pl: fixed for current supplied txt format 20130407/PB lib/libipv6addr.[hc]: support Microsoft 6to4 IID (includes IPv4 address) anonymization ipv6calc/showinfo.c: minor bugfix + support of printing Microsoft 6to4 IID information 20130330/PB lib/libipv6calc.h, lib/ipv6calctypes.h: minor reorg lib/libipv6calc.c, lib/ipv6calcoptions.h, lib/ipv6calccommands.h: add support for anonymization sets lib/libipv6addr.[ch]: switch anonymization to use sets instead of dedicated values lib/ipv6calchelp.[ch]: add help for anonymization ipv6loganon/test_ipv6loganon.sh: add anonymization options test cases ipv6loganon/ipv6loganon.c, ipv6loganon/ipv6loganonoptions.h: add additional anonymization options ipv6loganon/ipv6loganonhelp.c: update help for anonymization lib/libmac.[ch]: add compatible function names (alignment) ipv6calc/test_scenarios.sh, ipv6calc/test_ipv6calc.sh: test additional anonymization cases 20130326/PB lib/libipv6addr.[ch]: store/retrieve global/local flag for anonymized EUI & ISATAP lib/libmac.[ch], ipv6calc/ipv6calc.c: implement MAC address anonymization ipv6calc/ipv6calc.c: improve anonymization depending on various formats lib/libipv6addr.[ch]: fix reliable anonymization ipv6loganon/test_ipv6loganon.sh: fix testcases ipv6calc/ipv6calc.c: don't normalize input in filter mode 20130324/PB lib/libipv6addr.[ch]: add support for ORCHID anonymization, fix OUI storage in anonymized IID ipv6calc/showinfo.c: restructure display of anonymized information ipv6loganon/test_ipv6loganon.sh: add some testcases lib/librfc1884.c: fix for anonmized IIDs 20130319/PB lib/libipv6addr.h: fix duplicate merge lib/libipv6addr.c: proper handling of prefix anonymization/masking lib/ipv6calchelp.[ch]: implement online help for actions ipv6loganon/ipv6loganonhelp.c: fix online help ipv6calc/ipv6calc.c: fix online help and debug option value parser 20130317/PB bin/ipv6logconv.c: dedicated token for privacy & Teredo IID ipv6calcweb/ipv6calcweb.cgi[.in]: show date/time of generated output lib/libipv6addr.[ch]: support reliable prefix anonymization 20130226/PB lib/libipv6addr.[ch]: switch ISATAP anonymization to new method, extend ISATAP recognition ipv6calc/showinfo.c: improve ISATAP information lib/librfc1884.c: print included IPv4 address in proper notation ipv6loganon/test_ipv6loganon.sh,ipv6calc/test_scenarios.sh: adjust test scenarios 20130225/PB lib/libipv6addr.[ch]: simplified checksum verification for anonymized IID, skip anonymization for already anonymized addresses ipv6calc/ipv6calc.c: change forgotten default for mask_iid to 0 20130224/PB lib/libipv6addr.[ch]: introduce new format for anonymized IID ipv6calc/showinfo.c: extend display for anonymized IIDs ipv6loganon/ipv6loganon.c, ipv6calc/ipv6calc.c: change default of anonymization presets: mask_iid is now disabled by default and replaced by new anoymized IID ipv6loganon/test_ipv6loganon.sh, ipv6calc/test_ipv6calc.sh, ipv6calc/test_scenarios.sh: adjusted for new anonymization ipv6calc/ipv6calc.c, ipv6loganon/ipv6loganon.c, lib/ipv6calcoptions.h, lib/ipv6calccommands.h: replace --no-mask-iid by --mask-iid option 20130224/PB ipv6calcweb/ipv6calcweb.cgi[.in]: improved display of proxy information 20130223/PB ipv6calcweb/ipv6calcweb.cgi[.in]: display now information of all passed proxies 20121221/PB ipv6calcweb/ipv6calcweb.cgi: display X-Via header, if given, display also address information of first proxy, if given lib/libipv6addr.c: fix type info for teredo address ipv6calc/showinfo.c: improve debug output 20121216/PB ipv6calc/ipv6calc.c: accept also debug value in hexadecimal notation ipv6calc/test_scenarios.sh: extend with testscenarios for detection of already anonymized addresses lib/libipv6addr.c lib/libipv6addr.h lib/librfc3041.h: use special value for anonymization also of static defined IID, introduce new type flag 'anonymized' ipv6calcweb/ipv6calcweb.cgi[.in]: display also X-Forward-For header, if given lib/librfc1884.c ipv6calc/test_ipv6calc.sh: fix a long outstanding bug not compressing only one block of '0' ipv6loganon/test_ipv6loganon.sh: fix examples according to special value for static defined IID 20121215/PB databases: update 20121105/PB databases: update databases/ipv4-assignment/create-registry-list.pl: fix long undetected bug regarding calculation of IP mask (not easy detectable on 32-bit systems) 20121014/PB ipv6calc/showinfo: add anonymized IPv4/IPv6 addresses on machinereadable output lib/libipv4addr: add ipv4_copy function ipv6calcweb.cgi: support anoymized IPv4/IPv6 addresses 20121012/PB databases: update README.BUILDING-GeoIP: new README.BUILDING-IP2LOCATION: minor update lib/libipv6addr.c: minor fix to avoid compiler warning man/ipv6loganon.8: update spec: - change requirements for ip2location to Mandrake Linux compatible names - change location of "ipv6calc" from bin to %{_bindir} tools/GeoIP-update.sh: new tools/IP2Location-update.sh: new 20120509/PB lib/libipv6addr.c lib/librfc3041.h: anoymize a privacy extension IID to a special value and recognize this also ipv6logstats: add output related to IID type 20120505/PB databases: update 20120424/PB lib/libieee.c: remove QEMU prefix handling databases/ieee-oui/create_ieee_oui_headerfile.pl: extend with information about MAC prefixes used by Virtual Machines 20120423/PB ipv6calcweb.cgi: allow spaces around input in form mode 20120422/PB lib/libieee.c: detect standard QEMU MAC prefix lib/libipv6addr.c: blacklist expanded EUI-48 from privacy extension ipv6calcweb.cgi: cell background for OUI is now yellow, for EUI64_TYPE=local-privacy green 20120419/PB lib/*: extend filter handling, implement address token, improve privacy detection databases: update 20120401/PB ipv6calc/showinfo: finalze autodetection for privacy IIDs 20120325/PB ipv6calc: improve autodetection (for IID), improve genprivacyiid 20120322/PB ipv6calc/ipv6calc: add suppport for --print-iid-var lib/*: some improvements 20120321/PB lib/*: extend filter handling, implement address token, improve privacy detection 20120320/PB lib/*: extend filter handling, implement negate 20120319/PB databases/*: cosmetic fix for suppressing unused-variable during compilation lib/*: review filter tokens databases: update 20120318/PB lib/*: extend for action 'filter' ipv6calc/ipv6calc.c: implement action (-A) 'filter' with expression '-E', currently only supporting IPv6 addresses lib/libipv4addr.*: implement gettype with proper values 20120306/PB lib/libipv6addr.*: adjust calc of IID privacy detection ipv6logstats/*: add option -w FILE to write IID privacy statistics, fix gnuplot example 20120304/PB lib/libipv6addr.[ch]: extend IID privacy detection ipv6logstats/*: extend for IID privacy detection 20120303/PB lib/libipv6addr.[ch]: add IID privacy detection, fix productive IPv6 address detection */Makefile.in: add -lm for linking math (req. for IID privacy detection) 20120205/PB lib/libipv6addr.c lib/libipv4addr.c: extend RFC info with section ipv6calcweb.cgi: add support for RFC URLs COPYING: update FSF address databases: update tag version 0.93.1 20120204/PB ipv6loganon/ipv6loganon.c: don't cache unmodified lines lib/libipv6addr.c: extend detection for reserved addresses ipv6calc/showinfo.c: use function from lib/libipv6addr.c for retrieving IPv6 registry string lib/libipv4addr.c: minor review 20120121/PB ipv6calcweb.cgi: some improvements databases: update lib/libipv4addr.c: extend detection for reserved addresses (RFC5735) ipv6calc/test_showinfo.sh,test_scenarios.sh: extend for testing reserved IPv4 addresses tag version 0.93.0 20120120/PB ipv6calcweb.cgi: fix taint problem for external environment 20120110/PB ipv6calc/test_ipv6calc.sh: split good testscenarios into dedicated file test_scenarios.sh ipv6calcweb/test_ipv6calcweb_form.sh: new for testing form mode ipv6calcweb/test_ipv6calcweb.sh: improve error handling by output check lib/ipv6calctypes.h: support machinereadable for FORMAT_ipv6literal lib/libipv6calc.c: minor bugfix ipv6calc/test_showinfo.sh: add FORMAT_ipv6literal tests ipv6calc/test_ipv6calc.sh: split some test scenarios ipv6calc/test_scenarios: new file ipv6calcweb.cgi: minor improvements 20120102/PB ipv6calcweb.cgi: additional check on unescaped input 20120101/PB ipv6calcweb.cgi: minor review ipv6calc.spec: create subpackage for ipv6calcweb VERSION[.in]: new for improve scripting of build process databases - update 20111231/PB ipv6calc/showinfo.c: fix show show_types output ipv6calcweb.cgi: improve form mode, implement some Anti-DoS code, some review 20111219/PB ipv6calcweb.cgi: add support for form mode and configuration via SetEnv 20111127/PB lib/*: support scope IDs on IPv6 addresses (also on literal format) 20111126/PB lib/* ipv6calc/ipv6calc.c: support input/output format "ipv6literal" lib/libmac.c, lib/libipv6calc.c: support MAC format xxxxxxxxxxxx (seen on some network devices) 20111105/PB lib/libmac.c, lib/libipv6calc.c: support MAC format xxxxxx-xxxxxx (seen on HP switches) 20111104/PB ipv6calc/ipv6calc.c: autodetect -A geneui64 in case of -O eui64 and autodetected -I mac (only in non-pipe mode) 20111103/PB ipv6loganon/ipv6loganon.c, ipv6logconv/ipv6logconv.c: - using sprintf for LRU cache in more secure way (credits to Luca Bruno) 20111102/PB ipv6calc/ipv6calc.c: force -O eui64 to request either -I mac or -A geneui64 20111029/PB update doc, add ldp.dsl and adjust generate script 20111026/PB update documentation and INSTALLING 20111009/PB configure.in - Exclude use of GeoIP_lib_version also for GeoIP 1.4.5 IPv6 support ipv6calc/ipv6calc.c - display GeoIP IPv6 compat mode, if enabled 20111008/PB configure.in, ipv6calc/showinfo.c - Extend for GeoIP 1.4.5 IPv6 support (which has reduced function set) Makefile.in (all) - introduce "make test-minimal" to skip GeoIP/IP2Location tests on RPM build systems ipv6calc.spec.in - replace 'make test' by 'make test-minimal' ipv6calc/showinfo - increase output version to 5, adding IPV6CALC_FEATURES in machine readable output ipv6calcweb/ipv6calcweb.cgi.in - fix broken ARIN whois URL - show information from IPV6CALC_FEATURES - claim about missing IP2Location or GeoIP database files, if feature is enabled tag version 0.92.0 20111008/PB databases - update ipv6calc - support option "-v -v" to show extended version information database generation programs - retrieve and store database status (last update) into related header file tag version 0.91.0 20111006/PB configure.in - checking GeoIP library for IPv6 support ipv6calc/ipv6calc.c, ipv6calc/showinfo.c, lib/ipv6calchelp.c, ipv6calc/test_showinfo.sh - skip IPv6 related GeoIP parts, if support is missing in GeoIP library 20110916/PB 6rd extension: change options to support stdin for IPv4 addresses minor code review extend online help for action types 20110915/PB Makefile: catch exit code on sub tests syntax fix "octett" -> "octet" ipv6calc, ipv6calccommands.h, ipv6calcoptions.h, ipv6calctypes.h, librfc5569.c, librfc5569.h, Makefile.in - add 6rd extension from Raphaël Assénat and add test case database - update 20110610/PB database - update tag version 0.90.1 20110601/PB add configure options for disabling compiled-in databases: --disable-db-ieee --disable-db-ipv4 --disable-db-ipv6 20110526/PB database -update minor fixes tag version 0.90.0 20110515/PB ipv6calc - disable accept of 'printstart' & 'printend' option for output type 'ipv6addr' (not suppported at all at the moment) - add option 'forceprefix ' - add option 'f|flush' for pipe mode - implement pipe mode (autodetected) - GeoIP option '--db-geoip-default|-G' enables now IPv4 and IPv6 default database, if file locations are compiled in - new options for specifying GeoIP file locations: '--db-geoip-ipv4' and '--db-geoip-ipv6' - new option '--db-ip2location-default|-L' for enabling IPv4 or IPv6 default database, if file locations are compiled in - extend test cases BUILD --with-geoip-default-file is replaced by --with-geoip-ipv4-default-file - new options for specifying IP2Location default file locations --with-ip2location-ipv4-default-file --with-ip2location-ipv6-default-file registry databases - update 20110512/PB ipv6loganon: - add support for option -f (flush) - some bugfixes ipv6calc, ipv6calcweb.cgi - implement support for GeoIP IPv6 database ipv6calcweb.cgi - skip not-useful entries for IP2LOCATION in case of unsupported by database update information for IP2Location 4.0.2 20110511/PB ipv6loganon: - add support for option -w (write) and -a (append) output to a given file - IPv6 address output is now in compressed format 20110505/PB lib/librfc1884.c - cosmetic improvement of debug information lib/ipv6calchelp.c - add space between token and ":" - fix --out -h not showing explanation update-registries.sh - add workaround for buggy encoding information in XML databases - update tag version 0.82.1 20110504/PB ipv6calc/ipv6calc.c - add some debug code - improve selection of format switch for revipv4 lib/libipv4addr.c lib/libmac.c - clear 'valid' flag also if structure is cleared 20110329/PB ipv6calc/test_ipv6calc.sh, ipv6calc/showinfo.c, lib/libipv6addr.[h,c] - add support for RFC 6052 (NAT64) databases: - update tag version 0.82.0 20110305/PB ipv6calc/test_ipv6calc.sh: - add test cases for RFC 5952 doc - add URL to openSUSE, minor cleanup 20110227/PB databases: - change from txt to xml for IANA data - update ipv6calc/test_ipv6calc.sh: -add good/bad testcases for explicit and autodetection input - improve catch of errors ipv6calc/showinfo.c: - fix buggy fprintf output devices ipv6calc/ipv6calc.c: - add support for output format FORMAT_mac - extend auto-output detection for input format FORMAT_mac, FORMAT_bitstring, FORMAT_base85 - add dedicated error message if auto-input detection doesn't work lib/librfc1886.c: - fix librfc1886_formatcheck for proper work with autodetection lib/librfc1884.c: - fix debug messages lib/libmac.[ch]: - add function macaddrstruct_to_string lib/libipv6calc.c: - improve autodetection lib/libipv6addr.c, lib/libipv4addr.c: - improve format check lib/ipv6calctypes.h: - add new format type for non-working autodetection 20100921/PB update databases lib/librfc1886.c: take care of prefix length before printing nibbles (bugfix, but breaking old behavior, if prefix length is used) tag version 0.80.0 20100520/PB configure.in: add value for copyright year, update version number some header files: replace hardcoded copyright year with value lib/librfc1884.c: minor bugfix From http://patch-tracker.debian.org/package/ipv6calc/0.73.0-3 ipv6calc/showinfo.c: fix typo regarding Teredo addresses (not affecting -m) lib/ipv6calchelp.c: fix segfault */Makefile.in: fixes 20100427/PB lib/librfc1884.c: bugfix regarding uncompressing an address ipv6calc/test_ipv6calc.c: add some testcases 20090808/PB ipv6calc/ipv6calc.c - add auto-output format detection for revnibble - do not print resultstring, if empty ipv6calc/test_ipv6calc.sh - add input validation tests lib/ipv6calchelp.[ch] - support machine readable output for input types lib/libifinet6.c lib/librfc2874.c - cosmetic fixes of error messages lib/libipv4addr.c lib/libipv6addr.c lib/librfc1886.c - improve input validation - cosmetic fixes of error messages 20090811/PB update databases ipv6calc/ipv6calc.c - add support for '-m' for '--out|action -?' lib/ipv6calchelp.[ch] - support machine readable output for output/action types tag version 0.73.0 20090808/PB ipv6calc/ipv6calc.c - add auto-output format detection for revnibble - do not print resultstring, if empty - add support for '-m' for '--in -?' ipv6calc/test_ipv6calc.sh - add input validation tests lib/ipv6calchelp.[ch] - support machine readable output for input types lib/libifinet6.c lib/librfc2874.c - cosmetic fixes of error messages lib/libipv4addr.c lib/libipv6addr.c lib/librfc1886.c - improve input validation - cosmetic fixes of error messages 20090620/PB databases/registries/update-registries.sh - fix IANA ipv6-unicast-address-assignments weblink problem 20090611/PB update databases add /usr/bin/ipv6calc to binary list of ipv6calcweb.cgi tag version 0.72.2 20090111/PB update databases tag version 0.72.1 20090106/PV various Makefile.in and Makefile - rename $(root) into $(DESTDIR) to respect GNU coding standards - fixed datarootdir warning 20081231/PB ipv6calc/ipv6calc.c - print token GeoIP, IP2Location, if supported update databases 20081231/PV configure.in - apply fix for GeoIP option various Makefile.in and Makefile - adjust/switch to Makefile.in and improvements (use of @CC@, remove CFLAGS, LDFLAGS, fix @ENABLE_BUNDLED_GETOPT@) 20081119/PB databases/registries/update-registries.sh - create registry subdir if not existing - fix IANA ipv4-address-space weblink problem databases/ieee-iab/create_ieee_iab_headerfile.pl - remove '"' from names to avoid problems in generated header file databases/ieee-oui/Makefile - adjust remote filename on webserver ipv6calc/ipv6calc.c - do not show warning messages for missing GeoIP/IP2Location support if option "-q" is used (good for ipv6calcweb.cgi) Makefile[.in] - move "make test" from "make install" to dedicated "make ..." - remove "make installonly" Several files - minor cleanup tag version 0.72.0 20070811/PB lib/libipv6addr.{c,h} - detect link-local-teredo addresses 20070705/PB ipv6loganon/test_ipv6loganon.sh - add ORCHID test scenario lib/libipv6addr.{c,h} - fix octal printout - add hex printout - support ORCHID in anonymize lib/libipv4addr.{c,h} - add octal & hex printout ipv6calc/showinfo.c - print warning message in IP2Location longitude/latitude if 0 - do not print GeoIP/IP2Location information on non-global IPv6 addresses - fix output on ISATAP addresses (stderr->stdout) ipv6calc/ipv6calc.c - support octal output for IPv4 and hex output for IPv4 and IPv6 20070704/PB lib/libipv6addr.{c,h} ipv6calc/showinfo.c - add support for ORCHID address type 20070605/PB ipv6calcweb/ipv6calcweb.cgi.in - fix built-in list for GeoCityLite ipv6calc/showinfo.c - do not show "GeoIP|IP2Location returned no record" in quiet mode 20070601/PB update databases update doc files minor fixes in test scripts tag version 0.71.0 20070426/PB lib/libipv6addr.{c,h} lib/ipv6calcoptions.h lib/ipv6calccommands.h ipv6loganon/ipv6loganon* ipv6calc/ipv6calc.c - add support for anonymizing IPv6 prefix flexible (mask-ipv6) - add new preset options for anonmiyzing (careful,paranoid) 20070402/PB ipv6calc/showinfo.c - skip displaying of IPV4_SOURCE if no data is given - fix month of IP2Location database - separate IP2Location information for IPv4 and IPv6 (increase output version to 4) ipv6calcweb/ipv6calcweb.cgi.in - fix database options according to changes before releasing 0.70.0 - if server address is skipped, do not retrieve information at all - use built-in list for detecting binary and database files on various locations 20070401/PB update databases tag version 0.70.0 20070303/PB autogen.sh - add support for more options, see -? for more ipv6calc/showinfo.[h,c] - revert to pre 20070215 release, IP2Location (2.1.3) was fixed now ipv6calc/ipv6calc.h - adjust copyright year databases/registries/update-registries.sh - remove unconditional exit code 0 databases/registries/update-registries.sh databases/ipv{4,6}-assignment/create-registry-list.pl - change from %Y%m%d to -latest databases/ipv6-assignment/create-registry-list.pl - reenable all registries databases/registries/Makefile - support "lacnic" on distclean databases/ipv4-assignment/Makefile - cleanup 20070215/PB ipv6calc/showinfo.[h,c] - move prototypes in case of use of IP2Location (2.1.2) because of a strange compilation warning ipv6calc/Makefile.in - reorder CFLAGS according to patch from NT 20070214/PB contrib/ipv6calc.spec[.in] ipv6calc/Makefile[.in] - adjustments according to remove of static GeoIP/IP2Location support 20070214/NT databases/GeoIP databases/IP2Location - remove support of static (built-in) support 20070207/PB ipv6calc/ipv6calc.c lib/ipv6calctypes.h - add support for action anonymize 20070205/PB lib/libipv{4,6}addr.{c,h} - migrate IPv4/IPv6 address anonymization code into ipv6loganon to libraries 20070202/NT ipv6loganon/ipv6loganonhelp.c - spelling fixes man/ipv6loganon.8 - contribution 20070201/PB database update ipv6loganon/* - minor improvements, add README 20070131/PB ipv6calc/showinfo.c - fix bug by exchange TEREDO SERVER<->CLIENT tokens - code improvements (triggered by splint) ipv6loganon/* - improve ipv6loganon lib/*.c - code improvements (triggered by splint) 20070130/PB ipv6loganon/* - initial creation 20070116/ESR man/ipv6calc.8 - code fixes 20061028/NT+PB GeoIP support - add new configure options --enable-geoip-system: use system GeoIP library --enable-geoip-default-file: specify default database file Getopts support - configure detects now the presence of system getopts library 20061021/PB IP2Location support - update to API 2.1.0 (which supports IPv6 now) GeoIP support - update to API 1.4.0 configure.in Makefile.in - add support for global version numbers of APIs ipv6calc/showinfo.c ipv6calc/ipv6calc.c - add support for 2 different database files for IP2Location - change options -p => --db-ip2location-ipv4 -g => --db-geoip - new option --db-ip2location-ipv6 update databases 20060828/PB ipv6calcweb/ipv6calcweb.cgi.in - remove non-ascii chars on GEOIP_DATABASE_INFO update databases tag version 0.61.0 20060807/PB ipv6calc/showinfo.c - make code for printing GeoIP and IP2Location universal for IPv4 and IPv6 - fix missing printout of footer in case of IPv6 address is given ipv6calcweb/ipv6calcweb.cgi.in - toggle background for lines with embedded IPv4 address 20060806/PB - add support for GeoIP (GeoIP-1.3.17) LICENSE - updates according to changes update databases 20060710/PB - change internal version number handling from dedicated file(s) to configure.in update databases tag version 0.60.1 20060707/NT ipv6calc/test_ipv6calc.sh - catch result proper configure.in - define AC_C_BIGENDIAN for proper support of big-endian arch - improve version definition, remove acconfig.h (no longer needed) config.h.in - regenerated during autoheader md5/Makefile md5/md5.c - fix code for proper support of big-endian arch autogen.sh - add call to autoheader 20060625/PB update databases tag version 0.60.0 Makefile[.in] - remove autom4te.cache also in subdirectories 20060612/PB databases/IP2Location/C-IP2Location-1.1.0/libIP2Location/IP2Location.c - fix bug in original code according to retrieve date from database config.h.in configure.in - add support for SUPPORT_IP2LOCATION in config.h lib/ipv6calchelp.c - add comment for option -p ipv6calc/ipv6calc.c - add internal flag for IP2Location support lib/ipv6calctypes.h ipv6calc/showinfo.c - print embedded IPv4 addresses explicitly in embedded format [] this solves the issue if more than one IPv4 address is included in IPv6 address lib/libipv6addr.c - support new Teredo prefix (RFC 4380) lib/libipv4addr.c - exclude some RFC1918/RFC3330 addresses from registry lookup, report reserved(reason) instead lib/libipv6addr.h - lower case "teredo" lib/ipv6calctypes.h - add new (internal used) format "printembedded" lib/Makefile - fix elements in $(OBJS), minor review ipv6calcweb/ipv6calcweb.cgi - add support for variables with embedded IPv4 address - keep sort order of ipv6calc -m output - fix whois URL of ARIN,APNIC,LACNIC - remove whois URL for 6bone addresses, no longer valid - add IP2Location information in footer (if used) - add required output version for check ipv6calc/showinfo.h - define output version ipv6calc/showinfo.c - support embedded IPv4 addresses in machine readable output ipv6calc/ipv6calc.c - missing IP2Location database is now only a soft error - add flag whether IP2Location database is given man/ipv6logconv.8 - fix small problem with hyphens (thanks to Niko Tyni) 20060610/PB ipv6calc/showinfo.c/print_ipv4addr - check for result != of IP2Location before using (prevents segfault) 20060608/PB ipv6calcweb/ipv6calcweb.cgi - add support for format= in QUERY_STRING 20060607/PB ipv6calcweb/ipv6calcweb.cgi - add support for IP2Location according to showinfo.c contrib/ipv6calc.spec[.in] - add support for rebuild option --with-ip2location LICENSE - updates according to changes Makefile.in configure.in ipv6calc/Makefile.in - make IP2Location support switchable (--enable-ip2location) ipv6calc/ipv6calc.c lib/ipv6calcoptions.h - fix wrong named option (-f instead of -p) lib/librfc1924.c - replace conversion code with clean reimplementation created by Niko Tyni because of unknown license issue of the old piece of code update databases 20060317/PB databases/ipv6-assignment/create-registry-list.pl databases/ipv4-assignment/create-registry-list.pl databases/ipv6-assignment/dbipv6addr_assignment.h databases/ipv4-assignment/dbipv4addr_assignment.h lib/libipv6addr.h lib/libipv4addr.h - store also prefix length in lookup table update databases 20060316/PB lib/libipv4addr.c - fix wrong use of () in ipv4addr_setword 20060306/PB Makefile.in ipv6calc/Makefile.in ipv6calc/ipv6calc.c ipv6calc/showinfo.c - add support for IP2Location lib/ipv6calcoptions.h - add new option: -p 20060213/PB ipv6calc/Makefile.in - replace "make" by "${MAKE}" (forgotten in 20051119) 20060212/PB update databases databases/ieee-oui/create_ieee_oui_headerfile.pl - replace " with ' in entries Makefile.in - remove also autom4te.cache on distclean contrib/ipv6calc.spec[.in] - remove CVS version line to avoid problems tag version 0.51 20060126/PB lib/ipv6calchelp.c lib/ipv6calctypes.h ipv6calc/ipv6calc.c ipv6calc/ipv6calc.h - fix help for {upper|lower}case option inconsistency - add new shortcut options: --in|-I --out|-O --action|-A --printcompressed|-C --printuncompressed|-U --printfulluncompressed|-F - update copyright range update databases 20051119/PB various make files - replace "make" by "${MAKE}" - add definitions for prefix and exec_prefix update databases 20051026/PB restructure registry database directory - process now registry files 2 days ago to prevent problems short after local day switches add support for new registry AFRINIC extend IPv6 registry data from 32 to 64 bits, adapt related function in lib/libipv6addr 20051021/PB lib/libipv6addr - fix bug for unique local unicast detection ipv6calc/showinfo - minor review ipv6calcweb.cgi - updates according to changes of showinfo.c 20051020/PB lib/libipv6addr ipv6calc/showinfo ipv6logconv ipv6logstats - add support for Teredo addresses 20050916/PB various make files - add missing entries to fullfil NetBSD's make 20050915/PB various c files - fix snprintf size parameter (credits to Radek Vokál for pointing this out) lib/libipv6addr.c#ipv6addr_copy - fix bug which causes stack overflow (credits to Radek Vokál for finding the bug) several Makefiles - add compiler switch -O2, reason for segfault was found - remove also static on clean ipv6logconv: - add support for unique local unicast update databases tag version 0.50 20050914/PB databases/ipv4-assignment - fix update check script Update databases spec file fix Tag version 0.49 20050725/PB several Makefiles - remove compiler switch -O2, this causes segfaults on Fedora Core 4 using gcc-4.0.0-8 lib/libipv6addr ipv6calc/showinfo - add support for Unique Local IPv6 Unicast Addresses 20050719/PB ipv6logstats, ipv6logconf - remove not really needed uid check in test step md5/md5.c - fix for proper support of big endian machines ipv6calc/test_ipv6calc.sh - fix proper error reporting Further prototyping fixes lib/libipv6addr - replace hardcoded IPv6 assignement by dynamic one Update databases 20050714/PB Update databases lib/libipv6addr - IPv6 TLA update 20050711/PB lib/librfc2874.c lib/libipv6calc.c - Fix prototyping to avoid warnings md5/Makefile getopt/Makefile - Add CC definition 20050628/PB ipv6calc: - replace hardcoded $(root)/bin with $(root)@bindir@ (suggested by Andrew Walrond) 20050214/PB ipv6logconv: - fix online help 20050212/PB Update databases ipv6logconv: - implement a lookup cache for speed-up (around 20%) lib/libipv4addr databases/ipv4-assignment/dbipv4addr_assignment.h - add a hint table for speed-up IPv4 registry lookups (around 10 times!) 20041121/PB Update databases Tag version 0.48 20041101/PB General: - add missing directories to Makefile - fix typo in man page 20041030/PB General: - replace md5 function from openssl with a copy of coreutils (licence issue) - add support for IEEE/iab.txt database Update databases - minor fixes in scripting 20040830/PB ipv6calc: - add support for recognizing 6to4 addresses generated by Microsoft OS ipv6logconv: - add support for recognizing 6to4 addresses generated by Microsoft OS - add support for ISATAP addresses Update databases - fix URL of RIPE ARIN, APNIC, LACNIC and add support for compressed files 20031122/PB ipv6logstats: - add option "-q|--quiet" for be more quiet - minor fixes ipv6calc.spec.in - review, also install examples now Some cleanups tag version 0.47 20031121/PB IPv4 address database update Some redesign on Makefile usage, move some Makefile to Makefile.in - minor redesign in Makefile.in - take now use of "bindir" and "mandir" in configure run Update ipv6calc.spec.in ipv6calcweb.cgi: - renamed to ipv6calcweb.cgi - version numbering will now be done using autoconf ipv6logconv: - add option "-q|--quiet" for be more quiet 20031026/PB add contributed man pages 20030907/PB untag version 0.46 ipv6calcweb.cgi: - replace deprecated hash reference code with proper one - add forgotten lacnic support - allow ":" in SERVER_NAME to allow IPv6 addresses here also tag version 0.46 20030906/PB update databases tag version 0.46 20030815/PB enable option "printfulluncompressed" on output format octal add example for output format octal 20030722/PB enable "printprefix", "printsuffix" for normal IPv6 addresses (autoswitch to uncompressed format) prefix length of 6to4 addresses changed from 16 to 48 for proper support of format "printprefix" 20030717/PB add IPv6 LACNIC range 20030628/PB minor adjustments to "ipv6logstats", add a gri example 20030623/PB lib/librfc1886.c/librfc1886_addr_to_nibblestring: don't print trailing "." on middle part end 20030615/PB add support for new registry LACNIC (in IPv4) add new program "ipv6logstats" to create historic address distribution statistics of webservers for use e.g. with gnuplot (add an example cmd script also) remove autodetection code for EUI-64 (can misinterpret a proper IPv6 address) fix some bugs in autodection 20030404/PB add new output format "octal" as requested from Lionel Elie Mamane to create proper input for tinydns 20030202/PB: add new input type "ipv4hex" (hexadecimal IPv4 address) add new input type "ipv4revhex" (reverse hexadecimal IPv4 address) add support of spaces as delimiter of MAC/EUI-48 addresses (above support was added to convert information got by 'martian source' logging) 20021112/PB: fix not proper handling of option "-q|--quiet" in some cases enhance help options (-h|--help now also valid) on --out|action|in ipv6logconf: "make test" can be now also executed by root (su to nobody) tag version 0.45 20021104/PB: minor cosmetics in IEEE/OUI database 20021104/PB: update IPv6 address allocation for 2001::/16 update IPv4 databases remove user/group on "make install" to enable non-root RPM build update text on ipv6calcweb.cgi minor reviews tag version 0.44 20020830/PB: add support of dashes on MAC/EUI-48 addresses showinfo prints now type of EUI-48 addresses 20020817/PB: fix configure.in, learnt now how to proper use AC_CHECK_LIB and AC_CHECK_HEADERS credits to Arkadiusz Miskiewicz! 20020730/PB: fix not proper autodetection code for MAC addresses tag version 0.43 20020717/PB: update URL to OUI database, cosmetic OUI fixes, update databases tag version 0.42 20020511/PB: bugfix not showing OUI on showinfo "-i" update CIDR and OUI data 20020421/PB: review inttypes definitions, create new header file minor fixes to suppress compiler warnings tag version 0.40rc5 tag version 0.40 20020420/PB: fix defines for FreeBSD and OpenBSD minor fixes 20020410/PB: tag version 0.40rc4 20020410/PB: new format feature: printmirrored for reverse dot separated format minor fixes 20020409/PB: add new feature: printing IPv4 address in reverse PTR/DNS format minor help extension 20020408/PB: fix completly broken online help add some autodetection printprefix|suffix now works also for fulluncompressed some cleanups tag version 0.40rc3 20020407/PB: minor cosmetic fixes, import forgotten ipv6logconv changes tag version 0.40rc2 20020405/PB: fix some database dependencies fix NetBSD has inttypes.h instead of stdint.h change back to not splint'ed librfc1924.c because of a self made not easy to find bug :-( some minor fixes tag version 0.40rc1 20020403/PB: more splint'ing, some type review 20020401/PB: more splint'ing, some type review 20020331/PB: more splint'ing extend ipv6logconv 20020325/PB: ipv6calcweg.cgi: extension for new showinfo extension 20020324/PB: fix alignment bugs in libipv4addr.c for word/dword access libip4addr.c: add support for registry information finish IPv4 registry detection code 20020323/PB: new feature: prefix+mac -> IPv6 address 20020320/PB: showinfo: add new info: registry, fix a bug in output of non machinereadable some snprintf fixes 20020318/PB: move files to dedicated subdirectories add program information on ipv6calc -m enhance ipv6calcweb.cgi begin to replace "sprintf" with "snprintf" (for security reasons) -> release 0.40pre7 20020317/PB: ipv6calc: fix not working showtypes new: ipv6calcweb.cgi: Perl wrapper program for web interface replace all "strtok" to "strtok_r" because of problems due calls in subfunctions (thanks to manpage...) remove "-ansi" from compiling options ipv6logconv: add output format "any", fills address, referer and user with proper information some code lint 20020316/PB: new: ipv6logconv is able to convert addresses of webserver logs into special domain names new: analog example for creating stats from converted logfiles some fixes and enhancements 20020311/PB: new: add vendor database for global EUI-64/48 identifiers new: libieee to display an OUI, if available showinfo: machinereadable now printout one info per line (switchable later) minor fixes tag release 0.40pre5 20020306/PB: enhance help, adapt format to 80 chars per line bugfix in showinfo.c relating to display EUI-64 id began some code audit using splint 20020303/PB: migrate eui64 to privacy into new style more cleanup extend test script tag release 0.40pre2 implement auto detection for input showinfo now understands IPv4 address extraction of autoconfigured link local addresses check format options against matrix understand now input of revnibble (limited support) and bitstring labels tag release 0.40pre3 20020302/PB: major work of redesign is done, test script runs well, unused files removed tag release 0.40pre1 20020301/PB: start redesign 20020227/PB: libipv6addr.c: fixed a bug in ipv6addr_setoctett.c regarding num limit (oops..) ipv6calc.c: move structure definitions to... libmac.h: add related structure definition ipv6calc.c libipv6addr.h: add related structure definition from ipv6calc.c libipv4addr.*: new for handling IPv4 addresses ipv4_to_6to4addr.*: new for handling conversion IPv4 -> IPv6to4 librfc3056.*: library for conversion IPv4 -> IPv6to4 libipv6calc.c: fix array index bug of compat[] (oops..) tag release 0.39 20020226/PB: add original getopt tarball into samplecode, fill related READMEs tag release 0.38 20020224/PB: move nibble string function to librfc1886 minor fixes restore original samplecode files and remove CVS id to prevent CVS changes add original getopt code to samplecode tag release 0.37 20020224/PB: minor Makefile fixes fix getopt Makefile minor cosmetic fix in test script cosmetic cleanups some code cleanup and minor redesign, some optimizing fixes stupid help call bugs format options can be used now in more functions add support of "printstart" and "printend" in "ip6int", "bitstring" extend "showinfo", add "machine_readable" for easier postprocessing 20020223/PB: complete limited support of bistring labels change examples to 6bone dummy address (3ffe:ffff:...) add a trailling dot on ip6.[int|arpa] output migrate getopt patch for OpenBSD submitted by Vladimir Kotal minor Makefile fixes tag release 0.37pre1 20020219/PB: fix a minor bug tag release 0.36 20020218/PB: fix bug relating to ipv6calc.h (changes now in ipv6calc.h.in) start preparation for implementing bitstring conversions tag release 0.35 20020218/PB: add new options: --addr_to_ip6arpa|-a does the same like --addr_to_ip6int|-r, but ends with "ip6.arpa" instead of "ip6.int" addr_to_ip6int now understands "--uppercase|--lowercase" tag release 0.35 20020127/PB: tag release 0.34 20020124/PB: use now "-lcrypto" instead of full defined lib name 20020121/PB: update "COPYING" to current GPLv2, add "LICENSE" with some comments to make Debian people happy add both in spec file 20020120/PB: showinfo now understands "solicited-node link-local multicast", "ISATAP", SLA on 6bone addresses input now understands also "ISATAP" addresses 20011227/PB: Make tarball ready to use 20011218/PB: Change version numbering to autoconf/configure Extend "showinfo" a little bit 20011009/PB: release 0.30 20011009/PB: Fix missing scope initialization "base85_to_ipv6addr" bug found by Greg Daley changed: libipv6addr.c/ipv6addr_clear librfc1924.c/base85_to_ipv6addrstruct 20011007/PB: Push source into local CVS system 0.28: Peter Bieringer Refixing compiling on BSD Add a forgotten include in "eui64_to_privacy.c" 0.27: Peter Bieringer Migrate files used from Linux kernel for address type resolution to libipv6addr.* add some extended tests (still not catch all) "--showinfo" now rudimentary works 0.26: Peter Bieringer Create wrapper functions to be independend of byte order storage in structure "in6_addr" "--eui64_to_privacy" now calculate expected results Begin of splitting "ipv6calc.h" into several smaller header files Some code cleanup 0.25: Peter Bieringer Restructure central address structure to use "in6_addr" struct Some code cleanup 0.24: Peter Bieringer Add option "--eui64_to_privacy" to calculate pseudo random suffices (experimental, result is not verified) Add option "--showinfo" (experimental, not finnished) Add option "-d|--debug value" Partially new debug code 0.23: Peter Bieringer Fix permissions of doc files in spec file 0.22: Peter Bieringer ANSI compiling cleanup Cleanup special types to ANSI types 0.21: Peter Bieringer Fix typo (strings.h -> string.h) at ifinet6_to_compressed.c 0.20: Peter Bieringer Activate "--printsuffix" + "--printprefix" for "--addr_to_uncompressed" Change format of "--mac_to_eui64" to described one (now without prefix) 0.19: Peter Bieringer Extend "TODO" list Print also info on "-?" Fixes in spec file, see changelog at the end of that file Add "COPYING" and "INSTALLING" Add "installonly" on "Makefile" to support changes in spec file 0.18: Peter Bieringer Add "make test" after "make" in spec file to stop build process, if compiling do not result in working code Add samplecode directory 0.17: Peter Bieringer Fix "addr_to_ip6int" (sprintf) Minor reviews 0.16: Peter Bieringer Review "Makefile" to make it usable on BSD systems Minor reviews to enable a clean make on BSD systems 0.15: Peter Bieringer Create TODO Some review New option: mac_to_eui64 0.14: Peter Bieringer Review CREDITS 0.13: Peter Bieringer Add base85 support Add compatv4/mapped support Split away some RFC depended libaries Rename internal used functions Rename options (old ones still work) Change IPv6 address compression method from getaddrinfo to native calculation (hopefully bugless) Some review 0.12: Peter Bieringer Add some format checks 0.11: Peter Bieringer Add code for successful compiling under BSD, credits to Hubert Feyrer Cosmetic cleanups 0.10: Peter Bieringer redesigned to use a central libary for most of the functions moved option handling to getopts add option --maskprefix, --masksuffix for [full]uncompressed format 0.09: Peter Bieringer fix in 0.07 (addr2uncompaddr) won't work, refix now 0.08: Peter Bieringer fix Makefile and spec-file for RedHat 7.0.91 0.07: Peter Bieringer fix addr2uncompaddr, now ::/prefixlength is well converted 0.06: Peter Bieringer fix glibc-2.2.2 compilation problems, credits to Pekka Savola in addr2if_inet6.c, ipv6calc.c 0.05: Peter Bieringer if_inet62addr added, printhelp_function moved into related source file 0.04: Peter Bieringer addr2if_inet6 will now display scope value in hex (use some sources of kernel files to get scope rather than writing my own) cosmetic cleanups 0.03: Peter Bieringer Splitt away each function in a seperate file Working: addr2compaddr, addr2uncompaddr, addr2fulluncompaddr, addr2if_inet6 addr2ip6_int 0.02: Peter Bieringer Never published release, "addr2compaddr" is working 0.01: Peter Bieringer Initial start ipv6calc-1.0.0/INSTALLING000066400000000000000000000105361312366535500146240ustar00rootroot00000000000000ipv6calc INSTALLING Please read the file `README' before you start with the installation of the ipv6calc. USING RPM --------- This tar-ball provides a spec file for building an source and binary RPM using rpmbuild -ta ipv6calc-$version.tar.gz Available build options: --with ip2location --with geoip After successful build you got two packages: one source RPM ipv6calc-$version-$release.src.rpm and one binary RPM ipv6calc-$version-$release.$arch.rpm For installing use rpm -ihv ipv6calc-$version-$release.$arch.rpm For updating use rpm -Fhv ipv6calc-$version-$release.$arch.rpm For deinstalling use rpm -e ipv6calc RPM is currently tested on CentOS 5/6/7 / Fedora 20 HACKERS WAY ----------- cd /usr/src ; tar xvzf ipv6calc*.tar.gz ./configure --exec_prefix=/usr --mandir=/usr/share/man && make && make test && make -n install exec_prefix=/usr make install exec_prefix=/usr If you want to suppress configure's exec_prefix, specify bindir directly, e.g. ./configure --prefix=/usr/local --bindir /usr/local/bin --mandir /usr/local/share/man For Solaris 8 you need following packages installed: autoconf automake gcc make binutils cvs (optional) perl m4 For Gentoo you need following packages installed: dev-perl/URI dev-perl/Digest-SHA1 CONFIGURE --------- There is a configure script available. Following options are used: --bindir=/usr/bin (@bindir@) --mandir=/usr/share/man (@mandir@) --enable-ip2location (see below for more information) --enable-geoip (see below for more information) Execute: ./configure --bindir=/usr/bin --mandir=/usr/share/man UPDATE OF DATABASES ------------------- ipv6calc contains several databases, currently * OUI (24/36) type (IEEE) * IAB type (IEEE) * IPv4 address space assignment * IPv6 address space assignment * AS * CC to update this database before compilation you need: - install perl, wget - run "make update" See also: ./databases/registries/README ./databases/ipv4-assignment/README ./databases/ipv6-assignment/README ./databases/ieee-iab/README ./databases/ieee-oui/README ./databases/ieee-oui36/README IP2LOCATION LIBRARY ------------------- You can use the IP2Location library with ipv6calc. The library is available at , and the currently supported version is at least 2.1.3 (versions below are NOT supported). The support is enabled with the --enable-ip2location configure option. If you have installed the IP2Location library in a non-standard place, you may find the --with-ip2location-headers=DIR and --with-ip2location-lib=DIR configure options useful. If you have problems finding the library at runtime, try linking it statically the --with-ip2location-static configure option. If you have problems building the IP2Location library, see the README.BUILDING-IP2LOCATION file in the ipv6calc distribution. GEOIP LIBRARY ------------- You can also use the GeoIP library with ipv6calc. The library is available at , and the currently supported version is 1.4.1 (although others may work too). The support is enabled with the --enable-geoip configure option. If you have installed the GeoIP library in a non-standard place, you may find the --with-geoip-headers=DIR and --with-geoip-lib=DIR configure options useful. If you have problems finding the library at runtime, try linking it statically the --with-geoip-static configure option. You can set the path to a default GeoIP database file by using the --with-geoip-default-file configure option. This file is used when ipv6calc is invoked with the '-G' (or '--db-geoip-default') option. See also README.BUILDING-GeoIP PREPARATIONS ------------ "make update" updates the databases for static built-in "make distclean" cleans the source "make updateclean" also cleans the database header files COMPILE ------- To compile simply use "make". There should be no warnings or errors occur. TESTING ------- It's very recommended to test the created binaries using "make test" or at least "make test-minimal" (this skips external database related tests). If using a build system, which has not GeoIP or IP2Location databases installed, but support was was enabled, use at least "make test-minimal" INSTALLATION ------------ If you want to install the binary use "make install". Peter Bieringer $Id: a69a1c7b1fc6dc9d62112d167e5ae9a88e5eb462 $ ipv6calc-1.0.0/LICENSE000066400000000000000000000020031312366535500142300ustar00rootroot000000000000000. The program "ipv6calc" is produced and copyright 2001-2015 by Peter Bieringer , except * some codelines regarding address type resolving, which were directly copied from Linux kernel source (also GPL license) related files are: - libipv6addr.c - libipv6addr.h * code for uncompressing IPv6 addresses, which was copied from "ircd" related file is - librfc1884.c * code for getopt (needed by OpenBSD) related files are: - getopt/getopt.c - getopt/getopt.h - getopt/getopt1.c * external databases fallback code (header files only) IP2Location (7.0.1): LGPL version 3 GeoIP (1.4.8): LGPL version 2.1 -> see directory "samplecode" in the source file for original versions * source data of databases IAB/OUI data is taken from IEEE IPv4/IPv6 assignment data is taken from registries RIPE NCC, APNIC, ARIN, LACNIC, AfriNIC 1. The program "ipv6calc" is distributed under the GNU GPL version 2 (see COPYING file for more) 2015-05-07, Peter Bieringer ipv6calc-1.0.0/Makefile.in000066400000000000000000000134671312366535500153100ustar00rootroot00000000000000# Project : ipv6calc # File : Makefile[.in] # Version : $Id: 297c7ad69dd690875bb2b1645f7aa47726fb6508 $ # Copyright : 2001-2015 by Peter Bieringer # # Information: # Main Makefile for ipv6calc project # # Compiler and Linker Options export DEFAULT_CFLAGS = -D_GNU_SOURCE -O2 -Wall -g @CFLAGS_EXTRA@ ifeq (@ENABLE_BUNDLED_GETOPT@, 1) GETOPT_MAKE = getopt-make GETOPT_DIR = getopt endif ifeq (@ENABLE_BUNDLED_MD5@, 1) MD5_MAKE = md5-make MD5_DIR = md5 endif ifeq (@ENABLE_MOD_IPV6CALC@, 1) MOD_IPV6CALC_MAKE = mod_ipv6calc-make MOD_IPV6CALC_DIR = mod_ipv6calc endif CC = @CC@ all: $(MD5_MAKE) $(GETOPT_MAKE) ipv6calc ipv6logconv ipv6logstats ipv6loganon $(MOD_IPV6CALC_MAKE) .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) ipv6logconv: $(GETOPT_MAKE) lib-make ipv6logconv-make ipv6loganon: $(GETOPT_MAKE) lib-make ipv6loganon-make ipv6logstats-make ipv6logstats: $(GETOPT_MAKE) lib-make ipv6logstats-make ipv6calc: $(GETOPT_MAKE) lib-make ipv6calc-make ipv6calcweb-make updateclean: ${MAKE} distclean for dir in databases/ieee-oui databases/ieee-iab databases/ipv4-assignment databases/ipv6-assignment; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ rm -rf autom4te.cache; \ cd $$ocwd; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 distclean: ${MAKE} clean rm -f config.cache config.status config.log rm -rf autom4te.cache for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc mod_ipv6calc man lib md5 getopt databases/lib databases/ieee-oui36 databases/lib databases/ieee-oui databases/ieee-iab databases/ipv4-assignment databases/ipv6-assignment databases/registries databases/as-assignment databases/cc-assignment tools; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ rm -rf autom4te.cache; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 autoclean: ${MAKE} distclean rm -f Makefile rm -f contrib/ipv6calc.spec rm -f config.h for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc mod_ipv6calc man lib databases/lib md5 getopt tools; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 clean: for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc mod_ipv6calc man lib databases/lib md5 getopt tools; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 install: for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc $(MOD_IPV6CALC_DIR) man lib databases/lib tools; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} install; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 getopt-make: cd getopt && ${MAKE} md5-make: cd md5 && ${MAKE} lib-make: $(MD5_MAKE) $(GETOPT_MAKE) db-ieee-oui-make db-ieee-iab-make db-ipv4-assignment-make db-ipv6-assignment-make db-wrapper-make db-lib-make cd lib && ${MAKE} GETOPT_INCLUDE=@GETOPT_INCLUDE@ ipv6logconv-make: lib-make cd ipv6logconv && ${MAKE} ipv6loganon-make: lib-make cd ipv6loganon && ${MAKE} ipv6logstats-make: lib-make cd ipv6logstats && ${MAKE} ipv6calc-make: lib-make cd ipv6calc && ${MAKE} ipv6calcweb-make: ipv6calc-make cd ipv6calcweb && ${MAKE} mod_ipv6calc-make: lib-make cd mod_ipv6calc && ${MAKE} db-wrapper-make: cd databases/lib && ${MAKE} db-ieee-oui-make: cd databases/ieee-oui && ${MAKE} db-ieee-oui36-make: cd databases/ieee-oui36 && ${MAKE} db-ieee-iab-make: cd databases/ieee-iab && ${MAKE} db-ipv4-assignment-make: cd databases/ipv4-assignment && ${MAKE} db-ipv6-assignment-make: cd databases/ipv6-assignment && ${MAKE} db-cc-assignment-make: cd databases/cc-assignment && ${MAKE} db-as-assignment-make: cd databases/as-assignment && ${MAKE} db-lib-make: db-ieee-oui-make db-ieee-iab-make db-ipv4-assignment-make db-ipv6-assignment-make db-wrapper-make db-lib-make db-cc-assignment-make db-as-assignment-make cd databases/lib && ${MAKE} update: for dir in databases/ieee-oui databases/ieee-oui36 databases/ieee-iab databases/registries; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; \ cd $$ocwd ; \ done || exit 1 static: ipv6logconv-make ipv6loganon-make ipv6logstats-make ipv6calc-make for dir in ipv6logconv ipv6logstats ipv6loganon ipv6calc; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 test: for dir in ipv6calc ipv6logconv ipv6logstats ipv6loganon ipv6calcweb $(MOD_IPV6CALC_DIR); do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 echo "ALL TESTS SUCCESSFUL" test-minimal: for dir in ipv6calc ipv6logconv ipv6logstats ipv6loganon ipv6calcweb; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done test-ldlibpath: for dir in ipv6calc ipv6logconv ipv6logstats ipv6loganon ipv6calcweb; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done codecheck: # catch use of strncpy LC_ALL=C find . -type f -name '*.c' | xargs -r grep strncpy || exit 0 # catch use of strcpy LC_ALL=C find . -type f -name '*.c' | xargs -r grep strcpy || exit 0 for dir in ipv6calc ipv6logconv ipv6logstats ipv6loganon; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; r=$$?; \ cd $$ocwd ; if [ $$r -ne 0 ]; then echo "Result: $$r"; exit $$r; fi; \ done || exit 1 ipv6calc-1.0.0/README000066400000000000000000000064121312366535500141130ustar00rootroot00000000000000ipv6calc will do some format changes and calculations for you (P) & (C) 2001-2017 by Peter Bieringer published under GNU GPLv2 For suggestions and bug report please contact author More help is available using 'ipv6calc -?' Intention: * This utility can be used by the IPv6 enabled initscripts for better duplicate address detection on setup of IPv6 addresses * Also migrate "ip6_int" of Keith Owens into this utility Known bugs: * ipv6calc is sure not the securest C program around the world Contents: * "ipv6calc": the main utility * "ipv6calcweb": CGI wrapper for ipv6calc's address information output * "ipv6logconv": log converter (IPv4/IPv6) * "ipv6loganon": log anonymizer (IPv4/IPv6) * "ipv6logstats": log statistic generator (IPv4/IPv6) * "mod_ipv6calc": Apache module Included internal databases: * IEEE IAB, OUI, OUI-36 databases (for decoding vendor part of MAC/EUI-48/EUI-64) * IPv4 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv4 anonymization) * IPv6 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv6 anonymization) * ASN assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for IPv4/IPv6 anonymization) Supported external databases: * GeoIP * IP2Location * DB-IP.com Where to get: Homepage: http://www.deepspace6.net/projects/ipv6calc.html Latest version of sources: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/ GitHub access: https://github.com/pbiering/ipv6calc Available formats: tar.gz spec-file is included, so you can build an RPM from source tarball using rpm -ta ipv6calc-version.tar.gz Ready to use packages for several operating systems: Linux: Fedora: Core 6: developing platform, so use given hint above to create a RPM since 7: package is included Red Hat Enterprise Linux / CentOS: EL3: build from source package should work but not tested, OS is EOSL EL4: build from source package tested, working, OS is EOSL EL5: package is included, OS is EOSL EL6: package is available via EPEL EL7: package is available via EPEL Mandrake (EOS): similar to Red Hat, rebuild should work, too Debian: maintained package at http://packages.debian.org/ipv6calc Ubuntu: maintained package at http://packages.ubuntu.com/ipv6calc or http://packages.ubuntu.com/cgi-bin/search_packages.pl?searchon=names&version=all&exact=1&keywords=ipv6calc BSD: NetBSD: ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/ipv6calc/README.html FreeBSD: http://www.freshports.org/net-mgmt/ipv6calc/ (http://www.freebsd.org/cgi/query-pr.cgi?pr=34441) OpenBSD: http://www.openbsd.org/cgi-bin/cvsweb/ports/net/ipv6calc/ Mailing lists: ipv6calc-announce Reason: sending announcements of new versions Traffic: very low Postings: only moderators are allowed to post, others are rejected automatically Subscription: http://lists.deepspace6.net/listinfo/ipv6calc-announce ipv6calc Reason: discussions Traffic: medium Postings: only subscribers are allowed to post Subscription: http://lists.deepspace6.net/listinfo/ipv6calc $Id: 1620dd5385c7e6cbad5045423e20f06ddeea7198 $ ipv6calc-1.0.0/README.BUILDING-DBIP000066400000000000000000000015301312366535500160170ustar00rootroot00000000000000BUILDING db-ip.com support -------------------------- If you want to use the db-ip.com databases with ipv6calc, you will have only to enable the support using configure: --enable-dbip Background: db-ip.com only publish gzip compressed CSV files with location data. ipv6calc package contains the tool DBIP-generate-db.pl to generate Berkeley DB files from this CSV data. Enabling db-ip.com support will enable code for using this generated DB files. For regular (looks like monthls) updates of the free available databases a download tool is also provided: DBIP-update.sh Commercial databases need a subscription and must be downloaded manually like $ cd /var/local/share/DBIP $ wget http://download.db-ip.com/key/ -O dbip-full-$(date +'%Y-%m').csv.gz $ /usr/share/ipv6calc/tools/DBIP-generate-db.pl -A -I dbip-full-$(date +'%Y-%m').csv.gz ipv6calc-1.0.0/README.BUILDING-GeoIP000066400000000000000000000020501312366535500162420ustar00rootroot00000000000000BUILDING GeoIP -------------------- If you want to use the GeoIP library with ipv6calc, you will have to build and install it yourself separately. Instructions for current version (1.4.8) install following RPMs (usually supported by distribution) GeoIP GeoIP-devel Create as user "root" database directories: Install databases # mkdir -p /var/local/share/GeoIP Update databases (GeoLite databases do not require a license) # pushd /var/local/share/GeoIP/ || exit 1 # wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && gunzip -f GeoIP.dat.gz # wget http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz && gunzip -f GeoIPv6.dat.gz Enable GeoIP support by using following configure options: --enable-geoip In case, dynamic load of library should be enabled (conditional GeoIP support), add --with-geoip-dynamic Having GeoIP databases not stored in /usr/share/GeoIP (or a softlink created), add e.g. --with-geoip-db=/var/local/share/GeoIP For more specifc options see ./configure --help ipv6calc-1.0.0/README.BUILDING-IP2LOCATION000066400000000000000000000072341312366535500170330ustar00rootroot00000000000000GENERAL ------- IP2Location changed the API layer several times 2.x (no longer in scope) 4.x -> 6.x 6.x -> 7.x 7.x -> 8.x To avoid issues caused by undetectable incompatibilities (no library version function provided so far), program will not start in case of dynamic linking an incompatible library. Supported so far: compiled with 4.0.2, supported library: 4.0.2 - 6.0.3 compiled with 6.0.x, supported library: 6.0.1 - 6.0.3 compiled with 7.0.0, supported library: 7.0.0 In dynamic load configuration, this will detected and features will be deactivated Description of the various fields: http://www.ip2location.com/databases/db24-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile-elevation-usagetype BUILDING IP2LOCATION -------------------- If you want to use the IP2Location library with ipv6calc, you will have to build and install it yourself separately. Versions below 2.1.3 are NOT suported. Instructions for version 4.0.2 building as RPM Check for installed "libtool" package (otherwise, following error message appears: "configure.ac:40: error: possibly undefined macro: AC_PROG_LIBTOOL") Rebuild available SRPMS (this requires an RPM build environment): -Download SRPMS from http://rpm.pbone.net/index.php3 e.g. ftp://ftp.icm.edu.pl/vol/rzm2/linux-mandriva/official/2011/SRPMS/contrib/release/ip2location-4.0.2-1.src.rpm - extend .rpmmacros: # for Mandrake SRPMS on non Mandrake systems %mkrel() %1 %mklibname(ds) %{1}%{?2:%{2}}%{?3:_%{3}}%{-s:-static}%{-d:-devel} %mdkversion 201200 %configure2_5x %configure %make make %makeinstall_std %makeinstall - rebuild by $ rpmbuild --rebuild ip2location-4.0.2-1.src.rpm at least on Fedora 17 + RHEL/CentOS 6: $ QA_RPATHS=$[ 0x0002 ] rpmbuild --rebuild /tmp/ip2location-4.0.2-1.src.rpm Instructions for version 6.0.1 building as RPM "on-top" of SRPMS for 4.0.2 - download RPM from above, install source rpm rpm -ihv PATH/TO/ip2location-4.0.2-1.src.rpm - download newest version: https://www.ip2location.com/downloads/ip2location-c-6.0.1.tar.gz - store file in rpmbuild/SOURCES - apply changes to spec file - change version and source in spec file Version: 6.0.1 Source0: https://www.ip2location.com/downloads/ip2location-c-%{version}.tar.gz - remove Patch0 lines - remove IP2LOCATION_PRODUCTS_CATALOG.PDF from 2 lines - build binary package rpm -bb rpmbuild/SPECS/ip2location.spec From source code: See also instructions on https://www.ip2location.com/developers/c Note that sources are now available on GitHub Extract, configure & compile $ unzip -l master.zip $ cd IP2Location-C-Library-master $ autoreconf -i && ./configure && make Install as user "root" # make install This will install following files: /usr/local/include/IP2Location.h /usr/local/include/imath.h /usr/local/lib/libIP2Location.a /usr/local/lib/libIP2Location.la /usr/local/lib/libIP2Location.so Extend dynamic linking # echo "/usr/local/lib" >>/etc/ld.so.conf.d/usr-local-lib.conf # ldconfig Install databases # mkdir -p /var/local/share/IP2Location # cp data/IP* /var/local/share/IP2Location/ # chmod 644 /var/local/share/IP2Location/* Update databases (requires subscription) http://www.ip2location.com/IPV6-COUNTRY.aspx Enable IP2Location support by using following configure options: --enable-ip2location In case, dynamic load of library should be enabled (conditional IP2Location support), add --with-ip2location-dynamic Having IP2Location databases not stored in /usr/share/IP2Location (or a softlink created), add e.g. --with-ip2location-db=/var/local/share/IP2Location For more specifc options see ./configure --help ipv6calc-1.0.0/TODO000066400000000000000000000023721312366535500137240ustar00rootroot00000000000000# Project: ipv6calc # File : TODO # Version: $Id: 72df646624a2f79b47337e087afe859ebdc36c6f $ TODO list ========= Next ---------- * add option to support LMDB instead of Berkeley DB because of license change in version 6 Short term ---------- Middle term ----------- Format: * octal: should also be understandable by input (currently, only output is supported) IEEE/OUI library: * perhaps more filtering of unnecessary information Code quality: * review & improvements Help: * add more examples in inline help ipv6calcweb.cgi: * add alarm wrapper around call of ipv6calc Documentation: * add more information to USAGE docs Features requested from others: -call no kernel-specific or userland-specific functions, just C. ipv6calc C library would contain routines to represent the following forms (and convert between them): -x:x:x:x:x:x:x:x -:: -x:x:x:x:x:x:d.d.d.d -ipv6-address/prefix-length -scoped_address%scope_id -base 85 (compact notation) -URL's -binary labels -comparing addresses, v4/v4, v4/v6 -not use malloc or strxxx functions. External dependencies --------------------- Use of "splint" once variadic macros are supported http://splint.org/faq.html#quest18b ipv6calc-1.0.0/USAGE000066400000000000000000000026121312366535500140200ustar00rootroot00000000000000$Id: 5d35ac59733b0e774e5da52acb811c60bb1561c2 $ File: ipv6calc/ipv6calc see docs/ipv6calc.html for more Example for IP2Location information: $ ./ipv6calc/ipv6calc --db-ip2location-ipv4 /path/to/IP-COUNTRY-SAMPLE.BIN -q -m -i 66.1.2.3 IPV4=66.1.2.3 IPV4_REGISTRY=ARIN IP2LOCATION_COUNTRY_SHORT=US IP2LOCATION_COUNTRY_LONG=UNITED STATES IP2LOCATION_REGION=This parameter is unavailable for selected data file. Please upgrade the data file. IP2LOCATION_CITY=This parameter is unavailable for selected data file. Please upgrade the data file. IP2LOCATION_ISP=This parameter is unavailable for selected data file. Please upgrade the data file. IP2LOCATION_LATITUDE=0.000000 IP2LOCATION_LONGITUDE=0.000000 IP2LOCATION_DOMAIN=This parameter is unavailable for selected data file. Please upgrade the data file. IP2LOCATION_ZIPCODE=This parameter is unavailable for selected data file. Please upgrade the data file. IPV6CALC_NAME=ipv6calc IPV6CALC_VERSION=0.52cvs IPV6CALC_COPYRIGHT="(P) & (C) 2001-2006 by Peter Bieringer " pipe mode: $ cat /proc/net/if_inet6 | awk '{ print $1 " " $3 }' | ./ipv6calc --ifinet6_to_compressed File: ipv6calcweb/ipv6calcweb.cgi see ipv6calcweb/USAGE for more File: ipv6logconv/ipv6logconv see examples/analog/run_analog.sh for more File: ipv6loganon/ipv6loganon see ipv6loganon/README for more File: ipv6logstats/ipv6logstats see ipv6logstats/example* for more ipv6calc-1.0.0/VERSION000066400000000000000000000000061312366535500142740ustar00rootroot000000000000001.0.0 ipv6calc-1.0.0/VERSION.in000066400000000000000000000000221312366535500146770ustar00rootroot00000000000000@PACKAGE_VERSION@ ipv6calc-1.0.0/autogen-all-variants.sh000077500000000000000000000231641312366535500176320ustar00rootroot00000000000000#!/bin/bash # # Project : ipv6calc # File : autogen-all-variants.sh # Version : $Id: 42b42b22d033db47297343b0a465d5c0377e5599 $ # Copyright : 2011-2015 by Peter Bieringer # # Information: run autogen.sh with all supported variants # # can run also through various version of GeoIP (-g) and IP2Location (-i) libraries # see autogen-support.sh for details status_file="autogen-all-variants.status" ## Generate configure variants autogen_variants() { if [ "$skip_main_test" != "1" ]; then cat <&2 exit 1 ;; esac done shift $[ $OPTIND - 1 ] source ./autogen-support.sh "source" if [ -n "$options_add" ]; then echo "INFO : additional options: $options_add" fi if [ -f "$status_file" -a "$dry_run" != "1" ]; then echo "INFO : status file found: $status_file" if [ "$force" = "1" ]; then echo "NOTICE: remove status file (force)" rm $status_file else if grep -q ":END:" $status_file; then if [ "$rerun" = "1" ]; then echo "NOTICE: all runs successful, option -r given, status file removed (re-run)" rm $status_file else echo "NOTICE: all runs successful, nothing more to do (use -r for force a re-run)" exit 0 fi else if [ "$rerun" = "1" ]; then echo "NOTICE: option -r for forcing a re-run is useless, last run was not finished (use -f)" exit 0 fi fi fi fi if [ "$dry_run" != "1" ]; then if [ ! -f "$status_file" ]; then echo "INFO : status file missing, create: $status_file" date "+%s:START:" >$status_file fi fi IONICE="ionice -c 3" if ! $IONICE true; then echo "NOTICE: disable use of ionice, not supported" IONICE="" fi # variants for liboption in "normal" "shared"; do if [ "$skip_shared" = "1" -a "$liboption" = "shared" ]; then continue fi autogen_variants | while IFS="#" read token buildoptions testlist; do if [ -n "$options_add" ]; then if [ "$no_static_build" = "1" ]; then options="--no-static-build $options_add $buildoptions" else options="$options_add $buildoptions" fi else if [ "$no_static_build" = "1" ]; then options="--no-static-build $buildoptions" else options="$buildoptions" fi fi case $liboption in shared) options="$options -S" ;; esac # extend options in fallback case if [ -n "$ip2location_options_extra" ]; then if echo "$token" | egrep -wq "IP2LOCATION"; then options="$options $ip2location_options_extra" fi fi if [ -n "$geoip_options_extra" ]; then if echo "$token" | egrep -wq "GEOIP"; then options="$options $geoip_options_extra" fi fi # check for already executed option combination if [ -f "$status_file" ]; then if [ -z "$testlist" ]; then if egrep -q ":FINISHED:variants:$options:" $status_file; then echo "NOTICE: skip variant run (already finished) with: $options" continue fi else echo "NOTICE: testlist not empty, check dedicated build (testlist: $testlist) with: $options" fi fi if echo "$token" | egrep -wq "$skip_token"; then echo "NOTICE: skip variant because of token: $token" if [ "$dry_run" = "1" ]; then date "+%s:FINISHED:variants:$options:SKIPPED" >>$status_file fi continue fi options_test="" if [ -n "$testlist" ]; then options_test="--no-test" fi if [ "$dry_run" = "1" ]; then echo "INFO : would call(dry-run): ./autogen.sh $options_test $options" if [ -z "$testlist" ]; then continue fi else # run autogen echo "INFO : call: ./autogen.sh $options_test $options" nice -n 20 $IONICE ./autogen.sh $options_test $options if [ $? -ne 0 ]; then echo "ERROR : autogen.sh reports an error with options: $options_test $options" exit 1 fi fi if [ -n "$testlist" ]; then for entry in $testlist; do if egrep -q ":FINISHED:variants:$options:TESTLIST-ENTRY=$entry" $status_file; then echo "NOTICE: skip variant test (already finished) with: $options and $entry" continue fi if [ "$dry_run" = "1" ]; then echo "INFO : would call(dry-run): ./autogen.sh $options (testlist entry: $entry)" continue fi name=${entry/:*} version=${entry/*:} lib=$(options_from_name_version $name $version "only-lib") libdir=$(options_from_name_version $name $version "only-libdir") if [ -z "$lib" ]; then echo "ERROR : something wrong in call of: options_from_name_version $name $version 'only-lib'" exit 1 fi if [ -z "$libdir" ]; then echo "ERROR : something wrong in call of: options_from_name_version $name $version 'only-libdir'" exit 1 fi if [ ! -e "$lib" ]; then echo "ERROR : library missing: $lib (got from: options_from_name_version $name $version 'only-lib')" exit 1 fi if [ ! -d "$libdir" ]; then echo "ERROR : library directory missing: $libdir (got from: options_from_name_version $name $version 'only-libdir')" exit 1 fi if [ "$dynamic_load" = "1" ]; then case $name in I*) feature_string="IP2Location" ;; G*) feature_string="GeoIP" ;; esac # check for feature dynamic load echo "INFO : call: LD_LIBRARY_PATH=$libdir ./ipv6calc/ipv6calc -v" if ! LD_LIBRARY_PATH="$libdir" ./ipv6calc/ipv6calc -v 2>&1 | grep version | grep -qw $feature_string; then echo "ERROR : call has not included required feature string '$feature_string': LD_LIBRARY_PATH=$libdir ./ipv6calc/ipv6calc -v" exit 1 fi echo "INFO : call: LD_LIBRARY_PATH=$libdir make test-ldlibpath" LD_LIBRARY_PATH="$libdir" make test-ldlibpath result=$? else echo "INFO : call: LD_PRELOAD=$lib make test-ldlibpath" LD_LIBRARY_PATH="$libdir" make test-ldlibpath result=$? fi if [ $result -ne 0 ]; then echo "ERROR : autogen.sh reports an error with options: $options during testlist entry: $entry" if [ "$dynamic_load" = "1" ]; then echo "NOTICE: executed command: LD_LIBRARY_PATH=$libdir make test-ldlibpath" else echo "NOTICE: executed command: LD_PRELOAD="$lib" make test-ldlibpath" fi exit 1 fi date "+%s:FINISHED:variants:$options:TESTLIST-ENTRY=$entry" >>$status_file done fi # add entry in log date "+%s:FINISHED:variants:$options:OK" >>$status_file done || exit 1 done if [ "$dry_run" != "1" ]; then echo "INFO : congratulations, all variants built successful!" date "+%s:END:" >>$status_file cat $status_file make autoclean >/dev/null if [ $? -ne 0 ]; then echo "ERROR : 'make autoclean' failed" exit 1 fi fi ipv6calc-1.0.0/autogen-support.sh000077500000000000000000000463211312366535500167510ustar00rootroot00000000000000#!/bin/bash # # Project : ipv6calc # File : autogen-support.sh # Version : $Id: 73a28b7fed84152b56fe6576f4a2be103638202d $ # Copyright : 2014-2017 by Peter Bieringer # # Information: provide support functions to autogen.sh/autogen-all-variants.sh # # $BASE_DEVEL_GEOIP/ (default if unset: "..") # GeoIP-1.4.4 # GeoIP-1.4.5 # GeoIP-1.4.6 # GeoIP-1.4.7 # GeoIP-1.4.8 # GeoIP-1.5.1 # GeoIP-1.5.2 # GeoIP-1.6.0 # GeoIP-1.6.1 # GeoIP-1.6.2 # GeoIP-1.6.3 # GeoIP-1.6.4 # GeoIP-1.6.5 # GeoIP-1.6.6 # 20161218 # GeoIP-1.6.7 # 20161218 # GeoIP-1.6.8 # 20161218 # GeoIP-1.6.9 # 20161218 # GeoIP-1.6.10 # 20170617 # GeoIP-1.6.11 # 20170617 # # $BASE_DEVEL_IP2LCATION/ (default if unset: "..") # C-IP2Location-4.0.2 # dropped with version 0.99 # ip2location-c-6.0.1 # IP2Location-c-6.0.2 # ip2location-c-6.0.3 # 20141003 ## ip2location-c-7.0.0 # 20141003 DOWNLOAD BROKEN # ip2location-c-7.0.1 # 20150416 # ip2location-c-8.0.1 # 20161218 # ip2location-c-8.0.2 # 20161218 # ip2location-c-8.0.3 # 20161218 # ip2location-c-8.0.4 # 20170617 #### Definitions ## List of GeoIP versions (append newest one rightmost!) geoip_versions="1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.5.1 1.5.2 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.6.10 1.6.11" geoip_url_maxmind="http://geolite.maxmind.com/download/geoip/api/c/" geoip_url_github="https://codeload.github.com/maxmind/geoip-api-c/tar.gz/" # reduce version on known issues if which autoconf >/dev/null 2>&1; then autoconf_version=$(autoconf -V |grep autoconf | awk '{ print $NF }' | awk -F. '{ print $1 * 1000 + $2 }') if [ -n "$autoconf_version" -a $autoconf_version -lt 2065 ]; then # autoconf >= 2.65 is required for GeoIP >= 1.5.2 geoip_versions_orig="$geoip_versions" geoip_versions="" for version in $geoip_versions_orig; do [ -n "$geoip_versions" ] && geoip_versions="$geoip_versions " prefix="" version_num=$(echo $version | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') if [ $version_num -ge 10502 ]; then prefix="!" fi geoip_versions="$geoip_versions$prefix$version" done fi else echo "ERROR : missing executable in path: : autoconf" >&2 exit 1 fi geoip_versions_download="$geoip_versions" geoip_cross_version_test_blacklist() { local version_have=$(echo $1 | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') local version_test=$(echo $2 | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') if [ $version_have -ge 10407 -a $version_test -lt 10407 ]; then # missing GeoIP_cleanup return 1 fi return 0 } ## List of IP2Location versions (append newest one rightmost!) ip2location_versions="4.0.2 6.0.1 6.0.2 6.0.3 7.0.1 8.0.1 8.0.2 8.0.3 8.0.4" ip2location_versions_download="6.0.1 6.0.2 6.0.3 7.0.1 8.0.1 8.0.2 8.0.3 8.0.4" ip2location_url_base="https://www.ip2location.com/downloads/" ip2location_url_github="https://codeload.github.com/chrislim2888/IP2Location-C-Library/tar.gz/" ip2location_cross_version_test_blacklist() { local version_have=$(echo $1 | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') local version_test=$(echo $2 | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') if [ $version_have -ge 60000 -a $version_test -lt 60000 ]; then # incompatible API return 1 fi if [ $version_have -ge 60003 -a $version_test -lt 60003 ]; then # incompatible (library name got suffix .1) return 1 fi if [ $version_have -ge 70000 -a $version_test -lt 70000 ]; then # incompatible return 1 fi if [ $version_have -lt 70000 -a $version_test -ge 70000 ]; then # incompatible return 1 fi return 0 } #### NO CHANGES BELOW ### Automatic Definitions ### base directory for GeoIP/IP2Location BASE_SOURCES=${BASE_SOURCES:-~/Downloads} BASE_DEVEL_GEOIP=${BASE_DEVEL_GEOIP:-~/tmp} BASE_DEVEL_IP2LOCATION=${BASE_DEVEL_IP2LOCATION:-~/tmp} ### Functions Definitions ## generate GeoIP/IP2Location source package name from version # in download mode provide full URL nameversion_from_name_version() { local name="$1" local version="$2" local mode="$3" # optional (download|extract|outfile) local nameversion="" local version_numeric=$(echo "$version" | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') case $name in GeoIP|G) if [ "$mode" = "download" ]; then if [ $version_numeric -ge 10502 ]; then # since 1.5.2 on github nameversion="${geoip_url_github}v$version" else nameversion="${geoip_url_maxmind}GeoIP-$version.tar.gz" fi elif [ "$mode" = "outfile" ]; then if [ $version_numeric -ge 10502 ]; then # since 1.5.2 on github nameversion="geoip-api-c-$version.tar.gz" else nameversion="GeoIP-$version.tar.gz" fi else if [ $version_numeric -ge 10502 ]; then nameversion="geoip-api-c-$version" else nameversion="GeoIP-$version" fi fi ;; IP2Location|I) case $version in 4.*) nameversion="C-IP2Location-$version" ;; *) # default if [ "$mode" = "download" ]; then if [ $version_numeric -ge 80000 ]; then # since 8.0.0 on github nameversion="${ip2location_url_github}$version" else nameversion="${ip2location_url_base}ip2location-c-$version.tar.gz" fi elif [ "$mode" = "outfile" ]; then nameversion="ip2location-c-$version.tar.gz" elif [ "$mode" = "extract" ]; then case $version in 6.0.1|6.0.2|6.0.3|7.*|8.*) nameversion="ip2location-c-$version" ;; *) # default nameversion="IP2Location-c-$version" ;; esac else case $version in 8.*) nameversion="IP2Location-C-Library-$version" ;; 6.0.1|6.0.3|7.*) nameversion="ip2location-c-$version" ;; *) # default nameversion="IP2Location-c-$version" ;; esac fi esac ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac echo "$nameversion" } ## retrieve GeoIP/IP2Location options from version options_from_name_version() { local name="$1" local version="$2" local output="$3" local nameversion=$(nameversion_from_name_version $name $version) case $name in GeoIP|G) local dir="$BASE_DEVEL_GEOIP/$nameversion" libdir="$dir/libGeoIP/.libs" lib="$libdir/libGeoIP.so" result="--with-geoip-headers=$dir/libGeoIP --with-geoip-lib=$libdir" ;; IP2Location|I) local dir="$BASE_DEVEL_IP2LOCATION/$nameversion" libdir="$dir/libIP2Location/.libs" lib="$libdir/libIP2Location.so" result="--with-ip2location-headers=$dir/libIP2Location --with-ip2location-lib=$libdir" ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac case $output in 'only-lib') echo "$lib" ;; 'only-libdir') echo "$libdir" ;; *) echo "$result" ;; esac } ## fallback for GeoIP/IP2Location fallback_options_from_name() { local name="$1" local file_header="" local versions="" case $name in GeoIP|G) file_header="/usr/include/GeoIP.h" versions="$geoip_versions" dir_base="$BASE_DEVEL_GEOIP" ;; IP2Location|I) file_header="/usr/include/IP2Location.h" versions="$ip2location_versions" dir_base="$BASE_DEVEL_IP2LOCATION" ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac if [ -e "$file_header" ]; then echo "NOTICE: file is existing, no fallback required for $name: $file_header" >&2 return 0 fi echo "NOTICE: file is missing $file_header, check for local availability for $name: $file_header" >&2 for version in $(echo "$versions" | awk '{ for (i=NF;i>0;i--) print $i }'); do if [ ${version:0:1} = "!" ]; then echo "NOTICE: skip blacklisted version: $version" >&2 continue fi echo "DEBUG : check for version for $name: $version" >&2 dir="$dir_base/$(nameversion_from_name_version $name $version)" if [ -d "$dir" ]; then echo "INFO : found at least directory for name $name: $dir" >&2 result="$(options_from_name_version $name $version)" break else echo "NOTICE: did not find directory for name $name: $dir (try next)" >&2 fi done if [ -z "$result" ]; then echo "ERROR : can't find any local source for $name in: $dir_base" >&2 return 1 fi echo "$result" } ## build GeoIP/IP2Location libraries build_library() { local name="$1" local version_selected="$2" echo "INFO : build: name=$name version=$version_selected" >&2 local versions="" local base_devel="" case $name in GeoIP|G) versions="$geoip_versions" base_devel="$BASE_DEVEL_GEOIP" ;; IP2Location|I) versions="$ip2location_versions" base_devel="$BASE_DEVEL_IP2LOCATION" ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac result_all=0 autoreconf_version=$(autoreconf -V |grep autoreconf | awk '{ print $NF }' | awk -F. '{ print $1 * 1000 + $2 }') for version in $versions; do if [ ${version:0:1} = "!" ]; then echo "NOTICE: skip blacklisted version: $version" >&2 continue fi if [ -n "$version_selected" -a "$version" != "$version_selected" ]; then echo "NOTICE: skip not selected version: $version" >&2 continue fi local version_numeric=$(echo "$version" | awk -F. '{ print $3 + $2 * 100 + $1 * 10000}') local nameversion=$(nameversion_from_name_version $name $version) if [ ! -d "$base_devel/$nameversion" ]; then echo "ERROR : devel directory missing: $base_devel/$nameversion (forgot to extract?)" >&2 return 1 fi pushd $base_devel/$nameversion >/dev/null if [ $? -ne 0 ]; then echo "ERROR : can't change to directory: $base_devel/$nameversion (skip)" >&2 continue else echo "INFO : changed to directory: $base_devel/$nameversion" fi if [ "$dry_run" = "1" ]; then echo "INFO : would build library (dry-run): $name-$version ($nameversion)" continue else echo "INFO : build library: $name-$version ($nameversion)" fi case $name in GeoIP) skip_autoreconf=0 if [ -n "$autoconf_version" -a $autoconf_version -eq 2059 ]; then if [ $version_numeric -eq 10407 -o $version_numeric -eq 10501 ]; then # on CentOS 5 with autoreconf 2.59 somehow broken for 1.4.7 and 1.5.1 skip_autoreconf=1 fi fi if [ $skip_autoreconf -eq 1 ]; then ./configure && make clean && make result=$? else autoreconf -fi && ./configure && make clean && make result=$? fi ;; IP2Location) case $version in 6.0.3) echo "NOTICE: $name-$version requires patching of Makefile.am" perl -pi -e 's/data/ /g' Makefile.am ;; esac autoreconf -fi && ./configure && make clean && make result=$? ;; esac popd >/dev/null if [ $result -ne 0 ]; then echo "ERROR : trouble during build of $name-$version ($nameversion)" >&2 result_all=1 break else echo "INFO : successful build of $name-$version ($nameversion)" >&2 build_library_status="$build_library_status $nameversion" fi done return $result_all } ## clean GeoIP/IP2Location libraries clean_versions() { local name="$1" local version_selected="$2" echo "INFO : clean: name=$name version=$version_selected" >&2 local versions="" local base_devel="" case $name in GeoIP|G) versions="$geoip_versions" base_devel="$BASE_DEVEL_GEOIP" ;; IP2Location|I) versions="$ip2location_versions" base_devel="$BASE_DEVEL_IP2LOCATION" ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac result_all=0 for version in $versions; do if [ ${version:0:1} = "!" ]; then echo "NOTICE: skip blacklisted version: $version" >&2 continue fi if [ -n "$version_selected" -a "$version" != "$version_selected" ]; then echo "NOTICE: skip not selected version: $version" >&2 continue fi local nameversion=$(nameversion_from_name_version $name $version) if [ ! -d "$base_devel/$nameversion" ]; then echo "NOTICE: devel directory missing: $base_devel/$nameversion (nothing to clean)" >&2 continue fi if [ "$dry_run" = "1" ]; then echo "INFO : would remove: $base_devel/$nameversion" >&2 continue else echo "INFO : remove: $base_devel/$nameversion" >&2 fi rm -rf $base_devel/$nameversion result=$? if [ $result -ne 0 ]; then echo "ERROR : trouble during remove of of $name-$version ($nameversion)" >&2 result_all=1 break else echo "INFO : successful remove of $name-$version ($nameversion)" >&2 clean_library_status="$clean_library_status $nameversion" fi done return $result_all } ## extract GeoIP/IP2Location source packages extract_versions() { local name="$1" local version_selected="$2" echo "INFO : extract: name=$name version=$version_selected" >&2 case $name in GeoIP|G) versions="$geoip_versions" base_devel="$BASE_DEVEL_GEOIP" ;; IP2Location|I) versions="$ip2location_versions" base_devel="$BASE_DEVEL_IP2LOCATION" ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac result_all=0 for version in $versions; do if [ ${version:0:1} = "!" ]; then echo "NOTICE: skip blacklisted version: $version" >&2 continue fi if [ -n "$version_selected" -a "$version" != "$version_selected" ]; then echo "NOTICE: skip not selected version: $version" >&2 continue fi local nameversion=$(nameversion_from_name_version $name $version extract) local nameversion_internal=$(nameversion_from_name_version $name $version) local file="$BASE_SOURCES/$nameversion.tar.gz" if [ ! -f "$file" ]; then echo "NOTICE: file not existing, can't extract: $file" >&2 continue fi if [ "$dry_run" = "1" ]; then echo "INFO : would extract source package (dry-run): $name-$version ($nameversion) from $file" >&2 continue else echo "INFO : extract source package: $name-$version ($nameversion): $file" >&2 fi if [ ! -d "$base_devel" ]; then echo "ERROR : base devel directory missing: $base_devel" >&2 return 1 fi # check contents of tgz base_dir=$(tar tzf "$file" | head -1 | sed 's/^\.\///g' | awk -F / '{ print $1 }') if [ -z "$base_dir" ]; then echo "ERROR : can't extract base_dir from: $file" >&2 return 1 fi echo "INFO : file contains base_dir: $base_dir" >&2 if [ "$nameversion_internal" != "$base_dir" ]; then echo "ERROR : nameversion is not matching base_dir: $nameversion_internal <=> $base_dir (download broken or workaround required)" return 1 fi tar xzf "$file" -C $base_devel result=$? if [ $result -ne 0 ]; then echo "ERROR : trouble during extract of $name-$version ($nameversion) from $file" >&2 result_all=1 break else echo "INFO : successful extract of $name-$version ($nameversion) from $file to $base_devel" >&2 extract_library_status="$extract_library_status $nameversion" fi done return $result_all } ## retrieve GeoIP/IP2Location source packages download_versions() { local name="$1" local version_selected="$2" echo "INFO : download: name=$name version=$version_selected" >&2 case $name in GeoIP|G) versions="$geoip_versions_download" base_devel="$BASE_DEVEL_GEOIP" ;; IP2Location|I) versions="$ip2location_versions_download" base_devel="$BASE_DEVEL_IP2LOCATION" ;; *) echo "ERROR : unsupported: $name" >&2 return 1 ;; esac result_all=0 for version in $versions; do if [ ${version:0:1} = "!" ]; then echo "NOTICE: skip blacklisted version: $version" >&2 continue fi if [ -n "$version_selected" -a "$version" != "$version_selected" ]; then echo "NOTICE: skip not selected version: $version" >&2 continue fi local url=$(nameversion_from_name_version $name $version download) local outfile="$(nameversion_from_name_version $name $version outfile)" local outfile_option="" local outfile_option_info="" if ! echo "$url" | grep -q "$outfile"; then # URL does not contains outfile outfile_option="-O $outfile" outfile_option_info="($outfile_option)" fi if [ ! -d "$BASE_SOURCES" ]; then echo "ERROR : base source directory missing: $BASE_SOURCES (BASE_SOURCES)" >&2 return 1 fi pushd $BASE_SOURCES >/dev/null if [ $? -ne 0 ]; then echo "ERROR : can't change to directory: $BASE_SOURCES (BASE_SOURCES)" >&2 return 1 fi if [ "$dry_run" = "1" ]; then echo "INFO : would download source package (dry-run): $name-$version from $url $outfile_option_info" >&2 continue else echo "INFO : download source package: $name-$version from $url $outfile_option_info" >&2 fi wget -c -q "$url" $outfile_option result=$? popd >/dev/null if [ $result -ne 0 ]; then echo "ERROR : trouble during downloading of $name-$version from $url" >&2 result_all=1 break else echo "INFO : successful downloaded of $name-$version from $url to $BASE_SOURCES" >&2 download_library_status="$download_library_status $name:$version" fi done return $result_all } ## help help() { cat <]] $0 [-A] [-n] [GeoIP|IP2Location []] source: source mode (using functions only in main script) -D : download GeoIP/IP2Location source packages -C : clean GeoIP/IP2Location source packages -X : extract GeoIP/IP2Location source packages -B : build GeoIP/IP2Location libraries -A : whole chain: download/extract/build -n : dry-run (optionally, type and version can be specified) GeoIP: $geoip_versions IP2Location: $ip2location_versions Prefix '!' means not supported on this platform -h|?: this online help used values from environment (or defaults): BASE_SOURCES=$BASE_SOURCES BASE_DEVEL_GEOIP=$BASE_DEVEL_GEOIP BASE_DEVEL_IP2LOCATION=$BASE_DEVEL_IP2LOCATION END } if [ "$1" != "source" ]; then # use script not only as source (function-mode) #### Main while getopts ":ADCXnB?h" opt; do case $opt in 'n') dry_run=1 echo "NOTICE: dry-run selected" >&2 ;; 'A') action="prepare" do_download="1" do_clean="1" do_extract="1" do_build="1" ;; 'C') action="prepare" do_clean="1" ;; 'D') action="prepare" do_download="1" ;; 'X') action="prepare" do_extract="1" ;; 'B') action="prepare" do_build="1" ;; \?|h) help exit 1 ;; *) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; esac done shift $[ $OPTIND - 1 ] case $action in 'prepare') if [ "$do_download" = "1" ]; then if [ -z "$*" ]; then download_versions GeoIP || exit 1 download_versions IP2Location || exit 1 else download_versions $* || exit 1 fi echo "INFO : following libaries were successfully downloaded: $download_library_status" >&2 fi if [ "$do_clean" = "1" ]; then if [ -z "$*" ]; then clean_versions GeoIP || exit 1 clean_versions IP2Location || exit 1 else clean_versions $* || exit 1 fi echo "INFO : following libaries were successfully cleaned: $clean_library_status" >&2 fi if [ "$do_extract" = "1" ]; then if [ -z "$*" ]; then extract_versions GeoIP || exit 1 extract_versions IP2Location || exit 1 else extract_versions $* || exit 1 fi echo "INFO : following libaries were successfully extracted: $extract_library_status" >&2 fi if [ "$do_build" = "1" ]; then if [ -z "$*" ]; then build_library GeoIP || exit 1 build_library IP2Location || exit 1 else build_library $* || exit 1 fi echo "INFO : following libaries were successfully built: $build_library_status" >&2 fi ;; *) help ;; esac fi ipv6calc-1.0.0/autogen.sh000077500000000000000000000134751312366535500152430ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : autogen.sh # Version : $Id: 71b74fb821ebf74140b2e04496a4fdc4551416de $ # Copyright : 2003-2015 by Peter Bieringer # # Information: autogeneration of projects with optional features OPTIONS_CONFIGURE="" LAST="" while [ "$1" != "$LAST" ]; do LAST="$1" case $1 in '--no-make'|'-n') shift flag_no_make=1 ;; '--all'|'-a') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-geoip --enable-ip2location --enable-dbip --enable-external --enable-mod_ipv6calc" SKIP_STATIC=1 use_geoip=1 use_ip2location=1 use_dbip=1 use_external=1 ;; '--geoip'|'-g') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-geoip" SKIP_STATIC=1 use_geoip=1 ;; '--geoip-dyn'|'-G') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-geoip --with-geoip-dynamic" SKIP_STATIC=1 use_geoip=1 use_geoip_dyn=1 ;; '--ip2location'|'-i') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-ip2location" SKIP_STATIC=1 use_ip2location=1 ;; '--ip2location-dyn'|'-I') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-ip2location --with-ip2location-dynamic" SKIP_STATIC=1 use_ip2location=1 use_ip2location_dyn=1 ;; '--dbip'|'-d') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-dbip" SKIP_STATIC=1 use_dbip=1 ;; '--external'|'-e') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-external" SKIP_STATIC=1 use_external=1 ;; '--disable-db-ieee') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --disable-db-ieee" ;; '--disable-db-ipv4') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --disable-db-ipv4" ;; '--disable-db-ipv6') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --disable-db-ipv6" ;; '--geoip-ipv6-compat') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --with-geoip-ipv6-compat" SKIP_STATIC=1 ;; '-S') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-shared" SKIP_STATIC=1 ;; '--no-static-build') shift SKIP_STATIC=1 ;; '--no-test') shift SKIP_TEST=1 ;; '--clang') shift USE_CLANG=1 ;; '-?'|'-h'|'--help') echo "Supported options:" echo " -?|-h|--help : this help" echo " -n|--no-make : stop before running 'make'" echo " -a|--all : enable GeoIP/IP2Location/db-ip.com/External/mod_ipv6calc support" echo " -g|--geoip : enable GeoIP support" echo " --geoip-dyn|-G : switch to dynamic library loading of GeoIP" echo " -i|--ip2location : enable IP2Location support" echo " --ip2location-dyn|-I: switch to dynamic library loading of IP2Location" echo " -d|--dbip : enable db-ip.com support" echo " -e|--external : enable external database support" echo " --disable-db-ieee : disable built-in IEEE database" echo " --disable-db-ipv4 : disable built-in IPv4 database" echo " --disable-db-ipv6 : disable built-in IPv6 database" echo " --geoip-ipv6-compat : enable GeoIP IPv6 compatibility mode" echo " -S : enable shared library mode" echo " --no-static-build : skip static build" echo " --no-test : skip 'make test'" echo " --clang : use 'clang' instead of default (usually 'gcc')" exit 1 ;; *) OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE $1" shift ;; esac done source ./autogen-support.sh "source" if [ "$use_geoip" = "1" ]; then if ! echo "$OPTIONS_CONFIGURE" | grep -q 'with-geoip-headers='; then OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE $(fallback_options_from_name GeoIP)" fi fi if [ "$use_ip2location" = "1" ]; then if ! echo "$OPTIONS_CONFIGURE" | grep -q 'with-ip2location-headers='; then OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE $(fallback_options_from_name IP2Location)" fi fi if [ -f Makefile ]; then echo "*** cleanup" make autoclean fi if [ "$USE_CLANG" = "1" ]; then if [ -x "/usr/bin/clang" ]; then export CC=/usr/bin/clang else echo "ERROR : --clang selected but binary is missing: /usr/bin/clang" exit 1 fi fi echo "*** run: autoheader" autoheader || exit 1 echo "*** run: autoconf" autoconf || exit 1 echo "*** run: configure, options: $OPTIONS_CONFIGURE $*" LDFLAGS="$LDFLAGS -Wl,--as-needed" ./configure --bindir=/usr/bin --mandir=/usr/share/man $OPTIONS_CONFIGURE $* || exit 1 if [ "$flag_no_make" = "1" ]; then echo echo "Stop before running 'make'" exit fi echo "*** run: make clean" make clean || exit 1 if [ "$use_ip2location_dyn" = "1" ]; then if ldd ./ipv6calc/ipv6calc | grep -i IPLocation; then echo "ERROR : dynamic library mode enabled, but ldd of binary still reports reference to IP2Location" exit 1 fi fi if [ "$use_geoip_dyn" = "1" ]; then if ldd ./ipv6calc/ipv6calc | grep -i GeoIP; then echo "ERROR : dynamic library mode enabled, but ldd of binary still reports reference to GeoIP" exit 1 fi fi make if [ $? -ne 0 ]; then echo "ERROR : 'make' was not successful with configure options: $OPTIONS_CONFIGURE" exit 1 fi if [ "$SKIP_TEST" = "1" ]; then echo "*** skip: make test" else echo "*** run: make test" make test if [ $? -ne 0 ]; then echo "ERROR : 'make test' was not successful with configure options: $OPTIONS_CONFIGURE" exit 1 fi fi if [ "$SKIP_STATIC" != "1" -a ! -e /etc/redhat-release ]; then # skip static on non Fedora/RedHat/CentOS systems SKIP_STATIC="1" echo "NOTICE: 'make static' skipped on non Fedora/RedHat/CentOS systems" fi if [ "$SKIP_STATIC" != "1" ]; then echo "*** run: make static" make static if [ $? -ne 0 ]; then echo "ERROR : 'make static' reports an error (perhaps glibc-static/openssl-static/zlib-static is missing)" exit 1 fi fi echo "*** run: make -n install (dummy install test)" make -n install if [ $? -ne 0 ]; then echo "ERROR : 'make -n install' reports an error" exit 1 fi echo echo "For installing the binaries, type: make install" ipv6calc-1.0.0/config.h.in000066400000000000000000000213271312366535500152600ustar00rootroot00000000000000/* config.h.in. Generated from configure.in by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Copyright year */ #undef COPYRIGHT_YEAR /* Define db-ip.com database directory. */ #undef DBIP_DB /* Define if bundled GETOPT should be used */ #undef ENABLE_BUNDLED_GETOPT /* Define if bundled MD5 should be used */ #undef ENABLE_BUNDLED_MD5 /* Define external database directory. */ #undef EXTERNAL_DB /* Define GeoIP database directory. */ #undef GEOIP_DB /* Define GeoIP dynamic library. */ #undef GEOIP_DYN_LIB /* GeoIP include file version. */ #undef GEOIP_INCLUDE_VERSION /* Define if Berkeley DB support is required. */ #undef HAVE_BERKELEY_DB_SUPPORT /* Define to 1 if you have the declaration of `API_VERSION', and to 0 if you don't. */ #undef HAVE_DECL_API_VERSION /* Define to 1 if you have the declaration of `GEOIP_ASNUM_EDITION', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_ASNUM_EDITION /* Define to 1 if you have the declaration of `GEOIP_ASNUM_EDITION_V6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_ASNUM_EDITION_V6 /* Define to 1 if you have the declaration of `GEOIP_CITY_EDITION_REV0_V6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_CITY_EDITION_REV0_V6 /* Define to 1 if you have the declaration of `GEOIP_CITY_EDITION_REV1_V6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_CITY_EDITION_REV1_V6 /* Define to 1 if you have the declaration of `GeoIP_cleanup', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_CLEANUP /* Define to 1 if you have the declaration of `GeoIP_country_code_by_addr_v6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_COUNTRY_CODE_BY_ADDR_V6 /* Define to 1 if you have the declaration of `GeoIP_country_code_by_ipnum_v6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_COUNTRY_CODE_BY_IPNUM_V6 /* Define to 1 if you have the declaration of `GEOIP_COUNTRY_EDITION_V6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_COUNTRY_EDITION_V6 /* Define to 1 if you have the declaration of `GeoIP_country_name_by_addr_v6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_COUNTRY_NAME_BY_ADDR_V6 /* Define to 1 if you have the declaration of `GEOIP_LARGE_COUNTRY_EDITION', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_LARGE_COUNTRY_EDITION /* Define to 1 if you have the declaration of `GEOIP_LARGE_COUNTRY_EDITION_V6', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_LARGE_COUNTRY_EDITION_V6 /* Define to 1 if you have the declaration of `GeoIP_lib_version', and to 0 if you don't. */ #undef HAVE_DECL_GEOIP_LIB_VERSION /* Define to 1 if you have the declaration of `IP2Location_api_version_string', and to 0 if you don't. */ #undef HAVE_DECL_IP2LOCATION_API_VERSION_STRING /* Define to 1 if you have the declaration of `IP2Location_close', and to 0 if you don't. */ #undef HAVE_DECL_IP2LOCATION_CLOSE /* Define to 1 if you have the declaration of `IP2Location_get_country_long', and to 0 if you don't. */ #undef HAVE_DECL_IP2LOCATION_GET_COUNTRY_LONG /* Define to 1 if you have the declaration of `IP2Location_get_country_short', and to 0 if you don't. */ #undef HAVE_DECL_IP2LOCATION_GET_COUNTRY_SHORT /* Define to 1 if you have the declaration of `USAGETYPE', and to 0 if you don't. */ #undef HAVE_DECL_USAGETYPE /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `MD5_Final' function. */ #undef HAVE_MD5_FINAL /* Define to 1 if you have the `MD5_Init' function. */ #undef HAVE_MD5_INIT /* Define to 1 if you have the `MD5_Update' function. */ #undef HAVE_MD5_UPDATE /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strspn' function. */ #undef HAVE_STRSPN /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define IP2Location database directory. */ #undef IP2LOCATION_DB /* Define IP2Location dynamic library. */ #undef IP2LOCATION_DYN_LIB /* IP2Location include file version. */ #undef IP2LOCATION_INCLUDE_VERSION /* "API version Bugfix" */ #undef IPV6CALC_API_VERSION_BUGFIX /* "API version Major" */ #undef IPV6CALC_API_VERSION_MAJOR /* "API version Minor" */ #undef IPV6CALC_API_VERSION_MINOR /* "API version numeric" */ #undef IPV6CALC_API_VERSION_NUMERIC /* "API version as string" */ #undef IPV6CALC_API_VERSION_STRING /* "Package version Bugfix" */ #undef IPV6CALC_PACKAGE_VERSION_BUGFIX /* "Package version Major" */ #undef IPV6CALC_PACKAGE_VERSION_MAJOR /* "Package version Minor" */ #undef IPV6CALC_PACKAGE_VERSION_MINOR /* "Package version numeric" */ #undef IPV6CALC_PACKAGE_VERSION_NUMERIC /* "Package version as string" */ #undef IPV6CALC_PACKAGE_VERSION_STRING /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define if you want ipv6calc binaries compiled with shared library libipv6calc */ #undef SHARED_LIBRARY /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if you want general BuiltIn database included. */ #undef SUPPORT_BUILTIN /* Define if you want db-ip.com support included. */ #undef SUPPORT_DBIP /* Define if you want AS-to-Registry database included. */ #undef SUPPORT_DB_AS_REG /* Define if you want CC-to-Registry database included. */ #undef SUPPORT_DB_CC_REG /* Define if you want IEEE database included. */ #undef SUPPORT_DB_IEEE /* Define if you want IPv4-to-Registry database included. */ #undef SUPPORT_DB_IPV4_REG /* Define if you want IPv6-to-Registry database included. */ #undef SUPPORT_DB_IPV6_REG /* Define if you want external support included. */ #undef SUPPORT_EXTERNAL /* Define if you want GeoIP support. */ #undef SUPPORT_GEOIP /* Define if your GeoIP version supports GeoIP_cleanup. */ #undef SUPPORT_GEOIP_CLEANUP /* Define if your GeoIP version supports GeoIP_country_code_by_addr_v6. */ #undef SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6 /* Define if your GeoIP version supports GeoIP_country_name_by_addr_v6. */ #undef SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6 /* Define if you want GeoIP support with dynamic loading support - requires also additional linker options. */ #undef SUPPORT_GEOIP_DYN /* Define if GeoIP support IPv6 structure. */ #undef SUPPORT_GEOIP_IPV6_STRUCT /* Define if your GeoIP version supports GeoIP_lib_version. */ #undef SUPPORT_GEOIP_LIB_VERSION /* Define if you want GeoIP support statically linked - requires also additional linker options. */ #undef SUPPORT_GEOIP_STATIC /* Define if you want GeoIP IPv6 support. */ #undef SUPPORT_GEOIP_V6 /* Define if you want IP2Location support. */ #undef SUPPORT_IP2LOCATION /* Define if your IP2Location supports only reduced set of databases. */ #undef SUPPORT_IP2LOCATION_ALL_COMPAT /* Define if you want IP2Location API version string support. */ #undef SUPPORT_IP2LOCATION_API_VERSION_STRING /* Define if you want IP2Location support with dynamic loading support - requires also additional linker options. */ #undef SUPPORT_IP2LOCATION_DYN /* Define if your IP2Location supports IPv6 only in old manner. */ #undef SUPPORT_IP2LOCATION_IPV6_COMPAT /* Define if you want IP2Location LIB version string support. */ #undef SUPPORT_IP2LOCATION_LIB_VERSION_STRING /* Define if you want IP2Location support statically linked - requires also additional linker options. */ #undef SUPPORT_IP2LOCATION_STATIC /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t ipv6calc-1.0.0/configure000077500000000000000000006735601312366535500151600ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for ipv6calc 1.0.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: ipv6calc@deepspace6.net about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ipv6calc' PACKAGE_TARNAME='ipv6calc' PACKAGE_VERSION='1.0.0' PACKAGE_STRING='ipv6calc 1.0.0' PACKAGE_BUGREPORT='ipv6calc@deepspace6.net' PACKAGE_URL='http://www.deepspace6.net/projects/ipv6calc.html' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LD_LIBRARY_PATH_BASIC LD_LIBRARY_PATH LDFLAGS_EXTRA_STATIC LDFLAGS_EXTRA_MOD_IPV6CALC LDFLAGS_EXTRA CFLAGS_EXTRA HTTPD_VERSION_MAJOR_MINOR HTTPD_SYSCONFDIR HTTPD_LIBEXECDIR APXS ENABLE_MOD_IPV6CALC DYNLOAD_LIB GEOIP_DYN_LIB GEOIP_DB GEOIP_LIB_L2 GEOIP_LIB_L1 GEOIP_LIB GEOIP_INCLUDE_L1 GEOIP_INCLUDE_L2 GEOIP_INCLUDE_VERSION GEOIP_INCLUDE IP2LOCATION_DYN_LIB IP2LOCATION_DB IP2LOCATION_LIB_L2 IP2LOCATION_LIB_L1 IP2LOCATION_LIB IP2LOCATION_INCLUDE_L2 IP2LOCATION_INCLUDE_L1 IP2LOCATION_INCLUDE EXTERNAL_DB DBIP_DB IPV6CALC_LIB SHARED_LIBRARY ENABLE_BUNDLED_MD5 MD5_INCLUDE ENABLE_BUNDLED_GETOPT GETOPT_INCLUDE LIBOBJS EGREP GREP CPP SET_MAKE RANLIB OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AWK COPYRIGHT_YEAR target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_compiler_warning_to_error enable_bundled_getopt enable_bundled_md5 enable_shared enable_dynamic_load enable_db_ieee enable_db_ipv4 enable_db_ipv6 enable_db_as_registry enable_db_cc_registry enable_dbip with_dbip_db enable_external with_external_db enable_ip2location with_ip2location_dynamic with_ip2location_headers with_ip2location_headers_fallback with_ip2location_lib with_ip2location_static with_ip2location_db with_ip2location_dyn_lib enable_geoip with_geoip_dynamic with_geoip_headers with_geoip_headers_fallback with_geoip_lib with_geoip_static with_geoip_db with_geoip_dyn_lib with_geoip_ipv6_compat enable_mod_ipv6calc with_apxs ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures ipv6calc 1.0.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/ipv6calc] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ipv6calc 1.0.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-compiler-warning-to-error Disable extra CFLAGS for mapping warnings to errors during compilation --enable-bundled-getopt Enable bundled getopt library (default: autoselected) --enable-bundled-md5 Enable bundled MD5 library (default: autoselected) --enable-shared Enable shared library build (default: disabled) --disable-dynamic-load Disable dynamic load of libraries (default: enabled) --disable-db-ieee Disable built-in IEEE database (default: enabled) --disable-db-ipv4 Disable built-in IPv4-to-Registry database (default: enabled) --disable-db-ipv6 Disable built-in IPv6-to-Registry database (default: enabled) --disable-db-as-registry Disable built-in AS-to-Registry database (default: enabled) --disable-db-cc-registry Disable built-in CountryCode-to-Registry database (default: enabled) --enable-dbip Enable db-ip.com support (default: disabled) --enable-external Enable external db support (default: disabled) --enable-ip2location Enable IP2Location support (default: disabled) --enable-geoip Enable GeoIP support (default: disabled) --enable-mod_ipv6calc Enable build of mod_ipv6calc for Apache (default: disabled) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-dbip-db=DIR Use specified db-ip.com database directory, default: /usr/share/DBIP --with-external-db=DIR Use specified external database directory, default: /usr/share/ipv6calc/db --with-ip2location-dynamic Enable use of dynamic loading of IP2Location library (default=no) --with-ip2location-headers=DIR IP2Location include files location --with-ip2location-headers-fallback IP2Location include files from internal fallback location (only usable with dynamic load option) --with-ip2location-lib=FILE IP2Location library location --with-ip2location-static Explicitly link IP2Location statically (default=no) --with-ip2location-db=DIR Use specified IP2Location database directory, default: /usr/share/IP2Location --with-ip2location-dyn-lib=NAME Use specified IP2Location dynamic library, default: libIP2Location.so --with-geoip-dynamic Enable use of dynamic loading of GeoIP library (default=no) --with-geoip-headers=DIR GeoIP include files location --with-geoip-headers-fallback GeoIP include files from internal fallback location (only usable with dynamic load option) --with-geoip-lib=DIR GeoIP library location --with-geoip-static Explicitly link GeoIP statically (default=no) --with-geoip-db=DIR Use specified GeoIP database directory, default: /usr/share/GeoIP --with-geoip-dyn-lib=NAME Use specified GeoIP dynamic library, default: libGeoIP.so.1 --with-geoip-ipv6-compat Use IPv6 interface of GeoIP in compatibility mode (supporting 1.4.5) --with-apxs=NAME name of the apxs executable (apxs) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . ipv6calc home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF ipv6calc configure 1.0.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------- ## ## Report this to ipv6calc@deepspace6.net ## ## -------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by ipv6calc $as_me 1.0.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu COPYRIGHT_YEAR=2017 PACKAGE_VERSION_MAJOR=1 PACKAGE_VERSION_MINOR=0 PACKAGE_VERSION_BUGFIX=0 API_VERSION_MAJOR=1 API_VERSION_MINOR=0 API_VERSION_BUGFIX=0 cat >>confdefs.h <<_ACEOF #define COPYRIGHT_YEAR "$COPYRIGHT_YEAR" _ACEOF PACKAGE_VERSION_NUMERIC=$(echo "$PACKAGE_VERSION_MAJOR $PACKAGE_VERSION_MINOR $PACKAGE_VERSION_BUGFIX" | awk '{ print ( $1 * 1000 + $2 ) * 1000 + $3 }') PACKAGE_VERSION_STRING=$(echo "$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_BUGFIX") cat >>confdefs.h <<_ACEOF #define IPV6CALC_PACKAGE_VERSION_MAJOR $PACKAGE_VERSION_MAJOR _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_PACKAGE_VERSION_MINOR $PACKAGE_VERSION_MINOR _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_PACKAGE_VERSION_BUGFIX $PACKAGE_VERSION_BUGFIX _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_PACKAGE_VERSION_STRING "$PACKAGE_VERSION_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_PACKAGE_VERSION_NUMERIC $PACKAGE_VERSION_NUMERIC _ACEOF API_VERSION_NUMERIC=$(echo "$API_VERSION_MAJOR $API_VERSION_MINOR $API_VERSION_BUGFIX" | awk '{ print ( $1 * 1000 + $2 ) * 1000 + $3 }') API_VERSION_STRING=$(echo "$API_VERSION_MAJOR.$API_VERSION_MINOR.$API_VERSION_BUGFIX") cat >>confdefs.h <<_ACEOF #define IPV6CALC_API_VERSION_MAJOR $API_VERSION_MAJOR _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_API_VERSION_MINOR $API_VERSION_MINOR _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_API_VERSION_BUGFIX $API_VERSION_BUGFIX _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_API_VERSION_STRING "$API_VERSION_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define IPV6CALC_API_VERSION_NUMERIC $API_VERSION_NUMERIC _ACEOF ac_config_headers="$ac_config_headers config.h" for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 $as_echo_n "checking for working memcmp... " >&6; } if ${ac_cv_func_memcmp_working+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = '\100', c1 = '\200', c2 = '\201'; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) return 1; /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) return 1; } return 0; } ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 $as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; esac for ac_func in strspn strstr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Check whether --enable-compiler-warning-to-error was given. if test "${enable_compiler_warning_to_error+set}" = set; then : enableval=$enable_compiler_warning_to_error; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** check for CFLAGS: -Werror=format-security" >&5 $as_echo "*** check for CFLAGS: -Werror=format-security" >&6; } CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wformat -Werror -Werror=format-security" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int a=1; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS supported: -Werror=format-security" >&5 $as_echo "*** CFLAGS supported: -Werror=format-security" >&6; } CFLAGS_EXTRA="-Wformat -Werror -Werror=format-security" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** missing CFLAGS support: -Werror=format-security" >&5 $as_echo "$as_me: WARNING: *** missing CFLAGS support: -Werror=format-security" >&2;} CFLAGS_EXTRA="-Wformat" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$CFLAGS_SAVE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** check for CFLAGS: -Wsizeof-array-argument" >&5 $as_echo "*** check for CFLAGS: -Wsizeof-array-argument" >&6; } CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wsizeof-array-argument" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int a=1; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS supported: -Wsizeof-array-argument" >&5 $as_echo "*** CFLAGS supported: -Wsizeof-array-argument" >&6; } CFLAGS_EXTRA="$CFLAGS_EXTRA -Wsizeof-array-argument" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** missing CFLAGS support: -Wsizeof-array-argument" >&5 $as_echo "$as_me: WARNING: *** missing CFLAGS support: -Wsizeof-array-argument" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$CFLAGS_SAVE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** check for CFLAGS: -Wparentheses-equality" >&5 $as_echo "*** check for CFLAGS: -Wparentheses-equality" >&6; } CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wparentheses-equality" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int a=1; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS supported: -Wparentheses-equality" >&5 $as_echo "*** CFLAGS supported: -Wparentheses-equality" >&6; } CFLAGS_EXTRA="$CFLAGS_EXTRA -Wparentheses-equality" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** missing CFLAGS support: -Wparentheses-equality" >&5 $as_echo "$as_me: WARNING: *** missing CFLAGS support: -Wparentheses-equality" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$CFLAGS_SAVE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** check for CFLAGS: -Wextra" >&5 $as_echo "*** check for CFLAGS: -Wextra" >&6; } CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wextra" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int a=1; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS supported: -Wextra" >&5 $as_echo "*** CFLAGS supported: -Wextra" >&6; } CFLAGS_EXTRA="$CFLAGS_EXTRA -Wextra" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** missing CFLAGS support: -Wextra" >&5 $as_echo "$as_me: WARNING: *** missing CFLAGS support: -Wextra" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$CFLAGS_SAVE" fi # Check whether --enable-bundled-getopt was given. if test "${enable_bundled_getopt+set}" = set; then : enableval=$enable_bundled_getopt; if test "$enable_bundled_getopt" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of bundled getopt library forced" >&5 $as_echo "*** use of bundled getopt library forced" >&6; } ENABLE_BUNDLED_GETOPT=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of system getopt library forced" >&5 $as_echo "*** use of system getopt library forced" >&6; } fi else ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" if test "x$ac_cv_func_getopt_long" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of system getopt library autoselected" >&5 $as_echo "*** use of system getopt library autoselected" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of bundled getopt library autoselected" >&5 $as_echo "*** use of bundled getopt library autoselected" >&6; } ENABLE_BUNDLED_GETOPT=1 fi fi if test "$ENABLE_BUNDLED_GETOPT" = "1"; then case " $LIBOBJS " in *" ../getopt/getopt.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS ../getopt/getopt.$ac_objext" ;; esac case " $LIBOBJS " in *" ../getopt/getopt1.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS ../getopt/getopt1.$ac_objext" ;; esac GETOPT_INCLUDE=-I../getopt $as_echo "#define ENABLE_BUNDLED_GETOPT 1" >>confdefs.h fi # Check whether --enable-bundled-md5 was given. if test "${enable_bundled_md5+set}" = set; then : enableval=$enable_bundled_md5; if test "$enable_bundled_md5" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of bundled MD5 library forced" >&5 $as_echo "*** use of bundled MD5 library forced" >&6; } ENABLE_BUNDLED_MD5=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of system MD5 library forced" >&5 $as_echo "*** use of system MD5 library forced" >&6; } fi else ac_fn_c_check_header_mongrel "$LINENO" "openssl/md5.h" "ac_cv_header_openssl_md5_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_md5_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** openssl/md5.h header file found" >&5 $as_echo "*** openssl/md5.h header file found" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MD5_Init in -lcrypto" >&5 $as_echo_n "checking for MD5_Init in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_MD5_Init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char MD5_Init (); int main () { return MD5_Init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_MD5_Init=yes else ac_cv_lib_crypto_MD5_Init=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_MD5_Init" >&5 $as_echo "$ac_cv_lib_crypto_MD5_Init" >&6; } if test "x$ac_cv_lib_crypto_MD5_Init" = xyes; then : LDFLAGS="-lcrypto $LDFLAGS" for ac_func in MD5_Init MD5_Update MD5_Final do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF md5_found="yes" else ENABLE_BUNDLED_MD5=1 fi done if test "$md5_found" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of system MD5 library autoselected" >&5 $as_echo "*** use of system MD5 library autoselected" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** use of bundled MD5 library autoselected" >&5 $as_echo "*** use of bundled MD5 library autoselected" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: crypto library header files were found but not supporting required MD5 functions (will use bundled MD5 function)." >&5 $as_echo "$as_me: WARNING: crypto library header files were found but not supporting required MD5 functions (will use bundled MD5 function)." >&2;} ENABLE_BUNDLED_MD5=1 fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: openssl/md5.h header file not found (will use bundled MD5 function)." >&5 $as_echo "$as_me: WARNING: openssl/md5.h header file not found (will use bundled MD5 function)." >&2;} ENABLE_BUNDLED_MD5=1 fi fi if test "$ENABLE_BUNDLED_MD5" = "1"; then case " $LIBOBJS " in *" ../md5/md5.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS ../md5/md5.$ac_objext" ;; esac GETOPT_INCLUDE=-I../md5 $as_echo "#define ENABLE_BUNDLED_MD5 1" >>confdefs.h else LDFLAGS_EXTRA="-lcrypto $LDFLAGS_EXTRA" LDFLAGS_EXTRA_STATIC="-lcrypto -lz -ldl $LDFLAGS_EXTRA_STATIC" fi geoip_db_default="/usr/share/GeoIP" ip2location_db_default="/usr/share/IP2Location" dbip_db_default="/usr/share/DBIP" external_db_default="/usr/share/ipv6calc/db" geoip_dyn_lib_default="libGeoIP.so.1" ip2location_dyn_lib_default="libIP2Location.so" # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; fi if test "$enable_shared" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Shared library build enabled" >&5 $as_echo "*** Shared library build enabled" >&6; } SHARED_LIBRARY="yes" $as_echo "#define SHARED_LIBRARY 1" >>confdefs.h LDFLAGS_EXTRA_MOD_IPV6CALC="-Wl,../lib/libipv6calc.so.$PACKAGE_VERSION -Wl,../databases/lib/libipv6calc_db_wrapper.so.$PACKAGE_VERSION $LDFLAGS_EXTRA" LDFLAGS_EXTRA="../lib/libipv6calc.so.$PACKAGE_VERSION ../databases/lib/libipv6calc_db_wrapper.so.$PACKAGE_VERSION $LDFLAGS_EXTRA" LD_LIBRARY_PATH=../lib:../databases/lib:$LD_LIBRARY_PATH LD_LIBRARY_PATH_BASIC=../lib:../databases/lib:$LD_LIBRARY_PATH_BASIC else SHARED_LIBRARY="no" IPV6CALC_LIB="-L../lib/ -L../databases/lib/ -lipv6calc_db_wrapper -lipv6calc" fi ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" if test "x$ac_cv_header_dlfcn_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Dynamic loading of libraries is SUPPORTED" >&5 $as_echo "*** Dynamic loading of libraries is SUPPORTED" >&6; } DYNAMIC_LOAD_SUPPORT="yes" else DYNAMIC_LOAD_SUPPORT="no" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Dynamic loading of libraries is not supported, no header file found\"" >&5 $as_echo "$as_me: WARNING: \"Dynamic loading of libraries is not supported, no header file found\"" >&2;} fi # Check whether --enable-dynamic-load was given. if test "${enable_dynamic_load+set}" = set; then : enableval=$enable_dynamic_load; fi if test "$enable_dynamic_load" = "yes"; then DYNAMIC_LOAD="no" else DYNAMIC_LOAD="yes" fi if test "$DYNAMIC_LOAD_SUPPORT" = "yes"; then if test "$DYNAMIC_LOAD" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Dynamic loading of libraries forced to be disabled\"" >&5 $as_echo "$as_me: WARNING: \"Dynamic loading of libraries forced to be disabled\"" >&2;} fi fi # Check whether --enable-db-ieee was given. if test "${enable_db_ieee+set}" = set; then : enableval=$enable_db_ieee; DB_IEEE="$enable_db_ieee" else DB_IEEE="yes" BUILTIN="yes" fi if test "$DB_IEEE" = "yes"; then $as_echo "#define SUPPORT_DB_IEEE 1" >>confdefs.h fi # Check whether --enable-db-ipv4 was given. if test "${enable_db_ipv4+set}" = set; then : enableval=$enable_db_ipv4; DB_IPV4="$enable_db_ipv4" else DB_IPV4="yes" BUILTIN="yes" fi if test "$DB_IPV4" = "yes"; then $as_echo "#define SUPPORT_DB_IPV4_REG 1" >>confdefs.h fi # Check whether --enable-db-ipv6 was given. if test "${enable_db_ipv6+set}" = set; then : enableval=$enable_db_ipv6; DB_IPV6="$enable_db_ipv6" else DB_IPV6="yes" BUILTIN="yes" fi if test "$DB_IPV6" = "yes"; then $as_echo "#define SUPPORT_DB_IPV6_REG 1" >>confdefs.h fi # Check whether --enable-db-as-registry was given. if test "${enable_db_as_registry+set}" = set; then : enableval=$enable_db_as_registry; DB_AS_REG="$enable_db_as_registry" else DB_AS_REG="yes" BUILTIN="yes" fi if test "$DB_AS_REG" = "yes"; then $as_echo "#define SUPPORT_DB_AS_REG 1" >>confdefs.h fi # Check whether --enable-db-cc-registry was given. if test "${enable_db_cc_registry+set}" = set; then : enableval=$enable_db_cc_registry; DB_CC_REG="$enable_db_cc_registry" else DB_CC_REG="yes" BUILTIN="yes" fi if test "$DB_CC_REG" = "yes"; then $as_echo "#define SUPPORT_DB_CC_REG 1" >>confdefs.h fi if test "$BUILTIN" = "yes"; then $as_echo "#define SUPPORT_BUILTIN 1" >>confdefs.h fi # Check whether --enable-dbip was given. if test "${enable_dbip+set}" = set; then : enableval=$enable_dbip; DBIP="$enable_dbip" else DBIP="no" fi # Check whether --with-dbip-db was given. if test "${with_dbip_db+set}" = set; then : withval=$with_dbip_db; dbip_db="$with_dbip_db" else dbip_db=$dbip_db_default fi if test "$DBIP" = "yes"; then require_libdb="yes" $as_echo "#define SUPPORT_DBIP 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** db-ip.com db dir: $dbip_db" >&5 $as_echo "*** db-ip.com db dir: $dbip_db" >&6; } cat >>confdefs.h <<_ACEOF #define DBIP_DB "$dbip_db" _ACEOF fi DBIP_DB=$dbip_db # Check whether --enable-external was given. if test "${enable_external+set}" = set; then : enableval=$enable_external; EXTERNAL="$enable_external" else EXTERNAL="no" fi # Check whether --with-external-db was given. if test "${with_external_db+set}" = set; then : withval=$with_external_db; external_db="$with_external_db" else external_db=$external_db_default fi if test "$EXTERNAL" = "yes"; then require_libdb="yes" $as_echo "#define SUPPORT_EXTERNAL 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** external db dir: $dbip_db" >&5 $as_echo "*** external db dir: $dbip_db" >&6; } cat >>confdefs.h <<_ACEOF #define EXTERNAL_DB "$external_db" _ACEOF fi EXTERNAL_DB=$external_db IP2LOCATION_LIB_NAME="IP2Location" IP2LOCATION_INCLUDE_VERSION="" # Check whether --enable-ip2location was given. if test "${enable_ip2location+set}" = set; then : enableval=$enable_ip2location; IP2LOCATION="$enable_ip2location" else IP2LOCATION="no" fi # Check whether --with-ip2location-dynamic was given. if test "${with_ip2location_dynamic+set}" = set; then : withval=$with_ip2location_dynamic; if test "$enable_ip2location_dynamic" != "no"; then IP2LOCATION_DYN="yes" fi else true fi # Check whether --with-ip2location-headers was given. if test "${with_ip2location_headers+set}" = set; then : withval=$with_ip2location_headers; IP2LOCATION_INCLUDE_DIR="$with_ip2location_headers" fi # Check whether --with-ip2location-headers-fallback was given. if test "${with_ip2location_headers_fallback+set}" = set; then : withval=$with_ip2location_headers_fallback; if test "$IP2LOCATION_DYN" != "yes"; then as_fn_error $? "IP2Location fallback headers are only usable with dynamic load option set: --with-ip2location-dynamic" "$LINENO" 5 fi if test -n "$IP2LOCATION_INCLUDE_DIR"; then as_fn_error $? "IP2Location include files location already set by --with-ip2location-headers, skip fallback" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location fallback headers activated" >&5 $as_echo "*** IP2Location fallback headers activated" >&6; } IP2LOCATION_INCLUDE_DIR="external-fallback/IP2Location" IP2LOCATION_INCLUDE_VERSION=$(cat external-fallback/IP2Location/VERSION-IP2Location) fi fi if test -n "$IP2LOCATION_INCLUDE_DIR"; then IP2LOCATION_INCLUDE="-I$IP2LOCATION_INCLUDE_DIR" if test -d "$IP2LOCATION_INCLUDE_DIR/iMath"; then # include iMath where existing (API < 7.0.0) IP2LOCATION_INCLUDE="$IP2LOCATION_INCLUDE -I$IP2LOCATION_INCLUDE_DIR/iMath" fi if echo "$IP2LOCATION_INCLUDE_DIR" | grep -q "^/"; then # absolute path IP2LOCATION_INCLUDE_L1="-I$IP2LOCATION_INCLUDE_DIR" IP2LOCATION_INCLUDE_L2="-I$IP2LOCATION_INCLUDE_DIR" if test -d "$IP2LOCATION_INCLUDE_DIR/iMath"; then # include iMath where existing (API < 7.0.0) IP2LOCATION_INCLUDE_L1="$IP2LOCATION_INCLUDE_L1 -I$IP2LOCATION_INCLUDE_DIR/iMath" IP2LOCATION_INCLUDE_L2="$IP2LOCATION_INCLUDE_L2 -I$IP2LOCATION_INCLUDE_DIR/iMath" fi else IP2LOCATION_INCLUDE_L1="-I../$IP2LOCATION_INCLUDE_DIR" IP2LOCATION_INCLUDE_L2="-I../../$IP2LOCATION_INCLUDE_DIR" if test -d "$IP2LOCATION_INCLUDE_DIR/iMath"; then # include iMath where existing (API < 7.0.0) IP2LOCATION_INCLUDE_L1="$IP2LOCATION_INCLUDE_L1 -I../$IP2LOCATION_INCLUDE_DIR/iMath" IP2LOCATION_INCLUDE_L2="$IP2LOCATION_INCLUDE_L2 -I../../$IP2LOCATION_INCLUDE_DIR/iMath" fi fi fi # Check whether --with-ip2location-lib was given. if test "${with_ip2location_lib+set}" = set; then : withval=$with_ip2location_lib; if test -d "$with_ip2location_lib"; then IP2LOCATION_LIB_DIR="$with_ip2location_lib" IP2LOCATION_LIB="-L$IP2LOCATION_LIB_DIR $IP2LOCATION_LIB" { $as_echo "$as_me:${as_lineno-$LINENO}: result: IP2Location library directory given: $IP2LOCATION_LIB_DIR" >&5 $as_echo "IP2Location library directory given: $IP2LOCATION_LIB_DIR" >&6; } else as_fn_error $? "IP2Location library directory not found: $with_ip2location_lib" "$LINENO" 5 fi if echo "$IP2LOCATION_LIB_DIR" | grep -q "^/"; then # absolute path IP2LOCATION_LIB_L1="-L$IP2LOCATION_LIB_DIR" IP2LOCATION_LIB_L2="-L$IP2LOCATION_LIB_DIR" if test -n "$LD_LIBRARY_PATH"; then LD_LIBRARY_PATH=$IP2LOCATION_LIB_DIR:$LD_LIBRARY_PATH else LD_LIBRARY_PATH=$IP2LOCATION_LIB_DIR fi else IP2LOCATION_LIB_L1="-L../$IP2LOCATION_LIB_DIR" IP2LOCATION_LIB_L2="-L../../$IP2LOCATION_LIB_DIR" if test -n "$LD_LIBRARY_PATH"; then LD_LIBRARY_PATH=../$IP2LOCATION_LIB_DIR:$LD_LIBRARY_PATH else LD_LIBRARY_PATH=$IP2LOCATION_LIB_DIR fi fi fi # must be tested #AC_ARG_WITH([ip2location-lib-name], # AS_HELP_STRING([--with-ip2location-lib-name=NAME], # [IP2Location library name]), # [ # IP2LOCATION_LIB_NAME="$with_geoip_lib_name" # IP2LOCATION_LIB="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB" # AC_MSG_RESULT([IP2Location library name given: $IP2LOCATION_LIB_NAME]) # ],[ # ]) # Check whether --with-ip2location-static was given. if test "${with_ip2location_static+set}" = set; then : withval=$with_ip2location_static; if test "$with_ip2location_static" != "no"; then IP2LOCATION_LIB="-Wl,-Bstatic $IP2LOCATION_LIB -Wl,-Bdynamic" fi fi # Check whether --with-ip2location-db was given. if test "${with_ip2location_db+set}" = set; then : withval=$with_ip2location_db; ip2location_db="$with_ip2location_db" else ip2location_db=$ip2location_db_default fi # Check whether --with-ip2location-dyn-lib was given. if test "${with_ip2location_dyn_lib+set}" = set; then : withval=$with_ip2location_dyn_lib; ip2location_dyn_lib="$with_ip2location_dyn_lib" else ip2location_dyn_lib=$ip2location_dyn_lib_default fi if test "$IP2LOCATION" = "yes"; then if test "$IP2LOCATION_DYN" != "yes"; then IP2LOCATION_LIB="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB" IP2LOCATION_LIB_L1="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB_L1" IP2LOCATION_LIB_L2="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB_L2" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: **** IP2Location dynamic load support enabled, disable IP2Location linker options" >&5 $as_echo "**** IP2Location dynamic load support enabled, disable IP2Location linker options" >&6; } fi CPPFLAGS="$CPPFLAGS $IP2LOCATION_INCLUDE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location support requested" >&5 $as_echo "*** IP2Location support requested" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CPPFLAGS=$CPPFLAGS" >&5 $as_echo "***** CPPFLAGS=$CPPFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CFLAGS =$CFLAGS" >&5 $as_echo "***** CFLAGS =$CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** LDFLAGS =$LDFLAGS" >&5 $as_echo "***** LDFLAGS =$LDFLAGS" >&6; } ac_fn_c_check_header_mongrel "$LINENO" "IP2Location.h" "ac_cv_header_IP2Location_h" "$ac_includes_default" if test "x$ac_cv_header_IP2Location_h" = xyes; then : if test -n "$IP2LOCATION_INCLUDE_DIR"; then if test -e "$IP2LOCATION_INCLUDE_DIR/IP2Location.h"; then CPPFLAGS="$CPPFLAGS -include $IP2LOCATION_INCLUDE_DIR/IP2Location.h" else as_fn_error $? "IP2Location library header file not found: $IP2LOCATION_INCLUDE_DIR/IP2Location.h" "$LINENO" 5 fi else CPPFLAGS="$CPPFLAGS -include IP2Location.h" fi ac_fn_c_check_decl "$LINENO" "IP2Location_open" "ac_cv_have_decl_IP2Location_open" "$ac_includes_default" if test "x$ac_cv_have_decl_IP2Location_open" = xyes; then : else as_fn_error $? "IP2Location library header file misses IP2Location_open" "$LINENO" 5 fi ac_fn_c_check_decl "$LINENO" "IP2Location_close" "ac_cv_have_decl_IP2Location_close" "$ac_includes_default" if test "x$ac_cv_have_decl_IP2Location_close" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_IP2LOCATION_CLOSE $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "IP2Location_get_country_short" "ac_cv_have_decl_IP2Location_get_country_short" "$ac_includes_default" if test "x$ac_cv_have_decl_IP2Location_get_country_short" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_IP2LOCATION_GET_COUNTRY_SHORT $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "IP2Location_get_country_long" "ac_cv_have_decl_IP2Location_get_country_long" "$ac_includes_default" if test "x$ac_cv_have_decl_IP2Location_get_country_long" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_IP2LOCATION_GET_COUNTRY_LONG $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "API_VERSION" "ac_cv_have_decl_API_VERSION" "$ac_includes_default" if test "x$ac_cv_have_decl_API_VERSION" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_API_VERSION $ac_have_decl _ACEOF cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include IP2Location loc; void test() { loc.ipv6databaseaddr = 1; }; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: IP2Location has full IPv6 support (API >= 7.0.0)" >&5 $as_echo "IP2Location has full IPv6 support (API >= 7.0.0)" >&6; } IP2LOCATION_IPV6_COMPAT="no" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IP2Location has only compat IPv6 support (API < 7.0.0) which is no longer supported" >&5 $as_echo "$as_me: WARNING: IP2Location has only compat IPv6 support (API < 7.0.0) which is no longer supported" >&2;} IP2LOCATION_IPV6_COMPAT="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_fn_c_check_decl "$LINENO" "USAGETYPE" "ac_cv_have_decl_USAGETYPE" "$ac_includes_default" if test "x$ac_cv_have_decl_USAGETYPE" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_USAGETYPE $ac_have_decl _ACEOF if test $ac_have_decl = 1; then : IP2LOCATION_ALL_COMPAT="no" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IP2Location library header file misses USAGETYPE (library < 6.0.0)" >&5 $as_echo "$as_me: WARNING: IP2Location library header file misses USAGETYPE (library < 6.0.0)" >&2;} IP2LOCATION_ALL_COMPAT="yes" fi else as_fn_error $? "IP2Location library header files not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2location db dir: $ip2location_db" >&5 $as_echo "*** IP2location db dir: $ip2location_db" >&6; } cat >>confdefs.h <<_ACEOF #define IP2LOCATION_DB "$ip2location_db" _ACEOF if test "$IP2LOCATION_DYN" != "yes"; then if test "$IP2LOCATION_STATIC" = "yes"; then $as_echo "#define SUPPORT_IP2LOCATION_STATIC 1" >>confdefs.h fi CPPFLAGS="$CFLAGS" if test -n "$IP2LOCATION_LIB_DIR"; then if test -e "$IP2LOCATION_LIB_DIR/lib$IP2LOCATION_LIB_NAME.so"; then LDFLAGS="$LDFLAGS -L$IP2LOCATION_LIB_DIR" CFLAGS="$CFLAGS -L$IP2LOCATION_LIB_DIR" LIBS="-L$IP2LOCATION_LIB_DIR" else as_fn_error $? "IP2Location library file not found: $IP2LOCATION_INCLUDE_DIR/lib$IP2LOCATION_LIB_NAME.so" "$LINENO" 5 fi fi as_ac_Lib=`$as_echo "ac_cv_lib_$IP2LOCATION_LIB_NAME''_IP2Location_api_version_string" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP2Location_api_version_string in -l$IP2LOCATION_LIB_NAME" >&5 $as_echo_n "checking for IP2Location_api_version_string in -l$IP2LOCATION_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$IP2LOCATION_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IP2Location_api_version_string (); int main () { return IP2Location_api_version_string (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_IP2LOCATION_API_VERSION_STRING 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location library supports API version string" >&5 $as_echo "*** IP2Location library supports API version string" >&6; } fi as_ac_Lib=`$as_echo "ac_cv_lib_$IP2LOCATION_LIB_NAME''_IP2Location_lib_version_string" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP2Location_lib_version_string in -l$IP2LOCATION_LIB_NAME" >&5 $as_echo_n "checking for IP2Location_lib_version_string in -l$IP2LOCATION_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$IP2LOCATION_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IP2Location_lib_version_string (); int main () { return IP2Location_lib_version_string (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_IP2LOCATION_LIB_VERSION_STRING 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location library supports LIB version string" >&5 $as_echo "*** IP2Location library supports LIB version string" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CPPFLAGS=$CPPFLAGS" >&5 $as_echo "***** CPPFLAGS=$CPPFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CFLAGS =$CFLAGS" >&5 $as_echo "***** CFLAGS =$CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** LDFLAGS =$LDFLAGS" >&5 $as_echo "***** LDFLAGS =$LDFLAGS" >&6; } as_ac_Lib=`$as_echo "ac_cv_lib_$IP2LOCATION_LIB_NAME''_IP2Location_open" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP2Location_open in -l$IP2LOCATION_LIB_NAME" >&5 $as_echo_n "checking for IP2Location_open in -l$IP2LOCATION_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$IP2LOCATION_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IP2Location_open (); int main () { return IP2Location_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_IP2LOCATION 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location support enabled" >&5 $as_echo "*** IP2Location support enabled" >&6; } else as_fn_error $? "IP2Location library header files were found but the library was not found, LDFLAGS=$LDFLAGS, CFLAGS=$CFLAGS" "$LINENO" 5 fi else ac_fn_c_check_decl "$LINENO" "IP2Location_api_version_string" "ac_cv_have_decl_IP2Location_api_version_string" "$ac_includes_default" if test "x$ac_cv_have_decl_IP2Location_api_version_string" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_IP2LOCATION_API_VERSION_STRING $ac_have_decl _ACEOF if test $ac_have_decl = 1; then : $as_echo "#define SUPPORT_IP2LOCATION_API_VERSION_STRING 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location header supports API version string" >&5 $as_echo "*** IP2Location header supports API version string" >&6; } fi # wrapper detects by itself the real support { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location dyn lib: $ip2location_dyn_lib" >&5 $as_echo "*** IP2Location dyn lib: $ip2location_dyn_lib" >&6; } cat >>confdefs.h <<_ACEOF #define IP2LOCATION_DYN_LIB "$ip2location_dyn_lib" _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location support will be implemented by using dynamic load of library" >&5 $as_echo "*** IP2Location support will be implemented by using dynamic load of library" >&6; } $as_echo "#define SUPPORT_IP2LOCATION 1" >>confdefs.h $as_echo "#define SUPPORT_IP2LOCATION_DYN 1" >>confdefs.h fi fi if test "$IP2LOCATION_IPV6_COMPAT" = "yes"; then $as_echo "#define SUPPORT_IP2LOCATION_IPV6_COMPAT 1" >>confdefs.h fi if test "$IP2LOCATION_ALL_COMPAT" = "yes"; then $as_echo "#define SUPPORT_IP2LOCATION_ALL_COMPAT 1" >>confdefs.h fi IP2LOCATION_DB=$ip2location_db if test -n "$IP2LOCATION_INCLUDE_VERSION"; then cat >>confdefs.h <<_ACEOF #define IP2LOCATION_INCLUDE_VERSION "$IP2LOCATION_INCLUDE_VERSION" _ACEOF fi GEOIP_LIB_NAME="GeoIP" GEOIP_INCLUDE_VERSION="" # Check whether --enable-geoip was given. if test "${enable_geoip+set}" = set; then : enableval=$enable_geoip; if test "$enable_geoip" != "no"; then GEOIP="$enable_geoip" fi else GEOIP="no" fi # Check whether --with-geoip-dynamic was given. if test "${with_geoip_dynamic+set}" = set; then : withval=$with_geoip_dynamic; if test "$with_geoip_dynamic" != "no"; then GEOIP_DYN="yes" fi else true fi # Check whether --with-geoip-headers was given. if test "${with_geoip_headers+set}" = set; then : withval=$with_geoip_headers; GEOIP_INCLUDE_DIR="$with_geoip_headers" fi # Check whether --with-geoip-headers-fallback was given. if test "${with_geoip_headers_fallback+set}" = set; then : withval=$with_geoip_headers_fallback; if test "$GEOIP_DYN" != "yes"; then as_fn_error $? "GeoIP fallback headers are only usable with dynamic load option set: --with-geoip-dynamic" "$LINENO" 5 fi if test -n "$GEOIP_INCLUDE_DIR"; then as_fn_error $? "GeoIP include files location already set by --with-geoip-headers, skip fallback" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP fallback headers activated" >&5 $as_echo "*** GeoIP fallback headers activated" >&6; } GEOIP_INCLUDE_DIR="external-fallback/GeoIP" GEOIP_INCLUDE_VERSION=$(cat external-fallback/GeoIP/VERSION-GeoIP) fi fi if test -n "$GEOIP_INCLUDE_DIR"; then GEOIP_INCLUDE="-I$GEOIP_INCLUDE_DIR" if echo "$GEOIP_INCLUDE_DIR" | grep -q "^/"; then # absolute path GEOIP_INCLUDE_L1="-I$GEOIP_INCLUDE_DIR" GEOIP_INCLUDE_L2="-I$GEOIP_INCLUDE_DIR" else GEOIP_INCLUDE_L1="-I../$GEOIP_INCLUDE_DIR" GEOIP_INCLUDE_L2="-I../../$GEOIP_INCLUDE_DIR" fi fi # Check whether --with-geoip-lib was given. if test "${with_geoip_lib+set}" = set; then : withval=$with_geoip_lib; if test -d "$with_geoip_lib"; then GEOIP_LIB_DIR="$with_geoip_lib" GEOIP_LIB="-L$GEOIP_LIB_DIR $GEOIP_LIB" { $as_echo "$as_me:${as_lineno-$LINENO}: result: GeoIP library directory given: $GEOIP_LIB_DIR" >&5 $as_echo "GeoIP library directory given: $GEOIP_LIB_DIR" >&6; } else as_fn_error $? "GeoIP library directory not found: $with_geoip_lib" "$LINENO" 5 fi if echo "$GEOIP_LIB_DIR" | grep -q "^/"; then # absolute path GEOIP_LIB_L1="-L$GEOIP_LIB_DIR" GEOIP_LIB_L2="-L$GEOIP_LIB_DIR" LD_LIBRARY_PATH=$GEOIP_LIB_DIR:$LD_LIBRARY_PATH else GEOIP_LIB_L1="-L../$GEOIP_LIB_DIR" GEOIP_LIB_L2="-L../../$GEOIP_LIB_DIR" LD_LIBRARY_PATH=../$GEOIP_LIB_DIR:$LD_LIBRARY_PATH fi fi # must be tested #AC_ARG_WITH([geoip-lib-name], # AS_HELP_STRING([--with-geoip-lib-name=NAME], # [GeoIP library name]), # [ # GEOIP_LIB_NAME="$with_geoip_lib_name" # GEOIP_LIB="-l$GEOIP_LIB_NAME $GEOIP_LIB" # AC_MSG_RESULT([GeoIP library name given: $GEOIP_LIB_NAME]) # ],[ # ]) # Check whether --with-geoip-static was given. if test "${with_geoip_static+set}" = set; then : withval=$with_geoip_static; if test "$with_geoip_static" != "no"; then GEOIP_STATIC="$with_geoip_static" GEOIP_LIB="-Wl,-Bstatic $GEOIP_LIB -Wl,-Bdynamic" fi else GEOIP_STATIC="no" fi # Check whether --with-geoip-db was given. if test "${with_geoip_db+set}" = set; then : withval=$with_geoip_db; geoip_db="$with_geoip_db" else geoip_db=$geoip_db_default fi # Check whether --with-geoip-dyn-lib was given. if test "${with_geoip_dyn_lib+set}" = set; then : withval=$with_geoip_dyn_lib; geoip_dyn_lib="$with_geoip_dyn_lib" else geoip_dyn_lib=$geoip_dyn_lib_default fi # Check whether --with-geoip-ipv6-compat was given. if test "${with_geoip_ipv6_compat+set}" = set; then : withval=$with_geoip_ipv6_compat; if test "$with_geoip_ipv6_compat" != "no"; then GEOIP_COMPAT="yes", fi else GEOIP_COMPAT="no" fi # Automagic enable GeoIP if dynamic load is available (TODO: enable later by default??) #if test "$DYNAMIC_LOAD" = "yes"; then # if test "$GEOIP_DYN" = "no"; then # true # else # AC_CHECK_HEADER(GeoIP.h, # [ # AC_MSG_RESULT(["*** GeoIP library header files found and dynamic library support enabled, enable GeoIP"]) # GEOIP="yes" # GEOIP_DYN="yes" # ], # [ # ]) # fi #fi if test "$GEOIP" = "yes"; then if test "$GEOIP_DYN" != "yes"; then GEOIP_LIB="-l$GEOIP_LIB_NAME $GEOIP_LIB" GEOIP_LIB_L1="-l$GEOIP_LIB_NAME $GEOIP_LIB_L1" GEOIP_LIB_L2="-l$GEOIP_LIB_NAME $GEOIP_LIB_L2" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP dynamic load support enabled, disable GeoIP linker options" >&5 $as_echo "*** GeoIP dynamic load support enabled, disable GeoIP linker options" >&6; } fi CPPFLAGS="$CPPLAGS $GEOIP_INCLUDE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP support requested" >&5 $as_echo "*** GeoIP support requested" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CPPFLAGS=$CPPFLAGS" >&5 $as_echo "***** CPPFLAGS=$CPPFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CFLAGS =$CFLAGS" >&5 $as_echo "***** CFLAGS =$CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** LDFLAGS =$LDFLAGS" >&5 $as_echo "***** LDFLAGS =$LDFLAGS" >&6; } ac_fn_c_check_header_mongrel "$LINENO" "GeoIP.h" "ac_cv_header_GeoIP_h" "$ac_includes_default" if test "x$ac_cv_header_GeoIP_h" = xyes; then : if test -n "$GEOIP_INCLUDE_DIR"; then if test -e "$GEOIP_INCLUDE_DIR/GeoIP.h"; then CPPFLAGS="$CPPFLAGS -include $GEOIP_INCLUDE_DIR/GeoIP.h" else as_fn_error $? "GeoIP library header file not found: $GEOIP_INCLUDE_DIR/GeoIP.h" "$LINENO" 5 fi else CPPFLAGS="$CPPFLAGS -include GeoIP.h" fi ac_fn_c_check_decl "$LINENO" "GeoIP_open" "ac_cv_have_decl_GeoIP_open" "$ac_includes_default" if test "x$ac_cv_have_decl_GeoIP_open" = xyes; then : else as_fn_error $? "GeoIP library header file misses GeoIP_open" "$LINENO" 5 fi ac_fn_c_check_decl "$LINENO" "GeoIP_country_code_by_ipnum_v6" "ac_cv_have_decl_GeoIP_country_code_by_ipnum_v6" "$ac_includes_default" if test "x$ac_cv_have_decl_GeoIP_country_code_by_ipnum_v6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_COUNTRY_CODE_BY_IPNUM_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GeoIP_lib_version" "ac_cv_have_decl_GeoIP_lib_version" "$ac_includes_default" if test "x$ac_cv_have_decl_GeoIP_lib_version" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_LIB_VERSION $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GeoIP_country_code_by_addr_v6" "ac_cv_have_decl_GeoIP_country_code_by_addr_v6" "$ac_includes_default" if test "x$ac_cv_have_decl_GeoIP_country_code_by_addr_v6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_COUNTRY_CODE_BY_ADDR_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GeoIP_country_name_by_addr_v6" "ac_cv_have_decl_GeoIP_country_name_by_addr_v6" "$ac_includes_default" if test "x$ac_cv_have_decl_GeoIP_country_name_by_addr_v6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_COUNTRY_NAME_BY_ADDR_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GeoIP_cleanup" "ac_cv_have_decl_GeoIP_cleanup" "$ac_includes_default" if test "x$ac_cv_have_decl_GeoIP_cleanup" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_CLEANUP $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_LARGE_COUNTRY_EDITION" "ac_cv_have_decl_GEOIP_LARGE_COUNTRY_EDITION" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_LARGE_COUNTRY_EDITION" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_LARGE_COUNTRY_EDITION $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_LARGE_COUNTRY_EDITION_V6" "ac_cv_have_decl_GEOIP_LARGE_COUNTRY_EDITION_V6" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_LARGE_COUNTRY_EDITION_V6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_LARGE_COUNTRY_EDITION_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_CITY_EDITION_REV0_V6" "ac_cv_have_decl_GEOIP_CITY_EDITION_REV0_V6" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_CITY_EDITION_REV0_V6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_CITY_EDITION_REV0_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_CITY_EDITION_REV1_V6" "ac_cv_have_decl_GEOIP_CITY_EDITION_REV1_V6" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_CITY_EDITION_REV1_V6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_CITY_EDITION_REV1_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_ASNUM_EDITION" "ac_cv_have_decl_GEOIP_ASNUM_EDITION" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_ASNUM_EDITION" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_ASNUM_EDITION $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_ASNUM_EDITION_V6" "ac_cv_have_decl_GEOIP_ASNUM_EDITION_V6" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_ASNUM_EDITION_V6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_ASNUM_EDITION_V6 $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "GEOIP_COUNTRY_EDITION_V6" "ac_cv_have_decl_GEOIP_COUNTRY_EDITION_V6" "$ac_includes_default" if test "x$ac_cv_have_decl_GEOIP_COUNTRY_EDITION_V6" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GEOIP_COUNTRY_EDITION_V6 $ac_have_decl _ACEOF cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ geoipv6_t a; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: typedef geoipv6_t defined" >&5 $as_echo "typedef geoipv6_t defined" >&6; } $as_echo "#define SUPPORT_GEOIP_IPV6_STRUCT 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: typedef geoipv6_t missing, enable workaround" >&5 $as_echo "$as_me: WARNING: typedef geoipv6_t missing, enable workaround" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else as_fn_error $? "GeoIP library header files not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP database directory: $geoip_db" >&5 $as_echo "*** GeoIP database directory: $geoip_db" >&6; } cat >>confdefs.h <<_ACEOF #define GEOIP_DB "$geoip_db" _ACEOF if test "$GEOIP_DYN" != "yes"; then if test "$GEOIP_STATIC" = "yes"; then $as_echo "#define SUPPORT_GEOIP_STATIC 1" >>confdefs.h fi CPPFLAGS="$CFLAGS" if test -n "$GEOIP_LIB_DIR"; then if test -e "$GEOIP_LIB_DIR/lib$GEOIP_LIB_NAME.so"; then LDFLAGS="$LDFLAGS -L$GEOIP_LIB_DIR" CFLAGS="$CFLAGS -L$GEOIP_LIB_DIR" LIBS="-L$GEOIP_LIB_DIR" else as_fn_error $? "GeoIP library file not found: $GEOIP_INCLUDE_DIR/lib$GEOIP_LIB_NAME.so" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CPPFLAGS=$CPPFLAGS" >&5 $as_echo "***** CPPFLAGS=$CPPFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** CFLAGS =$CFLAGS" >&5 $as_echo "***** CFLAGS =$CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** LDFLAGS =$LDFLAGS" >&5 $as_echo "***** LDFLAGS =$LDFLAGS" >&6; } as_ac_Lib=`$as_echo "ac_cv_lib_$GEOIP_LIB_NAME''_GeoIP_open" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_open in -l$GEOIP_LIB_NAME" >&5 $as_echo_n "checking for GeoIP_open in -l$GEOIP_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$GEOIP_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GeoIP_open (); int main () { return GeoIP_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_GEOIP 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP support enabled" >&5 $as_echo "*** GeoIP support enabled" >&6; } else as_fn_error $? "GeoIP library header files given but the library was not found, LDFLAGS=$LDFLAGS" "$LINENO" 5 fi as_ac_Lib=`$as_echo "ac_cv_lib_$GEOIP_LIB_NAME''_GeoIP_country_code_by_ipnum_v6" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_country_code_by_ipnum_v6 in -l$GEOIP_LIB_NAME" >&5 $as_echo_n "checking for GeoIP_country_code_by_ipnum_v6 in -l$GEOIP_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$GEOIP_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GeoIP_country_code_by_ipnum_v6 (); int main () { return GeoIP_country_code_by_ipnum_v6 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_GEOIP_V6 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP IPv6 support enabled" >&5 $as_echo "*** GeoIP IPv6 support enabled" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GeoIP library file were found but not supporting IPv6 (upgrade to GeoIP 1.4.5 or newer for enabling IPv6 support)" >&5 $as_echo "$as_me: WARNING: GeoIP library file were found but not supporting IPv6 (upgrade to GeoIP 1.4.5 or newer for enabling IPv6 support)" >&2;} fi if test "$GEOIP_COMPAT" = "no"; then as_ac_Lib=`$as_echo "ac_cv_lib_$GEOIP_LIB_NAME''_GeoIP_lib_version" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_lib_version in -l$GEOIP_LIB_NAME" >&5 $as_echo_n "checking for GeoIP_lib_version in -l$GEOIP_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$GEOIP_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GeoIP_lib_version (); int main () { return GeoIP_lib_version (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_GEOIP_LIB_VERSION 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GeoIP library header files were found but not supporting GeoIP_lib_version (upgrade to newer version for support)." >&5 $as_echo "$as_me: WARNING: GeoIP library header files were found but not supporting GeoIP_lib_version (upgrade to newer version for support)." >&2;} fi as_ac_Lib=`$as_echo "ac_cv_lib_$GEOIP_LIB_NAME''_GeoIP_country_code_by_addr_v6" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_country_code_by_addr_v6 in -l$GEOIP_LIB_NAME" >&5 $as_echo_n "checking for GeoIP_country_code_by_addr_v6 in -l$GEOIP_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$GEOIP_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GeoIP_country_code_by_addr_v6 (); int main () { return GeoIP_country_code_by_addr_v6 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GeoIP library header files were found but not supporting GeoIP_country_code_by_addr_v6 (will use workaround)." >&5 $as_echo "$as_me: WARNING: GeoIP library header files were found but not supporting GeoIP_country_code_by_addr_v6 (will use workaround)." >&2;} fi as_ac_Lib=`$as_echo "ac_cv_lib_$GEOIP_LIB_NAME''_GeoIP_country_name_by_addr_v6" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_country_name_by_addr_v6 in -l$GEOIP_LIB_NAME" >&5 $as_echo_n "checking for GeoIP_country_name_by_addr_v6 in -l$GEOIP_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$GEOIP_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GeoIP_country_name_by_addr_v6 (); int main () { return GeoIP_country_name_by_addr_v6 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GeoIP library header files were found but not supporting GeoIP_country_name_by_addr_v6 (will use workaround)." >&5 $as_echo "$as_me: WARNING: GeoIP library header files were found but not supporting GeoIP_country_name_by_addr_v6 (will use workaround)." >&2;} fi as_ac_Lib=`$as_echo "ac_cv_lib_$GEOIP_LIB_NAME''_GeoIP_cleanup" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_cleanup in -l$GEOIP_LIB_NAME" >&5 $as_echo_n "checking for GeoIP_cleanup in -l$GEOIP_LIB_NAME... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$GEOIP_LIB_NAME $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GeoIP_cleanup (); int main () { return GeoIP_cleanup (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : $as_echo "#define SUPPORT_GEOIP_CLEANUP 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GeoIP library header files were found but not supporting GeoIP_cleanup (will use workaround)." >&5 $as_echo "$as_me: WARNING: GeoIP library header files were found but not supporting GeoIP_cleanup (will use workaround)." >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GeoIP IPv6 support compatibility mode enabled (supporting 1.4.5)." >&5 $as_echo "$as_me: WARNING: GeoIP IPv6 support compatibility mode enabled (supporting 1.4.5)." >&2;} fi else # wrapper detects by itself the real support { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP dyn lib: $geoip_dyn_lib" >&5 $as_echo "*** GeoIP dyn lib: $geoip_dyn_lib" >&6; } cat >>confdefs.h <<_ACEOF #define GEOIP_DYN_LIB "$geoip_dyn_lib" _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP support will be implemented by using dynamic load of library" >&5 $as_echo "*** GeoIP support will be implemented by using dynamic load of library" >&6; } $as_echo "#define SUPPORT_GEOIP 1" >>confdefs.h $as_echo "#define SUPPORT_GEOIP_V6 1" >>confdefs.h $as_echo "#define SUPPORT_GEOIP_DYN 1" >>confdefs.h fi fi GEOIP_DB=$geoip_db if test -n "$GEOIP_INCLUDE_VERSION"; then cat >>confdefs.h <<_ACEOF #define GEOIP_INCLUDE_VERSION "$GEOIP_INCLUDE_VERSION" _ACEOF fi if test "$DYNAMIC_LOAD" = "yes"; then if test "$GEOIP_DYN" = "yes" -o "$IP2LOCATION_DYN" = "yes"; then DYNAMIC_LOAD="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Dynamic loading of libraries is ENABLED" >&5 $as_echo "*** Dynamic loading of libraries is ENABLED" >&6; } DYNLOAD_LIB="-rdynamic -ldl" fi fi if test "$require_libdb" = "yes"; then ac_fn_c_check_header_mongrel "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default" if test "x$ac_cv_header_db_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for db_create in -ldb" >&5 $as_echo_n "checking for db_create in -ldb... " >&6; } if ${ac_cv_lib_db_db_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldb $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char db_create (); int main () { return db_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_db_db_create=yes else ac_cv_lib_db_db_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_db_db_create" >&5 $as_echo "$ac_cv_lib_db_db_create" >&6; } if test "x$ac_cv_lib_db_db_create" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Berkeley DB library found and usable" >&5 $as_echo "*** Berkeley DB library found and usable" >&6; } else as_fn_error $? "Berkeley DB library file misses db_create" "$LINENO" 5 fi else as_fn_error $? "Berkeley DB library header files not found (perhaps missing db4-devel/libdb-devel package)" "$LINENO" 5 fi LDFLAGS_EXTRA="$LDFLAGS_EXTRA -ldb" $as_echo "#define HAVE_BERKELEY_DB_SUPPORT 1" >>confdefs.h fi # Check whether --enable-mod_ipv6calc was given. if test "${enable_mod_ipv6calc+set}" = set; then : enableval=$enable_mod_ipv6calc; ENABLE_MOD_IPV6CALC="1" else ENABLE_MOD_IPV6CALC="0" fi # Check whether --with-apxs was given. if test "${with_apxs+set}" = set; then : withval=$with_apxs; APXS="$with_apxs" fi if test "$ENABLE_MOD_IPV6CALC" = "1"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Build of mod_ipv6calc enabled" >&5 $as_echo "Build of mod_ipv6calc enabled" >&6; } if test -z "$APXS"; then for ac_prog in apxs2 apxs do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_APXS+:} false; then : $as_echo_n "(cached) " >&6 else case $APXS in [\\/]* | ?:[\\/]*) ac_cv_path_APXS="$APXS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/local/apache/bin:/usr/sbin" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_APXS="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi APXS=$ac_cv_path_APXS if test -n "$APXS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $APXS" >&5 $as_echo "$APXS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$APXS" && break done fi if test -z "$APXS"; then as_fn_error $? "No APXS binary found: cannot create Apache module - missing httpd-devel?" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: APXS binary found: $APXS" >&5 $as_echo "APXS binary found: $APXS" >&6; } # partially taken from configure.ac from mod_wsgi { $as_echo "$as_me:${as_lineno-$LINENO}: checking Apache version" >&5 $as_echo_n "checking Apache version... " >&6; } HTTPD="`${APXS} -q SBINDIR`/`${APXS} -q TARGET`" HTTPD_INCLUDEDIR="`${APXS} -q INCLUDEDIR`" if test -x ${HTTPD}; then HTTPD_VERSION=`${HTTPD} -v | awk '/version/ {print $3}' \ | awk -F/ '{print $2}'` else if test -f ${HTTPD_INCLUDEDIR}/ap_release.h; then HTTPD_VERSION=`grep '^#define AP_SERVER_MAJORVERSION_NUMBER ' \ ${HTTPD_INCLUDEDIR}/ap_release.h | sed -e \ 's/^#define AP_SERVER_MAJORVERSION_NUMBER \([0-9]\).*/\1.X/'` else if test -f ${HTTPD_INCLUDEDIR}/httpd.h; then HTTPD_VERSION=`grep '^#define APACHE_RELEASE ' \ ${HTTPD_INCLUDEDIR}/httpd.h | sed -e \ 's/^#define APACHE_RELEASE \([0-9]\).*/\1.X/'` else HTTPD_VERSION="2.?" fi fi fi HTTPD_LIBEXECDIR="`${APXS} -q libexecdir`" if test -z "$HTTPD_LIBEXECDIR"; then as_fn_error $? "${APXS} cannot retrieve libexecdir" "$LINENO" 5 fi HTTPD_SYSCONFDIR="`${APXS} -q sysconfdir`" if test -z "$HTTPD_SYSCONFDIR"; then as_fn_error $? "${APXS} cannot retrieve sysconfdir" "$LINENO" 5 fi if test -n "$HTTPD_SYSCONFDIR"; then HTTPD_SYSCONFDIR="$HTTPD_SYSCONFDIR.d" fi if test -n "$HTTPD_VERSION"; then HTTPD_VERSION_MAJOR_MINOR=`echo "$HTTPD_VERSION" | awk -F. '{ print $1 "." $2 }'` fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Build of mod_ipv6calc NOT enabled" >&5 $as_echo "$as_me: WARNING: Build of mod_ipv6calc NOT enabled" >&2;} fi ac_config_files="$ac_config_files Makefile md5/Makefile tools/Makefile getopt/Makefile ipv6calc/Makefile lib/Makefile man/Makefile databases/lib/Makefile ipv6logconv/Makefile ipv6loganon/Makefile ipv6logstats/Makefile ipv6calcweb/Makefile contrib/ipv6calc.spec tools/ipv6calc-db-update.sh tools/DBIP-update.sh tools/IP2Location-update.sh tools/GeoIP-update.sh mod_ipv6calc/Makefile VERSION" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by ipv6calc $as_me 1.0.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to . ipv6calc home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ ipv6calc config.status 1.0.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "md5/Makefile") CONFIG_FILES="$CONFIG_FILES md5/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "getopt/Makefile") CONFIG_FILES="$CONFIG_FILES getopt/Makefile" ;; "ipv6calc/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6calc/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "databases/lib/Makefile") CONFIG_FILES="$CONFIG_FILES databases/lib/Makefile" ;; "ipv6logconv/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6logconv/Makefile" ;; "ipv6loganon/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6loganon/Makefile" ;; "ipv6logstats/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6logstats/Makefile" ;; "ipv6calcweb/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6calcweb/Makefile" ;; "contrib/ipv6calc.spec") CONFIG_FILES="$CONFIG_FILES contrib/ipv6calc.spec" ;; "tools/ipv6calc-db-update.sh") CONFIG_FILES="$CONFIG_FILES tools/ipv6calc-db-update.sh" ;; "tools/DBIP-update.sh") CONFIG_FILES="$CONFIG_FILES tools/DBIP-update.sh" ;; "tools/IP2Location-update.sh") CONFIG_FILES="$CONFIG_FILES tools/IP2Location-update.sh" ;; "tools/GeoIP-update.sh") CONFIG_FILES="$CONFIG_FILES tools/GeoIP-update.sh" ;; "mod_ipv6calc/Makefile") CONFIG_FILES="$CONFIG_FILES mod_ipv6calc/Makefile" ;; "VERSION") CONFIG_FILES="$CONFIG_FILES VERSION" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ***** Summary" >&5 $as_echo "***** Summary" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION =$IP2LOCATION" >&5 $as_echo "*** IP2LOCATION =$IP2LOCATION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_DB =$IP2LOCATION_DB" >&5 $as_echo "*** IP2LOCATION_DB =$IP2LOCATION_DB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_DYN =$IP2LOCATION_DYN" >&5 $as_echo "*** IP2LOCATION_DYN =$IP2LOCATION_DYN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_DYN_LIB =$ip2location_dyn_lib" >&5 $as_echo "*** IP2LOCATION_DYN_LIB =$ip2location_dyn_lib" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_INCLUDE =$IP2LOCATION_INCLUDE" >&5 $as_echo "*** IP2LOCATION_INCLUDE =$IP2LOCATION_INCLUDE" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_INCLUDE_VERSION=$IP2LOCATION_INCLUDE_VERSION" >&5 $as_echo "*** IP2LOCATION_INCLUDE_VERSION=$IP2LOCATION_INCLUDE_VERSION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_LIB =$IP2LOCATION_LIB" >&5 $as_echo "*** IP2LOCATION_LIB =$IP2LOCATION_LIB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_LIB_NAME =$IP2LOCATION_LIB_NAME" >&5 $as_echo "*** IP2LOCATION_LIB_NAME =$IP2LOCATION_LIB_NAME" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_LIB_DIR =$IP2LOCATION_LIB_DIR" >&5 $as_echo "*** IP2LOCATION_LIB_DIR =$IP2LOCATION_LIB_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_IPV6_COMPAT =$IP2LOCATION_IPV6_COMPAT" >&5 $as_echo "*** IP2LOCATION_IPV6_COMPAT =$IP2LOCATION_IPV6_COMPAT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2LOCATION_ALL_COMPAT =$IP2LOCATION_ALL_COMPAT" >&5 $as_echo "*** IP2LOCATION_ALL_COMPAT =$IP2LOCATION_ALL_COMPAT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP =$GEOIP" >&5 $as_echo "*** GEOIP =$GEOIP" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_DB =$GEOIP_DB" >&5 $as_echo "*** GEOIP_DB =$GEOIP_DB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_DYN =$GEOIP_DYN" >&5 $as_echo "*** GEOIP_DYN =$GEOIP_DYN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_DYN_LIB =$geoip_dyn_lib" >&5 $as_echo "*** GEOIP_DYN_LIB =$geoip_dyn_lib" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_INCLUDE =$GEOIP_INCLUDE" >&5 $as_echo "*** GEOIP_INCLUDE =$GEOIP_INCLUDE" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_INCLUDE_VERSION =$GEOIP_INCLUDE_VERSION" >&5 $as_echo "*** GEOIP_INCLUDE_VERSION =$GEOIP_INCLUDE_VERSION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_LIB =$GEOIP_LIB" >&5 $as_echo "*** GEOIP_LIB =$GEOIP_LIB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_LIB_NAME =$GEOIP_LIB_NAME" >&5 $as_echo "*** GEOIP_LIB_NAME =$GEOIP_LIB_NAME" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GEOIP_LIB_DIR =$GEOIP_LIB_DIR" >&5 $as_echo "*** GEOIP_LIB_DIR =$GEOIP_LIB_DIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DBIP =$DBIP" >&5 $as_echo "*** DBIP =$DBIP" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DBIP_DB =$DBIP_DB" >&5 $as_echo "*** DBIP_DB =$DBIP_DB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** EXTERNAL =$EXTERNAL" >&5 $as_echo "*** EXTERNAL =$EXTERNAL" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** EXTERNAL_DB =$EXTERNAL_DB" >&5 $as_echo "*** EXTERNAL_DB =$EXTERNAL_DB" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** BUILTIN =$BUILTIN" >&5 $as_echo "*** BUILTIN =$BUILTIN" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DB_IPV4 =$DB_IPV4" >&5 $as_echo "*** DB_IPV4 =$DB_IPV4" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DB_IPV6 =$DB_IPV6" >&5 $as_echo "*** DB_IPV6 =$DB_IPV6" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DB_IEEE =$DB_IEEE" >&5 $as_echo "*** DB_IEEE =$DB_IEEE" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DB_AS_REG =$DB_AS_REG" >&5 $as_echo "*** DB_AS_REG =$DB_AS_REG" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DB_CC_REG =$DB_CC_REG" >&5 $as_echo "*** DB_CC_REG =$DB_CC_REG" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CC =$CC" >&5 $as_echo "*** CC =$CC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS_EXTRA =$CFLAGS_EXTRA" >&5 $as_echo "*** CFLAGS_EXTRA =$CFLAGS_EXTRA" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** LDFLAGS_EXTRA =$LDFLAGS_EXTRA" >&5 $as_echo "*** LDFLAGS_EXTRA =$LDFLAGS_EXTRA" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** LD_LIBRARY_PATH =$LD_LIBRARY_PATH" >&5 $as_echo "*** LD_LIBRARY_PATH =$LD_LIBRARY_PATH" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** LD_LIBRARY_PATH_BASIC =$LD_LIBRARY_PATH_BASIC" >&5 $as_echo "*** LD_LIBRARY_PATH_BASIC =$LD_LIBRARY_PATH_BASIC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CPPLAGS =$CPPLAGS" >&5 $as_echo "*** CPPLAGS =$CPPLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS =$CFLAGS" >&5 $as_echo "*** CFLAGS =$CFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** LDFLAGS =$LDFLAGS" >&5 $as_echo "*** LDFLAGS =$LDFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** PACKAGE_VERSION_NUMERIC =$PACKAGE_VERSION_NUMERIC" >&5 $as_echo "*** PACKAGE_VERSION_NUMERIC =$PACKAGE_VERSION_NUMERIC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** PACKAGE_VERSION_STRING =$PACKAGE_VERSION_STRING" >&5 $as_echo "*** PACKAGE_VERSION_STRING =$PACKAGE_VERSION_STRING" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** API_VERSION_NUMERIC =$API_VERSION_NUMERIC" >&5 $as_echo "*** API_VERSION_NUMERIC =$API_VERSION_NUMERIC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** API_VERSION_STRING =$API_VERSION_STRING" >&5 $as_echo "*** API_VERSION_STRING =$API_VERSION_STRING" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** ENABLE_MOD_IPV6CALC =$ENABLE_MOD_IPV6CALC" >&5 $as_echo "*** ENABLE_MOD_IPV6CALC =$ENABLE_MOD_IPV6CALC" >&6; } if test "$ENABLE_MOD_IPV6CALC" = "1"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** APXS =$APXS" >&5 $as_echo "*** APXS =$APXS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** HTTPD_SYSCONFDIR =$HTTPD_SYSCONFDIR" >&5 $as_echo "*** HTTPD_SYSCONFDIR =$HTTPD_SYSCONFDIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** HTTPD_LIBEXECDIR =$HTTPD_LIBEXECDIR" >&5 $as_echo "*** HTTPD_LIBEXECDIR =$HTTPD_LIBEXECDIR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** HTTPD_VERSION =$HTTPD_VERSION" >&5 $as_echo "*** HTTPD_VERSION =$HTTPD_VERSION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** HTTPD_VERSION_MAJOR_MINOR =$HTTPD_VERSION_MAJOR_MINOR" >&5 $as_echo "*** HTTPD_VERSION_MAJOR_MINOR =$HTTPD_VERSION_MAJOR_MINOR" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** LDFLAGS_EXTRA_MOD_IPV6CALC =$LDFLAGS_EXTRA_MOD_IPV6CALC" >&5 $as_echo "*** LDFLAGS_EXTRA_MOD_IPV6CALC =$LDFLAGS_EXTRA_MOD_IPV6CALC" >&6; } fi ipv6calc-1.0.0/configure.in000066400000000000000000001224261312366535500155500ustar00rootroot00000000000000dnl Project : ipv6calc dnl File : configure.in dnl Version : $Id: 405902326e309a2f51709d2b4c889edcfaab021f $ dnl Copyright: 2001-2017 by Peter Bieringer dnl Process this file with autoconf to produce a configure script. AC_INIT(ipv6calc, 1.0.0, ipv6calc@deepspace6.net, ipv6calc, http://www.deepspace6.net/projects/ipv6calc.html) COPYRIGHT_YEAR=2017 dnl Program/library version (align with version above) PACKAGE_VERSION_MAJOR=1 PACKAGE_VERSION_MINOR=0 PACKAGE_VERSION_BUGFIX=0 dnl API version API_VERSION_MAJOR=1 API_VERSION_MINOR=0 API_VERSION_BUGFIX=0 dnl Generic data definitions AC_SUBST(COPYRIGHT_YEAR) AC_DEFINE_UNQUOTED(COPYRIGHT_YEAR, "$COPYRIGHT_YEAR", [Copyright year]) dnl Program/library version variants PACKAGE_VERSION_NUMERIC=$(echo "$PACKAGE_VERSION_MAJOR $PACKAGE_VERSION_MINOR $PACKAGE_VERSION_BUGFIX" | awk '{ print ( $1 * 1000 + $2 ) * 1000 + $3 }') PACKAGE_VERSION_STRING=$(echo "$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_BUGFIX") AC_DEFINE_UNQUOTED(IPV6CALC_PACKAGE_VERSION_MAJOR, $PACKAGE_VERSION_MAJOR , "Package version Major") AC_DEFINE_UNQUOTED(IPV6CALC_PACKAGE_VERSION_MINOR, $PACKAGE_VERSION_MINOR , "Package version Minor") AC_DEFINE_UNQUOTED(IPV6CALC_PACKAGE_VERSION_BUGFIX, $PACKAGE_VERSION_BUGFIX , "Package version Bugfix") AC_DEFINE_UNQUOTED(IPV6CALC_PACKAGE_VERSION_STRING, "$PACKAGE_VERSION_STRING", "Package version as string") AC_DEFINE_UNQUOTED(IPV6CALC_PACKAGE_VERSION_NUMERIC, $PACKAGE_VERSION_NUMERIC , "Package version numeric") dnl API version variants API_VERSION_NUMERIC=$(echo "$API_VERSION_MAJOR $API_VERSION_MINOR $API_VERSION_BUGFIX" | awk '{ print ( $1 * 1000 + $2 ) * 1000 + $3 }') API_VERSION_STRING=$(echo "$API_VERSION_MAJOR.$API_VERSION_MINOR.$API_VERSION_BUGFIX") AC_DEFINE_UNQUOTED(IPV6CALC_API_VERSION_MAJOR, $API_VERSION_MAJOR , "API version Major") AC_DEFINE_UNQUOTED(IPV6CALC_API_VERSION_MINOR, $API_VERSION_MINOR , "API version Minor") AC_DEFINE_UNQUOTED(IPV6CALC_API_VERSION_BUGFIX, $API_VERSION_BUGFIX , "API version Bugfix") AC_DEFINE_UNQUOTED(IPV6CALC_API_VERSION_STRING, "$API_VERSION_STRING", "API version as string") AC_DEFINE_UNQUOTED(IPV6CALC_API_VERSION_NUMERIC, $API_VERSION_NUMERIC , "API version numeric") dnl Define version header AC_CONFIG_HEADER(config.h) dnl Checks for programs. AC_PROG_AWK AC_PROG_CC dnl AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_MAKE_SET dnl Checks for header files. AC_HEADER_STDC dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_OFF_T AC_TYPE_SIZE_T AC_C_BIGENDIAN dnl Checks for library functions. AC_FUNC_MEMCMP AC_CHECK_FUNCS(strspn strstr) dnl ************************************************* dnl check for compiler options -Werror -Werror=format-security dnl ************************************************* AC_ARG_ENABLE([compiler-warning-to-error], AS_HELP_STRING([--disable-compiler-warning-to-error], [Disable extra CFLAGS for mapping warnings to errors during compilation]), [ ],[ AC_MSG_RESULT([*** check for CFLAGS: -Werror=format-security]) CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wformat -Werror -Werror=format-security" AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[int a=1;]]) ], [ AC_MSG_RESULT([*** CFLAGS supported: -Werror=format-security]) CFLAGS_EXTRA="-Wformat -Werror -Werror=format-security" ], [ AC_MSG_WARN([*** missing CFLAGS support: -Werror=format-security]) CFLAGS_EXTRA="-Wformat" ]) CFLAGS="$CFLAGS_SAVE" AC_MSG_RESULT([*** check for CFLAGS: -Wsizeof-array-argument]) CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wsizeof-array-argument" AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[int a=1;]]) ], [ AC_MSG_RESULT([*** CFLAGS supported: -Wsizeof-array-argument]) CFLAGS_EXTRA="$CFLAGS_EXTRA -Wsizeof-array-argument" ], [ AC_MSG_WARN([*** missing CFLAGS support: -Wsizeof-array-argument]) ]) CFLAGS="$CFLAGS_SAVE" AC_MSG_RESULT([*** check for CFLAGS: -Wparentheses-equality]) CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wparentheses-equality" AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[int a=1;]]) ], [ AC_MSG_RESULT([*** CFLAGS supported: -Wparentheses-equality]) CFLAGS_EXTRA="$CFLAGS_EXTRA -Wparentheses-equality" ], [ AC_MSG_WARN([*** missing CFLAGS support: -Wparentheses-equality]) ]) CFLAGS="$CFLAGS_SAVE" AC_MSG_RESULT([*** check for CFLAGS: -Wextra]) CFLAGS_SAVE="$CFLAGS" CFLAGS="$CFLAGS -Wextra" AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[int a=1;]]) ], [ AC_MSG_RESULT([*** CFLAGS supported: -Wextra]) CFLAGS_EXTRA="$CFLAGS_EXTRA -Wextra" ], [ AC_MSG_WARN([*** missing CFLAGS support: -Wextra]) ]) CFLAGS="$CFLAGS_SAVE" ]) dnl ************************************************* dnl add -Wno-unused-const-variable if supported dnl ************************************************* dnl AC_MSG_RESULT([*** check for CFLAGS: -Wno-unused-const-variable]) dnl CFLAGS_SAVE="$CFLAGS" dnl CFLAGS="$CFLAGS -Wno-unused-const-variable" dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM( dnl [[int a=1;]]) dnl ], dnl [ dnl AC_MSG_RESULT([*** CFLAGS supported: -Wno-unused-const-variable]) dnl CFLAGS_EXTRA="-Wno-unused-const-variable" dnl ], dnl [ dnl AC_MSG_WARN([*** missing CFLAGS support: -Wno-unused-const-variable]) dnl CFLAGS_EXTRA="-Wformat" dnl ]) dnl CFLAGS="$CFLAGS_SAVE" dnl ************************************************* dnl getopt library dnl ************************************************* AC_ARG_ENABLE( [bundled-getopt], AS_HELP_STRING([--enable-bundled-getopt], [Enable bundled getopt library (default: autoselected)]), [ if test "$enable_bundled_getopt" = "yes"; then AC_MSG_RESULT([*** use of bundled getopt library forced]) ENABLE_BUNDLED_GETOPT=1 else AC_MSG_RESULT([*** use of system getopt library forced]) fi ], [ AC_CHECK_FUNC(getopt_long, [ AC_MSG_RESULT([*** use of system getopt library autoselected]) ], [ AC_MSG_RESULT([*** use of bundled getopt library autoselected]) ENABLE_BUNDLED_GETOPT=1 ]) ]) if test "$ENABLE_BUNDLED_GETOPT" = "1"; then AC_LIBOBJ(../getopt/getopt) AC_LIBOBJ(../getopt/getopt1) GETOPT_INCLUDE=-I../getopt AC_DEFINE(ENABLE_BUNDLED_GETOPT, 1, Define if bundled GETOPT should be used) fi AC_SUBST(GETOPT_INCLUDE) AC_SUBST(ENABLE_BUNDLED_GETOPT) dnl ************************************************* dnl MD5 library dnl ************************************************* AC_ARG_ENABLE( [bundled-md5], AS_HELP_STRING([--enable-bundled-md5], [Enable bundled MD5 library (default: autoselected)]), [ if test "$enable_bundled_md5" = "yes"; then AC_MSG_RESULT([*** use of bundled MD5 library forced]) ENABLE_BUNDLED_MD5=1 else AC_MSG_RESULT([*** use of system MD5 library forced]) fi ], [ AC_CHECK_HEADER(openssl/md5.h, [ AC_MSG_RESULT([*** openssl/md5.h header file found]) AC_CHECK_LIB(crypto, MD5_Init, [ LDFLAGS="-lcrypto $LDFLAGS" AC_CHECK_FUNCS(MD5_Init MD5_Update MD5_Final, [ md5_found="yes" ], [ ENABLE_BUNDLED_MD5=1 ]) if test "$md5_found" = "yes"; then AC_MSG_RESULT([*** use of system MD5 library autoselected]) else AC_MSG_RESULT([*** use of bundled MD5 library autoselected]) fi ], [ AC_MSG_WARN([crypto library header files were found but not supporting required MD5 functions (will use bundled MD5 function).]) ENABLE_BUNDLED_MD5=1 ]) ], [ AC_MSG_WARN([openssl/md5.h header file not found (will use bundled MD5 function).]) ENABLE_BUNDLED_MD5=1 ]) ],[ ]) if test "$ENABLE_BUNDLED_MD5" = "1"; then AC_LIBOBJ(../md5/md5) GETOPT_INCLUDE=-I../md5 AC_DEFINE(ENABLE_BUNDLED_MD5, 1, Define if bundled MD5 should be used) else LDFLAGS_EXTRA="-lcrypto $LDFLAGS_EXTRA" LDFLAGS_EXTRA_STATIC="-lcrypto -lz -ldl $LDFLAGS_EXTRA_STATIC" fi AC_SUBST(MD5_INCLUDE) AC_SUBST(ENABLE_BUNDLED_MD5) dnl ************************************************* dnl defaults dnl ************************************************* geoip_db_default="/usr/share/GeoIP" ip2location_db_default="/usr/share/IP2Location" dbip_db_default="/usr/share/DBIP" external_db_default="/usr/share/ipv6calc/db" geoip_dyn_lib_default="libGeoIP.so.1" ip2location_dyn_lib_default="libIP2Location.so" dnl ************************************************* dnl Create binaries ushing shared library dnl ************************************************* AC_ARG_ENABLE( [shared], AS_HELP_STRING([--enable-shared], [Enable shared library build (default: disabled)]) ) if test "$enable_shared" = "yes"; then AC_MSG_RESULT([*** Shared library build enabled]) SHARED_LIBRARY="yes" AC_DEFINE(SHARED_LIBRARY, 1, Define if you want ipv6calc binaries compiled with shared library libipv6calc) LDFLAGS_EXTRA_MOD_IPV6CALC="-Wl,../lib/libipv6calc.so.$PACKAGE_VERSION -Wl,../databases/lib/libipv6calc_db_wrapper.so.$PACKAGE_VERSION $LDFLAGS_EXTRA" LDFLAGS_EXTRA="../lib/libipv6calc.so.$PACKAGE_VERSION ../databases/lib/libipv6calc_db_wrapper.so.$PACKAGE_VERSION $LDFLAGS_EXTRA" LD_LIBRARY_PATH=../lib:../databases/lib:$LD_LIBRARY_PATH LD_LIBRARY_PATH_BASIC=../lib:../databases/lib:$LD_LIBRARY_PATH_BASIC else SHARED_LIBRARY="no" IPV6CALC_LIB="-L../lib/ -L../databases/lib/ -lipv6calc_db_wrapper -lipv6calc" fi AC_SUBST(SHARED_LIBRARY) AC_SUBST(IPV6CALC_LIB) dnl ************************************************* dnl Check for dynamic loading of libraries capability dnl ************************************************* AC_CHECK_HEADER(dlfcn.h, [ AC_MSG_RESULT([*** Dynamic loading of libraries is SUPPORTED]) DYNAMIC_LOAD_SUPPORT="yes" ], [ DYNAMIC_LOAD_SUPPORT="no" AC_MSG_WARN(["Dynamic loading of libraries is not supported, no header file found"]) ]) AC_ARG_ENABLE( [dynamic-load], AS_HELP_STRING([--disable-dynamic-load], [Disable dynamic load of libraries (default: enabled)]) ) if test "$enable_dynamic_load" = "yes"; then DYNAMIC_LOAD="no" else DYNAMIC_LOAD="yes" fi if test "$DYNAMIC_LOAD_SUPPORT" = "yes"; then if test "$DYNAMIC_LOAD" = "no"; then AC_MSG_WARN(["Dynamic loading of libraries forced to be disabled"]) fi fi dnl ************************************************* dnl disable built-in database IEEE dnl ************************************************* AC_ARG_ENABLE([db-ieee], AS_HELP_STRING([--disable-db-ieee], [Disable built-in IEEE database (default: enabled)]), [ DB_IEEE="$enable_db_ieee" ],[ DB_IEEE="yes" BUILTIN="yes" ]) if test "$DB_IEEE" = "yes"; then AC_DEFINE(SUPPORT_DB_IEEE, 1, Define if you want IEEE database included.) fi dnl ************************************************* dnl disable built-in database IPv4 dnl ************************************************* AC_ARG_ENABLE([db-ipv4], AS_HELP_STRING([--disable-db-ipv4], [Disable built-in IPv4-to-Registry database (default: enabled)]), [ DB_IPV4="$enable_db_ipv4" ],[ DB_IPV4="yes" BUILTIN="yes" ]) if test "$DB_IPV4" = "yes"; then AC_DEFINE(SUPPORT_DB_IPV4_REG, 1, Define if you want IPv4-to-Registry database included.) fi dnl ************************************************* dnl disable built-in database IPv6 dnl ************************************************* AC_ARG_ENABLE([db-ipv6], AS_HELP_STRING([--disable-db-ipv6], [Disable built-in IPv6-to-Registry database (default: enabled)]), [ DB_IPV6="$enable_db_ipv6" ], [ DB_IPV6="yes" BUILTIN="yes" ]) if test "$DB_IPV6" = "yes"; then AC_DEFINE(SUPPORT_DB_IPV6_REG, 1, Define if you want IPv6-to-Registry database included.) fi dnl ************************************************* dnl disable built-in database AS->Registry dnl ************************************************* AC_ARG_ENABLE([db-as-registry], AS_HELP_STRING([--disable-db-as-registry], [Disable built-in AS-to-Registry database (default: enabled)]), [ DB_AS_REG="$enable_db_as_registry" ], [ DB_AS_REG="yes" BUILTIN="yes" ]) if test "$DB_AS_REG" = "yes"; then AC_DEFINE(SUPPORT_DB_AS_REG, 1, Define if you want AS-to-Registry database included.) fi dnl ************************************************* dnl disable built-in database CC->Registry dnl ************************************************* AC_ARG_ENABLE([db-cc-registry], AS_HELP_STRING([--disable-db-cc-registry], [Disable built-in CountryCode-to-Registry database (default: enabled)]), [ DB_CC_REG="$enable_db_cc_registry" ], [ DB_CC_REG="yes" BUILTIN="yes" ]) if test "$DB_CC_REG" = "yes"; then AC_DEFINE(SUPPORT_DB_CC_REG, 1, Define if you want CC-to-Registry database included.) fi dnl ************************************************* dnl enable built-in database support in general dnl ************************************************* if test "$BUILTIN" = "yes"; then AC_DEFINE(SUPPORT_BUILTIN, 1, Define if you want general BuiltIn database included.) fi dnl ************************************************* dnl DB-IP.com support dnl ************************************************* AC_ARG_ENABLE([dbip], AS_HELP_STRING([--enable-dbip], [Enable db-ip.com support (default: disabled)]), [ DBIP="$enable_dbip" ], [ DBIP="no" ]) dnl defaults for database directories AC_ARG_WITH([dbip-db], AS_HELP_STRING([--with-dbip-db=DIR], [Use specified db-ip.com database directory, default: /usr/share/DBIP]), [ dbip_db="$with_dbip_db" ], [ dbip_db=$dbip_db_default ]) if test "$DBIP" = "yes"; then require_libdb="yes" AC_DEFINE(SUPPORT_DBIP, 1, Define if you want db-ip.com support included.) AC_MSG_RESULT([*** db-ip.com db dir: $dbip_db]) AC_DEFINE_UNQUOTED(DBIP_DB, "$dbip_db", Define db-ip.com database directory.) fi DBIP_DB=$dbip_db AC_SUBST(DBIP_DB) dnl ************************************************* dnl External ipv6calc db support dnl ************************************************* AC_ARG_ENABLE([external], AS_HELP_STRING([--enable-external], [Enable external db support (default: disabled)]), [ EXTERNAL="$enable_external" ], [ EXTERNAL="no" ]) dnl defaults for database directories AC_ARG_WITH([external-db], AS_HELP_STRING([--with-external-db=DIR], [Use specified external database directory, default: /usr/share/ipv6calc/db]), [ external_db="$with_external_db" ], [ external_db=$external_db_default ]) if test "$EXTERNAL" = "yes"; then require_libdb="yes" AC_DEFINE(SUPPORT_EXTERNAL, 1, Define if you want external support included.) AC_MSG_RESULT([*** external db dir: $dbip_db]) AC_DEFINE_UNQUOTED(EXTERNAL_DB, "$external_db", Define external database directory.) fi EXTERNAL_DB=$external_db AC_SUBST(EXTERNAL_DB) dnl ************************************************* dnl IP2Location support dnl ************************************************* IP2LOCATION_LIB_NAME="IP2Location" IP2LOCATION_INCLUDE_VERSION="" AC_ARG_ENABLE([ip2location], AS_HELP_STRING([--enable-ip2location], [Enable IP2Location support (default: disabled)]), [ IP2LOCATION="$enable_ip2location" ],[ IP2LOCATION="no" ]) AC_ARG_WITH([ip2location-dynamic], AS_HELP_STRING([--with-ip2location-dynamic], [Enable use of dynamic loading of IP2Location library (default=no)]), [ if test "$enable_ip2location_dynamic" != "no"; then IP2LOCATION_DYN="yes" fi ],[ true ]) AC_ARG_WITH([ip2location-headers], AS_HELP_STRING([--with-ip2location-headers=DIR], [IP2Location include files location]), [ IP2LOCATION_INCLUDE_DIR="$with_ip2location_headers" ]) AC_ARG_WITH([ip2location-headers-fallback], AS_HELP_STRING([--with-ip2location-headers-fallback], [IP2Location include files from internal fallback location (only usable with dynamic load option)]), [ if test "$IP2LOCATION_DYN" != "yes"; then AC_MSG_ERROR([IP2Location fallback headers are only usable with dynamic load option set: --with-ip2location-dynamic]) fi if test -n "$IP2LOCATION_INCLUDE_DIR"; then AC_MSG_ERROR([IP2Location include files location already set by --with-ip2location-headers, skip fallback]) else AC_MSG_RESULT([*** IP2Location fallback headers activated]) IP2LOCATION_INCLUDE_DIR="external-fallback/IP2Location" IP2LOCATION_INCLUDE_VERSION=$(cat external-fallback/IP2Location/VERSION-IP2Location) fi ]) if test -n "$IP2LOCATION_INCLUDE_DIR"; then IP2LOCATION_INCLUDE="-I$IP2LOCATION_INCLUDE_DIR" if test -d "$IP2LOCATION_INCLUDE_DIR/iMath"; then # include iMath where existing (API < 7.0.0) IP2LOCATION_INCLUDE="$IP2LOCATION_INCLUDE -I$IP2LOCATION_INCLUDE_DIR/iMath" fi if echo "$IP2LOCATION_INCLUDE_DIR" | grep -q "^/"; then # absolute path IP2LOCATION_INCLUDE_L1="-I$IP2LOCATION_INCLUDE_DIR" IP2LOCATION_INCLUDE_L2="-I$IP2LOCATION_INCLUDE_DIR" if test -d "$IP2LOCATION_INCLUDE_DIR/iMath"; then # include iMath where existing (API < 7.0.0) IP2LOCATION_INCLUDE_L1="$IP2LOCATION_INCLUDE_L1 -I$IP2LOCATION_INCLUDE_DIR/iMath" IP2LOCATION_INCLUDE_L2="$IP2LOCATION_INCLUDE_L2 -I$IP2LOCATION_INCLUDE_DIR/iMath" fi else IP2LOCATION_INCLUDE_L1="-I../$IP2LOCATION_INCLUDE_DIR" IP2LOCATION_INCLUDE_L2="-I../../$IP2LOCATION_INCLUDE_DIR" if test -d "$IP2LOCATION_INCLUDE_DIR/iMath"; then # include iMath where existing (API < 7.0.0) IP2LOCATION_INCLUDE_L1="$IP2LOCATION_INCLUDE_L1 -I../$IP2LOCATION_INCLUDE_DIR/iMath" IP2LOCATION_INCLUDE_L2="$IP2LOCATION_INCLUDE_L2 -I../../$IP2LOCATION_INCLUDE_DIR/iMath" fi fi fi AC_ARG_WITH([ip2location-lib], AS_HELP_STRING([--with-ip2location-lib=FILE], [IP2Location library location]), [ if test -d "$with_ip2location_lib"; then IP2LOCATION_LIB_DIR="$with_ip2location_lib" IP2LOCATION_LIB="-L$IP2LOCATION_LIB_DIR $IP2LOCATION_LIB" AC_MSG_RESULT([IP2Location library directory given: $IP2LOCATION_LIB_DIR]) else AC_MSG_ERROR([IP2Location library directory not found: $with_ip2location_lib]) fi if echo "$IP2LOCATION_LIB_DIR" | grep -q "^/"; then # absolute path IP2LOCATION_LIB_L1="-L$IP2LOCATION_LIB_DIR" IP2LOCATION_LIB_L2="-L$IP2LOCATION_LIB_DIR" if test -n "$LD_LIBRARY_PATH"; then LD_LIBRARY_PATH=$IP2LOCATION_LIB_DIR:$LD_LIBRARY_PATH else LD_LIBRARY_PATH=$IP2LOCATION_LIB_DIR fi else IP2LOCATION_LIB_L1="-L../$IP2LOCATION_LIB_DIR" IP2LOCATION_LIB_L2="-L../../$IP2LOCATION_LIB_DIR" if test -n "$LD_LIBRARY_PATH"; then LD_LIBRARY_PATH=../$IP2LOCATION_LIB_DIR:$LD_LIBRARY_PATH else LD_LIBRARY_PATH=$IP2LOCATION_LIB_DIR fi fi ]) # must be tested #AC_ARG_WITH([ip2location-lib-name], # AS_HELP_STRING([--with-ip2location-lib-name=NAME], # [IP2Location library name]), # [ # IP2LOCATION_LIB_NAME="$with_geoip_lib_name" # IP2LOCATION_LIB="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB" # AC_MSG_RESULT([IP2Location library name given: $IP2LOCATION_LIB_NAME]) # ],[ # ]) AC_ARG_WITH([ip2location-static], AS_HELP_STRING([--with-ip2location-static], [Explicitly link IP2Location statically (default=no)]), [ if test "$with_ip2location_static" != "no"; then IP2LOCATION_LIB="-Wl,-Bstatic $IP2LOCATION_LIB -Wl,-Bdynamic" fi ]) dnl defaults for database directories AC_ARG_WITH([ip2location-db], AS_HELP_STRING([--with-ip2location-db=DIR], [Use specified IP2Location database directory, default: /usr/share/IP2Location]), [ ip2location_db="$with_ip2location_db" ], [ ip2location_db=$ip2location_db_default ]) AC_ARG_WITH([ip2location-dyn-lib], AS_HELP_STRING([--with-ip2location-dyn-lib=NAME], [Use specified IP2Location dynamic library, default: libIP2Location.so]), [ ip2location_dyn_lib="$with_ip2location_dyn_lib" ], [ ip2location_dyn_lib=$ip2location_dyn_lib_default ]) if test "$IP2LOCATION" = "yes"; then if test "$IP2LOCATION_DYN" != "yes"; then IP2LOCATION_LIB="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB" IP2LOCATION_LIB_L1="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB_L1" IP2LOCATION_LIB_L2="-l$IP2LOCATION_LIB_NAME $IP2LOCATION_LIB_L2" else AC_MSG_RESULT([**** IP2Location dynamic load support enabled, disable IP2Location linker options]) fi CPPFLAGS="$CPPFLAGS $IP2LOCATION_INCLUDE" AC_MSG_RESULT([*** IP2Location support requested]) AC_MSG_RESULT([***** CPPFLAGS=$CPPFLAGS]) AC_MSG_RESULT([***** CFLAGS =$CFLAGS]) AC_MSG_RESULT([***** LDFLAGS =$LDFLAGS]) AC_CHECK_HEADER(IP2Location.h, [ if test -n "$IP2LOCATION_INCLUDE_DIR"; then if test -e "$IP2LOCATION_INCLUDE_DIR/IP2Location.h"; then CPPFLAGS="$CPPFLAGS -include $IP2LOCATION_INCLUDE_DIR/IP2Location.h" else AC_MSG_ERROR([IP2Location library header file not found: $IP2LOCATION_INCLUDE_DIR/IP2Location.h]) fi else CPPFLAGS="$CPPFLAGS -include IP2Location.h" fi AC_CHECK_DECL([IP2Location_open],, AC_MSG_ERROR([IP2Location library header file misses IP2Location_open])) AC_CHECK_DECLS([IP2Location_close, IP2Location_get_country_short, IP2Location_get_country_long]) AC_CHECK_DECLS([API_VERSION]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include IP2Location loc; void test() { loc.ipv6databaseaddr = 1; }; ]])],[ AC_MSG_RESULT([IP2Location has full IPv6 support (API >= 7.0.0)]) IP2LOCATION_IPV6_COMPAT="no" ],[ AC_MSG_WARN([IP2Location has only compat IPv6 support (API < 7.0.0) which is no longer supported]) IP2LOCATION_IPV6_COMPAT="yes" ] ) AC_CHECK_DECLS([USAGETYPE], [ IP2LOCATION_ALL_COMPAT="no" ], [ AC_MSG_WARN([IP2Location library header file misses USAGETYPE (library < 6.0.0)]) IP2LOCATION_ALL_COMPAT="yes" ] ) ], [ AC_MSG_ERROR([IP2Location library header files not found]) ]) AC_MSG_RESULT([*** IP2location db dir: $ip2location_db]) AC_DEFINE_UNQUOTED(IP2LOCATION_DB, "$ip2location_db", Define IP2Location database directory.) if test "$IP2LOCATION_DYN" != "yes"; then if test "$IP2LOCATION_STATIC" = "yes"; then AC_DEFINE(SUPPORT_IP2LOCATION_STATIC, 1, Define if you want IP2Location support statically linked - requires also additional linker options.) fi CPPFLAGS="$CFLAGS" if test -n "$IP2LOCATION_LIB_DIR"; then if test -e "$IP2LOCATION_LIB_DIR/lib$IP2LOCATION_LIB_NAME.so"; then LDFLAGS="$LDFLAGS -L$IP2LOCATION_LIB_DIR" CFLAGS="$CFLAGS -L$IP2LOCATION_LIB_DIR" LIBS="-L$IP2LOCATION_LIB_DIR" else AC_MSG_ERROR([IP2Location library file not found: $IP2LOCATION_INCLUDE_DIR/lib$IP2LOCATION_LIB_NAME.so]) fi fi AC_CHECK_LIB($IP2LOCATION_LIB_NAME, IP2Location_api_version_string, [ AC_DEFINE(SUPPORT_IP2LOCATION_API_VERSION_STRING, 1, Define if you want IP2Location API version string support.) AC_MSG_RESULT([*** IP2Location library supports API version string]) ]) AC_CHECK_LIB($IP2LOCATION_LIB_NAME, IP2Location_lib_version_string, [ AC_DEFINE(SUPPORT_IP2LOCATION_LIB_VERSION_STRING, 1, Define if you want IP2Location LIB version string support.) AC_MSG_RESULT([*** IP2Location library supports LIB version string]) ]) AC_MSG_RESULT([***** CPPFLAGS=$CPPFLAGS]) AC_MSG_RESULT([***** CFLAGS =$CFLAGS]) AC_MSG_RESULT([***** LDFLAGS =$LDFLAGS]) AC_CHECK_LIB($IP2LOCATION_LIB_NAME, IP2Location_open, [ AC_DEFINE(SUPPORT_IP2LOCATION, 1, Define if you want IP2Location support.) AC_MSG_RESULT([*** IP2Location support enabled]) ], [ AC_MSG_ERROR([IP2Location library header files were found but the library was not found, LDFLAGS=$LDFLAGS, CFLAGS=$CFLAGS]) ]) else AC_CHECK_DECLS([IP2Location_api_version_string], [ AC_DEFINE(SUPPORT_IP2LOCATION_API_VERSION_STRING, 1, Define if you want IP2Location API version string support.) AC_MSG_RESULT([*** IP2Location header supports API version string]) ]) # wrapper detects by itself the real support AC_MSG_RESULT([*** IP2Location dyn lib: $ip2location_dyn_lib]) AC_DEFINE_UNQUOTED(IP2LOCATION_DYN_LIB, "$ip2location_dyn_lib", Define IP2Location dynamic library.) AC_MSG_RESULT([*** IP2Location support will be implemented by using dynamic load of library]) AC_DEFINE(SUPPORT_IP2LOCATION, 1, Define if you want IP2Location support.) AC_DEFINE(SUPPORT_IP2LOCATION_DYN, 1, Define if you want IP2Location support with dynamic loading support - requires also additional linker options.) fi fi if test "$IP2LOCATION_IPV6_COMPAT" = "yes"; then AC_DEFINE(SUPPORT_IP2LOCATION_IPV6_COMPAT, 1, Define if your IP2Location supports IPv6 only in old manner.) fi if test "$IP2LOCATION_ALL_COMPAT" = "yes"; then AC_DEFINE(SUPPORT_IP2LOCATION_ALL_COMPAT, 1, Define if your IP2Location supports only reduced set of databases.) fi IP2LOCATION_DB=$ip2location_db AC_SUBST(IP2LOCATION_INCLUDE) AC_SUBST(IP2LOCATION_INCLUDE_L1) AC_SUBST(IP2LOCATION_INCLUDE_L2) AC_SUBST(IP2LOCATION_LIB) AC_SUBST(IP2LOCATION_LIB_L1) AC_SUBST(IP2LOCATION_LIB_L2) AC_SUBST(IP2LOCATION_DB) AC_SUBST(IP2LOCATION_DYN_LIB) if test -n "$IP2LOCATION_INCLUDE_VERSION"; then AC_DEFINE_UNQUOTED(IP2LOCATION_INCLUDE_VERSION, "$IP2LOCATION_INCLUDE_VERSION", IP2Location include file version.) fi dnl ************************************************* dnl GeoIP support dnl ************************************************* GEOIP_LIB_NAME="GeoIP" GEOIP_INCLUDE_VERSION="" AC_ARG_ENABLE([geoip], AS_HELP_STRING([--enable-geoip], [Enable GeoIP support (default: disabled)]), [ if test "$enable_geoip" != "no"; then GEOIP="$enable_geoip" fi ],[ GEOIP="no" ]) AC_ARG_WITH([geoip-dynamic], AS_HELP_STRING([--with-geoip-dynamic], [Enable use of dynamic loading of GeoIP library (default=no)]), [ if test "$with_geoip_dynamic" != "no"; then GEOIP_DYN="yes" fi ],[ true ]) AC_ARG_WITH([geoip-headers], AS_HELP_STRING([--with-geoip-headers=DIR], [GeoIP include files location]), [ GEOIP_INCLUDE_DIR="$with_geoip_headers" ]) AC_ARG_WITH([geoip-headers-fallback], AS_HELP_STRING([--with-geoip-headers-fallback], [GeoIP include files from internal fallback location (only usable with dynamic load option)]), [ if test "$GEOIP_DYN" != "yes"; then AC_MSG_ERROR([GeoIP fallback headers are only usable with dynamic load option set: --with-geoip-dynamic]) fi if test -n "$GEOIP_INCLUDE_DIR"; then AC_MSG_ERROR([GeoIP include files location already set by --with-geoip-headers, skip fallback]) else AC_MSG_RESULT([*** GeoIP fallback headers activated]) GEOIP_INCLUDE_DIR="external-fallback/GeoIP" GEOIP_INCLUDE_VERSION=$(cat external-fallback/GeoIP/VERSION-GeoIP) fi ]) if test -n "$GEOIP_INCLUDE_DIR"; then GEOIP_INCLUDE="-I$GEOIP_INCLUDE_DIR" if echo "$GEOIP_INCLUDE_DIR" | grep -q "^/"; then # absolute path GEOIP_INCLUDE_L1="-I$GEOIP_INCLUDE_DIR" GEOIP_INCLUDE_L2="-I$GEOIP_INCLUDE_DIR" else GEOIP_INCLUDE_L1="-I../$GEOIP_INCLUDE_DIR" GEOIP_INCLUDE_L2="-I../../$GEOIP_INCLUDE_DIR" fi fi AC_ARG_WITH([geoip-lib], AS_HELP_STRING([--with-geoip-lib=DIR], [GeoIP library location]), [ if test -d "$with_geoip_lib"; then GEOIP_LIB_DIR="$with_geoip_lib" GEOIP_LIB="-L$GEOIP_LIB_DIR $GEOIP_LIB" AC_MSG_RESULT([GeoIP library directory given: $GEOIP_LIB_DIR]) else AC_MSG_ERROR([GeoIP library directory not found: $with_geoip_lib]) fi if echo "$GEOIP_LIB_DIR" | grep -q "^/"; then # absolute path GEOIP_LIB_L1="-L$GEOIP_LIB_DIR" GEOIP_LIB_L2="-L$GEOIP_LIB_DIR" LD_LIBRARY_PATH=$GEOIP_LIB_DIR:$LD_LIBRARY_PATH else GEOIP_LIB_L1="-L../$GEOIP_LIB_DIR" GEOIP_LIB_L2="-L../../$GEOIP_LIB_DIR" LD_LIBRARY_PATH=../$GEOIP_LIB_DIR:$LD_LIBRARY_PATH fi ]) # must be tested #AC_ARG_WITH([geoip-lib-name], # AS_HELP_STRING([--with-geoip-lib-name=NAME], # [GeoIP library name]), # [ # GEOIP_LIB_NAME="$with_geoip_lib_name" # GEOIP_LIB="-l$GEOIP_LIB_NAME $GEOIP_LIB" # AC_MSG_RESULT([GeoIP library name given: $GEOIP_LIB_NAME]) # ],[ # ]) AC_ARG_WITH([geoip-static], AS_HELP_STRING([--with-geoip-static], [Explicitly link GeoIP statically (default=no)]), [ if test "$with_geoip_static" != "no"; then GEOIP_STATIC="$with_geoip_static" GEOIP_LIB="-Wl,-Bstatic $GEOIP_LIB -Wl,-Bdynamic" fi ],[ GEOIP_STATIC="no" ]) AC_ARG_WITH([geoip-db], AS_HELP_STRING([--with-geoip-db=DIR], [Use specified GeoIP database directory, default: /usr/share/GeoIP]), [ geoip_db="$with_geoip_db" ], [ geoip_db=$geoip_db_default ]) AC_ARG_WITH([geoip-dyn-lib], AS_HELP_STRING([--with-geoip-dyn-lib=NAME], [Use specified GeoIP dynamic library, default: libGeoIP.so.1]), [ geoip_dyn_lib="$with_geoip_dyn_lib" ], [ geoip_dyn_lib=$geoip_dyn_lib_default ]) AC_ARG_WITH([geoip-ipv6-compat], AS_HELP_STRING([--with-geoip-ipv6-compat], [Use IPv6 interface of GeoIP in compatibility mode (supporting 1.4.5)]), [ if test "$with_geoip_ipv6_compat" != "no"; then GEOIP_COMPAT="yes", fi ],[ GEOIP_COMPAT="no" ]) # Automagic enable GeoIP if dynamic load is available (TODO: enable later by default??) #if test "$DYNAMIC_LOAD" = "yes"; then # if test "$GEOIP_DYN" = "no"; then # true # else # AC_CHECK_HEADER(GeoIP.h, # [ # AC_MSG_RESULT(["*** GeoIP library header files found and dynamic library support enabled, enable GeoIP"]) # GEOIP="yes" # GEOIP_DYN="yes" # ], # [ # ]) # fi #fi if test "$GEOIP" = "yes"; then if test "$GEOIP_DYN" != "yes"; then GEOIP_LIB="-l$GEOIP_LIB_NAME $GEOIP_LIB" GEOIP_LIB_L1="-l$GEOIP_LIB_NAME $GEOIP_LIB_L1" GEOIP_LIB_L2="-l$GEOIP_LIB_NAME $GEOIP_LIB_L2" else AC_MSG_RESULT([*** GeoIP dynamic load support enabled, disable GeoIP linker options]) fi CPPFLAGS="$CPPLAGS $GEOIP_INCLUDE" AC_MSG_RESULT([*** GeoIP support requested]) AC_MSG_RESULT([***** CPPFLAGS=$CPPFLAGS]) AC_MSG_RESULT([***** CFLAGS =$CFLAGS]) AC_MSG_RESULT([***** LDFLAGS =$LDFLAGS]) AC_CHECK_HEADER(GeoIP.h, [ if test -n "$GEOIP_INCLUDE_DIR"; then if test -e "$GEOIP_INCLUDE_DIR/GeoIP.h"; then CPPFLAGS="$CPPFLAGS -include $GEOIP_INCLUDE_DIR/GeoIP.h" else AC_MSG_ERROR([GeoIP library header file not found: $GEOIP_INCLUDE_DIR/GeoIP.h]) fi else CPPFLAGS="$CPPFLAGS -include GeoIP.h" fi AC_CHECK_DECL([GeoIP_open],, AC_MSG_ERROR([GeoIP library header file misses GeoIP_open])) AC_CHECK_DECLS([GeoIP_country_code_by_ipnum_v6, GeoIP_lib_version, GeoIP_country_code_by_addr_v6, GeoIP_country_name_by_addr_v6, GeoIP_cleanup]) AC_CHECK_DECLS([GEOIP_LARGE_COUNTRY_EDITION, GEOIP_LARGE_COUNTRY_EDITION_V6, GEOIP_CITY_EDITION_REV0_V6, GEOIP_CITY_EDITION_REV1_V6, GEOIP_ASNUM_EDITION, GEOIP_ASNUM_EDITION_V6, GEOIP_COUNTRY_EDITION_V6]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[geoipv6_t a;]]) ], [ AC_MSG_RESULT([typedef geoipv6_t defined]) AC_DEFINE(SUPPORT_GEOIP_IPV6_STRUCT, 1, Define if GeoIP support IPv6 structure.) ], [ AC_MSG_WARN([typedef geoipv6_t missing, enable workaround]) ]) ], [ AC_MSG_ERROR([GeoIP library header files not found]) ]) AC_MSG_RESULT([*** GeoIP database directory: $geoip_db]) AC_DEFINE_UNQUOTED(GEOIP_DB, "$geoip_db", Define GeoIP database directory.) if test "$GEOIP_DYN" != "yes"; then if test "$GEOIP_STATIC" = "yes"; then AC_DEFINE(SUPPORT_GEOIP_STATIC, 1, Define if you want GeoIP support statically linked - requires also additional linker options.) fi CPPFLAGS="$CFLAGS" if test -n "$GEOIP_LIB_DIR"; then if test -e "$GEOIP_LIB_DIR/lib$GEOIP_LIB_NAME.so"; then LDFLAGS="$LDFLAGS -L$GEOIP_LIB_DIR" CFLAGS="$CFLAGS -L$GEOIP_LIB_DIR" LIBS="-L$GEOIP_LIB_DIR" else AC_MSG_ERROR([GeoIP library file not found: $GEOIP_INCLUDE_DIR/lib$GEOIP_LIB_NAME.so]) fi fi AC_MSG_RESULT([***** CPPFLAGS=$CPPFLAGS]) AC_MSG_RESULT([***** CFLAGS =$CFLAGS]) AC_MSG_RESULT([***** LDFLAGS =$LDFLAGS]) AC_CHECK_LIB($GEOIP_LIB_NAME, GeoIP_open, [ AC_DEFINE(SUPPORT_GEOIP, 1, Define if you want GeoIP support.) AC_MSG_RESULT([*** GeoIP support enabled]) ], [ AC_MSG_ERROR([GeoIP library header files given but the library was not found, LDFLAGS=$LDFLAGS]) ]) AC_CHECK_LIB($GEOIP_LIB_NAME, GeoIP_country_code_by_ipnum_v6, [ AC_DEFINE(SUPPORT_GEOIP_V6, 1, Define if you want GeoIP IPv6 support.) AC_MSG_RESULT([*** GeoIP IPv6 support enabled]) ], [ AC_MSG_WARN([GeoIP library file were found but not supporting IPv6 (upgrade to GeoIP 1.4.5 or newer for enabling IPv6 support)]) ]) if test "$GEOIP_COMPAT" = "no"; then AC_CHECK_LIB($GEOIP_LIB_NAME, GeoIP_lib_version, [ AC_DEFINE(SUPPORT_GEOIP_LIB_VERSION, 1, Define if your GeoIP version supports GeoIP_lib_version.) ], [ AC_MSG_WARN([GeoIP library header files were found but not supporting GeoIP_lib_version (upgrade to newer version for support).]) ]) AC_CHECK_LIB($GEOIP_LIB_NAME, GeoIP_country_code_by_addr_v6, [ AC_DEFINE(SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6, 1, Define if your GeoIP version supports GeoIP_country_code_by_addr_v6.) ], [ AC_MSG_WARN([GeoIP library header files were found but not supporting GeoIP_country_code_by_addr_v6 (will use workaround).]) ]) AC_CHECK_LIB($GEOIP_LIB_NAME, GeoIP_country_name_by_addr_v6, [ AC_DEFINE(SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6, 1, Define if your GeoIP version supports GeoIP_country_name_by_addr_v6.) ], [ AC_MSG_WARN([GeoIP library header files were found but not supporting GeoIP_country_name_by_addr_v6 (will use workaround).]) ]) AC_CHECK_LIB($GEOIP_LIB_NAME, GeoIP_cleanup, [ AC_DEFINE(SUPPORT_GEOIP_CLEANUP, 1, Define if your GeoIP version supports GeoIP_cleanup.) ], [ AC_MSG_WARN([GeoIP library header files were found but not supporting GeoIP_cleanup (will use workaround).]) ]) else AC_MSG_WARN([GeoIP IPv6 support compatibility mode enabled (supporting 1.4.5).]) fi else # wrapper detects by itself the real support AC_MSG_RESULT([*** GeoIP dyn lib: $geoip_dyn_lib]) AC_DEFINE_UNQUOTED(GEOIP_DYN_LIB, "$geoip_dyn_lib", Define GeoIP dynamic library.) AC_MSG_RESULT([*** GeoIP support will be implemented by using dynamic load of library]) AC_DEFINE(SUPPORT_GEOIP, 1, Define if you want GeoIP support.) AC_DEFINE(SUPPORT_GEOIP_V6, 1, Define if you want GeoIP IPv6 support.) AC_DEFINE(SUPPORT_GEOIP_DYN, 1, Define if you want GeoIP support with dynamic loading support - requires also additional linker options.) fi fi GEOIP_DB=$geoip_db AC_SUBST(GEOIP_INCLUDE) AC_SUBST(GEOIP_INCLUDE_VERSION) AC_SUBST(GEOIP_INCLUDE_L2) AC_SUBST(GEOIP_INCLUDE_L1) AC_SUBST(GEOIP_LIB) AC_SUBST(GEOIP_LIB_L1) AC_SUBST(GEOIP_LIB_L2) AC_SUBST(GEOIP_DB) AC_SUBST(GEOIP_DYN_LIB) if test -n "$GEOIP_INCLUDE_VERSION"; then AC_DEFINE_UNQUOTED(GEOIP_INCLUDE_VERSION, "$GEOIP_INCLUDE_VERSION", GeoIP include file version.) fi dnl ************************************************* dnl Dynamic load used? dnl ************************************************* if test "$DYNAMIC_LOAD" = "yes"; then if test "$GEOIP_DYN" = "yes" -o "$IP2LOCATION_DYN" = "yes"; then DYNAMIC_LOAD="yes" AC_MSG_RESULT([*** Dynamic loading of libraries is ENABLED]) DYNLOAD_LIB="-rdynamic -ldl" fi fi AC_SUBST(DYNLOAD_LIB) dnl ************************************************* dnl libdb required dnl ************************************************* if test "$require_libdb" = "yes"; then AC_CHECK_HEADER(db.h, [ AC_CHECK_LIB(db, db_create, [ AC_MSG_RESULT([*** Berkeley DB library found and usable]) ], [ AC_MSG_ERROR([Berkeley DB library file misses db_create]) ]) ], [ AC_MSG_ERROR([Berkeley DB library header files not found (perhaps missing db4-devel/libdb-devel package)]) ]) LDFLAGS_EXTRA="$LDFLAGS_EXTRA -ldb" AC_DEFINE(HAVE_BERKELEY_DB_SUPPORT, 1, Define if Berkeley DB support is required.) fi dnl ************************************************* dnl mod_ipv6calc / apxs - APache eXtension tool dnl ************************************************* AC_ARG_ENABLE([mod_ipv6calc], AS_HELP_STRING([--enable-mod_ipv6calc], [Enable build of mod_ipv6calc for Apache (default: disabled)]), [ ENABLE_MOD_IPV6CALC="1" ],[ ENABLE_MOD_IPV6CALC="0" ]) AC_SUBST(ENABLE_MOD_IPV6CALC) AC_ARG_WITH(apxs, AC_HELP_STRING([--with-apxs=NAME], [name of the apxs executable (apxs)]), [APXS="$with_apxs"]) if test "$ENABLE_MOD_IPV6CALC" = "1"; then AC_MSG_RESULT([Build of mod_ipv6calc enabled]) if test -z "$APXS"; then AC_PATH_PROGS(APXS, apxs2 apxs, [], [$PATH:/usr/local/apache/bin:/usr/sbin]) fi if test -z "$APXS"; then AC_MSG_ERROR([No APXS binary found: cannot create Apache module - missing httpd-devel?]) else AC_MSG_RESULT([APXS binary found: $APXS]) # partially taken from configure.ac from mod_wsgi AC_MSG_CHECKING(Apache version) HTTPD="`${APXS} -q SBINDIR`/`${APXS} -q TARGET`" HTTPD_INCLUDEDIR="`${APXS} -q INCLUDEDIR`" if test -x ${HTTPD}; then HTTPD_VERSION=`${HTTPD} -v | awk '/version/ {print $3}' \ | awk -F/ '{print $2}'` else if test -f ${HTTPD_INCLUDEDIR}/ap_release.h; then HTTPD_VERSION=`grep '^#define AP_SERVER_MAJORVERSION_NUMBER ' \ ${HTTPD_INCLUDEDIR}/ap_release.h | sed -e \ 's/^#define AP_SERVER_MAJORVERSION_NUMBER \([0-9]\).*/\1.X/'` else if test -f ${HTTPD_INCLUDEDIR}/httpd.h; then HTTPD_VERSION=`grep '^#define APACHE_RELEASE ' \ ${HTTPD_INCLUDEDIR}/httpd.h | sed -e \ 's/^#define APACHE_RELEASE \([0-9]\).*/\1.X/'` else HTTPD_VERSION="2.?" fi fi fi HTTPD_LIBEXECDIR="`${APXS} -q libexecdir`" if test -z "$HTTPD_LIBEXECDIR"; then AC_MSG_ERROR([${APXS} cannot retrieve libexecdir]) fi HTTPD_SYSCONFDIR="`${APXS} -q sysconfdir`" if test -z "$HTTPD_SYSCONFDIR"; then AC_MSG_ERROR([${APXS} cannot retrieve sysconfdir]) fi if test -n "$HTTPD_SYSCONFDIR"; then HTTPD_SYSCONFDIR="$HTTPD_SYSCONFDIR.d" fi if test -n "$HTTPD_VERSION"; then HTTPD_VERSION_MAJOR_MINOR=`echo "$HTTPD_VERSION" | awk -F. '{ print $1 "." $2 }'` fi fi AC_SUBST(HTTPD_LIBEXECDIR) AC_SUBST(HTTPD_SYSCONFDIR) AC_SUBST(HTTPD_VERSION_MAJOR_MINOR) AC_SUBST(APXS) else AC_MSG_WARN([Build of mod_ipv6calc NOT enabled]) fi dnl ************************************************* dnl Files to create from .in dnl ************************************************* AC_SUBST(CFLAGS_EXTRA) AC_SUBST(LDFLAGS_EXTRA) AC_SUBST(LDFLAGS_EXTRA_MOD_IPV6CALC) AC_SUBST(LDFLAGS_EXTRA_STATIC) AC_SUBST(LD_LIBRARY_PATH) AC_SUBST(LD_LIBRARY_PATH_BASIC) AC_OUTPUT([ Makefile md5/Makefile tools/Makefile getopt/Makefile ipv6calc/Makefile lib/Makefile man/Makefile databases/lib/Makefile ipv6logconv/Makefile ipv6loganon/Makefile ipv6logstats/Makefile ipv6calcweb/Makefile contrib/ipv6calc.spec tools/ipv6calc-db-update.sh tools/DBIP-update.sh tools/IP2Location-update.sh tools/GeoIP-update.sh mod_ipv6calc/Makefile VERSION ]) AC_MSG_RESULT([***** Summary]) AC_MSG_RESULT([*** IP2LOCATION =$IP2LOCATION]) AC_MSG_RESULT([*** IP2LOCATION_DB =$IP2LOCATION_DB]) AC_MSG_RESULT([*** IP2LOCATION_DYN =$IP2LOCATION_DYN]) AC_MSG_RESULT([*** IP2LOCATION_DYN_LIB =$ip2location_dyn_lib]) AC_MSG_RESULT([*** IP2LOCATION_INCLUDE =$IP2LOCATION_INCLUDE]) AC_MSG_RESULT([*** IP2LOCATION_INCLUDE_VERSION=$IP2LOCATION_INCLUDE_VERSION]) AC_MSG_RESULT([*** IP2LOCATION_LIB =$IP2LOCATION_LIB]) AC_MSG_RESULT([*** IP2LOCATION_LIB_NAME =$IP2LOCATION_LIB_NAME]) AC_MSG_RESULT([*** IP2LOCATION_LIB_DIR =$IP2LOCATION_LIB_DIR]) AC_MSG_RESULT([*** IP2LOCATION_IPV6_COMPAT =$IP2LOCATION_IPV6_COMPAT]) AC_MSG_RESULT([*** IP2LOCATION_ALL_COMPAT =$IP2LOCATION_ALL_COMPAT]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** GEOIP =$GEOIP]) AC_MSG_RESULT([*** GEOIP_DB =$GEOIP_DB]) AC_MSG_RESULT([*** GEOIP_DYN =$GEOIP_DYN]) AC_MSG_RESULT([*** GEOIP_DYN_LIB =$geoip_dyn_lib]) AC_MSG_RESULT([*** GEOIP_INCLUDE =$GEOIP_INCLUDE]) AC_MSG_RESULT([*** GEOIP_INCLUDE_VERSION =$GEOIP_INCLUDE_VERSION]) AC_MSG_RESULT([*** GEOIP_LIB =$GEOIP_LIB]) AC_MSG_RESULT([*** GEOIP_LIB_NAME =$GEOIP_LIB_NAME]) AC_MSG_RESULT([*** GEOIP_LIB_DIR =$GEOIP_LIB_DIR]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** DBIP =$DBIP]) AC_MSG_RESULT([*** DBIP_DB =$DBIP_DB]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** EXTERNAL =$EXTERNAL]) AC_MSG_RESULT([*** EXTERNAL_DB =$EXTERNAL_DB]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** BUILTIN =$BUILTIN]) AC_MSG_RESULT([*** DB_IPV4 =$DB_IPV4]) AC_MSG_RESULT([*** DB_IPV6 =$DB_IPV6]) AC_MSG_RESULT([*** DB_IEEE =$DB_IEEE]) AC_MSG_RESULT([*** DB_AS_REG =$DB_AS_REG]) AC_MSG_RESULT([*** DB_CC_REG =$DB_CC_REG]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** CC =$CC]) AC_MSG_RESULT([*** CFLAGS_EXTRA =$CFLAGS_EXTRA]) AC_MSG_RESULT([*** LDFLAGS_EXTRA =$LDFLAGS_EXTRA]) AC_MSG_RESULT([*** LD_LIBRARY_PATH =$LD_LIBRARY_PATH]) AC_MSG_RESULT([*** LD_LIBRARY_PATH_BASIC =$LD_LIBRARY_PATH_BASIC]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** CPPLAGS =$CPPLAGS]) AC_MSG_RESULT([*** CFLAGS =$CFLAGS]) AC_MSG_RESULT([*** LDFLAGS =$LDFLAGS]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** PACKAGE_VERSION_NUMERIC =$PACKAGE_VERSION_NUMERIC]) AC_MSG_RESULT([*** PACKAGE_VERSION_STRING =$PACKAGE_VERSION_STRING]) AC_MSG_RESULT([*** API_VERSION_NUMERIC =$API_VERSION_NUMERIC]) AC_MSG_RESULT([*** API_VERSION_STRING =$API_VERSION_STRING]) AC_MSG_RESULT([]) AC_MSG_RESULT([*** ENABLE_MOD_IPV6CALC =$ENABLE_MOD_IPV6CALC]) if test "$ENABLE_MOD_IPV6CALC" = "1"; then AC_MSG_RESULT([*** APXS =$APXS]) AC_MSG_RESULT([*** HTTPD_SYSCONFDIR =$HTTPD_SYSCONFDIR]) AC_MSG_RESULT([*** HTTPD_LIBEXECDIR =$HTTPD_LIBEXECDIR]) AC_MSG_RESULT([*** HTTPD_VERSION =$HTTPD_VERSION]) AC_MSG_RESULT([*** HTTPD_VERSION_MAJOR_MINOR =$HTTPD_VERSION_MAJOR_MINOR]) AC_MSG_RESULT([*** LDFLAGS_EXTRA_MOD_IPV6CALC =$LDFLAGS_EXTRA_MOD_IPV6CALC]) fi ipv6calc-1.0.0/contrib/000077500000000000000000000000001312366535500146705ustar00rootroot00000000000000ipv6calc-1.0.0/contrib/ipv6calc.spec000066400000000000000000000333701312366535500172610ustar00rootroot00000000000000# Project : ipv6calc # File : contrib/ipv6calc.spec # Copyright : 2001-2016 by Peter Bieringer # $Id: 0df17afba6c435c28b3c3d0323e0739d2f88678e $ # enable the following for intermediate builds #%#define gitcommit d3a4108cb7aeb6f731bb07989f91d8a7f449f0f0 %if 0%{?gitcommit:1} %global shortcommit %(c=%{gitcommit}; echo ${c:0:7}) %define build_timestamp %(date +"%Y%m%d") %global gittag .%{build_timestamp}git%{shortcommit} %endif # shared library support (deselectable) %if "%{?_without_shared:0}%{?!_without_shared:1}" == "1" %define enable_shared 1 %endif Summary: IPv6 address format change and calculation utility Name: ipv6calc Version: 1.0.0 Release: 16%{?gittag}%{?dist} Group: Applications/Text URL: http://www.deepspace6.net/projects/%{name}.html License: GPLv2 %if 0%{?gitcommit:1} Source: https://github.com/pbiering/%{name}/archive/%{gitcommit}/%{name}-%{gitcommit}.tar.gz %else Source: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/%{name}-%{version}.tar.gz %endif BuildRequires: openssl-devel BuildRequires: perl-generators BuildRequires: perl(Digest::MD5), perl(Digest::SHA1), perl(URI::Escape) BuildRequires: perl(strict), perl(warnings) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) %if %{enable_shared} Provides: ipv6calc-libs = %{version}-%{release}} %else Conflicts: ipv6calc-libs %endif BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # mod_ipv6calc related %{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} %{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}} %{!?_httpd_confdir: %{expand: %%global _httpd_confdir %%{_sysconfdir}/httpd/conf.d}} # database support (deselectable) %if "%{?_without_ip2location:0}%{?!_without_ip2location:1}" == "1" %define enable_ip2location 1 %endif %if "%{?_without_geoip:0}%{?!_without_geoip:1}" == "1" %define enable_geoip 1 %endif %if "%{?_without_dbip:0}%{?!_without_dbip:1}" == "1" %define enable_dbip 1 %endif %if "%{?_without_external:0}%{?!_without_external:1}" == "1" %define enable_external 1 %endif %if "%{?_without_mod_ipv6calc:0}%{?!_without_mod_ipv6calc:1}" == "1" %define enable_mod_ipv6calc 1 %endif # database locations %define ip2location_db %{_datadir}/IP2Location %define geoip_db %{_datadir}/GeoIP %define dbip_db %{_datadir}/DBIP %define external_db %{_datadir}/%{name}/db # Berkeley DB selector %define require_db4 %(echo "%{dist}" | egrep -q '^\.el(5|6)$' && echo 1 || echo 0) %if %{require_db4} BuildRequires: db4-devel %else BuildRequires: libdb-devel %endif # RPM license macro detector %define rpm_license_extra %(echo "%{_defaultlicensedir}" | grep -q defaultlicensedir && echo 0 || echo 1) %description ipv6calc is a small utility which formats and calculates IPv4/IPv6 addresses in different ways. Install this package, if you want to retrieve information about a particular IPv4/IPv6/MAC address (-i ADDRESS) or make life easier in adding entries to reverse IPv6 DNS zones (e.g. -a 2001:db8:1234::1/48). In addition many format and type conversions are supported, see online help and/or given URL for more. Also this package contains additional programs - ipv6loganon: anonymize Apache web server logs - ipv6logconv: special Apache web server log converter (examples included for use with analog) - ipv6logstats: create statistics from list of IPv4/IPv6 addresses (examples included for use with gnu-plot) - mod_ipv6calc: Apache module for anonymization/information logging on-the-fly Support for following databases - IP2Location %{?enable_ip2location:ENABLED}%{?!enable_ip2location:DISABLED} default directory for downloaded db files: %{ip2location_db} (requires also external library on system) - GeoIP %{?enable_geoip:ENABLED}%{?!enable_geoip:DISABLED} default directory for downloaded db files: %{geoip_db} (requires also external library on system) - db-ip.com %{?enable_dbip:ENABLED}%{?!enable_dbip:DISABLED} (once generated database files are found on system) default directory for generated db files: %{dbip_db} - External %{?enable_external:ENABLED}%{?!enable_external:DISABLED} default directory for generated db files: %{external_db} Built %{?enable_shared:WITH}%{?!enable_shared:WITHOUT} shared-library Available rpmbuild rebuild options: --without ip2location --without geoip --without dbip --without external --without shared --without mod_ipv6calc %package ipv6calcweb Summary: IP address information web utility Group: Applications/Internet Requires: ipv6calc httpd Requires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) perl(HTML::Entities) BuildRequires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) perl(HTML::Entities) %description ipv6calcweb ipv6calcweb contains a CGI program and a configuration file for displaying information of IP addresses on a web page using ipv6calc. Check/adjust %{_sysconfdir}/httpd/conf.d/ipv6calcweb.conf Default restricts access to localhost %if %{enable_mod_ipv6calc} %package mod_ipv6calc Summary: Apache module for ipv6calc Group: Applications/Internet BuildRequires: httpd-devel psmisc curl Requires: httpd >= 2.4.0 Requires: httpd <= 2.4.99999 Requires: ipv6calc = %{version}-%{release} %if %{enable_shared} Requires: ipv6calc-libs = %{version}-%{release}} %endif %description mod_ipv6calc mod_ipv6calc contains an Apache module and a default configuration file. Features: - store anonymized IPv4/v6 address in environment variable - store CountryCode of IPv4/v6 address in environment variable (environment variables can be used for custom log format) Check/adjust %{_sysconfdir}/httpd/conf.d/ipv6calc.conf By default the module is disabled. %endif %prep %if 0%{?gitcommit:1} %setup -q -n %{name}-%{gitcommit} %else %setup -q %endif %configure \ %{?enable_ip2location:--enable-ip2location} \ %{?enable_ip2location:--with-ip2location-dynamic --with-ip2location-headers-fallback} \ --with-ip2location-db=%{ip2location_db} \ %{?enable_geoip:--enable-geoip} \ %{?enable_geoip:--with-geoip-dynamic --with-geoip-headers-fallback} \ --with-geoip-db=%{geoip_db} \ %{?enable_dbip:--enable-dbip} \ --with-dbip-db=%{dbip_db} \ %{?enable_external:--enable-external} \ --with-external-db=%{external_db} \ %{?enable_shared:--enable-shared} \ %{?enable_mod_ipv6calc:--enable-mod_ipv6calc} %build make clean make %{?_smp_mflags} COPTS="$RPM_OPT_FLAGS" %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} ## Install examples and helper files install -d -p %{buildroot}%{_docdir}/%{name}-%{version}/ ## examples install -d %{buildroot}%{_datadir}/%{name}/examples/ # ipv6logconv install -d %{buildroot}%{_datadir}/%{name}/examples/ipv6logconv for file in examples/analog/*.{cfg,txt,tab,sh}; do install $file %{buildroot}%{_datadir}/%{name}/examples/ipv6logconv/ done # ipv6loganon install -d %{buildroot}%{_datadir}/%{name}/examples/ipv6loganon for file in ipv6loganon/README; do install $file %{buildroot}%{_datadir}/%{name}/examples/ipv6loganon/ done # ipv6logstats install -d %{buildroot}%{_datadir}/%{name}/examples/ipv6logstats for file in ipv6logstats/README ipv6logstats/example_* ipv6logstats/collect_ipv6logstats.pl; do install $file %{buildroot}%{_datadir}/%{name}/examples/ipv6logstats/ done # db directory install -d %{buildroot}%{external_db} # ipv6calcweb install -d %{buildroot}%{_sysconfdir}/httpd/conf.d install -d %{buildroot}%{_localstatedir}/www/cgi-bin install ipv6calcweb/ipv6calcweb.conf %{buildroot}%{_sysconfdir}/httpd/conf.d install -m 755 ipv6calcweb/ipv6calcweb.cgi %{buildroot}%{_localstatedir}/www/cgi-bin %clean rm -rf %{buildroot} %check %ifnarch ppc64 make test %endif %files %if %{rpm_license_extra} %doc ChangeLog README CREDITS TODO USAGE doc/ipv6calc.lyx doc/ipv6calc.sgml doc/ipv6calc.html doc/ipv6calc.xml %license COPYING LICENSE %else %doc ChangeLog README CREDITS TODO USAGE doc/ipv6calc.lyx doc/ipv6calc.sgml doc/ipv6calc.html doc/ipv6calc.xml COPYING LICENSE %endif %defattr(644,root,root,755) # binaries %attr(755,-,-) %{_bindir}/* # man pages %{_mandir}/man8/* # tools %attr(755,-,-) %{_datadir}/%{name}/tools/* # shared library %{?enable_shared:%attr(755,-,-) %{_libdir}/libipv6calc*} # database directory %{external_db} # examples %attr(755,-,-) %{_datadir}/%{name}/examples/*/*.pl %attr(755,-,-) %{_datadir}/%{name}/examples/*/*.sh %{_datadir}/%{name}/examples/* %files ipv6calcweb %if %{rpm_license_extra} %doc ipv6calcweb/README ipv6calcweb/USAGE %license COPYING LICENSE %else %doc ipv6calcweb/README ipv6calcweb/USAGE COPYING LICENSE %endif %defattr(644,root,root,755) %attr(755,-,-) %{_localstatedir}/www/cgi-bin/ipv6calcweb.cgi %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipv6calcweb.conf %files mod_ipv6calc %if %{rpm_license_extra} %doc mod_ipv6calc/README.mod_ipv6calc %license COPYING LICENSE %else %doc mod_ipv6calc/README.mod_ipv6calc COPYING LICENSE %endif %defattr(644,root,root,755) %config(noreplace) %{_httpd_confdir}/ipv6calc.conf %attr(755,-,-) %{_httpd_moddir}/mod_ipv6calc.so %post /usr/sbin/ldconfig %postun /usr/sbin/ldconfig %changelog * Wed Dec 28 2016 Peter Bieringer - add support for git commit hash - align RPM build requires with fedora-scm * Thu Jul 30 2015 Peter Bieringer - add automatic RPM license feature detection * Sat Jul 25 2015 Peter Bieringer - replace ipv6calc.{lyx,sgml,html,xml} by dedicated file.suffix * Mon Jun 01 2015 Peter Bieringer - add subpackage mod_ipv6calc * Sat Mar 07 2015 Peter Bieringer - take use of license macro * Sun Mar 01 2015 Peter Bieringer - remove not necessary x-bits for some files by proper definition in %files section * Wed Feb 18 2015 Peter Bieringer - delete subpackage db, major spec file alignment with Fedora-SCM version * Sun Feb 15 2015 Peter Bieringer - extend sub-package db * Tue Dec 09 2014 Peter Bieringer - create new sub-package: db with all related tools - configure: --enable-external * Sat Oct 25 2014 Peter Bieringer - add /usr/share/ipv6calc/db directory * Fri Oct 10 2014 Peter Bieringer - add DBIP-update.sh DBIP-generate-db.pl * Mon Jul 14 2014 Peter Bieringer - review description * Sun Feb 02 2014 Peter Bieringer - add support for optional shared-library build * Tue Nov 12 2013 Peter Bieringer - add datadir with tools * Thu Sep 26 2013 Peter Bieringer - add support for --with geoip-dyn and --with ip2location-dyn * Wed Sep 12 2012 Peter Bieringer - change requirements for ip2location to Mandrake Linux compatible names - change location of "ipv6calc" from bin to %{_bindir} - install tools/GeoIP-update.sh tools/IP2Location-update.sh to doc dir * Sun Jan 01 2012 Peter Bieringer - create subpackage for ipv6calcweb - minor review * Sat Oct 08 2011 Peter Bieringer - reduce "make test" to "make test-minimal" * Wed Nov 19 2008 Peter Bieringer - switch from "make installonly" to "make install" * Wed Feb 14 2007 Peter Bieringer - remove support for build option --with-geoip-system - add support for 'ipv6loganon' * Sat Oct 28 2006 Peter Bieringer - add support for build option --with-geoip-system * Sun Aug 06 2006 Peter Bieringer - add support for build option --with-geoip * Wed Jun 07 2006 Peter Bieringer - add support for build option --with-ip2location * Wed Jul 20 2005 Peter Bieringer - adjust code because of use of "bindir" in Makefile of ivp6calc * Sat Oct 30 2004 Peter Bieringer - remove openssl(-devel) from requirements, no longer needed * Sat Nov 22 2003 Peter Bieringer - adjustments * Fri Nov 21 2003 Peter Bieringer - add ipv6logstats - add man pages - add configure options * Mon Nov 11 2002 Peter Bieringer - change IPv6 address in description * Sat Apr 20 2002 Peter Bieringer - Change URL * Sun Apr 07 2002 Peter Bieringer - add more analog example files * Fri Apr 05 2002 Peter Bieringer - remove BuildRequires extension, not needed for normal build * Sun Mar 24 2002 Peter Bieringer - extend BuildRequires for perl /usr/bin/aggregate wget * Mon Mar 18 2002 Peter Bieringer - add ipv6calcweb.cgi * Sat Mar 16 2002 Peter Bieringer - add ipv6logconv, analog examples * Mon Mar 11 2002 Peter Bieringer - Add perl to buildrequire and openssl to require * Mon Jan 21 2002 Peter Bieringer - Add LICENSE + COPYING file * Thu Dec 27 2001 Peter Bieringer - Add comment header - Add call to configure on build * Tue Dec 18 2001 Peter Bieringer - Replace hardwired version number with autoconf/configure variable * Wed Apr 25 2001 Peter Bieringer - Fix permissions of doc files * Thu Mar 15 2001 Peter Bieringer - Add doc directory also to files to make sure the directory will be removed on update or deinstall - change install permissions for entries in doc directory - change "make install" to "make installonly" (make test should be only executed once) * Wed Mar 14 2001 Peter Bieringer - Add "make clean" and "make test" on build * Tue Mar 13 2001 Peter Bieringer - add CREDITS and TODO for install * Sat Mar 10 2001 Peter Bieringer - enable "URL" * Sun Mar 04 2001 Peter Bieringer - change install location to /bin * Tue Feb 27 2001 Peter Bieringer - review for new release, now named "ipv6calc" - review install section for RedHat 7.0.91 * Sun Feb 25 2001 Peter Bieringer - initial build ipv6calc-1.0.0/contrib/ipv6calc.spec.in000066400000000000000000000334641312366535500176720ustar00rootroot00000000000000# Project : ipv6calc # File : contrib/ipv6calc.spec # Copyright : 2001-2016 by Peter Bieringer # $Id: 4381a84cff46e8b47bbb035d145f0f1fe2bd8c5b $ # enable the following for intermediate builds #%#define gitcommit d3a4108cb7aeb6f731bb07989f91d8a7f449f0f0 %if 0%{?gitcommit:1} %global shortcommit %(c=%{gitcommit}; echo ${c:0:7}) %define build_timestamp %(date +"%Y%m%d") %global gittag .%{build_timestamp}git%{shortcommit} %endif # shared library support (deselectable) %if "%{?_without_shared:0}%{?!_without_shared:1}" == "1" %define enable_shared 1 %endif Summary: IPv6 address format change and calculation utility Name: ipv6calc Version: @PACKAGE_VERSION@ Release: 16%{?gittag}%{?dist} Group: Applications/Text URL: http://www.deepspace6.net/projects/%{name}.html License: GPLv2 %if 0%{?gitcommit:1} Source: https://github.com/pbiering/%{name}/archive/%{gitcommit}/%{name}-%{gitcommit}.tar.gz %else Source: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/%{name}-%{version}.tar.gz %endif BuildRequires: openssl-devel BuildRequires: perl-generators BuildRequires: perl(Digest::MD5), perl(Digest::SHA1), perl(URI::Escape) BuildRequires: perl(strict), perl(warnings) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) %if %{enable_shared} Provides: ipv6calc-libs = %{version}-%{release}} %else Conflicts: ipv6calc-libs %endif BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # mod_ipv6calc related %{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} %{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}} %{!?_httpd_confdir: %{expand: %%global _httpd_confdir %%{_sysconfdir}/httpd/conf.d}} # database support (deselectable) %if "%{?_without_ip2location:0}%{?!_without_ip2location:1}" == "1" %define enable_ip2location 1 %endif %if "%{?_without_geoip:0}%{?!_without_geoip:1}" == "1" %define enable_geoip 1 %endif %if "%{?_without_dbip:0}%{?!_without_dbip:1}" == "1" %define enable_dbip 1 %endif %if "%{?_without_external:0}%{?!_without_external:1}" == "1" %define enable_external 1 %endif %if "%{?_without_mod_ipv6calc:0}%{?!_without_mod_ipv6calc:1}" == "1" %define enable_mod_ipv6calc 1 %endif # database locations %define ip2location_db %{_datadir}/IP2Location %define geoip_db %{_datadir}/GeoIP %define dbip_db %{_datadir}/DBIP %define external_db %{_datadir}/%{name}/db # Berkeley DB selector %define require_db4 %(echo "%{dist}" | egrep -q '^\.el(5|6)$' && echo 1 || echo 0) %if %{require_db4} BuildRequires: db4-devel %else BuildRequires: libdb-devel %endif # RPM license macro detector %define rpm_license_extra %(echo "%{_defaultlicensedir}" | grep -q defaultlicensedir && echo 0 || echo 1) %description ipv6calc is a small utility which formats and calculates IPv4/IPv6 addresses in different ways. Install this package, if you want to retrieve information about a particular IPv4/IPv6/MAC address (-i ADDRESS) or make life easier in adding entries to reverse IPv6 DNS zones (e.g. -a 2001:db8:1234::1/48). In addition many format and type conversions are supported, see online help and/or given URL for more. Also this package contains additional programs - ipv6loganon: anonymize Apache web server logs - ipv6logconv: special Apache web server log converter (examples included for use with analog) - ipv6logstats: create statistics from list of IPv4/IPv6 addresses (examples included for use with gnu-plot) - mod_ipv6calc: Apache module for anonymization/information logging on-the-fly Support for following databases - IP2Location %{?enable_ip2location:ENABLED}%{?!enable_ip2location:DISABLED} default directory for downloaded db files: %{ip2location_db} (requires also external library on system) - GeoIP %{?enable_geoip:ENABLED}%{?!enable_geoip:DISABLED} default directory for downloaded db files: %{geoip_db} (requires also external library on system) - db-ip.com %{?enable_dbip:ENABLED}%{?!enable_dbip:DISABLED} (once generated database files are found on system) default directory for generated db files: %{dbip_db} - External %{?enable_external:ENABLED}%{?!enable_external:DISABLED} default directory for generated db files: %{external_db} Built %{?enable_shared:WITH}%{?!enable_shared:WITHOUT} shared-library Available rpmbuild rebuild options: --without ip2location --without geoip --without dbip --without external --without shared --without mod_ipv6calc %package ipv6calcweb Summary: IP address information web utility Group: Applications/Internet Requires: ipv6calc httpd Requires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) perl(HTML::Entities) BuildRequires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) perl(HTML::Entities) %description ipv6calcweb ipv6calcweb contains a CGI program and a configuration file for displaying information of IP addresses on a web page using ipv6calc. Check/adjust %{_sysconfdir}/httpd/conf.d/ipv6calcweb.conf Default restricts access to localhost %if %{enable_mod_ipv6calc} %package mod_ipv6calc Summary: Apache module for ipv6calc Group: Applications/Internet BuildRequires: httpd-devel psmisc curl Requires: httpd >= @HTTPD_VERSION_MAJOR_MINOR@.0 Requires: httpd <= @HTTPD_VERSION_MAJOR_MINOR@.99999 Requires: ipv6calc = %{version}-%{release} %if %{enable_shared} Requires: ipv6calc-libs = %{version}-%{release}} %endif %description mod_ipv6calc mod_ipv6calc contains an Apache module and a default configuration file. Features: - store anonymized IPv4/v6 address in environment variable - store CountryCode of IPv4/v6 address in environment variable (environment variables can be used for custom log format) Check/adjust %{_sysconfdir}/httpd/conf.d/ipv6calc.conf By default the module is disabled. %endif %prep %if 0%{?gitcommit:1} %setup -q -n %{name}-%{gitcommit} %else %setup -q %endif %configure \ %{?enable_ip2location:--enable-ip2location} \ %{?enable_ip2location:--with-ip2location-dynamic --with-ip2location-headers-fallback} \ --with-ip2location-db=%{ip2location_db} \ %{?enable_geoip:--enable-geoip} \ %{?enable_geoip:--with-geoip-dynamic --with-geoip-headers-fallback} \ --with-geoip-db=%{geoip_db} \ %{?enable_dbip:--enable-dbip} \ --with-dbip-db=%{dbip_db} \ %{?enable_external:--enable-external} \ --with-external-db=%{external_db} \ %{?enable_shared:--enable-shared} \ %{?enable_mod_ipv6calc:--enable-mod_ipv6calc} %build make clean make %{?_smp_mflags} COPTS="$RPM_OPT_FLAGS" %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} ## Install examples and helper files install -d -p %{buildroot}%{_docdir}/%{name}-%{version}/ ## examples install -d %{buildroot}%{_datadir}/%{name}/examples/ # ipv6logconv install -d %{buildroot}%{_datadir}/%{name}/examples/ipv6logconv for file in examples/analog/*.{cfg,txt,tab,sh}; do install $file %{buildroot}%{_datadir}/%{name}/examples/ipv6logconv/ done # ipv6loganon install -d %{buildroot}%{_datadir}/%{name}/examples/ipv6loganon for file in ipv6loganon/README; do install $file %{buildroot}%{_datadir}/%{name}/examples/ipv6loganon/ done # ipv6logstats install -d %{buildroot}%{_datadir}/%{name}/examples/ipv6logstats for file in ipv6logstats/README ipv6logstats/example_* ipv6logstats/collect_ipv6logstats.pl; do install $file %{buildroot}%{_datadir}/%{name}/examples/ipv6logstats/ done # db directory install -d %{buildroot}%{external_db} # ipv6calcweb install -d %{buildroot}%{_sysconfdir}/httpd/conf.d install -d %{buildroot}%{_localstatedir}/www/cgi-bin install ipv6calcweb/ipv6calcweb.conf %{buildroot}%{_sysconfdir}/httpd/conf.d install -m 755 ipv6calcweb/ipv6calcweb.cgi %{buildroot}%{_localstatedir}/www/cgi-bin %clean rm -rf %{buildroot} %check %ifnarch ppc64 make test %endif %files %if %{rpm_license_extra} %doc ChangeLog README CREDITS TODO USAGE doc/ipv6calc.lyx doc/ipv6calc.sgml doc/ipv6calc.html doc/ipv6calc.xml %license COPYING LICENSE %else %doc ChangeLog README CREDITS TODO USAGE doc/ipv6calc.lyx doc/ipv6calc.sgml doc/ipv6calc.html doc/ipv6calc.xml COPYING LICENSE %endif %defattr(644,root,root,755) # binaries %attr(755,-,-) %{_bindir}/* # man pages %{_mandir}/man8/* # tools %attr(755,-,-) %{_datadir}/%{name}/tools/* # shared library %{?enable_shared:%attr(755,-,-) %{_libdir}/libipv6calc*} # database directory %{external_db} # examples %attr(755,-,-) %{_datadir}/%{name}/examples/*/*.pl %attr(755,-,-) %{_datadir}/%{name}/examples/*/*.sh %{_datadir}/%{name}/examples/* %files ipv6calcweb %if %{rpm_license_extra} %doc ipv6calcweb/README ipv6calcweb/USAGE %license COPYING LICENSE %else %doc ipv6calcweb/README ipv6calcweb/USAGE COPYING LICENSE %endif %defattr(644,root,root,755) %attr(755,-,-) %{_localstatedir}/www/cgi-bin/ipv6calcweb.cgi %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipv6calcweb.conf %files mod_ipv6calc %if %{rpm_license_extra} %doc mod_ipv6calc/README.mod_ipv6calc %license COPYING LICENSE %else %doc mod_ipv6calc/README.mod_ipv6calc COPYING LICENSE %endif %defattr(644,root,root,755) %config(noreplace) %{_httpd_confdir}/ipv6calc.conf %attr(755,-,-) %{_httpd_moddir}/mod_ipv6calc.so %post /usr/sbin/ldconfig %postun /usr/sbin/ldconfig %changelog * Wed Dec 28 2016 Peter Bieringer - add support for git commit hash - align RPM build requires with fedora-scm * Thu Jul 30 2015 Peter Bieringer - add automatic RPM license feature detection * Sat Jul 25 2015 Peter Bieringer - replace ipv6calc.{lyx,sgml,html,xml} by dedicated file.suffix * Mon Jun 01 2015 Peter Bieringer - add subpackage mod_ipv6calc * Sat Mar 07 2015 Peter Bieringer - take use of license macro * Sun Mar 01 2015 Peter Bieringer - remove not necessary x-bits for some files by proper definition in %files section * Wed Feb 18 2015 Peter Bieringer - delete subpackage db, major spec file alignment with Fedora-SCM version * Sun Feb 15 2015 Peter Bieringer - extend sub-package db * Tue Dec 09 2014 Peter Bieringer - create new sub-package: db with all related tools - configure: --enable-external * Sat Oct 25 2014 Peter Bieringer - add /usr/share/ipv6calc/db directory * Fri Oct 10 2014 Peter Bieringer - add DBIP-update.sh DBIP-generate-db.pl * Mon Jul 14 2014 Peter Bieringer - review description * Sun Feb 02 2014 Peter Bieringer - add support for optional shared-library build * Tue Nov 12 2013 Peter Bieringer - add datadir with tools * Thu Sep 26 2013 Peter Bieringer - add support for --with geoip-dyn and --with ip2location-dyn * Wed Sep 12 2012 Peter Bieringer - change requirements for ip2location to Mandrake Linux compatible names - change location of "ipv6calc" from bin to %{_bindir} - install tools/GeoIP-update.sh tools/IP2Location-update.sh to doc dir * Sun Jan 01 2012 Peter Bieringer - create subpackage for ipv6calcweb - minor review * Sat Oct 08 2011 Peter Bieringer - reduce "make test" to "make test-minimal" * Wed Nov 19 2008 Peter Bieringer - switch from "make installonly" to "make install" * Wed Feb 14 2007 Peter Bieringer - remove support for build option --with-geoip-system - add support for 'ipv6loganon' * Sat Oct 28 2006 Peter Bieringer - add support for build option --with-geoip-system * Sun Aug 06 2006 Peter Bieringer - add support for build option --with-geoip * Wed Jun 07 2006 Peter Bieringer - add support for build option --with-ip2location * Wed Jul 20 2005 Peter Bieringer - adjust code because of use of "bindir" in Makefile of ivp6calc * Sat Oct 30 2004 Peter Bieringer - remove openssl(-devel) from requirements, no longer needed * Sat Nov 22 2003 Peter Bieringer - adjustments * Fri Nov 21 2003 Peter Bieringer - add ipv6logstats - add man pages - add configure options * Mon Nov 11 2002 Peter Bieringer - change IPv6 address in description * Sat Apr 20 2002 Peter Bieringer - Change URL * Sun Apr 07 2002 Peter Bieringer - add more analog example files * Fri Apr 05 2002 Peter Bieringer - remove BuildRequires extension, not needed for normal build * Sun Mar 24 2002 Peter Bieringer - extend BuildRequires for perl /usr/bin/aggregate wget * Mon Mar 18 2002 Peter Bieringer - add ipv6calcweb.cgi * Sat Mar 16 2002 Peter Bieringer - add ipv6logconv, analog examples * Mon Mar 11 2002 Peter Bieringer - Add perl to buildrequire and openssl to require * Mon Jan 21 2002 Peter Bieringer - Add LICENSE + COPYING file * Thu Dec 27 2001 Peter Bieringer - Add comment header - Add call to configure on build * Tue Dec 18 2001 Peter Bieringer - Replace hardwired version number with autoconf/configure variable * Wed Apr 25 2001 Peter Bieringer - Fix permissions of doc files * Thu Mar 15 2001 Peter Bieringer - Add doc directory also to files to make sure the directory will be removed on update or deinstall - change install permissions for entries in doc directory - change "make install" to "make installonly" (make test should be only executed once) * Wed Mar 14 2001 Peter Bieringer - Add "make clean" and "make test" on build * Tue Mar 13 2001 Peter Bieringer - add CREDITS and TODO for install * Sat Mar 10 2001 Peter Bieringer - enable "URL" * Sun Mar 04 2001 Peter Bieringer - change install location to /bin * Tue Feb 27 2001 Peter Bieringer - review for new release, now named "ipv6calc" - review install section for RedHat 7.0.91 * Sun Feb 25 2001 Peter Bieringer - initial build ipv6calc-1.0.0/contrib/scripts-by-others/000077500000000000000000000000001312366535500202715ustar00rootroot00000000000000ipv6calc-1.0.0/contrib/scripts-by-others/README000066400000000000000000000002351312366535500211510ustar00rootroot00000000000000Contributed scripts by others, no maintenance, no warranty at all by me. For licenses, see scripts itself. $Id: ae73b566e80c598cb3608d0bc2e09b8583a44d48 $ ipv6calc-1.0.0/contrib/scripts-by-others/dig6000066400000000000000000000025651312366535500210550ustar00rootroot00000000000000#!/bin/bash # dig6 v0.4 by mikolas bingemer # http://netfreaks.org/dig6 # # little dig/ipv6calc wrapper for easy digging # IPV6CALC=/bin/ipv6calc DIG=/usr/bin/dig # usage() { echo -e "Usage: dig6 [] [options]\n allowed types: arpa, int"; exit 1 } if [ ! -x "$IPV6CALC" ]; then echo "Can't exceute $IPV6CALC"; exit 1 fi; if [ ! -x "$DIG" ]; then echo "Can't exceute $DIG"; exit 1 fi; if [ ! $# -gt 0 ]; then usage fi; echo "; <<>> dig6 0.4 <<>> "$@"" if [ "$1" = "arpa" ]; then type=$1; shift if [ ! $# -gt 0 ]; then usage; fi elif [ "$1" = "int" ]; then type=$1; shift if [ ! $# -gt 0 ]; then usage; fi fi IPV6ADDR=$1;shift MODE=aaaa if [ `echo "$IPV6ADDR" | grep "/"` ]; then echo ";; object: ipv6 network" echo ";; query: ns ($type)" echo "" MODE=ns elif [ `echo "$IPV6ADDR" | grep ":"` ]; then echo ";; object: ipv6 address" echo ";; query: ptr ($type)" echo "" MODE=ptr else echo ";; object: hostname" echo ";; query: aaaa" "$DIG" aaaa "$IPV6ADDR" "$@" exit 0 fi; if [ ! "$type" ]; then if [ "`echo $IPV6ADDR | grep "3ffe:"`" ]; then type="int" else type="arpa" fi fi case "$type" in int) IP6=`"$IPV6CALC" --out revnibbles.int --in ipv6addr $IPV6ADDR` || exit 1 ;; arpa) IP6=`"$IPV6CALC" --out revnibbles.arpa --in ipv6addr $IPV6ADDR` || exit 1 ;; esac echo ";; CALCULATED:" echo ";$IP6" "$DIG" $MODE $IP6 "$@" exit 0 ipv6calc-1.0.0/databases/000077500000000000000000000000001312366535500151575ustar00rootroot00000000000000ipv6calc-1.0.0/databases/as-assignment/000077500000000000000000000000001312366535500177305ustar00rootroot00000000000000ipv6calc-1.0.0/databases/as-assignment/Makefile000066400000000000000000000011131312366535500213640ustar00rootroot00000000000000# Project : ipv6calc/databases/cc-assignment # File : Makefile # Version : $Id: e33e492abb48adb8aa9398409c0ff84ca5ca8c86 $ # Copyright : 2013-2013 by Peter Bieringer # # Information: # Makefile for asn-assignment all: test -f dbasn_assignment.h || ${MAKE} update install: echo "Nothing to do" update: echo "Generate new header file, if necessary" ./check-run-create.sh updateclean: echo "Delete header file" rm -f dbasn_assignment.h distclean: echo "Nothing to do" autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/as-assignment/check-run-create.sh000077500000000000000000000022221312366535500234050ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/databases/cc-assignment # File : check-run-create.sh # Version : $Id: 20a824e62817236ced91deca0d9995dba316b0e0 $ # Copyright : 2013-2013 by Peter Bieringer #set -x flag_update=0 file_header="dbasn_assignment.h" if [ -f $file_header ]; then ARIN=`find ../registries/arin -type f -name 'delegated-arin*' -newer $file_header | wc -l` APNIC=`find ../registries/apnic -type f -name 'delegated-apnic*' -newer $file_header | wc -l` RIPENCC=`find ../registries/ripencc -type f -name 'delegated-ripencc*' -newer $file_header | wc -l` LACNIC=`find ../registries/lacnic -type f -name 'delegated-lacnic*' -newer $file_header | wc -l` AFRINIC=`find ../registries/afrinic -type f -name 'delegated-afrinic*' -newer $file_header | wc -l` echo "Found newer than $file_header file: ARIN=$ARIN APNIC=$APNIC RIPENCC=$RIPENCC LACNIC=$LACNIC AFRINIC=$AFRINIC" if [ $ARIN -gt 0 -o $APNIC -gt 0 -o $RIPENCC -gt 0 -o $LACNIC -gt 0 -o $AFRINIC -gt 0 ]; then flag_update=1 fi else flag_update=1 fi if [ $flag_update -eq 1 ]; then ./create-asn-registry-list.pl else echo " Nothing to do!" fi ipv6calc-1.0.0/databases/as-assignment/create-asn-registry-list.pl000077500000000000000000000061711312366535500251360ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc/databases/as-assignment # File : create-registry-list.pl # Version : $Id: create-asn-registry-list.pl,v 1.4 2014/09/24 09:07:56 ds6peter Exp $ # Copyright : 2013-2013 by Peter Bieringer # License : GNU GPL v2 # # Information: # Perl program which creates AS Number -> Registry assignment header my $debug = 0; my $OUTFILE = "dbasn_assignment.h"; my $file_asn = "../registries/iana/as-numbers.txt"; my %assignments; my $entry = 0; my %date_created; sub proceed_file($$) { $file = $_[0]; $type = $_[1]; print "Proceed file: " . $file . " with type " . $type . "\n"; open(FILE, "<$file") || die "Cannot open file: $file"; my $line; while () { $line = $_; chomp $line; if ($line =~ /^\s*([0-9]{4}-[0-9]{2}-[0-9]{2})\s*$/) { $date_created{'IANA'} = $1; $date_created{'IANA'} =~ s/-//go; print "Found create date: " . $date_created{'IANA'} . "\n"; }; my ($Number, $Description, $Whois, $Reference, $RegistrationDate); if ($type eq "csv") { ($Number, $Description, $Whois, $Reference, $RegistrationDate) = split /,/, $line; # skip not proper lines next if (! defined $Number); next if (! defined $Description); next if ($Description !~ /^Assigned by (\S+)$/o); $reg = $1; } elsif ($type eq "txt") { next if ($line !~ /^\s*([0-9-]+)\s*Assigned by (\S+)/o); $Number = $1; $reg = $2; } else { die "unsupported type: " . $type; }; #print $line . "\n"; $reg = uc($reg); $reg =~ s/RIPE/RIPENCC/go; if ( $reg ne "ARIN" && $reg ne "APNIC" && $reg ne "RIPENCC" && $reg ne "IANA" && $reg ne "LACNIC" && $reg ne "AFRINIC") { print "Unsupported registry: " . $reg . "\n"; next; }; my ($start, $stop) = split /-/, $Number; if ((! defined $stop) || ($stop eq "")) { $stop = $start; }; $assignments{$entry}->{'start'} = $start; $assignments{$entry}->{'stop'} = $stop; $assignments{$entry}->{'reg'} = $reg; $entry++; }; close(FILE); }; proceed_file($file_asn , "txt"); # Create header file print "Create outfile now: " . $OUTFILE . "\n"; open(OUT, ">$OUTFILE") || die "Cannot open outfile: $OUTFILE"; # Header my $now_string = localtime; print OUT qq| /* * Project : ipv6calc * File : dbasn_assignment.h |; print OUT " * Version : \$I"; print OUT "d:\$\n"; print OUT qq| * Generated : $now_string * Data copyright: IANA * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "libipv6calc.h" |; # print creation dates my $string = ""; for my $reg (sort keys %date_created) { if (length($string) > 0) { $string .= " "; }; $string .= $reg . "/" . $date_created{$reg}; }; print OUT "\/\*\@unused\@\*\/ static const char* dbasn_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; my %data_hint; # Main data structure print OUT qq| static const s_asn_assignment dbasn_assignment[] = { |; for ($i = 0; $i < $entry; $i++) { printf OUT "\t{ %10d, %10d, REGISTRY_%-10s },\n", $assignments{$i}->{'start'}, $assignments{$i}->{'stop'}, $assignments{$i}->{'reg'}; }; print OUT qq| }; |; print "Finished\n"; ipv6calc-1.0.0/databases/as-assignment/dbasn_assignment.h000066400000000000000000003412201312366535500234220ustar00rootroot00000000000000 /* * Project : ipv6calc * File : dbasn_assignment.h * Version : $Id: 82bb5f1090009aa70ee8f34ef3d5eacd548257db $ * Generated : Sun Jun 25 09:47:48 2017 * Data copyright: IANA * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "libipv6calc.h" /*@unused@*/ static const char* dbasn_registry_status __attribute__ ((__unused__)) = "IANA/20160908"; static const s_asn_assignment dbasn_assignment[] = { { 1, 6, REGISTRY_ARIN }, { 7, 7, REGISTRY_RIPENCC }, { 8, 27, REGISTRY_ARIN }, { 28, 28, REGISTRY_RIPENCC }, { 29, 136, REGISTRY_ARIN }, { 137, 137, REGISTRY_RIPENCC }, { 138, 172, REGISTRY_ARIN }, { 173, 173, REGISTRY_APNIC }, { 174, 223, REGISTRY_ARIN }, { 224, 224, REGISTRY_RIPENCC }, { 225, 247, REGISTRY_ARIN }, { 248, 251, REGISTRY_RIPENCC }, { 252, 260, REGISTRY_ARIN }, { 261, 261, REGISTRY_RIPENCC }, { 262, 277, REGISTRY_ARIN }, { 278, 278, REGISTRY_LACNIC }, { 279, 285, REGISTRY_ARIN }, { 286, 286, REGISTRY_RIPENCC }, { 287, 287, REGISTRY_ARIN }, { 288, 288, REGISTRY_RIPENCC }, { 289, 293, REGISTRY_ARIN }, { 294, 294, REGISTRY_RIPENCC }, { 295, 374, REGISTRY_ARIN }, { 375, 375, REGISTRY_RIPENCC }, { 376, 377, REGISTRY_ARIN }, { 378, 378, REGISTRY_RIPENCC }, { 379, 512, REGISTRY_ARIN }, { 513, 513, REGISTRY_RIPENCC }, { 514, 516, REGISTRY_ARIN }, { 517, 517, REGISTRY_RIPENCC }, { 518, 527, REGISTRY_ARIN }, { 528, 529, REGISTRY_RIPENCC }, { 530, 539, REGISTRY_ARIN }, { 540, 540, REGISTRY_ARIN }, { 541, 543, REGISTRY_ARIN }, { 544, 544, REGISTRY_RIPENCC }, { 545, 552, REGISTRY_ARIN }, { 553, 553, REGISTRY_RIPENCC }, { 554, 558, REGISTRY_ARIN }, { 559, 559, REGISTRY_RIPENCC }, { 560, 564, REGISTRY_ARIN }, { 565, 565, REGISTRY_RIPENCC }, { 566, 579, REGISTRY_ARIN }, { 580, 580, REGISTRY_ARIN }, { 581, 589, REGISTRY_ARIN }, { 590, 590, REGISTRY_RIPENCC }, { 591, 592, REGISTRY_ARIN }, { 593, 593, REGISTRY_RIPENCC }, { 594, 668, REGISTRY_ARIN }, { 669, 669, REGISTRY_RIPENCC }, { 670, 675, REGISTRY_ARIN }, { 676, 676, REGISTRY_LACNIC }, { 677, 678, REGISTRY_ARIN }, { 679, 680, REGISTRY_RIPENCC }, { 681, 681, REGISTRY_APNIC }, { 682, 694, REGISTRY_ARIN }, { 695, 697, REGISTRY_RIPENCC }, { 698, 708, REGISTRY_ARIN }, { 709, 710, REGISTRY_RIPENCC }, { 711, 711, REGISTRY_ARIN }, { 712, 712, REGISTRY_RIPENCC }, { 713, 718, REGISTRY_ARIN }, { 719, 719, REGISTRY_RIPENCC }, { 720, 759, REGISTRY_ARIN }, { 760, 761, REGISTRY_RIPENCC }, { 762, 763, REGISTRY_ARIN }, { 764, 764, REGISTRY_RIPENCC }, { 765, 765, REGISTRY_ARIN }, { 766, 766, REGISTRY_RIPENCC }, { 767, 773, REGISTRY_ARIN }, { 774, 783, REGISTRY_RIPENCC }, { 784, 785, REGISTRY_ARIN }, { 786, 786, REGISTRY_RIPENCC }, { 787, 788, REGISTRY_ARIN }, { 789, 790, REGISTRY_RIPENCC }, { 791, 1100, REGISTRY_ARIN }, { 1101, 1200, REGISTRY_RIPENCC }, { 1201, 1202, REGISTRY_ARIN }, { 1203, 1203, REGISTRY_RIPENCC }, { 1204, 1204, REGISTRY_ARIN }, { 1205, 1205, REGISTRY_RIPENCC }, { 1206, 1212, REGISTRY_ARIN }, { 1213, 1213, REGISTRY_RIPENCC }, { 1214, 1220, REGISTRY_ARIN }, { 1221, 1221, REGISTRY_APNIC }, { 1222, 1227, REGISTRY_ARIN }, { 1228, 1232, REGISTRY_AFRINIC }, { 1233, 1233, REGISTRY_APNIC }, { 1234, 1235, REGISTRY_RIPENCC }, { 1236, 1236, REGISTRY_ARIN }, { 1237, 1237, REGISTRY_APNIC }, { 1238, 1240, REGISTRY_ARIN }, { 1241, 1241, REGISTRY_RIPENCC }, { 1242, 1247, REGISTRY_ARIN }, { 1248, 1248, REGISTRY_RIPENCC }, { 1249, 1249, REGISTRY_ARIN }, { 1250, 1250, REGISTRY_APNIC }, { 1251, 1251, REGISTRY_LACNIC }, { 1252, 1252, REGISTRY_ARIN }, { 1253, 1253, REGISTRY_RIPENCC }, { 1254, 1256, REGISTRY_ARIN }, { 1257, 1257, REGISTRY_RIPENCC }, { 1258, 1266, REGISTRY_ARIN }, { 1267, 1275, REGISTRY_RIPENCC }, { 1276, 1278, REGISTRY_ARIN }, { 1279, 1279, REGISTRY_RIPENCC }, { 1280, 1289, REGISTRY_ARIN }, { 1290, 1290, REGISTRY_RIPENCC }, { 1291, 1291, REGISTRY_ARIN }, { 1292, 1292, REGISTRY_LACNIC }, { 1293, 1295, REGISTRY_ARIN }, { 1296, 1296, REGISTRY_LACNIC }, { 1297, 1297, REGISTRY_RIPENCC }, { 1298, 1298, REGISTRY_ARIN }, { 1299, 1309, REGISTRY_RIPENCC }, { 1310, 1317, REGISTRY_ARIN }, { 1318, 1318, REGISTRY_RIPENCC }, { 1319, 1341, REGISTRY_ARIN }, { 1342, 1342, REGISTRY_RIPENCC }, { 1343, 1351, REGISTRY_ARIN }, { 1352, 1353, REGISTRY_RIPENCC }, { 1354, 1546, REGISTRY_ARIN }, { 1547, 1547, REGISTRY_RIPENCC }, { 1548, 1652, REGISTRY_ARIN }, { 1653, 1654, REGISTRY_RIPENCC }, { 1655, 1657, REGISTRY_ARIN }, { 1658, 1658, REGISTRY_ARIN }, { 1659, 1659, REGISTRY_APNIC }, { 1660, 1662, REGISTRY_ARIN }, { 1663, 1663, REGISTRY_RIPENCC }, { 1664, 1679, REGISTRY_ARIN }, { 1680, 1680, REGISTRY_RIPENCC }, { 1681, 1703, REGISTRY_ARIN }, { 1704, 1704, REGISTRY_APNIC }, { 1705, 1706, REGISTRY_ARIN }, { 1707, 1726, REGISTRY_RIPENCC }, { 1727, 1728, REGISTRY_ARIN }, { 1729, 1729, REGISTRY_RIPENCC }, { 1730, 1731, REGISTRY_ARIN }, { 1732, 1732, REGISTRY_RIPENCC }, { 1733, 1737, REGISTRY_ARIN }, { 1738, 1739, REGISTRY_RIPENCC }, { 1740, 1740, REGISTRY_ARIN }, { 1741, 1741, REGISTRY_RIPENCC }, { 1742, 1747, REGISTRY_ARIN }, { 1748, 1748, REGISTRY_RIPENCC }, { 1749, 1751, REGISTRY_ARIN }, { 1752, 1752, REGISTRY_RIPENCC }, { 1753, 1753, REGISTRY_ARIN }, { 1754, 1756, REGISTRY_RIPENCC }, { 1757, 1758, REGISTRY_ARIN }, { 1759, 1759, REGISTRY_RIPENCC }, { 1760, 1763, REGISTRY_ARIN }, { 1764, 1764, REGISTRY_RIPENCC }, { 1765, 1767, REGISTRY_ARIN }, { 1768, 1769, REGISTRY_APNIC }, { 1770, 1771, REGISTRY_RIPENCC }, { 1772, 1773, REGISTRY_ARIN }, { 1774, 1774, REGISTRY_RIPENCC }, { 1775, 1775, REGISTRY_ARIN }, { 1776, 1776, REGISTRY_RIPENCC }, { 1777, 1779, REGISTRY_ARIN }, { 1780, 1780, REGISTRY_RIPENCC }, { 1781, 1781, REGISTRY_APNIC }, { 1782, 1796, REGISTRY_ARIN }, { 1797, 1797, REGISTRY_LACNIC }, { 1798, 1830, REGISTRY_ARIN }, { 1831, 1831, REGISTRY_LACNIC }, { 1832, 1832, REGISTRY_ARIN }, { 1833, 1833, REGISTRY_RIPENCC }, { 1834, 1834, REGISTRY_ARIN }, { 1835, 1837, REGISTRY_RIPENCC }, { 1838, 1839, REGISTRY_ARIN }, { 1840, 1840, REGISTRY_LACNIC }, { 1841, 1841, REGISTRY_RIPENCC }, { 1842, 1848, REGISTRY_ARIN }, { 1849, 1850, REGISTRY_RIPENCC }, { 1851, 1851, REGISTRY_APNIC }, { 1852, 1852, REGISTRY_ARIN }, { 1853, 1854, REGISTRY_RIPENCC }, { 1855, 1876, REGISTRY_ARIN }, { 1877, 1901, REGISTRY_RIPENCC }, { 1902, 1903, REGISTRY_RIPENCC }, { 1904, 1915, REGISTRY_ARIN }, { 1916, 1916, REGISTRY_LACNIC }, { 1917, 1920, REGISTRY_ARIN }, { 1921, 1923, REGISTRY_RIPENCC }, { 1924, 1925, REGISTRY_ARIN }, { 1926, 1926, REGISTRY_RIPENCC }, { 1927, 1929, REGISTRY_ARIN }, { 1930, 1930, REGISTRY_RIPENCC }, { 1931, 1934, REGISTRY_ARIN }, { 1935, 1955, REGISTRY_RIPENCC }, { 1956, 1959, REGISTRY_ARIN }, { 1960, 1962, REGISTRY_RIPENCC }, { 1963, 1966, REGISTRY_ARIN }, { 1967, 1967, REGISTRY_RIPENCC }, { 1968, 2003, REGISTRY_ARIN }, { 2004, 2004, REGISTRY_RIPENCC }, { 2005, 2011, REGISTRY_ARIN }, { 2012, 2012, REGISTRY_RIPENCC }, { 2013, 2015, REGISTRY_ARIN }, { 2016, 2017, REGISTRY_RIPENCC }, { 2018, 2018, REGISTRY_AFRINIC }, { 2019, 2025, REGISTRY_ARIN }, { 2026, 2029, REGISTRY_RIPENCC }, { 2030, 2035, REGISTRY_ARIN }, { 2036, 2036, REGISTRY_RIPENCC }, { 2037, 2037, REGISTRY_ARIN }, { 2038, 2040, REGISTRY_RIPENCC }, { 2041, 2041, REGISTRY_ARIN }, { 2042, 2042, REGISTRY_APNIC }, { 2043, 2043, REGISTRY_RIPENCC }, { 2044, 2044, REGISTRY_ARIN }, { 2045, 2045, REGISTRY_RIPENCC }, { 2046, 2046, REGISTRY_ARIN }, { 2047, 2047, REGISTRY_RIPENCC }, { 2048, 2048, REGISTRY_ARIN }, { 2049, 2049, REGISTRY_RIPENCC }, { 2050, 2056, REGISTRY_ARIN }, { 2057, 2106, REGISTRY_RIPENCC }, { 2107, 2136, REGISTRY_RIPENCC }, { 2137, 2143, REGISTRY_ARIN }, { 2144, 2144, REGISTRY_APNIC }, { 2145, 2145, REGISTRY_ARIN }, { 2146, 2146, REGISTRY_LACNIC }, { 2147, 2148, REGISTRY_RIPENCC }, { 2149, 2173, REGISTRY_ARIN }, { 2174, 2273, REGISTRY_RIPENCC }, { 2274, 2276, REGISTRY_ARIN }, { 2277, 2277, REGISTRY_LACNIC }, { 2278, 2377, REGISTRY_RIPENCC }, { 2378, 2379, REGISTRY_ARIN }, { 2380, 2380, REGISTRY_RIPENCC }, { 2381, 2384, REGISTRY_ARIN }, { 2385, 2385, REGISTRY_APNIC }, { 2386, 2386, REGISTRY_ARIN }, { 2387, 2488, REGISTRY_RIPENCC }, { 2489, 2493, REGISTRY_ARIN }, { 2494, 2494, REGISTRY_RIPENCC }, { 2495, 2496, REGISTRY_ARIN }, { 2497, 2528, REGISTRY_APNIC }, { 2529, 2530, REGISTRY_RIPENCC }, { 2531, 2536, REGISTRY_ARIN }, { 2537, 2537, REGISTRY_APNIC }, { 2538, 2540, REGISTRY_ARIN }, { 2541, 2541, REGISTRY_RIPENCC }, { 2542, 2545, REGISTRY_ARIN }, { 2546, 2547, REGISTRY_RIPENCC }, { 2548, 2548, REGISTRY_ARIN }, { 2549, 2549, REGISTRY_LACNIC }, { 2550, 2553, REGISTRY_ARIN }, { 2554, 2554, REGISTRY_APNIC }, { 2555, 2560, REGISTRY_ARIN }, { 2561, 2561, REGISTRY_AFRINIC }, { 2562, 2562, REGISTRY_ARIN }, { 2563, 2563, REGISTRY_APNIC }, { 2564, 2568, REGISTRY_ARIN }, { 2569, 2570, REGISTRY_APNIC }, { 2571, 2577, REGISTRY_ARIN }, { 2578, 2578, REGISTRY_RIPENCC }, { 2579, 2584, REGISTRY_ARIN }, { 2585, 2614, REGISTRY_RIPENCC }, { 2615, 2637, REGISTRY_ARIN }, { 2638, 2638, REGISTRY_LACNIC }, { 2639, 2642, REGISTRY_ARIN }, { 2643, 2643, REGISTRY_RIPENCC }, { 2644, 2646, REGISTRY_ARIN }, { 2647, 2647, REGISTRY_RIPENCC }, { 2648, 2682, REGISTRY_ARIN }, { 2683, 2683, REGISTRY_RIPENCC }, { 2684, 2696, REGISTRY_ARIN }, { 2697, 2697, REGISTRY_APNIC }, { 2698, 2705, REGISTRY_ARIN }, { 2706, 2706, REGISTRY_APNIC }, { 2707, 2707, REGISTRY_ARIN }, { 2708, 2708, REGISTRY_LACNIC }, { 2709, 2712, REGISTRY_ARIN }, { 2713, 2713, REGISTRY_APNIC }, { 2714, 2714, REGISTRY_ARIN }, { 2715, 2716, REGISTRY_LACNIC }, { 2717, 2738, REGISTRY_ARIN }, { 2739, 2739, REGISTRY_LACNIC }, { 2740, 2755, REGISTRY_ARIN }, { 2756, 2756, REGISTRY_APNIC }, { 2757, 2763, REGISTRY_ARIN }, { 2764, 2764, REGISTRY_APNIC }, { 2765, 2765, REGISTRY_ARIN }, { 2766, 2766, REGISTRY_RIPENCC }, { 2767, 2771, REGISTRY_ARIN }, { 2772, 2772, REGISTRY_APNIC }, { 2773, 2822, REGISTRY_RIPENCC }, { 2823, 2823, REGISTRY_APNIC }, { 2824, 2829, REGISTRY_ARIN }, { 2830, 2879, REGISTRY_RIPENCC }, { 2880, 2894, REGISTRY_ARIN }, { 2895, 2895, REGISTRY_RIPENCC }, { 2896, 2903, REGISTRY_ARIN }, { 2904, 2904, REGISTRY_LACNIC }, { 2905, 2905, REGISTRY_AFRINIC }, { 2906, 2906, REGISTRY_ARIN }, { 2907, 2907, REGISTRY_APNIC }, { 2908, 2914, REGISTRY_ARIN }, { 2915, 2915, REGISTRY_APNIC }, { 2916, 2916, REGISTRY_ARIN }, { 2917, 2917, REGISTRY_RIPENCC }, { 2918, 2920, REGISTRY_ARIN }, { 2921, 2921, REGISTRY_RIPENCC }, { 2922, 2924, REGISTRY_ARIN }, { 2925, 2926, REGISTRY_APNIC }, { 2927, 3057, REGISTRY_ARIN }, { 3058, 3058, REGISTRY_RIPENCC }, { 3059, 3066, REGISTRY_ARIN }, { 3067, 3068, REGISTRY_AFRINIC }, { 3069, 3082, REGISTRY_ARIN }, { 3083, 3109, REGISTRY_RIPENCC }, { 3110, 3131, REGISTRY_ARIN }, { 3132, 3132, REGISTRY_LACNIC }, { 3133, 3140, REGISTRY_ARIN }, { 3141, 3141, REGISTRY_LACNIC }, { 3142, 3150, REGISTRY_ARIN }, { 3151, 3151, REGISTRY_RIPENCC }, { 3152, 3153, REGISTRY_ARIN }, { 3154, 3207, REGISTRY_RIPENCC }, { 3208, 3208, REGISTRY_AFRINIC }, { 3209, 3353, REGISTRY_RIPENCC }, { 3354, 3356, REGISTRY_ARIN }, { 3357, 3357, REGISTRY_APNIC }, { 3358, 3362, REGISTRY_ARIN }, { 3363, 3363, REGISTRY_APNIC }, { 3364, 3381, REGISTRY_ARIN }, { 3382, 3382, REGISTRY_APNIC }, { 3383, 3390, REGISTRY_ARIN }, { 3391, 3391, REGISTRY_APNIC }, { 3392, 3394, REGISTRY_ARIN }, { 3395, 3395, REGISTRY_APNIC }, { 3396, 3411, REGISTRY_ARIN }, { 3412, 3415, REGISTRY_RIPENCC }, { 3416, 3448, REGISTRY_ARIN }, { 3449, 3449, REGISTRY_LACNIC }, { 3450, 3450, REGISTRY_ARIN }, { 3451, 3453, REGISTRY_ARIN }, { 3454, 3454, REGISTRY_LACNIC }, { 3455, 3459, REGISTRY_ARIN }, { 3460, 3460, REGISTRY_APNIC }, { 3461, 3461, REGISTRY_ARIN }, { 3462, 3462, REGISTRY_APNIC }, { 3463, 3483, REGISTRY_ARIN }, { 3484, 3484, REGISTRY_LACNIC }, { 3485, 3486, REGISTRY_ARIN }, { 3487, 3487, REGISTRY_LACNIC }, { 3488, 3488, REGISTRY_APNIC }, { 3489, 3495, REGISTRY_ARIN }, { 3496, 3496, REGISTRY_LACNIC }, { 3497, 3509, REGISTRY_ARIN }, { 3510, 3510, REGISTRY_APNIC }, { 3511, 3547, REGISTRY_ARIN }, { 3548, 3548, REGISTRY_LACNIC }, { 3549, 3549, REGISTRY_ARIN }, { 3550, 3550, REGISTRY_APNIC }, { 3551, 3551, REGISTRY_LACNIC }, { 3552, 3555, REGISTRY_ARIN }, { 3556, 3556, REGISTRY_LACNIC }, { 3557, 3557, REGISTRY_ARIN }, { 3558, 3559, REGISTRY_APNIC }, { 3560, 3582, REGISTRY_ARIN }, { 3583, 3583, REGISTRY_APNIC }, { 3584, 3595, REGISTRY_ARIN }, { 3596, 3597, REGISTRY_LACNIC }, { 3598, 3602, REGISTRY_ARIN }, { 3603, 3603, REGISTRY_LACNIC }, { 3604, 3604, REGISTRY_ARIN }, { 3605, 3605, REGISTRY_APNIC }, { 3606, 3607, REGISTRY_ARIN }, { 3608, 3608, REGISTRY_APNIC }, { 3609, 3623, REGISTRY_ARIN }, { 3624, 3624, REGISTRY_RIPENCC }, { 3625, 3630, REGISTRY_ARIN }, { 3631, 3632, REGISTRY_LACNIC }, { 3633, 3635, REGISTRY_ARIN }, { 3636, 3636, REGISTRY_LACNIC }, { 3637, 3639, REGISTRY_ARIN }, { 3640, 3640, REGISTRY_LACNIC }, { 3641, 3660, REGISTRY_ARIN }, { 3661, 3662, REGISTRY_APNIC }, { 3663, 3688, REGISTRY_ARIN }, { 3689, 3693, REGISTRY_APNIC }, { 3694, 3710, REGISTRY_ARIN }, { 3711, 3711, REGISTRY_APNIC }, { 3712, 3716, REGISTRY_ARIN }, { 3717, 3717, REGISTRY_APNIC }, { 3718, 3740, REGISTRY_ARIN }, { 3741, 3741, REGISTRY_AFRINIC }, { 3742, 3746, REGISTRY_ARIN }, { 3747, 3748, REGISTRY_APNIC }, { 3749, 3756, REGISTRY_ARIN }, { 3757, 3758, REGISTRY_APNIC }, { 3759, 3772, REGISTRY_ARIN }, { 3773, 3773, REGISTRY_APNIC }, { 3774, 3774, REGISTRY_ARIN }, { 3775, 3775, REGISTRY_APNIC }, { 3776, 3783, REGISTRY_ARIN }, { 3784, 3784, REGISTRY_APNIC }, { 3785, 3785, REGISTRY_ARIN }, { 3786, 3787, REGISTRY_APNIC }, { 3788, 3789, REGISTRY_ARIN }, { 3790, 3790, REGISTRY_LACNIC }, { 3791, 3812, REGISTRY_ARIN }, { 3813, 3813, REGISTRY_APNIC }, { 3814, 3815, REGISTRY_ARIN }, { 3816, 3816, REGISTRY_LACNIC }, { 3817, 3824, REGISTRY_ARIN }, { 3825, 3825, REGISTRY_APNIC }, { 3826, 3835, REGISTRY_ARIN }, { 3836, 3836, REGISTRY_APNIC }, { 3837, 3838, REGISTRY_ARIN }, { 3839, 3840, REGISTRY_APNIC }, { 3841, 3842, REGISTRY_ARIN }, { 3843, 3843, REGISTRY_RIPENCC }, { 3844, 3904, REGISTRY_ARIN }, { 3905, 3905, REGISTRY_LACNIC }, { 3906, 3916, REGISTRY_ARIN }, { 3917, 3918, REGISTRY_RIPENCC }, { 3919, 3928, REGISTRY_ARIN }, { 3929, 3929, REGISTRY_APNIC }, { 3930, 3967, REGISTRY_ARIN }, { 3968, 3968, REGISTRY_LACNIC }, { 3969, 3969, REGISTRY_APNIC }, { 3970, 3975, REGISTRY_ARIN }, { 3976, 3976, REGISTRY_APNIC }, { 3977, 4006, REGISTRY_ARIN }, { 4007, 4007, REGISTRY_APNIC }, { 4008, 4039, REGISTRY_ARIN }, { 4040, 4040, REGISTRY_APNIC }, { 4041, 4048, REGISTRY_ARIN }, { 4049, 4049, REGISTRY_APNIC }, { 4050, 4057, REGISTRY_ARIN }, { 4058, 4058, REGISTRY_APNIC }, { 4059, 4059, REGISTRY_ARIN }, { 4060, 4060, REGISTRY_APNIC }, { 4061, 4133, REGISTRY_ARIN }, { 4134, 4134, REGISTRY_APNIC }, { 4135, 4140, REGISTRY_ARIN }, { 4141, 4141, REGISTRY_LACNIC }, { 4142, 4142, REGISTRY_APNIC }, { 4143, 4147, REGISTRY_ARIN }, { 4148, 4148, REGISTRY_RIPENCC }, { 4149, 4157, REGISTRY_ARIN }, { 4158, 4158, REGISTRY_APNIC }, { 4159, 4173, REGISTRY_ARIN }, { 4174, 4175, REGISTRY_APNIC }, { 4176, 4177, REGISTRY_ARIN }, { 4178, 4178, REGISTRY_AFRINIC }, { 4179, 4179, REGISTRY_ARIN }, { 4180, 4196, REGISTRY_ARIN }, { 4197, 4197, REGISTRY_APNIC }, { 4198, 4201, REGISTRY_ARIN }, { 4202, 4202, REGISTRY_APNIC }, { 4203, 4208, REGISTRY_ARIN }, { 4209, 4209, REGISTRY_LACNIC }, { 4210, 4229, REGISTRY_ARIN }, { 4230, 4230, REGISTRY_LACNIC }, { 4231, 4241, REGISTRY_ARIN }, { 4242, 4242, REGISTRY_LACNIC }, { 4243, 4243, REGISTRY_ARIN }, { 4244, 4244, REGISTRY_LACNIC }, { 4245, 4250, REGISTRY_ARIN }, { 4251, 4251, REGISTRY_APNIC }, { 4252, 4269, REGISTRY_ARIN }, { 4270, 4270, REGISTRY_LACNIC }, { 4271, 4273, REGISTRY_ARIN }, { 4274, 4274, REGISTRY_APNIC }, { 4275, 4351, REGISTRY_ARIN }, { 4352, 4352, REGISTRY_APNIC }, { 4353, 4380, REGISTRY_ARIN }, { 4381, 4382, REGISTRY_APNIC }, { 4383, 4386, REGISTRY_ARIN }, { 4387, 4387, REGISTRY_LACNIC }, { 4388, 4404, REGISTRY_ARIN }, { 4405, 4430, REGISTRY_RIPENCC }, { 4431, 4431, REGISTRY_APNIC }, { 4432, 4432, REGISTRY_ARIN }, { 4433, 4434, REGISTRY_APNIC }, { 4435, 4456, REGISTRY_ARIN }, { 4457, 4458, REGISTRY_RIPENCC }, { 4459, 4492, REGISTRY_ARIN }, { 4493, 4493, REGISTRY_LACNIC }, { 4494, 4514, REGISTRY_ARIN }, { 4515, 4515, REGISTRY_APNIC }, { 4516, 4523, REGISTRY_ARIN }, { 4524, 4524, REGISTRY_RIPENCC }, { 4525, 4527, REGISTRY_ARIN }, { 4528, 4528, REGISTRY_APNIC }, { 4529, 4534, REGISTRY_ARIN }, { 4535, 4535, REGISTRY_LACNIC }, { 4536, 4537, REGISTRY_ARIN }, { 4538, 4538, REGISTRY_APNIC }, { 4539, 4570, REGISTRY_ARIN }, { 4571, 4571, REGISTRY_AFRINIC }, { 4572, 4587, REGISTRY_ARIN }, { 4588, 4589, REGISTRY_RIPENCC }, { 4590, 4593, REGISTRY_ARIN }, { 4594, 4594, REGISTRY_APNIC }, { 4595, 4604, REGISTRY_ARIN }, { 4605, 4605, REGISTRY_APNIC }, { 4606, 4607, REGISTRY_ARIN }, { 4608, 4865, REGISTRY_APNIC }, { 4866, 4913, REGISTRY_ARIN }, { 4914, 4914, REGISTRY_LACNIC }, { 4915, 4925, REGISTRY_ARIN }, { 4926, 4926, REGISTRY_LACNIC }, { 4927, 4943, REGISTRY_ARIN }, { 4944, 4944, REGISTRY_LACNIC }, { 4945, 4960, REGISTRY_ARIN }, { 4961, 4961, REGISTRY_APNIC }, { 4962, 4963, REGISTRY_ARIN }, { 4964, 4964, REGISTRY_LACNIC }, { 4965, 4966, REGISTRY_ARIN }, { 4967, 4967, REGISTRY_LACNIC }, { 4968, 4973, REGISTRY_ARIN }, { 4974, 4974, REGISTRY_RIPENCC }, { 4975, 4994, REGISTRY_ARIN }, { 4995, 4995, REGISTRY_LACNIC }, { 4996, 5004, REGISTRY_ARIN }, { 5005, 5005, REGISTRY_LACNIC }, { 5006, 5016, REGISTRY_ARIN }, { 5017, 5018, REGISTRY_APNIC }, { 5019, 5050, REGISTRY_ARIN }, { 5051, 5051, REGISTRY_APNIC }, { 5052, 5084, REGISTRY_ARIN }, { 5085, 5085, REGISTRY_APNIC }, { 5086, 5086, REGISTRY_ARIN }, { 5087, 5087, REGISTRY_APNIC }, { 5088, 5088, REGISTRY_ARIN }, { 5089, 5089, REGISTRY_RIPENCC }, { 5090, 5376, REGISTRY_ARIN }, { 5377, 5535, REGISTRY_RIPENCC }, { 5536, 5536, REGISTRY_AFRINIC }, { 5537, 5631, REGISTRY_RIPENCC }, { 5632, 5632, REGISTRY_ARIN }, { 5633, 5633, REGISTRY_LACNIC }, { 5634, 5638, REGISTRY_ARIN }, { 5639, 5639, REGISTRY_LACNIC }, { 5640, 5647, REGISTRY_ARIN }, { 5648, 5648, REGISTRY_LACNIC }, { 5649, 5691, REGISTRY_ARIN }, { 5692, 5692, REGISTRY_LACNIC }, { 5693, 5707, REGISTRY_ARIN }, { 5708, 5708, REGISTRY_LACNIC }, { 5709, 5709, REGISTRY_APNIC }, { 5710, 5712, REGISTRY_ARIN }, { 5713, 5713, REGISTRY_AFRINIC }, { 5714, 5721, REGISTRY_ARIN }, { 5722, 5722, REGISTRY_LACNIC }, { 5723, 5733, REGISTRY_ARIN }, { 5734, 5734, REGISTRY_AFRINIC }, { 5735, 5744, REGISTRY_ARIN }, { 5745, 5745, REGISTRY_LACNIC }, { 5746, 5771, REGISTRY_ARIN }, { 5772, 5772, REGISTRY_LACNIC }, { 5773, 6056, REGISTRY_ARIN }, { 6057, 6057, REGISTRY_LACNIC }, { 6058, 6062, REGISTRY_ARIN }, { 6063, 6065, REGISTRY_LACNIC }, { 6066, 6066, REGISTRY_ARIN }, { 6067, 6067, REGISTRY_RIPENCC }, { 6068, 6068, REGISTRY_APNIC }, { 6069, 6082, REGISTRY_ARIN }, { 6083, 6083, REGISTRY_AFRINIC }, { 6084, 6084, REGISTRY_LACNIC }, { 6085, 6085, REGISTRY_RIPENCC }, { 6086, 6088, REGISTRY_ARIN }, { 6089, 6089, REGISTRY_AFRINIC }, { 6090, 6120, REGISTRY_ARIN }, { 6121, 6121, REGISTRY_LACNIC }, { 6122, 6124, REGISTRY_ARIN }, { 6125, 6125, REGISTRY_LACNIC }, { 6126, 6126, REGISTRY_ARIN }, { 6127, 6127, REGISTRY_AFRINIC }, { 6128, 6132, REGISTRY_ARIN }, { 6133, 6133, REGISTRY_LACNIC }, { 6134, 6134, REGISTRY_ARIN }, { 6135, 6135, REGISTRY_LACNIC }, { 6136, 6146, REGISTRY_ARIN }, { 6147, 6148, REGISTRY_LACNIC }, { 6149, 6149, REGISTRY_AFRINIC }, { 6150, 6162, REGISTRY_ARIN }, { 6163, 6163, REGISTRY_APNIC }, { 6164, 6167, REGISTRY_ARIN }, { 6168, 6168, REGISTRY_RIPENCC }, { 6169, 6179, REGISTRY_ARIN }, { 6180, 6180, REGISTRY_AFRINIC }, { 6181, 6186, REGISTRY_ARIN }, { 6187, 6187, REGISTRY_AFRINIC }, { 6188, 6192, REGISTRY_ARIN }, { 6193, 6193, REGISTRY_LACNIC }, { 6194, 6239, REGISTRY_ARIN }, { 6240, 6240, REGISTRY_LACNIC }, { 6241, 6261, REGISTRY_ARIN }, { 6262, 6262, REGISTRY_APNIC }, { 6263, 6305, REGISTRY_ARIN }, { 6306, 6306, REGISTRY_LACNIC }, { 6307, 6319, REGISTRY_ARIN }, { 6320, 6320, REGISTRY_RIPENCC }, { 6321, 6331, REGISTRY_ARIN }, { 6332, 6332, REGISTRY_LACNIC }, { 6333, 6341, REGISTRY_ARIN }, { 6342, 6342, REGISTRY_LACNIC }, { 6343, 6350, REGISTRY_ARIN }, { 6351, 6351, REGISTRY_AFRINIC }, { 6352, 6399, REGISTRY_ARIN }, { 6400, 6400, REGISTRY_LACNIC }, { 6401, 6411, REGISTRY_ARIN }, { 6412, 6412, REGISTRY_RIPENCC }, { 6413, 6428, REGISTRY_ARIN }, { 6429, 6429, REGISTRY_LACNIC }, { 6430, 6457, REGISTRY_ARIN }, { 6458, 6458, REGISTRY_LACNIC }, { 6459, 6470, REGISTRY_ARIN }, { 6471, 6471, REGISTRY_LACNIC }, { 6472, 6486, REGISTRY_ARIN }, { 6487, 6487, REGISTRY_LACNIC }, { 6488, 6494, REGISTRY_ARIN }, { 6495, 6495, REGISTRY_LACNIC }, { 6496, 6502, REGISTRY_ARIN }, { 6503, 6503, REGISTRY_LACNIC }, { 6504, 6504, REGISTRY_ARIN }, { 6505, 6505, REGISTRY_LACNIC }, { 6506, 6528, REGISTRY_ARIN }, { 6529, 6529, REGISTRY_AFRINIC }, { 6530, 6534, REGISTRY_ARIN }, { 6535, 6535, REGISTRY_LACNIC }, { 6536, 6542, REGISTRY_ARIN }, { 6543, 6543, REGISTRY_LACNIC }, { 6544, 6544, REGISTRY_ARIN }, { 6545, 6545, REGISTRY_LACNIC }, { 6546, 6559, REGISTRY_ARIN }, { 6560, 6560, REGISTRY_AFRINIC }, { 6561, 6567, REGISTRY_ARIN }, { 6568, 6568, REGISTRY_LACNIC }, { 6569, 6589, REGISTRY_ARIN }, { 6590, 6590, REGISTRY_LACNIC }, { 6591, 6618, REGISTRY_ARIN }, { 6619, 6619, REGISTRY_APNIC }, { 6620, 6647, REGISTRY_ARIN }, { 6648, 6648, REGISTRY_APNIC }, { 6649, 6655, REGISTRY_ARIN }, { 6656, 6712, REGISTRY_RIPENCC }, { 6713, 6713, REGISTRY_AFRINIC }, { 6714, 6878, REGISTRY_RIPENCC }, { 6879, 6879, REGISTRY_AFRINIC }, { 6880, 6911, REGISTRY_RIPENCC }, { 6912, 6926, REGISTRY_ARIN }, { 6927, 6927, REGISTRY_LACNIC }, { 6928, 6944, REGISTRY_ARIN }, { 6945, 6945, REGISTRY_LACNIC }, { 6946, 6956, REGISTRY_ARIN }, { 6957, 6957, REGISTRY_LACNIC }, { 6958, 6967, REGISTRY_ARIN }, { 6968, 6968, REGISTRY_AFRINIC }, { 6969, 7001, REGISTRY_ARIN }, { 7002, 7002, REGISTRY_LACNIC }, { 7003, 7003, REGISTRY_ARIN }, { 7004, 7005, REGISTRY_LACNIC }, { 7006, 7019, REGISTRY_ARIN }, { 7020, 7020, REGISTRY_AFRINIC }, { 7021, 7037, REGISTRY_ARIN }, { 7038, 7038, REGISTRY_LACNIC }, { 7039, 7047, REGISTRY_ARIN }, { 7048, 7049, REGISTRY_LACNIC }, { 7050, 7055, REGISTRY_ARIN }, { 7056, 7056, REGISTRY_LACNIC }, { 7057, 7062, REGISTRY_ARIN }, { 7063, 7063, REGISTRY_LACNIC }, { 7064, 7079, REGISTRY_ARIN }, { 7080, 7080, REGISTRY_LACNIC }, { 7081, 7086, REGISTRY_ARIN }, { 7087, 7087, REGISTRY_LACNIC }, { 7088, 7102, REGISTRY_ARIN }, { 7103, 7103, REGISTRY_LACNIC }, { 7104, 7119, REGISTRY_ARIN }, { 7120, 7120, REGISTRY_LACNIC }, { 7121, 7124, REGISTRY_ARIN }, { 7125, 7125, REGISTRY_LACNIC }, { 7126, 7130, REGISTRY_ARIN }, { 7131, 7131, REGISTRY_APNIC }, { 7132, 7136, REGISTRY_ARIN }, { 7137, 7137, REGISTRY_LACNIC }, { 7138, 7138, REGISTRY_ARIN }, { 7139, 7148, REGISTRY_ARIN }, { 7149, 7149, REGISTRY_LACNIC }, { 7150, 7153, REGISTRY_ARIN }, { 7154, 7154, REGISTRY_AFRINIC }, { 7155, 7156, REGISTRY_ARIN }, { 7157, 7157, REGISTRY_LACNIC }, { 7158, 7161, REGISTRY_ARIN }, { 7162, 7162, REGISTRY_LACNIC }, { 7163, 7166, REGISTRY_ARIN }, { 7167, 7167, REGISTRY_LACNIC }, { 7168, 7172, REGISTRY_ARIN }, { 7173, 7173, REGISTRY_LACNIC }, { 7174, 7174, REGISTRY_ARIN }, { 7175, 7175, REGISTRY_APNIC }, { 7176, 7183, REGISTRY_ARIN }, { 7184, 7184, REGISTRY_LACNIC }, { 7185, 7194, REGISTRY_ARIN }, { 7195, 7195, REGISTRY_LACNIC }, { 7196, 7198, REGISTRY_ARIN }, { 7199, 7199, REGISTRY_LACNIC }, { 7200, 7230, REGISTRY_ARIN }, { 7231, 7231, REGISTRY_AFRINIC }, { 7232, 7235, REGISTRY_ARIN }, { 7236, 7236, REGISTRY_LACNIC }, { 7237, 7237, REGISTRY_ARIN }, { 7238, 7297, REGISTRY_ARIN }, { 7298, 7298, REGISTRY_LACNIC }, { 7299, 7302, REGISTRY_ARIN }, { 7303, 7303, REGISTRY_LACNIC }, { 7304, 7312, REGISTRY_ARIN }, { 7313, 7313, REGISTRY_LACNIC }, { 7314, 7314, REGISTRY_ARIN }, { 7315, 7315, REGISTRY_LACNIC }, { 7316, 7324, REGISTRY_ARIN }, { 7325, 7325, REGISTRY_LACNIC }, { 7326, 7339, REGISTRY_ARIN }, { 7340, 7340, REGISTRY_LACNIC }, { 7341, 7364, REGISTRY_ARIN }, { 7365, 7365, REGISTRY_LACNIC }, { 7366, 7389, REGISTRY_ARIN }, { 7390, 7390, REGISTRY_AFRINIC }, { 7391, 7398, REGISTRY_ARIN }, { 7399, 7399, REGISTRY_LACNIC }, { 7400, 7407, REGISTRY_ARIN }, { 7408, 7408, REGISTRY_LACNIC }, { 7409, 7413, REGISTRY_ARIN }, { 7414, 7414, REGISTRY_LACNIC }, { 7415, 7416, REGISTRY_ARIN }, { 7417, 7418, REGISTRY_LACNIC }, { 7419, 7419, REGISTRY_ARIN }, { 7420, 7420, REGISTRY_AFRINIC }, { 7421, 7427, REGISTRY_ARIN }, { 7428, 7428, REGISTRY_LACNIC }, { 7429, 7436, REGISTRY_ARIN }, { 7437, 7438, REGISTRY_LACNIC }, { 7439, 7459, REGISTRY_ARIN }, { 7460, 7460, REGISTRY_AFRINIC }, { 7461, 7464, REGISTRY_ARIN }, { 7465, 7465, REGISTRY_LACNIC }, { 7466, 7466, REGISTRY_ARIN }, { 7467, 7722, REGISTRY_APNIC }, { 7723, 7726, REGISTRY_ARIN }, { 7727, 7727, REGISTRY_LACNIC }, { 7728, 7737, REGISTRY_ARIN }, { 7738, 7738, REGISTRY_LACNIC }, { 7739, 7802, REGISTRY_ARIN }, { 7803, 7803, REGISTRY_LACNIC }, { 7804, 7854, REGISTRY_ARIN }, { 7855, 7855, REGISTRY_APNIC }, { 7856, 7863, REGISTRY_ARIN }, { 7864, 7864, REGISTRY_LACNIC }, { 7865, 7889, REGISTRY_ARIN }, { 7890, 7890, REGISTRY_LACNIC }, { 7891, 7900, REGISTRY_ARIN }, { 7901, 7901, REGISTRY_APNIC }, { 7902, 7905, REGISTRY_ARIN }, { 7906, 7906, REGISTRY_LACNIC }, { 7907, 7907, REGISTRY_ARIN }, { 7908, 7908, REGISTRY_LACNIC }, { 7909, 7909, REGISTRY_ARIN }, { 7910, 7910, REGISTRY_LACNIC }, { 7911, 7926, REGISTRY_ARIN }, { 7927, 7927, REGISTRY_LACNIC }, { 7928, 7933, REGISTRY_ARIN }, { 7934, 7934, REGISTRY_LACNIC }, { 7935, 7952, REGISTRY_ARIN }, { 7953, 7953, REGISTRY_LACNIC }, { 7954, 7964, REGISTRY_ARIN }, { 7965, 7965, REGISTRY_LACNIC }, { 7966, 7970, REGISTRY_ARIN }, { 7971, 7972, REGISTRY_AFRINIC }, { 7973, 7973, REGISTRY_ARIN }, { 7974, 7974, REGISTRY_LACNIC }, { 7975, 7979, REGISTRY_ARIN }, { 7980, 7980, REGISTRY_LACNIC }, { 7981, 7983, REGISTRY_ARIN }, { 7984, 7984, REGISTRY_LACNIC }, { 7985, 7992, REGISTRY_ARIN }, { 7993, 7995, REGISTRY_LACNIC }, { 7996, 7996, REGISTRY_ARIN }, { 7997, 7997, REGISTRY_LACNIC }, { 7998, 8006, REGISTRY_ARIN }, { 8007, 8007, REGISTRY_LACNIC }, { 8008, 8023, REGISTRY_ARIN }, { 8024, 8024, REGISTRY_LACNIC }, { 8025, 8025, REGISTRY_ARIN }, { 8026, 8026, REGISTRY_LACNIC }, { 8027, 8047, REGISTRY_ARIN }, { 8048, 8048, REGISTRY_LACNIC }, { 8049, 8052, REGISTRY_ARIN }, { 8053, 8056, REGISTRY_LACNIC }, { 8057, 8064, REGISTRY_ARIN }, { 8065, 8066, REGISTRY_LACNIC }, { 8067, 8092, REGISTRY_ARIN }, { 8093, 8093, REGISTRY_RIPENCC }, { 8094, 8094, REGISTRY_AFRINIC }, { 8095, 8095, REGISTRY_ARIN }, { 8096, 8096, REGISTRY_LACNIC }, { 8097, 8139, REGISTRY_ARIN }, { 8140, 8141, REGISTRY_LACNIC }, { 8142, 8150, REGISTRY_ARIN }, { 8151, 8151, REGISTRY_LACNIC }, { 8152, 8162, REGISTRY_ARIN }, { 8163, 8163, REGISTRY_LACNIC }, { 8164, 8166, REGISTRY_ARIN }, { 8167, 8167, REGISTRY_LACNIC }, { 8168, 8177, REGISTRY_ARIN }, { 8178, 8178, REGISTRY_LACNIC }, { 8179, 8191, REGISTRY_ARIN }, { 8192, 8523, REGISTRY_RIPENCC }, { 8524, 8524, REGISTRY_AFRINIC }, { 8525, 8769, REGISTRY_RIPENCC }, { 8770, 8770, REGISTRY_AFRINIC }, { 8771, 9128, REGISTRY_RIPENCC }, { 9129, 9129, REGISTRY_AFRINIC }, { 9130, 9215, REGISTRY_RIPENCC }, { 9216, 10239, REGISTRY_APNIC }, { 10240, 10246, REGISTRY_ARIN }, { 10247, 10247, REGISTRY_AFRINIC }, { 10248, 10261, REGISTRY_ARIN }, { 10262, 10262, REGISTRY_AFRINIC }, { 10263, 10268, REGISTRY_ARIN }, { 10269, 10269, REGISTRY_LACNIC }, { 10270, 10276, REGISTRY_ARIN }, { 10277, 10277, REGISTRY_LACNIC }, { 10278, 10284, REGISTRY_ARIN }, { 10285, 10285, REGISTRY_LACNIC }, { 10286, 10292, REGISTRY_ARIN }, { 10293, 10293, REGISTRY_LACNIC }, { 10294, 10298, REGISTRY_ARIN }, { 10299, 10299, REGISTRY_LACNIC }, { 10300, 10300, REGISTRY_ARIN }, { 10301, 10301, REGISTRY_LACNIC }, { 10302, 10317, REGISTRY_ARIN }, { 10318, 10318, REGISTRY_LACNIC }, { 10319, 10330, REGISTRY_ARIN }, { 10331, 10331, REGISTRY_AFRINIC }, { 10332, 10361, REGISTRY_ARIN }, { 10362, 10362, REGISTRY_LACNIC }, { 10363, 10390, REGISTRY_ARIN }, { 10391, 10391, REGISTRY_LACNIC }, { 10392, 10392, REGISTRY_ARIN }, { 10393, 10393, REGISTRY_AFRINIC }, { 10394, 10411, REGISTRY_ARIN }, { 10412, 10412, REGISTRY_LACNIC }, { 10413, 10416, REGISTRY_ARIN }, { 10417, 10417, REGISTRY_LACNIC }, { 10418, 10419, REGISTRY_ARIN }, { 10420, 10420, REGISTRY_LACNIC }, { 10421, 10428, REGISTRY_ARIN }, { 10429, 10429, REGISTRY_LACNIC }, { 10430, 10435, REGISTRY_ARIN }, { 10436, 10436, REGISTRY_LACNIC }, { 10437, 10451, REGISTRY_ARIN }, { 10452, 10452, REGISTRY_LACNIC }, { 10453, 10453, REGISTRY_ARIN }, { 10454, 10454, REGISTRY_LACNIC }, { 10455, 10462, REGISTRY_ARIN }, { 10463, 10463, REGISTRY_LACNIC }, { 10464, 10473, REGISTRY_ARIN }, { 10474, 10474, REGISTRY_AFRINIC }, { 10475, 10475, REGISTRY_ARIN }, { 10476, 10476, REGISTRY_LACNIC }, { 10477, 10478, REGISTRY_ARIN }, { 10479, 10479, REGISTRY_LACNIC }, { 10480, 10480, REGISTRY_ARIN }, { 10481, 10481, REGISTRY_LACNIC }, { 10482, 10494, REGISTRY_ARIN }, { 10495, 10495, REGISTRY_LACNIC }, { 10496, 10501, REGISTRY_ARIN }, { 10502, 10502, REGISTRY_LACNIC }, { 10503, 10504, REGISTRY_ARIN }, { 10505, 10505, REGISTRY_AFRINIC }, { 10506, 10530, REGISTRY_ARIN }, { 10531, 10531, REGISTRY_LACNIC }, { 10532, 10539, REGISTRY_ARIN }, { 10540, 10540, REGISTRY_AFRINIC }, { 10541, 10559, REGISTRY_ARIN }, { 10560, 10560, REGISTRY_LACNIC }, { 10561, 10568, REGISTRY_ARIN }, { 10569, 10569, REGISTRY_LACNIC }, { 10570, 10574, REGISTRY_ARIN }, { 10575, 10575, REGISTRY_AFRINIC }, { 10576, 10585, REGISTRY_ARIN }, { 10586, 10586, REGISTRY_LACNIC }, { 10587, 10599, REGISTRY_ARIN }, { 10600, 10600, REGISTRY_LACNIC }, { 10601, 10604, REGISTRY_ARIN }, { 10605, 10606, REGISTRY_LACNIC }, { 10607, 10616, REGISTRY_ARIN }, { 10617, 10617, REGISTRY_LACNIC }, { 10618, 10619, REGISTRY_ARIN }, { 10620, 10620, REGISTRY_LACNIC }, { 10621, 10623, REGISTRY_ARIN }, { 10624, 10624, REGISTRY_LACNIC }, { 10625, 10629, REGISTRY_ARIN }, { 10630, 10630, REGISTRY_LACNIC }, { 10631, 10639, REGISTRY_ARIN }, { 10640, 10640, REGISTRY_LACNIC }, { 10641, 10648, REGISTRY_ARIN }, { 10649, 10649, REGISTRY_LACNIC }, { 10650, 10669, REGISTRY_ARIN }, { 10670, 10671, REGISTRY_LACNIC }, { 10672, 10687, REGISTRY_ARIN }, { 10688, 10688, REGISTRY_LACNIC }, { 10689, 10690, REGISTRY_ARIN }, { 10691, 10691, REGISTRY_LACNIC }, { 10692, 10696, REGISTRY_ARIN }, { 10697, 10697, REGISTRY_LACNIC }, { 10698, 10703, REGISTRY_ARIN }, { 10704, 10704, REGISTRY_LACNIC }, { 10705, 10705, REGISTRY_ARIN }, { 10706, 10706, REGISTRY_LACNIC }, { 10707, 10714, REGISTRY_ARIN }, { 10715, 10715, REGISTRY_LACNIC }, { 10716, 10732, REGISTRY_ARIN }, { 10733, 10733, REGISTRY_LACNIC }, { 10734, 10756, REGISTRY_ARIN }, { 10757, 10757, REGISTRY_LACNIC }, { 10758, 10777, REGISTRY_ARIN }, { 10778, 10778, REGISTRY_LACNIC }, { 10779, 10784, REGISTRY_ARIN }, { 10785, 10785, REGISTRY_LACNIC }, { 10786, 10794, REGISTRY_ARIN }, { 10795, 10795, REGISTRY_LACNIC }, { 10796, 10797, REGISTRY_ARIN }, { 10798, 10798, REGISTRY_AFRINIC }, { 10799, 10802, REGISTRY_ARIN }, { 10803, 10803, REGISTRY_AFRINIC }, { 10804, 10806, REGISTRY_ARIN }, { 10807, 10807, REGISTRY_APNIC }, { 10808, 10823, REGISTRY_ARIN }, { 10824, 10824, REGISTRY_LACNIC }, { 10825, 10833, REGISTRY_ARIN }, { 10834, 10834, REGISTRY_LACNIC }, { 10835, 10840, REGISTRY_ARIN }, { 10841, 10841, REGISTRY_LACNIC }, { 10842, 10846, REGISTRY_ARIN }, { 10847, 10847, REGISTRY_LACNIC }, { 10848, 10874, REGISTRY_ARIN }, { 10875, 10875, REGISTRY_LACNIC }, { 10876, 10880, REGISTRY_ARIN }, { 10881, 10881, REGISTRY_LACNIC }, { 10882, 10894, REGISTRY_ARIN }, { 10895, 10895, REGISTRY_LACNIC }, { 10896, 10896, REGISTRY_ARIN }, { 10897, 10897, REGISTRY_LACNIC }, { 10898, 10898, REGISTRY_AFRINIC }, { 10899, 10905, REGISTRY_ARIN }, { 10906, 10906, REGISTRY_LACNIC }, { 10907, 10921, REGISTRY_ARIN }, { 10922, 10922, REGISTRY_ARIN }, { 10923, 10937, REGISTRY_ARIN }, { 10938, 10938, REGISTRY_LACNIC }, { 10939, 10953, REGISTRY_ARIN }, { 10954, 10954, REGISTRY_LACNIC }, { 10955, 10963, REGISTRY_ARIN }, { 10964, 10964, REGISTRY_LACNIC }, { 10965, 10982, REGISTRY_ARIN }, { 10983, 10983, REGISTRY_LACNIC }, { 10984, 10985, REGISTRY_ARIN }, { 10986, 10986, REGISTRY_LACNIC }, { 10987, 10991, REGISTRY_ARIN }, { 10992, 10992, REGISTRY_LACNIC }, { 10993, 11007, REGISTRY_ARIN }, { 11008, 11008, REGISTRY_LACNIC }, { 11009, 11013, REGISTRY_ARIN }, { 11014, 11014, REGISTRY_LACNIC }, { 11015, 11052, REGISTRY_ARIN }, { 11053, 11053, REGISTRY_LACNIC }, { 11054, 11057, REGISTRY_ARIN }, { 11058, 11058, REGISTRY_LACNIC }, { 11059, 11062, REGISTRY_ARIN }, { 11063, 11063, REGISTRY_LACNIC }, { 11064, 11080, REGISTRY_ARIN }, { 11081, 11081, REGISTRY_LACNIC }, { 11082, 11082, REGISTRY_ARIN }, { 11083, 11083, REGISTRY_LACNIC }, { 11084, 11086, REGISTRY_ARIN }, { 11087, 11087, REGISTRY_LACNIC }, { 11088, 11096, REGISTRY_ARIN }, { 11097, 11097, REGISTRY_LACNIC }, { 11098, 11124, REGISTRY_ARIN }, { 11125, 11125, REGISTRY_AFRINIC }, { 11126, 11135, REGISTRY_ARIN }, { 11136, 11136, REGISTRY_LACNIC }, { 11137, 11156, REGISTRY_ARIN }, { 11157, 11157, REGISTRY_AFRINIC }, { 11158, 11171, REGISTRY_ARIN }, { 11172, 11172, REGISTRY_LACNIC }, { 11173, 11192, REGISTRY_ARIN }, { 11193, 11193, REGISTRY_LACNIC }, { 11194, 11200, REGISTRY_ARIN }, { 11201, 11201, REGISTRY_AFRINIC }, { 11202, 11236, REGISTRY_ARIN }, { 11237, 11237, REGISTRY_LACNIC }, { 11238, 11241, REGISTRY_ARIN }, { 11242, 11242, REGISTRY_LACNIC }, { 11243, 11253, REGISTRY_ARIN }, { 11254, 11254, REGISTRY_LACNIC }, { 11255, 11255, REGISTRY_ARIN }, { 11256, 11256, REGISTRY_LACNIC }, { 11257, 11258, REGISTRY_ARIN }, { 11259, 11259, REGISTRY_AFRINIC }, { 11260, 11264, REGISTRY_ARIN }, { 11265, 11265, REGISTRY_AFRINIC }, { 11266, 11270, REGISTRY_ARIN }, { 11271, 11271, REGISTRY_LACNIC }, { 11272, 11283, REGISTRY_ARIN }, { 11284, 11284, REGISTRY_LACNIC }, { 11285, 11294, REGISTRY_ARIN }, { 11295, 11295, REGISTRY_LACNIC }, { 11296, 11310, REGISTRY_ARIN }, { 11311, 11311, REGISTRY_LACNIC }, { 11312, 11314, REGISTRY_ARIN }, { 11315, 11315, REGISTRY_LACNIC }, { 11316, 11334, REGISTRY_ARIN }, { 11335, 11335, REGISTRY_LACNIC }, { 11336, 11337, REGISTRY_ARIN }, { 11338, 11338, REGISTRY_LACNIC }, { 11339, 11339, REGISTRY_ARIN }, { 11340, 11340, REGISTRY_LACNIC }, { 11341, 11341, REGISTRY_RIPENCC }, { 11342, 11355, REGISTRY_ARIN }, { 11356, 11356, REGISTRY_LACNIC }, { 11357, 11372, REGISTRY_ARIN }, { 11373, 11373, REGISTRY_LACNIC }, { 11374, 11379, REGISTRY_ARIN }, { 11380, 11380, REGISTRY_AFRINIC }, { 11381, 11389, REGISTRY_ARIN }, { 11390, 11390, REGISTRY_LACNIC }, { 11391, 11391, REGISTRY_ARIN }, { 11392, 11392, REGISTRY_LACNIC }, { 11393, 11410, REGISTRY_ARIN }, { 11411, 11411, REGISTRY_LACNIC }, { 11412, 11414, REGISTRY_ARIN }, { 11415, 11415, REGISTRY_LACNIC }, { 11416, 11418, REGISTRY_ARIN }, { 11419, 11419, REGISTRY_LACNIC }, { 11420, 11430, REGISTRY_ARIN }, { 11431, 11432, REGISTRY_LACNIC }, { 11433, 11446, REGISTRY_ARIN }, { 11447, 11447, REGISTRY_LACNIC }, { 11448, 11449, REGISTRY_ARIN }, { 11450, 11451, REGISTRY_LACNIC }, { 11452, 11466, REGISTRY_ARIN }, { 11467, 11467, REGISTRY_APNIC }, { 11468, 11496, REGISTRY_ARIN }, { 11497, 11498, REGISTRY_LACNIC }, { 11499, 11502, REGISTRY_ARIN }, { 11503, 11503, REGISTRY_LACNIC }, { 11504, 11513, REGISTRY_ARIN }, { 11514, 11514, REGISTRY_LACNIC }, { 11515, 11518, REGISTRY_ARIN }, { 11519, 11519, REGISTRY_LACNIC }, { 11520, 11555, REGISTRY_ARIN }, { 11556, 11556, REGISTRY_LACNIC }, { 11557, 11561, REGISTRY_ARIN }, { 11562, 11562, REGISTRY_LACNIC }, { 11563, 11568, REGISTRY_ARIN }, { 11569, 11569, REGISTRY_AFRINIC }, { 11570, 11570, REGISTRY_ARIN }, { 11571, 11571, REGISTRY_LACNIC }, { 11572, 11580, REGISTRY_ARIN }, { 11581, 11581, REGISTRY_LACNIC }, { 11582, 11584, REGISTRY_ARIN }, { 11585, 11585, REGISTRY_LACNIC }, { 11586, 11591, REGISTRY_ARIN }, { 11592, 11592, REGISTRY_LACNIC }, { 11593, 11598, REGISTRY_ARIN }, { 11599, 11599, REGISTRY_LACNIC }, { 11600, 11616, REGISTRY_ARIN }, { 11617, 11617, REGISTRY_LACNIC }, { 11618, 11641, REGISTRY_ARIN }, { 11642, 11642, REGISTRY_LACNIC }, { 11643, 11643, REGISTRY_ARIN }, { 11644, 11644, REGISTRY_LACNIC }, { 11645, 11645, REGISTRY_AFRINIC }, { 11646, 11659, REGISTRY_ARIN }, { 11660, 11660, REGISTRY_RIPENCC }, { 11661, 11663, REGISTRY_ARIN }, { 11664, 11664, REGISTRY_LACNIC }, { 11665, 11672, REGISTRY_ARIN }, { 11673, 11673, REGISTRY_LACNIC }, { 11674, 11676, REGISTRY_ARIN }, { 11677, 11677, REGISTRY_LACNIC }, { 11678, 11693, REGISTRY_ARIN }, { 11694, 11694, REGISTRY_LACNIC }, { 11695, 11705, REGISTRY_ARIN }, { 11706, 11706, REGISTRY_LACNIC }, { 11707, 11743, REGISTRY_ARIN }, { 11744, 11744, REGISTRY_AFRINIC }, { 11745, 11749, REGISTRY_ARIN }, { 11750, 11752, REGISTRY_LACNIC }, { 11753, 11785, REGISTRY_ARIN }, { 11786, 11786, REGISTRY_LACNIC }, { 11787, 11799, REGISTRY_ARIN }, { 11800, 11802, REGISTRY_LACNIC }, { 11803, 11814, REGISTRY_ARIN }, { 11815, 11816, REGISTRY_LACNIC }, { 11817, 11829, REGISTRY_ARIN }, { 11830, 11830, REGISTRY_LACNIC }, { 11831, 11834, REGISTRY_ARIN }, { 11835, 11835, REGISTRY_LACNIC }, { 11836, 11843, REGISTRY_ARIN }, { 11844, 11844, REGISTRY_LACNIC }, { 11845, 11845, REGISTRY_AFRINIC }, { 11846, 11887, REGISTRY_ARIN }, { 11888, 11888, REGISTRY_LACNIC }, { 11889, 11895, REGISTRY_ARIN }, { 11896, 11896, REGISTRY_LACNIC }, { 11897, 11908, REGISTRY_ARIN }, { 11909, 11909, REGISTRY_AFRINIC }, { 11910, 11920, REGISTRY_ARIN }, { 11921, 11921, REGISTRY_LACNIC }, { 11922, 11946, REGISTRY_ARIN }, { 11947, 11947, REGISTRY_LACNIC }, { 11948, 11959, REGISTRY_ARIN }, { 11960, 11960, REGISTRY_LACNIC }, { 11961, 11992, REGISTRY_ARIN }, { 11993, 11993, REGISTRY_LACNIC }, { 11994, 12033, REGISTRY_ARIN }, { 12034, 12034, REGISTRY_LACNIC }, { 12035, 12045, REGISTRY_ARIN }, { 12046, 12046, REGISTRY_RIPENCC }, { 12047, 12065, REGISTRY_ARIN }, { 12066, 12066, REGISTRY_LACNIC }, { 12067, 12090, REGISTRY_ARIN }, { 12091, 12091, REGISTRY_AFRINIC }, { 12092, 12126, REGISTRY_ARIN }, { 12127, 12127, REGISTRY_LACNIC }, { 12128, 12134, REGISTRY_ARIN }, { 12135, 12136, REGISTRY_LACNIC }, { 12137, 12139, REGISTRY_ARIN }, { 12140, 12140, REGISTRY_LACNIC }, { 12141, 12142, REGISTRY_ARIN }, { 12143, 12143, REGISTRY_AFRINIC }, { 12144, 12145, REGISTRY_ARIN }, { 12146, 12146, REGISTRY_LACNIC }, { 12147, 12149, REGISTRY_ARIN }, { 12150, 12150, REGISTRY_LACNIC }, { 12151, 12247, REGISTRY_ARIN }, { 12248, 12248, REGISTRY_LACNIC }, { 12249, 12251, REGISTRY_ARIN }, { 12252, 12252, REGISTRY_LACNIC }, { 12253, 12257, REGISTRY_ARIN }, { 12258, 12258, REGISTRY_AFRINIC }, { 12259, 12263, REGISTRY_ARIN }, { 12264, 12264, REGISTRY_LACNIC }, { 12265, 12287, REGISTRY_ARIN }, { 12288, 12454, REGISTRY_RIPENCC }, { 12455, 12455, REGISTRY_AFRINIC }, { 12456, 12555, REGISTRY_RIPENCC }, { 12556, 12556, REGISTRY_AFRINIC }, { 12557, 13223, REGISTRY_RIPENCC }, { 13224, 13224, REGISTRY_AFRINIC }, { 13225, 13311, REGISTRY_RIPENCC }, { 13312, 13315, REGISTRY_ARIN }, { 13316, 13316, REGISTRY_LACNIC }, { 13317, 13317, REGISTRY_ARIN }, { 13318, 13318, REGISTRY_LACNIC }, { 13319, 13319, REGISTRY_ARIN }, { 13320, 13320, REGISTRY_LACNIC }, { 13321, 13352, REGISTRY_ARIN }, { 13353, 13353, REGISTRY_LACNIC }, { 13354, 13356, REGISTRY_ARIN }, { 13357, 13357, REGISTRY_LACNIC }, { 13358, 13380, REGISTRY_ARIN }, { 13381, 13381, REGISTRY_LACNIC }, { 13382, 13401, REGISTRY_ARIN }, { 13402, 13402, REGISTRY_AFRINIC }, { 13403, 13423, REGISTRY_ARIN }, { 13424, 13424, REGISTRY_LACNIC }, { 13425, 13439, REGISTRY_ARIN }, { 13440, 13440, REGISTRY_LACNIC }, { 13441, 13458, REGISTRY_ARIN }, { 13459, 13459, REGISTRY_LACNIC }, { 13460, 13473, REGISTRY_ARIN }, { 13474, 13474, REGISTRY_LACNIC }, { 13475, 13488, REGISTRY_ARIN }, { 13489, 13489, REGISTRY_LACNIC }, { 13490, 13494, REGISTRY_ARIN }, { 13495, 13495, REGISTRY_LACNIC }, { 13496, 13513, REGISTRY_ARIN }, { 13514, 13514, REGISTRY_LACNIC }, { 13515, 13518, REGISTRY_ARIN }, { 13519, 13519, REGISTRY_AFRINIC }, { 13520, 13520, REGISTRY_ARIN }, { 13521, 13522, REGISTRY_LACNIC }, { 13523, 13543, REGISTRY_ARIN }, { 13544, 13544, REGISTRY_LACNIC }, { 13545, 13568, REGISTRY_ARIN }, { 13569, 13569, REGISTRY_AFRINIC }, { 13570, 13578, REGISTRY_ARIN }, { 13579, 13579, REGISTRY_LACNIC }, { 13580, 13583, REGISTRY_ARIN }, { 13584, 13585, REGISTRY_LACNIC }, { 13586, 13590, REGISTRY_ARIN }, { 13591, 13591, REGISTRY_LACNIC }, { 13592, 13642, REGISTRY_ARIN }, { 13643, 13643, REGISTRY_LACNIC }, { 13644, 13678, REGISTRY_ARIN }, { 13679, 13679, REGISTRY_LACNIC }, { 13680, 13681, REGISTRY_ARIN }, { 13682, 13682, REGISTRY_LACNIC }, { 13683, 13760, REGISTRY_ARIN }, { 13761, 13761, REGISTRY_LACNIC }, { 13762, 13773, REGISTRY_ARIN }, { 13774, 13774, REGISTRY_LACNIC }, { 13775, 13834, REGISTRY_ARIN }, { 13835, 13835, REGISTRY_LACNIC }, { 13836, 13853, REGISTRY_ARIN }, { 13854, 13854, REGISTRY_AFRINIC }, { 13855, 13873, REGISTRY_ARIN }, { 13874, 13874, REGISTRY_LACNIC }, { 13875, 13877, REGISTRY_ARIN }, { 13878, 13878, REGISTRY_LACNIC }, { 13879, 13879, REGISTRY_RIPENCC }, { 13880, 13913, REGISTRY_ARIN }, { 13914, 13914, REGISTRY_LACNIC }, { 13915, 13928, REGISTRY_ARIN }, { 13929, 13929, REGISTRY_LACNIC }, { 13930, 13933, REGISTRY_ARIN }, { 13934, 13936, REGISTRY_LACNIC }, { 13937, 13990, REGISTRY_ARIN }, { 13991, 13991, REGISTRY_LACNIC }, { 13992, 13998, REGISTRY_ARIN }, { 13999, 14000, REGISTRY_LACNIC }, { 14001, 14025, REGISTRY_ARIN }, { 14026, 14026, REGISTRY_LACNIC }, { 14027, 14028, REGISTRY_ARIN }, { 14029, 14029, REGISTRY_AFRINIC }, { 14030, 14030, REGISTRY_LACNIC }, { 14031, 14068, REGISTRY_ARIN }, { 14069, 14069, REGISTRY_LACNIC }, { 14070, 14079, REGISTRY_ARIN }, { 14080, 14080, REGISTRY_LACNIC }, { 14081, 14083, REGISTRY_ARIN }, { 14084, 14084, REGISTRY_LACNIC }, { 14085, 14086, REGISTRY_ARIN }, { 14087, 14087, REGISTRY_LACNIC }, { 14088, 14110, REGISTRY_ARIN }, { 14111, 14111, REGISTRY_LACNIC }, { 14112, 14114, REGISTRY_ARIN }, { 14115, 14115, REGISTRY_AFRINIC }, { 14116, 14116, REGISTRY_ARIN }, { 14117, 14117, REGISTRY_LACNIC }, { 14118, 14121, REGISTRY_ARIN }, { 14122, 14122, REGISTRY_LACNIC }, { 14123, 14177, REGISTRY_ARIN }, { 14178, 14179, REGISTRY_LACNIC }, { 14180, 14185, REGISTRY_ARIN }, { 14186, 14187, REGISTRY_LACNIC }, { 14188, 14201, REGISTRY_ARIN }, { 14202, 14202, REGISTRY_LACNIC }, { 14203, 14203, REGISTRY_ARIN }, { 14204, 14204, REGISTRY_LACNIC }, { 14205, 14230, REGISTRY_ARIN }, { 14231, 14232, REGISTRY_LACNIC }, { 14233, 14233, REGISTRY_ARIN }, { 14234, 14234, REGISTRY_LACNIC }, { 14235, 14248, REGISTRY_ARIN }, { 14249, 14250, REGISTRY_LACNIC }, { 14251, 14258, REGISTRY_ARIN }, { 14259, 14259, REGISTRY_LACNIC }, { 14260, 14281, REGISTRY_ARIN }, { 14282, 14282, REGISTRY_LACNIC }, { 14283, 14284, REGISTRY_ARIN }, { 14285, 14286, REGISTRY_LACNIC }, { 14287, 14315, REGISTRY_ARIN }, { 14316, 14316, REGISTRY_LACNIC }, { 14317, 14317, REGISTRY_ARIN }, { 14318, 14318, REGISTRY_LACNIC }, { 14319, 14330, REGISTRY_ARIN }, { 14331, 14331, REGISTRY_AFRINIC }, { 14332, 14338, REGISTRY_ARIN }, { 14339, 14339, REGISTRY_LACNIC }, { 14340, 14345, REGISTRY_ARIN }, { 14346, 14346, REGISTRY_LACNIC }, { 14347, 14376, REGISTRY_ARIN }, { 14377, 14377, REGISTRY_LACNIC }, { 14378, 14419, REGISTRY_ARIN }, { 14420, 14420, REGISTRY_LACNIC }, { 14421, 14428, REGISTRY_ARIN }, { 14429, 14429, REGISTRY_AFRINIC }, { 14430, 14456, REGISTRY_ARIN }, { 14457, 14457, REGISTRY_LACNIC }, { 14458, 14460, REGISTRY_ARIN }, { 14461, 14462, REGISTRY_ARIN }, { 14463, 14463, REGISTRY_LACNIC }, { 14464, 14515, REGISTRY_ARIN }, { 14516, 14516, REGISTRY_AFRINIC }, { 14517, 14521, REGISTRY_ARIN }, { 14522, 14522, REGISTRY_LACNIC }, { 14523, 14534, REGISTRY_ARIN }, { 14535, 14535, REGISTRY_LACNIC }, { 14536, 14552, REGISTRY_ARIN }, { 14553, 14553, REGISTRY_LACNIC }, { 14554, 14559, REGISTRY_ARIN }, { 14560, 14560, REGISTRY_LACNIC }, { 14561, 14570, REGISTRY_ARIN }, { 14571, 14571, REGISTRY_LACNIC }, { 14572, 14623, REGISTRY_ARIN }, { 14624, 14624, REGISTRY_LACNIC }, { 14625, 14649, REGISTRY_ARIN }, { 14650, 14650, REGISTRY_LACNIC }, { 14651, 14663, REGISTRY_ARIN }, { 14664, 14664, REGISTRY_LACNIC }, { 14665, 14673, REGISTRY_ARIN }, { 14674, 14674, REGISTRY_LACNIC }, { 14675, 14691, REGISTRY_ARIN }, { 14692, 14692, REGISTRY_LACNIC }, { 14693, 14707, REGISTRY_ARIN }, { 14708, 14709, REGISTRY_LACNIC }, { 14710, 14722, REGISTRY_ARIN }, { 14723, 14723, REGISTRY_LACNIC }, { 14724, 14753, REGISTRY_ARIN }, { 14754, 14754, REGISTRY_LACNIC }, { 14755, 14758, REGISTRY_ARIN }, { 14759, 14759, REGISTRY_LACNIC }, { 14760, 14768, REGISTRY_ARIN }, { 14769, 14769, REGISTRY_LACNIC }, { 14770, 14794, REGISTRY_ARIN }, { 14795, 14795, REGISTRY_LACNIC }, { 14796, 14839, REGISTRY_ARIN }, { 14840, 14840, REGISTRY_LACNIC }, { 14841, 14844, REGISTRY_ARIN }, { 14845, 14845, REGISTRY_LACNIC }, { 14846, 14866, REGISTRY_ARIN }, { 14867, 14868, REGISTRY_LACNIC }, { 14869, 14885, REGISTRY_ARIN }, { 14886, 14886, REGISTRY_LACNIC }, { 14887, 14965, REGISTRY_ARIN }, { 14966, 14966, REGISTRY_LACNIC }, { 14967, 14969, REGISTRY_ARIN }, { 14970, 14970, REGISTRY_LACNIC }, { 14971, 14987, REGISTRY_ARIN }, { 14988, 14988, REGISTRY_AFRINIC }, { 14989, 15021, REGISTRY_ARIN }, { 15022, 15022, REGISTRY_AFRINIC }, { 15023, 15029, REGISTRY_ARIN }, { 15030, 15030, REGISTRY_LACNIC }, { 15031, 15033, REGISTRY_ARIN }, { 15034, 15034, REGISTRY_LACNIC }, { 15035, 15063, REGISTRY_ARIN }, { 15064, 15064, REGISTRY_LACNIC }, { 15065, 15065, REGISTRY_ARIN }, { 15066, 15066, REGISTRY_LACNIC }, { 15067, 15074, REGISTRY_ARIN }, { 15075, 15075, REGISTRY_LACNIC }, { 15076, 15077, REGISTRY_ARIN }, { 15078, 15078, REGISTRY_LACNIC }, { 15079, 15106, REGISTRY_ARIN }, { 15107, 15107, REGISTRY_LACNIC }, { 15108, 15124, REGISTRY_ARIN }, { 15125, 15125, REGISTRY_LACNIC }, { 15126, 15150, REGISTRY_ARIN }, { 15151, 15151, REGISTRY_LACNIC }, { 15152, 15158, REGISTRY_ARIN }, { 15159, 15159, REGISTRY_AFRINIC }, { 15160, 15179, REGISTRY_ARIN }, { 15180, 15180, REGISTRY_LACNIC }, { 15181, 15200, REGISTRY_ARIN }, { 15201, 15201, REGISTRY_LACNIC }, { 15202, 15207, REGISTRY_ARIN }, { 15208, 15208, REGISTRY_LACNIC }, { 15209, 15235, REGISTRY_ARIN }, { 15236, 15236, REGISTRY_LACNIC }, { 15237, 15240, REGISTRY_ARIN }, { 15241, 15241, REGISTRY_LACNIC }, { 15242, 15245, REGISTRY_ARIN }, { 15246, 15246, REGISTRY_LACNIC }, { 15247, 15251, REGISTRY_ARIN }, { 15252, 15252, REGISTRY_LACNIC }, { 15253, 15255, REGISTRY_ARIN }, { 15256, 15256, REGISTRY_LACNIC }, { 15257, 15273, REGISTRY_ARIN }, { 15274, 15274, REGISTRY_LACNIC }, { 15275, 15310, REGISTRY_ARIN }, { 15311, 15311, REGISTRY_LACNIC }, { 15312, 15359, REGISTRY_ARIN }, { 15360, 15398, REGISTRY_RIPENCC }, { 15399, 15399, REGISTRY_AFRINIC }, { 15400, 15474, REGISTRY_RIPENCC }, { 15475, 15475, REGISTRY_AFRINIC }, { 15476, 15705, REGISTRY_RIPENCC }, { 15706, 15706, REGISTRY_AFRINIC }, { 15707, 15803, REGISTRY_RIPENCC }, { 15804, 15804, REGISTRY_AFRINIC }, { 15805, 15824, REGISTRY_RIPENCC }, { 15825, 15825, REGISTRY_AFRINIC }, { 15826, 15833, REGISTRY_RIPENCC }, { 15834, 15834, REGISTRY_AFRINIC }, { 15835, 15963, REGISTRY_RIPENCC }, { 15964, 15964, REGISTRY_AFRINIC }, { 15965, 16057, REGISTRY_RIPENCC }, { 16058, 16058, REGISTRY_AFRINIC }, { 16059, 16213, REGISTRY_RIPENCC }, { 16214, 16214, REGISTRY_AFRINIC }, { 16215, 16283, REGISTRY_RIPENCC }, { 16284, 16284, REGISTRY_AFRINIC }, { 16285, 16383, REGISTRY_RIPENCC }, { 16384, 16393, REGISTRY_ARIN }, { 16394, 16396, REGISTRY_ARIN }, { 16397, 16397, REGISTRY_LACNIC }, { 16398, 16415, REGISTRY_ARIN }, { 16416, 16416, REGISTRY_AFRINIC }, { 16417, 16417, REGISTRY_ARIN }, { 16418, 16418, REGISTRY_LACNIC }, { 16419, 16470, REGISTRY_ARIN }, { 16471, 16471, REGISTRY_LACNIC }, { 16472, 16505, REGISTRY_ARIN }, { 16506, 16506, REGISTRY_LACNIC }, { 16507, 16521, REGISTRY_ARIN }, { 16522, 16522, REGISTRY_LACNIC }, { 16523, 16527, REGISTRY_ARIN }, { 16528, 16528, REGISTRY_LACNIC }, { 16529, 16530, REGISTRY_ARIN }, { 16531, 16531, REGISTRY_LACNIC }, { 16532, 16546, REGISTRY_ARIN }, { 16547, 16547, REGISTRY_AFRINIC }, { 16548, 16591, REGISTRY_ARIN }, { 16592, 16592, REGISTRY_LACNIC }, { 16593, 16593, REGISTRY_ARIN }, { 16594, 16594, REGISTRY_LACNIC }, { 16595, 16595, REGISTRY_ARIN }, { 16596, 16596, REGISTRY_LACNIC }, { 16597, 16605, REGISTRY_ARIN }, { 16606, 16607, REGISTRY_LACNIC }, { 16608, 16628, REGISTRY_ARIN }, { 16629, 16629, REGISTRY_LACNIC }, { 16630, 16630, REGISTRY_AFRINIC }, { 16631, 16636, REGISTRY_ARIN }, { 16637, 16637, REGISTRY_AFRINIC }, { 16638, 16662, REGISTRY_ARIN }, { 16663, 16663, REGISTRY_LACNIC }, { 16664, 16684, REGISTRY_ARIN }, { 16685, 16685, REGISTRY_LACNIC }, { 16686, 16688, REGISTRY_ARIN }, { 16689, 16689, REGISTRY_LACNIC }, { 16690, 16700, REGISTRY_ARIN }, { 16701, 16701, REGISTRY_LACNIC }, { 16702, 16711, REGISTRY_ARIN }, { 16712, 16712, REGISTRY_LACNIC }, { 16713, 16731, REGISTRY_ARIN }, { 16732, 16732, REGISTRY_LACNIC }, { 16733, 16734, REGISTRY_ARIN }, { 16735, 16736, REGISTRY_LACNIC }, { 16737, 16737, REGISTRY_ARIN }, { 16738, 16741, REGISTRY_ARIN }, { 16742, 16742, REGISTRY_LACNIC }, { 16743, 16761, REGISTRY_ARIN }, { 16762, 16762, REGISTRY_LACNIC }, { 16763, 16771, REGISTRY_ARIN }, { 16772, 16772, REGISTRY_LACNIC }, { 16773, 16779, REGISTRY_ARIN }, { 16780, 16780, REGISTRY_LACNIC }, { 16781, 16799, REGISTRY_ARIN }, { 16800, 16800, REGISTRY_AFRINIC }, { 16801, 16813, REGISTRY_ARIN }, { 16814, 16814, REGISTRY_LACNIC }, { 16815, 16846, REGISTRY_ARIN }, { 16847, 16847, REGISTRY_LACNIC }, { 16848, 16848, REGISTRY_ARIN }, { 16849, 16849, REGISTRY_LACNIC }, { 16850, 16852, REGISTRY_ARIN }, { 16853, 16853, REGISTRY_AFRINIC }, { 16854, 16863, REGISTRY_ARIN }, { 16864, 16864, REGISTRY_LACNIC }, { 16865, 16873, REGISTRY_ARIN }, { 16874, 16874, REGISTRY_LACNIC }, { 16875, 16884, REGISTRY_ARIN }, { 16885, 16885, REGISTRY_LACNIC }, { 16886, 16890, REGISTRY_ARIN }, { 16891, 16891, REGISTRY_LACNIC }, { 16892, 16905, REGISTRY_ARIN }, { 16906, 16906, REGISTRY_LACNIC }, { 16907, 16907, REGISTRY_AFRINIC }, { 16908, 16910, REGISTRY_ARIN }, { 16911, 16911, REGISTRY_LACNIC }, { 16912, 16959, REGISTRY_ARIN }, { 16960, 16960, REGISTRY_LACNIC }, { 16961, 16972, REGISTRY_ARIN }, { 16973, 16973, REGISTRY_LACNIC }, { 16974, 16974, REGISTRY_ARIN }, { 16975, 16975, REGISTRY_LACNIC }, { 16976, 16989, REGISTRY_ARIN }, { 16990, 16990, REGISTRY_LACNIC }, { 16991, 17068, REGISTRY_ARIN }, { 17069, 17069, REGISTRY_LACNIC }, { 17070, 17071, REGISTRY_ARIN }, { 17072, 17072, REGISTRY_LACNIC }, { 17073, 17078, REGISTRY_ARIN }, { 17079, 17079, REGISTRY_LACNIC }, { 17080, 17085, REGISTRY_ARIN }, { 17086, 17086, REGISTRY_LACNIC }, { 17087, 17107, REGISTRY_ARIN }, { 17108, 17108, REGISTRY_LACNIC }, { 17109, 17125, REGISTRY_ARIN }, { 17126, 17126, REGISTRY_LACNIC }, { 17127, 17146, REGISTRY_ARIN }, { 17147, 17147, REGISTRY_LACNIC }, { 17148, 17148, REGISTRY_AFRINIC }, { 17149, 17181, REGISTRY_ARIN }, { 17182, 17182, REGISTRY_LACNIC }, { 17183, 17204, REGISTRY_ARIN }, { 17205, 17205, REGISTRY_LACNIC }, { 17206, 17207, REGISTRY_ARIN }, { 17208, 17208, REGISTRY_LACNIC }, { 17209, 17219, REGISTRY_ARIN }, { 17220, 17220, REGISTRY_AFRINIC }, { 17221, 17221, REGISTRY_ARIN }, { 17222, 17222, REGISTRY_LACNIC }, { 17223, 17248, REGISTRY_ARIN }, { 17249, 17250, REGISTRY_LACNIC }, { 17251, 17254, REGISTRY_ARIN }, { 17255, 17255, REGISTRY_LACNIC }, { 17256, 17256, REGISTRY_ARIN }, { 17257, 17257, REGISTRY_LACNIC }, { 17258, 17259, REGISTRY_ARIN }, { 17260, 17260, REGISTRY_AFRINIC }, { 17261, 17286, REGISTRY_ARIN }, { 17287, 17287, REGISTRY_LACNIC }, { 17288, 17311, REGISTRY_ARIN }, { 17312, 17312, REGISTRY_AFRINIC }, { 17313, 17328, REGISTRY_ARIN }, { 17329, 17329, REGISTRY_LACNIC }, { 17330, 17375, REGISTRY_ARIN }, { 17376, 17376, REGISTRY_LACNIC }, { 17377, 17378, REGISTRY_ARIN }, { 17379, 17379, REGISTRY_LACNIC }, { 17380, 17398, REGISTRY_ARIN }, { 17399, 17399, REGISTRY_LACNIC }, { 17400, 17400, REGISTRY_AFRINIC }, { 17401, 17401, REGISTRY_LACNIC }, { 17402, 17407, REGISTRY_ARIN }, { 17408, 18431, REGISTRY_APNIC }, { 18432, 18448, REGISTRY_ARIN }, { 18449, 18449, REGISTRY_LACNIC }, { 18450, 18454, REGISTRY_ARIN }, { 18455, 18455, REGISTRY_LACNIC }, { 18456, 18465, REGISTRY_ARIN }, { 18466, 18466, REGISTRY_LACNIC }, { 18467, 18478, REGISTRY_ARIN }, { 18479, 18479, REGISTRY_LACNIC }, { 18480, 18491, REGISTRY_ARIN }, { 18492, 18492, REGISTRY_LACNIC }, { 18493, 18495, REGISTRY_ARIN }, { 18496, 18496, REGISTRY_LACNIC }, { 18497, 18531, REGISTRY_ARIN }, { 18532, 18532, REGISTRY_LACNIC }, { 18533, 18546, REGISTRY_ARIN }, { 18547, 18547, REGISTRY_LACNIC }, { 18548, 18575, REGISTRY_ARIN }, { 18576, 18576, REGISTRY_LACNIC }, { 18577, 18578, REGISTRY_ARIN }, { 18579, 18579, REGISTRY_LACNIC }, { 18580, 18591, REGISTRY_ARIN }, { 18592, 18592, REGISTRY_LACNIC }, { 18593, 18643, REGISTRY_ARIN }, { 18644, 18644, REGISTRY_LACNIC }, { 18645, 18666, REGISTRY_ARIN }, { 18667, 18667, REGISTRY_LACNIC }, { 18668, 18677, REGISTRY_ARIN }, { 18678, 18678, REGISTRY_LACNIC }, { 18679, 18731, REGISTRY_ARIN }, { 18732, 18732, REGISTRY_RIPENCC }, { 18733, 18733, REGISTRY_ARIN }, { 18734, 18734, REGISTRY_LACNIC }, { 18735, 18738, REGISTRY_ARIN }, { 18739, 18739, REGISTRY_LACNIC }, { 18740, 18774, REGISTRY_ARIN }, { 18775, 18775, REGISTRY_AFRINIC }, { 18776, 18781, REGISTRY_ARIN }, { 18782, 18782, REGISTRY_LACNIC }, { 18783, 18808, REGISTRY_ARIN }, { 18809, 18809, REGISTRY_LACNIC }, { 18810, 18821, REGISTRY_ARIN }, { 18822, 18822, REGISTRY_LACNIC }, { 18823, 18835, REGISTRY_ARIN }, { 18836, 18836, REGISTRY_LACNIC }, { 18837, 18839, REGISTRY_ARIN }, { 18840, 18840, REGISTRY_LACNIC }, { 18841, 18845, REGISTRY_ARIN }, { 18846, 18846, REGISTRY_LACNIC }, { 18847, 18868, REGISTRY_ARIN }, { 18869, 18869, REGISTRY_LACNIC }, { 18870, 18880, REGISTRY_ARIN }, { 18881, 18881, REGISTRY_LACNIC }, { 18882, 18921, REGISTRY_ARIN }, { 18922, 18922, REGISTRY_AFRINIC }, { 18923, 18930, REGISTRY_ARIN }, { 18931, 18931, REGISTRY_AFRINIC }, { 18932, 18940, REGISTRY_ARIN }, { 18941, 18941, REGISTRY_LACNIC }, { 18942, 18997, REGISTRY_ARIN }, { 18998, 18998, REGISTRY_LACNIC }, { 18999, 19032, REGISTRY_ARIN }, { 19033, 19033, REGISTRY_LACNIC }, { 19034, 19036, REGISTRY_ARIN }, { 19037, 19038, REGISTRY_LACNIC }, { 19039, 19063, REGISTRY_ARIN }, { 19064, 19064, REGISTRY_LACNIC }, { 19065, 19076, REGISTRY_ARIN }, { 19077, 19077, REGISTRY_LACNIC }, { 19078, 19088, REGISTRY_ARIN }, { 19089, 19090, REGISTRY_LACNIC }, { 19091, 19108, REGISTRY_ARIN }, { 19109, 19109, REGISTRY_LACNIC }, { 19110, 19113, REGISTRY_ARIN }, { 19114, 19114, REGISTRY_LACNIC }, { 19115, 19131, REGISTRY_ARIN }, { 19132, 19132, REGISTRY_LACNIC }, { 19133, 19135, REGISTRY_ARIN }, { 19136, 19136, REGISTRY_AFRINIC }, { 19137, 19168, REGISTRY_ARIN }, { 19169, 19169, REGISTRY_LACNIC }, { 19170, 19177, REGISTRY_ARIN }, { 19178, 19178, REGISTRY_RIPENCC }, { 19179, 19179, REGISTRY_ARIN }, { 19180, 19180, REGISTRY_LACNIC }, { 19181, 19181, REGISTRY_ARIN }, { 19182, 19182, REGISTRY_LACNIC }, { 19183, 19191, REGISTRY_ARIN }, { 19192, 19192, REGISTRY_LACNIC }, { 19193, 19195, REGISTRY_ARIN }, { 19196, 19196, REGISTRY_LACNIC }, { 19197, 19199, REGISTRY_ARIN }, { 19200, 19200, REGISTRY_LACNIC }, { 19201, 19227, REGISTRY_ARIN }, { 19228, 19228, REGISTRY_LACNIC }, { 19229, 19231, REGISTRY_ARIN }, { 19232, 19232, REGISTRY_AFRINIC }, { 19233, 19243, REGISTRY_ARIN }, { 19244, 19244, REGISTRY_LACNIC }, { 19245, 19258, REGISTRY_ARIN }, { 19259, 19259, REGISTRY_LACNIC }, { 19260, 19277, REGISTRY_ARIN }, { 19278, 19278, REGISTRY_LACNIC }, { 19279, 19314, REGISTRY_ARIN }, { 19315, 19315, REGISTRY_LACNIC }, { 19316, 19331, REGISTRY_ARIN }, { 19332, 19332, REGISTRY_LACNIC }, { 19333, 19337, REGISTRY_ARIN }, { 19338, 19338, REGISTRY_LACNIC }, { 19339, 19360, REGISTRY_ARIN }, { 19361, 19361, REGISTRY_LACNIC }, { 19362, 19372, REGISTRY_ARIN }, { 19373, 19373, REGISTRY_LACNIC }, { 19374, 19375, REGISTRY_ARIN }, { 19376, 19376, REGISTRY_RIPENCC }, { 19377, 19398, REGISTRY_ARIN }, { 19399, 19399, REGISTRY_RIPENCC }, { 19400, 19410, REGISTRY_ARIN }, { 19411, 19411, REGISTRY_LACNIC }, { 19412, 19421, REGISTRY_ARIN }, { 19422, 19422, REGISTRY_LACNIC }, { 19423, 19428, REGISTRY_ARIN }, { 19429, 19429, REGISTRY_LACNIC }, { 19430, 19446, REGISTRY_ARIN }, { 19447, 19447, REGISTRY_LACNIC }, { 19448, 19518, REGISTRY_ARIN }, { 19519, 19519, REGISTRY_LACNIC }, { 19520, 19552, REGISTRY_ARIN }, { 19553, 19553, REGISTRY_LACNIC }, { 19554, 19581, REGISTRY_ARIN }, { 19582, 19583, REGISTRY_LACNIC }, { 19584, 19610, REGISTRY_ARIN }, { 19611, 19611, REGISTRY_LACNIC }, { 19612, 19631, REGISTRY_ARIN }, { 19632, 19632, REGISTRY_LACNIC }, { 19633, 19675, REGISTRY_ARIN }, { 19676, 19676, REGISTRY_AFRINIC }, { 19677, 19687, REGISTRY_ARIN }, { 19688, 19688, REGISTRY_LACNIC }, { 19689, 19704, REGISTRY_ARIN }, { 19705, 19705, REGISTRY_APNIC }, { 19706, 19710, REGISTRY_ARIN }, { 19711, 19711, REGISTRY_AFRINIC }, { 19712, 19722, REGISTRY_ARIN }, { 19723, 19723, REGISTRY_LACNIC }, { 19724, 19730, REGISTRY_ARIN }, { 19731, 19731, REGISTRY_LACNIC }, { 19732, 19762, REGISTRY_ARIN }, { 19763, 19763, REGISTRY_LACNIC }, { 19764, 19766, REGISTRY_ARIN }, { 19767, 19767, REGISTRY_LACNIC }, { 19768, 19831, REGISTRY_ARIN }, { 19832, 19832, REGISTRY_AFRINIC }, { 19833, 19846, REGISTRY_ARIN }, { 19847, 19847, REGISTRY_AFRINIC }, { 19848, 19862, REGISTRY_ARIN }, { 19863, 19863, REGISTRY_LACNIC }, { 19864, 19872, REGISTRY_ARIN }, { 19873, 19873, REGISTRY_LACNIC }, { 19874, 19888, REGISTRY_ARIN }, { 19889, 19889, REGISTRY_LACNIC }, { 19890, 19959, REGISTRY_ARIN }, { 19960, 19960, REGISTRY_LACNIC }, { 19961, 19977, REGISTRY_ARIN }, { 19978, 19978, REGISTRY_LACNIC }, { 19979, 19988, REGISTRY_ARIN }, { 19989, 19990, REGISTRY_LACNIC }, { 19991, 20001, REGISTRY_ARIN }, { 20002, 20002, REGISTRY_LACNIC }, { 20003, 20010, REGISTRY_ARIN }, { 20011, 20011, REGISTRY_AFRINIC }, { 20012, 20014, REGISTRY_ARIN }, { 20015, 20015, REGISTRY_LACNIC }, { 20016, 20031, REGISTRY_ARIN }, { 20032, 20032, REGISTRY_LACNIC }, { 20033, 20042, REGISTRY_ARIN }, { 20043, 20044, REGISTRY_LACNIC }, { 20045, 20085, REGISTRY_ARIN }, { 20086, 20086, REGISTRY_AFRINIC }, { 20087, 20094, REGISTRY_ARIN }, { 20095, 20095, REGISTRY_AFRINIC }, { 20096, 20105, REGISTRY_ARIN }, { 20106, 20106, REGISTRY_LACNIC }, { 20107, 20115, REGISTRY_ARIN }, { 20116, 20117, REGISTRY_LACNIC }, { 20118, 20120, REGISTRY_ARIN }, { 20121, 20121, REGISTRY_LACNIC }, { 20122, 20141, REGISTRY_ARIN }, { 20142, 20142, REGISTRY_LACNIC }, { 20143, 20172, REGISTRY_ARIN }, { 20173, 20173, REGISTRY_LACNIC }, { 20174, 20179, REGISTRY_ARIN }, { 20180, 20180, REGISTRY_AFRINIC }, { 20181, 20190, REGISTRY_ARIN }, { 20191, 20191, REGISTRY_LACNIC }, { 20192, 20206, REGISTRY_ARIN }, { 20207, 20207, REGISTRY_LACNIC }, { 20208, 20231, REGISTRY_ARIN }, { 20232, 20232, REGISTRY_LACNIC }, { 20233, 20243, REGISTRY_ARIN }, { 20244, 20244, REGISTRY_LACNIC }, { 20245, 20254, REGISTRY_ARIN }, { 20255, 20256, REGISTRY_LACNIC }, { 20257, 20265, REGISTRY_ARIN }, { 20266, 20266, REGISTRY_LACNIC }, { 20267, 20293, REGISTRY_ARIN }, { 20294, 20294, REGISTRY_AFRINIC }, { 20295, 20296, REGISTRY_ARIN }, { 20297, 20297, REGISTRY_LACNIC }, { 20298, 20298, REGISTRY_ARIN }, { 20299, 20299, REGISTRY_LACNIC }, { 20300, 20304, REGISTRY_ARIN }, { 20305, 20305, REGISTRY_LACNIC }, { 20306, 20311, REGISTRY_ARIN }, { 20312, 20312, REGISTRY_LACNIC }, { 20313, 20320, REGISTRY_ARIN }, { 20321, 20321, REGISTRY_LACNIC }, { 20322, 20344, REGISTRY_ARIN }, { 20345, 20345, REGISTRY_LACNIC }, { 20346, 20360, REGISTRY_ARIN }, { 20361, 20361, REGISTRY_LACNIC }, { 20362, 20362, REGISTRY_ARIN }, { 20363, 20363, REGISTRY_LACNIC }, { 20364, 20417, REGISTRY_ARIN }, { 20418, 20418, REGISTRY_LACNIC }, { 20419, 20458, REGISTRY_ARIN }, { 20459, 20459, REGISTRY_AFRINIC }, { 20460, 20479, REGISTRY_ARIN }, { 20480, 20483, REGISTRY_RIPENCC }, { 20484, 20484, REGISTRY_AFRINIC }, { 20485, 20857, REGISTRY_RIPENCC }, { 20858, 20858, REGISTRY_AFRINIC }, { 20859, 20927, REGISTRY_RIPENCC }, { 20928, 20928, REGISTRY_AFRINIC }, { 20929, 21002, REGISTRY_RIPENCC }, { 21003, 21003, REGISTRY_AFRINIC }, { 21004, 21151, REGISTRY_RIPENCC }, { 21152, 21152, REGISTRY_AFRINIC }, { 21153, 21241, REGISTRY_RIPENCC }, { 21242, 21242, REGISTRY_AFRINIC }, { 21243, 21270, REGISTRY_RIPENCC }, { 21271, 21271, REGISTRY_AFRINIC }, { 21272, 21277, REGISTRY_RIPENCC }, { 21278, 21278, REGISTRY_AFRINIC }, { 21279, 21279, REGISTRY_RIPENCC }, { 21280, 21280, REGISTRY_AFRINIC }, { 21281, 21390, REGISTRY_RIPENCC }, { 21391, 21391, REGISTRY_AFRINIC }, { 21392, 21451, REGISTRY_RIPENCC }, { 21452, 21452, REGISTRY_AFRINIC }, { 21453, 21503, REGISTRY_RIPENCC }, { 21504, 21505, REGISTRY_ARIN }, { 21506, 21506, REGISTRY_LACNIC }, { 21507, 21519, REGISTRY_ARIN }, { 21520, 21520, REGISTRY_LACNIC }, { 21521, 21570, REGISTRY_ARIN }, { 21571, 21571, REGISTRY_LACNIC }, { 21572, 21573, REGISTRY_ARIN }, { 21574, 21575, REGISTRY_LACNIC }, { 21576, 21577, REGISTRY_ARIN }, { 21578, 21578, REGISTRY_LACNIC }, { 21579, 21589, REGISTRY_ARIN }, { 21590, 21590, REGISTRY_LACNIC }, { 21591, 21598, REGISTRY_ARIN }, { 21599, 21599, REGISTRY_LACNIC }, { 21600, 21602, REGISTRY_ARIN }, { 21603, 21603, REGISTRY_LACNIC }, { 21604, 21611, REGISTRY_ARIN }, { 21612, 21612, REGISTRY_LACNIC }, { 21613, 21613, REGISTRY_ARIN }, { 21614, 21614, REGISTRY_LACNIC }, { 21615, 21673, REGISTRY_ARIN }, { 21674, 21674, REGISTRY_LACNIC }, { 21675, 21691, REGISTRY_ARIN }, { 21692, 21692, REGISTRY_LACNIC }, { 21693, 21738, REGISTRY_ARIN }, { 21739, 21739, REGISTRY_AFRINIC }, { 21740, 21740, REGISTRY_ARIN }, { 21741, 21741, REGISTRY_LACNIC }, { 21742, 21752, REGISTRY_ARIN }, { 21753, 21753, REGISTRY_LACNIC }, { 21754, 21755, REGISTRY_ARIN }, { 21756, 21756, REGISTRY_LACNIC }, { 21757, 21764, REGISTRY_ARIN }, { 21765, 21765, REGISTRY_LACNIC }, { 21766, 21767, REGISTRY_ARIN }, { 21768, 21768, REGISTRY_LACNIC }, { 21769, 21818, REGISTRY_ARIN }, { 21819, 21819, REGISTRY_AFRINIC }, { 21820, 21823, REGISTRY_ARIN }, { 21824, 21824, REGISTRY_LACNIC }, { 21825, 21825, REGISTRY_ARIN }, { 21826, 21826, REGISTRY_LACNIC }, { 21827, 21837, REGISTRY_ARIN }, { 21838, 21838, REGISTRY_LACNIC }, { 21839, 21861, REGISTRY_ARIN }, { 21862, 21862, REGISTRY_LACNIC }, { 21863, 21882, REGISTRY_ARIN }, { 21883, 21883, REGISTRY_LACNIC }, { 21884, 21887, REGISTRY_ARIN }, { 21888, 21888, REGISTRY_LACNIC }, { 21889, 21910, REGISTRY_ARIN }, { 21911, 21911, REGISTRY_LACNIC }, { 21912, 21916, REGISTRY_ARIN }, { 21917, 21917, REGISTRY_LACNIC }, { 21918, 21979, REGISTRY_ARIN }, { 21980, 21980, REGISTRY_LACNIC }, { 21981, 22009, REGISTRY_ARIN }, { 22010, 22011, REGISTRY_LACNIC }, { 22012, 22018, REGISTRY_ARIN }, { 22019, 22019, REGISTRY_LACNIC }, { 22020, 22046, REGISTRY_ARIN }, { 22047, 22047, REGISTRY_LACNIC }, { 22048, 22054, REGISTRY_ARIN }, { 22055, 22055, REGISTRY_LACNIC }, { 22056, 22079, REGISTRY_ARIN }, { 22080, 22080, REGISTRY_LACNIC }, { 22081, 22084, REGISTRY_ARIN }, { 22085, 22085, REGISTRY_LACNIC }, { 22086, 22091, REGISTRY_ARIN }, { 22092, 22092, REGISTRY_LACNIC }, { 22093, 22107, REGISTRY_ARIN }, { 22108, 22108, REGISTRY_RIPENCC }, { 22109, 22121, REGISTRY_ARIN }, { 22122, 22122, REGISTRY_LACNIC }, { 22123, 22127, REGISTRY_ARIN }, { 22128, 22129, REGISTRY_LACNIC }, { 22130, 22132, REGISTRY_ARIN }, { 22133, 22133, REGISTRY_LACNIC }, { 22134, 22147, REGISTRY_ARIN }, { 22148, 22148, REGISTRY_LACNIC }, { 22149, 22176, REGISTRY_ARIN }, { 22177, 22177, REGISTRY_LACNIC }, { 22178, 22184, REGISTRY_ARIN }, { 22185, 22185, REGISTRY_LACNIC }, { 22186, 22226, REGISTRY_ARIN }, { 22227, 22227, REGISTRY_LACNIC }, { 22228, 22249, REGISTRY_ARIN }, { 22250, 22250, REGISTRY_LACNIC }, { 22251, 22304, REGISTRY_ARIN }, { 22305, 22305, REGISTRY_LACNIC }, { 22306, 22312, REGISTRY_ARIN }, { 22313, 22313, REGISTRY_LACNIC }, { 22314, 22340, REGISTRY_ARIN }, { 22341, 22341, REGISTRY_LACNIC }, { 22342, 22353, REGISTRY_ARIN }, { 22354, 22355, REGISTRY_AFRINIC }, { 22356, 22356, REGISTRY_LACNIC }, { 22357, 22367, REGISTRY_ARIN }, { 22368, 22368, REGISTRY_LACNIC }, { 22369, 22370, REGISTRY_ARIN }, { 22371, 22371, REGISTRY_LACNIC }, { 22372, 22380, REGISTRY_ARIN }, { 22381, 22382, REGISTRY_LACNIC }, { 22383, 22385, REGISTRY_ARIN }, { 22386, 22386, REGISTRY_AFRINIC }, { 22387, 22406, REGISTRY_ARIN }, { 22407, 22407, REGISTRY_LACNIC }, { 22408, 22410, REGISTRY_ARIN }, { 22411, 22411, REGISTRY_LACNIC }, { 22412, 22430, REGISTRY_ARIN }, { 22431, 22431, REGISTRY_LACNIC }, { 22432, 22452, REGISTRY_ARIN }, { 22453, 22453, REGISTRY_LACNIC }, { 22454, 22500, REGISTRY_ARIN }, { 22501, 22501, REGISTRY_LACNIC }, { 22502, 22507, REGISTRY_ARIN }, { 22508, 22508, REGISTRY_LACNIC }, { 22509, 22514, REGISTRY_ARIN }, { 22515, 22515, REGISTRY_LACNIC }, { 22516, 22528, REGISTRY_ARIN }, { 22529, 22529, REGISTRY_LACNIC }, { 22530, 22540, REGISTRY_ARIN }, { 22541, 22541, REGISTRY_LACNIC }, { 22542, 22547, REGISTRY_ARIN }, { 22548, 22548, REGISTRY_LACNIC }, { 22549, 22565, REGISTRY_ARIN }, { 22566, 22566, REGISTRY_LACNIC }, { 22567, 22571, REGISTRY_ARIN }, { 22572, 22572, REGISTRY_AFRINIC }, { 22573, 22626, REGISTRY_ARIN }, { 22627, 22627, REGISTRY_RIPENCC }, { 22628, 22628, REGISTRY_LACNIC }, { 22629, 22660, REGISTRY_ARIN }, { 22661, 22661, REGISTRY_LACNIC }, { 22662, 22677, REGISTRY_ARIN }, { 22678, 22678, REGISTRY_LACNIC }, { 22679, 22682, REGISTRY_ARIN }, { 22683, 22683, REGISTRY_RIPENCC }, { 22684, 22688, REGISTRY_ARIN }, { 22689, 22689, REGISTRY_LACNIC }, { 22690, 22690, REGISTRY_AFRINIC }, { 22691, 22697, REGISTRY_ARIN }, { 22698, 22699, REGISTRY_LACNIC }, { 22700, 22705, REGISTRY_ARIN }, { 22706, 22706, REGISTRY_LACNIC }, { 22707, 22723, REGISTRY_ARIN }, { 22724, 22724, REGISTRY_LACNIC }, { 22725, 22725, REGISTRY_ARIN }, { 22726, 22726, REGISTRY_LACNIC }, { 22727, 22734, REGISTRY_ARIN }, { 22735, 22735, REGISTRY_AFRINIC }, { 22736, 22744, REGISTRY_ARIN }, { 22745, 22745, REGISTRY_LACNIC }, { 22746, 22749, REGISTRY_ARIN }, { 22750, 22750, REGISTRY_AFRINIC }, { 22751, 22797, REGISTRY_ARIN }, { 22798, 22798, REGISTRY_LACNIC }, { 22799, 22817, REGISTRY_ARIN }, { 22818, 22819, REGISTRY_LACNIC }, { 22820, 22832, REGISTRY_ARIN }, { 22833, 22833, REGISTRY_LACNIC }, { 22834, 22859, REGISTRY_ARIN }, { 22860, 22860, REGISTRY_LACNIC }, { 22861, 22868, REGISTRY_ARIN }, { 22869, 22869, REGISTRY_LACNIC }, { 22870, 22875, REGISTRY_ARIN }, { 22876, 22876, REGISTRY_LACNIC }, { 22877, 22881, REGISTRY_ARIN }, { 22882, 22882, REGISTRY_LACNIC }, { 22883, 22883, REGISTRY_ARIN }, { 22884, 22884, REGISTRY_LACNIC }, { 22885, 22888, REGISTRY_ARIN }, { 22889, 22889, REGISTRY_LACNIC }, { 22890, 22893, REGISTRY_ARIN }, { 22894, 22894, REGISTRY_LACNIC }, { 22895, 22907, REGISTRY_ARIN }, { 22908, 22908, REGISTRY_LACNIC }, { 22909, 22923, REGISTRY_ARIN }, { 22924, 22924, REGISTRY_LACNIC }, { 22925, 22926, REGISTRY_ARIN }, { 22927, 22927, REGISTRY_LACNIC }, { 22928, 22938, REGISTRY_ARIN }, { 22939, 22939, REGISTRY_AFRINIC }, { 22940, 22974, REGISTRY_ARIN }, { 22975, 22975, REGISTRY_LACNIC }, { 22976, 23001, REGISTRY_ARIN }, { 23002, 23002, REGISTRY_LACNIC }, { 23003, 23006, REGISTRY_ARIN }, { 23007, 23007, REGISTRY_LACNIC }, { 23008, 23019, REGISTRY_ARIN }, { 23020, 23020, REGISTRY_LACNIC }, { 23021, 23030, REGISTRY_ARIN }, { 23031, 23031, REGISTRY_LACNIC }, { 23032, 23057, REGISTRY_ARIN }, { 23058, 23058, REGISTRY_AFRINIC }, { 23059, 23073, REGISTRY_ARIN }, { 23074, 23074, REGISTRY_LACNIC }, { 23075, 23090, REGISTRY_ARIN }, { 23091, 23091, REGISTRY_LACNIC }, { 23092, 23104, REGISTRY_ARIN }, { 23105, 23106, REGISTRY_LACNIC }, { 23107, 23112, REGISTRY_ARIN }, { 23113, 23113, REGISTRY_LACNIC }, { 23114, 23127, REGISTRY_ARIN }, { 23128, 23128, REGISTRY_LACNIC }, { 23129, 23139, REGISTRY_ARIN }, { 23140, 23140, REGISTRY_LACNIC }, { 23141, 23200, REGISTRY_ARIN }, { 23201, 23202, REGISTRY_LACNIC }, { 23203, 23215, REGISTRY_ARIN }, { 23216, 23216, REGISTRY_LACNIC }, { 23217, 23241, REGISTRY_ARIN }, { 23242, 23242, REGISTRY_RIPENCC }, { 23243, 23243, REGISTRY_LACNIC }, { 23244, 23245, REGISTRY_ARIN }, { 23246, 23246, REGISTRY_LACNIC }, { 23247, 23288, REGISTRY_ARIN }, { 23289, 23289, REGISTRY_LACNIC }, { 23290, 23352, REGISTRY_ARIN }, { 23353, 23353, REGISTRY_LACNIC }, { 23354, 23359, REGISTRY_ARIN }, { 23360, 23360, REGISTRY_LACNIC }, { 23361, 23381, REGISTRY_ARIN }, { 23382, 23383, REGISTRY_LACNIC }, { 23384, 23415, REGISTRY_ARIN }, { 23416, 23416, REGISTRY_LACNIC }, { 23417, 23455, REGISTRY_ARIN }, { 23457, 23486, REGISTRY_ARIN }, { 23487, 23488, REGISTRY_LACNIC }, { 23489, 23494, REGISTRY_ARIN }, { 23495, 23495, REGISTRY_LACNIC }, { 23496, 23540, REGISTRY_ARIN }, { 23541, 23541, REGISTRY_LACNIC }, { 23542, 23548, REGISTRY_ARIN }, { 23549, 23549, REGISTRY_AFRINIC }, { 23550, 23551, REGISTRY_ARIN }, { 23552, 24575, REGISTRY_APNIC }, { 24576, 24735, REGISTRY_RIPENCC }, { 24736, 24736, REGISTRY_AFRINIC }, { 24737, 24756, REGISTRY_RIPENCC }, { 24757, 24757, REGISTRY_AFRINIC }, { 24758, 24787, REGISTRY_RIPENCC }, { 24788, 24788, REGISTRY_AFRINIC }, { 24789, 24800, REGISTRY_RIPENCC }, { 24801, 24801, REGISTRY_AFRINIC }, { 24802, 24834, REGISTRY_RIPENCC }, { 24835, 24835, REGISTRY_AFRINIC }, { 24836, 24862, REGISTRY_RIPENCC }, { 24863, 24863, REGISTRY_AFRINIC }, { 24864, 24877, REGISTRY_RIPENCC }, { 24878, 24878, REGISTRY_AFRINIC }, { 24879, 24986, REGISTRY_RIPENCC }, { 24987, 24987, REGISTRY_AFRINIC }, { 24988, 25162, REGISTRY_RIPENCC }, { 25163, 25163, REGISTRY_AFRINIC }, { 25164, 25249, REGISTRY_RIPENCC }, { 25250, 25250, REGISTRY_AFRINIC }, { 25251, 25361, REGISTRY_RIPENCC }, { 25362, 25362, REGISTRY_AFRINIC }, { 25363, 25363, REGISTRY_RIPENCC }, { 25364, 25364, REGISTRY_AFRINIC }, { 25365, 25542, REGISTRY_RIPENCC }, { 25543, 25543, REGISTRY_AFRINIC }, { 25544, 25567, REGISTRY_RIPENCC }, { 25568, 25568, REGISTRY_AFRINIC }, { 25569, 25575, REGISTRY_RIPENCC }, { 25576, 25576, REGISTRY_AFRINIC }, { 25577, 25599, REGISTRY_RIPENCC }, { 25600, 25606, REGISTRY_ARIN }, { 25607, 25607, REGISTRY_LACNIC }, { 25608, 25619, REGISTRY_ARIN }, { 25620, 25620, REGISTRY_LACNIC }, { 25621, 25694, REGISTRY_ARIN }, { 25695, 25695, REGISTRY_AFRINIC }, { 25696, 25700, REGISTRY_ARIN }, { 25701, 25701, REGISTRY_LACNIC }, { 25702, 25704, REGISTRY_ARIN }, { 25705, 25705, REGISTRY_LACNIC }, { 25706, 25717, REGISTRY_ARIN }, { 25718, 25718, REGISTRY_LACNIC }, { 25719, 25725, REGISTRY_ARIN }, { 25726, 25726, REGISTRY_AFRINIC }, { 25727, 25733, REGISTRY_ARIN }, { 25734, 25734, REGISTRY_LACNIC }, { 25735, 25792, REGISTRY_ARIN }, { 25793, 25793, REGISTRY_AFRINIC }, { 25794, 25811, REGISTRY_ARIN }, { 25812, 25812, REGISTRY_LACNIC }, { 25813, 25817, REGISTRY_ARIN }, { 25818, 25818, REGISTRY_AFRINIC }, { 25819, 25831, REGISTRY_ARIN }, { 25832, 25832, REGISTRY_LACNIC }, { 25833, 25879, REGISTRY_ARIN }, { 25880, 25880, REGISTRY_RIPENCC }, { 25881, 25907, REGISTRY_ARIN }, { 25908, 25908, REGISTRY_LACNIC }, { 25909, 25926, REGISTRY_ARIN }, { 25927, 25927, REGISTRY_LACNIC }, { 25928, 25932, REGISTRY_ARIN }, { 25933, 25933, REGISTRY_LACNIC }, { 25934, 25997, REGISTRY_ARIN }, { 25998, 25998, REGISTRY_LACNIC }, { 25999, 26047, REGISTRY_ARIN }, { 26048, 26048, REGISTRY_LACNIC }, { 26049, 26060, REGISTRY_ARIN }, { 26061, 26061, REGISTRY_LACNIC }, { 26062, 26089, REGISTRY_ARIN }, { 26090, 26090, REGISTRY_LACNIC }, { 26091, 26103, REGISTRY_ARIN }, { 26104, 26105, REGISTRY_LACNIC }, { 26106, 26106, REGISTRY_AFRINIC }, { 26107, 26107, REGISTRY_LACNIC }, { 26108, 26111, REGISTRY_ARIN }, { 26112, 26112, REGISTRY_LACNIC }, { 26113, 26117, REGISTRY_ARIN }, { 26118, 26119, REGISTRY_LACNIC }, { 26120, 26129, REGISTRY_ARIN }, { 26130, 26130, REGISTRY_AFRINIC }, { 26131, 26135, REGISTRY_ARIN }, { 26136, 26136, REGISTRY_LACNIC }, { 26137, 26161, REGISTRY_ARIN }, { 26162, 26162, REGISTRY_LACNIC }, { 26163, 26172, REGISTRY_ARIN }, { 26173, 26173, REGISTRY_LACNIC }, { 26174, 26193, REGISTRY_ARIN }, { 26194, 26194, REGISTRY_LACNIC }, { 26195, 26209, REGISTRY_ARIN }, { 26210, 26210, REGISTRY_LACNIC }, { 26211, 26217, REGISTRY_ARIN }, { 26218, 26218, REGISTRY_LACNIC }, { 26219, 26316, REGISTRY_ARIN }, { 26317, 26317, REGISTRY_LACNIC }, { 26318, 26417, REGISTRY_ARIN }, { 26418, 26418, REGISTRY_LACNIC }, { 26419, 26421, REGISTRY_ARIN }, { 26422, 26422, REGISTRY_AFRINIC }, { 26423, 26425, REGISTRY_ARIN }, { 26426, 26426, REGISTRY_LACNIC }, { 26427, 26433, REGISTRY_ARIN }, { 26434, 26434, REGISTRY_LACNIC }, { 26435, 26472, REGISTRY_ARIN }, { 26473, 26473, REGISTRY_LACNIC }, { 26474, 26504, REGISTRY_ARIN }, { 26505, 26505, REGISTRY_LACNIC }, { 26506, 26591, REGISTRY_ARIN }, { 26592, 26623, REGISTRY_LACNIC }, { 26624, 26624, REGISTRY_ARIN }, { 26625, 26625, REGISTRY_AFRINIC }, { 26626, 26753, REGISTRY_ARIN }, { 26754, 26754, REGISTRY_AFRINIC }, { 26755, 27575, REGISTRY_ARIN }, { 27576, 27576, REGISTRY_AFRINIC }, { 27577, 27597, REGISTRY_ARIN }, { 27598, 27598, REGISTRY_AFRINIC }, { 27599, 27647, REGISTRY_ARIN }, { 27648, 28671, REGISTRY_LACNIC }, { 28672, 28682, REGISTRY_RIPENCC }, { 28683, 28683, REGISTRY_AFRINIC }, { 28684, 28697, REGISTRY_RIPENCC }, { 28698, 28698, REGISTRY_AFRINIC }, { 28699, 28912, REGISTRY_RIPENCC }, { 28913, 28913, REGISTRY_AFRINIC }, { 28914, 29090, REGISTRY_RIPENCC }, { 29091, 29091, REGISTRY_AFRINIC }, { 29092, 29337, REGISTRY_RIPENCC }, { 29338, 29338, REGISTRY_AFRINIC }, { 29339, 29339, REGISTRY_RIPENCC }, { 29340, 29340, REGISTRY_AFRINIC }, { 29341, 29427, REGISTRY_RIPENCC }, { 29428, 29428, REGISTRY_AFRINIC }, { 29429, 29494, REGISTRY_RIPENCC }, { 29495, 29495, REGISTRY_AFRINIC }, { 29496, 29543, REGISTRY_RIPENCC }, { 29544, 29544, REGISTRY_AFRINIC }, { 29545, 29570, REGISTRY_RIPENCC }, { 29571, 29571, REGISTRY_AFRINIC }, { 29572, 29613, REGISTRY_RIPENCC }, { 29614, 29614, REGISTRY_AFRINIC }, { 29615, 29673, REGISTRY_RIPENCC }, { 29674, 29674, REGISTRY_AFRINIC }, { 29675, 29695, REGISTRY_RIPENCC }, { 29696, 29917, REGISTRY_ARIN }, { 29918, 29918, REGISTRY_AFRINIC }, { 29919, 29974, REGISTRY_ARIN }, { 29975, 29975, REGISTRY_AFRINIC }, { 29976, 30072, REGISTRY_ARIN }, { 30073, 30073, REGISTRY_AFRINIC }, { 30074, 30305, REGISTRY_ARIN }, { 30306, 30306, REGISTRY_AFRINIC }, { 30307, 30428, REGISTRY_ARIN }, { 30429, 30429, REGISTRY_AFRINIC }, { 30430, 30618, REGISTRY_ARIN }, { 30619, 30619, REGISTRY_AFRINIC }, { 30620, 30719, REGISTRY_ARIN }, { 30720, 30895, REGISTRY_RIPENCC }, { 30896, 30896, REGISTRY_AFRINIC }, { 30897, 30979, REGISTRY_RIPENCC }, { 30980, 30980, REGISTRY_AFRINIC }, { 30981, 30981, REGISTRY_RIPENCC }, { 30982, 30999, REGISTRY_AFRINIC }, { 31000, 31064, REGISTRY_RIPENCC }, { 31065, 31065, REGISTRY_AFRINIC }, { 31066, 31244, REGISTRY_RIPENCC }, { 31245, 31245, REGISTRY_AFRINIC }, { 31246, 31618, REGISTRY_RIPENCC }, { 31619, 31619, REGISTRY_AFRINIC }, { 31620, 31743, REGISTRY_RIPENCC }, { 31744, 31809, REGISTRY_ARIN }, { 31810, 31810, REGISTRY_AFRINIC }, { 31811, 31855, REGISTRY_ARIN }, { 31856, 31856, REGISTRY_AFRINIC }, { 31857, 31959, REGISTRY_ARIN }, { 31960, 31960, REGISTRY_AFRINIC }, { 31961, 32016, REGISTRY_ARIN }, { 32017, 32017, REGISTRY_AFRINIC }, { 32018, 32278, REGISTRY_ARIN }, { 32279, 32279, REGISTRY_AFRINIC }, { 32280, 32397, REGISTRY_ARIN }, { 32398, 32398, REGISTRY_AFRINIC }, { 32399, 32436, REGISTRY_ARIN }, { 32437, 32437, REGISTRY_AFRINIC }, { 32438, 32652, REGISTRY_ARIN }, { 32653, 32653, REGISTRY_AFRINIC }, { 32654, 32713, REGISTRY_ARIN }, { 32714, 32714, REGISTRY_AFRINIC }, { 32715, 32716, REGISTRY_ARIN }, { 32717, 32717, REGISTRY_AFRINIC }, { 32718, 32841, REGISTRY_ARIN }, { 32842, 32842, REGISTRY_AFRINIC }, { 32843, 32859, REGISTRY_ARIN }, { 32860, 32860, REGISTRY_AFRINIC }, { 32861, 33566, REGISTRY_ARIN }, { 33567, 33567, REGISTRY_AFRINIC }, { 33568, 33578, REGISTRY_ARIN }, { 33579, 33579, REGISTRY_AFRINIC }, { 33580, 33761, REGISTRY_ARIN }, { 33762, 33791, REGISTRY_AFRINIC }, { 33792, 34815, REGISTRY_RIPENCC }, { 34816, 35839, REGISTRY_RIPENCC }, { 35840, 36863, REGISTRY_ARIN }, { 36864, 37887, REGISTRY_AFRINIC }, { 37888, 38911, REGISTRY_APNIC }, { 38912, 39935, REGISTRY_RIPENCC }, { 39936, 40959, REGISTRY_ARIN }, { 40960, 41983, REGISTRY_RIPENCC }, { 41984, 43007, REGISTRY_RIPENCC }, { 43008, 44031, REGISTRY_RIPENCC }, { 44032, 45055, REGISTRY_RIPENCC }, { 45056, 46079, REGISTRY_APNIC }, { 46080, 47103, REGISTRY_ARIN }, { 47104, 48127, REGISTRY_RIPENCC }, { 48128, 49151, REGISTRY_RIPENCC }, { 49152, 50175, REGISTRY_RIPENCC }, { 50176, 51199, REGISTRY_RIPENCC }, { 51200, 52223, REGISTRY_RIPENCC }, { 52224, 53247, REGISTRY_LACNIC }, { 53248, 54271, REGISTRY_ARIN }, { 54272, 55295, REGISTRY_ARIN }, { 55296, 56319, REGISTRY_APNIC }, { 56320, 57343, REGISTRY_RIPENCC }, { 57344, 58367, REGISTRY_RIPENCC }, { 58368, 59391, REGISTRY_APNIC }, { 59392, 60415, REGISTRY_RIPENCC }, { 60416, 61439, REGISTRY_RIPENCC }, { 61440, 61951, REGISTRY_LACNIC }, { 61952, 62463, REGISTRY_RIPENCC }, { 62464, 63487, REGISTRY_ARIN }, { 63488, 63999, REGISTRY_APNIC }, { 64000, 64098, REGISTRY_APNIC }, { 64099, 64197, REGISTRY_LACNIC }, { 64198, 64296, REGISTRY_ARIN }, { 64297, 64395, REGISTRY_APNIC }, { 64396, 64495, REGISTRY_RIPENCC }, { 131072, 132095, REGISTRY_APNIC }, { 132096, 133119, REGISTRY_APNIC }, { 133120, 133631, REGISTRY_APNIC }, { 133632, 134556, REGISTRY_APNIC }, { 134557, 135580, REGISTRY_APNIC }, { 135581, 136505, REGISTRY_APNIC }, { 136506, 137529, REGISTRY_APNIC }, { 196608, 197631, REGISTRY_RIPENCC }, { 197632, 198655, REGISTRY_RIPENCC }, { 198656, 199679, REGISTRY_RIPENCC }, { 199680, 200191, REGISTRY_RIPENCC }, { 200192, 201215, REGISTRY_RIPENCC }, { 201216, 202239, REGISTRY_RIPENCC }, { 202240, 203263, REGISTRY_RIPENCC }, { 203264, 204287, REGISTRY_RIPENCC }, { 204288, 205211, REGISTRY_RIPENCC }, { 205212, 206235, REGISTRY_RIPENCC }, { 206236, 207259, REGISTRY_RIPENCC }, { 262144, 263167, REGISTRY_LACNIC }, { 263168, 263679, REGISTRY_LACNIC }, { 263680, 264604, REGISTRY_LACNIC }, { 264605, 265628, REGISTRY_LACNIC }, { 265629, 266652, REGISTRY_LACNIC }, { 327680, 328703, REGISTRY_AFRINIC }, { 393216, 394239, REGISTRY_ARIN }, { 394240, 395164, REGISTRY_ARIN }, { 395165, 396188, REGISTRY_ARIN }, { 396189, 397212, REGISTRY_ARIN }, }; ipv6calc-1.0.0/databases/cc-assignment/000077500000000000000000000000001312366535500177125ustar00rootroot00000000000000ipv6calc-1.0.0/databases/cc-assignment/Makefile000066400000000000000000000012071312366535500213520ustar00rootroot00000000000000# Project : ipv6calc/databases/cc-assignment # File : Makefile # Version : $Id: 22b39c5d475f107c5519626c2c659e4d4d763374 $ # Copyright : 2013-2013 by Peter Bieringer # # Information: # Makefile for cc-assignment all: test -f db_cc_reg_assignment.h || ${MAKE} update install: echo "Nothing to do" update: echo "Generate new header file, if necessary" ./check-run-create.sh updateclean: echo "Delete header file" rm -f db_cc_reg_assignment.h distclean: echo "Nothing to do" autoclean: echo "Nothing to do" clean: echo "Nothing to do" updateforce: ${MAKE} updateclean ${MAKE} update ipv6calc-1.0.0/databases/cc-assignment/check-run-create.sh000077500000000000000000000022301312366535500233660ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/databases/cc-assignment # File : check-run-create.sh # Version : $Id: 1003fad4ed2e996a10e95ed917a3821e82648c65 $ # Copyright : 2013-2013 by Peter Bieringer #set -x flag_update=0 file_header="db_cc_reg_assignment.h" if [ -f $file_header ]; then ARIN=`find ../registries/arin -type f -name 'delegated-arin*' -newer $file_header | wc -l` APNIC=`find ../registries/apnic -type f -name 'delegated-apnic*' -newer $file_header | wc -l` RIPENCC=`find ../registries/ripencc -type f -name 'delegated-ripencc*' -newer $file_header | wc -l` LACNIC=`find ../registries/lacnic -type f -name 'delegated-lacnic*' -newer $file_header | wc -l` AFRINIC=`find ../registries/afrinic -type f -name 'delegated-afrinic*' -newer $file_header | wc -l` echo "Found newer than $file_header file: ARIN=$ARIN APNIC=$APNIC RIPENCC=$RIPENCC LACNIC=$LACNIC AFRINIC=$AFRINIC" if [ $ARIN -gt 0 -o $APNIC -gt 0 -o $RIPENCC -gt 0 -o $LACNIC -gt 0 -o $AFRINIC -gt 0 ]; then flag_update=1 fi else flag_update=1 fi if [ $flag_update -eq 1 ]; then ./create-cc-to-registry-list.pl else echo " Nothing to do!" fi ipv6calc-1.0.0/databases/cc-assignment/create-cc-to-registry-list.pl000077500000000000000000000102331312366535500253360ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc/databases/cc-assignment # File : create-cc-to-registry-list.pl # Version : $Id: c780f71915f0570195bd457cf1cd4c0cb198e391 $ # Copyright : 2013-2016 by Peter Bieringer # License : GNU GPL v2 # # Information: # Perl program which creates CountryCode -> Registry map (as header file) use IPC::Open2; #use strict; my $debug_hinttable = 0; my $debug = 0; my $OUTFILE = "db_cc_reg_assignment.h"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 48*60*60); $year = 1900 + $year; $mon = sprintf "%02d", $mon + 1; $mday = sprintf "%02d", $mday; my @files = ( "../registries/apnic/delegated-apnic-latest", "../registries/lacnic/delegated-lacnic-latest", "../registries/afrinic/delegated-afrinic-latest", "../registries/ripencc/delegated-ripencc-latest", "../registries/arin/delegated-arin-extended-latest", ); my %assignments; my %assignments_overall; my %date_created; foreach my $file (@files) { print "Proceed file: " . $file . "\n"; open(FILE, "<$file") || die "Cannot open file: $file"; my $line; my $ipv4; my $length; my $flag_proceeded; my $flag_found_date = 0; while () { $line = $_; chomp $line; # catch date line if ($line =~ /^2(\.[0-9])?\|([^\|]+)\|.*\|([0-9]{8})\|[^\|]*$/o) { $date_created{uc($2)} = $3; print "Found create date: " . $3 . "\n"; $flag_found_date = 1; next; }; # skip not proper lines if ( ! ( $line =~ /\|(ipv4|ipv6)\|/o ) ) { next; }; if ( $line =~ /\|\*\|/o ) { next; }; #print $line . "\n"; my ($reg, $tld, $token, $ipv4, $numbers, $date, $status, $other) = split /\|/, $line; if ($token !~ /^(ipv4|ipv6)$/o ) { next; }; $tld = uc($tld); $reg = uc($reg); if ($reg !~ /^(ARIN|APNIC|RIPENCC|IANA|LACNIC|AFRINIC)$/o) { print "Unsupported registry: " . $reg . "\n"; next; }; # increment counter $assignments{$tld}->{$reg}++; }; close(FILE); if ($flag_found_date != 1) { die("no date line found, unsupported file format"); }; }; ## Biggest wins foreach my $tld (sort keys %assignments) { my $reg; # find biggest one my $entries = scalar(keys %{$assignments{$tld}}); if ($entries == 1) { $reg = (keys %{$assignments{$tld}})[0]; } else { # check for biggest one my $max = 0; for $reg_entry (keys %{$assignments{$tld}}) { if ($assignments{$tld}->{$reg_entry} > $max) { $max = $assignments{$tld}->{$reg_entry}; $reg = $reg_entry; }; }; }; $assignments_overall{$tld} = $reg; }; # Create header file print "Create outfile now: " . $OUTFILE . "\n"; open(OUT, ">$OUTFILE") || die "Cannot open outfile: $OUTFILE"; # Header my $now_string = localtime; print OUT qq| /* * Project : ipv6calc * File : db_cc_reg_assignment.h |; print OUT " * Version : \$I"; print OUT "d:\$\n"; print OUT qq| * Generated : $now_string * Data copyright: RIPE NCC, APNIC, ARIN, LACNIC, AFRINIC * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ |; # print creation dates my $string = ""; for my $reg (sort keys %date_created) { if (length($string) > 0) { $string .= " "; }; $string .= $reg . "/" . $date_created{$reg}; }; print OUT "static const char *db_cc_registry_status = \"$string\";\n"; # Main data structure print OUT qq| static const s_cc_reg_assignment cc_reg_assignment[] = { |; foreach my $tld (sort keys %assignments_overall) { printf OUT "\t{ \"%s\", REGISTRY_%-8s },\n", $tld, $assignments_overall{$tld}; }; print OUT "};\n"; # Indexed data structure print OUT qq| static const s_cc_index_reg_assignment cc_index_reg_assignment[] = { |; for (my $i = 0; $i < 1024; $i++) { # convert index into cc my $c1 = ($i % 26) + ord('A'); my $c2 = int($i / 26); if ($c2 > 9) { $c2 = $c2 + ord('A') - 10; } else { $c2 = $c2 + ord('0'); }; my $cc = chr($c1) . chr($c2); my $reg; if (defined $assignments_overall{$cc}) { $reg = $assignments_overall{$cc}; } else { $reg = "UNKNOWN"; }; my $cc_print; if ($i < 26*36) { $cc_print = $cc; } else { $cc_print = "reserved-special"; }; printf OUT "\t{ REGISTRY_%-8s }, // %4d %s\n", $reg, $i, $cc_print; }; print OUT "};\n"; print "Finished\n"; ipv6calc-1.0.0/databases/cc-assignment/db_cc_reg_assignment.h000066400000000000000000001314541312366535500242120ustar00rootroot00000000000000 /* * Project : ipv6calc * File : db_cc_reg_assignment.h * Version : $Id: 703e3ec017f6f1e8c3d11d1c5b34e53f7313f289 $ * Generated : Sun Jun 25 09:47:51 2017 * Data copyright: RIPE NCC, APNIC, ARIN, LACNIC, AFRINIC * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ static const char *db_cc_registry_status = "AFRINIC/20170625 APNIC/20170624 ARIN/20170625 LACNIC/20170623 RIPENCC/20170624"; static const s_cc_reg_assignment cc_reg_assignment[] = { { "", REGISTRY_ARIN }, { "AD", REGISTRY_RIPENCC }, { "AE", REGISTRY_RIPENCC }, { "AF", REGISTRY_APNIC }, { "AG", REGISTRY_ARIN }, { "AI", REGISTRY_ARIN }, { "AL", REGISTRY_RIPENCC }, { "AM", REGISTRY_RIPENCC }, { "AO", REGISTRY_AFRINIC }, { "AP", REGISTRY_APNIC }, { "AR", REGISTRY_LACNIC }, { "AS", REGISTRY_APNIC }, { "AT", REGISTRY_RIPENCC }, { "AU", REGISTRY_APNIC }, { "AW", REGISTRY_LACNIC }, { "AZ", REGISTRY_RIPENCC }, { "BA", REGISTRY_RIPENCC }, { "BB", REGISTRY_ARIN }, { "BD", REGISTRY_APNIC }, { "BE", REGISTRY_RIPENCC }, { "BF", REGISTRY_AFRINIC }, { "BG", REGISTRY_RIPENCC }, { "BH", REGISTRY_RIPENCC }, { "BI", REGISTRY_AFRINIC }, { "BJ", REGISTRY_AFRINIC }, { "BL", REGISTRY_ARIN }, { "BM", REGISTRY_ARIN }, { "BN", REGISTRY_APNIC }, { "BO", REGISTRY_LACNIC }, { "BQ", REGISTRY_LACNIC }, { "BR", REGISTRY_LACNIC }, { "BS", REGISTRY_ARIN }, { "BT", REGISTRY_APNIC }, { "BW", REGISTRY_AFRINIC }, { "BY", REGISTRY_RIPENCC }, { "BZ", REGISTRY_LACNIC }, { "CA", REGISTRY_ARIN }, { "CD", REGISTRY_AFRINIC }, { "CF", REGISTRY_AFRINIC }, { "CG", REGISTRY_AFRINIC }, { "CH", REGISTRY_RIPENCC }, { "CI", REGISTRY_AFRINIC }, { "CK", REGISTRY_APNIC }, { "CL", REGISTRY_LACNIC }, { "CM", REGISTRY_AFRINIC }, { "CN", REGISTRY_APNIC }, { "CO", REGISTRY_LACNIC }, { "CR", REGISTRY_LACNIC }, { "CU", REGISTRY_LACNIC }, { "CV", REGISTRY_AFRINIC }, { "CW", REGISTRY_LACNIC }, { "CY", REGISTRY_RIPENCC }, { "CZ", REGISTRY_RIPENCC }, { "DE", REGISTRY_RIPENCC }, { "DJ", REGISTRY_AFRINIC }, { "DK", REGISTRY_RIPENCC }, { "DM", REGISTRY_ARIN }, { "DO", REGISTRY_LACNIC }, { "DZ", REGISTRY_AFRINIC }, { "EC", REGISTRY_LACNIC }, { "EE", REGISTRY_RIPENCC }, { "EG", REGISTRY_AFRINIC }, { "ER", REGISTRY_AFRINIC }, { "ES", REGISTRY_RIPENCC }, { "ET", REGISTRY_AFRINIC }, { "EU", REGISTRY_RIPENCC }, { "FI", REGISTRY_RIPENCC }, { "FJ", REGISTRY_APNIC }, { "FM", REGISTRY_APNIC }, { "FO", REGISTRY_RIPENCC }, { "FR", REGISTRY_RIPENCC }, { "GA", REGISTRY_AFRINIC }, { "GB", REGISTRY_RIPENCC }, { "GD", REGISTRY_ARIN }, { "GE", REGISTRY_RIPENCC }, { "GF", REGISTRY_LACNIC }, { "GG", REGISTRY_RIPENCC }, { "GH", REGISTRY_AFRINIC }, { "GI", REGISTRY_RIPENCC }, { "GL", REGISTRY_RIPENCC }, { "GM", REGISTRY_AFRINIC }, { "GN", REGISTRY_AFRINIC }, { "GP", REGISTRY_ARIN }, { "GQ", REGISTRY_AFRINIC }, { "GR", REGISTRY_RIPENCC }, { "GT", REGISTRY_LACNIC }, { "GU", REGISTRY_APNIC }, { "GW", REGISTRY_AFRINIC }, { "GY", REGISTRY_LACNIC }, { "HK", REGISTRY_APNIC }, { "HN", REGISTRY_LACNIC }, { "HR", REGISTRY_RIPENCC }, { "HT", REGISTRY_LACNIC }, { "HU", REGISTRY_RIPENCC }, { "ID", REGISTRY_APNIC }, { "IE", REGISTRY_RIPENCC }, { "IL", REGISTRY_RIPENCC }, { "IM", REGISTRY_RIPENCC }, { "IN", REGISTRY_APNIC }, { "IO", REGISTRY_APNIC }, { "IQ", REGISTRY_RIPENCC }, { "IR", REGISTRY_RIPENCC }, { "IS", REGISTRY_RIPENCC }, { "IT", REGISTRY_RIPENCC }, { "JE", REGISTRY_RIPENCC }, { "JM", REGISTRY_ARIN }, { "JO", REGISTRY_RIPENCC }, { "JP", REGISTRY_APNIC }, { "KE", REGISTRY_AFRINIC }, { "KG", REGISTRY_RIPENCC }, { "KH", REGISTRY_APNIC }, { "KI", REGISTRY_APNIC }, { "KM", REGISTRY_AFRINIC }, { "KN", REGISTRY_ARIN }, { "KP", REGISTRY_APNIC }, { "KR", REGISTRY_APNIC }, { "KW", REGISTRY_RIPENCC }, { "KY", REGISTRY_ARIN }, { "KZ", REGISTRY_RIPENCC }, { "LA", REGISTRY_APNIC }, { "LB", REGISTRY_RIPENCC }, { "LC", REGISTRY_ARIN }, { "LI", REGISTRY_RIPENCC }, { "LK", REGISTRY_APNIC }, { "LR", REGISTRY_AFRINIC }, { "LS", REGISTRY_AFRINIC }, { "LT", REGISTRY_RIPENCC }, { "LU", REGISTRY_RIPENCC }, { "LV", REGISTRY_RIPENCC }, { "LY", REGISTRY_AFRINIC }, { "MA", REGISTRY_AFRINIC }, { "MC", REGISTRY_RIPENCC }, { "MD", REGISTRY_RIPENCC }, { "ME", REGISTRY_RIPENCC }, { "MF", REGISTRY_ARIN }, { "MG", REGISTRY_AFRINIC }, { "MH", REGISTRY_APNIC }, { "MK", REGISTRY_RIPENCC }, { "ML", REGISTRY_AFRINIC }, { "MM", REGISTRY_APNIC }, { "MN", REGISTRY_APNIC }, { "MO", REGISTRY_APNIC }, { "MP", REGISTRY_APNIC }, { "MQ", REGISTRY_RIPENCC }, { "MR", REGISTRY_AFRINIC }, { "MS", REGISTRY_ARIN }, { "MT", REGISTRY_RIPENCC }, { "MU", REGISTRY_AFRINIC }, { "MV", REGISTRY_APNIC }, { "MW", REGISTRY_AFRINIC }, { "MX", REGISTRY_LACNIC }, { "MY", REGISTRY_APNIC }, { "MZ", REGISTRY_AFRINIC }, { "NA", REGISTRY_AFRINIC }, { "NC", REGISTRY_APNIC }, { "NE", REGISTRY_AFRINIC }, { "NF", REGISTRY_APNIC }, { "NG", REGISTRY_AFRINIC }, { "NI", REGISTRY_LACNIC }, { "NL", REGISTRY_RIPENCC }, { "NO", REGISTRY_RIPENCC }, { "NP", REGISTRY_APNIC }, { "NR", REGISTRY_APNIC }, { "NU", REGISTRY_APNIC }, { "NZ", REGISTRY_APNIC }, { "OM", REGISTRY_RIPENCC }, { "PA", REGISTRY_LACNIC }, { "PE", REGISTRY_LACNIC }, { "PF", REGISTRY_APNIC }, { "PG", REGISTRY_APNIC }, { "PH", REGISTRY_APNIC }, { "PK", REGISTRY_APNIC }, { "PL", REGISTRY_RIPENCC }, { "PM", REGISTRY_ARIN }, { "PR", REGISTRY_ARIN }, { "PS", REGISTRY_RIPENCC }, { "PT", REGISTRY_RIPENCC }, { "PW", REGISTRY_APNIC }, { "PY", REGISTRY_LACNIC }, { "QA", REGISTRY_RIPENCC }, { "RE", REGISTRY_AFRINIC }, { "RO", REGISTRY_RIPENCC }, { "RS", REGISTRY_RIPENCC }, { "RU", REGISTRY_RIPENCC }, { "RW", REGISTRY_AFRINIC }, { "SA", REGISTRY_RIPENCC }, { "SB", REGISTRY_APNIC }, { "SC", REGISTRY_AFRINIC }, { "SD", REGISTRY_AFRINIC }, { "SE", REGISTRY_RIPENCC }, { "SG", REGISTRY_APNIC }, { "SI", REGISTRY_RIPENCC }, { "SK", REGISTRY_RIPENCC }, { "SL", REGISTRY_AFRINIC }, { "SM", REGISTRY_RIPENCC }, { "SN", REGISTRY_AFRINIC }, { "SO", REGISTRY_AFRINIC }, { "SR", REGISTRY_LACNIC }, { "SS", REGISTRY_AFRINIC }, { "ST", REGISTRY_AFRINIC }, { "SV", REGISTRY_LACNIC }, { "SX", REGISTRY_LACNIC }, { "SY", REGISTRY_RIPENCC }, { "SZ", REGISTRY_AFRINIC }, { "TC", REGISTRY_ARIN }, { "TD", REGISTRY_AFRINIC }, { "TG", REGISTRY_AFRINIC }, { "TH", REGISTRY_APNIC }, { "TJ", REGISTRY_RIPENCC }, { "TK", REGISTRY_APNIC }, { "TL", REGISTRY_APNIC }, { "TM", REGISTRY_RIPENCC }, { "TN", REGISTRY_AFRINIC }, { "TO", REGISTRY_APNIC }, { "TR", REGISTRY_RIPENCC }, { "TT", REGISTRY_LACNIC }, { "TV", REGISTRY_APNIC }, { "TW", REGISTRY_APNIC }, { "TZ", REGISTRY_AFRINIC }, { "UA", REGISTRY_RIPENCC }, { "UG", REGISTRY_AFRINIC }, { "UM", REGISTRY_ARIN }, { "US", REGISTRY_ARIN }, { "UY", REGISTRY_LACNIC }, { "UZ", REGISTRY_RIPENCC }, { "VA", REGISTRY_RIPENCC }, { "VC", REGISTRY_ARIN }, { "VE", REGISTRY_LACNIC }, { "VG", REGISTRY_RIPENCC }, { "VI", REGISTRY_ARIN }, { "VN", REGISTRY_APNIC }, { "VU", REGISTRY_APNIC }, { "WF", REGISTRY_APNIC }, { "WS", REGISTRY_APNIC }, { "YE", REGISTRY_RIPENCC }, { "YT", REGISTRY_AFRINIC }, { "ZA", REGISTRY_AFRINIC }, { "ZM", REGISTRY_AFRINIC }, { "ZW", REGISTRY_AFRINIC }, }; static const s_cc_index_reg_assignment cc_index_reg_assignment[] = { { REGISTRY_UNKNOWN }, // 0 A0 { REGISTRY_UNKNOWN }, // 1 B0 { REGISTRY_UNKNOWN }, // 2 C0 { REGISTRY_UNKNOWN }, // 3 D0 { REGISTRY_UNKNOWN }, // 4 E0 { REGISTRY_UNKNOWN }, // 5 F0 { REGISTRY_UNKNOWN }, // 6 G0 { REGISTRY_UNKNOWN }, // 7 H0 { REGISTRY_UNKNOWN }, // 8 I0 { REGISTRY_UNKNOWN }, // 9 J0 { REGISTRY_UNKNOWN }, // 10 K0 { REGISTRY_UNKNOWN }, // 11 L0 { REGISTRY_UNKNOWN }, // 12 M0 { REGISTRY_UNKNOWN }, // 13 N0 { REGISTRY_UNKNOWN }, // 14 O0 { REGISTRY_UNKNOWN }, // 15 P0 { REGISTRY_UNKNOWN }, // 16 Q0 { REGISTRY_UNKNOWN }, // 17 R0 { REGISTRY_UNKNOWN }, // 18 S0 { REGISTRY_UNKNOWN }, // 19 T0 { REGISTRY_UNKNOWN }, // 20 U0 { REGISTRY_UNKNOWN }, // 21 V0 { REGISTRY_UNKNOWN }, // 22 W0 { REGISTRY_UNKNOWN }, // 23 X0 { REGISTRY_UNKNOWN }, // 24 Y0 { REGISTRY_UNKNOWN }, // 25 Z0 { REGISTRY_UNKNOWN }, // 26 A1 { REGISTRY_UNKNOWN }, // 27 B1 { REGISTRY_UNKNOWN }, // 28 C1 { REGISTRY_UNKNOWN }, // 29 D1 { REGISTRY_UNKNOWN }, // 30 E1 { REGISTRY_UNKNOWN }, // 31 F1 { REGISTRY_UNKNOWN }, // 32 G1 { REGISTRY_UNKNOWN }, // 33 H1 { REGISTRY_UNKNOWN }, // 34 I1 { REGISTRY_UNKNOWN }, // 35 J1 { REGISTRY_UNKNOWN }, // 36 K1 { REGISTRY_UNKNOWN }, // 37 L1 { REGISTRY_UNKNOWN }, // 38 M1 { REGISTRY_UNKNOWN }, // 39 N1 { REGISTRY_UNKNOWN }, // 40 O1 { REGISTRY_UNKNOWN }, // 41 P1 { REGISTRY_UNKNOWN }, // 42 Q1 { REGISTRY_UNKNOWN }, // 43 R1 { REGISTRY_UNKNOWN }, // 44 S1 { REGISTRY_UNKNOWN }, // 45 T1 { REGISTRY_UNKNOWN }, // 46 U1 { REGISTRY_UNKNOWN }, // 47 V1 { REGISTRY_UNKNOWN }, // 48 W1 { REGISTRY_UNKNOWN }, // 49 X1 { REGISTRY_UNKNOWN }, // 50 Y1 { REGISTRY_UNKNOWN }, // 51 Z1 { REGISTRY_UNKNOWN }, // 52 A2 { REGISTRY_UNKNOWN }, // 53 B2 { REGISTRY_UNKNOWN }, // 54 C2 { REGISTRY_UNKNOWN }, // 55 D2 { REGISTRY_UNKNOWN }, // 56 E2 { REGISTRY_UNKNOWN }, // 57 F2 { REGISTRY_UNKNOWN }, // 58 G2 { REGISTRY_UNKNOWN }, // 59 H2 { REGISTRY_UNKNOWN }, // 60 I2 { REGISTRY_UNKNOWN }, // 61 J2 { REGISTRY_UNKNOWN }, // 62 K2 { REGISTRY_UNKNOWN }, // 63 L2 { REGISTRY_UNKNOWN }, // 64 M2 { REGISTRY_UNKNOWN }, // 65 N2 { REGISTRY_UNKNOWN }, // 66 O2 { REGISTRY_UNKNOWN }, // 67 P2 { REGISTRY_UNKNOWN }, // 68 Q2 { REGISTRY_UNKNOWN }, // 69 R2 { REGISTRY_UNKNOWN }, // 70 S2 { REGISTRY_UNKNOWN }, // 71 T2 { REGISTRY_UNKNOWN }, // 72 U2 { REGISTRY_UNKNOWN }, // 73 V2 { REGISTRY_UNKNOWN }, // 74 W2 { REGISTRY_UNKNOWN }, // 75 X2 { REGISTRY_UNKNOWN }, // 76 Y2 { REGISTRY_UNKNOWN }, // 77 Z2 { REGISTRY_UNKNOWN }, // 78 A3 { REGISTRY_UNKNOWN }, // 79 B3 { REGISTRY_UNKNOWN }, // 80 C3 { REGISTRY_UNKNOWN }, // 81 D3 { REGISTRY_UNKNOWN }, // 82 E3 { REGISTRY_UNKNOWN }, // 83 F3 { REGISTRY_UNKNOWN }, // 84 G3 { REGISTRY_UNKNOWN }, // 85 H3 { REGISTRY_UNKNOWN }, // 86 I3 { REGISTRY_UNKNOWN }, // 87 J3 { REGISTRY_UNKNOWN }, // 88 K3 { REGISTRY_UNKNOWN }, // 89 L3 { REGISTRY_UNKNOWN }, // 90 M3 { REGISTRY_UNKNOWN }, // 91 N3 { REGISTRY_UNKNOWN }, // 92 O3 { REGISTRY_UNKNOWN }, // 93 P3 { REGISTRY_UNKNOWN }, // 94 Q3 { REGISTRY_UNKNOWN }, // 95 R3 { REGISTRY_UNKNOWN }, // 96 S3 { REGISTRY_UNKNOWN }, // 97 T3 { REGISTRY_UNKNOWN }, // 98 U3 { REGISTRY_UNKNOWN }, // 99 V3 { REGISTRY_UNKNOWN }, // 100 W3 { REGISTRY_UNKNOWN }, // 101 X3 { REGISTRY_UNKNOWN }, // 102 Y3 { REGISTRY_UNKNOWN }, // 103 Z3 { REGISTRY_UNKNOWN }, // 104 A4 { REGISTRY_UNKNOWN }, // 105 B4 { REGISTRY_UNKNOWN }, // 106 C4 { REGISTRY_UNKNOWN }, // 107 D4 { REGISTRY_UNKNOWN }, // 108 E4 { REGISTRY_UNKNOWN }, // 109 F4 { REGISTRY_UNKNOWN }, // 110 G4 { REGISTRY_UNKNOWN }, // 111 H4 { REGISTRY_UNKNOWN }, // 112 I4 { REGISTRY_UNKNOWN }, // 113 J4 { REGISTRY_UNKNOWN }, // 114 K4 { REGISTRY_UNKNOWN }, // 115 L4 { REGISTRY_UNKNOWN }, // 116 M4 { REGISTRY_UNKNOWN }, // 117 N4 { REGISTRY_UNKNOWN }, // 118 O4 { REGISTRY_UNKNOWN }, // 119 P4 { REGISTRY_UNKNOWN }, // 120 Q4 { REGISTRY_UNKNOWN }, // 121 R4 { REGISTRY_UNKNOWN }, // 122 S4 { REGISTRY_UNKNOWN }, // 123 T4 { REGISTRY_UNKNOWN }, // 124 U4 { REGISTRY_UNKNOWN }, // 125 V4 { REGISTRY_UNKNOWN }, // 126 W4 { REGISTRY_UNKNOWN }, // 127 X4 { REGISTRY_UNKNOWN }, // 128 Y4 { REGISTRY_UNKNOWN }, // 129 Z4 { REGISTRY_UNKNOWN }, // 130 A5 { REGISTRY_UNKNOWN }, // 131 B5 { REGISTRY_UNKNOWN }, // 132 C5 { REGISTRY_UNKNOWN }, // 133 D5 { REGISTRY_UNKNOWN }, // 134 E5 { REGISTRY_UNKNOWN }, // 135 F5 { REGISTRY_UNKNOWN }, // 136 G5 { REGISTRY_UNKNOWN }, // 137 H5 { REGISTRY_UNKNOWN }, // 138 I5 { REGISTRY_UNKNOWN }, // 139 J5 { REGISTRY_UNKNOWN }, // 140 K5 { REGISTRY_UNKNOWN }, // 141 L5 { REGISTRY_UNKNOWN }, // 142 M5 { REGISTRY_UNKNOWN }, // 143 N5 { REGISTRY_UNKNOWN }, // 144 O5 { REGISTRY_UNKNOWN }, // 145 P5 { REGISTRY_UNKNOWN }, // 146 Q5 { REGISTRY_UNKNOWN }, // 147 R5 { REGISTRY_UNKNOWN }, // 148 S5 { REGISTRY_UNKNOWN }, // 149 T5 { REGISTRY_UNKNOWN }, // 150 U5 { REGISTRY_UNKNOWN }, // 151 V5 { REGISTRY_UNKNOWN }, // 152 W5 { REGISTRY_UNKNOWN }, // 153 X5 { REGISTRY_UNKNOWN }, // 154 Y5 { REGISTRY_UNKNOWN }, // 155 Z5 { REGISTRY_UNKNOWN }, // 156 A6 { REGISTRY_UNKNOWN }, // 157 B6 { REGISTRY_UNKNOWN }, // 158 C6 { REGISTRY_UNKNOWN }, // 159 D6 { REGISTRY_UNKNOWN }, // 160 E6 { REGISTRY_UNKNOWN }, // 161 F6 { REGISTRY_UNKNOWN }, // 162 G6 { REGISTRY_UNKNOWN }, // 163 H6 { REGISTRY_UNKNOWN }, // 164 I6 { REGISTRY_UNKNOWN }, // 165 J6 { REGISTRY_UNKNOWN }, // 166 K6 { REGISTRY_UNKNOWN }, // 167 L6 { REGISTRY_UNKNOWN }, // 168 M6 { REGISTRY_UNKNOWN }, // 169 N6 { REGISTRY_UNKNOWN }, // 170 O6 { REGISTRY_UNKNOWN }, // 171 P6 { REGISTRY_UNKNOWN }, // 172 Q6 { REGISTRY_UNKNOWN }, // 173 R6 { REGISTRY_UNKNOWN }, // 174 S6 { REGISTRY_UNKNOWN }, // 175 T6 { REGISTRY_UNKNOWN }, // 176 U6 { REGISTRY_UNKNOWN }, // 177 V6 { REGISTRY_UNKNOWN }, // 178 W6 { REGISTRY_UNKNOWN }, // 179 X6 { REGISTRY_UNKNOWN }, // 180 Y6 { REGISTRY_UNKNOWN }, // 181 Z6 { REGISTRY_UNKNOWN }, // 182 A7 { REGISTRY_UNKNOWN }, // 183 B7 { REGISTRY_UNKNOWN }, // 184 C7 { REGISTRY_UNKNOWN }, // 185 D7 { REGISTRY_UNKNOWN }, // 186 E7 { REGISTRY_UNKNOWN }, // 187 F7 { REGISTRY_UNKNOWN }, // 188 G7 { REGISTRY_UNKNOWN }, // 189 H7 { REGISTRY_UNKNOWN }, // 190 I7 { REGISTRY_UNKNOWN }, // 191 J7 { REGISTRY_UNKNOWN }, // 192 K7 { REGISTRY_UNKNOWN }, // 193 L7 { REGISTRY_UNKNOWN }, // 194 M7 { REGISTRY_UNKNOWN }, // 195 N7 { REGISTRY_UNKNOWN }, // 196 O7 { REGISTRY_UNKNOWN }, // 197 P7 { REGISTRY_UNKNOWN }, // 198 Q7 { REGISTRY_UNKNOWN }, // 199 R7 { REGISTRY_UNKNOWN }, // 200 S7 { REGISTRY_UNKNOWN }, // 201 T7 { REGISTRY_UNKNOWN }, // 202 U7 { REGISTRY_UNKNOWN }, // 203 V7 { REGISTRY_UNKNOWN }, // 204 W7 { REGISTRY_UNKNOWN }, // 205 X7 { REGISTRY_UNKNOWN }, // 206 Y7 { REGISTRY_UNKNOWN }, // 207 Z7 { REGISTRY_UNKNOWN }, // 208 A8 { REGISTRY_UNKNOWN }, // 209 B8 { REGISTRY_UNKNOWN }, // 210 C8 { REGISTRY_UNKNOWN }, // 211 D8 { REGISTRY_UNKNOWN }, // 212 E8 { REGISTRY_UNKNOWN }, // 213 F8 { REGISTRY_UNKNOWN }, // 214 G8 { REGISTRY_UNKNOWN }, // 215 H8 { REGISTRY_UNKNOWN }, // 216 I8 { REGISTRY_UNKNOWN }, // 217 J8 { REGISTRY_UNKNOWN }, // 218 K8 { REGISTRY_UNKNOWN }, // 219 L8 { REGISTRY_UNKNOWN }, // 220 M8 { REGISTRY_UNKNOWN }, // 221 N8 { REGISTRY_UNKNOWN }, // 222 O8 { REGISTRY_UNKNOWN }, // 223 P8 { REGISTRY_UNKNOWN }, // 224 Q8 { REGISTRY_UNKNOWN }, // 225 R8 { REGISTRY_UNKNOWN }, // 226 S8 { REGISTRY_UNKNOWN }, // 227 T8 { REGISTRY_UNKNOWN }, // 228 U8 { REGISTRY_UNKNOWN }, // 229 V8 { REGISTRY_UNKNOWN }, // 230 W8 { REGISTRY_UNKNOWN }, // 231 X8 { REGISTRY_UNKNOWN }, // 232 Y8 { REGISTRY_UNKNOWN }, // 233 Z8 { REGISTRY_UNKNOWN }, // 234 A9 { REGISTRY_UNKNOWN }, // 235 B9 { REGISTRY_UNKNOWN }, // 236 C9 { REGISTRY_UNKNOWN }, // 237 D9 { REGISTRY_UNKNOWN }, // 238 E9 { REGISTRY_UNKNOWN }, // 239 F9 { REGISTRY_UNKNOWN }, // 240 G9 { REGISTRY_UNKNOWN }, // 241 H9 { REGISTRY_UNKNOWN }, // 242 I9 { REGISTRY_UNKNOWN }, // 243 J9 { REGISTRY_UNKNOWN }, // 244 K9 { REGISTRY_UNKNOWN }, // 245 L9 { REGISTRY_UNKNOWN }, // 246 M9 { REGISTRY_UNKNOWN }, // 247 N9 { REGISTRY_UNKNOWN }, // 248 O9 { REGISTRY_UNKNOWN }, // 249 P9 { REGISTRY_UNKNOWN }, // 250 Q9 { REGISTRY_UNKNOWN }, // 251 R9 { REGISTRY_UNKNOWN }, // 252 S9 { REGISTRY_UNKNOWN }, // 253 T9 { REGISTRY_UNKNOWN }, // 254 U9 { REGISTRY_UNKNOWN }, // 255 V9 { REGISTRY_UNKNOWN }, // 256 W9 { REGISTRY_UNKNOWN }, // 257 X9 { REGISTRY_UNKNOWN }, // 258 Y9 { REGISTRY_UNKNOWN }, // 259 Z9 { REGISTRY_UNKNOWN }, // 260 AA { REGISTRY_RIPENCC }, // 261 BA { REGISTRY_ARIN }, // 262 CA { REGISTRY_UNKNOWN }, // 263 DA { REGISTRY_UNKNOWN }, // 264 EA { REGISTRY_UNKNOWN }, // 265 FA { REGISTRY_AFRINIC }, // 266 GA { REGISTRY_UNKNOWN }, // 267 HA { REGISTRY_UNKNOWN }, // 268 IA { REGISTRY_UNKNOWN }, // 269 JA { REGISTRY_UNKNOWN }, // 270 KA { REGISTRY_APNIC }, // 271 LA { REGISTRY_AFRINIC }, // 272 MA { REGISTRY_AFRINIC }, // 273 NA { REGISTRY_UNKNOWN }, // 274 OA { REGISTRY_LACNIC }, // 275 PA { REGISTRY_RIPENCC }, // 276 QA { REGISTRY_UNKNOWN }, // 277 RA { REGISTRY_RIPENCC }, // 278 SA { REGISTRY_UNKNOWN }, // 279 TA { REGISTRY_RIPENCC }, // 280 UA { REGISTRY_RIPENCC }, // 281 VA { REGISTRY_UNKNOWN }, // 282 WA { REGISTRY_UNKNOWN }, // 283 XA { REGISTRY_UNKNOWN }, // 284 YA { REGISTRY_AFRINIC }, // 285 ZA { REGISTRY_UNKNOWN }, // 286 AB { REGISTRY_ARIN }, // 287 BB { REGISTRY_UNKNOWN }, // 288 CB { REGISTRY_UNKNOWN }, // 289 DB { REGISTRY_UNKNOWN }, // 290 EB { REGISTRY_UNKNOWN }, // 291 FB { REGISTRY_RIPENCC }, // 292 GB { REGISTRY_UNKNOWN }, // 293 HB { REGISTRY_UNKNOWN }, // 294 IB { REGISTRY_UNKNOWN }, // 295 JB { REGISTRY_UNKNOWN }, // 296 KB { REGISTRY_RIPENCC }, // 297 LB { REGISTRY_UNKNOWN }, // 298 MB { REGISTRY_UNKNOWN }, // 299 NB { REGISTRY_UNKNOWN }, // 300 OB { REGISTRY_UNKNOWN }, // 301 PB { REGISTRY_UNKNOWN }, // 302 QB { REGISTRY_UNKNOWN }, // 303 RB { REGISTRY_APNIC }, // 304 SB { REGISTRY_UNKNOWN }, // 305 TB { REGISTRY_UNKNOWN }, // 306 UB { REGISTRY_UNKNOWN }, // 307 VB { REGISTRY_UNKNOWN }, // 308 WB { REGISTRY_UNKNOWN }, // 309 XB { REGISTRY_UNKNOWN }, // 310 YB { REGISTRY_UNKNOWN }, // 311 ZB { REGISTRY_UNKNOWN }, // 312 AC { REGISTRY_UNKNOWN }, // 313 BC { REGISTRY_UNKNOWN }, // 314 CC { REGISTRY_UNKNOWN }, // 315 DC { REGISTRY_LACNIC }, // 316 EC { REGISTRY_UNKNOWN }, // 317 FC { REGISTRY_UNKNOWN }, // 318 GC { REGISTRY_UNKNOWN }, // 319 HC { REGISTRY_UNKNOWN }, // 320 IC { REGISTRY_UNKNOWN }, // 321 JC { REGISTRY_UNKNOWN }, // 322 KC { REGISTRY_ARIN }, // 323 LC { REGISTRY_RIPENCC }, // 324 MC { REGISTRY_APNIC }, // 325 NC { REGISTRY_UNKNOWN }, // 326 OC { REGISTRY_UNKNOWN }, // 327 PC { REGISTRY_UNKNOWN }, // 328 QC { REGISTRY_UNKNOWN }, // 329 RC { REGISTRY_AFRINIC }, // 330 SC { REGISTRY_ARIN }, // 331 TC { REGISTRY_UNKNOWN }, // 332 UC { REGISTRY_ARIN }, // 333 VC { REGISTRY_UNKNOWN }, // 334 WC { REGISTRY_UNKNOWN }, // 335 XC { REGISTRY_UNKNOWN }, // 336 YC { REGISTRY_UNKNOWN }, // 337 ZC { REGISTRY_RIPENCC }, // 338 AD { REGISTRY_APNIC }, // 339 BD { REGISTRY_AFRINIC }, // 340 CD { REGISTRY_UNKNOWN }, // 341 DD { REGISTRY_UNKNOWN }, // 342 ED { REGISTRY_UNKNOWN }, // 343 FD { REGISTRY_ARIN }, // 344 GD { REGISTRY_UNKNOWN }, // 345 HD { REGISTRY_APNIC }, // 346 ID { REGISTRY_UNKNOWN }, // 347 JD { REGISTRY_UNKNOWN }, // 348 KD { REGISTRY_UNKNOWN }, // 349 LD { REGISTRY_RIPENCC }, // 350 MD { REGISTRY_UNKNOWN }, // 351 ND { REGISTRY_UNKNOWN }, // 352 OD { REGISTRY_UNKNOWN }, // 353 PD { REGISTRY_UNKNOWN }, // 354 QD { REGISTRY_UNKNOWN }, // 355 RD { REGISTRY_AFRINIC }, // 356 SD { REGISTRY_AFRINIC }, // 357 TD { REGISTRY_UNKNOWN }, // 358 UD { REGISTRY_UNKNOWN }, // 359 VD { REGISTRY_UNKNOWN }, // 360 WD { REGISTRY_UNKNOWN }, // 361 XD { REGISTRY_UNKNOWN }, // 362 YD { REGISTRY_UNKNOWN }, // 363 ZD { REGISTRY_RIPENCC }, // 364 AE { REGISTRY_RIPENCC }, // 365 BE { REGISTRY_UNKNOWN }, // 366 CE { REGISTRY_RIPENCC }, // 367 DE { REGISTRY_RIPENCC }, // 368 EE { REGISTRY_UNKNOWN }, // 369 FE { REGISTRY_RIPENCC }, // 370 GE { REGISTRY_UNKNOWN }, // 371 HE { REGISTRY_RIPENCC }, // 372 IE { REGISTRY_RIPENCC }, // 373 JE { REGISTRY_AFRINIC }, // 374 KE { REGISTRY_UNKNOWN }, // 375 LE { REGISTRY_RIPENCC }, // 376 ME { REGISTRY_AFRINIC }, // 377 NE { REGISTRY_UNKNOWN }, // 378 OE { REGISTRY_LACNIC }, // 379 PE { REGISTRY_UNKNOWN }, // 380 QE { REGISTRY_AFRINIC }, // 381 RE { REGISTRY_RIPENCC }, // 382 SE { REGISTRY_UNKNOWN }, // 383 TE { REGISTRY_UNKNOWN }, // 384 UE { REGISTRY_LACNIC }, // 385 VE { REGISTRY_UNKNOWN }, // 386 WE { REGISTRY_UNKNOWN }, // 387 XE { REGISTRY_RIPENCC }, // 388 YE { REGISTRY_UNKNOWN }, // 389 ZE { REGISTRY_APNIC }, // 390 AF { REGISTRY_AFRINIC }, // 391 BF { REGISTRY_AFRINIC }, // 392 CF { REGISTRY_UNKNOWN }, // 393 DF { REGISTRY_UNKNOWN }, // 394 EF { REGISTRY_UNKNOWN }, // 395 FF { REGISTRY_LACNIC }, // 396 GF { REGISTRY_UNKNOWN }, // 397 HF { REGISTRY_UNKNOWN }, // 398 IF { REGISTRY_UNKNOWN }, // 399 JF { REGISTRY_UNKNOWN }, // 400 KF { REGISTRY_UNKNOWN }, // 401 LF { REGISTRY_ARIN }, // 402 MF { REGISTRY_APNIC }, // 403 NF { REGISTRY_UNKNOWN }, // 404 OF { REGISTRY_APNIC }, // 405 PF { REGISTRY_UNKNOWN }, // 406 QF { REGISTRY_UNKNOWN }, // 407 RF { REGISTRY_UNKNOWN }, // 408 SF { REGISTRY_UNKNOWN }, // 409 TF { REGISTRY_UNKNOWN }, // 410 UF { REGISTRY_UNKNOWN }, // 411 VF { REGISTRY_APNIC }, // 412 WF { REGISTRY_UNKNOWN }, // 413 XF { REGISTRY_UNKNOWN }, // 414 YF { REGISTRY_UNKNOWN }, // 415 ZF { REGISTRY_ARIN }, // 416 AG { REGISTRY_RIPENCC }, // 417 BG { REGISTRY_AFRINIC }, // 418 CG { REGISTRY_UNKNOWN }, // 419 DG { REGISTRY_AFRINIC }, // 420 EG { REGISTRY_UNKNOWN }, // 421 FG { REGISTRY_RIPENCC }, // 422 GG { REGISTRY_UNKNOWN }, // 423 HG { REGISTRY_UNKNOWN }, // 424 IG { REGISTRY_UNKNOWN }, // 425 JG { REGISTRY_RIPENCC }, // 426 KG { REGISTRY_UNKNOWN }, // 427 LG { REGISTRY_AFRINIC }, // 428 MG { REGISTRY_AFRINIC }, // 429 NG { REGISTRY_UNKNOWN }, // 430 OG { REGISTRY_APNIC }, // 431 PG { REGISTRY_UNKNOWN }, // 432 QG { REGISTRY_UNKNOWN }, // 433 RG { REGISTRY_APNIC }, // 434 SG { REGISTRY_AFRINIC }, // 435 TG { REGISTRY_AFRINIC }, // 436 UG { REGISTRY_RIPENCC }, // 437 VG { REGISTRY_UNKNOWN }, // 438 WG { REGISTRY_UNKNOWN }, // 439 XG { REGISTRY_UNKNOWN }, // 440 YG { REGISTRY_UNKNOWN }, // 441 ZG { REGISTRY_UNKNOWN }, // 442 AH { REGISTRY_RIPENCC }, // 443 BH { REGISTRY_RIPENCC }, // 444 CH { REGISTRY_UNKNOWN }, // 445 DH { REGISTRY_UNKNOWN }, // 446 EH { REGISTRY_UNKNOWN }, // 447 FH { REGISTRY_AFRINIC }, // 448 GH { REGISTRY_UNKNOWN }, // 449 HH { REGISTRY_UNKNOWN }, // 450 IH { REGISTRY_UNKNOWN }, // 451 JH { REGISTRY_APNIC }, // 452 KH { REGISTRY_UNKNOWN }, // 453 LH { REGISTRY_APNIC }, // 454 MH { REGISTRY_UNKNOWN }, // 455 NH { REGISTRY_UNKNOWN }, // 456 OH { REGISTRY_APNIC }, // 457 PH { REGISTRY_UNKNOWN }, // 458 QH { REGISTRY_UNKNOWN }, // 459 RH { REGISTRY_UNKNOWN }, // 460 SH { REGISTRY_APNIC }, // 461 TH { REGISTRY_UNKNOWN }, // 462 UH { REGISTRY_UNKNOWN }, // 463 VH { REGISTRY_UNKNOWN }, // 464 WH { REGISTRY_UNKNOWN }, // 465 XH { REGISTRY_UNKNOWN }, // 466 YH { REGISTRY_UNKNOWN }, // 467 ZH { REGISTRY_ARIN }, // 468 AI { REGISTRY_AFRINIC }, // 469 BI { REGISTRY_AFRINIC }, // 470 CI { REGISTRY_UNKNOWN }, // 471 DI { REGISTRY_UNKNOWN }, // 472 EI { REGISTRY_RIPENCC }, // 473 FI { REGISTRY_RIPENCC }, // 474 GI { REGISTRY_UNKNOWN }, // 475 HI { REGISTRY_UNKNOWN }, // 476 II { REGISTRY_UNKNOWN }, // 477 JI { REGISTRY_APNIC }, // 478 KI { REGISTRY_RIPENCC }, // 479 LI { REGISTRY_UNKNOWN }, // 480 MI { REGISTRY_LACNIC }, // 481 NI { REGISTRY_UNKNOWN }, // 482 OI { REGISTRY_UNKNOWN }, // 483 PI { REGISTRY_UNKNOWN }, // 484 QI { REGISTRY_UNKNOWN }, // 485 RI { REGISTRY_RIPENCC }, // 486 SI { REGISTRY_UNKNOWN }, // 487 TI { REGISTRY_UNKNOWN }, // 488 UI { REGISTRY_ARIN }, // 489 VI { REGISTRY_UNKNOWN }, // 490 WI { REGISTRY_UNKNOWN }, // 491 XI { REGISTRY_UNKNOWN }, // 492 YI { REGISTRY_UNKNOWN }, // 493 ZI { REGISTRY_UNKNOWN }, // 494 AJ { REGISTRY_AFRINIC }, // 495 BJ { REGISTRY_UNKNOWN }, // 496 CJ { REGISTRY_AFRINIC }, // 497 DJ { REGISTRY_UNKNOWN }, // 498 EJ { REGISTRY_APNIC }, // 499 FJ { REGISTRY_UNKNOWN }, // 500 GJ { REGISTRY_UNKNOWN }, // 501 HJ { REGISTRY_UNKNOWN }, // 502 IJ { REGISTRY_UNKNOWN }, // 503 JJ { REGISTRY_UNKNOWN }, // 504 KJ { REGISTRY_UNKNOWN }, // 505 LJ { REGISTRY_UNKNOWN }, // 506 MJ { REGISTRY_UNKNOWN }, // 507 NJ { REGISTRY_UNKNOWN }, // 508 OJ { REGISTRY_UNKNOWN }, // 509 PJ { REGISTRY_UNKNOWN }, // 510 QJ { REGISTRY_UNKNOWN }, // 511 RJ { REGISTRY_UNKNOWN }, // 512 SJ { REGISTRY_RIPENCC }, // 513 TJ { REGISTRY_UNKNOWN }, // 514 UJ { REGISTRY_UNKNOWN }, // 515 VJ { REGISTRY_UNKNOWN }, // 516 WJ { REGISTRY_UNKNOWN }, // 517 XJ { REGISTRY_UNKNOWN }, // 518 YJ { REGISTRY_UNKNOWN }, // 519 ZJ { REGISTRY_UNKNOWN }, // 520 AK { REGISTRY_UNKNOWN }, // 521 BK { REGISTRY_APNIC }, // 522 CK { REGISTRY_RIPENCC }, // 523 DK { REGISTRY_UNKNOWN }, // 524 EK { REGISTRY_UNKNOWN }, // 525 FK { REGISTRY_UNKNOWN }, // 526 GK { REGISTRY_APNIC }, // 527 HK { REGISTRY_UNKNOWN }, // 528 IK { REGISTRY_UNKNOWN }, // 529 JK { REGISTRY_UNKNOWN }, // 530 KK { REGISTRY_APNIC }, // 531 LK { REGISTRY_RIPENCC }, // 532 MK { REGISTRY_UNKNOWN }, // 533 NK { REGISTRY_UNKNOWN }, // 534 OK { REGISTRY_APNIC }, // 535 PK { REGISTRY_UNKNOWN }, // 536 QK { REGISTRY_UNKNOWN }, // 537 RK { REGISTRY_RIPENCC }, // 538 SK { REGISTRY_APNIC }, // 539 TK { REGISTRY_UNKNOWN }, // 540 UK { REGISTRY_UNKNOWN }, // 541 VK { REGISTRY_UNKNOWN }, // 542 WK { REGISTRY_UNKNOWN }, // 543 XK { REGISTRY_UNKNOWN }, // 544 YK { REGISTRY_UNKNOWN }, // 545 ZK { REGISTRY_RIPENCC }, // 546 AL { REGISTRY_ARIN }, // 547 BL { REGISTRY_LACNIC }, // 548 CL { REGISTRY_UNKNOWN }, // 549 DL { REGISTRY_UNKNOWN }, // 550 EL { REGISTRY_UNKNOWN }, // 551 FL { REGISTRY_RIPENCC }, // 552 GL { REGISTRY_UNKNOWN }, // 553 HL { REGISTRY_RIPENCC }, // 554 IL { REGISTRY_UNKNOWN }, // 555 JL { REGISTRY_UNKNOWN }, // 556 KL { REGISTRY_UNKNOWN }, // 557 LL { REGISTRY_AFRINIC }, // 558 ML { REGISTRY_RIPENCC }, // 559 NL { REGISTRY_UNKNOWN }, // 560 OL { REGISTRY_RIPENCC }, // 561 PL { REGISTRY_UNKNOWN }, // 562 QL { REGISTRY_UNKNOWN }, // 563 RL { REGISTRY_AFRINIC }, // 564 SL { REGISTRY_APNIC }, // 565 TL { REGISTRY_UNKNOWN }, // 566 UL { REGISTRY_UNKNOWN }, // 567 VL { REGISTRY_UNKNOWN }, // 568 WL { REGISTRY_UNKNOWN }, // 569 XL { REGISTRY_UNKNOWN }, // 570 YL { REGISTRY_UNKNOWN }, // 571 ZL { REGISTRY_RIPENCC }, // 572 AM { REGISTRY_ARIN }, // 573 BM { REGISTRY_AFRINIC }, // 574 CM { REGISTRY_ARIN }, // 575 DM { REGISTRY_UNKNOWN }, // 576 EM { REGISTRY_APNIC }, // 577 FM { REGISTRY_AFRINIC }, // 578 GM { REGISTRY_UNKNOWN }, // 579 HM { REGISTRY_RIPENCC }, // 580 IM { REGISTRY_ARIN }, // 581 JM { REGISTRY_AFRINIC }, // 582 KM { REGISTRY_UNKNOWN }, // 583 LM { REGISTRY_APNIC }, // 584 MM { REGISTRY_UNKNOWN }, // 585 NM { REGISTRY_RIPENCC }, // 586 OM { REGISTRY_ARIN }, // 587 PM { REGISTRY_UNKNOWN }, // 588 QM { REGISTRY_UNKNOWN }, // 589 RM { REGISTRY_RIPENCC }, // 590 SM { REGISTRY_RIPENCC }, // 591 TM { REGISTRY_ARIN }, // 592 UM { REGISTRY_UNKNOWN }, // 593 VM { REGISTRY_UNKNOWN }, // 594 WM { REGISTRY_UNKNOWN }, // 595 XM { REGISTRY_UNKNOWN }, // 596 YM { REGISTRY_AFRINIC }, // 597 ZM { REGISTRY_UNKNOWN }, // 598 AN { REGISTRY_APNIC }, // 599 BN { REGISTRY_APNIC }, // 600 CN { REGISTRY_UNKNOWN }, // 601 DN { REGISTRY_UNKNOWN }, // 602 EN { REGISTRY_UNKNOWN }, // 603 FN { REGISTRY_AFRINIC }, // 604 GN { REGISTRY_LACNIC }, // 605 HN { REGISTRY_APNIC }, // 606 IN { REGISTRY_UNKNOWN }, // 607 JN { REGISTRY_ARIN }, // 608 KN { REGISTRY_UNKNOWN }, // 609 LN { REGISTRY_APNIC }, // 610 MN { REGISTRY_UNKNOWN }, // 611 NN { REGISTRY_UNKNOWN }, // 612 ON { REGISTRY_UNKNOWN }, // 613 PN { REGISTRY_UNKNOWN }, // 614 QN { REGISTRY_UNKNOWN }, // 615 RN { REGISTRY_AFRINIC }, // 616 SN { REGISTRY_AFRINIC }, // 617 TN { REGISTRY_UNKNOWN }, // 618 UN { REGISTRY_APNIC }, // 619 VN { REGISTRY_UNKNOWN }, // 620 WN { REGISTRY_UNKNOWN }, // 621 XN { REGISTRY_UNKNOWN }, // 622 YN { REGISTRY_UNKNOWN }, // 623 ZN { REGISTRY_AFRINIC }, // 624 AO { REGISTRY_LACNIC }, // 625 BO { REGISTRY_LACNIC }, // 626 CO { REGISTRY_LACNIC }, // 627 DO { REGISTRY_UNKNOWN }, // 628 EO { REGISTRY_RIPENCC }, // 629 FO { REGISTRY_UNKNOWN }, // 630 GO { REGISTRY_UNKNOWN }, // 631 HO { REGISTRY_APNIC }, // 632 IO { REGISTRY_RIPENCC }, // 633 JO { REGISTRY_UNKNOWN }, // 634 KO { REGISTRY_UNKNOWN }, // 635 LO { REGISTRY_APNIC }, // 636 MO { REGISTRY_RIPENCC }, // 637 NO { REGISTRY_UNKNOWN }, // 638 OO { REGISTRY_UNKNOWN }, // 639 PO { REGISTRY_UNKNOWN }, // 640 QO { REGISTRY_RIPENCC }, // 641 RO { REGISTRY_AFRINIC }, // 642 SO { REGISTRY_APNIC }, // 643 TO { REGISTRY_UNKNOWN }, // 644 UO { REGISTRY_UNKNOWN }, // 645 VO { REGISTRY_UNKNOWN }, // 646 WO { REGISTRY_UNKNOWN }, // 647 XO { REGISTRY_UNKNOWN }, // 648 YO { REGISTRY_UNKNOWN }, // 649 ZO { REGISTRY_APNIC }, // 650 AP { REGISTRY_UNKNOWN }, // 651 BP { REGISTRY_UNKNOWN }, // 652 CP { REGISTRY_UNKNOWN }, // 653 DP { REGISTRY_UNKNOWN }, // 654 EP { REGISTRY_UNKNOWN }, // 655 FP { REGISTRY_ARIN }, // 656 GP { REGISTRY_UNKNOWN }, // 657 HP { REGISTRY_UNKNOWN }, // 658 IP { REGISTRY_APNIC }, // 659 JP { REGISTRY_APNIC }, // 660 KP { REGISTRY_UNKNOWN }, // 661 LP { REGISTRY_APNIC }, // 662 MP { REGISTRY_APNIC }, // 663 NP { REGISTRY_UNKNOWN }, // 664 OP { REGISTRY_UNKNOWN }, // 665 PP { REGISTRY_UNKNOWN }, // 666 QP { REGISTRY_UNKNOWN }, // 667 RP { REGISTRY_UNKNOWN }, // 668 SP { REGISTRY_UNKNOWN }, // 669 TP { REGISTRY_UNKNOWN }, // 670 UP { REGISTRY_UNKNOWN }, // 671 VP { REGISTRY_UNKNOWN }, // 672 WP { REGISTRY_UNKNOWN }, // 673 XP { REGISTRY_UNKNOWN }, // 674 YP { REGISTRY_UNKNOWN }, // 675 ZP { REGISTRY_UNKNOWN }, // 676 AQ { REGISTRY_LACNIC }, // 677 BQ { REGISTRY_UNKNOWN }, // 678 CQ { REGISTRY_UNKNOWN }, // 679 DQ { REGISTRY_UNKNOWN }, // 680 EQ { REGISTRY_UNKNOWN }, // 681 FQ { REGISTRY_AFRINIC }, // 682 GQ { REGISTRY_UNKNOWN }, // 683 HQ { REGISTRY_RIPENCC }, // 684 IQ { REGISTRY_UNKNOWN }, // 685 JQ { REGISTRY_UNKNOWN }, // 686 KQ { REGISTRY_UNKNOWN }, // 687 LQ { REGISTRY_RIPENCC }, // 688 MQ { REGISTRY_UNKNOWN }, // 689 NQ { REGISTRY_UNKNOWN }, // 690 OQ { REGISTRY_UNKNOWN }, // 691 PQ { REGISTRY_UNKNOWN }, // 692 QQ { REGISTRY_UNKNOWN }, // 693 RQ { REGISTRY_UNKNOWN }, // 694 SQ { REGISTRY_UNKNOWN }, // 695 TQ { REGISTRY_UNKNOWN }, // 696 UQ { REGISTRY_UNKNOWN }, // 697 VQ { REGISTRY_UNKNOWN }, // 698 WQ { REGISTRY_UNKNOWN }, // 699 XQ { REGISTRY_UNKNOWN }, // 700 YQ { REGISTRY_UNKNOWN }, // 701 ZQ { REGISTRY_LACNIC }, // 702 AR { REGISTRY_LACNIC }, // 703 BR { REGISTRY_LACNIC }, // 704 CR { REGISTRY_UNKNOWN }, // 705 DR { REGISTRY_AFRINIC }, // 706 ER { REGISTRY_RIPENCC }, // 707 FR { REGISTRY_RIPENCC }, // 708 GR { REGISTRY_RIPENCC }, // 709 HR { REGISTRY_RIPENCC }, // 710 IR { REGISTRY_UNKNOWN }, // 711 JR { REGISTRY_APNIC }, // 712 KR { REGISTRY_AFRINIC }, // 713 LR { REGISTRY_AFRINIC }, // 714 MR { REGISTRY_APNIC }, // 715 NR { REGISTRY_UNKNOWN }, // 716 OR { REGISTRY_ARIN }, // 717 PR { REGISTRY_UNKNOWN }, // 718 QR { REGISTRY_UNKNOWN }, // 719 RR { REGISTRY_LACNIC }, // 720 SR { REGISTRY_RIPENCC }, // 721 TR { REGISTRY_UNKNOWN }, // 722 UR { REGISTRY_UNKNOWN }, // 723 VR { REGISTRY_UNKNOWN }, // 724 WR { REGISTRY_UNKNOWN }, // 725 XR { REGISTRY_UNKNOWN }, // 726 YR { REGISTRY_UNKNOWN }, // 727 ZR { REGISTRY_APNIC }, // 728 AS { REGISTRY_ARIN }, // 729 BS { REGISTRY_UNKNOWN }, // 730 CS { REGISTRY_UNKNOWN }, // 731 DS { REGISTRY_RIPENCC }, // 732 ES { REGISTRY_UNKNOWN }, // 733 FS { REGISTRY_UNKNOWN }, // 734 GS { REGISTRY_UNKNOWN }, // 735 HS { REGISTRY_RIPENCC }, // 736 IS { REGISTRY_UNKNOWN }, // 737 JS { REGISTRY_UNKNOWN }, // 738 KS { REGISTRY_AFRINIC }, // 739 LS { REGISTRY_ARIN }, // 740 MS { REGISTRY_UNKNOWN }, // 741 NS { REGISTRY_UNKNOWN }, // 742 OS { REGISTRY_RIPENCC }, // 743 PS { REGISTRY_UNKNOWN }, // 744 QS { REGISTRY_RIPENCC }, // 745 RS { REGISTRY_AFRINIC }, // 746 SS { REGISTRY_UNKNOWN }, // 747 TS { REGISTRY_ARIN }, // 748 US { REGISTRY_UNKNOWN }, // 749 VS { REGISTRY_APNIC }, // 750 WS { REGISTRY_UNKNOWN }, // 751 XS { REGISTRY_UNKNOWN }, // 752 YS { REGISTRY_UNKNOWN }, // 753 ZS { REGISTRY_RIPENCC }, // 754 AT { REGISTRY_APNIC }, // 755 BT { REGISTRY_UNKNOWN }, // 756 CT { REGISTRY_UNKNOWN }, // 757 DT { REGISTRY_AFRINIC }, // 758 ET { REGISTRY_UNKNOWN }, // 759 FT { REGISTRY_LACNIC }, // 760 GT { REGISTRY_LACNIC }, // 761 HT { REGISTRY_RIPENCC }, // 762 IT { REGISTRY_UNKNOWN }, // 763 JT { REGISTRY_UNKNOWN }, // 764 KT { REGISTRY_RIPENCC }, // 765 LT { REGISTRY_RIPENCC }, // 766 MT { REGISTRY_UNKNOWN }, // 767 NT { REGISTRY_UNKNOWN }, // 768 OT { REGISTRY_RIPENCC }, // 769 PT { REGISTRY_UNKNOWN }, // 770 QT { REGISTRY_UNKNOWN }, // 771 RT { REGISTRY_AFRINIC }, // 772 ST { REGISTRY_LACNIC }, // 773 TT { REGISTRY_UNKNOWN }, // 774 UT { REGISTRY_UNKNOWN }, // 775 VT { REGISTRY_UNKNOWN }, // 776 WT { REGISTRY_UNKNOWN }, // 777 XT { REGISTRY_AFRINIC }, // 778 YT { REGISTRY_UNKNOWN }, // 779 ZT { REGISTRY_APNIC }, // 780 AU { REGISTRY_UNKNOWN }, // 781 BU { REGISTRY_LACNIC }, // 782 CU { REGISTRY_UNKNOWN }, // 783 DU { REGISTRY_RIPENCC }, // 784 EU { REGISTRY_UNKNOWN }, // 785 FU { REGISTRY_APNIC }, // 786 GU { REGISTRY_RIPENCC }, // 787 HU { REGISTRY_UNKNOWN }, // 788 IU { REGISTRY_UNKNOWN }, // 789 JU { REGISTRY_UNKNOWN }, // 790 KU { REGISTRY_RIPENCC }, // 791 LU { REGISTRY_AFRINIC }, // 792 MU { REGISTRY_APNIC }, // 793 NU { REGISTRY_UNKNOWN }, // 794 OU { REGISTRY_UNKNOWN }, // 795 PU { REGISTRY_UNKNOWN }, // 796 QU { REGISTRY_RIPENCC }, // 797 RU { REGISTRY_UNKNOWN }, // 798 SU { REGISTRY_UNKNOWN }, // 799 TU { REGISTRY_UNKNOWN }, // 800 UU { REGISTRY_APNIC }, // 801 VU { REGISTRY_UNKNOWN }, // 802 WU { REGISTRY_UNKNOWN }, // 803 XU { REGISTRY_UNKNOWN }, // 804 YU { REGISTRY_UNKNOWN }, // 805 ZU { REGISTRY_UNKNOWN }, // 806 AV { REGISTRY_UNKNOWN }, // 807 BV { REGISTRY_AFRINIC }, // 808 CV { REGISTRY_UNKNOWN }, // 809 DV { REGISTRY_UNKNOWN }, // 810 EV { REGISTRY_UNKNOWN }, // 811 FV { REGISTRY_UNKNOWN }, // 812 GV { REGISTRY_UNKNOWN }, // 813 HV { REGISTRY_UNKNOWN }, // 814 IV { REGISTRY_UNKNOWN }, // 815 JV { REGISTRY_UNKNOWN }, // 816 KV { REGISTRY_RIPENCC }, // 817 LV { REGISTRY_APNIC }, // 818 MV { REGISTRY_UNKNOWN }, // 819 NV { REGISTRY_UNKNOWN }, // 820 OV { REGISTRY_UNKNOWN }, // 821 PV { REGISTRY_UNKNOWN }, // 822 QV { REGISTRY_UNKNOWN }, // 823 RV { REGISTRY_LACNIC }, // 824 SV { REGISTRY_APNIC }, // 825 TV { REGISTRY_UNKNOWN }, // 826 UV { REGISTRY_UNKNOWN }, // 827 VV { REGISTRY_UNKNOWN }, // 828 WV { REGISTRY_UNKNOWN }, // 829 XV { REGISTRY_UNKNOWN }, // 830 YV { REGISTRY_UNKNOWN }, // 831 ZV { REGISTRY_LACNIC }, // 832 AW { REGISTRY_AFRINIC }, // 833 BW { REGISTRY_LACNIC }, // 834 CW { REGISTRY_UNKNOWN }, // 835 DW { REGISTRY_UNKNOWN }, // 836 EW { REGISTRY_UNKNOWN }, // 837 FW { REGISTRY_AFRINIC }, // 838 GW { REGISTRY_UNKNOWN }, // 839 HW { REGISTRY_UNKNOWN }, // 840 IW { REGISTRY_UNKNOWN }, // 841 JW { REGISTRY_RIPENCC }, // 842 KW { REGISTRY_UNKNOWN }, // 843 LW { REGISTRY_AFRINIC }, // 844 MW { REGISTRY_UNKNOWN }, // 845 NW { REGISTRY_UNKNOWN }, // 846 OW { REGISTRY_APNIC }, // 847 PW { REGISTRY_UNKNOWN }, // 848 QW { REGISTRY_AFRINIC }, // 849 RW { REGISTRY_UNKNOWN }, // 850 SW { REGISTRY_APNIC }, // 851 TW { REGISTRY_UNKNOWN }, // 852 UW { REGISTRY_UNKNOWN }, // 853 VW { REGISTRY_UNKNOWN }, // 854 WW { REGISTRY_UNKNOWN }, // 855 XW { REGISTRY_UNKNOWN }, // 856 YW { REGISTRY_AFRINIC }, // 857 ZW { REGISTRY_UNKNOWN }, // 858 AX { REGISTRY_UNKNOWN }, // 859 BX { REGISTRY_UNKNOWN }, // 860 CX { REGISTRY_UNKNOWN }, // 861 DX { REGISTRY_UNKNOWN }, // 862 EX { REGISTRY_UNKNOWN }, // 863 FX { REGISTRY_UNKNOWN }, // 864 GX { REGISTRY_UNKNOWN }, // 865 HX { REGISTRY_UNKNOWN }, // 866 IX { REGISTRY_UNKNOWN }, // 867 JX { REGISTRY_UNKNOWN }, // 868 KX { REGISTRY_UNKNOWN }, // 869 LX { REGISTRY_LACNIC }, // 870 MX { REGISTRY_UNKNOWN }, // 871 NX { REGISTRY_UNKNOWN }, // 872 OX { REGISTRY_UNKNOWN }, // 873 PX { REGISTRY_UNKNOWN }, // 874 QX { REGISTRY_UNKNOWN }, // 875 RX { REGISTRY_LACNIC }, // 876 SX { REGISTRY_UNKNOWN }, // 877 TX { REGISTRY_UNKNOWN }, // 878 UX { REGISTRY_UNKNOWN }, // 879 VX { REGISTRY_UNKNOWN }, // 880 WX { REGISTRY_UNKNOWN }, // 881 XX { REGISTRY_UNKNOWN }, // 882 YX { REGISTRY_UNKNOWN }, // 883 ZX { REGISTRY_UNKNOWN }, // 884 AY { REGISTRY_RIPENCC }, // 885 BY { REGISTRY_RIPENCC }, // 886 CY { REGISTRY_UNKNOWN }, // 887 DY { REGISTRY_UNKNOWN }, // 888 EY { REGISTRY_UNKNOWN }, // 889 FY { REGISTRY_LACNIC }, // 890 GY { REGISTRY_UNKNOWN }, // 891 HY { REGISTRY_UNKNOWN }, // 892 IY { REGISTRY_UNKNOWN }, // 893 JY { REGISTRY_ARIN }, // 894 KY { REGISTRY_AFRINIC }, // 895 LY { REGISTRY_APNIC }, // 896 MY { REGISTRY_UNKNOWN }, // 897 NY { REGISTRY_UNKNOWN }, // 898 OY { REGISTRY_LACNIC }, // 899 PY { REGISTRY_UNKNOWN }, // 900 QY { REGISTRY_UNKNOWN }, // 901 RY { REGISTRY_RIPENCC }, // 902 SY { REGISTRY_UNKNOWN }, // 903 TY { REGISTRY_LACNIC }, // 904 UY { REGISTRY_UNKNOWN }, // 905 VY { REGISTRY_UNKNOWN }, // 906 WY { REGISTRY_UNKNOWN }, // 907 XY { REGISTRY_UNKNOWN }, // 908 YY { REGISTRY_UNKNOWN }, // 909 ZY { REGISTRY_RIPENCC }, // 910 AZ { REGISTRY_LACNIC }, // 911 BZ { REGISTRY_RIPENCC }, // 912 CZ { REGISTRY_AFRINIC }, // 913 DZ { REGISTRY_UNKNOWN }, // 914 EZ { REGISTRY_UNKNOWN }, // 915 FZ { REGISTRY_UNKNOWN }, // 916 GZ { REGISTRY_UNKNOWN }, // 917 HZ { REGISTRY_UNKNOWN }, // 918 IZ { REGISTRY_UNKNOWN }, // 919 JZ { REGISTRY_RIPENCC }, // 920 KZ { REGISTRY_UNKNOWN }, // 921 LZ { REGISTRY_AFRINIC }, // 922 MZ { REGISTRY_APNIC }, // 923 NZ { REGISTRY_UNKNOWN }, // 924 OZ { REGISTRY_UNKNOWN }, // 925 PZ { REGISTRY_UNKNOWN }, // 926 QZ { REGISTRY_UNKNOWN }, // 927 RZ { REGISTRY_AFRINIC }, // 928 SZ { REGISTRY_AFRINIC }, // 929 TZ { REGISTRY_RIPENCC }, // 930 UZ { REGISTRY_UNKNOWN }, // 931 VZ { REGISTRY_UNKNOWN }, // 932 WZ { REGISTRY_UNKNOWN }, // 933 XZ { REGISTRY_UNKNOWN }, // 934 YZ { REGISTRY_UNKNOWN }, // 935 ZZ { REGISTRY_UNKNOWN }, // 936 reserved-special { REGISTRY_UNKNOWN }, // 937 reserved-special { REGISTRY_UNKNOWN }, // 938 reserved-special { REGISTRY_UNKNOWN }, // 939 reserved-special { REGISTRY_UNKNOWN }, // 940 reserved-special { REGISTRY_UNKNOWN }, // 941 reserved-special { REGISTRY_UNKNOWN }, // 942 reserved-special { REGISTRY_UNKNOWN }, // 943 reserved-special { REGISTRY_UNKNOWN }, // 944 reserved-special { REGISTRY_UNKNOWN }, // 945 reserved-special { REGISTRY_UNKNOWN }, // 946 reserved-special { REGISTRY_UNKNOWN }, // 947 reserved-special { REGISTRY_UNKNOWN }, // 948 reserved-special { REGISTRY_UNKNOWN }, // 949 reserved-special { REGISTRY_UNKNOWN }, // 950 reserved-special { REGISTRY_UNKNOWN }, // 951 reserved-special { REGISTRY_UNKNOWN }, // 952 reserved-special { REGISTRY_UNKNOWN }, // 953 reserved-special { REGISTRY_UNKNOWN }, // 954 reserved-special { REGISTRY_UNKNOWN }, // 955 reserved-special { REGISTRY_UNKNOWN }, // 956 reserved-special { REGISTRY_UNKNOWN }, // 957 reserved-special { REGISTRY_UNKNOWN }, // 958 reserved-special { REGISTRY_UNKNOWN }, // 959 reserved-special { REGISTRY_UNKNOWN }, // 960 reserved-special { REGISTRY_UNKNOWN }, // 961 reserved-special { REGISTRY_UNKNOWN }, // 962 reserved-special { REGISTRY_UNKNOWN }, // 963 reserved-special { REGISTRY_UNKNOWN }, // 964 reserved-special { REGISTRY_UNKNOWN }, // 965 reserved-special { REGISTRY_UNKNOWN }, // 966 reserved-special { REGISTRY_UNKNOWN }, // 967 reserved-special { REGISTRY_UNKNOWN }, // 968 reserved-special { REGISTRY_UNKNOWN }, // 969 reserved-special { REGISTRY_UNKNOWN }, // 970 reserved-special { REGISTRY_UNKNOWN }, // 971 reserved-special { REGISTRY_UNKNOWN }, // 972 reserved-special { REGISTRY_UNKNOWN }, // 973 reserved-special { REGISTRY_UNKNOWN }, // 974 reserved-special { REGISTRY_UNKNOWN }, // 975 reserved-special { REGISTRY_UNKNOWN }, // 976 reserved-special { REGISTRY_UNKNOWN }, // 977 reserved-special { REGISTRY_UNKNOWN }, // 978 reserved-special { REGISTRY_UNKNOWN }, // 979 reserved-special { REGISTRY_UNKNOWN }, // 980 reserved-special { REGISTRY_UNKNOWN }, // 981 reserved-special { REGISTRY_UNKNOWN }, // 982 reserved-special { REGISTRY_UNKNOWN }, // 983 reserved-special { REGISTRY_UNKNOWN }, // 984 reserved-special { REGISTRY_UNKNOWN }, // 985 reserved-special { REGISTRY_UNKNOWN }, // 986 reserved-special { REGISTRY_UNKNOWN }, // 987 reserved-special { REGISTRY_UNKNOWN }, // 988 reserved-special { REGISTRY_UNKNOWN }, // 989 reserved-special { REGISTRY_UNKNOWN }, // 990 reserved-special { REGISTRY_UNKNOWN }, // 991 reserved-special { REGISTRY_UNKNOWN }, // 992 reserved-special { REGISTRY_UNKNOWN }, // 993 reserved-special { REGISTRY_UNKNOWN }, // 994 reserved-special { REGISTRY_UNKNOWN }, // 995 reserved-special { REGISTRY_UNKNOWN }, // 996 reserved-special { REGISTRY_UNKNOWN }, // 997 reserved-special { REGISTRY_UNKNOWN }, // 998 reserved-special { REGISTRY_UNKNOWN }, // 999 reserved-special { REGISTRY_UNKNOWN }, // 1000 reserved-special { REGISTRY_UNKNOWN }, // 1001 reserved-special { REGISTRY_UNKNOWN }, // 1002 reserved-special { REGISTRY_UNKNOWN }, // 1003 reserved-special { REGISTRY_UNKNOWN }, // 1004 reserved-special { REGISTRY_UNKNOWN }, // 1005 reserved-special { REGISTRY_UNKNOWN }, // 1006 reserved-special { REGISTRY_UNKNOWN }, // 1007 reserved-special { REGISTRY_UNKNOWN }, // 1008 reserved-special { REGISTRY_UNKNOWN }, // 1009 reserved-special { REGISTRY_UNKNOWN }, // 1010 reserved-special { REGISTRY_UNKNOWN }, // 1011 reserved-special { REGISTRY_UNKNOWN }, // 1012 reserved-special { REGISTRY_UNKNOWN }, // 1013 reserved-special { REGISTRY_UNKNOWN }, // 1014 reserved-special { REGISTRY_UNKNOWN }, // 1015 reserved-special { REGISTRY_UNKNOWN }, // 1016 reserved-special { REGISTRY_UNKNOWN }, // 1017 reserved-special { REGISTRY_UNKNOWN }, // 1018 reserved-special { REGISTRY_UNKNOWN }, // 1019 reserved-special { REGISTRY_UNKNOWN }, // 1020 reserved-special { REGISTRY_UNKNOWN }, // 1021 reserved-special { REGISTRY_UNKNOWN }, // 1022 reserved-special { REGISTRY_UNKNOWN }, // 1023 reserved-special }; ipv6calc-1.0.0/databases/ieee-iab/000077500000000000000000000000001312366535500166175ustar00rootroot00000000000000ipv6calc-1.0.0/databases/ieee-iab/Makefile000066400000000000000000000014531312366535500202620ustar00rootroot00000000000000# Project : ipv6calc/databases/ieee-iab # File : Makefile # Version : $Id: abb9988dbfcacae68ca2811c1d9d2b5ba9a2c072 $ # Copyright : 2004-2013 by Peter Bieringer # # Information: # Makefile for ieee-iab FILE = "iab.txt" BASEURL = "http://standards.ieee.org/regauth/oui/" FILE_H = dbieee_iab.h TYPE = iab all: test -f $(FILE_H) || ${MAKE} update install: echo "Nothing to do" create: ../tools/create_ieee_headerfile.pl -t $(TYPE) -i $(FILE) -o $(FILE_H) update: echo "Download new version of file" wget $(BASEURL)$(FILE) --timestamp ${MAKE} create updateclean: echo "Remove header file" rm -f $(FILE_H) ${MAKE} distclean distclean: echo "Remove database file" rm -f $(FILE) autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/ieee-iab/README000066400000000000000000000002521312366535500174760ustar00rootroot00000000000000$Id: a55133f77be7f3ec9b25466365700b02753c37ea $ IAB database: URL: http://standards.ieee.org/regauth/oui/iab.txt File will be retrieved on-the-fly during "make update" ipv6calc-1.0.0/databases/ieee-iab/dbieee_iab.h000066400000000000000000012631251312366535500210320ustar00rootroot00000000000000/* * Project : ipv6calc * File : dbieee_iab.h * Version : $Id: a97ae9b18b97d981dfdf8d9ec0512878274713f6 $ * Generated : Sun Jun 25 09:30:29 2017 * Data copyright: IEEE * * Information: * Additional header file for libipv6calc_db_wrapper_BuiltIn.c */ /*@unused@*/ static const char* libieee_iab_status __attribute__ ((__unused__)) = "IAB/20170625"; static const s_ieee_iab libieee_iab[] = { { 0x0050C2, 0xDD6000, 0xDD6FFF, "Transas Marine Limited", "TRANSAS-MARINE" }, { 0x40D855, 0x131000, 0x131FFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x1AE000, 0x1AEFFF, "Autonomous Solutions, Inc", "AUTONOMOUS-SOLUTIONS" }, { 0x40D855, 0x1AD000, 0x1ADFFF, "WICHER DIGITAL TECHNIK", "WICHER-DIGITAL-TECHNIK" }, { 0x40D855, 0x1AF000, 0x1AFFFF, "Vigitron Inc.", "VIGITRON" }, { 0x40D855, 0x1AA000, 0x1AAFFF, "Broachlink Technology Co.,Limited", "BROACHLINK" }, { 0x40D855, 0x50D000, 0x50DFFF, "Shenzhen MaiWei Cable TV Equipment CO.,LTD.", "SHENZHEN-MAIWEI-CABLE-TV-EQUIPMENT" }, { 0x40D855, 0x1CC000, 0x1CCFFF, "NKT Photonics A/S", "NKT-PHOTONICS-A/S" }, { 0x40D855, 0xEE6000, 0xEE6FFF, "Narinet, Inc.", "NARINET" }, { 0x40D855, 0x1E3000, 0x1E3FFF, "Mega Electronics Ltd", "MEGA-ELECTRONICS" }, { 0x40D855, 0x1C4000, 0x1C4FFF, "QED Advanced Systems Limited", "QED-ADVANCED" }, { 0x40D855, 0x1DE000, 0x1DEFFF, "Vidisys GmbH", "VIDISYS" }, { 0x40D855, 0x1D1000, 0x1D1FFF, "Founder Broadband Network Service Co.,Ltd.", "FOUNDER-BROADBAND-NETWORK-SERVICE" }, { 0x40D855, 0x1D4000, 0x1D4FFF, "Prisma Engineering srl", "PRISMA-ENGINEERING-SRL" }, { 0x40D855, 0x1BF000, 0x1BFFFF, "shanghai mingding information tech co.Ltd", "SHANGHAI-MINGDING-INFORMATION-TECH" }, { 0x40D855, 0x1B7000, 0x1B7FFF, "TEWS Elektronik GmbH & Co. KG", "TEWS-ELEKTRONIK" }, { 0x40D855, 0x149000, 0x149FFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x40D855, 0x146000, 0x146FFF, "Pleiger Elektronik GmbH and Co. KG", "PLEIGER-ELEKTRONIK-AND" }, { 0x40D855, 0x198000, 0x198FFF, "devboards GmbH", "DEVBOARDS" }, { 0x40D855, 0x18E000, 0x18EFFF, "Kerun Visual Technology Co., Ltd.(Shenzhen)", "KERUN-VISUAL-SHENZHEN" }, { 0x40D855, 0x18B000, 0x18BFFF, "Diagnosys Test Systems Ltd", "DIAGNOSYS-TEST" }, { 0x40D855, 0x165000, 0x165FFF, "TECHBOARD SRL", "TECHBOARD-SRL" }, { 0x40D855, 0x177000, 0x177FFF, "TRI Engineering co.,ltd.", "TRI-ENGINEERING" }, { 0x40D855, 0x174000, 0x174FFF, "EcoGuard AB", "ECOGUARD-AB" }, { 0x40D855, 0x15B000, 0x15BFFF, "SQF Spezialelektronik GmbH", "SQF-SPEZIALELEKTRONIK" }, { 0x40D855, 0x158000, 0x158FFF, "Exibea AB", "EXIBEA-AB" }, { 0x40D855, 0x153000, 0x153FFF, "BlinkPipe Ltd", "BLINKPIPE" }, { 0x40D855, 0x17E000, 0x17EFFF, "TOKHATEC", "TOKHATEC" }, { 0x40D855, 0x181000, 0x181FFF, "eROCCA", "EROCCA" }, { 0x40D855, 0x1A3000, 0x1A3FFF, "Noritake Itron Corporation", "NORITAKE-ITRON" }, { 0x40D855, 0x1A5000, 0x1A5FFF, "DemoPad", "DEMOPAD" }, { 0x40D855, 0x1A4000, 0x1A4FFF, "cibite AG", "CIBITE" }, { 0x40D855, 0x1A0000, 0x1A0FFF, "Futaba Corporation", "FUTABA" }, { 0x40D855, 0x127000, 0x127FFF, "LIGHTSTAR", "LIGHTSTAR" }, { 0x40D855, 0x124000, 0x124FFF, "Debug s.r.l.", "DEBUG-S-R-L" }, { 0x40D855, 0x11D000, 0x11DFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x40D855, 0x101000, 0x101FFF, "e.p.g. Elettronica Srl", "E-P-G-ELETTRONICA-SRL" }, { 0x40D855, 0x0F7000, 0x0F7FFF, "Comline Elektronik Elektrotechnik GmbH", "COMLINE-ELEKTRONIK-ELEKTROTECHNIK" }, { 0x40D855, 0x140000, 0x140FFF, "InnoTrans Communications, Inc", "INNOTRANS-COMMUNICATION" }, { 0x40D855, 0x13C000, 0x13CFFF, "shanghai Anjian Information technology co. , ltd.", "SHANGHAI-ANJIAN-INFORMATION" }, { 0x40D855, 0x139000, 0x139FFF, "WOW System", "WOW-SYSTEM" }, { 0x40D855, 0x134000, 0x134FFF, "digitech GmbH & Co. KG", "DIGITECH-AMP" }, { 0x40D855, 0x10B000, 0x10BFFF, "So-Cool Corporation.", "SO-COOL" }, { 0x40D855, 0x0EE000, 0x0EEFFF, "Siegmar Zander HuSWare", "SIEGMAR-ZANDER-HUSWARE" }, { 0x40D855, 0x0EB000, 0x0EBFFF, "WANTECH Networks", "WANTECH-NETWORKS" }, { 0x40D855, 0x12A000, 0x12AFFF, "Jadpod Communication Company Limited", "JADPOD-COMMUNICATION-COMPANY" }, { 0x40D855, 0x0BE000, 0x0BEFFF, "Manufacturing System Insights Inc", "MANUFACTURING-SYSTEM-INSIGHTS" }, { 0x40D855, 0x0B5000, 0x0B5FFF, "DATA SHARING CONSULTING", "DATA-SHARING-CONSULTING" }, { 0x40D855, 0x0B3000, 0x0B3FFF, "T.W.S. srl", "T-W-S-SRL" }, { 0x40D855, 0x0B4000, 0x0B4FFF, "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD.", "MITSUBISHI-ELECTRIC-SYSTEM-SERVICE" }, { 0x40D855, 0x0B0000, 0x0B0FFF, "Micrologic", "MICROLOGIC" }, { 0x40D855, 0x0D4000, 0x0D4FFF, "Mitsubishi Heavy Industries, Ltd.", "MITSUBISHI-HEAVY-INDUSTRIES" }, { 0x40D855, 0x0CC000, 0x0CCFFF, "ATEME", "ATEME" }, { 0x40D855, 0x0C9000, 0x0C9FFF, "QUANTAFLOW", "QUANTAFLOW" }, { 0x40D855, 0x0E1000, 0x0E1FFF, "STV Electronic GmbH", "STV" }, { 0x40D855, 0x0DE000, 0x0DEFFF, "VPG", "VPG" }, { 0x40D855, 0x0AA000, 0x0AAFFF, "Thermal Imaging Radar, LLC", "THERMAL-IMAGING-RADAR-LLC" }, { 0x40D855, 0x0A6000, 0x0A6FFF, "Alumbra Produtos Elétricos e Eletrônicos Ltda", "ALUMBRA-PRODUTOS-ELéTRICOS-E-ELETRôNICOS-LTDA" }, { 0x40D855, 0x087000, 0x087FFF, "Bestel China", "BESTEL-CHINA" }, { 0x40D855, 0x084000, 0x084FFF, "Papendorf Software Engineering GmbH", "PAPENDORF-SOFTWARE-ENGINEERING" }, { 0x40D855, 0x0C2000, 0x0C2FFF, "SC Techswarm SRL", "SC-TECHSWARM-SRL" }, { 0x40D855, 0x0BF000, 0x0BFFFF, "Shenzhen SETEC Power Co.,Ltd", "SHENZHEN-SETEC-POWER" }, { 0x40D855, 0x0BD000, 0x0BDFFF, "iCOGNIZE GmbH", "ICOGNIZE" }, { 0x40D855, 0x08F000, 0x08FFFF, "Excelitas", "EXCELITAS" }, { 0x40D855, 0x0A9000, 0x0A9FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x40D855, 0x0A3000, 0x0A3FFF, "Telefrank GmbH", "TELEFRANK" }, { 0x40D855, 0x09C000, 0x09CFFF, "Keyware Solutions Inc.", "KEYWARE-SOLUTIONS" }, { 0x40D855, 0x099000, 0x099FFF, "idcell co.ltd", "IDCELL" }, { 0x40D855, 0x065000, 0x065FFF, "Parallel Wireless", "PARALLEL-WIRELESS" }, { 0x40D855, 0x04F000, 0x04FFFF, "Haein S&S Co., Ltd", "HAEIN-S-S" }, { 0x40D855, 0x04C000, 0x04CFFF, "Serveron Corporation", "SERVERON" }, { 0x40D855, 0x042000, 0x042FFF, "Mango Communicaitons Inc.", "MANGO-COMMUNICAITONS" }, { 0x40D855, 0x05B000, 0x05BFFF, "Data Flow Systems, Inc.", "DATA-FLOW" }, { 0x40D855, 0x05A000, 0x05AFFF, "Ultra Electronics Flightline Systems", "ULTRA-ELECTRONICS-FLIGHTLINE" }, { 0x40D855, 0x059000, 0x059FFF, "COLONIAL ASSEMBLY and DESIGN", "COLONIAL-ASSEMBLY-AND-DESIGN" }, { 0x40D855, 0x056000, 0x056FFF, "GROUP 57", "GROUP-57" }, { 0x40D855, 0x050000, 0x050FFF, "ATG UV Technology", "ATG-UV" }, { 0x40D855, 0x07D000, 0x07DFFF, "Wuxi SiNeng New Energy Co., Ltd.", "WUXI-SINENG-NEW-ENERGY" }, { 0x40D855, 0x07A000, 0x07AFFF, "4embedded", "4EMBEDDED" }, { 0x40D855, 0x070000, 0x070FFF, "JSC Electrical Equipment Factory", "JSC-ELECTRICAL-EQUIPMENT-FACTORY" }, { 0x40D855, 0x068000, 0x068FFF, "Oki Seatec Co., Ltd.", "OKI-SEATEC" }, { 0x40D855, 0x02B000, 0x02BFFF, "Nomatronics", "NOMATRONICS" }, { 0x40D855, 0x023000, 0x023FFF, "Shanghai o-solution electronics & Technology Co., Ltd.", "SHANGHAI-O-SOLUTION-ELECTRONICS" }, { 0x40D855, 0x020000, 0x020FFF, "ENTEC Electric & Electronic CO., LTD.", "ENTEC-ELECTRIC" }, { 0x40D855, 0x016000, 0x016FFF, "Par-Tech, Inc.", "PAR-TECH" }, { 0x40D855, 0x011000, 0x011FFF, "Flexim Security Oy", "FLEXIM-SECURITY-OY" }, { 0x40D855, 0x03F000, 0x03FFFF, "UniSVR Global Information Technology Corp.", "UNISVR-GLOBAL-INFORMATION" }, { 0x40D855, 0x035000, 0x035FFF, "Mesotech International, Inc.", "MESOTECH" }, { 0x40D855, 0x064000, 0x064FFF, "HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.", "HIPODROMO-DE-AGUA-CALIENTE-DE-C-V" }, { 0x40D855, 0x063000, 0x063FFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x0050C2, 0xFBC000, 0xFBCFFF, "Leroy Somer", "LEROY-SOMER" }, { 0x0050C2, 0xFBB000, 0xFBBFFF, "ACIDA GmbH", "ACIDA" }, { 0x0050C2, 0xFB2000, 0xFB2FFF, "Preston Industries dba PolyScience", "PRESTON-INDUSTRIES-DBA-POLYSCIENCE" }, { 0x0050C2, 0xFA1000, 0xFA1FFF, "N-Hands GmbH und Co KG", "N-HANDS-UND" }, { 0x0050C2, 0xF9B000, 0xF9BFFF, "NEWELL TECHNOLOGIES LIMITED", "NEWELL-TECHNOLOGIES" }, { 0x0050C2, 0xF99000, 0xF99FFF, "Dr. Neumann elektronik GmbH", "DR-NEUMANN-ELEKTRONIK" }, { 0x0050C2, 0xF9A000, 0xF9AFFF, "Telvent", "TELVENT" }, { 0x0050C2, 0xFD0000, 0xFD0FFF, "Simple Solutions", "SIMPLE-SOLUTIONS" }, { 0x0050C2, 0xFCF000, 0xFCFFFF, "DINTEK Shanghai Electronic Ltd", "DINTEK-SHANGHAI" }, { 0x0050C2, 0xFEE000, 0xFEEFFF, "Sparks Instruments SA", "SPARKS-INSTRUMENTS" }, { 0x0050C2, 0xFED000, 0xFEDFFF, "LOGISOL Kft.", "LOGISOL-KFT" }, { 0x0050C2, 0xFE4000, 0xFE4FFF, "RTT Mobile Interpretation", "RTT-MOBILE-INTERPRETATION" }, { 0x0050C2, 0xFE3000, 0xFE3FFF, "Private", "PRIVATE" }, { 0x40D855, 0x009000, 0x009FFF, "ClearSite Communications Inc.", "CLEARSITE-COMMUNICATION" }, { 0x40D855, 0x001000, 0x001FFF, "Vemotion", "VEMOTION" }, { 0x40D855, 0x000000, 0x000FFF, "XRONOS.INC", "XRONOS" }, { 0x0050C2, 0xFB1000, 0xFB1FFF, "MATELEX", "MATELEX" }, { 0x0050C2, 0xFA2000, 0xFA2FFF, "Power-One", "POWER-ONE" }, { 0x0050C2, 0xFA7000, 0xFA7FFF, "Exelis Inc.", "EXELIS" }, { 0x0050C2, 0xFA8000, 0xFA8FFF, "Yash SiQure Technologies India Pvt. Ltd.", "YASH-SIQURE-TECHNOLOGIES-INDIA-PVT" }, { 0x0050C2, 0xFF7000, 0xFF7FFF, "Human Intech", "HUMAN-INTECH" }, { 0x0050C2, 0xFF8000, 0xFF8FFF, "KST technology", "KST" }, { 0x0050C2, 0xFDA000, 0xFDAFFF, "ELAN SYSTEMS", "ELAN" }, { 0x0050C2, 0xFD9000, 0xFD9FFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x0050C2, 0xFC5000, 0xFC5FFF, "Sakura Seiki Co.,Ltd.", "SAKURA-SEIKI" }, { 0x0050C2, 0xFC6000, 0xFC6FFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0xF19000, 0xF19FFF, "Netlink Bilisim Sistemleri San. ve Tic. Ltd. Sti.", "NETLINK-BILISIM-SISTEMLERI-SAN-VE-TIC-STI" }, { 0x0050C2, 0xF72000, 0xF72FFF, "MaxDeTec AG", "MAXDETEC" }, { 0x0050C2, 0xF73000, 0xF73FFF, "DELTACAST.TV", "DELTACAST-TV" }, { 0x0050C2, 0xF69000, 0xF69FFF, "Safe Place Solutions Ltd", "SAFE-PLACE-SOLUTIONS" }, { 0x0050C2, 0xF68000, 0xF68FFF, "Newtec A/S", "NEWTEC-A/S" }, { 0x0050C2, 0xF37000, 0xF37FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xF55000, 0xF55FFF, "Honeywell International Inc.", "HONEYWELL" }, { 0x0050C2, 0xF54000, 0xF54FFF, "Hella Gutmann Solutions GmbH", "HELLA-GUTMANN-SOLUTIONS" }, { 0x0050C2, 0xF86000, 0xF86FFF, "Audio Power Labs", "AUDIO-POWER-LABS" }, { 0x0050C2, 0xF7D000, 0xF7DFFF, "D-Hike Electroncs Technology Co.,Ltd", "D-HIKE-ELECTRONCS" }, { 0x0050C2, 0xF7C000, 0xF7CFFF, "Atonometrics, Inc.", "ATONOMETRICS" }, { 0x0050C2, 0xF90000, 0xF90FFF, "SecureTech Systems, Inc.", "SECURETECH" }, { 0x0050C2, 0xF91000, 0xF91FFF, "RE2 Inc", "RE2" }, { 0x0050C2, 0xF5F000, 0xF5FFFF, "BORYEU TECHNOLOGY CO.,LTD", "BORYEU" }, { 0x0050C2, 0xF5E000, 0xF5EFFF, "Y-cam Solutions Ltd", "Y-CAM-SOLUTIONS" }, { 0x0050C2, 0xF4A000, 0xF4AFFF, "Z-App Systems, Inc.", "Z-APP" }, { 0x0050C2, 0xF4B000, 0xF4BFFF, "Supranet", "SUPRANET" }, { 0x0050C2, 0xF40000, 0xF40FFF, "iBWorld co.,ltd.", "IBWORLD" }, { 0x0050C2, 0xF3F000, 0xF3FFFF, "DENSEI COMMUNICATION Inc.", "DENSEI-COMMUNICATION" }, { 0x0050C2, 0xF23000, 0xF23FFF, "Electro-Motive Diesel", "ELECTRO-MOTIVE-DIESEL" }, { 0x0050C2, 0xEC0000, 0xEC0FFF, "UgMO Technologies", "UGMO-TECHNOLOGIES" }, { 0x0050C2, 0xEDD000, 0xEDDFFF, "EBNEURO SPA", "EBNEURO-SPA" }, { 0x0050C2, 0xEDC000, 0xEDCFFF, "Eyelock Corporation", "EYELOCK" }, { 0x0050C2, 0xEDB000, 0xEDBFFF, "BELIK S.P.R.L.", "BELIK-S-P-R-L" }, { 0x0050C2, 0xEE7000, 0xEE7FFF, "syes srl", "SYES-SRL" }, { 0x0050C2, 0xEFB000, 0xEFBFFF, "Norbit ODM AS", "NORBIT-ODM-AS" }, { 0x0050C2, 0xEF1000, 0xEF1FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xEA2000, 0xEA2FFF, "ThinkRF Corp", "THINKRF" }, { 0x0050C2, 0xEB6000, 0xEB6FFF, "Monsoon Solutions, Inc.", "MONSOON-SOLUTIONS" }, { 0x0050C2, 0xEAC000, 0xEACFFF, "Alias ip", "ALIAS-IP" }, { 0x0050C2, 0xECA000, 0xECAFFF, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x0050C2, 0xF0F000, 0xF0FFFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x0050C2, 0xF05000, 0xF05FFF, "ESI Ventures", "ESI-VENTURES" }, { 0x0050C2, 0xE84000, 0xE84FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xE7A000, 0xE7AFFF, "Lightel", "LIGHTEL" }, { 0x0050C2, 0xE79000, 0xE79FFF, "MCS MICRONIC Computer Systeme GmbH", "MCS-MICRONIC-SYSTEME" }, { 0x0050C2, 0xE32000, 0xE32FFF, "Oshoksh Corporation", "OSHOKSH" }, { 0x0050C2, 0xE50000, 0xE50FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xE46000, 0xE46FFF, "Industrea Mining Technology", "INDUSTREA-MINING" }, { 0x0050C2, 0xE1E000, 0xE1EFFF, "Lo-Q plc", "LO-Q-PLC" }, { 0x0050C2, 0xE5A000, 0xE5AFFF, "FUTEC INC.", "FUTEC" }, { 0x0050C2, 0xE6E000, 0xE6EFFF, "Power-One Italia S.p.A", "POWER-ONE-ITALIA-S-P-A" }, { 0x0050C2, 0xE28000, 0xE28FFF, "Teplovodokhran", "TEPLOVODOKHRAN" }, { 0x0050C2, 0xDD9000, 0xDD9FFF, "Metraware", "METRAWARE" }, { 0x0050C2, 0xDD7000, 0xDD7FFF, "Tornado Modular Systems", "TORNADO-MODULAR" }, { 0x0050C2, 0xDCF000, 0xDCFFFF, "MCS Engenharia ltda", "MCS-ENGENHARIA-LTDA" }, { 0x0050C2, 0xDCD000, 0xDCDFFF, "dilitronics GmbH", "DILITRONICS" }, { 0x0050C2, 0xDCC000, 0xDCCFFF, "Instrumentel Limited", "INSTRUMENTEL" }, { 0x0050C2, 0xDED000, 0xDEDFFF, "Lee Laser", "LEE-LASER" }, { 0x0050C2, 0xDEB000, 0xDEBFFF, "Ruwisch & Kollegen GmbH", "RUWISCH-KOLLEGEN" }, { 0x0050C2, 0xDEA000, 0xDEAFFF, "Cerner Corporation", "CERNER" }, { 0x0050C2, 0xDC5000, 0xDC5FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xDC2000, 0xDC2FFF, "TESSERA TECHNOLOGY INC.", "TESSERA" }, { 0x0050C2, 0xDC3000, 0xDC3FFF, "ZED Ziegler Electronic Devices GmbH", "ZED-ZIEGLER-DEVICES" }, { 0x0050C2, 0xDBB000, 0xDBBFFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0xDB9000, 0xDB9FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xDE3000, 0xDE3FFF, "Breakaway Systems LLC", "BREAKAWAY-LLC" }, { 0x0050C2, 0xDE0000, 0xDE0FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x0050C2, 0xE13000, 0xE13FFF, "Automation Assist Japan Company", "AUTOMATION-ASSIST-JAPAN-COMPANY" }, { 0x0050C2, 0xE14000, 0xE14FFF, "Calixto Systems Pvt Ltd", "CALIXTO-PVT" }, { 0x0050C2, 0xDB8000, 0xDB8FFF, "Comsat VertriebsgmbH", "COMSAT-VERTRIEBSGMBH" }, { 0x0050C2, 0xDB1000, 0xDB1FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xDAD000, 0xDADFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xDAE000, 0xDAEFFF, "Spang Power Electronics", "SPANG-POWER-ELECTRONICS" }, { 0x0050C2, 0xD55000, 0xD55FFF, "Sterna Security", "STERNA-SECURITY" }, { 0x0050C2, 0xD87000, 0xD87FFF, "Electrolight Shivuk (1994) Ltd.", "ELECTROLIGHT-SHIVUK-1994" }, { 0x0050C2, 0xD4B000, 0xD4BFFF, "Indra Australia", "INDRA-AUSTRALIA" }, { 0x0050C2, 0xD4A000, 0xD4AFFF, "ATH system", "ATH-SYSTEM" }, { 0x0050C2, 0xDA5000, 0xDA5FFF, "megatec electronic GmbH", "MEGATEC" }, { 0x0050C2, 0xD91000, 0xD91FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0xD7D000, 0xD7DFFF, "Voltech Instruments", "VOLTECH-INSTRUMENTS" }, { 0x0050C2, 0xD73000, 0xD73FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD69000, 0xD69FFF, "GHL Systems Bhd", "GHL-BHD" }, { 0x0050C2, 0xCA6000, 0xCA6FFF, "Vidisys GmbH", "VIDISYS" }, { 0x0050C2, 0xCA7000, 0xCA7FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x0050C2, 0xC9D000, 0xC9DFFF, "Radius Sweden AB", "RADIUS-SWEDEN-AB" }, { 0x0050C2, 0xC9C000, 0xC9CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD04000, 0xD04FFF, "Tehama Wireless", "TEHAMA-WIRELESS" }, { 0x0050C2, 0xD03000, 0xD03FFF, "Peekel Instruments B.V.", "PEEKEL-INSTRUMENTS" }, { 0x0050C2, 0xCFC000, 0xCFCFFF, "Tritium Pty Ltd", "TRITIUM-PTY" }, { 0x0050C2, 0xCFD000, 0xCFDFFF, "AIRFOLC,INC.", "AIRFOLC" }, { 0x0050C2, 0xCF3000, 0xCF3FFF, "Daiken Automacao Ltda", "DAIKEN-AUTOMACAO-LTDA" }, { 0x0050C2, 0xCF2000, 0xCF2FFF, "Weiss Robotics GmbH & Co. KG", "WEISS-ROBOTICS" }, { 0x0050C2, 0xCF0000, 0xCF0FFF, "Inviso B.V.", "INVISO" }, { 0x0050C2, 0xCEF000, 0xCEFFFF, "Lupatecnologia e Sistemas Ltda", "LUPATECNOLOGIA-E-SISTEMAS-LTDA" }, { 0x0050C2, 0xCE9000, 0xCE9FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xCE8000, 0xCE8FFF, "Thomas & Betts", "THOMAS-BETTS" }, { 0x0050C2, 0xCE5000, 0xCE5FFF, "Maretron, LLP", "MARETRON-LLP" }, { 0x0050C2, 0xCE4000, 0xCE4FFF, "TEKTRONIK", "TEKTRONIK" }, { 0x0050C2, 0xCC5000, 0xCC5FFF, "Tecnovum AG", "TECNOVUM" }, { 0x0050C2, 0xCBB000, 0xCBBFFF, "Coptonix GmbH", "COPTONIX" }, { 0x0050C2, 0xCD8000, 0xCD8FFF, "IT-IS International Ltd.", "IT-IS" }, { 0x0050C2, 0xCD9000, 0xCD9FFF, "NDC Infrared Engineering, Inc.", "NDC-INFRARED-ENGINEERING" }, { 0x0050C2, 0xCD7000, 0xCD7FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xCCE000, 0xCCEFFF, "Mac-Gray Corporation", "MAC-GRAY" }, { 0x0050C2, 0xCCF000, 0xCCFFFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0xCCD000, 0xCCDFFF, "FUJI DATA SYSTEM Co.,Ltd.", "FUJI-DATA-SYSTEM" }, { 0x0050C2, 0xCB0000, 0xCB0FFF, "Konsmetal S.A.", "KONSMETAL" }, { 0x0050C2, 0xCB1000, 0xCB1FFF, "ZK Celltest Inc", "ZK-CELLTEST" }, { 0x0050C2, 0xC93000, 0xC93FFF, "SENSAIR Pty Ltd", "SENSAIR-PTY" }, { 0x0050C2, 0xC92000, 0xC92FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xC89000, 0xC89FFF, "Creative Micro Design", "CREATIVE-MICRO-DESIGN" }, { 0x0050C2, 0xC88000, 0xC88FFF, "CSI Controles e Sistemas Industriais Ltda.", "CSI-CONTROLES-E-SISTEMAS-INDUSTRIAIS-LTDA" }, { 0x0050C2, 0xC51000, 0xC51FFF, "InForce Computing, Inc.", "INFORCE-COMPUTING" }, { 0x0050C2, 0xC4E000, 0xC4EFFF, "Elaso AG", "ELASO" }, { 0x0050C2, 0xC4D000, 0xC4DFFF, "Industrial Automation Systems", "INDUSTRIAL-AUTOMATION" }, { 0x0050C2, 0xC47000, 0xC47FFF, "Weltek Technologies Co. Ltd.", "WELTEK-TECHNOLOGIES" }, { 0x0050C2, 0xC44000, 0xC44FFF, "Beijing Zhongherongzhi Elec.&Tech.Co.,Ltd.", "BEIJING-ZHONGHERONGZHI-ELEC-TECH" }, { 0x0050C2, 0xC43000, 0xC43FFF, "Cammegh Limited", "CAMMEGH" }, { 0x0050C2, 0xC3D000, 0xC3DFFF, "PLA ELECTRO APPLIANCES PVT. LTD.", "PLA-ELECTRO-APPLIANCES-PVT" }, { 0x0050C2, 0xC7C000, 0xC7CFFF, "Scienlab Electronic Systems GmbH", "SCIENLAB" }, { 0x0050C2, 0xC7D000, 0xC7DFFF, "TAE Antriebstechnik GmbH", "TAE-ANTRIEBSTECHNIK" }, { 0x0050C2, 0xC7E000, 0xC7EFFF, "Buerkert Werke GmbH", "BUERKERT-WERKE" }, { 0x0050C2, 0xC79000, 0xC79FFF, "CODESYSTEM Co.,Ltd", "CODESYSTEM" }, { 0x0050C2, 0xC75000, 0xC75FFF, "Rovsing A/S", "ROVSING-A/S" }, { 0x0050C2, 0xC76000, 0xC76FFF, "GridManager A/S", "GRIDMANAGER-A/S" }, { 0x0050C2, 0xC6B000, 0xC6BFFF, "SiGarden Sp z o.o.", "SIGARDEN-SP-Z-O-O" }, { 0x0050C2, 0xC6F000, 0xC6FFFF, "MSB Elektronik und Geraetebau GmbH", "MSB-ELEKTRONIK-UND-GERAETEBAU" }, { 0x0050C2, 0xC65000, 0xC65FFF, "Micro I/O Servicos de Electronica, Lda", "MICRO-I/O-SERVICOS-DE-ELECTRONICA-LDA" }, { 0x0050C2, 0xC62000, 0xC62FFF, "Zeus Systems Private Limited", "ZEUS-PRIVATE" }, { 0x0050C2, 0xC61000, 0xC61FFF, "HaiVision Systems Incorporated", "HAIVISION-INCORPORATED" }, { 0x0050C2, 0xC5B000, 0xC5BFFF, "MICRO TECHNICA", "MICRO-TECHNICA" }, { 0x0050C2, 0xC57000, 0xC57FFF, "High Speed Design, Inc.", "HIGH-SPEED-DESIGN" }, { 0x0050C2, 0xC58000, 0xC58FFF, "Foerster-Technik GmbH", "FOERSTER-TECHNIK" }, { 0x0050C2, 0xBE8000, 0xBE8FFF, "VEHICLE TESTING EQUIPMENT, S.L.", "VEHICLE-TESTING-EQUIPMENT-S-L" }, { 0x0050C2, 0xBDE000, 0xBDEFFF, "Evo-Teh d.o.o.", "EVO-TEH-D-O-O" }, { 0x0050C2, 0xC39000, 0xC39FFF, "SECAD SA", "SECAD" }, { 0x0050C2, 0xC2D000, 0xC2DFFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 0x0050C2, 0xC2C000, 0xC2CFFF, "bach-messtechnik gmbh", "BACH-MESSTECHNIK" }, { 0x0050C2, 0xC23000, 0xC23FFF, "Vidicon LLC", "VIDICON-LLC" }, { 0x0050C2, 0xC22000, 0xC22FFF, "Audient Ltd", "AUDIENT" }, { 0x0050C2, 0xC18000, 0xC18FFF, "Linuxstamp Designs, LLC", "LINUXSTAMP-DESIGNS-LLC" }, { 0x0050C2, 0xC0F000, 0xC0FFFF, "DYCEC, S.A.", "DYCEC" }, { 0x0050C2, 0xBFC000, 0xBFCFFF, "Altronix Corporation", "ALTRONIX" }, { 0x0050C2, 0xBFB000, 0xBFBFFF, "ECS Srl", "ECS-SRL" }, { 0x0050C2, 0xBF1000, 0xBF1FFF, "Amatic Industries GmbH", "AMATIC-INDUSTRIES" }, { 0x0050C2, 0xBF2000, 0xBF2FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xC10000, 0xC10FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xC06000, 0xC06FFF, "ANALOG WAY", "ANALOG-WAY" }, { 0x0050C2, 0xC05000, 0xC05FFF, "Doppler Systems LLC", "DOPPLER-LLC" }, { 0x0050C2, 0xABA000, 0xABAFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xAB0000, 0xAB0FFF, "FRAKO Kondensatoren- und Anlagenbau GmbH", "FRAKO-KONDENSATOREN--UND-ANLAGENBAU" }, { 0x0050C2, 0xAA6000, 0xAA6FFF, "Bassett Electronic Systems ltd", "BASSETT" }, { 0x0050C2, 0xAE2000, 0xAE2FFF, "Power Medical Interventions", "POWER-MEDICAL-INTERVENTIONS" }, { 0x0050C2, 0xAD8000, 0xAD8FFF, "Incyma", "INCYMA" }, { 0x0050C2, 0xACE000, 0xACEFFF, "ChronoLogic Pty. Ltd.", "CHRONOLOGIC-PTY" }, { 0x0050C2, 0x9F8000, 0x9F8FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x9F7000, 0x9F7FFF, "Dave Jones Design", "DAVE-JONES-DESIGN" }, { 0x0050C2, 0x9EE000, 0x9EEFFF, "Michael Stevens & Partners Ltd", "MICHAEL-STEVENS-PARTNERS" }, { 0x0050C2, 0x9F3000, 0x9F3FFF, "Vision Technologies, Inc.", "VISION-TECHNOLOGIES" }, { 0x0050C2, 0x9F4000, 0x9F4FFF, "FSR Inc.", "FSR" }, { 0x0050C2, 0x9ED000, 0x9EDFFF, "Picell B.V.", "PICELL" }, { 0x0050C2, 0x9EA000, 0x9EAFFF, "SISMODULAR - Engenharia, Lda", "SISMODULAR---ENGENHARIA-LDA" }, { 0x0050C2, 0x9E9000, 0x9E9FFF, "Ciemme Sistemi Spa", "CIEMME-SISTEMI-SPA" }, { 0x0050C2, 0x9E4000, 0x9E4FFF, "Pyxis Controls WLL", "PYXIS-CONTROLS-WLL" }, { 0x0050C2, 0x9E0000, 0x9E0FFF, "DST Swiss AG", "DST-SWISS" }, { 0x0050C2, 0x9E3000, 0x9E3FFF, "SAI Informationstechnik", "SAI-INFORMATIONSTECHNIK" }, { 0x0050C2, 0x9DA000, 0x9DAFFF, "NEUTRONIK e.K.", "NEUTRONIK-E-K" }, { 0x0050C2, 0x9D9000, 0x9D9FFF, "CNS Systems, Inc.", "CNS" }, { 0x0050C2, 0x9D5000, 0x9D5FFF, "Netpower Labs AB", "NETPOWER-LABS-AB" }, { 0x0050C2, 0x9D6000, 0x9D6FFF, "Innovation, Institute, Inc", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0xA4D000, 0xA4DFFF, "LevelStar LLC.", "LEVELSTAR-LLC" }, { 0x0050C2, 0xA4C000, 0xA4CFFF, "VasoNova, Inc.", "VASONOVA" }, { 0x0050C2, 0xA43000, 0xA43FFF, "NKS Co.Ltd.", "NKS" }, { 0x0050C2, 0xA42000, 0xA42FFF, "RealVision Inc.", "REALVISION" }, { 0x0050C2, 0xA3D000, 0xA3DFFF, "OWANDY", "OWANDY" }, { 0x0050C2, 0xA38000, 0xA38FFF, "Tred Displays", "TRED-DISPLAYS" }, { 0x0050C2, 0xA39000, 0xA39FFF, "Industrial Data Products Ltd", "INDUSTRIAL-DATA-PRODUCTS" }, { 0x0050C2, 0xA75000, 0xA75FFF, "JTL Systems Ltd.", "JTL" }, { 0x0050C2, 0xA74000, 0xA74FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xA6A000, 0xA6AFFF, "Infocrossing", "INFOCROSSING" }, { 0x0050C2, 0xA1C000, 0xA1CFFF, "Microtechnica", "MICROTECHNICA" }, { 0x0050C2, 0xA1B000, 0xA1BFFF, "Realtime Systems Ltd.", "REALTIME" }, { 0x0050C2, 0xA11000, 0xA11FFF, "OJSC Rawenstvo", "OJSC-RAWENSTVO" }, { 0x0050C2, 0xA12000, 0xA12FFF, "HCE Engineering S.r.l.", "HCE-ENGINEERING-S-R-L" }, { 0x0050C2, 0xA15000, 0xA15FFF, "Industrial Computing Ltd", "INDUSTRIAL-COMPUTING" }, { 0x0050C2, 0xA0B000, 0xA0BFFF, "I.D.S. Ingegneria Dei Sistemi S.p.A.", "I-D-S-INGEGNERIA-DEI-SISTEMI-S-P-A" }, { 0x0050C2, 0xA07000, 0xA07FFF, "Dynon Instruments", "DYNON-INSTRUMENTS" }, { 0x0050C2, 0xA08000, 0xA08FFF, "LabJack Corporation", "LABJACK" }, { 0x0050C2, 0xA02000, 0xA02FFF, "Reference, LLC.", "REFERENCE-LLC" }, { 0x0050C2, 0xA01000, 0xA01FFF, "Patronics International LTD", "PATRONICS" }, { 0x0050C2, 0x9FE000, 0x9FEFFF, "SPECTRA EMBEDDED SYSTEMS", "SPECTRA-EMBEDDED" }, { 0x0050C2, 0x9FD000, 0x9FDFFF, "Bitt technology-A Ltd.", "BITT--A" }, { 0x0050C2, 0xA60000, 0xA60FFF, "Arrow Central Europe GmbH - Division Spoerle", "ARROW-CENTRAL-EUROPE---DIVISION-SPOERLE" }, { 0x0050C2, 0xA61000, 0xA61FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xA56000, 0xA56FFF, "ReaMetrix, Inc.", "REAMETRIX" }, { 0x0050C2, 0xA57000, 0xA57FFF, "Juice Technologies, LLC", "JUICE-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xA7F000, 0xA7FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA7E000, 0xA7EFFF, "Independent Project Engineering Ltd", "INDEPENDENT-PROJECT-ENGINEERING" }, { 0x0050C2, 0xA33000, 0xA33FFF, "Fuji Firmware", "FUJI-FIRMWARE" }, { 0x0050C2, 0xA2E000, 0xA2EFFF, "Yuyama Mfg. Co., Ltd.", "YUYAMA-MFG" }, { 0x0050C2, 0xA2F000, 0xA2FFFF, "DragonFly Scientific LLC", "DRAGONFLY-SCIENTIFIC-LLC" }, { 0x0050C2, 0xA29000, 0xA29FFF, "Luminex Corporation", "LUMINEX" }, { 0x0050C2, 0xA1F000, 0xA1FFFF, "Flight Data Systems Pty Ltd", "FLIGHT-DATA-PTY" }, { 0x0050C2, 0x9AF000, 0x9AFFFF, "KRESS-NET Krzysztof Rutecki", "KRESS-NET-KRZYSZTOF-RUTECKI" }, { 0x0050C2, 0x9AE000, 0x9AEFFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0x9A8000, 0x9A8FFF, "DOMIS SA", "DOMIS" }, { 0x0050C2, 0x9A7000, 0x9A7FFF, "Thales Communications & Security S.A.", "THALES-COMMUNICATION-SECURITY" }, { 0x0050C2, 0x9A4000, 0x9A4FFF, "Entwicklung Hard- & Software", "ENTWICKLUNG-HARD--SOFTWARE" }, { 0x0050C2, 0x9A5000, 0x9A5FFF, "Conolog Corporation", "CONOLOG" }, { 0x0050C2, 0x99F000, 0x99FFFF, "Sietron Elektronik", "SIETRON-ELEKTRONIK" }, { 0x0050C2, 0x99D000, 0x99DFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0x9C0000, 0x9C0FFF, "Stuyts Engineering Haarlem BV", "STUYTS-ENGINEERING-HAARLEM" }, { 0x0050C2, 0x9C1000, 0x9C1FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x9BD000, 0x9BDFFF, "Sensitron Semiconductor", "SENSITRON-SEMICONDUCTOR" }, { 0x0050C2, 0x9BC000, 0x9BCFFF, "Vester Elektronik GmbH", "VESTER-ELEKTRONIK" }, { 0x0050C2, 0x9B9000, 0x9B9FFF, "ISA - Intelligent Sensing Anywhere, S.A.", "ISA---INTELLIGENT-SENSING-ANYWHERE" }, { 0x0050C2, 0x9BB000, 0x9BBFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x9B8000, 0x9B8FFF, "Sound Player Systems e.K.", "SOUND-PLAYER-E-K" }, { 0x0050C2, 0x9B2000, 0x9B2FFF, "TempSys", "TEMPSYS" }, { 0x0050C2, 0x9B3000, 0x9B3FFF, "Kahler Automation", "KAHLER-AUTOMATION" }, { 0x0050C2, 0x9B1000, 0x9B1FFF, "Bon Hora GmbH", "BON-HORA" }, { 0x0050C2, 0x99E000, 0x99EFFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x0050C2, 0x99B000, 0x99BFFF, "Bettini srl", "BETTINI-SRL" }, { 0x0050C2, 0x995000, 0x995FFF, "Inter Control Hermann Köhler Elektrik GmbH&Co.KG", "INTER-CONTROL-HERMANN-KOEHLER-ELEKTRIK" }, { 0x0050C2, 0x994000, 0x994FFF, "Xafax Nederland bv", "XAFAX-NEDERLAND" }, { 0x0050C2, 0x991000, 0x991FFF, "UGL Limited", "UGL" }, { 0x0050C2, 0x990000, 0x990FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x967000, 0x967FFF, "Watthour Engineering Co., Inc.", "WATTHOUR-ENGINEERING" }, { 0x0050C2, 0x968000, 0x968FFF, "BuLogics, Inc.", "BULOGICS" }, { 0x0050C2, 0x947000, 0x947FFF, "IMEXHIGHWAY cvba", "IMEXHIGHWAY-CVBA" }, { 0x0050C2, 0x943000, 0x943FFF, "QuanZhou TDX Electronics Co., Ltd.", "QUANZHOU-TDX-ELECTRONICS" }, { 0x0050C2, 0x944000, 0x944FFF, "Wireonair A/S", "WIREONAIR-A/S" }, { 0x0050C2, 0x98B000, 0x98BFFF, "TI2000 TECNOLOGIA INFORMATICA 2000", "TI2000-TECNOLOGIA-INFORMATICA-2000" }, { 0x0050C2, 0x98A000, 0x98AFFF, "MEV Limited", "MEV" }, { 0x0050C2, 0x9D0000, 0x9D0FFF, "J. DITTRICH ELEKTRONIC GmbH & Co. KG", "J-DITTRICH-ELEKTRONIC" }, { 0x0050C2, 0x9CB000, 0x9CBFFF, "NIS-time GmbH", "NIS-TIME" }, { 0x0050C2, 0x9CC000, 0x9CCFFF, "Hirotech, Inc", "HIROTECH" }, { 0x0050C2, 0x9C6000, 0x9C6FFF, "Protronic GmbH", "PROTRONIC" }, { 0x0050C2, 0x9C5000, 0x9C5FFF, "Scansonic MI GmbH", "SCANSONIC-MI" }, { 0x0050C2, 0x97B000, 0x97BFFF, "SMARTQUANTUM SA", "SMARTQUANTUM" }, { 0x0050C2, 0x972000, 0x972FFF, "Switch Science (Panini Keikaku)", "SWITCH-SCIENCE-PANINI-KEIKAKU" }, { 0x0050C2, 0x971000, 0x971FFF, "IPITEK", "IPITEK" }, { 0x0050C2, 0x952000, 0x952FFF, "Tech Fass s.r.o.", "TECH-FASS-S-R-O" }, { 0x0050C2, 0x92C000, 0x92CFFF, "Exatrol Corporation", "EXATROL" }, { 0x0050C2, 0x92D000, 0x92DFFF, "APProSoftware.com", "APPROSOFTWARE-COM" }, { 0x0050C2, 0x923000, 0x923FFF, "Amicus Wireless", "AMICUS-WIRELESS" }, { 0x0050C2, 0x922000, 0x922FFF, "Metrum Sweden AB", "METRUM-SWEDEN-AB" }, { 0x0050C2, 0x8D0000, 0x8D0FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x8C6000, 0x8C6FFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x8E4000, 0x8E4FFF, "MaCaPS International Limited", "MACAPS" }, { 0x0050C2, 0x8DA000, 0x8DAFFF, "DOCUTEMP, INC", "DOCUTEMP" }, { 0x0050C2, 0x90E000, 0x90EFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x90F000, 0x90FFFF, "INTEGRA Biosciences AG", "INTEGRA-BIOSCIENCES" }, { 0x0050C2, 0x901000, 0x901FFF, "Research Applications Incorp", "RESEARCH-APPLICATIONS-INCORP" }, { 0x0050C2, 0x936000, 0x936FFF, "Margaritis Engineering", "MARGARITIS-ENGINEERING" }, { 0x0050C2, 0x937000, 0x937FFF, "BigBear", "BIGBEAR" }, { 0x0050C2, 0x8FD000, 0x8FDFFF, "Sindoma Müh Mim Ýnþ Elk San Tic Ltd.", "SINDOMA-MUEH-MIM-ÝNþ-ELK-SAN-TIC" }, { 0x0050C2, 0x8FC000, 0x8FCFFF, "Symetrics Industries", "SYMETRICS-INDUSTRIES" }, { 0x0050C2, 0x8EE000, 0x8EEFFF, "PCSC", "PCSC" }, { 0x0050C2, 0x8BC000, 0x8BCFFF, "Honeywell Sensotec", "HONEYWELL-SENSOTEC" }, { 0x0050C2, 0x8B2000, 0x8B2FFF, "SERVAIND SA.", "SERVAIND" }, { 0x0050C2, 0x918000, 0x918FFF, "Design Lightning Corp", "DESIGN-LIGHTNING" }, { 0x0050C2, 0x919000, 0x919FFF, "AHV Systems, Inc.", "AHV" }, { 0x0050C2, 0x830000, 0x830FFF, "CompuShop Services LLC", "COMPUSHOP-SERVICES-LLC" }, { 0x0050C2, 0x828000, 0x828FFF, "SLICAN sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x0050C2, 0x827000, 0x827FFF, "Enero Solutions inc.", "ENERO-SOLUTIONS" }, { 0x0050C2, 0x862000, 0x862FFF, "Elsys AG", "ELSYS" }, { 0x0050C2, 0x863000, 0x863FFF, "Advanced Technology Solutions", "ADVANCED-SOLUTIONS" }, { 0x0050C2, 0x85C000, 0x85CFFF, "B S E", "B-S-E" }, { 0x0050C2, 0x851000, 0x851FFF, "SPJ Embedded Technologies Pvt. Ltd.", "SPJ-EMBEDDED-TECHNOLOGIES-PVT" }, { 0x0050C2, 0x852000, 0x852FFF, "eInfochips Ltd.", "EINFOCHIPS" }, { 0x0050C2, 0x847000, 0x847FFF, "Lars Morich Kommunikationstechnik GmbH", "LARS-MORICH-KOMMUNIKATIONSTECHNIK" }, { 0x0050C2, 0x848000, 0x848FFF, "DASA ROBOT Co., Ltd.", "DASA-ROBOT" }, { 0x0050C2, 0x81E000, 0x81EFFF, "Channelot Ltd.", "CHANNELOT" }, { 0x0050C2, 0x81D000, 0x81DFFF, "IT SALUX CO., LTD.", "IT-SALUX" }, { 0x0050C2, 0x814000, 0x814FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0x89E000, 0x89EFFF, "Broadcast Electronics", "BROADCAST-ELECTRONICS" }, { 0x0050C2, 0x88B000, 0x88BFFF, "Hollis Electronics Company LLC", "HOLLIS-ELECTRONICS-COMPANY-LLC" }, { 0x0050C2, 0x88A000, 0x88AFFF, "Continental Electronics Corp.", "CONTINENTAL-ELECTRONICS" }, { 0x0050C2, 0x880000, 0x880FFF, "Creation Technologies Chicago", "CREATION-TECHNOLOGIES-CHICAGO" }, { 0x0050C2, 0x881000, 0x881FFF, "InnoTrans Communications, Inc.", "INNOTRANS-COMMUNICATION" }, { 0x0050C2, 0x85B000, 0x85BFFF, "Boreste", "BORESTE" }, { 0x0050C2, 0x876000, 0x876FFF, "Privatquelle Gruber GmbH & CO KG", "PRIVATQUELLE-GRUBER" }, { 0x0050C2, 0x877000, 0x877FFF, "Motion Analysis Corp", "MOTION-ANALYSIS" }, { 0x0050C2, 0x86D000, 0x86DFFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0x86C000, 0x86CFFF, "Condigi Televagt A/S", "CONDIGI-TELEVAGT-A/S" }, { 0x0050C2, 0x8A8000, 0x8A8FFF, "ALTEK ELECTRONICS", "ALTEK-ELECTRONICS" }, { 0x0050C2, 0x83A000, 0x83AFFF, "Syr-Tec Engineering & Marketing", "SYR-TEC-ENGINEERING-MARKETING" }, { 0x0050C2, 0x83B000, 0x83BFFF, "O. Bay AG", "O-BAY" }, { 0x0050C2, 0x793000, 0x793FFF, "Enertex Bayern GmbH", "ENERTEX-BAYERN" }, { 0x0050C2, 0x794000, 0x794FFF, "COMSONICS, INC.", "COMSONICS" }, { 0x0050C2, 0x78A000, 0x78AFFF, "LEVEL TELECOM", "LEVEL-TELECOM" }, { 0x0050C2, 0x789000, 0x789FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0x800000, 0x800FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x7FF000, 0x7FFFFF, "Shenzhen MaiWei Cable TV Equipment CO.,LTD.", "SHENZHEN-MAIWEI-CABLE-TV-EQUIPMENT" }, { 0x0050C2, 0x7F6000, 0x7F6FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x7F5000, 0x7F5FFF, "ACE Carwash Systems", "ACE-CARWASH" }, { 0x0050C2, 0x7B1000, 0x7B1FFF, "ATEME", "ATEME" }, { 0x0050C2, 0x7B2000, 0x7B2FFF, "A.D.I Video technologies", "A-D-I-VIDEO-TECHNOLOGIES" }, { 0x0050C2, 0x7D5000, 0x7D5FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0x7CD000, 0x7CDFFF, "Precision MicroControl Corporation", "PRECISION-MICROCONTROL" }, { 0x0050C2, 0x7C6000, 0x7C6FFF, "Lyngdorf Audio Aps", "LYNGDORF-AUDIO-APS" }, { 0x0050C2, 0x7C5000, 0x7C5FFF, "Venture Research Inc.", "VENTURE-RESEARCH" }, { 0x0050C2, 0x813000, 0x813FFF, "Intelleflex Corporation", "INTELLEFLEX" }, { 0x0050C2, 0x80A000, 0x80AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x809000, 0x809FFF, "Varma Electronics Oy", "VARMA-ELECTRONICS-OY" }, { 0x0050C2, 0x7A7000, 0x7A7FFF, "Guidance Navigation Limited", "GUIDANCE-NAVIGATION" }, { 0x0050C2, 0x79E000, 0x79EFFF, "Benshaw Canada Controls, Inc.", "BENSHAW-CANADA-CONTROLS" }, { 0x0050C2, 0x79D000, 0x79DFFF, "MiraTrek", "MIRATREK" }, { 0x0050C2, 0x7BB000, 0x7BBFFF, "InRay Solutions Ltd.", "INRAY-SOLUTIONS" }, { 0x0050C2, 0x7BC000, 0x7BCFFF, "EIDOS SPA", "EIDOS-SPA" }, { 0x0050C2, 0x74C000, 0x74CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x74B000, 0x74BFFF, "STAR-Dundee Ltd", "STAR-DUNDEE" }, { 0x0050C2, 0x77C000, 0x77CFFF, "ATEC SRL", "ATEC-SRL" }, { 0x0050C2, 0x77D000, 0x77DFFF, "Lincoln Industrial", "LINCOLN-INDUSTRIAL" }, { 0x0050C2, 0x772000, 0x772FFF, "IES Elektronikentwicklung", "IES-ELEKTRONIKENTWICKLUNG" }, { 0x0050C2, 0x773000, 0x773FFF, "Pointe Conception Medical Inc.", "POINTE-CONCEPTION-MEDICAL" }, { 0x0050C2, 0x72E000, 0x72EFFF, "SNCF EIM PAYS DE LOIRE", "SNCF-EIM-PAYS-DE-LOIRE" }, { 0x0050C2, 0x72D000, 0x72DFFF, "Physical Acoustics Corporation", "PHYSICAL-ACOUSTICS" }, { 0x0050C2, 0x724000, 0x724FFF, "HSC-Regelungstechnik GmbH", "HSC-REGELUNGSTECHNIK" }, { 0x0050C2, 0x756000, 0x756FFF, "Chesapeake Sciences Corp", "CHESAPEAKE-SCIENCES" }, { 0x0050C2, 0x755000, 0x755FFF, "Teletek Electronics", "TELETEK-ELECTRONICS" }, { 0x0050C2, 0x768000, 0x768FFF, "Control Service do Brasil Ltda", "CONTROL-SERVICE-DO-BRASIL-LTDA" }, { 0x0050C2, 0x75F000, 0x75FFFF, "B. Rexroth the identity company GmbH", "B-REXROTH-THE-IDENTITY-COMPANY" }, { 0x0050C2, 0x760000, 0x760FFF, "AR'S CO., LTD.", "AR-S" }, { 0x0050C2, 0x741000, 0x741FFF, "Dain", "DAIN" }, { 0x0050C2, 0x742000, 0x742FFF, "Fantuzzi Reggiane", "FANTUZZI-REGGIANE" }, { 0x0050C2, 0x738000, 0x738FFF, "Miracom Technology Co., Ltd.", "MIRACOM" }, { 0x0050C2, 0x737000, 0x737FFF, "Teradici Corporation", "TERADICI" }, { 0x0050C2, 0x683000, 0x683FFF, "MEGGITT Safety System", "MEGGITT-SAFETY-SYSTEM" }, { 0x0050C2, 0x682000, 0x682FFF, "Commet AB", "COMMET-AB" }, { 0x0050C2, 0x679000, 0x679FFF, "Industrial Vacuum Systems", "INDUSTRIAL-VACUUM" }, { 0x0050C2, 0x678000, 0x678FFF, "IHM", "IHM" }, { 0x0050C2, 0x6BE000, 0x6BEFFF, "ESTEC Co.,Ltd.", "ESTEC" }, { 0x0050C2, 0x6B4000, 0x6B4FFF, "SOMESCA", "SOMESCA" }, { 0x0050C2, 0x6DC000, 0x6DCFFF, "L-3 Communications Mobile-Vision, Inc.", "L-3-COMMUNICATION-MOBILE-VISION" }, { 0x0050C2, 0x6D2000, 0x6D2FFF, "Lumistar Incorporated", "LUMISTAR-INCORPORATED" }, { 0x0050C2, 0x696000, 0x696FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0x697000, 0x697FFF, "Monarch Instrument", "MONARCH-INSTRUMENT" }, { 0x0050C2, 0x68C000, 0x68CFFF, "Isochron Inc", "ISOCHRON" }, { 0x0050C2, 0x68D000, 0x68DFFF, "CXR Larus Corporation", "CXR-LARUS" }, { 0x0050C2, 0x664000, 0x664FFF, "Westel Wireless Systems", "WESTEL-WIRELESS" }, { 0x0050C2, 0x665000, 0x665FFF, "NetworkSound, Inc", "NETWORKSOUND" }, { 0x0050C2, 0x65B000, 0x65BFFF, "Silverbrook Research", "SILVERBROOK-RESEARCH" }, { 0x0050C2, 0x65A000, 0x65AFFF, "Hisstema AB", "HISSTEMA-AB" }, { 0x0050C2, 0x650000, 0x650FFF, "Liquid Breaker, LLC", "LIQUID-BREAKER-LLC" }, { 0x0050C2, 0x651000, 0x651FFF, "STAER SPA", "STAER-SPA" }, { 0x0050C2, 0x66E000, 0x66EFFF, "Linear Systems Ltd.", "LINEAR" }, { 0x0050C2, 0x66F000, 0x66FFFF, "Nilan A/S", "NILAN-A/S" }, { 0x0050C2, 0x6F0000, 0x6F0FFF, "Stanley Security Solutions, Inc.", "STANLEY-SECURITY-SOLUTIONS" }, { 0x0050C2, 0x6E6000, 0x6E6FFF, "Lanetco", "LANETCO" }, { 0x0050C2, 0x6AA000, 0x6AAFFF, "Ifox - Industria e Comercio Ltda", "IFOX---INDUSTRIA-E-COMERCIO-LTDA" }, { 0x0050C2, 0x6C8000, 0x6C8FFF, "B&S MEDIA Co., LTD.", "B-S-MEDIA" }, { 0x0050C2, 0x5D9000, 0x5D9FFF, "Crimson Microsystems, Inc.", "CRIMSON-MICROSYSTEMS" }, { 0x0050C2, 0x5D8000, 0x5D8FFF, "TECHNIFOR SAS", "TECHNIFOR-SAS" }, { 0x0050C2, 0x5D5000, 0x5D5FFF, "Cannon Technologies", "CANNON-TECHNOLOGIES" }, { 0x0050C2, 0x5D1000, 0x5D1FFF, "Meucci Solutions", "MEUCCI-SOLUTIONS" }, { 0x0050C2, 0x5D0000, 0x5D0FFF, "Automata Spa", "AUTOMATA-SPA" }, { 0x0050C2, 0x5CB000, 0x5CBFFF, "Kobold Sistemi s.r.l.", "KOBOLD-SISTEMI-S-R-L" }, { 0x0050C2, 0x5C7000, 0x5C7FFF, "InSync Technology Ltd", "INSYNC" }, { 0x0050C2, 0x5C6000, 0x5C6FFF, "Technische Alternative GmbH", "TECHNISCHE-ALTERNATIVE" }, { 0x0050C2, 0x61F000, 0x61FFFF, "Imagine Communications", "IMAGINE-COMMUNICATION" }, { 0x0050C2, 0x615000, 0x615FFF, "Axis Electronics", "AXIS-ELECTRONICS" }, { 0x0050C2, 0x616000, 0x616FFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0x647000, 0x647FFF, "R&D Technology Solutionz Limited", "R-D-SOLUTIONZ" }, { 0x0050C2, 0x646000, 0x646FFF, "TRUTOUCH TECHNOLOGIES INC", "TRUTOUCH-TECHNOLOGIES" }, { 0x0050C2, 0x63C000, 0x63CFFF, "dPict Imaging, Inc.", "DPICT-IMAGING" }, { 0x0050C2, 0x634000, 0x634FFF, "Sohon Inc", "SOHON" }, { 0x0050C2, 0x60B000, 0x60BFFF, "Shanghai QianJin Electronic Equipment Co. Ltd.", "SHANGHAI-QIANJIN-EQUIPMENT" }, { 0x0050C2, 0x60C000, 0x60CFFF, "IDENTIC AB", "IDENTIC-AB" }, { 0x0050C2, 0x602000, 0x602FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x5EF000, 0x5EFFFF, "pikkerton GmbH", "PIKKERTON" }, { 0x0050C2, 0x5ED000, 0x5EDFFF, "AQUAROTTER A FRANKE COMPANY", "AQUAROTTER-A-FRANKE-COMPANY" }, { 0x0050C2, 0x5E4000, 0x5E4FFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x5E5000, 0x5E5FFF, "Stresstech OY", "STRESSTECH-OY" }, { 0x0050C2, 0x5E3000, 0x5E3FFF, "Computechnic AG", "COMPUTECHNIC" }, { 0x0050C2, 0x633000, 0x633FFF, "Rice University", "RICE-UNIVERSITY" }, { 0x0050C2, 0x629000, 0x629FFF, "MacDonald Humfrey (Products) Ltd", "MACDONALD-HUMFREY-PRODUCTS" }, { 0x0050C2, 0x62A000, 0x62AFFF, "Prisma Engineering srl", "PRISMA-ENGINEERING-SRL" }, { 0x0050C2, 0x5F7000, 0x5F7FFF, "Metrologic Group", "METROLOGIC-GROUP" }, { 0x0050C2, 0x5EE000, 0x5EEFFF, "Condre Corporation", "CONDRE" }, { 0x0050C2, 0x5C1000, 0x5C1FFF, "R. L. Drake Company", "R-L-DRAKE-COMPANY" }, { 0x0050C2, 0x5BC000, 0x5BCFFF, "Guangzhou Hui Si Information Technologies Inc.", "GUANGZHOU-HUI-SI-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x5B7000, 0x5B7FFF, "AVerMedia Technologies, Inc.", "AVERMEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x5B4000, 0x5B4FFF, "Terrascience Systems Ltd.", "TERRASCIENCE" }, { 0x0050C2, 0x5B2000, 0x5B2FFF, "Syntronic AB", "SYNTRONIC-AB" }, { 0x0050C2, 0x5B3000, 0x5B3FFF, "HITECOM System", "HITECOM-SYSTEM" }, { 0x0050C2, 0x56B000, 0x56BFFF, "Dataton Utvecklings AB", "DATATON-UTVECKLINGS-AB" }, { 0x0050C2, 0x59C000, 0x59CFFF, "DELSAT GROUP S.A.", "DELSAT-GROUP" }, { 0x0050C2, 0x592000, 0x592FFF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0050C2, 0x5AD000, 0x5ADFFF, "Emcom Systems", "EMCOM" }, { 0x0050C2, 0x5AA000, 0x5AAFFF, "Transenna AB", "TRANSENNA-AB" }, { 0x0050C2, 0x5A8000, 0x5A8FFF, "ETAP NV", "ETAP-NV" }, { 0x0050C2, 0x5A9000, 0x5A9FFF, "AYC Telecom Ltd", "AYC-TELECOM" }, { 0x0050C2, 0x5A3000, 0x5A3FFF, "LUMEL S.A.", "LUMEL" }, { 0x0050C2, 0x588000, 0x588FFF, "Federal Electronics", "FEDERAL-ELECTRONICS" }, { 0x0050C2, 0x57E000, 0x57EFFF, "Digital Way", "DIGITAL-WAY" }, { 0x0050C2, 0x561000, 0x561FFF, "Seitec Elektronik GmbH", "SEITEC-ELEKTRONIK" }, { 0x0050C2, 0x4C9000, 0x4C9FFF, "Scirocco AB", "SCIROCCO-AB" }, { 0x0050C2, 0x4C8000, 0x4C8FFF, "Neets", "NEETS" }, { 0x0050C2, 0x4BF000, 0x4BFFFF, "Westinghouse Rail Systems Ltd", "WESTINGHOUSE-RAIL" }, { 0x0050C2, 0x4BE000, 0x4BEFFF, "Digital Dynamics, Inc.", "DIGITAL-DYNAMICS" }, { 0x0050C2, 0x4B4000, 0x4B4FFF, "Matrix Audio Designs", "MATRIX-AUDIO-DESIGNS" }, { 0x0050C2, 0x4B5000, 0x4B5FFF, "Valley Tecnologia", "VALLEY-TECNOLOGIA" }, { 0x0050C2, 0x4B0000, 0x4B0FFF, "Esmart Distribution Pte Ltd", "ESMART-DISTRIBUTION-PTE" }, { 0x0050C2, 0x50F000, 0x50FFFF, "Polystar Instruments AB", "POLYSTAR-INSTRUMENTS-AB" }, { 0x0050C2, 0x50E000, 0x50EFFF, "Fibresavers Corporation", "FIBRESAVERS" }, { 0x0050C2, 0x504000, 0x504FFF, "Aphex Systems Ltd.", "APHEX" }, { 0x0050C2, 0x4E6000, 0x4E6FFF, "Photonic Bridges Inc.", "PHOTONIC-BRIDGES" }, { 0x0050C2, 0x4E7000, 0x4E7FFF, "Computerized Elevator Contol", "COMPUTERIZED-ELEVATOR-CONTOL" }, { 0x0050C2, 0x4DD000, 0x4DDFFF, "Truteq Wireless (PTY) Ltd.", "TRUTEQ-WIRELESS-PTY" }, { 0x0050C2, 0x4DC000, 0x4DCFFF, "Ace Electronics, Inc.", "ACE-ELECTRONICS" }, { 0x0050C2, 0x4D2000, 0x4D2FFF, "Twoway CATV SERVICE INC.", "TWOWAY-CATV-SERVICE" }, { 0x0050C2, 0x4D3000, 0x4D3FFF, "ELPROC sp. z o.o.", "ELPROC-SP-Z-O-O" }, { 0x0050C2, 0x4FB000, 0x4FBFFF, "BES Technology Group", "BES-GROUP" }, { 0x0050C2, 0x4FA000, 0x4FAFFF, "Cambridge Technology, Inc.", "CAMBRIDGE" }, { 0x0050C2, 0x4F1000, 0x4F1FFF, "Packet Island Inc.", "PACKET-ISLAND" }, { 0x0050C2, 0x4AB000, 0x4ABFFF, "JVF Communications Ltd", "JVF-COMMUNICATION" }, { 0x0050C2, 0x4A1000, 0x4A1FFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x438000, 0x438FFF, "Telecom Protection Technologies Limited", "TELECOM-PROTECTION-TECHNOLOGIES" }, { 0x0050C2, 0x436000, 0x436FFF, "Satellite Services BV", "SATELLITE-SERVICES" }, { 0x0050C2, 0x437000, 0x437FFF, "PowerWAN, Inc", "POWERWAN" }, { 0x0050C2, 0x431000, 0x431FFF, "Octatron, Inc.", "OCTATRON" }, { 0x0050C2, 0x42E000, 0x42EFFF, "Oelmann Elektronik GmbH", "OELMANN-ELEKTRONIK" }, { 0x0050C2, 0x441000, 0x441FFF, "Sammi Information Systems Co.,Ltd", "SAMMI-INFORMATION" }, { 0x0050C2, 0x448000, 0x448FFF, "Comtech Systems Inc.", "COMTECH" }, { 0x0050C2, 0x442000, 0x442FFF, "Pico Computing, Inc.", "PICO-COMPUTING" }, { 0x0050C2, 0x449000, 0x449FFF, "BLEILE DATENTECHNIK GmbH", "BLEILE-DATENTECHNIK" }, { 0x0050C2, 0x445000, 0x445FFF, "MICRONIC s.r.o.", "MICRONIC-S-R-O" }, { 0x0050C2, 0x440000, 0x440FFF, "Advanced Modular Computers Ltd.", "ADVANCED-MODULAR-COMPUTERS" }, { 0x0050C2, 0x43B000, 0x43BFFF, "A3IP", "A3IP" }, { 0x0050C2, 0x42D000, 0x42DFFF, "Argo-Tech", "ARGO-TECH" }, { 0x0050C2, 0x427000, 0x427FFF, "Scheidt & Bachmann GmbH", "SCHEIDT-BACHMANN" }, { 0x0050C2, 0x423000, 0x423FFF, "Power-One Inc.", "POWER-ONE" }, { 0x0050C2, 0x424000, 0x424FFF, "Metrolab Technology SA", "METROLAB" }, { 0x0050C2, 0x36F000, 0x36FFFF, "XIMEA s.r.o.", "XIMEA-S-R-O" }, { 0x0050C2, 0x472000, 0x472FFF, "KOP Ltd", "KOP" }, { 0x0050C2, 0x471000, 0x471FFF, "Pixtree Technologies, inc.", "PIXTREE-TECHNOLOGIES" }, { 0x0050C2, 0x468000, 0x468FFF, "Network I/O", "NETWORK-I/O" }, { 0x0050C2, 0x469000, 0x469FFF, "BiPOM Electronics, Inc.", "BIPOM-ELECTRONICS" }, { 0x0050C2, 0x467000, 0x467FFF, "United Western Technologies", "UNITED-WESTERN-TECHNOLOGIES" }, { 0x0050C2, 0x45F000, 0x45FFFF, "T2C Marketing AB", "T2C-MARKETING-AB" }, { 0x0050C2, 0x45E000, 0x45EFFF, "Halliburton - Sperry Drilling Service", "HALLIBURTON---SPERRY-DRILLING-SERVICE" }, { 0x0050C2, 0x45D000, 0x45DFFF, "Digital Engineering, Inc.", "DIGITAL-ENGINEERING" }, { 0x0050C2, 0x454000, 0x454FFF, "Brivo Systems, LLC", "BRIVO-LLC" }, { 0x0050C2, 0x399000, 0x399FFF, "Advanced Micro Controls Inc.", "ADVANCED-MICRO-CONTROLS" }, { 0x0050C2, 0x38F000, 0x38FFFF, "TTC Telecom", "TTC-TELECOM" }, { 0x0050C2, 0x38E000, 0x38EFFF, "Nordic Alarm AB", "NORDIC-ALARM-AB" }, { 0x0050C2, 0x3DA000, 0x3DAFFF, "M5 Data Limited", "M5-DATA" }, { 0x0050C2, 0x3D5000, 0x3D5FFF, "Fluke Biomedical, Radiation Management Services", "FLUKE-BIOMEDICAL-RADIATION-MANAGEMENT-SERVICES" }, { 0x0050C2, 0x3D4000, 0x3D4FFF, "Wisnu and Supak Co.Ltd.", "WISNU-AND-SUPAK" }, { 0x0050C2, 0x3CB000, 0x3CBFFF, "Analytica GmbH", "ANALYTICA" }, { 0x0050C2, 0x3CE000, 0x3CEFFF, "Ward Leonard Electric Company", "WARD-LEONARD-ELECTRIC-COMPANY" }, { 0x0050C2, 0x3F1000, 0x3F1FFF, "Salland Electronics Holding BV", "SALLAND-ELECTRONICS-HOLDING" }, { 0x0050C2, 0x3F2000, 0x3F2FFF, "STL GmbH", "STL" }, { 0x0050C2, 0x3EB000, 0x3EBFFF, "ISS International", "ISS" }, { 0x0050C2, 0x3DB000, 0x3DBFFF, "Osmetech Inc.", "OSMETECH" }, { 0x0050C2, 0x3DC000, 0x3DCFFF, "3D perception", "3D-PERCEPTION" }, { 0x0050C2, 0x3A3000, 0x3A3FFF, "Star Link Communication Pvt. Ltd.", "STAR-LINK-COMMUNICATION-PVT" }, { 0x0050C2, 0x3A6000, 0x3A6FFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x0050C2, 0x3A2000, 0x3A2FFF, "Vegas Amusement", "VEGAS-AMUSEMENT" }, { 0x0050C2, 0x39C000, 0x39CFFF, "TIYODA MFG CO.,LTD.", "TIYODA-MFG" }, { 0x0050C2, 0x3CA000, 0x3CAFFF, "ABB Inc.", "ABB" }, { 0x0050C2, 0x3C4000, 0x3C4FFF, "Sypris Electronics", "SYPRIS-ELECTRONICS" }, { 0x0050C2, 0x3C1000, 0x3C1FFF, "MicroTek Electronics, Inc.", "MICROTEK-ELECTRONICS" }, { 0x0050C2, 0x3BD000, 0x3BDFFF, "Bigbang L.T.D.", "BIGBANG-L-T-D" }, { 0x0050C2, 0x3BE000, 0x3BEFFF, "Pauly Steuer- und Regelanlagen GmbH & Co. KG", "PAULY-STEUER--UND-REGELANLAGEN" }, { 0x0050C2, 0x384000, 0x384FFF, "Wireless Reading Systems Holding ASA", "WIRELESS-READING-HOLDING-ASA" }, { 0x0050C2, 0x388000, 0x388FFF, "IEE Inc", "IEE" }, { 0x0050C2, 0x389000, 0x389FFF, "Exavio Inc.", "EXAVIO" }, { 0x0050C2, 0x381000, 0x381FFF, "Realtime Engineering AG", "REALTIME-ENGINEERING" }, { 0x0050C2, 0x406000, 0x406FFF, "CoreStreet, Ltd", "CORESTREET" }, { 0x0050C2, 0x405000, 0x405FFF, "Guralp Systems Limited", "GURALP" }, { 0x0050C2, 0x3FF000, 0x3FFFFF, "Cast Iron Systems", "CAST-IRON" }, { 0x0050C2, 0x3FB000, 0x3FBFFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x3FC000, 0x3FCFFF, "Weinberger Deutschland GmbH", "WEINBERGER-DEUTSCHLAND" }, { 0x0050C2, 0x3F5000, 0x3F5FFF, "Phaedrus Limited", "PHAEDRUS" }, { 0x0050C2, 0x3B3000, 0x3B3FFF, "Media Lab., Inc.", "MEDIA-LAB" }, { 0x0050C2, 0x3B4000, 0x3B4FFF, "Contrôle Analytique inc.", "CONTRôLE-ANALYTIQUE" }, { 0x0050C2, 0x41D000, 0x41DFFF, "Altronic, Inc.", "ALTRONIC" }, { 0x0050C2, 0x419000, 0x419FFF, "Mecsel Oy", "MECSEL-OY" }, { 0x0050C2, 0x41A000, 0x41AFFF, "Bluewater Systems Ltd", "BLUEWATER" }, { 0x0050C2, 0x40F000, 0x40FFFF, "BIR,INC.", "BIR" }, { 0x0050C2, 0x413000, 0x413FFF, "Goodrich", "GOODRICH" }, { 0x0050C2, 0x409000, 0x409FFF, "KTEC LTD", "KTEC" }, { 0x0050C2, 0x33C000, 0x33CFFF, "SkipJam", "SKIPJAM" }, { 0x0050C2, 0x362000, 0x362FFF, "AZD Praha s.r.o.", "AZD-PRAHA-S-R-O" }, { 0x0050C2, 0x358000, 0x358FFF, "ALCEA", "ALCEA" }, { 0x0050C2, 0x350000, 0x350FFF, "Kinesys Projects Limited", "KINESYS-PROJECTS" }, { 0x0050C2, 0x351000, 0x351FFF, "Finesystem Co., Ltd", "FINESYSTEM" }, { 0x0050C2, 0x379000, 0x379FFF, "Control LAN S.A.", "CONTROL-LAN" }, { 0x0050C2, 0x36C000, 0x36CFFF, "RISCO Group", "RISCO-GROUP" }, { 0x0050C2, 0x346000, 0x346FFF, "biokeysystem", "BIOKEYSYSTEM" }, { 0x0050C2, 0x347000, 0x347FFF, "Row Seven Ltd", "ROW-SEVEN" }, { 0x0050C2, 0x326000, 0x326FFF, "Navionics S.p.A.", "NAVIONICS-S-P-A" }, { 0x0050C2, 0x313000, 0x313FFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x024000, 0x024FFF, "IPITEK", "IPITEK" }, { 0x0050C2, 0x1F1000, 0x1F1FFF, "SKY Computers, Inc.", "SKY-COMPUTERS" }, { 0x0050C2, 0x1ED000, 0x1EDFFF, "EMKA-electronic AG", "EMKA" }, { 0x0050C2, 0x1EE000, 0x1EEFFF, "Perto Periféricos de Automação S.A.", "PERTO-PERIFéRICOS-DE-AUTOMAçãO" }, { 0x0050C2, 0x1E6000, 0x1E6FFF, "United Tri-Tech Corporation", "UNITED-TRI-TECH" }, { 0x0050C2, 0x1E7000, 0x1E7FFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0x1EC000, 0x1ECFFF, "COSMO co.,ltd.", "COSMO" }, { 0x0050C2, 0x204000, 0x204FFF, "Algodue Elettronica srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x0050C2, 0x218000, 0x218FFF, "Nansen S. A. - Instrumentos de Precisão", "NANSEN-S-A---INSTRUMENTOS-DE-PRECISãO" }, { 0x0050C2, 0x1FA000, 0x1FAFFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0x1F2000, 0x1F2FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x240000, 0x240FFF, "Geoquip Ltd", "GEOQUIP" }, { 0x0050C2, 0x236000, 0x236FFF, "JLCooper Electronics", "JLCOOPER-ELECTRONICS" }, { 0x0050C2, 0x22C000, 0x22CFFF, "Intrinsity", "INTRINSITY" }, { 0x0050C2, 0x222000, 0x222FFF, "imo-elektronik GmbH", "IMO-ELEKTRONIK" }, { 0x0050C2, 0x24A000, 0x24AFFF, "CDS Rail", "CDS-RAIL" }, { 0x0050C2, 0x1DC000, 0x1DCFFF, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0050C2, 0x1DD000, 0x1DDFFF, "Peiker acustic GmbH & Co. KG", "PEIKER-ACUSTIC" }, { 0x0050C2, 0x1D2000, 0x1D2FFF, "Shenyang Internet Technology Inc", "SHENYANG-INTERNET" }, { 0x0050C2, 0x1D3000, 0x1D3FFF, "Synopsys", "SYNOPSYS" }, { 0x0050C2, 0x19B000, 0x19BFFF, "Wilcoxon Research, Inc.", "WILCOXON-RESEARCH" }, { 0x0050C2, 0x196000, 0x196FFF, "Netsynt Spa", "NETSYNT-SPA" }, { 0x0050C2, 0x197000, 0x197FFF, "EPM Tecnologia e Equipamentos", "EPM-TECNOLOGIA-E-EQUIPAMENTOS" }, { 0x0050C2, 0x1B4000, 0x1B4FFF, "DSP Group Inc.", "DSP-GROUP" }, { 0x0050C2, 0x1B5000, 0x1B5FFF, "Thrane & Thrane A/S", "THRANE-THRANE-A/S" }, { 0x0050C2, 0x1AF000, 0x1AFFFF, "PESA Switching Systems, Inc.", "PESA-SWITCHING" }, { 0x0050C2, 0x1AB000, 0x1ABFFF, "Streaming Networks", "STREAMING-NETWORKS" }, { 0x0050C2, 0x17D000, 0x17DFFF, "Cognex Corporation", "COGNEX" }, { 0x0050C2, 0x179000, 0x179FFF, "Verifiber LLC", "VERIFIBER-LLC" }, { 0x0050C2, 0x174000, 0x174FFF, "N&P Technologies", "N-P-TECHNOLOGIES" }, { 0x0050C2, 0x173000, 0x173FFF, "DeMeTec GmbH", "DEMETEC" }, { 0x0050C2, 0x1C8000, 0x1C8FFF, "Euphony technology CO., LTD.", "EUPHONY" }, { 0x0050C2, 0x1C9000, 0x1C9FFF, "modas GmbH", "MODAS" }, { 0x0050C2, 0x1BF000, 0x1BFFFF, "International Test & Engineering Services Co.,Ltd.", "TEST-ENGINEERING-SERVICES" }, { 0x0050C2, 0x187000, 0x187FFF, "Cyan Technology Ltd", "CYAN" }, { 0x0050C2, 0x183000, 0x183FFF, "Mixbaal S.A. de C.V.", "MIXBAAL-DE-C-V" }, { 0x0050C2, 0x184000, 0x184FFF, "H M Computing Limited", "H-M-COMPUTING" }, { 0x0050C2, 0x17E000, 0x17EFFF, "Binary Wave Technologies Inc.", "BINARY-WAVE-TECHNOLOGIES" }, { 0x0050C2, 0x1BE000, 0x1BEFFF, "Sedia Electronics", "SEDIA-ELECTRONICS" }, { 0x0050C2, 0x1B9000, 0x1B9FFF, "EmCom Technology Inc.", "EMCOM" }, { 0x0050C2, 0x18C000, 0x18CFFF, "Technodrive srl", "TECHNODRIVE-SRL" }, { 0x0050C2, 0x191000, 0x191FFF, "Partner Voxstream A/S", "PARTNER-VOXSTREAM-A/S" }, { 0x0050C2, 0x1AA000, 0x1AAFFF, "BitBox Ltd", "BITBOX" }, { 0x0050C2, 0x1A5000, 0x1A5FFF, "NORCO", "NORCO" }, { 0x0050C2, 0x1A0000, 0x1A0FFF, "SCA Data Systems", "SCA-DATA" }, { 0x0050C2, 0x1A1000, 0x1A1FFF, "Portalplayer, Inc", "PORTALPLAYER" }, { 0x0050C2, 0x159000, 0x159FFF, "Standard Comm. Corp.", "STANDARD-COMM" }, { 0x0050C2, 0x170000, 0x170FFF, "Taishodo Seiko Co., Ltd.", "TAISHODO-SEIKO" }, { 0x0050C2, 0x00A000, 0x00AFFF, "Tharsys", "THARSYS" }, { 0x0050C2, 0x16B000, 0x16BFFF, "Masterclock, Inc.", "MASTERCLOCK" }, { 0x0050C2, 0x013000, 0x013FFF, "Sensys Technologies Inc.", "SENSYS-TECHNOLOGIES" }, { 0x0050C2, 0x014000, 0x014FFF, "Canal +", "CANAL-+" }, { 0x0050C2, 0x009000, 0x009FFF, "Datakinetics Ltd.", "DATAKINETICS" }, { 0x0050C2, 0x044000, 0x044FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x127000, 0x127FFF, "TPA Traffic & Parking Automation BV", "TPA-TRAFFIC-PARKING-AUTOMATION" }, { 0x0050C2, 0x145000, 0x145FFF, "ELC Lighting", "ELC-LIGHTING" }, { 0x0050C2, 0x14F000, 0x14FFFF, "Telephonics Corp.", "TELEPHONICS" }, { 0x0050C2, 0x110000, 0x110FFF, "QuesCom", "QUESCOM" }, { 0x0050C2, 0x111000, 0x111FFF, "Endusis Limited", "ENDUSIS" }, { 0x0050C2, 0x0E1000, 0x0E1FFF, "Inspiration Technology P/L", "INSPIRATION-P/L" }, { 0x0050C2, 0x0D7000, 0x0D7FFF, "Summit Avionics, Inc.", "SUMMIT-AVIONICS" }, { 0x0050C2, 0x11A000, 0x11AFFF, "Teamaxess Ticketing GmbH", "TEAMAXESS-TICKETING" }, { 0x0050C2, 0x124000, 0x124FFF, "Tokai Soft Corporation", "TOKAI-SOFT" }, { 0x0050C2, 0x11B000, 0x11BFFF, "Digital Vision AB", "DIGITAL-VISION-AB" }, { 0x0050C2, 0x0EB000, 0x0EBFFF, "iREZ Technologies LLC", "IREZ-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x0EF000, 0x0EFFFF, "Movaz Networks, Inc.", "MOVAZ-NETWORKS" }, { 0x0050C2, 0x109000, 0x109FFF, "ITK Dr. Kassen GmbH", "ITK-DR-KASSEN" }, { 0x0050C2, 0x0FF000, 0x0FFFFF, "IPAXS Corporation", "IPAXS" }, { 0x0050C2, 0x0AA000, 0x0AAFFF, "Log-In, Inc.", "LOG-IN" }, { 0x0050C2, 0x0A9000, 0x0A9FFF, "Radiant Networks Plc", "RADIANT-NETWORKS-PLC" }, { 0x0050C2, 0x0A8000, 0x0A8FFF, "Kaveri Networks", "KAVERI-NETWORKS" }, { 0x0050C2, 0x09C000, 0x09CFFF, "RF Applications, Inc.", "RF-APPLICATIONS" }, { 0x0050C2, 0x0CC000, 0x0CCFFF, "AlphaMedia Co., Ltd", "ALPHAMEDIA" }, { 0x0050C2, 0x0CD000, 0x0CDFFF, "LINET OY", "LINET-OY" }, { 0x0050C2, 0x0C4000, 0x0C4FFF, "InterEpoch Technology, Inc.", "INTEREPOCH" }, { 0x0050C2, 0x0C5000, 0x0C5FFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x0A0000, 0x0A0FFF, "CYNAPS", "CYNAPS" }, { 0x0050C2, 0x09F000, 0x09FFFF, "MetaWave Vedeo Systems", "METAWAVE-VEDEO" }, { 0x0050C2, 0x099000, 0x099FFF, "Case Information & Communications", "CASE-INFORMATION-COMMUNICATION" }, { 0x0050C2, 0x069000, 0x069FFF, "EC Elettronica S.R.L.", "EC-ELETTRONICA-S-R-L" }, { 0x0050C2, 0x079000, 0x079FFF, "Flextel S.p.A", "FLEXTEL-S-P-A" }, { 0x0050C2, 0x078000, 0x078FFF, "Reselec AG", "RESELEC" }, { 0x0050C2, 0x072000, 0x072FFF, "Neuberger Gebaeudeautomation GmbH & Co.", "NEUBERGER-GEBAEUDEAUTOMATION" }, { 0x0050C2, 0x071000, 0x071FFF, "NetVision Telecom", "NETVISION-TELECOM" }, { 0x0050C2, 0x05C000, 0x05CFFF, "Nortel Networks PLC (UK)", "NORTEL-NETWORKS-PLC-UK" }, { 0x0050C2, 0x055000, 0x055FFF, "San Castle Technologies, Inc.", "SAN-CASTLE-TECHNOLOGIES" }, { 0x0050C2, 0x05B000, 0x05BFFF, "Radiometer Medical A/S", "RADIOMETER-MEDICAL-A/S" }, { 0x0050C2, 0x031000, 0x031FFF, "Eloquence Ltd", "ELOQUENCE" }, { 0x0050C2, 0x032000, 0x032FFF, "MotionIO", "MOTIONIO" }, { 0x0050C2, 0x03E000, 0x03EFFF, "MSU UK Ltd", "MSU-UK" }, { 0x0050C2, 0x03F000, 0x03FFFF, "Celotek Corp", "CELOTEK" }, { 0x0050C2, 0x04F000, 0x04FFFF, "Luma Corporation", "LUMA" }, { 0x0050C2, 0x04B000, 0x04BFFF, "Tecstar Demo Systems Division", "TECSTAR-DEMO-DIVISION" }, { 0x0050C2, 0x038000, 0x038FFF, "Etheira Technologies", "ETHEIRA-TECHNOLOGIES" }, { 0x0050C2, 0x039000, 0x039FFF, "Apex Signal Corp", "APEX-SIGNAL" }, { 0x0050C2, 0x027000, 0x027FFF, "Industrial Control Links", "INDUSTRIAL-CONTROL-LINKS" }, { 0x0050C2, 0x028000, 0x028FFF, "The Frensch Corporation (Pty) Ltd.", "THE-FRENSCH-PTY" }, { 0x0050C2, 0x02F000, 0x02FFFF, "Sinetica Corp", "SINETICA" }, { 0x0050C2, 0x02E000, 0x02EFFF, "Turtle Mountain Corp", "TURTLE-MOUNTAIN" }, { 0x0050C2, 0x05E000, 0x05EFFF, "DIVA Systems", "DIVA" }, { 0x0050C2, 0x010000, 0x010FFF, "Moisture Systems", "MOISTURE" }, { 0x0050C2, 0x011000, 0x011FFF, "Bihl + Wiedemann GmbH", "BIHL-+-WIEDEMANN" }, { 0x0050C2, 0x025000, 0x025FFF, "Teracom Telematica Ltda.", "TERACOM-TELEMATICA-LTDA" }, { 0x0050C2, 0x01B000, 0x01BFFF, "Cross Products Ltd.", "CROSS-PRODUCTS" }, { 0x0050C2, 0x01A000, 0x01AFFF, "Skylake Talix", "SKYLAKE-TALIX" }, { 0x0050C2, 0x01E000, 0x01EFFF, "CallTech International Limited", "CALLTECH" }, { 0x0050C2, 0x01D000, 0x01DFFF, "Princeton Gamma Tech", "PRINCETON-GAMMA-TECH" }, { 0x0050C2, 0xE3C000, 0xE3CFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xCFA000, 0xCFAFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xA24000, 0xA24FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x5F8000, 0x5F8FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x56A000, 0x56AFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x410000, 0x410FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x40D855, 0x0F4000, 0x0F4FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0xCBA000, 0xCBAFFF, "DELTA TAU DATA SYSTEMS, INC.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x378000, 0x378FFF, "Daintree Networks Pty", "DAINTREE-NETWORKS-PTY" }, { 0x0050C2, 0xBE7000, 0xBE7FFF, "Genetec Inc.", "GENETEC" }, { 0x0050C2, 0xCF9000, 0xCF9FFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x0050C2, 0x380000, 0x380FFF, "EKE-Electronics Ltd.", "EKE-ELECTRONICS" }, { 0x0050C2, 0x620000, 0x620FFF, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x0050C2, 0xD5F000, 0xD5FFFF, "Embedded Solution Bank Co., Ltd.", "EMBEDDED-SOLUTION-BANK" }, { 0x0050C2, 0x9CF000, 0x9CFFFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0xD9B000, 0xD9BFFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0xFA5000, 0xFA5FFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0x7A8000, 0x7A8FFF, "Integrated Design Tools, Inc.", "INTEGRATED-DESIGN-TOOLS" }, { 0x0050C2, 0x398000, 0x398FFF, "Inhand Electronics, Inc.", "INHAND-ELECTRONICS" }, { 0x40D855, 0x11A000, 0x11AFFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x330000, 0x330FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0xC3A000, 0xC3AFFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0xA92000, 0xA92FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x99A000, 0x99AFFF, "Miromico AG", "MIROMICO" }, { 0x0050C2, 0xF87000, 0xF87FFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x0050C2, 0x13B000, 0x13BFFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x0050C2, 0xA6B000, 0xA6BFFF, "Explorer Inc.", "EXPLORER" }, { 0x0050C2, 0x33D000, 0x33DFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0xCC4000, 0xCC4FFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0xE8E000, 0xE8EFFF, "GD Mission Systems", "GD-MISSION" }, { 0x40D855, 0x14A000, 0x14AFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x9A9000, 0x9A9FFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x723000, 0x723FFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x0050C2, 0x42C000, 0x42CFFF, "Trapeze Software Group Inc", "TRAPEZE-SOFTWARE-GROUP" }, { 0x0050C2, 0x33A000, 0x33AFFF, "United Telecoms Ltd", "UNITED-TELECOMS" }, { 0x40D855, 0x16A000, 0x16AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x110000, 0x110FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xDE1000, 0xDE1FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x5BD000, 0x5BDFFF, "NOMUS COMM SYSTEMS", "NOMUS-COMM" }, { 0x0050C2, 0x20E000, 0x20EFFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x40D855, 0x14B000, 0x14BFFF, "Vocality International Ltd", "VOCALITY" }, { 0x0050C2, 0xF2D000, 0xF2DFFF, "Robert Bosch Healthcare Systems, Inc.", "ROBERT-BOSCH-HEALTHCARE" }, { 0x0050C2, 0xF3E000, 0xF3EFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x0050C2, 0x1EA000, 0x1EAFFF, "DAVE SRL", "DAVE-SRL" }, { 0x0050C2, 0x6FA000, 0x6FAFFF, "DCNS", "DCNS" }, { 0x0050C2, 0x3C0000, 0x3C0FFF, "EDA Industries Pte. Ltd", "EDA-INDUSTRIES-PTE" }, { 0x0050C2, 0x9DF000, 0x9DFFFF, "CODEC Co., Ltd.", "CODEC" }, { 0x0050C2, 0xA9C000, 0xA9CFFF, "Star Electronics GmbH & Co. KG", "STAR-ELECTRONICS" }, { 0x0050C2, 0xE64000, 0xE64FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x0050C2, 0xE98000, 0xE98FFF, "i3 International Inc.", "I3" }, { 0x0050C2, 0x505000, 0x505FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x163000, 0x163FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0xF8F000, 0xF8FFFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0xC6C000, 0xC6CFFF, "DORLET SAU", "DORLET-SAU" }, { 0x0050C2, 0x455000, 0x455FFF, "Gogo BA", "GOGO-BA" }, { 0x0050C2, 0x7CE000, 0x7CEFFF, "Gogo BA", "GOGO-BA" }, { 0x40D855, 0x046000, 0x046FFF, "Circuitlink Pty Ltd", "CIRCUITLINK-PTY" }, { 0x0050C2, 0xAC4000, 0xAC4FFF, "Orion Technologies,LLC", "ORION-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x0BF000, 0x0BFFFF, "Private", "PRIVATE" }, { 0x0050C2, 0x4F0000, 0x4F0FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x601000, 0x601FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x392000, 0x392FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x17A000, 0x17AFFF, "WOLF Advanced Technology.", "WOLF-ADVANCED" }, { 0x0050C2, 0x0E0000, 0x0E0FFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x19D000, 0x19DFFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x0C8000, 0x0C8FFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x40D855, 0x1CE000, 0x1CEFFF, "Peter Huber", "PETER-HUBER" }, { 0x40D855, 0x1C9000, 0x1C9FFF, "Andy-L Ltd.", "ANDY-L" }, { 0x40D855, 0x1C7000, 0x1C7FFF, "Wexiodisk AB", "WEXIODISK-AB" }, { 0x40D855, 0x1B4000, 0x1B4FFF, "Inforce Computing Inc.", "INFORCE-COMPUTING" }, { 0x40D855, 0x1B2000, 0x1B2FFF, "AGE A. Gilg Elektronik", "AGE-A-GILG-ELEKTRONIK" }, { 0x40D855, 0x1A7000, 0x1A7FFF, "ENTEC Electric & Electronic CO., LTD", "ENTEC-ELECTRIC" }, { 0x40D855, 0x1A8000, 0x1A8FFF, "Multiobrabotka", "MULTIOBRABOTKA" }, { 0x40D855, 0x195000, 0x195FFF, "TONNA ELECTRONIQUE", "TONNA-ELECTRONIQUE" }, { 0x40D855, 0x193000, 0x193FFF, "FORZA SILICON CORP.", "FORZA-SILICON" }, { 0x40D855, 0x188000, 0x188FFF, "Array Corporation", "ARRAY" }, { 0x40D855, 0x1BC000, 0x1BCFFF, "KbDevice,Inc.", "KBDEVICE" }, { 0x40D855, 0x1BA000, 0x1BAFFF, "Creative Lighting And Sound Systems Pty Ltd", "CREATIVE-LIGHTING-AND-SOUND-PTY" }, { 0x40D855, 0x19B000, 0x19BFFF, "Northern Star Technologies", "NORTHERN-STAR-TECHNOLOGIES" }, { 0x40D855, 0x1DB000, 0x1DBFFF, "NIPPON TECHNO LAB.,INC,", "NIPPON-TECHNO-LAB" }, { 0x40D855, 0x1D9000, 0x1D9FFF, "Commercial Wireless Systems International LLC.", "COMMERCIAL-WIRELESS-LLC" }, { 0x40D855, 0x160000, 0x160FFF, "Thermo Fisher Sceintific", "THERMO-FISHER-SCEINTIFIC" }, { 0x40D855, 0x162000, 0x162FFF, "LUNA-NEXUS", "LUNA-NEXUS" }, { 0x40D855, 0x156000, 0x156FFF, "Emphysys, Inc.", "EMPHYSYS" }, { 0x40D855, 0x155000, 0x155FFF, "Telefrang AB", "TELEFRANG-AB" }, { 0x40D855, 0x150000, 0x150FFF, "SHIKINO HIGH-TECH", "SHIKINO-HIGH-TECH" }, { 0x40D855, 0x143000, 0x143FFF, "Tokyo Drawing Ltd.", "TOKYO-DRAWING" }, { 0x40D855, 0x141000, 0x141FFF, "Key Systems, Inc.", "KEY" }, { 0x40D855, 0x13F000, 0x13FFFF, "Zhejiang Wellsun Electric Meter Co.,Ltd", "ZHEJIANG-WELLSUN-ELECTRIC-METER" }, { 0x40D855, 0x184000, 0x184FFF, "Satkirit Ltd", "SATKIRIT" }, { 0x40D855, 0x14D000, 0x14DFFF, "SOMFY SAS", "SOMFY-SAS" }, { 0x40D855, 0x14E000, 0x14EFFF, "Marposs S.p.A", "MARPOSS-S-P-A" }, { 0x40D855, 0x12E000, 0x12EFFF, "Canfield Scientific, Inc.", "CANFIELD-SCIENTIFIC" }, { 0x40D855, 0x17A000, 0x17AFFF, "ARGUS-SPECTRUM", "ARGUS-SPECTRUM" }, { 0x40D855, 0x179000, 0x179FFF, "Servo-Robot Inc.", "SERVO-ROBOT" }, { 0x40D855, 0x16F000, 0x16FFFF, "BrightLeaf Power", "BRIGHTLEAF-POWER" }, { 0x40D855, 0x113000, 0x113FFF, "Testbook Ltd", "TESTBOOK" }, { 0x40D855, 0x106000, 0x106FFF, "Orbital A/S", "ORBITAL-A/S" }, { 0x40D855, 0x108000, 0x108FFF, "ALPHA DESIGN CO.,LTD.", "ALPHA-DESIGN" }, { 0x40D855, 0x109000, 0x109FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x0D1000, 0x0D1FFF, "Cantada Inc", "CANTADA" }, { 0x40D855, 0x0CF000, 0x0CFFFF, "Clark-MXR, Inc.", "CLARK-MXR" }, { 0x40D855, 0x0E4000, 0x0E4FFF, "ARAGO SYSTEMS", "ARAGO" }, { 0x40D855, 0x0DA000, 0x0DAFFF, "Devialet SA", "DEVIALET" }, { 0x40D855, 0x120000, 0x120FFF, "ObjectFab GmbH", "OBJECTFAB" }, { 0x40D855, 0x115000, 0x115FFF, "MESA Electronic GmbH", "MESA" }, { 0x40D855, 0x0D9000, 0x0D9FFF, "YUKO ELECTRIC CO.,LTD", "YUKO-ELECTRIC" }, { 0x40D855, 0x0FE000, 0x0FEFFF, "Cytech Technology Pte Ltd", "CYTECH-PTE" }, { 0x40D855, 0x0FC000, 0x0FCFFF, "eumig industrie-tv GmbH", "EUMIG-INDUSTRIE-TV" }, { 0x40D855, 0x0FB000, 0x0FBFFF, "InfoMac Sp. z o. o. Sp. k.", "INFOMAC-SP-Z-O-O-SP-K" }, { 0x40D855, 0x0E8000, 0x0E8FFF, "HEITEC AG", "HEITEC" }, { 0x40D855, 0x096000, 0x096FFF, "Comtel Electronics GmbH", "COMTEL-ELECTRONICS" }, { 0x40D855, 0x094000, 0x094FFF, "Nomad Digital Limited", "NOMAD-DIGITAL" }, { 0x40D855, 0x092000, 0x092FFF, "Wasserbauer GmbH", "WASSERBAUER" }, { 0x40D855, 0x075000, 0x075FFF, "Teraflops", "TERAFLOPS" }, { 0x40D855, 0x073000, 0x073FFF, "Diamond Technologies, Inc", "DIAMOND-TECHNOLOGIES" }, { 0x40D855, 0x06E000, 0x06EFFF, "C-COM Satellite Systems Inc.", "C-COM-SATELLITE" }, { 0x40D855, 0x06B000, 0x06BFFF, "BRS Sistemas Eletrônicos", "BRS-SISTEMAS-ELETRôNICOS" }, { 0x40D855, 0x06D000, 0x06DFFF, "BroadSoft, INC", "BROADSOFT" }, { 0x40D855, 0x07F000, 0x07FFFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x40D855, 0x08A000, 0x08AFFF, "Leder Elektronik Design", "LEDER-ELEKTRONIK-DESIGN" }, { 0x40D855, 0x080000, 0x080FFF, "Honeywell", "HONEYWELL" }, { 0x40D855, 0x0A1000, 0x0A1FFF, "ADVALY SYSTEM Inc.", "ADVALY-SYSTEM" }, { 0x40D855, 0x09F000, 0x09FFFF, "Bascules Robbe nv", "BASCULES-ROBBE-NV" }, { 0x40D855, 0x0A0000, 0x0A0FFF, "Quantronix, Inc.", "QUANTRONIX" }, { 0x40D855, 0x0C7000, 0x0C7FFF, "insensiv GmbH", "INSENSIV" }, { 0x40D855, 0x0C5000, 0x0C5FFF, "M.M. Elektrolab", "M-M-ELEKTROLAB" }, { 0x40D855, 0x0C4000, 0x0C4FFF, "Inspired Systems", "INSPIRED" }, { 0x40D855, 0x0AD000, 0x0ADFFF, "Space Micro", "SPACE-MICRO" }, { 0x40D855, 0x0AB000, 0x0ABFFF, "Enel doo Belgrade", "ENEL-DOO-BELGRADE" }, { 0x40D855, 0x0B8000, 0x0B8FFF, "Ferlin Trading BV", "FERLIN-TRADING" }, { 0x40D855, 0x0BA000, 0x0BAFFF, "PCH Engineering A/S", "PCH-ENGINEERING-A/S" }, { 0x40D855, 0x030000, 0x030FFF, "Tecnologias Plexus", "TECNOLOGIAS-PLEXUS" }, { 0x40D855, 0x02D000, 0x02DFFF, "Elgama Sistemos", "ELGAMA-SISTEMOS" }, { 0x40D855, 0x02E000, 0x02EFFF, "Circuitec Ind. Equip. Eletr. Ltda", "CIRCUITEC-IND-EQUIP-ELETR-LTDA" }, { 0x40D855, 0x026000, 0x026FFF, "Symetrics Industries", "SYMETRICS-INDUSTRIES" }, { 0x40D855, 0x00A000, 0x00AFFF, "Sarana Sistem Mikro", "SARANA-SISTEM-MIKRO" }, { 0x40D855, 0x006000, 0x006FFF, "Bactest Limited", "BACTEST" }, { 0x40D855, 0x004000, 0x004FFF, "CR Magnetics, Inc.", "CR-MAGNETICS" }, { 0x40D855, 0x01B000, 0x01BFFF, "Audio Enhancement", "AUDIO-ENHANCEMENT" }, { 0x40D855, 0x019000, 0x019FFF, "Nautel Limited", "NAUTEL" }, { 0x40D855, 0x00E000, 0x00EFFF, "Brightwell Dispensers", "BRIGHTWELL-DISPENSERS" }, { 0x40D855, 0x00F000, 0x00FFFF, "DIGITAL DYNAMICS, INC.", "DIGITAL-DYNAMICS" }, { 0x0050C2, 0xFF6000, 0xFF6FFF, "Booyco Electronics", "BOOYCO-ELECTRONICS" }, { 0x0050C2, 0xFF9000, 0xFF9FFF, "Penttech AB", "PENTTECH-AB" }, { 0x0050C2, 0xFEF000, 0xFEFFFF, "Task Sistemas de Computacao", "TASK-SISTEMAS-DE-COMPUTACAO" }, { 0x0050C2, 0xFEC000, 0xFECFFF, "First System Technology Co., Ltd.", "FIRST-SYSTEM" }, { 0x0050C2, 0xFE5000, 0xFE5FFF, "Scandinova Systems AB", "SCANDINOVA-AB" }, { 0x40D855, 0x03C000, 0x03CFFF, "Computer System Co.,Ltd", "SYSTEM" }, { 0x40D855, 0x03A000, 0x03AFFF, "Socus networks", "SOCUS-NETWORKS" }, { 0x40D855, 0x03B000, 0x03BFFF, "Telcomkorea", "TELCOMKOREA" }, { 0x40D855, 0x038000, 0x038FFF, "Special Measurements Labs LLC", "SPECIAL-MEASUREMENTS-LABS-LLC" }, { 0x40D855, 0x045000, 0x045FFF, "Genadsystem", "GENADSYSTEM" }, { 0x40D855, 0x047000, 0x047FFF, "Dos&Donts SRL", "DOS-DONTS-SRL" }, { 0x40D855, 0x049000, 0x049FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x40D855, 0x05E000, 0x05EFFF, "inoage GmbH", "INOAGE" }, { 0x40D855, 0x053000, 0x053FFF, "Amantys Ltd", "AMANTYS" }, { 0x40D855, 0x054000, 0x054FFF, "VITEC", "VITEC" }, { 0x40D855, 0x051000, 0x051FFF, "CS Instruments Asia", "CS-INSTRUMENTS-ASIA" }, { 0x0050C2, 0xFD1000, 0xFD1FFF, "Enyx SA", "ENYX" }, { 0x0050C2, 0xFCE000, 0xFCEFFF, "KOYO ELECTRIC", "KOYO-ELECTRIC" }, { 0x0050C2, 0xFB0000, 0xFB0FFF, "Tateishi Kobisha Co.LTD", "TATEISHI-KOBISHA" }, { 0x0050C2, 0xFA9000, 0xFA9FFF, "Hijet Print d.o.o.", "HIJET-PRINT-D-O-O" }, { 0x0050C2, 0xFA3000, 0xFA3FFF, "Xemex NV", "XEMEX-NV" }, { 0x0050C2, 0xF7A000, 0xF7AFFF, "C3 LLC", "C3-LLC" }, { 0x0050C2, 0xF7B000, 0xF7BFFF, "MCM Electronics", "MCM-ELECTRONICS" }, { 0x0050C2, 0xF71000, 0xF71FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xF70000, 0xF70FFF, "Noralta Technologies Inc", "NORALTA-TECHNOLOGIES" }, { 0x0050C2, 0xF85000, 0xF85FFF, "Enetics, Inc.", "ENETICS" }, { 0x0050C2, 0xF84000, 0xF84FFF, "Dynon Instruments", "DYNON-INSTRUMENTS" }, { 0x0050C2, 0xFC7000, 0xFC7FFF, "SERCOM Regeltechniek", "SERCOM-REGELTECHNIEK" }, { 0x0050C2, 0xFC4000, 0xFC4FFF, "Kyowadensi", "KYOWADENSI" }, { 0x0050C2, 0xFA0000, 0xFA0FFF, "Amplus Communication Pte Ltd", "AMPLUS-COMMUNICATION-PTE" }, { 0x0050C2, 0xF98000, 0xF98FFF, "Infotech North America", "INFOTECH-NORTH-AMERICA" }, { 0x0050C2, 0xF8E000, 0xF8EFFF, "GPO", "GPO" }, { 0x0050C2, 0xFE2000, 0xFE2FFF, "Pulsotronic Anlagentechnik GmbH", "PULSOTRONIC-ANLAGENTECHNIK" }, { 0x0050C2, 0xFDB000, 0xFDBFFF, "The Security Center Inc", "THE-SECURITY-CENTER" }, { 0x0050C2, 0xFD8000, 0xFD8FFF, "Ease Inc.", "EASE" }, { 0x0050C2, 0xFB3000, 0xFB3FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xEFC000, 0xEFCFFF, "Private", "PRIVATE" }, { 0x0050C2, 0xEFA000, 0xEFAFFF, "Predictive Sensor Technology", "PREDICTIVE-SENSOR" }, { 0x0050C2, 0xEF2000, 0xEF2FFF, "Specialty Microwave Corp", "SPECIALTY-MICROWAVE" }, { 0x0050C2, 0xF3D000, 0xF3DFFF, "Project service S.a.s", "PROJECT-SERVICE-S" }, { 0x0050C2, 0xF36000, 0xF36FFF, "Visitech AS", "VISITECH-AS" }, { 0x0050C2, 0xF2C000, 0xF2CFFF, "Terratel Technology s.r.o.", "TERRATEL-S-R-O" }, { 0x0050C2, 0xF2E000, 0xF2EFFF, "H&L Instruments, LLC", "H-L-INSTRUMENTS-LLC" }, { 0x0050C2, 0xEF0000, 0xEF0FFF, "Homaetrix Ltd", "HOMAETRIX" }, { 0x0050C2, 0xEE8000, 0xEE8FFF, "Kamacho Scale Co., Ltd.", "KAMACHO-SCALE" }, { 0x0050C2, 0xEE6000, 0xEE6FFF, "B:TECH, a. s.", "B:TECH-A-S" }, { 0x0050C2, 0xF0E000, 0xF0EFFF, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0x0050C2, 0xF06000, 0xF06FFF, "Micro-Key BV", "MICRO-KEY" }, { 0x0050C2, 0xF04000, 0xF04FFF, "KINKI ROENTGEN INDUSTRIAL CO.,LTD", "KINKI-ROENTGEN-INDUSTRIAL" }, { 0x0050C2, 0xF49000, 0xF49FFF, "Green Instruments A/S", "GREEN-INSTRUMENTS-A/S" }, { 0x0050C2, 0xF41000, 0xF41FFF, "FairyDevices Inc.", "FAIRYDEVICES" }, { 0x0050C2, 0xF24000, 0xF24FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xF22000, 0xF22FFF, "Harland Simon plc", "HARLAND-SIMON-PLC" }, { 0x0050C2, 0xF67000, 0xF67FFF, "Celestial Audio", "CELESTIAL-AUDIO" }, { 0x0050C2, 0xF5D000, 0xF5DFFF, "SMARTB TECHNOLOGIES", "SMARTB-TECHNOLOGIES" }, { 0x0050C2, 0xF1A000, 0xF1AFFF, "Aqua Management", "AQUA-MANAGEMENT" }, { 0x0050C2, 0xF18000, 0xF18FFF, "Vitec Multimedia", "VITEC-MULTIMEDIA" }, { 0x0050C2, 0xF10000, 0xF10FFF, "Wincor Nixdorf Sp. z o.o.", "WINCOR-NIXDORF-SP-Z-O-O" }, { 0x0050C2, 0xEC9000, 0xEC9FFF, "Amsterdam Scientific Instruments BV", "AMSTERDAM-SCIENTIFIC-INSTRUMENTS" }, { 0x0050C2, 0xEC1000, 0xEC1FFF, "ANT Group s.r.l", "ANT-GROUP-S-R-L" }, { 0x0050C2, 0xEBF000, 0xEBFFFF, "CIVOLUTION", "CIVOLUTION" }, { 0x0050C2, 0xE97000, 0xE97FFF, "Arista Systems Corporation", "ARISTA" }, { 0x0050C2, 0xE8D000, 0xE8DFFF, "SystemAdvanced Co,Ltd", "SYSTEMADVANCED" }, { 0x0050C2, 0xE8F000, 0xE8FFFF, "STT Condigi A/S", "STT-CONDIGI-A/S" }, { 0x0050C2, 0xE85000, 0xE85FFF, "Cosmo Life Co.,Ltd", "COSMO-LIFE" }, { 0x0050C2, 0xEA1000, 0xEA1FFF, "TEX COMPUTER SRL", "TEX-SRL" }, { 0x0050C2, 0xE99000, 0xE99FFF, "UV Networks, Inc.", "UV-NETWORKS" }, { 0x0050C2, 0xED3000, 0xED3FFF, "ECO MONITORING UTILITY SYSTEMS LTD", "ECO-MONITORING-UTILITY" }, { 0x0050C2, 0xECB000, 0xECBFFF, "FAL Corp", "FAL" }, { 0x0050C2, 0xEB5000, 0xEB5FFF, "Covidence A/S", "COVIDENCE-A/S" }, { 0x0050C2, 0xEB7000, 0xEB7FFF, "Saab AB", "SAAB-AB" }, { 0x0050C2, 0xEAB000, 0xEABFFF, "Warp9 Tech Design, Inc.", "WARP9-TECH-DESIGN" }, { 0x0050C2, 0xEDE000, 0xEDEFFF, "Smart Grid Networks", "SMART-GRID-NETWORKS" }, { 0x0050C2, 0xEDA000, 0xEDAFFF, "Joint Stock Company Svyaz Inginiring M", "JOINT-STOCK-COMPANY-SVYAZ-INGINIRING-M" }, { 0x0050C2, 0xE83000, 0xE83FFF, "Witree Co.,Ltd", "WITREE" }, { 0x0050C2, 0xE7B000, 0xE7BFFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x0050C2, 0xE78000, 0xE78FFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0xE6D000, 0xE6DFFF, "Allerta Inc", "ALLERTA" }, { 0x0050C2, 0xE63000, 0xE63FFF, "Prima sistemi", "PRIMA-SISTEMI" }, { 0x0050C2, 0xEA3000, 0xEA3FFF, "Subsea Systems, Inc.", "SUBSEA" }, { 0x0050C2, 0xE31000, 0xE31FFF, "ENSIS Co., Ltd.", "ENSIS" }, { 0x0050C2, 0xE59000, 0xE59FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE1D000, 0xE1DFFF, "Holdline Tecnologia e Sistemas Ltda", "HOLDLINE-TECNOLOGIA-E-SISTEMAS-LTDA" }, { 0x0050C2, 0xE27000, 0xE27FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x0050C2, 0xE02000, 0xE02FFF, "Cleverscope", "CLEVERSCOPE" }, { 0x0050C2, 0xE4F000, 0xE4FFFF, "Wine Technology Marlborough", "WINE-MARLBOROUGH" }, { 0x0050C2, 0xE12000, 0xE12FFF, "Kago Electronics BV", "KAGO-ELECTRONICS" }, { 0x0050C2, 0xE11000, 0xE11FFF, "RadioMobile Inc", "RADIOMOBILE" }, { 0x0050C2, 0xE45000, 0xE45FFF, "Stichting Sunrise", "STICHTING-SUNRISE" }, { 0x0050C2, 0xE3B000, 0xE3BFFF, "Nanosolution Inc.", "NANOSOLUTION" }, { 0x0050C2, 0xDAF000, 0xDAFFFF, "eumig industrie-tv GmbH", "EUMIG-INDUSTRIE-TV" }, { 0x0050C2, 0xDA7000, 0xDA7FFF, "Capton", "CAPTON" }, { 0x0050C2, 0xDA4000, 0xDA4FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xD9D000, 0xD9DFFF, "Mistral Solutions Pvt. Ltd", "MISTRAL-SOLUTIONS-PVT" }, { 0x0050C2, 0xDCB000, 0xDCBFFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xDC4000, 0xDC4FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xDC1000, 0xDC1FFF, "Acrux Technology Limited", "ACRUX" }, { 0x0050C2, 0xDBA000, 0xDBAFFF, "M.P. Electronics", "M-P-ELECTRONICS" }, { 0x0050C2, 0xDB7000, 0xDB7FFF, "SOREL GmbH Mikroelektronik", "SOREL-MIKROELEKTRONIK" }, { 0x0050C2, 0xDB0000, 0xDB0FFF, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x0050C2, 0xDD8000, 0xDD8FFF, "Selex Systems Integration Inc", "SELEX-INTEGRATION" }, { 0x0050C2, 0xDD5000, 0xDD5FFF, "Friend Spring Industrial Co., Ltd.", "FRIEND-SPRING-INDUSTRIAL" }, { 0x0050C2, 0xDCE000, 0xDCEFFF, "Mecsel Oy", "MECSEL-OY" }, { 0x0050C2, 0xDF6000, 0xDF6FFF, "HINO ENGINEERING, INC", "HINO-ENGINEERING" }, { 0x0050C2, 0xDEC000, 0xDECFFF, "VendNovation LLC", "VENDNOVATION-LLC" }, { 0x0050C2, 0xDE9000, 0xDE9FFF, "Dacom West GmbH", "DACOM-WEST" }, { 0x0050C2, 0xD9A000, 0xD9AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD93000, 0xD93FFF, "Axlon AB", "AXLON-AB" }, { 0x0050C2, 0xD90000, 0xD90FFF, "Dumps Electronic", "DUMPS" }, { 0x0050C2, 0xDE2000, 0xDE2FFF, "SEQUTEC INC", "SEQUTEC" }, { 0x0050C2, 0xDDF000, 0xDDFFFF, "Device GmbH", "DEVICE" }, { 0x0050C2, 0xDF8000, 0xDF8FFF, "Tommotek (WA) Pty Ltd.", "TOMMOTEK-WA-PTY" }, { 0x0050C2, 0xD37000, 0xD37FFF, "LJT & Associates, Inc.", "LJT-ASSOCIATES" }, { 0x0050C2, 0xD2D000, 0xD2DFFF, "Cadi Scientific Pte Ltd", "CADI-SCIENTIFIC-PTE" }, { 0x0050C2, 0xD0F000, 0xD0FFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD72000, 0xD72FFF, "Scale-Tron, Inc.", "SCALE-TRON" }, { 0x0050C2, 0xD6B000, 0xD6BFFF, "Nemec Automation", "NEMEC-AUTOMATION" }, { 0x0050C2, 0xD68000, 0xD68FFF, "HiSpeed Data, Inc.", "HISPEED-DATA" }, { 0x0050C2, 0xD61000, 0xD61FFF, "system2 GmbH", "SYSTEM2" }, { 0x0050C2, 0xD7F000, 0xD7FFFF, "HMI Technologies", "HMI-TECHNOLOGIES" }, { 0x0050C2, 0xD7C000, 0xD7CFFF, "Microcubs Systems Pvt Ltd", "MICROCUBS-PVT" }, { 0x0050C2, 0xD75000, 0xD75FFF, "Collectric AB", "COLLECTRIC-AB" }, { 0x0050C2, 0xD89000, 0xD89FFF, "Visual Telecommunication Network, Inc", "VISUAL-TELECOMMUNICATION-NETWORK" }, { 0x0050C2, 0xD86000, 0xD86FFF, "ECOMM ERA", "ECOMM-ERA" }, { 0x0050C2, 0xD23000, 0xD23FFF, "Bluestone Technology GmbH", "BLUESTONE" }, { 0x0050C2, 0xD19000, 0xD19FFF, "Applied Medical Technologies, Inc DBA AirClean Systems", "APPLIED-MEDICAL-TECHNOLOGIES-DBA-AIRCLEAN" }, { 0x0050C2, 0xD5E000, 0xD5EFFF, "infinitec co., ltd.", "INFINITEC" }, { 0x0050C2, 0xD57000, 0xD57FFF, "Hijikata Denki Corp.", "HIJIKATA-DENKI" }, { 0x0050C2, 0xD54000, 0xD54FFF, "ABtrack s.r.l.", "ABTRACK-S-R-L" }, { 0x0050C2, 0xD02000, 0xD02FFF, "SURVALENT TECHNOLOGY CORP", "SURVALENT" }, { 0x0050C2, 0xCFB000, 0xCFBFFF, "New Embedded Technology", "NEW-EMBEDDED" }, { 0x0050C2, 0xCF8000, 0xCF8FFF, "beks Kommunikacios Technika kft", "BEKS-KOMMUNIKACIOS-TECHNIKA-KFT" }, { 0x0050C2, 0xD4D000, 0xD4DFFF, "Yardney Technical Products Inc.", "YARDNEY-TECHNICAL-PRODUCTS" }, { 0x0050C2, 0xD49000, 0xD49FFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x0050C2, 0xD41000, 0xD41FFF, "AREA ENERGY, INC.", "AREA-ENERGY" }, { 0x0050C2, 0xCA5000, 0xCA5FFF, "YOKOWO CO.,LTD", "YOKOWO" }, { 0x0050C2, 0xCA1000, 0xCA1FFF, "Wayne Kerr Electronics", "WAYNE-KERR-ELECTRONICS" }, { 0x0050C2, 0xC9B000, 0xC9BFFF, "Sm electronic co.", "SM" }, { 0x0050C2, 0xCF1000, 0xCF1FFF, "TelGaAs, Inc.", "TELGAAS" }, { 0x0050C2, 0xCEE000, 0xCEEFFF, "EMBED-IT OG", "EMBED-IT-OG" }, { 0x0050C2, 0xCE6000, 0xCE6FFF, "APLICA TECHNOLOGIES", "APLICA-TECHNOLOGIES" }, { 0x0050C2, 0xCE7000, 0xCE7FFF, "Echola Systems", "ECHOLA" }, { 0x0050C2, 0xCE3000, 0xCE3FFF, "Industrial Automatics Design Bureau", "INDUSTRIAL-AUTOMATICS-DESIGN-BUREAU" }, { 0x0050C2, 0xCC3000, 0xCC3FFF, "viscount systems inc.", "VISCOUNT" }, { 0x0050C2, 0xCC6000, 0xCC6FFF, "KDT", "KDT" }, { 0x0050C2, 0xCC2000, 0xCC2FFF, "ConectaIP Tecnologia S.L.", "CONECTAIP-TECNOLOGIA-S-L" }, { 0x0050C2, 0xCBF000, 0xCBFFFF, "Megacon AB", "MEGACON-AB" }, { 0x0050C2, 0xCBC000, 0xCBCFFF, "CP ELETRONICA SA", "CP-ELETRONICA" }, { 0x0050C2, 0xCB9000, 0xCB9FFF, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0x0050C2, 0xCB8000, 0xCB8FFF, "Raith GmbH", "RAITH" }, { 0x0050C2, 0xCB5000, 0xCB5FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xC66000, 0xC66FFF, "KS Beschallungstechnik GmbH", "KS-BESCHALLUNGSTECHNIK" }, { 0x0050C2, 0xC60000, 0xC60FFF, "Integration Technologies Limited", "INTEGRATION-TECHNOLOGIES" }, { 0x0050C2, 0xC5C000, 0xC5CFFF, "WAVECOM ELEKTRONIK AG", "WAVECOM-ELEKTRONIK" }, { 0x0050C2, 0xC59000, 0xC59FFF, "SKD System AB", "SKD-SYSTEM-AB" }, { 0x0050C2, 0xC56000, 0xC56FFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0xCB2000, 0xCB2FFF, "Moravian Instruments", "MORAVIAN-INSTRUMENTS" }, { 0x0050C2, 0xCAF000, 0xCAFFFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xCAB000, 0xCABFFF, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x0050C2, 0xCA8000, 0xCA8FFF, "Systems With Intelligence Inc.", "WITH-INTELLIGENCE" }, { 0x0050C2, 0xCDA000, 0xCDAFFF, "taskit GmbH", "TASKIT" }, { 0x0050C2, 0xCDD000, 0xCDDFFF, "K.C.C. SHOKAI LIMITED", "K-C-C-SHOKAI" }, { 0x0050C2, 0xCD6000, 0xCD6FFF, "Arktan Systems", "ARKTAN" }, { 0x0050C2, 0xCD3000, 0xCD3FFF, "Covidence A/S", "COVIDENCE-A/S" }, { 0x0050C2, 0xCD0000, 0xCD0FFF, "MME Mueller Mikroelektronik", "MME-MUELLER-MIKROELEKTRONIK" }, { 0x0050C2, 0xCCC000, 0xCCCFFF, "Smartech-technology", "SMARTECH" }, { 0x0050C2, 0xCC9000, 0xCC9FFF, "Promess GmbH", "PROMESS" }, { 0x0050C2, 0xC52000, 0xC52FFF, "Smartfield, Inc.", "SMARTFIELD" }, { 0x0050C2, 0xC4F000, 0xC4FFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xC4C000, 0xC4CFFF, "Lancier Monitoring GmbH", "LANCIER-MONITORING" }, { 0x0050C2, 0xC48000, 0xC48FFF, "Cytek Media Systems, INC.", "CYTEK-MEDIA" }, { 0x0050C2, 0xC45000, 0xC45FFF, "Galvamat & Unican Technologies SA", "GALVAMAT-UNICAN-TECHNOLOGIES" }, { 0x0050C2, 0xC42000, 0xC42FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xC3E000, 0xC3EFFF, "Sysacom", "SYSACOM" }, { 0x0050C2, 0xC97000, 0xC97FFF, "MSTRONIC CO., LTD.", "MSTRONIC" }, { 0x0050C2, 0xC94000, 0xC94FFF, "ISIS ENGINEERING, S.A.", "ISIS-ENGINEERING" }, { 0x0050C2, 0xC91000, 0xC91FFF, "Media Technologies Ltd.", "MEDIA-TECHNOLOGIES" }, { 0x0050C2, 0xC8D000, 0xC8DFFF, "Emergency Message Controls LLC", "EMERGENCY-MESSAGE-CONTROLS-LLC" }, { 0x0050C2, 0xC8A000, 0xC8AFFF, "Automated Media Services, Inc.", "AUTOMATED-MEDIA-SERVICES" }, { 0x0050C2, 0xC87000, 0xC87FFF, "LECO Corporation", "LECO" }, { 0x0050C2, 0xC83000, 0xC83FFF, "Gronic Systems GmbH", "GRONIC" }, { 0x0050C2, 0xC7F000, 0xC7FFFF, "Kinects Solutions Inc", "KINECTS-SOLUTIONS" }, { 0x0050C2, 0xC7A000, 0xC7AFFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x0050C2, 0xC77000, 0xC77FFF, "AIM Co.,Ltd", "AIM" }, { 0x0050C2, 0xC74000, 0xC74FFF, "Wapice Ltd.", "WAPICE" }, { 0x0050C2, 0xC70000, 0xC70FFF, "Wilke Technology GmbH", "WILKE" }, { 0x0050C2, 0xC6A000, 0xC6AFFF, "ELECTRONICA KELD", "ELECTRONICA-KELD" }, { 0x0050C2, 0xC6D000, 0xC6DFFF, "Deansoft CO., Ltd.", "DEANSOFT" }, { 0x0050C2, 0xBBE000, 0xBBEFFF, "Onlinepizza Norden AB", "ONLINEPIZZA-NORDEN-AB" }, { 0x0050C2, 0xBB8000, 0xBB8FFF, "MoeTronix", "MOETRONIX" }, { 0x0050C2, 0xBE6000, 0xBE6FFF, "Docobo Ltd", "DOCOBO" }, { 0x0050C2, 0xBE2000, 0xBE2FFF, "Convergent Bioscience Ltd.", "CONVERGENT-BIOSCIENCE" }, { 0x0050C2, 0xBDF000, 0xBDFFFF, "Euro-Konsult Sp. z o.o.", "EURO-KONSULT-SP-Z-O-O" }, { 0x0050C2, 0xBDC000, 0xBDCFFF, "SS Systems LLC", "SS-LLC" }, { 0x0050C2, 0xC11000, 0xC11FFF, "ART Antriebs- und Regeltechnik GmbH", "ART-ANTRIEBS--UND-REGELTECHNIK" }, { 0x0050C2, 0xC0E000, 0xC0EFFF, "AVItronic GmbH", "AVITRONIC" }, { 0x0050C2, 0xC07000, 0xC07FFF, "CIO Informatique Industrielle", "CIO-INFORMATIQUE-INDUSTRIELLE" }, { 0x0050C2, 0xC04000, 0xC04FFF, "SoGEME", "SOGEME" }, { 0x0050C2, 0xBD2000, 0xBD2FFF, "Percello Ltd.", "PERCELLO" }, { 0x0050C2, 0xBC8000, 0xBC8FFF, "AGWTech Ltd", "AGWTECH" }, { 0x0050C2, 0xBFD000, 0xBFDFFF, "Ernemann Cine Tec GmbH", "ERNEMANN-CINE-TEC" }, { 0x0050C2, 0xC00000, 0xC00FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xBF6000, 0xBF6FFF, "NOLAM EMBEDDED SYSTEMS", "NOLAM-EMBEDDED" }, { 0x0050C2, 0xBF3000, 0xBF3FFF, "Wanco Inc.", "WANCO" }, { 0x0050C2, 0xBE9000, 0xBE9FFF, "ZUCCHETTI SPA", "ZUCCHETTI-SPA" }, { 0x0050C2, 0xBEC000, 0xBECFFF, "DRS Laruel Technologies", "DRS-LARUEL-TECHNOLOGIES" }, { 0x0050C2, 0xC24000, 0xC24FFF, "Qualnetics Corporation", "QUALNETICS" }, { 0x0050C2, 0xC19000, 0xC19FFF, "Ibercomp SA", "IBERCOMP" }, { 0x0050C2, 0xC14000, 0xC14FFF, "Spectronix Corporation", "SPECTRONIX" }, { 0x0050C2, 0xC3B000, 0xC3BFFF, "ELEKTRO-AUTOMATIK GmbH & Co. KG", "ELEKTRO-AUTOMATIK" }, { 0x0050C2, 0xC38000, 0xC38FFF, "Computer Automation Technology Inc", "AUTOMATION" }, { 0x0050C2, 0xC34000, 0xC34FFF, "Kyuhen", "KYUHEN" }, { 0x0050C2, 0xC35000, 0xC35FFF, "Insitu, Inc.", "INSITU" }, { 0x0050C2, 0xC2E000, 0xC2EFFF, "DISMUNTEL SAL", "DISMUNTEL-SAL" }, { 0x0050C2, 0xB14000, 0xB14FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xB0A000, 0xB0AFFF, "Indutherm Giesstechnologie GmbH", "INDUTHERM-GIESSTECHNOLOGIE" }, { 0x0050C2, 0xB1E000, 0xB1EFFF, "Abbott Medical Optics", "ABBOTT-MEDICAL-OPTICS" }, { 0x0050C2, 0xB32000, 0xB32FFF, "Byres Security Inc", "BYRES-SECURITY" }, { 0x0050C2, 0xB28000, 0xB28FFF, "Micromax Pty. Ltd.", "MICROMAX-PTY" }, { 0x0050C2, 0xB00000, 0xB00FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xAF6000, 0xAF6FFF, "Energid", "ENERGID" }, { 0x0050C2, 0xB46000, 0xB46FFF, "Mobileye", "MOBILEYE" }, { 0x0050C2, 0xB3C000, 0xB3CFFF, "JanasCard", "JANASCARD" }, { 0x0050C2, 0xA88000, 0xA88FFF, "S-SYS", "S-SYS" }, { 0x0050C2, 0xA83000, 0xA83FFF, "Techno Sobi Co. Ltd.", "TECHNO-SOBI" }, { 0x0050C2, 0xA80000, 0xA80FFF, "ARD SA", "ARD" }, { 0x0050C2, 0xA79000, 0xA79FFF, "Saintronic", "SAINTRONIC" }, { 0x0050C2, 0xA76000, 0xA76FFF, "Roesch & Walter Industrie-Elektronik GmbH", "ROESCH-WALTER-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0xA6F000, 0xA6FFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xA6C000, 0xA6CFFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x0050C2, 0xABB000, 0xABBFFF, "Volantic AB", "VOLANTIC-AB" }, { 0x0050C2, 0xAB1000, 0xAB1FFF, "Bitmanufaktur GmbH", "BITMANUFAKTUR" }, { 0x0050C2, 0xAE3000, 0xAE3FFF, "PSD", "PSD" }, { 0x0050C2, 0xAD9000, 0xAD9FFF, "elettrondata srl", "ELETTRONDATA-SRL" }, { 0x0050C2, 0xA9D000, 0xA9DFFF, "Joehl & Koeferli AG", "JOEHL-KOEFERLI" }, { 0x0050C2, 0xA97000, 0xA97FFF, "MICROSYSTEMES", "MICROSYSTEMES" }, { 0x0050C2, 0xA93000, 0xA93FFF, "SPX Dehydration & Filtration", "SPX-DEHYDRATION-FILTRATION" }, { 0x0050C2, 0xA8D000, 0xA8DFFF, "Frontier Electronic Systems Corp.", "FRONTIER" }, { 0x0050C2, 0xA65000, 0xA65FFF, "Mark-O-Print GmbH", "MARK-O-PRINT" }, { 0x0050C2, 0xA5B000, 0xA5BFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA5C000, 0xA5CFFF, "JSC Component-ASU", "JSC-COMPONENT-ASU" }, { 0x0050C2, 0xA58000, 0xA58FFF, "EPL", "EPL" }, { 0x0050C2, 0xAA7000, 0xAA7FFF, "Endeas Oy", "ENDEAS-OY" }, { 0x0050C2, 0xACF000, 0xACFFFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0xAC5000, 0xAC5FFF, "E-Motion System, Inc.", "E-MOTION-SYSTEM" }, { 0x0050C2, 0x9F5000, 0x9F5FFF, "Commex Technologies", "COMMEX-TECHNOLOGIES" }, { 0x0050C2, 0x9F2000, 0x9F2FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x9EF000, 0x9EFFFF, "WoKa-Elektronik GmbH", "WOKA-ELEKTRONIK" }, { 0x0050C2, 0x9EB000, 0x9EBFFF, "AFORE Solutions Inc.", "AFORE-SOLUTIONS" }, { 0x0050C2, 0x9E8000, 0x9E8FFF, "Hammock Corporation", "HAMMOCK" }, { 0x0050C2, 0x9E5000, 0x9E5FFF, "Halliburton Far East Pte Ltd", "HALLIBURTON-FAR-EAST-PTE" }, { 0x0050C2, 0x9AD000, 0x9ADFFF, "Chronos Technology Ltd.", "CHRONOS" }, { 0x0050C2, 0x9AA000, 0x9AAFFF, "TEKO TELECOM SpA", "TEKO-TELECOM-SPA" }, { 0x0050C2, 0x9A6000, 0x9A6FFF, "Metodo2", "METODO2" }, { 0x0050C2, 0x9A0000, 0x9A0FFF, "Trs Systems, Inc.", "TRS" }, { 0x0050C2, 0xA0C000, 0xA0CFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA0D000, 0xA0DFFF, "CHARLYROBOT", "CHARLYROBOT" }, { 0x0050C2, 0xA09000, 0xA09FFF, "Innovative American Technology", "INNOVATIVE-AMERICAN" }, { 0x0050C2, 0xA03000, 0xA03FFF, "EEG Enterprises Inc", "EEG-ENTERPRISES" }, { 0x0050C2, 0x9FF000, 0x9FFFFF, "Humphrey Products", "HUMPHREY-PRODUCTS" }, { 0x0050C2, 0x9FC000, 0x9FCFFF, "ECTEC INC.", "ECTEC" }, { 0x0050C2, 0xA51000, 0xA51FFF, "Y-products co.ltd.", "Y-PRODUCTS" }, { 0x0050C2, 0xA52000, 0xA52FFF, "The VON Corporation", "THE-VON" }, { 0x0050C2, 0xA4E000, 0xA4EFFF, "Conduant Corporation", "CONDUANT" }, { 0x0050C2, 0xA44000, 0xA44FFF, "TORC Technologies", "TORC-TECHNOLOGIES" }, { 0x0050C2, 0xA48000, 0xA48FFF, "Thales Optronics Limited", "THALES-OPTRONICS" }, { 0x0050C2, 0xA3E000, 0xA3EFFF, "DUEVI SNC DI MORA E SANTESE", "DUEVI-SNC-DI-MORA-E-SANTESE" }, { 0x0050C2, 0xA3A000, 0xA3AFFF, "Telecor Inc.", "TELECOR" }, { 0x0050C2, 0xA1D000, 0xA1DFFF, "SAMH Engineering Services", "SAMH-ENGINEERING-SERVICES" }, { 0x0050C2, 0xA1A000, 0xA1AFFF, "DDL", "DDL" }, { 0x0050C2, 0xA17000, 0xA17FFF, "Winners Satellite Electronics Corp.", "WINNERS-SATELLITE-ELECTRONICS" }, { 0x0050C2, 0xA16000, 0xA16FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xA13000, 0xA13FFF, "Talyst, Inc.", "TALYST" }, { 0x0050C2, 0xA10000, 0xA10FFF, "Essential Design & Integration P/L", "ESSENTIAL-DESIGN-INTEGRATION-P/L" }, { 0x0050C2, 0x9C2000, 0x9C2FFF, "Team Enginers", "TEAM-ENGINERS" }, { 0x0050C2, 0x9BE000, 0x9BEFFF, "Xad Communications Ltd", "XAD-COMMUNICATION" }, { 0x0050C2, 0x9BA000, 0x9BAFFF, "Connor-Winfield", "CONNOR-WINFIELD" }, { 0x0050C2, 0x9B7000, 0x9B7FFF, "St. Michael Strategies", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0x9B4000, 0x9B4FFF, "EUKREA ELECTROMATIQUE SARL", "EUKREA-ELECTROMATIQUE-SARL" }, { 0x0050C2, 0x9B0000, 0x9B0FFF, "Ebru GmbH", "EBRU" }, { 0x0050C2, 0x9E1000, 0x9E1FFF, "Enreduce Energy Control AB", "ENREDUCE-ENERGY-CONTROL-AB" }, { 0x0050C2, 0x9DE000, 0x9DEFFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x9DB000, 0x9DBFFF, "Walter Grotkasten", "WALTER-GROTKASTEN" }, { 0x0050C2, 0x9D7000, 0x9D7FFF, "Melex Inc.", "MELEX" }, { 0x0050C2, 0x9D4000, 0x9D4FFF, "FIRST", "FIRST" }, { 0x0050C2, 0xA34000, 0xA34FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0xA30000, 0xA30FFF, "D-TA Systems", "D-TA" }, { 0x0050C2, 0xA2A000, 0xA2AFFF, "Custom Control Concepts", "CUSTOM-CONTROL-CONCEPTS" }, { 0x0050C2, 0xA25000, 0xA25FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xA21000, 0xA21FFF, "ISAC SRL", "ISAC-SRL" }, { 0x0050C2, 0xA20000, 0xA20FFF, "Quorum Technologies Ltd", "QUORUM-TECHNOLOGIES" }, { 0x0050C2, 0x9D1000, 0x9D1FFF, "Bladelius Design Group AB", "BLADELIUS-DESIGN-GROUP-AB" }, { 0x0050C2, 0x9CD000, 0x9CDFFF, "Uwe Schneider GmbH", "UWE-SCHNEIDER" }, { 0x0050C2, 0x9CA000, 0x9CAFFF, "ESAB-ATAS GmbH", "ESAB-ATAS" }, { 0x0050C2, 0x9C7000, 0x9C7FFF, "Kumera Drives Oy", "KUMERA-DRIVES-OY" }, { 0x0050C2, 0x99C000, 0x99CFFF, "CaTs3 Limited", "CATS3" }, { 0x0050C2, 0x999000, 0x999FFF, "Cambustion Ltd", "CAMBUSTION" }, { 0x0050C2, 0x996000, 0x996FFF, "Commercial Timesharing Inc.", "COMMERCIAL-TIMESHARING" }, { 0x0050C2, 0x993000, 0x993FFF, "UNETCONVERGENCE CO., LTD", "UNETCONVERGENCE" }, { 0x0050C2, 0x992000, 0x992FFF, "IDT Sound Processing Corporation", "IDT-SOUND-PROCESSING" }, { 0x0050C2, 0x98F000, 0x98FFFF, "BELIK S.P.R.L.", "BELIK-S-P-R-L" }, { 0x0050C2, 0x98C000, 0x98CFFF, "MGM-Devices Oy", "MGM-DEVICES-OY" }, { 0x0050C2, 0x93F000, 0x93FFFF, "TSB Solutions Inc.", "TSB-SOLUTIONS" }, { 0x0050C2, 0x93C000, 0x93CFFF, "FractureCode Corporation", "FRACTURECODE" }, { 0x0050C2, 0x938000, 0x938FFF, "Postec Data Systems Ltd", "POSTEC-DATA" }, { 0x0050C2, 0x935000, 0x935FFF, "Image Video", "IMAGE-VIDEO" }, { 0x0050C2, 0x932000, 0x932FFF, "SMAVIS Inc.", "SMAVIS" }, { 0x0050C2, 0x92E000, 0x92EFFF, "Goanna Technologies Pty Ltd", "GOANNA-TECHNOLOGIES-PTY" }, { 0x0050C2, 0x92B000, 0x92BFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x924000, 0x924FFF, "Link Electric & Safety Control Co.", "LINK-ELECTRIC-SAFETY-CONTROL" }, { 0x0050C2, 0x928000, 0x928FFF, "Cinetix GmbH", "CINETIX" }, { 0x0050C2, 0x921000, 0x921FFF, "iQue RFID Technologies BV", "IQUE-RFID-TECHNOLOGIES" }, { 0x0050C2, 0x940000, 0x940FFF, "Phitek Systems Ltd.", "PHITEK" }, { 0x0050C2, 0x945000, 0x945FFF, "Ex-i Flow Measurement Ltd.", "EX-I-FLOW-MEASUREMENT" }, { 0x0050C2, 0x942000, 0x942FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x969000, 0x969FFF, "Gehrke Kommunikationssysteme GmbH", "GEHRKE-KOMMUNIKATIONSSYSTEME" }, { 0x0050C2, 0x966000, 0x966FFF, "PCM Industries", "PCM-INDUSTRIES" }, { 0x0050C2, 0x989000, 0x989FFF, "Psigenics Corporation", "PSIGENICS" }, { 0x0050C2, 0x988000, 0x988FFF, "Pantel International", "PANTEL" }, { 0x0050C2, 0x91E000, 0x91EFFF, "Automation Tec", "AUTOMATION-TEC" }, { 0x0050C2, 0x917000, 0x917FFF, "CIRTEM", "CIRTEM" }, { 0x0050C2, 0x91A000, 0x91AFFF, "Xtone Networks", "XTONE-NETWORKS" }, { 0x0050C2, 0x914000, 0x914FFF, "IO-Connect", "IO-CONNECT" }, { 0x0050C2, 0x910000, 0x910FFF, "Autotank AB", "AUTOTANK-AB" }, { 0x0050C2, 0x97A000, 0x97AFFF, "KST Technology Co., Ltd", "KST" }, { 0x0050C2, 0x973000, 0x973FFF, "Systèmes Pran", "SYSTèMES-PRAN" }, { 0x0050C2, 0x970000, 0x970FFF, "Tsuji Electronics Co.,Ltd", "TSUJI-ELECTRONICS" }, { 0x0050C2, 0x8A9000, 0x8A9FFF, "Intelligent Security Systems", "INTELLIGENT-SECURITY" }, { 0x0050C2, 0x89F000, 0x89FFFF, "Datalink Technologies Gateways Inc.", "DATALINK-TECHNOLOGIES-GATEWAYS" }, { 0x0050C2, 0x89B000, 0x89BFFF, "Sensata Technologies, Inc.", "SENSATA-TECHNOLOGIES" }, { 0x0050C2, 0x90D000, 0x90DFFF, "EVK DI Kerschhaggl GmbH", "EVK-DI-KERSCHHAGGL" }, { 0x0050C2, 0x90A000, 0x90AFFF, "Board Level Limited", "BOARD-LEVEL" }, { 0x0050C2, 0x906000, 0x906FFF, "Gidel", "GIDEL" }, { 0x0050C2, 0x8E5000, 0x8E5FFF, "Berthel GmbH", "BERTHEL" }, { 0x0050C2, 0x8DB000, 0x8DBFFF, "DCOM Network Technology (Pty) Ltd", "DCOM-NETWORK-PTY" }, { 0x0050C2, 0x878000, 0x878FFF, "Acoustic Research Laboratories Pty Ltd", "ACOUSTIC-RESEARCH-LABORATORIES-PTY" }, { 0x0050C2, 0x86E000, 0x86EFFF, "HANYANG ELECTRIC CP., LTD", "HANYANG-ELECTRIC-CP" }, { 0x0050C2, 0x8FE000, 0x8FEFFF, "Cross Country Systems AB", "CROSS-COUNTRY-AB" }, { 0x0050C2, 0x8FB000, 0x8FBFFF, "Alfred Kuhse GmbH", "ALFRED-KUHSE" }, { 0x0050C2, 0x894000, 0x894FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x88C000, 0x88CFFF, "Z-App Systems", "Z-APP" }, { 0x0050C2, 0x882000, 0x882FFF, "WARECUBE,INC.", "WARECUBE" }, { 0x0050C2, 0x8BD000, 0x8BDFFF, "Matrix Switch Corporation", "MATRIX-SWITCH" }, { 0x0050C2, 0x8B3000, 0x8B3FFF, "VTQ Videtronik GmbH", "VTQ-VIDETRONIK" }, { 0x0050C2, 0x8D1000, 0x8D1FFF, "Bachmann Monitoring GmbH", "BACHMANN-MONITORING" }, { 0x0050C2, 0x8EF000, 0x8EFFFF, "Technologies Sensio Inc", "TECHNOLOGIES-SENSIO" }, { 0x0050C2, 0x846000, 0x846FFF, "ESP-Planning Co.", "ESP-PLANNING" }, { 0x0050C2, 0x843000, 0x843FFF, "Xtensor Systems Inc.", "XTENSOR" }, { 0x0050C2, 0x83F000, 0x83FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x83C000, 0x83CFFF, "hema electronic GmbH", "HEMA" }, { 0x0050C2, 0x831000, 0x831FFF, "St Jude Medical, Inc.", "ST-JUDE-MEDICAL" }, { 0x0050C2, 0x853000, 0x853FFF, "Ettus Research LLC", "ETTUS-RESEARCH-LLC" }, { 0x0050C2, 0x864000, 0x864FFF, "ATG Automatisierungstechnik GERA GmbH", "ATG-AUTOMATISIERUNGSTECHNIK-GERA" }, { 0x0050C2, 0x85D000, 0x85DFFF, "Ing. Knauseder Mechatronik GmbH", "ING-KNAUSEDER-MECHATRONIK" }, { 0x0050C2, 0x7EA000, 0x7EAFFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x7E0000, 0x7E0FFF, "C&D Technologies, Inc", "C-D-TECHNOLOGIES" }, { 0x0050C2, 0x7FE000, 0x7FEFFF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0050C2, 0x7F7000, 0x7F7FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x81F000, 0x81FFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x81C000, 0x81CFFF, "Telcom", "TELCOM" }, { 0x0050C2, 0x815000, 0x815FFF, "microC Design SRL", "MICROC-DESIGN-SRL" }, { 0x0050C2, 0x850000, 0x850FFF, "K.K. Rocky", "K-K-ROCKY" }, { 0x0050C2, 0x84D000, 0x84DFFF, "BMTI", "BMTI" }, { 0x0050C2, 0x849000, 0x849FFF, "Design Analysis Associates, Inc.", "DESIGN-ANALYSIS-ASSOCIATES" }, { 0x0050C2, 0x812000, 0x812FFF, "Femto SA", "FEMTO" }, { 0x0050C2, 0x80B000, 0x80BFFF, "Open Video, Inc.", "OPEN-VIDEO" }, { 0x0050C2, 0x808000, 0x808FFF, "ITB CompuPhase", "ITB-COMPUPHASE" }, { 0x0050C2, 0x801000, 0x801FFF, "JANUS srl", "JANUS-SRL" }, { 0x0050C2, 0x829000, 0x829FFF, "Intellectronika", "INTELLECTRONIKA" }, { 0x0050C2, 0x826000, 0x826FFF, "HEWI Heinrich Wilke GmbH", "HEWI-HEINRICH-WILKE" }, { 0x0050C2, 0x757000, 0x757FFF, "E S P Technologies Ltd", "E-S-P-TECHNOLOGIES" }, { 0x0050C2, 0x754000, 0x754FFF, "Abeo Corporation", "ABEO" }, { 0x0050C2, 0x7A6000, 0x7A6FFF, "ASIANA IDT", "ASIANA-IDT" }, { 0x0050C2, 0x79F000, 0x79FFFF, "ZAO NPC", "ZAO-NPC" }, { 0x0050C2, 0x79C000, 0x79CFFF, "Vital Systems Inc", "VITAL" }, { 0x0050C2, 0x799000, 0x799FFF, "AAVD", "AAVD" }, { 0x0050C2, 0x769000, 0x769FFF, "BES GmbH", "BES" }, { 0x0050C2, 0x761000, 0x761FFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x0050C2, 0x75E000, 0x75EFFF, "Sky-Skan, Incorporated", "SKY-SKAN-INCORPORATED" }, { 0x0050C2, 0x7CF000, 0x7CFFFF, "Emitech Corporation", "EMITECH" }, { 0x0050C2, 0x7CC000, 0x7CCFFF, "SWECO JAPS AB", "SWECO-JAPS-AB" }, { 0x0050C2, 0x7CB000, 0x7CBFFF, "ViewPlus Technologies, Inc.", "VIEWPLUS-TECHNOLOGIES" }, { 0x0050C2, 0x7C7000, 0x7C7FFF, "Pyrosequencing AB", "PYROSEQUENCING-AB" }, { 0x0050C2, 0x7C4000, 0x7C4FFF, "MoBaCon", "MOBACON" }, { 0x0050C2, 0x7C1000, 0x7C1FFF, "Primary Integration Encorp LLC", "PRIMARY-INTEGRATION-ENCORP-LLC" }, { 0x0050C2, 0x7BD000, 0x7BDFFF, "PROMATE ELECTRONIC CO.LTD", "PROMATE" }, { 0x0050C2, 0x7BA000, 0x7BAFFF, "Infodev Electronic Designers Intl.", "INFODEV-DESIGNERS-INTL" }, { 0x0050C2, 0x7B7000, 0x7B7FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x7B3000, 0x7B3FFF, "Elmec, Inc.", "ELMEC" }, { 0x0050C2, 0x7B0000, 0x7B0FFF, "IMP Telekom", "IMP-TELEKOM" }, { 0x0050C2, 0x7AD000, 0x7ADFFF, "Turun Turvatekniikka Oy", "TURUN-TURVATEKNIIKKA-OY" }, { 0x0050C2, 0x795000, 0x795FFF, "Ameli Spa", "AMELI-SPA" }, { 0x0050C2, 0x792000, 0x792FFF, "SMARTRO Co.,Ltd.", "SMARTRO" }, { 0x0050C2, 0x78F000, 0x78FFFF, "ELMAR electronic", "ELMAR" }, { 0x0050C2, 0x78B000, 0x78BFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x788000, 0x788FFF, "HOSA TECHNOLOGY, INC.", "HOSA" }, { 0x0050C2, 0x785000, 0x785FFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0x774000, 0x774FFF, "GeoSIG Ltd.", "GEOSIG" }, { 0x0050C2, 0x6DD000, 0x6DDFFF, "Zmicro Systems Inc", "ZMICRO" }, { 0x0050C2, 0x6D3000, 0x6D3FFF, "DigiSensory technologies Pty Ltd", "DIGISENSORY-TECHNOLOGIES-PTY" }, { 0x0050C2, 0x70E000, 0x70EFFF, "AUDICO SYSTEMS OY", "AUDICO-OY" }, { 0x0050C2, 0x70A000, 0x70AFFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x6F1000, 0x6F1FFF, "ITS Telecom", "ITS-TELECOM" }, { 0x0050C2, 0x722000, 0x722FFF, "Centric TSolve BV", "CENTRIC-TSOLVE" }, { 0x0050C2, 0x718000, 0x718FFF, "illunis LLC", "ILLUNIS-LLC" }, { 0x0050C2, 0x74D000, 0x74DFFF, "Beceem Communications, Inc.", "BECEEM-COMMUNICATION" }, { 0x0050C2, 0x74A000, 0x74AFFF, "MONITOR ELECTRONICS LTD", "MONITOR-ELECTRONICS" }, { 0x0050C2, 0x72F000, 0x72FFFF, "Priority Electronics Ltd", "PRIORITY-ELECTRONICS" }, { 0x0050C2, 0x72C000, 0x72CFFF, "Richard Griessbach Feinmechanik GmbH", "RICHARD-GRIESSBACH-FEINMECHANIK" }, { 0x0050C2, 0x725000, 0x725FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x6C9000, 0x6C9FFF, "NETAMI", "NETAMI" }, { 0x0050C2, 0x6BF000, 0x6BFFFF, "Optoplan as", "OPTOPLAN-AS" }, { 0x0050C2, 0x743000, 0x743FFF, "Elektro-Top 3000 Ltd.", "ELEKTRO-TOP-3000" }, { 0x0050C2, 0x740000, 0x740FFF, "McQuay China", "MCQUAY-CHINA" }, { 0x0050C2, 0x739000, 0x739FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x736000, 0x736FFF, "Nika Ltd", "NIKA" }, { 0x0050C2, 0x6E7000, 0x6E7FFF, "Axis Network Technology", "AXIS-NETWORK" }, { 0x0050C2, 0x621000, 0x621FFF, "Version-T", "VERSION-T" }, { 0x0050C2, 0x61B000, 0x61BFFF, "NCI Technologies Inc.", "NCI-TECHNOLOGIES" }, { 0x0050C2, 0x61E000, 0x61EFFF, "LESTER ELECTRONICS LTD", "LESTER-ELECTRONICS" }, { 0x0050C2, 0x617000, 0x617FFF, "NARINET, INC.", "NARINET" }, { 0x0050C2, 0x614000, 0x614FFF, "Proserv", "PROSERV" }, { 0x0050C2, 0x635000, 0x635FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x632000, 0x632FFF, "RoseTechnology A/S", "ROSETECHNOLOGY-A/S" }, { 0x0050C2, 0x62F000, 0x62FFFF, "QES", "QES" }, { 0x0050C2, 0x628000, 0x628FFF, "DARE Development", "DARE-DEVELOPMENT" }, { 0x0050C2, 0x62B000, 0x62BFFF, "First Control Systems AB", "FIRST-CONTROL-AB" }, { 0x0050C2, 0x625000, 0x625FFF, "EBNeuro SpA", "EBNEURO-SPA" }, { 0x0050C2, 0x684000, 0x684FFF, "REASON Tecnologia S.A.", "REASON-TECNOLOGIA" }, { 0x0050C2, 0x67A000, 0x67AFFF, "CC Systems AB", "CC-AB" }, { 0x0050C2, 0x6AB000, 0x6ABFFF, "Softwareentwicklung", "SOFTWAREENTWICKLUNG" }, { 0x0050C2, 0x6A0000, 0x6A0FFF, "GFP Lab S.r.l.", "GFP-LAB-S-R-L" }, { 0x0050C2, 0x698000, 0x698FFF, "Navtech Radar Ltd", "NAVTECH-RADAR" }, { 0x0050C2, 0x6B5000, 0x6B5FFF, "TRIUMF", "TRIUMF" }, { 0x0050C2, 0x65C000, 0x65CFFF, "VTZ d.o.o.", "VTZ-D-O-O" }, { 0x0050C2, 0x652000, 0x652FFF, "Wideco Sweden AB", "WIDECO-SWEDEN-AB" }, { 0x0050C2, 0x648000, 0x648FFF, "Fidelity Comtech, Inc.", "FIDELITY-COMTECH" }, { 0x0050C2, 0x63D000, 0x63DFFF, "IDERs Inc", "IDERS" }, { 0x0050C2, 0x639000, 0x639FFF, "Qstreams Networks Inc.", "QSTREAMS-NETWORKS" }, { 0x0050C2, 0x670000, 0x670FFF, "Naim Audio", "NAIM-AUDIO" }, { 0x0050C2, 0x666000, 0x666FFF, "Xworks NZ Limited", "XWORKS-NZ" }, { 0x0050C2, 0x68E000, 0x68EFFF, "SELCO", "SELCO" }, { 0x0050C2, 0x5AE000, 0x5AEFFF, "CPS EUROPE B.V.", "CPS-EUROPE" }, { 0x0050C2, 0x5A4000, 0x5A4FFF, "Federal State Unitary Enterprise Experimental Factory for Sc", "FEDERAL-STATE-UNITARY-EXPERIMENTAL-FACTORY-FOR-SC" }, { 0x0050C2, 0x5CF000, 0x5CFFFF, "Innomed Medical Inc", "INNOMED-MEDICAL" }, { 0x0050C2, 0x5C8000, 0x5C8FFF, "Georgia Tech Research Institute", "GEORGIA-TECH-RESEARCH-INSTITUTE" }, { 0x0050C2, 0x5C9000, 0x5C9FFF, "Shenzhen Quanlong Technique Co.Ltd", "SHENZHEN-QUANLONG-TECHNIQUE" }, { 0x0050C2, 0x604000, 0x604FFF, "HCJB Global", "HCJB-GLOBAL" }, { 0x0050C2, 0x600000, 0x600FFF, "Protec Fire Detection plc", "PROTEC-FIRE-DETECTION-PLC" }, { 0x0050C2, 0x5FD000, 0x5FDFFF, "MEG Electronic Inc.", "MEG" }, { 0x0050C2, 0x5FA000, 0x5FAFFF, "LEA d.o.o.", "LEA-D-O-O" }, { 0x0050C2, 0x5F9000, 0x5F9FFF, "ROTHARY Solutions AG", "ROTHARY-SOLUTIONS" }, { 0x0050C2, 0x5F6000, 0x5F6FFF, "CAMBRIDGE CONSULTANTS LTD", "CAMBRIDGE-CONSULTANTS" }, { 0x0050C2, 0x611000, 0x611FFF, "Brookhaven National Laboratory", "BROOKHAVEN-NATIONAL-LABORATORY" }, { 0x0050C2, 0x60E000, 0x60EFFF, "Automation and Control Technology, Inc.", "AUTOMATION-AND-CONTROL" }, { 0x0050C2, 0x60A000, 0x60AFFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x607000, 0x607FFF, "Telecom FM", "TELECOM-FM" }, { 0x0050C2, 0x603000, 0x603FFF, "Cerus Corp", "CERUS" }, { 0x0050C2, 0x5DF000, 0x5DFFFF, "Gnutek Ltd.", "GNUTEK" }, { 0x0050C2, 0x5DA000, 0x5DAFFF, "TONNA ELECTRONIQUE", "TONNA-ELECTRONIQUE" }, { 0x0050C2, 0x5D6000, 0x5D6FFF, "BioAccess Tecnologia em Biometria Ltda.", "BIOACCESS-TECNOLOGIA-EM-BIOMETRIA-LTDA" }, { 0x0050C2, 0x5D3000, 0x5D3FFF, "Wexiodisk AB", "WEXIODISK-AB" }, { 0x0050C2, 0x5D2000, 0x5D2FFF, "DA-Design Oy", "DA-DESIGN-OY" }, { 0x0050C2, 0x59D000, 0x59DFFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x593000, 0x593FFF, "Broadlight", "BROADLIGHT" }, { 0x0050C2, 0x5C5000, 0x5C5FFF, "Radiant Imaging, Inc.", "RADIANT-IMAGING" }, { 0x0050C2, 0x5BE000, 0x5BEFFF, "Card Access Services Pty Ltd", "CARD-ACCESS-SERVICES-PTY" }, { 0x0050C2, 0x5BF000, 0x5BFFFF, "Techimp Systems S.r.l.", "TECHIMP-S-R-L" }, { 0x0050C2, 0x5BB000, 0x5BBFFF, "UNIC TECHNOLOGIES INC", "UNIC-TECHNOLOGIES" }, { 0x0050C2, 0x5B8000, 0x5B8FFF, "WestfaliaSurge GmbH", "WESTFALIASURGE" }, { 0x0050C2, 0x5B5000, 0x5B5FFF, "RAFAEL", "RAFAEL" }, { 0x0050C2, 0x5B1000, 0x5B1FFF, "Rosta Ltd", "ROSTA" }, { 0x0050C2, 0x5F0000, 0x5F0FFF, "DIAS Infrared GmbH", "DIAS-INFRARED" }, { 0x0050C2, 0x5EC000, 0x5ECFFF, "ASiS Technologies Pte Ltd", "ASIS-TECHNOLOGIES-PTE" }, { 0x0050C2, 0x5E9000, 0x5E9FFF, "Micro Technology Services Inc.", "MICRO-SERVICES" }, { 0x0050C2, 0x5E6000, 0x5E6FFF, "Musatel", "MUSATEL" }, { 0x0050C2, 0x5F3000, 0x5F3FFF, "POSNET Polska S.A.", "POSNET-POLSKA" }, { 0x0050C2, 0x50D000, 0x50DFFF, "Clearsonics Pty. Ltd.", "CLEARSONICS-PTY" }, { 0x0050C2, 0x50A000, 0x50AFFF, "Monitor Business Machines Ltd", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x500000, 0x500FFF, "Orenco Systems, Inc.", "ORENCO" }, { 0x0050C2, 0x503000, 0x503FFF, "RESPIRONICS INC.", "RESPIRONICS" }, { 0x0050C2, 0x58A000, 0x58AFFF, "Dixell S.p.a.", "DIXELL-S-P-A" }, { 0x0050C2, 0x57F000, 0x57FFFF, "Orderite, Inc.", "ORDERITE" }, { 0x0050C2, 0x580000, 0x580FFF, "Buyang Electronics Industrial co.,Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x574000, 0x574FFF, "Ingeniería Almudí S.L.", "INGENIERíA-ALMUDí-S-L" }, { 0x0050C2, 0x566000, 0x566FFF, "ubinetsys.co..ltd", "UBINETSYS" }, { 0x0050C2, 0x562000, 0x562FFF, "C21 Systems Limited", "C21" }, { 0x0050C2, 0x524000, 0x524FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x0050C2, 0x570000, 0x570FFF, "Ellex Medical Pty Ltd", "ELLEX-MEDICAL-PTY" }, { 0x0050C2, 0x56C000, 0x56CFFF, "Targeted Technologies, LLC", "TARGETED-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x51A000, 0x51AFFF, "SpeasTech, Inc.", "SPEASTECH" }, { 0x0050C2, 0x4E2000, 0x4E2FFF, "Applied Research Laboratories: UT", "APPLIED-RESEARCH-LABORATORIES:-UT" }, { 0x0050C2, 0x4DB000, 0x4DBFFF, "Alfing Montagetechnik GmbH", "ALFING-MONTAGETECHNIK" }, { 0x0050C2, 0x4D8000, 0x4D8FFF, "Avantry Ltd.", "AVANTRY" }, { 0x0050C2, 0x4EF000, 0x4EFFFF, "Creative Retail Entertainment", "CREATIVE-RETAIL-ENTERTAINMENT" }, { 0x0050C2, 0x4EC000, 0x4ECFFF, "Thales Defence and Security Systems GmbH", "THALES-DEFENCE-AND-SECURITY" }, { 0x0050C2, 0x4E5000, 0x4E5FFF, "Sedo Systems Ltd", "SEDO" }, { 0x0050C2, 0x4D1000, 0x4D1FFF, "SLICAN sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x0050C2, 0x4CE000, 0x4CEFFF, "Open Date Equipment Limited", "OPEN-DATE-EQUIPMENT" }, { 0x0050C2, 0x4C7000, 0x4C7FFF, "Transbit Sp.z o.o.", "TRANSBIT-SP-Z-O-O" }, { 0x0050C2, 0x4C4000, 0x4C4FFF, "Black Diamond Video, Inc.", "BLACK-DIAMOND-VIDEO" }, { 0x0050C2, 0x4BD000, 0x4BDFFF, "Argon ST", "ARGON-ST" }, { 0x0050C2, 0x4BA000, 0x4BAFFF, "Mistletoe Technologies", "MISTLETOE-TECHNOLOGIES" }, { 0x0050C2, 0x4B3000, 0x4B3FFF, "ANSA Corporation", "ANSA" }, { 0x0050C2, 0x4AF000, 0x4AFFFF, "Orbis Oy", "ORBIS-OY" }, { 0x0050C2, 0x4AA000, 0x4AAFFF, "HEINEN ELEKTRONIK GmbH", "HEINEN-ELEKTRONIK" }, { 0x0050C2, 0x4A0000, 0x4A0FFF, "Advanced technologies & Engineering (pty) Ltd", "ADVANCED-TECHNOLOGIES-ENGINEERING-PTY" }, { 0x0050C2, 0x484000, 0x484FFF, "Kooltech LLC", "KOOLTECH-LLC" }, { 0x0050C2, 0x4F9000, 0x4F9FFF, "RTDS Technologies Inc.", "RTDS-TECHNOLOGIES" }, { 0x0050C2, 0x4F6000, 0x4F6FFF, "REAL D", "REAL-D" }, { 0x0050C2, 0x498000, 0x498FFF, "Quartet Technology, Inc.", "QUARTET" }, { 0x0050C2, 0x48E000, 0x48EFFF, "Teledyne Tekmar", "TELEDYNE-TEKMAR" }, { 0x0050C2, 0x41E000, 0x41EFFF, "Videotek Sistemas Eletronicos Ltda.", "VIDEOTEK-SISTEMAS-ELETRONICOS-LTDA" }, { 0x0050C2, 0x414000, 0x414FFF, "Talleres de Escoriaza SA", "TALLERES-DE-ESCORIAZA" }, { 0x0050C2, 0x41B000, 0x41BFFF, "LogiM GmbH Software und Entwicklung", "LOGIM-SOFTWARE-UND-ENTWICKLUNG" }, { 0x0050C2, 0x417000, 0x417FFF, "QT systems ab", "QT-AB" }, { 0x0050C2, 0x418000, 0x418FFF, "Planea Oy", "PLANEA-OY" }, { 0x0050C2, 0x411000, 0x411FFF, "Multimessage Systems Ltd.", "MULTIMESSAGE" }, { 0x0050C2, 0x40D000, 0x40DFFF, "Afonics Fibreoptics Ltd", "AFONICS-FIBREOPTICS" }, { 0x0050C2, 0x40E000, 0x40EFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x40A000, 0x40AFFF, "Contec Steuerungstechnik & Automation GmbH", "CONTEC-STEUERUNGSTECHNIK-AUTOMATION" }, { 0x0050C2, 0x463000, 0x463FFF, "Codem Systems, Inc.", "CODEM" }, { 0x0050C2, 0x460000, 0x460FFF, "Vitelnet", "VITELNET" }, { 0x0050C2, 0x45C000, 0x45CFFF, "Deister Electronic GmbH", "DEISTER" }, { 0x0050C2, 0x439000, 0x439FFF, "Peleton Photonic Systems", "PELETON-PHOTONIC" }, { 0x0050C2, 0x435000, 0x435FFF, "ADATEL TELECOMUNICACIONES S.A.", "ADATEL-TELECOMUNICACIONES" }, { 0x0050C2, 0x432000, 0x432FFF, "Topway Industries Ltd.", "TOPWAY-INDUSTRIES" }, { 0x0050C2, 0x456000, 0x456FFF, "DRDC Valcartier", "DRDC-VALCARTIER" }, { 0x0050C2, 0x453000, 0x453FFF, "Erhardt + Leimer GmbH", "ERHARDT-+-LEIMER" }, { 0x0050C2, 0x452000, 0x452FFF, "SCAME SISTEMI s.r.l.", "SCAME-SISTEMI-S-R-L" }, { 0x0050C2, 0x44F000, 0x44FFFF, "kippdata GmbH", "KIPPDATA" }, { 0x0050C2, 0x407000, 0x407FFF, "AIE Etudes", "AIE-ETUDES" }, { 0x0050C2, 0x404000, 0x404FFF, "NanShanBridge Co.Ltd", "NANSHANBRIDGE" }, { 0x0050C2, 0x3FD000, 0x3FDFFF, "HARTMANN software GbR", "HARTMANN-SOFTWARE-GBR" }, { 0x0050C2, 0x400000, 0x400FFF, "SmartMotor AS", "SMARTMOTOR-AS" }, { 0x0050C2, 0x3FA000, 0x3FAFFF, "Tumsan", "TUMSAN" }, { 0x0050C2, 0x3F3000, 0x3F3FFF, "Hytec Geraetebau GmbH", "HYTEC-GERAETEBAU" }, { 0x0050C2, 0x3F6000, 0x3F6FFF, "dAFTdATA Limited", "DAFTDATA" }, { 0x0050C2, 0x446000, 0x446FFF, "Micro Technic A-S", "MICRO-TECHNIC-A-S" }, { 0x0050C2, 0x443000, 0x443FFF, "Pickering Laboratories", "PICKERING-LABORATORIES" }, { 0x0050C2, 0x43F000, 0x43FFFF, "ARVOO Imaging Products BV", "ARVOO-IMAGING-PRODUCTS" }, { 0x0050C2, 0x43C000, 0x43CFFF, "Ducommun LaBarge Technologies, Inc", "DUCOMMUN-LABARGE-TECHNOLOGIES" }, { 0x0050C2, 0x3F0000, 0x3F0FFF, "megatec electronic GmbH", "MEGATEC" }, { 0x0050C2, 0x3EC000, 0x3ECFFF, "Teneros", "TENEROS" }, { 0x0050C2, 0x3E4000, 0x3E4FFF, "CUE, a.s.", "CUE-A-S" }, { 0x0050C2, 0x42B000, 0x42BFFF, "VLSIP TECHNOLOGIES, INC.", "VLSIP-TECHNOLOGIES" }, { 0x0050C2, 0x428000, 0x428FFF, "Roxar A/S", "ROXAR-A/S" }, { 0x0050C2, 0x425000, 0x425FFF, "Pinnacle Technology", "PINNACLE" }, { 0x0050C2, 0x421000, 0x421FFF, "EFSYS", "EFSYS" }, { 0x0050C2, 0x422000, 0x422FFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x470000, 0x470FFF, "Cybectec inc.", "CYBECTEC" }, { 0x0050C2, 0x46D000, 0x46DFFF, "Paul Scherrer Institut (PSI)", "PAUL-SCHERRER-INSTITUT-PSI" }, { 0x0050C2, 0x46A000, 0x46AFFF, "ISE GmbH", "ISE" }, { 0x0050C2, 0x466000, 0x466FFF, "LONAP Limited", "LONAP" }, { 0x0050C2, 0x3A4000, 0x3A4FFF, "Silvertree Engineering Ltd", "SILVERTREE-ENGINEERING" }, { 0x0050C2, 0x3A7000, 0x3A7FFF, "Elektrotechnik & Elektronik Oltmann GmbH", "ELEKTROTECHNIK-ELEKTRONIK-OLTMANN" }, { 0x0050C2, 0x3A1000, 0x3A1FFF, "Samsoft", "SAMSOFT" }, { 0x0050C2, 0x352000, 0x352FFF, "LUCEO", "LUCEO" }, { 0x0050C2, 0x34B000, 0x34BFFF, "Ecutel Systems, Inc.", "ECUTEL" }, { 0x0050C2, 0x345000, 0x345FFF, "ACT", "ACT" }, { 0x0050C2, 0x348000, 0x348FFF, "KoolSpan, Inc.", "KOOLSPAN" }, { 0x0050C2, 0x38D000, 0x38DFFF, "A&G Soluzioni Digitali", "A-G-SOLUZIONI-DIGITALI" }, { 0x0050C2, 0x385000, 0x385FFF, "SUNGJIN NEOTECH Co.Ltd.", "SUNGJIN-NEOTECH" }, { 0x0050C2, 0x382000, 0x382FFF, "Colorado vNet", "COLORADO-VNET" }, { 0x0050C2, 0x37D000, 0x37DFFF, "VeroTrak Inc.", "VEROTRAK" }, { 0x0050C2, 0x37A000, 0x37AFFF, "IDA Corporation", "IDA" }, { 0x0050C2, 0x376000, 0x376FFF, "CLEODE", "CLEODE" }, { 0x0050C2, 0x377000, 0x377FFF, "Xycom VME", "XYCOM-VME" }, { 0x0050C2, 0x370000, 0x370FFF, "Europe Technologies", "EUROPE-TECHNOLOGIES" }, { 0x0050C2, 0x373000, 0x373FFF, "Companion Worlds, inc.", "COMPANION-WORLDS" }, { 0x0050C2, 0x36D000, 0x36DFFF, "Oplink Communications", "OPLINK-COMMUNICATION" }, { 0x0050C2, 0x3DD000, 0x3DDFFF, "ELMIC GmbH", "ELMIC" }, { 0x0050C2, 0x3D6000, 0x3D6FFF, "Comlab Inc.", "COMLAB" }, { 0x0050C2, 0x3D3000, 0x3D3FFF, "American LED-gible Inc.", "AMERICAN-LED-GIBLE" }, { 0x0050C2, 0x3CF000, 0x3CFFFF, "Technovare Systems, Inc.", "TECHNOVARE" }, { 0x0050C2, 0x3B5000, 0x3B5FFF, "NEC TOKIN Corporation", "NEC-TOKIN" }, { 0x0050C2, 0x3B2000, 0x3B2FFF, "Tennessee Valley Authority", "TENNESSEE-VALLEY-AUTHORITY" }, { 0x0050C2, 0x3AB000, 0x3ABFFF, "taskit Rechnertechnik GmbH", "TASKIT-RECHNERTECHNIK" }, { 0x0050C2, 0x39D000, 0x39DFFF, "DigitalDeck, Inc.", "DIGITALDECK" }, { 0x0050C2, 0x397000, 0x397FFF, "MANGO DSP Ltd.", "MANGO-DSP" }, { 0x0050C2, 0x39A000, 0x39AFFF, "Optical Air Data Systems", "OPTICAL-AIR-DATA" }, { 0x0050C2, 0x390000, 0x390FFF, "TC Communications", "TC-COMMUNICATION" }, { 0x0050C2, 0x3C9000, 0x3C9FFF, "Dilax Intelcom AG", "DILAX-INTELCOM" }, { 0x0050C2, 0x3C5000, 0x3C5FFF, "Silicon Optix Canada Inc.", "SILICON-OPTIX-CANADA" }, { 0x0050C2, 0x3C2000, 0x3C2FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0x3BF000, 0x3BFFFF, "Audio Processing Technology Ltd", "AUDIO-PROCESSING" }, { 0x0050C2, 0x3BC000, 0x3BCFFF, "Tyzx, Inc.", "TYZX" }, { 0x0050C2, 0x363000, 0x363FFF, "Septentrio nv/sa", "SEPTENTRIO-NV/" }, { 0x0050C2, 0x327000, 0x327FFF, "Dornier GmbH", "DORNIER" }, { 0x0050C2, 0x2AE000, 0x2AEFFF, "Quest Retail Technology Pty Ltd", "QUEST-RETAIL-PTY" }, { 0x0050C2, 0x341000, 0x341FFF, "Novx Systems", "NOVX" }, { 0x0050C2, 0x33E000, 0x33EFFF, "CA Technology, Inc", "CA" }, { 0x0050C2, 0x331000, 0x331FFF, "Broadcast Sports Inc", "BROADCAST-SPORTS" }, { 0x0050C2, 0x31C000, 0x31CFFF, "Casa Systems Inc.", "CASA" }, { 0x0050C2, 0x314000, 0x314FFF, "MicroBee Systems, Inc", "MICROBEE" }, { 0x0050C2, 0x268000, 0x268FFF, "Parabit Systems", "PARABIT" }, { 0x0050C2, 0x25E000, 0x25EFFF, "MITE Hradec Kralove, s.r.o.", "MITE-HRADEC-KRALOVE-S-R-O" }, { 0x0050C2, 0x2A4000, 0x2A4FFF, "Xipher Embedded Networking", "XIPHER-EMBEDDED-NETWORKING" }, { 0x0050C2, 0x29A000, 0x29AFFF, "Packet Techniques Inc.", "PACKET-TECHNIQUES" }, { 0x0050C2, 0x290000, 0x290FFF, "EBNEURO SPA", "EBNEURO-SPA" }, { 0x0050C2, 0x241000, 0x241FFF, "Contronics Automacao Ltda", "CONTRONICS-AUTOMACAO-LTDA" }, { 0x0050C2, 0x24B000, 0x24BFFF, "Azimuth Systems, Inc.", "AZIMUTH" }, { 0x0050C2, 0x27C000, 0x27CFFF, "Danlaw Inc", "DANLAW" }, { 0x0050C2, 0x272000, 0x272FFF, "Verex Technology", "VEREX" }, { 0x0050C2, 0x286000, 0x286FFF, "ATEME", "ATEME" }, { 0x0050C2, 0x1FF000, 0x1FFFFF, "Product Design Dept., Sohwa Corporation", "PRODUCT-DESIGN-DEPT-SOHWA" }, { 0x0050C2, 0x1FB000, 0x1FBFFF, "Willowglen Systems Inc.", "WILLOWGLEN" }, { 0x0050C2, 0x1F5000, 0x1F5FFF, "Abest Communication Corp.", "ABEST-COMMUNICATION" }, { 0x0050C2, 0x1E1000, 0x1E1FFF, "Automaatiotekniikka Seppo Saari Oy", "AUTOMAATIOTEKNIIKKA-SEPPO-SAARI-OY" }, { 0x0050C2, 0x1DE000, 0x1DEFFF, "ReliOn Inc.", "RELION" }, { 0x0050C2, 0x1D7000, 0x1D7FFF, "Pleora Technologies Inc.", "PLEORA-TECHNOLOGIES" }, { 0x0050C2, 0x1D8000, 0x1D8FFF, "Guardian Controls International", "GUARDIAN-CONTROLS" }, { 0x0050C2, 0x1D4000, 0x1D4FFF, "Phase IV Engineering Inc.", "PHASE-IV-ENGINEERING" }, { 0x0050C2, 0x1EF000, 0x1EFFFF, "M2 Technology Pty Ltd", "M2-PTY" }, { 0x0050C2, 0x1F0000, 0x1F0FFF, "EXI Wireless Systems Inc.", "EXI-WIRELESS" }, { 0x0050C2, 0x1E8000, 0x1E8FFF, "Metrotech", "METROTECH" }, { 0x0050C2, 0x1CD000, 0x1CDFFF, "INCAA Informatica Italia srl", "INCAA-INFORMATICA-ITALIA-SRL" }, { 0x0050C2, 0x1CE000, 0x1CEFFF, "Datatek Applications, Inc.", "DATATEK-APPLICATIONS" }, { 0x0050C2, 0x1CA000, 0x1CAFFF, "EVER Sp. z o.o.", "EVER-SP-Z-O-O" }, { 0x0050C2, 0x1C0000, 0x1C0FFF, "WillMonius Inc.", "WILLMONIUS" }, { 0x0050C2, 0x1C4000, 0x1C4FFF, "Palm Solutions Group", "PALM-SOLUTIONS-GROUP" }, { 0x0050C2, 0x1BA000, 0x1BAFFF, "INTERZEAG AG", "INTERZEAG" }, { 0x0050C2, 0x1B6000, 0x1B6FFF, "DTS, Inc.", "DTS" }, { 0x0050C2, 0x223000, 0x223FFF, "visicontrol GmbH", "VISICONTROL" }, { 0x0050C2, 0x219000, 0x219FFF, "Aeroflex GmbH", "AEROFLEX" }, { 0x0050C2, 0x209000, 0x209FFF, "LK Ltd", "LK" }, { 0x0050C2, 0x205000, 0x205FFF, "SystIng", "SYSTING" }, { 0x0050C2, 0x20F000, 0x20FFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x237000, 0x237FFF, "Tandata Systems Ltd", "TANDATA" }, { 0x0050C2, 0x22D000, 0x22DFFF, "asetek Inc.", "ASETEK" }, { 0x0050C2, 0x18D000, 0x18DFFF, "CCII Systems (Pty) Ltd", "CCII-PTY" }, { 0x0050C2, 0x185000, 0x185FFF, "Optical Wireless Link Inc.", "OPTICAL-WIRELESS-LINK" }, { 0x0050C2, 0x182000, 0x182FFF, "wolf-inf-tec", "WOLF-INF-TEC" }, { 0x0050C2, 0x17F000, 0x17FFFF, "PDQ Manufacturing", "PDQ-MANUFACTURING" }, { 0x0050C2, 0x1B0000, 0x1B0FFF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0x0050C2, 0x1AC000, 0x1ACFFF, "Beckmann+Egle GmbH", "BECKMANN+EGLE" }, { 0x0050C2, 0x17B000, 0x17BFFF, "Broadstorm Telecom", "BROADSTORM-TELECOM" }, { 0x0050C2, 0x175000, 0x175FFF, "Sei S.p.A.", "SEI-S-P-A" }, { 0x0050C2, 0x171000, 0x171FFF, "Quantronix, Inc.", "QUANTRONIX" }, { 0x0050C2, 0x165000, 0x165FFF, "IPCAST", "IPCAST" }, { 0x0050C2, 0x19C000, 0x19CFFF, "Artec Design", "ARTEC-DESIGN" }, { 0x0050C2, 0x198000, 0x198FFF, "PotsTek, Inc", "POTSTEK" }, { 0x0050C2, 0x00B000, 0x00BFFF, "IO Limited", "IO" }, { 0x0050C2, 0x162000, 0x162FFF, "Teseda Corporation", "TESEDA" }, { 0x0050C2, 0x15B000, 0x15BFFF, "Dune Networks", "DUNE-NETWORKS" }, { 0x0050C2, 0x1A6000, 0x1A6FFF, "RF Code", "RF-CODE" }, { 0x0050C2, 0x1A2000, 0x1A2FFF, "ABB Switzerland Inc", "ABB-SWITZERLAND" }, { 0x0050C2, 0x189000, 0x189FFF, "CC Systems AB", "CC-AB" }, { 0x0050C2, 0x192000, 0x192FFF, "Advanced Concepts, Inc.", "ADVANCED-CONCEPTS" }, { 0x0050C2, 0x112000, 0x112FFF, "Compuworx", "COMPUWORX" }, { 0x0050C2, 0x075000, 0x075FFF, "ENTTEC Pty Ltd.", "ENTTEC-PTY" }, { 0x0050C2, 0x10F000, 0x10FFFF, "Perceptics Corp.", "PERCEPTICS" }, { 0x0050C2, 0x12B000, 0x12BFFF, "Dong A Eltek Co., Ltd.", "DONG-A-ELTEK" }, { 0x0050C2, 0x12A000, 0x12AFFF, "Symbolic Sound Corp.", "SYMBOLIC-SOUND" }, { 0x0050C2, 0x147000, 0x147FFF, "UniSUR", "UNISUR" }, { 0x0050C2, 0x158000, 0x158FFF, "Communication Solutions, Inc.", "COMMUNICATION-SOLUTIONS" }, { 0x0050C2, 0x0F6000, 0x0F6FFF, "Carl Baasel Lasertechnik GmbH", "CARL-BAASEL-LASERTECHNIK" }, { 0x0050C2, 0x063000, 0x063FFF, "Ticketmaster Corp", "TICKETMASTER" }, { 0x0050C2, 0x14E000, 0x14EFFF, "Corinex Global", "CORINEX-GLOBAL" }, { 0x0050C2, 0x151000, 0x151FFF, "Redux Communications Ltd.", "REDUX-COMMUNICATION" }, { 0x0050C2, 0x13A000, 0x13AFFF, "Tex Computer SRL", "TEX-SRL" }, { 0x0050C2, 0x13D000, 0x13DFFF, "Formula One Management Ltd.", "FORMULA-ONE-MANAGEMENT" }, { 0x0050C2, 0x123000, 0x123FFF, "Seranoa Networks, Inc.", "SERANOA-NETWORKS" }, { 0x0050C2, 0x11C000, 0x11CFFF, "Stonefly Networks", "STONEFLY-NETWORKS" }, { 0x0050C2, 0x119000, 0x119FFF, "Global Opto Communication Tech. Corp", "GLOBAL-OPTO-COMMUNICATION-TECH" }, { 0x0050C2, 0x133000, 0x133FFF, "ChipWrights, Inc.", "CHIPWRIGHTS" }, { 0x0050C2, 0x0CB000, 0x0CBFFF, "STUDIEL", "STUDIEL" }, { 0x0050C2, 0x0C2000, 0x0C2FFF, "Alchemy Semiconductor, Inc.", "ALCHEMY-SEMICONDUCTOR" }, { 0x0050C2, 0x0C6000, 0x0C6FFF, "Advanced Medical Information Technologies, Inc.", "ADVANCED-MEDICAL-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x0BC000, 0x0BCFFF, "Infolink Software AG", "INFOLINK-SOFTWARE" }, { 0x0050C2, 0x0F0000, 0x0F0FFF, "VHB Technologies, Inc.", "VHB-TECHNOLOGIES" }, { 0x0050C2, 0x0EA000, 0x0EAFFF, "iReady Corporation", "IREADY" }, { 0x0050C2, 0x0ED000, 0x0EDFFF, "Valley Products Corporation", "VALLEY-PRODUCTS" }, { 0x0050C2, 0x108000, 0x108FFF, "Balogh S.A.", "BALOGH" }, { 0x0050C2, 0x0FE000, 0x0FEFFF, "Energy ICT", "ENERGY-ICT" }, { 0x0050C2, 0x0D6000, 0x0D6FFF, "Inco Startec GmbH", "INCO-STARTEC" }, { 0x0050C2, 0x0A1000, 0x0A1FFF, "Visable Genetics, Inc.", "VISABLE-GENETICS" }, { 0x0050C2, 0x0B2000, 0x0B2FFF, "R F Micro Devices", "R-F-MICRO-DEVICES" }, { 0x0050C2, 0x0AF000, 0x0AFFFF, "Latus Lightworks, Inc.", "LATUS-LIGHTWORKS" }, { 0x0050C2, 0x0AB000, 0x0ABFFF, "Fastware.Net, LLC", "FASTWARE-NET-LLC" }, { 0x0050C2, 0x0A7000, 0x0A7FFF, "WaterCove Networks", "WATERCOVE-NETWORKS" }, { 0x0050C2, 0x09D000, 0x09DFFF, "ZELPOS", "ZELPOS" }, { 0x0050C2, 0x09B000, 0x09BFFF, "Seffle Instrument AB", "SEFFLE-INSTRUMENT-AB" }, { 0x0050C2, 0x094000, 0x094FFF, "Analytical Spectral Devices, Inc.", "ANALYTICAL-SPECTRAL-DEVICES" }, { 0x0050C2, 0x091000, 0x091FFF, "StorLogic, Inc.", "STORLOGIC" }, { 0x0050C2, 0x08A000, 0x08AFFF, "Rising Edge Technologies", "RISING-EDGE-TECHNOLOGIES" }, { 0x0050C2, 0x087000, 0x087FFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x07D000, 0x07DFFF, "Caspian Networks", "CASPIAN-NETWORKS" }, { 0x0050C2, 0x07B000, 0x07BFFF, "Trikon Technologies Ltd.", "TRIKON-TECHNOLOGIES" }, { 0x0050C2, 0x07A000, 0x07AFFF, "RadioTel", "RADIOTEL" }, { 0x0050C2, 0x074000, 0x074FFF, "Edge Tech Co., Ltd.", "EDGE-TECH" }, { 0x0050C2, 0x077000, 0x077FFF, "Saco Smartvision Inc.", "SACO-SMARTVISION" }, { 0x0050C2, 0x061000, 0x061FFF, "Simple Network Magic Corporation", "SIMPLE-NETWORK-MAGIC" }, { 0x0050C2, 0x059000, 0x059FFF, "Austco Communication Systems Pty, Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x05A000, 0x05AFFF, "Sonifex Ltd", "SONIFEX" }, { 0x0050C2, 0x070000, 0x070FFF, "Katchall Technologies Group", "KATCHALL-TECHNOLOGIES-GROUP" }, { 0x0050C2, 0x054000, 0x054FFF, "Optionexist Limited", "OPTIONEXIST" }, { 0x0050C2, 0x04E000, 0x04EFFF, "Industrial Electronic Engineers, Inc.", "INDUSTRIAL-ENGINEERS" }, { 0x0050C2, 0x050000, 0x050FFF, "Dataprobe, Inc.", "DATAPROBE" }, { 0x0050C2, 0x068000, 0x068FFF, "Seabridge", "SEABRIDGE" }, { 0x0050C2, 0x05D000, 0x05DFFF, "Ignitus Communications, LLC", "IGNITUS-COMMUNICATION-LLC" }, { 0x0050C2, 0x01F000, 0x01FFFF, "KBS Industrieelektronik GmbH", "KBS-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0x026000, 0x026FFF, "Abatis Systems Corp.", "ABATIS" }, { 0x0050C2, 0x01C000, 0x01CFFF, "Tadiran Scopus", "TADIRAN-SCOPUS" }, { 0x0050C2, 0x040000, 0x040FFF, "MiSPO Co., Ltd.", "MISPO" }, { 0x0050C2, 0x03D000, 0x03DFFF, "ISDN Gateway Technology AG", "ISDN-GATEWAY" }, { 0x0050C2, 0x030000, 0x030FFF, "Lockheed Martin Tactical Defense Systems Eagan", "LOCKHEED-MARTIN-TACTICAL-DEFENSE-EAGAN" }, { 0x0050C2, 0x03B000, 0x03BFFF, "VNR Electronique SA", "VNR-ELECTRONIQUE" }, { 0x0050C2, 0x03A000, 0x03AFFF, "PLLB Elettronica SPA", "PLLB-ELETTRONICA-SPA" }, { 0x0050C2, 0x04A000, 0x04AFFF, "Telecom Analysis Systems, LP", "TELECOM-ANALYSIS-LP" }, { 0x0050C2, 0x006000, 0x006FFF, "Project Management Enterprises, Inc.", "PROJECT-MANAGEMENT-ENTERPRISES" }, { 0x0050C2, 0x012000, 0x012FFF, "Floware System Solutions Ltd.", "FLOWARE-SYSTEM-SOLUTIONS" }, { 0x0050C2, 0xF35000, 0xF35FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x953000, 0x953FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x857000, 0x857FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x8C7000, 0x8C7FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x080000, 0x080FFF, "AIM", "AIM" }, { 0x0050C2, 0xBF0000, 0xBF0FFF, "AIM", "AIM" }, { 0x0050C2, 0xA62000, 0xA62FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x40D855, 0x0F1000, 0x0F1FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0x029000, 0x029FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0x7A9000, 0x7A9FFF, "DELTA TAU DATA SYSTEMS, INC.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x033000, 0x033FFF, "Doble Engineering", "DOBLE-ENGINEERING" }, { 0x0050C2, 0x1EB000, 0x1EBFFF, "Data Respons A/S", "DATA-RESPONS-A/S" }, { 0x0050C2, 0xA06000, 0xA06FFF, "CLOOS ELECTRONIC GMBH", "CLOOS" }, { 0x0050C2, 0xF53000, 0xF53FFF, "BAYCOM OPTO-ELECTRONICS TECHNOLGY CO., LTD.", "BAYCOM-OPTO-ELECTRONICS-TECHNOLGY" }, { 0x0050C2, 0x47A000, 0x47AFFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x5AB000, 0x5ABFFF, "Eaton Corp. Electrical Group Data Center Solutions - Pulizzi", "EATON-ELECTRICAL-GROUP-DATA-CENTER-SOLUTIONS---PULIZZI" }, { 0x0050C2, 0x44A000, 0x44AFFF, "Elettronica Santerno SpA", "ELETTRONICA-SANTERNO-SPA" }, { 0x0050C2, 0xFBA000, 0xFBAFFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x0050C2, 0x5CC000, 0x5CCFFF, "Enseo, Inc.", "ENSEO" }, { 0x0050C2, 0x5C2000, 0x5C2FFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0x393000, 0x393FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 0x0050C2, 0x3CC000, 0x3CCFFF, "Linkwell Telesystems Pvt Ltd", "LINKWELL-TELESYSTEMS-PVT" }, { 0x0050C2, 0x015000, 0x015FFF, "LEROY AUTOMATION", "LEROY-AUTOMATION" }, { 0x0050C2, 0x359000, 0x359FFF, "Kramer Electronics Ltd.", "KRAMER-ELECTRONICS" }, { 0x0050C2, 0xE0A000, 0xE0AFFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x60D000, 0x60DFFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x16D000, 0x16DFFF, "GD Mission Systems", "GD-MISSION" }, { 0x40D855, 0x192000, 0x192FFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x7A3000, 0x7A3FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x9F9000, 0x9F9FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xC0A000, 0xC0AFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x5E2000, 0x5E2FFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x0050C2, 0x188000, 0x188FFF, "dresden-elektronik", "DRESDEN-ELEKTRONIK" }, { 0x0050C2, 0x178000, 0x178FFF, "Partner Voxstream A/S", "PARTNER-VOXSTREAM-A/S" }, { 0x0050C2, 0x0B9000, 0x0B9FFF, "Helmut Mauell GmbH Werk Weida", "HELMUT-MAUELL-WERK-WEIDA" }, { 0x0050C2, 0x594000, 0x594FFF, "Pixel Velocity, Inc", "PIXEL-VELOCITY" }, { 0x0050C2, 0xDAC000, 0xDACFFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x0050C2, 0x42F000, 0x42FFFF, "Win4NET", "WIN4NET" }, { 0x0050C2, 0x7F4000, 0x7F4FFF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0050C2, 0x3E5000, 0x3E5FFF, "Vacon Plc", "VACON-PLC" }, { 0x0050C2, 0x6FB000, 0x6FBFFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0x85A000, 0x85AFFF, "ART SPA", "ART-SPA" }, { 0x40D855, 0x00C000, 0x00CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xDAB000, 0xDABFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xE00000, 0xE00FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x060000, 0x060FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xEAD000, 0xEADFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xC9E000, 0xC9EFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xBFA000, 0xBFAFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xFBD000, 0xFBDFFF, "EATON FHF Funke + Huster Fernsig GmbH", "EATON-FHF-FUNKE-+-HUSTER-FERNSIG" }, { 0x0050C2, 0xC63000, 0xC63FFF, "Potter Electric Signal Co. LLC", "POTTER-ELECTRIC-SIGNAL-LLC" }, { 0x0050C2, 0x9A3000, 0x9A3FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x589000, 0x589FFF, "HORIBA ABX SAS", "HORIBA-ABX-SAS" }, { 0x0050C2, 0x77E000, 0x77EFFF, "Cominfo, Inc.", "COMINFO" }, { 0x0050C2, 0xA47000, 0xA47FFF, "PRIMETECH ENGINEERING CORP.", "PRIMETECH-ENGINEERING" }, { 0x0050C2, 0x126000, 0x126FFF, "MaxLinear Hispania S.L.U.", "MAXLINEAR-HISPANIA-S-L-U" }, { 0x40D855, 0x0D7000, 0x0D7FFF, "Avant Technologies", "AVANT-TECHNOLOGIES" }, { 0x0050C2, 0x459000, 0x459FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x144000, 0x144FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x1C3000, 0x1C3FFF, "TT electronics plc", "TT-ELECTRONICS-PLC" }, { 0x0050C2, 0x5A7000, 0x5A7FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x34F000, 0x34FFFF, "North Pole Engineering, Inc.", "NORTH-POLE-ENGINEERING" }, { 0x0050C2, 0xEA9000, 0xEA9FFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x0050C2, 0x24D000, 0x24DFFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x40D855, 0x19F000, 0x19FFFF, "Patria Aviation Oy", "PATRIA-AVIATION-OY" }, { 0x40D855, 0x1A1000, 0x1A1FFF, "KRONOTECH SRL", "KRONOTECH-SRL" }, { 0x40D855, 0x1B8000, 0x1B8FFF, "Orion Systems, Inc", "ORION" }, { 0x40D855, 0x1B0000, 0x1B0FFF, "Shin-ei Electronic Measuring Co.,Ltd.", "SHIN-EI-MEASURING" }, { 0x40D855, 0x1AC000, 0x1ACFFF, "ELAN SYSTEMS", "ELAN" }, { 0x40D855, 0x1A2000, 0x1A2FFF, "HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.", "HIPODROMO-DE-AGUA-CALIENTE-DE-C-V" }, { 0x40D855, 0x1D5000, 0x1D5FFF, "FST21 Ltd.", "FST21" }, { 0x40D855, 0x1D6000, 0x1D6FFF, "EMS Computers Pty Ltd", "EMS-COMPUTERS-PTY" }, { 0x40D855, 0x1D3000, 0x1D3FFF, "Kaluga Teletypes Manufacturing Plant", "KALUGA-TELETYPES-MANUFACTURING-PLANT" }, { 0x40D855, 0x1CB000, 0x1CBFFF, "MG S.r.l.", "MG-S-R-L" }, { 0x40D855, 0x1C2000, 0x1C2FFF, "Digital Display Systems", "DIGITAL-DISPLAY" }, { 0x40D855, 0x1C1000, 0x1C1FFF, "Triamec Motion AG", "TRIAMEC-MOTION" }, { 0x40D855, 0x1C0000, 0x1C0FFF, "NPB Automation AB", "NPB-AUTOMATION-AB" }, { 0x40D855, 0x199000, 0x199FFF, "PRESSOL Schmiergeraete GmbH", "PRESSOL-SCHMIERGERAETE" }, { 0x40D855, 0x197000, 0x197FFF, "Berg Cloud Limited", "BERG-CLOUD" }, { 0x40D855, 0x190000, 0x190FFF, "Spider Tecnologia Ind. e Com Ltda", "SPIDER-TECNOLOGIA-IND-E-COM-LTDA" }, { 0x40D855, 0x18D000, 0x18DFFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x40D855, 0x18C000, 0x18CFFF, "EOS S.r.l.", "EOS-S-R-L" }, { 0x40D855, 0x1E1000, 0x1E1FFF, "AD QUALITE", "AD-QUALITE" }, { 0x40D855, 0x1DF000, 0x1DFFFF, "Chengdu Meihuan Technology Co.,Ltd", "CHENGDU-MEIHUAN" }, { 0x40D855, 0x13D000, 0x13DFFF, "Perm Scientific-Industrial Instrument Making Company JSC", "PERM-SCIENTIFIC-INDUSTRIAL-INSTRUMENT-MAKING-COMPANY-JSC" }, { 0x40D855, 0x13B000, 0x13BFFF, "Davin Technologies Co.,Ltd", "DAVIN-TECHNOLOGIES" }, { 0x40D855, 0x135000, 0x135FFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x40D855, 0x136000, 0x136FFF, "Devriecom B.V.", "DEVRIECOM" }, { 0x40D855, 0x132000, 0x132FFF, "AeroVision Avionics, Inc", "AEROVISION-AVIONICS" }, { 0x40D855, 0x180000, 0x180FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x40D855, 0x173000, 0x173FFF, "Contec Steuerungstechnik & Automation GmbH", "CONTEC-STEUERUNGSTECHNIK-AUTOMATION" }, { 0x40D855, 0x175000, 0x175FFF, "AHB Systeme GmbH", "AHB-SYSTEME" }, { 0x40D855, 0x128000, 0x128FFF, "Akse srl", "AKSE-SRL" }, { 0x40D855, 0x11B000, 0x11BFFF, "nanoTRONIC GmbH", "NANOTRONIC" }, { 0x40D855, 0x15E000, 0x15EFFF, "Prodco International Inc.", "PRODCO" }, { 0x40D855, 0x15C000, 0x15CFFF, "Spectratech Inc.", "SPECTRATECH" }, { 0x40D855, 0x152000, 0x152FFF, "Home Automation Europe", "HOME-AUTOMATION-EUROPE" }, { 0x40D855, 0x148000, 0x148FFF, "SEIKO TIME SYSTEMS INC.", "SEIKO-TIME" }, { 0x40D855, 0x168000, 0x168FFF, "OPASCA Systems GmbH", "OPASCA" }, { 0x40D855, 0x167000, 0x167FFF, "Assembly Contracts Ltd", "ASSEMBLY-CONTRACTS" }, { 0x40D855, 0x169000, 0x169FFF, "Photop Koncent", "PHOTOP-KONCENT" }, { 0x40D855, 0x126000, 0x126FFF, "TTI LTD", "TTI" }, { 0x40D855, 0x10D000, 0x10DFFF, "Rite-Tech Industrial Co., Ltd.", "RITE-TECH-INDUSTRIAL" }, { 0x40D855, 0x103000, 0x103FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x40D855, 0x104000, 0x104FFF, "IMPLE SISTEMAS ELETRONICOS EMBARCADOS LTDA", "IMPLE-SISTEMAS-ELETRONICOS-EMBARCADOS-LTDA" }, { 0x40D855, 0x100000, 0x100FFF, "TASK SISTEMAS DE COMPUTACAO S.A.", "TASK-SISTEMAS-DE-COMPUTACAO" }, { 0x40D855, 0x0EA000, 0x0EAFFF, "A-Z-E", "A-Z-E" }, { 0x40D855, 0x0E0000, 0x0E0FFF, "Richter", "RICHTER" }, { 0x40D855, 0x0DF000, 0x0DFFFF, "Xadi Inc", "XADI" }, { 0x40D855, 0x10F000, 0x10FFFF, "CAVALRY STORAGE INC", "CAVALRY-STORAGE" }, { 0x40D855, 0x0F8000, 0x0F8FFF, "Better Place", "BETTER-PLACE" }, { 0x40D855, 0x0F5000, 0x0F5FFF, "CST Group", "CST-GROUP" }, { 0x40D855, 0x0F6000, 0x0F6FFF, "Private", "PRIVATE" }, { 0x40D855, 0x0D5000, 0x0D5FFF, "Shimizu Electric Co., Ltd.", "SHIMIZU-ELECTRIC" }, { 0x40D855, 0x0D3000, 0x0D3FFF, "LECO Corporation", "LECO" }, { 0x40D855, 0x0CD000, 0x0CDFFF, "Logical Product", "LOGICAL-PRODUCT" }, { 0x40D855, 0x0CB000, 0x0CBFFF, "ReliOn Inc", "RELION" }, { 0x40D855, 0x0CA000, 0x0CAFFF, "NEUTRIK AG", "NEUTRIK" }, { 0x40D855, 0x0C0000, 0x0C0FFF, "ACT", "ACT" }, { 0x40D855, 0x0EC000, 0x0ECFFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x40D855, 0x0ED000, 0x0EDFFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x40D855, 0x0A7000, 0x0A7FFF, "First Design System Inc.", "FIRST-DESIGN-SYSTEM" }, { 0x40D855, 0x0A5000, 0x0A5FFF, "WooshCom Corporation", "WOOSHCOM" }, { 0x40D855, 0x090000, 0x090FFF, "Axxess Identification Ltd", "AXXESS-IDENTIFICATION" }, { 0x40D855, 0x08D000, 0x08DFFF, "Boehme Nachrichtentechnik", "BOEHME-NACHRICHTENTECHNIK" }, { 0x40D855, 0x08E000, 0x08EFFF, "Lyngsoe Systems", "LYNGSOE" }, { 0x40D855, 0x088000, 0x088FFF, "JEL SYSTEM CO., LTD.", "JEL-SYSTEM" }, { 0x40D855, 0x086000, 0x086FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x40D855, 0x058000, 0x058FFF, "Energy Team S.p.A.", "ENERGY-TEAM-S-P-A" }, { 0x40D855, 0x04D000, 0x04DFFF, "MACHINEPERFORMANCE ApS", "MACHINEPERFORMANCE-APS" }, { 0x40D855, 0x07B000, 0x07BFFF, "IPS Technology Limited", "IPS" }, { 0x40D855, 0x079000, 0x079FFF, "DelfiSolutions A/S", "DELFISOLUTIONS-A/S" }, { 0x40D855, 0x09B000, 0x09BFFF, "Tokyo Denki Gijutsu Kogyo", "TOKYO-DENKI-GIJUTSU-KOGYO" }, { 0x40D855, 0x09A000, 0x09AFFF, "CoherentPlus Sdn Bhd", "COHERENTPLUS-SDN-BHD" }, { 0x40D855, 0x066000, 0x066FFF, "TeraTron GmbH", "TERATRON" }, { 0x40D855, 0x0B2000, 0x0B2FFF, "Ever Trend Technology Development Limited", "EVER-TREND-DEVELOPMENT" }, { 0x0050C2, 0xFF5000, 0xFF5FFF, "Flexkom Internet Pazarlama Bilipim ve Eoitim Hiz.Inp.Mim.Muh.Oto.Enerji San. Tic. A.p.", "FLEXKOM-INTERNET-PAZARLAMA-BILIPIM-VE-EOITIM-HIZ-INP-MIM-MUH-OTO-ENERJI-SAN-TIC-A-P" }, { 0x0050C2, 0xFF1000, 0xFF1FFF, "DiTEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0xFEB000, 0xFEBFFF, "Axible Technologies", "AXIBLE-TECHNOLOGIES" }, { 0x0050C2, 0xFE7000, 0xFE7FFF, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 0x40D855, 0x029000, 0x029FFF, "Depro Electronique", "DEPRO-ELECTRONIQUE" }, { 0x40D855, 0x021000, 0x021FFF, "SMT D.O.O.", "SMT-D-O-O" }, { 0x40D855, 0x01F000, 0x01FFFF, "Sitep Italia Spa", "SITEP-ITALIA-SPA" }, { 0x40D855, 0x013000, 0x013FFF, "Grande Vitesse Systems", "GRANDE-VITESSE" }, { 0x40D855, 0x015000, 0x015FFF, "BITMILL srl", "BITMILL-SRL" }, { 0x40D855, 0x014000, 0x014FFF, "Toni Studio", "TONI-STUDIO" }, { 0x0050C2, 0xFFF000, 0xFFFFFF, "MSR-Solutions GmbH", "MSR-SOLUTIONS" }, { 0x40D855, 0x036000, 0x036FFF, "Schweers informationstechnologie GmbH", "SCHWEERS-INFORMATIONSTECHNOLOGIE" }, { 0x40D855, 0x034000, 0x034FFF, "Dacom West GmbH", "DACOM-WEST" }, { 0x0050C2, 0xFDD000, 0xFDDFFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0xFD7000, 0xFD7FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xFD3000, 0xFD3FFF, "Aster Electric Co.,Ltd.", "ASTER-ELECTRIC" }, { 0x40D855, 0x04B000, 0x04BFFF, "Vital Tech Industria e Comercio Ltda", "VITAL-TECH-INDUSTRIA-E-COMERCIO-LTDA" }, { 0x40D855, 0x040000, 0x040FFF, "GHL Systems Berhad", "GHL-BERHAD" }, { 0x40D855, 0x041000, 0x041FFF, "T.Q.M. Itaca Technology s.r.l.", "T-Q-M-ITACA-S-R-L" }, { 0x40D855, 0x002000, 0x002FFF, "Hangzhou Chenxiao Technologies Co. Ltd.", "HANGZHOU-CHENXIAO-TECHNOLOGIES" }, { 0x0050C2, 0xFFE000, 0xFFEFFF, "Sensata Technologies", "SENSATA-TECHNOLOGIES" }, { 0x0050C2, 0xFFB000, 0xFFBFFF, "SEFRAM", "SEFRAM" }, { 0x0050C2, 0xFE1000, 0xFE1FFF, "dotOcean", "DOTOCEAN" }, { 0x0050C2, 0xFCD000, 0xFCDFFF, "Jinyoung Contech", "JINYOUNG-CONTECH" }, { 0x0050C2, 0xFC9000, 0xFC9FFF, "Mehta Tech, Inc.", "MEHTA-TECH" }, { 0x0050C2, 0xF61000, 0xF61FFF, "Brauch Elektronik GmbH&Co.KG", "BRAUCH-ELEKTRONIK" }, { 0x0050C2, 0xF5A000, 0xF5AFFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x0050C2, 0xF57000, 0xF57FFF, "Reach Technologies Inc.", "REACH-TECHNOLOGIES" }, { 0x0050C2, 0xF96000, 0xF96FFF, "JLCooper Electronics", "JLCOOPER-ELECTRONICS" }, { 0x0050C2, 0xF93000, 0xF93FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xFC3000, 0xFC3FFF, "HSDC Sp. z o.o.", "HSDC-SP-Z-O-O" }, { 0x0050C2, 0xFBF000, 0xFBFFFF, "MYLOGIC", "MYLOGIC" }, { 0x0050C2, 0xFB9000, 0xFB9FFF, "Coral Telecom Ltd", "CORAL-TELECOM" }, { 0x0050C2, 0xFB5000, 0xFB5FFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x0050C2, 0xFAF000, 0xFAFFFF, "Vremya-CH JSC", "VREMYA-CH-JSC" }, { 0x0050C2, 0xF82000, 0xF82FFF, "Sincair Systems International", "SINCAIR" }, { 0x0050C2, 0xF7F000, 0xF7FFFF, "Dynamic Design", "DYNAMIC-DESIGN" }, { 0x0050C2, 0xF78000, 0xF78FFF, "Gets MSS S.A.", "GETS-MSS" }, { 0x0050C2, 0xF75000, 0xF75FFF, "PumpWell Solutions Ltd.", "PUMPWELL-SOLUTIONS" }, { 0x0050C2, 0xF8C000, 0xF8CFFF, "UBSTechnology Co., Ltd", "UBSTECHNOLOGY" }, { 0x0050C2, 0xF89000, 0xF89FFF, "CSA Engineering AG", "CSA-ENGINEERING" }, { 0x0050C2, 0xF6E000, 0xF6EFFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0xF6B000, 0xF6BFFF, "Algodue Elettronica Srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x0050C2, 0xF64000, 0xF64FFF, "Chrisso Technologies LLC", "CHRISSO-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xFAC000, 0xFACFFF, "ADETEL GROUP", "ADETEL-GROUP" }, { 0x0050C2, 0xF9E000, 0xF9EFFF, "Matsusada Precision Inc.", "MATSUSADA-PRECISION" }, { 0x0050C2, 0xF50000, 0xF50FFF, "Moritex Corporation", "MORITEX" }, { 0x0050C2, 0xF4D000, 0xF4DFFF, "KNOWHOW INFOCOM INC.", "KNOWHOW-INFOCOM" }, { 0x0050C2, 0xEF8000, 0xEF8FFF, "HCL Technologies", "HCL-TECHNOLOGIES" }, { 0x0050C2, 0xEF7000, 0xEF7FFF, "Amstelland Electronic BV", "AMSTELLAND" }, { 0x0050C2, 0xEF4000, 0xEF4FFF, "RO.VE.R. Laboratories S.p.A", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x0050C2, 0xEEA000, 0xEEAFFF, "Positioneering Limited", "POSITIONEERING" }, { 0x0050C2, 0xF30000, 0xF30FFF, "Miris AB", "MIRIS-AB" }, { 0x0050C2, 0xF29000, 0xF29FFF, "RADYNE CORPORATION", "RADYNE" }, { 0x0050C2, 0xF46000, 0xF46FFF, "Reason Tecnologia S.A.", "REASON-TECNOLOGIA" }, { 0x0050C2, 0xF47000, 0xF47FFF, "cadac,inc.", "CADAC" }, { 0x0050C2, 0xF43000, 0xF43FFF, "Special Systems Engineering Center LLC", "SPECIAL-ENGINEERING-CENTER-LLC" }, { 0x0050C2, 0xF38000, 0xF38FFF, "AeroControl, Inc.", "AEROCONTROL" }, { 0x0050C2, 0xF3B000, 0xF3BFFF, "TAMS firmware co.", "TAMS-FIRMWARE" }, { 0x0050C2, 0xED8000, 0xED8FFF, "AVocation Systems, Inc.", "AVOCATION" }, { 0x0050C2, 0xF15000, 0xF15FFF, "Sascal Displays Ltd", "SASCAL-DISPLAYS" }, { 0x0050C2, 0xF12000, 0xF12FFF, "General Industrial Controls Pvt Ltd", "GENERAL-INDUSTRIAL-CONTROLS-PVT" }, { 0x0050C2, 0xF0B000, 0xF0BFFF, "Treehaven Technologies, Inc.", "TREEHAVEN-TECHNOLOGIES" }, { 0x0050C2, 0xF0C000, 0xF0CFFF, "SKYCHANNEL LTD", "SKYCHANNEL" }, { 0x0050C2, 0xED1000, 0xED1FFF, "Arcontia Technology AB", "ARCONTIA-AB" }, { 0x0050C2, 0xED0000, 0xED0FFF, "Nippon Systemware Co.,Ltd.", "NIPPON-SYSTEMWARE" }, { 0x0050C2, 0xECD000, 0xECDFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xEC7000, 0xEC7FFF, "LIQUID ROBOTICS, INC", "LIQUID-ROBOTICS" }, { 0x0050C2, 0xF02000, 0xF02FFF, "BMR", "BMR" }, { 0x0050C2, 0xF01000, 0xF01FFF, "Mango DSP, Inc", "MANGO-DSP" }, { 0x0050C2, 0xEFE000, 0xEFEFFF, "PLR Information Systems Ltd.", "PLR-INFORMATION" }, { 0x0050C2, 0xF1F000, 0xF1FFFF, "Verified Energy, LLC.", "VERIFIED-ENERGY-LLC" }, { 0x0050C2, 0xEE0000, 0xEE0FFF, "osf Hansjuergen Meier GmbH & Co. KG", "OSF-HANSJUERGEN-MEIER" }, { 0x0050C2, 0xE8B000, 0xE8BFFF, "RPA Electronic Solutions, Inc.", "RPA-SOLUTIONS" }, { 0x0050C2, 0xE87000, 0xE87FFF, "Lamson Safes & Security", "LAMSON-SAFES-SECURITY" }, { 0x0050C2, 0xE81000, 0xE81FFF, "Adaptive Technologies, Inc.", "ADAPTIVE-TECHNOLOGIES" }, { 0x0050C2, 0xE7D000, 0xE7DFFF, "AEL Microsystems Limited", "AEL-MICROSYSTEMS" }, { 0x0050C2, 0xE7E000, 0xE7EFFF, "Swareflex GmbH", "SWAREFLEX" }, { 0x0050C2, 0xE4D000, 0xE4DFFF, "PCSC", "PCSC" }, { 0x0050C2, 0xE49000, 0xE49FFF, "CTF TECHNOLOGIES DO BRASIL LTDA", "CTF-TECHNOLOGIES-DO-BRASIL-LTDA" }, { 0x0050C2, 0xE43000, 0xE43FFF, "Technica Engineering GmbH", "TECHNICA-ENGINEERING" }, { 0x0050C2, 0xE3F000, 0xE3FFFF, "VISITO S.R.L.", "VISITO-S-R-L" }, { 0x0050C2, 0xEC6000, 0xEC6FFF, "INFRONICS SYSTEMS LIMITED", "INFRONICS" }, { 0x0050C2, 0xEBD000, 0xEBDFFF, "Droplet Measurement Technologies", "DROPLET-MEASUREMENT-TECHNOLOGIES" }, { 0x0050C2, 0xEB9000, 0xEB9FFF, "ALPHA-MOS", "ALPHA-MOS" }, { 0x0050C2, 0xEB3000, 0xEB3FFF, "AR RF/Microwave Instrumentation", "AR-RF/MICROWAVE-INSTRUMENTATION" }, { 0x0050C2, 0xE9B000, 0xE9BFFF, "Hentschel System GmbH", "HENTSCHEL-SYSTEM" }, { 0x0050C2, 0xE95000, 0xE95FFF, "Dlite Comercio, Importadora e Serviços de Automação Ltda", "DLITE-COMERCIO-IMPORTADORA-E-SERVIçOS-DE-AUTOMAçãO-LTDA" }, { 0x0050C2, 0xE91000, 0xE91FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xE5D000, 0xE5DFFF, "T8 Ltd", "T8" }, { 0x0050C2, 0xE56000, 0xE56FFF, "RFENGINE CO., LTD.", "RFENGINE" }, { 0x0050C2, 0xE57000, 0xE57FFF, "EOLANE MONTCEAU", "EOLANE-MONTCEAU" }, { 0x0050C2, 0xE53000, 0xE53FFF, "NEXT video systems Hard- and Software Development GmbH", "NEXT-VIDEO-HARD--AND-SOFTWARE-DEVELOPMENT" }, { 0x0050C2, 0xE67000, 0xE67FFF, "Critical Link, LLC", "CRITICAL-LINK-LLC" }, { 0x0050C2, 0xE60000, 0xE60FFF, "TAIYO SEIKI CO.,LTD.", "TAIYO-SEIKI" }, { 0x0050C2, 0xE61000, 0xE61FFF, "Detech Electronics ApS", "DETECH-ELECTRONICS-APS" }, { 0x0050C2, 0xE75000, 0xE75FFF, "FSM AG", "FSM" }, { 0x0050C2, 0xEA5000, 0xEA5FFF, "Aerodata AG", "AERODATA" }, { 0x0050C2, 0xE9F000, 0xE9FFFF, "DataSoft Corporation", "DATASOFT" }, { 0x0050C2, 0xE2F000, 0xE2FFFF, "Beam Ltd", "BEAM" }, { 0x0050C2, 0xE2B000, 0xE2BFFF, "Plant Integrity Limited", "PLANT-INTEGRITY" }, { 0x0050C2, 0xDFE000, 0xDFEFFF, "Xitek Design Limited", "XITEK-DESIGN" }, { 0x0050C2, 0xE04000, 0xE04FFF, "Sec.Eng Systems Pty Ltd", "SEC-ENG-PTY" }, { 0x0050C2, 0xE01000, 0xE01FFF, "Tyco Traffic & Transportation", "TYCO-TRAFFIC-TRANSPORTATION" }, { 0x0050C2, 0xDF0000, 0xDF0FFF, "Koncar Electrical Engineering Institute", "KONCAR-ELECTRICAL-ENGINEERING-INSTITUTE" }, { 0x0050C2, 0xDFA000, 0xDFAFFF, "MAC Valves, Inc.", "MAC-VALVES" }, { 0x0050C2, 0xDF7000, 0xDF7FFF, "Combilent", "COMBILENT" }, { 0x0050C2, 0xE39000, 0xE39FFF, "Telemetrics Inc.", "TELEMETRICS" }, { 0x0050C2, 0xE35000, 0xE35FFF, "Omnica Corporation", "OMNICA" }, { 0x0050C2, 0xE25000, 0xE25FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xE21000, 0xE21FFF, "Norwia AS", "NORWIA-AS" }, { 0x0050C2, 0xE1B000, 0xE1BFFF, "Embedded Labs", "EMBEDDED-LABS" }, { 0x0050C2, 0xE17000, 0xE17FFF, "Gall Tankdatensysteme GmbH", "GALL-TANKDATENSYSTEME" }, { 0x0050C2, 0xE0F000, 0xE0FFFF, "Trentino Systems", "TRENTINO" }, { 0x0050C2, 0xE0C000, 0xE0CFFF, "YOUHO ELECTRIC IND.,LTD.", "YOUHO-ELECTRIC-IND" }, { 0x0050C2, 0xE0B000, 0xE0BFFF, "Seartech", "SEARTECH" }, { 0x0050C2, 0xE08000, 0xE08FFF, "KST Technology", "KST" }, { 0x0050C2, 0xD98000, 0xD98FFF, "Rong Shun Xuan Corp.", "RONG-SHUN-XUAN" }, { 0x0050C2, 0xD94000, 0xD94FFF, "Software Effect Enterprises, Inc", "SOFTWARE-EFFECT-ENTERPRISES" }, { 0x0050C2, 0xD8E000, 0xD8EFFF, "LSD Science&Technology Co.,Ltd.", "LSD-SCIENCE" }, { 0x0050C2, 0xD8A000, 0xD8AFFF, "OptoLink Industria e Comercio Ltda", "OPTOLINK-INDUSTRIA-E-COMERCIO-LTDA" }, { 0x0050C2, 0xDBF000, 0xDBFFFF, "One-Nemoto Engineering Corporation", "ONE-NEMOTO-ENGINEERING" }, { 0x0050C2, 0xDB5000, 0xDB5FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xDDC000, 0xDDCFFF, "Vision & Control GmbH", "VISION-CONTROL" }, { 0x0050C2, 0xDDD000, 0xDDDFFF, "A&A GENERAL SRL", "A-A-GENERAL-SRL" }, { 0x0050C2, 0xDA2000, 0xDA2FFF, "metraTec GmbH", "METRATEC" }, { 0x0050C2, 0xDA1000, 0xDA1FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0xDE6000, 0xDE6FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xDE7000, 0xDE7FFF, "Elan Systems", "ELAN" }, { 0x0050C2, 0xDC9000, 0xDC9FFF, "KinotonGmbH", "KINOTONGMBH" }, { 0x0050C2, 0xDA9000, 0xDA9FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0xD80000, 0xD80FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xD7A000, 0xD7AFFF, "Transbit Sp. z o.o.", "TRANSBIT-SP-Z-O-O" }, { 0x0050C2, 0xD76000, 0xD76FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0xD70000, 0xD70FFF, "C. Rob. Hammerstein GmbH & Co. KG", "C-ROB-HAMMERSTEIN" }, { 0x0050C2, 0xD6C000, 0xD6CFFF, "ALPHA Corporation", "ALPHA" }, { 0x0050C2, 0xCF6000, 0xCF6FFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0xCEC000, 0xCECFFF, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 0x0050C2, 0xCDF000, 0xCDFFFF, "CoreEL TEchnologies (I) Pvt Ltd", "COREEL-TECHNOLOGIES-I-PVT" }, { 0x0050C2, 0xCE0000, 0xCE0FFF, "Industrial Control Links, Inc.", "INDUSTRIAL-CONTROL-LINKS" }, { 0x0050C2, 0xD35000, 0xD35FFF, "UG Systems GmbH & Co. KG", "UG" }, { 0x0050C2, 0xD31000, 0xD31FFF, "UNGAVA Technologies Inc.", "UNGAVA-TECHNOLOGIES" }, { 0x0050C2, 0xD2E000, 0xD2EFFF, "RS Gesellschaft fur Informationstechnik mbH & Co KG", "RS-GESELLSCHAFT-FUR-INFORMATIONSTECHNIK-MBH" }, { 0x0050C2, 0xD2B000, 0xD2BFFF, "Video Tech Laboratories, Inc.", "VIDEO-TECH-LABORATORIES" }, { 0x0050C2, 0xD27000, 0xD27FFF, "Fr.Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xD24000, 0xD24FFF, "Expro North Sea", "EXPRO-NORTH-SEA" }, { 0x0050C2, 0xD21000, 0xD21FFF, "Innovative Circuit Technology", "INNOVATIVE-CIRCUIT" }, { 0x0050C2, 0xD1D000, 0xD1DFFF, "Moco Media Pty Ltd", "MOCO-MEDIA-PTY" }, { 0x0050C2, 0xD1E000, 0xD1EFFF, "Tobila Systems, Inc.", "TOBILA" }, { 0x0050C2, 0xD59000, 0xD59FFF, "BUANCO SYSTEM A/S", "BUANCO-SYSTEM-A/S" }, { 0x0050C2, 0xD58000, 0xD58FFF, "NIK-ELEKTRONIKA Ltd", "NIK-ELEKTRONIKA" }, { 0x0050C2, 0xD52000, 0xD52FFF, "F+D Feinwerk- und Drucktechnik GmbH", "F+D-FEINWERK--UND-DRUCKTECHNIK" }, { 0x0050C2, 0xD4F000, 0xD4FFFF, "SECOM GmbH", "SECOM" }, { 0x0050C2, 0xD4E000, 0xD4EFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xD46000, 0xD46FFF, "Thales Nederland BV", "THALES-NEDERLAND" }, { 0x0050C2, 0xD13000, 0xD13FFF, "GUNMA ELECTRONICS CO LTD", "GUNMA-ELECTRONICS" }, { 0x0050C2, 0xD0D000, 0xD0DFFF, "DECA Card Engineering GmbH", "DECA-CARD-ENGINEERING" }, { 0x0050C2, 0xD09000, 0xD09FFF, "Guardtec, Inc.", "GUARDTEC" }, { 0x0050C2, 0xD0A000, 0xD0AFFF, "Airpoint Co., Ltd.", "AIRPOINT" }, { 0x0050C2, 0xD06000, 0xD06FFF, "nCk Research LLC", "NCK-RESEARCH-LLC" }, { 0x0050C2, 0xD00000, 0xD00FFF, "Bodensee Gravitymeter Geosystem GmbH", "BODENSEE-GRAVITYMETER-GEOSYSTEM" }, { 0x0050C2, 0xD1A000, 0xD1AFFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x0050C2, 0xD17000, 0xD17FFF, "CUE, a.s.", "CUE-A-S" }, { 0x0050C2, 0xD14000, 0xD14FFF, "SAET I.S.", "SAET-I-S" }, { 0x0050C2, 0xD10000, 0xD10FFF, "Rosslare Enterprises Ltd.", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xD66000, 0xD66FFF, "Uvax Concepts", "UVAX-CONCEPTS" }, { 0x0050C2, 0xD62000, 0xD62FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xD5C000, 0xD5CFFF, "Ibetor S.L.", "IBETOR-S-L" }, { 0x0050C2, 0xD42000, 0xD42FFF, "Hagenuk KMT GmbH", "HAGENUK-KMT" }, { 0x0050C2, 0xD3F000, 0xD3FFFF, "CSS, LLC", "CSS-LLC" }, { 0x0050C2, 0xD3B000, 0xD3BFFF, "Gitsn Inc.", "GITSN" }, { 0x0050C2, 0xD38000, 0xD38FFF, "Kyowa Electronics Co.,Ltd.", "KYOWA-ELECTRONICS" }, { 0x0050C2, 0xCD5000, 0xCD5FFF, "Arcos Technologies Ltd.", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xCD2000, 0xCD2FFF, "SIM2 Multimedia S.p.A.", "SIM2-MULTIMEDIA-S-P-A" }, { 0x0050C2, 0xCCB000, 0xCCBFFF, "CaptiveAire Systems Inc.", "CAPTIVEAIRE" }, { 0x0050C2, 0xCC8000, 0xCC8FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xCBE000, 0xCBEFFF, "CODE BLUE CORPORATION", "CODE-BLUE" }, { 0x0050C2, 0xCC1000, 0xCC1FFF, "Level 3 Communications", "LEVEL-3-COMMUNICATION" }, { 0x0050C2, 0xCA0000, 0xCA0FFF, "Kiefer technic GmbH", "KIEFER-TECHNIC" }, { 0x0050C2, 0xC99000, 0xC99FFF, "HJPC Corporation dba Pactron", "HJPC-DBA-PACTRON" }, { 0x0050C2, 0xC96000, 0xC96FFF, "CyberCraft", "CYBERCRAFT" }, { 0x0050C2, 0xCAD000, 0xCADFFF, "Pacific Coast Engineering", "PACIFIC-COAST-ENGINEERING" }, { 0x0050C2, 0xCAA000, 0xCAAFFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xCA3000, 0xCA3FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xC8C000, 0xC8CFFF, "Lanmark Controls Inc.", "LANMARK-CONTROLS" }, { 0x0050C2, 0xC81000, 0xC81FFF, "Odyssee Systemes SAS", "ODYSSEE-SYSTEMES-SAS" }, { 0x0050C2, 0xC30000, 0xC30FFF, "Wagner Group GmbH", "WAGNER-GROUP" }, { 0x0050C2, 0xC2A000, 0xC2AFFF, "RealTime Systems Ltd", "REALTIME" }, { 0x0050C2, 0xC29000, 0xC29FFF, "Newtel Engineering S.r.l.", "NEWTEL-ENGINEERING-S-R-L" }, { 0x0050C2, 0xC26000, 0xC26FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0xC20000, 0xC20FFF, "SRC Computers, LLC", "SRC-COMPUTERS-LLC" }, { 0x0050C2, 0xC4A000, 0xC4AFFF, "Herrick Technology Laboratories, Inc.", "HERRICK-LABORATORIES" }, { 0x0050C2, 0xC40000, 0xC40FFF, "BAE Systems Bofors AB", "BAE-BOFORS-AB" }, { 0x0050C2, 0xC36000, 0xC36FFF, "SET GmbH", "SET" }, { 0x0050C2, 0xC54000, 0xC54FFF, "HPC Platform", "HPC-PLATFORM" }, { 0x0050C2, 0xC1F000, 0xC1FFFF, "Specialist Electronics Services Ltd", "SPECIALIST-ELECTRONICS-SERVICES" }, { 0x0050C2, 0xC1B000, 0xC1BFFF, "Graesslin GmbH", "GRAESSLIN" }, { 0x0050C2, 0xC16000, 0xC16FFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0xC13000, 0xC13FFF, "Dantec Dynamics A/S", "DANTEC-DYNAMICS-A/S" }, { 0x0050C2, 0xC09000, 0xC09FFF, "Globe Wireless", "GLOBE-WIRELESS" }, { 0x0050C2, 0xCB7000, 0xCB7FFF, "inotech GmbH", "INOTECH" }, { 0x0050C2, 0xCB4000, 0xCB4FFF, "GEA Farm Technologies GmbH", "GEA-FARM-TECHNOLOGIES" }, { 0x0050C2, 0xBBA000, 0xBBAFFF, "Systemteq Limited", "SYSTEMTEQ" }, { 0x0050C2, 0xBB9000, 0xBB9FFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0xBB6000, 0xBB6FFF, "Quarch Technology Ltd", "QUARCH" }, { 0x0050C2, 0xBB1000, 0xBB1FFF, "Pro4tech", "PRO4TECH" }, { 0x0050C2, 0xBAE000, 0xBAEFFF, "Fiber Connections Inc.", "FIBER-CONNECTIONS" }, { 0x0050C2, 0xBAB000, 0xBABFFF, "iDeal Teknoloji Bilisim Cozumleri A.S.", "IDEAL-TEKNOLOJI-BILISIM-COZUMLERI-A-S" }, { 0x0050C2, 0xBA7000, 0xBA7FFF, "RaumComputer Entwicklungs- und Vertriebs GmbH", "RAUMCOMPUTER-ENTWICKLUNGS--UND-VERTRIEBS" }, { 0x0050C2, 0xBA4000, 0xBA4FFF, "CUSTOS MOBILE S.L.", "CUSTOS-MOBILE-S-L" }, { 0x0050C2, 0xBA1000, 0xBA1FFF, "Transtechnik GmbH & Co.KG", "TRANSTECHNIK" }, { 0x0050C2, 0xB9D000, 0xB9DFFF, "W. Vershoven GmbH", "W-VERSHOVEN" }, { 0x0050C2, 0xB9A000, 0xB9AFFF, "Talo, NV Inc", "TALO-NV" }, { 0x0050C2, 0xB97000, 0xB97FFF, "ikerlan", "IKERLAN" }, { 0x0050C2, 0xB93000, 0xB93FFF, "EMC PARTNER AG", "EMC-PARTNER" }, { 0x0050C2, 0xB94000, 0xB94FFF, "Tritech International Ltd", "TRITECH" }, { 0x0050C2, 0xB90000, 0xB90FFF, "NAONWORKS Co., Ltd", "NAONWORKS" }, { 0x0050C2, 0xB8D000, 0xB8DFFF, "CEMSI", "CEMSI" }, { 0x0050C2, 0xB89000, 0xB89FFF, "ENTEC Electric & Electronic Co., LTD.", "ENTEC-ELECTRIC" }, { 0x0050C2, 0xBF5000, 0xBF5FFF, "AILES ELECTRONICS CO., LTD.", "AILES-ELECTRONICS" }, { 0x0050C2, 0xBEE000, 0xBEEFFF, "Private", "PRIVATE" }, { 0x0050C2, 0xBEF000, 0xBEFFFF, "SOCIEDAD IBERICA DE CONSTRUCCIONES ELECTRICAS, S.A. (SICE)", "SOCIEDAD-IBERICA-DE-CONSTRUCCIONES-ELECTRICAS-SICE" }, { 0x0050C2, 0xBEB000, 0xBEBFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xBE5000, 0xBE5FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xC02000, 0xC02FFF, "Hanning Elektro-Werke GmbH & Co. KG", "HANNING-ELEKTRO-WERKE" }, { 0x0050C2, 0xBFF000, 0xBFFFFF, "I.S.A. S.r.l.", "I-S-R-L" }, { 0x0050C2, 0xBF8000, 0xBF8FFF, "Crtiical Link", "CRTIICAL-LINK" }, { 0x0050C2, 0xBF9000, 0xBF9FFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0xB8A000, 0xB8AFFF, "MicroPoise", "MICROPOISE" }, { 0x0050C2, 0xB86000, 0xB86FFF, "ASTO", "ASTO" }, { 0x0050C2, 0xB83000, 0xB83FFF, "Advanced Storage Concepts, Inc.", "ADVANCED-STORAGE-CONCEPTS" }, { 0x0050C2, 0xB80000, 0xB80FFF, "iScreen LLC", "ISCREEN-LLC" }, { 0x0050C2, 0xB7C000, 0xB7CFFF, "Bettini srl", "BETTINI-SRL" }, { 0x0050C2, 0xBCA000, 0xBCAFFF, "Aitecsystem Co.,Ltd.", "AITECSYSTEM" }, { 0x0050C2, 0xBC7000, 0xBC7FFF, "PTS GmbH", "PTS" }, { 0x0050C2, 0xBC4000, 0xBC4FFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x0050C2, 0xBC3000, 0xBC3FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xBBD000, 0xBBDFFF, "ITS Telecom", "ITS-TELECOM" }, { 0x0050C2, 0xBC0000, 0xBC0FFF, "Galaxia Electronics", "GALAXIA-ELECTRONICS" }, { 0x0050C2, 0xB79000, 0xB79FFF, "MITSUYA LABORATORIES INC.", "MITSUYA-LABORATORIES" }, { 0x0050C2, 0xB72000, 0xB72FFF, "Advanced Desktop Systems Ltd", "ADVANCED-DESKTOP" }, { 0x0050C2, 0xB6F000, 0xB6FFFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xB6C000, 0xB6CFFF, "Drinelec", "DRINELEC" }, { 0x0050C2, 0xB68000, 0xB68FFF, "Electronic Systems Protection, Inc.", "PROTECTION" }, { 0x0050C2, 0xB62000, 0xB62FFF, "Measurement Technology NW", "MEASUREMENT-NW" }, { 0x0050C2, 0xB65000, 0xB65FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xB5E000, 0xB5EFFF, "Palgiken Co.,Ltd.", "PALGIKEN" }, { 0x0050C2, 0xB5B000, 0xB5BFFF, "Timberline Mfg Company", "TIMBERLINE-MFG-COMPANY" }, { 0x0050C2, 0xB58000, 0xB58FFF, "Real D", "REAL-D" }, { 0x0050C2, 0xBE1000, 0xBE1FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xBDB000, 0xBDBFFF, "GasTOPS Ltd.", "GASTOPS" }, { 0x0050C2, 0xBD7000, 0xBD7FFF, "SLAT", "SLAT" }, { 0x0050C2, 0xBD4000, 0xBD4FFF, "Global Security Devices", "GLOBAL-SECURITY-DEVICES" }, { 0x0050C2, 0xBD1000, 0xBD1FFF, "Ariem Technologies Pvt Ltd", "ARIEM-TECHNOLOGIES-PVT" }, { 0x0050C2, 0xBCD000, 0xBCDFFF, "Highlight Parking Systems Ltd", "HIGHLIGHT-PARKING" }, { 0x0050C2, 0xB0F000, 0xB0FFFF, "NARA Controls Inc.", "NARA-CONTROLS" }, { 0x0050C2, 0xB0C000, 0xB0CFFF, "SMARTB TECHNOLOGIES", "SMARTB-TECHNOLOGIES" }, { 0x0050C2, 0xAFC000, 0xAFCFFF, "Odus Technologies SA", "ODUS-TECHNOLOGIES" }, { 0x0050C2, 0xAFF000, 0xAFFFFF, "XoByte LLC", "XOBYTE-LLC" }, { 0x0050C2, 0xAF8000, 0xAF8FFF, "Global Satellite Engineering", "GLOBAL-SATELLITE-ENGINEERING" }, { 0x0050C2, 0xAF5000, 0xAF5FFF, "Kramara s.r.o.", "KRAMARA-S-R-O" }, { 0x0050C2, 0xAF2000, 0xAF2FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xAF1000, 0xAF1FFF, "Green Goose", "GREEN-GOOSE" }, { 0x0050C2, 0xAF0000, 0xAF0FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xAED000, 0xAEDFFF, "3Roam", "3ROAM" }, { 0x0050C2, 0xAE8000, 0xAE8FFF, "Bit-Lab PTY LTD", "BIT-LAB-PTY" }, { 0x0050C2, 0xAE5000, 0xAE5FFF, "ABS Gesellschaft f. Automatisierung, Bildverarbeitung und Software mbH", "ABS-GESELLSCHAFT-F-AUTOMATISIERUNG-BILDVERARBEITUNG-UND-SOFTWARE-MBH" }, { 0x0050C2, 0xADE000, 0xADEFFF, "Neoptix Inc.", "NEOPTIX" }, { 0x0050C2, 0xB2D000, 0xB2DFFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x0050C2, 0xB2A000, 0xB2AFFF, "Trench Austria GmbH", "TRENCH-AUSTRIA" }, { 0x0050C2, 0xB27000, 0xB27FFF, "ATEME", "ATEME" }, { 0x0050C2, 0xB23000, 0xB23FFF, "Ronyo Technologies s.r.o.", "RONYO-TECHNOLOGIES-S-R-O" }, { 0x0050C2, 0xB20000, 0xB20FFF, "FIVE9 NETWORK SYSTEMS LLC", "FIVE9-NETWORK-LLC" }, { 0x0050C2, 0xB1D000, 0xB1DFFF, "Telegenix", "TELEGENIX" }, { 0x0050C2, 0xB19000, 0xB19FFF, "Polytron Corporation", "POLYTRON" }, { 0x0050C2, 0xB16000, 0xB16FFF, "Neothings, Inc.", "NEOTHINGS" }, { 0x0050C2, 0xB13000, 0xB13FFF, "Measy Electronics Co., Ltd.", "MEASY-ELECTRONICS" }, { 0x0050C2, 0xB09000, 0xB09FFF, "Harper Chalice Group Limited", "HARPER-CHALICE-GROUP" }, { 0x0050C2, 0xB05000, 0xB05FFF, "POLA s.r.l.", "POLA-S-R-L" }, { 0x0050C2, 0xB06000, 0xB06FFF, "CompuDesigns, Inc.", "COMPUDESIGNS" }, { 0x0050C2, 0xB02000, 0xB02FFF, "MASTER CO LTD", "MASTER" }, { 0x0050C2, 0xB41000, 0xB41FFF, "Tata Power Company, Strategic Electronics Division", "TATA-POWER-COMPANY-STRATEGIC-ELECTRONICS-DIVISION" }, { 0x0050C2, 0xB3E000, 0xB3EFFF, "Sage Consultants", "SAGE-CONSULTANTS" }, { 0x0050C2, 0xB3B000, 0xB3BFFF, "Sportvision Inc.", "SPORTVISION" }, { 0x0050C2, 0xB34000, 0xB34FFF, "Meisol co.,ltd", "MEISOL" }, { 0x0050C2, 0xB31000, 0xB31FFF, "Shop Safe AG", "SHOP-SAFE" }, { 0x0050C2, 0xB53000, 0xB53FFF, "Prodco", "PRODCO" }, { 0x0050C2, 0xB50000, 0xB50FFF, "SELCO", "SELCO" }, { 0x0050C2, 0xB4E000, 0xB4EFFF, "AixControl GmbH", "AIXCONTROL" }, { 0x0050C2, 0xB4F000, 0xB4FFFF, "Sencon UK Ltd.", "SENCON-UK" }, { 0x0050C2, 0xB4B000, 0xB4BFFF, "Chitose Co.,Ltd", "CHITOSE" }, { 0x0050C2, 0xB48000, 0xB48FFF, "MTD GmbH", "MTD" }, { 0x0050C2, 0xB45000, 0xB45FFF, "Efftronics Systems (P) Ltd", "EFFTRONICS-P" }, { 0x0050C2, 0xADB000, 0xADBFFF, "GO engineering GmbH", "GO-ENGINEERING" }, { 0x0050C2, 0xAD4000, 0xAD4FFF, "Global Rainmakers Inc.", "GLOBAL-RAINMAKERS" }, { 0x0050C2, 0xAD1000, 0xAD1FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xACB000, 0xACBFFF, "U-CARE INC.", "U-CARE" }, { 0x0050C2, 0xA95000, 0xA95FFF, "INNOVACIONES Microelectrónicas SL (AnaFocus)", "INNOVACIONES-MICROELECTRóNICAS-SL-ANAFOCUS" }, { 0x0050C2, 0xA8F000, 0xA8FFFF, "Quantum3D, Inc.", "QUANTUM3D" }, { 0x0050C2, 0xA8A000, 0xA8AFFF, "Audio Engineering Ltd.", "AUDIO-ENGINEERING" }, { 0x0050C2, 0xA86000, 0xA86FFF, "LIMAB AB", "LIMAB-AB" }, { 0x0050C2, 0xAB6000, 0xAB6FFF, "Gygax Embedded Engineering GEE.ch", "GYGAX-EMBEDDED-ENGINEERING-GEE-CH" }, { 0x0050C2, 0xAB3000, 0xAB3FFF, "Compañía de Instrumentacion y control, S.L.", "COMPAñíA-DE-INSTRUMENTACION-Y-CONTROL-S-L" }, { 0x0050C2, 0xAA9000, 0xAA9FFF, "SAN GIORGIO S.E.I.N. srl", "SAN-GIORGIO-S-E-I-N-SRL" }, { 0x0050C2, 0xAAD000, 0xAADFFF, "Update Systems Inc.", "UPDATE" }, { 0x0050C2, 0xA82000, 0xA82FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xA85000, 0xA85FFF, "JOYSYSTEM", "JOYSYSTEM" }, { 0x0050C2, 0xA7C000, 0xA7CFFF, "Pneu-Logic Corporation", "PNEU-LOGIC" }, { 0x0050C2, 0xACA000, 0xACAFFF, "Soft & Control Technology s.r.o.", "SOFT-CONTROL-S-R-O" }, { 0x0050C2, 0xAC1000, 0xAC1FFF, "DAISHIN-DENSHI Co., Ltd", "DAISHIN-DENSHI" }, { 0x0050C2, 0xAC0000, 0xAC0FFF, "DS PRO Audio Ltda", "DS-PRO-AUDIO-LTDA" }, { 0x0050C2, 0xABD000, 0xABDFFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0xAB7000, 0xAB7FFF, "Twinfalls Technologies", "TWINFALLS-TECHNOLOGIES" }, { 0x0050C2, 0xA72000, 0xA72FFF, "Gamber-Johnson LLC.", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0xA6E000, 0xA6EFFF, "Screen Technics Pty Limited", "SCREEN-TECHNICS-PTY" }, { 0x0050C2, 0xA68000, 0xA68FFF, "X-Pert Paint Mixing Systems", "X-PERT-PAINT-MIXING" }, { 0x0050C2, 0xA64000, 0xA64FFF, "tetronik GmbH AEN", "TETRONIK-AEN" }, { 0x0050C2, 0xA5E000, 0xA5EFFF, "Ansen Investment Holdings Ltd.", "ANSEN-INVESTMENT-HOLDINGS" }, { 0x0050C2, 0xA46000, 0xA46FFF, "Softronics Ltd.", "SOFTRONICS" }, { 0x0050C2, 0xA40000, 0xA40FFF, "Mosberger Consulting LLC", "MOSBERGER-CONSULTING-LLC" }, { 0x0050C2, 0xA3C000, 0xA3CFFF, "Brähler ICS Konferenztechnik AG", "BRAEHLER-ICS-KONFERENZTECHNIK" }, { 0x0050C2, 0xA36000, 0xA36FFF, "Shenzhen Shangji electronic Co.Ltd", "SHENZHEN-SHANGJI" }, { 0x0050C2, 0xA32000, 0xA32FFF, "Harris Designs of NRV, Inc.", "HARRIS-DESIGNS-OF-NRV" }, { 0x0050C2, 0xA2C000, 0xA2CFFF, "KWS-Electronic GmbH", "KWS" }, { 0x0050C2, 0xA27000, 0xA27FFF, "meconet e. K.", "MECONET-E-K" }, { 0x0050C2, 0xA23000, 0xA23FFF, "Agility Mfg, Inc.", "AGILITY-MFG" }, { 0x0050C2, 0xA19000, 0xA19FFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0xA5A000, 0xA5AFFF, "ITAS A/S", "ITAS-A/S" }, { 0x0050C2, 0xA54000, 0xA54FFF, "Diamond Point International (Europe) Ltd", "DIAMOND-POINT-EUROPE" }, { 0x0050C2, 0xA50000, 0xA50FFF, "i-RED Infrarot Systeme GmbH", "I-RED-INFRAROT-SYSTEME" }, { 0x0050C2, 0xA4A000, 0xA4AFFF, "DITRON S.r.l.", "DITRON-S-R-L" }, { 0x0050C2, 0xAA3000, 0xAA3FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xA9F000, 0xA9FFFF, "YellowSoft Co., Ltd.", "YELLOWSOFT" }, { 0x0050C2, 0xA99000, 0xA99FFF, "Haivision Systems Inc", "HAIVISION" }, { 0x0050C2, 0x983000, 0x983FFF, "Bogart Engineering", "BOGART-ENGINEERING" }, { 0x0050C2, 0x97F000, 0x97FFFF, "C&I Co.Ltd", "C-I" }, { 0x0050C2, 0x97C000, 0x97CFFF, "Creacon Technologies B.V.", "CREACON-TECHNOLOGIES" }, { 0x0050C2, 0x83E000, 0x83EFFF, "KPE spol. s r.o.", "KPE-SPOL-S-R-O" }, { 0x0050C2, 0x979000, 0x979FFF, "Far South Networks (Pty) Ltd", "FAR-SOUTH-NETWORKS-PTY" }, { 0x0050C2, 0x975000, 0x975FFF, "Pyramid Technical Consultants", "PYRAMID-TECHNICAL-CONSULTANTS" }, { 0x0050C2, 0xA0F000, 0xA0FFFF, "Visualware Inc", "VISUALWARE" }, { 0x0050C2, 0xA05000, 0xA05FFF, "Adgil Design Inc.", "ADGIL-DESIGN" }, { 0x0050C2, 0x9FB000, 0x9FBFFF, "Villbau Kft.", "VILLBAU-KFT" }, { 0x0050C2, 0x9F1000, 0x9F1FFF, "IDEAS s.r.l.", "IDEAS-S-R-L" }, { 0x0050C2, 0x9DD000, 0x9DDFFF, "Institut Dr. Foerster", "INSTITUT-DR-FOERSTER" }, { 0x0050C2, 0x9D3000, 0x9D3FFF, "Telemetrie Elektronik GmbH", "TELEMETRIE-ELEKTRONIK" }, { 0x0050C2, 0x986000, 0x986FFF, "DSCI", "DSCI" }, { 0x0050C2, 0x9C9000, 0x9C9FFF, "LUMINEX Lighting Control Equipment", "LUMINEX-LIGHTING-CONTROL-EQUIPMENT" }, { 0x0050C2, 0x9C4000, 0x9C4FFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0x8F9000, 0x8F9FFF, "Honeywell International", "HONEYWELL" }, { 0x0050C2, 0x8F4000, 0x8F4FFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0x8F1000, 0x8F1FFF, "Detection Technologies Ltd.", "DETECTION-TECHNOLOGIES" }, { 0x0050C2, 0x965000, 0x965FFF, "Emitech Corporation", "EMITECH" }, { 0x0050C2, 0x963000, 0x963FFF, "Lécureux SA", "LéCUREUX" }, { 0x0050C2, 0x960000, 0x960FFF, "kuroneko dennnou kenkyuushitsu", "KURONEKO-DENNNOU-KENKYUUSHITSU" }, { 0x0050C2, 0x95D000, 0x95DFFF, "full electronic system", "FULL-SYSTEM" }, { 0x0050C2, 0x958000, 0x958FFF, "Sensoptics Ltd", "SENSOPTICS" }, { 0x0050C2, 0x926000, 0x926FFF, "DITEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0x91C000, 0x91CFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x96F000, 0x96FFFF, "Varec Inc.", "VAREC" }, { 0x0050C2, 0x96B000, 0x96BFFF, "Electronic Media Services Ltd", "MEDIA-SERVICES" }, { 0x0050C2, 0x955000, 0x955FFF, "Roessmann Engineering", "ROESSMANN-ENGINEERING" }, { 0x0050C2, 0x94E000, 0x94EFFF, "Zynix Original Sdn. Bhd.", "ZYNIX-ORIGINAL-SDN-BHD" }, { 0x0050C2, 0x94A000, 0x94AFFF, "TruMedia Measurement Ltd.", "TRUMEDIA-MEASUREMENT" }, { 0x0050C2, 0x93A000, 0x93AFFF, "ALPHATRONICS nv", "ALPHATRONICS-NV" }, { 0x0050C2, 0x930000, 0x930FFF, "NETA Elektronik AS", "NETA-ELEKTRONIK-AS" }, { 0x0050C2, 0x912000, 0x912FFF, "ASSET InterTech, Inc.", "ASSET-INTERTECH" }, { 0x0050C2, 0x908000, 0x908FFF, "Codex Digital Ltd", "CODEX-DIGITAL" }, { 0x0050C2, 0x904000, 0x904FFF, "R2Sonic, LLC", "R2SONIC-LLC" }, { 0x0050C2, 0x900000, 0x900FFF, "Magor Communications Corp", "MAGOR-COMMUNICATION" }, { 0x0050C2, 0x8B8000, 0x8B8FFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x8B5000, 0x8B5FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x8AE000, 0x8AEFFF, "DESARROLLO DE SISTEMAS INTEGRADOS DE CONTROL S.A.", "DESARROLLO-DE-SISTEMAS-INTEGRADOS-DE-CONTROL" }, { 0x0050C2, 0x8AF000, 0x8AFFFF, "Xelerated", "XELERATED" }, { 0x0050C2, 0x8AB000, 0x8ABFFF, "Nanomotion Ltd.", "NANOMOTION" }, { 0x0050C2, 0x874000, 0x874FFF, "Arcos Technologies Ltd.", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0x873000, 0x873FFF, "XRONET Corporation", "XRONET" }, { 0x0050C2, 0x870000, 0x870FFF, "LOGEL S.R.L.", "LOGEL-S-R-L" }, { 0x0050C2, 0x86A000, 0x86AFFF, "USM Systems, Ltd", "USM" }, { 0x0050C2, 0x869000, 0x869FFF, "Funkwerk plettac electronic GmbH", "FUNKWERK-PLETTAC" }, { 0x0050C2, 0x866000, 0x866FFF, "Saia Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x8CC000, 0x8CCFFF, "LyconSys GmbH & Co.KG", "LYCONSYS" }, { 0x0050C2, 0x8C9000, 0x8C9FFF, "A+S Aktuatorik und Sensorik GmbH", "A+S-AKTUATORIK-UND-SENSORIK" }, { 0x0050C2, 0x8C2000, 0x8C2FFF, "Access Control Systems JSC", "ACCESS-CONTROL-JSC" }, { 0x0050C2, 0x8BF000, 0x8BFFFF, "ARISTO Graphic Systeme GmbH & Co. KG", "ARISTO-GRAPHIC-SYSTEME" }, { 0x0050C2, 0x8E0000, 0x8E0FFF, "Shenzhen Pennda Technologies Co., Ltd.", "SHENZHEN-PENNDA-TECHNOLOGIES" }, { 0x0050C2, 0x8DD000, 0x8DDFFF, "GIMCON", "GIMCON" }, { 0x0050C2, 0x8D6000, 0x8D6FFF, "UltraVision Security Systems, Inc.", "ULTRAVISION-SECURITY" }, { 0x0050C2, 0x8D3000, 0x8D3FFF, "IFAM GmbH", "IFAM" }, { 0x0050C2, 0x8A4000, 0x8A4FFF, "BALOGH T.A.G Corporation", "BALOGH-T-A-G" }, { 0x0050C2, 0x8A5000, 0x8A5FFF, "Mocon, Inc.", "MOCON" }, { 0x0050C2, 0x899000, 0x899FFF, "Inico Technologies Ltd.", "INICO-TECHNOLOGIES" }, { 0x0050C2, 0x896000, 0x896FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0x892000, 0x892FFF, "Trakce a.s.", "TRAKCE-A-S" }, { 0x0050C2, 0x891000, 0x891FFF, "Admiral Secure Products, Ltd.", "ADMIRAL-SECURE-PRODUCTS" }, { 0x0050C2, 0x88E000, 0x88EFFF, "Cardinal Scale Mfg Co", "CARDINAL-SCALE-MFG" }, { 0x0050C2, 0x887000, 0x887FFF, "Inventis Technology Pty Limited", "INVENTIS-PTY" }, { 0x0050C2, 0x884000, 0x884FFF, "IP Thinking A/S", "IP-THINKING-A/S" }, { 0x0050C2, 0x87E000, 0x87EFFF, "SCM PRODUCTS, INC.", "SCM-PRODUCTS" }, { 0x0050C2, 0x87D000, 0x87DFFF, "AT&T Government Solutions", "AT-T-GOVERNMENT-SOLUTIONS" }, { 0x0050C2, 0x87A000, 0x87AFFF, "Spectrum Management, LC", "SPECTRUM-MANAGEMENT-LC" }, { 0x0050C2, 0x856000, 0x856FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0x84E000, 0x84EFFF, "DRACO SYSTEMS", "DRACO" }, { 0x0050C2, 0x860000, 0x860FFF, "Eutron S.p.A.", "EUTRON-S-P-A" }, { 0x0050C2, 0x858000, 0x858FFF, "Wireless Acquisition LLC", "WIRELESS-ACQUISITION-LLC" }, { 0x0050C2, 0x8EA000, 0x8EAFFF, "ATEME", "ATEME" }, { 0x0050C2, 0x8E7000, 0x8E7FFF, "MKT Systemtechnik", "MKT-SYSTEMTECHNIK" }, { 0x0050C2, 0x7F9000, 0x7F9FFF, "Karl DUNGS GmbH & Co. KG", "KARL-DUNGS" }, { 0x0050C2, 0x7F3000, 0x7F3FFF, "SOREC", "SOREC" }, { 0x0050C2, 0x7EF000, 0x7EFFFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x7F0000, 0x7F0FFF, "Network Harbor, Inc.", "NETWORK-HARBOR" }, { 0x0050C2, 0x7EC000, 0x7ECFFF, "Lyngsoe Systems", "LYNGSOE" }, { 0x0050C2, 0x7E6000, 0x7E6FFF, "Empirix Italy S.p.A.", "EMPIRIX-ITALY-S-P-A" }, { 0x0050C2, 0x7D8000, 0x7D8FFF, "InnoScan K/S", "INNOSCAN-K/S" }, { 0x0050C2, 0x5A2000, 0x5A2FFF, "iNET Systems Inc.", "INET" }, { 0x0050C2, 0x7D1000, 0x7D1FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x7D4000, 0x7D4FFF, "WR Systems, Ltd.", "WR" }, { 0x0050C2, 0x825000, 0x825FFF, "Funkwerk Information Technologies Karlsfeld GmbH", "FUNKWERK-INFORMATION-TECHNOLOGIES-KARLSFELD" }, { 0x0050C2, 0x821000, 0x821FFF, "MISCO Refractometer", "MISCO-REFRACTOMETER" }, { 0x0050C2, 0x84B000, 0x84BFFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0x844000, 0x844FFF, "Prodigy Electronics Limited", "PRODIGY-ELECTRONICS" }, { 0x0050C2, 0x842000, 0x842FFF, "Quantum Controls BV", "QUANTUM-CONTROLS" }, { 0x0050C2, 0x7E2000, 0x7E2FFF, "DIGITROL LTD", "DIGITROL" }, { 0x0050C2, 0x7DF000, 0x7DFFFF, "Private", "PRIVATE" }, { 0x0050C2, 0x7DC000, 0x7DCFFF, "aiXtrusion GmbH", "AIXTRUSION" }, { 0x0050C2, 0x81B000, 0x81BFFF, "Brain Tech Co., Ltd", "BRAIN-TECH" }, { 0x0050C2, 0x817000, 0x817FFF, "Odin TeleSystems Inc", "ODIN-TELESYSTEMS" }, { 0x0050C2, 0x811000, 0x811FFF, "Open System Solutions Limited", "OPEN-SYSTEM-SOLUTIONS" }, { 0x0050C2, 0x80D000, 0x80DFFF, "Acube Systems s.r.l.", "ACUBE-S-R-L" }, { 0x0050C2, 0x838000, 0x838FFF, "T PROJE MUHENDISLIK DIS. TIC. LTD. STI.", "T-PROJE-MUHENDISLIK-DIS-TIC-STI" }, { 0x0050C2, 0x836000, 0x836FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x833000, 0x833FFF, "LaserLinc, Inc.", "LASERLINC" }, { 0x0050C2, 0x82F000, 0x82FFFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x0050C2, 0x82B000, 0x82BFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x807000, 0x807FFF, "TECHNOMARK", "TECHNOMARK" }, { 0x0050C2, 0x803000, 0x803FFF, "dB Broadcast Limited", "DB-BROADCAST" }, { 0x0050C2, 0x7FD000, 0x7FDFFF, "Adeneo", "ADENEO" }, { 0x0050C2, 0x7C9000, 0x7C9FFF, "Bluebell Opticom Limited", "BLUEBELL-OPTICOM" }, { 0x0050C2, 0x7C2000, 0x7C2FFF, "DSR Information Technologies Ltd.", "DSR-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x79A000, 0x79AFFF, "JMC America, LLC", "JMC-AMERICA-LLC" }, { 0x0050C2, 0x797000, 0x797FFF, "Tiefenbach Control Systems GmbH", "TIEFENBACH-CONTROL" }, { 0x0050C2, 0x798000, 0x798FFF, "Indefia", "INDEFIA" }, { 0x0050C2, 0x790000, 0x790FFF, "GE Security-Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x7AE000, 0x7AEFFF, "Global Tel-Link", "GLOBAL-TEL-LINK" }, { 0x0050C2, 0x7AB000, 0x7ABFFF, "General Microsystems Sdn Bhd", "GENERAL-MICROSYSTEMS-SDN-BHD" }, { 0x0050C2, 0x7A4000, 0x7A4FFF, "Calibre UK LTD", "CALIBRE-UK" }, { 0x0050C2, 0x7A1000, 0x7A1FFF, "Field Design Service", "FIELD-DESIGN-SERVICE" }, { 0x0050C2, 0x7A2000, 0x7A2FFF, "RaySat Israel LTD", "RAYSAT-ISRAEL" }, { 0x0050C2, 0x77A000, 0x77AFFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x0050C2, 0x776000, 0x776FFF, "Integrated Security Corporation", "INTEGRATED-SECURITY" }, { 0x0050C2, 0x770000, 0x770FFF, "Cadex Electronics Inc.", "CADEX-ELECTRONICS" }, { 0x0050C2, 0x76E000, 0x76EFFF, "Crinia Corporation", "CRINIA" }, { 0x0050C2, 0x76B000, 0x76BFFF, "Putercom Enterprise Co., LTD.", "PUTERCOM" }, { 0x0050C2, 0x767000, 0x767FFF, "EID", "EID" }, { 0x0050C2, 0x78D000, 0x78DFFF, "Telairity", "TELAIRITY" }, { 0x0050C2, 0x78E000, 0x78EFFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0x786000, 0x786FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x780000, 0x780FFF, "IQ Solutions GmbH & Co. KG", "IQ-SOLUTIONS" }, { 0x0050C2, 0x763000, 0x763FFF, "XtendWave", "XTENDWAVE" }, { 0x0050C2, 0x75D000, 0x75DFFF, "Fluid Analytics, Inc.", "FLUID-ANALYTICS" }, { 0x0050C2, 0x759000, 0x759FFF, "Sequentric Energy Systems, LLC", "SEQUENTRIC-ENERGY-LLC" }, { 0x0050C2, 0x73B000, 0x73BFFF, "On Air Networks", "ON-AIR-NETWORKS" }, { 0x0050C2, 0x735000, 0x735FFF, "Ant Lamp, Inc", "ANT-LAMP" }, { 0x0050C2, 0x731000, 0x731FFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0x753000, 0x753FFF, "ABB", "ABB" }, { 0x0050C2, 0x74F000, 0x74FFFF, "German Technologies", "GERMAN-TECHNOLOGIES" }, { 0x0050C2, 0x745000, 0x745FFF, "ACISA", "ACISA" }, { 0x0050C2, 0x749000, 0x749FFF, "Affolter Technologies SA", "AFFOLTER-TECHNOLOGIES" }, { 0x0050C2, 0x73F000, 0x73FFFF, "MEDAV GmbH", "MEDAV" }, { 0x0050C2, 0x7BF000, 0x7BFFFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x0050C2, 0x7B8000, 0x7B8FFF, "Design 2000 Pty Ltd", "DESIGN-2000-PTY" }, { 0x0050C2, 0x7B5000, 0x7B5FFF, "DIT-MCO International", "DIT-MCO" }, { 0x0050C2, 0x6B7000, 0x6B7FFF, "System LSI CO.Ltd.", "SYSTEM-LSI" }, { 0x0050C2, 0x6AD000, 0x6ADFFF, "Heim- & Bürokommunikation", "HEIM--BUEROKOMMUNIKATION" }, { 0x0050C2, 0x6AE000, 0x6AEFFF, "Qualisys AB", "QUALISYS-AB" }, { 0x0050C2, 0x6A7000, 0x6A7FFF, "Hoer GmbH & Co. Industrie-Electronic KG", "HOER-INDUSTRIE" }, { 0x0050C2, 0x708000, 0x708FFF, "Smartek d.o.o.", "SMARTEK-D-O-O" }, { 0x0050C2, 0x705000, 0x705FFF, "Hauch & Bach ApS", "HAUCH-BACH-APS" }, { 0x0050C2, 0x701000, 0x701FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x700000, 0x700FFF, "GEM-MED SL", "GEM-MED-SL" }, { 0x0050C2, 0x6FD000, 0x6FDFFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x6F7000, 0x6F7FFF, "infoplan Gesellschaftfür Informationssysteme mbH", "INFOPLAN-GESELLSCHAFTFUER-INFORMATIONSSYSTEME-MBH" }, { 0x0050C2, 0x71A000, 0x71AFFF, "Logus Broadband Wireless Solutions Inc.", "LOGUS-BROADBAND-WIRELESS-SOLUTIONS" }, { 0x0050C2, 0x714000, 0x714FFF, "T.E.AM., S. A.", "T-E-AM-S-A" }, { 0x0050C2, 0x70D000, 0x70DFFF, "ela-soft GmbH & Co. KG", "ELA-SOFT" }, { 0x0050C2, 0x710000, 0x710FFF, "Wharton Electronics Ltd", "WHARTON-ELECTRONICS" }, { 0x0050C2, 0x72B000, 0x72BFFF, "Sequestered Solutions", "SEQUESTERED-SOLUTIONS" }, { 0x0050C2, 0x727000, 0x727FFF, "Pelweckyj Videotechnik GmbH", "PELWECKYJ-VIDEOTECHNIK" }, { 0x0050C2, 0x728000, 0x728FFF, "InterDigital Canada Ltd", "INTERDIGITAL-CANADA" }, { 0x0050C2, 0x721000, 0x721FFF, "Spectrum Communications FZE", "SPECTRUM-COMMUNICATION-FZE" }, { 0x0050C2, 0x71E000, 0x71EFFF, "ASKI Industrie Elektronik Ges.m.b.H.", "ASKI-INDUSTRIE-ELEKTRONIK-GES-M-B-H" }, { 0x0050C2, 0x6E9000, 0x6E9FFF, "Bando electronic communication Co.Lltd", "BANDO-COMMUNICATION-LLTD" }, { 0x0050C2, 0x6E3000, 0x6E3FFF, "Miros AS", "MIROS-AS" }, { 0x0050C2, 0x6DF000, 0x6DFFFF, "QR Sciences Ltd", "QR-SCIENCES" }, { 0x0050C2, 0x6D9000, 0x6D9FFF, "Ajeco Oy", "AJECO-OY" }, { 0x0050C2, 0x6CF000, 0x6CFFFF, "Microway", "MICROWAY" }, { 0x0050C2, 0x6D5000, 0x6D5FFF, "Becker Electronics GmbH", "BECKER-ELECTRONICS" }, { 0x0050C2, 0x6CB000, 0x6CBFFF, "Stream Processors", "STREAM-PROCESSORS" }, { 0x0050C2, 0x6A2000, 0x6A2FFF, "Cadi Scientific Pte Ltd", "CADI-SCIENTIFIC-PTE" }, { 0x0050C2, 0x69E000, 0x69EFFF, "Ideus AB", "IDEUS-AB" }, { 0x0050C2, 0x69A000, 0x69AFFF, "StoreTech Limited", "STORETECH" }, { 0x0050C2, 0x694000, 0x694FFF, "Initel srl", "INITEL-SRL" }, { 0x0050C2, 0x6F3000, 0x6F3FFF, "E3Switch LLC", "E3SWITCH-LLC" }, { 0x0050C2, 0x6ED000, 0x6EDFFF, "Sechan Electronics, Inc.", "SECHAN-ELECTRONICS" }, { 0x0050C2, 0x6C5000, 0x6C5FFF, "Oerlikon Contraves AG", "OERLIKON-CONTRAVES" }, { 0x0050C2, 0x6C1000, 0x6C1FFF, "RADIUS Sweden AB", "RADIUS-SWEDEN-AB" }, { 0x0050C2, 0x6B8000, 0x6B8FFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0x6BB000, 0x6BBFFF, "Ele.Mag S.r.l.", "ELE-MAG-S-R-L" }, { 0x0050C2, 0x62D000, 0x62DFFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x627000, 0x627FFF, "JungleSystem Co., Ltd.", "JUNGLESYSTEM" }, { 0x0050C2, 0x624000, 0x624FFF, "Comtest Networks", "COMTEST-NETWORKS" }, { 0x0050C2, 0x655000, 0x655FFF, "Physik Instrumente (PI) GmbH&Co.KG", "PHYSIK-INSTRUMENTE-PI" }, { 0x0050C2, 0x658000, 0x658FFF, "OpenPKG GmbH", "OPENPKG" }, { 0x0050C2, 0x64E000, 0x64EFFF, "Northern Power", "NORTHERN-POWER" }, { 0x0050C2, 0x64B000, 0x64BFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x644000, 0x644FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x63B000, 0x63BFFF, "Powis Corporation", "POWIS" }, { 0x0050C2, 0x638000, 0x638FFF, "HUNGAROCOM Telecommunication Ltd.", "HUNGAROCOM-TELECOMMUNICATION" }, { 0x0050C2, 0x637000, 0x637FFF, "Omnitrol Networks, Inc.", "OMNITROL-NETWORKS" }, { 0x0050C2, 0x631000, 0x631FFF, "Fraunhofer IIS", "FRAUNHOFER-IIS" }, { 0x0050C2, 0x62E000, 0x62EFFF, "TDM Ingénierie", "TDM-INGéNIERIE" }, { 0x0050C2, 0x690000, 0x690FFF, "GHL Systems Berhad", "GHL-BERHAD" }, { 0x0050C2, 0x68A000, 0x68AFFF, "Zhuhai Jiahe Electronics Co.,LTD", "ZHUHAI-JIAHE-ELECTRONICS" }, { 0x0050C2, 0x686000, 0x686FFF, "ANNAX Anzeigesysteme GmbH", "ANNAX-ANZEIGESYSTEME" }, { 0x0050C2, 0x680000, 0x680FFF, "Honey Network Research Limited", "HONEY-NETWORK-RESEARCH" }, { 0x0050C2, 0x67D000, 0x67DFFF, "ESA Messtechnik GmbH", "ESA-MESSTECHNIK" }, { 0x0050C2, 0x606000, 0x606FFF, "Shenzhen Huazhong Technology Inc", "SHENZHEN-HUAZHONG" }, { 0x0050C2, 0x5FC000, 0x5FCFFF, "FilmLight Limited", "FILMLIGHT" }, { 0x0050C2, 0x5FF000, 0x5FFFFF, "Gazelle Monitoring Systems", "GAZELLE-MONITORING" }, { 0x0050C2, 0x61A000, 0x61AFFF, "Communication Components Inc.", "COMMUNICATION-COMPONENTS" }, { 0x0050C2, 0x61D000, 0x61DFFF, "Sutus Inc", "SUTUS" }, { 0x0050C2, 0x613000, 0x613FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x610000, 0x610FFF, "FDT Manufacturing, LLC", "FDT-MANUFACTURING-LLC" }, { 0x0050C2, 0x609000, 0x609FFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0x5F5000, 0x5F5FFF, "Genesis inc", "GENESIS" }, { 0x0050C2, 0x5F2000, 0x5F2FFF, "ESEM Grünau GmbH & Co. KG", "ESEM-GRUENAU" }, { 0x0050C2, 0x66C000, 0x66CFFF, "DESY", "DESY" }, { 0x0050C2, 0x668000, 0x668FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x669000, 0x669FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x662000, 0x662FFF, "Asia Pacific Card & System Sdn Bhd", "ASIA-PACIFIC-CARD-SYSTEM-SDN-BHD" }, { 0x0050C2, 0x65F000, 0x65FFFF, "Invocon, Inc.", "INVOCON" }, { 0x0050C2, 0x676000, 0x676FFF, "EDS", "EDS" }, { 0x0050C2, 0x673000, 0x673FFF, "Ferrari electronic AG", "FERRARI" }, { 0x0050C2, 0x672000, 0x672FFF, "DDS Elettronica srl", "DDS-ELETTRONICA-SRL" }, { 0x0050C2, 0x568000, 0x568FFF, "GeoFocus, LLC", "GEOFOCUS-LLC" }, { 0x0050C2, 0x565000, 0x565FFF, "WORKPOWER TECNOLOGIA ELETRONICA LTDA-EPP", "WORKPOWER-TECNOLOGIA-ELETRONICA-LTDA-EPP" }, { 0x0050C2, 0x5A0000, 0x5A0FFF, "Rudolph Technologies, Inc.", "RUDOLPH-TECHNOLOGIES" }, { 0x0050C2, 0x5E1000, 0x5E1FFF, "Ittiam Systems (P) Ltd", "ITTIAM-P" }, { 0x0050C2, 0x5DC000, 0x5DCFFF, "RM Michaelides Software & Elektronik GmbH", "RM-MICHAELIDES-SOFTWARE-ELEKTRONIK" }, { 0x0050C2, 0x596000, 0x596FFF, "SPANSION", "SPANSION" }, { 0x0050C2, 0x599000, 0x599FFF, "Fen Technology Limited", "FEN" }, { 0x0050C2, 0x58F000, 0x58FFFF, "XoIP Systems Pty Ltd", "XOIP-PTY" }, { 0x0050C2, 0x58C000, 0x58CFFF, "Lattice Semiconductor Corp. (LPA)", "LATTICE-SEMICONDUCTOR-LPA" }, { 0x0050C2, 0x582000, 0x582FFF, "AllSun A/S", "ALLSUN-A/S" }, { 0x0050C2, 0x57B000, 0x57BFFF, "ptswitch", "PTSWITCH" }, { 0x0050C2, 0x576000, 0x576FFF, "Visi-tech Systems Ltd", "VISI-TECH" }, { 0x0050C2, 0x56F000, 0x56FFFF, "GMA, LLC", "GMA-LLC" }, { 0x0050C2, 0x572000, 0x572FFF, "Chell Instruments Ltd", "CHELL-INSTRUMENTS" }, { 0x0050C2, 0x5EB000, 0x5EBFFF, "Garper Telecomunicaciones, S.L.", "GARPER-TELECOMUNICACIONES-S-L" }, { 0x0050C2, 0x5E8000, 0x5E8FFF, "Info-Chip Communications Ltd.", "INFO-CHIP-COMMUNICATION" }, { 0x0050C2, 0x543000, 0x543FFF, "DIGI SESN AG", "DIGI-SESN" }, { 0x0050C2, 0x544000, 0x544FFF, "Zetera", "ZETERA" }, { 0x0050C2, 0x540000, 0x540FFF, "Mesure Controle Commande", "MESURE-CONTROLE-COMMANDE" }, { 0x0050C2, 0x53D000, 0x53DFFF, "Digital communications Technologies", "DIGITAL-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0x53A000, 0x53AFFF, "Image Control Design Limited", "IMAGE-CONTROL-DESIGN" }, { 0x0050C2, 0x536000, 0x536FFF, "C2 DIAGNOSTICS", "C2-DIAGNOSTICS" }, { 0x0050C2, 0x533000, 0x533FFF, "NanShanBridge Co.Ltd", "NANSHANBRIDGE" }, { 0x0050C2, 0x54D000, 0x54DFFF, "Silent System", "SILENT-SYSTEM" }, { 0x0050C2, 0x54E000, 0x54EFFF, "Convergent Design", "CONVERGENT-DESIGN" }, { 0x0050C2, 0x54A000, 0x54AFFF, "IPTC Tech. Comm. AB", "IPTC-TECH-COMM-AB" }, { 0x0050C2, 0x547000, 0x547FFF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0x0050C2, 0x530000, 0x530FFF, "Innovation, Institute, Inc", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x52C000, 0x52CFFF, "VITEC MULTIMEDIA", "VITEC-MULTIMEDIA" }, { 0x0050C2, 0x529000, 0x529FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x526000, 0x526FFF, "AC SYSTEMS, s.r.o.", "AC-S-R-O" }, { 0x0050C2, 0x522000, 0x522FFF, "Mark IV IDS Corp.", "MARK-IV-IDS" }, { 0x0050C2, 0x515000, 0x515FFF, "Monaghan Engineering, Inc.", "MONAGHAN-ENGINEERING" }, { 0x0050C2, 0x514000, 0x514FFF, "Tadian Electronics Systems LTD", "TADIAN-ELECTRONICS" }, { 0x0050C2, 0x510000, 0x510FFF, "Summit Developmen", "SUMMIT-DEVELOPMEN" }, { 0x0050C2, 0x507000, 0x507FFF, "Micro Connect Pty Ltd", "MICRO-CONNECT-PTY" }, { 0x0050C2, 0x508000, 0x508FFF, "PUTERCOM ENTERPRISE CO., LTD.", "PUTERCOM" }, { 0x0050C2, 0x50B000, 0x50BFFF, "Logic Beach Inc", "LOGIC-BEACH" }, { 0x0050C2, 0x4ED000, 0x4EDFFF, "Lab X Technologies, LLC", "LAB-X-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x4EA000, 0x4EAFFF, "PMC", "PMC" }, { 0x0050C2, 0x55E000, 0x55EFFF, "HANZAS ELEKTRONIKA, SIA", "HANZAS-ELEKTRONIKA-SIA" }, { 0x0050C2, 0x55B000, 0x55BFFF, "MATRIX TELECOM PVT. LTD.", "MATRIX-TELECOM-PVT" }, { 0x0050C2, 0x557000, 0x557FFF, "Netcomsec Co Ltd", "NETCOMSEC" }, { 0x0050C2, 0x558000, 0x558FFF, "Bedo Elektronik GmbH", "BEDO-ELEKTRONIK" }, { 0x0050C2, 0x554000, 0x554FFF, "Weinzierl Engineering GmbH", "WEINZIERL-ENGINEERING" }, { 0x0050C2, 0x551000, 0x551FFF, "Innovative Neurotroncs", "INNOVATIVE-NEUROTRONCS" }, { 0x0050C2, 0x51F000, 0x51FFFF, "Traquair Data Systems, Inc.", "TRAQUAIR-DATA" }, { 0x0050C2, 0x51C000, 0x51CFFF, "TOA Systems", "TOA" }, { 0x0050C2, 0x518000, 0x518FFF, "Christ Elektronik GmbH", "CHRIST-ELEKTRONIK" }, { 0x0050C2, 0x4E3000, 0x4E3FFF, "Romteck Pty Ltd", "ROMTECK-PTY" }, { 0x0050C2, 0x4E0000, 0x4E0FFF, "Telematrix", "TELEMATRIX" }, { 0x0050C2, 0x4D9000, 0x4D9FFF, "GE Security Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x501000, 0x501FFF, "IBEX UK Limited", "IBEX-UK" }, { 0x0050C2, 0x4FE000, 0x4FEFFF, "GEM ELETTRONICA Srl", "GEM-ELETTRONICA-SRL" }, { 0x0050C2, 0x4FD000, 0x4FDFFF, "Network Automation mxc AB", "NETWORK-AUTOMATION-MXC-AB" }, { 0x0050C2, 0x4F4000, 0x4F4FFF, "O2RUN", "O2RUN" }, { 0x0050C2, 0x4D6000, 0x4D6FFF, "Ingenieurbüro Schober", "INGENIEURBUERO-SCHOBER" }, { 0x0050C2, 0x4CC000, 0x4CCFFF, "ImpediMed Limited", "IMPEDIMED" }, { 0x0050C2, 0x4CF000, 0x4CFFFF, "Ziehl-Abegg AG", "ZIEHL-ABEGG" }, { 0x0050C2, 0x4C5000, 0x4C5FFF, "eXray Broadband Inc.", "EXRAY-BROADBAND" }, { 0x0050C2, 0x480000, 0x480FFF, "SELKOM GmbH", "SELKOM" }, { 0x0050C2, 0x483000, 0x483FFF, "SES", "SES" }, { 0x0050C2, 0x47D000, 0x47DFFF, "WIT Inc", "WIT" }, { 0x0050C2, 0x479000, 0x479FFF, "Unlimited Bandwidth LLC", "UNLIMITED-BANDWIDTH-LLC" }, { 0x0050C2, 0x476000, 0x476FFF, "Ascon S.p.a.", "ASCON-S-P-A" }, { 0x0050C2, 0x49A000, 0x49AFFF, "TelASIC Communications, Inc.", "TELASIC-COMMUNICATION" }, { 0x0050C2, 0x49B000, 0x49BFFF, "vg controls, inc", "VG-CONTROLS" }, { 0x0050C2, 0x497000, 0x497FFF, "Advanced Driver Information Technology GmbH", "ADVANCED-DRIVER-INFORMATION" }, { 0x0050C2, 0x494000, 0x494FFF, "Ultimate Technology, Inc.", "ULTIMATE" }, { 0x0050C2, 0x491000, 0x491FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x48D000, 0x48DFFF, "Metron Sp. z o.o.", "METRON-SP-Z-O-O" }, { 0x0050C2, 0x48A000, 0x48AFFF, "Mobile Matrix, Inc.", "MOBILE-MATRIX" }, { 0x0050C2, 0x487000, 0x487FFF, "Eridon Corporation", "ERIDON" }, { 0x0050C2, 0x4AC000, 0x4ACFFF, "Doramu Co.,Ltd.", "DORAMU" }, { 0x0050C2, 0x4A8000, 0x4A8FFF, "CYJAYA Korea", "CYJAYA-KOREA" }, { 0x0050C2, 0x4A5000, 0x4A5FFF, "Teledyne Monitor Labs", "TELEDYNE-MONITOR-LABS" }, { 0x0050C2, 0x45B000, 0x45BFFF, "Matra Electronique", "MATRA-ELECTRONIQUE" }, { 0x0050C2, 0x458000, 0x458FFF, "HRZ data GmbH", "HRZ-DATA" }, { 0x0050C2, 0x451000, 0x451FFF, "HAMEG GmbH", "HAMEG" }, { 0x0050C2, 0x44D000, 0x44DFFF, "Electro-Matic Products, Inc.", "ELECTRO-MATIC-PRODUCTS" }, { 0x0050C2, 0x4B8000, 0x4B8FFF, "Shenzhen Hongdian Technologies.,Ltd", "SHENZHEN-HONGDIAN-TECHNOLOGIES" }, { 0x0050C2, 0x4BB000, 0x4BBFFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x0050C2, 0x473000, 0x473FFF, "Sensus Metering Systems Israel", "SENSUS-METERING-ISRAEL" }, { 0x0050C2, 0x46F000, 0x46FFFF, "Neuroware", "NEUROWARE" }, { 0x0050C2, 0x46C000, 0x46CFFF, "CAMCO GmbH", "CAMCO" }, { 0x0050C2, 0x465000, 0x465FFF, "PDTS GmbH", "PDTS" }, { 0x0050C2, 0x462000, 0x462FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0x3E2000, 0x3E2FFF, "SysNova", "SYSNOVA" }, { 0x0050C2, 0x3DF000, 0x3DFFFF, "BiODE Inc.", "BIODE" }, { 0x0050C2, 0x3D8000, 0x3D8FFF, "Key Systems , Inc.", "KEY" }, { 0x0050C2, 0x3D0000, 0x3D0FFF, "Micro-Robotics Limited", "MICRO-ROBOTICS" }, { 0x0050C2, 0x3C6000, 0x3C6FFF, "Net Optics", "NET-OPTICS" }, { 0x0050C2, 0x3C7000, 0x3C7FFF, "Salent Technologies Ltd", "SALENT-TECHNOLOGIES" }, { 0x0050C2, 0x3EA000, 0x3EAFFF, "Alro Information Systems SA", "ALRO-INFORMATION" }, { 0x0050C2, 0x3E7000, 0x3E7FFF, "Revolution Education Ltd", "REVOLUTION-EDUCATION" }, { 0x0050C2, 0x3B7000, 0x3B7FFF, "Mindspeed Technologies", "MINDSPEED-TECHNOLOGIES" }, { 0x0050C2, 0x3B0000, 0x3B0FFF, "Microtarget Tecnologia Digital Ltda.", "MICROTARGET-TECNOLOGIA-DIGITAL-LTDA" }, { 0x0050C2, 0x3AD000, 0x3ADFFF, "Spirent Communications (Scotland) Limited", "SPIRENT-COMMUNICATION-SCOTLAND" }, { 0x0050C2, 0x3A9000, 0x3A9FFF, "Westronic Systems Inc.", "WESTRONIC" }, { 0x0050C2, 0x37F000, 0x37FFFF, "Foresearch", "FORESEARCH" }, { 0x0050C2, 0x37C000, 0x37CFFF, "MODIA SYSTEMS Co., Ltd", "MODIA" }, { 0x0050C2, 0x375000, 0x375FFF, "TIR Systems Ltd.", "TIR" }, { 0x0050C2, 0x372000, 0x372FFF, "ELV Elektronik AG", "ELV-ELEKTRONIK" }, { 0x0050C2, 0x321000, 0x321FFF, "UXP", "UXP" }, { 0x0050C2, 0x322000, 0x322FFF, "BQT Solutions (Australia) Limited", "BQT-SOLUTIONS-AUSTRALIA" }, { 0x0050C2, 0x323000, 0x323FFF, "Red Rock Networks", "RED-ROCK-NETWORKS" }, { 0x0050C2, 0x31E000, 0x31EFFF, "C3-ilex, LLC", "C3-ILEX-LLC" }, { 0x0050C2, 0x319000, 0x319FFF, "Invatron Systems Corp.", "INVATRON" }, { 0x0050C2, 0x333000, 0x333FFF, "Radix Corporation", "RADIX" }, { 0x0050C2, 0x336000, 0x336FFF, "Golden River Traffic", "GOLDEN-RIVER-TRAFFIC" }, { 0x0050C2, 0x32D000, 0x32DFFF, "Consens Zeiterfassung GMBH", "CONSENS-ZEITERFASSUNG" }, { 0x0050C2, 0x32C000, 0x32CFFF, "Integrated Silicon Solution (Taiwan), Inc.", "INTEGRATED-SILICON-SOLUTION-TAIWAN" }, { 0x0050C2, 0x329000, 0x329FFF, "Imax", "IMAX" }, { 0x0050C2, 0x39F000, 0x39FFFF, "Isensix", "ISENSIX" }, { 0x0050C2, 0x395000, 0x395FFF, "vidisys gmbh", "VIDISYS" }, { 0x0050C2, 0x340000, 0x340FFF, "Virtu", "VIRTU" }, { 0x0050C2, 0x38B000, 0x38BFFF, "InterBridge,Inc.", "INTERBRIDGE" }, { 0x0050C2, 0x387000, 0x387FFF, "Inoteska s.r.o.", "INOTESKA-S-R-O" }, { 0x0050C2, 0x365000, 0x365FFF, "VPG", "VPG" }, { 0x0050C2, 0x368000, 0x368FFF, "ASPEL S.A.", "ASPEL" }, { 0x0050C2, 0x35B000, 0x35BFFF, "VLSIP TECHNOLOGIES, INC", "VLSIP-TECHNOLOGIES" }, { 0x0050C2, 0x35E000, 0x35EFFF, "Jobin Yvon,Inc", "JOBIN-YVON" }, { 0x0050C2, 0x354000, 0x354FFF, "Advanced IP Communications", "ADVANCED-IP-COMMUNICATION" }, { 0x0050C2, 0x34A000, 0x34AFFF, "NIE Corporation", "NIE" }, { 0x0050C2, 0x302000, 0x302FFF, "EuroDesign embedded technologies GmbH", "EURODESIGN-EMBEDDED-TECHNOLOGIES" }, { 0x0050C2, 0x2FC000, 0x2FCFFF, "Blackline Systems Corporation", "BLACKLINE" }, { 0x0050C2, 0x2FF000, 0x2FFFFF, "Patria Advanced Solutions", "PATRIA-ADVANCED-SOLUTIONS" }, { 0x0050C2, 0x2FB000, 0x2FBFFF, "Arthur Industries Inc., dba On Hold Media Group", "ARTHUR-INDUSTRIES-DBA-ON-HOLD-MEDIA-GROUP" }, { 0x0050C2, 0x2F8000, 0x2F8FFF, "SavvyCorp.com Ltd", "SAVVYCORP-COM" }, { 0x0050C2, 0x2F5000, 0x2F5FFF, "ADChips", "ADCHIPS" }, { 0x0050C2, 0x2C0000, 0x2C0FFF, "Magellan Technology Pty Ltd", "MAGELLAN-PTY" }, { 0x0050C2, 0x2BB000, 0x2BBFFF, "TA Instruments Ltd", "TA-INSTRUMENTS" }, { 0x0050C2, 0x2BD000, 0x2BDFFF, "StorLink Semi", "STORLINK-SEMI" }, { 0x0050C2, 0x2B8000, 0x2B8FFF, "Admiral Secure Products, Ltd.", "ADMIRAL-SECURE-PRODUCTS" }, { 0x0050C2, 0x2B0000, 0x2B0FFF, "Telda Electronics", "TELDA-ELECTRONICS" }, { 0x0050C2, 0x2B3000, 0x2B3FFF, "Embedded Systems Design", "EMBEDDED-DESIGN" }, { 0x0050C2, 0x2EE000, 0x2EEFFF, "SHF Communication Technologies AG", "SHF-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0x2F2000, 0x2F2FFF, "Eurotek Srl", "EUROTEK-SRL" }, { 0x0050C2, 0x2EB000, 0x2EBFFF, "Lingg & Janke OHG", "LINGG-JANKE-OHG" }, { 0x0050C2, 0x2E8000, 0x2E8FFF, "S.M.V. Systemelektronik GmbH", "S-M-V-SYSTEMELEKTRONIK" }, { 0x0050C2, 0x2E4000, 0x2E4FFF, "iamba LTD.", "IAMBA" }, { 0x0050C2, 0x316000, 0x316FFF, "Dataline AB", "DATALINE-AB" }, { 0x0050C2, 0x30F000, 0x30FFFF, "Digicontrole Lda", "DIGICONTROLE-LDA" }, { 0x0050C2, 0x310000, 0x310FFF, "CYBERTRON CO., LTD.", "CYBERTRON" }, { 0x0050C2, 0x30C000, 0x30CFFF, "TEAMLOG", "TEAMLOG" }, { 0x0050C2, 0x309000, 0x309FFF, "Rackmaster Systems, Inc.", "RACKMASTER" }, { 0x0050C2, 0x306000, 0x306FFF, "Noran Tel Communications Ltd.", "NORAN-TEL-COMMUNICATION" }, { 0x0050C2, 0x305000, 0x305FFF, "Symbium Corporation", "SYMBIUM" }, { 0x0050C2, 0x2AD000, 0x2ADFFF, "ABB T&D Spa", "ABB-T-D-SPA" }, { 0x0050C2, 0x2A9000, 0x2A9FFF, "Dr. Staiger, Mohilo + Co GmbH", "DR-STAIGER-MOHILO-+" }, { 0x0050C2, 0x2A6000, 0x2A6FFF, "Brannstroms Elektronik AB", "BRANNSTROMS-ELEKTRONIK-AB" }, { 0x0050C2, 0x2D0000, 0x2D0FFF, "Worth Data, Inc.", "WORTH-DATA" }, { 0x0050C2, 0x2D4000, 0x2D4FFF, "Integrated System Solution Corp.", "INTEGRATED-SYSTEM-SOLUTION" }, { 0x0050C2, 0x2CA000, 0x2CAFFF, "PUTERCOM CO., LTD", "PUTERCOM" }, { 0x0050C2, 0x2CD000, 0x2CDFFF, "DataWind Research", "DATAWIND-RESEARCH" }, { 0x0050C2, 0x2C6000, 0x2C6FFF, "Initial Electronic Security Systems", "INITIAL-SECURITY" }, { 0x0050C2, 0x2C3000, 0x2C3FFF, "Digital SP Ltd", "DIGITAL-SP" }, { 0x0050C2, 0x29C000, 0x29CFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x299000, 0x299FFF, "CAD-UL GmbH", "CAD-UL" }, { 0x0050C2, 0x295000, 0x295FFF, "LOGOSOL, INC.", "LOGOSOL" }, { 0x0050C2, 0x2DE000, 0x2DEFFF, "Research Applications", "RESEARCH-APPLICATIONS" }, { 0x0050C2, 0x2E1000, 0x2E1FFF, "Access IS", "ACCESS-IS" }, { 0x0050C2, 0x2D7000, 0x2D7FFF, "Neo Electronics Ltd", "NEO-ELECTRONICS" }, { 0x0050C2, 0x2A3000, 0x2A3FFF, "West-Com Nurse Call Systems, Inc.", "WEST-COM-NURSE-CALL" }, { 0x0050C2, 0x29F000, 0x29FFFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0x21F000, 0x21FFFF, "Monitor Business Machines Ltd", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x215000, 0x215FFF, "VoiceCom AG", "VOICECOM" }, { 0x0050C2, 0x211000, 0x211FFF, "Hochschule für Technik, Wirtschaft und Kultur Leipzig (FH)", "HOCHSCHULE-FUER-TECHNIK-WIRTSCHAFT-UND-KULTUR-LEIPZIG-FH" }, { 0x0050C2, 0x292000, 0x292FFF, "AMIRIX Systems", "AMIRIX" }, { 0x0050C2, 0x28F000, 0x28FFFF, "Spellman High Voltage Electronics Corp", "SPELLMAN-HIGH-VOLTAGE-ELECTRONICS" }, { 0x0050C2, 0x288000, 0x288FFF, "RPM Systems Corporation", "RPM" }, { 0x0050C2, 0x285000, 0x285FFF, "Littwin GmbH & Co KG", "LITTWIN" }, { 0x0050C2, 0x281000, 0x281FFF, "CabTronix GmbH", "CABTRONIX" }, { 0x0050C2, 0x26D000, 0x26DFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x26A000, 0x26AFFF, "FG SYNERYS", "FG-SYNERYS" }, { 0x0050C2, 0x267000, 0x267FFF, "Allen Martin Conservation Ltd", "ALLEN-MARTIN-CONSERVATION" }, { 0x0050C2, 0x22F000, 0x22FFFF, "HTEC Limited", "HTEC" }, { 0x0050C2, 0x225000, 0x225FFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x229000, 0x229FFF, "eko systems inc.", "EKO" }, { 0x0050C2, 0x250000, 0x250FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x243000, 0x243FFF, "RGB Spectrum", "RGB-SPECTRUM" }, { 0x0050C2, 0x246000, 0x246FFF, "Hardmeier", "HARDMEIER" }, { 0x0050C2, 0x247000, 0x247FFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x282000, 0x282FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0x27E000, 0x27EFFF, "AnaLogic Computers Ltd.", "ANALOGIC-COMPUTERS" }, { 0x0050C2, 0x278000, 0x278FFF, "Replicom Ltd.", "REPLICOM" }, { 0x0050C2, 0x27B000, 0x27BFFF, "LinkSecurity A/S", "LINKSECURITY-A/S" }, { 0x0050C2, 0x277000, 0x277FFF, "T/R Systems, Inc.", "T/R" }, { 0x0050C2, 0x271000, 0x271FFF, "VLSIP TECHNOLOGIES INC.", "VLSIP-TECHNOLOGIES" }, { 0x0050C2, 0x274000, 0x274FFF, "Fundación TECNALIA Research & Innovation", "FUNDACIóN-TECNALIA-RESEARCH-INNOVATION" }, { 0x0050C2, 0x264000, 0x264FFF, "Confidence Direct Ltd", "CONFIDENCE-DIRECT" }, { 0x0050C2, 0x25A000, 0x25AFFF, "Zendex Corporation", "ZENDEX" }, { 0x0050C2, 0x260000, 0x260FFF, "BIOTAGE", "BIOTAGE" }, { 0x0050C2, 0x25D000, 0x25DFFF, "RDTECH", "RDTECH" }, { 0x0050C2, 0x258000, 0x258FFF, "Spacesaver Corporation", "SPACESAVER" }, { 0x0050C2, 0x255000, 0x255FFF, "STMicroelectronics SRL", "STMICROELECTRONICS-SRL" }, { 0x0050C2, 0x23C000, 0x23CFFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x0050C2, 0x23D000, 0x23DFFF, "Gauging Systems Inc", "GAUGING" }, { 0x0050C2, 0x232000, 0x232FFF, "SIMET", "SIMET" }, { 0x0050C2, 0x233000, 0x233FFF, "EdenTree Technologies, Inc.", "EDENTREE-TECHNOLOGIES" }, { 0x0050C2, 0x239000, 0x239FFF, "Stins Coman", "STINS-COMAN" }, { 0x0050C2, 0x1AE000, 0x1AEFFF, "Home Director, Inc", "HOME-DIRECTOR" }, { 0x0050C2, 0x1B2000, 0x1B2FFF, "SIGOS Systemintegration GmbH", "SIGOS-SYSTEMINTEGRATION" }, { 0x0050C2, 0x1A8000, 0x1A8FFF, "ANOVA BROADBAND", "ANOVA-BROADBAND" }, { 0x0050C2, 0x1C6000, 0x1C6FFF, "Remco Italia Spa", "REMCO-ITALIA-SPA" }, { 0x0050C2, 0x1C2000, 0x1C2FFF, "Weltronics Corp.", "WELTRONICS" }, { 0x0050C2, 0x1DA000, 0x1DAFFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x1D6000, 0x1D6FFF, "shanghai trend intelligent systems CO.,LTD", "SHANGHAI-TREND-INTELLIGENT" }, { 0x0050C2, 0x1D0000, 0x1D0FFF, "Yazaki North America, Inc.", "YAZAKI-NORTH-AMERICA" }, { 0x0050C2, 0x1A4000, 0x1A4FFF, "Protech Optronics Co. Ltd.", "PROTECH-OPTRONICS" }, { 0x0050C2, 0x19E000, 0x19EFFF, "Paltronics, Inc.", "PALTRONICS" }, { 0x0050C2, 0x20B000, 0x20BFFF, "Rafael", "RAFAEL" }, { 0x0050C2, 0x207000, 0x207FFF, "Solectron Ind.Com.Servs.Exportadora do Brasil Ltda.", "SOLECTRON-IND-COM-SERVS-EXPORTADORA-DO-BRASIL-LTDA" }, { 0x0050C2, 0x201000, 0x201FFF, "OlympusNDT", "OLYMPUSNDT" }, { 0x0050C2, 0x1FD000, 0x1FDFFF, "SouthWing S.L.", "SOUTHWING-S-L" }, { 0x0050C2, 0x1F7000, 0x1F7FFF, "ARC'Créations", "ARC-CRéATIONS" }, { 0x0050C2, 0x1E4000, 0x1E4FFF, "Soronti, Inc.", "SORONTI" }, { 0x0050C2, 0x1E0000, 0x1E0FFF, "Cognex Corporation", "COGNEX" }, { 0x0050C2, 0x1B8000, 0x1B8FFF, "Electronic Systems Development", "DEVELOPMENT" }, { 0x0050C2, 0x167000, 0x167FFF, "Precision Filters, Inc.", "PRECISION-FILTERS" }, { 0x0050C2, 0x160000, 0x160FFF, "TTI - Telecom International Ltd.", "TTI---TELECOM" }, { 0x0050C2, 0x15D000, 0x15DFFF, "Cepheid", "CEPHEID" }, { 0x0050C2, 0x19A000, 0x19AFFF, "AZIO TECHNOLOGY CO.", "AZIO" }, { 0x0050C2, 0x18B000, 0x18BFFF, "Teradyne Inc.", "TERADYNE" }, { 0x0050C2, 0x018000, 0x018FFF, "CAD-UL GmbH", "CAD-UL" }, { 0x0050C2, 0x001000, 0x001FFF, "JMBS Developpements", "JMBS-DEVELOPPEMENTS" }, { 0x0050C2, 0x16A000, 0x16AFFF, "Time Domain", "TIME-DOMAIN" }, { 0x0050C2, 0x002000, 0x002FFF, "Integrated Automation Solutions", "INTEGRATED-AUTOMATION-SOLUTIONS" }, { 0x0050C2, 0x00E000, 0x00EFFF, "TTTech", "TTTECH" }, { 0x0050C2, 0x064000, 0x064FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x16F000, 0x16FFFF, "Dickson Technologies", "DICKSON-TECHNOLOGIES" }, { 0x0050C2, 0x142000, 0x142FFF, "Instrumeter A/S", "INSTRUMETER-A/S" }, { 0x0050C2, 0x156000, 0x156FFF, "CommServ Solutions Inc.", "COMMSERV-SOLUTIONS" }, { 0x0050C2, 0x18F000, 0x18FFFF, "MATSUI MFG CO.,LTD", "MATSUI-MFG" }, { 0x0050C2, 0x14C000, 0x14CFFF, "Optibase Ltd.", "OPTIBASE" }, { 0x0050C2, 0x153000, 0x153FFF, "Advanced Devices SpA", "ADVANCED-DEVICES-SPA" }, { 0x0050C2, 0x181000, 0x181FFF, "Task 84 Spa", "TASK-84-SPA" }, { 0x0050C2, 0x177000, 0x177FFF, "Unicoi Systems", "UNICOI" }, { 0x0050C2, 0x103000, 0x103FFF, "Green Hills Software, Inc.", "GREEN-HILLS-SOFTWARE" }, { 0x0050C2, 0x106000, 0x106FFF, "MATSUOKA", "MATSUOKA" }, { 0x0050C2, 0x0FC000, 0x0FCFFF, "Kimmon Manufacturing Co., Ltd.", "KIMMON-MANUFACTURING" }, { 0x0050C2, 0x117000, 0x117FFF, "Wintegra Ltd.", "WINTEGRA" }, { 0x0050C2, 0x130000, 0x130FFF, "U.S. Traffic Corporation", "U-S-TRAFFIC" }, { 0x0050C2, 0x12D000, 0x12DFFF, "Megisto Systems, Inc.", "MEGISTO" }, { 0x0050C2, 0x129000, 0x129FFF, "TTPCom Ltd.", "TTPCOM" }, { 0x0050C2, 0x135000, 0x135FFF, "ELAD SRL", "ELAD-SRL" }, { 0x0050C2, 0x10D000, 0x10DFFF, "Implementa GmbH", "IMPLEMENTA" }, { 0x0050C2, 0x0F9000, 0x0F9FFF, "Raven Industries", "RAVEN-INDUSTRIES" }, { 0x0050C2, 0x0F5000, 0x0F5FFF, "Spectra Technologies Holding Co., Ltd.", "SPECTRA-TECHNOLOGIES-HOLDING" }, { 0x0050C2, 0x121000, 0x121FFF, "COE Limited", "COE" }, { 0x0050C2, 0x13F000, 0x13FFFF, "Sentito Networks", "SENTITO-NETWORKS" }, { 0x0050C2, 0x0F2000, 0x0F2FFF, "KMS Systems, Inc.", "KMS" }, { 0x0050C2, 0x0EE000, 0x0EEFFF, "Industrial Indexing Systems, Inc.", "INDUSTRIAL-INDEXING" }, { 0x0050C2, 0x0E8000, 0x0E8FFF, "Audio Design Associates, Inc.", "AUDIO-DESIGN-ASSOCIATES" }, { 0x0050C2, 0x0E5000, 0x0E5FFF, "Clearwater Networks", "CLEARWATER-NETWORKS" }, { 0x0050C2, 0x0DB000, 0x0DBFFF, "Cyberex", "CYBEREX" }, { 0x0050C2, 0x0D1000, 0x0D1FFF, "Renaissance Networking, Inc.", "RENAISSANCE-NETWORKING" }, { 0x0050C2, 0x0D4000, 0x0D4FFF, "Palm, Inc.", "PALM" }, { 0x0050C2, 0x0CF000, 0x0CFFFF, "PCSC", "PCSC" }, { 0x0050C2, 0x0B4000, 0x0B4FFF, "Wavefly Corporation", "WAVEFLY" }, { 0x0050C2, 0x0AD000, 0x0ADFFF, "BMC Messsysteme GmbH", "BMC-MESSSYSTEME" }, { 0x0050C2, 0x0BE000, 0x0BEFFF, "Stella Electronics & Tagging", "STELLA-ELECTRONICS-TAGGING" }, { 0x0050C2, 0x0BA000, 0x0BAFFF, "Pro-Active", "PRO-ACTIVE" }, { 0x0050C2, 0x0B7000, 0x0B7FFF, "RYMIC", "RYMIC" }, { 0x0050C2, 0x0C1000, 0x0C1FFF, "Casabyte", "CASABYTE" }, { 0x0050C2, 0x0DE000, 0x0DEFFF, "Frederick Engineering", "FREDERICK-ENGINEERING" }, { 0x0050C2, 0x0C9000, 0x0C9FFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x096000, 0x096FFF, "Utronix Elektronikutreckling AB", "UTRONIX-ELEKTRONIKUTRECKLING-AB" }, { 0x0050C2, 0x092000, 0x092FFF, "DigitAll World Co., Ltd", "DIGITALL-WORLD" }, { 0x0050C2, 0x08F000, 0x08FFFF, "General Industries Argentina", "GENERAL-INDUSTRIES-ARGENTINA" }, { 0x0050C2, 0x08C000, 0x08CFFF, "IP Unity", "IP-UNITY" }, { 0x0050C2, 0x085000, 0x085FFF, "Crossport Systems", "CROSSPORT" }, { 0x0050C2, 0x082000, 0x082FFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x0A3000, 0x0A3FFF, "BaSyTec GmbH", "BASYTEC" }, { 0x0050C2, 0x089000, 0x089FFF, "Fenwal Italia S.P.A.", "FENWAL-ITALIA-S-P-A" }, { 0x0050C2, 0x088000, 0x088FFF, "TELINC Corporation", "TELINC" }, { 0x0050C2, 0x07F000, 0x07FFFF, "Dunti Corporation", "DUNTI" }, { 0x0050C2, 0x07E000, 0x07EFFF, "JL-teknik", "JL-TEKNIK" }, { 0x0050C2, 0x057000, 0x057FFF, "Lite F GmBH", "LITE-F" }, { 0x0050C2, 0x052000, 0x052FFF, "Mayo Foundation", "MAYO-FOUNDATION" }, { 0x0050C2, 0x073000, 0x073FFF, "Alstom Signalling Ltd.", "ALSTOM-SIGNALLING" }, { 0x0050C2, 0x06E000, 0x06EFFF, "Avtron Manufacturing Inc.", "AVTRON-MANUFACTURING" }, { 0x0050C2, 0x06B000, 0x06BFFF, "NCast Corporation", "NCAST" }, { 0x0050C2, 0x065000, 0x065FFF, "Clever Devices, Ltd.", "CLEVER-DEVICES" }, { 0x0050C2, 0x05F000, 0x05FFFF, "Malden Electronics Ltd", "MALDEN-ELECTRONICS" }, { 0x0050C2, 0x042000, 0x042FFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0x045000, 0x045FFF, "Chase Manhattan Bank", "CHASE-MANHATTAN-BANK" }, { 0x0050C2, 0x048000, 0x048FFF, "Cybectec Inc.", "CYBECTEC" }, { 0x0050C2, 0x022000, 0x022FFF, "Ashling Microsystems Ltd.", "ASHLING-MICROSYSTEMS" }, { 0x0050C2, 0x021000, 0x021FFF, "DRS Technologies Canada Co.", "DRS-TECHNOLOGIES-CANADA" }, { 0x0050C2, 0x036000, 0x036FFF, "Arcturus Networks Inc.", "ARCTURUS-NETWORKS" }, { 0x0050C2, 0x035000, 0x035FFF, "Alliant Techsystems, Inc.", "ALLIANT-TECHSYSTEMS" }, { 0x0050C2, 0x02C000, 0x02CFFF, "Narrowband Telecommunications", "NARROWBAND-TELECOMMUNICATIONS" }, { 0x0050C2, 0x02B000, 0x02BFFF, "Nova Engineering Inc.", "NOVA-ENGINEERING" }, { 0x0050C2, 0x008000, 0x008FFF, "Portable Add-Ons", "PORTABLE-ADD-ONS" }, { 0x0050C2, 0x005000, 0x005FFF, "GD California, Inc.", "GD-CALIFORNIA" }, { 0x0050C2, 0xBE4000, 0xBE4FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x133000, 0x133FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0xC0C000, 0xC0CFFF, "Altierre", "ALTIERRE" }, { 0x0050C2, 0x4F3000, 0x4F3FFF, "Autronica Fire And Securirty", "AUTRONICA-FIRE-AND-SECURIRTY" }, { 0x0050C2, 0x717000, 0x717FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0x1BC000, 0x1BCFFF, "DINEC International", "DINEC" }, { 0x0050C2, 0x4C2000, 0x4C2FFF, "Elbit Systems Ltd.", "ELBIT" }, { 0x0050C2, 0xB76000, 0xB76FFF, "ITF Fröschl GmbH", "ITF-FROESCHL" }, { 0x0050C2, 0x8A1000, 0x8A1FFF, "Intune Networks", "INTUNE-NETWORKS" }, { 0x0050C2, 0x060000, 0x060FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x149000, 0x149FFF, "Haag-Streit AG", "HAAG-STREIT" }, { 0x0050C2, 0x0B0000, 0x0B0FFF, "LMI Technologies", "LMI-TECHNOLOGIES" }, { 0x0050C2, 0x7E9000, 0x7E9FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x21B000, 0x21BFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0xF1C000, 0xF1CFFF, "GD Mission Systems", "GD-MISSION" }, { 0x40D855, 0x102000, 0x102FFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x0050C2, 0xED5000, 0xED5FFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x0050C2, 0x1CC000, 0x1CCFFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0x585000, 0x585FFF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0050C2, 0x2B7000, 0x2B7FFF, "RAFI GmbH & Co.KG", "RAFI" }, { 0x0050C2, 0xAC7000, 0xAC7FFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0xF26000, 0xF26FFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0x4F7000, 0x4F7FFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0xFAB000, 0xFABFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF08000, 0xF08FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xEC3000, 0xEC3FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xE6A000, 0xE6AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x147000, 0x147FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x182000, 0x182FFF, "Georg Neumann GmbH", "GEORG-NEUMANN" }, { 0x40D855, 0x19A000, 0x19AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xEE4000, 0xEE4FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x855000, 0x855FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xDD3000, 0xDD3FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x6A5000, 0x6A5FFF, "EATON FHF Funke + Huster Fernsig GmbH", "EATON-FHF-FUNKE-+-HUSTER-FERNSIG" }, { 0x0050C2, 0xCDC000, 0xCDCFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xEEE000, 0xEEEFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xD84000, 0xD84FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x2DA000, 0x2DAFFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x0050C2, 0x4B1000, 0x4B1FFF, "NSFOCUS Information Technology Co., Ltd.", "NSFOCUS-INFORMATION" }, { 0x0050C2, 0x26E000, 0x26EFFF, "ZP Engineering SEL", "ZP-ENGINEERING-SEL" }, { 0x0050C2, 0xAFB000, 0xAFBFFF, "Vocality International Ltd", "VOCALITY" }, { 0x0050C2, 0xD9E000, 0xD9EFFF, "Vocality International Ltd", "VOCALITY" }, { 0x0050C2, 0x6B1000, 0x6B1FFF, "Burk Technology", "BURK" }, { 0x0050C2, 0xFF4000, 0xFF4FFF, "Burk Technology", "BURK" }, { 0x40D855, 0x098000, 0x098FFF, "DAVE SRL", "DAVE-SRL" }, { 0x0050C2, 0xDF4000, 0xDF4FFF, "Potter Electric Signal Co. LLC", "POTTER-ELECTRIC-SIGNAL-LLC" }, { 0x0050C2, 0xB37000, 0xB37FFF, "IAdea Corporation", "IADEA" }, { 0x0050C2, 0x888000, 0x888FFF, "IAdea Corporation", "IADEA" }, { 0x0050C2, 0x909000, 0x909FFF, "Elisra", "ELISRA" }, { 0x0050C2, 0xA78000, 0xA78FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x40D855, 0x119000, 0x119FFF, "OOO Group of Industrial Technologies", "OOO-GROUP-OF-INDUSTRIAL-TECHNOLOGIES" }, { 0x40D855, 0x0E2000, 0x0E2FFF, "Keocko Holding Kft.", "KEOCKO-HOLDING-KFT" }, { 0x40D855, 0x15A000, 0x15AFFF, "DORLET SAU", "DORLET-SAU" }, { 0x40D855, 0x06F000, 0x06FFFF, "DORLET SAU", "DORLET-SAU" }, { 0x0050C2, 0x9E7000, 0x9E7FFF, "DORLET SAU", "DORLET-SAU" }, { 0x0050C2, 0x67C000, 0x67CFFF, "Gogo BA", "GOGO-BA" }, { 0x0050C2, 0xEAF000, 0xEAFFFF, "Gogo BA", "GOGO-BA" }, { 0x0050C2, 0x49E000, 0x49EFFF, "Armorlink Co .Ltd", "ARMORLINK" }, { 0x0050C2, 0xF33000, 0xF33FFF, "Applied Micro Electronics AME bv", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0xE4C000, 0xE4CFFF, "Applied Micro Electronics AME bv", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0x194000, 0x194FFF, "Cominfo, Inc.", "COMINFO" }, { 0x0050C2, 0x28B000, 0x28BFFF, "Orion Technologies,LLC", "ORION-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x138000, 0x138FFF, "Delphin Technology AG", "DELPHIN" }, { 0x0050C2, 0x84C000, 0x84CFFF, "Performance Motion Devices", "PERFORMANCE-MOTION-DEVICES" }, { 0x0050C2, 0x3BA000, 0x3BAFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x63F000, 0x63FFFF, "SPEECH TECHNOLOGY CENTER LIMITED", "SPEECH-CENTER" }, { 0x0050C2, 0xB51000, 0xB51FFF, "Aeroflex GmbH", "AEROFLEX" }, { 0x0050C2, 0x886000, 0x886FFF, "Transas Marine Limited", "TRANSAS-MARINE" }, { 0x0050C2, 0x360000, 0x360FFF, "Digital Receiver Technology", "DIGITAL-RECEIVER" }, { 0x40D855, 0x09D000, 0x09DFFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0x8E3000, 0x8E3FFF, "bioMérieux Italia S.p.A.", "BIOMéRIEUX-ITALIA-S-P-A" }, { 0x40D855, 0x1E4000, 0x1E4FFF, "STEK Ltd", "STEK" }, { 0x40D855, 0x1BE000, 0x1BEFFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x40D855, 0x1BB000, 0x1BBFFF, "Micromega Dynamics SA", "MICROMEGA-DYNAMICS" }, { 0x40D855, 0x1B6000, 0x1B6FFF, "Magic Systems", "MAGIC" }, { 0x40D855, 0x194000, 0x194FFF, "RF Code", "RF-CODE" }, { 0x40D855, 0x191000, 0x191FFF, "Soukai Electric", "SOUKAI-ELECTRIC" }, { 0x40D855, 0x18F000, 0x18FFFF, "Beat Sensing co. , ltd.", "BEAT-SENSING" }, { 0x40D855, 0x1A6000, 0x1A6FFF, "RB-LINK Wireless", "RB-LINK-WIRELESS" }, { 0x40D855, 0x1DD000, 0x1DDFFF, "BaOpt Benelux bv", "BAOPT-BENELUX" }, { 0x40D855, 0x1DA000, 0x1DAFFF, "Energy Technology and Control Ltd.", "ENERGY-AND-CONTROL" }, { 0x40D855, 0x1D0000, 0x1D0FFF, "Webeasy BV", "WEBEASY" }, { 0x40D855, 0x1B3000, 0x1B3FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x40D855, 0x1A9000, 0x1A9FFF, "Lubino s.r.o.", "LUBINO-S-R-O" }, { 0x40D855, 0x1C8000, 0x1C8FFF, "Sensata Technologies", "SENSATA-TECHNOLOGIES" }, { 0x40D855, 0x1C5000, 0x1C5FFF, "Private", "PRIVATE" }, { 0x40D855, 0x19C000, 0x19CFFF, "Parris Service Corporation", "PARRIS-SERVICE" }, { 0x40D855, 0x185000, 0x185FFF, "Standard Change Makers", "STANDARD-CHANGE-MAKERS" }, { 0x40D855, 0x187000, 0x187FFF, "CDEX Corp.", "CDEX" }, { 0x40D855, 0x186000, 0x186FFF, "KST technology", "KST" }, { 0x40D855, 0x17D000, 0x17DFFF, "Kiwigrid GmbH", "KIWIGRID" }, { 0x40D855, 0x17C000, 0x17CFFF, "Critical Link", "CRITICAL-LINK" }, { 0x40D855, 0x17B000, 0x17BFFF, "LUCEO", "LUCEO" }, { 0x40D855, 0x178000, 0x178FFF, "REDER Domotic GmbH", "REDER-DOMOTIC" }, { 0x40D855, 0x172000, 0x172FFF, "YAWATA ELECTRIC INDUSTRIAL CO.,LTD.", "YAWATA-ELECTRIC-INDUSTRIAL" }, { 0x40D855, 0x157000, 0x157FFF, "Hitachi Power Solutions Co., Ltd.", "HITACHI-POWER-SOLUTIONS" }, { 0x40D855, 0x138000, 0x138FFF, "Calon Associates Limited", "CALON-ASSOCIATES" }, { 0x40D855, 0x130000, 0x130FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x40D855, 0x12D000, 0x12DFFF, "Biotage Sweden AB", "BIOTAGE-SWEDEN-AB" }, { 0x40D855, 0x12C000, 0x12CFFF, "NSP Europe Ltd", "NSP-EUROPE" }, { 0x40D855, 0x14C000, 0x14CFFF, "PLT", "PLT" }, { 0x40D855, 0x14F000, 0x14FFFF, "TDS Software Solutions Pty Ltd", "TDS-SOFTWARE-SOLUTIONS-PTY" }, { 0x40D855, 0x145000, 0x145FFF, "Weber Marking Systems GmbH", "WEBER-MARKING" }, { 0x40D855, 0x164000, 0x164FFF, "NFT Automatisierungssysteme GmbH", "NFT-AUTOMATISIERUNGSSYSTEME" }, { 0x40D855, 0x161000, 0x161FFF, "Solidscape Inc", "SOLIDSCAPE" }, { 0x40D855, 0x16E000, 0x16EFFF, "Secuinfo Co.Ltd", "SECUINFO" }, { 0x40D855, 0x16B000, 0x16BFFF, "TECHWAY", "TECHWAY" }, { 0x40D855, 0x142000, 0x142FFF, "Tetracore, Inc.", "TETRACORE" }, { 0x40D855, 0x12B000, 0x12BFFF, "Mango DSP, Inc.", "MANGO-DSP" }, { 0x40D855, 0x123000, 0x123FFF, "ZAO NPC Kompjuternie Technologii", "ZAO-NPC-KOMPJUTERNIE-TECHNOLOGII" }, { 0x40D855, 0x122000, 0x122FFF, "ATX Networks Ltd.", "ATX-NETWORKS" }, { 0x40D855, 0x0D0000, 0x0D0FFF, "Icraft Oy", "ICRAFT-OY" }, { 0x40D855, 0x0E5000, 0x0E5FFF, "Triton Electronics LTD", "TRITON-ELECTRONICS" }, { 0x40D855, 0x0DD000, 0x0DDFFF, "Embed Limited", "EMBED" }, { 0x40D855, 0x0DB000, 0x0DBFFF, "Top Connect OU", "TOP-CONNECT-OU" }, { 0x40D855, 0x0DC000, 0x0DCFFF, "NVS Technologies Inc", "NVS-TECHNOLOGIES" }, { 0x40D855, 0x11E000, 0x11EFFF, "CEMSI, Inc.", "CEMSI" }, { 0x40D855, 0x121000, 0x121FFF, "shanghai Anjian Information technology co. , ltd.", "SHANGHAI-ANJIAN-INFORMATION" }, { 0x40D855, 0x117000, 0x117FFF, "RCS Energy Management Limited", "RCS-ENERGY-MANAGEMENT" }, { 0x40D855, 0x118000, 0x118FFF, "University of Nebraska -- Lincoln", "UNIVERSITY-OF-NEBRASKA----LINCOLN" }, { 0x40D855, 0x0D8000, 0x0D8FFF, "NEXT! s.c. S.Piela B.Dryja", "NEXT!-S-C-S-PIELA-B-DRYJA" }, { 0x40D855, 0x0FD000, 0x0FDFFF, "MONOGRAM technologies ltd", "MONOGRAM-TECHNOLOGIES" }, { 0x40D855, 0x10A000, 0x10AFFF, "DAVIS DERBY LIMITED", "DAVIS-DERBY" }, { 0x40D855, 0x107000, 0x107FFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x40D855, 0x10E000, 0x10EFFF, "HKS-Prozesstechnik GmbH", "HKS-PROZESSTECHNIK" }, { 0x40D855, 0x0EF000, 0x0EFFFF, "GeneSys Elektronik GmbH", "GENESYS-ELEKTRONIK" }, { 0x40D855, 0x0E7000, 0x0E7FFF, "LIGHTSTAR", "LIGHTSTAR" }, { 0x40D855, 0x0E6000, 0x0E6FFF, "Kyoritsu Electric Corp.", "KYORITSU-ELECTRIC" }, { 0x40D855, 0x0F3000, 0x0F3FFF, "ECON Systems Inc.", "ECON" }, { 0x40D855, 0x0C6000, 0x0C6FFF, "comtime GmbH", "COMTIME" }, { 0x40D855, 0x0C3000, 0x0C3FFF, "APG CASH DRAWER", "APG-CASH-DRAWER" }, { 0x40D855, 0x0B9000, 0x0B9FFF, "WxBR Sistemas de Telecomunicacoes Ltda", "WXBR-SISTEMAS-DE-TELECOMUNICACOES-LTDA" }, { 0x40D855, 0x0B6000, 0x0B6FFF, "Telvent", "TELVENT" }, { 0x40D855, 0x0AF000, 0x0AFFFF, "EnVerv Inc.", "ENVERV" }, { 0x40D855, 0x0AC000, 0x0ACFFF, "Fraunhofer HHI", "FRAUNHOFER-HHI" }, { 0x40D855, 0x0A2000, 0x0A2FFF, "Xemex NV", "XEMEX-NV" }, { 0x40D855, 0x083000, 0x083FFF, "DELOPT", "DELOPT" }, { 0x40D855, 0x082000, 0x082FFF, "ard sa", "ARD" }, { 0x40D855, 0x074000, 0x074FFF, "Sphere Medical Ltd", "SPHERE-MEDICAL" }, { 0x40D855, 0x069000, 0x069FFF, "Smartcom-Bulgaria AD", "SMARTCOM-BULGARIA-AD" }, { 0x40D855, 0x07E000, 0x07EFFF, "TESCOM CORPORATION", "TESCOM" }, { 0x40D855, 0x078000, 0x078FFF, "NACHI-FUJIKOSHI CORP", "NACHI-FUJIKOSHI" }, { 0x40D855, 0x077000, 0x077FFF, "TOEC TECHNOLOGY CO.,LTD", "TOEC" }, { 0x40D855, 0x093000, 0x093FFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x40D855, 0x08B000, 0x08BFFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x40D855, 0x05C000, 0x05CFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x055000, 0x055FFF, "Helmholtz Zentrum Dresden Rossendorf e.V.", "HELMHOLTZ-ZENTRUM-DRESDEN-ROSSENDORF-E-V" }, { 0x40D855, 0x052000, 0x052FFF, "DAN ELECTRONICS SYSTEM (P) LIMITED", "DAN-ELECTRONICS-SYSTEM-P" }, { 0x40D855, 0x010000, 0x010FFF, "APG CASH DRAWER", "APG-CASH-DRAWER" }, { 0x40D855, 0x00D000, 0x00DFFF, "HuNS", "HUNS" }, { 0x40D855, 0x008000, 0x008FFF, "Kaori Industria Eletronica Ltda", "KAORI-INDUSTRIA-ELETRONICA-LTDA" }, { 0x40D855, 0x005000, 0x005FFF, "Monarch Instrument", "MONARCH-INSTRUMENT" }, { 0x0050C2, 0xFE8000, 0xFE8FFF, "Mango DSP, Inc.", "MANGO-DSP" }, { 0x0050C2, 0xFEA000, 0xFEAFFF, "Brunel GmbH Section Communications", "BRUNEL-SECTION-COMMUNICATION" }, { 0x40D855, 0x02C000, 0x02CFFF, "InventLab s.c.", "INVENTLAB-S-C" }, { 0x40D855, 0x024000, 0x024FFF, "Electrical Geodesics Incorporated", "ELECTRICAL-GEODESICS-INCORPORATED" }, { 0x40D855, 0x03E000, 0x03EFFF, "Vishay Celtron Technologies, Inc.", "VISHAY-CELTRON-TECHNOLOGIES" }, { 0x40D855, 0x039000, 0x039FFF, "CI Systems Ltd", "CI" }, { 0x0050C2, 0xFFC000, 0xFFCFFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0xFFD000, 0xFFDFFF, "Touchless Biometric Systems AG", "TOUCHLESS-BIOMETRIC" }, { 0x0050C2, 0xFF3000, 0xFF3FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x0050C2, 0xFF2000, 0xFF2FFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x40D855, 0x043000, 0x043FFF, "SchulerControl GmbH", "SCHULERCONTROL" }, { 0x40D855, 0x01A000, 0x01AFFF, "MEGGITT DEFENSE SYSTEMS INC.", "MEGGITT-DEFENSE" }, { 0x40D855, 0x01D000, 0x01DFFF, "Scharco Elektronik GmbH", "SCHARCO-ELEKTRONIK" }, { 0x40D855, 0x01E000, 0x01EFFF, "A2S", "A2S" }, { 0x40D855, 0x017000, 0x017FFF, "Franke Aquarotter GmbH", "FRANKE-AQUAROTTER" }, { 0x40D855, 0x062000, 0x062FFF, "Tech Source Inc", "TECH-SOURCE" }, { 0x40D855, 0x05F000, 0x05FFFF, "EPSa GmbH", "EPSA" }, { 0x0050C2, 0xFE0000, 0xFE0FFF, "Azurtest", "AZURTEST" }, { 0x0050C2, 0xFDE000, 0xFDEFFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x0050C2, 0xFDF000, 0xFDFFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xFD5000, 0xFD5FFF, "American Microsystems, Ltd.", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0xFD6000, 0xFD6FFF, "City Computing Ltd", "CITY-COMPUTING" }, { 0x0050C2, 0xFAE000, 0xFAEFFF, "ATI Automação Telecomunicações e Informática Ltda", "ATI-AUTOMAçãO-TELECOMUNICAçõES-E-INFORMáTICA-LTDA" }, { 0x0050C2, 0xFAD000, 0xFADFFF, "Finishing Brands", "FINISHING-BRANDS" }, { 0x0050C2, 0xFA6000, 0xFA6FFF, "Hilkom digital GmbH", "HILKOM-DIGITAL" }, { 0x0050C2, 0xFC2000, 0xFC2FFF, "ELTA", "ELTA" }, { 0x0050C2, 0xFC1000, 0xFC1FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x0050C2, 0xF81000, 0xF81FFF, "PLDA", "PLDA" }, { 0x0050C2, 0xF77000, 0xF77FFF, "SYSTEMTECHNIK GmbH", "SYSTEMTECHNIK" }, { 0x0050C2, 0xF76000, 0xF76FFF, "Rong Jie(FuZhou)Electronics Co.,Ltd", "RONG-JIE-FUZHOU-ELECTRONICS" }, { 0x0050C2, 0xF6D000, 0xF6DFFF, "Pro Design Electronic GmbH", "PRO-DESIGN" }, { 0x0050C2, 0xF6C000, 0xF6CFFF, "Pro Design Electronic GmbH", "PRO-DESIGN" }, { 0x0050C2, 0xFB7000, 0xFB7FFF, "Pounce Consulting", "POUNCE-CONSULTING" }, { 0x0050C2, 0xFB8000, 0xFB8FFF, "TECHNO CO.,LTD.", "TECHNO" }, { 0x0050C2, 0xFB6000, 0xFB6FFF, "ARGUS-SPECTRUM", "ARGUS-SPECTRUM" }, { 0x0050C2, 0xF94000, 0xF94FFF, "Digital Barriers", "DIGITAL-BARRIERS" }, { 0x0050C2, 0xF95000, 0xF95FFF, "TTi LTD (Thurlby Thandar Instruments LTD)", "TTI-THURLBY-THANDAR-INSTRUMENTS" }, { 0x0050C2, 0xF8A000, 0xF8AFFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xF8B000, 0xF8BFFF, "comlet Verteilte Systeme GmbH", "COMLET-VERTEILTE-SYSTEME" }, { 0x0050C2, 0xFD4000, 0xFD4FFF, "Insitu, Inc.", "INSITU" }, { 0x0050C2, 0xFCB000, 0xFCBFFF, "Propagation Systems Limited", "PROPAGATION" }, { 0x0050C2, 0xFCC000, 0xFCCFFF, "Soudronic AG", "SOUDRONIC" }, { 0x0050C2, 0xFCA000, 0xFCAFFF, "Telemisis Ltd", "TELEMISIS" }, { 0x0050C2, 0xF9D000, 0xF9DFFF, "JSC Kaluga Teletypes Manufacturing Plant", "JSC-KALUGA-TELETYPES-MANUFACTURING-PLANT" }, { 0x0050C2, 0xF9C000, 0xF9CFFF, "R&D KOMETEH", "R-D-KOMETEH" }, { 0x0050C2, 0xEF5000, 0xEF5FFF, "Human Network Labs, Inc.", "HUMAN-NETWORK-LABS" }, { 0x0050C2, 0xEF6000, 0xEF6FFF, "Netline Communication Technologies", "NETLINE-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0xF59000, 0xF59FFF, "G3 Technologies", "G3-TECHNOLOGIES" }, { 0x0050C2, 0xEED000, 0xEEDFFF, "Future Design Controls, Inc", "FUTURE-DESIGN-CONTROLS" }, { 0x0050C2, 0xEEC000, 0xEECFFF, "Yuyama Mfg. Co., Ltd.", "YUYAMA-MFG" }, { 0x0050C2, 0xEEB000, 0xEEBFFF, "fibrisTerre GmbH", "FIBRISTERRE" }, { 0x0050C2, 0xEE2000, 0xEE2FFF, "System Industrie Electronic GmbH", "SYSTEM-INDUSTRIE" }, { 0x0050C2, 0xEE3000, 0xEE3FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x0050C2, 0xEE1000, 0xEE1FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0xF4F000, 0xF4FFFF, "BAP Precision Ltd.", "BAP-PRECISION" }, { 0x0050C2, 0xF4E000, 0xF4EFFF, "Heinzinger electronic GmbH", "HEINZINGER" }, { 0x0050C2, 0xF45000, 0xF45FFF, "HUSTY M.Styczen J.Hupert Sp.J.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x0050C2, 0xF44000, 0xF44FFF, "Steinbichler Optotechnik GmbH", "STEINBICHLER-OPTOTECHNIK" }, { 0x0050C2, 0xF63000, 0xF63FFF, "Triax A/S", "TRIAX-A/S" }, { 0x0050C2, 0xF62000, 0xF62FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xF0A000, 0xF0AFFF, "HASCOM International Pty Ltd", "HASCOM-PTY" }, { 0x0050C2, 0xF09000, 0xF09FFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x0050C2, 0xEFF000, 0xEFFFFF, "Zephyrus Electronics LTD.", "ZEPHYRUS-ELECTRONICS" }, { 0x0050C2, 0xF00000, 0xF00FFF, "Syscom Instruments", "SYSCOM-INSTRUMENTS" }, { 0x0050C2, 0xF27000, 0xF27FFF, "ELAN SYSTEMS", "ELAN" }, { 0x0050C2, 0xF28000, 0xF28FFF, "Vertex Antennentechnik GmbH", "VERTEX-ANTENNENTECHNIK" }, { 0x0050C2, 0xF1E000, 0xF1EFFF, "Dell'Orto S.P.A.", "DELL-ORTO-S-P-A" }, { 0x0050C2, 0xF14000, 0xF14FFF, "VISION SYSTEMS AERONAUTIC", "VISION-AERONAUTIC" }, { 0x0050C2, 0xF13000, 0xF13FFF, "Packet Plus, Inc.", "PACKET-PLUS" }, { 0x0050C2, 0xF39000, 0xF39FFF, "InForce Computing, Inc.", "INFORCE-COMPUTING" }, { 0x0050C2, 0xF3A000, 0xF3AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF31000, 0xF31FFF, "Ruetz Technologies GmbH", "RUETZ-TECHNOLOGIES" }, { 0x0050C2, 0xF32000, 0xF32FFF, "Net4Things", "NET4THINGS" }, { 0x0050C2, 0xE69000, 0xE69FFF, "Netmaker", "NETMAKER" }, { 0x0050C2, 0xE68000, 0xE68FFF, "Kyoritsu Electric Corporation", "KYORITSU-ELECTRIC" }, { 0x0050C2, 0xE80000, 0xE80FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE7F000, 0xE7FFFF, "LS Control A/S", "LS-CONTROL-A/S" }, { 0x0050C2, 0xE74000, 0xE74FFF, "Will corp.", "WILL" }, { 0x0050C2, 0xE73000, 0xE73FFF, "ACS Motion Control Ltd.", "ACS-MOTION-CONTROL" }, { 0x0050C2, 0xE71000, 0xE71FFF, "traffic network solutions s.l", "TRAFFIC-NETWORK-SOLUTIONS-S-L" }, { 0x0050C2, 0xE92000, 0xE92FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xE8A000, 0xE8AFFF, "Macronet s.r.l.", "MACRONET-S-R-L" }, { 0x0050C2, 0xE88000, 0xE88FFF, "Pivitec, LLC", "PIVITEC-LLC" }, { 0x0050C2, 0xE89000, 0xE89FFF, "PROTEQSEN", "PROTEQSEN" }, { 0x0050C2, 0xEA7000, 0xEA7FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xEA6000, 0xEA6FFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xEB2000, 0xEB2FFF, "Otaki Electric Corporation", "OTAKI-ELECTRIC" }, { 0x0050C2, 0xEB0000, 0xEB0FFF, "Pulse Communication Systems Pvt. Ltd.", "PULSE-COMMUNICATION-PVT" }, { 0x0050C2, 0xEB1000, 0xEB1FFF, "PDU EXPERT UK LTD", "PDU-EXPERT-UK" }, { 0x0050C2, 0xEC5000, 0xEC5FFF, "RSUPPORT Co., Ltd.", "RSUPPORT" }, { 0x0050C2, 0xEC4000, 0xEC4FFF, "Logical Electromechanical Sys Inc.", "LOGICAL-ELECTROMECHANICAL-SYS" }, { 0x0050C2, 0xEBC000, 0xEBCFFF, "Diehl AKO Stiftung & Co. KG", "DIEHL-AKO-STIFTUNG" }, { 0x0050C2, 0xEBA000, 0xEBAFFF, "West-Com Nurse Call Systems, Inc.", "WEST-COM-NURSE-CALL" }, { 0x0050C2, 0xEBB000, 0xEBBFFF, "TimeTerminal Adductor Group AB", "TIMETERMINAL-ADDUCTOR-GROUP-AB" }, { 0x0050C2, 0xED6000, 0xED6FFF, "Cat AB", "CAT-AB" }, { 0x0050C2, 0xECF000, 0xECFFFF, "TAIWAN HIPLUS CORPORATION", "TAIWAN-HIPLUS" }, { 0x0050C2, 0xECE000, 0xECEFFF, "easii ic adiis", "EASII-IC-ADIIS" }, { 0x0050C2, 0xED7000, 0xED7FFF, "FBT Elettronica spa", "FBT-ELETTRONICA-SPA" }, { 0x0050C2, 0xE9E000, 0xE9EFFF, "American Microsystems, Ltd.", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0xE9C000, 0xE9CFFF, "SPARQ systems", "SPARQ" }, { 0x0050C2, 0xE9D000, 0xE9DFFF, "nicai-systems", "NICAI" }, { 0x0050C2, 0xE94000, 0xE94FFF, "ANA-U GmbH", "ANA-U" }, { 0x0050C2, 0xE93000, 0xE93FFF, "Perceptive Pixel Inc.", "PERCEPTIVE-PIXEL" }, { 0x0050C2, 0xE4A000, 0xE4AFFF, "GHL Systems Bhd", "GHL-BHD" }, { 0x0050C2, 0xE40000, 0xE40FFF, "Ecrin Systems", "ECRIN" }, { 0x0050C2, 0xE23000, 0xE23FFF, "VITEC", "VITEC" }, { 0x0050C2, 0xE24000, 0xE24FFF, "DiTEST Fahrzeugdiagnose GmbH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0xE22000, 0xE22FFF, "Michael Riedel Transformatorenbau GmbH", "MICHAEL-RIEDEL-TRANSFORMATORENBAU" }, { 0x0050C2, 0xE1A000, 0xE1AFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xE19000, 0xE19FFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x0050C2, 0xE0D000, 0xE0DFFF, "Unixmedia Srl", "UNIXMEDIA-SRL" }, { 0x0050C2, 0xE0E000, 0xE0EFFF, "PMAC JAPAN", "PMAC-JAPAN" }, { 0x0050C2, 0xE41000, 0xE41FFF, "Higeco S.r.l.", "HIGECO-S-R-L" }, { 0x0050C2, 0xE42000, 0xE42FFF, "Wings for Media SL", "WINGS-FOR-MEDIA-SL" }, { 0x0050C2, 0xE38000, 0xE38FFF, "Aesir Copenhagen", "AESIR-COPENHAGEN" }, { 0x0050C2, 0xE37000, 0xE37FFF, "FUJI DATA SYSTEM Co., Ltd", "FUJI-DATA-SYSTEM" }, { 0x0050C2, 0xE36000, 0xE36FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE2D000, 0xE2DFFF, "Funkwerk IT Karlsfeld GmbH", "FUNKWERK-IT-KARLSFELD" }, { 0x0050C2, 0xE2E000, 0xE2EFFF, "DS! Ingenieurbuero", "DS!-INGENIEURBUERO" }, { 0x0050C2, 0xE2C000, 0xE2CFFF, "EN ElectronicNetwork Hamburg GmbH", "EN-ELECTRONICNETWORK-HAMBURG" }, { 0x0050C2, 0xE07000, 0xE07FFF, "Protagon Process Technologies GmbH", "PROTAGON-PROCESS-TECHNOLOGIES" }, { 0x0050C2, 0xE06000, 0xE06FFF, "Ebner Electronic GmbH", "EBNER" }, { 0x0050C2, 0xE05000, 0xE05FFF, "NOCOSIUM", "NOCOSIUM" }, { 0x0050C2, 0xE5F000, 0xE5FFFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x0050C2, 0xE5E000, 0xE5EFFF, "OREP", "OREP" }, { 0x0050C2, 0xE55000, 0xE55FFF, "TTi Ltd", "TTI" }, { 0x0050C2, 0xE54000, 0xE54FFF, "Arcos Technologies LTD", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xD95000, 0xD95FFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xD96000, 0xD96FFF, "CONTEC GmbH", "CONTEC" }, { 0x0050C2, 0xD97000, 0xD97FFF, "ERS electronic GmbH", "ERS" }, { 0x0050C2, 0xDB4000, 0xDB4FFF, "ZAO NPC Kompjuternie Technologii", "ZAO-NPC-KOMPJUTERNIE-TECHNOLOGII" }, { 0x0050C2, 0xDB3000, 0xDB3FFF, "LAUDA DR. R. WOBSER GMBH & CO. KG", "LAUDA-DR-R-WOBSER" }, { 0x0050C2, 0xDB2000, 0xDB2FFF, "SoftwareCannery", "SOFTWARECANNERY" }, { 0x0050C2, 0xDE5000, 0xDE5FFF, "Neets", "NEETS" }, { 0x0050C2, 0xDE4000, 0xDE4FFF, "EGS Technologies Ltd", "EGS-TECHNOLOGIES" }, { 0x0050C2, 0xDDA000, 0xDDAFFF, "rbz robot design s.l.", "RBZ-ROBOT-DESIGN-S-L" }, { 0x0050C2, 0xDDB000, 0xDDBFFF, "LUCEO", "LUCEO" }, { 0x0050C2, 0xDD0000, 0xDD0FFF, "IDC Solutions Pty Ltd", "IDC-SOLUTIONS-PTY" }, { 0x0050C2, 0xDD1000, 0xDD1FFF, "Brankamp GmbH", "BRANKAMP" }, { 0x0050C2, 0xDD2000, 0xDD2FFF, "Electronic Applications, Inc.", "APPLICATIONS" }, { 0x0050C2, 0xDC7000, 0xDC7FFF, "AGT Holdings Limited", "AGT-HOLDINGS" }, { 0x0050C2, 0xDC8000, 0xDC8FFF, "T2M2 GmbH", "T2M2" }, { 0x0050C2, 0xDC6000, 0xDC6FFF, "Fluid Components International", "FLUID-COMPONENTS" }, { 0x0050C2, 0xDBE000, 0xDBEFFF, "WITHSYSTEM Co.,Ltd", "WITHSYSTEM" }, { 0x0050C2, 0xDBC000, 0xDBCFFF, "Nantes Systems Private Limited", "NANTES-PRIVATE" }, { 0x0050C2, 0xDBD000, 0xDBDFFF, "Margento R&D", "MARGENTO-R-D" }, { 0x0050C2, 0xDA8000, 0xDA8FFF, "Sine Systems, Inc.", "SINE" }, { 0x0050C2, 0xDA0000, 0xDA0FFF, "Precision Remotes", "PRECISION-REMOTES" }, { 0x0050C2, 0xD9F000, 0xD9FFFF, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x0050C2, 0xDF3000, 0xDF3FFF, "INSEVIS GmbH", "INSEVIS" }, { 0x0050C2, 0xDF1000, 0xDF1FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xDF2000, 0xDF2FFF, "Ocean Sonics", "OCEAN-SONICS" }, { 0x0050C2, 0xDFD000, 0xDFDFFF, "Wotbox ltd", "WOTBOX" }, { 0x0050C2, 0xDFC000, 0xDFCFFF, "I-Evo Ltd", "I-EVO" }, { 0x0050C2, 0xDFB000, 0xDFBFFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x0050C2, 0xCFF000, 0xCFFFFF, "Infrasafe, Inc.", "INFRASAFE" }, { 0x0050C2, 0xCFE000, 0xCFEFFF, "Techleader", "TECHLEADER" }, { 0x0050C2, 0xCF4000, 0xCF4FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xD8D000, 0xD8DFFF, "CS-Instruments", "CS-INSTRUMENTS" }, { 0x0050C2, 0xD8C000, 0xD8CFFF, "iRphotonics", "IRPHOTONICS" }, { 0x0050C2, 0xD1F000, 0xD1FFFF, "Olympus NDT Canada Inc.", "OLYMPUS-NDT-CANADA" }, { 0x0050C2, 0xD20000, 0xD20FFF, "7+ Kft", "7+-KFT" }, { 0x0050C2, 0xD15000, 0xD15FFF, "MSR-Office GmbH", "MSR-OFFICE" }, { 0x0050C2, 0xD16000, 0xD16FFF, "Imricor Medical Systems, Inc.", "IMRICOR-MEDICAL" }, { 0x0050C2, 0xD6E000, 0xD6EFFF, "BC Illumination, Inc.", "BC-ILLUMINATION" }, { 0x0050C2, 0xD6F000, 0xD6FFFF, "Imtron Messtechnik GmbH", "IMTRON-MESSTECHNIK" }, { 0x0050C2, 0xD6D000, 0xD6DFFF, "Pro-Digital Industria Eletronica", "PRO-DIGITAL-INDUSTRIA-ELETRONICA" }, { 0x0050C2, 0xD63000, 0xD63FFF, "DATAREGIS S.A.", "DATAREGIS" }, { 0x0050C2, 0xD64000, 0xD64FFF, "TV1 GmbH", "TV1" }, { 0x0050C2, 0xD65000, 0xD65FFF, "TX Technology Corp", "TX" }, { 0x0050C2, 0xD3C000, 0xD3CFFF, "ASSYSTEM France", "ASSYSTEM-FRANCE" }, { 0x0050C2, 0xD3D000, 0xD3DFFF, "Tellabs Operations Inc.", "TELLABS-OPERATIONS" }, { 0x0050C2, 0xD34000, 0xD34FFF, "GAON TECH corp.", "GAON-TECH" }, { 0x0050C2, 0xD33000, 0xD33FFF, "Maddalena S.p.A", "MADDALENA-S-P-A" }, { 0x0050C2, 0xD32000, 0xD32FFF, "RealTime Systems Ltd", "REALTIME" }, { 0x0050C2, 0xD28000, 0xD28FFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 0x0050C2, 0xD29000, 0xD29FFF, "Axible Technologies", "AXIBLE-TECHNOLOGIES" }, { 0x0050C2, 0xD2A000, 0xD2AFFF, "Millennium Electronics Pty.Ltd.", "MILLENNIUM-ELECTRONICS-PTY" }, { 0x0050C2, 0xD50000, 0xD50FFF, "Solbrig Electronics, Inc.", "SOLBRIG-ELECTRONICS" }, { 0x0050C2, 0xD45000, 0xD45FFF, "Technagon GmbH", "TECHNAGON" }, { 0x0050C2, 0xD44000, 0xD44FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD3E000, 0xD3EFFF, "Synatec Electronic GmbH", "SYNATEC" }, { 0x0050C2, 0xD82000, 0xD82FFF, "Audio Authority Corp", "AUDIO-AUTHORITY" }, { 0x0050C2, 0xD83000, 0xD83FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0xD81000, 0xD81FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xD77000, 0xD77FFF, "Fr.SauterAG", "FR-SAUTERAG" }, { 0x0050C2, 0xD78000, 0xD78FFF, "P4Q Electronics", "P4Q-ELECTRONICS" }, { 0x0050C2, 0xD79000, 0xD79FFF, "DSI RF Systems, Inc.", "DSI-RF" }, { 0x0050C2, 0xD0C000, 0xD0CFFF, "JVL Industri Elektronik", "JVL-INDUSTRI-ELEKTRONIK" }, { 0x0050C2, 0xD0B000, 0xD0BFFF, "CODACO ELECTRONIC s.r.o.", "CODACO-S-R-O" }, { 0x0050C2, 0xD5B000, 0xD5BFFF, "Infinition Inc.", "INFINITION" }, { 0x0050C2, 0xD5A000, 0xD5AFFF, "Embedded Monitoring Systems Ltd.", "EMBEDDED-MONITORING" }, { 0x0050C2, 0xD51000, 0xD51FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x0050C2, 0xC82000, 0xC82FFF, "Kyosha Industries", "KYOSHA-INDUSTRIES" }, { 0x0050C2, 0xCEA000, 0xCEAFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xCEB000, 0xCEBFFF, "Toyon Research Corporation", "TOYON-RESEARCH" }, { 0x0050C2, 0xBBC000, 0xBBCFFF, "ImpactSystems", "IMPACTSYSTEMS" }, { 0x0050C2, 0xBC1000, 0xBC1FFF, "Sentec Ltd", "SENTEC" }, { 0x0050C2, 0xBBB000, 0xBBBFFF, "GHL Systems Berhad", "GHL-BERHAD" }, { 0x0050C2, 0xBB5000, 0xBB5FFF, "MROAD INFORMATION SYSTEM", "MROAD-INFORMATION-SYSTEM" }, { 0x0050C2, 0xBB4000, 0xBB4FFF, "JSC Electrical Equipment Factory", "JSC-ELECTRICAL-EQUIPMENT-FACTORY" }, { 0x0050C2, 0xBB0000, 0xBB0FFF, "Gainbrain", "GAINBRAIN" }, { 0x0050C2, 0xBAD000, 0xBADFFF, "Prediktor AS", "PREDIKTOR-AS" }, { 0x0050C2, 0xBAF000, 0xBAFFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0xBAC000, 0xBACFFF, "VITECO VNPT JSC", "VITECO-VNPT-JSC" }, { 0x0050C2, 0xC27000, 0xC27FFF, "Qtechnology A/S", "QTECHNOLOGY-A/S" }, { 0x0050C2, 0xC21000, 0xC21FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xC1D000, 0xC1DFFF, "Powerbase Energy Systems Inc.", "POWERBASE-ENERGY" }, { 0x0050C2, 0xC1C000, 0xC1CFFF, "Becton Dickinson", "BECTON-DICKINSON" }, { 0x0050C2, 0xC17000, 0xC17FFF, "Axis-Shield PoC AS", "AXIS-SHIELD-POC-AS" }, { 0x0050C2, 0xB91000, 0xB91FFF, "Finnet-Service Ltd.", "FINNET-SERVICE" }, { 0x0050C2, 0xB8F000, 0xB8FFFF, "Gentec", "GENTEC" }, { 0x0050C2, 0xB8E000, 0xB8EFFF, "WAC (Israel) Ltd.", "WAC-ISRAEL" }, { 0x0050C2, 0xB88000, 0xB88FFF, "Gigatronik Köln GmbH", "GIGATRONIK-KOELN" }, { 0x0050C2, 0xB87000, 0xB87FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xB85000, 0xB85FFF, "SilverNet", "SILVERNET" }, { 0x0050C2, 0xB84000, 0xB84FFF, "Innovate Software Solutions Pvt Ltd", "INNOVATE-SOFTWARE-SOLUTIONS-PVT" }, { 0x0050C2, 0xB7E000, 0xB7EFFF, "NARETRENDS", "NARETRENDS" }, { 0x0050C2, 0xB7F000, 0xB7FFFF, "Enatel", "ENATEL" }, { 0x0050C2, 0xBD0000, 0xBD0FFF, "EDC wifi", "EDC-WIFI" }, { 0x0050C2, 0xBCE000, 0xBCEFFF, "TV Portal Co., Ltd.", "TV-PORTAL" }, { 0x0050C2, 0xBCF000, 0xBCFFFF, "Epiko, elektronski sistemi d.o.o.", "EPIKO-ELEKTRONSKI-SISTEMI-D-O-O" }, { 0x0050C2, 0xBCB000, 0xBCBFFF, "ARTEIXO TELECOM", "ARTEIXO-TELECOM" }, { 0x0050C2, 0xBCC000, 0xBCCFFF, "VVDN TECHNOLOGIES PVT. LTD.", "VVDN-TECHNOLOGIES-PVT" }, { 0x0050C2, 0xBC5000, 0xBC5FFF, "Toptechnology SRL", "TOPTECHNOLOGY-SRL" }, { 0x0050C2, 0xBC6000, 0xBC6FFF, "MireroTack", "MIREROTACK" }, { 0x0050C2, 0xC0D000, 0xC0DFFF, "Fr. SauterAG", "FR-SAUTERAG" }, { 0x0050C2, 0xC03000, 0xC03FFF, "Volumatic Limited.", "VOLUMATIC" }, { 0x0050C2, 0xBDA000, 0xBDAFFF, "Digital Lumens", "DIGITAL-LUMENS" }, { 0x0050C2, 0xBD6000, 0xBD6FFF, "BG Systems, Inc.", "BG" }, { 0x0050C2, 0xBD8000, 0xBD8FFF, "b.a.b-technologie gmbh", "B-A-B-TECHNOLOGIE" }, { 0x0050C2, 0xBD9000, 0xBD9FFF, "AMS Controls, Inc.", "AMS-CONTROLS" }, { 0x0050C2, 0xBD5000, 0xBD5FFF, "RF-Embedded GmbH", "RF-EMBEDDED" }, { 0x0050C2, 0xBA6000, 0xBA6FFF, "Jomitek", "JOMITEK" }, { 0x0050C2, 0xBA5000, 0xBA5FFF, "InterCel Pty Ltd", "INTERCEL-PTY" }, { 0x0050C2, 0xBA2000, 0xBA2FFF, "Logical Tools s.r.l.", "LOGICAL-TOOLS-S-R-L" }, { 0x0050C2, 0xBA3000, 0xBA3FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xB9B000, 0xB9BFFF, "Telventy Energia S.A.", "TELVENTY-ENERGIA" }, { 0x0050C2, 0xB98000, 0xB98FFF, "Southwest Research Institute", "SOUTHWEST-RESEARCH-INSTITUTE" }, { 0x0050C2, 0xB99000, 0xB99FFF, "Greenlight Innovation Corp.", "GREENLIGHT-INNOVATION" }, { 0x0050C2, 0xC31000, 0xC31FFF, "4D Technology Corporation", "4D" }, { 0x0050C2, 0xC2B000, 0xC2BFFF, "Z-App Systems, Inc.", "Z-APP" }, { 0x0050C2, 0xB11000, 0xB11FFF, "EXEL s.r.l", "EXEL-S-R-L" }, { 0x0050C2, 0xB12000, 0xB12FFF, "CM Elektronik GmbH", "CM-ELEKTRONIK" }, { 0x0050C2, 0xB0E000, 0xB0EFFF, "KYAB Lulea AB", "KYAB-LULEA-AB" }, { 0x0050C2, 0xB10000, 0xB10FFF, "Marine Entertainment Systems Ltd", "MARINE-ENTERTAINMENT" }, { 0x0050C2, 0xB0D000, 0xB0DFFF, "Japan Electronics System, Inc", "JAPAN-ELECTRONICS-SYSTEM" }, { 0x0050C2, 0xB24000, 0xB24FFF, "Teledyne Defence Limited", "TELEDYNE-DEFENCE" }, { 0x0050C2, 0xB21000, 0xB21FFF, "Phytron-Elektronik GmbH", "PHYTRON-ELEKTRONIK" }, { 0x0050C2, 0xB22000, 0xB22FFF, "FarSite Communications Limited", "FARSITE-COMMUNICATION" }, { 0x0050C2, 0xB1C000, 0xB1CFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB1B000, 0xB1BFFF, "Integrated Control Corp.", "INTEGRATED-CONTROL" }, { 0x0050C2, 0xB1A000, 0xB1AFFF, "ELCUS", "ELCUS" }, { 0x0050C2, 0xB18000, 0xB18FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xB17000, 0xB17FFF, "Elcoteq Design Center Oy", "ELCOTEQ-DESIGN-CENTER-OY" }, { 0x0050C2, 0xB70000, 0xB70FFF, "Nisshin Electronics co.,ltd.", "NISSHIN-ELECTRONICS" }, { 0x0050C2, 0xB6A000, 0xB6AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB6B000, 0xB6BFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB69000, 0xB69FFF, "Thetis S.p.A.", "THETIS-S-P-A" }, { 0x0050C2, 0xB67000, 0xB67FFF, "RC Systems Co. Inc.", "RC" }, { 0x0050C2, 0xB66000, 0xB66FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xB61000, 0xB61FFF, "Nayos LTD", "NAYOS" }, { 0x0050C2, 0xB60000, 0xB60FFF, "OOO NPF ATIS", "OOO-NPF-ATIS" }, { 0x0050C2, 0xB5D000, 0xB5DFFF, "Plitron Manufacturing Inc.", "PLITRON-MANUFACTURING" }, { 0x0050C2, 0xB5F000, 0xB5FFFF, "North Bridge Technologies", "NORTH-BRIDGE-TECHNOLOGIES" }, { 0x0050C2, 0xB5C000, 0xB5CFFF, "ADI Video Technologies", "ADI-VIDEO-TECHNOLOGIES" }, { 0x0050C2, 0xB57000, 0xB57FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB56000, 0xB56FFF, "SINOVIA SA", "SINOVIA" }, { 0x0050C2, 0xB55000, 0xB55FFF, "SANYO ELECTRONIC INDUSTRIES CO.,LTD", "SANYO-INDUSTRIES" }, { 0x0050C2, 0xB52000, 0xB52FFF, "SMH Technologies", "SMH-TECHNOLOGIES" }, { 0x0050C2, 0xB4D000, 0xB4DFFF, "Troll Systems Corporation", "TROLL" }, { 0x0050C2, 0xB4C000, 0xB4CFFF, "ElectroCom", "ELECTROCOM" }, { 0x0050C2, 0xB7D000, 0xB7DFFF, "ELETECH Srl", "ELETECH-SRL" }, { 0x0050C2, 0xB7B000, 0xB7BFFF, "QUARTECH CORPORATION", "QUARTECH" }, { 0x0050C2, 0xB7A000, 0xB7AFFF, "Schnoor Industrieelektronik GmbH & Co. KG", "SCHNOOR-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0xB74000, 0xB74FFF, "AXED Jakubowski Wojciechowski sp.j.", "AXED-JAKUBOWSKI-WOJCIECHOWSKI-SP-J" }, { 0x0050C2, 0xB75000, 0xB75FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0xB73000, 0xB73FFF, "ARKRAY, Inc. Kyoto Laboratory", "ARKRAY-KYOTO-LABORATORY" }, { 0x0050C2, 0xB71000, 0xB71FFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 0x0050C2, 0xB4A000, 0xB4AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xB44000, 0xB44FFF, "Ampcontrol Pty Ltd", "AMPCONTROL-PTY" }, { 0x0050C2, 0xB43000, 0xB43FFF, "J-Systems Inc.", "J" }, { 0x0050C2, 0xB40000, 0xB40FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x0050C2, 0xB42000, 0xB42FFF, "ETM Electromatic Incorporated", "ETM-ELECTROMATIC-INCORPORATED" }, { 0x0050C2, 0xB3F000, 0xB3FFFF, "M-Tronic Design and Technology GmbH", "M-TRONIC-DESIGN-AND" }, { 0x0050C2, 0xB3A000, 0xB3AFFF, "Nikon Systems Inc.", "NIKON" }, { 0x0050C2, 0xB38000, 0xB38FFF, "Grenmore Ltd", "GRENMORE" }, { 0x0050C2, 0xB39000, 0xB39FFF, "siXis, Inc.", "SIXIS" }, { 0x0050C2, 0xB35000, 0xB35FFF, "haneron", "HANERON" }, { 0x0050C2, 0xB36000, 0xB36FFF, "CRDE", "CRDE" }, { 0x0050C2, 0xB2C000, 0xB2CFFF, "Concepteers, LLC", "CONCEPTEERS-LLC" }, { 0x0050C2, 0xB2E000, 0xB2EFFF, "ACT", "ACT" }, { 0x0050C2, 0xB2F000, 0xB2FFFF, "IntelliVision Technologies, Corp", "INTELLIVISION-TECHNOLOGIES" }, { 0x0050C2, 0xB2B000, 0xB2BFFF, "CosmoData Informatica Ltda.", "COSMODATA-INFORMATICA-LTDA" }, { 0x0050C2, 0xB26000, 0xB26FFF, "Elko Systems", "ELKO" }, { 0x0050C2, 0xB25000, 0xB25FFF, "Triax A/S", "TRIAX-A/S" }, { 0x0050C2, 0xB03000, 0xB03FFF, "Spider Tecnologia Ind. e Com. Ltda.", "SPIDER-TECNOLOGIA-IND-E-COM-LTDA" }, { 0x0050C2, 0xAFA000, 0xAFAFFF, "Absolute Fire Solutions Inc.", "ABSOLUTE-FIRE-SOLUTIONS" }, { 0x0050C2, 0xAFD000, 0xAFDFFF, "HomeScenario, Inc.", "HOMESCENARIO" }, { 0x0050C2, 0xAFE000, 0xAFEFFF, "Trolex Limited", "TROLEX" }, { 0x0050C2, 0xAF9000, 0xAF9FFF, "Ingenieurbuero Bickele und Buehler GmbH", "INGENIEURBUERO-BICKELE-UND-BUEHLER" }, { 0x0050C2, 0xB08000, 0xB08FFF, "Goerlitz AG", "GOERLITZ" }, { 0x0050C2, 0xB07000, 0xB07FFF, "FARECO", "FARECO" }, { 0x0050C2, 0xA9B000, 0xA9BFFF, "PDQ Manufacturing Inc.", "PDQ-MANUFACTURING" }, { 0x0050C2, 0xA9A000, 0xA9AFFF, "Absolutron. LLC", "ABSOLUTRON-LLC" }, { 0x0050C2, 0xA96000, 0xA96FFF, "FEP SRL", "FEP-SRL" }, { 0x0050C2, 0xA91000, 0xA91FFF, "Ceron Tech Co.,LTD", "CERON-TECH" }, { 0x0050C2, 0xA90000, 0xA90FFF, "S.two Corporation", "S-TWO" }, { 0x0050C2, 0xAF3000, 0xAF3FFF, "Palomar Products, Inc.", "PALOMAR-PRODUCTS" }, { 0x0050C2, 0xAF4000, 0xAF4FFF, "Dixell S.p.A.", "DIXELL-S-P-A" }, { 0x0050C2, 0xAEF000, 0xAEFFFF, "National CineMedia", "NATIONAL-CINEMEDIA" }, { 0x0050C2, 0xAEE000, 0xAEEFFF, "IPtec, Inc.", "IPTEC" }, { 0x0050C2, 0xAEA000, 0xAEAFFF, "EMBEDIA", "EMBEDIA" }, { 0x0050C2, 0xAEB000, 0xAEBFFF, "UMLogics Corporation", "UMLOGICS" }, { 0x0050C2, 0xAE9000, 0xAE9FFF, "ClearCorp Enterprises, Inc", "CLEARCORP-ENTERPRISES" }, { 0x0050C2, 0xAE6000, 0xAE6FFF, "VECOM USA", "VECOM-USA" }, { 0x0050C2, 0xAE1000, 0xAE1FFF, "EVERCARE", "EVERCARE" }, { 0x0050C2, 0xADF000, 0xADFFFF, "Altinex, Inc", "ALTINEX" }, { 0x0050C2, 0xAE0000, 0xAE0FFF, "AT4 wireless.S.A", "AT4-WIRELESS" }, { 0x0050C2, 0xADC000, 0xADCFFF, "Synthesechemie Dr. Penth GmbH", "SYNTHESECHEMIE-DR-PENTH" }, { 0x0050C2, 0xAD7000, 0xAD7FFF, "Air Monitors Ltd", "AIR-MONITORS" }, { 0x0050C2, 0xAD5000, 0xAD5FFF, "Mighty Lube Systematic Lubrication, Inc.", "MIGHTY-LUBE-SYSTEMATIC-LUBRICATION" }, { 0x0050C2, 0xAD6000, 0xAD6FFF, "Unisensor A/S", "UNISENSOR-A/S" }, { 0x0050C2, 0xAD2000, 0xAD2FFF, "Rafael", "RAFAEL" }, { 0x0050C2, 0xACC000, 0xACCFFF, "StockerYale", "STOCKERYALE" }, { 0x0050C2, 0xACD000, 0xACDFFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x0050C2, 0xAC8000, 0xAC8FFF, "Palladio Systeme GmbH", "PALLADIO-SYSTEME" }, { 0x0050C2, 0xAC2000, 0xAC2FFF, "OpenXS B.V.", "OPENXS" }, { 0x0050C2, 0xAC3000, 0xAC3FFF, "Diversified Control, Inc.", "DIVERSIFIED-CONTROL" }, { 0x0050C2, 0xABE000, 0xABEFFF, "AP Labs", "AP-LABS" }, { 0x0050C2, 0xAB9000, 0xAB9FFF, "Showtacle", "SHOWTACLE" }, { 0x0050C2, 0xAB8000, 0xAB8FFF, "AHM Limited (CLiKAPAD)", "AHM-CLIKAPAD" }, { 0x0050C2, 0xAB4000, 0xAB4FFF, "n3k Informatik GmbH", "N3K-INFORMATIK" }, { 0x0050C2, 0xAAF000, 0xAAFFFF, "Santa Barbara Instrument Group", "SANTA-BARBARA-INSTRUMENT-GROUP" }, { 0x0050C2, 0xAAE000, 0xAAEFFF, "OUTLINE srl", "OUTLINE-SRL" }, { 0x0050C2, 0xAAA000, 0xAAAFFF, "Flexible Picture Systems", "FLEXIBLE-PICTURE" }, { 0x0050C2, 0xAA5000, 0xAA5FFF, "Tampere University of Technology", "TAMPERE-UNIVERSITY-OF" }, { 0x0050C2, 0xAA4000, 0xAA4FFF, "PSi Printer Systems international GmbH", "PSI-PRINTER" }, { 0x0050C2, 0xAA0000, 0xAA0FFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0xA73000, 0xA73FFF, "KYOEI ENGINEERING Co.,Ltd.", "KYOEI-ENGINEERING" }, { 0x0050C2, 0xA69000, 0xA69FFF, "Advanced Integrated Systems", "ADVANCED-INTEGRATED" }, { 0x0050C2, 0xA8C000, 0xA8CFFF, "Redwire, LLC", "REDWIRE-LLC" }, { 0x0050C2, 0xA8B000, 0xA8BFFF, "Navicron Oy", "NAVICRON-OY" }, { 0x0050C2, 0xA87000, 0xA87FFF, "Littlemore Scientific", "LITTLEMORE-SCIENTIFIC" }, { 0x0050C2, 0xA7D000, 0xA7DFFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0xA5F000, 0xA5FFFF, "Alga Microwave Inc", "ALGA-MICROWAVE" }, { 0x0050C2, 0xA55000, 0xA55FFF, "Arrowvale Electronics", "ARROWVALE-ELECTRONICS" }, { 0x0050C2, 0xA37000, 0xA37FFF, "Software Systems Plus", "SOFTWARE-PLUS" }, { 0x0050C2, 0xA2D000, 0xA2DFFF, "Inventure Inc.", "INVENTURE" }, { 0x0050C2, 0xA28000, 0xA28FFF, "KENDA ELECTRONIC SYSTEMS LIMITED", "KENDA" }, { 0x0050C2, 0xA4B000, 0xA4BFFF, "L-3 Communications Mobile-Vision, Inc.", "L-3-COMMUNICATION-MOBILE-VISION" }, { 0x0050C2, 0xA41000, 0xA41FFF, "Meiryo Denshi Corp.", "MEIRYO-DENSHI" }, { 0x0050C2, 0x977000, 0x977FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x976000, 0x976FFF, "SANDS INSTRUMENTATION INDIA PVT LTD", "SANDS-INSTRUMENTATION-INDIA-PVT" }, { 0x0050C2, 0x96D000, 0x96DFFF, "Keene Electronics Ltd.", "KEENE-ELECTRONICS" }, { 0x0050C2, 0x91D000, 0x91DFFF, "Rosendahl Studiotechnik GmbH", "ROSENDAHL-STUDIOTECHNIK" }, { 0x0050C2, 0x913000, 0x913FFF, "Selex Ex Ltd", "SELEX-EX" }, { 0x0050C2, 0x95B000, 0x95BFFF, "AS Solar GmbH", "AS-SOLAR" }, { 0x0050C2, 0x95A000, 0x95AFFF, "TechnoAP", "TECHNOAP" }, { 0x0050C2, 0x959000, 0x959FFF, "DECTRIS Ltd.", "DECTRIS" }, { 0x0050C2, 0x957000, 0x957FFF, "STRATEC Control Systems", "STRATEC-CONTROL" }, { 0x0050C2, 0x950000, 0x950FFF, "Tele and Radio Research Institute", "TELE-AND-RADIO-RESEARCH-INSTITUTE" }, { 0x0050C2, 0x951000, 0x951FFF, "EL.C.A. soc. coop.", "EL-C-A-SOC-COOP" }, { 0x0050C2, 0x94D000, 0x94DFFF, "C&H technology ltd.", "C-H" }, { 0x0050C2, 0x94F000, 0x94FFFF, "IT-Designers GmbH", "IT-DESIGNERS" }, { 0x0050C2, 0x961000, 0x961FFF, "Picsolve International Limited", "PICSOLVE" }, { 0x0050C2, 0x984000, 0x984FFF, "Atel Corporation", "ATEL" }, { 0x0050C2, 0x985000, 0x985FFF, "Earnestcom Sdn Bhd", "EARNESTCOM-SDN-BHD" }, { 0x0050C2, 0x982000, 0x982FFF, "Triple Ring Technologies, Inc.", "TRIPLE-RING-TECHNOLOGIES" }, { 0x0050C2, 0x981000, 0x981FFF, "Novotronik GmbH", "NOVOTRONIK" }, { 0x0050C2, 0x97D000, 0x97DFFF, "Soehnle Professional GmbH & Co.KG", "SOEHNLE-PROFESSIONAL" }, { 0x0050C2, 0x97E000, 0x97EFFF, "RF Industries", "RF-INDUSTRIES" }, { 0x0050C2, 0x96C000, 0x96CFFF, "Aqua Cooler Pty Ltd", "AQUA-COOLER-PTY" }, { 0x0050C2, 0x962000, 0x962FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x95F000, 0x95FFFF, "METRONIC APARATURA KONTROLNO - POMIAROWA", "METRONIC-APARATURA-KONTROLNO---POMIAROWA" }, { 0x0050C2, 0x95E000, 0x95EFFF, "BEEcube Inc.", "BEECUBE" }, { 0x0050C2, 0x93B000, 0x93BFFF, "Reliatronics Inc.", "RELIATRONICS" }, { 0x0050C2, 0x931000, 0x931FFF, "Korea Telecom Internet Solutions (KTIS)", "KOREA-TELECOM-INTERNET-SOLUTIONS-KTIS" }, { 0x0050C2, 0x94C000, 0x94CFFF, "TEMIX", "TEMIX" }, { 0x0050C2, 0x948000, 0x948FFF, "ELECTRONIA", "ELECTRONIA" }, { 0x0050C2, 0x949000, 0x949FFF, "taskit GmbH", "TASKIT" }, { 0x0050C2, 0x927000, 0x927FFF, "ATIS group s.r.o.", "ATIS-GROUP-S-R-O" }, { 0x0050C2, 0x87F000, 0x87FFFF, "Optoelettronica Italia S.r.l.", "OPTOELETTRONICA-ITALIA-S-R-L" }, { 0x0050C2, 0x87C000, 0x87CFFF, "Arcontia AB", "ARCONTIA-AB" }, { 0x0050C2, 0x87B000, 0x87BFFF, "UAVNavigation S.L.", "UAVNAVIGATION-S-L" }, { 0x0050C2, 0x875000, 0x875FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x871000, 0x871FFF, "R-S-I Elektrotechnik GmbH & Co. KG", "R-S-I-ELEKTROTECHNIK" }, { 0x0050C2, 0x872000, 0x872FFF, "Oliotalo Oy", "OLIOTALO-OY" }, { 0x0050C2, 0x86B000, 0x86BFFF, "OMB Sistemas Electronicos S.A.", "OMB-SISTEMAS-ELECTRONICOS" }, { 0x0050C2, 0x8C4000, 0x8C4FFF, "Soldig Industria e Comercio de Equipamentos Eletronicos LTDA", "SOLDIG-INDUSTRIA-E-COMERCIO-DE-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0x0050C2, 0x8C0000, 0x8C0FFF, "S.C.E. s.r.l.", "S-C-E-S-R-L" }, { 0x0050C2, 0x8C1000, 0x8C1FFF, "Heraeus Noblelight GmbH", "HERAEUS-NOBLELIGHT" }, { 0x0050C2, 0x8BA000, 0x8BAFFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x8BB000, 0x8BBFFF, "smtag international ag", "SMTAG" }, { 0x0050C2, 0x8B7000, 0x8B7FFF, "Calnex Solutions Limited", "CALNEX-SOLUTIONS" }, { 0x0050C2, 0x8B6000, 0x8B6FFF, "Shadrinskiy Telefonny Zavod", "SHADRINSKIY-TELEFONNY-ZAVOD" }, { 0x0050C2, 0x8B0000, 0x8B0FFF, "BK Innovation, Inc.", "BK-INNOVATION" }, { 0x0050C2, 0x8B1000, 0x8B1FFF, "RingCube Technologies, Inc.", "RINGCUBE-TECHNOLOGIES" }, { 0x0050C2, 0x8AD000, 0x8ADFFF, "Thales Communications, Inc", "THALES-COMMUNICATION" }, { 0x0050C2, 0x8AC000, 0x8ACFFF, "Telsa s.r.l", "TELSA-S-R-L" }, { 0x0050C2, 0x8A7000, 0x8A7FFF, "PIXEYE LTD", "PIXEYE" }, { 0x0050C2, 0x8A6000, 0x8A6FFF, "SELCO", "SELCO" }, { 0x0050C2, 0x8A2000, 0x8A2FFF, "UAVISION Engenharia de Sistemas", "UAVISION-ENGENHARIA-DE-SISTEMAS" }, { 0x0050C2, 0x8A3000, 0x8A3FFF, "RTW GmbH & Co.KG", "RTW" }, { 0x0050C2, 0x89C000, 0x89CFFF, "Mediana", "MEDIANA" }, { 0x0050C2, 0x89D000, 0x89DFFF, "Systemtechnik GmbH", "SYSTEMTECHNIK" }, { 0x0050C2, 0x8D5000, 0x8D5FFF, "Peek Traffic Corp", "PEEK-TRAFFIC" }, { 0x0050C2, 0x8D4000, 0x8D4FFF, "Internet Protocolo Lógica SL", "INTERNET-PROTOCOLO-LóGICA-SL" }, { 0x0050C2, 0x8CE000, 0x8CEFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x8CF000, 0x8CFFFF, "GigaLinx Ltd.", "GIGALINX" }, { 0x0050C2, 0x8CB000, 0x8CBFFF, "Beonic Corporation", "BEONIC" }, { 0x0050C2, 0x8CA000, 0x8CAFFF, "Altair semiconductor Ltd", "ALTAIR-SEMICONDUCTOR" }, { 0x0050C2, 0x8C5000, 0x8C5FFF, "Vortex Engineering pvt ltd", "VORTEX-ENGINEERING-PVT" }, { 0x0050C2, 0x897000, 0x897FFF, "ODF Optronics, Inc.", "ODF-OPTRONICS" }, { 0x0050C2, 0x898000, 0x898FFF, "Veeco Process Equipment, Inc.", "VEECO-PROCESS-EQUIPMENT" }, { 0x0050C2, 0x893000, 0x893FFF, "EIZO Technologies GmbH", "EIZO-TECHNOLOGIES" }, { 0x0050C2, 0x890000, 0x890FFF, "BAE Systems Hägglunds AB", "BAE-HAEGGLUNDS-AB" }, { 0x0050C2, 0x88F000, 0x88FFFF, "Keynote SIGOS GmbH", "KEYNOTE-SIGOS" }, { 0x0050C2, 0x889000, 0x889FFF, "ACS Motion Control Ltd.", "ACS-MOTION-CONTROL" }, { 0x0050C2, 0x885000, 0x885FFF, "OOO NTK IMOS", "OOO-NTK-IMOS" }, { 0x0050C2, 0x8E8000, 0x8E8FFF, "Friedrich Kuhnt GmbH", "FRIEDRICH-KUHNT" }, { 0x0050C2, 0x8DF000, 0x8DFFFF, "Dipl.-Ing. W. Nophut GmbH", "DIPL--ING-W-NOPHUT" }, { 0x0050C2, 0x8DE000, 0x8DEFFF, "Coherix, Inc", "COHERIX" }, { 0x0050C2, 0x8D8000, 0x8D8FFF, "Array Technologies Inc", "ARRAY-TECHNOLOGIES" }, { 0x0050C2, 0x8D9000, 0x8D9FFF, "Industrial Control and Communication Limited", "INDUSTRIAL-CONTROL-AND-COMMUNICATION" }, { 0x0050C2, 0x902000, 0x902FFF, "China Railway Signal & Communication Corp.", "CHINA-RAILWAY-SIGNAL-COMMUNICATION" }, { 0x0050C2, 0x903000, 0x903FFF, "EcoAxis Systems Pvt. Ltd.", "ECOAXIS-PVT" }, { 0x0050C2, 0x8F8000, 0x8F8FFF, "RMSD LTD", "RMSD" }, { 0x0050C2, 0x8F6000, 0x8F6FFF, "K-MAC Corp.", "K-MAC" }, { 0x0050C2, 0x8F3000, 0x8F3FFF, "Curtis Door Systems Inc", "CURTIS-DOOR" }, { 0x0050C2, 0x8F2000, 0x8F2FFF, "Schneider Electric GmbH", "SCHNEIDER-ELECTRIC" }, { 0x0050C2, 0x8EC000, 0x8ECFFF, "Balfour Beatty Rail GmbH", "BALFOUR-BEATTY-RAIL" }, { 0x0050C2, 0x8ED000, 0x8EDFFF, "AT-Automation Technology GmbH", "AT-AUTOMATION" }, { 0x0050C2, 0x8E9000, 0x8E9FFF, "UNIDATA", "UNIDATA" }, { 0x0050C2, 0x8F7000, 0x8F7FFF, "TGE Co., Ltd.", "TGE" }, { 0x0050C2, 0x804000, 0x804FFF, "SoftSwitching Technologies", "SOFTSWITCHING-TECHNOLOGIES" }, { 0x0050C2, 0x7FB000, 0x7FBFFF, "Qtron Pty Ltd", "QTRON-PTY" }, { 0x0050C2, 0x7FA000, 0x7FAFFF, "AutomationX GmbH", "AUTOMATIONX" }, { 0x0050C2, 0x7F2000, 0x7F2FFF, "Logotherm Regelsysteme GmbH", "LOGOTHERM-REGELSYSTEME" }, { 0x0050C2, 0x7F1000, 0x7F1FFF, "STUHL Regelsysteme GmbH", "STUHL-REGELSYSTEME" }, { 0x0050C2, 0x7EE000, 0x7EEFFF, "NH Research", "NH-RESEARCH" }, { 0x0050C2, 0x7ED000, 0x7EDFFF, "Genesis Automation Inc.", "GENESIS-AUTOMATION" }, { 0x0050C2, 0x7E8000, 0x7E8FFF, "Mistral Solutions Pvt. Ltd", "MISTRAL-SOLUTIONS-PVT" }, { 0x0050C2, 0x7E7000, 0x7E7FFF, "V2Green, Inc.", "V2GREEN" }, { 0x0050C2, 0x7E5000, 0x7E5FFF, "Nystrom Engineering", "NYSTROM-ENGINEERING" }, { 0x0050C2, 0x7E3000, 0x7E3FFF, "Progentech Limited", "PROGENTECH" }, { 0x0050C2, 0x7E4000, 0x7E4FFF, "Meta Vision Systems Ltd.", "META-VISION" }, { 0x0050C2, 0x82D000, 0x82DFFF, "Elmec, Inc.", "ELMEC" }, { 0x0050C2, 0x82C000, 0x82CFFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0x822000, 0x822FFF, "Winner Technology Co, Ltd.", "WINNER" }, { 0x0050C2, 0x823000, 0x823FFF, "Robot Visual Systems GmbH", "ROBOT-VISUAL" }, { 0x0050C2, 0x819000, 0x819FFF, "Cabinplant A/S", "CABINPLANT-A/S" }, { 0x0050C2, 0x818000, 0x818FFF, "Wireless Value BV", "WIRELESS-VALUE" }, { 0x0050C2, 0x80E000, 0x80EFFF, "Bruno International Ltd.", "BRUNO" }, { 0x0050C2, 0x80F000, 0x80FFFF, "Selekron Microcontrol s.l.", "SELEKRON-MICROCONTROL-S-L" }, { 0x0050C2, 0x805000, 0x805FFF, "MultimediaLED", "MULTIMEDIALED" }, { 0x0050C2, 0x839000, 0x839FFF, "IMS Röntgensysteme GmbH", "IMS-ROENTGENSYSTEME" }, { 0x0050C2, 0x834000, 0x834FFF, "ANTEK GmbH", "ANTEK" }, { 0x0050C2, 0x835000, 0x835FFF, "Communications Laboratories Inc", "COMMUNICATION-LABORATORIES" }, { 0x0050C2, 0x868000, 0x868FFF, "Aethon, Inc.", "AETHON" }, { 0x0050C2, 0x867000, 0x867FFF, "Syntronics", "SYNTRONICS" }, { 0x0050C2, 0x861000, 0x861FFF, "Grantronics Pty Ltd", "GRANTRONICS-PTY" }, { 0x0050C2, 0x783000, 0x783FFF, "NORMA systems GmbH", "NORMA" }, { 0x0050C2, 0x781000, 0x781FFF, "Starling Advanced Communications", "STARLING-ADVANCED-COMMUNICATION" }, { 0x0050C2, 0x779000, 0x779FFF, "Coral Telecom Ltd", "CORAL-TELECOM" }, { 0x0050C2, 0x777000, 0x777FFF, "Euro Display Srl", "EURO-DISPLAY-SRL" }, { 0x0050C2, 0x778000, 0x778FFF, "SunGard Vivista", "SUNGARD-VIVISTA" }, { 0x0050C2, 0x7DE000, 0x7DEFFF, "Cascade Technologies Ltd", "CASCADE-TECHNOLOGIES" }, { 0x0050C2, 0x7DD000, 0x7DDFFF, "LS Elektronik AB", "LS-ELEKTRONIK-AB" }, { 0x0050C2, 0x7D9000, 0x7D9FFF, "Volumatic Limited", "VOLUMATIC" }, { 0x0050C2, 0x7DA000, 0x7DAFFF, "HTEC Limited", "HTEC" }, { 0x0050C2, 0x7DB000, 0x7DBFFF, "Mueller Elektronik", "MUELLER-ELEKTRONIK" }, { 0x0050C2, 0x76D000, 0x76DFFF, "Mobilisme", "MOBILISME" }, { 0x0050C2, 0x76C000, 0x76CFFF, "EFG CZ spol. s r.o.", "EFG-CZ-SPOL-S-R-O" }, { 0x0050C2, 0x765000, 0x765FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x764000, 0x764FFF, "Argus-Spectrum", "ARGUS-SPECTRUM" }, { 0x0050C2, 0x75A000, 0x75AFFF, "Gaisler Research AB", "GAISLER-RESEARCH-AB" }, { 0x0050C2, 0x75B000, 0x75BFFF, "DMT System S.p.A.", "DMT-SYSTEM-S-P-A" }, { 0x0050C2, 0x7C0000, 0x7C0FFF, "European Industrial Electronics B.V.", "EUROPEAN-INDUSTRIAL-ELECTRONICS" }, { 0x0050C2, 0x7B6000, 0x7B6FFF, "Alstom (Schweiz) AG", "ALSTOM-SCHWEIZ" }, { 0x0050C2, 0x7D6000, 0x7D6FFF, "International Mining Technologies", "MINING-TECHNOLOGIES" }, { 0x0050C2, 0x7D2000, 0x7D2FFF, "Bittitalo Oy", "BITTITALO-OY" }, { 0x0050C2, 0x7D3000, 0x7D3FFF, "Highrail Systems Limited", "HIGHRAIL" }, { 0x0050C2, 0x7CA000, 0x7CAFFF, "CEDAR Audio Limited", "CEDAR-AUDIO" }, { 0x0050C2, 0x7AC000, 0x7ACFFF, "IUSA SA DE CV", "IUSA-DE-CV" }, { 0x0050C2, 0x6EF000, 0x6EFFFF, "Pneumopartners LaenneXT SA", "PNEUMOPARTNERS-LAENNEXT" }, { 0x0050C2, 0x6EE000, 0x6EEFFF, "Interactive Electronic Systems", "INTERACTIVE" }, { 0x0050C2, 0x6EC000, 0x6ECFFF, "Netistix Technologies Corporation", "NETISTIX-TECHNOLOGIES" }, { 0x0050C2, 0x6EA000, 0x6EAFFF, "FIRSTEC SA", "FIRSTEC" }, { 0x0050C2, 0x6EB000, 0x6EBFFF, "Harrison Audio, LLC", "HARRISON-AUDIO-LLC" }, { 0x0050C2, 0x6E5000, 0x6E5FFF, "Boeckeler Instruments, Inc.", "BOECKELER-INSTRUMENTS" }, { 0x0050C2, 0x6E4000, 0x6E4FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x6E1000, 0x6E1FFF, "NewOnSys Ltd.", "NEWONSYS" }, { 0x0050C2, 0x6E2000, 0x6E2FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x6E0000, 0x6E0FFF, "FIRSTTRUST Co.,Ltd.", "FIRSTTRUST" }, { 0x0050C2, 0x6FE000, 0x6FEFFF, "Blue Origin", "BLUE-ORIGIN" }, { 0x0050C2, 0x6FF000, 0x6FFFFF, "St. Michael Strategies Inc.", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0x6F8000, 0x6F8FFF, "RV Technology Limited", "RV" }, { 0x0050C2, 0x6F9000, 0x6F9FFF, "Revox GmbH", "REVOX" }, { 0x0050C2, 0x6F6000, 0x6F6FFF, "AV SatCom AS", "AV-SATCOM-AS" }, { 0x0050C2, 0x6F5000, 0x6F5FFF, "Kitron Microelectronics AB", "KITRON-MICROELECTRONICS-AB" }, { 0x0050C2, 0x6F4000, 0x6F4FFF, "Cryogenic Control Systems, Inc.", "CRYOGENIC-CONTROL" }, { 0x0050C2, 0x751000, 0x751FFF, "e&s Engineering & Software GmbH", "E-S-ENGINEERING-SOFTWARE" }, { 0x0050C2, 0x750000, 0x750FFF, "Brightlights Intellectual Property Ltd", "BRIGHTLIGHTS-INTELLECTUAL-PROPERTY" }, { 0x0050C2, 0x746000, 0x746FFF, "Realtronix Company", "REALTRONIX-COMPANY" }, { 0x0050C2, 0x747000, 0x747FFF, "CDSA Dam Neck", "CDSA-DAM-NECK" }, { 0x0050C2, 0x6D0000, 0x6D0FFF, "EDS Systemtechnik", "EDS-SYSTEMTECHNIK" }, { 0x0050C2, 0x6D1000, 0x6D1FFF, "Schnick-Schnack-Systems GmbH", "SCHNICK-SCHNACK" }, { 0x0050C2, 0x6CC000, 0x6CCFFF, "Widmer Time Recorder Co., Inc.", "WIDMER-TIME-RECORDER" }, { 0x0050C2, 0x6CD000, 0x6CDFFF, "RGM SPA", "RGM-SPA" }, { 0x0050C2, 0x6CE000, 0x6CEFFF, "EMITALL Surveillance S.A,", "EMITALL-SURVEILLANCE" }, { 0x0050C2, 0x6C4000, 0x6C4FFF, "REXXON GmbH", "REXXON" }, { 0x0050C2, 0x6C7000, 0x6C7FFF, "QuickCircuit Ltd.", "QUICKCIRCUIT" }, { 0x0050C2, 0x711000, 0x711FFF, "LINKIT S.R.L.", "LINKIT-S-R-L" }, { 0x0050C2, 0x712000, 0x712FFF, "Pasan SA", "PASAN" }, { 0x0050C2, 0x713000, 0x713FFF, "3DX-Ray Limited", "3DX-RAY" }, { 0x0050C2, 0x70C000, 0x70CFFF, "Exertus", "EXERTUS" }, { 0x0050C2, 0x70B000, 0x70BFFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0x707000, 0x707FFF, "DTech Labs Inc", "DTECH-LABS" }, { 0x0050C2, 0x706000, 0x706FFF, "DioDigiWorks. CO., LTD.", "DIODIGIWORKS" }, { 0x0050C2, 0x702000, 0x702FFF, "SPM Instrument AB", "SPM-INSTRUMENT-AB" }, { 0x0050C2, 0x703000, 0x703FFF, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x0050C2, 0x6D7000, 0x6D7FFF, "Mavenir System, Inc.", "MAVENIR-SYSTEM" }, { 0x0050C2, 0x6D8000, 0x6D8FFF, "BL Healthcare, Inc.", "BL-HEALTHCARE" }, { 0x0050C2, 0x6DA000, 0x6DAFFF, "Techno Fittings S.r.l.", "TECHNO-FITTINGS-S-R-L" }, { 0x0050C2, 0x6DB000, 0x6DBFFF, "Gebhardt Ventilatoren GmbH", "GEBHARDT-VENTILATOREN" }, { 0x0050C2, 0x6D6000, 0x6D6FFF, "ADL Electronics Ltd.", "ADL-ELECTRONICS" }, { 0x0050C2, 0x71F000, 0x71FFFF, "ASC telecom AG", "ASC-TELECOM" }, { 0x0050C2, 0x71D000, 0x71DFFF, "MG s.r.l.", "MG-S-R-L" }, { 0x0050C2, 0x71B000, 0x71BFFF, "ADVA Optical Networking", "ADVA-OPTICAL-NETWORKING" }, { 0x0050C2, 0x71C000, 0x71CFFF, "Elmec Inc.", "ELMEC" }, { 0x0050C2, 0x715000, 0x715FFF, "RIEXINGER Elektronik", "RIEXINGER-ELEKTRONIK" }, { 0x0050C2, 0x716000, 0x716FFF, "MITROL S.R.L.", "MITROL-S-R-L" }, { 0x0050C2, 0x733000, 0x733FFF, "Cimetrics Research Pty Ltd", "CIMETRICS-RESEARCH-PTY" }, { 0x0050C2, 0x732000, 0x732FFF, "Schlumberger K.K.", "SCHLUMBERGER-K-K" }, { 0x0050C2, 0x729000, 0x729FFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0x73D000, 0x73DFFF, "cryptiris", "CRYPTIRIS" }, { 0x0050C2, 0x73C000, 0x73CFFF, "Simicon", "SIMICON" }, { 0x0050C2, 0x66D000, 0x66DFFF, "DIGITEK S.p.A.", "DIGITEK-S-P-A" }, { 0x0050C2, 0x663000, 0x663FFF, "COE Limited", "COE" }, { 0x0050C2, 0x6B0000, 0x6B0FFF, "Smart Key International Limited", "SMART-KEY" }, { 0x0050C2, 0x6A9000, 0x6A9FFF, "Armida Technologies Corporation", "ARMIDA-TECHNOLOGIES" }, { 0x0050C2, 0x6A8000, 0x6A8FFF, "Delcan Technologies, Inc", "DELCAN-TECHNOLOGIES" }, { 0x0050C2, 0x6A4000, 0x6A4FFF, "TELETASK", "TELETASK" }, { 0x0050C2, 0x6A3000, 0x6A3FFF, "CreaTech Electronics Co.", "CREATECH-ELECTRONICS" }, { 0x0050C2, 0x69F000, 0x69FFFF, "Total RF, LLC", "TOTAL-RF-LLC" }, { 0x0050C2, 0x6BD000, 0x6BDFFF, "Mitron Oy", "MITRON-OY" }, { 0x0050C2, 0x6C2000, 0x6C2FFF, "HoseoTelnet Inc...", "HOSEOTELNET" }, { 0x0050C2, 0x6C3000, 0x6C3FFF, "iTRACS Corporation", "ITRACS" }, { 0x0050C2, 0x6B9000, 0x6B9FFF, "unipo GmbH", "UNIPO" }, { 0x0050C2, 0x6BA000, 0x6BAFFF, "Fertron Controle e Automacao Industrial Ltda.", "FERTRON-CONTROLE-E-AUTOMACAO-INDUSTRIAL-LTDA" }, { 0x0050C2, 0x6BC000, 0x6BCFFF, "Paraytec Ltd", "PARAYTEC" }, { 0x0050C2, 0x6B3000, 0x6B3FFF, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 0x0050C2, 0x6AF000, 0x6AFFFF, "Nanoradio AB", "NANORADIO-AB" }, { 0x0050C2, 0x660000, 0x660FFF, "IZISOFT", "IZISOFT" }, { 0x0050C2, 0x656000, 0x656FFF, "LDA Audio Video Profesional", "LDA-AUDIO-VIDEO-PROFESIONAL" }, { 0x0050C2, 0x659000, 0x659FFF, "Dorsett Technologies, Inc.", "DORSETT-TECHNOLOGIES" }, { 0x0050C2, 0x64C000, 0x64CFFF, "CIS Corporation", "CIS" }, { 0x0050C2, 0x64F000, 0x64FFFF, "MA Lighting Technology GmbH", "MA-LIGHTING" }, { 0x0050C2, 0x69B000, 0x69BFFF, "Tsien (UK) Ltd", "TSIEN-UK" }, { 0x0050C2, 0x69C000, 0x69CFFF, "Bug Labs, Inc.", "BUG-LABS" }, { 0x0050C2, 0x692000, 0x692FFF, "Mate Media Access Technologies", "MATE-MEDIA-ACCESS-TECHNOLOGIES" }, { 0x0050C2, 0x695000, 0x695FFF, "Purelink Technology, inc.", "PURELINK" }, { 0x0050C2, 0x691000, 0x691FFF, "Interopix, Inc.", "INTEROPIX" }, { 0x0050C2, 0x688000, 0x688FFF, "Elk Products", "ELK-PRODUCTS" }, { 0x0050C2, 0x68B000, 0x68BFFF, "SIMTEK INC.", "SIMTEK" }, { 0x0050C2, 0x687000, 0x687FFF, "Access Specialties, Inc", "ACCESS-SPECIALTIES" }, { 0x0050C2, 0x67E000, 0x67EFFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x677000, 0x677FFF, "ProconX Pty Ltd", "PROCONX-PTY" }, { 0x0050C2, 0x674000, 0x674FFF, "Protech Optronics Co., Ltd.", "PROTECH-OPTRONICS" }, { 0x0050C2, 0x645000, 0x645FFF, "The Software Group Limited", "THE-SOFTWARE-GROUP" }, { 0x0050C2, 0x640000, 0x640FFF, "IAC", "IAC" }, { 0x0050C2, 0x641000, 0x641FFF, "NEO Information Systems Co., Ltd.", "NEO-INFORMATION" }, { 0x0050C2, 0x642000, 0x642FFF, "Stanton Technologies Sdn Bhd", "STANTON-TECHNOLOGIES-SDN-BHD" }, { 0x0050C2, 0x59B000, 0x59BFFF, "SAPEC", "SAPEC" }, { 0x0050C2, 0x59A000, 0x59AFFF, "MultiTrode Pty Ltd", "MULTITRODE-PTY" }, { 0x0050C2, 0x597000, 0x597FFF, "Nautel Limited", "NAUTEL" }, { 0x0050C2, 0x590000, 0x590FFF, "EM Motorsport Ltd", "EM-MOTORSPORT" }, { 0x0050C2, 0x591000, 0x591FFF, "Grosvenor Technology Ltd", "GROSVENOR" }, { 0x0050C2, 0x58D000, 0x58DFFF, "ZAO", "ZAO" }, { 0x0050C2, 0x5DE000, 0x5DEFFF, "Magal Senstar Inc.", "MAGAL-SENSTAR" }, { 0x0050C2, 0x5DD000, 0x5DDFFF, "SomerData ltd", "SOMERDATA" }, { 0x0050C2, 0x5A1000, 0x5A1FFF, "Vestfold Butikkdata AS", "VESTFOLD-BUTIKKDATA-AS" }, { 0x0050C2, 0x52A000, 0x52AFFF, "OMNITRONICS PTY LTD", "OMNITRONICS-PTY" }, { 0x0050C2, 0x528000, 0x528FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x521000, 0x521FFF, "ARIS TECHNOLOGIES", "ARIS-TECHNOLOGIES" }, { 0x0050C2, 0x520000, 0x520FFF, "McCain Traffic Supply", "MCCAIN-TRAFFIC-SUPPLY" }, { 0x0050C2, 0x51D000, 0x51DFFF, "VELUX", "VELUX" }, { 0x0050C2, 0x550000, 0x550FFF, "LJU Automatisierungstechnik GmbH", "LJU-AUTOMATISIERUNGSTECHNIK" }, { 0x0050C2, 0x552000, 0x552FFF, "Elfiq Inc.", "ELFIQ" }, { 0x0050C2, 0x553000, 0x553FFF, "ATH system", "ATH-SYSTEM" }, { 0x0050C2, 0x54F000, 0x54FFFF, "Valtronic SA", "VALTRONIC" }, { 0x0050C2, 0x548000, 0x548FFF, "I.T.W. Betaprint", "I-T-W-BETAPRINT" }, { 0x0050C2, 0x577000, 0x577FFF, "Advanced Software Technologies", "ADVANCED-SOFTWARE-TECHNOLOGIES" }, { 0x0050C2, 0x573000, 0x573FFF, "DATAMICRO Co., Ltd.", "DATAMICRO" }, { 0x0050C2, 0x569000, 0x569FFF, "Twinwin Technplogy Co.,Ltd.", "TWINWIN-TECHNPLOGY" }, { 0x0050C2, 0x586000, 0x586FFF, "Genetix Ltd", "GENETIX" }, { 0x0050C2, 0x587000, 0x587FFF, "Dynalco", "DYNALCO" }, { 0x0050C2, 0x583000, 0x583FFF, "Jünger Audio-Studiotechnik GmbH", "JUENGER-AUDIO-STUDIOTECHNIK" }, { 0x0050C2, 0x57C000, 0x57CFFF, "éolane", "éOLANE" }, { 0x0050C2, 0x57D000, 0x57DFFF, "Sierra Video Systems", "SIERRA-VIDEO" }, { 0x0050C2, 0x579000, 0x579FFF, "Gastager Systemtechnik GmbH", "GASTAGER-SYSTEMTECHNIK" }, { 0x0050C2, 0x549000, 0x549FFF, "Netsynt S.p.A.", "NETSYNT-S-P-A" }, { 0x0050C2, 0x546000, 0x546FFF, "Universidad de Chile Facultad de Medicina", "UNIVERSIDAD-DE-CHILE-FACULTAD-DE-MEDICINA" }, { 0x0050C2, 0x545000, 0x545FFF, "SecuInfo Co., Ltd.", "SECUINFO" }, { 0x0050C2, 0x53E000, 0x53EFFF, "Honeywell GNO", "HONEYWELL-GNO" }, { 0x0050C2, 0x53B000, 0x53BFFF, "Teleks Co. Ltd.", "TELEKS" }, { 0x0050C2, 0x51E000, 0x51EFFF, "Alcon Technologies", "ALCON-TECHNOLOGIES" }, { 0x0050C2, 0x517000, 0x517FFF, "Solid State Logic", "SOLID-STATE-LOGIC" }, { 0x0050C2, 0x516000, 0x516FFF, "SOWA ELECTRIC CO., LTD.", "SOWA-ELECTRIC" }, { 0x0050C2, 0x513000, 0x513FFF, "Genie Network Resource Management Inc.", "GENIE-NETWORK-RESOURCE-MANAGEMENT" }, { 0x0050C2, 0x53C000, 0x53CFFF, "Marposs SPA", "MARPOSS-SPA" }, { 0x0050C2, 0x535000, 0x535FFF, "MMS Servis s.r.o.", "MMS-SERVIS-S-R-O" }, { 0x0050C2, 0x534000, 0x534FFF, "Hyundai J. Comm", "HYUNDAI-J-COMM" }, { 0x0050C2, 0x532000, 0x532FFF, "NVE Corporation", "NVE" }, { 0x0050C2, 0x511000, 0x511FFF, "Tecna Srl", "TECNA-SRL" }, { 0x0050C2, 0x512000, 0x512FFF, "Linear Acoustic, Inc", "LINEAR-ACOUSTIC" }, { 0x0050C2, 0x506000, 0x506FFF, "7+ Kft", "7+-KFT" }, { 0x0050C2, 0x55D000, 0x55DFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x55C000, 0x55CFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x559000, 0x559FFF, "Fail Safe Solutions LLC", "FAIL-SAFE-SOLUTIONS-LLC" }, { 0x0050C2, 0x55A000, 0x55AFFF, "Valde Systems, Inc.", "VALDE" }, { 0x0050C2, 0x4A7000, 0x4A7FFF, "iseg Spezialelektronik GmbH", "ISEG-SPEZIALELEKTRONIK" }, { 0x0050C2, 0x4A2000, 0x4A2FFF, "SPECS GmbH", "SPECS" }, { 0x0050C2, 0x4A3000, 0x4A3FFF, "Protium Technologies, Inc.", "PROTIUM-TECHNOLOGIES" }, { 0x0050C2, 0x4A4000, 0x4A4FFF, "IEEE P1609 WG", "IEEE-P1609-WG" }, { 0x0050C2, 0x312000, 0x312FFF, "Dese Technologies SL", "DESE-TECHNOLOGIES-SL" }, { 0x0050C2, 0x47E000, 0x47EFFF, "Energie Umwelt Systemtechnik GmbH", "ENERGIE-UMWELT-SYSTEMTECHNIK" }, { 0x0050C2, 0x478000, 0x478FFF, "Metafix Inc.", "METAFIX" }, { 0x0050C2, 0x475000, 0x475FFF, "ISEPOS GmbH", "ISEPOS" }, { 0x0050C2, 0x477000, 0x477FFF, "SEV Tidsystem AB", "SEV-TIDSYSTEM-AB" }, { 0x0050C2, 0x474000, 0x474FFF, "Venue 1, Inc.", "VENUE-1" }, { 0x0050C2, 0x489000, 0x489FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x0050C2, 0x48B000, 0x48BFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x48C000, 0x48CFFF, "UNITON AG", "UNITON" }, { 0x0050C2, 0x488000, 0x488FFF, "DA SISTEMI SPA", "DA-SISTEMI-SPA" }, { 0x0050C2, 0x481000, 0x481FFF, "Computer Sciences Corp", "SCIENCES" }, { 0x0050C2, 0x482000, 0x482FFF, "PRIAMUS SYSTEM TECHNOLOGIES AG", "PRIAMUS-SYSTEM-TECHNOLOGIES" }, { 0x0050C2, 0x47F000, 0x47FFFF, "BRIT Inc.", "BRIT" }, { 0x0050C2, 0x4E9000, 0x4E9FFF, "Seachange international", "SEACHANGE" }, { 0x0050C2, 0x4E8000, 0x4E8FFF, "SATEL sp. z o.o.", "SATEL-SP-Z-O-O" }, { 0x0050C2, 0x49C000, 0x49CFFF, "Envisacor Technologies Inc.", "ENVISACOR-TECHNOLOGIES" }, { 0x0050C2, 0x49D000, 0x49DFFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0x496000, 0x496FFF, "Acutelogic Corporation", "ACUTELOGIC" }, { 0x0050C2, 0x495000, 0x495FFF, "VAZA Elektronik AB", "VAZA-ELEKTRONIK-AB" }, { 0x0050C2, 0x492000, 0x492FFF, "TRAFSYS AS", "TRAFSYS-AS" }, { 0x0050C2, 0x4FC000, 0x4FCFFF, "Hwayoung RF Solution Inc", "HWAYOUNG-RF-SOLUTION" }, { 0x0050C2, 0x4F2000, 0x4F2FFF, "Tantronic AG", "TANTRONIC" }, { 0x0050C2, 0x4DF000, 0x4DFFFF, "Thermo Electron", "THERMO-ELECTRON" }, { 0x0050C2, 0x4D5000, 0x4D5FFF, "SEBA Design Pty Ltd", "SEBA-DESIGN-PTY" }, { 0x0050C2, 0x4B7000, 0x4B7FFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x4B6000, 0x4B6FFF, "General Resources Co., LTD.", "GENERAL-RESOURCES" }, { 0x0050C2, 0x4D4000, 0x4D4FFF, "Herholdt Controls srl", "HERHOLDT-CONTROLS-SRL" }, { 0x0050C2, 0x4CB000, 0x4CBFFF, "Verint Systems Ltd", "VERINT" }, { 0x0050C2, 0x4CA000, 0x4CAFFF, "Yarg Biometrics Limited", "YARG-BIOMETRICS" }, { 0x0050C2, 0x4C0000, 0x4C0FFF, "Bio-logic Systems Corp", "BIO-LOGIC" }, { 0x0050C2, 0x4C1000, 0x4C1FFF, "Movaz Networks, Inc.", "MOVAZ-NETWORKS" }, { 0x0050C2, 0x3E8000, 0x3E8FFF, "Conformative Systems, Inc.", "CONFORMATIVE" }, { 0x0050C2, 0x3E3000, 0x3E3FFF, "CSIRO - Division of Exploration and Mining", "CSIRO---DIVISION-OF-EXPLORATION-AND-MINING" }, { 0x0050C2, 0x3E0000, 0x3E0FFF, "Oy Stinghorn Ltd", "OY-STINGHORN" }, { 0x0050C2, 0x44E000, 0x44EFFF, "QQ Technology,Inc", "QQ" }, { 0x0050C2, 0x3BB000, 0x3BBFFF, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x0050C2, 0x394000, 0x394FFF, "Embedit A/S", "EMBEDIT-A/S" }, { 0x0050C2, 0x35C000, 0x35CFFF, "Ratotec GmbH", "RATOTEC" }, { 0x0050C2, 0x35D000, 0x35DFFF, "NetTest A/S", "NETTEST-A/S" }, { 0x0050C2, 0x35F000, 0x35FFFF, "F.Imm. S.r.L.", "F-IMM-S-R-L" }, { 0x0050C2, 0x361000, 0x361FFF, "Contec", "CONTEC" }, { 0x0050C2, 0x356000, 0x356FFF, "Baytech Cinema", "BAYTECH-CINEMA" }, { 0x0050C2, 0x357000, 0x357FFF, "Athena Semiconductor", "ATHENA-SEMICONDUCTOR" }, { 0x0050C2, 0x33B000, 0x33BFFF, "MultimediaLED", "MULTIMEDIALED" }, { 0x0050C2, 0x355000, 0x355FFF, "IHM", "IHM" }, { 0x0050C2, 0x36A000, 0x36AFFF, "Optronic Partner pr AB", "OPTRONIC-PARTNER-PR-AB" }, { 0x0050C2, 0x36B000, 0x36BFFF, "Minerva Technology Inc", "MINERVA" }, { 0x0050C2, 0x367000, 0x367FFF, "CANMAX Technology Ltd.", "CANMAX" }, { 0x0050C2, 0x369000, 0x369FFF, "Always On Wireless", "ALWAYS-ON-WIRELESS" }, { 0x0050C2, 0x366000, 0x366FFF, "Vanguard Technology Corp.", "VANGUARD" }, { 0x0050C2, 0x38A000, 0x38AFFF, "Embedtronics Enterprise", "EMBEDTRONICS" }, { 0x0050C2, 0x3B8000, 0x3B8FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x3AE000, 0x3AEFFF, "Hankuk Tapi Computer Co., Ltd", "HANKUK-TAPI" }, { 0x0050C2, 0x3B1000, 0x3B1FFF, "RDC Specstroy-Svyaz Ltd", "RDC-SPECSTROY-SVYAZ" }, { 0x0050C2, 0x3A8000, 0x3A8FFF, "Engim, Inc.", "ENGIM" }, { 0x0050C2, 0x39E000, 0x39EFFF, "A.R.G ElectroDesign Ltd", "A-R-G-ELECTRODESIGN" }, { 0x0050C2, 0x3D9000, 0x3D9FFF, "Bavaria Digital Technik GmbH", "BAVARIA-DIGITAL-TECHNIK" }, { 0x0050C2, 0x2EC000, 0x2ECFFF, "CHENGDU BOOK DIGITAL CO., LTD", "CHENGDU-BOOK-DIGITAL" }, { 0x0050C2, 0x2E6000, 0x2E6FFF, "DALSA", "DALSA" }, { 0x0050C2, 0x2E7000, 0x2E7FFF, "SafeView, Inc.", "SAFEVIEW" }, { 0x0050C2, 0x2E2000, 0x2E2FFF, "Ballard Technology, Inc.", "BALLARD" }, { 0x0050C2, 0x2E3000, 0x2E3FFF, "MG Industrieelektronik GmbH", "MG-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0x2E5000, 0x2E5FFF, "Transtech DSP", "TRANSTECH-DSP" }, { 0x0050C2, 0x2DD000, 0x2DDFFF, "Westek Technology Ltd", "WESTEK" }, { 0x0050C2, 0x2DC000, 0x2DCFFF, "Wiener, Plein & Baus GmbH", "WIENER-PLEIN-BAUS" }, { 0x0050C2, 0x2D9000, 0x2D9FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x2DB000, 0x2DBFFF, "AutoTOOLS group Co. Ltd.", "AUTOTOOLS-GROUP" }, { 0x0050C2, 0x2B9000, 0x2B9FFF, "Richmond Sound Design Ltd.", "RICHMOND-SOUND-DESIGN" }, { 0x0050C2, 0x2BA000, 0x2BAFFF, "NORCO INDUSTRIAL TECHNOLOGY INC", "NORCO-INDUSTRIAL" }, { 0x0050C2, 0x2B6000, 0x2B6FFF, "Softier Inc.", "SOFTIER" }, { 0x0050C2, 0x2B4000, 0x2B4FFF, "Polatis Ltd", "POLATIS" }, { 0x0050C2, 0x2B5000, 0x2B5FFF, "Hobbes Computer Network Accessories", "HOBBES-NETWORK-ACCESSORIES" }, { 0x0050C2, 0x2B1000, 0x2B1FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x2B2000, 0x2B2FFF, "Smiths Detection", "SMITHS-DETECTION" }, { 0x0050C2, 0x2AC000, 0x2ACFFF, "BBI Engineering, Inc.", "BBI-ENGINEERING" }, { 0x0050C2, 0x2A8000, 0x2A8FFF, "DVTel Israel Ltd.", "DVTEL-ISRAEL" }, { 0x0050C2, 0x2AA000, 0x2AAFFF, "DEUTA Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0x2AB000, 0x2ABFFF, "AUM Infotech Private Limited", "AUM-INFOTECH-PRIVATE" }, { 0x0050C2, 0x2CE000, 0x2CEFFF, "Ross Video Limited", "ROSS-VIDEO" }, { 0x0050C2, 0x2C7000, 0x2C7FFF, "Siliquent Technologies Ltd", "SILIQUENT-TECHNOLOGIES" }, { 0x0050C2, 0x2C8000, 0x2C8FFF, "SELCO", "SELCO" }, { 0x0050C2, 0x2C9000, 0x2C9FFF, "Roseman Engineering Ltd.", "ROSEMAN-ENGINEERING" }, { 0x0050C2, 0x2C4000, 0x2C4FFF, "Invensys Energy Systens (NZ) Limited", "INVENSYS-ENERGY-SYSTENS-NZ" }, { 0x0050C2, 0x2C5000, 0x2C5FFF, "Elman srl", "ELMAN-SRL" }, { 0x0050C2, 0x2BE000, 0x2BEFFF, "Lipowsky Industrie-Elektronik GmbH", "LIPOWSKY-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0x2BF000, 0x2BFFFF, "PERAX", "PERAX" }, { 0x0050C2, 0x300000, 0x300FFF, "Soredex Instrumentarium Oyj", "SOREDEX-INSTRUMENTARIUM-OYJ" }, { 0x0050C2, 0x2F9000, 0x2F9FFF, "Digilent Inc.", "DIGILENT" }, { 0x0050C2, 0x2FA000, 0x2FAFFF, "Tornado Modular Systems, Ltd", "TORNADO-MODULAR" }, { 0x0050C2, 0x2F6000, 0x2F6FFF, "Clifford Chance LLP", "CLIFFORD-CHANCE-LLP" }, { 0x0050C2, 0x2F1000, 0x2F1FFF, "Geometrics, Inc.", "GEOMETRICS" }, { 0x0050C2, 0x2EF000, 0x2EFFFF, "Profline B.V.", "PROFLINE" }, { 0x0050C2, 0x2D8000, 0x2D8FFF, "SYN-TECH SYSTEMS INC", "SYN-TECH" }, { 0x0050C2, 0x2CF000, 0x2CFFFF, "Diseño de Sistemas en Silicio S.A.", "DISEñO-DE-SISTEMAS-EN-SILICIO" }, { 0x0050C2, 0x2D1000, 0x2D1FFF, "Miritek, Inc.", "MIRITEK" }, { 0x0050C2, 0x2D2000, 0x2D2FFF, "AIRNET COMMUNICATIONS CORP", "AIRNET-COMMUNICATION" }, { 0x0050C2, 0x2D3000, 0x2D3FFF, "Gerber Scientific Products, Inc.", "GERBER-SCIENTIFIC-PRODUCTS" }, { 0x0050C2, 0x320000, 0x320FFF, "DTASENSOR S.p.A.", "DTASENSOR-S-P-A" }, { 0x0050C2, 0x31F000, 0x31FFFF, "Geotech Instruments, LLC", "GEOTECH-INSTRUMENTS-LLC" }, { 0x0050C2, 0x31A000, 0x31AFFF, "Zodiak Data Systems", "ZODIAK-DATA" }, { 0x0050C2, 0x31B000, 0x31BFFF, "Datacon", "DATACON" }, { 0x0050C2, 0x317000, 0x317FFF, "Cosine Systems, Inc.", "COSINE" }, { 0x0050C2, 0x30B000, 0x30BFFF, "VX Technologies Inc.", "VX-TECHNOLOGIES" }, { 0x0050C2, 0x30D000, 0x30DFFF, "SETARAM", "SETARAM" }, { 0x0050C2, 0x30E000, 0x30EFFF, "Obvius", "OBVIUS" }, { 0x0050C2, 0x32F000, 0x32FFFF, "PULTRONICS", "PULTRONICS" }, { 0x0050C2, 0x32B000, 0x32BFFF, "Digital Multimedia Technologies Spa", "DIGITAL-MULTIMEDIA-TECHNOLOGIES-SPA" }, { 0x0050C2, 0x325000, 0x325FFF, "Federal Aviation Administration", "FEDERAL-AVIATION-ADMINISTRATION" }, { 0x0050C2, 0x324000, 0x324FFF, "ODIXION", "ODIXION" }, { 0x0050C2, 0x335000, 0x335FFF, "Nimcat Networks", "NIMCAT-NETWORKS" }, { 0x0050C2, 0x337000, 0x337FFF, "ETI", "ETI" }, { 0x0050C2, 0x338000, 0x338FFF, "Ernitec A/S", "ERNITEC-A/S" }, { 0x0050C2, 0x339000, 0x339FFF, "CEGELEC SUD EST", "CEGELEC-SUD-EST" }, { 0x0050C2, 0x334000, 0x334FFF, "Picture Elements, Inc.", "PICTURE-ELEMENTS" }, { 0x0050C2, 0x32E000, 0x32EFFF, "MANUSA-GEST, S.L.", "MANUSA-GEST-S-L" }, { 0x0050C2, 0x30A000, 0x30AFFF, "Innings Telecom Inc.", "INNINGS-TELECOM" }, { 0x0050C2, 0x304000, 0x304FFF, "COMERSON S.r.l.", "COMERSON-S-R-L" }, { 0x0050C2, 0x303000, 0x303FFF, "CI Systems Ltd.", "CI" }, { 0x0050C2, 0x26B000, 0x26BFFF, "Continental Gateway Limited", "CONTINENTAL-GATEWAY" }, { 0x0050C2, 0x265000, 0x265FFF, "BELIK S.P.R.L.", "BELIK-S-P-R-L" }, { 0x0050C2, 0x266000, 0x266FFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x0050C2, 0x262000, 0x262FFF, "Shanghai Gaozhi Science&Technology Development Ltd.", "SHANGHAI-GAOZHI-SCIENCE-DEVELOPMENT" }, { 0x0050C2, 0x261000, 0x261FFF, "Tattile Srl", "TATTILE-SRL" }, { 0x0050C2, 0x25B000, 0x25BFFF, "Winford Engineering", "WINFORD-ENGINEERING" }, { 0x0050C2, 0x25C000, 0x25CFFF, "Softhill Technologies Ltd.", "SOFTHILL-TECHNOLOGIES" }, { 0x0050C2, 0x279000, 0x279FFF, "PATLITE Corporation", "PATLITE" }, { 0x0050C2, 0x27A000, 0x27AFFF, "Maestro Pty Ltd", "MAESTRO-PTY" }, { 0x0050C2, 0x275000, 0x275FFF, "Extreme Engineering Solutions", "EXTREME-ENGINEERING-SOLUTIONS" }, { 0x0050C2, 0x26F000, 0x26FFFF, "Digital Recorders Inc", "DIGITAL-RECORDERS" }, { 0x0050C2, 0x270000, 0x270FFF, "S4 Technology Pty Ltd", "S4-PTY" }, { 0x0050C2, 0x28E000, 0x28EFFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x289000, 0x289FFF, "Rototype S.p.A.", "ROTOTYPE-S-P-A" }, { 0x0050C2, 0x28A000, 0x28AFFF, "Real Time Systems", "REAL-TIME" }, { 0x0050C2, 0x28C000, 0x28CFFF, "Futaba Corporation", "FUTABA" }, { 0x0050C2, 0x28D000, 0x28DFFF, "AXODE SA", "AXODE" }, { 0x0050C2, 0x284000, 0x284FFF, "Micronet Ltd.", "MICRONET" }, { 0x0050C2, 0x283000, 0x283FFF, "ANSITEX CORP.", "ANSITEX" }, { 0x0050C2, 0x280000, 0x280FFF, "AGECODAGIS SARL", "AGECODAGIS-SARL" }, { 0x0050C2, 0x27F000, 0x27FFFF, "Air Broadband Communications, Inc.", "AIR-BROADBAND-COMMUNICATION" }, { 0x0050C2, 0x276000, 0x276FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0x24E000, 0x24EFFF, "Scharff Weisberg Systems Integration Inc", "SCHARFF-WEISBERG-INTEGRATION" }, { 0x0050C2, 0x244000, 0x244FFF, "intec GmbH", "INTEC" }, { 0x0050C2, 0x248000, 0x248FFF, "Dixtal Biomedica Ind. Com. Ltda.", "DIXTAL-BIOMEDICA-IND-COM-LTDA" }, { 0x0050C2, 0x249000, 0x249FFF, "Bender GmbH & Co. KG", "BENDER" }, { 0x0050C2, 0x256000, 0x256FFF, "Information Technology Corp.", "INFORMATION" }, { 0x0050C2, 0x257000, 0x257FFF, "Digicast Networks", "DIGICAST-NETWORKS" }, { 0x0050C2, 0x252000, 0x252FFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x253000, 0x253FFF, "DSM-Messtechnik GmbH", "DSM-MESSTECHNIK" }, { 0x0050C2, 0x251000, 0x251FFF, "DGT Sp. z o.o.", "DGT-SP-Z-O-O" }, { 0x0050C2, 0x298000, 0x298FFF, "Harvad University", "HARVAD-UNIVERSITY" }, { 0x0050C2, 0x297000, 0x297FFF, "KINETICS", "KINETICS" }, { 0x0050C2, 0x296000, 0x296FFF, "OpVista", "OPVISTA" }, { 0x0050C2, 0x293000, 0x293FFF, "IP Unity", "IP-UNITY" }, { 0x0050C2, 0x294000, 0x294FFF, "EPSa GmbH", "EPSA" }, { 0x0050C2, 0x2A0000, 0x2A0FFF, "Sterling Industry Consult GmbH", "STERLING-INDUSTRY-CONSULT" }, { 0x0050C2, 0x2A1000, 0x2A1FFF, "Infinetix Corp", "INFINETIX" }, { 0x0050C2, 0x2A2000, 0x2A2FFF, "Epelsa, SL", "EPELSA-SL" }, { 0x0050C2, 0x29D000, 0x29DFFF, "Globe Wireless", "GLOBE-WIRELESS" }, { 0x0050C2, 0x29E000, 0x29EFFF, "SELEX Communications Ltd", "SELEX-COMMUNICATION" }, { 0x0050C2, 0x2A7000, 0x2A7FFF, "Micro System Architecturing srl", "MICRO-SYSTEM-ARCHITECTURING-SRL" }, { 0x0050C2, 0x23E000, 0x23EFFF, "Kallastra Inc.", "KALLASTRA" }, { 0x0050C2, 0x23F000, 0x23FFFF, "Halliburton - NUMAR", "HALLIBURTON---NUMAR" }, { 0x0050C2, 0x202000, 0x202FFF, "Audio Riders Oy", "AUDIO-RIDERS-OY" }, { 0x0050C2, 0x203000, 0x203FFF, "Vocality International Ltd", "VOCALITY" }, { 0x0050C2, 0x1FE000, 0x1FEFFF, "Safetran Traffic Systems Inc.", "SAFETRAN-TRAFFIC" }, { 0x0050C2, 0x1F9000, 0x1F9FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x1F8000, 0x1F8FFF, "ULTRACKER TECHNOLOGY", "ULTRACKER" }, { 0x0050C2, 0x1E9000, 0x1E9FFF, "Ranch Networks", "RANCH-NETWORKS" }, { 0x0050C2, 0x1F4000, 0x1F4FFF, "Covia, Inc", "COVIA" }, { 0x0050C2, 0x216000, 0x216FFF, "Level Control Systems", "LEVEL-CONTROL" }, { 0x0050C2, 0x20D000, 0x20DFFF, "Varisys Ltd", "VARISYS" }, { 0x0050C2, 0x212000, 0x212FFF, "4Links Limited", "4LINKS" }, { 0x0050C2, 0x20C000, 0x20CFFF, "Communication and Telemechanical Systems Company Limited", "COMMUNICATION-AND-TELEMECHANICAL-COMPANY" }, { 0x0050C2, 0x234000, 0x234FFF, "Silverback Systems", "SILVERBACK" }, { 0x0050C2, 0x235000, 0x235FFF, "POLIMAR ELEKTRONIK LTD.", "POLIMAR-ELEKTRONIK" }, { 0x0050C2, 0x23A000, 0x23AFFF, "Chantry Networks", "CHANTRY-NETWORKS" }, { 0x0050C2, 0x22B000, 0x22BFFF, "Riegl Laser Measurement Systems GmbH", "RIEGL-LASER-MEASUREMENT" }, { 0x0050C2, 0x208000, 0x208FFF, "nNovia, Inc.", "NNOVIA" }, { 0x0050C2, 0x226000, 0x226FFF, "Ross Video Limited", "ROSS-VIDEO" }, { 0x0050C2, 0x220000, 0x220FFF, "Serveron Corporation", "SERVERON" }, { 0x0050C2, 0x221000, 0x221FFF, "Getinge IT Solutions ApS", "GETINGE-IT-SOLUTIONS-APS" }, { 0x0050C2, 0x1C7000, 0x1C7FFF, "TWIN DEVELOPMENT S.A.", "TWIN-DEVELOPMENT" }, { 0x0050C2, 0x1BD000, 0x1BDFFF, "AIOI Systems Co., Ltd.", "AIOI" }, { 0x0050C2, 0x1DB000, 0x1DBFFF, "Applied Systems Engineering, Inc.", "APPLIED-ENGINEERING" }, { 0x0050C2, 0x1D1000, 0x1D1FFF, "Benchmark Electronics", "BENCHMARK-ELECTRONICS" }, { 0x0050C2, 0x003000, 0x003FFF, "Microsoft", "MICROSOFT" }, { 0x0050C2, 0x004000, 0x004FFF, "SCI Technology Inc.", "SCI" }, { 0x0050C2, 0x169000, 0x169FFF, "Nordson Corp.", "NORDSON" }, { 0x0050C2, 0x16C000, 0x16CFFF, "Brijing Embedor Embedded Internet Tech. Co. Ltd.", "BRIJING-EMBEDOR-EMBEDDED-INTERNET-TECH" }, { 0x0050C2, 0x16D000, 0x16DFFF, "Postec Data Systems Ltd.", "POSTEC-DATA" }, { 0x0050C2, 0x15E000, 0x15EFFF, "Celite Systems, Inc.", "CELITE" }, { 0x0050C2, 0x15F000, 0x15FFFF, "Pulsar GmbH", "PULSAR" }, { 0x0050C2, 0x15A000, 0x15AFFF, "Plextek Limited", "PLEXTEK" }, { 0x0050C2, 0x1A9000, 0x1A9FFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x0050C2, 0x19F000, 0x19FFFF, "Fleetwood Electronics Ltd", "FLEETWOOD-ELECTRONICS" }, { 0x0050C2, 0x195000, 0x195FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x0050C2, 0x146000, 0x146FFF, "APCON, Inc.", "APCON" }, { 0x0050C2, 0x164000, 0x164FFF, "Acunia N.V.", "ACUNIA-N-V" }, { 0x0050C2, 0x190000, 0x190FFF, "Goerlitz AG", "GOERLITZ" }, { 0x0050C2, 0x1B3000, 0x1B3FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x136000, 0x136FFF, "Tensilica, Inc.", "TENSILICA" }, { 0x0050C2, 0x12E000, 0x12EFFF, "RUNCOM", "RUNCOM" }, { 0x0050C2, 0x14A000, 0x14AFFF, "DYCEC, S.A.", "DYCEC" }, { 0x0050C2, 0x14B000, 0x14BFFF, "HECUBA Elektronik", "HECUBA-ELEKTRONIK" }, { 0x0050C2, 0x141000, 0x141FFF, "Time Terminal Adductor Group AB", "TIME-TERMINAL-ADDUCTOR-GROUP-AB" }, { 0x0050C2, 0x11F000, 0x11FFFF, "CSS Industrie Computer GmbH", "CSS-INDUSTRIE" }, { 0x0050C2, 0x120000, 0x120FFF, "XStore, Inc.", "XSTORE" }, { 0x0050C2, 0x154000, 0x154FFF, "Jostra AB", "JOSTRA-AB" }, { 0x0050C2, 0x155000, 0x155FFF, "Enea Real Time AB", "ENEA-REAL-TIME-AB" }, { 0x0050C2, 0x137000, 0x137FFF, "Uniwell Systems (UK) Ltd.", "UNIWELL-UK" }, { 0x0050C2, 0x150000, 0x150FFF, "Torse", "TORSE" }, { 0x0050C2, 0x13C000, 0x13CFFF, "NBG Industrial Automation B.V.", "NBG-INDUSTRIAL-AUTOMATION" }, { 0x0050C2, 0x125000, 0x125FFF, "Tecwings GmBh", "TECWINGS" }, { 0x0050C2, 0x140000, 0x140FFF, "ITS, Inc.", "ITS" }, { 0x0050C2, 0x116000, 0x116FFF, "DSP Design, Ltd.", "DSP-DESIGN" }, { 0x0050C2, 0x115000, 0x115FFF, "Vidco, Inc.", "VIDCO" }, { 0x0050C2, 0x100000, 0x100FFF, "Corelatus A.B.", "CORELATUS-A-B" }, { 0x0050C2, 0x0FB000, 0x0FBFFF, "PIUSYS Co., Ltd.", "PIUSYS" }, { 0x0050C2, 0x0F7000, 0x0F7FFF, "Foss NIRSystems, Inc.", "FOSS-NIRSYSTEMS" }, { 0x0050C2, 0x10E000, 0x10EFFF, "Unipower AB", "UNIPOWER-AB" }, { 0x0050C2, 0x10A000, 0x10AFFF, "Quinx AG", "QUINX" }, { 0x0050C2, 0x10B000, 0x10BFFF, "MarekMicro GmbH", "MAREKMICRO" }, { 0x0050C2, 0x104000, 0x104FFF, "Adescom Inc.", "ADESCOM" }, { 0x0050C2, 0x105000, 0x105FFF, "Lumentis AB", "LUMENTIS-AB" }, { 0x0050C2, 0x101000, 0x101FFF, "LAUD Electronic Design AS", "LAUD-DESIGN-AS" }, { 0x0050C2, 0x0D8000, 0x0D8FFF, "Charlotte's Web Networks", "CHARLOTTE-S-WEB-NETWORKS" }, { 0x0050C2, 0x0D2000, 0x0D2FFF, "Real World Computing Partnership", "REAL-WORLD-COMPUTING-PARTNERSHIP" }, { 0x0050C2, 0x0D3000, 0x0D3FFF, "Lake Technology, Ltd.", "LAKE" }, { 0x0050C2, 0x0C8000, 0x0C8FFF, "The Trane Company", "THE-TRANE-COMPANY" }, { 0x0050C2, 0x0F4000, 0x0F4FFF, "Sysnet Co., Ltd.", "SYSNET" }, { 0x0050C2, 0x0F3000, 0x0F3FFF, "Young Computer Co., Ltd.", "YOUNG" }, { 0x0050C2, 0x0EC000, 0x0ECFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x0E6000, 0x0E6FFF, "RouteFree, Inc.", "ROUTEFREE" }, { 0x0050C2, 0x0BB000, 0x0BBFFF, "MAZet GmbH", "MAZET" }, { 0x0050C2, 0x0DD000, 0x0DDFFF, "Interisa Electronica, S.A.", "INTERISA-ELECTRONICA" }, { 0x0050C2, 0x0DC000, 0x0DCFFF, "Elbit Systems Ltd.", "ELBIT" }, { 0x0050C2, 0x0D9000, 0x0D9FFF, "Loewe Opta GmbH", "LOEWE-OPTA" }, { 0x0050C2, 0x0E7000, 0x0E7FFF, "Century Geophysical Corp.", "CENTURY-GEOPHYSICAL" }, { 0x0050C2, 0x0E2000, 0x0E2FFF, "Visual Circuits Corp.", "VISUAL-CIRCUITS" }, { 0x0050C2, 0x0E3000, 0x0E3FFF, "Lanex S.A.", "LANEX" }, { 0x0050C2, 0x0CE000, 0x0CEFFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x0050C2, 0x08E000, 0x08EFFF, "BSQUARE", "BSQUARE" }, { 0x0050C2, 0x08D000, 0x08DFFF, "Kylink Communications Corp.", "KYLINK-COMMUNICATION" }, { 0x0050C2, 0x09A000, 0x09AFFF, "NBO Development Center Sekusui Chemical Co. Ltd.", "NBO-DEVELOPMENT-CENTER-SEKUSUI-CHEMICAL" }, { 0x0050C2, 0x097000, 0x097FFF, "IMV Invertomatic", "IMV-INVERTOMATIC" }, { 0x0050C2, 0x098000, 0x098FFF, "EPEL Industrial, S.A.", "EPEL-INDUSTRIAL" }, { 0x0050C2, 0x0B6000, 0x0B6FFF, "ApSecure Technologies (Canada), Inc.", "APSECURE-TECHNOLOGIES-CANADA" }, { 0x0050C2, 0x0B1000, 0x0B1FFF, "Beeline Networks, Inc.", "BEELINE-NETWORKS" }, { 0x0050C2, 0x0A5000, 0x0A5FFF, "Mobiltex Data Ltd.", "MOBILTEX-DATA" }, { 0x0050C2, 0x0A4000, 0x0A4FFF, "Bounty Systems Pty Ltd.", "BOUNTY-PTY" }, { 0x0050C2, 0x093000, 0x093FFF, "KOREALINK", "KOREALINK" }, { 0x0050C2, 0x06A000, 0x06AFFF, "Unimark", "UNIMARK" }, { 0x0050C2, 0x067000, 0x067FFF, "Riverlink Computers, Ltd.", "RIVERLINK-COMPUTERS" }, { 0x0050C2, 0x056000, 0x056FFF, "Base 2", "BASE-2" }, { 0x0050C2, 0x06D000, 0x06DFFF, "Advanced Signal Corp.", "ADVANCED-SIGNAL" }, { 0x0050C2, 0x06C000, 0x06CFFF, "WaveCom Electronics, Inc.", "WAVECOM-ELECTRONICS" }, { 0x0050C2, 0x084000, 0x084FFF, "DIALOG4 System Engineering GmbH", "DIALOG4-SYSTEM-ENGINEERING" }, { 0x0050C2, 0x083000, 0x083FFF, "ARD SA", "ARD" }, { 0x0050C2, 0x02D000, 0x02DFFF, "Innocor LTD", "INNOCOR" }, { 0x0050C2, 0x047000, 0x047FFF, "B. R. Electronics", "B-R-ELECTRONICS" }, { 0x0050C2, 0x04C000, 0x04CFFF, "New Standard Engineering NV", "NEW-STANDARD-ENGINEERING-NV" }, { 0x0050C2, 0x019000, 0x019FFF, "Emtac Technology Corp.", "EMTAC" }, { 0x0050C2, 0x023000, 0x023FFF, "Zabacom, Inc.", "ZABACOM" }, { 0x0050C2, 0x037000, 0x037FFF, "E.I.S.M.", "E-I-S-M" }, { 0x0050C2, 0x00F000, 0x00FFFF, "XLN-t", "XLN-T" }, { 0x40D855, 0x027000, 0x027FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x111000, 0x111FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x071000, 0x071FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x493000, 0x493FFF, "Artis GmbH", "ARTIS" }, { 0x0050C2, 0x066000, 0x066FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xF1D000, 0xF1DFFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0xEA8000, 0xEA8FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0xFE9000, 0xFE9FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0x26C000, 0x26CFFF, "Crystal Vision Ltd", "CRYSTAL-VISION" }, { 0x0050C2, 0x22A000, 0x22AFFF, "Crescendo Networks", "CRESCENDO-NETWORKS" }, { 0x0050C2, 0x2ED000, 0x2EDFFF, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 0x0050C2, 0x53F000, 0x53FFFF, "Ellips B.V.", "ELLIPS" }, { 0x0050C2, 0x0FA000, 0x0FAFFF, "GE Transportation Systems", "GE-TRANSPORTATION" }, { 0x0050C2, 0x77B000, 0x77BFFF, "Itibia Technologies", "ITIBIA-TECHNOLOGIES" }, { 0x0050C2, 0x527000, 0x527FFF, "IRTrans GmbH", "IRTRANS" }, { 0x0050C2, 0x12F000, 0x12FFFF, "Haag-Streit AG", "HAAG-STREIT" }, { 0x40D855, 0x02F000, 0x02FFFF, "Advatek Lighting Pty Ltd", "ADVATEK-LIGHTING-PTY" }, { 0x0050C2, 0xF80000, 0xF80FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 0x40D855, 0x171000, 0x171FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0xD8B000, 0xD8BFFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x956000, 0x956FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x52B000, 0x52BFFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x081000, 0x081FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0x217000, 0x217FFF, "Linn Products Ltd", "LINN-PRODUCTS" }, { 0x0050C2, 0x771000, 0x771FFF, "ZigBee Alliance", "ZIGBEE-ALLIANCE" }, { 0x0050C2, 0x2F7000, 0x2F7FFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x40D855, 0x048000, 0x048FFF, "GD Mission Systems", "GD-MISSION" }, { 0x40D855, 0x114000, 0x114FFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x4DE000, 0x4DEFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x85F000, 0x85FFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x66A000, 0x66AFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xB92000, 0xB92FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xE18000, 0xE18FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xBC2000, 0xBC2FFF, "Xslent Energy Technologies. LLC", "XSLENT-ENERGY-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xB9C000, 0xB9CFFF, "DAVE SRL", "DAVE-SRL" }, { 0x0050C2, 0x8E2000, 0x8E2FFF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0050C2, 0x1F3000, 0x1F3FFF, "Radionor Communications", "RADIONOR-COMMUNICATION" }, { 0x40D855, 0x18A000, 0x18AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x0BC000, 0x0BCFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x06C000, 0x06CFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xFC0000, 0xFC0FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE4B000, 0xE4BFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xB49000, 0xB49FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF58000, 0xF58FFF, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x0050C2, 0x2F0000, 0x2F0FFF, "LECO Corporation", "LECO" }, { 0x0050C2, 0xB04000, 0xB04FFF, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x0050C2, 0x681000, 0x681FFF, "Owasys Advanced Wireless Devices", "OWASYS-ADVANCED-WIRELESS-DEVICES" }, { 0x0050C2, 0x168000, 0x168FFF, "ExtremeSpeed Inc.", "EXTREMESPEED" }, { 0x0050C2, 0x0B5000, 0x0B5FFF, "EXTREME COPPER, INC.", "EXTREME-COPPER" }, { 0x0050C2, 0x6B2000, 0x6B2FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x0050C2, 0xE70000, 0xE70FFF, "DORLET SAU", "DORLET-SAU" }, { 0x0050C2, 0x1E5000, 0x1E5FFF, "DORLET SAU", "DORLET-SAU" }, { 0x0050C2, 0xCF5000, 0xCF5FFF, "Gogo BA", "GOGO-BA" }, { 0x0050C2, 0x21C000, 0x21CFFF, "Fracarro srl", "FRACARRO-SRL" }, { 0x0050C2, 0xB30000, 0xB30FFF, "Applied Micro Electronics AME bv", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0x531000, 0x531FFF, "Orion Technologies,LLC", "ORION-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x301000, 0x301FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x578000, 0x578FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x3E9000, 0x3E9FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x6C6000, 0x6C6FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x230000, 0x230FFF, "AutoTOOLS group Co. Ltd.", "AUTOTOOLS-GROUP" }, { 0x0050C2, 0x32A000, 0x32AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x782000, 0x782FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x2E0000, 0x2E0FFF, "Baxter International Inc", "BAXTER" }, { 0x0050C2, 0x974000, 0x974FFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x183000, 0x183FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xCC7000, 0xCC7FFF, "TOPROOTTechnology Corp. Ltd.", "TOPROOTTECHNOLOGY" }, { 0x0050C2, 0x9F0000, 0x9F0FFF, "Veracity UK Ltd", "VERACITY-UK" }, { 0x0050C2, 0x4CD000, 0x4CDFFF, "Bixi Systems Ltd.", "BIXI" }, { 0x0050C2, 0xAB5000, 0xAB5FFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x40D855, 0x1D2000, 0x1D2FFF, "InventLab s.c.", "INVENTLAB-S-C" }, { 0x40D855, 0x1CF000, 0x1CFFFF, "Omnik New Energy Co., Ltd", "OMNIK-NEW-ENERGY" }, { 0x40D855, 0x1CD000, 0x1CDFFF, "YXLON International A/S", "YXLON-A/S" }, { 0x40D855, 0x1CA000, 0x1CAFFF, "Rigel Engineering", "RIGEL-ENGINEERING" }, { 0x40D855, 0x1E0000, 0x1E0FFF, "Embedded Technology Corporation", "EMBEDDED" }, { 0x40D855, 0x1E2000, 0x1E2FFF, "ELNEC s.r.o.", "ELNEC-S-R-O" }, { 0x40D855, 0x1D8000, 0x1D8FFF, "Owl Computing Technologies, Inc.", "OWL-COMPUTING-TECHNOLOGIES" }, { 0x40D855, 0x1D7000, 0x1D7FFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x40D855, 0x19E000, 0x19EFFF, "Thirdwayv Inc.", "THIRDWAYV" }, { 0x40D855, 0x1B5000, 0x1B5FFF, "A+EC Klein Ingenieurbuero", "A+EC-KLEIN-INGENIEURBUERO" }, { 0x40D855, 0x1B1000, 0x1B1FFF, "Logos 01 S.r.l.", "LOGOS-01-S-R-L" }, { 0x40D855, 0x1AB000, 0x1ABFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x1C6000, 0x1C6FFF, "Device Solutions Ltd", "DEVICE-SOLUTIONS" }, { 0x40D855, 0x1C3000, 0x1C3FFF, "Cornfed Systems LLC", "CORNFED-LLC" }, { 0x40D855, 0x1B9000, 0x1B9FFF, "Beking Industrieele automatisering", "BEKING-INDUSTRIEELE-AUTOMATISERING" }, { 0x40D855, 0x151000, 0x151FFF, "Progress Rail Services, Inspection and Information Systems", "PROGRESS-RAIL-SERVICES-INSPECTION-AND-INFORMATION" }, { 0x40D855, 0x159000, 0x159FFF, "PLATINUM GmbH", "PLATINUM" }, { 0x40D855, 0x154000, 0x154FFF, "iart", "IART" }, { 0x40D855, 0x196000, 0x196FFF, "Advanced Micro Controls Inc.", "ADVANCED-MICRO-CONTROLS" }, { 0x40D855, 0x189000, 0x189FFF, "Yoozma Corporation", "YOOZMA" }, { 0x40D855, 0x170000, 0x170FFF, "ICS Eletronics", "ICS-ELETRONICS" }, { 0x40D855, 0x16C000, 0x16CFFF, "Private", "PRIVATE" }, { 0x40D855, 0x166000, 0x166FFF, "Anhui Jiante Network Technology Co., Ltd.", "ANHUI-JIANTE-NETWORK" }, { 0x40D855, 0x163000, 0x163FFF, "KMtronic LTD", "KMTRONIC" }, { 0x40D855, 0x15F000, 0x15FFFF, "CT Company", "CT-COMPANY" }, { 0x40D855, 0x15D000, 0x15DFFF, "Actronic Technologies", "ACTRONIC-TECHNOLOGIES" }, { 0x40D855, 0x144000, 0x144FFF, "Venco", "VENCO" }, { 0x40D855, 0x13E000, 0x13EFFF, "hanatech", "HANATECH" }, { 0x40D855, 0x17F000, 0x17FFFF, "Telvent", "TELVENT" }, { 0x40D855, 0x13A000, 0x13AFFF, "Supplier Ind. e Com de Eletroeletrônicos", "SUPPLIER-IND-E-COM-DE-ELETROELETRôNICOS" }, { 0x40D855, 0x137000, 0x137FFF, "GDE Polska", "GDE-POLSKA" }, { 0x40D855, 0x12F000, 0x12FFFF, "Private", "PRIVATE" }, { 0x40D855, 0x176000, 0x176FFF, "Schneider Electric Motion, Inc. USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 0x40D855, 0x0E3000, 0x0E3FFF, "Medigus Ltd", "MEDIGUS" }, { 0x40D855, 0x0F0000, 0x0F0FFF, "Redwood Systems", "REDWOOD" }, { 0x40D855, 0x0E9000, 0x0E9FFF, "HAMEG GmbH", "HAMEG" }, { 0x40D855, 0x112000, 0x112FFF, "Halliburton - Sperry Drilling Service", "HALLIBURTON---SPERRY-DRILLING-SERVICE" }, { 0x40D855, 0x10C000, 0x10CFFF, "Contrans TI sp. z o.o.", "CONTRANS-TI-SP-Z-O-O" }, { 0x40D855, 0x105000, 0x105FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x40D855, 0x0FF000, 0x0FFFFF, "YUYAMA MFG.CO.,LTD.", "YUYAMA MFG.CO.,LTD." }, { 0x40D855, 0x0F9000, 0x0F9FFF, "Invisua Lighting BV", "INVISUA-LIGHTING" }, { 0x40D855, 0x0FA000, 0x0FAFFF, "Marmitek BV", "MARMITEK" }, { 0x40D855, 0x0D6000, 0x0D6FFF, "deskontrol electronics", "DESKONTROL-ELECTRONICS" }, { 0x40D855, 0x11F000, 0x11FFFF, "KOMPAN Pawel Sokolowski", "KOMPAN-PAWEL-SOKOLOWSKI" }, { 0x40D855, 0x11C000, 0x11CFFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x40D855, 0x116000, 0x116FFF, "Uniscan LLC", "UNISCAN-LLC" }, { 0x40D855, 0x129000, 0x129FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x40D855, 0x125000, 0x125FFF, "Scandyna A/S", "SCANDYNA-A/S" }, { 0x40D855, 0x0F2000, 0x0F2FFF, "SigmaPhi Electronics", "SIGMAPHI-ELECTRONICS" }, { 0x40D855, 0x07C000, 0x07CFFF, "Agramkow Fluid Systems A/S", "AGRAMKOW-FLUID-A/S" }, { 0x40D855, 0x0BB000, 0x0BBFFF, "Whiptail", "WHIPTAIL" }, { 0x40D855, 0x0B7000, 0x0B7FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x40D855, 0x095000, 0x095FFF, "Heart Force Medical", "HEART-FORCE-MEDICAL" }, { 0x40D855, 0x097000, 0x097FFF, "Burton Technical Services LLC", "BURTON-TECHNICAL-SERVICES-LLC" }, { 0x40D855, 0x091000, 0x091FFF, "KDT", "KDT" }, { 0x40D855, 0x08C000, 0x08CFFF, "Magnescale Co.,Ltd", "MAGNESCALE" }, { 0x40D855, 0x085000, 0x085FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x40D855, 0x076000, 0x076FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x40D855, 0x072000, 0x072FFF, "CT Company", "CT-COMPANY" }, { 0x40D855, 0x06A000, 0x06AFFF, "elgris", "ELGRIS" }, { 0x40D855, 0x0C1000, 0x0C1FFF, "Xepto Computing Inc", "XEPTO-COMPUTING" }, { 0x40D855, 0x0A8000, 0x0A8FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x40D855, 0x0A4000, 0x0A4FFF, "Resch Electronic Innovation GmbH", "RESCH-INNOVATION" }, { 0x40D855, 0x09E000, 0x09EFFF, "NanoPulse, Inc.", "NANOPULSE" }, { 0x40D855, 0x0D2000, 0x0D2FFF, "ELAN SYSTEMS", "ELAN" }, { 0x40D855, 0x0CE000, 0x0CEFFF, "EST Analytical", "EST-ANALYTICAL" }, { 0x40D855, 0x03D000, 0x03DFFF, "Tekelek Europe Ltd", "TEKELEK-EUROPE" }, { 0x40D855, 0x037000, 0x037FFF, "Software Workshop", "SOFTWARE-WORKSHOP" }, { 0x40D855, 0x032000, 0x032FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x40D855, 0x04E000, 0x04EFFF, "Honeywell Aerospace/Intelligent Automation Corp.", "HONEYWELL-AEROSPACE/INTELLIGENT-AUTOMATION" }, { 0x40D855, 0x04A000, 0x04AFFF, "Gateway Technologies SA de CV", "GATEWAY-TECHNOLOGIES-DE-CV" }, { 0x40D855, 0x033000, 0x033FFF, "Ermes Elettronica s.r.l.", "ERMES-ELETTRONICA-S-R-L" }, { 0x40D855, 0x031000, 0x031FFF, "Dommel GmbH", "DOMMEL" }, { 0x40D855, 0x028000, 0x028FFF, "Integrated Control Corp.", "INTEGRATED-CONTROL" }, { 0x40D855, 0x02A000, 0x02AFFF, "Tinkerforge GmbH", "TINKERFORGE" }, { 0x40D855, 0x022000, 0x022FFF, "Digimerge Technology Inc", "DIGIMERGE" }, { 0x40D855, 0x025000, 0x025FFF, "Rosemount Analytical", "ROSEMOUNT-ANALYTICAL" }, { 0x40D855, 0x01C000, 0x01CFFF, "BERG Cloud Limited", "BERG-CLOUD" }, { 0x40D855, 0x018000, 0x018FFF, "STANEO SAS", "STANEO-SAS" }, { 0x40D855, 0x061000, 0x061FFF, "Cominfo, Inc.", "COMINFO" }, { 0x40D855, 0x05D000, 0x05DFFF, "Leica Biosystems", "LEICA-BIOSYSTEMS" }, { 0x40D855, 0x057000, 0x057FFF, "Tammermatic Group Oy", "TAMMERMATIC-GROUP-OY" }, { 0x40D855, 0x012000, 0x012FFF, "Sencon Inc.", "SENCON" }, { 0x40D855, 0x007000, 0x007FFF, "Digital Audio SA", "DIGITAL-AUDIO" }, { 0x40D855, 0x003000, 0x003FFF, "AlphaNavigation coltd", "ALPHANAVIGATION-COLTD" }, { 0x0050C2, 0xFFA000, 0xFFAFFF, "Nupoint Systems Inc.", "NUPOINT" }, { 0x40D855, 0x067000, 0x067FFF, "Tronic Control ltd.", "TRONIC-CONTROL" }, { 0x0050C2, 0xFAA000, 0xFAAFFF, "YJSYSTEM", "YJSYSTEM" }, { 0x0050C2, 0xFD2000, 0xFD2FFF, "Autonomic Controls. Inc", "AUTONOMIC-CONTROLS" }, { 0x0050C2, 0xFDC000, 0xFDCFFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x0050C2, 0xFBE000, 0xFBEFFF, "senTec Elektronik GmbH", "SENTEC-ELEKTRONIK" }, { 0x0050C2, 0xFB4000, 0xFB4FFF, "MC-monitoring SA", "MC-MONITORING" }, { 0x0050C2, 0xF9F000, 0xF9FFFF, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x0050C2, 0xF92000, 0xF92FFF, "CONET Solutions GmbH", "CONET-SOLUTIONS" }, { 0x0050C2, 0xFC8000, 0xFC8FFF, "Far South Networks", "FAR-SOUTH-NETWORKS" }, { 0x0050C2, 0xF88000, 0xF88FFF, "RTC Manufacturing Inc.", "RTC-MANUFACTURING" }, { 0x0050C2, 0xF83000, 0xF83FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x0050C2, 0xF7E000, 0xF7EFFF, "TruTeq Wireless (Pty) Ltd", "TRUTEQ-WIRELESS-PTY" }, { 0x0050C2, 0xFE6000, 0xFE6FFF, "Exibea AB", "EXIBEA-AB" }, { 0x0050C2, 0xF21000, 0xF21FFF, "SEITEC Co. Ltd", "SEITEC" }, { 0x0050C2, 0xF1B000, 0xF1BFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF17000, 0xF17FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xF16000, 0xF16FFF, "Peter Huber Kältemaschinenbau GmbH", "PETER-HUBER-KAELTEMASCHINENBAU" }, { 0x0050C2, 0xF4C000, 0xF4CFFF, "Enistic Limited", "ENISTIC" }, { 0x0050C2, 0xF48000, 0xF48FFF, "Midas Technology DBA Phoenix Audio Technologies", "MIDAS-DBA-PHOENIX-AUDIO-TECHNOLOGIES" }, { 0x0050C2, 0xEFD000, 0xEFDFFF, "Sanmina", "SANMINA" }, { 0x0050C2, 0xF5C000, 0xF5CFFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xF5B000, 0xF5BFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF56000, 0xF56FFF, "Monsoon Solutions, Inc.", "MONSOON-SOLUTIONS" }, { 0x0050C2, 0xF51000, 0xF51FFF, "NDC Infrared Engineering, Inc.", "NDC-INFRARED-ENGINEERING" }, { 0x0050C2, 0xF6A000, 0xF6AFFF, "OFI Inc. (dba 2D2C)", "OFI-DBA-2D2C" }, { 0x0050C2, 0xF66000, 0xF66FFF, "GWT LLC", "GWT-LLC" }, { 0x0050C2, 0xF65000, 0xF65FFF, "Telebyte Inc.", "TELEBYTE" }, { 0x0050C2, 0xF60000, 0xF60FFF, "Deckma GmbH", "DECKMA" }, { 0x0050C2, 0xF2F000, 0xF2FFFF, "Arcos Technologies LTD", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xF2B000, 0xF2BFFF, "Bio Guard component & technologies", "BIO-GUARD-COMPONENT-TECHNOLOGIES" }, { 0x0050C2, 0xF2A000, 0xF2AFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xF25000, 0xF25FFF, "Samway Electronic SRL", "SAMWAY-SRL" }, { 0x0050C2, 0xF20000, 0xF20FFF, "Unfors Instruments AB", "UNFORS-INSTRUMENTS-AB" }, { 0x0050C2, 0xF11000, 0xF11FFF, "Organis GmbH", "ORGANIS" }, { 0x0050C2, 0xF0D000, 0xF0DFFF, "Bluetest AB", "BLUETEST-AB" }, { 0x0050C2, 0xF07000, 0xF07FFF, "Icon Research Ltd", "ICON-RESEARCH" }, { 0x0050C2, 0xF03000, 0xF03FFF, "Wren Sound Systems", "WREN-SOUND" }, { 0x0050C2, 0xF79000, 0xF79FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xF74000, 0xF74FFF, "Thor Technologies Pty Ltd", "THOR-TECHNOLOGIES-PTY" }, { 0x0050C2, 0xF42000, 0xF42FFF, "DSPCon", "DSPCON" }, { 0x0050C2, 0xF3C000, 0xF3CFFF, "Vemco Sp. z o. o.", "VEMCO-SP-Z-O-O" }, { 0x0050C2, 0xF34000, 0xF34FFF, "Sequip S+E GmbH", "SEQUIP-S+E" }, { 0x0050C2, 0xECC000, 0xECCFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xEC8000, 0xEC8FFF, "IBERNEX INGENIERIA, S.L.", "IBERNEX-INGENIERIA-S-L" }, { 0x0050C2, 0xEC2000, 0xEC2FFF, "Ixonos Plc", "IXONOS-PLC" }, { 0x0050C2, 0xE9A000, 0xE9AFFF, "Solace Systems", "SOLACE" }, { 0x0050C2, 0xE96000, 0xE96FFF, "PROYECSON S.A.", "PROYECSON" }, { 0x0050C2, 0xE90000, 0xE90FFF, "GS Elektromedizinische Geraete G. Stemple GmbH", "GS-ELEKTROMEDIZINISCHE-GERAETE-G-STEMPLE" }, { 0x0050C2, 0xE8C000, 0xE8CFFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0xEF3000, 0xEF3FFF, "Smart Power Electronics GmbH & Co. KG", "SMART-POWER-ELECTRONICS" }, { 0x0050C2, 0xEEF000, 0xEEFFFF, "IDTRONIC GmbH", "IDTRONIC" }, { 0x0050C2, 0xEE9000, 0xEE9FFF, "QUANTA S.r.l.", "QUANTA-S-R-L" }, { 0x0050C2, 0xEE5000, 0xEE5FFF, "Cytec Zylindertechnik GmbH", "CYTEC-ZYLINDERTECHNIK" }, { 0x0050C2, 0xEAA000, 0xEAAFFF, "BAE Systems", "BAE" }, { 0x0050C2, 0xEA4000, 0xEA4FFF, "head", "HEAD" }, { 0x0050C2, 0xE86000, 0xE86FFF, "Multisuns Corporation", "MULTISUNS" }, { 0x0050C2, 0xE82000, 0xE82FFF, "Xplore Technologies Corp", "XPLORE-TECHNOLOGIES" }, { 0x0050C2, 0xE7C000, 0xE7CFFF, "sp controls, inc", "SP-CONTROLS" }, { 0x0050C2, 0xEBE000, 0xEBEFFF, "Global Tecnologia LTDA.", "GLOBAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0xEB8000, 0xEB8FFF, "dspnor", "DSPNOR" }, { 0x0050C2, 0xEB4000, 0xEB4FFF, "Wishtek Technology, Inc.", "WISHTEK" }, { 0x0050C2, 0xEAE000, 0xEAEFFF, "Alyrica Networks", "ALYRICA-NETWORKS" }, { 0x0050C2, 0xED9000, 0xED9FFF, "Plasmatronics pty ltd", "PLASMATRONICS-PTY" }, { 0x0050C2, 0xED4000, 0xED4FFF, "TAMAGAWA ELECTRONICS CO.,LTD.", "TAMAGAWA-ELECTRONICS" }, { 0x0050C2, 0xED2000, 0xED2FFF, "Klangspektrum GmbH", "KLANGSPEKTRUM" }, { 0x0050C2, 0xEDF000, 0xEDFFFF, "Monitor Business Machines", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0xE26000, 0xE26FFF, "Cinetix s.r.l.", "CINETIX-S-R-L" }, { 0x0050C2, 0xE20000, 0xE20FFF, "Divelbiss Corporation", "DIVELBISS" }, { 0x0050C2, 0xE1F000, 0xE1FFFF, "ELVEES", "ELVEES" }, { 0x0050C2, 0xE1C000, 0xE1CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE48000, 0xE48FFF, "ITW Reyflex North America", "ITW-REYFLEX-NORTH-AMERICA" }, { 0x0050C2, 0xE47000, 0xE47FFF, "ENIKA.CZ", "ENIKA-CZ" }, { 0x0050C2, 0xE44000, 0xE44FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xE3D000, 0xE3DFFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xE3E000, 0xE3EFFF, "Monnit Corp.", "MONNIT" }, { 0x0050C2, 0xE34000, 0xE34FFF, "HGL Dynamics", "HGL-DYNAMICS" }, { 0x0050C2, 0xE33000, 0xE33FFF, "Morita Technical Center Company", "MORITA-TECHNICAL-CENTER-COMPANY" }, { 0x0050C2, 0xE30000, 0xE30FFF, "Goennheimer Elektronic GmbH", "GOENNHEIMER-ELEKTRONIC" }, { 0x0050C2, 0xE66000, 0xE66FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xE65000, 0xE65FFF, "IB Elektronik GmbH", "IB-ELEKTRONIK" }, { 0x0050C2, 0xE62000, 0xE62FFF, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x0050C2, 0xE5B000, 0xE5BFFF, "CAIPO Automazione Industriale s.r.l.", "CAIPO-AUTOMAZIONE-INDUSTRIALE-S-R-L" }, { 0x0050C2, 0xE5C000, 0xE5CFFF, "MCOPIA Co., Ltd", "MCOPIA" }, { 0x0050C2, 0xE58000, 0xE58FFF, "Agri-hitech LLC", "AGRI-HITECH-LLC" }, { 0x0050C2, 0xE77000, 0xE77FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xE76000, 0xE76FFF, "Embedded Solution Bank Co., Ltd.", "EMBEDDED-SOLUTION-BANK" }, { 0x0050C2, 0xE6F000, 0xE6FFFF, "Leyden Engineering", "LEYDEN-ENGINEERING" }, { 0x0050C2, 0xE6B000, 0xE6BFFF, "Sika Technology AG", "SIKA" }, { 0x0050C2, 0xE6C000, 0xE6CFFF, "SAMSUNG Electronics Co.,Ltd.(LED Division)", "SAMSUNG-ELECTRONICS-LED-DIVISION" }, { 0x0050C2, 0xE29000, 0xE29FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xE10000, 0xE10FFF, "Radinetworks Co., Ltd", "RADINETWORKS" }, { 0x0050C2, 0xE09000, 0xE09FFF, "ATEME", "ATEME" }, { 0x0050C2, 0xE16000, 0xE16FFF, "Jetstream Ltd.", "JETSTREAM" }, { 0x0050C2, 0xE15000, 0xE15FFF, "IHI Scube Co.,Ltd", "IHI-SCUBE" }, { 0x0050C2, 0xE52000, 0xE52FFF, "Famas System S.p.A.", "FAMAS-SYSTEM-S-P-A" }, { 0x0050C2, 0xE51000, 0xE51FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x0050C2, 0xE4E000, 0xE4EFFF, "Institute For Information Industry", "INSTITUTE-FOR-INFORMATION-INDUSTRY" }, { 0x0050C2, 0xDAA000, 0xDAAFFF, "M & PAUL, INC", "M-PAUL" }, { 0x0050C2, 0xDA6000, 0xDA6FFF, "Manitowoc Ice", "MANITOWOC-ICE" }, { 0x0050C2, 0xDB6000, 0xDB6FFF, "PROSOFT-SYSTEMS LTD", "PROSOFT" }, { 0x0050C2, 0xDEF000, 0xDEFFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xDCA000, 0xDCAFFF, "Tele Data Control", "TELE-DATA-CONTROL" }, { 0x0050C2, 0xDC0000, 0xDC0FFF, "Security Services Group (SSG)", "SECURITY-SERVICES-GROUP-SSG" }, { 0x0050C2, 0xE03000, 0xE03FFF, "ICU Scandinavia Schweiz GmbH", "ICU-SCANDINAVIA-SCHWEIZ" }, { 0x0050C2, 0xDFF000, 0xDFFFFF, "TANTAL ELECTRONICA, SL", "TANTAL-ELECTRONICA-SL" }, { 0x0050C2, 0xDF9000, 0xDF9FFF, "Jenny Science AG", "JENNY-SCIENCE" }, { 0x0050C2, 0xDF5000, 0xDF5FFF, "EtherLight", "ETHERLIGHT" }, { 0x0050C2, 0xDE8000, 0xDE8FFF, "Visual Productions", "VISUAL-PRODUCTIONS" }, { 0x0050C2, 0xDD4000, 0xDD4FFF, "SYSTECH", "SYSTECH" }, { 0x0050C2, 0xD2C000, 0xD2CFFF, "Schneider Electric Motion USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 0x0050C2, 0xD25000, 0xD25FFF, "VAF Instruments BV", "VAF-INSTRUMENTS" }, { 0x0050C2, 0xD26000, 0xD26FFF, "RCH GROUP", "RCH-GROUP" }, { 0x0050C2, 0xD22000, 0xD22FFF, "eMDee Technology, Inc.", "EMDEE" }, { 0x0050C2, 0xD1C000, 0xD1CFFF, "Recon Dynamics, LLC", "RECON-DYNAMICS-LLC" }, { 0x0050C2, 0xD1B000, 0xD1BFFF, "TECHKON GmbH", "TECHKON" }, { 0x0050C2, 0xD18000, 0xD18FFF, "Glyn GmbH & Co.KG", "GLYN" }, { 0x0050C2, 0xD12000, 0xD12FFF, "Tokyo Weld Co.,Ltd.", "TOKYO-WELD" }, { 0x0050C2, 0xD0E000, 0xD0EFFF, "Weinert Engineering GmbH", "WEINERT-ENGINEERING" }, { 0x0050C2, 0xD56000, 0xD56FFF, "SELEX Communications Limited", "SELEX-COMMUNICATION" }, { 0x0050C2, 0xD53000, 0xD53FFF, "Telemerkki Oy", "TELEMERKKI-OY" }, { 0x0050C2, 0xD4C000, 0xD4CFFF, "DALOG Diagnosesysteme GmbH", "DALOG-DIAGNOSESYSTEME" }, { 0x0050C2, 0xD48000, 0xD48FFF, "Watermark Estate Management Services, LLC", "WATERMARK-ESTATE-MANAGEMENT-SERVICES-LLC" }, { 0x0050C2, 0xD9C000, 0xD9CFFF, "Gamber Johnson LLC", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0xD99000, 0xD99FFF, "T-Industry, s.r.o.", "T-INDUSTRY-S-R-O" }, { 0x0050C2, 0xD60000, 0xD60FFF, "Nihon Kessho Koogaku Co., Ltd.", "NIHON-KESSHO-KOOGAKU" }, { 0x0050C2, 0xD5D000, 0xD5DFFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0xD40000, 0xD40FFF, "demmel products", "DEMMEL-PRODUCTS" }, { 0x0050C2, 0xD3A000, 0xD3AFFF, "WellSense Technologies", "WELLSENSE-TECHNOLOGIES" }, { 0x0050C2, 0xD39000, 0xD39FFF, "Apex NV", "APEX-NV" }, { 0x0050C2, 0xD36000, 0xD36FFF, "Enatel Limited", "ENATEL" }, { 0x0050C2, 0xD2F000, 0xD2FFFF, "Key Systems, Inc.", "KEY" }, { 0x0050C2, 0xD30000, 0xD30FFF, "ACTIV Financial Systems, Inc.", "ACTIV-FINANCIAL" }, { 0x0050C2, 0xD7B000, 0xD7BFFF, "OWITA GmbH", "OWITA" }, { 0x0050C2, 0xD74000, 0xD74FFF, "Computech International", "COMPUTECH" }, { 0x0050C2, 0xD71000, 0xD71FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xD6A000, 0xD6AFFF, "A&T Corporation, Electrics Group , LAS R&D Unit,", "A-T-ELECTRICS-GROUP-LAS-R-D-UNIT" }, { 0x0050C2, 0xD67000, 0xD67FFF, "KLING & FREITAG GmbH", "KLING-FREITAG" }, { 0x0050C2, 0xD85000, 0xD85FFF, "VITEC", "VITEC" }, { 0x0050C2, 0xD7E000, 0xD7EFFF, "LYNX Technik AG", "LYNX-TECHNIK" }, { 0x0050C2, 0xD92000, 0xD92FFF, "Manz", "MANZ" }, { 0x0050C2, 0xD8F000, 0xD8FFFF, "Syes srl", "SYES-SRL" }, { 0x0050C2, 0xD88000, 0xD88FFF, "T+A elektroakustik GmbH & Co KG", "T+A-ELEKTROAKUSTIK" }, { 0x0050C2, 0xCED000, 0xCEDFFF, "AeroMechanical Services Ltd, FLYHT", "AEROMECHANICAL-SERVICES-FLYHT" }, { 0x0050C2, 0xD08000, 0xD08FFF, "Reimesch Kommunikationssysteme GmbH", "REIMESCH-KOMMUNIKATIONSSYSTEME" }, { 0x0050C2, 0xD07000, 0xD07FFF, "IAF GmbH", "IAF" }, { 0x0050C2, 0xD01000, 0xD01FFF, "Aanderaa Data Instruments", "AANDERAA-DATA-INSTRUMENTS" }, { 0x0050C2, 0xCF7000, 0xCF7FFF, "Armour Home Electronics LTD", "ARMOUR-HOME-ELECTRONICS" }, { 0x0050C2, 0xC6E000, 0xC6EFFF, "TBS Holding AG", "TBS-HOLDING" }, { 0x0050C2, 0xC71000, 0xC71FFF, "Sequoia Technology Group Ltd", "SEQUOIA-GROUP" }, { 0x0050C2, 0xC69000, 0xC69FFF, "REBO CO.,LTD.", "REBO" }, { 0x0050C2, 0xC67000, 0xC67FFF, "Practical Control Ltd", "PRACTICAL-CONTROL" }, { 0x0050C2, 0xC68000, 0xC68FFF, "Broadsoft PacketSmart, Inc.", "BROADSOFT-PACKETSMART" }, { 0x0050C2, 0xC64000, 0xC64FFF, "Pal Software Service Co.,Ltd.", "PAL-SOFTWARE-SERVICE" }, { 0x0050C2, 0xC5F000, 0xC5FFFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0xC5E000, 0xC5EFFF, "CellPlus technologies, Inc.", "CELLPLUS-TECHNOLOGIES" }, { 0x0050C2, 0xC5D000, 0xC5DFFF, "SweMet AB", "SWEMET-AB" }, { 0x0050C2, 0xC9A000, 0xC9AFFF, "PACOMP Sp. z o.o.", "PACOMP-SP-Z-O-O" }, { 0x0050C2, 0xC98000, 0xC98FFF, "Criticare Systems, Inc", "CRITICARE" }, { 0x0050C2, 0xC95000, 0xC95FFF, "IPSES S.r.l.", "IPSES-S-R-L" }, { 0x0050C2, 0xC8F000, 0xC8FFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xC8B000, 0xC8BFFF, "OCAS AS", "OCAS-AS" }, { 0x0050C2, 0xC8E000, 0xC8EFFF, "SDD ITG", "SDD-ITG" }, { 0x0050C2, 0xCD1000, 0xCD1FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xCCA000, 0xCCAFFF, "SANMINA SHENZHEN", "SANMINA-SHENZHEN" }, { 0x0050C2, 0xCC0000, 0xCC0FFF, "World Time Solutions Limited", "WORLD-TIME-SOLUTIONS" }, { 0x0050C2, 0xCBD000, 0xCBDFFF, "Hi Tech Electronics Ltd", "HI-TECH-ELECTRONICS" }, { 0x0050C2, 0xCE1000, 0xCE1FFF, "Satellink Inc.", "SATELLINK" }, { 0x0050C2, 0xCDE000, 0xCDEFFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x0050C2, 0xCDB000, 0xCDBFFF, "RUTTER INC", "RUTTER" }, { 0x0050C2, 0xCD4000, 0xCD4FFF, "SCHRAML GmbH", "SCHRAML" }, { 0x0050C2, 0xCA9000, 0xCA9FFF, "Intelligent Devices", "INTELLIGENT-DEVICES" }, { 0x0050C2, 0xCA4000, 0xCA4FFF, "Vox Technologies", "VOX-TECHNOLOGIES" }, { 0x0050C2, 0xCA2000, 0xCA2FFF, "The Logical Company", "THE-LOGICAL-COMPANY" }, { 0x0050C2, 0xC9F000, 0xC9FFFF, "xxter b.v.", "XXTER" }, { 0x0050C2, 0xC86000, 0xC86FFF, "Bruckner & Jarosch Ingenieurgesellschaft mbH", "BRUCKNER-JAROSCH-INGENIEURGESELLSCHAFT-MBH" }, { 0x0050C2, 0xC84000, 0xC84FFF, "DOMIS", "DOMIS" }, { 0x0050C2, 0xC85000, 0xC85FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xC80000, 0xC80FFF, "Reko-vek", "REKO-VEK" }, { 0x0050C2, 0xC7B000, 0xC7BFFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xC73000, 0xC73FFF, "Industry Controls, Inc.", "INDUSTRY-CONTROLS" }, { 0x0050C2, 0xC72000, 0xC72FFF, "Quail", "QUAIL" }, { 0x0050C2, 0xCB6000, 0xCB6FFF, "Krontek Pty Ltd", "KRONTEK-PTY" }, { 0x0050C2, 0xCB3000, 0xCB3FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xCAE000, 0xCAEFFF, "Campbell Scientific Canada Corp.", "CAMPBELL-SCIENTIFIC-CANADA" }, { 0x0050C2, 0xCAC000, 0xCACFFF, "PURVIS Systems Incorporated", "PURVIS-INCORPORATED" }, { 0x0050C2, 0xC41000, 0xC41FFF, "COMPRION GmbH", "COMPRION" }, { 0x0050C2, 0xC3F000, 0xC3FFFF, "ANXeBusiness Corporation", "ANXEBUSINESS" }, { 0x0050C2, 0xC3C000, 0xC3CFFF, "ELSIST S.r.l.", "ELSIST-S-R-L" }, { 0x0050C2, 0xC37000, 0xC37FFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0xC32000, 0xC32FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0xC2F000, 0xC2FFFF, "REFLEX CES", "REFLEX-CES" }, { 0x0050C2, 0xC01000, 0xC01FFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x0050C2, 0xBFE000, 0xBFEFFF, "Ingeteam Paneles S.A.U.", "INGETEAM-PANELES-U" }, { 0x0050C2, 0xBF7000, 0xBF7FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xBF4000, 0xBF4FFF, "Monarch Innovative Technologies Pvt Ltd", "MONARCH-INNOVATIVE-TECHNOLOGIES-PVT" }, { 0x0050C2, 0xC5A000, 0xC5AFFF, "Commotive A/S", "COMMOTIVE-A/S" }, { 0x0050C2, 0xC55000, 0xC55FFF, "Watterott electronic", "WATTEROTT" }, { 0x0050C2, 0xC53000, 0xC53FFF, "Eilersen Electric A/S", "EILERSEN-ELECTRIC-A/S" }, { 0x0050C2, 0xC50000, 0xC50FFF, "Beceem Communications, Inc.", "BECEEM-COMMUNICATION" }, { 0x0050C2, 0xC4B000, 0xC4BFFF, "R.V.R. elettronica s.p.a.", "R-V-R-ELETTRONICA-S-P-A" }, { 0x0050C2, 0xC49000, 0xC49FFF, "Elektronic Thoma GmbH", "ELEKTRONIC-THOMA" }, { 0x0050C2, 0xC46000, 0xC46FFF, "QNE GmbH & Co. KG", "QNE" }, { 0x0050C2, 0xBD3000, 0xBD3FFF, "Postjet Systems Ltd", "POSTJET" }, { 0x0050C2, 0xBC9000, 0xBC9FFF, "Nextmove Technologies", "NEXTMOVE-TECHNOLOGIES" }, { 0x0050C2, 0xBAA000, 0xBAAFFF, "NetworkFX Communications, LLC", "NETWORKFX-COMMUNICATION-LLC" }, { 0x0050C2, 0xBA8000, 0xBA8FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xBA9000, 0xBA9FFF, "SISS Technology Inc.", "SISS" }, { 0x0050C2, 0xB9F000, 0xB9FFFF, "AUDIOSCOPE 2K SRL", "AUDIOSCOPE-2K-SRL" }, { 0x0050C2, 0xBA0000, 0xBA0FFF, "txtr GmbH", "TXTR" }, { 0x0050C2, 0xB9E000, 0xB9EFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xC28000, 0xC28FFF, "ELREHA GmbH", "ELREHA" }, { 0x0050C2, 0xC25000, 0xC25FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xC1E000, 0xC1EFFF, "Peperoni-Light", "PEPERONI-LIGHT" }, { 0x0050C2, 0xC1A000, 0xC1AFFF, "SAM Co., Ltd.", "SAM" }, { 0x0050C2, 0xBBF000, 0xBBFFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xBB2000, 0xBB2FFF, "St Michael Strategies Inc", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0xBB3000, 0xBB3FFF, "ClimateWell AB (publ)", "CLIMATEWELL-AB-PUBL" }, { 0x0050C2, 0xC15000, 0xC15FFF, "INO - Institut National d'Optique", "INO---INSTITUT-NATIONAL-D-OPTIQUE" }, { 0x0050C2, 0xC12000, 0xC12FFF, "OKI DENKI BOHSAI CO.,LTD.", "OKI-DENKI-BOHSAI" }, { 0x0050C2, 0xC0B000, 0xC0BFFF, "ProSourcing GmbH", "PROSOURCING" }, { 0x0050C2, 0xC08000, 0xC08FFF, "juiceboss", "JUICEBOSS" }, { 0x0050C2, 0xBED000, 0xBEDFFF, "Touch Revolution Inc.", "TOUCH-REVOLUTION" }, { 0x0050C2, 0xBEA000, 0xBEAFFF, "Daeyoung inc.", "DAEYOUNG" }, { 0x0050C2, 0xBE3000, 0xBE3FFF, "Jiskoot Ltd", "JISKOOT" }, { 0x0050C2, 0xBE0000, 0xBE0FFF, "Phaedrus Limited", "PHAEDRUS" }, { 0x0050C2, 0xB5A000, 0xB5AFFF, "GREEN Center s.r.o.", "GREEN-CENTER-S-R-O" }, { 0x0050C2, 0xB59000, 0xB59FFF, "SLICAN sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x0050C2, 0xB54000, 0xB54FFF, "APG CASH DRAWER", "APG-CASH-DRAWER" }, { 0x0050C2, 0xB77000, 0xB77FFF, "KRISTECH", "KRISTECH" }, { 0x0050C2, 0xB6E000, 0xB6EFFF, "Private", "PRIVATE" }, { 0x0050C2, 0xB6D000, 0xB6DFFF, "Sound Metrics Corp", "SOUND-METRICS" }, { 0x0050C2, 0xB63000, 0xB63FFF, "RO.VE.R. Laboratories S.p.A", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x0050C2, 0xB64000, 0xB64FFF, "FEW Bauer GmbH", "FEW-BAUER" }, { 0x0050C2, 0xB15000, 0xB15FFF, "PhotoTelesis LP", "PHOTOTELESIS-LP" }, { 0x0050C2, 0xB47000, 0xB47FFF, "MCS MICRONIC Computer Systeme GmbH", "MCS-MICRONIC-SYSTEME" }, { 0x0050C2, 0xB96000, 0xB96FFF, "Onix Electronic Systems Inc", "ONIX" }, { 0x0050C2, 0xB95000, 0xB95FFF, "Rx Monitoring Services", "RX-MONITORING-SERVICES" }, { 0x0050C2, 0xB8C000, 0xB8CFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xB8B000, 0xB8BFFF, "FBB", "FBB" }, { 0x0050C2, 0xB1F000, 0xB1FFFF, "SCA Schucker GmbH & Co.", "SCA-SCHUCKER" }, { 0x0050C2, 0xB81000, 0xB81FFF, "GHL Advanced Technolgy GmbH & Co. KG", "GHL-ADVANCED-TECHNOLGY" }, { 0x0050C2, 0xB82000, 0xB82FFF, "TANABIKI Inc.", "TANABIKI" }, { 0x0050C2, 0xB78000, 0xB78FFF, "Folink", "FOLINK" }, { 0x0050C2, 0xB3D000, 0xB3DFFF, "AMS", "AMS" }, { 0x0050C2, 0xB33000, 0xB33FFF, "Numcore Ltd", "NUMCORE" }, { 0x0050C2, 0xB29000, 0xB29FFF, "Integra LifeSciences (Ireland) Ltd", "INTEGRA-LIFESCIENCES-IRELAND" }, { 0x0050C2, 0xB0B000, 0xB0BFFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xAD3000, 0xAD3FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xAD0000, 0xAD0FFF, "Geonautics Australia Pty Ltd", "GEONAUTICS-AUSTRALIA-PTY" }, { 0x0050C2, 0xAC9000, 0xAC9FFF, "Steinbeis-Transferzentrum Embedded Design und Networking", "STEINBEIS-TRANSFERZENTRUM-EMBEDDED-DESIGN-UND-NETWORKING" }, { 0x0050C2, 0xAC6000, 0xAC6FFF, "Marathon Products, Inc.", "MARATHON-PRODUCTS" }, { 0x0050C2, 0xAA2000, 0xAA2FFF, "ELPA sas", "ELPA-SAS" }, { 0x0050C2, 0xAA1000, 0xAA1FFF, "ELREM ELECTRONIC AG", "ELREM" }, { 0x0050C2, 0xA9E000, 0xA9EFFF, "Procon Engineering Limited", "PROCON-ENGINEERING" }, { 0x0050C2, 0xA98000, 0xA98FFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x0050C2, 0xA94000, 0xA94FFF, "Par-Tech, Inc.", "PAR-TECH" }, { 0x0050C2, 0xAE7000, 0xAE7FFF, "Redwood Systems", "REDWOOD" }, { 0x0050C2, 0xAE4000, 0xAE4FFF, "Advanced Electronic Designs, Inc.", "ADVANCED-DESIGNS" }, { 0x0050C2, 0xADA000, 0xADAFFF, "Essepie Srl", "ESSEPIE-SRL" }, { 0x0050C2, 0xA8E000, 0xA8EFFF, "BFI Industrie-Elektronik GmbH & Co.KG", "BFI-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0xA89000, 0xA89FFF, "CA Traffic Ltd", "CA-TRAFFIC" }, { 0x0050C2, 0xA84000, 0xA84FFF, "Lino Manfrotto +Co spa", "LINO-MANFROTTO-+-SPA" }, { 0x0050C2, 0xA81000, 0xA81FFF, "BPC circuits Ltd", "BPC-CIRCUITS" }, { 0x0050C2, 0xA7B000, 0xA7BFFF, "Orange Tree Technologies", "ORANGE-TREE-TECHNOLOGIES" }, { 0x0050C2, 0xA77000, 0xA77FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xA7A000, 0xA7AFFF, "DetNet South Africa PTY (LTD)", "DETNET-SOUTH-AFRICA-PTY" }, { 0x0050C2, 0xA70000, 0xA70FFF, "Reliable System Services Corp", "RELIABLE-SYSTEM-SERVICES" }, { 0x0050C2, 0xA71000, 0xA71FFF, "Purite Ltd", "PURITE" }, { 0x0050C2, 0xB01000, 0xB01FFF, "HSR Harald L. Reuter", "HSR-HARALD-L-REUTER" }, { 0x0050C2, 0xAEC000, 0xAECFFF, "Fritz Pauker Ingenieure GmbH", "FRITZ-PAUKER-INGENIEURE" }, { 0x0050C2, 0xABF000, 0xABFFFF, "MCC Computer Company", "MCC-COMPANY" }, { 0x0050C2, 0xABC000, 0xABCFFF, "Barrick", "BARRICK" }, { 0x0050C2, 0xAB2000, 0xAB2FFF, "ProCom Systems, Inc.", "PROCOM" }, { 0x0050C2, 0xAA8000, 0xAA8FFF, "Nexans Cabling Solutions", "NEXANS-CABLING-SOLUTIONS" }, { 0x0050C2, 0xAAB000, 0xAABFFF, "BRS Sistemas Eletrônicos", "BRS-SISTEMAS-ELETRôNICOS" }, { 0x0050C2, 0xAAC000, 0xAACFFF, "VisiCon GmbH", "VISICON" }, { 0x0050C2, 0x9C3000, 0x9C3FFF, "GE Security-Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x9BF000, 0x9BFFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x9B5000, 0x9B5FFF, "Telegamma srl", "TELEGAMMA-SRL" }, { 0x0050C2, 0x9B6000, 0x9B6FFF, "ACTECH", "ACTECH" }, { 0x0050C2, 0xA14000, 0xA14FFF, "Elbit Systems of America - Tallahassee Operations", "ELBIT-OF-AMERICA---TALLAHASSEE-OPERATIONS" }, { 0x0050C2, 0xA0A000, 0xA0AFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xA04000, 0xA04FFF, "TP Radio", "TP-RADIO" }, { 0x0050C2, 0xA00000, 0xA00FFF, "Technovare Systems", "TECHNOVARE" }, { 0x0050C2, 0xA6D000, 0xA6DFFF, "DTV Innovations", "DTV-INNOVATIONS" }, { 0x0050C2, 0xA66000, 0xA66FFF, "DVTech", "DVTECH" }, { 0x0050C2, 0xA67000, 0xA67FFF, "GSS Avionics Limited", "GSS-AVIONICS" }, { 0x0050C2, 0xA63000, 0xA63FFF, "EMS Industries", "EMS-INDUSTRIES" }, { 0x0050C2, 0xA5D000, 0xA5DFFF, "MECC CO., LTD.", "MECC" }, { 0x0050C2, 0xA59000, 0xA59FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x0050C2, 0xA3B000, 0xA3BFFF, "IPcontrols GmbH", "IPCONTROLS" }, { 0x0050C2, 0xA35000, 0xA35FFF, "Appareo Systems, LLC", "APPAREO-LLC" }, { 0x0050C2, 0xA31000, 0xA31FFF, "Coolit Systems, Inc.", "COOLIT" }, { 0x0050C2, 0xA2B000, 0xA2BFFF, "APRILIA RACING S.R.L.", "APRILIA-RACING-S-R-L" }, { 0x0050C2, 0xA26000, 0xA26FFF, "Preferred Oil, LLC", "PREFERRED-OIL-LLC" }, { 0x0050C2, 0x9FA000, 0x9FAFFF, "Teranex A Division of Silicon Optix", "TERANEX-A-DIVISION-OF-SILICON-OPTIX" }, { 0x0050C2, 0x9F6000, 0x9F6FFF, "Ion Sense Inc.", "ION-SENSE" }, { 0x0050C2, 0x9E6000, 0x9E6FFF, "Kumho Electric, Inc.", "KUMHO-ELECTRIC" }, { 0x0050C2, 0x9E2000, 0x9E2FFF, "E-ViEWS SAFETY SYSTEMS, INC", "E-VIEWS-SAFETY" }, { 0x0050C2, 0x9DC000, 0x9DCFFF, "FTM Marketing Limited", "FTM-MARKETING" }, { 0x0050C2, 0x9D8000, 0x9D8FFF, "SAMSUNG HEAVY INDUSTRIES CO.,LTD.", "SAMSUNG-HEAVY-INDUSTRIES" }, { 0x0050C2, 0xA53000, 0xA53FFF, "Quality & Design", "QUALITY-DESIGN" }, { 0x0050C2, 0xA4F000, 0xA4FFFF, "Deuta GmbH", "DEUTA" }, { 0x0050C2, 0xA49000, 0xA49FFF, "Wayne Dalton Corp.", "WAYNE-DALTON" }, { 0x0050C2, 0xA45000, 0xA45FFF, "Sofradir-EC", "SOFRADIR-EC" }, { 0x0050C2, 0xA3F000, 0xA3FFFF, "LHA Systems CC", "LHA-CC" }, { 0x0050C2, 0xA22000, 0xA22FFF, "Nippon Manufacturing Service Corporation (abbreviated as 'nms')", "NIPPON-MANUFACTURING-SERVICE-ABBREVIATED-AS-NMS" }, { 0x0050C2, 0xA1E000, 0xA1EFFF, "MAMAC Systems, Inc.", "MAMAC" }, { 0x0050C2, 0xA18000, 0xA18FFF, "Eoslink", "EOSLINK" }, { 0x0050C2, 0x9D2000, 0x9D2FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x9CE000, 0x9CEFFF, "Ronan Engineering", "RONAN-ENGINEERING" }, { 0x0050C2, 0x9C8000, 0x9C8FFF, "ethermetrics", "ETHERMETRICS" }, { 0x0050C2, 0x933000, 0x933FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x934000, 0x934FFF, "Xilar Corp.", "XILAR" }, { 0x0050C2, 0x92F000, 0x92FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x925000, 0x925FFF, "PHB Eletronica Ltda.", "PHB-ELETRONICA-LTDA" }, { 0x0050C2, 0x96E000, 0x96EFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0x96A000, 0x96AFFF, "Bittium Wireless Ltd", "BITTIUM-WIRELESS" }, { 0x0050C2, 0x964000, 0x964FFF, "IQ Automation GmbH", "IQ-AUTOMATION" }, { 0x0050C2, 0x941000, 0x941FFF, "Rolbit", "ROLBIT" }, { 0x0050C2, 0x93E000, 0x93EFFF, "RCS Communication Test Systems Ltd.", "RCS-COMMUNICATION-TEST" }, { 0x0050C2, 0x939000, 0x939FFF, "Mosaic Dynamic Solutions", "MOSAIC-DYNAMIC-SOLUTIONS" }, { 0x0050C2, 0x95C000, 0x95CFFF, "Resurgent Health & Medical", "RESURGENT-HEALTH-MEDICAL" }, { 0x0050C2, 0x954000, 0x954FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x98E000, 0x98EFFF, "Link Technologies, Inc", "LINK-TECHNOLOGIES" }, { 0x0050C2, 0x98D000, 0x98DFFF, "Mecos AG", "MECOS" }, { 0x0050C2, 0x560000, 0x560FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x987000, 0x987FFF, "Joinsoon Electronics MFG. Co., Ltd", "JOINSOON-ELECTRONICS-MFG" }, { 0x0050C2, 0x9AB000, 0x9ABFFF, "Electrodata Inc.", "ELECTRODATA" }, { 0x0050C2, 0x9AC000, 0x9ACFFF, "Questek Australia Pty Ltd", "QUESTEK-AUSTRALIA-PTY" }, { 0x0050C2, 0x9A1000, 0x9A1FFF, "ComAp s.r.o", "COMAP-S-R-O" }, { 0x0050C2, 0x9A2000, 0x9A2FFF, "SAMsystems GmbH", "SAMSYSTEMS" }, { 0x0050C2, 0x998000, 0x998FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x997000, 0x997FFF, "Depro Électronique", "DEPRO-ÉLECTRONIQUE" }, { 0x0050C2, 0x94B000, 0x94BFFF, "Piller engineering Ltd.", "PILLER-ENGINEERING" }, { 0x0050C2, 0x946000, 0x946FFF, "MEGWARE Computer GmbH", "MEGWARE" }, { 0x0050C2, 0x978000, 0x978FFF, "LOGITAL DIGITAL MEDIA srl", "LOGITAL-DIGITAL-MEDIA-SRL" }, { 0x0050C2, 0x929000, 0x929FFF, "Flight Deck Resources", "FLIGHT-DECK-RESOURCES" }, { 0x0050C2, 0x91F000, 0x91FFFF, "2NCOMM DESIGN SRL", "2NCOMM-DESIGN-SRL" }, { 0x0050C2, 0x920000, 0x920FFF, "Rogue Engineering Inc.", "ROGUE-ENGINEERING" }, { 0x0050C2, 0x91B000, 0x91BFFF, "Embedded Data Systems, LLC", "EMBEDDED-DATA-LLC" }, { 0x0050C2, 0x915000, 0x915FFF, "Verint Systems Ltd.", "VERINT" }, { 0x0050C2, 0x916000, 0x916FFF, "CHK GridSense P/L", "CHK-GRIDSENSE-P/L" }, { 0x0050C2, 0x8C3000, 0x8C3FFF, "Byte Paradigm", "BYTE-PARADIGM" }, { 0x0050C2, 0x8BE000, 0x8BEFFF, "The Pennsylvania State University", "THE-PENNSYLVANIA-STATE-UNIVERSITY" }, { 0x0050C2, 0x8B9000, 0x8B9FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x8B4000, 0x8B4FFF, "Sandar Telecast AS", "SANDAR-TELECAST-AS" }, { 0x0050C2, 0x8DC000, 0x8DCFFF, "Frame Systems Limited", "FRAME" }, { 0x0050C2, 0x8D7000, 0x8D7FFF, "Polygon Informatics Ltd.", "POLYGON-INFORMATICS" }, { 0x0050C2, 0x8D2000, 0x8D2FFF, "TTi Ltd", "TTI" }, { 0x0050C2, 0x8CD000, 0x8CDFFF, "Cambridge Sound Management, LLC", "CAMBRIDGE-SOUND-MANAGEMENT-LLC" }, { 0x0050C2, 0x8EB000, 0x8EBFFF, "C-COM Satellite Systems Inc.", "C-COM-SATELLITE" }, { 0x0050C2, 0x8E6000, 0x8E6FFF, "Sandel Avionics, Inc.", "SANDEL-AVIONICS" }, { 0x0050C2, 0x8E1000, 0x8E1FFF, "Deutscher Weterdienst", "DEUTSCHER-WETERDIENST" }, { 0x0050C2, 0x8A0000, 0x8A0FFF, "Specialized Communications Corp.", "SPECIALIZED-COMMUNICATION" }, { 0x0050C2, 0x895000, 0x895FFF, "Marine Communications Limited", "MARINE-COMMUNICATION" }, { 0x0050C2, 0x88D000, 0x88DFFF, "L3 Communications Nova Engineering", "L3-COMMUNICATION-NOVA-ENGINEERING" }, { 0x0050C2, 0x905000, 0x905FFF, "Link Communications, Inc", "LINK-COMMUNICATION" }, { 0x0050C2, 0x8FF000, 0x8FFFFF, "Luceat", "LUCEAT" }, { 0x0050C2, 0x8FA000, 0x8FAFFF, "TELIUM s.c.", "TELIUM-S-C" }, { 0x0050C2, 0x911000, 0x911FFF, "Vapor Rail", "VAPOR-RAIL" }, { 0x0050C2, 0x90C000, 0x90CFFF, "LSS GmbH", "LSS" }, { 0x0050C2, 0x90B000, 0x90BFFF, "E.ON ES Sverige AB", "E-ON-ES-SVERIGE-AB" }, { 0x0050C2, 0x907000, 0x907FFF, "Cristal Controles Ltee", "CRISTAL-CONTROLES-LTEE" }, { 0x0050C2, 0x8AA000, 0x8AAFFF, "ATS Elektronik GmbH", "ATS-ELEKTRONIK" }, { 0x0050C2, 0x8F5000, 0x8F5FFF, "tec5 AG", "TEC5" }, { 0x0050C2, 0x8F0000, 0x8F0FFF, "Xentras Communications", "XENTRAS-COMMUNICATION" }, { 0x0050C2, 0x85E000, 0x85EFFF, "Radiometer Medical ApS", "RADIOMETER-MEDICAL-APS" }, { 0x0050C2, 0x859000, 0x859FFF, "Nuvation", "NUVATION" }, { 0x0050C2, 0x854000, 0x854FFF, "Ratioplast-Optoelectronics GmbH", "RATIOPLAST-OPTOELECTRONICS" }, { 0x0050C2, 0x845000, 0x845FFF, "VisualSonics Inc.", "VISUALSONICS" }, { 0x0050C2, 0x841000, 0x841FFF, "Connection Electronics Ltd.", "CONNECTION-ELECTRONICS" }, { 0x0050C2, 0x840000, 0x840FFF, "Residential Control Systems", "RESIDENTIAL-CONTROL" }, { 0x0050C2, 0x837000, 0x837FFF, "ID-KARTA s.r.o.", "ID-KARTA-S-R-O" }, { 0x0050C2, 0x86F000, 0x86FFFF, "b-plus GmbH", "B-PLUS" }, { 0x0050C2, 0x865000, 0x865FFF, "Persy Control Services B.v.", "PERSY-CONTROL-SERVICES" }, { 0x0050C2, 0x720000, 0x720FFF, "Colorado Engineering Inc.", "COLORADO-ENGINEERING" }, { 0x0050C2, 0x824000, 0x824FFF, "SMT d.o.o.", "SMT-D-O-O" }, { 0x0050C2, 0x820000, 0x820FFF, "TESCAN, s.r.o.", "TESCAN-S-R-O" }, { 0x0050C2, 0x81A000, 0x81AFFF, "InfoGLOBAL", "INFOGLOBAL" }, { 0x0050C2, 0x832000, 0x832FFF, "S1nn GmbH & Co. KG", "S1NN" }, { 0x0050C2, 0x82E000, 0x82EFFF, "LogiCom GmbH", "LOGICOM" }, { 0x0050C2, 0x82A000, 0x82AFFF, "VDC Display Systems", "VDC-DISPLAY" }, { 0x0050C2, 0x806000, 0x806FFF, "CET", "CET" }, { 0x0050C2, 0x802000, 0x802FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x7FC000, 0x7FCFFF, "TIS Dialog LLC", "TIS-DIALOG-LLC" }, { 0x0050C2, 0x7F8000, 0x7F8FFF, "Wise Industria de Telecomunicações Ldta.", "WISE-INDUSTRIA-DE-TELECOMUNICAçõES-LDTA" }, { 0x0050C2, 0x816000, 0x816FFF, "Intelight Inc.", "INTELIGHT" }, { 0x0050C2, 0x810000, 0x810FFF, "Alphion Corporation", "ALPHION" }, { 0x0050C2, 0x80C000, 0x80CFFF, "Luxpert Technologies Co., Ltd.", "LUXPERT-TECHNOLOGIES" }, { 0x0050C2, 0x84F000, 0x84FFFF, "Gamber-Johnson LLC", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0x84A000, 0x84AFFF, "Keystone Electronic Solutions", "KEYSTONE-SOLUTIONS" }, { 0x0050C2, 0x883000, 0x883FFF, "Neocontrol Soluções em Automação", "NEOCONTROL-SOLUçõES-EM-AUTOMAçãO" }, { 0x0050C2, 0x879000, 0x879FFF, "MILESYS", "MILESYS" }, { 0x0050C2, 0x787000, 0x787FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x77F000, 0x77FFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x775000, 0x775FFF, "Laserdyne Technologies", "LASERDYNE-TECHNOLOGIES" }, { 0x0050C2, 0x76F000, 0x76FFFF, "Control and Robotics Solutions", "CONTROL-AND-ROBOTICS-SOLUTIONS" }, { 0x0050C2, 0x76A000, 0x76AFFF, "Digidrive Audio Limited", "DIGIDRIVE-AUDIO" }, { 0x0050C2, 0x766000, 0x766FFF, "Gutermann Technology GmbH", "GUTERMANN" }, { 0x0050C2, 0x7A5000, 0x7A5FFF, "Quantum Medical Imaging", "QUANTUM-MEDICAL-IMAGING" }, { 0x0050C2, 0x7A0000, 0x7A0FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x79B000, 0x79BFFF, "Schniewindt GmbH & Co. KG", "SCHNIEWINDT" }, { 0x0050C2, 0x7E1000, 0x7E1FFF, "Zeltiq Aesthetics, Inc.", "ZELTIQ-AESTHETICS" }, { 0x0050C2, 0x7D7000, 0x7D7FFF, "Newtec A/S", "NEWTEC-A/S" }, { 0x0050C2, 0x784000, 0x784FFF, "Lewis Controls Inc.", "LEWIS-CONTROLS" }, { 0x0050C2, 0x7D0000, 0x7D0FFF, "Radar Tronic ltd.", "RADAR-TRONIC" }, { 0x0050C2, 0x791000, 0x791FFF, "M Squared Lasers Limited", "M-SQUARED-LASERS" }, { 0x0050C2, 0x78C000, 0x78CFFF, "Giga-tronics, Inc.", "GIGA-TRONICS" }, { 0x0050C2, 0x7C8000, 0x7C8FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x7C3000, 0x7C3FFF, "AST INCORPORATED", "AST-INCORPORATED" }, { 0x0050C2, 0x7BE000, 0x7BEFFF, "Powerlinx, Inc.", "POWERLINX" }, { 0x0050C2, 0x7B9000, 0x7B9FFF, "Technovare Systems, Inc.", "TECHNOVARE" }, { 0x0050C2, 0x7B4000, 0x7B4FFF, "T 1 Engineering", "T-1-ENGINEERING" }, { 0x0050C2, 0x7AF000, 0x7AFFFF, "C2 Microsystems", "C2-MICROSYSTEMS" }, { 0x0050C2, 0x7EB000, 0x7EBFFF, "Sesol Industrial Computer", "SESOL-INDUSTRIAL" }, { 0x0050C2, 0x734000, 0x734FFF, "CardioMEMS Inc.", "CARDIOMEMS" }, { 0x0050C2, 0x730000, 0x730FFF, "haber & koenig electronics gmbh", "HABER-KOENIG-ELECTRONICS" }, { 0x0050C2, 0x72A000, 0x72AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x752000, 0x752FFF, "LOBER, S.A.", "LOBER" }, { 0x0050C2, 0x74E000, 0x74EFFF, "TRONICO", "TRONICO" }, { 0x0050C2, 0x748000, 0x748FFF, "Letechnic Ltd", "LETECHNIC" }, { 0x0050C2, 0x704000, 0x704FFF, "The Dini Group, La Jolla inc.", "THE-DINI-GROUP-LA-JOLLA" }, { 0x0050C2, 0x6FC000, 0x6FCFFF, "Acte Sp. z o.o.", "ACTE-SP-Z-O-O" }, { 0x0050C2, 0x762000, 0x762FFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x0050C2, 0x75C000, 0x75CFFF, "STÖRK-TRONIC Störk GmbH&Co. KG", "STOERK-TRONIC-STOERK" }, { 0x0050C2, 0x758000, 0x758FFF, "AixSolve GmbH", "AIXSOLVE" }, { 0x0050C2, 0x6F2000, 0x6F2FFF, "Laser Electronics Ltd", "LASER-ELECTRONICS" }, { 0x0050C2, 0x6E8000, 0x6E8FFF, "Anymax", "ANYMAX" }, { 0x0050C2, 0x70F000, 0x70FFFF, "Zumbach Electronic AG", "ZUMBACH" }, { 0x0050C2, 0x709000, 0x709FFF, "RO.VE.R. Laboratories S.p.A", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x0050C2, 0x744000, 0x744FFF, "Avonaco Systems, Inc.", "AVONACO" }, { 0x0050C2, 0x73E000, 0x73EFFF, "Quantec Networks GmbH", "QUANTEC-NETWORKS" }, { 0x0050C2, 0x73A000, 0x73AFFF, "Naturela Ltd.", "NATURELA" }, { 0x0050C2, 0x726000, 0x726FFF, "eta systemi CKB", "ETA-SYSTEMI-CKB" }, { 0x0050C2, 0x719000, 0x719FFF, "ennovatis GmbH", "ENNOVATIS" }, { 0x0050C2, 0x6DE000, 0x6DEFFF, "Laser Tools & Technics Corp.", "LASER-TOOLS-TECHNICS" }, { 0x0050C2, 0x685000, 0x685FFF, "Datamars SA", "DATAMARS" }, { 0x0050C2, 0x67F000, 0x67FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x67B000, 0x67BFFF, "Sparton Electronics", "SPARTON-ELECTRONICS" }, { 0x0050C2, 0x675000, 0x675FFF, "Kenton Research Ltd", "KENTON-RESEARCH" }, { 0x0050C2, 0x6D4000, 0x6D4FFF, "Etani Electronics Co.,Ltd.", "ETANI-ELECTRONICS" }, { 0x0050C2, 0x6B6000, 0x6B6FFF, "CommoDaS GmbH", "COMMODAS" }, { 0x0050C2, 0x6AC000, 0x6ACFFF, "Thales UK", "THALES-UK" }, { 0x0050C2, 0x6A6000, 0x6A6FFF, "Victory Concept Industries Ltd.", "VICTORY-CONCEPT-INDUSTRIES" }, { 0x0050C2, 0x6A1000, 0x6A1FFF, "PRICOL LIMITED", "PRICOL" }, { 0x0050C2, 0x661000, 0x661FFF, "P.C.E.", "P-C-E" }, { 0x0050C2, 0x65D000, 0x65DFFF, "Redfone Communications LLC", "REDFONE-COMMUNICATION-LLC" }, { 0x0050C2, 0x65E000, 0x65EFFF, "Cantion A/S", "CANTION-A/S" }, { 0x0050C2, 0x653000, 0x653FFF, "Doble Engineering", "DOBLE-ENGINEERING" }, { 0x0050C2, 0x654000, 0x654FFF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0050C2, 0x657000, 0x657FFF, "MONYTEL S.A.", "MONYTEL" }, { 0x0050C2, 0x69D000, 0x69DFFF, "Dvation.co.,Ltd", "DVATION" }, { 0x0050C2, 0x699000, 0x699FFF, "Bulletendpoints Enterprises Inc", "BULLETENDPOINTS-ENTERPRISES" }, { 0x0050C2, 0x693000, 0x693FFF, "Tech Comm, Inc.", "TECH-COMM" }, { 0x0050C2, 0x68F000, 0x68FFFF, "BERTRONIC SRL", "BERTRONIC-SRL" }, { 0x0050C2, 0x689000, 0x689FFF, "RF Code, Inc.", "RF-CODE" }, { 0x0050C2, 0x671000, 0x671FFF, "Skyline Products, Inc", "SKYLINE-PRODUCTS" }, { 0x0050C2, 0x66B000, 0x66BFFF, "flsystem", "FLSYSTEM" }, { 0x0050C2, 0x64D000, 0x64DFFF, "Tera Information System Labs", "TERA-INFORMATION-SYSTEM-LABS" }, { 0x0050C2, 0x643000, 0x643FFF, "Enatel Limited", "ENATEL" }, { 0x0050C2, 0x649000, 0x649FFF, "Pan-STARRS", "PAN-STARRS" }, { 0x0050C2, 0x64A000, 0x64AFFF, "CPqD", "CPQD" }, { 0x0050C2, 0x63E000, 0x63EFFF, "T2 Communication Ltd", "T2-COMMUNICATION" }, { 0x0050C2, 0x6CA000, 0x6CAFFF, "Dynamic Hearing Pty Ltd", "DYNAMIC-HEARING-PTY" }, { 0x0050C2, 0x6C0000, 0x6C0FFF, "GLOSTER SANTE EUROPE", "GLOSTER-SANTE-EUROPE" }, { 0x0050C2, 0x63A000, 0x63AFFF, "3DSP Corporation", "3DSP" }, { 0x0050C2, 0x636000, 0x636FFF, "dSPACE GmbH", "DSPACE" }, { 0x0050C2, 0x630000, 0x630FFF, "Aurora Flight Sciences", "AURORA-FLIGHT-SCIENCES" }, { 0x0050C2, 0x62C000, 0x62CFFF, "AirMatrix, Inc.", "AIRMATRIX" }, { 0x0050C2, 0x5F1000, 0x5F1FFF, "Technomarine JSC", "TECHNOMARINE-JSC" }, { 0x0050C2, 0x5EA000, 0x5EAFFF, "Micro Elektronische Producten", "MICRO-ELEKTRONISCHE-PRODUCTEN" }, { 0x0050C2, 0x5E7000, 0x5E7FFF, "EADS TEST & SERVICES", "EADS-TEST-SERVICES" }, { 0x0050C2, 0x618000, 0x618FFF, "Intergrated Security Mfg. Ltd", "INTERGRATED-SECURITY-MFG" }, { 0x0050C2, 0x612000, 0x612FFF, "IHP-GmbH", "IHP" }, { 0x0050C2, 0x60F000, 0x60FFFF, "Kommunikations- & Sicherheitssysteme Gesellschaft m.b.H", "KOMMUNIKATIONS--SICHERHEITSSYSTEME-GESELLSCHAFT-M-B-H" }, { 0x0050C2, 0x608000, 0x608FFF, "Silex Industrial Automation Ltd.", "SILEX-INDUSTRIAL-AUTOMATION" }, { 0x0050C2, 0x626000, 0x626FFF, "Winsys Informatica ltda", "WINSYS-INFORMATICA-LTDA" }, { 0x0050C2, 0x622000, 0x622FFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x623000, 0x623FFF, "SAFELINE SL", "SAFELINE-SL" }, { 0x0050C2, 0x61C000, 0x61CFFF, "TestPro Systems, Inc.", "TESTPRO" }, { 0x0050C2, 0x619000, 0x619FFF, "Linkbit, Inc.", "LINKBIT" }, { 0x0050C2, 0x5C3000, 0x5C3FFF, "KS System GmbH", "KS-SYSTEM" }, { 0x0050C2, 0x5C4000, 0x5C4FFF, "ProMik GmbH", "PROMIK" }, { 0x0050C2, 0x5C0000, 0x5C0FFF, "Pyott-Boone Electronics", "PYOTT-BOONE-ELECTRONICS" }, { 0x0050C2, 0x5B9000, 0x5B9FFF, "Taiwan Video & Monitor", "TAIWAN-VIDEO-MONITOR" }, { 0x0050C2, 0x5BA000, 0x5BAFFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x5B6000, 0x5B6FFF, "Kontron (Beijing) Technology Co.,Ltd.", "KONTRON-BEIJING" }, { 0x0050C2, 0x5E0000, 0x5E0FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x5DB000, 0x5DBFFF, "CEGELEC SUD EST", "CEGELEC-SUD-EST" }, { 0x0050C2, 0x5D7000, 0x5D7FFF, "Synrad, Inc.", "SYNRAD" }, { 0x0050C2, 0x5D4000, 0x5D4FFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x5B0000, 0x5B0FFF, "INCOTEC GmbH", "INCOTEC" }, { 0x0050C2, 0x5AC000, 0x5ACFFF, "Kinemetrics, Inc.", "KINEMETRICS" }, { 0x0050C2, 0x5A5000, 0x5A5FFF, "Equipos de Telecomunicación Optoelectronicos, S.A.", "EQUIPOS-DE-TELECOMUNICACIóN-OPTOELECTRONICOS" }, { 0x0050C2, 0x605000, 0x605FFF, "Swistec GmbH", "SWISTEC" }, { 0x0050C2, 0x5FB000, 0x5FBFFF, "All-Systems Electronics Pty Ltd", "ALL--ELECTRONICS-PTY" }, { 0x0050C2, 0x5CE000, 0x5CEFFF, "Roke Manor Research Ltd", "ROKE-MANOR-RESEARCH" }, { 0x0050C2, 0x5CD000, 0x5CDFFF, "RADA Electronics Industries Ltd.", "RADA-ELECTRONICS-INDUSTRIES" }, { 0x0050C2, 0x5CA000, 0x5CAFFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x5F4000, 0x5F4FFF, "TeamProjects BV", "TEAMPROJECTS" }, { 0x0050C2, 0x556000, 0x556FFF, "Freiburger BlickZentrum", "FREIBURGER-BLICKZENTRUM" }, { 0x0050C2, 0x555000, 0x555FFF, "Control Alternative Solutions, Inc.", "CONTROL-ALTERNATIVE-SOLUTIONS" }, { 0x0050C2, 0x52F000, 0x52FFFF, "Gesellschaft für Rationalisierung und Rechentechnik mbH", "GESELLSCHAFT-FUER-RATIONALISIERUNG-UND-RECHENTECHNIK-MBH" }, { 0x0050C2, 0x52E000, 0x52EFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x52D000, 0x52DFFF, "Smartcom-Bulgaria AD", "SMARTCOM-BULGARIA-AD" }, { 0x0050C2, 0x525000, 0x525FFF, "VASTech", "VASTECH" }, { 0x0050C2, 0x523000, 0x523FFF, "AMRDEC Prototype Integration Facility", "AMRDEC-PROTOTYPE-INTEGRATION-FACILITY" }, { 0x0050C2, 0x58E000, 0x58EFFF, "Penny & Giles Aerospace Ltd", "PENNY-GILES-AEROSPACE" }, { 0x0050C2, 0x58B000, 0x58BFFF, "Innovative Dynamics GmbH", "INNOVATIVE-DYNAMICS" }, { 0x0050C2, 0x584000, 0x584FFF, "Toyota Motorsport GmbH", "TOYOTA-MOTORSPORT" }, { 0x0050C2, 0x581000, 0x581FFF, "Devitech ApS", "DEVITECH-APS" }, { 0x0050C2, 0x51B000, 0x51BFFF, "Beta Lasermike Ltd", "BETA-LASERMIKE" }, { 0x0050C2, 0x519000, 0x519FFF, "DBMCORP, Inc.", "DBMCORP" }, { 0x0050C2, 0x59E000, 0x59EFFF, "Legerity", "LEGERITY" }, { 0x0050C2, 0x59F000, 0x59FFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x595000, 0x595FFF, "Callpod, Inc.", "CALLPOD" }, { 0x0050C2, 0x598000, 0x598FFF, "Bundesamt für Strahlenschutz", "BUNDESAMT-FUER-STRAHLENSCHUTZ" }, { 0x0050C2, 0x567000, 0x567FFF, "Tess GmbH", "TESS" }, { 0x0050C2, 0x563000, 0x563FFF, "ORTRAT, S.L.", "ORTRAT-S-L" }, { 0x0050C2, 0x564000, 0x564FFF, "Last Mile Gear", "LAST-MILE-GEAR" }, { 0x0050C2, 0x55F000, 0x55FFFF, "Moog Broad Reach", "MOOG-BROAD-REACH" }, { 0x0050C2, 0x537000, 0x537FFF, "DST CONTROL AB", "DST-CONTROL-AB" }, { 0x0050C2, 0x538000, 0x538FFF, "EtherTek Circuits", "ETHERTEK-CIRCUITS" }, { 0x0050C2, 0x539000, 0x539FFF, "Detection Technology Inc.", "DETECTION" }, { 0x0050C2, 0x575000, 0x575FFF, "SOLYSTIC", "SOLYSTIC" }, { 0x0050C2, 0x57A000, 0x57AFFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x571000, 0x571FFF, "Oberon Service srl", "OBERON-SERVICE-SRL" }, { 0x0050C2, 0x56D000, 0x56DFFF, "Computrol Fuel Systems Inc.", "COMPUTROL-FUEL" }, { 0x0050C2, 0x56E000, 0x56EFFF, "LAB-EL ELEKTRONIKA LABORATORYJNA S.J.", "LAB-EL-ELEKTRONIKA-LABORATORYJNA-S-J" }, { 0x0050C2, 0x54C000, 0x54CFFF, "Sintecnos srl", "SINTECNOS-SRL" }, { 0x0050C2, 0x54B000, 0x54BFFF, "Innopsys", "INNOPSYS" }, { 0x0050C2, 0x541000, 0x541FFF, "WAVES SYSTEM", "WAVES-SYSTEM" }, { 0x0050C2, 0x542000, 0x542FFF, "AVerMedia Technologies, Inc.", "AVERMEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x509000, 0x509FFF, "Hillcrest Laboratories, Inc.", "HILLCREST-LABORATORIES" }, { 0x0050C2, 0x50C000, 0x50CFFF, "AIRWISE TECHNOLOGY CO., LTD.", "AIRWISE" }, { 0x0050C2, 0x502000, 0x502FFF, "Criterion Systems Limited", "CRITERION" }, { 0x0050C2, 0x4A9000, 0x4A9FFF, "Faber Electronics BV", "FABER-ELECTRONICS" }, { 0x0050C2, 0x4A6000, 0x4A6FFF, "BUYANG ELECTRONICS INDUSTRIAL CO., LTD.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x490000, 0x490FFF, "Cloanto Corporation", "CLOANTO" }, { 0x0050C2, 0x48F000, 0x48FFFF, "DENGYOSHA co.,LTD.", "DENGYOSHA" }, { 0x0050C2, 0x486000, 0x486FFF, "Safegate International AB", "SAFEGATE-AB" }, { 0x0050C2, 0x4EE000, 0x4EEFFF, "Beijing Corelogic Communication Co., Ltd.", "BEIJING-CORELOGIC-COMMUNICATION" }, { 0x0050C2, 0x4EB000, 0x4EBFFF, "Mandozzi Elettronica SA", "MANDOZZI-ELETTRONICA" }, { 0x0050C2, 0x4BC000, 0x4BCFFF, "Saia Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x4B9000, 0x4B9FFF, "Rose Technologies", "ROSE-TECHNOLOGIES" }, { 0x0050C2, 0x4B2000, 0x4B2FFF, "TESLA, a.s.", "TESLA-A-S" }, { 0x0050C2, 0x4AE000, 0x4AEFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x4AD000, 0x4ADFFF, "OpenPeak, Inc.", "OPENPEAK" }, { 0x0050C2, 0x4E4000, 0x4E4FFF, "Embigence GmbH", "EMBIGENCE" }, { 0x0050C2, 0x4E1000, 0x4E1FFF, "SS Telecoms CC", "SS-TELECOMS-CC" }, { 0x0050C2, 0x4DA000, 0x4DAFFF, "MEDIORNET GmbH", "MEDIORNET" }, { 0x0050C2, 0x4FF000, 0x4FFFFF, "Dakty GmbH", "DAKTY" }, { 0x0050C2, 0x4F8000, 0x4F8FFF, "Prodco International Inc.", "PRODCO" }, { 0x0050C2, 0x4F5000, 0x4F5FFF, "Monroe Electronics, Inc.", "MONROE-ELECTRONICS" }, { 0x0050C2, 0x49F000, 0x49FFFF, "GCS, Inc", "GCS" }, { 0x0050C2, 0x499000, 0x499FFF, "Trellia Networks", "TRELLIA-NETWORKS" }, { 0x0050C2, 0x4D0000, 0x4D0FFF, "RCS Energy Management Ltd", "RCS-ENERGY-MANAGEMENT" }, { 0x0050C2, 0x4C6000, 0x4C6FFF, "Rubin Ltd.", "RUBIN" }, { 0x0050C2, 0x4C3000, 0x4C3FFF, "Quantum3D, Inc.", "QUANTUM3D" }, { 0x0050C2, 0x430000, 0x430FFF, "Arcom Digital", "ARCOM-DIGITAL" }, { 0x0050C2, 0x426000, 0x426FFF, "STOM System", "STOM-SYSTEM" }, { 0x0050C2, 0x429000, 0x429FFF, "Matthews Australasia", "MATTHEWS-AUSTRALASIA" }, { 0x0050C2, 0x42A000, 0x42AFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x420000, 0x420FFF, "Boundless Technologies", "BOUNDLESS-TECHNOLOGIES" }, { 0x0050C2, 0x43A000, 0x43AFFF, "ProDesign GmbH", "PRODESIGN" }, { 0x0050C2, 0x43D000, 0x43DFFF, "Ann Arbor Sensor Systems LLC", "ANN-ARBOR-SENSOR-LLC" }, { 0x0050C2, 0x434000, 0x434FFF, "ImperativeNetworks", "IMPERATIVENETWORKS" }, { 0x0050C2, 0x433000, 0x433FFF, "Idetech Europe S.A.", "IDETECH-EUROPE" }, { 0x0050C2, 0x408000, 0x408FFF, "TERN, Inc.", "TERN" }, { 0x0050C2, 0x40B000, 0x40BFFF, "Center VOSPI JSC", "CENTER-VOSPI-JSC" }, { 0x0050C2, 0x40C000, 0x40CFFF, "Applied Materials UK Ltd", "APPLIED-MATERIALS-UK" }, { 0x0050C2, 0x401000, 0x401FFF, "Promess Incorporated", "PROMESS-INCORPORATED" }, { 0x0050C2, 0x402000, 0x402FFF, "Numeron Sp. z o.o.", "NUMERON-SP-Z-O-O" }, { 0x0050C2, 0x3FE000, 0x3FEFFF, "HaiVision Systems Inc", "HAIVISION" }, { 0x0050C2, 0x3F8000, 0x3F8FFF, "Superna Ltd", "SUPERNA" }, { 0x0050C2, 0x3F9000, 0x3F9FFF, "Sintium Ltd", "SINTIUM" }, { 0x0050C2, 0x47C000, 0x47CFFF, "AUCONET GmbH", "AUCONET" }, { 0x0050C2, 0x47B000, 0x47BFFF, "Pitney Bowes, Inc", "PITNEY-BOWES" }, { 0x0050C2, 0x41F000, 0x41FFFF, "Avionica, Inc", "AVIONICA" }, { 0x0050C2, 0x41C000, 0x41CFFF, "Infrasafe, Inc.", "INFRASAFE" }, { 0x0050C2, 0x415000, 0x415FFF, "SensoTech GmbH", "SENSOTECH" }, { 0x0050C2, 0x416000, 0x416FFF, "SELCO s.r.l.", "SELCO-S-R-L" }, { 0x0050C2, 0x412000, 0x412FFF, "TSB Solutions Inc.", "TSB-SOLUTIONS" }, { 0x0050C2, 0x464000, 0x464FFF, "XYTAC system technologies", "XYTAC-SYSTEM-TECHNOLOGIES" }, { 0x0050C2, 0x461000, 0x461FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x45A000, 0x45AFFF, "Funkwerk plettac electronic GmbH", "FUNKWERK-PLETTAC" }, { 0x0050C2, 0x457000, 0x457FFF, "Danbridge", "DANBRIDGE" }, { 0x0050C2, 0x450000, 0x450FFF, "Enconair Ecological Chambers Inc.", "ENCONAIR-ECOLOGICAL-CHAMBERS" }, { 0x0050C2, 0x44C000, 0x44CFFF, "Computime Systems UK Ltd.", "COMPUTIME-UK" }, { 0x0050C2, 0x44B000, 0x44BFFF, "Solace Systems, Inc.", "SOLACE" }, { 0x0050C2, 0x444000, 0x444FFF, "Offshore Systems Ltd", "OFFSHORE" }, { 0x0050C2, 0x43E000, 0x43EFFF, "Coppercom", "COPPERCOM" }, { 0x0050C2, 0x46E000, 0x46EFFF, "Avenir Technologies Inc.", "AVENIR-TECHNOLOGIES" }, { 0x0050C2, 0x46B000, 0x46BFFF, "EASYTECH GmbH", "EASYTECH" }, { 0x0050C2, 0x3E6000, 0x3E6FFF, "CRDE", "CRDE" }, { 0x0050C2, 0x3E1000, 0x3E1FFF, "NeuLion Incorporated", "NEULION-INCORPORATED" }, { 0x0050C2, 0x3DE000, 0x3DEFFF, "ABB Power Technologies S.p.A. Unità Operativa SACE (PTMV)", "ABB-POWER-TECHNOLOGIES-S-P-A-UNITà-OPERATIVA-SACE-PTMV" }, { 0x0050C2, 0x3D1000, 0x3D1FFF, "Braintronics BV", "BRAINTRONICS" }, { 0x0050C2, 0x3D7000, 0x3D7FFF, "TTC TELEKOMUNIKACE Ltd", "TTC-TELEKOMUNIKACE" }, { 0x0050C2, 0x3D2000, 0x3D2FFF, "Adilec Enginyeria SL", "ADILEC-ENGINYERIA-SL" }, { 0x0050C2, 0x39B000, 0x39BFFF, "YUYAMA MFG. CO., LTD.", "YUYAMA-MFG" }, { 0x0050C2, 0x396000, 0x396FFF, "RapidWave Inc.", "RAPIDWAVE" }, { 0x0050C2, 0x3AF000, 0x3AFFFF, "Norbit ODM AS", "NORBIT-ODM-AS" }, { 0x0050C2, 0x383000, 0x383FFF, "ICS Electronics", "ICS-ELECTRONICS" }, { 0x0050C2, 0x3AC000, 0x3ACFFF, "InAccess Networks", "INACCESS-NETWORKS" }, { 0x0050C2, 0x3AA000, 0x3AAFFF, "Networked Robotics Corporation", "NETWORKED-ROBOTICS" }, { 0x0050C2, 0x3A5000, 0x3A5FFF, "LabJack Corporation", "LABJACK" }, { 0x0050C2, 0x3A0000, 0x3A0FFF, "StreetFire Sound Labs, LLC", "STREETFIRE-SOUND-LABS-LLC" }, { 0x0050C2, 0x3B9000, 0x3B9FFF, "Gilbarco Autotank AB", "GILBARCO-AUTOTANK-AB" }, { 0x0050C2, 0x37B000, 0x37BFFF, "freescale semiconductor", "FREESCALE-SEMICONDUCTOR" }, { 0x0050C2, 0x37E000, 0x37EFFF, "Ni.Co. S.r.l.", "NI-S-R-L" }, { 0x0050C2, 0x371000, 0x371FFF, "DIGITAL ART SYSTEM", "DIGITAL-ART-SYSTEM" }, { 0x0050C2, 0x36E000, 0x36EFFF, "Minicom Advanced Systems Ltd", "MINICOM-ADVANCED" }, { 0x0050C2, 0x3F4000, 0x3F4FFF, "MC TECHNOLOGY GmbH", "MC" }, { 0x0050C2, 0x3F7000, 0x3F7FFF, "Advantage R&D", "ADVANTAGE-R-D" }, { 0x0050C2, 0x3EF000, 0x3EFFFF, "PAT Industries, DBA Pacific Advanced Technology", "PAT-INDUSTRIES-DBA-PACIFIC-ADVANCED" }, { 0x0050C2, 0x3EE000, 0x3EEFFF, "Commoca, Inc", "COMMOCA" }, { 0x0050C2, 0x3ED000, 0x3EDFFF, "The Board Room Inc.", "THE-BOARD-ROOM" }, { 0x0050C2, 0x391000, 0x391FFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0x38C000, 0x38CFFF, "EPSILON SRL", "EPSILON-SRL" }, { 0x0050C2, 0x386000, 0x386FFF, "Precision System Science Co.,Ltd", "PRECISION-SYSTEM-SCIENCE" }, { 0x0050C2, 0x3CD000, 0x3CDFFF, "Micro-Measurements", "MICRO-MEASUREMENTS" }, { 0x0050C2, 0x3C8000, 0x3C8FFF, "Wheels of Zeus Inc.", "WHEELS-OF-ZEUS" }, { 0x0050C2, 0x3C3000, 0x3C3FFF, "4g Technologies, L.P.", "4G-TECHNOLOGIES-L-P" }, { 0x0050C2, 0x364000, 0x364FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x35A000, 0x35AFFF, "Advanced Si-Net Co., LTD.", "ADVANCED-SI-NET" }, { 0x0050C2, 0x2CB000, 0x2CBFFF, "FACTS Engineering LLC", "FACTS-ENGINEERING-LLC" }, { 0x0050C2, 0x2CC000, 0x2CCFFF, "EMBEDDED TOOLSMITHS", "EMBEDDED-TOOLSMITHS" }, { 0x0050C2, 0x2C1000, 0x2C1FFF, "Stage Tec Entwicklungsgesellschaft für professionelle Audio", "STAGE-TEC-ENTWICKLUNGSGESELLSCHAFT-FUER-PROFESSIONELLE-AUDIO" }, { 0x0050C2, 0x2C2000, 0x2C2FFF, "Smarteye Corporation", "SMARTEYE" }, { 0x0050C2, 0x353000, 0x353FFF, "Crossing Informationssysteme GmbH", "CROSSING-INFORMATIONSSYSTEME" }, { 0x0050C2, 0x349000, 0x349FFF, "SSI Schaefer Peem", "SSI-SCHAEFER-PEEM" }, { 0x0050C2, 0x34C000, 0x34CFFF, "Chuo Electric Works Co., LTD.", "CHUO-ELECTRIC-WORKS" }, { 0x0050C2, 0x34D000, 0x34DFFF, "BMK professional electronics GmbH", "BMK-PROFESSIONAL-ELECTRONICS" }, { 0x0050C2, 0x34E000, 0x34EFFF, "ABB Power Technologies S.p.A. Unità  Operativa SACE (PTMV)", "ABB-POWER-TECHNOLOGIES-S-P-A-UNITà -OPERATIVA-SACE-PTMV" }, { 0x0050C2, 0x328000, 0x328FFF, "I.C.S. Electronics Limited", "I-C-S-ELECTRONICS" }, { 0x0050C2, 0x318000, 0x318FFF, "Milmega Ltd", "MILMEGA" }, { 0x0050C2, 0x31D000, 0x31DFFF, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0050C2, 0x315000, 0x315FFF, "ifak system GmbH", "IFAK-SYSTEM" }, { 0x0050C2, 0x2FD000, 0x2FDFFF, "American Microsystems, Ltd.", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0x2FE000, 0x2FEFFF, "Saab AB", "SAAB-AB" }, { 0x0050C2, 0x2F3000, 0x2F3FFF, "Crossbow Technology, Inc.", "CROSSBOW" }, { 0x0050C2, 0x311000, 0x311FFF, "Comodo", "COMODO" }, { 0x0050C2, 0x308000, 0x308FFF, "FiveCo", "FIVECO" }, { 0x0050C2, 0x307000, 0x307FFF, "UNIONDIGITAL.,CO.LTD", "UNIONDIGITAL" }, { 0x0050C2, 0x2D6000, 0x2D6FFF, "WIS Technologies", "WIS-TECHNOLOGIES" }, { 0x0050C2, 0x2D5000, 0x2D5FFF, "PIXY AG", "PIXY" }, { 0x0050C2, 0x2E9000, 0x2E9FFF, "SRI International", "SRI" }, { 0x0050C2, 0x2EA000, 0x2EAFFF, "QUBIsoft S.r.l.", "QUBISOFT-S-R-L" }, { 0x0050C2, 0x2DF000, 0x2DFFFF, "MICREL-NKE", "MICREL-NKE" }, { 0x0050C2, 0x344000, 0x344FFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x33F000, 0x33FFFF, "EXYS bvba", "EXYS-BVBA" }, { 0x0050C2, 0x342000, 0x342FFF, "St. Michael Strategies", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0x343000, 0x343FFF, "ABB Xiamen Switchgear Co. Ltd.", "ABB-XIAMEN-SWITCHGEAR" }, { 0x0050C2, 0x332000, 0x332FFF, "PUNJAB COMMUNICATIONS LTD", "PUNJAB-COMMUNICATION" }, { 0x0050C2, 0x259000, 0x259FFF, "Omicron Ceti AB", "OMICRON-CETI-AB" }, { 0x0050C2, 0x254000, 0x254FFF, "Thales Communications Ltd", "THALES-COMMUNICATION" }, { 0x0050C2, 0x24F000, 0x24FFFF, "Macronet s.r.l.", "MACRONET-S-R-L" }, { 0x0050C2, 0x24C000, 0x24CFFF, "Supertel", "SUPERTEL" }, { 0x0050C2, 0x245000, 0x245FFF, "Hauppauge Computer Works, Inc.", "HAUPPAUGE-WORKS" }, { 0x0050C2, 0x2BC000, 0x2BCFFF, "Uster Technologies AG", "USTER-TECHNOLOGIES" }, { 0x0050C2, 0x2AF000, 0x2AFFFF, "CSA Computer & Antriebstechnik GmbH", "CSA-ANTRIEBSTECHNIK" }, { 0x0050C2, 0x29B000, 0x29BFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x2A5000, 0x2A5FFF, "Septier Communication Ltd", "SEPTIER-COMMUNICATION" }, { 0x0050C2, 0x27D000, 0x27DFFF, "ALLIED TELESIS K.K.", "ALLIED-TELESIS-K-K" }, { 0x0050C2, 0x273000, 0x273FFF, "Servicios Condumex, S. A. de C. V.", "SERVICIOS-CONDUMEX-S-A-DE-C-V" }, { 0x0050C2, 0x269000, 0x269FFF, "Technisyst Pty Ltd", "TECHNISYST-PTY" }, { 0x0050C2, 0x263000, 0x263FFF, "Vansco Electronics Oy", "VANSCO-ELECTRONICS-OY" }, { 0x0050C2, 0x291000, 0x291FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x287000, 0x287FFF, "TECNEW Electronics Engineering Cr., Ltd.", "TECNEW-ELECTRONICS-ENGINEERING-CR" }, { 0x0050C2, 0x1E2000, 0x1E2FFF, "DIGITRONIC Automationsanlagen GmbH", "DIGITRONIC-AUTOMATIONSANLAGEN" }, { 0x0050C2, 0x1E3000, 0x1E3FFF, "Bluesocket, Inc.", "BLUESOCKET" }, { 0x0050C2, 0x1DF000, 0x1DFFFF, "Lulea University of Technology", "LULEA-UNIVERSITY-OF" }, { 0x0050C2, 0x1D9000, 0x1D9FFF, "EDC", "EDC" }, { 0x0050C2, 0x200000, 0x200FFF, "Whittier Mailing Products, Inc.", "WHITTIER-MAILING-PRODUCTS" }, { 0x0050C2, 0x1FC000, 0x1FCFFF, "EDD Srl", "EDD-SRL" }, { 0x0050C2, 0x1F6000, 0x1F6FFF, "BAE SYSTEMS Controls", "BAE-CONTROLS" }, { 0x0050C2, 0x227000, 0x227FFF, "Intelligent Photonics Control", "INTELLIGENT-PHOTONICS-CONTROL" }, { 0x0050C2, 0x228000, 0x228FFF, "Intelligent Media Technologies, Inc.", "INTELLIGENT-MEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x224000, 0x224FFF, "PANNOCOM Ltd.", "PANNOCOM" }, { 0x0050C2, 0x23B000, 0x23BFFF, "Envara", "ENVARA" }, { 0x0050C2, 0x238000, 0x238FFF, "Schwer+Kopka GmbH", "SCHWER+KOPKA" }, { 0x0050C2, 0x22E000, 0x22EFFF, "LORD INGENIERIE", "LORD-INGENIERIE" }, { 0x0050C2, 0x231000, 0x231FFF, "Legra Systems, Inc.", "LEGRA" }, { 0x0050C2, 0x21A000, 0x21AFFF, "MST SYSTEMS LIMITED", "MST" }, { 0x0050C2, 0x21D000, 0x21DFFF, "ESG Elektroniksystem u. Logistik GmbH", "ESG-ELEKTRONIKSYSTEM-U-LOGISTIK" }, { 0x0050C2, 0x21E000, 0x21EFFF, "Applied Technologies Associates", "APPLIED-TECHNOLOGIES-ASSOCIATES" }, { 0x0050C2, 0x213000, 0x213FFF, "SysAware S.A.R.L.", "SYSAWARE-R-L" }, { 0x0050C2, 0x214000, 0x214FFF, "Oshimi System Design Inc.", "OSHIMI-SYSTEM-DESIGN" }, { 0x0050C2, 0x210000, 0x210FFF, "Innovics Wireless Inc", "INNOVICS-WIRELESS" }, { 0x0050C2, 0x1D5000, 0x1D5FFF, "Redpoint Controls", "REDPOINT-CONTROLS" }, { 0x0050C2, 0x1CF000, 0x1CFFFF, "LIFETIME MEMORY PRODUCTS, INC.", "LIFETIME-MEMORY-PRODUCTS" }, { 0x0050C2, 0x206000, 0x206FFF, "Windmill Innovations", "WINDMILL-INNOVATIONS" }, { 0x0050C2, 0x20A000, 0x20AFFF, "Ferrari electronic AG", "FERRARI" }, { 0x0050C2, 0x242000, 0x242FFF, "MDS SCIEX", "MDS-SCIEX" }, { 0x0050C2, 0x180000, 0x180FFF, "Zultys Technologies", "ZULTYS-TECHNOLOGIES" }, { 0x0050C2, 0x176000, 0x176FFF, "Wavium AB", "WAVIUM-AB" }, { 0x0050C2, 0x17C000, 0x17CFFF, "Jeffress Engineering Pty Ltd", "JEFFRESS-ENGINEERING-PTY" }, { 0x0050C2, 0x172000, 0x172FFF, "SAET I.S. S.r.l.", "SAET-I-S-S-R-L" }, { 0x0050C2, 0x016000, 0x016FFF, "DSP Design Ltd.", "DSP-DESIGN" }, { 0x0050C2, 0x017000, 0x017FFF, "Hunter Technology Inc.", "HUNTER" }, { 0x0050C2, 0x000000, 0x000FFF, "T.L.S. Corp.", "T-L-S" }, { 0x0050C2, 0x00C000, 0x00CFFF, "Vbrick Systems Inc.", "VBRICK" }, { 0x0050C2, 0x00D000, 0x00DFFF, "Opus Telecom Inc.", "OPUS-TELECOM" }, { 0x0050C2, 0x1CB000, 0x1CBFFF, "quantumBEAM Limited", "QUANTUMBEAM" }, { 0x0050C2, 0x1C1000, 0x1C1FFF, "InfinitiNetworks Inc.", "INFINITINETWORKS" }, { 0x0050C2, 0x1C5000, 0x1C5FFF, "Flander Oy", "FLANDER-OY" }, { 0x0050C2, 0x1BB000, 0x1BBFFF, "Email Metering", "EMAIL-METERING" }, { 0x0050C2, 0x19D000, 0x19DFFF, "ELECTREX S.R.L", "ELECTREX-S-R-L" }, { 0x0050C2, 0x18E000, 0x18EFFF, "SPARR ELECTRONICS LTD", "SPARR-ELECTRONICS" }, { 0x0050C2, 0x18A000, 0x18AFFF, "Basler Electric Company", "BASLER-ELECTRIC-COMPANY" }, { 0x0050C2, 0x193000, 0x193FFF, "LaserBit Communications Corp.", "LASERBIT-COMMUNICATION" }, { 0x0050C2, 0x1AD000, 0x1ADFFF, "Remia s.r.o.", "REMIA-S-R-O" }, { 0x0050C2, 0x1A7000, 0x1A7FFF, "Alpha Beta Technologies, Inc.", "ALPHA-BETA-TECHNOLOGIES" }, { 0x0050C2, 0x1A3000, 0x1A3FFF, "Tidel Engineering, L.P.", "TIDEL-ENGINEERING-L-P" }, { 0x0050C2, 0x186000, 0x186FFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x0050C2, 0x1B7000, 0x1B7FFF, "MosChip USA", "MOSCHIP-USA" }, { 0x0050C2, 0x1B1000, 0x1B1FFF, "Axes Technologies", "AXES-TECHNOLOGIES" }, { 0x0050C2, 0x062000, 0x062FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x16E000, 0x16EFFF, "PMC", "PMC" }, { 0x0050C2, 0x118000, 0x118FFF, "Microbit 2.0 AB", "MICROBIT-2-0-AB" }, { 0x0050C2, 0x134000, 0x134FFF, "DRS Photronics", "DRS-PHOTRONICS" }, { 0x0050C2, 0x131000, 0x131FFF, "InBus Engineering, Inc.", "INBUS-ENGINEERING" }, { 0x0050C2, 0x132000, 0x132FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x128000, 0x128FFF, "Pycon, Inc.", "PYCON" }, { 0x0050C2, 0x122000, 0x122FFF, "Diva Systems", "DIVA" }, { 0x0050C2, 0x11D000, 0x11DFFF, "Destiny Networks, Inc.", "DESTINY-NETWORKS" }, { 0x0050C2, 0x11E000, 0x11EFFF, "Volvo Car Corporation", "VOLVO-CAR" }, { 0x0050C2, 0x15C000, 0x15CFFF, "Aoptix Technologies", "AOPTIX-TECHNOLOGIES" }, { 0x0050C2, 0x157000, 0x157FFF, "nCore, Inc.", "NCORE" }, { 0x0050C2, 0x14D000, 0x14DFFF, "wellink, Ltd.", "WELLINK" }, { 0x0050C2, 0x139000, 0x139FFF, "SR Research Ltd.", "SR-RESEARCH" }, { 0x0050C2, 0x13E000, 0x13EFFF, "AVerMedia Systems, Inc.", "AVERMEDIA" }, { 0x0050C2, 0x166000, 0x166FFF, "Infineer Ltd.", "INFINEER" }, { 0x0050C2, 0x161000, 0x161FFF, "J&B Engineering Group S.L.", "J-B-ENGINEERING-GROUP-S-L" }, { 0x0050C2, 0x095000, 0x095FFF, "SEATECH", "SEATECH" }, { 0x0050C2, 0x152000, 0x152FFF, "AirVast Technology Inc.", "AIRVAST" }, { 0x0050C2, 0x148000, 0x148FFF, "Alltec GmbH", "ALLTEC" }, { 0x0050C2, 0x0E4000, 0x0E4FFF, "Collabo Tec. Co., Ltd.", "COLLABO-TEC" }, { 0x0050C2, 0x0DF000, 0x0DFFFF, "Innovation Institute, Inc.", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x0DA000, 0x0DAFFF, "Motion Analysis Corp.", "MOTION-ANALYSIS" }, { 0x0050C2, 0x114000, 0x114FFF, "Quest Innovations", "QUEST-INNOVATIONS" }, { 0x0050C2, 0x113000, 0x113FFF, "Ace Electronics, Inc.", "ACE-ELECTRONICS" }, { 0x0050C2, 0x0F1000, 0x0F1FFF, "Polyvision Corporation", "POLYVISION" }, { 0x0050C2, 0x0D5000, 0x0D5FFF, "Zelax", "ZELAX" }, { 0x0050C2, 0x0D0000, 0x0D0FFF, "Telefrang AB", "TELEFRANG-AB" }, { 0x0050C2, 0x107000, 0x107FFF, "NewHer Systems", "NEWHER" }, { 0x0050C2, 0x0FD000, 0x0FDFFF, "Inducomp Corporation", "INDUCOMP" }, { 0x0050C2, 0x102000, 0x102FFF, "Million Tech Development Ltd.", "MILLION-TECH-DEVELOPMENT" }, { 0x0050C2, 0x0CA000, 0x0CAFFF, "J D Richards", "J-D-RICHARDS" }, { 0x0050C2, 0x10C000, 0x10CFFF, "Photonic Bridges, Inc.", "PHOTONIC-BRIDGES" }, { 0x0050C2, 0x0E9000, 0x0E9FFF, "Smartmedia LLC", "SMARTMEDIA-LLC" }, { 0x0050C2, 0x09E000, 0x09EFFF, "Infinitec Networks, Inc.", "INFINITEC-NETWORKS" }, { 0x0050C2, 0x0C7000, 0x0C7FFF, "TransComm Technology System, Inc.", "TRANSCOMM-SYSTEM" }, { 0x0050C2, 0x0C3000, 0x0C3FFF, "Tonbu, Inc.", "TONBU" }, { 0x0050C2, 0x0C0000, 0x0C0FFF, "Imigix Ltd.", "IMIGIX" }, { 0x0050C2, 0x0AE000, 0x0AEFFF, "Zarak Systems Corp.", "ZARAK" }, { 0x0050C2, 0x0AC000, 0x0ACFFF, "Honeywell GNO", "HONEYWELL-GNO" }, { 0x0050C2, 0x0BD000, 0x0BDFFF, "Tattile", "TATTILE" }, { 0x0050C2, 0x0B8000, 0x0B8FFF, "LAN Controls, Inc.", "LAN-CONTROLS" }, { 0x0050C2, 0x0B3000, 0x0B3FFF, "SMX Corporation", "SMX" }, { 0x0050C2, 0x0A6000, 0x0A6FFF, "Arula Systems, Inc.", "ARULA" }, { 0x0050C2, 0x090000, 0x090FFF, "Invensys Controls Network Systems", "INVENSYS-CONTROLS-NETWORK" }, { 0x0050C2, 0x08B000, 0x08BFFF, "HYPERCHIP Inc.", "HYPERCHIP" }, { 0x0050C2, 0x086000, 0x086FFF, "Validyne Engineering Corp.", "VALIDYNE-ENGINEERING" }, { 0x0050C2, 0x081000, 0x081FFF, "Matuschek Messtechnik GmbH", "MATUSCHEK-MESSTECHNIK" }, { 0x0050C2, 0x07C000, 0x07CFFF, "PLLB elettronica spa", "PLLB-ELETTRONICA-SPA" }, { 0x0050C2, 0x06F000, 0x06FFFF, "Digital Services Group", "DIGITAL-SERVICES-GROUP" }, { 0x0050C2, 0x076000, 0x076FFF, "Litton Guidance & Control Systems", "LITTON-GUIDANCE-CONTROL" }, { 0x0050C2, 0x043000, 0x043FFF, "Curtis, Inc.", "CURTIS" }, { 0x0050C2, 0x041000, 0x041FFF, "Damler Chrysler Rail System (Signal) AB", "DAMLER-CHRYSLER-RAIL-SYSTEM-SIGNAL-AB" }, { 0x0050C2, 0x03C000, 0x03CFFF, "BrainBoxes Ltd", "BRAINBOXES" }, { 0x0050C2, 0x020000, 0x020FFF, "Icon Research Ltd.", "ICON-RESEARCH" }, { 0x0050C2, 0x058000, 0x058FFF, "Vision Research, Inc.", "VISION-RESEARCH" }, { 0x0050C2, 0x051000, 0x051FFF, "JSR Ultrasonics", "JSR-ULTRASONICS" }, { 0x0050C2, 0x034000, 0x034FFF, "Ing. Buero W. Kanis GmbH", "ING-BUERO-W-KANIS" }, { 0x0050C2, 0x046000, 0x046FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x049000, 0x049FFF, "Computer Concepts Corp", "CONCEPTS" }, { 0x0050C2, 0x007000, 0x007FFF, "Clive Green & Co. Ltd.", "CLIVE-GREEN" }, { 0x0050C2, 0x7AA000, 0x7AAFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x447000, 0x447FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x83D000, 0x83DFFF, "beroNet GmbH", "BERONET" }, { 0x0050C2, 0x3B6000, 0x3B6FFF, "Arecont Vision", "ARECONT-VISION" }, { 0x0050C2, 0x980000, 0x980FFF, "Digital Payment Technologies", "DIGITAL-PAYMENT-TECHNOLOGIES" }, { 0x0050C2, 0x12C000, 0x12CFFF, "DELTA TAU DATA SYSTEMS, INC.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x4D7000, 0x4D7FFF, "DELTA TAU DATA SYSTEMS, INC.", "DELTA-TAU-DATA" }, { 0x0050C2, 0xAF7000, 0xAF7FFF, "Midwest Microwave Solutions Inc.", "MIDWEST-MICROWAVE-SOLUTIONS" }, { 0x0050C2, 0xA0E000, 0xA0EFFF, "ENGICAM s.r.l.", "ENGICAM-S-R-L" }, { 0x0050C2, 0x2F4000, 0x2F4FFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x0A2000, 0x0A2FFF, "Jäger Computergesteuerte Meßtechnik GmbH.", "JAEGER-COMPUTERGESTEUERTE-MESSTECHNIK" }, { 0x0050C2, 0x143000, 0x143FFF, "AARTESYS AG", "AARTESYS" }, { 0x0050C2, 0xF97000, 0xF97FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0xCE2000, 0xCE2FFF, "Sicon srl", "SICON-SRL" }, { 0x0050C2, 0xC78000, 0xC78FFF, "9Solutions Oy", "9SOLUTIONS-OY" }, { 0x0050C2, 0x93D000, 0x93DFFF, "Lighting Science Group", "LIGHTING-SCIENCE-GROUP" }, { 0x0050C2, 0xDA3000, 0xDA3FFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0xFF0000, 0xFF0FFF, "GD Mission Systems", "GD-MISSION" }, { 0x40D855, 0x0AE000, 0x0AEFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0xBB7000, 0xBB7FFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0xADD000, 0xADDFFF, "GD Mission Systems", "GD-MISSION" }, { 0x0050C2, 0x8C8000, 0x8C8FFF, "Pumatronix Equipamentos Eletronicos Ltda.", "PUMATRONIX-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0x0050C2, 0x5FE000, 0x5FEFFF, "NOVACOMM LTDA", "NOVACOMM-LTDA" }, { 0x0050C2, 0x667000, 0x667FFF, "Vocality International Ltd", "VOCALITY" }, { 0x0050C2, 0xE3A000, 0xE3AFFF, "Vocality International Ltd", "VOCALITY" }, { 0x0050C2, 0x199000, 0x199FFF, "Survalent Technology Corporation", "SURVALENT" }, { 0x0050C2, 0xEA0000, 0xEA0FFF, "Robert Bosch Healthcare Systems, Inc.", "ROBERT-BOSCH-HEALTHCARE" }, { 0x40D855, 0x089000, 0x089FFF, "Wuhan Xingtuxinke ELectronic Co.,Ltd", "WUHAN-XINGTUXINKE" }, { 0x40D855, 0x1DC000, 0x1DCFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF6F000, 0xF6FFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xD11000, 0xD11FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0x0F8000, 0x0F8FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x0050C2, 0x5A6000, 0x5A6FFF, "Plastic Logic", "PLASTIC-LOGIC" }, { 0x0050C2, 0xC90000, 0xC90FFF, "RealD", "REALD" }, { 0x0050C2, 0xF52000, 0xF52FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE2A000, 0xE2AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x403000, 0x403FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xD47000, 0xD47FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x9EC000, 0x9ECFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x92A000, 0x92AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xF8D000, 0xF8DFFF, "Guangdong East Power Co.,", "GUANGDONG-EAST-POWER" }, { 0x0050C2, 0xD43000, 0xD43FFF, "DSP4YOU LTd", "DSP4YOU" }, { 0x0050C2, 0x374000, 0x374FFF, "Owasys Advanced Wireless Devices", "OWASYS-ADVANCED-WIRELESS-DEVICES" }, { 0x40D855, 0x0B1000, 0x0B1FFF, "Nanjing TIANSU Automation Control System Co., Ltd.", "NANJING-TIANSU-AUTOMATION-CONTROL-SYSTEM" }, { 0x0050C2, 0xDDE000, 0xDDEFFF, "DRS Imaging and Targeting Solutions", "DRS-IMAGING-AND-TARGETING-SOLUTIONS" }, { 0x0050C2, 0x796000, 0x796FFF, "DORLET SAU", "DORLET-SAU" }, { 0x0050C2, 0x5AF000, 0x5AFFFF, "DORLET SAU", "DORLET-SAU" }, { 0x40D855, 0x00B000, 0x00BFFF, "Gogo BA", "GOGO-BA" }, { 0x0050C2, 0xEF9000, 0xEF9FFF, "HORIBA ABX SAS", "HORIBA-ABX-SAS" }, { 0x40D855, 0x1BD000, 0x1BDFFF, "HORIBA ABX SAS", "HORIBA-ABX-SAS" }, { 0x0050C2, 0x89A000, 0x89AFFF, "Neptune Technology Group Inc.", "NEPTUNE-GROUP" }, { 0x40D855, 0x044000, 0x044FFF, "An Chen Computer Co., Ltd.", "AN-CHEN" }, { 0x0050C2, 0x02A000, 0x02AFFF, "VersaLogic Corp.", "VERSALOGIC" }, { 0x0050C2, 0x485000, 0x485FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x25F000, 0x25FFFF, "Albert Handtmann Maschinenfabrik GmbH&Co.KG", "ALBERT-HANDTMANN-MASCHINENFABRIK" }, }; ipv6calc-1.0.0/databases/ieee-oui/000077500000000000000000000000001312366535500166605ustar00rootroot00000000000000ipv6calc-1.0.0/databases/ieee-oui/Makefile000066400000000000000000000013471312366535500203250ustar00rootroot00000000000000# Project : ipv6calc/databases/ieee-oui # File : Makefile # Version : $Id: fb3520ff31a0768e7446766edeffcc0dc7b7a92e $ # Copyright : 2002-2008 by Peter Bieringer # # Information: # Makefile for ieee-oui FILE = oui.txt BASEURL = http://standards.ieee.org/regauth/oui/ all: test -f dbieee_oui.h || ${MAKE} update install: echo "Nothing to do" create: ./create_ieee_oui_headerfile.pl $(FILE) update: echo "Download new version of file" wget $(BASEURL)$(FILE) --timestamp ${MAKE} create updateclean: echo "Remove header file" rm -f dbieee_oui.h ${MAKE} distclean distclean: echo "Remove database file" rm -f $(FILE) autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/ieee-oui/README000066400000000000000000000002431312366535500175370ustar00rootroot00000000000000$Id: 7b917fab1cc466be500b32ab345a8ff18afae2a7 $ OUI database: URL: http://standards.ieee.org/regauth/oui/oui.txt File will be retrieved on-the-fly during "make" ipv6calc-1.0.0/databases/ieee-oui/create_ieee_oui_headerfile.pl000077500000000000000000000113311312366535500244750ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc # File : create_ieee_oui_headerfile.pl # Version : $Id: create_ieee_oui_headerfile.pl,v 1.14 2014/12/09 21:03:50 ds6peter Exp $ # Copyright : 2002-2014 by Peter Bieringer # # Creates a header file out of IEEE/oui.txt # # Virtual Machine prefixes from: # http://www.techrepublic.com/blog/networking/mac-address-scorecard-for-common-virtual-machine-platforms/538 use strict; use File::stat; use POSIX qw(strftime); my $INFILE; my $OUTFILE = "dbieee_oui.h"; my $flag_qemu = 0; my $debug = 0; $INFILE = shift; if (! defined $INFILE) { $INFILE = "oui.txt" }; print "Create dbieee_oui.h automatically\n"; open(IN, "<$INFILE") || die "Cannot open infile: $INFILE"; open(OUT, ">$OUTFILE") || die "Cannot open outfile: $OUTFILE"; # Header my $now_string = localtime; print OUT qq|/* * Project : ipv6calc * File : dbieee_oui.h |; print OUT " * Version : \$Id"; print OUT ":\$\n"; print OUT qq| * Generated : $now_string * Data copyright: IEEE * * Information: * Additional header file for libieee.c */ |; # print creation date my $sb = stat($INFILE); print OUT "\/\*\@unused\@\*\/ static const char* libieee_oui_status __attribute__ ((__unused__)) = \"OUI/" . strftime("%Y%m%d", localtime($sb->mtime)) . "\";\n"; # Structure print OUT qq| static const s_ieee_oui libieee_oui[] = { |; my ($a, $b, $c); my ($t1, $t2, $t3); my $oui; # Data my $i = 0; my $m = 0; while () { my $line = $_; chomp $line; $i++; if ($line =~ /\(hex\)/ ) { # kill additional spaces $line =~ s/[ \t]+/ /g; # kill leading spaces $line =~ s/^ *//g; # kill trailing spaces $line =~ s/ *$//g; # kill \r $line =~ s/\r//g; $m++; print STDERR "$m\r" if ($debug == 0); print STDERR "$i: $line\n" if ($debug != 0); ($t1, $t2, $t3) = split / /, $line, 3; print STDERR $i . ": t1=$t1 t2=$t2 t3=$t3\n" if ($debug != 0); ($a, $b, $c) = split /-/, $t1; print STDERR $i . ": a=$a b=$b c=$c\n" if ($debug != 0); # shorten OUI string $oui = uc($t3); # replace '(' ')' '&' $oui =~ s/[\(\)\&\',]/ /ig; # remove unimportant information $oui =~ s/\bINC[\.]*\b//ig; $oui =~ s/\bLTD[\.]*\b//ig; $oui =~ s/\bLIMITED\b//ig; $oui =~ s/\bCO[\.]*\b//ig; $oui =~ s/\bCORP[\.]*\b//ig; $oui =~ s/\bCOMP[\.]\b//ig; $oui =~ s/\bGMBH\b//ig; $oui =~ s/\bCORPORATION\b//ig; $oui =~ s/\bS[\.]*A[\.]*\b//ig; $oui =~ s/\bAG\b/ELECTRONIC/ig; $oui =~ s/\bKG\b//ig; $oui =~ s/\bBV\b//ig; # Replace some text $oui =~ s/\b3 Com\b/3COM/ig; $oui =~ s/\b3Com Europe\b/3COM/ig; $oui =~ s/\bCOMMUNICATIONS\b/COMMUNICATION/ig; $oui =~ s/\bCORPOTATION\b/CORPORATION/ig; $oui =~ s/\bINTERNAIONAL\b/INTERNATIONAL/ig; # remove some unneeded text $oui =~ s/\bINTERNATIONAL\b//ig; $oui =~ s/\bTECHNOLOGY\b//ig; $oui =~ s/\bCOMPUTER\b//ig; $oui =~ s/\bSYSTEMS\b//ig; $oui =~ s/\bENTERPRISE\b//ig; $oui =~ s/\bCORPORATION\b//ig; $oui =~ s/\bELECTRONIC\b//ig; $oui =~ s/\bHF1-06\b//ig; # remove ',' '.', '"' $oui =~ s/[,\.;"]/ /ig; # remove leading and trailing spaces $oui =~ s/^\s+//ig; $oui =~ s/\s+$//ig; # convert spaces to '-' $oui =~ s/\s+/-/ig; # Some final cleanup $oui =~ s/-INT-L//ig; $oui =~ s/-B-V//ig; # remove trailling '-' $oui =~ s/-+$//ig; # Append information for special OUIs if ($a eq "08" && $b eq "00" && $c eq "27") { # 08:00:27 $t3 .= " (possible VirtualBox VM)"; $oui .= "-VIRTUAL"; } elsif ($a eq "00" && $b eq "03" && $c eq "FF") { # 00:03:FF $t3 .= " (possible Hyper-V, Virtual Server, Virtual PC VM)"; $oui .= "-VIRTUAL"; } elsif ($a eq "00" && $b eq "1C" && $c eq "42") { # 00:1C:42 $t3 .= " (possible Paralles Desktop, Workstation, Server, Virtuozzo VM)"; $oui .= "-VIRTUAL"; } elsif ($a eq "00" && $b eq "0F" && $c eq "4B") { # 00:0F:4B $t3 .= " (possible Virtual Iron VM)"; $oui .= "-VIRTUAL"; } elsif ($a eq "00" && $b eq "16" && $c eq "3E") { # 00:16:3E $t3 .= " (possible Xen VM)"; $oui .= "-VIRTUAL"; } elsif ($a eq "52" && $b eq "54" && $c eq "00") { # 52:54:00 $t3 .= " (possible QEMU VM)"; $oui .= "-VIRTUAL"; $flag_qemu = 1; } elsif ( ($a eq "00" && $b eq "50" && $c eq "56") || ($a eq "00" && $b eq "0C" && $c eq "29") || ($a eq "00" && $b eq "05" && $c eq "69") ) { # 00:50:56 # 00:0C:29 # 00:05:69 $t3 .= " (possible VMware VM)"; $oui .= "-VIRTUAL"; }; # escape " $t3 =~ s/"/\\"/g; print OUT "\t{ 0x" . $a . $b . $c . ", \"$t3\", \"$oui\" },\n"; }; }; if ($flag_qemu == 0) { # print missing qemu $a = "52"; $b = "54"; $c = "00"; $t3 = "possible QEMU VM"; $oui = "QEMU-VIRTUAL"; print OUT "\t{ 0x" . $a . $b . $c . ", \"$t3\", \"$oui\" },\n"; }; print OUT qq| }; |; print "Finished\n"; ipv6calc-1.0.0/databases/ieee-oui/dbieee_oui.h000066400000000000000000052102231312366535500211270ustar00rootroot00000000000000/* * Project : ipv6calc * File : dbieee_oui.h * Version : $Id: 22c3dc5bd3920f5332301db12ae14b681422dd5b $ * Generated : Sun Jun 25 09:30:16 2017 * Data copyright: IEEE * * Information: * Additional header file for libieee.c */ /*@unused@*/ static const char* libieee_oui_status __attribute__ ((__unused__)) = "OUI/20170625"; static const s_ieee_oui libieee_oui[] = { { 0xE043DB, "Shenzhen ViewAt Technology Co.,Ltd. ", "SHENZHEN-VIEWAT" }, { 0x2405F5, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x3CD92B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x9C8E99, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB499BA, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x1CC1DE, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x3C3556, "Cognitec Systems GmbH", "COGNITEC" }, { 0x0050BA, "D-Link Corporation", "D-LINK" }, { 0x00179A, "D-Link Corporation", "D-LINK" }, { 0x1CBDB9, "D-Link International", "D-LINK" }, { 0x9094E4, "D-Link International", "D-LINK" }, { 0x28107B, "D-Link International", "D-LINK" }, { 0x1C7EE5, "D-Link International", "D-LINK" }, { 0xC4A81D, "D-Link International", "D-LINK" }, { 0x18622C, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x7C03D8, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xE8F1B0, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x00F871, "DGS Denmark A/S", "DGS-DENMARK-A/S" }, { 0x20BB76, "COL GIOVANNI PAOLO SpA", "COL-GIOVANNI-PAOLO-SPA" }, { 0x2C228B, "CTR SRL", "CTR-SRL" }, { 0x348AAE, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xBCEC23, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0xAC06C7, "ServerNet S.r.l.", "SERVERNET-S-R-L" }, { 0xCC46D6, "Cisco Systems, Inc", "CISCO" }, { 0x48AD08, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2CAB00, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00E0FC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x24DF6A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x009ACD, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00CDFE, "Apple, Inc.", "APPLE" }, { 0x38F23E, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x58AC78, "Cisco Systems, Inc", "CISCO" }, { 0x907F61, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0x28BC18, "SourcingOverseas Co. Ltd", "SOURCINGOVERSEAS" }, { 0x807ABF, "HTC Corporation", "HTC" }, { 0x409F87, "Jide Technology (Hong Kong) Limited", "JIDE-HONG-KONG" }, { 0x3C5AB4, "Google, Inc.", "GOOGLE" }, { 0x001A11, "Google, Inc.", "GOOGLE" }, { 0xD83C69, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x74AC5F, "Qiku Internet Network Scientific (Shenzhen) Co., Ltd.", "QIKU-INTERNET-NETWORK-SCIENTIFIC-SHENZHEN" }, { 0x18AF61, "Apple, Inc.", "APPLE" }, { 0xBC83A7, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0x000347, "Intel Corporation", "INTEL" }, { 0x001175, "Intel Corporation", "INTEL" }, { 0x0013E8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001302, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE4F89C, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA402B9, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4C3488, "Intel Corporate", "INTEL-CORPORATE" }, { 0x000D0B, "BUFFALO.INC", "BUFFALO" }, { 0x000740, "BUFFALO.INC", "BUFFALO" }, { 0x0024A5, "BUFFALO.INC", "BUFFALO" }, { 0xDCFB02, "BUFFALO.INC", "BUFFALO" }, { 0xF4CE46, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001CC4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0025B3, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001871, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000BCD, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000E7F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000F20, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x00110A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001321, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001635, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0017A4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000802, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x90E7C4, "HTC Corporation", "HTC" }, { 0x74A78E, "zte corporation", "ZTE" }, { 0xD860B0, "bioMérieux Italia S.p.A.", "BIOMéRIEUX-ITALIA-S-P-A" }, { 0x8038BC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD440F0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x64A651, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE8CD2D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xACE215, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xEC233D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x78F5FD, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x80B686, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x10C61F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x8853D4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0C37DC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xBC7670, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x24DBAC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0021E8, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x006057, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0007D8, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x84742A, "zte corporation", "ZTE" }, { 0x681AB2, "zte corporation", "ZTE" }, { 0xE005C5, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA0F3C1, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x8C210A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xEC172F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xEC888F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x14CF92, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x645601, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x14CC20, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xBC4699, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0C45BA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x847778, "Cochlear Limited", "COCHLEAR" }, { 0x0453D5, "Sysorex Global Holdings", "SYSOREX-GLOBAL-HOLDINGS" }, { 0xCC4463, "Apple, Inc.", "APPLE" }, { 0x6C72E7, "Apple, Inc.", "APPLE" }, { 0xCCA223, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE8088B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x60E701, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x000883, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC4346B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x8CDCD4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x3464A9, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD4C9EF, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA45D36, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA0D3C1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x40A8F0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x6C3BE5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x082E5F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x28924A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x10604B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x308D99, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0030C1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xFC3FDB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x4CA161, "Rain Bird Corporation", "RAIN-BIRD" }, { 0x7C6193, "HTC Corporation", "HTC" }, { 0x001217, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x000C41, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x000F66, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x44E08E, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x185933, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xE448C7, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x24767D, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x2CABA4, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x0002C7, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x04766E, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x006B8E, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0xAC853D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x74882A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x78D752, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE0247F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00464B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x707BE8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x548998, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0819A6, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3CF808, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB41513, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x283152, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDCD2FC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0003DD, "Comark Interactive Solutions", "COMARK-INTERACTIVE-SOLUTIONS" }, { 0x00107B, "Cisco Systems, Inc", "CISCO" }, { 0x00906D, "Cisco Systems, Inc", "CISCO" }, { 0x0090BF, "Cisco Systems, Inc", "CISCO" }, { 0x005080, "Cisco Systems, Inc", "CISCO" }, { 0x00E018, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x000C6E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001BFC, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001E8C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0015F2, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002354, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001FC6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x60182E, "ShenZhen Protruly Electronic Ltd co.", "SHENZHEN-PROTRULY" }, { 0xF4CFE2, "Cisco Systems, Inc", "CISCO" }, { 0x501CBF, "Cisco Systems, Inc", "CISCO" }, { 0x285FDB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x404D8E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x781DBA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001E10, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x88F031, "Cisco Systems, Inc", "CISCO" }, { 0x508789, "Cisco Systems, Inc", "CISCO" }, { 0x381C1A, "Cisco Systems, Inc", "CISCO" }, { 0xF40F1B, "Cisco Systems, Inc", "CISCO" }, { 0xBC671C, "Cisco Systems, Inc", "CISCO" }, { 0xA0ECF9, "Cisco Systems, Inc", "CISCO" }, { 0xD46D50, "Cisco Systems, Inc", "CISCO" }, { 0x1CE85D, "Cisco Systems, Inc", "CISCO" }, { 0xC47295, "Cisco Systems, Inc", "CISCO" }, { 0xA0554F, "Cisco Systems, Inc", "CISCO" }, { 0x84B802, "Cisco Systems, Inc", "CISCO" }, { 0xBCC493, "Cisco Systems, Inc", "CISCO" }, { 0x001947, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x0022CE, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xF02929, "Cisco Systems, Inc", "CISCO" }, { 0xECE1A9, "Cisco Systems, Inc", "CISCO" }, { 0x7C69F6, "Cisco Systems, Inc", "CISCO" }, { 0xC08C60, "Cisco Systems, Inc", "CISCO" }, { 0xC0255C, "Cisco Systems, Inc", "CISCO" }, { 0x885A92, "Cisco Systems, Inc", "CISCO" }, { 0xE4C722, "Cisco Systems, Inc", "CISCO" }, { 0xC07BBC, "Cisco Systems, Inc", "CISCO" }, { 0x0090F2, "Cisco Systems, Inc", "CISCO" }, { 0x00173B, "Cisco Systems, Inc", "CISCO" }, { 0x00400B, "Cisco Systems, Inc", "CISCO" }, { 0x006009, "Cisco Systems, Inc", "CISCO" }, { 0x006047, "Cisco Systems, Inc", "CISCO" }, { 0x0006C1, "Cisco Systems, Inc", "CISCO" }, { 0x00E014, "Cisco Systems, Inc", "CISCO" }, { 0x00E01E, "Cisco Systems, Inc", "CISCO" }, { 0xACF2C5, "Cisco Systems, Inc", "CISCO" }, { 0xCCC760, "Apple, Inc.", "APPLE" }, { 0x087402, "Apple, Inc.", "APPLE" }, { 0x285AEB, "Apple, Inc.", "APPLE" }, { 0x28F076, "Apple, Inc.", "APPLE" }, { 0x84285A, "Saffron Solutions Inc", "SAFFRON-SOLUTIONS" }, { 0x80A1AB, "Intellisis", "INTELLISIS" }, { 0x44D884, "Apple, Inc.", "APPLE" }, { 0xEC852F, "Apple, Inc.", "APPLE" }, { 0x286ABA, "Apple, Inc.", "APPLE" }, { 0x705681, "Apple, Inc.", "APPLE" }, { 0x7CD1C3, "Apple, Inc.", "APPLE" }, { 0xF0DCE2, "Apple, Inc.", "APPLE" }, { 0xB065BD, "Apple, Inc.", "APPLE" }, { 0xA82066, "Apple, Inc.", "APPLE" }, { 0xBC6778, "Apple, Inc.", "APPLE" }, { 0x68967B, "Apple, Inc.", "APPLE" }, { 0x848506, "Apple, Inc.", "APPLE" }, { 0xB4F0AB, "Apple, Inc.", "APPLE" }, { 0x10DDB1, "Apple, Inc.", "APPLE" }, { 0x04F7E4, "Apple, Inc.", "APPLE" }, { 0x34C059, "Apple, Inc.", "APPLE" }, { 0xF0D1A9, "Apple, Inc.", "APPLE" }, { 0xF82793, "Apple, Inc.", "APPLE" }, { 0xACFDEC, "Apple, Inc.", "APPLE" }, { 0xD0E140, "Apple, Inc.", "APPLE" }, { 0xF832E4, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x8C7C92, "Apple, Inc.", "APPLE" }, { 0x7831C1, "Apple, Inc.", "APPLE" }, { 0xF437B7, "Apple, Inc.", "APPLE" }, { 0x54AE27, "Apple, Inc.", "APPLE" }, { 0x6476BA, "Apple, Inc.", "APPLE" }, { 0x84B153, "Apple, Inc.", "APPLE" }, { 0x783A84, "Apple, Inc.", "APPLE" }, { 0x2CBE08, "Apple, Inc.", "APPLE" }, { 0x24E314, "Apple, Inc.", "APPLE" }, { 0x0010FF, "Cisco Systems, Inc", "CISCO" }, { 0x34BDC8, "Cisco Systems, Inc", "CISCO" }, { 0x54A274, "Cisco Systems, Inc", "CISCO" }, { 0x5897BD, "Cisco Systems, Inc", "CISCO" }, { 0x046C9D, "Cisco Systems, Inc", "CISCO" }, { 0x60FEC5, "Apple, Inc.", "APPLE" }, { 0x00A040, "Apple, Inc.", "APPLE" }, { 0xBC3BAF, "Apple, Inc.", "APPLE" }, { 0x786C1C, "Apple, Inc.", "APPLE" }, { 0x041552, "Apple, Inc.", "APPLE" }, { 0x38484C, "Apple, Inc.", "APPLE" }, { 0x701124, "Apple, Inc.", "APPLE" }, { 0xC86F1D, "Apple, Inc.", "APPLE" }, { 0x685B35, "Apple, Inc.", "APPLE" }, { 0x380F4A, "Apple, Inc.", "APPLE" }, { 0x3010E4, "Apple, Inc.", "APPLE" }, { 0x04DB56, "Apple, Inc.", "APPLE" }, { 0x881FA1, "Apple, Inc.", "APPLE" }, { 0x04E536, "Apple, Inc.", "APPLE" }, { 0x109ADD, "Apple, Inc.", "APPLE" }, { 0x40A6D9, "Apple, Inc.", "APPLE" }, { 0x7CF05F, "Apple, Inc.", "APPLE" }, { 0xA4B197, "Apple, Inc.", "APPLE" }, { 0x0C74C2, "Apple, Inc.", "APPLE" }, { 0x403004, "Apple, Inc.", "APPLE" }, { 0x4860BC, "Apple, Inc.", "APPLE" }, { 0x50EAD6, "Apple, Inc.", "APPLE" }, { 0x28E02C, "Apple, Inc.", "APPLE" }, { 0x60C547, "Apple, Inc.", "APPLE" }, { 0x7C11BE, "Apple, Inc.", "APPLE" }, { 0x003EE1, "Apple, Inc.", "APPLE" }, { 0x68D93C, "Apple, Inc.", "APPLE" }, { 0x2CF0EE, "Apple, Inc.", "APPLE" }, { 0x84788B, "Apple, Inc.", "APPLE" }, { 0x6C94F8, "Apple, Inc.", "APPLE" }, { 0x703EAC, "Apple, Inc.", "APPLE" }, { 0xC01ADA, "Apple, Inc.", "APPLE" }, { 0x34363B, "Apple, Inc.", "APPLE" }, { 0xC81EE7, "Apple, Inc.", "APPLE" }, { 0x9CFC01, "Apple, Inc.", "APPLE" }, { 0x000D93, "Apple, Inc.", "APPLE" }, { 0x001CB3, "Apple, Inc.", "APPLE" }, { 0x64B9E8, "Apple, Inc.", "APPLE" }, { 0x34159E, "Apple, Inc.", "APPLE" }, { 0x58B035, "Apple, Inc.", "APPLE" }, { 0xF0B479, "Apple, Inc.", "APPLE" }, { 0x141357, "ATP Electronics, Inc.", "ATP-ELECTRONICS" }, { 0xF44B2A, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x3C8CF8, "TRENDnet, Inc.", "TRENDNET" }, { 0x78D6B2, "Toshiba", "TOSHIBA" }, { 0xC04A09, "Zhejiang Everbright Communication Equip. Co,. Ltd", "ZHEJIANG-EVERBRIGHT-COMMUNICATION-EQUIP" }, { 0xF00D5C, "JinQianMao Technology Co.,Ltd.", "JINQIANMAO" }, { 0x2C081C, "OVH", "OVH" }, { 0x30E090, "Linctronix Ltd,", "LINCTRONIX" }, { 0x70BF3E, "Charles River Laboratories", "CHARLES-RIVER-LABORATORIES" }, { 0xD848EE, "Hangzhou Xueji Technology Co., Ltd.", "HANGZHOU-XUEJI" }, { 0x88C242, "Poynt Co.", "POYNT" }, { 0xE8343E, "Beijing Infosec Technologies Co., LTD.", "BEIJING-INFOSEC-TECHNOLOGIES" }, { 0xC4ADF1, "GOPEACE Inc.", "GOPEACE" }, { 0x58F496, "Source Chain", "SOURCE-CHAIN" }, { 0x80B709, "Viptela, Inc", "VIPTELA" }, { 0x1C60DE, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x741865, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x0084ED, "Private", "PRIVATE" }, { 0xDCDC07, "TRP Systems BV", "TRP" }, { 0x080A4E, "Planet Bingo® — 3rd Rock Gaming®", "PLANET-BINGO®-—-3RD-ROCK-GAMING®" }, { 0x0C1A10, "Acoustic Stream", "ACOUSTIC-STREAM" }, { 0xE4A387, "Control Solutions LLC", "CONTROL-SOLUTIONS-LLC" }, { 0xDC82F6, "iPort", "IPORT" }, { 0xC49E41, "G24 Power Limited", "G24-POWER" }, { 0xD03E5C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC8A9FC, "Goyoo Networks Inc.", "GOYOO-NETWORKS" }, { 0xC49FF3, "Mciao Technologies, Inc.", "MCIAO-TECHNOLOGIES" }, { 0x7C2BE1, "Shenzhen Ferex Electrical Co.,Ltd", "SHENZHEN-FEREX-ELECTRICAL" }, { 0x30FFF6, "HangZhou KuoHeng Technology Co.,ltd", "HANGZHOU-KUOHENG" }, { 0x5853C0, "Beijing Guang Runtong Technology Development Company co.,Ltd", "BEIJING-GUANG-RUNTONG-DEVELOPMENT-COMPANY" }, { 0x5031AD, "ABB Global Industries and Services Private Limited", "ABB-GLOBAL-INDUSTRIES-AND-SERVICES-PRIVATE" }, { 0x30A243, "Shenzhen Prifox Innovation Technology Co., Ltd.", "SHENZHEN-PRIFOX-INNOVATION" }, { 0x2CA539, "Parallel Wireless, Inc", "PARALLEL-WIRELESS" }, { 0xFC335F, "Polyera", "POLYERA" }, { 0xA8C87F, "Roqos, Inc.", "ROQOS" }, { 0xC025A2, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x7853F2, "ROXTON Ltd.", "ROXTON" }, { 0xACBC32, "Apple, Inc.", "APPLE" }, { 0x94BBAE, "Husqvarna AB", "HUSQVARNA-AB" }, { 0xAC8995, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xF898B9, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x1C497B, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x2CCF58, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x54FF82, "Davit Solution co.", "DAVIT-SOLUTION" }, { 0xD445E8, "Jiangxi Hongpai Technology Co., Ltd.", "JIANGXI-HONGPAI" }, { 0x847973, "Shanghai Baud Data Communication Co.,Ltd.", "SHANGHAI-BAUD-DATA-COMMUNICATION" }, { 0x906F18, "Private", "PRIVATE" }, { 0x881B99, "SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD.", "SHENZHEN-XIN-FEI-JIA" }, { 0x681295, "Lupine Lighting Systems GmbH", "LUPINE-LIGHTING" }, { 0x649A12, "P2 Mobile Technologies Limited", "P2-MOBILE-TECHNOLOGIES" }, { 0xE4C2D1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDC3CF6, "Atomic Rules LLC", "ATOMIC-RULES-LLC" }, { 0x3C3178, "Qolsys Inc.", "QOLSYS" }, { 0x083A5C, "Junilab, Inc.", "JUNILAB" }, { 0x4CAE31, "ShengHai Electronics (Shenzhen) Ltd", "SHENGHAI-ELECTRONICS-SHENZHEN" }, { 0xF0D657, "ECHOSENS", "ECHOSENS" }, { 0x24693E, "innodisk Corporation", "INNODISK" }, { 0xE48D8C, "Routerboard.com", "ROUTERBOARD-COM" }, { 0xC0DC6A, "Qingdao Eastsoft Communication Technology Co.,LTD", "QINGDAO-EASTSOFT-COMMUNICATION" }, { 0x6459F8, "Vodafone Omnitel B.V.", "VODAFONE-OMNITEL" }, { 0x082CB0, "Network Instruments", "NETWORK-INSTRUMENTS" }, { 0x485073, "Microsoft Corporation", "MICROSOFT" }, { 0x3CA31A, "Oilfind International LLC", "OILFIND-LLC" }, { 0xA424DD, "Cambrionix Ltd", "CAMBRIONIX" }, { 0x88A2D7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD89A34, "Beijing SHENQI Technology Co., Ltd.", "BEIJING-SHENQI" }, { 0x1CADD1, "Bosung Electronics Co., Ltd.", "BOSUNG-ELECTRONICS" }, { 0x24E5AA, "Philips Oral Healthcare, Inc.", "PHILIPS-ORAL-HEALTHCARE" }, { 0x88CBA5, "Suzhou Torchstar Intelligent Technology Co.,Ltd", "SUZHOU-TORCHSTAR-INTELLIGENT" }, { 0x046169, "MEDIA GLOBAL LINKS CO., LTD.", "MEDIA-GLOBAL-LINKS" }, { 0xAC562C, "LAVA INTERNATIONAL(H.K) LIMITED", "LAVA-H-K" }, { 0x3CCE15, "Mercedes-Benz USA, LLC", "MERCEDES-BENZ-USA-LLC" }, { 0x84DF19, "Chuango Security Technology Corporation", "CHUANGO-SECURITY" }, { 0x3C4711, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x245BF0, "Liteon, Inc.", "LITEON" }, { 0xFCFEC2, "Invensys Controls UK Limited", "INVENSYS-CONTROLS-UK" }, { 0xE8F2E2, "LG Innotek", "LG-INNOTEK" }, { 0xAC676F, "Electrocompaniet A.S.", "ELECTROCOMPANIET-A-S" }, { 0x4CB82C, "Cambridge Mobile Telematics, Inc.", "CAMBRIDGE-MOBILE-TELEMATICS" }, { 0xF0224E, "Esan electronic co.", "ESAN" }, { 0xB0411D, "ITTIM Technologies", "ITTIM-TECHNOLOGIES" }, { 0x7CB25C, "Acacia Communications", "ACACIA-COMMUNICATION" }, { 0x78EB39, "Instituto Nacional de Tecnología Industrial", "INSTITUTO-NACIONAL-DE-TECNOLOGíA-INDUSTRIAL" }, { 0x7CC95A, "EMC", "EMC" }, { 0xECEED8, "ZTLX Network Technology Co.,Ltd", "ZTLX-NETWORK" }, { 0xF85B9C, "SB SYSTEMS Co.,Ltd", "SB" }, { 0x7CA237, "King Slide Technology CO., LTD.", "KING-SLIDE" }, { 0x300EE3, "Aquantia Corporation", "AQUANTIA" }, { 0x847303, "Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd.", "LETV-MOBILE-AND-INTELLIGENT-INFORMATION-BEIJING" }, { 0xB0495F, "OMRON HEALTHCARE Co., Ltd.", "OMRON-HEALTHCARE" }, { 0xBC6E64, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xF44713, "Leading Public Performance Co., Ltd.", "LEADING-PUBLIC-PERFORMANCE" }, { 0xD4522A, "TangoWiFi.com", "TANGOWIFI-COM" }, { 0xB0ECE1, "Private", "PRIVATE" }, { 0x407FE0, "Glory Star Technics (ShenZhen) Limited", "GLORY-STAR-TECHNICS-SHENZHEN" }, { 0xBC5C4C, "ELECOM CO.,LTD.", "ELECOM" }, { 0x6C5940, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x6CA75F, "zte corporation", "ZTE" }, { 0xC8C50E, "Shenzhen Primestone Network Technologies.Co., Ltd.", "SHENZHEN-PRIMESTONE-NETWORK-TECHNOLOGIES" }, { 0x9CBEE0, "Biosoundlab Co., Ltd.", "BIOSOUNDLAB" }, { 0x5C5B35, "Mist Systems, Inc.", "MIST" }, { 0xE807BF, "SHENZHEN BOOMTECH INDUSTRY CO.,LTD", "SHENZHEN-BOOMTECH-INDUSTRY" }, { 0xE8162B, "IDEO Security Co., Ltd.", "IDEO-SECURITY" }, { 0x709F2D, "zte corporation", "ZTE" }, { 0xECE2FD, "SKG Electric Group(Thailand) Co., Ltd.", "SKG-ELECTRIC-GROUP-THAILAND" }, { 0x88E603, "Avotek corporation", "AVOTEK" }, { 0x74E28C, "Microsoft Corporation", "MICROSOFT" }, { 0x94F19E, "HUIZHOU MAORONG INTELLIGENT TECHNOLOGY CO.,LTD", "HUIZHOU-MAORONG-INTELLIGENT" }, { 0xC4924C, "KEISOKUKI CENTER CO.,LTD.", "KEISOKUKI-CENTER" }, { 0xE4F939, "Minxon Hotel Technology INC.", "MINXON-HOTEL" }, { 0x38C70A, "WiFiSong", "WIFISONG" }, { 0x60E6BC, "Sino-Telecom Technology Co.,Ltd.", "SINO-TELECOM" }, { 0x486EFB, "Davit System Technology Co., Ltd.", "DAVIT-SYSTEM" }, { 0x340A22, "TOP-ACCESS ELECTRONICS CO LTD", "TOP-ACCESS-ELECTRONICS" }, { 0xB008BF, "Vital Connect, Inc.", "VITAL-CONNECT" }, { 0x485415, "NET RULES TECNOLOGIA EIRELI", "NET-RULES-TECNOLOGIA-EIRELI" }, { 0x70C76F, "INNO S", "INNO-S" }, { 0x704E66, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x409B0D, "Shenzhen Yourf Kwan Industrial Co., Ltd", "SHENZHEN-YOURF-KWAN-INDUSTRIAL" }, { 0xC40880, "Shenzhen UTEPO Tech Co., Ltd.", "SHENZHEN-UTEPO-TECH" }, { 0x94C038, "Tallac Networks", "TALLAC-NETWORKS" }, { 0x801967, "Shanghai Reallytek Information Technology Co.,Ltd", "SHANGHAI-REALLYTEK-INFORMATION" }, { 0x6836B5, "DriveScale, Inc.", "DRIVESCALE" }, { 0x2CF7F1, "Seeed Technology Inc.", "SEEED" }, { 0xF88479, "Yaojin Technology(Shenzhen)Co.,Ltd", "YAOJIN-SHENZHEN" }, { 0x4C48DA, "Beijing Autelan Technology Co.,Ltd", "BEIJING-AUTELAN" }, { 0x90179B, "Nanomegas", "NANOMEGAS" }, { 0x3077CB, "Maike Industry(Shenzhen)CO.,LTD", "MAIKE-INDUSTRY-SHENZHEN" }, { 0x3428F0, "ATN International Limited", "ATN" }, { 0xEC3C5A, "SHEN ZHEN HENG SHENG HUI DIGITAL TECHNOLOGY CO.,LTD", "SHEN-ZHEN-HENG-SHENG-HUI-DIGITAL" }, { 0x8C0551, "Koubachi AG", "KOUBACHI" }, { 0xD88466, "Extreme Networks", "EXTREME-NETWORKS" }, { 0xE887A3, "Loxley Public Company Limited", "LOXLEY-PUBLIC-COMPANY" }, { 0x10FACE, "Reacheng Communication Technology Co.,Ltd", "REACHENG-COMMUNICATION" }, { 0xD8CB8A, "Micro-Star INTL CO., LTD.", "MICRO-STAR-INTL" }, { 0xA8D0E3, "Systech Electronics Ltd.", "SYSTECH-ELECTRONICS" }, { 0x8463D6, "Microsoft Corporation", "MICROSOFT" }, { 0x78B3B9, "ShangHai sunup lighting CO.,LTD", "SHANGHAI-SUNUP-LIGHTING" }, { 0xF4EE14, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x186571, "Top Victory Electronics (Taiwan) Co., Ltd.", "TOP-VICTORY-ELECTRONICS-TAIWAN" }, { 0xF8BC41, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x8486F3, "Greenvity Communications", "GREENVITY-COMMUNICATION" }, { 0x205CFA, "Yangzhou ChangLian Network Technology Co,ltd.", "YANGZHOU-CHANGLIAN-NETWORK" }, { 0x8C18D9, "Shenzhen RF Technology Co., Ltd", "SHENZHEN-RF" }, { 0x6099D1, "Vuzix / Lenovo", "VUZIX-/-LENOVO" }, { 0x34F6D2, "Panasonic Taiwan Co.,Ltd.", "PANASONIC-TAIWAN" }, { 0xDC2F03, "Step forward Group Co., Ltd.", "STEP-FORWARD-GROUP" }, { 0x582136, "KMB systems, s.r.o.", "KMB-S-R-O" }, { 0x00AEFA, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x5CAAFD, "Sonos, Inc.", "SONOS" }, { 0x8CDF9D, "NEC Corporation", "NEC" }, { 0xF8E903, "D-Link International", "D-LINK" }, { 0x6828F6, "Vubiq Networks, Inc.", "VUBIQ-NETWORKS" }, { 0x44356F, "Neterix", "NETERIX" }, { 0x742EFC, "DirectPacket Research, Inc,", "DIRECTPACKET-RESEARCH" }, { 0x20C06D, "SHENZHEN SPACETEK TECHNOLOGY CO.,LTD", "SHENZHEN-SPACETEK" }, { 0x3CB792, "Hitachi Maxell, Ltd., Optronics Division", "HITACHI-MAXELL-OPTRONICS-DIVISION" }, { 0x7491BD, "Four systems Co.,Ltd.", "FOUR" }, { 0xD43266, "Fike Corporation", "FIKE" }, { 0x948E89, "INDUSTRIAS UNIDAS SA DE CV", "INDUSTRIAS-UNIDAS-DE-CV" }, { 0x9405B6, "Liling FullRiver Electronics & Technology Ltd", "LILING-FULLRIVER-ELECTRONICS" }, { 0x382C4A, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x74547D, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xD48F33, "Microsoft Corporation", "MICROSOFT" }, { 0x1CA2B1, "ruwido austria gmbh", "RUWIDO-AUSTRIA" }, { 0x945493, "Rigado, LLC", "RIGADO-LLC" }, { 0x34B7FD, "Guangzhou Younghead Electronic Technology Co.,Ltd", "GUANGZHOU-YOUNGHEAD" }, { 0x384B76, "AIRTAME ApS", "AIRTAME-APS" }, { 0x1C5216, "DONGGUAN HELE ELECTRONICS CO., LTD", "DONGGUAN-HELE-ELECTRONICS" }, { 0x34029B, "CloudBerry Technologies Private Limited", "CLOUDBERRY-TECHNOLOGIES-PRIVATE" }, { 0x70AF25, "Nishiyama Industry Co.,LTD.", "NISHIYAMA-INDUSTRY" }, { 0xB47C29, "Shenzhen Guzidi Technology Co.,Ltd", "SHENZHEN-GUZIDI" }, { 0x2C1A31, "Electronics Company Limited", "ELECTRONICS-COMPANY" }, { 0x6C198F, "D-Link International", "D-LINK" }, { 0x60C1CB, "Fujian Great Power PLC Equipment Co.,Ltd", "FUJIAN-GREAT-POWER-PLC-EQUIPMENT" }, { 0x686E48, "Prophet Electronic Technology Corp.,Ltd", "PROPHET" }, { 0x30F7D7, "Thread Technology Co., Ltd", "THREAD" }, { 0x3808FD, "Silca Spa", "SILCA-SPA" }, { 0x7C2587, "chaowifi.com", "CHAOWIFI-COM" }, { 0x2012D5, "Scientech Materials Corporation", "SCIENTECH-MATERIALS" }, { 0xDC3979, "Skyport Systems", "SKYPORT" }, { 0xEC1D7F, "zte corporation", "ZTE" }, { 0xAC11D3, "Suzhou HOTEK Video Technology Co. Ltd", "SUZHOU-HOTEK-VIDEO" }, { 0x304225, "BURG-WÄCHTER KG", "BURG-WÄCHTER" }, { 0x1C4840, "IMS Messsysteme GmbH", "IMS-MESSSYSTEME" }, { 0xF42853, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0x3C46D8, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x6C0273, "Shenzhen Jin Yun Video Equipment Co., Ltd.", "SHENZHEN-JIN-YUN-VIDEO-EQUIPMENT" }, { 0xF0761C, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xF42833, "MMPC Inc.", "MMPC" }, { 0x244F1D, "iRule LLC", "IRULE-LLC" }, { 0xBC9CC5, "Beijing Huafei Technology Co., Ltd.", "BEIJING-HUAFEI" }, { 0x505065, "TAKT Corporation", "TAKT" }, { 0xA4A4D3, "Bluebank Communication Technology Co.Ltd", "BLUEBANK-COMMUNICATION" }, { 0x74F413, "Maxwell Forest", "MAXWELL-FOREST" }, { 0x34F0CA, "Shenzhen Linghangyuan Digital Technology Co.,Ltd.", "SHENZHEN-LINGHANGYUAN-DIGITAL" }, { 0x30B5F1, "Aitexin Technology Co., Ltd", "AITEXIN" }, { 0x882950, "Dalian Netmoon Tech Develop Co.,Ltd", "DALIAN-NETMOON-TECH-DEVELOP" }, { 0x08CD9B, "samtec automotive electronics & software GmbH", "SAMTEC-AUTOMOTIVE-ELECTRONICS-SOFTWARE" }, { 0x28FCF6, "Shenzhen Xin KingBrand enterprises Co.,Ltd", "SHENZHEN-XIN-KINGBRAND-ENTERPRISES" }, { 0x4C26E7, "Welgate Co., Ltd.", "WELGATE" }, { 0x94D60E, "shenzhen yunmao information technologies co., ltd", "SHENZHEN-YUNMAO-INFORMATION-TECHNOLOGIES" }, { 0x7C6AC3, "GatesAir, Inc", "GATESAIR" }, { 0x3CCD5A, "Technische Alternative GmbH", "TECHNISCHE-ALTERNATIVE" }, { 0x604826, "Newbridge Technologies Int. Ltd.", "NEWBRIDGE-TECHNOLOGIES-INT" }, { 0x24D13F, "MEXUS CO.,LTD", "MEXUS" }, { 0x702C1F, "Wisol", "WISOL" }, { 0x9CBD9D, "SkyDisk, Inc.", "SKYDISK" }, { 0x74C621, "Zhejiang Hite Renewable Energy Co.,LTD", "ZHEJIANG-HITE-RENEWABLE-ENERGY" }, { 0x44C306, "SIFROM Inc.", "SIFROM" }, { 0x54A31B, "Shenzhen Linkworld Technology Co,.LTD", "SHENZHEN-LINKWORLD" }, { 0x5CE7BF, "New Singularity International Technical Development Co.,Ltd", "NEW-SINGULARITY-TECHNICAL-DEVELOPMENT" }, { 0x1CEEE8, "Ilshin Elecom", "ILSHIN-ELECOM" }, { 0x6C641A, "Penguin Computing", "PENGUIN-COMPUTING" }, { 0xE036E3, "Stage One International Co., Ltd.", "STAGE-ONE" }, { 0x34DE34, "zte corporation", "ZTE" }, { 0x34466F, "HiTEM Engineering", "HITEM-ENGINEERING" }, { 0x2C39C1, "Ciena Corporation", "CIENA" }, { 0x6C2C06, "OOO NPP Systemotechnika-NN", "OOO-NPP-SYSTEMOTECHNIKA-NN" }, { 0x54EE75, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0x60812B, "Custom Control Concepts", "CUSTOM-CONTROL-CONCEPTS" }, { 0xF86601, "Suzhou Chi-tek information technology Co., Ltd", "SUZHOU-CHI-TEK-INFORMATION" }, { 0xFC4AE9, "Castlenet Technology Inc.", "CASTLENET" }, { 0x34E42A, "Automatic Bar Controls Inc.", "AUTOMATIC-BAR-CONTROLS" }, { 0x20A787, "Bointec Taiwan Corporation Limited", "BOINTEC-TAIWAN" }, { 0xA481EE, "Nokia Corporation", "NOKIA" }, { 0x54C80F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD42122, "Sercomm Corporation", "SERCOMM" }, { 0xEC1766, "Research Centre Module", "RESEARCH-CENTRE-MODULE" }, { 0x7CFF62, "Huizhou Super Electron Technology Co.,Ltd.", "HUIZHOU-SUPER-ELECTRON" }, { 0xA0D12A, "AXPRO Technology Inc.", "AXPRO" }, { 0x30C750, "MIC Technology Group", "MIC-GROUP" }, { 0x442938, "NietZsche enterprise Co.Ltd.", "NIETZSCHE" }, { 0xD881CE, "AHN INC.", "AHN" }, { 0xE0D31A, "EQUES Technology Co., Limited", "EQUES" }, { 0x9C3EAA, "EnvyLogic Co.,Ltd.", "ENVYLOGIC" }, { 0x909864, "Impex-Sat GmbH&Co KG", "IMPEX-SAT-AMP" }, { 0xDCE578, "Experimental Factory of Scientific Engineering and Special Design Department", "EXPERIMENTAL-FACTORY-OF-SCIENTIFIC-ENGINEERING-AND-SPECIAL-DESIGN-DEPARTMENT" }, { 0x949F3F, "Optek Digital Technology company limited", "OPTEK-DIGITAL-COMPANY" }, { 0x987770, "Pep Digital Technology (Guangzhou) Co., Ltd", "PEP-DIGITAL-GUANGZHOU" }, { 0x4411C2, "Telegartner Karl Gartner GmbH", "TELEGARTNER-KARL-GARTNER" }, { 0x9451BF, "Hyundai ESG", "HYUNDAI-ESG" }, { 0x4C7F62, "Nokia Corporation", "NOKIA" }, { 0xF03FF8, "R L Drake", "R-L-DRAKE" }, { 0xB0C554, "D-Link International", "D-LINK" }, { 0x54D163, "MAX-TECH,INC", "MAX-TECH" }, { 0xE41218, "ShenZhen Rapoo Technology Co., Ltd.", "SHENZHEN-RAPOO" }, { 0x2C8A72, "HTC Corporation", "HTC" }, { 0x4486C1, "Siemens Low Voltage & Products", "SIEMENS-LOW-VOLTAGE-PRODUCTS" }, { 0xC83168, "eZEX corporation", "EZEX" }, { 0xF84A73, "EUMTECH CO., LTD", "EUMTECH" }, { 0x880F10, "Huami Information Technology Co.,Ltd.", "HUAMI-INFORMATION" }, { 0x24336C, "Private", "PRIVATE" }, { 0xC46BB4, "myIDkey", "MYIDKEY" }, { 0xECE512, "tado GmbH", "TADO" }, { 0x30918F, "Technicolor", "TECHNICOLOR" }, { 0xFC09F6, "GUANGDONG TONZE ELECTRIC CO.,LTD", "GUANGDONG-TONZE-ELECTRIC" }, { 0x687848, "Westunitis Co., Ltd.", "WESTUNITIS" }, { 0xA8B9B3, "ESSYS", "ESSYS" }, { 0x64B370, "PowerComm Solutions LLC", "POWERCOMM-SOLUTIONS-LLC" }, { 0xD86595, "Toy's Myth Inc.", "TOY-S-MYTH" }, { 0xD8DD5F, "BALMUDA Inc.", "BALMUDA" }, { 0x88D962, "Canopus Systems US LLC", "CANOPUS-US-LLC" }, { 0x24C848, "mywerk system GmbH", "MYWERK-SYSTEM" }, { 0x2C18AE, "Trend Electronics Co., Ltd.", "TREND-ELECTRONICS" }, { 0xE097F2, "Atomax Inc.", "ATOMAX" }, { 0x90F3B7, "Kirisun Communications Co., Ltd.", "KIRISUN-COMMUNICATION" }, { 0xDCAD9E, "GreenPriz", "GREENPRIZ" }, { 0xB4827B, "AKG Acoustics GmbH", "AKG-ACOUSTICS" }, { 0x908C44, "H.K ZONGMU TECHNOLOGY CO., LTD.", "H-K-ZONGMU" }, { 0x0C473D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x4C5E0C, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x9CF8DB, "shenzhen eyunmei technology co,.ltd", "SHENZHEN-EYUNMEI" }, { 0x644214, "Swisscom Energy Solutions AG", "SWISSCOM-ENERGY-SOLUTIONS" }, { 0x8CCDA2, "ACTP, Inc.", "ACTP" }, { 0xCC720F, "Viscount Systems Inc.", "VISCOUNT" }, { 0x906717, "Alphion India Private Limited", "ALPHION-INDIA-PRIVATE" }, { 0x24050F, "MTN Electronic Co. Ltd", "MTN" }, { 0x40B6B1, "SUNGSAM CO,.Ltd", "SUNGSAM" }, { 0x98FF6A, "OTEC(Shanghai)Technology Co.,Ltd.", "OTEC-SHANGHAI" }, { 0xAC6BAC, "Jenny Science AG", "JENNY-SCIENCE" }, { 0x707C18, "ADATA Technology Co., Ltd", "ADATA" }, { 0xFC4B1C, "INTERSENSOR S.R.L.", "INTERSENSOR-S-R-L" }, { 0x1879A2, "GMJ ELECTRIC LIMITED", "GMJ-ELECTRIC" }, { 0xE0C86A, "SHENZHEN TW-SCIE Co., Ltd", "SHENZHEN-TW-SCIE" }, { 0x80BAE6, "Neets", "NEETS" }, { 0x3C18A0, "Luxshare Precision Industry Co.,Ltd.", "LUXSHARE-PRECISION-INDUSTRY" }, { 0x041A04, "WaveIP", "WAVEIP" }, { 0x50206B, "Emerson Climate Technologies Transportation Solutions", "EMERSON-CLIMATE-TECHNOLOGIES-TRANSPORTATION-SOLUTIONS" }, { 0xC8EE75, "Pishion International Co. Ltd", "PISHION" }, { 0xCC3429, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x407496, "aFUN TECHNOLOGY INC.", "AFUN" }, { 0x18C8E7, "Shenzhen Hualistone Technology Co.,Ltd", "SHENZHEN-HUALISTONE" }, { 0x3CF748, "Shenzhen Linsn Technology Development Co.,Ltd", "SHENZHEN-LINSN-DEVELOPMENT" }, { 0x9C039E, "Beijing Winchannel Software Technology Co., Ltd", "BEIJING-WINCHANNEL-SOFTWARE" }, { 0xF8A963, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x48A2B7, "Kodofon JSC", "KODOFON-JSC" }, { 0x443C9C, "Pintsch Tiefenbach GmbH", "PINTSCH-TIEFENBACH" }, { 0xF81CE5, "Telefonbau Behnke GmbH", "TELEFONBAU-BEHNKE" }, { 0xBC2D98, "ThinGlobal LLC", "THINGLOBAL-LLC" }, { 0x7C72E4, "Unikey Technologies", "UNIKEY-TECHNOLOGIES" }, { 0x181BEB, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xCC7498, "Filmetrics Inc.", "FILMETRICS" }, { 0x7C6AB3, "IBC TECHNOLOGIES INC.", "IBC-TECHNOLOGIES" }, { 0xF0321A, "Mita-Teknik A/S", "MITA-TEKNIK-A/S" }, { 0x4CD7B6, "Helmer Scientific", "HELMER-SCIENTIFIC" }, { 0x746F3D, "Contec GmbH", "CONTEC" }, { 0x483D32, "Syscor Controls & Automation", "SYSCOR-CONTROLS-AMP-AUTOMATION" }, { 0x9031CD, "Onyx Healthcare Inc.", "ONYX-HEALTHCARE" }, { 0xA0E453, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x404A18, "Addrek Smart Solutions", "ADDREK-SMART-SOLUTIONS" }, { 0xC4C0AE, "MIDORI ELECTRONIC CO., LTD.", "MIDORI" }, { 0x90837A, "General Electric Water & Process Technologies", "GENERAL-ELECTRIC-WATER-PROCESS-TECHNOLOGIES" }, { 0x089758, "Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary", "SHENZHEN-STRONG-RISING-ELECTRONICS-DONGGUAN-SUBSIDIARY" }, { 0xB424E7, "Codetek Technology Co.,Ltd", "CODETEK" }, { 0x44EE30, "Budelmann Elektronik GmbH", "BUDELMANN-ELEKTRONIK" }, { 0x38DBBB, "Sunbow Telecom Co., Ltd.", "SUNBOW-TELECOM" }, { 0x2493CA, "Voxtronic Technology Computer-Systeme GmbH", "VOXTRONIC--SYSTEME" }, { 0x688AB5, "EDP Servicos", "EDP-SERVICOS" }, { 0x407A80, "Nokia Corporation", "NOKIA" }, { 0xF06130, "Advantage Pharmacy Services, LLC", "ADVANTAGE-PHARMACY-SERVICES-LLC" }, { 0xD481CA, "iDevices, LLC", "IDEVICES-LLC" }, { 0xB898F7, "Gionee Communication Equipment Co,Ltd.ShenZhen", "GIONEE-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0xC0F1C4, "Pacidal Corporation Ltd.", "PACIDAL" }, { 0xD858D7, "CZ.NIC, z.s.p.o.", "CZ-NIC-Z-S-P-O" }, { 0x10B713, "Private", "PRIVATE" }, { 0xE8E770, "Warp9 Tech Design, Inc.", "WARP9-TECH-DESIGN" }, { 0x78CA5E, "ELNO", "ELNO" }, { 0x98FFD0, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x50A054, "Actineon", "ACTINEON" }, { 0x48EE86, "UTStarcom (China) Co.,Ltd", "UTSTARCOM-CHINA" }, { 0x5056A8, "Jolla Ltd", "JOLLA" }, { 0xD09D0A, "LINKCOM", "LINKCOM" }, { 0x54FB58, "WISEWARE, Lda", "WISEWARE-LDA" }, { 0xC0A0BB, "D-Link International", "D-LINK" }, { 0x28A1EB, "ETEK TECHNOLOGY (SHENZHEN) CO.,LTD", "ETEK-SHENZHEN" }, { 0x4CCBF5, "zte corporation", "ZTE" }, { 0xF0F5AE, "Adaptrum Inc.", "ADAPTRUM" }, { 0xF42896, "SPECTO PAINEIS ELETRONICOS LTDA", "SPECTO-PAINEIS-ELETRONICOS-LTDA" }, { 0x1C7B21, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x9C2840, "Discovery Technology,LTD..", "DISCOVERY" }, { 0xF89FB8, "YAZAKI Energy System Corporation", "YAZAKI-ENERGY-SYSTEM" }, { 0xF037A1, "Huike Electronics (SHENZHEN) CO., LTD.", "HUIKE-ELECTRONICS-SHENZHEN" }, { 0x6CD1B0, "WING SING ELECTRONICS HONG KONG LIMITED", "WING-SING-ELECTRONICS-HONG-KONG" }, { 0xA4F522, "CHOFU SEISAKUSHO CO.,LTD", "CHOFU-SEISAKUSHO" }, { 0x7CE56B, "ESEN Optoelectronics Technology Co.,Ltd.", "ESEN-OPTOELECTRONICS" }, { 0xCC4703, "Intercon Systems Co., Ltd.", "INTERCON" }, { 0x5C3327, "Spazio Italia srl", "SPAZIO-ITALIA-SRL" }, { 0xF85BC9, "M-Cube Spa", "M-CUBE-SPA" }, { 0x8005DF, "Montage Technology Group Limited", "MONTAGE-GROUP" }, { 0x78E8B6, "zte corporation", "ZTE" }, { 0x041B94, "Host Mobility AB", "HOST-MOBILITY-AB" }, { 0xCC2A80, "Micro-Biz intelligence solutions Co.,Ltd", "MICRO-BIZ-INTELLIGENCE-SOLUTIONS" }, { 0x3859F8, "MindMade Sp. z o.o.", "MINDMADE-SP-Z-O-O" }, { 0x5C026A, "Applied Vision Corporation", "APPLIED-VISION" }, { 0x7CBD06, "AE REFUsol", "AE-REFUSOL" }, { 0x94BA56, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0x2894AF, "Samhwa Telecom", "SAMHWA-TELECOM" }, { 0x740EDB, "Optowiz Co., Ltd", "OPTOWIZ" }, { 0x00A2FF, "abatec group AG", "ABATEC-GROUP" }, { 0xD095C7, "Pantech Co., Ltd.", "PANTECH" }, { 0xD02C45, "littleBits Electronics, Inc.", "LITTLEBITS-ELECTRONICS" }, { 0x5027C7, "TECHNART Co.,Ltd", "TECHNART" }, { 0x248000, "Westcontrol AS", "WESTCONTROL-AS" }, { 0xF84A7F, "Innometriks Inc", "INNOMETRIKS" }, { 0x58639A, "TPL SYSTEMES", "TPL-SYSTEMES" }, { 0x0C9B13, "Shanghai Magic Mobile Telecommunication Co.Ltd.", "SHANGHAI-MAGIC-MOBILE-TELECOMMUNICATION" }, { 0x3C15EA, "TESCOM CO., LTD.", "TESCOM" }, { 0xB4CCE9, "PROSYST", "PROSYST" }, { 0x34A3BF, "Terewave. Inc.", "TEREWAVE" }, { 0xB0CE18, "Zhejiang shenghui lighting co.,Ltd", "ZHEJIANG-SHENGHUI-LIGHTING" }, { 0x503CC4, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x286D97, "SAMJIN Co., Ltd.", "SAMJIN" }, { 0xACE42E, "SK hynix", "SK-HYNIX" }, { 0x08EF3B, "MCS Logic Inc.", "MCS-LOGIC" }, { 0x806C8B, "KAESER KOMPRESSOREN AG", "KAESER-KOMPRESSOREN" }, { 0x048C03, "ThinPAD Technology (Shenzhen)CO.,LTD", "THINPAD-SHENZHEN" }, { 0x84E629, "Bluwan SA", "BLUWAN" }, { 0x34CD6D, "CommSky Technologies", "COMMSKY-TECHNOLOGIES" }, { 0xC47F51, "Inventek Systems", "INVENTEK" }, { 0xE8D4E0, "Beijing BenyWave Technology Co., Ltd.", "BEIJING-BENYWAVE" }, { 0x681D64, "Sunwave Communications Co., Ltd", "SUNWAVE-COMMUNICATION" }, { 0xF4CD90, "Vispiron Rotec GmbH", "VISPIRON-ROTEC" }, { 0xE438F2, "Advantage Controls", "ADVANTAGE-CONTROLS" }, { 0xC8F386, "Shenzhen Xiaoniao Technology Co.,Ltd", "SHENZHEN-XIAONIAO" }, { 0xE8CE06, "SkyHawke Technologies, LLC.", "SKYHAWKE-TECHNOLOGIES-LLC" }, { 0xB0808C, "Laser Light Engines", "LASER-LIGHT-ENGINES" }, { 0xC419EC, "Qualisys AB", "QUALISYS-AB" }, { 0x981094, "Shenzhen Vsun communication technology Co.,ltd", "SHENZHEN-VSUN-COMMUNICATION" }, { 0x082719, "APS systems/electronic AG", "APS-/" }, { 0xD4AC4E, "BODi rS, LLC", "BODI-RS-LLC" }, { 0xB03850, "Nanjing CAS-ZDC IOT SYSTEM CO.,LTD", "NANJING-CAS-ZDC-IOT-SYSTEM" }, { 0xC0DA74, "Hangzhou Sunyard Technology Co., Ltd.", "HANGZHOU-SUNYARD" }, { 0x34A843, "KYOCERA Display Corporation", "KYOCERA-DISPLAY" }, { 0x6C5779, "Aclima, Inc.", "ACLIMA" }, { 0x40BD9E, "Physio-Control, Inc", "PHYSIO-CONTROL" }, { 0x581CBD, "Affinegy", "AFFINEGY" }, { 0xF82BC8, "Jiangsu Switter Co., Ltd", "JIANGSU-SWITTER" }, { 0x60C397, "2Wire Inc", "2WIRE" }, { 0x3065EC, "Wistron (ChongQing)", "WISTRON-CHONGQING" }, { 0x5CA3EB, "Lokel s.r.o.", "LOKEL-S-R-O" }, { 0x04DF69, "Car Connectivity Consortium", "CAR-CONNECTIVITY-CONSORTIUM" }, { 0x28DB81, "Shanghai Guao Electronic Technology Co., Ltd", "SHANGHAI-GUAO" }, { 0x9CB793, "Creatcomm Technology Inc.", "CREATCOMM" }, { 0xA0B100, "ShenZhen Cando Electronics Co.,Ltd", "SHENZHEN-CANDO-ELECTRONICS" }, { 0x40560C, "In Home Displays Ltd", "IN-HOME-DISPLAYS" }, { 0x9436E0, "Sichuan Bihong Broadcast & Television New Technologies Co.,Ltd", "SICHUAN-BIHONG-BROADCAST-AMP-TELEVISION-NEW-TECHNOLOGIES" }, { 0xD4D50D, "Southwest Microwave, Inc", "SOUTHWEST-MICROWAVE" }, { 0xB8CD93, "Penetek, Inc", "PENETEK" }, { 0xD8FEE3, "D-Link International", "D-LINK" }, { 0xF8516D, "Denwa Technology Corp.", "DENWA" }, { 0x1078CE, "Hanvit SI, Inc.", "HANVIT-SI" }, { 0xD8DA52, "APATOR S.A.", "APATOR" }, { 0x107A86, "U&U ENGINEERING INC.", "U-U-ENGINEERING" }, { 0x980D2E, "HTC Corporation", "HTC" }, { 0x842F75, "Innokas Group", "INNOKAS-GROUP" }, { 0xD4BF7F, "UPVEL", "UPVEL" }, { 0x5061D6, "Indu-Sol GmbH", "INDU-SOL" }, { 0x68EC62, "YODO Technology Corp. Ltd.", "YODO" }, { 0xF07F0C, "Leopold Kostal GmbH &Co. KG", "LEOPOLD-KOSTAL" }, { 0x5C22C4, "DAE EUN ELETRONICS CO., LTD", "DAE-EUN-ELETRONICS" }, { 0x08482C, "Raycore Taiwan Co., LTD.", "RAYCORE-TAIWAN" }, { 0xF4B381, "WindowMaster A/S", "WINDOWMASTER-A/S" }, { 0x74F102, "Beijing HCHCOM Technology Co., Ltd", "BEIJING-HCHCOM" }, { 0x080EA8, "Velex s.r.l.", "VELEX-S-R-L" }, { 0x0086A0, "Private", "PRIVATE" }, { 0x60FE1E, "China Palms Telecom.Ltd", "CHINA-PALMS-TELECOM" }, { 0x841E26, "KERNEL-I Co.,LTD", "KERNEL-I" }, { 0x349D90, "Heinzmann GmbH & CO. KG", "HEINZMANN" }, { 0xD4016D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xFC1186, "Logic3 plc", "LOGIC3-PLC" }, { 0x50CD32, "NanJing Chaoran Science & Technology Co.,Ltd.", "NANJING-CHAORAN-SCIENCE" }, { 0x683EEC, "ERECA", "ERECA" }, { 0x44619C, "FONsystem co. ltd.", "FONSYSTEM" }, { 0xBCBAE1, "AREC Inc.", "AREC" }, { 0x18FA6F, "ISC applied systems corp", "ISC-APPLIED" }, { 0x9C9726, "Technicolor", "TECHNICOLOR" }, { 0x880905, "MTMCommunications", "MTMCOMMUNICATIONS" }, { 0xC42628, "Airo Wireless", "AIRO-WIRELESS" }, { 0x745F00, "Samsung Semiconductor Inc.", "SAMSUNG-SEMICONDUCTOR" }, { 0x541FD5, "Advantage Electronics", "ADVANTAGE-ELECTRONICS" }, { 0x90FF79, "Metro Ethernet Forum", "METRO-ETHERNET-FORUM" }, { 0xE08177, "GreenBytes, Inc.", "GREENBYTES" }, { 0x48F230, "Ubizcore Co.,LTD", "UBIZCORE" }, { 0xB0C95B, "Beijing Symtech CO.,LTD", "BEIJING-SYMTECH" }, { 0xDCA989, "MACANDC", "MACANDC" }, { 0xC05E6F, "V. Stonkaus firma Kodinis Raktas", "V-STONKAUS-FIRMA-KODINIS-RAKTAS" }, { 0x6CD146, "Smartek d.o.o.", "SMARTEK-D-O-O" }, { 0xE0C2B7, "Masimo Corporation", "MASIMO" }, { 0xF82EDB, "RTW GmbH & Co. KG", "RTW" }, { 0x60A44C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x045FA7, "Shenzhen Yichen Technology Development Co.,LTD", "SHENZHEN-YICHEN-DEVELOPMENT" }, { 0x983F9F, "China SSJ (Suzhou) Network Technology Inc.", "CHINA-SSJ-SUZHOU-NETWORK" }, { 0xF02329, "SHOWA DENKI CO.,LTD.", "SHOWA-DENKI" }, { 0x6499A0, "AG Elektronik AB", "ELEKTRONIK-AB" }, { 0xA80180, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x044CEF, "Fujian Sanao Technology Co.,Ltd", "FUJIAN-SANAO" }, { 0xDC1DD4, "Microstep-MIS spol. s r.o.", "MICROSTEP-MIS-SPOL-S-R-O" }, { 0xE01877, "FUJITSU LIMITED", "FUJITSU" }, { 0x149448, "BLU CASTLE S.A.", "BLU-CASTLE" }, { 0x40516C, "Grandex International Corporation", "GRANDEX" }, { 0xD0D471, "MVTECH co., Ltd", "MVTECH" }, { 0x34ADE4, "Shanghai Chint Power Systems Co., Ltd.", "SHANGHAI-CHINT-POWER" }, { 0x1853E0, "Hanyang Digitech Co.Ltd", "HANYANG-DIGITECH" }, { 0xC4E032, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0xACDBDA, "Shenzhen Geniatech Inc, Ltd", "SHENZHEN-GENIATECH" }, { 0xA42C08, "Masterwork Automodules", "MASTERWORK-AUTOMODULES" }, { 0x60B185, "ATH system", "ATH-SYSTEM" }, { 0x504F94, "Loxone Electronics GmbH", "LOXONE-ELECTRONICS" }, { 0x8C078C, "FLOW DATA INC", "FLOW-DATA" }, { 0x8887DD, "DarbeeVision Inc.", "DARBEEVISION" }, { 0x807B1E, "Corsair Components", "CORSAIR-COMPONENTS" }, { 0xA0E25A, "Amicus SK, s.r.o.", "AMICUS-SK-S-R-O" }, { 0xF87B62, "FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch", "FASTWEL-TAIWAN-BRANCH" }, { 0xB49842, "zte corporation", "ZTE" }, { 0x9C9C1D, "Starkey Labs Inc.", "STARKEY-LABS" }, { 0x90CC24, "Synaptics, Inc", "SYNAPTICS" }, { 0xAC1702, "Fibar Group sp. z o.o.", "FIBAR-GROUP-SP-Z-O-O" }, { 0x7898FD, "Q9 Networks Inc.", "Q9-NETWORKS" }, { 0x3C57D5, "FiveCo", "FIVECO" }, { 0x4C2258, "cozybit, Inc.", "COZYBIT" }, { 0x10EA59, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x34FA40, "Guangzhou Robustel Technologies Co., Limited", "GUANGZHOU-ROBUSTEL-TECHNOLOGIES" }, { 0x181725, "Cameo Communications, Inc.", "CAMEO-COMMUNICATION" }, { 0xE82E24, "Out of the Fog Research LLC", "OUT-OF-THE-FOG-RESEARCH-LLC" }, { 0x1C52D6, "FLAT DISPLAY TECHNOLOGY CORPORATION", "FLAT-DISPLAY" }, { 0x40270B, "Mobileeco Co., Ltd", "MOBILEECO" }, { 0xACE97F, "IoT Tech Limited", "IOT-TECH" }, { 0x301518, "Ubiquitous Communication Co. ltd.", "UBIQUITOUS-COMMUNICATION" }, { 0x101248, "ITG, Inc.", "ITG" }, { 0x106FEF, "Ad-Sol Nissin Corp", "AD-SOL-NISSIN" }, { 0xA036F0, "Comprehensive Power", "COMPREHENSIVE-POWER" }, { 0x180CAC, "CANON INC.", "CANON" }, { 0x00DB1E, "Albedo Telecom SL", "ALBEDO-TELECOM-SL" }, { 0x74943D, "AgJunction", "AGJUNCTION" }, { 0x080C0B, "SysMik GmbH Dresden", "SYSMIK-DRESDEN" }, { 0xC8FB26, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x7CC8AB, "Acro Associates, Inc.", "ACRO-ASSOCIATES" }, { 0xC4DA26, "NOBLEX SA", "NOBLEX" }, { 0x1CC316, "MileSight Technology Co., Ltd.", "MILESIGHT" }, { 0xC4E7BE, "SCSpro Co.,Ltd", "SCSPRO" }, { 0x105F49, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x4495FA, "Qingdao Santong Digital Technology Co.Ltd", "QINGDAO-SANTONG-DIGITAL" }, { 0x60F2EF, "VisionVera International Co., Ltd.", "VISIONVERA" }, { 0xB01266, "Futaba-Kikaku", "FUTABA-KIKAKU" }, { 0x909DE0, "Newland Design + Assoc. Inc.", "NEWLAND-DESIGN-+-ASSOC" }, { 0x64D814, "Cisco Systems, Inc", "CISCO" }, { 0x6CE4CE, "Villiger Security Solutions AG", "VILLIGER-SECURITY-SOLUTIONS" }, { 0x30F33A, "+plugg srl", "+PLUGG-SRL" }, { 0x58CF4B, "Lufkin Industries", "LUFKIN-INDUSTRIES" }, { 0xC4393A, "SMC Networks Inc", "SMC-NETWORKS" }, { 0xD45C70, "Wi-Fi Alliance", "WI-FI-ALLIANCE" }, { 0x08EBED, "World Elite Technology Co.,LTD", "WORLD-ELITE" }, { 0x60BC4C, "EWM Hightec Welding GmbH", "EWM-HIGHTEC-WELDING" }, { 0xF41E26, "Simon-Kaloi Engineering", "SIMON-KALOI-ENGINEERING" }, { 0xC44567, "SAMBON PRECISON and ELECTRONICS", "SAMBON-PRECISON-AND-ELECTRONICS" }, { 0xD0738E, "DONG OH PRECISION CO., LTD. ", "DONG-OH-PRECISION" }, { 0xE8718D, "Elsys Equipamentos Eletronicos Ltda", "ELSYS-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0x3C83B5, "Advance Vision Electronics Co. Ltd.", "ADVANCE-VISION-ELECTRONICS" }, { 0x808287, "ATCOM Technology Co.Ltd.", "ATCOM" }, { 0x28A192, "GERP Solution", "GERP-SOLUTION" }, { 0xA08C15, "Gerhard D. Wempe KG", "GERHARD-D-WEMPE" }, { 0x8CE081, "zte corporation", "ZTE" }, { 0x485261, "SOREEL", "SOREEL" }, { 0x10FBF0, "KangSheng LTD.", "KANGSHENG" }, { 0x3C57BD, "Kessler Crane Inc.", "KESSLER-CRANE" }, { 0x600F77, "SilverPlus, Inc", "SILVERPLUS" }, { 0x6851B7, "PowerCloud Systems, Inc.", "POWERCLOUD" }, { 0xA44E2D, "Adaptive Wireless Solutions, LLC", "ADAPTIVE-WIRELESS-SOLUTIONS-LLC" }, { 0x3CC12C, "AES Corporation", "AES" }, { 0x0CCDFB, "EDIC Systems Inc.", "EDIC" }, { 0x2CE2A8, "DeviceDesign", "DEVICEDESIGN" }, { 0xB49DB4, "Axion Technologies Inc.", "AXION-TECHNOLOGIES" }, { 0xD8182B, "Conti Temic Microelectronic GmbH", "CONTI-TEMIC-MICROELECTRONIC" }, { 0x304449, "PLATH GmbH", "PLATH" }, { 0x94FD2E, "Shanghai Uniscope Technologies Co.,Ltd", "SHANGHAI-UNISCOPE-TECHNOLOGIES" }, { 0x64A341, "Wonderlan (Beijing) Technology Co., Ltd.", "WONDERLAN-BEIJING" }, { 0x8CAE4C, "Plugable Technologies", "PLUGABLE-TECHNOLOGIES" }, { 0xD8D5B9, "Rainforest Automation, Inc.", "RAINFOREST-AUTOMATION" }, { 0xC0A0E2, "Eden Innovations", "EDEN-INNOVATIONS" }, { 0xE8ABFA, "Shenzhen Reecam Tech.Ltd.", "SHENZHEN-REECAM-TECH" }, { 0x58874C, "LITE-ON CLEAN ENERGY TECHNOLOGY CORP.", "LITE-ON-CLEAN-ENERGY" }, { 0xE85BF0, "Imaging Diagnostics", "IMAGING-DIAGNOSTICS" }, { 0x20DC93, "Cheetah Hi-Tech, Inc.", "CHEETAH-HI-TECH" }, { 0x7846C4, "DAEHAP HYPER-TECH", "DAEHAP-HYPER-TECH" }, { 0x0CD9C1, "Visteon Corporation", "VISTEON" }, { 0x68AB8A, "RF IDeas", "RF-IDEAS" }, { 0x70E24C, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x88615A, "Siano Mobile Silicon Ltd.", "SIANO-MOBILE-SILICON" }, { 0x30215B, "Shenzhen Ostar Display Electronic Co.,Ltd", "SHENZHEN-OSTAR-DISPLAY" }, { 0xDC028E, "zte corporation", "ZTE" }, { 0xDCB058, "Bürkert Werke GmbH", "BüRKERT-WERKE" }, { 0x641C67, "DIGIBRAS INDUSTRIA DO BRASILS/A", "DIGIBRAS-INDUSTRIA-DO-BRASILS/A" }, { 0xC8E1A7, "Vertu Corporation Limited", "VERTU" }, { 0x88D7BC, "DEP Company", "DEP-COMPANY" }, { 0xF49466, "CountMax, ltd", "COUNTMAX" }, { 0x4CAB33, "KST technology", "KST" }, { 0x5CE0F6, "NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR", "NIC-BR--NUCLEO-DE-INFORMACAO-E-COORDENACAO-DO-PONTO-BR" }, { 0x00E666, "ARIMA Communications Corp.", "ARIMA-COMMUNICATION" }, { 0xF8E4FB, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x5887E2, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0xB4DFFA, "Litemax Electronics Inc.", "LITEMAX-ELECTRONICS" }, { 0x48F8B3, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x681CA2, "Rosewill Inc.", "ROSEWILL" }, { 0x7C092B, "Bekey A/S", "BEKEY-A/S" }, { 0xD808F5, "Arcadia Networks Co. Ltd. ", "ARCADIA-NETWORKS" }, { 0x84DF0C, "NET2GRID BV", "NET2GRID" }, { 0x3CB87A, "Private", "PRIVATE" }, { 0xE425E9, "Color-Chip", "COLOR-CHIP" }, { 0xF44848, "Amscreen Group Ltd", "AMSCREEN-GROUP" }, { 0x441319, "WKK TECHNOLOGY LTD.", "WKK" }, { 0x088F2C, "Hills Sound Vision & Lighting", "HILLS-SOUND-VISION-LIGHTING" }, { 0x3C9F81, "Shenzhen CATIC Bit Communications Technology Co.,Ltd", "SHENZHEN-CATIC-BIT-COMMUNICATION" }, { 0x18339D, "Cisco Systems, Inc", "CISCO" }, { 0x642216, "Shandong Taixin Electronic co.,Ltd", "SHANDONG-TAIXIN" }, { 0xD43D7E, "Micro-Star Int'l Co, Ltd", "MICRO-STAR" }, { 0x64517E, "LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.", "LONG-BEN-DONGGUAN" }, { 0x0C57EB, "Mueller Systems", "MUELLER" }, { 0x48282F, "zte corporation", "ZTE" }, { 0x745327, "COMMSEN CO., LIMITED", "COMMSEN" }, { 0xE47185, "Securifi Ltd", "SECURIFI" }, { 0x881036, "Panodic(ShenZhen) Electronics Limted", "PANODIC-SHENZHEN-ELECTRONICS-LIMTED" }, { 0x18F87A, "i3 International Inc.", "I3" }, { 0x142DF5, "Amphitech", "AMPHITECH" }, { 0x90F72F, "Phillips Machine & Welding Co., Inc. ", "PHILLIPS-MACHINE-WELDING" }, { 0xB45570, "Borea", "BOREA" }, { 0x5C5015, "Cisco Systems, Inc", "CISCO" }, { 0x0CD2B5, "Binatone Telecommunication Pvt. Ltd", "BINATONE-TELECOMMUNICATION-PVT" }, { 0x4846F1, "Uros Oy", "UROS-OY" }, { 0x1CD40C, "Kriwan Industrie-Elektronik GmbH", "KRIWAN-INDUSTRIE-ELEKTRONIK" }, { 0x747B7A, "ETH Inc.", "ETH" }, { 0x1C7C45, "Vitek Industrial Video Products, Inc.", "VITEK-INDUSTRIAL-VIDEO-PRODUCTS" }, { 0xC8AE9C, "Shanghai TYD Elecronic Technology Co. Ltd", "SHANGHAI-TYD-ELECRONIC" }, { 0xA44C11, "Cisco Systems, Inc", "CISCO" }, { 0x782544, "Omnima Limited", "OMNIMA" }, { 0xD4DF57, "Alpinion Medical Systems", "ALPINION-MEDICAL" }, { 0x5048EB, "BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD.", "BEIJING-HAIHEJINSHENG-NETWORK" }, { 0x40AC8D, "Data Management, Inc.", "DATA-MANAGEMENT" }, { 0x54466B, "Shenzhen CZTIC Electronic Technology Co., Ltd ", "SHENZHEN-CZTIC" }, { 0x1C3477, "Innovation Wireless", "INNOVATION-WIRELESS" }, { 0x4423AA, "Farmage Co., Ltd.", "FARMAGE" }, { 0xA0EF84, "Seine Image Int'l Co., Ltd", "SEINE-IMAGE" }, { 0xAC7A42, "iConnectivity", "ICONNECTIVITY" }, { 0x5869F9, "Fusion Transactive Ltd.", "FUSION-TRANSACTIVE" }, { 0xB0C83F, "Jiangsu Cynray IOT Co., Ltd.", "JIANGSU-CYNRAY-IOT" }, { 0xCC14A6, "Yichun MyEnergy Domain, Inc", "YICHUN-MYENERGY-DOMAIN" }, { 0x98D686, "Chyi Lee industry Co., ltd.", "CHYI-LEE-INDUSTRY" }, { 0x20443A, "Schneider Electric Asia Pacific Ltd", "SCHNEIDER-ELECTRIC-ASIA-PACIFIC" }, { 0x28C914, "Taimag Corporation", "TAIMAG" }, { 0x4C7897, "Arrowhead Alarm Products Ltd", "ARROWHEAD-ALARM-PRODUCTS" }, { 0xAC0A61, "Labor S.r.L.", "LABOR-S-R-L" }, { 0xB482C5, "Relay2, Inc.", "RELAY2" }, { 0x60D1AA, "Vishal Telecommunications Pvt Ltd", "VISHAL-TELECOMMUNICATIONS-PVT" }, { 0xCCC104, "Applied Technical Systems", "APPLIED-TECHNICAL" }, { 0x709BA5, "Shenzhen Y&D Electronics Co.,LTD.", "SHENZHEN-Y-D-ELECTRONICS" }, { 0xEC42F0, "ADL Embedded Solutions, Inc.", "ADL-EMBEDDED-SOLUTIONS" }, { 0x10BD18, "Cisco Systems, Inc", "CISCO" }, { 0xB0435D, "NuLEDs, Inc.", "NULEDS" }, { 0xA82BD6, "Shina System Co., Ltd", "SHINA-SYSTEM" }, { 0x8CC7AA, "Radinet Communications Inc.", "RADINET-COMMUNICATION" }, { 0x20014F, "Linea Research Ltd", "LINEA-RESEARCH" }, { 0x80D18B, "Hangzhou I'converge Technology Co.,Ltd", "HANGZHOU-I-CONVERGE" }, { 0xB4A4B5, "Zen Eye Co.,Ltd", "ZEN-EYE" }, { 0x489153, "Weinmann Geräte für Medizin GmbH + Co. KG", "WEINMANN-GERäTE-FüR-MEDIZIN-+" }, { 0x549D85, "EnerAccess inc", "ENERACCESS" }, { 0x5CEE79, "Global Digitech Co LTD", "GLOBAL-DIGITECH" }, { 0x9CE10E, "NCTech Ltd", "NCTECH" }, { 0x28F606, "Syes srl", "SYES-SRL" }, { 0xA0C3DE, "Triton Electronic Systems Ltd.", "TRITON" }, { 0xAC3FA4, "TAIYO YUDEN CO.,LTD", "TAIYO-YUDEN" }, { 0x0C130B, "Uniqoteq Ltd.", "UNIQOTEQ" }, { 0x808698, "Netronics Technologies Inc.", "NETRONICS-TECHNOLOGIES" }, { 0x2C00F7, "XOS", "XOS" }, { 0x809393, "Xapt GmbH", "XAPT" }, { 0x00DEFB, "Cisco Systems, Inc", "CISCO" }, { 0x90AC3F, "BrightSign LLC", "BRIGHTSIGN-LLC" }, { 0x7CACB2, "Bosch Software Innovations GmbH", "BOSCH-SOFTWARE-INNOVATIONS" }, { 0x0043FF, "KETRON S.R.L.", "KETRON-S-R-L" }, { 0x745798, "TRUMPF Laser GmbH + Co. KG", "TRUMPF-LASER-+" }, { 0x38E08E, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 0xE4FA1D, "PAD Peripheral Advanced Design Inc.", "PAD-PERIPHERAL-ADVANCED-DESIGN" }, { 0x4C9E80, "KYOKKO ELECTRIC Co., Ltd.", "KYOKKO-ELECTRIC" }, { 0xA826D9, "HTC Corporation", "HTC" }, { 0xF03A55, "Omega Elektronik AS", "OMEGA-ELEKTRONIK-AS" }, { 0x24B88C, "Crenus Co.,Ltd.", "CRENUS" }, { 0x98BC57, "SVA TECHNOLOGIES CO.LTD", "SVA-TECHNOLOGIES" }, { 0x98FE03, "Ericsson - North America", "ERICSSON---NORTH-AMERICA" }, { 0xF0EEBB, "VIPAR GmbH", "VIPAR" }, { 0x54D0ED, "AXIM Communications", "AXIM-COMMUNICATION" }, { 0xA49005, "CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD", "CHINA-GREATWALL-SHENZHEN" }, { 0x3055ED, "Trex Network LLC", "TREX-NETWORK-LLC" }, { 0xD4A02A, "Cisco Systems, Inc", "CISCO" }, { 0x0463E0, "Nome Oy", "NOME-OY" }, { 0xBCA4E1, "Nabto", "NABTO" }, { 0x900A3A, "PSG Plastic Service GmbH", "PSG-PLASTIC-SERVICE" }, { 0xFC5B26, "MikroBits", "MIKROBITS" }, { 0x5CC213, "Fr. Sauter AG", "FR-SAUTER" }, { 0x581D91, "Advanced Mobile Telecom co.,ltd.", "ADVANCED-MOBILE-TELECOM" }, { 0x9CB008, "Ubiquitous Computing Technology Corporation", "UBIQUITOUS-COMPUTING" }, { 0x00376D, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xE0EF25, "Lintes Technology Co., Ltd.", "LINTES" }, { 0xCCEED9, "VAHLE DETO GmbH", "VAHLE-DETO" }, { 0x645EBE, "Yahoo! JAPAN", "YAHOO!-JAPAN" }, { 0xCCC50A, "SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD", "SHENZHEN-DAJIAHAO" }, { 0xD01AA7, "UniPrint", "UNIPRINT" }, { 0xB08E1A, "URadio Systems Co., Ltd", "URADIO" }, { 0xE05DA6, "Detlef Fink Elektronik & Softwareentwicklung", "DETLEF-FINK-ELEKTRONIK-SOFTWAREENTWICKLUNG" }, { 0x0C7523, "BEIJING GEHUA CATV NETWORK CO.,LTD", "BEIJING-GEHUA-CATV-NETWORK" }, { 0xBC2C55, "Bear Flag Design, Inc.", "BEAR-FLAG-DESIGN" }, { 0x04F4BC, "Xena Networks", "XENA-NETWORKS" }, { 0x608C2B, "Hanson Technology", "HANSON" }, { 0xEC1120, "FloDesign Wind Turbine Corporation", "FLODESIGN-WIND-TURBINE" }, { 0xC495A2, "SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD", "SHENZHEN-WEIJIU-INDUSTRY-AND-TRADE-DEVELOPMENT" }, { 0x0C9E91, "Sankosha Corporation", "SANKOSHA" }, { 0xF48771, "Infoblox", "INFOBLOX" }, { 0x04F021, "Compex Systems Pte Ltd", "COMPEX-PTE" }, { 0x8823FE, "TTTech Computertechnik AG", "TTTECH-COMPUTERTECHNIK" }, { 0x98AAD7, "BLUE WAVE NETWORKING CO LTD", "BLUE-WAVE-NETWORKING" }, { 0x20107A, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x502267, "PixeLINK", "PIXELINK" }, { 0x9092B4, "Diehl BGT Defence GmbH & Co. KG", "DIEHL-BGT-DEFENCE" }, { 0x806007, "RIM", "RIM" }, { 0x38A851, "Moog, Ing", "MOOG-ING" }, { 0x90185E, "Apex Tool Group GmbH & Co OHG", "APEX-TOOL-GROUP-OHG" }, { 0x649EF3, "Cisco Systems, Inc", "CISCO" }, { 0x34D09B, "MobilMAX Technology Inc.", "MOBILMAX" }, { 0x087572, "Obelux Oy", "OBELUX-OY" }, { 0x9C1FDD, "Accupix Inc.", "ACCUPIX" }, { 0x506441, "Greenlee", "GREENLEE" }, { 0x80946C, "TOKYO RADAR CORPORATION", "TOKYO-RADAR" }, { 0x00FA3B, "CLOOS ELECTRONIC GMBH", "CLOOS" }, { 0x28CD1C, "Espotel Oy", "ESPOTEL-OY" }, { 0xD824BD, "Cisco Systems, Inc", "CISCO" }, { 0xD878E5, "KUHN SA", "KUHN" }, { 0xC49300, "8Devices", "8DEVICES" }, { 0x4C3910, "Newtek Electronics co., Ltd.", "NEWTEK-ELECTRONICS" }, { 0x5808FA, "Fiber Optic & telecommunication INC.", "FIBER-OPTIC-TELECOMMUNICATION" }, { 0x7C94B2, "Philips Healthcare PCCI", "PHILIPS-HEALTHCARE-PCCI" }, { 0x200505, "RADMAX COMMUNICATION PRIVATE LIMITED", "RADMAX-COMMUNICATION-PRIVATE" }, { 0x5848C0, "COFLEC", "COFLEC" }, { 0xC8F704, "Building Block Video", "BUILDING-BLOCK-VIDEO" }, { 0xC8AF40, "marco Systemanalyse und Entwicklung GmbH", "MARCO-SYSTEMANALYSE-UND-ENTWICKLUNG" }, { 0xAC319D, "Shenzhen TG-NET Botone Technology Co.,Ltd.", "SHENZHEN-TG-NET-BOTONE" }, { 0x08D09F, "Cisco Systems, Inc", "CISCO" }, { 0xB81413, "Keen High Holding(HK) Ltd.", "KEEN-HIGH-HOLDING-HK" }, { 0x2037BC, "Kuipers Electronic Engineering BV", "KUIPERS-ENGINEERING" }, { 0xA887ED, "ARC Wireless LLC", "ARC-WIRELESS-LLC" }, { 0x983571, "Sub10 Systems Ltd", "SUB10" }, { 0xB05CE5, "Nokia Corporation", "NOKIA" }, { 0xCC6BF1, "Sound Masking Inc.", "SOUND-MASKING" }, { 0xB82CA0, "Honeywell HomMed", "HONEYWELL-HOMMED" }, { 0x94AE61, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x7CA61D, "MHL, LLC", "MHL-LLC" }, { 0x5CCEAD, "CDYNE Corporation", "CDYNE" }, { 0x9CA3BA, "SAKURA Internet Inc.", "SAKURA-INTERNET" }, { 0x709756, "Happyelectronics Co.,Ltd", "HAPPYELECTRONICS" }, { 0xD4206D, "HTC Corporation", "HTC" }, { 0x1866E3, "Veros Systems, Inc.", "VEROS" }, { 0x00B338, "Kontron Design Manufacturing Services (M) Sdn. Bhd", "KONTRON-DESIGN-MANUFACTURING-SERVICES-M-SDN-BHD" }, { 0x94DE0E, "SmartOptics AS", "SMARTOPTICS-AS" }, { 0xA429B7, "bluesky", "BLUESKY" }, { 0x7C6B33, "Tenyu Tech Co. Ltd.", "TENYU-TECH" }, { 0xCCB8F1, "EAGLE KINGDOM TECHNOLOGIES LIMITED", "EAGLE-KINGDOM-TECHNOLOGIES" }, { 0xDC2E6A, "HCT. Co., Ltd.", "HCT" }, { 0x34255D, "Shenzhen Loadcom Technology Co.,Ltd", "SHENZHEN-LOADCOM" }, { 0x1897FF, "TechFaith Wireless Technology Limited", "TECHFAITH-WIRELESS" }, { 0x8C8E76, "taskit GmbH", "TASKIT" }, { 0xB4D8DE, "iota Computing, Inc.", "IOTA-COMPUTING" }, { 0x54CDA7, "Fujian Shenzhou Electronic Co.,Ltd", "FUJIAN-SHENZHOU" }, { 0x1000FD, "LaonPeople", "LAONPEOPLE" }, { 0x603553, "Buwon Technology", "BUWON" }, { 0xB89BC9, "SMC Networks Inc", "SMC-NETWORKS" }, { 0x48022A, "B-Link Electronic Limited", "B-LINK" }, { 0x48A6D2, "GJsun Optical Science and Tech Co.,Ltd.", "GJSUN-OPTICAL-SCIENCE-AND-TECH" }, { 0x186D99, "Adanis Inc.", "ADANIS" }, { 0xD44B5E, "TAIYO YUDEN CO., LTD.", "TAIYO-YUDEN" }, { 0xB40C25, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x40BF17, "Digistar Telecom. SA", "DIGISTAR-TELECOM" }, { 0xE4AFA1, "HES-SO", "HES-SO" }, { 0x58920D, "Kinetic Avionics Limited", "KINETIC-AVIONICS" }, { 0x207600, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x84D32A, "IEEE 1905.1", "IEEE-1905-1" }, { 0xF8E7B5, "µTech Tecnologia LTDA", "µTECH-TECNOLOGIA-LTDA" }, { 0x0462D7, "ALSTOM HYDRO FRANCE", "ALSTOM-HYDRO-FRANCE" }, { 0xCCC8D7, "CIAS Elettronica srl", "CIAS-ELETTRONICA-SRL" }, { 0x64AE0C, "Cisco Systems, Inc", "CISCO" }, { 0xA446FA, "AmTRAN Video Corporation", "AMTRAN-VIDEO" }, { 0x2804E0, "FERMAX ELECTRONICA S.A.U.", "FERMAX-ELECTRONICA-U" }, { 0xFC01CD, "FUNDACION TEKNIKER", "FUNDACION-TEKNIKER" }, { 0x88E7A6, "iKnowledge Integration Corp.", "IKNOWLEDGE-INTEGRATION" }, { 0x98E79A, "Foxconn(NanJing) Communication Co.,Ltd.", "FOXCONN-NANJING-COMMUNICATION" }, { 0x54F5B6, "ORIENTAL PACIFIC INTERNATIONAL LIMITED", "ORIENTAL-PACIFIC" }, { 0x34A55D, "TECHNOSOFT INTERNATIONAL SRL", "TECHNOSOFT-SRL" }, { 0xD0C282, "Cisco Systems, Inc", "CISCO" }, { 0x449CB5, "Alcomp, Inc", "ALCOMP" }, { 0x24E6BA, "JSC Zavod im. Kozitsky", "JSC-ZAVOD-IM-KOZITSKY" }, { 0x8C8A6E, "ESTUN AUTOMATION TECHNOLOY CO., LTD", "ESTUN-AUTOMATION-TECHNOLOY" }, { 0xE0ED1A, "vastriver Technology Co., Ltd", "VASTRIVER" }, { 0x685E6B, "PowerRay Co., Ltd.", "POWERRAY" }, { 0x4C32D9, "M Rutty Holdings Pty. Ltd.", "M-RUTTY-HOLDINGS-PTY" }, { 0x603FC5, "COX CO., LTD", "COX" }, { 0x182B05, "8D Technologies", "8D-TECHNOLOGIES" }, { 0x54A9D4, "Minibar Systems", "MINIBAR" }, { 0x4861A3, "Concern Axion JSC", "CONCERN-AXION-JSC" }, { 0xD89685, "GoPro", "GOPRO" }, { 0x08A12B, "ShenZhen EZL Technology Co., Ltd", "SHENZHEN-EZL" }, { 0x94319B, "Alphatronics BV", "ALPHATRONICS" }, { 0x08FC52, "OpenXS BV", "OPENXS" }, { 0x205B5E, "Shenzhen Wonhe Technology Co., Ltd", "SHENZHEN-WONHE" }, { 0x3CC99E, "Huiyang Technology Co., Ltd", "HUIYANG" }, { 0xC8A1BA, "Neul Ltd", "NEUL" }, { 0xAC02EF, "Comsis", "COMSIS" }, { 0xC43A9F, "Siconix Inc.", "SICONIX" }, { 0x0418B6, "Private", "PRIVATE" }, { 0xD4024A, "Delphian Systems LLC", "DELPHIAN-LLC" }, { 0x84248D, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x24EC99, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xB8621F, "Cisco Systems, Inc", "CISCO" }, { 0xB45CA4, "Thing-talk Wireless Communication Technologies Corporation Limited", "THING-TALK-WIRELESS-COMMUNICATION-TECHNOLOGIES" }, { 0xAC8ACD, "ROGER D.Wensker, G.Wensker sp.j.", "ROGER-D-WENSKER-G-WENSKER-SP-J" }, { 0x984246, "SOL INDUSTRY PTE., LTD", "SOL-INDUSTRY-PTE" }, { 0x28A574, "Miller Electric Mfg. Co.", "MILLER-ELECTRIC-MFG" }, { 0x3826CD, "ANDTEK", "ANDTEK" }, { 0xC436DA, "Rusteletech Ltd.", "RUSTELETECH" }, { 0x00FC70, "Intrepid Control Systems, Inc.", "INTREPID-CONTROL" }, { 0xD0AFB6, "Linktop Technology Co., LTD", "LINKTOP" }, { 0x444F5E, "Pan Studios Co.,Ltd.", "PAN-STUDIOS" }, { 0x0C3956, "Observator instruments", "OBSERVATOR-INSTRUMENTS" }, { 0xA49981, "FuJian Elite Power Tech CO.,LTD.", "FUJIAN-ELITE-POWER-TECH" }, { 0xB83A7B, "Worldplay (Canada) Inc.", "WORLDPLAY-CANADA" }, { 0x783F15, "EasySYNC Ltd.", "EASYSYNC" }, { 0x88B168, "Delta Control GmbH", "DELTA-CONTROL" }, { 0x20B399, "Enterasys", "ENTERASYS" }, { 0x18B79E, "Invoxia", "INVOXIA" }, { 0x147411, "RIM", "RIM" }, { 0x5C56ED, "3pleplay Electronics Private Limited", "3PLEPLAY-ELECTRONICS-PRIVATE" }, { 0x0838A5, "Funkwerk plettac electronic GmbH", "FUNKWERK-PLETTAC" }, { 0xBCCD45, "VOISMART", "VOISMART" }, { 0x78028F, "Adaptive Spectrum and Signal Alignment (ASSIA), Inc.", "ADAPTIVE-SPECTRUM-AND-SIGNAL-ALIGNMENT-ASSIA" }, { 0xD4A425, "SMAX Technology Co., Ltd.", "SMAX" }, { 0x98F8DB, "Marini Impianti Industriali s.r.l.", "MARINI-IMPIANTI-INDUSTRIALI-S-R-L" }, { 0x140708, "Private", "PRIVATE" }, { 0x24C9DE, "Genoray", "GENORAY" }, { 0x605464, "Eyedro Green Solutions Inc.", "EYEDRO-GREEN-SOLUTIONS" }, { 0x54055F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x405539, "Cisco Systems, Inc", "CISCO" }, { 0xB8BEBF, "Cisco Systems, Inc", "CISCO" }, { 0x38FEC5, "Ellips B.V.", "ELLIPS" }, { 0x24C86E, "Chaney Instrument Co.", "CHANEY-INSTRUMENT" }, { 0xD4D898, "Korea CNO Tech Co., Ltd", "KOREA-CNO-TECH" }, { 0x5070E5, "He Shan World Fair Electronics Technology Limited", "HE-SHAN-WORLD-FAIR-ELECTRONICS" }, { 0x28EE2C, "Frontline Test Equipment", "FRONTLINE-TEST-EQUIPMENT" }, { 0x802275, "Beijing Beny Wave Technology Co Ltd", "BEIJING-BENY-WAVE" }, { 0xBC8199, "BASIC Co.,Ltd.", "BASIC" }, { 0x24470E, "PentronicAB", "PENTRONICAB" }, { 0xA4DB2E, "Kingspan Environmental Ltd", "KINGSPAN-ENVIRONMENTAL" }, { 0xF44EFD, "Actions Semiconductor Co.,Ltd.(Cayman Islands)", "ACTIONS-SEMICONDUCTOR-CAYMAN-ISLANDS" }, { 0x34BCA6, "Beijing Ding Qing Technology, Ltd.", "BEIJING-DING-QING" }, { 0xD4C1FC, "Nokia Corporation", "NOKIA" }, { 0x48DCFB, "Nokia Corporation", "NOKIA" }, { 0x688470, "eSSys Co.,Ltd", "ESSYS" }, { 0xF08BFE, "COSTEL.,CO.LTD", "COSTEL" }, { 0x5435DF, "Symeo GmbH", "SYMEO" }, { 0xF43D80, "FAG Industrial Services GmbH", "FAG-INDUSTRIAL-SERVICES" }, { 0xD4F0B4, "Napco Security Technologies", "NAPCO-SECURITY-TECHNOLOGIES" }, { 0x40B3FC, "Logital Co. Limited ", "LOGITAL" }, { 0xD05FCE, "Hitachi Data Systems", "HITACHI-DATA" }, { 0x8C82A8, "Insigma Technology Co.,Ltd", "INSIGMA" }, { 0x3C2763, "SLE quality engineering GmbH & Co. KG", "SLE-QUALITY-ENGINEERING" }, { 0xA44B15, "Sun Cupid Technology (HK) LTD", "SUN-CUPID-HK" }, { 0x508ACB, "SHENZHEN MAXMADE TECHNOLOGY CO., LTD.", "SHENZHEN-MAXMADE" }, { 0x7032D5, "Athena Wireless Communications Inc", "ATHENA-WIRELESS-COMMUNICATION" }, { 0x7CF0BA, "Linkwell Telesystems Pvt Ltd", "LINKWELL-TELESYSTEMS-PVT" }, { 0xCCC62B, "Tri-Systems Corporation", "TRI" }, { 0xACF97E, "ELESYS INC.", "ELESYS" }, { 0x4C7367, "Genius Bytes Software Solutions GmbH", "GENIUS-BYTES-SOFTWARE-SOLUTIONS" }, { 0xDC2B66, "InfoBLOCK S.A. de C.V.", "INFOBLOCK-DE-C-V" }, { 0x14F0C5, "Xtremio Ltd.", "XTREMIO" }, { 0xC027B9, "Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd.", "BEIJING-NATIONAL-RAILWAY-RESEARCH-DESIGN-INSTITUTE-OF-SIGNAL-COMMUNICATION" }, { 0x70A41C, "Advanced Wireless Dynamics S.L.", "ADVANCED-WIRELESS-DYNAMICS-S-L" }, { 0x285132, "Shenzhen Prayfly Technology Co.,Ltd", "SHENZHEN-PRAYFLY" }, { 0x4C3B74, "VOGTEC(H.K.) Co., Ltd", "VOGTEC-H-K" }, { 0x509772, "Westinghouse Digital", "WESTINGHOUSE-DIGITAL" }, { 0xD85D84, "CAx soft GmbH", "CAX-SOFT" }, { 0x78A683, "Precidata", "PRECIDATA" }, { 0xBC6784, "Environics Oy", "ENVIRONICS-OY" }, { 0xB4E0CD, "Fusion-io, Inc", "FUSION-IO" }, { 0x50AF73, "Shenzhen Bitland Information Technology Co., Ltd.", "SHENZHEN-BITLAND-INFORMATION" }, { 0x488E42, "DIGALOG GmbH", "DIGALOG" }, { 0x286046, "Lantech Communications Global, Inc.", "LANTECH-COMMUNICATION-GLOBAL" }, { 0xA424B3, "FlatFrog Laboratories AB", "FLATFROG-LABORATORIES-AB" }, { 0xA4856B, "Q Electronics Ltd", "Q-ELECTRONICS" }, { 0x84EA99, "Vieworks", "VIEWORKS" }, { 0xDCCBA8, "Explora Technologies Inc", "EXPLORA-TECHNOLOGIES" }, { 0x58EECE, "Icon Time Systems", "ICON-TIME" }, { 0xA41BC0, "Fastec Imaging Corporation", "FASTEC-IMAGING" }, { 0xE01F0A, "Xslent Energy Technologies. LLC", "XSLENT-ENERGY-TECHNOLOGIES-LLC" }, { 0xF40321, "BeNeXt B.V.", "BENEXT" }, { 0x00B033, "OAO Izhevskiy radiozavod", "OAO-IZHEVSKIY-RADIOZAVOD" }, { 0x707EDE, "NASTEC LTD.", "NASTEC" }, { 0xCCBE71, "OptiLogix BV", "OPTILOGIX" }, { 0x7CDD90, "Shenzhen Ogemray Technology Co., Ltd.", "SHENZHEN-OGEMRAY" }, { 0xC07E40, "SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD", "SHENZHEN-XDK-COMMUNICATION-EQUIPMENT" }, { 0xE44F29, "MA Lighting Technology GmbH", "MA-LIGHTING" }, { 0x6CAB4D, "Digital Payment Technologies", "DIGITAL-PAYMENT-TECHNOLOGIES" }, { 0x60DA23, "Estech Co.,Ltd", "ESTECH" }, { 0x28F358, "2C - Trifonov & Co", "2C---TRIFONOV" }, { 0x304C7E, "Panasonic Electric Works Automation Controls Techno Co.,Ltd.", "PANASONIC-ELECTRIC-WORKS-AUTOMATION-CONTROLS-TECHNO" }, { 0x64D1A3, "Sitecom Europe BV", "SITECOM-EUROPE" }, { 0x3831AC, "WEG", "WEG" }, { 0x2C7ECF, "Onzo Ltd", "ONZO" }, { 0x10E3C7, "Seohwa Telecom", "SEOHWA-TELECOM" }, { 0xE84040, "Cisco Systems, Inc", "CISCO" }, { 0x0C8112, "Private", "PRIVATE" }, { 0x7C7D41, "Jinmuyu Electronics Co., Ltd.", "JINMUYU-ELECTRONICS" }, { 0x4C1480, "NOREGON SYSTEMS, INC", "NOREGON" }, { 0x60F673, "TERUMO CORPORATION", "TERUMO" }, { 0xE48AD5, "RF WINDOW CO., LTD.", "RF-WINDOW" }, { 0x24F0FF, "GHT Co., Ltd.", "GHT" }, { 0x4C07C9, "COMPUTER OFFICE Co.,Ltd.", "OFFICE" }, { 0x40F4EC, "Cisco Systems, Inc", "CISCO" }, { 0x2872F0, "ATHENA", "ATHENA" }, { 0x9C807D, "SYSCABLE Korea Inc.", "SYSCABLE-KOREA" }, { 0x180B52, "Nanotron Technologies GmbH", "NANOTRON-TECHNOLOGIES" }, { 0x64DE1C, "Kingnetic Pte Ltd", "KINGNETIC-PTE" }, { 0x540496, "Gigawave LTD", "GIGAWAVE" }, { 0xC8C126, "ZPM Industria e Comercio Ltda", "ZPM-INDUSTRIA-E-COMERCIO-LTDA" }, { 0x041D10, "Dream Ware Inc.", "DREAM-WARE" }, { 0x88DD79, "Voltaire", "VOLTAIRE" }, { 0x4468AB, "JUIN COMPANY, LIMITED", "JUIN-COMPANY" }, { 0x902E87, "LabJack", "LABJACK" }, { 0xC8208E, "Storagedata", "STORAGEDATA" }, { 0x00B342, "MacroSAN Technologies Co., Ltd.", "MACROSAN-TECHNOLOGIES" }, { 0x4CB9C8, "CONET CO., LTD.", "CONET" }, { 0x0474A1, "Aligera Equipamentos Digitais Ltda", "ALIGERA-EQUIPAMENTOS-DIGITAIS-LTDA" }, { 0x1064E2, "ADFweb.com s.r.l.", "ADFWEB-COM-S-R-L" }, { 0xCC34D7, "GEWISS S.P.A.", "GEWISS-S-P-A" }, { 0xB4CFDB, "Shenzhen Jiuzhou Electric Co.,LTD", "SHENZHEN-JIUZHOU-ELECTRIC" }, { 0xC46354, "U-Raku, Inc.", "U-RAKU" }, { 0x20FEDB, "M2M Solution S.A.S.", "M2M-SOLUTION-S" }, { 0x405FBE, "RIM", "RIM" }, { 0xE05B70, "Innovid, Co., Ltd.", "INNOVID" }, { 0x043604, "Gyeyoung I&T", "GYEYOUNG-I-T" }, { 0x34F968, "ATEK Products, LLC", "ATEK-PRODUCTS-LLC" }, { 0xD0D0FD, "Cisco Systems, Inc", "CISCO" }, { 0x706417, "ORBIS TECNOLOGIA ELECTRICA S.A.", "ORBIS-TECNOLOGIA-ELECTRICA" }, { 0x64FC8C, "Zonar Systems", "ZONAR" }, { 0x28ED58, "JAG Jakob AG", "JAG-JAKOB" }, { 0x9873C4, "Sage Electronic Engineering LLC", "SAGE-ENGINEERING-LLC" }, { 0xB8797E, "Secure Meters (UK) Limited", "SECURE-METERS-UK" }, { 0x2005E8, "OOO InProMedia", "OOO-INPROMEDIA" }, { 0xE0D10A, "Katoudenkikougyousyo co ltd", "KATOUDENKIKOUGYOUSYO" }, { 0x1C0656, "IDY Corporation", "IDY" }, { 0xC44B44, "Omniprint Inc.", "OMNIPRINT" }, { 0x6015C7, "IdaTech", "IDATECH" }, { 0x188ED5, "TP Vision Belgium N.V. - innovation site Brugge", "TP-VISION-BELGIUM-N-V---INNOVATION-SITE-BRUGGE" }, { 0x8CE7B3, "Sonardyne International Ltd", "SONARDYNE" }, { 0x0034F1, "Radicom Research, Inc.", "RADICOM-RESEARCH" }, { 0xA8B0AE, "LEONI ", "LEONI" }, { 0x60893C, "Thermo Fisher Scientific P.O.A.", "THERMO-FISHER-SCIENTIFIC-P-O-A" }, { 0x5C17D3, "LGE ", "LGE" }, { 0x70A191, "Trendsetter Medical, LLC", "TRENDSETTER-MEDICAL-LLC" }, { 0x58BC27, "Cisco Systems, Inc", "CISCO" }, { 0x34D2C4, "RENA GmbH Print Systeme", "RENA-PRINT-SYSTEME" }, { 0xE0A670, "Nokia Corporation", "NOKIA" }, { 0xE061B2, "HANGZHOU ZENOINTEL TECHNOLOGY CO., LTD", "HANGZHOU-ZENOINTEL" }, { 0x4491DB, "Shanghai Huaqin Telecom Technology Co.,Ltd", "SHANGHAI-HUAQIN-TELECOM" }, { 0x14D76E, "CONCH ELECTRONIC Co.,Ltd", "CONCH" }, { 0xCC6B98, "Minetec Wireless Technologies", "MINETEC-WIRELESS-TECHNOLOGIES" }, { 0xC4CD45, "Beijing Boomsense Technology CO.,LTD.", "BEIJING-BOOMSENSE" }, { 0xD0BB80, "SHL Telemedicine International Ltd.", "SHL-TELEMEDICINE" }, { 0x1C83B0, "Linked IP GmbH", "LINKED-IP" }, { 0xF065DD, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x706582, "Suzhou Hanming Technologies Co., Ltd.", "SUZHOU-HANMING-TECHNOLOGIES" }, { 0x94C7AF, "Raylios Technology", "RAYLIOS" }, { 0x6854F5, "enLighted Inc", "ENLIGHTED" }, { 0x008C10, "Black Box Corp.", "BLACK-BOX" }, { 0x20A2E7, "Lee-Dickens Ltd", "LEE-DICKENS" }, { 0x8CDD8D, "Wifly-City System Inc.", "WIFLY-CITY-SYSTEM" }, { 0xEC98C1, "Beijing Risbo Network Technology Co.,Ltd", "BEIJING-RISBO-NETWORK" }, { 0xECC38A, "Accuenergy (CANADA) Inc", "ACCUENERGY-CANADA" }, { 0xD48FAA, "Sogecam Industrial, S.A.", "SOGECAM-INDUSTRIAL" }, { 0x38A95F, "Actifio Inc", "ACTIFIO" }, { 0xA0DDE5, "SHARP Corporation", "SHARP" }, { 0x94A7BC, "BodyMedia, Inc.", "BODYMEDIA" }, { 0x6C9B02, "Nokia Corporation", "NOKIA" }, { 0x84DB2F, "Sierra Wireless Inc", "SIERRA-WIRELESS" }, { 0xA45055, "busware.de", "BUSWARE-DE" }, { 0xC89383, "Embedded Automation, Inc.", "EMBEDDED-AUTOMATION" }, { 0xD49E6D, "Wuhan Zhongyuan Huadian Science & Technology Co.,", "WUHAN-ZHONGYUAN-HUADIAN-SCIENCE" }, { 0x94F720, "Tianjin Deviser Electronics Instrument Co., Ltd", "TIANJIN-DEVISER-ELECTRONICS-INSTRUMENT" }, { 0xEC2368, "IntelliVoice Co.,Ltd.", "INTELLIVOICE" }, { 0xB45253, "Seagate Technology", "SEAGATE" }, { 0x04DD4C, "Velocytech", "VELOCYTECH" }, { 0xB4C810, "UMPI Elettronica", "UMPI-ELETTRONICA" }, { 0x38580C, "Panaccess Systems GmbH", "PANACCESS" }, { 0x24AF54, "NEXGEN Mediatech Inc.", "NEXGEN-MEDIATECH" }, { 0xF0F9F7, "IES GmbH & Co. KG", "IES" }, { 0xCC0CDA, "Miljovakt AS", "MILJOVAKT-AS" }, { 0xC01242, "Alpha Security Products", "ALPHA-SECURITY-PRODUCTS" }, { 0x90507B, "Advanced PANMOBIL Systems GmbH & Co. KG", "ADVANCED-PANMOBIL" }, { 0x00B5D6, "Omnibit Inc.", "OMNIBIT" }, { 0xF893F3, "VOLANS", "VOLANS" }, { 0x7C3E9D, "PATECH", "PATECH" }, { 0x4C60D5, "airPointe of New Hampshire", "AIRPOINTE-OF-NEW-HAMPSHIRE" }, { 0xD45297, "nSTREAMS Technologies, Inc.", "NSTREAMS-TECHNOLOGIES" }, { 0x78EC22, "Shanghai Qihui Telecom Technology Co., LTD", "SHANGHAI-QIHUI-TELECOM" }, { 0xF8D756, "Simm Tronic Limited ", "SIMM-TRONIC" }, { 0xE087B1, "Nata-Info Ltd.", "NATA-INFO" }, { 0xA8B1D4, "Cisco Systems, Inc", "CISCO" }, { 0x4CBAA3, "Bison Electronics Inc.", "BISON-ELECTRONICS" }, { 0xEC7C74, "Justone Technologies Co., Ltd.", "JUSTONE-TECHNOLOGIES" }, { 0x3C1A79, "Huayuan Technology CO.,LTD", "HUAYUAN" }, { 0x30E48E, "Vodafone UK", "VODAFONE-UK" }, { 0x08512E, "Orion Diagnostica Oy", "ORION-DIAGNOSTICA-OY" }, { 0x9CF61A, "UTC Fire and Security", "UTC-FIRE-AND-SECURITY" }, { 0xC802A6, "Beijing Newmine Technology", "BEIJING-NEWMINE" }, { 0xC84C75, "Cisco Systems, Inc", "CISCO" }, { 0x284C53, "Intune Networks", "INTUNE-NETWORKS" }, { 0x102D96, "Looxcie Inc.", "LOOXCIE" }, { 0x3037A6, "Cisco Systems, Inc", "CISCO" }, { 0xACEA6A, "GENIX INFOCOMM CO., LTD.", "GENIX-INFOCOMM" }, { 0x5C35DA, "There Corporation Oy", "THERE-OY" }, { 0x005218, "Wuxi Keboda Electron Co.Ltd", "WUXI-KEBODA-ELECTRON" }, { 0x08F2F4, "Net One Partners Co.,Ltd.", "NET-ONE-PARTNERS" }, { 0x68EFBD, "Cisco Systems, Inc", "CISCO" }, { 0x183BD2, "BYD Precision Manufacture Company Ltd.", "BYD-PRECISION-MANUFACTURE-COMPANY" }, { 0xF45595, "HENGBAO Corporation LTD.", "HENGBAO" }, { 0xC08B6F, "S I Sistemas Inteligentes Eletrônicos Ltda", "S-I-SISTEMAS-INTELIGENTES-ELETRôNICOS-LTDA" }, { 0xBCA9D6, "Cyber-Rain, Inc.", "CYBER-RAIN" }, { 0x0CDDEF, "Nokia Corporation", "NOKIA" }, { 0x80C63F, "Remec Broadband Wireless , LLC", "REMEC-BROADBAND-WIRELESS-LLC" }, { 0xF09CBB, "RaonThink Inc.", "RAONTHINK" }, { 0xFCE23F, "CLAY PAKY SPA", "CLAY-PAKY-SPA" }, { 0xB0E39D, "CAT SYSTEM CO.,LTD.", "CAT-SYSTEM" }, { 0x78A6BD, "DAEYEON Control&Instrument Co,.Ltd", "DAEYEON-CONTROL-INSTRUMENT" }, { 0x481249, "Luxcom Technologies Inc.", "LUXCOM-TECHNOLOGIES" }, { 0xB43DB2, "Degreane Horizon", "DEGREANE-HORIZON" }, { 0xC4823F, "Fujian Newland Auto-ID Tech. Co,.Ltd.", "FUJIAN-NEWLAND-AUTO-ID-TECH" }, { 0xF4C795, "WEY Elektronik AG", "WEY-ELEKTRONIK" }, { 0x087695, "Auto Industrial Co., Ltd.", "AUTO-INDUSTRIAL" }, { 0xACCE8F, "HWA YAO TECHNOLOGIES CO., LTD", "HWA-YAO-TECHNOLOGIES" }, { 0x042F56, "ATOCS (Shenzhen) LTD", "ATOCS-SHENZHEN" }, { 0x084E1C, "H2A Systems, LLC", "H2A-LLC" }, { 0xA4B121, "Arantia 2010 S.L.", "ARANTIA-2010-S-L" }, { 0x9889ED, "Anadem Information Inc.", "ANADEM-INFORMATION" }, { 0x147373, "TUBITAK UEKAE", "TUBITAK-UEKAE" }, { 0x982D56, "Resolution Audio", "RESOLUTION-AUDIO" }, { 0x00A2DA, "INAT GmbH", "INAT" }, { 0x6C3E9C, "KE Knestel Elektronik GmbH", "KE-KNESTEL-ELEKTRONIK" }, { 0xF89D0D, "Control Technology Inc.", "CONTROL" }, { 0x1010B6, "McCain Inc", "MCCAIN" }, { 0x081FF3, "Cisco Systems, Inc", "CISCO" }, { 0x5CE286, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x2CCD27, "Precor Inc", "PRECOR" }, { 0x6C5E7A, "Ubiquitous Internet Telecom Co., Ltd", "UBIQUITOUS-INTERNET-TELECOM" }, { 0xD828C9, "General Electric Consumer and Industrial", "GENERAL-ELECTRIC-CONSUMER-AND-INDUSTRIAL" }, { 0xC86C1E, "Display Systems Ltd", "DISPLAY" }, { 0xEC6C9F, "Chengdu Volans Technology CO.,LTD", "CHENGDU-VOLANS" }, { 0xCCCC4E, "Sun Fountainhead USA. Corp ", "SUN-FOUNTAINHEAD-USA" }, { 0x60D30A, "Quatius Limited", "QUATIUS" }, { 0xBC9DA5, "DASCOM Europe GmbH", "DASCOM-EUROPE" }, { 0x942E63, "Finsécur", "FINSéCUR" }, { 0xC8D2C1, "Jetlun (Shenzhen) Corporation", "JETLUN-SHENZHEN" }, { 0xF0BCC8, "MaxID (Pty) Ltd", "MAXID-PTY" }, { 0x406186, "MICRO-STAR INT'L CO.,LTD", "MICRO-STAR" }, { 0x74E537, "RADSPIN", "RADSPIN" }, { 0x7C08D9, "Shanghai B-Star Technology Co", "SHANGHAI-B-STAR" }, { 0x448E81, "VIG", "VIG" }, { 0x2046F9, "Advanced Network Devices (dba:AND)", "ADVANCED-NETWORK-DEVICES-DBA:AND" }, { 0x0C8230, "SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD", "SHENZHEN-MAGNUS-TECHNOLOGIES" }, { 0x50934F, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x34EF8B, "NTT Communications Corporation", "NTT-COMMUNICATION" }, { 0x38E98C, "Reco S.p.A.", "RECO-S-P-A" }, { 0xF02408, "Talaris (Sweden) AB", "TALARIS-SWEDEN-AB" }, { 0xA06986, "Wellav Technologies Ltd", "WELLAV-TECHNOLOGIES" }, { 0xF02FD8, "Bi2-Vision", "BI2-VISION" }, { 0xC86CB6, "Optcom Co., Ltd.", "OPTCOM" }, { 0xC45976, "Fugoo Coorporation", "FUGOO-COORPORATION" }, { 0xB0C8AD, "People Power Company", "PEOPLE-POWER-COMPANY" }, { 0xA870A5, "UniComm Inc.", "UNICOMM" }, { 0x80177D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xE8DAAA, "VideoHome Technology Corp.", "VIDEOHOME" }, { 0x647D81, "YOKOTA INDUSTRIAL CO,.LTD", "YOKOTA-INDUSTRIAL" }, { 0x8891DD, "Racktivity", "RACKTIVITY" }, { 0xC4198B, "Dominion Voting Systems Corporation", "DOMINION-VOTING" }, { 0xC83A35, "Tenda Technology Co., Ltd.", "TENDA" }, { 0xF4ACC1, "Cisco Systems, Inc", "CISCO" }, { 0x584CEE, "Digital One Technologies, Limited", "DIGITAL-ONE-TECHNOLOGIES" }, { 0xE064BB, "DigiView S.r.l.", "DIGIVIEW-S-R-L" }, { 0x4C63EB, "Application Solutions (Electronics and Vision) Ltd", "APPLICATION-SOLUTIONS-ELECTRONICS-AND-VISION" }, { 0xC01E9B, "Pixavi AS", "PIXAVI-AS" }, { 0x64168D, "Cisco Systems, Inc", "CISCO" }, { 0x24D2CC, "SmartDrive Systems Inc.", "SMARTDRIVE" }, { 0x7C6C8F, "AMS NEVE LTD", "AMS-NEVE" }, { 0xC4E17C, "U2S co.", "U2S" }, { 0xA8C222, "TM-Research Inc.", "TM-RESEARCH" }, { 0x50252B, "Nethra Imaging Incorporated", "NETHRA-IMAGING-INCORPORATED" }, { 0xA4DA3F, "Bionics Corp.", "BIONICS" }, { 0x9C4E8E, "ALT Systems Ltd", "ALT" }, { 0x448312, "Star-Net", "STAR-NET" }, { 0x687924, "ELS-GmbH & Co. KG", "ELS" }, { 0x38BB23, "OzVision America LLC", "OZVISION-AMERICA-LLC" }, { 0x003A99, "Cisco Systems, Inc", "CISCO" }, { 0x04C05B, "Tigo Energy", "TIGO-ENERGY" }, { 0x5C1437, "Thyssenkrupp Aufzugswerke GmbH", "THYSSENKRUPP-AUFZUGSWERKE" }, { 0x9C55B4, "I.S.E. S.r.l.", "I-S-E-S-R-L" }, { 0xDC2C26, "Iton Technology Limited", "ITON" }, { 0x4CC452, "Shang Hai Tyd. Electon Technology Ltd.", "SHANG-HAI-TYD-ELECTON" }, { 0xF0C24C, "Zhejiang FeiYue Digital Technology Co., Ltd", "ZHEJIANG-FEIYUE-DIGITAL" }, { 0x08184C, "A. S. Thomas, Inc.", "A-S-THOMAS" }, { 0x5CE223, "Delphin Technology AG", "DELPHIN" }, { 0xFC6198, "NEC Personal Products, Ltd", "NEC-PERSONAL-PRODUCTS" }, { 0xF871FE, "The Goldman Sachs Group, Inc.", "THE-GOLDMAN-SACHS-GROUP" }, { 0xD8C3FB, "DETRACOM", "DETRACOM" }, { 0x201257, "Most Lucky Trading Ltd", "MOST-LUCKY-TRADING" }, { 0xD49C28, "JayBird LLC", "JAYBIRD-LLC" }, { 0xA03A75, "PSS Belgium N.V.", "PSS-BELGIUM-N-V" }, { 0x746B82, "MOVEK ", "MOVEK" }, { 0x0C8411, "A.O. Smith Water Products", "A-O-SMITH-WATER-PRODUCTS" }, { 0xF8E968, "Egker Kft.", "EGKER-KFT" }, { 0xE8DFF2, "PRF Co., Ltd.", "PRF" }, { 0x006440, "Cisco Systems, Inc", "CISCO" }, { 0xD0E40B, "Wearable Inc.", "WEARABLE" }, { 0xAC867E, "Create New Technology (HK) Limited Company", "CREATE-NEW-HK-COMPANY" }, { 0x58F67B, "Xia Men UnionCore Technology LTD.", "XIA-MEN-UNIONCORE" }, { 0xA02EF3, "United Integrated Services Co., Led.", "UNITED-INTEGRATED-SERVICES-LED" }, { 0xA8CE90, "CVC", "CVC" }, { 0x00271F, "MIPRO Electronics Co., Ltd", "MIPRO-ELECTRONICS" }, { 0x00271A, "Geenovo Technology Ltd.", "GEENOVO" }, { 0x002714, "Grainmustards, Co,ltd.", "GRAINMUSTARDS" }, { 0x002717, "CE Digital(Zhenjiang)Co.,Ltd", "CE-DIGITAL-ZHENJIANG" }, { 0x002708, "Nordiag ASA", "NORDIAG-ASA" }, { 0x002701, "INCOstartec GmbH", "INCOSTARTEC" }, { 0x002702, "SolarEdge Technologies", "SOLAREDGE-TECHNOLOGIES" }, { 0x0026FB, "AirDio Wireless, Inc.", "AIRDIO-WIRELESS" }, { 0x0026F5, "XRPLUS Inc.", "XRPLUS" }, { 0x002632, "Instrumentation Technologies d.d.", "INSTRUMENTATION-TECHNOLOGIES-D-D" }, { 0x00262C, "IKT Advanced Technologies s.r.o.", "IKT-ADVANCED-TECHNOLOGIES-S-R-O" }, { 0x002626, "Geophysical Survey Systems, Inc.", "GEOPHYSICAL-SURVEY" }, { 0x00261F, "SAE Magnetics (H.K.) Ltd.", "SAE-MAGNETICS-H-K" }, { 0x002620, "ISGUS GmbH", "ISGUS" }, { 0x00261A, "Femtocomm System Technology Corp.", "FEMTOCOMM-SYSTEM" }, { 0x002613, "Engel Axil S.L.", "ENGEL-AXIL-S-L" }, { 0x00260D, "Mercury Systems, Inc.", "MERCURY" }, { 0x0025D8, "KOREA MAINTENANCE", "KOREA-MAINTENANCE" }, { 0x0025CC, "Mobile Communications Korea Incorporated", "MOBILE-COMMUNICATION-KOREA-INCORPORATED" }, { 0x0025C5, "Star Link Communication Pvt. Ltd.", "STAR-LINK-COMMUNICATION-PVT" }, { 0x0025C6, "kasercorp, ltd", "KASERCORP" }, { 0x0025C0, "ZillionTV Corporation", "ZILLIONTV" }, { 0x0025B4, "Cisco Systems, Inc", "CISCO" }, { 0x0025B9, "Cypress Solutions Inc", "CYPRESS-SOLUTIONS" }, { 0x0025AD, "Manufacturing Resources International", "MANUFACTURING-RESOURCES" }, { 0x002600, "TEAC Australia Pty Ltd.", "TEAC-AUSTRALIA-PTY" }, { 0x002607, "Enabling Technology Pty Ltd", "ENABLING-PTY" }, { 0x0025FB, "Tunstall Healthcare A/S", "TUNSTALL-HEALTHCARE-A/S" }, { 0x0025FA, "J&M Analytik AG", "J-M-ANALYTIK" }, { 0x0025F6, "netTALK.com, Inc.", "NETTALK-COM" }, { 0x0025EF, "I-TEC Co., Ltd.", "I-TEC" }, { 0x0025E9, "i-mate Development, Inc.", "I-MATE-DEVELOPMENT" }, { 0x002690, "I DO IT", "I-DO-IT" }, { 0x00268A, "Terrier SC Ltd", "TERRIER-SC" }, { 0x002689, "General Dynamics Robotic Systems", "GENERAL-DYNAMICS-ROBOTIC" }, { 0x002684, "KISAN SYSTEM", "KISAN-SYSTEM" }, { 0x002683, "Ajoho Enterprise Co., Ltd.", "AJOHO" }, { 0x00267D, "A-Max Technology Macao Commercial Offshore Company Limited", "A-MAX-MACAO-COMMERCIAL-OFFSHORE-COMPANY" }, { 0x002677, "DEIF A/S", "DEIF-A/S" }, { 0x002671, "AUTOVISION Co., Ltd", "AUTOVISION" }, { 0x00266A, "ESSENSIUM NV", "ESSENSIUM-NV" }, { 0x0026EF, "Technology Advancement Group, Inc.", "ADVANCEMENT-GROUP" }, { 0x0026E9, "SP Corp", "SP" }, { 0x0026DC, "Optical Systems Design", "OPTICAL-DESIGN" }, { 0x0026D6, "Ningbo Andy Optoelectronic Co., Ltd.", "NINGBO-ANDY-OPTOELECTRONIC" }, { 0x0026CF, "DEKA R&D", "DEKA-R-D" }, { 0x0026D0, "Semihalf", "SEMIHALF" }, { 0x0026CA, "Cisco Systems, Inc", "CISCO" }, { 0x0026C9, "Proventix Systems, Inc.", "PROVENTIX" }, { 0x0026C3, "Insightek Corp.", "INSIGHTEK" }, { 0x002664, "Core System Japan", "CORE-SYSTEM-JAPAN" }, { 0x002658, "T-Platforms (Cyprus) Limited", "T-PLATFORMS-CYPRUS" }, { 0x002645, "Circontrol S.A.", "CIRCONTROL" }, { 0x00263F, "LIOS Technology GmbH", "LIOS" }, { 0x002639, "T.M. Electronics, Inc.", "T-M-ELECTRONICS" }, { 0x0026BD, "JTEC Card & Communication Co., Ltd.", "JTEC-CARD-COMMUNICATION" }, { 0x0026B3, "Thales Communications Inc", "THALES-COMMUNICATION" }, { 0x0026AD, "Arada Systems, Inc.", "ARADA" }, { 0x0026A9, "Strong Technologies Pty Ltd", "STRONG-TECHNOLOGIES-PTY" }, { 0x0026A3, "FQ Ingenieria Electronica S.A.", "FQ-INGENIERIA-ELECTRONICA" }, { 0x00269C, "ITUS JAPAN CO. LTD", "ITUS-JAPAN" }, { 0x002696, "NOOLIX Co., Ltd", "NOOLIX" }, { 0x002484, "Bang and Olufsen Medicom a/s", "BANG-AND-OLUFSEN-MEDICOM-A/S" }, { 0x002486, "DesignArt Networks", "DESIGNART-NETWORKS" }, { 0x00247F, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002478, "Mag Tech Electronics Co Limited", "MAG-TECH-ELECTRONICS" }, { 0x002471, "Fusion MultiSystems dba Fusion-io", "FUSION-MULTISYSTEMS-DBA-FUSION-IO" }, { 0x002473, "3COM EUROPE LTD", "3COM" }, { 0x002460, "Giaval Science Development Co. Ltd.", "GIAVAL-SCIENCE-DEVELOPMENT" }, { 0x00245B, "RAIDON TECHNOLOGY, INC.", "RAIDON" }, { 0x00244E, "RadChips, Inc.", "RADCHIPS" }, { 0x002447, "Kaztek Systems", "KAZTEK" }, { 0x002442, "Axona Limited", "AXONA" }, { 0x00243D, "Emerson Appliance Motors and Controls", "EMERSON-APPLIANCE-MOTORS-AND-CONTROLS" }, { 0x002528, "Daido Signal Co., Ltd.", "DAIDO-SIGNAL" }, { 0x002523, "OCP Inc.", "OCP" }, { 0x00251E, "ROTEL TECHNOLOGIES", "ROTEL-TECHNOLOGIES" }, { 0x002519, "Viaas Inc", "VIAAS" }, { 0x002514, "PC Worth Int'l Co., Ltd.", "PC-WORTH" }, { 0x00250D, "GZT Telkom-Telmor sp. z o.o.", "GZT-TELKOM-TELMOR-SP-Z-O-O" }, { 0x002506, "A.I. ANTITACCHEGGIO ITALIA SRL", "A-I-ANTITACCHEGGIO-ITALIA-SRL" }, { 0x002508, "Maquet Cardiopulmonary AG", "MAQUET-CARDIOPULMONARY" }, { 0x00257A, "CAMCO Produktions- und Vertriebs-GmbH für Beschallungs- und Beleuchtungsanlagen", "CAMCO-PRODUKTIONS--UND-VERTRIEBS--FüR-BESCHALLUNGS--UND-BELEUCHTUNGSANLAGEN" }, { 0x00257F, "CallTechSolution Co.,Ltd", "CALLTECHSOLUTION" }, { 0x002573, "ST Electronics (Info-Security) Pte Ltd", "ST-ELECTRONICS-INFO-SECURITY-PTE" }, { 0x00256E, "Van Breda B.V.", "VAN-BREDA" }, { 0x00256D, "Broadband Forum", "BROADBAND-FORUM" }, { 0x002560, "Ibridge Networks & Communications Ltd.", "IBRIDGE-NETWORKS-COMMUNICATION" }, { 0x00255B, "CoachComm, LLC", "COACHCOMM-LLC" }, { 0x0024E2, "HASEGAWA ELECTRIC CO.,LTD.", "HASEGAWA-ELECTRIC" }, { 0x0024DB, "Alcohol Monitoring Systems", "ALCOHOL-MONITORING" }, { 0x0024CF, "Inscape Data Corporation", "INSCAPE-DATA" }, { 0x0024C8, "Broadband Solutions Group", "BROADBAND-SOLUTIONS-GROUP" }, { 0x0024C3, "Cisco Systems, Inc", "CISCO" }, { 0x0024C0, "NTI COMODO INC", "NTI-COMODO" }, { 0x0024B6, "Seagate Technology", "SEAGATE" }, { 0x0024BB, "CENTRAL Corporation", "CENTRAL" }, { 0x0024B1, "Coulomb Technologies", "COULOMB-TECHNOLOGIES" }, { 0x0024AA, "Dycor Technologies Ltd.", "DYCOR-TECHNOLOGIES" }, { 0x0024A3, "Sonim Technologies Inc", "SONIM-TECHNOLOGIES" }, { 0x00249E, "ADC-Elektronik GmbH", "ADC-ELEKTRONIK" }, { 0x00248B, "HYBUS CO., LTD.", "HYBUS" }, { 0x002492, "Motorola, Broadband Solutions Group", "MOTOROLA-BROADBAND-SOLUTIONS-GROUP" }, { 0x002497, "Cisco Systems, Inc", "CISCO" }, { 0x002554, "Pixel8 Networks", "PIXEL8-NETWORKS" }, { 0x00254D, "Singapore Technologies Electronics Limited", "SINGAPORE-TECHNOLOGIES-ELECTRONICS" }, { 0x00254E, "Vertex Wireless Co., Ltd.", "VERTEX-WIRELESS" }, { 0x002537, "Runcom Technologies Ltd.", "RUNCOM-TECHNOLOGIES" }, { 0x00253E, "Sensus Metering Systems", "SENSUS-METERING" }, { 0x002541, "Maquet Critical Care AB", "MAQUET-CRITICAL-CARE-AB" }, { 0x00252D, "Kiryung Electronics", "KIRYUNG-ELECTRONICS" }, { 0x0025A6, "Central Network Solution Co., Ltd.", "CENTRAL-NETWORK-SOLUTION" }, { 0x0025A1, "Enalasys", "ENALASYS" }, { 0x00259A, "CEStronics GmbH", "CESTRONICS" }, { 0x002593, "DatNet Informatikai Kft.", "DATNET-INFORMATIKAI-KFT" }, { 0x002594, "Eurodesign BG LTD", "EURODESIGN-BG" }, { 0x00258E, "The Weather Channel", "THE-WEATHER-CHANNEL" }, { 0x00258A, "Pole/Zero Corporation", "POLE/ZERO" }, { 0x002589, "Hills Industries Limited", "HILLS-INDUSTRIES" }, { 0x002584, "Cisco Systems, Inc", "CISCO" }, { 0x002501, "JSC Supertel", "JSC-SUPERTEL" }, { 0x0024FA, "Hilger u. Kern GMBH", "HILGER-U-KERN" }, { 0x0024F5, "NDS Surgical Imaging", "NDS-SURGICAL-IMAGING" }, { 0x0024EE, "Wynmax Inc.", "WYNMAX" }, { 0x0024E7, "Plaster Networks", "PLASTER-NETWORKS" }, { 0x0023F2, "TVLogic", "TVLOGIC" }, { 0x0023E8, "Demco Corp.", "DEMCO" }, { 0x0023E1, "Cavena Image Products AB", "CAVENA-IMAGE-PRODUCTS-AB" }, { 0x0023DC, "Benein, Inc", "BENEIN" }, { 0x0023DB, "saxnet gmbh", "SAXNET" }, { 0x0023C9, "Sichuan Tianyi Information Science & Technology Stock CO.,LTD", "SICHUAN-TIANYI-INFORMATION-SCIENCE-STOCK" }, { 0x0023CE, "KITA DENSHI CORPORATION", "KITA-DENSHI" }, { 0x0023D5, "WAREMA electronic GmbH", "WAREMA" }, { 0x002421, "MICRO-STAR INT'L CO., LTD.", "MICRO-STAR" }, { 0x002414, "Cisco Systems, Inc", "CISCO" }, { 0x002415, "Magnetic Autocontrol GmbH", "MAGNETIC-AUTOCONTROL" }, { 0x00240F, "Ishii Tool & Engineering Corporation", "ISHII-TOOL-ENGINEERING" }, { 0x002408, "Pacific Biosciences", "PACIFIC-BIOSCIENCES" }, { 0x002402, "Op-Tection GmbH", "OP-TECTION" }, { 0x0023FC, "Ultra Stereo Labs, Inc", "ULTRA-STEREO-LABS" }, { 0x0023CF, "CUMMINS-ALLISON CORP.", "CUMMINS-ALLISON" }, { 0x0023C2, "SAMSUNG Electronics. Co. LTD", "SAMSUNG-ELECTRONICS" }, { 0x0023B6, "SECURITE COMMUNICATIONS / HONEYWELL", "SECURITE-COMMUNICATION-/-HONEYWELL" }, { 0x0023BC, "EQ-SYS GmbH", "EQ-SYS" }, { 0x0023AA, "HFR, Inc.", "HFR" }, { 0x0023A9, "Beijing Detianquan Electromechanical Equipment Co., Ltd", "BEIJING-DETIANQUAN-ELECTROMECHANICAL-EQUIPMENT" }, { 0x00233C, "Alflex", "ALFLEX" }, { 0x00233B, "C-Matic Systems Ltd", "C-MATIC" }, { 0x002335, "Linkflex Co.,Ltd", "LINKFLEX" }, { 0x00232D, "SandForce", "SANDFORCE" }, { 0x002328, "ALCON TELECOMMUNICATIONS CO., LTD.", "ALCON-TELECOMMUNICATIONS" }, { 0x002321, "Avitech International Corp", "AVITECH" }, { 0x0022F8, "PIMA Electronic Systems Ltd.", "PIMA" }, { 0x00231F, "Guangda Electronic & Telecommunication Technology Development Co., Ltd.", "GUANGDA-TELECOMMUNICATION-DEVELOPMENT" }, { 0x0022E6, "Intelligent Data", "INTELLIGENT-DATA" }, { 0x0022E0, "Atlantic Software Technologies S.r.L.", "ATLANTIC-SOFTWARE-TECHNOLOGIES-S-R-L" }, { 0x0022DF, "TAMUZ Monitors", "TAMUZ-MONITORS" }, { 0x0022DA, "ANATEK, LLC", "ANATEK-LLC" }, { 0x0022D3, "Hub-Tech", "HUB-TECH" }, { 0x0022CD, "Ared Technology Co., Ltd.", "ARED" }, { 0x0022C4, "epro GmbH", "EPRO" }, { 0x0022C9, "Lenord, Bauer & Co GmbH", "LENORD-BAUER" }, { 0x0022BF, "SieAmp Group of Companies", "SIEAMP-GROUP-OF-COMPANIES" }, { 0x0022B9, "Analogix Seminconductor, Inc", "ANALOGIX-SEMINCONDUCTOR" }, { 0x0022BA, "HUTH Elektronik Systeme GmbH", "HUTH-ELEKTRONIK-SYSTEME" }, { 0x00239D, "Mapower Electronics Co., Ltd", "MAPOWER-ELECTRONICS" }, { 0x002392, "Proteus Industries Inc.", "PROTEUS-INDUSTRIES" }, { 0x00238D, "Techno Design Co., Ltd.", "TECHNO-DESIGN" }, { 0x002388, "V.T. Telematica S.p.a.", "V-T-TELEMATICA-S-P-A" }, { 0x002383, "InMage Systems Inc", "INMAGE" }, { 0x00237C, "NEOTION", "NEOTION" }, { 0x002324, "G-PRO COMPUTER", "G-PRO" }, { 0x002431, "Uni-v co.,ltd", "UNI-V" }, { 0x00241B, "iWOW Communications Pte Ltd", "IWOW-COMMUNICATION-PTE" }, { 0x002422, "Knapp Logistik Automation GmbH", "KNAPP-LOGISTIK-AUTOMATION" }, { 0x002427, "SSI COMPUTER CORP", "SSI" }, { 0x002373, "GridIron Systems, Inc.", "GRIDIRON" }, { 0x002367, "UniControls a.s.", "UNICONTROLS-A-S" }, { 0x00236E, "Burster GmbH & Co KG", "BURSTER" }, { 0x00236D, "ResMed Ltd", "RESMED" }, { 0x002360, "Lookit Technology Co., Ltd", "LOOKIT" }, { 0x00235B, "Gulfstream", "GULFSTREAM" }, { 0x002316, "KISAN ELECTRONICS CO", "KISAN-ELECTRONICS" }, { 0x00230F, "Hirsch Electronics Corporation", "HIRSCH-ELECTRONICS" }, { 0x00230A, "ARBURG GmbH & Co KG", "ARBURG" }, { 0x002309, "Janam Technologies LLC", "JANAM-TECHNOLOGIES-LLC" }, { 0x002303, "LITE-ON IT Corporation", "LITE-ON-IT" }, { 0x0022F2, "SunPower Corp", "SUNPOWER" }, { 0x0022ED, "TSI Power Corporation", "TSI-POWER" }, { 0x00228D, "GBS Laboratories LLC", "GBS-LABORATORIES-LLC" }, { 0x002287, "Titan Wireless LLC", "TITAN-WIRELESS-LLC" }, { 0x002288, "Sagrad, Inc.", "SAGRAD" }, { 0x002281, "Daintree Networks Pty", "DAINTREE-NETWORKS-PTY" }, { 0x00227A, "Telecom Design", "TELECOM-DESIGN" }, { 0x00226B, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00225D, "Digicable Network India Pvt. Ltd.", "DIGICABLE-NETWORK-INDIA-PVT" }, { 0x00225C, "Multimedia & Communication Technology", "MULTIMEDIA-COMMUNICATION" }, { 0x00216F, "SymCom, Inc.", "SYMCOM" }, { 0x002169, "Prologix, LLC.", "PROLOGIX-LLC" }, { 0x002156, "Cisco Systems, Inc", "CISCO" }, { 0x002150, "EYEVIEW ELECTRONICS", "EYEVIEW-ELECTRONICS" }, { 0x00214A, "Pixel Velocity, Inc", "PIXEL-VELOCITY" }, { 0x0021A3, "Micromint", "MICROMINT" }, { 0x002199, "Vacon Plc", "VACON-PLC" }, { 0x002195, "GWD Media Limited", "GWD-MEDIA" }, { 0x002194, "Ping Communication", "PING-COMMUNICATION" }, { 0x00218F, "Avantgarde Acoustic Lautsprechersysteme GmbH", "AVANTGARDE-ACOUSTIC-LAUTSPRECHERSYSTEME" }, { 0x002188, "EMC Corporation", "EMC" }, { 0x002182, "SandLinks Systems, Ltd.", "SANDLINKS" }, { 0x002175, "Pacific Satellite International Ltd.", "PACIFIC-SATELLITE" }, { 0x00222A, "SoundEar A/S", "SOUNDEAR-A/S" }, { 0x00221E, "Media Devices Co., Ltd.", "MEDIA-DEVICES" }, { 0x002225, "Thales Avionics Ltd", "THALES-AVIONICS" }, { 0x002218, "Verivue Inc.", "VERIVUE" }, { 0x002212, "CAI Networks, Inc.", "CAI-NETWORKS" }, { 0x00220B, "National Source Coding Center", "NATIONAL-SOURCE-CODING-CENTER" }, { 0x002205, "WeLink Solutions, Inc.", "WELINK-SOLUTIONS" }, { 0x002206, "Cyberdyne Inc.", "CYBERDYNE" }, { 0x0022B3, "Sei S.p.A.", "SEI-S-P-A" }, { 0x0022AC, "Hangzhou Siyuan Tech. Co., Ltd", "HANGZHOU-SIYUAN-TECH" }, { 0x0022A7, "Tyco Electronics AMP GmbH", "TYCO-ELECTRONICS-AMP" }, { 0x0022A0, "Delphi Corporation", "DELPHI" }, { 0x00229A, "Lastar, Inc.", "LASTAR" }, { 0x002299, "SeaMicro Inc.", "SEAMICRO" }, { 0x0021FA, "A4SP Technologies Ltd.", "A4SP-TECHNOLOGIES" }, { 0x0021F4, "INRange Systems, Inc", "INRANGE" }, { 0x0021ED, "Telegesis", "TELEGESIS" }, { 0x0021E7, "Informatics Services Corporation", "INFORMATICS-SERVICES" }, { 0x0021DB, "Santachi Video Technology (Shenzhen) Co., Ltd.", "SANTACHI-VIDEO-SHENZHEN" }, { 0x0021E1, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0021D5, "X2E GmbH", "X2E" }, { 0x0021DA, "Automation Products Group Inc.", "AUTOMATION-PRODUCTS-GROUP" }, { 0x0021CE, "NTC-Metrotek", "NTC-METROTEK" }, { 0x0021C8, "LOHUIS Networks", "LOHUIS-NETWORKS" }, { 0x0021C2, "GL Communications Inc", "GL-COMMUNICATION" }, { 0x0021BB, "Riken Keiki Co., Ltd.", "RIKEN-KEIKI" }, { 0x0021B5, "Galvanic Ltd", "GALVANIC" }, { 0x0021AF, "Radio Frequency Systems", "RADIO-FREQUENCY" }, { 0x0021B6, "Triacta Power Technologies Inc.", "TRIACTA-POWER-TECHNOLOGIES" }, { 0x0021A9, "Mobilink Telecom Co.,Ltd", "MOBILINK-TELECOM" }, { 0x0021A8, "Telephonics Corporation", "TELEPHONICS" }, { 0x00210D, "SAMSIN INNOTEC", "SAMSIN-INNOTEC" }, { 0x002141, "RADLIVE", "RADLIVE" }, { 0x002137, "Bay Controls, LLC", "BAY-CONTROLS-LLC" }, { 0x00212D, "SCIMOLEX CORPORATION", "SCIMOLEX" }, { 0x002133, "Building B, Inc", "BUILDING-B" }, { 0x002121, "VRmagic GmbH", "VRMAGIC" }, { 0x002126, "Shenzhen Torch Equipment Co., Ltd.", "SHENZHEN-TORCH-EQUIPMENT" }, { 0x002257, "3COM EUROPE LTD", "3COM" }, { 0x00224E, "SEEnergy Corp.", "SEENERGY" }, { 0x002247, "DAC ENGINEERING CO., LTD.", "DAC-ENGINEERING" }, { 0x00223D, "JumpGen Systems, LLC", "JUMPGEN-LLC" }, { 0x002237, "Shinhint Group", "SHINHINT-GROUP" }, { 0x002238, "LOGIPLUS", "LOGIPLUS" }, { 0x002231, "SMT&C Co., Ltd.", "SMT-C" }, { 0x00222B, "Nucomm, Inc.", "NUCOMM" }, { 0x001EF6, "Cisco Systems, Inc", "CISCO" }, { 0x001EEA, "Sensor Switch, Inc.", "SENSOR-SWITCH" }, { 0x001EEF, "Cantronic International Limited", "CANTRONIC" }, { 0x001EDE, "BYD COMPANY LIMITED", "BYD-COMPANY" }, { 0x001EE3, "T&W Electronics (ShenZhen) Co.,Ltd", "T-W-ELECTRONICS-SHENZHEN" }, { 0x001EDD, "WASKO S.A.", "WASKO" }, { 0x001ED9, "Mitsubishi Precision Co.,LTd.", "MITSUBISHI-PRECISION" }, { 0x001ED4, "Doble Engineering", "DOBLE-ENGINEERING" }, { 0x001ED3, "Dot Technology Int'l Co., Ltd.", "DOT" }, { 0x001ECD, "KYLAND Technology Co. LTD", "KYLAND" }, { 0x001EC6, "Obvius Holdings LLC", "OBVIUS-HOLDINGS-LLC" }, { 0x001F9D, "Cisco Systems, Inc", "CISCO" }, { 0x001FA2, "Datron World Communications, Inc.", "DATRON-WORLD-COMMUNICATION" }, { 0x001F91, "DBS Lodging Technologies, LLC", "DBS-LODGING-TECHNOLOGIES-LLC" }, { 0x001F96, "APROTECH CO.LTD", "APROTECH" }, { 0x001F90, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001F8F, "Shanghai Bellmann Digital Source Co.,Ltd.", "SHANGHAI-BELLMANN-DIGITAL-SOURCE" }, { 0x001F85, "Apriva ISS, LLC", "APRIVA-ISS-LLC" }, { 0x001F87, "Skydigital Inc.", "SKYDIGITAL" }, { 0x001F86, "digEcor", "DIGECOR" }, { 0x001F80, "Lucas Holding bv", "LUCAS-HOLDING" }, { 0x001F3E, "RP-Technik e.K.", "RP-TECHNIK-E-K" }, { 0x001F42, "Etherstack plc", "ETHERSTACK-PLC" }, { 0x001F39, "Construcciones y Auxiliar de Ferrocarriles, S.A.", "CONSTRUCCIONES-Y-AUXILIAR-DE-FERROCARRILES" }, { 0x001F2B, "Orange Logic", "ORANGE-LOGIC" }, { 0x001F2C, "Starbridge Networks", "STARBRIDGE-NETWORKS" }, { 0x001F26, "Cisco Systems, Inc", "CISCO" }, { 0x001F1A, "Prominvest", "PROMINVEST" }, { 0x001EC1, "3COM EUROPE LTD", "3COM" }, { 0x001EBA, "High Density Devices AS", "HIGH-DENSITY-DEVICES-AS" }, { 0x001EB3, "Primex Wireless", "PRIMEX-WIRELESS" }, { 0x001EB4, "UNIFAT TECHNOLOGY LTD.", "UNIFAT" }, { 0x001EA8, "Datang Mobile Communications Equipment CO.,LTD", "DATANG-MOBILE-COMMUNICATION-EQUIPMENT" }, { 0x001E9C, "Fidustron INC", "FIDUSTRON" }, { 0x001E95, "SIGMALINK", "SIGMALINK" }, { 0x001E96, "Sepura Plc", "SEPURA-PLC" }, { 0x001E8B, "Infra Access Korea Co., Ltd.", "INFRA-ACCESS-KOREA" }, { 0x001FEF, "SHINSEI INDUSTRIES CO.,LTD", "SHINSEI-INDUSTRIES" }, { 0x001FE8, "KURUSUGAWA Electronics Industry Inc,.", "KURUSUGAWA-ELECTRONICS-INDUSTRY" }, { 0x001FDC, "Mobile Safe Track Ltd", "MOBILE-SAFE-TRACK" }, { 0x001FD7, "TELERAD SA", "TELERAD" }, { 0x001FCB, "NIW Solutions", "NIW-SOLUTIONS" }, { 0x001F77, "HEOL DESIGN", "HEOL-DESIGN" }, { 0x001F73, "Teraview Technology Co., Ltd.", "TERAVIEW" }, { 0x001F6D, "Cisco Systems, Inc", "CISCO" }, { 0x001F61, "Talent Communication Networks Inc.", "TALENT-COMMUNICATION-NETWORKS" }, { 0x001F66, "PLANAR LLC", "PLANAR-LLC" }, { 0x001F5A, "Beckwith Electric Co.", "BECKWITH-ELECTRIC" }, { 0x001F53, "GEMAC Gesellschaft für Mikroelektronikanwendung Chemnitz mbH", "GEMAC-GESELLSCHAFT-FüR-MIKROELEKTRONIKANWENDUNG-CHEMNITZ-MBH" }, { 0x001F4E, "ConMed Linvatec", "CONMED-LINVATEC" }, { 0x001F54, "Lorex Technology Inc.", "LOREX" }, { 0x001F47, "MCS Logic Inc.", "MCS-LOGIC" }, { 0x001FD2, "COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD.", "COMMTECH-MACAO-COMMERCIAL-OFFSHORE" }, { 0x001FBF, "Fulhua Microelectronics Corp. Taiwan Branch", "FULHUA-MICROELECTRONICS-TAIWAN-BRANCH" }, { 0x001FAC, "Goodmill Systems Ltd", "GOODMILL" }, { 0x00211A, "LInTech Corporation", "LINTECH" }, { 0x002113, "Padtec S/A", "PADTEC-S/A" }, { 0x002114, "Hylab Technology Inc.", "HYLAB" }, { 0x00210E, "Orpak Systems L.T.D.", "ORPAK-L-T-D" }, { 0x00210A, "byd:sign Corporation", "BYD:SIGN" }, { 0x002104, "Gigaset Communications GmbH", "GIGASET-COMMUNICATION" }, { 0x001FFB, "Green Packet Bhd", "GREEN-PACKET-BHD" }, { 0x001FF6, "PS Audio International", "PS-AUDIO" }, { 0x001F19, "BEN-RI ELECTRONICA S.A.", "BEN-RI-ELECTRONICA" }, { 0x001F13, "S.& A.S. Ltd.", "S-A-S" }, { 0x001F0F, "Select Engineered Systems", "SELECT-ENGINEERED" }, { 0x001EFD, "Microbit 2.0 AB", "MICROBIT-2-0-AB" }, { 0x001F02, "Pixelmetrix Corporation Pte Ltd", "PIXELMETRIX-PTE" }, { 0x001EF0, "Gigafin Networks", "GIGAFIN-NETWORKS" }, { 0x001D2C, "Wavetrend Technologies (Pty) Limited", "WAVETREND-TECHNOLOGIES-PTY" }, { 0x001D27, "NAC-INTERCOM", "NAC-INTERCOM" }, { 0x001D18, "Power Innovation GmbH", "POWER-INNOVATION" }, { 0x001D13, "NextGTV", "NEXTGTV" }, { 0x001D0C, "MobileCompia", "MOBILECOMPIA" }, { 0x001D06, "HM Electronics, Inc.", "HM-ELECTRONICS" }, { 0x001D05, "Eaton Corporation", "EATON" }, { 0x001E62, "Siemon", "SIEMON" }, { 0x001E5D, "Holosys d.o.o.", "HOLOSYS-D-O-O" }, { 0x001E56, "Bally Wulff Entertainment GmbH", "BALLY-WULFF-ENTERTAINMENT" }, { 0x001E50, "BATTISTONI RESEARCH", "BATTISTONI-RESEARCH" }, { 0x001E4A, "Cisco Systems, Inc", "CISCO" }, { 0x001D85, "Call Direct Cellular Solutions", "CALL-DIRECT-CELLULAR-SOLUTIONS" }, { 0x001D80, "Beijing Huahuan Eletronics Co.,Ltd", "BEIJING-HUAHUAN-ELETRONICS" }, { 0x001D68, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x001D6F, "Chainzone Technology Co., Ltd", "CHAINZONE" }, { 0x001D76, "Eyeheight Ltd.", "EYEHEIGHT" }, { 0x001D7B, "Ice Energy, Inc.", "ICE-ENERGY" }, { 0x001D75, "Radioscape PLC", "RADIOSCAPE-PLC" }, { 0x001D63, "Miele & Cie. KG", "MIELE-CIE" }, { 0x001D5C, "Tom Communication Industrial Co.,Ltd.", "TOM-COMMUNICATION-INDUSTRIAL" }, { 0x001D55, "ZANTAZ, Inc", "ZANTAZ" }, { 0x001DC8, "Navionics Research Inc., dba SCADAmetrics", "NAVIONICS-RESEARCH-DBA-SCADAMETRICS" }, { 0x001DC1, "Audinate Pty L", "AUDINATE-PTY-L" }, { 0x001DBB, "Dynamic System Electronics Corp.", "DYNAMIC-SYSTEM-ELECTRONICS" }, { 0x001DAB, "SwissQual License AG", "SWISSQUAL-LICENSE" }, { 0x001E86, "MEL Co.,Ltd.", "MEL" }, { 0x001E7F, "CBM of America", "CBM-OF-AMERICA" }, { 0x001E7A, "Cisco Systems, Inc", "CISCO" }, { 0x001E79, "Cisco Systems, Inc", "CISCO" }, { 0x001E6F, "Magna-Power Electronics, Inc.", "MAGNA-POWER-ELECTRONICS" }, { 0x001E70, "Cobham Defence Communications Ltd", "COBHAM-DEFENCE-COMMUNICATION" }, { 0x001E69, "Thomson Inc.", "THOMSON" }, { 0x001D56, "Kramer Electronics Ltd.", "KRAMER-ELECTRONICS" }, { 0x001D50, "SPINETIX SA", "SPINETIX" }, { 0x001D4B, "Grid Connect Inc.", "GRID-CONNECT" }, { 0x001D46, "Cisco Systems, Inc", "CISCO" }, { 0x001D3F, "Mitron Pty Ltd", "MITRON-PTY" }, { 0x001D39, "MOOHADIGITAL CO., LTD", "MOOHADIGITAL" }, { 0x001D3A, "mh acoustics LLC", "MH-ACOUSTICS-LLC" }, { 0x001D33, "Maverick Systems Inc.", "MAVERICK" }, { 0x001E09, "ZEFATEK Co.,LTD", "ZEFATEK" }, { 0x001E04, "Hanson Research Corporation", "HANSON-RESEARCH" }, { 0x001DF7, "R. STAHL Schaltgeräte GmbH", "R-STAHL-SCHALTGERäTE" }, { 0x001DF8, "Webpro Vision Technology Corporation", "WEBPRO-VISION" }, { 0x001DF1, "Intego Systems, Inc.", "INTEGO" }, { 0x001DEA, "Commtest Instruments Ltd", "COMMTEST-INSTRUMENTS" }, { 0x001DDB, "C-BEL Corporation", "C-BEL" }, { 0x001DE5, "Cisco Systems, Inc", "CISCO" }, { 0x001DA4, "Hangzhou System Technology CO., LTD", "HANGZHOU-SYSTEM" }, { 0x001D9F, "MATT R.P.Traczynscy Sp.J.", "MATT-R-P-TRACZYNSCY-SP-J" }, { 0x001D92, "MICRO-STAR INT'L CO.,LTD.", "MICRO-STAR" }, { 0x001D91, "Digitize, Inc", "DIGITIZE" }, { 0x001D8C, "La Crosse Technology LTD", "LA-CROSSE" }, { 0x001E39, "Comsys Communication Ltd.", "COMSYS-COMMUNICATION" }, { 0x001E34, "CryptoMetrics", "CRYPTOMETRICS" }, { 0x001E2D, "STIM", "STIM" }, { 0x001E26, "Digifriends Co. Ltd", "DIGIFRIENDS" }, { 0x001E1A, "Best Source Taiwan Inc.", "BEST-SOURCE-TAIWAN" }, { 0x001E14, "Cisco Systems, Inc", "CISCO" }, { 0x001E0A, "Syba Tech Limited", "SYBA-TECH" }, { 0x001C61, "Galaxy Microsystems LImited", "GALAXY-MICROSYSTEMS" }, { 0x001C55, "Shenzhen Kaifa Technology Co.", "SHENZHEN-KAIFA" }, { 0x001C5A, "Advanced Relay Corporation", "ADVANCED-RELAY" }, { 0x001C44, "Bosch Security Systems BV", "BOSCH-SECURITY" }, { 0x001C4B, "Gener8, Inc.", "GENER8" }, { 0x001C38, "Bio-Rad Laboratories, Inc.", "BIO-RAD-LABORATORIES" }, { 0x001C3D, "WaveStorm", "WAVESTORM" }, { 0x001C3F, "International Police Technologies, Inc.", "POLICE-TECHNOLOGIES" }, { 0x001C3E, "ECKey Corporation", "ECKEY" }, { 0x001C31, "Mobile XP Technology Co., LTD", "MOBILE-XP" }, { 0x001C2C, "Synapse", "SYNAPSE" }, { 0x001CF9, "Cisco Systems, Inc", "CISCO" }, { 0x001CF3, "EVS BROADCAST EQUIPMENT", "EVS-BROADCAST-EQUIPMENT" }, { 0x001CF4, "Media Technology Systems Inc", "MEDIA" }, { 0x001CED, "ENVIRONNEMENT SA", "ENVIRONNEMENT" }, { 0x001CE3, "Optimedical Systems", "OPTIMEDICAL" }, { 0x001CDC, "Custom Computer Services, Inc.", "CUSTOM-SERVICES" }, { 0x001CD0, "Circleone Co.,Ltd.", "CIRCLEONE" }, { 0x001BF5, "Tellink Sistemas de Telecomunicación S.L.", "TELLINK-SISTEMAS-DE-TELECOMUNICACIóN-S-L" }, { 0x001BF0, "Value Platforms Limited", "VALUE-PLATFORMS" }, { 0x001BE8, "Ultratronik GmbH", "ULTRATRONIK" }, { 0x001BE1, "ViaLogy", "VIALOGY" }, { 0x001BDC, "Vencer Co., Ltd.", "VENCER" }, { 0x001BD5, "Cisco Systems, Inc", "CISCO" }, { 0x001BCE, "Measurement Devices Ltd", "MEASUREMENT-DEVICES" }, { 0x001C94, "LI-COR Biosciences", "LI-COR-BIOSCIENCES" }, { 0x001C8E, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x001C8D, "Mesa Imaging", "MESA-IMAGING" }, { 0x001C88, "TRANSYSTEM INC.", "TRANSYSTEM" }, { 0x001C83, "New Level Telecom Co., Ltd.", "NEW-LEVEL-TELECOM" }, { 0x001C7A, "Perfectone Netware Company Ltd", "PERFECTONE-NETWARE-COMPANY" }, { 0x001C7B, "Castlenet Technology Inc.", "CASTLENET" }, { 0x001C79, "Cohesive Financial Technologies LLC", "COHESIVE-FINANCIAL-TECHNOLOGIES-LLC" }, { 0x001C74, "Syswan Technologies Inc.", "SYSWAN-TECHNOLOGIES" }, { 0x001C6D, "KYOHRITSU ELECTRONIC INDUSTRY CO., LTD.", "KYOHRITSU-INDUSTRY" }, { 0x001C68, "Anhui Sun Create Electronics Co., Ltd", "ANHUI-SUN-CREATE-ELECTRONICS" }, { 0x001CC9, "Kaise Electronic Technology Co., Ltd.", "KAISE" }, { 0x001CCA, "Shanghai Gaozhi Science & Technology Development Co.", "SHANGHAI-GAOZHI-SCIENCE-DEVELOPMENT" }, { 0x001CBD, "Ezze Mobile Tech., Inc.", "EZZE-MOBILE-TECH" }, { 0x001CB8, "CBC Co., Ltd", "CBC" }, { 0x001CAD, "Wuhan Telecommunication Devices Co.,Ltd", "WUHAN-TELECOMMUNICATION-DEVICES" }, { 0x001CAE, "WiChorus, Inc.", "WICHORUS" }, { 0x001CA7, "International Quartz Limited", "QUARTZ" }, { 0x001CA0, "Production Resource Group, LLC", "PRODUCTION-RESOURCE-GROUP-LLC" }, { 0x001C9B, "FEIG ELECTRONIC GmbH", "FEIG" }, { 0x001B69, "Equaline Corporation", "EQUALINE" }, { 0x001B64, "IsaacLandKorea Co., Ltd,", "ISAACLANDKOREA" }, { 0x001B5D, "Vololink Pty Ltd", "VOLOLINK-PTY" }, { 0x001B56, "Tehuti Networks Ltd.", "TEHUTI-NETWORKS" }, { 0x001B51, "Vector Technology Corp.", "VECTOR" }, { 0x001B45, "ABB AS, Division Automation Products", "ABB-AS-DIVISION-AUTOMATION-PRODUCTS" }, { 0x001B4A, "W&W Communications, Inc.", "W-W-COMMUNICATION" }, { 0x001B43, "Beijing DG Telecommunications equipment Co.,Ltd", "BEIJING-DG-TELECOMMUNICATIONS-EQUIPMENT" }, { 0x001B3E, "Curtis, Inc.", "CURTIS" }, { 0x001B37, "Computec Oy", "COMPUTEC-OY" }, { 0x001B2B, "Cisco Systems, Inc", "CISCO" }, { 0x001BC9, "FSN DISPLAY INC", "FSN-DISPLAY" }, { 0x001BC2, "Integrated Control Technology Limitied", "INTEGRATED-CONTROL-LIMITIED" }, { 0x001BBC, "Silver Peak Systems, Inc.", "SILVER-PEAK" }, { 0x001BBD, "FMC Kongsberg Subsea AS", "FMC-KONGSBERG-SUBSEA-AS" }, { 0x001BB3, "Condalo GmbH", "CONDALO" }, { 0x001BB8, "BLUEWAY ELECTRONIC CO;LTD", "BLUEWAY" }, { 0x001BAC, "Curtiss Wright Controls Embedded Computing", "CURTISS-WRIGHT-CONTROLS-EMBEDDED-COMPUTING" }, { 0x001BB2, "Intellect International NV", "INTELLECT-NV" }, { 0x001BA5, "MyungMin Systems, Inc.", "MYUNGMIN" }, { 0x001BA0, "Awox", "AWOX" }, { 0x001B99, "KS System GmbH", "KS-SYSTEM" }, { 0x001C1B, "Hyperstone GmbH", "HYPERSTONE" }, { 0x001C0F, "Cisco Systems, Inc", "CISCO" }, { 0x001C08, "Echo360, Inc.", "ECHO360" }, { 0x001C02, "Pano Logic", "PANO-LOGIC" }, { 0x001C01, "ABB Oy Drives", "ABB-OY-DRIVES" }, { 0x001C03, "Betty TV Technology AG", "BETTY-TV" }, { 0x001B92, "l-acoustics", "L-ACOUSTICS" }, { 0x001B8D, "Electronic Computer Systems, Inc.", "" }, { 0x001B88, "Divinet Access Technologies Ltd", "DIVINET-ACCESS-TECHNOLOGIES" }, { 0x001B83, "Finsoft Ltd", "FINSOFT" }, { 0x001B7C, "A & R Cambridge", "A-R-CAMBRIDGE" }, { 0x001B76, "Ripcode, Inc.", "RIPCODE" }, { 0x001B75, "Hypermedia Systems", "HYPERMEDIA" }, { 0x001B70, "IRI Ubiteq, INC.", "IRI-UBITEQ" }, { 0x001A18, "Advanced Simulation Technology inc.", "ADVANCED-SIMULATION" }, { 0x001A0A, "Adaptive Micro-Ware Inc.", "ADAPTIVE-MICRO-WARE" }, { 0x001A05, "OPTIBASE LTD", "OPTIBASE" }, { 0x001A03, "Angel Electronics Co., Ltd.", "ANGEL-ELECTRONICS" }, { 0x0019FE, "SHENZHEN SEECOMM TECHNOLOGY CO.,LTD.", "SHENZHEN-SEECOMM" }, { 0x0019F9, "TDK-Lambda", "TDK-LAMBDA" }, { 0x0019ED, "Axesstel Inc.", "AXESSTEL" }, { 0x0019F4, "Convergens Oy Ltd", "CONVERGENS-OY" }, { 0x001A79, "TELECOMUNICATION TECHNOLOGIES LTD.", "TELECOMUNICATION-TECHNOLOGIES" }, { 0x001A99, "Smarty (HZ) Information Electronics Co., Ltd", "SMARTY-HZ-INFORMATION-ELECTRONICS" }, { 0x001A9B, "ADEC & Parter AG", "ADEC-PARTER" }, { 0x001A94, "Votronic GmbH", "VOTRONIC" }, { 0x001A83, "Pegasus Technologies Inc.", "PEGASUS-TECHNOLOGIES" }, { 0x001A7E, "LN Srithai Comm Ltd.", "LN-SRITHAI-COMM" }, { 0x001AF1, "Embedded Artists AB", "EMBEDDED-ARTISTS-AB" }, { 0x001AF6, "Woven Systems, Inc.", "WOVEN" }, { 0x001AEC, "Keumbee Electronics Co.,Ltd.", "KEUMBEE-ELECTRONICS" }, { 0x001AE0, "Mythology Tech Express Inc.", "MYTHOLOGY-TECH-EXPRESS" }, { 0x001AE5, "Mvox Technologies Inc.", "MVOX-TECHNOLOGIES" }, { 0x001AD2, "Eletronica Nitron Ltda", "ELETRONICA-NITRON-LTDA" }, { 0x001AD9, "International Broadband Electric Communications, Inc.", "BROADBAND-ELECTRIC-COMMUNICATION" }, { 0x001ACB, "Autocom Products Ltd", "AUTOCOM-PRODUCTS" }, { 0x001ACD, "Tidel Engineering LP", "TIDEL-ENGINEERING-LP" }, { 0x001A46, "Digital Multimedia Technology Co., Ltd", "DIGITAL-MULTIMEDIA" }, { 0x001A3A, "Dongahelecomm", "DONGAHELECOMM" }, { 0x001A3F, "intelbras", "INTELBRAS" }, { 0x001A41, "INOCOVA Co.,Ltd", "INOCOVA" }, { 0x001A2E, "Ziova Coporation", "ZIOVA-COPORATION" }, { 0x001A33, "ASI Communications, Inc.", "ASI-COMMUNICATION" }, { 0x001A1D, "PChome Online Inc.", "PCHOME-ONLINE" }, { 0x001A24, "Galaxy Telecom Technologies Ltd", "GALAXY-TELECOM-TECHNOLOGIES" }, { 0x0019A5, "RadarFind Corporation", "RADARFIND" }, { 0x0019AC, "GSP SYSTEMS Inc.", "GSP" }, { 0x0019B1, "Arrow7 Corporation", "ARROW7" }, { 0x00199E, "Nifty", "NIFTY" }, { 0x0019A0, "NIHON DATA SYSTENS, INC.", "NIHON-DATA-SYSTENS" }, { 0x001994, "Jorjin Technologies Inc.", "JORJIN-TECHNOLOGIES" }, { 0x00198F, "Alcatel Bell N.V.", "ALCATEL-BELL-N-V" }, { 0x0019E8, "Cisco Systems, Inc", "CISCO" }, { 0x0019DA, "Welltrans O&E Technology Co. , Ltd.", "WELLTRANS-O-E" }, { 0x0019DC, "ENENSYS Technologies", "ENENSYS-TECHNOLOGIES" }, { 0x0019C9, "S&C ELECTRIC COMPANY", "S-C-ELECTRIC-COMPANY" }, { 0x0019CE, "Progressive Gaming International", "PROGRESSIVE-GAMING" }, { 0x0019D5, "IP Innovations, Inc.", "IP-INNOVATIONS" }, { 0x0019C4, "Infocrypt Inc.", "INFOCRYPT" }, { 0x0019BF, "Citiway technology Co.,ltd", "CITIWAY" }, { 0x0019BD, "New Media Life", "NEW-MEDIA-LIFE" }, { 0x0019B8, "Boundary Devices", "BOUNDARY-DEVICES" }, { 0x001B26, "RON-Telecom ZAO", "RON-TELECOM-ZAO" }, { 0x001B1C, "Coherent", "COHERENT" }, { 0x001B1A, "e-trees Japan, Inc.", "E-TREES-JAPAN" }, { 0x001B15, "Voxtel, Inc.", "VOXTEL" }, { 0x001B09, "Matrix Telecom Pvt. Ltd.", "MATRIX-TELECOM-PVT" }, { 0x001B0E, "InoTec GmbH Organisationssysteme", "INOTEC-ORGANISATIONSSYSTEME" }, { 0x001B07, "Mendocino Software", "MENDOCINO-SOFTWARE" }, { 0x001B02, "ED Co.Ltd", "ED" }, { 0x001AFB, "Joby Inc.", "JOBY" }, { 0x001A74, "Procare International Co", "PROCARE" }, { 0x001A6D, "Cisco Systems, Inc", "CISCO" }, { 0x001A68, "Weltec Enterprise Co., Ltd.", "WELTEC" }, { 0x001A61, "PacStar Corp.", "PACSTAR" }, { 0x001A54, "Hip Shing Electronics Ltd.", "HIP-SHING-ELECTRONICS" }, { 0x001A59, "Ircona", "IRCONA" }, { 0x001A4D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001A52, "Meshlinx Wireless Inc.", "MESHLINX-WIRELESS" }, { 0x001AC6, "Micro Control Designs", "MICRO-CONTROL-DESIGNS" }, { 0x001ABC, "U4EA Technologies Ltd", "U4EA-TECHNOLOGIES" }, { 0x001AC1, "3Com Ltd", "3COM" }, { 0x001AB0, "Signal Networks Pvt. Ltd.,", "SIGNAL-NETWORKS-PVT" }, { 0x001AB5, "Home Network System", "HOME-NETWORK-SYSTEM" }, { 0x001AA9, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x00183C, "Encore Software Limited", "ENCORE-SOFTWARE" }, { 0x001841, "High Tech Computer Corp", "HIGH-TECH" }, { 0x001843, "Dawevision Ltd", "DAWEVISION" }, { 0x001837, "Universal ABIT Co., Ltd.", "UNIVERSAL-ABIT" }, { 0x001826, "Cale Access AB", "CALE-ACCESS-AB" }, { 0x00182B, "Softier", "SOFTIER" }, { 0x001818, "Cisco Systems, Inc", "CISCO" }, { 0x00181A, "AVerMedia Information Inc.", "AVERMEDIA-INFORMATION" }, { 0x00181F, "Palmmicro Communications", "PALMMICRO-COMMUNICATION" }, { 0x001804, "E-TEK DIGITAL TECHNOLOGY LIMITED", "E-TEK-DIGITAL" }, { 0x001807, "Fanstel Corp.", "FANSTEL" }, { 0x00180C, "Optelian Access Networks", "OPTELIAN-ACCESS-NETWORKS" }, { 0x0017FF, "PLAYLINE Co.,Ltd.", "PLAYLINE" }, { 0x0017F1, "Renu Electronics Pvt Ltd", "RENU-ELECTRONICS-PVT" }, { 0x0017F3, "Harris Corparation", "HARRIS-CORPARATION" }, { 0x0017F8, "Motech Industries Inc.", "MOTECH-INDUSTRIES" }, { 0x0017D4, "Monsoon Multimedia, Inc", "MONSOON-MULTIMEDIA" }, { 0x0017D9, "AAI Corporation", "AAI" }, { 0x0017E0, "Cisco Systems, Inc", "CISCO" }, { 0x001920, "KUME electric Co.,Ltd.", "KUME-ELECTRIC" }, { 0x001925, "Intelicis Corporation", "INTELICIS" }, { 0x001912, "Welcat Inc", "WELCAT" }, { 0x001914, "Winix Co., Ltd", "WINIX" }, { 0x001919, "ASTEL Inc.", "ASTEL" }, { 0x00190D, "IEEE 1394c", "IEEE-1394C" }, { 0x001901, "F1MEDIA", "F1MEDIA" }, { 0x001906, "Cisco Systems, Inc", "CISCO" }, { 0x0018F5, "Shenzhen Streaming Video Technology Company Limited", "SHENZHEN-STREAMING-VIDEO-COMPANY" }, { 0x0018F7, "Kameleon Technologies", "KAMELEON-TECHNOLOGIES" }, { 0x0018FC, "Altec Electronic AG", "ALTEC" }, { 0x001981, "Vivox Inc", "VIVOX" }, { 0x001983, "CCT R&D Limited", "CCT-R-D" }, { 0x001975, "Beijing Huisen networks technology Inc", "BEIJING-HUISEN-NETWORKS" }, { 0x00197C, "Riedel Communications GmbH", "RIEDEL-COMMUNICATION" }, { 0x001970, "Z-Com, Inc.", "Z-COM" }, { 0x001964, "Doorking Inc.", "DOORKING" }, { 0x00195F, "Valemount Networks Corporation", "VALEMOUNT-NETWORKS" }, { 0x001953, "Chainleader Communications Corp.", "CHAINLEADER-COMMUNICATION" }, { 0x001958, "Bluetooth SIG, Inc.", "BLUETOOTH-SIG" }, { 0x00195A, "Jenaer Antriebstechnik GmbH", "JENAER-ANTRIEBSTECHNIK" }, { 0x0018F0, "JOYTOTO Co., Ltd.", "JOYTOTO" }, { 0x0018E9, "Numata Corporation", "NUMATA" }, { 0x0018E4, "YIGUANG", "YIGUANG" }, { 0x0018DD, "Silicondust Engineering Ltd", "SILICONDUST-ENGINEERING" }, { 0x0018D8, "ARCH METER Corporation", "ARCH-METER" }, { 0x0018D1, "Siemens Home & Office Comm. Devices", "SIEMENS-HOME-OFFICE-COMM-DEVICES" }, { 0x0018D6, "Swirlnet A/S", "SWIRLNET-A/S" }, { 0x0018CC, "AXIOHM SAS", "AXIOHM-SAS" }, { 0x0018C7, "Real Time Automation", "REAL-TIME-AUTOMATION" }, { 0x00186C, "Neonode AB", "NEONODE-AB" }, { 0x001878, "Mackware GmbH", "MACKWARE" }, { 0x001867, "Datalogic ADC", "DATALOGIC-ADC" }, { 0x00185B, "Network Chemistry, Inc", "NETWORK-CHEMISTRY" }, { 0x001862, "Seagate Technology", "SEAGATE" }, { 0x00184F, "8 Ways Technology Corp.", "8-WAYS" }, { 0x001854, "Argard Co., Ltd", "ARGARD" }, { 0x001856, "EyeFi, Inc", "EYEFI" }, { 0x001848, "Vecima Networks Inc.", "VECIMA-NETWORKS" }, { 0x001945, "RF COncepts, LLC", "RF-CONCEPTS-LLC" }, { 0x00194C, "Fujian Stelcom information & Technology CO.,Ltd", "FUJIAN-STELCOM-INFORMATION" }, { 0x001940, "Rackable Systems", "RACKABLE" }, { 0x001934, "TRENDON TOUCH TECHNOLOGY CORP.", "TRENDON-TOUCH" }, { 0x001939, "Gigamips", "GIGAMIPS" }, { 0x001931, "Balluff GmbH", "BALLUFF" }, { 0x0018BB, "Eliwell Controls srl", "ELIWELL-CONTROLS-SRL" }, { 0x0018B9, "Cisco Systems, Inc", "CISCO" }, { 0x0018B4, "Dawon Media Inc.", "DAWON-MEDIA" }, { 0x0018AD, "NIDEC SANKYO CORPORATION", "NIDEC-SANKYO" }, { 0x0018A8, "AnNeal Technology Inc.", "ANNEAL" }, { 0x00189C, "Weldex Corporation", "WELDEX" }, { 0x0018A1, "Tiqit Computers, Inc.", "TIQIT-COMPUTERS" }, { 0x001897, "JESS-LINK PRODUCTS Co., LTD", "JESS-LINK-PRODUCTS" }, { 0x001892, "ads-tec GmbH", "ADS-TEC" }, { 0x001890, "RadioCOM, s.r.o.", "RADIOCOM-S-R-O" }, { 0x001884, "Fon Technology S.L.", "FON-S-L" }, { 0x00187F, "ZODIANET", "ZODIANET" }, { 0x0016D1, "ZAT a.s.", "ZAT-A-S" }, { 0x0016C3, "BA Systems Inc", "BA" }, { 0x0016BE, "INFRANET, Inc.", "INFRANET" }, { 0x0016B7, "Seoul Commtech", "SEOUL-COMMTECH" }, { 0x0016B2, "DriveCam Inc", "DRIVECAM" }, { 0x0016B0, "VK Corporation", "VK" }, { 0x0016AB, "Dansensor A/S", "DANSENSOR-A/S" }, { 0x0016A6, "Dovado FZ-LLC", "DOVADO-FZ-LLC" }, { 0x0017CF, "iMCA-GmbH", "IMCA" }, { 0x0017C3, "KTF Technologies Inc.", "KTF-TECHNOLOGIES" }, { 0x0017B7, "Tonze Technology Co.", "TONZE" }, { 0x0017BC, "Touchtunes Music Corporation", "TOUCHTUNES-MUSIC" }, { 0x0017B5, "Peerless Systems Corporation", "PEERLESS" }, { 0x001723, "Summit Data Communications", "SUMMIT-DATA-COMMUNICATION" }, { 0x00171C, "NT MicroSystems, Inc.", "NT-MICROSYSTEMS" }, { 0x001710, "Casa Systems Inc.", "CASA" }, { 0x001715, "Qstik", "QSTIK" }, { 0x001717, "Leica Geosystems AG", "LEICA-GEOSYSTEMS" }, { 0x00170B, "Contela, Inc.", "CONTELA" }, { 0x0016FF, "Wamin Optocomm Mfg Corp", "WAMIN-OPTOCOMM-MFG" }, { 0x001774, "Elesta GmbH", "ELESTA" }, { 0x001779, "QuickTel", "QUICKTEL" }, { 0x00177B, "Azalea Networks inc", "AZALEA-NETWORKS" }, { 0x001764, "ATMedia GmbH", "ATMEDIA" }, { 0x001766, "Accense Technology, Inc.", "ACCENSE" }, { 0x00175F, "XENOLINK Communications Co., Ltd.", "XENOLINK-COMMUNICATION" }, { 0x001751, "Online Corporation", "ONLINE" }, { 0x001758, "ThruVision Ltd", "THRUVISION" }, { 0x001745, "INNOTZ CO., Ltd", "INNOTZ" }, { 0x00174C, "Millipore", "MILLIPORE" }, { 0x00179F, "Apricorn", "APRICORN" }, { 0x0017A9, "Sentivision", "SENTIVISION" }, { 0x001793, "Tigi Corporation", "TIGI" }, { 0x00178C, "Independent Witness, Inc", "INDEPENDENT-WITNESS" }, { 0x00178E, "Gunnebo Cash Automation AB", "GUNNEBO-CASH-AUTOMATION-AB" }, { 0x001780, "Applied Biosystems B.V.", "APPLIED-BIOSYSTEMS" }, { 0x001787, "Brother, Brother & Sons ApS", "BROTHER-BROTHER-SONS-APS" }, { 0x00176B, "Kiyon, Inc.", "KIYON" }, { 0x00BAC0, "Biometric Access Company", "BIOMETRIC-ACCESS-COMPANY" }, { 0x001673, "Bury GmbH & Co. KG", "BURY" }, { 0x001671, "Symphox Information Co.", "SYMPHOX-INFORMATION" }, { 0x001665, "Cellon France", "CELLON-FRANCE" }, { 0x00166A, "TPS", "TPS" }, { 0x00165E, "Precision I/O", "PRECISION-I/O" }, { 0x001657, "Aegate Ltd", "AEGATE" }, { 0x001659, "Z.M.P. RADWAG", "Z-M-P-RADWAG" }, { 0x001658, "Fusiontech Technologies Inc.", "FUSIONTECH-TECHNOLOGIES" }, { 0x001652, "Hoatech Technologies, Inc.", "HOATECH-TECHNOLOGIES" }, { 0x001646, "Cisco Systems, Inc", "CISCO" }, { 0x00164B, "Quorion Data Systems GmbH", "QUORION-DATA" }, { 0x001740, "Bluberi Gaming Technologies Inc", "BLUBERI-GAMING-TECHNOLOGIES" }, { 0x001736, "iiTron Inc.", "IITRON" }, { 0x00172F, "NeuLion Incorporated", "NEULION-INCORPORATED" }, { 0x001728, "Selex Communications", "SELEX-COMMUNICATION" }, { 0x00172A, "Proware Technology Corp.(By Unifosa)", "PROWARE-BY-UNIFOSA" }, { 0x00169A, "Quadrics Ltd", "QUADRICS" }, { 0x0016A1, "3Leaf Networks", "3LEAF-NETWORKS" }, { 0x001693, "PowerLink Technology Inc.", "POWERLINK" }, { 0x001695, "AVC Technology (International) Limited", "AVC" }, { 0x00168E, "Vimicro corporation", "VIMICRO" }, { 0x001682, "Pro Dex, Inc", "PRO-DEX" }, { 0x001687, "Chubb CSC-Vendor AP", "CHUBB-CSC-VENDOR-AP" }, { 0x00167B, "Haver&Boecker", "HAVER-BOECKER" }, { 0x0016F3, "CAST Information Co., Ltd", "CAST-INFORMATION" }, { 0x0016EE, "Royaldigital Inc.", "ROYALDIGITAL" }, { 0x0016E7, "Dynamix Promotions Limited", "DYNAMIX-PROMOTIONS" }, { 0x0016E0, "3Com Ltd", "3COM" }, { 0x0016D6, "TDA Tech Pty Ltd", "TDA-TECH-PTY" }, { 0x00151E, "Ethernet Powerlink Standardization Group (EPSG)", "ETHERNET-POWERLINK-STANDARDIZATION-GROUP-EPSG" }, { 0x001525, "Chamberlain Access Solutions", "CHAMBERLAIN-ACCESS-SOLUTIONS" }, { 0x001519, "StoreAge Networking Technologies", "STOREAGE-NETWORKING-TECHNOLOGIES" }, { 0x001518, "Shenzhen 10MOONS Technology Development CO.,Ltd", "SHENZHEN-10MOONS-DEVELOPMENT" }, { 0x001514, "Hu Zhou NAVA Networks&Electronics Ltd.", "HU-ZHOU-NAVA-NETWORKS-ELECTRONICS" }, { 0x00150E, "OPENBRAIN TECHNOLOGIES CO., LTD.", "OPENBRAIN-TECHNOLOGIES" }, { 0x00150F, "mingjong", "MINGJONG" }, { 0x00150D, "Hoana Medical, Inc.", "HOANA-MEDICAL" }, { 0x001508, "Global Target Enterprise Inc", "GLOBAL-TARGET" }, { 0x0014FC, "Extandon, Inc.", "EXTANDON" }, { 0x001501, "LexBox", "LEXBOX" }, { 0x0014F5, "OSI Security Devices", "OSI-SECURITY-DEVICES" }, { 0x0014E9, "Nortech International", "NORTECH" }, { 0x0014EE, "Western Digital Technologies, Inc.", "WESTERN-DIGITAL-TECHNOLOGIES" }, { 0x0014DF, "HI-P Tech Corporation", "HI-P-TECH" }, { 0x0014E4, "infinias, LLC", "INFINIAS-LLC" }, { 0x0014D3, "SEPSA", "SEPSA" }, { 0x0014D8, "bio-logic SA", "BIO-LOGIC" }, { 0x0014D2, "Kyuden Technosystems Corporation", "KYUDEN-TECHNOSYSTEMS" }, { 0x0015E0, "Ericsson", "ERICSSON" }, { 0x0015DC, "KT&C Co., Ltd.", "KT-C" }, { 0x0015D5, "NICEVT", "NICEVT" }, { 0x0015D7, "Reti Corporation", "RETI" }, { 0x0015D6, "OSLiNK Sp. z o.o.", "OSLINK-SP-Z-O-O" }, { 0x0015C4, "FLOVEL CO., LTD.", "FLOVEL" }, { 0x0015C9, "Gumstix, Inc", "GUMSTIX" }, { 0x0015BD, "Group 4 Technology Ltd", "GROUP-4" }, { 0x0015B6, "ShinMaywa Industries, Ltd.", "SHINMAYWA-INDUSTRIES" }, { 0x001581, "MAKUS Inc.", "MAKUS" }, { 0x00156B, "Perfisans Networks Corp.", "PERFISANS-NETWORKS" }, { 0x001570, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x00155D, "Microsoft Corporation", "MICROSOFT" }, { 0x00155F, "GreenPeak Technologies", "GREENPEAK-TECHNOLOGIES" }, { 0x001564, "BEHRINGER Spezielle Studiotechnik GmbH", "BEHRINGER-SPEZIELLE-STUDIOTECHNIK" }, { 0x00155E, "Morgan Stanley", "MORGAN-STANLEY" }, { 0x001558, "FOXCONN", "FOXCONN" }, { 0x001551, "RadioPulse Inc.", "RADIOPULSE" }, { 0x001549, "Dixtal Biomedica Ind. Com. Ltda", "DIXTAL-BIOMEDICA-IND-COM-LTDA" }, { 0x00154C, "Saunders Electronics", "SAUNDERS-ELECTRONICS" }, { 0x00154A, "WANSHIH ELECTRONIC CO., LTD", "WANSHIH" }, { 0x00153D, "ELIM PRODUCT CO.", "ELIM-PRODUCT" }, { 0x001544, "coM.s.a.t. AG", "COM-T" }, { 0x001531, "KOCOM", "KOCOM" }, { 0x001538, "RFID, Inc.", "RFID" }, { 0x00161D, "Innovative Wireless Technologies, Inc.", "INNOVATIVE-WIRELESS-TECHNOLOGIES" }, { 0x00161C, "e:cue", "E:CUE" }, { 0x00160C, "LPL DEVELOPMENT S.A. DE C.V", "LPL-DEVELOPMENT-DE-C-V" }, { 0x001611, "Altecon Srl", "ALTECON-SRL" }, { 0x001612, "Otsuka Electronics Co., Ltd.", "OTSUKA-ELECTRONICS" }, { 0x001605, "YORKVILLE SOUND INC.", "YORKVILLE-SOUND" }, { 0x0015F9, "Cisco Systems, Inc", "CISCO" }, { 0x001600, "CelleBrite Mobile Synchronization", "CELLEBRITE-MOBILE-SYNCHRONIZATION" }, { 0x0015ED, "Fulcrum Microsystems, Inc.", "FULCRUM-MICROSYSTEMS" }, { 0x0015E1, "Picochip Ltd", "PICOCHIP" }, { 0x0015E6, "MOBILE TECHNIKA Inc.", "MOBILE-TECHNIKA" }, { 0x0015B1, "Ambient Corporation", "AMBIENT" }, { 0x0015AC, "Capelon AB", "CAPELON-AB" }, { 0x0015A7, "Robatech AG", "ROBATECH" }, { 0x001594, "BIXOLON CO.,LTD", "BIXOLON" }, { 0x00158D, "Jennic Ltd", "JENNIC" }, { 0x001588, "Salutica Allied Solutions Sdn Bhd", "SALUTICA-ALLIED-SOLUTIONS-SDN-BHD" }, { 0x0014CC, "Zetec, Inc.", "ZETEC" }, { 0x0014C0, "Symstream Technology Group Ltd", "SYMSTREAM-GROUP" }, { 0x0014C5, "Alive Technologies Pty Ltd", "ALIVE-TECHNOLOGIES-PTY" }, { 0x0014B9, "MSTAR SEMICONDUCTOR", "MSTAR-SEMICONDUCTOR" }, { 0x0014AF, "Datasym POS Inc.", "DATASYM-POS" }, { 0x0014A8, "Cisco Systems, Inc", "CISCO" }, { 0x00163C, "Rebox B.V.", "REBOX" }, { 0x00162E, "Space Shuttle Hi-Tech Co., Ltd.", "SPACE-SHUTTLE-HI-TECH" }, { 0x001629, "Nivus GmbH", "NIVUS" }, { 0x001622, "BBH SYSTEMS GMBH", "BBH" }, { 0x001616, "BROWAN COMMUNICATION INC.", "BROWAN-COMMUNICATION" }, { 0x00161B, "Micronet Corporation", "MICRONET" }, { 0x00135B, "PanelLink Cinema, LLC", "PANELLINK-CINEMA-LLC" }, { 0x001362, "ShinHeung Precision Co., Ltd.", "SHINHEUNG-PRECISION" }, { 0x001351, "Niles Audio Corporation", "NILES-AUDIO" }, { 0x001345, "Eaton Corporation", "EATON" }, { 0x00134A, "Engim, Inc.", "ENGIM" }, { 0x00133E, "MetaSwitch", "METASWITCH" }, { 0x00132B, "Phoenix Digital", "PHOENIX-DIGITAL" }, { 0x001332, "Beijing Topsec Network Security Technology Co., Ltd.", "BEIJING-TOPSEC-NETWORK-SECURITY" }, { 0x001337, "Orient Power Home Network Ltd.", "ORIENT-POWER-HOME-NETWORK" }, { 0x001338, "FRESENIUS-VIAL", "FRESENIUS-VIAL" }, { 0x00137A, "Netvox Technology Co., Ltd.", "NETVOX" }, { 0x001381, "CHIPS & Systems, Inc.", "CHIPS" }, { 0x001386, "ABB Inc./Totalflow", "ABB-/TOTALFLOW" }, { 0x001374, "Atheros Communications, Inc.", "ATHEROS-COMMUNICATION" }, { 0x00136E, "Techmetro Corp.", "TECHMETRO" }, { 0x001373, "BLwave Electronics Co., Ltd", "BLWAVE-ELECTRONICS" }, { 0x001367, "Narayon. Co., Ltd.", "NARAYON" }, { 0x001361, "Biospace Co., Ltd.", "BIOSPACE" }, { 0x001357, "Soyal Technology Co., Ltd.", "SOYAL" }, { 0x001326, "ECM Systems Ltd", "ECM" }, { 0x001325, "Cortina Systems Inc", "CORTINA" }, { 0x00131B, "BeCell Innovations Corp.", "BECELL-INNOVATIONS" }, { 0x00131C, "LiteTouch, Inc.", "LITETOUCH" }, { 0x001309, "Ocean Broadband Networks", "OCEAN-BROADBAND-NETWORKS" }, { 0x00130E, "Focusrite Audio Engineering Limited", "FOCUSRITE-AUDIO-ENGINEERING" }, { 0x0012FC, "PLANET System Co.,LTD", "PLANET-SYSTEM" }, { 0x0012F6, "MDK CO.,LTD.", "MDK" }, { 0x0012F1, "IFOTEC", "IFOTEC" }, { 0x00143E, "AirLink Communications, Inc.", "AIRLINK-COMMUNICATION" }, { 0x001437, "GSTeletech Co.,Ltd.", "GSTELETECH" }, { 0x001430, "ViPowER, Inc", "VIPOWER" }, { 0x00142B, "Edata Communication Inc.", "EDATA-COMMUNICATION" }, { 0x001424, "Merry Electrics CO., LTD.", "MERRY-ELECTRICS" }, { 0x00141F, "SunKwang Electronics Co., Ltd", "SUNKWANG-ELECTRONICS" }, { 0x00141A, "DEICY CORPORATION", "DEICY" }, { 0x001413, "Trebing & Himstedt Prozeßautomation GmbH & Co. KG", "TREBING-HIMSTEDT-PROZEßAUTOMATION" }, { 0x001415, "Intec Automation inc.", "INTEC-AUTOMATION" }, { 0x001414, "Jumpnode Systems LLC.", "JUMPNODE-LLC" }, { 0x001405, "OpenIB, Inc.", "OPENIB" }, { 0x00140B, "FIRST INTERNATIONAL COMPUTER, INC.", "FIRST" }, { 0x0013FE, "GRANDTEC ELECTRONIC CORP.", "GRANDTEC" }, { 0x0013F9, "Cavera Systems", "CAVERA" }, { 0x0013F2, "Klas Ltd", "KLAS" }, { 0x0013EC, "Netsnapper Technologies SARL", "NETSNAPPER-TECHNOLOGIES-SARL" }, { 0x0013E1, "Iprobe AB", "IPROBE-AB" }, { 0x0013E2, "GeoVision Inc.", "GEOVISION" }, { 0x0013D5, "RuggedCom", "RUGGEDCOM" }, { 0x0013DC, "IBTEK INC.", "IBTEK" }, { 0x0013D0, "t+ Medical Ltd", "T+-MEDICAL" }, { 0x0013CB, "Zenitel Norway AS", "ZENITEL-NORWAY-AS" }, { 0x0013C6, "OpenGear, Inc", "OPENGEAR" }, { 0x0013C5, "LIGHTRON FIBER-OPTIC DEVICES INC.", "LIGHTRON-FIBER-OPTIC-DEVICES" }, { 0x0013BB, "Smartvue Corporation", "SMARTVUE" }, { 0x0013BF, "Media System Planning Corp.", "MEDIA-SYSTEM-PLANNING" }, { 0x0013B5, "Wavesat", "WAVESAT" }, { 0x0013AE, "Radiance Technologies, Inc.", "RADIANCE-TECHNOLOGIES" }, { 0x0013A2, "MaxStream, Inc", "MAXSTREAM" }, { 0x00139B, "ioIMAGE Ltd.", "IOIMAGE" }, { 0x00139C, "Exavera Technologies, Inc.", "EXAVERA-TECHNOLOGIES" }, { 0x001396, "Acbel Polytech Inc.", "ACBEL-POLYTECH" }, { 0x00138A, "QINGDAO GOERTEK ELECTRONICS CO.,LTD.", "QINGDAO-GOERTEK-ELECTRONICS" }, { 0x001389, "Redes de Telefonía Móvil S.A.", "REDES-DE-TELEFONíA-MóVIL" }, { 0x00149C, "HF Company", "HF-COMPANY" }, { 0x0014A3, "Vitelec BV", "VITELEC" }, { 0x001497, "ZHIYUAN Eletronics co.,ltd.", "ZHIYUAN-ELETRONICS" }, { 0x001496, "Phonic Corp.", "PHONIC" }, { 0x001490, "ASP Corporation", "ASP" }, { 0x001489, "B15402100 - JANDEI, S.L.", "B15402100---JANDEI-S-L" }, { 0x001484, "Cermate Technologies Inc.", "CERMATE-TECHNOLOGIES" }, { 0x00147F, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x00147A, "Eubus GmbH", "EUBUS" }, { 0x001473, "Bookham Inc", "BOOKHAM" }, { 0x001467, "ArrowSpan Inc.", "ARROWSPAN" }, { 0x001460, "Kyocera Wireless Corp.", "KYOCERA-WIRELESS" }, { 0x00145B, "SeekerNet Inc.", "SEEKERNET" }, { 0x00145A, "Neratec Solutions AG", "NERATEC-SOLUTIONS" }, { 0x001459, "Moram Co., Ltd.", "MORAM" }, { 0x001454, "Symwave", "SYMWAVE" }, { 0x001443, "Consultronics Europe Ltd", "CONSULTRONICS-EUROPE" }, { 0x00144A, "Taiwan Thick-Film Ind. Corp.", "TAIWAN-THICK-FILM-IND" }, { 0x0011C4, "Terminales de Telecomunicacion Terrestre, S.L.", "TERMINALES-DE-TELECOMUNICACION-TERRESTRE-S-L" }, { 0x0011C9, "MTT Corporation", "MTT" }, { 0x0011BF, "AESYS S.p.A.", "AESYS-S-P-A" }, { 0x0011B8, "Liebherr - Elektronik GmbH", "LIEBHERR---ELEKTRONIK" }, { 0x0011AC, "Simtec Electronics", "SIMTEC-ELECTRONICS" }, { 0x0011B1, "BlueExpert Technology Corp.", "BLUEEXPERT" }, { 0x0011B2, "2001 Technology Inc.", "2001" }, { 0x0011A0, "Vtech Engineering Canada Ltd", "VTECH-ENGINEERING-CANADA" }, { 0x0011A5, "Fortuna Electronic Corp.", "FORTUNA" }, { 0x001276, "CG Power Systems Ireland Limited", "CG-POWER-IRELAND" }, { 0x00126F, "Rayson Technology Co., Ltd.", "RAYSON" }, { 0x001270, "NGES Denro Systems", "NGES-DENRO" }, { 0x00126A, "OPTOELECTRONICS Co., Ltd.", "OPTOELECTRONICS" }, { 0x001263, "Data Voice Technologies GmbH", "DATA-VOICE-TECHNOLOGIES" }, { 0x00125E, "CAEN", "CAEN" }, { 0x00125D, "CyberNet Inc.", "CYBERNET" }, { 0x001259, "THERMO ELECTRON KARLSRUHE", "THERMO-ELECTRON-KARLSRUHE" }, { 0x001254, "Spectra Technologies Holdings Company Ltd", "SPECTRA-TECHNOLOGIES-HOLDINGS-COMPANY" }, { 0x001253, "AudioDev AB", "AUDIODEV-AB" }, { 0x00129D, "First International Computer do Brasil", "FIRST-DO-BRASIL" }, { 0x001291, "KWS Computersysteme GmbH", "KWS-COMPUTERSYSTEME" }, { 0x001296, "Addlogix", "ADDLOGIX" }, { 0x00128F, "Montilio", "MONTILIO" }, { 0x001282, "Qovia", "QOVIA" }, { 0x001289, "Advance Sterilization Products", "ADVANCE-STERILIZATION-PRODUCTS" }, { 0x00127D, "MobileAria", "MOBILEARIA" }, { 0x0011F4, "woori-net", "WOORI-NET" }, { 0x0011EE, "Estari, Inc.", "ESTARI" }, { 0x0011ED, "802 Global", "802-GLOBAL" }, { 0x0011E8, "Tixi.Com", "TIXI-COM" }, { 0x0011DB, "Land-Cellular Corporation", "LAND-CELLULAR" }, { 0x0011DC, "Glunz & Jensen", "GLUNZ-JENSEN" }, { 0x0011E1, "Arcelik A.S", "ARCELIK-A-S" }, { 0x0011CE, "Ubisense Limited", "UBISENSE" }, { 0x0011D5, "Hangzhou Sunyard System Engineering Co.,Ltd.", "HANGZHOU-SUNYARD-SYSTEM-ENGINEERING" }, { 0x001246, "T.O.M TECHNOLOGY INC..", "T-O-M" }, { 0x00124D, "Inducon BV", "INDUCON" }, { 0x001241, "a2i marketing center", "A2I-MARKETING-CENTER" }, { 0x00123A, "Posystech Inc., Co.", "POSYSTECH" }, { 0x001234, "Camille Bauer", "CAMILLE-BAUER" }, { 0x00122A, "VTech Telecommunications Ltd.", "VTECH-TELECOMMUNICATIONS" }, { 0x00122E, "Signal Technology - AISD", "SIGNAL---AISD" }, { 0x001233, "JRC TOKKI Co.,Ltd.", "JRC-TOKKI" }, { 0x001199, "2wcom Systems GmbH", "2WCOM" }, { 0x00118F, "EUTECH INSTRUMENTS PTE. LTD.", "EUTECH-INSTRUMENTS-PTE" }, { 0x001183, "Datalogic ADC, Inc.", "DATALOGIC-ADC" }, { 0x00117C, "e-zy.net", "E-ZY-NET" }, { 0x001176, "Intellambda Systems, Inc.", "INTELLAMBDA" }, { 0x0012C0, "HotLava Systems, Inc.", "HOTLAVA" }, { 0x0012B5, "Vialta, Inc.", "VIALTA" }, { 0x0012BC, "Echolab LLC", "ECHOLAB-LLC" }, { 0x0012B6, "Santa Barbara Infrared, Inc.", "SANTA-BARBARA-INFRARED" }, { 0x0012B0, "Efore Oyj (Plc)", "EFORE-OYJ-PLC" }, { 0x0012A4, "ThingMagic, LLC", "THINGMAGIC-LLC" }, { 0x0012A9, "3Com Ltd", "3COM" }, { 0x0012A3, "Trust International B.V.", "TRUST" }, { 0x001224, "NexQL Corporation", "NEXQL" }, { 0x001229, "BroadEasy Technologies Co.,Ltd", "BROADEASY-TECHNOLOGIES" }, { 0x00121D, "Netfabric Corporation", "NETFABRIC" }, { 0x001211, "Protechna Herbst GmbH & Co. KG", "PROTECHNA-HERBST" }, { 0x001218, "ARUZE Corporation", "ARUZE" }, { 0x001205, "Terrasat Communications, Inc.", "TERRASAT-COMMUNICATION" }, { 0x00120A, "Emerson Climate Technologies GmbH", "EMERSON-CLIMATE-TECHNOLOGIES" }, { 0x0011FE, "Keiyo System Research, Inc.", "KEIYO-SYSTEM-RESEARCH" }, { 0x0011F8, "AIRAYA Corp", "AIRAYA" }, { 0x0012EC, "Movacolor b.v.", "MOVACOLOR" }, { 0x0012E5, "Time America, Inc.", "TIME-AMERICA" }, { 0x0012E0, "Codan Limited", "CODAN" }, { 0x0012DF, "Novomatic AG", "NOVOMATIC" }, { 0x0012D9, "Cisco Systems, Inc", "CISCO" }, { 0x0012C6, "TGC America, Inc", "TGC-AMERICA" }, { 0x0012CD, "ASEM SpA", "ASEM-SPA" }, { 0x000FE9, "GW TECHNOLOGIES CO.,LTD.", "GW-TECHNOLOGIES" }, { 0x000FDD, "SORDIN AB", "SORDIN-AB" }, { 0x000FD6, "Sarotech Co., Ltd", "SAROTECH" }, { 0x002654, "3Com Corporation", "3COM" }, { 0x000FD0, "ASTRI", "ASTRI" }, { 0x000FCF, "DataWind Research", "DATAWIND-RESEARCH" }, { 0x000FC3, "PalmPalm Technology, Inc.", "PALMPALM" }, { 0x001144, "Assurance Technology Corp", "ASSURANCE" }, { 0x00113E, "JL Corporation", "JL" }, { 0x001131, "UNATECH. CO.,LTD", "UNATECH" }, { 0x001137, "AICHI ELECTRIC CO., LTD.", "AICHI-ELECTRIC" }, { 0x00112D, "iPulse Systems", "IPULSE" }, { 0x001123, "Appointech, Inc.", "APPOINTECH" }, { 0x00111D, "Hectrix Limited", "HECTRIX" }, { 0x000F6C, "ADDI-DATA GmbH", "ADDI-DATA" }, { 0x000F6B, "GateWare Communications GmbH", "GATEWARE-COMMUNICATION" }, { 0x000F5F, "Nicety Technologies Inc. (NTS)", "NICETY-TECHNOLOGIES-NTS" }, { 0x000F5A, "Peribit Networks", "PERIBIT-NETWORKS" }, { 0x000F53, "Solarflare Communications Inc", "SOLARFLARE-COMMUNICATION" }, { 0x000F47, "ROBOX SPA", "ROBOX-SPA" }, { 0x000F4C, "Elextech INC", "ELEXTECH" }, { 0x001170, "GSC SRL", "GSC-SRL" }, { 0x001169, "EMS Satcom", "EMS-SATCOM" }, { 0x001164, "ACARD Technology Corp.", "ACARD" }, { 0x00115F, "ITX Security Co., Ltd.", "ITX-SECURITY" }, { 0x00115A, "Ivoclar Vivadent AG", "IVOCLAR-VIVADENT" }, { 0x001159, "MATISSE NETWORKS INC", "MATISSE-NETWORKS" }, { 0x001153, "Trident Tek, Inc.", "TRIDENT-TEK" }, { 0x001150, "Belkin Corporation", "BELKIN" }, { 0x001151, "Mykotronx", "MYKOTRONX" }, { 0x00114A, "KAYABA INDUSTRY Co,.Ltd.", "KAYABA-INDUSTRY" }, { 0x001110, "Maxanna Technology Co., Ltd.", "MAXANNA" }, { 0x001117, "CESNET", "CESNET" }, { 0x001104, "TELEXY", "TELEXY" }, { 0x00110B, "Franklin Technology Systems", "FRANKLIN" }, { 0x001100, "Schneider Electric", "SCHNEIDER-ELECTRIC" }, { 0x000FFE, "G-PRO COMPUTER", "G-PRO" }, { 0x000FEF, "Thales e-Transactions GmbH", "THALES-E-TRANSACTIONS" }, { 0x000FF0, "Sunray Co. Ltd.", "SUNRAY" }, { 0x000FF5, "GN&S company", "GN-S-COMPANY" }, { 0x000FCA, "A-JIN TECHLINE CO, LTD", "A-JIN-TECHLINE" }, { 0x000FBD, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x000FBE, "e-w/you Inc.", "E-W/YOU" }, { 0x000FB7, "Cavium", "CAVIUM" }, { 0x000FA4, "Sprecher Automation GmbH", "SPRECHER-AUTOMATION" }, { 0x000FAB, "Kyushu Electronics Systems Inc.", "KYUSHU-ELECTRONICS" }, { 0x000F9D, "DisplayLink (UK) Ltd", "DISPLAYLINK-UK" }, { 0x000F98, "Avamax Co. Ltd.", "AVAMAX" }, { 0x000F8B, "Orion MultiSystems Inc", "ORION-MULTISYSTEMS" }, { 0x000F8C, "Gigawavetech Pte Ltd", "GIGAWAVETECH-PTE" }, { 0x000F91, "Aerotelecom Co.,Ltd.", "AEROTELECOM" }, { 0x000F7E, "Ablerex Electronics Co., LTD", "ABLEREX-ELECTRONICS" }, { 0x000F85, "ADDO-Japan Corporation", "ADDO-JAPAN" }, { 0x000F72, "Sandburst", "SANDBURST" }, { 0x000F79, "Bluetooth Interest Group Inc.", "BLUETOOTH-INTEREST-GROUP" }, { 0x000F19, "Boston Scientific", "BOSTON-SCIENTIFIC" }, { 0x000F0D, "Hunt Electronic Co., Ltd.", "HUNT" }, { 0x000F01, "DIGITALKS INC", "DIGITALKS" }, { 0x000EFA, "Optoway Technology Incorporation", "OPTOWAY-INCORPORATION" }, { 0x000EF3, "Smarthome", "SMARTHOME" }, { 0x000EEE, "Muco Industrie BV", "MUCO-INDUSTRIE" }, { 0x000EE7, "AAC ELECTRONICS CORP.", "AAC-ELECTRONICS" }, { 0x000F38, "Netstar", "NETSTAR" }, { 0x000F40, "Optical Internetworking Forum", "OPTICAL-INTERNETWORKING-FORUM" }, { 0x000F33, "DUALi Inc.", "DUALI" }, { 0x000F2C, "Uplogix, Inc.", "UPLOGIX" }, { 0x000F26, "WorldAccxx LLC", "WORLDACCXX-LLC" }, { 0x000F25, "AimValley B.V.", "AIMVALLEY" }, { 0x000F13, "Nisca corporation", "NISCA" }, { 0x000F14, "Mindray Co., Ltd.", "MINDRAY" }, { 0x000EE1, "ExtremeSpeed Inc.", "EXTREMESPEED" }, { 0x000EDB, "XiNCOM Corp.", "XINCOM" }, { 0x000EE2, "Custom Engineering", "CUSTOM-ENGINEERING" }, { 0x000ED5, "COPAN Systems Inc.", "COPAN" }, { 0x000EC9, "YOKO Technology Corp.", "YOKO" }, { 0x000ED0, "Privaris, Inc.", "PRIVARIS" }, { 0x000ED7, "Cisco Systems, Inc", "CISCO" }, { 0x000EC4, "Iskra Transmission d.d.", "ISKRA-TRANSMISSION-D-D" }, { 0x000EC3, "Logic Controls, Inc.", "LOGIC-CONTROLS" }, { 0x000EBD, "Burdick, a Quinton Compny", "BURDICK-A-QUINTON-COMPNY" }, { 0x000EB1, "Newcotech,Ltd", "NEWCOTECH" }, { 0x000DAA, "S.A.Tehnology co.,Ltd.", "TEHNOLOGY" }, { 0x000DA0, "NEDAP N.V.", "NEDAP-N-V" }, { 0x000D9F, "RF Micro Devices", "RF-MICRO-DEVICES" }, { 0x000D9A, "INFOTEC LTD", "INFOTEC" }, { 0x000D8D, "Prosoft Technology, Inc", "PROSOFT" }, { 0x000D8E, "Koden Electronics Co., Ltd.", "KODEN-ELECTRONICS" }, { 0x000D84, "Makus Inc.", "MAKUS" }, { 0x000D83, "Sanmina-SCI Hungary Ltd.", "SANMINA-SCI-HUNGARY" }, { 0x000D76, "Hokuto Denshi Co,. Ltd.", "HOKUTO-DENSHI" }, { 0x000D7D, "Afco Systems", "AFCO" }, { 0x000E51, "tecna elettronica srl", "TECNA-ELETTRONICA-SRL" }, { 0x000E4C, "Bermai Inc.", "BERMAI" }, { 0x000E4B, "atrium c and i", "ATRIUM-C-AND-I" }, { 0x000E3E, "Sun Optronics Inc", "SUN-OPTRONICS" }, { 0x000E45, "Beijing Newtry Electronic Technology Ltd", "BEIJING-NEWTRY" }, { 0x000E39, "Cisco Systems, Inc", "CISCO" }, { 0x000E32, "Kontron Medical", "KONTRON-MEDICAL" }, { 0x000E2B, "Safari Technologies", "SAFARI-TECHNOLOGIES" }, { 0x000E2C, "Netcodec co.", "NETCODEC" }, { 0x000E1F, "TCL Networks Equipment Co., Ltd.", "TCL-NETWORKS-EQUIPMENT" }, { 0x000E26, "Gincom Technology Corp.", "GINCOM" }, { 0x000E1A, "JPS Communications", "JPS-COMMUNICATION" }, { 0x000E19, "LogicaCMG Pty Ltd", "LOGICACMG-PTY" }, { 0x000E13, "Accu-Sort Systems inc.", "ACCU-SORT" }, { 0x000E0F, "ERMME", "ERMME" }, { 0x000E05, "WIRELESS MATRIX CORP.", "WIRELESS-MATRIX" }, { 0x000E06, "Team Simoco Ltd", "TEAM-SIMOCO" }, { 0x000E0B, "Netac Technology Co., Ltd.", "NETAC" }, { 0x000DF8, "ORGA Kartensysteme GmbH", "ORGA-KARTENSYSTEME" }, { 0x000DFF, "CHENMING MOLD INDUSTRY CORP.", "CHENMING-MOLD-INDUSTRY" }, { 0x000DEC, "Cisco Systems, Inc", "CISCO" }, { 0x000DF3, "Asmax Solutions", "ASMAX-SOLUTIONS" }, { 0x000DE6, "YOUNGBO ENGINEERING CO.,LTD", "YOUNGBO-ENGINEERING" }, { 0x000DE5, "Samsung Thales", "SAMSUNG-THALES" }, { 0x000DE0, "ICPDAS Co.,LTD", "ICPDAS" }, { 0x000DD3, "SAMWOO Telecommunication Co.,Ltd.", "SAMWOO-TELECOMMUNICATION" }, { 0x000DD4, "Symantec Corporation", "SYMANTEC" }, { 0x000DD9, "Anton Paar GmbH", "ANTON-PAAR" }, { 0x000DCD, "GROUPE TXCOM", "GROUPE-TXCOM" }, { 0x000EAA, "Scalent Systems, Inc.", "SCALENT" }, { 0x000E9E, "Topfield Co., Ltd", "TOPFIELD" }, { 0x000EA3, "CNCR-IT CO.,LTD,HangZhou P.R.CHINA", "CNCR-IT-HANGZHOU-P-R-CHINA" }, { 0x000EA4, "Certance Inc.", "CERTANCE" }, { 0x000E92, "Open Telecom", "OPEN-TELECOM" }, { 0x000E97, "Ultracker Technology CO., Inc", "ULTRACKER" }, { 0x000E91, "Navico Auckland Ltd", "NAVICO-AUCKLAND" }, { 0x000E8B, "Astarte Technology Co, Ltd.", "ASTARTE" }, { 0x000E84, "Cisco Systems, Inc", "CISCO" }, { 0x000D6A, "Redwood Technologies LTD", "REDWOOD-TECHNOLOGIES" }, { 0x000D71, "boca systems", "BOCA" }, { 0x000D5E, "NEC Personal Products", "NEC-PERSONAL-PRODUCTS" }, { 0x000D63, "DENT Instruments, Inc.", "DENT-INSTRUMENTS" }, { 0x000D64, "COMAG Handels AG", "COMAG-HANDELS" }, { 0x000D57, "Fujitsu I-Network Systems Limited.", "FUJITSU-I-NETWORK" }, { 0x000D52, "Comart system", "COMART-SYSTEM" }, { 0x000D51, "DIVR Systems, Inc.", "DIVR" }, { 0x000D47, "Collex", "COLLEX" }, { 0x000DC1, "SafeWeb Inc", "SAFEWEB" }, { 0x000DC6, "DigiRose Technology Co., Ltd.", "DIGIROSE" }, { 0x000DBA, "Océ Document Technologies GmbH", "OCé-DOCUMENT-TECHNOLOGIES" }, { 0x000DB4, "NETASQ", "NETASQ" }, { 0x000DB3, "SDO Communication Corperation", "SDO-COMMUNICATION-CORPERATION" }, { 0x000DAE, "SAMSUNG HEAVY INDUSTRIES CO., LTD.", "SAMSUNG-HEAVY-INDUSTRIES" }, { 0x000DA6, "Universal Switching Corporation", "UNIVERSAL-SWITCHING" }, { 0x000E78, "Amtelco", "AMTELCO" }, { 0x000E70, "in2 Networks", "IN2-NETWORKS" }, { 0x000E6B, "Janitza electronics GmbH", "JANITZA-ELECTRONICS" }, { 0x000E64, "Elphel, Inc", "ELPHEL" }, { 0x000E5D, "Triple Play Technologies A/S", "TRIPLE-PLAY-TECHNOLOGIES-A/S" }, { 0x000E5E, "Raisecom Technology", "RAISECOM" }, { 0x000BE2, "Lumenera Corporation", "LUMENERA" }, { 0x000BE7, "COMFLUX TECHNOLOGY INC.", "COMFLUX" }, { 0x000BD6, "Paxton Access Ltd", "PAXTON-ACCESS" }, { 0x000BD2, "Remopro Technology Inc.", "REMOPRO" }, { 0x000BC6, "ISAC, Inc.", "ISAC" }, { 0x000BCB, "Fagor Automation , S. Coop", "FAGOR-AUTOMATION-S-COOP" }, { 0x000BBF, "Cisco Systems, Inc", "CISCO" }, { 0x000BBA, "Harmonic, Inc", "HARMONIC" }, { 0x000BB3, "RiT technologies Ltd.", "RIT-TECHNOLOGIES" }, { 0x000C38, "TelcoBridges Inc.", "TELCOBRIDGES" }, { 0x000C3F, "Cogent Defence & Security Networks,", "COGENT-DEFENCE-SECURITY-NETWORKS" }, { 0x000C30, "Cisco Systems, Inc", "CISCO" }, { 0x000C26, "Weintek Labs. Inc.", "WEINTEK-LABS" }, { 0x000C2E, "Openet information technology(shenzhen) Co., Ltd.", "OPENET-INFORMATION-SHENZHEN" }, { 0x000C25, "Allied Telesis Labs, Inc. ", "ALLIED-TELESIS-LABS" }, { 0x000C1F, "Glimmerglass Networks", "GLIMMERGLASS-NETWORKS" }, { 0x000C24, "ANATOR", "ANATOR" }, { 0x000C1B, "ORACOM Co, Ltd.", "ORACOM" }, { 0x000C19, "Telio Communications GmbH", "TELIO-COMMUNICATION" }, { 0x000C7A, "DaTARIUS Technologies GmbH", "DATARIUS-TECHNOLOGIES" }, { 0x000C67, "OYO ELECTRIC CO.,LTD", "OYO-ELECTRIC" }, { 0x000C4F, "UDTech Japan Corporation", "UDTECH-JAPAN" }, { 0x000C54, "Pedestal Networks, Inc", "PEDESTAL-NETWORKS" }, { 0x000C5B, "HANWANG TECHNOLOGY CO.,LTD", "HANWANG" }, { 0x000C60, "ACM Systems", "ACM" }, { 0x000C62, "ABB AB, Cewe-Control ", "ABB-AB-CEWE-CONTROL" }, { 0x000C48, "QoStek Corporation", "QOSTEK" }, { 0x000C4D, "Curtiss-Wright Controls Avionics & Electronics", "CURTISS-WRIGHT-CONTROLS-AVIONICS-ELECTRONICS" }, { 0x000C14, "Diagnostic Instruments, Inc.", "DIAGNOSTIC-INSTRUMENTS" }, { 0x000C07, "Iftest AG", "IFTEST" }, { 0x000C06, "Nixvue Systems Pte Ltd", "NIXVUE-PTE" }, { 0x000C08, "HUMEX Technologies Corp.", "HUMEX-TECHNOLOGIES" }, { 0x000C0D, "Communications & Power Industries / Satcom Division", "COMMUNICATION-POWER-INDUSTRIES-/-SATCOM-DIVISION" }, { 0x000BF5, "Shanghai Sibo Telecom Technology Co.,Ltd", "SHANGHAI-SIBO-TELECOM" }, { 0x000BFA, "EXEMYS SRL", "EXEMYS-SRL" }, { 0x000C01, "Abatron AG", "ABATRON" }, { 0x000BEE, "inc.jet, Incorporated", "JET-INCORPORATED" }, { 0x000CE6, "Meru Networks Inc", "MERU-NETWORKS" }, { 0x000CEB, "CNMP Networks, Inc.", "CNMP-NETWORKS" }, { 0x000CE2, "Rolls-Royce", "ROLLS-ROYCE" }, { 0x000CEC, "Spectracom Corp.", "SPECTRACOM" }, { 0x000CD7, "Nallatech Ltd", "NALLATECH" }, { 0x000CDE, "ABB STOTZ-KONTAKT GmbH", "ABB-STOTZ-KONTAKT" }, { 0x000CD2, "Schaffner EMV AG", "SCHAFFNER-EMV" }, { 0x000CD8, "M. K. Juchheim GmbH & Co", "M-K-JUCHHEIM" }, { 0x000CC6, "Ka-Ro electronics GmbH", "KA-RO-ELECTRONICS" }, { 0x000CCB, "Design Combus Ltd", "DESIGN-COMBUS" }, { 0x000CC5, "Nextlink Co., Ltd.", "NEXTLINK" }, { 0x000CB3, "ROUND Co.,Ltd.", "ROUND" }, { 0x000CB8, "MEDION AG", "MEDION" }, { 0x000CBF, "Holy Stone Ent. Co., Ltd.", "HOLY-STONE-ENT" }, { 0x000A07, "WebWayOne Ltd", "WEBWAYONE" }, { 0x000CA1, "SIGMACOM Co., LTD.", "SIGMACOM" }, { 0x000CA6, "Mintera Corporation", "MINTERA" }, { 0x000CA8, "Garuda Networks Corporation", "GARUDA-NETWORKS" }, { 0x000CAD, "BTU International", "BTU" }, { 0x000C95, "PrimeNet", "PRIMENET" }, { 0x000C9A, "Hitech Electronics Corp.", "HITECH-ELECTRONICS" }, { 0x000C8E, "Mentor Engineering Inc", "MENTOR-ENGINEERING" }, { 0x000C93, "Xeline Co., Ltd.", "XELINE" }, { 0x000C7F, "synertronixx GmbH", "SYNERTRONIXX" }, { 0x000C82, "NETWORK TECHNOLOGIES INC", "NETWORK-TECHNOLOGIES" }, { 0x000C87, "AMD", "AMD" }, { 0x000C73, "TELSON ELECTRONICS CO., LTD", "TELSON-ELECTRONICS" }, { 0x000D1D, "HIGH-TEK HARNESS ENT. CO., LTD.", "HIGH-TEK-HARNESS-ENT" }, { 0x000D1E, "Control Techniques", "CONTROL-TECHNIQUES" }, { 0x000D0C, "MDI Security Systems", "MDI-SECURITY" }, { 0x000D11, "DENTSPLY - Gendex", "DENTSPLY---GENDEX" }, { 0x000D05, "cybernet manufacturing inc.", "CYBERNET-MANUFACTURING" }, { 0x000CF9, "Xylem Water Solutions", "XYLEM-WATER-SOLUTIONS" }, { 0x000CFE, "Grand Electronic Co., Ltd", "GRAND" }, { 0x000CF2, "GAMESA Eólica", "GAMESA-EóLICA" }, { 0x000D43, "DRS Tactical Systems Inc.", "DRS-TACTICAL" }, { 0x000D37, "WIPLUG", "WIPLUG" }, { 0x000D3E, "APLUX Communications Ltd.", "APLUX-COMMUNICATION" }, { 0x000D3D, "Hammerhead Systems, Inc.", "HAMMERHEAD" }, { 0x000D30, "IceFyre Semiconductor", "ICEFYRE-SEMICONDUCTOR" }, { 0x000D2B, "Racal Instruments", "RACAL-INSTRUMENTS" }, { 0x000D24, "SENTEC E&E CO., LTD.", "SENTEC-E-E" }, { 0x000D18, "Mega-Trend Electronics CO., LTD.", "MEGA-TREND-ELECTRONICS" }, { 0x000BA4, "Shiron Satellite Communications Ltd. (1996)", "SHIRON-SATELLITE-COMMUNICATION-1996" }, { 0x000BA9, "CloudShield Technologies, Inc.", "CLOUDSHIELD-TECHNOLOGIES" }, { 0x000BA3, "Siemens AG, I&S", "SIEMENS-I-S" }, { 0x000B91, "Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH", "AGLAIA-GESELLSCHAFT-FüR-BILDVERARBEITUNG-UND-KOMMUNIKATION-MBH" }, { 0x000B96, "Innotrac Diagnostics Oy", "INNOTRAC-DIAGNOSTICS-OY" }, { 0x000B9D, "TwinMOS Technologies Inc.", "TWINMOS-TECHNOLOGIES" }, { 0x000B8A, "MITEQ Inc.", "MITEQ" }, { 0x000B7E, "SAGINOMIYA Seisakusho Inc.", "SAGINOMIYA-SEISAKUSHO" }, { 0x000B83, "DATAWATT B.V.", "DATAWATT" }, { 0x000AAD, "Stargames Corporation", "STARGAMES" }, { 0x000AB2, "Fresnel Wireless Systems", "FRESNEL-WIRELESS" }, { 0x000AB4, "ETIC Telecommunications", "ETIC-TELECOMMUNICATIONS" }, { 0x000AB9, "Astera Technologies Corp.", "ASTERA-TECHNOLOGIES" }, { 0x000AA1, "V V S Limited", "V-V-S" }, { 0x000AA6, "Hochiki Corporation", "HOCHIKI" }, { 0x000A8E, "Invacom Ltd", "INVACOM" }, { 0x000A9F, "Pannaway Technologies, Inc.", "PANNAWAY-TECHNOLOGIES" }, { 0x000A99, "Calamp Wireless Networks Inc", "CALAMP-WIRELESS-NETWORKS" }, { 0x000A93, "W2 Networks, Inc.", "W2-NETWORKS" }, { 0x000A7F, "Teradon Industries, Inc", "TERADON-INDUSTRIES" }, { 0x000A86, "Lenze", "LENZE" }, { 0x000A8B, "Cisco Systems, Inc", "CISCO" }, { 0x000B15, "Platypus Technology", "PLATYPUS" }, { 0x000B10, "11wave Technonlogy Co.,Ltd", "11WAVE-TECHNONLOGY" }, { 0x000B09, "Ifoundry Systems Singapore", "IFOUNDRY-SINGAPORE" }, { 0x000B04, "Volktek Corporation", "VOLKTEK" }, { 0x000AFD, "Kentec Electronics", "KENTEC-ELECTRONICS" }, { 0x000B02, "Dallmeier electronic", "DALLMEIER" }, { 0x000AF1, "Clarity Design, Inc.", "CLARITY-DESIGN" }, { 0x000AF6, "Emerson Climate Technologies Retail Solutions, Inc.", "EMERSON-CLIMATE-TECHNOLOGIES-RETAIL-SOLUTIONS" }, { 0x000A0E, "Invivo Research Inc.", "INVIVO-RESEARCH" }, { 0x000A13, "Honeywell Video Systems", "HONEYWELL-VIDEO" }, { 0x000A04, "3Com Ltd", "3COM" }, { 0x0009FD, "Ubinetics Limited", "UBINETICS" }, { 0x0009F4, "Alcon Laboratories, Inc.", "ALCON-LABORATORIES" }, { 0x0009E7, "ADC Techonology", "ADC-TECHONOLOGY" }, { 0x0009EE, "MEIKYO ELECTRIC CO.,LTD", "MEIKYO-ELECTRIC" }, { 0x0009F3, "WELL Communication Corp.", "WELL-COMMUNICATION" }, { 0x0009E2, "Sinbon Electronics Co., Ltd.", "SINBON-ELECTRONICS" }, { 0x0009DB, "eSpace", "ESPACE" }, { 0x000B70, "Load Technology, Inc.", "LOAD" }, { 0x000B72, "Lawo AG", "LAWO" }, { 0x000B77, "Cogent Systems, Inc.", "COGENT" }, { 0x000B71, "Litchfield Communications Inc.", "LITCHFIELD-COMMUNICATION" }, { 0x000B5F, "Cisco Systems, Inc", "CISCO" }, { 0x000B64, "Kieback & Peter GmbH & Co KG", "KIEBACK-PETER" }, { 0x000B5B, "Rincon Research Corporation", "RINCON-RESEARCH" }, { 0x000B56, "Cybernetics", "CYBERNETICS" }, { 0x000B4E, "VertexRSI, General Dynamics SatCOM Technologies, Inc.", "VERTEXRSI-GENERAL-DYNAMICS-SATCOM-TECHNOLOGIES" }, { 0x000B53, "INITIUM Co., Ltd.", "INITIUM" }, { 0x000A35, "Xilinx", "XILINX" }, { 0x000A3A, "J-THREE INTERNATIONAL Holding Co., Ltd.", "J-THREE-HOLDING" }, { 0x000A3C, "Enerpoint Ltd.", "ENERPOINT" }, { 0x000A41, "Cisco Systems, Inc", "CISCO" }, { 0x000A48, "Albatron Technology", "ALBATRON" }, { 0x000A2E, "MAPLE NETWORKS CO., LTD", "MAPLE-NETWORKS" }, { 0x000A26, "CEIA S.p.A.", "CEIA-S-P-A" }, { 0x000A28, "Motorola", "MOTOROLA" }, { 0x000A21, "Integra Telecom Co. Ltd", "INTEGRA-TELECOM" }, { 0x000A1A, "Imerge Ltd", "IMERGE" }, { 0x000A15, "Silicon Data, Inc", "SILICON-DATA" }, { 0x000B42, "commax Co., Ltd.", "COMMAX" }, { 0x000B47, "Advanced Energy", "ADVANCED-ENERGY" }, { 0x000B36, "Productivity Systems, Inc.", "PRODUCTIVITY" }, { 0x000B28, "Quatech Inc.", "QUATECH" }, { 0x000B2F, "bplan GmbH", "BPLAN" }, { 0x000B1C, "SIBCO bv", "SIBCO" }, { 0x000B21, "G-Star Communications Inc.", "G-STAR-COMMUNICATION" }, { 0x000B23, "Siemens Subscriber Networks", "SIEMENS-SUBSCRIBER-NETWORKS" }, { 0x000A7A, "Kyoritsu Electric Co., Ltd.", "KYORITSU-ELECTRIC" }, { 0x000A6E, "Harmonic, Inc", "HARMONIC" }, { 0x000A73, "Scientific Atlanta", "SCIENTIFIC-ATLANTA" }, { 0x000A60, "Autostar Technology Pte Ltd", "AUTOSTAR-PTE" }, { 0x000A67, "OngCorp", "ONGCORP" }, { 0x000A6C, "Walchem Corporation", "WALCHEM" }, { 0x000A5B, "Power-One as", "POWER-ONE-AS" }, { 0x000A59, "HW server", "HW-SERVER" }, { 0x000A54, "Laguna Hills, Inc.", "LAGUNA-HILLS" }, { 0x000A4D, "Noritz Corporation", "NORITZ" }, { 0x000ADF, "Gennum Corporation", "GENNUM" }, { 0x000AD8, "IPCserv Technology Corp.", "IPCSERV" }, { 0x000ACC, "Winnow Networks, Inc.", "WINNOW-NETWORKS" }, { 0x000AD1, "MWS", "MWS" }, { 0x000AD3, "INITECH Co., Ltd", "INITECH" }, { 0x000AC0, "Fuyoh Video Industry CO., LTD.", "FUYOH-VIDEO-INDUSTRY" }, { 0x000AC5, "Color Kinetics", "COLOR-KINETICS" }, { 0x00097B, "Cisco Systems, Inc", "CISCO" }, { 0x000982, "Loewe Opta GmbH", "LOEWE-OPTA" }, { 0x000976, "Datasoft ISDN Systems GmbH", "DATASOFT-ISDN" }, { 0x000969, "Meret Optical Communications", "MERET-OPTICAL-COMMUNICATION" }, { 0x000963, "Dominion Lasercom Inc.", "DOMINION-LASERCOM" }, { 0x00096A, "Cloverleaf Communications Inc.", "CLOVERLEAF-COMMUNICATION" }, { 0x00096F, "Beijing Zhongqing Elegant Tech. Corp.,Limited", "BEIJING-ZHONGQING-ELEGANT-TECH" }, { 0x00095D, "Dialogue Technology Corp.", "DIALOGUE" }, { 0x00095F, "Telebyte, Inc.", "TELEBYTE" }, { 0x000958, "INTELNET S.A.", "INTELNET" }, { 0x00094C, "Communication Weaver Co.,Ltd.", "COMMUNICATION-WEAVER" }, { 0x000951, "Apogee Imaging Systems", "APOGEE-IMAGING" }, { 0x00094B, "FillFactory NV", "FILLFACTORY-NV" }, { 0x0009AE, "OKANO ELECTRIC CO.,LTD", "OKANO-ELECTRIC" }, { 0x0009AD, "HYUNDAI SYSCOMM, INC.", "HYUNDAI-SYSCOMM" }, { 0x0009B4, "KISAN TELECOM CO., LTD.", "KISAN-TELECOM" }, { 0x0009A8, "Eastmode Pte Ltd", "EASTMODE-PTE" }, { 0x00099B, "Western Telematic Inc.", "WESTERN-TELEMATIC" }, { 0x00099C, "Naval Research Laboratory", "NAVAL-RESEARCH-LABORATORY" }, { 0x0009A1, "Telewise Communications, Inc.", "TELEWISE-COMMUNICATION" }, { 0x000995, "Castle Technology Ltd", "CASTLE" }, { 0x000989, "VividLogic Inc.", "VIVIDLOGIC" }, { 0x00098E, "ipcas GmbH", "IPCAS" }, { 0x00097C, "Cisco Systems, Inc", "CISCO" }, { 0x0009C8, "SINAGAWA TSUSHIN KEISOU SERVICE", "SINAGAWA-TSUSHIN-KEISOU-SERVICE" }, { 0x0009CF, "iAd GmbH", "IAD" }, { 0x0009D4, "Transtech Networks", "TRANSTECH-NETWORKS" }, { 0x0009BB, "MathStar, Inc.", "MATHSTAR" }, { 0x0009C0, "6WIND", "6WIND" }, { 0x000807, "Access Devices Limited", "ACCESS-DEVICES" }, { 0x000801, "HighSpeed Surfing Inc.", "HIGHSPEED-SURFING" }, { 0x000808, "PPT Vision, Inc.", "PPT-VISION" }, { 0x0007F7, "Galtronics", "GALTRONICS" }, { 0x0007FE, "Rigaku Corporation", "RIGAKU" }, { 0x0007F8, "ITDevices, Inc.", "ITDEVICES" }, { 0x0007EB, "Cisco Systems, Inc", "CISCO" }, { 0x0007F1, "TeraBurst Networks Inc.", "TERABURST-NETWORKS" }, { 0x0007E5, "Coup Corporation", "COUP" }, { 0x0007DF, "Vbrick Systems Inc.", "VBRICK" }, { 0x0007DE, "eCopilt AB", "ECOPILT-AB" }, { 0x0007CF, "Anoto AB", "ANOTO-AB" }, { 0x0007D2, "Logopak Systeme GmbH & Co. KG", "LOGOPAK-SYSTEME" }, { 0x0008AA, "KARAM", "KARAM" }, { 0x0008A4, "Cisco Systems, Inc", "CISCO" }, { 0x000898, "Gigabit Optics Corporation", "GIGABIT-OPTICS" }, { 0x00089D, "UHD-Elektronik", "UHD-ELEKTRONIK" }, { 0x000890, "AVILINKS SA", "AVILINKS" }, { 0x000884, "Index Braille AB", "INDEX-BRAILLE-AB" }, { 0x000877, "Liebert-Hiross Spa", "LIEBERT-HIROSS-SPA" }, { 0x08006B, "ACCEL TECHNOLOGIES INC.", "ACCEL-TECHNOLOGIES" }, { 0x000871, "NORTHDATA Co., Ltd.", "NORTHDATA" }, { 0x00087D, "Cisco Systems, Inc", "CISCO" }, { 0x000876, "SDSystem", "SDSYSTEM" }, { 0x0008E6, "Littlefeet", "LITTLEFEET" }, { 0x0008D9, "Mitadenshi Co.,LTD", "MITADENSHI" }, { 0x0008D4, "IneoQuest Technologies, Inc", "INEOQUEST-TECHNOLOGIES" }, { 0x0008CD, "With-Net Inc", "WITH-NET" }, { 0x0008D3, "Hercules Technologies S.A.S.", "HERCULES-TECHNOLOGIES-S" }, { 0x0008C3, "Contex A/S", "CONTEX-A/S" }, { 0x0008BD, "TEPG-US", "TEPG-US" }, { 0x0008BC, "Ilevo AB", "ILEVO-AB" }, { 0x0008B7, "HIT Incorporated", "HIT-INCORPORATED" }, { 0x0008B0, "BKtel communications GmbH", "BKTEL-COMMUNICATION" }, { 0x00086A, "Securiton Gmbh", "SECURITON" }, { 0x000864, "Fasy S.p.A.", "FASY-S-P-A" }, { 0x00085E, "PCO AG", "PCO" }, { 0x000851, "Canadian Bank Note Company, Ltd.", "CANADIAN-BANK-NOTE-COMPANY" }, { 0x000852, "Davolink Co. Inc.", "DAVOLINK" }, { 0x000857, "Polaris Networks, Inc.", "POLARIS-NETWORKS" }, { 0x00081B, "Windigo Systems", "WINDIGO" }, { 0x000822, "InPro Comm", "INPRO-COMM" }, { 0x00082E, "Multitone Electronics PLC", "MULTITONE-ELECTRONICS-PLC" }, { 0x00081C, "@pos.com", "@POS-COM" }, { 0x000828, "Koei Engineering Ltd.", "KOEI-ENGINEERING" }, { 0x000816, "Bluelon ApS", "BLUELON-APS" }, { 0x000815, "CATS Co., Ltd.", "CATS" }, { 0x00091A, "Macat Optics & Electronics Co., Ltd.", "MACAT-OPTICS-ELECTRONICS" }, { 0x000919, "MDS Gateways", "MDS-GATEWAYS" }, { 0x000913, "SystemK Corporation", "SYSTEMK" }, { 0x00090C, "Mayekawa Mfg. Co. Ltd.", "MAYEKAWA-MFG" }, { 0x000907, "Chrysalis Development", "CHRYSALIS-DEVELOPMENT" }, { 0x000900, "TMT", "TMT" }, { 0x0008F8, "UTC CCS", "UTC-CCS" }, { 0x0008F3, "WANY", "WANY" }, { 0x0008EC, "Optical Zonu Corporation", "OPTICAL-ZONU" }, { 0x0008E0, "ATO Technology Ltd.", "ATO" }, { 0x0008E5, "IDK Corporation", "IDK" }, { 0x000945, "Palmmicro Communications Inc", "PALMMICRO-COMMUNICATION" }, { 0x00093E, "C&I Technologies", "C-I-TECHNOLOGIES" }, { 0x000932, "Omnilux", "OMNILUX" }, { 0x000939, "ShibaSoku Co.,Ltd.", "SHIBASOKU" }, { 0x000926, "YODA COMMUNICATIONS, INC.", "YODA-COMMUNICATION" }, { 0x00092B, "iQstor Networks, Inc.", "IQSTOR-NETWORKS" }, { 0x00092C, "Hitpoint Inc.", "HITPOINT" }, { 0x00091F, "A&D Co., Ltd.", "A-D" }, { 0x000751, "m-u-t AG", "M-U-T" }, { 0x000750, "Cisco Systems, Inc", "CISCO" }, { 0x000746, "TURCK, Inc.", "TURCK" }, { 0x00074A, "Carl Valentin GmbH", "CARL-VALENTIN" }, { 0x00073A, "Inventel Systemes", "INVENTEL-SYSTEMES" }, { 0x000734, "ONStor, Inc.", "ONSTOR" }, { 0x000739, "Scotty Group Austria Gmbh", "SCOTTY-GROUP-AUSTRIA" }, { 0x00072D, "CNSystems", "CNSYSTEMS" }, { 0x000727, "Zi Corporation (HK) Ltd.", "ZI-HK" }, { 0x000717, "Wieland Electric GmbH", "WIELAND-ELECTRIC" }, { 0x00071E, "Tri-M Engineering / Nupak Dev. Corp.", "TRI-M-ENGINEERING-/-NUPAK-DEV" }, { 0x000723, "ELCON Systemtechnik GmbH", "ELCON-SYSTEMTECHNIK" }, { 0x00071D, "Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A.", "SATELSA-SISTEMAS-Y-APLICACIONES-DE-TELECOMUNICACIONES" }, { 0x000632, "Mesco Engineering GmbH", "MESCO-ENGINEERING" }, { 0x000625, "The Linksys Group, Inc.", "THE-LINKSYS-GROUP" }, { 0x00062C, "Bivio Networks", "BIVIO-NETWORKS" }, { 0x000624, "Gentner Communications Corp.", "GENTNER-COMMUNICATION" }, { 0x00061B, "Notebook Development Lab. Lenovo Japan Ltd.", "NOTEBOOK-DEVELOPMENT-LAB-LENOVO-JAPAN" }, { 0x000622, "Chung Fu Chen Yeh Enterprise Corp.", "CHUNG-FU-CHEN-YEH" }, { 0x00061C, "Hoshino Metal Industries, Ltd.", "HOSHINO-METAL-INDUSTRIES" }, { 0x000621, "Hinox, Co., Ltd.", "HINOX" }, { 0x00060B, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x000611, "Zeus Wireless, Inc.", "ZEUS-WIRELESS" }, { 0x000615, "Kimoto Electric Co., Ltd.", "KIMOTO-ELECTRIC" }, { 0x000605, "Inncom International, Inc.", "INNCOM" }, { 0x0005E3, "LightSand Communications, Inc.", "LIGHTSAND-COMMUNICATION" }, { 0x0005EF, "ADOIR Digital Technology", "ADOIR-DIGITAL" }, { 0x0005F6, "Young Chang Co. Ltd.", "YOUNG-CHANG" }, { 0x0005E9, "Unicess Network, Inc.", "UNICESS-NETWORK" }, { 0x0005F0, "SATEC", "SATEC" }, { 0x0005FC, "Schenck Pegasus Corp.", "SCHENCK-PEGASUS" }, { 0x0005E0, "Empirix Corp.", "EMPIRIX" }, { 0x0005D6, "L-3 Linkabit", "L-3-LINKABIT" }, { 0x0005C4, "Telect, Inc.", "TELECT" }, { 0x0005D0, "Solinet Systems", "SOLINET" }, { 0x0005CA, "Hitron Technology, Inc.", "HITRON" }, { 0x0005BD, "ROAX BV", "ROAX" }, { 0x0005BE, "Kongsberg Seatex AS", "KONGSBERG-SEATEX-AS" }, { 0x0005C3, "Pacific Instruments, Inc.", "PACIFIC-INSTRUMENTS" }, { 0x00059D, "Daniel Computing Systems, Inc.", "DANIEL-COMPUTING" }, { 0x000796, "LSI Systems, Inc.", "LSI" }, { 0x000790, "Tri-M Technologies (s) Limited", "TRI-M-TECHNOLOGIES-S" }, { 0x000784, "Cisco Systems, Inc", "CISCO" }, { 0x000789, "DONGWON SYSTEMS", "DONGWON" }, { 0x000783, "SynCom Network, Inc.", "SYNCOM-NETWORK" }, { 0x00078A, "Mentor Data System Inc.", "MENTOR-DATA-SYSTEM" }, { 0x00077A, "Infoware System Co., Ltd.", "INFOWARE-SYSTEM" }, { 0x00076D, "Flexlight Networks", "FLEXLIGHT-NETWORKS" }, { 0x000769, "Italiana Macchi SpA", "ITALIANA-MACCHI-SPA" }, { 0x000773, "Ascom Powerline Communications Ltd.", "ASCOM-POWERLINE-COMMUNICATION" }, { 0x00075D, "Celleritas Inc.", "CELLERITAS" }, { 0x000763, "Sunniwell Cyber Tech. Co., Ltd.", "SUNNIWELL-CYBER-TECH" }, { 0x000756, "Juyoung Telecom", "JUYOUNG-TELECOM" }, { 0x0007C9, "Technol Seven Co., Ltd.", "TECHNOL-SEVEN" }, { 0x00047B, "Schlumberger", "SCHLUMBERGER" }, { 0x0007C3, "Thomson", "THOMSON" }, { 0x0007BD, "Radionet Ltd.", "RADIONET" }, { 0x0007B0, "Office Details, Inc.", "OFFICE-DETAILS" }, { 0x0007B7, "Samurai Ind. Prods Eletronicos Ltda", "SAMURAI-IND-PRODS-ELETRONICOS-LTDA" }, { 0x0007B6, "Telecom Technology Ltd.", "TELECOM" }, { 0x0007A3, "Ositis Software, Inc.", "OSITIS-SOFTWARE" }, { 0x0007A9, "Novasonics", "NOVASONICS" }, { 0x0007AC, "Eolring", "EOLRING" }, { 0x00079C, "Golden Electronics Technology Co., Ltd.", "GOLDEN-ELECTRONICS" }, { 0x0006AB, "W-Link Systems, Inc.", "W-LINK" }, { 0x0006A5, "PINON Corp.", "PINON" }, { 0x0006A1, "Celsian Technologies, Inc.", "CELSIAN-TECHNOLOGIES" }, { 0x000694, "Mobillian Corporation", "MOBILLIAN" }, { 0x00069B, "AVT Audio Video Technologies GmbH", "AVT-AUDIO-VIDEO-TECHNOLOGIES" }, { 0x00068E, "HID Corporation", "HID" }, { 0x000688, "Telways Communication Co., Ltd.", "TELWAYS-COMMUNICATION" }, { 0x000682, "Convedia", "CONVEDIA" }, { 0x000681, "Goepel Electronic GmbH", "GOEPEL" }, { 0x000655, "Yipee, Inc.", "YIPEE" }, { 0x00D05F, "VALCOM, INC.", "VALCOM" }, { 0x000674, "Spectrum Control, Inc.", "SPECTRUM-CONTROL" }, { 0x000661, "NIA Home Technologies Corp.", "NIA-HOME-TECHNOLOGIES" }, { 0x000668, "Vicon Industries Inc.", "VICON-INDUSTRIES" }, { 0x000667, "Tripp Lite", "TRIPP-LITE" }, { 0x00066E, "Delta Electronics, Inc.", "DELTA-ELECTRONICS" }, { 0x00064E, "Broad Net Technology Inc.", "BROAD-NET" }, { 0x00064F, "PRO-NETS Technology Corporation", "PRO-NETS" }, { 0x000642, "Genetel Systems Inc.", "GENETEL" }, { 0x00063E, "Opthos Inc.", "OPTHOS" }, { 0x000648, "Seedsware, Inc.", "SEEDSWARE" }, { 0x000638, "Sungjin C&C Co., Ltd.", "SUNGJIN-C-C" }, { 0x00070B, "Novabase SGPS, SA", "NOVABASE-SGPS" }, { 0x000710, "Adax, Inc.", "ADAX" }, { 0x000700, "Zettamedia Korea", "ZETTAMEDIA-KOREA" }, { 0x0006F9, "Mitsui Zosen Systems Research Inc.", "MITSUI-ZOSEN-RESEARCH" }, { 0x000703, "CSEE Transport", "CSEE-TRANSPORT" }, { 0x000706, "Sanritz Corporation", "SANRITZ" }, { 0x0006E8, "Optical Network Testing, Inc.", "OPTICAL-NETWORK-TESTING" }, { 0x0006EE, "Shenyang Neu-era Information & Technology Stock Co., Ltd", "SHENYANG-NEU-ERA-INFORMATION-STOCK" }, { 0x0006E2, "Ceemax Technology Co., Ltd.", "CEEMAX" }, { 0x0006D8, "Maple Optical Systems", "MAPLE-OPTICAL" }, { 0x0006D4, "Interactive Objects, Inc.", "INTERACTIVE-OBJECTS" }, { 0x0006CE, "DATENO", "DATENO" }, { 0x0006B7, "TELEM GmbH", "TELEM" }, { 0x0006BE, "Baumer Optronic GmbH", "BAUMER-OPTRONIC" }, { 0x0006B8, "Bandspeed Pty Ltd", "BANDSPEED-PTY" }, { 0x0006BD, "BNTECHNOLOGY Co., Ltd.", "BNTECHNOLOGY" }, { 0x0006C2, "Smartmatic Corporation", "SMARTMATIC" }, { 0x0006C7, "RFNET Technologies Pte Ltd (S)", "RFNET-TECHNOLOGIES-PTE-S" }, { 0x0006B1, "Sonicwall", "SONICWALL" }, { 0x000475, "3 Com Corporation", "3COM" }, { 0x00046F, "Digitel S/A Industria Eletronica", "DIGITEL-S/A-INDUSTRIA-ELETRONICA" }, { 0x000468, "Vivity, Inc.", "VIVITY" }, { 0x00045C, "Mobiwave Pte Ltd", "MOBIWAVE-PTE" }, { 0x000463, "Bosch Security Systems", "BOSCH-SECURITY" }, { 0x000462, "DAKOS Data & Communication Co., Ltd.", "DAKOS-DATA-COMMUNICATION" }, { 0x000455, "ANTARA.net", "ANTARA-NET" }, { 0x000456, "Cambium Networks Limited", "CAMBIUM-NETWORKS" }, { 0x000450, "DMD Computers SRL", "DMD-COMPUTERS-SRL" }, { 0x000446, "CYZENTECH Co., Ltd.", "CYZENTECH" }, { 0x00044B, "NVIDIA", "NVIDIA" }, { 0x0005AD, "Topspin Communications, Inc.", "TOPSPIN-COMMUNICATION" }, { 0x0005B1, "ASB Technology BV", "ASB" }, { 0x0005B7, "Arbor Technology Corp.", "ARBOR" }, { 0x0005A3, "QEI, Inc.", "QEI" }, { 0x000597, "Eagle Traffic Control Systems", "EAGLE-TRAFFIC-CONTROL" }, { 0x000591, "Active Silicon Ltd", "ACTIVE-SILICON" }, { 0x00058A, "Netcom Co., Ltd.", "NETCOM" }, { 0x000590, "Swissvoice Ltd.", "SWISSVOICE" }, { 0x00057E, "Eckelmann Steuerungstechnik GmbH", "ECKELMANN-STEUERUNGSTECHNIK" }, { 0x000578, "Private", "PRIVATE" }, { 0x000584, "AbsoluteValue Systems, Inc.", "ABSOLUTEVALUE" }, { 0x00052E, "Cinta Networks", "CINTA-NETWORKS" }, { 0x00053A, "Willowglen Services Pte Ltd", "WILLOWGLEN-SERVICES-PTE" }, { 0x000528, "New Focus, Inc.", "NEW-FOCUS" }, { 0x000527, "SJ Tek Co. Ltd", "SJ-TEK" }, { 0x000521, "Control Microsystems", "CONTROL-MICROSYSTEMS" }, { 0x000515, "Nuark Co., Ltd.", "NUARK" }, { 0x00051B, "Magic Control Technology Corporation", "MAGIC-CONTROL" }, { 0x000511, "Complementary Technologies Ltd", "COMPLEMENTARY-TECHNOLOGIES" }, { 0x00050B, "SICOM Systems, Inc.", "SICOM" }, { 0x000501, "Cisco Systems, Inc", "CISCO" }, { 0x000505, "Systems Integration Solutions, Inc.", "INTEGRATION-SOLUTIONS" }, { 0x000504, "Naray Information & Communication Enterprise", "NARAY-INFORMATION-COMMUNICATION" }, { 0x0004FB, "Commtech, Inc.", "COMMTECH" }, { 0x000574, "Cisco Systems, Inc", "CISCO" }, { 0x000567, "Etymonic Design, Inc.", "ETYMONIC-DESIGN" }, { 0x00056E, "National Enhance Technology, Inc.", "NATIONAL-ENHANCE" }, { 0x00056D, "Pacific Corporation", "PACIFIC" }, { 0x000561, "nac Image Technology, Inc.", "NAC-IMAGE" }, { 0x00055B, "Charles Industries, Ltd.", "CHARLES-INDUSTRIES" }, { 0x000554, "Rangestar Wireless", "RANGESTAR-WIRELESS" }, { 0x000555, "Japan Cash Machine Co., Ltd.", "JAPAN-CASH-MACHINE" }, { 0x000547, "Starent Networks", "STARENT-NETWORKS" }, { 0x00054E, "Philips", "PHILIPS" }, { 0x000540, "FAST Corporation", "FAST" }, { 0x000541, "Advanced Systems Co., Ltd.", "ADVANCED" }, { 0x000534, "Northstar Engineering Ltd.", "NORTHSTAR-ENGINEERING" }, { 0x0004F4, "Infinite Electronics Inc.", "INFINITE-ELECTRONICS" }, { 0x0004EE, "Lincoln Electric Company", "LINCOLN-ELECTRIC-COMPANY" }, { 0x0004E8, "IER, Inc.", "IER" }, { 0x008086, "COMPUTER GENERATION INC.", "GENERATION" }, { 0x0004DE, "Cisco Systems, Inc", "CISCO" }, { 0x0004E4, "Daeryung Ind., Inc.", "DAERYUNG-IND" }, { 0x0004D7, "Omitec Instrumentation Ltd.", "OMITEC-INSTRUMENTATION" }, { 0x0004D8, "IPWireless, Inc.", "IPWIRELESS" }, { 0x0004D2, "Adcon Telemetry GmbH", "ADCON-TELEMETRY" }, { 0x0004D1, "Drew Technologies, Inc.", "DREW-TECHNOLOGIES" }, { 0x0004CB, "Tdsoft Communication, Ltd.", "TDSOFT-COMMUNICATION" }, { 0x0004C5, "ASE Technologies, USA", "ASE-TECHNOLOGIES-USA" }, { 0x00043F, "ESTeem Wireless Modems, Inc", "ESTEEM-WIRELESS-MODEMS" }, { 0x000439, "Rosco Entertainment Technology, Inc.", "ROSCO-ENTERTAINMENT" }, { 0x000433, "Cyberboard A/S", "CYBERBOARD-A/S" }, { 0x00042C, "Minet, Inc.", "MINET" }, { 0x000427, "Cisco Systems, Inc", "CISCO" }, { 0x000426, "Autosys", "AUTOSYS" }, { 0x000420, "Slim Devices, Inc.", "SLIM-DEVICES" }, { 0x000413, "SNOM Technology AG", "SNOM" }, { 0x000418, "Teltronic S.A.U.", "TELTRONIC-U" }, { 0x000412, "WaveSmith Networks, Inc.", "WAVESMITH-NETWORKS" }, { 0x00040C, "Kanno Works, Ltd.", "KANNO-WORKS" }, { 0x000370, "NXTV, Inc.", "NXTV" }, { 0x000405, "ACN Technologies", "ACN-TECHNOLOGIES" }, { 0x000406, "Fa. Metabox AG", "FA-METABOX" }, { 0x0003FB, "ENEGATE Co.,Ltd.", "ENEGATE" }, { 0x0003FC, "Intertex Data AB", "INTERTEX-DATA-AB" }, { 0x0003EF, "Oneline AG", "ONELINE" }, { 0x0003F6, "Allegro Networks, Inc.", "ALLEGRO-NETWORKS" }, { 0x0003EA, "Mega System Technologies, Inc.", "MEGA-SYSTEM-TECHNOLOGIES" }, { 0x0003E9, "Akara Canada, Inc.", "AKARA-CANADA" }, { 0x0003E4, "Cisco Systems, Inc", "CISCO" }, { 0x0003D8, "iMPath Networks, Inc.", "IMPATH-NETWORKS" }, { 0x0003D5, "Advanced Communications Co., Ltd.", "ADVANCED-COMMUNICATION" }, { 0x0003CC, "Momentum Computer, Inc.", "MOMENTUM" }, { 0x0003D1, "Takaya Corporation", "TAKAYA" }, { 0x0003C5, "Mobotix AG", "MOBOTIX" }, { 0x0003BE, "Netility", "NETILITY" }, { 0x0003B9, "Hualong Telecom Co., Ltd.", "HUALONG-TELECOM" }, { 0x0003B7, "ZACCESS Systems", "ZACCESS" }, { 0x0003B3, "IA Link Systems Co., Ltd.", "IA-LINK" }, { 0x0003A7, "Unixtar Technology, Inc.", "UNIXTAR" }, { 0x0003AE, "Allied Advanced Manufacturing Pte, Ltd.", "ALLIED-ADVANCED-MANUFACTURING-PTE" }, { 0x0003A0, "Cisco Systems, Inc", "CISCO" }, { 0x000398, "WISI", "WISI" }, { 0x00039B, "NetChip Technology, Inc.", "NETCHIP" }, { 0x000394, "Connect One", "CONNECT-ONE" }, { 0x00038D, "PCS Revenue Control Systems, Inc.", "PCS-REVENUE-CONTROL" }, { 0x000385, "Actelis Networks, Inc.", "ACTELIS-NETWORKS" }, { 0x000388, "Fastfame Technology Co., Ltd.", "FASTFAME" }, { 0x00037F, "Atheros Communications, Inc.", "ATHEROS-COMMUNICATION" }, { 0x0004B8, "Kumahira Co., Ltd.", "KUMAHIRA" }, { 0x0004B2, "ESSEGI SRL", "ESSEGI-SRL" }, { 0x0004AE, "Sullair Corporation", "SULLAIR" }, { 0x0004AB, "Comverse Network Systems, Inc.", "COMVERSE-NETWORK" }, { 0x00049F, "Freescale Semiconductor", "FREESCALE-SEMICONDUCTOR" }, { 0x0004A4, "NetEnabled, Inc.", "NETENABLED" }, { 0x00049E, "Wirelink Co., Ltd.", "WIRELINK" }, { 0x000498, "Mahi Networks", "MAHI-NETWORKS" }, { 0x000491, "Technovision, Inc.", "TECHNOVISION" }, { 0x00048C, "Nayna Networks, Inc.", "NAYNA-NETWORKS" }, { 0x000492, "Hive Internet, Ltd.", "HIVE-INTERNET" }, { 0x000485, "PicoLight", "PICOLIGHT" }, { 0x000307, "Secure Works, Inc.", "SECURE-WORKS" }, { 0x000300, "Barracuda Networks, Inc.", "BARRACUDA-NETWORKS" }, { 0x0002F8, "SEAKR Engineering, Inc.", "SEAKR-ENGINEERING" }, { 0x00D024, "Cognex Corporation", "COGNEX" }, { 0x0002F4, "PCTEL, Inc.", "PCTEL" }, { 0x0002FB, "Baumuller Aulugen-Systemtechnik GmbH", "BAUMULLER-AULUGEN-SYSTEMTECHNIK" }, { 0x0002E9, "CS Systemes De Securite - C3S", "CS-SYSTEMES-DE-SECURITE---C3S" }, { 0x0002DD, "Bromax Communications, Ltd.", "BROMAX-COMMUNICATION" }, { 0x0002E2, "NDC Infared Engineering", "NDC-INFARED-ENGINEERING" }, { 0x0002DA, "ExiO Communications, Inc.", "EXIO-COMMUNICATION" }, { 0x0002D6, "NICE Systems", "NICE" }, { 0x0002CA, "EndPoints, Inc.", "ENDPOINTS" }, { 0x0002CF, "ZyGate Communications, Inc.", "ZYGATE-COMMUNICATION" }, { 0x0001CD, "ARtem", "ARTEM" }, { 0x0001D2, "inXtron, Inc. ", "INXTRON" }, { 0x0001C9, "Cisco Systems, Inc", "CISCO" }, { 0x0001C7, "Cisco Systems, Inc", "CISCO" }, { 0x0001C2, "ARK Research Corp.", "ARK-RESEARCH" }, { 0x0001BE, "Gigalink Co., Ltd.", "GIGALINK" }, { 0x0001BC, "Brains Corporation", "BRAINS" }, { 0x0001AC, "Sitara Networks, Inc.", "SITARA-NETWORKS" }, { 0x0001A9, "BMW AG", "BMW" }, { 0x0001B0, "Fulltek Technology Co., Ltd.", "FULLTEK" }, { 0x000179, "WIRELESS TECHNOLOGY, INC.", "WIRELESS" }, { 0x000185, "Hitachi Aloka Medical, Ltd.", "HITACHI-ALOKA-MEDICAL" }, { 0x00018C, "Mega Vision", "MEGA-VISION" }, { 0x000192, "Texas Digital Systems", "TEXAS-DIGITAL" }, { 0x00019E, "ESS Technology, Inc.", "ESS" }, { 0x001095, "Thomson Inc.", "THOMSON" }, { 0x00025A, "Catena Networks", "CATENA-NETWORKS" }, { 0x000271, "Zhone Technologies", "ZHONE-TECHNOLOGIES" }, { 0x00026C, "Philips CFT", "PHILIPS-CFT" }, { 0x00026A, "Cocess Telecom Co., Ltd.", "COCESS-TELECOM" }, { 0x000266, "Thermalogic Corporation", "THERMALOGIC" }, { 0x00025F, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000256, "Alpha Processor, Inc.", "ALPHA-PROCESSOR" }, { 0x000251, "Soma Networks, Inc.", "SOMA-NETWORKS" }, { 0x00024A, "Cisco Systems, Inc", "CISCO" }, { 0x00024D, "Mannesman Dematic Colby Pty. Ltd.", "MANNESMAN-DEMATIC-COLBY-PTY" }, { 0x000245, "Lampus Co, Ltd.", "LAMPUS" }, { 0x00023E, "Selta Telematica S.p.a", "SELTA-TELEMATICA-S-P-A" }, { 0x00023B, "Ericsson", "ERICSSON" }, { 0x000237, "Cosmo Research Corp.", "COSMO-RESEARCH" }, { 0x000234, "Imperial Technology, Inc.", "IMPERIAL" }, { 0x000228, "Necsom, Ltd.", "NECSOM" }, { 0x000224, "C-COR", "C-COR" }, { 0x00020D, "Micronpc.com", "MICRONPC-COM" }, { 0x000220, "CANON FINETECH INC.", "CANON-FINETECH" }, { 0x000378, "HUMAX Co., Ltd.", "HUMAX" }, { 0x00036C, "Cisco Systems, Inc", "CISCO" }, { 0x000373, "Aselsan A.S", "ASELSAN-A-S" }, { 0x000368, "Embedone Co., Ltd.", "EMBEDONE" }, { 0x000366, "ASM Pacific Technology", "ASM-PACIFIC" }, { 0x000365, "Kira Information & Communications, Ltd.", "KIRA-INFORMATION-COMMUNICATION" }, { 0x000360, "PAC Interactive Technology, Inc.", "PAC-INTERACTIVE" }, { 0x00035D, "Bosung Hi-Net Co., Ltd.", "BOSUNG-HI-NET" }, { 0x00031A, "Beijing Broad Telecom Ltd., China", "BEIJING-BROAD-TELECOM-CHINA" }, { 0x000359, "DigitalSis", "DIGITALSIS" }, { 0x000354, "Fiber Logic Communications", "FIBER-LOGIC-COMMUNICATION" }, { 0x000352, "Colubris Networks", "COLUBRIS-NETWORKS" }, { 0x00034E, "Pos Data Company, Ltd.", "POS-DATA-COMPANY" }, { 0x0002C3, "Arelnet Ltd.", "ARELNET" }, { 0x0002BE, "Totsu Engineering, Inc.", "TOTSU-ENGINEERING" }, { 0x0002BA, "Cisco Systems, Inc", "CISCO" }, { 0x0002B2, "Cablevision", "CABLEVISION" }, { 0x0002B5, "Avnet, Inc.", "AVNET" }, { 0x0002AE, "Scannex Electronics Ltd.", "SCANNEX-ELECTRONICS" }, { 0x0002A7, "Vivace Networks", "VIVACE-NETWORKS" }, { 0x0002A2, "Hilscher GmbH", "HILSCHER" }, { 0x000297, "C-COR.net", "C-COR-NET" }, { 0x00028E, "Rapid 5 Networks, Inc.", "RAPID-5-NETWORKS" }, { 0x000293, "Solid Data Systems", "SOLID-DATA" }, { 0x0001FA, "HOROSCAS", "HOROSCAS" }, { 0x000284, "AREVA T&D", "AREVA-T-D" }, { 0x00027D, "Cisco Systems, Inc", "CISCO" }, { 0x00033F, "BigBand Networks, Ltd.", "BIGBAND-NETWORKS" }, { 0x000336, "Zetes Technologies", "ZETES-TECHNOLOGIES" }, { 0x00033B, "TAMI Tech Co., Ltd.", "TAMI-TECH" }, { 0x000328, "Mace Group, Inc.", "MACE-GROUP" }, { 0x00032F, "Global Sun Technology, Inc.", "GLOBAL-SUN" }, { 0x000320, "Xpeed, Inc.", "XPEED" }, { 0x000323, "Cornet Technology, Inc.", "CORNET" }, { 0x00029F, "L-3 Communication Aviation Recorders", "L-3-COMMUNICATION-AVIATION-RECORDERS" }, { 0x00031F, "Condev Ltd.", "CONDEV" }, { 0x000317, "Merlin Systems, Inc.", "MERLIN" }, { 0x00030E, "Core Communications Co., Ltd.", "CORE-COMMUNICATION" }, { 0x000313, "Access Media SPA", "ACCESS-MEDIA-SPA" }, { 0x0001A5, "Nextcomm, Inc.", "NEXTCOMM" }, { 0x0001A1, "Mag-Tek, Inc.", "MAG-TEK" }, { 0x000195, "Sena Technologies, Inc.", "SENA-TECHNOLOGIES" }, { 0x00017D, "ThermoQuest", "THERMOQUEST" }, { 0x000189, "Refraction Technology, Inc.", "REFRACTION" }, { 0x00308B, "Brix Networks", "BRIX-NETWORKS" }, { 0x00015A, "Digital Video Broadcasting", "DIGITAL-VIDEO-BROADCASTING" }, { 0x000166, "TC GROUP A/S", "TC-GROUP-A/S" }, { 0x00015F, "DIGITAL DESIGN GmbH", "DIGITAL-DESIGN" }, { 0x000214, "DTVRO", "DTVRO" }, { 0x000210, "Fenecom", "FENECOM" }, { 0x000208, "Unify Networks, Inc.", "UNIFY-NETWORKS" }, { 0x000201, "IFM Electronic gmbh", "IFM" }, { 0x0001F5, "ERIM S.A.", "ERIM" }, { 0x0001FD, "Digital Voice Systems, Inc.", "DIGITAL-VOICE" }, { 0x0001E5, "Supernet, Inc.", "SUPERNET" }, { 0x0001E8, "Force10 Networks, Inc.", "FORCE10-NETWORKS" }, { 0x0001D9, "Sigma, Inc.", "SIGMA" }, { 0x0001E0, "Fast Systems, Inc.", "FAST" }, { 0x0001D5, "HAEDONG INFO & COMM CO., LTD", "HAEDONG-INFO-COMM" }, { 0x000118, "EZ Digital Co., Ltd.", "EZ-DIGITAL" }, { 0x000124, "Acer Incorporated", "ACER-INCORPORATED" }, { 0x000101, "Private", "PRIVATE" }, { 0x000114, "KANDA TSUSHIN KOGYO CO., LTD.", "KANDA-TSUSHIN-KOGYO" }, { 0x000111, "iDigm Inc.", "IDIGM" }, { 0x000105, "Beckhoff Automation GmbH", "BECKHOFF-AUTOMATION" }, { 0x00029C, "3COM", "3COM" }, { 0x00B009, "Grass Valley, A Belden Brand", "GRASS-VALLEY-A-BELDEN-BRAND" }, { 0x00B09D, "Point Grey Research Inc.", "POINT-GREY-RESEARCH" }, { 0x00B094, "Alaris, Inc.", "ALARIS" }, { 0x00B048, "Marconi Communications Inc.", "MARCONI-COMMUNICATION" }, { 0x00B0C7, "Tellabs Operations, Inc.", "TELLABS-OPERATIONS" }, { 0x003060, "Powerfile, Inc.", "POWERFILE" }, { 0x00301C, "ALTVATER AIRDATA SYSTEMS", "ALTVATER-AIRDATA" }, { 0x003015, "CP CLARE CORP.", "CP-CLARE" }, { 0x0030E6, "Draeger Medical Systems, Inc.", "DRAEGER-MEDICAL" }, { 0x003091, "TAIWAN FIRST LINE ELEC. CORP.", "TAIWAN-FIRST-LINE-ELEC" }, { 0x003080, "Cisco Systems, Inc", "CISCO" }, { 0x0030AD, "SHANGHAI COMMUNICATION", "SHANGHAI-COMMUNICATION" }, { 0x00305B, "Toko Inc.", "TOKO" }, { 0x003024, "Cisco Systems, Inc", "CISCO" }, { 0x00301F, "OPTICAL NETWORKS, INC.", "OPTICAL-NETWORKS" }, { 0x0030D9, "DATACORE SOFTWARE CORP.", "DATACORE-SOFTWARE" }, { 0x00D0FF, "Cisco Systems, Inc", "CISCO" }, { 0x003058, "API MOTION", "API-MOTION" }, { 0x0030C6, "CONTROL SOLUTIONS, INC.", "CONTROL-SOLUTIONS" }, { 0x003036, "RMP ELEKTRONIKSYSTEME GMBH", "RMP-ELEKTRONIKSYSTEME" }, { 0x00308A, "NICOTRA SISTEMI S.P.A", "NICOTRA-SISTEMI-S-P-A" }, { 0x00302C, "SYLANTRO SYSTEMS CORPORATION", "SYLANTRO" }, { 0x003006, "SUPERPOWER COMPUTER", "SUPERPOWER" }, { 0x003079, "CQOS, INC.", "CQOS" }, { 0x003059, "KONTRON COMPACT COMPUTERS AG", "KONTRON-COMPACT-COMPUTERS" }, { 0x0030B9, "ECTEL", "ECTEL" }, { 0x00303A, "MAATEL", "MAATEL" }, { 0x0030A3, "Cisco Systems, Inc", "CISCO" }, { 0x003040, "Cisco Systems, Inc", "CISCO" }, { 0x003064, "ADLINK TECHNOLOGY, INC.", "ADLINK" }, { 0x003097, "AB Regin", "AB-REGIN" }, { 0x0030EB, "TURBONET COMMUNICATIONS, INC.", "TURBONET-COMMUNICATION" }, { 0x0030C8, "GAD LINE, LTD.", "GAD-LINE" }, { 0x0030C9, "LuxN, N", "LUXN-N" }, { 0x00B01E, "Rantic Labs, Inc.", "RANTIC-LABS" }, { 0x00B064, "Cisco Systems, Inc", "CISCO" }, { 0x0030A2, "Lightner Engineering", "LIGHTNER-ENGINEERING" }, { 0x0030DE, "WAGO Kontakttechnik GmbH", "WAGO-KONTAKTTECHNIK" }, { 0x00309E, "WORKBIT CORPORATION.", "WORKBIT" }, { 0x003057, "QTelNet, Inc.", "QTELNET" }, { 0x00305C, "SMAR Laboratories Corp.", "SMAR-LABORATORIES" }, { 0x003082, "TAIHAN ELECTRIC WIRE CO., LTD.", "TAIHAN-ELECTRIC-WIRE" }, { 0x0030AE, "Times N System, Inc.", "TIMES-N-SYSTEM" }, { 0x00300D, "MMC Technology, Inc.", "MMC" }, { 0x003075, "ADTECH", "ADTECH" }, { 0x0030E7, "CNF MOBILE SOLUTIONS, INC.", "CNF-MOBILE-SOLUTIONS" }, { 0x003019, "Cisco Systems, Inc", "CISCO" }, { 0x003052, "ELASTIC NETWORKS", "ELASTIC-NETWORKS" }, { 0x003011, "HMS Industrial Networks ", "HMS-INDUSTRIAL-NETWORKS" }, { 0x00304A, "Fraunhofer IPMS", "FRAUNHOFER-IPMS" }, { 0x003014, "DIVIO, INC.", "DIVIO" }, { 0x003029, "OPICOM", "OPICOM" }, { 0x0030BD, "BELKIN COMPONENTS", "BELKIN-COMPONENTS" }, { 0x0030BA, "AC&T SYSTEM CO., LTD.", "AC-T-SYSTEM" }, { 0x00301D, "SKYSTREAM, INC.", "SKYSTREAM" }, { 0x003049, "BRYANT TECHNOLOGY, LTD.", "BRYANT" }, { 0x003041, "SAEJIN T & M CO., LTD.", "SAEJIN-T-M" }, { 0x00308C, "Quantum Corporation", "QUANTUM" }, { 0x00D04F, "BITRONICS, INC.", "BITRONICS" }, { 0x00D0EF, "IGT", "IGT" }, { 0x00D022, "INCREDIBLE TECHNOLOGIES, INC.", "INCREDIBLE-TECHNOLOGIES" }, { 0x00D0C8, "Prevas A/S", "PREVAS-A/S" }, { 0x00D052, "ASCEND COMMUNICATIONS, INC.", "ASCEND-COMMUNICATION" }, { 0x00D0B1, "OMEGA ELECTRONICS SA", "OMEGA-ELECTRONICS" }, { 0x00D0C1, "HARMONIC DATA SYSTEMS, LTD.", "HARMONIC-DATA" }, { 0x00D0F0, "CONVISION TECHNOLOGY GMBH", "CONVISION" }, { 0x00D00E, "PLURIS, INC.", "PLURIS" }, { 0x00D055, "KATHREIN-WERKE KG", "KATHREIN-WERKE" }, { 0x00D000, "FERRAN SCIENTIFIC, INC.", "FERRAN-SCIENTIFIC" }, { 0x00D005, "ZHS ZEITMANAGEMENTSYSTEME", "ZHS-ZEITMANAGEMENTSYSTEME" }, { 0x00D019, "DAINIPPON SCREEN CORPORATE", "DAINIPPON-SCREEN-CORPORATE" }, { 0x00D053, "CONNECTED SYSTEMS", "CONNECTED" }, { 0x00D097, "Cisco Systems, Inc", "CISCO" }, { 0x00016A, "ALITEC", "ALITEC" }, { 0x000176, "Orient Silver Enterprises", "ORIENT-SILVER-ENTERPRISES" }, { 0x000158, "Electro Industries/Gauge Tech", "ELECTRO-INDUSTRIES/GAUGE-TECH" }, { 0x00012D, "Komodo Technology", "KOMODO" }, { 0x000139, "Point Multimedia Systems", "POINT-MULTIMEDIA" }, { 0x000140, "Sendtek Corporation", "SENDTEK" }, { 0x00014C, "Berkeley Process Control", "BERKELEY-PROCESS-CONTROL" }, { 0x000135, "KDC Corp.", "KDC" }, { 0x00013C, "TIW SYSTEMS", "TIW" }, { 0x000148, "X-traWeb Inc.", "X-TRAWEB" }, { 0x000120, "OSCILLOQUARTZ S.A.", "OSCILLOQUARTZ" }, { 0x000127, "OPEN Networks Pty Ltd", "OPEN-NETWORKS-PTY" }, { 0x00309C, "Timing Applications, Inc.", "TIMING-APPLICATIONS" }, { 0x003086, "Transistor Devices, Inc.", "TRANSISTOR-DEVICES" }, { 0x0030B5, "Tadiran Microwave Networks", "TADIRAN-MICROWAVE-NETWORKS" }, { 0x003070, "1Net Corporation", "1NET" }, { 0x003044, "CradlePoint, Inc", "CRADLEPOINT" }, { 0x00307E, "Redflex Communication Systems", "REDFLEX-COMMUNICATION" }, { 0x00307A, "Advanced Technology & Systems", "ADVANCED" }, { 0x0030B7, "Teletrol Systems, Inc.", "TELETROL" }, { 0x0030B3, "San Valley Systems, Inc.", "SAN-VALLEY" }, { 0x00303B, "PowerCom Technology", "POWERCOM" }, { 0x0030BC, "Optronic AG", "OPTRONIC" }, { 0x003071, "Cisco Systems, Inc", "CISCO" }, { 0x009003, "APLIO", "APLIO" }, { 0x0090D7, "NetBoost Corp.", "NETBOOST" }, { 0x009093, "NANAO CORPORATION", "NANAO" }, { 0x0090B4, "WILLOWBROOK TECHNOLOGIES", "WILLOWBROOK-TECHNOLOGIES" }, { 0x009083, "TURBO COMMUNICATION, INC.", "TURBO-COMMUNICATION" }, { 0x0090BD, "OMNIA COMMUNICATIONS, INC.", "OMNIA-COMMUNICATION" }, { 0x009094, "OSPREY TECHNOLOGIES, INC.", "OSPREY-TECHNOLOGIES" }, { 0x0090DD, "MIHARU COMMUNICATIONS Inc", "MIHARU-COMMUNICATION" }, { 0x009028, "NIPPON SIGNAL CO., LTD.", "NIPPON-SIGNAL" }, { 0x00908C, "ETREND ELECTRONICS, INC.", "ETREND-ELECTRONICS" }, { 0x00905D, "NETCOM SICHERHEITSTECHNIK GMBH", "NETCOM-SICHERHEITSTECHNIK" }, { 0x009068, "DVT CORP.", "DVT" }, { 0x009030, "HONEYWELL-DATING", "HONEYWELL-DATING" }, { 0x0090D3, "GIESECKE & DEVRIENT GmbH", "GIESECKE-DEVRIENT" }, { 0x005081, "MURATA MACHINERY, LTD.", "MURATA-MACHINERY" }, { 0x0050CB, "JETTER", "JETTER" }, { 0x00500E, "CHROMATIS NETWORKS, INC.", "CHROMATIS-NETWORKS" }, { 0x0050FD, "VISIONCOMM CO., LTD.", "VISIONCOMM" }, { 0x0050FE, "PCTVnet ASA", "PCTVNET-ASA" }, { 0x0050AB, "NALTEC, Inc.", "NALTEC" }, { 0x005006, "TAC AB", "TAC-AB" }, { 0x0050BF, "Metalligence Technology Corp.", "METALLIGENCE" }, { 0x005089, "SAFETY MANAGEMENT SYSTEMS", "SAFETY-MANAGEMENT" }, { 0x005066, "AtecoM GmbH advanced telecomunication modules", "ATECOM-ADVANCED-TELECOMUNICATION-MODULES" }, { 0x0050D9, "ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA", "ENGETRON-ENGENHARIA-ELETRONICA-IND-E-COM-LTDA" }, { 0x005043, "MARVELL SEMICONDUCTOR, INC.", "MARVELL-SEMICONDUCTOR" }, { 0x005018, "AMIT, Inc.", "AMIT" }, { 0x005059, "iBAHN", "IBAHN" }, { 0x00506A, "EDEVA, INC.", "EDEVA" }, { 0x00502E, "CAMBEX CORPORATION", "CAMBEX" }, { 0x005070, "CHAINTECH COMPUTER CO., LTD.", "CHAINTECH" }, { 0x00503B, "MEDIAFIRE CORPORATION", "MEDIAFIRE" }, { 0x005084, "ATL PRODUCTS", "ATL-PRODUCTS" }, { 0x005055, "DOMS A/S", "DOMS-A/S" }, { 0x00504B, "BARCONET N.V.", "BARCONET-N-V" }, { 0x005046, "MENICX INTERNATIONAL CO., LTD.", "MENICX" }, { 0x00502C, "SOYO COMPUTER, INC.", "SOYO" }, { 0x005060, "TANDBERG TELECOM AS", "TANDBERG-TELECOM-AS" }, { 0x0050DD, "SERRA SOLDADURA, S.A.", "SERRA-SOLDADURA" }, { 0x00503F, "ANCHOR GAMES", "ANCHOR-GAMES" }, { 0x0050EE, "TEK DIGITEL CORPORATION", "TEK-DIGITEL" }, { 0x005004, "3COM CORPORATION", "3COM" }, { 0x005072, "CORVIS CORPORATION", "CORVIS" }, { 0x005012, "CBL - GMBH", "CBL" }, { 0x0050E8, "NOMADIX INC.", "NOMADIX" }, { 0x0050F2, "MICROSOFT CORP.", "MICROSOFT" }, { 0x005052, "TIARA NETWORKS, INC.", "TIARA-NETWORKS" }, { 0x005064, "CAE ELECTRONICS", "CAE-ELECTRONICS" }, { 0x0050B4, "SATCHWELL CONTROL SYSTEMS, LTD", "SATCHWELL-CONTROL" }, { 0x0050B2, "BRODEL GmbH", "BRODEL" }, { 0x00D081, "RTD Embedded Technologies, Inc.", "RTD-EMBEDDED-TECHNOLOGIES" }, { 0x00D011, "PRISM VIDEO, INC.", "PRISM-VIDEO" }, { 0x00D09B, "SPECTEL LTD.", "SPECTEL" }, { 0x00D031, "INDUSTRIAL LOGIC CORPORATION", "INDUSTRIAL-LOGIC" }, { 0x00D021, "REGENT ELECTRONICS CORP.", "REGENT-ELECTRONICS" }, { 0x00D0DF, "KUZUMI ELECTRONICS, INC.", "KUZUMI-ELECTRONICS" }, { 0x00D0B4, "KATSUJIMA CO., LTD.", "KATSUJIMA" }, { 0x00D079, "Cisco Systems, Inc", "CISCO" }, { 0x00D0E2, "MRT MICRO, INC.", "MRT-MICRO" }, { 0x00D039, "UTILICOM, INC.", "UTILICOM" }, { 0x00504F, "OLENCOM ELECTRONICS", "OLENCOM-ELECTRONICS" }, { 0x0050A0, "DELTA COMPUTER SYSTEMS, INC.", "DELTA" }, { 0x005007, "SIEMENS TELECOMMUNICATION SYSTEMS LIMITED", "SIEMENS-TELECOMMUNICATION" }, { 0x005015, "BRIGHT STAR ENGINEERING", "BRIGHT-STAR-ENGINEERING" }, { 0x005031, "AEROFLEX LABORATORIES, INC.", "AEROFLEX-LABORATORIES" }, { 0x0050DF, "AirFiber, Inc.", "AIRFIBER" }, { 0x0050F3, "GLOBAL NET INFORMATION CO., Ltd.", "GLOBAL-NET-INFORMATION" }, { 0x005038, "DAIN TELECOM CO., LTD.", "DAIN-TELECOM" }, { 0x00D0E1, "AVIONITEK ISRAEL INC.", "AVIONITEK-ISRAEL" }, { 0x00D01B, "MIMAKI ENGINEERING CO., LTD.", "MIMAKI-ENGINEERING" }, { 0x00D06E, "TRENDVIEW RECORDERS LTD.", "TRENDVIEW-RECORDERS" }, { 0x00D075, "ALARIS MEDICAL SYSTEMS, INC.", "ALARIS-MEDICAL" }, { 0x00509D, "THE INDUSTREE B.V.", "THE-INDUSTREE" }, { 0x00501E, "Grass Valley, A Belden Brand", "GRASS-VALLEY-A-BELDEN-BRAND" }, { 0x00502B, "GENRAD LTD.", "GENRAD" }, { 0x00500A, "IRIS TECHNOLOGIES, INC.", "IRIS-TECHNOLOGIES" }, { 0x00D027, "APPLIED AUTOMATION, INC.", "APPLIED-AUTOMATION" }, { 0x00D0F1, "SEGA ENTERPRISES, LTD.", "SEGA-ENTERPRISES" }, { 0x00D009, "HSING TECH. ENTERPRISE CO. LTD", "HSING-TECH" }, { 0x00D080, "EXABYTE CORPORATION", "EXABYTE" }, { 0x00D084, "NEXCOMM SYSTEMS, INC.", "NEXCOMM" }, { 0x00D0E6, "IBOND INC.", "IBOND" }, { 0x00D099, "Elcard Wireless Systems Oy", "ELCARD-WIRELESS-OY" }, { 0x0090AF, "J. MORITA MFG. CORP.", "J-MORITA-MFG" }, { 0x009088, "BAXALL SECURITY LTD.", "BAXALL-SECURITY" }, { 0x0090E0, "SYSTRAN CORP.", "SYSTRAN" }, { 0x00903E, "N.V. PHILIPS INDUSTRIAL ACTIVITIES", "N-V-PHILIPS-INDUSTRIAL-ACTIVITIES" }, { 0x0090B9, "BERAN INSTRUMENTS LTD.", "BERAN-INSTRUMENTS" }, { 0x00901A, "UNISPHERE SOLUTIONS", "UNISPHERE-SOLUTIONS" }, { 0x009082, "FORCE INSTITUTE", "FORCE-INSTITUTE" }, { 0x00906A, "TURNSTONE SYSTEMS, INC.", "TURNSTONE" }, { 0x0001FE, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x009077, "ADVANCED FIBRE COMMUNICATIONS", "ADVANCED-FIBRE-COMMUNICATION" }, { 0x0090B2, "AVICI SYSTEMS INC.", "AVICI" }, { 0x009095, "UNIVERSAL AVIONICS", "UNIVERSAL-AVIONICS" }, { 0x009012, "GLOBESPAN SEMICONDUCTOR, INC.", "GLOBESPAN-SEMICONDUCTOR" }, { 0x0090B6, "FIBEX SYSTEMS", "FIBEX" }, { 0x0090F4, "LIGHTNING INSTRUMENTATION", "LIGHTNING-INSTRUMENTATION" }, { 0x00904F, "ABB POWER T&D COMPANY, INC.", "ABB-POWER-T-D-COMPANY" }, { 0x00905A, "DEARBORN GROUP, INC.", "DEARBORN-GROUP" }, { 0x009066, "Troika Networks, Inc.", "TROIKA-NETWORKS" }, { 0x00907A, "Spectralink, Inc", "SPECTRALINK" }, { 0x0090F0, "Harmonic Video Systems Ltd.", "HARMONIC-VIDEO" }, { 0x001047, "ECHO ELETRIC CO. LTD.", "ECHO-ELETRIC" }, { 0x00100C, "ITO CO., LTD.", "ITO" }, { 0x0010D0, "WITCOM, LTD.", "WITCOM" }, { 0x001006, "Thales Contact Solutions Ltd.", "THALES-CONTACT-SOLUTIONS" }, { 0x0010D6, "Exelis", "EXELIS" }, { 0x001076, "EUREM GmbH", "EUREM" }, { 0x00103F, "TOLLGRADE COMMUNICATIONS, INC.", "TOLLGRADE-COMMUNICATION" }, { 0x001034, "GNP Computers", "GNP-COMPUTERS" }, { 0x001012, "PROCESSOR SYSTEMS (I) PVT LTD", "PROCESSOR-I-PVT" }, { 0x0010C8, "COMMUNICATIONS ELECTRONICS SECURITY GROUP", "COMMUNICATION-ELECTRONICS-SECURITY-GROUP" }, { 0x0010D1, "Top Layer Networks, Inc.", "TOP-LAYER-NETWORKS" }, { 0x0010F0, "RITTAL-WERK RUDOLF LOH GmbH & Co.", "RITTAL-WERK-RUDOLF-LOH" }, { 0x00106A, "DIGITAL MICROWAVE CORPORATION", "DIGITAL-MICROWAVE" }, { 0x001030, "EION Inc.", "EION" }, { 0x0010A4, "XIRCOM", "XIRCOM" }, { 0x001050, "RION CO., LTD.", "RION" }, { 0x00109C, "M-SYSTEM CO., LTD.", "M-SYSTEM" }, { 0x001064, "DNPG, LLC", "DNPG-LLC" }, { 0x001020, "Hand Held Products Inc", "HAND-HELD-PRODUCTS" }, { 0x00106E, "TADIRAN COM. LTD.", "TADIRAN-COM" }, { 0x00105B, "NET INSIGHT AB", "NET-INSIGHT-AB" }, { 0x001002, "ACTIA", "ACTIA" }, { 0x0010A0, "INNOVEX TECHNOLOGIES, INC.", "INNOVEX-TECHNOLOGIES" }, { 0x001074, "ATEN INTERNATIONAL CO., LTD.", "ATEN" }, { 0x001057, "Rebel.com, Inc.", "REBEL-COM" }, { 0x0010BC, "Aastra Telecom", "AASTRA-TELECOM" }, { 0x001033, "ACCESSLAN COMMUNICATIONS, INC.", "ACCESSLAN-COMMUNICATION" }, { 0x0004AC, "IBM Corp", "IBM" }, { 0x0010B4, "ATMOSPHERE NETWORKS", "ATMOSPHERE-NETWORKS" }, { 0x0010F9, "UNIQUE SYSTEMS, INC.", "UNIQUE" }, { 0x001038, "MICRO RESEARCH INSTITUTE, INC.", "MICRO-RESEARCH-INSTITUTE" }, { 0x00100A, "WILLIAMS COMMUNICATIONS GROUP", "WILLIAMS-COMMUNICATION-GROUP" }, { 0x001080, "METAWAVE COMMUNICATIONS", "METAWAVE-COMMUNICATION" }, { 0x0010AB, "KOITO ELECTRIC INDUSTRIES, LTD.", "KOITO-ELECTRIC-INDUSTRIES" }, { 0x00903C, "ATLANTIC NETWORK SYSTEMS", "ATLANTIC-NETWORK" }, { 0x0090CE, "TETRA GmbH", "TETRA" }, { 0x0090E3, "AVEX ELECTRONICS INC.", "AVEX-ELECTRONICS" }, { 0x00900B, "LANNER ELECTRONICS, INC.", "LANNER-ELECTRONICS" }, { 0x0090C8, "WAVERIDER COMMUNICATIONS (CANADA) INC.", "WAVERIDER-COMMUNICATION-CANADA" }, { 0x0090B7, "DIGITAL LIGHTWAVE, INC.", "DIGITAL-LIGHTWAVE" }, { 0x009037, "ACUCOMM, INC.", "ACUCOMM" }, { 0x009059, "TELECOM DEVICE K.K.", "TELECOM-DEVICE-K-K" }, { 0x00E003, "NOKIA WIRELESS BUSINESS COMMUN", "NOKIA-WIRELESS-BUSINESS-COMMUN" }, { 0x00E0F3, "WebSprint Communications, Inc.", "WEBSPRINT-COMMUNICATION" }, { 0x00E013, "EASTERN ELECTRONIC CO., LTD.", "EASTERN" }, { 0x001063, "STARGUIDE DIGITAL NETWORKS", "STARGUIDE-DIGITAL-NETWORKS" }, { 0x0010A7, "UNEX TECHNOLOGY CORPORATION", "UNEX" }, { 0x001039, "Vectron Systems AG", "VECTRON" }, { 0x0010C3, "CSI-CONTROL SYSTEMS", "CSI-CONTROL" }, { 0x00107F, "CRESTRON ELECTRONICS, INC.", "CRESTRON-ELECTRONICS" }, { 0x00102C, "Lasat Networks A/S", "LASAT-NETWORKS-A/S" }, { 0x0010B7, "COYOTE TECHNOLOGIES, LLC", "COYOTE-TECHNOLOGIES-LLC" }, { 0x006064, "NETCOMM LIMITED", "NETCOMM" }, { 0x0060CB, "HITACHI ZOSEN CORPORATION", "HITACHI-ZOSEN" }, { 0x006090, "Artiza Networks Inc", "ARTIZA-NETWORKS" }, { 0x0060A9, "GESYTEC MBH", "GESYTEC-MBH" }, { 0x0060F2, "LASERGRAPHICS, INC.", "LASERGRAPHICS" }, { 0x006031, "HRK SYSTEMS", "HRK" }, { 0x0060A6, "PARTICLE MEASURING SYSTEMS", "PARTICLE-MEASURING" }, { 0x006082, "NOVALINK TECHNOLOGIES, INC.", "NOVALINK-TECHNOLOGIES" }, { 0x006012, "POWER COMPUTING CORPORATION", "POWER-COMPUTING" }, { 0x00604D, "MMC NETWORKS, INC.", "MMC-NETWORKS" }, { 0x006048, "EMC CORPORATION", "EMC" }, { 0x0060E5, "FUJI AUTOMATION CO., LTD.", "FUJI-AUTOMATION" }, { 0x006010, "NETWORK MACHINES, INC.", "NETWORK-MACHINES" }, { 0x006044, "LITTON/POLY-SCIENTIFIC", "LITTON/POLY-SCIENTIFIC" }, { 0x0060BE, "WEBTRONICS", "WEBTRONICS" }, { 0x006052, "PERIPHERALS ENTERPRISE CO., Ltd.", "PERIPHERALS" }, { 0x00E03F, "JATON CORPORATION", "JATON" }, { 0x00E0EB, "DIGICOM SYSTEMS, INCORPORATED", "DIGICOM-INCORPORATED" }, { 0x00E00E, "AVALON IMAGING SYSTEMS, INC.", "AVALON-IMAGING" }, { 0x00E0CD, "SAAB SENSIS CORPORATION", "SAAB-SENSIS" }, { 0x00E0CB, "RESON, INC.", "RESON" }, { 0x00E048, "SDL COMMUNICATIONS, INC.", "SDL-COMMUNICATION" }, { 0x00E083, "JATO TECHNOLOGIES, INC.", "JATO-TECHNOLOGIES" }, { 0x00E03D, "FOCON ELECTRONIC SYSTEMS A/S", "FOCON-A/S" }, { 0x00E0FA, "TRL TECHNOLOGY, LTD.", "TRL" }, { 0x00E02C, "AST COMPUTER", "AST" }, { 0x00E00B, "ROOFTOP COMMUNICATIONS CORP.", "ROOFTOP-COMMUNICATION" }, { 0x00E067, "eac AUTOMATION-CONSULTING GmbH", "EAC-AUTOMATION-CONSULTING" }, { 0x00E058, "PHASE ONE DENMARK A/S", "PHASE-ONE-DENMARK-A/S" }, { 0x00E089, "ION Networks, Inc.", "ION-NETWORKS" }, { 0x00E03B, "PROMINET CORPORATION", "PROMINET" }, { 0x006017, "TOKIMEC INC.", "TOKIMEC" }, { 0x0060E6, "SHOMITI SYSTEMS INCORPORATED", "SHOMITI-INCORPORATED" }, { 0x006053, "TOYODA MACHINE WORKS, LTD.", "TOYODA-MACHINE-WORKS" }, { 0x0060A0, "SWITCHED NETWORK TECHNOLOGIES, INC.", "SWITCHED-NETWORK-TECHNOLOGIES" }, { 0x006019, "Roche Diagnostics", "ROCHE-DIAGNOSTICS" }, { 0x006033, "ACUITY IMAGING, INC.", "ACUITY-IMAGING" }, { 0x0060EE, "APOLLO", "APOLLO" }, { 0x006022, "VICOM SYSTEMS, INC.", "VICOM" }, { 0x006013, "NETSTAL MASCHINEN AG", "NETSTAL-MASCHINEN" }, { 0x0060F4, "ADVANCED COMPUTER SOLUTIONS, Inc.", "ADVANCED-SOLUTIONS" }, { 0x006011, "CRYSTAL SEMICONDUCTOR CORP.", "CRYSTAL-SEMICONDUCTOR" }, { 0x00600E, "WAVENET INTERNATIONAL, INC.", "WAVENET" }, { 0x0060C0, "Nera Networks AS", "NERA-NETWORKS-AS" }, { 0x00E062, "HOST ENGINEERING", "HOST-ENGINEERING" }, { 0x00E033, "E.E.P.D. GmbH", "E-E-P-D" }, { 0x00E079, "A.T.N.R.", "A-T-N-R" }, { 0x00E09C, "MII", "MII" }, { 0x00E075, "Verilink Corporation", "VERILINK" }, { 0x00E07A, "MIKRODIDAKT AB", "MIKRODIDAKT-AB" }, { 0x00E03E, "ALFATECH, INC.", "ALFATECH" }, { 0x00E09A, "Positron Inc.", "POSITRON" }, { 0x0060D7, "ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)", "ECOLE-POLYTECHNIQUE-FEDERALE-DE-LAUSANNE-EPFL" }, { 0x006087, "KANSAI ELECTRIC CO., LTD.", "KANSAI-ELECTRIC" }, { 0x00E029, "STANDARD MICROSYSTEMS CORP.", "STANDARD-MICROSYSTEMS" }, { 0x00606B, "Synclayer Inc.", "SYNCLAYER" }, { 0x006073, "REDCREEK COMMUNICATIONS, INC.", "REDCREEK-COMMUNICATION" }, { 0x006039, "SanCom Technology, Inc.", "SANCOM" }, { 0x0060A5, "PERFORMANCE TELECOM CORP.", "PERFORMANCE-TELECOM" }, { 0x0060B3, "Z-COM, INC.", "Z-COM" }, { 0x006089, "XATA", "XATA" }, { 0x00603C, "HAGIWARA SYS-COM CO., LTD.", "HAGIWARA-SYS-COM" }, { 0x00602E, "CYCLADES CORPORATION", "CYCLADES" }, { 0x006075, "PENTEK, INC.", "PENTEK" }, { 0x00601C, "TELXON CORPORATION", "TELXON" }, { 0x006016, "CLARIION", "CLARIION" }, { 0x0060AD, "MegaChips Corporation", "MEGACHIPS" }, { 0x0060B6, "LAND COMPUTER CO., LTD.", "LAND" }, { 0x006055, "CORNELL UNIVERSITY", "CORNELL-UNIVERSITY" }, { 0x006015, "NET2NET CORPORATION", "NET2NET" }, { 0x00A01D, "Red Lion Controls, LP", "RED-LION-CONTROLS-LP" }, { 0x00A071, "VIDEO LOTTERY TECHNOLOGIES,INC", "VIDEO-LOTTERY-TECHNOLOGIES" }, { 0x00A052, "STANILITE ELECTRONICS PTY. LTD", "STANILITE-ELECTRONICS-PTY" }, { 0x00A0EA, "ETHERCOM CORP.", "ETHERCOM" }, { 0x00A02E, "BRAND COMMUNICATIONS, LTD.", "BRAND-COMMUNICATION" }, { 0x00A0E2, "Keisokugiken Corporation", "KEISOKUGIKEN" }, { 0x00A058, "GLORY, LTD.", "GLORY" }, { 0x00E093, "ACKFIN NETWORKS", "ACKFIN-NETWORKS" }, { 0x00E0E3, "SK-ELEKTRONIK GMBH", "SK-ELEKTRONIK" }, { 0x00E066, "ProMax Systems, Inc.", "PROMAX" }, { 0x00E0DB, "ViaVideo Communications, Inc.", "VIAVIDEO-COMMUNICATION" }, { 0x00E0DF, "KEYMILE GmbH", "KEYMILE" }, { 0x00E00D, "RADIANT SYSTEMS", "RADIANT" }, { 0x00E008, "AMAZING CONTROLS! INC.", "AMAZING-CONTROLS!" }, { 0x00E086, "Emerson Network Power, Avocent Division", "EMERSON-NETWORK-POWER-AVOCENT-DIVISION" }, { 0x00E0E1, "G2 NETWORKS, INC.", "G2-NETWORKS" }, { 0x00E042, "Pacom Systems Ltd.", "PACOM" }, { 0x00E08E, "UTSTARCOM", "UTSTARCOM" }, { 0x00E095, "ADVANCED-VISION TECHNOLGIES CORP.", "ADVANCED-VISION-TECHNOLGIES" }, { 0x006006, "SOTEC CO., LTD", "SOTEC" }, { 0x00603D, "3CX", "3CX" }, { 0x006029, "CARY PERIPHERALS INC.", "CARY-PERIPHERALS" }, { 0x006043, "iDirect, INC.", "IDIRECT" }, { 0x0060D1, "CASCADE COMMUNICATIONS", "CASCADE-COMMUNICATION" }, { 0x0060CD, "VideoServer, Inc.", "VIDEOSERVER" }, { 0x006094, "IBM Corp", "IBM" }, { 0x0060D9, "TRANSYS NETWORKS INC.", "TRANSYS-NETWORKS" }, { 0x0060AA, "INTELLIGENT DEVICES INC. (IDI)", "INTELLIGENT-DEVICES-IDI" }, { 0x00605A, "CELCORE, INC.", "CELCORE" }, { 0x006065, "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH", "BERNECKER-RAINER-INDUSTRIE-ELEKTRONIC" }, { 0x00E07B, "BAY NETWORKS", "BAY-NETWORKS" }, { 0x00E077, "WEBGEAR, INC.", "WEBGEAR" }, { 0x00E0D2, "VERSANET COMMUNICATIONS, INC.", "VERSANET-COMMUNICATION" }, { 0x00E04E, "SANYO DENKI CO., LTD.", "SANYO-DENKI" }, { 0x00E0D0, "NETSPEED, INC.", "NETSPEED" }, { 0x00E02A, "TANDBERG TELEVISION AS", "TANDBERG-TELEVISION-AS" }, { 0x00E05B, "WEST END SYSTEMS CORP.", "WEST-END" }, { 0x00E051, "TALX CORPORATION", "TALX" }, { 0x00A0F0, "TORONTO MICROELECTRONICS INC.", "TORONTO-MICROELECTRONICS" }, { 0x00A049, "DIGITECH INDUSTRIES, INC.", "DIGITECH-INDUSTRIES" }, { 0x00A027, "FIREPOWER SYSTEMS, INC.", "FIREPOWER" }, { 0x00A0FF, "TELLABS OPERATIONS, INC.", "TELLABS-OPERATIONS" }, { 0x00A001, "DRS Signal Solutions", "DRS-SIGNAL-SOLUTIONS" }, { 0x00A0F1, "MTI", "MTI" }, { 0x00A046, "SCITEX CORP. LTD.", "SCITEX" }, { 0x00A0D9, "CONVEX COMPUTER CORPORATION", "CONVEX" }, { 0x00A0B5, "3H TECHNOLOGY", "3H" }, { 0x00A0AC, "GILAT SATELLITE NETWORKS, LTD.", "GILAT-SATELLITE-NETWORKS" }, { 0x00A057, "LANCOM Systems GmbH", "LANCOM" }, { 0x00A086, "AMBER WAVE SYSTEMS, INC.", "AMBER-WAVE" }, { 0x00A083, "ASIMMPHONY TURKEY", "ASIMMPHONY-TURKEY" }, { 0x00A091, "APPLICOM INTERNATIONAL", "APPLICOM" }, { 0x00A004, "NETPOWER, INC.", "NETPOWER" }, { 0x00A081, "ALCATEL DATA NETWORKS", "ALCATEL-DATA-NETWORKS" }, { 0x00A0D5, "SIERRA WIRELESS INC.", "SIERRA-WIRELESS" }, { 0x00200F, "EBRAINS Inc", "EBRAINS" }, { 0x0020C7, "AKAI Professional M.I. Corp.", "AKAI-PROFESSIONAL-M-I" }, { 0x0020EB, "CINCINNATI MICROWAVE, INC.", "CINCINNATI-MICROWAVE" }, { 0x0020E3, "MCD KENCOM CORPORATION", "MCD-KENCOM" }, { 0x002013, "DIVERSIFIED TECHNOLOGY, INC.", "DIVERSIFIED" }, { 0x0020C1, "SAXA, Inc.", "SAXA" }, { 0x002087, "MEMOTEC, INC.", "MEMOTEC" }, { 0x0020F9, "PARALINK NETWORKS, INC.", "PARALINK-NETWORKS" }, { 0x00A0F9, "BINTEC COMMUNICATIONS GMBH", "BINTEC-COMMUNICATION" }, { 0x00A0BC, "VIASAT, INCORPORATED", "VIASAT-INCORPORATED" }, { 0x00A003, "Siemens Switzerland Ltd., I B T HVP", "SIEMENS-SWITZERLAND-I-B-T-HVP" }, { 0x00A09E, "ICTV", "ICTV" }, { 0x00A026, "TELDAT, S.A.", "TELDAT" }, { 0x00201A, "MRV Communications, Inc.", "MRV-COMMUNICATION" }, { 0x002023, "T.C. TECHNOLOGIES PTY. LTD", "T-C-TECHNOLOGIES-PTY" }, { 0x0020F3, "RAYNET CORPORATION", "RAYNET" }, { 0x002039, "SCINETS", "SCINETS" }, { 0x002038, "VME MICROSYSTEMS INTERNATIONAL CORPORATION", "VME-MICROSYSTEMS" }, { 0x00203E, "LogiCan Technologies, Inc.", "LOGICAN-TECHNOLOGIES" }, { 0x002055, "ALTECH CO., LTD.", "ALTECH" }, { 0x0020D9, "PANASONIC TECHNOLOGIES, INC./MIECO-US", "PANASONIC-TECHNOLOGIES-/MIECO-US" }, { 0x002080, "SYNERGY (UK) LTD.", "SYNERGY-UK" }, { 0x002026, "AMKLY SYSTEMS, INC.", "AMKLY" }, { 0x00203D, "Honeywell ECC", "HONEYWELL-ECC" }, { 0x002019, "OHLER GMBH", "OHLER" }, { 0x002057, "TITZE DATENTECHNIK GmbH", "TITZE-DATENTECHNIK" }, { 0x0020BE, "LAN ACCESS CORP.", "LAN-ACCESS" }, { 0x002022, "NMS Communications", "NMS-COMMUNICATION" }, { 0x0020AA, "Ericsson Television Limited", "ERICSSON-TELEVISION" }, { 0x00208E, "CHEVIN SOFTWARE ENG. LTD.", "CHEVIN-SOFTWARE-ENG" }, { 0x00203B, "WISDM LTD.", "WISDM" }, { 0x002044, "GENITECH PTY LTD", "GENITECH-PTY" }, { 0x0020F5, "PANDATEL AG", "PANDATEL" }, { 0x002021, "ALGORITHMS SOFTWARE PVT. LTD.", "ALGORITHMS-SOFTWARE-PVT" }, { 0x002074, "SUNGWOON SYSTEMS", "SUNGWOON" }, { 0x0020CE, "LOGICAL DESIGN GROUP, INC.", "LOGICAL-DESIGN-GROUP" }, { 0x002082, "ONEAC CORPORATION", "ONEAC" }, { 0x0020BF, "AEHR TEST SYSTEMS", "AEHR-TEST" }, { 0x0020F1, "ALTOS INDIA LIMITED", "ALTOS-INDIA" }, { 0x00205D, "NANOMATIC OY", "NANOMATIC-OY" }, { 0x0020E1, "ALAMAR ELECTRONICS", "ALAMAR-ELECTRONICS" }, { 0x0020CC, "DIGITAL SERVICES, LTD.", "DIGITAL-SERVICES" }, { 0x00202C, "WELLTRONIX CO., LTD.", "WELLTRONIX" }, { 0x0020B3, "Tattile SRL ", "TATTILE-SRL" }, { 0x00A048, "QUESTECH, LTD.", "QUESTECH" }, { 0x00A0C4, "CRISTIE ELECTRONICS LTD.", "CRISTIE-ELECTRONICS" }, { 0x00A089, "XPOINT TECHNOLOGIES, INC.", "XPOINT-TECHNOLOGIES" }, { 0x00A0D1, "INVENTEC CORPORATION", "INVENTEC" }, { 0x00A0AE, "NUCOM SYSTEMS, INC.", "NUCOM" }, { 0x00A02B, "TRANSITIONS RESEARCH CORP.", "TRANSITIONS-RESEARCH" }, { 0x00A0A1, "EPIC DATA INC.", "EPIC-DATA" }, { 0x00A0C3, "UNICOMPUTER GMBH", "UNICOMPUTER" }, { 0x00A042, "SPUR PRODUCTS CORP.", "SPUR-PRODUCTS" }, { 0x00C007, "PINNACLE DATA SYSTEMS, INC.", "PINNACLE-DATA" }, { 0x00C0F8, "ABOUT COMPUTING INC.", "ABOUT-COMPUTING" }, { 0x00C06F, "KOMATSU LTD.", "KOMATSU" }, { 0x00C08E, "NETWORK INFORMATION TECHNOLOGY", "NETWORK-INFORMATION" }, { 0x00C05A, "SEMAPHORE COMMUNICATIONS CORP.", "SEMAPHORE-COMMUNICATION" }, { 0x00C0EB, "SEH COMPUTERTECHNIK GMBH", "SEH-COMPUTERTECHNIK" }, { 0x00C0C7, "SPARKTRUM MICROSYSTEMS, INC.", "SPARKTRUM-MICROSYSTEMS" }, { 0x00C0D8, "UNIVERSAL DATA SYSTEMS", "UNIVERSAL-DATA" }, { 0x00C068, "HME Clear-Com LTD.", "HME-CLEAR-COM" }, { 0x0040DB, "ADVANCED TECHNICAL SOLUTIONS", "ADVANCED-TECHNICAL-SOLUTIONS" }, { 0x00405B, "FUNASSET LIMITED", "FUNASSET" }, { 0x00401B, "PRINTER SYSTEMS CORP.", "PRINTER" }, { 0x0040EB, "MARTIN MARIETTA CORPORATION", "MARTIN-MARIETTA" }, { 0x0040CD, "TERA MICROSYSTEMS, INC.", "TERA-MICROSYSTEMS" }, { 0x0040E5, "SYBUS CORPORATION", "SYBUS" }, { 0x0040F9, "COMBINET", "COMBINET" }, { 0x004039, "OPTEC DAIICHI DENKO CO., LTD.", "OPTEC-DAIICHI-DENKO" }, { 0x0040FE, "SYMPLEX COMMUNICATIONS", "SYMPLEX-COMMUNICATION" }, { 0x0020F0, "UNIVERSAL MICROELECTRONICS CO.", "UNIVERSAL-MICROELECTRONICS" }, { 0x0020EF, "USC CORPORATION", "USC" }, { 0x002016, "SHOWA ELECTRIC WIRE & CABLE CO", "SHOWA-ELECTRIC-WIRE-CABLE" }, { 0x00201F, "BEST POWER TECHNOLOGY, INC.", "BEST-POWER" }, { 0x002045, "ION Networks, Inc.", "ION-NETWORKS" }, { 0x0020B6, "AGILE NETWORKS, INC.", "AGILE-NETWORKS" }, { 0x00208A, "SONIX COMMUNICATIONS, LTD.", "SONIX-COMMUNICATION" }, { 0x00204C, "MITRON COMPUTER PTE LTD.", "MITRON-PTE" }, { 0x002002, "SERITECH ENTERPRISE CO., LTD.", "SERITECH" }, { 0x00204B, "AUTOCOMPUTER CO., LTD.", "AUTOCOMPUTER" }, { 0x0020AF, "3COM CORPORATION", "3COM" }, { 0x002048, "Marconi Communications", "MARCONI-COMMUNICATION" }, { 0x002008, "CABLE & COMPUTER TECHNOLOGY", "CABLE" }, { 0x00C023, "TUTANKHAMON ELECTRONICS", "TUTANKHAMON-ELECTRONICS" }, { 0x00C0F3, "NETWORK COMMUNICATIONS CORP.", "NETWORK-COMMUNICATION" }, { 0x00C043, "STRATACOM", "STRATACOM" }, { 0x00C0B3, "COMSTAT DATACOMM CORPORATION", "COMSTAT-DATACOMM" }, { 0x00C0B5, "CORPORATE NETWORK SYSTEMS,INC.", "CORPORATE-NETWORK" }, { 0x00403E, "RASTER OPS CORPORATION", "RASTER-OPS" }, { 0x0040AE, "DELTA CONTROLS, INC.", "DELTA-CONTROLS" }, { 0x0040C6, "FIBERNET RESEARCH, INC.", "FIBERNET-RESEARCH" }, { 0x004092, "ASP COMPUTER PRODUCTS, INC.", "ASP-PRODUCTS" }, { 0x004054, "CONNECTION MACHINES SERVICES", "CONNECTION-MACHINES-SERVICES" }, { 0x0040D8, "OCEAN OFFICE AUTOMATION LTD.", "OCEAN-OFFICE-AUTOMATION" }, { 0x0040C0, "VISTA CONTROLS CORPORATION", "VISTA-CONTROLS" }, { 0x004088, "MOBIUS TECHNOLOGIES, INC.", "MOBIUS-TECHNOLOGIES" }, { 0x00803B, "APT COMMUNICATIONS, INC.", "APT-COMMUNICATION" }, { 0x0080BA, "SPECIALIX (ASIA) PTE, LTD", "SPECIALIX-ASIA-PTE" }, { 0x00BB01, "OCTOTHORPE CORP.", "OCTOTHORPE" }, { 0x00C01F, "S.E.R.C.E.L.", "S-E-R-C-E-L" }, { 0x00C094, "VMX INC.", "VMX" }, { 0x00C075, "XANTE CORPORATION", "XANTE" }, { 0x00C0F9, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x00C039, "Teridian Semiconductor Corporation", "TERIDIAN-SEMICONDUCTOR" }, { 0x00C077, "DAEWOO TELECOM LTD.", "DAEWOO-TELECOM" }, { 0x00C02F, "OKUMA CORPORATION", "OKUMA" }, { 0x00C0F1, "SHINKO ELECTRIC CO., LTD.", "SHINKO-ELECTRIC" }, { 0x00C0DE, "ZCOMM, INC.", "ZCOMM" }, { 0x0040AF, "DIGITAL PRODUCTS, INC.", "DIGITAL-PRODUCTS" }, { 0x00404F, "SPACE & NAVAL WARFARE SYSTEMS", "SPACE-NAVAL-WARFARE" }, { 0x00407B, "SCIENTIFIC ATLANTA", "SCIENTIFIC-ATLANTA" }, { 0x00404E, "FLUENT, INC.", "FLUENT" }, { 0x00C0F7, "ENGAGE COMMUNICATION, INC.", "ENGAGE-COMMUNICATION" }, { 0x00C030, "INTEGRATED ENGINEERING B. V.", "INTEGRATED-ENGINEERING" }, { 0x00C04A, "GROUP 2000 AG", "GROUP-2000" }, { 0x00C0A6, "EXICOM AUSTRALIA PTY. LTD", "EXICOM-AUSTRALIA-PTY" }, { 0x00C053, "Aspect Software Inc.", "ASPECT-SOFTWARE" }, { 0x00C0CF, "IMATRAN VOIMA OY", "IMATRAN-VOIMA-OY" }, { 0x00C029, "Nexans Deutschland GmbH - ANS", "NEXANS-DEUTSCHLAND---ANS" }, { 0x00C0A4, "UNIGRAF OY", "UNIGRAF-OY" }, { 0x00C060, "ID SCANDINAVIA AS", "ID-SCANDINAVIA-AS" }, { 0x00C082, "MOORE PRODUCTS CO.", "MOORE-PRODUCTS" }, { 0x00C008, "SECO SRL", "SECO-SRL" }, { 0x00C0BB, "FORVAL CREATIVE, INC.", "FORVAL-CREATIVE" }, { 0x00C0E0, "DSC COMMUNICATION CORP.", "DSC-COMMUNICATION" }, { 0x00C05E, "VARI-LITE, INC.", "VARI-LITE" }, { 0x00C031, "DESIGN RESEARCH SYSTEMS, INC.", "DESIGN-RESEARCH" }, { 0x00C07C, "HIGHTECH INFORMATION", "HIGHTECH-INFORMATION" }, { 0x00C0AE, "TOWERCOM CO. INC. DBA PC HOUSE", "TOWERCOM-DBA-PC-HOUSE" }, { 0x00C0D6, "J1 SYSTEMS, INC.", "J1" }, { 0x00C0AA, "SILICON VALLEY COMPUTER", "SILICON-VALLEY" }, { 0x00C04E, "COMTROL CORPORATION", "COMTROL" }, { 0x00C00A, "MICRO CRAFT", "MICRO-CRAFT" }, { 0x00C02A, "OHKURA ELECTRIC CO., LTD.", "OHKURA-ELECTRIC" }, { 0x00C0F2, "TRANSITION NETWORKS", "TRANSITION-NETWORKS" }, { 0x00C01D, "GRAND JUNCTION NETWORKS, INC.", "GRAND-JUNCTION-NETWORKS" }, { 0x00C0AD, "MARBEN COMMUNICATION SYSTEMS", "MARBEN-COMMUNICATION" }, { 0x00C024, "EDEN SISTEMAS DE COMPUTACAO SA", "EDEN-SISTEMAS-DE-COMPUTACAO" }, { 0x00C0E9, "OAK SOLUTIONS, LTD.", "OAK-SOLUTIONS" }, { 0x00C0C5, "SID INFORMATICA", "SID-INFORMATICA" }, { 0x00C001, "DIATEK PATIENT MANAGMENT", "DIATEK-PATIENT-MANAGMENT" }, { 0x00C07E, "KUBOTA CORPORATION ELECTRONIC", "KUBOTA" }, { 0x008012, "INTEGRATED MEASUREMENT SYSTEMS", "INTEGRATED-MEASUREMENT" }, { 0x008039, "ALCATEL STC AUSTRALIA", "ALCATEL-STC-AUSTRALIA" }, { 0x008023, "INTEGRATED BUSINESS NETWORKS", "INTEGRATED-BUSINESS-NETWORKS" }, { 0x0080CA, "NETCOM RESEARCH INCORPORATED", "NETCOM-RESEARCH-INCORPORATED" }, { 0x00804D, "CYCLONE MICROSYSTEMS, INC.", "CYCLONE-MICROSYSTEMS" }, { 0x0080D6, "NUVOTECH, INC.", "NUVOTECH" }, { 0x0080ED, "IQ TECHNOLOGIES, INC.", "IQ-TECHNOLOGIES" }, { 0x0080C1, "LANEX CORPORATION", "LANEX" }, { 0x008049, "NISSIN ELECTRIC CO., LTD.", "NISSIN-ELECTRIC" }, { 0x00807C, "FIBERCOM, INC.", "FIBERCOM" }, { 0x008079, "MICROBUS DESIGNS LTD.", "MICROBUS-DESIGNS" }, { 0x0080DE, "GIPSI S.A.", "GIPSI" }, { 0x008004, "ANTLOW COMMUNICATIONS, LTD.", "ANTLOW-COMMUNICATION" }, { 0x008078, "PRACTICAL PERIPHERALS, INC.", "PRACTICAL-PERIPHERALS" }, { 0x008040, "JOHN FLUKE MANUFACTURING CO.", "JOHN-FLUKE-MANUFACTURING" }, { 0x0000F8, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x0080CE, "BROADCAST TELEVISION SYSTEMS", "BROADCAST-TELEVISION" }, { 0x00801A, "BELL ATLANTIC", "BELL-ATLANTIC" }, { 0x00803F, "TATUNG COMPANY", "TATUNG-COMPANY" }, { 0x0080D4, "CHASE RESEARCH LTD.", "CHASE-RESEARCH" }, { 0x0080CB, "FALCO DATA PRODUCTS", "FALCO-DATA-PRODUCTS" }, { 0x008075, "PARSYTEC GMBH", "PARSYTEC" }, { 0x0080EB, "COMPCONTROL B.V.", "COMPCONTROL" }, { 0x008099, "Eaton Industries GmbH", "EATON-INDUSTRIES" }, { 0x0080E4, "NORTHWEST DIGITAL SYSTEMS, INC", "NORTHWEST-DIGITAL" }, { 0x008041, "VEB KOMBINAT ROBOTRON", "VEB-KOMBINAT-ROBOTRON" }, { 0x0080C8, "D-LINK SYSTEMS, INC.", "D-LINK" }, { 0x008036, "REFLEX MANUFACTURING SYSTEMS", "REFLEX-MANUFACTURING" }, { 0x0040F0, "MicroBrain,Inc.", "MICROBRAIN" }, { 0x0040A7, "ITAUTEC PHILCO S.A.", "ITAUTEC-PHILCO" }, { 0x0040D3, "KIMPSION INTERNATIONAL CORP.", "KIMPSION" }, { 0x004065, "GTE SPACENET", "GTE-SPACENET" }, { 0x0040CB, "LANWAN TECHNOLOGIES", "LANWAN-TECHNOLOGIES" }, { 0x004041, "FUJIKURA LTD.", "FUJIKURA" }, { 0x004053, "AMPRO COMPUTERS", "AMPRO-COMPUTERS" }, { 0x008032, "ACCESS CO., LTD.", "ACCESS" }, { 0x0080CF, "EMBEDDED PERFORMANCE INC.", "EMBEDDED-PERFORMANCE" }, { 0x008031, "BASYS, CORP.", "BASYS" }, { 0x00803A, "VARITYPER, INC.", "VARITYPER" }, { 0x00807E, "SOUTHERN PACIFIC LTD.", "SOUTHERN-PACIFIC" }, { 0x008029, "EAGLE TECHNOLOGY, INC.", "EAGLE" }, { 0x00802F, "NATIONAL INSTRUMENTS CORP.", "NATIONAL-INSTRUMENTS" }, { 0x008051, "FIBERMUX", "FIBERMUX" }, { 0x0080FD, "EXSCEED CORPRATION", "EXSCEED-CORPRATION" }, { 0x004008, "A PLUS INFO CORPORATION", "A-PLUS-INFO" }, { 0x0040E9, "ACCORD SYSTEMS, INC.", "ACCORD" }, { 0x0040B5, "VIDEO TECHNOLOGY COMPUTERS LTD", "VIDEO-COMPUTERS" }, { 0x004012, "WINDATA, INC.", "WINDATA" }, { 0x00401C, "AST RESEARCH, INC.", "AST-RESEARCH" }, { 0x004067, "OMNIBYTE CORPORATION", "OMNIBYTE" }, { 0x004035, "OPCOM", "OPCOM" }, { 0x0040EA, "PLAIN TREE SYSTEMS INC", "PLAIN-TREE" }, { 0x0040EF, "HYPERCOM, INC.", "HYPERCOM" }, { 0x004093, "PAXDATA NETWORKS LTD.", "PAXDATA-NETWORKS" }, { 0x0040EC, "MIKASA SYSTEM ENGINEERING", "MIKASA-SYSTEM-ENGINEERING" }, { 0x0080B9, "ARCHE TECHNOLIGIES INC.", "ARCHE-TECHNOLIGIES" }, { 0x0080A7, "Honeywell International Inc", "HONEYWELL" }, { 0x0040DA, "TELSPEC LTD", "TELSPEC" }, { 0x004083, "TDA INDUSTRIA DE PRODUTOS", "TDA-INDUSTRIA-DE-PRODUTOS" }, { 0x0040C8, "MILAN TECHNOLOGY CORPORATION", "MILAN" }, { 0x0040BC, "ALGORITHMICS LTD.", "ALGORITHMICS" }, { 0x00402F, "XLNT DESIGNS INC.", "XLNT-DESIGNS" }, { 0x00405D, "STAR-TEK, INC.", "STAR-TEK" }, { 0x00405F, "AFE COMPUTERS LTD.", "AFE-COMPUTERS" }, { 0x004043, "Nokia Siemens Networks GmbH & Co. KG.", "NOKIA-SIEMENS-NETWORKS" }, { 0x00800D, "VOSSWINKEL F.U.", "VOSSWINKEL-F-U" }, { 0x0080D1, "KIMTRON CORPORATION", "KIMTRON" }, { 0x00805D, "CANSTAR", "CANSTAR" }, { 0x008094, "ALFA LAVAL AUTOMATION AB", "ALFA-LAVAL-AUTOMATION-AB" }, { 0x008047, "IN-NET CORP.", "IN-NET" }, { 0x008064, "WYSE TECHNOLOGY LLC", "WYSE-LLC" }, { 0x0080C5, "NOVELLCO DE MEXICO", "NOVELLCO-DE-MEXICO" }, { 0x0080AC, "IMLOGIX, DIVISION OF GENESYS", "IMLOGIX-DIVISION-OF-GENESYS" }, { 0x000052, "Intrusion.com, Inc.", "INTRUSION-COM" }, { 0x0000BD, "MITSUBISHI CABLE COMPANY", "MITSUBISHI-CABLE-COMPANY" }, { 0x000037, "OXFORD METRICS LIMITED", "OXFORD-METRICS" }, { 0x00003F, "SYNTREX, INC.", "SYNTREX" }, { 0x08007C, "VITALINK COMMUNICATIONS CORP.", "VITALINK-COMMUNICATION" }, { 0x080076, "PC LAN TECHNOLOGIES", "PC-LAN-TECHNOLOGIES" }, { 0x080072, "XEROX CORP UNIV GRANT PROGRAM", "XEROX-UNIV-GRANT-PROGRAM" }, { 0x080068, "RIDGE COMPUTERS", "RIDGE-COMPUTERS" }, { 0x080062, "General Dynamics", "GENERAL-DYNAMICS" }, { 0x080057, "Evans & Sutherland", "EVANS-SUTHERLAND" }, { 0x000010, "SYTEK INC.", "SYTEK" }, { 0x000033, "EGAN MACHINERY COMPANY", "EGAN-MACHINERY-COMPANY" }, { 0x000080, "CRAY COMMUNICATIONS A/S", "CRAY-COMMUNICATION-A/S" }, { 0x0000FD, "HIGH LEVEL HARDWARE", "HIGH-LEVEL-HARDWARE" }, { 0x08008C, "NETWORK RESEARCH CORPORATION", "NETWORK-RESEARCH" }, { 0x080089, "Kinetics", "KINETICS" }, { 0x080084, "TOMEN ELECTRONICS CORP.", "TOMEN-ELECTRONICS" }, { 0x00000D, "FIBRONICS LTD.", "FIBRONICS" }, { 0x00004F, "LOGICRAFT, INC.", "LOGICRAFT" }, { 0x000015, "DATAPOINT CORPORATION", "DATAPOINT" }, { 0x0000C7, "ARIX CORPORATION", "ARIX" }, { 0x00001C, "BELL TECHNOLOGIES", "BELL-TECHNOLOGIES" }, { 0x00001A, "ADVANCED MICRO DEVICES", "ADVANCED-MICRO-DEVICES" }, { 0x000082, "LECTRA SYSTEMES SA", "LECTRA-SYSTEMES" }, { 0x0000DA, "ATEX", "ATEX" }, { 0x0000DB, "British Telecommunications plc", "BRITISH-TELECOMMUNICATIONS-PLC" }, { 0x0000C1, "Madge Ltd.", "MADGE" }, { 0x0000F6, "APPLIED MICROSYSTEMS CORP.", "APPLIED-MICROSYSTEMS" }, { 0x080023, "Panasonic Communications Co., Ltd.", "PANASONIC-COMMUNICATION" }, { 0x080022, "NBI INC.", "NBI" }, { 0x080019, "GENERAL ELECTRIC CORPORATION", "GENERAL-ELECTRIC" }, { 0x08004D, "CORVUS SYSTEMS INC.", "CORVUS" }, { 0x08003E, "CODEX CORPORATION", "CODEX" }, { 0x080033, "BAUSCH & LOMB", "BAUSCH-LOMB" }, { 0x08002F, "PRIME COMPUTER INC.", "PRIME" }, { 0x080032, "TIGAN INCORPORATED", "TIGAN-INCORPORATED" }, { 0x08002E, "METAPHOR COMPUTER SYSTEMS", "METAPHOR" }, { 0x0000D2, "SBE, INC.", "SBE" }, { 0x00006B, "SILICON GRAPHICS INC./MIPS", "SILICON-GRAPHICS-/MIPS" }, { 0x0000CC, "DENSAN CO., LTD.", "DENSAN" }, { 0x0000CE, "MEGADATA CORP.", "MEGADATA" }, { 0x0000EF, "KTI", "KTI" }, { 0x00000F, "NEXT, INC.", "NEXT" }, { 0x0000C6, "EON SYSTEMS", "EON" }, { 0x0000D5, "MICROGNOSIS INTERNATIONAL", "MICROGNOSIS" }, { 0x000078, "LABTAM LIMITED", "LABTAM" }, { 0x0000EB, "MATSUSHITA COMM. IND. CO. LTD.", "MATSUSHITA-COMM-IND" }, { 0x00009C, "ROLM MIL-SPEC COMPUTERS", "ROLM-MIL-SPEC-COMPUTERS" }, { 0x000032, "Marconi plc", "MARCONI-PLC" }, { 0x000069, "CONCORD COMMUNICATIONS INC", "CONCORD-COMMUNICATION" }, { 0x00008B, "INFOTRON", "INFOTRON" }, { 0x0000BE, "THE NTI GROUP", "THE-NTI-GROUP" }, { 0x00004C, "NEC CORPORATION", "NEC" }, { 0x00003B, "i Controls, Inc.", "I-CONTROLS" }, { 0x080013, "Exxon", "EXXON" }, { 0x02BB01, "OCTOTHORPE CORP.", "OCTOTHORPE" }, { 0x0000A6, "NETWORK GENERAL CORPORATION", "NETWORK-GENERAL" }, { 0x00DD06, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0B, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x000007, "XEROX CORPORATION", "XEROX" }, { 0x080014, "EXCELAN", "EXCELAN" }, { 0x08000F, "MITEL CORPORATION", "MITEL" }, { 0x0000D7, "DARTMOUTH COLLEGE", "DARTMOUTH-COLLEGE" }, { 0x00DD00, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x08000A, "NESTAR SYSTEMS INCORPORATED", "NESTAR-INCORPORATED" }, { 0x08001C, "KDD-KOKUSAI DEBNSIN DENWA CO.", "KDD-KOKUSAI-DEBNSIN-DENWA" }, { 0x02AA3C, "OLIVETTI TELECOMM SPA (OLTECO)", "OLIVETTI-TELECOMM-SPA-OLTECO" }, { 0x08001D, "ABLE COMMUNICATIONS INC.", "ABLE-COMMUNICATION" }, { 0x080018, "PIRELLI FOCOM NETWORKS", "PIRELLI-FOCOM-NETWORKS" }, { 0x080015, "STC BUSINESS SYSTEMS", "STC-BUSINESS" }, { 0x00DD03, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00801F, "KRUPP ATLAS ELECTRONIK GMBH", "KRUPP-ATLAS-ELECTRONIK" }, { 0x00408E, "Tattile SRL ", "TATTILE-SRL" }, { 0x00800F, "STANDARD MICROSYSTEMS", "STANDARD-MICROSYSTEMS" }, { 0x080065, "GENRAD INC.", "GENRAD" }, { 0x002275, "Belkin International Inc.", "BELKIN" }, { 0x149182, "Belkin International Inc.", "BELKIN" }, { 0x70106F, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x988B5D, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x94FEF4, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xC8CD72, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xE8BE81, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xC4282D, "Embedded Intellect Pty Ltd", "EMBEDDED-INTELLECT-PTY" }, { 0x002348, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xB870F4, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x000FB0, "COMPAL ELECTRONICS, INC.", "COMPAL-ELECTRONICS" }, { 0x1C7508, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x3829DD, "ONvocal Inc", "ONVOCAL" }, { 0xF81897, "2Wire Inc", "2WIRE" }, { 0xECF4BB, "Dell Inc.", "DELL" }, { 0xD067E5, "Dell Inc.", "DELL" }, { 0x18A99B, "Dell Inc.", "DELL" }, { 0xF8DB88, "Dell Inc.", "DELL" }, { 0x18FB7B, "Dell Inc.", "DELL" }, { 0x001495, "2Wire Inc", "2WIRE" }, { 0x74E6E2, "Dell Inc.", "DELL" }, { 0x109836, "Dell Inc.", "DELL" }, { 0x44A842, "Dell Inc.", "DELL" }, { 0x34E6D7, "Dell Inc.", "DELL" }, { 0x000BDB, "Dell Inc.", "DELL" }, { 0x001143, "Dell Inc.", "DELL" }, { 0x00188B, "Dell Inc.", "DELL" }, { 0xD4BED9, "Dell Inc.", "DELL" }, { 0x002650, "2Wire Inc", "2WIRE" }, { 0x00217C, "2Wire Inc", "2WIRE" }, { 0x001FB3, "2Wire Inc", "2WIRE" }, { 0x640F28, "2Wire Inc", "2WIRE" }, { 0x001AA0, "Dell Inc.", "DELL" }, { 0x002170, "Dell Inc.", "DELL" }, { 0x0026B9, "Dell Inc.", "DELL" }, { 0xA4BADB, "Dell Inc.", "DELL" }, { 0x001E4F, "Dell Inc.", "DELL" }, { 0x5CF9DD, "Dell Inc.", "DELL" }, { 0x907AF1, "Wally", "WALLY" }, { 0x28101B, "MagnaCom", "MAGNACOM" }, { 0x00065B, "Dell Inc.", "DELL" }, { 0x448723, "HOYA SERVICE CORPORATION", "HOYA-SERVICE" }, { 0x806C1B, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xA470D6, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x001B21, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001B77, "Intel Corporate", "INTEL-CORPORATE" }, { 0x18FF0F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x58A839, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA434D9, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00215D, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001676, "Intel Corporate", "INTEL-CORPORATE" }, { 0x984FEE, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE82AEA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x605718, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC4D987, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB4B676, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8C705A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9C4E36, "Intel Corporate", "INTEL-CORPORATE" }, { 0x541473, "Wingtech Group (HongKong)Limited", "WINGTECH-GROUP-HONGKONG)" }, { 0x001C50, "TCL Technoly Electronics (Huizhou) Co., Ltd.", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0x00AA01, "Intel Corporation", "INTEL" }, { 0x5C36B8, "TCL King Electrical Appliances (Huizhou) Co., Ltd", "TCL-KING-ELECTRICAL-APPLIANCES-HUIZHOU" }, { 0x009027, "Intel Corporation", "INTEL" }, { 0xA08869, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00C2C6, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB88A60, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00A0C9, "Intel Corporation", "INTEL" }, { 0x7C7A91, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC7BA1, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC7289, "Intel Corporate", "INTEL-CORPORATE" }, { 0x606C66, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4C8093, "Intel Corporate", "INTEL-CORPORATE" }, { 0xBC7737, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA088B4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00270E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001DE0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0024D6, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD8FC93, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE8B1FC, "Intel Corporate", "INTEL-CORPORATE" }, { 0x186472, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x00246C, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x64D954, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0x74C63B, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xCC1FC4, "InVue", "INVUE" }, { 0xA0D37A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x985FD3, "Microsoft Corporation", "MICROSOFT" }, { 0x00D0AC, "Commscope, Inc", "COMMSCOPE" }, { 0x0025D3, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x742F68, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xDC85DE, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xE0B9A5, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xE04136, "MitraStar Technology Corp.", "MITRASTAR" }, { 0xE0B2F1, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x0026FC, "AcSiP Technology Corp.", "ACSIP" }, { 0xB8616F, "Accton Technology Corp", "ACCTON" }, { 0x0010B5, "Accton Technology Corp", "ACCTON" }, { 0x00A02F, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x6487D7, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x00E098, "AboCom", "ABOCOM" }, { 0x0000B1, "Alpha Micro", "ALPHA-MICRO" }, { 0x001577, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 0xACE010, "Liteon Technology Corporation", "LITEON" }, { 0xEC086B, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x2421AB, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x6C23B9, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x58170C, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xB8F934, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x205476, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x303926, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x00EB2D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xB00594, "Liteon Technology Corporation", "LITEON" }, { 0x40F02F, "Liteon Technology Corporation", "LITEON" }, { 0xE8617E, "Liteon Technology Corporation", "LITEON" }, { 0x28E347, "Liteon Technology Corporation", "LITEON" }, { 0x18CF5E, "Liteon Technology Corporation", "LITEON" }, { 0xD0DF9A, "Liteon Technology Corporation", "LITEON" }, { 0x0013A9, "Sony Corporation", "SONY" }, { 0x00219E, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001E45, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001813, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x002163, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xE839DF, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x00138F, "Asiarock Technology Limited", "ASIAROCK" }, { 0x1C69A5, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x003067, "BIOSTAR Microtech Int'l Corp.", "BIOSTAR-MICROTECH" }, { 0x246511, "AVM GmbH", "AVM" }, { 0x002308, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x880355, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x5CDC96, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xD0D04B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001D00, "Brivo Systems, LLC", "BRIVO-LLC" }, { 0x0010E7, "Breezecom, Ltd.", "BREEZECOM" }, { 0x5C9656, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x7C4CA5, "BSkyB Ltd", "BSKYB" }, { 0x902106, "BSkyB Ltd", "BSKYB" }, { 0xA4C7DE, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x343759, "zte corporation", "ZTE" }, { 0x00402A, "Canoga Perkins Corporation", "CANOGA-PERKINS" }, { 0x382DE8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD087E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x205531, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5440AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x842E27, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50F0D3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84119E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08ECA9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x10D38A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x382DD1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE0CBEE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x64B853, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF4428F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x188331, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8455A5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA87C01, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC01173, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCE63F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB857D8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94B10A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE458B8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x088C2C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB86CE8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C65B0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC8A823, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC44202, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD059E4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x64B310, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x000B3B, "devolo AG", "DEVOLO" }, { 0x001D20, "Comtrend Corporation", "COMTREND" }, { 0x140C76, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x0024D4, "FREEBOX SAS", "FREEBOX-SAS" }, { 0xA089E4, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x001A9A, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0xAC3A7A, "Roku, Inc.", "ROKU" }, { 0xCC6DA0, "Roku, Inc.", "ROKU" }, { 0x000D4B, "Roku, Inc.", "ROKU" }, { 0x001999, "Fujitsu Technology Solutions GmbH", "FUJITSU-SOLUTIONS" }, { 0x0009E1, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0xC477AB, "Beijing ASU Tech Co.,Ltd", "BEIJING-ASU-TECH" }, { 0x182A7B, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0024F3, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xA45C27, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001DBC, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001F32, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xD8FB5E, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x544408, "Nokia Corporation", "NOKIA" }, { 0x0017B0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001BEE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x1886AC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021FE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002266, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xDCB3B4, "Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd.", "HONEYWELL-ENVIRONMENTAL-COMBUSTION-CONTROLS-TIANJIN" }, { 0xC8D10B, "Nokia Corporation", "NOKIA" }, { 0xC8979F, "Nokia Corporation", "NOKIA" }, { 0xF4F5A5, "Nokia Corporation", "NOKIA" }, { 0x3CC243, "Nokia Corporation", "NOKIA" }, { 0x0015A0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001A16, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0022FC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002548, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001DFD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001EA3, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D98, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00119F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x18A6F7, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x246968, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x8CA2FD, "Starry, Inc.", "STARRY" }, { 0xAC61EA, "Apple, Inc.", "APPLE" }, { 0x38B54D, "Apple, Inc.", "APPLE" }, { 0x90A62F, "NAVER", "NAVER" }, { 0xF4ED5F, "SHENZHEN KTC TECHNOLOGY GROUP ", "SHENZHEN-KTC-GROUP" }, { 0x9476B7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C1ABF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB47443, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x000BA2, "Sumitomo Electric Industries,Ltd", "SUMITOMO-ELECTRIC-INDUSTRIES" }, { 0x30CBF8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x40D357, "Ison Technology Co., Ltd.", "ISON" }, { 0xA4F1E8, "Apple, Inc.", "APPLE" }, { 0x00351A, "Cisco Systems, Inc", "CISCO" }, { 0x00A0B8, "NetApp", "NETAPP" }, { 0x9CD48B, "Innolux Technology Europe BV", "INNOLUX-EUROPE" }, { 0x545AA6, "Espressif Inc.", "ESPRESSIF" }, { 0xDCE838, "CK Telecom (Shenzhen) Limited", "CK-TELECOM-SHENZHEN" }, { 0x00CCFC, "Cisco Systems, Inc", "CISCO" }, { 0x2C9662, "Invenit BV", "INVENIT" }, { 0xDC2DCB, "Beijing Unis HengYue Technology Co., Ltd.", "BEIJING-UNIS-HENGYUE" }, { 0x3810D5, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x1C5F2B, "D-Link International", "D-LINK" }, { 0xD8803C, "Anhui Huami Information Technology Company Limited", "ANHUI-HUAMI-INFORMATION-COMPANY" }, { 0x703C03, "RadiAnt Co.,Ltd", "RADIANT" }, { 0x583277, "Reliance Communications LLC", "RELIANCE-COMMUNICATION-LLC" }, { 0xCCD3E2, "Jiangsu Yinhe Electronics Co.,Ltd.", "JIANGSU-YINHE-ELECTRONICS" }, { 0x182195, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA88195, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x88ADD2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x008E73, "Cisco Systems, Inc", "CISCO" }, { 0xB805AB, "zte corporation", "ZTE" }, { 0x9C52F8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x900325, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDC094C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDCEE06, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xAC44F2, "YAMAHA CORPORATION", "YAMAHA" }, { 0x508965, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x808C97, "Kaonmedia CO., LTD.", "KAONMEDIA" }, { 0x30B49E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x349971, "Quanta Storage Inc.", "QUANTA-STORAGE" }, { 0x24615A, "China Mobile Group Device Co.,Ltd.", "CHINA-MOBILE-GROUP-DEVICE" }, { 0xAC0D1B, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xA0043E, "Parker Hannifin Manufacturing Germany GmbH & Co. KG", "PARKER-HANNIFIN-MANUFACTURING-GERMANY" }, { 0x5CC7D7, "AZROAD TECHNOLOGY COMPANY LIMITED", "AZROAD-COMPANY" }, { 0x001706, "Techfaithwireless Communication Technology Limited.", "TECHFAITHWIRELESS-COMMUNICATION" }, { 0x30F6B9, "Ecocentric Energy", "ECOCENTRIC-ENERGY" }, { 0x004268, "Cisco Systems, Inc", "CISCO" }, { 0x00BD82, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x603ECA, "Cambridge Medical Robotics Ltd", "CAMBRIDGE-MEDICAL-ROBOTICS" }, { 0x54489C, "CDOUBLES ELECTRONICS CO. LTD.", "CDOUBLES-ELECTRONICS" }, { 0x54BEF7, "PEGATRON CORPORATION", "PEGATRON" }, { 0x0C54A5, "PEGATRON CORPORATION", "PEGATRON" }, { 0x202564, "PEGATRON CORPORATION", "PEGATRON" }, { 0x600292, "PEGATRON CORPORATION", "PEGATRON" }, { 0x84002D, "PEGATRON CORPORATION", "PEGATRON" }, { 0x8019FE, "JianLing Technology CO., LTD", "JIANLING" }, { 0x58605F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001188, "Enterasys", "ENTERASYS" }, { 0x1078D2, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x001E90, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x002465, "Elentec", "ELENTEC" }, { 0x001CD7, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x0016EC, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x000D87, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x000AE6, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x945089, "SimonsVoss Technologies GmbH", "SIMONSVOSS-TECHNOLOGIES" }, { 0x001F1F, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x0016FA, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x003A7D, "Cisco Systems, Inc", "CISCO" }, { 0x844076, "Drivenets", "DRIVENETS" }, { 0x0010E0, "Oracle Corporation ", "ORACLE" }, { 0x00144F, "Oracle Corporation ", "ORACLE" }, { 0xE80959, "Guoguang Electric Co.,Ltd", "GUOGUANG-ELECTRIC" }, { 0x0090AE, "ITALTEL S.p.A/RF-UP-I", "ITALTEL-S-P-A/RF-UP-I" }, { 0x001E33, "INVENTEC Corporation", "INVENTEC" }, { 0x001A29, "Johnson Outdoors Marine Electronics d/b/a Minnkota", "JOHNSON-OUTDOORS-MARINE-ELECTRONICS-D/B/A-MINNKOTA" }, { 0x001F09, "Jastec", "JASTEC" }, { 0xD0A4B1, "Sonifex Ltd.", "SONIFEX" }, { 0x001DB5, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x00239C, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x80711F, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x28C0DA, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xBCAD28, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0x28F366, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x8828B3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC4F081, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x801382, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x648788, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xA8D0E5, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0881F4, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x6C3B6B, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x7C738B, "Cocoon Alarm Ltd", "COCOON-ALARM" }, { 0x000FE2, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x002389, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x3822D6, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x80F62E, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x5866BA, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x0CDA41, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x586AB1, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x741F4A, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x3CCB7C, "TCT mobile ltd", "TCT-MOBILE" }, { 0xF03404, "TCT mobile ltd", "TCT-MOBILE" }, { 0xD8E56D, "TCT mobile ltd", "TCT-MOBILE" }, { 0x90C1C6, "Apple, Inc.", "APPLE" }, { 0x70A2B3, "Apple, Inc.", "APPLE" }, { 0x4C57CA, "Apple, Inc.", "APPLE" }, { 0x68FB7E, "Apple, Inc.", "APPLE" }, { 0x442C05, "AMPAK Technology, Inc.", "AMPAK" }, { 0x10BEF5, "D-Link International", "D-LINK" }, { 0x7C6AF3, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0xC41CFF, "Vizio, Inc", "VIZIO" }, { 0x444450, "OttoQ", "OTTOQ" }, { 0xFC55DC, "Baltic Latvian Universal Electronics LLC", "BALTIC-LATVIAN-UNIVERSAL-ELECTRONICS-LLC" }, { 0x941882, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x000EB6, "Riverbed Technology, Inc.", "RIVERBED" }, { 0xD0FCCC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x045604, "Gionee Communication Equipment Co.,Ltd.", "GIONEE-COMMUNICATION-EQUIPMENT" }, { 0x10BD55, "Q-Lab Corporation", "Q-LAB" }, { 0x8C6D50, "SHENZHEN MTC CO LTD", "SHENZHEN-MTC" }, { 0x3C6816, "VXi Corporation", "VXI" }, { 0xC0A1A2, "MarqMetrix", "MARQMETRIX" }, { 0x00F663, "Cisco Systems, Inc", "CISCO" }, { 0x341290, "Treeview Co.,Ltd.", "TREEVIEW" }, { 0xF40A4A, "INDUSNET Communication Technology Co.,LTD", "INDUSNET-COMMUNICATION" }, { 0xE8377A, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x04BF6D, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x00A0C5, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x107BEF, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xC0C976, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x14C913, "LG Electronics", "LG-ELECTRONICS" }, { 0x680715, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA09E1A, "Polar Electro Oy", "POLAR-ELECTRO-OY" }, { 0xD0B2C4, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xFC94E3, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xFC528D, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xD84A87, "OI ELECTRIC CO.,LTD", "OI-ELECTRIC" }, { 0xBC307D, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x5410EC, "Microchip Technology Inc.", "MICROCHIP" }, { 0x309BAD, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0x001BB1, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x000B6B, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0xAC9B0A, "Sony Corporation", "SONY" }, { 0x4813F3, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0x74B472, "CIESSE", "CIESSE" }, { 0x483C0C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C6641, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xC8755B, "Quantify Technology Pty. Ltd.", "QUANTIFY-PTY" }, { 0x1C57D8, "Kraftway Corporation PLC", "KRAFTWAY-PLC" }, { 0x002397, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0x00600F, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0x00E0DD, "Zenith Electronics Corporation", "ZENITH-ELECTRONICS" }, { 0x50CE75, "Measy Electronics Co., Ltd.", "MEASY-ELECTRONICS" }, { 0x047D7B, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x88124E, "Qualcomm Inc.", "QUALCOMM" }, { 0x649C81, "Qualcomm Inc.", "QUALCOMM" }, { 0x001B32, "QLogic Corporation", "QLOGIC" }, { 0x001E21, "Qisda Corporation", "QISDA" }, { 0x0017CA, "Qisda Corporation", "QISDA" }, { 0x0014D1, "TRENDnet, Inc.", "TRENDNET" }, { 0x001C7E, "Toshiba", "TOSHIBA" }, { 0x001C14, "VMware, Inc.", "VMWARE" }, { 0x90A210, "United Telecoms Ltd", "UNITED-TELECOMS" }, { 0xE02A82, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001641, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x4C334E, "HIGHTECH", "HIGHTECH" }, { 0x60E3AC, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x001315, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x001FA7, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0xA8E3EE, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x709E29, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0xFC0FE6, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x0050C2, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xCC79CF, "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "SHENZHEN-RF-LINK" }, { 0x141FBA, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x800A80, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xA44F29, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x5CF286, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x64FB81, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xE4956E, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xC88ED1, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x78C2C0, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x885D90, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x3C39E7, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xA0BB3E, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x6CB9C5, "Delta Networks, Inc.", "DELTA-NETWORKS" }, { 0x7CFC3C, "Visteon Corporation", "VISTEON" }, { 0x58BC8F, "Cognitive Systems Corp.", "COGNITIVE" }, { 0x54DC1D, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x3CBDD8, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x0C4885, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x88C9D0, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x700514, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xE892A4, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xA816B2, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xC4438F, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x2021A5, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x6CD68A, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x001E75, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0026E2, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x001FE3, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x2C54CF, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xF895C7, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x4888CA, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0x74B57E, "zte corporation", "ZTE" }, { 0x540955, "zte corporation", "ZTE" }, { 0x88A6C6, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x000F59, "Phonak AG", "PHONAK" }, { 0x000EF4, "Kasda Networks Inc", "KASDA-NETWORKS" }, { 0x000AEB, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x2C3731, "SHENZHEN YIFANG DIGITAL TECHNOLOGY CO.,LTD.", "SHENZHEN-YIFANG-DIGITAL" }, { 0x001FBA, "Boyoung Tech", "BOYOUNG-TECH" }, { 0xC4047B, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0xA42940, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x3C3300, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x20F41B, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x3092F6, "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD", "SHANGHAI-SUNMON-COMMUNICATION-TECHNOGY" }, { 0x7C2064, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0xE4A1E6, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x000B34, "ShangHai Broadband Technologies CO.LTD", "SHANGHAI-BROADBAND-TECHNOLOGIES" }, { 0x38256B, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x203AEF, "Sivantos GmbH", "SIVANTOS" }, { 0x001E40, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x80A1D7, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0xD8FB68, "Cloud Corner Ltd.", "CLOUD-CORNER" }, { 0xC09134, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x4CB21C, "Maxphotonics Co.,Ltd", "MAXPHOTONICS" }, { 0xD8C46A, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x849866, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002162, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000F06, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000342, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00159B, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00140E, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0016CA, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001969, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0019E1, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001A8F, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xE89309, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001988, "Wi2Wi, Inc", "WI2WI" }, { 0x4CFACA, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x2C9D1E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC88D83, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x080087, "Xyplex, Inc.", "XYPLEX" }, { 0x00B0B3, "XSTREAMIS PLC", "XSTREAMIS-PLC" }, { 0x14825B, "Hefei Radio Communication Technology Co., Ltd ", "HEFEI-RADIO-COMMUNICATION" }, { 0x00562B, "Cisco Systems, Inc", "CISCO" }, { 0x24F57E, "HWH CO., LTD.", "HWH" }, { 0x943DC9, "Asahi Net, Inc.", "ASAHI-NET" }, { 0x080028, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0012D2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD494A1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78C5E5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x847E40, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001832, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x90D7EB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xBC0DA5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7C8EE4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD8543A, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x884AEA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB09122, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x209148, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA0F6FD, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD4F513, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017EC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC83E99, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x8C8B83, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD0B5C2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x84EB18, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x6CECEB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x985DAD, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE8EB11, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD43639, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA043DB, "Sitael S.p.A.", "SITAEL-S-P-A" }, { 0xE4BEED, "Netcore Technology Inc.", "NETCORE" }, { 0x84EF18, "Intel Corporate", "INTEL-CORPORATE" }, { 0x84C1C1, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xA8A648, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x305890, "Frontier Silicon Ltd", "FRONTIER-SILICON" }, { 0x002261, "Frontier Silicon Ltd", "FRONTIER-SILICON" }, { 0x049F81, "NetScout Systems, Inc.", "NETSCOUT" }, { 0x00808C, "NetScout Systems, Inc.", "NETSCOUT" }, { 0xC4F5A5, "Kumalift Co., Ltd.", "KUMALIFT" }, { 0x98F058, "Lynxspring, Incl.", "LYNXSPRING-INCL" }, { 0x24E43F, "Wenzhou Kunmei Communication Technology Co.,Ltd.", "WENZHOU-KUNMEI-COMMUNICATION" }, { 0x240AC4, "Espressif Inc.", "ESPRESSIF" }, { 0xE4C1F1, "SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd ", "SHENZHEN-SPOTMAU-INFORMATION-TECHNOLIGY" }, { 0x240DC2, "TCT mobile ltd", "TCT-MOBILE" }, { 0x14DDE5, "MPMKVVCL", "MPMKVVCL" }, { 0x0016DB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5C3C27, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x10D542, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA0821F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC45006, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x88329B, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xBC8CCD, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x400E85, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xEC9BF3, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xF8042E, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x843838, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x54880E, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xBC79AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30D6C9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0DF3A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x805719, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78A873, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x041BBA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08FD0E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08D42B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00E3B2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC81479, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0728C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94350A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001FCD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0DFC7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C62B8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18E2C2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF04347, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9CB2B2, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x84BE52, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001A8A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002567, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA8F274, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB07870, "Wi-NEXT, Inc.", "WI-NEXT" }, { 0x001599, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0012FB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7CF854, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8CC8CD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE81132, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA02195, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x840B2D, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x000278, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xF07BCB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x4C0F6E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5C6D20, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90004E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC0F8DA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x485AB6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x083E8E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF4B7E2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x4437E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0016CF, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001C25, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC48E8F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x184F32, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x441CA8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA8474A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x08EDB9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7CE9D3, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE4D53D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC417FE, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x38B1DB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00234D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00234E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00265E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x541379, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x1008B1, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x701DC4, "NorthStar Battery Company, LLC", "NORTHSTAR-BATTERY-COMPANY-LLC" }, { 0x801844, "Dell Inc.", "DELL" }, { 0xC80E14, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0xE0686D, "Raybased AB", "RAYBASED-AB" }, { 0x98B039, "Nokia", "NOKIA" }, { 0x84262B, "Nokia", "NOKIA" }, { 0x94E98C, "Nokia", "NOKIA" }, { 0xE48184, "Nokia", "NOKIA" }, { 0xBC8D0E, "Nokia", "NOKIA" }, { 0xB0754D, "Nokia", "NOKIA" }, { 0xBC6B4D, "Nokia", "NOKIA" }, { 0xA47B2C, "Nokia", "NOKIA" }, { 0x00D0F6, "Nokia", "NOKIA" }, { 0x48F8E1, "Nokia", "NOKIA" }, { 0x002341, "Vanderbilt International (SWE) AB ", "VANDERBILT-SWE-AB" }, { 0x981333, "zte corporation", "ZTE" }, { 0x8C71F8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x04180F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9463D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0CDFA4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCC051B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x68EBAE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60D0A9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60A10A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA07591, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD814D6, "SURE SYSTEM Co Ltd", "SURE-SYSTEM" }, { 0x646184, "VELUX", "VELUX" }, { 0x001FCC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xEC01E2, "FOXCONN INTERCONNECT TECHNOLOGY", "FOXCONN-INTERCONNECT" }, { 0x00F22C, "Shanghai B-star Technology Co.,Ltd.", "SHANGHAI-B-STAR" }, { 0xD03DC3, "AQ Corporation", "AQ" }, { 0xFCCAC4, "LifeHealth, LLC", "LIFEHEALTH-LLC" }, { 0x04BA36, "Li Seng Technology Ltd", "LI-SENG" }, { 0x4409B8, "Salcomp (Shenzhen) CO., LTD.", "SALCOMP-SHENZHEN" }, { 0x78888A, "CDR Sp. z o.o. Sp. k.", "CDR-SP-Z-O-O-SP-K" }, { 0xF09838, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x18DED7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xEC107B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA01081, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001EAE, "Continental Automotive Systems Inc.", "CONTINENTAL-AUTOMOTIVE" }, { 0x9CF48E, "Apple, Inc.", "APPLE" }, { 0xFCD848, "Apple, Inc.", "APPLE" }, { 0x8048A5, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x645D92, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xD44165, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x643AB1, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xAC64DD, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x00010D, "Teledyne DALSA Inc.", "TELEDYNE-DALSA" }, { 0xF09FC2, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x0418D6, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x44D9E7, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x48DA96, "Eddy Smart Home Solutions Inc.", "EDDY-SMART-HOME-SOLUTIONS" }, { 0x503AA0, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0xC025E9, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x50B363, "Digitron da Amazonia S/A", "DIGITRON-DA-AMAZONIA-S/A" }, { 0x94B819, "Nokia", "NOKIA" }, { 0xDC0B34, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xA4D9A4, "neXus ID Solutions AB", "NEXUS-ID-SOLUTIONS-AB" }, { 0x484D7E, "Dell Inc.", "DELL" }, { 0xF4B549, "Xiamen Yeastar Information Technology Co., Ltd.", "XIAMEN-YEASTAR-INFORMATION" }, { 0x28EED3, "Shenzhen Super D Technology Co., Ltd", "SHENZHEN-SUPER-D" }, { 0x18F292, "Shannon Systems", "SHANNON" }, { 0x3C3F51, "2CRSI", "2CRSI" }, { 0xF4F524, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x50584F, "waytotec,Inc.", "WAYTOTEC" }, { 0x00A2EE, "Cisco Systems, Inc", "CISCO" }, { 0x98E476, "Zentan", "ZENTAN" }, { 0x18F76B, "Zhejiang Winsight Technology CO.,LTD", "ZHEJIANG-WINSIGHT" }, { 0x00609B, "AstroNova, Inc", "ASTRONOVA" }, { 0xB87CF2, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xC413E2, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xF09CE9, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xCCC5EF, "Co-Comm Servicios Telecomunicaciones S.L.", "-COMM-SERVICIOS-TELECOMUNICACIONES-S-L" }, { 0x5C6B4F, "Hello Inc.", "HELLO" }, { 0xC09C04, "Shaanxi GuoLian Digital TV Technology Co.,Ltd.", "SHAANXI-GUOLIAN-DIGITAL-TV" }, { 0xD0F73B, "Helmut Mauell GmbH Werk Weida", "HELMUT-MAUELL-WERK-WEIDA" }, { 0xD00AAB, "Yokogawa Digital Computer Corporation", "YOKOGAWA-DIGITAL" }, { 0xAC233F, "Shenzhen Minew Technologies Co., Ltd.", "SHENZHEN-MINEW-TECHNOLOGIES" }, { 0x000E58, "Sonos, Inc.", "SONOS" }, { 0x2C598A, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xE0508B, "Zhejiang Dahua Technology Co., Ltd.", "ZHEJIANG-DAHUA" }, { 0x2C6FC9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9C99A0, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x185936, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x98FAE3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x640980, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x8CBEBE, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xF8A45F, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x508A0F, "SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD.", "SHENZHEN-FISE-HOLDING" }, { 0xE4B005, "Beijing IQIYI Science & Technology Co., Ltd.", "BEIJING-IQIYI-SCIENCE" }, { 0xC83B45, "JRI", "JRI" }, { 0x1CEEC9, "Elo touch solutions", "ELO-TOUCH-SOLUTIONS" }, { 0x4CB81C, "SAM Electronics GmbH", "SAM-ELECTRONICS" }, { 0x2CDCAD, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x704D7B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x7CF95C, "U.I. Lapp GmbH", "U-I-LAPP" }, { 0x743A65, "NEC Corporation", "NEC" }, { 0xC80CC8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0425C5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA4EE57, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0x480033, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x14B31F, "Dell Inc.", "DELL" }, { 0xBC8385, "Microsoft Corporation", "MICROSOFT" }, { 0xA03D6F, "Cisco Systems, Inc", "CISCO" }, { 0x40605A, "Hawkeye Tech Co. Ltd", "HAWKEYE-TECH" }, { 0xC0210D, "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "SHENZHEN-RF-LINK" }, { 0x000678, "D&M Holdings Inc.", "D-M-HOLDINGS" }, { 0x886B44, "Sunnovo International Limited", "SUNNOVO" }, { 0xA408F5, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x54FA96, "Nokia", "NOKIA" }, { 0x1840A4, "Shenzhen Trylong Smart Science and Technology Co., Ltd.", "SHENZHEN-TRYLONG-SMART-SCIENCE-AND" }, { 0x9C50EE, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xF015B9, "PlayFusion Limited", "PLAYFUSION" }, { 0x70700D, "Apple, Inc.", "APPLE" }, { 0x24A7DC, "BSkyB Ltd", "BSKYB" }, { 0x2CD02D, "Cisco Systems, Inc", "CISCO" }, { 0x3478D7, "Gionee Communication Equipment Co.,Ltd.", "GIONEE-COMMUNICATION-EQUIPMENT" }, { 0x1CEFCE, "bebro electronic GmbH", "BEBRO" }, { 0xCCB8A8, "AMPAK Technology, Inc.", "AMPAK" }, { 0x5CFF35, "Wistron Corporation", "WISTRON" }, { 0x78F29E, "PEGATRON CORPORATION", "PEGATRON" }, { 0x00D0B2, "Xiotech Corporation", "XIOTECH" }, { 0x000AE4, "Wistron Corporation", "WISTRON" }, { 0x00262D, "Wistron Corporation", "WISTRON" }, { 0x908674, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xF49651, "NAKAYO Inc", "NAKAYO" }, { 0x681FD8, "Siemens Industry, Inc.", "SIEMENS-INDUSTRY" }, { 0xC43018, "MCS Logic Inc.", "MCS-LOGIC" }, { 0xFCB58A, "Wapice Ltd.", "WAPICE" }, { 0xDCEFCA, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xE865D4, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x285261, "Cisco Systems, Inc", "CISCO" }, { 0x286F7F, "Cisco Systems, Inc", "CISCO" }, { 0x089E08, "Google, Inc.", "GOOGLE" }, { 0x00014F, "Adtran Inc", "ADTRAN" }, { 0x045D4B, "Sony Corporation", "SONY" }, { 0xA80CCA, "Shenzhen Sundray Technologies Company Limited", "SHENZHEN-SUNDRAY-TECHNOLOGIES-COMPANY" }, { 0x94652D, "OnePlus Technology (Shenzhen) Co., Ltd", "ONEPLUS-SHENZHEN" }, { 0xF8A34F, "zte corporation", "ZTE" }, { 0x845A81, "ffly4u", "FFLY4U" }, { 0x347877, "O-Net Communications (Shenzhen) Limited", "O-NET-COMMUNICATION-SHENZHEN" }, { 0xF483E1, "Shanghai Clouder Semiconductor Co.,Ltd", "SHANGHAI-CLOUDER-SEMICONDUCTOR" }, { 0x8CC8F4, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x08CCA7, "Cisco Systems, Inc", "CISCO" }, { 0x7868F7, "YSTen Technology Co.,Ltd", "YSTEN" }, { 0x704F57, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x3407FB, "Ericsson AB", "ERICSSON-AB" }, { 0x6CB4A7, "Landauer, Inc.", "LANDAUER" }, { 0xF8A5C5, "Cisco Systems, Inc", "CISCO" }, { 0xA49B13, "Digital Check", "DIGITAL-CHECK" }, { 0x542F8A, "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO ", "TELLESCOM-INDUSTRIA-E-COMERCIO-EM-TELECOMUNICACAO" }, { 0xA0A33B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x6854C1, "ColorTokens, Inc.", "COLORTOKENS" }, { 0xDCC64B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x043389, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x887873, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6C750D, "WiFiSONG", "WIFISONG" }, { 0x346E9D, "Ericsson AB", "ERICSSON-AB" }, { 0x54E1AD, "LCFC(HeFei) Electronics Technology co., ltd", "LCFC-HEFEI-ELECTRONICS" }, { 0xE45D51, "SFR", "SFR" }, { 0xB816DB, "CHANT SINCERE CO.,LTD", "CHANT-SINCERE" }, { 0xD461FE, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x94F551, "Cadi Scientific Pte Ltd", "CADI-SCIENTIFIC-PTE" }, { 0xBC452E, "Knowledge Development for POF S.L.", "KNOWLEDGE-DEVELOPMENT-FOR-POF-S-L" }, { 0xE8D11B, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x44032C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x14987D, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xD4CF37, "Symbolic IO", "SYMBOLIC-IO" }, { 0x283F69, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xE048AF, "Premietech Limited", "PREMIETECH" }, { 0x2C3311, "Cisco Systems, Inc", "CISCO" }, { 0xF0A225, "Private", "PRIVATE" }, { 0xF0D2F1, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x8871E5, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x7C5049, "Apple, Inc.", "APPLE" }, { 0x503A7D, "AlphaTech PLC Int’l Co., Ltd.", "ALPHATECH-PLC-INT’L" }, { 0x9CFCD1, "Aetheris Technology (Shanghai) Co., Ltd.", "AETHERIS-SHANGHAI" }, { 0x949901, "Shenzhen YITOA Digital Appliance CO.,LTD", "SHENZHEN-YITOA-DIGITAL-APPLIANCE" }, { 0xE89E0C, "Private", "PRIVATE" }, { 0x10954B, "Megabyte Ltd.", "MEGABYTE" }, { 0xD8A105, "Syslane, Co., Ltd.", "SYSLANE" }, { 0xC4B9CD, "Cisco Systems, Inc", "CISCO" }, { 0x3C0518, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x900628, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC4700B, "GUANGZHOU CHIP TECHNOLOGIES CO.,LTD", "GUANGZHOU-CHIP-TECHNOLOGIES" }, { 0xD4AE05, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x98DDEA, "Infinix mobility limited", "INFINIX-MOBILITY" }, { 0x04946B, "TECNO MOBILE LIMITED", "TECNO-MOBILE" }, { 0xA04C5B, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x989E63, "Apple, Inc.", "APPLE" }, { 0xDCA904, "Apple, Inc.", "APPLE" }, { 0x48A195, "Apple, Inc.", "APPLE" }, { 0x6CAB31, "Apple, Inc.", "APPLE" }, { 0x503237, "Apple, Inc.", "APPLE" }, { 0xD4619D, "Apple, Inc.", "APPLE" }, { 0xB0481A, "Apple, Inc.", "APPLE" }, { 0x000889, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0x2C029F, "3ALogics", "3ALOGICS" }, { 0x58D9D5, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x60E78A, "UNISEM", "UNISEM" }, { 0x6C5976, "Shanghai Tricheer Technology Co.,Ltd.", "SHANGHAI-TRICHEER" }, { 0xF4A739, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x2CFAA2, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x00D095, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x4095BD, "NTmore.Co.,Ltd", "NTMORE" }, { 0x2CABEB, "Cisco Systems, Inc", "CISCO" }, { 0xBC66DE, "Shadow Creator Information Technology Co.,Ltd.", "SHADOW-CREATOR-INFORMATION" }, { 0xA0086F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC4FF1F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7C7B8B, "Control Concepts, Inc.", "CONTROL-CONCEPTS" }, { 0xC40BCB, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xD8C06A, "Hunantv.com Interactive Entertainment Media Co.,Ltd.", "HUNANTV-COM-INTERACTIVE-ENTERTAINMENT-MEDIA" }, { 0x9C32A9, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x601466, "zte corporation", "ZTE" }, { 0x30D386, "zte corporation", "ZTE" }, { 0x900E83, "Monico Monitoring, Inc.", "MONICO-MONITORING" }, { 0xBC3AEA, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x8C0EE3, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x6C5C14, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xE8BBA8, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xF894C2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7CB960, "Shanghai X-Cheng telecom LTD", "SHANGHAI-X-CHENG-TELECOM" }, { 0xA8D579, "Beijing Chushang Science and Technology Co.,Ltd", "BEIJING-CHUSHANG-SCIENCE-AND" }, { 0x28C63F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x600837, "ivvi Scientific(Nanchang)Co.Ltd", "IVVI-SCIENTIFIC-NANCHANG" }, { 0xD860B3, "Guangdong Global Electronic Technology CO.,LTD", "GUANGDONG-GLOBAL-," }, { 0x3C9509, "Liteon Technology Corporation", "LITEON" }, { 0x3CA308, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x44B412, "SIUS AG", "SIUS" }, { 0x60D7E3, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x00F82C, "Cisco Systems, Inc", "CISCO" }, { 0x00C1B1, "Cisco Systems, Inc", "CISCO" }, { 0xD0F88C, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0x2CB115, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x78ABBB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1816C9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFC8F90, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x244B03, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x988389, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x14BB6E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C3ADE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF83F51, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD8E0E1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50FF20, "Keenetic Limited", "KEENETIC" }, { 0xECF342, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xD4C1C8, "zte corporation", "ZTE" }, { 0xEC237B, "zte corporation", "ZTE" }, { 0x881544, "Cisco Meraki", "CISCO-MERAKI" }, { 0xF44156, "Arrikto Inc.", "ARRIKTO" }, { 0xD4258B, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB4F2E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD0E54D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7085C6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x44AAF5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00E18C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x005094, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xFC8E7E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5856E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCCA462, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x903EAB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x14CFE2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x900DCB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x207355, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xC83FB4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE0B70A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x78719C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD40598, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x946269, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x48D343, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE02202, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2C1DB8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE45740, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x94CCB9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x40B7F3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x20E564, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x90B134, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C438E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE86D52, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015D0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8C7F3B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD039B3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0000C5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C36E4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00ACE0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x384C90, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD40AA9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023A3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x64ED57, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023EE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002143, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023AF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001ADE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E46, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0018C0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A66, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00192C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00159A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00080E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0050E3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0025F1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF87B7A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x88D7F6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x145E45, "Kaleao Limited", "KALEAO" }, { 0x1C1FD4, "LifeBEAM Technologies LTD", "LIFEBEAM-TECHNOLOGIES" }, { 0x88BD78, "Flaircomm Microelectronics,Inc.", "FLAIRCOMM-MICROELECTRONICS" }, { 0x5092B9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB4BFF6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC8D7B0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60720B, "BLU Products Inc", "BLU-PRODUCTS" }, { 0xF4A997, "CANON INC.", "CANON" }, { 0x3C4CD0, "CERAGON NETWORKS", "CERAGON-NETWORKS" }, { 0xB04E26, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xFC06ED, "M2Motive Technology Inc.", "M2MOTIVE" }, { 0x54C9DF, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x30C3D9, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xFC4D8C, "SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD", "SHENZHEN-PANTE-ELECTRONICS" }, { 0xB01F29, "Helvetia INC.", "HELVETIA" }, { 0x8C147D, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x28070D, "GUANGZHOU WINSOUND INFORMATION TECHNOLOGY CO.,LTD.", "GUANGZHOU-WINSOUND-INFORMATION" }, { 0x7038EE, "Avaya Inc", "AVAYA" }, { 0x2CF4C5, "Avaya Inc", "AVAYA" }, { 0xC8F406, "Avaya Inc", "AVAYA" }, { 0x3CB15B, "Avaya Inc", "AVAYA" }, { 0xFCA841, "Avaya Inc", "AVAYA" }, { 0x50CD22, "Avaya Inc", "AVAYA" }, { 0x10CDAE, "Avaya Inc", "AVAYA" }, { 0xB0ADAA, "Avaya Inc", "AVAYA" }, { 0x00549F, "Avaya Inc", "AVAYA" }, { 0x6049C1, "Avaya Inc", "AVAYA" }, { 0xE0D848, "Dell Inc.", "DELL" }, { 0x145BE1, "nyantec UG (haftungsbeschränkt)", "NYANTEC-UG-HAFTUNGSBESCHRäNKT" }, { 0x00187D, "Armorlink Co .Ltd", "ARMORLINK" }, { 0xF42981, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x3CA348, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x28FAA0, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x3CB6B7, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xA40E2B, "Facebook Inc", "FACEBOOK" }, { 0x5419C8, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x1C4D70, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA0C5F2, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xF4B7B3, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xE43A6E, "Shenzhen Zeroone Technology CO.,LTD", "SHENZHEN-ZEROONE" }, { 0x60DA83, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x2C5731, "Wingtech Group (HongKong)Limited", "WINGTECH-GROUP-HONGKONG)" }, { 0xF46BEF, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x085114, "QINGDAO TOPSCOMM COMMUNICATION CO., LTD", "QINGDAO-TOPSCOMM-COMMUNICATION" }, { 0xD05A00, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x70F11C, "Shenzhen Ogemray Technology Co.,Ltd", "SHENZHEN-OGEMRAY" }, { 0x14144B, "Ruijie Networks Co.,LTD", "RUIJIE-NETWORKS" }, { 0x70DF2F, "Cisco Systems, Inc", "CISCO" }, { 0x001753, "nFore Technology Inc.", "NFORE" }, { 0x58C583, "ITEL MOBILE LIMITED", "ITEL-MOBILE" }, { 0x6447E0, "Feitian Technologies Co., Ltd", "FEITIAN-TECHNOLOGIES" }, { 0xF88A3C, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xE86D65, "AUDIO MOBIL Elektronik GmbH", "AUDIO-MOBIL-ELEKTRONIK" }, { 0xE86FF2, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x00016D, "CarrierComm Inc.", "CARRIERCOMM" }, { 0x70DEF9, "FAI WAH INTERNATIONAL (HONG KONG) LIMITED", "FAI-WAH-HONG-KONG" }, { 0x24C9A1, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xF0B052, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x84183A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x6CAAB3, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001F41, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC08ADE, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x50A733, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC4017C, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x245880, "VIZEO", "VIZEO" }, { 0x7CBACC, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x000726, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0xBC9680, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x1CA532, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x0000FE, "Annapolis Micro Systems, Inc.", "ANNAPOLIS-MICRO" }, { 0x188090, "Cisco Systems, Inc", "CISCO" }, { 0xBC024A, "HMD Global Oy", "HMD-GLOBAL-OY" }, { 0x90A365, "HMD Global Oy", "HMD-GLOBAL-OY" }, { 0xC444A0, "Cisco Systems, Inc", "CISCO" }, { 0xF83441, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5C0339, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x044F4C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x1C151F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x544E45, "Private", "PRIVATE" }, { 0xDCEB53, "Wuhan QianXiao Elecronic Technology CO.,LTD", "WUHAN-QIANXIAO-ELECRONIC" }, { 0x94E36D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x74819A, "PT. Hartono Istana Teknologi", "PT-HARTONO-ISTANA-TEKNOLOGI" }, { 0x0835B2, "CoreEdge Networks Co., Ltd", "COREEDGE-NETWORKS" }, { 0x6C38A1, "Ubee Interactive Co., Limited", "UBEE-INTERACTIVE" }, { 0xB40F3B, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x1062D0, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x7802B1, "Cisco Systems, Inc", "CISCO" }, { 0x94D9B3, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x309935, "zte corporation", "ZTE" }, { 0x409BCD, "D-Link International", "D-LINK" }, { 0x005C86, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x1CAB34, "New H3C Technologies Co., Ltd", "NEW-H3C-TECHNOLOGIES" }, { 0x5C0979, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x002EC7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x488EEF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2C3033, "NETGEAR", "NETGEAR" }, { 0x002438, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x001BED, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x0012F2, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x28C68E, "NETGEAR", "NETGEAR" }, { 0x04A151, "NETGEAR", "NETGEAR" }, { 0xA42B8C, "NETGEAR", "NETGEAR" }, { 0xA00460, "NETGEAR", "NETGEAR" }, { 0x9C3DCF, "NETGEAR", "NETGEAR" }, { 0x00146C, "NETGEAR", "NETGEAR" }, { 0x2CB05D, "NETGEAR", "NETGEAR" }, { 0x504A6E, "NETGEAR", "NETGEAR" }, { 0x2C4D79, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0x841766, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0xACFD93, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0xA45385, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0x741C27, "ITEL MOBILE LIMITED", "ITEL-MOBILE" }, { 0x111111, "Private", "PRIVATE" }, { 0xFCC233, "Private", "PRIVATE" }, { 0x2830AC, "Frontiir Co. Ltd.", "FRONTIIR" }, { 0x9050CA, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x0004BF, "VersaLogic Corp.", "VERSALOGIC" }, { 0x64B5C6, "Nintendo Co.,Ltd", "NINTENDO" }, { 0xD8B12A, "Panasonic Mobile Communications Co.,Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0xEC0441, "ShenZhen TIGO Semiconductor Co., Ltd.", "SHENZHEN-TIGO-SEMICONDUCTOR" }, { 0xBC88C3, "Ningbo Dooya Mechanic & Electronic Technology Co., Ltd", "NINGBO-DOOYA-MECHANIC" }, { 0xA41115, "Robert Bosch Engineering and Business Solutions pvt. Ltd.", "ROBERT-BOSCH-ENGINEERING-AND-BUSINESS-SOLUTIONS-PVT" }, { 0xA8BE27, "Apple, Inc.", "APPLE" }, { 0xB8634D, "Apple, Inc.", "APPLE" }, { 0x6C96CF, "Apple, Inc.", "APPLE" }, { 0x3035AD, "Apple, Inc.", "APPLE" }, { 0x2CD2E7, "Nokia Corporation", "NOKIA" }, { 0x681F40, "Blu Wireless Technology Ltd", "BLU-WIRELESS" }, { 0x48C58D, "Lear Corporation GmbH", "LEAR" }, { 0x90ADF7, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x982D68, "Samsung Electronics Co., Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5CEA1D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xECD09F, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x00152A, "Nokia Corporation", "NOKIA" }, { 0xA43412, "Thales Alenia Space", "THALES-ALENIA-SPACE" }, { 0x9C65EE, "DASAN Network Solutions", "DASAN-NETWORK-SOLUTIONS" }, { 0x0017C8, "KYOCERA Display Corporation", "KYOCERA-DISPLAY" }, { 0x002294, "KYOCERA CORPORATION ", "KYOCERA" }, { 0x80739F, "KYOCERA CORPORATION ", "KYOCERA" }, { 0x3889DC, "Opticon Sensors Europe B.V.", "OPTICON-SENSORS-EUROPE" }, { 0x38E2DD, "zte corporation", "ZTE" }, { 0x74E5F9, "Intel Corporate", "INTEL-CORPORATE" }, { 0x080070, "Mitsubishi Precision Co.,LTd.", "MITSUBISHI-PRECISION" }, { 0x3C11B2, "Fraunhofer FIT", "FRAUNHOFER-FIT" }, { 0xDCF090, "Nubia Technology Co.,Ltd.", "NUBIA" }, { 0xDC6AEA, "Infinix mobility limited", "INFINIX-MOBILITY" }, { 0x8CE38E, "Toshiba Memory Corporation", "TOSHIBA-MEMORY" }, { 0xD8A01D, "Espressif Inc.", "ESPRESSIF" }, { 0x0025DF, "Private", "PRIVATE" }, { 0x74EAC8, "New H3C Technologies Co., Ltd", "NEW-H3C-TECHNOLOGIES" }, { 0xA434F1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC4F312, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x44EAD8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA0D86F, "Private", "PRIVATE" }, { 0x3890A5, "Cisco Systems, Inc", "CISCO" }, { 0x8C5F48, "Continental Intelligent Transportation Systems LLC", "CONTINENTAL-INTELLIGENT-TRANSPORTATION-LLC" }, { 0x4C1365, "Emplus Technologies", "EMPLUS-TECHNOLOGIES" }, { 0x104400, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2054FA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x989C57, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE4A7C5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x88DA1A, "Redpine Signals, Inc.", "REDPINE-SIGNALS" }, { 0x14CF8D, "OHSUNG", "OHSUNG" }, { 0x8CE748, "Private", "PRIVATE" }, { 0x48D35D, "Private", "PRIVATE" }, { 0xF4F5DB, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x38A6CE, "BSkyB Ltd", "BSKYB" }, { 0x1077B0, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x1C398A, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xCC0677, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xC84029, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x28BF89, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xF4573E, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x88947E, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xB0E2E5, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xE446DA, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x500F80, "Cisco Systems, Inc", "CISCO" }, { 0xB430C0, "York Instruments Ltd", "YORK-INSTRUMENTS" }, { 0xF0AB54, "MITSUMI ELECTRIC CO.,LTD.", "MITSUMI-ELECTRIC" }, { 0xC449BB, "MITSUMI ELECTRIC CO.,LTD.", "MITSUMI-ELECTRIC" }, { 0x0C6F9C, "Shaw Communications Inc.", "SHAW-COMMUNICATION" }, { 0x1801E3, "Bittium Wireless Ltd", "BITTIUM-WIRELESS" }, { 0xC0AC54, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x40F201, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xC891F9, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x4CFF12, "Fuze Entertainment Co., ltd", "FUZE-ENTERTAINMENT" }, { 0x0059AC, "KPN. B.V.", "KPN" }, { 0xAC9A22, "NXP Semiconductors", "NXP-SEMICONDUCTORS" }, { 0x006037, "NXP Semiconductors", "NXP-SEMICONDUCTORS" }, { 0x546009, "Google, Inc.", "GOOGLE" }, { 0xA47733, "Google, Inc.", "GOOGLE" }, { 0x94EB2C, "Google, Inc.", "GOOGLE" }, { 0x28BC56, "EMAC, Inc.", "EMAC" }, { 0x287CDB, "Hefei Toycloud Technology Co.,ltd", "HEFEI-TOYCLOUD" }, { 0xD0B33F, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x00738D, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0xA8CA7B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xACCF85, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0CD746, "Apple, Inc.", "APPLE" }, { 0x440010, "Apple, Inc.", "APPLE" }, { 0x2435CC, "Zhongshan Scinan Internet of Things Co.,Ltd.", "ZHONGSHAN-SCINAN-INTERNET-OF-THINGS" }, { 0x2C27D7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000F3D, "D-Link Corporation", "D-LINK" }, { 0x001195, "D-Link Corporation", "D-LINK" }, { 0x0015E9, "D-Link Corporation", "D-LINK" }, { 0x0CFD37, "SUSE Linux GmbH", "SUSE-LINUX" }, { 0x2CFF65, "Oki Electric Industry Co., Ltd.", "OKI-ELECTRIC-INDUSTRY" }, { 0x001CF0, "D-Link Corporation", "D-LINK" }, { 0x00265A, "D-Link Corporation", "D-LINK" }, { 0xACF1DF, "D-Link International", "D-LINK" }, { 0xFC7516, "D-Link International", "D-LINK" }, { 0x7C18CD, "E-TRON Co.,Ltd.", "E-TRON" }, { 0x3897D6, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xC8478C, "Beken Corporation", "BEKEN" }, { 0xE498D6, "Apple, Inc.", "APPLE" }, { 0x606944, "Apple, Inc.", "APPLE" }, { 0x8896B6, "Global Fire Equipment S.A.", "GLOBAL-FIRE-EQUIPMENT" }, { 0x188796, "HTC Corporation", "HTC" }, { 0xAC2A0C, "CSR ZHUZHOU INSTITUTE CO.,LTD.", "CSR-ZHUZHOU-INSTITUTE" }, { 0xF4CA24, "FreeBit Co., Ltd.", "FREEBIT" }, { 0x000A57, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x643150, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x002376, "HTC Corporation", "HTC" }, { 0x0007E9, "Intel Corporation", "INTEL" }, { 0xB46D83, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE4FAFD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xDC5360, "Intel Corporate", "INTEL-CORPORATE" }, { 0x780CB8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x484520, "Intel Corporate", "INTEL-CORPORATE" }, { 0x004026, "BUFFALO.INC", "BUFFALO" }, { 0x0002A5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA02BB8, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x6CC217, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x3863BB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xCC3E5F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x7446A0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x443192, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xFC15B4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xEC9A74, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x80C16E, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD07E28, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x7403BD, "BUFFALO.INC", "BUFFALO" }, { 0x101F74, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001A4B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001F29, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x00215A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000F61, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001185, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001279, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001708, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2832C5, "HUMAX Co., Ltd.", "HUMAX" }, { 0xEC4D47, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x88CF98, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x6CE3B6, "Nera Telecommunications Ltd.", "NERA-TELECOMMUNICATIONS" }, { 0x942CB3, "HUMAX Co., Ltd.", "HUMAX" }, { 0x0452F3, "Apple, Inc.", "APPLE" }, { 0x241EEB, "Apple, Inc.", "APPLE" }, { 0xF431C3, "Apple, Inc.", "APPLE" }, { 0xC87B5B, "zte corporation", "ZTE" }, { 0x98F537, "zte corporation", "ZTE" }, { 0x001E73, "zte corporation", "ZTE" }, { 0x0019C6, "zte corporation", "ZTE" }, { 0x0015EB, "zte corporation", "ZTE" }, { 0xF0EBD0, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0xD8490B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x888603, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF8E811, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE09796, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xCCCC81, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x101B54, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7054F5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD07AB5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC40528, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3CDFBD, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x14B968, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x80717A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF49FF3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x784B87, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x28A183, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x5CF8A1, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x6021C0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x84DBAC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC07009, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE0191D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB8BC1B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x241FA0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x50A72B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC85195, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00F81C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF4559C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x283CE4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x64A5C3, "Apple, Inc.", "APPLE" }, { 0x001D0F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x5C63BF, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB0487A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x388345, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x14E6E4, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x647002, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x6466B3, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x6CE873, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x08E84F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04BD70, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x18C58A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04C06F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5C4CA9, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C5499, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00259E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001882, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00906F, "Cisco Systems, Inc", "CISCO" }, { 0x0090A6, "Cisco Systems, Inc", "CISCO" }, { 0x0090AB, "Cisco Systems, Inc", "CISCO" }, { 0x7426AC, "Cisco Systems, Inc", "CISCO" }, { 0xB000B4, "Cisco Systems, Inc", "CISCO" }, { 0x2834A2, "Cisco Systems, Inc", "CISCO" }, { 0x641225, "Cisco Systems, Inc", "CISCO" }, { 0x544A00, "Cisco Systems, Inc", "CISCO" }, { 0x5067AE, "Cisco Systems, Inc", "CISCO" }, { 0xBC16F5, "Cisco Systems, Inc", "CISCO" }, { 0x6899CD, "Cisco Systems, Inc", "CISCO" }, { 0xF44E05, "Cisco Systems, Inc", "CISCO" }, { 0x0CF5A4, "Cisco Systems, Inc", "CISCO" }, { 0x5CFC66, "Cisco Systems, Inc", "CISCO" }, { 0xD0A5A6, "Cisco Systems, Inc", "CISCO" }, { 0x3C5EC3, "Cisco Systems, Inc", "CISCO" }, { 0x64F69D, "Cisco Systems, Inc", "CISCO" }, { 0x74A2E6, "Cisco Systems, Inc", "CISCO" }, { 0x204C9E, "Cisco Systems, Inc", "CISCO" }, { 0x00112F, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0011D8, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001731, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0018F3, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x485B39, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xF46D04, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x3085A9, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x00900C, "Cisco Systems, Inc", "CISCO" }, { 0x001079, "Cisco Systems, Inc", "CISCO" }, { 0x00102F, "Cisco Systems, Inc", "CISCO" }, { 0x000E08, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00602F, "Cisco Systems, Inc", "CISCO" }, { 0x006070, "Cisco Systems, Inc", "CISCO" }, { 0x006083, "Cisco Systems, Inc", "CISCO" }, { 0x00067C, "Cisco Systems, Inc", "CISCO" }, { 0xC8D719, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0xCC08E0, "Apple, Inc.", "APPLE" }, { 0x5855CA, "Apple, Inc.", "APPLE" }, { 0x8C7B9D, "Apple, Inc.", "APPLE" }, { 0x88C663, "Apple, Inc.", "APPLE" }, { 0xC82A14, "Apple, Inc.", "APPLE" }, { 0x9803D8, "Apple, Inc.", "APPLE" }, { 0x8C5877, "Apple, Inc.", "APPLE" }, { 0x3451C9, "Apple, Inc.", "APPLE" }, { 0xE0B9BA, "Apple, Inc.", "APPLE" }, { 0xD023DB, "Apple, Inc.", "APPLE" }, { 0xB88D12, "Apple, Inc.", "APPLE" }, { 0xB817C2, "Apple, Inc.", "APPLE" }, { 0x68A86D, "Apple, Inc.", "APPLE" }, { 0x78A3E4, "Apple, Inc.", "APPLE" }, { 0x54781A, "Cisco Systems, Inc", "CISCO" }, { 0x58971E, "Cisco Systems, Inc", "CISCO" }, { 0xCCD539, "Cisco Systems, Inc", "CISCO" }, { 0x20BBC0, "Cisco Systems, Inc", "CISCO" }, { 0x4C4E35, "Cisco Systems, Inc", "CISCO" }, { 0x7CAD74, "Cisco Systems, Inc", "CISCO" }, { 0x10F311, "Cisco Systems, Inc", "CISCO" }, { 0x08CC68, "Cisco Systems, Inc", "CISCO" }, { 0xD0C789, "Cisco Systems, Inc", "CISCO" }, { 0xF84F57, "Cisco Systems, Inc", "CISCO" }, { 0x34DBFD, "Cisco Systems, Inc", "CISCO" }, { 0x5CA48A, "Cisco Systems, Inc", "CISCO" }, { 0xAC7A4D, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xFC62B9, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x0010A6, "Cisco Systems, Inc", "CISCO" }, { 0xE86549, "Cisco Systems, Inc", "CISCO" }, { 0x84B517, "Cisco Systems, Inc", "CISCO" }, { 0x046273, "Cisco Systems, Inc", "CISCO" }, { 0x9C57AD, "Cisco Systems, Inc", "CISCO" }, { 0x00223A, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x001839, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001EE5, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x38C85C, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xF45FD4, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x002306, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x001E3D, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x0019C1, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xBC926B, "Apple, Inc.", "APPLE" }, { 0x0050E4, "Apple, Inc.", "APPLE" }, { 0x003065, "Apple, Inc.", "APPLE" }, { 0x000A27, "Apple, Inc.", "APPLE" }, { 0x001451, "Apple, Inc.", "APPLE" }, { 0x0019E3, "Apple, Inc.", "APPLE" }, { 0x002312, "Apple, Inc.", "APPLE" }, { 0x002332, "Apple, Inc.", "APPLE" }, { 0x002436, "Apple, Inc.", "APPLE" }, { 0x00254B, "Apple, Inc.", "APPLE" }, { 0x0026BB, "Apple, Inc.", "APPLE" }, { 0xE80688, "Apple, Inc.", "APPLE" }, { 0x985AEB, "Apple, Inc.", "APPLE" }, { 0x2078F0, "Apple, Inc.", "APPLE" }, { 0x78D75F, "Apple, Inc.", "APPLE" }, { 0xE0ACCB, "Apple, Inc.", "APPLE" }, { 0x98E0D9, "Apple, Inc.", "APPLE" }, { 0xC0CECD, "Apple, Inc.", "APPLE" }, { 0x70E72C, "Apple, Inc.", "APPLE" }, { 0xD03311, "Apple, Inc.", "APPLE" }, { 0x847D50, "Holley Metering Limited", "HOLLEY-METERING" }, { 0x6C4A39, "BITA", "BITA" }, { 0xC8B5B7, "Apple, Inc.", "APPLE" }, { 0xA8BBCF, "Apple, Inc.", "APPLE" }, { 0x90B21F, "Apple, Inc.", "APPLE" }, { 0xB8E856, "Apple, Inc.", "APPLE" }, { 0x1499E2, "Apple, Inc.", "APPLE" }, { 0x04214C, "Insight Energy Ventures LLC", "INSIGHT-ENERGY-VENTURES-LLC" }, { 0xB418D1, "Apple, Inc.", "APPLE" }, { 0x80006E, "Apple, Inc.", "APPLE" }, { 0x60D9C7, "Apple, Inc.", "APPLE" }, { 0xC8F650, "Apple, Inc.", "APPLE" }, { 0x1C1AC0, "Apple, Inc.", "APPLE" }, { 0xE06678, "Apple, Inc.", "APPLE" }, { 0x5C8D4E, "Apple, Inc.", "APPLE" }, { 0x64A3CB, "Apple, Inc.", "APPLE" }, { 0x44FB42, "Apple, Inc.", "APPLE" }, { 0xF41BA1, "Apple, Inc.", "APPLE" }, { 0x3CE072, "Apple, Inc.", "APPLE" }, { 0xE88D28, "Apple, Inc.", "APPLE" }, { 0xCC785F, "Apple, Inc.", "APPLE" }, { 0xAC3C0B, "Apple, Inc.", "APPLE" }, { 0x88CB87, "Apple, Inc.", "APPLE" }, { 0xEC3586, "Apple, Inc.", "APPLE" }, { 0xF0C1F1, "Apple, Inc.", "APPLE" }, { 0xF4F951, "Apple, Inc.", "APPLE" }, { 0x18AF8F, "Apple, Inc.", "APPLE" }, { 0xC0F2FB, "Apple, Inc.", "APPLE" }, { 0x00F76F, "Apple, Inc.", "APPLE" }, { 0xAC87A3, "Apple, Inc.", "APPLE" }, { 0x48437C, "Apple, Inc.", "APPLE" }, { 0x34A395, "Apple, Inc.", "APPLE" }, { 0x9CF387, "Apple, Inc.", "APPLE" }, { 0xA85B78, "Apple, Inc.", "APPLE" }, { 0x908D6C, "Apple, Inc.", "APPLE" }, { 0x0C1539, "Apple, Inc.", "APPLE" }, { 0xBC4CC4, "Apple, Inc.", "APPLE" }, { 0x0CBC9F, "Apple, Inc.", "APPLE" }, { 0xA45E60, "Apple, Inc.", "APPLE" }, { 0x680927, "Apple, Inc.", "APPLE" }, { 0x60FACD, "Apple, Inc.", "APPLE" }, { 0x1CABA7, "Apple, Inc.", "APPLE" }, { 0x8CFABA, "Apple, Inc.", "APPLE" }, { 0x5C95AE, "Apple, Inc.", "APPLE" }, { 0xE0C97A, "Apple, Inc.", "APPLE" }, { 0xBC52B7, "Apple, Inc.", "APPLE" }, { 0x14109F, "Apple, Inc.", "APPLE" }, { 0x542696, "Apple, Inc.", "APPLE" }, { 0xD8D1CB, "Apple, Inc.", "APPLE" }, { 0x4C8ECC, "SILKAN SA", "SILKAN" }, { 0x98F428, "zte corporation", "ZTE" }, { 0x7C5A67, "JNC Systems, Inc.", "JNC" }, { 0xC4BBEA, "Pakedge Device and Software Inc", "PAKEDGE-DEVICE-AND-SOFTWARE" }, { 0x84100D, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xD88B4C, "KingTing Tech.", "KINGTING-TECH" }, { 0x6C9354, "Yaojin Technology (Shenzhen) Co., LTD.", "YAOJIN-SHENZHEN" }, { 0x4054E4, "Wearsafe Labs Inc", "WEARSAFE-LABS" }, { 0x8CE2DA, "Circle Media Inc", "CIRCLE-MEDIA" }, { 0x74D7CA, "Panasonic Corporation Automotive", "PANASONIC-AUTOMOTIVE" }, { 0x1CCDE5, "Shanghai Wind Technologies Co.,Ltd", "SHANGHAI-WIND-TECHNOLOGIES" }, { 0xD494E8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB078F0, "Beijing HuaqinWorld Technology Co.,Ltd.", "BEIJING-HUAQINWORLD" }, { 0x3029BE, "Shanghai MRDcom Co.,Ltd", "SHANGHAI-MRDCOM" }, { 0x7011AE, "Music Life LTD", "MUSIC-LIFE" }, { 0xECB870, "Beijing Heweinet Technology Co.,Ltd.", "BEIJING-HEWEINET" }, { 0x3095E3, "SHANGHAI SIMCOM LIMITED", "SHANGHAI-SIMCOM" }, { 0x4040A7, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x54BE53, "zte corporation", "ZTE" }, { 0xA01E0B, "MINIX Technology Limited", "MINIX" }, { 0xD48304, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x385F66, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x544E90, "Apple, Inc.", "APPLE" }, { 0x58FC73, "Arria Live Media, Inc.", "ARRIA-LIVE-MEDIA" }, { 0x2C1BC8, "Hunan Topview Network System CO.,LTD", "HUNAN-TOPVIEW-NETWORK-SYSTEM" }, { 0x5CADCF, "Apple, Inc.", "APPLE" }, { 0x006D52, "Apple, Inc.", "APPLE" }, { 0xD888CE, "RF Technology Pty Ltd", "RF-PTY" }, { 0xD4F4BE, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0xB88687, "Liteon Technology Corporation", "LITEON" }, { 0x68F956, "Objetivos y Servicio de Valor Añadido", "OBJETIVOS-Y-SERVICIO-DE-VALOR-AñADIDO" }, { 0xF4E926, "Tianjin Zanpu Technology Inc.", "TIANJIN-ZANPU" }, { 0x04C23E, "HTC Corporation", "HTC" }, { 0x2CFCE4, "CTEK Sweden AB", "CTEK-SWEDEN-AB" }, { 0xC0B713, "Beijing Xiaoyuer Technology Co. Ltd.", "BEIJING-XIAOYUER" }, { 0xDCA3AC, "RBcloudtech", "RBCLOUDTECH" }, { 0x44656A, "Mega Video Electronic(HK) Industry Co., Ltd", "MEGA-VIDEO-HK-INDUSTRY" }, { 0x0C9160, "Hui Zhou Gaoshengda Technology Co.,LTD", "HUI-ZHOU-GAOSHENGDA" }, { 0xECA9FA, "GUANGDONG GENIUS TECHNOLOGY CO.,LTD.", "GUANGDONG-GENIUS" }, { 0x300C23, "zte corporation", "ZTE" }, { 0x445F8C, "Intercel Group Limited", "INTERCEL-GROUP" }, { 0xA48D3B, "Vizio, Inc", "VIZIO" }, { 0x0C756C, "Anaren Microwave, Inc.", "ANAREN-MICROWAVE" }, { 0x5C5188, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x689AB7, "Atelier Vision Corporation", "ATELIER-VISION" }, { 0x640DE6, "Petra Systems", "PETRA" }, { 0x283713, "Shenzhen 3Nod Digital Technology Co., Ltd.", "SHENZHEN-3NOD-DIGITAL" }, { 0x7CAB25, "MESMO TECHNOLOGY INC.", "MESMO" }, { 0x74042B, "Lenovo Mobile Communication (Wuhan) Company Limited", "LENOVO-MOBILE-COMMUNICATION-WUHAN-COMPANY" }, { 0x4455B1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA45602, "fenglian Technology Co.,Ltd.", "FENGLIAN" }, { 0xD06A1F, "BSE CO.,LTD.", "BSE" }, { 0xA88038, "ShenZhen MovingComm Technology Co., Limited", "SHENZHEN-MOVINGCOMM" }, { 0x805067, "W & D TECHNOLOGY CORPORATION", "W-D" }, { 0x402814, "RFI Engineering", "RFI-ENGINEERING" }, { 0x102C83, "XIMEA", "XIMEA" }, { 0xD468BA, "Shenzhen Sundray Technologies Company Limited", "SHENZHEN-SUNDRAY-TECHNOLOGIES-COMPANY" }, { 0xA47B85, "ULTIMEDIA Co Ltd,", "ULTIMEDIA" }, { 0xCC37AB, "Edgecore Networks Corportation", "EDGECORE-NETWORKS-CORPORTATION" }, { 0xF80D60, "CANON INC.", "CANON" }, { 0xE02CB2, "Lenovo Mobile Communication (Wuhan) Company Limited", "LENOVO-MOBILE-COMMUNICATION-WUHAN-COMPANY" }, { 0xDC15DB, "Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd.", "GE-RUILI-INTELLIGENT-BEIJING" }, { 0x30F335, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE89120, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x546172, "ZODIAC AEROSPACE SAS", "ZODIAC-AEROSPACE-SAS" }, { 0x54CD10, "Panasonic Mobile Communications Co.,Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0xA4A1E4, "Innotube, Inc.", "INNOTUBE" }, { 0x706879, "Saijo Denki International Co., Ltd.", "SAIJO-DENKI" }, { 0x343D98, "JinQianMao Technology Co.,Ltd.", "JINQIANMAO" }, { 0x5804CB, "Tianjin Huisun Technology Co.,Ltd.", "TIANJIN-HUISUN" }, { 0x1CB72C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x40B837, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x287610, "IgniteNet", "IGNITENET" }, { 0x68A378, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x746A3A, "Aperi Corporation", "APERI" }, { 0x1844E6, "zte corporation", "ZTE" }, { 0xA8D409, "USA 111 Inc", "USA-111" }, { 0x3089D3, "HONGKONG UCLOUDLINK NETWORK TECHNOLOGY LIMITED", "HONGKONG-UCLOUDLINK-NETWORK" }, { 0x4CB76D, "Novi Security", "NOVI-SECURITY" }, { 0x906CAC, "Fortinet, Inc.", "FORTINET" }, { 0x00323A, "so-logic", "SO-LOGIC" }, { 0x64DB81, "Syszone Co., Ltd.", "SYSZONE" }, { 0xC4BAA3, "Beijing Winicssec Technologies Co., Ltd.", "BEIJING-WINICSSEC-TECHNOLOGIES" }, { 0x20635F, "Abeeway", "ABEEWAY" }, { 0xE00370, "ShenZhen Continental Wireless Technology Co., Ltd.", "SHENZHEN-CONTINENTAL-WIRELESS" }, { 0x709C8F, "Nero AG", "NERO" }, { 0x807459, "K's Co.,Ltd.", "K-S" }, { 0xCC9635, "LVS Co.,Ltd.", "LVS" }, { 0x700136, "FATEK Automation Corporation", "FATEK-AUTOMATION" }, { 0xE03560, "Challenger Supply Holdings, LLC", "CHALLENGER-SUPPLY-HOLDINGS-LLC" }, { 0x0CB5DE, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0xE4CE70, "Health & Life co., Ltd.", "HEALTH-LIFE" }, { 0xEC5A86, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0xF87AEF, "Rosonix Technology, Inc.", "ROSONIX" }, { 0xC43ABE, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x18B169, "Sonicwall", "SONICWALL" }, { 0x1CC72D, "Shenzhen Huapu Digital CO.,Ltd", "SHENZHEN-HUAPU-DIGITAL" }, { 0x38D82F, "zte corporation", "ZTE" }, { 0xC8D779, "Qingdao Haier Telecom Co.,Ltd", "QINGDAO-HAIER-TELECOM-," }, { 0x2CA2B4, "Fortify Technologies, LLC", "FORTIFY-TECHNOLOGIES-LLC" }, { 0xD87495, "zte corporation", "ZTE" }, { 0x8C873B, "Leica Camera AG", "LEICA-CAMERA" }, { 0x28E476, "Pi-Coral", "PI-CORAL" }, { 0x9C685B, "Octonion SA", "OCTONION" }, { 0xACABBF, "AthenTek Inc.", "ATHENTEK" }, { 0x5C41E7, "Wiatec International Ltd.", "WIATEC" }, { 0xDC0914, "Talk-A-Phone Co.", "TALK-A-PHONE" }, { 0x142971, "NEMOA ELECTRONICS (HK) CO. LTD", "NEMOA-ELECTRONICS-HK" }, { 0xB47356, "Hangzhou Treebear Networking Co., Ltd.", "HANGZHOU-TREEBEAR-NETWORKING" }, { 0xD88D5C, "Elentec", "ELENTEC" }, { 0x50ADD5, "Dynalec Corporation", "DYNALEC" }, { 0x28D98A, "Hangzhou Konke Technology Co.,Ltd.", "HANGZHOU-KONKE" }, { 0xBC4DFB, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x40EACE, "FOUNDER BROADBAND NETWORK SERVICE CO.,LTD", "FOUNDER-BROADBAND-NETWORK-SERVICE" }, { 0x10C67E, "SHENZHEN JUCHIN TECHNOLOGY CO., LTD", "SHENZHEN-JUCHIN" }, { 0x3C4937, "ASSMANN Electronic GmbH", "ASSMANN" }, { 0x904506, "Tokyo Boeki Medisys Inc.", "TOKYO-BOEKI-MEDISYS" }, { 0x80A85D, "Osterhout Design Group", "OSTERHOUT-DESIGN-GROUP" }, { 0x9C6C15, "Microsoft Corporation", "MICROSOFT" }, { 0xEC74BA, "Hirschmann Automation and Control GmbH", "HIRSCHMANN-AUTOMATION-AND-CONTROL" }, { 0x683C7D, "Magic Intelligence Technology Limited", "MAGIC-INTELLIGENCE" }, { 0x60128B, "CANON INC.", "CANON" }, { 0xECBAFE, "GIROPTIC", "GIROPTIC" }, { 0xE8447E, "Bitdefender SRL", "BITDEFENDER-SRL" }, { 0x84C3E8, "Vaillant GmbH", "VAILLANT" }, { 0xB88EC6, "Stateless Networks", "STATELESS-NETWORKS" }, { 0x146B72, "Shenzhen Fortune Ship Technology Co., Ltd.", "SHENZHEN-FORTUNE-SHIP" }, { 0x40A5EF, "Shenzhen Four Seas Global Link Network Technology Co., Ltd.", "SHENZHEN-FOUR-SEAS-GLOBAL-LINK-NETWORK" }, { 0x7C7A53, "Phytrex Technology Corp.", "PHYTREX" }, { 0x4886E8, "Microsoft Corporation", "MICROSOFT" }, { 0x88E161, "Art Beijing Science and Technology Development Co., Ltd.", "ART-BEIJING-SCIENCE-AND-DEVELOPMENT" }, { 0xB4A9FE, "GHIA Technology (Shenzhen) LTD", "GHIA-SHENZHEN" }, { 0x700FC7, "SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD.", "SHENZHEN-IKINLOOP" }, { 0xEC8009, "NovaSparks", "NOVASPARKS" }, { 0x64002D, "Powerlinq Co., LTD", "POWERLINQ" }, { 0x101218, "Korins Inc.", "KORINS" }, { 0xB04515, "mira fitness,LLC.", "MIRA-FITNESS-LLC" }, { 0x307512, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xA49D49, "Ketra, Inc.", "KETRA" }, { 0xC09879, "Acer Inc.", "ACER" }, { 0x1C9ECB, "Beijing Nari Smartchip Microelectronics Company Limited", "BEIJING-NARI-SMARTCHIP-MICROELECTRONICS-COMPANY" }, { 0xD48DD9, "Meld Technology, Inc", "MELD" }, { 0x2C3796, "CYBO CO.,LTD.", "CYBO" }, { 0x9470D2, "WINFIRM TECHNOLOGY", "WINFIRM" }, { 0x2C2997, "Microsoft Corporation", "MICROSOFT" }, { 0x4CE2F1, "sclak srl", "SCLAK-SRL" }, { 0x344DEA, "zte corporation", "ZTE" }, { 0x908C09, "Total Phase", "TOTAL-PHASE" }, { 0x1C7E51, "3bumen.com", "3BUMEN-COM" }, { 0x380E7B, "V.P.S. Thai Co., Ltd", "V-P-S-THAI" }, { 0x38F33F, "TATSUNO CORPORATION", "TATSUNO" }, { 0x28A5EE, "Shenzhen SDGI CATV Co., Ltd", "SHENZHEN-SDGI-CATV" }, { 0x94CE31, "CTS Limited", "CTS" }, { 0x4CBB58, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0xC40006, "Lipi Data Systems Ltd.", "LIPI-DATA" }, { 0x789CE7, "Shenzhen Aikede Technology Co., Ltd", "SHENZHEN-AIKEDE" }, { 0x5C2ED2, "ABC(XiSheng) Electronics Co.,Ltd", "ABC-XISHENG-ELECTRONICS" }, { 0xD8F710, "Libre Wireless Technologies Inc.", "LIBRE-WIRELESS-TECHNOLOGIES" }, { 0x68F728, "LCFC(HeFei) Electronics Technology co., ltd", "LCFC-HEFEI-ELECTRONICS" }, { 0xDCEC06, "Heimi Network Technology Co., Ltd.", "HEIMI-NETWORK" }, { 0x8870EF, "SC Professional Trading Co., Ltd.", "SC-PROFESSIONAL-TRADING" }, { 0x102F6B, "Microsoft Corporation", "MICROSOFT" }, { 0xACB74F, "METEL s.r.o.", "METEL-S-R-O" }, { 0xCCF538, "3isysnetworks", "3ISYSNETWORKS" }, { 0x04DEDB, "Rockport Networks Inc", "ROCKPORT-NETWORKS" }, { 0x68F06D, "ALONG INDUSTRIAL CO., LIMITED", "ALONG-INDUSTRIAL" }, { 0x54F876, "ABB AG", "ABB" }, { 0x84930C, "InCoax Networks Europe AB", "INCOAX-NETWORKS-EUROPE-AB" }, { 0xD47B35, "NEO Monitors AS", "NEO-MONITORS-AS" }, { 0xD8FB11, "AXACORE", "AXACORE" }, { 0xC8D019, "Shanghai Tigercel Communication Technology Co.,Ltd", "SHANGHAI-TIGERCEL-COMMUNICATION" }, { 0x18A958, "PROVISION THAI CO., LTD.", "PROVISION-THAI" }, { 0xD8DECE, "ISUNG CO.,LTD", "ISUNG" }, { 0x2053CA, "Risk Technology Ltd", "RISK" }, { 0x142BD6, "Guangdong Appscomm Co.,Ltd", "GUANGDONG-APPSCOMM" }, { 0xB025AA, "Private", "PRIVATE" }, { 0x408256, "Continental Automotive GmbH", "CONTINENTAL-AUTOMOTIVE" }, { 0xD866EE, "BOXIN COMMUNICATION CO.,LTD.", "BOXIN-COMMUNICATION" }, { 0x3C189F, "Nokia Corporation", "NOKIA" }, { 0x2829CC, "Corsa Technology Incorporated", "CORSA-INCORPORATED" }, { 0xFC790B, "Hitachi High Technologies America, Inc.", "HITACHI-HIGH-TECHNOLOGIES-AMERICA" }, { 0x28E6E9, "SIS Sat Internet Services GmbH", "SIS-SAT-INTERNET-SERVICES" }, { 0xBC4E5D, "ZhongMiao Technology Co., Ltd.", "ZHONGMIAO" }, { 0x08F728, "GLOBO Multimedia Sp. z o.o. Sp.k.", "GLOBO-MULTIMEDIA-SP-Z-O-O-SP-K" }, { 0x70720D, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x8401A7, "Greyware Automation Products, Inc", "GREYWARE-AUTOMATION-PRODUCTS" }, { 0xC4C9EC, "Gugaoo HK Limited", "GUGAOO-HK" }, { 0xF406A5, "Hangzhou Bianfeng Networking Technology Co., Ltd.", "HANGZHOU-BIANFENG-NETWORKING" }, { 0x4C3909, "HPL Electric & Power Private Limited", "HPL-ELECTRIC-POWER-PRIVATE" }, { 0x7CFE4E, "Shenzhen Safe vision Technology Co.,LTD", "SHENZHEN-SAFE-VISION" }, { 0x54EF92, "Shenzhen Elink Technology Co., LTD", "SHENZHEN-ELINK" }, { 0x800E24, "ForgetBox", "FORGETBOX" }, { 0xFCE186, "A3M Co., LTD", "A3M" }, { 0xCCB691, "NECMagnusCommunications", "NECMAGNUSCOMMUNICATIONS" }, { 0x40167E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xC89F1D, "SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD", "SHENZHEN-COMMUNICATION-TECHNOLOGIES" }, { 0x983713, "PT.Navicom Indonesia", "PT-NAVICOM-INDONESIA" }, { 0xACA919, "TrekStor GmbH", "TREKSTOR" }, { 0x84850A, "Hella Sonnen- und Wetterschutztechnik GmbH", "HELLA-SONNEN--UND-WETTERSCHUTZTECHNIK" }, { 0x183009, "Woojin Industrial Systems Co., Ltd.", "WOOJIN-INDUSTRIAL" }, { 0x6081F9, "Helium Systems, Inc", "HELIUM" }, { 0x34C5D0, "Hagleitner Hygiene International GmbH", "HAGLEITNER-HYGIENE" }, { 0x74DBD1, "Ebay Inc", "EBAY" }, { 0x3431C4, "AVM GmbH", "AVM" }, { 0xDC537C, "Compal Broadband Networks, Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0xA00627, "NEXPA System", "NEXPA-SYSTEM" }, { 0x303335, "Boosty", "BOOSTY" }, { 0x18D5B6, "SMG Holdings LLC", "SMG-HOLDINGS-LLC" }, { 0xC8FF77, "Dyson Limited", "DYSON" }, { 0xDCF110, "Nokia Corporation", "NOKIA" }, { 0x54DF00, "Ulterius Technologies, LLC", "ULTERIUS-TECHNOLOGIES-LLC" }, { 0xE01D38, "Beijing HuaqinWorld Technology Co.,Ltd", "BEIJING-HUAQINWORLD" }, { 0xD80CCF, "C.G.V. S.A.S.", "C-G-V-S" }, { 0x143DF2, "Beijing Shidai Hongyuan Network Communication Co.,Ltd", "BEIJING-SHIDAI-HONGYUAN-NETWORK-COMMUNICATION" }, { 0xB0D59D, "Shenzhen Zowee Technology Co., Ltd", "SHENZHEN-ZOWEE" }, { 0xC4913A, "Shenzhen Sanland Electronic Co., ltd.", "SHENZHEN-SANLAND" }, { 0xA46032, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x205A00, "Coval", "COVAL" }, { 0x0C2026, "noax Technologies AG", "NOAX-TECHNOLOGIES" }, { 0x880FB6, "Jabil Circuits India Pvt Ltd,-EHTP unit", "JABIL-CIRCUITS-INDIA-PVT--EHTP-UNIT" }, { 0xC4626B, "ZPT Vigantice", "ZPT-VIGANTICE" }, { 0x74F85D, "Berkeley Nucleonics Corp", "BERKELEY-NUCLEONICS" }, { 0x48EE07, "Silver Palm Technologies LLC", "SILVER-PALM-TECHNOLOGIES-LLC" }, { 0x9CFBF1, "MESOMATIC GmbH & Co.KG", "MESOMATIC" }, { 0x94C014, "Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek", "SORTER-SP-J-KONRAD-GRZESZCZYK-MICHAA-ZIOMEK" }, { 0x1027BE, "TVIP", "TVIP" }, { 0x2087AC, "AES motomation", "AES-MOTOMATION" }, { 0xA824EB, "ZAO NPO Introtest", "ZAO-NPO-INTROTEST" }, { 0x447E76, "Trek Technology (S) Pte Ltd", "TREK-S-PTE" }, { 0xE8FC60, "ELCOM Innovations Private Limited", "ELCOM-INNOVATIONS-PRIVATE" }, { 0x1CFCBB, "Realfiction ApS", "REALFICTION-APS" }, { 0xB0EC8F, "GMX SAS", "GMX-SAS" }, { 0xC40E45, "ACK Networks,Inc.", "ACK-NETWORKS" }, { 0x5C254C, "Avire Global Pte Ltd", "AVIRE-GLOBAL-PTE" }, { 0x7C1A03, "8Locations Co., Ltd.", "8LOCATIONS" }, { 0x481842, "Shanghai Winaas Co. Equipment Co. Ltd.", "SHANGHAI-WINAAS-EQUIPMENT" }, { 0xD09C30, "Foster Electric Company, Limited", "FOSTER-ELECTRIC-COMPANY" }, { 0x78FEE2, "Shanghai Diveo Technology Co., Ltd", "SHANGHAI-DIVEO" }, { 0x386C9B, "Ivy Biomedical", "IVY-BIOMEDICAL" }, { 0xE44C6C, "Shenzhen Guo Wei Electronic Co,. Ltd.", "SHENZHEN-GUO-WEI" }, { 0x008B43, "RFTECH", "RFTECH" }, { 0x2C957F, "zte corporation", "ZTE" }, { 0x242642, "SHARP Corporation.", "SHARP" }, { 0x282246, "Beijing Sinoix Communication Co., LTD", "BEIJING-SINOIX-COMMUNICATION" }, { 0xFC1607, "Taian Technology(Wuxi) Co.,Ltd.", "TAIAN-WUXI" }, { 0xCC89FD, "Nokia Corporation", "NOKIA" }, { 0xE86183, "Black Diamond Advanced Technology, LLC", "BLACK-DIAMOND-ADVANCED-LLC" }, { 0xC4824E, "Changzhou Uchip Electronics Co., LTD.", "CHANGZHOU-UCHIP-ELECTRONICS" }, { 0x24A87D, "Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd.", "PANASONIC-AUTOMOTIVE-ASIA-PACIFIC-THAILAND" }, { 0x78EC74, "Kyland-USA", "KYLAND-USA" }, { 0x28C825, "DellKing Industrial Co., Ltd", "DELLKING-INDUSTRIAL" }, { 0x64E892, "Morio Denki Co., Ltd.", "MORIO-DENKI" }, { 0x086DF2, "Shenzhen MIMOWAVE Technology Co.,Ltd", "SHENZHEN-MIMOWAVE" }, { 0x48D0CF, "Universal Electronics, Inc.", "UNIVERSAL-ELECTRONICS" }, { 0xDCC793, "Nokia Corporation", "NOKIA" }, { 0xE03F49, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xD8EE78, "Moog Protokraft", "MOOG-PROTOKRAFT" }, { 0xF4B6E5, "TerraSem Co.,Ltd", "TERRASEM" }, { 0x28BB59, "RNET Technologies, Inc.", "RNET-TECHNOLOGIES" }, { 0x7C8D91, "Shanghai Hongzhuo Information Technology co.,LTD", "SHANGHAI-HONGZHUO-INFORMATION" }, { 0xA881F1, "BMEYE B.V.", "BMEYE" }, { 0x241148, "Entropix, LLC", "ENTROPIX-LLC" }, { 0x30B5C2, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF85C45, "IC Nexus Co. Ltd.", "IC-NEXUS" }, { 0x04DB8A, "Suntech International Ltd.", "SUNTECH" }, { 0x083F76, "Intellian Technologies, Inc.", "INTELLIAN-TECHNOLOGIES" }, { 0xD0634D, "Meiko Maschinenbau GmbH & Co. KG", "MEIKO-MASCHINENBAU-AMP" }, { 0x889CA6, "BTB Korea INC", "BTB-KOREA" }, { 0xB0DA00, "CERA ELECTRONIQUE", "CERA-ELECTRONIQUE" }, { 0x447098, "MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED", "MING-HONG-SHEN-ZHEN" }, { 0x00EEBD, "HTC Corporation", "HTC" }, { 0x48B5A7, "Glory Horse Industries Ltd.", "GLORY-HORSE-INDUSTRIES" }, { 0xDC5E36, "Paterson Technology", "PATERSON" }, { 0x50E0C7, "TurControlSystme AG", "TURCONTROLSYSTME" }, { 0x9CD643, "D-Link International", "D-LINK" }, { 0x28FC51, "The Electric Controller and Manufacturing Co., LLC", "THE-ELECTRIC-CONTROLLER-AND-MANUFACTURING-LLC" }, { 0x34A5E1, "Sensorist ApS", "SENSORIST-APS" }, { 0xA4E9A3, "Honest Technology Co., Ltd", "HONEST" }, { 0xC4E92F, "AB Sciex", "AB-SCIEX" }, { 0x9C216A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF862AA, "xn systems", "XN" }, { 0xA4059E, "STA Infinity LLP", "STA-INFINITY-LLP" }, { 0x6C15F9, "Nautronix Limited", "NAUTRONIX" }, { 0x680AD7, "Yancheng Kecheng Optoelectronic Technology Co., Ltd", "YANCHENG-KECHENG-OPTOELECTRONIC" }, { 0xBC8893, "VILLBAU Ltd.", "VILLBAU" }, { 0x643F5F, "Exablaze", "EXABLAZE" }, { 0xE8F226, "MILLSON CUSTOM SOLUTIONS INC.", "MILLSON-CUSTOM-SOLUTIONS" }, { 0x7060DE, "LaVision GmbH", "LAVISION" }, { 0xFCFE77, "Hitachi Reftechno, Inc.", "HITACHI-REFTECHNO" }, { 0x70533F, "Alfa Instrumentos Eletronicos Ltda.", "ALFA-INSTRUMENTOS-ELETRONICOS-LTDA" }, { 0x448A5B, "Micro-Star INT'L CO., LTD.", "MICRO-STAR" }, { 0x68193F, "Digital Airways", "DIGITAL-AIRWAYS" }, { 0x5CD61F, "Qardio, Inc", "QARDIO" }, { 0x902083, "General Engine Management Systems Ltd.", "GENERAL-ENGINE-MANAGEMENT" }, { 0x14B126, "Industrial Software Co", "INDUSTRIAL-SOFTWARE" }, { 0xC03580, "A&R TECH", "A-R-TECH" }, { 0x1446E4, "AVISTEL", "AVISTEL" }, { 0x907990, "Benchmark Electronics Romania SRL", "BENCHMARK-ELECTRONICS-ROMANIA-SRL" }, { 0xC49380, "Speedytel technology", "SPEEDYTEL" }, { 0xB4A82B, "Histar Digital Electronics Co., Ltd.", "HISTAR-DIGITAL-ELECTRONICS" }, { 0x60A9B0, "Merchandising Technologies, Inc", "MERCHANDISING-TECHNOLOGIES" }, { 0x007DFA, "Volkswagen Group of America", "VOLKSWAGEN-GROUP-OF-AMERICA" }, { 0x6024C1, "Jiangsu Zhongxun Electronic Technology Co., Ltd", "JIANGSU-ZHONGXUN" }, { 0x6C5AB5, "TCL Technoly Electronics (Huizhou) Co., Ltd.", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0x88789C, "Game Technologies SA", "GAME-TECHNOLOGIES" }, { 0x18AA45, "Fon Technology", "FON" }, { 0x549359, "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "SHENZHEN-TWOWING-TECHNOLOGIES" }, { 0x284430, "GenesisTechnical Systems (UK) Ltd", "GENESISTECHNICAL-UK" }, { 0x9843DA, "INTERTECH", "INTERTECH" }, { 0xB07908, "Cummings Engineering", "CUMMINGS-ENGINEERING" }, { 0x04CB1D, "Traka plc", "TRAKA-PLC" }, { 0xB87AC9, "Siemens Ltd.", "SIEMENS" }, { 0xB0989F, "LG CNS", "LG-CNS" }, { 0x3C300C, "Dewar Electronics Pty Ltd", "DEWAR-ELECTRONICS-PTY" }, { 0x78B5D2, "Ever Treasure Industrial Limited", "EVER-TREASURE-INDUSTRIAL" }, { 0xA409CB, "Alfred Kaercher GmbH & Co KG", "ALFRED-KAERCHER-AMP" }, { 0xC445EC, "Shanghai Yali Electron Co.,LTD", "SHANGHAI-YALI-ELECTRON" }, { 0xE8611F, "Dawning Information Industry Co.,Ltd", "DAWNING-INFORMATION-INDUSTRY" }, { 0x0CA694, "Sunitec Enterprise Co.,Ltd", "SUNITEC" }, { 0x146080, "zte corporation", "ZTE" }, { 0x986CF5, "zte corporation", "ZTE" }, { 0x78491D, "The Will-Burt Company", "THE-WILL-BURT-COMPANY" }, { 0x74D435, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x840F45, "Shanghai GMT Digital Technologies Co., Ltd", "SHANGHAI-GMT-DIGITAL-TECHNOLOGIES" }, { 0xD8270C, "MaxTronic International Co., Ltd.", "MAXTRONIC" }, { 0xE80410, "Private", "PRIVATE" }, { 0x8C088B, "Remote Solution", "REMOTE-SOLUTION" }, { 0xA47760, "Nokia Corporation", "NOKIA" }, { 0x24A495, "Thales Canada Inc.", "THALES-CANADA" }, { 0x883612, "SRC Computers, LLC", "SRC-COMPUTERS-LLC" }, { 0xE0A198, "NOJA Power Switchgear Pty Ltd", "NOJA-POWER-SWITCHGEAR-PTY" }, { 0xCC7B35, "zte corporation", "ZTE" }, { 0x04D437, "ZNV", "ZNV" }, { 0xCCF407, "EUKREA ELECTROMATIQUE SARL", "EUKREA-ELECTROMATIQUE-SARL" }, { 0xBC2BD7, "Revogi Innovation Co., Ltd.", "REVOGI-INNOVATION" }, { 0x24ECD6, "CSG Science & Technology Co.,Ltd.Hefei", "CSG-SCIENCE-HEFEI" }, { 0x102279, "ZeroDesktop, Inc.", "ZERODESKTOP" }, { 0xCC4AE1, "fourtec -Fourier Technologies", "FOURTEC--FOURIER-TECHNOLOGIES" }, { 0xA4895B, "ARK INFOSOLUTIONS PVT LTD", "ARK-INFOSOLUTIONS-PVT" }, { 0x38EC11, "Novatek Microelectronics Corp.", "NOVATEK-MICROELECTRONICS" }, { 0xA8CCC5, "Saab AB (publ)", "SAAB-AB-PUBL" }, { 0x988E4A, "NOXUS(BEIJING) TECHNOLOGY CO.,LTD", "NOXUS-BEIJING" }, { 0x1C4158, "Gemalto M2M GmbH", "GEMALTO-M2M" }, { 0x541B5D, "Techno-Innov", "TECHNO-INNOV" }, { 0x78CB33, "DHC Software Co.,Ltd", "DHC-SOFTWARE" }, { 0x507691, "Tekpea, Inc.", "TEKPEA" }, { 0xA4C0C7, "ShenZhen Hitom Communication Technology Co..LTD", "SHENZHEN-HITOM-COMMUNICATION" }, { 0xEC2257, "JiangSu NanJing University Electronic Information Technology Co.,Ltd", "JIANGSU-NANJING-UNIVERSITY-INFORMATION" }, { 0x341A4C, "SHENZHEN WEIBU ELECTRONICS CO.,LTD.", "SHENZHEN-WEIBU-ELECTRONICS" }, { 0xA09BBD, "Total Aviation Solutions Pty Ltd", "TOTAL-AVIATION-SOLUTIONS-PTY" }, { 0xE8481F, "Advanced Automotive Antennas", "ADVANCED-AUTOMOTIVE-ANTENNAS" }, { 0x18D6CF, "Kurth Electronic GmbH", "KURTH" }, { 0xE07F88, "EVIDENCE Network SIA", "EVIDENCE-NETWORK-SIA" }, { 0x1C7CC7, "Coriant GmbH", "CORIANT" }, { 0x542CEA, "PROTECTRON", "PROTECTRON" }, { 0x00C5DB, "Datatech Sistemas Digitales Avanzados SL", "DATATECH-SISTEMAS-DIGITALES-AVANZADOS-SL" }, { 0x109AB9, "Tosibox Oy", "TOSIBOX-OY" }, { 0xF842FB, "Yasuda Joho Co.,ltd.", "YASUDA-JOHO" }, { 0x887398, "K2E Tekpoint", "K2E-TEKPOINT" }, { 0x68EE96, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xFC6018, "Zhejiang Kangtai Electric Co., Ltd.", "ZHEJIANG-KANGTAI-ELECTRIC" }, { 0x303EAD, "Sonavox Canada Inc", "SONAVOX-CANADA" }, { 0x444A65, "Silverflare Ltd.", "SILVERFLARE" }, { 0x50A0BF, "Alba Fiber Systems Inc.", "ALBA-FIBER" }, { 0x3C977E, "IPS Technology Limited", "IPS" }, { 0xF02405, "OPUS High Technology Corporation", "OPUS-HIGH" }, { 0xD8B04C, "Jinan USR IOT Technology Co., Ltd.", "JINAN-USR-IOT" }, { 0x646EEA, "Iskratel d.o.o.", "ISKRATEL-D-O-O" }, { 0x043D98, "ChongQing QingJia Electronics CO.,LTD", "CHONGQING-QINGJIA-ELECTRONICS" }, { 0xE8BB3D, "Sino Prime-Tech Limited", "SINO-PRIME-TECH" }, { 0x98CDB4, "Virident Systems, Inc.", "VIRIDENT" }, { 0x54E3B0, "JVL Industri Elektronik", "JVL-INDUSTRI-ELEKTRONIK" }, { 0x640B4A, "Digital Telecom Technology Limited", "DIGITAL-TELECOM" }, { 0xF42012, "Cuciniale GmbH", "CUCINIALE" }, { 0x4C21D0, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x18104E, "CEDINT-UPM", "CEDINT-UPM" }, { 0x2C7B84, "OOO Petr Telegin", "OOO-PETR-TELEGIN" }, { 0x540536, "Vivago Oy", "VIVAGO-OY" }, { 0xE0FAEC, "Platan sp. z o.o. sp. k.", "PLATAN-SP-Z-O-O-SP-K" }, { 0xF08EDB, "VeloCloud Networks", "VELOCLOUD-NETWORKS" }, { 0xB8DC87, "IAI Corporation", "IAI" }, { 0x7C6FF8, "ShenZhen ACTO Digital Video Technology Co.,Ltd.", "SHENZHEN-ACTO-DIGITAL-VIDEO" }, { 0x8C4B59, "3D Imaging & Simulations Corp", "3D-IMAGING-SIMULATIONS" }, { 0xA4FB8D, "Hangzhou Dunchong Technology Co.Ltd", "HANGZHOU-DUNCHONG" }, { 0x0075E1, "Ampt, LLC", "AMPT-LLC" }, { 0xCC04B4, "Select Comfort", "SELECT-COMFORT" }, { 0x284FCE, "Liaoning Wontel Science and Technology Development Co.,Ltd.", "LIAONING-WONTEL-SCIENCE-AND-DEVELOPMENT" }, { 0x0CC81F, "Summer Infant, Inc.", "SUMMER-INFANT" }, { 0xD86960, "Steinsvik", "STEINSVIK" }, { 0x442AFF, "E3 Technology, Inc.", "E3" }, { 0x0C9301, "PT. Prasimax Inovasi Teknologi", "PT-PRASIMAX-INOVASI-TEKNOLOGI" }, { 0x60699B, "isepos GmbH", "ISEPOS" }, { 0xB830A8, "Road-Track Telematics Development", "ROAD-TRACK-TELEMATICS-DEVELOPMENT" }, { 0x542160, "Resolution Products", "RESOLUTION-PRODUCTS" }, { 0x88462A, "Telechips Inc.", "TELECHIPS" }, { 0xA897DC, "IBM", "IBM" }, { 0xE8DE27, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xFC229C, "Han Kyung I Net Co.,Ltd.", "HAN-KYUNG-I-NET" }, { 0x148692, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x1832A2, "LAON TECHNOLOGY CO., LTD.", "LAON" }, { 0x985C93, "SBG Systems SAS", "SBG-SAS" }, { 0x64E599, "EFM Networks", "EFM-NETWORKS" }, { 0xF499AC, "WEBER Schraubautomaten GmbH", "WEBER-SCHRAUBAUTOMATEN" }, { 0x8CC7D0, "zhejiang ebang communication co.,ltd", "ZHEJIANG-EBANG-COMMUNICATION" }, { 0x70820E, "as electronics GmbH", "AS-ELECTRONICS" }, { 0xDC2BCA, "Zera GmbH", "ZERA" }, { 0x508D6F, "CHAHOO Limited", "CHAHOO" }, { 0x68831A, "Pandora Mobility Corporation", "PANDORA-MOBILITY" }, { 0xD4223F, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x0868D0, "Japan System Design", "JAPAN-SYSTEM-DESIGN" }, { 0x103DEA, "HFC Technology (Beijing) Ltd. Co.", "HFC-BEIJING" }, { 0x2C7B5A, "Milper Ltd", "MILPER" }, { 0x185AE8, "Zenotech.Co.,Ltd", "ZENOTECH" }, { 0xE0AEED, "LOENK", "LOENK" }, { 0xD4EE07, "HIWIFI Co., Ltd.", "HIWIFI" }, { 0x908260, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0xFCAD0F, "QTS NETWORKS", "QTS-NETWORKS" }, { 0x984C04, "Zhangzhou Keneng Electrical Equipment Co Ltd", "ZHANGZHOU-KENENG-ELECTRICAL-EQUIPMENT" }, { 0xCC047C, "G-WAY Microwave", "G-WAY-MICROWAVE" }, { 0x44F849, "Union Pacific Railroad", "UNION-PACIFIC-RAILROAD" }, { 0x1CFA68, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD0BE2C, "CNSLink Co., Ltd.", "CNSLINK" }, { 0x281878, "Microsoft Corporation", "MICROSOFT" }, { 0xE457A8, "Stuart Manufacturing, Inc.", "STUART-MANUFACTURING" }, { 0x2481AA, "KSH International Co., Ltd.", "KSH" }, { 0x789966, "Musilab Electronics (DongGuan)Co.,Ltd.", "MUSILAB-ELECTRONICS-DONGGUAN" }, { 0xEC2C49, "University of Tokyo", "UNIVERSITY-OF-TOKYO" }, { 0xCC5D57, "Information System Research Institute,Inc.", "INFORMATION-SYSTEM-RESEARCH-INSTITUTE" }, { 0x1C37BF, "Cloudium Systems Ltd.", "CLOUDIUM" }, { 0x249504, "SFR", "SFR" }, { 0x308999, "Guangdong East Power Co.,", "GUANGDONG-EAST-POWER" }, { 0xD4A499, "InView Technology Corporation", "INVIEW" }, { 0xAC4122, "Eclipse Electronic Systems Inc.", "ECLIPSE" }, { 0xA073FC, "Rancore Technologies Private Limited", "RANCORE-TECHNOLOGIES-PRIVATE" }, { 0x846223, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0xA4E991, "SISTEMAS AUDIOVISUALES ITELSIS S.L.", "SISTEMAS-AUDIOVISUALES-ITELSIS-S-L" }, { 0x84F493, "OMS spol. s.r.o.", "OMS-SPOL-S-R-O" }, { 0x386793, "Asia Optical Co., Inc.", "ASIA-OPTICAL" }, { 0xBCD177, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xC8B373, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x983071, "DAIKYUNG VASCOM", "DAIKYUNG-VASCOM" }, { 0x0C0400, "Jantar d.o.o.", "JANTAR-D-O-O" }, { 0xC04301, "Epec Oy", "EPEC-OY" }, { 0x687CD5, "Y Soft Corporation, a.s.", "Y-SOFT-A-S" }, { 0xE07C62, "Whistle Labs, Inc.", "WHISTLE-LABS" }, { 0xFC4499, "Swarco LEA d.o.o.", "SWARCO-LEA-D-O-O" }, { 0x0C8484, "Zenovia Electronics Inc.", "ZENOVIA-ELECTRONICS" }, { 0x5CF370, "CC&C Technologies, Inc", "CC-C-TECHNOLOGIES" }, { 0xA01C05, "NIMAX TELECOM CO.,LTD.", "NIMAX-TELECOM" }, { 0xF80DEA, "ZyCast Technology Inc.", "ZYCAST" }, { 0x1800DB, "Fitbit Inc.", "FITBIT" }, { 0x50A715, "Aboundi, Inc.", "ABOUNDI" }, { 0xFC35E6, "Visteon corp", "VISTEON" }, { 0xD866C6, "Shenzhen Daystar Technology Co.,ltd", "SHENZHEN-DAYSTAR" }, { 0x1836FC, "Elecsys International Corporation", "ELECSYS" }, { 0xF48139, "CANON INC.", "CANON" }, { 0xD40BB9, "Solid Semecs bv.", "SOLID-SEMECS" }, { 0x748E08, "Bestek Corp.", "BESTEK" }, { 0xB8C855, "Shanghai GBCOM Communication Technology Co.,Ltd.", "SHANGHAI-GBCOM-COMMUNICATION" }, { 0xC47DFE, "A.N. Solutions GmbH", "A-N-SOLUTIONS" }, { 0xE031D0, "SZ Telstar CO., LTD", "SZ-TELSTAR" }, { 0x70C6AC, "Bosch Automotive Aftermarket", "BOSCH-AUTOMOTIVE-AFTERMARKET" }, { 0x2C69BA, "RF Controls, LLC", "RF-CONTROLS-LLC" }, { 0xDC5726, "Power-One", "POWER-ONE" }, { 0x2C245F, "Babolat VS", "BABOLAT-VS" }, { 0xD464F7, "CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD", "CHENGDU-USEE-DIGITAL" }, { 0xA47ACF, "VIBICOM COMMUNICATIONS INC.", "VIBICOM-COMMUNICATION" }, { 0xCC3C3F, "SA.S.S. Datentechnik AG", "S-S-DATENTECHNIK" }, { 0x905692, "Autotalks Ltd.", "AUTOTALKS" }, { 0x0C2AE7, "Beijing General Research Institute of Mining and Metallurgy", "BEIJING-GENERAL-RESEARCH-INSTITUTE-OF-MINING-AND-METALLURGY" }, { 0xDCD52A, "Sunny Heart Limited", "SUNNY-HEART" }, { 0xC4C755, "Beijing HuaqinWorld Technology Co.,Ltd", "BEIJING-HUAQINWORLD" }, { 0x9C79AC, "Suntec Software(Shanghai) Co., Ltd.", "SUNTEC-SOFTWARE-SHANGHAI" }, { 0xF8DFA8, "zte corporation", "ZTE" }, { 0xACA430, "Peerless AV", "PEERLESS-AV" }, { 0xB4AB2C, "MtM Technology Corporation", "MTM" }, { 0x74372F, "Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd", "TONGFANG-SHENZHEN-CLOUDCOMPUTING" }, { 0xBC51FE, "Swann communications Pty Ltd", "SWANN-COMMUNICATION-PTY" }, { 0xD40FB2, "Applied Micro Electronics AME bv", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x74FE48, "ADVANTECH CO., LTD.", "ADVANTECH" }, { 0xD0B498, "Robert Bosch LLC Automotive Electronics", "ROBERT-BOSCH-LLC-AUTOMOTIVE-ELECTRONICS" }, { 0x80B95C, "ELFTECH Co., Ltd.", "ELFTECH" }, { 0xE85AA7, "LLC Emzior", "LLC-EMZIOR" }, { 0x242FFA, "Toshiba Global Commerce Solutions", "TOSHIBA-GLOBAL-COMMERCE-SOLUTIONS" }, { 0xA0BAB8, "Pixon Imaging", "PIXON-IMAGING" }, { 0x9CE1D6, "Junger Audio-Studiotechnik GmbH", "JUNGER-AUDIO-STUDIOTECHNIK" }, { 0xE4E409, "LEIFHEIT AG", "LEIFHEIT" }, { 0x004D32, "Andon Health Co.,Ltd.", "ANDON-HEALTH" }, { 0xC46DF1, "DataGravity", "DATAGRAVITY" }, { 0x28D244, "LCFC(HeFei) Electronics Technology Co., Ltd.", "LCFC-HEFEI-ELECTRONICS" }, { 0xACE87E, "Bytemark Computer Consulting Ltd", "BYTEMARK-CONSULTING" }, { 0x60CDC5, "Taiwan Carol Electronics., Ltd", "TAIWAN-CAROL-ELECTRONICS" }, { 0x60C5A8, "Beijing LT Honway Technology Co.,Ltd", "BEIJING-LT-HONWAY" }, { 0xB4DF3B, "Chromlech", "CHROMLECH" }, { 0xA46E79, "DFT System Co.Ltd", "DFT-SYSTEM" }, { 0x94DE80, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xC88A83, "Dongguan HuaHong Electronics Co.,Ltd", "DONGGUAN-HUAHONG-ELECTRONICS" }, { 0x0CC655, "Wuxi YSTen Technology Co.,Ltd.", "WUXI-YSTEN" }, { 0xD410CF, "Huanshun Network Science and Technology Co., Ltd.", "HUANSHUN-NETWORK-SCIENCE-AND" }, { 0xB80415, "Bayan Audio", "BAYAN-AUDIO" }, { 0x84C8B1, "Incognito Software Systems Inc.", "INCOGNITO-SOFTWARE" }, { 0x645A04, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0x5C89D4, "Beijing Banner Electric Co.,Ltd", "BEIJING-BANNER-ELECTRIC" }, { 0x984CD3, "Mantis Deposition", "MANTIS-DEPOSITION" }, { 0x8C4CDC, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0xD063B4, "SolidRun Ltd.", "SOLIDRUN" }, { 0x2C3BFD, "Netstor Technology Co., Ltd.", "NETSTOR" }, { 0xF073AE, "PEAK-System Technik", "PEAK-SYSTEM-TECHNIK" }, { 0x684CA8, "Shenzhen Herotel Tech. Co., Ltd.", "SHENZHEN-HEROTEL-TECH" }, { 0xF4472A, "Nanjing Rousing Sci. and Tech. Industrial Co., Ltd", "NANJING-ROUSING-SCI-AND-TECH-INDUSTRIAL" }, { 0x185253, "Pixord Corporation", "PIXORD" }, { 0xFCA9B0, "MIARTECH (SHANGHAI),INC.", "MIARTECH-SHANGHAI" }, { 0x80D733, "QSR Automations, Inc.", "QSR-AUTOMATIONS" }, { 0x8C3330, "EmFirst Co., Ltd.", "EMFIRST" }, { 0x08E5DA, "NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD. ", "NANJING-FUJITSU-PRODUCTS" }, { 0x5884E4, "IP500 Alliance e.V.", "IP500-ALLIANCE-E-V" }, { 0x04E9E5, "PJRC.COM, LLC", "PJRC-COM-LLC" }, { 0x703811, "Invensys Rail", "INVENSYS-RAIL" }, { 0xACE64B, "Shenzhen Baojia Battery Technology Co., Ltd.", "SHENZHEN-BAOJIA-BATTERY" }, { 0x303294, "W-IE-NE-R Plein & Baus GmbH", "W-IE-NE-R-PLEIN-BAUS" }, { 0xEC473C, "Redwire, LLC", "REDWIRE-LLC" }, { 0x5481AD, "Eagle Research Corporation", "EAGLE-RESEARCH" }, { 0x7C822D, "Nortec", "NORTEC" }, { 0x745FAE, "TSL PPL", "TSL-PPL" }, { 0x8462A6, "EuroCB (Phils), Inc.", "EUROCB-PHILS" }, { 0x80FA5B, "CLEVO CO.", "CLEVO" }, { 0xE4F365, "Time-O-Matic, Inc.", "TIME-O-MATIC" }, { 0x18550F, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x1C9179, "Integrated System Technologies Ltd", "INTEGRATED-SYSTEM-TECHNOLOGIES" }, { 0x38F597, "home2net GmbH", "HOME2NET" }, { 0x386645, "OOSIC Technology CO.,Ltd", "OOSIC" }, { 0xD0DFB2, "Genie Networks Limited", "GENIE-NETWORKS" }, { 0x808B5C, "Shenzhen Runhuicheng Technology Co., Ltd", "SHENZHEN-RUNHUICHENG" }, { 0x04586F, "Sichuan Whayer information industry Co.,LTD", "SICHUAN-WHAYER-INFORMATION-INDUSTRY" }, { 0x449B78, "The Now Factory", "THE-NOW-FACTORY" }, { 0xD052A8, "Physical Graph Corporation", "PHYSICAL-GRAPH" }, { 0x34F62D, "SHARP Corporation", "SHARP" }, { 0xC4EBE3, "RRCN SAS", "RRCN-SAS" }, { 0x4C1A95, "Novakon Co., Ltd.", "NOVAKON" }, { 0xC04A00, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x9C3178, "Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd", "FOSHAN-HUADIAN-INTELLIGENT-COMMUNICATION-TEACHNOLOGIES" }, { 0x48BE2D, "Symanitron", "SYMANITRON" }, { 0xB86091, "Onnet Technologies and Innovations LLC", "ONNET-TECHNOLOGIES-AND-INNOVATIONS-LLC" }, { 0x201A06, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xD4CA6E, "u-blox AG", "U-BLOX" }, { 0xC011A6, "Fort-Telecom ltd.", "FORT-TELECOM" }, { 0xB8DAF1, "Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH", "STRAHLENSCHUTZ--ENTWICKLUNGS--UND-AUSRUESTUNGSGESELLSCHAFT-MBH" }, { 0x1C11E1, "Wartsila Finland Oy", "WARTSILA-FINLAND-OY" }, { 0x50465D, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x74BFA1, "HYUNTECK", "HYUNTECK" }, { 0xF8AA8A, "Axview Technology (Shenzhen) Co.,Ltd", "AXVIEW-SHENZHEN" }, { 0x5894CF, "Vertex Standard LMR, Inc.", "VERTEX-STANDARD-LMR" }, { 0x2C5AA3, "PROMATE ELECTRONIC CO.LTD", "PROMATE" }, { 0xB4009C, "CableWorld Ltd.", "CABLEWORLD" }, { 0x803FD6, "bytes at work AG", "BYTES-AT-WORK" }, { 0x645FFF, "Nicolet Neuro", "NICOLET-NEURO" }, { 0x2829D9, "GlobalBeiMing technology (Beijing)Co. Ltd", "GLOBALBEIMING-BEIJING" }, { 0x189A67, "CSE-Servelec Limited", "CSE-SERVELEC" }, { 0x38A5B6, "SHENZHEN MEGMEET ELECTRICAL CO.,LTD", "SHENZHEN-MEGMEET-ELECTRICAL" }, { 0xE43FA2, "Wuxi DSP Technologies Inc.", "WUXI-DSP-TECHNOLOGIES" }, { 0x00FD4C, "NEVATEC", "NEVATEC" }, { 0x6045BD, "Microsoft", "MICROSOFT" }, { 0x9C54CA, "Zhengzhou VCOM Science and Technology Co.,Ltd", "ZHENGZHOU-VCOM-SCIENCE-AND" }, { 0x388AB7, "ITC Networks", "ITC-NETWORKS" }, { 0xBCC23A, "Thomson Video Networks", "THOMSON-VIDEO-NETWORKS" }, { 0x00BF15, "Genetec Inc.", "GENETEC" }, { 0x20F85E, "Delta Electronics", "DELTA-ELECTRONICS" }, { 0x68CE4E, "L-3 Communications Infrared Products", "L-3-COMMUNICATION-INFRARED-PRODUCTS" }, { 0x68B6FC, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x7C160D, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0xA4D18F, "Shenzhen Skyee Optical Fiber Communication Technology Ltd. ", "SHENZHEN-SKYEE-OPTICAL-FIBER-COMMUNICATION" }, { 0x0C565C, "HyBroad Vision (Hong Kong) Technology Co Ltd", "HYBROAD-VISION-HONG-KONG" }, { 0x649FF7, "Kone OYj", "KONE-OYJ" }, { 0x4C068A, "Basler Electric Company", "BASLER-ELECTRIC-COMPANY" }, { 0xE0A30F, "Pevco", "PEVCO" }, { 0x5C1737, "I-View Now, LLC.", "I-VIEW-NOW-LLC" }, { 0x049C62, "BMT Medical Technology s.r.o.", "BMT-MEDICAL-S-R-O" }, { 0xC4BA99, "I+ME Actia Informatik und Mikro-Elektronik GmbH", "I+ME-ACTIA-INFORMATIK-UND-MIKRO-ELEKTRONIK" }, { 0x0C2A69, "electric imp, incorporated", "ELECTRIC-IMP-INCORPORATED" }, { 0xBC811F, "Ingate Systems", "INGATE" }, { 0x34E0CF, "zte corporation", "ZTE" }, { 0x6C40C6, "Nimbus Data Systems, Inc.", "NIMBUS-DATA" }, { 0x503F56, "Syncmold Enterprise Corp", "SYNCMOLD" }, { 0xD04CC1, "SINTRONES Technology Corp.", "SINTRONES" }, { 0xDC9FA4, "Nokia Corporation", "NOKIA" }, { 0x44C39B, "OOO RUBEZH NPO", "OOO-RUBEZH-NPO" }, { 0x58C232, "NEC Corporation", "NEC" }, { 0xD8C691, "Hichan Technology Corp.", "HICHAN" }, { 0x7C02BC, "Hansung Electronics Co. LTD", "HANSUNG-ELECTRONICS" }, { 0x1848D8, "Fastback Networks", "FASTBACK-NETWORKS" }, { 0x702393, "fos4X GmbH", "FOS4X" }, { 0x58ECE1, "Newport Corporation", "NEWPORT" }, { 0x14358B, "Mediabridge Products, LLC.", "MEDIABRIDGE-PRODUCTS-LLC" }, { 0x34996F, "VPI Engineering", "VPI-ENGINEERING" }, { 0x241064, "Shenzhen Ecsino Tecnical Co. Ltd", "SHENZHEN-ECSINO-TECNICAL" }, { 0x10D1DC, "INSTAR Deutschland GmbH", "INSTAR-DEUTSCHLAND" }, { 0xD8160A, "Nippon Electro-Sensory Devices", "NIPPON-ELECTRO-SENSORY-DEVICES" }, { 0xF45433, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0xEC9327, "MEMMERT GmbH + Co. KG", "MEMMERT-+" }, { 0x1C43EC, "JAPAN CIRCUIT CO.,LTD", "JAPAN-CIRCUIT" }, { 0xBC28D6, "Rowley Associates Limited", "ROWLEY-ASSOCIATES" }, { 0xF05F5A, "Getriebebau NORD GmbH and Co. KG", "GETRIEBEBAU-NORD-AND" }, { 0x009569, "LSD Science and Technology Co.,Ltd.", "LSD-SCIENCE-AND" }, { 0x34C803, "Nokia Corporation", "NOKIA" }, { 0x5011EB, "SilverNet Ltd", "SILVERNET" }, { 0x5CD41B, "UCZOON Technology Co., LTD", "UCZOON" }, { 0x783CE3, "Kai-EE", "KAI-EE" }, { 0x0868EA, "EITO ELECTRONICS CO., LTD.", "EITO-ELECTRONICS" }, { 0x5C4A26, "Enguity Technology Corp", "ENGUITY" }, { 0x289EDF, "Danfoss Turbocor Compressors, Inc", "DANFOSS-TURBOCOR-COMPRESSORS" }, { 0x50053D, "CyWee Group Ltd", "CYWEE-GROUP" }, { 0x4C64D9, "Guangdong Leawin Group Co., Ltd", "GUANGDONG-LEAWIN-GROUP" }, { 0x7CB03E, "OSRAM GmbH", "OSRAM" }, { 0x14B1C8, "InfiniWing, Inc.", "INFINIWING" }, { 0xC0493D, "MAITRISE TECHNOLOGIQUE", "MAITRISE-TECHNOLOGIQUE" }, { 0x34A7BA, "Fischer International Systems Corporation", "FISCHER" }, { 0xACD364, "ABB SPA, ABB SACE DIV.", "ABB-SPA-ABB-SACE-DIV" }, { 0x38F8B7, "V2COM PARTICIPACOES S.A.", "V2COM-PARTICIPACOES" }, { 0xB48255, "Research Products Corporation", "RESEARCH-PRODUCTS" }, { 0x2C750F, "Shanghai Dongzhou-Lawton Communication Technology Co. Ltd.", "SHANGHAI-DONGZHOU-LAWTON-COMMUNICATION" }, { 0xB40418, "Smartchip Integrated Inc.", "SMARTCHIP-INTEGRATED" }, { 0xF4EA67, "Cisco Systems, Inc", "CISCO" }, { 0xD0AEEC, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x3C98BF, "Quest Controls, Inc.", "QUEST-CONTROLS" }, { 0xD05785, "Pantech Co., Ltd.", "PANTECH" }, { 0x045C06, "Zmodo Technology Corporation", "ZMODO" }, { 0x504A5E, "Masimo Corporation", "MASIMO" }, { 0x38BF33, "NEC CASIO Mobile Communications", "NEC-CASIO-MOBILE-COMMUNICATION" }, { 0xA041A7, "NL Ministry of Defense", "NL-MINISTRY-OF-DEFENSE" }, { 0x342F6E, "Anywire corporation", "ANYWIRE" }, { 0xE86D6E, "voestalpine SIGNALING Fareham Ltd.", "VOESTALPINE-SIGNALING-FAREHAM" }, { 0xF8D462, "Pumatronix Equipamentos Eletronicos Ltda.", "PUMATRONIX-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0x5453ED, "Sony Corporation", "SONY" }, { 0x940070, "Nokia Corporation", "NOKIA" }, { 0x6C3A84, "Shenzhen Aero-Startech. Co.Ltd", "SHENZHEN-AERO-STARTECH" }, { 0x442B03, "Cisco Systems, Inc", "CISCO" }, { 0x781C5A, "SHARP Corporation", "SHARP" }, { 0xE4C6E6, "Mophie, LLC", "MOPHIE-LLC" }, { 0x502D1D, "Nokia Corporation", "NOKIA" }, { 0xBCEA2B, "CityCom GmbH", "CITYCOM" }, { 0x944444, "LG Innotek", "LG-INNOTEK" }, { 0xE4C806, "Ceiec Electric Technology Inc.", "CEIEC-ELECTRIC" }, { 0x18B591, "I-Storm", "I-STORM" }, { 0xA45630, "Cisco Systems, Inc", "CISCO" }, { 0x002AAF, "LARsys-Automation GmbH", "LARSYS-AUTOMATION" }, { 0x60F3DA, "Logic Way GmbH", "LOGIC-WAY" }, { 0xA06D09, "Intelcan Technosystems Inc.", "INTELCAN-TECHNOSYSTEMS" }, { 0xBC1401, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x68D925, "ProSys Development Services", "PROSYS-DEVELOPMENT-SERVICES" }, { 0xB41DEF, "Internet Laboratories, Inc.", "INTERNET-LABORATORIES" }, { 0x284121, "OptiSense Network, LLC", "OPTISENSE-NETWORK-LLC" }, { 0x5057A8, "Cisco Systems, Inc", "CISCO" }, { 0x38458C, "MyCloud Technology corporation", "MYCLOUD" }, { 0x0C9D56, "Consort Controls Ltd", "CONSORT-CONTROLS" }, { 0x3CCE73, "Cisco Systems, Inc", "CISCO" }, { 0xA47C14, "ChargeStorm AB", "CHARGESTORM-AB" }, { 0xF4600D, "Panoptic Technology, Inc", "PANOPTIC" }, { 0xACCF23, "Hi-flying electronics technology Co.,Ltd", "HI-FLYING-ELECTRONICS" }, { 0xC08170, "Effigis GeoSolutions", "EFFIGIS-GEOSOLUTIONS" }, { 0x78C4AB, "Shenzhen Runsil Technology Co.,Ltd", "SHENZHEN-RUNSIL" }, { 0x709A0B, "Italian Institute of Technology", "ITALIAN-INSTITUTE-OF" }, { 0x240917, "Devlin Electronics Limited", "DEVLIN-ELECTRONICS" }, { 0xDC37D2, "Hunan HKT Electronic Technology Co., Ltd", "HUNAN-HKT" }, { 0x5076A6, "Ecil Informatica Ind. Com. Ltda", "ECIL-INFORMATICA-IND-COM-LTDA" }, { 0xB431B8, "Aviwest", "AVIWEST" }, { 0x241125, "Hutek Co., Ltd.", "HUTEK" }, { 0x0036FE, "SuperVision", "SUPERVISION" }, { 0xCC187B, "Manzanita Systems, Inc.", "MANZANITA" }, { 0x38B12D, "Sonotronic Nagel GmbH", "SONOTRONIC-NAGEL" }, { 0x8020AF, "Trade FIDES, a.s.", "TRADE-FIDES-A-S" }, { 0x50D274, "Steffes Corporation", "STEFFES" }, { 0x48D54C, "Jeda Networks", "JEDA-NETWORKS" }, { 0x3497FB, "ADVANCED RF TECHNOLOGIES INC", "ADVANCED-RF-TECHNOLOGIES" }, { 0xC46413, "Cisco Systems, Inc", "CISCO" }, { 0x143AEA, "Dynapower Company LLC", "DYNAPOWER-COMPANY-LLC" }, { 0x9CA134, "Nike, Inc.", "NIKE" }, { 0xB4D8A9, "BetterBots", "BETTERBOTS" }, { 0x7CC8D7, "Damalisk", "DAMALISK" }, { 0x0091FA, "Synapse Product Development", "SYNAPSE-PRODUCT-DEVELOPMENT" }, { 0xA05AA4, "Grand Products Nevada, Inc.", "GRAND-PRODUCTS-NEVADA" }, { 0x24C0B3, "RSF", "RSF" }, { 0xE00B28, "Inovonics", "INOVONICS" }, { 0x500B32, "Foxda Technology Industrial(ShenZhen)Co.,LTD", "FOXDA-INDUSTRIAL-SHENZHEN" }, { 0x302DE8, "JDA, LLC (JDA Systems)", "JDA-LLC-JDA" }, { 0x70CA9B, "Cisco Systems, Inc", "CISCO" }, { 0x2C3F38, "Cisco Systems, Inc", "CISCO" }, { 0x803F5D, "Winstars Technology Ltd", "WINSTARS" }, { 0x780738, "Z.U.K. Elzab S.A.", "Z-U-K-ELZAB" }, { 0x640E36, "TAZTAG", "TAZTAG" }, { 0x70EE50, "Netatmo", "NETATMO" }, { 0xEC63E5, "ePBoard Design LLC", "EPBOARD-DESIGN-LLC" }, { 0x60B606, "Phorus", "PHORUS" }, { 0xF4E6D7, "Solar Power Technologies, Inc.", "SOLAR-POWER-TECHNOLOGIES" }, { 0x78DDD6, "c-scape", "C-SCAPE" }, { 0x984A47, "CHG Hospital Beds", "CHG-HOSPITAL-BEDS" }, { 0x3C6A7D, "Niigata Power Systems Co., Ltd.", "NIIGATA-POWER" }, { 0xFC455F, "JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD", "JIANGXI-SHANSHUI-OPTOELECTRONIC" }, { 0x3C7059, "MakerBot Industries", "MAKERBOT-INDUSTRIES" }, { 0xF8FE5C, "Reciprocal Labs Corp", "RECIPROCAL-LABS" }, { 0x6C9CED, "Cisco Systems, Inc", "CISCO" }, { 0x94E0D0, "HealthStream Taiwan Inc.", "HEALTHSTREAM-TAIWAN" }, { 0xDCF858, "Lorent Networks, Inc.", "LORENT-NETWORKS" }, { 0xA05E6B, "MELPER Co., Ltd.", "MELPER" }, { 0x30B3A2, "Shenzhen Heguang Measurement & Control Technology Co.,Ltd", "SHENZHEN-HEGUANG-MEASUREMENT-CONTROL" }, { 0xF0007F, "Janz - Contadores de Energia, SA", "JANZ---CONTADORES-DE-ENERGIA" }, { 0xCC944A, "Pfeiffer Vacuum GmbH", "PFEIFFER-VACUUM" }, { 0x0C8525, "Cisco Systems, Inc", "CISCO" }, { 0xBCE59F, "WATERWORLD Technology Co.,LTD", "WATERWORLD" }, { 0x1C5C55, "PRIMA Cinema, Inc", "PRIMA-CINEMA" }, { 0x082522, "ADVANSEE", "ADVANSEE" }, { 0x4C2F9D, "ICM Controls", "ICM-CONTROLS" }, { 0xE467BA, "Danish Interpretation Systems A/S", "DANISH-INTERPRETATION-A/S" }, { 0xBCFE8C, "Altronic, LLC", "ALTRONIC-LLC" }, { 0x24BBC1, "Absolute Analysis", "ABSOLUTE-ANALYSIS" }, { 0x7CDD11, "Chongqing MAS SCI&TECH.Co.,Ltd", "CHONGQING-MAS-SCI-TECH" }, { 0xC43C3C, "CYBELEC SA", "CYBELEC" }, { 0x00D632, "GE Energy", "GE-ENERGY" }, { 0xC40ACB, "Cisco Systems, Inc", "CISCO" }, { 0x7463DF, "VTS GmbH", "VTS" }, { 0x3828EA, "Fujian Netcom Technology Co., LTD", "FUJIAN-NETCOM" }, { 0x2CEE26, "Petroleum Geo-Services", "PETROLEUM-GEO-SERVICES" }, { 0xDC3E51, "Solberg & Andersen AS", "SOLBERG-ANDERSEN-AS" }, { 0xD8B90E, "Triple Domain Vision Co.,Ltd.", "TRIPLE-DOMAIN-VISION" }, { 0x7C4B78, "Red Sun Synthesis Pte Ltd", "RED-SUN-SYNTHESIS-PTE" }, { 0x28D1AF, "Nokia Corporation", "NOKIA" }, { 0x68BC0C, "Cisco Systems, Inc", "CISCO" }, { 0x2C9EFC, "CANON INC.", "CANON" }, { 0x98C845, "PacketAccess", "PACKETACCESS" }, { 0x988217, "Disruptive Ltd", "DISRUPTIVE" }, { 0x80FFA8, "UNIDIS", "UNIDIS" }, { 0x489BE2, "SCI Innovations Ltd", "SCI-INNOVATIONS" }, { 0xB0E50E, "NRG SYSTEMS INC", "NRG" }, { 0x4C5FD2, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xE878A1, "BEOVIEW INTERCOM DOO", "BEOVIEW-INTERCOM-DOO" }, { 0x3057AC, "IRLAB LTD.", "IRLAB" }, { 0x28AF0A, "Sirius XM Radio Inc", "SIRIUS-XM-RADIO" }, { 0x2486F4, "Ctek, Inc.", "CTEK" }, { 0x3CE5B4, "KIDASEN INDUSTRIA E COMERCIO DE ANTENAS LTDA", "KIDASEN-INDUSTRIA-E-COMERCIO-DE-ANTENAS-LTDA" }, { 0xA85BF3, "Audivo GmbH", "AUDIVO" }, { 0x344F69, "EKINOPS SAS", "EKINOPS-SAS" }, { 0xC02973, "Audyssey Laboratories Inc.", "AUDYSSEY-LABORATORIES" }, { 0x30168D, "ProLon", "PROLON" }, { 0xB451F9, "NB Software", "NB-SOFTWARE" }, { 0x30688C, "Reach Technology Inc.", "REACH" }, { 0x88F488, "cellon communications technology(shenzhen)Co.,Ltd.", "CELLON-COMMUNICATION-SHENZHEN" }, { 0x0041B4, "Wuxi Zhongxing Optoelectronics Technology Co.,Ltd.", "WUXI-ZHONGXING-OPTOELECTRONICS" }, { 0xD453AF, "VIGO System S.A.", "VIGO-SYSTEM" }, { 0x1CE192, "Qisda Corporation", "QISDA" }, { 0x20C8B3, "SHENZHEN BUL-TECH CO.,LTD.", "SHENZHEN-BUL-TECH" }, { 0x58B0D4, "ZuniData Systems Inc.", "ZUNIDATA" }, { 0x64557F, "NSFOCUS Information Technology Co., Ltd.", "NSFOCUS-INFORMATION" }, { 0x406AAB, "RIM", "RIM" }, { 0x248707, "SEnergy Corporation", "SENERGY" }, { 0xEC3F05, "Institute 706, The Second Academy China Aerospace Science & Industry Corp", "INSTITUTE-706-THE-SECOND-ACADEMY-CHINA-AEROSPACE-SCIENCE-INDUSTRY" }, { 0xC4C19F, "National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO)", "NATIONAL-OILWELL-VARCO-INSTRUMENTATION-MONITORING-AND-OPTIMIZATION-NOV-IMO" }, { 0x68CD0F, "U Tek Company Limited", "U-TEK-COMPANY" }, { 0xD4CEB8, "Enatel LTD", "ENATEL" }, { 0xECF236, "NEOMONTANA ELECTRONICS", "NEOMONTANA-ELECTRONICS" }, { 0xE4A5EF, "TRON LINK ELECTRONICS CO., LTD.", "TRON-LINK-ELECTRONICS" }, { 0xAC4AFE, "Hisense Broadband Multimedia Technology Co.,Ltd.", "HISENSE-BROADBAND-MULTIMEDIA" }, { 0x2C1EEA, "AERODEV", "AERODEV" }, { 0xFC6C31, "LXinstruments GmbH", "LXINSTRUMENTS" }, { 0x3C6F45, "Fiberpro Inc.", "FIBERPRO" }, { 0xB4FC75, "SEMA Electronics(HK) CO.,LTD", "SEMA-ELECTRONICS-HK" }, { 0x5C16C7, "Big Switch Networks", "BIG-SWITCH-NETWORKS" }, { 0xB0BF99, "WIZITDONGDO", "WIZITDONGDO" }, { 0x147DB3, "JOA TELECOM.CO.,LTD", "JOA-TELECOM" }, { 0x3CD16E, "Telepower Communication Co., Ltd", "TELEPOWER-COMMUNICATION" }, { 0x00077D, "Cisco Systems, Inc", "CISCO" }, { 0x1045BE, "Norphonic AS", "NORPHONIC-AS" }, { 0xA0E295, "DAT System Co.,Ltd", "DAT-SYSTEM" }, { 0x40F14C, "ISE Europe SPRL", "ISE-EUROPE-SPRL" }, { 0x98293F, "Fujian Start Computer Equipment Co.,Ltd", "FUJIAN-START-EQUIPMENT" }, { 0x70D4F2, "RIM", "RIM" }, { 0x9067F3, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x64D912, "Solidica, Inc.", "SOLIDICA" }, { 0x8C5CA1, "d-broad,INC", "D-BROAD" }, { 0xC8F981, "Seneca s.r.l.", "SENECA-S-R-L" }, { 0x703187, "ACX GmbH", "ACX" }, { 0x14307A, "Avermetrics", "AVERMETRICS" }, { 0x8C7EB3, "Lytro, Inc.", "LYTRO" }, { 0x587675, "Beijing ECHO Technologies Co.,Ltd", "BEIJING-ECHO-TECHNOLOGIES" }, { 0x78EF4C, "Unetconvergence Co., Ltd.", "UNETCONVERGENCE" }, { 0xE8DA96, "Zhuhai Tianrui Electrical Power Tech. Co., Ltd.", "ZHUHAI-TIANRUI-ELECTRICAL-POWER-TECH" }, { 0x6CA780, "Nokia Corporation", "NOKIA" }, { 0x04888C, "Eifelwerk Butler Systeme GmbH", "EIFELWERK-BUTLER-SYSTEME" }, { 0x1013EE, "Justec International Technology INC.", "JUSTEC" }, { 0x704642, "CHYNG HONG ELECTRONIC CO., LTD.", "CHYNG-HONG" }, { 0x78BEB6, "Enhanced Vision", "ENHANCED-VISION" }, { 0xECEA03, "DARFON LIGHTING CORP", "DARFON-LIGHTING" }, { 0xC8903E, "Pakton Technologies", "PAKTON-TECHNOLOGIES" }, { 0x7465D1, "Atlinks", "ATLINKS" }, { 0x301A28, "Mako Networks Ltd", "MAKO-NETWORKS" }, { 0xD4945A, "COSMO CO., LTD", "COSMO" }, { 0x5CF207, "Speco Technologies", "SPECO-TECHNOLOGIES" }, { 0xB01B7C, "Ontrol A.S.", "ONTROL-A-S" }, { 0xD47B75, "HARTING Electronics GmbH", "HARTING-ELECTRONICS" }, { 0x70E843, "Beijing C&W Optical Communication Technology Co.,Ltd.", "BEIJING-C-W-OPTICAL-COMMUNICATION" }, { 0x08ACA5, "Benu Video, Inc.", "BENU-VIDEO" }, { 0xD89DB9, "eMegatech International Corp.", "EMEGATECH" }, { 0x405A9B, "ANOVO", "ANOVO" }, { 0xACCA54, "Telldus Technologies AB", "TELLDUS-TECHNOLOGIES-AB" }, { 0xCC1EFF, "Metrological Group BV", "METROLOGICAL-GROUP" }, { 0x941673, "Point Core SARL", "POINT-CORE-SARL" }, { 0x6C5D63, "ShenZhen Rapoo Technology Co., Ltd.", "SHENZHEN-RAPOO" }, { 0xE4D71D, "Oraya Therapeutics", "ORAYA-THERAPEUTICS" }, { 0xC8FE30, "Bejing DAYO Mobile Communication Technology Ltd.", "BEJING-DAYO-MOBILE-COMMUNICATION" }, { 0x64B64A, "ViVOtech, Inc.", "VIVOTECH" }, { 0xDCA7D9, "Compressor Controls Corp", "COMPRESSOR-CONTROLS" }, { 0xC455A6, "Cadac Holdings Ltd", "CADAC-HOLDINGS" }, { 0xBCBBC9, "Kellendonk Elektronik GmbH", "KELLENDONK-ELEKTRONIK" }, { 0x781DFD, "Jabil Inc", "JABIL" }, { 0x103711, "Simlink AS", "SIMLINK-AS" }, { 0x601199, "Siama Systems Inc", "SIAMA" }, { 0x300B9C, "Delta Mobile Systems, Inc.", "DELTA-MOBILE" }, { 0x90EA60, "SPI Lasers Ltd ", "SPI-LASERS" }, { 0xD46F42, "WAXESS USA Inc", "WAXESS-USA" }, { 0xB0A72A, "Ensemble Designs, Inc.", "ENSEMBLE-DESIGNS" }, { 0x50795B, "Interexport Telecomunicaciones S.A.", "INTEREXPORT-TELECOMUNICACIONES" }, { 0xE8C229, "H-Displays (MSC) Bhd", "H-DISPLAYS-MSC-BHD" }, { 0xB0BDA1, "ZAKLAD ELEKTRONICZNY SIMS", "ZAKLAD-ELEKTRONICZNY-SIMS" }, { 0x8C4435, "Shanghai BroadMobi Communication Technology Co., Ltd.", "SHANGHAI-BROADMOBI-COMMUNICATION" }, { 0x24B8D2, "Opzoon Technology Co.,Ltd.", "OPZOON" }, { 0x24CBE7, "MYK, Inc.", "MYK" }, { 0x88BFD5, "Simple Audio Ltd", "SIMPLE-AUDIO" }, { 0x948B03, "EAGET Innovation and Technology Co., Ltd.", "EAGET-INNOVATION-AND" }, { 0x802DE1, "Solarbridge Technologies", "SOLARBRIDGE-TECHNOLOGIES" }, { 0xF081AF, "IRZ AUTOMATION TECHNOLOGIES LTD", "IRZ-AUTOMATION-TECHNOLOGIES" }, { 0x14EB33, "BSMediasoft Co., Ltd.", "BSMEDIASOFT" }, { 0xAC8674, "Open Mesh, Inc.", "OPEN-MESH" }, { 0x14A9E3, "MST CORPORATION", "MST" }, { 0x589835, "Technicolor", "TECHNICOLOR" }, { 0x50D6D7, "Takahata Precision", "TAKAHATA-PRECISION" }, { 0xB4A5A9, "MODI GmbH", "MODI" }, { 0xD09B05, "Emtronix", "EMTRONIX" }, { 0x98EC65, "Cosesy ApS", "COSESY-APS" }, { 0x900917, "Far-sighted mobile", "FAR-SIGHTED-MOBILE" }, { 0x88F077, "Cisco Systems, Inc", "CISCO" }, { 0xAC4723, "Genelec", "GENELEC" }, { 0x20B7C0, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0xD42C3D, "Sky Light Digital Limited", "SKY-LIGHT-DIGITAL" }, { 0x806CBC, "NET New Electronic Technology GmbH", "NET-NEW" }, { 0x1C184A, "ShenZhen RicherLink Technologies Co.,LTD", "SHENZHEN-RICHERLINK-TECHNOLOGIES" }, { 0x04E662, "Acroname Inc.", "ACRONAME" }, { 0xF0BF97, "Sony Corporation", "SONY" }, { 0xC44AD0, "FIREFLIES SYSTEMS", "FIREFLIES" }, { 0x88E0A0, "Shenzhen VisionSTOR Technologies Co., Ltd", "SHENZHEN-VISIONSTOR-TECHNOLOGIES" }, { 0x6879ED, "SHARP Corporation", "SHARP" }, { 0x9CC0D2, "Conductix-Wampfler GmbH", "CONDUCTIX-WAMPFLER" }, { 0x447E95, "Alpha and Omega, Inc", "ALPHA-AND-OMEGA" }, { 0xE8B748, "Cisco Systems, Inc", "CISCO" }, { 0xDC16A2, "Medtronic Diabetes", "MEDTRONIC-DIABETES" }, { 0x78CA04, "Nokia Corporation", "NOKIA" }, { 0x2C8BF2, "Hitachi Metals America Ltd", "HITACHI-METALS-AMERICA" }, { 0x58F98E, "SECUDOS GmbH", "SECUDOS" }, { 0x2826A6, "PBR electronics GmbH", "PBR-ELECTRONICS" }, { 0xCC7669, "SEETECH", "SEETECH" }, { 0xE437D7, "HENRI DEPAEPE S.A.S.", "HENRI-DEPAEPE-S" }, { 0x582F42, "Universal Electric Corporation", "UNIVERSAL-ELECTRIC" }, { 0xAC20AA, "DMATEK Co., Ltd.", "DMATEK" }, { 0xE0A1D7, "SFR", "SFR" }, { 0x28852D, "Touch Networks", "TOUCH-NETWORKS" }, { 0xF02A61, "Waldo Networks, Inc.", "WALDO-NETWORKS" }, { 0xB8415F, "ASP AG", "ASP" }, { 0x2CB69D, "RED Digital Cinema", "RED-DIGITAL-CINEMA" }, { 0x988E34, "ZHEJIANG BOXSAM ELECTRONIC CO.,LTD", "ZHEJIANG-BOXSAM" }, { 0xD44C24, "Vuppalamritha Magnetic Components LTD", "VUPPALAMRITHA-MAGNETIC-COMPONENTS" }, { 0x4CB4EA, "HRD (S) PTE., LTD.", "HRD-S-PTE" }, { 0x34BDF9, "Shanghai WDK Industrial Co.,Ltd.", "SHANGHAI-WDK-INDUSTRIAL" }, { 0x74CE56, "Packet Force Technology Limited Company", "PACKET-FORCE-COMPANY" }, { 0xA89B10, "inMotion Ltd.", "INMOTION" }, { 0x888C19, "Brady Corp Asia Pacific Ltd", "BRADY-ASIA-PACIFIC" }, { 0x747DB6, "Aliwei Communications, Inc", "ALIWEI-COMMUNICATION" }, { 0xB41489, "Cisco Systems, Inc", "CISCO" }, { 0xAC6F4F, "Enspert Inc", "ENSPERT" }, { 0x8886A0, "Simton Technologies, Ltd.", "SIMTON-TECHNOLOGIES" }, { 0xF0C88C, "LeddarTech Inc.", "LEDDARTECH" }, { 0x68EBC5, "Angstrem Telecom", "ANGSTREM-TELECOM" }, { 0x448C52, "KTIS CO., Ltd", "KTIS" }, { 0x686359, "Advanced Digital Broadcast SA", "ADVANCED-DIGITAL-BROADCAST" }, { 0x4018D7, "Smartronix, Inc.", "SMARTRONIX" }, { 0x18922C, "Virtual Instruments", "VIRTUAL-INSTRUMENTS" }, { 0xF80F84, "Natural Security SAS", "NATURAL-SECURITY-SAS" }, { 0xEC9ECD, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x303955, "Shenzhen Jinhengjia Electronic Co., Ltd.", "SHENZHEN-JINHENGJIA" }, { 0xFC5B24, "Weibel Scientific A/S", "WEIBEL-SCIENTIFIC-A/S" }, { 0x34B571, "PLDS", "PLDS" }, { 0xA862A2, "JIWUMEDIA CO., LTD.", "JIWUMEDIA" }, { 0x984E97, "Starlight Marketing (H. K.) Ltd.", "STARLIGHT-MARKETING-H-K" }, { 0x7C6ADB, "SafeTone Technology Co.,Ltd", "SAFETONE" }, { 0xEC986C, "Lufft Mess- und Regeltechnik GmbH", "LUFFT-MESS--UND-REGELTECHNIK" }, { 0xB0518E, "Holl technology CO.Ltd.", "HOLL" }, { 0xDCDECA, "Akyllor", "AKYLLOR" }, { 0xA071A9, "Nokia Corporation", "NOKIA" }, { 0x8065E9, "BenQ Corporation", "BENQ" }, { 0x845DD7, "Shenzhen Netcom Electronics Co.,Ltd", "SHENZHEN-NETCOM-ELECTRONICS" }, { 0x447DA5, "VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD", "VTION-INFORMATION-FUJIAN" }, { 0x0CCDD3, "EASTRIVER TECHNOLOGY CO., LTD.", "EASTRIVER" }, { 0xB8E589, "Payter BV", "PAYTER" }, { 0xC89C1D, "Cisco Systems, Inc", "CISCO" }, { 0x503DE5, "Cisco Systems, Inc", "CISCO" }, { 0x801440, "Sunlit System Technology Corp", "SUNLIT-SYSTEM" }, { 0x948D50, "Beamex Oy Ab", "BEAMEX-OY-AB" }, { 0x94E226, "D. ORtiz Consulting, LLC", "D-ORTIZ-CONSULTING-LLC" }, { 0x386E21, "Wasion Group Ltd.", "WASION-GROUP" }, { 0xD8C99D, "EA DISPLAY LIMITED", "EA-DISPLAY" }, { 0xCCFC6D, "RIZ TRANSMITTERS", "RIZ-TRANSMITTERS" }, { 0xAC80D6, "Hexatronic AB", "HEXATRONIC-AB" }, { 0x9CF938, "AREVA NP GmbH", "AREVA-NP" }, { 0x500E6D, "TrafficCast International", "TRAFFICCAST" }, { 0x1CFEA7, "IDentytech Solutins Ltd.", "IDENTYTECH-SOLUTINS" }, { 0xD0B53D, "SEPRO ROBOTIQUE", "SEPRO-ROBOTIQUE" }, { 0xA0DE05, "JSC Irbis-T", "JSC-IRBIS-T" }, { 0x8895B9, "Unified Packet Systems Crop", "UNIFIED-PACKET-CROP" }, { 0x78593E, "RAFI GmbH & Co.KG", "RAFI" }, { 0x684352, "Bhuu Limited", "BHUU" }, { 0x3CC0C6, "d&b audiotechnik GmbH", "D-B-AUDIOTECHNIK" }, { 0xF8DAF4, "Taishan Online Technology Co., Ltd.", "TAISHAN-ONLINE" }, { 0xD8E3AE, "CIRTEC MEDICAL SYSTEMS", "CIRTEC-MEDICAL" }, { 0xA83944, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xFC1FC0, "EURECAM", "EURECAM" }, { 0x4891F6, "Shenzhen Reach software technology CO.,LTD", "SHENZHEN-REACH-SOFTWARE" }, { 0xEC14F6, "BioControl AS", "BIOCONTROL-AS" }, { 0xB8D06F, "GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE", "GUANGZHOU-HKUST-FOK-YING-TUNG-RESEARCH-INSTITUTE" }, { 0xB4C44E, "VXL eTech Pvt Ltd", "VXL-ETECH-PVT" }, { 0xF0933A, "NxtConect", "NXTCONECT" }, { 0x6052D0, "FACTS Engineering ", "FACTS-ENGINEERING" }, { 0x8C278A, "Vocollect Inc", "VOCOLLECT" }, { 0xFCAF6A, "Qulsar Inc", "QULSAR" }, { 0xECE555, "Hirschmann Automation", "HIRSCHMANN-AUTOMATION" }, { 0xDCD0F7, "Bentek Systems Ltd.", "BENTEK" }, { 0xD0574C, "Cisco Systems, Inc", "CISCO" }, { 0x8818AE, "Tamron Co., Ltd", "TAMRON" }, { 0x20D607, "Nokia Corporation", "NOKIA" }, { 0x58DB8D, "Fast Co., Ltd.", "FAST" }, { 0x18EF63, "Cisco Systems, Inc", "CISCO" }, { 0xCCCE40, "Janteq Corp", "JANTEQ" }, { 0x8C4DEA, "Cerio Corporation", "CERIO" }, { 0xECFAAA, "The IMS Company", "THE-IMS-COMPANY" }, { 0xCC55AD, "RIM", "RIM" }, { 0xF0F7B3, "Phorm", "PHORM" }, { 0xE8757F, "FIRS Technologies(Shenzhen) Co., Ltd", "FIRS-TECHNOLOGIES-SHENZHEN" }, { 0xC83EA7, "KUNBUS GmbH", "KUNBUS" }, { 0xA8D3C8, "Wachendorff Elektronik GmbH & Co. KG", "WACHENDORFF-ELEKTRONIK" }, { 0xE0CF2D, "Gemintek Corporation", "GEMINTEK" }, { 0x68BDAB, "Cisco Systems, Inc", "CISCO" }, { 0x9CADEF, "Obihai Technology, Inc.", "OBIHAI" }, { 0xD08999, "APCON, Inc.", "APCON" }, { 0x4454C0, "Thompson Aerospace", "THOMPSON-AEROSPACE" }, { 0xB4A4E3, "Cisco Systems, Inc", "CISCO" }, { 0x90903C, "TRISON TECHNOLOGY CORPORATION", "TRISON" }, { 0x94DD3F, "A+V Link Technologies, Corp.", "A+V-LINK-TECHNOLOGIES" }, { 0xC8EE08, "TANGTOP TECHNOLOGY CO.,LTD", "TANGTOP" }, { 0x7472F2, "Chipsip Technology Co., Ltd.", "CHIPSIP" }, { 0x5CD998, "D-Link Corporation", "D-LINK" }, { 0xD46CDA, "CSM GmbH", "CSM" }, { 0xC4F464, "Spica international", "SPICA" }, { 0x544A05, "wenglor sensoric gmbh", "WENGLOR-SENSORIC" }, { 0x5CCA32, "Theben AG", "THEBEN" }, { 0x84C7A9, "C3PO S.A.", "C3PO" }, { 0xF8AC6D, "Deltenna Ltd", "DELTENNA" }, { 0x641084, "HEXIUM Technical Development Co., Ltd.", "HEXIUM-TECHNICAL-DEVELOPMENT" }, { 0xC416FA, "Prysm Inc", "PRYSM" }, { 0xE0C286, "Aisai Communication Technology Co., Ltd.", "AISAI-COMMUNICATION" }, { 0xD84B2A, "Cognitas Technologies, Inc.", "COGNITAS-TECHNOLOGIES" }, { 0x684B88, "Galtronics Telemetry Inc.", "GALTRONICS-TELEMETRY" }, { 0x842914, "EMPORIA TELECOM Produktions- und VertriebsgesmbH & Co KG", "EMPORIA-TELECOM-PRODUKTIONS--UND-VERTRIEBSGESMBH" }, { 0x4C8B55, "Grupo Digicon", "GRUPO-DIGICON" }, { 0x04A3F3, "Emicon", "EMICON" }, { 0xF866F2, "Cisco Systems, Inc", "CISCO" }, { 0x7C55E7, "YSI, Inc.", "YSI" }, { 0xC02BFC, "iNES. applied informatics GmbH", "INES-APPLIED-INFORMATICS" }, { 0xAC34CB, "Shanhai GBCOM Communication Technology Co. Ltd", "SHANHAI-GBCOM-COMMUNICATION" }, { 0xD4A928, "GreenWave Reality Inc", "GREENWAVE-REALITY" }, { 0x9CFFBE, "OTSL Inc.", "OTSL" }, { 0x2CD1DA, "Sanjole, Inc.", "SANJOLE" }, { 0x100E2B, "NEC CASIO Mobile Communications", "NEC-CASIO-MOBILE-COMMUNICATION" }, { 0x445EF3, "Tonalite Holding B.V.", "TONALITE-HOLDING" }, { 0x100C24, "pomdevices, LLC", "POMDEVICES-LLC" }, { 0x58F6BF, "Kyoto University", "KYOTO-UNIVERSITY" }, { 0x7CED8D, "Microsoft", "MICROSOFT" }, { 0x54FDBF, "Scheidt & Bachmann GmbH", "SCHEIDT-BACHMANN" }, { 0xB40EDC, "LG-Ericsson Co.,Ltd.", "LG-ERICSSON" }, { 0xA4D1D1, "ECOtality North America", "ECOTALITY-NORTH-AMERICA" }, { 0xC8D5FE, "Shenzhen Zowee Technology Co., Ltd", "SHENZHEN-ZOWEE" }, { 0xC49313, "100fio networks technology llc", "100FIO-NETWORKS-LLC" }, { 0xA4A80F, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0xB8921D, "BG T&A", "BG-T-A" }, { 0x48FCB8, "Woodstream Corporation", "WOODSTREAM" }, { 0x548922, "Zelfy Inc", "ZELFY" }, { 0xF8C091, "Highgates Technology", "HIGHGATES" }, { 0x6C5CDE, "SunReports, Inc.", "SUNREPORTS" }, { 0x241F2C, "Calsys, Inc.", "CALSYS" }, { 0x284846, "GridCentric Inc.", "GRIDCENTRIC" }, { 0x58B9E1, "Crystalfontz America, Inc.", "CRYSTALFONTZ-AMERICA" }, { 0x646707, "Beijing Omnific Technology, Ltd.", "BEIJING-OMNIFIC" }, { 0xD4000D, "Phoenix Broadband Technologies, LLC.", "PHOENIX-BROADBAND-TECHNOLOGIES-LLC" }, { 0xE87AF3, "S5 Tech S.r.l.", "S5-TECH-S-R-L" }, { 0x40C7C9, "Naviit Inc.", "NAVIIT" }, { 0xA0A763, "Polytron Vertrieb GmbH", "POLYTRON-VERTRIEB" }, { 0xD496DF, "SUNGJIN C&T CO.,LTD", "SUNGJIN-C-T" }, { 0xD07DE5, "Forward Pay Systems, Inc.", "FORWARD-PAY" }, { 0x7CEF18, "Creative Product Design Pty. Ltd.", "CREATIVE-PRODUCT-DESIGN-PTY" }, { 0xFCD4F6, "Messana Air.Ray Conditioning s.r.l.", "MESSANA-AIR-RAY-CONDITIONING-S-R-L" }, { 0x0CD696, "Amimon Ltd", "AMIMON" }, { 0xB43741, "Consert, Inc.", "CONSERT" }, { 0xF8FB2F, "Santur Corporation", "SANTUR" }, { 0x2CCD43, "Summit Technology Group", "SUMMIT-GROUP" }, { 0x6C8D65, "Wireless Glue Networks, Inc.", "WIRELESS-GLUE-NETWORKS" }, { 0xCCFCB1, "Wireless Technology, Inc.", "WIRELESS" }, { 0xCC5C75, "Weightech Com. Imp. Exp. Equip. Pesagem Ltda", "WEIGHTECH-COM-IMP-EXP-EQUIP-PESAGEM-LTDA" }, { 0xA098ED, "Shandong Intelligent Optical Communication Development Co., Ltd.", "SHANDONG-INTELLIGENT-OPTICAL-COMMUNICATION-DEVELOPMENT" }, { 0x34C69A, "Enecsys Ltd", "ENECSYS" }, { 0x502A8B, "Telekom Research and Development Sdn Bhd", "TELEKOM-RESEARCH-AND-DEVELOPMENT-SDN-BHD" }, { 0xF88DEF, "Tenebraex", "TENEBRAEX" }, { 0xEC43E6, "AWCER Ltd.", "AWCER" }, { 0xF0EC39, "Essec", "ESSEC" }, { 0x5849BA, "Chitai Electronic Corp.", "CHITAI" }, { 0x181714, "DAEWOOIS", "DAEWOOIS" }, { 0x80B289, "Forworld Electronics Ltd.", "FORWORLD-ELECTRONICS" }, { 0x14A62C, "S.M. Dezac S.A.", "S-M-DEZAC" }, { 0xA8F470, "Fujian Newland Communication Science Technologies Co.,Ltd.", "FUJIAN-NEWLAND-COMMUNICATION-SCIENCE-TECHNOLOGIES" }, { 0xDC1D9F, "U & B tech", "U-B-TECH" }, { 0x081651, "SHENZHEN SEA STAR TECHNOLOGY CO.,LTD", "SHENZHEN-SEA-STAR" }, { 0xDC49C9, "CASCO SIGNAL LTD", "CASCO-SIGNAL" }, { 0xB09134, "Taleo", "TALEO" }, { 0xA863DF, "DISPLAIRE CORPORATION", "DISPLAIRE" }, { 0x104369, "Soundmax Electronic Limited ", "SOUNDMAX" }, { 0xC06C0F, "Dobbs Stanford", "DOBBS-STANFORD" }, { 0x5475D0, "Cisco Systems, Inc", "CISCO" }, { 0xBC6A16, "tdvine", "TDVINE" }, { 0xC8EF2E, "Beijing Gefei Tech. Co., Ltd ", "BEIJING-GEFEI-TECH" }, { 0x98DCD9, "UNITEC Co., Ltd.", "UNITEC" }, { 0x30525A, "NST Co., LTD", "NST" }, { 0x6089B7, "KAEL MÜHENDİSLİK ELEKTRONİK TİCARET SANAYİ LİMİTED ŞİRKETİ", "KAEL-MÜHENDİSLİK-ELEKTRONİK-TİCARET-SANAYİ-LİMİTED-ŞİRKETİ" }, { 0x2CA780, "True Technologies Inc.", "TRUE-TECHNOLOGIES" }, { 0x545FA9, "Teracom Limited", "TERACOM" }, { 0xECC882, "Cisco Systems, Inc", "CISCO" }, { 0xA0B9ED, "Skytap", "SKYTAP" }, { 0x502DF4, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x38E8DF, "b gmbh medien + datenbanken", "B-MEDIEN-+-DATENBANKEN" }, { 0x10189E, "Elmo Motion Control", "ELMO-MOTION-CONTROL" }, { 0x88FD15, "LINEEYE CO., LTD", "LINEEYE" }, { 0x10445A, "Shaanxi Hitech Electronic Co., LTD", "SHAANXI-HITECH" }, { 0x60B3C4, "Elber Srl", "ELBER-SRL" }, { 0x04C880, "Samtec Inc", "SAMTEC" }, { 0x884B39, "Siemens AG, Healthcare Sector", "SIEMENS-HEALTHCARE-SECTOR" }, { 0x44C233, "Guangzhou Comet Technology Development Co.Ltd", "GUANGZHOU-COMET-DEVELOPMENT" }, { 0xB482FE, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x307C30, "RIM", "RIM" }, { 0xBC4E3C, "CORE STAFF CO., LTD.", "CORE-STAFF" }, { 0x80BAAC, "TeleAdapt Ltd", "TELEADAPT" }, { 0xFC4463, "Universal Audio, Inc", "UNIVERSAL-AUDIO" }, { 0xF06853, "Integrated Corporation", "INTEGRATED" }, { 0x10E6AE, "Source Technologies, LLC", "SOURCE-TECHNOLOGIES-LLC" }, { 0xA4ADB8, "Vitec Group, Camera Dynamics Ltd", "VITEC-GROUP-CAMERA-DYNAMICS" }, { 0x90A2DA, "GHEO SA", "GHEO" }, { 0xC41ECE, "HMI Sources Ltd.", "HMI-SOURCES" }, { 0xBCD5B6, "d2d technologies", "D2D-TECHNOLOGIES" }, { 0x1C8F8A, "Phase Motion Control SpA", "PHASE-MOTION-CONTROL-SPA" }, { 0xA4B1EE, "H. ZANDER GmbH & Co. KG", "H-ZANDER" }, { 0x486FD2, "StorSimple Inc", "STORSIMPLE" }, { 0xD4F143, "IPROAD.,Inc", "IPROAD" }, { 0xCC5459, "OnTime Networks AS", "ONTIME-NETWORKS-AS" }, { 0x3CB17F, "Wattwatchers Pty Ld", "WATTWATCHERS-PTY-LD" }, { 0x00DB45, "THAMWAY CO.,LTD.", "THAMWAY" }, { 0xA0231B, "TeleComp R&D Corp.", "TELECOMP-R-D" }, { 0x94C4E9, "PowerLayer Microsystems HongKong Limited", "POWERLAYER-MICROSYSTEMS-HONGKONG" }, { 0x8843E1, "Cisco Systems, Inc", "CISCO" }, { 0xB4ED19, "Pie Digital, Inc.", "PIE-DIGITAL" }, { 0x888717, "CANON INC.", "CANON" }, { 0xE0271A, "TTC Next-generation Home Network System WG", "TTC-NEXT-GENERATION-HOME-NETWORK-SYSTEM-WG" }, { 0x84C727, "Gnodal Ltd", "GNODAL" }, { 0xE4AB46, "UAB Selteka", "UAB-SELTEKA" }, { 0xD479C3, "Cameronet GmbH & Co. KG", "CAMERONET" }, { 0x945B7E, "TRILOBIT LTDA.", "TRILOBIT-LTDA" }, { 0xE85B5B, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x20D906, "Iota, Inc.", "IOTA" }, { 0x404022, "ZIV", "ZIV" }, { 0x74F726, "Neuron Robotics", "NEURON-ROBOTICS" }, { 0x18FC9F, "Changhe Electronics Co., Ltd.", "CHANGHE-ELECTRONICS" }, { 0xA438FC, "Plastic Logic", "PLASTIC-LOGIC" }, { 0x601D0F, "Midnite Solar", "MIDNITE-SOLAR" }, { 0x50A6E3, "David Clark Company", "DAVID-CLARK-COMPANY" }, { 0x549A16, "Uzushio Electric Co.,Ltd.", "UZUSHIO-ELECTRIC" }, { 0x4001C6, "3COM EUROPE LTD", "3COM" }, { 0x608D17, "Sentrus Government Systems Division, Inc", "SENTRUS-GOVERNMENT-DIVISION" }, { 0x80912A, "Lih Rong electronic Enterprise Co., Ltd.", "LIH-RONG" }, { 0x8038FD, "LeapFrog Enterprises, Inc.", "LEAPFROG-ENTERPRISES" }, { 0x7072CF, "EdgeCore Networks", "EDGECORE-NETWORKS" }, { 0x803B9A, "ghe-ces electronic ag", "GHE-CES" }, { 0x9CCD82, "CHENG UEI PRECISION INDUSTRY CO.,LTD", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0xC8AACC, "Private", "PRIVATE" }, { 0x003D41, "Hatteland Computer AS", "HATTELAND-AS" }, { 0x087618, "ViE Technologies Sdn. Bhd.", "VIE-TECHNOLOGIES-SDN-BHD" }, { 0xA4AD00, "Ragsdale Technology", "RAGSDALE" }, { 0x2C1984, "IDN Telecom, Inc.", "IDN-TELECOM" }, { 0x3863F6, "3NOD MULTIMEDIA(SHENZHEN)CO.,LTD", "3NOD-MULTIMEDIA-SHENZHEN" }, { 0xDCE2AC, "Lumens Digital Optics Inc.", "LUMENS-DIGITAL-OPTICS" }, { 0x98D88C, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xC8873B, "Net Optics", "NET-OPTICS" }, { 0xB0E97E, "Advanced Micro Peripherals", "ADVANCED-MICRO-PERIPHERALS" }, { 0xD44CA7, "Informtekhnika & Communication, LLC", "INFORMTEKHNIKA-COMMUNICATION-LLC" }, { 0x202CB7, "Kong Yue Electronics & Information Industry (Xinhui) Ltd.", "KONG-YUE-ELECTRONICS-INFORMATION-INDUSTRY-XINHUI" }, { 0x68CC9C, "Mine Site Technologies", "MINE-SITE-TECHNOLOGIES" }, { 0x04B466, "BSP Co., Ltd.", "BSP" }, { 0xE41F13, "IBM Corp", "IBM" }, { 0x00271B, "Alec Sicherheitssysteme GmbH", "ALEC-SICHERHEITSSYSTEME" }, { 0x002718, "Suzhou NEW SEAUNION Video Technology Co.,Ltd", "SUZHOU-NEW-SEAUNION-VIDEO" }, { 0x00270C, "Cisco Systems, Inc", "CISCO" }, { 0x00270B, "Adura Technologies", "ADURA-TECHNOLOGIES" }, { 0x002705, "Sectronic", "SECTRONIC" }, { 0x002706, "YOISYS", "YOISYS" }, { 0x0026F9, "S.E.M. srl", "S-E-M-SRL" }, { 0x0026F3, "SMC Networks", "SMC-NETWORKS" }, { 0x688540, "IGI Mobile, Inc.", "IGI-MOBILE" }, { 0x6465C0, "Nuvon, Inc", "NUVON" }, { 0xF0DE71, "Shanghai EDO Technologies Co.,Ltd.", "SHANGHAI-EDO-TECHNOLOGIES" }, { 0x28FBD3, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0x7C1EB3, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x146E0A, "Private", "PRIVATE" }, { 0x1045F8, "LNT-Automation GmbH", "LNT-AUTOMATION" }, { 0x644F74, "LENUS Co., Ltd.", "LENUS" }, { 0x787F62, "GiK mbH", "GIK-MBH" }, { 0xD4AAFF, "MICRO WORLD ", "MICRO-WORLD" }, { 0xC4FCE4, "DishTV NZ Ltd", "DISHTV-NZ" }, { 0x0CD7C2, "Axium Technologies, Inc.", "AXIUM-TECHNOLOGIES" }, { 0x40F52E, "Leica Microsystems (Schweiz) AG", "LEICA-MICROSYSTEMS-SCHWEIZ" }, { 0xC02250, "Private", "PRIVATE" }, { 0x64BC11, "CombiQ AB", "COMBIQ-AB" }, { 0x4097D1, "BK Electronics cc", "BK-ELECTRONICS-CC" }, { 0x68AAD2, "DATECS LTD.,", "DATECS" }, { 0x0026EC, "Legrand Home Systems, Inc", "LEGRAND-HOME" }, { 0x0026E6, "Visionhitech Co., Ltd.", "VISIONHITECH" }, { 0x0026E0, "ASITEQ", "ASITEQ" }, { 0x0026DA, "Universal Media Corporation /Slovakia/ s.r.o.", "UNIVERSAL-MEDIA-/SLOVAKIA/-S-R-O" }, { 0x0026D3, "Zeno Information System", "ZENO-INFORMATION-SYSTEM" }, { 0x0026D4, "IRCA SpA", "IRCA-SPA" }, { 0x0026CD, "PurpleComm, Inc.", "PURPLECOMM" }, { 0x10880F, "Daruma Telecomunicações e Informática S.A.", "DARUMA-TELECOMUNICAçõES-E-INFORMáTICA" }, { 0x4C4B68, "Mobile Device, Inc. ", "MOBILE-DEVICE" }, { 0x94BA31, "Visiontec da Amazônia Ltda.", "VISIONTEC-DA-AMAZôNIA-LTDA" }, { 0xF45FF7, "DQ Technology Inc.", "DQ" }, { 0x60F13D, "JABLOCOM s.r.o.", "JABLOCOM-S-R-O" }, { 0x0CEF7C, "AnaCom Inc", "ANACOM" }, { 0xE08FEC, "REPOTEC CO., LTD.", "REPOTEC" }, { 0xD0D286, "Beckman Coulter K.K.", "BECKMAN-COULTER-K-K" }, { 0x1C0FCF, "Sypro Optics GmbH", "SYPRO-OPTICS" }, { 0x0025AB, "AIO LCD PC BU / TPV", "AIO-LCD-PC-BU-/-TPV" }, { 0x0025A4, "EuroDesign embedded technologies GmbH", "EURODESIGN-EMBEDDED-TECHNOLOGIES" }, { 0x00259D, "Private", "PRIVATE" }, { 0x002598, "Zhong Shan City Litai Electronic Industrial Co. Ltd", "ZHONG-SHAN-CITY-LITAI-INDUSTRIAL" }, { 0x002591, "NEXTEK, Inc.", "NEXTEK" }, { 0x00258C, "ESUS ELEKTRONIK SAN. VE DIS. TIC. LTD. STI.", "ESUS-ELEKTRONIK-SAN-VE-DIS-TIC-STI" }, { 0x002587, "Vitality, Inc.", "VITALITY" }, { 0x002581, "x-star networks Inc.", "X-STAR-NETWORKS" }, { 0x002582, "Maksat Technologies (P) Ltd", "MAKSAT-TECHNOLOGIES-P" }, { 0x002578, "JSC Concern Sozvezdie", "JSC-CONCERN-SOZVEZDIE" }, { 0x00257D, "PointRed Telecom Private Ltd.", "POINTRED-TELECOM-PRIVATE" }, { 0x002577, "D-BOX Technologies", "D-BOX-TECHNOLOGIES" }, { 0x002571, "Zhejiang Tianle Digital Electric Co.,Ltd", "ZHEJIANG-TIANLE-DIGITAL-ELECTRIC" }, { 0x00256A, "inIT - Institut Industrial IT", "INIT---INSTITUT-INDUSTRIAL-IT" }, { 0x002565, "Vizimax Inc.", "VIZIMAX" }, { 0x00255E, "Shanghai Dare Technologies Co.,Ltd.", "SHANGHAI-DARE-TECHNOLOGIES" }, { 0x002558, "MPEDIA", "MPEDIA" }, { 0x002635, "Bluetechnix GmbH", "BLUETECHNIX" }, { 0x00262F, "HAMAMATSU TOA ELECTRONICS", "HAMAMATSU-TOA-ELECTRONICS" }, { 0x002623, "JRD Communication Inc", "JRD-COMMUNICATION" }, { 0x002628, "companytec automação e controle ltda.", "COMPANYTEC-AUTOMAçãO-E-CONTROLE-LTDA" }, { 0x00261C, "NEOVIA INC.", "NEOVIA" }, { 0x002615, "Teracom Limited", "TERACOM" }, { 0x002616, "Rosemount Inc.", "ROSEMOUNT" }, { 0x002610, "Apacewave Technologies", "APACEWAVE-TECHNOLOGIES" }, { 0x002609, "Phyllis Co., Ltd.", "PHYLLIS" }, { 0x00268C, "StarLeaf Ltd.", "STARLEAF" }, { 0x002686, "Quantenna Communcations, Inc.", "QUANTENNA-COMMUNCATIONS" }, { 0x002680, "SIL3 Pty.Ltd", "SIL3-PTY" }, { 0x00267F, "Zenterio AB", "ZENTERIO-AB" }, { 0x00267A, "wuhan hongxin telecommunication technologies co.,ltd", "WUHAN-HONGXIN-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x002679, "Euphonic Technologies, Inc.", "EUPHONIC-TECHNOLOGIES" }, { 0x002673, "RICOH COMPANY,LTD.", "RICOH-COMPANY" }, { 0x00266D, "MobileAccess Networks", "MOBILEACCESS-NETWORKS" }, { 0x0025D6, "The Kroger Co.", "THE-KROGER" }, { 0x0025CA, "LS Research, LLC", "LS-RESEARCH-LLC" }, { 0x0025BE, "Tektrap Systems Inc.", "TEKTRAP" }, { 0x0025BD, "Italdata Ingegneria dell'Idea S.p.A.", "ITALDATA-INGEGNERIA-DELL-IDEA-S-P-A" }, { 0x0025B7, "Costar electronics, inc.,", "COSTAR-ELECTRONICS" }, { 0x0025B0, "Schmartz Inc", "SCHMARTZ" }, { 0x002546, "Cisco Systems, Inc", "CISCO" }, { 0x002545, "Cisco Systems, Inc", "CISCO" }, { 0x002535, "Minimax GmbH & Co KG", "MINIMAX" }, { 0x002532, "Digital Recorders", "DIGITAL-RECORDERS" }, { 0x00252B, "Stirling Energy Systems", "STIRLING-ENERGY" }, { 0x0025FD, "OBR Centrum Techniki Morskiej S.A.", "OBR-CENTRUM-TECHNIKI-MORSKIEJ" }, { 0x002603, "Shenzhen Wistar Technology Co., Ltd", "SHENZHEN-WISTAR" }, { 0x0025F3, "Nordwestdeutsche Zählerrevision", "NORDWESTDEUTSCHE-ZäHLERREVISION" }, { 0x0025EC, "Humanware", "HUMANWARE" }, { 0x0025E2, "Everspring Industry Co., Ltd.", "EVERSPRING-INDUSTRY" }, { 0x0025DD, "SUNNYTEK INFORMATION CO., LTD.", "SUNNYTEK-INFORMATION" }, { 0x002667, "CARECOM CO.,LTD.", "CARECOM" }, { 0x002660, "Logiways", "LOGIWAYS" }, { 0x002656, "Sansonic Electronics USA", "SANSONIC-ELECTRONICS-USA" }, { 0x002653, "DaySequerra Corporation", "DAYSEQUERRA" }, { 0x00264C, "Shanghai DigiVision Technology Co., Ltd.", "SHANGHAI-DIGIVISION" }, { 0x002647, "WFE TECHNOLOGY CORP.", "WFE" }, { 0x00263B, "Onbnetech", "ONBNETECH" }, { 0x0026C1, "ARTRAY CO., LTD.", "ARTRAY" }, { 0x0026B5, "ICOMM Tele Ltd", "ICOMM-TELE" }, { 0x0026AF, "Duelco A/S", "DUELCO-A/S" }, { 0x0026A5, "MICROROBOT.CO.,LTD", "MICROROBOT" }, { 0x00269F, "Private", "PRIVATE" }, { 0x002699, "Cisco Systems, Inc", "CISCO" }, { 0x002489, "Vodafone Omnitel N.V.", "VODAFONE-OMNITEL-N-V" }, { 0x00248E, "Infoware ZRt.", "INFOWARE-ZRT" }, { 0x002476, "TAP.tv", "TAP-TV" }, { 0x00246F, "Onda Communication spa", "ONDA-COMMUNICATION-SPA" }, { 0x00246A, "Solid Year Co., Ltd.", "SOLID-YEAR" }, { 0x0023FA, "RG Nets, Inc.", "RG-NETS" }, { 0x0023FF, "Beijing HTTC Technology Ltd.", "BEIJING-HTTC" }, { 0x0023F4, "Masternaut", "MASTERNAUT" }, { 0x0023EA, "Cisco Systems, Inc", "CISCO" }, { 0x0023E4, "IPnect co. ltd.", "IPNECT" }, { 0x0023DE, "Ansync Inc.", "ANSYNC" }, { 0x0023D1, "TRG", "TRG" }, { 0x0023CB, "Shenzhen Full-join Technology Co.,Ltd", "SHENZHEN-FULL-JOIN" }, { 0x0023D2, "Inhand Electronics, Inc.", "INHAND-ELECTRONICS" }, { 0x0024B4, "ESCATRONIC GmbH", "ESCATRONIC" }, { 0x0024AD, "Adolf Thies Gmbh & Co. KG", "ADOLF-THIES" }, { 0x00249C, "Bimeng Comunication System Co. Ltd", "BIMENG-COMUNICATION-SYSTEM" }, { 0x002526, "Genuine Technologies Co., Ltd.", "GENUINE-TECHNOLOGIES" }, { 0x002525, "CTERA Networks Ltd.", "CTERA-NETWORKS" }, { 0x002520, "SMA Railway Technology GmbH", "SMA-RAILWAY" }, { 0x00251B, "Philips CareServant", "PHILIPS-CARESERVANT" }, { 0x002516, "Integrated Design Tools, Inc.", "INTEGRATED-DESIGN-TOOLS" }, { 0x00250F, "On-Ramp Wireless, Inc.", "ON-RAMP-WIRELESS" }, { 0x002503, "IBM Corp", "IBM" }, { 0x00250A, "Security Expert Co. Ltd", "SECURITY-EXPERT" }, { 0x0024DD, "Centrak, Inc.", "CENTRAK" }, { 0x0024D8, "IlSung Precision", "ILSUNG-PRECISION" }, { 0x0024CC, "Fascinations Toys and Gifts, Inc.", "FASCINATIONS-TOYS-AND-GIFTS" }, { 0x0024D1, "Thomson Inc.", "THOMSON" }, { 0x0024CA, "Tobii Technology AB", "TOBII-AB" }, { 0x0024C5, "Meridian Audio Limited", "MERIDIAN-AUDIO" }, { 0x0024B9, "Wuhan Higheasy Electronic Technology Development Co.Ltd", "WUHAN-HIGHEASY-DEVELOPMENT" }, { 0x002425, "Shenzhenshi chuangzhicheng Technology Co.,Ltd", "SHENZHENSHI-CHUANGZHICHENG" }, { 0x002419, "Private", "PRIVATE" }, { 0x002412, "Benign Technologies Co, Ltd.", "BENIGN-TECHNOLOGIES" }, { 0x00240C, "DELEC GmbH", "DELEC" }, { 0x002406, "Pointmobile", "POINTMOBILE" }, { 0x0023F9, "Double-Take Software, INC.", "DOUBLE-TAKE-SOFTWARE" }, { 0x002463, "Phybridge Inc", "PHYBRIDGE" }, { 0x002459, "ABB Automation products GmbH", "ABB-AUTOMATION-PRODUCTS" }, { 0x00245E, "Hivision Co.,ltd", "HIVISION" }, { 0x002451, "Cisco Systems, Inc", "CISCO" }, { 0x00244C, "Solartron Metrology Ltd", "SOLARTRON-METROLOGY" }, { 0x00243F, "Storwize, Inc.", "STORWIZE" }, { 0x002440, "Halo Monitoring, Inc.", "HALO-MONITORING" }, { 0x00243B, "CSSI (S) Pte Ltd", "CSSI-S-PTE" }, { 0x0024FC, "QuoPin Co., Ltd.", "QUOPIN" }, { 0x0024F7, "Cisco Systems, Inc", "CISCO" }, { 0x0024F0, "Seanodes", "SEANODES" }, { 0x0024EB, "ClearPath Networks, Inc.", "CLEARPATH-NETWORKS" }, { 0x0024E4, "Withings", "WITHINGS" }, { 0x002435, "WIDE CORPORATION", "WIDE" }, { 0x00242F, "Micron", "MICRON" }, { 0x00241F, "DCT-Delta GmbH", "DCT-DELTA" }, { 0x0023C5, "Radiation Safety and Control Services Inc", "RADIATION-SAFETY-AND-CONTROL-SERVICES" }, { 0x0023C4, "Lux Lumen", "LUX-LUMEN" }, { 0x0023B8, "Sichuan Jiuzhou Electronic Technology Co.,Ltd", "SICHUAN-JIUZHOU" }, { 0x0023BF, "Mainpine, Inc.", "MAINPINE" }, { 0x0023B2, "Intelligent Mechatronic Systems Inc", "INTELLIGENT-MECHATRONIC" }, { 0x0023AC, "Cisco Systems, Inc", "CISCO" }, { 0x0023A0, "Hana CNS Co., LTD.", "HANA-CNS" }, { 0x0023A5, "SageTV, LLC", "SAGETV-LLC" }, { 0x0022B6, "Superflow Technologies Group", "SUPERFLOW-TECHNOLOGIES-GROUP" }, { 0x0022A3, "California Eastern Laboratories", "CALIFORNIA-EASTERN-LABORATORIES" }, { 0x00229E, "Social Aid Research Co., Ltd.", "SOCIAL-AID-RESEARCH" }, { 0x002291, "Cisco Systems, Inc", "CISCO" }, { 0x002292, "Cinetal", "CINETAL" }, { 0x002297, "XMOS Semiconductor", "XMOS-SEMICONDUCTOR" }, { 0x00228B, "Kensington Computer Products Group", "KENSINGTON-PRODUCTS-GROUP" }, { 0x002284, "DESAY A&V SCIENCE AND TECHNOLOGY CO.,LTD", "DESAY-A-V-SCIENCE-AND" }, { 0x002277, "NEC Australia Pty Ltd", "NEC-AUSTRALIA-PTY" }, { 0x00226D, "Shenzhen GIEC Electronics Co., Ltd.", "SHENZHEN-GIEC-ELECTRONICS" }, { 0x002263, "Koos Technical Services, Inc.", "KOOS-TECHNICAL-SERVICES" }, { 0x002267, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002259, "Guangzhou New Postcom Equipment Co.,Ltd.", "GUANGZHOU-NEW-POSTCOM-EQUIPMENT" }, { 0x0022E4, "APASS TECHNOLOGY CO., LTD.", "APASS" }, { 0x0022DD, "Protecta Electronics Ltd", "PROTECTA-ELECTRONICS" }, { 0x0022D8, "Shenzhen GST Security and Safety Technology Limited", "SHENZHEN-GST-SECURITY-AND-SAFETY" }, { 0x0022D1, "Albrecht Jung GmbH & Co. KG", "ALBRECHT-JUNG" }, { 0x0022C3, "Zeeport Technology Inc.", "ZEEPORT" }, { 0x0022C7, "SEGGER Microcontroller GmbH & Co. KG", "SEGGER-MICROCONTROLLER" }, { 0x0022BD, "Cisco Systems, Inc", "CISCO" }, { 0x002344, "Objective Interface Systems, Inc.", "OBJECTIVE-INTERFACE" }, { 0x002343, "TEM AG", "TEM" }, { 0x002337, "Global Star Solutions ULC", "GLOBAL-STAR-SOLUTIONS-ULC" }, { 0x00232B, "IRD A/S", "IRD-A/S" }, { 0x00231C, "Fourier Systems Ltd.", "FOURIER" }, { 0x00231B, "Danaher Motion - Kollmorgen", "DANAHER-MOTION---KOLLMORGEN" }, { 0x00239F, "Institut für Prüftechnik", "INSTITUT-FüR-PRüFTECHNIK" }, { 0x002393, "AJINEXTEK", "AJINEXTEK" }, { 0x00238F, "NIDEC COPAL CORPORATION", "NIDEC-COPAL" }, { 0x002385, "ANTIPODE", "ANTIPODE" }, { 0x00237E, "ELSTER GMBH", "ELSTER" }, { 0x002379, "Union Business Machines Co. Ltd.", "UNION-BUSINESS-MACHINES" }, { 0x002253, "Entorian Technologies", "ENTORIAN-TECHNOLOGIES" }, { 0x002250, "Point Six Wireless, LLC", "POINT-SIX-WIRELESS-LLC" }, { 0x002249, "HOME MULTIENERGY SL", "HOME-MULTIENERGY-SL" }, { 0x00224A, "RAYLASE AG", "RAYLASE" }, { 0x002240, "Universal Telecom S/A", "UNIVERSAL-TELECOM-S/A" }, { 0x00222D, "SMC Networks Inc.", "SMC-NETWORKS" }, { 0x00222E, "maintech GmbH", "MAINTECH" }, { 0x002364, "Power Instruments Pte Ltd", "POWER-INSTRUMENTS-PTE" }, { 0x002369, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x002370, "Snell", "SNELL" }, { 0x00235D, "Cisco Systems, Inc", "CISCO" }, { 0x002356, "Packet Forensics LLC", "PACKET-FORENSICS-LLC" }, { 0x002313, "Qool Technologies Ltd.", "QOOL-TECHNOLOGIES" }, { 0x00230D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002301, "Witron Technology Limited", "WITRON" }, { 0x0022F7, "Conceptronic", "CONCEPTRONIC" }, { 0x0022EA, "Rustelcom Inc.", "RUSTELCOM" }, { 0x0022F0, "3 Greens Aviation Limited", "3-GREENS-AVIATION" }, { 0x0022E9, "ProVision Communications", "PROVISION-COMMUNICATION" }, { 0x00211C, "Cisco Systems, Inc", "CISCO" }, { 0x002117, "Tellord", "TELLORD" }, { 0x002110, "Clearbox Systems", "CLEARBOX" }, { 0x002106, "RIM Testing Services", "RIM-TESTING-SERVICES" }, { 0x001FFF, "Respironics, Inc.", "RESPIRONICS" }, { 0x001FFE, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001FF8, "Siemens AG, Sector Industry, Drive Technologies, Motion Control Systems", "SIEMENS-SECTOR-INDUSTRY-DRIVE-TECHNOLOGIES-MOTION-CONTROL" }, { 0x001FFD, "Indigo Mobile Technologies Corp.", "INDIGO-MOBILE-TECHNOLOGIES" }, { 0x002221, "ITOH DENKI CO,LTD.", "ITOH-DENKI" }, { 0x00221B, "Morega Systems", "MOREGA" }, { 0x002220, "Mitac Technology Corp", "MITAC" }, { 0x002227, "uv-electronic GmbH", "UV" }, { 0x002214, "RINNAI KOREA", "RINNAI-KOREA" }, { 0x00220E, "Indigo Security Co., Ltd.", "INDIGO-SECURITY" }, { 0x002208, "Certicom Corp", "CERTICOM" }, { 0x002201, "Aksys Networks Inc", "AKSYS-NETWORKS" }, { 0x0021F7, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x0021A0, "Cisco Systems, Inc", "CISCO" }, { 0x00219C, "Honeywld Technology Corp.", "HONEYWLD" }, { 0x002192, "Baoding Galaxy Electronic Technology Co.,Ltd", "BAODING-GALAXY" }, { 0x00218C, "TopControl GMBH", "TOPCONTROL" }, { 0x00217F, "Intraco Technology Pte Ltd", "INTRACO-PTE" }, { 0x00217A, "Sejin Electron, Inc.", "SEJIN-ELECTRON" }, { 0x002179, "IOGEAR, Inc.", "IOGEAR" }, { 0x002173, "Ion Torrent Systems, Inc.", "ION-TORRENT" }, { 0x001FC3, "SmartSynch, Inc", "SMARTSYNCH" }, { 0x001FC8, "Up-Today Industrial Co., Ltd.", "UP-TODAY-INDUSTRIAL" }, { 0x001FC1, "Hanlong Technology Co.,LTD", "HANLONG" }, { 0x001FC2, "Jow Tong Technology Co Ltd", "JOW-TONG" }, { 0x001FBC, "EVGA Corporation", "EVGA" }, { 0x001FB0, "TimeIPS, Inc.", "TIMEIPS" }, { 0x001FB5, "I/O Interconnect Inc.", "I/O-INTERCONNECT" }, { 0x001FA9, "Atlanta DTH, Inc.", "ATLANTA-DTH" }, { 0x0021F1, "Tutus Data AB", "TUTUS-DATA-AB" }, { 0x0021F2, "EASY3CALL Technology Limited", "EASY3CALL" }, { 0x0021EB, "ESP SYSTEMS, LLC", "ESP-LLC" }, { 0x0021E5, "Display Solution AG", "DISPLAY-SOLUTION" }, { 0x0021E4, "I-WIN", "I-WIN" }, { 0x0021DF, "Martin Christ GmbH", "MARTIN-CHRIST" }, { 0x0021D8, "Cisco Systems, Inc", "CISCO" }, { 0x0021CC, "Flextronics International", "FLEXTRONICS" }, { 0x001FF1, "Paradox Hellas S.A.", "PARADOX-HELLAS" }, { 0x001FEC, "Synapse Électronique", "SYNAPSE-ÉLECTRONIQUE" }, { 0x001FE5, "In-Circuit GmbH", "IN-CIRCUIT" }, { 0x001FD9, "RSD Communications Ltd", "RSD-COMMUNICATION" }, { 0x001FD4, "4IPNET, INC.", "4IPNET" }, { 0x001FCF, "MSI Technology GmbH", "MSI" }, { 0x00213F, "A-Team Technology Ltd.", "A-TEAM" }, { 0x002139, "Escherlogic Inc.", "ESCHERLOGIC" }, { 0x002134, "Brandywine Communications", "BRANDYWINE-COMMUNICATION" }, { 0x00212F, "Phoebe Micro Inc.", "PHOEBE-MICRO" }, { 0x002129, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00212A, "Audiovox Corporation", "AUDIOVOX" }, { 0x002123, "Aerosat Avionics", "AEROSAT-AVIONICS" }, { 0x00216D, "Soltech Co., Ltd.", "SOLTECH" }, { 0x00216C, "ODVA", "ODVA" }, { 0x002167, "HWA JIN T&I Corp.", "HWA-JIN-T-I" }, { 0x002160, "Hidea Solutions Co. Ltd.", "HIDEA-SOLUTIONS" }, { 0x002154, "D-TACQ Solutions Ltd", "D-TACQ-SOLUTIONS" }, { 0x00214D, "Guangzhou Skytone Transmission Technology Com. Ltd.", "GUANGZHOU-SKYTONE-TRANSMISSION-COM" }, { 0x002148, "Kaco Solar Korea", "KACO-SOLAR-KOREA" }, { 0x0021C5, "3DSP Corp", "3DSP" }, { 0x0021BF, "Hitachi High-Tech Control Systems Corporation", "HITACHI-HIGH-TECH-CONTROL" }, { 0x0021C0, "Mobile Appliance, Inc.", "MOBILE-APPLIANCE" }, { 0x0021B9, "Universal Devices Inc.", "UNIVERSAL-DEVICES" }, { 0x0021B3, "Ross Controls", "ROSS-CONTROLS" }, { 0x0021B2, "Fiberblaze A/S", "FIBERBLAZE-A/S" }, { 0x0021AD, "Nordic ID Oy", "NORDIC-ID-OY" }, { 0x0021A6, "Videotec Spa", "VIDEOTEC-SPA" }, { 0x001F11, "OPENMOKO, INC.", "OPENMOKO" }, { 0x001F0B, "Federal State Unitary Enterprise Industrial UnionElectropribor", "FEDERAL-STATE-UNITARY-INDUSTRIAL-UNIONELECTROPRIBOR" }, { 0x001EFF, "Mueller-Elektronik GmbH & Co. KG", "MUELLER-ELEKTRONIK" }, { 0x001F06, "Integrated Dispatch Solutions", "INTEGRATED-DISPATCH-SOLUTIONS" }, { 0x001F05, "iTAS Technology Corp.", "ITAS" }, { 0x001EF3, "From2", "FROM2" }, { 0x001EF8, "Emfinity Inc.", "EMFINITY" }, { 0x001F7A, "WiWide Inc.", "WIWIDE" }, { 0x001F70, "Botik Technologies LTD", "BOTIK-TECHNOLOGIES" }, { 0x001F75, "GiBahn Media", "GIBAHN-MEDIA" }, { 0x001F64, "Beijing Autelan Technology Inc.", "BEIJING-AUTELAN" }, { 0x001F5E, "Dyna Technology Co.,Ltd.", "DYNA" }, { 0x001F58, "EMH Energiemesstechnik GmbH", "EMH-ENERGIEMESSTECHNIK" }, { 0x001F4C, "Roseman Engineering Ltd", "ROSEMAN-ENGINEERING" }, { 0x001F51, "HD Communications Corp", "HD-COMMUNICATION" }, { 0x001F4B, "Lineage Power", "LINEAGE-POWER" }, { 0x001F9F, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x001F93, "Xiotech Corporation", "XIOTECH" }, { 0x001F98, "DAIICHI-DENTSU LTD.", "DAIICHI-DENTSU" }, { 0x001F8C, "CCS Inc.", "CCS" }, { 0x001F8A, "Ellion Digital Inc.", "ELLION-DIGITAL" }, { 0x001F83, "Teleplan Technology Services Sdn Bhd", "TELEPLAN-SERVICES-SDN-BHD" }, { 0x001E30, "Shireen Inc", "SHIREEN" }, { 0x001E2B, "Radio Systems Design, Inc.", "RADIO-DESIGN" }, { 0x001E24, "Zhejiang Bell Technology Co.,ltd", "ZHEJIANG-BELL" }, { 0x001E18, "Radio Activity srl", "RADIO-ACTIVITY-SRL" }, { 0x001E1D, "East Coast Datacom, Inc.", "EAST-COAST-DATACOM" }, { 0x001E1E, "Honeywell Life Safety", "HONEYWELL-LIFE-SAFETY" }, { 0x001E13, "Cisco Systems, Inc", "CISCO" }, { 0x001E0E, "MAXI VIEW HOLDINGS LIMITED", "MAXI-VIEW-HOLDINGS" }, { 0x001E60, "Digital Lighting Systems, Inc", "DIGITAL-LIGHTING" }, { 0x001E59, "Silicon Turnkey Express, LLC", "SILICON-TURNKEY-EXPRESS-LLC" }, { 0x001E54, "TOYO ELECTRIC Corporation", "TOYO-ELECTRIC" }, { 0x001E4D, "Welkin Sciences, LLC", "WELKIN-SCIENCES-LLC" }, { 0x001E48, "Wi-Links", "WI-LINKS" }, { 0x001E43, "AISIN AW CO.,LTD.", "AISIN-AW" }, { 0x001E3E, "KMW Inc.", "KMW" }, { 0x001EC3, "Kozio, Inc.", "KOZIO" }, { 0x001EBC, "WINTECH AUTOMATION CO.,LTD.", "WINTECH-AUTOMATION" }, { 0x001EB7, "TBTech, Co., Ltd.", "TBTECH" }, { 0x001EB0, "ImesD Electronica S.L.", "IMESD-ELECTRONICA-S-L" }, { 0x001EA5, "ROBOTOUS, Inc.", "ROBOTOUS" }, { 0x001EAB, "TeleWell Oy", "TELEWELL-OY" }, { 0x001E9E, "ddm hopt + schuler Gmbh + Co. KG", "DDM-HOPT-+-SCHULER-+" }, { 0x001E99, "Vantanol Industrial Corporation", "VANTANOL-INDUSTRIAL" }, { 0x001F36, "Bellwin Information Co. Ltd.,", "BELLWIN-INFORMATION" }, { 0x001F35, "AIR802 LLC", "AIR802-LLC" }, { 0x001F30, "Travelping", "TRAVELPING" }, { 0x001F23, "Interacoustics", "INTERACOUSTICS" }, { 0x001F24, "DIGITVIEW TECHNOLOGY CO., LTD.", "DIGITVIEW" }, { 0x001F1D, "Atlas Material Testing Technology LLC", "ATLAS-MATERIAL-TESTING-LLC" }, { 0x001E92, "JEULIN S.A.", "JEULIN" }, { 0x001E89, "CRFS Limited", "CRFS" }, { 0x001E84, "Pika Technologies Inc.", "PIKA-TECHNOLOGIES" }, { 0x001E83, "LAN/MAN Standards Association (LMSC)", "LAN/MAN-STANDARDS-ASSOCIATION-LMSC" }, { 0x001E6C, "Opaque Systems", "OPAQUE" }, { 0x001EE6, "Shenzhen Advanced Video Info-Tech Co., Ltd.", "SHENZHEN-ADVANCED-VIDEO-INFO-TECH" }, { 0x001EE0, "Urmet Domus SpA", "URMET-DOMUS-SPA" }, { 0x001EDB, "Giken Trastem Co., Ltd.", "GIKEN-TRASTEM" }, { 0x001ED6, "Alentec & Orion AB", "ALENTEC-ORION-AB" }, { 0x001ECF, "PHILIPS ELECTRONICS UK LTD", "PHILIPS-ELECTRONICS-UK" }, { 0x001C96, "Linkwise Technology Pte Ltd", "LINKWISE-PTE" }, { 0x001C91, "Gefen Inc.", "GEFEN" }, { 0x001C8A, "Cirrascale Corporation", "CIRRASCALE" }, { 0x001C84, "STL Solution Co.,Ltd.", "STL-SOLUTION" }, { 0x001C80, "New Business Division/Rhea-Information CO., LTD.", "NEW-BUSINESS-DIVISION/RHEA-INFORMATION" }, { 0x001C76, "The Wandsworth Group Ltd", "THE-WANDSWORTH-GROUP" }, { 0x001C6F, "Emfit Ltd", "EMFIT" }, { 0x001C71, "Emergent Electronics", "EMERGENT-ELECTRONICS" }, { 0x001C70, "NOVACOMM LTDA", "NOVACOMM-LTDA" }, { 0x001C6A, "Weiss Engineering Ltd.", "WEISS-ENGINEERING" }, { 0x001D59, "Mitra Energy & Infrastructure", "MITRA-ENERGY-INFRASTRUCTURE" }, { 0x001D52, "Defzone B.V.", "DEFZONE" }, { 0x001D4C, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x001D48, "Sensor-Technik Wiedemann GmbH", "SENSOR-TECHNIK-WIEDEMANN" }, { 0x001D41, "Hardy Instruments", "HARDY-INSTRUMENTS" }, { 0x001D3C, "Muscle Corporation", "MUSCLE" }, { 0x001D30, "YX Wireless S.A.", "YX-WIRELESS" }, { 0x001D35, "Viconics Electronics Inc.", "VICONICS-ELECTRONICS" }, { 0x001D2F, "QuantumVision Corporation", "QUANTUMVISION" }, { 0x001CD3, "ZP Engineering SEL", "ZP-ENGINEERING-SEL" }, { 0x001CCE, "By Techdesign", "BY-TECHDESIGN" }, { 0x001CC7, "Rembrandt Technologies, LLC d/b/a REMSTREAM", "REMBRANDT-TECHNOLOGIES-LLC-D/B/A-REMSTREAM" }, { 0x001CC2, "Part II Research, Inc.", "PART-II-RESEARCH" }, { 0x001CBB, "MusicianLink", "MUSICIANLINK" }, { 0x001CB1, "Cisco Systems, Inc", "CISCO" }, { 0x001CB7, "USC DigiArk Corporation", "USC-DIGIARK" }, { 0x001CA3, "Terra", "TERRA" }, { 0x001CA5, "Zygo Corporation", "ZYGO" }, { 0x001CAA, "Bellon Pty Ltd", "BELLON-PTY" }, { 0x001C9D, "Liecthi AG", "LIECTHI" }, { 0x001DCA, "PAV Electronics Limited", "PAV-ELECTRONICS" }, { 0x001DC4, "AIOI Systems Co., Ltd.", "AIOI" }, { 0x001DC3, "RIKOR TV, Ltd", "RIKOR-TV" }, { 0x001DB1, "Crescendo Networks", "CRESCENDO-NETWORKS" }, { 0x001DB2, "HOKKAIDO ELECTRIC ENGINEERING CO.,LTD.", "HOKKAIDO-ELECTRIC-ENGINEERING" }, { 0x001DB7, "Tendril Networks, Inc.", "TENDRIL-NETWORKS" }, { 0x001DAD, "Sinotech Engineering Consultants, Inc. Geotechnical Enginee", "SINOTECH-ENGINEERING-CONSULTANTS-GEOTECHNICAL-ENGINEE" }, { 0x001DA8, "Takahata Electronics Co.,Ltd", "TAKAHATA-ELECTRONICS" }, { 0x001DA7, "Seamless Internet", "SEAMLESS-INTERNET" }, { 0x001DA1, "Cisco Systems, Inc", "CISCO" }, { 0x001D9A, "GODEX INTERNATIONAL CO., LTD", "GODEX" }, { 0x001D95, "Flash, Inc.", "FLASH" }, { 0x001D8E, "Alereon, Inc.", "ALEREON" }, { 0x001D87, "VigTech Labs Sdn Bhd", "VIGTECH-LABS-SDN-BHD" }, { 0x001D88, "Clearwire", "CLEARWIRE" }, { 0x001D7E, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001D7D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001D6C, "ClariPhy Communications, Inc.", "CLARIPHY-COMMUNICATION" }, { 0x001D71, "Cisco Systems, Inc", "CISCO" }, { 0x001D78, "Invengo Information Technology Co.,Ltd", "INVENGO-INFORMATION" }, { 0x001D65, "Microwave Radio Communications", "MICROWAVE-RADIO-COMMUNICATION" }, { 0x001D5E, "COMING MEDIA CORP.", "COMING-MEDIA" }, { 0x001D29, "Doro AB", "DORO-AB" }, { 0x001D22, "Foss Analytical A/S", "FOSS-ANALYTICAL-A/S" }, { 0x001D1D, "Inter-M Corporation", "INTER-M" }, { 0x001D16, "SFR", "SFR" }, { 0x001D10, "LightHaus Logic, Inc.", "LIGHTHAUS-LOGIC" }, { 0x001D0A, "Davis Instruments, Inc.", "DAVIS-INSTRUMENTS" }, { 0x001D03, "Design Solutions Inc.", "DESIGN-SOLUTIONS" }, { 0x001CFE, "Quartics Inc", "QUARTICS" }, { 0x001CF7, "AudioScience", "AUDIOSCIENCE" }, { 0x001CE6, "INNES", "INNES" }, { 0x001CE1, "INDRA SISTEMAS, S.A.", "INDRA-SISTEMAS" }, { 0x001CDA, "Exegin Technologies Limited", "EXEGIN-TECHNOLOGIES" }, { 0x001E07, "Winy Technology Co., Ltd.", "WINY" }, { 0x001E02, "Sougou Keikaku Kougyou Co.,Ltd.", "SOUGOU-KEIKAKU-KOUGYOU" }, { 0x001E01, "Renesas Technology Sales Co., Ltd.", "RENESAS-SALES" }, { 0x001DFB, "NETCLEUS Systems Corporation", "NETCLEUS" }, { 0x001DF4, "Magellan Technology Pty Limited", "MAGELLAN-PTY" }, { 0x001DEF, "TRIMM, INC.", "TRIMM" }, { 0x001DE8, "Nikko Denki Tsushin Corporation(NDTC)", "NIKKO-DENKI-TSUSHIN-NDTC" }, { 0x001DE3, "Intuicom", "INTUICOM" }, { 0x001DDD, "DAT H.K. LIMITED", "DAT-H-K" }, { 0x001AF8, "Copley Controls Corporation", "COPLEY-CONTROLS" }, { 0x001AF3, "Samyoung Electronics", "SAMYOUNG-ELECTRONICS" }, { 0x001AEE, "Shenztech Ltd", "SHENZTECH" }, { 0x001AE2, "Cisco Systems, Inc", "CISCO" }, { 0x001AE7, "Aztek Networks, Inc.", "AZTEK-NETWORKS" }, { 0x001AD4, "iPOX Technology Co., Ltd.", "IPOX" }, { 0x001AD6, "JIAGNSU AETNA ELECTRIC CO.,LTD", "JIAGNSU-AETNA-ELECTRIC" }, { 0x001B97, "Violin Technologies", "VIOLIN-TECHNOLOGIES" }, { 0x001B9C, "SATEL sp. z o.o.", "SATEL-SP-Z-O-O" }, { 0x001B90, "Cisco Systems, Inc", "CISCO" }, { 0x001B86, "Bosch Access Systems GmbH", "BOSCH-ACCESS" }, { 0x001B8B, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x001B7F, "TMN Technologies Telecomunicacoes Ltda", "TMN-TECHNOLOGIES-TELECOMUNICACOES-LTDA" }, { 0x001B81, "DATAQ Instruments, Inc.", "DATAQ-INSTRUMENTS" }, { 0x001B80, "LORD Corporation", "LORD" }, { 0x001B73, "DTL Broadcast Ltd", "DTL-BROADCAST" }, { 0x001B6E, "Anue Systems, Inc.", "ANUE" }, { 0x001B67, "Cisco Systems Inc", "CISCO" }, { 0x001B60, "NAVIGON AG", "NAVIGON" }, { 0x001B54, "Cisco Systems, Inc", "CISCO" }, { 0x001B48, "Shenzhen Lantech Electronics Co., Ltd.", "SHENZHEN-LANTECH-ELECTRONICS" }, { 0x001B4D, "Areca Technology Corporation", "ARECA" }, { 0x001B41, "General Infinity Co.,Ltd.", "GENERAL-INFINITY" }, { 0x001B3C, "Software Technologies Group,Inc.", "SOFTWARE-TECHNOLOGIES-GROUP" }, { 0x001B35, "ChongQing JINOU Science & Technology Development CO.,Ltd", "CHONGQING-JINOU-SCIENCE-DEVELOPMENT" }, { 0x001B2E, "Sinkyo Electron Inc", "SINKYO-ELECTRON" }, { 0x001B30, "Solitech Inc.", "SOLITECH" }, { 0x001BC7, "StarVedia Technology Inc.", "STARVEDIA" }, { 0x001BC6, "Strato Rechenzentrum AG", "STRATO-RECHENZENTRUM" }, { 0x001BBB, "RFTech Co.,Ltd", "RFTECH" }, { 0x001BB6, "Bird Electronic Corp.", "BIRD" }, { 0x001BAA, "XenICs nv", "XENICS-NV" }, { 0x001BA3, "Flexit Group GmbH", "FLEXIT-GROUP" }, { 0x001C63, "TRUEN", "TRUEN" }, { 0x001C57, "Cisco Systems, Inc", "CISCO" }, { 0x001C5E, "ASTON France", "ASTON-FRANCE" }, { 0x001C46, "QTUM", "QTUM" }, { 0x001C3A, "Element Labs, Inc.", "ELEMENT-LABS" }, { 0x001C41, "scemtec Transponder Technology GmbH", "SCEMTEC-TRANSPONDER" }, { 0x001C34, "HUEY CHIAO INTERNATIONAL CO., LTD.", "HUEY-CHIAO" }, { 0x001C33, "Sutron", "SUTRON" }, { 0x001BF7, "Lund IP Products AB", "LUND-IP-PRODUCTS-AB" }, { 0x001BF9, "Intellitect Water Ltd", "INTELLITECT-WATER" }, { 0x001BF8, "Digitrax Inc.", "DIGITRAX" }, { 0x001BF2, "KWORLD COMPUTER CO., LTD", "KWORLD" }, { 0x001BEB, "DMP Electronics INC.", "DMP-ELECTRONICS" }, { 0x001BE6, "VR AG", "VR" }, { 0x001BDF, "Iskra Sistemi d.d.", "ISKRA-SISTEMI-D-D" }, { 0x001BD8, "DVTel LTD", "DVTEL" }, { 0x001BCC, "KINGTEK CCTV ALLIANCE CO., LTD.", "KINGTEK-CCTV-ALLIANCE" }, { 0x001AC8, "ISL (Instrumentation Scientifique de Laboratoire)", "ISL-INSTRUMENTATION-SCIENTIFIQUE-DE-LABORATOIRE" }, { 0x001ACF, "C.T. ELETTRONICA", "C-T-ELETTRONICA" }, { 0x001AC3, "Scientific-Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x001AB9, "PMC", "PMC" }, { 0x001ABE, "COMPUTER HI-TECH INC.", "HI-TECH" }, { 0x001AAB, "eWings s.r.l.", "EWINGS-S-R-L" }, { 0x001AB2, "Cyber Solutions Inc.", "CYBER-SOLUTIONS" }, { 0x001AB7, "Ethos Networks LTD.", "ETHOS-NETWORKS" }, { 0x001C2E, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001C27, "Sunell Electronics Co.", "SUNELL-ELECTRONICS" }, { 0x001C22, "Aeris Elettronica s.r.l.", "AERIS-ELETTRONICA-S-R-L" }, { 0x001C1D, "CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD", "CHENZHOU-GOSPELL-DIGITAL" }, { 0x001C18, "Sicert S.r.L.", "SICERT-S-R-L" }, { 0x001C0A, "Shenzhen AEE Technology Co.,Ltd.", "SHENZHEN-AEE" }, { 0x001C05, "Nonin Medical Inc.", "NONIN-MEDICAL" }, { 0x001BFE, "Zavio Inc.", "ZAVIO" }, { 0x001B29, "Avantis.Co.,Ltd", "AVANTIS" }, { 0x001B23, "SimpleComTools", "SIMPLECOMTOOLS" }, { 0x001B1E, "HART Communication Foundation", "HART-COMMUNICATION-FOUNDATION" }, { 0x001B12, "Apprion", "APPRION" }, { 0x001B0B, "Phidgets Inc.", "PHIDGETS" }, { 0x001B10, "ShenZhen Kang Hui Technology Co.,ltd", "SHENZHEN-KANG-HUI" }, { 0x001B04, "Affinity International S.p.a", "AFFINITY-S-P-A" }, { 0x001AFF, "Wizyoung Tech.", "WIZYOUNG-TECH" }, { 0x001AFD, "EVOLIS", "EVOLIS" }, { 0x00191C, "Sensicast Systems", "SENSICAST" }, { 0x00191E, "Beyondwiz Co., Ltd.", "BEYONDWIZ" }, { 0x001923, "Phonex Korea Co., LTD.", "PHONEX-KOREA" }, { 0x00192A, "Antiope Associates", "ANTIOPE-ASSOCIATES" }, { 0x001910, "Knick Elektronische Messgeraete GmbH & Co. KG", "KNICK-ELEKTRONISCHE-MESSGERAETE" }, { 0x001917, "Posiflex Inc.", "POSIFLEX" }, { 0x001909, "DEVI - Danfoss A/S", "DEVI---DANFOSS-A/S" }, { 0x00190B, "Southern Vision Systems, Inc.", "SOUTHERN-VISION" }, { 0x001904, "WB Electronics Sp. z o.o.", "WB-ELECTRONICS-SP-Z-O-O" }, { 0x0018FF, "PowerQuattro Co.", "POWERQUATTRO" }, { 0x0018FA, "Yushin Precision Equipment Co.,Ltd.", "YUSHIN-PRECISION-EQUIPMENT" }, { 0x001955, "Cisco Systems, Inc", "CISCO" }, { 0x00194E, "Ultra Electronics - TCS (Tactical Communication Systems)", "ULTRA-ELECTRONICS---TCS-TACTICAL-COMMUNICATION" }, { 0x001950, "Harman Multimedia", "HARMAN-MULTIMEDIA" }, { 0x001949, "TENTEL COMTECH CO., LTD.", "TENTEL-COMTECH" }, { 0x001942, "ON SOFTWARE INTERNATIONAL LIMITED", "ON-SOFTWARE" }, { 0x00193D, "GMC Guardian Mobility Corp.", "GMC-GUARDIAN-MOBILITY" }, { 0x001936, "STERLITE OPTICAL TECHNOLOGIES LIMITED", "STERLITE-OPTICAL-TECHNOLOGIES" }, { 0x00193B, "Wilibox Deliberant Group LLC", "WILIBOX-DELIBERANT-GROUP-LLC" }, { 0x00192F, "Cisco Systems, Inc", "CISCO" }, { 0x001A20, "CMOTECH Co. Ltd.", "CMOTECH" }, { 0x001A22, "eQ-3 Entwicklung GmbH", "EQ-3-ENTWICKLUNG" }, { 0x001A14, "Xin Hua Control Engineering Co.,Ltd.", "XIN-HUA-CONTROL-ENGINEERING" }, { 0x001A0D, "HandHeld entertainment, Inc.", "HANDHELD-ENTERTAINMENT" }, { 0x001A0F, "Sistemas Avanzados de Control, S.A.", "SISTEMAS-AVANZADOS-DE-CONTROL" }, { 0x001A08, "Simoco Ltd.", "SIMOCO" }, { 0x001A01, "Smiths Medical", "SMITHS-MEDICAL" }, { 0x0019FC, "PT. Ufoakses Sukses Luarbiasa", "PT-UFOAKSES-SUKSES-LUARBIASA" }, { 0x0019EF, "SHENZHEN LINNKING ELECTRONICS CO.,LTD", "SHENZHEN-LINNKING-ELECTRONICS" }, { 0x0019F1, "Star Communication Network Technology Co.,Ltd", "STAR-COMMUNICATION-NETWORK" }, { 0x0019F6, "Acconet (PTE) Ltd", "ACCONET-PTE" }, { 0x001A76, "SDT information Technology Co.,LTD.", "SDT-INFORMATION" }, { 0x001A6F, "MI.TEL s.r.l.", "MI-TEL-S-R-L" }, { 0x001A6A, "Tranzas, Inc.", "TRANZAS" }, { 0x001A63, "Elster Solutions, LLC,", "ELSTER-SOLUTIONS-LLC" }, { 0x001A5E, "Thincom Technology Co.,Ltd", "THINCOM" }, { 0x001A57, "Matrix Design Group, LLC", "MATRIX-DESIGN-GROUP-LLC" }, { 0x001A5C, "Euchner GmbH+Co. KG", "EUCHNER-+" }, { 0x001A50, "PheeNet Technology Corp.", "PHEENET" }, { 0x001A9D, "Skipper Wireless, Inc.", "SKIPPER-WIRELESS" }, { 0x001AA2, "Cisco Systems, Inc", "CISCO" }, { 0x001A91, "FusionDynamic Ltd.", "FUSIONDYNAMIC" }, { 0x001A96, "ECLER S.A.", "ECLER" }, { 0x001A90, "Trópico Sistemas e Telecomunicações da Amazônia LTDA. ", "TRóPICO-SISTEMAS-E-TELECOMUNICAçõES-DA-AMAZôNIA-LTDA" }, { 0x001A8C, "Sophos Ltd", "SOPHOS" }, { 0x001A85, "NV Michel Van de Wiele", "NV-MICHEL-VAN-DE-WIELE" }, { 0x001A87, "Canhold International Limited", "CANHOLD" }, { 0x001A86, "AdvancedIO Systems Inc", "ADVANCEDIO" }, { 0x0019B5, "Famar Fueguina S.A.", "FAMAR-FUEGUINA" }, { 0x0019BA, "Paradox Security Systems Ltd", "PARADOX-SECURITY" }, { 0x0019A2, "ORDYN TECHNOLOGIES", "ORDYN-TECHNOLOGIES" }, { 0x0019AE, "Hopling Technologies b.v.", "HOPLING-TECHNOLOGIES" }, { 0x0019A7, "ITU-T", "ITU-T" }, { 0x001996, "TurboChef Technologies Inc.", "TURBOCHEF-TECHNOLOGIES" }, { 0x00199B, "Diversified Technical Systems, Inc.", "DIVERSIFIED-TECHNICAL" }, { 0x001991, "avinfo", "AVINFO" }, { 0x00198A, "Northrop Grumman Systems Corp.", "NORTHROP-GRUMMAN" }, { 0x00198C, "iXSea", "IXSEA" }, { 0x001985, "IT Watchdogs, Inc", "IT-WATCHDOGS" }, { 0x00196B, "Danpex Corporation", "DANPEX" }, { 0x001966, "Asiarock Technology Limited", "ASIAROCK" }, { 0x00195C, "Innotech Corporation", "INNOTECH" }, { 0x001961, "Blaupunkt Embedded Systems GmbH", "BLAUPUNKT-EMBEDDED" }, { 0x0019DE, "MOBITEK", "MOBITEK" }, { 0x0019EA, "TeraMage Technologies Co., Ltd.", "TERAMAGE-TECHNOLOGIES" }, { 0x0019D0, "Cathexis", "CATHEXIS" }, { 0x0019D7, "FORTUNETEK CO., LTD", "FORTUNETEK" }, { 0x0019B3, "Stanford Research Systems", "STANFORD-RESEARCH" }, { 0x001A44, "JWTrading Co., Ltd", "JWTRADING" }, { 0x001A49, "Micro Vision Co.,LTD", "MICRO-VISION" }, { 0x001A3D, "Ajin Vision Co.,Ltd", "AJIN-VISION" }, { 0x001A31, "SCAN COIN Industries AB", "SCAN-COIN-INDUSTRIES-AB" }, { 0x001A38, "Sanmina-SCI", "SANMINA-SCI" }, { 0x001A2C, "SATEC Co.,LTD", "SATEC" }, { 0x001A27, "Ubistar", "UBISTAR" }, { 0x0017AE, "GAI-Tronics", "GAI-TRONICS" }, { 0x0017A2, "Camrivox Ltd.", "CAMRIVOX" }, { 0x0017A7, "Mobile Computing Promotion Consortium", "MOBILE-COMPUTING-PROMOTION-CONSORTIUM" }, { 0x00179D, "Kelman Limited", "KELMAN" }, { 0x001791, "LinTech GmbH", "LINTECH" }, { 0x001796, "Rittmeyer AG", "RITTMEYER" }, { 0x001798, "Azonic Technology Co., LTD", "AZONIC" }, { 0x00178A, "DARTS TECHNOLOGIES CORP.", "DARTS-TECHNOLOGIES" }, { 0x00177E, "Meshcom Technologies Inc.", "MESHCOM-TECHNOLOGIES" }, { 0x001785, "Sparr Electronics Ltd", "SPARR-ELECTRONICS" }, { 0x001809, "CRESYN", "CRESYN" }, { 0x00180E, "Avega Systems", "AVEGA" }, { 0x001810, "IPTrade S.A.", "IPTRADE" }, { 0x0017F6, "Pyramid Meriden Inc.", "PYRAMID-MERIDEN" }, { 0x0017FB, "FA", "FA" }, { 0x0017FD, "Amulet Hotkey", "AMULET-HOTKEY" }, { 0x0017EF, "IBM Corp", "IBM" }, { 0x0017D7, "ION Geophysical Corporation Inc.", "ION-GEOPHYSICAL" }, { 0x0017DC, "DAEMYUNG ZERO1", "DAEMYUNG-ZERO1" }, { 0x0017DE, "Advantage Six Ltd", "ADVANTAGE-SIX" }, { 0x0018C3, "CS Corporation", "CS" }, { 0x0018CA, "Viprinet GmbH", "VIPRINET" }, { 0x0018BE, "ANSA Corporation", "ANSA" }, { 0x0018B2, "ADEUNIS RF", "ADEUNIS-RF" }, { 0x0018B7, "D3 LED, LLC", "D3-LED-LLC" }, { 0x0018AB, "BEIJING LHWT MICROELECTRONICS INC.", "BEIJING-LHWT-MICROELECTRONICS" }, { 0x0018A6, "Persistent Systems, LLC", "PERSISTENT-LLC" }, { 0x001895, "Hansun Technologies Inc.", "HANSUN-TECHNOLOGIES" }, { 0x00189A, "HANA Micron Inc.", "HANA-MICRON" }, { 0x0018E7, "Cameo Communications, INC.", "CAMEO-COMMUNICATION" }, { 0x0018EE, "Videology Imaging Solutions, Inc.", "VIDEOLOGY-IMAGING-SOLUTIONS" }, { 0x0018E2, "Topdata Sistemas de Automacao Ltda", "TOPDATA-SISTEMAS-DE-AUTOMACAO-LTDA" }, { 0x0018DB, "EPL Technology Ltd", "EPL" }, { 0x0018E0, "ANAVEO", "ANAVEO" }, { 0x0018CF, "Baldor Electric Company", "BALDOR-ELECTRIC-COMPANY" }, { 0x0018D4, "Unified Display Interface SIG", "UNIFIED-DISPLAY-INTERFACE-SIG" }, { 0x00184A, "Catcher, Inc.", "CATCHER" }, { 0x00184C, "Bogen Communications", "BOGEN-COMMUNICATION" }, { 0x001845, "Pulsar-Telecom LLC.", "PULSAR-TELECOM-LLC" }, { 0x00183E, "Digilent, Inc", "DIGILENT" }, { 0x001828, "e2v technologies (UK) ltd.", "E2V-TECHNOLOGIES-UK" }, { 0x00182D, "Artec Design", "ARTEC-DESIGN" }, { 0x001821, "SINDORICOH", "SINDORICOH" }, { 0x001815, "GZ Technologies, Inc.", "GZ-TECHNOLOGIES" }, { 0x00181C, "Exterity Limited", "EXTERITY" }, { 0x001772, "ASTRO Strobel Kommunikationssysteme GmbH", "ASTRO-STROBEL-KOMMUNIKATIONSSYSTEME" }, { 0x001777, "Obsidian Research Corporation", "OBSIDIAN-RESEARCH" }, { 0x00176E, "DUCATI SISTEMI", "DUCATI-SISTEMI" }, { 0x001762, "Solar Technology, Inc.", "SOLAR" }, { 0x001769, "Cymphonix Corp", "CYMPHONIX" }, { 0x00175D, "Dongseo system.", "DONGSEO-SYSTEM" }, { 0x00175B, "ACS Solutions Switzerland Ltd.", "ACS-SOLUTIONS-SWITZERLAND" }, { 0x001756, "Vinci Labs Oy", "VINCI-LABS-OY" }, { 0x00174F, "iCatch Inc.", "ICATCH" }, { 0x0017CD, "CEC Wireless R&D Ltd.", "CEC-WIRELESS-R-D" }, { 0x0017D2, "THINLINX PTY LTD", "THINLINX-PTY" }, { 0x0017C6, "Cross Match Technologies Inc", "CROSS-MATCH-TECHNOLOGIES" }, { 0x0017BA, "SEDO CO., LTD.", "SEDO" }, { 0x0017BF, "Coherent Research Limited", "COHERENT-RESEARCH" }, { 0x0017C1, "CM Precision Technology LTD.", "CM-PRECISION" }, { 0x0017B3, "Aftek Infosys Limited", "AFTEK-INFOSYS" }, { 0x00186A, "Global Link Digital Technology Co,.LTD", "GLOBAL-LINK-DIGITAL" }, { 0x00186F, "Setha Industria Eletronica LTDA", "SETHA-INDUSTRIA-ELETRONICA-LTDA" }, { 0x001876, "WowWee Ltd.", "WOWWEE" }, { 0x001869, "KINGJIM", "KINGJIM" }, { 0x001864, "Eaton Corporation", "EATON" }, { 0x00185D, "TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD.", "TAIGUEN-SHEN-ZHEN" }, { 0x001851, "SWsoft", "SWSOFT" }, { 0x001858, "TagMaster AB", "TAGMASTER-AB" }, { 0x00189F, "Lenntek Corporation", "LENNTEK" }, { 0x00188E, "Ekahau, Inc.", "EKAHAU" }, { 0x001887, "Metasystem SpA", "METASYSTEM-SPA" }, { 0x001889, "WinNet Solutions Limited", "WINNET-SOLUTIONS" }, { 0x00187B, "4NSYS Co. Ltd.", "4NSYS" }, { 0x001661, "Novatium Solutions (P) Ltd", "NOVATIUM-SOLUTIONS-P" }, { 0x001663, "KBT Mobile", "KBT-MOBILE" }, { 0x001668, "Eishin Electronics", "EISHIN-ELECTRONICS" }, { 0x001662, "Liyuh Technology Ltd.", "LIYUH" }, { 0x00165C, "Trackflow Ltd", "TRACKFLOW" }, { 0x001655, "FUHO TECHNOLOGY Co., LTD", "FUHO" }, { 0x0015E4, "Zimmer Elektromedizin", "ZIMMER-ELEKTROMEDIZIN" }, { 0x0015DA, "IRITEL A.D.", "IRITEL-A-D" }, { 0x0015DF, "Clivet S.p.A.", "CLIVET-S-P-A" }, { 0x0015D3, "Pantech&Curitel Communications, Inc.", "PANTECH-CURITEL-COMMUNICATION" }, { 0x0015C7, "Cisco Systems, Inc", "CISCO" }, { 0x0015C0, "DIGITAL TELEMEDIA CO.,LTD.", "DIGITAL-TELEMEDIA" }, { 0x0015BA, "iba AG", "IBA" }, { 0x00174A, "SOCOMEC", "SOCOMEC" }, { 0x001743, "Deck Srl", "DECK-SRL" }, { 0x00173D, "Neology", "NEOLOGY" }, { 0x00173E, "LeucotronEquipamentos Ltda.", "LEUCOTRONEQUIPAMENTOS-LTDA" }, { 0x001738, "International Business Machines", "BUSINESS-MACHINES" }, { 0x00172C, "TAEJIN INFOTECH", "TAEJIN-INFOTECH" }, { 0x001720, "Image Sensing Systems, Inc.", "IMAGE-SENSING" }, { 0x001725, "Liquid Computing", "LIQUID-COMPUTING" }, { 0x001701, "KDE, Inc.", "KDE" }, { 0x001703, "MOSDAN Internation Co.,Ltd", "MOSDAN-INTERNATION" }, { 0x0016FC, "TOHKEN CO.,LTD.", "TOHKEN" }, { 0x0016F0, "Dell", "DELL" }, { 0x0016F5, "Dalian Golden Hualu Digital Technology Co.,Ltd", "DALIAN-GOLDEN-HUALU-DIGITAL" }, { 0x0016E9, "Tiba Medical Inc", "TIBA-MEDICAL" }, { 0x0016E4, "VANGUARD SECURITY ENGINEERING CORP.", "VANGUARD-SECURITY-ENGINEERING" }, { 0x0016DD, "Gigabeam Corporation", "GIGABEAM" }, { 0x0016E2, "American Fibertek, Inc.", "AMERICAN-FIBERTEK" }, { 0x0016D8, "Senea AB", "SENEA-AB" }, { 0x00169C, "Cisco Systems, Inc", "CISCO" }, { 0x00169E, "TV One Ltd", "TV-ONE" }, { 0x0016A3, "Ingeteam Transmission&Distribution, S.A.", "INGETEAM-TRANSMISSION-DISTRIBUTION" }, { 0x001690, "J-TEK INCORPORATION", "J-TEK-INCORPORATION" }, { 0x001697, "NEC Corporation", "NEC" }, { 0x001689, "Pilkor Electronics Co., Ltd", "PILKOR-ELECTRONICS" }, { 0x00168B, "Paralan Corporation", "PARALAN" }, { 0x001684, "Donjin Co.,Ltd.", "DONJIN" }, { 0x00167D, "Sky-Line Information Co., Ltd.", "SKY-LINE-INFORMATION" }, { 0x001678, "SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD", "SHENZHEN-BAOAN-GAOKE-ELECTRONICS" }, { 0x001649, "SetOne GmbH", "SETONE" }, { 0x00163F, "CReTE SYSTEMS Inc.", "CRETE" }, { 0x001638, "TECOM Co., Ltd.", "TECOM" }, { 0x001633, "Oxford Diagnostics Ltd.", "OXFORD-DIAGNOSTICS" }, { 0x00162C, "Xanboo", "XANBOO" }, { 0x001627, "embedded-logic DESIGN AND MORE GmbH", "EMBEDDED-LOGIC-DESIGN-AND-MORE" }, { 0x001619, "Lancelan Technologies S.L.", "LANCELAN-TECHNOLOGIES-S-L" }, { 0x001614, "Picosecond Pulse Labs", "PICOSECOND-PULSE-LABS" }, { 0x001719, "Audiocodes USA, Inc", "AUDIOCODES-USA" }, { 0x00171E, "Theo Benning GmbH & Co. KG", "THEO-BENNING" }, { 0x001712, "ISCO International", "ISCO" }, { 0x00170D, "Dust Networks Inc.", "DUST-NETWORKS" }, { 0x00160F, "BADGER METER INC", "BADGER-METER" }, { 0x00160A, "SWEEX Europe BV", "SWEEX-EUROPE" }, { 0x001603, "COOLKSKY Co., LTD", "COOLKSKY" }, { 0x0015F7, "Wintecronics Ltd.", "WINTECRONICS" }, { 0x0015F0, "EGO BV", "EGO" }, { 0x0015EA, "Tellumat (Pty) Ltd", "TELLUMAT-PTY" }, { 0x0016C5, "Shenzhen Xing Feng Industry Co.,Ltd", "SHENZHEN-XING-FENG-INDUSTRY" }, { 0x0016C7, "Cisco Systems, Inc", "CISCO" }, { 0x0016CC, "Xcute Mobile Corp.", "XCUTE-MOBILE" }, { 0x0016C0, "Semtech Corporation", "SEMTECH" }, { 0x0016B4, "Private", "PRIVATE" }, { 0x0016A8, "CWT CO., LTD.", "CWT" }, { 0x0016AD, "BT-Links Company Limited", "BT-LINKS-COMPANY" }, { 0x001553, "Cytyc Corporation", "CYTYC" }, { 0x001555, "DFM GmbH", "DFM" }, { 0x00154E, "IEC", "IEC" }, { 0x001547, "AiZen Solutions Inc.", "AIZEN-SOLUTIONS" }, { 0x001542, "MICROHARD S.R.L.", "MICROHARD-S-R-L" }, { 0x00153B, "EMH metering GmbH & Co. KG", "EMH-METERING" }, { 0x001534, "A Beltrónica-Companhia de Comunicações, Lda", "A-BELTRóNICA-COMPANHIA-DE-COMUNICAçõES-LDA" }, { 0x001440, "ATOMIC Corporation", "ATOMIC" }, { 0x001434, "Keri Systems, Inc", "KERI" }, { 0x00142D, "Toradex AG", "TORADEX" }, { 0x001426, "NL Technology", "NL" }, { 0x001421, "Total Wireless Technologies Pte. Ltd.", "TOTAL-WIRELESS-TECHNOLOGIES-PTE" }, { 0x00141C, "Cisco Systems, Inc", "CISCO" }, { 0x001583, "IVT corporation", "IVT" }, { 0x00157E, "Weidmüller Interface GmbH & Co. KG", "WEIDMüLLER-INTERFACE" }, { 0x001579, "Lunatone Industrielle Elektronik GmbH", "LUNATONE-INDUSTRIELLE-ELEKTRONIK" }, { 0x001574, "Horizon Semiconductors Ltd.", "HORIZON-SEMICONDUCTORS" }, { 0x001566, "A-First Technology Co., Ltd.", "A-FIRST" }, { 0x001561, "JJPlus Corporation", "JJPLUS" }, { 0x00155A, "DAINIPPON PHARMACEUTICAL CO., LTD.", "DAINIPPON-PHARMACEUTICAL" }, { 0x001554, "Atalum Wireless S.A.", "ATALUM-WIRELESS" }, { 0x001528, "Beacon Medical Products LLC d.b.a. BeaconMedaes", "BEACON-MEDICAL-PRODUCTS-LLC-D-B-A-BEACONMEDAES" }, { 0x001521, "Horoquartz", "HOROQUARTZ" }, { 0x001523, "Meteor Communications Corporation", "METEOR-COMMUNICATION" }, { 0x001522, "Dea Security", "DEA-SECURITY" }, { 0x00151C, "LENECO", "LENECO" }, { 0x001512, "Zurich University of Applied Sciences", "ZURICH-UNIVERSITY-OF-APPLIED-SCIENCES" }, { 0x00150B, "SAGE INFOTECH LTD.", "SAGE-INFOTECH" }, { 0x001506, "Neo Photonics", "NEO-PHOTONICS" }, { 0x0014FF, "Precise Automation, Inc.", "PRECISE-AUTOMATION" }, { 0x0014F8, "Scientific Atlanta", "SCIENTIFIC-ATLANTA" }, { 0x0014F3, "ViXS Systems Inc", "VIXS" }, { 0x0014E7, "Stolinx,. Inc", "STOLINX" }, { 0x0014EC, "Acro Telecom", "ACRO-TELECOM" }, { 0x0014E2, "datacom systems inc.", "DATACOM" }, { 0x0014D6, "Jeongmin Electronics Co.,Ltd.", "JEONGMIN-ELECTRONICS" }, { 0x0014DB, "Elma Trenew Electronic GmbH", "ELMA-TRENEW" }, { 0x0014DD, "Covergence Inc.", "COVERGENCE" }, { 0x0014DC, "Communication System Design & Manufacturing (CSDM)", "COMMUNICATION-SYSTEM-DESIGN-MANUFACTURING-CSDM" }, { 0x0014CF, "INVISIO Communications", "INVISIO-COMMUNICATION" }, { 0x0014CA, "Key Radio Systems Limited", "KEY-RADIO" }, { 0x0014C3, "Seagate Technology", "SEAGATE" }, { 0x0014BC, "SYNECTIC TELECOM EXPORTS PVT. LTD.", "SYNECTIC-TELECOM-EXPORTS-PVT" }, { 0x0014B7, "AR Infotek Inc.", "AR-INFOTEK" }, { 0x0014AD, "Gassner Wiege- und Meßtechnik GmbH", "GASSNER-WIEGE--UND-MEßTECHNIK" }, { 0x0014B2, "mCubelogics Corporation", "MCUBELOGICS" }, { 0x0014A6, "Teranetics, Inc.", "TERANETICS" }, { 0x00149F, "System and Chips, Inc.", "SYSTEM-AND-CHIPS" }, { 0x0014A1, "Synchronous Communication Corp", "SYNCHRONOUS-COMMUNICATION" }, { 0x001470, "Prokom Software SA", "PROKOM-SOFTWARE" }, { 0x001469, "Cisco Systems, Inc", "CISCO" }, { 0x001462, "Digiwell Technology, inc", "DIGIWELL" }, { 0x00145D, "WJ Communications, Inc.", "WJ-COMMUNICATION" }, { 0x001450, "Heim Systems GmbH", "HEIM" }, { 0x001456, "Edge Products", "EDGE-PRODUCTS" }, { 0x00144C, "General Meters Corp.", "GENERAL-METERS" }, { 0x001445, "Telefon-Gradnja d.o.o.", "TELEFON-GRADNJA-D-O-O" }, { 0x001447, "BOAZ Inc.", "BOAZ" }, { 0x001446, "SuperVision Solutions LLC", "SUPERVISION-SOLUTIONS-LLC" }, { 0x0015B3, "Caretech AB", "CARETECH-AB" }, { 0x0015A9, "KWANG WOO I&C CO.,LTD", "KWANG-WOO-I-C" }, { 0x00159D, "Tripp Lite ", "TRIPP-LITE" }, { 0x001591, "RLW Inc.", "RLW" }, { 0x00158A, "SURECOM Technology Corp.", "SURECOM" }, { 0x00158F, "NTT Advanced Technology Corporation", "NTT-ADVANCED" }, { 0x001590, "Hectronic GmbH", "HECTRONIC" }, { 0x0014A0, "Accsense, Inc.", "ACCSENSE" }, { 0x001493, "Systimax Solutions", "SYSTIMAX-SOLUTIONS" }, { 0x00148E, "Tele Power Inc.", "TELE-POWER" }, { 0x001487, "American Technology Integrators", "AMERICAN-INTEGRATORS" }, { 0x001482, "Aurora Networks", "AURORA-NETWORKS" }, { 0x001481, "Multilink Inc", "MULTILINK" }, { 0x00147C, "3Com Ltd", "3COM" }, { 0x001475, "Wiline Networks, Inc.", "WILINE-NETWORKS" }, { 0x0012E7, "Projectek Networking Electronics Corp.", "PROJECTEK-NETWORKING-ELECTRONICS" }, { 0x0012E8, "Fraunhofer IMS", "FRAUNHOFER-IMS" }, { 0x0012DB, "ZIEHL industrie-elektronik GmbH + Co KG", "ZIEHL-INDUSTRIE-ELEKTRONIK-+" }, { 0x0012E2, "ALAXALA Networks Corporation", "ALAXALA-NETWORKS" }, { 0x0012D6, "Jiangsu Yitong High-Tech Co.,Ltd", "JIANGSU-YITONG-HIGH-TECH" }, { 0x0012D5, "Motion Reality Inc.", "MOTION-REALITY" }, { 0x0012C3, "WIT S.A.", "WIT" }, { 0x0013E5, "TENOSYS, INC.", "TENOSYS" }, { 0x0013EA, "Kamstrup A/S", "KAMSTRUP-A/S" }, { 0x0013DE, "Adapt4, LLC", "ADAPT4-LLC" }, { 0x0013D7, "SPIDCOM Technologies SA", "SPIDCOM-TECHNOLOGIES" }, { 0x0013D8, "Princeton Instruments", "PRINCETON-INSTRUMENTS" }, { 0x0013CF, "4Access Communications", "4ACCESS-COMMUNICATION" }, { 0x0013D2, "PAGE IBERICA, S.A.", "PAGE-IBERICA" }, { 0x0013C9, "Beyond Achieve Enterprises Ltd.", "BEYOND-ACHIEVE-ENTERPRISES" }, { 0x0013C2, "WACOM Co.,Ltd", "WACOM" }, { 0x0013BD, "HYMATOM SA", "HYMATOM" }, { 0x0013B8, "RyCo Electronic Systems Limited", "RYCO" }, { 0x00134E, "Valox Systems, Inc.", "VALOX" }, { 0x001353, "HYDAC Filtertechnik GMBH", "HYDAC-FILTERTECHNIK" }, { 0x00134D, "Inepro BV", "INEPRO" }, { 0x001347, "Red Lion Controls, LP", "RED-LION-CONTROLS-LP" }, { 0x00133B, "Speed Dragon Multimedia Limited", "SPEED-DRAGON-MULTIMEDIA" }, { 0x001340, "AD.EL s.r.l.", "AD-EL-S-R-L" }, { 0x00132E, "ITian Coporation", "ITIAN-COPORATION" }, { 0x001328, "Westech Korea Inc.,", "WESTECH-KOREA" }, { 0x00132D, "iWise Communications", "IWISE-COMMUNICATION" }, { 0x001334, "Arkados, Inc.", "ARKADOS" }, { 0x0013B3, "Ecom Communications Technology Co., Ltd.", "ECOM-COMMUNICATION" }, { 0x0013AC, "Sunmyung Electronics Co., LTD", "SUNMYUNG-ELECTRONICS" }, { 0x0013A6, "Extricom Ltd", "EXTRICOM" }, { 0x0013A5, "General Solutions, LTD.", "GENERAL-SOLUTIONS" }, { 0x0013A0, "ALGOSYSTEM Co., Ltd.", "ALGOSYSTEM" }, { 0x001399, "STAC Corporation.", "STAC" }, { 0x001393, "Panta Systems, Inc.", "PANTA" }, { 0x001394, "Infohand Co.,Ltd", "INFOHAND" }, { 0x00138D, "Kinghold", "KINGHOLD" }, { 0x0012C8, "Perfect tech", "PERFECT-TECH" }, { 0x0012B9, "Fusion Digital Technology", "FUSION-DIGITAL" }, { 0x0012BE, "Astek Corporation", "ASTEK" }, { 0x0012AC, "ONTIMETEK INC.", "ONTIMETEK" }, { 0x0012AB, "WiLife, Inc.", "WILIFE" }, { 0x0012B2, "AVOLITES LTD.", "AVOLITES" }, { 0x0012A6, "Dolby Australia", "DOLBY-AUSTRALIA" }, { 0x001378, "Qsan Technology, Inc.", "QSAN" }, { 0x00137D, "Dynalab, Inc.", "DYNALAB" }, { 0x001384, "Advanced Motion Controls", "ADVANCED-MOTION-CONTROLS" }, { 0x00137E, "CorEdge Networks, Inc.", "COREDGE-NETWORKS" }, { 0x00136C, "TomTom", "TOMTOM" }, { 0x00136B, "E-TEC", "E-TEC" }, { 0x001359, "ProTelevision Technologies A/S", "PROTELEVISION-TECHNOLOGIES-A/S" }, { 0x00135E, "EAB/RWI/K", "EAB/RWI/K" }, { 0x00129F, "RAE Systems", "RAE" }, { 0x001299, "Ktech Telecommunications Inc", "KTECH-TELECOMMUNICATIONS" }, { 0x00129A, "IRT Electronics Pty Ltd", "IRT-ELECTRONICS-PTY" }, { 0x00128C, "Woodward Governor", "WOODWARD-GOVERNOR" }, { 0x001293, "GE Energy", "GE-ENERGY" }, { 0x001287, "Digital Everywhere Unterhaltungselektronik GmbH", "DIGITAL-EVERYWHERE-UNTERHALTUNGSELEKTRONIK" }, { 0x001280, "Cisco Systems, Inc", "CISCO" }, { 0x00131E, "Peiker acustic GmbH & Co. KG", "PEIKER-ACUSTIC" }, { 0x001323, "Cap Co., Ltd.", "CAP" }, { 0x00130B, "Mextal B.V.", "MEXTAL" }, { 0x001312, "Amedia Networks Inc.", "AMEDIA-NETWORKS" }, { 0x0012F8, "WNI Resources, LLC", "WNI-RESOURCES-LLC" }, { 0x0012FF, "Lely Industries N.V.", "LELY-INDUSTRIES-N-V" }, { 0x001304, "Flaircomm Technologies Co. LTD", "FLAIRCOMM-TECHNOLOGIES" }, { 0x001410, "Suzhou Keda Technology CO.,Ltd", "SUZHOU-KEDA" }, { 0x001417, "RSE Informations Technologie GmbH", "RSE-INFORMATIONS-TECHNOLOGIE" }, { 0x001408, "Eka Systems Inc.", "EKA" }, { 0x001402, "kk-electronic a/s", "KK--A/S" }, { 0x001401, "Rivertree Networks Corp.", "RIVERTREE-NETWORKS" }, { 0x0013FB, "RKC INSTRUMENT INC.", "RKC-INSTRUMENT" }, { 0x0013F4, "Psitek (Pty) Ltd", "PSITEK-PTY" }, { 0x0013EF, "Kingjon Digital Technology Co.,Ltd", "KINGJON-DIGITAL" }, { 0x0011F7, "Shenzhen Forward Industry Co., Ltd", "SHENZHEN-FORWARD-INDUSTRY" }, { 0x0011F2, "Institute of Network Technologies", "INSTITUTE-OF-NETWORK-TECHNOLOGIES" }, { 0x0011EB, "Innovative Integration", "INNOVATIVE-INTEGRATION" }, { 0x0011E6, "Scientific Atlanta", "SCIENTIFIC-ATLANTA" }, { 0x0011E5, "KCodes Corporation", "KCODES" }, { 0x0011DF, "Current Energy", "CURRENT-ENERGY" }, { 0x0011D3, "NextGenTel Holding ASA", "NEXTGENTEL-HOLDING-ASA" }, { 0x00110E, "Tsurusaki Sealand Transportation Co. Ltd.", "TSURUSAKI-SEALAND-TRANSPORTATION" }, { 0x001115, "EPIN Technologies, Inc.", "EPIN-TECHNOLOGIES" }, { 0x001114, "EverFocus Electronics Corp.", "EVERFOCUS-ELECTRONICS" }, { 0x001107, "RGB Networks Inc.", "RGB-NETWORKS" }, { 0x001108, "Orbital Data Corporation", "ORBITAL-DATA" }, { 0x001102, "Aurora Multimedia Corp.", "AURORA-MULTIMEDIA" }, { 0x000FFC, "Merit Li-Lin Ent.", "MERIT-LI-LIN-ENT" }, { 0x000FDA, "YAZAKI CORPORATION", "YAZAKI" }, { 0x000FF3, "Jung Myoung Communications&Technology", "JUNG-MYOUNG-COMMUNICATION" }, { 0x0011A2, "Manufacturing Technology Inc", "MANUFACTURING" }, { 0x00119B, "Telesynergy Research Inc.", "TELESYNERGY-RESEARCH" }, { 0x00118C, "Missouri Department of Transportation", "MISSOURI-DEPARTMENT-OF-TRANSPORTATION" }, { 0x001191, "CTS-Clima Temperatur Systeme GmbH", "CTS-CLIMA-TEMPERATUR-SYSTEME" }, { 0x001196, "Actuality Systems, Inc.", "ACTUALITY" }, { 0x001179, "Singular Technology Co. Ltd.", "SINGULAR" }, { 0x001172, "COTRON CORPORATION", "COTRON" }, { 0x001166, "Taelim Electronics Co., Ltd.", "TAELIM-ELECTRONICS" }, { 0x00116B, "Digital Data Communications Asia Co.,Ltd", "DIGITAL-DATA-COMMUNICATION-ASIA" }, { 0x00116C, "Nanwang Multimedia Inc.,Ltd", "NANWANG-MULTIMEDIA" }, { 0x001162, "STAR MICRONICS CO.,LTD.", "STAR-MICRONICS" }, { 0x001161, "NetStreams, LLC", "NETSTREAMS-LLC" }, { 0x001155, "Sevis Systems", "SEVIS" }, { 0x00115C, "Cisco Systems, Inc", "CISCO" }, { 0x001147, "Secom-Industry co.LTD.", "SECOM-INDUSTRY" }, { 0x00114C, "caffeina applied research ltd.", "CAFFEINA-APPLIED-RESEARCH" }, { 0x001274, "NIT lab", "NIT-LAB" }, { 0x00127A, "Sanyu Industry Co.,Ltd.", "SANYU-INDUSTRY" }, { 0x00126D, "University of California, Berkeley", "UNIVERSITY-OF-CALIFORNIA-BERKELEY" }, { 0x001268, "IPS d.o.o.", "IPS-D-O-O" }, { 0x001267, "Panasonic Corporation", "PANASONIC" }, { 0x001261, "Adaptix, Inc", "ADAPTIX" }, { 0x001257, "LeapComm Communication Technologies Inc.", "LEAPCOMM-COMMUNICATION-TECHNOLOGIES" }, { 0x001222, "Skardin (UK) Ltd", "SKARDIN-UK" }, { 0x001227, "Franklin Electric Co., Inc.", "FRANKLIN-ELECTRIC" }, { 0x00121B, "Sound Devices, LLC", "SOUND-DEVICES-LLC" }, { 0x001221, "B.Braun Melsungen AG", "B-BRAUN-MELSUNGEN" }, { 0x001214, "Koenig & Bauer AG", "KOENIG-BAUER" }, { 0x00120F, "IEEE 802.3", "IEEE-802-3" }, { 0x001208, "Gantner Instruments GmbH", "GANTNER-INSTRUMENTS" }, { 0x001201, "Cisco Systems, Inc", "CISCO" }, { 0x001202, "Decrane Aerospace - Audio International Inc.", "DECRANE-AEROSPACE---AUDIO" }, { 0x0011C7, "Raymarine UK Ltd", "RAYMARINE-UK" }, { 0x0011CC, "Guangzhou Jinpeng Group Co.,Ltd.", "GUANGZHOU-JINPENG-GROUP" }, { 0x0011B5, "Shenzhen Powercom Co.,Ltd", "SHENZHEN-POWERCOM" }, { 0x0011BA, "Elexol Pty Ltd", "ELEXOL-PTY" }, { 0x0011C1, "4P MOBILE DATA PROCESSING", "4P-MOBILE-DATA-PROCESSING" }, { 0x0011A8, "Quest Technologies", "QUEST-TECHNOLOGIES" }, { 0x0011A7, "Infilco Degremont Inc.", "INFILCO-DEGREMONT" }, { 0x001250, "Tokyo Aircaft Instrument Co., Ltd.", "TOKYO-AIRCAFT-INSTRUMENT" }, { 0x00124B, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001244, "Cisco Systems, Inc", "CISCO" }, { 0x001238, "SetaBox Technology Co., Ltd.", "SETABOX" }, { 0x00123D, "GES Co, Ltd", "GES" }, { 0x00123E, "ERUNE technology Co., Ltd.", "ERUNE" }, { 0x00122C, "Soenen Controls N.V.", "SOENEN-CONTROLS-N-V" }, { 0x001231, "Motion Control Systems, Inc.", "MOTION-CONTROL" }, { 0x001146, "Telecard-Pribor Ltd", "TELECARD-PRIBOR" }, { 0x001140, "Nanometrics Inc.", "NANOMETRICS" }, { 0x001139, "STOEBER ANTRIEBSTECHNIK GmbH + Co. KG.", "STOEBER-ANTRIEBSTECHNIK-+" }, { 0x00113A, "SHINBORAM", "SHINBORAM" }, { 0x001134, "MediaCell, Inc.", "MEDIACELL" }, { 0x001127, "TASI, Inc", "TASI" }, { 0x00112A, "Niko NV", "NIKO-NV" }, { 0x001121, "Cisco Systems, Inc", "CISCO" }, { 0x000EBB, "Everbee Networks", "EVERBEE-NETWORKS" }, { 0x000EB4, "GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD.", "GUANGZHOU-GAOKE-COMMUNICATION" }, { 0x000EAE, "GAWELL TECHNOLOGIES CORP.", "GAWELL-TECHNOLOGIES" }, { 0x000EA8, "United Technologists Europe Limited", "UNITED-TECHNOLOGISTS-EUROPE" }, { 0x000EAD, "Metanoia Technologies, Inc.", "METANOIA-TECHNOLOGIES" }, { 0x000EA1, "Formosa Teletek Corporation", "FORMOSA-TELETEK" }, { 0x000E9C, "Benchmark Electronics ", "BENCHMARK-ELECTRONICS" }, { 0x000E9B, "Ambit Microsystems Corporation", "AMBIT-MICROSYSTEMS" }, { 0x000E8E, "SparkLAN Communications, Inc.", "SPARKLAN-COMMUNICATION" }, { 0x000E95, "Fujiya Denki Seisakusho Co.,Ltd.", "FUJIYA-DENKI-SEISAKUSHO" }, { 0x000FC1, "WAVE Corporation", "WAVE" }, { 0x000FC8, "Chantry Networks", "CHANTRY-NETWORKS" }, { 0x000FC7, "Dionica R&D Ltd.", "DIONICA-R-D" }, { 0x000FBA, "Tevebox AB", "TEVEBOX-AB" }, { 0x000FA7, "Raptor Networks Technology", "RAPTOR-NETWORKS" }, { 0x000FAE, "E2O Communications", "E2O-COMMUNICATION" }, { 0x000FA8, "Photometrics, Inc.", "PHOTOMETRICS" }, { 0x000F9A, "Synchrony, Inc.", "SYNCHRONY" }, { 0x000FA2, "2xWireless", "2XWIRELESS" }, { 0x000E89, "CLEMATIC", "CLEMATIC" }, { 0x000E82, "Commtech Wireless", "COMMTECH-WIRELESS" }, { 0x000E7C, "Televes S.A.", "TELEVES" }, { 0x000E76, "GEMSOC INNOVISION INC.", "GEMSOC-INNOVISION" }, { 0x000E6E, "MAT S.A. (Mircrelec Advanced Technology)", "MAT-MIRCRELEC-ADVANCED" }, { 0x000E72, "CTS electronics", "CTS-ELECTRONICS" }, { 0x000E68, "E-TOP Network Technology Inc.", "E-TOP-NETWORK" }, { 0x000E67, "Eltis Microelectronics Ltd.", "ELTIS-MICROELECTRONICS" }, { 0x000FE7, "Lutron Electronics Co., Inc.", "LUTRON-ELECTRONICS" }, { 0x000FEC, "ARKUS Inc.", "ARKUS" }, { 0x000FE0, "NComputing Co.,Ltd.", "NCOMPUTING" }, { 0x000FD4, "Soundcraft", "SOUNDCRAFT" }, { 0x000FD9, "FlexDSL Telecommunications AG", "FLEXDSL-TELECOMMUNICATIONS" }, { 0x000EEA, "Shadong Luneng Jicheng Electronics,Co.,Ltd", "SHADONG-LUNENG-JICHENG-ELECTRONICS" }, { 0x000EDD, "SHURE INCORPORATED", "SHURE-INCORPORATED" }, { 0x000EE4, "BOE TECHNOLOGY GROUP CO.,LTD", "BOE-GROUP" }, { 0x000ED8, "Positron Access Solutions Corp", "POSITRON-ACCESS-SOLUTIONS" }, { 0x000ECD, "SKOV A/S", "SKOV-A/S" }, { 0x000ECE, "S.I.T.T.I. S.p.A.", "S-I-T-T-I-S-P-A" }, { 0x000ED3, "Epicenter, Inc.", "EPICENTER" }, { 0x000EC7, "Motorola Korea", "MOTOROLA-KOREA" }, { 0x000F93, "Landis+Gyr Ltd.", "LANDIS+GYR" }, { 0x000F94, "Genexis BV", "GENEXIS" }, { 0x000F8E, "DONGYANG TELECOM CO.,LTD.", "DONGYANG-TELECOM" }, { 0x000F87, "Maxcess International", "MAXCESS" }, { 0x000F82, "Mortara Instrument, Inc.", "MORTARA-INSTRUMENT" }, { 0x000F81, "PAL Pacific Inc.", "PAL-PACIFIC" }, { 0x000F74, "Qamcom Technology AB", "QAMCOM-AB" }, { 0x000F7B, "Arce Sistemas, S.A.", "ARCE-SISTEMAS" }, { 0x000F68, "Vavic Network Technology, Inc.", "VAVIC-NETWORK" }, { 0x000F6F, "FTA Communication Technologies", "FTA-COMMUNICATION-TECHNOLOGIES" }, { 0x000F62, "Alcatel Bell Space N.V.", "ALCATEL-BELL-SPACE-N-V" }, { 0x000F5C, "Day One Digital Media Limited", "DAY-ONE-DIGITAL-MEDIA" }, { 0x000F55, "Datawire Communication Networks Inc.", "DATAWIRE-COMMUNICATION-NETWORKS" }, { 0x000F49, "Northover Solutions Limited", "NORTHOVER-SOLUTIONS" }, { 0x000F50, "StreamScale Limited", "STREAMSCALE" }, { 0x000F42, "Xalyo Systems", "XALYO" }, { 0x000F1C, "DigitAll World Co., Ltd", "DIGITALL-WORLD" }, { 0x000F0A, "Clear Edge Networks", "CLEAR-EDGE-NETWORKS" }, { 0x000F09, "Private", "PRIVATE" }, { 0x000F03, "COM&C CO., LTD", "COM-C" }, { 0x000EF7, "Vulcan Portals Inc", "VULCAN-PORTALS" }, { 0x000EFC, "JTAG Technologies B.V.", "JTAG-TECHNOLOGIES" }, { 0x000EE9, "WayTech Development, Inc.", "WAYTECH-DEVELOPMENT" }, { 0x000EF0, "Festo AG & Co. KG", "FESTO" }, { 0x000F35, "Cisco Systems, Inc", "CISCO" }, { 0x000F2E, "Megapower International Corp.", "MEGAPOWER" }, { 0x000F29, "Augmentix Corporation", "AUGMENTIX" }, { 0x000F22, "Helius, Inc.", "HELIUS" }, { 0x000F0F, "Real ID Technology Co., Ltd.", "REAL-ID" }, { 0x000F16, "JAY HOW TECHNOLOGY CO.,", "JAY-HOW" }, { 0x000F1B, "Ego Systems Inc.", "EGO" }, { 0x000D74, "Sand Network Systems, Inc.", "SAND-NETWORK" }, { 0x000D7B, "Consensys Computers Inc.", "CONSENSYS-COMPUTERS" }, { 0x000D6E, "K-Patents Oy", "K-PATENTS-OY" }, { 0x000D68, "Vinci Systems, Inc.", "VINCI" }, { 0x000D6D, "K-Tech Devices Corp.", "K-TECH-DEVICES" }, { 0x000D5B, "Smart Empire Investments Limited", "SMART-EMPIRE-INVESTMENTS" }, { 0x000D5C, "Robert Bosch GmbH, VT-ATMO", "ROBERT-BOSCH-VT-ATMO" }, { 0x000D61, "Giga-Byte Technology Co., Ltd.", "GIGA-BYTE" }, { 0x000D55, "SANYCOM Technology Co.,Ltd", "SANYCOM" }, { 0x000D49, "Triton Systems of Delaware, Inc.", "TRITON-OF-DELAWARE" }, { 0x000D4E, "NDR Co.,LTD.", "NDR" }, { 0x000E5B, "ParkerVision - Direct2Data", "PARKERVISION---DIRECT2DATA" }, { 0x000E55, "AUVITRAN", "AUVITRAN" }, { 0x000E56, "4G Systems GmbH & Co. KG", "4G" }, { 0x000E4F, "Trajet GmbH", "TRAJET" }, { 0x000E48, "Lipman TransAction Solutions", "LIPMAN-TRANSACTION-SOLUTIONS" }, { 0x000E43, "G-Tek Electronics Sdn. Bhd.", "G-TEK-ELECTRONICS-SDN-BHD" }, { 0x000E34, "NexGen City, LP", "NEXGEN-CITY-LP" }, { 0x000E3B, "Hawking Technologies, Inc.", "HAWKING-TECHNOLOGIES" }, { 0x000E2F, "Roche Diagnostics GmbH", "ROCHE-DIAGNOSTICS" }, { 0x000DFB, "Komax AG", "KOMAX" }, { 0x000DE9, "Napatech Aps", "NAPATECH-APS" }, { 0x000DEE, "Andrew RF Power Amplifier Group", "ANDREW-RF-POWER-AMPLIFIER-GROUP" }, { 0x000DE2, "CMZ Sistemi Elettronici", "CMZ-SISTEMI-ELETTRONICI" }, { 0x000DDC, "VAC", "VAC" }, { 0x000DD6, "ITI LTD", "ITI" }, { 0x000DDB, "AIRWAVE TECHNOLOGIES INC.", "AIRWAVE-TECHNOLOGIES" }, { 0x000DCA, "Tait Electronics", "TAIT-ELECTRONICS" }, { 0x000DCF, "Cidra Corp.", "CIDRA" }, { 0x000E28, "Dynamic Ratings P/L", "DYNAMIC-RATINGS-P/L" }, { 0x000E22, "Private", "PRIVATE" }, { 0x000E21, "MTU Friedrichshafen GmbH", "MTU-FRIEDRICHSHAFEN" }, { 0x000E15, "Tadlys LTD", "TADLYS" }, { 0x000E1C, "Hach Company", "HACH-COMPANY" }, { 0x000E0D, "Hesch Schröder GmbH", "HESCH-SCHRöDER" }, { 0x000E10, "C-guys, Inc.", "C-GUYS" }, { 0x000DF5, "Teletronics International Inc.", "TELETRONICS" }, { 0x000DFC, "ITFOR Inc.", "ITFOR" }, { 0x000E01, "ASIP Technologies Inc.", "ASIP-TECHNOLOGIES" }, { 0x000CF0, "M & N GmbH", "M-N" }, { 0x000CF5, "InfoExpress", "INFOEXPRESS" }, { 0x000CE0, "Trek Diagnostics Inc.", "TREK-DIAGNOSTICS" }, { 0x000CE4, "NeuroCom International, Inc.", "NEUROCOM" }, { 0x000CE9, "BLOOMBERG L.P.", "BLOOMBERG-L-P" }, { 0x000CCE, "Cisco Systems, Inc", "CISCO" }, { 0x000CD4, "Positron Public Safety Systems inc.", "POSITRON-PUBLIC-SAFETY" }, { 0x000CCD, "IEC - TC57", "IEC---TC57" }, { 0x000D15, "Voipac s.r.o.", "VOIPAC-S-R-O" }, { 0x000D16, "UHS Systems Pty Ltd", "UHS-PTY" }, { 0x000D1B, "Kyoto Electronics Manufacturing Co., Ltd.", "KYOTO-ELECTRONICS-MANUFACTURING" }, { 0x000D0F, "Finlux Ltd", "FINLUX" }, { 0x000D03, "Matrics, Inc.", "MATRICS" }, { 0x000D08, "AboveCable, Inc.", "ABOVECABLE" }, { 0x000CFC, "S2io Technologies Corp", "S2IO-TECHNOLOGIES" }, { 0x000CF6, "Sitecom Europe BV", "SITECOM-EUROPE" }, { 0x000DA3, "Emerging Technologies Limited", "EMERGING-TECHNOLOGIES" }, { 0x000D9C, "Elan GmbH & Co KG", "ELAN" }, { 0x000D96, "Vtera Technology Inc.", "VTERA" }, { 0x000D95, "Opti-cell, Inc.", "OPTI-CELL" }, { 0x000D90, "Factum Electronics AB", "FACTUM-ELECTRONICS-AB" }, { 0x000D89, "Bils Technology Inc", "BILS" }, { 0x000D80, "Online Development Inc", "ONLINE-DEVELOPMENT" }, { 0x000DC9, "THALES Elektronik Systeme GmbH", "THALES-ELEKTRONIK-SYSTEME" }, { 0x000DC3, "First Communication, Inc.", "FIRST-COMMUNICATION" }, { 0x000DBC, "Cisco Systems, Inc", "CISCO" }, { 0x000DB7, "SANKO ELECTRIC CO,.LTD", "SANKO-ELECTRIC" }, { 0x000DB0, "Olym-tech Co.,Ltd.", "OLYM-TECH" }, { 0x000DA8, "Teletronics Technology Corporation", "TELETRONICS" }, { 0x000D41, "Siemens AG ICM MP UC RD IT KLF1", "SIEMENS-ICM-MP-UC-RD-IT-KLF1" }, { 0x000D3A, "Microsoft Corp.", "MICROSOFT" }, { 0x000D35, "PAC International Ltd", "PAC" }, { 0x000D2E, "Matsushita Avionics Systems Corporation", "MATSUSHITA-AVIONICS" }, { 0x000D28, "Cisco Systems, Inc", "CISCO" }, { 0x000D22, "Unitronics LTD", "UNITRONICS" }, { 0x000D27, "MICROPLEX Printware AG", "MICROPLEX-PRINTWARE" }, { 0x000C21, "Faculty of Science and Technology, Keio University", "FACULTY-OF-SCIENCE-AND-KEIO-UNIVERSITY" }, { 0x000C11, "NIPPON DEMPA CO.,LTD.", "NIPPON-DEMPA" }, { 0x000C10, "PNI Corporation", "PNI" }, { 0x000C12, "Micro-Optronic-Messtechnik GmbH", "MICRO-OPTRONIC-MESSTECHNIK" }, { 0x000C17, "AJA Video Systems Inc", "AJA-VIDEO" }, { 0x000C04, "Tecnova", "TECNOVA" }, { 0x000C0B, "Broadbus Technologies", "BROADBUS-TECHNOLOGIES" }, { 0x000BF8, "Infinera", "INFINERA" }, { 0x000BFF, "Berkeley Camera Engineering", "BERKELEY-CAMERA-ENGINEERING" }, { 0x000BEC, "NIPPON ELECTRIC INSTRUMENT, INC.", "NIPPON-ELECTRIC-INSTRUMENT" }, { 0x000BB8, "Kihoku Electronic Co.", "KIHOKU" }, { 0x000BBD, "Connexionz Limited", "CONNEXIONZ" }, { 0x000BAD, "PC-PoS Inc.", "PC-POS" }, { 0x000BA0, "T&L Information Inc.", "T-L-INFORMATION" }, { 0x000BA7, "Maranti Networks", "MARANTI-NETWORKS" }, { 0x000BAC, "3Com Ltd", "3COM" }, { 0x000B93, "Ritter Elektronik", "RITTER-ELEKTRONIK" }, { 0x000B98, "NiceTechVision", "NICETECHVISION" }, { 0x000B9B, "Sirius System Co, Ltd.", "SIRIUS-SYSTEM" }, { 0x000B8C, "Flextronics", "FLEXTRONICS" }, { 0x000BF1, "LAP Laser Applikations", "LAP-LASER-APPLIKATIONS" }, { 0x000BDF, "Shenzhen RouterD Networks Limited", "SHENZHEN-ROUTERD-NETWORKS" }, { 0x000BDE, "TELDIX GmbH", "TELDIX" }, { 0x000BE0, "SercoNet Ltd.", "SERCONET" }, { 0x000BE5, "HIMS International Corporation", "HIMS" }, { 0x000BD9, "General Hydrogen", "GENERAL-HYDROGEN" }, { 0x000BAE, "Vitals System Inc.", "VITALS-SYSTEM" }, { 0x000BD0, "XiMeta Technology Americas Inc.", "XIMETA-AMERICAS" }, { 0x000BD5, "Nvergence, Inc.", "NVERGENCE" }, { 0x000BC4, "BIOTRONIK GmbH & Co", "BIOTRONIK" }, { 0x000BC9, "Electroline Equipment", "ELECTROLINE-EQUIPMENT" }, { 0x000BB1, "Super Star Technology Co., Ltd.", "SUPER-STAR" }, { 0x000BB6, "Metalligence Technology Corp.", "METALLIGENCE" }, { 0x000B79, "X-COM, Inc.", "X-COM" }, { 0x000B80, "Lycium Networks", "LYCIUM-NETWORKS" }, { 0x000B87, "American Reliance Inc.", "AMERICAN-RELIANCE" }, { 0x000B6D, "SOLECTRON JAPAN NAKANIIDA", "SOLECTRON-JAPAN-NAKANIIDA" }, { 0x000B74, "Kingwave Technology Co., Ltd.", "KINGWAVE" }, { 0x000B67, "Topview Technology Corporation", "TOPVIEW" }, { 0x000B61, "Friedrich Lütze GmbH & Co. KG", "FRIEDRICH-LüTZE" }, { 0x000B66, "Teralink Communications", "TERALINK-COMMUNICATION" }, { 0x000B68, "Addvalue Communications Pte Ltd", "ADDVALUE-COMMUNICATION-PTE" }, { 0x000B58, "Astronautics C.A LTD", "ASTRONAUTICS-C-A" }, { 0x000B50, "Oxygnet", "OXYGNET" }, { 0x000B44, "Concord IDea Corp.", "CONCORD-IDEA" }, { 0x000B49, "RF-Link System Inc.", "RF-LINK-SYSTEM" }, { 0x000B4B, "VISIOWAVE SA", "VISIOWAVE" }, { 0x000B31, "Yantai ZhiYang Scientific and technology industry CO., LTD", "YANTAI-ZHIYANG-SCIENTIFIC-AND-INDUSTRY" }, { 0x000B3D, "CONTAL OK Ltd.", "CONTAL-OK" }, { 0x000B38, "Knürr GmbH", "KNüRR" }, { 0x000B2A, "HOWTEL Co., Ltd.", "HOWTEL" }, { 0x000B2C, "Eiki Industrial Co. Ltd.", "EIKI-INDUSTRIAL" }, { 0x000C97, "NV ADB TTV Technologies SA", "NV-ADB-TTV-TECHNOLOGIES" }, { 0x000C9C, "Chongho information & communications", "CHONGHO-INFORMATION-COMMUNICATION" }, { 0x000C9E, "MemoryLink Corp.", "MEMORYLINK" }, { 0x000C89, "AC Electric Vehicles, Ltd.", "AC-ELECTRIC-VEHICLES" }, { 0x000C8B, "Connect Tech Inc", "CONNECT-TECH" }, { 0x000C90, "Octasic Inc.", "OCTASIC" }, { 0x000C84, "Eazix, Inc.", "EAZIX" }, { 0x000C75, "Oriental integrated electronics. LTD", "ORIENTAL-INTEGRATED-ELECTRONICS" }, { 0x000C77, "Life Racing Ltd", "LIFE-RACING" }, { 0x000C7C, "Internet Information Image Inc.", "INTERNET-INFORMATION-IMAGE" }, { 0x000C43, "Ralink Technology, Corp.", "RALINK" }, { 0x000C45, "Animation Technologies Inc.", "ANIMATION-TECHNOLOGIES" }, { 0x000C3C, "MediaChorus, Inc.", "MEDIACHORUS" }, { 0x000C32, "Avionic Design Development GmbH", "AVIONIC-DESIGN-DEVELOPMENT" }, { 0x000C35, "KaVo Dental GmbH & Co. KG", "KAVO-DENTAL" }, { 0x000C2B, "ELIAS Technology, Inc.", "ELIAS" }, { 0x000C28, "RIFATRON", "RIFATRON" }, { 0x000C1C, "MicroWeb Co., Ltd.", "MICROWEB" }, { 0x000C64, "X2 MSA Group", "X2-MSA-GROUP" }, { 0x000C69, "National Radio Astronomy Observatory", "NATIONAL-RADIO-ASTRONOMY-OBSERVATORY" }, { 0x000C70, "ACC GmbH", "ACC" }, { 0x000C51, "Scientific Technologies Inc.", "SCIENTIFIC-TECHNOLOGIES" }, { 0x000C56, "Megatel Computer (1986) Corp.", "MEGATEL-1986" }, { 0x000C58, "M&S Systems", "M-S" }, { 0x000C5D, "CHIC TECHNOLOGY (CHINA) CORP.", "CHIC-CHINA" }, { 0x000C4A, "Cygnus Microsystems (P) Limited", "CYGNUS-MICROSYSTEMS-P" }, { 0x000CC8, "Xytronix Research & Design, Inc.", "XYTRONIX-RESEARCH-DESIGN" }, { 0x000CBB, "ISKRAEMECO", "ISKRAEMECO" }, { 0x000CB5, "Premier Technolgies, Inc", "PREMIER-TECHNOLGIES" }, { 0x000CBC, "Iscutum", "ISCUTUM" }, { 0x000CA3, "Rancho Technology, Inc.", "RANCHO" }, { 0x000CAA, "Cubic Transportation Systems Inc", "CUBIC-TRANSPORTATION" }, { 0x000A38, "Apani Networks", "APANI-NETWORKS" }, { 0x000A3F, "Data East Corporation", "DATA-EAST" }, { 0x000A44, "Avery Dennison Deutschland GmbH", "AVERY-DENNISON-DEUTSCHLAND" }, { 0x000A46, "ARO WELDING TECHNOLOGIES SAS", "ARO-WELDING-TECHNOLOGIES-SAS" }, { 0x000A33, "Emulex Corporation", "EMULEX" }, { 0x000A31, "HCV Consulting", "HCV-CONSULTING" }, { 0x000A2C, "Active Tchnology Corporation", "ACTIVE-TCHNOLOGY" }, { 0x004252, "RLX Technologies", "RLX-TECHNOLOGIES" }, { 0x000A2A, "QSI Systems Inc.", "QSI" }, { 0x000A1E, "Red-M Products Limited", "RED-M-PRODUCTS" }, { 0x000A23, "Parama Networks Inc", "PARAMA-NETWORKS" }, { 0x000A17, "NESTAR COMMUNICATIONS, INC", "NESTAR-COMMUNICATION" }, { 0x000A1C, "Bridge Information Co., Ltd.", "BRIDGE-INFORMATION" }, { 0x000B19, "Vernier Networks, Inc.", "VERNIER-NETWORKS" }, { 0x000B1E, "KAPPA opto-electronics GmbH", "KAPPA-OPTO-ELECTRONICS" }, { 0x000B25, "Aeluros", "AELUROS" }, { 0x000B17, "MKS Instruments", "MKS-INSTRUMENTS" }, { 0x000B12, "NURI Telecom Co., Ltd.", "NURI-TELECOM" }, { 0x000B0B, "Corrent Corporation", "CORRENT" }, { 0x000AFA, "Traverse Technologies Australia", "TRAVERSE-TECHNOLOGIES-AUSTRALIA" }, { 0x000AFF, "Kilchherr Elektronik AG", "KILCHHERR-ELEKTRONIK" }, { 0x000AF3, "Cisco Systems, Inc", "CISCO" }, { 0x000AF8, "American Telecare Inc.", "AMERICAN-TELECARE" }, { 0x000AEE, "GCD Hard- & Software GmbH", "GCD-HARD--SOFTWARE" }, { 0x000A06, "Teledex LLC", "TELEDEX-LLC" }, { 0x000A09, "TaraCom Integrated Products, Inc.", "TARACOM-INTEGRATED-PRODUCTS" }, { 0x000A0B, "Sealevel Systems, Inc.", "SEALEVEL" }, { 0x000A10, "FAST media integrations AG", "FAST-MEDIA-INTEGRATIONS" }, { 0x0009F7, "SED, a division of Calian", "SED-A-DIVISION-OF-CALIAN" }, { 0x000A01, "SOHOware, Inc.", "SOHOWARE" }, { 0x0009E9, "Cisco Systems, Inc", "CISCO" }, { 0x0009F0, "Shimizu Technology Inc.", "SHIMIZU" }, { 0x0009EA, "YEM Inc.", "YEM" }, { 0x0009E4, "K Tech Infosystem Inc.", "K-TECH-INFOSYSTEM" }, { 0x0009D8, "Fält Communications AB", "FäLT-COMMUNICATION-AB" }, { 0x0009DD, "Mavin Technology Inc.", "MAVIN" }, { 0x0009B1, "Kanematsu Electronics, Ltd.", "KANEMATSU-ELECTRONICS" }, { 0x0009A3, "Leadfly Techologies Corp. Ltd.", "LEADFLY-TECHOLOGIES" }, { 0x0009AA, "Data Comm for Business, Inc.", "DATA-COMM-FOR-BUSINESS" }, { 0x0009A4, "HARTEC Corporation", "HARTEC" }, { 0x00099E, "Testech, Inc.", "TESTECH" }, { 0x000992, "InterEpoch Technology,INC.", "INTEREPOCH" }, { 0x000991, "GE Fanuc Automation Manufacturing, Inc.", "GE-FANUC-AUTOMATION-MANUFACTURING" }, { 0x00098B, "Entropic Communications, Inc.", "ENTROPIC-COMMUNICATION" }, { 0x000AB0, "LOYTEC electronics GmbH", "LOYTEC-ELECTRONICS" }, { 0x000AB7, "Cisco Systems, Inc", "CISCO" }, { 0x000AA4, "SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD", "SHANGHAI-SURVEILLANCE" }, { 0x000AA9, "Brooks Automation GmbH", "BROOKS-AUTOMATION" }, { 0x000A91, "HemoCue AB", "HEMOCUE-AB" }, { 0x000A9D, "King Young Technology Co. Ltd.", "KING-YOUNG" }, { 0x000A8C, "Guardware Systems Ltd.", "GUARDWARE" }, { 0x000A97, "SONICblue, Inc.", "SONICBLUE" }, { 0x000A7D, "Valo, Inc.", "VALO" }, { 0x000A84, "Rainsun Enterprise Co., Ltd.", "RAINSUN" }, { 0x000A89, "Creval Systems, Inc.", "CREVAL" }, { 0x0009D7, "DC Security Products", "DC-SECURITY-PRODUCTS" }, { 0x0009CA, "iMaxNetworks(Shenzhen)Limited.", "IMAXNETWORKS-SHENZHEN" }, { 0x0009D1, "SERANOA NETWORKS INC", "SERANOA-NETWORKS" }, { 0x0009C5, "KINGENE Technology Corporation", "KINGENE" }, { 0x0009BD, "Epygi Technologies, Ltd.", "EPYGI-TECHNOLOGIES" }, { 0x0009B6, "Cisco Systems, Inc", "CISCO" }, { 0x00097F, "Vsecure 2000 LTD.", "VSECURE-2000" }, { 0x000984, "MyCasa Network Inc.", "MYCASA-NETWORK" }, { 0x000971, "Time Management, Inc.", "TIME-MANAGEMENT" }, { 0x000978, "AIJI System Co., Ltd.", "AIJI-SYSTEM" }, { 0x000972, "Securebase,Inc", "SECUREBASE" }, { 0x00096C, "Imedia Semiconductor Corp.", "IMEDIA-SEMICONDUCTOR" }, { 0x000965, "HyunJu Computer Co., Ltd.", "HYUNJU" }, { 0x000960, "YOZAN Inc.", "YOZAN" }, { 0x000956, "Network Systems Group, Ltd. (NSG)", "NETWORK-GROUP-NSG" }, { 0x000955, "Young Generation International Corp.", "YOUNG-GENERATION" }, { 0x000AE9, "AirVast Technology Inc.", "AIRVAST" }, { 0x000ADB, "SkyPilot Network, Inc", "SKYPILOT-NETWORK" }, { 0x000ADD, "Allworx Corp.", "ALLWORX" }, { 0x000AE2, "Binatone Electronics International, Ltd", "BINATONE-ELECTRONICS" }, { 0x000ACA, "YOKOYAMA SHOKAI CO.,Ltd.", "YOKOYAMA-SHOKAI" }, { 0x000ACF, "PROVIDEO Multimedia Co. Ltd.", "PROVIDEO-MULTIMEDIA" }, { 0x000AD6, "BeamReach Networks", "BEAMREACH-NETWORKS" }, { 0x000ABC, "Seabridge Ltd.", "SEABRIDGE" }, { 0x000ABE, "OPNET Technologies CO., LTD.", "OPNET-TECHNOLOGIES" }, { 0x000AC3, "eM Technics Co., Ltd.", "EM-TECHNICS" }, { 0x000A78, "OLITEC", "OLITEC" }, { 0x000A71, "Avrio Technologies, Inc", "AVRIO-TECHNOLOGIES" }, { 0x000A76, "Beida Jade Bird Huaguang Technology Co.,Ltd", "BEIDA-JADE-BIRD-HUAGUANG" }, { 0x000A63, "DHD GmbH", "DHD" }, { 0x000A65, "GentechMedia.co.,ltd.", "GENTECHMEDIA" }, { 0x000A6A, "SVM Microwaves s.r.o.", "SVM-MICROWAVES-S-R-O" }, { 0x000A5E, "3COM Corporation", "3COM" }, { 0x000A52, "AsiaRF Ltd.", "ASIARF" }, { 0x000A4B, "DataPower Technology, Inc.", "DATAPOWER" }, { 0x00075A, "Air Products and Chemicals, Inc.", "AIR-PRODUCTS-AND-CHEMICALS" }, { 0x000754, "Xyterra Computing, Inc.", "XYTERRA-COMPUTING" }, { 0x00074E, "IPFRONT Inc", "IPFRONT" }, { 0x00074D, "Zebra Technologies Corp.", "ZEBRA-TECHNOLOGIES" }, { 0x000742, "Ormazabal", "ORMAZABAL" }, { 0x000748, "The Imaging Source Europe", "THE-IMAGING-SOURCE-EUROPE" }, { 0x000736, "Data Video Technologies Co., Ltd.", "DATA-VIDEO-TECHNOLOGIES" }, { 0x00073D, "Nanjing Postel Telecommunications Co., Ltd.", "NANJING-POSTEL-TELECOMMUNICATIONS" }, { 0x00073C, "Telecom Design", "TELECOM-DESIGN" }, { 0x00072A, "Innovance Networks", "INNOVANCE-NETWORKS" }, { 0x00072F, "Intransa, Inc.", "INTRANSA" }, { 0x000730, "Hutchison OPTEL Telecom Technology Co., Ltd.", "HUTCHISON-OPTEL-TELECOM" }, { 0x000725, "Bematech International Corp.", "BEMATECH" }, { 0x000818, "Pixelworks, Inc.", "PIXELWORKS" }, { 0x000812, "GM-2 Corporation", "GM-2" }, { 0x000811, "VOIX Corporation", "VOIX" }, { 0x00080B, "Birka BPA Informationssystem AB", "BIRKA-BPA-INFORMATIONSSYSTEM-AB" }, { 0x000805, "Techno-Holon Corporation", "TECHNO-HOLON" }, { 0x00080C, "VDA Elettronica spa", "VDA-ELETTRONICA-SPA" }, { 0x0007FB, "Giga Stream UMTS Technologies GmbH", "GIGA-STREAM-UMTS-TECHNOLOGIES" }, { 0x0007F5, "Bridgeco Co AG", "BRIDGECO" }, { 0x0007E8, "EdgeWave", "EDGEWAVE" }, { 0x0007EF, "Lockheed Martin Tactical Systems", "LOCKHEED-MARTIN-TACTICAL" }, { 0x0007E2, "Bitworks, Inc.", "BITWORKS" }, { 0x0007D6, "Commil Ltd.", "COMMIL" }, { 0x0007DC, "Atek Co, Ltd.", "ATEK" }, { 0x000923, "Heaman System Co., Ltd", "HEAMAN-SYSTEM" }, { 0x00091D, "Proteam Computer Corporation", "PROTEAM" }, { 0x000924, "Telebau GmbH", "TELEBAU" }, { 0x000911, "Cisco Systems, Inc", "CISCO" }, { 0x000916, "Listman Home Technologies, Inc.", "LISTMAN-HOME-TECHNOLOGIES" }, { 0x00090A, "SnedFar Technology Co., Ltd.", "SNEDFAR" }, { 0x000904, "MONDIAL electronic", "MONDIAL" }, { 0x000903, "Panasas, Inc", "PANASAS" }, { 0x0008FE, "UNIK C&C Co.,Ltd.", "UNIK-C-C" }, { 0x0008FA, "Karl E.Brinkmann GmbH", "KARL-E-BRINKMANN" }, { 0x0008EE, "Logic Product Development", "LOGIC-PRODUCT-DEVELOPMENT" }, { 0x0008F0, "Next Generation Systems, Inc.", "NEXT-GENERATION" }, { 0x000948, "Vista Control Systems, Corp.", "VISTA-CONTROL" }, { 0x00094F, "elmegt GmbH & Co. KG", "ELMEGT" }, { 0x000943, "Cisco Systems, Inc", "CISCO" }, { 0x00093C, "Jacques Technologies P/L", "JACQUES-TECHNOLOGIES-P/L" }, { 0x000936, "Ipetronik GmbH & Co. KG", "IPETRONIK" }, { 0x000935, "Sandvine Incorporated", "SANDVINE-INCORPORATED" }, { 0x000929, "Sanyo Industries (UK) Limited", "SANYO-INDUSTRIES-UK" }, { 0x000930, "AeroConcierge Inc.", "AEROCONCIERGE" }, { 0x0008E9, "NextGig", "NEXTGIG" }, { 0x0008DC, "Wiznet", "WIZNET" }, { 0x0008E2, "Cisco Systems, Inc", "CISCO" }, { 0x0008DB, "Corrigent Systems", "CORRIGENT" }, { 0x0008D6, "HASSNET Inc.", "HASSNET" }, { 0x0008CF, "Nippon Koei Power Systems Co., Ltd.", "NIPPON-KOEI-POWER" }, { 0x0008C0, "ASA SYSTEMS", "ASA" }, { 0x0008C5, "Liontech Co., Ltd.", "LIONTECH" }, { 0x0008CA, "TwinHan Technology Co.,Ltd", "TWINHAN" }, { 0x0008BF, "Aptus Elektronik AB", "APTUS-ELEKTRONIK-AB" }, { 0x0008B3, "Fastwel", "FASTWEL" }, { 0x0008B2, "SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD", "SHENZHEN-COMPASS-DEVELOPMENT" }, { 0x0008A6, "Multiware & Image Co., Ltd.", "MULTIWARE-IMAGE" }, { 0x0008AD, "Toyo-Linx Co., Ltd.", "TOYO-LINX" }, { 0x00089A, "Alcatel Microelectronics", "ALCATEL-MICROELECTRONICS" }, { 0x0008A0, "Stotz Feinmesstechnik GmbH", "STOTZ-FEINMESSTECHNIK" }, { 0x000892, "EM Solutions", "EM-SOLUTIONS" }, { 0x000896, "Printronix, Inc.", "PRINTRONIX" }, { 0x00088C, "Quanta Network Systems Inc.", "QUANTA-NETWORK" }, { 0x000886, "Hansung Teliann, Inc.", "HANSUNG-TELIANN" }, { 0x000873, "DapTechnology B.V.", "DAPTECHNOLOGY" }, { 0x00087A, "Wipotec GmbH", "WIPOTEC" }, { 0x00087F, "SPAUN electronic GmbH & Co. KG", "SPAUN" }, { 0x02608C, "3COM CORPORATION", "3COM" }, { 0x0007D0, "Automat Engenharia de Automação Ltda.", "AUTOMAT-ENGENHARIA-DE-AUTOMAçãO-LTDA" }, { 0x0007CD, "Kumoh Electronic Co, Ltd", "KUMOH" }, { 0x0007C7, "Synectics Systems Limited", "SYNECTICS" }, { 0x00047D, "Pelco", "PELCO" }, { 0x00047E, "Siqura B.V.", "SIQURA" }, { 0x0007C1, "Overture Networks, Inc.", "OVERTURE-NETWORKS" }, { 0x0007C0, "NetZerver Inc.", "NETZERVER" }, { 0x0007AE, "Britestream Networks, Inc.", "BRITESTREAM-NETWORKS" }, { 0x0007B4, "Cisco Systems, Inc", "CISCO" }, { 0x00079A, "Verint Systems Inc", "VERINT" }, { 0x0007A0, "e-Watch Inc.", "E-WATCH" }, { 0x000794, "Simple Devices, Inc.", "SIMPLE-DEVICES" }, { 0x000793, "Shin Satellite Public Company Limited", "SHIN-SATELLITE-PUBLIC-COMPANY" }, { 0x00078D, "NetEngines Ltd.", "NETENGINES" }, { 0x00078E, "Garz & Friche GmbH", "GARZ-FRICHE" }, { 0x000781, "Itron Inc.", "ITRON" }, { 0x000787, "Idea System Co., Ltd.", "IDEA-SYSTEM" }, { 0x000777, "Motah Ltd.", "MOTAH" }, { 0x000771, "Embedded System Corporation", "EMBEDDED-SYSTEM" }, { 0x00075B, "Gibson Guitars", "GIBSON-GUITARS" }, { 0x000760, "TOMIS Information & Telecom Corp.", "TOMIS-INFORMATION-TELECOM" }, { 0x000767, "Yuxing Electronics Company Limited", "YUXING-ELECTRONICS-COMPANY" }, { 0x000879, "CEM Corporation", "CEM" }, { 0x00086C, "Plasmon LMS", "PLASMON-LMS" }, { 0x00086D, "Missouri FreeNet", "MISSOURI-FREENET" }, { 0x000867, "Uptime Devices", "UPTIME-DEVICES" }, { 0x000860, "LodgeNet Entertainment Corp.", "LODGENET-ENTERTAINMENT" }, { 0x000854, "Netronix, Inc.", "NETRONIX" }, { 0x00085A, "IntiGate Inc.", "INTIGATE" }, { 0x00081E, "Repeatit AB", "REPEATIT-AB" }, { 0x00082B, "Wooksung Electronics, Inc.", "WOOKSUNG-ELECTRONICS" }, { 0x000824, "Nuance Document Imaging", "NUANCE-DOCUMENT-IMAGING" }, { 0x0005BA, "Area Netwoeks, Inc.", "AREA-NETWOEKS" }, { 0x0005B9, "Airvana, Inc.", "AIRVANA" }, { 0x0005C0, "Digital Network Alacarte Co., Ltd.", "DIGITAL-NETWORK-ALACARTE" }, { 0x000599, "DRS Test and Energy Management or DRS-TEM", "DRS-TEST-AND-ENERGY-MANAGEMENT-OR-DRS-TEM" }, { 0x0005A0, "MOBILINE Kft.", "MOBILINE-KFT" }, { 0x0005A9, "Princeton Networks, Inc.", "PRINCETON-NETWORKS" }, { 0x0005AA, "Moore Industries International Inc.", "MOORE-INDUSTRIES" }, { 0x0005AF, "InnoScan Computing A/S", "INNOSCAN-COMPUTING-A/S" }, { 0x0005B3, "Asahi-Engineering Co., Ltd.", "ASAHI-ENGINEERING" }, { 0x00059F, "Yotta Networks, Inc.", "YOTTA-NETWORKS" }, { 0x0005A6, "Extron Electronics", "EXTRON-ELECTRONICS" }, { 0x0005B4, "Aceex Corporation", "ACEEX" }, { 0x00058D, "Lynx Photonic Networks, Inc.", "LYNX-PHOTONIC-NETWORKS" }, { 0x000587, "Locus, Incorporated", "LOCUS-INCORPORATED" }, { 0x000593, "Grammar Engine Inc.", "GRAMMAR-ENGINE" }, { 0x000586, "Lucent Technologies", "LUCENT-TECHNOLOGIES" }, { 0x00057A, "Overture Networks", "OVERTURE-NETWORKS" }, { 0x00063C, "Intrinsyc Software International Inc.", "INTRINSYC-SOFTWARE" }, { 0x00062F, "Pivotech Systems Inc.", "PIVOTECH" }, { 0x000636, "Jedai Broadband Networks", "JEDAI-BROADBAND-NETWORKS" }, { 0x000635, "PacketAir Networks, Inc.", "PACKETAIR-NETWORKS" }, { 0x000628, "Cisco Systems, Inc", "CISCO" }, { 0x00061F, "Vision Components GmbH", "VISION-COMPONENTS" }, { 0x000619, "Connection Technology Systems", "CONNECTION" }, { 0x00060D, "Wave7 Optics", "WAVE7-OPTICS" }, { 0x000613, "Kawasaki Microelectronics Incorporated", "KAWASAKI-MICROELECTRONICS-INCORPORATED" }, { 0x00060E, "IGYS Systems, Inc.", "IGYS" }, { 0x0005EC, "Mosaic Systems Inc.", "MOSAIC" }, { 0x0005D3, "eProduction Solutions, Inc.", "EPRODUCTION-SOLUTIONS" }, { 0x000608, "At-Sky SAS", "AT-SKY-SAS" }, { 0x000607, "Omni Directional Control Technology Inc.", "OMNI-DIRECTIONAL-CONTROL" }, { 0x0005E6, "Egenera, Inc.", "EGENERA" }, { 0x000580, "FibroLAN Ltd.", "FIBROLAN" }, { 0x000576, "NSM Technology Ltd.", "NSM" }, { 0x000570, "Baydel Ltd.", "BAYDEL" }, { 0x00056A, "Heuft Systemtechnik GmbH", "HEUFT-SYSTEMTECHNIK" }, { 0x000563, "J-Works, Inc.", "J-WORKS" }, { 0x00055D, "D-LINK SYSTEMS, INC.", "D-LINK" }, { 0x000564, "Tsinghua Bitway Co., Ltd.", "TSINGHUA-BITWAY" }, { 0x000557, "Agile TV Corporation", "AGILE-TV" }, { 0x000551, "F & S Elektronik Systeme GmbH", "F-S-ELEKTRONIK-SYSTEME" }, { 0x00054B, "Eaton Automation AG", "EATON-AUTOMATION" }, { 0x00054A, "Ario Data Networks, Inc.", "ARIO-DATA-NETWORKS" }, { 0x000544, "Valley Technologies, Inc.", "VALLEY-TECHNOLOGIES" }, { 0x00053E, "KID Systeme GmbH", "KID-SYSTEME" }, { 0x000531, "Cisco Systems, Inc", "CISCO" }, { 0x000538, "Merilus, Inc.", "MERILUS" }, { 0x000532, "Cisco Systems, Inc", "CISCO" }, { 0x000525, "Puretek Industrial Co., Ltd.", "PURETEK-INDUSTRIAL" }, { 0x00052B, "HORIBA, Ltd.", "HORIBA" }, { 0x00051F, "Taijin Media Co., Ltd.", "TAIJIN-MEDIA" }, { 0x000519, "Siemens Building Technologies AG,", "SIEMENS-BUILDING-TECHNOLOGIES" }, { 0x000518, "Jupiters Technology", "JUPITERS" }, { 0x00050E, "3ware, Inc.", "3WARE" }, { 0x00050F, "Tanaka S/S Ltd.", "TANAKA-S/S" }, { 0x000508, "Inetcam, Inc.", "INETCAM" }, { 0x0004FE, "Pelago Networks", "PELAGO-NETWORKS" }, { 0x000671, "Softing AG", "SOFTING" }, { 0x000672, "Netezza", "NETEZZA" }, { 0x00067B, "Toplink C&C Corporation", "TOPLINK-C-C" }, { 0x000665, "Sunny Giken, Inc.", "SUNNY-GIKEN" }, { 0x00066B, "Sysmex Corporation", "SYSMEX" }, { 0x000652, "Cisco Systems, Inc", "CISCO" }, { 0x000659, "EAL (Apeldoorn) B.V.", "EAL-APELDOORN" }, { 0x000658, "Helmut Fischer GmbH Institut für Elektronik und Messtechnik", "HELMUT-FISCHER-INSTITUT-FüR-ELEKTRONIK-UND-MESSTECHNIK" }, { 0x000646, "ShenZhen XunBao Network Technology Co Ltd", "SHENZHEN-XUNBAO-NETWORK" }, { 0x000640, "White Rock Networks", "WHITE-ROCK-NETWORKS" }, { 0x00064C, "Invicta Networks, Inc.", "INVICTA-NETWORKS" }, { 0x0006B5, "Source Photonics, Inc.", "SOURCE-PHOTONICS" }, { 0x0006A8, "KC Technology, Inc.", "KC" }, { 0x00069E, "UNIQA, Inc.", "UNIQA" }, { 0x000698, "egnite GmbH", "EGNITE" }, { 0x000692, "Intruvert Networks, Inc.", "INTRUVERT-NETWORKS" }, { 0x00068C, "3COM CORPORATION", "3COM" }, { 0x000685, "NetNearU Corporation", "NETNEARU" }, { 0x00068B, "AirRunner Technologies, Inc.", "AIRRUNNER-TECHNOLOGIES" }, { 0x000686, "ZARDCOM Co., Ltd.", "ZARDCOM" }, { 0x00067F, "Digeo, Inc.", "DIGEO" }, { 0x0006DE, "Flash Technology", "FLASH" }, { 0x0006E4, "Citel Technologies Ltd.", "CITEL-TECHNOLOGIES" }, { 0x0006D1, "Tahoe Networks, Inc.", "TAHOE-NETWORKS" }, { 0x0006DA, "ITRAN Communications Ltd.", "ITRAN-COMMUNICATION" }, { 0x0006CB, "Jotron Electronics A/S", "JOTRON-ELECTRONICS-A/S" }, { 0x0006CC, "JMI Electronics Co., Ltd.", "JMI-ELECTRONICS" }, { 0x0006BB, "ATI Technologies Inc.", "ATI-TECHNOLOGIES" }, { 0x0006C5, "INNOVI Technologies Limited", "INNOVI-TECHNOLOGIES" }, { 0x0006AF, "Xalted Networks", "XALTED-NETWORKS" }, { 0x000719, "Mobiis Co., Ltd.", "MOBIIS" }, { 0x000720, "Trutzschler GmbH & Co. KG", "TRUTZSCHLER" }, { 0x000713, "IP One, Inc.", "IP-ONE" }, { 0x00070D, "Cisco Systems, Inc", "CISCO" }, { 0x000714, "Brightcom", "BRIGHTCOM" }, { 0x0006F1, "Optillion", "OPTILLION" }, { 0x0006F0, "Digeo, Inc.", "DIGEO" }, { 0x0006FB, "Hitachi Printing Solutions, Ltd.", "HITACHI-PRINTING-SOLUTIONS" }, { 0x0006EB, "Global Data", "GLOBAL-DATA" }, { 0x0005F2, "Power R, Inc.", "POWER-R" }, { 0x0005FE, "Traficon N.V.", "TRAFICON-N-V" }, { 0x0005E5, "Renishaw PLC", "RENISHAW-PLC" }, { 0x0005F8, "Real Time Access, Inc.", "REAL-TIME-ACCESS" }, { 0x0005FF, "SNS Solutions, Inc.", "SNS-SOLUTIONS" }, { 0x0005DD, "Cisco Systems, Inc", "CISCO" }, { 0x0005D9, "Techno Valley, Inc.", "TECHNO-VALLEY" }, { 0x0005C6, "Triz Communications", "TRIZ-COMMUNICATION" }, { 0x0005CC, "Sumtel Communications, Inc.", "SUMTEL-COMMUNICATION" }, { 0x00044C, "JENOPTIK", "JENOPTIK" }, { 0x000448, "Polaroid Corporation", "POLAROID" }, { 0x00043C, "SONOS Co., Ltd.", "SONOS" }, { 0x000441, "Half Dome Systems, Inc.", "HALF-DOME" }, { 0x00042F, "International Communications Products, Inc.", "COMMUNICATION-PRODUCTS" }, { 0x000429, "Pixord Corporation", "PIXORD" }, { 0x00041C, "ipDialog, Inc.", "IPDIALOG" }, { 0x00041D, "Corega of America", "COREGA-OF-AMERICA" }, { 0x000416, "Parks S/A Comunicacoes Digitais", "PARKS-S/A-COMUNICACOES-DIGITAIS" }, { 0x000410, "Spinnaker Networks, Inc.", "SPINNAKER-NETWORKS" }, { 0x00040F, "Asus Network Technologies, Inc.", "ASUS-NETWORK-TECHNOLOGIES" }, { 0x00040A, "Sage Systems", "SAGE" }, { 0x000403, "Nexsi Corporation", "NEXSI" }, { 0x0004F8, "QUALICABLE TV Industria E Com., Ltda", "QUALICABLE-TV-INDUSTRIA-E-COM-LTDA" }, { 0x0004F2, "Polycom", "POLYCOM" }, { 0x0004EB, "Paxonet Communications, Inc.", "PAXONET-COMMUNICATION" }, { 0x0004EC, "Memobox SA", "MEMOBOX" }, { 0x0004E6, "Banyan Network Private Limited", "BANYAN-NETWORK-PRIVATE" }, { 0x0004E1, "Infinior Microsystems", "INFINIOR-MICROSYSTEMS" }, { 0x0004DB, "Tellus Group Corp.", "TELLUS-GROUP" }, { 0x0004E2, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x0004D5, "Hitachi Information & Communication Engineering, Ltd.", "HITACHI-INFORMATION-COMMUNICATION-ENGINEERING" }, { 0x0004CF, "Seagate Technology", "SEAGATE" }, { 0x0004C9, "Micro Electron Co., Ltd.", "MICRO-ELECTRON" }, { 0x000487, "Cogency Semiconductor, Inc.", "COGENCY-SEMICONDUCTOR" }, { 0x000482, "Medialogic Corp.", "MEDIALOGIC" }, { 0x000478, "G. Star Technology Corporation", "G-STAR" }, { 0x000471, "IPrad", "IPRAD" }, { 0x00046B, "Palm Wireless, Inc.", "PALM-WIRELESS" }, { 0x000465, "i.s.t isdn-support technik GmbH", "I-S-T-ISDN-SUPPORT-TECHNIK" }, { 0x000459, "Veristar Corporation", "VERISTAR" }, { 0x00045E, "PolyTrax Information Technology AG", "POLYTRAX-INFORMATION" }, { 0x000458, "Fusion X Co., Ltd.", "FUSION-X" }, { 0x000452, "RocketLogix, Inc.", "ROCKETLOGIX" }, { 0x000442, "NACT", "NACT" }, { 0x0003F9, "Pleiades Communications, Inc.", "PLEIADES-COMMUNICATION" }, { 0x0003E2, "Comspace Corporation", "COMSPACE" }, { 0x0003F4, "NetBurner", "NETBURNER" }, { 0x0003F3, "Dazzle Multimedia, Inc.", "DAZZLE-MULTIMEDIA" }, { 0x0003ED, "Shinkawa Electric Co., Ltd.", "SHINKAWA-ELECTRIC" }, { 0x0003E7, "Logostek Co. Ltd.", "LOGOSTEK" }, { 0x0003DF, "Desana Systems", "DESANA" }, { 0x0003DB, "Apogee Electronics Corp.", "APOGEE-ELECTRONICS" }, { 0x0003D6, "RADVision, Ltd.", "RADVISION" }, { 0x0003CF, "Muxcom, Inc.", "MUXCOM" }, { 0x0003C8, "CML Emergency Services", "CML-EMERGENCY-SERVICES" }, { 0x0003C3, "Micronik Multimedia", "MICRONIK-MULTIMEDIA" }, { 0x0003C0, "RFTNC Co., Ltd.", "RFTNC" }, { 0x0003BC, "COT GmbH", "COT" }, { 0x0003B1, "Hospira Inc.", "HOSPIRA" }, { 0x0003A5, "Medea Corporation", "MEDEA" }, { 0x0003AA, "Watlow", "WATLOW" }, { 0x0003A2, "Catapult Communications", "CATAPULT-COMMUNICATION" }, { 0x000397, "Watchfront Limited", "WATCHFRONT" }, { 0x00039E, "Tera System Co., Ltd.", "TERA-SYSTEM" }, { 0x000392, "Hyundai Teletek Co., Ltd.", "HYUNDAI-TELETEK" }, { 0x00038F, "Weinschel Corporation", "WEINSCHEL" }, { 0x00038B, "PLUS-ONE I&T, Inc.", "PLUS-ONE-I-T" }, { 0x000386, "Ho Net, Inc.", "HO-NET" }, { 0x00037D, "Stellcom", "STELLCOM" }, { 0x000382, "A-One Co., Ltd.", "A-ONE" }, { 0x00037A, "Taiyo Yuden Co., Ltd.", "TAIYO-YUDEN" }, { 0x000376, "Graphtec Technology, Inc.", "GRAPHTEC" }, { 0x000369, "Nippon Antenna Co., Ltd.", "NIPPON-ANTENNA" }, { 0x00036F, "Telsey SPA", "TELSEY-SPA" }, { 0x000363, "Miraesys Co., Ltd.", "MIRAESYS" }, { 0x00035E, "Metropolitan Area Networks, Inc.", "METROPOLITAN-AREA-NETWORKS" }, { 0x000357, "Intervoice-Brite, Inc.", "INTERVOICE-BRITE" }, { 0x00034C, "Shanghai DigiVision Technology Co., Ltd.", "SHANGHAI-DIGIVISION" }, { 0x000351, "Diebold, Inc.", "DIEBOLD" }, { 0x000311, "Micro Technology Co., Ltd.", "MICRO" }, { 0x00030A, "Argus Technologies", "ARGUS-TECHNOLOGIES" }, { 0x000305, "MSC Vertriebs GmbH", "MSC-VERTRIEBS" }, { 0x0002FE, "Viditec, Inc.", "VIDITEC" }, { 0x0002F2, "eDevice, Inc.", "EDEVICE" }, { 0x0002F7, "ARM", "ARM" }, { 0x0002EC, "Maschoff Design Engineering", "MASCHOFF-DESIGN-ENGINEERING" }, { 0x0002E4, "JC HYUN Systems, Inc.", "JC-HYUN" }, { 0x0002E7, "CAB GmbH & Co KG", "CAB" }, { 0x0002E0, "ETAS GmbH", "ETAS" }, { 0x0002D9, "Reliable Controls", "RELIABLE-CONTROLS" }, { 0x0002D4, "PDA Peripherals, Inc.", "PDA-PERIPHERALS" }, { 0x0002D1, "Vivotek, Inc.", "VIVOTEK" }, { 0x0002CD, "TeleDream, Inc.", "TELEDREAM" }, { 0x000349, "Vidicode Datacommunicatie B.V.", "VIDICODE-DATACOMMUNICATIE" }, { 0x000340, "Floware Wireless Systems, Ltd.", "FLOWARE-WIRELESS" }, { 0x008037, "Ericsson Group", "ERICSSON-GROUP" }, { 0x000332, "Cisco Systems, Inc", "CISCO" }, { 0x000339, "Eurologic Systems, Ltd.", "EUROLOGIC" }, { 0x00032A, "UniData Communication Systems, Inc.", "UNIDATA-COMMUNICATION" }, { 0x00032D, "IBASE Technology, Inc.", "IBASE" }, { 0x000326, "Iwasaki Information Systems Co., Ltd.", "IWASAKI-INFORMATION" }, { 0x00031D, "Taiwan Commate Computer, Inc.", "TAIWAN-COMMATE" }, { 0x000318, "Cyras Systems, Inc.", "CYRAS" }, { 0x0004C2, "Magnipix, Inc.", "MAGNIPIX" }, { 0x0004B6, "Stratex Networks, Inc.", "STRATEX-NETWORKS" }, { 0x0004BC, "Giantec, Inc.", "GIANTEC" }, { 0x0004B0, "ELESIGN Co., Ltd.", "ELESIGN" }, { 0x0004A9, "SandStream Technologies, Inc.", "SANDSTREAM-TECHNOLOGIES" }, { 0x0004A8, "Broadmax Technologies, Inc.", "BROADMAX-TECHNOLOGIES" }, { 0x0004A2, "L.S.I. Japan Co., Ltd.", "L-S-I-JAPAN" }, { 0x00049B, "Cisco Systems, Inc", "CISCO" }, { 0x00049C, "Surgient Networks, Inc.", "SURGIENT-NETWORKS" }, { 0x00048F, "TD Systems Corporation", "TD" }, { 0x000488, "Eurotherm Controls", "EUROTHERM-CONTROLS" }, { 0x000281, "Madge Ltd.", "MADGE" }, { 0x009064, "Thomson Inc.", "THOMSON" }, { 0x00027F, "ask-technologies.com", "ASK-TECHNOLOGIES-COM" }, { 0x00027A, "IOI Technology Corporation", "IOI" }, { 0x000273, "Coriolis Networks", "CORIOLIS-NETWORKS" }, { 0x00026E, "NeGeN Access, Inc.", "NEGEN-ACCESS" }, { 0x000263, "UPS Manufacturing SRL", "UPS-MANUFACTURING-SRL" }, { 0x00025C, "SCI Systems (Kunshan) Co., Ltd.", "SCI-KUNSHAN" }, { 0x000253, "Televideo, Inc.", "TELEVIDEO" }, { 0x00024C, "SiByte, Inc.", "SIBYTE" }, { 0x00024E, "Datacard Group", "DATACARD-GROUP" }, { 0x00012F, "Twinhead International Corp", "TWINHEAD" }, { 0x00023C, "Creative Technology, Ltd.", "CREATIVE" }, { 0x000240, "Seedek Co., Ltd.", "SEEDEK" }, { 0x000247, "Great Dragon Information Technology (Group) Co., Ltd.", "GREAT-DRAGON-INFORMATION-GROUP" }, { 0x000243, "Raysis Co., Ltd.", "RAYSIS" }, { 0x000239, "Visicom", "VISICOM" }, { 0x000236, "INIT GmbH", "INIT" }, { 0x000231, "Ingersoll-Rand", "INGERSOLL-RAND" }, { 0x00022A, "Asound Electronic", "ASOUND" }, { 0x00022D, "Agere Systems", "AGERE" }, { 0x000219, "Paralon Technologies", "PARALON-TECHNOLOGIES" }, { 0x000186, "Uwe Disch", "UWE-DISCH" }, { 0x00017B, "Heidelberger Druckmaschinen AG", "HEIDELBERGER-DRUCKMASCHINEN" }, { 0x000182, "DICA TECHNOLOGIES AG", "DICA-TECHNOLOGIES" }, { 0x00018E, "Logitec Corporation", "LOGITEC" }, { 0x00019B, "Kyoto Microcomputer Co., Ltd.", "KYOTO-MICROCOMPUTER" }, { 0x000194, "Capital Equipment Corporation", "CAPITAL-EQUIPMENT" }, { 0x000197, "Cisco Systems, Inc", "CISCO" }, { 0x0001A3, "GENESYS LOGIC, INC.", "GENESYS-LOGIC" }, { 0x00014E, "WIN Enterprises, Inc.", "WIN-ENTERPRISES" }, { 0x0030AC, "Systeme Lauer GmbH & Co., Ltd.", "SYSTEME-LAUER" }, { 0x00013E, "Ascom Tateco AB", "ASCOM-TATECO-AB" }, { 0x000145, "WINSYSTEMS, INC.", "WINSYSTEMS" }, { 0x000126, "PAC Labs", "PAC-LABS" }, { 0x00011A, "Hoffmann und Burmeister GbR", "HOFFMANN-UND-BURMEISTER-GBR" }, { 0x00011D, "Centillium Communications", "CENTILLIUM-COMMUNICATION" }, { 0x000129, "DFI Inc.", "DFI" }, { 0x000107, "Leiser GmbH", "LEISER" }, { 0x00010E, "Bri-Link Technologies Co., Ltd", "BRI-LINK-TECHNOLOGIES" }, { 0x000116, "Netspect Technologies, Inc.", "NETSPECT-TECHNOLOGIES" }, { 0x000103, "3COM CORPORATION", "3COM" }, { 0x00062B, "INTRASERVER TECHNOLOGY", "INTRASERVER" }, { 0x0002C1, "Innovative Electronic Designs, Inc.", "INNOVATIVE-DESIGNS" }, { 0x0002C8, "Technocom Communications Technology (pte) Ltd", "TECHNOCOM-COMMUNICATION-PTE" }, { 0x0002A9, "RACOM, s.r.o.", "RACOM-S-R-O" }, { 0x0002B8, "WHI KONSULT AB", "WHI-KONSULT-AB" }, { 0x0002AC, "3PAR data", "3PAR-DATA" }, { 0x0002B1, "Anritsu, Ltd.", "ANRITSU" }, { 0x00029A, "Storage Apps", "STORAGE-APPS" }, { 0x0002A0, "Flatstack Ltd.", "FLATSTACK" }, { 0x000295, "IP.Access Limited", "IP-ACCESS" }, { 0x000294, "Tokyo Sokushin Co., Ltd.", "TOKYO-SOKUSHIN" }, { 0x000290, "Woorigisool, Inc.", "WOORIGISOOL" }, { 0x000286, "Occam Networks", "OCCAM-NETWORKS" }, { 0x00028B, "VDSL Systems OY", "VDSL-OY" }, { 0x000222, "Chromisys, Inc.", "CHROMISYS" }, { 0x00021D, "Data General Communication Ltd.", "DATA-GENERAL-COMMUNICATION" }, { 0x00020A, "Gefran Spa", "GEFRAN-SPA" }, { 0x000216, "Cisco Systems, Inc", "CISCO" }, { 0x000206, "Telital R&D Denmark A/S", "TELITAL-R-D-DENMARK-A/S" }, { 0x000203, "Woonsang Telecom, Inc.", "WOONSANG-TELECOM" }, { 0x0001F7, "Image Display Systems, Inc.", "IMAGE-DISPLAY" }, { 0x0001EE, "Comtrol Europe, Ltd.", "COMTROL-EUROPE" }, { 0x0001E2, "Ando Electric Corporation", "ANDO-ELECTRIC" }, { 0x0001F1, "Innovative Concepts, Inc.", "INNOVATIVE-CONCEPTS" }, { 0x00B06D, "Jones Futurex Inc.", "JONES-FUTUREX" }, { 0x0030FE, "DSA GmbH", "DSA" }, { 0x00305E, "Abelko Innovation", "ABELKO-INNOVATION" }, { 0x00301E, "3COM EUROPE LTD.", "3COM" }, { 0x00304D, "ESI", "ESI" }, { 0x003046, "Controlled Electronic Manageme", "CONTROLLED-MANAGEME" }, { 0x00307B, "Cisco Systems, Inc", "CISCO" }, { 0x0001D6, "manroland AG", "MANROLAND" }, { 0x0001DB, "Freecom Technologies GmbH", "FREECOM-TECHNOLOGIES" }, { 0x0001DE, "Trango Systems, Inc.", "TRANGO" }, { 0x0001CF, "Alpha Data Parallel Systems, Ltd.", "ALPHA-DATA-PARALLEL" }, { 0x0001CB, "EVR", "EVR" }, { 0x0001C4, "NeoWave, Inc.", "NEOWAVE" }, { 0x0001C0, "CompuLab, Ltd.", "COMPULAB" }, { 0x0001B9, "SKF Condition Monitoring", "SKF-CONDITION-MONITORING" }, { 0x0001B5, "Turin Networks, Inc.", "TURIN-NETWORKS" }, { 0x00017F, "Experience Music Project", "EXPERIENCE-MUSIC-PROJECT" }, { 0x00016C, "FOXCONN", "FOXCONN" }, { 0x000173, "AMCC", "AMCC" }, { 0x00015C, "CADANT INC.", "CADANT" }, { 0x000163, "Cisco Systems, Inc", "CISCO" }, { 0x00010A, "CIS TECHNOLOGY INC.", "CIS" }, { 0x00016F, "Inkel Corp.", "INKEL" }, { 0x000155, "Promise Technology, Inc.", "PROMISE" }, { 0x000151, "Ensemble Communications", "ENSEMBLE-COMMUNICATION" }, { 0x000142, "Cisco Systems, Inc", "CISCO" }, { 0x000132, "Dranetz - BMI", "DRANETZ---BMI" }, { 0x00D07D, "COSINE COMMUNICATIONS", "COSINE-COMMUNICATION" }, { 0x00D0CA, "Intrinsyc Software International Inc.", "INTRINSYC-SOFTWARE" }, { 0x00D058, "Cisco Systems, Inc", "CISCO" }, { 0x00D067, "CAMPIO COMMUNICATIONS", "CAMPIO-COMMUNICATION" }, { 0x00D023, "INFORTREND TECHNOLOGY, INC.", "INFORTREND" }, { 0x00D02A, "Voxent Systems Ltd.", "VOXENT" }, { 0x00D068, "IWILL CORPORATION", "IWILL" }, { 0x00D09D, "VERIS INDUSTRIES", "VERIS-INDUSTRIES" }, { 0x00D09A, "FILANET CORPORATION", "FILANET" }, { 0x00D00A, "LANACCESS TELECOM S.A.", "LANACCESS-TELECOM" }, { 0x00D04A, "PRESENCE TECHNOLOGY GMBH", "PRESENCE" }, { 0x00D0C3, "VIVID TECHNOLOGY PTE, LTD.", "VIVID-PTE" }, { 0x00D0F8, "FUJIAN STAR TERMINAL", "FUJIAN-STAR-TERMINAL" }, { 0x00D096, "3COM EUROPE LTD.", "3COM" }, { 0x00D003, "COMDA ENTERPRISES CORP.", "COMDA-ENTERPRISES" }, { 0x00D029, "WAKEFERN FOOD CORPORATION", "WAKEFERN-FOOD" }, { 0x00D0F5, "ORANGE MICRO, INC.", "ORANGE-MICRO" }, { 0x00D0F7, "NEXT NETS CORPORATION", "NEXT-NETS" }, { 0x00D078, "Eltex of Sweden AB", "ELTEX-OF-SWEDEN-AB" }, { 0x00D0AF, "CUTLER-HAMMER, INC.", "CUTLER-HAMMER" }, { 0x00D026, "HIRSCHMANN AUSTRIA GMBH", "HIRSCHMANN-AUSTRIA" }, { 0x00D010, "CONVERGENT NETWORKS, INC.", "CONVERGENT-NETWORKS" }, { 0x00D074, "TAQUA SYSTEMS, INC.", "TAQUA" }, { 0x00D0D5, "GRUNDIG AG", "GRUNDIG" }, { 0x00D034, "ORMEC SYSTEMS CORP.", "ORMEC" }, { 0x00D08C, "GENOA TECHNOLOGY, INC.", "GENOA" }, { 0x00D059, "AMBIT MICROSYSTEMS CORP.", "AMBIT-MICROSYSTEMS" }, { 0x005020, "MEDIASTAR CO., LTD.", "MEDIASTAR" }, { 0x00503E, "Cisco Systems, Inc", "CISCO" }, { 0x00D02B, "JETCELL, INC.", "JETCELL" }, { 0x005017, "RSR S.R.L.", "RSR-S-R-L" }, { 0x00D0CC, "TECHNOLOGIES LYRE INC.", "TECHNOLOGIES-LYRE" }, { 0x00506D, "VIDEOJET SYSTEMS", "VIDEOJET" }, { 0x005077, "PROLIFIC TECHNOLOGY, INC.", "PROLIFIC" }, { 0x0050D4, "JOOHONG INFORMATION &", "JOOHONG-INFORMATION" }, { 0x00505E, "DIGITEK MICROLOGIC S.A.", "DIGITEK-MICROLOGIC" }, { 0x0050E7, "PARADISE INNOVATIONS (ASIA)", "PARADISE-INNOVATIONS-ASIA" }, { 0x0050B9, "XITRON TECHNOLOGIES, INC.", "XITRON-TECHNOLOGIES" }, { 0x00D049, "IMPRESSTEK CO., LTD.", "IMPRESSTEK" }, { 0x00D04D, "DIV OF RESEARCH & STATISTICS", "DIV-OF-RESEARCH-STATISTICS" }, { 0x00D035, "BEHAVIOR TECH. COMPUTER CORP.", "BEHAVIOR-TECH" }, { 0x00D02D, "ADEMCO", "ADEMCO" }, { 0x00D07C, "KOYO ELECTRONICS INC. CO.,LTD.", "KOYO-ELECTRONICS" }, { 0x00D05B, "ACROLOOP MOTION CONTROL", "ACROLOOP-MOTION-CONTROL" }, { 0x00D0C6, "THOMAS & BETTS CORP.", "THOMAS-BETTS" }, { 0x00D02E, "COMMUNICATION AUTOMATION CORP.", "COMMUNICATION-AUTOMATION" }, { 0x00D0DA, "TAICOM DATA SYSTEMS CO., LTD.", "TAICOM-DATA" }, { 0x00D0E8, "MAC SYSTEM CO., LTD.", "MAC-SYSTEM" }, { 0x00D03C, "Vieo, Inc.", "VIEO" }, { 0x00D09F, "NOVTEK TEST SYSTEMS", "NOVTEK-TEST" }, { 0x00D07E, "KEYCORP LTD.", "KEYCORP" }, { 0x00D0EA, "NEXTONE COMMUNICATIONS, INC.", "NEXTONE-COMMUNICATION" }, { 0x00D020, "AIM SYSTEM, INC.", "AIM-SYSTEM" }, { 0x00D064, "MULTITEL", "MULTITEL" }, { 0x00D072, "BROADLOGIC", "BROADLOGIC" }, { 0x00309B, "Smartware", "SMARTWARE" }, { 0x0030AF, "Honeywell GmbH", "HONEYWELL" }, { 0x003074, "EQUIINET LTD.", "EQUIINET" }, { 0x003090, "CYRA TECHNOLOGIES, INC.", "CYRA-TECHNOLOGIES" }, { 0x003030, "HARMONIX CORPORATION", "HARMONIX" }, { 0x00307C, "ADID SA", "ADID" }, { 0x003063, "SANTERA SYSTEMS, INC.", "SANTERA" }, { 0x00309F, "AMBER NETWORKS", "AMBER-NETWORKS" }, { 0x0030A8, "OL'E COMMUNICATIONS, INC.", "OL-E-COMMUNICATION" }, { 0x00304C, "APPIAN COMMUNICATIONS, INC.", "APPIAN-COMMUNICATION" }, { 0x0030EF, "NEON TECHNOLOGY, INC.", "NEON" }, { 0x00306F, "SEYEON TECH. CO., LTD.", "SEYEON-TECH" }, { 0x003031, "LIGHTWAVE COMMUNICATIONS, INC.", "LIGHTWAVE-COMMUNICATION" }, { 0x003035, "Corning Incorporated", "CORNING-INCORPORATED" }, { 0x00302B, "INALP NETWORKS, INC.", "INALP-NETWORKS" }, { 0x00305F, "Hasselblad", "HASSELBLAD" }, { 0x00302D, "QUANTUM BRIDGE COMMUNICATIONS", "QUANTUM-BRIDGE-COMMUNICATION" }, { 0x003025, "CHECKOUT COMPUTER SYSTEMS, LTD", "CHECKOUT" }, { 0x003012, "DIGITAL ENGINEERING LTD.", "DIGITAL-ENGINEERING" }, { 0x003077, "ONPREM NETWORKS", "ONPREM-NETWORKS" }, { 0x0030D4, "AAE Systems, Inc.", "AAE" }, { 0x00D00F, "SPEECH DESIGN GMBH", "SPEECH-DESIGN" }, { 0x00D0CF, "MORETON BAY", "MORETON-BAY" }, { 0x00D073, "ACN ADVANCED COMMUNICATIONS", "ACN-ADVANCED-COMMUNICATION" }, { 0x00D030, "Safetran Systems Corp", "SAFETRAN" }, { 0x00D057, "ULTRAK, INC.", "ULTRAK" }, { 0x00D03B, "VISION PRODUCTS PTY. LTD.", "VISION-PRODUCTS-PTY" }, { 0x00D0BF, "PIVOTAL TECHNOLOGIES", "PIVOTAL-TECHNOLOGIES" }, { 0x00D050, "ISKRATEL", "ISKRATEL" }, { 0x00D0CB, "DASAN CO., LTD.", "DASAN" }, { 0x00D0D3, "Cisco Systems, Inc", "CISCO" }, { 0x00D08E, "Grass Valley, A Belden Brand", "GRASS-VALLEY-A-BELDEN-BRAND" }, { 0x00D0A3, "VOCAL DATA, INC.", "VOCAL-DATA" }, { 0x00D0E0, "DOOIN ELECTRONICS CO.", "DOOIN-ELECTRONICS" }, { 0x003054, "CASTLENET TECHNOLOGY, INC.", "CASTLENET" }, { 0x003039, "SOFTBOOK PRESS", "SOFTBOOK-PRESS" }, { 0x003017, "BlueArc UK Ltd", "BLUEARC-UK" }, { 0x003076, "Akamba Corporation", "AKAMBA" }, { 0x00305D, "DIGITRA SYSTEMS, INC.", "DIGITRA" }, { 0x0030F7, "RAMIX INC.", "RAMIX" }, { 0x003033, "ORIENT TELECOM CO., LTD.", "ORIENT-TELECOM" }, { 0x003083, "Ivron Systems", "IVRON" }, { 0x003007, "OPTI, INC.", "OPTI" }, { 0x0030DD, "INDIGITA CORPORATION", "INDIGITA" }, { 0x0030F2, "Cisco Systems, Inc", "CISCO" }, { 0x003020, "TSI, Inc..", "TSI" }, { 0x003089, "Spectrapoint Wireless, LLC", "SPECTRAPOINT-WIRELESS-LLC" }, { 0x003022, "Fong Kai Industrial Co., Ltd.", "FONG-KAI-INDUSTRIAL" }, { 0x0030F8, "Dynapro Systems, Inc.", "DYNAPRO" }, { 0x0030C2, "COMONE", "COMONE" }, { 0x003056, "Beck IPC GmbH", "BECK-IPC" }, { 0x0030D2, "WIN TECHNOLOGIES, CO., LTD.", "WIN-TECHNOLOGIES" }, { 0x003050, "Versa Technology", "VERSA" }, { 0x0030B8, "RiverDelta Networks", "RIVERDELTA-NETWORKS" }, { 0x00904D, "SPEC S.A.", "SPEC" }, { 0x009079, "ClearOne, Inc.", "CLEARONE" }, { 0x00908F, "AUDIO CODES LTD.", "AUDIO-CODES" }, { 0x0090D5, "EUPHONIX, INC.", "EUPHONIX" }, { 0x0090A7, "CLIENTEC CORPORATION", "CLIENTEC" }, { 0x00907F, "WatchGuard Technologies, Inc.", "WATCHGUARD-TECHNOLOGIES" }, { 0x00907E, "VETRONIX CORP.", "VETRONIX" }, { 0x00902F, "NETCORE SYSTEMS, INC.", "NETCORE" }, { 0x00900D, "Overland Storage Inc.", "OVERLAND-STORAGE" }, { 0x009044, "ASSURED DIGITAL, INC.", "ASSURED-DIGITAL" }, { 0x009078, "MER TELEMANAGEMENT SOLUTIONS, LTD.", "MER-TELEMANAGEMENT-SOLUTIONS" }, { 0x009009, "I Controls, Inc.", "I-CONTROLS" }, { 0x009015, "CENTIGRAM COMMUNICATIONS CORP.", "CENTIGRAM-COMMUNICATION" }, { 0x0090F3, "ASPECT COMMUNICATIONS", "ASPECT-COMMUNICATION" }, { 0x0090A8, "NineTiles Networks, Ltd.", "NINETILES-NETWORKS" }, { 0x00507A, "XPEED, INC.", "XPEED" }, { 0x005002, "OMNISEC AG", "OMNISEC" }, { 0x00508D, "ABIT COMPUTER CORPORATION", "ABIT" }, { 0x0050CD, "DIGIANSWER A/S", "DIGIANSWER-A/S" }, { 0x0050C5, "ADS Technologies, Inc", "ADS-TECHNOLOGIES" }, { 0x00502F, "TollBridge Technologies, Inc.", "TOLLBRIDGE-TECHNOLOGIES" }, { 0x005028, "AVAL COMMUNICATIONS", "AVAL-COMMUNICATION" }, { 0x00505B, "KAWASAKI LSI U.S.A., INC.", "KAWASAKI-LSI-U" }, { 0x0050F8, "ENTREGA TECHNOLOGIES, INC.", "ENTREGA-TECHNOLOGIES" }, { 0x00506F, "G-CONNECT", "G-CONNECT" }, { 0x0050CC, "XYRATEX", "XYRATEX" }, { 0x0050D5, "AD SYSTEMS CORP.", "AD" }, { 0x0050AA, "KONICA MINOLTA HOLDINGS, INC.", "KONICA-MINOLTA-HOLDINGS" }, { 0x00509C, "BETA RESEARCH", "BETA-RESEARCH" }, { 0x005027, "GENICOM CORPORATION", "GENICOM" }, { 0x005010, "NovaNET Learning, Inc.", "NOVANET-LEARNING" }, { 0x00509E, "Les Technologies SoftAcoustik Inc.", "LES-TECHNOLOGIES-SOFTACOUSTIK" }, { 0x00505F, "BRAND INNOVATORS", "BRAND-INNOVATORS" }, { 0x005095, "PERACOM NETWORKS", "PERACOM-NETWORKS" }, { 0x005026, "COSYSTEMS, INC.", "COSYSTEMS" }, { 0x0050EF, "SPE Systemhaus GmbH", "SPE-SYSTEMHAUS" }, { 0x005093, "BOEING", "BOEING" }, { 0x0050D8, "UNICORN COMPUTER CORP.", "UNICORN" }, { 0x009034, "IMAGIC, INC.", "IMAGIC" }, { 0x009073, "GAIO TECHNOLOGY", "GAIO" }, { 0x0090C9, "DPAC Technologies", "DPAC-TECHNOLOGIES" }, { 0x0090E7, "HORSCH ELEKTRONIK AG", "HORSCH-ELEKTRONIK" }, { 0x009001, "NISHIMU ELECTRONICS INDUSTRIES CO., LTD.", "NISHIMU-ELECTRONICS-INDUSTRIES" }, { 0x0090FB, "PORTWELL, INC.", "PORTWELL" }, { 0x009070, "NEO NETWORKS, INC.", "NEO-NETWORKS" }, { 0x0090EF, "INTEGRIX, INC.", "INTEGRIX" }, { 0x0090B0, "VADEM", "VADEM" }, { 0x0090D1, "LEICHU ENTERPRISE CO., LTD.", "LEICHU" }, { 0x0050D7, "TELSTRAT", "TELSTRAT" }, { 0x0050F1, "Intel Corporation", "INTEL" }, { 0x00501B, "ABL CANADA, INC.", "ABL-CANADA" }, { 0x005036, "NETCAM, LTD.", "NETCAM" }, { 0x0050C9, "MASPRO DENKOH CORP.", "MASPRO-DENKOH" }, { 0x005009, "PHILIPS BROADBAND NETWORKS", "PHILIPS-BROADBAND-NETWORKS" }, { 0x0050C4, "IMD", "IMD" }, { 0x0050A3, "TransMedia Communications, Inc.", "TRANSMEDIA-COMMUNICATION" }, { 0x005099, "3COM EUROPE, LTD.", "3COM" }, { 0x0050A4, "IO TECH, INC.", "IO-TECH" }, { 0x0050B3, "VOICEBOARD CORPORATION", "VOICEBOARD" }, { 0x0050B7, "BOSER TECHNOLOGY CO., LTD.", "BOSER" }, { 0x00908D, "VICKERS ELECTRONICS SYSTEMS", "VICKERS-ELECTRONICS" }, { 0x009042, "ECCS, Inc.", "ECCS" }, { 0x009051, "ULTIMATE TECHNOLOGY CORP.", "ULTIMATE" }, { 0x0090FF, "TELLUS TECHNOLOGY INC.", "TELLUS" }, { 0x009018, "ITO ELECTRIC INDUSTRY CO, LTD.", "ITO-ELECTRIC-INDUSTRY" }, { 0x009002, "ALLGON AB", "ALLGON-AB" }, { 0x009016, "ZAC", "ZAC" }, { 0x009005, "PROTECH SYSTEMS CO., LTD.", "PROTECH" }, { 0x00901E, "Selesta Ingegneria S.p.A.", "SELESTA-INGEGNERIA-S-P-A" }, { 0x009090, "I-BUS", "I-BUS" }, { 0x0090AA, "INDIGO ACTIVE VISION SYSTEMS LIMITED", "INDIGO-ACTIVE-VISION" }, { 0x00903A, "NIHON MEDIA TOOL INC.", "NIHON-MEDIA-TOOL" }, { 0x009055, "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION", "PARKER-HANNIFIN-COMPUMOTOR-DIVISION" }, { 0x00909F, "DIGI-DATA CORPORATION", "DIGI-DATA" }, { 0x0090E4, "NEC AMERICA, INC.", "NEC-AMERICA" }, { 0x009013, "SAMSAN CORP.", "SAMSAN" }, { 0x009004, "3COM EUROPE LTD.", "3COM" }, { 0x0090E1, "TELENA S.P.A.", "TELENA-S-P-A" }, { 0x00504A, "ELTECO A.S.", "ELTECO-A-S" }, { 0x00504C, "Galil Motion Control", "GALIL-MOTION-CONTROL" }, { 0x005021, "EIS INTERNATIONAL, INC.", "EIS" }, { 0x00506E, "CORDER ENGINEERING CORPORATION", "CORDER-ENGINEERING" }, { 0x00507E, "NEWER TECHNOLOGY", "NEWER" }, { 0x0050E6, "HAKUSAN CORPORATION", "HAKUSAN" }, { 0x0050AE, "FDK Co., Ltd", "FDK" }, { 0x00109D, "CLARINET SYSTEMS, INC.", "CLARINET" }, { 0x0010D2, "NITTO TSUSHINKI CO., LTD", "NITTO-TSUSHINKI" }, { 0x001045, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00106B, "SONUS NETWORKS, INC.", "SONUS-NETWORKS" }, { 0x0010EC, "RPCG, LLC", "RPCG-LLC" }, { 0x001092, "NETCORE INC.", "NETCORE" }, { 0x0010E2, "ArrayComm, Inc.", "ARRAYCOMM" }, { 0x001071, "ADVANET INC.", "ADVANET" }, { 0x001069, "HELIOSS COMMUNICATIONS, INC.", "HELIOSS-COMMUNICATION" }, { 0x0010FD, "COCOM A/S", "COCOM-A/S" }, { 0x0010AC, "IMCI TECHNOLOGIES", "IMCI-TECHNOLOGIES" }, { 0x0010EF, "DBTEL INCORPORATED", "DBTEL-INCORPORATED" }, { 0x001017, "Bosch Access Systems GmbH", "BOSCH-ACCESS" }, { 0x001024, "NAGOYA ELECTRIC WORKS CO., LTD", "NAGOYA-ELECTRIC-WORKS" }, { 0x0010DD, "ENABLE SEMICONDUCTOR, INC.", "ENABLE-SEMICONDUCTOR" }, { 0x0010C9, "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO.", "MITSUBISHI-ELECTRONICS-LOGISTIC-SUPPORT" }, { 0x001085, "POLARIS COMMUNICATIONS, INC.", "POLARIS-COMMUNICATION" }, { 0x001044, "InnoLabs Corporation", "INNOLABS" }, { 0x001056, "SODICK CO., LTD.", "SODICK" }, { 0x001099, "InnoMedia, Inc.", "INNOMEDIA" }, { 0x001061, "HOSTLINK CORP.", "HOSTLINK" }, { 0x001093, "CMS COMPUTERS, LTD.", "CMS-COMPUTERS" }, { 0x0010CD, "INTERFACE CONCEPT", "INTERFACE-CONCEPT" }, { 0x0010F3, "Nexcom International Co., Ltd.", "NEXCOM" }, { 0x001005, "UEC COMMERCIAL", "UEC-COMMERCIAL" }, { 0x001066, "ADVANCED CONTROL SYSTEMS, INC.", "ADVANCED-CONTROL" }, { 0x0010E4, "NSI CORPORATION", "NSI" }, { 0x001062, "NX SERVER, ILNC.", "NX-SERVER-ILNC" }, { 0x0010B9, "MAXTOR CORP.", "MAXTOR" }, { 0x00108B, "LASERANIMATION SOLLINGER GMBH", "LASERANIMATION-SOLLINGER" }, { 0x00105C, "QUANTUM DESIGNS (H.K.) LTD.", "QUANTUM-DESIGNS-H-K" }, { 0x001042, "Alacritech, Inc.", "ALACRITECH" }, { 0x001060, "BILLIONTON SYSTEMS, INC.", "BILLIONTON" }, { 0x0010DE, "INTERNATIONAL DATACASTING CORPORATION", "DATACASTING" }, { 0x00105D, "Draeger Medical", "DRAEGER-MEDICAL" }, { 0x0010E1, "S.I. TECH, INC.", "S-I-TECH" }, { 0x001091, "NO WIRES NEEDED BV", "NO-WIRES-NEEDED" }, { 0x0010F5, "AMHERST SYSTEMS, INC.", "AMHERST" }, { 0x001090, "CIMETRICS, INC.", "CIMETRICS" }, { 0x001070, "CARADON TREND LTD.", "CARADON-TREND" }, { 0x0010BA, "MARTINHO-DAVIS SYSTEMS, INC.", "MARTINHO-DAVIS" }, { 0x00107C, "P-COM, INC.", "P-COM" }, { 0x0010AE, "SHINKO ELECTRIC INDUSTRIES CO.", "SHINKO-ELECTRIC-INDUSTRIES" }, { 0x001040, "INTERMEC CORPORATION", "INTERMEC" }, { 0x0010B0, "MERIDIAN TECHNOLOGY CORP.", "MERIDIAN" }, { 0x001077, "SAF DRIVE SYSTEMS, LTD.", "SAF-DRIVE" }, { 0x0010F4, "Vertical Communications", "VERTICAL-COMMUNICATION" }, { 0x001065, "RADYNE CORPORATION", "RADYNE" }, { 0x00104A, "The Parvus Corporation", "THE-PARVUS" }, { 0x0010B3, "NOKIA MULTIMEDIA TERMINALS", "NOKIA-MULTIMEDIA-TERMINALS" }, { 0x001037, "CYQ've Technology Co., Ltd.", "CYQ-VE" }, { 0x001051, "CMICRO CORPORATION", "CMICRO" }, { 0x0010DC, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0010EE, "CTI PRODUCTS, INC.", "CTI-PRODUCTS" }, { 0x00101B, "CORNET TECHNOLOGY, INC.", "CORNET" }, { 0x001032, "ALTA TECHNOLOGY", "ALTA" }, { 0x001025, "Grayhill, Inc", "GRAYHILL" }, { 0x0010F8, "TEXIO TECHNOLOGY CORPORATION", "TEXIO" }, { 0x00104D, "SURTEC INDUSTRIES, INC.", "SURTEC-INDUSTRIES" }, { 0x00E0E0, "SI ELECTRONICS, LTD.", "SI-ELECTRONICS" }, { 0x00E0D1, "TELSIS LIMITED", "TELSIS" }, { 0x00E005, "TECHNICAL CORP.", "TECHNICAL" }, { 0x00E072, "LYNK", "LYNK" }, { 0x00E0C1, "MEMOREX TELEX JAPAN, LTD.", "MEMOREX-TELEX-JAPAN" }, { 0x00E0AD, "EES TECHNOLOGY, LTD.", "EES" }, { 0x00E025, "dit Co., Ltd.", "DIT" }, { 0x00E0E4, "FANUC ROBOTICS NORTH AMERICA, Inc.", "FANUC-ROBOTICS-NORTH-AMERICA" }, { 0x00E031, "HAGIWARA ELECTRIC CO., LTD.", "HAGIWARA-ELECTRIC" }, { 0x00E0A5, "ComCore Semiconductor, Inc.", "COMCORE-SEMICONDUCTOR" }, { 0x00E044, "LSICS CORPORATION", "LSICS" }, { 0x00E05D, "UNITEC CO., LTD.", "UNITEC" }, { 0x00E0B3, "EtherWAN Systems, Inc.", "ETHERWAN" }, { 0x00E053, "CELLPORT LABS, INC.", "CELLPORT-LABS" }, { 0x00E07D, "NETRONIX, INC.", "NETRONIX" }, { 0x00E0ED, "SILICOM, LTD.", "SILICOM" }, { 0x00E0B4, "TECHNO SCOPE CO., LTD.", "TECHNO-SCOPE" }, { 0x00E0C6, "LINK2IT, L.L.C.", "LINK2IT-L-L-C" }, { 0x00E06D, "COMPUWARE CORPORATION", "COMPUWARE" }, { 0x00E074, "TIERNAN COMMUNICATIONS, INC.", "TIERNAN-COMMUNICATION" }, { 0x00E059, "CONTROLLED ENVIRONMENTS, LTD.", "CONTROLLED-ENVIRONMENTS" }, { 0x00E006, "SILICON INTEGRATED SYS. CORP.", "SILICON-INTEGRATED-SYS" }, { 0x00E0F8, "DICNA CONTROL AB", "DICNA-CONTROL-AB" }, { 0x00E004, "PMC-SIERRA, INC.", "PMC-SIERRA" }, { 0x00E0DE, "DATAX NV", "DATAX-NV" }, { 0x00E078, "BERKELEY NETWORKS", "BERKELEY-NETWORKS" }, { 0x00E041, "CSPI", "CSPI" }, { 0x00E0E2, "INNOVA CORP.", "INNOVA" }, { 0x00E009, "MARATHON TECHNOLOGIES CORP.", "MARATHON-TECHNOLOGIES" }, { 0x00E02F, "MCNS HOLDINGS, L.P.", "MCNS-HOLDINGS-L-P" }, { 0x00E04C, "REALTEK SEMICONDUCTOR CORP.", "REALTEK-SEMICONDUCTOR" }, { 0x00E047, "InFocus Corporation", "INFOCUS" }, { 0x00E092, "ADMTEK INCORPORATED", "ADMTEK-INCORPORATED" }, { 0x00E0FF, "SECURITY DYNAMICS TECHNOLOGIES, Inc.", "SECURITY-DYNAMICS-TECHNOLOGIES" }, { 0x08BBCC, "AK-NORD EDV VERTRIEBSGES. mbH", "AK-NORD-EDV-VERTRIEBSGES-MBH" }, { 0x0060B2, "PROCESS CONTROL CORP.", "PROCESS-CONTROL" }, { 0x006004, "COMPUTADORES MODULARES SA", "COMPUTADORES-MODULARES" }, { 0x006000, "XYCOM INC.", "XYCOM" }, { 0x00A019, "NEBULA CONSULTANTS, INC.", "NEBULA-CONSULTANTS" }, { 0x00A0ED, "Brooks Automation, Inc.", "BROOKS-AUTOMATION" }, { 0x00A0A9, "NAVTEL COMMUNICATIONS INC.", "NAVTEL-COMMUNICATION" }, { 0x00A0E1, "WESTPORT RESEARCH ASSOCIATES, INC.", "WESTPORT-RESEARCH-ASSOCIATES" }, { 0x00A0D6, "SBE, Inc.", "SBE" }, { 0x00A05E, "MYRIAD LOGIC INC.", "MYRIAD-LOGIC" }, { 0x00A078, "Marconi Communications", "MARCONI-COMMUNICATION" }, { 0x00A00B, "COMPUTEX CO., LTD.", "COMPUTEX" }, { 0x00A09A, "NIHON KOHDEN AMERICA", "NIHON-KOHDEN-AMERICA" }, { 0x00A095, "ACACIA NETWORKS, INC.", "ACACIA-NETWORKS" }, { 0x00A0F2, "INFOTEK COMMUNICATIONS, INC.", "INFOTEK-COMMUNICATION" }, { 0x00A0EF, "LUCIDATA LTD.", "LUCIDATA" }, { 0x00A03F, "COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C", "SOCIETY-MICROPROCESSOR-MICROPROCESSOR-STANDARDS-C" }, { 0x00A067, "NETWORK SERVICES GROUP", "NETWORK-SERVICES-GROUP" }, { 0x00A0A7, "VORAX CORPORATION", "VORAX" }, { 0x00A02D, "1394 Trade Association", "1394-TRADE-ASSOCIATION" }, { 0x00A0E6, "DIALOGIC CORPORATION", "DIALOGIC" }, { 0x00A04A, "NISSHIN ELECTRIC CO., LTD.", "NISSHIN-ELECTRIC" }, { 0x00A05B, "MARQUIP, INC.", "MARQUIP" }, { 0x00A08D, "JACOMO CORPORATION", "JACOMO" }, { 0x00A08E, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x00E0AA, "ELECTROSONIC LTD.", "ELECTROSONIC" }, { 0x00E085, "GLOBAL MAINTECH, INC.", "GLOBAL-MAINTECH" }, { 0x00E05A, "GALEA NETWORK SECURITY", "GALEA-NETWORK-SECURITY" }, { 0x00E0E7, "RAYTHEON E-SYSTEMS, INC.", "RAYTHEON-E" }, { 0x00E00C, "MOTOROLA", "MOTOROLA" }, { 0x00E04A, "ZX Technologies, Inc", "ZX-TECHNOLOGIES" }, { 0x00E00A, "DIBA, INC.", "DIBA" }, { 0x00E0B9, "BYAS SYSTEMS", "BYAS" }, { 0x00E054, "KODAI HITEC CO., LTD.", "KODAI-HITEC" }, { 0x00E0AF, "GENERAL DYNAMICS INFORMATION SYSTEMS", "GENERAL-DYNAMICS-INFORMATION" }, { 0x00605B, "IntraServer Technology, Inc.", "INTRASERVER" }, { 0x00604B, "Safe-com GmbH & Co. KG", "SAFE-COM" }, { 0x00A0CD, "DR. JOHANNES HEIDENHAIN GmbH", "DR-JOHANNES-HEIDENHAIN" }, { 0x00A0DA, "INTEGRATED SYSTEMS Technology, Inc.", "INTEGRATED" }, { 0x00A03C, "EG&G NUCLEAR INSTRUMENTS", "EG-G-NUCLEAR-INSTRUMENTS" }, { 0x00A038, "EMAIL ELECTRONICS", "EMAIL-ELECTRONICS" }, { 0x00A0BE, "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP", "INTEGRATED-CIRCUIT-COMMUNICATION-GROUP" }, { 0x00605D, "SCANIVALVE CORP.", "SCANIVALVE" }, { 0x0060E4, "COMPUSERVE, INC.", "COMPUSERVE" }, { 0x00600A, "SORD COMPUTER CORPORATION", "SORD" }, { 0x0060C4, "SOLITON SYSTEMS K.K.", "SOLITON-K-K" }, { 0x0060C8, "KUKA WELDING SYSTEMS & ROBOTS", "KUKA-WELDING-ROBOTS" }, { 0x006030, "VILLAGE TRONIC ENTWICKLUNG", "VILLAGE-TRONIC-ENTWICKLUNG" }, { 0x0060E7, "RANDATA", "RANDATA" }, { 0x00602A, "SYMICRON COMPUTER COMMUNICATIONS, LTD.", "SYMICRON-COMMUNICATION" }, { 0x00601E, "SOFTLAB, INC.", "SOFTLAB" }, { 0x0060F8, "Loran International Technologies Inc.", "LORAN-TECHNOLOGIES" }, { 0x00609A, "NJK TECHNO CO.", "NJK-TECHNO" }, { 0x0060CC, "EMTRAK, INCORPORATED", "EMTRAK-INCORPORATED" }, { 0x006036, "AIT Austrian Institute of Technology GmbH", "AIT-AUSTRIAN-INSTITUTE-OF" }, { 0x0060B9, "NEC Platforms, Ltd", "NEC-PLATFORMS" }, { 0x0060CE, "ACCLAIM COMMUNICATIONS", "ACCLAIM-COMMUNICATION" }, { 0x0060F5, "ICON WEST, INC.", "ICON-WEST" }, { 0x0060A4, "GEW Technologies (PTY)Ltd", "GEW-TECHNOLOGIES-PTY" }, { 0x0060CA, "HARMONIC SYSTEMS INCORPORATED", "HARMONIC-INCORPORATED" }, { 0x006024, "GRADIENT TECHNOLOGIES, INC.", "GRADIENT-TECHNOLOGIES" }, { 0x0060FB, "PACKETEER, INC.", "PACKETEER" }, { 0x0060BC, "KeunYoung Electronics & Communication Co., Ltd.", "KEUNYOUNG-ELECTRONICS-COMMUNICATION" }, { 0x0060B8, "CORELIS Inc.", "CORELIS" }, { 0x0060FE, "LYNX SYSTEM DEVELOPERS, INC.", "LYNX-SYSTEM-DEVELOPERS" }, { 0x006001, "InnoSys, Inc.", "INNOSYS" }, { 0x00607D, "SENTIENT NETWORKS INC.", "SENTIENT-NETWORKS" }, { 0x00606E, "DAVICOM SEMICONDUCTOR, INC.", "DAVICOM-SEMICONDUCTOR" }, { 0x00607E, "GIGALABS, INC.", "GIGALABS" }, { 0x0060CF, "ALTEON NETWORKS, INC.", "ALTEON-NETWORKS" }, { 0x006026, "VIKING Modular Solutions", "VIKING-MODULAR-SOLUTIONS" }, { 0x006003, "TERAOKA WEIGH SYSTEM PTE, LTD.", "TERAOKA-WEIGH-SYSTEM-PTE" }, { 0x006059, "TECHNICAL COMMUNICATIONS CORP.", "TECHNICAL-COMMUNICATION" }, { 0x006066, "LACROIX Trafic", "LACROIX-TRAFIC" }, { 0x0060DA, "Red Lion Controls, LP", "RED-LION-CONTROLS-LP" }, { 0x006042, "TKS (USA), INC.", "TKS-USA" }, { 0x00A023, "APPLIED CREATIVE TECHNOLOGY, INC.", "APPLIED-CREATIVE" }, { 0x00A00F, "Broadband Technologies", "BROADBAND-TECHNOLOGIES" }, { 0x00A032, "GES SINGAPORE PTE. LTD.", "GES-SINGAPORE-PTE" }, { 0x002034, "ROTEC INDUSTRIEAUTOMATION GMBH", "ROTEC-INDUSTRIEAUTOMATION" }, { 0x0020B2, "GKD Gesellschaft Fur Kommunikation Und Datentechnik", "GKD-GESELLSCHAFT-FUR-KOMMUNIKATION-UND-DATENTECHNIK" }, { 0x002004, "YAMATAKE-HONEYWELL CO., LTD.", "YAMATAKE-HONEYWELL" }, { 0x0020FE, "TOPWARE INC. / GRAND COMPUTER", "TOPWARE-/-GRAND" }, { 0x002073, "FUSION SYSTEMS CORPORATION", "FUSION" }, { 0x00207A, "WiSE Communications, Inc.", "WISE-COMMUNICATION" }, { 0x00205C, "InterNet Systems of Florida, Inc.", "INTERNET-OF-FLORIDA" }, { 0x00207E, "FINECOM CO., LTD.", "FINECOM" }, { 0x00205A, "COMPUTER IDENTICS", "IDENTICS" }, { 0x0020E4, "HSING TECH ENTERPRISE CO., LTD", "HSING-TECH" }, { 0x00A000, "CENTILLION NETWORKS, INC.", "CENTILLION-NETWORKS" }, { 0x00A07B, "DAWN COMPUTER INCORPORATION", "DAWN-INCORPORATION" }, { 0x00A05C, "INVENTORY CONVERSION, INC./", "INVENTORY-CONVERSION-/" }, { 0x00206F, "FLOWPOINT CORPORATION", "FLOWPOINT" }, { 0x0020DF, "KYOSAN ELECTRIC MFG. CO., LTD.", "KYOSAN-ELECTRIC-MFG" }, { 0x002010, "JEOL SYSTEM TECHNOLOGY CO. LTD", "JEOL-SYSTEM" }, { 0x002020, "MEGATRON COMPUTER INDUSTRIES PTY, LTD.", "MEGATRON-INDUSTRIES-PTY" }, { 0x002037, "SEAGATE TECHNOLOGY", "SEAGATE" }, { 0x0020A0, "OA LABORATORY CO., LTD.", "OA-LABORATORY" }, { 0x00C0A3, "DUAL ENTERPRISES CORPORATION", "DUAL-ENTERPRISES" }, { 0x0070B0, "M/A-COM INC. COMPANIES", "M/A-COM-COMPANIES" }, { 0x009D8E, "CARDIAC RECORDERS, INC.", "CARDIAC-RECORDERS" }, { 0x006086, "LOGIC REPLACEMENT TECH. LTD.", "LOGIC-REPLACEMENT-TECH" }, { 0x001C7C, "PERQ SYSTEMS CORPORATION", "PERQ" }, { 0x00C059, "DENSO CORPORATION", "DENSO" }, { 0x00C0A9, "BARRON MCCANN LTD.", "BARRON-MCCANN" }, { 0x00C069, "Axxcelera Broadband Wireless", "AXXCELERA-BROADBAND-WIRELESS" }, { 0x00C019, "LEAP TECHNOLOGY, INC.", "LEAP" }, { 0x00A062, "AES PRODATA", "AES-PRODATA" }, { 0x00A008, "NETCORP", "NETCORP" }, { 0x00A01B, "PREMISYS COMMUNICATIONS, INC.", "PREMISYS-COMMUNICATION" }, { 0x00A04B, "TFL LAN INC.", "TFL-LAN" }, { 0x00A015, "WYLE", "WYLE" }, { 0x00A011, "MUTOH INDUSTRIES LTD.", "MUTOH-INDUSTRIES" }, { 0x00A0B6, "SANRITZ AUTOMATION CO., LTD.", "SANRITZ-AUTOMATION" }, { 0x00A0DD, "AZONIX CORPORATION", "AZONIX" }, { 0x00A00A, "Airspan", "AIRSPAN" }, { 0x00A03B, "TOSHIN ELECTRIC CO., LTD.", "TOSHIN-ELECTRIC" }, { 0x00A0F3, "STAUBLI", "STAUBLI" }, { 0x00A097, "JC INFORMATION SYSTEMS", "JC-INFORMATION" }, { 0x00A082, "NKT ELEKTRONIK A/S", "NKT-ELEKTRONIK-A/S" }, { 0x00A072, "OVATION SYSTEMS LTD.", "OVATION" }, { 0x00A0B2, "SHIMA SEIKI", "SHIMA-SEIKI" }, { 0x00A0E5, "NHC COMMUNICATIONS", "NHC-COMMUNICATION" }, { 0x00A0D3, "INSTEM COMPUTER SYSTEMS, LTD.", "INSTEM" }, { 0x00A0BA, "PATTON ELECTRONICS CO.", "PATTON-ELECTRONICS" }, { 0x00A0B4, "TEXAS MICROSYSTEMS, INC.", "TEXAS-MICROSYSTEMS" }, { 0x00A0AF, "WMS INDUSTRIES", "WMS-INDUSTRIES" }, { 0x00A0FE, "BOSTON TECHNOLOGY, INC.", "BOSTON" }, { 0x00202F, "ZETA COMMUNICATIONS, LTD.", "ZETA-COMMUNICATION" }, { 0x002060, "ALCATEL ITALIA S.p.A.", "ALCATEL-ITALIA-S-P-A" }, { 0x00209A, "THE 3DO COMPANY", "THE-3DO-COMPANY" }, { 0x00205E, "CASTLE ROCK, INC.", "CASTLE-ROCK" }, { 0x00207C, "AUTEC GMBH", "AUTEC" }, { 0x002075, "MOTOROLA COMMUNICATION ISRAEL", "MOTOROLA-COMMUNICATION-ISRAEL" }, { 0x002015, "ACTIS COMPUTER SA", "ACTIS" }, { 0x0020E9, "DANTEL", "DANTEL" }, { 0x00204A, "PRONET GMBH", "PRONET" }, { 0x002029, "TELEPROCESSING PRODUCTS, INC.", "TELEPROCESSING-PRODUCTS" }, { 0x002051, "Verilink Corporation", "VERILINK" }, { 0x0020A1, "DOVATRON", "DOVATRON" }, { 0x002024, "PACIFIC COMMUNICATION SCIENCES", "PACIFIC-COMMUNICATION-SCIENCES" }, { 0x00209D, "LIPPERT AUTOMATIONSTECHNIK", "LIPPERT-AUTOMATIONSTECHNIK" }, { 0x002041, "DATA NET", "DATA-NET" }, { 0x002076, "REUDO CORPORATION", "REUDO" }, { 0x00206E, "XACT, INC.", "XACT" }, { 0x0020CA, "DIGITAL OCEAN", "DIGITAL-OCEAN" }, { 0x002085, "Eaton Corporation", "EATON" }, { 0x0020CD, "HYBRID NETWORKS, INC.", "HYBRID-NETWORKS" }, { 0x0020E7, "B&W NUCLEAR SERVICE COMPANY", "B-W-NUCLEAR-SERVICE-COMPANY" }, { 0x0020AC, "INTERFLEX DATENSYSTEME GMBH", "INTERFLEX-DATENSYSTEME" }, { 0x0020F6, "NET TEK AND KARLNET, INC.", "NET-TEK-AND-KARLNET" }, { 0x0020D3, "OST (OUEST STANDARD TELEMATIQU", "OST-OUEST-STANDARD-TELEMATIQU" }, { 0x0020D8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002017, "ORBOTECH", "ORBOTECH" }, { 0x002025, "CONTROL TECHNOLOGY, INC.", "CONTROL" }, { 0x00C08B, "RISQ MODULAR SYSTEMS, INC.", "RISQ-MODULAR" }, { 0x00C0CD, "COMELTA, S.A.", "COMELTA" }, { 0x00C04B, "CREATIVE MICROSYSTEMS", "CREATIVE-MICROSYSTEMS" }, { 0x00C0A1, "TOKYO DENSHI SEKEI CO.", "TOKYO-DENSHI-SEKEI" }, { 0x00C03E, "FA. GEBR. HELLER GMBH", "FA-GEBR-HELLER" }, { 0x00C0E1, "SONIC SOLUTIONS", "SONIC-SOLUTIONS" }, { 0x00C047, "UNIMICRO SYSTEMS, INC.", "UNIMICRO" }, { 0x00C046, "Blue Chip Technology Ltd", "BLUE-CHIP" }, { 0x00C00D, "ADVANCED LOGIC RESEARCH, INC.", "ADVANCED-LOGIC-RESEARCH" }, { 0x00C0FA, "CANARY COMMUNICATIONS, INC.", "CANARY-COMMUNICATION" }, { 0x00C0B7, "AMERICAN POWER CONVERSION CORP", "AMERICAN-POWER-CONVERSION" }, { 0x00C0BA, "NETVANTAGE", "NETVANTAGE" }, { 0x00C0B6, "Overland Storage, Inc.", "OVERLAND-STORAGE" }, { 0x00C048, "BAY TECHNICAL ASSOCIATES", "BAY-TECHNICAL-ASSOCIATES" }, { 0x00C03F, "STORES AUTOMATED SYSTEMS, INC.", "STORES-AUTOMATED" }, { 0x00C00E, "PSITECH, INC.", "PSITECH" }, { 0x00C036, "RAYTECH ELECTRONIC CORP.", "RAYTECH" }, { 0x00C009, "KT TECHNOLOGY (S) PTE LTD", "KT-S-PTE" }, { 0x00C0EA, "ARRAY TECHNOLOGY LTD.", "ARRAY" }, { 0x00C03A, "MEN-MIKRO ELEKTRONIK GMBH", "MEN-MIKRO-ELEKTRONIK" }, { 0x00C040, "ECCI", "ECCI" }, { 0x00C04C, "DEPARTMENT OF FOREIGN AFFAIRS", "DEPARTMENT-OF-FOREIGN-AFFAIRS" }, { 0x00C01C, "INTERLINK COMMUNICATIONS LTD.", "INTERLINK-COMMUNICATION" }, { 0x00C086, "THE LYNK CORPORATION", "THE-LYNK" }, { 0x00C08D, "TRONIX PRODUCT DEVELOPMENT", "TRONIX-PRODUCT-DEVELOPMENT" }, { 0x00C0A2, "INTERMEDIUM A/S", "INTERMEDIUM-A/S" }, { 0x00C070, "SECTRA SECURE-TRANSMISSION AB", "SECTRA-SECURE-TRANSMISSION-AB" }, { 0x00C057, "MYCO ELECTRONICS", "MYCO-ELECTRONICS" }, { 0x00C0DF, "KYE Systems Corp.", "KYE" }, { 0x00C0F6, "CELAN TECHNOLOGY INC.", "CELAN" }, { 0x00C012, "NETSPAN CORPORATION", "NETSPAN" }, { 0x00C0C4, "COMPUTER OPERATIONAL", "OPERATIONAL" }, { 0x00C0C2, "INFINITE NETWORKS LTD.", "INFINITE-NETWORKS" }, { 0x00C0D3, "OLYMPUS IMAGE SYSTEMS, INC.", "OLYMPUS-IMAGE" }, { 0x00C0B0, "GCC TECHNOLOGIES,INC.", "GCC-TECHNOLOGIES" }, { 0x00C0F4, "INTERLINK SYSTEM CO., LTD.", "INTERLINK-SYSTEM" }, { 0x00C0E2, "CALCOMP, INC.", "CALCOMP" }, { 0x00C0CA, "ALFA, INC.", "ALFA" }, { 0x00C07B, "ASCEND COMMUNICATIONS, INC.", "ASCEND-COMMUNICATION" }, { 0x00C052, "BURR-BROWN", "BURR-BROWN" }, { 0x00C0BE, "ALCATEL - SEL", "ALCATEL---SEL" }, { 0x00408F, "WM-DATA MINFO AB", "WM-DATA-MINFO-AB" }, { 0x0040B7, "STEALTH COMPUTER SYSTEMS", "STEALTH" }, { 0x004057, "LOCKHEED - SANDERS", "LOCKHEED---SANDERS" }, { 0x004017, "Silex Technology America", "SILEX-AMERICA" }, { 0x004087, "UBITREX CORPORATION", "UBITREX" }, { 0x00400E, "MEMOTEC, INC.", "MEMOTEC" }, { 0x00C09E, "CACHE COMPUTERS, INC.", "CACHE-COMPUTERS" }, { 0x00C093, "ALTA RESEARCH CORP.", "ALTA-RESEARCH" }, { 0x00C034, "TRANSACTION NETWORK", "TRANSACTION-NETWORK" }, { 0x004034, "BUSTEK CORPORATION", "BUSTEK" }, { 0x004097, "DATEX DIVISION OF", "DATEX-DIVISION-OF" }, { 0x00401E, "ICC", "ICC" }, { 0x00407C, "QUME CORPORATION", "QUME" }, { 0x004060, "COMENDEC LTD", "COMENDEC" }, { 0x004056, "MCM JAPAN LTD.", "MCM-JAPAN" }, { 0x004095, "R.P.T. INTERGROUPS INT'L LTD.", "R-P-T-INTERGROUPS" }, { 0x0040C3, "FISCHER AND PORTER CO.", "FISCHER-AND-PORTER" }, { 0x0040F1, "CHUO ELECTRONICS CO., LTD.", "CHUO-ELECTRONICS" }, { 0x004061, "DATATECH ENTERPRISES CO., LTD.", "DATATECH-ENTERPRISES" }, { 0x00408B, "RAYLAN CORPORATION", "RAYLAN" }, { 0x004020, "CommScope Inc", "COMMSCOPE" }, { 0x00406E, "COROLLARY, INC.", "COROLLARY" }, { 0x004016, "ADC - Global Connectivity Solutions Division", "ADC---GLOBAL-CONNECTIVITY-SOLUTIONS-DIVISION" }, { 0x004086, "MICHELS & KLEBERHOFF COMPUTER", "MICHELS-KLEBERHOFF" }, { 0x0040DC, "TRITEC ELECTRONIC GMBH", "TRITEC" }, { 0x004074, "CABLE AND WIRELESS", "CABLE-AND-WIRELESS" }, { 0x004084, "HONEYWELL ACS", "HONEYWELL-ACS" }, { 0x0040B8, "IDEA ASSOCIATES", "IDEA-ASSOCIATES" }, { 0x004058, "KRONOS, INC.", "KRONOS" }, { 0x0040A8, "IMF INTERNATIONAL LTD.", "IMF" }, { 0x0080BB, "HUGHES LAN SYSTEMS", "HUGHES-LAN" }, { 0x00C0A0, "ADVANCE MICRO RESEARCH, INC.", "ADVANCE-MICRO-RESEARCH" }, { 0x00C0D7, "TAIWAN TRADING CENTER DBA", "TAIWAN-TRADING-CENTER-DBA" }, { 0x00C037, "DYNATEM", "DYNATEM" }, { 0x00C05F, "FINE-PAL COMPANY LIMITED", "FINE-PAL-COMPANY" }, { 0x0040CE, "NET-SOURCE, INC.", "NET-SOURCE" }, { 0x004080, "ATHENIX CORPORATION", "ATHENIX" }, { 0x0040BB, "GOLDSTAR CABLE CO., LTD.", "GOLDSTAR-CABLE" }, { 0x0040B1, "CODONICS INC.", "CODONICS" }, { 0x00402E, "PRECISION SOFTWARE, INC.", "PRECISION-SOFTWARE" }, { 0x00C0CE, "CEI SYSTEMS & ENGINEERING PTE", "CEI-ENGINEERING-PTE" }, { 0x00409B, "HAL COMPUTER SYSTEMS INC.", "HAL" }, { 0x004073, "BASS ASSOCIATES", "BASS-ASSOCIATES" }, { 0x10005A, "IBM Corp", "IBM" }, { 0x004005, "ANI COMMUNICATIONS INC.", "ANI-COMMUNICATION" }, { 0x004099, "NEWGEN SYSTEMS CORP.", "NEWGEN" }, { 0x0040E1, "MARNER INTERNATIONAL, INC.", "MARNER" }, { 0x0080DD, "GMX INC/GIMIX", "GMX-/GIMIX" }, { 0x0080B7, "STELLAR COMPUTER", "STELLAR" }, { 0x008002, "SATELCOM (UK) LTD", "SATELCOM-UK" }, { 0x00805C, "AGILIS CORPORATION", "AGILIS" }, { 0x008070, "COMPUTADORAS MICRON", "COMPUTADORAS-MICRON" }, { 0x00808F, "C. ITOH ELECTRONICS, INC.", "C-ITOH-ELECTRONICS" }, { 0x000091, "ANRITSU CORPORATION", "ANRITSU" }, { 0x000094, "ASANTE TECHNOLOGIES", "ASANTE-TECHNOLOGIES" }, { 0x000090, "MICROCOM", "MICROCOM" }, { 0x000047, "NICOLET INSTRUMENTS CORP.", "NICOLET-INSTRUMENTS" }, { 0x0000FB, "RECHNER ZUR KOMMUNIKATION", "RECHNER-ZUR-KOMMUNIKATION" }, { 0x0000A3, "NETWORK APPLICATION TECHNOLOGY", "NETWORK-APPLICATION" }, { 0x00008F, "Raytheon", "RAYTHEON" }, { 0x00007E, "CLUSTRIX CORPORATION", "CLUSTRIX" }, { 0x00000A, "OMRON TATEISI ELECTRONICS CO.", "OMRON-TATEISI-ELECTRONICS" }, { 0x000063, "BARCO CONTROL ROOMS GMBH", "BARCO-CONTROL-ROOMS" }, { 0x00004E, "AMPEX CORPORATION", "AMPEX" }, { 0x0000C2, "INFORMATION PRESENTATION TECH.", "INFORMATION-PRESENTATION-TECH" }, { 0x000034, "NETWORK RESOURCES CORPORATION", "NETWORK-RESOURCES" }, { 0x000049, "APRICOT COMPUTERS, LTD", "APRICOT-COMPUTERS" }, { 0x0000E2, "ACER TECHNOLOGIES CORP.", "ACER-TECHNOLOGIES" }, { 0x000097, "EMC Corporation", "EMC" }, { 0x0000D4, "PURE DATA LTD.", "PURE-DATA" }, { 0x0000E1, "GRID SYSTEMS", "GRID" }, { 0x000044, "CASTELLE CORPORATION", "CASTELLE" }, { 0x000027, "JAPAN RADIO COMPANY", "JAPAN-RADIO-COMPANY" }, { 0x004049, "Roche Diagnostics International Ltd.", "ROCHE-DIAGNOSTICS" }, { 0x004029, "Compex", "COMPEX" }, { 0x008038, "DATA RESEARCH & APPLICATIONS", "DATA-RESEARCH-APPLICATIONS" }, { 0x008090, "MICROTEK INTERNATIONAL, INC.", "MICROTEK" }, { 0x0080C3, "BICC INFORMATION SYSTEMS & SVC", "BICC-INFORMATION-SVC" }, { 0x00805A, "TULIP COMPUTERS INTERNAT'L B.V", "TULIP-COMPUTERS-INTERNAT-L" }, { 0x0080F0, "Panasonic Communications Co., Ltd.", "PANASONIC-COMMUNICATION" }, { 0x008043, "NETWORLD, INC.", "NETWORLD" }, { 0x0080B0, "ADVANCED INFORMATION", "ADVANCED-INFORMATION" }, { 0x008066, "ARCOM CONTROL SYSTEMS, LTD.", "ARCOM-CONTROL" }, { 0x004051, "GRACILIS, INC.", "GRACILIS" }, { 0x004064, "KLA INSTRUMENTS CORPORATION", "KLA-INSTRUMENTS" }, { 0x004028, "NETCOMM LIMITED", "NETCOMM" }, { 0x004013, "NTT DATA COMM. SYSTEMS CORP.", "NTT-DATA-COMM" }, { 0x0040A0, "GOLDSTAR CO., LTD.", "GOLDSTAR" }, { 0x0040B2, "SYSTEMFORSCHUNG", "SYSTEMFORSCHUNG" }, { 0x004071, "ATM COMPUTER GMBH", "ATM" }, { 0x0080BF, "TAKAOKA ELECTRIC MFG. CO. LTD.", "TAKAOKA-ELECTRIC-MFG" }, { 0x0080F6, "SYNERGY MICROSYSTEMS", "SYNERGY-MICROSYSTEMS" }, { 0x000058, "RACORE COMPUTER PRODUCTS INC.", "RACORE-PRODUCTS" }, { 0x000050, "RADISYS CORPORATION", "RADISYS" }, { 0x008082, "PEP MODULAR COMPUTERS GMBH", "PEP-MODULAR-COMPUTERS" }, { 0x008096, "HUMAN DESIGNED SYSTEMS, INC.", "HUMAN-DESIGNED" }, { 0x0080D5, "CADRE TECHNOLOGIES", "CADRE-TECHNOLOGIES" }, { 0x00803E, "SYNERNETICS", "SYNERNETICS" }, { 0x00809A, "NOVUS NETWORKS LTD", "NOVUS-NETWORKS" }, { 0x0080B3, "AVAL DATA CORPORATION", "AVAL-DATA" }, { 0x0080A3, "Lantronix", "LANTRONIX" }, { 0x00803C, "TVS ELECTRONICS LTD", "TVS-ELECTRONICS" }, { 0x008061, "LITTON SYSTEMS, INC.", "LITTON" }, { 0x0080AD, "CNET TECHNOLOGY, INC.", "CNET" }, { 0x008081, "KENDALL SQUARE RESEARCH CORP.", "KENDALL-SQUARE-RESEARCH" }, { 0x008019, "DAYNA COMMUNICATIONS, INC.", "DAYNA-COMMUNICATION" }, { 0x00808B, "DACOLL LIMITED", "DACOLL" }, { 0x008097, "CENTRALP AUTOMATISMES", "CENTRALP-AUTOMATISMES" }, { 0x0080FC, "AVATAR CORPORATION", "AVATAR" }, { 0x008076, "MCNC", "MCNC" }, { 0x008080, "DATAMEDIA CORPORATION", "DATAMEDIA" }, { 0x0000E6, "APTOR PRODUITS DE COMM INDUST", "APTOR-PRODUITS-DE-COMM-INDUST" }, { 0x000084, "SUPERNET", "SUPERNET" }, { 0x0000FF, "CAMTEC ELECTRONICS LTD.", "CAMTEC-ELECTRONICS" }, { 0x00007B, "RESEARCH MACHINES", "RESEARCH-MACHINES" }, { 0x000056, "DR. B. STRUCK", "DR-B-STRUCK" }, { 0x0000BB, "TRI-DATA", "TRI-DATA" }, { 0x080025, "CONTROL DATA", "CONTROL-DATA" }, { 0x080020, "Oracle Corporation", "ORACLE" }, { 0x027001, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x080006, "SIEMENS AG", "SIEMENS" }, { 0x08007E, "AMALGAMATED WIRELESS(AUS) LTD", "AMALGAMATED-WIRELESS-AUS" }, { 0x080075, "DANSK DATA ELECTRONIK", "DANSK-DATA-ELECTRONIK" }, { 0x080073, "TECMAR INC.", "TECMAR" }, { 0x080069, "SILICON GRAPHICS INC.", "SILICON-GRAPHICS" }, { 0x080061, "JAROGATE LTD.", "JAROGATE" }, { 0x08005D, "GOULD INC.", "GOULD" }, { 0x08004E, "3COM EUROPE LTD.", "3COM" }, { 0x08004A, "BANYAN SYSTEMS INC.", "BANYAN" }, { 0x08004C, "HYDRA COMPUTER SYSTEMS INC.", "HYDRA" }, { 0x080043, "PIXEL COMPUTER INC.", "PIXEL" }, { 0x08003A, "ORCATECH INC.", "ORCATECH" }, { 0x080035, "MICROFIVE CORPORATION", "MICROFIVE" }, { 0x080036, "INTERGRAPH CORPORATION", "INTERGRAPH" }, { 0x08002D, "LAN-TEC INC.", "LAN-TEC" }, { 0x000025, "RAMTEK CORP.", "RAMTEK" }, { 0x00003A, "CHYRON CORPORATION", "CHYRON" }, { 0x000077, "INTERPHASE CORPORATION", "INTERPHASE" }, { 0x000096, "MARCONI ELECTRONICS LTD.", "MARCONI-ELECTRONICS" }, { 0x000076, "ABEKAS VIDEO SYSTEM", "ABEKAS-VIDEO-SYSTEM" }, { 0x0000EA, "UPNOD AB", "UPNOD-AB" }, { 0x000074, "RICOH COMPANY LTD.", "RICOH-COMPANY" }, { 0x00006A, "COMPUTER CONSOLES INC.", "CONSOLES" }, { 0x0000C4, "WATERS DIV. OF MILLIPORE", "WATERS-DIV-OF-MILLIPORE" }, { 0x000006, "XEROX CORPORATION", "XEROX" }, { 0x0001C8, "THOMAS CONRAD CORP.", "THOMAS-CONRAD" }, { 0x00DD0E, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x08008D, "XYVISION INC.", "XYVISION" }, { 0x080059, "A/S MYCRON", "A/S-MYCRON" }, { 0x021C7C, "PERQ SYSTEMS CORPORATION", "PERQ" }, { 0x100000, "Private", "PRIVATE" }, { 0x080004, "CROMEMCO INCORPORATED", "CROMEMCO-INCORPORATED" }, { 0x00DD07, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00003E, "SIMPACT", "SIMPACT" }, { 0x04E0C4, "TRIUMPH-ADLER AG", "TRIUMPH-ADLER" }, { 0x040AE0, "XMIT AG COMPUTER NETWORKS", "XMIT-NETWORKS" }, { 0x080016, "BARRISTER INFO SYS CORP", "BARRISTER-INFO-SYS" }, { 0x080012, "BELL ATLANTIC INTEGRATED SYST.", "BELL-ATLANTIC-INTEGRATED-SYST" }, { 0x0001C8, "CONRAD CORP.", "CONRAD" }, { 0x0000F9, "QUOTRON SYSTEMS INC.", "QUOTRON" }, { 0x0000BF, "SYMMETRIC COMPUTER SYSTEMS", "SYMMETRIC" }, { 0x000085, "CANON INC.", "CANON" }, { 0x000028, "PRODIGY SYSTEMS CORPORATION", "PRODIGY" }, { 0x000012, "INFORMATION TECHNOLOGY LIMITED", "INFORMATION" }, { 0x080085, "ELXSI", "ELXSI" }, { 0x00005B, "ELTEC ELEKTRONIK AG", "ELTEC-ELEKTRONIK" }, { 0x000054, "Schneider Electric", "SCHNEIDER-ELECTRIC" }, { 0x0000A9, "NETWORK SYSTEMS CORP.", "NETWORK" }, { 0x000059, "Hellige GMBH", "HELLIGE" }, { 0x000099, "MTX, INC.", "MTX" }, { 0x0000E9, "ISICAD, INC.", "ISICAD" }, { 0x08003F, "FRED KOSCHARA ENTERPRISES", "FRED-KOSCHARA-ENTERPRISES" }, { 0x080002, "BRIDGE COMMUNICATIONS INC.", "BRIDGE-COMMUNICATION" }, { 0x08008B, "PYRAMID TECHNOLOGY CORP.", "PYRAMID" }, { 0x000002, "XEROX CORPORATION", "XEROX" }, { 0x84F6FA, "Miovision Technologies Incorporated", "MIOVISION-TECHNOLOGIES-INCORPORATED" }, { 0xCC3B3E, "Lester Electrical", "LESTER-ELECTRICAL" }, { 0xC05627, "Belkin International Inc.", "BELKIN" }, { 0x88074B, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x4065A3, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x00789E, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x44E9DD, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xB888E3, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x002622, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x001EEC, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xDC0EA1, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xFC4596, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x208984, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x247C4C, "Herman Miller", "HERMAN-MILLER" }, { 0x180373, "Dell Inc.", "DELL" }, { 0xF8B156, "Dell Inc.", "DELL" }, { 0x1C4024, "Dell Inc.", "DELL" }, { 0xF8BC12, "Dell Inc.", "DELL" }, { 0x001B5B, "2Wire Inc", "2WIRE" }, { 0x002456, "2Wire Inc", "2WIRE" }, { 0x002351, "2Wire Inc", "2WIRE" }, { 0x00253C, "2Wire Inc", "2WIRE" }, { 0x0022A4, "2Wire Inc", "2WIRE" }, { 0xC0830A, "2Wire Inc", "2WIRE" }, { 0xD0431E, "Dell Inc.", "DELL" }, { 0x246E96, "Dell Inc.", "DELL" }, { 0x204747, "Dell Inc.", "DELL" }, { 0x4C7625, "Dell Inc.", "DELL" }, { 0xB8AC6F, "Dell Inc.", "DELL" }, { 0x001EC9, "Dell Inc.", "DELL" }, { 0xE09861, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xF4F1E1, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x60BEB5, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x7845C4, "Dell Inc.", "DELL" }, { 0xB4E1C4, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0xD86C02, "Huaqin Telecom Technology Co.,Ltd", "HUAQIN-TELECOM" }, { 0x0019D2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7C5CF8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E67, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001F3C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0022FA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001517, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00166F, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA44E31, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6C8814, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF81654, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3413E8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x34E6AD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xFCF8AE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x648099, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002314, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4025C2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8CA982, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD07E35, "Intel Corporate", "INTEL-CORPORATE" }, { 0x685D43, "Intel Corporate", "INTEL-CORPORATE" }, { 0x90E2BA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0026C7, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8086F2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x78FF57, "Intel Corporate", "INTEL-CORPORATE" }, { 0x20934D, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x00AA00, "Intel Corporation", "INTEL" }, { 0x6CF37F, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x605BB4, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x9C0E4A, "Shenzhen Vastking Electronic Co.,Ltd.", "SHENZHEN-VASTKING" }, { 0xACE5F0, "Doppler Labs", "DOPPLER-LABS" }, { 0x00F28B, "Cisco Systems, Inc", "CISCO" }, { 0x5414FD, "Orbbec 3D Technology International", "ORBBEC-3D" }, { 0x1C4BD6, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x94DBC9, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x40E230, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x00006E, "Artisoft Inc.", "ARTISOFT" }, { 0xA0F459, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x0C6AE6, "Stanley Security Solutions", "STANLEY-SECURITY-SOLUTIONS" }, { 0xE874E6, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x00247B, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x689C5E, "AcSiP Technology Corp.", "ACSIP" }, { 0x0012CF, "Accton Technology Corp", "ACCTON" }, { 0x0030D3, "Agilent Technologies, Inc.", "AGILENT-TECHNOLOGIES" }, { 0x38229D, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x002233, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xD4D184, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x34C3D2, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x38E3C5, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0xD0E44A, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x9433DD, "Taco Inc", "TACO" }, { 0x948815, "Infinique Worldwide Inc", "INFINIQUE-WORLDWIDE" }, { 0x3010B3, "Liteon Technology Corporation", "LITEON" }, { 0x001802, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0xECCD6D, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 0x00225F, "Liteon Technology Corporation", "LITEON" }, { 0x983B16, "AMPAK Technology, Inc.", "AMPAK" }, { 0x402BA1, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x0025E7, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xD05162, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x94CE2C, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001A80, "Sony Corporation", "SONY" }, { 0x0024BE, "Sony Corporation", "SONY" }, { 0x001620, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x0012EE, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x20689D, "Liteon Technology Corporation", "LITEON" }, { 0x446D57, "Liteon Technology Corporation", "LITEON" }, { 0x44EE02, "MTI Ltd.", "MTI" }, { 0x0026B6, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xB4EEB4, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xFCB4E6, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xF05C19, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x70AAB2, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x0026FF, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x406F2A, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x002557, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x0024FE, "AVM GmbH", "AVM" }, { 0x745AAA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7C1CF1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00264D, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x74A528, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x30A220, "ARG Telecom", "ARG-TELECOM" }, { 0x783E53, "BSkyB Ltd", "BSKYB" }, { 0x4CF2BF, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x70D931, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x00E063, "Cabletron Systems, Inc.", "CABLETRON" }, { 0xE01D3B, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xD476EA, "zte corporation", "ZTE" }, { 0x0040FB, "CASCADE COMMUNICATIONS", "CASCADE-COMMUNICATION" }, { 0xF05A09, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x503275, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28CC01, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB46293, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x04FE31, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x845181, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD831CF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF8D0BD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFCC734, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE4B021, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0EC71, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3CBBFD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2CAE2B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC488E5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7C9122, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE8B4C8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18895B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE0DB10, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE09971, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6077E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x680571, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6C2F2C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x000136, "CyberTAN Technology Inc.", "CYBERTAN" }, { 0xF88E85, "Comtrend Corporation", "COMTREND" }, { 0x300D43, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x6C2779, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x607EDD, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0xF88096, "Elsys Equipamentos Eletrônicos Ltda", "ELSYS-EQUIPAMENTOS-ELETRôNICOS-LTDA" }, { 0xE0B9E5, "Technicolor", "TECHNICOLOR" }, { 0x0CBF15, "Genetec Inc.", "GENETEC" }, { 0x000B5D, "FUJITSU LIMITED", "FUJITSU" }, { 0xF4CAE5, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x002100, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x002147, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0022AA, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0022D7, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002331, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00241E, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x78A2A0, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001B7A, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x40F407, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xB8AE6E, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x60A8FE, "Nokia", "NOKIA" }, { 0x546751, "Compal Broadband Networks, Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0x84BA3B, "CANON INC.", "CANON" }, { 0x0018C5, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x80501B, "Nokia Corporation", "NOKIA" }, { 0x347E39, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xA87E33, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00247D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001BAF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001C35, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001CD4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001979, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x9C1874, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021FC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F5D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0025CF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0025D0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001FDE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x907282, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x006CFD, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x1C234F, "EDMI Europe Ltd", "EDMI-EUROPE" }, { 0xA444D1, "Wingtech Group (HongKong)Limited", "WINGTECH-GROUP-HONGKONG)" }, { 0x1C9E46, "Apple, Inc.", "APPLE" }, { 0x005058, "Sangoma Technologies", "SANGOMA-TECHNOLOGIES" }, { 0x3482DE, "Kiio Inc", "KIIO" }, { 0x0008F6, "Sumitomo Electric Industries,Ltd", "SUMITOMO-ELECTRIC-INDUSTRIES" }, { 0x00005F, "Sumitomo Electric Industries,Ltd", "SUMITOMO-ELECTRIC-INDUSTRIES" }, { 0xA0C589, "Intel Corporate", "INTEL-CORPORATE" }, { 0x74BFB7, "Nusoft Corporation", "NUSOFT" }, { 0x50DA00, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x9C2A83, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE45D75, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3CBEE1, "NIKON CORPORATION", "NIKON" }, { 0x047E4A, "moobox CO., Ltd.", "MOOBOX" }, { 0xE0C767, "Apple, Inc.", "APPLE" }, { 0x2C09CB, "COBS AB", "COBS-AB" }, { 0x60ACC8, "KunTeng Inc.", "KUNTENG" }, { 0x0404EA, "Valens Semiconductor Ltd.", "VALENS-SEMICONDUCTOR" }, { 0x800DD7, "Latticework, Inc", "LATTICEWORK" }, { 0x402E28, "MiXTelematics", "MIXTELEMATICS" }, { 0x18C501, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x546D52, "TOPVIEW OPTRONICS CORP.", "TOPVIEW-OPTRONICS" }, { 0xCCB3AB, "shenzhen Biocare Bio-Medical Equipment Co.,Ltd.", "SHENZHEN-BIOCARE-BIO-MEDICAL-EQUIPMENT" }, { 0xE4B318, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00C88B, "Cisco Systems, Inc", "CISCO" }, { 0xA85EE4, "12Sided Technology, LLC", "12SIDED-LLC" }, { 0x000CC1, "Eaton Corporation", "EATON" }, { 0x0090F9, "Imagine Communications", "IMAGINE-COMMUNICATION" }, { 0x04C103, "Clover Network, Inc.", "CLOVER-NETWORK" }, { 0x1C553A, "QianGua Corp.", "QIANGUA" }, { 0xE4A7A0, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE4FAED, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x789682, "zte corporation", "ZTE" }, { 0xF02745, "F-Secure Corporation", "F-SECURE" }, { 0x54D0B4, "Xiamen Four-Faith Communication Technology Co.,Ltd", "XIAMEN-FOUR-FAITH-COMMUNICATION" }, { 0xD017C2, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001625, "Impinj, Inc.", "IMPINJ" }, { 0x60EE5C, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x58D67A, "TCPlink", "TCPLINK" }, { 0x00A0DE, "YAMAHA CORPORATION", "YAMAHA" }, { 0x081F71, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x2C2D48, "bct electronic GesmbH", "BCT-GESMBH" }, { 0xE4A471, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00A0F4, "GE", "GE" }, { 0x00CAE5, "Cisco Systems, Inc", "CISCO" }, { 0x4883C7, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x7050AF, "BSkyB Ltd", "BSKYB" }, { 0xF4EF9E, "SGSG SCIENCE & TECHNOLOGY CO. LTD", "SGSG-SCIENCE" }, { 0xDC9C9F, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x0CBF3F, "Shenzhen Lencotion Technology Co.,Ltd", "SHENZHEN-LENCOTION" }, { 0x84FEDC, "Borqs Beijing Ltd.", "BORQS-BEIJING" }, { 0xD8D723, "IDS, Inc", "IDS" }, { 0x703A0E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x7054D2, "PEGATRON CORPORATION", "PEGATRON" }, { 0x7C0507, "PEGATRON CORPORATION", "PEGATRON" }, { 0xC07CD1, "PEGATRON CORPORATION", "PEGATRON" }, { 0x94DBDA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x384C4F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE4A8B6, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x244C07, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE840F2, "PEGATRON CORPORATION", "PEGATRON" }, { 0xF0D1B8, "LEDVANCE", "LEDVANCE" }, { 0x60B387, "Synergics Technologies GmbH", "SYNERGICS-TECHNOLOGIES" }, { 0x7085C2, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0xC825E1, "Lemobile Information Technology (Beijing) Co., Ltd", "LEMOBILE-INFORMATION-BEIJING" }, { 0x0022B1, "Elbit Systems Ltd.", "ELBIT" }, { 0x0000B4, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x00065F, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x001F45, "Enterasys", "ENTERASYS" }, { 0x0090FA, "Emulex Corporation", "EMULEX" }, { 0x50C971, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x001D82, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x001317, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x749781, "zte corporation", "ZTE" }, { 0xB4B15A, "Siemens AG Energy Management Division", "SIEMENS-ENERGY-MANAGEMENT-DIVISION" }, { 0xA8D828, "Ascensia Diabetes Care", "ASCENSIA-DIABETES-CARE" }, { 0xFCBC9C, "Vimar Spa", "VIMAR-SPA" }, { 0x149ECF, "Dell Inc.", "DELL" }, { 0xAC620D, "Jabil Circuit(Wuxi) Co.,Ltd", "JABIL-CIRCUIT-WUXI" }, { 0x008CFA, "INVENTEC Corporation", "INVENTEC" }, { 0x0008B9, "Kaonmedia CO., LTD.", "KAONMEDIA" }, { 0xC83F26, "Microsoft Corporation", "MICROSOFT" }, { 0x00E0E6, "INCAA Computers", "INCAA-COMPUTERS" }, { 0x5C5EAB, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x7819F7, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x2C2172, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x88E0F3, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x4C9614, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x3C8AB0, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xB0C69A, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x009069, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x204E71, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xF4B52F, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x88A25E, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x001BC0, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xF49EEF, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0xF4911E, "ZHUHAI EWPE INFORMATION TECHNOLOGY INC", "ZHUHAI-EWPE-INFORMATION" }, { 0x94FE22, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF823B2, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDCD916, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x002552, "VXi Corporation", "VXI" }, { 0x006CBC, "Cisco Systems, Inc", "CISCO" }, { 0xDC3752, "GE", "GE" }, { 0xB4D5BD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7CB0C2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x98AA3C, "Will i-tech Co., Ltd.", "WILL-I-TECH" }, { 0x449F7F, "DataCore Software Corporation", "DATACORE-SOFTWARE" }, { 0x0011FC, "HARTING Electronics GmbH", "HARTING-ELECTRONICS" }, { 0x5CDD70, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x24BF74, "Private", "PRIVATE" }, { 0xB8E779, "9Solutions Oy", "9SOLUTIONS-OY" }, { 0x240A11, "TCT mobile ltd", "TCT-MOBILE" }, { 0xC84544, "Asia Pacific CIS (Wuxi) Co, Ltd", "ASIA-PACIFIC-CIS-WUXI" }, { 0xE8A7F2, "sTraffic", "STRAFFIC" }, { 0xD8209F, "Cubro Acronet GesmbH", "CUBRO-ACRONET-GESMBH" }, { 0xA860B6, "Apple, Inc.", "APPLE" }, { 0x24F094, "Apple, Inc.", "APPLE" }, { 0x90B0ED, "Apple, Inc.", "APPLE" }, { 0xC4B301, "Apple, Inc.", "APPLE" }, { 0xE05F45, "Apple, Inc.", "APPLE" }, { 0x483B38, "Apple, Inc.", "APPLE" }, { 0xE47B3F, "BEIJING CO-CLOUD TECHNOLOGY LTD.", "BEIJING--CLOUD" }, { 0xA0415E, "Opsens Solution Inc.", "OPSENS-SOLUTION" }, { 0x1C6E76, "Quarion Technology Inc", "QUARION" }, { 0x000AAB, "Toyota Technical Development Corporation", "TOYOTA-TECHNICAL-DEVELOPMENT" }, { 0x44D1FA, "Shenzhen Yunlink Technology Co., Ltd", "SHENZHEN-YUNLINK" }, { 0x08C021, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x48435A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9CE374, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x6C0EE6, "Chengdu Xiyida Electronic Technology Co,.Ltd", "CHENGDU-XIYIDA" }, { 0x78FFCA, "TECNO MOBILE LIMITED", "TECNO-MOBILE" }, { 0xF03EBF, "GOGORO TAIWAN LIMITED", "GOGORO-TAIWAN" }, { 0x50AB3E, "Qibixx AG", "QIBIXX" }, { 0xA8BB50, "WiZ IoT Company Limited", "WIZ-IOT-COMPANY" }, { 0x005F86, "Cisco Systems, Inc", "CISCO" }, { 0xE46251, "HAO CHENG GROUP LIMITED", "HAO-CHENG-GROUP" }, { 0x8850DD, "Infiniband Trade Association ", "INFINIBAND-TRADE-ASSOCIATION" }, { 0xDC7834, "LOGICOM SA", "LOGICOM" }, { 0x54F201, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA06090, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3876CA, "Shenzhen Smart Intelligent Technology Co.Ltd", "SHENZHEN-SMART-INTELLIGENT" }, { 0xD0577B, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB824F0, "SOYO Technology Development Co., Ltd.", "SOYO-DEVELOPMENT" }, { 0xB456B9, "Teraspek Technologies Co.,Ltd", "TERASPEK-TECHNOLOGIES" }, { 0x68B35E, "Shenzhen Neostra Technology Co.Ltd", "SHENZHEN-NEOSTRA" }, { 0x24E271, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0xBC6010, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0xAC3743, "HTC Corporation", "HTC" }, { 0x603197, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x0019CB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xFCF528, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x588BF3, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xD8B02E, "Guangzhou Zonerich Business Machine Co., LTD.", "GUANGZHOU-ZONERICH-BUSINESS-MACHINE" }, { 0x849D64, "SMC Corporation", "SMC" }, { 0xA020A6, "Espressif Inc.", "ESPRESSIF" }, { 0x88F7C7, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x08952A, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xC4BB4C, "Zebra Information Tech Co. Ltd", "ZEBRA-INFORMATION-TECH" }, { 0x8C04FF, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x001972, "Plexus (Xiamen) Co.,ltd.", "PLEXUS-XIAMEN" }, { 0x6488FF, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x005979, "Networked Energy Services", "NETWORKED-ENERGY-SERVICES" }, { 0x000997, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000E62, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000EC0, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000FCD, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0004DC, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x02E6D3, "NIXDORF COMPUTER CORP.", "NIXDORF" }, { 0x0016B9, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x0024A8, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0xCC3ADF, "Private", "PRIVATE" }, { 0x141F78, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x006F64, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xDC6672, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0025C3, "21168", "21168" }, { 0x001365, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001ECA, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001D42, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001CEB, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002363, "Zhuhai Raysharp Technology Co.,Ltd", "ZHUHAI-RAYSHARP" }, { 0xD03742, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x001CFD, "Universal Electronics, Inc.", "UNIVERSAL-ELECTRONICS" }, { 0x080051, "ExperData", "EXPERDATA" }, { 0x0080C7, "XIRCOM", "XIRCOM" }, { 0x049FCA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC81FBE, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x203DB2, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x48D539, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x10E68F, "KWANGSUNG ELECTRONICS KOREA CO.,LTD.", "KWANGSUNG-ELECTRONICS-KOREA" }, { 0x1899F5, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0xE41D2D, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0xB80018, "Htel", "HTEL" }, { 0x0081C4, "Cisco Systems, Inc", "CISCO" }, { 0xE8FD90, "Turbostor", "TURBOSTOR" }, { 0x0017EA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001834, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x00182F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78DEE4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB8FFFE, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE0D7BA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x405FC2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x8030DC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xCC78AB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA4D578, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x544A16, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD8DDFD, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x20CD39, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x987BF3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x247189, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xEC1127, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF0C77F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF45EAB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001783, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA81B6A, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x9884E3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x38D269, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC8FD19, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x508CB1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x04BBF9, "Pavilion Data Systems Inc", "PAVILION-DATA" }, { 0xB0F893, "Shanghai MXCHIP Information Technology Co., Ltd.", "SHANGHAI-MXCHIP-INFORMATION" }, { 0x00C017, "NetScout Systems, Inc.", "NETSCOUT" }, { 0xD49B5C, "Chongqing Miedu Technology Co., Ltd.", "CHONGQING-MIEDU" }, { 0xC0D391, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xC411E0, "Bull Group Co., Ltd", "BULL-GROUP" }, { 0x90842B, "LEGO System A/S", "LEGO-SYSTEM-A/S" }, { 0x84C7EA, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x8C6102, "Beijing Baofengmojing Technologies Co., Ltd", "BEIJING-BAOFENGMOJING-TECHNOLOGIES" }, { 0xFC9114, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x1C25E1, "China Mobile IOT Company Limited", "CHINA-MOBILE-IOT-COMPANY" }, { 0xC0F636, "Hangzhou Kuaiyue Technologies, Ltd.", "HANGZHOU-KUAIYUE-TECHNOLOGIES" }, { 0xF0038C, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xB45D50, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x001E7D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3C6200, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0024E9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002399, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE4E0C5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE8039A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC4731E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78D6F0, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xB407F9, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x40B89A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA8A795, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x8096CA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9CD21E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD87988, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00242B, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00242C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x945330, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xEC0EC4, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7429AF, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x346895, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA86BAD, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD80F99, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x78DD08, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00197E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA0AB1B, "D-Link International", "D-LINK" }, { 0x5C4979, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x086A0A, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x101250, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x8C7712, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2013E0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0007AB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0021D2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC4760, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0176A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0D9B2, "EXO S.A.", "EXO" }, { 0x2CBABA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x24920E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x40D3AE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x802AA8, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x00156D, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x787D48, "ITEL MOBILE LIMITED", "ITEL-MOBILE" }, { 0xD46E0E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x049790, "Lartech telecom LLC", "LARTECH-TELECOM-LLC" }, { 0x8CEA1B, "Edgecore Networks Corporation", "EDGECORE-NETWORKS" }, { 0x001650, "Kratos EPD ", "KRATOS-EPD" }, { 0x583112, "DRUST", "DRUST" }, { 0x58696C, "Ruijie Networks Co.,LTD", "RUIJIE-NETWORKS" }, { 0xA0B8F8, "Amgen U.S.A. Inc.", "AMGEN-U" }, { 0x14A51A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC816A5, "Masimo Corporation", "MASIMO" }, { 0x9002A9, "Zhejiang Dahua Technology Co., Ltd.", "ZHEJIANG-DAHUA" }, { 0xACD657, "Shaanxi GuoLian Digital TV Technology Co.,Ltd.", "SHAANXI-GUOLIAN-DIGITAL-TV" }, { 0x244E7B, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xE80945, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x98FD74, "ACT.CO.LTD", "ACT" }, { 0x60C798, "Verifone", "VERIFONE" }, { 0xA46011, "Verifone", "VERIFONE" }, { 0x2C2131, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0CC47A, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x60427F, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0xF8461C, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x500B91, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x40B93C, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x4C7487, "Leader Phone Communication Technology Co., Ltd.", "LEADER-PHONE-COMMUNICATION" }, { 0xF48C50, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE8E875, "iS5 Communications Inc.", "IS5-COMMUNICATION" }, { 0x000422, "Studio Technologies, Inc", "STUDIO-TECHNOLOGIES" }, { 0xACC662, "MitraStar Technology Corp.", "MITRASTAR" }, { 0xB8ECA3, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xF01DBC, "Microsoft Corporation", "MICROSOFT" }, { 0x404D7F, "Apple, Inc.", "APPLE" }, { 0x7C04D0, "Apple, Inc.", "APPLE" }, { 0xBC9FEF, "Apple, Inc.", "APPLE" }, { 0x8866A5, "Apple, Inc.", "APPLE" }, { 0xACDCE5, "Procter & Gamble Company", "PROCTER-GAMBLE-COMPANY" }, { 0x784F43, "Apple, Inc.", "APPLE" }, { 0x98D293, "Google, Inc.", "GOOGLE" }, { 0x5CCCA0, "Gridwiz Inc.", "GRIDWIZ" }, { 0x104FA8, "Sony Corporation", "SONY" }, { 0x6C25B9, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0x486B2C, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0x00001F, "Telco Systems, Inc. ", "TELCO" }, { 0xBC307E, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x00C0AB, "Telco Systems, Inc. ", "TELCO" }, { 0x0010CA, "Telco Systems, Inc. ", "TELCO" }, { 0x0C2576, "LONGCHEER TELECOMMUNICATION LIMITED", "LONGCHEER-TELECOMMUNICATION" }, { 0x0007A6, "Leviton Manufacturing Co., Inc.", "LEVITON-MANUFACTURING" }, { 0x208756, "SIEMENS AG", "SIEMENS" }, { 0xB08900, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA03E6B, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xDC4427, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x0055DA, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x90C682, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x986D35, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xE0B6F5, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xC47C8D, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x001BC5, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x640DCE, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x100723, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x6063F9, "Ciholas, Inc.", "CIHOLAS" }, { 0xF0421C, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC0E42D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x18D6C7, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB8BB23, "Guangdong Nufront CSC Co., Ltd", "GUANGDONG-NUFRONT-CSC" }, { 0xEC26FB, "TECC CO.,LTD.", "TECC" }, { 0x10683F, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xA039F7, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x64BC0C, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0090CC, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0xE09DB8, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0x64899A, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x58A2B5, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x74A722, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x001F6B, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x903AE6, "PARROT SA", "PARROT" }, { 0x00E00F, "Shanghai Baud Data Communication Co.,Ltd.", "SHANGHAI-BAUD-DATA-COMMUNICATION" }, { 0x3C404F, "GUANGDONG PISEN ELECTRONICS CO.,LTD", "GUANGDONG-PISEN-ELECTRONICS" }, { 0xF0ACD7, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x00233E, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x6CBEE9, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x0080F7, "Zenith Electronics Corporation", "ZENITH-ELECTRONICS" }, { 0x00C095, "ZNYX Networks, Inc.", "ZNYX-NETWORKS" }, { 0x60EB69, "QUANTA COMPUTER INC.", "QUANTA" }, { 0xC80AA9, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x00238B, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x0007BA, "UTStarcom Inc", "UTSTARCOM" }, { 0x4439C4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x70F395, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001E37, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x002713, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x002186, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x8CFDF0, "Qualcomm Inc.", "QUALCOMM" }, { 0x000031, "QPSX COMMUNICATIONS, LTD.", "QPSX-COMMUNICATION" }, { 0x000E7B, "Toshiba", "TOSHIBA" }, { 0xB86B23, "Toshiba", "TOSHIBA" }, { 0x000C29, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x005056, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x001C4D, "Aplix IP Holdings Corporation", "APLIX-IP-HOLDINGS" }, { 0xD0052A, "Arcadyan Corporation", "ARCADYAN" }, { 0xF485C6, "FDT Technologies", "FDT-TECHNOLOGIES" }, { 0xBC60A7, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x08D833, "Shenzhen RF Technology Co., Ltd", "SHENZHEN-RF" }, { 0x94D469, "Cisco Systems, Inc", "CISCO" }, { 0x385610, "CANDY HOUSE, Inc.", "CANDY-HOUSE" }, { 0x20F543, "Hui Zhou Gaoshengda Technology Co.,LTD", "HUI-ZHOU-GAOSHENGDA" }, { 0x685388, "P&S Technology", "P-S" }, { 0x54A619, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x1880F5, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x24DBED, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xAC3613, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1449E0, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xC0BDD1, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xE8508B, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xF025B7, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xC8BA94, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xEC1F72, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x9852B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1489FD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCCFE3C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x789ED0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE440E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1CAF05, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE492FB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x247F20, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x0073E0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC4486, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x380B40, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C0D76, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x005A13, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x002490, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0023D7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFCA13E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA00798, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x945103, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC819F7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C4401, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84E0F4, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x08C6B3, "QTECH LLC", "QTECH-LLC" }, { 0x64DAA0, "Robert Bosch Smart Home GmbH", "ROBERT-BOSCH-SMART-HOME" }, { 0x14B837, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x8056F2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x70188B, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x3C77E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0C84DC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x844BF5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE006E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x60F494, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA41731, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC0143D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x642737, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x60D819, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x6474F6, "Shooter Detection Systems", "SHOOTER-DETECTION" }, { 0x604BAA, "Private", "PRIVATE" }, { 0xCC7314, "HONG KONG WHEATEK TECHNOLOGY LIMITED", "HONG-KONG-WHEATEK" }, { 0xC0CB38, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x98E7F4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD42C44, "Cisco Systems, Inc", "CISCO" }, { 0xD842E2, "Canary Connect, Inc.", "CANARY-CONNECT" }, { 0x500959, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x143365, "TEM Mobile Limited", "TEM-MOBILE" }, { 0xC0F945, "Toshiba Toko Meter Systems Co., LTD.", "TOSHIBA-TOKO-METER" }, { 0xACAB2E, "Beijing LasNubes Technology Co., Ltd.", "BEIJING-LASNUBES" }, { 0x10E878, "Nokia", "NOKIA" }, { 0x48F7F1, "Nokia", "NOKIA" }, { 0x4CC94F, "Nokia", "NOKIA" }, { 0x1CEA1B, "Nokia", "NOKIA" }, { 0xB4F81E, "Kinova", "KINOVA" }, { 0x28CA09, "ThyssenKrupp Elevators (Shanghai) Co.,Ltd", "THYSSENKRUPP-ELEVATORS-SHANGHAI" }, { 0xE0B94D, "SHENZHEN BILIAN ELECTRONIC CO.,LTD", "SHENZHEN-BILIAN-," }, { 0xD8380D, "SHENZHEN IP-COM Network Co.,Ltd", "SHENZHEN-IP-COM-NETWORK" }, { 0xA4C64F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC83DD4, "CyberTAN Technology Inc.", "CYBERTAN" }, { 0x487B6B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9C62AB, "Sumavision Technologies Co.,Ltd", "SUMAVISION-TECHNOLOGIES" }, { 0x487A55, "ALE International", "ALE" }, { 0x000435, "InfiNet LLC", "INFINET-LLC" }, { 0xBC39D9, "Z-TEC", "Z-TEC" }, { 0x88E87F, "Apple, Inc.", "APPLE" }, { 0xB853AC, "Apple, Inc.", "APPLE" }, { 0xB04BBF, "PT HAN SUNG ELECTORONICS INDONESIA", "PT-HAN-SUNG-ELECTORONICS-INDONESIA" }, { 0x0060D6, "NovAtel Inc.", "NOVATEL" }, { 0x2C3361, "Apple, Inc.", "APPLE" }, { 0x78B84B, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x40F420, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x9C6121, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x8C8ABB, "Beijing Orient View Technology Co., Ltd.", "BEIJING-ORIENT-VIEW" }, { 0x88366C, "EFM Networks", "EFM-NETWORKS" }, { 0xF074E4, "Thundercomm Technology Co., Ltd", "THUNDERCOMM" }, { 0xA0722C, "HUMAX Co., Ltd.", "HUMAX" }, { 0xFCECDA, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0xE07C13, "zte corporation", "ZTE" }, { 0x58E16C, "Ying Hua Information Technology (Shanghai)Co., LTD", "YING-HUA-INFORMATION-SHANGHAI" }, { 0x24C1BD, "CRRC DALIAN R&D CO.,LTD.", "CRRC-DALIAN-R-D" }, { 0xA81E84, "QUANTA COMPUTER INC. ", "QUANTA" }, { 0xC82158, "Intel Corporate", "INTEL-CORPORATE" }, { 0x2420C7, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x703D15, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x4018B1, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x001977, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xC8665D, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x4865EE, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x3CEF8C, "Zhejiang Dahua Technology Co., Ltd.", "ZHEJIANG-DAHUA" }, { 0xA0CC2B, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x00234A, "Private", "PRIVATE" }, { 0x88C626, "Logitech, Inc", "LOGITECH" }, { 0x28E31F, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x0C1DAF, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x14F65A, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x742344, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xF0B429, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x94E979, "Liteon Technology Corporation", "LITEON" }, { 0xAC1F6B, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x80D4A5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x38BC01, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04B0E7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x446A2E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0026AB, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0x64EB8C, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0xA06FAA, "LG Innotek", "LG-INNOTEK" }, { 0x0015FC, "Littelfuse Startco", "LITTELFUSE-STARTCO" }, { 0x504B5B, "CONTROLtronic GmbH", "CONTROLTRONIC" }, { 0xA0E0AF, "Cisco Systems, Inc", "CISCO" }, { 0x603E7B, "Gafachi, Inc.", "GAFACHI" }, { 0x98F199, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x78FC14, "Family Zone Cyber Safety Ltd ", "FAMILY-ZONE-CYBER-SAFETY" }, { 0x1062EB, "D-Link International", "D-LINK" }, { 0xE0A700, "Verkada Inc", "VERKADA" }, { 0x901711, "Hagenuk Marinekommunikation GmbH", "HAGENUK-MARINEKOMMUNIKATION" }, { 0xD825B0, "Rockeetech Systems Co.,Ltd.", "ROCKEETECH" }, { 0x74614B, "Chongqing Huijiatong Information Technology Co., Ltd.", "CHONGQING-HUIJIATONG-INFORMATION" }, { 0xC0D9F7, "ShanDong Domor Intelligent S&T CO.,Ltd", "SHANDONG-DOMOR-INTELLIGENT-S-T" }, { 0x94FB29, "Zebra Technologies Inc.", "ZEBRA-TECHNOLOGIES" }, { 0x64DBA0, "Select Comfort", "SELECT-COMFORT" }, { 0x5800E3, "Liteon Technology Corporation", "LITEON" }, { 0x64777D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x0495E6, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x0016D3, "Wistron Corporation", "WISTRON" }, { 0x001F16, "Wistron Corporation", "WISTRON" }, { 0x4C4E03, "TCT mobile ltd", "TCT-MOBILE" }, { 0x50E666, "Shenzhen Techtion Electronics Co., Ltd.", "SHENZHEN-TECHTION-ELECTRONICS" }, { 0x6831FE, "Teladin Co.,Ltd.", "TELADIN" }, { 0xEC43F6, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xD4B169, "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0x0C3CCD, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xB04089, "Senient Systems LTD", "SENIENT" }, { 0x002445, "Adtran Inc", "ADTRAN" }, { 0x689FF0, "zte corporation", "ZTE" }, { 0x7CC6C4, "Kolff Computer Supplies b.v.", "KOLFF-SUPPLIES" }, { 0x14B7F8, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xF06E32, "MICROTEL INNOVATION S.R.L.", "MICROTEL-INNOVATION-S-R-L" }, { 0x00E022, "Analog Devices, Inc.", "ANALOG-DEVICES" }, { 0x7C67A2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x000302, "Charles Industries, Ltd.", "CHARLES-INDUSTRIES" }, { 0x0896AD, "Cisco Systems, Inc", "CISCO" }, { 0x8CF5A3, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xB8EAAA, "ICG NETWORKS CO.,ltd", "ICG-NETWORKS" }, { 0xB8F883, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xDCFE18, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xAC60B6, "Ericsson AB", "ERICSSON-AB" }, { 0x3C197D, "Ericsson AB", "ERICSSON-AB" }, { 0x74C99A, "Ericsson AB", "ERICSSON-AB" }, { 0x000F4F, "PCS Systemtechnik GmbH", "PCS-SYSTEMTECHNIK" }, { 0x7C5A1C, "Sophos Ltd", "SOPHOS" }, { 0x00E400, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x00117E, "Midmark Corp", "MIDMARK" }, { 0x105AF7, "ADB Italia ", "ADB-ITALIA" }, { 0x703ACB, "Google, Inc.", "GOOGLE" }, { 0xD481D7, "Dell Inc.", "DELL" }, { 0x2C55D3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF44C7F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x143004, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7C4685, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0xE05163, "Arcadyan Corporation", "ARCADYAN" }, { 0x00A06F, "Color Sentinel Systems, LLC", "COLOR-SENTINEL-LLC" }, { 0x0C5F35, "Niagara Video Corporation", "NIAGARA-VIDEO" }, { 0xB85001, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x000496, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x7C3866, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x50F14A, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x9C1D58, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x500FF5, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x1C1EE3, "Hui Zhou Gaoshengda Technology Co.,LTD", "HUI-ZHOU-GAOSHENGDA" }, { 0xF0272D, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x74C246, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0xF4C4D6, "Shenzhen Xinfa Electronic Co.,ltd", "SHENZHEN-XINFA" }, { 0x08B258, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xC03D46, "Shanghai Sango Network Technology Co.,Ltd", "SHANGHAI-SANGO-NETWORK" }, { 0xE89FEC, "CHENGDU KT ELECTRONIC HI-TECH CO.,LTD", "CHENGDU-KT-HI-TECH" }, { 0xBCA042, "SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD", "SHANGHAI-FLYCO-ELECTRICAL-APPLIANCE" }, { 0xD47DFC, "TECNO MOBILE LIMITED", "TECNO-MOBILE" }, { 0x443708, "MRV Comunications", "MRV-COMUNICATIONS" }, { 0x14568E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6837E9, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x8058F8, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xF0D7AA, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x28FF3E, "zte corporation", "ZTE" }, { 0x886B6E, "Apple, Inc.", "APPLE" }, { 0x4C74BF, "Apple, Inc.", "APPLE" }, { 0x70F087, "Apple, Inc.", "APPLE" }, { 0x285767, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0x0024AF, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0x04C9D9, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0xD0498B, "ZOOM SERVER", "ZOOM-SERVER" }, { 0xC49DED, "Microsoft Corporation", "MICROSOFT" }, { 0x98A40E, "Snap, Inc.", "SNAP" }, { 0x2C5A0F, "Cisco Systems, Inc", "CISCO" }, { 0xAC7409, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xE037BF, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x4C8120, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0xE8E732, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x00118B, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x00E0B1, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x6854ED, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xB42A0E, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xE8DE8E, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x40C8CB, "AM Telecom co., Ltd.", "AM-TELECOM" }, { 0x14A0F8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x28B448, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE442A6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6045CB, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x84AFEC, "BUFFALO.INC", "BUFFALO" }, { 0xAC202E, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x48A74E, "zte corporation", "ZTE" }, { 0x3C5282, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB0AA36, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x2C5BB8, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x1C48CE, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x004066, "APRESIA Systems Ltd", "APRESIA" }, { 0x9CAC6D, "Universal Electronics, Inc.", "UNIVERSAL-ELECTRONICS" }, { 0xB03D96, "Vision Valley FZ LLC", "VISION-VALLEY-FZ-LLC" }, { 0xB02628, "Broadcom Limited", "BROADCOM" }, { 0xE81363, "Comstock RD, Inc.", "COMSTOCK-RD" }, { 0x44AA50, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0080E7, "Leonardo Tactical Systems.", "LEONARDO-TACTICAL" }, { 0x688DB6, "AETEK INC.", "AETEK" }, { 0x481063, "NTT Innovation Institute, Inc.", "NTT-INNOVATION-INSTITUTE" }, { 0x24F5AA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF877B8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x682737, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5056BF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD428D5, "TCT mobile ltd", "TCT-MOBILE" }, { 0x405CFD, "Dell Inc.", "DELL" }, { 0x041B6D, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x00D037, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x306023, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xACB313, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x14ABF0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0CF893, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8461A0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE83381, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x44E137, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xFC6FB7, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA0C562, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA055DE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x54E2E0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x28C87A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0026D9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xC8AA21, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2C9E5F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002495, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002642, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA4ED4E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024A1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002375, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015CE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001311, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015A2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001596, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0000CA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x601971, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001626, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00111A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00152F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000B06, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000F9F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0011AE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002040, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x1C1B68, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x10868C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x1005B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7C2634, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E5A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DBE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001371, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00149A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A1B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0018A4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001ADB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001F7E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001C11, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001CC1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001D6B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x400D10, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x341FE4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA0094C, "CenturyLink", "CENTURYLINK" }, { 0x00A38E, "Cisco Systems, Inc", "CISCO" }, { 0xDCC8F5, "Shanghai UMEinfo CO.,LTD.", "SHANGHAI-UMEINFO" }, { 0x64DFE9, "ATEME", "ATEME" }, { 0x9097F3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x58C5CB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xACAFB9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x308976, "DALIAN LAMBA TECHNOLOGY CO.,LTD", "DALIAN-LAMBA" }, { 0x447BBB, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0xA4F4C2, "VNPT TECHNOLOGY", "VNPT" }, { 0xC0A5DD, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x1835D1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x4C38D8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xDCBE7A, "Zhejiang Nurotron Biotechnology Co.", "ZHEJIANG-NUROTRON-BIOTECHNOLOGY" }, { 0x206BE7, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x4857DD, "Facebook Inc", "FACEBOOK" }, { 0x681DEF, "Shenzhen CYX Technology Co., Ltd.", "SHENZHEN-CYX" }, { 0xAC203E, "Wuhan Tianyu Information Industry Co., Ltd.", "WUHAN-TIANYU-INFORMATION-INDUSTRY" }, { 0x30074D, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x00A3D1, "Cisco Systems, Inc", "CISCO" }, { 0x801DAA, "Avaya Inc", "AVAYA" }, { 0x001B4F, "Avaya Inc", "AVAYA" }, { 0x7052C5, "Avaya Inc", "AVAYA" }, { 0x848371, "Avaya Inc", "AVAYA" }, { 0x24D921, "Avaya Inc", "AVAYA" }, { 0xA051C6, "Avaya Inc", "AVAYA" }, { 0x90EC50, "C.O.B.O. SPA", "C-O-B-O-SPA" }, { 0x90FB5B, "Avaya Inc", "AVAYA" }, { 0xB4475E, "Avaya Inc", "AVAYA" }, { 0xD4EA0E, "Avaya Inc", "AVAYA" }, { 0xA009ED, "Avaya Inc", "AVAYA" }, { 0x3C0CDB, "UNIONMAN TECHNOLOGY CO.,LTD", "UNIONMAN" }, { 0xC81FEA, "Avaya Inc", "AVAYA" }, { 0xF01B6C, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xDC1AC5, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x205D47, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x9CFBD5, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x10F681, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x886AE3, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x9061AE, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA4F3E7, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0xA0239F, "Cisco Systems, Inc", "CISCO" }, { 0xD8DF7A, "Quest Software, Inc.", "QUEST-SOFTWARE" }, { 0x30B62D, "Mojo Networks, Inc.", "MOJO-NETWORKS" }, { 0x001B17, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x9828A6, "COMPAL INFORMATION (KUNSHAN) CO., LTD. ", "COMPAL-INFORMATION-KUNSHAN" }, { 0xB0EABC, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x94C691, "EliteGroup Computer Systems Co., LTD", "ELITEGROUP" }, { 0x9C6F52, "zte corporation", "ZTE" }, { 0xA09D86, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xE0CBBC, "Cisco Meraki", "CISCO-MERAKI" }, { 0x00D01F, "Senetas Corporation Ltd", "SENETAS" }, { 0xA40450, "nFore Technology Inc.", "NFORE" }, { 0x4CB008, "Shenzhen Gwelltimes Technology Co.,Ltd", "SHENZHEN-GWELLTIMES" }, { 0x2CE6CC, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x8C0C90, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x842096, "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "SHENZHEN-RF-LINK" }, { 0x589396, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x74911A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x00227F, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x002482, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x58B633, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xD4684D, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xF03E90, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xEC8CA2, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x3087D9, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x24792A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x30F77F, "S Mobile Devices Limited", "S-MOBILE-DEVICES" }, { 0x5C5181, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x389AF6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE0AA96, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x507705, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x38E595, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0xC4CB6B, "Airista Flow, Inc.", "AIRISTA-FLOW" }, { 0xB05508, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x008BFC, "mixi,Inc.", "MIXI" }, { 0x2C4053, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00A085, "Private", "PRIVATE" }, { 0xACDE48, "Private", "PRIVATE" }, { 0xD09466, "Dell Inc.", "DELL" }, { 0xF0EFD2, "TF PAYMENT SERVICE CO., LTD", "TF-PAYMENT-SERVICE" }, { 0x30C01B, "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd", "SHENZHEN-JINGXUN-SOFTWARE-TELECOMMUNICATION" }, { 0x647C34, "Ubee Interactive Co., Limited", "UBEE-INTERACTIVE" }, { 0x747D24, "Phicomm (Shanghai) Co., Ltd.", "PHICOMM-SHANGHAI" }, { 0xE817FC, "Fujitsu Cloud Technologies Limited", "FUJITSU-CLOUD-TECHNOLOGIES" }, { 0x001009, "HORANET", "HORANET" }, { 0x6432A8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x78BC1A, "Cisco Systems, Inc", "CISCO" }, { 0xE4F004, "Dell Inc.", "DELL" }, { 0x60F677, "Intel Corporate", "INTEL-CORPORATE" }, { 0x288CB8, "zte corporation", "ZTE" }, { 0x0C72D9, "zte corporation", "ZTE" }, { 0xE472E2, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE86819, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x602E20, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x48BCA6, "​ASUNG TECHNO CO.,Ltd", "​ASUNG-TECHNO" }, { 0x006069, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000CDB, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x8C7CFF, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xC4F57C, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00237F, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x00095B, "NETGEAR", "NETGEAR" }, { 0x000FB5, "NETGEAR", "NETGEAR" }, { 0x803773, "NETGEAR", "NETGEAR" }, { 0x405D82, "NETGEAR", "NETGEAR" }, { 0xC0FFD4, "NETGEAR", "NETGEAR" }, { 0x10DA43, "NETGEAR", "NETGEAR" }, { 0xB03956, "NETGEAR", "NETGEAR" }, { 0xC43DC7, "NETGEAR", "NETGEAR" }, { 0xF87394, "NETGEAR", "NETGEAR" }, { 0x401B5F, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0xAC512C, "Infinix mobility limited", "INFINIX-MOBILITY" }, { 0x90B1E0, "Beijing Nebula Link Technology Co., Ltd", "BEIJING-NEBULA-LINK" }, { 0x6C090A, "GEMATICA SRL", "GEMATICA-SRL" }, { 0x001439, "Blonder Tongue Laboratories, Inc", "BLONDER-TONGUE-LABORATORIES" }, { 0x107B44, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x9C4FCF, "TCT mobile ltd", "TCT-MOBILE" }, { 0x001BD3, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x00C08F, "Panasonic Electric Works Co., Ltd.", "PANASONIC-ELECTRIC-WORKS" }, { 0x0008C9, "TechniSat Digital GmbH Daun", "TECHNISAT-DIGITAL-DAUN" }, { 0x20A6CD, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0xF4F3AA, "JBL GmbH & Co. KG", "JBL" }, { 0x38CD07, "Beijing FaceCam Technology Co., Ltd.", "BEIJING-FACECAM" }, { 0xB009DA, "Ring Solutions", "RING-SOLUTIONS" }, { 0x444AB0, "Zhejiang Moorgen Intelligence Technology Co., Ltd", "ZHEJIANG-MOORGEN-INTELLIGENCE" }, { 0x844167, "Apple, Inc.", "APPLE" }, { 0xB4F61C, "Apple, Inc.", "APPLE" }, { 0xECFA03, "FCA", "FCA" }, { 0x90324B, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x78E103, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x78A6E1, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xF4D7B2, "LGS Innovations, LLC", "LGS-INNOVATIONS-LLC" }, { 0x34298F, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x20040F, "Dell Inc.", "DELL" }, { 0x2C7360, "Earda Technologies co Ltd", "EARDA-TECHNOLOGIES" }, { 0x048B42, "Skspruce Technologies", "SKSPRUCE-TECHNOLOGIES" }, { 0x9C63ED, "zte corporation", "ZTE" }, { 0xC421C8, "KYOCERA CORPORATION ", "KYOCERA" }, { 0x002692, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 0xF03D03, "TECNO MOBILE LIMITED", "TECNO-MOBILE" }, { 0x006088, "Analog Devices, Inc.", "ANALOG-DEVICES" }, { 0x084ACF, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x1CDDEA, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xECEBB8, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x5CE8B7, "Oraimo Technology Limited", "ORAIMO" }, { 0xD89EF3, "Dell Inc.", "DELL" }, { 0xCC66B2, "Nokia", "NOKIA" }, { 0xC0742B, "SHENZHEN XUNLONG SOFTWARE CO.,LIMITED", "SHENZHEN-XUNLONG-SOFTWARE" }, { 0xD8AFF1, "Panasonic Appliances Company", "PANASONIC-APPLIANCES-COMPANY" }, { 0x7086C1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA072E4, "NJ SYSTEM CO.,LTD", "NJ-SYSTEM" }, { 0xA8E824, "INIM ELECTRONICS S.R.L.", "INIM-ELECTRONICS-S-R-L" }, { 0x6CB749, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA0FE61, "Vivint Wireless Inc. ", "VIVINT-WIRELESS" }, { 0x601803, "Daikin Air-conditioning (Shanghai) Co., Ltd.", "DAIKIN-AIR-CONDITIONING-SHANGHAI" }, { 0x08152F, "Samsung Electronics Co., Ltd. ARTIK", "SAMSUNG-ELECTRONICS-ARTIK" }, { 0x408BF6, "Shenzhen TCL New Technology Co., Ltd", "SHENZHEN-TCL-NEW" }, { 0xF46E24, "NEC Personal Computers, Ltd.", "NEC-PERSONAL-COMPUTERS" }, { 0x888279, "Shenzhen RB-LINK Intelligent Technology Co.Ltd", "SHENZHEN-RB-LINK-INTELLIGENT" }, { 0x78321B, "D-Link International", "D-LINK" }, { 0xEC51BC, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xF079E8, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xA013CB, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x20896F, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x741E93, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x18A3E8, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x60B617, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xCC500A, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xA8E705, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x74C9A3, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xD8A534, "Spectronix Corporation", "SPECTRONIX" }, { 0x5846E1, "Baxter International Inc", "BAXTER" }, { 0x00D0BD, "Lattice Semiconductor Corp. (LPA)", "LATTICE-SEMICONDUCTOR-LPA" }, { 0xF08261, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xD084B0, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x00FEC8, "Cisco Systems, Inc", "CISCO" }, { 0xEC2280, "D-Link International", "D-LINK" }, { 0x047863, "Shanghai MXCHIP Information Technology Co., Ltd.", "SHANGHAI-MXCHIP-INFORMATION" }, { 0x24BA13, "RISO KAGAKU CORPORATION", "RISO-KAGAKU" }, { 0x24DA11, "NO NDA Inc", "NO-NDA" }, { 0x70CA4D, "Shenzhen lnovance Technology Co.,Ltd.", "SHENZHEN-LNOVANCE" }, { 0xDCC0EB, "ASSA ABLOY CÔTE PICARDE", "ASSA-ABLOY-CÔTE-PICARDE" }, { 0x001735, "Intel Wireless Network Group", "INTEL-WIRELESS-NETWORK-GROUP" }, { 0x9CDFB1, "Shenzhen Crave Communication Co., LTD", "SHENZHEN-CRAVE-COMMUNICATION" }, { 0x5CF938, "Apple, Inc.", "APPLE" }, { 0x3871DE, "Apple, Inc.", "APPLE" }, { 0xBC5436, "Apple, Inc.", "APPLE" }, { 0x0CC731, "Currant, Inc.", "CURRANT" }, { 0x00142F, "Savvius", "SAVVIUS" }, { 0x2CDDA3, "Point Grey Research Inc.", "POINT-GREY-RESEARCH" }, { 0x24FD5B, "SmartThings, Inc.", "SMARTTHINGS" }, { 0x2876CD, "Funshion Online Technologies Co.,Ltd", "FUNSHION-ONLINE-TECHNOLOGIES" }, { 0xF4F5D8, "Google, Inc.", "GOOGLE" }, { 0xF4F5E8, "Google, Inc.", "GOOGLE" }, { 0xF88FCA, "Google, Inc.", "GOOGLE" }, { 0xBCD1D3, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0xBC4434, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x0041D2, "Cisco Systems, Inc", "CISCO" }, { 0x4CFB45, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA4BA76, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x78E3B5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x984BE1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x68B599, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x14D64D, "D-Link International", "D-LINK" }, { 0xC8BE19, "D-Link International", "D-LINK" }, { 0xBCF685, "D-Link International", "D-LINK" }, { 0xCCB255, "D-Link International", "D-LINK" }, { 0x84C9B2, "D-Link International", "D-LINK" }, { 0xDCD321, "HUMAX Co., Ltd.", "HUMAX" }, { 0xCC4EEC, "HUMAX Co., Ltd.", "HUMAX" }, { 0xDC330D, "Qingdao Haier Telecom Co.,Ltd", "QINGDAO-HAIER-TELECOM-," }, { 0x0080E1, "STMicroelectronics SRL", "STMICROELECTRONICS-SRL" }, { 0x58DC6D, "Exceptional Innovation, Inc.", "EXCEPTIONAL-INNOVATION" }, { 0x00092D, "HTC Corporation", "HTC" }, { 0xF8DB7F, "HTC Corporation", "HTC" }, { 0xE899C4, "HTC Corporation", "HTC" }, { 0x7CB15D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x18686A, "zte corporation", "ZTE" }, { 0x0C0535, "Juniper Systems", "JUNIPER" }, { 0x8CF228, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x78F882, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x8851FB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xAC162D, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA0B3CC, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xE4115B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC8CBB8, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x9457A5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0001E7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x080009, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0080A0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD48564, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x3C4A92, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x780AC7, "Baofeng TV Co., Ltd.", "BAOFENG-TV" }, { 0x001D73, "BUFFALO.INC", "BUFFALO" }, { 0x001601, "BUFFALO.INC", "BUFFALO" }, { 0x106F3F, "BUFFALO.INC", "BUFFALO" }, { 0x8857EE, "BUFFALO.INC", "BUFFALO" }, { 0x009C02, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x78E7D1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001B78, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001E0B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C6E85, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00D0B7, "Intel Corporation", "INTEL" }, { 0x0002B3, "Intel Corporation", "INTEL" }, { 0x001111, "Intel Corporation", "INTEL" }, { 0x001320, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0012F0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9049FA, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC8348E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00508B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x784859, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x1458D0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5065F3, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA0481C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA01D48, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x94B2CC, "PIONEER CORPORATION", "PIONEER" }, { 0x887F03, "Comper Technology Investment Limited", "COMPER-INVESTMENT" }, { 0xE06066, "Sercomm Corporation", "SERCOMM" }, { 0x0019E0, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0023CD, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x002719, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x40169F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x940C6D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x74EA3A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x90F652, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x10FEED, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xC46E1F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x50FA84, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF483CD, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x882593, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x808917, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x5C899A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x1C994C, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xF02765, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x20A783, "miControl GmbH", "MICONTROL" }, { 0x005053, "Cisco Systems, Inc", "CISCO" }, { 0x00500F, "Cisco Systems, Inc", "CISCO" }, { 0xD842AC, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0x34CDBE, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD46AA8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5439DF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4846FB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x200BC7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x104780, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x88308A, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x44A7CF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0013E0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x344B50, "zte corporation", "ZTE" }, { 0xFCC897, "zte corporation", "ZTE" }, { 0x9CD24B, "zte corporation", "ZTE" }, { 0xC864C7, "zte corporation", "ZTE" }, { 0xD0154A, "zte corporation", "ZTE" }, { 0x88E3AB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00664B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x68A0F6, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5CF96A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB43052, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x88CEFA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x582AF7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF48E92, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x40CBA8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x087A4C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD46E5C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2469A5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC8D15E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF83DFF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x308730, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x002568, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x30D17E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9C28EF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7C6097, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x60DE44, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3400A3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x643E8C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00C610, "Apple, Inc.", "APPLE" }, { 0x70DEE2, "Apple, Inc.", "APPLE" }, { 0x182032, "Apple, Inc.", "APPLE" }, { 0x6CC26B, "Apple, Inc.", "APPLE" }, { 0x1040F3, "Apple, Inc.", "APPLE" }, { 0xFC253F, "Apple, Inc.", "APPLE" }, { 0x183451, "Apple, Inc.", "APPLE" }, { 0xC0847A, "Apple, Inc.", "APPLE" }, { 0x64200C, "Apple, Inc.", "APPLE" }, { 0x74E1B6, "Apple, Inc.", "APPLE" }, { 0x0C771A, "Apple, Inc.", "APPLE" }, { 0x00F4B9, "Apple, Inc.", "APPLE" }, { 0xC8334B, "Apple, Inc.", "APPLE" }, { 0xB8F6B1, "Apple, Inc.", "APPLE" }, { 0xC09F42, "Apple, Inc.", "APPLE" }, { 0x189EFC, "Apple, Inc.", "APPLE" }, { 0x6C3E6D, "Apple, Inc.", "APPLE" }, { 0x0016FE, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x0498F3, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x38C096, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xE0750A, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xB05947, "Shenzhen Qihu Intelligent Technology Company Limited", "SHENZHEN-QIHU-INTELLIGENT-COMPANY" }, { 0x00E04F, "Cisco Systems, Inc", "CISCO" }, { 0x001011, "Cisco Systems, Inc", "CISCO" }, { 0x0010F6, "Cisco Systems, Inc", "CISCO" }, { 0x80E01D, "Cisco Systems, Inc", "CISCO" }, { 0x80E86F, "Cisco Systems, Inc", "CISCO" }, { 0xE4AA5D, "Cisco Systems, Inc", "CISCO" }, { 0xB0AA77, "Cisco Systems, Inc", "CISCO" }, { 0x78BAF9, "Cisco Systems, Inc", "CISCO" }, { 0x0016B6, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x0018F8, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00252E, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xA4A24A, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x602AD0, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x001BFB, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x00E08F, "Cisco Systems, Inc", "CISCO" }, { 0x203A07, "Cisco Systems, Inc", "CISCO" }, { 0x34A84E, "Cisco Systems, Inc", "CISCO" }, { 0xE4D3F1, "Cisco Systems, Inc", "CISCO" }, { 0x1CE6C7, "Cisco Systems, Inc", "CISCO" }, { 0xE02F6D, "Cisco Systems, Inc", "CISCO" }, { 0x8478AC, "Cisco Systems, Inc", "CISCO" }, { 0x4403A7, "Cisco Systems, Inc", "CISCO" }, { 0x6886A7, "Cisco Systems, Inc", "CISCO" }, { 0xB4E9B0, "Cisco Systems, Inc", "CISCO" }, { 0x000832, "Cisco Systems, Inc", "CISCO" }, { 0xB0FAEB, "Cisco Systems, Inc", "CISCO" }, { 0x500604, "Cisco Systems, Inc", "CISCO" }, { 0x70105C, "Cisco Systems, Inc", "CISCO" }, { 0x7CFADF, "Apple, Inc.", "APPLE" }, { 0x101C0C, "Apple, Inc.", "APPLE" }, { 0x001124, "Apple, Inc.", "APPLE" }, { 0x001D4F, "Apple, Inc.", "APPLE" }, { 0x001E52, "Apple, Inc.", "APPLE" }, { 0x001F5B, "Apple, Inc.", "APPLE" }, { 0x001FF3, "Apple, Inc.", "APPLE" }, { 0x0021E9, "Apple, Inc.", "APPLE" }, { 0x00236C, "Apple, Inc.", "APPLE" }, { 0x002500, "Apple, Inc.", "APPLE" }, { 0x60FB42, "Apple, Inc.", "APPLE" }, { 0x14DAE9, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x3C08F6, "Cisco Systems, Inc", "CISCO" }, { 0xD072DC, "Cisco Systems, Inc", "CISCO" }, { 0x28C7CE, "Cisco Systems, Inc", "CISCO" }, { 0x6CFA89, "Cisco Systems, Inc", "CISCO" }, { 0x58F39C, "Cisco Systems, Inc", "CISCO" }, { 0x346288, "Cisco Systems, Inc", "CISCO" }, { 0x881DFC, "Cisco Systems, Inc", "CISCO" }, { 0xF81EDF, "Apple, Inc.", "APPLE" }, { 0x90840D, "Apple, Inc.", "APPLE" }, { 0xD8A25E, "Apple, Inc.", "APPLE" }, { 0xC8BCC8, "Apple, Inc.", "APPLE" }, { 0x28E7CF, "Apple, Inc.", "APPLE" }, { 0xD89E3F, "Apple, Inc.", "APPLE" }, { 0x040CCE, "Apple, Inc.", "APPLE" }, { 0xA4D1D2, "Apple, Inc.", "APPLE" }, { 0x406C8F, "Apple, Inc.", "APPLE" }, { 0xC067AF, "Cisco Systems, Inc", "CISCO" }, { 0x64E950, "Cisco Systems, Inc", "CISCO" }, { 0x189C5D, "Cisco Systems, Inc", "CISCO" }, { 0x000EA6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0013D4, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002618, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x00248C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0050A2, "Cisco Systems, Inc", "CISCO" }, { 0x0050F0, "Cisco Systems, Inc", "CISCO" }, { 0x00905F, "Cisco Systems, Inc", "CISCO" }, { 0x00902B, "Cisco Systems, Inc", "CISCO" }, { 0x00100B, "Cisco Systems, Inc", "CISCO" }, { 0x00100D, "Cisco Systems, Inc", "CISCO" }, { 0x001014, "Cisco Systems, Inc", "CISCO" }, { 0x649ABE, "Apple, Inc.", "APPLE" }, { 0x94E96A, "Apple, Inc.", "APPLE" }, { 0xAC293A, "Apple, Inc.", "APPLE" }, { 0x10417F, "Apple, Inc.", "APPLE" }, { 0x7014A6, "Apple, Inc.", "APPLE" }, { 0xA8667F, "Apple, Inc.", "APPLE" }, { 0xD02598, "Apple, Inc.", "APPLE" }, { 0xCC29F5, "Apple, Inc.", "APPLE" }, { 0x6C709F, "Apple, Inc.", "APPLE" }, { 0x0C3E9F, "Apple, Inc.", "APPLE" }, { 0x34E2FD, "Apple, Inc.", "APPLE" }, { 0x609217, "Apple, Inc.", "APPLE" }, { 0x8863DF, "Apple, Inc.", "APPLE" }, { 0x80E650, "Apple, Inc.", "APPLE" }, { 0x006171, "Apple, Inc.", "APPLE" }, { 0x90FD61, "Apple, Inc.", "APPLE" }, { 0x5C97F3, "Apple, Inc.", "APPLE" }, { 0x6C4008, "Apple, Inc.", "APPLE" }, { 0x24A074, "Apple, Inc.", "APPLE" }, { 0xF02475, "Apple, Inc.", "APPLE" }, { 0x20A2E4, "Apple, Inc.", "APPLE" }, { 0x5CF5DA, "Apple, Inc.", "APPLE" }, { 0xD4B8FF, "Home Control Singapore Pte Ltd", "HOME-CONTROL-SINGAPORE-PTE" }, { 0x28E14C, "Apple, Inc.", "APPLE" }, { 0x54E43A, "Apple, Inc.", "APPLE" }, { 0xC8E0EB, "Apple, Inc.", "APPLE" }, { 0xA88808, "Apple, Inc.", "APPLE" }, { 0x907240, "Apple, Inc.", "APPLE" }, { 0x0C4DE9, "Apple, Inc.", "APPLE" }, { 0xD89695, "Apple, Inc.", "APPLE" }, { 0x0C3021, "Apple, Inc.", "APPLE" }, { 0xF0F61C, "Apple, Inc.", "APPLE" }, { 0xB03495, "Apple, Inc.", "APPLE" }, { 0x848E0C, "Apple, Inc.", "APPLE" }, { 0x8C2DAA, "Apple, Inc.", "APPLE" }, { 0x444C0C, "Apple, Inc.", "APPLE" }, { 0x84FCFE, "Apple, Inc.", "APPLE" }, { 0xE48B7F, "Apple, Inc.", "APPLE" }, { 0x5C969D, "Apple, Inc.", "APPLE" }, { 0xA8FAD8, "Apple, Inc.", "APPLE" }, { 0x949426, "Apple, Inc.", "APPLE" }, { 0xE0F5C6, "Apple, Inc.", "APPLE" }, { 0xAC6462, "zte corporation", "ZTE" }, { 0xC08488, "Finis Inc", "FINIS" }, { 0x68E8EB, "Linktel Technologies Co.,Ltd", "LINKTEL-TECHNOLOGIES" }, { 0x20C3A4, "RetailNext", "RETAILNEXT" }, { 0x780541, "Queclink Wireless Solutions Co., Ltd", "QUECLINK-WIRELESS-SOLUTIONS" }, { 0xC02DEE, "Cuff", "CUFF" }, { 0x54A3FA, "BQT Solutions (Australia)Pty Ltd", "BQT-SOLUTIONS-AUSTRALIA-PTY" }, { 0x9023EC, "Availink, Inc.", "AVAILINK" }, { 0x3891D5, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x90DFFB, "HOMERIDER SYSTEMS", "HOMERIDER" }, { 0x3C831E, "CKD Corporation", "CKD" }, { 0x381C23, "Hilan Technology CO.,LTD", "HILAN" }, { 0xE03676, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3CB72B, "PLUMgrid Inc", "PLUMGRID" }, { 0x243184, "SHARP Corporation", "SHARP" }, { 0x24DA9B, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x3052CB, "Liteon Technology Corporation", "LITEON" }, { 0xB8B2EB, "Googol Technology (HK) Limited", "GOOGOL-HK" }, { 0xC40049, "Kamama", "KAMAMA" }, { 0x50A9DE, "Smartcom - Bulgaria AD", "SMARTCOM---BULGARIA-AD" }, { 0xE8DED6, "Intrising Networks, Inc.", "INTRISING-NETWORKS" }, { 0xB844D9, "Apple, Inc.", "APPLE" }, { 0xDC2B2A, "Apple, Inc.", "APPLE" }, { 0x8C10D4, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x089B4B, "iKuai Networks", "IKUAI-NETWORKS" }, { 0x3C7873, "Airsonics", "AIRSONICS" }, { 0xBC5FF6, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0xC8F9C8, "NewSharp Technology(SuZhou)Co,Ltd", "NEWSHARP-SUZHOU" }, { 0x3C5CC3, "Shenzhen First Blue Chip Technology Ltd", "SHENZHEN-FIRST-BLUE-CHIP" }, { 0xA8741D, "PHOENIX CONTACT Electronics GmbH", "PHOENIX-CONTACT-ELECTRONICS" }, { 0xA4C138, "Telink Semiconductor (Taipei) Co. Ltd.", "TELINK-SEMICONDUCTOR-TAIPEI" }, { 0xD8EFCD, "Nokia", "NOKIA" }, { 0xEC0133, "TRINUS SYSTEMS INC.", "TRINUS" }, { 0x1C56FE, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x7CA23E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x501AA5, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0xF09A51, "Shanghai Viroyal Electronic Technology Company Limited", "SHANGHAI-VIROYAL-COMPANY" }, { 0x9870E8, "INNATECH SDN BHD", "INNATECH-SDN-BHD" }, { 0x50DF95, "Lytx", "LYTX" }, { 0x584925, "E3 Enterprise", "E3" }, { 0x94F278, "Elma Electronic", "ELMA" }, { 0xE8BDD1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3481F4, "SST Taiwan Ltd.", "SST-TAIWAN" }, { 0xF4B8A7, "zte corporation", "ZTE" }, { 0x58F102, "BLU Products Inc.", "BLU-PRODUCTS" }, { 0xB869C2, "Sunitec Enterprise Co., Ltd.", "SUNITEC" }, { 0x2CC548, "IAdea Corporation", "IADEA" }, { 0x307CB2, "ANOV FRANCE", "ANOV-FRANCE" }, { 0x90D8F3, "zte corporation", "ZTE" }, { 0x444CA8, "Arista Networks", "ARISTA-NETWORKS" }, { 0xFCE33C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xBC6A2F, "Henge Docks LLC", "HENGE-DOCKS-LLC" }, { 0xE4907E, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x48066A, "Tempered Networks, Inc.", "TEMPERED-NETWORKS" }, { 0x1CF03E, "Wearhaus Inc.", "WEARHAUS" }, { 0xDCDB70, "Tonfunk Systementwicklung und Service GmbH", "TONFUNK-SYSTEMENTWICKLUNG-UND-SERVICE" }, { 0xC47D46, "FUJITSU LIMITED", "FUJITSU" }, { 0x68EDA4, "Shenzhen Seavo Technology Co.,Ltd", "SHENZHEN-SEAVO" }, { 0xB899B0, "Cohere Technologies", "COHERE-TECHNOLOGIES" }, { 0x80C5E6, "Microsoft Corporation", "MICROSOFT" }, { 0xD85DEF, "Busch-Jaeger Elektro GmbH", "BUSCH-JAEGER-ELEKTRO" }, { 0x10DF8B, "Shenzhen CareDear Communication Technology Co.,Ltd", "SHENZHEN-CAREDEAR-COMMUNICATION" }, { 0x00A784, "ITX security", "ITX-SECURITY" }, { 0x800184, "HTC Corporation", "HTC" }, { 0x38FACA, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x44C69B, "Wuhan Feng Tian Information Network CO.,LTD", "WUHAN-FENG-TIAN-INFORMATION-NETWORK" }, { 0xC02567, "Nexxt Solutions", "NEXXT-SOLUTIONS" }, { 0xB46D35, "Dalian Seasky Automation Co;Ltd", "DALIAN-SEASKY-AUTOMATION" }, { 0xB89ACD, "ELITE OPTOELECTRONIC(ASIA)CO.,LTD", "ELITE-OPTOELECTRONIC-ASIA" }, { 0x241C04, "SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD.", "SHENZHEN-JEHE-DEVELOPMENT" }, { 0xF8CFC5, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xBCF811, "Xiamen DNAKE Technology Co.,Ltd", "XIAMEN-DNAKE" }, { 0xA8827F, "CIBN Oriental Network(Beijing) CO.,Ltd", "CIBN-ORIENTAL-NETWORK-BEIJING" }, { 0x900A39, "Wiio, Inc.", "WIIO" }, { 0xC4693E, "Turbulence Design Inc.", "TURBULENCE-DESIGN" }, { 0x1C8341, "Hefei Bitland Information Technology Co.Ltd", "HEFEI-BITLAND-INFORMATION" }, { 0x4011DC, "Sonance", "SONANCE" }, { 0x249EAB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDC56E6, "Shenzhen Bococom Technology Co.,LTD", "SHENZHEN-BOCOCOM" }, { 0x5CA178, "TableTop Media (dba Ziosk)", "TABLETOP-MEDIA-DBA-ZIOSK" }, { 0x702A7D, "EpSpot AB", "EPSPOT-AB" }, { 0xB8B3DC, "DEREK (SHAOGUAN) LIMITED", "DEREK-SHAOGUAN" }, { 0x6C1E70, "Guangzhou YBDS IT Co.,Ltd", "GUANGZHOU-YBDS-IT" }, { 0xC8E130, "Milkyway Group Ltd", "MILKYWAY-GROUP" }, { 0x8833BE, "Ivenix, Inc.", "IVENIX" }, { 0x34CC28, "Nexpring Co. LTD.,", "NEXPRING" }, { 0x144146, "Honeywell (China) Co., LTD", "HONEYWELL-CHINA" }, { 0xF41563, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0xC4EA1D, "Technicolor", "TECHNICOLOR" }, { 0x20E407, "Spark srl", "SPARK-SRL" }, { 0x887384, "Toshiba", "TOSHIBA" }, { 0x584704, "Shenzhen Webridge Technology Co.,Ltd", "SHENZHEN-WEBRIDGE" }, { 0xB856BD, "ITT LLC", "ITT-LLC" }, { 0x107873, "Shenzhen Jinkeyi Communication Co., Ltd.", "SHENZHEN-JINKEYI-COMMUNICATION" }, { 0xD45556, "Fiber Mountain Inc.", "FIBER-MOUNTAIN" }, { 0xF01E34, "ORICO Technologies Co., Ltd", "ORICO-TECHNOLOGIES" }, { 0x74A063, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA89008, "Beijing Yuecheng Technology Co. Ltd.", "BEIJING-YUECHENG" }, { 0x183864, "CAP-TECH INTERNATIONAL CO., LTD.", "CAP-TECH" }, { 0x08D34B, "Techman Electronics (Changshu) Co., Ltd.", "TECHMAN-ELECTRONICS-CHANGSHU" }, { 0xC808E9, "LG Electronics", "LG-ELECTRONICS" }, { 0x78ACBF, "Igneous Systems", "IGNEOUS" }, { 0x206274, "Microsoft Corporation", "MICROSOFT" }, { 0x5CCCFF, "Techroutes Network Pvt Ltd", "TECHROUTES-NETWORK-PVT" }, { 0x844BB7, "Beijing Sankuai Online Technology Co.,Ltd", "BEIJING-SANKUAI-ONLINE" }, { 0x148F21, "Garmin International", "GARMIN" }, { 0x3C6A9D, "Dexatek Technology LTD.", "DEXATEK" }, { 0x14893E, "VIXTEL TECHNOLOGIES LIMTED", "VIXTEL-TECHNOLOGIES-LIMTED" }, { 0x60F189, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x74A34A, "ZIMI CORPORATION", "ZIMI" }, { 0xD89341, "General Electric Global Research", "GENERAL-ELECTRIC-GLOBAL-RESEARCH" }, { 0xF4645D, "Toshiba", "TOSHIBA" }, { 0x30D587, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1436C6, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x04C09C, "Tellabs Inc.", "TELLABS" }, { 0x844464, "ServerU Inc", "SERVERU" }, { 0x589B0B, "Shineway Technologies, Inc.", "SHINEWAY-TECHNOLOGIES" }, { 0xA48CDB, "Lenovo", "LENOVO" }, { 0x4062B6, "Tele system communication", "TELE-SYSTEM-COMMUNICATION" }, { 0x3C2C94, "杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd)", "杭州德澜科技有限公司(HANGZHOU-DELAN-)" }, { 0x78312B, "zte corporation", "ZTE" }, { 0xC035C5, "Prosoft Systems LTD", "PROSOFT" }, { 0xF8B2F3, "GUANGZHOU BOSMA TECHNOLOGY CO.,LTD", "GUANGZHOU-BOSMA" }, { 0x1C7D22, "Fuji Xerox Co., Ltd.", "FUJI-XEROX" }, { 0x7C11CD, "QianTang Technology", "QIANTANG" }, { 0x0492EE, "iway AG", "IWAY" }, { 0xF02A23, "Creative Next Design", "CREATIVE-NEXT-DESIGN" }, { 0x8C9109, "Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd.", "TOYOSHIMA-ELECTRIC-TECHNOEOGY-SUZHOU" }, { 0x307350, "Inpeco SA", "INPECO" }, { 0xE8CC18, "D-Link International", "D-LINK" }, { 0xB09137, "ISis ImageStream Internet Solutions, Inc", "ISIS-IMAGESTREAM-INTERNET-SOLUTIONS" }, { 0x3C1E13, "HANGZHOU SUNRISE TECHNOLOGY CO., LTD", "HANGZHOU-SUNRISE" }, { 0xB4A828, "Shenzhen Concox Information Technology Co., Ltd", "SHENZHEN-CONCOX-INFORMATION" }, { 0xA41242, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x404EEB, "Higher Way Electronic Co., Ltd.", "HIGHER-WAY" }, { 0x50BD5F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x147590, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xECB907, "CloudGenix Inc", "CLOUDGENIX" }, { 0x5CF9F0, "Atomos Engineering P/L", "ATOMOS-ENGINEERING-P/L" }, { 0xFCDBB3, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xB8186F, "ORIENTAL MOTOR CO., LTD.", "ORIENTAL-MOTOR" }, { 0x1C9C26, "Zoovel Technologies", "ZOOVEL-TECHNOLOGIES" }, { 0x9C3583, "Nipro Diagnostics, Inc", "NIPRO-DIAGNOSTICS" }, { 0xC456FE, "Lava International Ltd.", "LAVA" }, { 0xB89BE4, "ABB Power Systems Power Generation", "ABB-POWER-POWER-GENERATION" }, { 0xC0EEFB, "OnePlus Tech (Shenzhen) Ltd", "ONEPLUS-TECH-SHENZHEN" }, { 0x108A1B, "RAONIX Inc.", "RAONIX" }, { 0x8CF813, "ORANGE POLSKA", "ORANGE-POLSKA" }, { 0xB8F317, "iSun Smasher Communications Private Limited", "ISUN-SMASHER-COMMUNICATION-PRIVATE" }, { 0x2442BC, "Alinco,incorporated", "ALINCO-INCORPORATED" }, { 0xC401CE, "PRESITION (2000) CO., LTD.", "PRESITION-2000" }, { 0xD01242, "BIOS Corporation", "BIOS" }, { 0x50F43C, "Leeo Inc", "LEEO" }, { 0xB43934, "Pen Generations, Inc.", "PEN-GENERATIONS" }, { 0xDCC622, "BUHEUNG SYSTEM", "BUHEUNG-SYSTEM" }, { 0xD062A0, "China Essence Technology (Zhumadian) Co., Ltd.", "CHINA-ESSENCE-ZHUMADIAN" }, { 0xCC10A3, "Beijing Nan Bao Technology Co., Ltd.", "BEIJING-NAN-BAO" }, { 0x2CA30E, "POWER DRAGON DEVELOPMENT LIMITED", "POWER-DRAGON-DEVELOPMENT" }, { 0x4CF5A0, "Scalable Network Technologies Inc", "SCALABLE-NETWORK-TECHNOLOGIES" }, { 0x084656, "VEO-LABS", "VEO-LABS" }, { 0x4488CB, "Camco Technologies NV", "CAMCO-TECHNOLOGIES-NV" }, { 0x5014B5, "Richfit Information Technology Co., Ltd", "RICHFIT-INFORMATION" }, { 0xCC3080, "VAIO Corporation", "VAIO" }, { 0xF82441, "Yeelink", "YEELINK" }, { 0x6CBFB5, "Noon Technology Co., Ltd", "NOON" }, { 0x489D18, "Flashbay Limited", "FLASHBAY" }, { 0x8CB094, "Airtech I&C Co., Ltd", "AIRTECH-I-C" }, { 0x70F196, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x6C6EFE, "Core Logic Inc.", "CORE-LOGIC" }, { 0xE4C62B, "Airware", "AIRWARE" }, { 0x80F8EB, "RayTight", "RAYTIGHT" }, { 0x94B40F, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x4C2C83, "Zhejiang KaNong Network Technology Co.,Ltd.", "ZHEJIANG-KANONG-NETWORK" }, { 0xE89606, "testo Instruments (Shenzhen) Co., Ltd.", "TESTO-INSTRUMENTS-SHENZHEN" }, { 0xCC3F1D, "Intesis Software SL", "INTESIS-SOFTWARE-SL" }, { 0x902181, "Shanghai Huaqin Telecom Technology Co.,Ltd", "SHANGHAI-HUAQIN-TELECOM" }, { 0x600417, "POSBANK CO.,LTD", "POSBANK" }, { 0xA44AD3, "ST Electronics(Shanghai) Co.,Ltd", "ST-ELECTRONICS-SHANGHAI" }, { 0x2497ED, "Techvision Intelligent Technology Limited", "TECHVISION-INTELLIGENT" }, { 0x104E07, "Shanghai Genvision Industries Co.,Ltd", "SHANGHAI-GENVISION-INDUSTRIES" }, { 0xFCD5D9, "Shenzhen SDMC Technology Co., Ltd.", "SHENZHEN-SDMC" }, { 0x007532, "INID BV", "INID" }, { 0x907EBA, "UTEK TECHNOLOGY (SHENZHEN) CO.,LTD", "UTEK-SHENZHEN" }, { 0x488244, "Life Fitness / Div. of Brunswick", "LIFE-FITNESS-/-DIV-OF-BRUNSWICK" }, { 0xA8F7E0, "PLANET Technology Corporation", "PLANET" }, { 0x2C5BE1, "Centripetal Networks, Inc", "CENTRIPETAL-NETWORKS" }, { 0xD87EB1, "x.o.ware, inc.", "X-O-WARE" }, { 0x4045DA, "Spreadtrum Communications (Shanghai) Co., Ltd.", "SPREADTRUM-COMMUNICATION-SHANGHAI" }, { 0x98BE94, "IBM", "IBM" }, { 0xD4B43E, "Messcomp Datentechnik GmbH", "MESSCOMP-DATENTECHNIK" }, { 0xA8E539, "Moimstone Co.,Ltd", "MOIMSTONE" }, { 0x98F170, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x04C991, "Phistek INC.", "PHISTEK" }, { 0x581F67, "Open-m technology limited", "OPEN-M" }, { 0xBC25F0, "3D Display Technologies Co., Ltd.", "3D-DISPLAY-TECHNOLOGIES" }, { 0x7CE524, "Quirky, Inc.", "QUIRKY" }, { 0xD85DFB, "Private", "PRIVATE" }, { 0x7CC4EF, "Devialet", "DEVIALET" }, { 0x94AEE3, "Belden Hirschmann Industries (Suzhou) Ltd.", "BELDEN-HIRSCHMANN-INDUSTRIES-SUZHOU" }, { 0x44666E, "IP-LINE", "IP-LINE" }, { 0x705B2E, "M2Communication Inc.", "M2COMMUNICATION" }, { 0x0C8C8F, "Kamo Technology Limited", "KAMO" }, { 0xF4FD2B, "ZOYI Company", "ZOYI-COMPANY" }, { 0xFCAA14, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x50FEF2, "Sify Technologies Ltd", "SIFY-TECHNOLOGIES" }, { 0x3CD9CE, "Eclipse WiFi", "ECLIPSE-WIFI" }, { 0xC80210, "LG Innotek", "LG-INNOTEK" }, { 0x702DD1, "Newings Communication CO., LTD.", "NEWINGS-COMMUNICATION" }, { 0x44746C, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xF4F646, "Dediprog Technology Co. Ltd.", "DEDIPROG" }, { 0xECD9D1, "Shenzhen TG-NET Botone Technology Co.,Ltd.", "SHENZHEN-TG-NET-BOTONE" }, { 0x748F4D, "MEN Mikro Elektronik GmbH", "MEN-MIKRO-ELEKTRONIK" }, { 0xA47E39, "zte corporation", "ZTE" }, { 0x0C63FC, "Nanjing Signway Technology Co., Ltd", "NANJING-SIGNWAY" }, { 0xACA9A0, "Audioengine, Ltd.", "AUDIOENGINE" }, { 0xA8A668, "zte corporation", "ZTE" }, { 0x60E327, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xE4D332, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA0DA92, "Nanjing Glarun Atten Technology Co. Ltd.", "NANJING-GLARUN-ATTEN" }, { 0x6828BA, "Dejai", "DEJAI" }, { 0x48D18E, "Metis Communication Co.,Ltd", "METIS-COMMUNICATION" }, { 0xA49F85, "Lyve Minds, Inc", "LYVE-MINDS" }, { 0x7CD30A, "INVENTEC Corporation", "INVENTEC" }, { 0x3481C4, "AVM GmbH", "AVM" }, { 0x085700, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x888914, "All Components Incorporated", "ALL-COMPONENTS-INCORPORATED" }, { 0xD8150D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA06518, "VNPT TECHNOLOGY", "VNPT" }, { 0x748F1B, "MasterImage 3D", "MASTERIMAGE-3D" }, { 0xF03A4B, "Bloombase, Inc.", "BLOOMBASE" }, { 0xD82A15, "Leitner SpA", "LEITNER-SPA" }, { 0xC4291D, "KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.", "KLEMSAN-ELEKTRIK-ELEKTRONIK-SAN-VE-TIC-AS" }, { 0x704E01, "KWANGWON TECH CO., LTD.", "KWANGWON-TECH" }, { 0x848433, "Paradox Engineering SA", "PARADOX-ENGINEERING" }, { 0xD4319D, "Sinwatec", "SINWATEC" }, { 0xDC052F, "National Products Inc.", "NATIONAL-PRODUCTS" }, { 0xCC398C, "Shiningtek", "SHININGTEK" }, { 0x6C5F1C, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xB42C92, "Zhejiang Weirong Electronic Co., Ltd", "ZHEJIANG-WEIRONG" }, { 0xFC1349, "Global Apps Corp.", "GLOBAL-APPS" }, { 0x8C41F2, "RDA Technologies Ltd.", "RDA-TECHNOLOGIES" }, { 0xFC07A0, "LRE Medical GmbH", "LRE-MEDICAL" }, { 0xAC02CA, "HI Solutions, Inc.", "HI-SOLUTIONS" }, { 0xF490CA, "Tensorcom", "TENSORCOM" }, { 0x2C534A, "Shenzhen Winyao Electronic Limited", "SHENZHEN-WINYAO" }, { 0xCC856C, "SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD", "SHENZHEN-MDK-DIGITAL" }, { 0x60FFDD, "C.E. ELECTRONICS, INC", "C-E-ELECTRONICS" }, { 0xFCBBA1, "Shenzhen Minicreate Technology Co.,Ltd", "SHENZHEN-MINICREATE" }, { 0x50B695, "Micropoint Biotechnologies,Inc.", "MICROPOINT-BIOTECHNOLOGIES" }, { 0xB48547, "Amptown System Company GmbH", "AMPTOWN-SYSTEM-COMPANY" }, { 0x3C25D7, "Nokia Corporation", "NOKIA" }, { 0x1889DF, "CerebrEX Inc.", "CEREBREX" }, { 0x30A8DB, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xCC9F35, "Transbit Sp. z o.o.", "TRANSBIT-SP-Z-O-O" }, { 0x407875, "IMBEL - Industria de Material Belico do Brasil", "IMBEL---INDUSTRIA-DE-MATERIAL-BELICO-DO-BRASIL" }, { 0x0C4F5A, "ASA-RT s.r.l.", "ASA-RT-S-R-L" }, { 0xB4B542, "Hubbell Power Systems, Inc.", "HUBBELL-POWER" }, { 0x54CDEE, "ShenZhen Apexis Electronic Co.,Ltd", "SHENZHEN-APEXIS" }, { 0xF8F005, "Newport Media Inc.", "NEWPORT-MEDIA" }, { 0x98C0EB, "Global Regency Ltd", "GLOBAL-REGENCY" }, { 0xD4224E, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x28DEF6, "bioMerieux Inc.", "BIOMERIEUX" }, { 0x88E8F8, "YONG TAI ELECTRONIC (DONGGUAN) LTD.", "YONG-TAI-DONGGUAN" }, { 0x2C073C, "DEVLINE LIMITED", "DEVLINE" }, { 0x7CE4AA, "Private", "PRIVATE" }, { 0x1820A6, "Sage Co., Ltd.", "SAGE" }, { 0xBCF61C, "Geomodeling Wuxi Technology Co. Ltd.", "GEOMODELING-WUXI" }, { 0x083F3E, "WSH GmbH", "WSH" }, { 0x6C09D6, "Digiquest Electronics LTD", "DIGIQUEST-ELECTRONICS" }, { 0x8C569D, "Imaging Solutions Group", "IMAGING-SOLUTIONS-GROUP" }, { 0xA43A69, "Vers Inc", "VERS" }, { 0x387B47, "AKELA, Inc.", "AKELA" }, { 0x7CCD11, "MS-Magnet", "MS-MAGNET" }, { 0x4CE1BB, "Zhuhai HiFocus Technology Co., Ltd.", "ZHUHAI-HIFOCUS" }, { 0x8CDE99, "Comlab Inc.", "COMLAB" }, { 0xB46698, "Zealabs srl", "ZEALABS-SRL" }, { 0x283B96, "Cool Control LTD", "COOL-CONTROL" }, { 0x80D433, "LzLabs GmbH", "LZLABS" }, { 0x085AE0, "Recovision Technology Co., Ltd.", "RECOVISION" }, { 0xBCEE7B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xFC09D8, "ACTEON Group", "ACTEON-GROUP" }, { 0x0C1262, "zte corporation", "ZTE" }, { 0x687CC8, "Measurement Systems S. de R.L.", "MEASUREMENT-S-DE-R-L" }, { 0xF015A0, "KyungDong One Co., Ltd.", "KYUNGDONG-ONE" }, { 0xECF72B, "HD DIGITAL TECH CO., LTD.", "HD-DIGITAL-TECH" }, { 0xD8B6D6, "Blu Tether Limited", "BLU-TETHER" }, { 0x847207, "I&C Technology", "I-C" }, { 0xE0AEB2, "Bender GmbH & Co.KG", "BENDER-AMP" }, { 0x2C553C, "Gainspeed, Inc.", "GAINSPEED" }, { 0xB43E3B, "Viableware, Inc", "VIABLEWARE" }, { 0xF854AF, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x2464EF, "CYG SUNRI CO.,LTD.", "CYG-SUNRI" }, { 0x50B888, "wi2be Tecnologia S/A", "WI2BE-TECNOLOGIA-S/A" }, { 0xB8C1A2, "Dragon Path Technologies Co., Limited", "DRAGON-PATH-TECHNOLOGIES" }, { 0x50ED78, "Changzhou Yongse Infotech Co.,Ltd", "CHANGZHOU-YONGSE-INFOTECH" }, { 0x8CB7F7, "Shenzhen UniStrong Science & Technology Co., Ltd", "SHENZHEN-UNISTRONG-SCIENCE" }, { 0x085240, "EbV Elektronikbau- und Vertriebs GmbH", "EBV-ELEKTRONIKBAU--UND-VERTRIEBS" }, { 0x80F25E, "Kyynel", "KYYNEL" }, { 0x844F03, "Ablelink Electronics Ltd", "ABLELINK-ELECTRONICS" }, { 0x94B9B4, "Aptos Technology", "APTOS" }, { 0xD0B523, "Bestcare Cloucal Corp.", "BESTCARE-CLOUCAL" }, { 0x783D5B, "TELNET Redes Inteligentes S.A.", "TELNET-REDES-INTELIGENTES" }, { 0xD0C42F, "Tamagawa Seiki Co.,Ltd.", "TAMAGAWA-SEIKI" }, { 0x5CFFFF, "Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd", "SHENZHEN-KEZHONGLONG-OPTOELECTRONIC" }, { 0xF0D3A7, "CobaltRay Co., Ltd", "COBALTRAY" }, { 0x847616, "Addat s.r.o.", "ADDAT-S-R-O" }, { 0xD46867, "Neoventus Design Group", "NEOVENTUS-DESIGN-GROUP" }, { 0x68692E, "Zycoo Co.,Ltd", "ZYCOO" }, { 0x38BF2F, "Espec Corp.", "ESPEC" }, { 0x182012, "Aztech Associates Inc.", "AZTECH-ASSOCIATES" }, { 0xC0F991, "GME Standard Communications P/L", "GME-STANDARD-COMMUNICATION-P/L" }, { 0x14EDA5, "Wächter GmbH Sicherheitssysteme", "WÄCHTER-SICHERHEITSSYSTEME" }, { 0xE056F4, "AxesNetwork Solutions inc.", "AXESNETWORK-SOLUTIONS" }, { 0x385AA8, "Beijing Zhongdun Security Technology Development Co.", "BEIJING-ZHONGDUN-SECURITY-DEVELOPMENT" }, { 0xFC3FAB, "Henan Lanxin Technology Co., Ltd", "HENAN-LANXIN" }, { 0xF8FF5F, "Shenzhen Communication Technology Co.,Ltd", "SHENZHEN-COMMUNICATION" }, { 0xDCC422, "Systembase Limited", "SYSTEMBASE" }, { 0xF4BD7C, "Chengdu jinshi communication Co., LTD", "CHENGDU-JINSHI-COMMUNICATION" }, { 0xC8F36B, "Yamato Scale Co.,Ltd.", "YAMATO-SCALE" }, { 0x6C90B1, "SanLogic Inc", "SANLOGIC" }, { 0x845C93, "Chabrier Services", "CHABRIER-SERVICES" }, { 0xD44C9C, "Shenzhen YOOBAO Technology Co.Ltd", "SHENZHEN-YOOBAO" }, { 0xA88D7B, "SunDroid Global limited.", "SUNDROID-GLOBAL" }, { 0xA03B1B, "Inspire Tech", "INSPIRE-TECH" }, { 0x3C6E63, "Mitron OY", "MITRON-OY" }, { 0x502E5C, "HTC Corporation", "HTC" }, { 0x20D21F, "Wincal Technology Corp.", "WINCAL" }, { 0xFC1E16, "IPEVO corp", "IPEVO" }, { 0x6C4B7F, "Vossloh-Schwabe Deutschland GmbH", "VOSSLOH-SCHWABE-DEUTSCHLAND" }, { 0x0CCB8D, "ASCO Numatics GmbH", "ASCO-NUMATICS" }, { 0x2847AA, "Nokia Corporation", "NOKIA" }, { 0x682DDC, "Wuhan Changjiang Electro-Communication Equipment CO.,LTD", "WUHAN-CHANGJIANG-ELECTRO-COMMUNICATION-EQUIPMENT" }, { 0x1C63B7, "OpenProducts 237 AB", "OPENPRODUCTS-237-AB" }, { 0xA0A23C, "GPMS", "GPMS" }, { 0x708D09, "Nokia Corporation", "NOKIA" }, { 0xFCE1D9, "Stable Imaging Solutions LLC", "STABLE-IMAGING-SOLUTIONS-LLC" }, { 0x38B74D, "Fijowave Limited", "FIJOWAVE" }, { 0xA0E5E9, "enimai Inc", "ENIMAI" }, { 0x9CBB98, "Shen Zhen RND Electronic Co.,LTD", "SHEN-ZHEN-RND" }, { 0x345C40, "Cargt Holdings LLC", "CARGT-HOLDINGS-LLC" }, { 0x34885D, "Logitech Far East", "LOGITECH-FAR-EAST" }, { 0x6064A1, "RADiflow Ltd.", "RADIFLOW" }, { 0x8079AE, "ShanDong Tecsunrise Co.,Ltd", "SHANDONG-TECSUNRISE" }, { 0x2C7155, "HiveMotion", "HIVEMOTION" }, { 0x909916, "ELVEES NeoTek OJSC", "ELVEES-NEOTEK-OJSC" }, { 0xFC1BFF, "V-ZUG AG", "V-ZUG" }, { 0xAC5036, "Pi-Coral Inc", "PI-CORAL" }, { 0xFC019E, "VIEVU", "VIEVU" }, { 0xF45F69, "Matsufu Electronics distribution Company", "MATSUFU-ELECTRONICS-DISTRIBUTION-COMPANY" }, { 0xF4A294, "EAGLE WORLD DEVELOPMENT CO., LIMITED", "EAGLE-WORLD-DEVELOPMENT" }, { 0x2CCD69, "Aqavi.com", "AQAVI-COM" }, { 0x947C3E, "Polewall Norge AS", "POLEWALL-NORGE-AS" }, { 0xE0D1E6, "Aliph dba Jawbone", "ALIPH-DBA-JAWBONE" }, { 0x28C671, "Yota Devices OY", "YOTA-DEVICES-OY" }, { 0xDC1792, "Captivate Network", "CAPTIVATE-NETWORK" }, { 0x7C8306, "Glen Dimplex Nordic as", "GLEN-DIMPLEX-NORDIC-AS" }, { 0x907A0A, "Gebr. Bode GmbH & Co KG", "GEBR-BODE" }, { 0x306112, "PAV GmbH", "PAV" }, { 0xA0C6EC, "ShenZhen ANYK Technology Co.,LTD", "SHENZHEN-ANYK" }, { 0xC80258, "ITW GSE ApS", "ITW-GSE-APS" }, { 0x1001CA, "Ashley Butterworth", "ASHLEY-BUTTERWORTH" }, { 0x246AAB, "IT-IS International", "IT-IS" }, { 0x28F532, "ADD-Engineering BV", "ADD-ENGINEERING" }, { 0xFC4BBC, "Sunplus Technology Co., Ltd.", "SUNPLUS" }, { 0x142D8B, "Incipio Technologies, Inc", "INCIPIO-TECHNOLOGIES" }, { 0xCCE8AC, "SOYEA Technology Co.,Ltd.", "SOYEA" }, { 0x78D38D, "HONGKONG YUNLINK TECHNOLOGY LIMITED", "HONGKONG-YUNLINK" }, { 0x1C48F9, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x744BE9, "EXPLORER HYPERTECH CO.,LTD", "EXPLORER-HYPERTECH" }, { 0xB836D8, "Videoswitch", "VIDEOSWITCH" }, { 0xF835DD, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x0CF019, "Malgn Technology Co., Ltd.", "MALGN" }, { 0xD46A91, "Snap AV", "SNAP-AV" }, { 0xE8519D, "Yeonhab Precision Co.,LTD", "YEONHAB-PRECISION" }, { 0x00B78D, "Nanjing Shining Electric Automation Co., Ltd", "NANJING-SHINING-ELECTRIC-AUTOMATION" }, { 0x68E166, "Private", "PRIVATE" }, { 0x60FEF9, "Thomas & Betts", "THOMAS-BETTS" }, { 0x78FE41, "Socus networks", "SOCUS-NETWORKS" }, { 0x083571, "CASwell INC.", "CASWELL" }, { 0xDCF755, "SITRONIK", "SITRONIK" }, { 0xACCA8E, "ODA Technologies", "ODA-TECHNOLOGIES" }, { 0x6405BE, "NEW LIGHT LED", "NEW-LIGHT-LED" }, { 0xE03E4A, "Cavanagh Group International", "CAVANAGH-GROUP" }, { 0x6CB350, "Anhui comhigher tech co.,ltd", "ANHUI-COMHIGHER-TECH" }, { 0xA42305, "Open Networking Laboratory", "OPEN-NETWORKING-LABORATORY" }, { 0x1C86AD, "MCT CO., LTD.", "MCT" }, { 0x28D93E, "Telecor Inc.", "TELECOR" }, { 0x882364, "Watchnet DVR Inc", "WATCHNET-DVR" }, { 0xA05B21, "ENVINET GmbH", "ENVINET" }, { 0x50B8A2, "ImTech Technologies LLC,", "IMTECH-TECHNOLOGIES-LLC" }, { 0xB04C05, "Fresenius Medical Care Deutschland GmbH", "FRESENIUS-MEDICAL-CARE-DEUTSCHLAND" }, { 0xA0EC80, "zte corporation", "ZTE" }, { 0x9046B7, "Vadaro Pte Ltd", "VADARO-PTE" }, { 0x1C08C1, "Lg Innotek", "LG-INNOTEK" }, { 0x201D03, "Elatec GmbH", "ELATEC" }, { 0xC06C6D, "MagneMotion, Inc.", "MAGNEMOTION" }, { 0x74CA25, "Calxeda, Inc.", "CALXEDA" }, { 0xCCBD35, "Steinel GmbH", "STEINEL" }, { 0x788DF7, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x6CECA1, "SHENZHEN CLOU ELECTRONICS CO. LTD.", "SHENZHEN-CLOU-ELECTRONICS" }, { 0xD862DB, "Eno Inc.", "ENO" }, { 0x68DB67, "Nantong Coship Electronics Co., Ltd", "NANTONG-COSHIP-ELECTRONICS" }, { 0xBC261D, "HONG KONG TECON TECHNOLOGY", "HONG-KONG-TECON" }, { 0x888964, "GSI Electronics Inc.", "GSI-ELECTRONICS" }, { 0x9CA577, "Osorno Enterprises Inc.", "OSORNO-ENTERPRISES" }, { 0xC0C3B6, "Automatic Systems", "AUTOMATIC" }, { 0xA8294C, "Precision Optical Transceivers, Inc.", "PRECISION-OPTICAL-TRANSCEIVERS" }, { 0xD0EB03, "Zhehua technology limited", "ZHEHUA" }, { 0xA0861D, "Chengdu Fuhuaxin Technology co.,Ltd", "CHENGDU-FUHUAXIN" }, { 0x9498A2, "Shanghai LISTEN TECH.LTD", "SHANGHAI-LISTEN-TECH" }, { 0x2CB693, "Radware", "RADWARE" }, { 0x88685C, "Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd", "SHENZHEN-CHUANGDAO-PERPETUAL-ETERNAL" }, { 0xB4FE8C, "Centro Sicurezza Italia SpA", "CENTRO-SICUREZZA-ITALIA-SPA" }, { 0xD82916, "Ascent Communication Technology", "ASCENT-COMMUNICATION" }, { 0x6472D8, "GooWi Technology Co.,Limited", "GOOWI" }, { 0x84ACA4, "Beijing Novel Super Digital TV Technology Co., Ltd", "BEIJING-NOVEL-SUPER-DIGITAL-TV" }, { 0x3C6FF7, "EnTek Systems, Inc.", "ENTEK" }, { 0xB838CA, "Kyokko Tsushin System CO.,LTD", "KYOKKO-TSUSHIN-SYSTEM" }, { 0x380FE4, "Dedicated Network Partners Oy", "DEDICATED-NETWORK-PARTNERS-OY" }, { 0x847A88, "HTC Corporation", "HTC" }, { 0x5461EA, "Zaplox AB", "ZAPLOX-AB" }, { 0x78324F, "Millennium Group, Inc.", "MILLENNIUM-GROUP" }, { 0xF05DC8, "Duracell Powermat", "DURACELL-POWERMAT" }, { 0x48F925, "Maestronic", "MAESTRONIC" }, { 0xC0885B, "SnD Tech Co., Ltd.", "SND-TECH" }, { 0x64C667, "Barnes&Noble", "BARNES-NOBLE" }, { 0xC47DCC, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x64535D, "Frauscher Sensortechnik", "FRAUSCHER-SENSORTECHNIK" }, { 0x105F06, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x841715, "GP Electronics (HK) Ltd.", "GP-ELECTRONICS-HK" }, { 0x087999, "AIM GmbH", "AIM" }, { 0x84C2E4, "Jiangsu Qinheng Co., Ltd.", "JIANGSU-QINHENG" }, { 0xC0B8B1, "BitBox Ltd", "BITBOX" }, { 0x0C722C, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB01408, "LIGHTSPEED INTERNATIONAL CO.", "LIGHTSPEED" }, { 0xF8FEA8, "Technico Japan Corporation", "TECHNICO-JAPAN" }, { 0xA8154D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD05099, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0x78A106, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA49EDB, "AutoCrib, Inc.", "AUTOCRIB" }, { 0x282CB2, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD43A65, "IGRS Engineering Lab Ltd.", "IGRS-ENGINEERING-LAB" }, { 0x10B9FE, "Lika srl", "LIKA-SRL" }, { 0xD42751, "Infopia Co., Ltd", "INFOPIA" }, { 0xA895B0, "Aker Subsea Ltd", "AKER-SUBSEA" }, { 0x5C20D0, "Asoni Communication Co., Ltd.", "ASONI-COMMUNICATION" }, { 0xE0C3F3, "zte corporation", "ZTE" }, { 0x104D77, "Innovative Computer Engineering", "INNOVATIVE-ENGINEERING" }, { 0x3C081E, "Beijing Yupont Electric Power Technology Co.,Ltd", "BEIJING-YUPONT-ELECTRIC-POWER" }, { 0x7CA15D, "GN ReSound A/S", "GN-RESOUND-A/S" }, { 0xB4DD15, "ControlThings Oy Ab", "CONTROLTHINGS-OY-AB" }, { 0x3C86A8, "Sangshin elecom .co,, LTD", "SANGSHIN-ELECOM" }, { 0xFCDD55, "Shenzhen WeWins wireless Co.,Ltd", "SHENZHEN-WEWINS-WIRELESS" }, { 0xCC0DEC, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x68B094, "INESA ELECTRON CO.,LTD", "INESA-ELECTRON" }, { 0x40E730, "DEY Storage Systems, Inc.", "DEY-STORAGE" }, { 0xA8D236, "Lightware Visual Engineering", "LIGHTWARE-VISUAL-ENGINEERING" }, { 0x6C8686, "Technonia", "TECHNONIA" }, { 0x84E714, "Liang Herng Enterprise,Co.Ltd.", "LIANG-HERNG" }, { 0x303D08, "GLINTT TES S.A.", "GLINTT-TES" }, { 0x9C541C, "Shenzhen My-power Technology Co.,Ltd", "SHENZHEN-MY-POWER" }, { 0xE496AE, "ALTOGRAPHICS Inc.", "ALTOGRAPHICS" }, { 0xF80BD0, "Datang Telecom communication terminal (Tianjin) Co., Ltd.", "DATANG-TELECOM-COMMUNICATION-TERMINAL-TIANJIN" }, { 0x48B9C2, "Teletics Inc.", "TELETICS" }, { 0xD046DC, "Southwest Research Institute", "SOUTHWEST-RESEARCH-INSTITUTE" }, { 0x046E49, "TaiYear Electronic Technology (Suzhou) Co., Ltd", "TAIYEAR-SUZHOU" }, { 0x08606E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xBC39A6, "CSUN System Technology Co.,LTD", "CSUN-SYSTEM" }, { 0xECB541, "SHINANO E and E Co.Ltd.", "SHINANO-E-AND-E" }, { 0xD40057, "MC Technologies GmbH", "MC-TECHNOLOGIES" }, { 0x48B8DE, "HOMEWINS TECHNOLOGY CO.,LTD.", "HOMEWINS" }, { 0x1065CF, "IQSIM", "IQSIM" }, { 0x849DC5, "Centera Photonics Inc.", "CENTERA-PHOTONICS" }, { 0x580943, "Private", "PRIVATE" }, { 0x547FA8, "TELCO systems, s.r.o.", "TELCO-S-R-O" }, { 0x5474E6, "Webtech Wireless", "WEBTECH-WIRELESS" }, { 0xAC5D10, "Pace Americas", "PACE-AMERICAS" }, { 0x88F490, "Jetmobile Pte Ltd", "JETMOBILE-PTE" }, { 0xE8A364, "Signal Path International / Peachtree Audio", "SIGNAL-PATH-/-PEACHTREE-AUDIO" }, { 0xD0D6CC, "Wintop", "WINTOP" }, { 0x101D51, "ON-Q LLC dba ON-Q Mesh Networks", "ON-Q-LLC-DBA-ON-Q-MESH-NETWORKS" }, { 0x34C99D, "EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD.", "EIDOLON-COMMUNICATION" }, { 0x8C4AEE, "GIGA TMS INC", "GIGA-TMS" }, { 0xF46DE2, "zte corporation", "ZTE" }, { 0x04F8C2, "Flaircomm Microelectronics, Inc.", "FLAIRCOMM-MICROELECTRONICS" }, { 0x0C93FB, "BNS Solutions", "BNS-SOLUTIONS" }, { 0x38B5BD, "E.G.O. Elektro-Ger", "E-G-O-ELEKTRO-GER" }, { 0xB85AF7, "Ouya, Inc", "OUYA" }, { 0xE0D9A2, "Hippih aps", "HIPPIH-APS" }, { 0xF0F669, "Motion Analysis Corporation", "MOTION-ANALYSIS" }, { 0xF8D7BF, "REV Ritter GmbH", "REV-RITTER" }, { 0x00B56D, "David Electronics Co., LTD.", "DAVID-ELECTRONICS" }, { 0xB461FF, "Lumigon A/S", "LUMIGON-A/S" }, { 0x9038DF, "Changzhou Tiannengbo System Co. Ltd.", "CHANGZHOU-TIANNENGBO-SYSTEM" }, { 0xCC593E, "TOUMAZ LTD", "TOUMAZ" }, { 0xAC8D14, "Smartrove Inc", "SMARTROVE" }, { 0x18673F, "Hanover Displays Limited", "HANOVER-DISPLAYS" }, { 0xA00ABF, "Wieson Technologies Co., Ltd.", "WIESON-TECHNOLOGIES" }, { 0x2091D9, "I'M SPA", "I-M-SPA" }, { 0x744D79, "Arrive Systems Inc.", "ARRIVE" }, { 0xC83D97, "Nokia Corporation", "NOKIA" }, { 0x38192F, "Nokia Corporation", "NOKIA" }, { 0x141BF0, "Intellimedia Systems Ltd", "INTELLIMEDIA" }, { 0xE45614, "Suttle Apparatus", "SUTTLE-APPARATUS" }, { 0x842BBC, "Modelleisenbahn GmbH", "MODELLEISENBAHN" }, { 0xE856D6, "NCTech Ltd", "NCTECH" }, { 0x4088E0, "Beijing Ereneben Information Technology Limited Shenzhen Branch", "BEIJING-ERENEBEN-INFORMATION-SHENZHEN-BRANCH" }, { 0x1CF4CA, "Private", "PRIVATE" }, { 0xF490EA, "Deciso B.V.", "DECISO" }, { 0x942197, "Stalmart Technology Limited", "STALMART" }, { 0xAC9403, "Envision Peripherals Inc", "ENVISION-PERIPHERALS" }, { 0xA865B2, "DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED", "DONGGUAN-YISHANG" }, { 0x60B982, "RO.VE.R. Laboratories S.p.A.", "RO-VE-R-LABORATORIES-S-P-A" }, { 0xB46238, "Exablox", "EXABLOX" }, { 0x40704A, "Power Idea Technology Limited", "POWER-IDEA" }, { 0xA40BED, "Carry Technology Co.,Ltd", "CARRY" }, { 0x0CD996, "Cisco Systems, Inc", "CISCO" }, { 0xD82DE1, "Tricascade Inc.", "TRICASCADE" }, { 0xC438D3, "TAGATEC CO.,LTD", "TAGATEC" }, { 0x547398, "Toyo Electronics Corporation", "TOYO-ELECTRONICS" }, { 0xE0AAB0, "GENERAL VISION ELECTRONICS CO. LTD.", "GENERAL-VISION-ELECTRONICS" }, { 0x68B43A, "WaterFurnace International, Inc.", "WATERFURNACE" }, { 0x543968, "Edgewater Networks Inc", "EDGEWATER-NETWORKS" }, { 0x985E1B, "ConversDigital Co., Ltd.", "CONVERSDIGITAL" }, { 0xB8B7D7, "2GIG Technologies", "2GIG-TECHNOLOGIES" }, { 0x1048B1, "Beijing Duokan Technology Limited", "BEIJING-DUOKAN" }, { 0x005D03, "Xilinx, Inc", "XILINX" }, { 0x24EE3A, "Chengdu Yingji Electronic Hi-tech Co Ltd", "CHENGDU-YINGJI-HI-TECH" }, { 0xF82285, "Cypress Technology CO., LTD.", "CYPRESS" }, { 0x8482F4, "Beijing Huasun Unicreate Technology Co., Ltd", "BEIJING-HUASUN-UNICREATE" }, { 0x0CC47E, "EUCAST Co., Ltd.", "EUCAST" }, { 0xCCE798, "My Social Stuff", "MY-SOCIAL-STUFF" }, { 0x50724D, "BEG Brueck Electronic GmbH", "BEG-BRUECK" }, { 0xB898B0, "Atlona Inc.", "ATLONA" }, { 0x2C625A, "Finest Security Systems Co., Ltd", "FINEST-SECURITY" }, { 0x2074CF, "Shenzhen Voxtech Co.,Ltd", "SHENZHEN-VOXTECH" }, { 0xACBD0B, "IMAC CO.,LTD", "IMAC" }, { 0xD8D27C, "JEMA ENERGY, SA", "JEMA-ENERGY" }, { 0x10F3DB, "Gridco Systems, Inc.", "GRIDCO" }, { 0xB01203, "Dynamics Hong Kong Limited", "DYNAMICS-HONG-KONG" }, { 0x7093F8, "Space Monkey, Inc.", "SPACE-MONKEY" }, { 0x305D38, "Beissbarth ", "BEISSBARTH" }, { 0xFCD6BD, "Robert Bosch GmbH", "ROBERT-BOSCH" }, { 0x044A50, "Ramaxel Technology (Shenzhen) limited company", "RAMAXEL-SHENZHEN-COMPANY" }, { 0xA4466B, "EOC Technology", "EOC" }, { 0x3CF392, "Virtualtek. Co. Ltd", "VIRTUALTEK" }, { 0x889676, "TTC MARCONI s.r.o.", "TTC-MARCONI-S-R-O" }, { 0x149FE8, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x70B599, "Embedded Technologies s.r.o.", "EMBEDDED-TECHNOLOGIES-S-R-O" }, { 0xEC4C4D, "ZAO NPK RoTeK", "ZAO-NPK-ROTEK" }, { 0xE8D483, "ULTIMATE Europe Transportation Equipment GmbH", "ULTIMATE-EUROPE-TRANSPORTATION-EQUIPMENT" }, { 0xACD9D6, "tci GmbH", "TCI" }, { 0x7493A4, "Zebra Technologies Corp.", "ZEBRA-TECHNOLOGIES" }, { 0x9C0DAC, "Tymphany HK Limited", "TYMPHANY-HK" }, { 0x8CD3A2, "VisSim AS", "VISSIM-AS" }, { 0x647657, "Innovative Security Designs", "INNOVATIVE-SECURITY-DESIGNS" }, { 0x60455E, "Liptel s.r.o.", "LIPTEL-S-R-O" }, { 0x944A09, "BitWise Controls", "BITWISE-CONTROLS" }, { 0xE8102E, "Really Simple Software, Inc", "REALLY-SIMPLE-SOFTWARE" }, { 0xD48CB5, "Cisco Systems, Inc", "CISCO" }, { 0xD41E35, "TOHO Electronics INC.", "TOHO-ELECTRONICS" }, { 0x700BC0, "Dewav Technology Company", "DEWAV-COMPANY" }, { 0x2CD444, "FUJITSU LIMITED", "FUJITSU" }, { 0xEC1A59, "Belkin International Inc.", "BELKIN" }, { 0x60CBFB, "AirScape Inc.", "AIRSCAPE" }, { 0x4C5427, "Linepro Sp. z o.o.", "LINEPRO-SP-Z-O-O" }, { 0x3CEAFB, "NSE AG", "NSE" }, { 0x3476C5, "I-O DATA DEVICE, INC.", "I-O-DATA-DEVICE" }, { 0x407074, "Life Technology (China) Co., Ltd", "LIFE-CHINA" }, { 0x58BFEA, "Cisco Systems, Inc", "CISCO" }, { 0x7C386C, "Real Time Logic", "REAL-TIME-LOGIC" }, { 0xD8AF3B, "Hangzhou Bigbright Integrated communications system Co.,Ltd", "HANGZHOU-BIGBRIGHT-INTEGRATED-COMMUNICATION-SYSTEM" }, { 0x78D34F, "Pace-O-Matic, Inc.", "PACE-O-MATIC" }, { 0x784405, "FUJITU(HONG KONG) ELECTRONIC Co.,LTD.", "FUJITU-HONG-KONG" }, { 0xC03F2A, "Biscotti, Inc.", "BISCOTTI" }, { 0x44B382, "Kuang-chi Institute of Advanced Technology", "KUANG-CHI-INSTITUTE-OF-ADVANCED" }, { 0xD80DE3, "FXI TECHNOLOGIES AS", "FXI-TECHNOLOGIES-AS" }, { 0x1CE165, "Marshal Corporation", "MARSHAL" }, { 0x0CC0C0, "MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO", "MAGNETI-MARELLI-SISTEMAS-ELECTRONICOS-MEXICO" }, { 0xAC40EA, "C&T Solution Inc. ", "C-T-SOLUTION" }, { 0xBC8B55, "NPP ELIKS America Inc. DBA T&M Atlantic", "NPP-ELIKS-AMERICA-DBA-T-M-ATLANTIC" }, { 0x202598, "Teleview", "TELEVIEW" }, { 0x844915, "vArmour Networks, Inc.", "VARMOUR-NETWORKS" }, { 0xA04CC1, "Helixtech Corp.", "HELIXTECH" }, { 0x1CB243, "TDC A/S", "TDC-A/S" }, { 0x1C51B5, "Techaya LTD", "TECHAYA" }, { 0x80DB31, "Power Quotient International Co., Ltd.", "POWER-QUOTIENT" }, { 0xAC0142, "Uriel Technologies SIA", "URIEL-TECHNOLOGIES-SIA" }, { 0xA007B6, "Advanced Technical Support, Inc.", "ADVANCED-TECHNICAL-SUPPORT" }, { 0x542A9C, "LSY Defense, LLC.", "LSY-DEFENSE-LLC" }, { 0xF89955, "Fortress Technology Inc", "FORTRESS" }, { 0xB827EB, "Raspberry Pi Foundation", "RASPBERRY-PI-FOUNDATION" }, { 0xE88DF5, "ZNYX Networks, Inc.", "ZNYX-NETWORKS" }, { 0x48EA63, "Zhejiang Uniview Technologies Co., Ltd.", "ZHEJIANG-UNIVIEW-TECHNOLOGIES" }, { 0x0CE5D3, "DH electronics GmbH", "DH-ELECTRONICS" }, { 0xC47130, "Fon Technology S.L.", "FON-S-L" }, { 0x48D7FF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0xF47F35, "Cisco Systems, Inc", "CISCO" }, { 0xA0F419, "Nokia Corporation", "NOKIA" }, { 0xBCC168, "DinBox Sverige AB", "DINBOX-SVERIGE-AB" }, { 0x6CAE8B, "IBM Corporation", "IBM" }, { 0xA4F7D0, "LAN Accessories Co., Ltd.", "LAN-ACCESSORIES" }, { 0xD4EC0C, "Harley-Davidson Motor Company", "HARLEY-DAVIDSON-MOTOR-COMPANY" }, { 0x6CA96F, "TransPacket AS", "TRANSPACKET-AS" }, { 0x48ED80, "daesung eltec", "DAESUNG-ELTEC" }, { 0xA086EC, "SAEHAN HITEC Co., Ltd", "SAEHAN-HITEC" }, { 0xBC4B79, "SensingTek", "SENSINGTEK" }, { 0x2818FD, "Aditya Infotech Ltd.", "ADITYA-INFOTECH" }, { 0xE42C56, "Lilee Systems, Ltd.", "LILEE" }, { 0x50008C, "Hong Kong Telecommunications (HKT) Limited", "HONG-KONG-TELECOMMUNICATIONS-HKT" }, { 0xDCA8CF, "New Spin Golf, LLC.", "NEW-SPIN-GOLF-LLC" }, { 0x34BA9A, "Asiatelco Technologies Co.", "ASIATELCO-TECHNOLOGIES" }, { 0x642DB7, "SEUNGIL ELECTRONICS", "SEUNGIL-ELECTRONICS" }, { 0x008DDA, "Link One Co., Ltd.", "LINK-ONE" }, { 0x08B4CF, "Abicom International", "ABICOM" }, { 0x445F7A, "Shihlin Electric & Engineering Corp.", "SHIHLIN-ELECTRIC-ENGINEERING" }, { 0x28BA18, "NextNav, LLC", "NEXTNAV-LLC" }, { 0x2C36F8, "Cisco Systems, Inc", "CISCO" }, { 0xAC3D05, "Instorescreen Aisa", "INSTORESCREEN-AISA" }, { 0xF48E09, "Nokia Corporation", "NOKIA" }, { 0xD443A8, "Changzhou Haojie Electric Co., Ltd.", "CHANGZHOU-HAOJIE-ELECTRIC" }, { 0xBCB852, "Cybera, Inc.", "CYBERA" }, { 0x70D6B6, "Metrum Technologies", "METRUM-TECHNOLOGIES" }, { 0x28D576, "Premier Wireless, Inc.", "PREMIER-WIRELESS" }, { 0x6CE907, "Nokia Corporation", "NOKIA" }, { 0x94DF58, "IJ Electron CO.,Ltd.", "IJ-ELECTRON" }, { 0x8C0CA3, "Amper", "AMPER" }, { 0x28940F, "Cisco Systems, Inc", "CISCO" }, { 0x5CEB4E, "R. STAHL HMI Systems GmbH", "R-STAHL-HMI" }, { 0xB8DAF7, "Advanced Photonics, Inc.", "ADVANCED-PHOTONICS" }, { 0x2C36A0, "Capisco Limited", "CAPISCO" }, { 0x800A06, "COMTEC co.,ltd", "COMTEC" }, { 0x20FABB, "Cambridge Executive Limited", "CAMBRIDGE-EXECUTIVE" }, { 0x1C0B52, "EPICOM S.A", "EPICOM" }, { 0x747E2D, "Beijing Thomson CITIC Digital Technology Co. LTD.", "BEIJING-THOMSON-CITIC-DIGITAL" }, { 0xE80C75, "Syncbak, Inc.", "SYNCBAK" }, { 0x18D66A, "Inmarsat", "INMARSAT" }, { 0xC85645, "Intermas France", "INTERMAS-FRANCE" }, { 0x8C604F, "Cisco Systems, Inc", "CISCO" }, { 0x74FF7D, "Wren Sound Systems, LLC", "WREN-SOUND-LLC" }, { 0x30B216, "Hytec Geraetebau GmbH", "HYTEC-GERAETEBAU" }, { 0x34FC6F, "ALCEA", "ALCEA" }, { 0xC0B357, "Yoshiki Electronics Industry Ltd.", "YOSHIKI-ELECTRONICS-INDUSTRY" }, { 0xD8BF4C, "Victory Concept Electronics Limited", "VICTORY-CONCEPT-ELECTRONICS" }, { 0xC0DF77, "Conrad Electronic SE", "CONRAD-SE" }, { 0xC86000, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x645299, "The Chamberlain Group, Inc", "THE-CHAMBERLAIN-GROUP" }, { 0xBC125E, "Beijing WisVideo INC.", "BEIJING-WISVIDEO" }, { 0xC80718, "TDSi", "TDSI" }, { 0xB4944E, "WeTelecom Co., Ltd.", "WETELECOM" }, { 0x345B11, "EVI HEAT AB", "EVI-HEAT-AB" }, { 0x988BAD, "Corintech Ltd.", "CORINTECH" }, { 0x4050E0, "Milton Security Group LLC", "MILTON-SECURITY-GROUP-LLC" }, { 0xC87CBC, "Valink Co., Ltd. ", "VALINK" }, { 0x409FC7, "BAEKCHUN I&C Co., Ltd.", "BAEKCHUN-I-C" }, { 0xC87D77, "Shenzhen Kingtech Communication Equipment Co.,Ltd", "SHENZHEN-KINGTECH-COMMUNICATION-EQUIPMENT" }, { 0xA078BA, "Pantech Co., Ltd.", "PANTECH" }, { 0xD4507A, "CEIVA Logic, Inc", "CEIVA-LOGIC" }, { 0x9CC7D1, "SHARP Corporation", "SHARP" }, { 0x00B9F6, "Shenzhen Super Rich Electronics Co.,Ltd", "SHENZHEN-SUPER-RICH-ELECTRONICS" }, { 0x9C5C8D, "FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA", "FIREMAX-INDÚSTRIA-E-COMÉRCIO-DE-PRODUTOS-ELETRÔNICOS-LTDA" }, { 0xE01E07, "Anite Telecoms US. Inc", "ANITE-TELECOMS-US" }, { 0xB06CBF, "3ality Digital Systems GmbH", "3ALITY-DIGITAL" }, { 0x20AA4B, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x080D84, "GECO, Inc.", "GECO" }, { 0x88E712, "Whirlpool Corporation", "WHIRLPOOL" }, { 0x644BF0, "CalDigit, Inc", "CALDIGIT" }, { 0x2838CF, "Gen2wave", "GEN2WAVE" }, { 0x50FC30, "Treehouse Labs", "TREEHOUSE-LABS" }, { 0x70704C, "Purple Communications, Inc", "PURPLE-COMMUNICATION" }, { 0xF47ACC, "SolidFire, Inc.", "SOLIDFIRE" }, { 0x24BC82, "Dali Wireless, Inc.", "DALI-WIRELESS" }, { 0x64C5AA, "South African Broadcasting Corporation", "SOUTH-AFRICAN-BROADCASTING" }, { 0x64ED62, "WOORI SYSTEMS Co., Ltd", "WOORI" }, { 0xC4237A, "WhizNets Inc.", "WHIZNETS" }, { 0x8430E5, "SkyHawke Technologies, LLC", "SKYHAWKE-TECHNOLOGIES-LLC" }, { 0x2C002C, "UNOWHY", "UNOWHY" }, { 0x0481AE, "Clack Corporation", "CLACK" }, { 0xC09132, "Patriot Memory", "PATRIOT-MEMORY" }, { 0xA898C6, "Shinbo Co., Ltd.", "SHINBO" }, { 0x006BA0, "SHENZHEN UNIVERSAL INTELLISYS PTE LTD", "SHENZHEN-UNIVERSAL-INTELLISYS-PTE" }, { 0x502690, "FUJITSU LIMITED", "FUJITSU" }, { 0xB4211D, "Beijing GuangXin Technology Co., Ltd", "BEIJING-GUANGXIN" }, { 0xE039D7, "Plexxi, Inc.", "PLEXXI" }, { 0xFC946C, "UBIVELOX", "UBIVELOX" }, { 0x38DE60, "Mohlenhoff GmbH", "MOHLENHOFF" }, { 0x2839E7, "Preceno Technology Pte.Ltd.", "PRECENO-PTE" }, { 0x28D997, "Yuduan Mobile Co., Ltd.", "YUDUAN-MOBILE" }, { 0x886B76, "CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD", "CHINA-HOPEFUL-GROUP-HOPEFUL-ELECTRIC" }, { 0xA0CF5B, "Cisco Systems, Inc", "CISCO" }, { 0x18C451, "Tucson Embedded Systems", "TUCSON-EMBEDDED" }, { 0x582EFE, "Lighting Science Group", "LIGHTING-SCIENCE-GROUP" }, { 0xF8D3A9, "AXAN Networks", "AXAN-NETWORKS" }, { 0x5CD4AB, "Zektor", "ZEKTOR" }, { 0xF8462D, "SYNTEC Incorporation", "SYNTEC-INCORPORATION" }, { 0x58677F, "Clare Controls Inc.", "CLARE-CONTROLS" }, { 0xCCA374, "Guangdong Guanglian Electronic Technology Co.Ltd", "GUANGDONG-GUANGLIAN" }, { 0x50F61A, "Kunshan JADE Technologies co., Ltd.", "KUNSHAN-JADE-TECHNOLOGIES" }, { 0x20BBC6, "Jabil Circuit Hungary Ltd.", "JABIL-CIRCUIT-HUNGARY" }, { 0x2C9717, "I.C.Y. B.V.", "I-C-Y" }, { 0x64E84F, "Serialway Communication Technology Co. Ltd", "SERIALWAY-COMMUNICATION" }, { 0x941D1C, "TLab West Systems AB", "TLAB-WEST-AB" }, { 0x40667A, "mediola - connected living AG", "MEDIOLA---CONNECTED-LIVING" }, { 0x64808B, "VG Controls, Inc.", "VG-CONTROLS" }, { 0x7C6B52, "Tigaro Wireless", "TIGARO-WIRELESS" }, { 0x046D42, "Bryston Ltd.", "BRYSTON" }, { 0xD0CF5E, "Energy Micro AS", "ENERGY-MICRO-AS" }, { 0x644D70, "dSPACE GmbH", "DSPACE" }, { 0x807693, "Newag SA", "NEWAG" }, { 0xFC1794, "InterCreative Co., Ltd", "INTERCREATIVE" }, { 0x181420, "TEB SAS", "TEB-SAS" }, { 0xD03110, "Ingenic Semiconductor Co.,Ltd", "INGENIC-SEMICONDUCTOR" }, { 0xAC81F3, "Nokia Corporation", "NOKIA" }, { 0x94C6EB, "NOVA electronics, Inc.", "NOVA-ELECTRONICS" }, { 0x10F9EE, "Nokia Corporation", "NOKIA" }, { 0x80971B, "Altenergy Power System,Inc.", "ALTENERGY-POWER-SYSTEM" }, { 0x1071F9, "Cloud Telecomputers, LLC", "CLOUD-TELECOMPUTERS-LLC" }, { 0xC47B2F, "Beijing JoinHope Image Technology Ltd.", "BEIJING-JOINHOPE-IMAGE" }, { 0x18F650, "Multimedia Pacific Limited", "MULTIMEDIA-PACIFIC" }, { 0x704AAE, "Xstream Flow (Pty) Ltd", "XSTREAM-FLOW-PTY" }, { 0x9C934E, "Xerox Corporation", "XEROX" }, { 0x3C26D5, "Sotera Wireless", "SOTERA-WIRELESS" }, { 0xFC2E2D, "Lorom Industrial Co.LTD.", "LOROM-INDUSTRIAL" }, { 0xE84E06, "EDUP INTERNATIONAL (HK) CO., LTD", "EDUP-HK" }, { 0xE8C320, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0xD8973B, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x008D4E, "CJSC NII STT", "CJSC-NII-STT" }, { 0x10C586, "BIO SOUND LAB CO., LTD.", "BIO-SOUND-LAB" }, { 0xE8BA70, "Cisco Systems, Inc", "CISCO" }, { 0x6473E2, "Arbiter Systems, Inc.", "ARBITER" }, { 0x00A1DE, "ShenZhen ShiHua Technology CO.,LTD", "SHENZHEN-SHIHUA" }, { 0x04E1C8, "IMS Soluções em Energia Ltda.", "IMS-SOLUçõES-EM-ENERGIA-LTDA" }, { 0xE4DD79, "En-Vision America, Inc.", "EN-VISION-AMERICA" }, { 0x60190C, "RRAMAC", "RRAMAC" }, { 0x34A709, "Trevil srl", "TREVIL-SRL" }, { 0xF80332, "Khomp", "KHOMP" }, { 0xC40F09, "Hermes electronic GmbH", "HERMES" }, { 0x908D1D, "GH Technologies", "GH-TECHNOLOGIES" }, { 0xCCB55A, "Fraunhofer ITWM", "FRAUNHOFER-ITWM" }, { 0x587521, "CJSC RTSoft", "CJSC-RTSOFT" }, { 0x64D989, "Cisco Systems, Inc", "CISCO" }, { 0x44D3CA, "Cisco Systems, Inc", "CISCO" }, { 0x24DAB6, "Sistemas de Gestión Energética S.A. de C.V", "SISTEMAS-DE-GESTIóN-ENERGéTICA-DE-C-V" }, { 0xB8F5E7, "WayTools, LLC", "WAYTOOLS-LLC" }, { 0x148A70, "ADS GmbH", "ADS" }, { 0xFC0012, "Toshiba Samsung Storage Technolgoy Korea Corporation ", "TOSHIBA-SAMSUNG-STORAGE-TECHNOLGOY-KOREA" }, { 0xF44450, "BND Co., Ltd.", "BND" }, { 0x644346, "GuangDong Quick Network Computer CO.,LTD", "GUANGDONG-QUICK-NETWORK" }, { 0xFCE892, "Hangzhou Lancable Technology Co.,Ltd", "HANGZHOU-LANCABLE" }, { 0xB8B42E, "Gionee Communication Equipment Co,Ltd.ShenZhen", "GIONEE-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0xA84041, "Dragino Technology Co., Limited", "DRAGINO" }, { 0xDCF05D, "Letta Teknoloji", "LETTA-TEKNOLOJI" }, { 0xD05A0F, "I-BT DIGITAL CO.,LTD", "I-BT-DIGITAL" }, { 0x7CDD20, "IOXOS Technologies S.A.", "IOXOS-TECHNOLOGIES" }, { 0xA0E9DB, "Ningbo FreeWings Technologies Co.,Ltd", "NINGBO-FREEWINGS-TECHNOLOGIES" }, { 0x9C7BD2, "NEOLAB Convergence", "NEOLAB-CONVERGENCE" }, { 0x900D66, "Digimore Electronics Co., Ltd", "DIGIMORE-ELECTRONICS" }, { 0x48C862, "Simo Wireless,Inc.", "SIMO-WIRELESS" }, { 0x0CF3EE, "EM Microelectronic", "EM-MICROELECTRONIC" }, { 0xF0C27C, "Mianyang Netop Telecom Equipment Co.,Ltd.", "MIANYANG-NETOP-TELECOM-EQUIPMENT" }, { 0xBC35E5, "Hydro Systems Company", "HYDRO-COMPANY" }, { 0x283410, "Enigma Diagnostics Limited", "ENIGMA-DIAGNOSTICS" }, { 0x28CCFF, "Corporacion Empresarial Altra SL", "CORPORACION-EMPRESARIAL-ALTRA-SL" }, { 0x14B73D, "ARCHEAN Technologies", "ARCHEAN-TECHNOLOGIES" }, { 0xA433D1, "Fibrlink Communications Co.,Ltd.", "FIBRLINK-COMMUNICATION" }, { 0x84DE3D, "Crystal Vision Ltd", "CRYSTAL-VISION" }, { 0xB4AA4D, "Ensequence, Inc.", "ENSEQUENCE" }, { 0x040A83, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xB42A39, "ORBIT MERRET, spol. s r. o.", "ORBIT-MERRET-SPOL-S-R-O" }, { 0x18AEBB, "Siemens Convergence Creators GmbH&Co.KG", "SIEMENS-CONVERGENCE-CREATORS" }, { 0x3891FB, "Xenox Holding BV", "XENOX-HOLDING" }, { 0x50FAAB, "L-tek d.o.o.", "L-TEK-D-O-O" }, { 0xA8E018, "Nokia Corporation", "NOKIA" }, { 0x44AAE8, "Nanotec Electronic GmbH & Co. KG", "NANOTEC" }, { 0xD8DF0D, "beroNet GmbH", "BERONET" }, { 0xD8C068, "Netgenetech.co.,ltd.", "NETGENETECH" }, { 0x50E549, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xA8FCB7, "Consolidated Resource Imaging", "CONSOLIDATED-RESOURCE-IMAGING" }, { 0xF87B8C, "Amped Wireless", "AMPED-WIRELESS" }, { 0x44D2CA, "Anvia TV Oy", "ANVIA-TV-OY" }, { 0x4C1A3A, "PRIMA Research And Production Enterprise Ltd.", "PRIMA-RESEARCH-AND-PRODUCTION" }, { 0xAC0613, "Senselogix Ltd", "SENSELOGIX" }, { 0xCCF67A, "Ayecka Communication Systems LTD", "AYECKA-COMMUNICATION" }, { 0x00BB8E, "HME Co., Ltd.", "HME" }, { 0xC0A26D, "Abbott Point of Care", "ABBOTT-POINT-OF-CARE" }, { 0x205B2A, "Private", "PRIVATE" }, { 0xF8769B, "Neopis Co., Ltd.", "NEOPIS" }, { 0x08E672, "JEBSEE ELECTRONICS CO.,LTD.", "JEBSEE-ELECTRONICS" }, { 0x58E476, "CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD", "CENTRON-COMMUNICATION-TECHNOLOGIES-FUJIAN" }, { 0xB435F7, "Zhejiang Pearmain Electronics Co.ltd.", "ZHEJIANG-PEARMAIN-ELECTRONICS" }, { 0x0C6E4F, "PrimeVOLT Co., Ltd.", "PRIMEVOLT" }, { 0x685B36, "POWERTECH INDUSTRIAL CO., LTD.", "POWERTECH-INDUSTRIAL" }, { 0x983000, "Beijing KEMACOM Technologies Co., Ltd.", "BEIJING-KEMACOM-TECHNOLOGIES" }, { 0xF81D93, "Longdhua(Beijing) Controls Technology Co.,Ltd", "LONGDHUA-BEIJING-CONTROLS" }, { 0xD0EB9E, "Seowoo Inc.", "SEOWOO" }, { 0x8C5FDF, "Beijing Railway Signal Factory", "BEIJING-RAILWAY-SIGNAL-FACTORY" }, { 0x586D8F, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x14C21D, "Sabtech Industries", "SABTECH-INDUSTRIES" }, { 0x74B00C, "Network Video Technologies, Inc", "NETWORK-VIDEO-TECHNOLOGIES" }, { 0xC88439, "Sunrise Technologies", "SUNRISE-TECHNOLOGIES" }, { 0x44E4D9, "Cisco Systems, Inc", "CISCO" }, { 0x0054AF, "Continental Automotive Systems Inc.", "CONTINENTAL-AUTOMOTIVE" }, { 0xEC7D9D, "MEI", "MEI" }, { 0x9C95F8, "SmartDoor Systems, LLC", "SMARTDOOR-LLC" }, { 0xD075BE, "Reno A&E", "RENO-A-E" }, { 0x7C6C39, "PIXSYS SRL", "PIXSYS-SRL" }, { 0x9C5D95, "VTC Electronics Corp.", "VTC-ELECTRONICS" }, { 0xDC05ED, "Nabtesco Corporation", "NABTESCO" }, { 0xFC8329, "Trei technics", "TREI-TECHNICS" }, { 0x94E848, "FYLDE MICRO LTD", "FYLDE-MICRO" }, { 0xAC5E8C, "Utillink", "UTILLINK" }, { 0xBC99BC, "FonSee Technology Inc.", "FONSEE" }, { 0x986022, "EMW Co., Ltd.", "EMW" }, { 0x80B32A, "Alstom Grid", "ALSTOM-GRID" }, { 0x803457, "OT Systems Limited", "OT" }, { 0xB83D4E, "Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch", "SHENZHEN-CULTRAVIEW-DIGITAL-SHANGHAI-BRANCH" }, { 0xCCF3A5, "Chi Mei Communication Systems, Inc", "CHI-MEI-COMMUNICATION" }, { 0xC4242E, "Galvanic Applied Sciences Inc", "GALVANIC-APPLIED-SCIENCES" }, { 0x6400F1, "Cisco Systems, Inc", "CISCO" }, { 0x04C5A4, "Cisco Systems, Inc", "CISCO" }, { 0x3CA72B, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x584C19, "Chongqing Guohong Technology Development Company Limited", "CHONGQING-GUOHONG-DEVELOPMENT-COMPANY" }, { 0xD0A311, "Neuberger Gebäudeautomation GmbH", "NEUBERGER-GEBäUDEAUTOMATION" }, { 0x10A13B, "FUJIKURA RUBBER LTD.", "FUJIKURA-RUBBER" }, { 0xF4E142, "Delta Elektronika BV", "DELTA-ELEKTRONIKA" }, { 0xF00248, "SmarteBuilding", "SMARTEBUILDING" }, { 0x2CDD0C, "Discovergy GmbH", "DISCOVERGY" }, { 0x40B2C8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x486B91, "Fleetwood Group Inc.", "FLEETWOOD-GROUP" }, { 0xF43814, "Shanghai Howell Electronic Co.,Ltd", "SHANGHAI-HOWELL" }, { 0x20AA25, "IP-NET LLC", "IP-NET-LLC" }, { 0xECBBAE, "Digivoice Tecnologia em Eletronica Ltda", "DIGIVOICE-TECNOLOGIA-EM-ELETRONICA-LTDA" }, { 0xDC2008, "ASD Electronics Ltd ", "ASD-ELECTRONICS" }, { 0x088DC8, "Ryowa Electronics Co.,Ltd", "RYOWA-ELECTRONICS" }, { 0xD491AF, "Electroacustica General Iberica, S.A.", "ELECTROACUSTICA-GENERAL-IBERICA" }, { 0x1CDF0F, "Cisco Systems, Inc", "CISCO" }, { 0x34DF2A, "Fujikon Industrial Co.,Limited", "FUJIKON-INDUSTRIAL" }, { 0xC88447, "Beautiful Enterprise Co., Ltd", "BEAUTIFUL" }, { 0xC88B47, "Nolangroup S.P.A con Socio Unico", "NOLANGROUP-S-P-A-CON-SOCIO-UNICO" }, { 0x24BA30, "Technical Consumer Products, Inc.", "TECHNICAL-CONSUMER-PRODUCTS" }, { 0x74D675, "WYMA Tecnologia", "WYMA-TECNOLOGIA" }, { 0xD01CBB, "Beijing Ctimes Digital Technology Co., Ltd.", "BEIJING-CTIMES-DIGITAL" }, { 0x9481A4, "Azuray Technologies", "AZURAY-TECHNOLOGIES" }, { 0xBCE09D, "Eoslink", "EOSLINK" }, { 0x346F92, "White Rodgers Division", "WHITE-RODGERS-DIVISION" }, { 0x8CDB25, "ESG Solutions", "ESG-SOLUTIONS" }, { 0x641A22, "Heliospectra AB", "HELIOSPECTRA-AB" }, { 0x30142D, "Piciorgros GmbH", "PICIORGROS" }, { 0xE441E6, "Ottec Technology GmbH", "OTTEC" }, { 0x10E2D5, "Qi Hardware Inc.", "QI-HARDWARE" }, { 0x7CDA84, "Dongnian Networks Inc.", "DONGNIAN-NETWORKS" }, { 0xA036FA, "Ettus Research LLC", "ETTUS-RESEARCH-LLC" }, { 0xEC836C, "RM Tech Co., Ltd.", "RM-TECH" }, { 0x6083B2, "GkWare e.K.", "GKWARE-E-K" }, { 0x80D019, "Embed, Inc", "EMBED" }, { 0xD41296, "Anobit Technologies Ltd.", "ANOBIT-TECHNOLOGIES" }, { 0xB8FF6F, "Shanghai Typrotech Technology Co.Ltd", "SHANGHAI-TYPROTECH" }, { 0xDC9C52, "Sapphire Technology Limited.", "SAPPHIRE" }, { 0x68122D, "Special Instrument Development Co., Ltd.", "SPECIAL-INSTRUMENT-DEVELOPMENT" }, { 0x649B24, "V Technology Co., Ltd.", "V" }, { 0x0475F5, "CSST", "CSST" }, { 0xBC20BA, "Inspur (Shandong) Electronic Information Co., Ltd", "INSPUR-SHANDONG-INFORMATION" }, { 0x249442, "OPEN ROAD SOLUTIONS , INC.", "OPEN-ROAD-SOLUTIONS" }, { 0xE0F379, "Vaddio", "VADDIO" }, { 0xB09AE2, "STEMMER IMAGING GmbH", "STEMMER-IMAGING" }, { 0xCCD811, "Aiconn Technology Corporation", "AICONN" }, { 0x78D004, "Neousys Technology Inc.", "NEOUSYS" }, { 0x78A051, "iiNet Labs Pty Ltd ", "IINET-LABS-PTY" }, { 0x58A76F, "iD corporation", "ID" }, { 0x44599F, "Criticare Systems, Inc", "CRITICARE" }, { 0x3C2F3A, "SFORZATO Corp.", "SFORZATO" }, { 0xEC9233, "Eddyfi NDT Inc", "EDDYFI-NDT" }, { 0xECE90B, "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH", "SISTEMA-SOLUCOES-ELETRONICAS-LTDA---EASYTECH" }, { 0xA08C9B, "Xtreme Technologies Corp", "XTREME-TECHNOLOGIES" }, { 0x607688, "Velodyne", "VELODYNE" }, { 0x980EE4, "Private", "PRIVATE" }, { 0xE828D5, "Cots Technology", "COTS" }, { 0x08D5C0, "Seers Technology Co., Ltd", "SEERS" }, { 0x8CB64F, "Cisco Systems, Inc", "CISCO" }, { 0x6C33A9, "Magicjack LP", "MAGICJACK-LP" }, { 0x08B7EC, "Wireless Seismic", "WIRELESS-SEISMIC" }, { 0xBC71C1, "XTrillion, Inc.", "XTRILLION" }, { 0x0C469D, "MS Sedco", "MS-SEDCO" }, { 0xE0E8E8, "Olive Telecommunication Pvt. Ltd", "OLIVE-TELECOMMUNICATION-PVT" }, { 0x0C3C65, "Dome Imaging Inc", "DOME-IMAGING" }, { 0x942053, "Nokia Corporation", "NOKIA" }, { 0xD49C8E, "University of FUKUI", "UNIVERSITY-OF-FUKUI" }, { 0x2CB0DF, "Soliton Technologies Pvt Ltd", "SOLITON-TECHNOLOGIES-PVT" }, { 0x5CF3FC, "IBM Corp", "IBM" }, { 0xD43D67, "Carma Industries Inc.", "CARMA-INDUSTRIES" }, { 0x00BD27, "Exar Corp.", "EXAR" }, { 0xC8A729, "SYStronics Co., Ltd.", "SYSTRONICS" }, { 0x6C9CE9, "Nimble Storage", "NIMBLE-STORAGE" }, { 0x700258, "01DB-METRAVIB", "01DB-METRAVIB" }, { 0x20FDF1, "3COM EUROPE LTD", "3COM" }, { 0x389592, "Beijing Tendyron Corporation", "BEIJING-TENDYRON" }, { 0x705EAA, "Action Target, Inc.", "ACTION-TARGET" }, { 0x0C8D98, "TOP EIGHT IND CORP", "TOP-EIGHT-IND" }, { 0x30493B, "Nanjing Z-Com Wireless Co.,Ltd", "NANJING-Z-COM-WIRELESS" }, { 0x68DB96, "OPWILL Technologies CO .,LTD", "OPWILL-TECHNOLOGIES" }, { 0x00F860, "PT. Panggung Electric Citrabuana", "PT-PANGGUNG-ELECTRIC-CITRABUANA" }, { 0xFCEDB9, "Arrayent", "ARRAYENT" }, { 0x44ED57, "Longicorn, inc.", "LONGICORN" }, { 0xC8A1B6, "Shenzhen Longway Technologies Co., Ltd", "SHENZHEN-LONGWAY-TECHNOLOGIES" }, { 0x641E81, "Dowslake Microsystems", "DOWSLAKE-MICROSYSTEMS" }, { 0x88ACC1, "Generiton Co., Ltd. ", "GENERITON" }, { 0x785712, "Mobile Integration Workgroup", "MOBILE-INTEGRATION-WORKGROUP" }, { 0x380A0A, "Sky-City Communication and Electronics Limited Company", "SKY-CITY-COMMUNICATION-AND-ELECTRONICS-COMPANY" }, { 0x141BBD, "Volex Inc.", "VOLEX" }, { 0x78C6BB, "Innovasic, Inc.", "INNOVASIC" }, { 0xDC4EDE, "SHINYEI TECHNOLOGY CO., LTD.", "SHINYEI" }, { 0x888B5D, "Storage Appliance Corporation ", "STORAGE-APPLIANCE" }, { 0xF0F842, "KEEBOX, Inc.", "KEEBOX" }, { 0x78A714, "Amphenol", "AMPHENOL" }, { 0xF450EB, "Telechips Inc", "TELECHIPS" }, { 0x988EDD, "TE Connectivity Limerick", "TE-CONNECTIVITY-LIMERICK" }, { 0x98FC11, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x180C77, "Westinghouse Electric Company, LLC", "WESTINGHOUSE-ELECTRIC-COMPANY-LLC" }, { 0xACA016, "Cisco Systems, Inc", "CISCO" }, { 0xE4AD7D, "SCL Elements", "SCL-ELEMENTS" }, { 0x40D40E, "Biodata Ltd", "BIODATA" }, { 0x7C051E, "RAFAEL LTD.", "RAFAEL" }, { 0x58570D, "Danfoss Solar Inverters", "DANFOSS-SOLAR-INVERTERS" }, { 0x0C826A, "Wuhan Huagong Genuine Optics Technology Co., Ltd", "WUHAN-HUAGONG-GENUINE-OPTICS" }, { 0x38C7BA, "CS Services Co.,Ltd.", "CS-SERVICES" }, { 0x70D57E, "Scalar Corporation", "SCALAR" }, { 0x7866AE, "ZTEC Instruments, Inc.", "ZTEC-INSTRUMENTS" }, { 0x78818F, "Server Racks Australia Pty Ltd", "SERVER-RACKS-AUSTRALIA-PTY" }, { 0xE0589E, "Laerdal Medical", "LAERDAL-MEDICAL" }, { 0x44D63D, "Talari Networks", "TALARI-NETWORKS" }, { 0x58FD20, "Bravida Sakerhet AB", "BRAVIDA-SAKERHET-AB" }, { 0x9835B8, "Assembled Products Corporation", "ASSEMBLED-PRODUCTS" }, { 0x240B2A, "Viettel Group", "VIETTEL-GROUP" }, { 0x68E41F, "Unglaube Identech GmbH", "UNGLAUBE-IDENTECH" }, { 0x84F64C, "Cross Point BV", "CROSS-POINT" }, { 0x90513F, "Elettronica Santerno SpA", "ELETTRONICA-SANTERNO-SPA" }, { 0x7CA29B, "D.SignT GmbH & Co. KG", "D-SIGNT" }, { 0x34AAEE, "Mikrovisatos Servisas UAB", "MIKROVISATOS-SERVISAS-UAB" }, { 0xA40CC3, "Cisco Systems, Inc", "CISCO" }, { 0x34E0D7, "DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD", "DONGGUAN-QISHENG-ELECTRONICS-INDUSTRIAL" }, { 0x40520D, "Pico Technology", "PICO" }, { 0x543131, "Raster Vision Ltd", "RASTER-VISION" }, { 0x90E0F0, "IEEE 1722a Working Group", "IEEE-1722A-WORKING-GROUP" }, { 0x1C6F65, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xF0AD4E, "Globalscale Technologies, Inc.", "GLOBALSCALE-TECHNOLOGIES" }, { 0x903D5A, "Shenzhen Wision Technology Holding Limited", "SHENZHEN-WISION-HOLDING" }, { 0x609AA4, "GVI SECURITY INC.", "GVI-SECURITY" }, { 0xF0ED1E, "Bilkon Bilgisayar Kontrollu Cih. Im.Ltd.", "BILKON-BILGISAYAR-KONTROLLU-CIH-IM" }, { 0x24A937, "PURE Storage", "PURE-STORAGE" }, { 0x348302, "iFORCOM Co., Ltd", "IFORCOM" }, { 0x949C55, "Alta Data Technologies", "ALTA-DATA-TECHNOLOGIES" }, { 0x389F83, "OTN Systems N.V.", "OTN-N-V" }, { 0x8C541D, "LGE ", "LGE" }, { 0x003A9D, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x905446, "TES ELECTRONIC SOLUTIONS", "TES-SOLUTIONS" }, { 0xDC7B94, "Cisco Systems, Inc", "CISCO" }, { 0x68234B, "Nihon Dengyo Kousaku", "NIHON-DENGYO-KOUSAKU" }, { 0x18422F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0xA4BE61, "EutroVision System, Inc.", "EUTROVISION-SYSTEM" }, { 0xE06290, "Jinan Jovision Science & Technology Co., Ltd.", "JINAN-JOVISION-SCIENCE" }, { 0xA01859, "Shenzhen Yidashi Electronics Co Ltd", "SHENZHEN-YIDASHI-ELECTRONICS" }, { 0x042234, "Wireless Standard Extensions", "WIRELESS-STANDARD-EXTENSIONS" }, { 0x7812B8, "ORANTEK LIMITED", "ORANTEK" }, { 0xF0B6EB, "Poslab Technology Co., Ltd.", "POSLAB" }, { 0xFCCCE4, "Ascon Ltd.", "ASCON" }, { 0x34862A, "Heinz Lackmann GmbH & Co KG", "HEINZ-LACKMANN" }, { 0x842141, "Shenzhen Ginwave Technologies Ltd.", "SHENZHEN-GINWAVE-TECHNOLOGIES" }, { 0xB4ED54, "Wohler Technologies", "WOHLER-TECHNOLOGIES" }, { 0x544249, "Sony Corporation", "SONY" }, { 0x24DBAD, "ShopperTrak RCT Corporation", "SHOPPERTRAK-RCT" }, { 0xCC69B0, "Global Traffic Technologies, LLC", "GLOBAL-TRAFFIC-TECHNOLOGIES-LLC" }, { 0x2872C5, "Smartmatic Corp", "SMARTMATIC" }, { 0xB8A3E0, "BenRui Technology Co.,Ltd", "BENRUI" }, { 0xB8F732, "Aryaka Networks Inc", "ARYAKA-NETWORKS" }, { 0x70828E, "OleumTech Corporation", "OLEUMTECH" }, { 0x502A7E, "Smart electronic GmbH", "SMART" }, { 0xF0264C, "Dr. Sigrist AG", "DR-SIGRIST" }, { 0x3C1CBE, "JADAK LLC", "JADAK-LLC" }, { 0xA8995C, "aizo ag", "AIZO" }, { 0xF445ED, "Portable Innovation Technology Ltd.", "PORTABLE-INNOVATION" }, { 0x6C32DE, "Indieon Technologies Pvt. Ltd.", "INDIEON-TECHNOLOGIES-PVT" }, { 0xFCCF62, "IBM Corp", "IBM" }, { 0xB09074, "Fulan Electronics Limited", "FULAN-ELECTRONICS" }, { 0x2CA835, "RIM", "RIM" }, { 0x94F692, "Geminico co.,Ltd.", "GEMINICO" }, { 0x8C736E, "FUJITSU LIMITED", "FUJITSU" }, { 0x30EFD1, "Alstom Strongwish (Shenzhen) Co., Ltd.", "ALSTOM-STRONGWISH-SHENZHEN" }, { 0xC835B8, "Ericsson, EAB/RWI/K", "ERICSSON-EAB/RWI/K" }, { 0x243C20, "Dynamode Group", "DYNAMODE-GROUP" }, { 0x70D5E7, "Wellcore Corporation", "WELLCORE" }, { 0x3CF72A, "Nokia Corporation", "NOKIA" }, { 0xFCE192, "Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd", "SICHUAN-JINWANGTONG-SCIENCE" }, { 0xF8912A, "GLP German Light Products GmbH", "GLP-GERMAN-LIGHT-PRODUCTS" }, { 0xE02630, "Intrigue Technologies, Inc.", "INTRIGUE-TECHNOLOGIES" }, { 0x8C9236, "Aus.Linx Technology Co., Ltd.", "AUS-LINX" }, { 0x4012E4, "Compass-EOS", "COMPASS-EOS" }, { 0xF8DC7A, "Variscite LTD", "VARISCITE" }, { 0x003A9C, "Cisco Systems, Inc", "CISCO" }, { 0xE8E776, "Shenzhen Kootion Technology Co., Ltd", "SHENZHEN-KOOTION" }, { 0x702F97, "Aava Mobile Oy", "AAVA-MOBILE-OY" }, { 0x9018AE, "Shanghai Meridian Technologies, Co. Ltd.", "SHANGHAI-MERIDIAN-TECHNOLOGIES" }, { 0x0494A1, "CATCH THE WIND INC", "CATCH-THE-WIND" }, { 0x2C3427, "ERCO & GENER", "ERCO-GENER" }, { 0xB42CBE, "Direct Payment Solutions Limited", "DIRECT-PAYMENT-SOLUTIONS" }, { 0xF47626, "Viltechmeda UAB ", "VILTECHMEDA-UAB" }, { 0xEC4476, "Cisco Systems, Inc", "CISCO" }, { 0x9CEBE8, "BizLink (Kunshan) Co.,Ltd", "BIZLINK-KUNSHAN" }, { 0x88ED1C, "Cudo Communication Co., Ltd.", "CUDO-COMMUNICATION" }, { 0xB05B1F, "THERMO FISHER SCIENTIFIC S.P.A.", "THERMO-FISHER-SCIENTIFIC-S-P-A" }, { 0x743256, "NT-ware Systemprg GmbH", "NT-WARE-SYSTEMPRG" }, { 0x003AAF, "BlueBit Ltd.", "BLUEBIT" }, { 0xC0BAE6, "Application Solutions (Electronics and Vision) Ltd", "APPLICATION-SOLUTIONS-ELECTRONICS-AND-VISION" }, { 0x20BFDB, "DVL", "DVL" }, { 0x889821, "TERAON", "TERAON" }, { 0xCC5076, "Ocom Communications, Inc.", "OCOM-COMMUNICATION" }, { 0x7C2CF3, "Secure Electrans Ltd", "SECURE-ELECTRANS" }, { 0x304174, "ALTEC LANSING LLC", "ALTEC-LANSING-LLC" }, { 0x7830E1, "UltraClenz, LLC", "ULTRACLENZ-LLC" }, { 0xFCFBFB, "Cisco Systems, Inc", "CISCO" }, { 0x1C129D, "IEEE PES PSRC/SUB ", "IEEE-PES-PSRC/SUB" }, { 0xB40832, "TC Communications", "TC-COMMUNICATION" }, { 0x002720, "NEW-SOL COM", "NEW-SOL-COM" }, { 0x002712, "MaxVision LLC", "MAXVISION-LLC" }, { 0x00270F, "Envisionnovation Inc", "ENVISIONNOVATION" }, { 0x0026D7, "KM Electornic Technology Co., Ltd.", "KM-ELECTORNIC" }, { 0x0026D1, "S Squared Innovations Inc.", "S-SQUARED-INNOVATIONS" }, { 0x0026CB, "Cisco Systems, Inc", "CISCO" }, { 0x0026C4, "Cadmos microsystems S.r.l.", "CADMOS-MICROSYSTEMS-S-R-L" }, { 0x0026BE, "Schoonderbeek Elektronica Systemen B.V.", "SCHOONDERBEEK-ELEKTRONICA-SYSTEMEN" }, { 0x0026B2, "Setrix GmbH", "SETRIX" }, { 0x0026AC, "Shanghai LUSTER Teraband photonic Co., Ltd.", "SHANGHAI-LUSTER-TERABAND-PHOTONIC" }, { 0x0026B1, "Navis Auto Motive Systems, Inc.", "NAVIS-AUTO-MOTIVE" }, { 0x0026A8, "DAEHAP HYPER-TECH", "DAEHAP-HYPER-TECH" }, { 0x0026A7, "CONNECT SRL", "CONNECT-SRL" }, { 0x0026A1, "Megger", "MEGGER" }, { 0x0026A2, "Instrumentation Technology Systems", "INSTRUMENTATION" }, { 0x00269B, "SOKRAT Ltd.", "SOKRAT" }, { 0x002695, "ZT Group Int'l Inc", "ZT-GROUP" }, { 0x00268F, "MTA SpA", "MTA-SPA" }, { 0x6C8CDB, "Otus Technologies Ltd", "OTUS-TECHNOLOGIES" }, { 0x401597, "Protect America, Inc.", "PROTECT-AMERICA" }, { 0x60391F, "ABB Ltd", "ABB" }, { 0xA07332, "Cashmaster International Limited", "CASHMASTER" }, { 0x7C7BE4, "Z'SEDAI KENKYUSHO CORPORATION", "Z-SEDAI-KENKYUSHO" }, { 0x40EF4C, "Fihonest communication co.,Ltd", "FIHONEST-COMMUNICATION" }, { 0x24CF21, "Shenzhen State Micro Technology Co., Ltd", "SHENZHEN-STATE-MICRO" }, { 0x04B3B6, "Seamap (UK) Ltd", "SEAMAP-UK" }, { 0x10BAA5, "GANA I&C CO., LTD", "GANA-I-C" }, { 0x586ED6, "Private", "PRIVATE" }, { 0xE09153, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0xCC0080, "BETTINI SRL", "BETTINI-SRL" }, { 0x644BC3, "Shanghai WOASiS Telecommunications Ltd., Co.", "SHANGHAI-WOASIS-TELECOMMUNICATIONS" }, { 0x0CE709, "Fox Crypto B.V.", "FOX-CRYPTO" }, { 0x002703, "Testech Electronics Pte Ltd", "TESTECH-ELECTRONICS-PTE" }, { 0x0026FD, "Interactive Intelligence", "INTERACTIVE-INTELLIGENCE" }, { 0x0026F6, "Military Communication Institute", "MILITARY-COMMUNICATION-INSTITUTE" }, { 0x0026F0, "cTrixs International GmbH.", "CTRIXS" }, { 0x0026EA, "Cheerchip Electronic Technology (ShangHai) Co., Ltd.", "CHEERCHIP-SHANGHAI" }, { 0x0026E3, "DTI", "DTI" }, { 0x0026DD, "Fival Science & Technology Co.,Ltd.", "FIVAL-SCIENCE" }, { 0x0026DE, "FDI MATELEC", "FDI-MATELEC" }, { 0x54B620, "SUHDOL E&C Co.Ltd.", "SUHDOL-E-C" }, { 0xC4AAA1, "SUMMIT DEVELOPMENT, spol.s r.o.", "SUMMIT-DEVELOPMENT-SPOL-S-R-O" }, { 0x78C40E, "H&D Wireless", "H-D-WIRELESS" }, { 0x9C5B96, "NMR Corporation", "NMR" }, { 0xE4FFDD, "ELECTRON INDIA", "ELECTRON-INDIA" }, { 0xF852DF, "VNL Europe AB", "VNL-EUROPE-AB" }, { 0x1CF061, "SCAPS GmbH", "SCAPS" }, { 0xA893E6, "JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD", "JIANGXI-JINGGANGSHAN-CKING-COMMUNICATION" }, { 0x00267C, "Metz-Werke GmbH & Co KG", "METZ-WERKE" }, { 0x002676, "COMMidt AS", "COMMIDT-AS" }, { 0x00266F, "Coordiwise Technology Corp.", "COORDIWISE" }, { 0x002670, "Cinch Connectors", "CINCH-CONNECTORS" }, { 0x002663, "Shenzhen Huitaiwei Tech. Ltd, co.", "SHENZHEN-HUITAIWEI-TECH" }, { 0x0025CD, "Skylane Optics", "SKYLANE-OPTICS" }, { 0x0025C8, "S-Access GmbH", "S-ACCESS" }, { 0x0025C7, "altek Corporation", "ALTEK" }, { 0x0025C1, "Nawoo Korea Corp.", "NAWOO-KOREA" }, { 0x0025BA, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x0025B5, "Cisco Systems, Inc", "CISCO" }, { 0x0025AE, "Microsoft Corporation", "MICROSOFT" }, { 0x0025A8, "Kontron (BeiJing) Technology Co.,Ltd", "KONTRON-BEIJING" }, { 0x0025A7, "Comverge, Inc.", "COMVERGE" }, { 0x00262B, "Wongs Electronics Co. Ltd.", "WONGS-ELECTRONICS" }, { 0x002625, "MediaSputnik", "MEDIASPUTNIK" }, { 0x00261E, "QINGBANG ELEC(SZ) CO., LTD", "QINGBANG-ELEC-SZ" }, { 0x002619, "FRC", "FRC" }, { 0x002612, "Space Exploration Technologies", "SPACE-EXPLORATION-TECHNOLOGIES" }, { 0x00260B, "Cisco Systems, Inc", "CISCO" }, { 0x00260C, "Dataram", "DATARAM" }, { 0x0025FF, "CreNova Multimedia Co., Ltd", "CRENOVA-MULTIMEDIA" }, { 0x002606, "RAUMFELD GmbH", "RAUMFELD" }, { 0x0025F9, "GMK electronic design GmbH", "GMK-DESIGN" }, { 0x0025A2, "Alta Definicion LINCEO S.L.", "ALTA-DEFINICION-LINCEO-S-L" }, { 0x002596, "GIGAVISION srl", "GIGAVISION-SRL" }, { 0x00259B, "Beijing PKUNITY Microsystems Technology Co., Ltd", "BEIJING-PKUNITY-MICROSYSTEMS" }, { 0x002595, "Northwest Signal Supply, Inc", "NORTHWEST-SIGNAL-SUPPLY" }, { 0x00258F, "Trident Microsystems, Inc.", "TRIDENT-MICROSYSTEMS" }, { 0x002585, "KOKUYO S&T Co., Ltd.", "KOKUYO-S-T" }, { 0x00257B, "STJ ELECTRONICS PVT LTD", "STJ-ELECTRONICS-PVT" }, { 0x002574, "KUNIMI MEDIA DEVICE Co., Ltd.", "KUNIMI-MEDIA-DEVICE" }, { 0x00264F, "Krüger &Gothe GmbH", "KRüGER-GOTHE" }, { 0x002648, "Emitech Corp.", "EMITECH" }, { 0x002644, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x00263E, "Trapeze Networks", "TRAPEZE-NETWORKS" }, { 0x002638, "Xia Men Joyatech Co., Ltd.", "XIA-MEN-JOYATECH" }, { 0x00263D, "MIA Corporation", "MIA" }, { 0x002631, "COMMTACT LTD", "COMMTACT" }, { 0x00256F, "Dantherm Power", "DANTHERM-POWER" }, { 0x002562, "interbro Co. Ltd.", "INTERBRO" }, { 0x00255C, "NEC Corporation", "NEC" }, { 0x00254F, "ELETTROLAB Srl", "ELETTROLAB-SRL" }, { 0x002518, "Power PLUS Communications AG", "POWER-PLUS-COMMUNICATION" }, { 0x002513, "CXP DIGITAL BV", "CXP-DIGITAL" }, { 0x00250C, "Enertrac", "ENERTRAC" }, { 0x002505, "eks Engel GmbH & Co. KG", "EKS-ENGEL" }, { 0x0024F9, "Cisco Systems, Inc", "CISCO" }, { 0x0024F2, "Uniphone Telecommunication Co., Ltd.", "UNIPHONE-TELECOMMUNICATION" }, { 0x0024ED, "YT Elec. Co,.Ltd.", "YT-ELEC" }, { 0x0024E6, "In Motion Technology Inc.", "IN-MOTION" }, { 0x0024E1, "Convey Computer Corp.", "CONVEY" }, { 0x0024DF, "Digitalbox Europe GmbH", "DIGITALBOX-EUROPE" }, { 0x0024DA, "Innovar Systems Limited", "INNOVAR" }, { 0x002549, "Jeorich Tech. Co.,Ltd.", "JEORICH-TECH" }, { 0x002538, "Samsung Electronics Co., Ltd., Memory Division", "SAMSUNG-ELECTRONICS-MEMORY-DIVISION" }, { 0x002542, "Pittasoft", "PITTASOFT" }, { 0x002530, "Aetas Systems Inc.", "AETAS" }, { 0x002529, "COMELIT GROUP S.P.A", "COMELIT-GROUP-S-P-A" }, { 0x002522, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0x00251D, "DSA Encore, LLC", "DSA-ENCORE-LLC" }, { 0x0025F5, "DVS Korea, Co., Ltd", "DVS-KOREA" }, { 0x0025F0, "Suga Electronics Limited", "SUGA-ELECTRONICS" }, { 0x0025EA, "Iphion BV", "IPHION" }, { 0x0025E4, "OMNI-WiFi, LLC", "OMNI-WIFI-LLC" }, { 0x0025E0, "CeedTec Sdn Bhd", "CEEDTEC-SDN-BHD" }, { 0x0025DA, "Secura Key", "SECURA-KEY" }, { 0x0025D9, "DataFab Systems Inc.", "DATAFAB" }, { 0x002410, "NUETEQ Technology,Inc.", "NUETEQ" }, { 0x002409, "The Toro Company", "THE-TORO-COMPANY" }, { 0x0023FD, "AFT Atlas Fahrzeugtechnik GmbH", "AFT-ATLAS-FAHRZEUGTECHNIK" }, { 0x0023F6, "Softwell Technology Co., Ltd.", "SOFTWELL" }, { 0x0023EC, "Algorithmix GmbH", "ALGORITHMIX" }, { 0x0023E7, "Hinke A/S", "HINKE-A/S" }, { 0x002387, "ThinkFlood, Inc.", "THINKFLOOD" }, { 0x002381, "Lengda Technology(Xiamen) Co.,Ltd.", "LENGDA-XIAMEN" }, { 0x00237B, "WHDI LLC", "WHDI-LLC" }, { 0x002372, "MORE STAR INDUSTRIAL GROUP LIMITED", "MORE-STAR-INDUSTRIAL-GROUP" }, { 0x0024CE, "Exeltech Inc", "EXELTECH" }, { 0x0024D3, "QUALICA Inc.", "QUALICA" }, { 0x0024C7, "Mobilarm Ltd", "MOBILARM" }, { 0x0024C2, "Asumo Co.,Ltd.", "ASUMO" }, { 0x0024BC, "HuRob Co.,Ltd", "HUROB" }, { 0x0024B7, "GridPoint, Inc.", "GRIDPOINT" }, { 0x0024AB, "A7 Engineering, Inc.", "A7-ENGINEERING" }, { 0x0024A6, "TELESTAR DIGITAL GmbH", "TELESTAR-DIGITAL" }, { 0x00249A, "Beijing Zhongchuang Telecommunication Test Co., Ltd.", "BEIJING-ZHONGCHUANG-TELECOMMUNICATION-TEST" }, { 0x00249F, "RIM Testing Services", "RIM-TESTING-SERVICES" }, { 0x002487, "Blackboard Inc.", "BLACKBOARD" }, { 0x002498, "Cisco Systems, Inc", "CISCO" }, { 0x002485, "ConteXtream Ltd", "CONTEXTREAM" }, { 0x002480, "Meteocontrol GmbH", "METEOCONTROL" }, { 0x00244A, "Voyant International", "VOYANT" }, { 0x002449, "Shen Zhen Lite Star Electronics Technology Co., Ltd", "SHEN-ZHEN-LITE-STAR-ELECTRONICS" }, { 0x002443, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002439, "Digital Barriers Advanced Technologies", "DIGITAL-BARRIERS-ADVANCED-TECHNOLOGIES" }, { 0x002479, "Optec Displays, Inc.", "OPTEC-DISPLAYS" }, { 0x00246D, "Weinzierl Engineering GmbH", "WEINZIERL-ENGINEERING" }, { 0x002474, "Autronica Fire And Securirty", "AUTRONICA-FIRE-AND-SECURIRTY" }, { 0x002468, "Sumavision Technologies Co.,Ltd", "SUMAVISION-TECHNOLOGIES" }, { 0x002466, "Unitron nv", "UNITRON-NV" }, { 0x002461, "Shin Wang Tech.", "SHIN-WANG-TECH" }, { 0x00245C, "Design-Com Technologies Pty. Ltd.", "DESIGN-COM-TECHNOLOGIES-PTY" }, { 0x00244F, "Asantron Technologies Ltd.", "ASANTRON-TECHNOLOGIES" }, { 0x0023BB, "Schmitt Industries", "SCHMITT-INDUSTRIES" }, { 0x0023BA, "Chroma", "CHROMA" }, { 0x0023B5, "ORTANA LTD", "ORTANA" }, { 0x0023A8, "Marshall Electronics", "MARSHALL-ELECTRONICS" }, { 0x00239B, "Elster Solutions, LLC", "ELSTER-SOLUTIONS-LLC" }, { 0x002396, "ANDES TECHNOLOGY CORPORATION", "ANDES" }, { 0x002391, "Maxian", "MAXIAN" }, { 0x00238C, "Private", "PRIVATE" }, { 0x002432, "Neostar Technology Co.,LTD", "NEOSTAR" }, { 0x002429, "MK MASTER INC.", "MK-MASTER" }, { 0x00241C, "FuGang Electronic (DG) Co.,Ltd", "FUGANG-DG" }, { 0x002428, "EnergyICT", "ENERGYICT" }, { 0x002416, "Any Use", "ANY-USE" }, { 0x0023E0, "INO Therapeutics LLC", "INO-THERAPEUTICS-LLC" }, { 0x0023DA, "Industrial Computer Source (Deutschland)GmbH", "INDUSTRIAL-SOURCE-DEUTSCHLAND" }, { 0x0023C8, "TEAM-R", "TEAM-R" }, { 0x0023C7, "AVSystem", "AVSYSTEM" }, { 0x0023C1, "Securitas Direct AB", "SECURITAS-DIRECT-AB" }, { 0x0021DC, "TECNOALARM S.r.l.", "TECNOALARM-S-R-L" }, { 0x0021D6, "LXI Consortium", "LXI-CONSORTIUM" }, { 0x0021CF, "The Crypto Group", "THE-CRYPTO-GROUP" }, { 0x0021C9, "Wavecom Asia Pacific Limited", "WAVECOM-ASIA-PACIFIC" }, { 0x0021CA, "ART System Co., Ltd.", "ART-SYSTEM" }, { 0x0021C3, "CORNELL Communications, Inc.", "CORNELL-COMMUNICATION" }, { 0x002334, "Cisco Systems, Inc", "CISCO" }, { 0x00232E, "Kedah Electronics Engineering, LLC", "KEDAH-ELECTRONICS-ENGINEERING-LLC" }, { 0x002329, "DDRdrive LLC", "DDRDRIVE-LLC" }, { 0x002322, "KISS Teknical Solutions, Inc.", "KISS-TEKNICAL-SOLUTIONS" }, { 0x002325, "IOLAN Holding", "IOLAN-HOLDING" }, { 0x002319, "Sielox LLC", "SIELOX-LLC" }, { 0x002270, "ABK North America, LLC", "ABK-NORTH-AMERICA-LLC" }, { 0x002317, "Lasercraft Inc", "LASERCRAFT" }, { 0x002310, "LNC Technology Co., Ltd.", "LNC" }, { 0x002273, "Techway", "TECHWAY" }, { 0x002274, "FamilyPhone AB", "FAMILYPHONE-AB" }, { 0x00226F, "3onedata Technology Co. Ltd.", "3ONEDATA" }, { 0x00226A, "Honeywell", "HONEYWELL" }, { 0x002260, "AFREEY Inc.", "AFREEY" }, { 0x00225B, "Teradici Corporation", "TERADICI" }, { 0x002256, "Cisco Systems, Inc", "CISCO" }, { 0x002255, "Cisco Systems, Inc", "CISCO" }, { 0x00224D, "MITAC INTERNATIONAL CORP.", "MITAC" }, { 0x002252, "ZOLL Lifecor Corporation", "ZOLL-LIFECOR" }, { 0x002246, "Evoc Intelligent Technology Co.,Ltd.", "EVOC-INTELLIGENT" }, { 0x002366, "Beijing Siasun Electronic System Co.,Ltd.", "BEIJING-SIASUN-SYSTEM" }, { 0x00236B, "Xembedded, Inc.", "XEMBEDDED" }, { 0x002359, "Benchmark Electronics ( Thailand ) Public Company Limited", "BENCHMARK-ELECTRONICS-THAILAND-PUBLIC-COMPANY" }, { 0x00235F, "Silicon Micro Sensors GmbH", "SILICON-MICRO-SENSORS" }, { 0x002353, "F E T Elettronica snc", "F-E-T-ELETTRONICA-SNC" }, { 0x00234C, "KTC AB", "KTC-AB" }, { 0x002304, "Cisco Systems, Inc", "CISCO" }, { 0x0022F3, "SHARP Corporation", "SHARP" }, { 0x0022EE, "Algo Communication Products Ltd", "ALGO-COMMUNICATION-PRODUCTS" }, { 0x0022E7, "WPS Parking Systems", "WPS-PARKING" }, { 0x0022E1, "ZORT Labs, LLC.", "ZORT-LABS-LLC" }, { 0x0022E2, "WABTEC Transit Division", "WABTEC-TRANSIT-DIVISION" }, { 0x0022DB, "Translogic Corporation", "TRANSLOGIC" }, { 0x0022A1, "Huawei Symantec Technologies Co.,Ltd.", "HUAWEI-SYMANTEC-TECHNOLOGIES" }, { 0x00229B, "AverLogic Technologies, Inc.", "AVERLOGIC-TECHNOLOGIES" }, { 0x00229C, "Verismo Networks Inc", "VERISMO-NETWORKS" }, { 0x002295, "SGM Technology for lighting spa", "SGM-FOR-LIGHTING-SPA" }, { 0x00228E, "TV-NUMERIC", "TV-NUMERIC" }, { 0x002289, "Optosecurity Inc.", "OPTOSECURITY" }, { 0x002282, "8086 Consultancy", "8086-CONSULTANCY" }, { 0x00227C, "Woori SMT Co.,ltd", "WOORI-SMT" }, { 0x002279, "Nippon Conlux Co., Ltd.", "NIPPON-CONLUX" }, { 0x00223C, "RATIO Entwicklungen GmbH", "RATIO-ENTWICKLUNGEN" }, { 0x002236, "VECTOR SP. Z O.O.", "VECTOR-SP-Z-O-O" }, { 0x002230, "FutureLogic Inc.", "FUTURELOGIC" }, { 0x002229, "Compumedics Ltd", "COMPUMEDICS" }, { 0x00221D, "Freegene Technology LTD", "FREEGENE" }, { 0x002224, "Good Will Instrument Co., Ltd.", "GOOD-WILL-INSTRUMENT" }, { 0x002223, "TimeKeeping Systems, Inc.", "TIMEKEEPING" }, { 0x002216, "SHIBAURA VENDING MACHINE CORPORATION", "SHIBAURA-VENDING-MACHINE" }, { 0x002217, "Neat Electronics", "NEAT-ELECTRONICS" }, { 0x002211, "Rohati Systems", "ROHATI" }, { 0x00220A, "OnLive, Inc", "ONLIVE" }, { 0x002204, "KORATEK", "KORATEK" }, { 0x0021FF, "Cyfrowy Polsat SA", "CYFROWY-POLSAT" }, { 0x0021F5, "Western Engravers Supply, Inc.", "WESTERN-ENGRAVERS-SUPPLY" }, { 0x0021EF, "Kapsys", "KAPSYS" }, { 0x0021EE, "Full Spectrum Inc.", "FULL-SPECTRUM" }, { 0x0022D4, "ComWorth Co., Ltd.", "COMWORTH" }, { 0x0022CA, "Anviz Biometric Tech. Co., Ltd.", "ANVIZ-BIOMETRIC-TECH" }, { 0x0022C5, "INFORSON Co,Ltd.", "INFORSON" }, { 0x0022C0, "Shenzhen Forcelink Electronic Co, Ltd", "SHENZHEN-FORCELINK" }, { 0x0022BB, "beyerdynamic GmbH & Co. KG", "BEYERDYNAMIC" }, { 0x0022AE, "Mattel Inc.", "MATTEL" }, { 0x0022AD, "TELESIS TECHNOLOGIES, INC.", "TELESIS-TECHNOLOGIES" }, { 0x0022A8, "Ouman Oy", "OUMAN-OY" }, { 0x002132, "Masterclock, Inc.", "MASTERCLOCK" }, { 0x00212C, "SemIndia System Private Limited", "SEMINDIA-SYSTEM-PRIVATE" }, { 0x002131, "Blynke Inc.", "BLYNKE" }, { 0x00211F, "SHINSUNG DELTATECH CO.,LTD.", "SHINSUNG-DELTATECH" }, { 0x002120, "Sequel Technologies", "SEQUEL-TECHNOLOGIES" }, { 0x002125, "KUK JE TONG SHIN Co.,LTD", "KUK-JE-TONG-SHIN" }, { 0x002112, "WISCOM SYSTEM CO.,LTD", "WISCOM-SYSTEM" }, { 0x001FB9, "Paltronics", "PALTRONICS" }, { 0x001FB7, "WiMate Technologies Corp.", "WIMATE-TECHNOLOGIES" }, { 0x001FB8, "Universal Remote Control, Inc.", "UNIVERSAL-REMOTE-CONTROL" }, { 0x001FB2, "Sontheim Industrie Elektronik GmbH", "SONTHEIM-INDUSTRIE-ELEKTRONIK" }, { 0x001FAB, "I.S HIGH TECH.INC", "I-S-HIGH-TECH" }, { 0x001FA6, "Stilo srl", "STILO-SRL" }, { 0x001FA1, "Gtran Inc", "GTRAN" }, { 0x001F9C, "LEDCO", "LEDCO" }, { 0x00215E, "IBM Corp", "IBM" }, { 0x002151, "Millinet Co., Ltd.", "MILLINET" }, { 0x002152, "General Satellite Research & Development Limited", "GENERAL-SATELLITE-RESEARCH-DEVELOPMENT" }, { 0x002157, "National Datacast, Inc.", "NATIONAL-DATACAST" }, { 0x00214B, "Shenzhen HAMP Science & Technology Co.,Ltd", "SHENZHEN-HAMP-SCIENCE" }, { 0x002145, "Semptian Technologies Ltd.", "SEMPTIAN-TECHNOLOGIES" }, { 0x002144, "SS Telecoms", "SS-TELECOMS" }, { 0x00213C, "AliphCom", "ALIPHCOM" }, { 0x00213B, "Berkshire Products, Inc", "BERKSHIRE-PRODUCTS" }, { 0x002190, "Goliath Solutions", "GOLIATH-SOLUTIONS" }, { 0x002189, "AppTech, Inc.", "APPTECH" }, { 0x002184, "POWERSOFT SRL", "POWERSOFT-SRL" }, { 0x00217D, "PYXIS S.R.L.", "PYXIS-S-R-L" }, { 0x002177, "W. L. Gore & Associates", "W-L-GORE-ASSOCIATES" }, { 0x002176, "YMax Telecom Ltd.", "YMAX-TELECOM" }, { 0x002171, "Wesung TNC Co., Ltd.", "WESUNG-TNC" }, { 0x002164, "Special Design Bureau for Seismic Instrumentation", "SPECIAL-DESIGN-BUREAU-FOR-SEISMIC-INSTRUMENTATION" }, { 0x002103, "GHI Electronics, LLC", "GHI-ELECTRONICS-LLC" }, { 0x001FFA, "Coretree, Co, Ltd", "CORETREE" }, { 0x001FF5, "Kongsberg Defence & Aerospace", "KONGSBERG-DEFENCE-AEROSPACE" }, { 0x001FF4, "Power Monitors, Inc.", "POWER-MONITORS" }, { 0x001FEE, "ubisys technologies GmbH", "UBISYS-TECHNOLOGIES" }, { 0x001FE7, "Simet", "SIMET" }, { 0x001FDB, "Network Supply Corp.,", "NETWORK-SUPPLY" }, { 0x001FD1, "OPTEX CO.,LTD.", "OPTEX" }, { 0x001FCA, "Cisco Systems, Inc", "CISCO" }, { 0x001FBE, "Shenzhen Mopnet Industrial Co.,Ltd", "SHENZHEN-MOPNET-INDUSTRIAL" }, { 0x001F62, "JSC Stilsoft", "JSC-STILSOFT" }, { 0x001F67, "Hitachi,Ltd.", "HITACHI" }, { 0x001F55, "Honeywell Security (China) Co., Ltd.", "HONEYWELL-SECURITY-CHINA" }, { 0x001F56, "DIGITAL FORECAST", "DIGITAL-FORECAST" }, { 0x001F4F, "Thinkware Co. Ltd.", "THINKWARE" }, { 0x001F48, "Mojix Inc.", "MOJIX" }, { 0x001F43, "ENTES ELEKTRONIK", "ENTES-ELEKTRONIK" }, { 0x001F8E, "Metris USA Inc.", "METRIS-USA" }, { 0x001F88, "FMS Force Measuring Systems AG", "FMS-FORCE-MEASURING" }, { 0x001F81, "Accel Semiconductor Corp", "ACCEL-SEMICONDUCTOR" }, { 0x001B58, "ACE CAD Enterprise Co., Ltd.", "ACE-CAD" }, { 0x001F78, "Blue Fox Porini Textile", "BLUE-FOX-PORINI-TEXTILE" }, { 0x001F6E, "Vtech Engineering Corporation", "VTECH-ENGINEERING" }, { 0x001F68, "Martinsson Elektronik AB", "MARTINSSON-ELEKTRONIK-AB" }, { 0x0021BC, "ZALA COMPUTER", "ZALA" }, { 0x0021B7, "Lexmark International Inc.", "LEXMARK" }, { 0x0021B0, "Tyco Telecommunications", "TYCO-TELECOMMUNICATIONS" }, { 0x0021A4, "Dbii Networks", "DBII-NETWORKS" }, { 0x00219A, "Cambridge Visual Networks Ltd", "CAMBRIDGE-VISUAL-NETWORKS" }, { 0x002196, "Telsey S.p.A.", "TELSEY-S-P-A" }, { 0x001E4B, "City Theatrical", "CITY-THEATRICAL" }, { 0x001E47, "PT. Hariff Daya Tunggal Engineering", "PT-HARIFF-DAYA-TUNGGAL-ENGINEERING" }, { 0x001E41, "Microwave Communication & Component, Inc.", "MICROWAVE-COMMUNICATION-COMPONENT" }, { 0x001E2E, "SIRTI S.p.A.", "SIRTI-S-P-A" }, { 0x001E27, "SBN TECH Co.,Ltd.", "SBN-TECH" }, { 0x001E28, "Lumexis Corporation", "LUMEXIS" }, { 0x001DF2, "Netflix, Inc.", "NETFLIX" }, { 0x001DEB, "DINEC International", "DINEC" }, { 0x001DEC, "Marusys", "MARUSYS" }, { 0x001DE6, "Cisco Systems, Inc", "CISCO" }, { 0x001DDA, "Mikroelektronika spol. s r. o.", "MIKROELEKTRONIKA-SPOL-S-R-O" }, { 0x001DDF, "Sunitec Enterprise Co., Ltd.", "SUNITEC" }, { 0x001DC7, "L-3 Communications Geneva Aerospace", "L-3-COMMUNICATION-GENEVA-AEROSPACE" }, { 0x001DC0, "Enphase Energy", "ENPHASE-ENERGY" }, { 0x001ED8, "Digital United Inc.", "DIGITAL-UNITED" }, { 0x001ED2, "Ray Shine Video Technology Inc", "RAY-SHINE-VIDEO" }, { 0x001ED1, "Keyprocessor B.V.", "KEYPROCESSOR" }, { 0x001ECC, "CDVI", "CDVI" }, { 0x001EC5, "Middle Atlantic Products Inc", "MIDDLE-ATLANTIC-PRODUCTS" }, { 0x001EBF, "Haas Automation Inc.", "HAAS-AUTOMATION" }, { 0x001EB9, "Sing Fai Technology Limited", "SING-FAI" }, { 0x001EB2, "LG innotek", "LG-INNOTEK" }, { 0x001F2E, "Triangle Research Int'l Pte Ltd", "TRIANGLE-RESEARCH-PTE" }, { 0x001F2D, "Electro-Optical Imaging, Inc.", "ELECTRO-OPTICAL-IMAGING" }, { 0x001F27, "Cisco Systems, Inc", "CISCO" }, { 0x001F14, "NexG", "NEXG" }, { 0x001F1B, "RoyalTek Company Ltd.", "ROYALTEK-COMPANY" }, { 0x001F0D, "L3 Communications - Telemetry West", "L3-COMMUNICATION---TELEMETRY-WEST" }, { 0x001F0E, "Japan Kyastem Co., Ltd", "JAPAN-KYASTEM" }, { 0x001E22, "ARVOO Imaging Products BV", "ARVOO-IMAGING-PRODUCTS" }, { 0x001E1B, "Digital Stream Technology, Inc.", "DIGITAL-STREAM" }, { 0x001E16, "Keytronix", "KEYTRONIX" }, { 0x001E15, "Beech Hill Electronics", "BEECH-HILL-ELECTRONICS" }, { 0x001E11, "ELELUX INTERNATIONAL LTD", "ELELUX" }, { 0x001E05, "Xseed Technologies & Computing", "XSEED-TECHNOLOGIES-COMPUTING" }, { 0x001E0C, "Sherwood Information Partners, Inc.", "SHERWOOD-INFORMATION-PARTNERS" }, { 0x001DFE, "Palm, Inc", "PALM" }, { 0x001DF9, "Cybiotronics (Far East) Limited", "CYBIOTRONICS-FAR-EAST" }, { 0x001EAD, "Wingtech Group Limited", "WINGTECH-GROUP" }, { 0x001EA2, "Symx Systems, Inc.", "SYMX" }, { 0x001EA7, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001EA1, "Brunata a/s", "BRUNATA-A/S" }, { 0x001E9B, "San-Eisha, Ltd.", "SAN-EISHA" }, { 0x001E94, "SUPERCOM TECHNOLOGY CORPORATION", "SUPERCOM" }, { 0x001E8F, "CANON INC.", "CANON" }, { 0x001E87, "Realease Limited", "REALEASE" }, { 0x001E80, "Last Mile Ltd.", "LAST-MILE" }, { 0x001EFC, "JSC MASSA-K", "JSC-MASSA-K" }, { 0x001F08, "RISCO LTD", "RISCO" }, { 0x001EF5, "Hitek Automated Inc.", "HITEK-AUTOMATED" }, { 0x001EFB, "Trio Motion Technology Ltd", "TRIO-MOTION" }, { 0x001EE9, "Stoneridge Electronics AB", "STONERIDGE-ELECTRONICS-AB" }, { 0x001EEE, "ETL Systems Ltd", "ETL" }, { 0x001E7B, "R.I.CO. S.r.l.", "R-I-S-R-L" }, { 0x001E76, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x001E6A, "Beijing Bluexon Technology Co.,Ltd", "BEIJING-BLUEXON" }, { 0x001E71, "MIrcom Group of Companies", "MIRCOM-GROUP-OF-COMPANIES" }, { 0x001E63, "Vibro-Meter SA", "VIBRO-METER" }, { 0x001E5E, "COmputime Ltd.", "COMPUTIME" }, { 0x001E57, "ALCOMA, spol. s r.o.", "ALCOMA-SPOL-S-R-O" }, { 0x001E51, "Converter Industry Srl", "CONVERTER-INDUSTRY-SRL" }, { 0x001DB9, "Wellspring Wireless", "WELLSPRING-WIRELESS" }, { 0x001DB4, "KUMHO ENG CO.,LTD", "KUMHO-ENG" }, { 0x001D9E, "AXION TECHNOLOGIES", "AXION-TECHNOLOGIES" }, { 0x001DA3, "SabiOso", "SABIOSO" }, { 0x001D9D, "ARTJOY INTERNATIONAL LIMITED", "ARTJOY" }, { 0x001D45, "Cisco Systems, Inc", "CISCO" }, { 0x001D3E, "SAKA TECHNO SCIENCE CO.,LTD", "SAKA-TECHNO-SCIENCE" }, { 0x001D37, "Thales-Panda Transportation System", "THALES-PANDA-TRANSPORTATION-SYSTEM" }, { 0x001D38, "Seagate Technology", "SEAGATE" }, { 0x001D32, "Longkay Communication & Technology (Shanghai) Co. Ltd", "LONGKAY-COMMUNICATION-SHANGHAI" }, { 0x001D2B, "Wuhan Pont Technology CO. , LTD", "WUHAN-PONT" }, { 0x001D1F, "Siauliu Tauro Televizoriai, JSC", "SIAULIU-TAURO-TELEVIZORIAI-JSC" }, { 0x001D26, "Rockridgesound Technology Co.", "ROCKRIDGESOUND" }, { 0x001D1A, "OvisLink S.A.", "OVISLINK" }, { 0x001D7A, "Wideband Semiconductor, Inc.", "WIDEBAND-SEMICONDUCTOR" }, { 0x001D74, "Tianjin China-Silicon Microelectronics Co., Ltd.", "TIANJIN-CHINA-SILICON-MICROELECTRONICS" }, { 0x001D62, "InPhase Technologies", "INPHASE-TECHNOLOGIES" }, { 0x001D61, "BIJ Corporation", "BIJ" }, { 0x001D5B, "Tecvan Informática Ltda", "TECVAN-INFORMáTICA-LTDA" }, { 0x001D54, "Sunnic Technology & Merchandise INC.", "SUNNIC-MERCHANDISE" }, { 0x001D4A, "Carestream Health, Inc.", "CARESTREAM-HEALTH" }, { 0x001CE8, "Cummins Inc", "CUMMINS" }, { 0x001CE4, "EleSy JSC", "ELESY-JSC" }, { 0x001CDD, "COWBELL ENGINEERING CO., LTD.", "COWBELL-ENGINEERING" }, { 0x001CDE, "Interactive Multimedia eXchange Inc.", "INTERACTIVE-MULTIMEDIA-EXCHANGE" }, { 0x001CD8, "BlueAnt Wireless", "BLUEANT-WIRELESS" }, { 0x001CD1, "Waves Audio LTD", "WAVES-AUDIO" }, { 0x001CCB, "Forth Corporation Public Company Limited", "FORTH-PUBLIC-COMPANY" }, { 0x001CC5, "3Com Ltd", "3COM" }, { 0x001D14, "SPERADTONE INFORMATION TECHNOLOGY LIMITED", "SPERADTONE-INFORMATION" }, { 0x001D07, "Shenzhen Sang Fei Consumer Communications Co.,Ltd", "SHENZHEN-SANG-FEI-CONSUMER-COMMUNICATION" }, { 0x001D01, "Neptune Digital", "NEPTUNE-DIGITAL" }, { 0x001CEE, "SHARP Corporation", "SHARP" }, { 0x001CF5, "Wiseblue Technology Limited", "WISEBLUE" }, { 0x001CB9, "KWANG SUNG ELECTRONICS CO., LTD.", "KWANG-SUNG-ELECTRONICS" }, { 0x001CAF, "Plato Networks Inc.", "PLATO-NETWORKS" }, { 0x001CB4, "Iridium Satellite LLC", "IRIDIUM-SATELLITE-LLC" }, { 0x001C9F, "Razorstream, LLC", "RAZORSTREAM-LLC" }, { 0x001C99, "Shunra Software Ltd.", "SHUNRA-SOFTWARE" }, { 0x001C8C, "DIAL TECHNOLOGY LTD.", "DIAL" }, { 0x001C93, "ExaDigm Inc", "EXADIGM" }, { 0x001C87, "Uriver Inc.", "URIVER" }, { 0x001C82, "Genew Technologies", "GENEW-TECHNOLOGIES" }, { 0x001C1A, "Thomas Instrumentation, Inc", "THOMAS-INSTRUMENTATION" }, { 0x001C0E, "Cisco Systems, Inc", "CISCO" }, { 0x001C13, "OPTSYS TECHNOLOGY CO., LTD.", "OPTSYS" }, { 0x001C07, "Cwlinux Limited", "CWLINUX" }, { 0x001C00, "Entry Point, LLC", "ENTRY-POINT-LLC" }, { 0x001BF4, "KENWIN INDUSTRIAL(HK) LTD.", "KENWIN-INDUSTRIAL-HK" }, { 0x001BEF, "Blossoms Digital Technology Co.,Ltd.", "BLOSSOMS-DIGITAL" }, { 0x001BE2, "AhnLab,Inc.", "AHNLAB" }, { 0x001C7D, "Excelpoint Manufacturing Pte Ltd", "EXCELPOINT-MANUFACTURING-PTE" }, { 0x001C73, "Arista Networks, Inc.", "ARISTA-NETWORKS" }, { 0x001C78, "WYPLAY SAS", "WYPLAY-SAS" }, { 0x001C65, "JoeScan, Inc.", "JOESCAN" }, { 0x001C67, "Pumpkin Networks, Inc.", "PUMPKIN-NETWORKS" }, { 0x001C66, "UCAMP CO.,LTD", "UCAMP" }, { 0x001C60, "CSP Frontier Technologies,Inc.", "CSP-FRONTIER-TECHNOLOGIES" }, { 0x001C54, "Hillstone Networks Inc", "HILLSTONE-NETWORKS" }, { 0x001C59, "DEVON IT", "DEVON-IT" }, { 0x001C4F, "MACAB AB", "MACAB-AB" }, { 0x001C37, "Callpod, Inc.", "CALLPOD" }, { 0x001C3C, "Seon Design Inc.", "SEON-DESIGN" }, { 0x001C30, "Mode Lighting (UK ) Ltd.", "MODE-LIGHTING-UK" }, { 0x001C2B, "Alertme.com Limited", "ALERTME-COM" }, { 0x001C2A, "Envisacor Technologies Inc.", "ENVISACOR-TECHNOLOGIES" }, { 0x001C29, "CORE DIGITAL ELECTRONICS CO., LTD", "CORE-DIGITAL-ELECTRONICS" }, { 0x001C24, "Formosa Wireless Systems Corp.", "FORMOSA-WIRELESS" }, { 0x001C1F, "Quest Retail Technology Pty Ltd", "QUEST-RETAIL-PTY" }, { 0x001D97, "Alertus Technologies LLC", "ALERTUS-TECHNOLOGIES-LLC" }, { 0x001D90, "EMCO Flow Systems", "EMCO-FLOW" }, { 0x001D84, "Gateway, Inc.", "GATEWAY" }, { 0x001D67, "AMEC", "AMEC" }, { 0x001A93, "ERCO Leuchten GmbH", "ERCO-LEUCHTEN" }, { 0x001A98, "Asotel Communication Limited Taiwan Branch", "ASOTEL-COMMUNICATION-TAIWAN-BRANCH" }, { 0x001A8E, "3Way Networks Ltd", "3WAY-NETWORKS" }, { 0x001A7D, "cyber-blue(HK)Ltd", "CYBER-BLUE-HK" }, { 0x001A82, "PROBA Building Automation Co.,LTD", "PROBA-BUILDING-AUTOMATION" }, { 0x001A7C, "Hirschmann Multimedia B.V.", "HIRSCHMANN-MULTIMEDIA" }, { 0x001A78, "ubtos", "UBTOS" }, { 0x001A7B, "Teleco, Inc.", "TELECO" }, { 0x001A71, "Diostech Co., Ltd.", "DIOSTECH" }, { 0x001A6C, "Cisco Systems, Inc", "CISCO" }, { 0x001A65, "Seluxit", "SELUXIT" }, { 0x001B7D, "CXR Anderson Jacobson", "CXR-ANDERSON-JACOBSON" }, { 0x001B71, "Telular Corp.", "TELULAR" }, { 0x001B6A, "Powerwave Technologies Sweden AB", "POWERWAVE-TECHNOLOGIES-SWEDEN-AB" }, { 0x001B65, "China Gridcom Co., Ltd", "CHINA-GRIDCOM" }, { 0x001B5E, "BPL Limited", "BPL" }, { 0x001B57, "SEMINDIA SYSTEMS PRIVATE LIMITED", "SEMINDIA-PRIVATE" }, { 0x001B46, "Blueone Technology Co.,Ltd", "BLUEONE" }, { 0x001B4B, "SANION Co., Ltd.", "SANION" }, { 0x001BAD, "iControl Incorporated", "ICONTROL-INCORPORATED" }, { 0x001BA6, "intotech inc.", "INTOTECH" }, { 0x001BA1, "Åmic AB", "ÅMIC-AB" }, { 0x001B93, "JC Decaux SA DNT", "JC-DECAUX-DNT" }, { 0x001B95, "VIDEO SYSTEMS SRL", "VIDEO-SRL" }, { 0x001B9A, "Apollo Fire Detectors Ltd", "APOLLO-FIRE-DETECTORS" }, { 0x001B94, "T.E.M.A. S.p.A.", "T-E-M-A-S-P-A" }, { 0x001B8E, "Hulu Sweden AB", "HULU-SWEDEN-AB" }, { 0x001B89, "EMZA Visual Sense Ltd.", "EMZA-VISUAL-SENSE" }, { 0x001B8A, "2M Electronic A/S", "2M-A/S" }, { 0x001B84, "Scan Engineering Telecom", "SCAN-ENGINEERING-TELECOM" }, { 0x001BD1, "SOGESTMATIC", "SOGESTMATIC" }, { 0x001BD6, "Kelvin Hughes Ltd", "KELVIN-HUGHES" }, { 0x001BCF, "Dataupia Corporation", "DATAUPIA" }, { 0x001BD0, "IDENTEC SOLUTIONS", "IDENTEC-SOLUTIONS" }, { 0x001BCA, "Beijing Run Technology LTD. Company", "BEIJING-RUN-COMPANY" }, { 0x001BC3, "Mobisolution Co.,Ltd", "MOBISOLUTION" }, { 0x001BBE, "ICOP Digital", "ICOP-DIGITAL" }, { 0x001BB4, "Airvod Limited", "AIRVOD" }, { 0x001B14, "Carex Lighting Equipment Factory", "CAREX-LIGHTING-EQUIPMENT-FACTORY" }, { 0x001B0D, "Cisco Systems, Inc", "CISCO" }, { 0x001B06, "Ateliers R. LAUMONIER", "ATELIERS-R-LAUMONIER" }, { 0x001B08, "Danfoss Drives A/S", "DANFOSS-DRIVES-A/S" }, { 0x001B01, "Applied Radio Technologies", "APPLIED-RADIO-TECHNOLOGIES" }, { 0x001AF5, "PENTAONE. CO., LTD.", "PENTAONE" }, { 0x001AFA, "Welch Allyn, Inc.", "WELCH-ALLYN" }, { 0x001AE4, "Medicis Technologies Corporation", "MEDICIS-TECHNOLOGIES" }, { 0x001ADD, "PePWave Ltd", "PEPWAVE" }, { 0x001AD1, "FARGO CO., LTD.", "FARGO" }, { 0x001AD8, "AlsterAero GmbH", "ALSTERAERO" }, { 0x001ACA, "Tilera Corporation", "TILERA" }, { 0x001ACC, "Celestial Semiconductor, Ltd", "CELESTIAL-SEMICONDUCTOR" }, { 0x001AC5, "BreakingPoint Systems, Inc.", "BREAKINGPOINT" }, { 0x001ABB, "Fontal Technology Incorporation", "FONTAL-INCORPORATION" }, { 0x001AC0, "JOYBIEN TECHNOLOGIES CO., LTD.", "JOYBIEN-TECHNOLOGIES" }, { 0x001A60, "Wave Electronics Co.,Ltd.", "WAVE-ELECTRONICS" }, { 0x001A55, "ACA-Digital Corporation", "ACA-DIGITAL" }, { 0x001A5A, "Korea Electric Power Data Network (KDN) Co., Ltd", "KOREA-ELECTRIC-POWER-DATA-NETWORK-KDN" }, { 0x001A4E, "NTI AG / LinMot", "NTI-/-LINMOT" }, { 0x001A53, "Zylaya", "ZYLAYA" }, { 0x001A42, "Techcity Technology co., Ltd.", "TECHCITY" }, { 0x001A47, "Agami Systems, Inc.", "AGAMI" }, { 0x001A3B, "Doah Elecom Inc.", "DOAH-ELECOM" }, { 0x001B3F, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x001B3A, "SIMS Corp.", "SIMS" }, { 0x001B2C, "ATRON electronic GmbH", "ATRON" }, { 0x001B27, "Merlin CSI", "MERLIN-CSI" }, { 0x001B20, "TPine Technology", "TPINE" }, { 0x001B19, "IEEE I&M Society TC9", "IEEE-I-M-SOCIETY-TC9" }, { 0x001AB4, "FFEI Ltd.", "FFEI" }, { 0x001AAF, "BLUSENS TECHNOLOGY", "BLUSENS" }, { 0x001AA8, "Mamiya Digital Imaging Co., Ltd.", "MAMIYA-DIGITAL-IMAGING" }, { 0x001A9F, "A-Link Ltd", "A-LINK" }, { 0x001AA6, "Telefunken Radio Communication Systems GmbH &CO.KG", "TELEFUNKEN-RADIO-COMMUNICATION" }, { 0x00193F, "RDI technology(Shenzhen) Co.,LTD", "RDI-SHENZHEN" }, { 0x001933, "Strix Systems, Inc.", "STRIX" }, { 0x001938, "UMB Communications Co., Ltd.", "UMB-COMMUNICATION" }, { 0x00192D, "Nokia Corporation", "NOKIA" }, { 0x001926, "BitsGen Co., Ltd.", "BITSGEN" }, { 0x001928, "Siemens AG, Transportation Systems", "SIEMENS-TRANSPORTATION" }, { 0x00190E, "Atech Technology Co., Ltd.", "ATECH" }, { 0x001913, "Chuang-Yi Network Equipment Co.Ltd.", "CHUANG-YI-NETWORK-EQUIPMENT" }, { 0x001915, "TECOM Co., Ltd.", "TECOM" }, { 0x00191A, "IRLINK", "IRLINK" }, { 0x001993, "Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea", "CHANGSHU-SWITCHGEAR-MFG-FORMER-CHANGSHU-SWITCHGEA" }, { 0x001998, "SATO CORPORATION", "SATO" }, { 0x00198E, "Oticon A/S", "OTICON-A/S" }, { 0x001980, "Gridpoint Systems", "GRIDPOINT" }, { 0x00197B, "Picotest Corp.", "PICOTEST" }, { 0x001968, "Digital Video Networks(Shanghai) CO. LTD.", "DIGITAL-VIDEO-NETWORKS-SHANGHAI" }, { 0x00196D, "Raybit Systems Korea, Inc", "RAYBIT-KOREA" }, { 0x00196F, "SensoPart GmbH", "SENSOPART" }, { 0x001952, "ACOGITO Co., Ltd", "ACOGITO" }, { 0x001957, "Saafnet Canada Inc.", "SAAFNET-CANADA" }, { 0x001946, "Cianet Industria e Comercio S/A", "CIANET-INDUSTRIA-E-COMERCIO-S/A" }, { 0x001944, "Fossil Partners, L.P.", "FOSSIL-PARTNERS-L-P" }, { 0x001A2F, "Cisco Systems, Inc", "CISCO" }, { 0x001A36, "Aipermon GmbH & Co. KG", "AIPERMON" }, { 0x001A25, "DELTA DORE", "DELTA-DORE" }, { 0x001A17, "Teak Technologies, Inc.", "TEAK-TECHNOLOGIES" }, { 0x001A19, "Computer Engineering Limited", "ENGINEERING" }, { 0x001A12, "Essilor", "ESSILOR" }, { 0x001A0B, "BONA TECHNOLOGY INC.", "BONA" }, { 0x001A06, "OpVista, Inc.", "OPVISTA" }, { 0x0018CD, "Erae Electronics Industry Co., Ltd", "ERAE-ELECTRONICS-INDUSTRY" }, { 0x0018D2, "High-Gain Antennas LLC", "HIGH-GAIN-ANTENNAS-LLC" }, { 0x0018D9, "Santosha Internatonal, Inc", "SANTOSHA-INTERNATONAL" }, { 0x0018C1, "Almitec Informática e Comércio", "ALMITEC-INFORMáTICA-E-COMéRCIO" }, { 0x0018C8, "ISONAS Inc.", "ISONAS" }, { 0x0018BC, "ZAO NVP Bolid", "ZAO-NVP-BOLID" }, { 0x0018B5, "Magna Carta", "MAGNA-CARTA" }, { 0x0018AE, "TVT CO.,LTD", "TVT" }, { 0x001902, "Cambridge Consultants Ltd", "CAMBRIDGE-CONSULTANTS" }, { 0x001907, "Cisco Systems, Inc", "CISCO" }, { 0x0018FD, "Optimal Technologies International Inc.", "OPTIMAL-TECHNOLOGIES" }, { 0x0018F1, "Chunichi Denshi Co.,LTD.", "CHUNICHI-DENSHI" }, { 0x0018EA, "Alltec GmbH", "ALLTEC" }, { 0x0018EC, "Welding Technology Corporation", "WELDING" }, { 0x0018E5, "Adhoco AG", "ADHOCO" }, { 0x0018A2, "XIP Technology AB", "XIP-AB" }, { 0x0018A9, "Ethernet Direct Corporation", "ETHERNET-DIRECT" }, { 0x00189D, "Navcast Inc.", "NAVCAST" }, { 0x001893, "SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD", "SHENZHEN-PHOTON-BROADBAND" }, { 0x001898, "KINGSTATE ELECTRONICS CORPORATION", "KINGSTATE-ELECTRONICS" }, { 0x001891, "Zhongshan General K-mate Electronics Co., Ltd", "ZHONGSHAN-GENERAL-K-MATE-ELECTRONICS" }, { 0x00188C, "Mobile Action Technology Inc.", "MOBILE-ACTION" }, { 0x0019C8, "AnyDATA Corporation", "ANYDATA" }, { 0x0019C3, "Qualitrol", "QUALITROL" }, { 0x0019BE, "Altai Technologies Limited", "ALTAI-TECHNOLOGIES" }, { 0x0019BC, "ELECTRO CHANCE SRL", "ELECTRO-CHANCE-SRL" }, { 0x0019A4, "Austar Technology (hang zhou) Co.,Ltd", "AUSTAR-HANG-ZHOU" }, { 0x0019A9, "Cisco Systems, Inc", "CISCO" }, { 0x0019AB, "Raycom CO ., LTD", "RAYCOM" }, { 0x0019B0, "HanYang System", "HANYANG-SYSTEM" }, { 0x0019FA, "Cable Vision Electronics CO., LTD.", "CABLE-VISION-ELECTRONICS" }, { 0x0019FF, "Finnzymes", "FINNZYMES" }, { 0x0019EC, "Sagamore Systems, Inc.", "SAGAMORE" }, { 0x0019F3, "Cetis, Inc", "CETIS" }, { 0x0019F8, "Embedded Systems Design, Inc.", "EMBEDDED-DESIGN" }, { 0x0019E5, "Lynx Studio Technology, Inc.", "LYNX-STUDIO" }, { 0x0019E7, "Cisco Systems, Inc", "CISCO" }, { 0x0019CD, "Chengdu ethercom information technology Ltd.", "CHENGDU-ETHERCOM-INFORMATION" }, { 0x0019D4, "ICX Technologies", "ICX-TECHNOLOGIES" }, { 0x0019D9, "Zeutschel GmbH", "ZEUTSCHEL" }, { 0x001823, "Delta Electronics, Inc.", "DELTA-ELECTRONICS" }, { 0x001817, "D. E. Shaw Research, LLC", "D-E-SHAW-RESEARCH-LLC" }, { 0x00181E, "GDX Technologies Ltd.", "GDX-TECHNOLOGIES" }, { 0x001812, "Beijing Xinwei Telecom Technology Co., Ltd.", "BEIJING-XINWEI-TELECOM" }, { 0x001806, "Hokkei Industries Co., Ltd.", "HOKKEI-INDUSTRIES" }, { 0x00180B, "Brilliant Telecommunications", "BRILLIANT-TELECOMMUNICATIONS" }, { 0x001805, "Beijing InHand Networking Technology Co.,Ltd.", "BEIJING-INHAND-NETWORKING" }, { 0x0017B8, "NOVATRON CO., LTD.", "NOVATRON" }, { 0x0017BD, "Tibetsystem", "TIBETSYSTEM" }, { 0x0017B1, "ACIST Medical Systems, Inc.", "ACIST-MEDICAL" }, { 0x0017AA, "elab-experience inc.", "ELAB-EXPERIENCE" }, { 0x0017AC, "O'Neil Product Development Inc.", "O-NEIL-PRODUCT-DEVELOPMENT" }, { 0x0017A5, "Ralink Technology Corp", "RALINK" }, { 0x0017A0, "RoboTech srl", "ROBOTECH-SRL" }, { 0x00170F, "Cisco Systems, Inc", "CISCO" }, { 0x001705, "Methode Electronics", "METHODE-ELECTRONICS" }, { 0x00170A, "INEW DIGITAL COMPANY", "INEW-DIGITAL-COMPANY" }, { 0x0016F9, "CETRTA POT, d.o.o., Kranj", "CETRTA-POT-D-O-O-KRANJ" }, { 0x0016F7, "L-3 Communications, Aviation Recorders", "L-3-COMMUNICATION-AVIATION-RECORDERS" }, { 0x0016E6, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x00178F, "NINGBO YIDONG ELECTRONIC CO.,LTD.", "NINGBO-YIDONG" }, { 0x001794, "Cisco Systems, Inc", "CISCO" }, { 0x00178D, "Checkpoint Systems, Inc.", "CHECKPOINT" }, { 0x00177C, "Smartlink Network Systems Limited", "SMARTLINK-NETWORK" }, { 0x001781, "Greystone Data System, Inc.", "GREYSTONE-DATA-SYSTEM" }, { 0x001788, "Philips Lighting BV", "PHILIPS-LIGHTING" }, { 0x00176C, "Pivot3, Inc.", "PIVOT3" }, { 0x001770, "Arti Industrial Electronics Ltd.", "ARTI-INDUSTRIAL-ELECTRONICS" }, { 0x001775, "TTE Germany GmbH", "TTE-GERMANY" }, { 0x001760, "Naito Densei Machida MFG.CO.,LTD", "NAITO-DENSEI-MACHIDA-MFG" }, { 0x001767, "Earforce AS", "EARFORCE-AS" }, { 0x00185A, "uControl, Inc.", "UCONTROL" }, { 0x00185F, "TAC Inc.", "TAC" }, { 0x001861, "Ooma, Inc.", "OOMA" }, { 0x001866, "Leutron Vision", "LEUTRON-VISION" }, { 0x001853, "Atera Networks LTD.", "ATERA-NETWORKS" }, { 0x00184E, "Lianhe Technologies, Inc.", "LIANHE-TECHNOLOGIES" }, { 0x001847, "AceNet Technology Inc.", "ACENET" }, { 0x00183B, "CENITS Co., Ltd.", "CENITS" }, { 0x001840, "3 Phoenix, Inc.", "3-PHOENIX" }, { 0x001842, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001825, "Private", "PRIVATE" }, { 0x00182A, "Taiwan Video & Monitor", "TAIWAN-VIDEO-MONITOR" }, { 0x001836, "Reliance Electric Limited", "RELIANCE-ELECTRIC" }, { 0x001759, "Cisco Systems, Inc", "CISCO" }, { 0x001754, "Arkino HiTOP Corporation Limited", "ARKINO-HITOP" }, { 0x001746, "Freedom9 Inc.", "FREEDOM9" }, { 0x001748, "Neokoros Brasil Ltda", "NEOKOROS-BRASIL-LTDA" }, { 0x00174D, "DYNAMIC NETWORK FACTORY, INC.", "DYNAMIC-NETWORK-FACTORY" }, { 0x001741, "DEFIDEV", "DEFIDEV" }, { 0x001733, "SFR", "SFR" }, { 0x00172E, "FXC Inc.", "FXC" }, { 0x001727, "Thermo Ramsey Italia s.r.l.", "THERMO-RAMSEY-ITALIA-S-R-L" }, { 0x001722, "Hanazeder Electronic GmbH", "HANAZEDER" }, { 0x00171B, "Innovation Lab Corp.", "INNOVATION-LAB" }, { 0x001714, "BR Controls Nederland bv", "BR-CONTROLS-NEDERLAND" }, { 0x001716, "Qno Technology Inc.", "QNO" }, { 0x0017F4, "ZERON ALLIANCE", "ZERON-ALLIANCE" }, { 0x0017F9, "Forcom Sp. z o.o.", "FORCOM-SP-Z-O-O" }, { 0x001800, "UNIGRAND LTD", "UNIGRAND" }, { 0x0017ED, "WooJooIT Ltd.", "WOOJOOIT" }, { 0x0017DA, "Spans Logic", "SPANS-LOGIC" }, { 0x0017E1, "DACOS Technologies Co., Ltd.", "DACOS-TECHNOLOGIES" }, { 0x0017D0, "Opticom Communications, LLC", "OPTICOM-COMMUNICATION-LLC" }, { 0x0017C4, "Quanta Microsystems, INC.", "QUANTA-MICROSYSTEMS" }, { 0x001880, "Maxim Integrated Products", "MAXIM-INTEGRATED-PRODUCTS" }, { 0x00186D, "Zhenjiang Sapphire Electronic Industry CO.", "ZHENJIANG-SAPPHIRE-INDUSTRY" }, { 0x001872, "Expertise Engineering", "EXPERTISE-ENGINEERING" }, { 0x001874, "Cisco Systems, Inc", "CISCO" }, { 0x001879, "dSys", "DSYS" }, { 0x001686, "Karl Storz Imaging", "KARL-STORZ-IMAGING" }, { 0x00167F, "Bluebird Soft Inc.", "BLUEBIRD-SOFT" }, { 0x001681, "Vector Informatik GmbH", "VECTOR-INFORMATIK" }, { 0x001674, "EuroCB (Phils.), Inc.", "EUROCB-PHILS" }, { 0x001672, "Zenway enterprise ltd", "ZENWAY" }, { 0x001666, "Quantier Communication Inc.", "QUANTIER-COMMUNICATION" }, { 0x00165F, "Fairmount Automation", "FAIRMOUNT-AUTOMATION" }, { 0x0016AA, "Kei Communication Technology Inc.", "KEI-COMMUNICATION" }, { 0x0016AF, "Shenzhen Union Networks Equipment Co.,Ltd.", "SHENZHEN-UNION-NETWORKS-EQUIPMENT" }, { 0x0016A5, "Tandberg Storage ASA", "TANDBERG-STORAGE-ASA" }, { 0x001699, "Tonic DVB Marketing Ltd", "TONIC-DVB-MARKETING" }, { 0x0016A0, "Auto-Maskin", "AUTO-MASKIN" }, { 0x001692, "Scientific-Atlanta, Inc.", "SCIENTIFIC-ATLANTA" }, { 0x001694, "Sennheiser Communications A/S", "SENNHEISER-COMMUNICATION-A/S" }, { 0x00168D, "KORWIN CO., Ltd.", "KORWIN" }, { 0x00165A, "Harman Specialty Group", "HARMAN-SPECIALTY-GROUP" }, { 0x001653, "LEGO System A/S IE Electronics Division", "LEGO-SYSTEM-A/S-IE-ELECTRONICS-DIVISION" }, { 0x00164C, "PLANET INT Co., Ltd", "PLANET-INT" }, { 0x001647, "Cisco Systems, Inc", "CISCO" }, { 0x001642, "Pangolin", "PANGOLIN" }, { 0x00163D, "Tsinghua Tongfang Legend Silicon Tech. Co., Ltd.", "TSINGHUA-TONGFANG-LEGEND-SILICON-TECH" }, { 0x001631, "Xteam", "XTEAM" }, { 0x00162F, "Geutebrück GmbH", "GEUTEBRüCK" }, { 0x001630, "Vativ Technologies", "VATIV-TECHNOLOGIES" }, { 0x0015F5, "Sustainable Energy Systems", "SUSTAINABLE-ENERGY" }, { 0x0015F4, "Eventide", "EVENTIDE" }, { 0x0015EE, "Omnex Control Systems", "OMNEX-CONTROL" }, { 0x0015F3, "PELTOR AB", "PELTOR-AB" }, { 0x0015E7, "Quantec Tontechnik", "QUANTEC-TONTECHNIK" }, { 0x0015E2, "Dr.Ing. Herbert Knauer GmbH", "DR-ING-HERBERT-KNAUER" }, { 0x0015DD, "IP Control Systems Ltd.", "IP-CONTROL" }, { 0x0015D8, "Interlink Electronics", "INTERLINK-ELECTRONICS" }, { 0x0015CA, "TeraRecon, Inc.", "TERARECON" }, { 0x001598, "Kolektor group", "KOLEKTOR-GROUP" }, { 0x001593, "U4EA Technologies Inc.", "U4EA-TECHNOLOGIES" }, { 0x00158C, "Liab ApS", "LIAB-APS" }, { 0x001586, "Xiamen Overseas Chinese Electronic Co., Ltd.", "XIAMEN-OVERSEAS-CHINESE" }, { 0x001585, "Aonvision Technolopy Corp.", "AONVISION-TECHNOLOPY" }, { 0x001587, "Takenaka Seisakusho Co.,Ltd", "TAKENAKA-SEISAKUSHO" }, { 0x001580, "U-WAY CORPORATION", "U-WAY" }, { 0x00157B, "Leuze electronic GmbH + Co. KG", "LEUZE-+" }, { 0x001576, "LABiTec - Labor Biomedical Technologies GmbH", "LABITEC---LABOR-BIOMEDICAL-TECHNOLOGIES" }, { 0x00156A, "DG2L Technologies Pvt. Ltd.", "DG2L-TECHNOLOGIES-PVT" }, { 0x00156F, "Xiranet Communications GmbH", "XIRANET-COMMUNICATION" }, { 0x0016DF, "Lundinova AB", "LUNDINOVA-AB" }, { 0x0016DA, "Futronic Technology Co. Ltd.", "FUTRONIC" }, { 0x0016D5, "Synccom Co., Ltd", "SYNCCOM" }, { 0x0016C9, "NAT Seattle, Inc.", "NAT-SEATTLE" }, { 0x0016D0, "ATech elektronika d.o.o.", "ATECH-ELEKTRONIKA-D-O-O" }, { 0x0016BD, "ATI Industrial Automation", "ATI-INDUSTRIAL-AUTOMATION" }, { 0x0016C2, "Avtec Systems Inc", "AVTEC" }, { 0x0016BB, "Law-Chain Computer Technology Co Ltd", "LAW-CHAIN" }, { 0x00162A, "Antik computers & communications s.r.o.", "ANTIK-COMPUTERS-COMMUNICATION-S-R-O" }, { 0x001623, "Interval Media", "INTERVAL-MEDIA" }, { 0x001617, "MSI", "MSI" }, { 0x00161E, "Woojinnet", "WOOJINNET" }, { 0x00160D, "Be Here Corporation", "BE-HERE" }, { 0x001606, "Ideal Industries", "IDEAL-INDUSTRIES" }, { 0x0015FA, "Cisco Systems, Inc", "CISCO" }, { 0x001563, "Cisco Systems, Inc", "CISCO" }, { 0x001557, "Olivetti", "OLIVETTI" }, { 0x00155C, "Dresser Wayne", "DRESSER-WAYNE" }, { 0x00154B, "Wonde Proud Technology Co., Ltd", "WONDE-PROUD" }, { 0x001550, "Nits Technology Inc", "NITS" }, { 0x001545, "SEECODE Co., Ltd.", "SEECODE" }, { 0x00153E, "Q-Matic Sweden AB", "Q-MATIC-SWEDEN-AB" }, { 0x0015BC, "Develco", "DEVELCO" }, { 0x0015B5, "CI Network Corp.", "CI-NETWORK" }, { 0x0015B0, "AUTOTELENET CO.,LTD", "AUTOTELENET" }, { 0x0015AB, "PRO CO SOUND INC", "PRO-SOUND" }, { 0x0015A6, "Digital Electronics Products Ltd.", "DIGITAL-ELECTRONICS-PRODUCTS" }, { 0x00159F, "Terascala, Inc.", "TERASCALA" }, { 0x001532, "Consumer Technologies Group, LLC", "CONSUMER-TECHNOLOGIES-GROUP-LLC" }, { 0x001539, "Technodrive srl", "TECHNODRIVE-SRL" }, { 0x00152B, "Cisco Systems, Inc", "CISCO" }, { 0x00152D, "TenX Networks, LLC", "TENX-NETWORKS-LLC" }, { 0x00152C, "Cisco Systems, Inc", "CISCO" }, { 0x00151F, "Multivision Intelligent Surveillance (Hong Kong) Ltd", "MULTIVISION-INTELLIGENT-SURVEILLANCE-HONG-KONG" }, { 0x00151A, "Hunter Engineering Company", "HUNTER-ENGINEERING-COMPANY" }, { 0x001515, "Leipold+Co.GmbH", "LEIPOLD+" }, { 0x001510, "Techsphere Co., Ltd", "TECHSPHERE" }, { 0x001453, "ADVANTECH TECHNOLOGIES CO.,LTD", "ADVANTECH-TECHNOLOGIES" }, { 0x00144E, "SRISA", "SRISA" }, { 0x001442, "ATTO CORPORATION", "ATTO" }, { 0x001449, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x00143D, "Aevoe Inc.", "AEVOE" }, { 0x00143C, "Rheinmetall Canada Inc.", "RHEINMETALL-CANADA" }, { 0x00143B, "Sensovation AG", "SENSOVATION" }, { 0x001436, "Qwerty Elektronik AB", "QWERTY-ELEKTRONIK-AB" }, { 0x0014AB, "Senhai Electronic Technology Co., Ltd.", "SENHAI" }, { 0x0014B0, "Naeil Community", "NAEIL-COMMUNITY" }, { 0x0014A9, "Cisco Systems, Inc", "CISCO" }, { 0x0014AA, "Ashly Audio, Inc.", "ASHLY-AUDIO" }, { 0x00149D, "Sound ID Inc.", "SOUND-ID" }, { 0x001498, "Viking Design Technology", "VIKING-DESIGN" }, { 0x00148A, "Elin Ebg Traction Gmbh", "ELIN-EBG-TRACTION" }, { 0x001491, "Daniels Electronics Ltd. dbo Codan Rado Communications", "DANIELS-ELECTRONICS-DBO-CODAN-RADO-COMMUNICATION" }, { 0x001485, "Giga-Byte", "GIGA-BYTE" }, { 0x00147E, "InnerWireless", "INNERWIRELESS" }, { 0x001477, "Nertec Inc.", "NERTEC" }, { 0x001472, "China Broadband Wireless IP Standard Group", "CHINA-BROADBAND-WIRELESS-IP-STANDARD-GROUP" }, { 0x001466, "Kleinhenz Elektronik GmbH", "KLEINHENZ-ELEKTRONIK" }, { 0x00146B, "Anagran, Inc.", "ANAGRAN" }, { 0x00145F, "ADITEC CO. LTD", "ADITEC" }, { 0x001458, "HS Automatic ApS", "HS-AUTOMATIC-APS" }, { 0x0014E6, "AIM Infrarotmodule GmbH", "AIM-INFRAROTMODULE" }, { 0x0014E0, "LET'S Corporation", "LET-S" }, { 0x0014D4, "K Technology Corporation", "K" }, { 0x0014D9, "IP Fabrics, Inc.", "IP-FABRICS" }, { 0x0014CD, "DigitalZone Co., Ltd.", "DIGITALZONE" }, { 0x0014C1, "U.S. Robotics Corporation", "U-S-ROBOTICS" }, { 0x0014C6, "Quixant Ltd", "QUIXANT" }, { 0x0014BA, "Carvers SA de CV", "CARVERS-DE-CV" }, { 0x0014B5, "PHYSIOMETRIX,INC", "PHYSIOMETRIX" }, { 0x0013C7, "IONOS Co.,Ltd.", "IONOS" }, { 0x0013C0, "Trix Tecnologia Ltda.", "TRIX-TECNOLOGIA-LTDA" }, { 0x0013B6, "Sling Media, Inc.", "SLING-MEDIA" }, { 0x0013AF, "NUMA Technology,Inc.", "NUMA" }, { 0x0013B0, "Jablotron", "JABLOTRON" }, { 0x0013AA, "ALS & TEC Ltd.", "ALS-TEC" }, { 0x0013A3, "Siemens Com CPE Devices", "SIEMENS-COM-CPE-DEVICES" }, { 0x00139E, "Ciara Technologies Inc.", "CIARA-TECHNOLOGIES" }, { 0x001502, "BETA tech", "BETA-TECH" }, { 0x001509, "Plus Technology Co., Ltd", "PLUS" }, { 0x0014FD, "Thecus Technology Corp.", "THECUS" }, { 0x0014EF, "TZero Technologies, Inc.", "TZERO-TECHNOLOGIES" }, { 0x0014F1, "Cisco Systems, Inc", "CISCO" }, { 0x0014F0, "Business Security OL AB", "BUSINESS-SECURITY-OL-AB" }, { 0x0014EA, "S Digm Inc. (Safe Paradigm Inc.)", "S-DIGM-SAFE-PARADIGM" }, { 0x0014E5, "Alticast", "ALTICAST" }, { 0x001423, "J-S Co. NEUROCOM", "J-S-NEUROCOM" }, { 0x001419, "SIDSA", "SIDSA" }, { 0x001412, "S-TEC electronics AG", "S-TEC-ELECTRONICS" }, { 0x001409, "MAGNETI MARELLI S.E. S.p.A.", "MAGNETI-MARELLI-S-E-S-P-A" }, { 0x00140A, "WEPIO Co., Ltd.", "WEPIO" }, { 0x0013FD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0013F8, "Dex Security Solutions", "DEX-SECURITY-SOLUTIONS" }, { 0x0013F1, "AMOD Technology Co., Ltd.", "AMOD" }, { 0x0013F7, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x0013E7, "Halcro", "HALCRO" }, { 0x0013DB, "SHOEI Electric Co.,Ltd", "SHOEI-ELECTRIC" }, { 0x0013CC, "Tall Maple Systems", "TALL-MAPLE" }, { 0x001284, "Lab33 Srl", "LAB33-SRL" }, { 0x00127E, "Digital Lifestyles Group, Inc.", "DIGITAL-LIFESTYLES-GROUP" }, { 0x001277, "Korenix Technologies Co., Ltd.", "KORENIX-TECHNOLOGIES" }, { 0x001272, "Redux Communications Ltd.", "REDUX-COMMUNICATION" }, { 0x001271, "Measurement Computing Corp", "MEASUREMENT-COMPUTING" }, { 0x00126B, "Ascalade Communications Limited", "ASCALADE-COMMUNICATION" }, { 0x001264, "daum electronic gmbh", "DAUM" }, { 0x00125A, "Microsoft Corporation", "MICROSOFT" }, { 0x00125F, "AWIND Inc.", "AWIND" }, { 0x001255, "NetEffect Incorporated", "NETEFFECT-INCORPORATED" }, { 0x00124E, "XAC AUTOMATION CORP.", "XAC-AUTOMATION" }, { 0x001248, "EMC Corporation (Kashya)", "EMC-KASHYA" }, { 0x001242, "Millennial Net", "MILLENNIAL-NET" }, { 0x001236, "ConSentry Networks", "CONSENTRY-NETWORKS" }, { 0x00123B, "KeRo Systems ApS", "KERO-APS" }, { 0x001368, "Saab Danmark A/S", "SAAB-DANMARK-A/S" }, { 0x00135C, "OnSite Systems, Inc.", "ONSITE" }, { 0x001355, "TOMEN Cyber-business Solutions, Inc.", "TOMEN-CYBER-BUSINESS-SOLUTIONS" }, { 0x001356, "FLIR Radiation Inc", "FLIR-RADIATION" }, { 0x001350, "Silver Spring Networks, Inc", "SILVER-SPRING-NETWORKS" }, { 0x001344, "Fargo Electronics Inc.", "FARGO-ELECTRONICS" }, { 0x001343, "Matsushita Electronic Components (Europe) GmbH", "MATSUSHITA-COMPONENTS-EUROPE" }, { 0x00133D, "Micro Memory Curtiss Wright Co", "MICRO-MEMORY-CURTISS-WRIGHT" }, { 0x00138B, "Phantom Technologies LLC", "PHANTOM-TECHNOLOGIES-LLC" }, { 0x001390, "Termtek Computer Co., Ltd", "TERMTEK" }, { 0x001376, "Tabor Electronics Ltd.", "TABOR-ELECTRONICS" }, { 0x00137B, "Movon Corporation", "MOVON" }, { 0x001382, "Cetacea Networks Corporation", "CETACEA-NETWORKS" }, { 0x001387, "27M Technologies AB", "27M-TECHNOLOGIES-AB" }, { 0x00136F, "PacketMotion, Inc.", "PACKETMOTION" }, { 0x001375, "American Security Products Co.", "AMERICAN-SECURITY-PRODUCTS" }, { 0x001363, "Verascape, Inc.", "VERASCAPE" }, { 0x0012FA, "THX LTD", "THX" }, { 0x001301, "IronGate S.L.", "IRONGATE-S-L" }, { 0x001307, "Paravirtual Corporation", "PARAVIRTUAL" }, { 0x0012F5, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0012EB, "PDH Solutions, LLC", "PDH-SOLUTIONS-LLC" }, { 0x0012DE, "Radio Components Sweden AB", "RADIO-COMPONENTS-SWEDEN-AB" }, { 0x0012DD, "Shengqu Information Technology (Shanghai) Co., Ltd.", "SHENGQU-INFORMATION-SHANGHAI" }, { 0x0012E4, "ZIEHL industrie-electronik GmbH + Co KG", "ZIEHL-INDUSTRIE-ELECTRONIK-+" }, { 0x0012AF, "ELPRO Technologies", "ELPRO-TECHNOLOGIES" }, { 0x0012A8, "intec GmbH", "INTEC" }, { 0x0012A2, "VITA", "VITA" }, { 0x0012A1, "BluePacket Communications Co., Ltd.", "BLUEPACKET-COMMUNICATION" }, { 0x00129C, "Yulinet", "YULINET" }, { 0x001290, "KYOWA Electric & Machinery Corp.", "KYOWA-ELECTRIC-MACHINERY" }, { 0x001295, "Aiware Inc.", "AIWARE" }, { 0x00132A, "Sitronics Telecom Solutions", "SITRONICS-TELECOM-SOLUTIONS" }, { 0x001331, "CellPoint Connect", "CELLPOINT-CONNECT" }, { 0x001336, "Tianjin 712 Communication Broadcasting co., ltd.", "TIANJIN-712-COMMUNICATION-BROADCASTING" }, { 0x001324, "Schneider Electric Ultra Terminal", "SCHNEIDER-ELECTRIC-ULTRA-TERMINAL" }, { 0x001314, "Asiamajor Inc.", "ASIAMAJOR" }, { 0x001319, "Cisco Systems, Inc", "CISCO" }, { 0x00131A, "Cisco Systems, Inc", "CISCO" }, { 0x00130D, "GALILEO AVIONICA", "GALILEO-AVIONICA" }, { 0x001308, "Nuvera Fuel Cells", "NUVERA-FUEL-CELLS" }, { 0x00122F, "Sanei Electric Inc.", "SANEI-ELECTRIC" }, { 0x001235, "Andrew Corporation", "ANDREW" }, { 0x00122B, "Virbiage Pty Ltd", "VIRBIAGE-PTY" }, { 0x001212, "PLUS Corporation", "PLUS" }, { 0x0012D8, "International Games System Co., Ltd.", "GAMES-SYSTEM" }, { 0x0012CB, "CSS Inc.", "CSS" }, { 0x0012C5, "V-Show Technology (China) Co.,Ltd", "V-SHOW-CHINA" }, { 0x0012CC, "Bitatek CO., LTD", "BITATEK" }, { 0x0012B4, "Work Microwave GmbH", "WORK-MICROWAVE" }, { 0x0012BB, "Telecommunications Industry Association TR-41 Committee", "TELECOMMUNICATIONS-INDUSTRY-ASSOCIATION-TR-41-COMMITTEE" }, { 0x001206, "iQuest (NZ) Ltd", "IQUEST-NZ" }, { 0x00120B, "Chinasys Technologies Limited", "CHINASYS-TECHNOLOGIES" }, { 0x00120C, "CE-Infosys Pte Ltd", "CE-INFOSYS-PTE" }, { 0x0011FF, "Digitro Tecnologia Ltda", "DIGITRO-TECNOLOGIA-LTDA" }, { 0x0011FA, "Rane Corporation", "RANE" }, { 0x0011F0, "Wideful Limited", "WIDEFUL" }, { 0x0011EF, "Conitec Datensysteme GmbH", "CONITEC-DATENSYSTEME" }, { 0x0011E9, "STARNEX CO., LTD.", "STARNEX" }, { 0x001187, "Category Solutions, Inc", "CATEGORY-SOLUTIONS" }, { 0x001182, "IMI Norgren Ltd", "IMI-NORGREN" }, { 0x001181, "InterEnergy Co.Ltd,", "INTERENERGY" }, { 0x00117B, "Büchi Labortechnik AG", "BüCHI-LABORTECHNIK" }, { 0x00116F, "Netforyou Co., LTD.", "NETFORYOU" }, { 0x001168, "HomeLogic LLC", "HOMELOGIC-LLC" }, { 0x00115E, "ProMinent Dosiertechnik GmbH", "PROMINENT-DOSIERTECHNIK" }, { 0x001157, "Oki Electric Industry Co., Ltd.", "OKI-ELECTRIC-INDUSTRY" }, { 0x000FB2, "Broadband Pacenet (India) Pvt. Ltd.", "BROADBAND-PACENET-INDIA-PVT" }, { 0x000FA5, "BWA Technology GmbH", "BWA" }, { 0x000FB1, "Cognio Inc.", "COGNIO" }, { 0x000FAC, "IEEE 802.11", "IEEE-802-11" }, { 0x000F9C, "Panduit Corp", "PANDUIT" }, { 0x000FA0, "CANON KOREA BUSINESS SOLUTIONS INC.", "CANON-KOREA-BUSINESS-SOLUTIONS" }, { 0x000F97, "Avanex Corporation", "AVANEX" }, { 0x000F8A, "WideView", "WIDEVIEW" }, { 0x000F89, "Winnertec System Co., Ltd.", "WINNERTEC-SYSTEM" }, { 0x000F90, "Cisco Systems, Inc", "CISCO" }, { 0x000FD7, "Harman Music Group", "HARMAN-MUSIC-GROUP" }, { 0x000FD1, "Applied Wireless Identifications Group, Inc.", "APPLIED-WIRELESS-IDENTIFICATIONS-GROUP" }, { 0x000FD2, "EWA Technologies, Inc.", "EWA-TECHNOLOGIES" }, { 0x000FC4, "NST co.,LTD.", "NST" }, { 0x000FCB, "3Com Ltd", "3COM" }, { 0x000FBF, "DGT Sp. z o.o.", "DGT-SP-Z-O-O" }, { 0x000FB8, "CallURL Inc.", "CALLURL" }, { 0x0011DD, "FROMUS TEC. Co., Ltd.", "FROMUS-TEC" }, { 0x0011E2, "Hua Jung Components Co., Ltd.", "HUA-JUNG-COMPONENTS" }, { 0x0011CF, "Thrane & Thrane A/S", "THRANE-THRANE-A/S" }, { 0x0011D6, "HandEra, Inc.", "HANDERA" }, { 0x0011D0, "Tandberg Data ASA", "TANDBERG-DATA-ASA" }, { 0x0011CA, "Long Range Systems, Inc.", "LONG-RANGE" }, { 0x0011C3, "Transceiving System Technology Corporation", "TRANSCEIVING-SYSTEM" }, { 0x0011B7, "Octalix B.V.", "OCTALIX" }, { 0x0011BE, "AGP Telecom Co. Ltd", "AGP-TELECOM" }, { 0x0011BD, "Bombardier Transportation", "BOMBARDIER-TRANSPORTATION" }, { 0x001105, "Sunplus Technology Co., Ltd.", "SUNPLUS" }, { 0x00110C, "Atmark Techno, Inc.", "ATMARK-TECHNO" }, { 0x000FF9, "Valcretec, Inc.", "VALCRETEC" }, { 0x000FFA, "Optinel Systems, Inc.", "OPTINEL" }, { 0x000FFF, "Control4", "CONTROL4" }, { 0x000FF1, "nex-G Systems Pte.Ltd", "NEX-G-PTE" }, { 0x000FE4, "Pantech Co.,Ltd", "PANTECH" }, { 0x000FEA, "Giga-Byte Technology Co.,LTD.", "GIGA-BYTE" }, { 0x000FE3, "Damm Cellular Systems A/S", "DAMM-CELLULAR-A/S" }, { 0x0011AB, "TRUSTABLE TECHNOLOGY CO.,LTD.", "TRUSTABLE" }, { 0x0011B0, "Fortelink Inc.", "FORTELINK" }, { 0x0011A4, "JStream Technologies Inc.", "JSTREAM-TECHNOLOGIES" }, { 0x001198, "Prism Media Products Limited", "PRISM-MEDIA-PRODUCTS" }, { 0x00119D, "Diginfo Technology Corporation", "DIGINFO" }, { 0x00119E, "Solectron Brazil", "SOLECTRON-BRAZIL" }, { 0x00118E, "Halytech Mace", "HALYTECH-MACE" }, { 0x001193, "Cisco Systems, Inc", "CISCO" }, { 0x001152, "Eidsvoll Electronics AS", "EIDSVOLL-ELECTRONICS-AS" }, { 0x00114F, "US Digital Television, Inc", "US-DIGITAL-TELEVISION" }, { 0x001149, "Proliphix Inc.", "PROLIPHIX" }, { 0x001142, "e-SMARTCOM INC.", "E-SMARTCOM" }, { 0x00113D, "KN SOLTEC CO.,LTD.", "KN-SOLTEC" }, { 0x00113C, "Micronas GmbH", "MICRONAS" }, { 0x001136, "Goodrich Sensor Systems", "GOODRICH-SENSOR" }, { 0x00112C, "IZT GmbH", "IZT" }, { 0x001130, "Allied Telesis (Hong Kong) Ltd.", "ALLIED-TELESIS-HONG-KONG" }, { 0x00111E, "EPSG (Ethernet Powerlink Standardization Group)", "EPSG-ETHERNET-POWERLINK-STANDARDIZATION-GROUP" }, { 0x00111F, "Doremi Labs, Inc.", "DOREMI-LABS" }, { 0x001112, "Honeywell CMSS", "HONEYWELL-CMSS" }, { 0x001118, "BLX IC Design Corp., Ltd.", "BLX-IC-DESIGN" }, { 0x000F58, "Adder Technology Limited", "ADDER" }, { 0x000F52, "YORK Refrigeration, Marine & Controls", "YORK-REFRIGERATION-MARINE-CONTROLS" }, { 0x000F57, "CABLELOGIC Co., Ltd.", "CABLELOGIC" }, { 0x000F45, "Stretch, Inc.", "STRETCH" }, { 0x000F46, "SINAR AG", "SINAR" }, { 0x000F4B, "Oracle Corporation (possible Virtual Iron VM)", "ORACLE-VIRTUAL" }, { 0x000F37, "Xambala Incorporated", "XAMBALA-INCORPORATED" }, { 0x000F3F, "Big Bear Networks", "BIG-BEAR-NETWORKS" }, { 0x000F3B, "Fuji System Machines Co., Ltd.", "FUJI-SYSTEM-MACHINES" }, { 0x000F31, "Allied Vision Technologies Canada Inc", "ALLIED-VISION-TECHNOLOGIES-CANADA" }, { 0x000F32, "Lootom Telcovideo Network Wuxi Co Ltd", "LOOTOM-TELCOVIDEO-NETWORK-WUXI" }, { 0x000F2B, "GREENBELL SYSTEMS", "GREENBELL" }, { 0x000E98, "HME Clear-Com LTD.", "HME-CLEAR-COM" }, { 0x000E93, "Milénio 3 Sistemas Electrónicos, Lda.", "MILéNIO-3-SISTEMAS-ELECTRóNICOS-LDA" }, { 0x000E8C, "Siemens AG A&D ET", "SIEMENS-A-D-ET" }, { 0x000E86, "Alcatel North America", "ALCATEL-NORTH-AMERICA" }, { 0x000E80, "Thomson Technology Inc", "THOMSON" }, { 0x000E85, "Catalyst Enterprises, Inc.", "CATALYST-ENTERPRISES" }, { 0x000E74, "Solar Telecom. Tech", "SOLAR-TELECOM-TECH" }, { 0x000E79, "Ample Communications Inc.", "AMPLE-COMMUNICATION" }, { 0x000F24, "Cisco Systems, Inc", "CISCO" }, { 0x000F12, "Panasonic Europe Ltd.", "PANASONIC-EUROPE" }, { 0x000F18, "Industrial Control Systems", "INDUSTRIAL-CONTROL" }, { 0x000F11, "Prodrive B.V.", "PRODRIVE" }, { 0x000F0C, "SYNCHRONIC ENGINEERING", "SYNCHRONIC-ENGINEERING" }, { 0x000EFF, "Megasolution,Inc.", "MEGASOLUTION" }, { 0x000F00, "Legra Systems, Inc.", "LEGRA" }, { 0x000F05, "3B SYSTEM INC.", "3B-SYSTEM" }, { 0x000F7D, "Xirrus", "XIRRUS" }, { 0x000F84, "Astute Networks, Inc.", "ASTUTE-NETWORKS" }, { 0x000F77, "DENTUM CO.,LTD", "DENTUM" }, { 0x000F71, "Sanmei Electronics Co.,Ltd", "SANMEI-ELECTRONICS" }, { 0x000F78, "Datacap Systems Inc", "DATACAP" }, { 0x000F65, "icube Corp.", "ICUBE" }, { 0x000F5E, "Veo", "VEO" }, { 0x000E71, "Gemstar Technology Development Ltd.", "GEMSTAR-DEVELOPMENT" }, { 0x000E6C, "Device Drivers Limited", "DEVICE-DRIVERS" }, { 0x000E65, "TransCore", "TRANSCORE" }, { 0x000E5F, "activ-net GmbH & Co. KG", "ACTIV-NET" }, { 0x000E60, "360SUN Digital Broadband Corporation", "360SUN-DIGITAL-BROADBAND" }, { 0x000E52, "Optium Corporation", "OPTIUM" }, { 0x000E46, "Niigata Seimitsu Co.,Ltd.", "NIIGATA-SEIMITSU" }, { 0x000E4D, "Numesa Inc.", "NUMESA" }, { 0x000E3F, "Soronti, Inc.", "SORONTI" }, { 0x000EC5, "Digital Multitools Inc", "DIGITAL-MULTITOOLS" }, { 0x000EB8, "Iiga co.,Ltd", "IIGA" }, { 0x000EB7, "Knovative, Inc.", "KNOVATIVE" }, { 0x000EBE, "B&B Electronics Manufacturing Co.", "B-B-ELECTRONICS-MANUFACTURING" }, { 0x000EB2, "Micro-Research Finland Oy", "MICRO-RESEARCH-FINLAND-OY" }, { 0x000EAB, "Cray Inc", "CRAY" }, { 0x000EA5, "BLIP Systems", "BLIP" }, { 0x000E9F, "TEMIC SDS GmbH", "TEMIC-SDS" }, { 0x000E0A, "SAKUMA DESIGN OFFICE", "SAKUMA-DESIGN-OFFICE" }, { 0x000E12, "Adaptive Micro Systems Inc.", "ADAPTIVE-MICRO" }, { 0x000E04, "CMA/Microdialysis AB", "CMA/MICRODIALYSIS-AB" }, { 0x000DF7, "Space Dynamics Lab", "SPACE-DYNAMICS-LAB" }, { 0x000DFE, "Hauppauge Computer Works, Inc.", "HAUPPAUGE-WORKS" }, { 0x000DF1, "IONIX INC.", "IONIX" }, { 0x000DEB, "CompXs Limited", "COMPXS" }, { 0x000DF2, "Private", "PRIVATE" }, { 0x000DE4, "DIGINICS, Inc.", "DIGINICS" }, { 0x000EF9, "REA Elektronik GmbH", "REA-ELEKTRONIK" }, { 0x000EF2, "Infinico Corporation", "INFINICO" }, { 0x000EE0, "Mcharge", "MCHARGE" }, { 0x000EDF, "PLX Technology", "PLX" }, { 0x000EE6, "Adimos Systems LTD", "ADIMOS" }, { 0x000ECA, "WTSS Inc", "WTSS" }, { 0x000ED1, "Osaka Micro Computer.", "OSAKA-MICRO" }, { 0x000EDA, "C-TECH UNITED CORP.", "C-TECH-UNITED" }, { 0x000ED6, "Cisco Systems, Inc", "CISCO" }, { 0x000E37, "Harms & Wende GmbH & Co.KG", "HARMS-WENDE" }, { 0x000E38, "Cisco Systems, Inc", "CISCO" }, { 0x000E31, "Olympus Soft Imaging Solutions GmbH", "OLYMPUS-SOFT-IMAGING-SOLUTIONS" }, { 0x000E2A, "Private", "PRIVATE" }, { 0x000E25, "Hannae Technology Co., Ltd", "HANNAE" }, { 0x000E18, "MyA Technology", "MYA" }, { 0x000E17, "Private", "PRIVATE" }, { 0x000E0E, "ESA elettronica S.P.A.", "ESA-ELETTRONICA-S-P-A" }, { 0x000C7E, "Tellium Incorporated", "TELLIUM-INCORPORATED" }, { 0x000C86, "Cisco Systems, Inc", "CISCO" }, { 0x000C81, "Schneider Electric (Australia) ", "SCHNEIDER-ELECTRIC-AUSTRALIA" }, { 0x000C72, "Tempearl Industrial Co., Ltd.", "TEMPEARL-INDUSTRIAL" }, { 0x000C79, "Extel Communications P/L", "EXTEL-COMMUNICATION-P/L" }, { 0x000C66, "Pronto Networks Inc", "PRONTO-NETWORKS" }, { 0x000C6B, "Kurz Industrie-Elektronik GmbH", "KURZ-INDUSTRIE-ELEKTRONIK" }, { 0x000C6D, "Edwards Ltd.", "EDWARDS" }, { 0x000DDF, "Japan Image & Network Inc.", "JAPAN-IMAGE-NETWORK" }, { 0x000DD2, "Simrad Optronics ASA", "SIMRAD-OPTRONICS-ASA" }, { 0x000DD1, "Stryker Corporation", "STRYKER" }, { 0x000DD8, "BBN", "BBN" }, { 0x000DCC, "NEOSMART Corp.", "NEOSMART" }, { 0x000DBF, "TekTone Sound & Signal Mfg., Inc.", "TEKTONE-SOUND-SIGNAL-MFG" }, { 0x000DC0, "Spagat AS", "SPAGAT-AS" }, { 0x000DC5, "EchoStar Global B.V. ", "ECHOSTAR-GLOBAL" }, { 0x000DB9, "PC Engines GmbH", "PC-ENGINES" }, { 0x000D8C, "Shanghai Wedone Digital Ltd. CO.", "SHANGHAI-WEDONE-DIGITAL" }, { 0x000D8B, "T&D Corporation", "T-D" }, { 0x000D85, "Tapwave, Inc.", "TAPWAVE" }, { 0x000D86, "Huber + Suhner AG", "HUBER-+-SUHNER" }, { 0x000D7E, "Axiowave Networks, Inc.", "AXIOWAVE-NETWORKS" }, { 0x000D78, "Engineering & Security", "ENGINEERING-SECURITY" }, { 0x000D77, "FalconStor Software", "FALCONSTOR-SOFTWARE" }, { 0x000D6B, "Mita-Teknik A/S", "MITA-TEKNIK-A/S" }, { 0x000D65, "Cisco Systems, Inc", "CISCO" }, { 0x000D5F, "Minds Inc", "MINDS" }, { 0x000D66, "Cisco Systems, Inc", "CISCO" }, { 0x000CB1, "Salland Engineering (Europe) BV", "SALLAND-ENGINEERING-EUROPE" }, { 0x000CB7, "Nanjing Huazhuo Electronics Co., Ltd.", "NANJING-HUAZHUO-ELECTRONICS" }, { 0x000CBE, "Innominate Security Technologies AG", "INNOMINATE-SECURITY-TECHNOLOGIES" }, { 0x000CC3, "BeWAN systems", "BEWAN" }, { 0x000CB2, "UNION co., ltd.", "UNION" }, { 0x000CA5, "Naman NZ LTd", "NAMAN-NZ" }, { 0x000CAC, "Citizen Watch Co., Ltd.", "CITIZEN-WATCH" }, { 0x000C94, "United Electronic Industries, Inc. (EUI)", "UNITED-INDUSTRIES-EUI" }, { 0x000C99, "HITEL LINK Co.,Ltd", "HITEL-LINK" }, { 0x000CA0, "StorCase Technology, Inc.", "STORCASE" }, { 0x000C8D, "MATRIX VISION GmbH", "MATRIX-VISION" }, { 0x000C92, "WolfVision Gmbh", "WOLFVISION" }, { 0x000D32, "DispenseSource, Inc.", "DISPENSESOURCE" }, { 0x000D31, "Compellent Technologies, Inc.", "COMPELLENT-TECHNOLOGIES" }, { 0x000D25, "SANDEN CORPORATION", "SANDEN" }, { 0x000D1F, "AV Digital", "AV-DIGITAL" }, { 0x000D19, "ROBE Show lighting", "ROBE-SHOW-LIGHTING" }, { 0x000D20, "ASAHIKASEI TECHNOSYSTEM CO.,LTD.", "ASAHIKASEI-TECHNOSYSTEM" }, { 0x000D0D, "ITSupported, LLC", "ITSUPPORTED-LLC" }, { 0x000D12, "AXELL Corporation", "AXELL" }, { 0x000DB2, "Ammasso, Inc.", "AMMASSO" }, { 0x000DAD, "Dataprobe, Inc.", "DATAPROBE" }, { 0x000D9E, "TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd.", "TOKUDEN-OHIZUMI-SEISAKUSYO" }, { 0x000DA5, "Fabric7 Systems, Inc", "FABRIC7" }, { 0x000D99, "Orbital Sciences Corp.; Launch Systems Group", "ORBITAL-SCIENCES-LAUNCH-GROUP" }, { 0x000D58, "Private", "PRIVATE" }, { 0x000D4C, "Outline Electronics Ltd.", "OUTLINE-ELECTRONICS" }, { 0x000D53, "Beijing 5w Communication Corp.", "BEIJING-5W-COMMUNICATION" }, { 0x000D3F, "VTI Instruments Corporation", "VTI-INSTRUMENTS" }, { 0x000D44, "Audio BU - Logitech", "AUDIO-BU---LOGITECH" }, { 0x000D38, "NISSIN INC.", "NISSIN" }, { 0x000CD1, "SFOM Technology Corp.", "SFOM" }, { 0x000CD6, "PARTNER TECH", "PARTNER-TECH" }, { 0x000CDD, "AOS technologies AG", "AOS-TECHNOLOGIES" }, { 0x000CCA, "HGST a Western Digital Company", "HGST-A-WESTERN-DIGITAL-COMPANY" }, { 0x000CC4, "Tiptel AG", "TIPTEL" }, { 0x000D00, "Seaway Networks Inc.", "SEAWAY-NETWORKS" }, { 0x000D06, "Compulogic Limited", "COMPULOGIC" }, { 0x000CFA, "Digital Systems Corp", "DIGITAL" }, { 0x000CFF, "MRO-TEK LIMITED", "MRO-TEK" }, { 0x000CED, "Real Digital Media", "REAL-DIGITAL-MEDIA" }, { 0x000CEE, "jp-embedded", "JP-EMBEDDED" }, { 0x000CF3, "CALL IMAGE SA", "CALL-IMAGE" }, { 0x000CE7, "MediaTek Inc.", "MEDIATEK" }, { 0x000CE3, "Option International N.V.", "OPTION-N-V" }, { 0x000B01, "DAIICHI ELECTRONICS CO., LTD.", "DAIICHI-ELECTRONICS" }, { 0x000AF0, "SHIN-OH ELECTRONICS CO., LTD. R&D", "SHIN-OH-ELECTRONICS-R-D" }, { 0x000AF5, "Airgo Networks, Inc.", "AIRGO-NETWORKS" }, { 0x000AEC, "Koatsu Gas Kogyo Co., Ltd.", "KOATSU-GAS-KOGYO" }, { 0x000AE5, "ScottCare Corporation", "SCOTTCARE" }, { 0x000AE7, "ELIOP S.A.", "ELIOP" }, { 0x000AE0, "Fujitsu Softek", "FUJITSU-SOFTEK" }, { 0x000AC8, "ZPSYS CO.,LTD. (Planning&Management)", "ZPSYS-PLANNING-MANAGEMENT" }, { 0x000ACD, "Sunrich Technology Limited", "SUNRICH" }, { 0x000AD4, "CoreBell Systems Inc.", "COREBELL" }, { 0x000B5E, "Audio Engineering Society Inc.", "AUDIO-ENGINEERING-SOCIETY" }, { 0x000B63, "Kaleidescape", "KALEIDESCAPE" }, { 0x000B55, "ADInstruments", "ADINSTRUMENTS" }, { 0x000B5A, "HyperEdge", "HYPEREDGE" }, { 0x000B52, "JOYMAX ELECTRONICS CO. LTD.", "JOYMAX-ELECTRONICS" }, { 0x000B4D, "Emuzed", "EMUZED" }, { 0x000B41, "Ing. Büro Dr. Beutlhauser", "ING-BüRO-DR-BEUTLHAUSER" }, { 0x000B46, "Cisco Systems, Inc", "CISCO" }, { 0x000B33, "Vivato Technologies", "VIVATO-TECHNOLOGIES" }, { 0x000B3A, "QuStream Corporation", "QUSTREAM" }, { 0x000B3F, "Anthology Solutions Inc.", "ANTHOLOGY-SOLUTIONS" }, { 0x000B95, "eBet Gaming Systems Pty Ltd", "EBET-GAMING-PTY" }, { 0x000B8F, "AKITA ELECTRONICS SYSTEMS CO.,LTD.", "AKITA-ELECTRONICS" }, { 0x000B89, "Top Global Technology, Ltd.", "TOP-GLOBAL" }, { 0x000B8E, "Ascent Corporation", "ASCENT" }, { 0x000B90, "ADVA Optical Networking Ltd.", "ADVA-OPTICAL-NETWORKING" }, { 0x000B7D, "SOLOMON EXTREME INTERNATIONAL LTD.", "SOLOMON-EXTREME" }, { 0x000B82, "Grandstream Networks, Inc.", "GRANDSTREAM-NETWORKS" }, { 0x000B6F, "Media Streaming Networks Inc", "MEDIA-STREAMING-NETWORKS" }, { 0x000B76, "ET&T Technology Co. Ltd.", "ET-T" }, { 0x000AC1, "Futuretel", "FUTURETEL" }, { 0x000AC6, "Overture Networks.", "OVERTURE-NETWORKS" }, { 0x000AAE, "Rosemount Process Analytical", "ROSEMOUNT-PROCESS-ANALYTICAL" }, { 0x000AB3, "Fa. GIRA", "FA-GIRA" }, { 0x000AB5, "Digital Electronic Network", "DIGITAL-NETWORK" }, { 0x000ABA, "Arcon Technology Limited", "ARCON" }, { 0x000AA2, "SYSTEK INC.", "SYSTEK" }, { 0x000AA7, "FEI Electron Optics", "FEI-ELECTRON-OPTICS" }, { 0x000A8F, "Aska International Inc.", "ASKA" }, { 0x000A94, "ShangHai cellink CO., LTD", "SHANGHAI-CELLINK" }, { 0x000C4E, "Winbest Technology CO,LT", "WINBEST-LT" }, { 0x000C53, "Private", "PRIVATE" }, { 0x000C5A, "IBSmm Embedded Electronics Consulting", "IBSMM-EMBEDDED-ELECTRONICS-CONSULTING" }, { 0x000C5F, "Avtec, Inc.", "AVTEC" }, { 0x000C47, "SK Teletech(R&D Planning Team)", "SK-TELETECH-R-D-PLANNING-TEAM" }, { 0x000C4C, "Arcor AG&Co.", "ARCOR" }, { 0x000C3E, "Crest Audio", "CREST-AUDIO" }, { 0x000C37, "Geomation, Inc.", "GEOMATION" }, { 0x000C2D, "FullWave Technology Co., Ltd.", "FULLWAVE" }, { 0x000C1A, "Quest Technical Solutions Inc.", "QUEST-TECHNICAL-SOLUTIONS" }, { 0x000C1E, "Global Cache", "GLOBAL-CACHE" }, { 0x000C23, "Beijing Lanchuan Tech. Co., Ltd.", "BEIJING-LANCHUAN-TECH" }, { 0x000C0E, "XtremeSpectrum, Inc.", "XTREMESPECTRUM" }, { 0x000C15, "CyberPower Systems, Inc.", "CYBERPOWER" }, { 0x000C09, "Hitachi IE Systems Co., Ltd", "HITACHI-IE" }, { 0x000BD3, "cd3o", "CD3O" }, { 0x000BC7, "ICET S.p.A.", "ICET-S-P-A" }, { 0x000BCE, "Free2move AB", "FREE2MOVE-AB" }, { 0x000BC2, "Corinex Communication Corp.", "CORINEX-COMMUNICATION" }, { 0x000BBB, "Etin Systems Co., Ltd", "ETIN" }, { 0x000BC0, "China IWNComm Co., Ltd.", "CHINA-IWNCOMM" }, { 0x000BAF, "WOOJU COMMUNICATIONS Co,.Ltd", "WOOJU-COMMUNICATION" }, { 0x000BB4, "RDC Semiconductor Inc.,", "RDC-SEMICONDUCTOR" }, { 0x000BA5, "Quasar Cipta Mandiri, PT", "QUASAR-CIPTA-MANDIRI-PT" }, { 0x000BAA, "Aiphone co.,Ltd", "AIPHONE" }, { 0x000B9E, "Yasing Technology Corp.", "YASING" }, { 0x000B27, "Scion Corporation", "SCION" }, { 0x000B1B, "Systronix, Inc.", "SYSTRONIX" }, { 0x000B20, "Hirata corporation", "HIRATA" }, { 0x000B22, "Environmental Systems and Services", "ENVIRONMENTAL-AND-SERVICES" }, { 0x000B14, "ViewSonic Corporation", "VIEWSONIC" }, { 0x000B0D, "Air2U, Inc.", "AIR2U" }, { 0x000B0F, "Bosch Rexroth", "BOSCH-REXROTH" }, { 0x000B08, "Pillar Data Systems", "PILLAR-DATA" }, { 0x000AFC, "Core Tec Communications, LLC", "CORE-TEC-COMMUNICATION-LLC" }, { 0x000BF6, "Nitgen Co., Ltd", "NITGEN" }, { 0x000BFB, "D-NET International Corporation", "D-NET" }, { 0x000C02, "ABB Oy", "ABB-OY" }, { 0x000BEA, "Zultys Technologies", "ZULTYS-TECHNOLOGIES" }, { 0x000BEF, "Code Corporation", "CODE" }, { 0x000BE3, "Key Stream Co., Ltd.", "KEY-STREAM" }, { 0x000BE8, "AOIP", "AOIP" }, { 0x000BE9, "Actel Corporation", "ACTEL" }, { 0x000BD7, "DORMA Time + Access GmbH", "DORMA-TIME-+-ACCESS" }, { 0x000BDC, "AKCP", "AKCP" }, { 0x000994, "Cronyx Engineering", "CRONYX-ENGINEERING" }, { 0x000999, "CP GEORGES RENAULT", "CP-GEORGES-RENAULT" }, { 0x000987, "NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD.", "NISHI-NIPPON-ELECTRIC-WIRE-CABLE" }, { 0x000988, "Nudian Electron Co., Ltd.", "NUDIAN-ELECTRON" }, { 0x00098D, "Velocity Semiconductor", "VELOCITY-SEMICONDUCTOR" }, { 0x000981, "Newport Networks", "NEWPORT-NETWORKS" }, { 0x000975, "fSONA Communications Corporation", "FSONA-COMMUNICATION" }, { 0x00097A, "Louis Design Labs.", "LOUIS-DESIGN-LABS" }, { 0x000968, "TECHNOVENTURE, INC.", "TECHNOVENTURE" }, { 0x000962, "Sonitor Technologies AS", "SONITOR-TECHNOLOGIES-AS" }, { 0x000A9B, "TB Group Inc", "TB-GROUP" }, { 0x000A9A, "Aiptek International Inc", "AIPTEK" }, { 0x000A80, "Telkonet Inc.", "TELKONET" }, { 0x000A82, "TATSUTA SYSTEM ELECTRONICS CO.,LTD.", "TATSUTA-SYSTEM-ELECTRONICS" }, { 0x000A87, "Integrated Micromachines Inc.", "INTEGRATED-MICROMACHINES" }, { 0x000A7B, "Cornelius Consult", "CORNELIUS-CONSULT" }, { 0x000A6D, "EKS Elektronikservice GmbH", "EKS-ELEKTRONIKSERVICE" }, { 0x000A6F, "ZyFLEX Technologies Inc", "ZYFLEX-TECHNOLOGIES" }, { 0x000A74, "Manticom Networks Inc.", "MANTICOM-NETWORKS" }, { 0x000A61, "Cellinx Systems Inc.", "CELLINX" }, { 0x0009C3, "NETAS", "NETAS" }, { 0x0009B9, "Action Imaging Solutions", "ACTION-IMAGING-SOLUTIONS" }, { 0x0009BA, "MAKU Informationstechik GmbH", "MAKU-INFORMATIONSTECHIK" }, { 0x0009AC, "LANVOICE", "LANVOICE" }, { 0x0009B3, "MCM Systems Ltd", "MCM" }, { 0x0009A7, "Bang & Olufsen A/S", "BANG-OLUFSEN-A/S" }, { 0x00099A, "ELMO COMPANY, LIMITED", "ELMO-COMPANY" }, { 0x0009A0, "Microtechno Corporation", "MICROTECHNO" }, { 0x0009ED, "CipherOptics", "CIPHEROPTICS" }, { 0x0009F2, "Cohu, Inc., Electronics Division", "COHU-ELECTRONICS-DIVISION" }, { 0x0009E6, "Cyber Switching Inc.", "CYBER-SWITCHING" }, { 0x0009E0, "XEMICS S.A.", "XEMICS" }, { 0x0009DA, "Control Module Inc.", "CONTROL-MODULE" }, { 0x0009DF, "Vestel Komunikasyon Sanayi ve Ticaret A.S.", "VESTEL-KOMUNIKASYON-SANAYI-VE-TICARET-A-S" }, { 0x0009CD, "HUDSON SOFT CO.,LTD.", "HUDSON-SOFT" }, { 0x0009C7, "Movistec", "MOVISTEC" }, { 0x0009CE, "SpaceBridge Semiconductor Corp.", "SPACEBRIDGE-SEMICONDUCTOR" }, { 0x0009D3, "Western DataCom Co., Inc.", "WESTERN-DATACOM" }, { 0x000901, "Shenzhen Shixuntong Information & Technoligy Co", "SHENZHEN-SHIXUNTONG-INFORMATION-TECHNOLIGY" }, { 0x0008FC, "Gigaphoton Inc.", "GIGAPHOTON" }, { 0x0008F9, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x0008F4, "Bluetake Technology Co., Ltd.", "BLUETAKE" }, { 0x0008EB, "ROMWin Co.,Ltd.", "ROMWIN" }, { 0x0008E4, "Envenergy Inc", "ENVENERGY" }, { 0x0008DF, "Alistel Inc.", "ALISTEL" }, { 0x0008D8, "Dowkey Microwave", "DOWKEY-MICROWAVE" }, { 0x0008D2, "ZOOM Networks Inc.", "ZOOM-NETWORKS" }, { 0x0008CC, "Remotec, Inc.", "REMOTEC" }, { 0x0008D1, "KAREL INC.", "KAREL" }, { 0x000967, "Tachyon, Inc", "TACHYON" }, { 0x00096E, "GIANT ELECTRONICS LTD.", "GIANT-ELECTRONICS" }, { 0x00095E, "Masstech Group Inc.", "MASSTECH-GROUP" }, { 0x000959, "Sitecsoft", "SITECSOFT" }, { 0x00094D, "Braintree Communications Pty Ltd", "BRAINTREE-COMMUNICATION-PTY" }, { 0x000952, "Auerswald GmbH & Co. KG", "AUERSWALD" }, { 0x000946, "Cluster Labs GmbH", "CLUSTER-LABS" }, { 0x000940, "AGFEO GmbH & Co. KG", "AGFEO" }, { 0x00093F, "Double-Win Enterpirse CO., LTD", "DOUBLE-WIN-ENTERPIRSE" }, { 0x000933, "Ophit Co.Ltd.", "OPHIT" }, { 0x000A5C, "Carel s.p.a.", "CAREL-S-P-A" }, { 0x000A50, "REMOTEK CORPORATION", "REMOTEK" }, { 0x000A55, "MARKEM Corporation", "MARKEM" }, { 0x000A4E, "UNITEK Electronics INC.", "UNITEK-ELECTRONICS" }, { 0x000A42, "Cisco Systems, Inc", "CISCO" }, { 0x000A49, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x000A36, "Synelec Telecom Multimedia", "SYNELEC-TELECOM-MULTIMEDIA" }, { 0x000A3B, "GCT Semiconductor, Inc", "GCT-SEMICONDUCTOR" }, { 0x000A3D, "Elo Sistemas Eletronicos S.A.", "ELO-SISTEMAS-ELETRONICOS" }, { 0x000A2F, "Artnix Inc.", "ARTNIX" }, { 0x000927, "TOYOKEIKI CO.,LTD.", "TOYOKEIKI" }, { 0x00092E, "B&Tech System Inc.", "B-TECH-SYSTEM" }, { 0x000920, "EpoX COMPUTER CO.,LTD.", "EPOX" }, { 0x00091B, "Digital Generation Inc.", "DIGITAL-GENERATION" }, { 0x000914, "COMPUTROLS INC.", "COMPUTROLS" }, { 0x00090E, "Helix Technology Inc.", "HELIX" }, { 0x000908, "VTech Technology Corp.", "VTECH" }, { 0x00090D, "LEADER ELECTRONICS CORP.", "LEADER-ELECTRONICS" }, { 0x000A20, "SVA Networks, Inc.", "SVA-NETWORKS" }, { 0x000A25, "CERAGON NETWORKS", "CERAGON-NETWORKS" }, { 0x000A14, "TECO a.s.", "TECO-A-S" }, { 0x000A19, "Valere Power, Inc.", "VALERE-POWER" }, { 0x000A0D, "FCI Deutschland GmbH", "FCI-DEUTSCHLAND" }, { 0x000A12, "Azylex Technology, Inc", "AZYLEX" }, { 0x0009F9, "ART JAPAN CO., LTD.", "ART-JAPAN" }, { 0x0009FC, "IPFLEX Inc.", "IPFLEX" }, { 0x000A03, "ENDESA SERVICIOS, S.L.", "ENDESA-SERVICIOS-S-L" }, { 0x000705, "Endress & Hauser GmbH & Co", "ENDRESS-HAUSER" }, { 0x0006F8, "The Boeing Company", "THE-BOEING-COMPANY" }, { 0x0006FF, "Sheba Systems Co., Ltd.", "SHEBA" }, { 0x0006FD, "Comjet Information Systems Corp.", "COMJET-INFORMATION" }, { 0x0006E7, "Bit Blitz Communications Inc.", "BIT-BLITZ-COMMUNICATION" }, { 0x0006ED, "Inara Networks", "INARA-NETWORKS" }, { 0x0006DC, "Syabas Technology (Amquest)", "SYABAS-AMQUEST" }, { 0x0006E1, "Techno Trade s.a", "TECHNO-TRADE" }, { 0x0006E6, "DongYang Telecom Co., Ltd.", "DONGYANG-TELECOM" }, { 0x0006CF, "Thales Avionics In-Flight Systems, LLC", "THALES-AVIONICS-IN-FLIGHT-LLC" }, { 0x0006D6, "Cisco Systems, Inc", "CISCO" }, { 0x0006D5, "Diamond Systems Corp.", "DIAMOND" }, { 0x0006C9, "Technical Marketing Research, Inc.", "TECHNICAL-MARKETING-RESEARCH" }, { 0x0007B1, "Equator Technologies", "EQUATOR-TECHNOLOGIES" }, { 0x0007B8, "Corvalent Corporation", "CORVALENT" }, { 0x0007B2, "Transaccess S.A.", "TRANSACCESS" }, { 0x0007A4, "GN Netcom Ltd.", "GN-NETCOM" }, { 0x0007AA, "Quantum Data Inc.", "QUANTUM-DATA" }, { 0x00079D, "Musashi Co., Ltd.", "MUSASHI" }, { 0x00079E, "Ilinx Co., Ltd.", "ILINX" }, { 0x000774, "GuangZhou Thinker Technology Co. Ltd.", "GUANGZHOU-THINKER" }, { 0x000791, "International Data Communications, Inc.", "DATA-COMMUNICATION" }, { 0x000798, "Selea SRL", "SELEA-SRL" }, { 0x000797, "Netpower Co., Ltd.", "NETPOWER" }, { 0x00078B, "Wegener Communications, Inc.", "WEGENER-COMMUNICATION" }, { 0x000785, "Cisco Systems, Inc", "CISCO" }, { 0x00077B, "Millimetrix Broadband Networks", "MILLIMETRIX-BROADBAND-NETWORKS" }, { 0x000856, "Gamatronic Electronic Industries Ltd.", "GAMATRONIC-INDUSTRIES" }, { 0x00082D, "Indus Teqsite Private Limited", "INDUS-TEQSITE-PRIVATE" }, { 0x000821, "Cisco Systems, Inc", "CISCO" }, { 0x000814, "TIL Technologies", "TIL-TECHNOLOGIES" }, { 0x00081A, "Sanrad Intelligence Storage Communications (2000) Ltd.", "SANRAD-INTELLIGENCE-STORAGE-COMMUNICATION-2000" }, { 0x00080F, "Proximion Fiber Optics AB", "PROXIMION-FIBER-OPTICS-AB" }, { 0x000809, "Systemonic AG", "SYSTEMONIC" }, { 0x000803, "Cos Tron", "COS-TRON" }, { 0x0007FF, "Gluon Networks", "GLUON-NETWORKS" }, { 0x0007F9, "Sensaphone", "SENSAPHONE" }, { 0x000894, "InnoVISION Multimedia Ltd.", "INNOVISION-MULTIMEDIA" }, { 0x00088F, "ADVANCED DIGITAL TECHNOLOGY", "ADVANCED-DIGITAL" }, { 0x000888, "OULLIM Information Technology Inc,.", "OULLIM-INFORMATION" }, { 0x000882, "SIGMA CORPORATION", "SIGMA" }, { 0x00087C, "Cisco Systems, Inc", "CISCO" }, { 0x000875, "Acorp Electronics Corp.", "ACORP-ELECTRONICS" }, { 0x000870, "Rasvia Systems, Inc.", "RASVIA" }, { 0x00086F, "Resources Computer Network Ltd.", "RESOURCES-NETWORK" }, { 0x000869, "Command-e Technology Co.,Ltd.", "COMMAND-E" }, { 0x000863, "Entrisphere Inc.", "ENTRISPHERE" }, { 0x00085D, "Aastra", "AASTRA" }, { 0x000862, "NEC Eluminant Technologies, Inc.", "NEC-ELUMINANT-TECHNOLOGIES" }, { 0x000850, "Arizona Instrument Corp.", "ARIZONA-INSTRUMENT" }, { 0x000738, "Young Technology Co., Ltd.", "YOUNG" }, { 0x00073F, "Woojyun Systec Co., Ltd.", "WOOJYUN-SYSTEC" }, { 0x00072C, "Fabricom", "FABRICOM" }, { 0x000733, "DANCONTROL Engineering", "DANCONTROL-ENGINEERING" }, { 0x000732, "AAEON Technology Inc.", "AAEON" }, { 0x000716, "J & S Marine Ltd.", "J-S-MARINE" }, { 0x00071B, "CDVI Americas Ltd", "CDVI-AMERICAS" }, { 0x000722, "The Nielsen Company", "THE-NIELSEN-COMPANY" }, { 0x00070A, "Unicom Automation Co., Ltd.", "UNICOM-AUTOMATION" }, { 0x00070F, "Fujant, Inc.", "FUJANT" }, { 0x000709, "Westerstrand Urfabrik AB", "WESTERSTRAND-URFABRIK-AB" }, { 0x000702, "Varian Medical Systems", "VARIAN-MEDICAL" }, { 0x0006F3, "AcceLight Networks", "ACCELIGHT-NETWORKS" }, { 0x0006C3, "Schindler Elevator Ltd.", "SCHINDLER-ELEVATOR" }, { 0x0006C8, "Sumitomo Metal Micro Devices, Inc.", "SUMITOMO-METAL-MICRO-DEVICES" }, { 0x0006BF, "Accella Technologies Co., Ltd.", "ACCELLA-TECHNOLOGIES" }, { 0x0006B9, "A5TEK Corp.", "A5TEK" }, { 0x0006B2, "Linxtek Co.", "LINXTEK" }, { 0x0006AC, "Intersoft Co.", "INTERSOFT" }, { 0x0006A6, "Artistic Licence Engineering Ltd", "ARTISTIC-LICENCE-ENGINEERING" }, { 0x0006A2, "Microtune, Inc.", "MICROTUNE" }, { 0x000695, "Ensure Technologies, Inc.", "ENSURE-TECHNOLOGIES" }, { 0x00069C, "Transmode Systems AB", "TRANSMODE-AB" }, { 0x000696, "Advent Networks", "ADVENT-NETWORKS" }, { 0x0007F3, "Thinkengine Networks", "THINKENGINE-NETWORKS" }, { 0x0007EC, "Cisco Systems, Inc", "CISCO" }, { 0x0007F2, "IOA Corporation", "IOA" }, { 0x0007E6, "edgeflow Canada Inc.", "EDGEFLOW-CANADA" }, { 0x0007E0, "Palm Inc.", "PALM" }, { 0x0007D9, "Splicecom", "SPLICECOM" }, { 0x0007DA, "Neuro Telecom Co., Ltd.", "NEURO-TELECOM" }, { 0x0007D3, "SPGPrints B.V.", "SPGPRINTS" }, { 0x0007CA, "Creatix Polymedia Ges Fur Kommunikaitonssysteme", "CREATIX-POLYMEDIA-GES-FUR-KOMMUNIKAITONSSYSTEME" }, { 0x0007C4, "JEAN Co. Ltd.", "JEAN" }, { 0x0007BE, "DataLogic SpA", "DATALOGIC-SPA" }, { 0x00077E, "Elrest GmbH", "ELREST" }, { 0x00076F, "Synoptics Limited", "SYNOPTICS" }, { 0x00076E, "Sinetica Corporation Limited", "SINETICA" }, { 0x00076A, "NEXTEYE Co., Ltd.", "NEXTEYE" }, { 0x00075E, "Ametek Power Instruments", "AMETEK-POWER-INSTRUMENTS" }, { 0x000765, "Jade Quantum Technologies, Inc.", "JADE-QUANTUM-TECHNOLOGIES" }, { 0x000764, "YoungWoo Telecom Co. Ltd.", "YOUNGWOO-TELECOM" }, { 0x000757, "Topcall International AG", "TOPCALL" }, { 0x000758, "Dragonwave", "DRAGONWAVE" }, { 0x000752, "Rhythm Watch Co., Ltd.", "RHYTHM-WATCH" }, { 0x00074B, "Daihen Corporation", "DAIHEN" }, { 0x000745, "Radlan Computer Communications Ltd.", "RADLAN-COMMUNICATION" }, { 0x0008C2, "Cisco Systems, Inc", "CISCO" }, { 0x0008BB, "NetExcell", "NETEXCELL" }, { 0x0008B5, "TAI GUEN ENTERPRISE CO., LTD", "TAI-GUEN" }, { 0x0008B6, "RouteFree, Inc.", "ROUTEFREE" }, { 0x0008AF, "Novatec Corporation", "NOVATEC" }, { 0x0008A9, "SangSang Technology, Inc.", "SANGSANG" }, { 0x0008A8, "Systec Co., Ltd.", "SYSTEC" }, { 0x0008A3, "Cisco Systems, Inc", "CISCO" }, { 0x00089C, "Elecs Industry Co., Ltd.", "ELECS-INDUSTRY" }, { 0x000690, "Euracom Communication GmbH", "EURACOM-COMMUNICATION" }, { 0x00068F, "Telemonitor, Inc.", "TELEMONITOR" }, { 0x000689, "yLez Technologies Pte Ltd", "YLEZ-TECHNOLOGIES-PTE" }, { 0x000683, "Bravara Communications, Inc.", "BRAVARA-COMMUNICATION" }, { 0x00D0B9, "MICROTEK INTERNATIONAL, INC.", "MICROTEK" }, { 0x00067D, "Takasago Ltd.", "TAKASAGO" }, { 0x000675, "Banderacom, Inc.", "BANDERACOM" }, { 0x000679, "Konami Corporation", "KONAMI" }, { 0x000663, "Human Technology Co., Ltd.", "HUMAN" }, { 0x00066F, "Korea Data Systems", "KOREA-DATA" }, { 0x000662, "MBM Technology Ltd.", "MBM" }, { 0x000669, "Datasound Laboratories Ltd", "DATASOUND-LABORATORIES" }, { 0x00055A, "Power Dsine Ltd.", "POWER-DSINE" }, { 0x00065C, "Malachite Technologies, Inc.", "MALACHITE-TECHNOLOGIES" }, { 0x000610, "Abeona Networks Inc", "ABEONA-NETWORKS" }, { 0x000616, "Tel Net Co., Ltd.", "TEL-NET" }, { 0x00060A, "Blue2space", "BLUE2SPACE" }, { 0x000604, "@Track Communications, Inc.", "@TRACK-COMMUNICATION" }, { 0x00CBBD, "Cambridge Broadband Networks Ltd.", "CAMBRIDGE-BROADBAND-NETWORKS" }, { 0x000603, "Baker Hughes Inc.", "BAKER-HUGHES" }, { 0xA06A00, "Verilink Corporation", "VERILINK" }, { 0x0005F5, "Geospace Technologies", "GEOSPACE-TECHNOLOGIES" }, { 0x000601, "Otanikeiki Co., Ltd.", "OTANIKEIKI" }, { 0x0005E8, "TurboWave, Inc.", "TURBOWAVE" }, { 0x0005F4, "System Base Co., Ltd.", "SYSTEM-BASE" }, { 0x0005FB, "ShareGate, Inc.", "SHAREGATE" }, { 0x0005DB, "PSI Nentec GmbH", "PSI-NENTEC" }, { 0x0005DF, "Electronic Innovation, Inc.", "INNOVATION" }, { 0x0005CF, "Thunder River Technologies, Inc.", "THUNDER-RIVER-TECHNOLOGIES" }, { 0x0005C9, "LG Innotek Co., Ltd.", "LG-INNOTEK" }, { 0x0005D5, "Speedcom Wireless", "SPEEDCOM-WIRELESS" }, { 0x0005BC, "Resource Data Management Ltd", "RESOURCE-DATA-MANAGEMENT" }, { 0x0005C2, "Soronti, Inc.", "SORONTI" }, { 0x0005B0, "Korea Computer Technology Co., Ltd.", "KOREA" }, { 0x00059C, "Kleinknecht GmbH, Ing. Büro", "KLEINKNECHT-ING-BüRO" }, { 0x0005B6, "INSYS Microelectronics GmbH", "INSYS-MICROELECTRONICS" }, { 0x0005A2, "CELOX Networks", "CELOX-NETWORKS" }, { 0x0005AC, "Northern Digital, Inc.", "NORTHERN-DIGITAL" }, { 0x0004E5, "Glonet Systems, Inc.", "GLONET" }, { 0x0004D9, "Titan Electronics, Inc.", "TITAN-ELECTRONICS" }, { 0x0004D3, "Toyokeiki Co., Ltd.", "TOYOKEIKI" }, { 0x0004CC, "Peek Traffic B.V.", "PEEK-TRAFFIC" }, { 0x0004C0, "Cisco Systems, Inc", "CISCO" }, { 0x0004B9, "S.I. Soubou, Inc.", "S-I-SOUBOU" }, { 0x0004BA, "KDD Media Will Corporation", "KDD-MEDIA-WILL" }, { 0x0004AF, "Digital Fountain, Inc.", "DIGITAL-FOUNTAIN" }, { 0x0004B4, "CIAC", "CIAC" }, { 0x0004B3, "Videotek, Inc.", "VIDEOTEK" }, { 0x0004A6, "SAF Tehnika Ltd.", "SAF-TEHNIKA" }, { 0x0004A0, "Verity Instruments, Inc.", "VERITY-INSTRUMENTS" }, { 0x00050C, "Network Photonics, Inc.", "NETWORK-PHOTONICS" }, { 0x000512, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x000506, "Reddo Networks AB", "REDDO-NETWORKS-AB" }, { 0x0004FC, "Stratus Computer (DE), Inc.", "STRATUS-DE" }, { 0x0004F6, "Amphus", "AMPHUS" }, { 0x0004F5, "SnowShore Networks, Inc.", "SNOWSHORE-NETWORKS" }, { 0x0004E9, "Infiniswitch Corporation", "INFINISWITCH" }, { 0x0004F0, "International Computers, Ltd", "COMPUTERS" }, { 0x0004EF, "Polestar Corp.", "POLESTAR" }, { 0x0004DF, "Teracom Telematica Ltda.", "TERACOM-TELEMATICA-LTDA" }, { 0x000553, "DVC Company, Inc.", "DVC-COMPANY" }, { 0x000548, "Disco Corporation", "DISCO" }, { 0x00054D, "Brans Technologies, Inc.", "BRANS-TECHNOLOGIES" }, { 0x000542, "Otari, Inc.", "OTARI" }, { 0x00053C, "XIRCOM", "XIRCOM" }, { 0x00052F, "Leviton Network Solutions", "LEVITON-NETWORK-SOLUTIONS" }, { 0x00053B, "Harbour Networks Ltd., Co. Beijing", "HARBOUR-NETWORKS-BEIJING" }, { 0x000535, "Chip PC Ltd.", "CHIP-PC" }, { 0x000529, "Shanghai Broadan Communication Technology Co., Ltd", "SHANGHAI-BROADAN-COMMUNICATION" }, { 0x000523, "AVL List GmbH", "AVL-LIST" }, { 0x000522, "LEA*D Corporation, Inc.", "LEA*D" }, { 0x00051C, "Xnet Technology Corp.", "XNET" }, { 0x000516, "SMART Modular Technologies", "SMART-MODULAR-TECHNOLOGIES" }, { 0x000650, "Tiburon Networks, Inc.", "TIBURON-NETWORKS" }, { 0x000656, "Tactel AB", "TACTEL-AB" }, { 0x00062D, "TouchStar Technologies, L.L.C.", "TOUCHSTAR-TECHNOLOGIES-L-L-C" }, { 0x000649, "3M Deutschland GmbH", "3M-DEUTSCHLAND" }, { 0x000643, "SONO Computer Co., Ltd.", "SONO" }, { 0x00064A, "Honeywell Co., Ltd. (KOREA)", "HONEYWELL-KOREA" }, { 0x00063F, "Everex Communications Inc.", "EVEREX-COMMUNICATION" }, { 0x000639, "Newtec", "NEWTEC" }, { 0x000633, "Cross Match Technologies GmbH", "CROSS-MATCH-TECHNOLOGIES" }, { 0x000626, "MWE GmbH", "MWE" }, { 0x00061D, "MIP Telecom, Inc.", "MIP-TELECOM" }, { 0x000623, "MGE UPS Systems France", "MGE-UPS-FRANCE" }, { 0x000589, "National Datacomputer", "NATIONAL-DATACOMPUTER" }, { 0x000595, "Alesis Corporation", "ALESIS" }, { 0x00058F, "CLCsoft co.", "CLCSOFT" }, { 0x000596, "Genotech Co., Ltd.", "GENOTECH" }, { 0x00057D, "Sun Communications, Inc.", "SUN-COMMUNICATION" }, { 0x00057C, "RCO Security AB", "RCO-SECURITY-AB" }, { 0x000583, "ImageCom Limited", "IMAGECOM" }, { 0x000573, "Cisco Systems, Inc", "CISCO" }, { 0x000572, "Deonet Co., Ltd.", "DEONET" }, { 0x00056C, "Hung Chang Co., Ltd.", "HUNG-CHANG" }, { 0x000566, "Secui.com Corporation", "SECUI-COM" }, { 0x000560, "LEADER COMM.CO., LTD", "LEADER-COMM" }, { 0x000559, "Intracom S.A.", "INTRACOM" }, { 0x0004A5, "Barco Projection Systems NV", "BARCO-PROJECTION-NV" }, { 0x000499, "Chino Corporation", "CHINO" }, { 0x00048D, "Teo Technologies, Inc", "TEO-TECHNOLOGIES" }, { 0x000493, "Tsinghua Unisplendour Co., Ltd.", "TSINGHUA-UNISPLENDOUR" }, { 0x000484, "Amann GmbH", "AMANN" }, { 0x00048A, "Temia Vertriebs GmbH", "TEMIA-VERTRIEBS" }, { 0x00047A, "AXXESSIT ASA", "AXXESSIT-ASA" }, { 0x000474, "LEGRAND", "LEGRAND" }, { 0x00046E, "Cisco Systems, Inc", "CISCO" }, { 0x000473, "Photonex Corporation", "PHOTONEX" }, { 0x000467, "Wuhan Research Institute of MII", "WUHAN-RESEARCH-INSTITUTE-OF-MII" }, { 0x000461, "EPOX Computer Co., Ltd.", "EPOX" }, { 0x0003D9, "Secheron SA", "SECHERON" }, { 0x0003D2, "Crossbeam Systems, Inc.", "CROSSBEAM" }, { 0x0003CD, "Clovertech, Inc.", "CLOVERTECH" }, { 0x0003CA, "MTS Systems Corp.", "MTS" }, { 0x0003C6, "ICUE Systems, Inc.", "ICUE" }, { 0x0003BF, "Centerpoint Broadband Technologies, Inc.", "CENTERPOINT-BROADBAND-TECHNOLOGIES" }, { 0x0003BA, "Oracle Corporation", "ORACLE" }, { 0x0003AF, "Paragea Communications", "PARAGEA-COMMUNICATION" }, { 0x0003B4, "Macrotek International Corp.", "MACROTEK" }, { 0x0003AC, "Fronius Schweissmaschinen", "FRONIUS-SCHWEISSMASCHINEN" }, { 0x0003A8, "IDOT Computers, Inc.", "IDOT-COMPUTERS" }, { 0x0003A1, "HIPER Information & Communication, Inc.", "HIPER-INFORMATION-COMMUNICATION" }, { 0x000399, "Dongju Informations & Communications Co., Ltd.", "DONGJU-INFORMATIONS-COMMUNICATION" }, { 0x00039C, "OptiMight Communications, Inc.", "OPTIMIGHT-COMMUNICATION" }, { 0x000390, "Digital Video Communications, Inc.", "DIGITAL-VIDEO-COMMUNICATION" }, { 0x000395, "California Amplifier", "CALIFORNIA-AMPLIFIER" }, { 0x000380, "SSH Communications Security Corp.", "SSH-COMMUNICATION-SECURITY" }, { 0x000374, "Control Microsystems", "CONTROL-MICROSYSTEMS" }, { 0x0002F0, "AME Optimedia Technology Co., Ltd.", "AME-OPTIMEDIA" }, { 0x000379, "Proscend Communications, Inc.", "PROSCEND-COMMUNICATION" }, { 0x000371, "Acomz Networks Corp.", "ACOMZ-NETWORKS" }, { 0x00036D, "Runtop, Inc.", "RUNTOP" }, { 0x0002E3, "LITE-ON Communications, Inc.", "LITE-ON-COMMUNICATION" }, { 0x0002DE, "Astrodesign, Inc.", "ASTRODESIGN" }, { 0x0002DB, "NETSEC", "NETSEC" }, { 0x0002D7, "EMPEG Ltd", "EMPEG" }, { 0x0002D2, "Workstation AG", "WORKSTATION" }, { 0x000223, "ClickTV", "CLICKTV" }, { 0x0002CB, "TriState Ltd.", "TRISTATE" }, { 0x0002C4, "Vector International BVBA", "VECTOR-BVBA" }, { 0x0002BF, "dotRocket, Inc.", "DOTROCKET" }, { 0x0002BB, "Continuous Computing Corp", "CONTINUOUS-COMPUTING" }, { 0x0002BC, "LVL 7 Systems, Inc.", "LVL-7" }, { 0x0002B6, "Acrosser Technology Co., Ltd.", "ACROSSER" }, { 0x0002AF, "TeleCruz Technology, Inc.", "TELECRUZ" }, { 0x0002AA, "PLcom Co., Ltd.", "PLCOM" }, { 0x00045B, "Techsan Electronics Co., Ltd.", "TECHSAN-ELECTRONICS" }, { 0x00044E, "Cisco Systems, Inc", "CISCO" }, { 0x00044F, "Schubert System Elektronik Gmbh", "SCHUBERT-SYSTEM-ELEKTRONIK" }, { 0x000454, "Quadriga UK", "QUADRIGA-UK" }, { 0x000445, "LMS Skalar Instruments GmbH", "LMS-SKALAR-INSTRUMENTS" }, { 0x00044A, "iPolicy Networks, Inc.", "IPOLICY-NETWORKS" }, { 0x000444, "Western Multiplex Corporation", "WESTERN-MULTIPLEX" }, { 0x00043E, "Telencomm", "TELENCOMM" }, { 0x000432, "Voyetra Turtle Beach, Inc.", "VOYETRA-TURTLE-BEACH" }, { 0x000437, "Powin Information Technology, Inc.", "POWIN-INFORMATION" }, { 0x00042B, "IT Access Co., Ltd.", "IT-ACCESS" }, { 0x000361, "Widcomm, Inc.", "WIDCOMM" }, { 0x00035A, "Photron Limited", "PHOTRON" }, { 0x000355, "TeraBeam Internet Systems", "TERABEAM-INTERNET" }, { 0x000353, "Mitac, Inc.", "MITAC" }, { 0x00034F, "Sur-Gard Security", "SUR-GARD-SECURITY" }, { 0x00034A, "RIAS Corporation", "RIAS" }, { 0x000346, "Hitachi Kokusai Electric, Inc.", "HITACHI-KOKUSAI-ELECTRIC" }, { 0x000344, "Tietech.Co., Ltd.", "TIETECH" }, { 0x000343, "Martin Professional A/S", "MARTIN-PROFESSIONAL-A/S" }, { 0x000334, "Newport Electronics", "NEWPORT-ELECTRONICS" }, { 0x000337, "Vaone, Inc.", "VAONE" }, { 0x00033C, "Daiden Co., Ltd.", "DAIDEN" }, { 0x000329, "F3, Inc.", "F3" }, { 0x000330, "Imagenics, Co., Ltd.", "IMAGENICS" }, { 0x000321, "Reco Research Co., Ltd.", "RECO-RESEARCH" }, { 0x000324, "SANYO Consumer Electronics Co., Ltd.", "SANYO-CONSUMER-ELECTRONICS" }, { 0x00031B, "Cellvision Systems, Inc.", "CELLVISION" }, { 0x0001A8, "Welltech Computer Co., Ltd.", "WELLTECH" }, { 0x00030F, "Digital China (Shanghai) Networks Ltd.", "DIGITAL-CHINA-SHANGHAI-NETWORKS" }, { 0x000314, "Teleware Network Systems", "TELEWARE-NETWORK" }, { 0x00030C, "Telesoft Technologies Ltd.", "TELESOFT-TECHNOLOGIES" }, { 0x000308, "AM Communications, Inc.", "AM-COMMUNICATION" }, { 0x0002FC, "Cisco Systems, Inc", "CISCO" }, { 0x000301, "EXFO", "EXFO" }, { 0x0002F9, "MIMOS Berhad", "MIMOS-BERHAD" }, { 0x0002F5, "VIVE Synergies, Inc.", "VIVE-SYNERGIES" }, { 0x0002EA, "Focus Enhancements", "FOCUS-ENHANCEMENTS" }, { 0x000269, "Nadatel Co., Ltd", "NADATEL" }, { 0x000265, "Virditech Co. Ltd.", "VIRDITECH" }, { 0x00025E, "High Technology Ltd", "HIGH" }, { 0x000261, "Tilgin AB", "TILGIN-AB" }, { 0x000259, "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group", "TSANN-KUEN-CHINA-SHANGHAI-IT-GROUP" }, { 0x000255, "IBM Corp", "IBM" }, { 0x000249, "Aviv Infocom Co, Ltd.", "AVIV-INFOCOM" }, { 0x000250, "Geyser Networks, Inc.", "GEYSER-NETWORKS" }, { 0x000242, "Videoframe Systems", "VIDEOFRAME" }, { 0x000244, "SURECOM Technology Co.", "SURECOM" }, { 0x00022C, "ABB Bomem, Inc.", "ABB-BOMEM" }, { 0x00023A, "ZSK Stickmaschinen GmbH", "ZSK-STICKMASCHINEN" }, { 0x000425, "Atmel Corporation", "ATMEL" }, { 0x000419, "Fibercycle Networks, Inc.", "FIBERCYCLE-NETWORKS" }, { 0x00041A, "Ines Test and Measurement GmbH & CoKG", "INES-TEST-AND-MEASUREMENT-COKG" }, { 0x000414, "Umezawa Musen Denki Co., Ltd.", "UMEZAWA-MUSEN-DENKI" }, { 0x000407, "Topcon Positioning Systems, Inc.", "TOPCON-POSITIONING" }, { 0x0003F7, "Plast-Control GmbH", "PLAST-CONTROL" }, { 0x0003FE, "Cisco Systems, Inc", "CISCO" }, { 0x0003FD, "Cisco Systems, Inc", "CISCO" }, { 0x000401, "Osaki Electric Co., Ltd.", "OSAKI-ELECTRIC" }, { 0x0003F0, "Redfern Broadband Networks", "REDFERN-BROADBAND-NETWORKS" }, { 0x0003EB, "Atrica", "ATRICA" }, { 0x0003E5, "Hermstedt SG", "HERMSTEDT-SG" }, { 0x0002A3, "ABB Switzerland Ltd, Power Systems", "ABB-SWITZERLAND-POWER" }, { 0x000298, "Broadframe Corporation", "BROADFRAME" }, { 0x000292, "Logic Innovations, Inc.", "LOGIC-INNOVATIONS" }, { 0x00028D, "Movita Technologies, Inc.", "MOVITA-TECHNOLOGIES" }, { 0x000283, "Spectrum Controls, Inc.", "SPECTRUM-CONTROLS" }, { 0x000277, "Cash Systemes Industrie", "CASH-SYSTEMES-INDUSTRIE" }, { 0x00027C, "Trilithic, Inc.", "TRILITHIC" }, { 0x000275, "SMART Technologies, Inc.", "SMART-TECHNOLOGIES" }, { 0x000270, "Crewave Co., Ltd.", "CREWAVE" }, { 0x000104, "DVICO Co., Ltd.", "DVICO" }, { 0x000110, "Gotham Networks", "GOTHAM-NETWORKS" }, { 0x00010C, "System Talks Inc.", "SYSTEM-TALKS" }, { 0x000113, "OLYMPUS CORPORATION", "OLYMPUS" }, { 0x000100, "EQUIP'TRANS", "EQUIP-TRANS" }, { 0x00B0AC, "SIAE-Microelettronica S.p.A.", "SIAE-MICROELETTRONICA-S-P-A" }, { 0x00B017, "InfoGear Technology Corp.", "INFOGEAR" }, { 0x0030F0, "Uniform Industrial Corp.", "UNIFORM-INDUSTRIAL" }, { 0x00B080, "Mannesmann Ipulsys B.V.", "MANNESMANN-IPULSYS" }, { 0x00B09A, "Morrow Technologies Corp.", "MORROW-TECHNOLOGIES" }, { 0x00B091, "Transmeta Corp.", "TRANSMETA" }, { 0x0030BE, "City-Net Technology, Inc.", "CITY-NET" }, { 0x000233, "Mantra Communications, Inc.", "MANTRA-COMMUNICATION" }, { 0x00022F, "P-Cube, Ltd.", "P-CUBE" }, { 0x000227, "ESD Electronic System Design GmbH", "ESD-SYSTEM-DESIGN" }, { 0x00021F, "Aculab PLC", "ACULAB-PLC" }, { 0x00021B, "Kollmorgen-Servotronix", "KOLLMORGEN-SERVOTRONIX" }, { 0x00020C, "Metro-Optix", "METRO-OPTIX" }, { 0x000218, "Advanced Scientific Corp", "ADVANCED-SCIENTIFIC" }, { 0x000213, "S.D.E.L.", "S-D-E-L" }, { 0x00020F, "AATR", "AATR" }, { 0x0001F9, "TeraGlobal Communications Corp.", "TERAGLOBAL-COMMUNICATION" }, { 0x000200, "Net & Sys Co., Ltd.", "NET-SYS" }, { 0x0001FC, "Keyence Corporation", "KEYENCE" }, { 0x0001F3, "QPS, Inc.", "QPS" }, { 0x0001E4, "Sitera, Inc.", "SITERA" }, { 0x0001EB, "C-COM Corporation", "C-COM" }, { 0x0001F0, "Tridium, Inc.", "TRIDIUM" }, { 0x0001D4, "Leisure Time, Inc.", "LEISURE-TIME" }, { 0x0001D8, "Teltronics, Inc.", "TELTRONICS" }, { 0x0001C6, "Quarry Technologies", "QUARRY-TECHNOLOGIES" }, { 0x0001CC, "Japan Total Design Communication Co., Ltd.", "JAPAN-TOTAL-DESIGN-COMMUNICATION" }, { 0x0001D1, "CoNet Communications, Inc.", "CONET-COMMUNICATION" }, { 0x0001B3, "Precision Electronic Manufacturing", "PRECISION-MANUFACTURING" }, { 0x000160, "ELMEX Co., LTD.", "ELMEX" }, { 0x00015E, "BEST TECHNOLOGY CO., LTD.", "BEST" }, { 0x000162, "Cygnet Technologies, Inc.", "CYGNET-TECHNOLOGIES" }, { 0x000169, "Celestix Networks Pte Ltd.", "CELESTIX-NETWORKS-PTE" }, { 0x000175, "Radiant Communications Corp.", "RADIANT-COMMUNICATION" }, { 0x000159, "S1 Corporation", "S1" }, { 0x000165, "AirSwitch Corporation", "AIRSWITCH" }, { 0x000171, "Allied Data Technologies", "ALLIED-DATA-TECHNOLOGIES" }, { 0x000157, "SYSWAVE CO., LTD", "SYSWAVE" }, { 0x000153, "ARCHTEK TELECOM CORPORATION", "ARCHTEK-TELECOM" }, { 0x000144, "EMC Corporation", "EMC" }, { 0x003038, "XCP, INC.", "XCP" }, { 0x0030DB, "Mindready Solutions, Inc.", "MINDREADY-SOLUTIONS" }, { 0x00306A, "PENTA MEDIA CO., LTD.", "PENTA-MEDIA" }, { 0x003021, "HSING TECH. ENTERPRISE CO.,LTD", "HSING-TECH" }, { 0x0030EA, "TeraForce Technology Corporation", "TERAFORCE" }, { 0x0030F4, "STARDOT TECHNOLOGIES", "STARDOT-TECHNOLOGIES" }, { 0x003087, "VEGA GRIESHABER KG", "VEGA-GRIESHABER" }, { 0x003000, "ALLWELL TECHNOLOGY CORP.", "ALLWELL" }, { 0x003034, "SET ENGINEERING", "SET-ENGINEERING" }, { 0x00308D, "Pinnacle Systems, Inc.", "PINNACLE" }, { 0x00304B, "ORBACOM SYSTEMS, INC.", "ORBACOM" }, { 0x0030FA, "TELICA, INC.", "TELICA" }, { 0x0001B1, "General Bandwidth", "GENERAL-BANDWIDTH" }, { 0x0001BB, "Frequentis", "FREQUENTIS" }, { 0x0001B7, "Centos, Inc.", "CENTOS" }, { 0x0001AF, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x0001AB, "Main Street Networks", "MAIN-STREET-NETWORKS" }, { 0x000191, "SYRED Data Systems", "SYRED-DATA" }, { 0x00019D, "E-Control Systems, Inc.", "E-CONTROL" }, { 0x0001A4, "Microlink Corporation", "MICROLINK" }, { 0x000199, "HeiSei Electronics", "HEISEI-ELECTRONICS" }, { 0x0001A0, "Infinilink Corporation", "INFINILINK" }, { 0x00017C, "AG-E GmbH", "-E" }, { 0x000188, "LXCO Technologies ag", "LXCO-TECHNOLOGIES" }, { 0x000178, "MARGI Systems, Inc.", "MARGI" }, { 0x00018B, "NetLinks Co., Ltd.", "NETLINKS" }, { 0x0030F5, "Wild Lab. Ltd.", "WILD-LAB" }, { 0x000184, "SIEB & MEYER AG", "SIEB-MEYER" }, { 0x00303E, "Radcom Ltd.", "RADCOM" }, { 0x0030D7, "Innovative Systems, L.L.C.", "INNOVATIVE-L-L-C" }, { 0x0030FC, "Terawave Communications, Inc.", "TERAWAVE-COMMUNICATION" }, { 0x00300F, "IMT - Information Management T", "IMT---INFORMATION-MANAGEMENT-T" }, { 0x003004, "LEADTEK RESEARCH INC.", "LEADTEK-RESEARCH" }, { 0x003018, "Jetway Information Co., Ltd.", "JETWAY-INFORMATION" }, { 0x003088, "Ericsson", "ERICSSON" }, { 0x0030CA, "Discovery Com", "DISCOVERY-COM" }, { 0x00304F, "PLANET Technology Corporation", "PLANET" }, { 0x00014B, "Ennovate Networks, Inc.", "ENNOVATE-NETWORKS" }, { 0x00012C, "Aravox Technologies, Inc.", "ARAVOX-TECHNOLOGIES" }, { 0x000134, "Selectron Systems AG", "SELECTRON" }, { 0x00013B, "BNA SYSTEMS", "BNA" }, { 0x000147, "Zhone Technologies", "ZHONE-TECHNOLOGIES" }, { 0x00012B, "TELENET Co., Ltd.", "TELENET" }, { 0x00011C, "Universal Talkware Corporation", "UNIVERSAL-TALKWARE" }, { 0x000123, "DIGITAL ELECTRONICS CORP.", "DIGITAL-ELECTRONICS" }, { 0x00011F, "RC Networks, Inc.", "RC-NETWORKS" }, { 0x003045, "Village Networks, Inc. (VNI)", "VILLAGE-NETWORKS-VNI" }, { 0x0030BB, "CacheFlow, Inc.", "CACHEFLOW" }, { 0x003053, "Basler AG", "BASLER" }, { 0x003072, "Intellibyte Inc.", "INTELLIBYTE" }, { 0x0030B1, "TrunkNet", "TRUNKNET" }, { 0x0030A7, "SCHWEITZER ENGINEERING", "SCHWEITZER-ENGINEERING" }, { 0x00D086, "FOVEON, INC.", "FOVEON" }, { 0x00D05A, "SYMBIONICS, LTD.", "SYMBIONICS" }, { 0x00D01A, "URMET TLC S.P.A.", "URMET-TLC-S-P-A" }, { 0x00D0F3, "SOLARI DI UDINE SPA", "SOLARI-DI-UDINE-SPA" }, { 0x00D089, "DYNACOLOR, INC.", "DYNACOLOR" }, { 0x00D08D, "PHOENIX GROUP, INC.", "PHOENIX-GROUP" }, { 0x00D09C, "KAPADIA COMMUNICATIONS", "KAPADIA-COMMUNICATION" }, { 0x00D0FE, "ASTRAL POINT", "ASTRAL-POINT" }, { 0x00D0DC, "MODULAR MINING SYSTEMS, INC.", "MODULAR-MINING" }, { 0x00D062, "DIGIGRAM", "DIGIGRAM" }, { 0x00D0A7, "TOKYO SOKKI KENKYUJO CO., LTD.", "TOKYO-SOKKI-KENKYUJO" }, { 0x00D032, "YANO ELECTRIC CO., LTD.", "YANO-ELECTRIC" }, { 0x00D054, "SAS INSTITUTE INC.", "SAS-INSTITUTE" }, { 0x00D0EB, "LIGHTERA NETWORKS, INC.", "LIGHTERA-NETWORKS" }, { 0x00D01E, "PINGTEL CORP.", "PINGTEL" }, { 0x00D0A9, "SHINANO KENSHI CO., LTD.", "SHINANO-KENSHI" }, { 0x0030E9, "GMA COMMUNICATION MANUFACT'G", "GMA-COMMUNICATION-MANUFACT-G" }, { 0x003027, "KERBANGO, INC.", "KERBANGO" }, { 0x0030F6, "SECURELOGIX CORPORATION", "SECURELOGIX" }, { 0x0030B6, "Cisco Systems, Inc", "CISCO" }, { 0x0030B2, "L-3 Sonoma EO", "L-3-SONOMA-EO" }, { 0x0030D6, "MSC VERTRIEBS GMBH", "MSC-VERTRIEBS" }, { 0x003008, "AVIO DIGITAL, INC.", "AVIO-DIGITAL" }, { 0x00306D, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x0030E4, "CHIYODA SYSTEM RIKEN", "CHIYODA-SYSTEM-RIKEN" }, { 0x00301A, "SMARTBRIDGES PTE. LTD.", "SMARTBRIDGES-PTE" }, { 0x0030CD, "CONEXANT SYSTEMS, INC.", "CONEXANT" }, { 0x003001, "SMP", "SMP" }, { 0x0030E1, "Network Equipment Technologies, Inc.", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x0050A7, "Cisco Systems, Inc", "CISCO" }, { 0x00D0EE, "DICTAPHONE CORPORATION", "DICTAPHONE" }, { 0x00D0B8, "Iomega Corporation", "IOMEGA" }, { 0x005045, "RIOWORKS SOLUTIONS, INC.", "RIOWORKS-SOLUTIONS" }, { 0x00507C, "VIDEOCON AG", "VIDEOCON" }, { 0x005065, "TDK-Lambda Corporation", "TDK-LAMBDA" }, { 0x0050F4, "SIGMATEK GMBH & CO. KG", "SIGMATEK" }, { 0x005076, "IBM Corp", "IBM" }, { 0x005075, "KESTREL SOLUTIONS", "KESTREL-SOLUTIONS" }, { 0x005090, "DCTRI", "DCTRI" }, { 0x0050ED, "ANDA NETWORKS", "ANDA-NETWORKS" }, { 0x005096, "SALIX TECHNOLOGIES, INC.", "SALIX-TECHNOLOGIES" }, { 0x00509B, "SWITCHCORE AB", "SWITCHCORE-AB" }, { 0x0050A9, "MOLDAT WIRELESS TECHNOLGIES", "MOLDAT-WIRELESS-TECHNOLGIES" }, { 0x00503C, "TSINGHUA NOVEL ELECTRONICS", "TSINGHUA-NOVEL-ELECTRONICS" }, { 0x005030, "FUTURE PLUS SYSTEMS", "FUTURE-PLUS" }, { 0x005037, "KOGA ELECTRONICS CO.", "KOGA-ELECTRONICS" }, { 0x00501F, "MRG SYSTEMS, LTD.", "MRG" }, { 0x005092, "Rigaku Corporation Osaka Plant", "RIGAKU-OSAKA-PLANT" }, { 0x00501C, "JATOM SYSTEMS, INC.", "JATOM" }, { 0x00505C, "TUNDO CORPORATION", "TUNDO" }, { 0x005068, "ELECTRONIC INDUSTRIES ASSOCIATION", "INDUSTRIES-ASSOCIATION" }, { 0x00501A, "IQinVision", "IQINVISION" }, { 0x005063, "OY COMSEL SYSTEM AB", "OY-COMSEL-SYSTEM-AB" }, { 0x0050DE, "SIGNUM SYSTEMS CORP.", "SIGNUM" }, { 0x00507B, "MERLOT COMMUNICATIONS", "MERLOT-COMMUNICATION" }, { 0x005078, "MEGATON HOUSE, LTD.", "MEGATON-HOUSE" }, { 0x00508F, "ASITA TECHNOLOGIES INT'L LTD.", "ASITA-TECHNOLOGIES" }, { 0x005057, "BROADBAND ACCESS SYSTEMS", "BROADBAND-ACCESS" }, { 0x005087, "TERASAKI ELECTRIC CO., LTD.", "TERASAKI-ELECTRIC" }, { 0x00D03E, "ROCKETCHIPS, INC.", "ROCKETCHIPS" }, { 0x00D03F, "AMERICAN COMMUNICATION", "AMERICAN-COMMUNICATION" }, { 0x00D033, "DALIAN DAXIAN NETWORK", "DALIAN-DAXIAN-NETWORK" }, { 0x00D0CE, "ASYST ELECTRONIC", "ASYST" }, { 0x00D090, "Cisco Systems, Inc", "CISCO" }, { 0x00D0B6, "CRESCENT NETWORKS, INC.", "CRESCENT-NETWORKS" }, { 0x00D0D2, "EPILOG CORPORATION", "EPILOG" }, { 0x0050B6, "GOOD WAY IND. CO., LTD.", "GOOD-WAY-IND" }, { 0x0050FF, "HAKKO ELECTRONICS CO., LTD.", "HAKKO-ELECTRONICS" }, { 0x005032, "PICAZO COMMUNICATIONS, INC.", "PICAZO-COMMUNICATION" }, { 0x0050DA, "3COM CORPORATION", "3COM" }, { 0x0050F9, "Sensormatic Electronics LLC", "SENSORMATIC-ELECTRONICS-LLC" }, { 0x0050F6, "PAN-INTERNATIONAL INDUSTRIAL CORP.", "PAN--INDUSTRIAL" }, { 0x00506C, "Beijer Electronics Products AB", "BEIJER-ELECTRONICS-PRODUCTS-AB" }, { 0x0050A5, "CAPITOL BUSINESS SYSTEMS, LTD.", "CAPITOL-BUSINESS" }, { 0x005000, "NEXO COMMUNICATIONS, INC.", "NEXO-COMMUNICATION" }, { 0x00D066, "WINTRISS ENGINEERING CORP.", "WINTRISS-ENGINEERING" }, { 0x00D06F, "KMC CONTROLS", "KMC-CONTROLS" }, { 0x00D04B, "LA CIE GROUP S.A.", "LA-CIE-GROUP" }, { 0x00D002, "DITECH CORPORATION", "DITECH" }, { 0x00D0A6, "LANBIRD TECHNOLOGY CO., LTD.", "LANBIRD" }, { 0x00D0DE, "PHILIPS MULTIMEDIA NETWORK", "PHILIPS-MULTIMEDIA-NETWORK" }, { 0x00D083, "INVERTEX, INC.", "INVERTEX" }, { 0x00D038, "FIVEMERE, LTD.", "FIVEMERE" }, { 0x00D00C, "SNIJDER MICRO SYSTEMS", "SNIJDER-MICRO" }, { 0x00D0F2, "MONTEREY NETWORKS", "MONTEREY-NETWORKS" }, { 0x00D07B, "COMCAM INTERNATIONAL INC", "COMCAM" }, { 0x00D05D, "INTELLIWORXX, INC.", "INTELLIWORXX" }, { 0x00D00D, "MICROMERITICS INSTRUMENT", "MICROMERITICS-INSTRUMENT" }, { 0x00D04C, "EUROTEL TELECOM LTD.", "EUROTEL-TELECOM" }, { 0x00D0FD, "OPTIMA TELE.COM, INC.", "OPTIMA-TELE-COM" }, { 0x0030D8, "SITEK", "SITEK" }, { 0x003062, "IP Video Networks Inc", "IP-VIDEO-NETWORKS" }, { 0x003081, "ALTOS C&C", "ALTOS-C-C" }, { 0x00D0B0, "BITSWITCH LTD.", "BITSWITCH" }, { 0x00D044, "ALIDIAN NETWORKS, INC.", "ALIDIAN-NETWORKS" }, { 0x00D004, "PENTACOM LTD.", "PENTACOM" }, { 0x00D045, "KVASER AB", "KVASER-AB" }, { 0x00D0D0, "ZHONGXING TELECOM LTD.", "ZHONGXING-TELECOM" }, { 0x00902C, "DATA & CONTROL EQUIPMENT LTD.", "DATA-CONTROL-EQUIPMENT" }, { 0x009049, "ENTRIDIA CORPORATION", "ENTRIDIA" }, { 0x009043, "Tattile SRL ", "TATTILE-SRL" }, { 0x009076, "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB", "FMT-AIRCRAFT-GATE-SUPPORT-AB" }, { 0x009017, "Zypcom, Inc", "ZYPCOM" }, { 0x00907B, "E-TECH, INC.", "E-TECH" }, { 0x00102A, "ZF MICROSYSTEMS, INC.", "ZF-MICROSYSTEMS" }, { 0x00107D, "AURORA COMMUNICATIONS, LTD.", "AURORA-COMMUNICATION" }, { 0x00101C, "OHM TECHNOLOGIES INTL, LLC", "OHM-TECHNOLOGIES-INTL-LLC" }, { 0x00106C, "EDNT GmbH", "EDNT" }, { 0x0010D4, "STORAGE COMPUTER CORPORATION", "STORAGE" }, { 0x0010BF, "InterAir Wireless", "INTERAIR-WIRELESS" }, { 0x001036, "INTER-TEL INTEGRATED SYSTEMS", "INTER-TEL-INTEGRATED" }, { 0x001026, "ACCELERATED NETWORKS, INC.", "ACCELERATED-NETWORKS" }, { 0x00104B, "3COM CORPORATION", "3COM" }, { 0x000629, "IBM Corp", "IBM" }, { 0x001004, "THE BRANTLEY COILE COMPANY,INC", "THE-BRANTLEY-COILE-COMPANY" }, { 0x00103A, "DIAMOND NETWORK TECH", "DIAMOND-NETWORK-TECH" }, { 0x0010D8, "CALISTA", "CALISTA" }, { 0x001031, "OBJECTIVE COMMUNICATIONS, INC.", "OBJECTIVE-COMMUNICATION" }, { 0x00107E, "BACHMANN ELECTRONIC GmbH", "BACHMANN" }, { 0x0010C0, "ARMA, Inc.", "ARMA" }, { 0x001016, "T.SQWARE", "T-SQWARE" }, { 0x00103D, "PHASECOM, LTD.", "PHASECOM" }, { 0x0010C2, "WILLNET, INC.", "WILLNET" }, { 0x00107A, "AmbiCom, Inc.", "AMBICOM" }, { 0x0010C4, "MEDIA GLOBAL LINKS CO., LTD.", "MEDIA-GLOBAL-LINKS" }, { 0x0010EB, "SELSIUS SYSTEMS, INC.", "SELSIUS" }, { 0x0010FE, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x00102E, "NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD.", "NETWORK-TECHNOLOGIES-PVT" }, { 0x00103E, "NETSCHOOLS CORPORATION", "NETSCHOOLS" }, { 0x001049, "ShoreTel, Inc", "SHORETEL" }, { 0x00105E, "Spirent plc, Service Assurance Broadband", "SPIRENT-PLC-SERVICE-ASSURANCE-BROADBAND" }, { 0x005088, "AMANO CORPORATION", "AMANO" }, { 0x0050A8, "OpenCon Systems, Inc.", "OPENCON" }, { 0x005062, "KOUWELL ELECTRONICS CORP. **", "KOUWELL-ELECTRONICS-**" }, { 0x0050B1, "GIDDINGS & LEWIS", "GIDDINGS-LEWIS" }, { 0x00500C, "e-Tek Labs, Inc.", "E-TEK-LABS" }, { 0x005091, "NETACCESS, INC.", "NETACCESS" }, { 0x005097, "MMC-EMBEDDED COMPUTERTECHNIK GmbH", "MMC-EMBEDDED-COMPUTERTECHNIK" }, { 0x0050AF, "INTERGON, INC.", "INTERGON" }, { 0x0050EB, "ALPHA-TOP CORPORATION", "ALPHA-TOP" }, { 0x0050BC, "HAMMER STORAGE SOLUTIONS", "HAMMER-STORAGE-SOLUTIONS" }, { 0x0090C3, "TOPIC SEMICONDUCTOR CORP.", "TOPIC-SEMICONDUCTOR" }, { 0x0090EC, "PYRESCOM", "PYRESCOM" }, { 0x00903B, "TriEMS Research Lab, Inc.", "TRIEMS-RESEARCH-LAB" }, { 0x009074, "ARGON NETWORKS, INC.", "ARGON-NETWORKS" }, { 0x0090C1, "Peco II, Inc.", "PECO-II" }, { 0x0010D3, "GRIPS ELECTRONIC GMBH", "GRIPS" }, { 0x0010ED, "SUNDANCE TECHNOLOGY, INC.", "SUNDANCE" }, { 0x001023, "Network Equipment Technologies", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x00104E, "CEOLOGIC", "CEOLOGIC" }, { 0x0010FB, "ZIDA TECHNOLOGIES LIMITED", "ZIDA-TECHNOLOGIES" }, { 0x0010AD, "SOFTRONICS USB, INC.", "SOFTRONICS-USB" }, { 0x0010D5, "IMASDE CANARIAS, S.A.", "IMASDE-CANARIAS" }, { 0x0010E5, "SOLECTRON TEXAS", "SOLECTRON-TEXAS" }, { 0x00909D, "NovaTech Process Solutions, LLC", "NOVATECH-PROCESS-SOLUTIONS-LLC" }, { 0x009038, "FOUNTAIN TECHNOLOGIES, INC.", "FOUNTAIN-TECHNOLOGIES" }, { 0x0090C5, "INTERNET MAGIC, INC.", "INTERNET-MAGIC" }, { 0x0090AD, "ASPECT ELECTRONICS, INC.", "ASPECT-ELECTRONICS" }, { 0x009097, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x009008, "HanA Systems Inc.", "HANA" }, { 0x0090D4, "BindView Development Corp.", "BINDVIEW-DEVELOPMENT" }, { 0x009089, "SOFTCOM MICROSYSTEMS, INC.", "SOFTCOM-MICROSYSTEMS" }, { 0x0090C4, "JAVELIN SYSTEMS, INC.", "JAVELIN" }, { 0x009014, "ROTORK INSTRUMENTS, LTD.", "ROTORK-INSTRUMENTS" }, { 0x0090B5, "NIKON CORPORATION", "NIKON" }, { 0x0090C6, "OPTIM SYSTEMS, INC.", "OPTIM" }, { 0x00909B, "MARKEM-IMAJE", "MARKEM-IMAJE" }, { 0x00905B, "RAYMOND AND LAE ENGINEERING", "RAYMOND-AND-LAE-ENGINEERING" }, { 0x0090E8, "MOXA TECHNOLOGIES CORP., LTD.", "MOXA-TECHNOLOGIES" }, { 0x0090A1, "Flying Pig Systems/High End Systems Inc.", "FLYING-PIG-/HIGH-END" }, { 0x0090FD, "CopperCom, Inc.", "COPPERCOM" }, { 0x0090AC, "OPTIVISION, INC.", "OPTIVISION" }, { 0x00902A, "COMMUNICATION DEVICES, INC.", "COMMUNICATION-DEVICES" }, { 0x009098, "SBC DESIGNS, INC.", "SBC-DESIGNS" }, { 0x0090CF, "NORTEL", "NORTEL" }, { 0x00900F, "KAWASAKI HEAVY INDUSTRIES, LTD", "KAWASAKI-HEAVY-INDUSTRIES" }, { 0x009036, "ens, inc.", "ENS" }, { 0x0090E9, "JANZ COMPUTER AG", "JANZ" }, { 0x009032, "PELCOMBE GROUP LTD.", "PELCOMBE-GROUP" }, { 0x0090B8, "ROHDE & SCHWARZ GMBH & CO. KG", "ROHDE-SCHWARZ" }, { 0x0090BE, "IBC/INTEGRATED BUSINESS COMPUTERS", "IBC/INTEGRATED-BUSINESS-COMPUTERS" }, { 0x009062, "ICP VORTEX COMPUTERSYSTEME GmbH", "ICP-VORTEX-COMPUTERSYSTEME" }, { 0x00108F, "RAPTOR SYSTEMS", "RAPTOR" }, { 0x001089, "WebSonic", "WEBSONIC" }, { 0x001086, "ATTO Technology, Inc.", "ATTO" }, { 0x001027, "L-3 COMMUNICATIONS EAST", "L-3-COMMUNICATION-EAST" }, { 0x0010B8, "ISHIGAKI COMPUTER SYSTEM CO.", "ISHIGAKI-SYSTEM" }, { 0x00104C, "Teledyne LeCroy, Inc", "TELEDYNE-LECROY" }, { 0x001001, "Citel", "CITEL" }, { 0x0010CF, "FIBERLANE COMMUNICATIONS", "FIBERLANE-COMMUNICATION" }, { 0x001068, "COMOS TELECOM", "COMOS-TELECOM" }, { 0x001067, "Ericsson", "ERICSSON" }, { 0x0010F1, "I-O CORPORATION", "I-O" }, { 0x001073, "TECHNOBOX, INC.", "TECHNOBOX" }, { 0x00E0C0, "SEIWA ELECTRIC MFG. CO., LTD.", "SEIWA-ELECTRIC-MFG" }, { 0x00E046, "BENTLY NEVADA CORP.", "BENTLY-NEVADA" }, { 0x00E015, "HEIWA CORPORATION", "HEIWA" }, { 0x00E065, "OPTICAL ACCESS INTERNATIONAL", "OPTICAL-ACCESS" }, { 0x00E069, "JAYCOR", "JAYCOR" }, { 0x00E05C, "Panasonic Healthcare Co., Ltd.", "PANASONIC-HEALTHCARE" }, { 0x00E087, "LeCroy - Networking Productions Division", "LECROY---NETWORKING-PRODUCTIONS-DIVISION" }, { 0x00E049, "MICROWI ELECTRONIC GmbH", "MICROWI" }, { 0x00E050, "EXECUTONE INFORMATION SYSTEMS, INC.", "EXECUTONE-INFORMATION" }, { 0x00E064, "SAMSUNG ELECTRONICS", "SAMSUNG-ELECTRONICS" }, { 0x00E012, "PLUTO TECHNOLOGIES INTERNATIONAL INC.", "PLUTO-TECHNOLOGIES" }, { 0x00E0D8, "LANBit Computer, Inc.", "LANBIT" }, { 0x00E02D, "InnoMediaLogic, Inc.", "INNOMEDIALOGIC" }, { 0x00E0A9, "FUNAI ELECTRIC CO., LTD.", "FUNAI-ELECTRIC" }, { 0x00E035, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x00E060, "SHERWOOD", "SHERWOOD" }, { 0x00E0A2, "MICROSLATE INC.", "MICROSLATE" }, { 0x00E0CE, "ARN", "ARN" }, { 0x00E05F, "e-Net, Inc.", "E-NET" }, { 0x00E0C7, "EUROTECH SRL", "EUROTECH-SRL" }, { 0x00E0C4, "HORNER ELECTRIC, INC.", "HORNER-ELECTRIC" }, { 0x00E04D, "INTERNET INITIATIVE JAPAN, INC", "INTERNET-INITIATIVE-JAPAN" }, { 0x00607F, "AURORA TECHNOLOGIES, INC.", "AURORA-TECHNOLOGIES" }, { 0x00E039, "PARADYNE CORP.", "PARADYNE" }, { 0x006091, "FIRST PACIFIC NETWORKS, INC.", "FIRST-PACIFIC-NETWORKS" }, { 0x006002, "SCREEN SUBTITLING SYSTEMS, LTD", "SCREEN-SUBTITLING" }, { 0x006061, "WHISTLE COMMUNICATIONS CORP.", "WHISTLE-COMMUNICATION" }, { 0x00E0A1, "HIMA PAUL HILDEBRANDT GmbH Co. KG", "HIMA-PAUL-HILDEBRANDT" }, { 0x00E028, "APTIX CORPORATION", "APTIX" }, { 0x00E0F2, "ARLOTTO COMNET, INC.", "ARLOTTO-COMNET" }, { 0x00E020, "TECNOMEN OY", "TECNOMEN-OY" }, { 0x00E0C5, "BCOM ELECTRONICS INC.", "BCOM-ELECTRONICS" }, { 0x00E0EE, "MAREL HF", "MAREL-HF" }, { 0x00E0AC, "MIDSCO, INC.", "MIDSCO" }, { 0x00E002, "CROSSROADS SYSTEMS, INC.", "CROSSROADS" }, { 0x00E057, "HAN MICROTELECOM. CO., LTD.", "HAN-MICROTELECOM" }, { 0x00E0F0, "ABLER TECHNOLOGY, INC.", "ABLER" }, { 0x00E0B7, "PI GROUP, LTD.", "PI-GROUP" }, { 0x0010B1, "FOR-A CO., LTD.", "FOR-A" }, { 0x001041, "BRISTOL BABCOCK, INC.", "BRISTOL-BABCOCK" }, { 0x0010F7, "IRIICHI TECHNOLOGIES Inc.", "IRIICHI-TECHNOLOGIES" }, { 0x0010E6, "APPLIED INTELLIGENT SYSTEMS, INC.", "APPLIED-INTELLIGENT" }, { 0x00101E, "MATSUSHITA ELECTRONIC INSTRUMENTS CORP.", "MATSUSHITA-INSTRUMENTS" }, { 0x0010F2, "ANTEC", "ANTEC" }, { 0x0010BE, "MARCH NETWORKS CORPORATION", "MARCH-NETWORKS" }, { 0x006058, "COPPER MOUNTAIN COMMUNICATIONS, INC.", "COPPER-MOUNTAIN-COMMUNICATION" }, { 0x00601B, "MESA ELECTRONICS", "MESA-ELECTRONICS" }, { 0x0060FF, "QuVis, Inc.", "QUVIS" }, { 0x006056, "NETWORK TOOLS, INC.", "NETWORK-TOOLS" }, { 0x0060D8, "ELMIC SYSTEMS, INC.", "ELMIC" }, { 0x00607A, "DVS GMBH", "DVS" }, { 0x006097, "3COM CORPORATION", "3COM" }, { 0x0060E3, "ARBIN INSTRUMENTS", "ARBIN-INSTRUMENTS" }, { 0x00E0FD, "A-TREND TECHNOLOGY CO., LTD.", "A-TREND" }, { 0x00E0FB, "LEIGHTRONIX, INC.", "LEIGHTRONIX" }, { 0x00E0D3, "DATENTECHNIK GmbH", "DATENTECHNIK" }, { 0x00E05E, "JAPAN AVIATION ELECTRONICS INDUSTRY, LTD.", "JAPAN-AVIATION-ELECTRONICS-INDUSTRY" }, { 0x00E0E5, "CINCO NETWORKS, INC.", "CINCO-NETWORKS" }, { 0x00A0FD, "SCITEX DIGITAL PRINTING, INC.", "SCITEX-DIGITAL-PRINTING" }, { 0x00A0F5, "RADGUARD LTD.", "RADGUARD" }, { 0x00A022, "CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING", "CENTRE-FOR-DEVELOPMENT-OF-ADVANCED-COMPUTING" }, { 0x00A087, "Microsemi Corporation", "MICROSEMI" }, { 0x00A007, "APEXX TECHNOLOGY, INC.", "APEXX" }, { 0x00A066, "ISA CO., LTD.", "ISA" }, { 0x00A0AB, "NETCS INFORMATIONSTECHNIK GMBH", "NETCS-INFORMATIONSTECHNIK" }, { 0x00A0D8, "SPECTRA - TEK", "SPECTRA---TEK" }, { 0x00A01A, "BINAR ELEKTRONIK AB", "BINAR-ELEKTRONIK-AB" }, { 0x00A0E8, "REUTERS HOLDINGS PLC", "REUTERS-HOLDINGS-PLC" }, { 0x00A076, "CARDWARE LAB, INC.", "CARDWARE-LAB" }, { 0x00A0A3, "RELIABLE POWER METERS", "RELIABLE-POWER-METERS" }, { 0x00A055, "Data Device Corporation", "DATA-DEVICE" }, { 0x00A065, "Symantec Corporation", "SYMANTEC" }, { 0x00A044, "NTT IT CO., LTD.", "NTT-IT" }, { 0x006008, "3COM CORPORATION", "3COM" }, { 0x0060EF, "FLYTECH TECHNOLOGY CO., LTD.", "FLYTECH" }, { 0x006098, "HT COMMUNICATIONS", "HT-COMMUNICATION" }, { 0x0060F7, "DATAFUSION SYSTEMS", "DATAFUSION" }, { 0x0060DE, "Kayser-Threde GmbH", "KAYSER-THREDE" }, { 0x0060D0, "SNMP RESEARCH INCORPORATED", "SNMP-RESEARCH-INCORPORATED" }, { 0x006079, "Mainstream Data, Inc.", "MAINSTREAM-DATA" }, { 0x006020, "PIVOTAL NETWORKING, INC.", "PIVOTAL-NETWORKING" }, { 0x0005A8, "WYLE ELECTRONICS", "WYLE-ELECTRONICS" }, { 0x0060B7, "CHANNELMATIC, INC.", "CHANNELMATIC" }, { 0x0060A3, "CONTINUUM TECHNOLOGY CORP.", "CONTINUUM" }, { 0x006050, "INTERNIX INC.", "INTERNIX" }, { 0x0060E0, "AXIOM TECHNOLOGY CO., LTD.", "AXIOM" }, { 0x0060A8, "TIDOMAT AB", "TIDOMAT-AB" }, { 0x00A056, "MICROPROSS", "MICROPROSS" }, { 0x00A051, "ANGIA COMMUNICATIONS. INC.", "ANGIA-COMMUNICATION" }, { 0x00A0A6, "M.I. SYSTEMS, K.K.", "M-I-K-K" }, { 0x00A05F, "BTG Electronics Design BV", "BTG-ELECTRONICS-DESIGN" }, { 0x00A094, "COMSAT CORPORATION", "COMSAT" }, { 0x00A010, "SYSLOGIC DATENTECHNIK AG", "SYSLOGIC-DATENTECHNIK" }, { 0x00A063, "JRL SYSTEMS, INC.", "JRL" }, { 0x00A08F, "DESKNET SYSTEMS, INC.", "DESKNET" }, { 0x00A0CC, "LITE-ON COMMUNICATIONS, INC.", "LITE-ON-COMMUNICATION" }, { 0x00A090, "TimeStep Corporation", "TIMESTEP" }, { 0x00A0F7, "V.I COMPUTER CORP.", "V-I" }, { 0x00A09C, "Xyplex, Inc.", "XYPLEX" }, { 0x00A092, "H. BOLLMANN MANUFACTURERS, LTD", "H-BOLLMANN-MANUFACTURERS" }, { 0x00A04D, "EDA INSTRUMENTS, INC.", "EDA-INSTRUMENTS" }, { 0x00A0DB, "FISHER & PAYKEL PRODUCTION", "FISHER-PAYKEL-PRODUCTION" }, { 0x00A0A5, "TEKNOR MICROSYSTEME, INC.", "TEKNOR-MICROSYSTEME" }, { 0x00A018, "CREATIVE CONTROLLERS, INC.", "CREATIVE-CONTROLLERS" }, { 0x00A09F, "COMMVISION CORP.", "COMMVISION" }, { 0x00A06B, "DMS DORSCH MIKROSYSTEM GMBH", "DMS-DORSCH-MIKROSYSTEM" }, { 0x006051, "QUALITY SEMICONDUCTOR", "QUALITY-SEMICONDUCTOR" }, { 0x00605E, "LIBERTY TECHNOLOGY NETWORKING", "LIBERTY-NETWORKING" }, { 0x0060C6, "DCS AG", "DCS" }, { 0x00609E, "ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS", "ASC-X3---INFORMATION-STANDARDS-SECRETARIATS" }, { 0x006084, "DIGITAL VIDEO", "DIGITAL-VIDEO" }, { 0x00602D, "ALERTON TECHNOLOGIES, INC.", "ALERTON-TECHNOLOGIES" }, { 0x006093, "VARIAN", "VARIAN" }, { 0x0060E2, "QUEST ENGINEERING & DEVELOPMENT", "QUEST-ENGINEERING-DEVELOPMENT" }, { 0x00A039, "ROSS TECHNOLOGY, INC.", "ROSS" }, { 0x00A06D, "MANNESMANN TALLY CORPORATION", "MANNESMANN-TALLY" }, { 0x00608E, "HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH", "HE-ELECTRONICS-TECHNOLOGIE-SYSTEMTECHNIK" }, { 0x0060F0, "JOHNSON & JOHNSON MEDICAL, INC", "JOHNSON-JOHNSON-MEDICAL" }, { 0x0060D2, "LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD.", "LUCENT-TECHNOLOGIES-TAIWAN-TELECOMMUNICATIONS" }, { 0x006077, "PRISA NETWORKS", "PRISA-NETWORKS" }, { 0x0060AB, "LARSCOM INCORPORATED", "LARSCOM-INCORPORATED" }, { 0x0060E9, "ATOP TECHNOLOGIES, INC.", "ATOP-TECHNOLOGIES" }, { 0x00608B, "ConferTech International", "CONFERTECH" }, { 0x0060C3, "NETVISION CORPORATION", "NETVISION" }, { 0x00A0A0, "COMPACT DATA, LTD.", "COMPACT-DATA" }, { 0x00A024, "3COM CORPORATION", "3COM" }, { 0x00A08B, "ASTON ELECTRONIC DESIGNS LTD.", "ASTON-DESIGNS" }, { 0x00A0AA, "SPACELABS MEDICAL", "SPACELABS-MEDICAL" }, { 0x00A04F, "AMERITEC CORP.", "AMERITEC" }, { 0x00A073, "COM21, INC.", "COM21" }, { 0x00A084, "Dataplex Pty Ltd", "DATAPLEX-PTY" }, { 0x00A034, "AXEL", "AXEL" }, { 0x00C0BC, "TELECOM AUSTRALIA/CSSC", "TELECOM-AUSTRALIA/CSSC" }, { 0x00C0EF, "ABIT CORPORATION", "ABIT" }, { 0x00C03C, "TOWER TECH S.R.L.", "TOWER-TECH-S-R-L" }, { 0x00C061, "SOLECTEK CORPORATION", "SOLECTEK" }, { 0x00C074, "TOYODA AUTOMATIC LOOM", "TOYODA-AUTOMATIC-LOOM" }, { 0x00C07F, "NUPON COMPUTING CORP.", "NUPON-COMPUTING" }, { 0x00C027, "CIPHER SYSTEMS, INC.", "CIPHER" }, { 0x00C025, "DATAPRODUCTS CORPORATION", "DATAPRODUCTS" }, { 0x00C022, "LASERMASTER TECHNOLOGIES, INC.", "LASERMASTER-TECHNOLOGIES" }, { 0x00C0E6, "Verilink Corporation", "VERILINK" }, { 0x00C05C, "ELONEX PLC", "ELONEX-PLC" }, { 0x00C0C1, "QUAD/GRAPHICS, INC.", "QUAD/GRAPHICS" }, { 0x00C091, "JABIL CIRCUIT, INC.", "JABIL-CIRCUIT" }, { 0x00C002, "SERCOMM CORPORATION", "SERCOMM" }, { 0x00C0F5, "METACOMP, INC.", "METACOMP" }, { 0x00C042, "DATALUX CORP.", "DATALUX" }, { 0x00C089, "TELINDUS DISTRIBUTION", "TELINDUS-DISTRIBUTION" }, { 0x00C09D, "DISTRIBUTED SYSTEMS INT'L, INC", "DISTRIBUTED" }, { 0x00C0A5, "DICKENS DATA SYSTEMS", "DICKENS-DATA" }, { 0x00C0E3, "OSITECH COMMUNICATIONS, INC.", "OSITECH-COMMUNICATION" }, { 0x00C071, "AREANEX COMMUNICATIONS, INC.", "AREANEX-COMMUNICATION" }, { 0x00C0AF, "TEKLOGIX INC.", "TEKLOGIX" }, { 0x00209F, "MERCURY COMPUTER SYSTEMS, INC.", "MERCURY" }, { 0x0020B7, "NAMAQUA COMPUTERWARE", "NAMAQUA-COMPUTERWARE" }, { 0x00201B, "NORTHERN TELECOM/NETWORK", "NORTHERN-TELECOM/NETWORK" }, { 0x0020C0, "PULSE ELECTRONICS, INC.", "PULSE-ELECTRONICS" }, { 0x00208D, "CMD TECHNOLOGY", "CMD" }, { 0x0020DD, "Cybertec Pty Ltd", "CYBERTEC-PTY" }, { 0x0020BD, "NIOBRARA R & D CORPORATION", "NIOBRARA-R-D" }, { 0x0020E6, "LIDKOPING MACHINE TOOLS AB", "LIDKOPING-MACHINE-TOOLS-AB" }, { 0x002047, "STEINBRECHER CORP.", "STEINBRECHER" }, { 0x0020B5, "YASKAWA ELECTRIC CORPORATION", "YASKAWA-ELECTRIC" }, { 0x002072, "WORKLINK INNOVATIONS", "WORKLINK-INNOVATIONS" }, { 0x0020B8, "PRIME OPTION, INC.", "PRIME-OPTION" }, { 0x002092, "CHESS ENGINEERING B.V.", "CHESS-ENGINEERING" }, { 0x0020B9, "METRICOM, INC.", "METRICOM" }, { 0x00206B, "KONICA MINOLTA HOLDINGS, INC.", "KONICA-MINOLTA-HOLDINGS" }, { 0x0020FC, "MATROX", "MATROX" }, { 0x00C003, "GLOBALNET COMMUNICATIONS", "GLOBALNET-COMMUNICATION" }, { 0x00C0C3, "ACUSON COMPUTED SONOGRAPHY", "ACUSON-COMPUTED-SONOGRAPHY" }, { 0x00C04D, "MITEC, INC.", "MITEC" }, { 0x00C055, "MODULAR COMPUTING TECHNOLOGIES", "MODULAR-COMPUTING-TECHNOLOGIES" }, { 0x00C067, "UNITED BARCODE INDUSTRIES", "UNITED-BARCODE-INDUSTRIES" }, { 0x00C0B4, "MYSON TECHNOLOGY, INC.", "MYSON" }, { 0x00C080, "NETSTAR, INC.", "NETSTAR" }, { 0x00C015, "NEW MEDIA CORPORATION", "NEW-MEDIA" }, { 0x0070B3, "DATA RECALL LTD.", "DATA-RECALL" }, { 0x00E6D3, "NIXDORF COMPUTER CORP.", "NIXDORF" }, { 0x00C083, "TRACE MOUNTAIN PRODUCTS, INC.", "TRACE-MOUNTAIN-PRODUCTS" }, { 0x00C005, "LIVINGSTON ENTERPRISES, INC.", "LIVINGSTON-ENTERPRISES" }, { 0x00C0C8, "MICRO BYTE PTY. LTD.", "MICRO-BYTE-PTY" }, { 0x00C090, "PRAIM S.R.L.", "PRAIM-S-R-L" }, { 0x00C011, "INTERACTIVE COMPUTING DEVICES", "INTERACTIVE-COMPUTING-DEVICES" }, { 0x00C0FD, "PROSUM", "PROSUM" }, { 0x00C041, "DIGITAL TRANSMISSION SYSTEMS", "DIGITAL-TRANSMISSION" }, { 0x00C00F, "QUANTUM SOFTWARE SYSTEMS LTD.", "QUANTUM-SOFTWARE" }, { 0x00C076, "I-DATA INTERNATIONAL A-S", "I-DATA-A-S" }, { 0x00C0C6, "PERSONAL MEDIA CORP.", "PERSONAL-MEDIA" }, { 0x00C03B, "MULTIACCESS COMPUTING CORP.", "MULTIACCESS-COMPUTING" }, { 0x0020F4, "SPECTRIX CORPORATION", "SPECTRIX" }, { 0x00204E, "NETWORK SECURITY SYSTEMS, INC.", "NETWORK-SECURITY" }, { 0x002027, "MING FORTUNE INDUSTRY CO., LTD", "MING-FORTUNE-INDUSTRY" }, { 0x0020ED, "GIGA-BYTE TECHNOLOGY CO., LTD.", "GIGA-BYTE" }, { 0x00200E, "SATELLITE TECHNOLOGY MGMT, INC", "SATELLITE-MGMT" }, { 0x002096, "Invensys", "INVENSYS" }, { 0x0020BB, "ZAX CORPORATION", "ZAX" }, { 0x00204D, "INOVIS GMBH", "INOVIS" }, { 0x002089, "T3PLUS NETWORKING, INC.", "T3PLUS-NETWORKING" }, { 0x00205F, "GAMMADATA COMPUTER GMBH", "GAMMADATA" }, { 0x002035, "IBM Corp", "IBM" }, { 0x0020E2, "INFORMATION RESOURCE ENGINEERING", "INFORMATION-RESOURCE-ENGINEERING" }, { 0x002058, "ALLIED SIGNAL INC.", "ALLIED-SIGNAL" }, { 0x002081, "TITAN ELECTRONICS", "TITAN-ELECTRONICS" }, { 0x00201D, "KATANA PRODUCTS", "KATANA-PRODUCTS" }, { 0x0020CF, "TEST & MEASUREMENT SYSTEMS INC", "TEST-MEASUREMENT" }, { 0x002043, "NEURON COMPANY LIMITED", "NEURON-COMPANY" }, { 0x002018, "CIS TECHNOLOGY INC.", "CIS" }, { 0x002031, "Tattile SRL ", "TATTILE-SRL" }, { 0x0020DE, "JAPAN DIGITAL LABORAT'Y CO.LTD", "JAPAN-DIGITAL-LABORAT-Y" }, { 0x0020F7, "CYBERDATA CORPORATION", "CYBERDATA" }, { 0x0020EE, "GTECH CORPORATION", "GTECH" }, { 0x00208C, "GALAXY NETWORKS, INC.", "GALAXY-NETWORKS" }, { 0x002063, "WIPRO INFOTECH LTD.", "WIPRO-INFOTECH" }, { 0x0020DC, "DENSITRON TAIWAN LTD.", "DENSITRON-TAIWAN" }, { 0x002078, "RUNTOP, INC.", "RUNTOP" }, { 0x002042, "DATAMETRICS CORP.", "DATAMETRICS" }, { 0x0020F8, "CARRERA COMPUTERS, INC.", "CARRERA-COMPUTERS" }, { 0x00200C, "ADASTRA SYSTEMS CORP.", "ADASTRA" }, { 0x0020C4, "INET,INC.", "INET" }, { 0x00C099, "YOSHIKI INDUSTRIAL CO.,LTD.", "YOSHIKI-INDUSTRIAL" }, { 0x00C0FC, "ELASTIC REALITY, INC.", "ELASTIC-REALITY" }, { 0x00C0D0, "RATOC SYSTEM INC.", "RATOC-SYSTEM" }, { 0x00C07A, "PRIVA B.V.", "PRIVA" }, { 0x000701, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x00C09C, "HIOKI E.E. CORPORATION", "HIOKI-E-E" }, { 0x00C004, "JAPAN BUSINESS COMPUTER CO.LTD", "JAPAN-BUSINESS" }, { 0x00C062, "IMPULSE TECHNOLOGY", "IMPULSE" }, { 0x000267, "NODE RUNNER, INC.", "NODE-RUNNER" }, { 0x002064, "PROTEC MICROSYSTEMS, INC.", "PROTEC-MICROSYSTEMS" }, { 0x002032, "ALCATEL TAISEL", "ALCATEL-TAISEL" }, { 0x00207F, "KYOEI SANGYO CO., LTD.", "KYOEI-SANGYO" }, { 0x002077, "KARDIOS SYSTEMS CORP.", "KARDIOS" }, { 0x002068, "ISDYNE", "ISDYNE" }, { 0x00202A, "N.V. DZINE", "N-V-DZINE" }, { 0x008006, "COMPUADD CORPORATION", "COMPUADD" }, { 0x0080EF, "RATIONAL", "RATIONAL" }, { 0x0080C4, "DOCUMENT TECHNOLOGIES, INC.", "DOCUMENT-TECHNOLOGIES" }, { 0x008095, "BASIC MERTON HANDELSGES.M.B.H.", "BASIC-MERTON-HANDELSGES-M-B-H" }, { 0x008053, "INTELLICOM, INC.", "INTELLICOM" }, { 0x008026, "NETWORK PRODUCTS CORPORATION", "NETWORK-PRODUCTS" }, { 0x0080FE, "AZURE TECHNOLOGIES, INC.", "AZURE-TECHNOLOGIES" }, { 0x008028, "TRADPOST (HK) LTD", "TRADPOST-HK" }, { 0x0080B6, "THEMIS COMPUTER", "THEMIS" }, { 0x0080C0, "PENRIL DATACOMM", "PENRIL-DATACOMM" }, { 0x0080F5, "Quantel Ltd", "QUANTEL" }, { 0x00401D, "INVISIBLE SOFTWARE, INC.", "INVISIBLE-SOFTWARE" }, { 0x0040BD, "STARLIGHT NETWORKS, INC.", "STARLIGHT-NETWORKS" }, { 0x00406D, "LANCO, INC.", "LANCO" }, { 0x00404D, "TELECOMMUNICATIONS TECHNIQUES", "TELECOMMUNICATIONS-TECHNIQUES" }, { 0x0040A5, "CLINICOMP INTL.", "CLINICOMP-INTL" }, { 0x004059, "YOSHIDA KOGYO K. K.", "YOSHIDA-KOGYO-K-K" }, { 0x004021, "RASTER GRAPHICS", "RASTER-GRAPHICS" }, { 0x004081, "MANNESMANN SCANGRAPHIC GMBH", "MANNESMANN-SCANGRAPHIC" }, { 0x00806C, "CEGELEC PROJECTS LTD", "CEGELEC-PROJECTS" }, { 0x00404A, "WEST AUSTRALIAN DEPARTMENT", "WEST-AUSTRALIAN-DEPARTMENT" }, { 0x00400A, "PIVOTAL TECHNOLOGIES, INC.", "PIVOTAL-TECHNOLOGIES" }, { 0x004032, "DIGITAL COMMUNICATIONS", "DIGITAL-COMMUNICATION" }, { 0x004042, "N.A.T. GMBH", "N-A-T" }, { 0x0040C2, "APPLIED COMPUTING DEVICES", "APPLIED-COMPUTING-DEVICES" }, { 0x00403C, "FORKS, INC.", "FORKS" }, { 0x0040C4, "KINKEI SYSTEM CORPORATION", "KINKEI-SYSTEM" }, { 0x0040D1, "FUKUDA DENSHI CO., LTD.", "FUKUDA-DENSHI" }, { 0x004024, "COMPAC INC.", "COMPAC" }, { 0x0040B6, "COMPUTERM CORPORATION", "COMPUTERM" }, { 0x00403F, "SSANGYONG COMPUTER SYSTEMS", "SSANGYONG" }, { 0x004003, "Emerson Process Management Power & Water Solutions, Inc.", "EMERSON-PROCESS-MANAGEMENT-POWER-WATER-SOLUTIONS" }, { 0x004090, "ANSEL COMMUNICATIONS", "ANSEL-COMMUNICATION" }, { 0x00409A, "NETWORK EXPRESS, INC.", "NETWORK-EXPRESS" }, { 0x0040DE, "Elsag Datamat spa", "ELSAG-DATAMAT-SPA" }, { 0x004063, "VIA TECHNOLOGIES, INC.", "VIA-TECHNOLOGIES" }, { 0x00406C, "COPERNIQUE", "COPERNIQUE" }, { 0x0040DF, "DIGALOG SYSTEMS, INC.", "DIGALOG" }, { 0x004015, "ASCOM INFRASYS AG", "ASCOM-INFRASYS" }, { 0x008056, "SPHINX Electronics GmbH & Co KG", "SPHINX-ELECTRONICS" }, { 0x008060, "NETWORK INTERFACE CORPORATION", "NETWORK-INTERFACE" }, { 0x00805E, "LSI LOGIC CORPORATION", "LSI-LOGIC" }, { 0x008093, "XYRON CORPORATION", "XYRON" }, { 0x00C05D, "L&N TECHNOLOGIES", "L-N-TECHNOLOGIES" }, { 0x00C0E4, "SIEMENS BUILDING", "SIEMENS-BUILDING" }, { 0x00C01B, "SOCKET COMMUNICATIONS, INC.", "SOCKET-COMMUNICATION" }, { 0x00C06E, "HAFT TECHNOLOGY, INC.", "HAFT" }, { 0x00406F, "SYNC RESEARCH INC.", "SYNC-RESEARCH" }, { 0x00401F, "COLORGRAPH LTD", "COLORGRAPH" }, { 0x0040CF, "STRAWBERRY TREE, INC.", "STRAWBERRY-TREE" }, { 0x0040F7, "Polaroid Corporation", "POLAROID" }, { 0x004037, "SEA-ILAN, INC.", "SEA-ILAN" }, { 0x0040CC, "SILCOM MANUF'G TECHNOLOGY INC.", "SILCOM-MANUF-G" }, { 0x004052, "STAR TECHNOLOGIES, INC.", "STAR-TECHNOLOGIES" }, { 0x00407A, "SOCIETE D'EXPLOITATION DU CNIT", "SOCIETE-D-EXPLOITATION-DU-CNIT" }, { 0x004089, "MEIDENSHA CORPORATION", "MEIDENSHA" }, { 0x00405A, "GOLDSTAR INFORMATION & COMM.", "GOLDSTAR-INFORMATION-COMM" }, { 0x00404C, "HYPERTEC PTY LTD.", "HYPERTEC-PTY" }, { 0x00C0CB, "CONTROL TECHNOLOGY CORPORATION", "CONTROL" }, { 0x00C09A, "PHOTONICS CORPORATION", "PHOTONICS" }, { 0x00C01A, "COROMETRICS MEDICAL SYSTEMS", "COROMETRICS-MEDICAL" }, { 0x00404B, "MAPLE COMPUTER SYSTEMS", "MAPLE" }, { 0x004055, "METRONIX GMBH", "METRONIX" }, { 0x004045, "TWINHEAD CORPORATION", "TWINHEAD" }, { 0x00409D, "DIGIBOARD, INC.", "DIGIBOARD" }, { 0x00401A, "FUJI ELECTRIC CO., LTD.", "FUJI-ELECTRIC" }, { 0x0040B9, "MACQ ELECTRONIQUE SA", "MACQ-ELECTRONIQUE" }, { 0x0040C7, "RUBY TECH CORPORATION", "RUBY-TECH" }, { 0x004004, "ICM CO. LTD.", "ICM" }, { 0x004070, "INTERWARE CO., LTD.", "INTERWARE" }, { 0x008057, "ADSOFT, LTD.", "ADSOFT" }, { 0x00807A, "AITECH SYSTEMS LTD.", "AITECH" }, { 0x0080AA, "MAXPEED", "MAXPEED" }, { 0x00C0E7, "FIBERDATA AB", "FIBERDATA-AB" }, { 0x00800A, "JAPAN COMPUTER CORP.", "JAPAN" }, { 0x00806E, "NIPPON STEEL CORPORATION", "NIPPON-STEEL" }, { 0x008010, "COMMODORE INTERNATIONAL", "COMMODORE" }, { 0x0080DA, "Bruel & Kjaer Sound & Vibration Measurement A/S", "BRUEL-KJAER-SOUND-VIBRATION-MEASUREMENT-A/S" }, { 0x0080BC, "HITACHI ENGINEERING CO., LTD", "HITACHI-ENGINEERING" }, { 0x008000, "MULTITECH SYSTEMS, INC.", "MULTITECH" }, { 0x0080A1, "MICROTEST, INC.", "MICROTEST" }, { 0x0080D0, "COMPUTER PERIPHERALS, INC.", "PERIPHERALS" }, { 0x00807D, "EQUINOX SYSTEMS INC.", "EQUINOX" }, { 0x008063, "Hirschmann Automation and Control GmbH", "HIRSCHMANN-AUTOMATION-AND-CONTROL" }, { 0x00608C, "3COM CORPORATION", "3COM" }, { 0x00804E, "APEX COMPUTER COMPANY", "APEX-COMPANY" }, { 0x00800E, "ATLANTIX CORPORATION", "ATLANTIX" }, { 0x00806F, "ONELAN LTD.", "ONELAN" }, { 0x008098, "TDK CORPORATION", "TDK" }, { 0x00809C, "LUXCOM, INC.", "LUXCOM" }, { 0x008065, "CYBERGRAPHIC SYSTEMS PTY LTD.", "CYBERGRAPHIC-PTY" }, { 0x008016, "WANDEL AND GOLTERMANN", "WANDEL-AND-GOLTERMANN" }, { 0x0080E6, "PEER NETWORKS, INC.", "PEER-NETWORKS" }, { 0x0080A2, "CREATIVE ELECTRONIC SYSTEMS", "CREATIVE" }, { 0x0080E0, "XTP SYSTEMS, INC.", "XTP" }, { 0x008050, "ZIATECH CORPORATION", "ZIATECH" }, { 0x0000E0, "QUADRAM CORP.", "QUADRAM" }, { 0x000057, "SCITEX CORPORATION LTD.", "SCITEX" }, { 0x0000D6, "PUNCH LINE HOLDING", "PUNCH-LINE-HOLDING" }, { 0x0000C8, "ALTOS COMPUTER SYSTEMS", "ALTOS" }, { 0x000098, "CROSSCOMM CORPORATION", "CROSSCOMM" }, { 0x00007D, "Oracle Corporation", "ORACLE" }, { 0x0000A2, "Bay Networks", "BAY-NETWORKS" }, { 0x000038, "CSS LABS", "CSS-LABS" }, { 0x000061, "GATEWAY COMMUNICATIONS", "GATEWAY-COMMUNICATION" }, { 0x000043, "MICRO TECHNOLOGY", "MICRO" }, { 0x0000E7, "Star Gate Technologies", "STAR-GATE-TECHNOLOGIES" }, { 0x0000F3, "GANDALF DATA LIMITED", "GANDALF-DATA" }, { 0x00002C, "AUTOTOTE LIMITED", "AUTOTOTE" }, { 0x00002A, "TRW - SEDD/INP", "TRW---SEDD/INP" }, { 0x0000F1, "MAGNA COMPUTER CORPORATION", "MAGNA" }, { 0x000083, "TADPOLE TECHNOLOGY PLC", "TADPOLE-PLC" }, { 0x000020, "DATAINDUSTRIER DIAB AB", "DATAINDUSTRIER-DIAB-AB" }, { 0x00007A, "DANA COMPUTER INC.", "DANA" }, { 0x00007C, "AMPERE INCORPORATED", "AMPERE-INCORPORATED" }, { 0x00008A, "DATAHOUSE INFORMATION SYSTEMS", "DATAHOUSE-INFORMATION" }, { 0x000068, "ROSEMOUNT CONTROLS", "ROSEMOUNT-CONTROLS" }, { 0x0000A8, "STRATUS COMPUTER INC.", "STRATUS" }, { 0x0000DF, "BELL & HOWELL PUB SYS DIV", "BELL-HOWELL-PUB-SYS-DIV" }, { 0x000062, "BULL HN INFORMATION SYSTEMS", "BULL-HN-INFORMATION" }, { 0x0000AD, "BRUKER INSTRUMENTS INC.", "BRUKER-INSTRUMENTS" }, { 0x0000D0, "DEVELCON ELECTRONICS LTD.", "DEVELCON-ELECTRONICS" }, { 0x000093, "PROTEON INC.", "PROTEON" }, { 0x008008, "DYNATECH COMPUTER SYSTEMS", "DYNATECH" }, { 0x0080FF, "SOC. DE TELEINFORMATIQUE RTC", "SOC-DE-TELEINFORMATIQUE-RTC" }, { 0x000070, "HCL LIMITED", "HCL" }, { 0x00008E, "SOLBOURNE COMPUTER, INC.", "SOLBOURNE" }, { 0x0000DC, "HAYES MICROCOMPUTER PRODUCTS", "HAYES-MICROCOMPUTER-PRODUCTS" }, { 0x000024, "CONNECT AS", "CONNECT-AS" }, { 0x008030, "NEXUS ELECTRONICS", "NEXUS-ELECTRONICS" }, { 0x008022, "SCAN-OPTICS", "SCAN-OPTICS" }, { 0x000041, "ICE CORPORATION", "ICE" }, { 0x00001E, "TELSIST INDUSTRIA ELECTRONICA", "TELSIST-INDUSTRIA-ELECTRONICA" }, { 0x00807B, "ARTEL COMMUNICATIONS CORP.", "ARTEL-COMMUNICATION" }, { 0x00802E, "CASTLE ROCK COMPUTING", "CASTLE-ROCK-COMPUTING" }, { 0x0080F9, "HEURIKON CORPORATION", "HEURIKON" }, { 0x008005, "CACTUS COMPUTER INC.", "CACTUS" }, { 0x00801D, "INTEGRATED INFERENCE MACHINES", "INTEGRATED-INFERENCE-MACHINES" }, { 0x008015, "SEIKO SYSTEMS, INC.", "SEIKO" }, { 0x008034, "SMT GOUPIL", "SMT-GOUPIL" }, { 0x0080C9, "ALBERTA MICROELECTRONIC CENTRE", "ALBERTA-MICROELECTRONIC-CENTRE" }, { 0x00800B, "CSK CORPORATION", "CSK" }, { 0x000016, "DU PONT PIXEL SYSTEMS .", "DU-PONT-PIXEL" }, { 0x00005C, "TELEMATICS INTERNATIONAL INC.", "TELEMATICS" }, { 0x0000AC, "CONWARE COMPUTER CONSULTING", "CONWARE-CONSULTING" }, { 0x0000F2, "SPIDER COMMUNICATIONS", "SPIDER-COMMUNICATION" }, { 0x000030, "VG LABORATORY SYSTEMS LTD", "VG-LABORATORY" }, { 0x000035, "SPECTRAGRAPHICS CORPORATION", "SPECTRAGRAPHICS" }, { 0x020701, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x080011, "TEKTRONIX INC.", "TEKTRONIX" }, { 0x080040, "FERRANTI COMPUTER SYS. LIMITED", "FERRANTI-SYS" }, { 0x08003B, "TORUS SYSTEMS LIMITED", "TORUS" }, { 0x08003D, "CADNETIX CORPORATIONS", "CADNETIX-CORPORATIONS" }, { 0x080039, "SPIDER SYSTEMS LIMITED", "SPIDER" }, { 0x080030, "NETWORK RESEARCH CORPORATION", "NETWORK-RESEARCH" }, { 0x00009B, "INFORMATION INTERNATIONAL, INC", "INFORMATION" }, { 0x00DD0F, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x000001, "XEROX CORPORATION", "XEROX" }, { 0x080021, "3M COMPANY", "3M-COMPANY" }, { 0xAA0004, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x08000C, "MIKLYN DEVELOPMENT CO.", "MIKLYN-DEVELOPMENT" }, { 0x00DD08, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x0000A0, "SANYO Electric Co., Ltd.", "SANYO-ELECTRIC" }, { 0x08007F, "CARNEGIE-MELLON UNIVERSITY", "CARNEGIE-MELLON-UNIVERSITY" }, { 0x080082, "VERITAS SOFTWARE", "VERITAS-SOFTWARE" }, { 0x08007B, "SANYO ELECTRIC CO. LTD.", "SANYO-ELECTRIC" }, { 0x00DD0C, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x000005, "XEROX CORPORATION", "XEROX" }, { 0x0000AA, "XEROX CORPORATION", "XEROX" }, { 0x00406B, "SYSGEN", "SYSGEN" }, { 0xAA0001, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x080001, "COMPUTERVISION CORPORATION", "COMPUTERVISION" }, { 0x000053, "COMPUCORP", "COMPUCORP" }, { 0x08004B, "Planning Research Corp.", "PLANNING-RESEARCH" }, { 0x080003, "ADVANCED COMPUTER COMM.", "ADVANCED-COMM" }, { 0x080074, "CASIO COMPUTER CO. LTD.", "CASIO" }, { 0x08005E, "COUNTERPOINT COMPUTER INC.", "COUNTERPOINT" }, { 0x08005A, "IBM Corp", "IBM" }, { 0x080056, "STANFORD LINEAR ACCEL. CENTER", "STANFORD-LINEAR-ACCEL-CENTER" }, { 0x080053, "MIDDLE EAST TECH. UNIVERSITY", "MIDDLE-EAST-TECH-UNIVERSITY" }, { 0x08004F, "CYGNET SYSTEMS", "CYGNET" }, { 0x00194B, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x001F95, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x000E59, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xA01B29, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x90013B, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x00235A, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x001B38, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xE46F13, "D-Link International", "D-LINK" }, { 0x94C150, "2Wire Inc", "2WIRE" }, { 0x60FE20, "2Wire Inc", "2WIRE" }, { 0x989096, "Dell Inc.", "DELL" }, { 0xB82A72, "Dell Inc.", "DELL" }, { 0x00D09E, "2Wire Inc", "2WIRE" }, { 0x000D72, "2Wire Inc", "2WIRE" }, { 0x000F1F, "Dell Inc.", "DELL" }, { 0x14FEB5, "Dell Inc.", "DELL" }, { 0x0015C5, "Dell Inc.", "DELL" }, { 0xD4AE52, "Dell Inc.", "DELL" }, { 0xB0E754, "2Wire Inc", "2WIRE" }, { 0xB8E625, "2Wire Inc", "2WIRE" }, { 0x549F35, "Dell Inc.", "DELL" }, { 0x64006A, "Dell Inc.", "DELL" }, { 0xB4E10F, "Dell Inc.", "DELL" }, { 0x0023AE, "Dell Inc.", "DELL" }, { 0x9CD917, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x9068C3, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x408805, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xAC2B6E, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF8F1B6, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x00216A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E64, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0016EB, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0018DE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x681729, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5C514F, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB808CF, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC8F733, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4851B7, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5CC5D4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7CCCB8, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF40669, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3CA9F4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x28B2BD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x08D40C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x843A4B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0CD292, "Intel Corporate", "INTEL-CORPORATE" }, { 0x78929C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6805CA, "Intel Corporate", "INTEL-CORPORATE" }, { 0xACA31E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x9C1C12, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x001A1E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x28C2DD, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x84D47E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0xA85840, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x002243, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x74F06D, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x44D832, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x781881, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xB0EE45, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x240A64, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xD0E782, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x0C4C39, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x002423, "AzureWave Technologies (Shanghai) Inc.", "AZUREWAVE-TECHNOLOGIES-SHANGHAI" }, { 0xA81D16, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x38A53C, "COMECER Netherlands", "COMECER-NETHERLANDS" }, { 0x001D8B, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xA4526F, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x581243, "AcSiP Technology Corp.", "ACSIP" }, { 0x0026B8, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0030F1, "Accton Technology Corp", "ACCTON" }, { 0x001974, "16063", "16063" }, { 0xECF00E, "AboCom", "ABOCOM" }, { 0x3039F2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x000827, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x9097D5, "Espressif Inc.", "ESPRESSIF" }, { 0x18FE34, "Espressif Inc.", "ESPRESSIF" }, { 0x54F6C5, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x5C338E, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x001AEB, "Allied Telesis R&D Center K.K.", "ALLIED-TELESIS-R-D-CENTER-K-K" }, { 0xA43111, "ZIV", "ZIV" }, { 0x5C93A2, "Liteon Technology Corporation", "LITEON" }, { 0xE8C74F, "Liteon Technology Corporation", "LITEON" }, { 0xE8F724, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x701A04, "Liteon Technology Corporation", "LITEON" }, { 0x48D224, "Liteon Technology Corporation", "LITEON" }, { 0x2CD05A, "Liteon Technology Corporation", "LITEON" }, { 0x74E543, "Liteon Technology Corporation", "LITEON" }, { 0xA4DB30, "Liteon Technology Corporation", "LITEON" }, { 0xB8EE65, "Liteon Technology Corporation", "LITEON" }, { 0x001DBA, "Sony Corporation", "SONY" }, { 0x000AD9, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x000FDE, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001EDC, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001963, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001B59, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x78843C, "Sony Corporation", "SONY" }, { 0x0023F1, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x3017C8, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x18002D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x04E676, "AMPAK Technology, Inc.", "AMPAK" }, { 0x0022F4, "AMPAK Technology, Inc.", "AMPAK" }, { 0x080046, "Sony Corporation", "SONY" }, { 0x000D92, "ARIMA Communications Corp.", "ARIMA-COMMUNICATION" }, { 0x009096, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x0011F5, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xDCD87C, "Beijing Jingdong Century Trading Co., LTD.", "BEIJING-JINGDONG-CENTURY-TRADING" }, { 0x001C4A, "AVM GmbH", "AVM" }, { 0x000B6A, "Asiarock Technology Limited", "ASIAROCK" }, { 0x40BA61, "ARIMA Communications Corp.", "ARIMA-COMMUNICATION" }, { 0x1883BF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x9C80DF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x001CCC, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x94EBCD, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x644FB0, "Hyunjin.com", "HYUNJIN-COM" }, { 0x001A2A, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x001D19, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x88252C, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xA4E4B8, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x58671A, "Barnes&Noble", "BARNES-NOBLE" }, { 0xBC0543, "AVM GmbH", "AVM" }, { 0x002675, "Aztech Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x001F3F, "AVM GmbH", "AVM" }, { 0x0020D6, "Breezecom, Ltd.", "BREEZECOM" }, { 0x001018, "Broadcom", "BROADCOM" }, { 0x001BE9, "Broadcom", "BROADCOM" }, { 0x008077, "Brother industries, LTD.", "BROTHER-INDUSTRIES" }, { 0x029D8E, "CARDIAC RECORDERS, INC.", "CARDIAC-RECORDERS" }, { 0xFC2F40, "Calxeda, Inc.", "CALXEDA" }, { 0x0026E4, "Canal +", "CANAL-+" }, { 0x389496, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0CB319, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08EE8B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA89FBA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFC1910, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x083D88, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5C2E59, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x646CB2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF884F2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x14B484, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x608F5C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4CBCA5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78595E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0D09C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4CA56D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA48431, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE4F8EF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1432D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE458E7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8CBFA6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7840E4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9000DB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x183A2D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08373D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50F520, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA4EBD3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28987B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF40E22, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C3AAF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCF2AF, "devolo AG", "DEVOLO" }, { 0x0270B3, "DATA RECALL LTD.", "DATA-RECALL" }, { 0x000FF6, "DARFON LIGHTING CORP", "DARFON-LIGHTING" }, { 0x702559, "CyberTAN Technology Inc.", "CYBERTAN" }, { 0x0090D6, "Crystal Group, Inc.", "CRYSTAL-GROUP" }, { 0x001DAA, "DrayTek Corp.", "DRAYTEK" }, { 0x02CF1C, "Communication Machinery Corporation", "COMMUNICATION-MACHINERY" }, { 0x0C75BD, "Cisco Systems, Inc", "CISCO" }, { 0x38F0C8, "Livestream", "LIVESTREAM" }, { 0x0C1167, "Cisco Systems, Inc", "CISCO" }, { 0x001982, "SmarDTV", "SMARDTV" }, { 0x10C6FC, "Garmin International", "GARMIN" }, { 0x00E000, "FUJITSU LIMITED", "FUJITSU" }, { 0x00000E, "FUJITSU LIMITED", "FUJITSU" }, { 0x002326, "FUJITSU LIMITED", "FUJITSU" }, { 0x0007CB, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x3C591E, "TCL King Electrical Appliances (Huizhou) Co., Ltd", "TCL-KING-ELECTRICAL-APPLIANCES-HUIZHOU" }, { 0x002682, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x001A73, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x00904B, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0xD86BF7, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xA4C0E1, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x34AF2C, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x8CCDE8, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x9CE635, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x600194, "Espressif Inc.", "ESPRESSIF" }, { 0xF44D17, "GOLDCARD HIGH-TECH CO.,LTD.", "GOLDCARD-HIGH-TECH" }, { 0x001E35, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001FC5, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0021BD, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002709, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE84ECE, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0009BF, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001AE9, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001CBE, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002403, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002265, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0019B7, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002404, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0002EE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001C9A, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F01, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x000EED, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001E3A, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001A89, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021AA, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002669, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0022FD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002109, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002108, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D6E, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001B33, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xECF35B, "Nokia Corporation", "NOKIA" }, { 0xEC9B5B, "Nokia Corporation", "NOKIA" }, { 0xBCC6DB, "Nokia Corporation", "NOKIA" }, { 0xB83241, "Wuhan Tianyu Information Industry Co., Ltd.", "WUHAN-TIANYU-INFORMATION-INDUSTRY" }, { 0x9897D1, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x94C960, "Zhongshan B&T technology.co.,ltd", "ZHONGSHAN-B-T" }, { 0x001479, "NEC Magnus Communications,Ltd.", "NEC-MAGNUS-COMMUNICATION" }, { 0x9C4FDA, "Apple, Inc.", "APPLE" }, { 0x1C5CF2, "Apple, Inc.", "APPLE" }, { 0x0821EF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA0CBFD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34145F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB462AD, "Elysia Germany GmbH", "ELYSIA-GERMANY" }, { 0x747818, "Jurumani Solutions", "JURUMANI-SOLUTIONS" }, { 0x803896, "SHARP Corporation", "SHARP" }, { 0x80D160, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x686E23, "Wi3 Inc.", "WI3" }, { 0xB8A175, "Roku, Inc.", "ROKU" }, { 0x0080E5, "NetApp", "NETAPP" }, { 0xE49A79, "Apple, Inc.", "APPLE" }, { 0x28A02B, "Apple, Inc.", "APPLE" }, { 0xB44BD2, "Apple, Inc.", "APPLE" }, { 0x002340, "MiXTelematics", "MIXTELEMATICS" }, { 0xB48B19, "Apple, Inc.", "APPLE" }, { 0x00AF1F, "Cisco Systems, Inc", "CISCO" }, { 0x4CCC6A, "Micro-Star INTL CO., LTD.", "MICRO-STAR-INTL" }, { 0x985BB0, "KMDATA INC.", "KMDATA" }, { 0x6C8FB5, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x245EBE, "QNAP Systems, Inc.", "QNAP" }, { 0xA89352, "SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD", "SHANGHAI-ZHONGMI-COMMUNICATION" }, { 0xAC5F3E, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x70661B, "Sonova AG", "SONOVA" }, { 0x1C98EC, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x9C9D5D, "Raden Inc", "RADEN" }, { 0xE8FD72, "SHANGHAI LINGUO TECHNOLOGY CO., LTD.", "SHANGHAI-LINGUO" }, { 0x98BB1E, "BYD Precision Manufacture Company Ltd.", "BYD-PRECISION-MANUFACTURE-COMPANY" }, { 0xEC438B, "YAPTV", "YAPTV" }, { 0x1866DA, "Dell Inc.", "DELL" }, { 0x981FB1, "Shenzhen Lemon Network Technology Co.,Ltd", "SHENZHEN-LEMON-NETWORK" }, { 0x40476A, "AG Acquisition Corp. d.b.a. ASTRO Gaming", "ACQUISITION-D-B-A-ASTRO-GAMING" }, { 0xA4BF01, "Intel Corporate", "INTEL-CORPORATE" }, { 0x509EA7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xDCCF96, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0004C6, "YAMAHA MOTOR CO.,LTD", "YAMAHA-MOTOR" }, { 0x14D11F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x54511B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x68536C, "SPnS Co.,Ltd", "SPNS" }, { 0x005BA1, "shanghai huayuan chuangxin software CO., LTD.", "SHANGHAI-HUAYUAN-CHUANGXIN-SOFTWARE" }, { 0xB07E70, "Zadara Storage Ltd.", "ZADARA-STORAGE" }, { 0x405EE1, "Shenzhen H&T Intelligent Control Co.,Ltd.", "SHENZHEN-H-T-INTELLIGENT-CONTROL" }, { 0x10F005, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD463FE, "Arcadyan Corporation", "ARCADYAN" }, { 0x9466E7, "WOM Engineering", "WOM-ENGINEERING" }, { 0xF8A188, "LED Roadway Lighting", "LED-ROADWAY-LIGHTING" }, { 0x001174, "Mojo Networks, Inc.", "MOJO-NETWORKS" }, { 0xBC15AC, "Vodafone Italia S.p.A.", "VODAFONE-ITALIA-S-P-A" }, { 0x140C5B, "PLNetworks", "PLNETWORKS" }, { 0xD0B0CD, "Moen", "MOEN" }, { 0x0071C2, "PEGATRON CORPORATION", "PEGATRON" }, { 0xDCFE07, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE47E66, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9C741A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xEC93ED, "DDoS-Guard LTD", "DDOS-GUARD" }, { 0x4C72B9, "PEGATRON CORPORATION", "PEGATRON" }, { 0xF462D0, "Not for Radio, LLC", "NOT-FOR-RADIO-LLC" }, { 0x94513D, "iSmart Alarm, Inc.", "ISMART-ALARM" }, { 0xC89CDC, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x002511, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x000E03, "Emulex Corporation", "EMULEX" }, { 0x001BB9, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x001921, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x00142A, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x0001F4, "Enterasys", "ENTERASYS" }, { 0x487ADA, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x1C7370, "Neotech", "NEOTECH" }, { 0x0050FC, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x200A5E, "Xiangshan Giant Eagle Technology Developing Co., Ltd.", "XIANGSHAN-GIANT-EAGLE-DEVELOPING" }, { 0x30E37A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4CA003, "T-21 Technologies LLC", "T-21-TECHNOLOGIES-LLC" }, { 0xF0EE58, "PACE Telematics GmbH", "PACE-TELEMATICS" }, { 0xA08CFD, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x4000E0, "Derek(Shaoguan)Limited", "DEREK-SHAOGUAN" }, { 0x001397, "Oracle Corporation ", "ORACLE" }, { 0x00A0A4, "Oracle Corporation ", "ORACLE" }, { 0xA4E597, "Gessler GmbH", "GESSLER" }, { 0x0024F4, "Kaminario, Ltd.", "KAMINARIO" }, { 0x001D08, "Jiangsu Yinhe Electronics Co.,Ltd.", "JIANGSU-YINHE-ELECTRONICS" }, { 0x0018D7, "JAVAD GNSS, Inc.", "JAVAD-GNSS" }, { 0x001C6C, "30805", "30805" }, { 0x00A0B0, "I-O DATA DEVICE, INC.", "I-O-DATA-DEVICE" }, { 0x00E0CF, "INTEGRATED DEVICE", "INTEGRATED-DEVICE" }, { 0x547F54, "INGENICO", "INGENICO" }, { 0x48C049, "Broad Telecom SA", "BROAD-TELECOM" }, { 0xDC38E1, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x40A677, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0C8610, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xEC3EF7, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0014F6, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x00121E, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0010DB, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x307C5E, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x841888, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x40B4F0, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x002688, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0017CB, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xE0A3AC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE00EDA, "Cisco Systems, Inc", "CISCO" }, { 0x6C2483, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x848319, "Hangzhou Zero Zero Technology Co., Ltd.", "HANGZHOU-ZERO-ZERO" }, { 0x001F20, "Logitech Europe SA", "LOGITECH-EUROPE" }, { 0x882012, "LMI Technologies", "LMI-TECHNOLOGIES" }, { 0x002382, "Lih Rong electronic Enterprise Co., Ltd.", "LIH-RONG" }, { 0x88795B, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0x001A34, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0x20A90E, "TCT mobile ltd", "TCT-MOBILE" }, { 0x8C99E6, "TCT mobile ltd", "TCT-MOBILE" }, { 0x745C9F, "TCT mobile ltd", "TCT-MOBILE" }, { 0x0CBD51, "TCT mobile ltd", "TCT-MOBILE" }, { 0xE42D02, "TCT mobile ltd", "TCT-MOBILE" }, { 0x3CE5A6, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x3C8C40, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xB04519, "TCT mobile ltd", "TCT-MOBILE" }, { 0xA81559, "Breathometer, Inc.", "BREATHOMETER" }, { 0xECADB8, "Apple, Inc.", "APPLE" }, { 0x9801A7, "Apple, Inc.", "APPLE" }, { 0x2CF0A2, "Apple, Inc.", "APPLE" }, { 0xC09727, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x2C5A8D, "SYSTRONIK Elektronik u. Systemtechnik GmbH", "SYSTRONIK-ELEKTRONIK-U-SYSTEMTECHNIK" }, { 0x8C897A, "AUGTEK", "AUGTEK" }, { 0x54EDA3, "Navdy, Inc.", "NAVDY" }, { 0x046565, "Testop", "TESTOP" }, { 0x042758, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3C92DC, "Octopod Technology Co. Ltd.", "OCTOPOD" }, { 0x6038E0, "Belkin International Inc.", "BELKIN" }, { 0xF0FDA0, "Acurix Networks Pty Ltd", "ACURIX-NETWORKS-PTY" }, { 0x3876D1, "Euronda SpA", "EURONDA-SPA" }, { 0xC48F07, "Shenzhen Yihao Hulian Science and Technology Co., Ltd.", "SHENZHEN-YIHAO-HULIAN-SCIENCE-AND" }, { 0x009E1E, "Cisco Systems, Inc", "CISCO" }, { 0x002550, "Riverbed Technology, Inc.", "RIVERBED" }, { 0xD85B2A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xACC33A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF45B73, "Wanjiaan Interconnected Technology Co., Ltd", "WANJIAAN-INTERCONNECTED" }, { 0x0021E2, "visago Systems & Controls GmbH & Co. KG", "VISAGO-CONTROLS" }, { 0x28F10E, "Dell Inc.", "DELL" }, { 0xC4A366, "zte corporation", "ZTE" }, { 0x0014B4, "General Dynamics United Kingdom Ltd", "GENERAL-DYNAMICS-UNITED-KINGDOM" }, { 0xA0B437, "GD Mission Systems", "GD-MISSION" }, { 0x5052D2, "Hangzhou Telin Technologies Co., Limited", "HANGZHOU-TELIN-TECHNOLOGIES" }, { 0x1CD6BD, "LEEDARSON LIGHTING CO., LTD.", "LEEDARSON-LIGHTING" }, { 0x9CDD1F, "Intelligent Steward Co.,Ltd", "INTELLIGENT-STEWARD" }, { 0x00EBD5, "Cisco Systems, Inc", "CISCO" }, { 0x1C7B23, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x1C740D, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x001349, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x404A03, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xCC5D4E, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xA0E4CB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x90CF7D, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0xF8F082, "NAG LLC", "NAG-LLC" }, { 0x40F413, "Rubezh", "RUBEZH" }, { 0x2C094D, "Raptor Engineering, LLC", "RAPTOR-ENGINEERING-LLC" }, { 0x88797E, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x40C729, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xAC040B, "Peloton Interactive, Inc", "PELOTON-INTERACTIVE" }, { 0x006074, "QSC LLC", "QSC-LLC" }, { 0x34ED0B, "Shanghai XZ-COM.CO.,Ltd.", "SHANGHAI-XZ-COM" }, { 0x0010C1, "OI ELECTRIC CO.,LTD", "OI-ELECTRIC" }, { 0x4432C8, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xE0885D, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x802994, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x206A8A, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xF0DEF1, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xF80F41, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x94DF4E, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0x48A9D2, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x683E34, "MEIZU Technology Co., Ltd.", "MEIZU" }, { 0x001EC0, "Microchip Technology Inc.", "MICROCHIP" }, { 0x3C0771, "Sony Corporation", "SONY" }, { 0xD8D43C, "Sony Corporation", "SONY" }, { 0x00A012, "Telco Systems, Inc. ", "TELCO" }, { 0x94611E, "Wata Electronics Co.,Ltd. ", "WATA-ELECTRONICS" }, { 0x0025D4, "General Dynamics Mission Systems", "GENERAL-DYNAMICS-MISSION" }, { 0x5CA86A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC8778B, "Themis Computer", "THEMIS" }, { 0x000A68, "Solarflare Communications Inc", "SOLARFLARE-COMMUNICATION" }, { 0x0CD502, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0x001636, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x00C09F, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x54AB3A, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x089E01, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x00199D, "Vizio, Inc", "VIZIO" }, { 0x6C0B84, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xE4509A, "HW Communications Ltd", "HW-COMMUNICATION" }, { 0x702900, "Shenzhen ChipTrip Technology Co,Ltd", "SHENZHEN-CHIPTRIP" }, { 0x204C03, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x90F052, "MEIZU Technology Co., Ltd.", "MEIZU" }, { 0x000E1E, "QLogic Corporation", "QLOGIC" }, { 0xD8EB97, "TRENDnet, Inc.", "TRENDNET" }, { 0x146102, "Alpine Electronics, Inc.", "ALPINE-ELECTRONICS" }, { 0x9003B7, "PARROT SA", "PARROT" }, { 0x0CFE45, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0xF8D0AC, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x00D9D1, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x00041F, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x001D0D, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x7CC709, "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "SHENZHEN-RF-LINK" }, { 0x38B8EB, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x38FDFE, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x7C477C, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x50FF99, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x6891D0, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x283638, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x2C6A6F, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xBC3400, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB437D1, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xD455BE, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0xF40E11, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xA43BFA, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xCC1BE0, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x807B85, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x549A11, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB8D812, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x1CCAE3, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x7419F8, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x1C21D1, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x80E4DA, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x2CD141, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x8CA6DF, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x00E091, "LG Electronics", "LG-ELECTRONICS" }, { 0x6CD032, "LG Electronics", "LG-ELECTRONICS" }, { 0xC041F6, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x404AD4, "Widex A/S", "WIDEX-A/S" }, { 0x0021FB, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x8C3AE3, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x30766F, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xF80CF3, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0022CF, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0xA84E3F, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x00A742, "Cisco Systems, Inc", "CISCO" }, { 0x001478, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x00167A, "Skyworth Overseas Development Ltd.", "SKYWORTH-OVERSEAS-DEVELOPMENT" }, { 0x28BE03, "TCT mobile ltd", "TCT-MOBILE" }, { 0xF4C613, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xD826B9, "Guangdong Coagent Electronics S&T Co.,Ltd.", "GUANGDONG-COAGENT-ELECTRONICS-S-AMP-T" }, { 0xFCB0C4, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x24AF4A, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x001AF0, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0xAC9CE4, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xD84710, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x000E40, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001158, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0011F9, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000F6A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001283, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000438, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002347, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x002561, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x008058, "PRINTER SYSTEMS CORP.", "PRINTER" }, { 0x00140D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001765, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0018B0, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001B25, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001DAF, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00166D, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x0016F2, "Dmobile System Co., Ltd.", "DMOBILE-SYSTEM" }, { 0x000138, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0x3C9157, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x0000D8, "Novell, Inc.", "NOVELL" }, { 0x001087, "XSTREAMIS PLC", "XSTREAMIS-PLC" }, { 0x7C0623, "Ultra Electronics Sonar System Division", "ULTRA-ELECTRONICS-SONAR-SYSTEM-DIVISION" }, { 0x002555, "Visonic Technologies 1993 Ltd.", "VISONIC-TECHNOLOGIES-1993" }, { 0x48FD8E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x244427, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB4A984, "Symantec Corporation", "SYMANTEC" }, { 0x34074F, "AccelStor, Inc.", "ACCELSTOR" }, { 0x58E876, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x248A07, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0x00258B, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0x3C2DB7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0023D4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001831, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD08CB5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB4EED4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xCC8CE3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x102EAF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x647BD4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E6, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB0B448, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x505663, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x3C7DB1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x40984E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0012D1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x88C255, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE0C79D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x9059AF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB4994C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x70FF76, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x507224, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x506583, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xBC282C, "e-Smart Systems Pvt. Ltd", "E-SMART-PVT" }, { 0x546C0E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF85C4D, "NOKIA", "NOKIA" }, { 0xD013FD, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xD8E72B, "NetScout Systems, Inc.", "NETSCOUT" }, { 0x04FEA1, "Fihonest communication co.,Ltd", "FIHONEST-COMMUNICATION" }, { 0x2CAC44, "CONEXTOP", "CONEXTOP" }, { 0xA8BD27, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x981E0F, "Jeelan (Shanghai Jeelan Technology Information Inc", "JEELAN-SHANGHAI-JEELAN-INFORMATION" }, { 0x548CA0, "Liteon Technology Corporation", "LITEON" }, { 0x001CA8, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 0x0017D5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001247, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE4121D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x684898, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF409D8, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xB479A7, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x002339, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD487D8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x184617, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5001BB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x380A94, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD857EF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C66AA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x58C38B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001EE2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001C43, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001D25, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3C5A37, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x549B12, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3C8BFE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00265D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD4E8B2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0808C2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0C4E7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD890E8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34AA8B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x24C696, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x181EB0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x20D390, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x343111, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34BE00, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78521A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18D276, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7825AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF4D9FB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0017C9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00166B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00166C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE47CF9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x90187C, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xFC1F19, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x50CCF8, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x980C82, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x002119, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x002454, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x20D5BF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30CDA7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5C0A5B, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x543530, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x300ED5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD02788, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0014A4, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0016CE, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001DD9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001FE2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002269, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x40490F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x28565A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001F3A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x506313, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x78E400, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x8C7CB5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xEC55F9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC03896, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x2C337A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xACD1B8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x48E244, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x30F772, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90489A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9439E5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5C8613, "Beijing Zhoenet Technology Co., Ltd", "BEIJING-ZHOENET" }, { 0xC8B21E, "CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.", "CHIPSEA-TECHNOLOGIES-SHENZHEN" }, { 0x503F98, "CMITECH", "CMITECH" }, { 0xB072BF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x600B03, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xA41437, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0x884CCF, "Pulzze Systems, Inc", "PULZZE" }, { 0x38521A, "Nokia", "NOKIA" }, { 0x84DBFC, "Nokia", "NOKIA" }, { 0x143E60, "Nokia", "NOKIA" }, { 0xD4E33F, "Nokia", "NOKIA" }, { 0x5454CF, "PROBEDIGITAL CO.,LTD", "PROBEDIGITAL" }, { 0xF0D5BF, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC87E75, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00233A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C9D3E, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x748A69, "Korea Image Technology Co., Ltd", "KOREA-IMAGE" }, { 0x30B64F, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xDC0D30, "Shenzhen Feasycom Technology Co., Ltd.", "SHENZHEN-FEASYCOM" }, { 0x008731, "Cisco Systems, Inc", "CISCO" }, { 0xB4EFFA, "Lemobile Information Technology (Beijing) Co., Ltd.", "LEMOBILE-INFORMATION-BEIJING" }, { 0x9495A0, "Google, Inc.", "GOOGLE" }, { 0x0005EE, "Vanderbilt International (SWE) AB ", "VANDERBILT-SWE-AB" }, { 0x38D547, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x383A21, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x4CF95D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x8421F1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x707990, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xCCFD17, "TCT mobile ltd", "TCT-MOBILE" }, { 0x3C8BCD, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xE43ED7, "Arcadyan Corporation", "ARCADYAN" }, { 0x248894, "shenzhen lensun Communication Technology LTD", "SHENZHEN-LENSUN-COMMUNICATION" }, { 0x60A4D0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00B0CE, "Viveris Technologies", "VIVERIS-TECHNOLOGIES" }, { 0xE00DB9, "Cree, Inc.", "CREE" }, { 0x40FE0D, "MAXIO", "MAXIO" }, { 0x609AC1, "Apple, Inc.", "APPLE" }, { 0xF07960, "Apple, Inc.", "APPLE" }, { 0x9C8BA0, "Apple, Inc.", "APPLE" }, { 0x9840BB, "Dell Inc.", "DELL" }, { 0xE04FBD, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x00B0E1, "Cisco Systems, Inc", "CISCO" }, { 0x4C3275, "Apple, Inc.", "APPLE" }, { 0x0006F4, "Prime Electronics & Satellitics Inc.", "PRIME-ELECTRONICS-SATELLITICS" }, { 0xACE77B, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x24A43C, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0xD4E90B, "CVT CO.,LTD", "CVT" }, { 0x788A20, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x28EE52, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x905C44, "Compal Broadband Networks, Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0xFC372B, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x0CD86C, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x4CE173, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x8C60E7, "MPGIO CO.,LTD", "MPGIO" }, { 0x2C0E3D, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x24C44A, "zte corporation", "ZTE" }, { 0xB83A9D, "Alarm.com", "ALARM-COM" }, { 0x00BBC1, "CANON INC.", "CANON" }, { 0x1C14B3, "Airwire Technologies", "AIRWIRE-TECHNOLOGIES" }, { 0x2CC260, "Oracle Corporation ", "ORACLE" }, { 0x407183, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0059DC, "Cisco Systems, Inc", "CISCO" }, { 0xACF85C, "Private", "PRIVATE" }, { 0x1CC0E1, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x00749C, "Ruijie Networks Co.,LTD", "RUIJIE-NETWORKS" }, { 0x00271C, "MERCURY CORPORATION", "MERCURY" }, { 0xE0D9E3, "Eltex Enterprise Ltd.", "ELTEX" }, { 0x5098F3, "Rheem Australia Pty Ltd", "RHEEM-AUSTRALIA-PTY" }, { 0x701CE7, "Intel Corporate", "INTEL-CORPORATE" }, { 0xCC9470, "Kinestral Technologies, Inc.", "KINESTRAL-TECHNOLOGIES" }, { 0xF0219D, "Cal-Comp Electronics & Communications Company Ltd.", "CAL-COMP-ELECTRONICS-COMMUNICATION-COMPANY" }, { 0x000B2E, "Cal-Comp Electronics & Communications Company Ltd.", "CAL-COMP-ELECTRONICS-COMMUNICATION-COMPANY" }, { 0x885BDD, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x08EA44, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x506B8D, "Nutanix", "NUTANIX" }, { 0x0038DF, "Cisco Systems, Inc", "CISCO" }, { 0x006BF1, "Cisco Systems, Inc", "CISCO" }, { 0xCC81DA, "SHANGHAI PHICOMM COMMUNICATION CO.,LTD", "SHANGHAI-PHICOMM-COMMUNICATION" }, { 0x20D25F, "SmartCap Technologies", "SMARTCAP-TECHNOLOGIES" }, { 0x3CFA43, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x145F94, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C11BF, "Zhejiang Dahua Technology Co., Ltd.", "ZHEJIANG-DAHUA" }, { 0xEC0D9A, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0x000064, "Yokogawa Digital Computer Corporation", "YOKOGAWA-DIGITAL" }, { 0x0023F7, "Private", "PRIVATE" }, { 0x90D7BE, "Wavelab Global Inc.", "WAVELAB-GLOBAL" }, { 0x686975, "Angler Labs Inc", "ANGLER-LABS" }, { 0x002448, "SpiderCloud Wireless, Inc", "SPIDERCLOUD-WIRELESS" }, { 0x7C03C9, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x64DB43, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0xD058A8, "zte corporation", "ZTE" }, { 0xD071C4, "zte corporation", "ZTE" }, { 0x48F07B, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x3C80AA, "Ransnet Singapore Pte Ltd", "RANSNET-SINGAPORE-PTE" }, { 0x7CEBAE, "Ridgeline Instruments", "RIDGELINE-INSTRUMENTS" }, { 0xE89EB4, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD4970B, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x64CC2E, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xB0E235, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x38A4ED, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xF48B32, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x0060BD, "Enginuity Communications", "ENGINUITY-COMMUNICATION" }, { 0xAC83F3, "AMPAK Technology, Inc.", "AMPAK" }, { 0x18DBF2, "Dell Inc.", "DELL" }, { 0x000048, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0xC0BFC0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA08CF8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x54B56C, "Xi'an NovaStar Tech Co., Ltd", "XI-AN-NOVASTAR-TECH" }, { 0xFC3CE9, "Tsingtong Technologies Co, Ltd.", "TSINGTONG-TECHNOLOGIES" }, { 0x04B648, "ZENNER", "ZENNER" }, { 0xFC10C6, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0x344CC8, "Echodyne Corp", "ECHODYNE" }, { 0x948FEE, "Verizon Telematics", "VERIZON-TELEMATICS" }, { 0x5C4A1F, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x0C8DDB, "Cisco Meraki", "CISCO-MERAKI" }, { 0xB0F963, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xE4E4AB, "Apple, Inc.", "APPLE" }, { 0x58404E, "Apple, Inc.", "APPLE" }, { 0xDC0C5C, "Apple, Inc.", "APPLE" }, { 0x2C200B, "Apple, Inc.", "APPLE" }, { 0x98B6E9, "Nintendo Co.,Ltd", "NINTENDO" }, { 0x8809AF, "Masimo Corporation", "MASIMO" }, { 0x00E06C, "Ultra Electronics Command & Control Systems", "ULTRA-ELECTRONICS-COMMAND-CONTROL" }, { 0x009058, "Ultra Electronics Command & Control Systems", "ULTRA-ELECTRONICS-COMMAND-CONTROL" }, { 0xF8983A, "Leeman International (HongKong) Limited", "LEEMAN-HONGKONG" }, { 0x4CECEF, "Soraa, Inc.", "SORAA" }, { 0x702D84, "i4C Innovations", "I4C-INNOVATIONS" }, { 0xCC9F7A, "Chiun Mai Communication Systems, Inc", "CHIUN-MAI-COMMUNICATION" }, { 0x446246, "Comat AG", "COMAT" }, { 0xC8AA55, "Hunan Comtom Electronic Incorporated Co.,Ltd", "HUNAN-COMTOM-INCORPORATED" }, { 0x142FFD, "LT SECURITY INC", "LT-SECURITY" }, { 0x000D2C, "Net2Edge Limited", "NET2EDGE" }, { 0xECE154, "Beijing Unisound Information Technology Co.,Ltd.", "BEIJING-UNISOUND-INFORMATION" }, { 0x60C658, "PHYTRONIX Co.,Ltd.", "PHYTRONIX" }, { 0x38454C, "Light Labs, Inc.", "LIGHT-LABS" }, { 0xC894BB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD0FF98, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5004B8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x10B1F8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x14ABC5, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA462DF, "DS Global. Co., LTD", "DS-GLOBAL" }, { 0x50D213, "CviLux Corporation", "CVILUX" }, { 0x44D437, "Inteno Broadband Technology AB", "INTENO-BROADBAND-AB" }, { 0x78AF58, "GIMASI SA", "GIMASI" }, { 0x00071C, "AT&T", "AT-T" }, { 0x2C9AA4, "Eolo SpA", "EOLO-SPA" }, { 0x002183, "ANDRITZ HYDRO GmbH", "ANDRITZ-HYDRO" }, { 0x8404D2, "Kirale Technologies SL", "KIRALE-TECHNOLOGIES-SL" }, { 0x083E5D, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x749CE3, "KodaCloud Canada, Inc", "KODACLOUD-CANADA" }, { 0xCC2D21, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x8C78D7, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x3CBD3E, "Beijing Xiaomi Electronics Co., Ltd.", "BEIJING-XIAOMI-ELECTRONICS" }, { 0x2C4D54, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x349672, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x00179B, "CHANT SINCERE CO.,LTD", "CHANT-SINCERE" }, { 0x080027, "PCS Systemtechnik GmbH (possible VirtualBox VM)", "PCS-SYSTEMTECHNIK-VIRTUAL" }, { 0x348446, "Ericsson AB", "ERICSSON-AB" }, { 0xA4A1C2, "Ericsson AB", "ERICSSON-AB" }, { 0xB0F1EC, "AMPAK Technology, Inc.", "AMPAK" }, { 0xB0C46C, "Senseit", "SENSEIT" }, { 0x148951, "LCFC(HeFei) Electronics Technology co., ltd", "LCFC-HEFEI-ELECTRONICS" }, { 0xF87588, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xBC3F8F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04DEF2, "Shenzhen ECOM Technology Co. Ltd", "SHENZHEN-ECOM" }, { 0x00D071, "ECHELON CORP.", "ECHELON" }, { 0x0030C5, "CADENCE DESIGN SYSTEMS, INC.", "CADENCE-DESIGN" }, { 0x504061, "Nokia", "NOKIA" }, { 0x7467F7, "Extreme Networks", "EXTREME-NETWORKS" }, { 0xB4C799, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x54E3F6, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x5C0E8B, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x00E02B, "Extreme Networks", "EXTREME-NETWORKS" }, { 0xB0C205, "BIONIME", "BIONIME" }, { 0x0C61CF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7C2664, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xE47DEB, "Shanghai Notion Information Technology CO.,LTD.", "SHANGHAI-NOTION-INFORMATION" }, { 0xA002DC, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x0C47C9, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x747548, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0xAC63BE, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0xDCA4CA, "Apple, Inc.", "APPLE" }, { 0x8C8FE9, "Apple, Inc.", "APPLE" }, { 0x40FA7F, "Preh Car Connect GmbH", "PREH-CAR-CONNECT" }, { 0xF8AB05, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xC0028D, "WINSTAR Display CO.,Ltd", "WINSTAR-DISPLAY" }, { 0xD83214, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x7C787E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC0D3C0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF097E5, "TAMIO, INC", "TAMIO" }, { 0xF4E4AD, "zte corporation", "ZTE" }, { 0xF85971, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9810E8, "Apple, Inc.", "APPLE" }, { 0xB49CDF, "Apple, Inc.", "APPLE" }, { 0x4C82CF, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0xF49634, "Intel Corporate", "INTEL-CORPORATE" }, { 0x144FD7, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x6C4B90, "LiteON", "LITEON" }, { 0xF8FF0B, "Electronic Technology Inc.", "" }, { 0x38F135, "SensorTec-Canada", "SENSORTEC-CANADA" }, { 0x90F305, "HUMAX Co., Ltd.", "HUMAX" }, { 0x00093A, "Molex", "MOLEX" }, { 0x98AAFC, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB8D50B, "Sunitec Enterprise Co.,Ltd", "SUNITEC" }, { 0x28A6DB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC8F86D, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xD45F25, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x9CE951, "Shenzhen Sang Fei Consumer Communications Ltd., Co.", "SHENZHEN-SANG-FEI-CONSUMER-COMMUNICATION" }, { 0xDC0856, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0xE8FDE8, "CeLa Link Corporation", "CELA-LINK" }, { 0x181212, "Cepton Technologies", "CEPTON-TECHNOLOGIES" }, { 0x08ED02, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB4417A, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0xF4DE0C, "ESPOD Ltd.", "ESPOD" }, { 0xBC8AE8, "QING DAO HAIER TELECOM CO.,LTD.", "QING-DAO-HAIER-TELECOM" }, { 0x440444, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xC09F05, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xCC2D83, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x38295A, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x4C1A3D, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xA81B5A, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xDC6DCD, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x70D379, "Cisco Systems, Inc", "CISCO" }, { 0x7C4F7D, "Sawwave", "SAWWAVE" }, { 0x185207, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x9874DA, "Infinix mobility limited", "INFINIX-MOBILITY" }, { 0x143F27, "Noccela Oy", "NOCCELA-OY" }, { 0x64351C, "e-CON SYSTEMS INDIA PVT LTD", "E-CON-INDIA-PVT" }, { 0x5C6A80, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xA8B86E, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0CB912, "JM-DATA GmbH", "JM-DATA" }, { 0x1893D7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xEC363F, "Markov Corporation", "MARKOV" }, { 0x54FA3E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C8910, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFCF136, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x981DFA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84A466, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1867B0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCCB11A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB8BBAF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60C5AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28395E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC4AE12, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x10D07A, "AMPAK Technology, Inc.", "AMPAK" }, { 0x80B234, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xB877C3, "METER Group", "METER-GROUP" }, { 0x003676, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x84E058, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF07485, "NGD Systems, Inc.", "NGD" }, { 0x347A60, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xBC644B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF8A097, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x94E8C5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x044E5A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x74EAE8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA811FC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x745612, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE46449, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xC005C2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x6455B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x203D66, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD404CD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x446AB7, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2C9924, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001BDD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001404, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00195E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001AAD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA47AA4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x1C1448, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002493, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x40FC89, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C754A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024C1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002136, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0022B4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002395, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023ED, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001B52, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00230B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E8D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023A2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015D1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE8892C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE83EFC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x707E43, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0003E0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00128A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001225, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x083E0C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8C09F4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3CDFA9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x105611, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2C3AE8, "Espressif Inc.", "ESPRESSIF" }, { 0xDC74A8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC087EB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE8B6C2, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xB0DAF9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x74F61C, "HTC Corporation", "HTC" }, { 0x3438B7, "HUMAX Co., Ltd.", "HUMAX" }, { 0x5C1A6F, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xB089C2, "Zyptonite", "ZYPTONITE" }, { 0xF0D4F6, "Lars Thrane A/S", "LARS-THRANE-A/S" }, { 0x487D2E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0403D6, "Nintendo Co.,Ltd", "NINTENDO" }, { 0xA0AFBD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x34D954, "WiBotic Inc.", "WIBOTIC" }, { 0x6C60EB, "ZHI YUAN ELECTRONICS CO., LIMITED", "ZHI-YUAN-ELECTRONICS" }, { 0xAC4E2E, "Shenzhen JingHanDa Electronics Co.Ltd", "SHENZHEN-JINGHANDA-ELECTRONICS" }, { 0xB40016, "INGENICO TERMINALS SAS", "INGENICO-TERMINALS-SAS" }, { 0x0027E3, "Cisco Systems, Inc", "CISCO" }, { 0xA0341B, "TrackR, Inc", "TRACKR" }, { 0xFCA667, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x784501, "Biamp Systems", "BIAMP" }, { 0x488D36, "Arcadyan Corporation", "ARCADYAN" }, { 0x986F60, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x4C189A, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xE45D52, "Avaya Inc", "AVAYA" }, { 0x38BB3C, "Avaya Inc", "AVAYA" }, { 0xC057BC, "Avaya Inc", "AVAYA" }, { 0xD47856, "Avaya Inc", "AVAYA" }, { 0x14612F, "Avaya Inc", "AVAYA" }, { 0x707C69, "Avaya Inc", "AVAYA" }, { 0xA47886, "Avaya Inc", "AVAYA" }, { 0x44322A, "Avaya Inc", "AVAYA" }, { 0x048A15, "Avaya Inc", "AVAYA" }, { 0x6CA849, "Avaya Inc", "AVAYA" }, { 0xA4251B, "Avaya Inc", "AVAYA" }, { 0x00040D, "Avaya Inc", "AVAYA" }, { 0xFC8399, "Avaya Inc", "AVAYA" }, { 0x60313B, "Sunnovo International Limited", "SUNNOVO" }, { 0x001CFA, "Alarm.com", "ALARM-COM" }, { 0xB4E62A, "LG Innotek", "LG-INNOTEK" }, { 0xE45AA2, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xECDF3A, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xF470AB, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x50184C, "Platina Systems Inc.", "PLATINA" }, { 0xCC4639, "WAAV, Inc.", "WAAV" }, { 0xE4A749, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x786D94, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x30B164, "Power Electronics International Inc.", "POWER-ELECTRONICS" }, { 0x18B430, "Nest Labs Inc.", "NEST-LABS" }, { 0x3CF591, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x602101, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x604762, "Beijing Sensoro Technology Co.,Ltd.", "BEIJING-SENSORO" }, { 0x7CE2CA, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xB0DFC1, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x70788B, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x7065A3, "Kandao lightforge Co., Ltd.", "KANDAO-LIGHTFORGE" }, { 0x706E6D, "Cisco Systems, Inc", "CISCO" }, { 0x001DCC, "Ayon Cyber Security, Inc", "AYON-CYBER-SECURITY" }, { 0xFC2F6B, "Everspin Technologies, Inc.", "EVERSPIN-TECHNOLOGIES" }, { 0x2CC5D3, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xF8E71E, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x1CB9C4, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC0C520, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xB4C170, "Yi chip Microelectronics (Hangzhou) Co., Ltd", "YI-CHIP-MICROELECTRONICS-HANGZHOU" }, { 0x540237, "Teltronic AG", "TELTRONIC" }, { 0xA89675, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x94F128, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0xA47B9D, "Espressif Inc.", "ESPRESSIF" }, { 0x608E08, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7C2EDD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3CF7A4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x342D0D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94FBB2, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0xEC3DFD, "SHENZHEN BILIAN ELECTRONIC CO.,LTD", "SHENZHEN-BILIAN-," }, { 0x18742E, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x001885, "Avigilon Corporation", "AVIGILON" }, { 0x8886C2, "STABILO International GmbH", "STABILO" }, { 0x04FA3F, "Opticore Inc.", "OPTICORE" }, { 0x94D029, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x308454, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xFC7F56, "CoSyst Control Systems GmbH", "COSYST-CONTROL" }, { 0x8C2505, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C49E3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x28D436, "Jiangsu dewosi electric co., LTD", "JIANGSU-DEWOSI-ELECTRIC" }, { 0x149346, "PNI sensor corporation", "PNI-SENSOR" }, { 0x18B81F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00C064, "General Datacomm LLC", "GENERAL-DATACOMM-LLC" }, { 0x601283, "TSB REAL TIME LOCATION SYSTEMS S.L.", "TSB-REAL-TIME-LOCATION-S-L" }, { 0xE06089, "Cloudleaf, Inc.", "CLOUDLEAF" }, { 0x001219, "General Datacomm LLC", "GENERAL-DATACOMM-LLC" }, { 0xBC54FC, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x547595, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x28F537, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x18BC5A, "Zhejiang Tmall Technology Co., Ltd.", "ZHEJIANG-TMALL" }, { 0x00869C, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x00139D, "MaxLinear Hispania S.L.U.", "MAXLINEAR-HISPANIA-S-L-U" }, { 0x4C16FC, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x748EF8, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x48C1AC, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x0CE0E4, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x000389, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0xE422A5, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x609C9F, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000088, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000480, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00E052, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x100D7F, "NETGEAR", "NETGEAR" }, { 0x6CB0CE, "NETGEAR", "NETGEAR" }, { 0x506A03, "NETGEAR", "NETGEAR" }, { 0xB07FB9, "NETGEAR", "NETGEAR" }, { 0x08028E, "NETGEAR", "NETGEAR" }, { 0x001F33, "NETGEAR", "NETGEAR" }, { 0xC03F0E, "NETGEAR", "NETGEAR" }, { 0x0024B2, "NETGEAR", "NETGEAR" }, { 0x204E7F, "NETGEAR", "NETGEAR" }, { 0x841B5E, "NETGEAR", "NETGEAR" }, { 0xA021B7, "NETGEAR", "NETGEAR" }, { 0xA41566, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0x74E60F, "TECNO MOBILE LIMITED", "TECNO-MOBILE" }, { 0xD8C497, "Quanta Computer Inc.", "QUANTA" }, { 0x444E6D, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x0050C7, "Private", "PRIVATE" }, { 0x409922, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xB8DB1C, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x3C10E6, "PHAZR Inc.", "PHAZR" }, { 0xB80B9D, "ROPEX Industrie-Elektronik GmbH", "ROPEX-INDUSTRIE-ELEKTRONIK" }, { 0x001526, "Remote Technologies Inc", "REMOTE-TECHNOLOGIES" }, { 0x34008A, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x00D060, "Panasonic Europe Ltd.", "PANASONIC-EUROPE" }, { 0x001987, "Panasonic Mobile Communications Co.,Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0xBCC342, "Panasonic Communications Co., Ltd.", "PANASONIC-COMMUNICATION" }, { 0x705812, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0xCC7EE7, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x84253F, "silex technology, Inc.", "SILEX" }, { 0x40D63C, "Equitech Industrial(DongGuan)Co.,Ltd", "EQUITECH-INDUSTRIAL-DONGGUAN" }, { 0x40017A, "Cisco Systems, Inc", "CISCO" }, { 0xA4E975, "Apple, Inc.", "APPLE" }, { 0xC0A53E, "Apple, Inc.", "APPLE" }, { 0x9800C6, "Apple, Inc.", "APPLE" }, { 0x787B8A, "Apple, Inc.", "APPLE" }, { 0x3866F0, "Apple, Inc.", "APPLE" }, { 0x20EE28, "Apple, Inc.", "APPLE" }, { 0x08F4AB, "Apple, Inc.", "APPLE" }, { 0x8C8590, "Apple, Inc.", "APPLE" }, { 0xFC017C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x2CB21A, "Phicomm (Shanghai) Co., Ltd.", "PHICOMM-SHANGHAI" }, { 0x28840E, "silicon valley immigration service ", "SILICON-VALLEY-IMMIGRATION-SERVICE" }, { 0x00C0EE, "KYOCERA Display Corporation", "KYOCERA-DISPLAY" }, { 0xCC5A53, "Cisco Systems, Inc", "CISCO" }, { 0xBC2E48, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x940006, "jinyoung", "JINYOUNG" }, { 0x5C6776, "IDS Imaging Development Systems GmbH", "IDS-IMAGING-DEVELOPMENT" }, { 0x28EF01, "Private", "PRIVATE" }, { 0xA875E2, "Aventura Technologies, Inc.", "AVENTURA-TECHNOLOGIES" }, { 0xDC0C2D, "WEIFANG GOERTEK ELECTRONICS CO.,LTD", "WEIFANG-GOERTEK-ELECTRONICS" }, { 0x904E91, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x2C279E, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x38D620, "Limidea Concept Pte. Ltd.", "LIMIDEA-CONCEPT-PTE" }, { 0x00173A, "Cloudastructure Inc", "CLOUDASTRUCTURE" }, { 0x745C4B, "GN Audio A/S", "GN-AUDIO-A/S" }, { 0x64FB50, "RoomReady/Zdi, Inc.", "ROOMREADY/ZDI" }, { 0x5C2BF5, "Vivint Wireless Inc. ", "VIVINT-WIRELESS" }, { 0x00FC8B, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x10F163, "TNK CO.,LTD", "TNK" }, { 0x940E6B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x38378B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x98F5A9, "OHSUNG", "OHSUNG" }, { 0xCC2237, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x5033F0, "YICHEN (SHENZHEN) TECHNOLOGY CO.LTD", "YICHEN-SHENZHEN" }, { 0xC850E9, "Raisecom Technology CO., LTD", "RAISECOM" }, { 0x90FD9F, "Silicon Laboratories", "SILICON-LABORATORIES" }, { 0x504EDC, "Ping Communication", "PING-COMMUNICATION" }, { 0x50F722, "Cisco Systems, Inc", "CISCO" }, { 0x344B3D, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xE42F26, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xBC9889, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x1088CE, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xFCF647, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x74CC39, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x6CA858, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x341A35, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x18D225, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x185282, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xBC4101, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x5C8D2D, "Shanghai Wellpay Information Technology Co., Ltd", "SHANGHAI-WELLPAY-INFORMATION" }, { 0x70B921, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xBC825D, "MITSUMI ELECTRIC CO.,LTD.", "MITSUMI-ELECTRIC" }, { 0xD86CE9, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x3C81D8, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x2CE412, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x181E78, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x0037B7, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x0014BF, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x6C8DC1, "Apple, Inc.", "APPLE" }, { 0x38CADA, "Apple, Inc.", "APPLE" }, { 0x8C579B, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0xB436A9, "Fibocom Wireless Inc. ", "FIBOCOM-WIRELESS" }, { 0x6416F0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x48DB50, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2400BA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x68DBCA, "Apple, Inc.", "APPLE" }, { 0x044BED, "Apple, Inc.", "APPLE" }, { 0x3CBB73, "Shenzhen Xinguodu Technology Co., Ltd.", "SHENZHEN-XINGUODU" }, { 0x3CCF5B, "ICOMM HK LIMITED", "ICOMM-HK" }, { 0xF40304, "Google, Inc.", "GOOGLE" }, { 0x78ACC0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x3C9066, "SmartRG, Inc.", "SMARTRG" }, { 0x00195B, "D-Link Corporation", "D-LINK" }, { 0x000D88, "D-Link Corporation", "D-LINK" }, { 0x001346, "D-Link Corporation", "D-LINK" }, { 0x205532, "Gotech International Technology Limited", "GOTECH" }, { 0x002401, "D-Link Corporation", "D-LINK" }, { 0x1CAFF7, "D-Link International", "D-LINK" }, { 0xB8A386, "D-Link International", "D-LINK" }, { 0xC8D3A3, "D-Link International", "D-LINK" }, { 0x4419B6, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xC056E3, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xC8E7D8, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x9CEFD5, "Panda Wireless, Inc.", "PANDA-WIRELESS" }, { 0xC02C7A, "Shenzhen Horn Audio Co.,Ltd.", "SHENZHEN-HORN-AUDIO" }, { 0x88B8D0, "Dongguan Koppo Electronic Co.,Ltd", "DONGGUAN-KOPPO" }, { 0x38E7D8, "HTC Corporation", "HTC" }, { 0xD8B377, "HTC Corporation", "HTC" }, { 0xB4CEF6, "HTC Corporation", "HTC" }, { 0xD40B1A, "HTC Corporation", "HTC" }, { 0xA08D16, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x601888, "zte corporation", "ZTE" }, { 0x8002DF, "ORA Inc.", "ORA" }, { 0xD8FC38, "Giantec Semiconductor Inc", "GIANTEC-SEMICONDUCTOR" }, { 0x2C6798, "InTalTech Ltd.", "INTALTECH" }, { 0xD0BF9C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB05ADA, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001083, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0001E6, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC44044, "RackTop Systems Inc.", "RACKTOP" }, { 0x3898D8, "MERITECH CO.,LTD", "MERITECH" }, { 0x000CF1, "Intel Corporation", "INTEL" }, { 0x000E0C, "Intel Corporation", "INTEL" }, { 0xBC0F64, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6CA100, "Intel Corporate", "INTEL-CORPORATE" }, { 0x94659C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x1002B5, "Intel Corporate", "INTEL-CORPORATE" }, { 0x441EA1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD8D385, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x18A905, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x00237D, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x002655, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x001560, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x288023, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x645106, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5CB901, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xDC4A3E, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C59E5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x9CB654, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x38EAA7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xE83935, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x08EB74, "HUMAX Co., Ltd.", "HUMAX" }, { 0x6CB56B, "HUMAX Co., Ltd.", "HUMAX" }, { 0x940937, "HUMAX Co., Ltd.", "HUMAX" }, { 0x403DEC, "HUMAX Co., Ltd.", "HUMAX" }, { 0xE84DD0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x140467, "SNK Technologies Co.,Ltd.", "SNK-TECHNOLOGIES" }, { 0xEC5F23, "Qinghai Kimascend Electronics Technology Co. Ltd.", "QINGHAI-KIMASCEND-ELECTRONICS" }, { 0x047D50, "Shenzhen Kang Ying Technology Co.Ltd.", "SHENZHEN-KANG-YING" }, { 0x54EFFE, "Fullpower Technologies, Inc.", "FULLPOWER-TECHNOLOGIES" }, { 0xEC52DC, "WORLD MEDIA AND TECHNOLOGY Corp.", "WORLD-MEDIA-AND" }, { 0xA4D18C, "Apple, Inc.", "APPLE" }, { 0xCC25EF, "Apple, Inc.", "APPLE" }, { 0x240995, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x247F3C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x1C8E5C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x94772B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF4E3FB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04021F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0034FE, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD02DB3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x086361, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF80113, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x70723C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5C7D5E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C8BEF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x20F3A3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xACE87B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x688F84, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4CAC0A, "zte corporation", "ZTE" }, { 0x0026ED, "zte corporation", "ZTE" }, { 0x002293, "zte corporation", "ZTE" }, { 0xFCD733, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x10A5D0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xD4C9B2, "Quanergy Systems Inc", "QUANERGY" }, { 0xE4CE02, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x2002AF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0026E8, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xECCB30, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x786A89, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2008ED, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x509F27, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xCC96A0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x54A51B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF4C714, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x286ED4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04F938, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xFC48EF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x80FB06, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD4B110, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xCC53B5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x002127, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x54E6FC, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD85D4C, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF81A67, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF0F336, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x44B32D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF07816, "Cisco Systems, Inc", "CISCO" }, { 0x001310, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x0023BE, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x54D46F, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x24374C, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xBCC810, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x484487, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x445829, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x481D70, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x00214F, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x00E036, "PIONEER CORPORATION", "PIONEER" }, { 0xE0AE5E, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x34C731, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x60380E, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x64D4BD, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x00000C, "Cisco Systems, Inc", "CISCO" }, { 0x004096, "Cisco Systems, Inc", "CISCO" }, { 0x30F70D, "Cisco Systems, Inc", "CISCO" }, { 0xB07D47, "Cisco Systems, Inc", "CISCO" }, { 0xD8B190, "Cisco Systems, Inc", "CISCO" }, { 0xF0B2E5, "Cisco Systems, Inc", "CISCO" }, { 0x188B9D, "Cisco Systems, Inc", "CISCO" }, { 0x38ED18, "Cisco Systems, Inc", "CISCO" }, { 0xECBD1D, "Cisco Systems, Inc", "CISCO" }, { 0xDCCEC1, "Cisco Systems, Inc", "CISCO" }, { 0x84B261, "Cisco Systems, Inc", "CISCO" }, { 0x70E422, "Cisco Systems, Inc", "CISCO" }, { 0x0050BD, "Cisco Systems, Inc", "CISCO" }, { 0x009086, "Cisco Systems, Inc", "CISCO" }, { 0x005054, "Cisco Systems, Inc", "CISCO" }, { 0x3C0E23, "Cisco Systems, Inc", "CISCO" }, { 0x90E6BA, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xBCAEC5, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x10BF48, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xA80C0D, "Cisco Systems, Inc", "CISCO" }, { 0xB83861, "Cisco Systems, Inc", "CISCO" }, { 0x6C9989, "Cisco Systems, Inc", "CISCO" }, { 0x580A20, "Cisco Systems, Inc", "CISCO" }, { 0x0050D1, "Cisco Systems, Inc", "CISCO" }, { 0x00500B, "Cisco Systems, Inc", "CISCO" }, { 0x005073, "Cisco Systems, Inc", "CISCO" }, { 0x00603E, "Cisco Systems, Inc", "CISCO" }, { 0x00E034, "Cisco Systems, Inc", "CISCO" }, { 0x001868, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x887556, "Cisco Systems, Inc", "CISCO" }, { 0x60735C, "Cisco Systems, Inc", "CISCO" }, { 0xFC9947, "Cisco Systems, Inc", "CISCO" }, { 0x7CC537, "Apple, Inc.", "APPLE" }, { 0x70CD60, "Apple, Inc.", "APPLE" }, { 0x24AB81, "Apple, Inc.", "APPLE" }, { 0x581FAA, "Apple, Inc.", "APPLE" }, { 0xA46706, "Apple, Inc.", "APPLE" }, { 0x3C0754, "Apple, Inc.", "APPLE" }, { 0xE4CE8F, "Apple, Inc.", "APPLE" }, { 0xE8040B, "Apple, Inc.", "APPLE" }, { 0xB8C75D, "Apple, Inc.", "APPLE" }, { 0x403CFC, "Apple, Inc.", "APPLE" }, { 0x286AB8, "Apple, Inc.", "APPLE" }, { 0x7CC3A1, "Apple, Inc.", "APPLE" }, { 0x00E16D, "Cisco Systems, Inc", "CISCO" }, { 0xF8C288, "Cisco Systems, Inc", "CISCO" }, { 0xE0ACF1, "Cisco Systems, Inc", "CISCO" }, { 0xFC5B39, "Cisco Systems, Inc", "CISCO" }, { 0x346F90, "Cisco Systems, Inc", "CISCO" }, { 0xE0D173, "Cisco Systems, Inc", "CISCO" }, { 0x74A02F, "Cisco Systems, Inc", "CISCO" }, { 0x547C69, "Cisco Systems, Inc", "CISCO" }, { 0x689CE2, "Cisco Systems, Inc", "CISCO" }, { 0x40A6E8, "Cisco Systems, Inc", "CISCO" }, { 0xB8782E, "Apple, Inc.", "APPLE" }, { 0x000502, "Apple, Inc.", "APPLE" }, { 0x0010FA, "Apple, Inc.", "APPLE" }, { 0x000393, "Apple, Inc.", "APPLE" }, { 0x0016CB, "Apple, Inc.", "APPLE" }, { 0x0017F2, "Apple, Inc.", "APPLE" }, { 0x001B63, "Apple, Inc.", "APPLE" }, { 0x001EC2, "Apple, Inc.", "APPLE" }, { 0x002608, "Apple, Inc.", "APPLE" }, { 0x7C6D62, "Apple, Inc.", "APPLE" }, { 0x40D32D, "Apple, Inc.", "APPLE" }, { 0xD83062, "Apple, Inc.", "APPLE" }, { 0xC42C03, "Apple, Inc.", "APPLE" }, { 0x6C2056, "Cisco Systems, Inc", "CISCO" }, { 0xBC1665, "Cisco Systems, Inc", "CISCO" }, { 0x44ADD9, "Cisco Systems, Inc", "CISCO" }, { 0x0C2724, "Cisco Systems, Inc", "CISCO" }, { 0x6C416A, "Cisco Systems, Inc", "CISCO" }, { 0xF872EA, "Cisco Systems, Inc", "CISCO" }, { 0x0C6803, "Cisco Systems, Inc", "CISCO" }, { 0x789F70, "Apple, Inc.", "APPLE" }, { 0xDC3714, "Apple, Inc.", "APPLE" }, { 0x40331A, "Apple, Inc.", "APPLE" }, { 0x94F6A3, "Apple, Inc.", "APPLE" }, { 0xD81D72, "Apple, Inc.", "APPLE" }, { 0x70ECE4, "Apple, Inc.", "APPLE" }, { 0x38C986, "Apple, Inc.", "APPLE" }, { 0xFCFC48, "Apple, Inc.", "APPLE" }, { 0x2857BE, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0x50D59C, "Thai Habel Industrial Co., Ltd.", "THAI-HABEL-INDUSTRIAL" }, { 0xFCA386, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0xF0F249, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0xA4C361, "Apple, Inc.", "APPLE" }, { 0xAC7F3E, "Apple, Inc.", "APPLE" }, { 0x280B5C, "Apple, Inc.", "APPLE" }, { 0x90B931, "Apple, Inc.", "APPLE" }, { 0x24A2E1, "Apple, Inc.", "APPLE" }, { 0x80EA96, "Apple, Inc.", "APPLE" }, { 0x600308, "Apple, Inc.", "APPLE" }, { 0x04F13E, "Apple, Inc.", "APPLE" }, { 0x54724F, "Apple, Inc.", "APPLE" }, { 0x48746E, "Apple, Inc.", "APPLE" }, { 0x3CAB8E, "Apple, Inc.", "APPLE" }, { 0x7C6DF8, "Apple, Inc.", "APPLE" }, { 0x48D705, "Apple, Inc.", "APPLE" }, { 0x3CD0F8, "Apple, Inc.", "APPLE" }, { 0x98D6BB, "Apple, Inc.", "APPLE" }, { 0x4CB199, "Apple, Inc.", "APPLE" }, { 0x64E682, "Apple, Inc.", "APPLE" }, { 0x804971, "Apple, Inc.", "APPLE" }, { 0x98FE94, "Apple, Inc.", "APPLE" }, { 0xD8004D, "Apple, Inc.", "APPLE" }, { 0x98B8E3, "Apple, Inc.", "APPLE" }, { 0x80929F, "Apple, Inc.", "APPLE" }, { 0x885395, "Apple, Inc.", "APPLE" }, { 0x9C04EB, "Apple, Inc.", "APPLE" }, { 0x78FD94, "Apple, Inc.", "APPLE" }, { 0xC88550, "Apple, Inc.", "APPLE" }, { 0xD4F46F, "Apple, Inc.", "APPLE" }, { 0x787E61, "Apple, Inc.", "APPLE" }, { 0x60F81D, "Apple, Inc.", "APPLE" }, { 0x4C7C5F, "Apple, Inc.", "APPLE" }, { 0x48E9F1, "Apple, Inc.", "APPLE" }, { 0xFCE998, "Apple, Inc.", "APPLE" }, { 0xF099BF, "Apple, Inc.", "APPLE" }, { 0x68644B, "Apple, Inc.", "APPLE" }, { 0xA8968A, "Apple, Inc.", "APPLE" }, { 0x4C8D79, "Apple, Inc.", "APPLE" }, { 0x207D74, "Apple, Inc.", "APPLE" }, { 0xF4F15A, "Apple, Inc.", "APPLE" }, { 0x042665, "Apple, Inc.", "APPLE" }, { 0x2CB43A, "Apple, Inc.", "APPLE" }, { 0x689C70, "Apple, Inc.", "APPLE" }, { 0x087045, "Apple, Inc.", "APPLE" }, { 0xCCE0C3, "Mangstor, Inc.", "MANGSTOR" }, { 0x84A423, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x346987, "zte corporation", "ZTE" }, { 0x58685D, "Tempo Australia Pty Ltd", "TEMPO-AUSTRALIA-PTY" }, { 0x789C85, "August Home, Inc.", "AUGUST-HOME" }, { 0xFCCF43, "HUIZHOU CITY HUIYANG DISTRICT MEISIQI INDUSTRY DEVELOPMENT CO,.LTD", "HUIZHOU-CITY-HUIYANG-DISTRICT-MEISIQI-INDUSTRY-DEVELOPMENT" }, { 0x5882A8, "Microsoft", "MICROSOFT" }, { 0xB4EF04, "DAIHAN Scientific Co., Ltd.", "DAIHAN-SCIENTIFIC" }, { 0x049645, "WUXI SKY CHIP INTERCONNECTION TECHNOLOGY CO.,LTD.", "WUXI-SKY-CHIP-INTERCONNECTION" }, { 0xC8C2C6, "Shanghai Airm2m Communication Technology Co., Ltd", "SHANGHAI-AIRM2M-COMMUNICATION" }, { 0xEC64E7, "MOCACARE Corporation", "MOCACARE" }, { 0xD07C2D, "Leie IOT technology Co., Ltd", "LEIE-IOT" }, { 0x40862E, "JDM MOBILE INTERNET SOLUTION CO., LTD.", "JDM-MOBILE-INTERNET-SOLUTION" }, { 0xEC388F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xBC9C31, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x90C99B, "Recore Systems", "RECORE" }, { 0x5CB559, "CNEX Labs", "CNEX-LABS" }, { 0x5CCF7F, "Espressif Inc.", "ESPRESSIF" }, { 0x380546, "Foctek Photonics, Inc.", "FOCTEK-PHOTONICS" }, { 0x6858C5, "ZF TRW Automotive", "ZF-TRW-AUTOMOTIVE" }, { 0x044169, "GoPro", "GOPRO" }, { 0xACC51B, "Zhuhai Pantum Electronics Co., Ltd.", "ZHUHAI-PANTUM-ELECTRONICS" }, { 0xE80734, "Champion Optical Network Engineering, LLC", "CHAMPION-OPTICAL-NETWORK-ENGINEERING-LLC" }, { 0x6CEBB2, "Dongguan Sen DongLv Electronics Co.,Ltd", "DONGGUAN-SEN-DONGLV-ELECTRONICS" }, { 0xA03299, "Lenovo (Beijing) Co., Ltd.", "LENOVO-BEIJING" }, { 0xA845CD, "Siselectron Technology LTD.", "SISELECTRON" }, { 0xD0C193, "SKYBELL, INC", "SKYBELL" }, { 0x209BCD, "Apple, Inc.", "APPLE" }, { 0xF0B0E7, "Apple, Inc.", "APPLE" }, { 0xCC20E8, "Apple, Inc.", "APPLE" }, { 0xE435C8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD47208, "Bragi GmbH", "BRAGI" }, { 0x489A42, "Technomate Ltd", "TECHNOMATE" }, { 0xB49D0B, "BQ", "BQ" }, { 0x98CB27, "Galore Networks Pvt. Ltd.", "GALORE-NETWORKS-PVT" }, { 0x30D32D, "devolo AG", "DEVOLO" }, { 0xCC794A, "BLU Products Inc.", "BLU-PRODUCTS" }, { 0x60FD56, "WOORISYSTEMS CO., Ltd", "WOORISYSTEMS" }, { 0x483974, "Proware Technologies Co., Ltd.", "PROWARE-TECHNOLOGIES" }, { 0xE855B4, "SAI Technology Inc.", "SAI" }, { 0x9CA69D, "Whaley Technology Co.Ltd", "WHALEY" }, { 0x342606, "CarePredict, Inc.", "CAREPREDICT" }, { 0xB4AE2B, "Microsoft", "MICROSOFT" }, { 0x80EB77, "Wistron Corporation", "WISTRON" }, { 0xB88981, "Chengdu InnoThings Technology Co., Ltd.", "CHENGDU-INNOTHINGS" }, { 0xB4293D, "Shenzhen Urovo Technology Co.,Ltd.", "SHENZHEN-UROVO" }, { 0x906FA9, "NANJING PUTIAN TELECOMMUNICATIONS TECHNOLOGY CO.,LTD.", "NANJING-PUTIAN-TELECOMMUNICATIONS" }, { 0x14B370, "Gigaset Digital Technology (Shenzhen) Co., Ltd.", "GIGASET-DIGITAL-SHENZHEN" }, { 0xFC2FEF, "UTT Technologies Co., Ltd.", "UTT-TECHNOLOGIES" }, { 0xEC21E5, "Toshiba", "TOSHIBA" }, { 0x44FDA3, "Everysight LTD.", "EVERYSIGHT" }, { 0x84D4C8, "Widex A/S", "WIDEX-A/S" }, { 0x247260, "IOTTECH Corp", "IOTTECH" }, { 0x44975A, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x584822, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xF8BF09, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB4B265, "DAEHO I&T", "DAEHO-I-T" }, { 0x081FEB, "BinCube", "BINCUBE" }, { 0x785F4C, "Argox Information Co., Ltd.", "ARGOX-INFORMATION" }, { 0x5870C6, "Shanghai Xiaoyi Technology Co., Ltd.", "SHANGHAI-XIAOYI" }, { 0x803B2A, "ABB Xiamen Low Voltage Equipment Co.,Ltd.", "ABB-XIAMEN-LOW-VOLTAGE-EQUIPMENT" }, { 0xA0A65C, "Supercomputing Systems AG", "SUPERCOMPUTING" }, { 0x5CB395, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC412F5, "D-Link International", "D-LINK" }, { 0x44F436, "zte corporation", "ZTE" }, { 0x349B5B, "Maquet GmbH", "MAQUET" }, { 0xE861BE, "Melec Inc.", "MELEC" }, { 0x54B80A, "D-Link International", "D-LINK" }, { 0xD8ADDD, "Sonavation, Inc.", "SONAVATION" }, { 0xC09A71, "XIAMEN MEITU MOBILE TECHNOLOGY CO.LTD", "XIAMEN-MEITU-MOBILE" }, { 0x340B40, "MIOS ELETTRONICA SRL", "MIOS-ELETTRONICA-SRL" }, { 0x944A0C, "Sercomm Corporation", "SERCOMM" }, { 0xD02516, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0xD05C7A, "Sartura d.o.o.", "SARTURA-D-O-O" }, { 0x9C37F4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5CEB68, "Cheerstar Technology Co., Ltd", "CHEERSTAR" }, { 0xF46A92, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x14AEDB, "VTech Telecommunications Ltd.", "VTECH-TELECOMMUNICATIONS" }, { 0xB8C3BF, "Henan Chengshi NetWork Technology Co.,Ltd", "HENAN-CHENGSHI-NETWORK-," }, { 0xC0EE40, "Laird Technologies", "LAIRD-TECHNOLOGIES" }, { 0xF0182B, "LG Chem", "LG-CHEM" }, { 0xCC5FBF, "Topwise 3G Communication Co., Ltd.", "TOPWISE-3G-COMMUNICATION" }, { 0x14DDA9, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x485D36, "Verizon", "VERIZON" }, { 0xEC60E0, "AVI-ON LABS", "AVI-ON-LABS" }, { 0x145A83, "Logi-D inc", "LOGI-D" }, { 0x4CEEB0, "SHC Netzwerktechnik GmbH", "SHC-NETZWERKTECHNIK" }, { 0x188EF9, "G2C Co. Ltd.", "G2C" }, { 0xF4E9D4, "QLogic Corporation", "QLOGIC" }, { 0x1422DB, "eero inc.", "EERO" }, { 0x0C413E, "Microsoft Corporation", "MICROSOFT" }, { 0x007E56, "China Dragon Technology Limited", "CHINA-DRAGON" }, { 0x086266, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x346C0F, "Pramod Telecom Pvt. Ltd", "PRAMOD-TELECOM-PVT" }, { 0x3C912B, "Vexata Inc", "VEXATA" }, { 0x54369B, "1Verge Internet Technology (Beijing) Co., Ltd.", "1VERGE-INTERNET-BEIJING" }, { 0xE4FED9, "EDMI Europe Ltd", "EDMI-EUROPE" }, { 0x2852E0, "Layon international Electronic & Telecom Co.,Ltd", "LAYON-TELECOM" }, { 0xE48501, "Geberit International AG", "GEBERIT" }, { 0x1C3947, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x2CAD13, "SHENZHEN ZHILU TECHNOLOGY CO.,LTD", "SHENZHEN-ZHILU" }, { 0x68B983, "b-plus GmbH", "B-PLUS" }, { 0xBC74D7, "HangZhou JuRu Technology CO.,LTD", "HANGZHOU-JURU" }, { 0xE88E60, "NSD Corporation", "NSD" }, { 0x545146, "AMG Systems Ltd.", "AMG" }, { 0x84DDB7, "Cilag GmbH International", "CILAG" }, { 0x78EB14, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0xD05BA8, "zte corporation", "ZTE" }, { 0x8CE78C, "DK Networks", "DK-NETWORKS" }, { 0xE4BAD9, "360 Fly Inc.", "360-FLY" }, { 0x7C3CB6, "Shenzhen Homecare Technology Co.,Ltd.", "SHENZHEN-HOMECARE" }, { 0xBCE767, "Quanzhou TDX Electronics Co., Ltd", "QUANZHOU-TDX-ELECTRONICS" }, { 0x6CA7FA, "YOUNGBO ENGINEERING INC.", "YOUNGBO-ENGINEERING" }, { 0xD0929E, "Microsoft Corporation", "MICROSOFT" }, { 0xF4032F, "Reduxio Systems", "REDUXIO" }, { 0x84CFBF, "Fairphone", "FAIRPHONE" }, { 0xAC9E17, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xACC73F, "VITSMO CO., LTD.", "VITSMO" }, { 0x18BDAD, "L-TECH CORPORATION", "L-TECH" }, { 0x10C07C, "Blu-ray Disc Association", "BLU-RAY-DISC-ASSOCIATION" }, { 0xB87879, "Roche Diagnostics GmbH", "ROCHE-DIAGNOSTICS" }, { 0x4480EB, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xD06F4A, "TOPWELL INTERNATIONAL HOLDINGS LIMITED", "TOPWELL-HOLDINGS" }, { 0xBC54F9, "Drogoo Technology Co., Ltd.", "DROGOO" }, { 0x349E34, "Evervictory Electronic Co.Ltd", "EVERVICTORY" }, { 0xA0C2DE, "Costar Video Systems", "COSTAR-VIDEO" }, { 0x3809A4, "Firefly Integrations", "FIREFLY-INTEGRATIONS" }, { 0x00A509, "WigWag Inc.", "WIGWAG" }, { 0xA86405, "nimbus 9, Inc", "NIMBUS-9" }, { 0x7076FF, "KERLINK", "KERLINK" }, { 0x68F0BC, "Shenzhen LiWiFi Technology Co., Ltd", "SHENZHEN-LIWIFI" }, { 0xBCD165, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x4CA928, "Insensi", "INSENSI" }, { 0x2884FA, "SHARP Corporation", "SHARP" }, { 0x3C1E04, "D-Link International", "D-LINK" }, { 0xE0FFF7, "Softiron Inc.", "SOFTIRON" }, { 0xDC60A1, "Teledyne DALSA Professional Imaging", "TELEDYNE-DALSA-PROFESSIONAL-IMAGING" }, { 0x78E980, "RainUs Co.,Ltd", "RAINUS" }, { 0x7C8274, "Shenzhen Hikeen Technology CO.,LTD", "SHENZHEN-HIKEEN" }, { 0xB40566, "SP Best Corporation Co., LTD.", "SP-BEST" }, { 0x70AD54, "Malvern Instruments Ltd", "MALVERN-INSTRUMENTS" }, { 0xDCE026, "Patrol Tag, Inc", "PATROL-TAG" }, { 0xEC3C88, "MCNEX Co.,Ltd.", "MCNEX" }, { 0xF07959, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xE08E3C, "Aztech Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x78A351, "SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD", "SHENZHEN-ZHIBOTONG-ELECTRONICS" }, { 0x94E2FD, "Boge Kompressoren OTTO Boge GmbH & Co. KG", "BOGE-KOMPRESSOREN-OTTO-BOGE" }, { 0xE4695A, "Dictum Health, Inc.", "DICTUM-HEALTH" }, { 0xD46132, "Pro Concept Manufacturer Co.,Ltd.", "PRO-CONCEPT-MANUFACTURER" }, { 0x54A050, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x841826, "Osram GmbH", "OSRAM" }, { 0x14F893, "Wuhan FiberHome Digital Technology Co.,Ltd.", "WUHAN-FIBERHOME-DIGITAL" }, { 0x9816EC, "IC Intracom", "IC-INTRACOM" }, { 0xDCDA4F, "GETCK TECHNOLOGY, INC", "GETCK" }, { 0x30FAB7, "Tunai Creative", "TUNAI-CREATIVE" }, { 0x0809B6, "Masimo Corp", "MASIMO" }, { 0x14EDE4, "Kaiam Corporation", "KAIAM" }, { 0x3438AF, "Inlab Software GmbH", "INLAB-SOFTWARE" }, { 0x049B9C, "Eadingcore Intelligent Technology Co., Ltd.", "EADINGCORE-INTELLIGENT" }, { 0x842690, "BEIJING THOUGHT SCIENCE CO.,LTD.", "BEIJING-THOUGHT-SCIENCE" }, { 0xB84FD5, "Microsoft Corporation", "MICROSOFT" }, { 0x587BE9, "AirPro Technology India Pvt. Ltd", "AIRPRO-INDIA-PVT" }, { 0xFC1D84, "Autobase", "AUTOBASE" }, { 0x4CE933, "RailComm, LLC", "RAILCOMM-LLC" }, { 0x6050C1, "Kinetek Sports", "KINETEK-SPORTS" }, { 0x003560, "Rosen Aviation", "ROSEN-AVIATION" }, { 0xEC59E7, "Microsoft Corporation", "MICROSOFT" }, { 0x08EFAB, "SAYME WIRELESS SENSOR NETWORK", "SAYME-WIRELESS-SENSOR-NETWORK" }, { 0xC81B6B, "Innova Security", "INNOVA-SECURITY" }, { 0x5C966A, "RTNET", "RTNET" }, { 0x2C5089, "Shenzhen Kaixuan Visual Technology Co.,Limited", "SHENZHEN-KAIXUAN-VISUAL" }, { 0xEC13B2, "Netonix", "NETONIX" }, { 0x74BADB, "Longconn Electornics(shenzhen)Co.,Ltd", "LONGCONN-ELECTORNICS-SHENZHEN" }, { 0x4C7403, "BQ", "BQ" }, { 0x5876C5, "DIGI I'S LTD", "DIGI-I-S" }, { 0x00A2F5, "Guangzhou Yuanyun Network Technology Co.,Ltd", "GUANGZHOU-YUANYUN-NETWORK" }, { 0x70FC8C, "OneAccess SA", "ONEACCESS" }, { 0x902CC7, "C-MAX Asia Limited", "C-MAX-ASIA" }, { 0x188219, "Alibaba Cloud Computing Ltd.", "ALIBABA-CLOUD-COMPUTING" }, { 0xB41780, "DTI Group Ltd", "DTI-GROUP" }, { 0xD437D7, "zte corporation", "ZTE" }, { 0xAC3870, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x80EACA, "Dialog Semiconductor Hellas SA", "DIALOG-SEMICONDUCTOR-HELLAS" }, { 0x4CBC42, "Shenzhen Hangsheng Electronics Co.,Ltd.", "SHENZHEN-HANGSHENG-ELECTRONICS" }, { 0x987E46, "Emizon Networks Limited", "EMIZON-NETWORKS" }, { 0x8432EA, "ANHUI WANZTEN P&T CO., LTD", "ANHUI-WANZTEN-P-T" }, { 0x90B686, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x4C6E6E, "Comnect Technology CO.,LTD", "COMNECT" }, { 0xF4DD9E, "GoPro", "GOPRO" }, { 0x40B3CD, "Chiyoda Electronics Co.,Ltd.", "CHIYODA-ELECTRONICS" }, { 0x3451AA, "JID GLOBAL", "JID-GLOBAL" }, { 0x04572F, "Sertel Electronics UK Ltd", "SERTEL-ELECTRONICS-UK" }, { 0x08B2A3, "Cynny Italia S.r.L.", "CYNNY-ITALIA-S-R-L" }, { 0xD8977C, "Grey Innovation", "GREY-INNOVATION" }, { 0x80AD67, "Kasda Networks Inc", "KASDA-NETWORKS" }, { 0x30595B, "streamnow AG", "STREAMNOW" }, { 0xB8AD3E, "BLUECOM", "BLUECOM" }, { 0x10C37B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x48D855, "Telvent", "TELVENT" }, { 0x284ED7, "OutSmart Power Systems, Inc.", "OUTSMART-POWER" }, { 0x5C5BC2, "YIK Corporation", "YIK" }, { 0xEC8A4C, "zte corporation", "ZTE" }, { 0x8014A8, "Guangzhou V-SOLUTION Electronic Technology Co., Ltd.", "GUANGZHOU-V-SOLUTION" }, { 0x908C63, "GZ Weedong Networks Technology Co. , Ltd", "GZ-WEEDONG-NETWORKS" }, { 0xB49EAC, "Imagik Int'l Corp", "IMAGIK" }, { 0xC8E42F, "Technical Research Design and Development", "TECHNICAL-RESEARCH-DESIGN-AND-DEVELOPMENT" }, { 0xFC2325, "EosTek (Shenzhen) Co., Ltd.", "EOSTEK-SHENZHEN" }, { 0xA81374, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x4C83DE, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x5CB6CC, "NovaComm Technologies Inc.", "NOVACOMM-TECHNOLOGIES" }, { 0xB4AE6F, "Circle Reliance, Inc DBA Cranberry Networks", "CIRCLE-RELIANCE-DBA-CRANBERRY-NETWORKS" }, { 0xB89919, "7signal Solutions, Inc", "7SIGNAL-SOLUTIONS" }, { 0x90DA6A, "FOCUS H&S Co., Ltd.", "FOCUS-H-S" }, { 0xA45DA1, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xE8EF89, "OPMEX Tech.", "OPMEX-TECH" }, { 0xF4C447, "Coagent International Enterprise Limited", "COAGENT" }, { 0x08DF1F, "Bose Corporation", "BOSE" }, { 0x542AA2, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x84948C, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0xCCA0E5, "DZG Metering GmbH", "DZG-METERING" }, { 0x3059B7, "Microsoft", "MICROSOFT" }, { 0x0874F6, "Winterhalter Gastronom GmbH", "WINTERHALTER-GASTRONOM" }, { 0xFCC2DE, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x1C1CFD, "Dalian Hi-Think Computer Technology, Corp", "DALIAN-HI-THINK" }, { 0x7062B8, "D-Link International", "D-LINK" }, { 0xB875C0, "PayPal, Inc.", "PAYPAL" }, { 0xE47FB2, "FUJITSU LIMITED", "FUJITSU" }, { 0x38262B, "UTran Technology", "UTRAN" }, { 0x20ED74, "Ability enterprise co.,Ltd.", "ABILITY" }, { 0x7824AF, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0CAC05, "Unitend Technologies Inc.", "UNITEND-TECHNOLOGIES" }, { 0xB4B859, "Texa Spa", "TEXA-SPA" }, { 0x045C8E, "gosund GROUP CO.,LTD", "GOSUND-GROUP" }, { 0x54B753, "Hunan Fenghui Yinjia Science And Technology Co.,Ltd", "HUNAN-FENGHUI-YINJIA-SCIENCE-AND" }, { 0x4826E8, "Tek-Air Systems, Inc.", "TEK-AIR" }, { 0xA012DB, "TABUCHI ELECTRIC CO.,LTD", "TABUCHI-ELECTRIC" }, { 0xACB859, "Uniband Electronic Corp,", "UNIBAND" }, { 0x100F18, "Fu Gang Electronic(KunShan)CO.,LTD", "FU-GANG-KUNSHAN" }, { 0xC8D590, "FLIGHT DATA SYSTEMS", "FLIGHT-DATA" }, { 0x709383, "Intelligent Optical Network High Tech CO.,LTD.", "INTELLIGENT-OPTICAL-NETWORK-HIGH-TECH" }, { 0x6047D4, "FORICS Electronic Technology Co., Ltd.", "FORICS" }, { 0xC09D26, "Topicon HK Lmd.", "TOPICON-HK-LMD" }, { 0xB061C7, "Ericsson-LG Enterprise", "ERICSSON-LG" }, { 0xB05706, "Vallox Oy", "VALLOX-OY" }, { 0xC8D429, "Muehlbauer AG", "MUEHLBAUER" }, { 0x20EAC7, "SHENZHEN RIOPINE ELECTRONICS CO., LTD", "SHENZHEN-RIOPINE-ELECTRONICS" }, { 0x80618F, "Shenzhen sangfei consumer communications co.,ltd", "SHENZHEN-SANGFEI-CONSUMER-COMMUNICATION" }, { 0x5CF50D, "Institute of microelectronic applications", "INSTITUTE-OF-MICROELECTRONIC-APPLICATIONS" }, { 0x10DEE4, "automationNEXT GmbH", "AUTOMATIONNEXT" }, { 0x444891, "HDMI Licensing, LLC", "HDMI-LICENSING-LLC" }, { 0xFC923B, "Nokia Corporation", "NOKIA" }, { 0x38F708, "National Resource Management, Inc.", "NATIONAL-RESOURCE-MANAGEMENT" }, { 0xC4C919, "Energy Imports Ltd", "ENERGY-IMPORTS" }, { 0x88A73C, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0xB0D7C5, "Logipix Ltd", "LOGIPIX" }, { 0x38C9A9, "SMART High Reliability Solutions, Inc.", "SMART-HIGH-RELIABILITY-SOLUTIONS" }, { 0xBC1A67, "YF Technology Co., Ltd", "YF" }, { 0xB024F3, "Progeny Systems", "PROGENY" }, { 0x8C4DB9, "Unmonday Ltd", "UNMONDAY" }, { 0xD87CDD, "SANIX INCORPORATED", "SANIX-INCORPORATED" }, { 0xF8A2B4, "RHEWA-WAAGENFABRIK August Freudewald GmbH &Co. KG", "RHEWA-WAAGENFABRIK-AUGUST-FREUDEWALD-AMP" }, { 0x84FE9E, "RTC Industries, Inc.", "RTC-INDUSTRIES" }, { 0x403067, "Conlog (Pty) Ltd", "CONLOG-PTY" }, { 0x98DA92, "Vuzix Corporation", "VUZIX" }, { 0x5C2AEF, "Open Access Pty Ltd", "OPEN-ACCESS-PTY" }, { 0xE40439, "TomTom Software Ltd", "TOMTOM-SOFTWARE" }, { 0x90AE1B, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x441E91, "ARVIDA Intelligent Electronics Technology Co.,Ltd.", "ARVIDA-INTELLIGENT-ELECTRONICS" }, { 0x6C14F7, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 0xCC07E4, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xB4430D, "Broadlink Pty Ltd", "BROADLINK-PTY" }, { 0xA4BBAF, "Lime Instruments", "LIME-INSTRUMENTS" }, { 0x7CE1FF, "Computer Performance, Inc. DBA Digital Loggers, Inc.", "PERFORMANCE-DBA-DIGITAL-LOGGERS" }, { 0xD069D0, "Verto Medical Solutions, LLC", "VERTO-MEDICAL-SOLUTIONS-LLC" }, { 0xACE069, "ISAAC Instruments", "ISAAC-INSTRUMENTS" }, { 0xE8EA6A, "StarTech.com", "STARTECH-COM" }, { 0xC4E984, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x8059FD, "Noviga", "NOVIGA" }, { 0x18FF2E, "Shenzhen Rui Ying Da Technology Co., Ltd", "SHENZHEN-RUI-YING-DA" }, { 0x1CAB01, "Innovolt", "INNOVOLT" }, { 0x68856A, "OuterLink Corporation", "OUTERLINK" }, { 0x30F42F, "ESP", "ESP" }, { 0x746A8F, "VS Vision Systems GmbH", "VS-VISION" }, { 0xB068B6, "Hangzhou OYE Technology Co. Ltd", "HANGZHOU-OYE" }, { 0x9C65F9, "AcSiP Technology Corp.", "ACSIP" }, { 0x487604, "Private", "PRIVATE" }, { 0xD057A1, "Werma Signaltechnik GmbH & Co. KG", "WERMA-SIGNALTECHNIK" }, { 0x3C89A6, "KAPELSE", "KAPELSE" }, { 0x90F1B0, "Hangzhou Anheng Info&Tech CO.,LTD", "HANGZHOU-ANHENG-INFO-TECH" }, { 0x9C86DA, "Phoenix Geophysics Ltd.", "PHOENIX-GEOPHYSICS" }, { 0x48FEEA, "HOMA B.V.", "HOMA" }, { 0x10DDF4, "Maxway Electronics CO.,LTD", "MAXWAY-ELECTRONICS" }, { 0x080371, "KRG CORPORATE", "KRG-CORPORATE" }, { 0xACC595, "Graphite Systems", "GRAPHITE" }, { 0x3413A8, "Mediplan Limited", "MEDIPLAN" }, { 0x4CD9C4, "Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd", "MAGNETI-MARELLI-AUTOMOTIVE-ELECTRONICS-GUANGZHOU" }, { 0x743ECB, "Gentrice tech", "GENTRICE-TECH" }, { 0x7071B3, "Brain Corporation", "BRAIN" }, { 0x208986, "zte corporation", "ZTE" }, { 0x3CD4D6, "WirelessWERX, Inc", "WIRELESSWERX" }, { 0x64E625, "Woxu Wireless Co., Ltd", "WOXU-WIRELESS" }, { 0x7C444C, "Entertainment Solutions, S.L.", "ENTERTAINMENT-SOLUTIONS-S-L" }, { 0x501AC5, "Microsoft", "MICROSOFT" }, { 0x609620, "Private", "PRIVATE" }, { 0xF8572E, "Core Brands, LLC", "CORE-BRANDS-LLC" }, { 0xE0E631, "SNB TECHNOLOGIES LIMITED", "SNB-TECHNOLOGIES" }, { 0x20C60D, "Shanghai annijie Information technology Co.,LTD", "SHANGHAI-ANNIJIE-INFORMATION" }, { 0x7C9763, "Openmatics s.r.o.", "OPENMATICS-S-R-O" }, { 0x0444A1, "TELECON GALICIA,S.A.", "TELECON-GALICIA" }, { 0x84569C, "Coho Data, Inc.,", "COHO-DATA" }, { 0x78AE0C, "Far South Networks", "FAR-SOUTH-NETWORKS" }, { 0x38CA97, "Contour Design LLC", "CONTOUR-DESIGN-LLC" }, { 0x84A783, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x1CC11A, "Wavetronix", "WAVETRONIX" }, { 0x4CF02E, "Vifa Denmark A/S", "VIFA-DENMARK-A/S" }, { 0x3051F8, "BYK-Gardner GmbH", "BYK-GARDNER" }, { 0x94C3E4, "SCA Schucker Gmbh & Co KG", "SCA-SCHUCKER" }, { 0xFC19D0, "Cloud Vision Networks Technology Co.,Ltd.", "CLOUD-VISION-NETWORKS" }, { 0x20E791, "Siemens Healthcare Diagnostics, Inc", "SIEMENS-HEALTHCARE-DIAGNOSTICS" }, { 0x68764F, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xD4D919, "GoPro", "GOPRO" }, { 0x50C9A0, "SKIPPER Electronics AS", "SKIPPER-ELECTRONICS-AS" }, { 0xA49F89, "Shanghai Rui Rui Communication Technology Co.Ltd.", "SHANGHAI-RUI-RUI-COMMUNICATION" }, { 0xD850E6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x94103E, "Belkin International Inc.", "BELKIN" }, { 0xB4750E, "Belkin International Inc.", "BELKIN" }, { 0x346178, "The Boeing Company", "THE-BOEING-COMPANY" }, { 0x187ED5, "shenzhen kaism technology Co. Ltd", "SHENZHEN-KAISM" }, { 0x841B38, "Shenzhen Excelsecu Data Technology Co.,Ltd", "SHENZHEN-EXCELSECU-DATA" }, { 0xEC2AF0, "Ypsomed AG", "YPSOMED" }, { 0x044F8B, "Adapteva, Inc.", "ADAPTEVA" }, { 0x9CE7BD, "Winduskorea co., Ltd", "WINDUSKOREA" }, { 0xA0BF50, "S.C. ADD-PRODUCTION S.R.L.", "S-C-ADD-PRODUCTION-S-R-L" }, { 0x7CB733, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x705957, "Medallion Instrumentation Systems", "MEDALLION-INSTRUMENTATION" }, { 0x6C8366, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x88576D, "XTA Electronics Ltd", "XTA-ELECTRONICS" }, { 0xF83D4E, "Softlink Automation System Co., Ltd", "SOFTLINK-AUTOMATION-SYSTEM" }, { 0xFCD817, "Beijing Hesun Technologies Co.Ltd.", "BEIJING-HESUN-TECHNOLOGIES" }, { 0x909F43, "Accutron Instruments Inc.", "ACCUTRON-INSTRUMENTS" }, { 0x50C006, "Carmanah Signs", "CARMANAH-SIGNS" }, { 0x98FB12, "Grand Electronics (HK) Ltd", "GRAND-ELECTRONICS-HK" }, { 0x3C1040, "daesung network", "DAESUNG-NETWORK" }, { 0xB04545, "YACOUB Automation GmbH", "YACOUB-AUTOMATION" }, { 0x701D7F, "Comtech Technology Co., Ltd.", "COMTECH" }, { 0x60DB2A, "HNS", "HNS" }, { 0x7CBF88, "Mobilicom LTD", "MOBILICOM" }, { 0x90028A, "Shenzhen Shidean Legrand Electronic Products Co.,Ltd", "SHENZHEN-SHIDEAN-LEGRAND-PRODUCTS" }, { 0x90356E, "Vodafone Omnitel N.V.", "VODAFONE-OMNITEL-N-V" }, { 0x3CCA87, "Iders Incorporated", "IDERS-INCORPORATED" }, { 0x08CA45, "Toyou Feiji Electronics Co., Ltd.", "TOYOU-FEIJI-ELECTRONICS" }, { 0x9CA9E4, "zte corporation", "ZTE" }, { 0xE47723, "zte corporation", "ZTE" }, { 0xC098E5, "University of Michigan", "UNIVERSITY-OF-MICHIGAN" }, { 0xB8DF6B, "SpotCam Co., Ltd.", "SPOTCAM" }, { 0x742B62, "FUJITSU LIMITED", "FUJITSU" }, { 0x58BDF9, "Sigrand", "SIGRAND" }, { 0x344F3F, "IO-Power Technology Co., Ltd.", "IO-POWER" }, { 0xC0C687, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x142BD2, "Armtel Ltd.", "ARMTEL" }, { 0x54A54B, "NSC Communications Siberia Ltd", "NSC-COMMUNICATION-SIBERIA" }, { 0xBC2B6B, "Beijing Haier IC Design Co.,Ltd", "BEIJING-HAIER-IC-DESIGN" }, { 0x642184, "Nippon Denki Kagaku Co.,LTD", "NIPPON-DENKI-KAGAKU" }, { 0xEC3E09, "PERFORMANCE DESIGNED PRODUCTS, LLC", "PERFORMANCE-DESIGNED-PRODUCTS-LLC" }, { 0xEC219F, "VidaBox LLC", "VIDABOX-LLC" }, { 0x98D331, "Shenzhen Bolutek Technology Co.,Ltd.", "SHENZHEN-BOLUTEK" }, { 0x3C1A57, "Cardiopulmonary Corp", "CARDIOPULMONARY" }, { 0x6CF97C, "Nanoptix Inc.", "NANOPTIX" }, { 0x58E02C, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0xE481B3, "Shenzhen ACT Industrial Co.,Ltd.", "SHENZHEN-ACT-INDUSTRIAL" }, { 0xE4F3E3, "Shanghai iComhome Co.,Ltd.", "SHANGHAI-ICOMHOME" }, { 0x04CF25, "MANYCOLORS, INC.", "MANYCOLORS" }, { 0xD41090, "iNFORM Systems AG", "INFORM" }, { 0x3495DB, "Logitec Corporation", "LOGITEC" }, { 0x88142B, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0xB8241A, "SWEDA INFORMATICA LTDA", "SWEDA-INFORMATICA-LTDA" }, { 0x3806B4, "A.D.C. GmbH", "A-D-C" }, { 0x341B22, "Grandbeing Technology Co., Ltd", "GRANDBEING" }, { 0xB4346C, "MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED", "MATSUNICHI-DIGITAL-HONG-KONG" }, { 0x9C1465, "Edata Elektronik San. ve Tic. A.Ş.", "EDATA-ELEKTRONIK-SAN-VE-TIC-A-Ş" }, { 0x587A4D, "Stonesoft Corporation", "STONESOFT" }, { 0xE89218, "Arcontia International AB", "ARCONTIA-AB" }, { 0x58F387, "HCCP", "HCCP" }, { 0xB0793C, "Revolv Inc", "REVOLV" }, { 0x20CEC4, "Peraso Technologies", "PERASO-TECHNOLOGIES" }, { 0x700FEC, "Poindus Systems Corp.", "POINDUS" }, { 0x78D5B5, "NAVIELEKTRO KY", "NAVIELEKTRO-KY" }, { 0xE067B3, "C-Data Technology Co., Ltd", "C-DATA" }, { 0xB887A8, "Step Ahead Innovations Inc.", "STEP-AHEAD-INNOVATIONS" }, { 0x140D4F, "Flextronics International", "FLEXTRONICS" }, { 0xB847C6, "SanJet Technology Corp.", "SANJET" }, { 0x4CDF3D, "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD", "TEAM-ENGINEERS-ADVANCE-TECHNOLOGIES-INDIA-PVT" }, { 0x70F176, "Data Modul AG", "DATA-MODUL" }, { 0x205721, "Salix Technology CO., Ltd.", "SALIX" }, { 0x704CED, "TMRG, Inc.", "TMRG" }, { 0xE8516E, "TSMART Inc.", "TSMART" }, { 0x7C1AFC, "Dalian Co-Edifice Video Technology Co., Ltd", "DALIAN--EDIFICE-VIDEO" }, { 0xC034B4, "Gigastone Corporation", "GIGASTONE" }, { 0x74ADB7, "China Mobile Group Device Co.,Ltd.", "CHINA-MOBILE-GROUP-DEVICE" }, { 0xDC6F00, "Livescribe, Inc.", "LIVESCRIBE" }, { 0xD0737F, "Mini-Circuits", "MINI-CIRCUITS" }, { 0xA4D094, "Erwin Peters Systemtechnik GmbH", "ERWIN-PETERS-SYSTEMTECHNIK" }, { 0x0488E2, "Beats Electronics LLC", "BEATS-ELECTRONICS-LLC" }, { 0xD00EA4, "Porsche Cars North America", "PORSCHE-CARS-NORTH-AMERICA" }, { 0xF415FD, "Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd.", "SHANGHAI-PATEO-EQUIPMENT-MANUFACTURING" }, { 0x2C9464, "Cincoze Co., Ltd.", "CINCOZE" }, { 0xB050BC, "SHENZHEN BASICOM ELECTRONIC CO.,LTD.", "SHENZHEN-BASICOM" }, { 0xDC7014, "Private", "PRIVATE" }, { 0x40BC73, "Cronoplast S.L.", "CRONOPLAST-S-L" }, { 0x78303B, "Stephen Technologies Co.,Limited", "STEPHEN-TECHNOLOGIES" }, { 0x78F5E5, "BEGA Gantenbrink-Leuchten KG", "BEGA-GANTENBRINK-LEUCHTEN" }, { 0x804B20, "Ventilation Control", "VENTILATION-CONTROL" }, { 0x4007C0, "Railtec Systems GmbH", "RAILTEC" }, { 0x94B8C5, "RuggedCom Inc.", "RUGGEDCOM" }, { 0x8C3C07, "Skiva Technologies, Inc.", "SKIVA-TECHNOLOGIES" }, { 0x784B08, "f.robotics acquisitions ltd", "F-ROBOTICS-ACQUISITIONS" }, { 0x0C2D89, "QiiQ Communications Inc.", "QIIQ-COMMUNICATION" }, { 0x604A1C, "SUYIN Corporation", "SUYIN" }, { 0xA4D3B5, "GLITEL Stropkov, s.r.o.", "GLITEL-STROPKOV-S-R-O" }, { 0xA4F3C1, "Open Source Robotics Foundation, Inc.", "OPEN-SOURCE-ROBOTICS-FOUNDATION" }, { 0x6C8B2F, "zte corporation", "ZTE" }, { 0xB863BC, "ROBOTIS, Co, Ltd", "ROBOTIS" }, { 0xC8DDC9, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xCC1AFA, "zte corporation", "ZTE" }, { 0x8C5AF0, "Exeltech Solar Products", "EXELTECH-SOLAR-PRODUCTS" }, { 0xF8DADF, "EcoTech, Inc.", "ECOTECH" }, { 0x30AE7B, "Deqing Dusun Electron CO., LTD", "DEQING-DUSUN-ELECTRON" }, { 0x1441E2, "Monaco Enterprises, Inc.", "MONACO-ENTERPRISES" }, { 0xF07765, "Sourcefire, Inc", "SOURCEFIRE" }, { 0xE4F7A1, "Datafox GmbH", "DATAFOX" }, { 0x601E02, "EltexAlatau", "ELTEXALATAU" }, { 0xE47D5A, "Beijing Hanbang Technology Corp.", "BEIJING-HANBANG" }, { 0x4C6255, "SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.", "SANMINA-SCI-SYSTEM-DE-MEXICO-DE-C-V" }, { 0x381766, "PROMZAKAZ LTD.", "PROMZAKAZ" }, { 0x204C6D, "Hugo Brennenstuhl Gmbh & Co. KG.", "HUGO-BRENNENSTUHL" }, { 0xDC825B, "JANUS, spol. s r.o.", "JANUS-SPOL-S-R-O" }, { 0xB08807, "Strata Worldwide", "STRATA-WORLDWIDE" }, { 0x74D02B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xA4E0E6, "FILIZOLA S.A. PESAGEM E AUTOMACAO", "FILIZOLA-PESAGEM-E-AUTOMACAO" }, { 0x60E00E, "SHINSEI ELECTRONICS CO LTD", "SHINSEI-ELECTRONICS" }, { 0x30D46A, "Autosales Incorporated", "AUTOSALES-INCORPORATED" }, { 0x30AABD, "Shanghai Reallytek Information Technology Co.,Ltd", "SHANGHAI-REALLYTEK-INFORMATION" }, { 0xA4B818, "PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH", "PENTA-GESELLSCHAFT-FüR-ELEKTRONISCHE-INDUSTRIEDATENVERARBEITUNG-MBH" }, { 0x106682, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x102831, "Morion Inc.", "MORION" }, { 0xD81EDE, "B&W Group Ltd", "B-W-GROUP" }, { 0x6897E8, "Society of Motion Picture & Television Engineers", "SOCIETY-OF-MOTION-PICTURE-AMP-TELEVISION-ENGINEERS" }, { 0xFC58FA, "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.", "SHEN-ZHEN-SHI-XIN-ZHONG-XIN" }, { 0x60601F, "SZ DJI TECHNOLOGY CO.,LTD", "SZ-DJI" }, { 0xE0C6B3, "MilDef AB", "MILDEF-AB" }, { 0xFCDB96, "ENERVALLEY CO., LTD", "ENERVALLEY" }, { 0x882E5A, "storONE", "STORONE" }, { 0xD429EA, "Zimory GmbH", "ZIMORY" }, { 0xC80E95, "OmniLync Inc.", "OMNILYNC" }, { 0x50ABBF, "Hoseo Telecom", "HOSEO-TELECOM" }, { 0xC8EEA6, "Shenzhen SHX Technology Co., Ltd", "SHENZHEN-SHX" }, { 0x28CBEB, "One", "ONE" }, { 0x18E8DD, "MODULETEK", "MODULETEK" }, { 0x4CCC34, "Motorola Solutions Inc.", "MOTOROLA-SOLUTIONS" }, { 0xF084C9, "zte corporation", "ZTE" }, { 0xE894F6, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x94ACCA, "trivum technologies GmbH", "TRIVUM-TECHNOLOGIES" }, { 0x7CD844, "Enmotus Inc", "ENMOTUS" }, { 0xF4C6D7, "blackned GmbH", "BLACKNED" }, { 0x4CCA53, "Skyera, Inc.", "SKYERA" }, { 0x081DFB, "Shanghai Mexon Communication Technology Co.,Ltd", "SHANGHAI-MEXON-COMMUNICATION" }, { 0xD0CDE1, "Scientech Electronics", "SCIENTECH-ELECTRONICS" }, { 0x94756E, "QinetiQ North America", "QINETIQ-NORTH-AMERICA" }, { 0x0C5521, "Axiros GmbH", "AXIROS" }, { 0xA4D856, "Gimbal, Inc", "GIMBAL" }, { 0x10A743, "SK Mtek Limited", "SK-MTEK" }, { 0xE4A7FD, "Cellco Partnership", "CELLCO-PARTNERSHIP" }, { 0x24F2DD, "Radiant Zemax LLC", "RADIANT-ZEMAX-LLC" }, { 0x80CF41, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x7C9A9B, "VSE valencia smart energy", "VSE-VALENCIA-SMART-ENERGY" }, { 0xA845E9, "Firich Enterprises CO., LTD.", "FIRICH-ENTERPRISES" }, { 0x78995C, "Nationz Technologies Inc", "NATIONZ-TECHNOLOGIES" }, { 0x8CC5E1, "ShenZhen Konka Telecommunication Technology Co.,Ltd", "SHENZHEN-KONKA-TELECOMMUNICATION" }, { 0x6CB311, "Shenzhen Lianrui Electronics Co.,Ltd", "SHENZHEN-LIANRUI-ELECTRONICS" }, { 0x54115F, "Atamo Pty Ltd", "ATAMO-PTY" }, { 0x2411D0, "Chongqing Ehs Science and Technology Development Co.,Ltd.", "CHONGQING-EHS-SCIENCE-AND-DEVELOPMENT" }, { 0x6C9AC9, "Valentine Research, Inc.", "VALENTINE-RESEARCH" }, { 0x10F49A, "T3 Innovation", "T3-INNOVATION" }, { 0x5865E6, "INFOMARK CO., LTD.", "INFOMARK" }, { 0x60BD91, "Move Innovation", "MOVE-INNOVATION" }, { 0x98473C, "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD", "SHANGHAI-SUNMON-COMMUNICATION-TECHNOGY" }, { 0xCC4BFB, "Hellberg Safety AB", "HELLBERG-SAFETY-AB" }, { 0xACA22C, "Baycity Technologies Ltd", "BAYCITY-TECHNOLOGIES" }, { 0x6CADEF, "KZ Broadband Technologies, Ltd. ", "KZ-BROADBAND-TECHNOLOGIES" }, { 0x044BFF, "GuangZhou Hedy Digital Technology Co., Ltd", "GUANGZHOU-HEDY-DIGITAL" }, { 0x949BFD, "Trans New Technology, Inc.", "TRANS-NEW" }, { 0xE4EEFD, "MR&D Manufacturing", "MR-D-MANUFACTURING" }, { 0x105CBF, "DuroByte Inc", "DUROBYTE" }, { 0xEC89F5, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x083AB8, "Shinoda Plasma Co., Ltd.", "SHINODA-PLASMA" }, { 0xA0DD97, "PolarLink Technologies, Ltd", "POLARLINK-TECHNOLOGIES" }, { 0xE05597, "Emergent Vision Technologies Inc.", "EMERGENT-VISION-TECHNOLOGIES" }, { 0xA01917, "Bertel S.p.a.", "BERTEL-S-P-A" }, { 0xFC9FAE, "Fidus Systems Inc", "FIDUS" }, { 0xFC0647, "Cortland Research, LLC", "CORTLAND-RESEARCH-LLC" }, { 0x20918A, "PROFALUX", "PROFALUX" }, { 0x7C438F, "E-Band Communications Corp.", "E-BAND-COMMUNICATION" }, { 0xFC626E, "Beijing MDC Telecom", "BEIJING-MDC-TELECOM" }, { 0xC0B339, "Comigo Ltd.", "COMIGO" }, { 0xDCC0DB, "Shenzhen Kaiboer Technology Co., Ltd.", "SHENZHEN-KAIBOER" }, { 0x7076DD, "Oxyguard International A/S", "OXYGUARD-A/S" }, { 0xE89AFF, "Fujian Landi Commercial Equipment Co.,Ltd", "FUJIAN-LANDI-COMMERCIAL-EQUIPMENT" }, { 0x683B1E, "Countwise LTD", "COUNTWISE" }, { 0xD4136F, "Asia Pacific Brands", "ASIA-PACIFIC-BRANDS" }, { 0xA0A130, "DLI Taiwan Branch office", "DLI-TAIWAN-BRANCH-OFFICE" }, { 0xECE915, "STI Ltd", "STI" }, { 0xA81FAF, "KRYPTON POLSKA", "KRYPTON-POLSKA" }, { 0x087BAA, "SVYAZKOMPLEKTSERVICE, LLC", "SVYAZKOMPLEKTSERVICE-LLC" }, { 0x2C26C5, "zte corporation", "ZTE" }, { 0xBC629F, "Telenet Systems P. Ltd.", "TELENET-P" }, { 0xB47F5E, "Foresight Manufacture (S) Pte Ltd", "FORESIGHT-MANUFACTURE-S-PTE" }, { 0x785517, "SankyuElectronics", "SANKYUELECTRONICS" }, { 0x848E96, "Embertec Pty Ltd", "EMBERTEC-PTY" }, { 0xCC3A61, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xA00363, "Robert Bosch Healthcare GmbH", "ROBERT-BOSCH-HEALTHCARE" }, { 0xF0F644, "Whitesky Science & Technology Co.,Ltd.", "WHITESKY-SCIENCE" }, { 0x30D357, "Logosol, Inc.", "LOGOSOL" }, { 0x2C441B, "Spectrum Medical Limited", "SPECTRUM-MEDICAL" }, { 0x1C5A6B, "Philips Electronics Nederland BV", "PHILIPS-ELECTRONICS-NEDERLAND" }, { 0xA875D6, "FreeTek International Co., Ltd.", "FREETEK" }, { 0x58EB14, "Proteus Digital Health", "PROTEUS-DIGITAL-HEALTH" }, { 0x789F87, "Siemens AG I IA PP PRM", "SIEMENS-I-IA-PP-PRM" }, { 0x7C0A50, "J-MEX Inc.", "J-MEX" }, { 0x40F2E9, "IBM", "IBM" }, { 0x9C0473, "Tecmobile (International) Ltd. ", "TECMOBILE" }, { 0xCC262D, "Verifi, LLC", "VERIFI-LLC" }, { 0x3C8AE5, "Tensun Information Technology(Hangzhou) Co.,LTD", "TENSUN-INFORMATION-HANGZHOU" }, { 0x7CB232, "Hui Zhou Gaoshengda Technology Co.,LTD", "HUI-ZHOU-GAOSHENGDA" }, { 0x54DF63, "Intrakey technologies GmbH", "INTRAKEY-TECHNOLOGIES" }, { 0x7C0187, "Curtis Instruments, Inc.", "CURTIS-INSTRUMENTS" }, { 0x388EE7, "Fanhattan LLC", "FANHATTAN-LLC" }, { 0x54F666, "Berthold Technologies GmbH and Co.KG", "BERTHOLD-TECHNOLOGIES-AND" }, { 0x802FDE, "Zurich Instruments AG", "ZURICH-INSTRUMENTS" }, { 0x08AF78, "Totus Solutions, Inc.", "TOTUS-SOLUTIONS" }, { 0x5C38E0, "Shanghai Super Electronics Technology Co.,LTD", "SHANGHAI-SUPER-ELECTRONICS" }, { 0xA0E534, "Stratec Biomedical AG", "STRATEC-BIOMEDICAL" }, { 0x2891D0, "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH", "STAGE-TEC-ENTWICKLUNGSGESELLSCHAFT-FüR-PROFESSIONELLE-AUDIOTECHNIK-MBH" }, { 0x98291D, "Jaguar de Mexico, SA de CV", "JAGUAR-DE-MEXICO-DE-CV" }, { 0x18863A, "DIGITAL ART SYSTEM", "DIGITAL-ART-SYSTEM" }, { 0xF4B72A, "TIME INTERCONNECT LTD", "TIME-INTERCONNECT" }, { 0x34D7B4, "Tributary Systems, Inc.", "TRIBUTARY" }, { 0xF40F9B, "WAVELINK", "WAVELINK" }, { 0x144319, "Creative&Link Technology Limited", "CREATIVE-LINK" }, { 0x64F50E, "Kinion Technology Company Limited", "KINION-COMPANY" }, { 0x28A186, "enblink", "ENBLINK" }, { 0x1C9492, "RUAG Schweiz AG", "RUAG-SCHWEIZ" }, { 0x24694A, "Jasmine Systems Inc.", "JASMINE" }, { 0xC8C791, "Zero1.tv GmbH", "ZERO1-TV" }, { 0x60748D, "Atmaca Elektronik", "ATMACA-ELEKTRONIK" }, { 0x78D129, "Vicos", "VICOS" }, { 0x78AB60, "ABB Australia", "ABB-AUSTRALIA" }, { 0x289A4B, "SteelSeries ApS", "STEELSERIES-APS" }, { 0x0CC66A, "Nokia Corporation", "NOKIA" }, { 0x3078C2, "Innowireless, Co. Ltd.", "INNOWIRELESS" }, { 0x7CFE28, "Salutron Inc.", "SALUTRON" }, { 0x109FA9, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xC0A364, "3D Systems Massachusetts", "3D-MASSACHUSETTS" }, { 0x98A7B0, "MCST ZAO", "MCST-ZAO" }, { 0x88DC96, "SENAO Networks, Inc.", "SENAO-NETWORKS" }, { 0xC455C2, "Bach-Simpson", "BACH-SIMPSON" }, { 0xECA29B, "Kemppi Oy", "KEMPPI-OY" }, { 0x04CE14, "Wilocity LTD.", "WILOCITY" }, { 0x802AFA, "Germaneers GmbH", "GERMANEERS" }, { 0x1C8464, "FORMOSA WIRELESS COMMUNICATION CORP.", "FORMOSA-WIRELESS-COMMUNICATION" }, { 0xD867D9, "Cisco Systems, Inc", "CISCO" }, { 0xB4218A, "Dog Hunter LLC", "DOG-HUNTER-LLC" }, { 0xF8A03D, "Dinstar Technologies Co., Ltd.", "DINSTAR-TECHNOLOGIES" }, { 0xD08CFF, "UPWIS AB", "UPWIS-AB" }, { 0x9C066E, "Hytera Communications Corporation Limited", "HYTERA-COMMUNICATION" }, { 0x746A89, "Rezolt Corporation", "REZOLT" }, { 0x68D1FD, "Shenzhen Trimax Technology Co.,Ltd", "SHENZHEN-TRIMAX" }, { 0x241B13, "Shanghai Nutshell Electronic Co., Ltd.", "SHANGHAI-NUTSHELL" }, { 0xB43564, "Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd.", "FUJIAN-TIAN-CHENG-ELECTRON-SCIENCE-TECHNICAL-DEVELOPMENT" }, { 0x54D1B0, "Universal Laser Systems, Inc", "UNIVERSAL-LASER" }, { 0xA497BB, "Hitachi Industrial Equipment Systems Co.,Ltd", "HITACHI-INDUSTRIAL-EQUIPMENT" }, { 0xFC52CE, "Control iD", "CONTROL-ID" }, { 0xE804F3, "Throughtek Co., Ltd.", "THROUGHTEK" }, { 0xB85810, "NUMERA, INC.", "NUMERA" }, { 0x9886B1, "Flyaudio corporation (China)", "FLYAUDIO-CHINA" }, { 0x28B3AB, "Genmark Automation", "GENMARK-AUTOMATION" }, { 0x44E8A5, "Myreka Technologies Sdn. Bhd.", "MYREKA-TECHNOLOGIES-SDN-BHD" }, { 0xAC14D2, "wi-daq, inc.", "WI-DAQ" }, { 0x9C4CAE, "Mesa Labs", "MESA-LABS" }, { 0x7CD9FE, "New Cosmos Electric Co., Ltd.", "NEW-COSMOS-ELECTRIC" }, { 0xE49069, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0xB48910, "Coster T.E. S.P.A.", "COSTER-T-E-S-P-A" }, { 0xA4B1E9, "Technicolor", "TECHNICOLOR" }, { 0x30AEF6, "Radio Mobile Access", "RADIO-MOBILE-ACCESS" }, { 0x58343B, "Glovast Technology Ltd.", "GLOVAST" }, { 0x54A04F, "t-mac Technologies Ltd", "T-MAC-TECHNOLOGIES" }, { 0xE44F5F, "EDS Elektronik Destek San.Tic.Ltd.Sti", "EDS-ELEKTRONIK-DESTEK-SAN-TIC-STI" }, { 0x08B738, "Lite-On Technogy Corp.", "LITE-ON-TECHNOGY" }, { 0x9C6650, "Glodio Technolies Co.,Ltd Tianjin Branch", "GLODIO-TECHNOLIES-TIANJIN-BRANCH" }, { 0x503955, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x90CF6F, "Dlogixs Co Ltd", "DLOGIXS" }, { 0x68AF13, "Futura Mobility", "FUTURA-MOBILITY" }, { 0xB82410, "Magneti Marelli Slovakia s.r.o.", "MAGNETI-MARELLI-SLOVAKIA-S-R-O" }, { 0xA8EF26, "Tritonwave", "TRITONWAVE" }, { 0xF0D3E7, "Sensometrix SA", "SENSOMETRIX" }, { 0x7CC8D0, "TIANJIN YAAN TECHNOLOGY CO., LTD.", "TIANJIN-YAAN" }, { 0x88E917, "Tamaggo", "TAMAGGO" }, { 0x80AAA4, "USAG", "USAG" }, { 0x5C2479, "Baltech AG", "BALTECH" }, { 0xE8CBA1, "Nokia Corporation", "NOKIA" }, { 0xF85F2A, "Nokia Corporation", "NOKIA" }, { 0x286094, "CAPELEC", "CAPELEC" }, { 0x60E956, "Ayla Networks, Inc", "AYLA-NETWORKS" }, { 0x287184, "Spire Payments", "SPIRE-PAYMENTS" }, { 0x1CB094, "HTC Corporation", "HTC" }, { 0xFC5090, "SIMEX Sp. z o.o.", "SIMEX-SP-Z-O-O" }, { 0x209BA5, "JIAXING GLEAD Electronics Co.,Ltd", "JIAXING-GLEAD-ELECTRONICS" }, { 0x60843B, "Soladigm, Inc.", "SOLADIGM" }, { 0x508C77, "DIRMEIER Schanktechnik GmbH &Co KG", "DIRMEIER-SCHANKTECHNIK" }, { 0x6089B1, "Key Digital Systems", "KEY-DIGITAL" }, { 0x080CC9, "Mission Technology Group, dba Magma", "MISSION-GROUP-DBA-MAGMA" }, { 0xA0F450, "HTC Corporation", "HTC" }, { 0x44D15E, "Shanghai Kingto Information Technology Ltd", "SHANGHAI-KINGTO-INFORMATION" }, { 0x545EBD, "NL Technologies", "NL-TECHNOLOGIES" }, { 0xC8BBD3, "Embrane", "EMBRANE" }, { 0xECD19A, "Zhuhai Liming Industries Co., Ltd", "ZHUHAI-LIMING-INDUSTRIES" }, { 0x346E8A, "Ecosense", "ECOSENSE" }, { 0xACEE3B, "6harmonics Inc", "6HARMONICS" }, { 0x681605, "Systems And Electronic Development FZCO", "AND-DEVELOPMENT-FZCO" }, { 0x04F17D, "Tarana Wireless", "TARANA-WIRELESS" }, { 0xA0DC04, "Becker-Antriebe GmbH", "BECKER-ANTRIEBE" }, { 0x2CBE97, "Ingenieurbuero Bickele und Buehler GmbH", "INGENIEURBUERO-BICKELE-UND-BUEHLER" }, { 0x045A95, "Nokia Corporation", "NOKIA" }, { 0xB40E96, "HERAN ", "HERAN" }, { 0x0CAF5A, "GENUS POWER INFRASTRUCTURES LIMITED", "GENUS-POWER-INFRASTRUCTURES" }, { 0xD0699E, "LUMINEX Lighting Control Equipment", "LUMINEX-LIGHTING-CONTROL-EQUIPMENT" }, { 0x64AE88, "Polytec GmbH", "POLYTEC" }, { 0x2C542D, "Cisco Systems, Inc", "CISCO" }, { 0x709E86, "X6D Limited", "X6D" }, { 0x946124, "Pason Systems", "PASON" }, { 0xDC309C, "Heyrex Limited", "HEYREX" }, { 0xE81324, "GuangZhou Bonsoninfo System CO.,LTD", "GUANGZHOU-BONSONINFO-SYSTEM" }, { 0x0036F8, "Conti Temic microelectronic GmbH", "CONTI-TEMIC-MICROELECTRONIC" }, { 0x443839, "Cumulus Networks, inc", "CUMULUS-NETWORKS" }, { 0x20F002, "MTData Developments Pty. Ltd.", "MTDATA-DEVELOPMENTS-PTY" }, { 0xCC912B, "TE Connectivity Touch Solutions", "TE-CONNECTIVITY-TOUCH-SOLUTIONS" }, { 0x785262, "Shenzhen Hojy Software Co., Ltd.", "SHENZHEN-HOJY-SOFTWARE" }, { 0x40336C, "Godrej & Boyce Mfg. co. ltd", "GODREJ-BOYCE-MFG" }, { 0xFC1D59, "I Smart Cities HK Ltd", "I-SMART-CITIES-HK" }, { 0xEC0ED6, "ITECH INSTRUMENTS SAS", "ITECH-INSTRUMENTS-SAS" }, { 0xD0D212, "K2NET Co.,Ltd.", "K2NET" }, { 0x9C8EDC, "Teracom Limited", "TERACOM" }, { 0x146A0B, "Cypress Electronics Limited", "CYPRESS-ELECTRONICS" }, { 0xB0750C, "QA Cafe", "QA-CAFE" }, { 0xB4E1EB, "Private", "PRIVATE" }, { 0xFC2A54, "Connected Data, Inc.", "CONNECTED-DATA" }, { 0xA090DE, "VEEDIMS,LLC", "VEEDIMS-LLC" }, { 0xAC1461, "ATAW Co., Ltd.", "ATAW" }, { 0x508A42, "Uptmate Technology Co., LTD", "UPTMATE" }, { 0x8C57FD, "LVX Western", "LVX-WESTERN" }, { 0x002A6A, "Cisco Systems, Inc", "CISCO" }, { 0xB88F14, "Analytica GmbH", "ANALYTICA" }, { 0x94FAE8, "Shenzhen Eycom Technology Co., Ltd ", "SHENZHEN-EYCOM" }, { 0x3CA315, "Bless Information & Communications Co., Ltd", "BLESS-INFORMATION-COMMUNICATION" }, { 0xF8DB4C, "PNY Technologies, INC.", "PNY-TECHNOLOGIES" }, { 0xF83094, "Alcatel-Lucent Telecom Limited", "ALCATEL-LUCENT-TELECOM" }, { 0x2817CE, "Omnisense Ltd", "OMNISENSE" }, { 0x28E608, "Tokheim", "TOKHEIM" }, { 0xE477D4, "Minrray Industry Co.,Ltd ", "MINRRAY-INDUSTRY" }, { 0xA4B980, "Parking BOXX Inc.", "PARKING-BOXX" }, { 0x002D76, "TITECH GmbH", "TITECH" }, { 0x78A183, "Advidia", "ADVIDIA" }, { 0xF85063, "Verathon", "VERATHON" }, { 0x400E67, "Tremol Ltd.", "TREMOL" }, { 0x901B0E, "Fujitsu Technology Solutions GmbH", "FUJITSU-SOLUTIONS" }, { 0x5C6F4F, "S.A. SISTEL", "SISTEL" }, { 0xB058C4, "Broadcast Microwave Services, Inc", "BROADCAST-MICROWAVE-SERVICES" }, { 0xB820E7, "Guangzhou Horizontal Information & Network Integration Co. Ltd", "GUANGZHOU-HORIZONTAL-INFORMATION-NETWORK-INTEGRATION" }, { 0x98588A, "SYSGRATION Ltd.", "SYSGRATION" }, { 0x842B50, "Huria Co.,Ltd.", "HURIA" }, { 0x0C5A19, "Axtion Sdn Bhd", "AXTION-SDN-BHD" }, { 0xA00CA1, "SKTB SKiT", "SKTB-SKIT" }, { 0xE09579, "ORTHOsoft inc, d/b/a Zimmer CAS", "ORTHOSOFT-D/B/A-ZIMMER-CAS" }, { 0x307ECB, "SFR", "SFR" }, { 0x90A783, "JSW PACIFIC CORPORATION ", "JSW-PACIFIC" }, { 0x000830, "Cisco Systems, Inc", "CISCO" }, { 0xCCEF48, "Cisco Systems, Inc", "CISCO" }, { 0x78A5DD, "Shenzhen Smarteye Digital Electronics Co., Ltd", "SHENZHEN-SMARTEYE-DIGITAL-ELECTRONICS" }, { 0x28B0CC, "Xenya d.o.o.", "XENYA-D-O-O" }, { 0xECE744, "Omntec mfg. inc", "OMNTEC-MFG" }, { 0x80427C, "Adolf Tedsen GmbH & Co. KG", "ADOLF-TEDSEN" }, { 0xF8F7D3, "International Communications Corporation", "COMMUNICATION" }, { 0xB89AED, "OceanServer Technology, Inc", "OCEANSERVER" }, { 0xE455EA, "Dedicated Computing", "DEDICATED-COMPUTING" }, { 0x00FC58, "WebSilicon Ltd.", "WEBSILICON" }, { 0x64A0E7, "Cisco Systems, Inc", "CISCO" }, { 0x18E80F, "Viking Electronics Inc.", "VIKING-ELECTRONICS" }, { 0xEC6264, "Global411 Internet Services, LLC", "GLOBAL411-INTERNET-SERVICES-LLC" }, { 0x00F051, "KWB Gmbh", "KWB" }, { 0xF0DEB9, "ShangHai Y&Y Electronics Co., Ltd", "SHANGHAI-Y-Y-ELECTRONICS" }, { 0xAC54EC, "IEEE P1823 Standards Working Group", "IEEE-P1823-STANDARDS-WORKING-GROUP" }, { 0xC8292A, "Barun Electronics", "BARUN-ELECTRONICS" }, { 0xE0DADC, "JVC KENWOOD Corporation", "JVC-KENWOOD" }, { 0xC894D2, "Jiangsu Datang Electronic Products Co., Ltd", "JIANGSU-DATANG-PRODUCTS" }, { 0xA0423F, "Tyan Computer Corp", "TYAN" }, { 0x5C18B5, "Talon Communications", "TALON-COMMUNICATION" }, { 0x78BAD0, "Shinybow Technology Co. Ltd.", "SHINYBOW" }, { 0x306CBE, "Skymotion Technology (HK) Limited", "SKYMOTION-HK" }, { 0x40D559, "MICRO S.E.R.I.", "MICRO-S-E-R-I" }, { 0xF82F5B, "eGauge Systems LLC", "EGAUGE-LLC" }, { 0x3499D7, "Universal Flow Monitors, Inc.", "UNIVERSAL-FLOW-MONITORS" }, { 0x7C336E, "MEG Electronics Inc.", "MEG-ELECTRONICS" }, { 0xD4D249, "Power Ethernet", "POWER-ETHERNET" }, { 0x10C2BA, "UTT Co., Ltd.", "UTT" }, { 0xF0DA7C, "RLH INDUSTRIES,INC.", "RLH-INDUSTRIES" }, { 0x40984C, "Casacom Solutions AG", "CASACOM-SOLUTIONS" }, { 0xB8975A, "BIOSTAR Microtech Int'l Corp.", "BIOSTAR-MICROTECH" }, { 0x4833DD, "ZENNIO AVANCE Y TECNOLOGIA, S.L.", "ZENNIO-AVANCE-Y-TECNOLOGIA-S-L" }, { 0xD4D748, "Cisco Systems, Inc", "CISCO" }, { 0x9CCAD9, "Nokia Corporation", "NOKIA" }, { 0xF8313E, "endeavour GmbH", "ENDEAVOUR" }, { 0x10FC54, "Shany Electronic Co., Ltd. ", "SHANY" }, { 0xD4CA6D, "Routerboard.com", "ROUTERBOARD-COM" }, { 0xD8E743, "Wush, Inc", "WUSH" }, { 0x908FCF, "UNO System Co., Ltd", "UNO-SYSTEM" }, { 0x903CAE, "Yunnan KSEC Digital Technology Co.,Ltd.", "YUNNAN-KSEC-DIGITAL" }, { 0x000831, "Cisco Systems, Inc", "CISCO" }, { 0xF0620D, "Shenzhen Egreat Tech Corp.,Ltd", "SHENZHEN-EGREAT-TECH" }, { 0x843611, "hyungseul publishing networks", "HYUNGSEUL-PUBLISHING-NETWORKS" }, { 0xB8FD32, "Zhejiang ROICX Microelectronics", "ZHEJIANG-ROICX-MICROELECTRONICS" }, { 0xD8052E, "Skyviia Corporation", "SKYVIIA" }, { 0xF83553, "Magenta Research Ltd.", "MAGENTA-RESEARCH" }, { 0xDC3C2E, "Manufacturing System Insights, Inc.", "MANUFACTURING-SYSTEM-INSIGHTS" }, { 0x40BC8B, "itelio GmbH", "ITELIO" }, { 0x88C36E, "Beijing Ereneben lnformation Technology Limited", "BEIJING-ERENEBEN-LNFORMATION" }, { 0x8CDE52, "ISSC Technologies Corp.", "ISSC-TECHNOLOGIES" }, { 0xA8776F, "Zonoff", "ZONOFF" }, { 0x902B34, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x48E1AF, "Vity", "VITY" }, { 0xC0A0DE, "Multi Touch Oy", "MULTI-TOUCH-OY" }, { 0x943AF0, "Nokia Corporation", "NOKIA" }, { 0xB826D4, "Furukawa Industrial S.A. Produtos Elétricos", "FURUKAWA-INDUSTRIAL-PRODUTOS-ELéTRICOS" }, { 0x14E4EC, "mLogic LLC", "MLOGIC-LLC" }, { 0xAC0DFE, "Ekon GmbH - myGEKKO", "EKON---MYGEKKO" }, { 0x005CB1, "Gospell DIGITAL TECHNOLOGY CO., LTD", "GOSPELL-DIGITAL" }, { 0x186751, "KOMEG Industrielle Messtechnik GmbH", "KOMEG-INDUSTRIELLE-MESSTECHNIK" }, { 0xB467E9, "Qingdao GoerTek Technology Co., Ltd.", "QINGDAO-GOERTEK" }, { 0xB49EE6, "SHENZHEN TECHNOLOGY CO LTD", "SHENZHEN" }, { 0x7041B7, "Edwards Lifesciences LLC", "EDWARDS-LIFESCIENCES-LLC" }, { 0xA849A5, "Lisantech Co., Ltd.", "LISANTECH" }, { 0x94DB49, "SITCORP", "SITCORP" }, { 0x8CD17B, "CG Mobile", "CG-MOBILE" }, { 0x144978, "Digital Control Incorporated", "DIGITAL-CONTROL-INCORPORATED" }, { 0xFC8FC4, "Intelligent Technology Inc.", "INTELLIGENT" }, { 0xF04A2B, "PYRAMID Computer GmbH", "PYRAMID" }, { 0xCC9093, "Hansong Tehnologies", "HANSONG-TEHNOLOGIES" }, { 0x78F7D0, "Silverbrook Research", "SILVERBROOK-RESEARCH" }, { 0xF04B6A, "Scientific Production Association Siberian Arsenal, Ltd.", "SCIENTIFIC-PRODUCTION-ASSOCIATION-SIBERIAN-ARSENAL" }, { 0x30DE86, "Cedac Software S.r.l.", "CEDAC-SOFTWARE-S-R-L" }, { 0xF013C3, "SHENZHEN FENDA TECHNOLOGY CO., LTD", "SHENZHEN-FENDA" }, { 0xCCE7DF, "American Magnetics, Inc.", "AMERICAN-MAGNETICS" }, { 0xE44E18, "Gardasoft VisionLimited", "GARDASOFT-VISIONLIMITED" }, { 0xD41C1C, "RCF S.P.A.", "RCF-S-P-A" }, { 0x8C94CF, "Encell Technology, Inc.", "ENCELL" }, { 0x149090, "KongTop industrial(shen zhen)CO.,LTD", "KONGTOP-INDUSTRIAL-SHEN-ZHEN" }, { 0xCCF8F0, "Xi'an HISU Multimedia Technology Co.,Ltd.", "XI-AN-HISU-MULTIMEDIA" }, { 0x30F9ED, "Sony Corporation", "SONY" }, { 0x28C718, "Altierre", "ALTIERRE" }, { 0x2046A1, "VECOW Co., Ltd", "VECOW" }, { 0x8C271D, "QuantHouse", "QUANTHOUSE" }, { 0x9C8BF1, "The Warehouse Limited", "THE-WAREHOUSE" }, { 0x147DC5, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x944696, "BaudTec Corporation", "BAUDTEC" }, { 0x90342B, "Gatekeeper Systems, Inc.", "GATEKEEPER" }, { 0xD45251, "IBT Ingenieurbureau Broennimann Thun", "IBT-INGENIEURBUREAU-BROENNIMANN-THUN" }, { 0x3071B2, "Hangzhou Prevail Optoelectronic Equipment Co.,LTD.", "HANGZHOU-PREVAIL-OPTOELECTRONIC-EQUIPMENT" }, { 0xB82ADC, "EFR Europäische Funk-Rundsteuerung GmbH", "EFR-EUROPäISCHE-FUNK-RUNDSTEUERUNG" }, { 0xB09BD4, "GNH Software India Private Limited", "GNH-SOFTWARE-INDIA-PRIVATE" }, { 0x7CF429, "NUUO Inc. ", "NUUO" }, { 0xB8CDA7, "Maxeler Technologies Ltd.", "MAXELER-TECHNOLOGIES" }, { 0xF49461, "NexGen Storage", "NEXGEN-STORAGE" }, { 0x804731, "Packet Design, Inc.", "PACKET-DESIGN" }, { 0xACCB09, "Hefcom Metering (Pty) Ltd", "HEFCOM-METERING-PTY" }, { 0x10EED9, "Canoga Perkins Corporation", "CANOGA-PERKINS" }, { 0x240BB1, "KOSTAL Industrie Elektrik GmbH ", "KOSTAL-INDUSTRIE-ELEKTRIK" }, { 0x20EEC6, "Elefirst Science & Tech Co ., ltd", "ELEFIRST-SCIENCE-TECH" }, { 0x807A7F, "ABB Genway Xiamen Electrical Equipment CO., LTD", "ABB-GENWAY-XIAMEN-ELECTRICAL-EQUIPMENT" }, { 0x14373B, "PROCOM Systems", "PROCOM" }, { 0xB81999, "Nesys", "NESYS" }, { 0x4C5585, "Hamilton Systems", "HAMILTON" }, { 0x8CCF5C, "BEFEGA GmbH", "BEFEGA" }, { 0xA0133B, "HiTi Digital, Inc.", "HITI-DIGITAL" }, { 0x448E12, "DT Research, Inc.", "DT-RESEARCH" }, { 0x9C5711, "Feitian Xunda(Beijing) Aeronautical Information Technology Co., Ltd.", "FEITIAN-XUNDA-BEIJING-AERONAUTICAL-INFORMATION" }, { 0x18AD4D, "Polostar Technology Corporation", "POLOSTAR" }, { 0x4CA74B, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x549478, "Silvershore Technology Partners", "SILVERSHORE-PARTNERS" }, { 0xF4B164, "Lightning Telecommunications Technology Co. Ltd", "LIGHTNING-TELECOMMUNICATIONS" }, { 0x0CFC83, "Airoha Technology Corp.,", "AIROHA" }, { 0x0C51F7, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x70B035, "Shenzhen Zowee Technology Co., Ltd", "SHENZHEN-ZOWEE" }, { 0x708105, "Cisco Systems, Inc", "CISCO" }, { 0x00082F, "Cisco Systems, Inc", "CISCO" }, { 0x542018, "Tely Labs", "TELY-LABS" }, { 0x581FEF, "Tuttnaer LTD", "TUTTNAER" }, { 0xF8F25A, "G-Lab GmbH", "G-LAB" }, { 0xBC779F, "SBM Co., Ltd.", "SBM" }, { 0xC058A7, "Pico Systems Co., Ltd.", "PICO" }, { 0x04D783, "Y&H E&C Co.,LTD.", "Y-H-E-C" }, { 0x00E175, "AK-Systems Ltd", "AK" }, { 0x843F4E, "Tri-Tech Manufacturing, Inc.", "TRI-TECH-MANUFACTURING" }, { 0xC83232, "Hunting Innova", "HUNTING-INNOVA" }, { 0xD059C3, "CeraMicro Technology Corporation", "CERAMICRO" }, { 0xEC9681, "2276427 Ontario Inc", "2276427-ONTARIO" }, { 0xB8288B, "Parker Hannifin Manufacturing (UK) Ltd", "PARKER-HANNIFIN-MANUFACTURING-UK" }, { 0x5835D9, "Cisco Systems, Inc", "CISCO" }, { 0x802E14, "azeti Networks AG", "AZETI-NETWORKS" }, { 0xE8944C, "Cogent Healthcare Systems Ltd", "COGENT-HEALTHCARE" }, { 0x68F895, "Redflow Limited", "REDFLOW" }, { 0xA88792, "Broadband Antenna Tracking Systems", "BROADBAND-ANTENNA-TRACKING" }, { 0x901900, "SCS SA", "SCS" }, { 0xAC932F, "Nokia Corporation", "NOKIA" }, { 0x1435B3, "Future Designs, Inc.", "FUTURE-DESIGNS" }, { 0xFCF1CD, "OPTEX-FA CO.,LTD.", "OPTEX-FA" }, { 0xB03829, "Siliconware Precision Industries Co., Ltd.", "SILICONWARE-PRECISION-INDUSTRIES" }, { 0xBC0F2B, "FORTUNE TECHGROUP CO.,LTD", "FORTUNE-TECHGROUP" }, { 0x8CF9C9, "MESADA Technology Co.,Ltd.", "MESADA" }, { 0xE42AD3, "Magneti Marelli S.p.A. Powertrain", "MAGNETI-MARELLI-S-P-A-POWERTRAIN" }, { 0xFC10BD, "Control Sistematizado S.A.", "CONTROL-SISTEMATIZADO" }, { 0x443719, "2 Save Energy Ltd", "2-SAVE-ENERGY" }, { 0xE83EB6, "RIM", "RIM" }, { 0x94FD1D, "WhereWhen Corp", "WHEREWHEN" }, { 0x0CE82F, "Bonfiglioli Vectron GmbH", "BONFIGLIOLI-VECTRON" }, { 0xC0626B, "Cisco Systems, Inc", "CISCO" }, { 0xB4B88D, "Thuh Company", "THUH-COMPANY" }, { 0x60F59C, "CRU-Dataport", "CRU-DATAPORT" }, { 0x4C73A5, "KOVE", "KOVE" }, { 0xF86971, "Seibu Electric Co.,", "SEIBU-ELECTRIC" }, { 0x44AA27, "udworks Co., Ltd.", "UDWORKS" }, { 0x6CAD3F, "Hubbell Building Automation, Inc.", "HUBBELL-BUILDING-AUTOMATION" }, { 0x8427CE, "Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints", "OF-THE-PRESIDING-BISHOP-OF-THE-CHURCH-OF-JESUS-CHRIST-OF-LATTER-DAY-SAINTS" }, { 0xD428B2, "ioBridge, Inc.", "IOBRIDGE" }, { 0x90B8D0, "Joyent, Inc.", "JOYENT" }, { 0x909060, "RSI VIDEO TECHNOLOGIES", "RSI-VIDEO-TECHNOLOGIES" }, { 0x281471, "Lantis co., LTD.", "LANTIS" }, { 0x1407E0, "Abrantix AG", "ABRANTIX" }, { 0xDCCF94, "Beijing Rongcheng Hutong Technology Co., Ltd.", "BEIJING-RONGCHENG-HUTONG" }, { 0x18E288, "STT Condigi", "STT-CONDIGI" }, { 0x68876B, "INQ Mobile Limited", "INQ-MOBILE" }, { 0x9866EA, "Industrial Control Communications, Inc.", "INDUSTRIAL-CONTROL-COMMUNICATION" }, { 0xF4A52A, "Hawa Technologies Inc", "HAWA-TECHNOLOGIES" }, { 0x90CF15, "Nokia Corporation", "NOKIA" }, { 0xB8D49D, "M Seven System Ltd.", "M-SEVEN-SYSTEM" }, { 0xB0A10A, "Pivotal Systems Corporation", "PIVOTAL" }, { 0x48F47D, "TechVision Holding Internation Limited", "TECHVISION-HOLDING-INTERNATION" }, { 0x6C391D, "Beijing ZhongHuaHun Network Information center", "BEIJING-ZHONGHUAHUN-NETWORK-INFORMATION-CENTER" }, { 0x64D241, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x101212, "Vivo International Corporation Pty Ltd", "VIVO-PTY" }, { 0x5087B8, "Nuvyyo Inc", "NUVYYO" }, { 0xE41289, "topsystem Systemhaus GmbH", "TOPSYSTEM-SYSTEMHAUS" }, { 0xA4134E, "Luxul ", "LUXUL" }, { 0xB09928, "FUJITSU LIMITED", "FUJITSU" }, { 0x8C11CB, "ABUS Security-Center GmbH & Co. KG", "ABUS-SECURITY-CENTER" }, { 0x806459, "Nimbus Inc.", "NIMBUS" }, { 0xA45A1C, "smart-electronic GmbH", "SMART" }, { 0x8C89A5, "Micro-Star INT'L CO., LTD", "MICRO-STAR" }, { 0x3C672C, "Sciovid Inc.", "SCIOVID" }, { 0x18D071, "DASAN CO., LTD.", "DASAN" }, { 0x38D135, "EasyIO Corporation Sdn. Bhd.", "EASYIO-SDN-BHD" }, { 0x184E94, "MESSOA TECHNOLOGIES INC.", "MESSOA-TECHNOLOGIES" }, { 0x94D93C, "ENELPS", "ENELPS" }, { 0xDC9B1E, "Intercom, Inc.", "INTERCOM" }, { 0x5C7757, "Haivision Network Video", "HAIVISION-NETWORK-VIDEO" }, { 0xE8B4AE, "Shenzhen C&D Electronics Co.,Ltd", "SHENZHEN-C-D-ELECTRONICS" }, { 0xC45600, "Galleon Embedded Computing", "GALLEON-EMBEDDED-COMPUTING" }, { 0xE42FF6, "Unicore communication Inc.", "UNICORE-COMMUNICATION" }, { 0xB8F4D0, "Herrmann Ultraschalltechnik GmbH & Co. Kg", "HERRMANN-ULTRASCHALLTECHNIK" }, { 0xB4F323, "PETATEL INC.", "PETATEL" }, { 0xC81E8E, "ADV Security (S) Pte Ltd", "ADV-SECURITY-S-PTE" }, { 0xACCABA, "Midokura Co., Ltd. ", "MIDOKURA" }, { 0x9C417C, "Hame Technology Co., Limited ", "HAME" }, { 0x10768A, "EoCell", "EOCELL" }, { 0x044665, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xD0131E, "Sunrex Technology Corp", "SUNREX" }, { 0x380197, "TSST Global,Inc", "TSST-GLOBAL" }, { 0xB40142, "GCI Science & Technology Co.,LTD", "GCI-SCIENCE" }, { 0x846EB1, "Park Assist LLC", "PARK-ASSIST-LLC" }, { 0x6C504D, "Cisco Systems, Inc", "CISCO" }, { 0xC0C1C0, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x1CBD0E, "Amplified Engineering Pty Ltd", "AMPLIFIED-ENGINEERING-PTY" }, { 0xF0A764, "GST Co., Ltd.", "GST" }, { 0xA0F217, "GE Medical System(China) Co., Ltd. ", "GE-MEDICAL-SYSTEM-CHINA" }, { 0x643409, "BITwave Pte Ltd", "BITWAVE-PTE" }, { 0x20D5AB, "Korea Infocom Co.,Ltd.", "KOREA-INFOCOM" }, { 0xF05849, "CareView Communications", "CAREVIEW-COMMUNICATION" }, { 0xBC15A6, "Taiwan Jantek Electronics,Ltd.", "TAIWAN-JANTEK-ELECTRONICS" }, { 0x241A8C, "Squarehead Technology AS", "SQUAREHEAD-AS" }, { 0x1083D2, "Microseven Systems, LLC", "MICROSEVEN-LLC" }, { 0xF05D89, "Dycon Limited", "DYCON" }, { 0xAC02CF, "RW Tecnologia Industria e Comercio Ltda", "RW-TECNOLOGIA-INDUSTRIA-E-COMERCIO-LTDA" }, { 0x9067B5, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x40987B, "Aisino Corporation", "AISINO" }, { 0x6C2E33, "Accelink Technologies Co.,Ltd.", "ACCELINK-TECHNOLOGIES" }, { 0x4CEDDE, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xE8E08F, "GRAVOTECH MARKING SAS", "GRAVOTECH-MARKING-SAS" }, { 0x78B6C1, "AOBO Telecom Co.,Ltd", "AOBO-TELECOM" }, { 0xB8BA68, "Xi'an Jizhong Digital Communication Co.,Ltd", "XI-AN-JIZHONG-DIGITAL-COMMUNICATION" }, { 0xBC38D2, "Pandachip Limited", "PANDACHIP" }, { 0x14EE9D, "AirNav Systems LLC", "AIRNAV-LLC" }, { 0x48174C, "MicroPower technologies", "MICROPOWER-TECHNOLOGIES" }, { 0xF81037, "Atopia Systems, LP", "ATOPIA-LP" }, { 0x64F987, "Avvasi Inc.", "AVVASI" }, { 0x3C7437, "RIM", "RIM" }, { 0x64DC01, "Static Systems Group PLC", "STATIC-GROUP-PLC" }, { 0x1CF5E7, "Turtle Industry Co., Ltd.", "TURTLE-INDUSTRY" }, { 0x2C8065, "HARTING Inc. of North America", "HARTING-OF-NORTH-AMERICA" }, { 0xF8F014, "RackWare Inc.", "RACKWARE" }, { 0xE41C4B, "V2 TECHNOLOGY, INC.", "V2" }, { 0xE0143E, "Modoosis Inc.", "MODOOSIS" }, { 0x204AAA, "Hanscan Spain S.A.", "HANSCAN-SPAIN" }, { 0xF02572, "Cisco Systems, Inc", "CISCO" }, { 0x8091C0, "AgileMesh, Inc.", "AGILEMESH" }, { 0x0CF0B4, "Globalsat International Technology Ltd", "GLOBALSAT" }, { 0xBCC61A, "SPECTRA EMBEDDED SYSTEMS", "SPECTRA-EMBEDDED" }, { 0x48DF1C, "Wuhan NEC Fibre Optic Communications industry Co. Ltd", "WUHAN-NEC-FIBRE-OPTIC-COMMUNICATION-INDUSTRY" }, { 0xD0D3FC, "Mios, Ltd.", "MIOS" }, { 0x989449, "Skyworth Wireless Technology Ltd.", "SKYWORTH-WIRELESS" }, { 0xC8DF7C, "Nokia Corporation", "NOKIA" }, { 0xF8C678, "Carefusion", "CAREFUSION" }, { 0xFC3598, "Favite Inc.", "FAVITE" }, { 0xA0AAFD, "EraThink Technologies Corp.", "ERATHINK-TECHNOLOGIES" }, { 0x801F02, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0xE03E7D, "data-complex GmbH", "DATA-COMPLEX" }, { 0xA4E32E, "Silicon & Software Systems Ltd.", "SILICON-SOFTWARE" }, { 0x1C19DE, "eyevis GmbH", "EYEVIS" }, { 0xDC07C1, "HangZhou QiYang Technology Co.,Ltd.", "HANGZHOU-QIYANG" }, { 0xD8FE8F, "IDFone Co., Ltd.", "IDFONE" }, { 0x0006F6, "Cisco Systems, Inc", "CISCO" }, { 0xACAB8D, "Lyngso Marine A/S", "LYNGSO-MARINE-A/S" }, { 0xE8995A, "PiiGAB, Processinformation i Goteborg AB", "PIIGAB-PROCESSINFORMATION-I-GOTEBORG-AB" }, { 0xD4E32C, "S. Siedle & Sohne", "S-SIEDLE-SOHNE" }, { 0x68DCE8, "PacketStorm Communications", "PACKETSTORM-COMMUNICATION" }, { 0x78223D, "Affirmed Networks", "AFFIRMED-NETWORKS" }, { 0x60C980, "Trymus", "TRYMUS" }, { 0x94CDAC, "Creowave Oy", "CREOWAVE-OY" }, { 0xF4DCDA, "Zhuhai Jiahe Communication Technology Co., limited", "ZHUHAI-JIAHE-COMMUNICATION" }, { 0x100D32, "Embedian, Inc.", "EMBEDIAN" }, { 0xD82986, "Best Wish Technology LTD", "BEST-WISH" }, { 0xC03B8F, "Minicom Digital Signage", "MINICOM-DIGITAL-SIGNAGE" }, { 0xA4218A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x6C0460, "RBH Access Technologies Inc.", "RBH-ACCESS-TECHNOLOGIES" }, { 0x5C864A, "Secret Labs LLC", "SECRET-LABS-LLC" }, { 0xB8BA72, "Cynove", "CYNOVE" }, { 0xC00D7E, "Additech, Inc.", "ADDITECH" }, { 0x68784C, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x6C626D, "Micro-Star INT'L CO., LTD", "MICRO-STAR" }, { 0x8841C1, "ORBISAT DA AMAZONIA IND E AEROL SA", "ORBISAT-DA-AMAZONIA-IND-E-AEROL" }, { 0x18B209, "Torrey Pines Logic, Inc", "TORREY-PINES-LOGIC" }, { 0x3018CF, "DEOS control systems GmbH", "DEOS-CONTROL" }, { 0x4CF737, "SamJi Electronics Co., Ltd", "SAMJI-ELECTRONICS" }, { 0x40406B, "Icomera", "ICOMERA" }, { 0x1880CE, "Barberry Solutions Ltd", "BARBERRY-SOLUTIONS" }, { 0xCC43E3, "Trump s.a.", "TRUMP" }, { 0x6C22AB, "Ainsworth Game Technology", "AINSWORTH-GAME" }, { 0x3C106F, "ALBAHITH TECHNOLOGIES ", "ALBAHITH-TECHNOLOGIES" }, { 0x7CE044, "NEON Inc", "NEON" }, { 0x64D02D, "Next Generation Integration (NGI)", "NEXT-GENERATION-INTEGRATION-NGI" }, { 0xA04041, "SAMWONFA Co.,Ltd.", "SAMWONFA" }, { 0x788C54, "Eltek Technologies LTD", "ELTEK-TECHNOLOGIES" }, { 0x9411DA, "ITF Fröschl GmbH", "ITF-FRöSCHL" }, { 0x10E8EE, "PhaseSpace", "PHASESPACE" }, { 0xA47C1F, "Cobham plc", "COBHAM-PLC" }, { 0x8C1F94, "RF Surgical System Inc. ", "RF-SURGICAL-SYSTEM" }, { 0x74A4A7, "QRS Music Technologies, Inc.", "QRS-MUSIC-TECHNOLOGIES" }, { 0x8039E5, "PATLITE CORPORATION", "PATLITE" }, { 0xBCFFAC, "TOPCON CORPORATION", "TOPCON" }, { 0x602A54, "CardioTek B.V.", "CARDIOTEK" }, { 0x1C3DE7, "Sigma Koki Co.,Ltd.", "SIGMA-KOKI" }, { 0x482CEA, "Motorola Inc Business Light Radios", "MOTOROLA-BUSINESS-LIGHT-RADIOS" }, { 0x70E139, "3view Ltd", "3VIEW" }, { 0xAC6123, "Drivven, Inc.", "DRIVVEN" }, { 0x3C04BF, "PRAVIS SYSTEMS Co.Ltd.,", "PRAVIS" }, { 0x443D21, "Nuvolt", "NUVOLT" }, { 0x749050, "Renesas Electronics Corporation", "RENESAS-ELECTRONICS" }, { 0x7CBB6F, "Cosco Electronics Co., Ltd.", "COSCO-ELECTRONICS" }, { 0xD466A8, "Riedo Networks GmbH", "RIEDO-NETWORKS" }, { 0x98E165, "Accutome", "ACCUTOME" }, { 0xEC66D1, "B&W Group LTD", "B-W-GROUP" }, { 0x385FC3, "Yu Jeong System, Co.Ltd", "YU-JEONG-SYSTEM" }, { 0x94857A, "Evantage Industries Corp", "EVANTAGE-INDUSTRIES" }, { 0x4451DB, "Raytheon BBN Technologies", "RAYTHEON-BBN-TECHNOLOGIES" }, { 0x64995D, "LGE ", "LGE" }, { 0x585076, "Linear Equipamentos Eletronicos SA", "LINEAR-EQUIPAMENTOS-ELETRONICOS" }, { 0x4083DE, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x8897DF, "Entrypass Corporation Sdn. Bhd.", "ENTRYPASS-SDN-BHD" }, { 0x0C15C5, "SDTEC Co., Ltd.", "SDTEC" }, { 0x9803A0, "ABB n.v. Power Quality Products", "ABB-N-V-POWER-QUALITY-PRODUCTS" }, { 0xDCFAD5, "STRONG Ges.m.b.H.", "STRONG-GES-M-B-H" }, { 0xD84606, "Silicon Valley Global Marketing", "SILICON-VALLEY-GLOBAL-MARKETING" }, { 0xD0E347, "Yoga", "YOGA" }, { 0x84A991, "Cyber Trans Japan Co.,Ltd.", "CYBER-TRANS-JAPAN" }, { 0xD81C14, "Compacta International, Ltd.", "COMPACTA" }, { 0x9088A2, "IONICS TECHNOLOGY ME LTDA", "IONICS-ME-LTDA" }, { 0xB0B8D5, "Nanjing Nengrui Auto Equipment CO.,Ltd", "NANJING-NENGRUI-AUTO-EQUIPMENT" }, { 0x8497B8, "Memjet Inc.", "MEMJET" }, { 0xA8556A, "Pocketnet Technology Inc.", "POCKETNET" }, { 0xB081D8, "I-sys Corp", "I-SYS" }, { 0x206AFF, "Atlas Elektronik UK Limited", "ATLAS-ELEKTRONIK-UK" }, { 0xEC542E, "Shanghai XiMei Electronic Technology Co. Ltd", "SHANGHAI-XIMEI" }, { 0xB88E3A, "Infinite Technologies JLT", "INFINITE-TECHNOLOGIES-JLT" }, { 0x74BE08, "ATEK Products, LLC", "ATEK-PRODUCTS-LLC" }, { 0xE0EE1B, "Panasonic Automotive Systems Company of America", "PANASONIC-AUTOMOTIVE-COMPANY-OF-AMERICA" }, { 0xE80C38, "DAEYOUNG INFORMATION SYSTEM CO., LTD", "DAEYOUNG-INFORMATION-SYSTEM" }, { 0x68597F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x2C3068, "Pantech Co.,Ltd", "PANTECH" }, { 0x5C4058, "Jefferson Audio Video Systems, Inc.", "JEFFERSON-AUDIO-VIDEO" }, { 0x64317E, "Dexin Corporation", "DEXIN" }, { 0xAC9B84, "Smak Tecnologia e Automacao", "SMAK-TECNOLOGIA-E-AUTOMACAO" }, { 0x4C022E, "CMR KOREA CO., LTD", "CMR-KOREA" }, { 0x24A42C, "KOUKAAM a.s.", "KOUKAAM-A-S" }, { 0x34F39B, "WizLAN Ltd.", "WIZLAN" }, { 0x74B9EB, "JinQianMao Technology Co.,Ltd.", "JINQIANMAO" }, { 0x244597, "GEMUE Gebr. Mueller Apparatebau", "GEMUE-GEBR-MUELLER-APPARATEBAU" }, { 0x30694B, "RIM", "RIM" }, { 0xAC5135, "MPI TECH", "MPI-TECH" }, { 0x00D38D, "Hotel Technology Next Generation", "HOTEL-NEXT-GENERATION" }, { 0x3C6278, "SHENZHEN JETNET TECHNOLOGY CO.,LTD.", "SHENZHEN-JETNET" }, { 0x8081A5, "TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd", "TONGQING-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0xEC8EAD, "DLX", "DLX" }, { 0xECDE3D, "Lamprey Networks, Inc.", "LAMPREY-NETWORKS" }, { 0x04FE7F, "Cisco Systems, Inc", "CISCO" }, { 0xE8056D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00D11C, "ACETEL", "ACETEL" }, { 0x1056CA, "Peplink International Ltd.", "PEPLINK" }, { 0x44A689, "PROMAX ELECTRONICA SA", "PROMAX-ELECTRONICA" }, { 0x10CCDB, "AXIMUM PRODUITS ELECTRONIQUES", "AXIMUM-PRODUITS-ELECTRONIQUES" }, { 0x6C92BF, "Inspur Electronic Information Industry Co.,Ltd.", "INSPUR-INFORMATION-INDUSTRY" }, { 0xE01CEE, "Bravo Tech, Inc.", "BRAVO-TECH" }, { 0x3C1915, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0xEC5C69, "MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD.", "MITSUBISHI-HEAVY-INDUSTRIES-MECHATRONICS" }, { 0x04E548, "Cohda Wireless Pty Ltd", "COHDA-WIRELESS-PTY" }, { 0x0C1DC2, "SeAH Networks", "SEAH-NETWORKS" }, { 0x28CD4C, "Individual Computers GmbH", "INDIVIDUAL-COMPUTERS" }, { 0x8C53F7, "A&D ENGINEERING CO., LTD.", "A-D-ENGINEERING" }, { 0x781185, "NBS Payment Solutions Inc.", "NBS-PAYMENT-SOLUTIONS" }, { 0x2893FE, "Cisco Systems, Inc", "CISCO" }, { 0x10B7F6, "Plastoform Industries Ltd.", "PLASTOFORM-INDUSTRIES" }, { 0x2059A0, "Paragon Technologies Inc.", "PARAGON-TECHNOLOGIES" }, { 0x487119, "SGB GROUP LTD.", "SGB-GROUP" }, { 0xE0ABFE, "Orb Networks, Inc.", "ORB-NETWORKS" }, { 0xCCEA1C, "DCONWORKS Co., Ltd", "DCONWORKS" }, { 0xACE348, "MadgeTech, Inc", "MADGETECH" }, { 0x687F74, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0xCCB888, "AnB Securite s.a.", "ANB-SECURITE" }, { 0xCC2218, "InnoDigital Co., Ltd.", "INNODIGITAL" }, { 0xB86491, "CK Telecom Ltd", "CK-TELECOM" }, { 0x80C862, "Openpeak, Inc", "OPENPEAK" }, { 0xE43593, "Hangzhou GoTo technology Co.Ltd", "HANGZHOU-GOTO" }, { 0xE0BC43, "C2 Microsystems, Inc.", "C2-MICROSYSTEMS" }, { 0x7884EE, "INDRA ESPACIO S.A.", "INDRA-ESPACIO" }, { 0x2C3F3E, "Alge-Timing GmbH", "ALGE-TIMING" }, { 0xC0CFA3, "Creative Electronics & Software, Inc.", "CREATIVE-ELECTRONICS-SOFTWARE" }, { 0xD4823E, "Argosy Technologies, Ltd.", "ARGOSY-TECHNOLOGIES" }, { 0x844823, "WOXTER TECHNOLOGY Co. Ltd", "WOXTER" }, { 0xD0F0DB, "Ericsson", "ERICSSON" }, { 0x7C1476, "Damall Technologies SAS", "DAMALL-TECHNOLOGIES-SAS" }, { 0xD05875, "Active Control Technology Inc.", "ACTIVE-CONTROL" }, { 0xD81BFE, "TWINLINX CORPORATION", "TWINLINX" }, { 0xD46CBF, "Goodrich ISR", "GOODRICH-ISR" }, { 0x5C57C8, "Nokia Corporation", "NOKIA" }, { 0x4CC602, "Radios, Inc.", "RADIOS" }, { 0x3C05AB, "Product Creation Studio", "PRODUCT-CREATION-STUDIO" }, { 0x3C39C3, "JW Electronics Co., Ltd.", "JW-ELECTRONICS" }, { 0x547FEE, "Cisco Systems, Inc", "CISCO" }, { 0xA4C2AB, "Hangzhou LEAD-IT Information & Technology Co.,Ltd", "HANGZHOU-LEAD-IT-INFORMATION" }, { 0x48AA5D, "Store Electronic Systems", "STORE" }, { 0x1062C9, "Adatis GmbH & Co. KG", "ADATIS" }, { 0xD8AE90, "Itibia Technologies", "ITIBIA-TECHNOLOGIES" }, { 0x904716, "RORZE CORPORATION", "RORZE" }, { 0x28E794, "Microtime Computer Inc.", "MICROTIME" }, { 0x8894F9, "Gemicom Technology, Inc.", "GEMICOM" }, { 0x0CA42A, "OB Telecom Electronic Technology Co., Ltd", "OB-TELECOM" }, { 0x5850E6, "Best Buy Corporation", "BEST-BUY" }, { 0xAC9A96, "Lantiq Deutschland GmbH", "LANTIQ-DEUTSCHLAND" }, { 0xE86CDA, "Supercomputers and Neurocomputers Research Center", "SUPERCOMPUTERS-AND-NEUROCOMPUTERS-RESEARCH-CENTER" }, { 0x24B6B8, "FRIEM SPA", "FRIEM-SPA" }, { 0xF86ECF, "Arcx Inc", "ARCX" }, { 0x8C8401, "Private", "PRIVATE" }, { 0x6C7039, "Novar GmbH", "NOVAR" }, { 0xA4561B, "MCOT Corporation", "MCOT" }, { 0x80EE73, "Shuttle Inc.", "SHUTTLE" }, { 0x10C73F, "Midas Klark Teknik Ltd", "MIDAS-KLARK-TEKNIK" }, { 0x408A9A, "TITENG CO., Ltd.", "TITENG" }, { 0x702B1D, "E-Domus International Limited", "E-DOMUS" }, { 0xF077D0, "Xcellen", "XCELLEN" }, { 0x785C72, "Hioso Technology Co., Ltd.", "HIOSO" }, { 0x94236E, "Shenzhen Junlan Electronic Ltd", "SHENZHEN-JUNLAN" }, { 0x88BA7F, "Qfiednet Co., Ltd.", "QFIEDNET" }, { 0xE02636, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x4456B7, "Spawn Labs, Inc", "SPAWN-LABS" }, { 0xA09805, "OpenVox Communication Co Ltd", "OPENVOX-COMMUNICATION" }, { 0x00271D, "Comba Telecom Systems (China) Ltd.", "COMBA-TELECOM-CHINA" }, { 0x002721, "Shenzhen Baoan Fenda Industrial Co., Ltd", "SHENZHEN-BAOAN-FENDA-INDUSTRIAL" }, { 0xA09A5A, "Time Domain", "TIME-DOMAIN" }, { 0x64A837, "Juni Korea Co., Ltd", "JUNI-KOREA" }, { 0xB4B5AF, "Minsung Electronics", "MINSUNG-ELECTRONICS" }, { 0x44568D, "PNC Technologies Co., Ltd.", "PNC-TECHNOLOGIES" }, { 0xACD180, "Crexendo Business Solutions, Inc.", "CREXENDO-BUSINESS-SOLUTIONS" }, { 0xAC8317, "Shenzhen Furtunetel Communication Co., Ltd", "SHENZHEN-FURTUNETEL-COMMUNICATION" }, { 0xE80B13, "Akib Systems Taiwan, INC", "AKIB-TAIWAN" }, { 0x44C9A2, "Greenwald Industries", "GREENWALD-INDUSTRIES" }, { 0x646E6C, "Radio Datacom LLC", "RADIO-DATACOM-LLC" }, { 0xE4751E, "Getinge Sterilization AB", "GETINGE-STERILIZATION-AB" }, { 0xF8811A, "OVERKIZ", "OVERKIZ" }, { 0x042BBB, "PicoCELA, Inc.", "PICOCELA" }, { 0xFC0877, "Prentke Romich Company", "PRENTKE-ROMICH-COMPANY" }, { 0xECD00E, "MiraeRecognition Co., Ltd.", "MIRAERECOGNITION" }, { 0x747E1A, "Red Embedded Design Limited", "RED-EMBEDDED-DESIGN" }, { 0xC47D4F, "Cisco Systems, Inc", "CISCO" }, { 0x4C9EE4, "Hanyang Navicom Co.,Ltd.", "HANYANG-NAVICOM" }, { 0x3CDF1E, "Cisco Systems, Inc", "CISCO" }, { 0xBCB181, "SHARP CORPORATION", "SHARP" }, { 0x78B81A, "INTER SALES A/S", "INTER-SALES-A/S" }, { 0x78192E, "NASCENT Technology", "NASCENT" }, { 0x2C0623, "Win Leader Inc.", "WIN-LEADER" }, { 0xC82E94, "Halfa Enterprise Co., Ltd.", "HALFA" }, { 0x0C2755, "Valuable Techologies Limited", "VALUABLE-TECHOLOGIES" }, { 0xC038F9, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xF46349, "Diffon Corporation", "DIFFON" }, { 0x5C8778, "Cybertelbridge co.,ltd", "CYBERTELBRIDGE" }, { 0x9C5E73, "Calibre UK LTD", "CALIBRE-UK" }, { 0xF06281, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x003A9B, "Cisco Systems, Inc", "CISCO" }, { 0x2C9127, "Eintechno Corporation", "EINTECHNO" }, { 0xC09C92, "COBY", "COBY" }, { 0x849000, "Arnold & Richter Cine Technik", "ARNOLD-RICHTER-CINE-TECHNIK" }, { 0xC87248, "Aplicom Oy", "APLICOM-OY" }, { 0x74D850, "Evrisko Systems", "EVRISKO" }, { 0x6CAC60, "Venetex Corp", "VENETEX" }, { 0xDC0265, "Meditech Kft", "MEDITECH-KFT" }, { 0x68A1B7, "Honghao Mingchuan Technology (Beijing) CO.,Ltd.", "HONGHAO-MINGCHUAN-BEIJING" }, { 0x7CCFCF, "Shanghai SEARI Intelligent System Co., Ltd", "SHANGHAI-SEARI-INTELLIGENT-SYSTEM" }, { 0xEC3091, "Cisco Systems, Inc", "CISCO" }, { 0x3032D4, "Hanilstm Co., Ltd.", "HANILSTM" }, { 0x0026EE, "TKM GmbH", "TKM" }, { 0x0026E7, "Shanghai ONLAN Communication Tech. Co., Ltd.", "SHANGHAI-ONLAN-COMMUNICATION-TECH" }, { 0x0026E1, "Stanford University, OpenFlow Group", "STANFORD-UNIVERSITY-OPENFLOW-GROUP" }, { 0x0026DB, "Ionics EMS Inc.", "IONICS-EMS" }, { 0x0026CE, "Kozumi USA Corp.", "KOZUMI-USA" }, { 0x0026D5, "Ory Solucoes em Comercio de Informatica Ltda.", "ORY-SOLUCOES-EM-COMERCIO-DE-INFORMATICA-LTDA" }, { 0x0026C8, "System Sensor", "SYSTEM-SENSOR" }, { 0x002711, "LanPro Inc", "LANPRO" }, { 0x00270D, "Cisco Systems, Inc", "CISCO" }, { 0x002707, "Lift Complex DS, JSC", "LIFT-COMPLEX-DS-JSC" }, { 0x002700, "Shenzhen Siglent Technology Co., Ltd.", "SHENZHEN-SIGLENT" }, { 0x0026FA, "BandRich Inc.", "BANDRICH" }, { 0x0026F4, "Nesslab", "NESSLAB" }, { 0x0025D7, "CEDO", "CEDO" }, { 0x0025D2, "InpegVision Co., Ltd", "INPEGVISION" }, { 0x0025D1, "Eastern Asia Technology Limited", "EASTERN-ASIA" }, { 0x0025CB, "Reiner SCT", "REINER-SCT" }, { 0x0025BF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0025B1, "Maya-Creation Corporation", "MAYA-CREATION" }, { 0x0025B8, "Agile Communications, Inc.", "AGILE-COMMUNICATION" }, { 0x0025B2, "MBDA Deutschland GmbH", "MBDA-DEUTSCHLAND" }, { 0x0025AC, "I-Tech corporation", "I-TECH" }, { 0x0026C2, "SCDI Co. LTD", "SCDI" }, { 0x0026BC, "General Jack Technology Ltd.", "GENERAL-JACK" }, { 0x0026B4, "Ford Motor Company", "FORD-MOTOR-COMPANY" }, { 0x0026AE, "Wireless Measurement Ltd", "WIRELESS-MEASUREMENT" }, { 0x0026AA, "Kenmec Mechanical Engineering Co., Ltd.", "KENMEC-MECHANICAL-ENGINEERING" }, { 0x0026A4, "Novus Produtos Eletronicos Ltda", "NOVUS-PRODUTOS-ELETRONICOS-LTDA" }, { 0x002698, "Cisco Systems, Inc", "CISCO" }, { 0x00269D, "M2Mnet Co., Ltd.", "M2MNET" }, { 0x00268B, "Guangzhou Escene Computer Technology Limited", "GUANGZHOU-ESCENE" }, { 0x002685, "Digital Innovation", "DIGITAL-INNOVATION" }, { 0x002678, "Logic Instrument SA", "LOGIC-INSTRUMENT" }, { 0x002672, "AAMP of America", "AAMP-OF-AMERICA" }, { 0x00266B, "SHINE UNION ENTERPRISE LIMITED", "SHINE-UNION" }, { 0x002666, "EFM Networks", "EFM-NETWORKS" }, { 0x002665, "ProtectedLogic Corporation", "PROTECTEDLOGIC" }, { 0x002651, "Cisco Systems, Inc", "CISCO" }, { 0x002652, "Cisco Systems, Inc", "CISCO" }, { 0x002646, "SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED", "SHENYANG-TONGFANG-MULTIMEDIA-COMPANY" }, { 0x002640, "Baustem Broadband Technologies, Ltd.", "BAUSTEM-BROADBAND-TECHNOLOGIES" }, { 0x00263A, "Digitec Systems", "DIGITEC" }, { 0x002634, "Infineta Systems, Inc", "INFINETA" }, { 0x002633, "MIR - Medical International Research", "MIR---MEDICAL-RESEARCH" }, { 0x00262E, "Chengdu Jiuzhou Electronic Technology Inc", "CHENGDU-JIUZHOU" }, { 0x002627, "Truesell", "TRUESELL" }, { 0x002621, "InteliCloud Technology Inc.", "INTELICLOUD" }, { 0x00261B, "LAUREL BANK MACHINES CO., LTD.", "LAUREL-BANK-MACHINES" }, { 0x002614, "KTNF", "KTNF" }, { 0x00260E, "Ablaze Systems, LLC", "ABLAZE-LLC" }, { 0x002602, "SMART Temps LLC", "SMART-TEMPS-LLC" }, { 0x002601, "Cutera Inc", "CUTERA" }, { 0x0025F7, "Ansaldo STS USA", "ANSALDO-STS-USA" }, { 0x0025FC, "ENDA ENDUSTRIYEL ELEKTRONIK LTD. STI.", "ENDA-ENDUSTRIYEL-ELEKTRONIK-STI" }, { 0x0025ED, "NuVo Technologies LLC", "NUVO-TECHNOLOGIES-LLC" }, { 0x0025EE, "Avtex Ltd", "AVTEX" }, { 0x0025E8, "Idaho Technology", "IDAHO" }, { 0x0025E3, "Hanshinit Inc.", "HANSHINIT" }, { 0x0025DE, "Probits Co., LTD.", "PROBITS" }, { 0x002579, "J & F Labs", "J-F-LABS" }, { 0x00257E, "NEW POS Technology Limited", "NEW-POS" }, { 0x002572, "Nemo-Q International AB", "NEMO-Q-AB" }, { 0x00256B, "ATENIX E.E. s.r.l.", "ATENIX-E-E-S-R-L" }, { 0x00256C, "Azimut Production Association JSC", "AZIMUT-PRODUCTION-ASSOCIATION-JSC" }, { 0x00255F, "SenTec AG", "SENTEC" }, { 0x00255A, "Tantalus Systems Corp.", "TANTALUS" }, { 0x002559, "Syphan Technologies Ltd", "SYPHAN-TECHNOLOGIES" }, { 0x0025A5, "Walnut Media Network", "WALNUT-MEDIA-NETWORK" }, { 0x00259F, "TechnoDigital Technologies GmbH", "TECHNODIGITAL-TECHNOLOGIES" }, { 0x002599, "Hedon e.d. B.V.", "HEDON-E-D" }, { 0x002592, "Guangzhou Shirui Electronic Co., Ltd", "GUANGZHOU-SHIRUI" }, { 0x00258D, "Haier", "HAIER" }, { 0x002588, "Genie Industries, Inc.", "GENIE-INDUSTRIES" }, { 0x002583, "Cisco Systems, Inc", "CISCO" }, { 0x00254C, "Videon Central, Inc.", "VIDEON-CENTRAL" }, { 0x002536, "Oki Electric Industry Co., Ltd.", "OKI-ELECTRIC-INDUSTRY" }, { 0x00253D, "DRS Consolidated Controls", "DRS-CONSOLIDATED-CONTROLS" }, { 0x002540, "Quasar Technologies, Inc.", "QUASAR-TECHNOLOGIES" }, { 0x002533, "WITTENSTEIN AG", "WITTENSTEIN" }, { 0x00252C, "Entourage Systems, Inc.", "ENTOURAGE" }, { 0x002502, "NaturalPoint", "NATURALPOINT" }, { 0x0024FB, "Private", "PRIVATE" }, { 0x0024F6, "MIYOSHI ELECTRONICS CORPORATION", "MIYOSHI-ELECTRONICS" }, { 0x0024EA, "iris-GmbH infrared & intelligent sensors", "IRIS--INFRARED-INTELLIGENT-SENSORS" }, { 0x0024E3, "CAO Group", "CAO-GROUP" }, { 0x002527, "Bitrode Corp.", "BITRODE" }, { 0x002524, "Lightcomm Technology Co., Ltd", "LIGHTCOMM" }, { 0x00251F, "ZYNUS VISION INC.", "ZYNUS-VISION" }, { 0x00251A, "Psiber Data Systems Inc.", "PSIBER-DATA" }, { 0x002515, "SFR", "SFR" }, { 0x00250E, "gt german telematics gmbh", "GT-GERMAN-TELEMATICS" }, { 0x002507, "ASTAK Inc.", "ASTAK" }, { 0x002509, "SHARETRONIC Group LTD", "SHARETRONIC-GROUP" }, { 0x002437, "Motorola - BSG", "MOTOROLA---BSG" }, { 0x00243C, "S.A.A.A.", "A-A" }, { 0x002430, "Ruby Tech Corp.", "RUBY-TECH" }, { 0x0023FB, "IP Datatel, LLC.", "IP-DATATEL-LLC" }, { 0x0023F3, "Glocom, Inc.", "GLOCOM" }, { 0x0023EF, "Zuend Systemtechnik AG", "ZUEND-SYSTEMTECHNIK" }, { 0x0023E9, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x0023E3, "Microtronic AG", "MICROTRONIC" }, { 0x0023E2, "SEA Signalisation", "SEA-SIGNALISATION" }, { 0x0023DD, "ELGIN S.A.", "ELGIN" }, { 0x0023D0, "Uniloc USA Inc.", "UNILOC-USA" }, { 0x0023CA, "Behind The Set, LLC", "BEHIND-THE-SET-LLC" }, { 0x0024B0, "ESAB AB", "ESAB-AB" }, { 0x0024A9, "Ag Leader Technology", "LEADER" }, { 0x0024A2, "Hong Kong Middleware Technology Limited", "HONG-KONG-MIDDLEWARE" }, { 0x0024A4, "Siklu Communication", "SIKLU-COMMUNICATION" }, { 0x00249D, "NES Technology Inc.", "NES" }, { 0x00248A, "Kaga Electronics Co., Ltd.", "KAGA-ELECTRONICS" }, { 0x00248F, "DO-MONIX", "DO-MONIX" }, { 0x002496, "Ginzinger electronic systems", "GINZINGER" }, { 0x002477, "Tibbo Technology", "TIBBO" }, { 0x002470, "AUROTECH ultrasound AS.", "AUROTECH-ULTRASOUND-AS" }, { 0x002472, "ReDriven Power Inc.", "REDRIVEN-POWER" }, { 0x00246B, "Covia, Inc.", "COVIA" }, { 0x002464, "Bridge Technologies Co AS", "BRIDGE-TECHNOLOGIES-AS" }, { 0x00245F, "Vine Telecom CO.,Ltd.", "VINE-TELECOM" }, { 0x002420, "NetUP Inc.", "NETUP" }, { 0x002426, "NOHMI BOSAI LTD.", "NOHMI-BOSAI" }, { 0x00241A, "Red Beetle Inc.", "RED-BEETLE" }, { 0x002413, "Cisco Systems, Inc", "CISCO" }, { 0x00240D, "OnePath Networks LTD.", "ONEPATH-NETWORKS" }, { 0x00240E, "Inventec Besta Co., Ltd.", "INVENTEC-BESTA" }, { 0x002407, "TELEM SAS", "TELEM-SAS" }, { 0x002400, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0024D0, "Shenzhen SOGOOD Industry CO.,LTD.", "SHENZHEN-SOGOOD-INDUSTRY" }, { 0x0024D5, "Winward Industrial Limited", "WINWARD-INDUSTRIAL" }, { 0x0024C9, "Broadband Solutions Group", "BROADBAND-SOLUTIONS-GROUP" }, { 0x0024C4, "Cisco Systems, Inc", "CISCO" }, { 0x0024BF, "CIAT", "CIAT" }, { 0x0024B5, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00245A, "Nanjing Panda Electronics Company Limited", "NANJING-PANDA-ELECTRONICS-COMPANY" }, { 0x002453, "Initra d.o.o.", "INITRA-D-O-O" }, { 0x00244D, "Hokkaido Electronics Corporation", "HOKKAIDO-ELECTRONICS" }, { 0x002452, "Silicon Software GmbH", "SILICON-SOFTWARE" }, { 0x002446, "MMB Research Inc.", "MMB-RESEARCH" }, { 0x002441, "Wanzl Metallwarenfabrik GmbH", "WANZL-METALLWARENFABRIK" }, { 0x002368, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x00236F, "DAQ System", "DAQ-SYSTEM" }, { 0x002362, "Goldline Controls", "GOLDLINE-CONTROLS" }, { 0x002361, "Unigen Corporation", "UNIGEN" }, { 0x00235C, "Aprius, Inc.", "APRIUS" }, { 0x002355, "Kinco Automation(Shanghai) Ltd.", "KINCO-AUTOMATION-SHANGHAI" }, { 0x00234F, "Luminous Power Technologies Pvt. Ltd.", "LUMINOUS-POWER-TECHNOLOGIES-PVT" }, { 0x002350, "LynTec", "LYNTEC" }, { 0x002349, "Helmholtz Centre Berlin for Material and Energy", "HELMHOLTZ-CENTRE-BERLIN-FOR-MATERIAL-AND-ENERGY" }, { 0x002244, "Chengdu Linkon Communications Device Co., Ltd", "CHENGDU-LINKON-COMMUNICATION-DEVICE" }, { 0x00224F, "Byzoro Networks Ltd.", "BYZORO-NETWORKS" }, { 0x002248, "Microsoft Corporation", "MICROSOFT" }, { 0x00223E, "IRTrans GmbH", "IRTRANS" }, { 0x002239, "Indiana Life Sciences Incorporated", "INDIANA-LIFE-SCIENCES-INCORPORATED" }, { 0x002232, "Design Design Technology Ltd", "DESIGN-DESIGN" }, { 0x00222C, "Ceton Corp", "CETON" }, { 0x00230E, "Gorba AG", "GORBA" }, { 0x002307, "FUTURE INNOVATION TECH CO.,LTD", "FUTURE-INNOVATION-TECH" }, { 0x002302, "Cobalt Digital, Inc.", "COBALT-DIGITAL" }, { 0x0022EB, "Data Respons A/S", "DATA-RESPONS-A/S" }, { 0x0022EC, "IDEALBT TECHNOLOGY CORPORATION", "IDEALBT" }, { 0x0022F1, "Private", "PRIVATE" }, { 0x00239E, "Jiangsu Lemote Technology Corporation Limited", "JIANGSU-LEMOTE" }, { 0x002398, "Vutlan sro", "VUTLAN-SRO" }, { 0x002384, "GGH Engineering s.r.l.", "GGH-ENGINEERING-S-R-L" }, { 0x002342, "Coffee Equipment Company", "COFFEE-EQUIPMENT-COMPANY" }, { 0x002336, "METEL s.r.o.", "METEL-S-R-O" }, { 0x00233D, "Novero holding B.V.", "NOVERO-HOLDING" }, { 0x002330, "DIZIPIA, INC.", "DIZIPIA" }, { 0x00232C, "Senticare", "SENTICARE" }, { 0x002320, "Nicira Networks", "NICIRA-NETWORKS" }, { 0x00231D, "Deltacom Electronics Ltd", "DELTACOM-ELECTRONICS" }, { 0x00231E, "Cezzer Multimedia Technologies", "CEZZER-MULTIMEDIA-TECHNOLOGIES" }, { 0x0022B8, "Norcott", "NORCOTT" }, { 0x0022B7, "GSS Grundig SAT-Systems GmbH", "GSS-GRUNDIG-SAT" }, { 0x0022B2, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 0x0022AB, "Shenzhen Turbosight Technology Ltd", "SHENZHEN-TURBOSIGHT" }, { 0x0022A6, "Sony Computer Entertainment America", "SONY-ENTERTAINMENT-AMERICA" }, { 0x00229F, "Sensys Traffic AB", "SENSYS-TRAFFIC-AB" }, { 0x0022E5, "Fisher-Rosemount Systems Inc.", "FISHER-ROSEMOUNT" }, { 0x0022DE, "OPPO Digital, Inc.", "OPPO-DIGITAL" }, { 0x0022D9, "Fortex Industrial Ltd.", "FORTEX-INDUSTRIAL" }, { 0x0022D2, "All Earth Comércio de Eletrônicos LTDA.", "ALL-EARTH-COMéRCIO-DE-ELETRôNICOS-LTDA" }, { 0x0022CC, "SciLog, Inc.", "SCILOG" }, { 0x0022C8, "Applied Instruments B.V.", "APPLIED-INSTRUMENTS" }, { 0x0022BE, "Cisco Systems, Inc", "CISCO" }, { 0x00228C, "Photon Europe GmbH", "PHOTON-EUROPE" }, { 0x002286, "ASTRON", "ASTRON" }, { 0x002285, "NOMUS COMM SYSTEMS", "NOMUS-COMM" }, { 0x002280, "A2B Electronics AB", "A2B-ELECTRONICS-AB" }, { 0x002276, "Triple EYE B.V.", "TRIPLE-EYE" }, { 0x00227B, "Apogee Labs, Inc.", "APOGEE-LABS" }, { 0x002262, "BEP Marine", "BEP-MARINE" }, { 0x00226C, "LinkSprite Technologies, Inc.", "LINKSPRITE-TECHNOLOGIES" }, { 0x00225E, "Uwin Technologies Co.,LTD", "UWIN-TECHNOLOGIES" }, { 0x002258, "Taiyo Yuden Co., Ltd.", "TAIYO-YUDEN" }, { 0x0023C3, "LogMeIn, Inc.", "LOGMEIN" }, { 0x0023BD, "Digital Ally, Inc.", "DIGITAL-ALLY" }, { 0x0023B7, "Q-Light Co., Ltd.", "Q-LIGHT" }, { 0x0023B1, "Longcheer Technology (Singapore) Pte Ltd", "LONGCHEER-SINGAPORE-PTE" }, { 0x0023B0, "COMXION Technology Inc.", "COMXION" }, { 0x0023AB, "Cisco Systems, Inc", "CISCO" }, { 0x0023A4, "New Concepts Development Corp.", "NEW-CONCEPTS-DEVELOPMENT" }, { 0x001FC0, "Control Express Finland Oy", "CONTROL-EXPRESS-FINLAND-OY" }, { 0x001FBB, "Xenatech Co.,LTD", "XENATECH" }, { 0x001FB4, "SmartShare Systems", "SMARTSHARE" }, { 0x001FAD, "Brown Innovations, Inc", "BROWN-INNOVATIONS" }, { 0x001FAF, "NextIO, Inc.", "NEXTIO" }, { 0x001FAE, "Blick South Africa (Pty) Ltd", "BLICK-SOUTH-AFRICA-PTY" }, { 0x001FA8, "Smart Energy Instruments Inc.", "SMART-ENERGY-INSTRUMENTS" }, { 0x001FA3, "T&W Electronics(Shenzhen)Co.,Ltd.", "T-W-ELECTRONICS-SHENZHEN" }, { 0x002142, "Advanced Control Systems doo", "ADVANCED-CONTROL-DOO" }, { 0x002140, "EN Technologies Inc.", "EN-TECHNOLOGIES" }, { 0x002138, "Cepheid", "CEPHEID" }, { 0x00212E, "dresden-elektronik", "DRESDEN-ELEKTRONIK" }, { 0x002128, "Oracle Corporation", "ORACLE" }, { 0x002122, "Chip-pro Ltd.", "CHIP-PRO" }, { 0x00211B, "Cisco Systems, Inc", "CISCO" }, { 0x002115, "PHYWE Systeme GmbH & Co. KG", "PHYWE-SYSTEME" }, { 0x002116, "Transcon Electronic Systems, spol. s r. o.", "TRANSCON-SPOL-S-R-O" }, { 0x00210F, "Cernium Corp", "CERNIUM" }, { 0x00210B, "GEMINI TRAZE RFID PVT. LTD.", "GEMINI-TRAZE-RFID-PVT" }, { 0x00210C, "Cymtec Systems, Inc.", "CYMTEC" }, { 0x001FFC, "Riccius+Sohn GmbH", "RICCIUS+SOHN" }, { 0x001FF7, "Nakajima All Precision Co., Ltd.", "NAKAJIMA-ALL-PRECISION" }, { 0x00216E, "Function ATI (Huizhou) Telecommunications Co., Ltd.", "FUNCTION-ATI-HUIZHOU-TELECOMMUNICATIONS" }, { 0x002168, "iVeia, LLC", "IVEIA-LLC" }, { 0x002161, "Yournet Inc.", "YOURNET" }, { 0x002155, "Cisco Systems, Inc", "CISCO" }, { 0x00214E, "GS Yuasa Power Supply Ltd.", "GS-YUASA-POWER-SUPPLY" }, { 0x002149, "China Daheng Group ,Inc.", "CHINA-DAHENG-GROUP" }, { 0x001FF0, "Audio Partnership", "AUDIO-PARTNERSHIP" }, { 0x001FE9, "Printrex, Inc.", "PRINTREX" }, { 0x001FEB, "Trio Datacom Pty Ltd", "TRIO-DATACOM-PTY" }, { 0x001FEA, "Applied Media Technologies Corporation", "APPLIED-MEDIA-TECHNOLOGIES" }, { 0x001FDD, "GDI LLC", "GDI-LLC" }, { 0x001FD8, "A-TRUST COMPUTER CORPORATION", "A-TRUST" }, { 0x001FD3, "RIVA Networks Inc.", "RIVA-NETWORKS" }, { 0x001FCE, "QTECH LLC", "QTECH-LLC" }, { 0x00219D, "Adesys BV", "ADESYS" }, { 0x0021A1, "Cisco Systems, Inc", "CISCO" }, { 0x002198, "Thai Radio Co, LTD", "THAI-RADIO" }, { 0x002193, "Videofon MV", "VIDEOFON-MV" }, { 0x00218D, "AP Router Ind. Eletronica LTDA", "AP-ROUTER-IND-ELETRONICA-LTDA" }, { 0x00218E, "MEKICS CO., LTD.", "MEKICS" }, { 0x002187, "Imacs GmbH", "IMACS" }, { 0x002181, "Si2 Microsystems Limited", "SI2-MICROSYSTEMS" }, { 0x00217B, "Bastec AB", "BASTEC-AB" }, { 0x002174, "AvaLAN Wireless", "AVALAN-WIRELESS" }, { 0x0021F8, "Enseo, Inc.", "ENSEO" }, { 0x0021F3, "Si14 SpA", "SI14-SPA" }, { 0x0021EC, "Solutronic GmbH", "SOLUTRONIC" }, { 0x0021E6, "Starlight Video Limited", "STARLIGHT-VIDEO" }, { 0x0021E0, "CommAgility Ltd", "COMMAGILITY" }, { 0x0021D3, "BOCOM SECURITY(ASIA PACIFIC) LIMITED", "BOCOM-SECURITY-ASIA-PACIFIC" }, { 0x0021D4, "Vollmer Werke GmbH", "VOLLMER-WERKE" }, { 0x0021D9, "SEKONIC CORPORATION", "SEKONIC" }, { 0x0021CD, "LiveTV", "LIVETV" }, { 0x0021C7, "Russound", "RUSSOUND" }, { 0x0021C6, "CSJ Global, Inc.", "CSJ-GLOBAL" }, { 0x0021C1, "ABB Oy / Medium Voltage Products", "ABB-OY-/-MEDIUM-VOLTAGE-PRODUCTS" }, { 0x0021B4, "APRO MEDIA CO., LTD", "APRO-MEDIA" }, { 0x0021AE, "ALCATEL-LUCENT FRANCE - WTD", "ALCATEL-LUCENT-FRANCE---WTD" }, { 0x0021A2, "EKE-Electronics Ltd.", "EKE-ELECTRONICS" }, { 0x0021A7, "Hantle System Co., Ltd.", "HANTLE-SYSTEM" }, { 0x00221F, "eSang Technologies Co., Ltd.", "ESANG-TECHNOLOGIES" }, { 0x002226, "Avaak, Inc.", "AVAAK" }, { 0x00221A, "Audio Precision", "AUDIO-PRECISION" }, { 0x002213, "PCI CORPORATION", "PCI" }, { 0x00220D, "Cisco Systems, Inc", "CISCO" }, { 0x00220C, "Cisco Systems, Inc", "CISCO" }, { 0x002202, "Excito Elektronik i Skåne AB", "EXCITO-ELEKTRONIK-I-SKåNE-AB" }, { 0x0021F9, "WIRECOM Technologies", "WIRECOM-TECHNOLOGIES" }, { 0x001F40, "Speakercraft Inc.", "SPEAKERCRAFT" }, { 0x001F38, "POSITRON", "POSITRON" }, { 0x001F3D, "Qbit GmbH", "QBIT" }, { 0x001F37, "Genesis I&C", "GENESIS-I-C" }, { 0x001F2A, "ACCM", "ACCM" }, { 0x001F31, "Radiocomp", "RADIOCOMP" }, { 0x001F25, "MBS GmbH", "MBS" }, { 0x001F1E, "Astec Technology Co., Ltd", "ASTEC" }, { 0x001F17, "IDX Company, Ltd.", "IDX-COMPANY" }, { 0x001F18, "Hakusan.Mfg.Co,.Ltd", "HAKUSAN-MFG" }, { 0x001E61, "ITEC GmbH", "ITEC" }, { 0x001E5C, "RB GeneralEkonomik", "RB-GENERALEKONOMIK" }, { 0x001E5B, "Unitron Company, Inc.", "UNITRON-COMPANY" }, { 0x001E55, "COWON SYSTEMS,Inc.", "COWON" }, { 0x001E4E, "DAKO EDV-Ingenieur- und Systemhaus GmbH", "DAKO-EDV-INGENIEUR--UND-SYSTEMHAUS" }, { 0x001E49, "Cisco Systems, Inc", "CISCO" }, { 0x001E44, "SANTEC", "SANTEC" }, { 0x001E3F, "TrellisWare Technologies, Inc.", "TRELLISWARE-TECHNOLOGIES" }, { 0x001E38, "Bluecard Software Technology Co., Ltd.", "BLUECARD-SOFTWARE" }, { 0x001E31, "INFOMARK CO.,LTD.", "INFOMARK" }, { 0x001E32, "Zensys", "ZENSYS" }, { 0x001E2C, "CyVerse Corporation", "CYVERSE" }, { 0x001E20, "Intertain Inc.", "INTERTAIN" }, { 0x001E19, "GTRI", "GTRI" }, { 0x001E0F, "Briot International", "BRIOT" }, { 0x001EE4, "ACS Solutions France", "ACS-SOLUTIONS-FRANCE" }, { 0x001EEB, "Talk-A-Phone Co.", "TALK-A-PHONE" }, { 0x001EDF, "Master Industrialization Center Kista", "MASTER-INDUSTRIALIZATION-CENTER-KISTA" }, { 0x001EDA, "Wesemann Elektrotechniek B.V.", "WESEMANN-ELEKTROTECHNIEK" }, { 0x001ED5, "Tekon-Automatics", "TEKON-AUTOMATICS" }, { 0x001ECE, "BISA Technologies (Hong Kong) Limited", "BISA-TECHNOLOGIES-HONG-KONG" }, { 0x001EC8, "Rapid Mobile (Pty) Ltd", "RAPID-MOBILE-PTY" }, { 0x001EBB, "BLUELIGHT TECHNOLOGY INC.", "BLUELIGHT" }, { 0x001EB6, "TAG Heuer SA", "TAG-HEUER" }, { 0x001EB5, "Ever Sparkle Technologies Ltd", "EVER-SPARKLE-TECHNOLOGIES" }, { 0x001EAF, "Ophir Optronics Ltd", "OPHIR-OPTRONICS" }, { 0x001EAA, "E-Senza Technologies GmbH", "E-SENZA-TECHNOLOGIES" }, { 0x001E9D, "Recall Technologies, Inc.", "RECALL-TECHNOLOGIES" }, { 0x001E98, "GreenLine Communications", "GREENLINE-COMMUNICATION" }, { 0x001E97, "Medium Link System Technology CO., LTD,", "MEDIUM-LINK-SYSTEM" }, { 0x001E91, "KIMIN Electronic Co., Ltd.", "KIMIN" }, { 0x001E8A, "eCopy, Inc", "ECOPY" }, { 0x001E85, "Lagotek Corporation", "LAGOTEK" }, { 0x001E78, "Owitek Technology Ltd.,", "OWITEK" }, { 0x001E6D, "IT R&D Center", "IT-R-D-CENTER" }, { 0x001E6E, "Shenzhen First Mile Communications Ltd", "SHENZHEN-FIRST-MILE-COMMUNICATION" }, { 0x001F71, "xG Technology, Inc.", "XG" }, { 0x001F72, "QingDao Hiphone Technology Co,.Ltd", "QINGDAO-HIPHONE" }, { 0x001F76, "AirLogic Systems Inc.", "AIRLOGIC" }, { 0x001F6C, "Cisco Systems, Inc", "CISCO" }, { 0x001F60, "COMPASS SYSTEMS CORP.", "COMPASS" }, { 0x001F65, "KOREA ELECTRIC TERMINAL CO., LTD.", "KOREA-ELECTRIC-TERMINAL" }, { 0x001F5F, "Blatand GmbH", "BLATAND" }, { 0x001F59, "Kronback Tracers", "KRONBACK-TRACERS" }, { 0x001F4D, "Segnetics LLC", "SEGNETICS-LLC" }, { 0x001F52, "UVT Unternehmensberatung fur Verkehr und Technik GmbH", "UVT-UNTERNEHMENSBERATUNG-FUR-VERKEHR-UND-TECHNIK" }, { 0x001F03, "NUM AG", "NUM" }, { 0x001EFE, "LEVEL s.r.o.", "LEVEL-S-R-O" }, { 0x001F04, "Granch Ltd.", "GRANCH" }, { 0x001EF2, "Micro Motion Inc", "MICRO-MOTION" }, { 0x001EF7, "Cisco Systems, Inc", "CISCO" }, { 0x001EF1, "Servimat", "SERVIMAT" }, { 0x001F9E, "Cisco Systems, Inc", "CISCO" }, { 0x001F97, "BERTANA srl", "BERTANA-SRL" }, { 0x001F8B, "Cache IQ", "CACHE-IQ" }, { 0x001F84, "Gigle Semiconductor", "GIGLE-SEMICONDUCTOR" }, { 0x001F7F, "Phabrix Limited", "PHABRIX" }, { 0x001CFF, "Napera Networks Inc", "NAPERA-NETWORKS" }, { 0x001CF8, "Parade Technologies, Ltd.", "PARADE-TECHNOLOGIES" }, { 0x001CF1, "SUPoX Technology Co. , LTD.", "SUPOX" }, { 0x001CF2, "Tenlon Technology Co.,Ltd.", "TENLON" }, { 0x001CEC, "Mobilesoft (Aust.) Pty Ltd", "MOBILESOFT-AUST-PTY" }, { 0x001CE7, "Rocon PLC Research Centre", "ROCON-PLC-RESEARCH-CENTRE" }, { 0x001CE2, "Attero Tech, LLC.", "ATTERO-TECH-LLC" }, { 0x001CDB, "CARPOINT CO.,LTD", "CARPOINT" }, { 0x001CD5, "ZeeVee, Inc.", "ZEEVEE" }, { 0x001CCF, "LIMETEK", "LIMETEK" }, { 0x001E08, "Centec Networks Inc", "CENTEC-NETWORKS" }, { 0x001E03, "LiComm Co., Ltd.", "LICOMM" }, { 0x001DFC, "KSIC", "KSIC" }, { 0x001DF5, "Sunshine Co,LTD", "SUNSHINE" }, { 0x001DF0, "Vidient Systems, Inc.", "VIDIENT" }, { 0x001DDC, "HangZhou DeChangLong Tech&Info Co.,Ltd", "HANGZHOU-DECHANGLONG-TECH-INFO" }, { 0x001DE4, "Visioneered Image Systems", "VISIONEERED-IMAGE" }, { 0x001DE2, "Radionor Communications", "RADIONOR-COMMUNICATION" }, { 0x001CC8, "INDUSTRONIC Industrie-Electronic GmbH & Co. KG", "INDUSTRONIC-INDUSTRIE" }, { 0x001CBC, "CastGrabber, LLC", "CASTGRABBER-LLC" }, { 0x001CB2, "BPT SPA", "BPT-SPA" }, { 0x001CA6, "Win4NET", "WIN4NET" }, { 0x001CAB, "Meyer Sound Laboratories, Inc.", "MEYER-SOUND-LABORATORIES" }, { 0x001CAC, "Qniq Technology Corp.", "QNIQ" }, { 0x001CA1, "AKAMAI TECHNOLOGIES, INC.", "AKAMAI-TECHNOLOGIES" }, { 0x001C95, "Opticomm Corporation", "OPTICOMM" }, { 0x001C90, "Empacket Corporation", "EMPACKET" }, { 0x001C8F, "Advanced Electronic Design, Inc.", "ADVANCED-DESIGN" }, { 0x001C89, "Force Communications, Inc.", "FORCE-COMMUNICATION" }, { 0x001C7F, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x001C75, "Segnet Ltd.", "SEGNET" }, { 0x001C6E, "Newbury Networks, Inc.", "NEWBURY-NETWORKS" }, { 0x001C69, "Packet Vision Ltd", "PACKET-VISION" }, { 0x001DA5, "WB Electronics", "WB-ELECTRONICS" }, { 0x001DA6, "Media Numerics Limited", "MEDIA-NUMERICS" }, { 0x001DA0, "Heng Yu Electronic Manufacturing Company Limited", "HENG-YU-MANUFACTURING-COMPANY" }, { 0x001D99, "Cyan Optic, Inc.", "CYAN-OPTIC" }, { 0x001D94, "Climax Technology Co., Ltd", "CLIMAX" }, { 0x001D93, "Modacom", "MODACOM" }, { 0x001D8D, "Raytek GmbH", "RAYTEK" }, { 0x001D86, "Shinwa Industries(China) Ltd.", "SHINWA-INDUSTRIES-CHINA" }, { 0x001DC9, "GainSpan Corp.", "GAINSPAN" }, { 0x001DC2, "XORTEC OY", "XORTEC-OY" }, { 0x001DBD, "Versamed Inc.", "VERSAMED" }, { 0x001DB6, "BestComm Networks, Inc.", "BESTCOMM-NETWORKS" }, { 0x001DB0, "FuJian HengTong Information Technology Co.,Ltd", "FUJIAN-HENGTONG-INFORMATION" }, { 0x001DAC, "Gigamon Systems LLC", "GIGAMON-LLC" }, { 0x001D81, "GUANGZHOU GATEWAY ELECTRONICS CO., LTD", "GUANGZHOU-GATEWAY-ELECTRONICS" }, { 0x001D69, "Knorr-Bremse IT-Services GmbH", "KNORR-BREMSE-IT-SERVICES" }, { 0x001D70, "Cisco Systems, Inc", "CISCO" }, { 0x001D77, "NSGate", "NSGATE" }, { 0x001D7C, "ABE Elettronica S.p.A.", "ABE-ELETTRONICA-S-P-A" }, { 0x001D64, "Adam Communications Systems Int Ltd", "ADAM-COMMUNICATION-INT" }, { 0x001D5D, "Control Dynamics Pty. Ltd.", "CONTROL-DYNAMICS-PTY" }, { 0x001D21, "Alcad SL", "ALCAD-SL" }, { 0x001D1C, "Gennet s.a.", "GENNET" }, { 0x001D17, "Digital Sky Corporation", "DIGITAL-SKY" }, { 0x001D12, "ROHM CO., LTD.", "ROHM" }, { 0x001D11, "Analogue & Micro Ltd", "ANALOGUE-MICRO" }, { 0x001D0B, "Power Standards Lab", "POWER-STANDARDS-LAB" }, { 0x001D04, "Zipit Wireless, Inc.", "ZIPIT-WIRELESS" }, { 0x001D58, "CQ Inc", "CQ" }, { 0x001D57, "CAETEC Messtechnik", "CAETEC-MESSTECHNIK" }, { 0x001D51, "Babcock & Wilcox Power Generation Group, Inc", "BABCOCK-WILCOX-POWER-GENERATION-GROUP" }, { 0x001D47, "Covote GmbH & Co KG", "COVOTE" }, { 0x001D40, "Intel – GE Care Innovations LLC", "INTEL-–-GE-CARE-INNOVATIONS-LLC" }, { 0x001D34, "SYRIS Technology Corp", "SYRIS" }, { 0x001D2D, "Pylone, Inc.", "PYLONE" }, { 0x001B2A, "Cisco Systems, Inc", "CISCO" }, { 0x001B1D, "Phoenix International Co., Ltd", "PHOENIX" }, { 0x001B22, "Palit Microsystems ( H.K.) Ltd.", "PALIT-MICROSYSTEMS-H-K" }, { 0x001B1B, "Siemens AG,", "SIEMENS" }, { 0x001B16, "Celtro Ltd.", "CELTRO" }, { 0x001B0A, "Intelligent Distributed Controls Ltd", "INTELLIGENT-DISTRIBUTED-CONTROLS" }, { 0x001B0F, "Petratec", "PETRATEC" }, { 0x001AFE, "SOFACREAL", "SOFACREAL" }, { 0x001B03, "Action Technology (SZ) Co., Ltd", "ACTION-SZ" }, { 0x001B68, "Modnnet Co., Ltd", "MODNNET" }, { 0x001B62, "JHT Optoelectronics Co.,Ltd.", "JHT-OPTOELECTRONICS" }, { 0x001B61, "Digital Acoustics, LLC", "DIGITAL-ACOUSTICS-LLC" }, { 0x001B5C, "Azuretec Co., Ltd.", "AZURETEC" }, { 0x001B55, "Hurco Automation Ltd.", "HURCO-AUTOMATION" }, { 0x001B50, "Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF)", "NIZHNY-NOVGOROD-FACTORY-NAMED-AFTER-M-FRUNZE-FSUE-NZIF" }, { 0x001B44, "SanDisk Corporation", "SANDISK" }, { 0x001B49, "Roberts Radio limited", "ROBERTS-RADIO" }, { 0x001B42, "Wise & Blue", "WISE-BLUE" }, { 0x001B3D, "EuroTel Spa", "EUROTEL-SPA" }, { 0x001B36, "Tsubata Engineering Co.,Ltd. (Head Office)", "TSUBATA-ENGINEERING-HEAD-OFFICE" }, { 0x001B31, "Neural Image. Co. Ltd.", "NEURAL-IMAGE" }, { 0x001C56, "Pado Systems, Inc.", "PADO" }, { 0x001C5B, "Chubb Electronic Security Systems Ltd", "CHUBB-SECURITY" }, { 0x001C5D, "Leica Microsystems", "LEICA-MICROSYSTEMS" }, { 0x001C5C, "Integrated Medical Systems, Inc.", "INTEGRATED-MEDICAL" }, { 0x001C51, "Celeno Communications", "CELENO-COMMUNICATION" }, { 0x001C52, "VISIONEE SRL", "VISIONEE-SRL" }, { 0x001C45, "Chenbro Micom Co., Ltd.", "CHENBRO-MICOM" }, { 0x001C4C, "Petrotest Instruments", "PETROTEST-INSTRUMENTS" }, { 0x001C39, "S Netsystems Inc.", "S-NETSYSTEMS" }, { 0x001C40, "VDG-Security bv", "VDG-SECURITY" }, { 0x001C32, "Telian Corporation", "TELIAN" }, { 0x001AC7, "UNIPOINT", "UNIPOINT" }, { 0x001AC2, "YEC Co.,Ltd.", "YEC" }, { 0x001AB8, "Anseri Corporation", "ANSERI" }, { 0x001ABD, "Impatica Inc.", "IMPATICA" }, { 0x001AB1, "Asia Pacific Satellite Industries Co., Ltd.", "ASIA-PACIFIC-SATELLITE-INDUSTRIES" }, { 0x001B8C, "JMicron Technology Corp.", "JMICRON" }, { 0x001B91, "EFKON AG", "EFKON" }, { 0x001B87, "Deepsound Tech. Co., Ltd", "DEEPSOUND-TECH" }, { 0x001B82, "Taiwan Semiconductor Co., Ltd.", "TAIWAN-SEMICONDUCTOR" }, { 0x001B7B, "The Tintometer Ltd", "THE-TINTOMETER" }, { 0x001B74, "MiraLink Corporation", "MIRALINK" }, { 0x001B6F, "Teletrak Ltd", "TELETRAK" }, { 0x001AFC, "ModusLink Corporation", "MODUSLINK" }, { 0x001AF2, "Dynavisions Schweiz AG", "DYNAVISIONS-SCHWEIZ" }, { 0x001AF7, "dataschalt e+a GmbH", "DATASCHALT-E+A" }, { 0x001AED, "INCOTEC GmbH", "INCOTEC" }, { 0x001ADF, "Interactivetv Pty Limited", "INTERACTIVETV-PTY" }, { 0x001AE1, "EDGE ACCESS INC", "EDGE-ACCESS" }, { 0x001AE6, "Atlanta Advanced Communications Holdings Limited", "ATLANTA-ADVANCED-COMMUNICATION-HOLDINGS" }, { 0x001AD3, "Vamp Ltd.", "VAMP" }, { 0x001ADA, "Biz-2-Me Inc.", "BIZ-2-ME" }, { 0x001ACE, "YUPITERU CORPORATION", "YUPITERU" }, { 0x001BC8, "MIURA CO.,LTD", "MIURA" }, { 0x001BC1, "HOLUX Technology, Inc.", "HOLUX" }, { 0x001BB7, "Alta Heights Technology Corp.", "ALTA-HEIGHTS" }, { 0x001BAB, "Telchemy, Incorporated", "TELCHEMY-INCORPORATED" }, { 0x001BB0, "BHARAT ELECTRONICS", "BHARAT-ELECTRONICS" }, { 0x001BA4, "S.A.E Afikim", "E-AFIKIM" }, { 0x001B9F, "Calyptech Pty Ltd", "CALYPTECH-PTY" }, { 0x001B9D, "Novus Security Sp. z o.o.", "NOVUS-SECURITY-SP-Z-O-O" }, { 0x001BF6, "CONWISE Technology Corporation Ltd.", "CONWISE" }, { 0x001BF1, "Nanjing SilverNet Software Co., Ltd.", "NANJING-SILVERNET-SOFTWARE" }, { 0x001BEC, "Netio Technologies Co., Ltd", "NETIO-TECHNOLOGIES" }, { 0x001BE7, "Postek Electronics Co., Ltd.", "POSTEK-ELECTRONICS" }, { 0x001BE0, "TELENOT ELECTRONIC GmbH", "TELENOT" }, { 0x001BD9, "Edgewater Computer Systems", "EDGEWATER" }, { 0x001BDB, "Valeo VECS", "VALEO-VECS" }, { 0x001BD4, "Cisco Systems, Inc", "CISCO" }, { 0x001BCD, "DAVISCOMMS (S) PTE LTD", "DAVISCOMMS-S-PTE" }, { 0x001C2D, "FlexRadio Systems", "FLEXRADIO" }, { 0x001C1C, "Center Communication Systems GmbH", "CENTER-COMMUNICATION" }, { 0x001C21, "Nucsafe Inc.", "NUCSAFE" }, { 0x001C20, "CLB Benelux", "CLB-BENELUX" }, { 0x001C15, "iPhotonix LLC", "IPHOTONIX-LLC" }, { 0x001C16, "ThyssenKrupp Elevator", "THYSSENKRUPP-ELEVATOR" }, { 0x001C10, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001C09, "SAE Electronic Co.,Ltd.", "SAE" }, { 0x001C04, "Airgain, Inc.", "AIRGAIN" }, { 0x001BFD, "Dignsys Inc.", "DIGNSYS" }, { 0x00192B, "Aclara RF Systems Inc.", "ACLARA-RF" }, { 0x001930, "Cisco Systems, Inc", "CISCO" }, { 0x00191F, "Microlink communications Inc.", "MICROLINK-COMMUNICATION" }, { 0x001924, "LBNL Engineering", "LBNL-ENGINEERING" }, { 0x001911, "Just In Mobile Information Technologies (Shanghai) Co., Ltd.", "JUST-IN-MOBILE-INFORMATION-TECHNOLOGIES-SHANGHAI" }, { 0x001918, "Interactive Wear AG", "INTERACTIVE-WEAR" }, { 0x00190C, "Encore Electronics, Inc.", "ENCORE-ELECTRONICS" }, { 0x001900, "Intelliverese - DBA Voicecom", "INTELLIVERESE---DBA-VOICECOM" }, { 0x001905, "SCHRACK Seconet AG", "SCHRACK-SECONET" }, { 0x0018F4, "EO TECHNICS Co., Ltd.", "EO-TECHNICS" }, { 0x0018F6, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x0018FB, "Compro Technology", "COMPRO" }, { 0x0019EE, "CARLO GAVAZZI CONTROLS SPA-Controls Division", "CARLO-GAVAZZI-CONTROLS-SPA-CONTROLS-DIVISION" }, { 0x0019F5, "Imagination Technologies Ltd", "IMAGINATION-TECHNOLOGIES" }, { 0x0019E9, "S-Information Technolgy, Co., Ltd.", "S-INFORMATION-TECHNOLGY" }, { 0x0019DB, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0019DD, "FEI-Zyfer, Inc.", "FEI-ZYFER" }, { 0x0019CA, "Broadata Communications, Inc", "BROADATA-COMMUNICATION" }, { 0x0019CF, "SALICRU, S.A.", "SALICRU" }, { 0x0019D6, "LS Cable and System Ltd.", "LS-CABLE-AND-SYSTEM" }, { 0x0019B4, "Intellio Ltd", "INTELLIO" }, { 0x001A6E, "Impro Technologies", "IMPRO-TECHNOLOGIES" }, { 0x001A67, "Infinite QL Sdn Bhd", "INFINITE-QL-SDN-BHD" }, { 0x001A69, "Wuhan Yangtze Optical Technology CO.,Ltd.", "WUHAN-YANGTZE-OPTICAL" }, { 0x001A62, "Data Robotics, Incorporated", "DATA-ROBOTICS-INCORPORATED" }, { 0x001A58, "CCV Deutschland GmbH - Celectronic eHealth Div.", "CCV-DEUTSCHLAND---CELECTRONIC-EHEALTH-DIV" }, { 0x001A5D, "Mobinnova Corp.", "MOBINNOVA" }, { 0x001A4C, "Crossbow Technology, Inc", "CROSSBOW" }, { 0x001A51, "Alfred Mann Foundation", "ALFRED-MANN-FOUNDATION" }, { 0x001AAA, "Analogic Corp.", "ANALOGIC" }, { 0x001AA1, "Cisco Systems, Inc", "CISCO" }, { 0x001A9C, "RightHand Technologies, Inc.", "RIGHTHAND-TECHNOLOGIES" }, { 0x001A8B, "CHUNIL ELECTRIC IND., CO.", "CHUNIL-ELECTRIC-IND" }, { 0x001A95, "Hisense Mobile Communications Technoligy Co.,Ltd.", "HISENSE-MOBILE-COMMUNICATION-TECHNOLIGY" }, { 0x001A84, "V One Multimedia Pte Ltd", "V-ONE-MULTIMEDIA-PTE" }, { 0x0019A1, "LG INFORMATION & COMM.", "LG-INFORMATION-COMM" }, { 0x0019AD, "BOBST SA", "BOBST" }, { 0x0019B2, "XYnetsoft Co.,Ltd", "XYNETSOFT" }, { 0x00199A, "EDO-EVI", "EDO-EVI" }, { 0x00199F, "DKT A/S", "DKT-A/S" }, { 0x001995, "Jurong Hi-Tech (Suzhou)Co.ltd", "JURONG-HI-TECH-SUZHOU" }, { 0x001990, "ELM DATA Co., Ltd.", "ELM-DATA" }, { 0x001989, "Sonitrol Corporation", "SONITROL" }, { 0x001A3E, "Faster Technology LLC", "FASTER-LLC" }, { 0x001A40, "A-FOUR TECH CO., LTD.", "A-FOUR-TECH" }, { 0x001A2D, "The Navvo Group", "THE-NAVVO-GROUP" }, { 0x001A32, "ACTIVA MULTIMEDIA", "ACTIVA-MULTIMEDIA" }, { 0x001A28, "ASWT Co., LTD. Taiwan Branch H.K.", "ASWT-TAIWAN-BRANCH-H-K" }, { 0x001A1C, "GT&T Engineering Pte Ltd", "GT-T-ENGINEERING-PTE" }, { 0x001A23, "Ice Qube, Inc", "ICE-QUBE" }, { 0x001A15, "gemalto e-Payment", "GEMALTO-E-PAYMENT" }, { 0x001A10, "LUCENT TRANS ELECTRONICS CO.,LTD", "LUCENT-TRANS-ELECTRONICS" }, { 0x001A09, "Wayfarer Transit Systems Ltd", "WAYFARER-TRANSIT" }, { 0x001A02, "SECURE CARE PRODUCTS, INC", "SECURE-CARE-PRODUCTS" }, { 0x001A04, "Interay Solutions BV", "INTERAY-SOLUTIONS" }, { 0x001984, "ESTIC Corporation", "ESTIC" }, { 0x001976, "Xipher Technologies, LLC", "XIPHER-TECHNOLOGIES-LLC" }, { 0x001978, "Datum Systems, Inc.", "DATUM" }, { 0x00196A, "MikroM GmbH", "MIKROM" }, { 0x001971, "Guangzhou Unicomp Technology Co.,Ltd", "GUANGZHOU-UNICOMP" }, { 0x001965, "YuHua TelTech (ShangHai) Co., Ltd.", "YUHUA-TELTECH-SHANGHAI" }, { 0x001960, "DoCoMo Systems, Inc.", "DOCOMO" }, { 0x001954, "Leaf Corporation.", "LEAF" }, { 0x001959, "Staccato Communications Inc.", "STACCATO-COMMUNICATION" }, { 0x00194D, "Avago Technologies Sdn Bhd", "AVAGO-TECHNOLOGIES-SDN-BHD" }, { 0x001948, "AireSpider Networks", "AIRESPIDER-NETWORKS" }, { 0x001941, "Pitney Bowes, Inc", "PITNEY-BOWES" }, { 0x001935, "DUERR DENTAL AG", "DUERR-DENTAL" }, { 0x00193A, "OESOLUTIONS", "OESOLUTIONS" }, { 0x00193C, "HighPoint Technologies Incorporated", "HIGHPOINT-TECHNOLOGIES-INCORPORATED" }, { 0x001773, "Laketune Technologies Co. Ltd", "LAKETUNE-TECHNOLOGIES" }, { 0x001778, "Central Music Co.", "CENTRAL-MUSIC" }, { 0x00177A, "ASSA ABLOY AB", "ASSA-ABLOY-AB" }, { 0x00176F, "PAX Computer Technology(Shenzhen) Ltd.", "PAX-SHENZHEN" }, { 0x00176A, "Avago Technologies", "AVAGO-TECHNOLOGIES" }, { 0x001763, "Essentia S.p.A.", "ESSENTIA-S-P-A" }, { 0x00175E, "Zed-3", "ZED-3" }, { 0x001750, "GSI Group, MicroE Systems", "GSI-GROUP-MICROE" }, { 0x001752, "DAGS, Inc", "DAGS" }, { 0x001757, "RIX TECHNOLOGY LIMITED", "RIX" }, { 0x00183D, "Vertex Link Corporation", "VERTEX-LINK" }, { 0x001844, "Heads Up Technologies, Inc.", "HEADS-UP-TECHNOLOGIES" }, { 0x001838, "PanAccess Communications,Inc.", "PANACCESS-COMMUNICATION" }, { 0x001827, "NEC UNIFIED SOLUTIONS NEDERLAND B.V.", "NEC-UNIFIED-SOLUTIONS-NEDERLAND" }, { 0x00182C, "Ascend Networks, Inc.", "ASCEND-NETWORKS" }, { 0x00181B, "TaiJin Metal Co., Ltd.", "TAIJIN-METAL" }, { 0x001814, "Mitutoyo Corporation", "MITUTOYO" }, { 0x001819, "Cisco Systems, Inc", "CISCO" }, { 0x001820, "w5networks", "W5NETWORKS" }, { 0x001808, "SightLogix, Inc.", "SIGHTLOGIX" }, { 0x00180D, "Terabytes Server Storage Tech Corp", "TERABYTES-SERVER-STORAGE-TECH" }, { 0x001803, "ArcSoft Shanghai Co. LTD", "ARCSOFT-SHANGHAI" }, { 0x0017F0, "SZCOM Broadband Network Technology Co.,Ltd", "SZCOM-BROADBAND-NETWORK" }, { 0x0017F7, "CEM Solutions Pvt Ltd", "CEM-SOLUTIONS-PVT" }, { 0x0017FE, "TALOS SYSTEM INC.", "TALOS-SYSTEM" }, { 0x0017D8, "Magnum Semiconductor, Inc.", "MAGNUM-SEMICONDUCTOR" }, { 0x0017DD, "Clipsal Australia", "CLIPSAL-AUSTRALIA" }, { 0x0017DF, "Cisco Systems, Inc", "CISCO" }, { 0x0018C6, "OPW Fuel Management Systems", "OPW-FUEL-MANAGEMENT" }, { 0x0018CB, "Tecobest Technology Limited", "TECOBEST" }, { 0x0018BF, "Essence Technology Solution, Inc.", "ESSENCE-SOLUTION" }, { 0x0018BA, "Cisco Systems, Inc", "CISCO" }, { 0x0018B8, "New Voice International AG", "NEW-VOICE" }, { 0x0018B3, "TEC WizHome Co., Ltd.", "TEC-WIZHOME" }, { 0x0018AC, "Shanghai Jiao Da HISYS Technology Co. Ltd.", "SHANGHAI-JIAO-DA-HISYS" }, { 0x0018A5, "ADigit Technologies Corp.", "ADIGIT-TECHNOLOGIES" }, { 0x0018A7, "Yoggie Security Systems LTD.", "YOGGIE-SECURITY" }, { 0x001896, "Great Well Electronic LTD", "GREAT-WELL" }, { 0x00189B, "Thomson Inc.", "THOMSON" }, { 0x00179E, "Sirit Inc", "SIRIT" }, { 0x0017A3, "MIX s.r.l.", "MIX-S-R-L" }, { 0x0017A8, "EDM Corporation", "EDM" }, { 0x001792, "Falcom Wireless Comunications Gmbh", "FALCOM-WIRELESS-COMUNICATIONS" }, { 0x001797, "Telsy Elettronica S.p.A.", "TELSY-ELETTRONICA-S-P-A" }, { 0x001799, "SmarTire Systems Inc.", "SMARTIRE" }, { 0x00178B, "Teledyne Technologies Incorporated", "TELEDYNE-TECHNOLOGIES-INCORPORATED" }, { 0x00177F, "Worldsmart Retech", "WORLDSMART-RETECH" }, { 0x001786, "wisembed", "WISEMBED" }, { 0x001877, "Amplex A/S", "AMPLEX-A/S" }, { 0x00186B, "Sambu Communics CO., LTD.", "SAMBU-COMMUNICS" }, { 0x001870, "E28 Shanghai Limited", "E28-SHANGHAI" }, { 0x001863, "Veritech Electronics Limited", "VERITECH-ELECTRONICS" }, { 0x001850, "Secfone Kft", "SECFONE-KFT" }, { 0x001855, "Aeromaritime Systembau GmbH", "AEROMARITIME-SYSTEMBAU" }, { 0x001857, "Unilever R&D", "UNILEVER-R-D" }, { 0x001849, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0017C7, "MARA Systems Consulting AB", "MARA-CONSULTING-AB" }, { 0x0017CE, "Screen Service Spa", "SCREEN-SERVICE-SPA" }, { 0x0017D3, "Etymotic Research, Inc.", "ETYMOTIC-RESEARCH" }, { 0x0017BB, "Syrinx Industrial Electronics", "SYRINX-INDUSTRIAL-ELECTRONICS" }, { 0x0017B4, "Remote Security Systems, LLC", "REMOTE-SECURITY-LLC" }, { 0x0017B6, "Aquantia", "AQUANTIA" }, { 0x0017AF, "Enermet", "ENERMET" }, { 0x0018E8, "Hacetron Corporation", "HACETRON" }, { 0x0018EF, "Escape Communications, Inc.", "ESCAPE-COMMUNICATION" }, { 0x0018E3, "Visualgate Systems, Inc.", "VISUALGATE" }, { 0x0018DC, "Prostar Co., Ltd.", "PROSTAR" }, { 0x0018E1, "Verkerk Service Systemen", "VERKERK-SERVICE-SYSTEMEN" }, { 0x0018D0, "AtRoad, A Trimble Company", "ATROAD-A-TRIMBLE-COMPANY" }, { 0x0018D5, "REIGNCOM", "REIGNCOM" }, { 0x0018A0, "Cierma Ascenseurs", "CIERMA-ASCENSEURS" }, { 0x001883, "FORMOSA21 INC.", "FORMOSA21" }, { 0x00188A, "Infinova LLC", "INFINOVA-LLC" }, { 0x00188F, "Montgomery Technology, Inc.", "MONTGOMERY" }, { 0x00187C, "INTERCROSS, LLC", "INTERCROSS-LLC" }, { 0x00187E, "RGB Spectrum", "RGB-SPECTRUM" }, { 0x00164A, "Vibration Technology Limited", "VIBRATION" }, { 0x001644, "LITE-ON Technology Corp.", "LITE-ON" }, { 0x001645, "Power Distribution, Inc.", "POWER-DISTRIBUTION" }, { 0x00163B, "VertexRSI/General Dynamics", "VERTEXRSI/GENERAL-DYNAMICS" }, { 0x001640, "Asmobile Communication Inc.", "ASMOBILE-COMMUNICATION" }, { 0x00163A, "YVES TECHNOLOGY CO., LTD.", "YVES" }, { 0x001634, "Mathtech, Inc.", "MATHTECH" }, { 0x00162D, "STNet Co., Ltd.", "STNET" }, { 0x001621, "Colorado Vnet", "COLORADO-VNET" }, { 0x00161A, "Dametric AB", "DAMETRIC-AB" }, { 0x001615, "Nittan Company, Limited", "NITTAN-COMPANY" }, { 0x0016C4, "SiRF Technology, Inc.", "SIRF" }, { 0x0016C6, "North Atlantic Industries", "NORTH-ATLANTIC-INDUSTRIES" }, { 0x0016D2, "Caspian", "CASPIAN" }, { 0x0016BF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0016B3, "Photonicbridges (China) Co., Ltd.", "PHOTONICBRIDGES-CHINA" }, { 0x0016AC, "Toho Technology Corp.", "TOHO" }, { 0x0016B1, "KBS", "KBS" }, { 0x0016A7, "AWETA G&P", "AWETA-G-P" }, { 0x001724, "Studer Professional Audio GmbH", "STUDER-PROFESSIONAL-AUDIO" }, { 0x001718, "Vansco Electronics Oy", "VANSCO-ELECTRONICS-OY" }, { 0x00171D, "DIGIT", "DIGIT" }, { 0x001711, "GE Healthcare Bio-Sciences AB", "GE-HEALTHCARE-BIO-SCIENCES-AB" }, { 0x00170C, "Twig Com Ltd.", "TWIG-COM" }, { 0x001707, "InGrid, Inc", "INGRID" }, { 0x001702, "Osung Midicom Co., Ltd", "OSUNG-MIDICOM" }, { 0x001744, "Araneo Ltd.", "ARANEO" }, { 0x00173C, "Extreme Engineering Solutions", "EXTREME-ENGINEERING-SOLUTIONS" }, { 0x001737, "Industrie Dial Face S.p.A.", "INDUSTRIE-DIAL-FACE-S-P-A" }, { 0x00172B, "Global Technologies Inc.", "GLOBAL-TECHNOLOGIES" }, { 0x001730, "Automation Electronics", "AUTOMATION-ELECTRONICS" }, { 0x001729, "Ubicod Co.LTD", "UBICOD" }, { 0x00169B, "Alstom Transport", "ALSTOM-TRANSPORT" }, { 0x0016A2, "CentraLite Systems, Inc.", "CENTRALITE" }, { 0x001696, "QDI Technology (H.K.) Limited", "QDI-H-K" }, { 0x001688, "ServerEngines LLC", "SERVERENGINES-LLC" }, { 0x00168A, "id-Confirm Inc", "ID-CONFIRM" }, { 0x001683, "WEBIO International Co.,.Ltd.", "WEBIO" }, { 0x00167C, "iRex Technologies BV", "IREX-TECHNOLOGIES" }, { 0x001610, "Carina Technology", "CARINA" }, { 0x00160B, "TVWorks LLC", "TVWORKS-LLC" }, { 0x001604, "Sigpro", "SIGPRO" }, { 0x0015FE, "SCHILLING ROBOTICS LLC", "SCHILLING-ROBOTICS-LLC" }, { 0x0015FD, "Complete Media Systems", "COMPLETE-MEDIA" }, { 0x0015F8, "Kingtronics Industrial Co. Ltd.", "KINGTRONICS-INDUSTRIAL" }, { 0x0015EC, "Boca Devices LLC", "BOCA-DEVICES-LLC" }, { 0x0015F1, "KYLINK Communications Corp.", "KYLINK-COMMUNICATION" }, { 0x001677, "Bihl + Wiedemann GmbH", "BIHL-+-WIEDEMANN" }, { 0x001670, "SKNET Corporation", "SKNET" }, { 0x001664, "Prod-El SpA", "PROD-EL-SPA" }, { 0x001669, "MRV Communication (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x00165D, "AirDefense, Inc.", "AIRDEFENSE" }, { 0x001651, "Exeo Systems", "EXEO" }, { 0x0015E5, "Cheertek Inc.", "CHEERTEK" }, { 0x0015DB, "Canesta Inc.", "CANESTA" }, { 0x0015D4, "Emitor AB", "EMITOR-AB" }, { 0x0015C8, "FlexiPanel Ltd", "FLEXIPANEL" }, { 0x0015C3, "Ruf Telematik AG", "RUF-TELEMATIK" }, { 0x0015C2, "3M Germany", "3M-GERMANY" }, { 0x0015BE, "Iqua Ltd.", "IQUA" }, { 0x0016EF, "Koko Fitness, Inc.", "KOKO-FITNESS" }, { 0x0016F4, "Eidicom Co., Ltd.", "EIDICOM" }, { 0x0016E8, "Sigma Designs, Inc.", "SIGMA-DESIGNS" }, { 0x0016DC, "ARCHOS", "ARCHOS" }, { 0x0016E1, "SiliconStor, Inc.", "SILICONSTOR" }, { 0x0016D7, "Sunways AG", "SUNWAYS" }, { 0x0014CB, "LifeSync Corporation", "LIFESYNC" }, { 0x0014D0, "BTI Systems Inc.", "BTI" }, { 0x0014C4, "Vitelcom Mobile Technology", "VITELCOM-MOBILE" }, { 0x0014BE, "Wink communication technology CO.LTD", "WINK-COMMUNICATION" }, { 0x0014BD, "incNETWORKS, Inc", "INCNETWORKS" }, { 0x0014B8, "Hill-Rom", "HILL-ROM" }, { 0x0014AE, "Wizlogics Co., Ltd.", "WIZLOGICS" }, { 0x0014B3, "CoreStar International Corp", "CORESTAR" }, { 0x00149B, "Nokota Communications, LLC", "NOKOTA-COMMUNICATION-LLC" }, { 0x001431, "PDL Electronics Ltd", "PDL-ELECTRONICS" }, { 0x001433, "Empower Technologies(Canada) Inc.", "EMPOWER-TECHNOLOGIES-CANADA" }, { 0x001432, "Tarallax Wireless, Inc.", "TARALLAX-WIRELESS" }, { 0x00142C, "Koncept International, Inc.", "KONCEPT" }, { 0x001425, "Galactic Computing Corp.", "GALACTIC-COMPUTING" }, { 0x001420, "G-Links networking company", "G-LINKS-NETWORKING-COMPANY" }, { 0x00141B, "Cisco Systems, Inc", "CISCO" }, { 0x00146D, "RF Technologies", "RF-TECHNOLOGIES" }, { 0x00146F, "Kohler Co", "KOHLER" }, { 0x00146E, "H. Stoll GmbH & Co. KG", "H-STOLL" }, { 0x001468, "CelPlan International, Inc.", "CELPLAN" }, { 0x001461, "CORONA CORPORATION", "CORONA" }, { 0x00145C, "Intronics B.V.", "INTRONICS" }, { 0x001455, "Coder Electronics Corporation", "CODER-ELECTRONICS" }, { 0x001444, "Grundfos Holding", "GRUNDFOS-HOLDING" }, { 0x00144B, "Hifn, Inc.", "HIFN" }, { 0x001589, "D-MAX Technology Co.,Ltd", "D-MAX" }, { 0x001582, "Pulse Eight Limited", "PULSE-EIGHT" }, { 0x00157C, "Dave Networks, Inc.", "DAVE-NETWORKS" }, { 0x001578, "Audio / Video Innovations", "AUDIO-/-VIDEO-INNOVATIONS" }, { 0x001573, "NewSoft Technology Corporation", "NEWSOFT" }, { 0x00156C, "SANE SYSTEM CO., LTD", "SANE-SYSTEM" }, { 0x001571, "Nolan Systems", "NOLAN" }, { 0x001572, "Red-Lemon", "RED-LEMON" }, { 0x001565, "XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD", "XIAMEN-YEALINK-NETWORK" }, { 0x001559, "Securaplane Technologies, Inc.", "SECURAPLANE-TECHNOLOGIES" }, { 0x0014A2, "Core Micro Systems Inc.", "CORE-MICRO" }, { 0x001494, "ESU AG", "ESU" }, { 0x00148F, "Protronic (Far East) Ltd.", "PROTRONIC-FAR-EAST" }, { 0x001488, "Akorri", "AKORRI" }, { 0x001483, "eXS Inc.", "EXS" }, { 0x001480, "Hitachi-LG Data Storage Korea, Inc", "HITACHI-LG-DATA-STORAGE-KOREA" }, { 0x00147B, "Iteris, Inc.", "ITERIS" }, { 0x001474, "K40 Electronics", "K40-ELECTRONICS" }, { 0x0015B8, "Tahoe", "TAHOE" }, { 0x0015B2, "Advanced Industrial Computer, Inc.", "ADVANCED-INDUSTRIAL" }, { 0x0015AE, "kyung il", "KYUNG-IL" }, { 0x0015AD, "Accedian Networks", "ACCEDIAN-NETWORKS" }, { 0x00E0A8, "SAT GmbH & Co.", "SAT" }, { 0x0015A1, "ECA-SINTERS", "ECA-SINTERS" }, { 0x00159C, "B-KYUNG SYSTEM Co.,Ltd.", "B-KYUNG-SYSTEM" }, { 0x001595, "Quester Tangent Corporation", "QUESTER-TANGENT" }, { 0x00158E, "Plustek.INC", "PLUSTEK" }, { 0x001552, "Wi-Gear Inc.", "WI-GEAR" }, { 0x001548, "CUBE TECHNOLOGIES", "CUBE-TECHNOLOGIES" }, { 0x00154D, "Netronome Systems, Inc.", "NETRONOME" }, { 0x00153C, "Kprotech Co., Ltd.", "KPROTECH" }, { 0x001543, "Aberdeen Test Center", "ABERDEEN-TEST-CENTER" }, { 0x001535, "OTE Spa", "OTE-SPA" }, { 0x001537, "Ventus Networks", "VENTUS-NETWORKS" }, { 0x001536, "Powertech co.,Ltd", "POWERTECH" }, { 0x001530, "EMC Corporation", "EMC" }, { 0x001529, "N3 Corporation", "N3" }, { 0x0014F9, "Vantage Controls", "VANTAGE-CONTROLS" }, { 0x0014FB, "Technical Solutions Inc.", "TECHNICAL-SOLUTIONS" }, { 0x0014FA, "AsGa S.A.", "ASGA" }, { 0x0014F4, "DekTec Digital Video B.V.", "DEKTEC-DIGITAL-VIDEO" }, { 0x0014ED, "Airak, Inc.", "AIRAK" }, { 0x0014DE, "Sage Instruments Inc.", "SAGE-INSTRUMENTS" }, { 0x0014E3, "mm-lab GmbH", "MM-LAB" }, { 0x0014D7, "Datastore Technology Corp", "DATASTORE" }, { 0x001524, "Numatics, Inc.", "NUMATICS" }, { 0x00151D, "M2I CORPORATION", "M2I" }, { 0x001513, "EFS sas", "EFS-SAS" }, { 0x001507, "Renaissance Learning Inc", "RENAISSANCE-LEARNING" }, { 0x00129E, "Surf Communications Inc.", "SURF-COMMUNICATION" }, { 0x001297, "O2Micro, Inc.", "O2MICRO" }, { 0x001298, "MICO ELECTRIC(SHENZHEN) LIMITED", "MICO-ELECTRIC-SHENZHEN" }, { 0x00128D, "STB Datenservice GmbH", "STB-DATENSERVICE" }, { 0x00128E, "Q-Free ASA", "Q-FREE-ASA" }, { 0x001292, "Griffin Technology", "GRIFFIN" }, { 0x00127C, "SWEGON AB", "SWEGON-AB" }, { 0x001281, "March Networks S.p.A.", "MARCH-NETWORKS-S-P-A" }, { 0x00127B, "VIA Networking Technologies, Inc.", "VIA-NETWORKING-TECHNOLOGIES" }, { 0x001327, "Data Acquisitions limited", "DATA-ACQUISITIONS" }, { 0x00131D, "Scanvaegt International A/S", "SCANVAEGT-A/S" }, { 0x001322, "DAQ Electronics, Inc.", "DAQ-ELECTRONICS" }, { 0x001316, "L-S-B Broadcast Technologies GmbH", "L-S-B-BROADCAST-TECHNOLOGIES" }, { 0x00130F, "EGEMEN Bilgisayar Muh San ve Tic LTD STI", "EGEMEN-BILGISAYAR-MUH-SAN-VE-TIC-STI" }, { 0x0012F7, "Xiamen Xinglian Electronics Co., Ltd.", "XIAMEN-XINGLIAN-ELECTRONICS" }, { 0x0012FE, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x001303, "GateConnect", "GATECONNECT" }, { 0x0012FD, "OPTIMUS IC S.A.", "OPTIMUS-IC" }, { 0x00140F, "Federal State Unitary Enterprise Leningrad R&D Institute of", "FEDERAL-STATE-UNITARY-LENINGRAD-R-D-INSTITUTE-OF" }, { 0x001416, "Scosche Industries, Inc.", "SCOSCHE-INDUSTRIES" }, { 0x001406, "Go Networks", "GO-NETWORKS" }, { 0x001407, "Sperian Protection Instrumentation", "SPERIAN-PROTECTION-INSTRUMENTATION" }, { 0x00140C, "GKB CCTV CO., LTD.", "GKB-CCTV" }, { 0x0013FF, "Dage-MTI of MC, Inc.", "DAGE-MTI-OF-MC" }, { 0x001400, "MINERVA KOREA CO., LTD", "MINERVA-KOREA" }, { 0x0013FA, "LifeSize Communications, Inc", "LIFESIZE-COMMUNICATION" }, { 0x0013F3, "Giga-byte Communications Inc.", "GIGA-BYTE-COMMUNICATION" }, { 0x0013EE, "JBX Designs Inc.", "JBX-DESIGNS" }, { 0x0013ED, "PSIA", "PSIA" }, { 0x00135A, "Project T&E Limited", "PROJECT-T-E" }, { 0x00135F, "Cisco Systems, Inc", "CISCO" }, { 0x001360, "Cisco Systems, Inc", "CISCO" }, { 0x001352, "Naztec, Inc.", "NAZTEC" }, { 0x00134B, "ToGoldenNet Technology Inc.", "TOGOLDENNET" }, { 0x00134C, "YDT Technology International", "YDT" }, { 0x00133A, "VadaTech Inc.", "VADATECH" }, { 0x00133F, "Eppendorf Instrumente GmbH", "EPPENDORF-INSTRUMENTE" }, { 0x00132C, "MAZ Brandenburg GmbH", "MAZ-BRANDENBURG" }, { 0x001339, "CCV Deutschland GmbH", "CCV-DEUTSCHLAND" }, { 0x0013AD, "Sendo Ltd", "SENDO" }, { 0x0013B4, "Appear TV", "APPEAR-TV" }, { 0x0013A8, "Tanisys Technology", "TANISYS" }, { 0x0013A7, "BATTELLE MEMORIAL INSTITUTE", "BATTELLE-MEMORIAL-INSTITUTE" }, { 0x0013A1, "Crow Electronic Engeneering", "CROW-ENGENEERING" }, { 0x00139A, "K-ubique ID Corp.", "K-UBIQUE-ID" }, { 0x001395, "congatec AG", "CONGATEC" }, { 0x00138E, "FOAB Elektronik AB", "FOAB-ELEKTRONIK-AB" }, { 0x001388, "WiMedia Alliance", "WIMEDIA-ALLIANCE" }, { 0x0013E4, "YANGJAE SYSTEMS CORP.", "YANGJAE" }, { 0x0013E9, "VeriWave, Inc.", "VERIWAVE" }, { 0x0013E3, "CoVi Technologies, Inc.", "COVI-TECHNOLOGIES" }, { 0x0013DD, "Abbott Diagnostics", "ABBOTT-DIAGNOSTICS" }, { 0x0013D6, "TII NETWORK TECHNOLOGIES, INC.", "TII-NETWORK-TECHNOLOGIES" }, { 0x0013D1, "KIRK telecom A/S", "KIRK-TELECOM-A/S" }, { 0x0013CA, "Pico Digital", "PICO-DIGITAL" }, { 0x0013C3, "Cisco Systems, Inc", "CISCO" }, { 0x0013C4, "Cisco Systems, Inc", "CISCO" }, { 0x0013BA, "ReadyLinks Inc", "READYLINKS" }, { 0x0013BE, "Virtual Conexions", "VIRTUAL-CONEXIONS" }, { 0x0013B9, "BM SPA", "BM-SPA" }, { 0x0012F3, "connectBlue AB", "CONNECTBLUE-AB" }, { 0x0012ED, "AVG Advanced Technologies", "AVG-ADVANCED-TECHNOLOGIES" }, { 0x0012E6, "SPECTEC COMPUTER CO., LTD.", "SPECTEC" }, { 0x0012E1, "Alliant Networks, Inc", "ALLIANT-NETWORKS" }, { 0x0012D3, "Zetta Systems, Inc.", "ZETTA" }, { 0x0012DA, "Cisco Systems, Inc", "CISCO" }, { 0x0012D4, "Princeton Technology, Ltd", "PRINCETON" }, { 0x0012C7, "SECURAY Technologies Ltd.Co.", "SECURAY-TECHNOLOGIES" }, { 0x0012CE, "Advanced Cybernetics Group", "ADVANCED-CYBERNETICS-GROUP" }, { 0x0012C2, "Apex Electronics Factory", "APEX-ELECTRONICS-FACTORY" }, { 0x0012C1, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x0012B8, "G2 Microsystems", "G2-MICROSYSTEMS" }, { 0x0012BD, "Avantec Manufacturing Limited", "AVANTEC-MANUFACTURING" }, { 0x0012B7, "PTW Freiburg", "PTW-FREIBURG" }, { 0x0012B1, "Dai Nippon Printing Co., Ltd", "DAI-NIPPON-PRINTING" }, { 0x0012A5, "Stargen, Inc.", "STARGEN" }, { 0x0012AA, "IEE, Inc.", "IEE" }, { 0x001379, "PONDER INFORMATION INDUSTRIES LTD.", "PONDER-INFORMATION-INDUSTRIES" }, { 0x001380, "Cisco Systems, Inc", "CISCO" }, { 0x001385, "Add-On Technology Co., LTD.", "ADD-ON" }, { 0x00137F, "Cisco Systems, Inc", "CISCO" }, { 0x00136D, "Tentaculus AB", "TENTACULUS-AB" }, { 0x001366, "Neturity Technologies Inc.", "NETURITY-TECHNOLOGIES" }, { 0x001258, "Activis Polska", "ACTIVIS-POLSKA" }, { 0x001251, "SILINK", "SILINK" }, { 0x001252, "Citronix, LLC", "CITRONIX-LLC" }, { 0x001245, "Zellweger Analytics, Inc.", "ZELLWEGER-ANALYTICS" }, { 0x00124C, "BBWM Corporation", "BBWM" }, { 0x001239, "S Net Systems Inc.", "S-NET" }, { 0x001240, "AMOI ELECTRONICS CO.,LTD", "AMOI-ELECTRONICS" }, { 0x00122D, "SiNett Corporation", "SINETT" }, { 0x001232, "LeWiz Communications Inc.", "LEWIZ-COMMUNICATION" }, { 0x0011C5, "TEN Technology", "TEN" }, { 0x0011C8, "Powercom Co., Ltd.", "POWERCOM" }, { 0x0011CD, "Axsun Technologies", "AXSUN-TECHNOLOGIES" }, { 0x0011C6, "Seagate Technology", "SEAGATE" }, { 0x0011B4, "Westermo Teleindustri AB", "WESTERMO-TELEINDUSTRI-AB" }, { 0x0011B9, "Inner Range Pty. Ltd.", "INNER-RANGE-PTY" }, { 0x0011C0, "Aday Technology Inc", "ADAY" }, { 0x0011B3, "YOSHIMIYA CO.,LTD.", "YOSHIMIYA" }, { 0x0011AD, "Shanghai Ruijie Technology", "SHANGHAI-RUIJIE" }, { 0x001138, "TAISHIN CO., LTD.", "TAISHIN" }, { 0x00113F, "Alcatel DI", "ALCATEL-DI" }, { 0x001133, "Siemens Austria SIMEA", "SIEMENS-AUSTRIA-SIMEA" }, { 0x001132, "Synology Incorporated", "SYNOLOGY-INCORPORATED" }, { 0x001129, "Paradise Datacom Ltd.", "PARADISE-DATACOM" }, { 0x00112E, "CEICOM", "CEICOM" }, { 0x001128, "Streamit", "STREAMIT" }, { 0x001122, "CIMSYS Inc", "CIMSYS" }, { 0x001171, "DEXTER Communications, Inc.", "DEXTER-COMMUNICATION" }, { 0x00116A, "Domo Ltd", "DOMO" }, { 0x001160, "ARTDIO Company Co., LTD", "ARTDIO-COMPANY" }, { 0x001154, "Webpro Technologies Inc.", "WEBPRO-TECHNOLOGIES" }, { 0x00114B, "Francotyp-Postalia GmbH", "FRANCOTYP-POSTALIA" }, { 0x001145, "ValuePoint Networks", "VALUEPOINT-NETWORKS" }, { 0x0011A1, "VISION NETWARE CO.,LTD", "VISION-NETWARE" }, { 0x0011A6, "Sypixx Networks", "SYPIXX-NETWORKS" }, { 0x00119A, "Alkeria srl", "ALKERIA-SRL" }, { 0x001190, "Digital Design Corporation", "DIGITAL-DESIGN" }, { 0x00118A, "Viewtran Technology Limited", "VIEWTRAN" }, { 0x001194, "Chi Mei Communication Systems, Inc.", "CHI-MEI-COMMUNICATION" }, { 0x001189, "Aerotech Inc", "AEROTECH" }, { 0x001184, "Humo Laboratory,Ltd.", "HUMO-LABORATORY" }, { 0x00117D, "ZMD America, Inc.", "ZMD-AMERICA" }, { 0x001178, "Chiron Technology Ltd", "CHIRON" }, { 0x001177, "Coaxial Networks, Inc.", "COAXIAL-NETWORKS" }, { 0x001223, "Pixim", "PIXIM" }, { 0x001228, "Data Ltd.", "DATA" }, { 0x001210, "WideRay Corp", "WIDERAY" }, { 0x001215, "iStor Networks, Inc.", "ISTOR-NETWORKS" }, { 0x001216, "ICP Internet Communication Payment AG", "ICP-INTERNET-COMMUNICATION-PAYMENT" }, { 0x001209, "Fastrax Ltd", "FASTRAX" }, { 0x001204, "u10 Networks, Inc.", "U10-NETWORKS" }, { 0x0011FD, "KORG INC.", "KORG" }, { 0x001203, "ActivNetworks", "ACTIVNETWORKS" }, { 0x0011F3, "NeoMedia Europe AG", "NEOMEDIA-EUROPE" }, { 0x0011E7, "WORLDSAT - Texas de France", "WORLDSAT---TEXAS-DE-FRANCE" }, { 0x0011EC, "AVIX INC.", "AVIX" }, { 0x0011E0, "U-MEDIA Communications, Inc.", "U-MEDIA-COMMUNICATION" }, { 0x0011DA, "Vivaas Technology Inc.", "VIVAAS" }, { 0x0011D4, "NetEnrich, Inc", "NETENRICH" }, { 0x0011D9, "TiVo", "TIVO" }, { 0x00111C, "Pleora Technologies Inc.", "PLEORA-TECHNOLOGIES" }, { 0x00110F, "netplat,Inc.", "NETPLAT" }, { 0x001116, "COTEAU VERT CO., LTD.", "COTEAU-VERT" }, { 0x001109, "Micro-Star International", "MICRO-STAR" }, { 0x001103, "kawamura electric inc.", "KAWAMURA-ELECTRIC" }, { 0x000FFD, "Glorytek Network Inc.", "GLORYTEK-NETWORK" }, { 0x000FEE, "XTec, Incorporated", "XTEC-INCORPORATED" }, { 0x001275, "Sentilla Corporation", "SENTILLA" }, { 0x00126E, "Seidel Elektronik GmbH Nfg.KG", "SEIDEL-ELEKTRONIK-NFG" }, { 0x001269, "Value Electronics", "VALUE-ELECTRONICS" }, { 0x00125C, "Green Hills Software, Inc.", "GREEN-HILLS-SOFTWARE" }, { 0x000F15, "Kjaerulff1 A/S", "KJAERULFF1-A/S" }, { 0x000F1A, "Gaming Support B.V.", "GAMING-SUPPORT" }, { 0x000F0E, "WaveSplitter Technologies, Inc.", "WAVESPLITTER-TECHNOLOGIES" }, { 0x000F08, "Indagon Oy", "INDAGON-OY" }, { 0x000F07, "Mangrove Systems, Inc.", "MANGROVE" }, { 0x000F02, "Digicube Technology Co., Ltd", "DIGICUBE" }, { 0x000EFB, "Macey Enterprises", "MACEY-ENTERPRISES" }, { 0x000EF5, "iPAC Technology Co., Ltd.", "IPAC" }, { 0x000EF6, "E-TEN Information Systems Co., Ltd.", "E-TEN-INFORMATION" }, { 0x000E8A, "Avara Technologies Pty. Ltd.", "AVARA-TECHNOLOGIES-PTY" }, { 0x000E83, "Cisco Systems, Inc", "CISCO" }, { 0x000E73, "Tpack A/S", "TPACK-A/S" }, { 0x000E7D, "Electronics Line 3000 Ltd.", "ELECTRONICS-LINE-3000" }, { 0x000E77, "Decru, Inc.", "DECRU" }, { 0x000E7E, "ionSign Oy", "IONSIGN-OY" }, { 0x000E6F, "IRIS Corporation Berhad", "IRIS-BERHAD" }, { 0x000E6A, "3Com Ltd", "3COM" }, { 0x000E69, "China Electric Power Research Institute", "CHINA-ELECTRIC-POWER-RESEARCH-INSTITUTE" }, { 0x000E63, "Lemke Diagnostics GmbH", "LEMKE-DIAGNOSTICS" }, { 0x000EBC, "Paragon Fidelity GmbH", "PARAGON-FIDELITY" }, { 0x000EB0, "Solutions Radio BV", "SOLUTIONS-RADIO" }, { 0x000EB5, "Ecastle Electronics Co., Ltd.", "ECASTLE-ELECTRONICS" }, { 0x000EAF, "CASTEL", "CASTEL" }, { 0x000EA9, "Shanghai Xun Shi Communications Equipment Ltd. Co.", "SHANGHAI-XUN-SHI-COMMUNICATION-EQUIPMENT" }, { 0x000E9D, "Tiscali UK Ltd", "TISCALI-UK" }, { 0x000EA2, "McAfee, Inc", "MCAFEE" }, { 0x000E90, "PONICO CORP.", "PONICO" }, { 0x000E8F, "Sercomm Corp.", "SERCOMM" }, { 0x000E96, "Cubic Defense Applications, Inc.", "CUBIC-DEFENSE-APPLICATIONS" }, { 0x000F4E, "Cellink", "CELLINK" }, { 0x000F41, "Zipher Ltd", "ZIPHER" }, { 0x000F48, "Polypix Inc.", "POLYPIX" }, { 0x000F4D, "TalkSwitch", "TALKSWITCH" }, { 0x000F39, "IRIS SENSORS", "IRIS-SENSORS" }, { 0x000F3C, "Endeleo Limited", "ENDELEO" }, { 0x000F34, "Cisco Systems, Inc", "CISCO" }, { 0x000F2D, "CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP.", "CHUNG-HSIN-ELECTRIC-MACHINERY-MFG" }, { 0x000F27, "TEAL Electronics, Inc.", "TEAL-ELECTRONICS" }, { 0x000F28, "Itronix Corporation", "ITRONIX" }, { 0x000F21, "Scientific Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x000EEF, "Private", "PRIVATE" }, { 0x000EDC, "Tellion INC.", "TELLION" }, { 0x000EE3, "Chiyu Technology Co.,Ltd", "CHIYU" }, { 0x000EC8, "Zoran Corporation", "ZORAN" }, { 0x000ECF, "PROFIBUS Nutzerorganisation e.V.", "PROFIBUS-NUTZERORGANISATION-E-V" }, { 0x000ED4, "CRESITT INDUSTRIE", "CRESITT-INDUSTRIE" }, { 0x000EC2, "Lowrance Electronics, Inc.", "LOWRANCE-ELECTRONICS" }, { 0x000EC1, "MYNAH Technologies", "MYNAH-TECHNOLOGIES" }, { 0x000F92, "Microhard Systems Inc.", "MICROHARD" }, { 0x000F99, "APAC opto Electronics Inc.", "APAC-OPTO-ELECTRONICS" }, { 0x000F8D, "FAST TV-Server AG", "FAST-TV-SERVER" }, { 0x000F80, "Trinity Security Systems,Inc.", "TRINITY-SECURITY" }, { 0x000F7F, "UBSTORAGE Co.,Ltd.", "UBSTORAGE" }, { 0x000FC9, "Allnet GmbH", "ALLNET" }, { 0x000FBC, "Onkey Technologies, Inc.", "ONKEY-TECHNOLOGIES" }, { 0x000FBB, "Nokia Siemens Networks GmbH & Co. KG.", "NOKIA-SIEMENS-NETWORKS" }, { 0x000FB6, "Europlex Technologies", "EUROPLEX-TECHNOLOGIES" }, { 0x000FA9, "PC Fabrik", "PC-FABRIK" }, { 0x000FAA, "Nexus Technologies", "NEXUS-TECHNOLOGIES" }, { 0x000FAF, "Dialog Inc.", "DIALOG" }, { 0x000FE8, "Lobos, Inc.", "LOBOS" }, { 0x000FED, "Anam Electronics Co., Ltd", "ANAM-ELECTRONICS" }, { 0x000FDC, "Ueda Japan Radio Co., Ltd.", "UEDA-JAPAN-RADIO" }, { 0x000FE1, "ID DIGITAL CORPORATION", "ID-DIGITAL" }, { 0x000FD5, "Schwechat - RISE", "SCHWECHAT---RISE" }, { 0x000FCE, "Kikusui Electronics Corp.", "KIKUSUI-ELECTRONICS" }, { 0x000F73, "RS Automation Co., Ltd", "RS-AUTOMATION" }, { 0x000F7A, "BeiJing NuQX Technology CO.,LTD", "BEIJING-NUQX" }, { 0x000F6D, "Midas Engineering", "MIDAS-ENGINEERING" }, { 0x000F67, "West Instruments", "WEST-INSTRUMENTS" }, { 0x000F6E, "BBox", "BBOX" }, { 0x000F60, "Lifetron Co.,Ltd", "LIFETRON" }, { 0x000F5B, "Delta Information Systems, Inc.", "DELTA-INFORMATION" }, { 0x000F54, "Entrelogic Corporation", "ENTRELOGIC" }, { 0x000D75, "Kobian Pte Ltd - Taiwan Branch", "KOBIAN-PTE---TAIWAN-BRANCH" }, { 0x000D7C, "Codian Ltd", "CODIAN" }, { 0x000D6F, "Ember Corporation", "EMBER" }, { 0x000D69, "TMT&D Corporation", "TMT-D" }, { 0x000D70, "Datamax Corporation", "DATAMAX" }, { 0x000D5D, "Raritan Computer, Inc", "RARITAN" }, { 0x000D62, "Funkwerk Dabendorf GmbH", "FUNKWERK-DABENDORF" }, { 0x000D50, "Galazar Networks", "GALAZAR-NETWORKS" }, { 0x000D4A, "Steag ETA-Optik", "STEAG-ETA-OPTIK" }, { 0x000DAB, "Parker Hannifin GmbH Electromechanical Division Europe", "PARKER-HANNIFIN-ELECTROMECHANICAL-DIVISION-EUROPE" }, { 0x000DA7, "Private", "PRIVATE" }, { 0x000DA1, "MIRAE ITS Co.,LTD.", "MIRAE-ITS" }, { 0x000DA2, "Infrant Technologies, Inc.", "INFRANT-TECHNOLOGIES" }, { 0x000D9B, "Heraeus Electro-Nite International N.V.", "HERAEUS-ELECTRO-NITE-N-V" }, { 0x000D8F, "King Tsushin Kogyo Co., LTD.", "KING-TSUSHIN-KOGYO" }, { 0x000D94, "AFAR Communications,Inc", "AFAR-COMMUNICATION" }, { 0x000D82, "PHS srl", "PHS-SRL" }, { 0x000D81, "Pepperl+Fuchs GmbH", "PEPPERL+FUCHS" }, { 0x000DCE, "Dynavac Technology Pte Ltd", "DYNAVAC-PTE" }, { 0x000DC8, "AirMagnet, Inc", "AIRMAGNET" }, { 0x000DC2, "Private", "PRIVATE" }, { 0x000DC7, "COSMIC ENGINEERING INC.", "COSMIC-ENGINEERING" }, { 0x000DBB, "Nippon Dentsu Co.,Ltd.", "NIPPON-DENTSU" }, { 0x000DB5, "GLOBALSAT TECHNOLOGY CORPORATION", "GLOBALSAT" }, { 0x000DAF, "Plexus Corp (UK) Ltd", "PLEXUS-UK" }, { 0x000D29, "Cisco Systems, Inc", "CISCO" }, { 0x000D23, "Smart Solution, Inc", "SMART-SOLUTION" }, { 0x000D17, "Turbo Networks Co.Ltd", "TURBO-NETWORKS" }, { 0x000D1C, "Amesys Defense", "AMESYS-DEFENSE" }, { 0x000D0A, "Projectiondesign as", "PROJECTIONDESIGN-AS" }, { 0x000D09, "Yuehua(Zhuhai) Electronic CO. LTD", "YUEHUA-ZHUHAI" }, { 0x000D10, "Embedtronics Oy", "EMBEDTRONICS-OY" }, { 0x000D04, "Foxboro Eckardt Development GmbH", "FOXBORO-ECKARDT-DEVELOPMENT" }, { 0x000CFD, "Hyundai ImageQuest Co.,Ltd.", "HYUNDAI-IMAGEQUEST" }, { 0x000D4F, "Kenwood Corporation", "KENWOOD" }, { 0x000D46, "Parker SSD Drives", "PARKER-SSD-DRIVES" }, { 0x000D42, "Newbest Development Limited", "NEWBEST-DEVELOPMENT" }, { 0x000D3C, "i.Tech Dynamic Ltd", "I-TECH-DYNAMIC" }, { 0x000D36, "Wu Han Routon Electronic Co., Ltd", "WU-HAN-ROUTON" }, { 0x000D3B, "Microelectronics Technology Inc.", "MICROELECTRONICS" }, { 0x000D2A, "Scanmatic AS", "SCANMATIC-AS" }, { 0x000D2F, "AIN Comm.Tech.Co., LTD", "AIN-COMM-TECH" }, { 0x000DFA, "Micro Control Systems Ltd.", "MICRO-CONTROL" }, { 0x000DF4, "Watertek Co.", "WATERTEK" }, { 0x000DF9, "NDS Limited", "NDS" }, { 0x000E00, "Atrie", "ATRIE" }, { 0x000DE7, "Snap-on OEM Group", "SNAP-ON-OEM-GROUP" }, { 0x000DE8, "Nasaco Electronics Pte. Ltd", "NASACO-ELECTRONICS-PTE" }, { 0x000DED, "Cisco Systems, Inc", "CISCO" }, { 0x000DE1, "Control Products, Inc.", "CONTROL-PRODUCTS" }, { 0x000DD5, "O'RITE TECHNOLOGY CO.,LTD", "O-RITE" }, { 0x000DDA, "ALLIED TELESIS K.K.", "ALLIED-TELESIS-K-K" }, { 0x000E20, "ACCESS Systems Americas, Inc.", "ACCESS-AMERICAS" }, { 0x000E27, "Crere Networks, Inc.", "CRERE-NETWORKS" }, { 0x000E14, "Visionary Solutions, Inc.", "VISIONARY-SOLUTIONS" }, { 0x000E1B, "IAV GmbH", "IAV" }, { 0x000E57, "Iworld Networking, Inc.", "IWORLD-NETWORKING" }, { 0x000E50, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x000E4A, "Changchun Huayu WEBPAD Co.,LTD", "CHANGCHUN-HUAYU-WEBPAD" }, { 0x000E49, "Forsway Scandinavia AB", "FORSWAY-SCANDINAVIA-AB" }, { 0x000E3D, "Televic N.V.", "TELEVIC-N-V" }, { 0x000E44, "Digital 5, Inc.", "DIGITAL-5" }, { 0x000E33, "Shuko Electronics Co.,Ltd", "SHUKO-ELECTRONICS" }, { 0x000E3A, "Cirrus Logic", "CIRRUS-LOGIC" }, { 0x000E2D, "Hyundai Digital Technology Co.,Ltd.", "HYUNDAI-DIGITAL" }, { 0x000CEA, "aphona Kommunikationssysteme", "APHONA-KOMMUNIKATIONSSYSTEME" }, { 0x000CD9, "Itcare Co., Ltd", "ITCARE" }, { 0x000CD3, "Prettl Elektronik Radeberg GmbH", "PRETTL-ELEKTRONIK-RADEBERG" }, { 0x000CDA, "FreeHand Systems, Inc.", "FREEHAND" }, { 0x000CDF, "PULNiX America, Inc", "PULNIX-AMERICA" }, { 0x000CC7, "Intelligent Computer Solutions Inc.", "INTELLIGENT-SOLUTIONS" }, { 0x000CCC, "Aeroscout Ltd.", "AEROSCOUT" }, { 0x000C13, "MediaQ", "MEDIAQ" }, { 0x000C05, "RPA Reserch Co., Ltd.", "RPA-RESERCH" }, { 0x000C0C, "APPRO TECHNOLOGY INC.", "APPRO" }, { 0x000BF4, "Private", "PRIVATE" }, { 0x000BF9, "Gemstone Communications, Inc.", "GEMSTONE-COMMUNICATION" }, { 0x000C00, "BEB Industrie-Elektronik AG", "BEB-INDUSTRIE-ELEKTRONIK" }, { 0x000BF3, "BAE SYSTEMS", "BAE" }, { 0x000C63, "Zenith Electronics Corporation", "ZENITH-ELECTRONICS" }, { 0x000C68, "SigmaTel, Inc.", "SIGMATEL" }, { 0x000C6F, "Amtek system co.,LTD.", "AMTEK-SYSTEM" }, { 0x000C50, "Seagate Technology", "SEAGATE" }, { 0x000C55, "Microlink Communications Inc.", "MICROLINK-COMMUNICATION" }, { 0x000C5C, "GTN Systems B.V.", "GTN" }, { 0x000C61, "AC Tech corporation DBA Advanced Digital", "AC-TECH-DBA-ADVANCED-DIGITAL" }, { 0x000CBA, "Jamex, Inc.", "JAMEX" }, { 0x000CB9, "LEA", "LEA" }, { 0x000CC0, "Genera Oy", "GENERA-OY" }, { 0x000CB4, "AutoCell Laboratories, Inc.", "AUTOCELL-LABORATORIES" }, { 0x000C34, "Vixen Co., Ltd.", "VIXEN" }, { 0x000CA2, "Harmonic Video Network", "HARMONIC-VIDEO-NETWORK" }, { 0x000CA7, "Metro (Suzhou) Technologies Co., Ltd.", "METRO-SUZHOU-TECHNOLOGIES" }, { 0x000CA9, "Ebtron Inc.", "EBTRON" }, { 0x000CAE, "Ailocom Oy", "AILOCOM-OY" }, { 0x000C42, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x000C44, "Automated Interfaces, Inc.", "AUTOMATED-INTERFACES" }, { 0x000C39, "Sentinel Wireless Inc.", "SENTINEL-WIRELESS" }, { 0x000C3B, "Orion Electric Co., Ltd.", "ORION-ELECTRIC" }, { 0x000C40, "Altech Controls", "ALTECH-CONTROLS" }, { 0x000C3A, "Oxance", "OXANCE" }, { 0x000C2F, "SeorimTechnology Co.,Ltd.", "SEORIMTECHNOLOGY" }, { 0x000C31, "Cisco Systems, Inc", "CISCO" }, { 0x000C2A, "OCTTEL Communication Co., Ltd.", "OCTTEL-COMMUNICATION" }, { 0x000C27, "Sammy Corporation", "SAMMY" }, { 0x000C18, "Zenisu Keisoku Inc.", "ZENISU-KEISOKU" }, { 0x000C20, "Fi WIn, Inc.", "FI-WIN" }, { 0x000BED, "ELM Inc.", "ELM" }, { 0x000BF2, "Chih-Kan Technology Co., Ltd.", "CHIH-KAN" }, { 0x000BE1, "Nokia NET Product Operations", "NOKIA-NET-PRODUCT-OPERATIONS" }, { 0x000BE6, "Datel Electronics", "DATEL-ELECTRONICS" }, { 0x000BDA, "EyeCross Co.,Inc.", "EYECROSS" }, { 0x000BD1, "Aeronix, Inc.", "AERONIX" }, { 0x000BC5, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x000BCC, "JUSAN, S.A.", "JUSAN" }, { 0x000BB9, "Imsys AB", "IMSYS-AB" }, { 0x000BBE, "Cisco Systems, Inc", "CISCO" }, { 0x000BB2, "SMALLBIG TECHNOLOGY", "SMALLBIG" }, { 0x000BB7, "Micro Systems Co.,Ltd.", "MICRO" }, { 0x000C96, "OQO, Inc.", "OQO" }, { 0x000C9B, "EE Solutions, Inc", "EE-SOLUTIONS" }, { 0x000C8A, "Bose Corporation", "BOSE" }, { 0x000C8F, "Nergal s.r.l.", "NERGAL-S-R-L" }, { 0x000C83, "Logical Solutions", "LOGICAL-SOLUTIONS" }, { 0x000C88, "Apache Micro Peripherals, Inc.", "APACHE-MICRO-PERIPHERALS" }, { 0x000C74, "RIVERTEC CORPORATION", "RIVERTEC" }, { 0x000C76, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x000C7B, "ALPHA PROJECT Co.,Ltd.", "ALPHA-PROJECT" }, { 0x000B85, "Cisco Systems, Inc", "CISCO" }, { 0x000B7F, "Align Engineering LLC", "ALIGN-ENGINEERING-LLC" }, { 0x000B84, "BODET", "BODET" }, { 0x000B73, "Kodeos Communications", "KODEOS-COMMUNICATION" }, { 0x000B78, "TAIFATECH INC.", "TAIFATECH" }, { 0x000B6C, "Sychip Inc.", "SYCHIP" }, { 0x000B60, "Cisco Systems, Inc", "CISCO" }, { 0x000B65, "Sy.A.C. srl", "SY-A-C-SRL" }, { 0x000B57, "Silicon Laboratories", "SILICON-LABORATORIES" }, { 0x000B5C, "Newtech Co.,Ltd", "NEWTECH" }, { 0x000B43, "Microscan Systems, Inc.", "MICROSCAN" }, { 0x000B48, "sofrel", "SOFREL" }, { 0x000B4A, "Visimetrics (UK) Ltd", "VISIMETRICS-UK" }, { 0x000B35, "Quad Bit System co., Ltd.", "QUAD-BIT-SYSTEM" }, { 0x000B37, "MANUFACTURE DES MONTRES ROLEX SA", "MANUFACTURE-DES-MONTRES-ROLEX" }, { 0x000B3C, "Cygnal Integrated Products, Inc.", "CYGNAL-INTEGRATED-PRODUCTS" }, { 0x000B29, "LS(LG) Industrial Systems co.,Ltd", "LS-LG-INDUSTRIAL" }, { 0x000B30, "Beijing Gongye Science & Technology Co.,Ltd", "BEIJING-GONGYE-SCIENCE" }, { 0x000BA8, "HANBACK ELECTRONICS CO., LTD.", "HANBACK-ELECTRONICS" }, { 0x000B92, "Ascom Danmark A/S", "ASCOM-DANMARK-A/S" }, { 0x000B97, "Matsushita Electric Industrial Co.,Ltd.", "MATSUSHITA-ELECTRIC-INDUSTRIAL" }, { 0x000B9C, "TriBeam Technologies, Inc.", "TRIBEAM-TECHNOLOGIES" }, { 0x000B8B, "KERAJET, S.A.", "KERAJET" }, { 0x0009D6, "KNC One GmbH", "KNC-ONE" }, { 0x0009D5, "Signal Communication, Inc.", "SIGNAL-COMMUNICATION" }, { 0x0009DC, "Galaxis Technology AG", "GALAXIS" }, { 0x0009C9, "BlueWINC Co., Ltd.", "BLUEWINC" }, { 0x0009D0, "Solacom Technologies Inc.", "SOLACOM-TECHNOLOGIES" }, { 0x0009C1, "PROCES-DATA A/S", "PROCES-DATA-A/S" }, { 0x0009C4, "Medicore Co., Ltd", "MEDICORE" }, { 0x00098F, "Cetacean Networks", "CETACEAN-NETWORKS" }, { 0x00097D, "SecWell Networks Oy", "SECWELL-NETWORKS-OY" }, { 0x00097E, "IMI TECHNOLOGY CO., LTD", "IMI" }, { 0x000983, "GlobalTop Technology, Inc.", "GLOBALTOP" }, { 0x000970, "Vibration Research Corporation", "VIBRATION-RESEARCH" }, { 0x000977, "Brunner Elektronik AG", "BRUNNER-ELEKTRONIK" }, { 0x000964, "Hi-Techniques, Inc.", "HI-TECHNIQUES" }, { 0x00096B, "IBM Corp", "IBM" }, { 0x000957, "Supercaller, Inc.", "SUPERCALLER" }, { 0x00095C, "Philips Medical Systems - Cardiac and Monitoring Systems (CM", "PHILIPS-MEDICAL---CARDIAC-AND-MONITORING-CM" }, { 0x000AE3, "YANG MEI TECHNOLOGY CO., LTD", "YANG-MEI" }, { 0x000AEA, "ADAM ELEKTRONIK LTD. ŞTI", "ADAM-ELEKTRONIK-ŞTI" }, { 0x000ADE, "Happy Communication Co., Ltd.", "HAPPY-COMMUNICATION" }, { 0x000AD7, "Origin ELECTRIC CO.,LTD.", "ORIGIN-ELECTRIC" }, { 0x000ACB, "XPAK MSA Group", "XPAK-MSA-GROUP" }, { 0x000AD0, "Niigata Develoment Center, F.I.T. Co., Ltd.", "NIIGATA-DEVELOMENT-CENTER-F-I-T" }, { 0x000AD2, "JEPICO Corporation", "JEPICO" }, { 0x000ABD, "Rupprecht & Patashnick Co.", "RUPPRECHT-PATASHNICK" }, { 0x000ABF, "HIROTA SS", "HIROTA-SS" }, { 0x000AC4, "Daewoo Teletech Co., Ltd", "DAEWOO-TELETECH" }, { 0x000AAC, "TerraTec Electronic GmbH", "TERRATEC" }, { 0x000AB1, "GENETEC Corporation", "GENETEC" }, { 0x000AB8, "Cisco Systems, Inc", "CISCO" }, { 0x000AA5, "MAXLINK INDUSTRIES LIMITED", "MAXLINK-INDUSTRIES" }, { 0x000A8D, "EUROTHERM LIMITED", "EUROTHERM" }, { 0x000A9E, "BroadWeb Corportation", "BROADWEB-CORPORTATION" }, { 0x000AA0, "Cedar Point Communications", "CEDAR-POINT-COMMUNICATION" }, { 0x000A98, "M+F Gwinner GmbH & Co", "M+F-GWINNER" }, { 0x000A92, "Presonus Corporation", "PRESONUS" }, { 0x000A7E, "The Advantage Group", "THE-ADVANTAGE-GROUP" }, { 0x000A85, "PLAT'C2,Inc", "PLAT-C2" }, { 0x000A8A, "Cisco Systems, Inc", "CISCO" }, { 0x0009B5, "3J Tech. Co., Ltd.", "3J-TECH" }, { 0x0009AF, "e-generis", "E-GENERIS" }, { 0x0009B0, "Onkyo Corporation", "ONKYO" }, { 0x0009A9, "Ikanos Communications", "IKANOS-COMMUNICATION" }, { 0x00099D, "Haliplex Communications", "HALIPLEX-COMMUNICATION" }, { 0x0009A2, "Interface Co., Ltd.", "INTERFACE" }, { 0x000990, "ACKSYS Communications & systems", "ACKSYS-COMMUNICATION" }, { 0x000996, "RDI", "RDI" }, { 0x00098A, "EqualLogic Inc", "EQUALLOGIC" }, { 0x000A77, "Bluewire Technologies LLC", "BLUEWIRE-TECHNOLOGIES-LLC" }, { 0x000A79, "corega K.K", "COREGA-K-K" }, { 0x000A72, "STEC, INC.", "STEC" }, { 0x000A5F, "almedio inc.", "ALMEDIO" }, { 0x000A66, "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD.", "MITSUBISHI-ELECTRIC-SYSTEM-SERVICE" }, { 0x000A6B, "Tadiran Telecom Business Systems LTD", "TADIRAN-TELECOM-BUSINESS" }, { 0x000A5A, "GreenNET Technologies Co.,Ltd.", "GREENNET-TECHNOLOGIES" }, { 0x000A53, "Intronics, Incorporated", "INTRONICS-INCORPORATED" }, { 0x000A58, "Freyer & Siegel Elektronik GmbH & Co. KG", "FREYER-SIEGEL-ELEKTRONIK" }, { 0x000A4C, "Molecular Devices Corporation", "MOLECULAR-DEVICES" }, { 0x000B24, "AirLogic", "AIRLOGIC" }, { 0x000B1D, "LayerZero Power Systems, Inc.", "LAYERZERO-POWER" }, { 0x000B16, "Communication Machinery Corporation", "COMMUNICATION-MACHINERY" }, { 0x000B18, "Private", "PRIVATE" }, { 0x000B11, "HIMEJI ABC TRADING CO.,LTD.", "HIMEJI-ABC-TRADING" }, { 0x000B0A, "dBm Optics", "DBM-OPTICS" }, { 0x000B05, "Pacific Broadband Networks", "PACIFIC-BROADBAND-NETWORKS" }, { 0x000AFE, "NovaPal Ltd", "NOVAPAL" }, { 0x000B03, "Taekwang Industrial Co., Ltd", "TAEKWANG-INDUSTRIAL" }, { 0x000AEF, "OTRUM ASA", "OTRUM-ASA" }, { 0x000AF2, "NeoAxiom Corp.", "NEOAXIOM" }, { 0x000A05, "Widax Corp.", "WIDAX" }, { 0x000A0A, "SUNIX Co., Ltd.", "SUNIX" }, { 0x000A0F, "Ilryung Telesys, Inc", "ILRYUNG-TELESYS" }, { 0x0009FF, "X.net 2000 GmbH", "X-NET-2000" }, { 0x0009FE, "Daisy Technologies, Inc.", "DAISY-TECHNOLOGIES" }, { 0x000A00, "Mediatek Corp.", "MEDIATEK" }, { 0x0009F6, "Shenzhen Eastern Digital Tech Ltd.", "SHENZHEN-EASTERN-DIGITAL-TECH" }, { 0x0009F5, "Emerson Network Power Co.,Ltd", "EMERSON-NETWORK-POWER" }, { 0x0009E8, "Cisco Systems, Inc", "CISCO" }, { 0x0009EF, "Vocera Communications", "VOCERA-COMMUNICATION" }, { 0x0009E3, "Angel Iglesias S.A.", "ANGEL-IGLESIAS" }, { 0x000A39, "LoPA Information Technology", "LOPA-INFORMATION" }, { 0x000A40, "Crown Audio -- Harmanm International", "CROWN-AUDIO----HARMANM" }, { 0x000A45, "Audio-Technica Corp.", "AUDIO-TECHNICA" }, { 0x000A47, "Allied Vision Technologies", "ALLIED-VISION-TECHNOLOGIES" }, { 0x000A34, "Identicard Systems Incorporated", "IDENTICARD-INCORPORATED" }, { 0x000A2D, "Cabot Communications Limited", "CABOT-COMMUNICATION" }, { 0x000A22, "Amperion Inc", "AMPERION" }, { 0x000A16, "Lassen Research", "LASSEN-RESEARCH" }, { 0x000A1B, "Stream Labs", "STREAM-LABS" }, { 0x000878, "Benchmark Storage Innovations", "BENCHMARK-STORAGE-INNOVATIONS" }, { 0x000872, "Sorenson Communications", "SORENSON-COMMUNICATION" }, { 0x00087E, "Bon Electro-Telecom Inc.", "BON-ELECTRO-TELECOM" }, { 0x00086B, "MIPSYS", "MIPSYS" }, { 0x000865, "JASCOM CO., LTD", "JASCOM" }, { 0x000866, "DSX Access Systems, Inc.", "DSX-ACCESS" }, { 0x00085F, "Picanol N.V.", "PICANOL-N-V" }, { 0x000859, "ShenZhen Unitone Electronics Co., Ltd.", "SHENZHEN-UNITONE-ELECTRONICS" }, { 0x000853, "Schleicher GmbH & Co. Relaiswerke KG", "SCHLEICHER-RELAISWERKE" }, { 0x000858, "Novatechnology Inc.", "NOVATECHNOLOGY" }, { 0x00081D, "Ipsil, Incorporated", "IPSIL-INCORPORATED" }, { 0x000829, "Aval Nagasaki Corporation", "AVAL-NAGASAKI" }, { 0x000823, "Texa Corp.", "TEXA" }, { 0x00082A, "Powerwallz Network Security", "POWERWALLZ-NETWORK-SECURITY" }, { 0x000817, "EmergeCore Networks LLC", "EMERGECORE-NETWORKS-LLC" }, { 0x00091E, "Firstech Technology Corp.", "FIRSTECH" }, { 0x000925, "VSN Systemen BV", "VSN-SYSTEMEN" }, { 0x000918, "SAMSUNG TECHWIN CO.,LTD", "SAMSUNG-TECHWIN" }, { 0x000917, "WEM Technology Inc", "WEM" }, { 0x000912, "Cisco Systems, Inc", "CISCO" }, { 0x00090B, "MTL Instruments PLC", "MTL-INSTRUMENTS-PLC" }, { 0x000905, "iTEC Technologies Ltd.", "ITEC-TECHNOLOGIES" }, { 0x0008FF, "Trilogy Communications Ltd", "TRILOGY-COMMUNICATION" }, { 0x000906, "Esteem Networks", "ESTEEM-NETWORKS" }, { 0x0008FB, "SonoSite, Inc.", "SONOSITE" }, { 0x0008F2, "C&S Technology", "C-S" }, { 0x0008F7, "Hitachi Ltd, Semiconductor & Integrated Circuits Gr", "HITACHI-SEMICONDUCTOR-INTEGRATED-CIRCUITS-GR" }, { 0x0008ED, "ST&T Instrument Corp.", "ST-T-INSTRUMENT" }, { 0x0007D1, "Spectrum Signal Processing Inc.", "SPECTRUM-SIGNAL-PROCESSING" }, { 0x0007CE, "Cabletime Limited", "CABLETIME" }, { 0x0007C8, "Brain21, Inc.", "BRAIN21" }, { 0x0007BC, "Identix Inc.", "IDENTIX" }, { 0x00047C, "Skidata AG", "SKIDATA" }, { 0x0007BB, "Candera Inc.", "CANDERA" }, { 0x0007C2, "Netsys Telecom", "NETSYS-TELECOM" }, { 0x0007B5, "Any One Wireless Ltd.", "ANY-ONE-WIRELESS" }, { 0x0007AF, "Red Lion Controls, LP", "RED-LION-CONTROLS-LP" }, { 0x0007A2, "Opteon Corporation", "OPTEON" }, { 0x0007A7, "A-Z Inc.", "A-Z" }, { 0x0007A1, "VIASYS Healthcare GmbH", "VIASYS-HEALTHCARE" }, { 0x0007A8, "Haier Group Technologies Ltd.", "HAIER-GROUP-TECHNOLOGIES" }, { 0x00094A, "Homenet Communications", "HOMENET-COMMUNICATION" }, { 0x000949, "Glyph Technologies Inc.", "GLYPH-TECHNOLOGIES" }, { 0x000950, "Independent Storage Corporation", "INDEPENDENT-STORAGE" }, { 0x000944, "Cisco Systems, Inc", "CISCO" }, { 0x00093D, "Newisys,Inc.", "NEWISYS" }, { 0x000937, "Inventec Appliance Corp", "INVENTEC-APPLIANCE" }, { 0x000931, "Future Internet, Inc.", "FUTURE-INTERNET" }, { 0x000938, "Allot Communications", "ALLOT-COMMUNICATION" }, { 0x00092A, "MYTECS Co.,Ltd.", "MYTECS" }, { 0x0008B1, "ProQuent Systems", "PROQUENT" }, { 0x0008AB, "EnerLinx.com, Inc.", "ENERLINX-COM" }, { 0x0008AC, "Eltromat GmbH", "ELTROMAT" }, { 0x0008A5, "Peninsula Systems Inc.", "PENINSULA" }, { 0x000899, "Netbind, Inc.", "NETBIND" }, { 0x00089E, "Beijing Enter-Net co.LTD", "BEIJING-ENTER-NET" }, { 0x000895, "DIRC Technologie GmbH & Co.KG", "DIRC-TECHNOLOGIE" }, { 0x000891, "Lyan Inc.", "LYAN" }, { 0x00088B, "Tropic Networks Inc.", "TROPIC-NETWORKS" }, { 0x00088A, "Minds@Work", "MINDS@WORK" }, { 0x000885, "EMS Dr. Thomas Wünsche", "EMS-DR-THOMAS-WüNSCHE" }, { 0x0008E8, "Excel Master Ltd.", "EXCEL-MASTER" }, { 0x0008E7, "SHI ControlSystems,Ltd.", "SHI-CONTROLSYSTEMS" }, { 0x0008E1, "Barix AG", "BARIX" }, { 0x0008DA, "SofaWare Technologies Ltd.", "SOFAWARE-TECHNOLOGIES" }, { 0x0008D5, "Vanguard Networks Solutions, LLC", "VANGUARD-NETWORKS-SOLUTIONS-LLC" }, { 0x0008CE, "IPMobileNet Inc.", "IPMOBILENET" }, { 0x0008C8, "Soneticom, Inc.", "SONETICOM" }, { 0x0008C4, "Hikari Co.,Ltd.", "HIKARI" }, { 0x0008BE, "XENPAK MSA Group", "XENPAK-MSA-GROUP" }, { 0x0008B8, "E.F. Johnson", "E-F-JOHNSON" }, { 0x00079B, "Aurora Networks", "AURORA-NETWORKS" }, { 0x00078F, "Emkay Innovative Products", "EMKAY-INNOVATIVE-PRODUCTS" }, { 0x000788, "Clipcomm, Inc.", "CLIPCOMM" }, { 0x000779, "Sungil Telecom Co., Ltd.", "SUNGIL-TELECOM" }, { 0x000778, "GERSTEL GmbH & Co. KG", "GERSTEL" }, { 0x00076C, "Daehanet, Inc.", "DAEHANET" }, { 0x00075C, "Eastman Kodak Company", "EASTMAN-KODAK-COMPANY" }, { 0x000768, "Danfoss A/S", "DANFOSS-A/S" }, { 0x000762, "Group Sense Limited", "GROUP-SENSE" }, { 0x000755, "Lafon", "LAFON" }, { 0x00074F, "Cisco Systems, Inc", "CISCO" }, { 0x000741, "Sierra Automated Systems", "SIERRA-AUTOMATED" }, { 0x000749, "CENiX Inc.", "CENIX" }, { 0x000735, "Flarion Technologies, Inc.", "FLARION-TECHNOLOGIES" }, { 0x00073B, "Tenovis GmbH & Co KG", "TENOVIS" }, { 0x000729, "Kistler Instrumente AG", "KISTLER-INSTRUMENTE" }, { 0x00072E, "North Node AB", "NORTH-NODE-AB" }, { 0x000728, "Neo Telecom", "NEO-TELECOM" }, { 0x000718, "iCanTek Co., Ltd.", "ICANTEK" }, { 0x000806, "Raonet Systems, Inc.", "RAONET" }, { 0x0007FD, "LANergy Ltd.", "LANERGY" }, { 0x0007F6, "Qqest Software Systems", "QQEST-SOFTWARE" }, { 0x0007FC, "Adept Systems Inc.", "ADEPT" }, { 0x0007EA, "Massana, Inc.", "MASSANA" }, { 0x0007F0, "LogiSync LLC", "LOGISYNC-LLC" }, { 0x0007E3, "Navcom Technology, Inc.", "NAVCOM" }, { 0x0007E4, "SoftRadio Co., Ltd.", "SOFTRADIO" }, { 0x0007DD, "Cradle Technologies", "CRADLE-TECHNOLOGIES" }, { 0x0007D7, "Caporis Networks AG", "CAPORIS-NETWORKS" }, { 0x0006E3, "Quantitative Imaging Corporation", "QUANTITATIVE-IMAGING" }, { 0x0006DD, "AT & T Laboratories - Cambridge Ltd", "AT-T-LABORATORIES---CAMBRIDGE" }, { 0x0006A4, "INNOWELL Corp.", "INNOWELL" }, { 0x0006D3, "Alpha Telecom, Inc. U.S.A.", "ALPHA-TELECOM-U" }, { 0x0006D2, "Tundra Semiconductor Corp.", "TUNDRA-SEMICONDUCTOR" }, { 0x000647, "Etrali S.A.", "ETRALI" }, { 0x0006D9, "IPM-Net S.p.A.", "IPM-NET-S-P-A" }, { 0x0005EA, "Rednix", "REDNIX" }, { 0x0006CD, "Leaf Imaging Ltd.", "LEAF-IMAGING" }, { 0x0006BC, "Macrolink, Inc.", "MACROLINK" }, { 0x0006C6, "lesswire AG", "LESSWIRE" }, { 0x000654, "Winpresa Building Automation Technologies GmbH", "WINPRESA-BUILDING-AUTOMATION-TECHNOLOGIES" }, { 0x0006B6, "Nir-Or Israel Ltd.", "NIR-OR-ISRAEL" }, { 0x0006B0, "Comtech EF Data Corp.", "COMTECH-EF-DATA" }, { 0x00071F, "European Systems Integration", "EUROPEAN-INTEGRATION" }, { 0x000724, "Telemax Co., Ltd.", "TELEMAX" }, { 0x000707, "Interalia Inc.", "INTERALIA" }, { 0x00070C, "SVA-Intrusion.com Co. Ltd.", "SVA-INTRUSION-COM" }, { 0x000711, "Acterna", "ACTERNA" }, { 0x000712, "JAL Information Technology", "JAL-INFORMATION" }, { 0x0006FA, "IP SQUARE Co, Ltd.", "IP-SQUARE" }, { 0x0006EF, "Maxxan Systems, Inc.", "MAXXAN" }, { 0x0006EA, "ELZET80 Mikrocomputer GmbH&Co. KG", "ELZET80-MIKROCOMPUTER" }, { 0x0006E9, "Intime Corp.", "INTIME" }, { 0x0005EB, "Blue Ridge Networks, Inc.", "BLUE-RIDGE-NETWORKS" }, { 0x0005E4, "Red Lion Controls Inc.", "RED-LION-CONTROLS" }, { 0x0005F1, "Vrcom, Inc.", "VRCOM" }, { 0x0005FD, "PacketLight Networks Ltd.", "PACKETLIGHT-NETWORKS" }, { 0x0005E2, "Creativ Network Technologies", "CREATIV-NETWORK-TECHNOLOGIES" }, { 0x0005DC, "Cisco Systems, Inc", "CISCO" }, { 0x0005E1, "Trellis Photonics, Ltd.", "TRELLIS-PHOTONICS" }, { 0x0005D8, "Arescom, Inc.", "ARESCOM" }, { 0x0005D7, "Vista Imaging, Inc.", "VISTA-IMAGING" }, { 0x0005C5, "Flaga HF", "FLAGA-HF" }, { 0x0005D1, "Metavector Technologies", "METAVECTOR-TECHNOLOGIES" }, { 0x0005D2, "DAP Technologies", "DAP-TECHNOLOGIES" }, { 0x0005CB, "ROIS Technologies, Inc.", "ROIS-TECHNOLOGIES" }, { 0x00057F, "Acqis Technology", "ACQIS" }, { 0x000579, "Universal Control Solution Corp.", "UNIVERSAL-CONTROL-SOLUTION" }, { 0x000575, "CDS-Electronics BV", "CDS-ELECTRONICS" }, { 0x00056F, "Innomedia Technologies Pvt. Ltd.", "INNOMEDIA-TECHNOLOGIES-PVT" }, { 0x000568, "Piltofish Networks AB", "PILTOFISH-NETWORKS-AB" }, { 0x000562, "Digital View Limited", "DIGITAL-VIEW" }, { 0x00055C, "Kowa Company, Ltd.", "KOWA-COMPANY" }, { 0x000556, "360 Systems", "360" }, { 0x000550, "Vcomms Connect Limited", "VCOMMS-CONNECT" }, { 0x000545, "Internet Photonics", "INTERNET-PHOTONICS" }, { 0x00053F, "VisionTek, Inc.", "VISIONTEK" }, { 0x000546, "KDDI Network & Solultions Inc.", "KDDI-NETWORK-SOLULTIONS" }, { 0x0006AA, "VT Miltope", "VT-MILTOPE" }, { 0x0006A9, "Universal Instruments Corp.", "UNIVERSAL-INSTRUMENTS" }, { 0x0006A0, "Mx Imaging", "MX-IMAGING" }, { 0x00069F, "Kuokoa Networks", "KUOKOA-NETWORKS" }, { 0x000699, "Vida Design Co.", "VIDA-DESIGN" }, { 0x000693, "Flexus Computer Technology, Inc.", "FLEXUS" }, { 0x00069A, "e & Tel", "E-TEL" }, { 0x00068D, "SEPATON, Inc.", "SEPATON" }, { 0x000687, "Omnitron Systems Technology, Inc.", "OMNITRON" }, { 0x000680, "Card Access, Inc.", "CARD-ACCESS" }, { 0x000539, "A Brand New World in Sweden AB", "A-BRAND-NEW-WORLD-IN-SWEDEN-AB" }, { 0x000526, "IPAS GmbH", "IPAS" }, { 0x00052D, "Zoltrix International Limited", "ZOLTRIX" }, { 0x00052C, "Supreme Magic Corporation", "SUPREME-MAGIC" }, { 0x000520, "Smartronix, Inc.", "SMARTRONIX" }, { 0x00051A, "3COM EUROPE LTD.", "3COM" }, { 0x000510, "Infinite Shanghai Communication Terminals Ltd.", "INFINITE-SHANGHAI-COMMUNICATION-TERMINALS" }, { 0x000514, "KDT Systems Co., Ltd.", "KDT" }, { 0x000509, "AVOC Nishimura Ltd.", "AVOC-NISHIMURA" }, { 0x000503, "ICONAG", "ICONAG" }, { 0x00050A, "ICS Spa", "ICS-SPA" }, { 0x0004FF, "Acronet Co., Ltd.", "ACRONET" }, { 0x000500, "Cisco Systems, Inc", "CISCO" }, { 0x000641, "ITCN", "ITCN" }, { 0x00063D, "Microwave Data Systems Inc.", "MICROWAVE-DATA" }, { 0x000630, "Adtranz Sweden", "ADTRANZ-SWEDEN" }, { 0x000637, "Toptrend-Meta Information (ShenZhen) Inc.", "TOPTREND-META-INFORMATION-SHENZHEN" }, { 0x000620, "Serial System Ltd.", "SERIAL-SYSTEM" }, { 0x00061A, "Zetari Inc.", "ZETARI" }, { 0x00060C, "Melco Industries, Inc.", "MELCO-INDUSTRIES" }, { 0x000614, "Prism Holdings", "PRISM-HOLDINGS" }, { 0x000606, "RapidWAN, Inc.", "RAPIDWAN" }, { 0x000677, "SICK AG", "SICK" }, { 0x000673, "TKH Security Solutions USA", "TKH-SECURITY-SOLUTIONS-USA" }, { 0x000666, "Roving Networks", "ROVING-NETWORKS" }, { 0x00066D, "Compuprint S.P.A.", "COMPUPRINT-S-P-A" }, { 0x00066C, "Robinson Corporation", "ROBINSON" }, { 0x000653, "Cisco Systems, Inc", "CISCO" }, { 0x00065A, "Strix Systems", "STRIX" }, { 0x00064D, "Sencore", "SENCORE" }, { 0x000660, "NADEX Co., Ltd.", "NADEX" }, { 0x0005B8, "Electronic Design Associates, Inc.", "DESIGN-ASSOCIATES" }, { 0x0005BF, "JustEzy Technology, Inc.", "JUSTEZY" }, { 0x0005AE, "Mediaport USA", "MEDIAPORT-USA" }, { 0x0005B2, "Medison Co., Ltd.", "MEDISON" }, { 0x00059E, "Zinwell Corporation", "ZINWELL" }, { 0x0005A5, "KOTT", "KOTT" }, { 0x000598, "CRONOS S.r.l.", "CRONOS-S-R-L" }, { 0x0005A4, "Lucid Voice Ltd.", "LUCID-VOICE" }, { 0x000592, "Pultek Corp.", "PULTEK" }, { 0x00058B, "IPmental, Inc.", "IPMENTAL" }, { 0x00058C, "Opentech Inc.", "OPENTECH" }, { 0x00037E, "PORTech Communications, Inc.", "PORTECH-COMMUNICATION" }, { 0x000383, "Metera Networks, Inc.", "METERA-NETWORKS" }, { 0x000377, "Gigabit Wireless", "GIGABIT-WIRELESS" }, { 0x00037B, "IDEC IZUMI Corporation", "IDEC-IZUMI" }, { 0x00036B, "Cisco Systems, Inc", "CISCO" }, { 0x000372, "ULAN", "ULAN" }, { 0x000367, "Jasmine Networks, Inc.", "JASMINE-NETWORKS" }, { 0x00036A, "Mainnet, Ltd.", "MAINNET" }, { 0x000364, "Scenix Semiconductor, Inc.", "SCENIX-SEMICONDUCTOR" }, { 0x00035F, "Prüftechnik Condition Monitoring GmbH & Co. KG", "PRüFTECHNIK-CONDITION-MONITORING" }, { 0x00035C, "Saint Song Corp.", "SAINT-SONG" }, { 0x00034D, "Chiaro Networks, Ltd.", "CHIARO-NETWORKS" }, { 0x0003FA, "TiMetra Networks", "TIMETRA-NETWORKS" }, { 0x0003F5, "Chip2Chip", "CHIP2CHIP" }, { 0x0003EE, "MKNet Corporation", "MKNET" }, { 0x0003E8, "Wavelength Digital Limited", "WAVELENGTH-DIGITAL" }, { 0x0003E3, "Cisco Systems, Inc", "CISCO" }, { 0x0003DC, "Lexar Media, Inc.", "LEXAR-MEDIA" }, { 0x0003D7, "NextNet Wireless, Inc.", "NEXTNET-WIRELESS" }, { 0x0003D4, "Alloptic, Inc.", "ALLOPTIC" }, { 0x00030B, "Hunter Technology, Inc.", "HUNTER" }, { 0x0003D0, "KOANKEISO Co., Ltd.", "KOANKEISO" }, { 0x0003C9, "TECOM Co., Ltd.", "TECOM" }, { 0x0003C4, "Tomra Systems ASA", "TOMRA-ASA" }, { 0x0004FA, "NBS Technologies Inc.", "NBS-TECHNOLOGIES" }, { 0x0004F9, "Xtera Communications, Inc.", "XTERA-COMMUNICATION" }, { 0x0004F3, "FS FORTH-SYSTEME GmbH", "FS-FORTH-SYSTEME" }, { 0x0004E7, "Lightpointe Communications, Inc", "LIGHTPOINTE-COMMUNICATION" }, { 0x0004ED, "Billion Electric Co., Ltd.", "BILLION-ELECTRIC" }, { 0x0004DD, "Cisco Systems, Inc", "CISCO" }, { 0x0004D6, "Takagi Industrial Co., Ltd.", "TAKAGI-INDUSTRIAL" }, { 0x0004D0, "Softlink s.r.o.", "SOFTLINK-S-R-O" }, { 0x0004CA, "FreeMs Corp.", "FREEMS" }, { 0x0004BE, "OptXCon, Inc.", "OPTXCON" }, { 0x0004C3, "CASTOR Informatique", "CASTOR-INFORMATIQUE" }, { 0x0004C4, "Allen & Heath Limited", "ALLEN-HEATH" }, { 0x0004B7, "AMB i.t. Holding", "AMB-I-T-HOLDING" }, { 0x0004B1, "Signal Technology, Inc.", "SIGNAL" }, { 0x0004AD, "Malibu Networks", "MALIBU-NETWORKS" }, { 0x0004AA, "Jetstream Communications", "JETSTREAM-COMMUNICATION" }, { 0x00049D, "Ipanema Technologies", "IPANEMA-TECHNOLOGIES" }, { 0x000497, "MacroSystem Digital Video AG", "MACROSYSTEM-DIGITAL-VIDEO" }, { 0x000490, "Optical Access", "OPTICAL-ACCESS" }, { 0x00048B, "Poscon Corporation", "POSCON" }, { 0x000341, "Axon Digital Design", "AXON-DIGITAL-DESIGN" }, { 0x00033E, "Tateyama System Laboratory Co., Ltd.", "TATEYAMA-SYSTEM-LABORATORY" }, { 0x00033A, "Silicon Wave, Inc.", "SILICON-WAVE" }, { 0x000333, "Digitel Co., Ltd.", "DIGITEL" }, { 0x00032B, "GAI Datenfunksysteme GmbH", "GAI-DATENFUNKSYSTEME" }, { 0x000327, "ACT'L", "ACT-L" }, { 0x00032E, "Scope Information Management, Ltd.", "SCOPE-INFORMATION-MANAGEMENT" }, { 0x000322, "IDIS Co., Ltd.", "IDIS" }, { 0x00031E, "Optranet, Inc.", "OPTRANET" }, { 0x00B052, "Atheros Communications", "ATHEROS-COMMUNICATION" }, { 0x000319, "Infineon AG", "INFINEON" }, { 0x000316, "Nobell Communications, Inc.", "NOBELL-COMMUNICATION" }, { 0x000312, "TR-Systemtechnik GmbH", "TR-SYSTEMTECHNIK" }, { 0x000447, "Acrowave Systems Co., Ltd.", "ACROWAVE" }, { 0x00043B, "Lava Computer Mfg., Inc.", "LAVA-MFG" }, { 0x000440, "cyberPIXIE, Inc.", "CYBERPIXIE" }, { 0x00043A, "Intelligent Telecommunications, Inc.", "INTELLIGENT-TELECOMMUNICATIONS" }, { 0x000434, "Accelent Systems, Inc.", "ACCELENT" }, { 0x00042D, "Sarian Systems, Ltd.", "SARIAN" }, { 0x00042E, "Netous Technologies, Ltd.", "NETOUS-TECHNOLOGIES" }, { 0x000428, "Cisco Systems, Inc", "CISCO" }, { 0x000421, "Ocular Networks", "OCULAR-NETWORKS" }, { 0x000417, "ELAU AG", "ELAU" }, { 0x000411, "Inkra Networks, Inc.", "INKRA-NETWORKS" }, { 0x00040B, "3COM EUROPE LTD.", "3COM" }, { 0x000404, "Makino Milling Machine Co., Ltd.", "MAKINO-MILLING-MACHINE" }, { 0x000481, "Econolite Control Products, Inc.", "ECONOLITE-CONTROL-PRODUCTS" }, { 0x000486, "ITTC, University of Kansas", "ITTC-UNIVERSITY-OF-KANSAS" }, { 0x000477, "Scalant Systems, Inc.", "SCALANT" }, { 0x000476, "3 Com Corporation", "3COM" }, { 0x000469, "Innocom, Inc.", "INNOCOM" }, { 0x000470, "ipUnplugged AB", "IPUNPLUGGED-AB" }, { 0x00046A, "Navini Networks", "NAVINI-NETWORKS" }, { 0x000464, "Pulse-Link Inc", "PULSE-LINK" }, { 0x00045D, "BEKA Elektronik", "BEKA-ELEKTRONIK" }, { 0x000457, "Universal Access Technology, Inc.", "UNIVERSAL-ACCESS" }, { 0x000451, "Medrad, Inc.", "MEDRAD" }, { 0x0003C1, "Packet Dynamics Ltd", "PACKET-DYNAMICS" }, { 0x0003BD, "OmniCluster Technologies, Inc.", "OMNICLUSTER-TECHNOLOGIES" }, { 0x0003B8, "NetKit Solutions, LLC", "NETKIT-SOLUTIONS-LLC" }, { 0x0003B6, "QSI Corporation", "QSI" }, { 0x0003A6, "Traxit Technology, Inc.", "TRAXIT" }, { 0x0003AB, "Bridge Information Systems", "BRIDGE-INFORMATION" }, { 0x0003A3, "MAVIX, Ltd.", "MAVIX" }, { 0x00039F, "Cisco Systems, Inc", "CISCO" }, { 0x00039A, "SiConnect", "SICONNECT" }, { 0x00038C, "Total Impact", "TOTAL-IMPACT" }, { 0x000384, "AETA", "AETA" }, { 0x000387, "Blaze Network Products", "BLAZE-NETWORK-PRODUCTS" }, { 0x000306, "Fusion In Tech Co., Ltd.", "FUSION-IN-TECH" }, { 0x000303, "JAMA Electronics Co., Ltd.", "JAMA-ELECTRONICS" }, { 0x0002FF, "Handan BroadInfoCom", "HANDAN-BROADINFOCOM" }, { 0x0002F3, "Media Serve Co., Ltd.", "MEDIA-SERVE" }, { 0x0002FA, "DX Antenna Co., Ltd.", "DX-ANTENNA" }, { 0x0002ED, "DXO Telecom Co., Ltd.", "DXO-TELECOM" }, { 0x0002E5, "Timeware Ltd.", "TIMEWARE" }, { 0x0002E8, "E.D.&A.", "E-D-A" }, { 0x0002DC, "Fujitsu General Limited", "FUJITSU-GENERAL" }, { 0x0002E1, "Integrated Network Corporation", "INTEGRATED-NETWORK" }, { 0x0002D5, "ACR", "ACR" }, { 0x0002CE, "FoxJet, Inc.", "FOXJET" }, { 0x00B0DB, "Nextcell, Inc.", "NEXTCELL" }, { 0x00B08E, "Cisco Systems, Inc", "CISCO" }, { 0x00B01C, "Westport Technologies", "WESTPORT-TECHNOLOGIES" }, { 0x00B02D, "ViaGate Technologies, Inc.", "VIAGATE-TECHNOLOGIES" }, { 0x00B03B, "HiQ Networks", "HIQ-NETWORKS" }, { 0x0030A9, "Netiverse, Inc.", "NETIVERSE" }, { 0x00B0F0, "CALY NETWORKS", "CALY-NETWORKS" }, { 0x00B086, "LocSoft Limited", "LOCSOFT" }, { 0x0030C4, "Canon Imaging Systems Inc.", "CANON-IMAGING" }, { 0x00309D, "Nimble Microsystems, Inc.", "NIMBLE-MICROSYSTEMS" }, { 0x003037, "Packard Bell Nec Services", "PACKARD-BELL-NEC-SERVICES" }, { 0x00302E, "Hoft & Wessel AG", "HOFT-WESSEL" }, { 0x00301B, "SHUTTLE, INC.", "SHUTTLE" }, { 0x003028, "FASE Saldatura srl", "FASE-SALDATURA-SRL" }, { 0x0030FB, "AZS Technology AG", "AZS" }, { 0x0001DA, "WINCOMM Corporation", "WINCOMM" }, { 0x0001DD, "Avail Networks", "AVAIL-NETWORKS" }, { 0x0001CE, "Custom Micro Products, Ltd.", "CUSTOM-MICRO-PRODUCTS" }, { 0x0001CA, "Geocast Network Systems, Inc.", "GEOCAST-NETWORK" }, { 0x0001B8, "Netsensity, Inc.", "NETSENSITY" }, { 0x0001BD, "Peterson Electro-Musical Products, Inc.", "PETERSON-ELECTRO-MUSICAL-PRODUCTS" }, { 0x0001B4, "Wayport, Inc.", "WAYPORT" }, { 0x0001C3, "Acromag, Inc.", "ACROMAG" }, { 0x0001BF, "Teleforce Co., Ltd.", "TELEFORCE" }, { 0x0001AD, "Coach Master International d.b.a. CMI Worldwide, Inc.", "COACH-MASTER-D-B-A-CMI-WORLDWIDE" }, { 0x00017E, "ADTEK System Science Co., Ltd.", "ADTEK-SYSTEM-SCIENCE" }, { 0x00018A, "ROI COMPUTER AG", "ROI" }, { 0x000119, "RTUnet (Australia)", "RTUNET-AUSTRALIA" }, { 0x000125, "YAESU MUSEN CO., LTD.", "YAESU-MUSEN" }, { 0x000121, "Watchguard Technologies, Inc.", "WATCHGUARD-TECHNOLOGIES" }, { 0x000128, "EnjoyWeb, Inc.", "ENJOYWEB" }, { 0x000106, "Tews Datentechnik GmbH", "TEWS-DATENTECHNIK" }, { 0x000112, "Shark Multimedia Inc.", "SHARK-MULTIMEDIA" }, { 0x000102, "3COM CORPORATION", "3COM" }, { 0x000115, "EXTRATECH CORPORATION", "EXTRATECH" }, { 0x000109, "Nagano Japan Radio Co., Ltd.", "NAGANO-JAPAN-RADIO" }, { 0x081443, "UNIBRAIN S.A.", "UNIBRAIN" }, { 0x00B0F5, "NetWorth Technologies, Inc.", "NETWORTH-TECHNOLOGIES" }, { 0x00B019, "UTC CCS", "UTC-CCS" }, { 0x00B02A, "ORSYS GmbH", "ORSYS" }, { 0x00B0AE, "Symmetricom", "SYMMETRICOM" }, { 0x000181, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00018D, "AudeSi Technologies", "AUDESI-TECHNOLOGIES" }, { 0x00019A, "LEUNIG GmbH", "LEUNIG" }, { 0x000193, "Hanbyul Telecom Co., Ltd.", "HANBYUL-TELECOM" }, { 0x0001A2, "Logical Co., Ltd.", "LOGICAL" }, { 0x000196, "Cisco Systems, Inc", "CISCO" }, { 0x0001A6, "Scientific-Atlanta Arcodan A/S", "SCIENTIFIC-ATLANTA-ARCODAN-A/S" }, { 0x000172, "TechnoLand Co., LTD.", "TECHNOLAND" }, { 0x00303F, "TurboComm Tech Inc.", "TURBOCOMM-TECH" }, { 0x003073, "International Microsystems, In", "MICROSYSTEMS-IN" }, { 0x00014D, "Shin Kin Enterprises Co., Ltd", "SHIN-KIN-ENTERPRISES" }, { 0x00016B, "LightChip, Inc.", "LIGHTCHIP" }, { 0x000167, "HIOKI E.E. CORPORATION", "HIOKI-E-E" }, { 0x000215, "Cotas Computer Technology A/B", "COTAS-A/B" }, { 0x000211, "Nature Worldwide Technology Corp.", "NATURE-WORLDWIDE" }, { 0x000209, "Shenzhen SED Information Technology Co., Ltd.", "SHENZHEN-SED-INFORMATION" }, { 0x000205, "Hitachi Denshi, Ltd.", "HITACHI-DENSHI" }, { 0x000202, "Amino Communications, Ltd.", "AMINO-COMMUNICATION" }, { 0x0001F6, "Association of Musical Electronics Industry", "ASSOCIATION-OF-MUSICAL-ELECTRONICS-INDUSTRY" }, { 0x0001ED, "SETA Corp.", "SETA" }, { 0x0001E9, "Litton Marine Systems B.V.", "LITTON-MARINE" }, { 0x0002C6, "Data Track Technology PLC", "DATA-TRACK-PLC" }, { 0x0002C2, "Net Vision Telecom", "NET-VISION-TELECOM" }, { 0x0002B9, "Cisco Systems, Inc", "CISCO" }, { 0x0002B4, "DAPHNE", "DAPHNE" }, { 0x0002AD, "HOYA Corporation", "HOYA" }, { 0x0002A6, "Effinet Systems Co., Ltd.", "EFFINET" }, { 0x0002A1, "World Wide Packets", "WORLD-WIDE-PACKETS" }, { 0x00029B, "Kreatel Communications AB", "KREATEL-COMMUNICATION-AB" }, { 0x00029E, "Information Equipment Co., Ltd.", "INFORMATION-EQUIPMENT" }, { 0x000296, "Lectron Co,. Ltd.", "LECTRON" }, { 0x00028F, "Globetek, Inc.", "GLOBETEK" }, { 0x000289, "DNE Technologies", "DNE-TECHNOLOGIES" }, { 0x000285, "Riverstone Networks", "RIVERSTONE-NETWORKS" }, { 0x00027E, "Cisco Systems, Inc", "CISCO" }, { 0x000280, "Mu Net, Inc.", "MU-NET" }, { 0x000279, "Control Applications, Ltd.", "CONTROL-APPLICATIONS" }, { 0x000272, "CC&C Technologies, Inc.", "CC-C-TECHNOLOGIES" }, { 0x00026B, "BCM Computers Co., Ltd.", "BCM-COMPUTERS" }, { 0x00026D, "Adept Telecom", "ADEPT-TELECOM" }, { 0x000262, "Soyo Group Soyo Com Tech Co., Ltd", "SOYO-GROUP-SOYO-COM-TECH" }, { 0x000260, "Accordion Networks, Inc.", "ACCORDION-NETWORKS" }, { 0x00025B, "Cambridge Silicon Radio", "CAMBRIDGE-SILICON-RADIO" }, { 0x000087, "HITACHI, LTD.", "HITACHI" }, { 0x000252, "Carrier Corporation", "CARRIER" }, { 0x00024B, "Cisco Systems, Inc", "CISCO" }, { 0x000246, "All-Win Tech Co., Ltd.", "ALL-WIN-TECH" }, { 0x00017A, "Chengdu Maipu Electric Industrial Co., Ltd.", "CHENGDU-MAIPU-ELECTRIC-INDUSTRIAL" }, { 0x000235, "Paragon Networks International", "PARAGON-NETWORKS" }, { 0x000238, "Serome Technology, Inc.", "SEROME" }, { 0x000230, "Intersoft Electronics", "INTERSOFT-ELECTRONICS" }, { 0x000229, "Adtec Corporation", "ADTEC" }, { 0x000225, "One Stop Systems", "ONE-STOP" }, { 0x00021C, "Network Elements, Inc.", "NETWORK-ELEMENTS" }, { 0x000221, "DSP Application, Ltd.", "DSP-APPLICATION" }, { 0x00016E, "Conklin Corporation", "CONKLIN" }, { 0x00015B, "ITALTEL S.p.A/RF-UP-I", "ITALTEL-S-P-A/RF-UP-I" }, { 0x000154, "G3M Corporation", "G3M" }, { 0x000150, "GILAT COMMUNICATIONS, LTD.", "GILAT-COMMUNICATION" }, { 0x00012E, "PC Partner Ltd.", "PC-PARTNER" }, { 0x00013A, "SHELCAD COMMUNICATIONS, LTD.", "SHELCAD-COMMUNICATION" }, { 0x000141, "CABLE PRINT", "CABLE-PRINT" }, { 0x000131, "Bosch Security Systems, Inc.", "BOSCH-SECURITY" }, { 0x00013D, "RiscStation Ltd.", "RISCSTATION" }, { 0x000149, "T.D.T. Transfer Data Test GmbH", "T-D-T-TRANSFER-DATA-TEST" }, { 0x00D047, "XN TECHNOLOGIES", "XN-TECHNOLOGIES" }, { 0x00D018, "QWES. COM, INC.", "QWES-COM" }, { 0x00D048, "ECTON, INC.", "ECTON" }, { 0x00D028, "Harmonic, Inc", "HARMONIC" }, { 0x00D02F, "VLSI TECHNOLOGY INC.", "VLSI" }, { 0x00D025, "XROSSTECH, INC.", "XROSSTECH" }, { 0x00D085, "OTIS ELEVATOR COMPANY", "OTIS-ELEVATOR-COMPANY" }, { 0x00D077, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x00D093, "TQ - COMPONENTS GMBH", "TQ---COMPONENTS" }, { 0x00D013, "PRIMEX AEROSPACE COMPANY", "PRIMEX-AEROSPACE-COMPANY" }, { 0x00D056, "SOMAT CORPORATION", "SOMAT" }, { 0x00D017, "SYNTECH INFORMATION CO., LTD.", "SYNTECH-INFORMATION" }, { 0x00D036, "TECHNOLOGY ATLANTA CORP.", "ATLANTA" }, { 0x00D0D6, "AETHRA TELECOMUNICAZIONI", "AETHRA-TELECOMUNICAZIONI" }, { 0x003078, "Cisco Systems, Inc", "CISCO" }, { 0x003003, "Phasys Ltd.", "PHASYS" }, { 0x0030D5, "DResearch GmbH", "DRESEARCH" }, { 0x0030CE, "Zaffire", "ZAFFIRE" }, { 0x003095, "Procomp Informatics, Ltd.", "PROCOMP-INFORMATICS" }, { 0x003055, "Renesas Technology America, Inc.", "RENESAS-AMERICA" }, { 0x0030B0, "Convergenet Technologies", "CONVERGENET-TECHNOLOGIES" }, { 0x0030CC, "Tenor Networks, Inc.", "TENOR-NETWORKS" }, { 0x003013, "NEC Corporation", "NEC" }, { 0x003061, "MobyTEL", "MOBYTEL" }, { 0x00D0AB, "DELTAKABEL TELECOM CV", "DELTAKABEL-TELECOM-CV" }, { 0x00D0A8, "NETWORK ENGINES, INC.", "NETWORK-ENGINES" }, { 0x00D01C, "SBS TECHNOLOGIES,", "SBS-TECHNOLOGIES" }, { 0x00D0C0, "Cisco Systems, Inc", "CISCO" }, { 0x00D051, "O2 MICRO, INC.", "O2-MICRO" }, { 0x00D06D, "ACRISON, INC.", "ACRISON" }, { 0x0050A1, "CARLO GAVAZZI, INC.", "CARLO-GAVAZZI" }, { 0x00D06C, "SHAREWAVE, INC.", "SHAREWAVE" }, { 0x00D03A, "ZONEWORX, INC.", "ZONEWORX" }, { 0x0050C1, "GEMFLEX NETWORKS, LTD.", "GEMFLEX-NETWORKS" }, { 0x0050FB, "VSK ELECTRONICS", "VSK-ELECTRONICS" }, { 0x005033, "MAYAN NETWORKS", "MAYAN-NETWORKS" }, { 0x0030A0, "TYCO SUBMARINE SYSTEMS, LTD.", "TYCO-SUBMARINE" }, { 0x0030CB, "OMNI FLOW COMPUTERS, INC.", "OMNI-FLOW-COMPUTERS" }, { 0x00306B, "CMOS SYSTEMS, INC.", "CMOS" }, { 0x003068, "CYBERNETICS TECH. CO., LTD.", "CYBERNETICS-TECH" }, { 0x0030E3, "SEDONA NETWORKS CORP.", "SEDONA-NETWORKS" }, { 0x00D007, "MIC ASSOCIATES, INC.", "MIC-ASSOCIATES" }, { 0x00D07F, "STRATEGY & TECHNOLOGY, LIMITED", "STRATEGY" }, { 0x003085, "Cisco Systems, Inc", "CISCO" }, { 0x003026, "HeiTel Digital Video GmbH", "HEITEL-DIGITAL-VIDEO" }, { 0x0030A6, "VIANET TECHNOLOGIES, LTD.", "VIANET-TECHNOLOGIES" }, { 0x003047, "NISSEI ELECTRIC CO., LTD.", "NISSEI-ELECTRIC" }, { 0x00D0FC, "GRANITE MICROSYSTEMS", "GRANITE-MICROSYSTEMS" }, { 0x00D042, "MAHLO GMBH & CO. UG", "MAHLO-UG" }, { 0x00D046, "DOLBY LABORATORIES, INC.", "DOLBY-LABORATORIES" }, { 0x00D0BA, "Cisco Systems, Inc", "CISCO" }, { 0x00D0BC, "Cisco Systems, Inc", "CISCO" }, { 0x00D0D8, "3Com Corporation", "3COM" }, { 0x00D06B, "SR TELECOM INC.", "SR-TELECOM" }, { 0x0030AA, "AXUS MICROSYSTEMS, INC.", "AXUS-MICROSYSTEMS" }, { 0x003043, "IDREAM TECHNOLOGIES, PTE. LTD.", "IDREAM-TECHNOLOGIES-PTE" }, { 0x003010, "VISIONETICS INTERNATIONAL", "VISIONETICS" }, { 0x003096, "Cisco Systems, Inc", "CISCO" }, { 0x003084, "ALLIED TELESYN INTERNAIONAL", "ALLIED-TELESYN" }, { 0x0030CF, "TWO TECHNOLOGIES, INC.", "TWO-TECHNOLOGIES" }, { 0x00D0E3, "ELE-CHEM ENGINEERING CO., LTD.", "ELE-CHEM-ENGINEERING" }, { 0x00D0ED, "XIOX", "XIOX" }, { 0x00D0C2, "BALTHAZAR TECHNOLOGY AB", "BALTHAZAR-AB" }, { 0x00D0FB, "TEK MICROSYSTEMS, INCORPORATED", "TEK-MICROSYSTEMS-INCORPORATED" }, { 0x00D082, "IOWAVE INC.", "IOWAVE" }, { 0x00D0AD, "TL INDUSTRIES", "TL-INDUSTRIES" }, { 0x00D0DB, "MCQUAY INTERNATIONAL", "MCQUAY" }, { 0x00D06A, "LINKUP SYSTEMS CORPORATION", "LINKUP" }, { 0x00D065, "TOKO ELECTRIC", "TOKO-ELECTRIC" }, { 0x00D08F, "ARDENT TECHNOLOGIES, INC.", "ARDENT-TECHNOLOGIES" }, { 0x00D0E7, "VCON TELECOMMUNICATION LTD.", "VCON-TELECOMMUNICATION" }, { 0x00D087, "MICROFIRST INC.", "MICROFIRST" }, { 0x00D008, "MACTELL CORPORATION", "MACTELL" }, { 0x003005, "Fujitsu Siemens Computers", "FUJITSU-SIEMENS-COMPUTERS" }, { 0x00304E, "BUSTEC PRODUCTION LTD.", "BUSTEC-PRODUCTION" }, { 0x0030E0, "OXFORD SEMICONDUCTOR LTD.", "OXFORD-SEMICONDUCTOR" }, { 0x0030A1, "WEBGATE Inc.", "WEBGATE" }, { 0x00303D, "IVA CORPORATION", "IVA" }, { 0x0030C3, "FLUECKIGER ELEKTRONIK AG", "FLUECKIGER-ELEKTRONIK" }, { 0x009047, "GIGA FAST E. LTD.", "GIGA-FAST-E" }, { 0x0090CB, "Wireless OnLine, Inc.", "WIRELESS-ONLINE" }, { 0x00903F, "AZTEC RADIOMEDIA", "AZTEC-RADIOMEDIA" }, { 0x001043, "A2 CORPORATION", "A2" }, { 0x00108D, "Johnson Controls, Inc.", "JOHNSON-CONTROLS" }, { 0x00108E, "HUGH SYMONS CONCEPT Technologies Ltd.", "HUGH-SYMONS-CONCEPT-TECHNOLOGIES" }, { 0x001052, "METTLER-TOLEDO (ALBSTADT) GMBH", "METTLER-TOLEDO-ALBSTADT" }, { 0x00100E, "MICRO LINEAR COPORATION", "MICRO-LINEAR-COPORATION" }, { 0x0010D7, "ARGOSY RESEARCH INC.", "ARGOSY-RESEARCH" }, { 0x001059, "DIABLO RESEARCH CO. LLC", "DIABLO-RESEARCH-LLC" }, { 0x0010B6, "ENTRATA COMMUNICATIONS CORP.", "ENTRATA-COMMUNICATION" }, { 0x001019, "SIRONA DENTAL SYSTEMS GmbH & Co. KG", "SIRONA-DENTAL" }, { 0x001013, "Kontron America, Inc.", "KONTRON-AMERICA" }, { 0x0090A4, "ALTIGA NETWORKS", "ALTIGA-NETWORKS" }, { 0x00906C, "Sartorius Hamburg GmbH", "SARTORIUS-HAMBURG" }, { 0x0090FC, "NETWORK COMPUTING DEVICES", "NETWORK-COMPUTING-DEVICES" }, { 0x0090A3, "Corecess Inc.", "CORECESS" }, { 0x009022, "IVEX", "IVEX" }, { 0x0090A5, "SPECTRA LOGIC", "SPECTRA-LOGIC" }, { 0x0090BA, "VALID NETWORKS, INC.", "VALID-NETWORKS" }, { 0x0090EE, "PERSONAL COMMUNICATIONS TECHNOLOGIES", "PERSONAL-COMMUNICATION-TECHNOLOGIES" }, { 0x0090CD, "ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A.", "ENT-EMPRESA-NACIONAL-DE-TELECOMMUNICACOES" }, { 0x0090D0, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x009075, "NEC DO BRASIL S.A.", "NEC-DO-BRASIL" }, { 0x00902E, "NAMCO LIMITED", "NAMCO" }, { 0x0090A0, "8X8 INC.", "8X8" }, { 0x00907C, "DIGITALCAST, INC.", "DIGITALCAST" }, { 0x0090DF, "MITSUBISHI CHEMICAL AMERICA, INC.", "MITSUBISHI-CHEMICAL-AMERICA" }, { 0x009023, "ZILOG INC.", "ZILOG" }, { 0x00908A, "BAYLY COMMUNICATIONS, INC.", "BAYLY-COMMUNICATION" }, { 0x009063, "COHERENT COMMUNICATIONS SYSTEMS CORPORATION", "COHERENT-COMMUNICATION" }, { 0x009041, "APPLIED DIGITAL ACCESS", "APPLIED-DIGITAL-ACCESS" }, { 0x0090D8, "WHITECROSS SYSTEMS", "WHITECROSS" }, { 0x009011, "WAVTrace, Inc.", "WAVTRACE" }, { 0x009040, "Siemens Network Convergence LLC", "SIEMENS-NETWORK-CONVERGENCE-LLC" }, { 0x0090C7, "ICOM INC.", "ICOM" }, { 0x009035, "ALPHA TELECOM, INC.", "ALPHA-TELECOM" }, { 0x009087, "ITIS", "ITIS" }, { 0x00906E, "PRAXON, INC.", "PRAXON" }, { 0x009039, "SHASTA NETWORKS", "SHASTA-NETWORKS" }, { 0x00909A, "ONE WORLD SYSTEMS, INC.", "ONE-WORLD" }, { 0x009053, "DAEWOO ELECTRONICS CO., LTD.", "DAEWOO-ELECTRONICS" }, { 0x00909E, "Critical IO, LLC", "CRITICAL-IO-LLC" }, { 0x0090C2, "JK microsystems, Inc.", "JK-MICROSYSTEMS" }, { 0x009091, "DigitalScape, Inc.", "DIGITALSCAPE" }, { 0x0090ED, "CENTRAL SYSTEM RESEARCH CO., LTD.", "CENTRAL-SYSTEM-RESEARCH" }, { 0x00901B, "DIGITAL CONTROLS", "DIGITAL-CONTROLS" }, { 0x00905C, "EDMI", "EDMI" }, { 0x0090D2, "ARTEL VIDEO SYSTEMS", "ARTEL-VIDEO" }, { 0x00508C, "RSI SYSTEMS", "RSI" }, { 0x00502D, "ACCEL, INC.", "ACCEL" }, { 0x0050B8, "INOVA COMPUTERS GMBH & CO. KG", "INOVA-COMPUTERS" }, { 0x00503A, "DATONG ELECTRONICS LTD.", "DATONG-ELECTRONICS" }, { 0x00508E, "OPTIMATION, INC.", "OPTIMATION" }, { 0x0050BB, "CMS TECHNOLOGIES", "CMS-TECHNOLOGIES" }, { 0x005051, "IWATSU ELECTRIC CO., LTD.", "IWATSU-ELECTRIC" }, { 0x0050BE, "FAST MULTIMEDIA AG", "FAST-MULTIMEDIA" }, { 0x0050AD, "CommUnique Wireless Corp.", "COMMUNIQUE-WIRELESS" }, { 0x005003, "Xrite Inc", "XRITE" }, { 0x005023, "PG DESIGN ELECTRONICS, INC.", "PG-DESIGN-ELECTRONICS" }, { 0x005039, "MARINER NETWORKS", "MARINER-NETWORKS" }, { 0x00505A, "NETWORK ALCHEMY, INC.", "NETWORK-ALCHEMY" }, { 0x005071, "AIWA CO., LTD.", "AIWA" }, { 0x009071, "Applied Innovation Inc.", "APPLIED-INNOVATION" }, { 0x009031, "MYSTICOM, LTD.", "MYSTICOM" }, { 0x00901F, "ADTEC PRODUCTIONS, INC.", "ADTEC-PRODUCTIONS" }, { 0x009081, "ALOHA NETWORKS, INC.", "ALOHA-NETWORKS" }, { 0x0090B3, "AGRANAT SYSTEMS", "AGRANAT" }, { 0x00500D, "SATORI ELECTORIC CO., LTD.", "SATORI-ELECTORIC" }, { 0x0050EC, "OLICOM A/S", "OLICOM-A/S" }, { 0x005083, "GILBARCO, INC.", "GILBARCO" }, { 0x0050CF, "VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE", "VANLINK-COMMUNICATION-RESEARCH-INSTITUTE" }, { 0x005008, "TIVA MICROCOMPUTER CORP. (TMC)", "TIVA-MICROCOMPUTER-TMC" }, { 0x005001, "YAMASHITA SYSTEMS CORP.", "YAMASHITA" }, { 0x0050B0, "TECHNOLOGY ATLANTA CORPORATION", "ATLANTA" }, { 0x00504E, "SIERRA MONITOR CORP.", "SIERRA-MONITOR" }, { 0x00504D, "Tokyo Electron Device Limited", "TOKYO-ELECTRON-DEVICE" }, { 0x0050F7, "VENTURE MANUFACTURING (SINGAPORE) LTD.", "VENTURE-MANUFACTURING-SINGAPORE" }, { 0x005029, "1394 PRINTER WORKING GROUP", "1394-PRINTER-WORKING-GROUP" }, { 0x00E08D, "PRESSURE SYSTEMS, INC.", "PRESSURE" }, { 0x00E040, "DeskStation Technology, Inc.", "DESKSTATION" }, { 0x00E0D6, "COMPUTER & COMMUNICATION RESEARCH LAB.", "COMMUNICATION-RESEARCH-LAB" }, { 0x00E07E, "WALT DISNEY IMAGINEERING", "WALT-DISNEY-IMAGINEERING" }, { 0x00E094, "OSAI SRL", "OSAI-SRL" }, { 0x00E032, "MISYS FINANCIAL SYSTEMS, LTD.", "MISYS-FINANCIAL" }, { 0x00E06B, "W&G SPECIAL PRODUCTS", "W-G-SPECIAL-PRODUCTS" }, { 0x00E01C, "Cradlepoint, Inc", "CRADLEPOINT" }, { 0x00E076, "DEVELOPMENT CONCEPTS, INC.", "DEVELOPMENT-CONCEPTS" }, { 0x00E0A7, "IPC INFORMATION SYSTEMS, INC.", "IPC-INFORMATION" }, { 0x00E0A4, "ESAOTE S.p.A.", "ESAOTE-S-P-A" }, { 0x00E080, "CONTROL RESOURCES CORPORATION", "CONTROL-RESOURCES" }, { 0x00E0CC, "HERO SYSTEMS, LTD.", "HERO" }, { 0x00E099, "SAMSON AG", "SAMSON" }, { 0x0010E9, "RAIDTEC LTD.", "RAIDTEC" }, { 0x001003, "IMATRON, INC.", "IMATRON" }, { 0x00105A, "3COM CORPORATION", "3COM" }, { 0x0010A9, "ADHOC TECHNOLOGIES", "ADHOC-TECHNOLOGIES" }, { 0x000400, "LEXMARK INTERNATIONAL, INC.", "LEXMARK" }, { 0x00101A, "PictureTel Corp.", "PICTURETEL" }, { 0x001097, "WinNet Metropolitan Communications Systems, Inc.", "WINNET-METROPOLITAN-COMMUNICATION" }, { 0x00106F, "TRENTON TECHNOLOGY INC.", "TRENTON" }, { 0x0010DA, "Kollmorgen Corp", "KOLLMORGEN" }, { 0x0010DF, "RISE COMPUTER INC.", "RISE" }, { 0x00109E, "AWARE, INC.", "AWARE" }, { 0x001072, "GVN TECHNOLOGIES, INC.", "GVN-TECHNOLOGIES" }, { 0x00E019, "ING. GIORDANO ELETTRONICA", "ING-GIORDANO-ELETTRONICA" }, { 0x00E0D7, "SUNSHINE ELECTRONICS, INC.", "SUNSHINE-ELECTRONICS" }, { 0x00E068, "MERRIMAC SYSTEMS INC.", "MERRIMAC" }, { 0x00E01D, "WebTV NETWORKS, INC.", "WEBTV-NETWORKS" }, { 0x00E01F, "AVIDIA Systems, Inc.", "AVIDIA" }, { 0x00E056, "HOLONTECH CORPORATION", "HOLONTECH" }, { 0x00E0C9, "AutomatedLogic Corporation", "AUTOMATEDLOGIC" }, { 0x00E030, "MELITA INTERNATIONAL CORP.", "MELITA" }, { 0x00E0BA, "BERGHOF AUTOMATIONSTECHNIK GmbH", "BERGHOF-AUTOMATIONSTECHNIK" }, { 0x00E0B2, "TELMAX COMMUNICATIONS CORP.", "TELMAX-COMMUNICATION" }, { 0x00E0EF, "DIONEX", "DIONEX" }, { 0x00E0BD, "INTERFACE SYSTEMS, INC.", "INTERFACE" }, { 0x00E071, "EPIS MICROCOMPUTER", "EPIS-MICROCOMPUTER" }, { 0x00E0A6, "TELOGY NETWORKS, INC.", "TELOGY-NETWORKS" }, { 0x00E026, "Redlake MASD LLC", "REDLAKE-MASD-LLC" }, { 0x00E0B8, "GATEWAY 2000", "GATEWAY-2000" }, { 0x00E088, "LTX-Credence CORPORATION", "LTX-CREDENCE" }, { 0x00E07C, "METTLER-TOLEDO, INC.", "METTLER-TOLEDO" }, { 0x00E08C, "NEOPARADIGM LABS, INC.", "NEOPARADIGM-LABS" }, { 0x00E061, "EdgePoint Networks, Inc.", "EDGEPOINT-NETWORKS" }, { 0x00E06E, "FAR SYSTEMS S.p.A.", "FAR-S-P-A" }, { 0x00E01B, "SPHERE COMMUNICATIONS, INC.", "SPHERE-COMMUNICATION" }, { 0x00E0AE, "XAQTI CORPORATION", "XAQTI" }, { 0x00E0C8, "VIRTUAL ACCESS, LTD.", "VIRTUAL-ACCESS" }, { 0x00101D, "WINBOND ELECTRONICS CORP.", "WINBOND-ELECTRONICS" }, { 0x00105F, "ZODIAC DATA SYSTEMS", "ZODIAC-DATA" }, { 0x0010CB, "FACIT K.K.", "FACIT-K-K" }, { 0x001075, "Segate Technology LLC", "SEGATE-LLC" }, { 0x001058, "ArrowPoint Communications", "ARROWPOINT-COMMUNICATION" }, { 0x0010A8, "RELIANCE COMPUTER CORP.", "RELIANCE" }, { 0x0010AA, "MEDIA4, INC.", "MEDIA4" }, { 0x0010E8, "TELOCITY, INCORPORATED", "TELOCITY-INCORPORATED" }, { 0x001010, "INITIO CORPORATION", "INITIO" }, { 0x00E007, "Avaya ECS Ltd", "AVAYA-ECS" }, { 0x001022, "SatCom Media Corporation", "SATCOM-MEDIA" }, { 0x0010C7, "DATA TRANSMISSION NETWORK", "DATA-TRANSMISSION-NETWORK" }, { 0x001098, "STARNET TECHNOLOGIES, INC.", "STARNET-TECHNOLOGIES" }, { 0x001096, "TRACEWELL SYSTEMS, INC.", "TRACEWELL" }, { 0x001082, "JNA TELECOMMUNICATIONS LIMITED", "JNA-TELECOMMUNICATIONS" }, { 0x001021, "ENCANTO NETWORKS, INC.", "ENCANTO-NETWORKS" }, { 0x0010CE, "VOLAMP, LTD.", "VOLAMP" }, { 0x0010B2, "COACTIVE AESTHETICS", "COACTIVE-AESTHETICS" }, { 0x00109A, "NETLINE", "NETLINE" }, { 0x0010EA, "ADEPT TECHNOLOGY", "ADEPT" }, { 0x0010BD, "THE TELECOMMUNICATION TECHNOLOGY COMMITTEE (TTC)", "THE-TELECOMMUNICATION-COMMITTEE-TTC" }, { 0x006099, "SBE, Inc.", "SBE" }, { 0x0060FD, "NetICs, Inc.", "NETICS" }, { 0x0060B5, "KEBA GmbH", "KEBA" }, { 0x006027, "Superior Modular Products", "SUPERIOR-MODULAR-PRODUCTS" }, { 0x0060C1, "WaveSpan Corporation", "WAVESPAN" }, { 0x006005, "FEEDBACK DATA LTD.", "FEEDBACK-DATA" }, { 0x00607B, "FORE SYSTEMS, INC.", "FORE" }, { 0x00609C, "Perkin-Elmer Incorporated", "PERKIN-ELMER-INCORPORATED" }, { 0x006007, "ACRES GAMING, INC.", "ACRES-GAMING" }, { 0x006035, "DALLAS SEMICONDUCTOR, INC.", "DALLAS-SEMICONDUCTOR" }, { 0x0060F1, "EXP COMPUTER, INC.", "EXP" }, { 0x006040, "NETRO CORP.", "NETRO" }, { 0x006034, "ROBERT BOSCH GmbH", "ROBERT-BOSCH" }, { 0x0060BA, "SAHARA NETWORKS, INC.", "SAHARA-NETWORKS" }, { 0x006096, "T.S. MICROTECH INC.", "T-S-MICROTECH" }, { 0x00603A, "QUICK CONTROLS LTD.", "QUICK-CONTROLS" }, { 0x0060AC, "RESILIENCE CORPORATION", "RESILIENCE" }, { 0x0060EB, "FOURTHTRACK SYSTEMS", "FOURTHTRACK" }, { 0x00606D, "DIGITAL EQUIPMENT CORP.", "DIGITAL-EQUIPMENT" }, { 0x006014, "EDEC CO., LTD.", "EDEC" }, { 0x0060E1, "ORCKIT COMMUNICATIONS LTD.", "ORCKIT-COMMUNICATION" }, { 0x006062, "TELESYNC, INC.", "TELESYNC" }, { 0x006038, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x006095, "ACCU-TIME SYSTEMS, INC.", "ACCU-TIME" }, { 0x00A016, "MICROPOLIS CORP.", "MICROPOLIS" }, { 0x00A01C, "NASCENT NETWORKS CORPORATION", "NASCENT-NETWORKS" }, { 0x00A0FC, "IMAGE SCIENCES, INC.", "IMAGE-SCIENCES" }, { 0x00A0B7, "CORDANT, INC.", "CORDANT" }, { 0x00A037, "Mindray DS USA, Inc.", "MINDRAY-DS-USA" }, { 0x00A04C, "INNOVATIVE SYSTEMS & TECHNOLOGIES, INC.", "INNOVATIVE-TECHNOLOGIES" }, { 0x00A0E9, "ELECTRONIC RETAILING SYSTEMS INTERNATIONAL", "RETAILING" }, { 0x006078, "POWER MEASUREMENT LTD.", "POWER-MEASUREMENT" }, { 0x00600D, "Digital Logic GmbH", "DIGITAL-LOGIC" }, { 0x00608A, "CITADEL COMPUTER", "CITADEL" }, { 0x00A05D, "CS COMPUTER SYSTEME GmbH", "CS-SYSTEME" }, { 0x00A0BD, "I-TECH CORP.", "I-TECH" }, { 0x00A0B9, "EAGLE TECHNOLOGY, INC.", "EAGLE" }, { 0x00A069, "Symmetricom, Inc.", "SYMMETRICOM" }, { 0x00A07A, "ADVANCED PERIPHERALS TECHNOLOGIES, INC.", "ADVANCED-PERIPHERALS-TECHNOLOGIES" }, { 0x00A04E, "VOELKER TECHNOLOGIES, INC.", "VOELKER-TECHNOLOGIES" }, { 0x00A05A, "KOFAX IMAGE PRODUCTS", "KOFAX-IMAGE-PRODUCTS" }, { 0x00A093, "B/E AEROSPACE, Inc.", "B/E-AEROSPACE" }, { 0x00A0BF, "WIRELESS DATA GROUP MOTOROLA", "WIRELESS-DATA-GROUP-MOTOROLA" }, { 0x00609F, "PHAST CORPORATION", "PHAST" }, { 0x006067, "ACER NETXUS INC.", "ACER-NETXUS" }, { 0x00600C, "Eurotech Inc.", "EUROTECH" }, { 0x006025, "ACTIVE IMAGING PLC", "ACTIVE-IMAGING-PLC" }, { 0x006071, "MIDAS LAB, INC.", "MIDAS-LAB" }, { 0x0060A7, "MICROSENS GmbH & CO. KG", "MICROSENS" }, { 0x0060FC, "CONSERVATION THROUGH INNOVATION LTD.", "CONSERVATION-THROUGH-INNOVATION" }, { 0x0060D4, "ELDAT COMMUNICATION LTD.", "ELDAT-COMMUNICATION" }, { 0x006085, "Storage Concepts", "STORAGE-CONCEPTS" }, { 0x006018, "STELLAR ONE CORPORATION", "STELLAR-ONE" }, { 0x00602B, "PEAK AUDIO", "PEAK-AUDIO" }, { 0x00606F, "CLARION CORPORATION OF AMERICA", "CLARION-OF-AMERICA" }, { 0x0060ED, "RICARDO TEST AUTOMATION LTD.", "RICARDO-TEST-AUTOMATION" }, { 0x0060F6, "NEXTEST COMMUNICATIONS PRODUCTS, INC.", "NEXTEST-COMMUNICATION-PRODUCTS" }, { 0x0060DD, "MYRICOM, INC.", "MYRICOM" }, { 0x006092, "MICRO/SYS, INC.", "MICRO/SYS" }, { 0x006080, "MICROTRONIX DATACOM LTD.", "MICROTRONIX-DATACOM" }, { 0x006068, "Dialogic Corporation", "DIALOGIC" }, { 0x0060DB, "NTP ELEKTRONIK A/S", "NTP-ELEKTRONIK-A/S" }, { 0x00A002, "LEEDS & NORTHRUP AUSTRALIA PTY LTD", "LEEDS-NORTHRUP-AUSTRALIA-PTY" }, { 0x00A0E4, "OPTIQUEST", "OPTIQUEST" }, { 0x00A01F, "TRICORD SYSTEMS, INC.", "TRICORD" }, { 0x00A0C0, "DIGITAL LINK CORP.", "DIGITAL-LINK" }, { 0x00A043, "AMERICAN TECHNOLOGY LABS, INC.", "AMERICAN-LABS" }, { 0x00A047, "INTEGRATED FITNESS CORP.", "INTEGRATED-FITNESS" }, { 0x00A07C, "TONYANG NYLON CO., LTD.", "TONYANG-NYLON" }, { 0x00A0EC, "TRANSMITTON LTD.", "TRANSMITTON" }, { 0x00A07E, "AVID TECHNOLOGY, INC.", "AVID" }, { 0x00A035, "CYLINK CORPORATION", "CYLINK" }, { 0x00A028, "CONNER PERIPHERALS", "CONNER-PERIPHERALS" }, { 0x00A0C7, "TADIRAN TELECOMMUNICATIONS", "TADIRAN-TELECOMMUNICATIONS" }, { 0x00E0BE, "GENROCO INTERNATIONAL, INC.", "GENROCO" }, { 0x00E010, "HESS SB-AUTOMATENBAU GmbH", "HESS-SB-AUTOMATENBAU" }, { 0x00E0E9, "DATA LABS, INC.", "DATA-LABS" }, { 0x00E0A0, "WILTRON CO.", "WILTRON" }, { 0x00E024, "GADZOOX NETWORKS", "GADZOOX-NETWORKS" }, { 0x00E017, "EXXACT GmbH", "EXXACT" }, { 0x00603B, "AMTEC spa", "AMTEC-SPA" }, { 0x0020E5, "APEX DATA, INC.", "APEX-DATA" }, { 0x00207D, "ADVANCED COMPUTER APPLICATIONS", "ADVANCED-APPLICATIONS" }, { 0x0020D0, "VERSALYNX CORPORATION", "VERSALYNX" }, { 0x00206C, "EVERGREEN TECHNOLOGY CORP.", "EVERGREEN" }, { 0x002012, "CAMTRONICS MEDICAL SYSTEMS", "CAMTRONICS-MEDICAL" }, { 0x00200B, "OCTAGON SYSTEMS CORP.", "OCTAGON" }, { 0x00209E, "BROWN'S OPERATING SYSTEM SERVICES, LTD.", "BROWN-S-OPERATING-SYSTEM-SERVICES" }, { 0x0020D7, "JAPAN MINICOMPUTER SYSTEMS CO., Ltd.", "JAPAN-MINICOMPUTER" }, { 0x0020FB, "OCTEL COMMUNICATIONS CORP.", "OCTEL-COMMUNICATION" }, { 0x0020B1, "COMTECH RESEARCH INC.", "COMTECH-RESEARCH" }, { 0x002033, "SYNAPSE TECHNOLOGIES, INC.", "SYNAPSE-TECHNOLOGIES" }, { 0x002099, "BON ELECTRIC CO., LTD.", "BON-ELECTRIC" }, { 0x0020AE, "ORNET DATA COMMUNICATION TECH.", "ORNET-DATA-COMMUNICATION-TECH" }, { 0x0020EA, "EFFICIENT NETWORKS, INC.", "EFFICIENT-NETWORKS" }, { 0x0020FF, "SYMMETRICAL TECHNOLOGIES", "SYMMETRICAL-TECHNOLOGIES" }, { 0x00208B, "LAPIS TECHNOLOGIES, INC.", "LAPIS-TECHNOLOGIES" }, { 0x002069, "ISDN SYSTEMS CORPORATION", "ISDN" }, { 0x0020BA, "CENTER FOR HIGH PERFORMANCE", "CENTER-FOR-HIGH-PERFORMANCE" }, { 0x002006, "GARRETT COMMUNICATIONS, INC.", "GARRETT-COMMUNICATION" }, { 0x00A0A2, "DIGICOM S.P.A.", "DIGICOM-S-P-A" }, { 0x00A054, "Private", "PRIVATE" }, { 0x00A030, "CAPTOR NV/SA", "CAPTOR-NV/" }, { 0x00A0B1, "FIRST VIRTUAL CORPORATION", "FIRST-VIRTUAL" }, { 0x0020CB, "PRETEC ELECTRONICS CORP.", "PRETEC-ELECTRONICS" }, { 0x0020AB, "MICRO INDUSTRIES CORP.", "MICRO-INDUSTRIES" }, { 0x00202D, "TAIYO CORPORATION", "TAIYO" }, { 0x00A088, "ESSENTIAL COMMUNICATIONS", "ESSENTIAL-COMMUNICATION" }, { 0x00A0FA, "Marconi Communication GmbH", "MARCONI-COMMUNICATION" }, { 0x00A014, "CSIR", "CSIR" }, { 0x00A064, "KVB/ANALECT", "KVB/ANALECT" }, { 0x00A07F, "GSM-SYNTEL, LTD.", "GSM-SYNTEL" }, { 0x00A03E, "ATM FORUM", "ATM-FORUM" }, { 0x00A098, "NetApp", "NETAPP" }, { 0x00A021, "General Dynamics", "GENERAL-DYNAMICS" }, { 0x00A0A8, "RENEX CORPORATION", "RENEX" }, { 0x002049, "COMTRON, INC.", "COMTRON" }, { 0x002050, "KOREA COMPUTER INC.", "KOREA" }, { 0x00203C, "EUROTIME AB", "EUROTIME-AB" }, { 0x002028, "WEST EGG SYSTEMS, INC.", "WEST-EGG" }, { 0x002014, "GLOBAL VIEW CO., LTD.", "GLOBAL-VIEW" }, { 0x002053, "HUNTSVILLE MICROSYSTEMS, INC.", "HUNTSVILLE-MICROSYSTEMS" }, { 0x002001, "DSP SOLUTIONS, INC.", "DSP-SOLUTIONS" }, { 0x00209C, "PRIMARY ACCESS CORP.", "PRIMARY-ACCESS" }, { 0x0020C5, "EAGLE TECHNOLOGY", "EAGLE" }, { 0x002009, "PACKARD BELL ELEC., INC.", "PACKARD-BELL-ELEC" }, { 0x002095, "RIVA ELECTRONICS", "RIVA-ELECTRONICS" }, { 0x00203F, "JUKI CORPORATION", "JUKI" }, { 0x00C014, "TELEMATICS CALABASAS INT'L,INC", "TELEMATICS-CALABASAS" }, { 0x00C045, "ISOLATION SYSTEMS, LTD.", "ISOLATION" }, { 0x00C000, "LANOPTICS, LTD.", "LANOPTICS" }, { 0x00AA3C, "OLIVETTI TELECOM SPA (OLTECO)", "OLIVETTI-TELECOM-SPA-OLTECO" }, { 0x00C079, "FONSYS CO.,LTD.", "FONSYS" }, { 0x002011, "CANOPUS CO., LTD.", "CANOPUS" }, { 0x00C00B, "NORCONTROL A.S.", "NORCONTROL-A-S" }, { 0x00C0C0, "SHORE MICROSYSTEMS, INC.", "SHORE-MICROSYSTEMS" }, { 0x00C00C, "RELIA TECHNOLGIES", "RELIA-TECHNOLGIES" }, { 0x00A0E7, "CENTRAL DATA CORPORATION", "CENTRAL-DATA" }, { 0x00A068, "BHP LIMITED", "BHP" }, { 0x00A0B3, "ZYKRONIX", "ZYKRONIX" }, { 0x00A06E, "AUSTRON, INC.", "AUSTRON" }, { 0x00A0BB, "HILAN GMBH", "HILAN" }, { 0x00A017, "J B M CORPORATION", "J-B-M" }, { 0x0020D5, "VIPA GMBH", "VIPA" }, { 0x002079, "MIKRON GMBH", "MIKRON" }, { 0x0020FA, "GDE SYSTEMS, INC.", "GDE" }, { 0x002007, "SFA, INC.", "SFA" }, { 0x002062, "SCORPION LOGIC, LTD.", "SCORPION-LOGIC" }, { 0x00200A, "SOURCE-COMM CORP.", "SOURCE-COMM" }, { 0x002000, "LEXMARK INTERNATIONAL, INC.", "LEXMARK" }, { 0x002003, "PIXEL POWER LTD.", "PIXEL-POWER" }, { 0x0020B4, "TERMA ELEKTRONIK AS", "TERMA-ELEKTRONIK-AS" }, { 0x00205B, "Kentrox, LLC", "KENTROX-LLC" }, { 0x002030, "ANALOG & DIGITAL SYSTEMS", "ANALOG-DIGITAL" }, { 0x0020A8, "SAST TECHNOLOGY CORP.", "SAST" }, { 0x002066, "GENERAL MAGIC, INC.", "GENERAL-MAGIC" }, { 0x002036, "BMC SOFTWARE", "BMC-SOFTWARE" }, { 0x0040BE, "BOEING DEFENSE & SPACE", "BOEING-DEFENSE-SPACE" }, { 0x004036, "Zoom Telephonics, Inc", "ZOOM-TELEPHONICS" }, { 0x004046, "UDC RESEARCH LIMITED", "UDC-RESEARCH" }, { 0x00406A, "KENTEK INFORMATION SYSTEMS,INC", "KENTEK-INFORMATION" }, { 0x0040F2, "JANICH & KLASS COMPUTERTECHNIK", "JANICH-KLASS-COMPUTERTECHNIK" }, { 0x004082, "LABORATORY EQUIPMENT CORP.", "LABORATORY-EQUIPMENT" }, { 0x004022, "KLEVER COMPUTERS, INC.", "KLEVER-COMPUTERS" }, { 0x0040A2, "KINGSTAR TECHNOLOGY INC.", "KINGSTAR" }, { 0x0040B4, "NEXTCOM K.K.", "NEXTCOM-K-K" }, { 0x0040D4, "GAGE TALKER CORP.", "GAGE-TALKER" }, { 0x004038, "TALENT ELECTRIC INCORPORATED", "TALENT-ELECTRIC-INCORPORATED" }, { 0x004018, "ADOBE SYSTEMS, INC.", "ADOBE" }, { 0x0040B0, "BYTEX CORPORATION, ENGINEERING", "BYTEX-ENGINEERING" }, { 0x004040, "RING ACCESS, INC.", "RING-ACCESS" }, { 0x0080D7, "Fantum Engineering", "FANTUM-ENGINEERING" }, { 0x0080D9, "EMK Elektronik GmbH & Co. KG", "EMK-ELEKTRONIK" }, { 0x00806A, "ERI (EMPAC RESEARCH INC.)", "ERI-EMPAC-RESEARCH" }, { 0x00403B, "SYNERJET INTERNATIONAL CORP.", "SYNERJET" }, { 0x0040AB, "ROLAND DG CORPORATION", "ROLAND-DG" }, { 0x0040D5, "Sartorius Mechatronics T&H GmbH ", "SARTORIUS-MECHATRONICS-T-H" }, { 0x004027, "SMC MASSACHUSETTS, INC.", "SMC-MASSACHUSETTS" }, { 0x00409C, "TRANSWARE", "TRANSWARE" }, { 0x00405C, "FUTURE SYSTEMS, INC.", "FUTURE" }, { 0x00008C, "Alloy Computer Products (Australia) Pty Ltd", "ALLOY-PRODUCTS-AUSTRALIA-PTY" }, { 0x004000, "PCI COMPONENTES DA AMZONIA LTD", "PCI-COMPONENTES-DA-AMZONIA" }, { 0x0040C5, "MICOM COMMUNICATIONS INC.", "MICOM-COMMUNICATION" }, { 0x004023, "LOGIC CORPORATION", "LOGIC" }, { 0x0040A4, "ROSE ELECTRONICS", "ROSE-ELECTRONICS" }, { 0x004048, "SMD INFORMATICA S.A.", "SMD-INFORMATICA" }, { 0x004025, "MOLECULAR DYNAMICS", "MOLECULAR-DYNAMICS" }, { 0x004010, "SONIC SYSTEMS, INC.", "SONIC" }, { 0x0040CA, "FIRST INTERNAT'L COMPUTER, INC", "FIRST-INTERNAT-L" }, { 0x004050, "IRONICS, INCORPORATED", "IRONICS-INCORPORATED" }, { 0x00402B, "TRIGEM COMPUTER, INC.", "TRIGEM" }, { 0x00C08C, "PERFORMANCE TECHNOLOGIES, INC.", "PERFORMANCE-TECHNOLOGIES" }, { 0x00C02B, "GERLOFF GESELLSCHAFT FUR", "GERLOFF-GESELLSCHAFT-FUR" }, { 0x00C0A7, "SEEL LTD.", "SEEL" }, { 0x0040B3, "ParTech Inc.", "PARTECH" }, { 0x00407D, "EXTENSION TECHNOLOGY CORP.", "EXTENSION" }, { 0x004079, "JUKO MANUFACTURE COMPANY, LTD.", "JUKO-MANUFACTURE-COMPANY" }, { 0x0040D9, "AMERICAN MEGATRENDS INC.", "AMERICAN-MEGATRENDS" }, { 0x004011, "ANDOVER CONTROLS CORPORATION", "ANDOVER-CONTROLS" }, { 0x0040C1, "BIZERBA-WERKE WILHEIM KRAUT", "BIZERBA-WERKE-WILHEIM-KRAUT" }, { 0x00C06B, "OSI PLUS CORPORATION", "OSI-PLUS" }, { 0x00C06A, "ZAHNER-ELEKTRIK GMBH & CO. KG", "ZAHNER-ELEKTRIK" }, { 0x00C097, "ARCHIPEL SA", "ARCHIPEL" }, { 0x00C072, "KNX LTD.", "KNX" }, { 0x00C0EC, "DAUPHIN TECHNOLOGY", "DAUPHIN" }, { 0x00C066, "DOCUPOINT, INC.", "DOCUPOINT" }, { 0x00C028, "JASCO CORPORATION", "JASCO" }, { 0x00C0DC, "EOS TECHNOLOGIES, INC.", "EOS-TECHNOLOGIES" }, { 0x00C02D, "FUJI PHOTO FILM CO., LTD.", "FUJI-PHOTO-FILM" }, { 0x00C0BD, "INEX TECHNOLOGIES, INC.", "INEX-TECHNOLOGIES" }, { 0x00C054, "NETWORK PERIPHERALS, LTD.", "NETWORK-PERIPHERALS" }, { 0x00C0D5, "Werbeagentur Jürgen Siebert", "WERBEAGENTUR-JüRGEN-SIEBERT" }, { 0x00C044, "EMCOM CORPORATION", "EMCOM" }, { 0x00C050, "TOYO DENKI SEIZO K.K.", "TOYO-DENKI-SEIZO-K-K" }, { 0x00408A, "TPS TELEPROCESSING SYS. GMBH", "TPS-TELEPROCESSING-SYS" }, { 0x0040FD, "LXE", "LXE" }, { 0x00403D, "Teradata Corporation", "TERADATA" }, { 0x0040E0, "ATOMWIDE LTD.", "ATOMWIDE" }, { 0x00408C, "AXIS COMMUNICATIONS AB", "AXIS-COMMUNICATION-AB" }, { 0x004068, "EXTENDED SYSTEMS", "EXTENDED" }, { 0x0040BA, "ALLIANT COMPUTER SYSTEMS CORP.", "ALLIANT" }, { 0x004069, "LEMCOM SYSTEMS, INC.", "LEMCOM" }, { 0x0040F8, "SYSTEMHAUS DISCOM", "SYSTEMHAUS-DISCOM" }, { 0x004077, "MAXTON TECHNOLOGY CORPORATION", "MAXTON" }, { 0x0040E7, "ARNOS INSTRUMENTS & COMPUTER", "ARNOS-INSTRUMENTS" }, { 0x0040AC, "SUPER WORKSTATION, INC.", "SUPER-WORKSTATION" }, { 0x00C0AC, "GAMBIT COMPUTER COMMUNICATIONS", "GAMBIT-COMMUNICATION" }, { 0x00C02C, "CENTRUM COMMUNICATIONS, INC.", "CENTRUM-COMMUNICATION" }, { 0x00C0ED, "US ARMY ELECTRONIC", "US-ARMY" }, { 0x00C0D1, "COMTREE TECHNOLOGY CORPORATION", "COMTREE" }, { 0x00C0D2, "SYNTELLECT, INC.", "SYNTELLECT" }, { 0x00C0FB, "ADVANCED TECHNOLOGY LABS", "ADVANCED-LABS" }, { 0x00C092, "MENNEN MEDICAL INC.", "MENNEN-MEDICAL" }, { 0x00C06C, "SVEC COMPUTER CORP.", "SVEC" }, { 0x00C02E, "NETWIZ", "NETWIZ" }, { 0x00C05B, "NETWORKS NORTHWEST, INC.", "NETWORKS-NORTHWEST" }, { 0x00C0BF, "TECHNOLOGY CONCEPTS, LTD.", "CONCEPTS" }, { 0x00C0C9, "ELSAG BAILEY PROCESS", "ELSAG-BAILEY-PROCESS" }, { 0x00809D, "Commscraft Ltd.", "COMMSCRAFT" }, { 0x008017, "PFU LIMITED", "PFU" }, { 0x0080F8, "MIZAR, INC.", "MIZAR" }, { 0x008024, "KALPANA, INC.", "KALPANA" }, { 0x008074, "FISHER CONTROLS", "FISHER-CONTROLS" }, { 0x008021, "Alcatel Canada Inc.", "ALCATEL-CANADA" }, { 0x000055, "COMMISSARIAT A L`ENERGIE ATOM.", "COMMISSARIAT-A-L`ENERGIE-ATOM" }, { 0x000086, "MEGAHERTZ CORPORATION", "MEGAHERTZ" }, { 0x000092, "COGENT DATA TECHNOLOGIES", "COGENT-DATA-TECHNOLOGIES" }, { 0x008068, "YAMATECH SCIENTIFIC LTD.", "YAMATECH-SCIENTIFIC" }, { 0x0080F2, "RAYCOM SYSTEMS INC", "RAYCOM" }, { 0x0080EA, "ADVA Optical Networking Ltd.", "ADVA-OPTICAL-NETWORKING" }, { 0x000067, "SOFT * RITE, INC.", "SOFT-*-RITE" }, { 0x0000E8, "ACCTON TECHNOLOGY CORP.", "ACCTON" }, { 0x0000B2, "TELEVIDEO SYSTEMS, INC.", "TELEVIDEO" }, { 0x0000EE, "NETWORK DESIGNERS, LTD.", "NETWORK-DESIGNERS" }, { 0x000089, "CAYMAN SYSTEMS INC.", "CAYMAN" }, { 0x000021, "SUREMAN COMP. & COMMUN. CORP.", "SUREMAN-COMP-COMMUN" }, { 0x0000CF, "HAYES MICROCOMPUTER PRODUCTS", "HAYES-MICROCOMPUTER-PRODUCTS" }, { 0x0000A4, "ACORN COMPUTERS LIMITED", "ACORN-COMPUTERS" }, { 0x000018, "WEBSTER COMPUTER CORPORATION", "WEBSTER" }, { 0x008033, "EMS Aviation, Inc.", "EMS-AVIATION" }, { 0x008052, "TECHNICALLY ELITE CONCEPTS", "TECHNICALLY-ELITE-CONCEPTS" }, { 0x00804F, "DAIKIN INDUSTRIES, LTD.", "DAIKIN-INDUSTRIES" }, { 0x00806D, "CENTURY SYSTEMS CORP.", "CENTURY" }, { 0x00802D, "XYLOGICS INC", "XYLOGICS" }, { 0x008048, "COMPEX INCORPORATED", "COMPEX-INCORPORATED" }, { 0x008085, "H-THREE SYSTEMS CORPORATION", "H-THREE" }, { 0x008014, "ESPRIT SYSTEMS", "ESPRIT" }, { 0x0080B4, "SOPHIA SYSTEMS", "SOPHIA" }, { 0x00807F, "DY-4 INCORPORATED", "DY-4-INCORPORATED" }, { 0x0000E4, "IN2 GROUPE INTERTECHNIQUE", "IN2-GROUPE-INTERTECHNIQUE" }, { 0x000079, "NETWORTH INCORPORATED", "NETWORTH-INCORPORATED" }, { 0x000075, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x004009, "TACHIBANA TECTRON CO., LTD.", "TACHIBANA-TECTRON" }, { 0x00409E, "CONCURRENT TECHNOLOGIES LTD.", "CONCURRENT-TECHNOLOGIES" }, { 0x008092, "Silex Technology, Inc.", "SILEX" }, { 0x008011, "DIGITAL SYSTEMS INT'L. INC.", "DIGITAL" }, { 0x008044, "SYSTECH COMPUTER CORP.", "SYSTECH" }, { 0x00808A, "SUMMIT MICROSYSTEMS CORP.", "SUMMIT-MICROSYSTEMS" }, { 0x0080E3, "CORAL NETWORK CORPORATION", "CORAL-NETWORK" }, { 0x008072, "MICROPLEX SYSTEMS LTD.", "MICROPLEX" }, { 0x008054, "FRONTIER TECHNOLOGIES CORP.", "FRONTIER-TECHNOLOGIES" }, { 0x0080AE, "HUGHES NETWORK SYSTEMS", "HUGHES-NETWORK" }, { 0x0080AF, "ALLUMER CO., LTD.", "ALLUMER" }, { 0x0080EC, "SUPERCOMPUTING SOLUTIONS, INC.", "SUPERCOMPUTING-SOLUTIONS" }, { 0x0080A4, "LIBERTY ELECTRONICS", "LIBERTY-ELECTRONICS" }, { 0x008073, "DWB ASSOCIATES", "DWB-ASSOCIATES" }, { 0x00802B, "INTEGRATED MARKETING CO", "INTEGRATED-MARKETING" }, { 0x0080BE, "ARIES RESEARCH", "ARIES-RESEARCH" }, { 0x008027, "ADAPTIVE SYSTEMS, INC.", "ADAPTIVE" }, { 0x0080E2, "T.D.I. CO., LTD.", "T-D-I" }, { 0x0040EE, "OPTIMEM", "OPTIMEM" }, { 0x00405E, "NORTH HILLS ISRAEL", "NORTH-HILLS-ISRAEL" }, { 0x004072, "Applied Innovation Inc.", "APPLIED-INNOVATION" }, { 0x004031, "KOKUSAI ELECTRIC CO., LTD", "KOKUSAI-ELECTRIC" }, { 0x00400C, "GENERAL MICRO SYSTEMS, INC.", "GENERAL-MICRO" }, { 0x0040E6, "C.A.E.N.", "C-A-E-N" }, { 0x0040FC, "IBR COMPUTER TECHNIK GMBH", "IBR-TECHNIK" }, { 0x004001, "Zero One Technology Co. Ltd.", "ZERO-ONE" }, { 0x004002, "PERLE SYSTEMS LIMITED", "PERLE" }, { 0x0080DB, "GRAPHON CORPORATION", "GRAPHON" }, { 0x0080B1, "SOFTCOM A/S", "SOFTCOM-A/S" }, { 0x0080D8, "NETWORK PERIPHERALS INC.", "NETWORK-PERIPHERALS" }, { 0x0080AB, "DUKANE NETWORK INTEGRATION", "DUKANE-NETWORK-INTEGRATION" }, { 0x00809B, "JUSTSYSTEM CORPORATION", "JUSTSYSTEM" }, { 0x008089, "TECNETICS (PTY) LTD.", "TECNETICS-PTY" }, { 0x000039, "TOSHIBA CORPORATION", "TOSHIBA" }, { 0x0000CB, "COMPU-SHACK ELECTRONIC GMBH", "COMPU-SHACK" }, { 0x0000D1, "ADAPTEC INCORPORATED", "ADAPTEC-INCORPORATED" }, { 0x0000B6, "MICRO-MATIC RESEARCH", "MICRO-MATIC-RESEARCH" }, { 0x000066, "TALARIS SYSTEMS, INC.", "TALARIS" }, { 0x000014, "NETRONIX", "NETRONIX" }, { 0x000072, "MINIWARE TECHNOLOGY", "MINIWARE" }, { 0x0000AB, "LOGIC MODELING CORPORATION", "LOGIC-MODELING" }, { 0x000029, "IMC NETWORKS CORP.", "IMC-NETWORKS" }, { 0x0080CD, "MICRONICS COMPUTER, INC.", "MICRONICS" }, { 0x008083, "AMDAHL", "AMDAHL" }, { 0x008003, "HYTEC ELECTRONICS LTD.", "HYTEC-ELECTRONICS" }, { 0x00801B, "KODIAK TECHNOLOGY", "KODIAK" }, { 0x0080CC, "MICROWAVE BYPASS SYSTEMS", "MICROWAVE-BYPASS" }, { 0x080079, "THE DROID WORKS", "THE-DROID-WORKS" }, { 0x080077, "TSL COMMUNICATIONS LTD.", "TSL-COMMUNICATION" }, { 0x080071, "MATRA (DSIE)", "MATRA-DSIE" }, { 0x08005F, "SABER TECHNOLOGY CORP.", "SABER" }, { 0x08005C, "FOUR PHASE SYSTEMS", "FOUR-PHASE" }, { 0x08005B, "VTA TECHNOLOGIES INC.", "VTA-TECHNOLOGIES" }, { 0x080058, "SYSTEMS CONCEPTS", "CONCEPTS" }, { 0x080050, "DAISY SYSTEMS CORP.", "DAISY" }, { 0x080052, "INSYSTEC", "INSYSTEC" }, { 0x080047, "SEQUENT COMPUTER SYSTEMS INC.", "SEQUENT" }, { 0x080045, "CONCURRENT COMPUTER CORP.", "CONCURRENT" }, { 0x080044, "DAVID SYSTEMS INC.", "DAVID" }, { 0x080041, "RACAL-MILGO INFORMATION SYS..", "RACAL-MILGO-INFORMATION-SYS" }, { 0x080038, "BULL S.A.S.", "BULL-S" }, { 0x08003C, "SCHLUMBERGER WELL SERVICES", "SCHLUMBERGER-WELL-SERVICES" }, { 0x080034, "FILENET CORPORATION", "FILENET" }, { 0x08002C, "BRITTON LEE INC.", "BRITTON-LEE" }, { 0x0000B9, "MCDONNELL DOUGLAS COMPUTER SYS", "MCDONNELL-DOUGLAS-SYS" }, { 0x00002D, "CHROMATICS INC", "CHROMATICS" }, { 0x00004A, "ADC CODENOLL TECHNOLOGY CORP.", "ADC-CODENOLL" }, { 0x0000C0, "WESTERN DIGITAL CORPORATION", "WESTERN-DIGITAL" }, { 0x000040, "APPLICON, INC.", "APPLICON" }, { 0x00005D, "CS TELECOM", "CS-TELECOM" }, { 0x08008E, "Tandem Computers", "TANDEM-COMPUTERS" }, { 0x080086, "KONICA MINOLTA HOLDINGS, INC.", "KONICA-MINOLTA-HOLDINGS" }, { 0x080083, "Seiko Instruments Inc.", "SEIKO-INSTRUMENTS" }, { 0x080080, "AES DATA INC.", "AES-DATA" }, { 0x080030, "ROYAL MELBOURNE INST OF TECH", "ROYAL-MELBOURNE-INST-OF-TECH" }, { 0x080064, "Sitasys AG", "SITASYS" }, { 0x00DD09, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x08008A, "PerfTech, Inc.", "PERFTECH" }, { 0x00DD04, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x080066, "AGFA CORPORATION", "AGFA" }, { 0x08001A, "TIARA/ 10NET", "TIARA/-10NET" }, { 0x080090, "SONOMA SYSTEMS", "SONOMA" }, { 0x08000B, "UNISYS CORPORATION", "UNISYS" }, { 0x080017, "NATIONAL SEMICONDUCTOR", "NATIONAL-SEMICONDUCTOR" }, { 0x00005E, "ICANN, IANA Department", "ICANN-IANA-DEPARTMENT" }, { 0x0000AF, "Canberra Industries, Inc.", "CANBERRA-INDUSTRIES" }, { 0x0000EC, "MICROPROCESS", "MICROPROCESS" }, { 0x00009E, "MARLI S.A.", "MARLI" }, { 0x000042, "METIER MANAGEMENT SYSTEMS LTD.", "METIER-MANAGEMENT" }, { 0x00008D, "Cryptek Inc.", "CRYPTEK" }, { 0x000065, "Network General Corporation", "NETWORK-GENERAL" }, { 0x00004D, "DCI CORPORATION", "DCI" }, { 0x080024, "10NET COMMUNICATIONS/DCA", "10NET-COMMUNICATION/DCA" }, { 0x08001E, "APOLLO COMPUTER INC.", "APOLLO" }, { 0x08001B, "EMC Corporation", "EMC" }, { 0x00DD0D, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0xAA0002, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x080005, "SYMBOLICS INC.", "SYMBOLICS" }, { 0x000000, "XEROX CORPORATION", "XEROX" }, { 0x0040D6, "LOCAMATION B.V.", "LOCAMATION" }, { 0xAA0003, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x080008, "BOLT BERANEK AND NEWMAN INC.", "BOLT-BERANEK-AND-NEWMAN" }, { 0x08000E, "NCR CORPORATION", "NCR" }, { 0x00006F, "Madge Ltd.", "MADGE" }, { 0x00005A, "SysKonnect GmbH", "SYSKONNECT" }, { 0x000023, "ABB INDUSTRIAL SYSTEMS AB", "ABB-INDUSTRIAL-AB" }, { 0x000045, "FORD AEROSPACE & COMM. CORP.", "FORD-AEROSPACE-COMM" }, { 0x0000BC, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0x0000C3, "HARRIS CORP COMPUTER SYS DIV", "HARRIS-SYS-DIV" }, { 0x000004, "XEROX CORPORATION", "XEROX" }, { 0x000009, "XEROX CORPORATION", "XEROX" }, { 0x00003D, "UNISYS", "UNISYS" }, { 0xF82C18, "2Wire Inc", "2WIRE" }, { 0x00173F, "Belkin International Inc.", "BELKIN" }, { 0x388602, "Flexoptix GmbH", "FLEXOPTIX" }, { 0xF4EB38, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x001E74, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x00604C, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x002691, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xC0D044, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x6C2E85, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xCC33BB, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x681590, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x5464D9, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x00023F, "COMPAL ELECTRONICS, INC.", "COMPAL-ELECTRONICS" }, { 0x383BC8, "2Wire Inc", "2WIRE" }, { 0xDC7FA4, "2Wire Inc", "2WIRE" }, { 0x001288, "2Wire Inc", "2WIRE" }, { 0x001EC7, "2Wire Inc", "2WIRE" }, { 0x28162E, "2Wire Inc", "2WIRE" }, { 0x3CEA4F, "2Wire Inc", "2WIRE" }, { 0x848F69, "Dell Inc.", "DELL" }, { 0x90B11C, "Dell Inc.", "DELL" }, { 0xF8CAB8, "Dell Inc.", "DELL" }, { 0x24B6FD, "Dell Inc.", "DELL" }, { 0x000D56, "Dell Inc.", "DELL" }, { 0x00123F, "Dell Inc.", "DELL" }, { 0x001372, "Dell Inc.", "DELL" }, { 0x74867A, "Dell Inc.", "DELL" }, { 0x3417EB, "Dell Inc.", "DELL" }, { 0xEC8892, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xB07994, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x141AA3, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0xCCC3EA, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x34BB26, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x40786A, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x0019B9, "Dell Inc.", "DELL" }, { 0x002219, "Dell Inc.", "DELL" }, { 0x00B0D0, "Dell Inc.", "DELL" }, { 0x5C260A, "Dell Inc.", "DELL" }, { 0xB083FE, "Dell Inc.", "DELL" }, { 0x141877, "Dell Inc.", "DELL" }, { 0x0024E8, "Dell Inc.", "DELL" }, { 0xA48E0A, "DeLaval International AB", "DELAVAL-AB" }, { 0x00215C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002315, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001500, "Intel Corporate", "INTEL-CORPORATE" }, { 0x104A7D, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA4C494, "Intel Corporate", "INTEL-CORPORATE" }, { 0x902E1C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3CFDFE, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB8BF83, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001DE1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0022FB, "Intel Corporate", "INTEL-CORPORATE" }, { 0x081196, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6036DD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA0369F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x502DA2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4C79BA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4CEB42, "Intel Corporate", "INTEL-CORPORATE" }, { 0x606720, "Intel Corporate", "INTEL-CORPORATE" }, { 0x84A6C8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5891CF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x88532E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0024D7, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC40938, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x00AA02, "Intel Corporation", "INTEL" }, { 0x5CD2E4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x04BD88, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x000B86, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x8896F2, "Valeo Schalter und Sensoren GmbH", "VALEO-SCHALTER-UND-SENSOREN" }, { 0x80A589, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x0CCC26, "Airenetworks", "AIRENETWORKS" }, { 0x4CB0E8, "Beijing RongZhi xinghua technology co., LTD", "BEIJING-RONGZHI-XINGHUA" }, { 0x4C14A3, "TCL Technoly Electronics (Huizhou) Co., Ltd.", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0xF48E38, "Dell Inc.", "DELL" }, { 0xD887D5, "Leadcore Technology CO.,LTD", "LEADCORE" }, { 0x00DA55, "Cisco Systems, Inc", "CISCO" }, { 0x80D21D, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x705A0F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x586356, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0xB046FC, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x08A95A, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x6CADF8, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x54271E, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x008C54, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xF0842F, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x8CB864, "AcSiP Technology Corp.", "ACSIP" }, { 0x0020E0, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0004E3, "Accton Technology Corp", "ACCTON" }, { 0x409558, "Aisino Corporation", "AISINO" }, { 0x00D0C9, "ADVANTECH CO., LTD.", "ADVANTECH" }, { 0x002553, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x00238E, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x001CA2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x0017C2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xD0D412, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x000FA3, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x001D6A, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x0000F4, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 0x70F1A1, "Liteon Technology Corporation", "LITEON" }, { 0x6CFAA7, "AMPAK Technology, Inc.", "AMPAK" }, { 0x0024EF, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x6C0E0D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xB4527D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xE063E5, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x000E07, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001A75, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x0016B8, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001D28, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x001FE4, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x002298, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x24FD52, "Liteon Technology Corporation", "LITEON" }, { 0x2016D8, "Liteon Technology Corporation", "LITEON" }, { 0x9CB70D, "Liteon Technology Corporation", "LITEON" }, { 0x1C659D, "Liteon Technology Corporation", "LITEON" }, { 0x001B9E, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xE0CA94, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xC0D962, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x00150C, "AVM GmbH", "AVM" }, { 0xF40B93, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x68ED43, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x34BB1F, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x489D24, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x000F86, "BlackBerry RTS", "BLACKBERRY-RTS" }, { 0x001333, "BaudTec Corporation", "BAUDTEC" }, { 0x507E5D, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x849CA6, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x1CC63C, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xC02506, "AVM GmbH", "AVM" }, { 0x0896D7, "AVM GmbH", "AVM" }, { 0x4C09D4, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xDC446D, "Allwinner Technology Co., Ltd", "ALLWINNER" }, { 0xBC620E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x78F557, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE02861, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC4473F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x000AF7, "Broadcom", "BROADCOM" }, { 0x000DB6, "Broadcom", "BROADCOM" }, { 0x18C086, "Broadcom", "BROADCOM" }, { 0xC03E0F, "BSkyB Ltd", "BSKYB" }, { 0x0020D4, "Cabletron Systems, Inc.", "CABLETRON" }, { 0x00001D, "Cabletron Systems, Inc.", "CABLETRON" }, { 0x0060BB, "Cabletron Systems, Inc.", "CABLETRON" }, { 0xD0542D, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x001FC7, "Casio Hitachi Mobile Communications Co., Ltd.", "CASIO-HITACHI-MOBILE-COMMUNICATION" }, { 0xACEE9E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC08997, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2827BF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF05B7B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7CF90E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xAC5A14, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0C559, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCD11F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA0B4A5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x80656D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x48137E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE83A12, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C0298, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6C8336, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB8C68E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x74458A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA49A58, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB4EF39, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x14A364, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3CA10D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x206E9C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x183F47, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C715D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C1420, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA80600, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6CF373, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3872C0, "Comtrend Corporation", "COMTREND" }, { 0xF4068D, "devolo AG", "DEVOLO" }, { 0x000BCA, "DATAVAN TC", "DATAVAN-TC" }, { 0x00507F, "DrayTek Corp.", "DRAYTEK" }, { 0x3C8970, "Neosfar", "NEOSFAR" }, { 0xC43655, "Shenzhen Fenglian Technology Co., Ltd.", "SHENZHEN-FENGLIAN" }, { 0x78CB68, "DAEHAP HYPER-TECH", "DAEHAP-HYPER-TECH" }, { 0x001A7F, "GCI Science & Technology Co.,LTD", "GCI-SCIENCE" }, { 0xD04D2C, "Roku, Inc.", "ROKU" }, { 0xE00C7F, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x58BDA3, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0025A0, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002659, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x8C56C5, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xCC9E00, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001656, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00191D, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0019FD, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001EA9, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xA84481, "Nokia Corporation", "NOKIA" }, { 0x8844F6, "Nokia Corporation", "NOKIA" }, { 0xA87B39, "Nokia Corporation", "NOKIA" }, { 0x14C126, "Nokia Corporation", "NOKIA" }, { 0x4C2578, "Nokia Corporation", "NOKIA" }, { 0x001EA4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001262, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00174B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002547, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001DE9, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D3B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0014A7, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001CD6, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xD099D5, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xDC0077, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0060DC, "NEC Magnus Communications,Ltd.", "NEC-MAGNUS-COMMUNICATION" }, { 0xF45C89, "Apple, Inc.", "APPLE" }, { 0x0021FD, "LACROIX TRAFFIC S.A.U", "LACROIX-TRAFFIC-U" }, { 0x4CB44A, "NANOWAVE Technologies Inc.", "NANOWAVE-TECHNOLOGIES" }, { 0x78C3E9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C5C8E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x70884D, "JAPAN RADIO CO., LTD.", "JAPAN-RADIO" }, { 0x4C55CC, "Zentri Pty Ltd", "ZENTRI-PTY" }, { 0xBCEC5D, "Apple, Inc.", "APPLE" }, { 0xDC415F, "Apple, Inc.", "APPLE" }, { 0x30636B, "Apple, Inc.", "APPLE" }, { 0x84683E, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC88722, "Lumenpulse", "LUMENPULSE" }, { 0x30A9DE, "LG Innotek", "LG-INNOTEK" }, { 0xE0CDFD, "Beijing E3Control Technology Co, LTD", "BEIJING-E3CONTROL" }, { 0x208B37, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x08BE77, "Green Electronics", "GREEN-ELECTRONICS" }, { 0x280C28, "Unigen DataStorage Corporation", "UNIGEN-DATASTORAGE" }, { 0x980CA5, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0x1CC035, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0x34543C, "TAKAOKA TOKO CO.,LTD.", "TAKAOKA-TOKO" }, { 0xD49524, "Clover Network, Inc.", "CLOVER-NETWORK" }, { 0x0034DA, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x9046A2, "Tedipay UK Ltd", "TEDIPAY-UK" }, { 0x6479A7, "Phison Electronics Corp. ", "PHISON-ELECTRONICS" }, { 0xC83870, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x288335, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x44783E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x202D07, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0452C7, "Bose Corporation", "BOSE" }, { 0xD4612E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x1C6758, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE85659, "Advanced-Connectek Inc.", "ADVANCED-CONNECTEK" }, { 0x8801F2, "Vitec System Engineering Inc.", "VITEC-SYSTEM-ENGINEERING" }, { 0xFC084A, "FUJITSU LIMITED", "FUJITSU" }, { 0x847BEB, "Dell Inc.", "DELL" }, { 0x689361, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0xA082AC, "Linear DMS Solutions Sdn. Bhd.", "LINEAR-DMS-SOLUTIONS-SDN-BHD" }, { 0x002697, "Alpha Technologies Inc.", "ALPHA-TECHNOLOGIES" }, { 0x4CB8B5, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x1CABC0, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x84E323, "Green Wave Telecommunication SDN BHD", "GREEN-WAVE-TELECOMMUNICATION-SDN-BHD" }, { 0xD897BA, "PEGATRON CORPORATION", "PEGATRON" }, { 0x7071BC, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE06995, "PEGATRON CORPORATION", "PEGATRON" }, { 0x54D9E4, "BRILLIANTTS CO., LTD", "BRILLIANTTS" }, { 0xE4F3F5, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x00089F, "EFM Networks", "EFM-NETWORKS" }, { 0x00185C, "EDSLAB Technologies", "EDSLAB-TECHNOLOGIES" }, { 0x000E2E, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x00020E, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x00115B, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x000795, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0xB8AEED, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0xC03FD5, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x7427EA, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x0000C9, "Emulex Corporation", "EMULEX" }, { 0x001A45, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x00168F, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x083FBC, "zte corporation", "ZTE" }, { 0x042AE2, "Cisco Systems, Inc", "CISCO" }, { 0x1C1B0D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x00104F, "Oracle Corporation ", "ORACLE" }, { 0x000782, "Oracle Corporation ", "ORACLE" }, { 0xE42F56, "OptoMET GmbH", "OPTOMET" }, { 0x00A045, "PHOENIX CONTACT Electronics GmbH", "PHOENIX-CONTACT-ELECTRONICS" }, { 0x00266C, "INVENTEC Corporation", "INVENTEC" }, { 0x001E25, "INTEK DIGITAL", "INTEK-DIGITAL" }, { 0xA0B662, "Acutvista Innovation Co., Ltd.", "ACUTVISTA-INNOVATION" }, { 0x00C0F0, "Kingston Technology Company, Inc.", "KINGSTON-COMPANY" }, { 0x4C8FA5, "Jastec", "JASTEC" }, { 0x000C49, "Dangaard Telecom Denmark A/S", "DANGAARD-TELECOM-DENMARK-A/S" }, { 0xCCE17F, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x44F477, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x5C4527, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xF01C2D, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xF8C001, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x78FE3D, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x54E032, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x3C6104, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xBC7574, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x20A680, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0019E2, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x001F12, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0024DC, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x50C58D, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x000585, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x003146, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x80ACAC, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x50DD4F, "Automation Components, Inc", "AUTOMATION-COMPONENTS" }, { 0x904D4A, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x7C79E8, "PayRange Inc.", "PAYRANGE" }, { 0x540593, "WOORI ELEC Co.,Ltd", "WOORI-ELEC" }, { 0xA067BE, "Sicon srl", "SICON-SRL" }, { 0xC4CAD9, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x74258A, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x70F96D, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x00260F, "Linn Products Ltd", "LINN-PRODUCTS" }, { 0xF845AD, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0x000358, "Hanyang Digitech Co.Ltd", "HANYANG-DIGITECH" }, { 0x000761, "29530", "29530" }, { 0x60512C, "TCT mobile ltd", "TCT-MOBILE" }, { 0x905F2E, "TCT mobile ltd", "TCT-MOBILE" }, { 0x4C0B3A, "TCT mobile ltd", "TCT-MOBILE" }, { 0xC02FF1, "Volta Networks", "VOLTA-NETWORKS" }, { 0x4882F2, "Appel Elektronik GmbH", "APPEL-ELEKTRONIK" }, { 0x0C5101, "Apple, Inc.", "APPLE" }, { 0x086D41, "Apple, Inc.", "APPLE" }, { 0x04D3CF, "Apple, Inc.", "APPLE" }, { 0x30C82A, "WI-BIZ srl", "WI-BIZ-SRL" }, { 0x0062EC, "Cisco Systems, Inc", "CISCO" }, { 0x0C8A87, "AgLogica Holdings, Inc", "AGLOGICA-HOLDINGS" }, { 0x34A2A2, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x20F17C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x34B354, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x749D8F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x346AC2, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC83DFC, "Pioneer DJ Corporation", "PIONEER-DJ" }, { 0x0016FB, "SHENZHEN MTC CO LTD", "SHENZHEN-MTC" }, { 0x381DD9, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x6C9522, "Scalys", "SCALYS" }, { 0x8C59C3, "ADB Italia ", "ADB-ITALIA" }, { 0x60C0BF, "ON Semiconductor", "ON-SEMICONDUCTOR" }, { 0x98398E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x348A7B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC765E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE0A8B8, "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0xB88198, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE4FB8F, "MOBIWIRE MOBILES (NINGBO) CO.,LTD", "MOBIWIRE-MOBILES-NINGBO" }, { 0x78009E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC8AFE3, "Hefei Radio Communication Technology Co., Ltd ", "HEFEI-RADIO-COMMUNICATION" }, { 0x7C3548, "Transcend Information", "TRANSCEND-INFORMATION" }, { 0xE83A97, "Toshiba Corporation", "TOSHIBA" }, { 0x9C8ECD, "Amcrest Technologies", "AMCREST-TECHNOLOGIES" }, { 0x282536, "SHENZHEN HOLATEK CO.,LTD", "SHENZHEN-HOLATEK" }, { 0xFCA89A, "Sunitec Enterprise Co.,Ltd", "SUNITEC" }, { 0xB8F8BE, "BLUECOM", "BLUECOM" }, { 0x6073BC, "zte corporation", "ZTE" }, { 0x90EED9, "UNIVERSAL DE DESARROLLOS ELECTRÓNICOS, SA", "UNIVERSAL-DE-DESARROLLOS-ELECTRÓNICOS" }, { 0x043110, "Inspur Group Co., Ltd.", "INSPUR-GROUP" }, { 0x00215B, "SenseAnywhere", "SENSEANYWHERE" }, { 0xC816BD, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x587E61, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x340AFF, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0xF85A00, "Sanford LP", "SANFORD-LP" }, { 0x5067F0, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xC86C87, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xD8E0B8, "BULAT LLC", "BULAT-LLC" }, { 0x68C44D, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x48FCB6, "LAVA INTERNATIONAL(H.K) LIMITED", "LAVA-H-K" }, { 0xCC3540, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xC42795, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x58238C, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x705A9E, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x80C6AB, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x90A4DE, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x3C970E, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0x30144A, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0xA854B2, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x38BC1A, "MEIZU Technology Co., Ltd.", "MEIZU" }, { 0x0004A3, "Microchip Technology Inc.", "MICROCHIP" }, { 0x982F3C, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x380DD4, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x98FDB4, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x00157D, "POSDATA", "POSDATA" }, { 0xF8E61A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x888322, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84B541, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18DC56, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x001F46, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001F0A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00130A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001E7E, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001C9C, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000CF8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000CF7, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001E1F, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001C17, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00182E, "XStreamHD", "XSTREAMHD" }, { 0x50016B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x58986F, "Revolution Display", "REVOLUTION-DISPLAY" }, { 0x28AC67, "Mach Power, Rappresentanze Internazionali s.r.l.", "MACH-POWER-RAPPRESENTANZE-INTERNAZIONALI-S-R-L" }, { 0xB0B28F, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xDC1A01, "Ecoliv Technology ( Shenzhen ) Ltd.", "ECOLIV-SHENZHEN" }, { 0x7CFE90, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0x0002C9, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0xD05FB8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC4BE84, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78A504, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7C669D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD03972, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE0E5CF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7CEC79, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x74D6EA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017EB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x883314, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x84DD20, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x1C4593, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x5C6B32, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD03761, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0024BA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0022A5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0021BA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001833, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD8952F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x649C8E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF4FC32, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x74DAEA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x04A316, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x98072D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001AB6, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC8A030, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x34B1F7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC4EDBA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA40DBC, "Xiamen Intretech Inc.", "XIAMEN-INTRETECH" }, { 0xEC8EAE, "Nagravision SA", "NAGRAVISION" }, { 0x606405, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x708BCD, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001A21, "Brookhuis Applied Technologies BV", "BROOKHUIS-APPLIED-TECHNOLOGIES" }, { 0x00A00E, "NetScout Systems, Inc.", "NETSCOUT" }, { 0x1C330E, "PernixData", "PERNIXDATA" }, { 0x345760, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x343DC4, "BUFFALO.INC", "BUFFALO" }, { 0x6CEFC6, "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "SHENZHEN-TWOWING-TECHNOLOGIES" }, { 0x002A10, "Cisco Systems, Inc", "CISCO" }, { 0x44D6E1, "Snuza International Pty. Ltd.", "SNUZA-PTY" }, { 0x0015B9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001DF6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xECE09B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x606BBD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0000F0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4844F7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xDC7144, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xA00BBA, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x1C5A3E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF47B5E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC44619, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF0F002, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x889FFA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5CAC4C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x18F46A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x3859F9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xBC8556, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9C2A70, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF82FA8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0CEEE6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0C6076, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90FBA6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00197D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001C26, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9CAD97, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x2C8158, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x142D27, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x843DC6, "Cisco Systems, Inc", "CISCO" }, { 0x407C7D, "Nokia", "NOKIA" }, { 0xBC52B4, "Nokia", "NOKIA" }, { 0xFC2FAA, "Nokia", "NOKIA" }, { 0x903AA0, "Nokia", "NOKIA" }, { 0x702526, "Nokia", "NOKIA" }, { 0x38F7B2, "SEOJUN ELECTRIC", "SEOJUN-ELECTRIC" }, { 0x7802B7, "ShenZhen Ultra Easy Technology CO.,LTD", "SHENZHEN-ULTRA-EASY" }, { 0xF81D78, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x88AD43, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE4186B, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x6C71BD, "EZELINK TELECOM", "EZELINK-TELECOM" }, { 0x842519, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x88DEA9, "Roku, Inc.", "ROKU" }, { 0xFC83C6, "N-Radio Technologies Co., Ltd.", "N-RADIO-TECHNOLOGIES" }, { 0xB4E782, "Vivalnk", "VIVALNK" }, { 0x008701, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFC4203, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C232C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08010F, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xCCA260, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x203CAE, "Apple, Inc.", "APPLE" }, { 0x748D08, "Apple, Inc.", "APPLE" }, { 0x00D78F, "Cisco Systems, Inc", "CISCO" }, { 0xA03BE3, "Apple, Inc.", "APPLE" }, { 0x886B0F, "Bluegiga Technologies OY", "BLUEGIGA-TECHNOLOGIES-OY" }, { 0x98541B, "Intel Corporate", "INTEL-CORPORATE" }, { 0xCC61E5, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x404E36, "HTC Corporation", "HTC" }, { 0x9CB206, "PROCENTEC", "PROCENTEC" }, { 0x1C40E8, "SHENZHEN PROGRESS&WIN TECHNOLOGY CO.,LTD", "SHENZHEN-PROGRESS-WIN" }, { 0xC8D3FF, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x805EC0, "YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.", "YEALINK-XIAMEN-NETWORK" }, { 0x307496, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x708A09, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x149D09, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x008025, "Telit Wireless Solutions GmbH", "TELIT-WIRELESS-SOLUTIONS" }, { 0x0001E1, "Kinpo Electronics, Inc.", "KINPO-ELECTRONICS" }, { 0x006041, "Yokogawa Digital Computer Corporation", "YOKOGAWA-DIGITAL" }, { 0x14A78B, "Zhejiang Dahua Technology Co., Ltd.", "ZHEJIANG-DAHUA" }, { 0xD0608C, "zte corporation", "ZTE" }, { 0x009EC8, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xACF7F3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x102AB3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x584498, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xA086C6, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x7C1DD9, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xC8662C, "Beijing Haitai Fangyuan High Technology Co,.Ltd.", "BEIJING-HAITAI-FANGYUAN-HIGH" }, { 0xCC8CDA, "Shenzhen Wei Da Intelligent Technology Go.,Ltd", "SHENZHEN-WEI-DA-INTELLIGENT-GO" }, { 0xD436DB, "Jiangsu Toppower Automotive Electronics Co., Ltd", "JIANGSU-TOPPOWER-AUTOMOTIVE-ELECTRONICS" }, { 0x64A68F, "Zhongshan Readboy Electronics Co.,Ltd", "ZHONGSHAN-READBOY-ELECTRONICS" }, { 0x58EF68, "Belkin International Inc.", "BELKIN" }, { 0x003048, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x001438, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x50D753, "CONELCOM GmbH", "CONELCOM" }, { 0x4C38D5, "MITAC COMPUTING TECHNOLOGY CORPORATION", "MITAC-COMPUTING" }, { 0x688AF0, "zte corporation", "ZTE" }, { 0x000BA1, "Fujikura Solutions Ltd.", "FUJIKURA-SOLUTIONS" }, { 0xAC587B, "JCT Healthcare", "JCT-HEALTHCARE" }, { 0x30E171, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD490E0, "Wachendorff Automation GmbH & Co KG ", "WACHENDORFF-AUTOMATION" }, { 0x8C3C4A, "NAKAYO Inc", "NAKAYO" }, { 0x98CF53, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0xF4CB52, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x446EE5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2C282D, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0x80414E, "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.", "BBK-EDUCATIONAL-ELECTRONICS" }, { 0x8C7716, "LONGCHEER TELECOMMUNICATION LIMITED", "LONGCHEER-TELECOMMUNICATION" }, { 0x000A08, "Alpine Electronics, Inc.", "ALPINE-ELECTRONICS" }, { 0xA0143D, "PARROT SA", "PARROT" }, { 0x00267E, "PARROT SA", "PARROT" }, { 0x00121C, "PARROT SA", "PARROT" }, { 0xB85510, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0x000EE8, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0x001165, "ZNYX Networks, Inc.", "ZNYX-NETWORKS" }, { 0x0060D5, "AMADA MIYACHI Co., Ltd", "AMADA-MIYACHI" }, { 0x000FDB, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0xD404FF, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xC45444, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x00269E, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x683563, "SHENZHEN LIOWN ELECTRONICS CO.,LTD.", "SHENZHEN-LIOWN-ELECTRONICS" }, { 0x0003B2, "Radware", "RADWARE" }, { 0x2C600C, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x001E68, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x00A09B, "QPSX COMMUNICATIONS, LTD.", "QPSX-COMMUNICATION" }, { 0x00E08B, "QLogic Corporation", "QLOGIC" }, { 0x00080D, "Toshiba", "TOSHIBA" }, { 0x0015B7, "Toshiba", "TOSHIBA" }, { 0x000569, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x0008F1, "Voltaire", "VOLTAIRE" }, { 0x001BDA, "UTStarcom Inc", "UTSTARCOM" }, { 0xFC4DD4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x402CF4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x0010C6, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x00247E, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001639, "Ubiquam Co., Ltd.", "UBIQUAM" }, { 0x183919, "Unicoi Systems", "UNICOI" }, { 0x90A46A, "SISNET CO., LTD", "SISNET" }, { 0x14E7C8, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x280DFC, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x0015C1, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x0019C5, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0xACA213, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x38F8CA, "OWIN Inc.", "OWIN" }, { 0x54D272, "Nuki Home Solutions GmbH", "NUKI-HOME-SOLUTIONS" }, { 0x9CA3A9, "Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd", "GUANGZHOU-JUAN-OPTICAL-AND-ELECTRONICAL-TECH-JOINT-STOCK" }, { 0xD02212, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xF80278, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x74E14A, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x78CA83, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xD0D94F, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x2C265F, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x7C70BC, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x58FCDB, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB01F81, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x9893CC, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x3CCD93, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x583F54, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x001C62, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x002483, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xE417D8, "8BITDO TECHNOLOGY HK LIMITED", "8BITDO-HK" }, { 0x40B0FA, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xA09169, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x286C07, "XIAOMI Electronics,CO.,LTD", "XIAOMI-ELECTRONICS" }, { 0x84D931, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x34FCEF, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x485929, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x505527, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x98D6F7, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xA8922C, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x44DC91, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0x9CD332, "PLC Technology Ltd", "PLC" }, { 0x94D723, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0xA89DD2, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x184A6F, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xA0F3E4, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x002105, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x000772, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xF06BCA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3423BA, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xD022BE, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xD02544, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0xBC20A4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x14F42A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC851F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB85E7B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC462EA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0023D6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002491, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001B98, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x44F459, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34C3AC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94D771, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4C3C16, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9401C2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB43A28, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA8C83A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x849FB5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD0C1B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF008F1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x782079, "ID Tech", "ID-TECH" }, { 0x98234E, "Micromedia AG", "MICROMEDIA" }, { 0xE80036, "Befs co,. ltd", "BEFS" }, { 0x24590B, "White Sky Inc. Limited", "WHITE-SKY" }, { 0x10C60C, "Domino UK Ltd", "DOMINO-UK" }, { 0x3842A6, "Ingenieurbuero Stahlkopf", "INGENIEURBUERO-STAHLKOPF" }, { 0xE866C4, "Diamanti", "DIAMANTI" }, { 0x78471D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3816D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x004A77, "zte corporation", "ZTE" }, { 0xD48890, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002566, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00265F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001628, "Magicard Ltd", "MAGICARD" }, { 0xE4C801, "BLU Products Inc", "BLU-PRODUCTS" }, { 0x00A6CA, "Cisco Systems, Inc", "CISCO" }, { 0x9C7DA3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF02FA7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x883FD3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA04E01, "CENTRAL ENGINEERING co.,ltd.", "CENTRAL-ENGINEERING" }, { 0x245CBF, "NCSE", "NCSE" }, { 0x84CD62, "ShenZhen IDWELL Technology CO.,Ltd", "SHENZHEN-IDWELL" }, { 0xDC9FDB, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0xB0958E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x001A39, "Merten GmbH&CoKG", "MERTEN-COKG" }, { 0x007B18, "SENTRY Co., LTD.", "SENTRY" }, { 0x144D67, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0x34F39A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x20A8B9, "Siemens", "SIEMENS" }, { 0xC81B5C, "BCTech", "BCTECH" }, { 0x3C2AF4, "Brother Industries, LTD.", "BROTHER-INDUSTRIES" }, { 0x20719E, "SF Technology Co.,Ltd", "SF" }, { 0x7C95B1, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x206C8A, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xE49E12, "FREEBOX SAS", "FREEBOX-SAS" }, { 0xD854A2, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xE01C41, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xC8675E, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xD4C8B0, "Prime Electronics & Satellitics Inc.", "PRIME-ELECTRONICS-SATELLITICS" }, { 0x000FC2, "Uniwell Corporation", "UNIWELL" }, { 0xA4E6B1, "Shanghai Joindata Technology Co.,Ltd.", "SHANGHAI-JOINDATA" }, { 0xB4B384, "ShenZhen Figigantic Electronic Co.,Ltd", "SHENZHEN-FIGIGANTIC" }, { 0xD46A6A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA8A5E2, "MSF-Vathauer Antriebstechnik GmbH & Co KG ", "MSF-VATHAUER-ANTRIEBSTECHNIK" }, { 0x00425A, "Cisco Systems, Inc", "CISCO" }, { 0x000B4F, "Verifone", "VERIFONE" }, { 0x007686, "Cisco Systems, Inc", "CISCO" }, { 0x74FF4C, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0xA02C36, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0xF8D027, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0x44D244, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0x9CAED3, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0x341E6B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB47447, "CoreOS", "COREOS" }, { 0xACC1EE, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xCCA219, "SHENZHEN ALONG INVESTMENT CO.,LTD", "SHENZHEN-ALONG-INVESTMENT" }, { 0x94A04E, "Bostex Technology Co., LTD", "BOSTEX" }, { 0x8CA5A1, "Oregano Systems - Design & Consulting GmbH", "OREGANO---DESIGN-CONSULTING" }, { 0x64B0A6, "Apple, Inc.", "APPLE" }, { 0x84FCAC, "Apple, Inc.", "APPLE" }, { 0x6C19C0, "Apple, Inc.", "APPLE" }, { 0x20AB37, "Apple, Inc.", "APPLE" }, { 0x186590, "Apple, Inc.", "APPLE" }, { 0x2C0BE9, "Cisco Systems, Inc", "CISCO" }, { 0x2C6373, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x9CCC83, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x90505A, "unGlue, Inc", "UNGLUE" }, { 0x60D262, "Tzukuri Pty Ltd", "TZUKURI-PTY" }, { 0x34FCB9, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x34049E, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB0E5ED, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC81451, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC486E9, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD8C771, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF0C850, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5425EA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2816AD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x50A4D0, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x00A0C8, "Adtran Inc", "ADTRAN" }, { 0x1CB857, "Becon Technologies Co,.Ltd.", "BECON-TECHNOLOGIES" }, { 0x70918F, "Weber-Stephen Products LLC", "WEBER-STEPHEN-PRODUCTS-LLC" }, { 0x803A0A, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0x002207, "Inteno Broadband Technology AB", "INTENO-BROADBAND-AB" }, { 0x3C7F6F, "Telechips, Inc.", "TELECHIPS" }, { 0x0060D3, "AT&T", "AT-T" }, { 0x800010, "AT&T", "AT-T" }, { 0x08006A, "AT&T", "AT-T" }, { 0x48A380, "Gionee Communication Equipment Co.,Ltd.", "GIONEE-COMMUNICATION-EQUIPMENT" }, { 0x5CBA37, "Microsoft Corporation", "MICROSOFT" }, { 0xC4836F, "Ciena Corporation", "CIENA" }, { 0xC87324, "Sow Cheng Technology Co. Ltd.", "SOW-CHENG" }, { 0x3CF862, "Intel Corporate", "INTEL-CORPORATE" }, { 0x88C3B3, "SOVICO", "SOVICO" }, { 0x54C415, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xE05124, "NXP Semiconductors", "NXP-SEMICONDUCTORS" }, { 0x005016, "Molex Canada Ltd", "MOLEX-CANADA" }, { 0x0005F7, "Analog Devices, Inc.", "ANALOG-DEVICES" }, { 0xA084CB, "SonicSensory,Inc.", "SONICSENSORY" }, { 0x7802F8, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x00238A, "Ciena Corporation", "CIENA" }, { 0x34E70B, "HAN Networks Co., Ltd", "HAN-NETWORKS" }, { 0x903809, "Ericsson AB", "ERICSSON-AB" }, { 0x542B57, "Night Owl SP", "NIGHT-OWL-SP" }, { 0x00111B, "Targa Systems Div L-3 Communications", "TARGA-DIV-L-3-COMMUNICATION" }, { 0xB8224F, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x702084, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF42B48, "Ubiqam", "UBIQAM" }, { 0x68CC6E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00108C, "Fujitsu Services Ltd", "FUJITSU-SERVICES" }, { 0x98D3D2, "MEKRA Lang GmbH & Co. KG", "MEKRA-LANG" }, { 0xF4DC41, "YOUNGZONE CULTURE (SHANGHAI) CORP", "YOUNGZONE-CULTURE-SHANGHAI" }, { 0x40F385, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x9800C1, "GuangZhou CREATOR Technology Co.,Ltd.(CHINA)", "GUANGZHOU-CREATOR-CHINA" }, { 0x3034D2, "Availink, Inc.", "AVAILINK" }, { 0xCCCE1E, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x501E2D, "StreamUnlimited Engineering GmbH", "STREAMUNLIMITED-ENGINEERING" }, { 0x40B034, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xFC0A81, "Extreme Networks", "EXTREME-NETWORKS" }, { 0xC8B5AD, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x88E628, "Shenzhen Kezhonglong Optoelectronic Technology Co.,Ltd", "SHENZHEN-KEZHONGLONG-OPTOELECTRONIC" }, { 0x9CDA3E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3CA067, "Liteon Technology Corporation", "LITEON" }, { 0xD8325A, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x44650D, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x50F5DA, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x6854FD, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x40B4CD, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x2C86D2, "Cisco Systems, Inc", "CISCO" }, { 0xF04F7C, "Private", "PRIVATE" }, { 0x10AE60, "Private", "PRIVATE" }, { 0x802689, "D-Link International", "D-LINK" }, { 0x409F38, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xC4D197, "Ventia Utility Services", "VENTIA-UTILITY-SERVICES" }, { 0x58821D, "H. Schomäcker GmbH", "H-SCHOMäCKER" }, { 0xCCBE59, "Calix Inc.", "CALIX" }, { 0xEC4F82, "Calix Inc.", "CALIX" }, { 0x000631, "Calix Inc.", "CALIX" }, { 0xB8D7AF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x3096FB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0EE10, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA8A198, "TCT mobile ltd", "TCT-MOBILE" }, { 0x107D1A, "Dell Inc.", "DELL" }, { 0xC0D012, "Apple, Inc.", "APPLE" }, { 0xD4DCCD, "Apple, Inc.", "APPLE" }, { 0x484BAA, "Apple, Inc.", "APPLE" }, { 0xF80377, "Apple, Inc.", "APPLE" }, { 0x14BD61, "Apple, Inc.", "APPLE" }, { 0x0827CE, "NAGANO KEIKI CO., LTD.", "NAGANO-KEIKI" }, { 0x00D318, "SPG Controls", "SPG-CONTROLS" }, { 0x2C3124, "Cisco Systems, Inc", "CISCO" }, { 0xF40343, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x00143F, "Hotway Technology Corporation", "HOTWAY" }, { 0xF8BE0D, "A2UICT Co.,Ltd.", "A2UICT" }, { 0x08EA40, "SHENZHEN BILIAN ELECTRONIC CO.,LTD", "SHENZHEN-BILIAN-," }, { 0x00E0DA, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x5CC6E9, "Edifier International", "EDIFIER" }, { 0xE8C1D7, "Philips", "PHILIPS" }, { 0x1868CB, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xF80BCB, "Cisco Systems, Inc", "CISCO" }, { 0x9CC8AE, "Becton, Dickinson and Company", "BECTON-DICKINSON-AND-COMPANY" }, { 0xB0359F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x24EA40, "Helmholz GmbH & Co. KG", "HELMHOLZ" }, { 0x84A9C4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA0F479, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x100501, "PEGATRON CORPORATION", "PEGATRON" }, { 0x046E02, "OpenRTLS Group", "OPENRTLS-GROUP" }, { 0x000FF4, "Guntermann & Drunck GmbH", "GUNTERMANN-DRUNCK" }, { 0x70DB98, "Cisco Systems, Inc", "CISCO" }, { 0xA43D78, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xEC01EE, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xB83765, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x4448C1, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0xFC539E, "Shanghai Wind Technologies Co.,Ltd", "SHANGHAI-WIND-TECHNOLOGIES" }, { 0x9CAF6F, "ITEL MOBILE LIMITED", "ITEL-MOBILE" }, { 0x9C061B, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x907065, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB8FFB3, "MitraStar Technology Corp.", "MITRASTAR" }, { 0xA08E78, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xE0D55E, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xC4576E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x90F1AA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78BDBC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x20F452, "Shanghai IUV Software Development Co. Ltd", "SHANGHAI-IUV-SOFTWARE-DEVELOPMENT" }, { 0xD47AE2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x88D274, "zte corporation", "ZTE" }, { 0x986DC8, "TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION", "TOSHIBA-MITSUBISHI-ELECTRIC-INDUSTRIAL" }, { 0x982DBA, "Fibergate Inc.", "FIBERGATE" }, { 0x0040AA, "Valmet Automation", "VALMET-AUTOMATION" }, { 0x0080C2, "IEEE 802.1 Working Group", "IEEE-802-1-WORKING-GROUP" }, { 0x68A40E, "BSH Hausgeräte GmbH", "BSH-HAUSGERäTE" }, { 0x847933, "profichip GmbH", "PROFICHIP" }, { 0xA0C9A0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x001CC3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x641269, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x287AEE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xFC51A4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x38700C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA41588, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xB81619, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xB077AC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x145BD1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x6CC1D2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF80BBE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xDC4517, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x74F612, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x74E7C6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0025F2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015A8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000E5C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000CE5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0004BD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00E06F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x386BBB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015CF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5C571A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD82522, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x70B14E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x14D4FE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002374, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002641, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0026BA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002180, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0019C0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0014E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0019A6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001700, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x901ACA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE8ED05, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x707630, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x90C792, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x789684, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCC65AD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x986B3D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5CE30E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7823AE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x447F77, "Connected Home", "CONNECTED-HOME" }, { 0x2C7E81, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x009AD2, "Cisco Systems, Inc", "CISCO" }, { 0x84C0EF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7C1C68, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x745427, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0xF40E83, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7C8BCA, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF023B9, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x88B111, "Intel Corporate", "INTEL-CORPORATE" }, { 0x54D751, "Proximus", "PROXIMUS" }, { 0xD8F1F0, "Pepxim International Limited", "PEPXIM" }, { 0x0019F0, "UNIONMAN TECHNOLOGY CO.,LTD", "UNIONMAN" }, { 0x506E92, "Innocent Technology Co., Ltd.", "INNOCENT" }, { 0xCC4B73, "AMPAK Technology, Inc.", "AMPAK" }, { 0x900A1A, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0xCC03D9, "Cisco Meraki", "CISCO-MERAKI" }, { 0x506184, "Avaya Inc", "AVAYA" }, { 0xF81547, "Avaya Inc", "AVAYA" }, { 0xA01290, "Avaya Inc", "AVAYA" }, { 0xB4A95A, "Avaya Inc", "AVAYA" }, { 0xBCADAB, "Avaya Inc", "AVAYA" }, { 0x3C3A73, "Avaya Inc", "AVAYA" }, { 0x6CB227, "Sony Video & Sound Products Inc.", "SONY-VIDEO-SOUND-PRODUCTS" }, { 0x60271C, "VIDEOR E. Hartig GmbH", "VIDEOR-E-HARTIG" }, { 0xC46699, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xFC1A11, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xE0DDC0, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x886AB1, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x18E29F, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x0823B2, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x6091F3, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xBC2F3D, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xC4ABB2, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xF81D90, "Solidwintech", "SOLIDWINTECH" }, { 0xC8DB26, "Logitech", "LOGITECH" }, { 0x4473D6, "Logitech", "LOGITECH" }, { 0x70F35A, "Cisco Systems, Inc", "CISCO" }, { 0xEC42B4, "ADC Corporation", "ADC" }, { 0x10CDB6, "Essential Products, Inc.", "ESSENTIAL-PRODUCTS" }, { 0x08306B, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x4C65A8, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x6CF9D2, "Chengdu Goods for the Road Electronic Technology C", "CHENGDU-GOODS-FOR-THE-ROAD-C" }, { 0x3817E1, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x641666, "Nest Labs Inc.", "NEST-LABS" }, { 0x94147A, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x74D0DC, "Ericsson AB", "ERICSSON-AB" }, { 0x88A3CC, "Amatis Controls", "AMATIS-CONTROLS" }, { 0x8C9F3B, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x404229, "Layer3TV, Inc", "LAYER3TV" }, { 0xB090D4, "Shenzhen Hoin Internet Technology Co., Ltd", "SHENZHEN-HOIN-INTERNET" }, { 0x348F27, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001D2E, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x689234, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x044FAA, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x0025C4, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x38FF36, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x2C5D93, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x543D37, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC4108A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xD463C6, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x00A050, "CYPRESS SEMICONDUCTOR", "CYPRESS-SEMICONDUCTOR" }, { 0xA44CC8, "Dell Inc.", "DELL" }, { 0x54666C, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x103034, "Cara Systems", "CARA" }, { 0x0840F3, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0xFC8B97, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x2CAB25, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0xAC6E1A, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x24A534, "SynTrust Tech International Ltd. ", "SYNTRUST-TECH" }, { 0xF844E3, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0x001F92, "Avigilon Corporation", "AVIGILON" }, { 0x887A31, "Velankani Electronics Pvt. Ltd.", "VELANKANI-ELECTRONICS-PVT" }, { 0x8C0F6F, "PEGATRON CORPORATION", "PEGATRON" }, { 0x283545, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0x0C8FFF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x54B121, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x786256, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA80C63, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5CC307, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x08A8A1, "Cyclotronics Power Concepts, Inc", "CYCLOTRONICS-POWER-CONCEPTS" }, { 0xA82BB5, "Edgecore Networks Corporation", "EDGECORE-NETWORKS" }, { 0x88365F, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0015FF, "Novatel Wireless Solutions, Inc.", "NOVATEL-WIRELESS-SOLUTIONS" }, { 0x788C4D, "Indyme Solutions, LLC", "INDYME-SOLUTIONS-LLC" }, { 0xA8B2DA, "FUJITSU LIMITED", "FUJITSU" }, { 0x0CB937, "Ubee Interactive Co., Limited", "UBEE-INTERACTIVE" }, { 0x2880A2, "Novatel Wireless Solutions, Inc.", "NOVATEL-WIRELESS-SOLUTIONS" }, { 0x0CB459, "Marketech International Corp.", "MARKETECH" }, { 0x84AA9C, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x0C4B54, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xC47154, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x44EA4B, "Actlas Inc.", "ACTLAS" }, { 0x5C6984, "NUVICO", "NUVICO" }, { 0xF86EEE, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE4FB5D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5C546D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x508F4C, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x0027F8, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x50EB1A, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xCC4E24, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x889471, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xD81FCC, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x002067, "Private", "PRIVATE" }, { 0x0060DF, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000533, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00223F, "NETGEAR", "NETGEAR" }, { 0x001B2F, "NETGEAR", "NETGEAR" }, { 0xE091F5, "NETGEAR", "NETGEAR" }, { 0x744401, "NETGEAR", "NETGEAR" }, { 0xE0469A, "NETGEAR", "NETGEAR" }, { 0x08BD43, "NETGEAR", "NETGEAR" }, { 0xC40415, "NETGEAR", "NETGEAR" }, { 0x9CD36D, "NETGEAR", "NETGEAR" }, { 0x20E52A, "NETGEAR", "NETGEAR" }, { 0x4494FC, "NETGEAR", "NETGEAR" }, { 0x008EF2, "NETGEAR", "NETGEAR" }, { 0xB0B98A, "NETGEAR", "NETGEAR" }, { 0x1100AA, "Private", "PRIVATE" }, { 0x1C965A, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0x104E89, "Garmin International", "GARMIN" }, { 0x30053F, "JTI Co.,Ltd.", "JTI" }, { 0x0050B5, "FICHET SECURITE ELECTRONIQUE", "FICHET-SECURITE-ELECTRONIQUE" }, { 0x04209A, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x8CC121, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x20C6EB, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x40CE24, "Cisco Systems, Inc", "CISCO" }, { 0xB0350B, "MOBIWIRE MOBILES (NINGBO) CO.,LTD", "MOBIWIRE-MOBILES-NINGBO" }, { 0x28A6AC, "seca gmbh & co. kg", "SECA" }, { 0x00054F, "Garmin International", "GARMIN" }, { 0xE048D3, "MOBIWIRE MOBILES (NINGBO) CO.,LTD", "MOBIWIRE-MOBILES-NINGBO" }, { 0x24C42F, "Philips Lifeline", "PHILIPS-LIFELINE" }, { 0xB8EE0E, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x78886D, "Apple, Inc.", "APPLE" }, { 0xA85C2C, "Apple, Inc.", "APPLE" }, { 0x00DB70, "Apple, Inc.", "APPLE" }, { 0x386EA2, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x58B42D, "YSTen Technology Co.,Ltd", "YSTEN" }, { 0x181456, "Nokia Corporation", "NOKIA" }, { 0xE4EC10, "Nokia Corporation", "NOKIA" }, { 0x9C4A7B, "Nokia Corporation", "NOKIA" }, { 0xD86162, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x48EC5B, "Nokia", "NOKIA" }, { 0x0009BC, "Utility, Inc", "UTILITY" }, { 0x0016ED, "Utility, Inc", "UTILITY" }, { 0x80615F, "Beijing Sinead Technology Co., Ltd. ", "BEIJING-SINEAD" }, { 0x74F661, "Schneider Electric Fire & Security Oy", "SCHNEIDER-ELECTRIC-FIRE-SECURITY-OY" }, { 0x885DFB, "zte corporation", "ZTE" }, { 0x245FDF, "KYOCERA CORPORATION ", "KYOCERA" }, { 0x608CE6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8CD2E9, "YOKOTE SEIKO CO., LTD.", "YOKOTE-SEIKO" }, { 0x186024, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x706BB9, "Cisco Systems, Inc", "CISCO" }, { 0x74F91A, "Onface", "ONFACE" }, { 0x6CC147, "Xiamen Hanin Electronic Technology Co., Ltd", "XIAMEN-HANIN" }, { 0x8CFEB4, "VSOONTECH ELECTRONICS CO., LIMITED", "VSOONTECH-ELECTRONICS" }, { 0xCCF957, "u-blox AG", "U-BLOX" }, { 0x0076B1, "Somfy-Protect By Myfox SAS", "SOMFY-PROTECT-BY-MYFOX-SAS" }, { 0x74373B, "UNINET Co.,Ltd.", "UNINET" }, { 0x7C6456, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0666D, "Shenzhen Bus-Lan Technology Co., Ltd.", "SHENZHEN-BUS-LAN" }, { 0x448F17, "Samsung Electronics Co., Ltd. ARTIK", "SAMSUNG-ELECTRONICS-ARTIK" }, { 0xB8D94D, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x10FCB6, "mirusystems CO.,LTD", "MIRUSYSTEMS" }, { 0x04D6AA, "SAMSUNG ELECTRO-MECHANICS(THAILAND)", "SAMSUNG-ELECTRO-MECHANICS-THAILAND" }, { 0x08661F, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x0C5842, "DME Micro", "DME-MICRO" }, { 0xA468BC, "Private", "PRIVATE" }, { 0x80C755, "Panasonic Appliances Company", "PANASONIC-APPLIANCES-COMPANY" }, { 0xA0648F, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x04C1B9, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xD467E7, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x34BF90, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xF8C96C, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x48555F, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xD4AD2D, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xD00492, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x809FAB, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x9C88AD, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x5CE3B6, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x48F97C, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x105887, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x04848A, "7INOVA TECHNOLOGY LIMITED", "7INOVA" }, { 0xE81DA8, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x2C3996, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x0054BD, "Swelaser AB", "SWELASER-AB" }, { 0x0057D2, "Cisco Systems, Inc", "CISCO" }, { 0x3C6716, "Lily Robotics", "LILY-ROBOTICS" }, { 0x806AB0, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0xA0F895, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0x0078CD, "Ignition Design Labs", "IGNITION-DESIGN-LABS" }, { 0x28ED6A, "Apple, Inc.", "APPLE" }, { 0x34AB37, "Apple, Inc.", "APPLE" }, { 0x60A37D, "Apple, Inc.", "APPLE" }, { 0x0056CD, "Apple, Inc.", "APPLE" }, { 0x7081EB, "Apple, Inc.", "APPLE" }, { 0x086698, "Apple, Inc.", "APPLE" }, { 0x2CFD37, "Blue Calypso, Inc.", "BLUE-CALYPSO" }, { 0x0C6127, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001B11, "D-Link Corporation", "D-LINK" }, { 0x001E58, "D-Link Corporation", "D-LINK" }, { 0x002191, "D-Link Corporation", "D-LINK" }, { 0x0022B0, "D-Link Corporation", "D-LINK" }, { 0xF07D68, "D-Link Corporation", "D-LINK" }, { 0x78542E, "D-Link International", "D-LINK" }, { 0x3CDD89, "SOMO HOLDINGS & TECH. CO.,LTD.", "SOMO-HOLDINGS-TECH" }, { 0x2C56DC, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xB8AF67, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x188B45, "Cisco Systems, Inc", "CISCO" }, { 0xB0C090, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0x1CA770, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0xC42F90, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xA42BB0, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x4CE676, "BUFFALO.INC", "BUFFALO" }, { 0xB0C745, "BUFFALO.INC", "BUFFALO" }, { 0xCCE1D5, "BUFFALO.INC", "BUFFALO" }, { 0xB8FC9A, "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0x2C4138, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C768A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0018FE, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0019BB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x002264, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x002481, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000D9D, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0014C2, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x788B77, "Standar Telecom", "STANDAR-TELECOM" }, { 0x84ACFB, "Crouzet Automatismes", "CROUZET-AUTOMATISMES" }, { 0x34BA75, "Tembo Systems, Inc.", "TEMBO" }, { 0x9486CD, "SEOUL ELECTRONICS&TELECOM", "SEOUL-ELECTRONICS-TELECOM" }, { 0x94ABDE, "OMX Technology - FZE", "OMX---FZE" }, { 0x000E35, "Intel Corporation", "INTEL" }, { 0x00207B, "Intel Corporation", "INTEL" }, { 0x0013CE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x801934, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB8B81E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x185E0F, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC80E77, "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0x843497, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xECB1D7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x3CA82A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x480FCF, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5820B1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C233A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000EB3, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0004EA, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x00306E, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0060B0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x24BE05, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000423, "Intel Corporation", "INTEL" }, { 0x0008C7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x0010E3, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x00805F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xBCEAFA, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5C8A38, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD89D67, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C44FD, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xF0921C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB4B52F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x902155, "HTC Corporation", "HTC" }, { 0x64A769, "HTC Corporation", "HTC" }, { 0xBCCFCC, "HTC Corporation", "HTC" }, { 0xB0F1A3, "Fengfan (BeiJing) Technology Co., Ltd. ", "FENGFAN-BEIJING" }, { 0x7C7D3D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4482E5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x542758, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0x4CD08A, "HUMAX Co., Ltd.", "HUMAX" }, { 0x20906F, "Shenzhen Tencent Computer System Co., Ltd.", "SHENZHEN-TENCENT-SYSTEM" }, { 0x1C7839, "Shenzhen Tencent Computer System Co., Ltd.", "SHENZHEN-TENCENT-SYSTEM" }, { 0xA4516F, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x246081, "razberi technologies", "RAZBERI-TECHNOLOGIES" }, { 0x8CAB8E, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0x9060F1, "Apple, Inc.", "APPLE" }, { 0xEC26CA, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x2C088C, "HUMAX Co., Ltd.", "HUMAX" }, { 0x40F308, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x5CDAD4, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x000E6D, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xB05B67, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x38F889, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF4DCF9, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x904E2B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0C96BF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9CC172, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x384608, "zte corporation", "ZTE" }, { 0xB4B362, "zte corporation", "ZTE" }, { 0xB075D5, "zte corporation", "ZTE" }, { 0x08181A, "zte corporation", "ZTE" }, { 0x002512, "zte corporation", "ZTE" }, { 0xB0A37E, "Qingdao Haier Telecom Co.,Ltd", "QINGDAO-HAIER-TELECOM-," }, { 0x70A8E3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF84ABF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4CB16C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C1FCC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x486276, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xAC4E91, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE468A3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x80D09B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x581F28, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x8C34FD, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x90671C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x587F66, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xBC25E0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC4072F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0CD6BD, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA49947, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x346BD3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x1C1D67, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x84A8E4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x202BC1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x741BB2, "Apple, Inc.", "APPLE" }, { 0x002586, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF8D111, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF4EC38, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x20DCE6, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x1C6E4C, "Logistic Service & Engineering Co.,Ltd", "LOGISTIC-SERVICE-ENGINEERING" }, { 0x00101F, "Cisco Systems, Inc", "CISCO" }, { 0x001054, "Cisco Systems, Inc", "CISCO" }, { 0xDCEB94, "Cisco Systems, Inc", "CISCO" }, { 0x5C838F, "Cisco Systems, Inc", "CISCO" }, { 0xAC7E8A, "Cisco Systems, Inc", "CISCO" }, { 0x382056, "Cisco Systems, Inc", "CISCO" }, { 0x28CFE9, "Apple, Inc.", "APPLE" }, { 0x00502A, "Cisco Systems, Inc", "CISCO" }, { 0x005014, "Cisco Systems, Inc", "CISCO" }, { 0x0090D9, "Cisco Systems, Inc", "CISCO" }, { 0x009092, "Cisco Systems, Inc", "CISCO" }, { 0x001029, "Cisco Systems, Inc", "CISCO" }, { 0x001007, "Cisco Systems, Inc", "CISCO" }, { 0x00605C, "Cisco Systems, Inc", "CISCO" }, { 0x00E0F7, "Cisco Systems, Inc", "CISCO" }, { 0x00E0B0, "Cisco Systems, Inc", "CISCO" }, { 0x00E0FE, "Cisco Systems, Inc", "CISCO" }, { 0x00E0A3, "Cisco Systems, Inc", "CISCO" }, { 0x00E0F9, "Cisco Systems, Inc", "CISCO" }, { 0x001BD7, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x105172, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9017AC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x94049C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5006AB, "Cisco Systems, Inc", "CISCO" }, { 0x0050E2, "Cisco Systems, Inc", "CISCO" }, { 0x005050, "Cisco Systems, Inc", "CISCO" }, { 0x009021, "Cisco Systems, Inc", "CISCO" }, { 0x0090B1, "Cisco Systems, Inc", "CISCO" }, { 0x00023D, "Cisco Systems, Inc", "CISCO" }, { 0x18E728, "Cisco Systems, Inc", "CISCO" }, { 0x2C3ECF, "Cisco Systems, Inc", "CISCO" }, { 0x1005CA, "Cisco Systems, Inc", "CISCO" }, { 0x1CDEA7, "Cisco Systems, Inc", "CISCO" }, { 0x1C6A7A, "Cisco Systems, Inc", "CISCO" }, { 0xCCD8C1, "Cisco Systems, Inc", "CISCO" }, { 0x7C0ECE, "Cisco Systems, Inc", "CISCO" }, { 0xF09E63, "Cisco Systems, Inc", "CISCO" }, { 0xF07F06, "Cisco Systems, Inc", "CISCO" }, { 0x84802D, "Cisco Systems, Inc", "CISCO" }, { 0xE0899D, "Cisco Systems, Inc", "CISCO" }, { 0xA89D21, "Cisco Systems, Inc", "CISCO" }, { 0xBCF1F2, "Cisco Systems, Inc", "CISCO" }, { 0xC80084, "Cisco Systems, Inc", "CISCO" }, { 0xA0F849, "Cisco Systems, Inc", "CISCO" }, { 0x88908D, "Cisco Systems, Inc", "CISCO" }, { 0xA46C2A, "Cisco Systems, Inc", "CISCO" }, { 0x0021BE, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x7CB21B, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x002643, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x002433, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x745E1C, "PIONEER CORPORATION", "PIONEER" }, { 0x0006F5, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x0006F7, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x000704, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x1C1D86, "Cisco Systems, Inc", "CISCO" }, { 0x001A92, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001D60, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002215, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x20CF30, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xE0CB4E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x1C872C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xC4143C, "Cisco Systems, Inc", "CISCO" }, { 0x2401C7, "Cisco Systems, Inc", "CISCO" }, { 0x04DAD2, "Cisco Systems, Inc", "CISCO" }, { 0xF41FC2, "Cisco Systems, Inc", "CISCO" }, { 0x4C0082, "Cisco Systems, Inc", "CISCO" }, { 0xDCA5F4, "Cisco Systems, Inc", "CISCO" }, { 0x7C95F3, "Cisco Systems, Inc", "CISCO" }, { 0x5017FF, "Cisco Systems, Inc", "CISCO" }, { 0xE8EDF3, "Cisco Systems, Inc", "CISCO" }, { 0x78DA6E, "Cisco Systems, Inc", "CISCO" }, { 0x24E9B3, "Cisco Systems, Inc", "CISCO" }, { 0xE425E7, "Apple, Inc.", "APPLE" }, { 0x080007, "Apple, Inc.", "APPLE" }, { 0x000A95, "Apple, Inc.", "APPLE" }, { 0x002241, "Apple, Inc.", "APPLE" }, { 0x0023DF, "Apple, Inc.", "APPLE" }, { 0x0025BC, "Apple, Inc.", "APPLE" }, { 0x00264A, "Apple, Inc.", "APPLE" }, { 0x0026B0, "Apple, Inc.", "APPLE" }, { 0x041E64, "Apple, Inc.", "APPLE" }, { 0xD49A20, "Apple, Inc.", "APPLE" }, { 0x9027E4, "Apple, Inc.", "APPLE" }, { 0x60334B, "Apple, Inc.", "APPLE" }, { 0xA43135, "Apple, Inc.", "APPLE" }, { 0x9C35EB, "Apple, Inc.", "APPLE" }, { 0x507A55, "Apple, Inc.", "APPLE" }, { 0xA0999B, "Apple, Inc.", "APPLE" }, { 0x24240E, "Apple, Inc.", "APPLE" }, { 0x903C92, "Apple, Inc.", "APPLE" }, { 0x341298, "Apple, Inc.", "APPLE" }, { 0x9C293F, "Apple, Inc.", "APPLE" }, { 0x488AD2, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0xA88E24, "Apple, Inc.", "APPLE" }, { 0xE8802E, "Apple, Inc.", "APPLE" }, { 0x68AE20, "Apple, Inc.", "APPLE" }, { 0xE0B52D, "Apple, Inc.", "APPLE" }, { 0x80BE05, "Apple, Inc.", "APPLE" }, { 0xD8BB2C, "Apple, Inc.", "APPLE" }, { 0xD04F7E, "Apple, Inc.", "APPLE" }, { 0x2C1F23, "Apple, Inc.", "APPLE" }, { 0x549F13, "Apple, Inc.", "APPLE" }, { 0xB8098A, "Apple, Inc.", "APPLE" }, { 0xF0DBE2, "Apple, Inc.", "APPLE" }, { 0x18EE69, "Apple, Inc.", "APPLE" }, { 0x748114, "Apple, Inc.", "APPLE" }, { 0x18F643, "Apple, Inc.", "APPLE" }, { 0xD0A637, "Apple, Inc.", "APPLE" }, { 0xA01828, "Apple, Inc.", "APPLE" }, { 0xD0034B, "Apple, Inc.", "APPLE" }, { 0x5C5948, "Apple, Inc.", "APPLE" }, { 0x78CA39, "Apple, Inc.", "APPLE" }, { 0x18E7F4, "Apple, Inc.", "APPLE" }, { 0xB8FF61, "Apple, Inc.", "APPLE" }, { 0xDC2B61, "Apple, Inc.", "APPLE" }, { 0x1093E9, "Apple, Inc.", "APPLE" }, { 0x442A60, "Apple, Inc.", "APPLE" }, { 0xE0F847, "Apple, Inc.", "APPLE" }, { 0x145A05, "Apple, Inc.", "APPLE" }, { 0x28CFDA, "Apple, Inc.", "APPLE" }, { 0x148FC6, "Apple, Inc.", "APPLE" }, { 0x283737, "Apple, Inc.", "APPLE" }, { 0x045453, "Apple, Inc.", "APPLE" }, { 0xF0CBA1, "Apple, Inc.", "APPLE" }, { 0xC06394, "Apple, Inc.", "APPLE" }, { 0x8C006D, "Apple, Inc.", "APPLE" }, { 0xB09FBA, "Apple, Inc.", "APPLE" }, { 0xDC86D8, "Apple, Inc.", "APPLE" }, { 0x8C2937, "Apple, Inc.", "APPLE" }, { 0xDC9B9C, "Apple, Inc.", "APPLE" }, { 0x98F0AB, "Apple, Inc.", "APPLE" }, { 0xF0DBF8, "Apple, Inc.", "APPLE" }, { 0xACCF5C, "Apple, Inc.", "APPLE" }, { 0x3C15C2, "Apple, Inc.", "APPLE" }, { 0x04489A, "Apple, Inc.", "APPLE" }, { 0xD8CF9C, "Apple, Inc.", "APPLE" }, { 0x30F7C5, "Apple, Inc.", "APPLE" }, { 0x008865, "Apple, Inc.", "APPLE" }, { 0x40B395, "Apple, Inc.", "APPLE" }, { 0x3090AB, "Apple, Inc.", "APPLE" }, { 0x1CE62B, "Apple, Inc.", "APPLE" }, { 0xA0EDCD, "Apple, Inc.", "APPLE" }, { 0xA886DD, "Apple, Inc.", "APPLE" }, { 0x54EAA8, "Apple, Inc.", "APPLE" }, { 0xE4C63D, "Apple, Inc.", "APPLE" }, { 0x843835, "Apple, Inc.", "APPLE" }, { 0x7073CB, "Apple, Inc.", "APPLE" }, { 0x9C207B, "Apple, Inc.", "APPLE" }, { 0x842999, "Apple, Inc.", "APPLE" }, { 0x74E2F5, "Apple, Inc.", "APPLE" }, { 0x20C9D0, "Apple, Inc.", "APPLE" }, { 0x1402EC, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x707938, "Wuxi Zhanrui Electronic Technology Co.,LTD", "WUXI-ZHANRUI" }, { 0x646A74, "AUTH-SERVERS, LLC", "AUTH-SERVERS-LLC" }, { 0x34C9F0, "LM Technologies Ltd", "LM-TECHNOLOGIES" }, { 0xE034E4, "Feit Electric Company, Inc.", "FEIT-ELECTRIC-COMPANY" }, { 0x98E848, "Axiim", "AXIIM" }, { 0xA0F9E0, "VIVATEL COMPANY LIMITED", "VIVATEL-COMPANY" }, { 0xF8C372, "TSUZUKI DENKI", "TSUZUKI-DENKI" }, { 0x908D78, "D-Link International", "D-LINK" }, { 0xA4CC32, "Inficomm Co., Ltd", "INFICOMM" }, { 0x582BDB, "Pax AB", "PAX-AB" }, { 0xD00F6D, "T&W Electronics Company", "T-W-ELECTRONICS-COMPANY" }, { 0x48BF74, "Baicells Technologies Co.,LTD", "BAICELLS-TECHNOLOGIES" }, { 0x38F557, "JOLATA, INC.", "JOLATA" }, { 0x280E8B, "Beijing Spirit Technology Development Co., Ltd.", "BEIJING-SPIRIT-DEVELOPMENT" }, { 0xF44D30, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0xDC9A8E, "Nanjing Cocomm electronics co., LTD", "NANJING-COCOMM-ELECTRONICS" }, { 0xC4EF70, "Home Skinovations", "HOME-SKINOVATIONS" }, { 0xB813E9, "Trace Live Network", "TRACE-LIVE-NETWORK" }, { 0x746F19, "ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD.", "ICARVISIONS-SHENZHEN" }, { 0x7C7176, "Wuxi iData Technology Company Ltd.", "WUXI-IDATA-COMPANY" }, { 0x7C0191, "Apple, Inc.", "APPLE" }, { 0x70480F, "Apple, Inc.", "APPLE" }, { 0xA4B805, "Apple, Inc.", "APPLE" }, { 0x587F57, "Apple, Inc.", "APPLE" }, { 0x80D605, "Apple, Inc.", "APPLE" }, { 0x68A828, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x988744, "Wuxi Hongda Science and Technology Co.,LTD", "WUXI-HONGDA-SCIENCE-AND" }, { 0xC869CD, "Apple, Inc.", "APPLE" }, { 0xBC6C21, "Apple, Inc.", "APPLE" }, { 0x9C8DD3, "Leonton Technologies", "LEONTON-TECHNOLOGIES" }, { 0x246C8A, "YUKAI Engineering", "YUKAI-ENGINEERING" }, { 0xA43831, "RF elements s.r.o.", "RF-ELEMENTS-S-R-O" }, { 0xD0BAE4, "Shanghai MXCHIP Information Technology Co., Ltd.", "SHANGHAI-MXCHIP-INFORMATION" }, { 0xA4DCBE, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x10CC1B, "Liverock technologies,INC", "LIVEROCK-TECHNOLOGIES" }, { 0x48B620, "ROLI Ltd.", "ROLI" }, { 0x20D160, "Private", "PRIVATE" }, { 0x382187, "Midea Group Co., Ltd.", "MIDEA-GROUP" }, { 0x305A3A, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xA87285, "IDT, INC.", "IDT" }, { 0xAC1FD7, "Real Vision Technology Co.,Ltd.", "REAL-VISION" }, { 0xC8A2CE, "Oasis Media Systems LLC", "OASIS-MEDIA-LLC" }, { 0xA4DEC9, "QLove Mobile Intelligence Information Technology (W.H.) Co. Ltd.", "QLOVE-MOBILE-INTELLIGENCE-INFORMATION-W-H" }, { 0xA4A6A9, "Private", "PRIVATE" }, { 0x0469F8, "Apple, Inc.", "APPLE" }, { 0x9C7A03, "Ciena Corporation", "CIENA" }, { 0x380AAB, "Formlabs", "FORMLABS" }, { 0xF41535, "SPON Communication Technology Co.,Ltd", "SPON-COMMUNICATION" }, { 0xE41A2C, "ZPE Systems, Inc.", "ZPE" }, { 0xA815D6, "Shenzhen Meione Technology CO., LTD", "SHENZHEN-MEIONE" }, { 0xD09380, "Ducere Technologies Pvt. Ltd.", "DUCERE-TECHNOLOGIES-PVT" }, { 0x84A788, "Perples", "PERPLES" }, { 0x6889C1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x845B12, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x143EBF, "zte corporation", "ZTE" }, { 0x041E7A, "DSPWorks", "DSPWORKS" }, { 0x38B725, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x4CC681, "Shenzhen Aisat Electronic Co., Ltd.", "SHENZHEN-AISAT" }, { 0x28B9D9, "Radisys Corporation", "RADISYS" }, { 0xE0553D, "Cisco Meraki", "CISCO-MERAKI" }, { 0x0894EF, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xE0319E, "Valve Corporation", "VALVE" }, { 0xE4A32F, "Shanghai Artimen Technology Co., Ltd.", "SHANGHAI-ARTIMEN" }, { 0xD47BB0, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x5045F7, "Liuhe Intelligence Technology Ltd.", "LIUHE-INTELLIGENCE" }, { 0x20F510, "Codex Digital Limited", "CODEX-DIGITAL" }, { 0x949F3E, "Sonos, Inc.", "SONOS" }, { 0x788E33, "Jiangsu SEUIC Technology Co.,Ltd", "JIANGSU-SEUIC" }, { 0xE01AEA, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 0x340CED, "Moduel AB", "MODUEL-AB" }, { 0x507B9D, "LCFC(HeFei) Electronics Technology co., ltd", "LCFC-HEFEI-ELECTRONICS" }, { 0x6C7220, "D-Link International", "D-LINK" }, { 0xF02624, "WAFA TECHNOLOGIES CO., LTD.", "WAFA-TECHNOLOGIES" }, { 0xF8F464, "Rawe Electonic GmbH", "RAWE-ELECTONIC" }, { 0xF4672D, "ShenZhen Topstar Technology Company", "SHENZHEN-TOPSTAR-COMPANY" }, { 0x382B78, "ECO PLUGS ENTERPRISE CO., LTD", "ECO-PLUGS" }, { 0xBCEB5F, "Fujian Beifeng Telecom Technology Co., Ltd.", "FUJIAN-BEIFENG-TELECOM" }, { 0x800B51, "Chengdu XGimi Technology Co.,Ltd", "CHENGDU-XGIMI" }, { 0x00FC8D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x1CC586, "Absolute Acoustics", "ABSOLUTE-ACOUSTICS" }, { 0xE076D0, "AMPAK Technology, Inc.", "AMPAK" }, { 0x24B0A9, "Shanghai Mobiletek Communication Ltd.", "SHANGHAI-MOBILETEK-COMMUNICATION" }, { 0x64167F, "Polycom", "POLYCOM" }, { 0x54E2C8, "Dongguan Aoyuan Electronics Technology Co., Ltd", "DONGGUAN-AOYUAN-ELECTRONICS" }, { 0x20D75A, "Posh Mobile Limited", "POSH-MOBILE" }, { 0x88D37B, "FirmTek, LLC", "FIRMTEK-LLC" }, { 0x10AF78, "Shenzhen ATUE Technology Co., Ltd", "SHENZHEN-ATUE" }, { 0xB0966C, "Lanbowan Technology Ltd.", "LANBOWAN" }, { 0xA408EA, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xD4F9A1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9CB6D0, "Rivet Networks", "RIVET-NETWORKS" }, { 0xD0C0BF, "Actions Microelectronics Co., Ltd", "ACTIONS-MICROELECTRONICS" }, { 0xE04B45, "Hi-P Electronics Pte Ltd", "HI-P-ELECTRONICS-PTE" }, { 0x6C4598, "Antex Electronic Corp.", "ANTEX" }, { 0x94A7B7, "zte corporation", "ZTE" }, { 0x3C8375, "Microsoft Corporation", "MICROSOFT" }, { 0xC8458F, "Wyler AG", "WYLER" }, { 0x149A10, "Microsoft Corporation", "MICROSOFT" }, { 0xFC9AFA, "Motus Global Inc.", "MOTUS-GLOBAL" }, { 0x5CB43E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xFCE1FB, "Array Networks", "ARRAY-NETWORKS" }, { 0x54E140, "INGENICO", "INGENICO" }, { 0x14157C, "TOKYO COSMOS ELECTRIC CO.,LTD.", "TOKYO-COSMOS-ELECTRIC" }, { 0x408D5C, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x6CE01E, "Modcam AB", "MODCAM-AB" }, { 0xE8F2E3, "Starcor Beijing Co.,Limited", "STARCOR-BEIJING" }, { 0xD048F3, "DATTUS Inc", "DATTUS" }, { 0xCC19A8, "PT Inovação e Sistemas SA", "PT-INOVAçãO-E-SISTEMAS" }, { 0x6C4418, "Zappware", "ZAPPWARE" }, { 0x44962B, "Aidon Oy", "AIDON-OY" }, { 0xD4D7A9, "Shanghai Kaixiang Info Tech LTD", "SHANGHAI-KAIXIANG-INFO-TECH" }, { 0x185D9A, "BobjGear LLC", "BOBJGEAR-LLC" }, { 0x884157, "Shenzhen Atsmart Technology Co.,Ltd.", "SHENZHEN-ATSMART" }, { 0x3CDA2A, "zte corporation", "ZTE" }, { 0x747336, "MICRODIGTAL Inc", "MICRODIGTAL" }, { 0x0CE725, "Microsoft Corporation", "MICROSOFT" }, { 0x6C2E72, "B&B EXPORTING LIMITED", "B-B-EXPORTING" }, { 0xFC3288, "CELOT Wireless Co., Ltd", "CELOT-WIRELESS" }, { 0xBCB308, "HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED", "HONGKONG-RAGENTEK-COMMUNICATION" }, { 0x445ECD, "Razer Inc", "RAZER" }, { 0x749637, "Todaair Electronic Co., Ltd", "TODAAIR" }, { 0x2031EB, "HDSN", "HDSN" }, { 0xC0335E, "Microsoft", "MICROSOFT" }, { 0xACCAAB, "Virtual Electric Inc", "VIRTUAL-ELECTRIC" }, { 0x241B44, "Hangzhou Tuners Electronics Co., Ltd", "HANGZHOU-TUNERS-ELECTRONICS" }, { 0x90C35F, "Nanjing Jiahao Technology Co., Ltd.", "NANJING-JIAHAO" }, { 0x18F145, "NetComm Wireless Limited", "NETCOMM-WIRELESS" }, { 0x4CA515, "Baikal Electronics JSC", "BAIKAL-ELECTRONICS-JSC" }, { 0x9CE230, "JULONG CO,.LTD.", "JULONG" }, { 0x34873D, "Quectel Wireless Solution Co.,Ltd.", "QUECTEL-WIRELESS-SOLUTION" }, { 0x186882, "Beward R&D Co., Ltd.", "BEWARD-R-D" }, { 0x344CA4, "amazipoint technology Ltd.", "AMAZIPOINT" }, { 0xA8F038, "SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD", "SHEN-ZHEN-SHI-JIN-HUA-TAI-ELECTRONICS" }, { 0x74E277, "Vizmonet Pte Ltd", "VIZMONET-PTE" }, { 0x10A659, "Mobile Create Co.,Ltd.", "MOBILE-CREATE" }, { 0x58856E, "QSC AG", "QSC" }, { 0xFCAFAC, "Socionext Inc.", "SOCIONEXT" }, { 0xF8C397, "NZXT Corp. Ltd.", "NZXT" }, { 0xC4366C, "LG Innotek", "LG-INNOTEK" }, { 0x60D9A0, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x5C3B35, "Gehirn Inc.", "GEHIRN" }, { 0x5CF7C3, "SYNTECH (HK) TECHNOLOGY LIMITED", "SYNTECH-HK" }, { 0x3CC2E1, "XINHUA CONTROL ENGINEERING CO.,LTD", "XINHUA-CONTROL-ENGINEERING" }, { 0x7C534A, "Metamako", "METAMAKO" }, { 0x9C3066, "RWE Effizienz GmbH", "RWE-EFFIZIENZ" }, { 0xFCA22A, "PT. Callysta Multi Engineering", "PT-CALLYSTA-MULTI-ENGINEERING" }, { 0x247656, "Shanghai Net Miles Fiber Optics Technology Co., LTD.", "SHANGHAI-NET-MILES-FIBER-OPTICS" }, { 0xA0ADA1, "JMR Electronics, Inc", "JMR-ELECTRONICS" }, { 0x601970, "HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD.", "HUIZHOU-QIAOXING-ELECTRONICS" }, { 0x887033, "Hangzhou Silan Microelectronic Inc", "HANGZHOU-SILAN-MICROELECTRONIC" }, { 0x8C7967, "zte corporation", "ZTE" }, { 0x78F944, "Private", "PRIVATE" }, { 0xCCA4AF, "Shenzhen Sowell Technology Co., LTD", "SHENZHEN-SOWELL" }, { 0x84F129, "Metrascale Inc.", "METRASCALE" }, { 0x2028BC, "Visionscape Co,. Ltd.", "VISIONSCAPE" }, { 0xB8F080, "SPS, INC.", "SPS" }, { 0x7858F3, "Vachen Co.,Ltd", "VACHEN" }, { 0xFCDC4A, "G-Wearables Corp.", "G-WEARABLES" }, { 0xF42C56, "SENOR TECH CO LTD", "SENOR-TECH" }, { 0x50502A, "Egardia", "EGARDIA" }, { 0x48EE0C, "D-Link International", "D-LINK" }, { 0x48C093, "Xirrus, Inc.", "XIRRUS" }, { 0x3C1A0F, "ClearSky Data", "CLEARSKY-DATA" }, { 0xACB57D, "Liteon Technology Corporation", "LITEON" }, { 0xDCE1AD, "Shenzhen Wintop Photoelectric Technology Co., Ltd", "SHENZHEN-WINTOP-PHOTOELECTRIC" }, { 0x900CB4, "Alinket Electronic Technology Co., Ltd", "ALINKET" }, { 0x883B8B, "Cheering Connection Co. Ltd.", "CHEERING-CONNECTION" }, { 0x94D417, "GPI KOREA INC.", "GPI-KOREA" }, { 0xD855A3, "zte corporation", "ZTE" }, { 0x70DA9C, "TECSEN", "TECSEN" }, { 0x6CF5E8, "Mooredoll Inc.", "MOOREDOLL" }, { 0x70FF5C, "Cheerzing Communication(Xiamen)Technology Co.,Ltd", "CHEERZING-COMMUNICATION-XIAMEN" }, { 0x08115E, "Bitel Co., Ltd.", "BITEL" }, { 0x44CE7D, "SFR", "SFR" }, { 0x0881BC, "HongKong Ipro Technology Co., Limited", "HONGKONG-IPRO" }, { 0x4C16F1, "zte corporation", "ZTE" }, { 0x800902, "Keysight Technologies, Inc.", "KEYSIGHT-TECHNOLOGIES" }, { 0x6872DC, "CETORY.TV Company Limited", "CETORY-TV-COMPANY" }, { 0xD8B6B7, "Comtrend Corporation", "COMTREND" }, { 0x0499E6, "Shenzhen Yoostar Technology Co., Ltd", "SHENZHEN-YOOSTAR" }, { 0x94BF95, "Shenzhen Coship Electronics Co., Ltd", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0xFC9FE1, "CONWIN.Tech. Ltd", "CONWIN-TECH" }, { 0x90203A, "BYD Precision Manufacture Co.,Ltd", "BYD-PRECISION-MANUFACTURE" }, { 0xA81B5D, "Foxtel Management Pty Ltd", "FOXTEL-MANAGEMENT-PTY" }, { 0xB8BD79, "TrendPoint Systems", "TRENDPOINT" }, { 0x2C010B, "NASCENT Technology, LLC - RemKon", "NASCENT-LLC---REMKON" }, { 0xD4EC86, "LinkedHope Intelligent Technologies Co., Ltd", "LINKEDHOPE-INTELLIGENT-TECHNOLOGIES" }, { 0x20A99B, "Microsoft Corporation", "MICROSOFT" }, { 0xA0A3E2, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x54098D, "deister electronic GmbH", "DEISTER" }, { 0xF0FE6B, "Shanghai High-Flying Electronics Technology Co., Ltd", "SHANGHAI-HIGH-FLYING-ELECTRONICS" }, { 0x3CAE69, "ESA Elektroschaltanlagen Grimma GmbH", "ESA-ELEKTROSCHALTANLAGEN-GRIMMA" }, { 0x00F3DB, "WOO Sports", "WOO-SPORTS" }, { 0x08A5C8, "Sunnovo International Limited", "SUNNOVO" }, { 0x848EDF, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xCCBDD3, "Ultimaker B.V.", "ULTIMAKER" }, { 0x50294D, "NANJING IOT SENSOR TECHNOLOGY CO,LTD", "NANJING-IOT-SENSOR" }, { 0x0CCFD1, "SPRINGWAVE Co., Ltd", "SPRINGWAVE" }, { 0x58108C, "Intelbras", "INTELBRAS" }, { 0x187117, "eta plus electronic gmbh", "ETA-PLUS" }, { 0x7CB177, "Satelco AG", "SATELCO" }, { 0x8C5D60, "UCI Corporation Co.,Ltd.", "UCI" }, { 0x4C0BBE, "Microsoft", "MICROSOFT" }, { 0x08EB29, "Jiangsu Huitong Group Co.,Ltd.", "JIANGSU-HUITONG-GROUP" }, { 0xE48C0F, "Discovery Insure", "DISCOVERY-INSURE" }, { 0x587FB7, "SONAR INDUSTRIAL CO., LTD.", "SONAR-INDUSTRIAL" }, { 0xE42354, "SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD", "SHENZHEN-FUZHI-SOFTWARE" }, { 0x207693, "Lenovo (Beijing) Limited.", "LENOVO-BEIJING" }, { 0xC4BD6A, "SKF GmbH", "SKF" }, { 0x14488B, "Shenzhen Doov Technology Co.,Ltd", "SHENZHEN-DOOV" }, { 0x603696, "The Sapling Company", "THE-SAPLING-COMPANY" }, { 0x54FFCF, "Mopria Alliance", "MOPRIA-ALLIANCE" }, { 0xBCBC46, "SKS Welding Systems GmbH", "SKS-WELDING" }, { 0xA8D88A, "Wyconn", "WYCONN" }, { 0x00E6E8, "Netzin Technology Corporation,.Ltd.", "NETZIN" }, { 0x64B21D, "Chengdu Phycom Tech Co., Ltd.", "CHENGDU-PHYCOM-TECH" }, { 0x88708C, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xF03D29, "Actility", "ACTILITY" }, { 0x909F33, "EFM Networks", "EFM-NETWORKS" }, { 0x849681, "Cathay Communication Co.,Ltd", "CATHAY-COMMUNICATION" }, { 0xA056B2, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x40C62A, "Shanghai Jing Ren Electronic Technology Co., Ltd.", "SHANGHAI-JING-REN" }, { 0xE8150E, "Nokia Corporation", "NOKIA" }, { 0xF4D032, "Yunnan Ideal Information&Technology.,Ltd", "YUNNAN-IDEAL-INFORMATION" }, { 0x44A6E5, "THINKING TECHNOLOGY CO.,LTD", "THINKING" }, { 0xA8329A, "Digicom Futuristic Technologies Ltd.", "DIGICOM-FUTURISTIC-TECHNOLOGIES" }, { 0xB40AC6, "DEXON Systems Ltd.", "DEXON" }, { 0x5CB8CB, "Allis Communications", "ALLIS-COMMUNICATION" }, { 0xE85D6B, "Luminate Wireless", "LUMINATE-WIRELESS" }, { 0x8C3357, "HiteVision Digital Media Technology Co.,Ltd.", "HITEVISION-DIGITAL-MEDIA" }, { 0xF4D261, "SEMOCON Co., Ltd", "SEMOCON" }, { 0xD05AF1, "Shenzhen Pulier Tech CO.,Ltd", "SHENZHEN-PULIER-TECH" }, { 0x481A84, "Pointer Telocation Ltd", "POINTER-TELOCATION" }, { 0xDC663A, "Apacer Technology Inc.", "APACER" }, { 0xB009D3, "Avizia", "AVIZIA" }, { 0x3CAA3F, "iKey, Ltd.", "IKEY" }, { 0x0C383E, "Fanvil Technology Co., Ltd.", "FANVIL" }, { 0x60CDA9, "Abloomy", "ABLOOMY" }, { 0xB40B44, "Smartisan Technology Co., Ltd.", "SMARTISAN" }, { 0xA0FC6E, "Telegrafia a.s.", "TELEGRAFIA-A-S" }, { 0x44D4E0, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xD0FA1D, "Qihoo 360 Technology Co.,Ltd", "QIHOO-360" }, { 0x046785, "scemtec Hard- und Software fuer Mess- und Steuerungstechnik GmbH", "SCEMTEC-HARD--UND-SOFTWARE-FUER-MESS--UND-STEUERUNGSTECHNIK" }, { 0xFC6DC0, "BME CORPORATION", "BME" }, { 0x784561, "CyberTAN Technology Inc.", "CYBERTAN" }, { 0xD896E0, "Alibaba Cloud Computing Ltd.", "ALIBABA-CLOUD-COMPUTING" }, { 0x300D2A, "Zhejiang Wellcom Technology Co.,Ltd.", "ZHEJIANG-WELLCOM" }, { 0x64EAC5, "SiboTech Automation Co., Ltd.", "SIBOTECH-AUTOMATION" }, { 0x74DA38, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0xF4F26D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x5C1515, "ADVAN", "ADVAN" }, { 0xD0A0D6, "Chengdu TD Tech Ltd.", "CHENGDU-TD-TECH" }, { 0x8CBF9D, "Shanghai Xinyou Information Technology Ltd. Co.", "SHANGHAI-XINYOU-INFORMATION" }, { 0xD49398, "Nokia Corporation", "NOKIA" }, { 0x78D66F, "Aristocrat Technologies Australia Pty. Ltd.", "ARISTOCRAT-TECHNOLOGIES-AUSTRALIA-PTY" }, { 0x50C7BF, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xC06118, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD0C7C0, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x209AE9, "Volacomm Co., Ltd", "VOLACOMM" }, { 0x345D10, "Wytek", "WYTEK" }, { 0x58E326, "Compass Technologies Inc.", "COMPASS-TECHNOLOGIES" }, { 0x848DC7, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xA8BD3A, "UNIONMAN TECHNOLOGY CO.,LTD", "UNIONMAN" }, { 0xC44E1F, "BlueN", "BLUEN" }, { 0xCCA614, "AIFA TECHNOLOGY CORP.", "AIFA" }, { 0xB0869E, "Chloride S.r.L", "CHLORIDE-S-R-L" }, { 0x344F5C, "R&M AG", "R-AMP-M" }, { 0xA46CC1, "LTi REEnergy GmbH", "LTI-REENERGY" }, { 0x90DB46, "E-LEAD ELECTRONIC CO., LTD", "E-LEAD" }, { 0xD42F23, "Akenori PTE Ltd", "AKENORI-PTE" }, { 0x286336, "Siemens AG - Industrial Automation - EWA", "SIEMENS---INDUSTRIAL-AUTOMATION---EWA" }, { 0x38F098, "Vapor Stone Rail Systems", "VAPOR-STONE-RAIL" }, { 0x400107, "Arista Corp", "ARISTA" }, { 0x4C8B30, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0805CD, "DongGuang EnMai Electronic Product Co.Ltd.", "DONGGUANG-ENMAI-PRODUCT" }, { 0x0092FA, "SHENZHEN WISKY TECHNOLOGY CO.,LTD", "SHENZHEN-WISKY" }, { 0x4CF45B, "Blue Clover Devices", "BLUE-CLOVER-DEVICES" }, { 0xB06971, "DEI Sales, Inc.", "DEI-SALES" }, { 0x580528, "LABRIS NETWORKS", "LABRIS-NETWORKS" }, { 0x28656B, "Keystone Microtech Corporation", "KEYSTONE-MICROTECH" }, { 0xEC2E4E, "HITACHI-LG DATA STORAGE INC", "HITACHI-LG-DATA-STORAGE" }, { 0x505800, "WyTec International, Inc.", "WYTEC" }, { 0x78923E, "Nokia Corporation", "NOKIA" }, { 0xD4CFF9, "Shenzhen Sen5 Technology Co., Ltd.", "SHENZHEN-SEN5" }, { 0xD8492F, "CANON INC.", "CANON" }, { 0xD46761, "SAHAB TECHNOLOGY", "SAHAB" }, { 0x145645, "Savitech Corp.", "SAVITECH" }, { 0xD4E08E, "ValueHD Corporation", "VALUEHD" }, { 0x70305D, "Ubiquoss Inc", "UBIQUOSS" }, { 0x5850AB, "TLS Corporation", "TLS" }, { 0x90DFB7, "s.m.s smart microwave sensors GmbH", "S-M-S-SMART-MICROWAVE-SENSORS" }, { 0xB843E4, "Vlatacom", "VLATACOM" }, { 0xE07F53, "TECHBOARD SRL", "TECHBOARD-SRL" }, { 0x4C0DEE, "JABIL CIRCUIT (SHANGHAI) LTD.", "JABIL-CIRCUIT-SHANGHAI" }, { 0xA07771, "Vialis BV", "VIALIS" }, { 0xD0BD01, "DS International", "DS" }, { 0xC0C569, "SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD", "SHANGHAI-LYNUC-CNC" }, { 0x200E95, "IEC – TC9 WG43", "IEC-–-TC9-WG43" }, { 0xE0DB88, "Open Standard Digital-IF Interface for SATCOM Systems", "OPEN-STANDARD-DIGITAL-IF-INTERFACE-FOR-SATCOM" }, { 0xD86194, "Objetivos y Sevicios de Valor Añadido", "OBJETIVOS-Y-SEVICIOS-DE-VALOR-AÑADIDO" }, { 0x589CFC, "FreeBSD Foundation", "FREEBSD-FOUNDATION" }, { 0x98349D, "Krauss Maffei Technologies GmbH", "KRAUSS-MAFFEI-TECHNOLOGIES" }, { 0x18CC23, "Philio Technology Corporation", "PHILIO" }, { 0x648D9E, "IVT Electronic Co.,Ltd", "IVT" }, { 0xCC95D7, "Vizio, Inc", "VIZIO" }, { 0x749C52, "Huizhou Desay SV Automotive Co., Ltd.", "HUIZHOU-DESAY-SV-AUTOMOTIVE" }, { 0xC0F79D, "Powercode", "POWERCODE" }, { 0x3C0C48, "Servergy, Inc.", "SERVERGY" }, { 0x68D247, "Portalis LC", "PORTALIS-LC" }, { 0xFC27A2, "TRANS ELECTRIC CO., LTD.", "TRANS-ELECTRIC" }, { 0x14C089, "DUNE HD LTD", "DUNE-HD" }, { 0xF08A28, "JIANGSU HENGSION ELECTRONIC S and T CO.,LTD", "JIANGSU-HENGSION-S-AND-T" }, { 0xA8574E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xDC3EF8, "Nokia Corporation", "NOKIA" }, { 0x706173, "Calantec GmbH", "CALANTEC" }, { 0x50C271, "SECURETECH INC", "SECURETECH" }, { 0x7C49B9, "Plexus Manufacturing Sdn Bhd", "PLEXUS-MANUFACTURING-SDN-BHD" }, { 0x184462, "Riava Networks, Inc.", "RIAVA-NETWORKS" }, { 0x9C443D, "CHENGDU XUGUANG TECHNOLOGY CO, LTD", "CHENGDU-XUGUANG" }, { 0x74A4B5, "Powerleader Science and Technology Co. Ltd.", "POWERLEADER-SCIENCE-AND" }, { 0xBC4100, "CODACO ELECTRONIC s.r.o.", "CODACO-S-R-O" }, { 0x7CCD3C, "Guangzhou Juzing Technology Co., Ltd", "GUANGZHOU-JUZING" }, { 0x10B26B, "base Co.,Ltd.", "BASE" }, { 0xDCCEBC, "Shenzhen JSR Technology Co.,Ltd.", "SHENZHEN-JSR" }, { 0x9486D4, "Surveillance Pro Corporation", "SURVEILLANCE-PRO" }, { 0xF89550, "Proton Products Chengdu Ltd", "PROTON-PRODUCTS-CHENGDU" }, { 0x447BC4, "DualShine Technology(SZ)Co.,Ltd", "DUALSHINE-SZ" }, { 0x542F89, "Euclid Laboratories, Inc.", "EUCLID-LABORATORIES" }, { 0x48B977, "PulseOn Oy", "PULSEON-OY" }, { 0xAC2DA3, "TXTR GmbH", "TXTR" }, { 0xC8F68D, "S.E.TECHNOLOGIES LIMITED", "S-E-TECHNOLOGIES" }, { 0xBC14EF, "ITON Technology Limited", "ITON" }, { 0x14F28E, "ShenYang ZhongKe-Allwin Technology Co.LTD", "SHENYANG-ZHONGKE-ALLWIN" }, { 0xC064C6, "Nokia Corporation", "NOKIA" }, { 0x9C44A6, "SwiftTest, Inc.", "SWIFTTEST" }, { 0x44C4A9, "Opticom Communication, LLC", "OPTICOM-COMMUNICATION-LLC" }, { 0x6C3C53, "SoundHawk Corp", "SOUNDHAWK" }, { 0x64BABD, "SDJ Technologies, Inc.", "SDJ-TECHNOLOGIES" }, { 0x889166, "Viewcooper Corp.", "VIEWCOOPER" }, { 0x103378, "FLECTRON Co., LTD", "FLECTRON" }, { 0xDC0575, "SIEMENS ENERGY AUTOMATION", "SIEMENS-ENERGY-AUTOMATION" }, { 0x5C1193, "Seal One AG", "SEAL-ONE" }, { 0xB4527E, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x50E14A, "Private", "PRIVATE" }, { 0x68FCB3, "Next Level Security Systems, Inc.", "NEXT-LEVEL-SECURITY" }, { 0x70305E, "Nanjing Zhongke Menglian Information Technology Co.,LTD", "NANJING-ZHONGKE-MENGLIAN-INFORMATION" }, { 0x9C8888, "Simac Techniek NV", "SIMAC-TECHNIEK-NV" }, { 0x180C14, "iSonea Limited", "ISONEA" }, { 0x8CAE89, "Y-cam Solutions Ltd", "Y-CAM-SOLUTIONS" }, { 0x58B961, "SOLEM Electronique", "SOLEM-ELECTRONIQUE" }, { 0xF46ABC, "Adonit Corp. Ltd.", "ADONIT" }, { 0x20180E, "Shenzhen Sunchip Technology Co., Ltd", "SHENZHEN-SUNCHIP" }, { 0x80B219, "ELEKTRON TECHNOLOGY UK LIMITED", "ELEKTRON-UK" }, { 0xD08A55, "Skullcandy", "SKULLCANDY" }, { 0xC4D655, "Tercel technology co.,ltd", "TERCEL" }, { 0x9CA10A, "SCLE SFE", "SCLE-SFE" }, { 0x78D99F, "NuCom HK Ltd.", "NUCOM-HK" }, { 0x44C56F, "NGN Easy Satfinder (Tianjin) Electronic Co., Ltd", "NGN-EASY-SATFINDER-TIANJIN" }, { 0x2C5A05, "Nokia Corporation", "NOKIA" }, { 0x848336, "Newrun", "NEWRUN" }, { 0xEC71DB, "Shenzhen Baichuan Digital Technology Co., Ltd.", "SHENZHEN-BAICHUAN-DIGITAL" }, { 0xB8266C, "ANOV France", "ANOV-FRANCE" }, { 0x284D92, "Luminator", "LUMINATOR" }, { 0x1C4BB9, "SMG ENTERPRISE, LLC", "SMG-LLC" }, { 0x0C5CD8, "DOLI Elektronik GmbH", "DOLI-ELEKTRONIK" }, { 0x2C5FF3, "Pertronic Industries", "PERTRONIC-INDUSTRIES" }, { 0xE0AF4B, "Pluribus Networks, Inc.", "PLURIBUS-NETWORKS" }, { 0xC85663, "Sunflex Europe GmbH", "SUNFLEX-EUROPE" }, { 0x88FED6, "ShangHai WangYong Software Co., Ltd.", "SHANGHAI-WANGYONG-SOFTWARE" }, { 0x600347, "Billion Electric Co. Ltd.", "BILLION-ELECTRIC" }, { 0x084027, "Gridstore Inc.", "GRIDSTORE" }, { 0x7C2048, "KoamTac", "KOAMTAC" }, { 0x705986, "OOO TTV", "OOO-TTV" }, { 0x20DF3F, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x30786B, "TIANJIN Golden Pentagon Electronics Co., Ltd.", "TIANJIN-GOLDEN-PENTAGON-ELECTRONICS" }, { 0x4CD637, "Qsono Electronics Co., Ltd", "QSONO-ELECTRONICS" }, { 0x8CF945, "Power Automation pte Ltd", "POWER-AUTOMATION-PTE" }, { 0x2C922C, "Kishu Giken Kogyou Company Ltd,.", "KISHU-GIKEN-KOGYOU-COMPANY" }, { 0x509871, "Inventum Technologies Private Limited", "INVENTUM-TECHNOLOGIES-PRIVATE" }, { 0x384233, "Wildeboer Bauteile GmbH", "WILDEBOER-BAUTEILE" }, { 0x9440A2, "Anywave Communication Technologies, Inc.", "ANYWAVE-COMMUNICATION-TECHNOLOGIES" }, { 0x7CB77B, "Paradigm Electronics Inc", "PARADIGM-ELECTRONICS" }, { 0x28A241, "exlar corp", "EXLAR" }, { 0x9876B6, "Adafruit", "ADAFRUIT" }, { 0xAC220B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x88354C, "Transics", "TRANSICS" }, { 0x709BFC, "Bryton Inc.", "BRYTON" }, { 0xD82D9B, "Shenzhen G.Credit Communication Technology Co., Ltd", "SHENZHEN-G-CREDIT-COMMUNICATION" }, { 0x94BF1E, "eflow Inc. / Smart Device Planning and Development Division", "EFLOW-/-SMART-DEVICE-PLANNING-AND-DEVELOPMENT-DIVISION" }, { 0xC0A39E, "EarthCam, Inc.", "EARTHCAM" }, { 0x088E4F, "SF Software Solutions", "SF-SOFTWARE-SOLUTIONS" }, { 0xDCAE04, "CELOXICA Ltd", "CELOXICA" }, { 0x5422F8, "zte corporation", "ZTE" }, { 0x486E73, "Pica8, Inc.", "PICA8" }, { 0xA0CEC8, "CE LINK LIMITED", "CE-LINK" }, { 0x907A28, "Beijing Morncloud Information And Technology Co. Ltd.", "BEIJING-MORNCLOUD-INFORMATION-AND" }, { 0xCCD29B, "Shenzhen Bopengfa Elec&Technology CO.,Ltd", "SHENZHEN-BOPENGFA-ELEC" }, { 0x9C4EBF, "BoxCast", "BOXCAST" }, { 0x34A68C, "Shine Profit Development Limited", "SHINE-PROFIT-DEVELOPMENT" }, { 0x78DAB3, "GBO Technology", "GBO" }, { 0x80BBEB, "Satmap Systems Ltd", "SATMAP" }, { 0x949FB4, "ChengDu JiaFaAnTai Technology Co.,Ltd", "CHENGDU-JIAFAANTAI" }, { 0x406826, "Thales UK Limited", "THALES-UK" }, { 0x5C15E1, "AIDC TECHNOLOGY (S) PTE LTD", "AIDC-S-PTE" }, { 0x048D38, "Netcore Technology Inc.", "NETCORE" }, { 0x1C4AF7, "AMON INC", "AMON" }, { 0x985D46, "PeopleNet Communication", "PEOPLENET-COMMUNICATION" }, { 0x446755, "Orbit Irrigation", "ORBIT-IRRIGATION" }, { 0x789F4C, "HOERBIGER Elektronik GmbH", "HOERBIGER-ELEKTRONIK" }, { 0x98F8C1, "IDT Technology Limited", "IDT" }, { 0xF47A4E, "Woojeon&Handan", "WOOJEON-HANDAN" }, { 0x44700B, "IFFU", "IFFU" }, { 0x8C2F39, "IBA Dosimetry GmbH", "IBA-DOSIMETRY" }, { 0xB8F828, "Changshu Gaoshida Optoelectronic Technology Co. Ltd.", "CHANGSHU-GAOSHIDA-OPTOELECTRONIC" }, { 0x58468F, "Koncar Electronics and Informatics", "KONCAR-ELECTRONICS-AND-INFORMATICS" }, { 0x746630, "T:mi Ytti", "T:MI-YTTI" }, { 0xB0FEBD, "Private", "PRIVATE" }, { 0x940BD5, "Himax Technologies, Inc", "HIMAX-TECHNOLOGIES" }, { 0x30055C, "Brother industries, LTD.", "BROTHER-INDUSTRIES" }, { 0x0C8268, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB01743, "EDISON GLOBAL CIRCUITS LLC", "EDISON-GLOBAL-CIRCUITS-LLC" }, { 0x90DA4E, "AVANU", "AVANU" }, { 0x7038B4, "Low Tech Solutions", "LOW-TECH-SOLUTIONS" }, { 0x4C804F, "Armstrong Monitoring Corp", "ARMSTRONG-MONITORING" }, { 0x901D27, "zte corporation", "ZTE" }, { 0x7CD762, "Freestyle Technology Pty Ltd", "FREESTYLE-PTY" }, { 0xD073D5, "LIFI LABS MANAGEMENT PTY LTD", "LIFI-LABS-MANAGEMENT-PTY" }, { 0xB8C46F, "PRIMMCON INDUSTRIES INC", "PRIMMCON-INDUSTRIES" }, { 0x505AC6, "GUANGDONG SUPER TELECOM CO.,LTD.", "GUANGDONG-SUPER-TELECOM" }, { 0x38A86B, "Orga BV", "ORGA" }, { 0x141330, "Anakreon UK LLP", "ANAKREON-UK-LLP" }, { 0x0CF405, "Beijing Signalway Technologies Co.,Ltd", "BEIJING-SIGNALWAY-TECHNOLOGIES" }, { 0x1C76CA, "Terasic Technologies Inc.", "TERASIC-TECHNOLOGIES" }, { 0x0C1105, "Ringslink (Xiamen) Network Communication Technologies Co., Ltd", "RINGSLINK-XIAMEN-NETWORK-COMMUNICATION-TECHNOLOGIES" }, { 0x945047, "Rechnerbetriebsgruppe", "RECHNERBETRIEBSGRUPPE" }, { 0xD8DCE9, "Kunshan Erlab ductless filtration system Co.,Ltd", "KUNSHAN-ERLAB-DUCTLESS-FILTRATION-SYSTEM" }, { 0x54112F, "Sulzer Pump Solutions Finland Oy", "SULZER-PUMP-SOLUTIONS-FINLAND-OY" }, { 0x4C55B8, "Turkcell Teknoloji", "TURKCELL-TEKNOLOJI" }, { 0x088039, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x2C72C3, "Soundmatters", "SOUNDMATTERS" }, { 0x84E4D9, "Shenzhen NEED technology Ltd.", "SHENZHEN-NEED" }, { 0xC44838, "Satcom Direct, Inc.", "SATCOM-DIRECT" }, { 0x545414, "Digital RF Corea, Inc", "DIGITAL-RF-COREA" }, { 0x24EB65, "SAET I.S. S.r.l.", "SAET-I-S-S-R-L" }, { 0xD0F27F, "SteadyServ Technoligies, LLC", "STEADYSERV-TECHNOLIGIES-LLC" }, { 0xDC647C, "C.R.S. iiMotion GmbH", "C-R-S-IIMOTION" }, { 0x188410, "CoreTrust Inc.", "CORETRUST" }, { 0xA08A87, "HuiZhou KaiYue Electronic Co.,Ltd", "HUIZHOU-KAIYUE" }, { 0x04BFA8, "ISB Corporation", "ISB" }, { 0x5C8486, "Brightsource Industries Israel LTD", "BRIGHTSOURCE-INDUSTRIES-ISRAEL" }, { 0x28CD9C, "Shenzhen Dynamax Software Development Co.,Ltd.", "SHENZHEN-DYNAMAX-SOFTWARE-DEVELOPMENT" }, { 0xE0EDC7, "Shenzhen Friendcom Technology Development Co., Ltd", "SHENZHEN-FRIENDCOM-DEVELOPMENT" }, { 0x2CF203, "EMKO ELEKTRONIK SAN VE TIC AS", "EMKO-ELEKTRONIK-SAN-VE-TIC-AS" }, { 0x246278, "sysmocom - systems for mobile communications GmbH", "SYSMOCOM---FOR-MOBILE-COMMUNICATION" }, { 0xF45842, "Boxx TV Ltd", "BOXX-TV" }, { 0xA861AA, "Cloudview Limited", "CLOUDVIEW" }, { 0xC89346, "MXCHIP Company Limited", "MXCHIP-COMPANY" }, { 0xF0F260, "Mobitec AB", "MOBITEC-AB" }, { 0x1423D7, "EUTRONIX CO., LTD.", "EUTRONIX" }, { 0x3CFB96, "Emcraft Systems LLC", "EMCRAFT-LLC" }, { 0x081F3F, "WondaLink Inc.", "WONDALINK" }, { 0xDC6F08, "Bay Storage Technology", "BAY-STORAGE" }, { 0xE492E7, "Gridlink Tech. Co.,Ltd.", "GRIDLINK-TECH" }, { 0x60BB0C, "Beijing HuaqinWorld Technology Co,Ltd", "BEIJING-HUAQINWORLD" }, { 0x70E027, "HONGYU COMMUNICATION TECHNOLOGY LIMITED", "HONGYU-COMMUNICATION" }, { 0xE880D8, "GNTEK Electronics Co.,Ltd.", "GNTEK-ELECTRONICS" }, { 0x188857, "Beijing Jinhong Xi-Dian Information Technology Corp.", "BEIJING-JINHONG-XI-DIAN-INFORMATION" }, { 0x287994, "Realplay Digital Technology(Shenzhen) Co.,Ltd", "REALPLAY-DIGITAL-SHENZHEN" }, { 0x105C3B, "Perma-Pipe, Inc.", "PERMA-PIPE" }, { 0x40C4D6, "ChongQing Camyu Technology Development Co.,Ltd.", "CHONGQING-CAMYU-DEVELOPMENT" }, { 0xA0EB76, "AirCUVE Inc.", "AIRCUVE" }, { 0x6C6126, "Rinicom Holdings", "RINICOM-HOLDINGS" }, { 0xC04DF7, "SERELEC", "SERELEC" }, { 0xECD040, "GEA Farm Technologies GmbH", "GEA-FARM-TECHNOLOGIES" }, { 0x005907, "LenovoEMC Products USA, LLC", "LENOVOEMC-PRODUCTS-USA-LLC" }, { 0x78B3CE, "Elo touch solutions", "ELO-TOUCH-SOLUTIONS" }, { 0xA8FB70, "WiseSec L.t.d", "WISESEC-L-T-D" }, { 0x30F31D, "zte corporation", "ZTE" }, { 0xE4776B, "AARTESYS AG", "AARTESYS" }, { 0x5C335C, "Swissphone Telecom AG", "SWISSPHONE-TELECOM" }, { 0xA4FCCE, "Security Expert Ltd.", "SECURITY-EXPERT" }, { 0xE0CEC3, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x5C43D2, "HAZEMEYER", "HAZEMEYER" }, { 0xD819CE, "Telesquare", "TELESQUARE" }, { 0xD809C3, "Cercacor Labs", "CERCACOR-LABS" }, { 0x84ED33, "BBMC Co.,Ltd", "BBMC" }, { 0x681E8B, "InfoSight Corporation", "INFOSIGHT" }, { 0xC044E3, "Shenzhen Sinkna Electronics Co., LTD", "SHENZHEN-SINKNA-ELECTRONICS" }, { 0x08F1B7, "Towerstream Corpration", "TOWERSTREAM-CORPRATION" }, { 0x20858C, "Assa", "ASSA" }, { 0x187A93, "AMICCOM Electronics Corporation", "AMICCOM-ELECTRONICS" }, { 0x94C962, "Teseq AG", "TESEQ" }, { 0x384369, "Patrol Products Consortium LLC", "PATROL-PRODUCTS-CONSORTIUM-LLC" }, { 0xD08B7E, "Passif Semiconductor", "PASSIF-SEMICONDUCTOR" }, { 0x6886E7, "Orbotix, Inc.", "ORBOTIX" }, { 0x2CE871, "Alert Metalguard ApS", "ALERT-METALGUARD-APS" }, { 0x58D071, "BW Broadcast", "BW-BROADCAST" }, { 0xC0A0C7, "FAIRFIELD INDUSTRIES", "FAIRFIELD-INDUSTRIES" }, { 0x98208E, "Definium Technologies", "DEFINIUM-TECHNOLOGIES" }, { 0x704AE4, "Rinstrum Pty Ltd", "RINSTRUM-PTY" }, { 0x68B8D9, "Act KDE, Inc.", "ACT-KDE" }, { 0xF84897, "Hitachi, Ltd.", "HITACHI" }, { 0x74E424, "APISTE CORPORATION", "APISTE" }, { 0x58D6D3, "Dairy Cheq Inc", "DAIRY-CHEQ" }, { 0x68FB95, "Generalplus Technology Inc.", "GENERALPLUS" }, { 0xE4C146, "Objetivos y Servicios de Valor A", "OBJETIVOS-Y-SERVICIOS-DE-VALOR-A" }, { 0xD4BF2D, "SE Controls Asia Pacific Ltd", "SE-CONTROLS-ASIA-PACIFIC" }, { 0xC45DD8, "HDMI Forum", "HDMI-FORUM" }, { 0xC44EAC, "Shenzhen Shiningworth Technology Co., Ltd.", "SHENZHEN-SHININGWORTH" }, { 0xC458C2, "Shenzhen TATFOOK Technology Co., Ltd.", "SHENZHEN-TATFOOK" }, { 0x44184F, "Fitview", "FITVIEW" }, { 0x8C76C1, "Goden Tech Limited", "GODEN-TECH" }, { 0xDC2A14, "Shanghai Longjing Technology Co.", "SHANGHAI-LONGJING" }, { 0x0C191F, "Inform Electronik", "INFORM-ELECTRONIK" }, { 0x080FFA, "KSP INC.", "KSP" }, { 0xECFC55, "A. Eberle GmbH & Co. KG", "A-EBERLE" }, { 0x0C8CDC, "Suunto Oy", "SUUNTO-OY" }, { 0x20B5C6, "Mimosa Networks", "MIMOSA-NETWORKS" }, { 0xAC3CB4, "Nilan A/S", "NILAN-A/S" }, { 0x8007A2, "Esson Technology Inc.", "ESSON" }, { 0x2C3557, "ELLIY Power CO..Ltd", "ELLIY-POWER" }, { 0x6C5A34, "Shenzhen Haitianxiong Electronic Co., Ltd.", "SHENZHEN-HAITIANXIONG" }, { 0x485A3F, "WISOL", "WISOL" }, { 0x70F1E5, "Xetawave LLC", "XETAWAVE-LLC" }, { 0xC0AA68, "OSASI Technos Inc.", "OSASI-TECHNOS" }, { 0xB829F7, "Blaster Tech", "BLASTER-TECH" }, { 0x00C14F, "DDL Co,.ltd.", "DDL" }, { 0x5CE0CA, "FeiTian United (Beijing) System Technology Co., Ltd.", "FEITIAN-UNITED-BEIJING-SYSTEM" }, { 0x9C9811, "Guangzhou Sunrise Electronics Development Co., Ltd", "GUANGZHOU-SUNRISE-ELECTRONICS-DEVELOPMENT" }, { 0xA0FE91, "AVAT Automation GmbH", "AVAT-AUTOMATION" }, { 0x5809E5, "Kivic Inc.", "KIVIC" }, { 0x74ECF1, "Acumen", "ACUMEN" }, { 0x6815D3, "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A.", "ZAKLADY-ELEKTRONIKI-I-MECHANIKI-PRECYZYJNEJ-R-G" }, { 0x601929, "VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP.", "VOLTRONIC-POWER-SHENZHEN" }, { 0xC0BD42, "ZPA Smart Energy a.s.", "ZPA-SMART-ENERGY-A-S" }, { 0x48B253, "Marketaxess Corporation", "MARKETAXESS" }, { 0x60D2B9, "REALAND BIO CO., LTD.", "REALAND-BIO" }, { 0x2067B1, "Pluto inc.", "PLUTO" }, { 0x087D21, "Altasec technology corporation", "ALTASEC" }, { 0x30FD11, "MACROTECH (USA) INC.", "MACROTECH-USA" }, { 0xF8051C, "DRS Imaging and Targeting Solutions", "DRS-IMAGING-AND-TARGETING-SOLUTIONS" }, { 0x6032F0, "Mplus technology", "MPLUS" }, { 0x749975, "IBM Corporation", "IBM" }, { 0x0CDCCC, "Inala Technologies", "INALA-TECHNOLOGIES" }, { 0xF0ACA4, "HBC-radiomatic", "HBC-RADIOMATIC" }, { 0x14DB85, "S NET MEDIA", "S-NET-MEDIA" }, { 0xD493A0, "Fidelix Oy", "FIDELIX-OY" }, { 0xAC7236, "Lexking Technology Co., Ltd.", "LEXKING" }, { 0xCCB3F8, "FUJITSU ISOTEC LIMITED", "FUJITSU-ISOTEC" }, { 0x3CD7DA, "SK Mtek microelectronics(shenzhen)limited", "SK-MTEK-MICROELECTRONICS-SHENZHEN" }, { 0xE86D54, "Digit Mobile Inc", "DIGIT-MOBILE" }, { 0x9857D3, "HON HAI-CCPBG PRECISION IND.CO.,LTD.", "HON-HAI-CCPBG-PRECISION-IND" }, { 0x9C8D1A, "INTEG process group inc", "INTEG-PROCESS-GROUP" }, { 0x742D0A, "Norfolk Elektronik AG", "NORFOLK-ELEKTRONIK" }, { 0x480362, "DESAY ELECTRONICS(HUIZHOU)CO.,LTD", "DESAY-ELECTRONICS-HUIZHOU" }, { 0xB0358D, "Nokia Corporation", "NOKIA" }, { 0x0CF361, "Java Information", "JAVA-INFORMATION" }, { 0x34BDFA, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x8CEEC6, "Precepscion Pty. Ltd.", "PRECEPSCION-PTY" }, { 0xECD950, "IRT SA", "IRT" }, { 0x74273C, "ChangYang Technology (Nanjing) Co., LTD", "CHANGYANG-NANJING" }, { 0x087CBE, "Quintic Corp.", "QUINTIC" }, { 0xC4AD21, "MEDIAEDGE Corporation", "MEDIAEDGE" }, { 0xDCBF90, "HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD.", "HUIZHOU-QIAOXING-TELECOMMUNICATION-INDUSTRY" }, { 0xE0F5CA, "CHENG UEI PRECISION INDUSTRY CO.,LTD.", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0x1C5C60, "Shenzhen Belzon Technology Co.,LTD.", "SHENZHEN-BELZON" }, { 0x2CEDEB, "Alpheus Digital Company Limited", "ALPHEUS-DIGITAL-COMPANY" }, { 0x381C4A, "SIMCom Wireless Solutions Co.,Ltd.", "SIMCOM-WIRELESS-SOLUTIONS" }, { 0x901EDD, "GREAT COMPUTER CORPORATION", "GREAT" }, { 0x2C6289, "Regenersis (Glenrothes) Ltd", "REGENERSIS-GLENROTHES" }, { 0xF093C5, "Garland Technology", "GARLAND" }, { 0x4C09B4, "zte corporation", "ZTE" }, { 0xB8B94E, "Shenzhen iBaby Labs, Inc.", "SHENZHEN-IBABY-LABS" }, { 0x00F403, "Orbis Systems Oy", "ORBIS-OY" }, { 0xACC698, "Kohzu Precision Co., Ltd.", "KOHZU-PRECISION" }, { 0x907025, "Garea Microsys Co.,Ltd.", "GAREA-MICROSYS" }, { 0x502ECE, "Asahi Electronics Co.,Ltd", "ASAHI-ELECTRONICS" }, { 0x440CFD, "NetMan Co., Ltd.", "NETMAN" }, { 0x7CEBEA, "ASCT", "ASCT" }, { 0x085B0E, "Fortinet, Inc.", "FORTINET" }, { 0x4C0FC7, "Earda Electronics Co.,Ltd ", "EARDA-ELECTRONICS" }, { 0x64C944, "LARK Technologies, Inc", "LARK-TECHNOLOGIES" }, { 0x6869F2, "ComAp s.r.o.", "COMAP-S-R-O" }, { 0xB889CA, "ILJIN ELECTRIC Co., Ltd.", "ILJIN-ELECTRIC" }, { 0xB85AFE, "Handaer Communication Technology (Beijing) Co., Ltd", "HANDAER-COMMUNICATION-BEIJING" }, { 0x604616, "XIAMEN VANN INTELLIGENT CO., LTD", "XIAMEN-VANN-INTELLIGENT" }, { 0xECD925, "RAMI", "RAMI" }, { 0x049F06, "Smobile Co., Ltd.", "SMOBILE" }, { 0xD806D1, "Honeywell Fire System (Shanghai) Co,. Ltd.", "HONEYWELL-FIRE-SYSTEM-SHANGHAI" }, { 0x8C6AE4, "Viogem Limited", "VIOGEM" }, { 0x20C1AF, "i Wit Digital Co., Limited", "I-WIT-DIGITAL" }, { 0xD88A3B, "UNIT-EM", "UNIT-EM" }, { 0xBCD940, "ASR Co,.Ltd.", "ASR" }, { 0xEC4993, "Qihan Technology Co., Ltd ", "QIHAN" }, { 0xB0ACFA, "FUJITSU LIMITED", "FUJITSU" }, { 0x1C959F, "Veethree Electronics And Marine LLC", "VEETHREE-ELECTRONICS-AND-MARINE-LLC" }, { 0x18D949, "Qvis Labs, LLC", "QVIS-LABS-LLC" }, { 0x646223, "Cellient Co., Ltd.", "CELLIENT" }, { 0xACF0B2, "Becker Electronics Taiwan Ltd.", "BECKER-ELECTRONICS-TAIWAN" }, { 0x10A932, "Beijing Cyber Cloud Technology Co. ,Ltd.", "BEIJING-CYBER-CLOUD" }, { 0xC47BA3, "NAVIS Inc.", "NAVIS" }, { 0xA81758, "Elektronik System i Umeå AB", "ELEKTRONIK-SYSTEM-I-UMEå-AB" }, { 0x44348F, "MXT INDUSTRIAL LTDA", "MXT-INDUSTRIAL-LTDA" }, { 0x9C0111, "Shenzhen Newabel Electronic Co., Ltd.", "SHENZHEN-NEWABEL" }, { 0x0CA138, "Blinq Wireless Inc.", "BLINQ-WIRELESS" }, { 0x348137, "UNICARD SA", "UNICARD" }, { 0x64F242, "Gerdes Aktiengesellschaft", "GERDES-AKTIENGESELLSCHAFT" }, { 0x60F281, "TRANWO TECHNOLOGY CO., LTD.", "TRANWO" }, { 0x642400, "Xorcom Ltd.", "XORCOM" }, { 0x4CAA16, "AzureWave Technologies (Shanghai) Inc.", "AZUREWAVE-TECHNOLOGIES-SHANGHAI" }, { 0x1C6BCA, "Mitsunami Co., Ltd.", "MITSUNAMI" }, { 0x08379C, "Topaz Co. LTD.", "TOPAZ" }, { 0xE83EFB, "GEODESIC LTD.", "GEODESIC" }, { 0x4016FA, "EKM Metering", "EKM-METERING" }, { 0x3C363D, "Nokia Corporation", "NOKIA" }, { 0xBC0200, "Stewart Audio", "STEWART-AUDIO" }, { 0x1C973D, "PRICOM Design", "PRICOM-DESIGN" }, { 0xF00786, "Shandong Bittel Electronics Co., Ltd", "SHANDONG-BITTEL-ELECTRONICS" }, { 0x885C47, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0xE0F9BE, "Cloudena Corp.", "CLOUDENA" }, { 0x3CC1F6, "Melange Systems Pvt. Ltd.", "MELANGE-PVT" }, { 0x54E63F, "ShenZhen LingKeWeiEr Technology Co., Ltd.", "SHENZHEN-LINGKEWEIER" }, { 0xF88C1C, "KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING", "KAISHUN-BEIJING" }, { 0x940149, "AutoHotBox", "AUTOHOTBOX" }, { 0xC035BD, "Velocytech Aps", "VELOCYTECH-APS" }, { 0xF897CF, "DAESHIN-INFORMATION TECHNOLOGY CO., LTD.", "DAESHIN-INFORMATION" }, { 0x383F10, "DBL Technology Ltd.", "DBL" }, { 0x8C6878, "Nortek-AS", "NORTEK-AS" }, { 0x8016B7, "Brunel University", "BRUNEL-UNIVERSITY" }, { 0x9C611D, "Omni-ID USA, Inc.", "OMNI-ID-USA" }, { 0x78BEBD, "STULZ GmbH", "STULZ" }, { 0x3C9174, "ALONG COMMUNICATION TECHNOLOGY", "ALONG-COMMUNICATION" }, { 0xE8D0FA, "MKS Instruments Deutschland GmbH", "MKS-INSTRUMENTS-DEUTSCHLAND" }, { 0x98262A, "Applied Research Associates, Inc", "APPLIED-RESEARCH-ASSOCIATES" }, { 0xB0D2F5, "Vello Systems, Inc.", "VELLO" }, { 0xC89F42, "VDII Innovation AB", "VDII-INNOVATION-AB" }, { 0xA41875, "Cisco Systems, Inc", "CISCO" }, { 0x640E94, "Pluribus Networks, Inc.", "PLURIBUS-NETWORKS" }, { 0x6CE983, "Gastron Co., LTD.", "GASTRON" }, { 0x0CB4EF, "Digience Co.,Ltd.", "DIGIENCE" }, { 0xD0DB32, "Nokia Corporation", "NOKIA" }, { 0x609084, "DSSD Inc", "DSSD" }, { 0xA4E731, "Nokia Corporation", "NOKIA" }, { 0x0808EA, "AMSC", "AMSC" }, { 0xC05E79, "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD", "SHENZHEN-HUAXUN-ARK-TECHNOLOGIES" }, { 0xA4934C, "Cisco Systems, Inc", "CISCO" }, { 0xE85484, "NEO Information Systems Co., Ltd.", "NEO-INFORMATION" }, { 0x74AE76, "iNovo Broadband, Inc.", "INOVO-BROADBAND" }, { 0x60B933, "Deutron Electronics Corp.", "DEUTRON-ELECTRONICS" }, { 0x38EE9D, "Anedo Ltd.", "ANEDO" }, { 0x80CEB1, "Theissen Training Systems GmbH", "THEISSEN-TRAINING" }, { 0x3C3888, "ConnectQuest, llc", "CONNECTQUEST-LLC" }, { 0x08BE09, "Astrol Electronic AG", "ASTROL" }, { 0xD8B8F6, "Nantworks", "NANTWORKS" }, { 0x6044F5, "Easy Digital Ltd.", "EASY-DIGITAL" }, { 0xAC51EE, "Cambridge Communication Systems Ltd", "CAMBRIDGE-COMMUNICATION" }, { 0x10E4AF, "APR, LLC", "APR-LLC" }, { 0xB0BD6D, "Echostreams Innovative Solutions", "ECHOSTREAMS-INNOVATIVE-SOLUTIONS" }, { 0xF0D14F, "LINEAR LLC", "LINEAR-LLC" }, { 0xAC3D75, "HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD.", "HANGZHOU-ZHIWAY-TECHNOLOGIES" }, { 0x141A51, "Treetech Sistemas Digitais", "TREETECH-SISTEMAS-DIGITAIS" }, { 0x845787, "DVR C&C Co., Ltd.", "DVR-C-C" }, { 0xF436E1, "Abilis Systems SARL", "ABILIS-SARL" }, { 0x587FC8, "S2M", "S2M" }, { 0xC49805, "Minieum Networks, Inc", "MINIEUM-NETWORKS" }, { 0x90F4C1, "Rand McNally", "RAND-MCNALLY" }, { 0x18193F, "Tamtron Oy", "TAMTRON-OY" }, { 0xF8F7FF, "SYN-TECH SYSTEMS INC", "SYN-TECH" }, { 0xF473CA, "Conversion Sound Inc.", "CONVERSION-SOUND" }, { 0x00E8AB, "Meggitt Training Systems, Inc.", "MEGGITT-TRAINING" }, { 0x18421D, "Private", "PRIVATE" }, { 0xC401B1, "SeekTech INC", "SEEKTECH" }, { 0x1C5FFF, "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch", "BEIJING-ERENEBEN-INFORMATION-SHENZHEN-BRANCH" }, { 0xC0C946, "MITSUYA LABORATORIES INC.", "MITSUYA-LABORATORIES" }, { 0xACC2EC, "CLT INT'L IND. CORP.", "CLT-IND" }, { 0x702F4B, "PolyVision Inc.", "POLYVISION" }, { 0x741489, "SRT Wireless", "SRT-WIRELESS" }, { 0x94CA0F, "Honeywell Analytics", "HONEYWELL-ANALYTICS" }, { 0x848D84, "Rajant Corporation", "RAJANT" }, { 0xD8337F, "Office FA.com Co.,Ltd.", "OFFICE-FA-COM" }, { 0x7CEF8A, "Inhon International Ltd.", "INHON" }, { 0x84AF1F, "Beat System Service Co,. Ltd.", "BEAT-SYSTEM-SERVICE" }, { 0x100D2F, "Online Security Pty. Ltd.", "ONLINE-SECURITY-PTY" }, { 0x408B07, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x980284, "Theobroma Systems GmbH", "THEOBROMA" }, { 0xE03C5B, "SHENZHEN JIAXINJIE ELECTRON CO.,LTD", "SHENZHEN-JIAXINJIE-ELECTRON" }, { 0x645563, "Intelight Inc.", "INTELIGHT" }, { 0xC467B5, "Libratone A/S", "LIBRATONE-A/S" }, { 0xA4EF52, "Telewave Co., Ltd.", "TELEWAVE" }, { 0xF4044C, "ValenceTech Limited", "VALENCETECH" }, { 0x1CBBA8, "OJSC Ufimskiy Zavod Promsvyaz", "OJSC-UFIMSKIY-ZAVOD-PROMSVYAZ" }, { 0x506028, "Xirrus Inc.", "XIRRUS" }, { 0x24B657, "Cisco Systems, Inc", "CISCO" }, { 0x940B2D, "NetView Technologies(Shenzhen) Co., Ltd", "NETVIEW-TECHNOLOGIES-SHENZHEN" }, { 0x306E5C, "Validus Technologies", "VALIDUS-TECHNOLOGIES" }, { 0xE843B6, "QNAP Systems, Inc.", "QNAP" }, { 0x5CC9D3, "PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA", "PALLADIUM-ENERGY-ELETRONICA-DA-AMAZONIA-LTDA" }, { 0x407B1B, "Mettle Networks Inc.", "METTLE-NETWORKS" }, { 0x64E161, "DEP Corp.", "DEP" }, { 0xC8A620, "Nebula, Inc", "NEBULA" }, { 0x989080, "Linkpower Network System Inc Ltd.", "LINKPOWER-NETWORK-SYSTEM" }, { 0x0064A6, "Maquet CardioVascular", "MAQUET-CARDIOVASCULAR" }, { 0x3C4E47, "Etronic A/S", "ETRONIC-A/S" }, { 0xC8F9F9, "Cisco Systems, Inc", "CISCO" }, { 0xF0F755, "Cisco Systems, Inc", "CISCO" }, { 0xB01C91, "Elim Co", "ELIM" }, { 0x0CA2F4, "Chameleon Technology (UK) Limited", "CHAMELEON-UK" }, { 0x846AED, "Wireless Tsukamoto.,co.LTD", "WIRELESS-TSUKAMOTO" }, { 0xD8E952, "KEOPSYS", "KEOPSYS" }, { 0x3CB9A6, "Belden Deutschland GmbH", "BELDEN-DEUTSCHLAND" }, { 0x3440B5, "IBM", "IBM" }, { 0x90D74F, "Bookeen", "BOOKEEN" }, { 0x905682, "Lenbrook Industries Limited", "LENBROOK-INDUSTRIES" }, { 0xCC6DEF, "TJK Tietolaite Oy", "TJK-TIETOLAITE-OY" }, { 0x3CE624, "LG Display ", "LG-DISPLAY" }, { 0xD8F0F2, "Zeebo Inc", "ZEEBO" }, { 0xB0CF4D, "MI-Zone Technology Ireland", "MI-ZONE-IRELAND" }, { 0x143605, "Nokia Corporation", "NOKIA" }, { 0xB87424, "Viessmann Elektronik GmbH", "VIESSMANN-ELEKTRONIK" }, { 0xC81AFE, "DLOGIC GmbH", "DLOGIC" }, { 0x9C53CD, "ENGICAM s.r.l.", "ENGICAM-S-R-L" }, { 0xDCC101, "SOLiD Technologies, Inc.", "SOLID-TECHNOLOGIES" }, { 0xAC6FBB, "TATUNG Technology Inc.", "TATUNG" }, { 0x1803FA, "IBT Interfaces", "IBT-INTERFACES" }, { 0x608645, "Avery Weigh-Tronix, LLC", "AVERY-WEIGH-TRONIX-LLC" }, { 0x541DFB, "Freestyle Energy Ltd", "FREESTYLE-ENERGY" }, { 0x9CF67D, "Ricardo Prague, s.r.o.", "RICARDO-PRAGUE-S-R-O" }, { 0xA0E201, "AVTrace Ltd.(China)", "AVTRACE-CHINA" }, { 0x04EE91, "x-fabric GmbH", "X-FABRIC" }, { 0x183825, "Wuhan Lingjiu High-tech Co.,Ltd.", "WUHAN-LINGJIU-HIGH-TECH" }, { 0x5404A6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xF83376, "Good Mind Innovation Co., Ltd.", "GOOD-MIND-INNOVATION" }, { 0xC46044, "Everex Electronics Limited", "EVEREX-ELECTRONICS" }, { 0x645422, "Equinox Payments", "EQUINOX-PAYMENTS" }, { 0xD412BB, "Quadrant Components Inc. Ltd", "QUADRANT-COMPONENTS" }, { 0x40E793, "Shenzhen Siviton Technology Co.,Ltd", "SHENZHEN-SIVITON" }, { 0x2C67FB, "ShenZhen Zhengjili Electronics Co., LTD", "SHENZHEN-ZHENGJILI-ELECTRONICS" }, { 0xD89760, "C2 Development, Inc.", "C2-DEVELOPMENT" }, { 0x1CB17F, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x942E17, "Schneider Electric Canada Inc", "SCHNEIDER-ELECTRIC-CANADA" }, { 0xB89674, "AllDSP GmbH & Co. KG", "ALLDSP" }, { 0x6CA682, "EDAM information & communications", "EDAM-INFORMATION-COMMUNICATION" }, { 0x48A22D, "Shenzhen Huaxuchang Telecom Technology Co.,Ltd", "SHENZHEN-HUAXUCHANG-TELECOM" }, { 0x50ED94, "EGATEL SL", "EGATEL-SL" }, { 0xB87447, "Convergence Technologies", "CONVERGENCE-TECHNOLOGIES" }, { 0x70A66A, "Prox Dynamics AS", "PROX-DYNAMICS-AS" }, { 0xDC175A, "Hitachi High-Technologies Corporation", "HITACHI-HIGH-TECHNOLOGIES" }, { 0x5C076F, "Thought Creator", "THOUGHT-CREATOR" }, { 0x3C0FC1, "KBC Networks", "KBC-NETWORKS" }, { 0x58E636, "EVRsafe Technologies", "EVRSAFE-TECHNOLOGIES" }, { 0x90D11B, "Palomar Medical Technologies", "PALOMAR-MEDICAL-TECHNOLOGIES" }, { 0xCC60BB, "Empower RF Systems", "EMPOWER-RF" }, { 0x24497B, "Innovative Converged Devices Inc", "INNOVATIVE-CONVERGED-DEVICES" }, { 0xECBD09, "FUSION Electronics Ltd", "FUSION-ELECTRONICS" }, { 0x54847B, "Digital Devices GmbH", "DIGITAL-DEVICES" }, { 0x705CAD, "Konami Gaming Inc", "KONAMI-GAMING" }, { 0x788973, "CMC", "CMC" }, { 0xDCCE41, "FE GLOBAL HONG KONG LIMITED", "FE-GLOBAL-HONG-KONG" }, { 0x4C774F, "Embedded Wireless Labs ", "EMBEDDED-WIRELESS-LABS" }, { 0x203706, "Cisco Systems, Inc", "CISCO" }, { 0x7C4C58, "Scale Computing, Inc.", "SCALE-COMPUTING" }, { 0xFCC23D, "Atmel Corporation", "ATMEL" }, { 0x7C1E52, "Microsoft", "MICROSOFT" }, { 0xDCB4C4, "Microsoft XCG", "MICROSOFT-XCG" }, { 0x74FDA0, "Compupal (Group) Corporation ", "COMPUPAL-GROUP" }, { 0xC029F3, "XySystem", "XYSYSTEM" }, { 0x48F317, "Private", "PRIVATE" }, { 0xB07D62, "Dipl.-Ing. H. Horstmann GmbH", "DIPL--ING-H-HORSTMANN" }, { 0x68974B, "Shenzhen Costar Electronics Co. Ltd.", "SHENZHEN-COSTAR-ELECTRONICS" }, { 0xB8BB6D, "ENERES Co.,Ltd.", "ENERES" }, { 0x645DD7, "Shenzhen Lifesense Medical Electronics Co., Ltd. ", "SHENZHEN-LIFESENSE-MEDICAL-ELECTRONICS" }, { 0xD45AB2, "Galleon Systems", "GALLEON" }, { 0xC40142, "MaxMedia Technology Limited", "MAXMEDIA" }, { 0xA06E50, "Nanotek Elektronik Sistemler Ltd. Sti.", "NANOTEK-ELEKTRONIK-SISTEMLER-STI" }, { 0x182C91, "Concept Development, Inc.", "CONCEPT-DEVELOPMENT" }, { 0xEC4670, "Meinberg Funkuhren GmbH & Co. KG", "MEINBERG-FUNKUHREN" }, { 0xB40B7A, "Brusa Elektronik AG", "BRUSA-ELEKTRONIK" }, { 0xBC764E, "Rackspace US, Inc.", "RACKSPACE-US" }, { 0xC4EEAE, "VSS Monitoring", "VSS-MONITORING" }, { 0x2437EF, "EMC Electronic Media Communication SA", "EMC-MEDIA-COMMUNICATION" }, { 0xD4F63F, "IEA S.R.L.", "IEA-S-R-L" }, { 0x4C0289, "LEX COMPUTECH CO., LTD", "LEX-COMPUTECH" }, { 0xE435FB, "Sabre Technology (Hull) Ltd", "SABRE-HULL" }, { 0x00CD90, "MAS Elektronik AG", "MAS-ELEKTRONIK" }, { 0xA8BD1A, "Honey Bee (Hong Kong) Limited", "HONEY-BEE-HONG-KONG" }, { 0xACCC8E, "Axis Communications AB", "AXIS-COMMUNICATION-AB" }, { 0x187C81, "Valeo Vision Systems", "VALEO-VISION" }, { 0xDC1EA3, "Accensus LLC", "ACCENSUS-LLC" }, { 0xA40130, "ABIsystems Co., LTD", "ABISYSTEMS" }, { 0x68F125, "Data Controls Inc.", "DATA-CONTROLS" }, { 0x706F81, "Private", "PRIVATE" }, { 0x30E4DB, "Cisco Systems, Inc", "CISCO" }, { 0x742B0F, "Infinidat Ltd.", "INFINIDAT" }, { 0x280CB8, "Mikrosay Yazilim ve Elektronik A.S.", "MIKROSAY-YAZILIM-VE-ELEKTRONIK-A-S" }, { 0xA06CEC, "RIM", "RIM" }, { 0x443EB2, "DEOTRON Co., LTD.", "DEOTRON" }, { 0x8CB82C, "IPitomy Communications", "IPITOMY-COMMUNICATION" }, { 0x807DE3, "Chongqing Sichuan Instrument Microcircuit Co.LTD.", "CHONGQING-SICHUAN-INSTRUMENT-MICROCIRCUIT" }, { 0x1C8E8E, "DB Communication & Systems Co., ltd.", "DB-COMMUNICATION" }, { 0xF0022B, "Chrontel", "CHRONTEL" }, { 0x007F28, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0C924E, "Rice Lake Weighing Systems", "RICE-LAKE-WEIGHING" }, { 0x40040C, "A&T", "A-T" }, { 0xA0165C, "Triteka LTD", "TRITEKA" }, { 0x90B97D, "Johnson Outdoors Marine Electronics d/b/a Minnkota", "JOHNSON-OUTDOORS-MARINE-ELECTRONICS-D/B/A-MINNKOTA" }, { 0x8821E3, "Nebusens, S.L.", "NEBUSENS-S-L" }, { 0xB0F1BC, "Dhemax Ingenieros Ltda", "DHEMAX-INGENIEROS-LTDA" }, { 0x3C096D, "Powerhouse Dynamics", "POWERHOUSE-DYNAMICS" }, { 0xCC501C, "KVH Industries, Inc.", "KVH-INDUSTRIES" }, { 0xAC6FD9, "Valueplus Inc.", "VALUEPLUS" }, { 0xA4E391, "DENY FONTAINE", "DENY-FONTAINE" }, { 0x04A82A, "Nokia Corporation", "NOKIA" }, { 0x48D8FE, "ClarIDy Solutions, Inc.", "CLARIDY-SOLUTIONS" }, { 0x70B265, "Hiltron s.r.l.", "HILTRON-S-R-L" }, { 0x84D9C8, "Unipattern Co.,", "UNIPATTERN" }, { 0x1C955D, "I-LAX ELECTRONICS INC.", "I-LAX-ELECTRONICS" }, { 0x94AAB8, "Joview(Beijing) Technology Co. Ltd.", "JOVIEW-BEIJING" }, { 0x18B3BA, "Netlogic AB", "NETLOGIC-AB" }, { 0xF43E9D, "Benu Networks, Inc.", "BENU-NETWORKS" }, { 0x6469BC, "Hytera Communications Co .,ltd", "HYTERA-COMMUNICATION" }, { 0x64094C, "Beijing Superbee Wireless Technology Co.,Ltd", "BEIJING-SUPERBEE-WIRELESS" }, { 0xF0AE51, "Xi3 Corp", "XI3" }, { 0x782EEF, "Nokia Corporation", "NOKIA" }, { 0x78510C, "LiveU Ltd.", "LIVEU" }, { 0x306118, "Paradom Inc.", "PARADOM" }, { 0xC84529, "IMK Networks Co.,Ltd", "IMK-NETWORKS" }, { 0xA88CEE, "MicroMade Galka i Drozdz sp.j.", "MICROMADE-GALKA-I-DROZDZ-SP-J" }, { 0x204005, "feno GmbH", "FENO" }, { 0x6C81FE, "Mitsuba Corporation", "MITSUBA" }, { 0xE8F928, "RFTECH SRL", "RFTECH-SRL" }, { 0x703AD8, "Shenzhen Afoundry Electronic Co., Ltd", "SHENZHEN-AFOUNDRY" }, { 0x4C98EF, "Zeo", "ZEO" }, { 0xDCA6BD, "Beijing Lanbo Technology Co., Ltd.", "BEIJING-LANBO" }, { 0x58E808, "AUTONICS CORPORATION", "AUTONICS" }, { 0x8058C5, "NovaTec Kommunikationstechnik GmbH", "NOVATEC-KOMMUNIKATIONSTECHNIK" }, { 0xC0EAE4, "Sonicwall", "SONICWALL" }, { 0xF8A9DE, "PUISSANCE PLUS", "PUISSANCE-PLUS" }, { 0xD4F027, "Navetas Energy Management", "NAVETAS-ENERGY-MANAGEMENT" }, { 0x5C0CBB, "CELIZION Inc.", "CELIZION" }, { 0xB8871E, "Good Mind Industries Co., Ltd.", "GOOD-MIND-INDUSTRIES" }, { 0xF8EA0A, "Dipl.-Math. Michael Rauch", "DIPL--MATH-MICHAEL-RAUCH" }, { 0xBC5FF4, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0xA4B36A, "JSC SDO Chromatec", "JSC-SDO-CHROMATEC" }, { 0x905F8D, "modas GmbH", "MODAS" }, { 0xE0C922, "Jireh Energy Tech., Ltd.", "JIREH-ENERGY-TECH" }, { 0x28401A, "C8 MediSensors, Inc.", "C8-MEDISENSORS" }, { 0xDC3C84, "Ticom Geomatics, Inc.", "TICOM-GEOMATICS" }, { 0xE8CC32, "Micronet LTD", "MICRONET" }, { 0x9C6ABE, "QEES ApS.", "QEES-APS" }, { 0x3429EA, "MCD ELECTRONICS SP. Z O.O.", "MCD-ELECTRONICS-SP-Z-O-O" }, { 0xD43AE9, "DONGGUAN ipt INDUSTRIAL CO., LTD", "DONGGUAN-IPT-INDUSTRIAL" }, { 0xACC935, "Ness Corporation", "NESS" }, { 0x7C4A82, "Portsmith LLC", "PORTSMITH-LLC" }, { 0x2C0033, "EControls, LLC", "ECONTROLS-LLC" }, { 0xE0F211, "Digitalwatt", "DIGITALWATT" }, { 0x0432F4, "Partron", "PARTRON" }, { 0xAC199F, "SUNGROW POWER SUPPLY CO.,LTD.", "SUNGROW-POWER-SUPPLY" }, { 0x1CAA07, "Cisco Systems, Inc", "CISCO" }, { 0x308CFB, "Dropcam", "DROPCAM" }, { 0xCCF841, "Lumewave", "LUMEWAVE" }, { 0x701404, "Limited Liability Company", "LIABILITY-COMPANY" }, { 0x1C35F1, "NEW Lift Neue Elektronische Wege Steuerungsbau GmbH", "NEW-LIFT-NEUE-ELEKTRONISCHE-WEGE-STEUERUNGSBAU" }, { 0xCCD9E9, "SCR Engineers Ltd.", "SCR-ENGINEERS" }, { 0xF0DB30, "Yottabyte", "YOTTABYTE" }, { 0x9C31B6, "Kulite Semiconductor Products Inc", "KULITE-SEMICONDUCTOR-PRODUCTS" }, { 0x5C6A7D, "KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI. ", "KENTKART-EGE-ELEKTRONIK-SAN-VE-TIC-STI" }, { 0x04FF51, "NOVAMEDIA INNOVISION SP. Z O.O.", "NOVAMEDIA-INNOVISION-SP-Z-O-O" }, { 0xFCD4F2, "The Coca Cola Company", "THE-COCA-COLA-COMPANY" }, { 0xC471FE, "Cisco Systems, Inc", "CISCO" }, { 0x340804, "D-Link Corporation", "D-LINK" }, { 0xB44CC2, "NR ELECTRIC CO., LTD", "NR-ELECTRIC" }, { 0x084EBF, "Broad Net Mux Corporation", "BROAD-NET-MUX" }, { 0x48CB6E, "Cello Electronics (UK) Ltd", "CELLO-ELECTRONICS-UK" }, { 0xEC3BF0, "NovelSat", "NOVELSAT" }, { 0xA86A6F, "RIM", "RIM" }, { 0x4022ED, "Digital Projection Ltd", "DIGITAL-PROJECTION" }, { 0x0817F4, "IBM Corp", "IBM" }, { 0xC4D489, "JiangSu Joyque Information Industry Co.,Ltd", "JIANGSU-JOYQUE-INFORMATION-INDUSTRY" }, { 0x1C7C11, "EID ", "EID" }, { 0xB0B32B, "Slican Sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x5842E4, "Baxter International Inc", "BAXTER" }, { 0x8CA048, "Beijing NeTopChip Technology Co.,LTD", "BEIJING-NETOPCHIP" }, { 0x804F58, "ThinkEco, Inc.", "THINKECO" }, { 0xB06563, "Shanghai Railway Communication Factory", "SHANGHAI-RAILWAY-COMMUNICATION-FACTORY" }, { 0x349A0D, "ZBD Displays Ltd", "ZBD-DISPLAYS" }, { 0xA0B5DA, "HongKong THTF Co., Ltd", "HONGKONG-THTF" }, { 0xCCCD64, "SM-Electronic GmbH", "SM" }, { 0xE82877, "TMY Co., Ltd.", "TMY" }, { 0xAC8112, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x6CA906, "Telefield Ltd", "TELEFIELD" }, { 0x3C02B1, "Creation Technologies LP", "CREATION-TECHNOLOGIES-LP" }, { 0xE46C21, "messMa GmbH", "MESSMA" }, { 0x0470BC, "Globalstar Inc.", "GLOBALSTAR" }, { 0xE05FB9, "Cisco Systems, Inc", "CISCO" }, { 0x081735, "Cisco Systems, Inc", "CISCO" }, { 0x20FECD, "System In Frontier Inc.", "SYSTEM-IN-FRONTIER" }, { 0x94D019, "Cydle Corp.", "CYDLE" }, { 0x2CA157, "acromate, Inc.", "ACROMATE" }, { 0x70DDA1, "Tellabs", "TELLABS" }, { 0x30EB25, "INTEK DIGITAL", "INTEK-DIGITAL" }, { 0xBC3E13, "Accordance Systems Inc.", "ACCORDANCE" }, { 0x0455CA, "BriView (Xiamen) Corp.", "BRIVIEW-XIAMEN" }, { 0xD45D42, "Nokia Corporation", "NOKIA" }, { 0xBC2846, "NextBIT Computing Pvt. Ltd.", "NEXTBIT-COMPUTING-PVT" }, { 0x4425BB, "Bamboo Entertainment Corporation", "BAMBOO-ENTERTAINMENT" }, { 0xB8A8AF, "Logic S.p.A.", "LOGIC-S-P-A" }, { 0x648125, "Alphatron Marine BV", "ALPHATRON-MARINE" }, { 0x042605, "GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH", "GFR-GESELLSCHAFT-FüR-REGELUNGSTECHNIK-UND-ENERGIEEINSPARUNG-MBH" }, { 0x9C645E, "Harman Consumer Group", "HARMAN-CONSUMER-GROUP" }, { 0x78CD8E, "SMC Networks Inc", "SMC-NETWORKS" }, { 0x5C9AD8, "FUJITSU LIMITED", "FUJITSU" }, { 0x144C1A, "Max Communication GmbH", "MAX-COMMUNICATION" }, { 0xBC6E76, "Green Energy Options Ltd", "GREEN-ENERGY-OPTIONS" }, { 0x108CCF, "Cisco Systems, Inc", "CISCO" }, { 0x74E06E, "Ergophone GmbH", "ERGOPHONE" }, { 0x18AF9F, "DIGITRONIC Automationsanlagen GmbH", "DIGITRONIC-AUTOMATIONSANLAGEN" }, { 0xEC4644, "TTK SAS", "TTK-SAS" }, { 0xDCD87F, "Shenzhen JoinCyber Telecom Equipment Ltd", "SHENZHEN-JOINCYBER-TELECOM-EQUIPMENT" }, { 0xB08991, "LGE ", "LGE" }, { 0x44DCCB, "SEMINDIA SYSTEMS PVT LTD", "SEMINDIA-PVT" }, { 0x90D92C, "HUG-WITSCHI AG", "HUG-WITSCHI" }, { 0xB428F1, "E-Prime Co., Ltd.", "E-PRIME" }, { 0xB4749F, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xAC2FA8, "Humannix Co.,Ltd.", "HUMANNIX" }, { 0x7C4AA8, "MindTree Wireless PVT Ltd", "MINDTREE-WIRELESS-PVT" }, { 0xC8A70A, "Verizon Business", "VERIZON-BUSINESS" }, { 0x304EC3, "Tianjin Techua Technology Co., Ltd.", "TIANJIN-TECHUA" }, { 0xBC4377, "Hang Zhou Huite Technology Co.,ltd.", "HANG-ZHOU-HUITE" }, { 0xA81B18, "XTS CORP", "XTS" }, { 0x04E2F8, "AEP Ticketing solutions srl", "AEP-TICKETING-SOLUTIONS-SRL" }, { 0x8C5105, "Shenzhen ireadygo Information Technology CO.,LTD.", "SHENZHEN-IREADYGO-INFORMATION" }, { 0x28E297, "Shanghai InfoTM Microelectronics Co.,Ltd.", "SHANGHAI-INFOTM-MICROELECTRONICS" }, { 0xD093F8, "Stonestreet One LLC", "STONESTREET-ONE-LLC" }, { 0x1C334D, "ITS Telecom", "ITS-TELECOM" }, { 0x609E64, "Vivonic GmbH", "VIVONIC" }, { 0xD44F80, "Kemper Digital GmbH", "KEMPER-DIGITAL" }, { 0x34684A, "Teraworks Co., Ltd.", "TERAWORKS" }, { 0x0CC6AC, "DAGS", "DAGS" }, { 0xD82A7E, "Nokia Corporation", "NOKIA" }, { 0x5CBD9E, "HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED", "HONGKONG-MIRACLE-EAGLE-GROUP" }, { 0x743889, "ANNAX Anzeigesysteme GmbH", "ANNAX-ANZEIGESYSTEME" }, { 0x647FDA, "TEKTELIC Communications Inc.", "TEKTELIC-COMMUNICATION" }, { 0x90610C, "Fida International (S) Pte Ltd", "FIDA-S-PTE" }, { 0x3C5F01, "Synerchip Co., Ltd.", "SYNERCHIP" }, { 0x708B78, "citygrow technology co., ltd", "CITYGROW" }, { 0x74CD0C, "Smith Myers Communications Ltd.", "SMITH-MYERS-COMMUNICATION" }, { 0xB8EE79, "YWire Technologies, Inc.", "YWIRE-TECHNOLOGIES" }, { 0x40C245, "Shenzhen Hexicom Technology Co., Ltd.", "SHENZHEN-HEXICOM" }, { 0x7076F0, "LevelOne Communications (India) Private Limited", "LEVELONE-COMMUNICATION-INDIA-PRIVATE" }, { 0x48C8B6, "SysTec GmbH", "SYSTEC" }, { 0x9C4563, "DIMEP Sistemas", "DIMEP-SISTEMAS" }, { 0xE42771, "Smartlabs", "SMARTLABS" }, { 0x0876FF, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x401D59, "Biometric Associates, LP", "BIOMETRIC-ASSOCIATES-LP" }, { 0x4C2C80, "Beijing Skyway Technologies Co.,Ltd ", "BEIJING-SKYWAY-TECHNOLOGIES" }, { 0x08D29A, "Proformatique", "PROFORMATIQUE" }, { 0x90D852, "Comtec Co., Ltd.", "COMTEC" }, { 0x28061E, "NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD", "NINGBO-GLOBAL-USEFUL-ELECTRIC" }, { 0x4037AD, "Macro Image Technology, Inc.", "MACRO-IMAGE" }, { 0x64E8E6, "global moisture management system", "GLOBAL-MOISTURE-MANAGEMENT-SYSTEM" }, { 0x34A183, "AWare, Inc", "AWARE" }, { 0x588D09, "Cisco Systems, Inc", "CISCO" }, { 0x342109, "Jensen Scandinavia AS", "JENSEN-SCANDINAVIA-AS" }, { 0x08FAE0, "Fohhn Audio AG", "FOHHN-AUDIO" }, { 0x506F9A, "Wi-Fi Alliance", "WI-FI-ALLIANCE" }, { 0x7CF098, "Bee Beans Technologies, Inc.", "BEE-BEANS-TECHNOLOGIES" }, { 0x9C7514, "Wildix srl", "WILDIX-SRL" }, { 0xBC7DD1, "Radio Data Comms", "RADIO-DATA-COMMS" }, { 0x28068D, "ITL, LLC", "ITL-LLC" }, { 0xF0D767, "Axema Passagekontroll AB", "AXEMA-PASSAGEKONTROLL-AB" }, { 0xA4AE9A, "Maestro Wireless Solutions ltd.", "MAESTRO-WIRELESS-SOLUTIONS" }, { 0x5CD135, "Xtreme Power Systems", "XTREME-POWER" }, { 0x9C28BF, "Continental Automotive Czech Republic s.r.o.", "CONTINENTAL-AUTOMOTIVE-CZECH-REPUBLIC-S-R-O" }, { 0x206FEC, "Braemac CA LLC", "BRAEMAC-CA-LLC" }, { 0x64A232, "OOO Samlight", "OOO-SAMLIGHT" }, { 0xA082C7, "P.T.I Co.,LTD", "P-T-I" }, { 0xF41F0B, "YAMABISHI Corporation", "YAMABISHI" }, { 0x447C7F, "Innolight Technology Corporation", "INNOLIGHT" }, { 0xFC75E6, "Handreamnet", "HANDREAMNET" }, { 0x20B0F7, "Enclustra GmbH", "ENCLUSTRA" }, { 0x4013D9, "Global ES", "GLOBAL-ES" }, { 0xF4DC4D, "Beijing CCD Digital Technology Co., Ltd", "BEIJING-CCD-DIGITAL" }, { 0xF8B599, "Guangzhou CHNAVS Digital Technology Co.,Ltd", "GUANGZHOU-CHNAVS-DIGITAL" }, { 0x7C3920, "SSOMA SECURITY", "SSOMA-SECURITY" }, { 0x9C77AA, "NADASNV", "NADASNV" }, { 0xD8B6C1, "NetworkAccountant, Inc.", "NETWORKACCOUNTANT" }, { 0x58D08F, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0x3C99F7, "Lansentechnology AB", "LANSENTECHNOLOGY-AB" }, { 0x94E711, "Xirka Dama Persada PT", "XIRKA-DAMA-PERSADA-PT" }, { 0x507D02, "BIODIT", "BIODIT" }, { 0xF44227, "S & S Research Inc.", "S-S-RESEARCH" }, { 0xD4CBAF, "Nokia Corporation", "NOKIA" }, { 0xCC09C8, "IMAQLIQ LTD", "IMAQLIQ" }, { 0xC4B512, "General Electric Digital Energy", "GENERAL-ELECTRIC-DIGITAL-ENERGY" }, { 0xE02538, "Titan Pet Products", "TITAN-PET-PRODUCTS" }, { 0xCC7A30, "CMAX Wireless Co., Ltd.", "CMAX-WIRELESS" }, { 0xD8760A, "Escort, Inc.", "ESCORT" }, { 0x6063FD, "Transcend Communication Beijing Co.,Ltd.", "TRANSCEND-COMMUNICATION-BEIJING" }, { 0xE08A7E, "Exponent", "EXPONENT" }, { 0x80C6CA, "Endian s.r.l.", "ENDIAN-S-R-L" }, { 0xF8DAE2, "Beta LaserMike", "BETA-LASERMIKE" }, { 0xE80462, "Cisco Systems, Inc", "CISCO" }, { 0x70B08C, "Shenou Communication Equipment Co.,Ltd", "SHENOU-COMMUNICATION-EQUIPMENT" }, { 0xF0E5C3, "Drägerwerk AG & Co. KG aA", "DRäGERWERK-AA" }, { 0x446132, "ecobee inc", "ECOBEE" }, { 0xA4B2A7, "Adaxys Solutions AG", "ADAXYS-SOLUTIONS" }, { 0xF455E0, "Niceway CNC Technology Co.,Ltd.Hunan Province", "NICEWAY-CNC-HUNAN-PROVINCE" }, { 0xAC4FFC, "SVS-VISTEK GmbH", "SVS-VISTEK" }, { 0xFC7CE7, "FCI USA LLC", "FCI-USA-LLC" }, { 0x145412, "Entis Co., Ltd.", "ENTIS" }, { 0x807D1B, "Neosystem Co. Ltd.", "NEOSYSTEM" }, { 0x14FEAF, "SAGITTAR LIMITED", "SAGITTAR" }, { 0x7CB542, "ACES Technology", "ACES" }, { 0x40CD3A, "Z3 Technology", "Z3" }, { 0x045D56, "camtron industrial inc.", "CAMTRON-INDUSTRIAL" }, { 0xAC83F0, "ImmediaTV Corporation", "IMMEDIATV" }, { 0x6CE0B0, "SOUND4", "SOUND4" }, { 0x00336C, "SynapSense Corporation", "SYNAPSENSE" }, { 0xE446BD, "C&C TECHNIC TAIWAN CO., LTD.", "C-C-TECHNIC-TAIWAN" }, { 0x7415E2, "Tri-Sen Systems Corporation", "TRI-SEN" }, { 0xF0BDF1, "Sipod Inc.", "SIPOD" }, { 0x288915, "CashGuard Sverige AB", "CASHGUARD-SVERIGE-AB" }, { 0x40618E, "Stella-Green Co", "STELLA-GREEN" }, { 0x9C4E20, "Cisco Systems, Inc", "CISCO" }, { 0x408493, "Clavister AB", "CLAVISTER-AB" }, { 0x1C3A4F, "AccuSpec Electronics, LLC", "ACCUSPEC-ELECTRONICS-LLC" }, { 0x58E747, "Deltanet AG", "DELTANET" }, { 0xD87533, "Nokia Corporation", "NOKIA" }, { 0xECFE7E, "BlueRadios, Inc.", "BLUERADIOS" }, { 0x7C6F06, "Caterpillar Trimble Control Technologies", "CATERPILLAR-TRIMBLE-CONTROL-TECHNOLOGIES" }, { 0x7C7673, "ENMAS GmbH", "ENMAS" }, { 0x6C6F18, "Stereotaxis, Inc.", "STEREOTAXIS" }, { 0x003532, "Electro-Metrics Corporation", "ELECTRO-METRICS" }, { 0x44376F, "Young Electric Sign Co", "YOUNG-ELECTRIC-SIGN" }, { 0x8C640B, "Beyond Devices d.o.o.", "BEYOND-DEVICES-D-O-O" }, { 0xF04335, "DVN(Shanghai)Ltd.", "DVN-SHANGHAI" }, { 0xA479E4, "KLINFO Corp", "KLINFO" }, { 0x003CC5, "WONWOO Engineering Co., Ltd", "WONWOO-ENGINEERING" }, { 0xE85E53, "Infratec Datentechnik GmbH", "INFRATEC-DATENTECHNIK" }, { 0xC848F5, "MEDISON Xray Co., Ltd", "MEDISON-XRAY" }, { 0x1C17D3, "Cisco Systems, Inc", "CISCO" }, { 0xACBE75, "Ufine Technologies Co.,Ltd.", "UFINE-TECHNOLOGIES" }, { 0xD87157, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x806629, "Prescope Technologies CO.,LTD.", "PRESCOPE-TECHNOLOGIES" }, { 0x90F278, "Radius Gateway", "RADIUS-GATEWAY" }, { 0x68CA00, "Octopus Systems Limited", "OCTOPUS" }, { 0x4C3089, "Thales Transportation Systems GmbH", "THALES-TRANSPORTATION" }, { 0x0C7D7C, "Kexiang Information Technology Co, Ltd.", "KEXIANG-INFORMATION" }, { 0x70D880, "Upos System sp. z o.o.", "UPOS-SYSTEM-SP-Z-O-O" }, { 0x0CC9C6, "Samwin Hong Kong Limited", "SAMWIN-HONG-KONG" }, { 0xB45861, "CRemote, LLC", "CREMOTE-LLC" }, { 0xB8653B, "Bolymin, Inc.", "BOLYMIN" }, { 0xB0973A, "E-Fuel Corporation", "E-FUEL" }, { 0xA05DC1, "TMCT Co., LTD.", "TMCT" }, { 0xE0CA4D, "Shenzhen Unistar Communication Co.,LTD", "SHENZHEN-UNISTAR-COMMUNICATION" }, { 0xE497F0, "Shanghai VLC Technologies Ltd. Co.", "SHANGHAI-VLC-TECHNOLOGIES" }, { 0x204E6B, "Axxana(israel) ltd", "AXXANA-ISRAEL" }, { 0x50F003, "Open Stack, Inc.", "OPEN-STACK" }, { 0x0C17F1, "TELECSYS", "TELECSYS" }, { 0x98BC99, "Edeltech Co.,Ltd.", "EDELTECH" }, { 0xE8E1E2, "Energotest", "ENERGOTEST" }, { 0xFC683E, "Directed Perception, Inc", "DIRECTED-PERCEPTION" }, { 0x6C1811, "Decatur Electronics", "DECATUR-ELECTRONICS" }, { 0x94592D, "EKE Building Technology Systems Ltd", "EKE-BUILDING" }, { 0x9CC077, "PrintCounts, LLC", "PRINTCOUNTS-LLC" }, { 0xA85BB0, "Shenzhen Dehoo Technology Co.,Ltd", "SHENZHEN-DEHOO" }, { 0x089F97, "LEROY AUTOMATION", "LEROY-AUTOMATION" }, { 0x4C5DCD, "Oy Finnish Electric Vehicle Technologies Ltd", "OY-FINNISH-ELECTRIC-VEHICLE-TECHNOLOGIES" }, { 0x10090C, "Janome Sewing Machine Co., Ltd.", "JANOME-SEWING-MACHINE" }, { 0xECB106, "Acuro Networks, Inc", "ACURO-NETWORKS" }, { 0x7C2E0D, "Blackmagic Design", "BLACKMAGIC-DESIGN" }, { 0x08F6F8, "GET Engineering", "GET-ENGINEERING" }, { 0x6CDC6A, "Promethean Limited", "PROMETHEAN" }, { 0x9055AE, "Ericsson, EAB/RWI/K", "ERICSSON-EAB/RWI/K" }, { 0x2C3A28, "Fagor Electrónica", "FAGOR-ELECTRóNICA" }, { 0x90A7C1, "Pakedge Device and Software Inc.", "PAKEDGE-DEVICE-AND-SOFTWARE" }, { 0x80F593, "IRCO Sistemas de Telecomunicación S.A.", "IRCO-SISTEMAS-DE-TELECOMUNICACIóN" }, { 0x6CFDB9, "Proware Technologies Co Ltd.", "PROWARE-TECHNOLOGIES" }, { 0x6CFFBE, "MPB Communications Inc.", "MPB-COMMUNICATION" }, { 0x583CC6, "Omneality Ltd.", "OMNEALITY" }, { 0x0097FF, "Heimann Sensor GmbH", "HEIMANN-SENSOR" }, { 0x34BA51, "Se-Kure Controls, Inc.", "SE-KURE-CONTROLS" }, { 0x44A8C2, "SEWOO TECH CO., LTD", "SEWOO-TECH" }, { 0x8CD628, "Ikor Metering", "IKOR-METERING" }, { 0x481BD2, "Intron Scientific co., ltd.", "INTRON-SCIENTIFIC" }, { 0x009363, "Uni-Link Technology Co., Ltd.", "UNI-LINK" }, { 0x64DB18, "OpenPattern", "OPENPATTERN" }, { 0x580556, "Elettronica GF S.r.L.", "ELETTRONICA-GF-S-R-L" }, { 0x88B627, "Gembird Europe BV", "GEMBIRD-EUROPE" }, { 0xD41F0C, "JAI Oy", "JAI-OY" }, { 0x3C4C69, "Infinity System S.L.", "INFINITY-SYSTEM-S-L" }, { 0x44E49A, "OMNITRONICS PTY LTD", "OMNITRONICS-PTY" }, { 0x74F07D, "BnCOM Co.,Ltd", "BNCOM" }, { 0x1065A3, "Core Brands LLC", "CORE-BRANDS-LLC" }, { 0x20415A, "Smarteh d.o.o.", "SMARTEH-D-O-O" }, { 0x703C39, "SEAWING Kft", "SEAWING-KFT" }, { 0x14A86B, "ShenZhen Telacom Science&Technology Co., Ltd", "SHENZHEN-TELACOM-SCIENCE" }, { 0x0CC3A7, "Meritec", "MERITEC" }, { 0x4C322D, "TELEDATA NETWORKS", "TELEDATA-NETWORKS" }, { 0xB8B1C7, "BT&COM CO.,LTD", "BT-COM" }, { 0xA0BFA5, "CORESYS", "CORESYS" }, { 0xD411D6, "ShotSpotter, Inc.", "SHOTSPOTTER" }, { 0x7CCB0D, "Antaira Technologies, LLC", "ANTAIRA-TECHNOLOGIES-LLC" }, { 0xECE9F8, "Guang Zhou TRI-SUN Electronics Technology Co., Ltd", "GUANG-ZHOU-TRI-SUN-ELECTRONICS" }, { 0x9CAFCA, "Cisco Systems, Inc", "CISCO" }, { 0x34CE94, "Parsec (Pty) Ltd", "PARSEC-PTY" }, { 0xACE9AA, "Hay Systems Ltd", "HAY" }, { 0x082AD0, "SRD Innovations Inc.", "SRD-INNOVATIONS" }, { 0x24828A, "Prowave Technologies Ltd.", "PROWAVE-TECHNOLOGIES" }, { 0x6C0F6A, "JDC Tech Co., Ltd.", "JDC-TECH" }, { 0x6CF049, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xD4C766, "Acentic GmbH", "ACENTIC" }, { 0x48EB30, "ETERNA TECHNOLOGY, INC.", "ETERNA" }, { 0x207C8F, "Quanta Microsystems,Inc.", "QUANTA-MICROSYSTEMS" }, { 0xF8472D, "X2gen Digital Corp. Ltd", "X2GEN-DIGITAL" }, { 0x8C598B, "C Technologies AB", "C-TECHNOLOGIES-AB" }, { 0x64F970, "Kenade Electronics Technology Co.,LTD.", "KENADE-ELECTRONICS" }, { 0xA04025, "Actioncable, Inc.", "ACTIONCABLE" }, { 0x78998F, "MEDILINE ITALIA SRL", "MEDILINE-ITALIA-SRL" }, { 0x40ECF8, "Siemens AG", "SIEMENS" }, { 0xF04BF2, "JTECH Communications, Inc.", "JTECH-COMMUNICATION" }, { 0xA8CB95, "EAST BEST CO., LTD.", "EAST-BEST" }, { 0xC8D1D1, "AGAiT Technology Corporation", "AGAIT" }, { 0x3CF52C, "DSPECIALISTS GmbH", "DSPECIALISTS" }, { 0x040EC2, "ViewSonic Mobile China Limited", "VIEWSONIC-MOBILE-CHINA" }, { 0x5403F5, "EBN Technology Corp.", "EBN" }, { 0x7C2F80, "Gigaset Communications GmbH", "GIGASET-COMMUNICATION" }, { 0x446C24, "Reallin Electronic Co.,Ltd", "REALLIN" }, { 0xA0593A, "V.D.S. Video Display Systems srl", "V-D-S-VIDEO-DISPLAY-SRL" }, { 0xA8F94B, "Eltex Enterprise Ltd.", "ELTEX" }, { 0x906DC8, "DLG Automação Industrial Ltda", "DLG-AUTOMAçãO-INDUSTRIAL-LTDA" }, { 0x48343D, "IEP GmbH", "IEP" }, { 0xC8C13C, "RuggedTek Hangzhou Co., Ltd", "RUGGEDTEK-HANGZHOU" }, { 0x609F9D, "CloudSwitch", "CLOUDSWITCH" }, { 0x0CE936, "ELIMOS srl", "ELIMOS-SRL" }, { 0xA4DE50, "Total Walther GmbH", "TOTAL-WALTHER" }, { 0xE8A4C1, "Deep Sea Electronics PLC", "DEEP-SEA-ELECTRONICS-PLC" }, { 0x701AED, "ADVAS CO., LTD.", "ADVAS" }, { 0x64C6AF, "AXERRA Networks Ltd", "AXERRA-NETWORKS" }, { 0xD8D67E, "GSK CNC EQUIPMENT CO.,LTD", "GSK-CNC-EQUIPMENT" }, { 0xA4E7E4, "Connex GmbH", "CONNEX" }, { 0xAC583B, "Human Assembler, Inc.", "HUMAN-ASSEMBLER" }, { 0xA05DE7, "DIRECTV, Inc.", "DIRECTV" }, { 0x10CA81, "PRECIA", "PRECIA" }, { 0x003A98, "Cisco Systems, Inc", "CISCO" }, { 0x705AB6, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x003A9A, "Cisco Systems, Inc", "CISCO" }, { 0xACBEB6, "Visualedge Technology Co., Ltd.", "VISUALEDGE" }, { 0x40A6A4, "PassivSystems Ltd", "PASSIVSYSTEMS" }, { 0x903D6B, "Zicon Technology Corp.", "ZICON" }, { 0x7C3BD5, "Imago Group", "IMAGO-GROUP" }, { 0xB894D2, "Retail Innovation HTT AB", "RETAIL-INNOVATION-HTT-AB" }, { 0xDCE71C, "AUG Elektronik GmbH", "AUG-ELEKTRONIK" }, { 0x88A5BD, "QPCOM INC.", "QPCOM" }, { 0xDC3350, "TechSAT GmbH", "TECHSAT" }, { 0x00271E, "Xagyl Communications", "XAGYL-COMMUNICATION" }, { 0x002716, "Adachi-Syokai Co., Ltd.", "ADACHI-SYOKAI" }, { 0x002715, "Rebound Telecom. Co., Ltd", "REBOUND-TELECOM" }, { 0x00270A, "IEE S.A.", "IEE" }, { 0x002674, "Electronic Solutions, Inc.", "SOLUTIONS" }, { 0x00266E, "Nissho-denki Co.,LTD.", "NISSHO-DENKI" }, { 0x00265B, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x002661, "Irumtek Co., Ltd.", "IRUMTEK" }, { 0x002657, "OOO NPP EKRA", "OOO-NPP-EKRA" }, { 0x00264E, "Rail & Road Protec GmbH", "RAIL-ROAD-PROTEC" }, { 0x0025E6, "Belgian Monitoring Systems bvba", "BELGIAN-MONITORING-BVBA" }, { 0x0025E1, "SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD", "SHANGHAI-SEEYOO" }, { 0x0025DB, "ATI Electronics(Shenzhen) Co., LTD", "ATI-ELECTRONICS-SHENZHEN" }, { 0x0025D5, "Robonica (Pty) Ltd", "ROBONICA-PTY" }, { 0x0025C9, "SHENZHEN HUAPU DIGITAL CO., LTD", "SHENZHEN-HUAPU-DIGITAL" }, { 0x0025CE, "InnerSpace", "INNERSPACE" }, { 0x0025C2, "RingBell Co.,Ltd.", "RINGBELL" }, { 0x0026A0, "moblic", "MOBLIC" }, { 0x00269A, "Carina System Co., Ltd.", "CARINA-SYSTEM" }, { 0x002694, "Senscient Ltd", "SENSCIENT" }, { 0x002693, "QVidium Technologies, Inc.", "QVIDIUM-TECHNOLOGIES" }, { 0x00268D, "CellTel S.p.A.", "CELLTEL-S-P-A" }, { 0x00268E, "Alta Solutions, Inc.", "ALTA-SOLUTIONS" }, { 0x002687, "corega K.K", "COREGA-K-K" }, { 0x002681, "Interspiro AB", "INTERSPIRO-AB" }, { 0x00267B, "GSI Helmholtzzentrum für Schwerionenforschung GmbH", "GSI-HELMHOLTZZENTRUM-FüR-SCHWERIONENFORSCHUNG" }, { 0x0025BB, "INNERINT Co., Ltd.", "INNERINT" }, { 0x0025B6, "Telecom FM", "TELECOM-FM" }, { 0x0025AF, "COMFILE Technology", "COMFILE" }, { 0x0025AA, "Beijing Soul Technology Co.,Ltd.", "BEIJING-SOUL" }, { 0x0025A9, "Shanghai Embedway Information Technologies Co.,Ltd", "SHANGHAI-EMBEDWAY-INFORMATION-TECHNOLOGIES" }, { 0x0025A3, "Trimax Wireless, Inc.", "TRIMAX-WIRELESS" }, { 0x00259C, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x002580, "Equipson S.A.", "EQUIPSON" }, { 0x00257C, "Huachentel Technology Development Co., Ltd", "HUACHENTEL-DEVELOPMENT" }, { 0x002575, "FiberPlex Technologies, LLC", "FIBERPLEX-TECHNOLOGIES-LLC" }, { 0x002576, "NELI TECHNOLOGIES", "NELI-TECHNOLOGIES" }, { 0x002570, "Eastern Communications Company Limited", "EASTERN-COMMUNICATION-COMPANY" }, { 0x002563, "Luxtera Inc", "LUXTERA" }, { 0x002704, "Accelerated Concepts, Inc", "ACCELERATED-CONCEPTS" }, { 0x0026FE, "MKD Technology Inc.", "MKD" }, { 0x0026F8, "Golden Highway Industry Development Co., Ltd.", "GOLDEN-HIGHWAY-INDUSTRY-DEVELOPMENT" }, { 0x0026EB, "Advanced Spectrum Technology Co., Ltd.", "ADVANCED-SPECTRUM" }, { 0x0026E5, "AEG Power Solutions", "AEG-POWER-SOLUTIONS" }, { 0x0026DF, "TaiDoc Technology Corp.", "TAIDOC" }, { 0x0026D8, "Magic Point Inc.", "MAGIC-POINT" }, { 0x0026D2, "Pcube Systems, Inc.", "PCUBE" }, { 0x0026C5, "Guangdong Gosun Telecommunications Co.,Ltd", "GUANGDONG-GOSUN-TELECOMMUNICATIONS" }, { 0x0026C0, "EnergyHub", "ENERGYHUB" }, { 0x0026BF, "ShenZhen Temobi Science&Tech Development Co.,Ltd", "SHENZHEN-TEMOBI-SCIENCE-TECH-DEVELOPMENT" }, { 0x0026B7, "Kingston Technology Company, Inc.", "KINGSTON-COMPANY" }, { 0x0026A6, "TRIXELL", "TRIXELL" }, { 0x00263C, "Bachmann Technology GmbH & Co. KG", "BACHMANN" }, { 0x002630, "ACOREL S.A.S", "ACOREL-S" }, { 0x002629, "Juphoon System Software Inc.", "JUPHOON-SYSTEM-SOFTWARE" }, { 0x00262A, "Proxense, LLC", "PROXENSE-LLC" }, { 0x002624, "Thomson Inc.", "THOMSON" }, { 0x00261D, "COP SECURITY SYSTEM CORP.", "COP-SECURITY-SYSTEM" }, { 0x002611, "Licera AB", "LICERA-AB" }, { 0x002617, "OEM Worldwide", "OEM-WORLDWIDE" }, { 0x00260A, "Cisco Systems, Inc", "CISCO" }, { 0x0025FE, "Pilot Electronics Corporation", "PILOT-ELECTRONICS" }, { 0x002605, "CC Systems AB", "CC-AB" }, { 0x002604, "Audio Processing Technology Ltd", "AUDIO-PROCESSING" }, { 0x0025F4, "KoCo Connector AG", "KOCO-CONNECTOR" }, { 0x0025EB, "Reutech Radar Systems (PTY) Ltd", "REUTECH-RADAR-PTY" }, { 0x00242A, "Hittite Microwave Corporation", "HITTITE-MICROWAVE" }, { 0x00241D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x002424, "Axis Network Technology", "AXIS-NETWORK" }, { 0x002417, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x002418, "Nextwave Semiconductor", "NEXTWAVE-SEMICONDUCTOR" }, { 0x002411, "PharmaSmart LLC", "PHARMASMART-LLC" }, { 0x00240B, "Virtual Computer Inc.", "VIRTUAL" }, { 0x00240A, "US Beverage Net", "US-BEVERAGE-NET" }, { 0x0024B8, "free alliance sdn bhd", "FREE-ALLIANCE-SDN-BHD" }, { 0x0024BD, "Hainzl Industriesysteme GmbH", "HAINZL-INDUSTRIESYSTEME" }, { 0x0024B3, "Graf-Syteco GmbH & Co. KG", "GRAF-SYTECO" }, { 0x0024AE, "Morpho", "MORPHO" }, { 0x0024A7, "Advanced Video Communications Inc.", "ADVANCED-VIDEO-COMMUNICATION" }, { 0x0024AC, "Hangzhou DPtech Technologies Co., Ltd.", "HANGZHOU-DPTECH-TECHNOLOGIES" }, { 0x00255D, "Morningstar Corporation", "MORNINGSTAR" }, { 0x002551, "SE-Elektronic GmbH", "SE-ELEKTRONIC" }, { 0x00254A, "RingCube Technologies, Inc.", "RINGCUBE-TECHNOLOGIES" }, { 0x002543, "MONEYTECH", "MONEYTECH" }, { 0x002544, "LoJack Corporation", "LOJACK" }, { 0x002539, "IfTA GmbH", "IFTA" }, { 0x00253B, "din Dietmar Nocker Facilitymanagement GmbH", "DIN-DIETMAR-NOCKER-FACILITYMANAGEMENT" }, { 0x00250B, "CENTROFACTOR INC", "CENTROFACTOR" }, { 0x002504, "Valiant Communications Limited", "VALIANT-COMMUNICATION" }, { 0x0024FD, "Accedian Networks Inc", "ACCEDIAN-NETWORKS" }, { 0x0024F8, "Technical Solutions Company Ltd.", "TECHNICAL-SOLUTIONS-COMPANY" }, { 0x0024F1, "Shenzhen Fanhai Sanjiang Electronics Co., Ltd.", "SHENZHEN-FANHAI-SANJIANG-ELECTRONICS" }, { 0x0024EC, "United Information Technology Co.,Ltd.", "UNITED-INFORMATION" }, { 0x00249B, "Action Star Enterprise Co., Ltd.", "ACTION-STAR" }, { 0x002499, "Aquila Technologies", "AQUILA-TECHNOLOGIES" }, { 0x002488, "Centre For Development Of Telematics", "CENTRE-FOR-DEVELOPMENT-OF-TELEMATICS" }, { 0x002494, "Shenzhen Baoxin Tech CO., Ltd.", "SHENZHEN-BAOXIN-TECH" }, { 0x00247A, "FU YI CHENG Technology Co., Ltd.", "FU-YI-CHENG" }, { 0x002475, "Compass System(Embedded Dept.)", "COMPASS-SYSTEM-EMBEDDED-DEPT" }, { 0x00246E, "Phihong USA Corp.", "PHIHONG-USA" }, { 0x002467, "AOC International (Europe) GmbH", "AOC-EUROPE" }, { 0x002469, "Smart Doorphones", "SMART-DOORPHONES" }, { 0x002462, "Rayzone Corporation", "RAYZONE" }, { 0x002458, "PA Bastion CC", "PA-BASTION-CC" }, { 0x00245D, "Terberg besturingstechniek B.V.", "TERBERG-BESTURINGSTECHNIEK" }, { 0x002455, "MuLogic BV", "MULOGIC" }, { 0x002450, "Cisco Systems, Inc", "CISCO" }, { 0x00244B, "PERCEPTRON INC", "PERCEPTRON" }, { 0x00253A, "CEVA, Ltd.", "CEVA" }, { 0x002531, "Cloud Engines, Inc.", "CLOUD-ENGINES" }, { 0x00252F, "Energy, Inc.", "ENERGY" }, { 0x00252A, "Chengdu GeeYa Technology Co.,LTD", "CHENGDU-GEEYA" }, { 0x002521, "Logitek Electronic Systems, Inc.", "LOGITEK" }, { 0x00251C, "EDT", "EDT" }, { 0x002517, "Venntis, LLC", "VENNTIS-LLC" }, { 0x002510, "Pico-Tesla Magnetic Therapies", "PICO-TESLA-MAGNETIC-THERAPIES" }, { 0x0024E5, "Seer Technology, Inc", "SEER" }, { 0x0024E0, "DS Tech, LLC", "DS-TECH-LLC" }, { 0x0024DE, "GLOBAL Technology Inc.", "GLOBAL" }, { 0x0024D9, "BICOM, Inc.", "BICOM" }, { 0x0024CB, "Autonet Mobile", "AUTONET-MOBILE" }, { 0x0024CD, "Willow Garage, Inc.", "WILLOW-GARAGE" }, { 0x0024C6, "Hager Electro SAS", "HAGER-ELECTRO-SAS" }, { 0x00243A, "Ludl Electronic Products", "LUDL-PRODUCTS" }, { 0x002434, "Lectrosonics, Inc.", "LECTROSONICS" }, { 0x00242E, "Datastrip Inc.", "DATASTRIP" }, { 0x002296, "LinoWave Corporation", "LINOWAVE" }, { 0x00228F, "CNRS", "CNRS" }, { 0x002290, "Cisco Systems, Inc", "CISCO" }, { 0x00228A, "Teratronik elektronische systeme gmbh", "TERATRONIK-ELEKTRONISCHE-SYSTEME" }, { 0x00227E, "Chengdu 30Kaitian Communication Industry Co.Ltd", "CHENGDU-30KAITIAN-COMMUNICATION-INDUSTRY" }, { 0x00227D, "YE DATA INC.", "YE-DATA" }, { 0x002278, "Shenzhen Tongfang Multimedia Technology Co.,Ltd.", "SHENZHEN-TONGFANG-MULTIMEDIA" }, { 0x002272, "American Micro-Fuel Device Corp.", "AMERICAN-MICRO-FUEL-DEVICE" }, { 0x002271, "Jäger Computergesteuerte Meßtechnik GmbH.", "JäGER-COMPUTERGESTEUERTE-MEßTECHNIK" }, { 0x00226E, "Gowell Electronic Limited", "GOWELL" }, { 0x002358, "SYSTEL SA", "SYSTEL" }, { 0x002357, "Pitronot Technologies and Engineering P.T.E. Ltd.", "PITRONOT-TECHNOLOGIES-AND-ENGINEERING-P-T-E" }, { 0x002352, "DATASENSOR S.p.A.", "DATASENSOR-S-P-A" }, { 0x00234B, "Inyuan Technology Inc.", "INYUAN" }, { 0x002346, "Vestac", "VESTAC" }, { 0x00233F, "Purechoice Inc", "PURECHOICE" }, { 0x002338, "OJ-Electronics A/S", "OJ-ELECTRONICS-A/S" }, { 0x002333, "Cisco Systems, Inc", "CISCO" }, { 0x00232F, "Advanced Card Systems Ltd.", "ADVANCED-CARD" }, { 0x00232A, "eonas IT-Beratung und -Entwicklung GmbH", "EONAS-IT-BERATUNG-UND--ENTWICKLUNG" }, { 0x0022C1, "Active Storage Inc.", "ACTIVE-STORAGE" }, { 0x0022C2, "Proview Eletrônica do Brasil LTDA", "PROVIEW-ELETRôNICA-DO-BRASIL-LTDA" }, { 0x0022BC, "JDSU France SAS", "JDSU-FRANCE-SAS" }, { 0x0022B5, "NOVITA", "NOVITA" }, { 0x0022AF, "Safety Vision", "SAFETY-VISION" }, { 0x0022A2, "Xtramus Technologies", "XTRAMUS-TECHNOLOGIES" }, { 0x00229D, "PYUNG-HWA IND.CO.,LTD", "PYUNG-HWA-IND" }, { 0x002327, "Shouyo Electronics CO., LTD", "SHOUYO-ELECTRONICS" }, { 0x002323, "Zylin AS", "ZYLIN-AS" }, { 0x00231A, "ITF Co., Ltd.", "ITF" }, { 0x002311, "Gloscom Co., Ltd.", "GLOSCOM" }, { 0x00230C, "CLOVER ELECTRONICS CO.,LTD.", "CLOVER-ELECTRONICS" }, { 0x002305, "Cisco Systems, Inc", "CISCO" }, { 0x0022FF, "NIVIS LLC", "NIVIS-LLC" }, { 0x0022FE, "Advanced Illumination", "ADVANCED-ILLUMINATION" }, { 0x002300, "Cayee Computer Ltd.", "CAYEE" }, { 0x0022F6, "Syracuse Research Corporation", "SYRACUSE-RESEARCH" }, { 0x0022F9, "Pollin Electronic GmbH", "POLLIN" }, { 0x0023AD, "Xmark Corporation", "XMARK" }, { 0x0023A7, "Redpine Signals, Inc.", "REDPINE-SIGNALS" }, { 0x0023A1, "Trend Electronics Ltd", "TREND-ELECTRONICS" }, { 0x0023A6, "E-Mon", "E-MON" }, { 0x00239A, "EasyData Hardware GmbH", "EASYDATA-HARDWARE" }, { 0x002394, "Samjeon", "SAMJEON" }, { 0x002390, "Algolware Corporation", "ALGOLWARE" }, { 0x002386, "Tour & Andersson AB", "TOUR-ANDERSSON-AB" }, { 0x002405, "Dilog Nordic AB", "DILOG-NORDIC-AB" }, { 0x0023F5, "WILO SE", "WILO-SE" }, { 0x0023FE, "Biodevices, SA", "BIODEVICES" }, { 0x0023F0, "Shanghai Jinghan Weighing Apparatus Co. Ltd.", "SHANGHAI-JINGHAN-WEIGHING-APPARATUS" }, { 0x0023EB, "Cisco Systems, Inc", "CISCO" }, { 0x0023E5, "IPaXiom Networks", "IPAXIOM-NETWORKS" }, { 0x0023E6, "Pirkus, Inc.", "PIRKUS" }, { 0x0023D9, "Banner Engineering", "BANNER-ENGINEERING" }, { 0x0023D3, "AirLink WiFi Networking Corp.", "AIRLINK-WIFI-NETWORKING" }, { 0x0023D8, "Ball-It Oy", "BALL-IT-OY" }, { 0x0023C6, "SMC Corporation", "SMC" }, { 0x0023C0, "Broadway Networks", "BROADWAY-NETWORKS" }, { 0x0023B3, "Lyyn AB", "LYYN-AB" }, { 0x0022F5, "Advanced Realtime Tracking GmbH", "ADVANCED-REALTIME-TRACKING" }, { 0x0022EF, "iWDL Technologies", "IWDL-TECHNOLOGIES" }, { 0x0022E8, "Applition Co., Ltd.", "APPLITION" }, { 0x0022E3, "Amerigon", "AMERIGON" }, { 0x0022D5, "Eaton Corp. Electrical Group Data Center Solutions - Pulizzi", "EATON-ELECTRICAL-GROUP-DATA-CENTER-SOLUTIONS---PULIZZI" }, { 0x0022DC, "Vigil Health Solutions Inc.", "VIGIL-HEALTH-SOLUTIONS" }, { 0x0022D6, "Cypak AB", "CYPAK-AB" }, { 0x0022D0, "Polar Electro Oy", "POLAR-ELECTRO-OY" }, { 0x0022CB, "IONODES Inc.", "IONODES" }, { 0x0022C6, "Sutus Inc", "SUTUS" }, { 0x002380, "Nanoteq", "NANOTEQ" }, { 0x00237A, "RIM", "RIM" }, { 0x002377, "Isotek Electronics Ltd", "ISOTEK-ELECTRONICS" }, { 0x002371, "SOAM Systel", "SOAM-SYSTEL" }, { 0x00236A, "SmartRG Inc", "SMARTRG" }, { 0x00235E, "Cisco Systems, Inc", "CISCO" }, { 0x00225A, "Garde Security AB", "GARDE-SECURITY-AB" }, { 0x002254, "Bigelow Aerospace", "BIGELOW-AEROSPACE" }, { 0x002251, "Lumasense Technologies", "LUMASENSE-TECHNOLOGIES" }, { 0x00224B, "AIRTECH TECHNOLOGIES, INC.", "AIRTECH-TECHNOLOGIES" }, { 0x002245, "Leine & Linde AB", "LEINE-LINDE-AB" }, { 0x002242, "Alacron Inc.", "ALACRON" }, { 0x00223B, "Communication Networks, LLC", "COMMUNICATION-NETWORKS-LLC" }, { 0x002146, "Sanmina-SCI", "SANMINA-SCI" }, { 0x00213D, "Cermetek Microelectronics, Inc.", "CERMETEK-MICROELECTRONICS" }, { 0x00213E, "TomTom", "TOMTOM" }, { 0x002135, "ALCATEL-LUCENT", "ALCATEL-LUCENT" }, { 0x00213A, "Winchester Systems Inc.", "WINCHESTER" }, { 0x002130, "Keico Hightech Inc.", "KEICO-HIGHTECH" }, { 0x00217E, "Telit Communication s.p.a", "TELIT-COMMUNICATION-S-P-A" }, { 0x002178, "Matuschek Messtechnik GmbH", "MATUSCHEK-MESSTECHNIK" }, { 0x002172, "Seoultek Valley", "SEOULTEK-VALLEY" }, { 0x002166, "NovAtel Inc.", "NOVATEL" }, { 0x002165, "Presstek Inc.", "PRESSTEK" }, { 0x00215F, "IHSE GmbH", "IHSE" }, { 0x002153, "SeaMicro Inc.", "SEAMICRO" }, { 0x002158, "Style Flying Technology Co.", "STYLE-FLYING" }, { 0x0021AC, "Infrared Integrated Systems Ltd", "INFRARED-INTEGRATED" }, { 0x0021A5, "ERLPhase Power Technologies Ltd.", "ERLPHASE-POWER-TECHNOLOGIES" }, { 0x00219F, "SATEL OY", "SATEL-OY" }, { 0x00218A, "Electronic Design and Manufacturing Company", "DESIGN-AND-MANUFACTURING-COMPANY" }, { 0x00218B, "Wescon Technology, Inc.", "WESCON" }, { 0x002185, "MICRO-STAR INT'L CO.,LTD.", "MICRO-STAR" }, { 0x001FF9, "Advanced Knowledge Associates", "ADVANCED-KNOWLEDGE-ASSOCIATES" }, { 0x001FF2, "VIA Technologies, Inc.", "VIA-TECHNOLOGIES" }, { 0x001FED, "Tecan Systems Inc.", "TECAN" }, { 0x001FE6, "Alphion Corporation", "ALPHION" }, { 0x001FE0, "EdgeVelocity Corp", "EDGEVELOCITY" }, { 0x001FDA, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002209, "Omron Healthcare Co., Ltd", "OMRON-HEALTHCARE" }, { 0x002203, "Glensound Electronics Ltd", "GLENSOUND-ELECTRONICS" }, { 0x002200, "IBM Corp", "IBM" }, { 0x0021F6, "Oracle Corporation", "ORACLE" }, { 0x0021F0, "EW3 Technologies LLC", "EW3-TECHNOLOGIES-LLC" }, { 0x0021EA, "Bystronic Laser AG", "BYSTRONIC-LASER" }, { 0x0021E3, "SerialTek LLC", "SERIALTEK-LLC" }, { 0x0021DE, "Firepro Wireless", "FIREPRO-WIRELESS" }, { 0x0021DD, "Northstar Systems Corp", "NORTHSTAR" }, { 0x0021D7, "Cisco Systems, Inc", "CISCO" }, { 0x002235, "Strukton Systems bv", "STRUKTON" }, { 0x002234, "Corventis Inc.", "CORVENTIS" }, { 0x00222F, "Open Grid Computing, Inc.", "OPEN-GRID-COMPUTING" }, { 0x002228, "Breeze Innovations Ltd.", "BREEZE-INNOVATIONS" }, { 0x002222, "Schaffner Deutschland GmbH", "SCHAFFNER-DEUTSCHLAND" }, { 0x00221C, "Private", "PRIVATE" }, { 0x00220F, "MoCA (Multimedia over Coax Alliance)", "MOCA-MULTIMEDIA-OVER-COAX-ALLIANCE" }, { 0x00212B, "MSA Auer", "MSA-AUER" }, { 0x00211D, "Dataline AB", "DATALINE-AB" }, { 0x002124, "Optos Plc", "OPTOS-PLC" }, { 0x002118, "Athena Tech, Inc.", "ATHENA-TECH" }, { 0x002111, "Uniphone Inc.", "UNIPHONE" }, { 0x002107, "Seowonintech Co Ltd.", "SEOWONINTECH" }, { 0x002101, "Aplicaciones Electronicas Quasar (AEQ)", "APLICACIONES-ELECTRONICAS-QUASAR-AEQ" }, { 0x002102, "UpdateLogic Inc.", "UPDATELOGIC" }, { 0x0021D0, "Global Display Solutions Spa", "GLOBAL-DISPLAY-SOLUTIONS-SPA" }, { 0x0021CB, "SMS TECNOLOGIA ELETRONICA LTDA", "SMS-TECNOLOGIA-ELETRONICA-LTDA" }, { 0x0021C4, "Consilium AB", "CONSILIUM-AB" }, { 0x0021B8, "Inphi Corporation", "INPHI" }, { 0x0021B1, "DIGITAL SOLUTIONS LTD", "DIGITAL-SOLUTIONS" }, { 0x001F7D, "embedded wireless GmbH", "EMBEDDED-WIRELESS" }, { 0x001F7B, "TechNexion Ltd.", "TECHNEXION" }, { 0x001F7C, "Witelcom AS", "WITELCOM-AS" }, { 0x001F79, "Lodam Electronics A/S", "LODAM-ELECTRONICS-A/S" }, { 0x001F74, "Eigen Development", "EIGEN-DEVELOPMENT" }, { 0x001F6F, "Fujian Sunnada Communication Co.,Ltd.", "FUJIAN-SUNNADA-COMMUNICATION" }, { 0x001F63, "JSC Goodwin-Europa", "JSC-GOODWIN-EUROPA" }, { 0x001F6A, "PacketFlux Technologies, Inc.", "PACKETFLUX-TECHNOLOGIES" }, { 0x001F69, "Pingood Technology Co., Ltd.", "PINGOOD" }, { 0x001F57, "Phonik Innovation Co.,LTD", "PHONIK-INNOVATION" }, { 0x001F21, "Inner Mongolia Yin An Science & Technology Development Co.,L", "INNER-MONGOLIA-YIN-AN-SCIENCE-DEVELOPMENT-L" }, { 0x001F22, "Source Photonics, Inc.", "SOURCE-PHOTONICS" }, { 0x001F1C, "KOBISHI ELECTRIC Co.,Ltd.", "KOBISHI-ELECTRIC" }, { 0x001F15, "Bioscrypt Inc", "BIOSCRYPT" }, { 0x001F10, "TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA", "TOLEDO-DO-BRASIL-INDUSTRIA-DE-BALANCAS-LTDA" }, { 0x001F0C, "Intelligent Digital Services GmbH", "INTELLIGENT-DIGITAL-SERVICES" }, { 0x001F07, "AZTEQ Mobile", "AZTEQ-MOBILE" }, { 0x001FAA, "Taseon, Inc.", "TASEON" }, { 0x001FA5, "Blue-White Industries", "BLUE-WHITE-INDUSTRIES" }, { 0x001FA0, "A10 Networks", "A10-NETWORKS" }, { 0x001F99, "SERONICS co.ltd", "SERONICS" }, { 0x001F9B, "POSBRO", "POSBRO" }, { 0x001F94, "Lascar Electronics Ltd", "LASCAR-ELECTRONICS" }, { 0x001F8D, "Ingenieurbuero Stark GmbH und Ko. KG", "INGENIEURBUERO-STARK-UND-KO" }, { 0x001F89, "Signalion GmbH", "SIGNALION" }, { 0x001ED0, "Ingespace", "INGESPACE" }, { 0x001ECB, "RPC Energoautomatika Ltd", "RPC-ENERGOAUTOMATIKA" }, { 0x001EC4, "Celio Corp", "CELIO" }, { 0x001EBE, "Cisco Systems, Inc", "CISCO" }, { 0x001EBD, "Cisco Systems, Inc", "CISCO" }, { 0x001EB8, "Fortis, Inc.", "FORTIS" }, { 0x001EB1, "Cryptsoft Pty Ltd", "CRYPTSOFT-PTY" }, { 0x001EA6, "Best IT World (India) Pvt. Ltd.", "BEST-IT-WORLD-INDIA-PVT" }, { 0x001EAC, "Armadeus Systems", "ARMADEUS" }, { 0x001E9F, "Visioneering Systems, Inc.", "VISIONEERING" }, { 0x001EA0, "XLN-t", "XLN-T" }, { 0x001EF4, "L-3 Communications Display Systems", "L-3-COMMUNICATION-DISPLAY" }, { 0x001EF9, "Pascom Kommunikations systeme GmbH.", "PASCOM-KOMMUNIKATIONS-SYSTEME" }, { 0x001EFA, "PROTEI Ltd.", "PROTEI" }, { 0x001EE8, "Mytek", "MYTEK" }, { 0x001EED, "Adventiq Ltd.", "ADVENTIQ" }, { 0x001EE7, "Epic Systems Inc", "EPIC" }, { 0x001ED7, "H-Stream Wireless, Inc.", "H-STREAM-WIRELESS" }, { 0x001E6B, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x001E72, "PCS", "PCS" }, { 0x001E66, "RESOL Elektronische Regelungen GmbH", "RESOL-ELEKTRONISCHE-REGELUNGEN" }, { 0x001E5F, "KwikByte, LLC", "KWIKBYTE-LLC" }, { 0x001E53, "Further Tech Co., LTD", "FURTHER-TECH" }, { 0x001E9A, "HAMILTON Bonaduz AG", "HAMILTON-BONADUZ" }, { 0x001E93, "CiriTech Systems Inc", "CIRITECH" }, { 0x001E8E, "Hunkeler AG", "HUNKELER" }, { 0x001E88, "ANDOR SYSTEM SUPPORT CO., LTD.", "ANDOR-SYSTEM-SUPPORT" }, { 0x001E82, "SanDisk Corporation", "SANDISK" }, { 0x001E81, "CNB Technology Inc.", "CNB" }, { 0x001E7C, "Taiwick Limited", "TAIWICK" }, { 0x001E77, "Air2App", "AIR2APP" }, { 0x001F50, "Swissdis AG", "SWISSDIS" }, { 0x001F49, "Manhattan TV Ltd", "MANHATTAN-TV" }, { 0x001F4A, "Albentia Systems S.A.", "ALBENTIA" }, { 0x001F44, "GE Transportation Systems", "GE-TRANSPORTATION" }, { 0x001F2F, "Berker GmbH & Co. KG", "BERKER" }, { 0x001F34, "Lung Hwa Electronics Co., Ltd.", "LUNG-HWA-ELECTRONICS" }, { 0x001F28, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001FD5, "MICRORISC s.r.o.", "MICRORISC-S-R-O" }, { 0x001FD6, "Shenzhen Allywll", "SHENZHEN-ALLYWLL" }, { 0x001FD0, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001FC9, "Cisco Systems, Inc", "CISCO" }, { 0x001FBD, "Kyocera Wireless Corp.", "KYOCERA-WIRELESS" }, { 0x001FB1, "Cybertech Inc.", "CYBERTECH" }, { 0x001FB6, "Chi Lin Technology Co., Ltd.", "CHI-LIN" }, { 0x001D02, "Cybertech Telecom Development", "CYBERTECH-TELECOM-DEVELOPMENT" }, { 0x001CF6, "Cisco Systems, Inc", "CISCO" }, { 0x001CEA, "Scientific-Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x001CE9, "Galaxy Technology Limited", "GALAXY" }, { 0x001CE5, "MBS Electronic Systems GmbH", "MBS" }, { 0x001CE0, "DASAN TPS", "DASAN-TPS" }, { 0x001CD9, "GlobalTop Technology Inc.", "GLOBALTOP" }, { 0x001CD2, "King Champion (Hong Kong) Limited", "KING-CHAMPION-HONG-KONG" }, { 0x001CCD, "Alektrona Corporation", "ALEKTRONA" }, { 0x001CC6, "ProStor Systems", "PROSTOR" }, { 0x001CBA, "VerScient, Inc.", "VERSCIENT" }, { 0x001CB0, "Cisco Systems, Inc", "CISCO" }, { 0x001CB5, "Neihua Network Technology Co.,LTD.(NHN)", "NEIHUA-NETWORK-NHN" }, { 0x001CB6, "Duzon CNT Co., Ltd.", "DUZON-CNT" }, { 0x001CA9, "Audiomatica Srl", "AUDIOMATICA-SRL" }, { 0x001D5F, "OverSpeed SARL", "OVERSPEED-SARL" }, { 0x001D53, "S&O Electronics (Malaysia) Sdn. Bhd.", "S-O-ELECTRONICS-MALAYSIA-SDN-BHD" }, { 0x001D4E, "TCM Mobile LLC", "TCM-MOBILE-LLC" }, { 0x001D4D, "Adaptive Recognition Hungary, Inc", "ADAPTIVE-RECOGNITION-HUNGARY" }, { 0x001D49, "Innovation Wireless Inc.", "INNOVATION-WIRELESS" }, { 0x001D3D, "Avidyne Corporation", "AVIDYNE" }, { 0x001D43, "Shenzhen G-link Digital Technology Co., Ltd.", "SHENZHEN-G-LINK-DIGITAL" }, { 0x001E17, "STN BV", "STN" }, { 0x001E1C, "SWS Australia Pty Limited", "SWS-AUSTRALIA-PTY" }, { 0x001E12, "Ecolab", "ECOLAB" }, { 0x001E0D, "Micran Ltd.", "MICRAN" }, { 0x001E06, "WIBRAIN", "WIBRAIN" }, { 0x001DFF, "Network Critical Solutions Ltd", "NETWORK-CRITICAL-SOLUTIONS" }, { 0x001E00, "Shantou Institute of Ultrasonic Instruments", "SHANTOU-INSTITUTE-OF-ULTRASONIC-INSTRUMENTS" }, { 0x001DFA, "Fujian LANDI Commercial Equipment Co.,Ltd", "FUJIAN-LANDI-COMMERCIAL-EQUIPMENT" }, { 0x001DF3, "SBS Science & Technology Co., Ltd", "SBS-SCIENCE" }, { 0x001DEE, "NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA.", "NEXTVISION-SISTEMAS-DIGITAIS-DE-TELEVISÃO-LTDA" }, { 0x001DED, "Grid Net, Inc.", "GRID-NET" }, { 0x001DDE, "Zhejiang Broadcast&Television Technology Co.,Ltd.", "ZHEJIANG-BROADCAST-TELEVISION" }, { 0x001DE7, "Marine Sonic Technology, Ltd.", "MARINE-SONIC" }, { 0x001DD7, "Algolith", "ALGOLITH" }, { 0x001DD8, "Microsoft Corporation", "MICROSOFT" }, { 0x001DCB, "Exéns Development Oy", "EXéNS-DEVELOPMENT-OY" }, { 0x001DC6, "SNR Inc.", "SNR" }, { 0x001DC5, "Beijing Jiaxun Feihong Electricial Co., Ltd.", "BEIJING-JIAXUN-FEIHONG-ELECTRICIAL" }, { 0x001DBF, "Radiient Technologies, Inc.", "RADIIENT-TECHNOLOGIES" }, { 0x001DB8, "Intoto Inc.", "INTOTO" }, { 0x001D36, "ELECTRONICS CORPORATION OF INDIA LIMITED", "ELECTRONICS-OF-INDIA" }, { 0x001D31, "HIGHPRO INTERNATIONAL R&D CO,.LTD.", "HIGHPRO-R-D" }, { 0x001D2A, "SHENZHEN BUL-TECH CO.,LTD.", "SHENZHEN-BUL-TECH" }, { 0x001D23, "SENSUS ", "SENSUS" }, { 0x001D24, "Aclara Power-Line Systems Inc.", "ACLARA-POWER-LINE" }, { 0x001D1B, "Sangean Electronics Inc.", "SANGEAN-ELECTRONICS" }, { 0x001D1E, "KYUSHU TEN CO.,LTD", "KYUSHU-TEN" }, { 0x001D15, "Shenzhen Dolphin Electronic Co., Ltd", "SHENZHEN-DOLPHIN" }, { 0x001D0E, "Agapha Technology co., Ltd.", "AGAPHA" }, { 0x001DB3, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001DAE, "CHANG TSENG TECHNOLOGY CO., LTD", "CHANG-TSENG" }, { 0x001DA9, "Castles Technology, Co., LTD", "CASTLES" }, { 0x001DA2, "Cisco Systems, Inc", "CISCO" }, { 0x001D9C, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0x001D9B, "Hokuyo Automatic Co., Ltd.", "HOKUYO-AUTOMATIC" }, { 0x001D96, "WatchGuard Video", "WATCHGUARD-VIDEO" }, { 0x001D8F, "PureWave Networks", "PUREWAVE-NETWORKS" }, { 0x001D8A, "TechTrex Inc", "TECHTREX" }, { 0x001D89, "VaultStor Corporation", "VAULTSTOR" }, { 0x001D7F, "Tekron International Ltd", "TEKRON" }, { 0x001D83, "Emitech Corporation", "EMITECH" }, { 0x001D79, "SIGNAMAX LLC", "SIGNAMAX-LLC" }, { 0x001D66, "Hyundai Telecom", "HYUNDAI-TELECOM" }, { 0x001D6D, "Confidant International LLC", "CONFIDANT-LLC" }, { 0x001E42, "Teltonika", "TELTONIKA" }, { 0x001E3C, "Lyngbox Media AB", "LYNGBOX-MEDIA-AB" }, { 0x001E2F, "DiMoto Pty Ltd", "DIMOTO-PTY" }, { 0x001E36, "IPTE", "IPTE" }, { 0x001E29, "Hypertherm Inc", "HYPERTHERM" }, { 0x001E23, "Electronic Educational Devices, Inc", "EDUCATIONAL-DEVICES" }, { 0x001C0C, "TANITA Corporation", "TANITA" }, { 0x001C06, "Siemens Numerical Control Ltd., Nanjing", "SIEMENS-NUMERICAL-CONTROL-NANJING" }, { 0x001BFF, "Millennia Media inc.", "MILLENNIA-MEDIA" }, { 0x001BFA, "G.i.N. mbH", "G-I-N-MBH" }, { 0x001BE3, "Health Hero Network, Inc.", "HEALTH-HERO-NETWORK" }, { 0x001BE5, "802automation Limited", "802AUTOMATION" }, { 0x001BE4, "TOWNET SRL", "TOWNET-SRL" }, { 0x001BDE, "Renkus-Heinz, Inc.", "RENKUS-HEINZ" }, { 0x001BD2, "ULTRA-X ASIA PACIFIC Inc.", "ULTRA-X-ASIA-PACIFIC" }, { 0x001C6B, "COVAX Co. Ltd", "COVAX" }, { 0x001C64, "Landis+Gyr", "LANDIS+GYR" }, { 0x001C5F, "Winland Electronics, Inc.", "WINLAND-ELECTRONICS" }, { 0x001C53, "Synergy Lighting Controls", "SYNERGY-LIGHTING-CONTROLS" }, { 0x001C58, "Cisco Systems, Inc", "CISCO" }, { 0x001C4E, "TASA International Limited", "TASA" }, { 0x001C47, "Hangzhou Hollysys Automation Co., Ltd", "HANGZHOU-HOLLYSYS-AUTOMATION" }, { 0x001C49, "Zoltan Technology Inc.", "ZOLTAN" }, { 0x001C48, "WiDeFi, Inc.", "WIDEFI" }, { 0x001C3B, "AmRoad Technology Inc.", "AMROAD" }, { 0x001C42, "Parallels, Inc. (possible Paralles Desktop, Workstation, Server, Virtuozzo VM)", "PARALLELS-VIRTUAL" }, { 0x001B72, "Sicep s.p.a.", "SICEP-S-P-A" }, { 0x001B6D, "Midtronics, Inc.", "MIDTRONICS" }, { 0x001B6B, "Swyx Solutions AG", "SWYX-SOLUTIONS" }, { 0x001B6C, "LookX Digital Media BV", "LOOKX-DIGITAL-MEDIA" }, { 0x001B66, "Sennheiser electronic GmbH & Co. KG", "SENNHEISER" }, { 0x001B5F, "Alien Technology", "ALIEN" }, { 0x001B5A, "Apollo Imaging Technologies, Inc.", "APOLLO-IMAGING-TECHNOLOGIES" }, { 0x001B53, "Cisco Systems, Inc", "CISCO" }, { 0x001B47, "Futarque A/S", "FUTARQUE-A/S" }, { 0x001B4C, "Signtech", "SIGNTECH" }, { 0x001B4E, "Navman New Zealand", "NAVMAN-NEW-ZEALAND" }, { 0x001B40, "Network Automation mxc AB", "NETWORK-AUTOMATION-MXC-AB" }, { 0x001C9E, "Dualtech IT AB", "DUALTECH-IT-AB" }, { 0x001C97, "Enzytek Technology Inc.,", "ENZYTEK" }, { 0x001C98, "LUCKY TECHNOLOGY (HK) COMPANY LIMITED", "LUCKY-HK-COMPANY" }, { 0x001C92, "Tervela", "TERVELA" }, { 0x001C8B, "MJ Innovations Ltd.", "MJ-INNOVATIONS" }, { 0x001C86, "Cranite Systems, Inc.", "CRANITE" }, { 0x001C85, "Eunicorn", "EUNICORN" }, { 0x001C81, "NextGen Venturi LTD", "NEXTGEN-VENTURI" }, { 0x001C72, "Mayer & Cie GmbH & Co KG", "MAYER-CIE" }, { 0x001C77, "Prodys", "PRODYS" }, { 0x001B34, "Focus System Inc.", "FOCUS-SYSTEM" }, { 0x001B39, "Proxicast", "PROXICAST" }, { 0x001B3B, "Yi-Qing CO., LTD", "YI-QING" }, { 0x001B28, "POLYGON, JSC", "POLYGON-JSC" }, { 0x001B2D, "Med-Eng Systems Inc.", "MED-ENG" }, { 0x001B1F, "DELTA - Danish Electronics, Light & Acoustics", "DELTA---DANISH-ELECTRONICS-LIGHT-ACOUSTICS" }, { 0x001B18, "Tsuken Electric Ind. Co.,Ltd", "TSUKEN-ELECTRIC-IND" }, { 0x001B13, "Icron Technologies Corporation", "ICRON-TECHNOLOGIES" }, { 0x001B0C, "Cisco Systems, Inc", "CISCO" }, { 0x001BA7, "Lorica Solutions", "LORICA-SOLUTIONS" }, { 0x001BA2, "IDS Imaging Development Systems GmbH", "IDS-IMAGING-DEVELOPMENT" }, { 0x001B96, "General Sensing", "GENERAL-SENSING" }, { 0x001B9B, "Hose-McCann Communications", "HOSE-MCCANN-COMMUNICATION" }, { 0x001B8F, "Cisco Systems, Inc", "CISCO" }, { 0x001B85, "MAN Diesel SE", "MAN-DIESEL-SE" }, { 0x001B7E, "Beckmann GmbH", "BECKMANN" }, { 0x001B79, "FAIVELEY TRANSPORT", "FAIVELEY-TRANSPORT" }, { 0x001C36, "iNEWiT NV", "INEWIT-NV" }, { 0x001C2F, "Pfister GmbH", "PFISTER" }, { 0x001C28, "Sphairon Technologies GmbH ", "SPHAIRON-TECHNOLOGIES" }, { 0x001C1E, "emtrion GmbH", "EMTRION" }, { 0x001C19, "secunet Security Networks AG", "SECUNET-SECURITY-NETWORKS" }, { 0x001C0B, "SmartAnt Telecom", "SMARTANT-TELECOM" }, { 0x001C0D, "G-Technology, Inc.", "G" }, { 0x001BCB, "PEMPEK SYSTEMS PTY LTD", "PEMPEK-PTY" }, { 0x001BC4, "Ultratec, Inc.", "ULTRATEC" }, { 0x001BAE, "Micro Control Systems, Inc", "MICRO-CONTROL" }, { 0x001BA8, "UBI&MOBI,.Inc", "UBI-MOBI" }, { 0x001B05, "YMC AG", "YMC" }, { 0x001B00, "Neopost Technologies", "NEOPOST-TECHNOLOGIES" }, { 0x001AF9, "AeroVIronment (AV Inc)", "AEROVIRONMENT-AV" }, { 0x001AEF, "Loopcomm Technology, Inc.", "LOOPCOMM" }, { 0x001AE3, "Cisco Systems, Inc", "CISCO" }, { 0x001AEA, "Radio Terminal Systems Pty Ltd", "RADIO-TERMINAL-PTY" }, { 0x001A26, "Deltanode Solutions AB", "DELTANODE-SOLUTIONS-AB" }, { 0x001A2B, "Ayecom Technology Co., Ltd.", "AYECOM" }, { 0x001A1F, "Coastal Environmental Systems", "COASTAL-ENVIRONMENTAL" }, { 0x001A1A, "Gentex Corporation/Electro-Acoustic Products", "GENTEX-/ELECTRO-ACOUSTIC-PRODUCTS" }, { 0x001A13, "Wanlida Group Co., LTD", "WANLIDA-GROUP" }, { 0x001A0E, "Cheng Uei Precision Industry Co.,Ltd", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0x001A0C, "Swe-Dish Satellite Systems AB", "SWE-DISH-SATELLITE-AB" }, { 0x001A07, "Arecont Vision", "ARECONT-VISION" }, { 0x001A00, "MATRIX INC.", "MATRIX" }, { 0x001AD0, "Albis Technologies AG", "ALBIS-TECHNOLOGIES" }, { 0x001AD5, "KMC CHAIN INDUSTRIAL CO., LTD.", "KMC-CHAIN-INDUSTRIAL" }, { 0x001AD7, "Christie Digital Systems, Inc.", "CHRISTIE-DIGITAL" }, { 0x001AC9, "SUZUKEN CO.,LTD", "SUZUKEN" }, { 0x001ABA, "Caton Overseas Limited", "CATON-OVERSEAS" }, { 0x001ABF, "TRUMPF Laser Marking Systems AG", "TRUMPF-LASER-MARKING" }, { 0x001A81, "Zelax", "ZELAX" }, { 0x001A88, "Venergy,Co,Ltd", "VENERGY" }, { 0x001A7A, "Lismore Instruments Limited", "LISMORE-INSTRUMENTS" }, { 0x001A70, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001A72, "Mosart Semiconductor Corp.", "MOSART-SEMICONDUCTOR" }, { 0x001A64, "IBM Corp", "IBM" }, { 0x001A56, "ViewTel Co,. Ltd.", "VIEWTEL" }, { 0x001A5B, "NetCare Service Co., Ltd.", "NETCARE-SERVICE" }, { 0x001A5F, "KitWorks.fi Ltd.", "KITWORKS-FI" }, { 0x0019B6, "Euro Emme s.r.l.", "EURO-EMME-S-R-L" }, { 0x0019A3, "asteel electronique atlantique", "ASTEEL-ELECTRONIQUE-ATLANTIQUE" }, { 0x0019A8, "WiQuest Communications", "WIQUEST-COMMUNICATION" }, { 0x0019AA, "Cisco Systems, Inc", "CISCO" }, { 0x0019AF, "Rigol Technologies, Inc.", "RIGOL-TECHNOLOGIES" }, { 0x001997, "Soft Device Sdn Bhd", "SOFT-DEVICE-SDN-BHD" }, { 0x00199C, "CTRING", "CTRING" }, { 0x001A43, "Logical Link Communications", "LOGICAL-LINK-COMMUNICATION" }, { 0x001A48, "Takacom Corporation", "TAKACOM" }, { 0x001A4A, "Qumranet Inc.", "QUMRANET" }, { 0x001A3C, "Technowave Ltd.", "TECHNOWAVE" }, { 0x001A30, "Cisco Systems, Inc", "CISCO" }, { 0x001A35, "BARTEC GmbH", "BARTEC" }, { 0x001A37, "Lear Corporation", "LEAR" }, { 0x0019F2, "Teradyne K.K.", "TERADYNE-K-K" }, { 0x0019F7, "Onset Computer Corporation", "ONSET" }, { 0x0019DF, "Thomson Inc.", "THOMSON" }, { 0x0019E6, "TOYO MEDIC CO.,LTD.", "TOYO-MEDIC" }, { 0x0019EB, "Pyronix Ltd", "PYRONIX" }, { 0x0019CC, "RCG (HK) Ltd", "RCG-HK" }, { 0x0019D3, "TRAK Microwave", "TRAK-MICROWAVE" }, { 0x0019D8, "MAXFOR", "MAXFOR" }, { 0x0019C2, "Equustek Solutions, Inc.", "EQUUSTEK-SOLUTIONS" }, { 0x00198B, "Novera Optics Korea, Inc.", "NOVERA-OPTICS-KOREA" }, { 0x00198D, "Ocean Optics, Inc.", "OCEAN-OPTICS" }, { 0x001986, "Cheng Hongjian", "CHENG-HONGJIAN" }, { 0x001973, "Zeugma Systems", "ZEUGMA" }, { 0x00197A, "MAZeT GmbH", "MAZET" }, { 0x001967, "TELDAT Sp.J.", "TELDAT-SP-J" }, { 0x00196C, "ETROVISION TECHNOLOGY", "ETROVISION" }, { 0x00196E, "Metacom (Pty) Ltd.", "METACOM-PTY" }, { 0x001AAC, "Corelatus AB", "CORELATUS-AB" }, { 0x001AAE, "Savant Systems LLC", "SAVANT-LLC" }, { 0x001AB3, "VISIONITE INC.", "VISIONITE" }, { 0x001AA7, "Torian Wireless", "TORIAN-WIRELESS" }, { 0x001A9E, "ICON Digital International Limited", "ICON-DIGITAL" }, { 0x001AA3, "DELORME", "DELORME" }, { 0x001AA5, "BRN Phoenix", "BRN-PHOENIX" }, { 0x001AA4, "Future University-Hakodate", "FUTURE-UNIVERSITY-HAKODATE" }, { 0x001A97, "fitivision technology Inc.", "FITIVISION" }, { 0x001A8D, "AVECS Bergen GmbH", "AVECS-BERGEN" }, { 0x001962, "Commerciant, LP", "COMMERCIANT-LP" }, { 0x00195D, "ShenZhen XinHuaTong Opto Electronics Co.,Ltd", "SHENZHEN-XINHUATONG-OPTO-ELECTRONICS" }, { 0x001951, "NETCONS, s.r.o.", "NETCONS-S-R-O" }, { 0x001956, "Cisco Systems, Inc", "CISCO" }, { 0x00194A, "TESTO AG", "TESTO" }, { 0x001943, "Belden", "BELDEN" }, { 0x001873, "Cisco Systems, Inc", "CISCO" }, { 0x001875, "AnaCise Testnology Pte Ltd", "ANACISE-TESTNOLOGY-PTE" }, { 0x00187A, "Wiremold", "WIREMOLD" }, { 0x00186E, "3Com Ltd", "3COM" }, { 0x00185E, "Nexterm Inc.", "NEXTERM" }, { 0x001860, "SIM Technology Group Shanghai Simcom Ltd.,", "SIM-GROUP-SHANGHAI-SIMCOM" }, { 0x001865, "Siemens Healthcare Diagnostics Manufacturing Ltd", "SIEMENS-HEALTHCARE-DIAGNOSTICS-MANUFACTURING" }, { 0x001903, "Bigfoot Networks Inc", "BIGFOOT-NETWORKS" }, { 0x0018F9, "VVOND, Inc.", "VVOND" }, { 0x0018F2, "Beijing Tianyu Communication Equipment Co., Ltd", "BEIJING-TIANYU-COMMUNICATION-EQUIPMENT" }, { 0x0018EB, "Blue Zen Enterprises Private Limited", "BLUE-ZEN-ENTERPRISES-PRIVATE" }, { 0x0018ED, "Accutech Ultrasystems Co., Ltd.", "ACCUTECH-ULTRASYSTEMS" }, { 0x0018E6, "Computer Hardware Design SIA", "HARDWARE-DESIGN-SIA" }, { 0x0018DF, "The Morey Corporation", "THE-MOREY" }, { 0x001937, "CommerceGuard AB", "COMMERCEGUARD-AB" }, { 0x00192E, "Spectral Instruments, Inc.", "SPECTRAL-INSTRUMENTS" }, { 0x001932, "Gude Analog- und Digialsysteme GmbH", "GUDE-ANALOG--UND-DIGIALSYSTEME" }, { 0x001922, "CM Comandos Lineares", "CM-COMANDOS-LINEARES" }, { 0x001927, "ImCoSys Ltd", "IMCOSYS" }, { 0x001929, "2M2B Montadora de Maquinas Bahia Brasil LTDA", "2M2B-MONTADORA-DE-MAQUINAS-BAHIA-BRASIL-LTDA" }, { 0x00190F, "Advansus Corp.", "ADVANSUS" }, { 0x001916, "PayTec AG", "PAYTEC" }, { 0x00191B, "Sputnik Engineering AG", "SPUTNIK-ENGINEERING" }, { 0x001908, "Duaxes Corporation", "DUAXES" }, { 0x00190A, "HASWARE INC.", "HASWARE" }, { 0x0017D6, "Bluechips Microhouse Co.,Ltd.", "BLUECHIPS-MICROHOUSE" }, { 0x0017DB, "CANKO TECHNOLOGIES INC.", "CANKO-TECHNOLOGIES" }, { 0x0017CC, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x0017C5, "SonicWALL", "SONICWALL" }, { 0x0017B9, "Gambro Lundia AB", "GAMBRO-LUNDIA-AB" }, { 0x0017BE, "Tratec Telecom B.V.", "TRATEC-TELECOM" }, { 0x0017C0, "PureTech Systems, Inc.", "PURETECH" }, { 0x001852, "StorLink Semiconductors, Inc.", "STORLINK-SEMICONDUCTORS" }, { 0x001859, "Strawberry Linux Co.,Ltd.", "STRAWBERRY-LINUX" }, { 0x00184B, "Las Vegas Gaming, Inc.", "LAS-VEGAS-GAMING" }, { 0x001846, "Crypto S.A.", "CRYPTO" }, { 0x001829, "Gatsometer", "GATSOMETER" }, { 0x001835, "Thoratec / ITC", "THORATEC-/-ITC" }, { 0x001824, "Kimaldi Electronics, S.L.", "KIMALDI-ELECTRONICS-S-L" }, { 0x001822, "CEC TELECOM CO.,LTD.", "CEC-TELECOM" }, { 0x0017B2, "SK Telesys", "SK-TELESYS" }, { 0x0017AD, "AceNet Corporation", "ACENET" }, { 0x0017A6, "YOSIN ELECTRONICS CO., LTD.", "YOSIN-ELECTRONICS" }, { 0x0017A1, "3soft inc.", "3SOFT" }, { 0x00179C, "DEPRAG SCHULZ GMBH u. CO.", "DEPRAG-SCHULZ-U" }, { 0x001790, "HYUNDAI DIGITECH Co, Ltd.", "HYUNDAI-DIGITECH" }, { 0x001795, "Cisco Systems, Inc", "CISCO" }, { 0x0018CE, "Dreamtech Co., Ltd", "DREAMTECH" }, { 0x0018D3, "TEAMCAST", "TEAMCAST" }, { 0x0018C2, "Firetide, Inc", "FIRETIDE" }, { 0x0018C4, "Raba Technologies LLC", "RABA-TECHNOLOGIES-LLC" }, { 0x0018C9, "EOps Technology Limited", "EOPS" }, { 0x0018BD, "SHENZHEN DVBWORLD TECHNOLOGY CO., LTD.", "SHENZHEN-DVBWORLD" }, { 0x0018B1, "IBM Corp", "IBM" }, { 0x0018B6, "S3C, Inc.", "S3C" }, { 0x0018A3, "ZIPPY TECHNOLOGY CORP.", "ZIPPY" }, { 0x0018AA, "Protec Fire Detection plc", "PROTEC-FIRE-DETECTION-PLC" }, { 0x001816, "Ubixon Co., Ltd.", "UBIXON" }, { 0x00181D, "ASIA ELECTRONICS CO.,LTD", "ASIA-ELECTRONICS" }, { 0x001811, "Neuros Technology International, LLC.", "NEUROS-LLC" }, { 0x001801, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0017F5, "LIG NEOPTEK", "LIG-NEOPTEK" }, { 0x0017FA, "Microsoft Corporation", "MICROSOFT" }, { 0x0017FC, "Suprema Inc.", "SUPREMA" }, { 0x00189E, "OMNIKEY GmbH.", "OMNIKEY" }, { 0x001894, "NPCore, Inc.", "NPCORE" }, { 0x001899, "ShenZhen jieshun Science&Technology Industry CO,LTD.", "SHENZHEN-JIESHUN-SCIENCE-INDUSTRY" }, { 0x001886, "EL-TECH, INC.", "EL-TECH" }, { 0x001888, "GOTIVE a.s.", "GOTIVE-A-S" }, { 0x001881, "Buyang Electronics Industrial Co., Ltd", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0016D4, "Compal Communications, Inc.", "COMPAL-COMMUNICATION" }, { 0x0016D9, "NINGBO BIRD CO.,LTD.", "NINGBO-BIRD" }, { 0x0016C8, "Cisco Systems, Inc", "CISCO" }, { 0x0016CD, "HIJI HIGH-TECH CO., LTD.", "HIJI-HIGH-TECH" }, { 0x0016C1, "Eleksen Ltd", "ELEKSEN" }, { 0x0016BA, "WEATHERNEWS INC.", "WEATHERNEWS" }, { 0x00164F, "World Ethnic Broadcastin Inc.", "WORLD-ETHNIC-BROADCASTIN" }, { 0x001648, "SSD Company Limited", "SSD-COMPANY" }, { 0x001643, "Sunhillo Corporation", "SUNHILLO" }, { 0x00163E, "Xensource, Inc. (possible Xen VM)", "XENSOURCE-VIRTUAL" }, { 0x001637, "CITEL SpA", "CITEL-SPA" }, { 0x00162B, "Togami Electric Mfg.co.,Ltd.", "TOGAMI-ELECTRIC-MFG" }, { 0x001755, "GE Security", "GE-SECURITY" }, { 0x001747, "Trimble", "TRIMBLE" }, { 0x001749, "HYUNDAE YONG-O-SA CO.,LTD", "HYUNDAE-YONG-O" }, { 0x00174E, "Parama-tech Co.,Ltd.", "PARAMA-TECH" }, { 0x001732, "Science-Technical Center RISSA", "SCIENCE-TECHNICAL-CENTER-RISSA" }, { 0x001734, "ADC Telecommunications", "ADC-TELECOMMUNICATIONS" }, { 0x001739, "Bright Headphone Electronics Company", "BRIGHT-HEADPHONE-ELECTRONICS-COMPANY" }, { 0x00172D, "Axcen Photonics Corporation", "AXCEN-PHOTONICS" }, { 0x001624, "Teneros, Inc.", "TENEROS" }, { 0x001613, "LibreStream Technologies Inc.", "LIBRESTREAM-TECHNOLOGIES" }, { 0x001618, "HIVION Co., Ltd.", "HIVION" }, { 0x00161F, "SUNWAVETEC Co., Ltd.", "SUNWAVETEC" }, { 0x00160E, "Optica Technologies Inc.", "OPTICA-TECHNOLOGIES" }, { 0x001607, "Curves International Inc.", "CURVES" }, { 0x001609, "Unitech electronics co., ltd.", "UNITECH-ELECTRONICS" }, { 0x001608, "Sequans Communications", "SEQUANS-COMMUNICATION" }, { 0x001602, "CEYON TECHNOLOGY CO.,LTD.", "CEYON" }, { 0x0015FB, "setex schermuly textile computer gmbh", "SETEX-SCHERMULY-TEXTILE" }, { 0x0015F6, "SCIENCE AND ENGINEERING SERVICES, INC.", "SCIENCE-AND-ENGINEERING-SERVICES" }, { 0x001782, "LoBenn Inc.", "LOBENN" }, { 0x001789, "Zenitron Corporation", "ZENITRON" }, { 0x00176D, "CORE CORPORATION", "CORE" }, { 0x001771, "APD Communications Ltd", "APD-COMMUNICATION" }, { 0x001776, "Meso Scale Diagnostics, LLC", "MESO-SCALE-DIAGNOSTICS-LLC" }, { 0x001761, "Private", "PRIVATE" }, { 0x001768, "Zinwave Ltd", "ZINWAVE" }, { 0x00175C, "SHARP CORPORATION", "SHARP" }, { 0x00175A, "Cisco Systems, Inc", "CISCO" }, { 0x001709, "Exalt Communications", "EXALT-COMMUNICATION" }, { 0x001704, "Shinco Electronics Group Co.,Ltd", "SHINCO-ELECTRONICS-GROUP" }, { 0x0016FD, "Jaty Electronics", "JATY-ELECTRONICS" }, { 0x0016F1, "OmniSense, LLC", "OMNISENSE-LLC" }, { 0x0016F6, "Video Products Group", "VIDEO-PRODUCTS-GROUP" }, { 0x0016F8, "AVIQTECH TECHNOLOGY CO., LTD.", "AVIQTECH" }, { 0x0016E5, "FORDLEY DEVELOPMENT LIMITED", "FORDLEY-DEVELOPMENT" }, { 0x0016DE, "FAST Inc", "FAST" }, { 0x00167E, "DIBOSS.CO.,LTD", "DIBOSS" }, { 0x001680, "Bally Gaming + Systems", "BALLY-GAMING-+" }, { 0x001679, "eOn Communications", "EON-COMMUNICATION" }, { 0x00166E, "Arbitron Inc.", "ARBITRON" }, { 0x001667, "A-TEC Subsystem INC.", "A-TEC-SUBSYSTEM" }, { 0x00165B, "Grip Audio", "GRIP-AUDIO" }, { 0x001654, "Flex-P Industries Sdn. Bhd.", "FLEX-P-INDUSTRIES-SDN-BHD" }, { 0x001721, "FITRE S.p.A.", "FITRE-S-P-A" }, { 0x001726, "m2c Electronic Technology Ltd.", "M2C" }, { 0x00171A, "Winegard Company", "WINEGARD-COMPANY" }, { 0x00171F, "IMV Corporation", "IMV" }, { 0x001713, "Tiger NetCom", "TIGER-NETCOM" }, { 0x00170E, "Cisco Systems, Inc", "CISCO" }, { 0x0016A9, "2EI", "2EI" }, { 0x0016AE, "INVENTEL", "INVENTEL" }, { 0x00169D, "Cisco Systems, Inc", "CISCO" }, { 0x00169F, "Vimtron Electronics Co., Ltd.", "VIMTRON-ELECTRONICS" }, { 0x0016A4, "Ezurio Ltd", "EZURIO" }, { 0x001691, "Moser-Baer AG", "MOSER-BAER" }, { 0x001698, "T&A Mobile Phones", "T-A-MOBILE-PHONES" }, { 0x00168C, "DSL Partner AS", "DSL-PARTNER-AS" }, { 0x001685, "Elisa Oyj", "ELISA-OYJ" }, { 0x0015EF, "NEC TOKIN Corporation", "NEC-TOKIN" }, { 0x0015E3, "Dream Technologies Corporation", "DREAM-TECHNOLOGIES" }, { 0x0015D9, "PKC Electronics Oy", "PKC-ELECTRONICS-OY" }, { 0x0015D2, "Xantech Corporation", "XANTECH" }, { 0x0015CC, "UQUEST, LTD.", "UQUEST" }, { 0x0015CB, "Surf Communication Solutions Ltd.", "SURF-COMMUNICATION-SOLUTIONS" }, { 0x0015CD, "Exartech International Corp.", "EXARTECH" }, { 0x0015C6, "Cisco Systems, Inc", "CISCO" }, { 0x0015BB, "SMA Solar Technology AG", "SMA-SOLAR" }, { 0x0014D5, "Datang Telecom Technology CO. , LCD,Optical Communication Br", "DATANG-TELECOM-LCD-OPTICAL-COMMUNICATION-BR" }, { 0x0014DA, "Huntleigh Healthcare", "HUNTLEIGH-HEALTHCARE" }, { 0x0014CE, "NF CORPORATION", "NF" }, { 0x0014C8, "Contemporary Research Corp", "CONTEMPORARY-RESEARCH" }, { 0x0014BB, "Open Interface North America", "OPEN-INTERFACE-NORTH-AMERICA" }, { 0x0014B6, "Enswer Technology Inc.", "ENSWER" }, { 0x0014AC, "Bountiful WiFi", "BOUNTIFUL-WIFI" }, { 0x0014B1, "Axell Wireless Limited", "AXELL-WIRELESS" }, { 0x001476, "MultiCom Industries Limited", "MULTICOM-INDUSTRIES" }, { 0x001471, "Eastern Asia Technology Limited", "EASTERN-ASIA" }, { 0x00146A, "Cisco Systems, Inc", "CISCO" }, { 0x001463, "IDCS N.V.", "IDCS-N-V" }, { 0x001465, "Novo Nordisk A/S", "NOVO-NORDISK-A/S" }, { 0x001464, "Cryptosoft", "CRYPTOSOFT" }, { 0x00145E, "IBM Corp", "IBM" }, { 0x001457, "T-VIPS AS", "T-VIPS-AS" }, { 0x001452, "CALCULEX,INC.", "CALCULEX" }, { 0x001592, "Facom UK Ltd (Melksham)", "FACOM-UK-MELKSHAM" }, { 0x00158B, "Park Air Systems Ltd", "PARK-AIR" }, { 0x001584, "Schenck Process GmbH", "SCHENCK-PROCESS" }, { 0x00157F, "ChuanG International Holding CO.,LTD.", "CHUANG-HOLDING" }, { 0x00157A, "Telefin S.p.A.", "TELEFIN-S-P-A" }, { 0x001575, "Nevis Networks Inc.", "NEVIS-NETWORKS" }, { 0x00156E, "A. W. Communication Systems Ltd", "A-W-COMMUNICATION" }, { 0x001567, "RADWIN Inc.", "RADWIN" }, { 0x001569, "PECO II, Inc.", "PECO-II" }, { 0x001568, "Dilithium Networks", "DILITHIUM-NETWORKS" }, { 0x001562, "Cisco Systems, Inc", "CISCO" }, { 0x001503, "PROFIcomms s.r.o.", "PROFICOMMS-S-R-O" }, { 0x001505, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001504, "GAME PLUS CO., LTD.", "GAME-PLUS" }, { 0x0014FE, "Artech Electronics", "ARTECH-ELECTRONICS" }, { 0x0014F7, "CREVIS Co., LTD", "CREVIS" }, { 0x0014F2, "Cisco Systems, Inc", "CISCO" }, { 0x0014EB, "AwarePoint Corporation", "AWAREPOINT" }, { 0x0014E1, "Data Display AG", "DATA-DISPLAY" }, { 0x00155B, "Sampo Corporation", "SAMPO" }, { 0x00154F, "one RF Technology", "ONE-RF" }, { 0x001546, "ITG Worldwide Sdn Bhd", "ITG-WORLDWIDE-SDN-BHD" }, { 0x00153F, "Alcatel Alenia Space Italia", "ALCATEL-ALENIA-SPACE-ITALIA" }, { 0x001541, "StrataLight Communications, Inc.", "STRATALIGHT-COMMUNICATION" }, { 0x00153A, "Shenzhen Syscan Technology Co.,Ltd.", "SHENZHEN-SYSCAN" }, { 0x0015BF, "technicob", "TECHNICOB" }, { 0x0015B4, "Polymap Wireless LLC", "POLYMAP-WIRELESS-LLC" }, { 0x0015AA, "Rextechnik International Co.,", "REXTECHNIK" }, { 0x0015A5, "DCI Co., Ltd.", "DCI" }, { 0x00159E, "Mad Catz Interactive Inc", "MAD-CATZ-INTERACTIVE" }, { 0x001597, "AETA AUDIO SYSTEMS", "AETA-AUDIO" }, { 0x00149E, "UbONE Co., Ltd", "UBONE" }, { 0x001499, "Helicomm Inc", "HELICOMM" }, { 0x001492, "Liteon, Mobile Media Solution SBU", "LITEON-MOBILE-MEDIA-SOLUTION-SBU" }, { 0x00148B, "Globo Electronic GmbH & Co. KG", "GLOBO" }, { 0x00148D, "Cubic Defense Simulation Systems", "CUBIC-DEFENSE-SIMULATION" }, { 0x001486, "Echo Digital Audio Corporation", "ECHO-DIGITAL-AUDIO" }, { 0x00147D, "Aeon Digital International", "AEON-DIGITAL" }, { 0x001533, "NADAM.CO.,LTD", "NADAM" }, { 0x00152E, "PacketHop, Inc.", "PACKETHOP" }, { 0x001527, "Balboa Instruments", "BALBOA-INSTRUMENTS" }, { 0x001520, "Radiocrafts AS", "RADIOCRAFTS-AS" }, { 0x00151B, "Isilon Systems Inc.", "ISILON" }, { 0x001516, "URIEL SYSTEMS INC.", "URIEL" }, { 0x001511, "Data Center Systems", "DATA-CENTER" }, { 0x00150A, "Sonoa Systems, Inc", "SONOA" }, { 0x00131F, "NxtPhase T&D, Corp.", "NXTPHASE-T-D" }, { 0x001318, "DGSTATION Co., Ltd.", "DGSTATION" }, { 0x00130C, "HF System Corporation", "HF-SYSTEM" }, { 0x001313, "GuangZhou Post & Telecom Equipment ltd", "GUANGZHOU-POST-TELECOM-EQUIPMENT" }, { 0x001354, "Zcomax Technologies, Inc.", "ZCOMAX-TECHNOLOGIES" }, { 0x001358, "Realm Systems, Inc.", "REALM" }, { 0x00135D, "NTTPC Communications, Inc.", "NTTPC-COMMUNICATION" }, { 0x00134F, "Tranzeo Wireless Technologies Inc.", "TRANZEO-WIRELESS-TECHNOLOGIES" }, { 0x001348, "Artila Electronics Co., Ltd.", "ARTILA-ELECTRONICS" }, { 0x001342, "Vision Research, Inc.", "VISION-RESEARCH" }, { 0x00133C, "QUINTRON SYSTEMS INC.", "QUINTRON" }, { 0x001341, "Shandong New Beiyang Information Technology Co.,Ltd", "SHANDONG-NEW-BEIYANG-INFORMATION" }, { 0x001329, "VSST Co., LTD", "VSST" }, { 0x001330, "EURO PROTECTION SURVEILLANCE", "EURO-PROTECTION-SURVEILLANCE" }, { 0x001335, "VS Industry Berhad", "VS-INDUSTRY-BERHAD" }, { 0x00132F, "Interactek", "INTERACTEK" }, { 0x0012C4, "Viseon, Inc.", "VISEON" }, { 0x0012D0, "Gossen-Metrawatt-GmbH", "GOSSEN-METRAWATT" }, { 0x0012CA, "Mechatronic Brick Aps", "MECHATRONIC-BRICK-APS" }, { 0x0012BA, "FSI Systems, Inc.", "FSI" }, { 0x0012AE, "HLS HARD-LINE Solutions Inc.", "HLS-HARD-LINE-SOLUTIONS" }, { 0x0012B3, "Advance Wireless Technology Corp.", "ADVANCE-WIRELESS" }, { 0x0012AD, "IDS GmbH", "IDS" }, { 0x00144D, "Intelligent Systems", "INTELLIGENT" }, { 0x001441, "Innovation Sound Technology Co., LTD.", "INNOVATION-SOUND" }, { 0x001448, "Inventec Multimedia & Telecom Corporation", "INVENTEC-MULTIMEDIA-TELECOM" }, { 0x00143A, "RAYTALK INTERNATIONAL SRL", "RAYTALK-SRL" }, { 0x001435, "CityCom Corp.", "CITYCOM" }, { 0x00142E, "77 Elektronika Kft.", "77-ELEKTRONIKA-KFT" }, { 0x001429, "V Center Technologies Co., Ltd.", "V-CENTER-TECHNOLOGIES" }, { 0x001427, "JazzMutant", "JAZZMUTANT" }, { 0x00141E, "P.A. Semi, Inc.", "P-A-SEMI" }, { 0x0012F9, "URYU SEISAKU, LTD.", "URYU-SEISAKU" }, { 0x001300, "IT-FACTORY, INC.", "IT-FACTORY" }, { 0x001305, "Epicom, Inc.", "EPICOM" }, { 0x001306, "Always On Wireless", "ALWAYS-ON-WIRELESS" }, { 0x0012F4, "Belco International Co.,Ltd.", "BELCO" }, { 0x0012EF, "OneAccess SA", "ONEACCESS" }, { 0x0012EA, "Trane", "TRANE" }, { 0x0012E9, "Abbey Systems Ltd", "ABBEY" }, { 0x0012DC, "SunCorp Industrial Limited", "SUNCORP-INDUSTRIAL" }, { 0x0012E3, "Agat-RT, Ltd.", "AGAT-RT" }, { 0x0012D7, "Invento Networks, Inc.", "INVENTO-NETWORKS" }, { 0x0013F0, "Wavefront Semiconductor", "WAVEFRONT-SEMICONDUCTOR" }, { 0x0013EB, "Sysmaster Corporation", "SYSMASTER" }, { 0x0013E6, "Technolution", "TECHNOLUTION" }, { 0x0013DF, "Ryvor Corp.", "RYVOR" }, { 0x0013D9, "Matrix Product Development, Inc.", "MATRIX-PRODUCT-DEVELOPMENT" }, { 0x0013DA, "Diskware Co., Ltd", "DISKWARE" }, { 0x0013CD, "MTI co. LTD", "MTI" }, { 0x0013D3, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0013C1, "Asoka USA Corporation", "ASOKA-USA" }, { 0x0013BC, "Artimi Ltd", "ARTIMI" }, { 0x0013B7, "Scantech ID", "SCANTECH-ID" }, { 0x0013AB, "Telemotive AG", "TELEMOTIVE" }, { 0x0013B2, "Carallon Limited", "CARALLON" }, { 0x0013B1, "Intelligent Control Systems (Asia) Pte Ltd", "INTELLIGENT-CONTROL-ASIA-PTE" }, { 0x0013A4, "KeyEye Communications", "KEYEYE-COMMUNICATION" }, { 0x00139F, "Electronics Design Services, Co., Ltd.", "ELECTRONICS-DESIGN-SERVICES" }, { 0x001398, "TrafficSim Co.,Ltd", "TRAFFICSIM" }, { 0x00138C, "Kumyoung.Co.Ltd", "KUMYOUNG" }, { 0x001391, "OUEN CO.,LTD.", "OUEN" }, { 0x00137C, "Kaicom co., Ltd.", "KAICOM" }, { 0x001383, "Application Technologies and Engineering Research Laboratory", "APPLICATION-TECHNOLOGIES-AND-ENGINEERING-RESEARCH-LABORATORY" }, { 0x001364, "Paradigm Technology Inc..", "PARADIGM" }, { 0x001369, "Honda Electron Co., LED.", "HONDA-ELECTRON-LED" }, { 0x00136A, "Hach Lange Sarl", "HACH-LANGE-SARL" }, { 0x001418, "C4Line", "C4LINE" }, { 0x00141D, "LTi DRIVES GmbH", "LTI-DRIVES" }, { 0x001411, "Deutschmann Automation GmbH & Co. KG", "DEUTSCHMANN-AUTOMATION" }, { 0x004501, "Versus Technology, Inc.", "VERSUS" }, { 0x001403, "Renasis, LLC", "RENASIS-LLC" }, { 0x0013FC, "SiCortex, Inc", "SICORTEX" }, { 0x0013F5, "Akimbi Systems", "AKIMBI" }, { 0x0013F6, "Cintech", "CINTECH" }, { 0x001286, "ENDEVCO CORP", "ENDEVCO" }, { 0x00127F, "Cisco Systems, Inc", "CISCO" }, { 0x001278, "International Bar Code", "BAR-CODE" }, { 0x001273, "Stoke Inc", "STOKE" }, { 0x001266, "Swisscom Hospitality Services SA", "SWISSCOM-HOSPITALITY-SERVICES" }, { 0x001265, "Enerdyne Technologies, Inc.", "ENERDYNE-TECHNOLOGIES" }, { 0x00125B, "KAIMEI ELECTRONI", "KAIMEI-ELECTRONI" }, { 0x0011D2, "Perception Digital Ltd", "PERCEPTION-DIGITAL" }, { 0x0011D7, "eWerks Inc", "EWERKS" }, { 0x0011D1, "Soft Imaging System GmbH", "SOFT-IMAGING-SYSTEM" }, { 0x0011C2, "United Fiber Optic Communication", "UNITED-FIBER-OPTIC-COMMUNICATION" }, { 0x0011CB, "Jacobsons AB", "JACOBSONS-AB" }, { 0x0011BB, "Cisco Systems, Inc", "CISCO" }, { 0x0011BC, "Cisco Systems, Inc", "CISCO" }, { 0x0011AA, "Uniclass Technology, Co., LTD", "UNICLASS" }, { 0x0011AF, "Medialink-i,Inc", "MEDIALINK-I" }, { 0x001200, "Cisco Systems, Inc", "CISCO" }, { 0x0011FB, "Heidelberg Engineering GmbH", "HEIDELBERG-ENGINEERING" }, { 0x0011F6, "Asia Pacific Microsystems , Inc.", "ASIA-PACIFIC-MICROSYSTEMS" }, { 0x0011F1, "QinetiQ Ltd", "QINETIQ" }, { 0x0011EA, "IWICS Inc.", "IWICS" }, { 0x0011E3, "Thomson, Inc.", "THOMSON" }, { 0x0011DE, "EURILOGIC", "EURILOGIC" }, { 0x0011E4, "Danelec Electronics A/S", "DANELEC-ELECTRONICS-A/S" }, { 0x001230, "Picaso Infocommunication CO., LTD.", "PICASO-INFOCOMMUNICATION" }, { 0x001226, "Japan Direx Corporation", "JAPAN-DIREX" }, { 0x001220, "Cadco Systems", "CADCO" }, { 0x00121A, "Techno Soft Systemnics Inc.", "TECHNO-SOFT-SYSTEMNICS" }, { 0x00121F, "Harding Instruments", "HARDING-INSTRUMENTS" }, { 0x001213, "Metrohm AG", "METROHM" }, { 0x00120D, "Advanced Telecommunication Technologies, Inc.", "ADVANCED-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x001207, "Head Strong International Limited", "HEAD-STRONG" }, { 0x00120E, "AboCom", "ABOCOM" }, { 0x00117A, "Singim International Corp.", "SINGIM" }, { 0x001173, "SMART Storage Systems", "SMART-STORAGE" }, { 0x001167, "Integrated System Solution Corp.", "INTEGRATED-SYSTEM-SOLUTION" }, { 0x00116D, "American Time and Signal", "AMERICAN-TIME-AND-SIGNAL" }, { 0x001163, "SYSTEM SPA DEPT. ELECTRONICS", "SYSTEM-SPA-DEPT-ELECTRONICS" }, { 0x001156, "Pharos Systems NZ", "PHAROS-NZ" }, { 0x00115D, "Cisco Systems, Inc", "CISCO" }, { 0x0012A7, "ISR TECHNOLOGIES Inc", "ISR-TECHNOLOGIES" }, { 0x0012A0, "NeoMeridian Sdn Bhd", "NEOMERIDIAN-SDN-BHD" }, { 0x00129B, "E2S Electronic Engineering Solutions, S.L.", "E2S-ENGINEERING-SOLUTIONS-S-L" }, { 0x001294, "SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC", "SUMITOMO-ELECTRIC-DEVICE-INNOVATIONS" }, { 0x00128B, "Sensory Networks Inc", "SENSORY-NETWORKS" }, { 0x001285, "Gizmondo Europe Ltd", "GIZMONDO-EUROPE" }, { 0x0011A9, "MOIMSTONE Co., LTD", "MOIMSTONE" }, { 0x0011A3, "LanReady Technologies Inc.", "LANREADY-TECHNOLOGIES" }, { 0x001197, "Monitoring Technologies Limited", "MONITORING-TECHNOLOGIES" }, { 0x00119C, "EP&T Energy", "EP-T-ENERGY" }, { 0x00118D, "Hanchang System Corp.", "HANCHANG-SYSTEM" }, { 0x001192, "Cisco Systems, Inc", "CISCO" }, { 0x001186, "Prime Systems, Inc.", "PRIME" }, { 0x00117F, "Neotune Information Technology Corporation,.LTD", "NEOTUNE-INFORMATION" }, { 0x001260, "Stanton Magnetics,inc.", "STANTON-MAGNETICS" }, { 0x001256, "LG INFORMATION & COMM.", "LG-INFORMATION-COMM" }, { 0x00124F, "Pentair Thermal Management", "PENTAIR-THERMAL-MANAGEMENT" }, { 0x00124A, "Dedicated Devices, Inc.", "DEDICATED-DEVICES" }, { 0x001249, "Delta Elettronica S.p.A.", "DELTA-ELETTRONICA-S-P-A" }, { 0x001243, "Cisco Systems, Inc", "CISCO" }, { 0x00123C, "Second Rule LLC", "SECOND-RULE-LLC" }, { 0x001148, "Prolon Control Systems", "PROLON-CONTROL" }, { 0x00114D, "Atsumi Electric Co.,LTD.", "ATSUMI-ELECTRIC" }, { 0x00114E, "690885 Ontario Inc.", "690885-ONTARIO" }, { 0x001141, "GoodMan Corporation", "GOODMAN" }, { 0x00113B, "Micronet Communications Inc.", "MICRONET-COMMUNICATION" }, { 0x001135, "Grandeye Ltd", "GRANDEYE" }, { 0x001126, "Venstar Inc.", "VENSTAR" }, { 0x000EB9, "HASHIMOTO Electronics Industry Co.,Ltd.", "HASHIMOTO-ELECTRONICS-INDUSTRY" }, { 0x000EBA, "HANMI SEMICONDUCTOR CO., LTD.", "HANMI-SEMICONDUCTOR" }, { 0x000EAC, "MINTRON ENTERPRISE CO., LTD.", "MINTRON" }, { 0x000EA0, "NetKlass Technology Inc.", "NETKLASS" }, { 0x000EA7, "Endace Technology", "ENDACE" }, { 0x000E9A, "BOE TECHNOLOGY GROUP CO.,LTD", "BOE-GROUP" }, { 0x000E99, "Spectrum Digital, Inc", "SPECTRUM-DIGITAL" }, { 0x00112B, "NetModule AG", "NETMODULE" }, { 0x001120, "Cisco Systems, Inc", "CISCO" }, { 0x001125, "IBM Corp", "IBM" }, { 0x001119, "Solteras, Inc.", "SOLTERAS" }, { 0x001113, "Fraunhofer FOKUS", "FRAUNHOFER-FOKUS" }, { 0x001106, "Siemens NV (Belgium)", "SIEMENS-NV-BELGIUM" }, { 0x00110D, "SANBlaze Technology, Inc.", "SANBLAZE" }, { 0x001101, "CET Technologies Pte Ltd", "CET-TECHNOLOGIES-PTE" }, { 0x000FB3, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x000FA6, "S2 Security Corporation", "S2-SECURITY" }, { 0x000FAD, "FMN communications GmbH", "FMN-COMMUNICATION" }, { 0x000F9B, "Ross Video Limited", "ROSS-VIDEO" }, { 0x000F9E, "Murrelektronik GmbH", "MURRELEKTRONIK" }, { 0x000FA1, "Gigabit Systems Inc.", "GIGABIT" }, { 0x000F95, "ELECOM Co.,LTD Laneed Division", "ELECOM-LANEED-DIVISION" }, { 0x000F96, "Telco Systems, Inc. ", "TELCO" }, { 0x000F8F, "Cisco Systems, Inc", "CISCO" }, { 0x000F88, "AMETEK, Inc.", "AMETEK" }, { 0x000F83, "Brainium Technologies Inc.", "BRAINIUM-TECHNOLOGIES" }, { 0x000F51, "Azul Systems, Inc.", "AZUL" }, { 0x000F44, "Tivella Inc.", "TIVELLA" }, { 0x000F43, "Wasabi Systems Inc.", "WASABI" }, { 0x000F4A, "Kyushu-kyohan co.,ltd", "KYUSHU-KYOHAN" }, { 0x000F3E, "CardioNet, Inc", "CARDIONET" }, { 0x000F3A, "HISHARP", "HISHARP" }, { 0x000F30, "Raza Microelectronics Inc", "RAZA-MICROELECTRONICS" }, { 0x000F2F, "W-LINX TECHNOLOGY CO., LTD.", "W-LINX" }, { 0x000F36, "Accurate Techhnologies, Inc.", "ACCURATE-TECHHNOLOGIES" }, { 0x000F2A, "Cableware Electronics", "CABLEWARE-ELECTRONICS" }, { 0x000F76, "Digital Keystone, Inc.", "DIGITAL-KEYSTONE" }, { 0x000F70, "Wintec Industries, inc.", "WINTEC-INDUSTRIES" }, { 0x000F75, "First Silicon Solutions", "FIRST-SILICON-SOLUTIONS" }, { 0x000F7C, "ACTi Corporation", "ACTI" }, { 0x000F69, "SEW Eurodrive GmbH & Co. KG", "SEW-EURODRIVE" }, { 0x000F63, "Obzerv Technologies", "OBZERV-TECHNOLOGIES" }, { 0x000F64, "D&R Electronica Weesp BV", "D-R-ELECTRONICA-WEESP" }, { 0x000F5D, "Genexis BV", "GENEXIS" }, { 0x000F56, "Continuum Photonics Inc", "CONTINUUM-PHOTONICS" }, { 0x000EEB, "Sandmartin(zhong shan)Electronics Co.,Ltd", "SANDMARTIN-ZHONG-SHAN-ELECTRONICS" }, { 0x000EEC, "Orban", "ORBAN" }, { 0x000EF1, "EZQUEST INC.", "EZQUEST" }, { 0x000EDE, "REMEC, Inc.", "REMEC" }, { 0x000EE5, "bitWallet, Inc.", "BITWALLET" }, { 0x000ECC, "Tableau, LLC", "TABLEAU-LLC" }, { 0x000ED9, "Aksys, Ltd.", "AKSYS" }, { 0x000ECB, "VineSys Technology", "VINESYS" }, { 0x000ED2, "Filtronic plc", "FILTRONIC-PLC" }, { 0x000EBF, "Remsdaq Limited", "REMSDAQ" }, { 0x000EC6, "ASIX ELECTRONICS CORP.", "ASIX-ELECTRONICS" }, { 0x000F23, "Cisco Systems, Inc", "CISCO" }, { 0x000F1D, "Cosmo Techs Co., Ltd.", "COSMO-TECHS" }, { 0x000F10, "RDM Corporation", "RDM" }, { 0x000F1E, "Chengdu KT Electric Co.of High & New Technology", "CHENGDU-KT-ELECTRIC-OF-HIGH-NEW" }, { 0x000F0B, "Kentima Technologies AB", "KENTIMA-TECHNOLOGIES-AB" }, { 0x000F04, "cim-usa inc", "CIM-USA" }, { 0x000EFE, "EndRun Technologies LLC", "ENDRUN-TECHNOLOGIES-LLC" }, { 0x000EF8, "SBC ASI", "SBC-ASI" }, { 0x000EFD, "FUJINON CORPORATION", "FUJINON" }, { 0x000FFB, "Nippon Denso Industry Co., Ltd.", "NIPPON-DENSO-INDUSTRY" }, { 0x000FF8, "Cisco Systems, Inc", "CISCO" }, { 0x000FF2, "Loud Technologies Inc.", "LOUD-TECHNOLOGIES" }, { 0x000FF7, "Cisco Systems, Inc", "CISCO" }, { 0x000FE5, "MERCURY SECURITY CORPORATION", "MERCURY-SECURITY" }, { 0x000FE6, "MBTech Systems, Inc.", "MBTECH" }, { 0x000FEB, "Cylon Controls", "CYLON-CONTROLS" }, { 0x000FDF, "SOLOMON Technology Corp.", "SOLOMON" }, { 0x000FD8, "Force, Inc.", "FORCE" }, { 0x000FD3, "Digium", "DIGIUM" }, { 0x000FC6, "Eurocom Industries A/S", "EUROCOM-INDUSTRIES-A/S" }, { 0x000FC5, "KeyMed Ltd", "KEYMED" }, { 0x000FC0, "DELCOMp", "DELCOMP" }, { 0x000FB4, "Timespace Technology", "TIMESPACE" }, { 0x000FB9, "Adaptive Instruments", "ADAPTIVE-INSTRUMENTS" }, { 0x000D4D, "Ninelanes", "NINELANES" }, { 0x000D54, "3Com Ltd", "3COM" }, { 0x000D45, "Tottori SANYO Electric Co., Ltd.", "TOTTORI-SANYO-ELECTRIC" }, { 0x000D48, "AEWIN Technologies Co., Ltd.", "AEWIN-TECHNOLOGIES" }, { 0x000D40, "Verint Loronix Video Solutions", "VERINT-LORONIX-VIDEO-SOLUTIONS" }, { 0x000D39, "Network Electronics", "NETWORK-ELECTRONICS" }, { 0x000D33, "Prediwave Corp.", "PREDIWAVE" }, { 0x000D34, "Shell International Exploration and Production, Inc.", "SHELL-EXPLORATION-AND-PRODUCTION" }, { 0x000D2D, "NCT Deutschland GmbH", "NCT-DEUTSCHLAND" }, { 0x000D26, "Primagraphics Limited", "PRIMAGRAPHICS" }, { 0x000D21, "WISCORE Inc.", "WISCORE" }, { 0x000D14, "Vtech Innovation LP dba Advanced American Telephones", "VTECH-INNOVATION-LP-DBA-ADVANCED-AMERICAN-TELEPHONES" }, { 0x000D13, "Wilhelm Rutenbeck GmbH&Co.KG", "WILHELM-RUTENBECK" }, { 0x000D1A, "Mustek System Inc.", "MUSTEK-SYSTEM" }, { 0x000D0E, "Inqnet Systems, Inc.", "INQNET" }, { 0x000D01, "P&E Microcomputer Systems, Inc.", "P-E-MICROCOMPUTER" }, { 0x000D02, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x000D07, "Calrec Audio Ltd", "CALREC-AUDIO" }, { 0x000E8D, "Systems in Progress Holding GmbH", "IN-PROGRESS-HOLDING" }, { 0x000E94, "Maas International BV", "MAAS" }, { 0x000E87, "adp Gauselmann GmbH", "ADP-GAUSELMANN" }, { 0x000E81, "Devicescape Software, Inc.", "DEVICESCAPE-SOFTWARE" }, { 0x000E88, "VIDEOTRON CORP.", "VIDEOTRON" }, { 0x000E75, "New York Air Brake Corp.", "NEW-YORK-AIR-BRAKE" }, { 0x000E7A, "GemWon Communications Co., Ltd.", "GEMWON-COMMUNICATION" }, { 0x000E66, "Hitachi Industry & Control Solutions, Ltd.", "HITACHI-INDUSTRY-CONTROL-SOLUTIONS" }, { 0x000DF6, "Technology Thesaurus Corp.", "THESAURUS" }, { 0x000DFD, "Huges Hi-Tech Inc.,", "HUGES-HI-TECH" }, { 0x000E02, "Advantech AMT Inc.", "ADVANTECH-AMT" }, { 0x000DEA, "Kingtel Telecommunication Corp.", "KINGTEL-TELECOMMUNICATION" }, { 0x000DEF, "Soc. Coop. Bilanciai", "SOC-COOP-BILANCIAI" }, { 0x000DDD, "Profilo Telra Elektronik Sanayi ve Ticaret. A.Ş", "PROFILO-TELRA-ELEKTRONIK-SANAYI-VE-TICARET-A-Ş" }, { 0x000DDE, "Joyteck Co., Ltd.", "JOYTECK" }, { 0x000DE3, "AT Sweden AB", "AT-SWEDEN-AB" }, { 0x000DD0, "TetraTec Instruments GmbH", "TETRATEC-INSTRUMENTS" }, { 0x000DD7, "Bright", "BRIGHT" }, { 0x000E61, "MICROTROL LIMITED", "MICROTROL" }, { 0x000E5A, "TELEFIELD inc.", "TELEFIELD" }, { 0x000E54, "AlphaCell Wireless Ltd.", "ALPHACELL-WIRELESS" }, { 0x000E4E, "Waveplus Technology Co., Ltd.", "WAVEPLUS" }, { 0x000E53, "AV TECH CORPORATION", "AV-TECH" }, { 0x000E47, "NCI System Co.,Ltd.", "NCI-SYSTEM" }, { 0x000E41, "NIHON MECHATRONICS CO.,LTD.", "NIHON-MECHATRONICS" }, { 0x000E42, "Motic Incoporation Ltd.", "MOTIC-INCOPORATION" }, { 0x000E3C, "Transact Technologies Inc", "TRANSACT-TECHNOLOGIES" }, { 0x000E36, "HEINESYS, Inc.", "HEINESYS" }, { 0x000DB1, "Japan Network Service Co., Ltd.", "JAPAN-NETWORK-SERVICE" }, { 0x000DA9, "T.E.A.M. S.L.", "T-E-A-M-S-L" }, { 0x000DAC, "Japan CBM Corporation", "JAPAN-CBM" }, { 0x000DA4, "DOSCH & AMAND SYSTEMS AG", "DOSCH-AMAND" }, { 0x000D97, "ABB Inc./Tropos", "ABB-/TROPOS" }, { 0x000D98, "S.W.A.C. Schmitt-Walter Automation Consult GmbH", "S-W-A-C-SCHMITT-WALTER-AUTOMATION-CONSULT" }, { 0x000D8A, "Winners Electronics Co., Ltd.", "WINNERS-ELECTRONICS" }, { 0x000D91, "Eclipse (HQ Espana) S.L.", "ECLIPSE-HQ-ESPANA-S-L" }, { 0x000D7F, "MIDAS COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch)", "MIDAS-COMMUNICATION-TECHNOLOGIES-PTE-FOREIGN-BRANCH" }, { 0x000D79, "Dynamic Solutions Co,.Ltd.", "DYNAMIC-SOLUTIONS" }, { 0x000D73, "Technical Support, Inc.", "TECHNICAL-SUPPORT" }, { 0x000D7A, "DiGATTO Asia Pacific Pte Ltd", "DIGATTO-ASIA-PACIFIC-PTE" }, { 0x000D6C, "M-Audio", "M-AUDIO" }, { 0x000D5A, "Tiesse SpA", "TIESSE-SPA" }, { 0x000D60, "IBM Corp", "IBM" }, { 0x000D59, "Amity Systems, Inc.", "AMITY" }, { 0x000DCB, "Petcomkorea Co., Ltd.", "PETCOMKOREA" }, { 0x000DC4, "Emcore Corporation", "EMCORE" }, { 0x000DBE, "Bel Fuse Europe Ltd.,UK", "BEL-FUSE-EUROPE-UK" }, { 0x000DB8, "SCHILLER AG", "SCHILLER" }, { 0x000DBD, "Cisco Systems, Inc", "CISCO" }, { 0x000E30, "AERAS Networks, Inc.", "AERAS-NETWORKS" }, { 0x000E29, "Shester Communications Inc", "SHESTER-COMMUNICATION" }, { 0x000E23, "Incipient, Inc.", "INCIPIENT" }, { 0x000E24, "Huwell Technology Inc.", "HUWELL" }, { 0x000E16, "SouthWing S.L.", "SOUTHWING-S-L" }, { 0x000E1D, "ARION Technology Inc.", "ARION" }, { 0x000E09, "Shenzhen Coship Software Co.,LTD.", "SHENZHEN-COSHIP-SOFTWARE" }, { 0x000E11, "BDT Büro und Datentechnik GmbH & Co.KG ", "BDT-BüRO-UND-DATENTECHNIK" }, { 0x000BC8, "AirFlow Networks", "AIRFLOW-NETWORKS" }, { 0x000BCF, "AGFA NDT INC.", "AGFA-NDT" }, { 0x000BC3, "Multiplex, Inc.", "MULTIPLEX" }, { 0x000BBC, "En Garde Systems, Inc.", "EN-GARDE" }, { 0x000BC1, "Bay Microsystems, Inc.", "BAY-MICROSYSTEMS" }, { 0x000BB0, "Sysnet Telematica srl", "SYSNET-TELEMATICA-SRL" }, { 0x000BB5, "nStor Technologies, Inc.", "NSTOR-TECHNOLOGIES" }, { 0x000BA6, "Miyakawa Electric Works Ltd.", "MIYAKAWA-ELECTRIC-WORKS" }, { 0x000BAB, "Advantech Technology (CHINA) Co., Ltd.", "ADVANTECH-CHINA" }, { 0x000B99, "SensAble Technologies, Inc.", "SENSABLE-TECHNOLOGIES" }, { 0x000B9A, "Shanghai Ulink Telecom Equipment Co. Ltd.", "SHANGHAI-ULINK-TELECOM-EQUIPMENT" }, { 0x000B9F, "Neue ELSA GmbH", "NEUE-ELSA" }, { 0x000B94, "Digital Monitoring Products, Inc.", "DIGITAL-MONITORING-PRODUCTS" }, { 0x000C1D, "Mettler & Fuchs AG", "METTLER-FUCHS" }, { 0x000C22, "Double D Electronics Ltd", "DOUBLE-D-ELECTRONICS" }, { 0x000C0F, "Techno-One Co., Ltd", "TECHNO-ONE" }, { 0x000C16, "Concorde Microsystems Inc.", "CONCORDE-MICROSYSTEMS" }, { 0x000C0A, "Guangdong Province Electronic Technology Research Institute", "GUANGDONG-PROVINCE-RESEARCH-INSTITUTE" }, { 0x000BFD, "Cisco Systems, Inc", "CISCO" }, { 0x000BF7, "NIDEK CO.,LTD", "NIDEK" }, { 0x000BFC, "Cisco Systems, Inc", "CISCO" }, { 0x000BFE, "CASTEL Broadband Limited", "CASTEL-BROADBAND" }, { 0x000CA4, "Prompttec Product Management GmbH", "PROMPTTEC-PRODUCT-MANAGEMENT" }, { 0x000C98, "LETEK Communications Inc.", "LETEK-COMMUNICATION" }, { 0x000C9D, "UbeeAirWalk, Inc.", "UBEEAIRWALK" }, { 0x000C9F, "NKE Corporation", "NKE" }, { 0x000C8C, "KODICOM CO.,LTD.", "KODICOM" }, { 0x000C91, "Riverhead Networks Inc.", "RIVERHEAD-NETWORKS" }, { 0x000C80, "Opelcomm Inc.", "OPELCOMM" }, { 0x000C85, "Cisco Systems, Inc", "CISCO" }, { 0x000CD0, "Symetrix", "SYMETRIX" }, { 0x000CD5, "Passave Inc.", "PASSAVE" }, { 0x000CDC, "BECS Technology, Inc", "BECS" }, { 0x000CC9, "ILWOO DATA & TECHNOLOGY CO.,LTD", "ILWOO-DATA" }, { 0x000CB0, "Star Semiconductor Corporation", "STAR-SEMICONDUCTOR" }, { 0x000CB6, "NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD", "NANJING-SEU-MOBILE-INTERNET" }, { 0x000CBD, "Interface Masters, Inc", "INTERFACE-MASTERS" }, { 0x000CC2, "ControlNet (India) Private Limited", "CONTROLNET-INDIA-PRIVATE" }, { 0x000CAF, "TRI TERM CO.,LTD.", "TRI-TERM" }, { 0x000C71, "Wybron, Inc", "WYBRON" }, { 0x000C78, "In-Tech Electronics Limited", "IN-TECH-ELECTRONICS" }, { 0x000C7D, "TEIKOKU ELECTRIC MFG. CO., LTD", "TEIKOKU-ELECTRIC-MFG" }, { 0x000C65, "Sunin Telecom", "SUNIN-TELECOM" }, { 0x000C6A, "MBARI", "MBARI" }, { 0x000C6C, "Elgato Systems LLC", "ELGATO-LLC" }, { 0x000B88, "Vidisco ltd.", "VIDISCO" }, { 0x000B8D, "Avvio Networks", "AVVIO-NETWORKS" }, { 0x000B7B, "Test-Um Inc.", "TEST-UM" }, { 0x000B7A, "L-3 Linkabit", "L-3-LINKABIT" }, { 0x000B7C, "Telex Communications", "TELEX-COMMUNICATION" }, { 0x000B81, "Kaparel Corporation", "KAPAREL" }, { 0x000B6E, "Neff Instrument Corp.", "NEFF-INSTRUMENT" }, { 0x000B75, "Iosoft Ltd.", "IOSOFT" }, { 0x000B69, "Franke Finland Oy", "FRANKE-FINLAND-OY" }, { 0x0091D6, "Crystal Group, Inc.", "CRYSTAL-GROUP" }, { 0x000B62, "ib-mohnen KG", "IB-MOHNEN" }, { 0x000B59, "ScriptPro, LLC", "SCRIPTPRO-LLC" }, { 0x000C52, "Roll Systems Inc.", "ROLL" }, { 0x000C57, "MACKIE Engineering Services Belgium BVBA", "MACKIE-ENGINEERING-SERVICES-BELGIUM-BVBA" }, { 0x000C59, "Indyme Electronics, Inc.", "INDYME-ELECTRONICS" }, { 0x000C5E, "Calypso Medical", "CALYPSO-MEDICAL" }, { 0x000C4B, "Cheops Elektronik", "CHEOPS-ELEKTRONIK" }, { 0x000C46, "Allied Telesyn Inc.", "ALLIED-TELESYN" }, { 0x000C3D, "Glsystech Co., Ltd.", "GLSYSTECH" }, { 0x000C33, "Compucase Enterprise Co. Ltd.", "COMPUCASE" }, { 0x000C36, "SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD.", "SHARP-TAKAYA-ELECTRONICS-INDUSTRY" }, { 0x000C2C, "Enwiser Inc.", "ENWISER" }, { 0x000CFB, "Korea Network Systems", "KOREA-NETWORK" }, { 0x000CEF, "Open Networks Engineering Ltd", "OPEN-NETWORKS-ENGINEERING" }, { 0x000CF4, "AKATSUKI ELECTRIC MFG.CO.,LTD.", "AKATSUKI-ELECTRIC-MFG" }, { 0x000CE8, "GuangZhou AnJuBao Co., Ltd", "GUANGZHOU-ANJUBAO" }, { 0x000CE1, "The Open Group", "THE-OPEN-GROUP" }, { 0x000CCF, "Cisco Systems, Inc", "CISCO" }, { 0x000BEB, "Systegra AG", "SYSTEGRA" }, { 0x000BF0, "MoTEX Products Co., Ltd.", "MOTEX-PRODUCTS" }, { 0x000BDD, "TOHOKU RICOH Co., LTD.", "TOHOKU-RICOH" }, { 0x000BE4, "Hosiden Corporation", "HOSIDEN" }, { 0x000BD8, "Industrial Scientific Corp.", "INDUSTRIAL-SCIENTIFIC" }, { 0x000BD4, "Beijing Wise Technology & Science Development Co.Ltd", "BEIJING-WISE-SCIENCE-DEVELOPMENT" }, { 0x000A1D, "Optical Communications Products Inc.", "OPTICAL-COMMUNICATION-PRODUCTS" }, { 0x000A1F, "ART WARE Telecommunication Co., Ltd.", "ART-WARE-TELECOMMUNICATION" }, { 0x000A24, "Octave Communications", "OCTAVE-COMMUNICATION" }, { 0x000A18, "Vichel Inc.", "VICHEL" }, { 0x000A0C, "Scientific Research Corporation", "SCIENTIFIC-RESEARCH" }, { 0x000A11, "ExPet Technologies, Inc", "EXPET-TECHNOLOGIES" }, { 0x0009F8, "UNIMO TECHNOLOGY CO., LTD.", "UNIMO" }, { 0x0009FB, "Philips Patient Monitoring", "PHILIPS-PATIENT-MONITORING" }, { 0x000A02, "ANNSO CO., LTD.", "ANNSO" }, { 0x0009EB, "HuMANDATA LTD.", "HUMANDATA" }, { 0x0009EC, "Daktronics, Inc.", "DAKTRONICS" }, { 0x0009F1, "Yamaki Electric Corporation", "YAMAKI-ELECTRIC" }, { 0x0009E5, "Hottinger Baldwin Messtechnik GmbH", "HOTTINGER-BALDWIN-MESSTECHNIK" }, { 0x0009D9, "Neoscale Systems, Inc", "NEOSCALE" }, { 0x0009DE, "Samjin Information & Communications Co., Ltd.", "SAMJIN-INFORMATION-COMMUNICATION" }, { 0x0009CC, "Moog GmbH", "MOOG" }, { 0x0009C6, "Visionics Corporation", "VISIONICS" }, { 0x0009CB, "HBrain", "HBRAIN" }, { 0x0009D2, "Mai Logic Inc.", "MAI-LOGIC" }, { 0x0009BE, "Mamiya-OP Co.,Ltd.", "MAMIYA-OP" }, { 0x0009C2, "Onity, Inc.", "ONITY" }, { 0x000B51, "Micetek International Inc.", "MICETEK" }, { 0x000B54, "BiTMICRO Networks, Inc.", "BITMICRO-NETWORKS" }, { 0x000B45, "Cisco Systems, Inc", "CISCO" }, { 0x000B4C, "Clarion (M) Sdn Bhd", "CLARION-M-SDN-BHD" }, { 0x000B40, "Oclaro", "OCLARO" }, { 0x000B32, "VORMETRIC, INC.", "VORMETRIC" }, { 0x000B39, "Keisoku Giken Co.,Ltd.", "KEISOKU-GIKEN" }, { 0x000B3E, "BittWare, Inc", "BITTWARE" }, { 0x000B26, "Wetek Corporation", "WETEK" }, { 0x000B2B, "HOSTNET CORPORATION", "HOSTNET" }, { 0x000B2D, "Danfoss Inc.", "DANFOSS" }, { 0x000ABB, "Taiwan Secom Co,. Ltd", "TAIWAN-SECOM" }, { 0x000AC7, "Unication Group", "UNICATION-GROUP" }, { 0x000AAF, "Pipal Systems", "PIPAL" }, { 0x000AB6, "COMPUNETIX, INC", "COMPUNETIX" }, { 0x000AA3, "SHIMAFUJI ELECTRIC CO.,LTD.", "SHIMAFUJI-ELECTRIC" }, { 0x000AA8, "ePipe Pty. Ltd.", "EPIPE-PTY" }, { 0x000AAA, "AltiGen Communications Inc.", "ALTIGEN-COMMUNICATION" }, { 0x000A90, "Bayside Interactive, Inc.", "BAYSIDE-INTERACTIVE" }, { 0x000A9C, "Server Technology, Inc.", "SERVER" }, { 0x000A96, "MEWTEL TECHNOLOGY INC.", "MEWTEL" }, { 0x000A81, "TEIMA Audiotex S.L.", "TEIMA-AUDIOTEX-S-L" }, { 0x000A83, "SALTO SYSTEMS S.L.", "SALTO-S-L" }, { 0x000A88, "InCypher S.A.", "INCYPHER" }, { 0x000A7C, "Tecton Ltd", "TECTON" }, { 0x000A70, "MPLS Forum", "MPLS-FORUM" }, { 0x000A75, "Caterpillar, Inc", "CATERPILLAR" }, { 0x000A62, "Crinis Networks, Inc.", "CRINIS-NETWORKS" }, { 0x000A64, "Eracom Technologies", "ERACOM-TECHNOLOGIES" }, { 0x000A69, "SUNNY bell Technology Co., Ltd.", "SUNNY-BELL" }, { 0x000A5D, "FingerTec Worldwide Sdn Bhd", "FINGERTEC-WORLDWIDE-SDN-BHD" }, { 0x000AF4, "Cisco Systems, Inc", "CISCO" }, { 0x000AE8, "Cathay Roxus Information Technology Co. LTD", "CATHAY-ROXUS-INFORMATION" }, { 0x000ADA, "Vindicator Technologies", "VINDICATOR-TECHNOLOGIES" }, { 0x000ADC, "RuggedCom Inc.", "RUGGEDCOM" }, { 0x000AE1, "EG Technology", "EG" }, { 0x000AC9, "Zambeel Inc", "ZAMBEEL" }, { 0x000ACE, "RADIANTECH, INC.", "RADIANTECH" }, { 0x000AD5, "Brainchild Electronic Co., Ltd.", "BRAINCHILD" }, { 0x000A4F, "Brain Boxes Limited", "BRAIN-BOXES" }, { 0x000A51, "GyroSignal Technology Co., Ltd.", "GYROSIGNAL" }, { 0x000A56, "HITACHI Maxell Ltd.", "HITACHI-MAXELL" }, { 0x000A4A, "Targa Systems Ltd.", "TARGA" }, { 0x000A37, "Procera Networks, Inc.", "PROCERA-NETWORKS" }, { 0x000A3E, "EADS Telecom", "EADS-TELECOM" }, { 0x000A43, "Chunghwa Telecom Co., Ltd.", "CHUNGHWA-TELECOM" }, { 0x000A30, "Visteon Corporation", "VISTEON" }, { 0x000A32, "Xsido Corporation", "XSIDO" }, { 0x000A2B, "Etherstuff", "ETHERSTUFF" }, { 0x000A29, "Pan Dacom Networking AG", "PAN-DACOM-NETWORKING" }, { 0x000B1A, "Industrial Defender, Inc.", "INDUSTRIAL-DEFENDER" }, { 0x000B1F, "I CON Computer Co.", "I-CON" }, { 0x000B13, "ZETRON INC", "ZETRON" }, { 0x000B0C, "Agile Systems Inc.", "AGILE" }, { 0x000B07, "Voxpath Networks", "VOXPATH-NETWORKS" }, { 0x000AF9, "HiConnect, Inc.", "HICONNECT" }, { 0x000AFB, "Ambri Limited", "AMBRI" }, { 0x000B00, "FUJIAN START COMPUTER EQUIPMENT CO.,LTD", "FUJIAN-START-EQUIPMENT" }, { 0x0009B8, "Entise Systems", "ENTISE" }, { 0x0009B7, "Cisco Systems, Inc", "CISCO" }, { 0x0009B2, "L&F Inc.", "L-F" }, { 0x0009A5, "HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD", "HANSUNG-ELETRONIC-INDUSTRIES-DEVELOPMENT" }, { 0x0009A6, "Ignis Optics, Inc.", "IGNIS-OPTICS" }, { 0x0009AB, "Netcontrol Oy", "NETCONTROL-OY" }, { 0x00099F, "VIDEX INC.", "VIDEX" }, { 0x0007B3, "Cisco Systems, Inc", "CISCO" }, { 0x0007AD, "Pentacon GmbH Foto-und Feinwerktechnik", "PENTACON-FOTO-UND-FEINWERKTECHNIK" }, { 0x0007A5, "Y.D.K Co. Ltd.", "Y-D-K" }, { 0x00079F, "Action Digital Inc.", "ACTION-DIGITAL" }, { 0x000792, "Sütron Electronic GmbH", "SüTRON" }, { 0x000799, "Tipping Point Technologies, Inc.", "TIPPING-POINT-TECHNOLOGIES" }, { 0x00078C, "Elektronikspecialisten i Borlange AB", "ELEKTRONIKSPECIALISTEN-I-BORLANGE-AB" }, { 0x000786, "Wireless Networks Inc.", "WIRELESS-NETWORKS" }, { 0x000775, "Valence Semiconductor, Inc.", "VALENCE-SEMICONDUCTOR" }, { 0x00077C, "Westermo Teleindustri AB", "WESTERMO-TELEINDUSTRI-AB" }, { 0x000776, "Federal APD", "FEDERAL-APD" }, { 0x00077F, "J Communications Co., Ltd.", "J-COMMUNICATION" }, { 0x000780, "Bluegiga Technologies OY", "BLUEGIGA-TECHNOLOGIES-OY" }, { 0x000881, "DIGITAL HANDS CO.,LTD.", "DIGITAL-HANDS" }, { 0x02C08C, "3COM CORPORATION", "3COM" }, { 0x00087B, "RTX Telecom A/S", "RTX-TELECOM-A/S" }, { 0x000880, "BroadTel Canada Communications inc.", "BROADTEL-CANADA-COMMUNICATION" }, { 0x00086E, "Hyglo AB", "HYGLO-AB" }, { 0x000868, "PurOptix", "PUROPTIX" }, { 0x000861, "SoftEnergy Co., Ltd.", "SOFTENERGY" }, { 0x00084F, "Qualstar Corporation", "QUALSTAR" }, { 0x00085B, "Hanbit Electronics Co., Ltd.", "HANBIT-ELECTRONICS" }, { 0x000855, "NASA-Goddard Space Flight Center", "NASA-GODDARD-SPACE-FLIGHT-CENTER" }, { 0x00084E, "DivergeNet, Inc.", "DIVERGENET" }, { 0x00085C, "Shanghai Dare Technologies Co. Ltd.", "SHANGHAI-DARE-TECHNOLOGIES" }, { 0x0007ED, "Altera Corporation", "ALTERA" }, { 0x0007F4, "Eletex Co., Ltd.", "ELETEX" }, { 0x0007E1, "WIS Communications Co. Ltd.", "WIS-COMMUNICATION" }, { 0x0007D4, "Zhejiang Yutong Network Communication Co Ltd.", "ZHEJIANG-YUTONG-NETWORK-COMMUNICATION" }, { 0x0007DB, "Kirana Networks, Inc.", "KIRANA-NETWORKS" }, { 0x0007D5, "3e Technologies Int;., Inc.", "3E-TECHNOLOGIES-INT" }, { 0x0005F9, "TOA Corporation", "TOA" }, { 0x0007C5, "Gcom, Inc.", "GCOM" }, { 0x0007CC, "Kaba Benzing GmbH", "KABA-BENZING" }, { 0x0007C6, "VDS Vosskuhler GmbH", "VDS-VOSSKUHLER" }, { 0x0007B9, "Ginganet Corporation", "GINGANET" }, { 0x0007BF, "Armillaire Technologies, Inc.", "ARMILLAIRE-TECHNOLOGIES" }, { 0x00047F, "Chr. Mayr GmbH & Co. KG", "CHR-MAYR" }, { 0x000961, "Switchgear and Instrumentation Ltd", "SWITCHGEAR-AND-INSTRUMENTATION" }, { 0x00095A, "RACEWOOD TECHNOLOGY", "RACEWOOD" }, { 0x000954, "AMiT spol. s. r. o.", "AMIT-SPOL-S-R-O" }, { 0x00094E, "BARTECH SYSTEMS INTERNATIONAL, INC", "BARTECH" }, { 0x000953, "Linkage System Integration Co.Ltd.", "LINKAGE-SYSTEM-INTEGRATION" }, { 0x000942, "Wireless Technologies, Inc", "WIRELESS-TECHNOLOGIES" }, { 0x000947, "Aztek, Inc.", "AZTEK" }, { 0x00093B, "HYUNDAI NETWORKS INC.", "HYUNDAI-NETWORKS" }, { 0x000934, "Dream-Multimedia-Tv GmbH", "DREAM-MULTIMEDIA-TV" }, { 0x0008BA, "Erskine Systems Ltd", "ERSKINE" }, { 0x0008B4, "SYSPOL", "SYSPOL" }, { 0x0008AE, "PacketFront Network Products AB", "PACKETFRONT-NETWORK-PRODUCTS-AB" }, { 0x0008A7, "iLogic Inc.", "ILOGIC" }, { 0x0008A2, "ADI Engineering, Inc.", "ADI-ENGINEERING" }, { 0x0008A1, "CNet Technology Inc.", "CNET" }, { 0x00089B, "ICP Electronics Inc.", "ICP-ELECTRONICS" }, { 0x00088D, "Sigma-Links Inc.", "SIGMA-LINKS" }, { 0x000893, "LE INFORMATION COMMUNICATION INC.", "LE-INFORMATION-COMMUNICATION" }, { 0x00088E, "Nihon Computer Co., Ltd.", "NIHON" }, { 0x000897, "Quake Technologies", "QUAKE-TECHNOLOGIES" }, { 0x000887, "Maschinenfabrik Reinhausen GmbH", "MASCHINENFABRIK-REINHAUSEN" }, { 0x0008FD, "BlueKorea Co., Ltd.", "BLUEKOREA" }, { 0x0008F5, "YESTECHNOLOGY Co.,Ltd.", "YESTECHNOLOGY" }, { 0x0008EF, "DIBAL,S.A.", "DIBAL" }, { 0x0008EA, "Motion Control Engineering, Inc", "MOTION-CONTROL-ENGINEERING" }, { 0x0008DD, "Telena Communications, Inc.", "TELENA-COMMUNICATION" }, { 0x0008DE, "3UP Systems", "3UP" }, { 0x0008E3, "Cisco Systems, Inc", "CISCO" }, { 0x0008D7, "HOW CORPORATION", "HOW" }, { 0x0008CB, "Zeta Broadband Inc.", "ZETA-BROADBAND" }, { 0x0008D0, "Musashi Engineering Co., LTD.", "MUSASHI-ENGINEERING" }, { 0x0008C1, "Avistar Communications Corporation", "AVISTAR-COMMUNICATION" }, { 0x0008C6, "Philips Consumer Communications", "PHILIPS-CONSUMER-COMMUNICATION" }, { 0x000993, "Visteon Corporation", "VISTEON" }, { 0x000998, "Capinfo Company Limited", "CAPINFO-COMPANY" }, { 0x000986, "Metalink LTD.", "METALINK" }, { 0x000985, "Auto Telecom Company", "AUTO-TELECOM-COMPANY" }, { 0x00098C, "Option Wireless Sweden", "OPTION-WIRELESS-SWEDEN" }, { 0x000980, "Power Zenith Inc.", "POWER-ZENITH" }, { 0x000973, "Lenten Technology Co., Ltd.", "LENTEN" }, { 0x000974, "Innopia Technologies, Inc.", "INNOPIA-TECHNOLOGIES" }, { 0x000979, "Advanced Television Systems Committee, Inc.", "ADVANCED-TELEVISION-COMMITTEE" }, { 0x000966, "Thales Navigation", "THALES-NAVIGATION" }, { 0x00096D, "Powernet Technologies Corp.", "POWERNET-TECHNOLOGIES" }, { 0x00081F, "Pou Yuen Tech Corp. Ltd.", "POU-YUEN-TECH" }, { 0x000826, "Colorado Med Tech", "COLORADO-MED-TECH" }, { 0x000820, "Cisco Systems, Inc", "CISCO" }, { 0x000825, "Acme Packet", "ACME-PACKET" }, { 0x00082C, "Homag AG", "HOMAG" }, { 0x000819, "Banksys", "BANKSYS" }, { 0x000810, "Key Technology, Inc.", "KEY" }, { 0x000813, "Diskbank, Inc.", "DISKBANK" }, { 0x00080A, "Espera-Werke GmbH", "ESPERA-WERKE" }, { 0x000804, "ICA Inc.", "ICA" }, { 0x0007FA, "ITT Co., Ltd.", "ITT" }, { 0x0007E7, "FreeWave Technologies", "FREEWAVE-TECHNOLOGIES" }, { 0x0007EE, "telco Informationssysteme GmbH", "TELCO-INFORMATIONSSYSTEME" }, { 0x000928, "Telecore", "TELECORE" }, { 0x00092F, "Akom Technology Corporation", "AKOM" }, { 0x000922, "TST Biometrics GmbH", "TST-BIOMETRICS" }, { 0x000921, "Planmeca Oy", "PLANMECA-OY" }, { 0x00091C, "CacheVision, Inc", "CACHEVISION" }, { 0x000910, "Simple Access Inc.", "SIMPLE-ACCESS" }, { 0x000915, "CAS Corp.", "CAS" }, { 0x00090F, "Fortinet Inc.", "FORTINET" }, { 0x000909, "Telenor Connect A/S", "TELENOR-CONNECT-A/S" }, { 0x000902, "Redline Communications Inc.", "REDLINE-COMMUNICATION" }, { 0x00065E, "Photuris, Inc.", "PHOTURIS" }, { 0x000645, "Meisei Electric Co. Ltd.", "MEISEI-ELECTRIC" }, { 0x000644, "neix,Inc", "NEIX" }, { 0x00064B, "Alexon Co., Ltd.", "ALEXON" }, { 0x00063B, "Arcturus Networks Inc.", "ARCTURUS-NETWORKS" }, { 0x00063A, "Dura Micro, Inc.", "DURA-MICRO" }, { 0x000634, "GTE Airfone Inc.", "GTE-AIRFONE" }, { 0x00062A, "Cisco Systems, Inc", "CISCO" }, { 0x000627, "Uniwide Technologies, Inc.", "UNIWIDE-TECHNOLOGIES" }, { 0x00062E, "Aristos Logic Corp.", "ARISTOS-LOGIC" }, { 0x000617, "Redswitch Inc.", "REDSWITCH" }, { 0x00061E, "Maxan Systems", "MAXAN" }, { 0x000618, "DigiPower Manufacturing Inc.", "DIGIPOWER-MANUFACTURING" }, { 0x000770, "Ubiquoss Inc", "UBIQUOSS" }, { 0x00076B, "Stralfors AB", "STRALFORS-AB" }, { 0x00075F, "VCS Video Communication Systems AG", "VCS-VIDEO-COMMUNICATION" }, { 0x000766, "Chou Chin Industrial Co., Ltd.", "CHOU-CHIN-INDUSTRIAL" }, { 0x000759, "Boris Manufacturing Corp.", "BORIS-MANUFACTURING" }, { 0x00074C, "Beicom Inc.", "BEICOM" }, { 0x000753, "Beijing Qxcomm Technology Co., Ltd.", "BEIJING-QXCOMM" }, { 0x000743, "Chelsio Communications", "CHELSIO-COMMUNICATION" }, { 0x000744, "Unico, Inc.", "UNICO" }, { 0x000747, "Mecalc", "MECALC" }, { 0x000737, "Soriya Co. Ltd.", "SORIYA" }, { 0x00073E, "China Great-Wall Computer Shenzhen Co., Ltd.", "CHINA-GREAT-WALL-SHENZHEN" }, { 0x0006C4, "Piolink Inc.", "PIOLINK" }, { 0x0006C0, "United Internetworks, Inc.", "UNITED-INTERNETWORKS" }, { 0x0006BA, "Westwave Communications", "WESTWAVE-COMMUNICATION" }, { 0x0006AD, "KB Electronics Ltd.", "KB-ELECTRONICS" }, { 0x0006B4, "Vorne Industries, Inc.", "VORNE-INDUSTRIES" }, { 0x0006AE, "Himachal Futuristic Communications Ltd", "HIMACHAL-FUTURISTIC-COMMUNICATION" }, { 0x0006B3, "Diagraph Corporation", "DIAGRAPH" }, { 0x0006A3, "Bitran Corporation", "BITRAN" }, { 0x00069D, "Petards Ltd", "PETARDS" }, { 0x0006A7, "Primarion", "PRIMARION" }, { 0x000657, "Market Central, Inc.", "MARKET-CENTRAL" }, { 0x000697, "R & D Center", "R-D-CENTER" }, { 0x000691, "PT Inovacao", "PT-INOVACAO" }, { 0x0005C7, "I/F-COM A/S", "I/F-COM-A/S" }, { 0x0005CE, "Prolink Microsystems Corporation", "PROLINK-MICROSYSTEMS" }, { 0x0005C1, "A-Kyung Motion, Inc.", "A-KYUNG-MOTION" }, { 0x0005BB, "Myspace AB", "MYSPACE-AB" }, { 0x00059B, "Cisco Systems, Inc", "CISCO" }, { 0x0005A7, "Hyperchip, Inc.", "HYPERCHIP" }, { 0x0005B5, "Broadcom Technologies", "BROADCOM-TECHNOLOGIES" }, { 0x00059A, "Cisco Systems, Inc", "CISCO" }, { 0x0005A1, "Zenocom", "ZENOCOM" }, { 0x0005AB, "Cyber Fone, Inc.", "CYBER-FONE" }, { 0x000588, "Sensoria Corp.", "SENSORIA" }, { 0x00058E, "Flextronics International GmbH & Co. Nfg. KG", "FLEXTRONICS-NFG" }, { 0x000612, "Accusys, Inc.", "ACCUSYS" }, { 0x000609, "Crossport Systems", "CROSSPORT" }, { 0x00060F, "Narad Networks Inc", "NARAD-NETWORKS" }, { 0x000602, "Cirkitech Electronics Co.", "CIRKITECH-ELECTRONICS" }, { 0x0005ED, "Technikum Joanneum GmbH", "TECHNIKUM-JOANNEUM" }, { 0x000600, "Toshiba Teli Corporation", "TOSHIBA-TELI" }, { 0x0005E7, "Netrake an AudioCodes Company", "NETRAKE-AN-AUDIOCODES-COMPANY" }, { 0x0005F3, "Webyn", "WEBYN" }, { 0x0005FA, "IPOptical, Inc.", "IPOPTICAL" }, { 0x0005DE, "Gi Fone Korea, Inc.", "GI-FONE-KOREA" }, { 0x0005DA, "Apex Automationstechnik", "APEX-AUTOMATIONSTECHNIK" }, { 0x0005C8, "VERYTECH", "VERYTECH" }, { 0x0005D4, "FutureSmart Networks, Inc.", "FUTURESMART-NETWORKS" }, { 0x0006EC, "Harris Corporation", "HARRIS" }, { 0x0006DF, "AIDONIC Corporation", "AIDONIC" }, { 0x0006E0, "MAT Co., Ltd.", "MAT" }, { 0x0006E5, "Fujian Newland Computer Ltd. Co.", "FUJIAN-NEWLAND" }, { 0x0006DB, "ICHIPS Co., Ltd.", "ICHIPS" }, { 0x0006D0, "Elgar Electronics Corp.", "ELGAR-ELECTRONICS" }, { 0x0006D7, "Cisco Systems, Inc", "CISCO" }, { 0x0006CA, "American Computer & Digital Components, Inc. (ACDC)", "AMERICAN-DIGITAL-COMPONENTS-ACDC" }, { 0x000581, "Snell", "SNELL" }, { 0x00057B, "Chung Nam Electronic Co., Ltd.", "CHUNG-NAM" }, { 0x000582, "ClearCube Technology", "CLEARCUBE" }, { 0x000577, "SM Information & Communication", "SM-INFORMATION-COMMUNICATION" }, { 0x000571, "Seiwa Electronics Co.", "SEIWA-ELECTRONICS" }, { 0x00056B, "C.P. Technology Co., Ltd.", "C-P" }, { 0x000565, "Tailyn Communication Company Ltd.", "TAILYN-COMMUNICATION-COMPANY" }, { 0x00055F, "Cisco Systems, Inc", "CISCO" }, { 0x00055E, "Cisco Systems, Inc", "CISCO" }, { 0x000558, "Synchronous, Inc.", "SYNCHRONOUS" }, { 0x000552, "Xycotec Computer GmbH", "XYCOTEC" }, { 0x000549, "Salira Optical Network Systems", "SALIRA-OPTICAL-NETWORK" }, { 0x00072B, "Jung Myung Telecom Co., Ltd.", "JUNG-MYUNG-TELECOM" }, { 0x000731, "Ophir-Spiricon LLC", "OPHIR-SPIRICON-LLC" }, { 0x00071A, "Finedigital Inc.", "FINEDIGITAL" }, { 0x000721, "Formac Elektronik GmbH", "FORMAC-ELEKTRONIK" }, { 0x00070E, "Cisco Systems, Inc", "CISCO" }, { 0x000715, "General Research of Electronics, Inc.", "GENERAL-RESEARCH-OF-ELECTRONICS" }, { 0x000708, "Bitrage Inc.", "BITRAGE" }, { 0x0006F2, "Platys Communications", "PLATYS-COMMUNICATION" }, { 0x0006FE, "Ambrado, Inc", "AMBRADO" }, { 0x0006FC, "Fnet Co., Ltd.", "FNET" }, { 0x000684, "Biacore AB", "BIACORE-AB" }, { 0x00068A, "NeuronNet Co. Ltd. R&D Center", "NEURONNET-R-D-CENTER" }, { 0x00067E, "WinCom Systems, Inc.", "WINCOM" }, { 0x000670, "Upponetti Oy", "UPPONETTI-OY" }, { 0x000676, "Novra Technologies Inc.", "NOVRA-TECHNOLOGIES" }, { 0x00067A, "JMP Systems", "JMP" }, { 0x000664, "Fostex Corporation", "FOSTEX" }, { 0x00066A, "InfiniCon Systems, Inc.", "INFINICON" }, { 0x000651, "Aspen Networks Inc.", "ASPEN-NETWORKS" }, { 0x00065D, "Heidelberg Web Systems", "HEIDELBERG-WEB" }, { 0x000415, "Rasteme Systems Co., Ltd.", "RASTEME" }, { 0x000408, "Sanko Electronics Co., Ltd.", "SANKO-ELECTRONICS" }, { 0x000409, "Cratos Networks", "CRATOS-NETWORKS" }, { 0x000402, "Nexsan Technologies, Ltd.", "NEXSAN-TECHNOLOGIES" }, { 0x0003F8, "SanCastle Technologies, Inc.", "SANCASTLE-TECHNOLOGIES" }, { 0x0003FF, "Microsoft Corporation (possible Hyper-V, Virtual Server, Virtual PC VM)", "MICROSOFT-VIRTUAL" }, { 0x0003F1, "Cicada Semiconductor, Inc.", "CICADA-SEMICONDUCTOR" }, { 0x0003F2, "Seneca Networks", "SENECA-NETWORKS" }, { 0x0003EC, "ICG Research, Inc.", "ICG-RESEARCH" }, { 0x0003E6, "Entone, Inc.", "ENTONE" }, { 0x0003DE, "OTC Wireless", "OTC-WIRELESS" }, { 0x0003E1, "Winmate Communication, Inc.", "WINMATE-COMMUNICATION" }, { 0x0003DA, "Takamisawa Cybernetics Co., Ltd.", "TAKAMISAWA-CYBERNETICS" }, { 0x00054C, "RF Innovations Pty Ltd", "RF-INNOVATIONS-PTY" }, { 0x000543, "IQ Wireless GmbH", "IQ-WIRELESS" }, { 0x00053D, "Agere Systems", "AGERE" }, { 0x000530, "Andiamo Systems, Inc.", "ANDIAMO" }, { 0x000537, "Nets Technology Co., Ltd.", "NETS" }, { 0x000536, "Danam Communications, Inc.", "DANAM-COMMUNICATION" }, { 0x000524, "BTL System (HK) Limited", "BTL-SYSTEM-HK" }, { 0x00052A, "Ikegami Tsushinki Co., Ltd.", "IKEGAMI-TSUSHINKI" }, { 0x00051D, "Airocon, Inc.", "AIROCON" }, { 0x000517, "Shellcomm, Inc.", "SHELLCOMM" }, { 0x000513, "VTLinx Multimedia Systems, Inc.", "VTLINX-MULTIMEDIA" }, { 0x0004D4, "Proview Electronics Co., Ltd.", "PROVIEW-ELECTRONICS" }, { 0x0004CE, "Patria Ailon", "PATRIA-AILON" }, { 0x0004CD, "Extenway Solutions Inc", "EXTENWAY-SOLUTIONS" }, { 0x0004C7, "NetMount", "NETMOUNT" }, { 0x0004C8, "LIBA Maschinenfabrik GmbH", "LIBA-MASCHINENFABRIK" }, { 0x0004C1, "Cisco Systems, Inc", "CISCO" }, { 0x0004BB, "Bardac Corporation", "BARDAC" }, { 0x0004B5, "Equitrac Corporation", "EQUITRAC" }, { 0x0004A7, "FabiaTech Corporation", "FABIATECH" }, { 0x0004A1, "Pathway Connectivity", "PATHWAY-CONNECTIVITY" }, { 0x00049A, "Cisco Systems, Inc", "CISCO" }, { 0x00035B, "BridgeWave Communications", "BRIDGEWAVE-COMMUNICATION" }, { 0x000356, "Wincor Nixdorf International GmbH", "WINCOR-NIXDORF" }, { 0x000350, "BTICINO SPA", "BTICINO-SPA" }, { 0x000348, "Norscan Instruments, Ltd.", "NORSCAN-INSTRUMENTS" }, { 0x000345, "Routrek Networks Corporation", "ROUTREK-NETWORKS" }, { 0x00033D, "ILSHin Lab", "ILSHIN-LAB" }, { 0x0001EC, "Ericsson Group", "ERICSSON-GROUP" }, { 0x000331, "Cisco Systems, Inc", "CISCO" }, { 0x000338, "Oak Technology", "OAK" }, { 0x000335, "Mirae Technology", "MIRAE" }, { 0x00032C, "ABB Switzerland Ltd", "ABB-SWITZERLAND" }, { 0x000325, "Arima Computer Corp.", "ARIMA" }, { 0x000453, "YottaYotta, Inc.", "YOTTAYOTTA" }, { 0x00044D, "Cisco Systems, Inc", "CISCO" }, { 0x000449, "Mapletree Networks", "MAPLETREE-NETWORKS" }, { 0x000443, "Agilent Technologies, Inc.", "AGILENT-TECHNOLOGIES" }, { 0x00043D, "INDEL AG", "INDEL" }, { 0x000431, "GlobalStreams, Inc.", "GLOBALSTREAMS" }, { 0x000436, "ELANsat Technologies, Inc.", "ELANSAT-TECHNOLOGIES" }, { 0x000430, "Netgem", "NETGEM" }, { 0x00042A, "Wireless Networks, Inc.", "WIRELESS-NETWORKS" }, { 0x000424, "TMC s.r.l.", "TMC-S-R-L" }, { 0x00041B, "Bridgeworks Ltd.", "BRIDGEWORKS" }, { 0x00041E, "Shikoku Instrumentation Co., Ltd.", "SHIKOKU-INSTRUMENTATION" }, { 0x0003D3, "Internet Energy Systems, Inc.", "INTERNET-ENERGY" }, { 0x0003CE, "ETEN Technologies, Inc.", "ETEN-TECHNOLOGIES" }, { 0x0003CB, "Nippon Systems Development Co., Ltd.", "NIPPON-DEVELOPMENT" }, { 0x0003C2, "Solphone K.K.", "SOLPHONE-K-K" }, { 0x0003C7, "hopf Elektronik GmbH", "HOPF-ELEKTRONIK" }, { 0x0003BB, "Signal Communications Limited", "SIGNAL-COMMUNICATION" }, { 0x0003B5, "Entra Technology Co.", "ENTRA" }, { 0x0003B0, "Xsense Technology Corp.", "XSENSE" }, { 0x0003A4, "Imation Corp.", "IMATION" }, { 0x0003A9, "AXCENT Media AG", "AXCENT-MEDIA" }, { 0x0003AD, "Emerson Energy Systems AB", "EMERSON-ENERGY-AB" }, { 0x000396, "EZ Cast Co., Ltd.", "EZ-CAST" }, { 0x00050D, "Midstream Technologies, Inc.", "MIDSTREAM-TECHNOLOGIES" }, { 0x000507, "Fine Appliance Corp.", "FINE-APPLIANCE" }, { 0x0004FD, "Japan Control Engineering Co., Ltd.", "JAPAN-CONTROL-ENGINEERING" }, { 0x0004F7, "Omega Band, Inc.", "OMEGA-BAND" }, { 0x0004F1, "WhereNet", "WHERENET" }, { 0x0004DA, "Relax Technology, Inc.", "RELAX" }, { 0x008087, "OKI ELECTRIC INDUSTRY CO., LTD", "OKI-ELECTRIC-INDUSTRY" }, { 0x0004E0, "Procket Networks", "PROCKET-NETWORKS" }, { 0x000460, "Knilink Technology, Inc.", "KNILINK" }, { 0x000494, "Breezecom, Ltd.", "BREEZECOM" }, { 0x00048E, "Ohm Tech Labs, Inc.", "OHM-TECH-LABS" }, { 0x000495, "Tejas Networks India Limited", "TEJAS-NETWORKS-INDIA" }, { 0x000483, "Deltron Technology, Inc.", "DELTRON" }, { 0x000489, "YAFO Networks, Inc.", "YAFO-NETWORKS" }, { 0x000479, "Radius Co., Ltd.", "RADIUS" }, { 0x00046D, "Cisco Systems, Inc", "CISCO" }, { 0x000472, "Telelynx, Inc.", "TELELYNX" }, { 0x00046C, "Cyber Technology Co., Ltd.", "CYBER" }, { 0x000466, "ARMITEL Co.", "ARMITEL" }, { 0x00045A, "The Linksys Group, Inc.", "THE-LINKSYS-GROUP" }, { 0x00045F, "Avalue Technology, Inc.", "AVALUE" }, { 0x000391, "Advanced Digital Broadcast, Ltd.", "ADVANCED-DIGITAL-BROADCAST" }, { 0x00038A, "America Online, Inc.", "AMERICA-ONLINE" }, { 0x00038E, "Atoga Systems, Inc.", "ATOGA" }, { 0x00037C, "Coax Media", "COAX-MEDIA" }, { 0x000381, "Ingenico International", "INGENICO" }, { 0x000375, "NetMedia, Inc.", "NETMEDIA" }, { 0x00036E, "Nicon Systems (Pty) Limited", "NICON-PTY" }, { 0x000362, "Vodtel Communications, Inc.", "VODTEL-COMMUNICATION" }, { 0x00031C, "Svenska Hardvarufabriken AB", "SVENSKA-HARDVARUFABRIKEN-AB" }, { 0x000315, "Cidco Incorporated", "CIDCO-INCORPORATED" }, { 0x000310, "E-Globaledge Corporation", "E-GLOBALEDGE" }, { 0x00030D, "Uniwill Computer Corp.", "UNIWILL" }, { 0x000309, "Texcel Technology PLC", "TEXCEL-PLC" }, { 0x000304, "Pacific Broadband Communications", "PACIFIC-BROADBAND-COMMUNICATION" }, { 0x00019F, "ReadyNet", "READYNET" }, { 0x0002FD, "Cisco Systems, Inc", "CISCO" }, { 0x0002F6, "Equipe Communications", "EQUIPE-COMMUNICATION" }, { 0x0002F1, "Pinetron Co., Ltd.", "PINETRON" }, { 0x0002EF, "CCC Network Systems Group Ltd.", "CCC-NETWORK-GROUP" }, { 0x0002EB, "Pico Communications", "PICO-COMMUNICATION" }, { 0x0002E6, "Gould Instrument Systems, Inc.", "GOULD-INSTRUMENT" }, { 0x0002DF, "Net Com Systems, Inc.", "NET-COM" }, { 0x0002D3, "NetBotz, Inc.", "NETBOTZ" }, { 0x0002D8, "BRECIS Communications Corporation", "BRECIS-COMMUNICATION" }, { 0x0002CC, "M.C.C.I", "M-C-C-I" }, { 0x0002D0, "Comdial Corporation", "COMDIAL" }, { 0x0002C5, "Evertz Microsystems Ltd.", "EVERTZ-MICROSYSTEMS" }, { 0x0002C0, "Bencent Tzeng Industry Co., Ltd.", "BENCENT-TZENG-INDUSTRY" }, { 0x0002BD, "Bionet Co., Ltd.", "BIONET" }, { 0x0002B7, "Watanabe Electric Industry Co., Ltd.", "WATANABE-ELECTRIC-INDUSTRY" }, { 0x0002B0, "Hokubu Communication & Industrial Co., Ltd.", "HOKUBU-COMMUNICATION-INDUSTRIAL" }, { 0x0002A8, "Air Link Technology", "AIR-LINK" }, { 0x0002AB, "CTC Union Technologies Co., Ltd.", "CTC-UNION-TECHNOLOGIES" }, { 0x0002A4, "AddPac Technology Co., Ltd.", "ADDPAC" }, { 0x000299, "Apex, Inc.", "APEX" }, { 0x00029D, "Merix Corp.", "MERIX" }, { 0x000291, "Open Network Co., Ltd.", "OPEN-NETWORK" }, { 0x00028A, "Ambit Microsystems Corporation", "AMBIT-MICROSYSTEMS" }, { 0x000287, "Adapcom", "ADAPCOM" }, { 0x00028C, "Micrel-Synergy Semiconductor", "MICREL-SYNERGY-SEMICONDUCTOR" }, { 0x000282, "ViaClix, Inc.", "VIACLIX" }, { 0x00027B, "Amplify Net, Inc.", "AMPLIFY-NET" }, { 0x00024F, "IPM Datacom S.R.L.", "IPM-DATACOM-S-R-L" }, { 0x000274, "Tommy Technologies Corp.", "TOMMY-TECHNOLOGIES" }, { 0x00026F, "Senao International Co., Ltd.", "SENAO" }, { 0x000264, "AudioRamp.com", "AUDIORAMP-COM" }, { 0x00306C, "Hitex Holding GmbH", "HITEX-HOLDING" }, { 0x000177, "EDSL", "EDSL" }, { 0x000161, "Meta Machine Technology", "META-MACHINE" }, { 0x000168, "VITANA CORPORATION", "VITANA" }, { 0x000174, "CyberOptics Corporation", "CYBEROPTICS" }, { 0x000164, "Cisco Systems, Inc", "CISCO" }, { 0x000170, "ESE Embedded System Engineer'g", "ESE-EMBEDDED-SYSTEM-ENGINEER-G" }, { 0x000152, "CHROMATEK INC.", "CHROMATEK" }, { 0x000156, "FIREWIREDIRECT.COM, INC.", "FIREWIREDIRECT-COM" }, { 0x00013F, "Neighbor World Co., Ltd.", "NEIGHBOR-WORLD" }, { 0x000146, "Tesco Controls, Inc.", "TESCO-CONTROLS" }, { 0x000133, "KYOWA Electronic Instruments C", "KYOWA-INSTRUMENTS-C" }, { 0x0001E3, "Siemens AG", "SIEMENS" }, { 0x0001EA, "Cirilium Corp.", "CIRILIUM" }, { 0x0001EF, "Camtel Technology Corp.", "CAMTEL" }, { 0x0001F2, "Mark of the Unicorn, Inc.", "MARK-OF-THE-UNICORN" }, { 0x0001D7, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x0001DC, "Activetelco", "ACTIVETELCO" }, { 0x0001DF, "ISDN Communications, Ltd.", "ISDN-COMMUNICATION" }, { 0x0001D3, "PAXCOMM, Inc.", "PAXCOMM" }, { 0x0001C5, "Simpler Networks", "SIMPLER-NETWORKS" }, { 0x0001D0, "VitalPoint, Inc.", "VITALPOINT" }, { 0x0001B2, "Digital Processing Systems, Inc.", "DIGITAL-PROCESSING" }, { 0x0001C1, "Vitesse Semiconductor Corporation", "VITESSE-SEMICONDUCTOR" }, { 0x0001BA, "IC-Net, Inc.", "IC-NET" }, { 0x0001B6, "SAEJIN T&M Co., Ltd.", "SAEJIN-T-M" }, { 0x00022B, "SAXA, Inc.", "SAXA" }, { 0x000226, "XESystems, Inc.", "XESYSTEMS" }, { 0x00021E, "SIMTEL S.R.L.", "SIMTEL-S-R-L" }, { 0x00021A, "Zuma Networks", "ZUMA-NETWORKS" }, { 0x00020B, "Native Networks, Inc.", "NATIVE-NETWORKS" }, { 0x000212, "SierraCom", "SIERRACOM" }, { 0x000217, "Cisco Systems, Inc", "CISCO" }, { 0x000207, "VisionGlobal Network Corp.", "VISIONGLOBAL-NETWORK" }, { 0x000204, "Bodmann Industries Elektronik GmbH", "BODMANN-INDUSTRIES-ELEKTRONIK" }, { 0x0001F8, "TEXIO TECHNOLOGY CORPORATION", "TEXIO" }, { 0x0001FF, "Data Direct Networks, Inc.", "DATA-DIRECT-NETWORKS" }, { 0x0001FB, "DoTop Technology, Inc.", "DOTOP" }, { 0x000268, "Harris Government Communications", "HARRIS-GOVERNMENT-COMMUNICATION" }, { 0x00025D, "Calix Networks", "CALIX-NETWORKS" }, { 0x000258, "Flying Packets Communications", "FLYING-PACKETS-COMMUNICATION" }, { 0x000257, "Microcom Corp.", "MICROCOM" }, { 0x000254, "WorldGate", "WORLDGATE" }, { 0x000248, "Pilz GmbH & Co.", "PILZ" }, { 0x00022E, "TEAC Corp. R& D", "TEAC-R-D" }, { 0x000241, "Amer.com", "AMER-COM" }, { 0x000232, "Avision, Inc.", "AVISION" }, { 0x00012A, "Telematica Sistems Inteligente", "TELEMATICA-SISTEMS-INTELIGENTE" }, { 0x000137, "IT Farm Corporation", "IT-FARM" }, { 0x000143, "Cisco Systems, Inc", "CISCO" }, { 0x00011B, "Unizone Technologies, Inc.", "UNIZONE-TECHNOLOGIES" }, { 0x000122, "Trend Communications, Ltd.", "TREND-COMMUNICATION" }, { 0x00011E, "Precidia Technologies, Inc.", "PRECIDIA-TECHNOLOGIES" }, { 0x000108, "AVLAB Technology, Inc.", "AVLAB" }, { 0x00010B, "Space CyberLink, Inc.", "SPACE-CYBERLINK" }, { 0x0001AE, "Trex Enterprises", "TREX-ENTERPRISES" }, { 0x0001AA, "Airspan Communications, Ltd.", "AIRSPAN-COMMUNICATION" }, { 0x000198, "Darim Vision", "DARIM-VISION" }, { 0x000180, "AOpen, Inc.", "AOPEN" }, { 0x000187, "I2SE GmbH", "I2SE" }, { 0x00018F, "Kenetec, Inc.", "KENETEC" }, { 0x000183, "ANITE TELECOMS", "ANITE-TELECOMS" }, { 0x00019C, "JDS Uniphase Inc.", "JDS-UNIPHASE" }, { 0x000190, "SMK-M", "SMK-M" }, { 0x0030D1, "INOVA CORPORATION", "INOVA" }, { 0x003032, "MagicRam, Inc.", "MAGICRAM" }, { 0x00305A, "TELGEN CORPORATION", "TELGEN" }, { 0x003069, "IMPACCT TECHNOLOGY CORP.", "IMPACCT" }, { 0x0030EC, "BORGARDT", "BORGARDT" }, { 0x0030B4, "INTERSIL CORP.", "INTERSIL" }, { 0x00308E, "CROSS MATCH TECHNOLOGIES, INC.", "CROSS-MATCH-TECHNOLOGIES" }, { 0x0030D0, "Tellabs", "TELLABS" }, { 0x0030A5, "ACTIVE POWER", "ACTIVE-POWER" }, { 0x003009, "Tachion Networks, Inc.", "TACHION-NETWORKS" }, { 0x00302F, "GE Aviation System", "GE-AVIATION-SYSTEM" }, { 0x0030A4, "Woodwind Communications System", "WOODWIND-COMMUNICATION-SYSTEM" }, { 0x0030E5, "Amper Datos S.A.", "AMPER-DATOS" }, { 0x0030C0, "Lara Technology, Inc.", "LARA" }, { 0x00300E, "Klotz Digital AG", "KLOTZ-DIGITAL" }, { 0x003094, "Cisco Systems, Inc", "CISCO" }, { 0x00309A, "ASTRO TERRA CORP.", "ASTRO-TERRA" }, { 0x00300C, "CONGRUENCY, LTD.", "CONGRUENCY" }, { 0x0030FD, "INTEGRATED SYSTEMS DESIGN", "INTEGRATED-DESIGN" }, { 0x003023, "COGENT COMPUTER SYSTEMS, INC.", "COGENT" }, { 0x0030DF, "KB/TEL TELECOMUNICACIONES", "KB/TEL-TELECOMUNICACIONES" }, { 0x00307D, "GRE AMERICA, INC.", "GRE-AMERICA" }, { 0x00D0E4, "Cisco Systems, Inc", "CISCO" }, { 0x00D08B, "ADVA Optical Networking Ltd.", "ADVA-OPTICAL-NETWORKING" }, { 0x00D098, "Photon Dynamics Canada Inc.", "PHOTON-DYNAMICS-CANADA" }, { 0x00D05E, "STRATABEAM TECHNOLOGY, INC.", "STRATABEAM" }, { 0x00D0BE, "EMUTEC INC.", "EMUTEC" }, { 0x00D0F4, "CARINTHIAN TECH INSTITUTE", "CARINTHIAN-TECH-INSTITUTE" }, { 0x00D0AA, "CHASE COMMUNICATIONS", "CHASE-COMMUNICATION" }, { 0x00D0FA, "Thales e-Security Ltd.", "THALES-E-SECURITY" }, { 0x00D006, "Cisco Systems, Inc", "CISCO" }, { 0x00D03D, "GALILEO TECHNOLOGY, LTD.", "GALILEO" }, { 0x00D014, "ROOT, INC.", "ROOT" }, { 0x00D0DD, "SUNRISE TELECOM, INC.", "SUNRISE-TELECOM" }, { 0x00D091, "SMARTSAN SYSTEMS, INC.", "SMARTSAN" }, { 0x00B0EE, "Ajile Systems, Inc.", "AJILE" }, { 0x00B0E7, "British Federal Ltd.", "BRITISH-FEDERAL" }, { 0x00B04A, "Cisco Systems, Inc", "CISCO" }, { 0x00B069, "Honewell Oy", "HONEWELL-OY" }, { 0x00B0C2, "Cisco Systems, Inc", "CISCO" }, { 0x00B0DF, "Starboard Storage Systems", "STARBOARD-STORAGE" }, { 0x00B0EC, "EACEM", "EACEM" }, { 0x003092, "ModuNORM GmbH", "MODUNORM" }, { 0x0030EE, "DSG Technology, Inc.", "DSG" }, { 0x003042, "DeTeWe-Deutsche Telephonwerke", "DETEWE-DEUTSCHE-TELEPHONWERKE" }, { 0x003099, "BOENIG UND KALLENBACH OHG", "BOENIG-UND-KALLENBACH-OHG" }, { 0x003051, "ORBIT AVIONIC & COMMUNICATION", "ORBIT-AVIONIC-COMMUNICATION" }, { 0x0030AB, "DELTA NETWORKS, INC.", "DELTA-NETWORKS" }, { 0x003093, "Sonnet Technologies, Inc", "SONNET-TECHNOLOGIES" }, { 0x00303C, "ONNTO CORP.", "ONNTO" }, { 0x0030C7, "Macromate Corp.", "MACROMATE" }, { 0x003066, "RFM", "RFM" }, { 0x00307F, "IRLAN LTD.", "IRLAN" }, { 0x003016, "ISHIDA CO., LTD.", "ISHIDA" }, { 0x00302A, "SOUTHERN INFORMATION", "SOUTHERN-INFORMATION" }, { 0x0030DC, "RIGHTECH CORPORATION", "RIGHTECH" }, { 0x00D0A4, "ALANTRO COMMUNICATIONS", "ALANTRO-COMMUNICATION" }, { 0x00D043, "ZONAL RETAIL DATA SYSTEMS", "ZONAL-RETAIL-DATA" }, { 0x00D016, "SCM MICROSYSTEMS, INC.", "SCM-MICROSYSTEMS" }, { 0x00D012, "GATEWORKS CORP.", "GATEWORKS" }, { 0x00D092, "GLENAYRE WESTERN MULTIPLEX", "GLENAYRE-WESTERN-MULTIPLEX" }, { 0x00D0C5, "COMPUTATIONAL SYSTEMS, INC.", "COMPUTATIONAL" }, { 0x0001A7, "UNEX TECHNOLOGY CORPORATION", "UNEX" }, { 0x00D0B5, "IPricot formerly DotCom", "IPRICOT-FORMERLY-DOTCOM" }, { 0x0030E8, "ENSIM CORP.", "ENSIM" }, { 0x0030ED, "Expert Magnetics Corp.", "EXPERT-MAGNETICS" }, { 0x0030F9, "Sollae Systems Co., Ltd.", "SOLLAE" }, { 0x003098, "Global Converging Technologies", "GLOBAL-CONVERGING-TECHNOLOGIES" }, { 0x0030E2, "GARNET SYSTEMS CO., LTD.", "GARNET" }, { 0x003002, "Expand Networks", "EXPAND-NETWORKS" }, { 0x00300B, "mPHASE Technologies, Inc.", "MPHASE-TECHNOLOGIES" }, { 0x00308F, "MICRILOR, Inc.", "MICRILOR" }, { 0x0030F3, "At Work Computers", "AT-WORK-COMPUTERS" }, { 0x00D0F9, "ACUTE COMMUNICATIONS CORP.", "ACUTE-COMMUNICATION" }, { 0x00D063, "Cisco Systems, Inc", "CISCO" }, { 0x00D069, "TECHNOLOGIC SYSTEMS", "TECHNOLOGIC" }, { 0x00D070, "LONG WELL ELECTRONICS CORP.", "LONG-WELL-ELECTRONICS" }, { 0x00D061, "TREMON ENTERPRISES CO., LTD.", "TREMON-ENTERPRISES" }, { 0x00D0C4, "TERATECH CORPORATION", "TERATECH" }, { 0x0030BF, "MULTIDATA GMBH", "MULTIDATA" }, { 0x00D0D7, "B2C2, INC.", "B2C2" }, { 0x00D015, "UNIVEX MICROTECHNOLOGY CORP.", "UNIVEX-MICROTECHNOLOGY" }, { 0x00D0A5, "AMERICAN ARIUM", "AMERICAN-ARIUM" }, { 0x00D0E5, "SOLIDUM SYSTEMS CORP.", "SOLIDUM" }, { 0x00D0B3, "DRS Technologies Canada Ltd", "DRS-TECHNOLOGIES-CANADA" }, { 0x00D0E9, "Advantage Century Telecommunication Corp.", "ADVANTAGE-CENTURY-TELECOMMUNICATION" }, { 0x00D094, "Seeion Control LLC", "SEEION-CONTROL-LLC" }, { 0x009045, "Marconi Communications", "MARCONI-COMMUNICATION" }, { 0x0090F6, "ESCALATE NETWORKS, INC.", "ESCALATE-NETWORKS" }, { 0x0090EA, "ALPHA TECHNOLOGIES, INC.", "ALPHA-TECHNOLOGIES" }, { 0x0090FE, "ELECOM CO., LTD. (LANEED DIV.)", "ELECOM-LANEED-DIV" }, { 0x0090EB, "SENTRY TELECOM SYSTEMS", "SENTRY-TELECOM" }, { 0x00908E, "Nortel Networks Broadband Access", "NORTEL-NETWORKS-BROADBAND-ACCESS" }, { 0x0090CA, "ACCORD VIDEO TELECOMMUNICATIONS, LTD.", "ACCORD-VIDEO-TELECOMMUNICATIONS" }, { 0x00908B, "Tattile SRL", "TATTILE-SRL" }, { 0x009099, "ALLIED TELESIS, K.K.", "ALLIED-TELESIS-K-K" }, { 0x00900E, "HANDLINK TECHNOLOGIES, INC.", "HANDLINK-TECHNOLOGIES" }, { 0x0090F7, "NBASE COMMUNICATIONS LTD.", "NBASE-COMMUNICATION" }, { 0x009024, "PIPELINKS, INC.", "PIPELINKS" }, { 0x009052, "SELCOM ELETTRONICA S.R.L.", "SELCOM-ELETTRONICA-S-R-L" }, { 0x0090E5, "TEKNEMA, INC.", "TEKNEMA" }, { 0x009085, "GOLDEN ENTERPRISES, INC.", "GOLDEN-ENTERPRISES" }, { 0x009019, "HERMES ELECTRONICS CO., LTD.", "HERMES-ELECTRONICS" }, { 0x0090DC, "TECO INFORMATION SYSTEMS", "TECO-INFORMATION" }, { 0x00D0AE, "ORESIS COMMUNICATIONS, INC.", "ORESIS-COMMUNICATION" }, { 0x00D0D4, "V-BITS, INC.", "V-BITS" }, { 0x00D041, "AMIGO TECHNOLOGY CO., LTD.", "AMIGO" }, { 0x00D0D1, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x00D0A1, "OSKAR VIERLING GMBH + CO. KG", "OSKAR-VIERLING-+" }, { 0x00D00B, "RHK TECHNOLOGY, INC.", "RHK" }, { 0x00D02C, "CAMPBELL SCIENTIFIC, INC.", "CAMPBELL-SCIENTIFIC" }, { 0x00D0A0, "MIPS DENMARK", "MIPS-DENMARK" }, { 0x00D04E, "LOGIBAG", "LOGIBAG" }, { 0x00D0D9, "DEDICATED MICROCOMPUTERS", "DEDICATED-MICROCOMPUTERS" }, { 0x00D0CD, "ATAN TECHNOLOGY INC.", "ATAN" }, { 0x00D01D, "FURUNO ELECTRIC CO., LTD.", "FURUNO-ELECTRIC" }, { 0x00D0C7, "PATHWAY, INC.", "PATHWAY" }, { 0x00D05C, "KATHREIN TechnoTrend GmbH", "KATHREIN-TECHNOTREND" }, { 0x00D040, "SYSMATE CO., LTD.", "SYSMATE" }, { 0x00D08A, "PHOTRON USA", "PHOTRON-USA" }, { 0x00D076, "Bank of America", "BANK-OF-AMERICA" }, { 0x00D07A, "AMAQUEST COMPUTER CORP.", "AMAQUEST" }, { 0x00D0BB, "Cisco Systems, Inc", "CISCO" }, { 0x00D001, "VST TECHNOLOGIES, INC.", "VST-TECHNOLOGIES" }, { 0x00904C, "Epigram, Inc.", "EPIGRAM" }, { 0x009000, "DIAMOND MULTIMEDIA", "DIAMOND-MULTIMEDIA" }, { 0x009025, "BAE Systems Australia (Electronic Systems) Pty Ltd", "BAE-AUSTRALIA-PTY" }, { 0x0090F8, "MEDIATRIX TELECOM", "MEDIATRIX-TELECOM" }, { 0x009084, "ATECH SYSTEM", "ATECH-SYSTEM" }, { 0x009054, "INNOVATIVE SEMICONDUCTORS, INC", "INNOVATIVE-SEMICONDUCTORS" }, { 0x009080, "NOT LIMITED, INC.", "NOT" }, { 0x0090C0, "K.J. LAW ENGINEERS, INC.", "K-J-LAW-ENGINEERS" }, { 0x0090BC, "TELEMANN CO., LTD.", "TELEMANN" }, { 0x00900A, "PROTON ELECTRONIC INDUSTRIAL CO., LTD.", "PROTON-INDUSTRIAL" }, { 0x00904E, "DELEM BV", "DELEM" }, { 0x00904A, "CONCUR SYSTEM TECHNOLOGIES", "CONCUR-SYSTEM-TECHNOLOGIES" }, { 0x009029, "CRYPTO AG", "CRYPTO" }, { 0x009061, "PACIFIC RESEARCH & ENGINEERING CORPORATION", "PACIFIC-RESEARCH-ENGINEERING" }, { 0x0090A9, "WESTERN DIGITAL", "WESTERN-DIGITAL" }, { 0x009072, "SIMRAD AS", "SIMRAD-AS" }, { 0x005048, "INFOLIBRIA", "INFOLIBRIA" }, { 0x0050EA, "XEL COMMUNICATIONS, INC.", "XEL-COMMUNICATION" }, { 0x0050CE, "LG INTERNATIONAL CORP.", "LG" }, { 0x005019, "SPRING TIDE NETWORKS, INC.", "SPRING-TIDE-NETWORKS" }, { 0x0050AC, "MAPLE COMPUTER CORPORATION", "MAPLE" }, { 0x005044, "ASACA CORPORATION", "ASACA" }, { 0x0050C6, "LOOP TELECOMMUNICATION INTERNATIONAL, INC.", "LOOP-TELECOMMUNICATION" }, { 0x005049, "Arbor Networks Inc", "ARBOR-NETWORKS" }, { 0x00509F, "HORIZON COMPUTER", "HORIZON" }, { 0x0050C8, "Addonics Technologies, Inc.", "ADDONICS-TECHNOLOGIES" }, { 0x0050DC, "TAS TELEFONBAU A. SCHWABE GMBH & CO. KG", "TAS-TELEFONBAU-A-SCHWABE" }, { 0x005069, "PixStream Incorporated", "PIXSTREAM-INCORPORATED" }, { 0x00901D, "PEC (NZ) LTD.", "PEC-NZ" }, { 0x00902D, "DATA ELECTRONICS (AUST.) PTY, LTD.", "DATA-ELECTRONICS-AUST-PTY" }, { 0x009007, "DOMEX TECHNOLOGY CORP.", "DOMEX" }, { 0x009048, "ZEAL CORPORATION", "ZEAL" }, { 0x0090E6, "ALi Corporation", "ALI" }, { 0x009046, "DEXDYNE, LTD.", "DEXDYNE" }, { 0x00905E, "RAULAND-BORG CORPORATION", "RAULAND-BORG" }, { 0x009067, "WalkAbout Computers, Inc.", "WALKABOUT-COMPUTERS" }, { 0x0090DA, "DYNARC, INC.", "DYNARC" }, { 0x009026, "ADVANCED SWITCHING COMMUNICATIONS, INC.", "ADVANCED-SWITCHING-COMMUNICATION" }, { 0x0090BB, "TAINET COMMUNICATION SYSTEM Corp.", "TAINET-COMMUNICATION-SYSTEM" }, { 0x009033, "INNOVAPHONE AG", "INNOVAPHONE" }, { 0x009010, "SIMULATION LABORATORIES, INC.", "SIMULATION-LABORATORIES" }, { 0x00903D, "BIOPAC SYSTEMS, INC.", "BIOPAC" }, { 0x009057, "AANetcom, Inc.", "AANETCOM" }, { 0x00901C, "mps Software Gmbh", "MPS-SOFTWARE" }, { 0x009056, "TELESTREAM, INC.", "TELESTREAM" }, { 0x00907D, "Lake Communications", "LAKE-COMMUNICATION" }, { 0x0090DB, "NEXT LEVEL COMMUNICATIONS", "NEXT-LEVEL-COMMUNICATION" }, { 0x005042, "SCI MANUFACTURING SINGAPORE PTE, LTD.", "SCI-MANUFACTURING-SINGAPORE-PTE" }, { 0x0050C0, "GATAN, INC.", "GATAN" }, { 0x0050D3, "DIGITAL AUDIO PROCESSING PTY. LTD.", "DIGITAL-AUDIO-PROCESSING-PTY" }, { 0x00509A, "TAG ELECTRONIC SYSTEMS", "TAG" }, { 0x00507D, "IFP", "IFP" }, { 0x0050D0, "MINERVA SYSTEMS", "MINERVA" }, { 0x005098, "GLOBALOOP, LTD.", "GLOBALOOP" }, { 0x0050FA, "OXTEL, LTD.", "OXTEL" }, { 0x005086, "TELKOM SA, LTD.", "TELKOM" }, { 0x0050E1, "NS TECH ELECTRONICS SDN BHD", "NS-TECH-ELECTRONICS-SDN-BHD" }, { 0x005013, "Chaparral Network Storage", "CHAPARRAL-NETWORK-STORAGE" }, { 0x005022, "ZONET TECHNOLOGY, INC.", "ZONET" }, { 0x005040, "Panasonic Electric Works Co., Ltd.", "PANASONIC-ELECTRIC-WORKS" }, { 0x0050D6, "ATLAS COPCO TOOLS AB", "ATLAS-COPCO-TOOLS-AB" }, { 0x005082, "FORESSON CORPORATION", "FORESSON" }, { 0x0050CA, "NET TO NET TECHNOLOGIES", "NET-TO-NET-TECHNOLOGIES" }, { 0x0050A6, "OPTRONICS", "OPTRONICS" }, { 0x0050DB, "CONTEMPORARY CONTROL", "CONTEMPORARY-CONTROL" }, { 0x00506B, "SPX-ATEG", "SPX-ATEG" }, { 0x005074, "ADVANCED HI-TECH CORP.", "ADVANCED-HI-TECH" }, { 0x005047, "Private", "PRIVATE" }, { 0x005067, "AEROCOMM, INC.", "AEROCOMM" }, { 0x005024, "NAVIC SYSTEMS, INC.", "NAVIC" }, { 0x005041, "Coretronic Corporation", "CORETRONIC" }, { 0x0050D2, "CMC Electronics Inc", "CMC-ELECTRONICS" }, { 0x0090DE, "CARDKEY SYSTEMS, INC.", "CARDKEY" }, { 0x009060, "SYSTEM CREATE CORP.", "SYSTEM-CREATE" }, { 0x0090F1, "DOT HILL SYSTEMS CORPORATION", "DOT-HILL" }, { 0x0090E2, "DISTRIBUTED PROCESSING TECHNOLOGY", "DISTRIBUTED-PROCESSING" }, { 0x00906B, "APPLIED RESOURCES, INC.", "APPLIED-RESOURCES" }, { 0x009020, "PHILIPS ANALYTICAL X-RAY B.V.", "PHILIPS-ANALYTICAL-X-RAY" }, { 0x009065, "FINISAR CORPORATION", "FINISAR" }, { 0x001053, "COMPUTER TECHNOLOGY CORP.", "" }, { 0x0010A3, "OMNITRONIX, INC.", "OMNITRONIX" }, { 0x00102B, "UMAX DATA SYSTEMS, INC.", "UMAX-DATA" }, { 0x001055, "FUJITSU MICROELECTRONICS, INC.", "FUJITSU-MICROELECTRONICS" }, { 0x00103C, "IC ENSEMBLE, INC.", "IC-ENSEMBLE" }, { 0x0010D9, "IBM JAPAN, FUJISAWA MT+D", "IBM-JAPAN-FUJISAWA-MT+D" }, { 0x0010A5, "OXFORD INSTRUMENTS", "OXFORD-INSTRUMENTS" }, { 0x001046, "ALCORN MCBRIDE INC.", "ALCORN-MCBRIDE" }, { 0x00E0DC, "NEXWARE CORP.", "NEXWARE" }, { 0x00E0D9, "TAZMO CO., LTD.", "TAZMO" }, { 0x00E0C2, "NECSY S.p.A.", "NECSY-S-P-A" }, { 0x00E09B, "ENGAGE NETWORKS, INC.", "ENGAGE-NETWORKS" }, { 0x00E045, "TOUCHWAVE, INC.", "TOUCHWAVE" }, { 0x00E055, "INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A.", "INGENIERIA-ELECTRONICA-COMERCIAL-INELCOM" }, { 0x00E037, "CENTURY CORPORATION", "CENTURY" }, { 0x00E081, "TYAN COMPUTER CORP.", "TYAN" }, { 0x00E0D4, "EXCELLENT COMPUTER", "EXCELLENT" }, { 0x00E01A, "COMTEC SYSTEMS. CO., LTD.", "COMTEC" }, { 0x00E0BC, "SYMON COMMUNICATIONS, INC.", "SYMON-COMMUNICATION" }, { 0x00E084, "COMPULITE R&D", "COMPULITE-R-D" }, { 0x00E0F6, "DECISION EUROPE", "DECISION-EUROPE" }, { 0x00E027, "DUX, INC.", "DUX" }, { 0x00E07F, "LOGISTISTEM s.r.l.", "LOGISTISTEM-S-R-L" }, { 0x00E043, "VitalCom", "VITALCOM" }, { 0x00E0BF, "TORRENT NETWORKING TECHNOLOGIES CORP.", "TORRENT-NETWORKING-TECHNOLOGIES" }, { 0x00E09D, "SARNOFF CORPORATION", "SARNOFF" }, { 0x00E0BB, "NBX CORPORATION", "NBX" }, { 0x00E08A, "GEC AVERY, LTD.", "GEC-AVERY" }, { 0x00E04B, "JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH", "JUMP-INDUSTRIELLE-COMPUTERTECHNIK" }, { 0x001015, "OOmon Inc.", "OOMON" }, { 0x001088, "AMERICAN NETWORKS INC.", "AMERICAN-NETWORKS" }, { 0x001008, "VIENNA SYSTEMS CORPORATION", "VIENNA" }, { 0x0010CC, "CLP COMPUTER LOGISTIK PLANUNG GmbH", "CLP-LOGISTIK-PLANUNG" }, { 0x001094, "Performance Analysis Broadband, Spirent plc", "PERFORMANCE-ANALYSIS-BROADBAND-SPIRENT-PLC" }, { 0x0010BB, "DATA & INFORMATION TECHNOLOGY", "DATA-INFORMATION" }, { 0x001028, "COMPUTER TECHNICA, INC.", "TECHNICA" }, { 0x00108A, "TeraLogic, Inc.", "TERALOGIC" }, { 0x0010C5, "PROTOCOL TECHNOLOGIES, INC.", "PROTOCOL-TECHNOLOGIES" }, { 0x00106D, "Axxcelera Broadband Wireless", "AXXCELERA-BROADBAND-WIRELESS" }, { 0x0010FC, "BROADBAND NETWORKS, INC.", "BROADBAND-NETWORKS" }, { 0x001078, "NUERA COMMUNICATIONS, INC.", "NUERA-COMMUNICATION" }, { 0x001048, "HTRC AUTOMATION, INC.", "HTRC-AUTOMATION" }, { 0x001081, "DPS, INC.", "DPS" }, { 0x00102D, "HITACHI SOFTWARE ENGINEERING", "HITACHI-SOFTWARE-ENGINEERING" }, { 0x00109F, "PAVO, INC.", "PAVO" }, { 0x0010A1, "KENDIN SEMICONDUCTOR, INC.", "KENDIN-SEMICONDUCTOR" }, { 0x001084, "K-BOT COMMUNICATIONS", "K-BOT-COMMUNICATION" }, { 0x0010AF, "TAC SYSTEMS, INC.", "TAC" }, { 0x00100F, "INDUSTRIAL CPU SYSTEMS", "INDUSTRIAL-CPU" }, { 0x0010A2, "TNS", "TNS" }, { 0x001000, "CABLE TELEVISION LABORATORIES, INC.", "CABLE-TELEVISION-LABORATORIES" }, { 0x00103B, "HIPPI NETWORKING FORUM", "HIPPI-NETWORKING-FORUM" }, { 0x0060C2, "MPL AG", "MPL" }, { 0x0060A2, "NIHON UNISYS LIMITED CO.", "NIHON-UNISYS" }, { 0x006046, "VMETRO, INC.", "VMETRO" }, { 0x00609D, "PMI FOOD EQUIPMENT GROUP", "PMI-FOOD-EQUIPMENT-GROUP" }, { 0x0060BF, "MACRAIGOR SYSTEMS, INC.", "MACRAIGOR" }, { 0x00604A, "SAIC IDEAS GROUP", "SAIC-IDEAS-GROUP" }, { 0x006081, "TV/COM INTERNATIONAL", "TV/COM" }, { 0x0060B4, "GLENAYRE R&D INC.", "GLENAYRE-R-D" }, { 0x006045, "PATHLIGHT TECHNOLOGIES", "PATHLIGHT-TECHNOLOGIES" }, { 0x00A005, "DANIEL INSTRUMENTS, LTD.", "DANIEL-INSTRUMENTS" }, { 0x00A053, "COMPACT DEVICES, INC.", "COMPACT-DEVICES" }, { 0x00A033, "imc MeBsysteme GmbH", "IMC-MEBSYSTEME" }, { 0x00A059, "HAMILTON HALLMARK", "HAMILTON-HALLMARK" }, { 0x00A0AD, "MARCONI SPA", "MARCONI-SPA" }, { 0x00A0F6, "AutoGas Systems Inc.", "AUTOGAS" }, { 0x00A006, "IMAGE DATA PROCESSING SYSTEM GROUP", "IMAGE-DATA-PROCESSING-SYSTEM-GROUP" }, { 0x0060F3, "Performance Analysis Broadband, Spirent plc", "PERFORMANCE-ANALYSIS-BROADBAND-SPIRENT-PLC" }, { 0x00600B, "LOGWARE GmbH", "LOGWARE" }, { 0x00603F, "PATAPSCO DESIGNS", "PATAPSCO-DESIGNS" }, { 0x00607C, "WaveAccess, Ltd.", "WAVEACCESS" }, { 0x00608D, "UNIPULSE CORP.", "UNIPULSE" }, { 0x006049, "VINA TECHNOLOGIES", "VINA-TECHNOLOGIES" }, { 0x0060A1, "VPNet, Inc.", "VPNET" }, { 0x0060C9, "ControlNet, Inc.", "CONTROLNET" }, { 0x00605F, "NIPPON UNISOFT CORPORATION", "NIPPON-UNISOFT" }, { 0x006021, "DSC CORPORATION", "DSC" }, { 0x00601D, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x000800, "MULTITECH SYSTEMS, INC.", "MULTITECH" }, { 0x0060C7, "AMATI COMMUNICATIONS CORP.", "AMATI-COMMUNICATION" }, { 0x00E0CA, "BEST DATA PRODUCTS", "BEST-DATA-PRODUCTS" }, { 0x00E097, "CARRIER ACCESS CORPORATION", "CARRIER-ACCESS" }, { 0x00E09F, "PIXEL VISION", "PIXEL-VISION" }, { 0x00E0F5, "TELES AG", "TELES" }, { 0x00E070, "DH TECHNOLOGY", "DH" }, { 0x00E0B5, "ARDENT COMMUNICATIONS CORP.", "ARDENT-COMMUNICATION" }, { 0x00E073, "NATIONAL AMUSEMENT NETWORK, INC.", "NATIONAL-AMUSEMENT-NETWORK" }, { 0x00E0E8, "GRETACODER Data Systems AG", "GRETACODER-DATA" }, { 0x00E016, "RAPID CITY COMMUNICATIONS", "RAPID-CITY-COMMUNICATION" }, { 0x00E001, "STRAND LIGHTING LIMITED", "STRAND-LIGHTING" }, { 0x00E082, "ANERMA", "ANERMA" }, { 0x00E0EA, "INNOVAT COMMUNICATIONS, INC.", "INNOVAT-COMMUNICATION" }, { 0x00E06A, "KAPSCH AG", "KAPSCH" }, { 0x00E023, "TELRAD", "TELRAD" }, { 0x00E0C3, "SAKAI SYSTEM DEVELOPMENT CORP.", "SAKAI-SYSTEM-DEVELOPMENT" }, { 0x00601A, "KEITHLEY INSTRUMENTS", "KEITHLEY-INSTRUMENTS" }, { 0x0060AF, "PACIFIC MICRO DATA, INC.", "PACIFIC-MICRO-DATA" }, { 0x00601F, "STALLION TECHNOLOGIES", "STALLION-TECHNOLOGIES" }, { 0x00608F, "TEKRAM TECHNOLOGY CO., LTD.", "TEKRAM" }, { 0x0060C5, "ANCOT CORP.", "ANCOT" }, { 0x006023, "PERICOM SEMICONDUCTOR CORP.", "PERICOM-SEMICONDUCTOR" }, { 0x006063, "PSION DACOM PLC.", "PSION-DACOM-PLC" }, { 0x00604F, "Tattile SRL ", "TATTILE-SRL" }, { 0x0060E8, "HITACHI COMPUTER PRODUCTS (AMERICA), INC.", "HITACHI-PRODUCTS-AMERICA" }, { 0x006072, "VXL INSTRUMENTS, LIMITED", "VXL-INSTRUMENTS" }, { 0x006054, "CONTROLWARE GMBH", "CONTROLWARE" }, { 0x00A0DC, "O.N. ELECTRONIC CO., LTD.", "O-N" }, { 0x00A013, "TELTREND LTD.", "TELTREND" }, { 0x00A0DF, "STS TECHNOLOGIES, INC.", "STS-TECHNOLOGIES" }, { 0x00A061, "PURITAN BENNETT", "PURITAN-BENNETT" }, { 0x00A0CE, "Ecessa", "ECESSA" }, { 0x00A02A, "TRANCELL SYSTEMS", "TRANCELL" }, { 0x00A02C, "interWAVE Communications", "INTERWAVE-COMMUNICATION" }, { 0x00A077, "FUJITSU NEXION, INC.", "FUJITSU-NEXION" }, { 0x00A020, "CITICORP/TTI", "CITICORP/TTI" }, { 0x00A00D, "THE PANDA PROJECT", "THE-PANDA-PROJECT" }, { 0x00A031, "HAZELTINE CORPORATION, MS 1-17", "HAZELTINE-MS-1-17" }, { 0x00A041, "INFICON", "INFICON" }, { 0x0060FA, "EDUCATIONAL TECHNOLOGY RESOURCES, INC.", "EDUCATIONAL-RESOURCES" }, { 0x000288, "GLOBAL VILLAGE COMMUNICATION", "GLOBAL-VILLAGE-COMMUNICATION" }, { 0x0060F9, "DIAMOND LANE COMMUNICATIONS", "DIAMOND-LANE-COMMUNICATION" }, { 0x0060EA, "StreamLogic", "STREAMLOGIC" }, { 0x0060EC, "HERMARY OPTO ELECTRONICS INC.", "HERMARY-OPTO-ELECTRONICS" }, { 0x00604E, "CYCLE COMPUTER CORPORATION, INC.", "CYCLE" }, { 0x00602C, "LINX Data Terminals, Inc.", "LINX-DATA-TERMINALS" }, { 0x006028, "MACROVISION CORPORATION", "MACROVISION" }, { 0x00606A, "MITSUBISHI WIRELESS COMMUNICATIONS. INC.", "MITSUBISHI-WIRELESS-COMMUNICATION" }, { 0x00E021, "FREEGATE CORP.", "FREEGATE" }, { 0x00E0AB, "DIMAT S.A.", "DIMAT" }, { 0x00E0B6, "Entrada Networks", "ENTRADA-NETWORKS" }, { 0x00E0EC, "CELESTICA INC.", "CELESTICA" }, { 0x00E038, "PROXIMA CORPORATION", "PROXIMA" }, { 0x00E090, "BECKMAN LAB. AUTOMATION DIV.", "BECKMAN-LAB-AUTOMATION-DIV" }, { 0x00E02E, "SPC ELECTRONICS CORPORATION", "SPC-ELECTRONICS" }, { 0x00E0F4, "INSIDE Technology A/S", "INSIDE-A/S" }, { 0x00E03C, "AdvanSys", "ADVANSYS" }, { 0x00E096, "SHIMADZU CORPORATION", "SHIMADZU" }, { 0x00E0F1, "THAT CORPORATION", "THAT" }, { 0x00A0D0, "TEN X TECHNOLOGY, INC.", "TEN-X" }, { 0x00A0E0, "TENNYSON TECHNOLOGIES PTY LTD", "TENNYSON-TECHNOLOGIES-PTY" }, { 0x00A099, "K-NET LTD.", "K-NET" }, { 0x00A03D, "OPTO-22", "OPTO-22" }, { 0x00A08C, "MultiMedia LANs, Inc.", "MULTIMEDIA-LANS" }, { 0x1000E8, "NATIONAL SEMICONDUCTOR", "NATIONAL-SEMICONDUCTOR" }, { 0x006076, "SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS", "SCHLUMBERGER-TECHNOLOGIES-RETAIL-PETROLEUM" }, { 0x0060AE, "TRIO INFORMATION SYSTEMS AB", "TRIO-INFORMATION-AB" }, { 0x00606C, "ARESCOM", "ARESCOM" }, { 0x006032, "I-CUBE, INC.", "I-CUBE" }, { 0x006060, "Data Innovations North America", "DATA-INNOVATIONS-NORTH-AMERICA" }, { 0x00A0EB, "Encore Networks, Inc.", "ENCORE-NETWORKS" }, { 0x00A0C1, "ORTIVUS MEDICAL AB", "ORTIVUS-MEDICAL-AB" }, { 0x00A07D, "SEEQ TECHNOLOGY, INC.", "SEEQ" }, { 0x00A0CF, "SOTAS, INC.", "SOTAS" }, { 0x00A03A, "KUBOTEK CORPORATION", "KUBOTEK" }, { 0x00A0D7, "KASTEN CHASE APPLIED RESEARCH", "KASTEN-CHASE-APPLIED-RESEARCH" }, { 0x00A09D, "JOHNATHON FREEMAN TECHNOLOGIES", "JOHNATHON-FREEMAN-TECHNOLOGIES" }, { 0x00A036, "APPLIED NETWORK TECHNOLOGY", "APPLIED-NETWORK" }, { 0x00A0D2, "ALLIED TELESIS INTERNATIONAL CORPORATION", "ALLIED-TELESIS" }, { 0x00A075, "MICRON TECHNOLOGY, INC.", "MICRON" }, { 0x00A009, "WHITETREE NETWORK", "WHITETREE-NETWORK" }, { 0x00A060, "ACER PERIPHERALS, INC.", "ACER-PERIPHERALS" }, { 0x00A00C, "KINGMAX TECHNOLOGY, INC.", "KINGMAX" }, { 0x0020FD, "ITV TECHNOLOGIES, INC.", "ITV-TECHNOLOGIES" }, { 0x00200D, "CARL ZEISS", "CARL-ZEISS" }, { 0x002091, "J125, NATIONAL SECURITY AGENCY", "J125-NATIONAL-SECURITY-AGENCY" }, { 0x002054, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x0020A7, "PAIRGAIN TECHNOLOGIES, INC.", "PAIRGAIN-TECHNOLOGIES" }, { 0x002005, "SIMPLE TECHNOLOGY", "SIMPLE" }, { 0x00202B, "ADVANCED TELECOMMUNICATIONS MODULES, LTD.", "ADVANCED-TELECOMMUNICATIONS-MODULES" }, { 0x002086, "MICROTECH ELECTRONICS LIMITED", "MICROTECH-ELECTRONICS" }, { 0x002052, "RAGULA SYSTEMS", "RAGULA" }, { 0x002090, "ADVANCED COMPRESSION TECHNOLOGY, INC.", "ADVANCED-COMPRESSION" }, { 0x0020A3, "Harmonic, Inc", "HARMONIC" }, { 0x00206A, "OSAKA COMPUTER CORP.", "OSAKA" }, { 0x0020DB, "XNET TECHNOLOGY, INC.", "XNET" }, { 0x0020A4, "MULTIPOINT NETWORKS", "MULTIPOINT-NETWORKS" }, { 0x00201C, "EXCEL, INC.", "EXCEL" }, { 0x00209B, "ERSAT ELECTRONIC GMBH", "ERSAT" }, { 0x0020C9, "VICTRON BV", "VICTRON" }, { 0x0020D1, "MICROCOMPUTER SYSTEMS (M) SDN.", "MICROCOMPUTER-M-SDN" }, { 0x002084, "OCE PRINTING SYSTEMS, GMBH", "OCE-PRINTING" }, { 0x0020C2, "TEXAS MEMORY SYSTEMS, INC.", "TEXAS-MEMORY" }, { 0x0020C8, "LARSCOM INCORPORATED", "LARSCOM-INCORPORATED" }, { 0x0020EC, "TECHWARE SYSTEMS CORP.", "TECHWARE" }, { 0x002083, "PRESTICOM INCORPORATED", "PRESTICOM-INCORPORATED" }, { 0x00206D, "DATA RACE, INC.", "DATA-RACE" }, { 0x00203A, "DIGITAL BI0METRICS INC.", "DIGITAL-BI0METRICS" }, { 0x00A06C, "SHINDENGEN ELECTRIC MFG. CO., LTD.", "SHINDENGEN-ELECTRIC-MFG" }, { 0x00A0EE, "NASHOBA NETWORKS", "NASHOBA-NETWORKS" }, { 0x00A0FB, "TORAY ENGINEERING CO., LTD.", "TORAY-ENGINEERING" }, { 0x00A0E3, "XKL SYSTEMS CORP.", "XKL" }, { 0x00A01E, "EST CORPORATION", "EST" }, { 0x00A080, "Tattile SRL ", "TATTILE-SRL" }, { 0x00A0C2, "R.A. SYSTEMS CO., LTD.", "R-A" }, { 0x00A0CB, "ARK TELECOMMUNICATIONS, INC.", "ARK-TELECOMMUNICATIONS" }, { 0x00A074, "PERCEPTION TECHNOLOGY", "PERCEPTION" }, { 0x00A06A, "Verilink Corporation", "VERILINK" }, { 0x00A070, "COASTCOM", "COASTCOM" }, { 0x00A079, "ALPS ELECTRIC (USA), INC.", "ALPS-ELECTRIC-USA" }, { 0x002059, "MIRO COMPUTER PRODUCTS AG", "MIRO-PRODUCTS" }, { 0x0020BC, "Long Reach Networks Pty Ltd", "LONG-REACH-NETWORKS-PTY" }, { 0x0020AD, "LINQ SYSTEMS", "LINQ" }, { 0x002046, "CIPRICO, INC.", "CIPRICO" }, { 0x002071, "IBR GMBH", "IBR" }, { 0x0020A2, "GALCOM NETWORKING LTD.", "GALCOM-NETWORKING" }, { 0x002098, "HECTRONIC AB", "HECTRONIC-AB" }, { 0x002065, "SUPERNET NETWORKING INC.", "SUPERNET-NETWORKING" }, { 0x002094, "CUBIX CORPORATION", "CUBIX" }, { 0x0020C3, "COUNTER SOLUTIONS LTD.", "COUNTER-SOLUTIONS" }, { 0x0020A5, "API ENGINEERING", "API-ENGINEERING" }, { 0x002070, "HYNET, LTD.", "HYNET" }, { 0x00201E, "NETQUEST CORPORATION", "NETQUEST" }, { 0x002097, "APPLIED SIGNAL TECHNOLOGY", "APPLIED-SIGNAL" }, { 0x0020E8, "DATATREK CORPORATION", "DATATREK" }, { 0x00204F, "DEUTSCHE AEROSPACE AG", "DEUTSCHE-AEROSPACE" }, { 0x00202E, "DAYSTAR DIGITAL", "DAYSTAR-DIGITAL" }, { 0x0020B0, "GATEWAY DEVICES, INC.", "GATEWAY-DEVICES" }, { 0x0020A9, "WHITE HORSE INDUSTRIAL", "WHITE-HORSE-INDUSTRIAL" }, { 0x002061, "GarrettCom, Inc.", "GARRETTCOM" }, { 0x0020C6, "NECTEC", "NECTEC" }, { 0x0020D2, "RAD DATA COMMUNICATIONS, LTD.", "RAD-DATA-COMMUNICATION" }, { 0x00A0F8, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x00A025, "REDCOM LABS INC.", "REDCOM-LABS" }, { 0x00A0D4, "RADIOLAN, INC.", "RADIOLAN" }, { 0x00A08A, "BROOKTROUT TECHNOLOGY, INC.", "BROOKTROUT" }, { 0x002093, "LANDINGS TECHNOLOGY CORP.", "LANDINGS" }, { 0x002056, "NEOPRODUCTS", "NEOPRODUCTS" }, { 0x0020A6, "Proxim Wireless", "PROXIM-WIRELESS" }, { 0x00C073, "XEDIA CORPORATION", "XEDIA" }, { 0x00C0D4, "AXON NETWORKS, INC.", "AXON-NETWORKS" }, { 0x00C0E5, "GESPAC, S.A.", "GESPAC" }, { 0x00A0CA, "FUJITSU DENSO LTD.", "FUJITSU-DENSO" }, { 0x00A029, "COULTER CORPORATION", "COULTER" }, { 0x00C088, "EKF ELEKTRONIK GMBH", "EKF-ELEKTRONIK" }, { 0x00C056, "SOMELEC", "SOMELEC" }, { 0x00C063, "MORNING STAR TECHNOLOGIES, INC", "MORNING-STAR-TECHNOLOGIES" }, { 0x00C021, "NETEXPRESS", "NETEXPRESS" }, { 0x00C049, "U.S. ROBOTICS, INC.", "U-S-ROBOTICS" }, { 0x00C032, "I-CUBED LIMITED", "I-CUBED" }, { 0x00C051, "ADVANCED INTEGRATION RESEARCH", "ADVANCED-INTEGRATION-RESEARCH" }, { 0x00C085, "ELECTRONICS FOR IMAGING, INC.", "ELECTRONICS-FOR-IMAGING" }, { 0x00C0FE, "APTEC COMPUTER SYSTEMS, INC.", "APTEC" }, { 0x00C0E8, "PLEXCOM, INC.", "PLEXCOM" }, { 0x00C0B2, "NORAND CORPORATION", "NORAND" }, { 0x00C0B1, "GENIUS NET CO.", "GENIUS-NET" }, { 0x00C0D9, "QUINTE NETWORK CONFIDENTIALITY", "QUINTE-NETWORK-CONFIDENTIALITY" }, { 0x00C038, "RASTER IMAGE PROCESSING SYSTEM", "RASTER-IMAGE-PROCESSING-SYSTEM" }, { 0x00C098, "CHUNTEX ELECTRONIC CO., LTD.", "CHUNTEX" }, { 0x00C0DD, "QLogic Corporation", "QLOGIC" }, { 0x00C08A, "Lauterbach GmbH", "LAUTERBACH" }, { 0x0040FF, "TELEBIT CORPORATION", "TELEBIT" }, { 0x0040D7, "STUDIO GEN INC.", "STUDIO-GEN" }, { 0x004007, "TELMAT INFORMATIQUE", "TELMAT-INFORMATIQUE" }, { 0x00408D, "THE GOODYEAR TIRE & RUBBER CO.", "THE-GOODYEAR-TIRE-RUBBER" }, { 0x00402C, "ISIS DISTRIBUTED SYSTEMS, INC.", "ISIS-DISTRIBUTED" }, { 0x00C03D, "WIESEMANN & THEIS GMBH", "WIESEMANN-THEIS" }, { 0x00C026, "LANS TECHNOLOGY CO., LTD.", "LANS" }, { 0x0040E2, "MESA RIDGE TECHNOLOGIES, INC.", "MESA-RIDGE-TECHNOLOGIES" }, { 0x004078, "WEARNES AUTOMATION PTE LTD", "WEARNES-AUTOMATION-PTE" }, { 0x004062, "E-SYSTEMS, INC./GARLAND DIV.", "E--/GARLAND-DIV" }, { 0x0040D2, "PAGINE CORPORATION", "PAGINE" }, { 0x0040D0, "MITAC INTERNATIONAL CORP.", "MITAC" }, { 0x0040E4, "E-M TECHNOLOGY, INC.", "E-M" }, { 0x0040BF, "CHANNEL SYSTEMS INTERN'L INC.", "CHANNEL-INTERN-L" }, { 0x004094, "SHOGRAPHICS, INC.", "SHOGRAPHICS" }, { 0x00407F, "FLIR Systems", "FLIR" }, { 0x0040A9, "DATACOM INC.", "DATACOM" }, { 0x00C07D, "RISC DEVELOPMENTS LTD.", "RISC-DEVELOPMENTS" }, { 0x00C01E, "LA FRANCAISE DES JEUX", "LA-FRANCAISE-DES-JEUX" }, { 0x00C084, "DATA LINK CORP. LTD.", "DATA-LINK" }, { 0x00C087, "UUNET TECHNOLOGIES, INC.", "UUNET-TECHNOLOGIES" }, { 0x00C033, "TELEBIT COMMUNICATIONS APS", "TELEBIT-COMMUNICATION-APS" }, { 0x00C081, "METRODATA LTD.", "METRODATA" }, { 0x00C006, "NIPPON AVIONICS CO., LTD.", "NIPPON-AVIONICS" }, { 0x00C013, "NETRIX", "NETRIX" }, { 0x00C058, "DATAEXPERT CORP.", "DATAEXPERT" }, { 0x0040E8, "CHARLES RIVER DATA SYSTEMS,INC", "CHARLES-RIVER-DATA" }, { 0x004030, "GK COMPUTER", "GK" }, { 0x0080DC, "PICKER INTERNATIONAL", "PICKER" }, { 0x00C0A8, "GVC CORPORATION", "GVC" }, { 0x00C010, "HIRAKAWA HEWTECH CORP.", "HIRAKAWA-HEWTECH" }, { 0x00C020, "ARCO ELECTRONIC, CONTROL LTD.", "ARCO-CONTROL" }, { 0x0040A6, "Cray, Inc.", "CRAY" }, { 0x004098, "DRESSLER GMBH & CO.", "DRESSLER" }, { 0x00C0B9, "FUNK SOFTWARE, INC.", "FUNK-SOFTWARE" }, { 0x00C065, "SCOPE COMMUNICATIONS, INC.", "SCOPE-COMMUNICATION" }, { 0x00C018, "LANART CORPORATION", "LANART" }, { 0x00C0FF, "DOT HILL SYSTEMS CORPORATION", "DOT-HILL" }, { 0x00400D, "LANNET DATA COMMUNICATIONS,LTD", "LANNET-DATA-COMMUNICATION" }, { 0x0040F5, "OEM ENGINES", "OEM-ENGINES" }, { 0x004019, "AEON SYSTEMS, INC.", "AEON" }, { 0x0040A1, "ERGO COMPUTING", "ERGO-COMPUTING" }, { 0x00407E, "EVERGREEN SYSTEMS, INC.", "EVERGREEN" }, { 0x0040F6, "KATRON COMPUTERS INC.", "KATRON-COMPUTERS" }, { 0x004076, "Sun Conversion Technologies", "SUN-CONVERSION-TECHNOLOGIES" }, { 0x0040F4, "CAMEO COMMUNICATIONS, INC.", "CAMEO-COMMUNICATION" }, { 0x00C06D, "BOCA RESEARCH, INC.", "BOCA-RESEARCH" }, { 0x00C0DB, "IPC CORPORATION (PTE) LTD.", "IPC-PTE" }, { 0x00C0DA, "NICE SYSTEMS LTD.", "NICE" }, { 0x00C09B, "RELIANCE COMM/TEC, R-TEC", "RELIANCE-COMM/TEC-R-TEC" }, { 0x00C0B8, "FRASER'S HILL LTD.", "FRASER-S-HILL" }, { 0x00C016, "ELECTRONIC THEATRE CONTROLS", "THEATRE-CONTROLS" }, { 0x00C096, "TAMURA CORPORATION", "TAMURA" }, { 0x00C035, "QUINTAR COMPANY", "QUINTAR-COMPANY" }, { 0x00C0CC, "TELESCIENCES CO SYSTEMS, INC.", "TELESCIENCES" }, { 0x00C078, "COMPUTER SYSTEMS ENGINEERING", "ENGINEERING" }, { 0x0040F3, "NETCOR", "NETCOR" }, { 0x004033, "ADDTRON TECHNOLOGY CO., LTD.", "ADDTRON" }, { 0x0040A3, "MICROUNITY SYSTEMS ENGINEERING", "MICROUNITY-ENGINEERING" }, { 0x0040ED, "NETWORK CONTROLS INT'NATL INC.", "NETWORK-CONTROLS-INT-NATL" }, { 0x0040AD, "SMA REGELSYSTEME GMBH", "SMA-REGELSYSTEME" }, { 0x0080D2, "SHINNIHONDENKO CO., LTD.", "SHINNIHONDENKO" }, { 0x0080DF, "ADC CODENOLL TECHNOLOGY CORP.", "ADC-CODENOLL" }, { 0x008071, "SAI TECHNOLOGY", "SAI" }, { 0x00803D, "SURIGIKEN CO., LTD.", "SURIGIKEN" }, { 0x00804B, "EAGLE TECHNOLOGIES PTY.LTD.", "EAGLE-TECHNOLOGIES-PTY" }, { 0x008007, "DLOG NC-SYSTEME", "DLOG-NC-SYSTEME" }, { 0x008001, "PERIPHONICS CORPORATION", "PERIPHONICS" }, { 0x008062, "INTERFACE CO.", "INTERFACE" }, { 0x0080F3, "SUN ELECTRONICS CORP.", "SUN-ELECTRONICS" }, { 0x00808D, "WESTCOAST TECHNOLOGY B.V.", "WESTCOAST" }, { 0x0080B2, "NETWORK EQUIPMENT TECHNOLOGIES", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x00805B, "CONDOR SYSTEMS, INC.", "CONDOR" }, { 0x00801C, "NEWPORT SYSTEMS SOLUTIONS", "NEWPORT-SOLUTIONS" }, { 0x0080C6, "NATIONAL DATACOMM CORPORATION", "NATIONAL-DATACOMM" }, { 0x0080FA, "RWT GMBH", "RWT" }, { 0x008084, "THE CLOUD INC.", "THE-CLOUD" }, { 0x008046, "Tattile SRL ", "TATTILE-SRL" }, { 0x0080A6, "REPUBLIC TECHNOLOGY, INC.", "REPUBLIC" }, { 0x008009, "JUPITER SYSTEMS, INC.", "JUPITER" }, { 0x0080B5, "UNITED NETWORKS INC.", "UNITED-NETWORKS" }, { 0x008035, "TECHNOLOGY WORKS, INC.", "WORKS" }, { 0x008088, "VICTOR COMPANY OF JAPAN, LTD.", "VICTOR-COMPANY-OF-JAPAN" }, { 0x00809E, "DATUS GMBH", "DATUS" }, { 0x008055, "FERMILAB", "FERMILAB" }, { 0x00802A, "TEST SYSTEMS & SIMULATIONS INC", "TEST-SIMULATIONS" }, { 0x0040E3, "QUIN SYSTEMS LTD", "QUIN" }, { 0x004091, "PROCOMP INDUSTRIA ELETRONICA", "PROCOMP-INDUSTRIA-ELETRONICA" }, { 0x004014, "COMSOFT GMBH", "COMSOFT" }, { 0x00400F, "DATACOM TECHNOLOGIES", "DATACOM-TECHNOLOGIES" }, { 0x004085, "SAAB INSTRUMENTS AB", "SAAB-INSTRUMENTS-AB" }, { 0x004006, "SAMPO TECHNOLOGY CORPORATION", "SAMPO" }, { 0x00402D, "HARRIS ADACOM CORPORATION", "HARRIS-ADACOM" }, { 0x004047, "WIND RIVER SYSTEMS", "WIND-RIVER" }, { 0x0040FA, "MICROBOARDS, INC.", "MICROBOARDS" }, { 0x00002E, "SOCIETE EVIRA", "SOCIETE-EVIRA" }, { 0x0000ED, "APRIL", "APRIL" }, { 0x00003C, "AUSPEX SYSTEMS INC.", "AUSPEX" }, { 0x000051, "HOB ELECTRONIC GMBH & CO. KG", "HOB" }, { 0x0000A7, "NETWORK COMPUTING DEVICES INC.", "NETWORK-COMPUTING-DEVICES" }, { 0x0000F7, "YOUTH KEEP ENTERPRISE CO LTD", "YOUTH-KEEP" }, { 0x0000FC, "MEIKO", "MEIKO" }, { 0x0000B5, "DATABILITY SOFTWARE SYS. INC.", "DATABILITY-SOFTWARE-SYS" }, { 0x000026, "SHA-KEN CO., LTD.", "SHA-KEN" }, { 0x000022, "VISUAL TECHNOLOGY INC.", "VISUAL" }, { 0x00006D, "CRAY COMMUNICATIONS, LTD.", "CRAY-COMMUNICATION" }, { 0x0000FA, "MICROSAGE COMPUTER SYSTEMS INC", "MICROSAGE" }, { 0x00002B, "CRISP AUTOMATION, INC", "CRISP-AUTOMATION" }, { 0x000019, "APPLIED DYNAMICS INTERNATIONAL", "APPLIED-DYNAMICS" }, { 0x0080D3, "SHIVA CORP.", "SHIVA" }, { 0x0080A5, "SPEED INTERNATIONAL", "SPEED" }, { 0x0080A9, "CLEARPOINT RESEARCH", "CLEARPOINT-RESEARCH" }, { 0x008069, "COMPUTONE SYSTEMS", "COMPUTONE" }, { 0x008091, "TOKYO ELECTRIC CO.,LTD", "TOKYO-ELECTRIC" }, { 0x0080F4, "TELEMECANIQUE ELECTRIQUE", "TELEMECANIQUE-ELECTRIQUE" }, { 0x00800C, "VIDECOM LIMITED", "VIDECOM" }, { 0x0080E8, "CUMULUS CORPORATIION", "CUMULUS-CORPORATIION" }, { 0x0000CD, "Allied Telesis Labs Ltd", "ALLIED-TELESIS-LABS" }, { 0x0000A5, "Tattile SRL ", "TATTILE-SRL" }, { 0x00801E, "XINETRON, INC.", "XINETRON" }, { 0x00804A, "PRO-LOG", "PRO-LOG" }, { 0x008059, "STANLEY ELECTRIC CO., LTD", "STANLEY-ELECTRIC" }, { 0x00806B, "SCHMID TELECOMMUNICATION", "SCHMID-TELECOMMUNICATION" }, { 0x00802C, "THE SAGE GROUP PLC", "THE-SAGE-GROUP-PLC" }, { 0x008018, "KOBE STEEL, LTD.", "KOBE-STEEL" }, { 0x0080EE, "THOMSON CSF", "THOMSON-CSF" }, { 0x008013, "THOMAS-CONRAD CORPORATION", "THOMAS-CONRAD" }, { 0x00808E, "RADSTONE TECHNOLOGY", "RADSTONE" }, { 0x000036, "ATARI CORPORATION", "ATARI" }, { 0x0080BD, "THE FURUKAWA ELECTRIC CO., LTD", "THE-FURUKAWA-ELECTRIC" }, { 0x0080A8, "VITACOM CORPORATION", "VITACOM" }, { 0x008042, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x008067, "SQUARE D COMPANY", "SQUARE-D-COMPANY" }, { 0x008045, "MATSUSHITA ELECTRIC IND. CO", "MATSUSHITA-ELECTRIC-IND" }, { 0x00804C, "CONTEC CO., LTD.", "CONTEC" }, { 0x008020, "NETWORK PRODUCTS", "NETWORK-PRODUCTS" }, { 0x004044, "QNIX COMPUTER CO., LTD.", "QNIX" }, { 0x0040DD, "HONG TECHNOLOGIES", "HONG-TECHNOLOGIES" }, { 0x00403A, "IMPACT TECHNOLOGIES", "IMPACT-TECHNOLOGIES" }, { 0x0040C9, "NCUBE", "NCUBE" }, { 0x004075, "Tattile SRL ", "TATTILE-SRL" }, { 0x0080F1, "OPUS SYSTEMS", "OPUS" }, { 0x08008F, "CHIPCOM CORPORATION", "CHIPCOM" }, { 0x080081, "ASTECH INC.", "ASTECH" }, { 0x08007A, "INDATA", "INDATA" }, { 0x080078, "ACCELL CORPORATION", "ACCELL" }, { 0x08006E, "MASSCOMP", "MASSCOMP" }, { 0x08006D, "WHITECHAPEL COMPUTER WORKS", "WHITECHAPEL-WORKS" }, { 0x08006C, "SUNTEK TECHNOLOGY INT'L", "SUNTEK" }, { 0x080067, "ComDesign", "COMDESIGN" }, { 0x080063, "PLESSEY", "PLESSEY" }, { 0x080060, "INDUSTRIAL NETWORKING INC.", "INDUSTRIAL-NETWORKING" }, { 0x000081, "Bay Networks", "BAY-NETWORKS" }, { 0x0000A1, "MARQUETTE ELECTRIC CO.", "MARQUETTE-ELECTRIC" }, { 0x0000F5, "DIAMOND SALES LIMITED", "DIAMOND-SALES" }, { 0x0000E5, "SIGMEX LTD.", "SIGMEX" }, { 0x0000BA, "SIIG, INC.", "SIIG" }, { 0x00002F, "TIMEPLEX INC.", "TIMEPLEX" }, { 0x0000B8, "SEIKOSHA CO., LTD.", "SEIKOSHA" }, { 0x00007F, "LINOTYPE-HELL AG", "LINOTYPE-HELL" }, { 0x0000B7, "DOVE COMPUTER CORPORATION", "DOVE" }, { 0x00009A, "RC COMPUTER A/S", "RC-A/S" }, { 0x0000DE, "CETIA", "CETIA" }, { 0x00004B, "ICL DATA OY", "ICL-DATA-OY" }, { 0x000013, "CAMEX", "CAMEX" }, { 0x000095, "SONY TEKTRONIX CORP.", "SONY-TEKTRONIX" }, { 0x080037, "FUJI-XEROX CO. LTD.", "FUJI-XEROX" }, { 0x080031, "LITTLE MACHINES INC.", "LITTLE-MACHINES" }, { 0x08002B, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x08002A, "MOSAIC TECHNOLOGIES INC.", "MOSAIC-TECHNOLOGIES" }, { 0x080029, "Megatek Corporation", "MEGATEK" }, { 0x080026, "NORSK DATA A.S.", "NORSK-DATA-A-S" }, { 0x08001F, "SHARP CORPORATION", "SHARP" }, { 0x0000AE, "DASSAULT ELECTRONIQUE", "DASSAULT-ELECTRONIQUE" }, { 0x0000DD, "TCL INCORPORATED", "TCL-INCORPORATED" }, { 0x0000D9, "NIPPON TELEGRAPH & TELEPHONE", "NIPPON-TELEGRAPH-TELEPHONE" }, { 0x000046, "OLIVETTI NORTH AMERICA", "OLIVETTI-NORTH-AMERICA" }, { 0x000017, "Oracle", "ORACLE" }, { 0x00009F, "AMERISTAR TECHNOLOGIES INC.", "AMERISTAR-TECHNOLOGIES" }, { 0x0000E3, "INTEGRATED MICRO PRODUCTS LTD", "INTEGRATED-MICRO-PRODUCTS" }, { 0x000073, "SIECOR CORPORATION", "SIECOR" }, { 0x0000D3, "WANG LABORATORIES INC.", "WANG-LABORATORIES" }, { 0x0000B3, "CIMLINC INCORPORATED", "CIMLINC-INCORPORATED" }, { 0x00009D, "LOCUS COMPUTING CORPORATION", "LOCUS-COMPUTING" }, { 0x000060, "KONTRON ELEKTRONIK GMBH", "KONTRON-ELEKTRONIK" }, { 0x000011, "NORMEREL SYSTEMES", "NORMEREL-SYSTEMES" }, { 0x08006F, "PHILIPS APELDOORN B.V.", "PHILIPS-APELDOORN" }, { 0x0000B0, "RND-RAD NETWORK DEVICES", "RND-RAD-NETWORK-DEVICES" }, { 0x000071, "ADRA SYSTEMS INC.", "ADRA" }, { 0x00006C, "Private", "PRIVATE" }, { 0xAA0000, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x0270B0, "M/A-COM INC. COMPANIES", "M/A-COM-COMPANIES" }, { 0x00000B, "MATRIX CORPORATION", "MATRIX" }, { 0x080042, "JAPAN MACNICS CORP.", "JAPAN-MACNICS" }, { 0x026086, "LOGIC REPLACEMENT TECH. LTD.", "LOGIC-REPLACEMENT-TECH" }, { 0x00DD05, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00BBF0, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x0080E9, "Madge Ltd.", "MADGE" }, { 0x080055, "STANFORD TELECOMM. INC.", "STANFORD-TELECOMM" }, { 0x080048, "EUROTHERM GAUGING SYSTEMS", "EUROTHERM-GAUGING" }, { 0x080049, "UNIVATION", "UNIVATION" }, { 0x00DD02, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x000003, "XEROX CORPORATION", "XEROX" }, { 0x000008, "XEROX CORPORATION", "XEROX" }, { 0x080030, "CERN", "CERN" }, { 0x00DD01, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x18017D, "Harbin Arteor technology co., LTD", "HARBIN-ARTEOR" }, { 0x001CDF, "Belkin International Inc.", "BELKIN" }, { 0x944452, "Belkin International Inc.", "BELKIN" }, { 0x08863B, "Belkin International Inc.", "BELKIN" }, { 0x001556, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x002569, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x001BBF, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x4C17EB, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x7C034C, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x88AE1D, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x5C353B, "Compal Broadband Networks, Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0x1C4419, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x749DDC, "2Wire Inc", "2WIRE" }, { 0x782BCB, "Dell Inc.", "DELL" }, { 0xB8CA3A, "Dell Inc.", "DELL" }, { 0xF01FAF, "Dell Inc.", "DELL" }, { 0xC81F66, "Dell Inc.", "DELL" }, { 0x00183F, "2Wire Inc", "2WIRE" }, { 0x0019E4, "2Wire Inc", "2WIRE" }, { 0x001AC4, "2Wire Inc", "2WIRE" }, { 0x001D5A, "2Wire Inc", "2WIRE" }, { 0x34EF44, "2Wire Inc", "2WIRE" }, { 0x982CBE, "2Wire Inc", "2WIRE" }, { 0x001422, "Dell Inc.", "DELL" }, { 0x001C23, "Dell Inc.", "DELL" }, { 0x00219B, "Dell Inc.", "DELL" }, { 0x000874, "Dell Inc.", "DELL" }, { 0x002564, "Dell Inc.", "DELL" }, { 0x842B2B, "Dell Inc.", "DELL" }, { 0xE0DB55, "Dell Inc.", "DELL" }, { 0xA41F72, "Dell Inc.", "DELL" }, { 0x00C04F, "Dell Inc.", "DELL" }, { 0xF04DA2, "Dell Inc.", "DELL" }, { 0xBC305B, "Dell Inc.", "DELL" }, { 0x001D09, "Dell Inc.", "DELL" }, { 0xF8E079, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x1430C6, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x000D67, "Ericsson", "ERICSSON" }, { 0xE0757D, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x001E65, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001F3B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0016EA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00216B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0019D1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001CC0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5CE0C5, "Intel Corporate", "INTEL-CORPORATE" }, { 0x183DA2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x448500, "Intel Corporate", "INTEL-CORPORATE" }, { 0x809B20, "Intel Corporate", "INTEL-CORPORATE" }, { 0x100BA9, "Intel Corporate", "INTEL-CORPORATE" }, { 0x247703, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC48508, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0026C6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x74E50B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x58946B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002710, "Intel Corporate", "INTEL-CORPORATE" }, { 0x64D4DA, "Intel Corporate", "INTEL-CORPORATE" }, { 0xDCA971, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001CBF, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA0A8CD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x340286, "Intel Corporate", "INTEL-CORPORATE" }, { 0x34DE1A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x80000B, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB80305, "Intel Corporate", "INTEL-CORPORATE" }, { 0x303A64, "Intel Corporate", "INTEL-CORPORATE" }, { 0xACFDCE, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE09467, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00DBDF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0C8BFD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE09D31, "Intel Corporate", "INTEL-CORPORATE" }, { 0xCC3D82, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD00ED9, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0x6C2995, "Intel Corporate", "INTEL-CORPORATE" }, { 0x40E3D6, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x24DEC6, "Aruba Networks", "ARUBA-NETWORKS" }, { 0xD8C7C8, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x900BC1, "Sprocomm Technologies CO.,Ltd", "SPROCOMM-TECHNOLOGIES" }, { 0x6C71D9, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x384FF0, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x0015AF, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x485D60, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0x54E4BD, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x98743D, "Shenzhen Jun Kai Hengye Technology Co. Ltd", "SHENZHEN-JUN-KAI-HENGYE" }, { 0xA04FD4, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x842615, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x5CE2F4, "AcSiP Technology Corp.", "ACSIP" }, { 0x002662, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x00193E, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x0013C8, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xDC0B1A, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x74888B, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xACD074, "Espressif Inc.", "ESPRESSIF" }, { 0xD05349, "Liteon Technology Corporation", "LITEON" }, { 0x000941, "Allied Telesis R&D Center K.K.", "ALLIED-TELESIS-R-D-CENTER-K-K" }, { 0x00014A, "Sony Corporation", "SONY" }, { 0x001CA4, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x002345, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x8C6422, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x90C115, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x8400D2, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x5CB524, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x94A1A2, "AMPAK Technology, Inc.", "AMPAK" }, { 0x74DE2B, "Liteon Technology Corporation", "LITEON" }, { 0x68A3C4, "Liteon Technology Corporation", "LITEON" }, { 0xC8FF28, "Liteon Technology Corporation", "LITEON" }, { 0x0024D2, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xDC64B8, "Shenzhen JingHanDa Electronics Co.Ltd", "SHENZHEN-JINGHANDA-ELECTRONICS" }, { 0xC4DA7D, "Ivium Technologies B.V.", "IVIUM-TECHNOLOGIES" }, { 0x9492BC, "SYNTECH(HK) TECHNOLOGY LIMITED", "SYNTECH-HK" }, { 0x001A4F, "AVM GmbH", "AVM" }, { 0x00040E, "AVM GmbH", "AVM" }, { 0x0016E3, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x00300A, "Aztech Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x9CC7A6, "AVM GmbH", "AVM" }, { 0x743170, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xA8D3F7, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x7C4FB5, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x0012BF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x04FE8D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x480031, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0019FB, "BSkyB Ltd", "BSKYB" }, { 0x0CF9C0, "BSkyB Ltd", "BSKYB" }, { 0x001BA9, "Brother industries, LTD.", "BROTHER-INDUSTRIES" }, { 0x0011B6, "Open Systems International", "OPEN" }, { 0xE03E44, "Broadcom", "BROADCOM" }, { 0xD40129, "Broadcom", "BROADCOM" }, { 0xFCB698, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x00E03A, "Cabletron Systems, Inc.", "CABLETRON" }, { 0x000117, "Canal +", "CANAL-+" }, { 0x0019C7, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x006DFB, "Vutrix Technologies Ltd", "VUTRIX-TECHNOLOGIES" }, { 0xC81073, "CENTURY OPTICOMM CO.,LTD", "CENTURY-OPTICOMM" }, { 0x744AA4, "zte corporation", "ZTE" }, { 0x9CD35B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60AF6D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB85A73, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x103047, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x109266, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB047BF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7C0BC6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x804E81, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x244B81, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50A4C8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8425DB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD8C4E9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50C8E5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x446D6C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x38D40B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x647791, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x781FDB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08FC88, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30C7AE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18227E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00F46F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9CE6E7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0090A2, "CyberTAN Technology Inc.", "CYBERTAN" }, { 0x0030DA, "Comtrend Corporation", "COMTREND" }, { 0x64680C, "Comtrend Corporation", "COMTREND" }, { 0x00CF1C, "Communication Machinery Corporation", "COMMUNICATION-MACHINERY" }, { 0x0090F5, "CLEVO CO.", "CLEVO" }, { 0x0030FF, "DataFab Systems Inc.", "DATAFAB" }, { 0xE498D1, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0xA8A089, "Tactical Communications", "TACTICAL-COMMUNICATION" }, { 0x48365F, "Wintecronics Ltd.", "WINTECRONICS" }, { 0x005A39, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x5CC6D0, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x080581, "Roku, Inc.", "ROKU" }, { 0xB0A737, "Roku, Inc.", "ROKU" }, { 0xB83E59, "Roku, Inc.", "ROKU" }, { 0xDC3A5E, "Roku, Inc.", "ROKU" }, { 0x0014A5, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x001742, "FUJITSU LIMITED", "FUJITSU" }, { 0x2C10C1, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xCCFB65, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x40D28A, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x7CBB8A, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00224C, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0023CC, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002444, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE0E751, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0017AB, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001BEA, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0015DE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001370, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00247C, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0023B4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021AB, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001FDF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00194F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00188D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00180F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x547975, "Nokia Corporation", "NOKIA" }, { 0x2CCC15, "Nokia Corporation", "NOKIA" }, { 0x00BD3A, "Nokia Corporation", "NOKIA" }, { 0x0026CC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00164E, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0016BC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001ADC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002668, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F5C, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F00, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001E3B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xA04E04, "Nokia Corporation", "NOKIA" }, { 0x240B0A, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0xC4E510, "Mechatro, Inc.", "MECHATRO" }, { 0x74C330, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x403F8C, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x14C3C2, "K.A. Schmersal GmbH & Co. KG", "K-A-SCHMERSAL" }, { 0x10785B, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x20768F, "Apple, Inc.", "APPLE" }, { 0x9C5CF9, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x88A084, "Formation Data Systems", "FORMATION-DATA" }, { 0x0025DC, "Sumitomo Electric Industries,Ltd", "SUMITOMO-ELECTRIC-INDUSTRIES" }, { 0x001CFC, "Sumitomo Electric Industries,Ltd", "SUMITOMO-ELECTRIC-INDUSTRIES" }, { 0x8CC661, "Current, powered by GE", "CURRENT-POWERED-BY-GE" }, { 0x009050, "Teleste Corporation", "TELESTE" }, { 0xBC44B0, "Elastifile", "ELASTIFILE" }, { 0x7864E6, "Green Motive Technology Limited", "GREEN-MOTIVE" }, { 0xC0CCF8, "Apple, Inc.", "APPLE" }, { 0x80ED2C, "Apple, Inc.", "APPLE" }, { 0xE8B2AC, "Apple, Inc.", "APPLE" }, { 0x0080B8, "DMG MORI B.U.G. CO., LTD.", "DMG-MORI-B-U-G" }, { 0x8489AD, "Apple, Inc.", "APPLE" }, { 0x40B688, "LEGIC Identsystems AG", "LEGIC-IDENTSYSTEMS" }, { 0xA09D91, "SoundBridge", "SOUNDBRIDGE" }, { 0x30785C, "Partow Tamas Novin (Parman)", "PARTOW-TAMAS-NOVIN-PARMAN" }, { 0x441102, "EDMI Europe Ltd", "EDMI-EUROPE" }, { 0x2C21D7, "IMAX Corporation", "IMAX" }, { 0x0026F7, "Nivetti Systems Pvt. Ltd.", "NIVETTI-PVT" }, { 0x24C3F9, "Securitas Direct AB", "SECURITAS-DIRECT-AB" }, { 0xDC4D23, "MRV Comunications", "MRV-COMUNICATIONS" }, { 0x085BDA, "CliniCare LTD", "CLINICARE" }, { 0x0C5A9E, "Wi-SUN Alliance", "WI-SUN-ALLIANCE" }, { 0x00C164, "Cisco Systems, Inc", "CISCO" }, { 0x98E7F5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x24BCF8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x10D0AB, "zte corporation", "ZTE" }, { 0x202DF8, "Digital Media Cartridge Ltd.", "DIGITAL-MEDIA-CARTRIDGE" }, { 0x042DB4, "First Property (Beijing) Co., Ltd Modern MOMA Branch", "FIRST-PROPERTY-BEIJING-MODERN-MOMA-BRANCH" }, { 0x008A96, "Cisco Systems, Inc", "CISCO" }, { 0x007888, "Cisco Systems, Inc", "CISCO" }, { 0x98DED0, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x30FC68, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x5CCA1A, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x000594, "HMS Industrial Networks", "HMS-INDUSTRIAL-NETWORKS" }, { 0x000AC2, "Wuhan FiberHome Digital Technology Co.,Ltd.", "WUHAN-FIBERHOME-DIGITAL" }, { 0xD4F207, "DIAODIAO(Beijing)Technology CO.,Ltd", "DIAODIAO-BEIJING" }, { 0xFCF8B7, "TRONTEQ Electronic", "TRONTEQ" }, { 0xD4883F, "HDPRO CO., LTD.", "HDPRO" }, { 0x001BF3, "TRANSRADIO SenderSysteme Berlin AG", "TRANSRADIO-SENDERSYSTEME-BERLIN" }, { 0xE0071B, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0xA86AC1, "HanbitEDS Co., Ltd.", "HANBITEDS" }, { 0x88B1E1, "Mojo Networks, Inc.", "MOJO-NETWORKS" }, { 0x74DFBF, "Liteon Technology Corporation", "LITEON" }, { 0xFC3F7C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x608334, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x84AD58, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x746FF7, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0xB01BD2, "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0x74852A, "PEGATRON CORPORATION", "PEGATRON" }, { 0x386077, "PEGATRON CORPORATION", "PEGATRON" }, { 0x60B4F7, "Plume Design Inc", "PLUME-DESIGN" }, { 0xA4D8CA, "HONG KONG WATER WORLD TECHNOLOGY CO. LIMITED", "HONG-KONG-WATER-WORLD" }, { 0x00109B, "Emulex Corporation", "EMULEX" }, { 0x00E0D5, "Emulex Corporation", "EMULEX" }, { 0x001035, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0xECA86B, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x4487FC, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x002197, "Elitegroup Computer Systems Co.,Ltd.", "ELITEGROUP" }, { 0x649968, "Elentec", "ELENTEC" }, { 0x00208F, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x9CDF03, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x94885E, "Surfilter Network Technology Co., Ltd. ", "SURFILTER-NETWORK" }, { 0x002378, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x002088, "GLOBAL VILLAGE COMMUNICATION", "GLOBAL-VILLAGE-COMMUNICATION" }, { 0x90C7D8, "zte corporation", "ZTE" }, { 0xBC6A44, "Commend International GmbH", "COMMEND" }, { 0x0020F2, "Oracle Corporation ", "ORACLE" }, { 0x00015D, "Oracle Corporation ", "ORACLE" }, { 0x943BB1, "Kaonmedia CO., LTD.", "KAONMEDIA" }, { 0x146308, "JABIL CIRCUIT (SHANGHAI) LTD.", "JABIL-CIRCUIT-SHANGHAI" }, { 0x08000D, "International Computers, Ltd", "COMPUTERS" }, { 0x00D0A2, "INTEGRATED DEVICE", "INTEGRATED-DEVICE" }, { 0x0060B1, "Input/Output, Inc.", "INPUT/OUTPUT" }, { 0x00177D, "IDT Technology Limited", "IDT" }, { 0x288A1C, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x100E7E, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x84B59C, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x544B8C, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x541E56, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x64649B, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x2C6BF5, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x002283, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xEC13DB, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xAC4BC8, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xB0A86E, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x3C94D5, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xF4CC55, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x002159, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x5C70A3, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x3497F6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x50680A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD89403, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x9C8D7C, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xE04F43, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xB0E03C, "TCT mobile ltd", "TCT-MOBILE" }, { 0xD09DAB, "TCT mobile ltd", "TCT-MOBILE" }, { 0x94D859, "TCT mobile ltd", "TCT-MOBILE" }, { 0x9471AC, "TCT mobile ltd", "TCT-MOBILE" }, { 0x70BAEF, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x009006, "Hamamatsu Photonics K.K.", "HAMAMATSU-PHOTONICS-K-K" }, { 0x001AF4, "Handreamnet", "HANDREAMNET" }, { 0x000AED, "HARTING Electronics GmbH", "HARTING-ELECTRONICS" }, { 0x1CCB99, "TCT mobile ltd", "TCT-MOBILE" }, { 0x18E3BC, "TCT mobile ltd", "TCT-MOBILE" }, { 0x289AFA, "TCT mobile ltd", "TCT-MOBILE" }, { 0x44A42D, "TCT mobile ltd", "TCT-MOBILE" }, { 0x8C8EF2, "Apple, Inc.", "APPLE" }, { 0xF40F24, "Apple, Inc.", "APPLE" }, { 0xA0D385, "AUMA Riester GmbH & Co. KG", "AUMA-RIESTER" }, { 0x1414E6, "Ningbo Sanhe Digital Co.,Ltd", "NINGBO-SANHE-DIGITAL" }, { 0x84A134, "Apple, Inc.", "APPLE" }, { 0x1C9148, "Apple, Inc.", "APPLE" }, { 0xCC167E, "Cisco Systems, Inc", "CISCO" }, { 0x600810, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xC85B76, "LCFC(HeFei) Electronics Technology co., ltd", "LCFC-HEFEI-ELECTRONICS" }, { 0x001AE8, "Unify Software and Solutions GmbH & Co. KG", "UNIFY-SOFTWARE-AND-SOLUTIONS" }, { 0x945907, "Shanghai HITE-BELDEN Network Technology Co., Ltd.", "SHANGHAI-HITE-BELDEN-NETWORK" }, { 0x48C663, "GTO Access Systems LLC", "GTO-ACCESS-LLC" }, { 0x606453, "AOD Co.,Ltd.", "AOD" }, { 0x6C98EB, "Riverbed Technology, Inc.", "RIVERBED" }, { 0xDC293A, "Shenzhen Nuoshi Technology Co., LTD.", "SHENZHEN-NUOSHI" }, { 0x40562D, "Smartron India Pvt ltd", "SMARTRON-INDIA-PVT" }, { 0x70288B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00809F, "ALE International", "ALE" }, { 0xB0D7CC, "Tridonic GmbH & Co KG", "TRIDONIC" }, { 0x7C574E, "COBI GmbH", "COBI" }, { 0x34C0F9, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0x20C047, "Verizon", "VERIZON" }, { 0xAC0481, "Jiangsu Huaxing Electronics Co., Ltd.", "JIANGSU-HUAXING-ELECTRONICS" }, { 0xFC2D5E, "zte corporation", "ZTE" }, { 0xE811CA, "SHANDONG KAER ELECTRIC.CO.,LTD", "SHANDONG-KAER-ELECTRIC" }, { 0xECD68A, "Shenzhen JMicron Intelligent Technology Developmen", "SHENZHEN-JMICRON-INTELLIGENT-DEVELOPMEN" }, { 0x08D0B7, "Qingdao Hisense Communications Co.,Ltd.", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x28285D, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x5CF4AB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x4C9EFF, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x0023F8, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xB0B2DC, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x90EF68, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xA8AD3D, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xE03005, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x2824FF, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x14C1FF, "ShenZhen QianHai Comlan communication Co.,LTD", "SHENZHEN-QIANHAI-COMLAN-COMMUNICATION" }, { 0xEC8EB5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x70AF6A, "SHENZHEN FENGLIAN TECHNOLOGY CO., LTD.", "SHENZHEN-FENGLIAN" }, { 0x0026F1, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0xB439D6, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x001CEF, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x000276, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x4849C7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001F9A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0014C7, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001540, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0017D1, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0015E8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001660, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001BBA, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x205EF7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00034B, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00001B, "Novell, Inc.", "NOVELL" }, { 0x00E011, "UNIDEN CORPORATION", "UNIDEN" }, { 0xB03EB0, "MICRODIA Ltd.", "MICRODIA" }, { 0x00126C, "Visonic Technologies 1993 Ltd.", "VISONIC-TECHNOLOGIES-1993" }, { 0x18ABF5, "Ultra Electronics Electrics", "ULTRA-ELECTRONICS-ELECTRICS" }, { 0x304487, "Hefei Radio Communication Technology Co., Ltd ", "HEFEI-RADIO-COMMUNICATION" }, { 0xAC6175, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xAC482D, "Ralinwi Nanjing Electronic Technology Co., Ltd.", "RALINWI-NANJING" }, { 0xA48269, "Datrium, Inc.", "DATRIUM" }, { 0x441441, "AudioControl Inc.", "AUDIOCONTROL" }, { 0x0018DA, "AMBER wireless GmbH", "AMBER-WIRELESS" }, { 0xEC24B8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x68C90B, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF4B85E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x5C313E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA0E6F8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x20C38F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD0FF50, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7472B0, "Guangzhou Shiyuan Electronics Co., Ltd. ", "GUANGZHOU-SHIYUAN-ELECTRONICS" }, { 0x44BFE3, "Shenzhen Longtech Electronics Co.,Ltd", "SHENZHEN-LONGTECH-ELECTRONICS" }, { 0xF45214, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0x689E19, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x985945, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x1CE2CC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x44C15C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E9, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD00790, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x04E451, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB0D5CC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x5CF821, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xFC0F4B, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x3C6FEA, "Panasonic India Pvt. Ltd.", "PANASONIC-INDIA-PVT" }, { 0xA863F2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x948854, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001237, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xBC6A29, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC0E422, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001830, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x1CBA8C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x58FB84, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE0E7BB, "Nureva, Inc.", "NUREVA" }, { 0x7CA97D, "Objenious", "OBJENIOUS" }, { 0xBC8AA3, "NHN Entertainment", "NHN-ENTERTAINMENT" }, { 0x70A84C, "MONAD., Inc.", "MONAD" }, { 0x00A289, "Cisco Systems, Inc", "CISCO" }, { 0x6C1E90, "Hansol Technics Co., Ltd.", "HANSOL-TECHNICS" }, { 0x486DBB, "Vestel Elektronik San ve Tic. A.Ş.", "VESTEL-ELEKTRONIK-SAN-VE-TIC-A-Ş" }, { 0xE09DFA, "Wanan Hongsheng Electronic Co.Ltd", "WANAN-HONGSHENG" }, { 0x34E71C, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0x182861, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 0x8841FC, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 0x182666, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC06599, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCC07AB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE84E84, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50FC9F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE432CB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x889B39, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCB1F3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x38ECE4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCCF9E8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0E77E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5CE8EB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB8D9CE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x70F927, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x301966, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28BAB5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x103B59, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6CB7F4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001EE1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0018AF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC72B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78F7BE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF49F54, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7C11CB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA4CAA0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x00214C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001632, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0667B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x38AA3C, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x206432, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x002637, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x001377, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50B7C3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8018A7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5CA39D, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xB88EDF, "Zencheer Communication Technology Co., Ltd.", "ZENCHEER-COMMUNICATION" }, { 0xD85DE2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x707781, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x606DC7, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x681401, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0071CC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF866D1, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF80D43, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002268, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001FE1, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002556, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00265C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90CDB6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001E4C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF8DA0C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9034FC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x906EBB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x342387, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x689423, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xB8763F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x1C3E84, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC01885, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x785968, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x1C666D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xCCAF78, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x904CE5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xB01041, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7487A9, "OCT Technology Co., Ltd.", "OCT" }, { 0xE0286D, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x444E1A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE8E5D6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5492BE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x101DC0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0021D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5CA933, "Luma Home", "LUMA-HOME" }, { 0x2CDD95, "Taicang T&W Electronics", "TAICANG-T-W-ELECTRONICS" }, { 0xAC84C9, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x107223, "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO ", "TELLESCOM-INDUSTRIA-E-COMERCIO-EM-TELECOMUNICACAO" }, { 0xCCB0DA, "Liteon Technology Corporation", "LITEON" }, { 0x14EDBB, "2Wire Inc", "2WIRE" }, { 0x44BA46, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xB4D135, "Cloudistics", "CLOUDISTICS" }, { 0x085DDD, "MERCURY CORPORATION", "MERCURY" }, { 0x6CEC5A, "Hon Hai Precision Ind. CO.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5001D9, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x44C346, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x884477, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x047503, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x2C402B, "Smart iBlue Technology Limited", "SMART-IBLUE" }, { 0x180675, "Dilax Intelcom GmbH", "DILAX-INTELCOM" }, { 0x30AEA4, "Espressif Inc.", "ESPRESSIF" }, { 0x0C4933, "Sichuan Jiuzhou Electronic Technology Co., Ltd.", "SICHUAN-JIUZHOU" }, { 0x7828CA, "Sonos, Inc.", "SONOS" }, { 0xB8E937, "Sonos, Inc.", "SONOS" }, { 0xB05216, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002926, "Applied Optoelectronics, Inc Taiwan Branch", "APPLIED-OPTOELECTRONICS-TAIWAN-BRANCH" }, { 0x68DFDD, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xC46AB7, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xFC64BA, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x2082C0, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x3480B3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x7451BA, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x64B473, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x8C2FA6, "Solid Optics B.V.", "SOLID-OPTICS" }, { 0xB0A2E7, "Shenzhen TINNO Mobile Technology Corp.", "SHENZHEN-TINNO-MOBILE" }, { 0xBCA8A6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x101331, "Technicolor", "TECHNICOLOR" }, { 0x38AFD7, "FUJITSU LIMITED", "FUJITSU" }, { 0x28993A, "Arista Networks", "ARISTA-NETWORKS" }, { 0xB0E892, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0xAC1826, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0x886639, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD8197A, "Nuheara Ltd", "NUHEARA" }, { 0x8CE117, "zte corporation", "ZTE" }, { 0x64136C, "zte corporation", "ZTE" }, { 0x0005CD, "D&M Holdings Inc.", "D-M-HOLDINGS" }, { 0x8C9351, "Jigowatts Inc.", "JIGOWATTS" }, { 0x00248D, "Sony Interactive Entertainment Inc.", "SONY-INTERACTIVE-ENTERTAINMENT" }, { 0x54276C, "Jiangsu Houge Technology Corp.", "JIANGSU-HOUGE" }, { 0x00CB00, "Private", "PRIVATE" }, { 0xFCFFAA, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x70B3D5, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x40D855, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x48DF37, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x74F8DB, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x0CEFAF, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x28FD80, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xB0C5CA, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x9802D8, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xD07650, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xBC6641, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x0028F8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8416F9, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xCCD31E, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x8C192D, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xE81863, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xC44BD1, "Wallys Communications Teachnologies Co.,Ltd.", "WALLYS-COMMUNICATION-TEACHNOLOGIES" }, { 0x2057AF, "Shenzhen FH-NET OPTOELECTRONICS CO.,LTD", "SHENZHEN-FH-NET-OPTOELECTRONICS" }, { 0x34EA34, "HangZhou Gubei Electronics Technology Co.,Ltd", "HANGZHOU-GUBEI-ELECTRONICS" }, { 0xF8A9D0, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xCCFA00, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xBCF5AC, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x00AA70, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xF01C13, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xCC2D8C, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x344DF7, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xC49A02, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0022A9, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x0025E5, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x10F96F, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x00116E, "Peplink International Ltd.", "PEPLINK" }, { 0xA091C8, "zte corporation", "ZTE" }, { 0x002597, "Kalki Communication Technologies", "KALKI-COMMUNICATION-TECHNOLOGIES" }, { 0x882BD7, "ADDÉNERGIE TECHNOLOGIES", "ADDÉNERGIE-TECHNOLOGIES" }, { 0xB4A5EF, "Sercomm Corporation.", "SERCOMM" }, { 0x3044A1, "Shanghai Nanchao Information Technology", "SHANGHAI-NANCHAO-INFORMATION" }, { 0xC4F1D1, "BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD.", "BEIJING-SOGOU-DEVELOPMENT" }, { 0x38A28C, "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "SHENZHEN-RF-LINK" }, { 0x58528A, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 0xB0C287, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xCC03FA, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x28BE9B, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x509F3B, "OI ELECTRIC CO.,LTD", "OI-ELECTRIC" }, { 0xE4029B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6002B4, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0x98EECB, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x70E284, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x80EA23, "Wistron Neweb Corporation", "WISTRON-NEWEB" }, { 0xD88039, "Microchip Technology Inc.", "MICROCHIP" }, { 0xFC3D93, "LONGCHEER TELECOMMUNICATION LIMITED", "LONGCHEER-TELECOMMUNICATION" }, { 0x48F7C0, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0x00409F, "Telco Systems, Inc. ", "TELCO" }, { 0x00E09E, "Quantum Corporation", "QUANTUM" }, { 0x00148C, "General Dynamics Mission Systems", "GENERAL-DYNAMICS-MISSION" }, { 0xA47174, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD4A148, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD065CA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x8CEBC6, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB808D7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xFCF152, "Sony Corporation", "SONY" }, { 0x784476, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0x00183A, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0xE89A8F, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x001B24, "QUANTA COMPUTER INC.", "QUANTA" }, { 0xCC52AF, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001A6B, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x00DD0A, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00039D, "Qisda Corporation", "QISDA" }, { 0x000B0E, "Trapeze Networks", "TRAPEZE-NETWORKS" }, { 0x002318, "Toshiba", "TOSHIBA" }, { 0xE89D87, "Toshiba", "TOSHIBA" }, { 0xE8E0B7, "Toshiba", "TOSHIBA" }, { 0x001428, "Vocollect Inc", "VOCOLLECT" }, { 0x006B9E, "Vizio, Inc", "VIZIO" }, { 0x0024FF, "QLogic Corporation", "QLOGIC" }, { 0x00A0C6, "Qualcomm Inc.", "QUALCOMM" }, { 0xECAAA0, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE8886C, "Shenzhen SC Technologies Co.,LTD", "SHENZHEN-SC-TECHNOLOGIES" }, { 0xDC35F1, "Positivo Informática SA.", "POSITIVO-INFORMáTICA" }, { 0xEC6881, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x44334C, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0xD84FB8, "LG ELECTRONICS", "LG-ELECTRONICS" }, { 0x9C220E, "TASCAN Systems GmbH", "TASCAN" }, { 0x0CA402, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x00164D, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0xFCFAF7, "Shanghai Baud Data Communication Co.,Ltd.", "SHANGHAI-BAUD-DATA-COMMUNICATION" }, { 0xC8E776, "PTCOM Technology", "PTCOM" }, { 0x70F8E7, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x949AA9, "Microsoft Corporation", "MICROSOFT" }, { 0xC4084A, "Nokia", "NOKIA" }, { 0x0C54B9, "Nokia", "NOKIA" }, { 0x8C90D3, "Nokia", "NOKIA" }, { 0x34AA99, "Nokia", "NOKIA" }, { 0xF8633F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x088620, "TECNO MOBILE LIMITED", "TECNO-MOBILE" }, { 0xA42983, "Boeing Defence Australia", "BOEING-DEFENCE-AUSTRALIA" }, { 0x702E22, "zte corporation", "ZTE" }, { 0x0023B9, "Airbus Defence and Space Deutschland GmbH", "AIRBUS-DEFENCE-AND-SPACE-DEUTSCHLAND" }, { 0xB0C128, "Adler ELREHA GmbH", "ADLER-ELREHA" }, { 0xC8F946, "LOCOSYS Technology Inc.", "LOCOSYS" }, { 0x2047ED, "BSkyB Ltd", "BSKYB" }, { 0xD41D71, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x5C2443, "O-Sung Telecom Co., Ltd.", "O-SUNG-TELECOM" }, { 0x1861C7, "lemonbeat GmbH", "LEMONBEAT" }, { 0x9CDC71, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x240D65, "Shenzhen Vsun Communication Technology Co., Ltd.", "SHENZHEN-VSUN-COMMUNICATION" }, { 0xD8452B, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0xC8028F, "Nova Electronics (Shanghai) Co., Ltd.", "NOVA-ELECTRONICS-SHANGHAI" }, { 0x60EFC6, "Shenzhen Chima Technologies Co Limited", "SHENZHEN-CHIMA-TECHNOLOGIES" }, { 0x502B73, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x20DBAB, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x000DF0, "QCOM TECHNOLOGY INC.", "QCOM" }, { 0x5C9960, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5CF7E6, "Apple, Inc.", "APPLE" }, { 0xA0D795, "Apple, Inc.", "APPLE" }, { 0xCC088D, "Apple, Inc.", "APPLE" }, { 0x0080FB, "BVM LIMITED", "BVM" }, { 0x002722, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x687251, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0xB4FBE4, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x188B15, "ShenZhen ZhongRuiJing Technology co.,LTD", "SHENZHEN-ZHONGRUIJING" }, { 0xE02CF3, "MRS Electronic GmbH", "MRS" }, { 0xF41F88, "zte corporation", "ZTE" }, { 0xD816C1, "DEWAV (HK) ELECTRONICS LIMITED", "DEWAV-HK-ELECTRONICS" }, { 0x7CCC1F, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xC0854C, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0x00FD45, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x9C83BF, "PRO-VISION, Inc.", "PRO-VISION" }, { 0x9C13AB, "Chanson Water Co., Ltd.", "CHANSON-WATER" }, { 0x883C1C, "MERCURY CORPORATION", "MERCURY" }, { 0x9C5D12, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x001F82, "Cal-Comp Electronics & Communications Company Ltd.", "CAL-COMP-ELECTRONICS-COMMUNICATION-COMPANY" }, { 0x0C0227, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xC0288D, "Logitech, Inc", "LOGITECH" }, { 0x9C1E95, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xE078A3, "Shanghai Winner Information Technology Co.,Inc", "SHANGHAI-WINNER-INFORMATION" }, { 0xB49691, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7CCBE2, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x9CD9CB, "Lesira Manufacturing Pty Ltd", "LESIRA-MANUFACTURING-PTY" }, { 0x002590, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x187532, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xE0DCA0, "Siemens Industrial Automation Products Ltd Chengdu", "SIEMENS-INDUSTRIAL-AUTOMATION-PRODUCTS-CHENGDU" }, { 0xA4580F, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0xDCD255, "Kinpo Electronics, Inc.", "KINPO-ELECTRONICS" }, { 0x805A04, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xB0EE7B, "Roku, Inc", "ROKU" }, { 0xE8EADA, "Denkovi Assembly Electronics LTD", "DENKOVI-ASSEMBLY-ELECTRONICS" }, { 0x40ED98, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x480C49, "NAKAYO Inc", "NAKAYO" }, { 0x00D0EC, "NAKAYO Inc", "NAKAYO" }, { 0xB0702D, "Apple, Inc.", "APPLE" }, { 0xD0C5F3, "Apple, Inc.", "APPLE" }, { 0x60F445, "Apple, Inc.", "APPLE" }, { 0x00B362, "Apple, Inc.", "APPLE" }, { 0xF86214, "Apple, Inc.", "APPLE" }, { 0xC0E54E, "ARIES Embedded GmbH", "ARIES-EMBEDDED" }, { 0x001D72, "Wistron Corporation", "WISTRON" }, { 0x0C73BE, "Dongguan Haimai Electronie Technology Co.,Ltd", "DONGGUAN-HAIMAI-ELECTRONIE" }, { 0x20780B, "Delta Faucet Company", "DELTA-FAUCET-COMPANY" }, { 0x24D51C, "Zhongtian broadband technology co., LTD ", "ZHONGTIAN-BROADBAND" }, { 0x28FECD, "Lemobile Information Technology (Beijing) Co., Ltd.", "LEMOBILE-INFORMATION-BEIJING" }, { 0x001992, "Adtran Inc", "ADTRAN" }, { 0x4C1694, "shenzhen sibituo Technology Co., Ltd", "SHENZHEN-SIBITUO" }, { 0x6C160E, "ShotTracker", "SHOTTRACKER" }, { 0x7C1015, "Brilliant Home Technology, Inc.", "BRILLIANT-HOME" }, { 0x4C7872, "Cav. Uff. Giacomo Cimberio S.p.A. ", "CAV-UFF-GIACOMO-CIMBERIO-S-P-A" }, { 0x5CAF06, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x78C1A7, "zte corporation", "ZTE" }, { 0x540384, "Hangkong Nano IC Technologies Co., Ltd", "HANGKONG-NANO-IC-TECHNOLOGIES" }, { 0x004BF3, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x28A24B, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x044E06, "Ericsson AB", "ERICSSON-AB" }, { 0x001BB5, "Cherry GmbH", "CHERRY" }, { 0x6014B3, "CyberTAN Technology Inc.", "CYBERTAN" }, { 0x602103, "I4VINE, INC", "I4VINE" }, { 0xB81DAA, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x407D0F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x3805AC, "Piller Group GmbH", "PILLER-GROUP" }, { 0xF8BBBF, "eero inc.", "EERO" }, { 0x000130, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x706DEC, "Wifi-soft LLC", "WIFI-SOFT-LLC" }, { 0xAC6B0F, "CADENCE DESIGN SYSTEMS INC", "CADENCE-DESIGN" }, { 0x1CA0D3, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x34D270, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0xCC82EB, "KYOCERA CORPORATION ", "KYOCERA" }, { 0x00BB3A, "Private", "PRIVATE" }, { 0xE0CB1D, "Private", "PRIVATE" }, { 0x84D6D0, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x5082D5, "Apple, Inc.", "APPLE" }, { 0x9C84BF, "Apple, Inc.", "APPLE" }, { 0x7894B4, "Sercomm Corporation.", "SERCOMM" }, { 0x000F17, "Insta Elektro GmbH", "INSTA-ELEKTRO" }, { 0x002365, "Insta Elektro GmbH", "INSTA-ELEKTRO" }, { 0xC4EEF5, "II-VI Incorporated", "II-VI-INCORPORATED" }, { 0xA41163, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x002CC8, "Cisco Systems, Inc", "CISCO" }, { 0x70AF24, "TP Vision Belgium NV", "TP-VISION-BELGIUM-NV" }, { 0x7CE97C, "ITEL MOBILE LIMITED", "ITEL-MOBILE" }, { 0x285F2F, "RNware Co.,Ltd.", "RNWARE" }, { 0x948BC1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4827EA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE0C0D1, "CK Telecom (Shenzhen) Limited", "CK-TELECOM-SHENZHEN" }, { 0x049573, "zte corporation", "ZTE" }, { 0x48BF6B, "Apple, Inc.", "APPLE" }, { 0x245BA7, "Apple, Inc.", "APPLE" }, { 0xBCA920, "Apple, Inc.", "APPLE" }, { 0xD055B2, "Integrated Device Technology (Malaysia) Sdn. Bhd.", "INTEGRATED-DEVICE-MALAYSIA-SDN-BHD" }, { 0xA49BF5, "Hybridserver Tec GmbH", "HYBRIDSERVER-TEC" }, { 0xB436E3, "KBVISION GROUP", "KBVISION-GROUP" }, { 0x488803, "ManTechnology Inc.", "MANTECHNOLOGY" }, { 0x7C6BF7, "NTI co., ltd.", "NTI" }, { 0x54E061, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xB47C9C, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0xE81367, "AIRSOUND Inc.", "AIRSOUND" }, { 0x64D154, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x0020DA, "Alcatel-Lucent Enterprise", "ALCATEL-LUCENT" }, { 0x345BBB, "GD Midea Air-Conditioning Equipment Co.,Ltd.", "GD-MIDEA-AIR-CONDITIONING-EQUIPMENT" }, { 0x34CE00, "XIAOMI Electronics,CO.,LTD", "XIAOMI-ELECTRONICS" }, { 0xF82F08, "Molex", "MOLEX" }, { 0x68262A, "SICHUAN TIANYI COMHEART TELECOMCO., LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x680235, "Konten Networks Inc.", "KONTEN-NETWORKS" }, { 0x3C678C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD06F82, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x844765, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA0C4A5, "SYGN HOUSE CO.,LTD", "SYGN-HOUSE" }, { 0x506787, "Planet Networks", "PLANET-NETWORKS" }, { 0xC83A6B, "Roku, Inc", "ROKU" }, { 0xB4C6F8, "Axilspot Communication", "AXILSPOT-COMMUNICATION" }, { 0xB83A08, "Tenda Technology Co.,Ltd.Dongguan branch", "TENDA-DONGGUAN-BRANCH" }, { 0x388C50, "LG Electronics", "LG-ELECTRONICS" }, { 0x50D37F, "Yu Fly Mikly Way Science and Technology Co., Ltd.", "YU-FLY-MIKLY-WAY-SCIENCE-AND" }, { 0xD8D866, "SHENZHEN TOZED TECHNOLOGIES CO.,LTD.", "SHENZHEN-TOZED-TECHNOLOGIES" }, { 0xF43E61, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x001FA4, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0x38AC3D, "Nephos Inc", "NEPHOS" }, { 0xA09347, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xC8F230, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x1C77F6, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xE44790, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x1C5A0B, "Tegile Systems", "TEGILE" }, { 0xD4503F, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xCC90E8, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0xD8C8E9, "Phicomm (Shanghai) Co., Ltd.", "PHICOMM-SHANGHAI" }, { 0x8425A4, "Tariox Limited", "TARIOX" }, { 0x88CC45, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x605317, "Sandstone Technologies", "SANDSTONE-TECHNOLOGIES" }, { 0x50338B, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x986C5C, "Jiangxi Gosun Guard Security Co.,Ltd", "JIANGXI-GOSUN-GUARD-SECURITY" }, { 0xF4FCB1, "JJ Corp", "JJ" }, { 0x543B30, "duagon AG", "DUAGON" }, { 0x60BA18, "nextLAP GmbH", "NEXTLAP" }, { 0x704CA5, "Fortinet, Inc.", "FORTINET" }, { 0x5C497D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE47DBD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x503DA1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5CF6DC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x380195, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC1485, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x40163B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x508569, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1077B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x88D50C, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x509A4C, "Dell Inc.", "DELL" }, { 0x00180A, "Cisco Meraki", "CISCO-MERAKI" }, { 0xAC2205, "Compal Broadband Networks, Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0x80A036, "Shanghai MXCHIP Information Technology Co., Ltd.", "SHANGHAI-MXCHIP-INFORMATION" }, { 0xD42C0F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8496D8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x80F503, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5CB066, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xC0C522, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE0B7B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x94877C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x407009, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF8EDA5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5465DE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x6CCA08, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5C8FE0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001675, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00D088, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0017EE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001180, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00909C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8096B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7CBFB1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0012C9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x984B4A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A77, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCC7D37, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0017E2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001784, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0016B5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xBCCAB5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000FCC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C7A8A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xACEC80, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015A3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015A4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x9C3426, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00211E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002210, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001FC4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001C12, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001CFB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024A0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002636, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE48399, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2CA17D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x04714B, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x309C23, "Micro-Star INTL CO., LTD.", "MICRO-STAR-INTL" }, { 0x8C395C, "Bit4id Srl", "BIT4ID-SRL" }, { 0x947BE7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C2617, "Oculus VR, LLC", "OCULUS-VR-LLC" }, { 0x98F7D7, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2C41A1, "Bose Corporation", "BOSE" }, { 0xC8DE51, "IntegraOptics", "INTEGRAOPTICS" }, { 0x182CB4, "Nectarsoft Co., Ltd.", "NECTARSOFT" }, { 0x14780B, "PerkinElmer Technologies GmbH & Co. KG", "PERKINELMER-TECHNOLOGIES" }, { 0x74DADA, "D-Link International", "D-LINK" }, { 0x4C910C, "Corporativo Lanix S.A. de C.V.", "CORPORATIVO-LANIX-DE-C-V" }, { 0xBCD713, "Owl Labs", "OWL-LABS" }, { 0xE8E1E1, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x98F2B3, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x30FE31, "Nokia", "NOKIA" }, { 0xBC1C81, "Sichuan iLink Technology Co., Ltd.", "SICHUAN-ILINK" }, { 0x703018, "Avaya Inc", "AVAYA" }, { 0xCCF954, "Avaya Inc", "AVAYA" }, { 0x581626, "Avaya Inc", "AVAYA" }, { 0xB4B017, "Avaya Inc", "AVAYA" }, { 0x64C354, "Avaya Inc", "AVAYA" }, { 0xF873A2, "Avaya Inc", "AVAYA" }, { 0x646A52, "Avaya Inc", "AVAYA" }, { 0x64A7DD, "Avaya Inc", "AVAYA" }, { 0x6CFA58, "Avaya Inc", "AVAYA" }, { 0x3475C7, "Avaya Inc", "AVAYA" }, { 0xC4BED4, "Avaya Inc", "AVAYA" }, { 0x000CAB, "Commend International GmbH", "COMMEND" }, { 0x78B28D, "Beijing Tengling Technology CO.Ltd ", "BEIJING-TENGLING" }, { 0x00EC0A, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xA86B7C, "SHENZHEN FENGLIAN TECHNOLOGY CO., LTD.", "SHENZHEN-FENGLIAN" }, { 0x1CDA27, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x70D923, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x9CA5C0, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xF430B9, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x943FC2, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0xA06A44, "Vizio, Inc", "VIZIO" }, { 0x2C9EEC, "Jabil Circuit Penang", "JABIL-CIRCUIT-PENANG" }, { 0xB44F96, "Zhejiang Xinzailing Technology co., ltd", "ZHEJIANG-XINZAILING" }, { 0xD822F4, "Avnet Silica", "AVNET-SILICA" }, { 0x58493B, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0xD083D4, "Xtel Wireless ApS", "XTEL-WIRELESS-APS" }, { 0x7CEB7F, "Dmet Products Corp.", "DMET-PRODUCTS" }, { 0x8C8580, "Smart Innovation LLC", "SMART-INNOVATION-LLC" }, { 0xFC5A1D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x287B09, "zte corporation", "ZTE" }, { 0x4859A4, "zte corporation", "ZTE" }, { 0x3894E0, "Syrotech Networks. Ltd.", "SYROTECH-NETWORKS" }, { 0x34F64B, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC4571F, "June Life Inc", "JUNE-LIFE" }, { 0x18204C, "Kummler+Matter AG", "KUMMLER+MATTER" }, { 0x740ABC, "LightwaveRF Technology Ltd", "LIGHTWAVERF" }, { 0xACED5C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x54BD79, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94F665, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xE0107F, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001392, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xD838FC, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x0CF4D5, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x743E2B, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xAC6706, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x7811DC, "XIAOMI Electronics,CO.,LTD", "XIAOMI-ELECTRONICS" }, { 0xD86C63, "Google, Inc.", "GOOGLE" }, { 0xD837BE, "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "SHENZHEN-GONGJIN-ELECTRONICS-LT" }, { 0xDC44B6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1007B6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF4939F, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x000C03, "HDMI Licensing, LLC", "HDMI-LICENSING-LLC" }, { 0xCC2F71, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF82819, "Liteon Technology Corporation", "LITEON" }, { 0xF4B520, "Biostar Microtech international corp.", "BIOSTAR-MICROTECH" }, { 0x9C93E4, "Private", "PRIVATE" }, { 0xD4B27A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF0F8F2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x341513, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x64CFD9, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x24B2DE, "Espressif Inc.", "ESPRESSIF" }, { 0x78D800, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x50E971, "Jibo, Inc.", "JIBO" }, { 0x50642B, "XIAOMI Electronics,CO.,LTD", "XIAOMI-ELECTRONICS" }, { 0x909D7D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x84A1D1, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x788102, "Sercomm Corporation.", "SERCOMM" }, { 0x783690, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x58A0CB, "TrackNet, Inc", "TRACKNET" }, { 0x3C7843, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xA47758, "Ningbo Freewings Technologies Co.,Ltd", "NINGBO-FREEWINGS-TECHNOLOGIES" }, { 0x586163, "Quantum Networks (SG) Pte. Ltd.", "QUANTUM-NETWORKS-SG-PTE" }, { 0x00051E, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x080088, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00010F, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x0014C9, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x200CC8, "NETGEAR", "NETGEAR" }, { 0xDCEF09, "NETGEAR", "NETGEAR" }, { 0xA06391, "NETGEAR", "NETGEAR" }, { 0xA040A0, "NETGEAR", "NETGEAR" }, { 0x8C3BAD, "NETGEAR", "NETGEAR" }, { 0x001E2A, "NETGEAR", "NETGEAR" }, { 0x00184D, "NETGEAR", "NETGEAR" }, { 0x0026F2, "NETGEAR", "NETGEAR" }, { 0x30469A, "NETGEAR", "NETGEAR" }, { 0x4C60DE, "NETGEAR", "NETGEAR" }, { 0xE8FCAF, "NETGEAR", "NETGEAR" }, { 0x00197F, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0xE4F4C6, "NETGEAR", "NETGEAR" }, { 0x005079, "Private", "PRIVATE" }, { 0xF86465, "Anova Applied Electronics, Inc.", "ANOVA-APPLIED-ELECTRONICS" }, { 0xA830AD, "Weifang GoerTek Technology Co.,Ltd. ", "WEIFANG-GOERTEK" }, { 0x70E1FD, "FLEXTRONICS", "FLEXTRONICS" }, { 0x001D44, "Krohne", "KROHNE" }, { 0xD4D2E5, "BKAV Corporation", "BKAV" }, { 0xC06D1A, "Tianjin Henxinhuifeng Technology Co.,Ltd.", "TIANJIN-HENXINHUIFENG" }, { 0xE470B8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3432E6, "Panasonic Industrial Devices Europe GmbH", "PANASONIC-INDUSTRIAL-DEVICES-EUROPE" }, { 0x40A3CC, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB019C6, "Apple, Inc.", "APPLE" }, { 0x58E28F, "Apple, Inc.", "APPLE" }, { 0xAC1F74, "Apple, Inc.", "APPLE" }, { 0x9C305B, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xFCE557, "Nokia Corporation", "NOKIA" }, { 0x303855, "Nokia Corporation", "NOKIA" }, { 0x8C4500, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x00289F, "Semptian Co., Ltd.", "SEMPTIAN" }, { 0x6C7660, "KYOCERA CORPORATION ", "KYOCERA" }, { 0x104B46, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 0x903DBD, "SECURE METERS LIMITED", "SECURE-METERS" }, { 0x384F49, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xA491B1, "Technicolor", "TECHNICOLOR" }, { 0x8CD48E, "ITEL MOBILE LIMITED", "ITEL-MOBILE" }, { 0x642B8A, "ALL BEST Industrial Co., Ltd.", "ALL-BEST-INDUSTRIAL" }, { 0x68ECC5, "Intel Corporate", "INTEL-CORPORATE" }, { 0xCC9891, "Cisco Systems, Inc", "CISCO" }, { 0x1C7022, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x189BA5, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x947EB9, "National Narrowband Network Communications Pty Ltd", "NATIONAL-NARROWBAND-NETWORK-COMMUNICATION-PTY" }, { 0x4CBD8F, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xB4D64E, "Caldero Limited", "CALDERO" }, { 0xF89DBB, "Tintri", "TINTRI" }, { 0xD4389C, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x104963, "HARTING K.K.", "HARTING-K-K" }, { 0x646E69, "Liteon Technology Corporation", "LITEON" }, { 0xBC3D85, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB0E17E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x74D21D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x44C874, "China Mobile Group Device Co.,Ltd.", "CHINA-MOBILE-GROUP-DEVICE" }, { 0x98EF9B, "OHSUNG", "OHSUNG" }, { 0x84E327, "TAILYN TECHNOLOGIES INC", "TAILYN-TECHNOLOGIES" }, { 0x7091F3, "Universal Electronics, Inc.", "UNIVERSAL-ELECTRONICS" }, { 0xF4E204, "Traqueur", "TRAQUEUR" }, { 0x68C63A, "Espressif Inc.", "ESPRESSIF" }, { 0x3456FE, "Cisco Meraki", "CISCO-MERAKI" }, { 0x08674E, "Hisense broadband multimedia technology Co.,Ltd", "HISENSE-BROADBAND-MULTIMEDIA" }, { 0xF08CFB, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xF0407B, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xBCC00F, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x6405E9, "Shenzhen WayOS Technology Crop., Ltd.", "SHENZHEN-WAYOS-CROP" }, { 0xB8C716, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x50A83A, "S Mobile Devices Limited", "S-MOBILE-DEVICES" }, { 0xEC8AC7, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xE084F3, "High Grade Controls Corporation", "HIGH-GRADE-CONTROLS" }, { 0x74BBD3, "Shenzhen xeme Communication Co., Ltd.", "SHENZHEN-XEME-COMMUNICATION" }, { 0xD8ED1C, "Magna Technology SL", "MAGNA-SL" }, { 0x78617C, "MITSUMI ELECTRIC CO.,LTD.", "MITSUMI-ELECTRIC" }, { 0x00A096, "MITSUMI ELECTRIC CO.,LTD.", "MITSUMI-ELECTRIC" }, { 0x525400, "possible QEMU VM", "QEMU-VIRTUAL" }, }; ipv6calc-1.0.0/databases/ieee-oui36/000077500000000000000000000000001312366535500170315ustar00rootroot00000000000000ipv6calc-1.0.0/databases/ieee-oui36/Makefile000066400000000000000000000014731312366535500204760ustar00rootroot00000000000000# Project : ipv6calc/databases/ieee-oui36 # File : Makefile # Version : $Id: 70cf7de2bca635d96bbcc2e6246eaafeb603de7f $ # Copyright : 2013-2013 by Peter Bieringer # # Information: # Makefile for ieee-oui36 FILE = oui36.txt BASEURL = http://standards.ieee.org/develop/regauth/oui36/ FILE_H = dbieee_oui36.h TYPE = oui36 all: test -f $(FILE_H) || ${MAKE} update install: echo "Nothing to do" create: ../tools/create_ieee_headerfile.pl -t $(TYPE) -i $(FILE) -o $(FILE_H) update: echo "Download new version of file" wget $(BASEURL)$(FILE) --timestamp ${MAKE} create updateclean: echo "Remove header file" rm -f $(FILE_H) ${MAKE} distclean distclean: echo "Remove database file" rm -f $(FILE) autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/ieee-oui36/README000066400000000000000000000002701312366535500177100ustar00rootroot00000000000000$Id: 03ebe5fc246f10681b21d9c8da28d558b5fdd0b9 $ OUI36 database: URL: http://standards.ieee.org/develop/regauth/oui36/oui36.txt File will be retrieved on-the-fly during "make update" ipv6calc-1.0.0/databases/ieee-oui36/dbieee_oui36.h000066400000000000000000005033731312366535500214570ustar00rootroot00000000000000/* * Project : ipv6calc * File : dbieee_oui36.h * Version : $Id: b2c6a1efac4c07da99991b09fa00776d89582833 $ * Generated : Sun Jun 25 09:30:23 2017 * Data copyright: IEEE * * Information: * Additional header file for libipv6calc_db_wrapper_BuiltIn.c */ /*@unused@*/ static const char* libieee_oui36_status __attribute__ ((__unused__)) = "OUI36/20170625"; static const s_ieee_oui36 libieee_oui36[] = { { 0x70B3D5, 0x913000, 0x913FFF, "Shenzhen Riitek Technology Co.,Ltd", "SHENZHEN-RIITEK" }, { 0x70B3D5, 0x88A000, 0x88AFFF, "Perceptics, LLC", "PERCEPTICS-LLC" }, { 0x70B3D5, 0x001000, 0x001FFF, "SOREDI touch systems GmbH", "SOREDI-TOUCH" }, { 0x70B3D5, 0xD70000, 0xD70FFF, "Rational Production srl Unipersonale", "RATIONAL-PRODUCTION-SRL-UNIPERSONALE" }, { 0x70B3D5, 0x426000, 0x426FFF, "Zehnder Group Nederland", "ZEHNDER-GROUP-NEDERLAND" }, { 0x70B3D5, 0x266000, 0x266FFF, "Spectra Displays Ltd", "SPECTRA-DISPLAYS" }, { 0x70B3D5, 0xD38000, 0xD38FFF, "Vista Research, Inc.", "VISTA-RESEARCH" }, { 0x70B3D5, 0x996000, 0x996FFF, "XpertSea Solutions inc.", "XPERTSEA-SOLUTIONS" }, { 0x70B3D5, 0x605000, 0x605FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x16E000, 0x16EFFF, "Jemac Sweden AB", "JEMAC-SWEDEN-AB" }, { 0x70B3D5, 0x671000, 0x671FFF, "Sea Shell Corporation", "SEA-SHELL" }, { 0x70B3D5, 0x7EC000, 0x7ECFFF, "GRIDSMART Technologies", "GRIDSMART-TECHNOLOGIES" }, { 0x70B3D5, 0xAF9000, 0xAF9FFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xD59000, 0xD59FFF, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x70B3D5, 0xA3C000, 0xA3CFFF, "Wave Music Ltd", "WAVE-MUSIC" }, { 0x70B3D5, 0xFC1000, 0xFC1FFF, "InDiCor", "INDICOR" }, { 0x70B3D5, 0xBB2000, 0xBB2FFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x70B3D5, 0x14F000, 0x14FFFF, "Mobile Devices Unlimited", "MOBILE-DEVICES-UNLIMITED" }, { 0x70B3D5, 0x891000, 0x891FFF, "neocontrol soluções em automação", "NEOCONTROL-SOLUçõES-EM-AUTOMAçãO" }, { 0x70B3D5, 0x01E000, 0x01EFFF, "ePOINT Embedded Computing Limited", "EPOINT-EMBEDDED-COMPUTING" }, { 0x70B3D5, 0xC9D000, 0xC9DFFF, "APG Cash Drawer", "APG-CASH-DRAWER" }, { 0x70B3D5, 0x34C000, 0x34CFFF, "GLT Exports Ltd", "GLT-EXPORTS" }, { 0x70B3D5, 0xB51000, 0xB51FFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xD29000, 0xD29FFF, "Sportzcast", "SPORTZCAST" }, { 0x70B3D5, 0x13B000, 0x13BFFF, "Sienna Corporation", "SIENNA" }, { 0x70B3D5, 0x37F000, 0x37FFFF, "IDS Innomic GmbH", "IDS-INNOMIC" }, { 0x70B3D5, 0x694000, 0x694FFF, "MoviTHERM", "MOVITHERM" }, { 0x70B3D5, 0xB28000, 0xB28FFF, "HUSTY M.Styczen J.Hupert sp.j.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x70B3D5, 0x14E000, 0x14EFFF, "Innosonix GmbH", "INNOSONIX" }, { 0x70B3D5, 0x185000, 0x185FFF, "R&D Gran-System-S LLC", "R-D-GRAN-SYSTEM-S-LLC" }, { 0x70B3D5, 0x5B1000, 0x5B1FFF, "EPD Electronics", "EPD-ELECTRONICS" }, { 0x70B3D5, 0xEAE000, 0xEAEFFF, "Orlaco Products B.V.", "ORLACO-PRODUCTS" }, { 0x70B3D5, 0x57D000, 0x57DFFF, "WICOM1 GmbH", "WICOM1" }, { 0x70B3D5, 0xE77000, 0xE77FFF, "OPTIX JSC", "OPTIX-JSC" }, { 0x70B3D5, 0x740000, 0x740FFF, "Prisma Telecom Testing Srl", "PRISMA-TELECOM-TESTING-SRL" }, { 0x70B3D5, 0x84E000, 0x84EFFF, "Chromalox, Inc.", "CHROMALOX" }, { 0x70B3D5, 0x817000, 0x817FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x43B000, 0x43BFFF, "Kalycito Infotech Private Limited", "KALYCITO-INFOTECH-PRIVATE" }, { 0x70B3D5, 0xC88000, 0xC88FFF, "SINED srl", "SINED-SRL" }, { 0x70B3D5, 0xCD6000, 0xCD6FFF, "VideoRay LLC", "VIDEORAY-LLC" }, { 0x70B3D5, 0xA1D000, 0xA1DFFF, "Fluid Components International", "FLUID-COMPONENTS" }, { 0x70B3D5, 0x079000, 0x079FFF, "CheckBill Co,Ltd.", "CHECKBILL" }, { 0x70B3D5, 0x8FF000, 0x8FFFFF, "IMST GmbH", "IMST" }, { 0x70B3D5, 0xDC0000, 0xDC0FFF, "ATEME", "ATEME" }, { 0x70B3D5, 0xF79000, 0xF79FFF, "Firehose Labs, Inc.", "FIREHOSE-LABS" }, { 0x70B3D5, 0x404000, 0x404FFF, "RANIX,Inc.", "RANIX" }, { 0x70B3D5, 0x52D000, 0x52DFFF, "Tanaka Electric Industry Co., Ltd.", "TANAKA-ELECTRIC-INDUSTRY" }, { 0x70B3D5, 0xBE5000, 0xBE5FFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x70B3D5, 0xD90000, 0xD90FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x45F000, 0x45FFFF, "Cloud4Wi", "CLOUD4WI" }, { 0x70B3D5, 0x35E000, 0x35EFFF, "EIDOS s.p.a.", "EIDOS-S-P-A" }, { 0x70B3D5, 0xF96000, 0xF96FFF, "Ecologicsense", "ECOLOGICSENSE" }, { 0x70B3D5, 0x0D8000, 0x0D8FFF, "Laser Imagineering GmbH", "LASER-IMAGINEERING" }, { 0x70B3D5, 0x7E4000, 0x7E4FFF, "C21 Systems Ltd", "C21" }, { 0x70B3D5, 0x995000, 0x995FFF, "LayTec AG", "LAYTEC" }, { 0x70B3D5, 0x957000, 0x957FFF, "EA Elektroautomatik GmbH & Co. KG", "EA-ELEKTROAUTOMATIK" }, { 0x70B3D5, 0x4DD000, 0x4DDFFF, "Road-iQ, LLC", "ROAD-IQ-LLC" }, { 0x70B3D5, 0xFBA000, 0xFBAFFF, "Apogee Applied Research, Inc.", "APOGEE-APPLIED-RESEARCH" }, { 0x70B3D5, 0x63B000, 0x63BFFF, "Lazer Safe Pty Ltd", "LAZER-SAFE-PTY" }, { 0x70B3D5, 0x6D1000, 0x6D1FFF, "Visual Engineering Technologies Ltd", "VISUAL-ENGINEERING-TECHNOLOGIES" }, { 0x70B3D5, 0x0DF000, 0x0DFFFF, "B.E.A. sa", "B-E-A" }, { 0x70B3D5, 0x342000, 0x342FFF, "Solectrix", "SOLECTRIX" }, { 0x70B3D5, 0xE20000, 0xE20FFF, "Signature Control Systems, LLC.", "SIGNATURE-CONTROL-LLC" }, { 0x70B3D5, 0x538000, 0x538FFF, "sydetion UG (h.b.)", "SYDETION-UG-H-B" }, { 0x70B3D5, 0x2DC000, 0x2DCFFF, "Bolide Technology Group, Inc.", "BOLIDE-GROUP" }, { 0x70B3D5, 0xB85000, 0xB85FFF, "Fenotech Inc.", "FENOTECH" }, { 0x70B3D5, 0x2EE000, 0x2EEFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x1E5000, 0x1E5FFF, "VendNovation LLC", "VENDNOVATION-LLC" }, { 0x70B3D5, 0xFE7000, 0xFE7FFF, "VEILUX INC.", "VEILUX" }, { 0x70B3D5, 0x08F000, 0x08FFFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0xE55000, 0xE55FFF, "BELT S.r.l.", "BELT-S-R-L" }, { 0x70B3D5, 0x88F000, 0x88FFFF, "Quaesta Instruments, LLC", "QUAESTA-INSTRUMENTS-LLC" }, { 0x70B3D5, 0x835000, 0x835FFF, "CommBox P/L", "COMMBOX-P/L" }, { 0x70B3D5, 0x730000, 0x730FFF, "Videogenix", "VIDEOGENIX" }, { 0x70B3D5, 0x5A9000, 0x5A9FFF, "Bunka Shutter Co., Ltd.", "BUNKA-SHUTTER" }, { 0x70B3D5, 0x714000, 0x714FFF, "Alturna Networks", "ALTURNA-NETWORKS" }, { 0x70B3D5, 0x2A7000, 0x2A7FFF, "Plasmability, LLC", "PLASMABILITY-LLC" }, { 0x70B3D5, 0xD7A000, 0xD7AFFF, "Speedifi Inc", "SPEEDIFI" }, { 0x70B3D5, 0x737000, 0x737FFF, "SD Biosensor", "SD-BIOSENSOR" }, { 0x70B3D5, 0x6DA000, 0x6DAFFF, "Enovative Networks, Inc.", "ENOVATIVE-NETWORKS" }, { 0x70B3D5, 0x0D7000, 0x0D7FFF, "Russian Telecom Equipment Company", "RUSSIAN-TELECOM-EQUIPMENT-COMPANY" }, { 0x70B3D5, 0x46F000, 0x46FFFF, "serva transport systems GmbH", "SERVA-TRANSPORT" }, { 0x70B3D5, 0xA00000, 0xA00FFF, "ATX NETWORKS LTD", "ATX-NETWORKS" }, { 0x70B3D5, 0x1AF000, 0x1AFFFF, "Teenage Engineering AB", "TEENAGE-ENGINEERING-AB" }, { 0x70B3D5, 0x5C8000, 0x5C8FFF, "YUYAMA MFG Co.,Ltd", "YUYAMA-MFG" }, { 0x70B3D5, 0xD9C000, 0xD9CFFF, "Subinitial LLC", "SUBINITIAL-LLC" }, { 0x70B3D5, 0x923000, 0x923FFF, "eumig industrie-tv GmbH", "EUMIG-INDUSTRIE-TV" }, { 0x70B3D5, 0x78B000, 0x78BFFF, "Jingtu Printing Systems Co., Ltd", "JINGTU-PRINTING" }, { 0x70B3D5, 0x4BB000, 0x4BBFFF, "Plazma-T", "PLAZMA-T" }, { 0x70B3D5, 0xDF2000, 0xDF2FFF, "AML", "AML" }, { 0x70B3D5, 0xCB8000, 0xCB8FFF, "Verti Tecnologia", "VERTI-TECNOLOGIA" }, { 0x70B3D5, 0xA97000, 0xA97FFF, "Bizwerks, LLC", "BIZWERKS-LLC" }, { 0x70B3D5, 0x417000, 0x417FFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x70B3D5, 0xCF6000, 0xCF6FFF, "Tornado Modular Systems", "TORNADO-MODULAR" }, { 0x70B3D5, 0x91E000, 0x91EFFF, "Creotech Instruments S.A.", "CREOTECH-INSTRUMENTS" }, { 0x70B3D5, 0x775000, 0x775FFF, "Sonel S.A.", "SONEL" }, { 0x70B3D5, 0x5FD000, 0x5FDFFF, "Windar Photonics", "WINDAR-PHOTONICS" }, { 0x70B3D5, 0x078000, 0x078FFF, "OrbiWise SA", "ORBIWISE" }, { 0x70B3D5, 0xB78000, 0xB78FFF, "HOERMANN GmbH", "HOERMANN" }, { 0x70B3D5, 0xD61000, 0xD61FFF, "VITEC", "VITEC" }, { 0x70B3D5, 0xF78000, 0xF78FFF, "Manvish eTech Pvt. Ltd.", "MANVISH-ETECH-PVT" }, { 0x70B3D5, 0x146000, 0x146FFF, "3City Electronics", "3CITY-ELECTRONICS" }, { 0x70B3D5, 0x15F000, 0x15FFFF, "SAVRONİK ELEKTRONİK", "SAVRONİK-ELEKTRONİK" }, { 0x70B3D5, 0x4DC000, 0x4DCFFF, "JK DEVICE CORPORATION", "JK-DEVICE" }, { 0x70B3D5, 0x341000, 0x341FFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x875000, 0x875FFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x70B3D5, 0x6A5000, 0x6A5FFF, "Akenori PTE LTD", "AKENORI-PTE" }, { 0x70B3D5, 0x6E0000, 0x6E0FFF, "ABB SPA - DMPC", "ABB-SPA---DMPC" }, { 0x70B3D5, 0xC5B000, 0xC5BFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x70B3D5, 0x030000, 0x030FFF, "Tresent Technologies", "TRESENT-TECHNOLOGIES" }, { 0x70B3D5, 0x7CD000, 0x7CDFFF, "Molekuler Goruntuleme A.S.", "MOLEKULER-GORUNTULEME-A-S" }, { 0x70B3D5, 0x5EA000, 0x5EAFFF, "KYS,INC", "KYS" }, { 0x70B3D5, 0x7B3000, 0x7B3FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0xC39000, 0xC39FFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x70B3D5, 0x660000, 0x660FFF, "Smart Service Technologies CO., LTD", "SMART-SERVICE-TECHNOLOGIES" }, { 0x70B3D5, 0xEFE000, 0xEFEFFF, "MEIDEN SYSTEM SOLUTIONS", "MEIDEN-SYSTEM-SOLUTIONS" }, { 0x70B3D5, 0xC03000, 0xC03FFF, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0x70B3D5, 0x0FF000, 0x0FFFFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x70B3D5, 0x502000, 0x502FFF, "Glidewell Laboratories", "GLIDEWELL-LABORATORIES" }, { 0x70B3D5, 0x6F8000, 0x6F8FFF, "SENSEON Corporation", "SENSEON" }, { 0x70B3D5, 0x35D000, 0x35DFFF, "Fresh Idea Factory BV", "FRESH-IDEA-FACTORY" }, { 0x70B3D5, 0x344000, 0x344FFF, "IHI Inspection & Instrumentation Co., Ltd.", "IHI-INSPECTION-INSTRUMENTATION" }, { 0x70B3D5, 0x3DB000, 0x3DBFFF, "KST technology", "KST" }, { 0x70B3D5, 0x4CD000, 0x4CDFFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x70B3D5, 0x22E000, 0x22EFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xEA3000, 0xEA3FFF, "Gridless Power Corperation", "GRIDLESS-POWER-CORPERATION" }, { 0x70B3D5, 0xA5A000, 0xA5AFFF, "RCS Energy Management Ltd", "RCS-ENERGY-MANAGEMENT" }, { 0x70B3D5, 0x13A000, 0x13AFFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x75D000, 0x75DFFF, "Nanjing Magewell Electronics Co., Ltd.", "NANJING-MAGEWELL-ELECTRONICS" }, { 0x70B3D5, 0x0EC000, 0x0ECFFF, "ACS MOTION CONTROL", "ACS-MOTION-CONTROL" }, { 0x70B3D5, 0x1F5000, 0x1F5FFF, "Martec S.p.A.", "MARTEC-S-P-A" }, { 0x70B3D5, 0x22B000, 0x22BFFF, "VITEC", "VITEC" }, { 0x70B3D5, 0x708000, 0x708FFF, "IBM Research GmbH", "IBM-RESEARCH" }, { 0x70B3D5, 0xC81000, 0xC81FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x70B3D5, 0xFA1000, 0xFA1FFF, "BBI Engineering, Inc.", "BBI-ENGINEERING" }, { 0x70B3D5, 0x60C000, 0x60CFFF, "IST ElektronikgesmbH", "IST-ELEKTRONIKGESMBH" }, { 0x70B3D5, 0x936000, 0x936FFF, "FARO TECHNOLOGIES, INC.", "FARO-TECHNOLOGIES" }, { 0x70B3D5, 0xEF2000, 0xEF2FFF, "Kongsberg Intergrated Tactical Systems", "KONGSBERG-INTERGRATED-TACTICAL" }, { 0x70B3D5, 0xC58000, 0xC58FFF, "RMI Laser LLC", "RMI-LASER-LLC" }, { 0x70B3D5, 0x507000, 0x507FFF, "Human Oriented Technology, Inc.", "HUMAN-ORIENTED" }, { 0x70B3D5, 0xBC6000, 0xBC6FFF, "Hatteland Display AS", "HATTELAND-DISPLAY-AS" }, { 0x70B3D5, 0x55D000, 0x55DFFF, "LunaNexus Inc", "LUNANEXUS" }, { 0x70B3D5, 0xDF3000, 0xDF3FFF, "SPC Bioclinicum", "SPC-BIOCLINICUM" }, { 0x70B3D5, 0xCF1000, 0xCF1FFF, "LightDec GmbH & Co. KG", "LIGHTDEC" }, { 0x70B3D5, 0x8DC000, 0x8DCFFF, "Niveo International BV", "NIVEO" }, { 0x70B3D5, 0xD1E000, 0xD1EFFF, "Houston Radar LLC", "HOUSTON-RADAR-LLC" }, { 0x70B3D5, 0x54D000, 0x54DFFF, "Qingdao Haitian Weiye Automation Control System Co., Ltd", "QINGDAO-HAITIAN-WEIYE-AUTOMATION-CONTROL-SYSTEM" }, { 0x70B3D5, 0xA15000, 0xA15FFF, "Intercore GmbH", "INTERCORE" }, { 0x70B3D5, 0x45E000, 0x45EFFF, "eSOL Co.,Ltd.", "ESOL" }, { 0x70B3D5, 0xB88000, 0xB88FFF, "ARP Corporation", "ARP" }, { 0x70B3D5, 0xBBE000, 0xBBEFFF, "Sunrise Systems Electronics Co. Inc.", "SUNRISE-ELECTRONICS" }, { 0x70B3D5, 0xCBC000, 0xCBCFFF, "Procon Electronics Pty Ltd", "PROCON-ELECTRONICS-PTY" }, { 0x70B3D5, 0x2DA000, 0x2DAFFF, "Skywave Networks Private Limited", "SKYWAVE-NETWORKS-PRIVATE" }, { 0x70B3D5, 0xB08000, 0xB08FFF, "Secuinfo Co. Ltd", "SECUINFO" }, { 0x70B3D5, 0x33C000, 0x33CFFF, "Videri Inc.", "VIDERI" }, { 0x70B3D5, 0x3E5000, 0x3E5FFF, "ATEME", "ATEME" }, { 0x70B3D5, 0xFC5000, 0xFC5FFF, "Eltwin A/S", "ELTWIN-A/S" }, { 0x70B3D5, 0xECF000, 0xECFFFF, "Ipitek", "IPITEK" }, { 0x70B3D5, 0x099000, 0x099FFF, "Schwer+Kopka GmbH", "SCHWER+KOPKA" }, { 0x70B3D5, 0x7E7000, 0x7E7FFF, "Atessa, Inc.", "ATESSA" }, { 0x70B3D5, 0x39B000, 0x39BFFF, "IROC AB", "IROC-AB" }, { 0x70B3D5, 0x3CE000, 0x3CEFFF, "Aditec GmbH", "ADITEC" }, { 0x70B3D5, 0x190000, 0x190FFF, "Fantom Wireless, Inc.", "FANTOM-WIRELESS" }, { 0x70B3D5, 0x6B6000, 0x6B6FFF, "INRADIOS GmbH", "INRADIOS" }, { 0x70B3D5, 0x29D000, 0x29DFFF, "XTech2 SIA", "XTECH2-SIA" }, { 0x70B3D5, 0x814000, 0x814FFF, "Ingenieurbuero SOMTRONIK", "INGENIEURBUERO-SOMTRONIK" }, { 0x70B3D5, 0x42F000, 0x42FFFF, "SINTOKOGIO, LTD", "SINTOKOGIO" }, { 0x70B3D5, 0x702000, 0x702FFF, "Sensor Highway Ltd", "SENSOR-HIGHWAY" }, { 0x70B3D5, 0x0E0000, 0x0E0FFF, "PLCiS", "PLCIS" }, { 0x70B3D5, 0xEDC000, 0xEDCFFF, "J.D. Koftinoff Software, Ltd.", "J-D-KOFTINOFF-SOFTWARE" }, { 0x001BC5, 0x0C9000, 0x0C9FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x0C8000, 0x0C8FFF, "Dialine", "DIALINE" }, { 0x70B3D5, 0x51E000, 0x51EFFF, "Fundación Cardiovascular de Colombia", "FUNDACIóN-CARDIOVASCULAR-DE-COLOMBIA" }, { 0x70B3D5, 0xEB0000, 0xEB0FFF, "Nautel Limted", "NAUTEL-LIMTED" }, { 0x70B3D5, 0x625000, 0x625FFF, "VX Instruments GmbH", "VX-INSTRUMENTS" }, { 0x70B3D5, 0xD86000, 0xD86FFF, "WPGSYS Pte Ltd", "WPGSYS-PTE" }, { 0x70B3D5, 0x4C8000, 0x4C8FFF, "Hosokawa Micron Powder Systems", "HOSOKAWA-MICRON-POWDER" }, { 0x001BC5, 0x0B4000, 0x0B4FFF, "COBAN SRL", "COBAN-SRL" }, { 0x001BC5, 0x0AE000, 0x0AEFFF, "Techlan Reti s.r.l.", "TECHLAN-RETI-S-R-L" }, { 0x001BC5, 0x0C2000, 0x0C2FFF, "TechSolutions A/S", "TECHSOLUTIONS-A/S" }, { 0x001BC5, 0x0BF000, 0x0BFFFF, "TN Core Co.,Ltd.", "TN-CORE" }, { 0x001BC5, 0x0BE000, 0x0BEFFF, "YESpay International Ltd", "YESPAY" }, { 0x001BC5, 0x0B9000, 0x0B9FFF, "Denki Kogyo Company, Limited", "DENKI-KOGYO-COMPANY" }, { 0x001BC5, 0x0B8000, 0x0B8FFF, "Private", "PRIVATE" }, { 0x001BC5, 0x0B5000, 0x0B5FFF, "Exibea AB", "EXIBEA-AB" }, { 0x001BC5, 0x0C3000, 0x0C3FFF, "inomatic GmbH", "INOMATIC" }, { 0x001BC5, 0x0AF000, 0x0AFFFF, "Enerwise Solutions Ltd.", "ENERWISE-SOLUTIONS" }, { 0x001BC5, 0x0A5000, 0x0A5FFF, "Tesla Controls", "TESLA-CONTROLS" }, { 0x001BC5, 0x0A0000, 0x0A0FFF, "HomerSoft sp. z o.o.", "HOMERSOFT-SP-Z-O-O" }, { 0x001BC5, 0x09F000, 0x09FFFF, "ENTE Sp. z o.o.", "ENTE-SP-Z-O-O" }, { 0x001BC5, 0x0AB000, 0x0ABFFF, "Private", "PRIVATE" }, { 0x001BC5, 0x0AA000, 0x0AAFFF, "Senceive Ltd", "SENCEIVE" }, { 0x001BC5, 0x0A4000, 0x0A4FFF, "RADMOR S.A.", "RADMOR" }, { 0x001BC5, 0x09A000, 0x09AFFF, "Shenzhen Guang Lian Zhi Tong Limited", "SHENZHEN-GUANG-LIAN-ZHI-TONG" }, { 0x001BC5, 0x099000, 0x099FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x098000, 0x098FFF, "Cubic Systems, Inc.", "CUBIC" }, { 0x001BC5, 0x096000, 0x096FFF, "Sanstreak Corp.", "SANSTREAK" }, { 0x001BC5, 0x095000, 0x095FFF, "PREVAC sp. z o.o.", "PREVAC-SP-Z-O-O" }, { 0x001BC5, 0x08F000, 0x08FFFF, "Unilever R&D", "UNILEVER-R-AMP-D" }, { 0x001BC5, 0x08E000, 0x08EFFF, "TrendPoint Systems", "TRENDPOINT" }, { 0x001BC5, 0x08B000, 0x08BFFF, "Nistica", "NISTICA" }, { 0x001BC5, 0x08C000, 0x08CFFF, "Triax A/S", "TRIAX-A/S" }, { 0x001BC5, 0x090000, 0x090FFF, "Seven Solutions S.L", "SEVEN-SOLUTIONS-S-L" }, { 0x001BC5, 0x07D000, 0x07DFFF, "Greatcom AG", "GREATCOM" }, { 0x001BC5, 0x079000, 0x079FFF, "HPI High Pressure Instrumentation GmbH", "HPI-HIGH-PRESSURE-INSTRUMENTATION" }, { 0x001BC5, 0x083000, 0x083FFF, "DIWEL", "DIWEL" }, { 0x001BC5, 0x065000, 0x065FFF, "Plair Media Inc.", "PLAIR-MEDIA" }, { 0x001BC5, 0x06F000, 0x06FFFF, "LLC Emzior", "LLC-EMZIOR" }, { 0x001BC5, 0x073000, 0x073FFF, "tado GmbH", "TADO" }, { 0x001BC5, 0x069000, 0x069FFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x001BC5, 0x051000, 0x051FFF, "QQ Navigation AB", "QQ-NAVIGATION-AB" }, { 0x001BC5, 0x05F000, 0x05FFFF, "Klingenthaler Musikelektronik GmbH", "KLINGENTHALER-MUSIKELEKTRONIK" }, { 0x001BC5, 0x05B000, 0x05BFFF, "konzeptpark GmbH", "KONZEPTPARK" }, { 0x001BC5, 0x055000, 0x055FFF, "LUMIPLAN TRANSPORT", "LUMIPLAN-TRANSPORT" }, { 0x001BC5, 0x047000, 0x047FFF, "PT. Amanindo Nusapadu", "PT-AMANINDO-NUSAPADU" }, { 0x001BC5, 0x04B000, 0x04BFFF, "Silicon Controls", "SILICON-CONTROLS" }, { 0x001BC5, 0x041000, 0x041FFF, "DesignA Electronics Limited", "DESIGNA-ELECTRONICS" }, { 0x001BC5, 0x03D000, 0x03DFFF, "rioxo GmbH", "RIOXO" }, { 0x001BC5, 0x03C000, 0x03CFFF, "Xiphos Systems Corp.", "XIPHOS" }, { 0x001BC5, 0x037000, 0x037FFF, "ITW Reyflex North America", "ITW-REYFLEX-NORTH-AMERICA" }, { 0x001BC5, 0x033000, 0x033FFF, "JE Suunnittelu Oy", "JE-SUUNNITTELU-OY" }, { 0x001BC5, 0x032000, 0x032FFF, "Osborne Coinage Co", "OSBORNE-COINAGE" }, { 0x001BC5, 0x036000, 0x036FFF, "LOMAR SRL", "LOMAR-SRL" }, { 0x001BC5, 0x035000, 0x035FFF, "RTLS Ltd.", "RTLS" }, { 0x001BC5, 0x02D000, 0x02DFFF, "DDTRONIK Dariusz Dowgiert", "DDTRONIK-DARIUSZ-DOWGIERT" }, { 0x001BC5, 0x02C000, 0x02CFFF, "Care Everywhere LLC", "CARE-EVERYWHERE-LLC" }, { 0x001BC5, 0x02B000, 0x02BFFF, "Saturn South Pty Ltd", "SATURN-SOUTH-PTY" }, { 0x001BC5, 0x029000, 0x029FFF, "2 FRANCE MARINE", "2-FRANCE-MARINE" }, { 0x001BC5, 0x028000, 0x028FFF, "STECHWIN.CO.LTD.", "STECHWIN" }, { 0x001BC5, 0x017000, 0x017FFF, "cPacket Networks", "CPACKET-NETWORKS" }, { 0x001BC5, 0x00E000, 0x00EFFF, "Vigor Electric Corp", "VIGOR-ELECTRIC" }, { 0x001BC5, 0x013000, 0x013FFF, "Zamir Recognition Systems Ltd.", "ZAMIR-RECOGNITION" }, { 0x001BC5, 0x014000, 0x014FFF, "Private", "PRIVATE" }, { 0x001BC5, 0x009000, 0x009FFF, "Solomon Systech Pte Ltd", "SOLOMON-SYSTECH-PTE" }, { 0x001BC5, 0x00A000, 0x00AFFF, "Mercury HMI Ltd", "MERCURY-HMI" }, { 0x001BC5, 0x00D000, 0x00DFFF, "Advanced Scientific Concepts, Inc.", "ADVANCED-SCIENTIFIC-CONCEPTS" }, { 0x001BC5, 0x004000, 0x004FFF, "Intellvisions Software Ltd", "INTELLVISIONS-SOFTWARE" }, { 0x001BC5, 0x003000, 0x003FFF, "MicroSigns Technologies Inc", "MICROSIGNS-TECHNOLOGIES" }, { 0x001BC5, 0x000000, 0x000FFF, "Converging Systems Inc.", "CONVERGING" }, { 0x70B3D5, 0x41A000, 0x41AFFF, "HYOSUNG Power & Industrial Systems", "HYOSUNG-POWER-INDUSTRIAL" }, { 0x70B3D5, 0xBAB000, 0xBABFFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x70B3D5, 0x69E000, 0x69EFFF, "PTYPE Co., LTD.", "PTYPE" }, { 0x70B3D5, 0x75C000, 0x75CFFF, "UPM Technology, Inc", "UPM" }, { 0x70B3D5, 0x124000, 0x124FFF, "Forschungs- und Transferzentrum Leipzig e.V.", "FORSCHUNGS--UND-TRANSFERZENTRUM-LEIPZIG-E-V" }, { 0x70B3D5, 0xF6D000, 0xF6DFFF, "Qowisio", "QOWISIO" }, { 0x70B3D5, 0x578000, 0x578FFF, "IMAGE TECH CO.,LTD", "IMAGE-TECH" }, { 0x70B3D5, 0x187000, 0x187FFF, "Elektronik & Präzisionsbau Saalfeld GmbH", "ELEKTRONIK-PRAEZISIONSBAU-SAALFELD" }, { 0x70B3D5, 0x0EE000, 0x0EEFFF, "Picture Elements, Inc.", "PICTURE-ELEMENTS" }, { 0x70B3D5, 0x28A000, 0x28AFFF, "Transit Solutions, LLC.", "TRANSIT-SOLUTIONS-LLC" }, { 0x70B3D5, 0x5A0000, 0x5A0FFF, "Ascon Tecnologic S.r.l.", "ASCON-TECNOLOGIC-S-R-L" }, { 0x70B3D5, 0xA6F000, 0xA6FFFF, "8Cups", "8CUPS" }, { 0x70B3D5, 0x929000, 0x929FFF, "OutSys", "OUTSYS" }, { 0x70B3D5, 0x120000, 0x120FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x70B3D5, 0x23E000, 0x23EFFF, "Tornado Modular Systems", "TORNADO-MODULAR" }, { 0x70B3D5, 0xEA2000, 0xEA2FFF, "Transportal Solutions Ltd", "TRANSPORTAL-SOLUTIONS" }, { 0x70B3D5, 0x45D000, 0x45DFFF, "Sensapex Oy", "SENSAPEX-OY" }, { 0x70B3D5, 0x8B0000, 0x8B0FFF, "IES S.r.l.", "IES-S-R-L" }, { 0x70B3D5, 0xFB6000, 0xFB6FFF, "KRONOTECH SRL", "KRONOTECH-SRL" }, { 0x70B3D5, 0xEB7000, 0xEB7FFF, "Skreens", "SKREENS" }, { 0x70B3D5, 0x38F000, 0x38FFFF, "Sorynorydotcom Inc", "SORYNORYDOTCOM" }, { 0x70B3D5, 0x7E9000, 0x7E9FFF, "Mecsel Oy", "MECSEL-OY" }, { 0x70B3D5, 0x06C000, 0x06CFFF, "AppTek", "APPTEK" }, { 0x70B3D5, 0x818000, 0x818FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x895000, 0x895FFF, "Integrated Control Corp.", "INTEGRATED-CONTROL" }, { 0x70B3D5, 0x232000, 0x232FFF, "UCONSYS", "UCONSYS" }, { 0x70B3D5, 0x01A000, 0x01AFFF, "Cubro Acronet GesmbH", "CUBRO-ACRONET-GESMBH" }, { 0x70B3D5, 0x37B000, 0x37BFFF, "Power Ltd.", "POWER" }, { 0x70B3D5, 0xFCC000, 0xFCCFFF, "DIgSILENT GmbH", "DIGSILENT" }, { 0x70B3D5, 0xFD8000, 0xFD8FFF, "MB connect line GmbH Fernwartungssysteme", "MB-CONNECT-LINE-FERNWARTUNGSSYSTEME" }, { 0x70B3D5, 0x76B000, 0x76BFFF, "EMPELOR GmbH", "EMPELOR" }, { 0x70B3D5, 0x0B8000, 0x0B8FFF, "Lucas-Nülle GmbH", "LUCAS-NUELLE" }, { 0x70B3D5, 0xFEB000, 0xFEBFFF, "Les distributions Multi-Secure incorporee", "LES-DISTRIBUTIONS-MULTI-SECURE-INCORPOREE" }, { 0x70B3D5, 0x658000, 0x658FFF, "emperor brands", "EMPEROR-BRANDS" }, { 0x70B3D5, 0x3A9000, 0x3A9FFF, "Vivalnk", "VIVALNK" }, { 0x001BC5, 0x087000, 0x087FFF, "Onnet Technologies and Innovations LLC", "ONNET-TECHNOLOGIES-AND-INNOVATIONS-LLC" }, { 0x70B3D5, 0x6BF000, 0x6BFFFF, "Otto Bihler Maschinenfabrik GmbH & Co. KG", "OTTO-BIHLER-MASCHINENFABRIK" }, { 0x70B3D5, 0x194000, 0x194FFF, "Husty M.Styczen J.Hupert Sp.J.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x70B3D5, 0x742000, 0x742FFF, "YUYAMA MFG Co.,Ltd", "YUYAMA-MFG" }, { 0x70B3D5, 0x493000, 0x493FFF, "Impulse Networks Pte Ltd", "IMPULSE-NETWORKS-PTE" }, { 0x70B3D5, 0xBB7000, 0xBB7FFF, "Innoflight, Inc.", "INNOFLIGHT" }, { 0x70B3D5, 0xB31000, 0xB31FFF, "Qwave Inc", "QWAVE" }, { 0x70B3D5, 0xDA8000, 0xDA8FFF, "Tagarno AS", "TAGARNO-AS" }, { 0x70B3D5, 0xADE000, 0xADEFFF, "ISAC SRL", "ISAC-SRL" }, { 0x70B3D5, 0xE85000, 0xE85FFF, "Explorer Inc.", "EXPLORER" }, { 0x70B3D5, 0xF3C000, 0xF3CFFF, "Gigaray", "GIGARAY" }, { 0x70B3D5, 0xF13000, 0xF13FFF, "MEDIAM Sp. z o.o.", "MEDIAM-SP-Z-O-O" }, { 0x70B3D5, 0x295000, 0x295FFF, "Cello Electronics (UK) Ltd", "CELLO-ELECTRONICS-UK" }, { 0x70B3D5, 0x283000, 0x283FFF, "TextNinja Co.", "TEXTNINJA" }, { 0x70B3D5, 0xD66000, 0xD66FFF, "Ascendent Technology Group", "ASCENDENT-GROUP" }, { 0x70B3D5, 0x3A5000, 0x3A5FFF, "KMtronic ltd", "KMTRONIC" }, { 0x70B3D5, 0x6A0000, 0x6A0FFF, "Active Research Limited", "ACTIVE-RESEARCH" }, { 0x70B3D5, 0xE3E000, 0xE3EFFF, "Sol Welding srl", "SOL-WELDING-SRL" }, { 0x70B3D5, 0x4AE000, 0x4AEFFF, "Reinhardt System- und Messelectronic GmbH", "REINHARDT-SYSTEM--UND-MESSELECTRONIC" }, { 0x70B3D5, 0x38C000, 0x38CFFF, "MiraeSignal Co., Ltd", "MIRAESIGNAL" }, { 0x70B3D5, 0xB1D000, 0xB1DFFF, "Safelet BV", "SAFELET" }, { 0x70B3D5, 0x04C000, 0x04CFFF, "mapna group", "MAPNA-GROUP" }, { 0x70B3D5, 0x6EC000, 0x6ECFFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xABA000, 0xABAFFF, "CL International", "CL" }, { 0x70B3D5, 0x65A000, 0x65AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x721000, 0x721FFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x70B3D5, 0x186000, 0x186FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x3BC000, 0x3BCFFF, "SciTronix", "SCITRONIX" }, { 0x70B3D5, 0xBE6000, 0xBE6FFF, "CCII Systems (Pty) Ltd", "CCII-PTY" }, { 0x70B3D5, 0xBD2000, 0xBD2FFF, "Burk Technology", "BURK" }, { 0x70B3D5, 0x925000, 0x925FFF, "Diamante Lighting Srl", "DIAMANTE-LIGHTING-SRL" }, { 0x70B3D5, 0xC8B000, 0xC8BFFF, "Asia Pacific Satellite Coummunication Inc.", "ASIA-PACIFIC-SATELLITE-COUMMUNICATION" }, { 0x70B3D5, 0x7B4000, 0x7B4FFF, "Zumbach Electronic AG", "ZUMBACH" }, { 0x70B3D5, 0xB11000, 0xB11FFF, "CAB S.R.L.", "CAB-S-R-L" }, { 0x70B3D5, 0x513000, 0x513FFF, "MB connect line GmbH Fernwartungssysteme", "MB-CONNECT-LINE-FERNWARTUNGSSYSTEME" }, { 0x70B3D5, 0xF99000, 0xF99FFF, "TEX COMPUTER SRL", "TEX-SRL" }, { 0x70B3D5, 0x3A7000, 0x3A7FFF, "Varikorea", "VARIKOREA" }, { 0x70B3D5, 0x174000, 0x174FFF, "Carlson Wireless Technologies Inc.", "CARLSON-WIRELESS-TECHNOLOGIES" }, { 0x70B3D5, 0x7D5000, 0x7D5FFF, "SICS Swedish ICT", "SICS-SWEDISH-ICT" }, { 0x70B3D5, 0x448000, 0x448FFF, "B/E Aerospace, Inc.", "B/E-AEROSPACE" }, { 0x70B3D5, 0xA53000, 0xA53FFF, "GS Industrie-Elektronik GmbH", "GS-INDUSTRIE-ELEKTRONIK" }, { 0x70B3D5, 0xBE3000, 0xBE3FFF, "Saratov Electrounit Production Plant named after Sergo Ordzhonikidze, OJSC", "SARATOV-ELECTROUNIT-PRODUCTION-PLANT-NAMED-AFTER-SERGO-ORDZHONIKIDZE-OJSC" }, { 0x70B3D5, 0xAAD000, 0xAADFFF, "Bartec GmbH", "BARTEC" }, { 0x70B3D5, 0xE82000, 0xE82FFF, "RF Track", "RF-TRACK" }, { 0x70B3D5, 0x85D000, 0x85DFFF, "ATHREYA INC", "ATHREYA" }, { 0x70B3D5, 0x821000, 0x821FFF, "HL2 group", "HL2-GROUP" }, { 0x70B3D5, 0x938000, 0x938FFF, "JETI Technische Instrumente GmbH", "JETI-TECHNISCHE-INSTRUMENTE" }, { 0x70B3D5, 0xA21000, 0xA21FFF, "PPI Inc.", "PPI" }, { 0x70B3D5, 0xE4F000, 0xE4FFFF, "RWS Automation GmbH", "RWS-AUTOMATION" }, { 0x70B3D5, 0x5C4000, 0x5C4FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x67B000, 0x67BFFF, "Stesalit Systems Ltd", "STESALIT" }, { 0x70B3D5, 0x1C8000, 0x1C8FFF, "LDA audio video profesional S.L.", "LDA-AUDIO-VIDEO-PROFESIONAL-S-L" }, { 0x70B3D5, 0x142000, 0x142FFF, "DAVE SRL", "DAVE-SRL" }, { 0x70B3D5, 0x666000, 0x666FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x6A8000, 0x6A8FFF, "Vitsch Electronics", "VITSCH-ELECTRONICS" }, { 0x70B3D5, 0xEBD000, 0xEBDFFF, "midBit Technologies, LLC", "MIDBIT-TECHNOLOGIES-LLC" }, { 0x70B3D5, 0xA8E000, 0xA8EFFF, "OMESH CITY GROUP", "OMESH-CITY-GROUP" }, { 0x70B3D5, 0x779000, 0x779FFF, "DR.BRIDGE AQUATECH", "DR-BRIDGE-AQUATECH" }, { 0x70B3D5, 0xF5C000, 0xF5CFFF, "Nable Communications, Inc.", "NABLE-COMMUNICATION" }, { 0x70B3D5, 0x550000, 0x550FFF, "Merten GmbH&CoKG", "MERTEN-COKG" }, { 0x70B3D5, 0x1BB000, 0x1BBFFF, "EFENTO T P SZYDŁOWSKI K ZARĘBA SPÓŁKA JAWNA", "EFENTO-T-P-SZYDŁOWSKI-K-ZARĘBA-SPÓŁKA-JAWNA" }, { 0x70B3D5, 0x498000, 0x498FFF, "XGEM SAS", "XGEM-SAS" }, { 0x70B3D5, 0xAAA000, 0xAAAFFF, "Xemex NV", "XEMEX-NV" }, { 0x70B3D5, 0x197000, 0x197FFF, "Lattech Systems Pty Ltd", "LATTECH-PTY" }, { 0x70B3D5, 0x593000, 0x593FFF, "Asis Pro", "ASIS-PRO" }, { 0x70B3D5, 0x22F000, 0x22FFFF, "Instec, Inc.", "INSTEC" }, { 0x70B3D5, 0xDD8000, 0xDD8FFF, "EMSCAN Corp.", "EMSCAN" }, { 0x70B3D5, 0xACD000, 0xACDFFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xBCC000, 0xBCCFFF, "MB connect line GmbH Fernwartungssysteme", "MB-CONNECT-LINE-FERNWARTUNGSSYSTEME" }, { 0x70B3D5, 0x5D6000, 0x5D6FFF, "BMT Messtechnik Gmbh", "BMT-MESSTECHNIK" }, { 0x70B3D5, 0x3BE000, 0x3BEFFF, "MyDefence Communication ApS", "MYDEFENCE-COMMUNICATION-APS" }, { 0x70B3D5, 0x289000, 0x289FFF, "Shenzhen Rongda Computer Co.,Ltd", "SHENZHEN-RONGDA" }, { 0x70B3D5, 0xC3E000, 0xC3EFFF, "DOSADORES ALLTRONIC", "DOSADORES-ALLTRONIC" }, { 0x70B3D5, 0x9FB000, 0x9FBFFF, "Unicom Global, Inc.", "UNICOM-GLOBAL" }, { 0x70B3D5, 0x24D000, 0x24DFFF, "INFO CREATIVE (HK) LTD", "INFO-CREATIVE-HK" }, { 0x70B3D5, 0xA36000, 0xA36FFF, "Beijing DamingWuzhou Science&Technology Co., Ltd.", "BEIJING-DAMINGWUZHOU-SCIENCE" }, { 0x70B3D5, 0x9F8000, 0x9F8FFF, "Asymmetric Technologies", "ASYMMETRIC-TECHNOLOGIES" }, { 0x70B3D5, 0xA85000, 0xA85FFF, "exceet electronics GesmbH", "EXCEET-ELECTRONICS-GESMBH" }, { 0x70B3D5, 0xAC5000, 0xAC5FFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x70B3D5, 0xF07000, 0xF07FFF, "DUVAL MESSIEN", "DUVAL-MESSIEN" }, { 0x70B3D5, 0x939000, 0x939FFF, "Invertek Drives Ltd", "INVERTEK-DRIVES" }, { 0x70B3D5, 0x6D0000, 0x6D0FFF, "Code Blue Corporation", "CODE-BLUE" }, { 0x70B3D5, 0x2C3000, 0x2C3FFF, "Proterra", "PROTERRA" }, { 0x70B3D5, 0x816000, 0x816FFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x70B3D5, 0x693000, 0x693FFF, "Altron, a.s.", "ALTRON-A-S" }, { 0x70B3D5, 0x5D3000, 0x5D3FFF, "Supracon AG", "SUPRACON" }, { 0x70B3D5, 0x2AD000, 0x2ADFFF, "Opgal Optronic Industries", "OPGAL-OPTRONIC-INDUSTRIES" }, { 0x70B3D5, 0x8EC000, 0x8ECFFF, "Rudy Tellert", "RUDY-TELLERT" }, { 0x70B3D5, 0xCF5000, 0xCF5FFF, "Petring Energietechnik GmbH", "PETRING-ENERGIETECHNIK" }, { 0x70B3D5, 0xFF7000, 0xFF7FFF, "Cybercom AB", "CYBERCOM-AB" }, { 0x70B3D5, 0xDCC000, 0xDCCFFF, "Eutron SPA", "EUTRON-SPA" }, { 0x70B3D5, 0x269000, 0x269FFF, "Gilbarco Veeder-Root ‎", "GILBARCO-VEEDER-ROOT-‎" }, { 0x70B3D5, 0x173000, 0x173FFF, "National TeleConsultants LLC", "NATIONAL-TELECONSULTANTS-LLC" }, { 0x70B3D5, 0x15C000, 0x15CFFF, "Woods Hole Oceanographic Institution", "WOODS-HOLE-OCEANOGRAPHIC-INSTITUTION" }, { 0x70B3D5, 0xCAE000, 0xCAEFFF, "THEMA", "THEMA" }, { 0x70B3D5, 0x5BC000, 0x5BCFFF, "LAMTEC Meß- und Regeltechnik für Feuerungen GmbH & Co. KG", "LAMTEC-MESS--UND-REGELTECHNIK-FUER-FEUERUNGEN" }, { 0x70B3D5, 0x1B8000, 0x1B8FFF, "OES Inc.", "OES" }, { 0x70B3D5, 0x85A000, 0x85AFFF, "BRUSHIES", "BRUSHIES" }, { 0x70B3D5, 0xFAF000, 0xFAFFFF, "Radig Hard & Software", "RADIG-HARD-SOFTWARE" }, { 0x70B3D5, 0x7A2000, 0x7A2FFF, "Alpha ESS Co., Ltd.", "ALPHA-ESS" }, { 0x70B3D5, 0x0BC000, 0x0BCFFF, "Practical Software Studio LLC", "PRACTICAL-SOFTWARE-STUDIO-LLC" }, { 0x70B3D5, 0x724000, 0x724FFF, "Quan International Co., Ltd.", "QUAN" }, { 0x70B3D5, 0x53B000, 0x53BFFF, "Mr.Loop", "MR-LOOP" }, { 0x70B3D5, 0xEBE000, 0xEBEFFF, "Sierra Pacific Innovations Corp", "SIERRA-PACIFIC-INNOVATIONS" }, { 0x70B3D5, 0x103000, 0x103FFF, "HANYOUNG NUX CO.,LTD", "HANYOUNG-NUX" }, { 0x70B3D5, 0x04A000, 0x04AFFF, "Gecko Robotics Inc", "GECKO-ROBOTICS" }, { 0x70B3D5, 0x040000, 0x040FFF, "Savari Inc", "SAVARI" }, { 0x70B3D5, 0x92A000, 0x92AFFF, "Miravue", "MIRAVUE" }, { 0x70B3D5, 0x063000, 0x063FFF, "PoolDigital GmbH & Co. KG", "POOLDIGITAL" }, { 0x70B3D5, 0x209000, 0x209FFF, "SmartNodes", "SMARTNODES" }, { 0x70B3D5, 0x14C000, 0x14CFFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xF9E000, 0xF9EFFF, "International Center for Elementary Particle Physics, The University of Tokyo", "CENTER-FOR-ELEMENTARY-PARTICLE-PHYSICS-THE-UNIVERSITY-OF-TOKYO" }, { 0x70B3D5, 0x9C6000, 0x9C6FFF, "Overspeed SARL", "OVERSPEED-SARL" }, { 0x70B3D5, 0x07A000, 0x07AFFF, "ZAO ZEO", "ZAO-ZEO" }, { 0x70B3D5, 0x06B000, 0x06BFFF, "U-Tech", "U-TECH" }, { 0x70B3D5, 0xF77000, 0xF77FFF, "Satcube AB", "SATCUBE-AB" }, { 0x70B3D5, 0x7A1000, 0x7A1FFF, "Excelfore Corporation", "EXCELFORE" }, { 0x70B3D5, 0x90D000, 0x90DFFF, "Modtronix Engineering", "MODTRONIX-ENGINEERING" }, { 0x70B3D5, 0xC60000, 0xC60FFF, "Gogo BA", "GOGO-BA" }, { 0x70B3D5, 0xA73000, 0xA73FFF, "MobiPromo", "MOBIPROMO" }, { 0x70B3D5, 0x585000, 0x585FFF, "Nefteavtomatika", "NEFTEAVTOMATIKA" }, { 0x70B3D5, 0x495000, 0x495FFF, "Fiem Industries Ltd.", "FIEM-INDUSTRIES" }, { 0x70B3D5, 0xAD2000, 0xAD2FFF, "Wart-Elektronik", "WART-ELEKTRONIK" }, { 0x70B3D5, 0x276000, 0x276FFF, "TELL Software Hungaria Kft.", "TELL-SOFTWARE-HUNGARIA-KFT" }, { 0x70B3D5, 0x2B4000, 0x2B4FFF, "Foerster-Technik GmbH", "FOERSTER-TECHNIK" }, { 0x70B3D5, 0x28C000, 0x28CFFF, "Step Technica Co., Ltd.", "STEP-TECHNICA" }, { 0x70B3D5, 0xE50000, 0xE50FFF, "Advanced Vision Technology Ltd", "ADVANCED-VISION" }, { 0x70B3D5, 0x7E0000, 0x7E0FFF, "Sanko-sha,inc.", "SANKO-SHA" }, { 0x70B3D5, 0x8C1000, 0x8C1FFF, "Rievtech Electronic Co.,Ltd", "RIEVTECH" }, { 0x70B3D5, 0xF0C000, 0xF0CFFF, "ModulaTeam GmbH", "MODULATEAM" }, { 0x70B3D5, 0x8AC000, 0x8ACFFF, "​ASUNG TECHNO CO.,Ltd", "​ASUNG-TECHNO" }, { 0x70B3D5, 0xCE1000, 0xCE1FFF, "EA Elektroautomatik GmbH & Co. KG", "EA-ELEKTROAUTOMATIK" }, { 0x70B3D5, 0x677000, 0x677FFF, "Fraunhofer-Institut IIS", "FRAUNHOFER-INSTITUT-IIS" }, { 0x70B3D5, 0x38B000, 0x38BFFF, "Lookman Electroplast Industries Ltd", "LOOKMAN-ELECTROPLAST-INDUSTRIES" }, { 0x70B3D5, 0x9DC000, 0x9DCFFF, "Shanghai Daorech Industry Developmnet Co.,Ltd", "SHANGHAI-DAORECH-INDUSTRY-DEVELOPMNET" }, { 0x70B3D5, 0x888000, 0x888FFF, "Zetechtics Ltd", "ZETECHTICS" }, { 0x70B3D5, 0x168000, 0x168FFF, "Biwave Technologies, Inc.", "BIWAVE-TECHNOLOGIES" }, { 0x70B3D5, 0xF25000, 0xF25FFF, "JSC “Scientific Industrial Enterprise Rubin", "JSC-“SCIENTIFIC-INDUSTRIAL-RUBIN" }, { 0x70B3D5, 0xA48000, 0xA48FFF, "Applied Satellite Engineering", "APPLIED-SATELLITE-ENGINEERING" }, { 0x70B3D5, 0x46C000, 0x46CFFF, "SHANGHAI CHENZHU INSTRUMENT CO., LTD.", "SHANGHAI-CHENZHU-INSTRUMENT" }, { 0x70B3D5, 0xFAD000, 0xFADFFF, "ARC Technology Solutions, LLC", "ARC-SOLUTIONS-LLC" }, { 0x70B3D5, 0x80B000, 0x80BFFF, "Fischer Block, Inc.", "FISCHER-BLOCK" }, { 0x70B3D5, 0xE6C000, 0xE6CFFF, "Fusar Technologies inc", "FUSAR-TECHNOLOGIES" }, { 0x70B3D5, 0xAB8000, 0xAB8FFF, "HORIBA ABX SAS", "HORIBA-ABX-SAS" }, { 0x70B3D5, 0x2B0000, 0x2B0FFF, "Beijing Zhongyi Yue Tai Technology Co., Ltd", "BEIJING-ZHONGYI-YUE-TAI" }, { 0x70B3D5, 0x2E2000, 0x2E2FFF, "Spark Lasers", "SPARK-LASERS" }, { 0x70B3D5, 0x446000, 0x446FFF, "Santa Barbara Imaging Systems", "SANTA-BARBARA-IMAGING" }, { 0x70B3D5, 0x56B000, 0x56BFFF, "S.E.I. CO.,LTD.", "S-E-I" }, { 0x70B3D5, 0xB48000, 0xB48FFF, "DWQ Informatikai Tanacsado es Vezerlestechnikai KFT", "DWQ-INFORMATIKAI-TANACSADO-ES-VEZERLESTECHNIKAI-KFT" }, { 0x70B3D5, 0xA7E000, 0xA7EFFF, "QUICCO SOUND Corporation", "QUICCO-SOUND" }, { 0x70B3D5, 0x878000, 0x878FFF, "Package Guard, Inc", "PACKAGE-GUARD" }, { 0x70B3D5, 0x245000, 0x245FFF, "Newtec A/S", "NEWTEC-A/S" }, { 0x70B3D5, 0xFFE000, 0xFFEFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x3FE000, 0x3FEFFF, "Mentor Graphics", "MENTOR-GRAPHICS" }, { 0x70B3D5, 0x74D000, 0x74DFFF, "SPEECH TECHNOLOGY CENTER LIMITED", "SPEECH-CENTER" }, { 0x70B3D5, 0x5BF000, 0x5BFFFF, "Aton srl", "ATON-SRL" }, { 0x70B3D5, 0xEEA000, 0xEEAFFF, "Dameca a/s", "DAMECA-A/S" }, { 0x70B3D5, 0x9B8000, 0x9B8FFF, "Loma Systems", "LOMA" }, { 0x70B3D5, 0xBEA000, 0xBEAFFF, "Virtuosys Ltd", "VIRTUOSYS" }, { 0x70B3D5, 0x066000, 0x066FFF, "North Pole Engineering, Inc.", "NORTH-POLE-ENGINEERING" }, { 0x70B3D5, 0x2A1000, 0x2A1FFF, "Blink Services AB", "BLINK-SERVICES-AB" }, { 0x70B3D5, 0x591000, 0x591FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x133000, 0x133FFF, "Vidisys GmbH", "VIDISYS" }, { 0x70B3D5, 0x809000, 0x809FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x70B3D5, 0x2AB000, 0x2ABFFF, "NASA Johnson Space Center", "NASA-JOHNSON-SPACE-CENTER" }, { 0x70B3D5, 0x720000, 0x720FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x254000, 0x254FFF, "Spectrum Brands", "SPECTRUM-BRANDS" }, { 0x70B3D5, 0x1E6000, 0x1E6FFF, "Sanmina Israel", "SANMINA-ISRAEL" }, { 0x70B3D5, 0x7C9000, 0x7C9FFF, "Council Rock", "COUNCIL-ROCK" }, { 0x70B3D5, 0xD60000, 0xD60FFF, "Flintab AB", "FLINTAB-AB" }, { 0x70B3D5, 0x1B4000, 0x1B4FFF, "5nines", "5NINES" }, { 0x70B3D5, 0x522000, 0x522FFF, "Syncopated Engineering Inc", "SYNCOPATED-ENGINEERING" }, { 0x70B3D5, 0x78E000, 0x78EFFF, "effectas GmbH", "EFFECTAS" }, { 0x70B3D5, 0xCC1000, 0xCC1FFF, "BEEcube Inc.", "BEECUBE" }, { 0x70B3D5, 0x9D4000, 0x9D4FFF, "Transas Marine Limited", "TRANSAS-MARINE" }, { 0x70B3D5, 0xAE2000, 0xAE2FFF, "Transas Marine Limited", "TRANSAS-MARINE" }, { 0x001BC5, 0x015000, 0x015FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x476000, 0x476FFF, "FR-Team International SA", "FR-TEAM" }, { 0x70B3D5, 0x326000, 0x326FFF, "NEMEUS-SAS", "NEMEUS-SAS" }, { 0x70B3D5, 0xFE6000, 0xFE6FFF, "SHIZUKI ELECTRIC CO.,INC", "SHIZUKI-ELECTRIC" }, { 0x70B3D5, 0x943000, 0x943FFF, "Abbott Medical Optics Inc.", "ABBOTT-MEDICAL-OPTICS" }, { 0x70B3D5, 0xAE0000, 0xAE0FFF, "AnyComm.Co.,Ltd.", "ANYCOMM" }, { 0x70B3D5, 0x2B3000, 0x2B3FFF, "HAS co.,ltd.", "HAS" }, { 0x70B3D5, 0xD5A000, 0xD5AFFF, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x70B3D5, 0xCB6000, 0xCB6FFF, "Kuebrich Ingeniergesellschaft mbh & Co. KG", "KUEBRICH-INGENIERGESELLSCHAFT-MBH" }, { 0x70B3D5, 0x0BE000, 0x0BEFFF, "ChamSys Ltd", "CHAMSYS" }, { 0x70B3D5, 0x1E0000, 0x1E0FFF, "TOPROOTTechnology Corp. Ltd.", "TOPROOTTECHNOLOGY" }, { 0x70B3D5, 0x0C8000, 0x0C8FFF, "Fin Robotics Inc", "FIN-ROBOTICS" }, { 0x70B3D5, 0x74A000, 0x74AFFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x70B3D5, 0x39D000, 0x39DFFF, "Comark Interactive Solutions", "COMARK-INTERACTIVE-SOLUTIONS" }, { 0x70B3D5, 0xD07000, 0xD07FFF, "Waversa Systems", "WAVERSA" }, { 0x70B3D5, 0x4D1000, 0x4D1FFF, "Contraves Advanced Devices Sdn. Bhd.", "CONTRAVES-ADVANCED-DEVICES-SDN-BHD" }, { 0x70B3D5, 0x771000, 0x771FFF, "Apator Miitors ApS", "APATOR-MIITORS-APS" }, { 0x70B3D5, 0xCA9000, 0xCA9FFF, "Nxcontrol system Co., Ltd.", "NXCONTROL-SYSTEM" }, { 0x70B3D5, 0xEDF000, 0xEDFFFF, "GridNavigator", "GRIDNAVIGATOR" }, { 0x70B3D5, 0x20A000, 0x20AFFF, "Golden Grid Systems", "GOLDEN-GRID" }, { 0x70B3D5, 0x517000, 0x517FFF, "ISPHER", "ISPHER" }, { 0x70B3D5, 0x140000, 0x140FFF, "Virta Laboratories, Inc.", "VIRTA-LABORATORIES" }, { 0x70B3D5, 0x9F0000, 0x9F0FFF, "FUJICOM Co.,Ltd.", "FUJICOM" }, { 0x70B3D5, 0x76F000, 0x76FFFF, "OTI LTD", "OTI" }, { 0x70B3D5, 0x4EB000, 0x4EBFFF, "INFOSOFT DIGITAL DESIGN & SERVICES PRIVATE LIMITED", "INFOSOFT-DIGITAL-DESIGN-SERVICES-PRIVATE" }, { 0x70B3D5, 0xD12000, 0xD12FFF, "FIDELTRONIK POLAND SP. Z O.O.", "FIDELTRONIK-POLAND-SP-Z-O-O" }, { 0x70B3D5, 0x8F0000, 0x8F0FFF, "ERAESEEDS co.,ltd.", "ERAESEEDS" }, { 0x70B3D5, 0xEE5000, 0xEE5FFF, "Beijing Hzhytech Technology Co.Ltd", "BEIJING-HZHYTECH" }, { 0x70B3D5, 0xBED000, 0xBEDFFF, "Itrinegy Ltd.", "ITRINEGY" }, { 0x70B3D5, 0xAF5000, 0xAF5FFF, "Net And Print Inc.", "NET-AND-PRINT" }, { 0x70B3D5, 0x64A000, 0x64AFFF, "Netbric Technology Co.,Ltd.", "NETBRIC" }, { 0x70B3D5, 0xECA000, 0xECAFFF, "Transtronic AB", "TRANSTRONIC-AB" }, { 0x70B3D5, 0x852000, 0x852FFF, "NetBoxSC, LLC", "NETBOXSC-LLC" }, { 0x70B3D5, 0xE76000, 0xE76FFF, "Dorsett Technologies, Inc.", "DORSETT-TECHNOLOGIES" }, { 0x70B3D5, 0x172000, 0x172FFF, "LumiGrow, Inc", "LUMIGROW" }, { 0x70B3D5, 0x8A4000, 0x8A4FFF, "Phyton, Inc. Microsystems and Development Tools", "PHYTON-MICROSYSTEMS-AND-DEVELOPMENT-TOOLS" }, { 0x70B3D5, 0x166000, 0x166FFF, "SERIAL IMAGE INC.", "SERIAL-IMAGE" }, { 0x70B3D5, 0x76D000, 0x76DFFF, "Trimble", "TRIMBLE" }, { 0x70B3D5, 0xF73000, 0xF73FFF, "ASL Holdings", "ASL-HOLDINGS" }, { 0x70B3D5, 0xD0E000, 0xD0EFFF, "Beijing Aumiwalker technology CO.,LTD", "BEIJING-AUMIWALKER" }, { 0x70B3D5, 0x827000, 0x827FFF, "Metromatics Pty Ltd", "METROMATICS-PTY" }, { 0x70B3D5, 0xF54000, 0xF54FFF, "Revolution Retail Systems", "REVOLUTION-RETAIL" }, { 0x70B3D5, 0xB91000, 0xB91FFF, "Dynetics, Inc.", "DYNETICS" }, { 0x70B3D5, 0x4DE000, 0x4DEFFF, "Oso Technologies, Inc.", "OSO-TECHNOLOGIES" }, { 0x70B3D5, 0x916000, 0x916FFF, "Techno Mathematical Co.,Ltd", "TECHNO-MATHEMATICAL" }, { 0x70B3D5, 0x958000, 0x958FFF, "pureLiFi Ltd", "PURELIFI" }, { 0x70B3D5, 0x4F4000, 0x4F4FFF, "WiTagg, Inc", "WITAGG" }, { 0x70B3D5, 0xF4C000, 0xF4CFFF, "Global Lightning Protection Services A(S", "GLOBAL-LIGHTNING-PROTECTION-SERVICES-A-S" }, { 0x70B3D5, 0x789000, 0x789FFF, "SEMEX-EngCon GmbH", "SEMEX-ENGCON" }, { 0x70B3D5, 0xCFD000, 0xCFDFFF, "iLOQ Oy", "ILOQ-OY" }, { 0x70B3D5, 0xBAD000, 0xBADFFF, "Technik & Design GmbH", "TECHNIK-DESIGN" }, { 0x70B3D5, 0x324000, 0x324FFF, "Thales Nederland BV", "THALES-NEDERLAND" }, { 0x70B3D5, 0x935000, 0x935FFF, "Sensor Developments", "SENSOR-DEVELOPMENTS" }, { 0x70B3D5, 0x431000, 0x431FFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x70B3D5, 0xC73000, 0xC73FFF, "C.D.N.CORPORATION", "C-D-N" }, { 0x70B3D5, 0xD80000, 0xD80FFF, "AMMT GmbH", "AMMT" }, { 0x70B3D5, 0xD0A000, 0xD0AFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xCE3000, 0xCE3FFF, "Dalcnet srl", "DALCNET-SRL" }, { 0x70B3D5, 0xAB5000, 0xAB5FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0x9CA000, 0x9CAFFF, "KOMSIS ELEKTRONIK SISTEMLERI SAN. TIC. LTD.STI", "KOMSIS-ELEKTRONIK-SISTEMLERI-SAN-TIC-STI" }, { 0x70B3D5, 0x0E6000, 0x0E6FFF, "Nasdaq", "NASDAQ" }, { 0x70B3D5, 0x087000, 0x087FFF, "Tempus Fugit Consoles bvba", "TEMPUS-FUGIT-CONSOLES-BVBA" }, { 0x70B3D5, 0x7B7000, 0x7B7FFF, "LSB - LA SALLE BLANCHE", "LSB---LA-SALLE-BLANCHE" }, { 0x70B3D5, 0xE30000, 0xE30FFF, "QUISS AG", "QUISS" }, { 0x70B3D5, 0xD2D000, 0xD2DFFF, "Evolute Systems Private Limited", "EVOLUTE-PRIVATE" }, { 0x70B3D5, 0xB35000, 0xB35FFF, "Rexxam Co.,Ltd.", "REXXAM" }, { 0x70B3D5, 0x79B000, 0x79BFFF, "Soniclean Pty Ltd", "SONICLEAN-PTY" }, { 0x70B3D5, 0xF72000, 0xF72FFF, "Hanshin Electronics", "HANSHIN-ELECTRONICS" }, { 0x70B3D5, 0xAA8000, 0xAA8FFF, "West-Com Nurse Call Systems, Inc.", "WEST-COM-NURSE-CALL" }, { 0x70B3D5, 0xDF6000, 0xDF6FFF, "Tiab Limited", "TIAB" }, { 0x70B3D5, 0x3E3000, 0x3E3FFF, "Head", "HEAD" }, { 0x70B3D5, 0x285000, 0x285FFF, "Bentec GmbH Drilling & Oilfield Systems", "BENTEC-DRILLING-OILFIELD" }, { 0x70B3D5, 0x44E000, 0x44EFFF, "Solace Systems Inc.", "SOLACE" }, { 0x70B3D5, 0x13F000, 0x13FFFF, "Farmobile", "FARMOBILE" }, { 0x70B3D5, 0xD48000, 0xD48FFF, "HEADROOM Broadcast GmbH", "HEADROOM-BROADCAST" }, { 0x70B3D5, 0x99F000, 0x99FFFF, "Confed Holding B.V.", "CONFED-HOLDING" }, { 0x70B3D5, 0xAE3000, 0xAE3FFF, "Zhejiang Wellsun Electric Meter Co.,Ltd", "ZHEJIANG-WELLSUN-ELECTRIC-METER" }, { 0x70B3D5, 0xBEF000, 0xBEFFFF, "Sensortech Systems Inc.", "SENSORTECH" }, { 0x70B3D5, 0xB24000, 0xB24FFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x70B3D5, 0x0C1000, 0x0C1FFF, "Nexus Technologies Pty Ltd", "NEXUS-TECHNOLOGIES-PTY" }, { 0x70B3D5, 0xE6E000, 0xE6EFFF, "Lieron BVBA", "LIERON-BVBA" }, { 0x70B3D5, 0x01C000, 0x01CFFF, "Kumu Networks", "KUMU-NETWORKS" }, { 0x70B3D5, 0x799000, 0x799FFF, "Vitec System Engineering Inc.", "VITEC-SYSTEM-ENGINEERING" }, { 0x70B3D5, 0xDE8000, 0xDE8FFF, "Nation-E Ltd.", "NATION-E" }, { 0x70B3D5, 0x83F000, 0x83FFFF, "Lumine Lighting Solutions Oy", "LUMINE-LIGHTING-SOLUTIONS-OY" }, { 0x70B3D5, 0xE23000, 0xE23FFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x70B3D5, 0xA6E000, 0xA6EFFF, "JSC Electrical Equipment Factory", "JSC-ELECTRICAL-EQUIPMENT-FACTORY" }, { 0x70B3D5, 0xF7E000, 0xF7EFFF, "Alpha Elettronica s.r.l.", "ALPHA-ELETTRONICA-S-R-L" }, { 0x70B3D5, 0x41E000, 0x41EFFF, "Redler Computers", "REDLER-COMPUTERS" }, { 0x70B3D5, 0xD0D000, 0xD0DFFF, "Logiwaste AB", "LOGIWASTE-AB" }, { 0x70B3D5, 0xF2C000, 0xF2CFFF, "Hengen Technologies GmbH", "HENGEN-TECHNOLOGIES" }, { 0x70B3D5, 0x459000, 0x459FFF, "Protium Technologies, Inc.", "PROTIUM-TECHNOLOGIES" }, { 0x70B3D5, 0x811000, 0x811FFF, "CJSC «INTERSET»", "CJSC-«INTERSET»" }, { 0x70B3D5, 0x6ED000, 0x6EDFFF, "Wiingtech International Co. LTD.", "WIINGTECH" }, { 0x70B3D5, 0xF39000, 0xF39FFF, "Zenros ApS", "ZENROS-APS" }, { 0x70B3D5, 0xC56000, 0xC56FFF, "TELETASK", "TELETASK" }, { 0x70B3D5, 0xE58000, 0xE58FFF, "Thurlby Thandar Instruments LTD", "THURLBY-THANDAR-INSTRUMENTS" }, { 0x70B3D5, 0x0AB000, 0x0ABFFF, "KST technology", "KST" }, { 0x70B3D5, 0x062000, 0x062FFF, "RM Michaelides Software & Elektronik GmbH", "RM-MICHAELIDES-SOFTWARE-ELEKTRONIK" }, { 0x70B3D5, 0x71E000, 0x71EFFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x70B3D5, 0x8E0000, 0x8E0FFF, "SOUDAX EQUIPEMENTS", "SOUDAX-EQUIPEMENTS" }, { 0x70B3D5, 0x412000, 0x412FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0xE75000, 0xE75FFF, "Nke", "NKE" }, { 0x70B3D5, 0xDE7000, 0xDE7FFF, "Innominds Software Private Limited", "INNOMINDS-SOFTWARE-PRIVATE" }, { 0x70B3D5, 0x1F4000, 0x1F4FFF, "Hangzhou Woosiyuan Communication Co.,Ltd.", "HANGZHOU-WOOSIYUAN-COMMUNICATION" }, { 0x70B3D5, 0x092000, 0x092FFF, "inomed Medizintechnik GmbH", "INOMED-MEDIZINTECHNIK" }, { 0x70B3D5, 0x1A1000, 0x1A1FFF, "HMicro Inc", "HMICRO" }, { 0x70B3D5, 0xB8D000, 0xB8DFFF, "JungwooEng Co., Ltd", "JUNGWOOENG" }, { 0x70B3D5, 0x20C000, 0x20CFFF, "Siemens Healthcare Diagnostics", "SIEMENS-HEALTHCARE-DIAGNOSTICS" }, { 0x70B3D5, 0x709000, 0x709FFF, "AML", "AML" }, { 0x70B3D5, 0x682000, 0x682FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x70B3D5, 0x0A4000, 0x0A4FFF, "Communication Technology Ltd.", "COMMUNICATION" }, { 0x70B3D5, 0xA99000, 0xA99FFF, "Bandelin electronic GmbH & Co. KG", "BANDELIN" }, { 0x70B3D5, 0x7EF000, 0x7EFFFF, "CRAVIS CO., LIMITED", "CRAVIS" }, { 0x70B3D5, 0xA62000, 0xA62FFF, "Environexus", "ENVIRONEXUS" }, { 0x70B3D5, 0xE92000, 0xE92FFF, "FUJI DATA SYSTEM CO.,LTD.", "FUJI-DATA-SYSTEM" }, { 0x70B3D5, 0xC6D000, 0xC6DFFF, "Cyviz AS", "CYVIZ-AS" }, { 0x70B3D5, 0xC43000, 0xC43FFF, "Future Skies", "FUTURE-SKIES" }, { 0x70B3D5, 0xD4E000, 0xD4EFFF, "FLSmidth", "FLSMIDTH" }, { 0x70B3D5, 0x1AC000, 0x1ACFFF, "SVP Broadcast Microwave S.L.", "SVP-BROADCAST-MICROWAVE-S-L" }, { 0x70B3D5, 0x090000, 0x090FFF, "POWERCRAFT ELECTRONICS PVT. LTD.", "POWERCRAFT-ELECTRONICS-PVT" }, { 0x70B3D5, 0x3F1000, 0x3F1FFF, "Olympus NDT Canada", "OLYMPUS-NDT-CANADA" }, { 0x70B3D5, 0x9A7000, 0x9A7FFF, "Honeywell", "HONEYWELL" }, { 0x70B3D5, 0xDC5000, 0xDC5FFF, "Excel Medical Electronics LLC", "EXCEL-MEDICAL-ELECTRONICS-LLC" }, { 0x70B3D5, 0x01D000, 0x01DFFF, "Weigl Elektronik & Mediaprojekte", "WEIGL-ELEKTRONIK-MEDIAPROJEKTE" }, { 0x70B3D5, 0xF68000, 0xF68FFF, "AL ZAJEL MODERN TELECOMM", "AL-ZAJEL-MODERN-TELECOMM" }, { 0x70B3D5, 0xDEC000, 0xDECFFF, "Condev-Automation GmbH", "CONDEV-AUTOMATION" }, { 0x70B3D5, 0x564000, 0x564FFF, "christmann informationstechnik + medien GmbH & Co. KG", "CHRISTMANN-INFORMATIONSTECHNIK-+-MEDIEN" }, { 0x70B3D5, 0xE07000, 0xE07FFF, "Baader Planetarium GmbH", "BAADER-PLANETARIUM" }, { 0x70B3D5, 0x28E000, 0x28EFFF, "TEX COMPUTER SRL", "TEX-SRL" }, { 0x70B3D5, 0x655000, 0x655FFF, "AOT System GmbH", "AOT-SYSTEM" }, { 0x70B3D5, 0xA2F000, 0xA2FFFF, "Botek Systems AB", "BOTEK-AB" }, { 0x70B3D5, 0xB15000, 0xB15FFF, "Eta Beta Srl", "ETA-BETA-SRL" }, { 0x70B3D5, 0xB2A000, 0xB2AFFF, "Myro Control, LLC", "MYRO-CONTROL-LLC" }, { 0x70B3D5, 0x433000, 0x433FFF, "Flexsolution APS", "FLEXSOLUTION-APS" }, { 0x70B3D5, 0x077000, 0x077FFF, "InAccess Networks SA", "INACCESS-NETWORKS" }, { 0x70B3D5, 0x5E8000, 0x5E8FFF, "VITEC", "VITEC" }, { 0x70B3D5, 0x0FB000, 0x0FBFFF, "Cygnus LLC", "CYGNUS-LLC" }, { 0x70B3D5, 0xDDD000, 0xDDDFFF, "BIO RAD LABORATORIES", "BIO-RAD-LABORATORIES" }, { 0x70B3D5, 0x54E000, 0x54EFFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x70B3D5, 0xBBD000, 0xBBDFFF, "Providius Corp", "PROVIDIUS" }, { 0x70B3D5, 0xC78000, 0xC78FFF, "NETA Elektronik AS", "NETA-ELEKTRONIK-AS" }, { 0x70B3D5, 0xBCA000, 0xBCAFFF, "Deymed Diagnostic", "DEYMED-DIAGNOSTIC" }, { 0x70B3D5, 0xEE4000, 0xEE4FFF, "O-Net Automation Technology (Shenzhen)Limited", "O-NET-AUTOMATION-SHENZHEN" }, { 0x70B3D5, 0x5B5000, 0x5B5FFF, "Lehigh Electric Products Co", "LEHIGH-ELECTRIC-PRODUCTS" }, { 0x70B3D5, 0xB8C000, 0xB8CFFF, "ePOINT Embedded Computing Limited", "EPOINT-EMBEDDED-COMPUTING" }, { 0x70B3D5, 0x40A000, 0x40AFFF, "Monroe Electronics, Inc.", "MONROE-ELECTRONICS" }, { 0x70B3D5, 0x109000, 0x109FFF, "DITEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x70B3D5, 0xF63000, 0xF63FFF, "Ars Products", "ARS-PRODUCTS" }, { 0x70B3D5, 0x0AA000, 0x0AAFFF, "Wanco Inc", "WANCO" }, { 0x70B3D5, 0x3ED000, 0x3EDFFF, "Ultra Electronics Sonar System Division", "ULTRA-ELECTRONICS-SONAR-SYSTEM-DIVISION" }, { 0x001BC5, 0x0C1000, 0x0C1FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x001BC5, 0x0C0000, 0x0C0FFF, "Digital Loggers, Inc.", "DIGITAL-LOGGERS" }, { 0x001BC5, 0x0C7000, 0x0C7FFF, "WIZZILAB SAS", "WIZZILAB-SAS" }, { 0x001BC5, 0x0B3000, 0x0B3FFF, "FSM Solutions Limited", "FSM-SOLUTIONS" }, { 0x001BC5, 0x0BD000, 0x0BDFFF, "Bridge Diagnostics, Inc.", "BRIDGE-DIAGNOSTICS" }, { 0x001BC5, 0x0AD000, 0x0ADFFF, "Tierra Japan Co.,Ltd", "TIERRA-JAPAN" }, { 0x001BC5, 0x0A9000, 0x0A9FFF, "Elektrometal SA", "ELEKTROMETAL" }, { 0x001BC5, 0x0B7000, 0x0B7FFF, "Autelis, LLC", "AUTELIS-LLC" }, { 0x001BC5, 0x0A3000, 0x0A3FFF, "P A Network Laboratory Co.,Ltd", "P-A-NETWORK-LABORATORY" }, { 0x001BC5, 0x0A1000, 0x0A1FFF, "Hangzhou Zhiping Technology Co., Ltd.", "HANGZHOU-ZHIPING" }, { 0x001BC5, 0x097000, 0x097FFF, "Plexstar Inc.", "PLEXSTAR" }, { 0x001BC5, 0x094000, 0x094FFF, "reelyActive", "REELYACTIVE" }, { 0x001BC5, 0x09B000, 0x09BFFF, "YIK Corporation", "YIK" }, { 0x001BC5, 0x09E000, 0x09EFFF, "K+K Messtechnik GmbH", "K+K-MESSTECHNIK" }, { 0x001BC5, 0x08D000, 0x08DFFF, "EUREK SRL", "EUREK-SRL" }, { 0x001BC5, 0x091000, 0x091FFF, "3green ApS", "3GREEN-APS" }, { 0x001BC5, 0x08A000, 0x08AFFF, "Topicon", "TOPICON" }, { 0x001BC5, 0x07C000, 0x07CFFF, "head", "HEAD" }, { 0x001BC5, 0x078000, 0x078FFF, "Donbass Soft Ltd and Co.KG", "DONBASS-SOFT-AND" }, { 0x001BC5, 0x082000, 0x082FFF, "TGS Geophysical Company (UK) Limited", "TGS-GEOPHYSICAL-COMPANY-UK" }, { 0x001BC5, 0x085000, 0x085FFF, "Oberon microsystems, Inc.", "OBERON-MICROSYSTEMS" }, { 0x001BC5, 0x086000, 0x086FFF, "CAST Group of Companies Inc.", "CAST-GROUP-OF-COMPANIES" }, { 0x001BC5, 0x064000, 0x064FFF, "Enkora Oy Ltd", "ENKORA-OY" }, { 0x001BC5, 0x05E000, 0x05EFFF, "Ecomed-Complex", "ECOMED-COMPLEX" }, { 0x001BC5, 0x06E000, 0x06EFFF, "Two Dimensional Instruments, LLC", "TWO-DIMENSIONAL-INSTRUMENTS-LLC" }, { 0x001BC5, 0x068000, 0x068FFF, "HCS KABLOLAMA SISTEMLERI SAN. ve TIC.A.S.", "HCS-KABLOLAMA-SISTEMLERI-SAN-VE-TIC-A-S" }, { 0x001BC5, 0x072000, 0x072FFF, "Ohio Semitronics, Inc.", "OHIO-SEMITRONICS" }, { 0x001BC5, 0x05A000, 0x05AFFF, "POSTEC DATA SYSTEMS", "POSTEC-DATA" }, { 0x001BC5, 0x04A000, 0x04AFFF, "Certis Technology International Pte Ltd", "CERTIS-PTE" }, { 0x001BC5, 0x054000, 0x054FFF, "Private", "PRIVATE" }, { 0x001BC5, 0x050000, 0x050FFF, "TeliSwitch Solutions", "TELISWITCH-SOLUTIONS" }, { 0x001BC5, 0x040000, 0x040FFF, "OOO Actidata", "OOO-ACTIDATA" }, { 0x001BC5, 0x03B000, 0x03BFFF, "Promixis, LLC", "PROMIXIS-LLC" }, { 0x001BC5, 0x034000, 0x034FFF, "InterCEL Pty Ltd", "INTERCEL-PTY" }, { 0x001BC5, 0x031000, 0x031FFF, "ADIXEIN LIMITED", "ADIXEIN" }, { 0x001BC5, 0x02A000, 0x02AFFF, "Analytical Instrument Systems, Inc.", "ANALYTICAL-INSTRUMENT" }, { 0x001BC5, 0x027000, 0x027FFF, "CAMEA, spol. s r.o.", "CAMEA-SPOL-S-R-O" }, { 0x001BC5, 0x023000, 0x023FFF, "MAGO di Della Mora Walter", "MAGO-DI-DELLA-MORA-WALTER" }, { 0x001BC5, 0x01F000, 0x01FFFF, "Saturn Solutions Ltd", "SATURN-SOLUTIONS" }, { 0x001BC5, 0x012000, 0x012FFF, "Tokyo Cosmos Electric, Inc.", "TOKYO-COSMOS-ELECTRIC" }, { 0x001BC5, 0x00F000, 0x00FFFF, "Simavita Pty Ltd", "SIMAVITA-PTY" }, { 0x001BC5, 0x00B000, 0x00BFFF, "Private", "PRIVATE" }, { 0x001BC5, 0x00C000, 0x00CFFF, "Quantum Technology Sciences, Inc.", "QUANTUM-SCIENCES" }, { 0x001BC5, 0x008000, 0x008FFF, "Dalaj Electro-Telecom", "DALAJ-ELECTRO-TELECOM" }, { 0x001BC5, 0x005000, 0x005FFF, "Private", "PRIVATE" }, { 0x001BC5, 0x016000, 0x016FFF, "Energotechnica OOO NPP Ltd", "ENERGOTECHNICA-OOO-NPP" }, { 0x001BC5, 0x002000, 0x002FFF, "GORAMO - Janusz Gorecki", "GORAMO---JANUSZ-GORECKI" }, { 0x001BC5, 0x019000, 0x019FFF, "Dunlop Systems & Components", "DUNLOP-COMPONENTS" }, { 0x70B3D5, 0xD81000, 0xD81FFF, "PDD Group Ltd", "PDD-GROUP" }, { 0x70B3D5, 0xB7A000, 0xB7AFFF, "MAHLE", "MAHLE" }, { 0x70B3D5, 0xAFE000, 0xAFEFFF, "MESOTECHNIC", "MESOTECHNIC" }, { 0x70B3D5, 0x659000, 0x659FFF, "E2G srl", "E2G-SRL" }, { 0x70B3D5, 0x4A1000, 0x4A1FFF, "Herholdt Controls srl", "HERHOLDT-CONTROLS-SRL" }, { 0x70B3D5, 0xD1B000, 0xD1BFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0xD9E000, 0xD9EFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0xDB4000, 0xDB4FFF, "YUYAMA MFG Co.,Ltd", "YUYAMA-MFG" }, { 0x70B3D5, 0x781000, 0x781FFF, "Project Service S.a.s.", "PROJECT-SERVICE-S" }, { 0x70B3D5, 0xA72000, 0xA72FFF, "Business Marketers Group, Inc.", "BUSINESS-MARKETERS-GROUP" }, { 0x70B3D5, 0x33B000, 0x33BFFF, "Seal Shield, LLC", "SEAL-SHIELD-LLC" }, { 0x70B3D5, 0xE49000, 0xE49FFF, "Kendrion Mechatronics Center GmbH", "KENDRION-MECHATRONICS-CENTER" }, { 0x70B3D5, 0x214000, 0x214FFF, "signalparser", "SIGNALPARSER" }, { 0x70B3D5, 0x3C6000, 0x3C6FFF, "ACD Elekronik GmbH", "ACD-ELEKRONIK" }, { 0x70B3D5, 0x384000, 0x384FFF, "Sensohive Technologies", "SENSOHIVE-TECHNOLOGIES" }, { 0x70B3D5, 0x893000, 0x893FFF, "Cubitech", "CUBITECH" }, { 0x70B3D5, 0x09E000, 0x09EFFF, "MobiPromo", "MOBIPROMO" }, { 0x70B3D5, 0x49E000, 0x49EFFF, "CAPTEMP, Lda", "CAPTEMP-LDA" }, { 0x70B3D5, 0x4B6000, 0x4B6FFF, "VEILUX INC.", "VEILUX" }, { 0x70B3D5, 0x7CF000, 0x7CFFFF, "ORCA Technologies, LLC", "ORCA-TECHNOLOGIES-LLC" }, { 0x70B3D5, 0x5A3000, 0x5A3FFF, "CT Company", "CT-COMPANY" }, { 0x70B3D5, 0x80A000, 0x80AFFF, "SENSING LABS", "SENSING-LABS" }, { 0x70B3D5, 0xE45000, 0xE45FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x70B3D5, 0x059000, 0x059FFF, "Pro-Digital Projetos Eletronicos Ltda", "PRO-DIGITAL-PROJETOS-ELETRONICOS-LTDA" }, { 0x70B3D5, 0x091000, 0x091FFF, "PROFITT Ltd", "PROFITT" }, { 0x70B3D5, 0x647000, 0x647FFF, "KZTA", "KZTA" }, { 0x70B3D5, 0x6DF000, 0x6DFFFF, "Mango DSP, Inc.", "MANGO-DSP" }, { 0x70B3D5, 0xCBE000, 0xCBEFFF, "Ensura Solutions BV", "ENSURA-SOLUTIONS" }, { 0x70B3D5, 0xCAC000, 0xCACFFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x8B9000, 0x8B9FFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x70B3D5, 0x74E000, 0x74EFFF, "PushCorp, Inc.", "PUSHCORP" }, { 0x70B3D5, 0xFD2000, 0xFD2FFF, "DALIAN LEVEAR ELECTRIC CO., LTD", "DALIAN-LEVEAR-ELECTRIC" }, { 0x70B3D5, 0xF08000, 0xF08FFF, "Szabo Software & Engineering UK Ltd", "SZABO-SOFTWARE-ENGINEERING-UK" }, { 0x70B3D5, 0x6A1000, 0x6A1FFF, "GLIAL TECHNOLOGY", "GLIAL" }, { 0x70B3D5, 0x955000, 0x955FFF, "Dynacard Co., Ltd.", "DYNACARD" }, { 0x70B3D5, 0x12B000, 0x12BFFF, "RIC Electronics", "RIC-ELECTRONICS" }, { 0x70B3D5, 0x17E000, 0x17EFFF, "OCULI VISION", "OCULI-VISION" }, { 0x70B3D5, 0x046000, 0x046FFF, "Shenzhen Rihuida Electronics Co,. Ltd", "SHENZHEN-RIHUIDA-ELECTRONICS" }, { 0x70B3D5, 0x268000, 0x268FFF, "Cardinal Scale Mfg Co", "CARDINAL-SCALE-MFG" }, { 0x70B3D5, 0xB7E000, 0xB7EFFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x70B3D5, 0xDB5000, 0xDB5FFF, "Xiamen Point Circle Technologh Co,ltd", "XIAMEN-POINT-CIRCLE-TECHNOLOGH" }, { 0x70B3D5, 0x429000, 0x429FFF, "Redco Audio Inc", "REDCO-AUDIO" }, { 0x70B3D5, 0x2E7000, 0x2E7FFF, "Atos spa", "ATOS-SPA" }, { 0x70B3D5, 0x766000, 0x766FFF, "Tirasoft Nederland", "TIRASOFT-NEDERLAND" }, { 0x70B3D5, 0x17D000, 0x17DFFF, "Entech Electronics", "ENTECH-ELECTRONICS" }, { 0x70B3D5, 0x99A000, 0x99AFFF, "KEVIC. inc,", "KEVIC" }, { 0x70B3D5, 0x02A000, 0x02AFFF, "BAE Systems Surface Ships Limited", "BAE-SURFACE-SHIPS" }, { 0x70B3D5, 0xDE2000, 0xDE2FFF, "ACD Elekronik GmbH", "ACD-ELEKRONIK" }, { 0x70B3D5, 0x2BB000, 0x2BBFFF, "Automation Networks & Solutions LLC", "AUTOMATION-NETWORKS-SOLUTIONS-LLC" }, { 0x70B3D5, 0xAB4000, 0xAB4FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 0x70B3D5, 0x35A000, 0x35AFFF, "Applied Radar, Inc.", "APPLIED-RADAR" }, { 0x70B3D5, 0x042000, 0x042FFF, "Coveloz Technologies Inc.", "COVELOZ-TECHNOLOGIES" }, { 0x70B3D5, 0xC1B000, 0xC1BFFF, "Labinvent JSC", "LABINVENT-JSC" }, { 0x70B3D5, 0xE2E000, 0xE2EFFF, "Merz s.r.o.", "MERZ-S-R-O" }, { 0x70B3D5, 0xDE4000, 0xDE4FFF, "MAVILI ELEKTRONIK TIC. VE SAN. A.S.", "MAVILI-ELEKTRONIK-TIC-VE-SAN-A-S" }, { 0x70B3D5, 0x712000, 0x712FFF, "APG Cash Drawer, LLC", "APG-CASH-DRAWER-LLC" }, { 0x70B3D5, 0x776000, 0x776FFF, "Power Ltd.", "POWER" }, { 0x70B3D5, 0xB72000, 0xB72FFF, "UB330.net d.o.o.", "UB330-NET-D-O-O" }, { 0x70B3D5, 0x7D9000, 0x7D9FFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x70B3D5, 0x7DE000, 0x7DEFFF, "Telaeris, Inc.", "TELAERIS" }, { 0x70B3D5, 0xA10000, 0xA10FFF, "w-tec AG", "W-TEC" }, { 0x70B3D5, 0x13E000, 0x13EFFF, "Stara S/A Indústria de Implementos Agrícolas", "STARA-S/A-INDúSTRIA-DE-IMPLEMENTOS-AGRíCOLAS" }, { 0x70B3D5, 0x0BA000, 0x0BAFFF, "Ayre Acoustics, Inc.", "AYRE-ACOUSTICS" }, { 0x70B3D5, 0x10C000, 0x10CFFF, "Vocality International Ltd", "VOCALITY" }, { 0x70B3D5, 0xB7D000, 0xB7DFFF, "LOGIX ITS Inc", "LOGIX-ITS" }, { 0x70B3D5, 0x307000, 0x307FFF, "Energi innovation Aps", "ENERGI-INNOVATION-APS" }, { 0x70B3D5, 0x9FA000, 0x9FAFFF, "Ideas srl", "IDEAS-SRL" }, { 0x70B3D5, 0x649000, 0x649FFF, "swissled technologies AG", "SWISSLED-TECHNOLOGIES" }, { 0x70B3D5, 0xC0E000, 0xC0EFFF, "SYSDEV Srl", "SYSDEV-SRL" }, { 0x70B3D5, 0x4C7000, 0x4C7FFF, "SOLVERIS sp. z o.o.", "SOLVERIS-SP-Z-O-O" }, { 0x70B3D5, 0x7A4000, 0x7A4FFF, "Potter Electric Signal Co. LLC", "POTTER-ELECTRIC-SIGNAL-LLC" }, { 0x70B3D5, 0xC86000, 0xC86FFF, "Woodam Co., Ltd.", "WOODAM" }, { 0x70B3D5, 0xBE8000, 0xBE8FFF, "AndFun Co.,Ltd.", "ANDFUN" }, { 0x70B3D5, 0x27A000, 0x27AFFF, "TD ECOPHISIKA", "TD-ECOPHISIKA" }, { 0x70B3D5, 0x54F000, 0x54FFFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x70B3D5, 0xC0A000, 0xC0AFFF, "Infosocket Co., Ltd.", "INFOSOCKET" }, { 0x70B3D5, 0xD95000, 0xD95FFF, "SANO SERVICE Co.,Ltd", "SANO-SERVICE" }, { 0x70B3D5, 0x2AC000, 0x2ACFFF, "New Imaging Technologies", "NEW-IMAGING-TECHNOLOGIES" }, { 0x70B3D5, 0x0D3000, 0x0D3FFF, "TSAT AS", "TSAT-AS" }, { 0x70B3D5, 0xA89000, 0xA89FFF, "GBS COMMUNICATIONS, LLC", "GBS-COMMUNICATION-LLC" }, { 0x70B3D5, 0x7E1000, 0x7E1FFF, "Applied Materials", "APPLIED-MATERIALS" }, { 0x70B3D5, 0x54C000, 0x54CFFF, "Husty M.Styczen J.Hupert Sp.J.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x70B3D5, 0x041000, 0x041FFF, "FIBERNET LTD", "FIBERNET" }, { 0x70B3D5, 0xAAE000, 0xAAEFFF, "Nuviz Oy", "NUVIZ-OY" }, { 0x70B3D5, 0x881000, 0x881FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x1FE000, 0x1FEFFF, "MobiPromo", "MOBIPROMO" }, { 0x70B3D5, 0xF0B000, 0xF0BFFF, "RF Industries", "RF-INDUSTRIES" }, { 0x70B3D5, 0x217000, 0x217FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x70B3D5, 0x5E6000, 0x5E6FFF, "Mechatronics Systems Private Limited", "MECHATRONICS-PRIVATE" }, { 0x70B3D5, 0x88B000, 0x88BFFF, "WUHAN EASYLINKIN TECHNOLOGY co.,LTD", "WUHAN-EASYLINKIN" }, { 0x70B3D5, 0x49F000, 0x49FFFF, "B.P.A. SRL", "B-P-A-SRL" }, { 0x70B3D5, 0xC91000, 0xC91FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x70B3D5, 0x986000, 0x986FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xFF3000, 0xFF3FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x7CE000, 0x7CEFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xF4F000, 0xF4FFFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x70B3D5, 0x4E9000, 0x4E9FFF, "ADETEC SAS", "ADETEC-SAS" }, { 0x70B3D5, 0x09D000, 0x09DFFF, "P&S GmbH", "P-S" }, { 0x70B3D5, 0xFB0000, 0xFB0FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x885000, 0x885FFF, "QuirkLogic", "QUIRKLOGIC" }, { 0x70B3D5, 0x274000, 0x274FFF, "Stercom Power Solutions GmbH", "STERCOM-POWER-SOLUTIONS" }, { 0x70B3D5, 0x615000, 0x615FFF, "JSC OTZVUK", "JSC-OTZVUK" }, { 0x70B3D5, 0x889000, 0x889FFF, "Innovative Circuit Technology", "INNOVATIVE-CIRCUIT" }, { 0x70B3D5, 0x58D000, 0x58DFFF, "DORLET SAU", "DORLET-SAU" }, { 0x70B3D5, 0xFAA000, 0xFAAFFF, "LogiM GmbH Software und Entwicklung", "LOGIM-SOFTWARE-UND-ENTWICKLUNG" }, { 0x70B3D5, 0x854000, 0x854FFF, "Adimec Advanced Image Systems", "ADIMEC-ADVANCED-IMAGE" }, { 0x70B3D5, 0xFB3000, 0xFB3FFF, "3PS Inc", "3PS" }, { 0x70B3D5, 0xCAA000, 0xCAAFFF, "Bel Power Solutions GmbH", "BEL-POWER-SOLUTIONS" }, { 0x70B3D5, 0xB9E000, 0xB9EFFF, "POLSYSTEM SI SP. Z O.O., S.K.A.", "POLSYSTEM-SI-SP-Z-O-O-S-K-A" }, { 0x70B3D5, 0x4B0000, 0x4B0FFF, "Tecogen Inc.", "TECOGEN" }, { 0x70B3D5, 0x4A7000, 0x4A7FFF, "aelettronica group srl", "AELETTRONICA-GROUP-SRL" }, { 0x70B3D5, 0x238000, 0x238FFF, "Arete Associates", "ARETE-ASSOCIATES" }, { 0x70B3D5, 0x9B6000, 0x9B6FFF, "Intercomp S.p.A.", "INTERCOMP-S-P-A" }, { 0x70B3D5, 0xE8F000, 0xE8FFFF, "DISMUNTEL, S.A.", "DISMUNTEL" }, { 0x70B3D5, 0x7B0000, 0x7B0FFF, "Medisafe International", "MEDISAFE" }, { 0x70B3D5, 0x09F000, 0x09FFFF, "COMTECH Kft.", "COMTECH-KFT" }, { 0x70B3D5, 0x009000, 0x009FFF, "HolidayCoro", "HOLIDAYCORO" }, { 0x70B3D5, 0xAB0000, 0xAB0FFF, "OSR R&D ISRAEL LTD", "OSR-R-D-ISRAEL" }, { 0x70B3D5, 0x317000, 0x317FFF, "Iotopia Solutions", "IOTOPIA-SOLUTIONS" }, { 0x70B3D5, 0xD32000, 0xD32FFF, "Euklis by GSG International", "EUKLIS-BY-GSG" }, { 0x70B3D5, 0x6B0000, 0x6B0FFF, "PTYPE Co., LTD.", "PTYPE" }, { 0x70B3D5, 0x1E9000, 0x1E9FFF, "comtime GmbH", "COMTIME" }, { 0x70B3D5, 0x86C000, 0x86CFFF, "eeas gmbh", "EEAS" }, { 0x70B3D5, 0xB0C000, 0xB0CFFF, "Vigilate srl", "VIGILATE-SRL" }, { 0x70B3D5, 0xB37000, 0xB37FFF, "CODEC Co., Ltd.", "CODEC" }, { 0x70B3D5, 0x597000, 0x597FFF, "VAPE RAIL INTERNATIONAL", "VAPE-RAIL" }, { 0x70B3D5, 0x850000, 0x850FFF, "REO AG", "REO" }, { 0x70B3D5, 0x37A000, 0x37AFFF, "APG Cash Drawer, LLC", "APG-CASH-DRAWER-LLC" }, { 0x70B3D5, 0xC3D000, 0xC3DFFF, "CISTECH Solutions", "CISTECH-SOLUTIONS" }, { 0x70B3D5, 0xF8B000, 0xF8BFFF, "IOOOTA Srl", "IOOOTA-SRL" }, { 0x70B3D5, 0x2EC000, 0x2ECFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0x99E000, 0x99EFFF, "Trinity College Dublin", "TRINITY-COLLEGE-DUBLIN" }, { 0x70B3D5, 0x462000, 0x462FFF, "EarTex", "EARTEX" }, { 0x70B3D5, 0x4CE000, 0x4CEFFF, "Agilack", "AGILACK" }, { 0x70B3D5, 0xF17000, 0xF17FFF, "VITEC", "VITEC" }, { 0x70B3D5, 0x11D000, 0x11DFFF, "Dakton Microlabs LLC", "DAKTON-MICROLABS-LLC" }, { 0x70B3D5, 0x924000, 0x924FFF, "Meridian Technologies Inc", "MERIDIAN-TECHNOLOGIES" }, { 0x70B3D5, 0x03D000, 0x03DFFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x70B3D5, 0xB97000, 0xB97FFF, "Canam Technology, Inc.", "CANAM" }, { 0x70B3D5, 0x352000, 0x352FFF, "Globalcom Engineering SPA", "GLOBALCOM-ENGINEERING-SPA" }, { 0x70B3D5, 0x7F4000, 0x7F4FFF, "KST technology", "KST" }, { 0x70B3D5, 0x122000, 0x122FFF, "Henri Systems Holland bv", "HENRI-HOLLAND" }, { 0x70B3D5, 0x767000, 0x767FFF, "FRANKLIN FRANCE", "FRANKLIN-FRANCE" }, { 0x70B3D5, 0x465000, 0x465FFF, "ENERGISME", "ENERGISME" }, { 0x70B3D5, 0xE09000, 0xE09FFF, "L-3 communications ComCept Division", "L-3-COMMUNICATION-COMCEPT-DIVISION" }, { 0x70B3D5, 0xA07000, 0xA07FFF, "IoTrek Technology Private Limited", "IOTREK-PRIVATE" }, { 0x70B3D5, 0x21D000, 0x21DFFF, "iRF - Intelligent RF Solutions, LLC", "IRF---INTELLIGENT-RF-SOLUTIONS-LLC" }, { 0x70B3D5, 0xE9C000, 0xE9CFFF, "ATG UV Technology", "ATG-UV" }, { 0x70B3D5, 0x39E000, 0x39EFFF, "Lanmark Controls Inc.", "LANMARK-CONTROLS" }, { 0x70B3D5, 0x267000, 0x267FFF, "Zehntner Testing Instruments", "ZEHNTNER-TESTING-INSTRUMENTS" }, { 0x70B3D5, 0xC2E000, 0xC2EFFF, "Triax A/S", "TRIAX-A/S" }, { 0x70B3D5, 0x0EF000, 0x0EFFFF, "Dextera Labs", "DEXTERA-LABS" }, { 0x70B3D5, 0x4C2000, 0x4C2FFF, "hera Laborsysteme GmbH", "HERA-LABORSYSTEME" }, { 0x70B3D5, 0x0A1000, 0x0A1FFF, "PTN Electronics Limited", "PTN-ELECTRONICS" }, { 0x70B3D5, 0xAA4000, 0xAA4FFF, "Pullnet Technology,S.L.", "PULLNET-S-L" }, { 0x70B3D5, 0xC68000, 0xC68FFF, "Mini Solution Co. Ltd.", "MINI-SOLUTION" }, { 0x70B3D5, 0x81A000, 0x81AFFF, "Joehl & Koeferli AG", "JOEHL-KOEFERLI" }, { 0x70B3D5, 0x86E000, 0x86EFFF, "Profcon AB", "PROFCON-AB" }, { 0x70B3D5, 0x0E8000, 0x0E8FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x70B3D5, 0x9D9000, 0x9D9FFF, "ATX Networks Corp", "ATX-NETWORKS" }, { 0x70B3D5, 0x348000, 0x348FFF, "BÄR Bahnsicherung AG", "BAER-BAHNSICHERUNG" }, { 0x70B3D5, 0xA30000, 0xA30FFF, "SHEN ZHEN HUAWANG TECHNOLOGY CO; LTD", "SHEN-ZHEN-HUAWANG" }, { 0x70B3D5, 0xDFD000, 0xDFDFFF, "Contiweb", "CONTIWEB" }, { 0x70B3D5, 0xB30000, 0xB30FFF, "Systolé Hardware B.V.", "SYSTOLé-HARDWARE" }, { 0x70B3D5, 0x3BF000, 0x3BFFFF, "Star Electronics GmbH & Co. KG", "STAR-ELECTRONICS" }, { 0x70B3D5, 0x745000, 0x745FFF, "TMSI LLC", "TMSI-LLC" }, { 0x70B3D5, 0xD1C000, 0xD1CFFF, "Specialised Imaging Limited", "SPECIALISED-IMAGING" }, { 0x70B3D5, 0xE8E000, 0xE8EFFF, "Macnica Technology", "MACNICA" }, { 0x70B3D5, 0xADF000, 0xADFFFF, "Seraphim Optronics Ltd", "SERAPHIM-OPTRONICS" }, { 0x70B3D5, 0x22C000, 0x22CFFF, "Hiquel Elektronik- und Anlagenbau GmbH", "HIQUEL-ELEKTRONIK--UND-ANLAGENBAU" }, { 0x70B3D5, 0xDCE000, 0xDCEFFF, "Stahl GmbH", "STAHL" }, { 0x70B3D5, 0x2A2000, 0x2A2FFF, "Visualware, Inc.", "VISUALWARE" }, { 0x70B3D5, 0xD08000, 0xD08FFF, "Veeco Instruments", "VEECO-INSTRUMENTS" }, { 0x70B3D5, 0x630000, 0x630FFF, "LGE", "LGE" }, { 0x70B3D5, 0x873000, 0x873FFF, "Vishay Nobel AB", "VISHAY-NOBEL-AB" }, { 0x70B3D5, 0x653000, 0x653FFF, "Luxar Tech, Inc.", "LUXAR-TECH" }, { 0x70B3D5, 0xF1F000, 0xF1FFFF, "HKC Limited", "HKC" }, { 0x70B3D5, 0xAF6000, 0xAF6FFF, "S.C.E. srl", "S-C-E-SRL" }, { 0x70B3D5, 0xF37000, 0xF37FFF, "Mitsubishi Electric Micro-Computer Application Software Co.,Ltd.", "MITSUBISHI-ELECTRIC-MICRO--APPLICATION-SOFTWARE" }, { 0x70B3D5, 0x8C3000, 0x8C3FFF, "Wyebot, Inc.", "WYEBOT" }, { 0x70B3D5, 0x42D000, 0x42DFFF, "RCH Italia SpA", "RCH-ITALIA-SPA" }, { 0x70B3D5, 0x332000, 0x332FFF, "InnoSenT", "INNOSENT" }, { 0x70B3D5, 0xDEE000, 0xDEEFFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xA47000, 0xA47FFF, "KANOA INC", "KANOA" }, { 0x70B3D5, 0xF45000, 0xF45FFF, "Norbit ODM AS", "NORBIT-ODM-AS" }, { 0x70B3D5, 0xE59000, 0xE59FFF, "Fracarro srl", "FRACARRO-SRL" }, { 0x70B3D5, 0x127000, 0x127FFF, "VITEC", "VITEC" }, { 0x001BC5, 0x046000, 0x046FFF, "GÉANT", "GÉANT" }, { 0x70B3D5, 0x73A000, 0x73AFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x9DE000, 0x9DEFFF, "System 11 Sp. z o.o.", "SYSTEM-11-SP-Z-O-O" }, { 0x70B3D5, 0x96D000, 0x96DFFF, "MSB Elektronik und Gerätebau GmbH", "MSB-ELEKTRONIK-UND-GERAETEBAU" }, { 0x70B3D5, 0xC17000, 0xC17FFF, "Potter Electric Signal Co. LLC", "POTTER-ELECTRIC-SIGNAL-LLC" }, { 0x70B3D5, 0x108000, 0x108FFF, "TEX COMPUTER SRL", "TEX-SRL" }, { 0x70B3D5, 0x007000, 0x007FFF, "SENSONEO", "SENSONEO" }, { 0x70B3D5, 0x4E7000, 0x4E7FFF, "Digital Domain", "DIGITAL-DOMAIN" }, { 0x70B3D5, 0xD10000, 0xD10FFF, "Contec DTx", "CONTEC-DTX" }, { 0x70B3D5, 0x7F3000, 0x7F3FFF, "Shenzhen Virtual Clusters Information Technology Co.,Ltd.", "SHENZHEN-VIRTUAL-CLUSTERS-INFORMATION" }, { 0x70B3D5, 0xC8C000, 0xC8CFFF, "Rollogo Limited", "ROLLOGO" }, { 0x70B3D5, 0xD4C000, 0xD4CFFF, "Elystec Technology Co., Ltd", "ELYSTEC" }, { 0x70B3D5, 0x96B000, 0x96BFFF, "FOCAL-JMLab", "FOCAL-JMLAB" }, { 0x70B3D5, 0x84D000, 0x84DFFF, "Quantum Design Inc.", "QUANTUM-DESIGN" }, { 0x70B3D5, 0xE57000, 0xE57FFF, "Iradimed", "IRADIMED" }, { 0x70B3D5, 0x125000, 0x125FFF, "Securolytics, Inc.", "SECUROLYTICS" }, { 0x70B3D5, 0xC6E000, 0xC6EFFF, "Orion Technologies, LLC", "ORION-TECHNOLOGIES-LLC" }, { 0x70B3D5, 0xCC8000, 0xCC8FFF, "PROFEN COMMUNICATIONS", "PROFEN-COMMUNICATION" }, { 0x70B3D5, 0xFDB000, 0xFDBFFF, "Design SHIFT", "DESIGN-SHIFT" }, { 0x70B3D5, 0x791000, 0x791FFF, "Romteck Australia", "ROMTECK-AUSTRALIA" }, { 0x70B3D5, 0xD20000, 0xD20FFF, "Rheonics GmbH", "RHEONICS" }, { 0x70B3D5, 0x69F000, 0x69FFFF, "T+A elektroakustik GmbH & Co.KG", "T+A-ELEKTROAKUSTIK" }, { 0x70B3D5, 0x5FB000, 0x5FBFFF, "TELEPLATFORMS", "TELEPLATFORMS" }, { 0x70B3D5, 0x768000, 0x768FFF, "Kazan Networks Corporation", "KAZAN-NETWORKS" }, { 0x70B3D5, 0x6B2000, 0x6B2FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x7F7000, 0x7F7FFF, "JASCO Applied Sciences Canada Ltd", "JASCO-APPLIED-SCIENCES-CANADA" }, { 0x70B3D5, 0xF42000, 0xF42FFF, "Matsuhisa Corporation", "MATSUHISA" }, { 0x70B3D5, 0x381000, 0x381FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x488000, 0x488FFF, "Cardinal Scale Mfg Co", "CARDINAL-SCALE-MFG" }, { 0x70B3D5, 0x273000, 0x273FFF, "WeVo Tech", "WEVO-TECH" }, { 0x70B3D5, 0x379000, 0x379FFF, "Vensi, Inc.", "VENSI" }, { 0x70B3D5, 0x0B2000, 0x0B2FFF, "ndb technologies", "NDB-TECHNOLOGIES" }, { 0x70B3D5, 0xCB3000, 0xCB3FFF, "KST technology", "KST" }, { 0x70B3D5, 0x30D000, 0x30DFFF, "Fiberbase", "FIBERBASE" }, { 0x70B3D5, 0x842000, 0x842FFF, "PLUTO Solution co.,ltd.", "PLUTO-SOLUTION" }, { 0x70B3D5, 0x580000, 0x580FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xEB9000, 0xEB9FFF, "Thiel Audio Products Company, LLC", "THIEL-AUDIO-PRODUCTS-COMPANY-LLC" }, { 0x70B3D5, 0x031000, 0x031FFF, "SHENZHEN GAONA ELECTRONIC CO.LTD", "SHENZHEN-GAONA" }, { 0x70B3D5, 0x548000, 0x548FFF, "DIGIVERV INC", "DIGIVERV" }, { 0x70B3D5, 0x494000, 0x494FFF, "Schildknecht AG", "SCHILDKNECHT" }, { 0x70B3D5, 0xBF2000, 0xBF2FFF, "TWIN DEVELOPMENT", "TWIN-DEVELOPMENT" }, { 0x70B3D5, 0x901000, 0x901FFF, "ATS-CONVERS", "ATS-CONVERS" }, { 0x70B3D5, 0x654000, 0x654FFF, "EMAC, Inc.", "EMAC" }, { 0x70B3D5, 0xF6E000, 0xF6EFFF, "Streambox Inc", "STREAMBOX" }, { 0x70B3D5, 0xD5B000, 0xD5BFFF, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x70B3D5, 0x6CD000, 0x6CDFFF, "NORTHBOUND NETWORKS PTY. LTD.", "NORTHBOUND-NETWORKS-PTY" }, { 0x70B3D5, 0xB7C000, 0xB7CFFF, "Electronic Navigation Ltd", "NAVIGATION" }, { 0x70B3D5, 0xC92000, 0xC92FFF, "Unitro Fleischmann", "UNITRO-FLEISCHMANN" }, { 0x70B3D5, 0x8A0000, 0x8A0FFF, "DM RADIOCOM", "DM-RADIOCOM" }, { 0x70B3D5, 0x081000, 0x081FFF, "IST Technologies (SHENZHEN) Limited", "IST-TECHNOLOGIES-SHENZHEN" }, { 0x70B3D5, 0xC77000, 0xC77FFF, "Yönnet Akıllı Bina ve Otomasyon Sistemleri", "YOENNET-AKıLLı-BINA-VE-OTOMASYON-SISTEMLERI" }, { 0x70B3D5, 0xD74000, 0xD74FFF, "Sandia National Laboratories", "SANDIA-NATIONAL-LABORATORIES" }, { 0x70B3D5, 0xFCF000, 0xFCFFFF, "Acc+Ess Ltd", "ACC+ESS" }, { 0x70B3D5, 0x3C0000, 0x3C0FFF, "DK-Technologies A/S", "DK-TECHNOLOGIES-A/S" }, { 0x70B3D5, 0x2F6000, 0x2F6FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x364000, 0x364FFF, "ADAMCZEWSKI elektronische Messtechnik GmbH", "ADAMCZEWSKI-ELEKTRONISCHE-MESSTECHNIK" }, { 0x70B3D5, 0x48E000, 0x48EFFF, "Allim System Co,.Ltd.", "ALLIM-SYSTEM" }, { 0x70B3D5, 0x9ED000, 0x9EDFFF, "Benchmark Electronics BV", "BENCHMARK-ELECTRONICS" }, { 0x70B3D5, 0x774000, 0x774FFF, "Micram Instruments Ltd", "MICRAM-INSTRUMENTS" }, { 0x70B3D5, 0x76A000, 0x76AFFF, "Swiftnet SOC Ltd", "SWIFTNET-SOC" }, { 0x70B3D5, 0xD7E000, 0xD7EFFF, "Triax A/S", "TRIAX-A/S" }, { 0x70B3D5, 0x061000, 0x061FFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x70B3D5, 0x383000, 0x383FFF, "LPA Excil Electronics", "LPA-EXCIL-ELECTRONICS" }, { 0x70B3D5, 0x504000, 0x504FFF, "Xsight Systems Ltd.", "XSIGHT" }, { 0x70B3D5, 0x2CE000, 0x2CEFFF, "KDT", "KDT" }, { 0x70B3D5, 0xC07000, 0xC07FFF, "ARECO", "ARECO" }, { 0x70B3D5, 0xDCA000, 0xDCAFFF, "DSan Corporation", "DSAN" }, { 0x70B3D5, 0x25B000, 0x25BFFF, "GID Industrial", "GID-INDUSTRIAL" }, { 0x70B3D5, 0x313000, 0x313FFF, "DIEHL Controls", "DIEHL-CONTROLS" }, { 0x70B3D5, 0x278000, 0x278FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x645000, 0x645FFF, "Project Decibel, Inc.", "PROJECT-DECIBEL" }, { 0x70B3D5, 0x377000, 0x377FFF, "Monnit Corporation", "MONNIT" }, { 0x70B3D5, 0xA12000, 0xA12FFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x70B3D5, 0xB34000, 0xB34FFF, "Medtronic", "MEDTRONIC" }, { 0x70B3D5, 0x303000, 0x303FFF, "Fuchu Giken, Inc.", "FUCHU-GIKEN" }, { 0x70B3D5, 0x6F9000, 0x6F9FFF, "ENVItech s.r.o.", "ENVITECH-S-R-O" }, { 0x70B3D5, 0x100000, 0x100FFF, "Gupsy GmbH", "GUPSY" }, { 0x70B3D5, 0xC89000, 0xC89FFF, "ARD", "ARD" }, { 0x70B3D5, 0x2E0000, 0x2E0FFF, "Peter Huber", "PETER-HUBER" }, { 0x70B3D5, 0x088000, 0x088FFF, "OptiScan Biomedical Corp.", "OPTISCAN-BIOMEDICAL" }, { 0x70B3D5, 0x226000, 0x226FFF, "Yaviar", "YAVIAR" }, { 0x70B3D5, 0xD57000, 0xD57FFF, "TRIUMPH BOARD a.s.", "TRIUMPH-BOARD-A-S" }, { 0x70B3D5, 0x4DB000, 0x4DBFFF, "Temperature@lert", "TEMPERATURE@LERT" }, { 0x70B3D5, 0x343000, 0x343FFF, "Elektro-System s.c.", "ELEKTRO-SYSTEM-S-C" }, { 0x70B3D5, 0x9F2000, 0x9F2FFF, "Acorde Technologies", "ACORDE-TECHNOLOGIES" }, { 0x70B3D5, 0xE3B000, 0xE3BFFF, "ComNav Technology Ltd.", "COMNAV" }, { 0x70B3D5, 0x339000, 0x339FFF, "Sierra Nevada Corporation", "SIERRA-NEVADA" }, { 0x70B3D5, 0x703000, 0x703FFF, "StromIdee GmbH", "STROMIDEE" }, { 0x70B3D5, 0xE6D000, 0xE6DFFF, "Domus S.C.", "DOMUS-S-C" }, { 0x70B3D5, 0xF00000, 0xF00FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x7C3000, 0x7C3FFF, "Flexim Security Oy", "FLEXIM-SECURITY-OY" }, { 0x70B3D5, 0x3E4000, 0x3E4FFF, "Neptec Technologies Corp.", "NEPTEC-TECHNOLOGIES" }, { 0x70B3D5, 0x595000, 0x595FFF, "PLR Prueftechnik Linke und Ruehe GmbH", "PLR-PRUEFTECHNIK-LINKE-UND-RUEHE" }, { 0x70B3D5, 0xE36000, 0xE36FFF, "Guidance Navigation Limited", "GUIDANCE-NAVIGATION" }, { 0x70B3D5, 0xB47000, 0xB47FFF, "DSIT Solutions LTD", "DSIT-SOLUTIONS" }, { 0x70B3D5, 0x2F1000, 0x2F1FFF, "Inspike S.R.L.", "INSPIKE-S-R-L" }, { 0x70B3D5, 0xAFB000, 0xAFBFFF, "Shanghai Tianhe Automation Instrumentation Co., Ltd.", "SHANGHAI-TIANHE-AUTOMATION-INSTRUMENTATION" }, { 0x70B3D5, 0xAD5000, 0xAD5FFF, "Birdland Audio", "BIRDLAND-AUDIO" }, { 0x70B3D5, 0xF93000, 0xF93FFF, "Hella Gutmann Solutions GmbH", "HELLA-GUTMANN-SOLUTIONS" }, { 0x70B3D5, 0xF01000, 0xF01FFF, "Software Systems Plus", "SOFTWARE-PLUS" }, { 0x70B3D5, 0x3E2000, 0x3E2FFF, "AVI Pty Ltd", "AVI-PTY" }, { 0x70B3D5, 0xC2A000, 0xC2AFFF, "Array Telepresence", "ARRAY-TELEPRESENCE" }, { 0x70B3D5, 0xF8E000, 0xF8EFFF, "Isabellenhütte Heusler Gmbh &Co KG", "ISABELLENHUETTE-HEUSLER" }, { 0x70B3D5, 0xFA2000, 0xFA2FFF, "Sarokal Test Systems Oy", "SAROKAL-TEST-OY" }, { 0x70B3D5, 0x134000, 0x134FFF, "Conjing Networks Inc.", "CONJING-NETWORKS" }, { 0x70B3D5, 0x208000, 0x208FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x70B3D5, 0x870000, 0x870FFF, "bentrup Industriesteuerungen", "BENTRUP-INDUSTRIESTEUERUNGEN" }, { 0x70B3D5, 0x4D8000, 0x4D8FFF, "Versilis Inc.", "VERSILIS" }, { 0x70B3D5, 0xA26000, 0xA26FFF, "Hear Gear, Inc.", "HEAR-GEAR" }, { 0x70B3D5, 0xC87000, 0xC87FFF, "Siemens AG", "SIEMENS" }, { 0x70B3D5, 0x7AE000, 0x7AEFFF, "Exi Flow Measurement Ltd", "EXI-FLOW-MEASUREMENT" }, { 0x70B3D5, 0x4DF000, 0x4DFFFF, "Nidec Avtron Automation Corp", "NIDEC-AVTRON-AUTOMATION" }, { 0x70B3D5, 0x4AD000, 0x4ADFFF, "GACI", "GACI" }, { 0x70B3D5, 0xDF9000, 0xDF9FFF, "Korea Plant Maintenance", "KOREA-PLANT-MAINTENANCE" }, { 0x70B3D5, 0xBAE000, 0xBAEFFF, "WARECUBE,INC", "WARECUBE" }, { 0x70B3D5, 0x119000, 0x119FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xC85000, 0xC85FFF, "Solid State Disks Ltd", "SOLID-STATE-DISKS" }, { 0x70B3D5, 0xA44000, 0xA44FFF, "FSR Inc", "FSR" }, { 0x70B3D5, 0x347000, 0x347FFF, "OAS Sweden AB", "OAS-SWEDEN-AB" }, { 0x70B3D5, 0x361000, 0x361FFF, "Parent Power", "PARENT-POWER" }, { 0x70B3D5, 0xFA4000, 0xFA4FFF, "Energybox Limited", "ENERGYBOX" }, { 0x70B3D5, 0xA2A000, 0xA2AFFF, "Redwood Systems", "REDWOOD" }, { 0x70B3D5, 0x73E000, 0x73EFFF, "Trident RFID Pty Ltd", "TRIDENT-RFID-PTY" }, { 0x70B3D5, 0x65D000, 0x65DFFF, "GEGA ELECTRONIQUE", "GEGA-ELECTRONIQUE" }, { 0x70B3D5, 0x9BD000, 0x9BDFFF, "Signal Processing Devices Sweden AB", "SIGNAL-PROCESSING-DEVICES-SWEDEN-AB" }, { 0x70B3D5, 0xAA7000, 0xAA7FFF, "ATEME", "ATEME" }, { 0x70B3D5, 0x20E000, 0x20EFFF, "Amrehn & Partner EDV-Service GmbH", "AMREHN-PARTNER-EDV-SERVICE" }, { 0x70B3D5, 0xE70000, 0xE70FFF, "DISK Multimedia s.r.o.", "DISK-MULTIMEDIA-S-R-O" }, { 0x70B3D5, 0xEAB000, 0xEABFFF, "APEN GROUP SpA (VAT IT08767740155)", "APEN-GROUP-SPA-VAT-IT08767740155" }, { 0x70B3D5, 0x79E000, 0x79EFFF, "CW2. Gmbh & Co. KG", "CW2" }, { 0x70B3D5, 0xEB1000, 0xEB1FFF, "CP contech electronic GmbH", "CP-CONTECH" }, { 0x70B3D5, 0xD97000, 0xD97FFF, "BRS Sistemas Eletronicos", "BRS-SISTEMAS-ELETRONICOS" }, { 0x70B3D5, 0x63A000, 0x63AFFF, "DAVE SRL", "DAVE-SRL" }, { 0x70B3D5, 0xC9B000, 0xC9BFFF, "Tieto Sweden AB", "TIETO-SWEDEN-AB" }, { 0x70B3D5, 0x4F0000, 0x4F0FFF, "Li Seng Technology Ltd.,", "LI-SENG" }, { 0x70B3D5, 0xF92000, 0xF92FFF, "TechOne", "TECHONE" }, { 0x70B3D5, 0xD1F000, 0xD1FFFF, "Embsec AB", "EMBSEC-AB" }, { 0x70B3D5, 0x796000, 0x796FFF, "GAMPT mbH", "GAMPT-MBH" }, { 0x70B3D5, 0x0A5000, 0x0A5FFF, "FUELCELLPOWER", "FUELCELLPOWER" }, { 0x70B3D5, 0xAB9000, 0xAB9FFF, "Dynamic Controls", "DYNAMIC-CONTROLS" }, { 0x70B3D5, 0xC25000, 0xC25FFF, "speedsignal GmbH", "SPEEDSIGNAL" }, { 0x70B3D5, 0x6E4000, 0x6E4FFF, "Institute of Power Engineering, Gdansk Division", "INSTITUTE-OF-POWER-ENGINEERING-GDANSK-DIVISION" }, { 0x70B3D5, 0xD46000, 0xD46FFF, "Contineo s.r.o.", "CONTINEO-S-R-O" }, { 0x70B3D5, 0x665000, 0x665FFF, "CertUsus GmbH", "CERTUSUS" }, { 0x70B3D5, 0x2CF000, 0x2CFFFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0xA50000, 0xA50FFF, "LECIP CORPORATION", "LECIP" }, { 0x70B3D5, 0xA4B000, 0xA4BFFF, "McKay Brothers LLC", "MCKAY-BROTHERS-LLC" }, { 0x70B3D5, 0x5E4000, 0x5E4FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x70B3D5, 0xDF0000, 0xDF0FFF, "astozi consulting Tomasz Zieba", "ASTOZI-CONSULTING-TOMASZ-ZIEBA" }, { 0x70B3D5, 0xCF3000, 0xCF3FFF, "Mesh Motion Inc", "MESH-MOTION" }, { 0x70B3D5, 0x0B3000, 0x0B3FFF, "Reonix Automation", "REONIX-AUTOMATION" }, { 0x70B3D5, 0x34A000, 0x34AFFF, "PAVO TASARIM ÜRETİM TİC A.Ş.", "PAVO-TASARIM-UERETİM-TİC-A-Ş" }, { 0x70B3D5, 0x6E5000, 0x6E5FFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x8F5000, 0x8F5FFF, "Stmovic", "STMOVIC" }, { 0x70B3D5, 0xABF000, 0xABFFFF, "AGR International", "AGR" }, { 0x70B3D5, 0x755000, 0x755FFF, "LandmarkTech Systems Technology Co.,Ltd.", "LANDMARKTECH" }, { 0x70B3D5, 0xB3C000, 0xB3CFFF, "DORLET SAU", "DORLET-SAU" }, { 0x70B3D5, 0x57B000, 0x57BFFF, "ELAMAKATO GmbH", "ELAMAKATO" }, { 0x70B3D5, 0xA57000, 0xA57FFF, "PCSC", "PCSC" }, { 0x70B3D5, 0x8E1000, 0x8E1FFF, "WoKa-Elektronik GmbH", "WOKA-ELEKTRONIK" }, { 0x70B3D5, 0xBA4000, 0xBA4FFF, "EIWA GIKEN INC.", "EIWA-GIKEN" }, { 0x70B3D5, 0xF8C000, 0xF8CFFF, "EUROPEAN ADVANCED TECHNOLOGIES", "EUROPEAN-ADVANCED-TECHNOLOGIES" }, { 0x70B3D5, 0x85C000, 0x85CFFF, "Robot Pub Group", "ROBOT-PUB-GROUP" }, { 0x70B3D5, 0xAFA000, 0xAFAFFF, "Power Security Systems Ltd.", "POWER-SECURITY" }, { 0x70B3D5, 0x77C000, 0x77CFFF, "HUSTY M.Styczen J.Hupert Sp.J.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x70B3D5, 0xCDE000, 0xCDEFFF, "Multipure International", "MULTIPURE" }, { 0x70B3D5, 0xF2B000, 0xF2BFFF, "SENSYS GmbH", "SENSYS" }, { 0x70B3D5, 0x731000, 0x731FFF, "Phoniro Systems AB", "PHONIRO-AB" }, { 0x70B3D5, 0x941000, 0x941FFF, "Triax A/S", "TRIAX-A/S" }, { 0x70B3D5, 0x36D000, 0x36DFFF, "Cyberteam Sp z o o", "CYBERTEAM-SP-Z-O-O" }, { 0x70B3D5, 0xB82000, 0xB82FFF, "Lookout Portable Security", "LOOKOUT-PORTABLE-SECURITY" }, { 0x70B3D5, 0x220000, 0x220FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xD0C000, 0xD0CFFF, "Connor Winfield LTD", "CONNOR-WINFIELD" }, { 0x70B3D5, 0xCB7000, 0xCB7FFF, "HKC Limited", "HKC" }, { 0x70B3D5, 0x3E1000, 0x3E1FFF, "Barnstormer Softworks", "BARNSTORMER-SOFTWORKS" }, { 0x70B3D5, 0x96F000, 0x96FFFF, "4CAM GmbH", "4CAM" }, { 0x70B3D5, 0x8CE000, 0x8CEFFF, "CORES Corporation", "CORES" }, { 0x70B3D5, 0x23C000, 0x23CFFF, "Quasonix, LLC", "QUASONIX-LLC" }, { 0x70B3D5, 0x79A000, 0x79AFFF, "Innerspec Technologies Inc.", "INNERSPEC-TECHNOLOGIES" }, { 0x70B3D5, 0x51D000, 0x51DFFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x70B3D5, 0x61F000, 0x61FFFF, "Labotect Labor-Technik-Göttingen GmbH", "LABOTECT-LABOR-TECHNIK-GOETTINGEN" }, { 0x70B3D5, 0x4C1000, 0x4C1FFF, "QUERCUS TECHNOLOGIES, S. L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x70B3D5, 0xA0E000, 0xA0EFFF, "Vetaphone A/S", "VETAPHONE-A/S" }, { 0x70B3D5, 0x5AA000, 0x5AAFFF, "Chugoku Electric Manufacturing Co.,Inc", "CHUGOKU-ELECTRIC-MANUFACTURING" }, { 0x70B3D5, 0x2D4000, 0x2D4FFF, "CT Company", "CT-COMPANY" }, { 0x70B3D5, 0xC96000, 0xC96FFF, "UNI DIMENXI SDN BHD", "UNI-DIMENXI-SDN-BHD" }, { 0x70B3D5, 0xE74000, 0xE74FFF, "Exfrontier Co., Ltd.", "EXFRONTIER" }, { 0x70B3D5, 0xFD3000, 0xFD3FFF, "AKIS technologies", "AKIS-TECHNOLOGIES" }, { 0x70B3D5, 0xE53000, 0xE53FFF, "MI INC.", "MI" }, { 0x70B3D5, 0x2F0000, 0x2F0FFF, "Clock-O-Matic", "CLOCK-O-MATIC" }, { 0x70B3D5, 0x7A9000, 0x7A9FFF, "adidas AG", "ADIDAS" }, { 0x70B3D5, 0xAC8000, 0xAC8FFF, "Heartland.Data Inc.", "HEARTLAND-DATA" }, { 0x70B3D5, 0xF2A000, 0xF2AFFF, "WIBOND Informationssysteme GmbH", "WIBOND-INFORMATIONSSYSTEME" }, { 0x70B3D5, 0x2A5000, 0x2A5FFF, "Taitotekniikka", "TAITOTEKNIIKKA" }, { 0x70B3D5, 0x19C000, 0x19CFFF, "Kubu, Inc.", "KUBU" }, { 0x70B3D5, 0x03B000, 0x03BFFF, "SSL - Electrical Aerospace Ground Equipment Section", "SSL---ELECTRICAL-AEROSPACE-GROUND-EQUIPMENT-SECTION" }, { 0x70B3D5, 0xE9A000, 0xE9AFFF, "Meta Computing Services, Corp", "META-COMPUTING-SERVICES" }, { 0x70B3D5, 0xE26000, 0xE26FFF, "FEITIAN CO.,LTD.", "FEITIAN" }, { 0x70B3D5, 0xE4C000, 0xE4CFFF, "IAI-Israel Aerospace Industries MBT", "IAI-ISRAEL-AEROSPACE-INDUSTRIES-MBT" }, { 0x70B3D5, 0xA40000, 0xA40FFF, "STRACK LIFT AUTOMATION GmbH", "STRACK-LIFT-AUTOMATION" }, { 0x70B3D5, 0x016000, 0x016FFF, "Guardian Controls International Ltd", "GUARDIAN-CONTROLS" }, { 0x70B3D5, 0xA7A000, 0xA7AFFF, "Fluid Management Technology", "FLUID-MANAGEMENT" }, { 0x70B3D5, 0xC6A000, 0xC6AFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x819000, 0x819FFF, "«Intellect module» LLC", "«INTELLECT-MODULE»-LLC" }, { 0x70B3D5, 0xEF3000, 0xEF3FFF, "octoScope", "OCTOSCOPE" }, { 0x70B3D5, 0x9F4000, 0x9F4FFF, "Tband srl", "TBAND-SRL" }, { 0x70B3D5, 0x35C000, 0x35CFFF, "ACS electronics srl", "ACS-ELECTRONICS-SRL" }, { 0x70B3D5, 0x28F000, 0x28FFFF, "Overline Systems", "OVERLINE" }, { 0x70B3D5, 0xF38000, 0xF38FFF, "Scanvaegt Nordic A/S", "SCANVAEGT-NORDIC-A/S" }, { 0x001BC5, 0x0C5000, 0x0C5FFF, "Gill Instruments Ltd", "GILL-INSTRUMENTS" }, { 0x70B3D5, 0x994000, 0x994FFF, "KeFF Networks", "KEFF-NETWORKS" }, { 0x70B3D5, 0xB3D000, 0xB3DFFF, "Inras GmbH", "INRAS" }, { 0x001BC5, 0x0BB000, 0x0BBFFF, "Triax A/S", "TRIAX-A/S" }, { 0x001BC5, 0x0B1000, 0x0B1FFF, "Roslen Eco-Networking Products", "ROSLEN-ECO-NETWORKING-PRODUCTS" }, { 0x001BC5, 0x0A7000, 0x0A7FFF, "L.G.L. Electronics S.p.a.", "L-G-L-ELECTRONICS-S-P-A" }, { 0x001BC5, 0x09C000, 0x09CFFF, "S.I.C.E.S. srl", "S-I-C-E-S-SRL" }, { 0x001BC5, 0x092000, 0x092FFF, "Arnouse Digital Devices, Corp.", "ARNOUSE-DIGITAL-DEVICES" }, { 0x001BC5, 0x088000, 0x088FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x080000, 0x080FFF, "LUMINO GmbH", "LUMINO" }, { 0x001BC5, 0x076000, 0x076FFF, "PLAiR Media, Inc", "PLAIR-MEDIA" }, { 0x001BC5, 0x06C000, 0x06CFFF, "Luxcon System Limited", "LUXCON-SYSTEM" }, { 0x001BC5, 0x05C000, 0x05CFFF, "Suretrak Global Pty Ltd", "SURETRAK-GLOBAL-PTY" }, { 0x001BC5, 0x062000, 0x062FFF, "Sulaon Oy", "SULAON-OY" }, { 0x001BC5, 0x052000, 0x052FFF, "Engineering Center ENERGOSERVICE", "ENGINEERING-CENTER-ENERGOSERVICE" }, { 0x001BC5, 0x058000, 0x058FFF, "optiMEAS GmbH", "OPTIMEAS" }, { 0x001BC5, 0x048000, 0x048FFF, "XPossible Technologies Pte Ltd", "XPOSSIBLE-TECHNOLOGIES-PTE" }, { 0x001BC5, 0x04E000, 0x04EFFF, "Mitsubishi Electric India PVT. LTD", "MITSUBISHI-ELECTRIC-INDIA-PVT" }, { 0x001BC5, 0x03E000, 0x03EFFF, "Daylight Solutions, Inc", "DAYLIGHT-SOLUTIONS" }, { 0x001BC5, 0x044000, 0x044FFF, "ZAO "RADIUS Avtomatika"", "ZAO-QUOT-RADIUS-AVTOMATIKA-QUOT" }, { 0x001BC5, 0x039000, 0x039FFF, "EURESYS S.A.", "EURESYS" }, { 0x001BC5, 0x02F000, 0x02FFFF, "Fibrain Co. Ltd.", "FIBRAIN" }, { 0x001BC5, 0x025000, 0x025FFF, "andersen lighting GmbH", "ANDERSEN-LIGHTING" }, { 0x001BC5, 0x020000, 0x020FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x001BC5, 0x01D000, 0x01DFFF, "Rose + Herleth GbR", "ROSE-+-HERLETH-GBR" }, { 0x001BC5, 0x021000, 0x021FFF, "Openpeak, Inc", "OPENPEAK" }, { 0x001BC5, 0x010000, 0x010FFF, "Softel SA de CV", "SOFTEL-DE-CV" }, { 0x001BC5, 0x006000, 0x006FFF, "TRIAX-HIRSCHMANN Multi-Media GmbH", "TRIAX-HIRSCHMANN-MULTI-MEDIA" }, { 0x001BC5, 0x01A000, 0x01AFFF, "ABA ELECTRONICS TECHNOLOGY CO.,LTD", "ABA-ELECTRONICS" }, { 0x70B3D5, 0x76E000, 0x76EFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0x8F3000, 0x8F3FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0xC7F000, 0xC7FFFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x5ED000, 0x5EDFFF, "EA Elektroautomatik GmbH & Co. KG", "EA-ELEKTROAUTOMATIK" }, { 0x70B3D5, 0xAEA000, 0xAEAFFF, "BBR Verkehrstechnik GmbH", "BBR-VERKEHRSTECHNIK" }, { 0x70B3D5, 0xEEE000, 0xEEEFFF, "SOCIEDAD IBERICA DE CONSTRUCCIONES ELECTRICAS, S.A. (SICE)", "SOCIEDAD-IBERICA-DE-CONSTRUCCIONES-ELECTRICAS-SICE" }, { 0x70B3D5, 0x794000, 0x794FFF, "Shadin Avionics", "SHADIN-AVIONICS" }, { 0x70B3D5, 0x2EF000, 0x2EFFFF, "IEM SA", "IEM" }, { 0x70B3D5, 0xB6D000, 0xB6DFFF, "Movis", "MOVIS" }, { 0x70B3D5, 0x325000, 0x325FFF, "BlueMark Innovations BV", "BLUEMARK-INNOVATIONS" }, { 0x70B3D5, 0x8B2000, 0x8B2FFF, "NPF Modem, LLC", "NPF-MODEM-LLC" }, { 0x70B3D5, 0x3CC000, 0x3CCFFF, "TerOpta Ltd", "TEROPTA" }, { 0x70B3D5, 0x5D1000, 0x5D1FFF, "Software Motor Corp", "SOFTWARE-MOTOR" }, { 0x70B3D5, 0xA2E000, 0xA2EFFF, "Kokam Co., Ltd", "KOKAM" }, { 0x70B3D5, 0x8A6000, 0x8A6FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xFB5000, 0xFB5FFF, "Orange Tree Technologies Ltd", "ORANGE-TREE-TECHNOLOGIES" }, { 0x70B3D5, 0xE02000, 0xE02FFF, "YEHL & JORDAN LLC", "YEHL-JORDAN-LLC" }, { 0x70B3D5, 0xF56000, 0xF56FFF, "VirtualHere Pty. Ltd.", "VIRTUALHERE-PTY" }, { 0x70B3D5, 0x8BE000, 0x8BEFFF, "Connoiseur Electronics Private Limited", "CONNOISEUR-ELECTRONICS-PRIVATE" }, { 0x70B3D5, 0x26B000, 0x26BFFF, "Sorama BV", "SORAMA" }, { 0x70B3D5, 0x2FA000, 0x2FAFFF, "Toray Medical Co.,Ltd", "TORAY MEDICAL " }, { 0x70B3D5, 0x975000, 0x975FFF, "Coester Automação Ltda", "COESTER-AUTOMAçãO-LTDA" }, { 0x70B3D5, 0x13C000, 0x13CFFF, "Detec Systems Ltd", "DETEC" }, { 0x70B3D5, 0x455000, 0x455FFF, "Heartlandmicropayments", "HEARTLANDMICROPAYMENTS" }, { 0x70B3D5, 0x070000, 0x070FFF, "Lumiplan Duhamel", "LUMIPLAN-DUHAMEL" }, { 0x70B3D5, 0x8D8000, 0x8D8FFF, "VNG Corporation", "VNG" }, { 0x70B3D5, 0x392000, 0x392FFF, "Contec DTx", "CONTEC-DTX" }, { 0x70B3D5, 0x14D000, 0x14DFFF, "2-Observe", "2-OBSERVE" }, { 0x70B3D5, 0xA9F000, 0xA9FFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x9CB000, 0x9CBFFF, "Alligator Communications", "ALLIGATOR-COMMUNICATION" }, { 0x70B3D5, 0xB67000, 0xB67FFF, "RedWave Labs Ltd", "REDWAVE-LABS" }, { 0x70B3D5, 0xB93000, 0xB93FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x70B3D5, 0xB89000, 0xB89FFF, "IDA", "IDA" }, { 0x70B3D5, 0x7E2000, 0x7E2FFF, "Depro Électronique inc", "DEPRO-ÉLECTRONIQUE" }, { 0x70B3D5, 0x772000, 0x772FFF, "enModus", "ENMODUS" }, { 0x70B3D5, 0x3C5000, 0x3C5FFF, "P4Q ELECTRONICS, S.L.", "P4Q-ELECTRONICS-S-L" }, { 0x70B3D5, 0xFE2000, 0xFE2FFF, "Galileo Tıp Teknolojileri San. ve Tic. A.S.", "GALILEO-TıP-TEKNOLOJILERI-SAN-VE-TIC-A-S" }, { 0x70B3D5, 0xC24000, 0xC24FFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x70B3D5, 0xAC6000, 0xAC6FFF, "SMTC Corporation", "SMTC" }, { 0x70B3D5, 0x028000, 0x028FFF, "AT-Automation Technology GmbH", "AT-AUTOMATION" }, { 0x70B3D5, 0x0B9000, 0x0B9FFF, "Easy Digital Concept", "EASY-DIGITAL-CONCEPT" }, { 0x70B3D5, 0xCF2000, 0xCF2FFF, "tinnos", "TINNOS" }, { 0x70B3D5, 0x9E0000, 0x9E0FFF, "ES Industrial Systems Co., Ltd.", "ES-INDUSTRIAL" }, { 0x70B3D5, 0x60F000, 0x60FFFF, "Tanaka Information System, LLC.", "TANAKA-INFORMATION-SYSTEM-LLC" }, { 0x70B3D5, 0x0FA000, 0x0FAFFF, "InsideRF Co., Ltd.", "INSIDERF" }, { 0x70B3D5, 0x31E000, 0x31EFFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x70B3D5, 0x8C5000, 0x8C5FFF, "HMicro Inc", "HMICRO" }, { 0x70B3D5, 0x5FF000, 0x5FFFFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x70B3D5, 0x8EF000, 0x8EFFFF, "Beeper Communications Ltd.", "BEEPER-COMMUNICATION" }, { 0x70B3D5, 0x277000, 0x277FFF, "Voltaware Limited", "VOLTAWARE" }, { 0x70B3D5, 0x179000, 0x179FFF, "ALTRAN UK", "ALTRAN-UK" }, { 0x70B3D5, 0x74F000, 0x74FFFF, "United States Technologies Inc.", "UNITED-STATES-TECHNOLOGIES" }, { 0x70B3D5, 0x804000, 0x804FFF, "PMT Corporation", "PMT" }, { 0x70B3D5, 0xD2B000, 0xD2BFFF, "StreamPlay Oy Ltd", "STREAMPLAY-OY" }, { 0x70B3D5, 0x39C000, 0x39CFFF, "GD Mission Systems", "GD-MISSION" }, { 0x70B3D5, 0x840000, 0x840FFF, "xm", "XM" }, { 0x70B3D5, 0x4FE000, 0x4FEFFF, "WiTagg, Inc", "WITAGG" }, { 0x70B3D5, 0x1FD000, 0x1FDFFF, "BRS Sistemas Eletrônicos", "BRS-SISTEMAS-ELETRôNICOS" }, { 0x70B3D5, 0x396000, 0x396FFF, "CTG sp. z o. o.", "CTG-SP-Z-O-O" }, { 0x70B3D5, 0x62B000, 0x62BFFF, "Silicann Systems GmbH", "SILICANN" }, { 0x70B3D5, 0x6B5000, 0x6B5FFF, "ART SPA", "ART-SPA" }, { 0x70B3D5, 0xE7C000, 0xE7CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x3D9000, 0x3D9FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x35F000, 0x35FFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x33E000, 0x33EFFF, "Dynamic Connect (Suzhou) Hi-Tech Electronic Co.,Ltd.", "DYNAMIC-CONNECT-SUZHOU-HI-TECH" }, { 0x70B3D5, 0x180000, 0x180FFF, "LHA Systems (Pty) Ltd", "LHA-PTY" }, { 0x70B3D5, 0xABE000, 0xABEFFF, "MART NETWORK SOLUTIONS LTD", "MART-NETWORK-SOLUTIONS" }, { 0x70B3D5, 0x932000, 0x932FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x0C4000, 0x0C4FFF, "TIAMA", "TIAMA" }, { 0x70B3D5, 0x8CF000, 0x8CFFFF, "Dainichi Denshi Co.,LTD", "DAINICHI-DENSHI " }, { 0x70B3D5, 0x750000, 0x750FFF, "Neurio Technology Inc.", "NEURIO" }, { 0x70B3D5, 0xFC9000, 0xFC9FFF, "Shanghai EICT Global Service Co., Ltd", "SHANGHAI-EICT-GLOBAL-SERVICE" }, { 0x70B3D5, 0x147000, 0x147FFF, "ROMO Wind A/S", "ROMO-WIND-A/S" }, { 0x70B3D5, 0x75B000, 0x75BFFF, "Netool LLC", "NETOOL-LLC" }, { 0x70B3D5, 0x78C000, 0x78CFFF, "Survalent Technology Corporation", "SURVALENT" }, { 0x70B3D5, 0x37D000, 0x37DFFF, "The DX Shop Limited", "THE-DX-SHOP" }, { 0x70B3D5, 0x696000, 0x696FFF, "Open Grow", "OPEN-GROW" }, { 0x70B3D5, 0xFCA000, 0xFCAFFF, "M2M Cybernetics Pvt Ltd", "M2M-CYBERNETICS-PVT" }, { 0x70B3D5, 0x02D000, 0x02DFFF, "NEXTtec srl", "NEXTTEC-SRL" }, { 0x70B3D5, 0x3D5000, 0x3D5FFF, "oxynet Solutions", "OXYNET-SOLUTIONS" }, { 0x70B3D5, 0xD11000, 0xD11FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x70B3D5, 0x1B5000, 0x1B5FFF, "StarBridge, Inc.", "STARBRIDGE" }, { 0x70B3D5, 0x5CD000, 0x5CDFFF, "MVT Video Technologies R + H Maedler GbR", "MVT-VIDEO-TECHNOLOGIES-R-+-H-MAEDLER-GBR" }, { 0x70B3D5, 0xAF7000, 0xAF7FFF, "DimoSystems BV", "DIMOSYSTEMS" }, { 0x70B3D5, 0x9D2000, 0x9D2FFF, "ACS MOTION CONTROL", "ACS-MOTION-CONTROL" }, { 0x70B3D5, 0xA5E000, 0xA5EFFF, "ConectaIP Tecnologia S.L.", "CONECTAIP-TECNOLOGIA-S-L" }, { 0x70B3D5, 0x12C000, 0x12CFFF, "CIELLE S.R.L.", "CIELLE-S-R-L" }, { 0x70B3D5, 0x486000, 0x486FFF, "ChongQing JianTao Technology Co., Ltd.", "CHONGQING-JIANTAO" }, { 0x70B3D5, 0x12E000, 0x12EFFF, "GreenFlux", "GREENFLUX" }, { 0x70B3D5, 0xB59000, 0xB59FFF, "FutureTechnologyLaboratories INC.", "FUTURETECHNOLOGYLABORATORIES" }, { 0x70B3D5, 0x8B3000, 0x8B3FFF, "Firefly RFID Solutions", "FIREFLY-RFID-SOLUTIONS" }, { 0x70B3D5, 0x599000, 0x599FFF, "LECO Corporation", "LECO" }, { 0x70B3D5, 0x692000, 0x692FFF, "HOSIN INDUSTRIAL LIMITED", "HOSIN-INDUSTRIAL" }, { 0x70B3D5, 0x896000, 0x896FFF, "Shanghai Longpal Communication Equipment Co., Ltd.", "SHANGHAI-LONGPAL-COMMUNICATION-EQUIPMENT" }, { 0x70B3D5, 0xAE7000, 0xAE7FFF, "E-T-A Elektrotechnische Apparate GmbH", "E-T-A-ELEKTROTECHNISCHE-APPARATE" }, { 0x70B3D5, 0x400000, 0x400FFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0xE0F000, 0xE0FFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x12F000, 0x12FFFF, "DSP4YOU LTd", "DSP4YOU" }, { 0x70B3D5, 0x71B000, 0x71BFFF, "elsys", "ELSYS" }, { 0x70B3D5, 0x9B1000, 0x9B1FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xCA4000, 0xCA4FFF, "Netemera Sp. z o.o.", "NETEMERA-SP-Z-O-O" }, { 0x70B3D5, 0x48F000, 0x48FFFF, "Seiwa Giken", "SEIWA-GIKEN" }, { 0x70B3D5, 0xDDC000, 0xDDCFFF, "Syscom Instruments SA", "SYSCOM-INSTRUMENTS" }, { 0x70B3D5, 0xC15000, 0xC15FFF, "Sensobox GmbH", "SENSOBOX" }, { 0x70B3D5, 0xD2F000, 0xD2FFFF, "L.I.F.E. Corporation SA", "L-I-F-E" }, { 0x70B3D5, 0x36A000, 0x36AFFF, "Becton Dickinson", "BECTON-DICKINSON" }, { 0x70B3D5, 0xC80000, 0xC80FFF, "Link Care Services", "LINK-CARE-SERVICES" }, { 0x70B3D5, 0x607000, 0x607FFF, "ATEME", "ATEME" }, { 0x70B3D5, 0xA33000, 0xA33FFF, "TIAMA", "TIAMA" }, { 0x70B3D5, 0xA19000, 0xA19FFF, "Qualitronix Madrass Pvt Ltd", "QUALITRONIX-MADRASS-PVT" }, { 0x70B3D5, 0xF81000, 0xF81FFF, "Littlemore Scientific", "LITTLEMORE-SCIENTIFIC" }, { 0x70B3D5, 0xB3F000, 0xB3FFFF, "Orbit International", "ORBIT" }, { 0x70B3D5, 0x28D000, 0x28DFFF, "Technica Engineering GmbH", "TECHNICA-ENGINEERING" }, { 0x70B3D5, 0xB62000, 0xB62FFF, "Sakura Seiki Co.,Ltd.", "SAKURA-SEIKI" }, { 0x70B3D5, 0xCCF000, 0xCCFFFF, "Netberg", "NETBERG" }, { 0x70B3D5, 0x131000, 0x131FFF, "Inova Design Solutions Ltd", "INOVA-DESIGN-SOLUTIONS" }, { 0x70B3D5, 0x987000, 0x987FFF, "AXIS CORPORATION", "AXIS" }, { 0x70B3D5, 0x2BA000, 0x2BAFFF, "Active Brains", "ACTIVE-BRAINS" }, { 0x70B3D5, 0x0CE000, 0x0CEFFF, "Innominds Software Inc", "INNOMINDS-SOFTWARE" }, { 0x70B3D5, 0x644000, 0x644FFF, "ATX Networks Corp", "ATX-NETWORKS" }, { 0x70B3D5, 0x376000, 0x376FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x52C000, 0x52CFFF, "Centuryarks Ltd.,", "CENTURYARKS" }, { 0x70B3D5, 0xBC2000, 0xBC2FFF, "DWEWOONG ELECTRIC Co., Ltd.", "DWEWOONG-ELECTRIC" }, { 0x70B3D5, 0xDFC000, 0xDFCFFF, "ELECTRONIC SYSTEMS DESIGN SPRL", "DESIGN-SPRL" }, { 0x70B3D5, 0x7E5000, 0x7E5FFF, "Megaflex Oy", "MEGAFLEX-OY" }, { 0x70B3D5, 0x503000, 0x503FFF, "Itest communication Tech Co., LTD", "ITEST-COMMUNICATION-TECH" }, { 0x70B3D5, 0x48A000, 0x48AFFF, "George Wilson Industries Ltd", "GEORGE-WILSON-INDUSTRIES" }, { 0x70B3D5, 0x0E5000, 0x0E5FFF, "Delta Solutions LLC", "DELTA-SOLUTIONS-LLC" }, { 0x70B3D5, 0x81E000, 0x81EFFF, "Novathings", "NOVATHINGS" }, { 0x70B3D5, 0x04B000, 0x04BFFF, "Dream I System Co., Ltd", "DREAM-I-SYSTEM" }, { 0x70B3D5, 0x49A000, 0x49AFFF, "HAXE SYSTEME", "HAXE-SYSTEME" }, { 0x70B3D5, 0x63C000, 0x63CFFF, "Pivothead", "PIVOTHEAD" }, { 0x70B3D5, 0xADB000, 0xADBFFF, "RF Code", "RF-CODE" }, { 0x70B3D5, 0xB53000, 0xB53FFF, "Revolution Retail Systems, LLC", "REVOLUTION-RETAIL-LLC" }, { 0x70B3D5, 0xC7E000, 0xC7EFFF, "BirdDog Australia", "BIRDDOG-AUSTRALIA" }, { 0x70B3D5, 0xF03000, 0xF03FFF, "GMI Ltd", "GMI" }, { 0x70B3D5, 0x8C2000, 0x8C2FFF, "F-domain corporation", "F-DOMAIN" }, { 0x70B3D5, 0x6CF000, 0x6CFFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x72C000, 0x72CFFF, "NuRi&G Engineering co,.Ltd.", "NURI-G-ENGINEERING" }, { 0x70B3D5, 0x735000, 0x735FFF, "Swiss Audio", "SWISS-AUDIO" }, { 0x70B3D5, 0x260000, 0x260FFF, "ModuSystems, Inc", "MODUSYSTEMS" }, { 0x70B3D5, 0x4EF000, 0x4EFFFF, "CMI, Inc.", "CMI" }, { 0x70B3D5, 0xC12000, 0xC12FFF, "Beijing Wisetone Information Technology Co.,Ltd.", "BEIJING-WISETONE-INFORMATION" }, { 0x70B3D5, 0x930000, 0x930FFF, "The Institute of Mine Seismology", "THE-INSTITUTE-OF-MINE-SEISMOLOGY" }, { 0x70B3D5, 0x188000, 0x188FFF, "Birket Engineering", "BIRKET-ENGINEERING" }, { 0x70B3D5, 0x5E2000, 0x5E2FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x70B3D5, 0x25A000, 0x25AFFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x16F000, 0x16FFFF, "NimbeLink Corp", "NIMBELINK" }, { 0x70B3D5, 0x9C0000, 0x9C0FFF, "Schneider Displaytechnik GmbH", "SCHNEIDER-DISPLAYTECHNIK" }, { 0x70B3D5, 0x149000, 0x149FFF, "eleven-x", "ELEVEN-X" }, { 0x70B3D5, 0xE98000, 0xE98FFF, "JSC Kaluga Astral", "JSC-KALUGA-ASTRAL" }, { 0x70B3D5, 0x443000, 0x443FFF, "Slot3 GmbH", "SLOT3" }, { 0x70B3D5, 0x952000, 0x952FFF, "REQUEA", "REQUEA" }, { 0x70B3D5, 0xBAA000, 0xBAAFFF, "Device Solutions Ltd", "DEVICE-SOLUTIONS" }, { 0x70B3D5, 0xC5C000, 0xC5CFFF, "Layer Logic Inc", "LAYER-LOGIC" }, { 0x70B3D5, 0xF3B000, 0xF3BFFF, "Epdm Pty Ltd", "EPDM-PTY" }, { 0x70B3D5, 0x9F6000, 0x9F6FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x70B3D5, 0x36F000, 0x36FFFF, "BuddyGuard GmbH", "BUDDYGUARD" }, { 0x70B3D5, 0x222000, 0x222FFF, "Marioff Corporation Oy", "MARIOFF-OY" }, { 0x70B3D5, 0x0E3000, 0x0E3FFF, "SinTau SrL", "SINTAU-SRL" }, { 0x70B3D5, 0x2E5000, 0x2E5FFF, "Fläkt Woods AB", "FLAEKT-WOODS-AB" }, { 0x70B3D5, 0x88D000, 0x88DFFF, "LG Electronics", "LG-ELECTRONICS" }, { 0x70B3D5, 0xA8B000, 0xA8BFFF, "Giant Power Technology Biomedical Corporation", "GIANT-POWER-BIOMEDICAL" }, { 0x70B3D5, 0x0F1000, 0x0F1FFF, "Beijing One City Science & Technology Co., LTD", "BEIJING-ONE-CITY-SCIENCE" }, { 0x70B3D5, 0xF70000, 0xF70FFF, "Honeywell", "HONEYWELL" }, { 0x70B3D5, 0x9CE000, 0x9CEFFF, "Terragene S.A", "TERRAGENE" }, { 0x70B3D5, 0xCEA000, 0xCEAFFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x70B3D5, 0xF1D000, 0xF1DFFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xF05000, 0xF05FFF, "Motomuto Aps", "MOTOMUTO-APS" }, { 0x70B3D5, 0xFFC000, 0xFFCFFF, "Symetrics Industries d.b.a. Extant Aerospace", "SYMETRICS-INDUSTRIES-D-B-A-EXTANT-AEROSPACE" }, { 0x70B3D5, 0x30E000, 0x30EFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x4F8000, 0x4F8FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x5E0000, 0x5E0FFF, "Hexagon Metrology SAS", "HEXAGON-METROLOGY-SAS" }, { 0x70B3D5, 0xB2B000, 0xB2BFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x9D0000, 0x9D0FFF, "RJ45 Technologies", "RJ45-TECHNOLOGIES" }, { 0x70B3D5, 0x672000, 0x672FFF, "KLEIBER Infrared GmbH", "KLEIBER-INFRARED" }, { 0x70B3D5, 0x572000, 0x572FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x927000, 0x927FFF, "LG Electronics", "LG-ELECTRONICS" }, { 0x70B3D5, 0x489000, 0x489FFF, "ard sa", "ARD" }, { 0x70B3D5, 0x2B1000, 0x2B1FFF, "WIXCON Co., Ltd", "WIXCON" }, { 0x70B3D5, 0xB6A000, 0xB6AFFF, "YUYAMA MFG Co.,Ltd", "YUYAMA-MFG" }, { 0x70B3D5, 0x579000, 0x579FFF, "Chelsea Technologies Group Ltd", "CHELSEA-TECHNOLOGIES-GROUP" }, { 0x70B3D5, 0x9B2000, 0x9B2FFF, "CONTINENT, Ltd", "CONTINENT" }, { 0x70B3D5, 0x365000, 0x365FFF, "CircuitMeter Inc.", "CIRCUITMETER" }, { 0x70B3D5, 0x805000, 0x805FFF, "Eurotronik Kranj d.o.o.", "EUROTRONIK-KRANJ-D-O-O" }, { 0x70B3D5, 0x0B4000, 0x0B4FFF, "AVER", "AVER" }, { 0x70B3D5, 0xBF6000, 0xBF6FFF, "comtac AG", "COMTAC" }, { 0x70B3D5, 0x1B6000, 0x1B6FFF, "DACOM West GmbH", "DACOM-WEST" }, { 0x70B3D5, 0x9C1000, 0x9C1FFF, "Zeroplus Technology Co.,Ltd.", "ZEROPLUS" }, { 0x70B3D5, 0x094000, 0x094FFF, "Circuitlink Pty Ltd", "CIRCUITLINK-PTY" }, { 0x70B3D5, 0xAA3000, 0xAA3FFF, "LINEAGE POWER PVT LTD.,", "LINEAGE-POWER-PVT" }, { 0x70B3D5, 0xAEF000, 0xAEFFFF, "Baumtec GmbH", "BAUMTEC" }, { 0x70B3D5, 0xD92000, 0xD92FFF, "Zamir Recognition Systems Ltd.", "ZAMIR-RECOGNITION" }, { 0x70B3D5, 0xCC9000, 0xCC9FFF, "Rapiscan Systems", "RAPISCAN" }, { 0x70B3D5, 0xDA4000, 0xDA4FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x2D0000, 0x2D0FFF, "ijin co.,ltd.", "IJIN" }, { 0x70B3D5, 0x0A0000, 0x0A0FFF, "Cominfo, Inc.", "COMINFO" }, { 0x70B3D5, 0x20F000, 0x20FFFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x70B3D5, 0xC20000, 0xC20FFF, "Mipot S.p.a.", "MIPOT-S-P-A" }, { 0x70B3D5, 0x4D5000, 0x4D5FFF, "Moog Rekofa GmbH", "MOOG-REKOFA" }, { 0x70B3D5, 0xD3C000, 0xD3CFFF, "HRT", "HRT" }, { 0x70B3D5, 0xDDB000, 0xDDBFFF, "Intra Corporation", "INTRA" }, { 0x70B3D5, 0x8EE000, 0x8EEFFF, "Network Additions", "NETWORK-ADDITIONS" }, { 0x70B3D5, 0x445000, 0x445FFF, "Advanced Devices SpA", "ADVANCED-DEVICES-SPA" }, { 0x70B3D5, 0x674000, 0x674FFF, "Fortress Cyber Security", "FORTRESS-CYBER-SECURITY" }, { 0x70B3D5, 0xFFF000, 0xFFFFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xDB8000, 0xDB8FFF, "SISTEM SA", "SISTEM" }, { 0x70B3D5, 0xFBC000, 0xFBCFFF, "Twoway Communications, Inc.", "TWOWAY-COMMUNICATION" }, { 0x70B3D5, 0x969000, 0x969FFF, "Emtel System Sp. z o.o.", "EMTEL-SYSTEM-SP-Z-O-O" }, { 0x70B3D5, 0xC33000, 0xC33FFF, "Dandong Dongfang Measurement & Control Technology Co., Ltd.", "DANDONG-DONGFANG-MEASUREMENT-CONTROL" }, { 0x70B3D5, 0xB2E000, 0xB2EFFF, "Green Access Ltd", "GREEN-ACCESS" }, { 0x70B3D5, 0x58C000, 0x58CFFF, "OPTSYS", "OPTSYS" }, { 0x70B3D5, 0x95B000, 0x95BFFF, "SRS Group s.r.o.", "SRS-GROUP-S-R-O" }, { 0x70B3D5, 0x34E000, 0x34EFFF, "Risk Expert sarl", "RISK-EXPERT-SARL" }, { 0x70B3D5, 0x6AD000, 0x6ADFFF, "CONNIT", "CONNIT" }, { 0x70B3D5, 0xC14000, 0xC14FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0x631000, 0x631FFF, "SENSO2ME bvba", "SENSO2ME-BVBA" }, { 0x70B3D5, 0xC53000, 0xC53FFF, "S Labs sp. z o.o.", "S-LABS-SP-Z-O-O" }, { 0x70B3D5, 0xF24000, 0xF24FFF, "Daavlin", "DAAVLIN" }, { 0x70B3D5, 0x6E7000, 0x6E7FFF, "AML", "AML" }, { 0x70B3D5, 0x77B000, 0x77BFFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x70B3D5, 0x04E000, 0x04EFFF, "HUGEL GmbH", "HUGEL" }, { 0x70B3D5, 0x319000, 0x319FFF, "ISO/TC 22/SC 31", "ISO/TC-22/SC-31" }, { 0x70B3D5, 0x844000, 0x844FFF, "SANSFIL Technologies", "SANSFIL-TECHNOLOGIES" }, { 0x70B3D5, 0x826000, 0x826FFF, "Elbit Systems of Amerixca", "ELBIT-OF-AMERIXCA" }, { 0x70B3D5, 0xC42000, 0xC42FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x66B000, 0x66BFFF, "Innitive B.V.", "INNITIVE" }, { 0x70B3D5, 0x8F6000, 0x8F6FFF, "Dofuntech Co.,LTD.", "DOFUNTECH" }, { 0x70B3D5, 0xA06000, 0xA06FFF, "Kopis Mobile LLC", "KOPIS-MOBILE-LLC" }, { 0x70B3D5, 0x679000, 0x679FFF, "EMAC, Inc.", "EMAC" }, { 0x001BC5, 0x042000, 0x042FFF, "ChamSys Ltd", "CHAMSYS" }, { 0x70B3D5, 0x2F9000, 0x2F9FFF, "CONSOSPY", "CONSOSPY" }, { 0x70B3D5, 0xBB8000, 0xBB8FFF, "Al Kamel Systems S.L.", "AL-KAMEL-S-L" }, { 0x70B3D5, 0x439000, 0x439FFF, "TriLED", "TRILED" }, { 0x70B3D5, 0xE48000, 0xE48FFF, "TDI. Co., LTD", "TDI" }, { 0x70B3D5, 0x18D000, 0x18DFFF, "Foro Tel", "FORO-TEL" }, { 0x70B3D5, 0xA95000, 0xA95FFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x570000, 0x570FFF, "Bayern Engineering GmbH & Co. KG", "BAYERN-ENGINEERING" }, { 0x70B3D5, 0x524000, 0x524FFF, "Wuxi New Optical Communication Co.,Ltd.", "WUXI-NEW-OPTICAL-COMMUNICATION" }, { 0x70B3D5, 0xDE0000, 0xDE0FFF, "eCozy GmbH", "ECOZY" }, { 0x70B3D5, 0xC26000, 0xC26FFF, "Triple Play Communications", "TRIPLE-PLAY-COMMUNICATION" }, { 0x70B3D5, 0x91F000, 0x91FFFF, "JSC InformInvestGroup", "JSC-INFORMINVESTGROUP" }, { 0x70B3D5, 0x3E9000, 0x3E9FFF, "APOLLO GIKEN Co.,Ltd.", "APOLLO-GIKEN" }, { 0x70B3D5, 0x773000, 0x773FFF, "Rugged Science", "RUGGED-SCIENCE" }, { 0x70B3D5, 0x7AA000, 0x7AAFFF, "Sadel S.p.A.", "SADEL-S-P-A" }, { 0x70B3D5, 0x6FB000, 0x6FBFFF, "Shachihata Inc.", "SHACHIHATA" }, { 0x70B3D5, 0xD73000, 0xD73FFF, "ERMINE Corporation", "ERMINE" }, { 0x70B3D5, 0xD3F000, 0xD3FFFF, "GLOBALCOM ENGINEERING SPA", "GLOBALCOM-ENGINEERING-SPA" }, { 0x70B3D5, 0xDF7000, 0xDF7FFF, "Refecor Oy", "REFECOR-OY" }, { 0x70B3D5, 0x152000, 0x152FFF, "Xped Corporation Pty Ltd", "XPED-PTY" }, { 0x70B3D5, 0x59D000, 0x59DFFF, "servicios de consultoria independiente S.L.", "SERVICIOS-DE-CONSULTORIA-INDEPENDIENTE-S-L" }, { 0x70B3D5, 0x933000, 0x933FFF, "SARL S@TIS", "SARL-S@TIS" }, { 0x70B3D5, 0x7F2000, 0x7F2FFF, "TCI", "TCI" }, { 0x70B3D5, 0xE4B000, 0xE4BFFF, "DELTA", "DELTA" }, { 0x70B3D5, 0x2EA000, 0x2EAFFF, "Schneider Electric Motion", "SCHNEIDER-ELECTRIC-MOTION" }, { 0x70B3D5, 0x5FC000, 0x5FCFFF, "SURTEC", "SURTEC" }, { 0x70B3D5, 0x328000, 0x328FFF, "HIPODROMO DE AGUA CALIENTE SA CV", "HIPODROMO-DE-AGUA-CALIENTE-CV" }, { 0x70B3D5, 0xF85000, 0xF85FFF, "Solystic", "SOLYSTIC" }, { 0x70B3D5, 0xA04000, 0xA04FFF, "Galea Electric S.L.", "GALEA-ELECTRIC-S-L" }, { 0x70B3D5, 0x6BE000, 0x6BEFFF, "VANTAGE INTEGRATED SECURITY SOLUTIONS PVT LTD", "VANTAGE-INTEGRATED-SECURITY-SOLUTIONS-PVT" }, { 0x70B3D5, 0xA01000, 0xA01FFF, "FeldTech GmbH", "FELDTECH" }, { 0x70B3D5, 0x7C1000, 0x7C1FFF, "Data Sciences International", "DATA-SCIENCES" }, { 0x70B3D5, 0x903000, 0x903FFF, "Cymtec Ltd", "CYMTEC" }, { 0x70B3D5, 0x1A0000, 0x1A0FFF, "UFATECH LTD", "UFATECH" }, { 0x70B3D5, 0xEA4000, 0xEA4FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0x1AD000, 0x1ADFFF, "Techworld Industries Ltd", "TECHWORLD-INDUSTRIES" }, { 0x70B3D5, 0x866000, 0x866FFF, "MEPS Realtime", "MEPS-REALTIME" }, { 0x70B3D5, 0x3D8000, 0x3D8FFF, "Abitsoftware, Ltd.", "ABITSOFTWARE" }, { 0x70B3D5, 0xF4D000, 0xF4DFFF, "Honeywell International Inc.", "HONEYWELL" }, { 0x70B3D5, 0x230000, 0x230FFF, "CT Company", "CT-COMPANY" }, { 0x70B3D5, 0xFCD000, 0xFCDFFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x70B3D5, 0x07E000, 0x07EFFF, "ENTEC Electric & Electronic CO., LTD", "ENTEC-ELECTRIC" }, { 0x70B3D5, 0x664000, 0x664FFF, "Sankyo Intec co.,ltd", "SANKYO-INTEC" }, { 0x70B3D5, 0x4BA000, 0x4BAFFF, "Sinftech LLC", "SINFTECH-LLC" }, { 0x70B3D5, 0x3FF000, 0x3FFFFF, "Hydra Controls", "HYDRA-CONTROLS" }, { 0x70B3D5, 0x470000, 0x470FFF, "KITRON UAB", "KITRON-UAB" }, { 0x70B3D5, 0x52B000, 0x52BFFF, "GE Aviation Cheltenham", "GE-AVIATION-CHELTENHAM" }, { 0x70B3D5, 0x87B000, 0x87BFFF, "Liquid Instruments Pty Ltd", "LIQUID-INSTRUMENTS-PTY" }, { 0x70B3D5, 0x5B0000, 0x5B0FFF, "Qxperts Italia S.r.l.", "QXPERTS-ITALIA-S-R-L" }, { 0x70B3D5, 0x435000, 0x435FFF, "Wuhan Xingtuxinke ELectronic Co.,Ltd", "WUHAN-XINGTUXINKE" }, { 0x70B3D5, 0x0CD000, 0x0CDFFF, "AML Oceanographic", "AML-OCEANOGRAPHIC" }, { 0x70B3D5, 0x6B3000, 0x6B3FFF, "DuraComm Corporation", "DURACOMM" }, { 0x70B3D5, 0xF36000, 0xF36FFF, "dinosys", "DINOSYS" }, { 0x70B3D5, 0xAC9000, 0xAC9FFF, "Trinity Solutions LLC", "TRINITY-SOLUTIONS-LLC" }, { 0x70B3D5, 0x0A6000, 0x0A6FFF, "PA CONSULTING SERVICES", "PA-CONSULTING-SERVICES" }, { 0x70B3D5, 0xB8B000, 0xB8BFFF, "Profound Medical Inc.", "PROFOUND-MEDICAL" }, { 0x70B3D5, 0x1A5000, 0x1A5FFF, "METRONIC APARATURA KONTROLNO - POMIAROWA", "METRONIC-APARATURA-KONTROLNO---POMIAROWA" }, { 0x70B3D5, 0xA1C000, 0xA1CFFF, "MECA SYSTEM", "MECA-SYSTEM" }, { 0x70B3D5, 0xAD6000, 0xAD6FFF, "Lemonade Lab Inc", "LEMONADE-LAB" }, { 0x70B3D5, 0xD87000, 0xD87FFF, "Zigen Corp", "ZIGEN" }, { 0x70B3D5, 0x589000, 0x589FFF, "Cityntel OU", "CITYNTEL-OU" }, { 0x70B3D5, 0x82E000, 0x82EFFF, "PlayAlive A/S", "PLAYALIVE-A/S" }, { 0x70B3D5, 0x00E000, 0x00EFFF, "Magosys Systems LTD", "MAGOSYS" }, { 0x70B3D5, 0xC3C000, 0xC3CFFF, "PEEK TRAFFIC", "PEEK-TRAFFIC" }, { 0x70B3D5, 0x17F000, 0x17FFFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0xFE8000, 0xFE8FFF, "PCME Ltd.", "PCME" }, { 0x70B3D5, 0x505000, 0x505FFF, "MC2-Technologies", "MC2-TECHNOLOGIES" }, { 0x70B3D5, 0xF2D000, 0xF2DFFF, "ID Lock AS", "ID-LOCK-AS" }, { 0x70B3D5, 0x0DC000, 0x0DCFFF, "Talleres de Escoriaza", "TALLERES-DE-ESCORIAZA" }, { 0x70B3D5, 0xAF3000, 0xAF3FFF, "New Japan Radio Co., Ltd", "NEW-JAPAN-RADIO" }, { 0x70B3D5, 0x500000, 0x500FFF, "Mistral Solutions Pvt. LTD", "MISTRAL-SOLUTIONS-PVT" }, { 0x70B3D5, 0x27D000, 0x27DFFF, "Telenor Connexion AB", "TELENOR-CONNEXION-AB" }, { 0x70B3D5, 0xB29000, 0xB29FFF, "WiViCom Co., Ltd.", "WIVICOM" }, { 0x70B3D5, 0xED5000, 0xED5FFF, "hangzhou battle link technology Co.,Ltd", "HANGZHOU-BATTLE-LINK" }, { 0x70B3D5, 0xE95000, 0xE95FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0x65B000, 0x65BFFF, "Roush", "ROUSH" }, { 0x70B3D5, 0xD7F000, 0xD7FFFF, "ConectaIP Tecnologia S.L.", "CONECTAIP-TECNOLOGIA-S-L" }, { 0x70B3D5, 0x3D2000, 0x3D2FFF, "Imagine Inc.", "IMAGINE" }, { 0x70B3D5, 0x7A7000, 0x7A7FFF, "Symbicon Ltd", "SYMBICON" }, { 0x70B3D5, 0xD9B000, 0xD9BFFF, "Russian Telecom Equipment Company", "RUSSIAN-TELECOM-EQUIPMENT-COMPANY" }, { 0x70B3D5, 0xE4E000, 0xE4EFFF, "Midfin Systems", "MIDFIN" }, { 0x70B3D5, 0x48C000, 0x48CFFF, "Integrated Systems Engineering, Inc.", "INTEGRATED-ENGINEERING" }, { 0x70B3D5, 0xFC6000, 0xFC6FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x70B3D5, 0x2BE000, 0x2BEFFF, "Coherent Logix, Inc.", "COHERENT-LOGIX" }, { 0x70B3D5, 0x7F1000, 0x7F1FFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x70B3D5, 0x7B8000, 0x7B8FFF, "SerEnergy A/S", "SERENERGY-A/S" }, { 0x70B3D5, 0xCCE000, 0xCCEFFF, "Proconex 2010 Inc.", "PROCONEX-2010" }, { 0x70B3D5, 0x300000, 0x300FFF, "Novo DR Ltd.", "NOVO-DR" }, { 0x70B3D5, 0xBD3000, 0xBD3FFF, "FOTONA D.D.", "FOTONA-D-D" }, { 0x70B3D5, 0x600000, 0x600FFF, "Stellwerk GmbH", "STELLWERK" }, { 0x70B3D5, 0x421000, 0x421FFF, "North Star Bestech Co.,", "NORTH-STAR-BESTECH" }, { 0x70B3D5, 0xC55000, 0xC55FFF, "Intelligent Energy Ltd", "INTELLIGENT-ENERGY" }, { 0x70B3D5, 0xE28000, 0xE28FFF, "iotec GmbH", "IOTEC" }, { 0x70B3D5, 0x6F3000, 0x6F3FFF, "iungo", "IUNGO" }, { 0x70B3D5, 0x182000, 0x182FFF, "Kitron UAB", "KITRON-UAB" }, { 0x70B3D5, 0x820000, 0x820FFF, "Becker Nachrichtentechnik GmbH", "BECKER-NACHRICHTENTECHNIK" }, { 0x70B3D5, 0x732000, 0x732FFF, "TOFWERK AG", "TOFWERK" }, { 0x70B3D5, 0x07D000, 0x07DFFF, "PANORAMIC POWER", "PANORAMIC-POWER" }, { 0x70B3D5, 0xB9B000, 0xB9BFFF, "Elektronik Art", "ELEKTRONIK-ART" }, { 0x70B3D5, 0x327000, 0x327FFF, "Seneco A/S", "SENECO-A/S" }, { 0x70B3D5, 0x08E000, 0x08EFFF, "Beijing CONvision Technology Co.,Ltd", "BEIJING-CONVISION" }, { 0x70B3D5, 0xB8F000, 0xB8FFFF, "Assembly Contracts Ltd", "ASSEMBLY-CONTRACTS" }, { 0x70B3D5, 0x5C5000, 0x5C5FFF, "Haag-Streit AG", "HAAG-STREIT" }, { 0x70B3D5, 0x164000, 0x164FFF, "Tokyo Drawing Ltd.", "TOKYO-DRAWING" }, { 0x70B3D5, 0x9F1000, 0x9F1FFF, "RFEL Ltd", "RFEL" }, { 0x70B3D5, 0x84A000, 0x84AFFF, "MOG Laboratories Pty Ltd", "MOG-LABORATORIES-PTY" }, { 0x70B3D5, 0x9F5000, 0x9F5FFF, "Vickers Electronics Ltd", "VICKERS-ELECTRONICS" }, { 0x70B3D5, 0xFDE000, 0xFDEFFF, "AERONAUTICAL & GENERAL INSTRUMENTS LTD.", "AERONAUTICAL-GENERAL-INSTRUMENTS" }, { 0x70B3D5, 0x104000, 0x104FFF, "Plum sp. z o.o", "PLUM-SP-Z-O-O" }, { 0x70B3D5, 0xC61000, 0xC61FFF, "JC HUNTER TECHNOLOGIES", "JC-HUNTER-TECHNOLOGIES" }, { 0x70B3D5, 0xA5B000, 0xA5BFFF, "Christ Elektronik GmbH", "CHRIST-ELEKTRONIK" }, { 0x70B3D5, 0x39A000, 0x39AFFF, "Videotrend srl", "VIDEOTREND-SRL" }, { 0x70B3D5, 0xCE7000, 0xCE7FFF, "June Automation Singapore Pte. Ltd.", "JUNE-AUTOMATION-SINGAPORE-PTE" }, { 0x70B3D5, 0xEC1000, 0xEC1FFF, "Xafax Nederland bv", "XAFAX-NEDERLAND" }, { 0x70B3D5, 0xA6D000, 0xA6DFFF, "Metek Meteorologische Messtechnik GmbH", "METEK-METEOROLOGISCHE-MESSTECHNIK" }, { 0x70B3D5, 0x3B8000, 0x3B8FFF, "nVideon, Inc.", "NVIDEON" }, { 0x70B3D5, 0x610000, 0x610FFF, "POLVISION", "POLVISION" }, { 0x70B3D5, 0xECE000, 0xECEFFF, "COMM-connect A/S", "COMM-CONNECT-A/S" }, { 0x70B3D5, 0xEB2000, 0xEB2FFF, "Shooter Detection Systems", "SHOOTER-DETECTION" }, { 0x70B3D5, 0x250000, 0x250FFF, "Datum Electronics Limited", "DATUM-ELECTRONICS" }, { 0x70B3D5, 0xFDA000, 0xFDAFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x70B3D5, 0x6D9000, 0x6D9FFF, "VECTARE Inc", "VECTARE" }, { 0x70B3D5, 0xBDA000, 0xBDAFFF, "5-D Systems, Inc.", "5-D" }, { 0x70B3D5, 0x559000, 0x559FFF, "Eagle Mountain Technology", "EAGLE-MOUNTAIN" }, { 0x70B3D5, 0xAEE000, 0xAEEFFF, "DiTEST Fahrzeugdiagnose GmbH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x70B3D5, 0x710000, 0x710FFF, "Guardian Controls International Ltd", "GUARDIAN-CONTROLS" }, { 0x70B3D5, 0xA0B000, 0xA0BFFF, "ambiHome GmbH", "AMBIHOME" }, { 0x70B3D5, 0x204000, 0x204FFF, "TWC", "TWC" }, { 0x70B3D5, 0x83B000, 0x83BFFF, "Telefonix Incorporated", "TELEFONIX-INCORPORATED" }, { 0x70B3D5, 0x029000, 0x029FFF, "Marimo electronics Co.,Ltd.", "MARIMO-ELECTRONICS" }, { 0x70B3D5, 0x010000, 0x010FFF, "Hanwa Electronic Ind.Co.,Ltd.", "HANWA-IND" }, { 0x70B3D5, 0x86D000, 0x86DFFF, "Census Digital Incorporated", "CENSUS-DIGITAL-INCORPORATED" }, { 0x70B3D5, 0xADD000, 0xADDFFF, "GHL Systems Berhad", "GHL-BERHAD" }, { 0x70B3D5, 0x6F6000, 0x6F6FFF, "Acco Brands Europe", "ACCO-BRANDS-EUROPE" }, { 0x70B3D5, 0xD8F000, 0xD8FFFF, "Molu Technology Inc., LTD.", "MOLU" }, { 0x70B3D5, 0x6F2000, 0x6F2FFF, "P&C Micro's Pty Ltd", "P-C-MICRO-S-PTY" }, { 0x70B3D5, 0x43D000, 0x43DFFF, "Veryx Technologies Private Limited", "VERYX-TECHNOLOGIES-PRIVATE" }, { 0x70B3D5, 0xAB7000, 0xAB7FFF, "SIGLEAD INC", "SIGLEAD" }, { 0x70B3D5, 0xD47000, 0xD47FFF, "YotaScope Technologies Co., Ltd.", "YOTASCOPE-TECHNOLOGIES" }, { 0x70B3D5, 0x80F000, 0x80FFFF, "Quickware Eng & Des LLC", "QUICKWARE-ENG-DES-LLC" }, { 0x70B3D5, 0xF61000, 0xF61FFF, "Power Diagnostic Service", "POWER-DIAGNOSTIC-SERVICE" }, { 0x70B3D5, 0x0F0000, 0x0F0FFF, "Avionica", "AVIONICA" }, { 0x70B3D5, 0xE08000, 0xE08FFF, "Olssen", "OLSSEN" }, { 0x70B3D5, 0xFD1000, 0xFD1FFF, "RedRat Ltd", "REDRAT" }, { 0x70B3D5, 0xC8D000, 0xC8DFFF, "KST technology", "KST" }, { 0x70B3D5, 0x044000, 0x044FFF, "Don Electronics Ltd", "DON-ELECTRONICS" }, { 0x70B3D5, 0x5F0000, 0x5F0FFF, "managee GmbH & Co KG", "MANAGEE" }, { 0x70B3D5, 0x956000, 0x956FFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x70B3D5, 0xF62000, 0xF62FFF, "FRS GmbH & Co. KG", "FRS" }, { 0x70B3D5, 0x0A9000, 0x0A9FFF, "ProConnections, Inc.", "PROCONNECTIONS" }, { 0x70B3D5, 0xEDD000, 0xEDDFFF, "Solar Network & Partners", "SOLAR-NETWORK-PARTNERS" }, { 0x70B3D5, 0x3DE000, 0x3DEFFF, "ELOMAC Elektronik GmbH", "ELOMAC-ELEKTRONIK" }, { 0x70B3D5, 0x139000, 0x139FFF, "Tunstall A/S", "TUNSTALL-A/S" }, { 0x70B3D5, 0x871000, 0x871FFF, "Oso Technologies", "OSO-TECHNOLOGIES" }, { 0x70B3D5, 0xAE9000, 0xAE9FFF, "Cari Electronic", "CARI" }, { 0x70B3D5, 0xD8B000, 0xD8BFFF, "Lenoxi Automation s.r.o.", "LENOXI-AUTOMATION-S-R-O" }, { 0x001BC5, 0x0C4000, 0x0C4FFF, "ELDES", "ELDES" }, { 0x001BC5, 0x0BA000, 0x0BAFFF, "NT MICROSYSTEMS", "NT-MICROSYSTEMS" }, { 0x001BC5, 0x0B0000, 0x0B0FFF, "J-D.COM", "J-D-COM" }, { 0x001BC5, 0x0A6000, 0x0A6FFF, "Balter Security GmbH", "BALTER-SECURITY" }, { 0x001BC5, 0x075000, 0x075FFF, "Kitron GmbH", "KITRON" }, { 0x001BC5, 0x074000, 0x074FFF, "Dynasthetics", "DYNASTHETICS" }, { 0x001BC5, 0x07F000, 0x07FFFF, "Hitechlab Inc", "HITECHLAB" }, { 0x001BC5, 0x07E000, 0x07EFFF, "Bio Molecular System Pty Ltd", "BIO-MOLECULAR-SYSTEM-PTY" }, { 0x001BC5, 0x06A000, 0x06AFFF, "IST GmbH", "IST" }, { 0x001BC5, 0x06B000, 0x06BFFF, "Verified Energy, LLC.", "VERIFIED-ENERGY-LLC" }, { 0x001BC5, 0x061000, 0x061FFF, "Scientific-Technical Center Epsilon Limited company", "SCIENTIFIC-TECHNICAL-CENTER-EPSILON-COMPANY" }, { 0x001BC5, 0x060000, 0x060FFF, "ENSTECH", "ENSTECH" }, { 0x001BC5, 0x04D000, 0x04DFFF, "eiraku electric corp.", "EIRAKU-ELECTRIC" }, { 0x001BC5, 0x04C000, 0x04CFFF, "Rhino Controls Ltd.", "RHINO-CONTROLS" }, { 0x001BC5, 0x057000, 0x057FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x001BC5, 0x056000, 0x056FFF, "ThinKom Solutions, Inc", "THINKOM-SOLUTIONS" }, { 0x001BC5, 0x043000, 0x043FFF, "Coincident, Inc.", "COINCIDENT" }, { 0x001BC5, 0x038000, 0x038FFF, "SEED International Ltd.", "SEED" }, { 0x001BC5, 0x02E000, 0x02EFFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x001BC5, 0x024000, 0x024FFF, "ANNECY ELECTRONIQUE SAS", "ANNECY-ELECTRONIQUE-SAS" }, { 0x001BC5, 0x01B000, 0x01BFFF, "Commonwealth Scientific and Industrial Research Organisation", "COMMONWEALTH-SCIENTIFIC-AND-INDUSTRIAL-RESEARCH-ORGANISATION" }, { 0x001BC5, 0x01C000, 0x01CFFF, "Coolit Systems, Inc.", "COOLIT" }, { 0x70B3D5, 0xC3B000, 0xC3BFFF, "Vironova AB", "VIRONOVA-AB" }, { 0x70B3D5, 0x6A9000, 0x6A9FFF, "OHMORI ELECTRIC INDUSTRIES CO.LTD", "OHMORI-ELECTRIC-INDUSTRIES" }, { 0x70B3D5, 0x52E000, 0x52EFFF, "Swissponic Sagl", "SWISSPONIC-SAGL" }, { 0x70B3D5, 0x551000, 0x551FFF, "infrachip", "INFRACHIP" }, { 0x70B3D5, 0x323000, 0x323FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x054000, 0x054FFF, "Groupeer Technologies", "GROUPEER-TECHNOLOGIES" }, { 0x70B3D5, 0x353000, 0x353FFF, "Digital Outfit", "DIGITAL-OUTFIT" }, { 0x70B3D5, 0xF5B000, 0xF5BFFF, "A.F.MENSAH, INC", "A-F-MENSAH" }, { 0x70B3D5, 0xA92000, 0xA92FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x70B3D5, 0xB39000, 0xB39FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0x1E3000, 0x1E3FFF, "Hatel Elektronik LTD. STI.", "HATEL-ELEKTRONIK-STI" }, { 0x70B3D5, 0xCCA000, 0xCCAFFF, "SIEMENS AS", "SIEMENS-AS" }, { 0x70B3D5, 0xEF6000, 0xEF6FFF, "CHARGELIB", "CHARGELIB" }, { 0x70B3D5, 0xB02000, 0xB02FFF, "Nordic Automation Systems AS", "NORDIC-AUTOMATION-AS" }, { 0x70B3D5, 0xB05000, 0xB05FFF, "E-PLUS TECHNOLOGY CO., LTD", "E-PLUS" }, { 0x70B3D5, 0x847000, 0x847FFF, "Ai-Lynx", "AI-LYNX" }, { 0x70B3D5, 0x148000, 0x148FFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x70B3D5, 0xBFE000, 0xBFEFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x261000, 0x261FFF, "Potter Electric Signal Co. LLC", "POTTER-ELECTRIC-SIGNAL-LLC" }, { 0x70B3D5, 0x618000, 0x618FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x70B3D5, 0x892000, 0x892FFF, "ABB", "ABB" }, { 0x70B3D5, 0x9BA000, 0x9BAFFF, "ATIM Radiocommunication", "ATIM-RADIOCOMMUNICATION" }, { 0x70B3D5, 0x4C4000, 0x4C4FFF, "OOO Research and Production Center Computer Technologies", "OOO-RESEARCH-AND-PRODUCTION-CENTER-TECHNOLOGIES" }, { 0x70B3D5, 0x9B3000, 0x9B3FFF, "K&J Schmittschneider AG", "K-J-SCHMITTSCHNEIDER" }, { 0x70B3D5, 0x747000, 0x747FFF, "Eva Automation", "EVA-AUTOMATION" }, { 0x70B3D5, 0x3F4000, 0x3F4FFF, "Wincode Technology Co., Ltd.", "WINCODE" }, { 0x70B3D5, 0x6E6000, 0x6E6FFF, "Eleven Engineering Incorporated", "ELEVEN-ENGINEERING-INCORPORATED" }, { 0x70B3D5, 0xE39000, 0xE39FFF, "Thinnect, Inc,", "THINNECT" }, { 0x70B3D5, 0x216000, 0x216FFF, "FLEXTRONICS", "FLEXTRONICS" }, { 0x70B3D5, 0x0FE000, 0x0FEFFF, "Vocality International Ltd", "VOCALITY" }, { 0x70B3D5, 0x4B7000, 0x4B7FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x55C000, 0x55CFFF, "Saratoga Speed, Inc.", "SARATOGA-SPEED" }, { 0x70B3D5, 0x428000, 0x428FFF, "Presentation Switchers, Inc.", "PRESENTATION-SWITCHERS" }, { 0x70B3D5, 0xC32000, 0xC32FFF, "INFRASAFE/ ADVANTOR SYSTEMS", "INFRASAFE/-ADVANTOR" }, { 0x70B3D5, 0x592000, 0x592FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xF1A000, 0xF1AFFF, "Sator Controls s.r.o.", "SATOR-CONTROLS-S-R-O" }, { 0x70B3D5, 0x05A000, 0x05AFFF, "Uni Control System Sp. z o. o.", "UNI-CONTROL-SYSTEM-SP-Z-O-O" }, { 0x70B3D5, 0x9EF000, 0x9EFFFF, "Cottonwood Creek Technologies, Inc.", "COTTONWOOD-CREEK-TECHNOLOGIES" }, { 0x70B3D5, 0x9EB000, 0x9EBFFF, "Preston Industries dba PolyScience", "PRESTON-INDUSTRIES-DBA-POLYSCIENCE" }, { 0x70B3D5, 0xA3B000, 0xA3BFFF, "Grace Design/Lunatec LLC", "GRACE-DESIGN/LUNATEC-LLC" }, { 0x70B3D5, 0x7A0000, 0x7A0FFF, "Reactec Ltd", "REACTEC" }, { 0x70B3D5, 0x29B000, 0x29BFFF, "DermaLumics S.L.", "DERMALUMICS-S-L" }, { 0x70B3D5, 0x202000, 0x202FFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x259000, 0x259FFF, "Zebra Elektronik A.S.", "ZEBRA-ELEKTRONIK-A-S" }, { 0x70B3D5, 0xFBE000, 0xFBEFFF, "Hanbat National University", "HANBAT-NATIONAL-UNIVERSITY" }, { 0x70B3D5, 0xFE4000, 0xFE4FFF, "CARE PVT LTD", "CARE-PVT" }, { 0x70B3D5, 0x8B1000, 0x8B1FFF, "M-Tech Innovations Limited", "M-TECH-INNOVATIONS" }, { 0x70B3D5, 0xD34000, 0xD34FFF, "G-PHILOS CO.,LTD", "G-PHILOS" }, { 0x70B3D5, 0x528000, 0x528FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xB81000, 0xB81FFF, "Instro Precision Limited", "INSTRO-PRECISION" }, { 0x70B3D5, 0xA66000, 0xA66FFF, "Trapeze Software Group Inc", "TRAPEZE-SOFTWARE-GROUP" }, { 0x70B3D5, 0x1AB000, 0x1ABFFF, "Access Control Systems JSC", "ACCESS-CONTROL-JSC" }, { 0x70B3D5, 0x36C000, 0x36CFFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0x04D000, 0x04DFFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0xA78000, 0xA78FFF, "Bionics co.,ltd.", "BIONICS" }, { 0x70B3D5, 0xE7E000, 0xE7EFFF, "Groupe Citypassenger Inc", "GROUPE-CITYPASSENGER" }, { 0x70B3D5, 0x8D3000, 0x8D3FFF, "PERFORMANCE CONTROLS, INC.", "PERFORMANCE-CONTROLS" }, { 0x70B3D5, 0xD63000, 0xD63FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x508000, 0x508FFF, "INSEVIS GmbH", "INSEVIS" }, { 0x70B3D5, 0x440000, 0x440FFF, "Discover Video", "DISCOVER-VIDEO" }, { 0x70B3D5, 0x50E000, 0x50EFFF, "Micro Trend Automation Co., LTD", "MICRO-TREND-AUTOMATION" }, { 0x70B3D5, 0x879000, 0x879FFF, "ZIGPOS GmbH", "ZIGPOS" }, { 0x70B3D5, 0xC9F000, 0xC9FFFF, "Triax A/S", "TRIAX-A/S" }, { 0x70B3D5, 0x8E4000, 0x8E4FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x350000, 0x350FFF, "Tickster AB", "TICKSTER-AB" }, { 0x70B3D5, 0x2F3000, 0x2F3FFF, "Scame Sistemi srl", "SCAME-SISTEMI-SRL" }, { 0x70B3D5, 0xDAD000, 0xDADFFF, "GD Mission Systems", "GD-MISSION" }, { 0x70B3D5, 0x68D000, 0x68DFFF, "Meta-chrom Co. Ltd.", "META-CHROM" }, { 0x70B3D5, 0x91B000, 0x91BFFF, "Dolotron d.o.o.", "DOLOTRON-D-O-O" }, { 0x70B3D5, 0xA96000, 0xA96FFF, "Östling Marking Systems GmbH", "OESTLING-MARKING" }, { 0x70B3D5, 0x367000, 0x367FFF, "Living Water", "LIVING-WATER" }, { 0x70B3D5, 0x8DB000, 0x8DBFFF, "Kratos Analytical Ltd", "KRATOS-ANALYTICAL" }, { 0x70B3D5, 0xA4F000, 0xA4FFFF, "Weltek Technologies Co. Ltd.", "WELTEK-TECHNOLOGIES" }, { 0x70B3D5, 0x1A3000, 0x1A3FFF, "Telairity Semiconductor", "TELAIRITY-SEMICONDUCTOR" }, { 0x70B3D5, 0x650000, 0x650FFF, "GIFAS-ELECTRIC GmbH", "GIFAS-ELECTRIC" }, { 0x70B3D5, 0xC63000, 0xC63FFF, "Xentech Solutions Limited", "XENTECH-SOLUTIONS" }, { 0x70B3D5, 0x106000, 0x106FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x6C5000, 0x6C5FFF, "CJSC «Russian telecom equipment company» (CJSC RTEC)", "CJSC-«RUSSIAN-TELECOM-EQUIPMENT-COMPANY»-CJSC-RTEC" }, { 0x70B3D5, 0xFE9000, 0xFE9FFF, "Camsat Przemysław Gralak", "CAMSAT-PRZEMYSłAW-GRALAK" }, { 0x70B3D5, 0x4C5000, 0x4C5FFF, "Moving iMage Technologies LLC", "MOVING-IMAGE-TECHNOLOGIES-LLC" }, { 0x70B3D5, 0x91A000, 0x91AFFF, "Fujian Landfone Information Technology Co.,Ltd", "FUJIAN-LANDFONE-INFORMATION" }, { 0x70B3D5, 0x9EC000, 0x9ECFFF, "eSoftThings", "ESOFTTHINGS" }, { 0x70B3D5, 0x761000, 0x761FFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xC22000, 0xC22FFF, "Skyriver Communications Inc.", "SKYRIVER-COMMUNICATION" }, { 0x70B3D5, 0x3BB000, 0x3BBFFF, "A-M Systems", "A-M" }, { 0x70B3D5, 0xB44000, 0xB44FFF, "ENTEC Electric & Electronic Co., LTD.", "ENTEC-ELECTRIC" }, { 0x70B3D5, 0x584000, 0x584FFF, "Sertone, a division of Opti-Knights Ltd", "SERTONE-A-DIVISION-OF-OPTI-KNIGHTS" }, { 0x70B3D5, 0x3EF000, 0x3EFFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x7C2000, 0x7C2FFF, "Morgan Schaffer Inc.", "MORGAN-SCHAFFER" }, { 0x70B3D5, 0x697000, 0x697FFF, "Alazar Technologies Inc.", "ALAZAR-TECHNOLOGIES" }, { 0x70B3D5, 0x61A000, 0x61AFFF, "Rocket Lab Ltd.", "ROCKET-LAB" }, { 0x70B3D5, 0x855000, 0x855FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xF8D000, 0xF8DFFF, "Flextronics Canafa Design Services", "FLEXTRONICS-CANAFA-DESIGN-SERVICES" }, { 0x70B3D5, 0x9AE000, 0x9AEFFF, "Volansys technologies pvt ltd", "VOLANSYS-TECHNOLOGIES-PVT" }, { 0x70B3D5, 0x42C000, 0x42CFFF, "D.Marchiori Srl", "D-MARCHIORI-SRL" }, { 0x70B3D5, 0xCE5000, 0xCE5FFF, "GridBridge Inc", "GRIDBRIDGE" }, { 0x70B3D5, 0x1EF000, 0x1EFFFF, "ADTEK", "ADTEK" }, { 0x70B3D5, 0xEDB000, 0xEDBFFF, "Netfort Solutions", "NETFORT-SOLUTIONS" }, { 0x70B3D5, 0xCD9000, 0xCD9FFF, "Peter Huber Kaeltemaschinenbau GmbH", "PETER-HUBER-KAELTEMASCHINENBAU" }, { 0x70B3D5, 0x1D7000, 0x1D7FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x976000, 0x976FFF, "Atonarp Micro-Systems India Pvt. Ltd.", "ATONARP-MICRO--INDIA-PVT" }, { 0x70B3D5, 0x0DA000, 0x0DAFFF, "Aquavision Distribution Ltd", "AQUAVISION-DISTRIBUTION" }, { 0x70B3D5, 0x989000, 0x989FFF, "DCNS", "DCNS" }, { 0x70B3D5, 0x833000, 0x833FFF, "Alpiq InTec Management AG", "ALPIQ-INTEC-MANAGEMENT" }, { 0x70B3D5, 0x3E8000, 0x3E8FFF, "COSMOS web Co., Ltd.", "COSMOS-WEB" }, { 0x70B3D5, 0x97F000, 0x97FFFF, "BISTOS.,Co.,Ltd", "BISTOS" }, { 0x70B3D5, 0xC5D000, 0xC5DFFF, "FOSHAN SHILANTIAN NETWORK S.T. CO., LTD.", "FOSHAN-SHILANTIAN-NETWORK-S-T" }, { 0x70B3D5, 0x73B000, 0x73BFFF, "S-I-C", "S-I-C" }, { 0x70B3D5, 0x114000, 0x114FFF, "Project H Pty Ltd", "PROJECT-H-PTY" }, { 0x70B3D5, 0x906000, 0x906FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x243000, 0x243FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x9F3000, 0x9F3FFF, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x70B3D5, 0xAAC000, 0xAACFFF, "SensoTec GmbH", "SENSOTEC" }, { 0x70B3D5, 0xF9A000, 0xF9AFFF, "Krabbenhøft og Ingolfsson", "KRABBENHøFT-OG-INGOLFSSON" }, { 0x70B3D5, 0x349000, 0x349FFF, "SLAT", "SLAT" }, { 0x70B3D5, 0xD91000, 0xD91FFF, "FoodALYT GmbH", "FOODALYT" }, { 0x70B3D5, 0x3AE000, 0x3AEFFF, "Exicom Technologies fze", "EXICOM-TECHNOLOGIES-FZE" }, { 0x70B3D5, 0x7DD000, 0x7DDFFF, "Excel Medical Electronics LLC", "EXCEL-MEDICAL-ELECTRONICS-LLC" }, { 0x70B3D5, 0xE71000, 0xE71FFF, "SiS Technology", "SIS" }, { 0x70B3D5, 0xEA0000, 0xEA0FFF, "PARK24", "PARK24" }, { 0x70B3D5, 0xD05000, 0xD05FFF, "Colmek", "COLMEK" }, { 0x70B3D5, 0xBF5000, 0xBF5FFF, "Acacia Research", "ACACIA-RESEARCH" }, { 0x70B3D5, 0x499000, 0x499FFF, "Pycom Ltd", "PYCOM" }, { 0x70B3D5, 0x21E000, 0x21EFFF, "Hildebrand Technology Limited", "HILDEBRAND" }, { 0x70B3D5, 0xD67000, 0xD67FFF, "ALPHA Corporation", "ALPHA " }, { 0x70B3D5, 0xC4F000, 0xC4FFFF, "AE Van de Vliet BVBA", "AE-VAN-DE-VLIET-BVBA" }, { 0x70B3D5, 0xBD9000, 0xBD9FFF, "SolwayTech", "SOLWAYTECH" }, { 0x70B3D5, 0xF35000, 0xF35FFF, "carbonTRACK", "CARBONTRACK" }, { 0x70B3D5, 0x29F000, 0x29FFFF, "Code Hardware SA", "CODE-HARDWARE" }, { 0x70B3D5, 0xF76000, 0xF76FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x70B3D5, 0x2B9000, 0x2B9FFF, "BELECTRIC GmbH", "BELECTRIC" }, { 0x70B3D5, 0x9AD000, 0x9ADFFF, "Fortuna Impex Pvt ltd", "FORTUNA-IMPEX-PVT" }, { 0x70B3D5, 0x594000, 0x594FFF, "ATE Systems Inc", "ATE" }, { 0x70B3D5, 0x8CB000, 0x8CBFFF, "WELT Corporation", "WELT" }, { 0x70B3D5, 0x405000, 0x405FFF, "MG s.r.l.", "MG-S-R-L" }, { 0x70B3D5, 0x87E000, 0x87EFFF, "Septentrio NV", "SEPTENTRIO-NV" }, { 0x70B3D5, 0xECB000, 0xECBFFF, "Re spa - Controlli Industriali - IT01782300154", "RE-SPA---CONTROLLI-INDUSTRIALI---IT01782300154" }, { 0x70B3D5, 0x5F4000, 0x5F4FFF, "FDSTiming", "FDSTIMING" }, { 0x70B3D5, 0xD75000, 0xD75FFF, "Hyundai MNSOFT", "HYUNDAI-MNSOFT" }, { 0x70B3D5, 0xD9A000, 0xD9AFFF, "Wuhan Xingtuxinke ELectronic Co.,Ltd", "WUHAN-XINGTUXINKE" }, { 0x70B3D5, 0x9C7000, 0x9C7FFF, "YUYAMA MFG Co.,Ltd", "YUYAMA-MFG" }, { 0x70B3D5, 0x32A000, 0x32AFFF, "Wuhan Xingtuxinke ELectronic Co.,Ltd", "WUHAN-XINGTUXINKE" }, { 0x70B3D5, 0x60E000, 0x60EFFF, "HDANYWHERE", "HDANYWHERE" }, { 0x70B3D5, 0xEBB000, 0xEBBFFF, "Beijing Wing ICT Technology Co., Ltd.", "BEIJING-WING-ICT" }, { 0x70B3D5, 0xB09000, 0xB09FFF, "FIRST LIGHT IMAGING", "FIRST-LIGHT-IMAGING" }, { 0x70B3D5, 0x18C000, 0x18CFFF, "CMC Industrial Electronics Ltd", "CMC-INDUSTRIAL-ELECTRONICS" }, { 0x70B3D5, 0xAFF000, 0xAFFFFF, "digital-spice", "DIGITAL-SPICE" }, { 0x70B3D5, 0x563000, 0x563FFF, "Zhejiang Hao Teng Electronic Technology Co., Ltd.", "ZHEJIANG-HAO-TENG" }, { 0x70B3D5, 0xC06000, 0xC06FFF, "XotonicsMED GmbH", "XOTONICSMED" }, { 0x70B3D5, 0x2DB000, 0x2DBFFF, "ProtoPixel SL", "PROTOPIXEL-SL" }, { 0x70B3D5, 0xA58000, 0xA58FFF, "MCQ TECH GmbH", "MCQ-TECH" }, { 0x70B3D5, 0x934000, 0x934FFF, "RBS Netkom GmbH", "RBS-NETKOM" }, { 0x70B3D5, 0x13D000, 0x13DFFF, "Elsist Srl", "ELSIST-SRL" }, { 0x70B3D5, 0x3B7000, 0x3B7FFF, "Paul Scherrer Institut (PSI)", "PAUL-SCHERRER-INSTITUT-PSI" }, { 0x70B3D5, 0x94D000, 0x94DFFF, "SEASON DESIGN TECHNOLOGY", "SEASON-DESIGN" }, { 0x70B3D5, 0xA4C000, 0xA4CFFF, "Alere Technologies AS", "ALERE-TECHNOLOGIES-AS" }, { 0x70B3D5, 0x90B000, 0x90BFFF, "Matrix Switch Corporation", "MATRIX-SWITCH" }, { 0x70B3D5, 0xC4B000, 0xC4BFFF, "ANKER-EAST", "ANKER-EAST" }, { 0x70B3D5, 0x68E000, 0x68EFFF, "CEA Technologies Pty Ltd", "CEA-TECHNOLOGIES-PTY" }, { 0x70B3D5, 0x542000, 0x542FFF, "RTDS Technologies Inc.", "RTDS-TECHNOLOGIES" }, { 0x70B3D5, 0x1E4000, 0x1E4FFF, "Tecnologix s.r.l.", "TECNOLOGIX-S-R-L" }, { 0x70B3D5, 0x1C5000, 0x1C5FFF, "ELSAG", "ELSAG" }, { 0x70B3D5, 0x635000, 0x635FFF, "Cosylab d.d.", "COSYLAB-D-D" }, { 0x70B3D5, 0xD84000, 0xD84FFF, "Sentry360", "SENTRY360" }, { 0x70B3D5, 0x75A000, 0x75AFFF, "Standard Backhaul Communications", "STANDARD-BACKHAUL-COMMUNICATION" }, { 0x70B3D5, 0x482000, 0x482FFF, "Aeryon Labs Inc", "AERYON-LABS" }, { 0x70B3D5, 0xFBF000, 0xFBFFFF, "SenSys (Design Electronics Ltd)", "SENSYS-DESIGN-ELECTRONICS" }, { 0x70B3D5, 0x825000, 0x825FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0xD37000, 0xD37FFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0x039000, 0x039FFF, "DoWoo Digitech", "DOWOO-DIGITECH" }, { 0x70B3D5, 0x27E000, 0x27EFFF, "Mettler Toledo Hi Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x70B3D5, 0xF83000, 0xF83FFF, "Tata Communications Ltd.", "TATA-COMMUNICATION" }, { 0x70B3D5, 0x60B000, 0x60BFFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x70B3D5, 0x0D9000, 0x0D9FFF, "Brechbuehler AG", "BRECHBUEHLER" }, { 0x70B3D5, 0x37C000, 0x37CFFF, "Merus Power Dynamics Ltd.", "MERUS-POWER-DYNAMICS" }, { 0x70B3D5, 0xEF8000, 0xEF8FFF, "DKS Dienstl.ges. f. Komm.anl. d. Stadt- u. Reg.verk. mbH", "DKS-DIENSTL-GES-F-KOMM-ANL-D-STADT--U-REG-VERK-MBH" }, { 0x70B3D5, 0x4CF000, 0x4CFFFF, "GREEN HOUSE CO., LTD.", "GREEN-HOUSE" }, { 0x70B3D5, 0xD58000, 0xD58FFF, "Idyllic Engineering Pte Ltd", "IDYLLIC-ENGINEERING-PTE" }, { 0x70B3D5, 0x954000, 0x954FFF, "Dot System S.r.l.", "DOT-SYSTEM-S-R-L" }, { 0x70B3D5, 0xD40000, 0xD40FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x880000, 0x880FFF, "Skopei B.V.", "SKOPEI" }, { 0x70B3D5, 0x51C000, 0x51CFFF, "ATX Networks Corp", "ATX-NETWORKS" }, { 0x70B3D5, 0xFBD000, 0xFBDFFF, "MB connect line GmbH Fernwartungssysteme", "MB-CONNECT-LINE-FERNWARTUNGSSYSTEME" }, { 0x70B3D5, 0x511000, 0x511FFF, "Next Sight srl", "NEXT-SIGHT-SRL" }, { 0x70B3D5, 0xFA7000, 0xFA7FFF, "Nordson Corporation", "NORDSON" }, { 0x70B3D5, 0x85E000, 0x85EFFF, "XLOGIC srl", "XLOGIC-SRL" }, { 0x70B3D5, 0x31C000, 0x31CFFF, "FINANCIERE DE L'OMBREE (eolane)", "FINANCIERE-DE-L-OMBREE-EOLANE" }, { 0x70B3D5, 0xC41000, 0xC41FFF, "Merlin CSI", "MERLIN-CSI" }, { 0x70B3D5, 0x902000, 0x902FFF, "Unlimiterhear co.,ltd. taiwan branch", "UNLIMITERHEAR-TAIWAN-BRANCH" }, { 0x70B3D5, 0xAD1000, 0xAD1FFF, "Sensile Technologies SA", "SENSILE-TECHNOLOGIES" }, { 0x70B3D5, 0x397000, 0x397FFF, "Guangxi Hunter Information Industry Co.,Ltd", "GUANGXI-HUNTER-INFORMATION-INDUSTRY" }, { 0x70B3D5, 0x637000, 0x637FFF, "INEO-SENSE", "INEO-SENSE" }, { 0x70B3D5, 0x378000, 0x378FFF, "synchrotron SOLEIL", "SYNCHROTRON-SOLEIL" }, { 0x70B3D5, 0x7B2000, 0x7B2FFF, "Rail Power Systems GmbH", "RAIL-POWER" }, { 0x70B3D5, 0xF12000, 0xF12FFF, "Incoil Induktion AB", "INCOIL-INDUKTION-AB" }, { 0x70B3D5, 0x997000, 0x997FFF, "ProTom International", "PROTOM" }, { 0x70B3D5, 0x288000, 0x288FFF, "Bresslergroup", "BRESSLERGROUP" }, { 0x70B3D5, 0x4BE000, 0x4BEFFF, "GY-FX SAS", "GY-FX-SAS" }, { 0x70B3D5, 0x10F000, 0x10FFFF, "neQis", "NEQIS" }, { 0x70B3D5, 0x98C000, 0x98CFFF, "University of Wisconsin Madison - Department of High Energy Physics", "UNIVERSITY-OF-WISCONSIN-MADISON---DEPARTMENT-OF-HIGH-ENERGY-PHYSICS" }, { 0x70B3D5, 0xE04000, 0xE04FFF, "Combilent", "COMBILENT" }, { 0x70B3D5, 0x022000, 0x022FFF, "Ravelin Ltd", "RAVELIN" }, { 0x70B3D5, 0x135000, 0x135FFF, "DORLET SAU", "DORLET-SAU" }, { 0x70B3D5, 0xFF1000, 0xFF1FFF, "Data Strategy Limited", "DATA-STRATEGY" }, { 0x70B3D5, 0x002000, 0x002FFF, "Gogo BA", "GOGO-BA" }, { 0x70B3D5, 0x138000, 0x138FFF, "SMITEC S.p.A.", "SMITEC-S-P-A" }, { 0x70B3D5, 0x0B0000, 0x0B0FFF, "Raven Systems Design, Inc", "RAVEN-DESIGN" }, { 0x70B3D5, 0x596000, 0x596FFF, "Mencom Corporation", "MENCOM" }, { 0x70B3D5, 0x17A000, 0x17AFFF, "Gencoa Ltd", "GENCOA" }, { 0x70B3D5, 0xC49000, 0xC49FFF, "BTG Instruments AB", "BTG-INSTRUMENTS-AB" }, { 0x70B3D5, 0x30B000, 0x30BFFF, "Ash Technologies", "ASH-TECHNOLOGIES" }, { 0x70B3D5, 0x6A6000, 0x6A6FFF, "WOW System", "WOW-SYSTEM" }, { 0x70B3D5, 0xFEF000, 0xFEFFFF, "HANGZHOU HUALAN MICROELECTRONIQUE CO.,LTD", "HANGZHOU-HUALAN-MICROELECTRONIQUE" }, { 0x70B3D5, 0x211000, 0x211FFF, "Fracarro srl", "FRACARRO-SRL" }, { 0x70B3D5, 0x60A000, 0x60AFFF, "TATA POWER SED", "TATA-POWER-SED" }, { 0x70B3D5, 0x479000, 0x479FFF, "LINEAGE POWER PVT LTD.,", "LINEAGE-POWER-PVT" }, { 0x70B3D5, 0x129000, 0x129FFF, "OOO Microlink-Svyaz", "OOO-MICROLINK-SVYAZ" }, { 0x70B3D5, 0x64C000, 0x64CFFF, "ACEMIS FRANCE", "ACEMIS-FRANCE" }, { 0x70B3D5, 0x763000, 0x763FFF, "A Trap, USA", "A-TRAP-USA" }, { 0x70B3D5, 0x47F000, 0x47FFFF, "ASE GmbH", "ASE" }, { 0x70B3D5, 0x175000, 0x175FFF, "Akribis Systems", "AKRIBIS" }, { 0x70B3D5, 0xDC9000, 0xDC9FFF, "Sensoterra BV", "SENSOTERRA" }, { 0x70B3D5, 0x371000, 0x371FFF, "BEDEROV GmbH", "BEDEROV" }, { 0x70B3D5, 0x59C000, 0x59CFFF, "DAVE SRL", "DAVE-SRL" }, { 0x70B3D5, 0xC79000, 0xC79FFF, "MB connect line GmbH Fernwartungssysteme", "MB-CONNECT-LINE-FERNWARTUNGSSYSTEME" }, { 0x70B3D5, 0xB04000, 0xB04FFF, "Herrmann Datensysteme GmbH", "HERRMANN-DATENSYSTEME" }, { 0x70B3D5, 0x229000, 0x229FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x70B3D5, 0x55E000, 0x55EFFF, "BRS Sistemas Eletrônicos", "BRS-SISTEMAS-ELETRôNICOS" }, { 0x70B3D5, 0xEE3000, 0xEE3FFF, "Lithe Technology, LLC", "LITHE-LLC" }, { 0x70B3D5, 0xD69000, 0xD69FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x70B3D5, 0xFA0000, 0xFA0FFF, "TIAMA", "TIAMA" }, { 0x70B3D5, 0x7DF000, 0x7DFFFF, "RDT Ltd", "RDT" }, { 0x70B3D5, 0x08D000, 0x08DFFF, "Clover Electronics Technology Co., Ltd.", "CLOVER-ELECTRONICS" }, { 0x70B3D5, 0x7D2000, 0x7D2FFF, "SDK Kristall", "SDK-KRISTALL" }, { 0x70B3D5, 0xAF0000, 0xAF0FFF, "SEASON DESIGN TECHNOLOGY", "SEASON-DESIGN" }, { 0x70B3D5, 0xD6C000, 0xD6CFFF, "GP Systems GmbH", "GP" }, { 0x70B3D5, 0x6AF000, 0x6AFFFF, "Sensorberg GmbH", "SENSORBERG" }, { 0x70B3D5, 0x18E000, 0x18EFFF, "NIPPON SEIKI CO., LTD.", "NIPPON-SEIKI" }, { 0x70B3D5, 0xC0C000, 0xC0CFFF, "Tech4Race", "TECH4RACE" }, { 0x70B3D5, 0x5D8000, 0x5D8FFF, "LYNX Technik AG", "LYNX-TECHNIK" }, { 0x70B3D5, 0x374000, 0x374FFF, "OOO NPP Mars-Energo", "OOO-NPP-MARS-ENERGO" }, { 0x70B3D5, 0x4A5000, 0x4A5FFF, "Intermind Inc.", "INTERMIND" }, { 0x70B3D5, 0xC1D000, 0xC1DFFF, "Kranze Technology Solutions", "KRANZE-SOLUTIONS" }, { 0x70B3D5, 0xCC3000, 0xCC3FFF, "Fidalia Networks Inc", "FIDALIA-NETWORKS" }, { 0x70B3D5, 0x07F000, 0x07FFFF, "Abalance Corporation", "ABALANCE" }, { 0x70B3D5, 0x6E8000, 0x6E8FFF, "Blu Wireless Technology Ltd", "BLU-WIRELESS" }, { 0x70B3D5, 0x8AB000, 0x8ABFFF, "EMAC, Inc.", "EMAC" }, { 0x70B3D5, 0x729000, 0x729FFF, "EMAC, Inc.", "EMAC" }, { 0x70B3D5, 0xE93000, 0xE93FFF, "ECON Technology Co.Ltd", "ECON" }, { 0x70B3D5, 0xCF4000, 0xCF4FFF, "Harbin Cheng Tian Technology Development Co., Ltd.", "HARBIN-CHENG-TIAN-DEVELOPMENT" }, { 0x70B3D5, 0x4BD000, 0x4BDFFF, "Boulder Amplifiers, Inc.", "BOULDER-AMPLIFIERS" }, { 0x70B3D5, 0x45C000, 0x45CFFF, "AlyTech", "ALYTECH" }, { 0x70B3D5, 0x4B9000, 0x4B9FFF, "SHEN ZHEN TTK TECHNOLOGY CO,LTD", "SHEN-ZHEN-TTK" }, { 0x70B3D5, 0x1C4000, 0x1C4FFF, "Smeg S.p.A.", "SMEG-S-P-A" }, { 0x70B3D5, 0xA59000, 0xA59FFF, "Muuntosähkö Oy - Trafox", "MUUNTOSAEHKOE-OY---TRAFOX" }, { 0x70B3D5, 0xD76000, 0xD76FFF, "attocube systems AG", "ATTOCUBE" }, { 0x70B3D5, 0x7E3000, 0x7E3FFF, "RedLeaf Security", "REDLEAF-SECURITY" }, { 0x70B3D5, 0x83C000, 0x83CFFF, "Sinoembed", "SINOEMBED" }, { 0x70B3D5, 0x7EB000, 0x7EBFFF, "Xerox International Partners", "XEROX-PARTNERS" }, { 0x70B3D5, 0xF57000, 0xF57FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x01F000, 0x01FFFF, "SPX Flow Technology BV", "SPX-FLOW" }, { 0x70B3D5, 0x407000, 0x407FFF, "IDOSENS", "IDOSENS" }, { 0x70B3D5, 0xC01000, 0xC01FFF, "SmartGuard LLC", "SMARTGUARD-LLC" }, { 0x70B3D5, 0x7C8000, 0x7C8FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x7B9000, 0x7B9FFF, "QIAGEN Instruments AG", "QIAGEN-INSTRUMENTS" }, { 0x70B3D5, 0xDD7000, 0xDD7FFF, "DETECT Australia", "DETECT-AUSTRALIA" }, { 0x70B3D5, 0xDDF000, 0xDDFFFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x70B3D5, 0xBF1000, 0xBF1FFF, "Flashnet SRL", "FLASHNET-SRL" }, { 0x70B3D5, 0x0C5000, 0x0C5FFF, "Precitec Optronik GmbH", "PRECITEC-OPTRONIK" }, { 0x70B3D5, 0xE35000, 0xE35FFF, "Nanospeed Technologies Limited", "NANOSPEED-TECHNOLOGIES" }, { 0x70B3D5, 0x5EE000, 0x5EEFFF, "Mikrotron Mikrocomputer, Digital- und Analogtechnik GmbH", "MIKROTRON-MIKROCOMPUTER-DIGITAL--UND-ANALOGTECHNIK" }, { 0x70B3D5, 0xF11000, 0xF11FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0xB3E000, 0xB3EFFF, "Paradigm Communication Systems Ltd", "PARADIGM-COMMUNICATION" }, { 0x70B3D5, 0x161000, 0x161FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0x033000, 0x033FFF, "Sailmon BV", "SAILMON" }, { 0x70B3D5, 0xD42000, 0xD42FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x70B3D5, 0xA56000, 0xA56FFF, "DORLET SAU", "DORLET-SAU" }, { 0x70B3D5, 0xFDF000, 0xFDFFFF, "NARA CONTROLS INC.", "NARA-CONTROLS" }, { 0x70B3D5, 0x430000, 0x430FFF, "Algodue Elettronica Srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x70B3D5, 0x5B6000, 0x5B6FFF, "Ethical Lighting and Sensor Solutions Limited", "ETHICAL-LIGHTING-AND-SENSOR-SOLUTIONS" }, { 0x70B3D5, 0x2EB000, 0x2EBFFF, "BRNET CO.,LTD.", "BRNET" }, { 0x70B3D5, 0xE7A000, 0xE7AFFF, "ART SPA", "ART-SPA" }, { 0x70B3D5, 0xA93000, 0xA93FFF, "Mes Communication Co., Ltd", "MES-COMMUNICATION" }, { 0x70B3D5, 0x0FC000, 0x0FCFFF, "vitalcare", "VITALCARE" }, { 0x70B3D5, 0x9C8000, 0x9C8FFF, "Applied Systems Engineering, Inc.", "APPLIED-ENGINEERING" }, { 0x70B3D5, 0xD8C000, 0xD8CFFF, "Damerell Design Limited (DCL)", "DAMERELL-DESIGN-DCL" }, { 0x70B3D5, 0xFBB000, 0xFBBFFF, "Vena Engineering Corporation", "VENA-ENGINEERING" }, { 0x70B3D5, 0xC21000, 0xC21FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x628000, 0x628FFF, "MECT S.R.L.", "MECT-S-R-L" }, { 0x70B3D5, 0x32F000, 0x32FFFF, "Movidius SRL", "MOVIDIUS-SRL" }, { 0x70B3D5, 0x9C9000, 0x9C9FFF, "PK Sound", "PK-SOUND" }, { 0x70B3D5, 0xADA000, 0xADAFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x554000, 0x554FFF, "Teletypes Manufacturing Plant", "TELETYPES-MANUFACTURING-PLANT" }, { 0x70B3D5, 0xE0D000, 0xE0DFFF, "Sigma Connectivity AB", "SIGMA-CONNECTIVITY-AB" }, { 0x70B3D5, 0x72D000, 0x72DFFF, "Kron Medidores", "KRON-MEDIDORES" }, { 0x70B3D5, 0xD8D000, 0xD8DFFF, "Pullnet Technology,S.L.", "PULLNET-S-L" }, { 0x70B3D5, 0x2BC000, 0x2BCFFF, "EQUIPOS DE TELECOMUNICACIÓN OPTOELECTRÓNICOS, S.A.", "EQUIPOS-DE-TELECOMUNICACIÓN-OPTOELECTRÓNICOS" }, { 0x70B3D5, 0x2D6000, 0x2D6FFF, "Kvazar LLC", "KVAZAR-LLC" }, { 0x70B3D5, 0x231000, 0x231FFF, "DELTA TAU DATA SYSTEMS, INC.", "DELTA-TAU-DATA" }, { 0x70B3D5, 0x823000, 0x823FFF, "SP Controls", "SP-CONTROLS" }, { 0x70B3D5, 0x80D000, 0x80DFFF, "Data Physics Corporation", "DATA-PHYSICS" }, { 0x70B3D5, 0x336000, 0x336FFF, "Synaccess Networks Inc.", "SYNACCESS-NETWORKS" }, { 0x70B3D5, 0xA51000, 0xA51FFF, "RF Code", "RF-CODE" }, { 0x70B3D5, 0x7AF000, 0x7AFFFF, "Hessware GmbH", "HESSWARE" }, { 0x70B3D5, 0x3F9000, 0x3F9FFF, "Herrick Tech Labs", "HERRICK-TECH-LABS" }, { 0x70B3D5, 0x4B1000, 0x4B1FFF, "LACE LLC.", "LACE-LLC" }, { 0x70B3D5, 0x530000, 0x530FFF, "iSiS-Ex Limited", "ISIS-EX" }, { 0x70B3D5, 0xA27000, 0xA27FFF, "HDL da Amazônia Industria Eletrônica Ltda", "HDL-DA-AMAZôNIA-INDUSTRIA-ELETRôNICA-LTDA" }, { 0x70B3D5, 0x7AD000, 0x7ADFFF, "Insitu Inc", "INSITU" }, { 0x70B3D5, 0xE21000, 0xE21FFF, "LLVISION TECHNOLOGY CO.,LTD", "LLVISION" }, { 0x70B3D5, 0x583000, 0x583FFF, "Ducommun Inc.", "DUCOMMUN" }, { 0x70B3D5, 0xF1E000, 0xF1EFFF, "ATX NETWORKS LTD", "ATX-NETWORKS" }, { 0x70B3D5, 0x9E7000, 0x9E7FFF, "Xiamen Maxincom Technologies Co., Ltd.", "XIAMEN-MAXINCOM-TECHNOLOGIES" }, { 0x70B3D5, 0x472000, 0x472FFF, "Quadio Devices Private Limited", "QUADIO-DEVICES-PRIVATE" }, { 0x70B3D5, 0x7A8000, 0x7A8FFF, "dieEntwickler Elektronik GmbH", "DIEENTWICKLER-ELEKTRONIK" }, { 0x70B3D5, 0x03F000, 0x03FFFF, "Elesar Limited", "ELESAR" }, { 0x70B3D5, 0x3D7000, 0x3D7FFF, "Remote Sensing Solutions, Inc.", "REMOTE-SENSING-SOLUTIONS" }, { 0x70B3D5, 0x838000, 0x838FFF, "Tofino", "TOFINO" }, { 0x70B3D5, 0x1F3000, 0x1F3FFF, "Smart Energy Code Company Limited", "SMART-ENERGY-CODE-COMPANY" }, { 0x70B3D5, 0x6BB000, 0x6BBFFF, "LUCEO", "LUCEO" }, { 0x70B3D5, 0xC5A000, 0xC5AFFF, "Commsignia Ltd.", "COMMSIGNIA" }, { 0x70B3D5, 0x9DB000, 0x9DBFFF, "CAS Medical Systems, Inc", "CAS-MEDICAL" }, { 0x70B3D5, 0xBDD000, 0xBDDFFF, "CDR SRL", "CDR-SRL" }, { 0x70B3D5, 0xF5A000, 0xF5AFFF, "HAMEG GmbH", "HAMEG" }, { 0x70B3D5, 0x74C000, 0x74CFFF, "Kwant Controls BV", "KWANT-CONTROLS" }, { 0x70B3D5, 0x6FA000, 0x6FAFFF, "Dataforth Corporation", "DATAFORTH" }, { 0x70B3D5, 0xE90000, 0xE90FFF, "Getein Biotechnology Co.,ltd", "GETEIN-BIOTECHNOLOGY" }, { 0x70B3D5, 0xC3F000, 0xC3FFFF, "Code Blue Corporation", "CODE-BLUE" }, { 0x70B3D5, 0x917000, 0x917FFF, "KSJ Co.Ltd", "KSJ" }, { 0x70B3D5, 0xEC6000, 0xEC6FFF, "ESII", "ESII" }, { 0x70B3D5, 0x849000, 0x849FFF, "RF-Tuote Oy", "RF-TUOTE-OY" }, { 0x70B3D5, 0x9D3000, 0x9D3FFF, "Communication Technology Ltd.", "COMMUNICATION" }, { 0x70B3D5, 0x46B000, 0x46BFFF, "Airborne Engineering Limited", "AIRBORNE-ENGINEERING" }, { 0x70B3D5, 0xEFB000, 0xEFBFFF, "PXM sp.k.", "PXM-SP-K" }, { 0x70B3D5, 0xA81000, 0xA81FFF, "Sienda New Media Technologies GmbH", "SIENDA-NEW-MEDIA-TECHNOLOGIES" }, { 0x70B3D5, 0xEAC000, 0xEACFFF, "Kentech Instruments Limited", "KENTECH-INSTRUMENTS" }, { 0x70B3D5, 0x8AD000, 0x8ADFFF, "Global Communications Technology LLC", "GLOBAL-COMMUNICATION-LLC" }, { 0x70B3D5, 0xC97000, 0xC97FFF, "CSINFOTEL", "CSINFOTEL" }, { 0x70B3D5, 0xF10000, 0xF10FFF, "Riegl Laser Measurement Systems GmbH", "RIEGL-LASER-MEASUREMENT" }, { 0x70B3D5, 0x4AA000, 0x4AAFFF, "Twoway Communications, Inc.", "TWOWAY-COMMUNICATION" }, { 0x70B3D5, 0x5A2000, 0x5A2FFF, "Wallner Automation GmbH", "WALLNER-AUTOMATION" }, { 0x70B3D5, 0x418000, 0x418FFF, "DEV Systemtechnik GmbH& Co KG", "DEV-SYSTEMTECHNIK" }, { 0x70B3D5, 0xD79000, 0xD79FFF, "GOMA ELETTRONICA SpA", "GOMA-ELETTRONICA-SPA" }, { 0x70B3D5, 0x58E000, 0x58EFFF, "Veilux Inc.", "VEILUX" }, { 0x70B3D5, 0x181000, 0x181FFF, "Task Sistemas", "TASK-SISTEMAS" }, { 0x70B3D5, 0xDCF000, 0xDCFFFF, "KLS Netherlands B.V.", "KLS-NETHERLANDS" }, { 0x70B3D5, 0xA25000, 0xA25FFF, "PulseTor LLC", "PULSETOR-LLC" }, { 0x70B3D5, 0x882000, 0x882FFF, "SIMON TECH, S.L.", "SIMON-TECH-S-L" }, { 0x70B3D5, 0x959000, 0x959FFF, "Zulex International Co.,Ltd.", "ZULEX" }, { 0x70B3D5, 0xCFF000, 0xCFFFFF, "DTECH Labs, Inc.", "DTECH-LABS" }, { 0x70B3D5, 0x0C0000, 0x0C0FFF, "Molu Technology Inc., LTD.", "MOLU" }, { 0x70B3D5, 0x3DF000, 0x3DFFFF, "MultiDyne", "MULTIDYNE" }, { 0x70B3D5, 0x82C000, 0x82CFFF, "NELS Ltd.", "NELS" }, { 0x70B3D5, 0x501000, 0x501FFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x70B3D5, 0x025000, 0x025FFF, "Elsuhd Net Ltd Co.", "ELSUHD-NET" }, { 0x70B3D5, 0x58F000, 0x58FFFF, "LSL systems", "LSL" }, { 0x70B3D5, 0xA55000, 0xA55FFF, "Embest Technology Co., Ltd", "EMBEST" }, { 0x70B3D5, 0xBE1000, 0xBE1FFF, "FeCon GmbH", "FECON" }, { 0x70B3D5, 0x26E000, 0x26EFFF, "HI-TECH SYSTEM Co. Ltd.", "HI-TECH-SYSTEM" }, { 0x70B3D5, 0x5E9000, 0x5E9FFF, "Zehetner-Elektronik GmbH", "ZEHETNER-ELEKTRONIK" }, { 0x70B3D5, 0x205000, 0x205FFF, "Esource Srl", "ESOURCE-SRL" }, { 0x70B3D5, 0x112000, 0x112FFF, "DiTEST Fahrzeugdiagnose GmbH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x70B3D5, 0x3DA000, 0x3DAFFF, "Loop Labs, Inc.", "LOOP-LABS" }, { 0x70B3D5, 0xFF5000, 0xFF5FFF, "Prolan Process Control Co.", "PROLAN-PROCESS-CONTROL" }, { 0x70B3D5, 0x2D5000, 0x2D5FFF, "Teuco Guzzini", "TEUCO-GUZZINI" }, { 0x70B3D5, 0x44B000, 0x44BFFF, "Open System Solutions Limited", "OPEN-SYSTEM-SOLUTIONS" }, { 0x70B3D5, 0xBEC000, 0xBECFFF, "Tokyo Communication Equipment MFG Co.,ltd.", "TOKYO-COMMUNICATION-EQUIPMENT-MFG" }, { 0x70B3D5, 0x6D6000, 0x6D6FFF, "KMtronic Ltd.", "KMTRONIC" }, { 0x70B3D5, 0x57C000, 0x57CFFF, "Automata GmbH & Co. KG", "AUTOMATA" }, { 0x70B3D5, 0xDA1000, 0xDA1FFF, "Qprel srl", "QPREL-SRL" }, { 0x70B3D5, 0x097000, 0x097FFF, "Avant Technologies", "AVANT-TECHNOLOGIES" }, { 0x70B3D5, 0x05F000, 0x05FFFF, "UNISOR MULTISYSTEMS LTD", "UNISOR-MULTISYSTEMS" }, { 0x70B3D5, 0x48D000, 0x48DFFF, "OMEGA BILANCE SRL SOCIETA' UNIPERSONALE", "OMEGA-BILANCE-SRL-SOCIETA-UNIPERSONALE" }, { 0x70B3D5, 0xE99000, 0xE99FFF, "Advitronics telecom bv", "ADVITRONICS-TELECOM" }, { 0x70B3D5, 0x362000, 0x362FFF, "Asiga", "ASIGA" }, { 0x70B3D5, 0x751000, 0x751FFF, "GNF", "GNF" }, { 0x70B3D5, 0x587000, 0x587FFF, "INCAA Computers", "INCAA-COMPUTERS" }, { 0x70B3D5, 0xE27000, 0xE27FFF, "Woodside Electronics", "WOODSIDE-ELECTRONICS" }, { 0x70B3D5, 0x346000, 0x346FFF, "Ultamation Limited", "ULTAMATION" }, { 0x70B3D5, 0x052000, 0x052FFF, "Sudo Premium Engineering", "SUDO-PREMIUM-ENGINEERING" }, { 0x70B3D5, 0xF34000, 0xF34FFF, "MacGray Services", "MACGRAY-SERVICES" }, { 0x70B3D5, 0xB16000, 0xB16FFF, "XI'AN SHENMING ELECTRON TECHNOLOGY CO.,LTD", "XI-AN-SHENMING-ELECTRON" }, { 0x70B3D5, 0x2FD000, 0x2FDFFF, "Special Projects Group, Inc", "SPECIAL-PROJECTS-GROUP" }, { 0x70B3D5, 0x305000, 0x305FFF, "CAITRON Industrial Solutions GmbH", "CAITRON-INDUSTRIAL-SOLUTIONS" }, { 0x70B3D5, 0x634000, 0x634FFF, "idaqs Co.,Ltd.", "IDAQS" }, { 0x70B3D5, 0xCE9000, 0xCE9FFF, "KINEMETRICS", "KINEMETRICS" }, { 0x70B3D5, 0xB8A000, 0xB8AFFF, "Nexus Tech. VN", "NEXUS-TECH-VN" }, { 0x70B3D5, 0x3A8000, 0x3A8FFF, "JamHub Corp.", "JAMHUB" }, { 0x70B3D5, 0xAA0000, 0xAA0FFF, "Simple Works, Inc.", "SIMPLE-WORKS" }, { 0x70B3D5, 0x058000, 0x058FFF, "Telink Semiconductor CO, Limtied, Taiwan", "TELINK-SEMICONDUCTOR-LIMTIED-TAIWAN" }, { 0x70B3D5, 0xEFA000, 0xEFAFFF, "NextEra Energy Resources, LLC", "NEXTERA-ENERGY-RESOURCES-LLC" }, { 0x70B3D5, 0x95A000, 0x95AFFF, "Sigmann Elektronik GmbH", "SIGMANN-ELEKTRONIK" }, { 0x70B3D5, 0x2E3000, 0x2E3FFF, "Meiknologic GmbH", "MEIKNOLOGIC" }, { 0x70B3D5, 0xABC000, 0xABCFFF, "BKM-Micronic Richtfunkanlagen GmbH", "BKM-MICRONIC-RICHTFUNKANLAGEN" }, { 0x70B3D5, 0xE4A000, 0xE4AFFF, "ICP NewTech Ltd", "ICP-NEWTECH" }, { 0x70B3D5, 0xECD000, 0xECDFFF, "SBS-Feintechnik GmbH & Co. KG", "SBS-FEINTECHNIK" }, { 0x70B3D5, 0x918000, 0x918FFF, "Glova Rail A/S", "GLOVA-RAIL-A/S" }, { 0x70B3D5, 0x308000, 0x308FFF, "DSD MICROTECHNOLOGY,INC.", "DSD-MICROTECHNOLOGY" }, { 0x70B3D5, 0x6D3000, 0x6D3FFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x908000, 0x908FFF, "Accusonic", "ACCUSONIC" }, { 0x70B3D5, 0x183000, 0x183FFF, "Evco S.p.a.", "EVCO-S-P-A" }, { 0x70B3D5, 0x5A8000, 0x5A8FFF, "Farmobile", "FARMOBILE" }, { 0x70B3D5, 0xC2C000, 0xC2CFFF, "Dromont S.p.A.", "DROMONT-S-P-A" }, { 0x001BC5, 0x0C6000, 0x0C6FFF, "Connode", "CONNODE" }, { 0x70B3D5, 0x3C2000, 0x3C2FFF, "Cellular Specialties, Inc.", "CELLULAR-SPECIALTIES" }, { 0x70B3D5, 0xEF9000, 0xEF9FFF, "Critical Link", "CRITICAL-LINK" }, { 0x001BC5, 0x0B6000, 0x0B6FFF, "Veilux inc.", "VEILUX" }, { 0x001BC5, 0x0AC000, 0x0ACFFF, "AVnu Alliance", "AVNU-ALLIANCE" }, { 0x001BC5, 0x0BC000, 0x0BCFFF, "kuwatec, Inc.", "KUWATEC" }, { 0x001BC5, 0x0A2000, 0x0A2FFF, "Hettich Benelux", "HETTICH-BENELUX" }, { 0x001BC5, 0x0A8000, 0x0A8FFF, "Link Precision", "LINK-PRECISION" }, { 0x001BC5, 0x09D000, 0x09DFFF, "Navitar Inc", "NAVITAR" }, { 0x001BC5, 0x093000, 0x093FFF, "Ambient Devices, Inc.", "AMBIENT-DEVICES" }, { 0x001BC5, 0x081000, 0x081FFF, "WonATech Co., Ltd.", "WONATECH" }, { 0x001BC5, 0x084000, 0x084FFF, "Applied Innovations Research LLC", "APPLIED-INNOVATIONS-RESEARCH-LLC" }, { 0x001BC5, 0x07B000, 0x07BFFF, "QCORE Medical", "QCORE-MEDICAL" }, { 0x001BC5, 0x07A000, 0x07AFFF, "Servicios Electronicos Industriales Berbel s.l.", "SERVICIOS-ELECTRONICOS-INDUSTRIALES-BERBEL-S-L" }, { 0x001BC5, 0x089000, 0x089FFF, "SIGNATURE CONTROL SYSTEMS, INC.", "SIGNATURE-CONTROL" }, { 0x001BC5, 0x077000, 0x077FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x001BC5, 0x063000, 0x063FFF, "Check-It Solutions Inc", "CHECK-IT-SOLUTIONS" }, { 0x001BC5, 0x070000, 0x070FFF, "Siemens Industries, Inc, Retail & Commercial Systems", "SIEMENS-INDUSTRIES-RETAIL-COMMERCIAL" }, { 0x001BC5, 0x071000, 0x071FFF, "Center for E-Commerce Infrastructure Development, The University of Hong Kong", "CENTER-FOR-E-COMMERCE-INFRASTRUCTURE-DEVELOPMENT-THE-UNIVERSITY-OF-HONG-KONG" }, { 0x001BC5, 0x067000, 0x067FFF, "Embit srl", "EMBIT-SRL" }, { 0x001BC5, 0x066000, 0x066FFF, "Manufacturas y transformados AB", "MANUFACTURAS-Y-TRANSFORMADOS-AB" }, { 0x001BC5, 0x06D000, 0x06DFFF, "TES Electronic Solutions (I) Pvt. Ltd.", "TES-SOLUTIONS-I-PVT" }, { 0x001BC5, 0x04F000, 0x04FFFF, "Orbital Systems, Ltd.", "ORBITAL" }, { 0x001BC5, 0x05D000, 0x05DFFF, "JSC Prominform", "JSC-PROMINFORM" }, { 0x001BC5, 0x053000, 0x053FFF, "Metrycom Communications Ltd", "METRYCOM-COMMUNICATION" }, { 0x001BC5, 0x059000, 0x059FFF, "INPIXAL", "INPIXAL" }, { 0x001BC5, 0x045000, 0x045FFF, "Marvel Digital International Limited", "MARVEL-DIGITAL" }, { 0x001BC5, 0x049000, 0x049FFF, "EUROCONTROL S.p.A.", "EUROCONTROL-S-P-A" }, { 0x001BC5, 0x03F000, 0x03FFFF, "ELTRADE Ltd", "ELTRADE" }, { 0x001BC5, 0x03A000, 0x03AFFF, "MindMade Sp. z o.o.", "MINDMADE-SP-Z-O-O" }, { 0x001BC5, 0x030000, 0x030FFF, "OctoGate it Security Systems GmbH", "OCTOGATE-IT-SECURITY" }, { 0x001BC5, 0x026000, 0x026FFF, "DIMEP Sistemas", "DIMEP-SISTEMAS" }, { 0x001BC5, 0x022000, 0x022FFF, "CJSC STC SIMOS", "CJSC-STC-SIMOS" }, { 0x001BC5, 0x01E000, 0x01EFFF, "Private", "PRIVATE" }, { 0x001BC5, 0x011000, 0x011FFF, "OOO NPP Mera", "OOO-NPP-MERA" }, { 0x001BC5, 0x007000, 0x007FFF, "Energy Aware Technology", "ENERGY-AWARE" }, { 0x001BC5, 0x001000, 0x001FFF, "OpenRB.com, Direct SIA", "OPENRB-COM-DIRECT-SIA" }, { 0x70B3D5, 0x6C7000, 0x6C7FFF, "Becton Dickinson", "BECTON-DICKINSON" }, { 0x70B3D5, 0xCA8000, 0xCA8FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0x609000, 0x609FFF, "PBSI Group Limited", "PBSI-GROUP" }, { 0x70B3D5, 0xB40000, 0xB40FFF, "Wuhan Xingtuxinke ELectronic Co.,Ltd", "WUHAN-XINGTUXINKE" }, { 0x70B3D5, 0x0D6000, 0x0D6FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x297000, 0x297FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x70B3D5, 0x942000, 0x942FFF, "TruTeq Devices (Pty) Ltd", "TRUTEQ-DEVICES-PTY" }, { 0x70B3D5, 0xF7B000, 0xF7BFFF, "KST technology", "KST" }, { 0x70B3D5, 0xB99000, 0xB99FFF, "DomoSafety S.A.", "DOMOSAFETY" }, { 0x70B3D5, 0xD51000, 0xD51FFF, "Azcom Technology S.r.l.", "AZCOM-S-R-L" }, { 0x70B3D5, 0xBA1000, 0xBA1FFF, "Cathwell AS", "CATHWELL-AS" }, { 0x70B3D5, 0x286000, 0x286FFF, "Pedax Danmark", "PEDAX-DANMARK" }, { 0x70B3D5, 0x1A9000, 0x1A9FFF, "OCEANIX INC.", "OCEANIX" }, { 0x70B3D5, 0x733000, 0x733FFF, "SA Instrumentation Limited", "INSTRUMENTATION" }, { 0x70B3D5, 0x652000, 0x652FFF, "Robert Bosch, LLC", "ROBERT-BOSCH-LLC" }, { 0x70B3D5, 0xF65000, 0xF65FFF, "MARKUS LABS", "MARKUS-LABS" }, { 0x70B3D5, 0xF2E000, 0xF2EFFF, "Shanghai JCY Technology Company", "SHANGHAI-JCY-COMPANY" }, { 0x70B3D5, 0x7F8000, 0x7F8FFF, "Solvera Lynx d.d.", "SOLVERA-LYNX-D-D" }, { 0x70B3D5, 0x5BE000, 0x5BEFFF, "CASWA", "CASWA" }, { 0x70B3D5, 0xF55000, 0xF55FFF, "Kohler Mira Ltd", "KOHLER-MIRA" }, { 0x70B3D5, 0x7ED000, 0x7EDFFF, "The Things Network Foundation", "THE-THINGS-NETWORK-FOUNDATION" }, { 0x70B3D5, 0xA9D000, 0xA9DFFF, "VITEC MULTIMEDIA", "VITEC-MULTIMEDIA" }, { 0x70B3D5, 0x1A8000, 0x1A8FFF, "STC Rainbow Ltd.", "STC-RAINBOW" }, { 0x70B3D5, 0x3CA000, 0x3CAFFF, "TTI Ltd", "TTI" }, { 0x70B3D5, 0xE1C000, 0xE1CFFF, "Xcenter AS", "XCENTER-AS" }, { 0x70B3D5, 0x184000, 0x184FFF, "XV360 Optical Information Systems Ltd.", "XV360-OPTICAL-INFORMATION" }, { 0x70B3D5, 0xB5C000, 0xB5CFFF, "Prozess Technologie", "PROZESS-TECHNOLOGIE" }, { 0x70B3D5, 0xAF4000, 0xAF4FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x531000, 0x531FFF, "ATEME", "ATEME" }, { 0x70B3D5, 0xBA7000, 0xBA7FFF, "Digital Yacht Ltd", "DIGITAL-YACHT" }, { 0x70B3D5, 0x1C7000, 0x1C7FFF, "Hoshin Electronics Co., Ltd.", "HOSHIN-ELECTRONICS" }, { 0x70B3D5, 0x28B000, 0x28BFFF, "Arnouse Digital Devices, Corp.", "ARNOUSE-DIGITAL-DEVICES" }, { 0x70B3D5, 0xD94000, 0xD94FFF, "Dewetron GmbH", "DEWETRON" }, { 0x70B3D5, 0x974000, 0x974FFF, "Jireh Industries Ltd.", "JIREH-INDUSTRIES" }, { 0x70B3D5, 0x544000, 0x544FFF, "Silicon Safe Ltd", "SILICON-SAFE" }, { 0x70B3D5, 0xEE1000, 0xEE1FFF, "allora Factory BVBA", "ALLORA-FACTORY-BVBA" }, { 0x70B3D5, 0x389000, 0x389FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x640000, 0x640FFF, "Electronic Equipment Company Pvt. Ltd.", "EQUIPMENT-COMPANY-PVT" }, { 0x70B3D5, 0xD65000, 0xD65FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0xAE1000, 0xAE1FFF, "DimoCore Corporation", "DIMOCORE" }, { 0x70B3D5, 0x3C3000, 0x3C3FFF, "AIMCO", "AIMCO" }, { 0x70B3D5, 0x3F6000, 0x3F6FFF, "Sycomp Electronic GmbH", "SYCOMP" }, { 0x70B3D5, 0x30C000, 0x30CFFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0x90C000, 0x90CFFF, "ANTEK GmbH", "ANTEK" }, { 0x70B3D5, 0x10A000, 0x10AFFF, "SEASON DESIGN TECHNOLOGY", "SEASON-DESIGN" }, { 0x70B3D5, 0x47C000, 0x47CFFF, "Par-Tech, Inc.", "PAR-TECH" }, { 0x70B3D5, 0xAC3000, 0xAC3FFF, "Novoptel GmbH", "NOVOPTEL" }, { 0x70B3D5, 0x97C000, 0x97CFFF, "Nu-Tek Power Controls and Automation", "NU-TEK-POWER-CONTROLS-AND-AUTOMATION" }, { 0x70B3D5, 0x8F2000, 0x8F2FFF, "Rimota Limited", "RIMOTA" }, { 0x70B3D5, 0x0BD000, 0x0BDFFF, "Andium", "ANDIUM" }, { 0x70B3D5, 0xE3D000, 0xE3DFFF, "Leo Bodnar Electronics Ltd", "LEO-BODNAR-ELECTRONICS" }, { 0x70B3D5, 0xB26000, 0xB26FFF, "INTEC International GmbH", "INTEC" }, { 0x70B3D5, 0x643000, 0x643FFF, "Marques,S.A.", "MARQUES" }, { 0x70B3D5, 0xA7C000, 0xA7CFFF, "Transelektronik Messgeräte GmbH", "TRANSELEKTRONIK-MESSGERAETE" }, { 0x70B3D5, 0xC27000, 0xC27FFF, "GD Mission Systems", "GD-MISSION" }, { 0x70B3D5, 0x94F000, 0x94FFFF, "MART NETWORK SOLUTIONS LTD", "MART-NETWORK-SOLUTIONS" }, { 0x70B3D5, 0xDFF000, 0xDFFFFF, "Spanawave Corporation", "SPANAWAVE" }, { 0x70B3D5, 0x7B6000, 0x7B6FFF, "Amada Miyachi America Inc.", "AMADA-MIYACHI-AMERICA" }, { 0x70B3D5, 0x55A000, 0x55AFFF, "Sontay Ltd.", "SONTAY" }, { 0x70B3D5, 0x11C000, 0x11CFFF, "Samriddi Automations Pvt. Ltd.", "SAMRIDDI-AUTOMATIONS-PVT" }, { 0x70B3D5, 0xCB2000, 0xCB2FFF, "SECLAB", "SECLAB" }, { 0x70B3D5, 0xA91000, 0xA91FFF, "IDEAL INDUSTRIES Ltd t/a Casella", "IDEAL-INDUSTRIES-T/A-CASELLA" }, { 0x70B3D5, 0xAE5000, 0xAE5FFF, "BeatCraft, Inc.", "BEATCRAFT" }, { 0x70B3D5, 0x1DD000, 0x1DDFFF, "RF CREATIONS LTD", "RF-CREATIONS" }, { 0x70B3D5, 0x1DA000, 0x1DAFFF, "Promess Inc.", "PROMESS" }, { 0x70B3D5, 0x55B000, 0x55BFFF, "Procon Electronics Pty Ltd", "PROCON-ELECTRONICS-PTY" }, { 0x70B3D5, 0x0AE000, 0x0AEFFF, "Norsat International Inc.", "NORSAT" }, { 0x70B3D5, 0x461000, 0x461FFF, "TESEC Corporation", "TESEC" }, { 0x70B3D5, 0x7FB000, 0x7FBFFF, "db Broadcast Products Ltd", "DB-BROADCAST-PRODUCTS" }, { 0x70B3D5, 0x6FF000, 0x6FFFFF, "AKEO PLUS", "AKEO-PLUS" }, { 0x70B3D5, 0xCD2000, 0xCD2FFF, "HBH Microwave GmbH", "HBH-MICROWAVE" }, { 0x70B3D5, 0xB23000, 0xB23FFF, "Supervision Test et Pilotage", "SUPERVISION-TEST-ET-PILOTAGE" }, { 0x70B3D5, 0x178000, 0x178FFF, "Gamber Johnson-LLC", "GAMBER-JOHNSON-LLC" }, { 0x70B3D5, 0xA5C000, 0xA5CFFF, "Molekule", "MOLEKULE" }, { 0x70B3D5, 0x012000, 0x012FFF, "KST technology", "KST" }, { 0x70B3D5, 0xFEC000, 0xFECFFF, "Finder SpA", "FINDER-SPA" }, { 0x70B3D5, 0x19E000, 0x19EFFF, "J-Factor Embedded Technologies", "J-FACTOR-EMBEDDED-TECHNOLOGIES" }, { 0x70B3D5, 0xA20000, 0xA20FFF, "Design For Life Systems", "DESIGN-FOR-LIFE" }, { 0x70B3D5, 0x90A000, 0x90AFFF, "Hangzhou SunTown Intelligent Science & Technology Co.,Ltd.", "HANGZHOU-SUNTOWN-INTELLIGENT-SCIENCE" }, { 0x70B3D5, 0x1DB000, 0x1DBFFF, "Hudson Robotics", "HUDSON-ROBOTICS" }, { 0x70B3D5, 0x5CC000, 0x5CCFFF, "Akse srl", "AKSE-SRL" }, { 0x70B3D5, 0x973000, 0x973FFF, "Autonomic Controls, Inc.", "AUTONOMIC-CONTROLS" }, { 0x70B3D5, 0x083000, 0x083FFF, "ZAO ZEO", "ZAO-ZEO" }, { 0x70B3D5, 0x42A000, 0x42AFFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xC0F000, 0xC0FFFF, "Honeywell Safety Products USA, Inc", "HONEYWELL-SAFETY-PRODUCTS-USA" }, { 0x70B3D5, 0x65C000, 0x65CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xB55000, 0xB55FFF, "CTAG - ESG36871424", "CTAG---ESG36871424" }, { 0x70B3D5, 0xB33000, 0xB33FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x18B000, 0x18BFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xCCC000, 0xCCCFFF, "AEC s.r.l.", "AEC-S-R-L" }, { 0x70B3D5, 0x3B2000, 0x3B2FFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0x387000, 0x387FFF, "GWF MessSysteme AG", "GWF-MESSSYSTEME" }, { 0x70B3D5, 0x51B000, 0x51BFFF, "Vitrea Smart Home Technologies", "VITREA-SMART-HOME-TECHNOLOGIES" }, { 0x70B3D5, 0xE9B000, 0xE9BFFF, "NUMATA R&D Co.,Ltd", "NUMATA-R-D" }, { 0x70B3D5, 0xC34000, 0xC34FFF, "Technical Panels Co. Ltd.", "TECHNICAL-PANELS" }, { 0x70B3D5, 0x200000, 0x200FFF, "NextEV Co., Ltd.", "NEXTEV" }, { 0x70B3D5, 0xA2C000, 0xA2CFFF, "TLV CO., LTD.", "TLV" }, { 0x70B3D5, 0xAA1000, 0xAA1FFF, "Shenzhen Weema TV Technology Co.,Ltd.", "SHENZHEN-WEEMA-TV" }, { 0x70B3D5, 0x0D2000, 0x0D2FFF, "UNMANNED SPA", "UNMANNED-SPA" }, { 0x70B3D5, 0xAF1000, 0xAF1FFF, "Emka Technologies", "EMKA-TECHNOLOGIES" }, { 0x70B3D5, 0x296000, 0x296FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x167000, 0x167FFF, "Eiden Co.,Ltd.", "EIDEN" }, { 0x70B3D5, 0xA4A000, 0xA4AFFF, "Beijing Arrow SEED Technology Co,.Ltd.", "BEIJING-ARROW-SEED" }, { 0x70B3D5, 0x85B000, 0x85BFFF, "TSUBAKIMOTO CHAIN CO.", "TSUBAKIMOTO-CHAIN" }, { 0x70B3D5, 0x89B000, 0x89BFFF, "ControlWorks, Inc.", "CONTROLWORKS" }, { 0x70B3D5, 0x68F000, 0x68FFFF, "PEEK TRAFFIC", "PEEK-TRAFFIC" }, { 0x70B3D5, 0x5AB000, 0x5ABFFF, "Sea Air and Land Communications Ltd", "SEA-AIR-AND-LAND-COMMUNICATION" }, { 0x70B3D5, 0xCED000, 0xCEDFFF, "Advanced Products Corporation Pte Ltd", "ADVANCED-PRODUCTS-PTE" }, { 0x70B3D5, 0xDB0000, 0xDB0FFF, "Arnouse Digital Devices Corp", "ARNOUSE-DIGITAL-DEVICES" }, { 0x70B3D5, 0xCCD000, 0xCCDFFF, "Suzhou PowerCore Technology Co.,Ltd.", "SUZHOU-POWERCORE" }, { 0x70B3D5, 0x163000, 0x163FFF, "BHARAT HEAVY ELECTRICALS LIMITED", "BHARAT-HEAVY-ELECTRICALS" }, { 0x70B3D5, 0x227000, 0x227FFF, "Montalvo", "MONTALVO" }, { 0x70B3D5, 0x910000, 0x910FFF, "Eginity, Inc.", "EGINITY" }, { 0x70B3D5, 0x7D1000, 0x7D1FFF, "Schneider Electric Motion USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 0x70B3D5, 0x70F000, 0x70FFFF, "Alion Science & Technology", "ALION-SCIENCE" }, { 0x70B3D5, 0xA1B000, 0xA1BFFF, "Potter Electric Signal Co. LLC", "POTTER-ELECTRIC-SIGNAL-LLC" }, { 0x70B3D5, 0x947000, 0x947FFF, "Checkbill Co,Ltd.", "CHECKBILL" }, { 0x70B3D5, 0xB77000, 0xB77FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x70B3D5, 0xD9D000, 0xD9DFFF, "Electroimpact, Inc.", "ELECTROIMPACT" }, { 0x70B3D5, 0xC6F000, 0xC6FFFF, "nyantec UG (haftungsbeschränkt)", "NYANTEC-UG-HAFTUNGSBESCHRAENKT" }, { 0x70B3D5, 0x475000, 0x475FFF, "EWATTCH", "EWATTCH" }, { 0x70B3D5, 0xF30000, 0xF30FFF, "ADE Technology Inc.", "ADE" }, { 0x70B3D5, 0xF95000, 0xF95FFF, "Get SAT", "GET-SAT" }, { 0x70B3D5, 0x457000, 0x457FFF, "Vivaldi Clima Srl", "VIVALDI-CLIMA-SRL" }, { 0x70B3D5, 0xCD5000, 0xCD5FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x70B3D5, 0x11F000, 0x11FFFF, "Geppetto Electronics", "GEPPETTO-ELECTRONICS" }, { 0x70B3D5, 0x136000, 0x136FFF, "Miguel Corporate Services Pte Ltd", "MIGUEL-CORPORATE-SERVICES-PTE" }, { 0x70B3D5, 0xE1A000, 0xE1AFFF, "BIZERBA LUCEO", "BIZERBA-LUCEO" }, { 0x70B3D5, 0x5D5000, 0x5D5FFF, "CT Company", "CT-COMPANY" }, { 0x70B3D5, 0xA1F000, 0xA1FFFF, "GlobalTest LLC", "GLOBALTEST-LLC" }, { 0x70B3D5, 0x8CA000, 0x8CAFFF, "Allied Data Systems", "ALLIED-DATA" }, { 0x70B3D5, 0x785000, 0x785FFF, "Density Inc.", "DENSITY" }, { 0x70B3D5, 0x6B1000, 0x6B1FFF, "TTC TELEKOMUNIKACE, s.r.o.", "TTC-TELEKOMUNIKACE-S-R-O" }, { 0x70B3D5, 0xBD5000, 0xBD5FFF, "Synics AG", "SYNICS" }, { 0x70B3D5, 0x5C1000, 0x5C1FFF, "Shanghai JaWay Information Technology Co., Ltd.", "SHANGHAI-JAWAY-INFORMATION" }, { 0x70B3D5, 0xBE9000, 0xBE9FFF, "Telecast Inc.", "TELECAST" }, { 0x70B3D5, 0xC62000, 0xC62FFF, "WIZNOVA", "WIZNOVA" }, { 0x70B3D5, 0xD3B000, 0xD3BFFF, "NimbeLink Corp", "NIMBELINK" }, { 0x70B3D5, 0xFF4000, 0xFF4FFF, "Serveron Corporation", "SERVERON" }, { 0x70B3D5, 0x760000, 0x760FFF, "QUALITTEQ LLC", "QUALITTEQ-LLC" }, { 0x70B3D5, 0x272000, 0x272FFF, "TELECOM SANTE", "TELECOM-SANTE" }, { 0x70B3D5, 0x20D000, 0x20DFFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x70B3D5, 0xD55000, 0xD55FFF, "WM Design s.r.o", "WM-DESIGN-S-R-O" }, { 0x70B3D5, 0x523000, 0x523FFF, "Tibit Communications", "TIBIT-COMMUNICATION" }, { 0x70B3D5, 0xE67000, 0xE67FFF, "APPLIED PROCESSING", "APPLIED-PROCESSING" }, { 0x70B3D5, 0x241000, 0x241FFF, "Bolide Technology Group, Inc.", "BOLIDE-GROUP" }, { 0x70B3D5, 0xD25000, 0xD25FFF, "ENGenesis", "ENGENESIS" }, { 0x70B3D5, 0x4A9000, 0x4A9FFF, "WARECUBE,INC", "WARECUBE" }, { 0x70B3D5, 0x2F8000, 0x2F8FFF, "Tunstall A/S", "TUNSTALL-A/S" }, { 0x70B3D5, 0x0A3000, 0x0A3FFF, "Solace Systems Inc.", "SOLACE" }, { 0x70B3D5, 0xFC2000, 0xFC2FFF, "HUNTER LIBERTY CORPORATION", "HUNTER-LIBERTY" }, { 0x70B3D5, 0x61C000, 0x61CFFF, "Earth Works", "EARTH-WORKS" }, { 0x70B3D5, 0x6EA000, 0x6EAFFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x70B3D5, 0xA05000, 0xA05FFF, "Transas Marine Limited", "TRANSAS-MARINE" }, { 0x70B3D5, 0xAA6000, 0xAA6FFF, "Proximus", "PROXIMUS" }, { 0x70B3D5, 0x5E5000, 0x5E5FFF, "HAIYANG OLIX CO.,LTD.", "HAIYANG-OLIX" }, { 0x70B3D5, 0xE2C000, 0xE2CFFF, "Fourth Frontier Technologies Private Limited", "FOURTH-FRONTIER-TECHNOLOGIES-PRIVATE" }, { 0x70B3D5, 0x1D4000, 0x1D4FFF, "Brinkmann Audio GmbH", "BRINKMANN-AUDIO" }, { 0x70B3D5, 0x5CA000, 0x5CAFFF, "ACD Elekronik GmbH", "ACD-ELEKRONIK" }, { 0x70B3D5, 0x427000, 0x427FFF, "Key Chemical & Equipment Company", "KEY-CHEMICAL-EQUIPMENT-COMPANY" }, { 0x70B3D5, 0x753000, 0x753FFF, "HCH. Kündig & CIE. AG", "HCH-KUENDIG-CIE" }, { 0x70B3D5, 0xA18000, 0xA18FFF, "Embedded Systems Lukasz Panasiuk", "EMBEDDED-LUKASZ-PANASIUK" }, { 0x70B3D5, 0x0C2000, 0x0C2FFF, "LOOK EASY INTERNATIONAL LIMITED", "LOOK-EASY" }, { 0x70B3D5, 0x1DE000, 0x1DEFFF, "DYCEC, S.A.", "DYCEC" }, { 0x70B3D5, 0x16C000, 0x16CFFF, "OCEAN", "OCEAN" }, { 0x70B3D5, 0x778000, 0x778FFF, "Lumacron Technology Ltd.", "LUMACRON" }, { 0x70B3D5, 0x05D000, 0x05DFFF, "KOMS Co.,Ltd.", "KOMS" }, { 0x70B3D5, 0xEC8000, 0xEC8FFF, "Viko Elektrik-Elektronik A.Ş.", "VIKO-ELEKTRIK-ELEKTRONIK-A-Ş" }, { 0x70B3D5, 0x3F0000, 0x3F0FFF, "Intervala", "INTERVALA" }, { 0x70B3D5, 0xB1A000, 0xB1AFFF, "Aaronia AG", "AARONIA" }, { 0x70B3D5, 0xBD1000, 0xBD1FFF, "CableLabs", "CABLELABS" }, { 0x70B3D5, 0xF0D000, 0xF0DFFF, "MeQ Inc.", "MEQ" }, { 0x70B3D5, 0x215000, 0x215FFF, "Dataspeed Inc", "DATASPEED" }, { 0x70B3D5, 0x115000, 0x115FFF, "Welltec Corp.", "WELLTEC" }, { 0x70B3D5, 0xC45000, 0xC45FFF, "Stiebel Eltron GmbH", "STIEBEL-ELTRON" }, { 0x70B3D5, 0xB56000, 0xB56FFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x70B3D5, 0x911000, 0x911FFF, "Equatel", "EQUATEL" }, { 0x70B3D5, 0x661000, 0x661FFF, "DesignA Electronics Limited", "DESIGNA-ELECTRONICS" }, { 0x70B3D5, 0x011000, 0x011FFF, "Sumer Data S.L", "SUMER-DATA-S-L" }, { 0x70B3D5, 0x2C2000, 0x2C2FFF, "Quantum Detectors", "QUANTUM-DETECTORS" }, { 0x70B3D5, 0xBF3000, 0xBF3FFF, "CG-WIRELESS", "CG-WIRELESS" }, { 0x70B3D5, 0x9A1000, 0x9A1FFF, "ITS Industrial Turbine Services GmbH", "ITS-INDUSTRIAL-TURBINE-SERVICES" }, { 0x70B3D5, 0x861000, 0x861FFF, "KST technology", "KST" }, { 0x70B3D5, 0x442000, 0x442FFF, "Blair Companies", "BLAIR-COMPANIES" }, { 0x70B3D5, 0xC74000, 0xC74FFF, "Qtechnology A/S", "QTECHNOLOGY-A/S" }, { 0x70B3D5, 0xE16000, 0xE16FFF, "China Entropy Co., Ltd.", "CHINA-ENTROPY" }, { 0x70B3D5, 0x02E000, 0x02EFFF, "Monnit Corporation", "MONNIT" }, { 0x70B3D5, 0x370000, 0x370FFF, "Inphi Corporation", "INPHI" }, { 0x70B3D5, 0x7E8000, 0x7E8FFF, "Mannkind Corporation", "MANNKIND" }, { 0x70B3D5, 0x3F3000, 0x3F3FFF, "SPEA SPA", "SPEA-SPA" }, { 0x70B3D5, 0x549000, 0x549FFF, "Procon automatic systems GmbH", "PROCON-AUTOMATIC" }, { 0x70B3D5, 0x831000, 0x831FFF, "Arnouse Digital Devices Corp", "ARNOUSE-DIGITAL-DEVICES" }, { 0x70B3D5, 0xD8E000, 0xD8EFFF, "Axatel SrL", "AXATEL-SRL" }, { 0x70B3D5, 0xA28000, 0xA28FFF, "PEEK TRAFFIC", "PEEK-TRAFFIC" }, { 0x70B3D5, 0xAC7000, 0xAC7FFF, "vivaMOS", "VIVAMOS" }, { 0x70B3D5, 0xDB2000, 0xDB2FFF, "Micro Electroninc Products", "MICRO-ELECTRONINC-PRODUCTS" }, { 0x70B3D5, 0x967000, 0x967FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0xC16000, 0xC16FFF, "Southern Innovation", "SOUTHERN-INNOVATION" }, { 0x70B3D5, 0x90F000, 0x90FFFF, "DTRON Communications (Pty) Ltd", "DTRON-COMMUNICATION-PTY" }, { 0x70B3D5, 0xE22000, 0xE22FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x408000, 0x408FFF, "Comrod AS", "COMROD-AS" }, { 0x70B3D5, 0xD4D000, 0xD4DFFF, "The Morey Corporation", "THE-MOREY" }, { 0x70B3D5, 0x945000, 0x945FFF, "Symboticware Incorporated", "SYMBOTICWARE-INCORPORATED" }, { 0x70B3D5, 0x192000, 0x192FFF, "ASPT, INC.", "ASPT" }, { 0x70B3D5, 0x807000, 0x807FFF, "Camsat Przemysław Gralak", "CAMSAT-PRZEMYSłAW-GRALAK" }, { 0x70B3D5, 0xDD1000, 0xDD1FFF, "em-tec GmbH", "EM-TEC" }, { 0x70B3D5, 0xED1000, 0xED1FFF, "Przemyslowy Instytut Automatyki i Pomiarow", "PRZEMYSLOWY-INSTYTUT-AUTOMATYKI-I-POMIAROW" }, { 0x70B3D5, 0x14A000, 0x14AFFF, "ExSens Technology (Pty) Ltd.", "EXSENS-PTY" }, { 0x70B3D5, 0xA69000, 0xA69FFF, "Leviathan Solutions Ltd.", "LEVIATHAN-SOLUTIONS" }, { 0x70B3D5, 0xA9A000, 0xA9AFFF, "Amphenol Advanced Sensors", "AMPHENOL-ADVANCED-SENSORS" }, { 0x70B3D5, 0x715000, 0x715FFF, "RIOT", "RIOT" }, { 0x70B3D5, 0xFF8000, 0xFF8FFF, "Dutile, Glines and Higgins Corporation", "DUTILE-GLINES-AND-HIGGINS" }, { 0x70B3D5, 0x413000, 0x413FFF, "Axess AG", "AXESS" }, { 0x70B3D5, 0xE5E000, 0xE5EFFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xE7D000, 0xE7DFFF, "Nanjing Dandick Science&technology development co., LTD", "NANJING-DANDICK-SCIENCE-DEVELOPMENT" }, { 0x70B3D5, 0xD98000, 0xD98FFF, "ACD Elekronik GmbH", "ACD-ELEKRONIK" }, { 0x70B3D5, 0xFA6000, 0xFA6FFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x70B3D5, 0xD43000, 0xD43FFF, "EZSYS Co., Ltd.", "EZSYS" }, { 0x70B3D5, 0xA35000, 0xA35FFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0x279000, 0x279FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x359000, 0x359FFF, "Boutronic", "BOUTRONIC" }, { 0x001BC5, 0x0B2000, 0x0B2FFF, "SKODA ELECTRIC a.s.", "SKODA-ELECTRIC-A-S" }, { 0x70B3D5, 0x035000, 0x035FFF, "HKW-Elektronik GmbH", "HKW-ELEKTRONIK" }, { 0x70B3D5, 0xDFA000, 0xDFAFFF, "Newtouch Electronics (Shanghai) Co.,Ltd.", "NEWTOUCH-ELECTRONICS-SHANGHAI" }, { 0x70B3D5, 0xEC7000, 0xEC7FFF, "Neoptix Inc.", "NEOPTIX" }, { 0x70B3D5, 0x5B8000, 0x5B8FFF, "Hella Gutmann Solutions GmbH", "HELLA-GUTMANN-SOLUTIONS" }, }; ipv6calc-1.0.0/databases/ipv4-assignment/000077500000000000000000000000001312366535500202075ustar00rootroot00000000000000ipv6calc-1.0.0/databases/ipv4-assignment/Makefile000066400000000000000000000023761312366535500216570ustar00rootroot00000000000000# Project : ipv6calc/databases/ipv4-assignment # File : Makefile # Version : $Id: 2b534970b3a9597c276a3c0e32597f0463d3f5bc $ # Copyright : 2005-2015 by Peter Bieringer # # Information: # Makefile for ipv4-assignment all: test -f dbipv4addr_assignment.h || ${MAKE} update install: echo "Nothing to do" update: echo "Generate new header file, if necessary" ../../tools/ipv6calc-registries-check-run-create.sh -4 -H -C ../../tools/ipv6calc-create-registry-list-ipv4.pl force-update: echo "Generate new header file" ../../tools/ipv6calc-registries-check-run-create.sh -4 -H -C ../../tools/ipv6calc-create-registry-list-ipv4.pl db: echo "Generate new db files, if necessary" ../../tools/ipv6calc-registries-check-run-create.sh -4 -B -C ../../tools/ipv6calc-create-registry-list-ipv4.pl force-db: echo "Generate new db files" ../../tools/ipv6calc-registries-check-run-create.sh -u -4 -B -C ../../tools/ipv6calc-create-registry-list-ipv4.pl updateclean: echo "Delete header file" rm -f dbipv4addr_assignment.h echo "Delete DB files" rm -f ipv6calc-external-ipv4-registry.db ipv6calc-external-ipv4-countrycode.db distclean: echo "Nothing to do" autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/ipv4-assignment/README000066400000000000000000000001621312366535500210660ustar00rootroot00000000000000$Id: 3ece54777c1038c771dcc08d4dfc7011ced5a04c $ Use "make update" to create header file from registry data files ipv6calc-1.0.0/databases/ipv4-assignment/dbipv4addr_assignment.h000066400000000000000000042526651312366535500246570ustar00rootroot00000000000000/* * Project : ipv6calc * File : dbipv4_assignment.h * Version : $Id: efb3fe417a8895bf24c7a4e8e97e3026d945cbf0 $ * Generated : 20170625-093140+0200 CEST * Data copyright: RIPE NCC, APNIC, ARIN, LACNIC, AFRINIC, LISP * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "databases/lib/libipv6calc_db_wrapper_BuiltIn.h" static const char* dbipv4addr_registry_status __attribute__ ((__unused__)) = "AFRINIC/20170625 APNIC/20170624 ARIN/20170625 IANA/20170609 LACNIC/20170623 LISP/20170625 RIPENCC/20170624"; static const time_t dbipv4addr_registry_unixtime __attribute__ ((__unused__)) = 1498375900; static const s_ipv4addr_assignment dbipv4addr_assignment[] = { //first , last , registry { 0x01000000, 0x01ffffff, REGISTRY_APNIC }, // 1.0.0.0 - 1.255.255.255 { 0x02000000, 0x0237ffff, REGISTRY_RIPENCC }, // 2.0.0.0 - 2.55.255.255 { 0x023c0000, 0x02ffffff, REGISTRY_RIPENCC }, // 2.60.0.0 - 2.255.255.255 { 0x03000000, 0x04ffffff, REGISTRY_ARIN }, // 3.0.0.0 - 4.255.255.255 { 0x05000000, 0x0508f7ff, REGISTRY_RIPENCC }, // 5.0.0.0 - 5.8.247.255 { 0x05090000, 0x0527c7ff, REGISTRY_RIPENCC }, // 5.9.0.0 - 5.39.199.255 { 0x0527d000, 0x052d1fff, REGISTRY_RIPENCC }, // 5.39.208.0 - 5.45.31.255 { 0x052d3000, 0x0564efff, REGISTRY_RIPENCC }, // 5.45.48.0 - 5.100.239.255 { 0x0564f800, 0x056847ff, REGISTRY_RIPENCC }, // 5.100.248.0 - 5.104.71.255 { 0x05685000, 0x05853fff, REGISTRY_RIPENCC }, // 5.104.80.0 - 5.133.63.255 { 0x05858000, 0x05acafff, REGISTRY_RIPENCC }, // 5.133.128.0 - 5.172.175.255 { 0x05acb800, 0x05b3ffff, REGISTRY_RIPENCC }, // 5.172.184.0 - 5.179.255.255 { 0x05b80000, 0x05c7b7ff, REGISTRY_RIPENCC }, // 5.184.0.0 - 5.199.183.255 { 0x05c7c000, 0x05fbffff, REGISTRY_RIPENCC }, // 5.199.192.0 - 5.251.255.255 { 0x05fe0000, 0x05ffffff, REGISTRY_RIPENCC }, // 5.254.0.0 - 5.255.255.255 { 0x06000000, 0x09ffffff, REGISTRY_ARIN }, // 6.0.0.0 - 9.255.255.255 { 0x0b000000, 0x0d73ffff, REGISTRY_ARIN }, // 11.0.0.0 - 13.115.255.255 { 0x0d740000, 0x0d7bffff, REGISTRY_RIPENCC }, // 13.116.0.0 - 13.123.255.255 { 0x0d7c0000, 0x0d8bffff, REGISTRY_ARIN }, // 13.124.0.0 - 13.139.255.255 { 0x0d8c0000, 0x0d8fffff, REGISTRY_RIPENCC }, // 13.140.0.0 - 13.143.255.255 { 0x0d900000, 0x0da7ffff, REGISTRY_ARIN }, // 13.144.0.0 - 13.167.255.255 { 0x0da80000, 0x0db7ffff, REGISTRY_RIPENCC }, // 13.168.0.0 - 13.183.255.255 { 0x0db80000, 0x0defffff, REGISTRY_ARIN }, // 13.184.0.0 - 13.239.255.255 { 0x0df00000, 0x0df3ffff, REGISTRY_RIPENCC }, // 13.240.0.0 - 13.243.255.255 { 0x0df40000, 0x0dffffff, REGISTRY_ARIN }, // 13.244.0.0 - 13.255.255.255 { 0x0e000000, 0x0e66abff, REGISTRY_APNIC }, // 14.0.0.0 - 14.102.171.255 { 0x0e66ac00, 0x0e66afff, REGISTRY_ARIN }, // 14.102.172.0 - 14.102.175.255 { 0x0e66b000, 0x0e800bff, REGISTRY_APNIC }, // 14.102.176.0 - 14.128.11.255 { 0x0e801000, 0x0ec02fff, REGISTRY_APNIC }, // 14.128.16.0 - 14.192.47.255 { 0x0ec03400, 0x0ec037ff, REGISTRY_APNIC }, // 14.192.52.0 - 14.192.55.255 { 0x0ec03c00, 0x0effffff, REGISTRY_APNIC }, // 14.192.60.0 - 14.255.255.255 { 0x0f000000, 0x17533fff, REGISTRY_ARIN }, // 15.0.0.0 - 23.83.63.255 { 0x17534000, 0x175347ff, REGISTRY_RIPENCC }, // 23.83.64.0 - 23.83.71.255 { 0x17534800, 0x17536fff, REGISTRY_ARIN }, // 23.83.72.0 - 23.83.111.255 { 0x17537000, 0x17537fff, REGISTRY_RIPENCC }, // 23.83.112.0 - 23.83.127.255 { 0x17538000, 0x1769dfff, REGISTRY_ARIN }, // 23.83.128.0 - 23.105.223.255 { 0x1769e000, 0x1769ffff, REGISTRY_RIPENCC }, // 23.105.224.0 - 23.105.255.255 { 0x176a0000, 0x176a67ff, REGISTRY_ARIN }, // 23.106.0.0 - 23.106.103.255 { 0x176a6800, 0x176a77ff, REGISTRY_RIPENCC }, // 23.106.104.0 - 23.106.119.255 { 0x176a7800, 0x176ccfff, REGISTRY_ARIN }, // 23.106.120.0 - 23.108.207.255 { 0x176cd000, 0x176cdfff, REGISTRY_RIPENCC }, // 23.108.208.0 - 23.108.223.255 { 0x176ce000, 0x176cffff, REGISTRY_ARIN }, // 23.108.224.0 - 23.108.255.255 { 0x176d0000, 0x176dffff, REGISTRY_RIPENCC }, // 23.109.0.0 - 23.109.255.255 { 0x176e0000, 0x176effff, REGISTRY_ARIN }, // 23.110.0.0 - 23.110.255.255 { 0x176f0000, 0x176f07ff, REGISTRY_RIPENCC }, // 23.111.0.0 - 23.111.7.255 { 0x176f0800, 0x176f0fff, REGISTRY_ARIN }, // 23.111.8.0 - 23.111.15.255 { 0x176f1000, 0x176f3fff, REGISTRY_RIPENCC }, // 23.111.16.0 - 23.111.63.255 { 0x176f4000, 0x176f4fff, REGISTRY_ARIN }, // 23.111.64.0 - 23.111.79.255 { 0x176f5000, 0x176f7fff, REGISTRY_RIPENCC }, // 23.111.80.0 - 23.111.127.255 { 0x176f8000, 0x176fbfff, REGISTRY_ARIN }, // 23.111.128.0 - 23.111.191.255 { 0x176fc000, 0x176ff7ff, REGISTRY_RIPENCC }, // 23.111.192.0 - 23.111.247.255 { 0x176ff800, 0x17fc41ff, REGISTRY_ARIN }, // 23.111.248.0 - 23.252.65.255 { 0x17fc4200, 0x17fc44ff, REGISTRY_RIPENCC }, // 23.252.66.0 - 23.252.68.255 { 0x17fc4500, 0x17fc46ff, REGISTRY_ARIN }, // 23.252.69.0 - 23.252.70.255 { 0x17fc4700, 0x17fc48ff, REGISTRY_RIPENCC }, // 23.252.71.0 - 23.252.72.255 { 0x17fc4900, 0x17fc4aff, REGISTRY_ARIN }, // 23.252.73.0 - 23.252.74.255 { 0x17fc4b00, 0x17fc4cff, REGISTRY_RIPENCC }, // 23.252.75.0 - 23.252.76.255 { 0x17fc4d00, 0x17fc4eff, REGISTRY_ARIN }, // 23.252.77.0 - 23.252.78.255 { 0x17fc4f00, 0x17fc4fff, REGISTRY_RIPENCC }, // 23.252.79.0 - 23.252.79.255 { 0x17fc5000, 0x1883ffff, REGISTRY_ARIN }, // 23.252.80.0 - 24.131.255.255 { 0x18840000, 0x1887ffff, REGISTRY_RIPENCC }, // 24.132.0.0 - 24.135.255.255 { 0x18880000, 0x1897ffff, REGISTRY_ARIN }, // 24.136.0.0 - 24.151.255.255 { 0x18988000, 0x18e5ffff, REGISTRY_ARIN }, // 24.152.128.0 - 24.229.255.255 { 0x18e60000, 0x18e61fff, REGISTRY_APNIC }, // 24.230.0.0 - 24.230.31.255 { 0x18e62000, 0x18e7ffff, REGISTRY_ARIN }, // 24.230.32.0 - 24.231.255.255 { 0x18e80000, 0x18e8ffff, REGISTRY_LACNIC }, // 24.232.0.0 - 24.232.255.255 { 0x18e90000, 0x18eb17ff, REGISTRY_ARIN }, // 24.233.0.0 - 24.235.23.255 { 0x18eb1800, 0x18eb1fff, REGISTRY_APNIC }, // 24.235.24.0 - 24.235.31.255 { 0x18eb2000, 0x18ffffff, REGISTRY_ARIN }, // 24.235.32.0 - 24.255.255.255 { 0x19000000, 0x19ffffff, REGISTRY_RIPENCC }, // 25.0.0.0 - 25.255.255.255 { 0x1a000000, 0x1affffff, REGISTRY_ARIN }, // 26.0.0.0 - 26.255.255.255 { 0x1b000000, 0x1b6403ff, REGISTRY_APNIC }, // 27.0.0.0 - 27.100.3.255 { 0x1b640800, 0x1b705fff, REGISTRY_APNIC }, // 27.100.8.0 - 27.112.95.255 { 0x1b706400, 0x1bffffff, REGISTRY_APNIC }, // 27.112.100.0 - 27.255.255.255 { 0x1c000000, 0x1effffff, REGISTRY_ARIN }, // 28.0.0.0 - 30.255.255.255 { 0x1f000000, 0x1f0c47ff, REGISTRY_RIPENCC }, // 31.0.0.0 - 31.12.71.255 { 0x1f0c5000, 0x1f0db7ff, REGISTRY_RIPENCC }, // 31.12.80.0 - 31.13.183.255 { 0x1f0dc000, 0x1f1607ff, REGISTRY_RIPENCC }, // 31.13.192.0 - 31.22.7.255 { 0x1f161000, 0x1f27ffff, REGISTRY_RIPENCC }, // 31.22.16.0 - 31.39.255.255 { 0x1f280000, 0x1f286fff, REGISTRY_RIPENCC }, // 31.40.0.0 - 31.40.111.255 { 0x1f287000, 0x1f287fff, REGISTRY_RIPENCC }, // 31.40.112.0 - 31.40.127.255 { 0x1f288000, 0x1f28bfff, REGISTRY_RIPENCC }, // 31.40.128.0 - 31.40.191.255 { 0x1f290000, 0x1f29c7ff, REGISTRY_RIPENCC }, // 31.41.0.0 - 31.41.199.255 { 0x1f29c800, 0x1f29cfff, REGISTRY_RIPENCC }, // 31.41.200.0 - 31.41.207.255 { 0x1f29d000, 0x1f2bffff, REGISTRY_RIPENCC }, // 31.41.208.0 - 31.43.255.255 { 0x1f2c0000, 0x1f7fffff, REGISTRY_RIPENCC }, // 31.44.0.0 - 31.127.255.255 { 0x1f800000, 0x1f80ffff, REGISTRY_RIPENCC }, // 31.128.0.0 - 31.128.255.255 { 0x1f810000, 0x1f813fff, REGISTRY_RIPENCC }, // 31.129.0.0 - 31.129.63.255 { 0x1f814000, 0x1f8307ff, REGISTRY_RIPENCC }, // 31.129.64.0 - 31.131.7.255 { 0x1f830800, 0x1f830fff, REGISTRY_RIPENCC }, // 31.131.8.0 - 31.131.15.255 { 0x1f831000, 0x1f839fff, REGISTRY_RIPENCC }, // 31.131.16.0 - 31.131.159.255 { 0x1f83a000, 0x1f83a7ff, REGISTRY_RIPENCC }, // 31.131.160.0 - 31.131.167.255 { 0x1f83a800, 0x1f83ffff, REGISTRY_RIPENCC }, // 31.131.168.0 - 31.131.255.255 { 0x1f840000, 0x1f8407ff, REGISTRY_RIPENCC }, // 31.132.0.0 - 31.132.7.255 { 0x1f841000, 0x1f841fff, REGISTRY_RIPENCC }, // 31.132.16.0 - 31.132.31.255 { 0x1f844000, 0x1f844fff, REGISTRY_RIPENCC }, // 31.132.64.0 - 31.132.79.255 { 0x1f845000, 0x1f845fff, REGISTRY_RIPENCC }, // 31.132.80.0 - 31.132.95.255 { 0x1f846000, 0x1f84bfff, REGISTRY_RIPENCC }, // 31.132.96.0 - 31.132.191.255 { 0x1f84c000, 0x1f84c7ff, REGISTRY_RIPENCC }, // 31.132.192.0 - 31.132.199.255 { 0x1f84c800, 0x1f8517ff, REGISTRY_RIPENCC }, // 31.132.200.0 - 31.133.23.255 { 0x1f851800, 0x1f851fff, REGISTRY_RIPENCC }, // 31.133.24.0 - 31.133.31.255 { 0x1f852000, 0x1f855fff, REGISTRY_RIPENCC }, // 31.133.32.0 - 31.133.95.255 { 0x1f856800, 0x1f85bfff, REGISTRY_RIPENCC }, // 31.133.104.0 - 31.133.191.255 { 0x1f85c000, 0x1f85c7ff, REGISTRY_RIPENCC }, // 31.133.192.0 - 31.133.199.255 { 0x1f85c800, 0x1f86ffff, REGISTRY_RIPENCC }, // 31.133.200.0 - 31.134.255.255 { 0x1f870000, 0x1f8707ff, REGISTRY_RIPENCC }, // 31.135.0.0 - 31.135.7.255 { 0x1f870800, 0x1f87ffff, REGISTRY_RIPENCC }, // 31.135.8.0 - 31.135.255.255 { 0x1f880000, 0x1fa977ff, REGISTRY_RIPENCC }, // 31.136.0.0 - 31.169.119.255 { 0x1fa98000, 0x1faa5fff, REGISTRY_RIPENCC }, // 31.169.128.0 - 31.170.95.255 { 0x1faa6800, 0x1faca7ff, REGISTRY_RIPENCC }, // 31.170.104.0 - 31.172.167.255 { 0x1facb000, 0x1facdfff, REGISTRY_RIPENCC }, // 31.172.176.0 - 31.172.223.255 { 0x1face800, 0x1fceffff, REGISTRY_RIPENCC }, // 31.172.232.0 - 31.206.255.255 { 0x1fcf0000, 0x1fcf07ff, REGISTRY_ARIN }, // 31.207.0.0 - 31.207.7.255 { 0x1fcf0800, 0x1fcf37ff, REGISTRY_RIPENCC }, // 31.207.8.0 - 31.207.55.255 { 0x1fcf3800, 0x1fcf3bff, REGISTRY_ARIN }, // 31.207.56.0 - 31.207.59.255 { 0x1fcf3c00, 0x1fd20fff, REGISTRY_RIPENCC }, // 31.207.60.0 - 31.210.15.255 { 0x1fd21800, 0x1fd28fff, REGISTRY_RIPENCC }, // 31.210.24.0 - 31.210.143.255 { 0x1fd29800, 0x1fd87fff, REGISTRY_RIPENCC }, // 31.210.152.0 - 31.216.127.255 { 0x1fd88800, 0x1fd9f7ff, REGISTRY_RIPENCC }, // 31.216.136.0 - 31.217.247.255 { 0x1fda0000, 0x1fffffff, REGISTRY_RIPENCC }, // 31.218.0.0 - 31.255.255.255 { 0x20000000, 0x23ffffff, REGISTRY_ARIN }, // 32.0.0.0 - 35.255.255.255 { 0x24000000, 0x2431ffff, REGISTRY_APNIC }, // 36.0.0.0 - 36.49.255.255 { 0x24330000, 0x24fff7ff, REGISTRY_APNIC }, // 36.51.0.0 - 36.255.247.255 { 0x24fffc00, 0x24ffffff, REGISTRY_APNIC }, // 36.255.252.0 - 36.255.255.255 { 0x25000000, 0x251057ff, REGISTRY_RIPENCC }, // 37.0.0.0 - 37.16.87.255 { 0x25106000, 0x25127fff, REGISTRY_RIPENCC }, // 37.16.96.0 - 37.18.127.255 { 0x25128800, 0x25205fff, REGISTRY_RIPENCC }, // 37.18.136.0 - 37.32.95.255 { 0x25206800, 0x252e07ff, REGISTRY_RIPENCC }, // 37.32.104.0 - 37.46.7.255 { 0x252e1000, 0x252e8fff, REGISTRY_RIPENCC }, // 37.46.16.0 - 37.46.143.255 { 0x252e9800, 0x254d8fff, REGISTRY_RIPENCC }, // 37.46.152.0 - 37.77.143.255 { 0x254d9800, 0x256effff, REGISTRY_RIPENCC }, // 37.77.152.0 - 37.110.255.255 { 0x256f0000, 0x256fffff, REGISTRY_APNIC }, // 37.111.0.0 - 37.111.255.255 { 0x25700000, 0x257ad7ff, REGISTRY_RIPENCC }, // 37.112.0.0 - 37.122.215.255 { 0x257ae000, 0x258b7fff, REGISTRY_RIPENCC }, // 37.122.224.0 - 37.139.127.255 { 0x258b8800, 0x258cd7ff, REGISTRY_RIPENCC }, // 37.139.136.0 - 37.140.215.255 { 0x258ce000, 0x258f2fff, REGISTRY_RIPENCC }, // 37.140.224.0 - 37.143.47.255 { 0x258f4000, 0x258f7fff, REGISTRY_RIPENCC }, // 37.143.64.0 - 37.143.127.255 { 0x258f8800, 0x2594f7ff, REGISTRY_RIPENCC }, // 37.143.136.0 - 37.148.247.255 { 0x25950000, 0x25c84fff, REGISTRY_RIPENCC }, // 37.149.0.0 - 37.200.79.255 { 0x25c85800, 0x25dd3fff, REGISTRY_RIPENCC }, // 37.200.88.0 - 37.221.63.255 { 0x25dd8000, 0x25fcd7ff, REGISTRY_RIPENCC }, // 37.221.128.0 - 37.252.215.255 { 0x25fce000, 0x25ffffff, REGISTRY_RIPENCC }, // 37.252.224.0 - 37.255.255.255 { 0x26000000, 0x26ffffff, REGISTRY_ARIN }, // 38.0.0.0 - 38.255.255.255 { 0x27000000, 0x27ffffff, REGISTRY_APNIC }, // 39.0.0.0 - 39.255.255.255 { 0x28000000, 0x2847ffff, REGISTRY_ARIN }, // 40.0.0.0 - 40.71.255.255 { 0x28480000, 0x2849ffff, REGISTRY_APNIC }, // 40.72.0.0 - 40.73.255.255 { 0x284a0000, 0x287d7fff, REGISTRY_ARIN }, // 40.74.0.0 - 40.125.127.255 { 0x287d8000, 0x287dffff, REGISTRY_APNIC }, // 40.125.128.0 - 40.125.255.255 { 0x287e0000, 0x287e3fff, REGISTRY_ARIN }, // 40.126.0.0 - 40.126.63.255 { 0x287e4000, 0x287e7fff, REGISTRY_APNIC }, // 40.126.64.0 - 40.126.127.255 { 0x287e8000, 0x28ffffff, REGISTRY_ARIN }, // 40.126.128.0 - 40.255.255.255 { 0x29000000, 0x293dffff, REGISTRY_AFRINIC }, // 41.0.0.0 - 41.61.255.255 { 0x293f0000, 0x29433fff, REGISTRY_AFRINIC }, // 41.63.0.0 - 41.67.63.255 { 0x29435000, 0x294357ff, REGISTRY_AFRINIC }, // 41.67.80.0 - 41.67.87.255 { 0x29438000, 0x29490fff, REGISTRY_AFRINIC }, // 41.67.128.0 - 41.73.15.255 { 0x29492000, 0x294a5fff, REGISTRY_AFRINIC }, // 41.73.32.0 - 41.74.95.255 { 0x294a7000, 0x294b0fff, REGISTRY_AFRINIC }, // 41.74.112.0 - 41.75.15.255 { 0x294b2000, 0x294c9fff, REGISTRY_AFRINIC }, // 41.75.32.0 - 41.76.159.255 { 0x294ca800, 0x294ce7ff, REGISTRY_AFRINIC }, // 41.76.168.0 - 41.76.231.255 { 0x294cf000, 0x294d9fff, REGISTRY_AFRINIC }, // 41.76.240.0 - 41.77.159.255 { 0x294da800, 0x294dd7ff, REGISTRY_AFRINIC }, // 41.77.168.0 - 41.77.215.255 { 0x294ddc00, 0x294df7ff, REGISTRY_AFRINIC }, // 41.77.220.0 - 41.77.247.255 { 0x294e0000, 0x294e0bff, REGISTRY_AFRINIC }, // 41.78.0.0 - 41.78.11.255 { 0x294e1000, 0x294e2bff, REGISTRY_AFRINIC }, // 41.78.16.0 - 41.78.43.255 { 0x294e3000, 0x294e43ff, REGISTRY_AFRINIC }, // 41.78.48.0 - 41.78.67.255 { 0x294e4800, 0x294e67ff, REGISTRY_AFRINIC }, // 41.78.72.0 - 41.78.103.255 { 0x294e6c00, 0x294e83ff, REGISTRY_AFRINIC }, // 41.78.108.0 - 41.78.131.255 { 0x294e8800, 0x294e9fff, REGISTRY_AFRINIC }, // 41.78.136.0 - 41.78.159.255 { 0x294ea400, 0x294eafff, REGISTRY_AFRINIC }, // 41.78.164.0 - 41.78.175.255 { 0x294eb800, 0x294eebff, REGISTRY_AFRINIC }, // 41.78.184.0 - 41.78.235.255 { 0x294ef000, 0x294effff, REGISTRY_AFRINIC }, // 41.78.240.0 - 41.78.255.255 { 0x294f0400, 0x294f0bff, REGISTRY_AFRINIC }, // 41.79.4.0 - 41.79.11.255 { 0x294f1000, 0x294f53ff, REGISTRY_AFRINIC }, // 41.79.16.0 - 41.79.83.255 { 0x294f5800, 0x294f63ff, REGISTRY_AFRINIC }, // 41.79.88.0 - 41.79.99.255 { 0x294f6800, 0x294f6fff, REGISTRY_AFRINIC }, // 41.79.104.0 - 41.79.111.255 { 0x294f7400, 0x294f8bff, REGISTRY_AFRINIC }, // 41.79.116.0 - 41.79.139.255 { 0x294f9000, 0x29549fff, REGISTRY_AFRINIC }, // 41.79.144.0 - 41.84.159.255 { 0x2954c000, 0x29571fff, REGISTRY_AFRINIC }, // 41.84.192.0 - 41.87.31.255 { 0x29574000, 0x298b3fff, REGISTRY_AFRINIC }, // 41.87.64.0 - 41.139.63.255 { 0x298b8000, 0x299affff, REGISTRY_AFRINIC }, // 41.139.128.0 - 41.154.255.255 { 0x299b8000, 0x29bd5fff, REGISTRY_AFRINIC }, // 41.155.128.0 - 41.189.95.255 { 0x29bda000, 0x29beefff, REGISTRY_AFRINIC }, // 41.189.160.0 - 41.190.239.255 { 0x29bef400, 0x29befbff, REGISTRY_AFRINIC }, // 41.190.244.0 - 41.190.251.255 { 0x29bf0000, 0x29bf5bff, REGISTRY_AFRINIC }, // 41.191.0.0 - 41.191.91.255 { 0x29bf6000, 0x29bf6bff, REGISTRY_AFRINIC }, // 41.191.96.0 - 41.191.107.255 { 0x29bf7400, 0x29bfcfff, REGISTRY_AFRINIC }, // 41.191.116.0 - 41.191.207.255 { 0x29bfd400, 0x29cd9fff, REGISTRY_AFRINIC }, // 41.191.212.0 - 41.205.159.255 { 0x29cdc000, 0x29cedfff, REGISTRY_AFRINIC }, // 41.205.192.0 - 41.206.223.255 { 0x29cf0000, 0x29cfdfff, REGISTRY_AFRINIC }, // 41.207.0.0 - 41.207.223.255 { 0x29cfe400, 0x29d17fff, REGISTRY_AFRINIC }, // 41.207.228.0 - 41.209.127.255 { 0x29d1c000, 0x29d3bfff, REGISTRY_AFRINIC }, // 41.209.192.0 - 41.211.191.255 { 0x29d40000, 0x29d7bfff, REGISTRY_AFRINIC }, // 41.212.0.0 - 41.215.191.255 { 0x29d7d000, 0x29d7dfff, REGISTRY_AFRINIC }, // 41.215.208.0 - 41.215.223.255 { 0x29d7e800, 0x29d8efff, REGISTRY_AFRINIC }, // 41.215.232.0 - 41.216.239.255 { 0x29d90000, 0x29d9c3ff, REGISTRY_AFRINIC }, // 41.217.0.0 - 41.217.195.255 { 0x29d9c800, 0x29d9f7ff, REGISTRY_AFRINIC }, // 41.217.200.0 - 41.217.247.255 { 0x29da0000, 0x29dbbfff, REGISTRY_AFRINIC }, // 41.218.0.0 - 41.219.191.255 { 0x29dc0000, 0x29dd6fff, REGISTRY_AFRINIC }, // 41.220.0.0 - 41.221.111.255 { 0x29dd8000, 0x29de4fff, REGISTRY_AFRINIC }, // 41.221.128.0 - 41.222.79.255 { 0x29de5800, 0x29deffff, REGISTRY_AFRINIC }, // 41.222.88.0 - 41.222.255.255 { 0x29df0400, 0x29df0bff, REGISTRY_AFRINIC }, // 41.223.4.0 - 41.223.11.255 { 0x29df1000, 0x29df43ff, REGISTRY_AFRINIC }, // 41.223.16.0 - 41.223.67.255 { 0x29df4800, 0x29dfcfff, REGISTRY_AFRINIC }, // 41.223.72.0 - 41.223.207.255 { 0x29dfd400, 0x29f283ff, REGISTRY_AFRINIC }, // 41.223.212.0 - 41.242.131.255 { 0x29f28800, 0x29f297ff, REGISTRY_AFRINIC }, // 41.242.136.0 - 41.242.151.255 { 0x29f2a000, 0x29f4ffff, REGISTRY_AFRINIC }, // 41.242.160.0 - 41.244.255.255 { 0x29f58000, 0x29ffffff, REGISTRY_AFRINIC }, // 41.245.128.0 - 41.255.255.255 { 0x2a000000, 0x2be3b7ff, REGISTRY_APNIC }, // 42.0.0.0 - 43.227.183.255 { 0x2be3bc00, 0x2be48fff, REGISTRY_APNIC }, // 43.227.188.0 - 43.228.143.255 { 0x2be49400, 0x2be4a3ff, REGISTRY_APNIC }, // 43.228.148.0 - 43.228.163.255 { 0x2be4a800, 0x2be4abff, REGISTRY_APNIC }, // 43.228.168.0 - 43.228.171.255 { 0x2be4b000, 0x2be57bff, REGISTRY_APNIC }, // 43.228.176.0 - 43.229.123.255 { 0x2be58000, 0x2be5e3ff, REGISTRY_APNIC }, // 43.229.128.0 - 43.229.227.255 { 0x2be5e800, 0x2bf1f3ff, REGISTRY_APNIC }, // 43.229.232.0 - 43.241.243.255 { 0x2bf1f800, 0x2bf837ff, REGISTRY_APNIC }, // 43.241.248.0 - 43.248.55.255 { 0x2bf83c00, 0x2bf8d3ff, REGISTRY_APNIC }, // 43.248.60.0 - 43.248.211.255 { 0x2bf8d800, 0x2bfab3ff, REGISTRY_APNIC }, // 43.248.216.0 - 43.250.179.255 { 0x2bfab800, 0x2bfb13ff, REGISTRY_APNIC }, // 43.250.184.0 - 43.251.19.255 { 0x2bfb1800, 0x2bfb53ff, REGISTRY_APNIC }, // 43.251.24.0 - 43.251.83.255 { 0x2bfb5800, 0x2bfb63ff, REGISTRY_APNIC }, // 43.251.88.0 - 43.251.99.255 { 0x2bfb6800, 0x2bfb9fff, REGISTRY_APNIC }, // 43.251.104.0 - 43.251.159.255 { 0x2bfba000, 0x2bfba3ff, REGISTRY_RIPENCC }, // 43.251.160.0 - 43.251.163.255 { 0x2bfba400, 0x2bff3bff, REGISTRY_APNIC }, // 43.251.164.0 - 43.255.59.255 { 0x2bff4000, 0x2bffffff, REGISTRY_APNIC }, // 43.255.64.0 - 43.255.255.255 { 0x2c000000, 0x2d03ffff, REGISTRY_ARIN }, // 44.0.0.0 - 45.3.255.255 { 0x2d040000, 0x2d07ffff, REGISTRY_LACNIC }, // 45.4.0.0 - 45.7.255.255 { 0x2d100000, 0x2d2b3fff, REGISTRY_ARIN }, // 45.16.0.0 - 45.43.63.255 { 0x2d2b4000, 0x2d2b5fff, REGISTRY_RIPENCC }, // 45.43.64.0 - 45.43.95.255 { 0x2d2b6000, 0x2d38dfff, REGISTRY_ARIN }, // 45.43.96.0 - 45.56.223.255 { 0x2d38e000, 0x2d38ffff, REGISTRY_RIPENCC }, // 45.56.224.0 - 45.56.255.255 { 0x2d390000, 0x2d3fffff, REGISTRY_ARIN }, // 45.57.0.0 - 45.63.255.255 { 0x2d400000, 0x2d413fff, REGISTRY_APNIC }, // 45.64.0.0 - 45.65.63.255 { 0x2d418000, 0x2d41fcff, REGISTRY_LACNIC }, // 45.65.128.0 - 45.65.252.255 { 0x2d41fe00, 0x2d41ffff, REGISTRY_LACNIC }, // 45.65.254.0 - 45.65.255.255 { 0x2d480000, 0x2d4fffff, REGISTRY_ARIN }, // 45.72.0.0 - 45.79.255.255 { 0x2d600000, 0x2d6fffff, REGISTRY_AFRINIC }, // 45.96.0.0 - 45.111.255.255 { 0x2d700000, 0x2d716fff, REGISTRY_APNIC }, // 45.112.0.0 - 45.113.111.255 { 0x2d717400, 0x2d7277ff, REGISTRY_APNIC }, // 45.113.116.0 - 45.114.119.255 { 0x2d728000, 0x2d72cbff, REGISTRY_APNIC }, // 45.114.128.0 - 45.114.203.255 { 0x2d72d000, 0x2d731bff, REGISTRY_APNIC }, // 45.114.208.0 - 45.115.27.255 { 0x2d732000, 0x2d742fff, REGISTRY_APNIC }, // 45.115.32.0 - 45.116.47.255 { 0x2d743400, 0x2d779fff, REGISTRY_APNIC }, // 45.116.52.0 - 45.119.159.255 { 0x2d77a400, 0x2d782fff, REGISTRY_APNIC }, // 45.119.164.0 - 45.120.47.255 { 0x2d783400, 0x2d78c3ff, REGISTRY_APNIC }, // 45.120.52.0 - 45.120.195.255 { 0x2d78c800, 0x2d7d7fff, REGISTRY_APNIC }, // 45.120.200.0 - 45.125.127.255 { 0x2d7d8400, 0x2d7e47ff, REGISTRY_APNIC }, // 45.125.132.0 - 45.126.71.255 { 0x2d7e4c00, 0x2d7fffff, REGISTRY_APNIC }, // 45.126.76.0 - 45.127.255.255 { 0x2dc00000, 0x2ddeffff, REGISTRY_AFRINIC }, // 45.192.0.0 - 45.222.255.255 { 0x2ddf0000, 0x2ddfffff, REGISTRY_ARIN }, // 45.223.0.0 - 45.223.255.255 { 0x2df00000, 0x2df7ffff, REGISTRY_AFRINIC }, // 45.240.0.0 - 45.247.255.255 { 0x2df80000, 0x2dfbefff, REGISTRY_APNIC }, // 45.248.0.0 - 45.251.239.255 { 0x2dfbf400, 0x2dfd81ff, REGISTRY_APNIC }, // 45.251.244.0 - 45.253.129.255 { 0x2dfd8400, 0x2dffffff, REGISTRY_APNIC }, // 45.253.132.0 - 45.255.255.255 { 0x2e000000, 0x2e107fff, REGISTRY_RIPENCC }, // 46.0.0.0 - 46.16.127.255 { 0x2e108800, 0x2e1d17ff, REGISTRY_RIPENCC }, // 46.16.136.0 - 46.29.23.255 { 0x2e1d2000, 0x2e1eb7ff, REGISTRY_RIPENCC }, // 46.29.32.0 - 46.30.183.255 { 0x2e1ec000, 0x2e1f47ff, REGISTRY_RIPENCC }, // 46.30.192.0 - 46.31.71.255 { 0x2e1f5000, 0x2e940fff, REGISTRY_RIPENCC }, // 46.31.80.0 - 46.148.15.255 { 0x2e941000, 0x2e946fff, REGISTRY_RIPENCC }, // 46.148.16.0 - 46.148.111.255 { 0x2e947000, 0x2e947fff, REGISTRY_RIPENCC }, // 46.148.112.0 - 46.148.127.255 { 0x2e948000, 0x2e94efff, REGISTRY_RIPENCC }, // 46.148.128.0 - 46.148.239.255 { 0x2e94f000, 0x2e950fff, REGISTRY_RIPENCC }, // 46.148.240.0 - 46.149.15.255 { 0x2e951000, 0x2e95bfff, REGISTRY_RIPENCC }, // 46.149.16.0 - 46.149.191.255 { 0x2e95c000, 0x2e95cfff, REGISTRY_RIPENCC }, // 46.149.192.0 - 46.149.207.255 { 0x2e95d000, 0x2e971fff, REGISTRY_RIPENCC }, // 46.149.208.0 - 46.151.31.255 { 0x2e972000, 0x2e9727ff, REGISTRY_RIPENCC }, // 46.151.32.0 - 46.151.39.255 { 0x2e972800, 0x2e97c7ff, REGISTRY_RIPENCC }, // 46.151.40.0 - 46.151.199.255 { 0x2e97c800, 0x2e97d7ff, REGISTRY_RIPENCC }, // 46.151.200.0 - 46.151.215.255 { 0x2e97d800, 0x2e97ffff, REGISTRY_RIPENCC }, // 46.151.216.0 - 46.151.255.255 { 0x2e980000, 0x2eac5fff, REGISTRY_RIPENCC }, // 46.152.0.0 - 46.172.95.255 { 0x2eac6000, 0x2eadefff, REGISTRY_RIPENCC }, // 46.172.96.0 - 46.173.239.255 { 0x2eadf000, 0x2eadffff, REGISTRY_RIPENCC }, // 46.173.240.0 - 46.173.255.255 { 0x2eae0000, 0x2eaec7ff, REGISTRY_RIPENCC }, // 46.174.0.0 - 46.174.199.255 { 0x2eaec800, 0x2eaecfff, REGISTRY_RIPENCC }, // 46.174.200.0 - 46.174.207.255 { 0x2eaed000, 0x2eaf97ff, REGISTRY_RIPENCC }, // 46.174.208.0 - 46.175.151.255 { 0x2eafa000, 0x2eafffff, REGISTRY_RIPENCC }, // 46.175.160.0 - 46.175.255.255 { 0x2eb00000, 0x2eb7b7ff, REGISTRY_RIPENCC }, // 46.176.0.0 - 46.183.183.255 { 0x2eb7c000, 0x2ee72fff, REGISTRY_RIPENCC }, // 46.183.192.0 - 46.231.47.255 { 0x2ee73800, 0x2ee8cfff, REGISTRY_RIPENCC }, // 46.231.56.0 - 46.232.207.255 { 0x2ee8d800, 0x2ee8f7ff, REGISTRY_RIPENCC }, // 46.232.216.0 - 46.232.247.255 { 0x2ee90000, 0x2ef337ff, REGISTRY_RIPENCC }, // 46.233.0.0 - 46.243.55.255 { 0x2ef34000, 0x2effffff, REGISTRY_RIPENCC }, // 46.243.64.0 - 46.255.255.255 { 0x2f000000, 0x2f07ffff, REGISTRY_ARIN }, // 47.0.0.0 - 47.7.255.255 { 0x2f080000, 0x2f09ffff, REGISTRY_APNIC }, // 47.8.0.0 - 47.9.255.255 { 0x2f0a0000, 0x2f0affff, REGISTRY_ARIN }, // 47.10.0.0 - 47.10.255.255 { 0x2f0b0000, 0x2f0bffff, REGISTRY_APNIC }, // 47.11.0.0 - 47.11.255.255 { 0x2f0c0000, 0x2f0effff, REGISTRY_ARIN }, // 47.12.0.0 - 47.14.255.255 { 0x2f0f0000, 0x2f0fffff, REGISTRY_APNIC }, // 47.15.0.0 - 47.15.255.255 { 0x2f100000, 0x2f1cffff, REGISTRY_ARIN }, // 47.16.0.0 - 47.28.255.255 { 0x2f1d0000, 0x2f1fffff, REGISTRY_APNIC }, // 47.29.0.0 - 47.31.255.255 { 0x2f200000, 0x2f5bffff, REGISTRY_ARIN }, // 47.32.0.0 - 47.91.255.255 { 0x2f5c0000, 0x2f7fffff, REGISTRY_APNIC }, // 47.92.0.0 - 47.127.255.255 { 0x2f800000, 0x2ff6ffff, REGISTRY_ARIN }, // 47.128.0.0 - 47.246.255.255 { 0x2ff70000, 0x2ff7ffff, REGISTRY_APNIC }, // 47.247.0.0 - 47.247.255.255 { 0x2ff80000, 0x30ffffff, REGISTRY_ARIN }, // 47.248.0.0 - 48.255.255.255 { 0x31000000, 0x318000ff, REGISTRY_APNIC }, // 49.0.0.0 - 49.128.0.255 { 0x31800200, 0x31ffffff, REGISTRY_APNIC }, // 49.128.2.0 - 49.255.255.255 { 0x32000000, 0x32ffffff, REGISTRY_ARIN }, // 50.0.0.0 - 50.255.255.255 { 0x33000000, 0x33b2ffff, REGISTRY_RIPENCC }, // 51.0.0.0 - 51.178.255.255 { 0x33b30000, 0x33b37fff, REGISTRY_RIPENCC }, // 51.179.0.0 - 51.179.127.255 { 0x33b38000, 0x33d2ffff, REGISTRY_RIPENCC }, // 51.179.128.0 - 51.210.255.255 { 0x33d30000, 0x33d3ffff, REGISTRY_RIPENCC }, // 51.211.0.0 - 51.211.255.255 { 0x33d40000, 0x33d9ffff, REGISTRY_RIPENCC }, // 51.212.0.0 - 51.217.255.255 { 0x33da0000, 0x33daffff, REGISTRY_RIPENCC }, // 51.218.0.0 - 51.218.255.255 { 0x33db0000, 0x33deffff, REGISTRY_RIPENCC }, // 51.219.0.0 - 51.222.255.255 { 0x33df0000, 0x33dfffff, REGISTRY_RIPENCC }, // 51.223.0.0 - 51.223.255.255 { 0x33e00000, 0x33eaffff, REGISTRY_RIPENCC }, // 51.224.0.0 - 51.234.255.255 { 0x33eb0000, 0x33ebffff, REGISTRY_RIPENCC }, // 51.235.0.0 - 51.235.255.255 { 0x33ec0000, 0x33fbffff, REGISTRY_RIPENCC }, // 51.236.0.0 - 51.251.255.255 { 0x33fc0000, 0x33fdffff, REGISTRY_RIPENCC }, // 51.252.0.0 - 51.253.255.255 { 0x33fe0000, 0x33ffffff, REGISTRY_RIPENCC }, // 51.254.0.0 - 51.255.255.255 { 0x34000000, 0x344fffff, REGISTRY_ARIN }, // 52.0.0.0 - 52.79.255.255 { 0x34500000, 0x3453ffff, REGISTRY_APNIC }, // 52.80.0.0 - 52.83.255.255 { 0x34540000, 0x3481ffff, REGISTRY_ARIN }, // 52.84.0.0 - 52.129.255.255 { 0x34820000, 0x3483ffff, REGISTRY_APNIC }, // 52.130.0.0 - 52.131.255.255 { 0x34840000, 0x34903fff, REGISTRY_ARIN }, // 52.132.0.0 - 52.144.63.255 { 0x34904000, 0x34905fff, REGISTRY_RIPENCC }, // 52.144.64.0 - 52.144.95.255 { 0x34906000, 0x34ffffff, REGISTRY_ARIN }, // 52.144.96.0 - 52.255.255.255 { 0x35000000, 0x35ffffff, REGISTRY_RIPENCC }, // 53.0.0.0 - 53.255.255.255 { 0x36000000, 0x3623ffff, REGISTRY_ARIN }, // 54.0.0.0 - 54.35.255.255 { 0x36240000, 0x3627ffff, REGISTRY_RIPENCC }, // 54.36.0.0 - 54.39.255.255 { 0x36280000, 0x36ddffff, REGISTRY_ARIN }, // 54.40.0.0 - 54.221.255.255 { 0x36de0000, 0x36dfffff, REGISTRY_APNIC }, // 54.222.0.0 - 54.223.255.255 { 0x36e00000, 0x38ffffff, REGISTRY_ARIN }, // 54.224.0.0 - 56.255.255.255 { 0x39000000, 0x39ffffff, REGISTRY_RIPENCC }, // 57.0.0.0 - 57.255.255.255 { 0x3a000000, 0x3dffffff, REGISTRY_APNIC }, // 58.0.0.0 - 61.255.255.255 { 0x3e000000, 0x3e083fff, REGISTRY_RIPENCC }, // 62.0.0.0 - 62.8.63.255 { 0x3e084000, 0x3e085fff, REGISTRY_AFRINIC }, // 62.8.64.0 - 62.8.95.255 { 0x3e086000, 0x3e0c5fff, REGISTRY_RIPENCC }, // 62.8.96.0 - 62.12.95.255 { 0x3e0c6000, 0x3e0c77ff, REGISTRY_AFRINIC }, // 62.12.96.0 - 62.12.119.255 { 0x3e0c8000, 0x3e185fff, REGISTRY_RIPENCC }, // 62.12.128.0 - 62.24.95.255 { 0x3e186000, 0x3e187fff, REGISTRY_AFRINIC }, // 62.24.96.0 - 62.24.127.255 { 0x3e188000, 0x3e2c5fff, REGISTRY_RIPENCC }, // 62.24.128.0 - 62.44.95.255 { 0x3e2c6000, 0x3e2c7fff, REGISTRY_RIPENCC }, // 62.44.96.0 - 62.44.127.255 { 0x3e2c8000, 0x3e3dbfff, REGISTRY_RIPENCC }, // 62.44.128.0 - 62.61.191.255 { 0x3e3dc000, 0x3e3dffff, REGISTRY_AFRINIC }, // 62.61.192.0 - 62.61.255.255 { 0x3e3e0000, 0x3e441fff, REGISTRY_RIPENCC }, // 62.62.0.0 - 62.68.31.255 { 0x3e442000, 0x3e443fff, REGISTRY_AFRINIC }, // 62.68.32.0 - 62.68.63.255 { 0x3e444000, 0x3e44dfff, REGISTRY_RIPENCC }, // 62.68.64.0 - 62.68.223.255 { 0x3e44e000, 0x3e44ffff, REGISTRY_AFRINIC }, // 62.68.224.0 - 62.68.255.255 { 0x3e450000, 0x3e4e3fff, REGISTRY_RIPENCC }, // 62.69.0.0 - 62.78.63.255 { 0x3e4e4000, 0x3e4e5fff, REGISTRY_RIPENCC }, // 62.78.64.0 - 62.78.95.255 { 0x3e4e6000, 0x3e5f7fff, REGISTRY_RIPENCC }, // 62.78.96.0 - 62.95.127.255 { 0x3e5f8000, 0x3e5fffff, REGISTRY_RIPENCC }, // 62.95.128.0 - 62.95.255.255 { 0x3e600000, 0x3e71ffff, REGISTRY_RIPENCC }, // 62.96.0.0 - 62.113.255.255 { 0x3e720000, 0x3e72ffff, REGISTRY_AFRINIC }, // 62.114.0.0 - 62.114.255.255 { 0x3e730000, 0x3e751fff, REGISTRY_RIPENCC }, // 62.115.0.0 - 62.117.31.255 { 0x3e752000, 0x3e753fff, REGISTRY_AFRINIC }, // 62.117.32.0 - 62.117.63.255 { 0x3e754000, 0x3e79ffff, REGISTRY_RIPENCC }, // 62.117.64.0 - 62.121.255.255 { 0x3e7a0000, 0x3e7a17ff, REGISTRY_RIPENCC }, // 62.122.0.0 - 62.122.23.255 { 0x3e7a2800, 0x3e7a47ff, REGISTRY_RIPENCC }, // 62.122.40.0 - 62.122.71.255 { 0x3e7a5000, 0x3e7a57ff, REGISTRY_RIPENCC }, // 62.122.80.0 - 62.122.87.255 { 0x3e7a5800, 0x3e7ad7ff, REGISTRY_RIPENCC }, // 62.122.88.0 - 62.122.215.255 { 0x3e7ae800, 0x3e7affff, REGISTRY_RIPENCC }, // 62.122.232.0 - 62.122.255.255 { 0x3e7b0000, 0x3e851fff, REGISTRY_RIPENCC }, // 62.123.0.0 - 62.133.31.255 { 0x3e854000, 0x3e86ffff, REGISTRY_RIPENCC }, // 62.133.64.0 - 62.134.255.255 { 0x3e870000, 0x3e877fff, REGISTRY_AFRINIC }, // 62.135.0.0 - 62.135.127.255 { 0x3e878000, 0x3e8affff, REGISTRY_RIPENCC }, // 62.135.128.0 - 62.138.255.255 { 0x3e8b0000, 0x3e8bffff, REGISTRY_AFRINIC }, // 62.139.0.0 - 62.139.255.255 { 0x3e8c0000, 0x3e8c3fff, REGISTRY_RIPENCC }, // 62.140.0.0 - 62.140.63.255 { 0x3e8c4000, 0x3e8c7fff, REGISTRY_AFRINIC }, // 62.140.64.0 - 62.140.127.255 { 0x3e8c8000, 0x3ead1fff, REGISTRY_RIPENCC }, // 62.140.128.0 - 62.173.31.255 { 0x3ead2000, 0x3ead3fff, REGISTRY_AFRINIC }, // 62.173.32.0 - 62.173.63.255 { 0x3ead4000, 0x3eb5ffff, REGISTRY_RIPENCC }, // 62.173.64.0 - 62.181.255.255 { 0x3eb60000, 0x3eb60fff, REGISTRY_RIPENCC }, // 62.182.0.0 - 62.182.15.255 { 0x3eb61000, 0x3eb617ff, REGISTRY_RIPENCC }, // 62.182.16.0 - 62.182.23.255 { 0x3eb61800, 0x3eb627ff, REGISTRY_RIPENCC }, // 62.182.24.0 - 62.182.39.255 { 0x3eb63000, 0x3eb65fff, REGISTRY_RIPENCC }, // 62.182.48.0 - 62.182.95.255 { 0x3eb66600, 0x3eb67fff, REGISTRY_RIPENCC }, // 62.182.102.0 - 62.182.127.255 { 0x3eb68000, 0x3eb687ff, REGISTRY_RIPENCC }, // 62.182.128.0 - 62.182.135.255 { 0x3eb68800, 0x3eb697ff, REGISTRY_RIPENCC }, // 62.182.136.0 - 62.182.151.255 { 0x3eb6a000, 0x3eb6afff, REGISTRY_RIPENCC }, // 62.182.160.0 - 62.182.175.255 { 0x3eb6b000, 0x3eb6b7ff, REGISTRY_RIPENCC }, // 62.182.176.0 - 62.182.183.255 { 0x3eb6b800, 0x3eb6ffff, REGISTRY_RIPENCC }, // 62.182.184.0 - 62.182.255.255 { 0x3eb70000, 0x3ec13fff, REGISTRY_RIPENCC }, // 62.183.0.0 - 62.193.63.255 { 0x3ec14000, 0x3ec17fff, REGISTRY_AFRINIC }, // 62.193.64.0 - 62.193.127.255 { 0x3ec18000, 0x3ec19fff, REGISTRY_RIPENCC }, // 62.193.128.0 - 62.193.159.255 { 0x3ec1c000, 0x3ef01fff, REGISTRY_RIPENCC }, // 62.193.192.0 - 62.240.31.255 { 0x3ef02000, 0x3ef03fff, REGISTRY_AFRINIC }, // 62.240.32.0 - 62.240.63.255 { 0x3ef04000, 0x3ef05fff, REGISTRY_RIPENCC }, // 62.240.64.0 - 62.240.95.255 { 0x3ef06000, 0x3ef07fff, REGISTRY_AFRINIC }, // 62.240.96.0 - 62.240.127.255 { 0x3ef08000, 0x3ef17fff, REGISTRY_RIPENCC }, // 62.240.128.0 - 62.241.127.255 { 0x3ef18000, 0x3ef19fff, REGISTRY_AFRINIC }, // 62.241.128.0 - 62.241.159.255 { 0x3ef1a000, 0x3efb7fff, REGISTRY_RIPENCC }, // 62.241.160.0 - 62.251.127.255 { 0x3efb8000, 0x3efbffff, REGISTRY_AFRINIC }, // 62.251.128.0 - 62.251.255.255 { 0x3efc0000, 0x3effffff, REGISTRY_RIPENCC }, // 62.252.0.0 - 62.255.255.255 { 0x3f000000, 0x3f8d21ff, REGISTRY_ARIN }, // 63.0.0.0 - 63.141.33.255 { 0x3f8d2200, 0x3f8d25ff, REGISTRY_RIPENCC }, // 63.141.34.0 - 63.141.37.255 { 0x3f8d2600, 0x401c7fff, REGISTRY_ARIN }, // 63.141.38.0 - 64.28.127.255 { 0x401c8000, 0x401c8fff, REGISTRY_LACNIC }, // 64.28.128.0 - 64.28.143.255 { 0x401c9000, 0x40203fff, REGISTRY_ARIN }, // 64.28.144.0 - 64.32.63.255 { 0x40204000, 0x40207fff, REGISTRY_LACNIC }, // 64.32.64.0 - 64.32.127.255 { 0x40208000, 0x4020ffff, REGISTRY_ARIN }, // 64.32.128.0 - 64.32.255.255 { 0x40210000, 0x40213fff, REGISTRY_APNIC }, // 64.33.0.0 - 64.33.63.255 { 0x40214000, 0x40396fff, REGISTRY_ARIN }, // 64.33.64.0 - 64.57.111.255 { 0x40397000, 0x40397fff, REGISTRY_AFRINIC }, // 64.57.112.0 - 64.57.127.255 { 0x40398000, 0x40efebff, REGISTRY_ARIN }, // 64.57.128.0 - 64.239.235.255 { 0x40efec00, 0x40efefff, REGISTRY_RIPENCC }, // 64.239.236.0 - 64.239.239.255 { 0x40eff000, 0x40fd1fff, REGISTRY_ARIN }, // 64.239.240.0 - 64.253.31.255 { 0x40fd2000, 0x40fd3fff, REGISTRY_RIPENCC }, // 64.253.32.0 - 64.253.63.255 { 0x40fd4000, 0x41273fff, REGISTRY_ARIN }, // 64.253.64.0 - 65.39.63.255 { 0x41274000, 0x41275fff, REGISTRY_RIPENCC }, // 65.39.64.0 - 65.39.95.255 { 0x41276000, 0x4162ffff, REGISTRY_ARIN }, // 65.39.96.0 - 65.98.255.255 { 0x41630000, 0x41635fff, REGISTRY_APNIC }, // 65.99.0.0 - 65.99.95.255 { 0x41636000, 0x41637fff, REGISTRY_ARIN }, // 65.99.96.0 - 65.99.127.255 { 0x41638000, 0x4163bfff, REGISTRY_RIPENCC }, // 65.99.128.0 - 65.99.191.255 { 0x4163c000, 0x4207ffff, REGISTRY_ARIN }, // 65.99.192.0 - 66.7.255.255 { 0x42080000, 0x42087fff, REGISTRY_AFRINIC }, // 66.8.0.0 - 66.8.127.255 { 0x42088000, 0x42123fff, REGISTRY_ARIN }, // 66.8.128.0 - 66.18.63.255 { 0x42124000, 0x42125fff, REGISTRY_AFRINIC }, // 66.18.64.0 - 66.18.95.255 { 0x42126000, 0x423bffff, REGISTRY_ARIN }, // 66.18.96.0 - 66.59.255.255 { 0x423c0000, 0x423c3fff, REGISTRY_LACNIC }, // 66.60.0.0 - 66.60.63.255 { 0x423c4000, 0x424f5fff, REGISTRY_ARIN }, // 66.60.64.0 - 66.79.95.255 { 0x424f6000, 0x424f7fff, REGISTRY_RIPENCC }, // 66.79.96.0 - 66.79.127.255 { 0x424f8000, 0x4260bfff, REGISTRY_ARIN }, // 66.79.128.0 - 66.96.191.255 { 0x4260c000, 0x4260ffff, REGISTRY_APNIC }, // 66.96.192.0 - 66.96.255.255 { 0x42610000, 0x4261ffff, REGISTRY_ARIN }, // 66.97.0.0 - 66.97.255.255 { 0x42620000, 0x42625fff, REGISTRY_LACNIC }, // 66.98.0.0 - 66.98.95.255 { 0x42626000, 0x42801fff, REGISTRY_ARIN }, // 66.98.96.0 - 66.128.31.255 { 0x42802000, 0x42802fff, REGISTRY_LACNIC }, // 66.128.32.0 - 66.128.47.255 { 0x42803000, 0x42854fff, REGISTRY_ARIN }, // 66.128.48.0 - 66.133.79.255 { 0x42855000, 0x42855fff, REGISTRY_APNIC }, // 66.133.80.0 - 66.133.95.255 { 0x42856000, 0x42b59fff, REGISTRY_ARIN }, // 66.133.96.0 - 66.181.159.255 { 0x42b5a000, 0x42b5bfff, REGISTRY_APNIC }, // 66.181.160.0 - 66.181.191.255 { 0x42b5c000, 0x42da83ff, REGISTRY_ARIN }, // 66.181.192.0 - 66.218.131.255 { 0x42da8600, 0x42e73fff, REGISTRY_ARIN }, // 66.218.134.0 - 66.231.63.255 { 0x42e74000, 0x42e74fff, REGISTRY_LACNIC }, // 66.231.64.0 - 66.231.79.255 { 0x42e75000, 0x42f8cbff, REGISTRY_ARIN }, // 66.231.80.0 - 66.248.203.255 { 0x42f8cc00, 0x42f8cfff, REGISTRY_RIPENCC }, // 66.248.204.0 - 66.248.207.255 { 0x42f8d000, 0x42fb7fff, REGISTRY_ARIN }, // 66.248.208.0 - 66.251.127.255 { 0x42fb8000, 0x42fbbfff, REGISTRY_AFRINIC }, // 66.251.128.0 - 66.251.191.255 { 0x42fbc000, 0x43161fff, REGISTRY_ARIN }, // 66.251.192.0 - 67.22.31.255 { 0x43162000, 0x43163bff, REGISTRY_RIPENCC }, // 67.22.32.0 - 67.22.59.255 { 0x43163c00, 0x43d76fff, REGISTRY_ARIN }, // 67.22.60.0 - 67.215.111.255 { 0x43d77000, 0x43d77fff, REGISTRY_APNIC }, // 67.215.112.0 - 67.215.127.255 { 0x43d78000, 0x453f3fff, REGISTRY_ARIN }, // 67.215.128.0 - 69.63.63.255 { 0x453f4000, 0x453f4fff, REGISTRY_AFRINIC }, // 69.63.64.0 - 69.63.79.255 { 0x453f5000, 0x45431fff, REGISTRY_ARIN }, // 69.63.80.0 - 69.67.31.255 { 0x45432000, 0x45432fff, REGISTRY_AFRINIC }, // 69.67.32.0 - 69.67.47.255 { 0x45433000, 0x459fffff, REGISTRY_ARIN }, // 69.67.48.0 - 69.159.255.255 { 0x45a00000, 0x45a01fff, REGISTRY_APNIC }, // 69.160.0.0 - 69.160.31.255 { 0x45a02000, 0x45ac3fff, REGISTRY_ARIN }, // 69.160.32.0 - 69.172.63.255 { 0x45ac4000, 0x45ac5fff, REGISTRY_APNIC }, // 69.172.64.0 - 69.172.95.255 { 0x45ac6000, 0x45ac7fff, REGISTRY_RIPENCC }, // 69.172.96.0 - 69.172.127.255 { 0x45ac8000, 0x45c23fff, REGISTRY_ARIN }, // 69.172.128.0 - 69.194.63.255 { 0x45c24000, 0x45c27fff, REGISTRY_RIPENCC }, // 69.194.64.0 - 69.194.127.255 { 0x45c28000, 0x4823f7ff, REGISTRY_ARIN }, // 69.194.128.0 - 72.35.247.255 { 0x4823f800, 0x4823fdff, REGISTRY_APNIC }, // 72.35.248.0 - 72.35.253.255 { 0x4823fe00, 0x482c0fff, REGISTRY_ARIN }, // 72.35.254.0 - 72.44.15.255 { 0x482c1000, 0x482c1fff, REGISTRY_LACNIC }, // 72.44.16.0 - 72.44.31.255 { 0x482c2000, 0x48feffff, REGISTRY_ARIN }, // 72.44.32.0 - 72.254.255.255 { 0x48ff0000, 0x48ff3fff, REGISTRY_APNIC }, // 72.255.0.0 - 72.255.63.255 { 0x48ff4000, 0x48ffdfff, REGISTRY_ARIN }, // 72.255.64.0 - 72.255.223.255 { 0x48ffe000, 0x48ffffff, REGISTRY_APNIC }, // 72.255.224.0 - 72.255.255.255 { 0x49000000, 0x4a32cfff, REGISTRY_ARIN }, // 73.0.0.0 - 74.50.207.255 { 0x4a32d000, 0x4a32d7ff, REGISTRY_APNIC }, // 74.50.208.0 - 74.50.215.255 { 0x4a32d800, 0x4a722fff, REGISTRY_ARIN }, // 74.50.216.0 - 74.114.47.255 { 0x4a723000, 0x4a7233ff, REGISTRY_APNIC }, // 74.114.48.0 - 74.114.51.255 { 0x4a723400, 0x4a764fff, REGISTRY_ARIN }, // 74.114.52.0 - 74.118.79.255 { 0x4a765000, 0x4a7653ff, REGISTRY_APNIC }, // 74.118.80.0 - 74.118.83.255 { 0x4a765400, 0x4c4d2fff, REGISTRY_ARIN }, // 74.118.84.0 - 76.77.47.255 { 0x4c4d3000, 0x4c4d3fff, REGISTRY_APNIC }, // 76.77.48.0 - 76.77.63.255 { 0x4c4d4000, 0x4cffffff, REGISTRY_ARIN }, // 76.77.64.0 - 76.255.255.255 { 0x4d000000, 0x4d490fff, REGISTRY_RIPENCC }, // 77.0.0.0 - 77.73.15.255 { 0x4d491800, 0x4d491fff, REGISTRY_RIPENCC }, // 77.73.24.0 - 77.73.31.255 { 0x4d492800, 0x4d4ac7ff, REGISTRY_RIPENCC }, // 77.73.40.0 - 77.74.199.255 { 0x4d4ad000, 0x4d4fffff, REGISTRY_RIPENCC }, // 77.74.208.0 - 77.79.255.255 { 0x4d500000, 0x4d50ffff, REGISTRY_RIPENCC }, // 77.80.0.0 - 77.80.255.255 { 0x4d510000, 0x4d52ffff, REGISTRY_RIPENCC }, // 77.81.0.0 - 77.82.255.255 { 0x4d540000, 0x4d56ffff, REGISTRY_RIPENCC }, // 77.84.0.0 - 77.86.255.255 { 0x4d570000, 0x4d5787ff, REGISTRY_RIPENCC }, // 77.87.0.0 - 77.87.135.255 { 0x4d578800, 0x4d578fff, REGISTRY_RIPENCC }, // 77.87.136.0 - 77.87.143.255 { 0x4d579000, 0x4d57f7ff, REGISTRY_RIPENCC }, // 77.87.144.0 - 77.87.247.255 { 0x4d57f800, 0x4ddbffff, REGISTRY_RIPENCC }, // 77.87.248.0 - 77.219.255.255 { 0x4ddc0000, 0x4ddc1fff, REGISTRY_AFRINIC }, // 77.220.0.0 - 77.220.31.255 { 0x4ddc2000, 0x4df34fff, REGISTRY_RIPENCC }, // 77.220.32.0 - 77.243.79.255 { 0x4df36000, 0x4df75fff, REGISTRY_RIPENCC }, // 77.243.96.0 - 77.247.95.255 { 0x4df78000, 0x4e1857ff, REGISTRY_RIPENCC }, // 77.247.128.0 - 78.24.87.255 { 0x4e186800, 0x4e1b7fff, REGISTRY_RIPENCC }, // 78.24.104.0 - 78.27.127.255 { 0x4e1b8000, 0x4e1bffff, REGISTRY_RIPENCC }, // 78.27.128.0 - 78.27.255.255 { 0x4e1c0000, 0x4e1effff, REGISTRY_RIPENCC }, // 78.28.0.0 - 78.30.255.255 { 0x4e1f0000, 0x4e1f47ff, REGISTRY_RIPENCC }, // 78.31.0.0 - 78.31.71.255 { 0x4e1f4800, 0x4e1f4fff, REGISTRY_RIPENCC }, // 78.31.72.0 - 78.31.79.255 { 0x4e1f5000, 0x4e1f67ff, REGISTRY_RIPENCC }, // 78.31.80.0 - 78.31.103.255 { 0x4e1f6800, 0x4e1f6fff, REGISTRY_RIPENCC }, // 78.31.104.0 - 78.31.111.255 { 0x4e1f7000, 0x4e1fbfff, REGISTRY_RIPENCC }, // 78.31.112.0 - 78.31.191.255 { 0x4e1fc800, 0x4e1fe7ff, REGISTRY_RIPENCC }, // 78.31.200.0 - 78.31.231.255 { 0x4e1ff000, 0x4e1ff7ff, REGISTRY_RIPENCC }, // 78.31.240.0 - 78.31.247.255 { 0x4e200000, 0x4e2807ff, REGISTRY_RIPENCC }, // 78.32.0.0 - 78.40.7.255 { 0x4e281000, 0x4e286fff, REGISTRY_RIPENCC }, // 78.40.16.0 - 78.40.111.255 { 0x4e287800, 0x4e292fff, REGISTRY_RIPENCC }, // 78.40.120.0 - 78.41.47.255 { 0x4e293800, 0x4e294fff, REGISTRY_RIPENCC }, // 78.41.56.0 - 78.41.79.255 { 0x4e295800, 0x4e6ccfff, REGISTRY_RIPENCC }, // 78.41.88.0 - 78.108.207.255 { 0x4e6ce000, 0x4f62b7ff, REGISTRY_RIPENCC }, // 78.108.224.0 - 79.98.183.255 { 0x4f62c000, 0x4f6357ff, REGISTRY_RIPENCC }, // 79.98.192.0 - 79.99.87.255 { 0x4f636000, 0x4f6e1fff, REGISTRY_RIPENCC }, // 79.99.96.0 - 79.110.31.255 { 0x4f6e2000, 0x4f6e2fff, REGISTRY_RIPENCC }, // 79.110.32.0 - 79.110.47.255 { 0x4f6e4000, 0x4f6e9fff, REGISTRY_RIPENCC }, // 79.110.64.0 - 79.110.159.255 { 0x4f6eb000, 0x4f6effff, REGISTRY_RIPENCC }, // 79.110.176.0 - 79.110.255.255 { 0x4f6f0000, 0x4f8eafff, REGISTRY_RIPENCC }, // 79.111.0.0 - 79.142.175.255 { 0x4f8ec000, 0x4faa8fff, REGISTRY_RIPENCC }, // 79.142.192.0 - 79.170.143.255 { 0x4faa9800, 0x4fadffff, REGISTRY_RIPENCC }, // 79.170.152.0 - 79.173.255.255 { 0x4fae2000, 0x4fae7fff, REGISTRY_RIPENCC }, // 79.174.32.0 - 79.174.127.255 { 0x4fae8000, 0x5040cfff, REGISTRY_RIPENCC }, // 79.174.128.0 - 80.64.207.255 { 0x5040e000, 0x5041cfff, REGISTRY_RIPENCC }, // 80.64.224.0 - 80.65.207.255 { 0x5041e000, 0x5042bfff, REGISTRY_RIPENCC }, // 80.65.224.0 - 80.66.191.255 { 0x5042d000, 0x50431fff, REGISTRY_RIPENCC }, // 80.66.208.0 - 80.67.31.255 { 0x50433000, 0x50437fff, REGISTRY_RIPENCC }, // 80.67.48.0 - 80.67.127.255 { 0x50438000, 0x50438fff, REGISTRY_AFRINIC }, // 80.67.128.0 - 80.67.143.255 { 0x50439000, 0x5044e7ff, REGISTRY_RIPENCC }, // 80.67.144.0 - 80.68.231.255 { 0x5044e800, 0x5044ffff, REGISTRY_RIPENCC }, // 80.68.232.0 - 80.68.255.255 { 0x50450000, 0x50485fff, REGISTRY_RIPENCC }, // 80.69.0.0 - 80.72.95.255 { 0x50486000, 0x50486fff, REGISTRY_AFRINIC }, // 80.72.96.0 - 80.72.111.255 { 0x50487000, 0x504b9fff, REGISTRY_RIPENCC }, // 80.72.112.0 - 80.75.159.255 { 0x504ba000, 0x504bbfff, REGISTRY_AFRINIC }, // 80.75.160.0 - 80.75.191.255 { 0x504bc000, 0x504c1fff, REGISTRY_RIPENCC }, // 80.75.192.0 - 80.76.31.255 { 0x504c4000, 0x504e7fff, REGISTRY_RIPENCC }, // 80.76.64.0 - 80.78.127.255 { 0x504e9000, 0x504effff, REGISTRY_RIPENCC }, // 80.78.144.0 - 80.78.255.255 { 0x504f1000, 0x50573fff, REGISTRY_RIPENCC }, // 80.79.16.0 - 80.87.63.255 { 0x50574000, 0x50575fff, REGISTRY_AFRINIC }, // 80.87.64.0 - 80.87.95.255 { 0x50576000, 0x5057ffff, REGISTRY_RIPENCC }, // 80.87.96.0 - 80.87.255.255 { 0x50580000, 0x505801ff, REGISTRY_AFRINIC }, // 80.88.0.0 - 80.88.1.255 { 0x50580400, 0x505805ff, REGISTRY_AFRINIC }, // 80.88.4.0 - 80.88.5.255 { 0x50580700, 0x505808ff, REGISTRY_AFRINIC }, // 80.88.7.0 - 80.88.8.255 { 0x50580b00, 0x50580fff, REGISTRY_AFRINIC }, // 80.88.11.0 - 80.88.15.255 { 0x50581000, 0x505effff, REGISTRY_RIPENCC }, // 80.88.16.0 - 80.94.255.255 { 0x505f0000, 0x505f0fff, REGISTRY_AFRINIC }, // 80.95.0.0 - 80.95.15.255 { 0x505f1000, 0x50edffff, REGISTRY_RIPENCC }, // 80.95.16.0 - 80.237.255.255 { 0x50ee0000, 0x50ee1fff, REGISTRY_RIPENCC }, // 80.238.0.0 - 80.238.31.255 { 0x50ee2000, 0x50ee5fff, REGISTRY_RIPENCC }, // 80.238.32.0 - 80.238.95.255 { 0x50ee6000, 0x50ee7fff, REGISTRY_RIPENCC }, // 80.238.96.0 - 80.238.127.255 { 0x50ee8000, 0x50f0bfff, REGISTRY_RIPENCC }, // 80.238.128.0 - 80.240.191.255 { 0x50f0c000, 0x50f0cfff, REGISTRY_AFRINIC }, // 80.240.192.0 - 80.240.207.255 { 0x50f0d000, 0x50f187ff, REGISTRY_RIPENCC }, // 80.240.208.0 - 80.241.135.255 { 0x50f19000, 0x50f3dfff, REGISTRY_RIPENCC }, // 80.241.144.0 - 80.243.223.255 { 0x50f3f000, 0x50f55fff, REGISTRY_RIPENCC }, // 80.243.240.0 - 80.245.95.255 { 0x50f57000, 0x50f5ffff, REGISTRY_RIPENCC }, // 80.245.112.0 - 80.245.255.255 { 0x50f60000, 0x50f60fff, REGISTRY_AFRINIC }, // 80.246.0.0 - 80.246.15.255 { 0x50f61000, 0x50f7ffff, REGISTRY_RIPENCC }, // 80.246.16.0 - 80.247.255.255 { 0x50f80000, 0x50f80fff, REGISTRY_AFRINIC }, // 80.248.0.0 - 80.248.15.255 { 0x50f81000, 0x50f83fff, REGISTRY_RIPENCC }, // 80.248.16.0 - 80.248.63.255 { 0x50f84000, 0x50f84fff, REGISTRY_AFRINIC }, // 80.248.64.0 - 80.248.79.255 { 0x50f85000, 0x50f93fff, REGISTRY_RIPENCC }, // 80.248.80.0 - 80.249.63.255 { 0x50f94000, 0x50f94fff, REGISTRY_AFRINIC }, // 80.249.64.0 - 80.249.79.255 { 0x50f95000, 0x50f96fff, REGISTRY_RIPENCC }, // 80.249.80.0 - 80.249.111.255 { 0x50f98000, 0x50fa1fff, REGISTRY_RIPENCC }, // 80.249.128.0 - 80.250.31.255 { 0x50fa2000, 0x50fa2fff, REGISTRY_AFRINIC }, // 80.250.32.0 - 80.250.47.255 { 0x50fa3000, 0x50fedfff, REGISTRY_RIPENCC }, // 80.250.48.0 - 80.254.223.255 { 0x50fef000, 0x5103ffff, REGISTRY_RIPENCC }, // 80.254.240.0 - 81.3.255.255 { 0x51040000, 0x51043fff, REGISTRY_AFRINIC }, // 81.4.0.0 - 81.4.63.255 { 0x51044000, 0x5109ffff, REGISTRY_RIPENCC }, // 81.4.64.0 - 81.9.255.255 { 0x510a0000, 0x510a7fff, REGISTRY_AFRINIC }, // 81.10.0.0 - 81.10.127.255 { 0x510a8000, 0x510affff, REGISTRY_RIPENCC }, // 81.10.128.0 - 81.10.255.255 { 0x510b0000, 0x510b7fff, REGISTRY_RIPENCC }, // 81.11.0.0 - 81.11.127.255 { 0x510b8000, 0x51100fff, REGISTRY_RIPENCC }, // 81.11.128.0 - 81.16.15.255 { 0x51102000, 0x51107fff, REGISTRY_RIPENCC }, // 81.16.32.0 - 81.16.127.255 { 0x51109000, 0x5114dfff, REGISTRY_RIPENCC }, // 81.16.144.0 - 81.20.223.255 { 0x5114e000, 0x5114ffff, REGISTRY_RIPENCC }, // 81.20.224.0 - 81.20.255.255 { 0x51150000, 0x51155fff, REGISTRY_RIPENCC }, // 81.21.0.0 - 81.21.95.255 { 0x51156000, 0x51156fff, REGISTRY_AFRINIC }, // 81.21.96.0 - 81.21.111.255 { 0x51157000, 0x51163fff, REGISTRY_RIPENCC }, // 81.21.112.0 - 81.22.63.255 { 0x51166000, 0x51193fff, REGISTRY_RIPENCC }, // 81.22.96.0 - 81.25.63.255 { 0x51195000, 0x511a3fff, REGISTRY_RIPENCC }, // 81.25.80.0 - 81.26.63.255 { 0x511a4000, 0x511a4fff, REGISTRY_AFRINIC }, // 81.26.64.0 - 81.26.79.255 { 0x511a5000, 0x511cefff, REGISTRY_RIPENCC }, // 81.26.80.0 - 81.28.239.255 { 0x511d0000, 0x511d5fff, REGISTRY_RIPENCC }, // 81.29.0.0 - 81.29.95.255 { 0x511d6000, 0x511d6fff, REGISTRY_AFRINIC }, // 81.29.96.0 - 81.29.111.255 { 0x511d7000, 0x511fbfff, REGISTRY_RIPENCC }, // 81.29.112.0 - 81.31.191.255 { 0x511fd000, 0x5157ffff, REGISTRY_RIPENCC }, // 81.31.208.0 - 81.87.255.255 { 0x51580000, 0x51580fff, REGISTRY_RIPENCC }, // 81.88.0.0 - 81.88.15.255 { 0x51581000, 0x515aafff, REGISTRY_RIPENCC }, // 81.88.16.0 - 81.90.175.255 { 0x515ac000, 0x515bdfff, REGISTRY_RIPENCC }, // 81.90.192.0 - 81.91.223.255 { 0x515be000, 0x515befff, REGISTRY_AFRINIC }, // 81.91.224.0 - 81.91.239.255 { 0x515bf000, 0x519fffff, REGISTRY_RIPENCC }, // 81.91.240.0 - 81.159.255.255 { 0x51a00000, 0x51a0ffff, REGISTRY_RIPENCC }, // 81.160.0.0 - 81.160.255.255 { 0x51a10000, 0x51a10fff, REGISTRY_RIPENCC }, // 81.161.0.0 - 81.161.15.255 { 0x51a11000, 0x51a12fff, REGISTRY_RIPENCC }, // 81.161.16.0 - 81.161.47.255 { 0x51a13000, 0x51a137ff, REGISTRY_RIPENCC }, // 81.161.48.0 - 81.161.55.255 { 0x51a13800, 0x51a1bfff, REGISTRY_RIPENCC }, // 81.161.56.0 - 81.161.191.255 { 0x51a1c000, 0x51a1cfff, REGISTRY_RIPENCC }, // 81.161.192.0 - 81.161.207.255 { 0x51a1d000, 0x51a1dfff, REGISTRY_RIPENCC }, // 81.161.208.0 - 81.161.223.255 { 0x51a1f000, 0x51a33fff, REGISTRY_RIPENCC }, // 81.161.240.0 - 81.163.63.255 { 0x51a34000, 0x51a347ff, REGISTRY_RIPENCC }, // 81.163.64.0 - 81.163.71.255 { 0x51a34800, 0x51a3bfff, REGISTRY_RIPENCC }, // 81.163.72.0 - 81.163.191.255 { 0x51a3c800, 0x51a3ffff, REGISTRY_RIPENCC }, // 81.163.200.0 - 81.163.255.255 { 0x51a40000, 0x51b9ffff, REGISTRY_RIPENCC }, // 81.164.0.0 - 81.185.255.255 { 0x51ba0000, 0x51baffff, REGISTRY_RIPENCC }, // 81.186.0.0 - 81.186.255.255 { 0x51bb0000, 0x51bfffff, REGISTRY_RIPENCC }, // 81.187.0.0 - 81.191.255.255 { 0x51c00000, 0x51c0ffff, REGISTRY_AFRINIC }, // 81.192.0.0 - 81.192.255.255 { 0x51c10000, 0x52657fff, REGISTRY_RIPENCC }, // 81.193.0.0 - 82.101.127.255 { 0x52658000, 0x5265bfff, REGISTRY_AFRINIC }, // 82.101.128.0 - 82.101.191.255 { 0x5265c000, 0x5273bfff, REGISTRY_RIPENCC }, // 82.101.192.0 - 82.115.191.255 { 0x5273c000, 0x5273cfff, REGISTRY_RIPENCC }, // 82.115.192.0 - 82.115.207.255 { 0x5273e000, 0x527fffff, REGISTRY_RIPENCC }, // 82.115.224.0 - 82.127.255.255 { 0x52800000, 0x52807fff, REGISTRY_AFRINIC }, // 82.128.0.0 - 82.128.127.255 { 0x52808000, 0x52817fff, REGISTRY_RIPENCC }, // 82.128.128.0 - 82.129.127.255 { 0x52818000, 0x5281ffff, REGISTRY_AFRINIC }, // 82.129.128.0 - 82.129.255.255 { 0x52820000, 0x52827fff, REGISTRY_RIPENCC }, // 82.130.0.0 - 82.130.127.255 { 0x52828000, 0x52973fff, REGISTRY_RIPENCC }, // 82.130.128.0 - 82.151.63.255 { 0x52974000, 0x52975fff, REGISTRY_AFRINIC }, // 82.151.64.0 - 82.151.95.255 { 0x52976000, 0x52c97fff, REGISTRY_RIPENCC }, // 82.151.96.0 - 82.201.127.255 { 0x52c98000, 0x52c9ffff, REGISTRY_AFRINIC }, // 82.201.128.0 - 82.201.255.255 { 0x52ca0000, 0x52d3bfff, REGISTRY_RIPENCC }, // 82.202.0.0 - 82.211.191.255 { 0x52d3c000, 0x52d3ffff, REGISTRY_RIPENCC }, // 82.211.192.0 - 82.211.255.255 { 0x52d40000, 0x5360ffff, REGISTRY_RIPENCC }, // 82.212.0.0 - 83.96.255.255 { 0x53610000, 0x53610fff, REGISTRY_RIPENCC }, // 83.97.0.0 - 83.97.15.255 { 0x53611800, 0x53616fff, REGISTRY_RIPENCC }, // 83.97.24.0 - 83.97.111.255 { 0x53617800, 0x53617fff, REGISTRY_RIPENCC }, // 83.97.120.0 - 83.97.127.255 { 0x53618000, 0x53882fff, REGISTRY_RIPENCC }, // 83.97.128.0 - 83.136.47.255 { 0x53883800, 0x53888fff, REGISTRY_RIPENCC }, // 83.136.56.0 - 83.136.143.255 { 0x53889800, 0x5388d7ff, REGISTRY_RIPENCC }, // 83.136.152.0 - 83.136.215.255 { 0x5388e000, 0x538dffff, REGISTRY_RIPENCC }, // 83.136.224.0 - 83.141.255.255 { 0x538e0000, 0x538e17ff, REGISTRY_RIPENCC }, // 83.142.0.0 - 83.142.23.255 { 0x538e1800, 0x538e1fff, REGISTRY_RIPENCC }, // 83.142.24.0 - 83.142.31.255 { 0x538e2000, 0x538e2fff, REGISTRY_RIPENCC }, // 83.142.32.0 - 83.142.47.255 { 0x538e3800, 0x538e3fff, REGISTRY_RIPENCC }, // 83.142.56.0 - 83.142.63.255 { 0x538e4000, 0x538ea7ff, REGISTRY_RIPENCC }, // 83.142.64.0 - 83.142.167.255 { 0x538ea800, 0x538eafff, REGISTRY_RIPENCC }, // 83.142.168.0 - 83.142.175.255 { 0x538eb000, 0x538f17ff, REGISTRY_RIPENCC }, // 83.142.176.0 - 83.143.23.255 { 0x538f1800, 0x538f1fff, REGISTRY_AFRINIC }, // 83.143.24.0 - 83.143.31.255 { 0x538f2000, 0x538f2fff, REGISTRY_RIPENCC }, // 83.143.32.0 - 83.143.47.255 { 0x538f3000, 0x538f37ff, REGISTRY_RIPENCC }, // 83.143.48.0 - 83.143.55.255 { 0x538f3800, 0x538f47ff, REGISTRY_RIPENCC }, // 83.143.56.0 - 83.143.71.255 { 0x538f5000, 0x538f67ff, REGISTRY_RIPENCC }, // 83.143.80.0 - 83.143.103.255 { 0x538f7800, 0x538fefff, REGISTRY_RIPENCC }, // 83.143.120.0 - 83.143.239.255 { 0x538ff000, 0x538ff7ff, REGISTRY_RIPENCC }, // 83.143.240.0 - 83.143.247.255 { 0x538ff800, 0x538fffff, REGISTRY_RIPENCC }, // 83.143.248.0 - 83.143.255.255 { 0x53900000, 0x5396bfff, REGISTRY_RIPENCC }, // 83.144.0.0 - 83.150.191.255 { 0x53970000, 0x53973fff, REGISTRY_RIPENCC }, // 83.151.0.0 - 83.151.63.255 { 0x53974000, 0x53abbfff, REGISTRY_RIPENCC }, // 83.151.64.0 - 83.171.191.255 { 0x53ac0000, 0x53af7fff, REGISTRY_RIPENCC }, // 83.172.0.0 - 83.175.127.255 { 0x53af8000, 0x53afbfff, REGISTRY_RIPENCC }, // 83.175.128.0 - 83.175.191.255 { 0x53afc000, 0x53db5fff, REGISTRY_RIPENCC }, // 83.175.192.0 - 83.219.95.255 { 0x53db6800, 0x53f1ffff, REGISTRY_RIPENCC }, // 83.219.104.0 - 83.241.255.255 { 0x53f20000, 0x53f22fff, REGISTRY_RIPENCC }, // 83.242.0.0 - 83.242.47.255 { 0x53f23000, 0x53f23fff, REGISTRY_RIPENCC }, // 83.242.48.0 - 83.242.63.255 { 0x53f24000, 0x53f27fff, REGISTRY_RIPENCC }, // 83.242.64.0 - 83.242.127.255 { 0x53f28000, 0x53f2ffff, REGISTRY_RIPENCC }, // 83.242.128.0 - 83.242.255.255 { 0x53f30000, 0x53f327ff, REGISTRY_RIPENCC }, // 83.243.0.0 - 83.243.39.255 { 0x53f32800, 0x53f32fff, REGISTRY_RIPENCC }, // 83.243.40.0 - 83.243.47.255 { 0x53f33000, 0x53f337ff, REGISTRY_RIPENCC }, // 83.243.48.0 - 83.243.55.255 { 0x53f33800, 0x53f33fff, REGISTRY_RIPENCC }, // 83.243.56.0 - 83.243.63.255 { 0x53f34000, 0x53f34fff, REGISTRY_RIPENCC }, // 83.243.64.0 - 83.243.79.255 { 0x53f35000, 0x53f357ff, REGISTRY_RIPENCC }, // 83.243.80.0 - 83.243.87.255 { 0x53f35800, 0x53f377ff, REGISTRY_RIPENCC }, // 83.243.88.0 - 83.243.119.255 { 0x53f38000, 0x54159fff, REGISTRY_RIPENCC }, // 83.243.128.0 - 84.21.159.255 { 0x5415c000, 0x5423ffff, REGISTRY_RIPENCC }, // 84.21.192.0 - 84.35.255.255 { 0x54240000, 0x5424ffff, REGISTRY_AFRINIC }, // 84.36.0.0 - 84.36.255.255 { 0x54250000, 0x5425ffff, REGISTRY_RIPENCC }, // 84.37.0.0 - 84.37.255.255 { 0x54260000, 0x54261fff, REGISTRY_RIPENCC }, // 84.38.0.0 - 84.38.31.255 { 0x54262000, 0x54262fff, REGISTRY_RIPENCC }, // 84.38.32.0 - 84.38.47.255 { 0x54263000, 0x54265fff, REGISTRY_RIPENCC }, // 84.38.48.0 - 84.38.95.255 { 0x54266000, 0x54266fff, REGISTRY_RIPENCC }, // 84.38.96.0 - 84.38.111.255 { 0x54267000, 0x54267fff, REGISTRY_RIPENCC }, // 84.38.112.0 - 84.38.127.255 { 0x54268000, 0x542683ff, REGISTRY_RIPENCC }, // 84.38.128.0 - 84.38.131.255 { 0x54268400, 0x54268fff, REGISTRY_RIPENCC }, // 84.38.132.0 - 84.38.143.255 { 0x54269000, 0x54269fff, REGISTRY_RIPENCC }, // 84.38.144.0 - 84.38.159.255 { 0x5426a000, 0x5426ffff, REGISTRY_RIPENCC }, // 84.38.160.0 - 84.38.255.255 { 0x54270000, 0x5427bfff, REGISTRY_RIPENCC }, // 84.39.0.0 - 84.39.191.255 { 0x5427d000, 0x54333fff, REGISTRY_RIPENCC }, // 84.39.208.0 - 84.51.63.255 { 0x54334000, 0x54337fff, REGISTRY_RIPENCC }, // 84.51.64.0 - 84.51.127.255 { 0x54338000, 0x5435ffff, REGISTRY_RIPENCC }, // 84.51.128.0 - 84.53.255.255 { 0x54364000, 0x54c9bfff, REGISTRY_RIPENCC }, // 84.54.64.0 - 84.201.191.255 { 0x54c9c000, 0x54c9efff, REGISTRY_RIPENCC }, // 84.201.192.0 - 84.201.239.255 { 0x54c9f000, 0x54ccffff, REGISTRY_RIPENCC }, // 84.201.240.0 - 84.204.255.255 { 0x54cd0000, 0x54cd5fff, REGISTRY_RIPENCC }, // 84.205.0.0 - 84.205.95.255 { 0x54cd6000, 0x54cd7fff, REGISTRY_AFRINIC }, // 84.205.96.0 - 84.205.127.255 { 0x54cd8000, 0x54cdffff, REGISTRY_RIPENCC }, // 84.205.128.0 - 84.205.255.255 { 0x54ce0000, 0x54e8ffff, REGISTRY_RIPENCC }, // 84.206.0.0 - 84.232.255.255 { 0x54e90000, 0x54e97fff, REGISTRY_AFRINIC }, // 84.233.0.0 - 84.233.127.255 { 0x54e98000, 0x54ea0fff, REGISTRY_RIPENCC }, // 84.233.128.0 - 84.234.15.255 { 0x54ea1000, 0x54ea1fff, REGISTRY_RIPENCC }, // 84.234.16.0 - 84.234.31.255 { 0x54ea2000, 0x54ea2fff, REGISTRY_RIPENCC }, // 84.234.32.0 - 84.234.47.255 { 0x54ea3000, 0x54ea7fff, REGISTRY_RIPENCC }, // 84.234.48.0 - 84.234.127.255 { 0x54ea8000, 0x54fc3fff, REGISTRY_RIPENCC }, // 84.234.128.0 - 84.252.63.255 { 0x54fc8000, 0x55087fff, REGISTRY_RIPENCC }, // 84.252.128.0 - 85.8.127.255 { 0x5508c000, 0x551f1fff, REGISTRY_RIPENCC }, // 85.8.192.0 - 85.31.31.255 { 0x551f4000, 0x551fa7ff, REGISTRY_RIPENCC }, // 85.31.64.0 - 85.31.167.255 { 0x551fb000, 0x551fdfff, REGISTRY_RIPENCC }, // 85.31.176.0 - 85.31.223.255 { 0x551fe000, 0x551fefff, REGISTRY_RIPENCC }, // 85.31.224.0 - 85.31.239.255 { 0x551ff000, 0x555c5fff, REGISTRY_RIPENCC }, // 85.31.240.0 - 85.92.95.255 { 0x555c8000, 0x5573bfff, REGISTRY_RIPENCC }, // 85.92.128.0 - 85.115.191.255 { 0x5573e000, 0x5575dfff, REGISTRY_RIPENCC }, // 85.115.224.0 - 85.117.223.255 { 0x55760000, 0x559e07ff, REGISTRY_RIPENCC }, // 85.118.0.0 - 85.158.7.255 { 0x559e1000, 0x55bbffff, REGISTRY_RIPENCC }, // 85.158.16.0 - 85.187.255.255 { 0x55bc0000, 0x55bcbfff, REGISTRY_RIPENCC }, // 85.188.0.0 - 85.188.191.255 { 0x55bcc000, 0x55c9ffff, REGISTRY_RIPENCC }, // 85.188.192.0 - 85.201.255.255 { 0x55ca0000, 0x55ca2fff, REGISTRY_RIPENCC }, // 85.202.0.0 - 85.202.47.255 { 0x55ca3000, 0x55ca3fff, REGISTRY_RIPENCC }, // 85.202.48.0 - 85.202.63.255 { 0x55ca4000, 0x55ca4fff, REGISTRY_RIPENCC }, // 85.202.64.0 - 85.202.79.255 { 0x55ca6000, 0x55ca8fff, REGISTRY_RIPENCC }, // 85.202.96.0 - 85.202.143.255 { 0x55ca9000, 0x55ca9fff, REGISTRY_RIPENCC }, // 85.202.144.0 - 85.202.159.255 { 0x55cab000, 0x55cabfff, REGISTRY_RIPENCC }, // 85.202.176.0 - 85.202.191.255 { 0x55cad000, 0x55cadfff, REGISTRY_RIPENCC }, // 85.202.208.0 - 85.202.223.255 { 0x55cae000, 0x55caffff, REGISTRY_RIPENCC }, // 85.202.224.0 - 85.202.255.255 { 0x55cb0000, 0x55eb3fff, REGISTRY_RIPENCC }, // 85.203.0.0 - 85.235.63.255 { 0x55eb6000, 0x55feffff, REGISTRY_RIPENCC }, // 85.235.96.0 - 85.254.255.255 { 0x55ff0000, 0x55ff4fff, REGISTRY_RIPENCC }, // 85.255.0.0 - 85.255.79.255 { 0x55ff6000, 0x55ff6fff, REGISTRY_RIPENCC }, // 85.255.96.0 - 85.255.111.255 { 0x55ff7000, 0x55ff7fff, REGISTRY_RIPENCC }, // 85.255.112.0 - 85.255.127.255 { 0x55ff8000, 0x55ffafff, REGISTRY_RIPENCC }, // 85.255.128.0 - 85.255.175.255 { 0x55ffb000, 0x55ffb7ff, REGISTRY_RIPENCC }, // 85.255.176.0 - 85.255.183.255 { 0x55ffb800, 0x55ffffff, REGISTRY_RIPENCC }, // 85.255.184.0 - 85.255.255.255 { 0x56000000, 0x563dffff, REGISTRY_RIPENCC }, // 86.0.0.0 - 86.61.255.255 { 0x563e4000, 0x566f3fff, REGISTRY_RIPENCC }, // 86.62.64.0 - 86.111.63.255 { 0x566f4000, 0x566f7fff, REGISTRY_RIPENCC }, // 86.111.64.0 - 86.111.127.255 { 0x566f8000, 0x566fbfff, REGISTRY_RIPENCC }, // 86.111.128.0 - 86.111.191.255 { 0x566fc000, 0x566fcfff, REGISTRY_RIPENCC }, // 86.111.192.0 - 86.111.207.255 { 0x566fd800, 0x566fffff, REGISTRY_RIPENCC }, // 86.111.216.0 - 86.111.255.255 { 0x56700000, 0x574bffff, REGISTRY_RIPENCC }, // 86.112.0.0 - 87.75.255.255 { 0x574c0000, 0x574dffff, REGISTRY_RIPENCC }, // 87.76.0.0 - 87.77.255.255 { 0x574e0000, 0x57633fff, REGISTRY_RIPENCC }, // 87.78.0.0 - 87.99.63.255 { 0x57634000, 0x57637fff, REGISTRY_RIPENCC }, // 87.99.64.0 - 87.99.127.255 { 0x57638000, 0x5764ffff, REGISTRY_RIPENCC }, // 87.99.128.0 - 87.100.255.255 { 0x57650000, 0x57652fff, REGISTRY_RIPENCC }, // 87.101.0.0 - 87.101.47.255 { 0x57653000, 0x57653fff, REGISTRY_RIPENCC }, // 87.101.48.0 - 87.101.63.255 { 0x57654000, 0x57654fff, REGISTRY_RIPENCC }, // 87.101.64.0 - 87.101.79.255 { 0x57656000, 0x57657fff, REGISTRY_RIPENCC }, // 87.101.96.0 - 87.101.127.255 { 0x57658000, 0x57ed9fff, REGISTRY_RIPENCC }, // 87.101.128.0 - 87.237.159.255 { 0x57eda800, 0x57eeffff, REGISTRY_RIPENCC }, // 87.237.168.0 - 87.238.255.255 { 0x57ef0000, 0x57ef2fff, REGISTRY_RIPENCC }, // 87.239.0.0 - 87.239.47.255 { 0x57ef3800, 0x57ef47ff, REGISTRY_RIPENCC }, // 87.239.56.0 - 87.239.71.255 { 0x57ef4800, 0x57ef4fff, REGISTRY_RIPENCC }, // 87.239.72.0 - 87.239.79.255 { 0x57ef5000, 0x57efc7ff, REGISTRY_RIPENCC }, // 87.239.80.0 - 87.239.199.255 { 0x57efc800, 0x57efcfff, REGISTRY_RIPENCC }, // 87.239.200.0 - 87.239.207.255 { 0x57efd000, 0x57eff7ff, REGISTRY_RIPENCC }, // 87.239.208.0 - 87.239.247.255 { 0x57eff800, 0x57ff5fff, REGISTRY_RIPENCC }, // 87.239.248.0 - 87.255.95.255 { 0x57ff6000, 0x57ff7fff, REGISTRY_AFRINIC }, // 87.255.96.0 - 87.255.127.255 { 0x57ff8000, 0x5886ffff, REGISTRY_RIPENCC }, // 87.255.128.0 - 88.134.255.255 { 0x58870000, 0x58873fff, REGISTRY_RIPENCC }, // 88.135.0.0 - 88.135.63.255 { 0x58875000, 0x5887ffff, REGISTRY_RIPENCC }, // 88.135.80.0 - 88.135.255.255 { 0x58880000, 0x58c4ffff, REGISTRY_RIPENCC }, // 88.136.0.0 - 88.196.255.255 { 0x58c50000, 0x58c5ffff, REGISTRY_RIPENCC }, // 88.197.0.0 - 88.197.255.255 { 0x58c60000, 0x58d9ffff, REGISTRY_RIPENCC }, // 88.198.0.0 - 88.217.255.255 { 0x58db0000, 0x59131fff, REGISTRY_RIPENCC }, // 88.219.0.0 - 89.19.31.255 { 0x59134000, 0x5915ffff, REGISTRY_RIPENCC }, // 89.19.64.0 - 89.21.255.255 { 0x59160000, 0x59165fff, REGISTRY_RIPENCC }, // 89.22.0.0 - 89.22.95.255 { 0x59166000, 0x59167fff, REGISTRY_RIPENCC }, // 89.22.96.0 - 89.22.127.255 { 0x59168000, 0x5916dfff, REGISTRY_RIPENCC }, // 89.22.128.0 - 89.22.223.255 { 0x5916e000, 0x5916efff, REGISTRY_RIPENCC }, // 89.22.224.0 - 89.22.239.255 { 0x5916f000, 0x5917ffff, REGISTRY_RIPENCC }, // 89.22.240.0 - 89.23.255.255 { 0x59180000, 0x591f17ff, REGISTRY_RIPENCC }, // 89.24.0.0 - 89.31.23.255 { 0x591f2000, 0x591f77ff, REGISTRY_RIPENCC }, // 89.31.32.0 - 89.31.119.255 { 0x591f8000, 0x596b17ff, REGISTRY_RIPENCC }, // 89.31.128.0 - 89.107.23.255 { 0x596b2000, 0x59be7fff, REGISTRY_RIPENCC }, // 89.107.32.0 - 89.190.127.255 { 0x59bea000, 0x59c88fff, REGISTRY_RIPENCC }, // 89.190.160.0 - 89.200.143.255 { 0x59c89000, 0x59c897ff, REGISTRY_RIPENCC }, // 89.200.144.0 - 89.200.151.255 { 0x59c89800, 0x59c89fff, REGISTRY_RIPENCC }, // 89.200.152.0 - 89.200.159.255 { 0x59c8a000, 0x59c8a7ff, REGISTRY_RIPENCC }, // 89.200.160.0 - 89.200.167.255 { 0x59c8a800, 0x59c8afff, REGISTRY_RIPENCC }, // 89.200.168.0 - 89.200.175.255 { 0x59c8b000, 0x59c8ffff, REGISTRY_RIPENCC }, // 89.200.176.0 - 89.200.255.255 { 0x59c90000, 0x59cdffff, REGISTRY_RIPENCC }, // 89.201.0.0 - 89.205.255.255 { 0x59ce0000, 0x59ce7fff, REGISTRY_RIPENCC }, // 89.206.0.0 - 89.206.127.255 { 0x59ce8000, 0x59cf07ff, REGISTRY_RIPENCC }, // 89.206.128.0 - 89.207.7.255 { 0x59cf1000, 0x59cfafff, REGISTRY_RIPENCC }, // 89.207.16.0 - 89.207.175.255 { 0x59cfb800, 0x59ef2fff, REGISTRY_RIPENCC }, // 89.207.184.0 - 89.239.47.255 { 0x59ef3000, 0x59ef3fff, REGISTRY_ARIN }, // 89.239.48.0 - 89.239.63.255 { 0x59ef4000, 0x5b59ffff, REGISTRY_RIPENCC }, // 89.239.64.0 - 91.89.255.255 { 0x5b5a0000, 0x5b5a27ff, REGISTRY_RIPENCC }, // 91.90.0.0 - 91.90.39.255 { 0x5b5a2800, 0x5b5a2fff, REGISTRY_RIPENCC }, // 91.90.40.0 - 91.90.47.255 { 0x5b5a3000, 0x5b5a4fff, REGISTRY_RIPENCC }, // 91.90.48.0 - 91.90.79.255 { 0x5b5a5800, 0x5b5adfff, REGISTRY_RIPENCC }, // 91.90.88.0 - 91.90.223.255 { 0x5b5ae000, 0x5b6707ff, REGISTRY_RIPENCC }, // 91.90.224.0 - 91.103.7.255 { 0x5b671000, 0x5b678fff, REGISTRY_RIPENCC }, // 91.103.16.0 - 91.103.143.255 { 0x5b679800, 0x5b6ad7ff, REGISTRY_RIPENCC }, // 91.103.152.0 - 91.106.215.255 { 0x5b6ae000, 0x5b7affff, REGISTRY_RIPENCC }, // 91.106.224.0 - 91.122.255.255 { 0x5b7b0000, 0x5b7bffff, REGISTRY_RIPENCC }, // 91.123.0.0 - 91.123.255.255 { 0x5b7c0000, 0x5b83ffff, REGISTRY_RIPENCC }, // 91.124.0.0 - 91.131.255.255 { 0x5b850000, 0x5b8e7fff, REGISTRY_RIPENCC }, // 91.133.0.0 - 91.142.127.255 { 0x5b8e8000, 0x5b8e84ff, REGISTRY_RIPENCC }, // 91.142.128.0 - 91.142.132.255 { 0x5b8e8600, 0x5b8e8bff, REGISTRY_RIPENCC }, // 91.142.134.0 - 91.142.139.255 { 0x5b8e8d00, 0x5b8e8fff, REGISTRY_RIPENCC }, // 91.142.141.0 - 91.142.143.255 { 0x5b8e9000, 0x5b96bfff, REGISTRY_RIPENCC }, // 91.142.144.0 - 91.150.191.255 { 0x5b96c000, 0x5b96ffff, REGISTRY_RIPENCC }, // 91.150.192.0 - 91.150.255.255 { 0x5b970000, 0x5bbcbfff, REGISTRY_RIPENCC }, // 91.151.0.0 - 91.188.191.255 { 0x5bbd0000, 0x5bbdb7ff, REGISTRY_RIPENCC }, // 91.189.0.0 - 91.189.183.255 { 0x5bbdc000, 0x5bbdcfff, REGISTRY_RIPENCC }, // 91.189.192.0 - 91.189.207.255 { 0x5bbdd800, 0x5bbde7ff, REGISTRY_RIPENCC }, // 91.189.216.0 - 91.189.231.255 { 0x5bbde800, 0x5bbdffff, REGISTRY_RIPENCC }, // 91.189.232.0 - 91.189.255.255 { 0x5bbe0000, 0x5bbfffff, REGISTRY_RIPENCC }, // 91.190.0.0 - 91.191.255.255 { 0x5bc00000, 0x5bc003ff, REGISTRY_RIPENCC }, // 91.192.0.0 - 91.192.3.255 { 0x5bc00c00, 0x5bc017ff, REGISTRY_RIPENCC }, // 91.192.12.0 - 91.192.23.255 { 0x5bc01c00, 0x5bc04fff, REGISTRY_RIPENCC }, // 91.192.28.0 - 91.192.79.255 { 0x5bc05000, 0x5bc053ff, REGISTRY_RIPENCC }, // 91.192.80.0 - 91.192.83.255 { 0x5bc05400, 0x5bc069ff, REGISTRY_RIPENCC }, // 91.192.84.0 - 91.192.105.255 { 0x5bc06c00, 0x5bc06fff, REGISTRY_RIPENCC }, // 91.192.108.0 - 91.192.111.255 { 0x5bc07000, 0x5bc0afff, REGISTRY_RIPENCC }, // 91.192.112.0 - 91.192.175.255 { 0x5bc0b400, 0x5bc0c9ff, REGISTRY_RIPENCC }, // 91.192.180.0 - 91.192.201.255 { 0x5bc0ca00, 0x5bc0cbff, REGISTRY_RIPENCC }, // 91.192.202.0 - 91.192.203.255 { 0x5bc0cc00, 0x5bc103ff, REGISTRY_RIPENCC }, // 91.192.204.0 - 91.193.3.255 { 0x5bc10800, 0x5bc10fff, REGISTRY_RIPENCC }, // 91.193.8.0 - 91.193.15.255 { 0x5bc11400, 0x5bc11bff, REGISTRY_RIPENCC }, // 91.193.20.0 - 91.193.27.255 { 0x5bc11c00, 0x5bc11fff, REGISTRY_RIPENCC }, // 91.193.28.0 - 91.193.31.255 { 0x5bc12000, 0x5bc13bff, REGISTRY_RIPENCC }, // 91.193.32.0 - 91.193.59.255 { 0x5bc14000, 0x5bc149ff, REGISTRY_RIPENCC }, // 91.193.64.0 - 91.193.73.255 { 0x5bc14b00, 0x5bc163ff, REGISTRY_RIPENCC }, // 91.193.75.0 - 91.193.99.255 { 0x5bc16800, 0x5bc16fff, REGISTRY_RIPENCC }, // 91.193.104.0 - 91.193.111.255 { 0x5bc17800, 0x5bc197ff, REGISTRY_RIPENCC }, // 91.193.120.0 - 91.193.151.255 { 0x5bc19c00, 0x5bc1b3ff, REGISTRY_RIPENCC }, // 91.193.156.0 - 91.193.179.255 { 0x5bc1b800, 0x5bc1bfff, REGISTRY_RIPENCC }, // 91.193.184.0 - 91.193.191.255 { 0x5bc1c400, 0x5bc1f7ff, REGISTRY_RIPENCC }, // 91.193.196.0 - 91.193.247.255 { 0x5bc1fc00, 0x5bc1ffff, REGISTRY_RIPENCC }, // 91.193.252.0 - 91.193.255.255 { 0x5bc20200, 0x5bc207ff, REGISTRY_RIPENCC }, // 91.194.2.0 - 91.194.7.255 { 0x5bc20800, 0x5bc209ff, REGISTRY_RIPENCC }, // 91.194.8.0 - 91.194.9.255 { 0x5bc20a00, 0x5bc20dff, REGISTRY_RIPENCC }, // 91.194.10.0 - 91.194.13.255 { 0x5bc21000, 0x5bc217ff, REGISTRY_RIPENCC }, // 91.194.16.0 - 91.194.23.255 { 0x5bc21a00, 0x5bc233ff, REGISTRY_RIPENCC }, // 91.194.26.0 - 91.194.51.255 { 0x5bc23800, 0x5bc259ff, REGISTRY_RIPENCC }, // 91.194.56.0 - 91.194.89.255 { 0x5bc25a00, 0x5bc25bff, REGISTRY_RIPENCC }, // 91.194.90.0 - 91.194.91.255 { 0x5bc25c00, 0x5bc267ff, REGISTRY_RIPENCC }, // 91.194.92.0 - 91.194.103.255 { 0x5bc26a00, 0x5bc275ff, REGISTRY_RIPENCC }, // 91.194.106.0 - 91.194.117.255 { 0x5bc27800, 0x5bc27bff, REGISTRY_RIPENCC }, // 91.194.120.0 - 91.194.123.255 { 0x5bc27e00, 0x5bc28bff, REGISTRY_RIPENCC }, // 91.194.126.0 - 91.194.139.255 { 0x5bc28e00, 0x5bc295ff, REGISTRY_RIPENCC }, // 91.194.142.0 - 91.194.149.255 { 0x5bc29600, 0x5bc297ff, REGISTRY_RIPENCC }, // 91.194.150.0 - 91.194.151.255 { 0x5bc29800, 0x5bc2a3ff, REGISTRY_RIPENCC }, // 91.194.152.0 - 91.194.163.255 { 0x5bc2a400, 0x5bc2a5ff, REGISTRY_RIPENCC }, // 91.194.164.0 - 91.194.165.255 { 0x5bc2a800, 0x5bc2a9ff, REGISTRY_RIPENCC }, // 91.194.168.0 - 91.194.169.255 { 0x5bc2ac00, 0x5bc2b5ff, REGISTRY_RIPENCC }, // 91.194.172.0 - 91.194.181.255 { 0x5bc2b800, 0x5bc2bfff, REGISTRY_RIPENCC }, // 91.194.184.0 - 91.194.191.255 { 0x5bc2c400, 0x5bc2d5ff, REGISTRY_RIPENCC }, // 91.194.196.0 - 91.194.213.255 { 0x5bc2d800, 0x5bc2e9ff, REGISTRY_RIPENCC }, // 91.194.216.0 - 91.194.233.255 { 0x5bc2ea00, 0x5bc2eaff, REGISTRY_RIPENCC }, // 91.194.234.0 - 91.194.234.255 { 0x5bc2eb00, 0x5bc2efff, REGISTRY_RIPENCC }, // 91.194.235.0 - 91.194.239.255 { 0x5bc2f200, 0x5bc331ff, REGISTRY_RIPENCC }, // 91.194.242.0 - 91.195.49.255 { 0x5bc33400, 0x5bc33fff, REGISTRY_RIPENCC }, // 91.195.52.0 - 91.195.63.255 { 0x5bc34400, 0x5bc391ff, REGISTRY_RIPENCC }, // 91.195.68.0 - 91.195.145.255 { 0x5bc39200, 0x5bc393ff, REGISTRY_RIPENCC }, // 91.195.146.0 - 91.195.147.255 { 0x5bc39400, 0x5bc3adff, REGISTRY_RIPENCC }, // 91.195.148.0 - 91.195.173.255 { 0x5bc3b000, 0x5bc3d3ff, REGISTRY_RIPENCC }, // 91.195.176.0 - 91.195.211.255 { 0x5bc3d600, 0x5bc3ddff, REGISTRY_RIPENCC }, // 91.195.214.0 - 91.195.221.255 { 0x5bc3e000, 0x5bc403ff, REGISTRY_RIPENCC }, // 91.195.224.0 - 91.196.3.255 { 0x5bc40400, 0x5bc407ff, REGISTRY_RIPENCC }, // 91.196.4.0 - 91.196.7.255 { 0x5bc40800, 0x5bc40fff, REGISTRY_RIPENCC }, // 91.196.8.0 - 91.196.15.255 { 0x5bc41400, 0x5bc417ff, REGISTRY_RIPENCC }, // 91.196.20.0 - 91.196.23.255 { 0x5bc42000, 0x5bc427ff, REGISTRY_RIPENCC }, // 91.196.32.0 - 91.196.39.255 { 0x5bc42c00, 0x5bc43fff, REGISTRY_RIPENCC }, // 91.196.44.0 - 91.196.63.255 { 0x5bc44800, 0x5bc44bff, REGISTRY_RIPENCC }, // 91.196.72.0 - 91.196.75.255 { 0x5bc44c00, 0x5bc4b3ff, REGISTRY_RIPENCC }, // 91.196.76.0 - 91.196.179.255 { 0x5bc4b800, 0x5bc4c7ff, REGISTRY_RIPENCC }, // 91.196.184.0 - 91.196.199.255 { 0x5bc4cc00, 0x5bc4d7ff, REGISTRY_RIPENCC }, // 91.196.204.0 - 91.196.215.255 { 0x5bc4e000, 0x5bc4e7ff, REGISTRY_RIPENCC }, // 91.196.224.0 - 91.196.231.255 { 0x5bc4ec00, 0x5bc4ffff, REGISTRY_RIPENCC }, // 91.196.236.0 - 91.196.255.255 { 0x5bc50400, 0x5bc523ff, REGISTRY_RIPENCC }, // 91.197.4.0 - 91.197.35.255 { 0x5bc52c00, 0x5bc543ff, REGISTRY_RIPENCC }, // 91.197.44.0 - 91.197.67.255 { 0x5bc54800, 0x5bc577ff, REGISTRY_RIPENCC }, // 91.197.72.0 - 91.197.119.255 { 0x5bc57c00, 0x5bc5c3ff, REGISTRY_RIPENCC }, // 91.197.124.0 - 91.197.195.255 { 0x5bc5cc00, 0x5bc5efff, REGISTRY_RIPENCC }, // 91.197.204.0 - 91.197.239.255 { 0x5bc5f400, 0x5bc61bff, REGISTRY_RIPENCC }, // 91.197.244.0 - 91.198.27.255 { 0x5bc61d00, 0x5bc61fff, REGISTRY_RIPENCC }, // 91.198.29.0 - 91.198.31.255 { 0x5bc62000, 0x5bc620ff, REGISTRY_RIPENCC }, // 91.198.32.0 - 91.198.32.255 { 0x5bc62100, 0x5bc624ff, REGISTRY_RIPENCC }, // 91.198.33.0 - 91.198.36.255 { 0x5bc62600, 0x5bc628ff, REGISTRY_RIPENCC }, // 91.198.38.0 - 91.198.40.255 { 0x5bc62a00, 0x5bc62fff, REGISTRY_RIPENCC }, // 91.198.42.0 - 91.198.47.255 { 0x5bc63100, 0x5bc64cff, REGISTRY_RIPENCC }, // 91.198.49.0 - 91.198.76.255 { 0x5bc64e00, 0x5bc66bff, REGISTRY_RIPENCC }, // 91.198.78.0 - 91.198.107.255 { 0x5bc66e00, 0x5bc672ff, REGISTRY_RIPENCC }, // 91.198.110.0 - 91.198.114.255 { 0x5bc67400, 0x5bc67aff, REGISTRY_RIPENCC }, // 91.198.116.0 - 91.198.122.255 { 0x5bc67c00, 0x5bc684ff, REGISTRY_RIPENCC }, // 91.198.124.0 - 91.198.132.255 { 0x5bc68500, 0x5bc685ff, REGISTRY_RIPENCC }, // 91.198.133.0 - 91.198.133.255 { 0x5bc68600, 0x5bc68cff, REGISTRY_RIPENCC }, // 91.198.134.0 - 91.198.140.255 { 0x5bc68e00, 0x5bc692ff, REGISTRY_RIPENCC }, // 91.198.142.0 - 91.198.146.255 { 0x5bc69400, 0x5bc69dff, REGISTRY_RIPENCC }, // 91.198.148.0 - 91.198.157.255 { 0x5bc69f00, 0x5bc6a6ff, REGISTRY_RIPENCC }, // 91.198.159.0 - 91.198.166.255 { 0x5bc6a800, 0x5bc6a9ff, REGISTRY_RIPENCC }, // 91.198.168.0 - 91.198.169.255 { 0x5bc6ad00, 0x5bc6b8ff, REGISTRY_RIPENCC }, // 91.198.173.0 - 91.198.184.255 { 0x5bc6ba00, 0x5bc6bfff, REGISTRY_RIPENCC }, // 91.198.186.0 - 91.198.191.255 { 0x5bc6c100, 0x5bc6c3ff, REGISTRY_RIPENCC }, // 91.198.193.0 - 91.198.195.255 { 0x5bc6c500, 0x5bc6cfff, REGISTRY_RIPENCC }, // 91.198.197.0 - 91.198.207.255 { 0x5bc6d100, 0x5bc6d1ff, REGISTRY_RIPENCC }, // 91.198.209.0 - 91.198.209.255 { 0x5bc6d300, 0x5bc6d6ff, REGISTRY_RIPENCC }, // 91.198.211.0 - 91.198.214.255 { 0x5bc6d800, 0x5bc6d9ff, REGISTRY_RIPENCC }, // 91.198.216.0 - 91.198.217.255 { 0x5bc6db00, 0x5bc6dbff, REGISTRY_RIPENCC }, // 91.198.219.0 - 91.198.219.255 { 0x5bc6dd00, 0x5bc6e5ff, REGISTRY_RIPENCC }, // 91.198.221.0 - 91.198.229.255 { 0x5bc6e700, 0x5bc6f3ff, REGISTRY_RIPENCC }, // 91.198.231.0 - 91.198.243.255 { 0x5bc6f400, 0x5bc6f4ff, REGISTRY_RIPENCC }, // 91.198.244.0 - 91.198.244.255 { 0x5bc6f500, 0x5bc6fdff, REGISTRY_RIPENCC }, // 91.198.245.0 - 91.198.253.255 { 0x5bc6ff00, 0x5bc708ff, REGISTRY_RIPENCC }, // 91.198.255.0 - 91.199.8.255 { 0x5bc70a00, 0x5bc711ff, REGISTRY_RIPENCC }, // 91.199.10.0 - 91.199.17.255 { 0x5bc71300, 0x5bc71aff, REGISTRY_RIPENCC }, // 91.199.19.0 - 91.199.26.255 { 0x5bc71c00, 0x5bc71dff, REGISTRY_RIPENCC }, // 91.199.28.0 - 91.199.29.255 { 0x5bc71f00, 0x5bc71fff, REGISTRY_RIPENCC }, // 91.199.31.0 - 91.199.31.255 { 0x5bc72100, 0x5bc729ff, REGISTRY_RIPENCC }, // 91.199.33.0 - 91.199.41.255 { 0x5bc72b00, 0x5bc72bff, REGISTRY_RIPENCC }, // 91.199.43.0 - 91.199.43.255 { 0x5bc72d00, 0x5bc72eff, REGISTRY_RIPENCC }, // 91.199.45.0 - 91.199.46.255 { 0x5bc73000, 0x5bc750ff, REGISTRY_RIPENCC }, // 91.199.48.0 - 91.199.80.255 { 0x5bc75300, 0x5bc753ff, REGISTRY_RIPENCC }, // 91.199.83.0 - 91.199.83.255 { 0x5bc75500, 0x5bc756ff, REGISTRY_RIPENCC }, // 91.199.85.0 - 91.199.86.255 { 0x5bc75800, 0x5bc759ff, REGISTRY_RIPENCC }, // 91.199.88.0 - 91.199.89.255 { 0x5bc75b00, 0x5bc765ff, REGISTRY_RIPENCC }, // 91.199.91.0 - 91.199.101.255 { 0x5bc76700, 0x5bc76bff, REGISTRY_RIPENCC }, // 91.199.103.0 - 91.199.107.255 { 0x5bc76d00, 0x5bc77aff, REGISTRY_RIPENCC }, // 91.199.109.0 - 91.199.122.255 { 0x5bc77c00, 0x5bc792ff, REGISTRY_RIPENCC }, // 91.199.124.0 - 91.199.146.255 { 0x5bc79400, 0x5bc79fff, REGISTRY_RIPENCC }, // 91.199.148.0 - 91.199.159.255 { 0x5bc7a100, 0x5bc7a2ff, REGISTRY_RIPENCC }, // 91.199.161.0 - 91.199.162.255 { 0x5bc7a400, 0x5bc7a7ff, REGISTRY_RIPENCC }, // 91.199.164.0 - 91.199.167.255 { 0x5bc7a900, 0x5bc7abff, REGISTRY_RIPENCC }, // 91.199.169.0 - 91.199.171.255 { 0x5bc7ad00, 0x5bc7b2ff, REGISTRY_RIPENCC }, // 91.199.173.0 - 91.199.178.255 { 0x5bc7b400, 0x5bc7b5ff, REGISTRY_RIPENCC }, // 91.199.180.0 - 91.199.181.255 { 0x5bc7b700, 0x5bc7b7ff, REGISTRY_RIPENCC }, // 91.199.183.0 - 91.199.183.255 { 0x5bc7ba00, 0x5bc7c0ff, REGISTRY_RIPENCC }, // 91.199.186.0 - 91.199.192.255 { 0x5bc7c200, 0x5bc7d0ff, REGISTRY_RIPENCC }, // 91.199.194.0 - 91.199.208.255 { 0x5bc7d200, 0x5bc7d2ff, REGISTRY_RIPENCC }, // 91.199.210.0 - 91.199.210.255 { 0x5bc7d400, 0x5bc7f7ff, REGISTRY_RIPENCC }, // 91.199.212.0 - 91.199.247.255 { 0x5bc7f900, 0x5bc81fff, REGISTRY_RIPENCC }, // 91.199.249.0 - 91.200.31.255 { 0x5bc82000, 0x5bc823ff, REGISTRY_RIPENCC }, // 91.200.32.0 - 91.200.35.255 { 0x5bc82400, 0x5bc84fff, REGISTRY_RIPENCC }, // 91.200.36.0 - 91.200.79.255 { 0x5bc85000, 0x5bc853ff, REGISTRY_RIPENCC }, // 91.200.80.0 - 91.200.83.255 { 0x5bc85400, 0x5bc857ff, REGISTRY_RIPENCC }, // 91.200.84.0 - 91.200.87.255 { 0x5bc85c00, 0x5bc863ff, REGISTRY_RIPENCC }, // 91.200.92.0 - 91.200.99.255 { 0x5bc86800, 0x5bc86bff, REGISTRY_RIPENCC }, // 91.200.104.0 - 91.200.107.255 { 0x5bc86c00, 0x5bc86fff, REGISTRY_RIPENCC }, // 91.200.108.0 - 91.200.111.255 { 0x5bc87000, 0x5bc87fff, REGISTRY_RIPENCC }, // 91.200.112.0 - 91.200.127.255 { 0x5bc88000, 0x5bc887ff, REGISTRY_RIPENCC }, // 91.200.128.0 - 91.200.135.255 { 0x5bc88800, 0x5bc893ff, REGISTRY_RIPENCC }, // 91.200.136.0 - 91.200.147.255 { 0x5bc89800, 0x5bc8a7ff, REGISTRY_RIPENCC }, // 91.200.152.0 - 91.200.167.255 { 0x5bc8a800, 0x5bc8abff, REGISTRY_RIPENCC }, // 91.200.168.0 - 91.200.171.255 { 0x5bc8ac00, 0x5bc8afff, REGISTRY_RIPENCC }, // 91.200.172.0 - 91.200.175.255 { 0x5bc8b400, 0x5bc8bbff, REGISTRY_RIPENCC }, // 91.200.180.0 - 91.200.187.255 { 0x5bc8c000, 0x5bc8d3ff, REGISTRY_RIPENCC }, // 91.200.192.0 - 91.200.211.255 { 0x5bc8d400, 0x5bc8d7ff, REGISTRY_RIPENCC }, // 91.200.212.0 - 91.200.215.255 { 0x5bc8d800, 0x5bc8efff, REGISTRY_RIPENCC }, // 91.200.216.0 - 91.200.239.255 { 0x5bc8f800, 0x5bc903ff, REGISTRY_RIPENCC }, // 91.200.248.0 - 91.201.3.255 { 0x5bc90800, 0x5bc913ff, REGISTRY_RIPENCC }, // 91.201.8.0 - 91.201.19.255 { 0x5bc91400, 0x5bc917ff, REGISTRY_RIPENCC }, // 91.201.20.0 - 91.201.23.255 { 0x5bc91800, 0x5bc918ff, REGISTRY_RIPENCC }, // 91.201.24.0 - 91.201.24.255 { 0x5bc91900, 0x5bc919ff, REGISTRY_RIPENCC }, // 91.201.25.0 - 91.201.25.255 { 0x5bc91a00, 0x5bc91bff, REGISTRY_RIPENCC }, // 91.201.26.0 - 91.201.27.255 { 0x5bc92400, 0x5bc93fff, REGISTRY_RIPENCC }, // 91.201.36.0 - 91.201.63.255 { 0x5bc94400, 0x5bc95fff, REGISTRY_RIPENCC }, // 91.201.68.0 - 91.201.95.255 { 0x5bc96400, 0x5bc967ff, REGISTRY_RIPENCC }, // 91.201.100.0 - 91.201.103.255 { 0x5bc96c00, 0x5bc97bff, REGISTRY_RIPENCC }, // 91.201.108.0 - 91.201.123.255 { 0x5bc98000, 0x5bc98bff, REGISTRY_RIPENCC }, // 91.201.128.0 - 91.201.139.255 { 0x5bc99000, 0x5bc9c3ff, REGISTRY_RIPENCC }, // 91.201.144.0 - 91.201.195.255 { 0x5bc9c800, 0x5bc9d5ff, REGISTRY_RIPENCC }, // 91.201.200.0 - 91.201.213.255 { 0x5bc9d600, 0x5bc9d7ff, REGISTRY_RIPENCC }, // 91.201.214.0 - 91.201.215.255 { 0x5bc9d800, 0x5bca1bff, REGISTRY_RIPENCC }, // 91.201.216.0 - 91.202.27.255 { 0x5bca2400, 0x5bcaa7ff, REGISTRY_RIPENCC }, // 91.202.36.0 - 91.202.167.255 { 0x5bcaa800, 0x5bcaafff, REGISTRY_RIPENCC }, // 91.202.168.0 - 91.202.175.255 { 0x5bcab000, 0x5bcaf3ff, REGISTRY_RIPENCC }, // 91.202.176.0 - 91.202.243.255 { 0x5bcafc00, 0x5bcb07ff, REGISTRY_RIPENCC }, // 91.202.252.0 - 91.203.7.255 { 0x5bcb0800, 0x5bcb0bff, REGISTRY_RIPENCC }, // 91.203.8.0 - 91.203.11.255 { 0x5bcb0c00, 0x5bcb4bff, REGISTRY_RIPENCC }, // 91.203.12.0 - 91.203.75.255 { 0x5bcb5000, 0x5bcb5bff, REGISTRY_RIPENCC }, // 91.203.80.0 - 91.203.91.255 { 0x5bcb6000, 0x5bcb63ff, REGISTRY_RIPENCC }, // 91.203.96.0 - 91.203.99.255 { 0x5bcb6800, 0x5bcb7fff, REGISTRY_RIPENCC }, // 91.203.104.0 - 91.203.127.255 { 0x5bcb8000, 0x5bcb83ff, REGISTRY_RIPENCC }, // 91.203.128.0 - 91.203.131.255 { 0x5bcb8400, 0x5bcbc3ff, REGISTRY_RIPENCC }, // 91.203.132.0 - 91.203.195.255 { 0x5bcbc400, 0x5bcbc7ff, REGISTRY_RIPENCC }, // 91.203.196.0 - 91.203.199.255 { 0x5bcbc800, 0x5bcbd3ff, REGISTRY_RIPENCC }, // 91.203.200.0 - 91.203.211.255 { 0x5bcbd400, 0x5bcbd7ff, REGISTRY_RIPENCC }, // 91.203.212.0 - 91.203.215.255 { 0x5bcbd800, 0x5bcbe3ff, REGISTRY_RIPENCC }, // 91.203.216.0 - 91.203.227.255 { 0x5bcbe800, 0x5bcc0bff, REGISTRY_RIPENCC }, // 91.203.232.0 - 91.204.11.255 { 0x5bcc0c00, 0x5bcc17ff, REGISTRY_RIPENCC }, // 91.204.12.0 - 91.204.23.255 { 0x5bcc1800, 0x5bcc27ff, REGISTRY_RIPENCC }, // 91.204.24.0 - 91.204.39.255 { 0x5bcc3800, 0x5bcc9fff, REGISTRY_RIPENCC }, // 91.204.56.0 - 91.204.159.255 { 0x5bcca000, 0x5bcca2ff, REGISTRY_RIPENCC }, // 91.204.160.0 - 91.204.162.255 { 0x5bcca300, 0x5bcca7ff, REGISTRY_RIPENCC }, // 91.204.163.0 - 91.204.167.255 { 0x5bcca800, 0x5bccabff, REGISTRY_RIPENCC }, // 91.204.168.0 - 91.204.171.255 { 0x5bccac00, 0x5bccdbff, REGISTRY_RIPENCC }, // 91.204.172.0 - 91.204.219.255 { 0x5bcce400, 0x5bcd2bff, REGISTRY_RIPENCC }, // 91.204.228.0 - 91.205.43.255 { 0x5bcd2c00, 0x5bcd2fff, REGISTRY_RIPENCC }, // 91.205.44.0 - 91.205.47.255 { 0x5bcd3000, 0x5bcd5bff, REGISTRY_RIPENCC }, // 91.205.48.0 - 91.205.91.255 { 0x5bcd6000, 0x5bcd67ff, REGISTRY_RIPENCC }, // 91.205.96.0 - 91.205.103.255 { 0x5bcd7000, 0x5bcd73ff, REGISTRY_RIPENCC }, // 91.205.112.0 - 91.205.115.255 { 0x5bcd7400, 0x5bcd77ff, REGISTRY_RIPENCC }, // 91.205.116.0 - 91.205.119.255 { 0x5bcd7800, 0x5bcdabff, REGISTRY_RIPENCC }, // 91.205.120.0 - 91.205.171.255 { 0x5bcdac00, 0x5bcdafff, REGISTRY_RIPENCC }, // 91.205.172.0 - 91.205.175.255 { 0x5bcdb000, 0x5bcdb7ff, REGISTRY_RIPENCC }, // 91.205.176.0 - 91.205.183.255 { 0x5bcdb800, 0x5bcdbbff, REGISTRY_RIPENCC }, // 91.205.184.0 - 91.205.187.255 { 0x5bcdc000, 0x5bcdc3ff, REGISTRY_RIPENCC }, // 91.205.192.0 - 91.205.195.255 { 0x5bcdc800, 0x5bcde7ff, REGISTRY_RIPENCC }, // 91.205.200.0 - 91.205.231.255 { 0x5bcde800, 0x5bcdebff, REGISTRY_RIPENCC }, // 91.205.232.0 - 91.205.235.255 { 0x5bcdec00, 0x5bce25ff, REGISTRY_RIPENCC }, // 91.205.236.0 - 91.206.37.255 { 0x5bce2600, 0x5bce27ff, REGISTRY_RIPENCC }, // 91.206.38.0 - 91.206.39.255 { 0x5bce2800, 0x5bce3fff, REGISTRY_RIPENCC }, // 91.206.40.0 - 91.206.63.255 { 0x5bce4200, 0x5bce43ff, REGISTRY_RIPENCC }, // 91.206.66.0 - 91.206.67.255 { 0x5bce4600, 0x5bce5bff, REGISTRY_RIPENCC }, // 91.206.70.0 - 91.206.91.255 { 0x5bce5e00, 0x5bce8bff, REGISTRY_RIPENCC }, // 91.206.94.0 - 91.206.139.255 { 0x5bce8e00, 0x5bce8fff, REGISTRY_RIPENCC }, // 91.206.142.0 - 91.206.143.255 { 0x5bce9000, 0x5bce9bff, REGISTRY_RIPENCC }, // 91.206.144.0 - 91.206.155.255 { 0x5bce9c00, 0x5bce9dff, REGISTRY_RIPENCC }, // 91.206.156.0 - 91.206.157.255 { 0x5bce9e00, 0x5bceb5ff, REGISTRY_RIPENCC }, // 91.206.158.0 - 91.206.181.255 { 0x5bceb600, 0x5bceb7ff, REGISTRY_RIPENCC }, // 91.206.182.0 - 91.206.183.255 { 0x5bceb800, 0x5bceffff, REGISTRY_RIPENCC }, // 91.206.184.0 - 91.206.255.255 { 0x5bcf0200, 0x5bcf0bff, REGISTRY_RIPENCC }, // 91.207.2.0 - 91.207.11.255 { 0x5bcf0e00, 0x5bcf17ff, REGISTRY_RIPENCC }, // 91.207.14.0 - 91.207.23.255 { 0x5bcf1800, 0x5bcf19ff, REGISTRY_RIPENCC }, // 91.207.24.0 - 91.207.25.255 { 0x5bcf1a00, 0x5bcf1fff, REGISTRY_RIPENCC }, // 91.207.26.0 - 91.207.31.255 { 0x5bcf2000, 0x5bcf21ff, REGISTRY_RIPENCC }, // 91.207.32.0 - 91.207.33.255 { 0x5bcf2200, 0x5bcf37ff, REGISTRY_RIPENCC }, // 91.207.34.0 - 91.207.55.255 { 0x5bcf3800, 0x5bcf39ff, REGISTRY_RIPENCC }, // 91.207.56.0 - 91.207.57.255 { 0x5bcf3a00, 0x5bcf45ff, REGISTRY_RIPENCC }, // 91.207.58.0 - 91.207.69.255 { 0x5bcf4800, 0x5bcf5fff, REGISTRY_RIPENCC }, // 91.207.72.0 - 91.207.95.255 { 0x5bcf6200, 0x5bcf6bff, REGISTRY_RIPENCC }, // 91.207.98.0 - 91.207.107.255 { 0x5bcf6e00, 0x5bcf99ff, REGISTRY_RIPENCC }, // 91.207.110.0 - 91.207.153.255 { 0x5bcf9c00, 0x5bcfabff, REGISTRY_RIPENCC }, // 91.207.156.0 - 91.207.171.255 { 0x5bcfb000, 0x5bcfb1ff, REGISTRY_RIPENCC }, // 91.207.176.0 - 91.207.177.255 { 0x5bcfb400, 0x5bcfb9ff, REGISTRY_RIPENCC }, // 91.207.180.0 - 91.207.185.255 { 0x5bcfba00, 0x5bcfbbff, REGISTRY_RIPENCC }, // 91.207.186.0 - 91.207.187.255 { 0x5bcfbc00, 0x5bcfc3ff, REGISTRY_RIPENCC }, // 91.207.188.0 - 91.207.195.255 { 0x5bcfc600, 0x5bcfddff, REGISTRY_RIPENCC }, // 91.207.198.0 - 91.207.221.255 { 0x5bcfe000, 0x5bcfe5ff, REGISTRY_RIPENCC }, // 91.207.224.0 - 91.207.229.255 { 0x5bcfe800, 0x5bcfe9ff, REGISTRY_RIPENCC }, // 91.207.232.0 - 91.207.233.255 { 0x5bcfec00, 0x5bcfffff, REGISTRY_RIPENCC }, // 91.207.236.0 - 91.207.255.255 { 0x5bd00100, 0x5bd00fff, REGISTRY_RIPENCC }, // 91.208.1.0 - 91.208.15.255 { 0x5bd01100, 0x5bd011ff, REGISTRY_RIPENCC }, // 91.208.17.0 - 91.208.17.255 { 0x5bd01200, 0x5bd012ff, REGISTRY_RIPENCC }, // 91.208.18.0 - 91.208.18.255 { 0x5bd01400, 0x5bd014ff, REGISTRY_RIPENCC }, // 91.208.20.0 - 91.208.20.255 { 0x5bd01600, 0x5bd01eff, REGISTRY_RIPENCC }, // 91.208.22.0 - 91.208.30.255 { 0x5bd02000, 0x5bd02dff, REGISTRY_RIPENCC }, // 91.208.32.0 - 91.208.45.255 { 0x5bd02f00, 0x5bd044ff, REGISTRY_RIPENCC }, // 91.208.47.0 - 91.208.68.255 { 0x5bd04600, 0x5bd067ff, REGISTRY_RIPENCC }, // 91.208.70.0 - 91.208.103.255 { 0x5bd06900, 0x5bd070ff, REGISTRY_RIPENCC }, // 91.208.105.0 - 91.208.112.255 { 0x5bd07200, 0x5bd072ff, REGISTRY_RIPENCC }, // 91.208.114.0 - 91.208.114.255 { 0x5bd07300, 0x5bd07fff, REGISTRY_RIPENCC }, // 91.208.115.0 - 91.208.127.255 { 0x5bd08100, 0x5bd088ff, REGISTRY_RIPENCC }, // 91.208.129.0 - 91.208.136.255 { 0x5bd08a00, 0x5bd096ff, REGISTRY_RIPENCC }, // 91.208.138.0 - 91.208.150.255 { 0x5bd09800, 0x5bd0a1ff, REGISTRY_RIPENCC }, // 91.208.152.0 - 91.208.161.255 { 0x5bd0a300, 0x5bd0b0ff, REGISTRY_RIPENCC }, // 91.208.163.0 - 91.208.176.255 { 0x5bd0b200, 0x5bd0c4ff, REGISTRY_RIPENCC }, // 91.208.178.0 - 91.208.196.255 { 0x5bd0c600, 0x5bd0cdff, REGISTRY_RIPENCC }, // 91.208.198.0 - 91.208.205.255 { 0x5bd0cf00, 0x5bd0cfff, REGISTRY_RIPENCC }, // 91.208.207.0 - 91.208.207.255 { 0x5bd0d100, 0x5bd0e3ff, REGISTRY_RIPENCC }, // 91.208.209.0 - 91.208.227.255 { 0x5bd0e500, 0x5bd0e5ff, REGISTRY_RIPENCC }, // 91.208.229.0 - 91.208.229.255 { 0x5bd0e700, 0x5bd0ebff, REGISTRY_RIPENCC }, // 91.208.231.0 - 91.208.235.255 { 0x5bd0ed00, 0x5bd0efff, REGISTRY_RIPENCC }, // 91.208.237.0 - 91.208.239.255 { 0x5bd0f100, 0x5bd0f5ff, REGISTRY_RIPENCC }, // 91.208.241.0 - 91.208.245.255 { 0x5bd0f700, 0x5bd0faff, REGISTRY_RIPENCC }, // 91.208.247.0 - 91.208.250.255 { 0x5bd0fc00, 0x5bd10dff, REGISTRY_RIPENCC }, // 91.208.252.0 - 91.209.13.255 { 0x5bd10f00, 0x5bd114ff, REGISTRY_RIPENCC }, // 91.209.15.0 - 91.209.20.255 { 0x5bd11700, 0x5bd127ff, REGISTRY_RIPENCC }, // 91.209.23.0 - 91.209.39.255 { 0x5bd12900, 0x5bd12fff, REGISTRY_RIPENCC }, // 91.209.41.0 - 91.209.47.255 { 0x5bd13100, 0x5bd131ff, REGISTRY_RIPENCC }, // 91.209.49.0 - 91.209.49.255 { 0x5bd13300, 0x5bd139ff, REGISTRY_RIPENCC }, // 91.209.51.0 - 91.209.57.255 { 0x5bd13b00, 0x5bd13dff, REGISTRY_RIPENCC }, // 91.209.59.0 - 91.209.61.255 { 0x5bd14000, 0x5bd143ff, REGISTRY_RIPENCC }, // 91.209.64.0 - 91.209.67.255 { 0x5bd14500, 0x5bd155ff, REGISTRY_RIPENCC }, // 91.209.69.0 - 91.209.85.255 { 0x5bd15600, 0x5bd156ff, REGISTRY_RIPENCC }, // 91.209.86.0 - 91.209.86.255 { 0x5bd15700, 0x5bd162ff, REGISTRY_RIPENCC }, // 91.209.87.0 - 91.209.98.255 { 0x5bd16500, 0x5bd168ff, REGISTRY_RIPENCC }, // 91.209.101.0 - 91.209.104.255 { 0x5bd16a00, 0x5bd16aff, REGISTRY_RIPENCC }, // 91.209.106.0 - 91.209.106.255 { 0x5bd16b00, 0x5bd16bff, REGISTRY_RIPENCC }, // 91.209.107.0 - 91.209.107.255 { 0x5bd16c00, 0x5bd172ff, REGISTRY_RIPENCC }, // 91.209.108.0 - 91.209.114.255 { 0x5bd17400, 0x5bd194ff, REGISTRY_RIPENCC }, // 91.209.116.0 - 91.209.148.255 { 0x5bd19600, 0x5bd196ff, REGISTRY_RIPENCC }, // 91.209.150.0 - 91.209.150.255 { 0x5bd19800, 0x5bd1a2ff, REGISTRY_RIPENCC }, // 91.209.152.0 - 91.209.162.255 { 0x5bd1a400, 0x5bd1b2ff, REGISTRY_RIPENCC }, // 91.209.164.0 - 91.209.178.255 { 0x5bd1b400, 0x5bd1b6ff, REGISTRY_RIPENCC }, // 91.209.180.0 - 91.209.182.255 { 0x5bd1b900, 0x5bd1b9ff, REGISTRY_RIPENCC }, // 91.209.185.0 - 91.209.185.255 { 0x5bd1bb00, 0x5bd1d0ff, REGISTRY_RIPENCC }, // 91.209.187.0 - 91.209.208.255 { 0x5bd1d200, 0x5bd1d6ff, REGISTRY_RIPENCC }, // 91.209.210.0 - 91.209.214.255 { 0x5bd1d800, 0x5bd1dfff, REGISTRY_RIPENCC }, // 91.209.216.0 - 91.209.223.255 { 0x5bd1e100, 0x5bd1e2ff, REGISTRY_RIPENCC }, // 91.209.225.0 - 91.209.226.255 { 0x5bd1e400, 0x5bd1e5ff, REGISTRY_RIPENCC }, // 91.209.228.0 - 91.209.229.255 { 0x5bd1e700, 0x5bd237ff, REGISTRY_RIPENCC }, // 91.209.231.0 - 91.210.55.255 { 0x5bd23c00, 0x5bd24bff, REGISTRY_RIPENCC }, // 91.210.60.0 - 91.210.75.255 { 0x5bd25000, 0x5bd263ff, REGISTRY_RIPENCC }, // 91.210.80.0 - 91.210.99.255 { 0x5bd26800, 0x5bd307ff, REGISTRY_RIPENCC }, // 91.210.104.0 - 91.211.7.255 { 0x5bd30800, 0x5bd30bff, REGISTRY_RIPENCC }, // 91.211.8.0 - 91.211.11.255 { 0x5bd30c00, 0x5bd33fff, REGISTRY_RIPENCC }, // 91.211.12.0 - 91.211.63.255 { 0x5bd34400, 0x5bd357ff, REGISTRY_RIPENCC }, // 91.211.68.0 - 91.211.87.255 { 0x5bd35c00, 0x5bd397ff, REGISTRY_RIPENCC }, // 91.211.92.0 - 91.211.151.255 { 0x5bd39c00, 0x5bd39fff, REGISTRY_RIPENCC }, // 91.211.156.0 - 91.211.159.255 { 0x5bd3a400, 0x5bd3c3ff, REGISTRY_RIPENCC }, // 91.211.164.0 - 91.211.195.255 { 0x5bd3c800, 0x5bd3c9ff, REGISTRY_RIPENCC }, // 91.211.200.0 - 91.211.201.255 { 0x5bd3ca00, 0x5bd3cbff, REGISTRY_RIPENCC }, // 91.211.202.0 - 91.211.203.255 { 0x5bd3cc00, 0x5bd3dfff, REGISTRY_RIPENCC }, // 91.211.204.0 - 91.211.223.255 { 0x5bd3e400, 0x5bd3f7ff, REGISTRY_RIPENCC }, // 91.211.228.0 - 91.211.247.255 { 0x5bd3fc00, 0x5bd40aff, REGISTRY_RIPENCC }, // 91.211.252.0 - 91.212.10.255 { 0x5bd40c00, 0x5bd40dff, REGISTRY_RIPENCC }, // 91.212.12.0 - 91.212.13.255 { 0x5bd40f00, 0x5bd412ff, REGISTRY_RIPENCC }, // 91.212.15.0 - 91.212.18.255 { 0x5bd41500, 0x5bd41aff, REGISTRY_RIPENCC }, // 91.212.21.0 - 91.212.26.255 { 0x5bd41c00, 0x5bd425ff, REGISTRY_RIPENCC }, // 91.212.28.0 - 91.212.37.255 { 0x5bd42700, 0x5bd427ff, REGISTRY_RIPENCC }, // 91.212.39.0 - 91.212.39.255 { 0x5bd42a00, 0x5bd42cff, REGISTRY_RIPENCC }, // 91.212.42.0 - 91.212.44.255 { 0x5bd42e00, 0x5bd430ff, REGISTRY_RIPENCC }, // 91.212.46.0 - 91.212.48.255 { 0x5bd43200, 0x5bd432ff, REGISTRY_RIPENCC }, // 91.212.50.0 - 91.212.50.255 { 0x5bd43400, 0x5bd435ff, REGISTRY_RIPENCC }, // 91.212.52.0 - 91.212.53.255 { 0x5bd43800, 0x5bd440ff, REGISTRY_RIPENCC }, // 91.212.56.0 - 91.212.64.255 { 0x5bd44200, 0x5bd447ff, REGISTRY_RIPENCC }, // 91.212.66.0 - 91.212.71.255 { 0x5bd44a00, 0x5bd463ff, REGISTRY_RIPENCC }, // 91.212.74.0 - 91.212.99.255 { 0x5bd46500, 0x5bd46aff, REGISTRY_RIPENCC }, // 91.212.101.0 - 91.212.106.255 { 0x5bd46c00, 0x5bd477ff, REGISTRY_RIPENCC }, // 91.212.108.0 - 91.212.119.255 { 0x5bd47900, 0x5bd47aff, REGISTRY_RIPENCC }, // 91.212.121.0 - 91.212.122.255 { 0x5bd47c00, 0x5bd486ff, REGISTRY_RIPENCC }, // 91.212.124.0 - 91.212.134.255 { 0x5bd48800, 0x5bd48cff, REGISTRY_RIPENCC }, // 91.212.136.0 - 91.212.140.255 { 0x5bd48f00, 0x5bd48fff, REGISTRY_RIPENCC }, // 91.212.143.0 - 91.212.143.255 { 0x5bd49000, 0x5bd490ff, REGISTRY_RIPENCC }, // 91.212.144.0 - 91.212.144.255 { 0x5bd49100, 0x5bd494ff, REGISTRY_RIPENCC }, // 91.212.145.0 - 91.212.148.255 { 0x5bd49600, 0x5bd498ff, REGISTRY_RIPENCC }, // 91.212.150.0 - 91.212.152.255 { 0x5bd49a00, 0x5bd49eff, REGISTRY_RIPENCC }, // 91.212.154.0 - 91.212.158.255 { 0x5bd4a200, 0x5bd4a2ff, REGISTRY_RIPENCC }, // 91.212.162.0 - 91.212.162.255 { 0x5bd4a400, 0x5bd4c5ff, REGISTRY_RIPENCC }, // 91.212.164.0 - 91.212.197.255 { 0x5bd4c700, 0x5bd4c8ff, REGISTRY_RIPENCC }, // 91.212.199.0 - 91.212.200.255 { 0x5bd4ca00, 0x5bd4e1ff, REGISTRY_RIPENCC }, // 91.212.202.0 - 91.212.225.255 { 0x5bd4e300, 0x5bd4e4ff, REGISTRY_RIPENCC }, // 91.212.227.0 - 91.212.228.255 { 0x5bd4e500, 0x5bd4e5ff, REGISTRY_RIPENCC }, // 91.212.229.0 - 91.212.229.255 { 0x5bd4e600, 0x5bd4e6ff, REGISTRY_RIPENCC }, // 91.212.230.0 - 91.212.230.255 { 0x5bd4e800, 0x5bd4eaff, REGISTRY_RIPENCC }, // 91.212.232.0 - 91.212.234.255 { 0x5bd4ec00, 0x5bd4eeff, REGISTRY_RIPENCC }, // 91.212.236.0 - 91.212.238.255 { 0x5bd4ef00, 0x5bd4efff, REGISTRY_RIPENCC }, // 91.212.239.0 - 91.212.239.255 { 0x5bd4f100, 0x5bd4f5ff, REGISTRY_RIPENCC }, // 91.212.241.0 - 91.212.245.255 { 0x5bd4f700, 0x5bd51cff, REGISTRY_RIPENCC }, // 91.212.247.0 - 91.213.28.255 { 0x5bd51e00, 0x5bd522ff, REGISTRY_RIPENCC }, // 91.213.30.0 - 91.213.34.255 { 0x5bd52400, 0x5bd530ff, REGISTRY_RIPENCC }, // 91.213.36.0 - 91.213.48.255 { 0x5bd53300, 0x5bd547ff, REGISTRY_RIPENCC }, // 91.213.51.0 - 91.213.71.255 { 0x5bd54900, 0x5bd549ff, REGISTRY_RIPENCC }, // 91.213.73.0 - 91.213.73.255 { 0x5bd54c00, 0x5bd55cff, REGISTRY_RIPENCC }, // 91.213.76.0 - 91.213.92.255 { 0x5bd55f00, 0x5bd56eff, REGISTRY_RIPENCC }, // 91.213.95.0 - 91.213.110.255 { 0x5bd57000, 0x5bd574ff, REGISTRY_RIPENCC }, // 91.213.112.0 - 91.213.116.255 { 0x5bd57600, 0x5bd577ff, REGISTRY_RIPENCC }, // 91.213.118.0 - 91.213.119.255 { 0x5bd57a00, 0x5bd589ff, REGISTRY_RIPENCC }, // 91.213.122.0 - 91.213.137.255 { 0x5bd58b00, 0x5bd593ff, REGISTRY_RIPENCC }, // 91.213.139.0 - 91.213.147.255 { 0x5bd59500, 0x5bd596ff, REGISTRY_RIPENCC }, // 91.213.149.0 - 91.213.150.255 { 0x5bd59800, 0x5bd59cff, REGISTRY_RIPENCC }, // 91.213.152.0 - 91.213.156.255 { 0x5bd59e00, 0x5bd5a6ff, REGISTRY_RIPENCC }, // 91.213.158.0 - 91.213.166.255 { 0x5bd5a800, 0x5bd5adff, REGISTRY_RIPENCC }, // 91.213.168.0 - 91.213.173.255 { 0x5bd5af00, 0x5bd5bcff, REGISTRY_RIPENCC }, // 91.213.175.0 - 91.213.188.255 { 0x5bd5be00, 0x5bd5cfff, REGISTRY_RIPENCC }, // 91.213.190.0 - 91.213.207.255 { 0x5bd5d100, 0x5bd5d6ff, REGISTRY_RIPENCC }, // 91.213.209.0 - 91.213.214.255 { 0x5bd5d800, 0x5bd5d8ff, REGISTRY_RIPENCC }, // 91.213.216.0 - 91.213.216.255 { 0x5bd5da00, 0x5bd5dbff, REGISTRY_RIPENCC }, // 91.213.218.0 - 91.213.219.255 { 0x5bd5dd00, 0x5bd5deff, REGISTRY_RIPENCC }, // 91.213.221.0 - 91.213.222.255 { 0x5bd5e000, 0x5bd5e9ff, REGISTRY_RIPENCC }, // 91.213.224.0 - 91.213.233.255 { 0x5bd5ea00, 0x5bd5eaff, REGISTRY_RIPENCC }, // 91.213.234.0 - 91.213.234.255 { 0x5bd5eb00, 0x5bd5ecff, REGISTRY_RIPENCC }, // 91.213.235.0 - 91.213.236.255 { 0x5bd5ed00, 0x5bd5edff, REGISTRY_RIPENCC }, // 91.213.237.0 - 91.213.237.255 { 0x5bd5ee00, 0x5bd61fff, REGISTRY_RIPENCC }, // 91.213.238.0 - 91.214.31.255 { 0x5bd62400, 0x5bd63fff, REGISTRY_RIPENCC }, // 91.214.36.0 - 91.214.63.255 { 0x5bd64400, 0x5bd657ff, REGISTRY_RIPENCC }, // 91.214.68.0 - 91.214.87.255 { 0x5bd65800, 0x5bd65bff, REGISTRY_RIPENCC }, // 91.214.88.0 - 91.214.91.255 { 0x5bd66000, 0x5bd673ff, REGISTRY_RIPENCC }, // 91.214.96.0 - 91.214.115.255 { 0x5bd67400, 0x5bd677ff, REGISTRY_RIPENCC }, // 91.214.116.0 - 91.214.119.255 { 0x5bd67800, 0x5bd693ff, REGISTRY_RIPENCC }, // 91.214.120.0 - 91.214.147.255 { 0x5bd69800, 0x5bd6d3ff, REGISTRY_RIPENCC }, // 91.214.152.0 - 91.214.211.255 { 0x5bd6d400, 0x5bd6d7ff, REGISTRY_RIPENCC }, // 91.214.212.0 - 91.214.215.255 { 0x5bd6dc00, 0x5bd73fff, REGISTRY_RIPENCC }, // 91.214.220.0 - 91.215.63.255 { 0x5bd74000, 0x5bd743ff, REGISTRY_RIPENCC }, // 91.215.64.0 - 91.215.67.255 { 0x5bd74400, 0x5bd787ff, REGISTRY_RIPENCC }, // 91.215.68.0 - 91.215.135.255 { 0x5bd78800, 0x5bd78bff, REGISTRY_RIPENCC }, // 91.215.136.0 - 91.215.139.255 { 0x5bd78c00, 0x5bd80aff, REGISTRY_RIPENCC }, // 91.215.140.0 - 91.216.10.255 { 0x5bd80c00, 0x5bd826ff, REGISTRY_RIPENCC }, // 91.216.12.0 - 91.216.38.255 { 0x5bd82800, 0x5bd83aff, REGISTRY_RIPENCC }, // 91.216.40.0 - 91.216.58.255 { 0x5bd83b00, 0x5bd83bff, REGISTRY_RIPENCC }, // 91.216.59.0 - 91.216.59.255 { 0x5bd83c00, 0x5bd848ff, REGISTRY_RIPENCC }, // 91.216.60.0 - 91.216.72.255 { 0x5bd84a00, 0x5bd84cff, REGISTRY_RIPENCC }, // 91.216.74.0 - 91.216.76.255 { 0x5bd84e00, 0x5bd879ff, REGISTRY_RIPENCC }, // 91.216.78.0 - 91.216.121.255 { 0x5bd87b00, 0x5bd8a1ff, REGISTRY_RIPENCC }, // 91.216.123.0 - 91.216.161.255 { 0x5bd8a200, 0x5bd8a2ff, REGISTRY_RIPENCC }, // 91.216.162.0 - 91.216.162.255 { 0x5bd8a300, 0x5bd8a8ff, REGISTRY_RIPENCC }, // 91.216.163.0 - 91.216.168.255 { 0x5bd8aa00, 0x5bd8bdff, REGISTRY_RIPENCC }, // 91.216.170.0 - 91.216.189.255 { 0x5bd8bf00, 0x5bd8d6ff, REGISTRY_RIPENCC }, // 91.216.191.0 - 91.216.214.255 { 0x5bd8d800, 0x5bd8f6ff, REGISTRY_RIPENCC }, // 91.216.216.0 - 91.216.246.255 { 0x5bd8f700, 0x5bd8f7ff, REGISTRY_RIPENCC }, // 91.216.247.0 - 91.216.247.255 { 0x5bd8f800, 0x5bd905ff, REGISTRY_RIPENCC }, // 91.216.248.0 - 91.217.5.255 { 0x5bd90800, 0x5bd919ff, REGISTRY_RIPENCC }, // 91.217.8.0 - 91.217.25.255 { 0x5bd91a00, 0x5bd91bff, REGISTRY_RIPENCC }, // 91.217.26.0 - 91.217.27.255 { 0x5bd91c00, 0x5bd94fff, REGISTRY_RIPENCC }, // 91.217.28.0 - 91.217.79.255 { 0x5bd95200, 0x5bd977ff, REGISTRY_RIPENCC }, // 91.217.82.0 - 91.217.119.255 { 0x5bd97a00, 0x5bd986ff, REGISTRY_RIPENCC }, // 91.217.122.0 - 91.217.134.255 { 0x5bd98800, 0x5bd98aff, REGISTRY_RIPENCC }, // 91.217.136.0 - 91.217.138.255 { 0x5bd98c00, 0x5bd9a1ff, REGISTRY_RIPENCC }, // 91.217.140.0 - 91.217.161.255 { 0x5bd9a300, 0x5bd9a6ff, REGISTRY_RIPENCC }, // 91.217.163.0 - 91.217.166.255 { 0x5bd9a800, 0x5bd9c2ff, REGISTRY_RIPENCC }, // 91.217.168.0 - 91.217.194.255 { 0x5bd9c400, 0x5bd9c7ff, REGISTRY_RIPENCC }, // 91.217.196.0 - 91.217.199.255 { 0x5bd9c900, 0x5bd9ceff, REGISTRY_RIPENCC }, // 91.217.201.0 - 91.217.206.255 { 0x5bd9d000, 0x5bd9deff, REGISTRY_RIPENCC }, // 91.217.208.0 - 91.217.222.255 { 0x5bd9e000, 0x5bd9eeff, REGISTRY_RIPENCC }, // 91.217.224.0 - 91.217.238.255 { 0x5bd9f000, 0x5bd9f8ff, REGISTRY_RIPENCC }, // 91.217.240.0 - 91.217.248.255 { 0x5bd9fb00, 0x5bd9fcff, REGISTRY_RIPENCC }, // 91.217.251.0 - 91.217.252.255 { 0x5bd9fe00, 0x5bda13ff, REGISTRY_RIPENCC }, // 91.217.254.0 - 91.218.19.255 { 0x5bda1800, 0x5bda23ff, REGISTRY_RIPENCC }, // 91.218.24.0 - 91.218.35.255 { 0x5bda2800, 0x5bda37ff, REGISTRY_RIPENCC }, // 91.218.40.0 - 91.218.55.255 { 0x5bda3c00, 0x5bda3fff, REGISTRY_RIPENCC }, // 91.218.60.0 - 91.218.63.255 { 0x5bda4400, 0x5bdaebff, REGISTRY_RIPENCC }, // 91.218.68.0 - 91.218.235.255 { 0x5bdaec00, 0x5bdaefff, REGISTRY_RIPENCC }, // 91.218.236.0 - 91.218.239.255 { 0x5bdaf000, 0x5bdafbff, REGISTRY_RIPENCC }, // 91.218.240.0 - 91.218.251.255 { 0x5bdafc00, 0x5bdaffff, REGISTRY_RIPENCC }, // 91.218.252.0 - 91.218.255.255 { 0x5bdb0000, 0x5bdb07ff, REGISTRY_RIPENCC }, // 91.219.0.0 - 91.219.7.255 { 0x5bdb0800, 0x5bdb0bff, REGISTRY_RIPENCC }, // 91.219.8.0 - 91.219.11.255 { 0x5bdb0c00, 0x5bdb0fff, REGISTRY_RIPENCC }, // 91.219.12.0 - 91.219.15.255 { 0x5bdb1000, 0x5bdb13ff, REGISTRY_RIPENCC }, // 91.219.16.0 - 91.219.19.255 { 0x5bdb1400, 0x5bdb3fff, REGISTRY_RIPENCC }, // 91.219.20.0 - 91.219.63.255 { 0x5bdb4000, 0x5bdb43ff, REGISTRY_RIPENCC }, // 91.219.64.0 - 91.219.67.255 { 0x5bdb4400, 0x5bdb5bff, REGISTRY_RIPENCC }, // 91.219.68.0 - 91.219.91.255 { 0x5bdb5c00, 0x5bdb5fff, REGISTRY_RIPENCC }, // 91.219.92.0 - 91.219.95.255 { 0x5bdb6000, 0x5bdc1bff, REGISTRY_RIPENCC }, // 91.219.96.0 - 91.220.27.255 { 0x5bdc1d00, 0x5bdc22ff, REGISTRY_RIPENCC }, // 91.220.29.0 - 91.220.34.255 { 0x5bdc2400, 0x5bdc46ff, REGISTRY_RIPENCC }, // 91.220.36.0 - 91.220.70.255 { 0x5bdc4800, 0x5bdc53ff, REGISTRY_RIPENCC }, // 91.220.72.0 - 91.220.83.255 { 0x5bdc5500, 0x5bdc59ff, REGISTRY_RIPENCC }, // 91.220.85.0 - 91.220.89.255 { 0x5bdc5b00, 0x5bdc7dff, REGISTRY_RIPENCC }, // 91.220.91.0 - 91.220.125.255 { 0x5bdc7f00, 0x5bdc82ff, REGISTRY_RIPENCC }, // 91.220.127.0 - 91.220.130.255 { 0x5bdc8400, 0x5bdcaaff, REGISTRY_RIPENCC }, // 91.220.132.0 - 91.220.170.255 { 0x5bdcac00, 0x5bdcafff, REGISTRY_RIPENCC }, // 91.220.172.0 - 91.220.175.255 { 0x5bdcb100, 0x5bdcb3ff, REGISTRY_RIPENCC }, // 91.220.177.0 - 91.220.179.255 { 0x5bdcb400, 0x5bdcb4ff, REGISTRY_RIPENCC }, // 91.220.180.0 - 91.220.180.255 { 0x5bdcb500, 0x5bdcb9ff, REGISTRY_RIPENCC }, // 91.220.181.0 - 91.220.185.255 { 0x5bdcbb00, 0x5bdcc9ff, REGISTRY_RIPENCC }, // 91.220.187.0 - 91.220.201.255 { 0x5bdccc00, 0x5bdcdeff, REGISTRY_RIPENCC }, // 91.220.204.0 - 91.220.222.255 { 0x5bdce000, 0x5bdce4ff, REGISTRY_RIPENCC }, // 91.220.224.0 - 91.220.228.255 { 0x5bdce600, 0x5bdd4bff, REGISTRY_RIPENCC }, // 91.220.230.0 - 91.221.75.255 { 0x5bdd4e00, 0x5bdd5bff, REGISTRY_RIPENCC }, // 91.221.78.0 - 91.221.91.255 { 0x5bdd5e00, 0x5bdd62ff, REGISTRY_RIPENCC }, // 91.221.94.0 - 91.221.98.255 { 0x5bdd6300, 0x5bdd63ff, REGISTRY_RIPENCC }, // 91.221.99.0 - 91.221.99.255 { 0x5bdd6400, 0x5bdd69ff, REGISTRY_RIPENCC }, // 91.221.100.0 - 91.221.105.255 { 0x5bdd6c00, 0x5bdd73ff, REGISTRY_RIPENCC }, // 91.221.108.0 - 91.221.115.255 { 0x5bdd7600, 0x5bddf5ff, REGISTRY_RIPENCC }, // 91.221.118.0 - 91.221.245.255 { 0x5bddf600, 0x5bddf7ff, REGISTRY_RIPENCC }, // 91.221.246.0 - 91.221.247.255 { 0x5bddf800, 0x5bde07ff, REGISTRY_RIPENCC }, // 91.221.248.0 - 91.222.7.255 { 0x5bde0800, 0x5bde0bff, REGISTRY_RIPENCC }, // 91.222.8.0 - 91.222.11.255 { 0x5bde0c00, 0x5bdecbff, REGISTRY_RIPENCC }, // 91.222.12.0 - 91.222.203.255 { 0x5bdecc00, 0x5bdecfff, REGISTRY_RIPENCC }, // 91.222.204.0 - 91.222.207.255 { 0x5bded000, 0x5bdf1bff, REGISTRY_RIPENCC }, // 91.222.208.0 - 91.223.27.255 { 0x5bdf1d00, 0x5bdf42ff, REGISTRY_RIPENCC }, // 91.223.29.0 - 91.223.66.255 { 0x5bdf4300, 0x5bdf43ff, REGISTRY_RIPENCC }, // 91.223.67.0 - 91.223.67.255 { 0x5bdf4400, 0x5bdf45ff, REGISTRY_RIPENCC }, // 91.223.68.0 - 91.223.69.255 { 0x5bdf4700, 0x5bdf4aff, REGISTRY_RIPENCC }, // 91.223.71.0 - 91.223.74.255 { 0x5bdf4c00, 0x5bdf58ff, REGISTRY_RIPENCC }, // 91.223.76.0 - 91.223.88.255 { 0x5bdf5a00, 0x5bdf62ff, REGISTRY_RIPENCC }, // 91.223.90.0 - 91.223.98.255 { 0x5bdf6400, 0x5bdf69ff, REGISTRY_RIPENCC }, // 91.223.100.0 - 91.223.105.255 { 0x5bdf6a00, 0x5bdf6aff, REGISTRY_RIPENCC }, // 91.223.106.0 - 91.223.106.255 { 0x5bdf6b00, 0x5bdf74ff, REGISTRY_RIPENCC }, // 91.223.107.0 - 91.223.116.255 { 0x5bdf7500, 0x5bdf75ff, REGISTRY_RIPENCC }, // 91.223.117.0 - 91.223.117.255 { 0x5bdf7600, 0x5bdf96ff, REGISTRY_RIPENCC }, // 91.223.118.0 - 91.223.150.255 { 0x5bdf9700, 0x5bdf97ff, REGISTRY_RIPENCC }, // 91.223.151.0 - 91.223.151.255 { 0x5bdf9800, 0x5bdf9aff, REGISTRY_RIPENCC }, // 91.223.152.0 - 91.223.154.255 { 0x5bdf9b00, 0x5bdf9bff, REGISTRY_RIPENCC }, // 91.223.155.0 - 91.223.155.255 { 0x5bdf9c00, 0x5bdf9dff, REGISTRY_RIPENCC }, // 91.223.156.0 - 91.223.157.255 { 0x5bdf9e00, 0x5bdf9eff, REGISTRY_RIPENCC }, // 91.223.158.0 - 91.223.158.255 { 0x5bdf9f00, 0x5bdfa2ff, REGISTRY_RIPENCC }, // 91.223.159.0 - 91.223.162.255 { 0x5bdfa400, 0x5bdfa8ff, REGISTRY_RIPENCC }, // 91.223.164.0 - 91.223.168.255 { 0x5bdfaa00, 0x5bdfaaff, REGISTRY_RIPENCC }, // 91.223.170.0 - 91.223.170.255 { 0x5bdfab00, 0x5bdfabff, REGISTRY_RIPENCC }, // 91.223.171.0 - 91.223.171.255 { 0x5bdfac00, 0x5bdfebff, REGISTRY_RIPENCC }, // 91.223.172.0 - 91.223.235.255 { 0x5bdfed00, 0x5bdffdff, REGISTRY_RIPENCC }, // 91.223.237.0 - 91.223.253.255 { 0x5bdffe00, 0x5bdffeff, REGISTRY_RIPENCC }, // 91.223.254.0 - 91.223.254.255 { 0x5bdfff00, 0x5be00bff, REGISTRY_RIPENCC }, // 91.223.255.0 - 91.224.11.255 { 0x5be00c00, 0x5be00dff, REGISTRY_RIPENCC }, // 91.224.12.0 - 91.224.13.255 { 0x5be00e00, 0x5be027ff, REGISTRY_RIPENCC }, // 91.224.14.0 - 91.224.39.255 { 0x5be02800, 0x5be029ff, REGISTRY_RIPENCC }, // 91.224.40.0 - 91.224.41.255 { 0x5be02a00, 0x5be03fff, REGISTRY_RIPENCC }, // 91.224.42.0 - 91.224.63.255 { 0x5be04200, 0x5be063ff, REGISTRY_RIPENCC }, // 91.224.66.0 - 91.224.99.255 { 0x5be06600, 0x5be06bff, REGISTRY_RIPENCC }, // 91.224.102.0 - 91.224.107.255 { 0x5be06c00, 0x5be06dff, REGISTRY_RIPENCC }, // 91.224.108.0 - 91.224.109.255 { 0x5be06e00, 0x5be0d3ff, REGISTRY_RIPENCC }, // 91.224.110.0 - 91.224.211.255 { 0x5be0d400, 0x5be0d5ff, REGISTRY_RIPENCC }, // 91.224.212.0 - 91.224.213.255 { 0x5be0d600, 0x5be0e3ff, REGISTRY_RIPENCC }, // 91.224.214.0 - 91.224.227.255 { 0x5be0e600, 0x5be0f5ff, REGISTRY_RIPENCC }, // 91.224.230.0 - 91.224.245.255 { 0x5be0f800, 0x5be107ff, REGISTRY_RIPENCC }, // 91.224.248.0 - 91.225.7.255 { 0x5be10800, 0x5be10fff, REGISTRY_RIPENCC }, // 91.225.8.0 - 91.225.15.255 { 0x5be11000, 0x5be11fff, REGISTRY_RIPENCC }, // 91.225.16.0 - 91.225.31.255 { 0x5be12000, 0x5be121ff, REGISTRY_ARIN }, // 91.225.32.0 - 91.225.33.255 { 0x5be12200, 0x5be123ff, REGISTRY_RIPENCC }, // 91.225.34.0 - 91.225.35.255 { 0x5be12400, 0x5be1cbff, REGISTRY_RIPENCC }, // 91.225.36.0 - 91.225.203.255 { 0x5be1cc00, 0x5be1cfff, REGISTRY_RIPENCC }, // 91.225.204.0 - 91.225.207.255 { 0x5be1d000, 0x5be21dff, REGISTRY_RIPENCC }, // 91.225.208.0 - 91.226.29.255 { 0x5be21e00, 0x5be21fff, REGISTRY_RIPENCC }, // 91.226.30.0 - 91.226.31.255 { 0x5be22000, 0x5be233ff, REGISTRY_RIPENCC }, // 91.226.32.0 - 91.226.51.255 { 0x5be23400, 0x5be237ff, REGISTRY_RIPENCC }, // 91.226.52.0 - 91.226.55.255 { 0x5be23800, 0x5be247ff, REGISTRY_RIPENCC }, // 91.226.56.0 - 91.226.71.255 { 0x5be24900, 0x5be24bff, REGISTRY_RIPENCC }, // 91.226.73.0 - 91.226.75.255 { 0x5be24d00, 0x5be24dff, REGISTRY_RIPENCC }, // 91.226.77.0 - 91.226.77.255 { 0x5be24f00, 0x5be253ff, REGISTRY_RIPENCC }, // 91.226.79.0 - 91.226.83.255 { 0x5be25800, 0x5be25bff, REGISTRY_RIPENCC }, // 91.226.88.0 - 91.226.91.255 { 0x5be25c00, 0x5be25fff, REGISTRY_RIPENCC }, // 91.226.92.0 - 91.226.95.255 { 0x5be26100, 0x5be29fff, REGISTRY_RIPENCC }, // 91.226.97.0 - 91.226.159.255 { 0x5be2a100, 0x5be2b7ff, REGISTRY_RIPENCC }, // 91.226.161.0 - 91.226.183.255 { 0x5be2b900, 0x5be2dcff, REGISTRY_RIPENCC }, // 91.226.185.0 - 91.226.220.255 { 0x5be2de00, 0x5be353ff, REGISTRY_RIPENCC }, // 91.226.222.0 - 91.227.83.255 { 0x5be35400, 0x5be357ff, REGISTRY_RIPENCC }, // 91.227.84.0 - 91.227.87.255 { 0x5be35800, 0x5be365ff, REGISTRY_RIPENCC }, // 91.227.88.0 - 91.227.101.255 { 0x5be36600, 0x5be36bff, REGISTRY_RIPENCC }, // 91.227.102.0 - 91.227.107.255 { 0x5be36c00, 0x5be383ff, REGISTRY_RIPENCC }, // 91.227.108.0 - 91.227.131.255 { 0x5be38600, 0x5be388ff, REGISTRY_RIPENCC }, // 91.227.134.0 - 91.227.136.255 { 0x5be38a00, 0x5be397ff, REGISTRY_RIPENCC }, // 91.227.138.0 - 91.227.151.255 { 0x5be39800, 0x5be39bff, REGISTRY_RIPENCC }, // 91.227.152.0 - 91.227.155.255 { 0x5be39c00, 0x5be3a7ff, REGISTRY_RIPENCC }, // 91.227.156.0 - 91.227.167.255 { 0x5be3a900, 0x5be3a9ff, REGISTRY_RIPENCC }, // 91.227.169.0 - 91.227.169.255 { 0x5be3ac00, 0x5be3c7ff, REGISTRY_RIPENCC }, // 91.227.172.0 - 91.227.199.255 { 0x5be3c800, 0x5be3cbff, REGISTRY_RIPENCC }, // 91.227.200.0 - 91.227.203.255 { 0x5be3cc00, 0x5be3e5ff, REGISTRY_RIPENCC }, // 91.227.204.0 - 91.227.229.255 { 0x5be3e600, 0x5be3e7ff, REGISTRY_RIPENCC }, // 91.227.230.0 - 91.227.231.255 { 0x5be3e800, 0x5be3ebff, REGISTRY_RIPENCC }, // 91.227.232.0 - 91.227.235.255 { 0x5be3ec00, 0x5be3efff, REGISTRY_RIPENCC }, // 91.227.236.0 - 91.227.239.255 { 0x5be3f000, 0x5be3f5ff, REGISTRY_RIPENCC }, // 91.227.240.0 - 91.227.245.255 { 0x5be3f800, 0x5be3fcff, REGISTRY_RIPENCC }, // 91.227.248.0 - 91.227.252.255 { 0x5be3fe00, 0x5be41cff, REGISTRY_RIPENCC }, // 91.227.254.0 - 91.228.28.255 { 0x5be41d00, 0x5be41dff, REGISTRY_RIPENCC }, // 91.228.29.0 - 91.228.29.255 { 0x5be41e00, 0x5be423ff, REGISTRY_RIPENCC }, // 91.228.30.0 - 91.228.35.255 { 0x5be42400, 0x5be425ff, REGISTRY_RIPENCC }, // 91.228.36.0 - 91.228.37.255 { 0x5be42600, 0x5be476ff, REGISTRY_RIPENCC }, // 91.228.38.0 - 91.228.118.255 { 0x5be47700, 0x5be477ff, REGISTRY_RIPENCC }, // 91.228.119.0 - 91.228.119.255 { 0x5be47800, 0x5be47dff, REGISTRY_RIPENCC }, // 91.228.120.0 - 91.228.125.255 { 0x5be47e00, 0x5be483ff, REGISTRY_RIPENCC }, // 91.228.126.0 - 91.228.131.255 { 0x5be48700, 0x5be49fff, REGISTRY_RIPENCC }, // 91.228.135.0 - 91.228.159.255 { 0x5be4a100, 0x5be4abff, REGISTRY_RIPENCC }, // 91.228.161.0 - 91.228.171.255 { 0x5be4b000, 0x5be4e6ff, REGISTRY_RIPENCC }, // 91.228.176.0 - 91.228.230.255 { 0x5be4e800, 0x5be4faff, REGISTRY_RIPENCC }, // 91.228.232.0 - 91.228.250.255 { 0x5be4fc00, 0x5be504ff, REGISTRY_RIPENCC }, // 91.228.252.0 - 91.229.4.255 { 0x5be50600, 0x5be506ff, REGISTRY_RIPENCC }, // 91.229.6.0 - 91.229.6.255 { 0x5be50700, 0x5be50fff, REGISTRY_RIPENCC }, // 91.229.7.0 - 91.229.15.255 { 0x5be51000, 0x5be513ff, REGISTRY_RIPENCC }, // 91.229.16.0 - 91.229.19.255 { 0x5be51400, 0x5be518ff, REGISTRY_RIPENCC }, // 91.229.20.0 - 91.229.24.255 { 0x5be51a00, 0x5be51dff, REGISTRY_RIPENCC }, // 91.229.26.0 - 91.229.29.255 { 0x5be51e00, 0x5be51fff, REGISTRY_RIPENCC }, // 91.229.30.0 - 91.229.31.255 { 0x5be52000, 0x5be52dff, REGISTRY_RIPENCC }, // 91.229.32.0 - 91.229.45.255 { 0x5be53000, 0x5be537ff, REGISTRY_RIPENCC }, // 91.229.48.0 - 91.229.55.255 { 0x5be53900, 0x5be54fff, REGISTRY_RIPENCC }, // 91.229.57.0 - 91.229.79.255 { 0x5be55200, 0x5be559ff, REGISTRY_RIPENCC }, // 91.229.82.0 - 91.229.89.255 { 0x5be55c00, 0x5be583ff, REGISTRY_RIPENCC }, // 91.229.92.0 - 91.229.131.255 { 0x5be58800, 0x5be592ff, REGISTRY_RIPENCC }, // 91.229.136.0 - 91.229.146.255 { 0x5be59300, 0x5be593ff, REGISTRY_RIPENCC }, // 91.229.147.0 - 91.229.147.255 { 0x5be59400, 0x5be59bff, REGISTRY_RIPENCC }, // 91.229.148.0 - 91.229.155.255 { 0x5be59c00, 0x5be59fff, REGISTRY_RIPENCC }, // 91.229.156.0 - 91.229.159.255 { 0x5be5a000, 0x5be5b5ff, REGISTRY_RIPENCC }, // 91.229.160.0 - 91.229.181.255 { 0x5be5b700, 0x5be5d1ff, REGISTRY_RIPENCC }, // 91.229.183.0 - 91.229.209.255 { 0x5be5d300, 0x5be5e4ff, REGISTRY_RIPENCC }, // 91.229.211.0 - 91.229.228.255 { 0x5be5e600, 0x5be5e7ff, REGISTRY_RIPENCC }, // 91.229.230.0 - 91.229.231.255 { 0x5be5e800, 0x5be5f7ff, REGISTRY_RIPENCC }, // 91.229.232.0 - 91.229.247.255 { 0x5be5f900, 0x5be61aff, REGISTRY_RIPENCC }, // 91.229.249.0 - 91.230.26.255 { 0x5be61c00, 0x5be623ff, REGISTRY_RIPENCC }, // 91.230.28.0 - 91.230.35.255 { 0x5be62400, 0x5be625ff, REGISTRY_RIPENCC }, // 91.230.36.0 - 91.230.37.255 { 0x5be62600, 0x5be66dff, REGISTRY_RIPENCC }, // 91.230.38.0 - 91.230.109.255 { 0x5be67000, 0x5be685ff, REGISTRY_RIPENCC }, // 91.230.112.0 - 91.230.133.255 { 0x5be68700, 0x5be687ff, REGISTRY_RIPENCC }, // 91.230.135.0 - 91.230.135.255 { 0x5be68c00, 0x5be68eff, REGISTRY_RIPENCC }, // 91.230.140.0 - 91.230.142.255 { 0x5be69000, 0x5be692ff, REGISTRY_RIPENCC }, // 91.230.144.0 - 91.230.146.255 { 0x5be69400, 0x5be695ff, REGISTRY_RIPENCC }, // 91.230.148.0 - 91.230.149.255 { 0x5be69600, 0x5be696ff, REGISTRY_RIPENCC }, // 91.230.150.0 - 91.230.150.255 { 0x5be69700, 0x5be697ff, REGISTRY_RIPENCC }, // 91.230.151.0 - 91.230.151.255 { 0x5be69800, 0x5be69bff, REGISTRY_RIPENCC }, // 91.230.152.0 - 91.230.155.255 { 0x5be69c00, 0x5be6b5ff, REGISTRY_RIPENCC }, // 91.230.156.0 - 91.230.181.255 { 0x5be6b800, 0x5be6e3ff, REGISTRY_RIPENCC }, // 91.230.184.0 - 91.230.227.255 { 0x5be6e600, 0x5be72fff, REGISTRY_RIPENCC }, // 91.230.230.0 - 91.231.47.255 { 0x5be73000, 0x5be733ff, REGISTRY_RIPENCC }, // 91.231.48.0 - 91.231.51.255 { 0x5be73400, 0x5be758ff, REGISTRY_RIPENCC }, // 91.231.52.0 - 91.231.88.255 { 0x5be75a00, 0x5be77dff, REGISTRY_RIPENCC }, // 91.231.90.0 - 91.231.125.255 { 0x5be77f00, 0x5be78fff, REGISTRY_RIPENCC }, // 91.231.127.0 - 91.231.143.255 { 0x5be79000, 0x5be790ff, REGISTRY_RIPENCC }, // 91.231.144.0 - 91.231.144.255 { 0x5be79100, 0x5be79bff, REGISTRY_RIPENCC }, // 91.231.145.0 - 91.231.155.255 { 0x5be79d00, 0x5be7c7ff, REGISTRY_RIPENCC }, // 91.231.157.0 - 91.231.199.255 { 0x5be7cc00, 0x5be7ceff, REGISTRY_RIPENCC }, // 91.231.204.0 - 91.231.206.255 { 0x5be7cf00, 0x5be7d3ff, REGISTRY_RIPENCC }, // 91.231.207.0 - 91.231.211.255 { 0x5be7d400, 0x5be7deff, REGISTRY_RIPENCC }, // 91.231.212.0 - 91.231.222.255 { 0x5be7df00, 0x5be7e3ff, REGISTRY_RIPENCC }, // 91.231.223.0 - 91.231.227.255 { 0x5be7e400, 0x5be80fff, REGISTRY_RIPENCC }, // 91.231.228.0 - 91.232.15.255 { 0x5be81000, 0x5be814ff, REGISTRY_RIPENCC }, // 91.232.16.0 - 91.232.20.255 { 0x5be81500, 0x5be82bff, REGISTRY_RIPENCC }, // 91.232.21.0 - 91.232.43.255 { 0x5be82c00, 0x5be82dff, REGISTRY_RIPENCC }, // 91.232.44.0 - 91.232.45.255 { 0x5be82e00, 0x5be836ff, REGISTRY_RIPENCC }, // 91.232.46.0 - 91.232.54.255 { 0x5be83700, 0x5be839ff, REGISTRY_RIPENCC }, // 91.232.55.0 - 91.232.57.255 { 0x5be83a00, 0x5be862ff, REGISTRY_RIPENCC }, // 91.232.58.0 - 91.232.98.255 { 0x5be86400, 0x5be880ff, REGISTRY_RIPENCC }, // 91.232.100.0 - 91.232.128.255 { 0x5be88200, 0x5be895ff, REGISTRY_RIPENCC }, // 91.232.130.0 - 91.232.149.255 { 0x5be89600, 0x5be897ff, REGISTRY_RIPENCC }, // 91.232.150.0 - 91.232.151.255 { 0x5be89800, 0x5be8b5ff, REGISTRY_RIPENCC }, // 91.232.152.0 - 91.232.181.255 { 0x5be8b600, 0x5be8b6ff, REGISTRY_RIPENCC }, // 91.232.182.0 - 91.232.182.255 { 0x5be8b700, 0x5be8b7ff, REGISTRY_RIPENCC }, // 91.232.183.0 - 91.232.183.255 { 0x5be8b800, 0x5be8b9ff, REGISTRY_RIPENCC }, // 91.232.184.0 - 91.232.185.255 { 0x5be8ba00, 0x5be8cfff, REGISTRY_RIPENCC }, // 91.232.186.0 - 91.232.207.255 { 0x5be8d100, 0x5be8e1ff, REGISTRY_RIPENCC }, // 91.232.209.0 - 91.232.225.255 { 0x5be8e200, 0x5be8e3ff, REGISTRY_RIPENCC }, // 91.232.226.0 - 91.232.227.255 { 0x5be8e400, 0x5be8eaff, REGISTRY_RIPENCC }, // 91.232.228.0 - 91.232.234.255 { 0x5be8ec00, 0x5be8fdff, REGISTRY_RIPENCC }, // 91.232.236.0 - 91.232.253.255 { 0x5be8fe00, 0x5be8feff, REGISTRY_RIPENCC }, // 91.232.254.0 - 91.232.254.255 { 0x5be90000, 0x5be903ff, REGISTRY_RIPENCC }, // 91.233.0.0 - 91.233.3.255 { 0x5be90400, 0x5be913ff, REGISTRY_RIPENCC }, // 91.233.4.0 - 91.233.19.255 { 0x5be91500, 0x5be958ff, REGISTRY_RIPENCC }, // 91.233.21.0 - 91.233.88.255 { 0x5be95a00, 0x5be977ff, REGISTRY_RIPENCC }, // 91.233.90.0 - 91.233.119.255 { 0x5be97a00, 0x5be981ff, REGISTRY_RIPENCC }, // 91.233.122.0 - 91.233.129.255 { 0x5be98400, 0x5be995ff, REGISTRY_RIPENCC }, // 91.233.132.0 - 91.233.149.255 { 0x5be99700, 0x5be9bdff, REGISTRY_RIPENCC }, // 91.233.151.0 - 91.233.189.255 { 0x5be9be00, 0x5be9beff, REGISTRY_RIPENCC }, // 91.233.190.0 - 91.233.190.255 { 0x5be9bf00, 0x5be9bfff, REGISTRY_RIPENCC }, // 91.233.191.0 - 91.233.191.255 { 0x5be9c000, 0x5be9c3ff, REGISTRY_RIPENCC }, // 91.233.192.0 - 91.233.195.255 { 0x5be9c400, 0x5be9c7ff, REGISTRY_RIPENCC }, // 91.233.196.0 - 91.233.199.255 { 0x5be9c800, 0x5be9cbff, REGISTRY_RIPENCC }, // 91.233.200.0 - 91.233.203.255 { 0x5be9cc00, 0x5be9f8ff, REGISTRY_RIPENCC }, // 91.233.204.0 - 91.233.248.255 { 0x5be9f900, 0x5be9f9ff, REGISTRY_RIPENCC }, // 91.233.249.0 - 91.233.249.255 { 0x5be9fa00, 0x5bea13ff, REGISTRY_RIPENCC }, // 91.233.250.0 - 91.234.19.255 { 0x5bea1500, 0x5bea15ff, REGISTRY_RIPENCC }, // 91.234.21.0 - 91.234.21.255 { 0x5bea1600, 0x5bea16ff, REGISTRY_RIPENCC }, // 91.234.22.0 - 91.234.22.255 { 0x5bea1700, 0x5bea77ff, REGISTRY_RIPENCC }, // 91.234.23.0 - 91.234.119.255 { 0x5bea7800, 0x5bea7bff, REGISTRY_RIPENCC }, // 91.234.120.0 - 91.234.123.255 { 0x5bea7c00, 0x5bea95ff, REGISTRY_RIPENCC }, // 91.234.124.0 - 91.234.149.255 { 0x5bea9600, 0x5bea97ff, REGISTRY_RIPENCC }, // 91.234.150.0 - 91.234.151.255 { 0x5bea9800, 0x5bea9bff, REGISTRY_RIPENCC }, // 91.234.152.0 - 91.234.155.255 { 0x5bea9c00, 0x5bea9fff, REGISTRY_RIPENCC }, // 91.234.156.0 - 91.234.159.255 { 0x5beaa000, 0x5beadbff, REGISTRY_RIPENCC }, // 91.234.160.0 - 91.234.219.255 { 0x5beadc00, 0x5beadfff, REGISTRY_RIPENCC }, // 91.234.220.0 - 91.234.223.255 { 0x5beae000, 0x5beafdff, REGISTRY_RIPENCC }, // 91.234.224.0 - 91.234.253.255 { 0x5beb0000, 0x5beb02ff, REGISTRY_RIPENCC }, // 91.235.0.0 - 91.235.2.255 { 0x5beb0300, 0x5beb05ff, REGISTRY_RIPENCC }, // 91.235.3.0 - 91.235.5.255 { 0x5beb0600, 0x5beb6bff, REGISTRY_RIPENCC }, // 91.235.6.0 - 91.235.107.255 { 0x5beb6c00, 0x5beb6fff, REGISTRY_RIPENCC }, // 91.235.108.0 - 91.235.111.255 { 0x5beb7000, 0x5beb79ff, REGISTRY_RIPENCC }, // 91.235.112.0 - 91.235.121.255 { 0x5beb7a00, 0x5beb7bff, REGISTRY_RIPENCC }, // 91.235.122.0 - 91.235.123.255 { 0x5beb7c00, 0x5beb81ff, REGISTRY_RIPENCC }, // 91.235.124.0 - 91.235.129.255 { 0x5beb8200, 0x5beb83ff, REGISTRY_RIPENCC }, // 91.235.130.0 - 91.235.131.255 { 0x5beb8400, 0x5beb93ff, REGISTRY_RIPENCC }, // 91.235.132.0 - 91.235.147.255 { 0x5beb9500, 0x5beba5ff, REGISTRY_RIPENCC }, // 91.235.149.0 - 91.235.165.255 { 0x5beba600, 0x5beba7ff, REGISTRY_RIPENCC }, // 91.235.166.0 - 91.235.167.255 { 0x5beba800, 0x5bebcfff, REGISTRY_RIPENCC }, // 91.235.168.0 - 91.235.207.255 { 0x5bebd000, 0x5bebd3ff, REGISTRY_RIPENCC }, // 91.235.208.0 - 91.235.211.255 { 0x5bebd400, 0x5bebf0ff, REGISTRY_RIPENCC }, // 91.235.212.0 - 91.235.240.255 { 0x5bebf200, 0x5bec2dff, REGISTRY_RIPENCC }, // 91.235.242.0 - 91.236.45.255 { 0x5bec2e00, 0x5bec2fff, REGISTRY_RIPENCC }, // 91.236.46.0 - 91.236.47.255 { 0x5bec3000, 0x5bec33ff, REGISTRY_RIPENCC }, // 91.236.48.0 - 91.236.51.255 { 0x5bec3400, 0x5bec34ff, REGISTRY_RIPENCC }, // 91.236.52.0 - 91.236.52.255 { 0x5bec3500, 0x5bec35ff, REGISTRY_RIPENCC }, // 91.236.53.0 - 91.236.53.255 { 0x5bec3600, 0x5bec37ff, REGISTRY_RIPENCC }, // 91.236.54.0 - 91.236.55.255 { 0x5bec3800, 0x5bec4bff, REGISTRY_RIPENCC }, // 91.236.56.0 - 91.236.75.255 { 0x5bec4c00, 0x5bec4dff, REGISTRY_RIPENCC }, // 91.236.76.0 - 91.236.77.255 { 0x5bec4e00, 0x5bec57ff, REGISTRY_RIPENCC }, // 91.236.78.0 - 91.236.87.255 { 0x5bec5800, 0x5bec5bff, REGISTRY_RIPENCC }, // 91.236.88.0 - 91.236.91.255 { 0x5bec5c00, 0x5bec72ff, REGISTRY_RIPENCC }, // 91.236.92.0 - 91.236.114.255 { 0x5bec7400, 0x5bec77ff, REGISTRY_RIPENCC }, // 91.236.116.0 - 91.236.119.255 { 0x5bec7a00, 0x5beccdff, REGISTRY_RIPENCC }, // 91.236.122.0 - 91.236.205.255 { 0x5becce00, 0x5becceff, REGISTRY_RIPENCC }, // 91.236.206.0 - 91.236.206.255 { 0x5beccf00, 0x5bececff, REGISTRY_RIPENCC }, // 91.236.207.0 - 91.236.236.255 { 0x5beced00, 0x5becedff, REGISTRY_RIPENCC }, // 91.236.237.0 - 91.236.237.255 { 0x5becee00, 0x5becefff, REGISTRY_RIPENCC }, // 91.236.238.0 - 91.236.239.255 { 0x5becf000, 0x5becf3ff, REGISTRY_RIPENCC }, // 91.236.240.0 - 91.236.243.255 { 0x5becf400, 0x5bed2bff, REGISTRY_RIPENCC }, // 91.236.244.0 - 91.237.43.255 { 0x5bed2c00, 0x5bed31ff, REGISTRY_RIPENCC }, // 91.237.44.0 - 91.237.49.255 { 0x5bed3200, 0x5bed34ff, REGISTRY_RIPENCC }, // 91.237.50.0 - 91.237.52.255 { 0x5bed3600, 0x5bed5aff, REGISTRY_RIPENCC }, // 91.237.54.0 - 91.237.90.255 { 0x5bed5b00, 0x5bed5dff, REGISTRY_RIPENCC }, // 91.237.91.0 - 91.237.93.255 { 0x5bed5e00, 0x5bed61ff, REGISTRY_RIPENCC }, // 91.237.94.0 - 91.237.97.255 { 0x5bed6200, 0x5bed63ff, REGISTRY_RIPENCC }, // 91.237.98.0 - 91.237.99.255 { 0x5bed6400, 0x5bed98ff, REGISTRY_RIPENCC }, // 91.237.100.0 - 91.237.152.255 { 0x5bed9a00, 0x5bedc0ff, REGISTRY_RIPENCC }, // 91.237.154.0 - 91.237.192.255 { 0x5bedc100, 0x5bedc3ff, REGISTRY_RIPENCC }, // 91.237.193.0 - 91.237.195.255 { 0x5bedc400, 0x5bedc5ff, REGISTRY_RIPENCC }, // 91.237.196.0 - 91.237.197.255 { 0x5bedc700, 0x5bedd6ff, REGISTRY_RIPENCC }, // 91.237.199.0 - 91.237.214.255 { 0x5bedd800, 0x5bee00ff, REGISTRY_RIPENCC }, // 91.237.216.0 - 91.238.0.255 { 0x5bee0200, 0x5bee11ff, REGISTRY_RIPENCC }, // 91.238.2.0 - 91.238.17.255 { 0x5bee1300, 0x5bee20ff, REGISTRY_RIPENCC }, // 91.238.19.0 - 91.238.32.255 { 0x5bee2200, 0x5bee25ff, REGISTRY_RIPENCC }, // 91.238.34.0 - 91.238.37.255 { 0x5bee2600, 0x5bee2bff, REGISTRY_RIPENCC }, // 91.238.38.0 - 91.238.43.255 { 0x5bee2c00, 0x5bee52ff, REGISTRY_RIPENCC }, // 91.238.44.0 - 91.238.82.255 { 0x5bee5500, 0x5bee5bff, REGISTRY_RIPENCC }, // 91.238.85.0 - 91.238.91.255 { 0x5bee5e00, 0x5bee71ff, REGISTRY_RIPENCC }, // 91.238.94.0 - 91.238.113.255 { 0x5bee7300, 0x5beecaff, REGISTRY_RIPENCC }, // 91.238.115.0 - 91.238.202.255 { 0x5beecc00, 0x5beeceff, REGISTRY_RIPENCC }, // 91.238.204.0 - 91.238.206.255 { 0x5beed000, 0x5beed4ff, REGISTRY_RIPENCC }, // 91.238.208.0 - 91.238.212.255 { 0x5beed600, 0x5beed8ff, REGISTRY_RIPENCC }, // 91.238.214.0 - 91.238.216.255 { 0x5beeda00, 0x5beedcff, REGISTRY_RIPENCC }, // 91.238.218.0 - 91.238.220.255 { 0x5beedd00, 0x5beeddff, REGISTRY_RIPENCC }, // 91.238.221.0 - 91.238.221.255 { 0x5beede00, 0x5beeffff, REGISTRY_RIPENCC }, // 91.238.222.0 - 91.238.255.255 { 0x5bef0000, 0x5bef03ff, REGISTRY_RIPENCC }, // 91.239.0.0 - 91.239.3.255 { 0x5bef0400, 0x5bef0eff, REGISTRY_RIPENCC }, // 91.239.4.0 - 91.239.14.255 { 0x5bef1000, 0x5bef17ff, REGISTRY_RIPENCC }, // 91.239.16.0 - 91.239.23.255 { 0x5bef1900, 0x5bef19ff, REGISTRY_RIPENCC }, // 91.239.25.0 - 91.239.25.255 { 0x5bef1a00, 0x5bef1bff, REGISTRY_RIPENCC }, // 91.239.26.0 - 91.239.27.255 { 0x5bef1c00, 0x5bef24ff, REGISTRY_RIPENCC }, // 91.239.28.0 - 91.239.36.255 { 0x5bef2600, 0x5bef81ff, REGISTRY_RIPENCC }, // 91.239.38.0 - 91.239.129.255 { 0x5bef8300, 0x5bef93ff, REGISTRY_RIPENCC }, // 91.239.131.0 - 91.239.147.255 { 0x5bef9600, 0x5bef9cff, REGISTRY_RIPENCC }, // 91.239.150.0 - 91.239.156.255 { 0x5bef9e00, 0x5befa3ff, REGISTRY_RIPENCC }, // 91.239.158.0 - 91.239.163.255 { 0x5befa400, 0x5befa7ff, REGISTRY_RIPENCC }, // 91.239.164.0 - 91.239.167.255 { 0x5befa800, 0x5befb1ff, REGISTRY_RIPENCC }, // 91.239.168.0 - 91.239.177.255 { 0x5befb200, 0x5befb3ff, REGISTRY_RIPENCC }, // 91.239.178.0 - 91.239.179.255 { 0x5befb400, 0x5befdbff, REGISTRY_RIPENCC }, // 91.239.180.0 - 91.239.219.255 { 0x5befdc00, 0x5befe2ff, REGISTRY_RIPENCC }, // 91.239.220.0 - 91.239.226.255 { 0x5befe300, 0x5befedff, REGISTRY_RIPENCC }, // 91.239.227.0 - 91.239.237.255 { 0x5befef00, 0x5bf013ff, REGISTRY_RIPENCC }, // 91.239.239.0 - 91.240.19.255 { 0x5bf01400, 0x5bf017ff, REGISTRY_RIPENCC }, // 91.240.20.0 - 91.240.23.255 { 0x5bf01800, 0x5bf020ff, REGISTRY_RIPENCC }, // 91.240.24.0 - 91.240.32.255 { 0x5bf02200, 0x5bf053ff, REGISTRY_RIPENCC }, // 91.240.34.0 - 91.240.83.255 { 0x5bf05400, 0x5bf057ff, REGISTRY_RIPENCC }, // 91.240.84.0 - 91.240.87.255 { 0x5bf05800, 0x5bf058ff, REGISTRY_RIPENCC }, // 91.240.88.0 - 91.240.88.255 { 0x5bf05a00, 0x5bf07fff, REGISTRY_RIPENCC }, // 91.240.90.0 - 91.240.127.255 { 0x5bf08100, 0x5bf099ff, REGISTRY_RIPENCC }, // 91.240.129.0 - 91.240.153.255 { 0x5bf09a00, 0x5bf09aff, REGISTRY_RIPENCC }, // 91.240.154.0 - 91.240.154.255 { 0x5bf09b00, 0x5bf09bff, REGISTRY_RIPENCC }, // 91.240.155.0 - 91.240.155.255 { 0x5bf09c00, 0x5bf09fff, REGISTRY_RIPENCC }, // 91.240.156.0 - 91.240.159.255 { 0x5bf0a000, 0x5bf0a2ff, REGISTRY_RIPENCC }, // 91.240.160.0 - 91.240.162.255 { 0x5bf0a400, 0x5bf0aeff, REGISTRY_RIPENCC }, // 91.240.164.0 - 91.240.174.255 { 0x5bf0b000, 0x5bf0b1ff, REGISTRY_RIPENCC }, // 91.240.176.0 - 91.240.177.255 { 0x5bf0b200, 0x5bf0b2ff, REGISTRY_RIPENCC }, // 91.240.178.0 - 91.240.178.255 { 0x5bf0b300, 0x5bf0d5ff, REGISTRY_RIPENCC }, // 91.240.179.0 - 91.240.213.255 { 0x5bf0d800, 0x5bf0e5ff, REGISTRY_RIPENCC }, // 91.240.216.0 - 91.240.229.255 { 0x5bf0e600, 0x5bf0e7ff, REGISTRY_RIPENCC }, // 91.240.230.0 - 91.240.231.255 { 0x5bf0e800, 0x5bf10dff, REGISTRY_RIPENCC }, // 91.240.232.0 - 91.241.13.255 { 0x5bf11000, 0x5bf12fff, REGISTRY_RIPENCC }, // 91.241.16.0 - 91.241.47.255 { 0x5bf13400, 0x5bf15cff, REGISTRY_RIPENCC }, // 91.241.52.0 - 91.241.92.255 { 0x5bf15e00, 0x5bf22dff, REGISTRY_RIPENCC }, // 91.241.94.0 - 91.242.45.255 { 0x5bf22e00, 0x5bf233ff, REGISTRY_RIPENCC }, // 91.242.46.0 - 91.242.51.255 { 0x5bf23400, 0x5bf23fff, REGISTRY_RIPENCC }, // 91.242.52.0 - 91.242.63.255 { 0x5bf24000, 0x5bf27fff, REGISTRY_RIPENCC }, // 91.242.64.0 - 91.242.127.255 { 0x5bf28000, 0x5bf2d8ff, REGISTRY_RIPENCC }, // 91.242.128.0 - 91.242.216.255 { 0x5bf2da00, 0x5bf2daff, REGISTRY_RIPENCC }, // 91.242.218.0 - 91.242.218.255 { 0x5bf2dc00, 0x5bf31fff, REGISTRY_RIPENCC }, // 91.242.220.0 - 91.243.31.255 { 0x5bf32000, 0x5bf33fff, REGISTRY_RIPENCC }, // 91.243.32.0 - 91.243.63.255 { 0x5bf34000, 0x5bf34fff, REGISTRY_RIPENCC }, // 91.243.64.0 - 91.243.79.255 { 0x5bf35000, 0x5bf35fff, REGISTRY_RIPENCC }, // 91.243.80.0 - 91.243.95.255 { 0x5bf36000, 0x5bf372ff, REGISTRY_RIPENCC }, // 91.243.96.0 - 91.243.114.255 { 0x5bf37400, 0x5bf3afff, REGISTRY_RIPENCC }, // 91.243.116.0 - 91.243.175.255 { 0x5bf3c000, 0x5bf477ff, REGISTRY_RIPENCC }, // 91.243.192.0 - 91.244.119.255 { 0x5bf47800, 0x5bf47bff, REGISTRY_RIPENCC }, // 91.244.120.0 - 91.244.123.255 { 0x5bf47c00, 0x5bf4b5ff, REGISTRY_RIPENCC }, // 91.244.124.0 - 91.244.181.255 { 0x5bf4b700, 0x5bf4bfff, REGISTRY_RIPENCC }, // 91.244.183.0 - 91.244.191.255 { 0x5bf4d000, 0x5bf557ff, REGISTRY_RIPENCC }, // 91.244.208.0 - 91.245.87.255 { 0x5bf55800, 0x5bf55fff, REGISTRY_RIPENCC }, // 91.245.88.0 - 91.245.95.255 { 0x5bf56000, 0x5bf5afff, REGISTRY_RIPENCC }, // 91.245.96.0 - 91.245.175.255 { 0x5bf5b000, 0x5bf5bfff, REGISTRY_RIPENCC }, // 91.245.176.0 - 91.245.191.255 { 0x5bf5c000, 0x5bf5dcff, REGISTRY_RIPENCC }, // 91.245.192.0 - 91.245.220.255 { 0x5bf5de00, 0x5bf5dfff, REGISTRY_RIPENCC }, // 91.245.222.0 - 91.245.223.255 { 0x5bf60000, 0x5bf60cff, REGISTRY_RIPENCC }, // 91.246.0.0 - 91.246.12.255 { 0x5bf60e00, 0x5bf63fff, REGISTRY_RIPENCC }, // 91.246.14.0 - 91.246.63.255 { 0x5bf64000, 0x5bf64bff, REGISTRY_RIPENCC }, // 91.246.64.0 - 91.246.75.255 { 0x5bf64c00, 0x5bf6abff, REGISTRY_RIPENCC }, // 91.246.76.0 - 91.246.171.255 { 0x5bf6ac00, 0x5bf6c9ff, REGISTRY_RIPENCC }, // 91.246.172.0 - 91.246.201.255 { 0x5bf6ca00, 0x5bf6caff, REGISTRY_RIPENCC }, // 91.246.202.0 - 91.246.202.255 { 0x5bf6cb00, 0x5bf6cfff, REGISTRY_RIPENCC }, // 91.246.203.0 - 91.246.207.255 { 0x5bf6d000, 0x5bf6d7ff, REGISTRY_RIPENCC }, // 91.246.208.0 - 91.246.215.255 { 0x5bf6d800, 0x5bf6d9ff, REGISTRY_RIPENCC }, // 91.246.216.0 - 91.246.217.255 { 0x5bf6da00, 0x5bf7ffff, REGISTRY_RIPENCC }, // 91.246.218.0 - 91.247.255.255 { 0x5bf80000, 0x5c2a27ff, REGISTRY_RIPENCC }, // 91.248.0.0 - 92.42.39.255 { 0x5c2a3000, 0x5c3c1fff, REGISTRY_RIPENCC }, // 92.42.48.0 - 92.60.31.255 { 0x5c3c3000, 0x5c3e6fff, REGISTRY_RIPENCC }, // 92.60.48.0 - 92.62.111.255 { 0x5c3e8000, 0x5c75ffff, REGISTRY_RIPENCC }, // 92.62.128.0 - 92.117.255.255 { 0x5c780000, 0x5cf29fff, REGISTRY_RIPENCC }, // 92.120.0.0 - 92.242.159.255 { 0x5cf2c000, 0x5cf63fff, REGISTRY_RIPENCC }, // 92.242.192.0 - 92.246.63.255 { 0x5cf66000, 0x5cf8ffff, REGISTRY_RIPENCC }, // 92.246.96.0 - 92.248.255.255 { 0x5cf94000, 0x5cf97fff, REGISTRY_RIPENCC }, // 92.249.64.0 - 92.249.127.255 { 0x5cf98000, 0x5d580fff, REGISTRY_RIPENCC }, // 92.249.128.0 - 93.88.15.255 { 0x5d582000, 0x5d5a3fff, REGISTRY_RIPENCC }, // 93.88.32.0 - 93.90.63.255 { 0x5d5a5000, 0x5d5cdfff, REGISTRY_RIPENCC }, // 93.90.80.0 - 93.92.223.255 { 0x5d5ce800, 0x5d5d67ff, REGISTRY_RIPENCC }, // 93.92.232.0 - 93.93.103.255 { 0x5d5d7000, 0x5d5defff, REGISTRY_RIPENCC }, // 93.93.112.0 - 93.93.239.255 { 0x5d5df800, 0x5d7dffff, REGISTRY_RIPENCC }, // 93.93.248.0 - 93.125.255.255 { 0x5d7e0000, 0x5d7e7fff, REGISTRY_RIPENCC }, // 93.126.0.0 - 93.126.127.255 { 0x5d7e8000, 0x5d9cffff, REGISTRY_RIPENCC }, // 93.126.128.0 - 93.156.255.255 { 0x5d9d0000, 0x5d9d67ff, REGISTRY_RIPENCC }, // 93.157.0.0 - 93.157.103.255 { 0x5d9d7000, 0x5d9db7ff, REGISTRY_RIPENCC }, // 93.157.112.0 - 93.157.183.255 { 0x5d9dc000, 0x5d9dffff, REGISTRY_RIPENCC }, // 93.157.192.0 - 93.157.255.255 { 0x5d9e0000, 0x5daeffff, REGISTRY_RIPENCC }, // 93.158.0.0 - 93.174.255.255 { 0x5daf0000, 0x5dafefff, REGISTRY_RIPENCC }, // 93.175.0.0 - 93.175.239.255 { 0x5db00000, 0x5db13fff, REGISTRY_RIPENCC }, // 93.176.0.0 - 93.177.63.255 { 0x5db18000, 0x5db99fff, REGISTRY_RIPENCC }, // 93.177.128.0 - 93.185.159.255 { 0x5db9b000, 0x5dbb7fff, REGISTRY_RIPENCC }, // 93.185.176.0 - 93.187.127.255 { 0x5dbb8800, 0x5dbc37ff, REGISTRY_RIPENCC }, // 93.187.136.0 - 93.188.55.255 { 0x5dbc4000, 0x5dbd77ff, REGISTRY_RIPENCC }, // 93.188.64.0 - 93.189.119.255 { 0x5dbd8000, 0x5dbe07ff, REGISTRY_RIPENCC }, // 93.189.128.0 - 93.190.7.255 { 0x5dbe1000, 0x5dbe1fff, REGISTRY_RIPENCC }, // 93.190.16.0 - 93.190.31.255 { 0x5dbe2800, 0x5dbf6fff, REGISTRY_RIPENCC }, // 93.190.40.0 - 93.191.111.255 { 0x5dbf7800, 0x5e2cffff, REGISTRY_RIPENCC }, // 93.191.120.0 - 94.44.255.255 { 0x5e2d0000, 0x5e2dffff, REGISTRY_RIPENCC }, // 94.45.0.0 - 94.45.255.255 { 0x5e2e0000, 0x5e656fff, REGISTRY_RIPENCC }, // 94.46.0.0 - 94.101.111.255 { 0x5e658000, 0x5e676fff, REGISTRY_RIPENCC }, // 94.101.128.0 - 94.103.111.255 { 0x5e678000, 0x5e7c5fff, REGISTRY_RIPENCC }, // 94.103.128.0 - 94.124.95.255 { 0x5e7c6800, 0x5e7c6fff, REGISTRY_RIPENCC }, // 94.124.104.0 - 94.124.111.255 { 0x5e7c7800, 0x5e7d5fff, REGISTRY_RIPENCC }, // 94.124.120.0 - 94.125.95.255 { 0x5e7d6800, 0x5e8e7fff, REGISTRY_RIPENCC }, // 94.125.104.0 - 94.142.127.255 { 0x5e8e8800, 0x5e8eafff, REGISTRY_RIPENCC }, // 94.142.136.0 - 94.142.175.255 { 0x5e8eb800, 0x5e8f77ff, REGISTRY_RIPENCC }, // 94.142.184.0 - 94.143.119.255 { 0x5e8f8000, 0x5e8f9fff, REGISTRY_RIPENCC }, // 94.143.128.0 - 94.143.159.255 { 0x5e8fa800, 0x5e99ffff, REGISTRY_RIPENCC }, // 94.143.168.0 - 94.153.255.255 { 0x5e9a0000, 0x5e9a7fff, REGISTRY_RIPENCC }, // 94.154.0.0 - 94.154.127.255 { 0x5e9ac000, 0x5e9affff, REGISTRY_RIPENCC }, // 94.154.192.0 - 94.154.255.255 { 0x5e9b0000, 0x5e9dffff, REGISTRY_RIPENCC }, // 94.155.0.0 - 94.157.255.255 { 0x5e9e0000, 0x5e9e0fff, REGISTRY_RIPENCC }, // 94.158.0.0 - 94.158.15.255 { 0x5e9e2000, 0x5e9eefff, REGISTRY_RIPENCC }, // 94.158.32.0 - 94.158.239.255 { 0x5e9f0000, 0x5ebecfff, REGISTRY_RIPENCC }, // 94.159.0.0 - 94.190.207.255 { 0x5ebed000, 0x5ebeefff, REGISTRY_APNIC }, // 94.190.208.0 - 94.190.239.255 { 0x5ebef000, 0x5ec627ff, REGISTRY_RIPENCC }, // 94.190.240.0 - 94.198.39.255 { 0x5ec63200, 0x5ec75fff, REGISTRY_RIPENCC }, // 94.198.50.0 - 94.199.95.255 { 0x5ec76800, 0x5ec787ff, REGISTRY_RIPENCC }, // 94.199.104.0 - 94.199.135.255 { 0x5ec79000, 0x5ee6ffff, REGISTRY_RIPENCC }, // 94.199.144.0 - 94.230.255.255 { 0x5ee70000, 0x5ee76fff, REGISTRY_RIPENCC }, // 94.231.0.0 - 94.231.111.255 { 0x5ee77000, 0x5ee77fff, REGISTRY_RIPENCC }, // 94.231.112.0 - 94.231.127.255 { 0x5ee78000, 0x5ee7cfff, REGISTRY_RIPENCC }, // 94.231.128.0 - 94.231.207.255 { 0x5ee7e000, 0x5ee7efff, REGISTRY_RIPENCC }, // 94.231.224.0 - 94.231.239.255 { 0x5ee7f000, 0x5ee85fff, REGISTRY_RIPENCC }, // 94.231.240.0 - 94.232.95.255 { 0x5ee86000, 0x5ee867ff, REGISTRY_RIPENCC }, // 94.232.96.0 - 94.232.103.255 { 0x5ee86800, 0x5ee897ff, REGISTRY_RIPENCC }, // 94.232.104.0 - 94.232.151.255 { 0x5ee89800, 0x5ee89fff, REGISTRY_RIPENCC }, // 94.232.152.0 - 94.232.159.255 { 0x5ee8a000, 0x5ee8bfff, REGISTRY_RIPENCC }, // 94.232.160.0 - 94.232.191.255 { 0x5ee8c000, 0x5ee8c7ff, REGISTRY_RIPENCC }, // 94.232.192.0 - 94.232.199.255 { 0x5ee8c800, 0x5ee8efff, REGISTRY_RIPENCC }, // 94.232.200.0 - 94.232.239.255 { 0x5ee90000, 0x5ef3ffff, REGISTRY_RIPENCC }, // 94.233.0.0 - 94.243.255.255 { 0x5ef40000, 0x5ef4ffff, REGISTRY_RIPENCC }, // 94.244.0.0 - 94.244.255.255 { 0x5ef50000, 0x5ef787ff, REGISTRY_RIPENCC }, // 94.245.0.0 - 94.247.135.255 { 0x5ef79000, 0x5f81ffff, REGISTRY_RIPENCC }, // 94.247.144.0 - 95.129.255.255 { 0x5f820800, 0x5f82dfff, REGISTRY_RIPENCC }, // 95.130.8.0 - 95.130.223.255 { 0x5f82e800, 0x5fae3fff, REGISTRY_RIPENCC }, // 95.130.232.0 - 95.174.63.255 { 0x5fae4800, 0x5fd703ff, REGISTRY_RIPENCC }, // 95.174.72.0 - 95.215.3.255 { 0x5fd70400, 0x5fd71fff, REGISTRY_RIPENCC }, // 95.215.4.0 - 95.215.31.255 { 0x5fd72000, 0x5fd723ff, REGISTRY_RIPENCC }, // 95.215.32.0 - 95.215.35.255 { 0x5fd72400, 0x5fd72bff, REGISTRY_RIPENCC }, // 95.215.36.0 - 95.215.43.255 { 0x5fd72c00, 0x5fd72fff, REGISTRY_RIPENCC }, // 95.215.44.0 - 95.215.47.255 { 0x5fd73000, 0x5fd73bff, REGISTRY_RIPENCC }, // 95.215.48.0 - 95.215.59.255 { 0x5fd73c00, 0x5fd73fff, REGISTRY_RIPENCC }, // 95.215.60.0 - 95.215.63.255 { 0x5fd74000, 0x5fd74fff, REGISTRY_RIPENCC }, // 95.215.64.0 - 95.215.79.255 { 0x5fd75400, 0x5fd767ff, REGISTRY_RIPENCC }, // 95.215.84.0 - 95.215.103.255 { 0x5fd76800, 0x5fd76bff, REGISTRY_RIPENCC }, // 95.215.104.0 - 95.215.107.255 { 0x5fd76c00, 0x5fd77fff, REGISTRY_RIPENCC }, // 95.215.108.0 - 95.215.127.255 { 0x5fd78000, 0x5fd783ff, REGISTRY_RIPENCC }, // 95.215.128.0 - 95.215.131.255 { 0x5fd78400, 0x5fd78bff, REGISTRY_RIPENCC }, // 95.215.132.0 - 95.215.139.255 { 0x5fd79000, 0x5fd7ffff, REGISTRY_RIPENCC }, // 95.215.144.0 - 95.215.255.255 { 0x5fd80000, 0x5fffffff, REGISTRY_RIPENCC }, // 95.216.0.0 - 95.255.255.255 { 0x60000000, 0x60093fff, REGISTRY_ARIN }, // 96.0.0.0 - 96.9.63.255 { 0x60094000, 0x60095fff, REGISTRY_APNIC }, // 96.9.64.0 - 96.9.95.255 { 0x60096000, 0x60097fff, REGISTRY_ARIN }, // 96.9.96.0 - 96.9.127.255 { 0x60098000, 0x60099fff, REGISTRY_RIPENCC }, // 96.9.128.0 - 96.9.159.255 { 0x6009a000, 0x6009bfff, REGISTRY_APNIC }, // 96.9.160.0 - 96.9.191.255 { 0x6009c000, 0x601e3fff, REGISTRY_ARIN }, // 96.9.192.0 - 96.30.63.255 { 0x601e4000, 0x601e7fff, REGISTRY_APNIC }, // 96.30.64.0 - 96.30.127.255 { 0x601e8000, 0x607d8fff, REGISTRY_ARIN }, // 96.30.128.0 - 96.125.143.255 { 0x607d9000, 0x607d9fff, REGISTRY_RIPENCC }, // 96.125.144.0 - 96.125.159.255 { 0x607da000, 0x643fffff, REGISTRY_ARIN }, // 96.125.160.0 - 100.63.255.255 { 0x64800000, 0x64ffffff, REGISTRY_ARIN }, // 100.128.0.0 - 100.255.255.255 { 0x65000000, 0x65ffffff, REGISTRY_APNIC }, // 101.0.0.0 - 101.255.255.255 { 0x66b50000, 0x66b5dfff, REGISTRY_AFRINIC }, // 102.181.0.0 - 102.181.223.255 { 0x66b60000, 0x66bfffff, REGISTRY_AFRINIC }, // 102.182.0.0 - 102.191.255.255 { 0x66f00000, 0x66ffffff, REGISTRY_AFRINIC }, // 102.240.0.0 - 102.255.255.255 { 0x67000000, 0x67044fff, REGISTRY_APNIC }, // 103.0.0.0 - 103.4.79.255 { 0x67045400, 0x670486ff, REGISTRY_APNIC }, // 103.4.84.0 - 103.4.134.255 { 0x67048800, 0x670677ff, REGISTRY_APNIC }, // 103.4.136.0 - 103.6.119.255 { 0x67068000, 0x6706a5ff, REGISTRY_APNIC }, // 103.6.128.0 - 103.6.165.255 { 0x6706a700, 0x6706e7ff, REGISTRY_APNIC }, // 103.6.167.0 - 103.6.231.255 { 0x6706ec00, 0x670777ff, REGISTRY_APNIC }, // 103.6.236.0 - 103.7.119.255 { 0x67077c00, 0x67083fff, REGISTRY_APNIC }, // 103.7.124.0 - 103.8.63.255 { 0x67084400, 0x6708b7ff, REGISTRY_APNIC }, // 103.8.68.0 - 103.8.183.255 { 0x6708bc00, 0x670a09ff, REGISTRY_APNIC }, // 103.8.188.0 - 103.10.9.255 { 0x670a0b00, 0x670a43ff, REGISTRY_APNIC }, // 103.10.11.0 - 103.10.67.255 { 0x670a4800, 0x670a6bff, REGISTRY_APNIC }, // 103.10.72.0 - 103.10.107.255 { 0x670a6d00, 0x670a6eff, REGISTRY_APNIC }, // 103.10.109.0 - 103.10.110.255 { 0x670a7000, 0x670abfff, REGISTRY_APNIC }, // 103.10.112.0 - 103.10.191.255 { 0x670ac400, 0x670b3fff, REGISTRY_APNIC }, // 103.10.196.0 - 103.11.63.255 { 0x670b4000, 0x670b43ff, REGISTRY_ARIN }, // 103.11.64.0 - 103.11.67.255 { 0x670b4400, 0x670bc3ff, REGISTRY_APNIC }, // 103.11.68.0 - 103.11.195.255 { 0x670bc800, 0x670bffff, REGISTRY_APNIC }, // 103.11.200.0 - 103.11.255.255 { 0x670c0100, 0x670cb3ff, REGISTRY_APNIC }, // 103.12.1.0 - 103.12.179.255 { 0x670cb800, 0x670cd3ff, REGISTRY_APNIC }, // 103.12.184.0 - 103.12.211.255 { 0x670cd400, 0x670cd5ff, REGISTRY_ARIN }, // 103.12.212.0 - 103.12.213.255 { 0x670cd600, 0x670cdfff, REGISTRY_APNIC }, // 103.12.214.0 - 103.12.223.255 { 0x670ce400, 0x670cf3ff, REGISTRY_APNIC }, // 103.12.228.0 - 103.12.243.255 { 0x670cf500, 0x670d87ff, REGISTRY_APNIC }, // 103.12.245.0 - 103.13.135.255 { 0x670d8c00, 0x670da3ff, REGISTRY_APNIC }, // 103.13.140.0 - 103.13.163.255 { 0x670da800, 0x670dbfff, REGISTRY_APNIC }, // 103.13.168.0 - 103.13.191.255 { 0x670dc400, 0x670dcbff, REGISTRY_APNIC }, // 103.13.196.0 - 103.13.203.255 { 0x670dd000, 0x670e15ff, REGISTRY_APNIC }, // 103.13.208.0 - 103.14.21.255 { 0x670e1800, 0x670e37ff, REGISTRY_APNIC }, // 103.14.24.0 - 103.14.55.255 { 0x670e3c00, 0x670ea7ff, REGISTRY_APNIC }, // 103.14.60.0 - 103.14.167.255 { 0x670eac00, 0x670edfff, REGISTRY_APNIC }, // 103.14.172.0 - 103.14.223.255 { 0x670ee400, 0x670f0bff, REGISTRY_APNIC }, // 103.14.228.0 - 103.15.11.255 { 0x670f1000, 0x670f25ff, REGISTRY_APNIC }, // 103.15.16.0 - 103.15.37.255 { 0x670f2700, 0x670f57ff, REGISTRY_APNIC }, // 103.15.39.0 - 103.15.87.255 { 0x670f6000, 0x670fdbff, REGISTRY_APNIC }, // 103.15.96.0 - 103.15.219.255 { 0x670fe000, 0x670fe2ff, REGISTRY_APNIC }, // 103.15.224.0 - 103.15.226.255 { 0x670fe400, 0x671073ff, REGISTRY_APNIC }, // 103.15.228.0 - 103.16.115.255 { 0x67107800, 0x6710d3ff, REGISTRY_APNIC }, // 103.16.120.0 - 103.16.211.255 { 0x6710d800, 0x6710f7ff, REGISTRY_APNIC }, // 103.16.216.0 - 103.16.247.255 { 0x6710fc00, 0x671103ff, REGISTRY_APNIC }, // 103.16.252.0 - 103.17.3.255 { 0x67110800, 0x67111fff, REGISTRY_APNIC }, // 103.17.8.0 - 103.17.31.255 { 0x67112400, 0x671193ff, REGISTRY_APNIC }, // 103.17.36.0 - 103.17.147.255 { 0x67119800, 0x67122bff, REGISTRY_APNIC }, // 103.17.152.0 - 103.18.43.255 { 0x67123000, 0x6712b7ff, REGISTRY_APNIC }, // 103.18.48.0 - 103.18.183.255 { 0x6712bc00, 0x6712cbff, REGISTRY_APNIC }, // 103.18.188.0 - 103.18.203.255 { 0x6712d000, 0x6712e7ff, REGISTRY_APNIC }, // 103.18.208.0 - 103.18.231.255 { 0x6712ec00, 0x67131bff, REGISTRY_APNIC }, // 103.18.236.0 - 103.19.27.255 { 0x67132000, 0x67132fff, REGISTRY_APNIC }, // 103.19.32.0 - 103.19.47.255 { 0x67133400, 0x671353ff, REGISTRY_APNIC }, // 103.19.52.0 - 103.19.83.255 { 0x67135400, 0x671357ff, REGISTRY_ARIN }, // 103.19.84.0 - 103.19.87.255 { 0x67135800, 0x671377ff, REGISTRY_APNIC }, // 103.19.88.0 - 103.19.119.255 { 0x67137c00, 0x67139bff, REGISTRY_APNIC }, // 103.19.124.0 - 103.19.155.255 { 0x6713a000, 0x67145fff, REGISTRY_APNIC }, // 103.19.160.0 - 103.20.95.255 { 0x67146800, 0x67146bff, REGISTRY_APNIC }, // 103.20.104.0 - 103.20.107.255 { 0x67147000, 0x6714c5ff, REGISTRY_APNIC }, // 103.20.112.0 - 103.20.197.255 { 0x6714c800, 0x6714daff, REGISTRY_APNIC }, // 103.20.200.0 - 103.20.218.255 { 0x6714dc00, 0x6714e3ff, REGISTRY_APNIC }, // 103.20.220.0 - 103.20.227.255 { 0x6714e800, 0x6714efff, REGISTRY_APNIC }, // 103.20.232.0 - 103.20.239.255 { 0x6714f400, 0x671503ff, REGISTRY_APNIC }, // 103.20.244.0 - 103.21.3.255 { 0x67150800, 0x67155fff, REGISTRY_APNIC }, // 103.21.8.0 - 103.21.95.255 { 0x67156400, 0x6715bbff, REGISTRY_APNIC }, // 103.21.100.0 - 103.21.187.255 { 0x6715c000, 0x6715c2ff, REGISTRY_APNIC }, // 103.21.192.0 - 103.21.194.255 { 0x6715c400, 0x6715dbff, REGISTRY_APNIC }, // 103.21.196.0 - 103.21.219.255 { 0x6715e000, 0x67165fff, REGISTRY_APNIC }, // 103.21.224.0 - 103.22.95.255 { 0x67166400, 0x6716cfff, REGISTRY_APNIC }, // 103.22.100.0 - 103.22.207.255 { 0x6716d100, 0x671757ff, REGISTRY_APNIC }, // 103.22.209.0 - 103.23.87.255 { 0x67176000, 0x6717abff, REGISTRY_APNIC }, // 103.23.96.0 - 103.23.171.255 { 0x6717ae00, 0x6717c3ff, REGISTRY_APNIC }, // 103.23.174.0 - 103.23.195.255 { 0x6717c800, 0x6717f6ff, REGISTRY_APNIC }, // 103.23.200.0 - 103.23.246.255 { 0x6717f800, 0x6717fbff, REGISTRY_APNIC }, // 103.23.248.0 - 103.23.251.255 { 0x67180000, 0x6719a3ff, REGISTRY_APNIC }, // 103.24.0.0 - 103.25.163.255 { 0x6719a500, 0x6719dbff, REGISTRY_APNIC }, // 103.25.165.0 - 103.25.219.255 { 0x6719dd00, 0x671a1bff, REGISTRY_APNIC }, // 103.25.221.0 - 103.26.27.255 { 0x671a2000, 0x671abbff, REGISTRY_APNIC }, // 103.26.32.0 - 103.26.187.255 { 0x671ac000, 0x671bbfff, REGISTRY_APNIC }, // 103.26.192.0 - 103.27.191.255 { 0x671bc400, 0x671c43ff, REGISTRY_APNIC }, // 103.27.196.0 - 103.28.67.255 { 0x671c4400, 0x671c47ff, REGISTRY_ARIN }, // 103.28.68.0 - 103.28.71.255 { 0x671c4800, 0x671cffff, REGISTRY_APNIC }, // 103.28.72.0 - 103.28.255.255 { 0x671d0400, 0x671d07ff, REGISTRY_APNIC }, // 103.29.4.0 - 103.29.7.255 { 0x671d0c00, 0x671d1cff, REGISTRY_APNIC }, // 103.29.12.0 - 103.29.28.255 { 0x671d1e00, 0x671d29ff, REGISTRY_APNIC }, // 103.29.30.0 - 103.29.41.255 { 0x671d2b00, 0x671db3ff, REGISTRY_APNIC }, // 103.29.43.0 - 103.29.179.255 { 0x671db800, 0x671debff, REGISTRY_APNIC }, // 103.29.184.0 - 103.29.235.255 { 0x671df000, 0x671e07ff, REGISTRY_APNIC }, // 103.29.240.0 - 103.30.7.255 { 0x671e0c00, 0x671e3bff, REGISTRY_APNIC }, // 103.30.12.0 - 103.30.59.255 { 0x671e4000, 0x671e67ff, REGISTRY_APNIC }, // 103.30.64.0 - 103.30.103.255 { 0x671e6c00, 0x671ed3ff, REGISTRY_APNIC }, // 103.30.108.0 - 103.30.211.255 { 0x671ed500, 0x671f07ff, REGISTRY_APNIC }, // 103.30.213.0 - 103.31.7.255 { 0x671f0c00, 0x671f27ff, REGISTRY_APNIC }, // 103.31.12.0 - 103.31.39.255 { 0x671f2c00, 0x671f73ff, REGISTRY_APNIC }, // 103.31.44.0 - 103.31.115.255 { 0x671f7800, 0x672371ff, REGISTRY_APNIC }, // 103.31.120.0 - 103.35.113.255 { 0x67237400, 0x6723d7ff, REGISTRY_APNIC }, // 103.35.116.0 - 103.35.215.255 { 0x6723d900, 0x672503ff, REGISTRY_APNIC }, // 103.35.217.0 - 103.37.3.255 { 0x67250800, 0x672515ff, REGISTRY_APNIC }, // 103.37.8.0 - 103.37.21.255 { 0x67251800, 0x672557ff, REGISTRY_APNIC }, // 103.37.24.0 - 103.37.87.255 { 0x67255c00, 0x67255fff, REGISTRY_APNIC }, // 103.37.92.0 - 103.37.95.255 { 0x67256300, 0x6725b7ff, REGISTRY_APNIC }, // 103.37.99.0 - 103.37.183.255 { 0x6725bc00, 0x6725c9ff, REGISTRY_APNIC }, // 103.37.188.0 - 103.37.201.255 { 0x6725cc00, 0x672633ff, REGISTRY_APNIC }, // 103.37.204.0 - 103.38.51.255 { 0x67263800, 0x67266bff, REGISTRY_APNIC }, // 103.38.56.0 - 103.38.107.255 { 0x67267000, 0x6726b3ff, REGISTRY_APNIC }, // 103.38.112.0 - 103.38.179.255 { 0x6726b800, 0x6726cfff, REGISTRY_APNIC }, // 103.38.184.0 - 103.38.207.255 { 0x6726d400, 0x6726d7ff, REGISTRY_APNIC }, // 103.38.212.0 - 103.38.215.255 { 0x6726da00, 0x6726ebff, REGISTRY_APNIC }, // 103.38.218.0 - 103.38.235.255 { 0x6726f000, 0x6726f7ff, REGISTRY_APNIC }, // 103.38.240.0 - 103.38.247.255 { 0x6726fc00, 0x67271fff, REGISTRY_APNIC }, // 103.38.252.0 - 103.39.31.255 { 0x67272400, 0x672743ff, REGISTRY_APNIC }, // 103.39.36.0 - 103.39.67.255 { 0x67274c00, 0x672777ff, REGISTRY_APNIC }, // 103.39.76.0 - 103.39.119.255 { 0x67277a00, 0x67277bff, REGISTRY_APNIC }, // 103.39.122.0 - 103.39.123.255 { 0x67278000, 0x67278fff, REGISTRY_APNIC }, // 103.39.128.0 - 103.39.143.255 { 0x67279400, 0x6727c3ff, REGISTRY_APNIC }, // 103.39.148.0 - 103.39.195.255 { 0x6727c800, 0x672833ff, REGISTRY_APNIC }, // 103.39.200.0 - 103.40.51.255 { 0x67283600, 0x67289bff, REGISTRY_APNIC }, // 103.40.54.0 - 103.40.155.255 { 0x6728a000, 0x6728a5ff, REGISTRY_APNIC }, // 103.40.160.0 - 103.40.165.255 { 0x6728a800, 0x672947ff, REGISTRY_APNIC }, // 103.40.168.0 - 103.41.71.255 { 0x67295000, 0x67296fff, REGISTRY_APNIC }, // 103.41.80.0 - 103.41.111.255 { 0x67297400, 0x6729f7ff, REGISTRY_APNIC }, // 103.41.116.0 - 103.41.247.255 { 0x6729fc00, 0x672a03ff, REGISTRY_APNIC }, // 103.41.252.0 - 103.42.3.255 { 0x672a0800, 0x672a11ff, REGISTRY_APNIC }, // 103.42.8.0 - 103.42.17.255 { 0x672a1300, 0x672a31ff, REGISTRY_APNIC }, // 103.42.19.0 - 103.42.49.255 { 0x672a3300, 0x672a33ff, REGISTRY_APNIC }, // 103.42.51.0 - 103.42.51.255 { 0x672a3800, 0x672a3bff, REGISTRY_APNIC }, // 103.42.56.0 - 103.42.59.255 { 0x672a4000, 0x672a7fff, REGISTRY_APNIC }, // 103.42.64.0 - 103.42.127.255 { 0x672a8400, 0x672aa3ff, REGISTRY_APNIC }, // 103.42.132.0 - 103.42.163.255 { 0x672aa800, 0x672ac7ff, REGISTRY_APNIC }, // 103.42.168.0 - 103.42.199.255 { 0x672acc00, 0x672adbff, REGISTRY_APNIC }, // 103.42.204.0 - 103.42.219.255 { 0x672ae000, 0x672ae3ff, REGISTRY_APNIC }, // 103.42.224.0 - 103.42.227.255 { 0x672ae800, 0x672aefff, REGISTRY_APNIC }, // 103.42.232.0 - 103.42.239.255 { 0x672af800, 0x672b17ff, REGISTRY_APNIC }, // 103.42.248.0 - 103.43.23.255 { 0x672b1c00, 0x672b5dff, REGISTRY_APNIC }, // 103.43.28.0 - 103.43.93.255 { 0x672b6000, 0x672ba3ff, REGISTRY_APNIC }, // 103.43.96.0 - 103.43.163.255 { 0x672ba800, 0x672c07ff, REGISTRY_APNIC }, // 103.43.168.0 - 103.44.7.255 { 0x672c0c00, 0x672c12ff, REGISTRY_APNIC }, // 103.44.12.0 - 103.44.18.255 { 0x672c1400, 0x672c97ff, REGISTRY_APNIC }, // 103.44.20.0 - 103.44.151.255 { 0x672c9c00, 0x672e03ff, REGISTRY_APNIC }, // 103.44.156.0 - 103.46.3.255 { 0x672e0c00, 0x672f07ff, REGISTRY_APNIC }, // 103.46.12.0 - 103.47.7.255 { 0x672f0c00, 0x672f3dff, REGISTRY_APNIC }, // 103.47.12.0 - 103.47.61.255 { 0x672f3e00, 0x672f3fff, REGISTRY_ARIN }, // 103.47.62.0 - 103.47.63.255 { 0x672f4000, 0x672f7fff, REGISTRY_APNIC }, // 103.47.64.0 - 103.47.127.255 { 0x672f8400, 0x673027ff, REGISTRY_APNIC }, // 103.47.132.0 - 103.48.39.255 { 0x67302c00, 0x67309fff, REGISTRY_APNIC }, // 103.48.44.0 - 103.48.159.255 { 0x6730a400, 0x6730c7ff, REGISTRY_APNIC }, // 103.48.164.0 - 103.48.199.255 { 0x6730c900, 0x67317bff, REGISTRY_APNIC }, // 103.48.201.0 - 103.49.123.255 { 0x67317e00, 0x6731ebff, REGISTRY_APNIC }, // 103.49.126.0 - 103.49.235.255 { 0x6731f000, 0x673213ff, REGISTRY_APNIC }, // 103.49.240.0 - 103.50.19.255 { 0x67321800, 0x67333eff, REGISTRY_APNIC }, // 103.50.24.0 - 103.51.62.255 { 0x67334000, 0x673353ff, REGISTRY_APNIC }, // 103.51.64.0 - 103.51.83.255 { 0x67335800, 0x673367ff, REGISTRY_APNIC }, // 103.51.88.0 - 103.51.103.255 { 0x67336c00, 0x673377ff, REGISTRY_APNIC }, // 103.51.108.0 - 103.51.119.255 { 0x67337c00, 0x673380ff, REGISTRY_APNIC }, // 103.51.124.0 - 103.51.128.255 { 0x67338200, 0x6733cbff, REGISTRY_APNIC }, // 103.51.130.0 - 103.51.203.255 { 0x6733d000, 0x673403ff, REGISTRY_APNIC }, // 103.51.208.0 - 103.52.3.255 { 0x67340700, 0x673484ff, REGISTRY_APNIC }, // 103.52.7.0 - 103.52.132.255 { 0x67348600, 0x673507ff, REGISTRY_APNIC }, // 103.52.134.0 - 103.53.7.255 { 0x67350c00, 0x67351bff, REGISTRY_APNIC }, // 103.53.12.0 - 103.53.27.255 { 0x67352000, 0x67359bff, REGISTRY_APNIC }, // 103.53.32.0 - 103.53.155.255 { 0x6735a000, 0x67364bff, REGISTRY_APNIC }, // 103.53.160.0 - 103.54.75.255 { 0x67365400, 0x6736a7ff, REGISTRY_APNIC }, // 103.54.84.0 - 103.54.167.255 { 0x6736ac00, 0x6736afff, REGISTRY_APNIC }, // 103.54.172.0 - 103.54.175.255 { 0x6736b400, 0x673713ff, REGISTRY_APNIC }, // 103.54.180.0 - 103.55.19.255 { 0x67371800, 0x6737f7ff, REGISTRY_APNIC }, // 103.55.24.0 - 103.55.247.255 { 0x6737fc00, 0x67384fff, REGISTRY_APNIC }, // 103.55.252.0 - 103.56.79.255 { 0x67385400, 0x67385bff, REGISTRY_APNIC }, // 103.56.84.0 - 103.56.91.255 { 0x67386000, 0x67393fff, REGISTRY_APNIC }, // 103.56.96.0 - 103.57.63.255 { 0x67394400, 0x67397fff, REGISTRY_APNIC }, // 103.57.68.0 - 103.57.127.255 { 0x67398400, 0x6739dfff, REGISTRY_APNIC }, // 103.57.132.0 - 103.57.223.255 { 0x6739e200, 0x673a76ff, REGISTRY_APNIC }, // 103.57.226.0 - 103.58.118.255 { 0x673a7800, 0x673ab4ff, REGISTRY_APNIC }, // 103.58.120.0 - 103.58.180.255 { 0x673ab600, 0x673ac3ff, REGISTRY_APNIC }, // 103.58.182.0 - 103.58.195.255 { 0x673ac800, 0x673b9fff, REGISTRY_APNIC }, // 103.58.200.0 - 103.59.159.255 { 0x673ba400, 0x673bd7ff, REGISTRY_APNIC }, // 103.59.164.0 - 103.59.215.255 { 0x673bdc00, 0x673c03ff, REGISTRY_APNIC }, // 103.59.220.0 - 103.60.3.255 { 0x673c0800, 0x673c57ff, REGISTRY_APNIC }, // 103.60.8.0 - 103.60.87.255 { 0x673c6000, 0x673ccbff, REGISTRY_APNIC }, // 103.60.96.0 - 103.60.203.255 { 0x673cd000, 0x673d03ff, REGISTRY_APNIC }, // 103.60.208.0 - 103.61.3.255 { 0x673d0800, 0x673d0fff, REGISTRY_APNIC }, // 103.61.8.0 - 103.61.15.255 { 0x673d1400, 0x673de7ff, REGISTRY_APNIC }, // 103.61.20.0 - 103.61.231.255 { 0x673dec00, 0x673e93ff, REGISTRY_APNIC }, // 103.61.236.0 - 103.62.147.255 { 0x673e9800, 0x673fe7ff, REGISTRY_APNIC }, // 103.62.152.0 - 103.63.231.255 { 0x673fe900, 0x674173ff, REGISTRY_APNIC }, // 103.63.233.0 - 103.65.115.255 { 0x67418c00, 0x674327ff, REGISTRY_APNIC }, // 103.65.140.0 - 103.67.39.255 { 0x67436400, 0x6744e7ff, REGISTRY_APNIC }, // 103.67.100.0 - 103.68.231.255 { 0x6744ec00, 0x6749b7ff, REGISTRY_APNIC }, // 103.68.236.0 - 103.73.183.255 { 0x6749bc00, 0x675793ff, REGISTRY_APNIC }, // 103.73.188.0 - 103.87.147.255 { 0x67579800, 0x675fc0ff, REGISTRY_APNIC }, // 103.87.152.0 - 103.95.192.255 { 0x675fc200, 0x675fcbff, REGISTRY_APNIC }, // 103.95.194.0 - 103.95.203.255 { 0x67c00000, 0x67c147ff, REGISTRY_APNIC }, // 103.192.0.0 - 103.193.71.255 { 0x67c14c00, 0x67c1a3ff, REGISTRY_APNIC }, // 103.193.76.0 - 103.193.163.255 { 0x67c1a500, 0x67c1afff, REGISTRY_APNIC }, // 103.193.165.0 - 103.193.175.255 { 0x67c1b400, 0x67c2e3ff, REGISTRY_APNIC }, // 103.193.180.0 - 103.194.227.255 { 0x67c2e500, 0x67c310ff, REGISTRY_APNIC }, // 103.194.229.0 - 103.195.16.255 { 0x67c31200, 0x67c31bff, REGISTRY_APNIC }, // 103.195.18.0 - 103.195.27.255 { 0x67c31d00, 0x67c40eff, REGISTRY_APNIC }, // 103.195.29.0 - 103.196.14.255 { 0x67c41000, 0x67c454ff, REGISTRY_APNIC }, // 103.196.16.0 - 103.196.84.255 { 0x67c45600, 0x67c48fff, REGISTRY_APNIC }, // 103.196.86.0 - 103.196.143.255 { 0x67c49400, 0x67c497ff, REGISTRY_APNIC }, // 103.196.148.0 - 103.196.151.255 { 0x67c49c00, 0x67c4a3ff, REGISTRY_APNIC }, // 103.196.156.0 - 103.196.163.255 { 0x67c4a800, 0x67c4afff, REGISTRY_APNIC }, // 103.196.168.0 - 103.196.175.255 { 0x67c4b400, 0x67c4b7ff, REGISTRY_ARIN }, // 103.196.180.0 - 103.196.183.255 { 0x67c4bc00, 0x67c531ff, REGISTRY_APNIC }, // 103.196.188.0 - 103.197.49.255 { 0x67c53300, 0x67c59bff, REGISTRY_APNIC }, // 103.197.51.0 - 103.197.155.255 { 0x67c5a000, 0x67c5fbff, REGISTRY_APNIC }, // 103.197.160.0 - 103.197.251.255 { 0x67c60000, 0x67c619ff, REGISTRY_APNIC }, // 103.198.0.0 - 103.198.25.255 { 0x67c61c00, 0x67c65dff, REGISTRY_APNIC }, // 103.198.28.0 - 103.198.93.255 { 0x67c66000, 0x67c697ff, REGISTRY_APNIC }, // 103.198.96.0 - 103.198.151.255 { 0x67c69c00, 0x67c6d2ff, REGISTRY_APNIC }, // 103.198.156.0 - 103.198.210.255 { 0x67c6d400, 0x67c78bff, REGISTRY_APNIC }, // 103.198.212.0 - 103.199.139.255 { 0x67c79000, 0x67c8cbff, REGISTRY_APNIC }, // 103.199.144.0 - 103.200.203.255 { 0x67c8d000, 0x67cb57ff, REGISTRY_APNIC }, // 103.200.208.0 - 103.203.87.255 { 0x67cb5b00, 0x67cc73ff, REGISTRY_APNIC }, // 103.203.91.0 - 103.204.115.255 { 0x67cc7500, 0x67cd23ff, REGISTRY_APNIC }, // 103.204.117.0 - 103.205.35.255 { 0x67cd2600, 0x67ce0fff, REGISTRY_APNIC }, // 103.205.38.0 - 103.206.15.255 { 0x67ce1400, 0x67ce1cff, REGISTRY_APNIC }, // 103.206.20.0 - 103.206.28.255 { 0x67ce1e00, 0x67ce53ff, REGISTRY_APNIC }, // 103.206.30.0 - 103.206.83.255 { 0x67ce5400, 0x67ce57ff, REGISTRY_ARIN }, // 103.206.84.0 - 103.206.87.255 { 0x67ce5800, 0x67ce61ff, REGISTRY_APNIC }, // 103.206.88.0 - 103.206.97.255 { 0x67ce6300, 0x67ce99ff, REGISTRY_APNIC }, // 103.206.99.0 - 103.206.153.255 { 0x67ce9c00, 0x67ce9dff, REGISTRY_APNIC }, // 103.206.156.0 - 103.206.157.255 { 0x67ce9f00, 0x67cf57ff, REGISTRY_APNIC }, // 103.206.159.0 - 103.207.87.255 { 0x67cf5c00, 0x67d16bff, REGISTRY_APNIC }, // 103.207.92.0 - 103.209.107.255 { 0x67d16e00, 0x67d199ff, REGISTRY_APNIC }, // 103.209.110.0 - 103.209.153.255 { 0x67d19c00, 0x67d243ff, REGISTRY_APNIC }, // 103.209.156.0 - 103.210.67.255 { 0x67d24800, 0x67d271ff, REGISTRY_APNIC }, // 103.210.72.0 - 103.210.113.255 { 0x67d27400, 0x67d27dff, REGISTRY_APNIC }, // 103.210.116.0 - 103.210.125.255 { 0x67d28400, 0x67d2d1ff, REGISTRY_APNIC }, // 103.210.132.0 - 103.210.209.255 { 0x67d2d300, 0x67d31aff, REGISTRY_APNIC }, // 103.210.211.0 - 103.211.26.255 { 0x67d31c00, 0x67d3c7ff, REGISTRY_APNIC }, // 103.211.28.0 - 103.211.199.255 { 0x67d3d000, 0x67d49fff, REGISTRY_APNIC }, // 103.211.208.0 - 103.212.159.255 { 0x67d4a400, 0x67d4abff, REGISTRY_APNIC }, // 103.212.164.0 - 103.212.171.255 { 0x67d4b000, 0x67d4b1ff, REGISTRY_APNIC }, // 103.212.176.0 - 103.212.177.255 { 0x67d4b400, 0x67d4e3ff, REGISTRY_APNIC }, // 103.212.180.0 - 103.212.227.255 { 0x67d4e800, 0x67d5c3ff, REGISTRY_APNIC }, // 103.212.232.0 - 103.213.195.255 { 0x67d5c800, 0x67d5e7ff, REGISTRY_APNIC }, // 103.213.200.0 - 103.213.231.255 { 0x67d5ec00, 0x67d65fff, REGISTRY_APNIC }, // 103.213.236.0 - 103.214.95.255 { 0x67d66200, 0x67d7b3ff, REGISTRY_APNIC }, // 103.214.98.0 - 103.215.179.255 { 0x67d7b800, 0x67d961ff, REGISTRY_APNIC }, // 103.215.184.0 - 103.217.97.255 { 0x67d96400, 0x67e036ff, REGISTRY_APNIC }, // 103.217.100.0 - 103.224.54.255 { 0x67e03800, 0x67e04bff, REGISTRY_APNIC }, // 103.224.56.0 - 103.224.75.255 { 0x67e05000, 0x67e05bff, REGISTRY_APNIC }, // 103.224.80.0 - 103.224.91.255 { 0x67e06000, 0x67e07bff, REGISTRY_APNIC }, // 103.224.96.0 - 103.224.123.255 { 0x67e07f00, 0x67e0abff, REGISTRY_APNIC }, // 103.224.127.0 - 103.224.171.255 { 0x67e0b000, 0x67e1c7ff, REGISTRY_APNIC }, // 103.224.176.0 - 103.225.199.255 { 0x67e1c800, 0x67e1cbff, REGISTRY_RIPENCC }, // 103.225.200.0 - 103.225.203.255 { 0x67e1cc00, 0x67e1f2ff, REGISTRY_APNIC }, // 103.225.204.0 - 103.225.242.255 { 0x67e1f400, 0x67e1fbff, REGISTRY_APNIC }, // 103.225.244.0 - 103.225.251.255 { 0x67e20000, 0x67e3f7ff, REGISTRY_APNIC }, // 103.226.0.0 - 103.227.247.255 { 0x67e3fc00, 0x67e411ff, REGISTRY_APNIC }, // 103.227.252.0 - 103.228.17.255 { 0x67e41300, 0x67e42fff, REGISTRY_APNIC }, // 103.228.19.0 - 103.228.47.255 { 0x67e43100, 0x67e447ff, REGISTRY_APNIC }, // 103.228.49.0 - 103.228.71.255 { 0x67e44c00, 0x67e4ffff, REGISTRY_APNIC }, // 103.228.76.0 - 103.228.255.255 { 0x67e50100, 0x67e50dff, REGISTRY_APNIC }, // 103.229.1.0 - 103.229.13.255 { 0x67e51000, 0x67e533ff, REGISTRY_APNIC }, // 103.229.16.0 - 103.229.51.255 { 0x67e53800, 0x67e560ff, REGISTRY_APNIC }, // 103.229.56.0 - 103.229.96.255 { 0x67e56200, 0x67e582ff, REGISTRY_APNIC }, // 103.229.98.0 - 103.229.130.255 { 0x67e58400, 0x67e5bbff, REGISTRY_APNIC }, // 103.229.132.0 - 103.229.187.255 { 0x67e5c000, 0x67e5e7ff, REGISTRY_APNIC }, // 103.229.192.0 - 103.229.231.255 { 0x67e5ec00, 0x67e651ff, REGISTRY_APNIC }, // 103.229.236.0 - 103.230.81.255 { 0x67e65300, 0x67e65bff, REGISTRY_APNIC }, // 103.230.83.0 - 103.230.91.255 { 0x67e66000, 0x67e67fff, REGISTRY_APNIC }, // 103.230.96.0 - 103.230.127.255 { 0x67e68400, 0x67e6afff, REGISTRY_APNIC }, // 103.230.132.0 - 103.230.175.255 { 0x67e6b400, 0x67e6f3ff, REGISTRY_APNIC }, // 103.230.180.0 - 103.230.243.255 { 0x67e6f800, 0x67e717ff, REGISTRY_APNIC }, // 103.230.248.0 - 103.231.23.255 { 0x67e71a00, 0x67e787ff, REGISTRY_APNIC }, // 103.231.26.0 - 103.231.135.255 { 0x67e78800, 0x67e78bff, REGISTRY_RIPENCC }, // 103.231.136.0 - 103.231.139.255 { 0x67e78c00, 0x67e813ff, REGISTRY_APNIC }, // 103.231.140.0 - 103.232.19.255 { 0x67e81800, 0x67e8a3ff, REGISTRY_APNIC }, // 103.232.24.0 - 103.232.163.255 { 0x67e8a800, 0x67e8cdff, REGISTRY_APNIC }, // 103.232.168.0 - 103.232.205.255 { 0x67e8ce00, 0x67e8cfff, REGISTRY_ARIN }, // 103.232.206.0 - 103.232.207.255 { 0x67e8d000, 0x67e9a1ff, REGISTRY_APNIC }, // 103.232.208.0 - 103.233.161.255 { 0x67e9a400, 0x67ea1bff, REGISTRY_APNIC }, // 103.233.164.0 - 103.234.27.255 { 0x67ea2400, 0x67eb9fff, REGISTRY_APNIC }, // 103.234.36.0 - 103.235.159.255 { 0x67eba400, 0x67ecd3ff, REGISTRY_APNIC }, // 103.235.164.0 - 103.236.211.255 { 0x67ecd800, 0x67ed2fff, REGISTRY_APNIC }, // 103.236.216.0 - 103.237.47.255 { 0x67ed3400, 0x67ed53ff, REGISTRY_APNIC }, // 103.237.52.0 - 103.237.83.255 { 0x67ed5800, 0x67ee3fff, REGISTRY_APNIC }, // 103.237.88.0 - 103.238.63.255 { 0x67ee4400, 0x67ee6fff, REGISTRY_APNIC }, // 103.238.68.0 - 103.238.111.255 { 0x67ee7400, 0x67eed7ff, REGISTRY_APNIC }, // 103.238.116.0 - 103.238.215.255 { 0x67eedc00, 0x67ef0bff, REGISTRY_APNIC }, // 103.238.220.0 - 103.239.11.255 { 0x67ef1000, 0x67ef13ff, REGISTRY_APNIC }, // 103.239.16.0 - 103.239.19.255 { 0x67ef1800, 0x67ef27ff, REGISTRY_APNIC }, // 103.239.24.0 - 103.239.39.255 { 0x67ef2c00, 0x67ef3fff, REGISTRY_APNIC }, // 103.239.44.0 - 103.239.63.255 { 0x67ef4400, 0x67ef57ff, REGISTRY_APNIC }, // 103.239.68.0 - 103.239.87.255 { 0x67ef5c00, 0x67ef93ff, REGISTRY_APNIC }, // 103.239.92.0 - 103.239.147.255 { 0x67ef9800, 0x67efd5ff, REGISTRY_APNIC }, // 103.239.152.0 - 103.239.213.255 { 0x67efd800, 0x67efffff, REGISTRY_APNIC }, // 103.239.216.0 - 103.239.255.255 { 0x67f00800, 0x67f017ff, REGISTRY_APNIC }, // 103.240.8.0 - 103.240.23.255 { 0x67f01c00, 0x67f037ff, REGISTRY_APNIC }, // 103.240.28.0 - 103.240.55.255 { 0x67f03c00, 0x67f043ff, REGISTRY_APNIC }, // 103.240.60.0 - 103.240.67.255 { 0x67f04800, 0x67f127ff, REGISTRY_APNIC }, // 103.240.72.0 - 103.241.39.255 { 0x67f12c00, 0x67f194ff, REGISTRY_APNIC }, // 103.241.44.0 - 103.241.148.255 { 0x67f19600, 0x67f1abff, REGISTRY_APNIC }, // 103.241.150.0 - 103.241.171.255 { 0x67f1b000, 0x67f1bfff, REGISTRY_APNIC }, // 103.241.176.0 - 103.241.191.255 { 0x67f1c400, 0x67f24bff, REGISTRY_APNIC }, // 103.241.196.0 - 103.242.75.255 { 0x67f25000, 0x67f255ff, REGISTRY_APNIC }, // 103.242.80.0 - 103.242.85.255 { 0x67f25700, 0x67f2e9ff, REGISTRY_APNIC }, // 103.242.87.0 - 103.242.233.255 { 0x67f2eb00, 0x67f307ff, REGISTRY_APNIC }, // 103.242.235.0 - 103.243.7.255 { 0x67f30c00, 0x67f312ff, REGISTRY_APNIC }, // 103.243.12.0 - 103.243.18.255 { 0x67f31400, 0x67f3a7ff, REGISTRY_APNIC }, // 103.243.20.0 - 103.243.167.255 { 0x67f3ac00, 0x67f3afff, REGISTRY_APNIC }, // 103.243.172.0 - 103.243.175.255 { 0x67f3b100, 0x67f413ff, REGISTRY_APNIC }, // 103.243.177.0 - 103.244.19.255 { 0x67f41c00, 0x67f4dfff, REGISTRY_APNIC }, // 103.244.28.0 - 103.244.223.255 { 0x67f4e400, 0x67f5a7ff, REGISTRY_APNIC }, // 103.244.228.0 - 103.245.167.255 { 0x67f5ac00, 0x67f5b1ff, REGISTRY_APNIC }, // 103.245.172.0 - 103.245.177.255 { 0x67f5b400, 0x67f63bff, REGISTRY_APNIC }, // 103.245.180.0 - 103.246.59.255 { 0x67f64000, 0x67f647ff, REGISTRY_APNIC }, // 103.246.64.0 - 103.246.71.255 { 0x67f64c00, 0x67f668ff, REGISTRY_APNIC }, // 103.246.76.0 - 103.246.104.255 { 0x67f66a00, 0x67f6a7ff, REGISTRY_APNIC }, // 103.246.106.0 - 103.246.167.255 { 0x67f6a900, 0x67f71bff, REGISTRY_APNIC }, // 103.246.169.0 - 103.247.27.255 { 0x67f72000, 0x67f7efff, REGISTRY_APNIC }, // 103.247.32.0 - 103.247.239.255 { 0x67f7f400, 0x67f807ff, REGISTRY_APNIC }, // 103.247.244.0 - 103.248.7.255 { 0x67f80c00, 0x67f82fff, REGISTRY_APNIC }, // 103.248.12.0 - 103.248.47.255 { 0x67f83400, 0x67f88bff, REGISTRY_APNIC }, // 103.248.52.0 - 103.248.139.255 { 0x67f89000, 0x67f8efff, REGISTRY_APNIC }, // 103.248.144.0 - 103.248.239.255 { 0x67f8f400, 0x67f8f9ff, REGISTRY_APNIC }, // 103.248.244.0 - 103.248.249.255 { 0x67f8fb00, 0x67f911ff, REGISTRY_APNIC }, // 103.248.251.0 - 103.249.17.255 { 0x67f91400, 0x67f91fff, REGISTRY_APNIC }, // 103.249.20.0 - 103.249.31.255 { 0x67f92400, 0x67f973ff, REGISTRY_APNIC }, // 103.249.36.0 - 103.249.115.255 { 0x67f97800, 0x67f9c7ff, REGISTRY_APNIC }, // 103.249.120.0 - 103.249.199.255 { 0x67f9cc00, 0x67fa27ff, REGISTRY_APNIC }, // 103.249.204.0 - 103.250.39.255 { 0x67fa2900, 0x67fa5fff, REGISTRY_APNIC }, // 103.250.41.0 - 103.250.95.255 { 0x67fa6800, 0x67fa77ff, REGISTRY_APNIC }, // 103.250.104.0 - 103.250.119.255 { 0x67fa7c00, 0x67fabaff, REGISTRY_APNIC }, // 103.250.124.0 - 103.250.186.255 { 0x67fabc00, 0x67fac3ff, REGISTRY_APNIC }, // 103.250.188.0 - 103.250.195.255 { 0x67fac600, 0x67fadbff, REGISTRY_APNIC }, // 103.250.198.0 - 103.250.219.255 { 0x67fade00, 0x67fb07ff, REGISTRY_APNIC }, // 103.250.222.0 - 103.251.7.255 { 0x67fb0c00, 0x67fb43ff, REGISTRY_APNIC }, // 103.251.12.0 - 103.251.67.255 { 0x67fb4500, 0x67fb46ff, REGISTRY_APNIC }, // 103.251.69.0 - 103.251.70.255 { 0x67fb4800, 0x67fba3ff, REGISTRY_APNIC }, // 103.251.72.0 - 103.251.163.255 { 0x67fba400, 0x67fba7ff, REGISTRY_RIPENCC }, // 103.251.164.0 - 103.251.167.255 { 0x67fba800, 0x67fbfbff, REGISTRY_APNIC }, // 103.251.168.0 - 103.251.251.255 { 0x67fc0000, 0x67fc2fff, REGISTRY_APNIC }, // 103.252.0.0 - 103.252.47.255 { 0x67fc3100, 0x67fc57ff, REGISTRY_APNIC }, // 103.252.49.0 - 103.252.87.255 { 0x67fc5800, 0x67fc5bff, REGISTRY_RIPENCC }, // 103.252.88.0 - 103.252.91.255 { 0x67fc5c00, 0x67fc77ff, REGISTRY_APNIC }, // 103.252.92.0 - 103.252.119.255 { 0x67fc7c00, 0x67fc87ff, REGISTRY_APNIC }, // 103.252.124.0 - 103.252.135.255 { 0x67fc8c00, 0x67fc9fff, REGISTRY_APNIC }, // 103.252.140.0 - 103.252.159.255 { 0x67fca100, 0x67fcb3ff, REGISTRY_APNIC }, // 103.252.161.0 - 103.252.179.255 { 0x67fcb800, 0x67fd0fff, REGISTRY_APNIC }, // 103.252.184.0 - 103.253.15.255 { 0x67fd1800, 0x67fd5fff, REGISTRY_APNIC }, // 103.253.24.0 - 103.253.95.255 { 0x67fd6000, 0x67fd63ff, REGISTRY_ARIN }, // 103.253.96.0 - 103.253.99.255 { 0x67fd6400, 0x67fd7eff, REGISTRY_APNIC }, // 103.253.100.0 - 103.253.126.255 { 0x67fd8000, 0x67fde3ff, REGISTRY_APNIC }, // 103.253.128.0 - 103.253.227.255 { 0x67fde800, 0x67fdf3ff, REGISTRY_APNIC }, // 103.253.232.0 - 103.253.243.255 { 0x67fdf800, 0x67fe5aff, REGISTRY_APNIC }, // 103.253.248.0 - 103.254.90.255 { 0x67fe5c00, 0x67fe73ff, REGISTRY_APNIC }, // 103.254.92.0 - 103.254.115.255 { 0x67fe7800, 0x67fe7bff, REGISTRY_APNIC }, // 103.254.120.0 - 103.254.123.255 { 0x67fe7e00, 0x67fec4ff, REGISTRY_APNIC }, // 103.254.126.0 - 103.254.196.255 { 0x67fec600, 0x67fed3ff, REGISTRY_APNIC }, // 103.254.198.0 - 103.254.211.255 { 0x67fed800, 0x67ff1bff, REGISTRY_APNIC }, // 103.254.216.0 - 103.255.27.255 { 0x67ff1d00, 0x67ff27ff, REGISTRY_APNIC }, // 103.255.29.0 - 103.255.39.255 { 0x67ff2c00, 0x67ff3fff, REGISTRY_APNIC }, // 103.255.44.0 - 103.255.63.255 { 0x67ff4400, 0x67ff5fff, REGISTRY_APNIC }, // 103.255.68.0 - 103.255.95.255 { 0x67ff6400, 0x67ff6bff, REGISTRY_APNIC }, // 103.255.100.0 - 103.255.107.255 { 0x67ff7000, 0x67ff9fff, REGISTRY_APNIC }, // 103.255.112.0 - 103.255.159.255 { 0x67ffa800, 0x67ffbfff, REGISTRY_APNIC }, // 103.255.168.0 - 103.255.191.255 { 0x67ffc800, 0x67ffcbff, REGISTRY_APNIC }, // 103.255.200.0 - 103.255.203.255 { 0x67ffd400, 0x67ffdbff, REGISTRY_APNIC }, // 103.255.212.0 - 103.255.219.255 { 0x67ffe000, 0x67ffffff, REGISTRY_APNIC }, // 103.255.224.0 - 103.255.255.255 { 0x68000000, 0x68f3d7ff, REGISTRY_ARIN }, // 104.0.0.0 - 104.243.215.255 { 0x68f3d800, 0x68f3dbff, REGISTRY_RIPENCC }, // 104.243.216.0 - 104.243.219.255 { 0x68f3dc00, 0x68f407ff, REGISTRY_ARIN }, // 104.243.220.0 - 104.244.7.255 { 0x68f40800, 0x68f40bff, REGISTRY_RIPENCC }, // 104.244.8.0 - 104.244.11.255 { 0x68f40c00, 0x68ffffff, REGISTRY_ARIN }, // 104.244.12.0 - 104.255.255.255 { 0x69000000, 0x69ffffff, REGISTRY_AFRINIC }, // 105.0.0.0 - 105.255.255.255 { 0x6a000000, 0x6affffff, REGISTRY_APNIC }, // 106.0.0.0 - 106.255.255.255 { 0x6b000000, 0x6b96a1ff, REGISTRY_ARIN }, // 107.0.0.0 - 107.150.161.255 { 0x6b96a200, 0x6b96b3ff, REGISTRY_RIPENCC }, // 107.150.162.0 - 107.150.179.255 { 0x6b96b400, 0x6ba19fff, REGISTRY_ARIN }, // 107.150.180.0 - 107.161.159.255 { 0x6ba1a000, 0x6ba1afff, REGISTRY_RIPENCC }, // 107.161.160.0 - 107.161.175.255 { 0x6ba1b000, 0x6bb57fff, REGISTRY_ARIN }, // 107.161.176.0 - 107.181.127.255 { 0x6bb58000, 0x6bb59fff, REGISTRY_RIPENCC }, // 107.181.128.0 - 107.181.159.255 { 0x6bb5a000, 0x6cffffff, REGISTRY_ARIN }, // 107.181.160.0 - 108.255.255.255 { 0x6d000000, 0x6d4747ff, REGISTRY_RIPENCC }, // 109.0.0.0 - 109.71.71.255 { 0x6d475000, 0x6d4797ff, REGISTRY_RIPENCC }, // 109.71.80.0 - 109.71.151.255 { 0x6d47a000, 0x6d47f7ff, REGISTRY_RIPENCC }, // 109.71.160.0 - 109.71.247.255 { 0x6d480000, 0x6d497fff, REGISTRY_RIPENCC }, // 109.72.0.0 - 109.73.127.255 { 0x6d499000, 0x6d5dffff, REGISTRY_RIPENCC }, // 109.73.144.0 - 109.93.255.255 { 0x6d5e0000, 0x6d5ecfff, REGISTRY_RIPENCC }, // 109.94.0.0 - 109.94.207.255 { 0x6d5ee000, 0x6d5f77ff, REGISTRY_RIPENCC }, // 109.94.224.0 - 109.95.119.255 { 0x6d5f8000, 0x6d5f9fff, REGISTRY_RIPENCC }, // 109.95.128.0 - 109.95.159.255 { 0x6d5fa000, 0x6d5fa7ff, REGISTRY_RIPENCC }, // 109.95.160.0 - 109.95.167.255 { 0x6d5fa800, 0x6d5fffff, REGISTRY_RIPENCC }, // 109.95.168.0 - 109.95.255.255 { 0x6d600000, 0x6dc3ffff, REGISTRY_RIPENCC }, // 109.96.0.0 - 109.195.255.255 { 0x6dc40000, 0x6dc49fff, REGISTRY_RIPENCC }, // 109.196.0.0 - 109.196.159.255 { 0x6dc4b000, 0x6dc5e7ff, REGISTRY_RIPENCC }, // 109.196.176.0 - 109.197.231.255 { 0x6dc5e800, 0x6dc5efff, REGISTRY_RIPENCC }, // 109.197.232.0 - 109.197.239.255 { 0x6dc5f000, 0x6dc5ffff, REGISTRY_RIPENCC }, // 109.197.240.0 - 109.197.255.255 { 0x6dc60000, 0x6dce1fff, REGISTRY_RIPENCC }, // 109.198.0.0 - 109.206.31.255 { 0x6dce2000, 0x6dce3fff, REGISTRY_RIPENCC }, // 109.206.32.0 - 109.206.63.255 { 0x6dce4000, 0x6dce5fff, REGISTRY_RIPENCC }, // 109.206.64.0 - 109.206.95.255 { 0x6dce6000, 0x6dcedfff, REGISTRY_RIPENCC }, // 109.206.96.0 - 109.206.223.255 { 0x6dcf0000, 0x6dcf2fff, REGISTRY_RIPENCC }, // 109.207.0.0 - 109.207.47.255 { 0x6dcf3000, 0x6dcf3fff, REGISTRY_RIPENCC }, // 109.207.48.0 - 109.207.63.255 { 0x6dcf5000, 0x6dcf7fff, REGISTRY_RIPENCC }, // 109.207.80.0 - 109.207.127.255 { 0x6dcf8000, 0x6dcf8fff, REGISTRY_RIPENCC }, // 109.207.128.0 - 109.207.143.255 { 0x6dcf9000, 0x6dcfcfff, REGISTRY_RIPENCC }, // 109.207.144.0 - 109.207.207.255 { 0x6dcfd000, 0x6dcfdfff, REGISTRY_RIPENCC }, // 109.207.208.0 - 109.207.223.255 { 0x6dcfe000, 0x6dcfffff, REGISTRY_RIPENCC }, // 109.207.224.0 - 109.207.255.255 { 0x6dd00000, 0x6de4ffff, REGISTRY_RIPENCC }, // 109.208.0.0 - 109.228.255.255 { 0x6de50000, 0x6de5ffff, REGISTRY_RIPENCC }, // 109.229.0.0 - 109.229.255.255 { 0x6de60000, 0x6de89fff, REGISTRY_RIPENCC }, // 109.230.0.0 - 109.232.159.255 { 0x6de8a800, 0x6de967ff, REGISTRY_RIPENCC }, // 109.232.168.0 - 109.233.103.255 { 0x6de97000, 0x6dec2fff, REGISTRY_RIPENCC }, // 109.233.112.0 - 109.236.47.255 { 0x6dec4000, 0x6dffffff, REGISTRY_RIPENCC }, // 109.236.64.0 - 109.255.255.255 { 0x6e000000, 0x71caffff, REGISTRY_APNIC }, // 110.0.0.0 - 113.202.255.255 { 0x71cb0000, 0x71cb7fff, REGISTRY_RIPENCC }, // 113.203.0.0 - 113.203.127.255 { 0x71cb8000, 0x71d43fff, REGISTRY_APNIC }, // 113.203.128.0 - 113.212.63.255 { 0x71d46000, 0x71d46bff, REGISTRY_APNIC }, // 113.212.96.0 - 113.212.107.255 { 0x71d47000, 0x737c23ff, REGISTRY_APNIC }, // 113.212.112.0 - 115.124.35.255 { 0x737c2800, 0x74c7c7ff, REGISTRY_APNIC }, // 115.124.40.0 - 116.199.199.255 { 0x74c7d000, 0x7512dfff, REGISTRY_APNIC }, // 116.199.208.0 - 117.18.223.255 { 0x7512e800, 0x756771ff, REGISTRY_APNIC }, // 117.18.232.0 - 117.103.113.255 { 0x75677600, 0x77a0e7ff, REGISTRY_APNIC }, // 117.103.118.0 - 119.160.231.255 { 0x77a0f000, 0x78593fff, REGISTRY_APNIC }, // 119.160.240.0 - 120.89.63.255 { 0x78594800, 0x792e47ff, REGISTRY_APNIC }, // 120.89.72.0 - 121.46.71.255 { 0x792e4c00, 0x7b6c3fff, REGISTRY_APNIC }, // 121.46.76.0 - 123.108.63.255 { 0x7b6c4400, 0x7b6c47ff, REGISTRY_APNIC }, // 123.108.68.0 - 123.108.71.255 { 0x7b6c6000, 0x7bfcffff, REGISTRY_APNIC }, // 123.108.96.0 - 123.252.255.255 { 0x7bfe0000, 0x7c9687ff, REGISTRY_APNIC }, // 123.254.0.0 - 124.150.135.255 { 0x7c968900, 0x7d3e3fff, REGISTRY_APNIC }, // 124.150.137.0 - 125.62.63.255 { 0x7d3e4c00, 0x7d3e4fff, REGISTRY_APNIC }, // 125.62.76.0 - 125.62.79.255 { 0x7d3e6000, 0x7effffff, REGISTRY_APNIC }, // 125.62.96.0 - 126.255.255.255 { 0x80000000, 0x80004fff, REGISTRY_RIPENCC }, // 128.0.0.0 - 128.0.79.255 { 0x80005000, 0x80005fff, REGISTRY_RIPENCC }, // 128.0.80.0 - 128.0.95.255 { 0x80006000, 0x800067ff, REGISTRY_RIPENCC }, // 128.0.96.0 - 128.0.103.255 { 0x80006800, 0x80006fff, REGISTRY_RIPENCC }, // 128.0.104.0 - 128.0.111.255 { 0x80007000, 0x80007fff, REGISTRY_RIPENCC }, // 128.0.112.0 - 128.0.127.255 { 0x80008000, 0x80008fff, REGISTRY_RIPENCC }, // 128.0.128.0 - 128.0.143.255 { 0x80009000, 0x80009bff, REGISTRY_RIPENCC }, // 128.0.144.0 - 128.0.155.255 { 0x8000a000, 0x8000ffff, REGISTRY_RIPENCC }, // 128.0.160.0 - 128.0.255.255 { 0x80010000, 0x8006ffff, REGISTRY_ARIN }, // 128.1.0.0 - 128.6.255.255 { 0x80070000, 0x8007ffff, REGISTRY_RIPENCC }, // 128.7.0.0 - 128.7.255.255 { 0x80080000, 0x800fffff, REGISTRY_ARIN }, // 128.8.0.0 - 128.15.255.255 { 0x80100000, 0x8010ffff, REGISTRY_RIPENCC }, // 128.16.0.0 - 128.16.255.255 { 0x80110000, 0x8015ffff, REGISTRY_ARIN }, // 128.17.0.0 - 128.21.255.255 { 0x80160000, 0x8016ffff, REGISTRY_APNIC }, // 128.22.0.0 - 128.22.255.255 { 0x80170000, 0x801affff, REGISTRY_ARIN }, // 128.23.0.0 - 128.26.255.255 { 0x801b0000, 0x801cffff, REGISTRY_APNIC }, // 128.27.0.0 - 128.28.255.255 { 0x801d0000, 0x8026ffff, REGISTRY_ARIN }, // 128.29.0.0 - 128.38.255.255 { 0x80270000, 0x8029ffff, REGISTRY_RIPENCC }, // 128.39.0.0 - 128.41.255.255 { 0x802a0000, 0x802cffff, REGISTRY_ARIN }, // 128.42.0.0 - 128.44.255.255 { 0x802d0000, 0x802dffff, REGISTRY_RIPENCC }, // 128.45.0.0 - 128.45.255.255 { 0x802e0000, 0x8034ffff, REGISTRY_ARIN }, // 128.46.0.0 - 128.52.255.255 { 0x80350000, 0x8035ffff, REGISTRY_APNIC }, // 128.53.0.0 - 128.53.255.255 { 0x80360000, 0x8040ffff, REGISTRY_ARIN }, // 128.54.0.0 - 128.64.255.255 { 0x80410000, 0x804fffff, REGISTRY_RIPENCC }, // 128.65.0.0 - 128.79.255.255 { 0x80500000, 0x8055ffff, REGISTRY_ARIN }, // 128.80.0.0 - 128.85.255.255 { 0x80560000, 0x8057ffff, REGISTRY_RIPENCC }, // 128.86.0.0 - 128.87.255.255 { 0x80580000, 0x805cffff, REGISTRY_ARIN }, // 128.88.0.0 - 128.92.255.255 { 0x805d0000, 0x805dffff, REGISTRY_RIPENCC }, // 128.93.0.0 - 128.93.255.255 { 0x805e0000, 0x8061ffff, REGISTRY_ARIN }, // 128.94.0.0 - 128.97.255.255 { 0x80620000, 0x8062ffff, REGISTRY_RIPENCC }, // 128.98.0.0 - 128.98.255.255 { 0x80630000, 0x8069ffff, REGISTRY_ARIN }, // 128.99.0.0 - 128.105.255.255 { 0x806a0000, 0x806affff, REGISTRY_APNIC }, // 128.106.0.0 - 128.106.255.255 { 0x806b0000, 0x807bffff, REGISTRY_ARIN }, // 128.107.0.0 - 128.123.255.255 { 0x807c0000, 0x807cffff, REGISTRY_RIPENCC }, // 128.124.0.0 - 128.124.255.255 { 0x807d0000, 0x807effff, REGISTRY_ARIN }, // 128.125.0.0 - 128.126.255.255 { 0x807f0000, 0x807f07ff, REGISTRY_RIPENCC }, // 128.127.0.0 - 128.127.7.255 { 0x807f1000, 0x807fafff, REGISTRY_RIPENCC }, // 128.127.16.0 - 128.127.175.255 { 0x807fb800, 0x807fffff, REGISTRY_RIPENCC }, // 128.127.184.0 - 128.127.255.255 { 0x80800000, 0x8081ffff, REGISTRY_ARIN }, // 128.128.0.0 - 128.129.255.255 { 0x80820000, 0x8083ffff, REGISTRY_RIPENCC }, // 128.130.0.0 - 128.131.255.255 { 0x80840000, 0x8085ffff, REGISTRY_ARIN }, // 128.132.0.0 - 128.133.255.255 { 0x80860000, 0x8086ffff, REGISTRY_APNIC }, // 128.134.0.0 - 128.134.255.255 { 0x80870000, 0x808affff, REGISTRY_ARIN }, // 128.135.0.0 - 128.138.255.255 { 0x808b0000, 0x808bffff, REGISTRY_RIPENCC }, // 128.139.0.0 - 128.139.255.255 { 0x808c0000, 0x808cffff, REGISTRY_RIPENCC }, // 128.140.0.0 - 128.140.255.255 { 0x808d0000, 0x808effff, REGISTRY_RIPENCC }, // 128.141.0.0 - 128.142.255.255 { 0x808f0000, 0x80a7ffff, REGISTRY_ARIN }, // 128.143.0.0 - 128.167.255.255 { 0x80a80000, 0x80a8ffff, REGISTRY_RIPENCC }, // 128.168.0.0 - 128.168.255.255 { 0x80a90000, 0x80afffff, REGISTRY_ARIN }, // 128.169.0.0 - 128.175.255.255 { 0x80b00000, 0x80b0ffff, REGISTRY_RIPENCC }, // 128.176.0.0 - 128.176.255.255 { 0x80b10000, 0x80b1ffff, REGISTRY_ARIN }, // 128.177.0.0 - 128.177.255.255 { 0x80b20000, 0x80b3ffff, REGISTRY_RIPENCC }, // 128.178.0.0 - 128.179.255.255 { 0x80b40000, 0x80b7ffff, REGISTRY_ARIN }, // 128.180.0.0 - 128.183.255.255 { 0x80b80000, 0x80b9ffff, REGISTRY_APNIC }, // 128.184.0.0 - 128.185.255.255 { 0x80ba0000, 0x80c6ffff, REGISTRY_ARIN }, // 128.186.0.0 - 128.198.255.255 { 0x80c70000, 0x80c7ffff, REGISTRY_RIPENCC }, // 128.199.0.0 - 128.199.255.255 { 0x80c80000, 0x80c8ffff, REGISTRY_ARIN }, // 128.200.0.0 - 128.200.255.255 { 0x80c90400, 0x80c90bff, REGISTRY_LACNIC }, // 128.201.4.0 - 128.201.11.255 { 0x80c91000, 0x80c96bff, REGISTRY_LACNIC }, // 128.201.16.0 - 128.201.107.255 { 0x80c97000, 0x80c99fff, REGISTRY_LACNIC }, // 128.201.112.0 - 128.201.159.255 { 0x80c9a400, 0x80c9afff, REGISTRY_LACNIC }, // 128.201.164.0 - 128.201.175.255 { 0x80c9b400, 0x80c9bbff, REGISTRY_LACNIC }, // 128.201.180.0 - 128.201.187.255 { 0x80c9c000, 0x80c9c3ff, REGISTRY_LACNIC }, // 128.201.192.0 - 128.201.195.255 { 0x80c9cc00, 0x80c9cfff, REGISTRY_LACNIC }, // 128.201.204.0 - 128.201.207.255 { 0x80c9d800, 0x80c9dbff, REGISTRY_LACNIC }, // 128.201.216.0 - 128.201.219.255 { 0x80c9e000, 0x80c9e3ff, REGISTRY_LACNIC }, // 128.201.224.0 - 128.201.227.255 { 0x80c9ec00, 0x80c9efff, REGISTRY_LACNIC }, // 128.201.236.0 - 128.201.239.255 { 0x80c9f400, 0x80c9ffff, REGISTRY_LACNIC }, // 128.201.244.0 - 128.201.255.255 { 0x80ca0000, 0x80cbffff, REGISTRY_ARIN }, // 128.202.0.0 - 128.203.255.255 { 0x80cc0000, 0x80ccffff, REGISTRY_RIPENCC }, // 128.204.0.0 - 128.204.255.255 { 0x80cd0000, 0x80d5ffff, REGISTRY_ARIN }, // 128.205.0.0 - 128.213.255.255 { 0x80d60000, 0x80d6ffff, REGISTRY_RIPENCC }, // 128.214.0.0 - 128.214.255.255 { 0x80d70000, 0x80e7ffff, REGISTRY_ARIN }, // 128.215.0.0 - 128.231.255.255 { 0x80e80000, 0x80e8ffff, REGISTRY_RIPENCC }, // 128.232.0.0 - 128.232.255.255 { 0x80e90000, 0x80e9ffff, REGISTRY_ARIN }, // 128.233.0.0 - 128.233.255.255 { 0x80ea0000, 0x80eaffff, REGISTRY_RIPENCC }, // 128.234.0.0 - 128.234.255.255 { 0x80eb0000, 0x80efffff, REGISTRY_ARIN }, // 128.235.0.0 - 128.239.255.255 { 0x80f00000, 0x80f0ffff, REGISTRY_RIPENCC }, // 128.240.0.0 - 128.240.255.255 { 0x80f10000, 0x80f2ffff, REGISTRY_ARIN }, // 128.241.0.0 - 128.242.255.255 { 0x80f30000, 0x80f3ffff, REGISTRY_RIPENCC }, // 128.243.0.0 - 128.243.255.255 { 0x80f40000, 0x80f5ffff, REGISTRY_ARIN }, // 128.244.0.0 - 128.245.255.255 { 0x80f60000, 0x80f6ffff, REGISTRY_RIPENCC }, // 128.246.0.0 - 128.246.255.255 { 0x80f70000, 0x80f9ffff, REGISTRY_ARIN }, // 128.247.0.0 - 128.249.255.255 { 0x80fa0000, 0x80faffff, REGISTRY_APNIC }, // 128.250.0.0 - 128.250.255.255 { 0x80fb0000, 0x80ffffff, REGISTRY_ARIN }, // 128.251.0.0 - 128.255.255.255 { 0x81000000, 0x8100ffff, REGISTRY_AFRINIC }, // 129.0.0.0 - 129.0.255.255 { 0x81010000, 0x810affff, REGISTRY_ARIN }, // 129.1.0.0 - 129.10.255.255 { 0x810b0000, 0x810dffff, REGISTRY_RIPENCC }, // 129.11.0.0 - 129.13.255.255 { 0x810e0000, 0x810fffff, REGISTRY_ARIN }, // 129.14.0.0 - 129.15.255.255 { 0x81100000, 0x8110ffff, REGISTRY_RIPENCC }, // 129.16.0.0 - 129.16.255.255 { 0x81110000, 0x8111ffff, REGISTRY_ARIN }, // 129.17.0.0 - 129.17.255.255 { 0x81120000, 0x8112ffff, REGISTRY_AFRINIC }, // 129.18.0.0 - 129.18.255.255 { 0x81130000, 0x8113ffff, REGISTRY_ARIN }, // 129.19.0.0 - 129.19.255.255 { 0x81140000, 0x8114ffff, REGISTRY_RIPENCC }, // 129.20.0.0 - 129.20.255.255 { 0x81150000, 0x8119ffff, REGISTRY_ARIN }, // 129.21.0.0 - 129.25.255.255 { 0x811a0000, 0x811bffff, REGISTRY_RIPENCC }, // 129.26.0.0 - 129.27.255.255 { 0x811c0000, 0x811effff, REGISTRY_ARIN }, // 129.28.0.0 - 129.30.255.255 { 0x811f0000, 0x811fffff, REGISTRY_RIPENCC }, // 129.31.0.0 - 129.31.255.255 { 0x81200000, 0x812cffff, REGISTRY_ARIN }, // 129.32.0.0 - 129.44.255.255 { 0x812d0000, 0x812dffff, REGISTRY_AFRINIC }, // 129.45.0.0 - 129.45.255.255 { 0x812e0000, 0x8137ffff, REGISTRY_ARIN }, // 129.46.0.0 - 129.55.255.255 { 0x81380000, 0x8138ffff, REGISTRY_AFRINIC }, // 129.56.0.0 - 129.56.255.255 { 0x81390000, 0x813bffff, REGISTRY_ARIN }, // 129.57.0.0 - 129.59.255.255 { 0x813c0000, 0x813cffff, REGISTRY_APNIC }, // 129.60.0.0 - 129.60.255.255 { 0x813d0000, 0x8142ffff, REGISTRY_ARIN }, // 129.61.0.0 - 129.66.255.255 { 0x81430000, 0x8143ffff, REGISTRY_RIPENCC }, // 129.67.0.0 - 129.67.255.255 { 0x81440000, 0x8144ffff, REGISTRY_ARIN }, // 129.68.0.0 - 129.68.255.255 { 0x81450000, 0x8146ffff, REGISTRY_RIPENCC }, // 129.69.0.0 - 129.70.255.255 { 0x81470000, 0x8148ffff, REGISTRY_ARIN }, // 129.71.0.0 - 129.72.255.255 { 0x81490000, 0x8149ffff, REGISTRY_RIPENCC }, // 129.73.0.0 - 129.73.255.255 { 0x814a0000, 0x814dffff, REGISTRY_ARIN }, // 129.74.0.0 - 129.77.255.255 { 0x814e0000, 0x814effff, REGISTRY_APNIC }, // 129.78.0.0 - 129.78.255.255 { 0x814f0000, 0x8157ffff, REGISTRY_ARIN }, // 129.79.0.0 - 129.87.255.255 { 0x81580000, 0x8158ffff, REGISTRY_RIPENCC }, // 129.88.0.0 - 129.88.255.255 { 0x81590000, 0x8159ffff, REGISTRY_ARIN }, // 129.89.0.0 - 129.89.255.255 { 0x815a0000, 0x815affff, REGISTRY_LACNIC }, // 129.90.0.0 - 129.90.255.255 { 0x815b0000, 0x815dffff, REGISTRY_ARIN }, // 129.91.0.0 - 129.93.255.255 { 0x815e0000, 0x815effff, REGISTRY_APNIC }, // 129.94.0.0 - 129.94.255.255 { 0x815f0000, 0x815fffff, REGISTRY_ARIN }, // 129.95.0.0 - 129.95.255.255 { 0x81600000, 0x8160ffff, REGISTRY_APNIC }, // 129.96.0.0 - 129.96.255.255 { 0x81610000, 0x8165ffff, REGISTRY_ARIN }, // 129.97.0.0 - 129.101.255.255 { 0x81660000, 0x8166ffff, REGISTRY_RIPENCC }, // 129.102.0.0 - 129.102.255.255 { 0x81670000, 0x8167ffff, REGISTRY_RIPENCC }, // 129.103.0.0 - 129.103.255.255 { 0x81680000, 0x8168ffff, REGISTRY_RIPENCC }, // 129.104.0.0 - 129.104.255.255 { 0x81690000, 0x8179ffff, REGISTRY_ARIN }, // 129.105.0.0 - 129.121.255.255 { 0x817a0000, 0x817affff, REGISTRY_AFRINIC }, // 129.122.0.0 - 129.122.255.255 { 0x817b0000, 0x817cffff, REGISTRY_ARIN }, // 129.123.0.0 - 129.124.255.255 { 0x817d0000, 0x817dffff, REGISTRY_RIPENCC }, // 129.125.0.0 - 129.125.255.255 { 0x817e0000, 0x817fffff, REGISTRY_APNIC }, // 129.126.0.0 - 129.127.255.255 { 0x81800000, 0x8180ffff, REGISTRY_ARIN }, // 129.128.0.0 - 129.128.255.255 { 0x81810000, 0x8181ffff, REGISTRY_RIPENCC }, // 129.129.0.0 - 129.129.255.255 { 0x81820000, 0x8183ffff, REGISTRY_ARIN }, // 129.130.0.0 - 129.131.255.255 { 0x81840000, 0x8184ffff, REGISTRY_RIPENCC }, // 129.132.0.0 - 129.132.255.255 { 0x81850000, 0x8187ffff, REGISTRY_ARIN }, // 129.133.0.0 - 129.135.255.255 { 0x81880000, 0x8188ffff, REGISTRY_APNIC }, // 129.136.0.0 - 129.136.255.255 { 0x81890000, 0x818bffff, REGISTRY_ARIN }, // 129.137.0.0 - 129.139.255.255 { 0x818c0000, 0x818cffff, REGISTRY_AFRINIC }, // 129.140.0.0 - 129.140.255.255 { 0x818d0000, 0x818dffff, REGISTRY_ARIN }, // 129.141.0.0 - 129.141.255.255 { 0x818e0000, 0x818fffff, REGISTRY_RIPENCC }, // 129.142.0.0 - 129.143.255.255 { 0x81900000, 0x81a8ffff, REGISTRY_ARIN }, // 129.144.0.0 - 129.168.255.255 { 0x81a90000, 0x81a9ffff, REGISTRY_RIPENCC }, // 129.169.0.0 - 129.169.255.255 { 0x81aa0000, 0x81aeffff, REGISTRY_ARIN }, // 129.170.0.0 - 129.174.255.255 { 0x81af0000, 0x81afffff, REGISTRY_RIPENCC }, // 129.175.0.0 - 129.175.255.255 { 0x81b00000, 0x81b0ffff, REGISTRY_ARIN }, // 129.176.0.0 - 129.176.255.255 { 0x81b10000, 0x81b2ffff, REGISTRY_RIPENCC }, // 129.177.0.0 - 129.178.255.255 { 0x81b30000, 0x81b3ffff, REGISTRY_ARIN }, // 129.179.0.0 - 129.179.255.255 { 0x81b40000, 0x81b4ffff, REGISTRY_APNIC }, // 129.180.0.0 - 129.180.255.255 { 0x81b50000, 0x81b9ffff, REGISTRY_RIPENCC }, // 129.181.0.0 - 129.185.255.255 { 0x81ba0000, 0x81baffff, REGISTRY_ARIN }, // 129.186.0.0 - 129.186.255.255 { 0x81bb0000, 0x81bbffff, REGISTRY_RIPENCC }, // 129.187.0.0 - 129.187.255.255 { 0x81bc0000, 0x81c1ffff, REGISTRY_ARIN }, // 129.188.0.0 - 129.193.255.255 { 0x81c20000, 0x81c3ffff, REGISTRY_RIPENCC }, // 129.194.0.0 - 129.195.255.255 { 0x81c40000, 0x81c6ffff, REGISTRY_ARIN }, // 129.196.0.0 - 129.198.255.255 { 0x81c70000, 0x81c7ffff, REGISTRY_RIPENCC }, // 129.199.0.0 - 129.199.255.255 { 0x81c80000, 0x81ccffff, REGISTRY_ARIN }, // 129.200.0.0 - 129.204.255.255 { 0x81cd0000, 0x81cdffff, REGISTRY_AFRINIC }, // 129.205.0.0 - 129.205.255.255 { 0x81ce0000, 0x81ceffff, REGISTRY_RIPENCC }, // 129.206.0.0 - 129.206.255.255 { 0x81cf0000, 0x81cfffff, REGISTRY_ARIN }, // 129.207.0.0 - 129.207.255.255 { 0x81d00000, 0x81d0ffff, REGISTRY_RIPENCC }, // 129.208.0.0 - 129.208.255.255 { 0x81d10000, 0x81d5ffff, REGISTRY_ARIN }, // 129.209.0.0 - 129.213.255.255 { 0x81d60000, 0x81d6ffff, REGISTRY_RIPENCC }, // 129.214.0.0 - 129.214.255.255 { 0x81d70000, 0x81d7ffff, REGISTRY_RIPENCC }, // 129.215.0.0 - 129.215.255.255 { 0x81d80000, 0x81d8ffff, REGISTRY_ARIN }, // 129.216.0.0 - 129.216.255.255 { 0x81d90000, 0x81d9ffff, REGISTRY_RIPENCC }, // 129.217.0.0 - 129.217.255.255 { 0x81da0000, 0x81e7ffff, REGISTRY_ARIN }, // 129.218.0.0 - 129.231.255.255 { 0x81e80000, 0x81e8ffff, REGISTRY_AFRINIC }, // 129.232.0.0 - 129.232.255.255 { 0x81e90000, 0x81eaffff, REGISTRY_RIPENCC }, // 129.233.0.0 - 129.234.255.255 { 0x81eb0000, 0x81efffff, REGISTRY_ARIN }, // 129.235.0.0 - 129.239.255.255 { 0x81f00000, 0x81f2ffff, REGISTRY_RIPENCC }, // 129.240.0.0 - 129.242.255.255 { 0x81f30000, 0x81f6ffff, REGISTRY_ARIN }, // 129.243.0.0 - 129.246.255.255 { 0x81f70000, 0x81f7ffff, REGISTRY_RIPENCC }, // 129.247.0.0 - 129.247.255.255 { 0x81f80000, 0x81f8ffff, REGISTRY_ARIN }, // 129.248.0.0 - 129.248.255.255 { 0x81f90000, 0x81f9ffff, REGISTRY_APNIC }, // 129.249.0.0 - 129.249.255.255 { 0x81fa0000, 0x81fdffff, REGISTRY_ARIN }, // 129.250.0.0 - 129.253.255.255 { 0x81fe0000, 0x81feffff, REGISTRY_APNIC }, // 129.254.0.0 - 129.254.255.255 { 0x81ff0000, 0x81ffffff, REGISTRY_ARIN }, // 129.255.0.0 - 129.255.255.255 { 0x82000000, 0x8200ffff, REGISTRY_RIPENCC }, // 130.0.0.0 - 130.0.255.255 { 0x82010000, 0x8217ffff, REGISTRY_ARIN }, // 130.1.0.0 - 130.23.255.255 { 0x82180000, 0x8218ffff, REGISTRY_RIPENCC }, // 130.24.0.0 - 130.24.255.255 { 0x82190000, 0x8219ffff, REGISTRY_RIPENCC }, // 130.25.0.0 - 130.25.255.255 { 0x821a0000, 0x821affff, REGISTRY_APNIC }, // 130.26.0.0 - 130.26.255.255 { 0x821b0000, 0x821bffff, REGISTRY_ARIN }, // 130.27.0.0 - 130.27.255.255 { 0x821c0000, 0x821cffff, REGISTRY_RIPENCC }, // 130.28.0.0 - 130.28.255.255 { 0x821d0000, 0x821fffff, REGISTRY_ARIN }, // 130.29.0.0 - 130.31.255.255 { 0x82200000, 0x8220ffff, REGISTRY_RIPENCC }, // 130.32.0.0 - 130.32.255.255 { 0x82210000, 0x8221ffff, REGISTRY_ARIN }, // 130.33.0.0 - 130.33.255.255 { 0x82220000, 0x8222ffff, REGISTRY_APNIC }, // 130.34.0.0 - 130.34.255.255 { 0x82230000, 0x8224ffff, REGISTRY_ARIN }, // 130.35.0.0 - 130.36.255.255 { 0x82250000, 0x8225ffff, REGISTRY_RIPENCC }, // 130.37.0.0 - 130.37.255.255 { 0x82260000, 0x822affff, REGISTRY_ARIN }, // 130.38.0.0 - 130.42.255.255 { 0x822b0000, 0x822bffff, REGISTRY_RIPENCC }, // 130.43.0.0 - 130.43.255.255 { 0x822c0000, 0x8235ffff, REGISTRY_ARIN }, // 130.44.0.0 - 130.53.255.255 { 0x82360000, 0x8236ffff, REGISTRY_APNIC }, // 130.54.0.0 - 130.54.255.255 { 0x82370000, 0x8237ffff, REGISTRY_ARIN }, // 130.55.0.0 - 130.55.255.255 { 0x82380000, 0x8238ffff, REGISTRY_APNIC }, // 130.56.0.0 - 130.56.255.255 { 0x82390000, 0x823affff, REGISTRY_ARIN }, // 130.57.0.0 - 130.58.255.255 { 0x823b0000, 0x823cffff, REGISTRY_RIPENCC }, // 130.59.0.0 - 130.60.255.255 { 0x823d0000, 0x8241ffff, REGISTRY_ARIN }, // 130.61.0.0 - 130.65.255.255 { 0x82420000, 0x8243ffff, REGISTRY_RIPENCC }, // 130.66.0.0 - 130.67.255.255 { 0x82440000, 0x8244ffff, REGISTRY_ARIN }, // 130.68.0.0 - 130.68.255.255 { 0x82450000, 0x8245ffff, REGISTRY_APNIC }, // 130.69.0.0 - 130.69.255.255 { 0x82460000, 0x8248ffff, REGISTRY_ARIN }, // 130.70.0.0 - 130.72.255.255 { 0x82490000, 0x8249ffff, REGISTRY_RIPENCC }, // 130.73.0.0 - 130.73.255.255 { 0x824a0000, 0x824affff, REGISTRY_ARIN }, // 130.74.0.0 - 130.74.255.255 { 0x824b0000, 0x824bffff, REGISTRY_RIPENCC }, // 130.75.0.0 - 130.75.255.255 { 0x824c0000, 0x824dffff, REGISTRY_ARIN }, // 130.76.0.0 - 130.77.255.255 { 0x824e0000, 0x824fffff, REGISTRY_RIPENCC }, // 130.78.0.0 - 130.79.255.255 { 0x82500000, 0x8251ffff, REGISTRY_ARIN }, // 130.80.0.0 - 130.81.255.255 { 0x82520000, 0x8254ffff, REGISTRY_RIPENCC }, // 130.82.0.0 - 130.84.255.255 { 0x82550000, 0x8256ffff, REGISTRY_ARIN }, // 130.85.0.0 - 130.86.255.255 { 0x82570000, 0x8257ffff, REGISTRY_APNIC }, // 130.87.0.0 - 130.87.255.255 { 0x82580000, 0x8259ffff, REGISTRY_RIPENCC }, // 130.88.0.0 - 130.89.255.255 { 0x825a0000, 0x825bffff, REGISTRY_ARIN }, // 130.90.0.0 - 130.91.255.255 { 0x825c0000, 0x825cffff, REGISTRY_RIPENCC }, // 130.92.0.0 - 130.92.255.255 { 0x825d0000, 0x825dbfff, REGISTRY_RIPENCC }, // 130.93.0.0 - 130.93.191.255 { 0x825dc000, 0x825dffff, REGISTRY_RIPENCC }, // 130.93.192.0 - 130.93.255.255 { 0x825e0000, 0x825effff, REGISTRY_ARIN }, // 130.94.0.0 - 130.94.255.255 { 0x825f0000, 0x825fffff, REGISTRY_APNIC }, // 130.95.0.0 - 130.95.255.255 { 0x82600000, 0x8261ffff, REGISTRY_ARIN }, // 130.96.0.0 - 130.97.255.255 { 0x82620000, 0x8262ffff, REGISTRY_RIPENCC }, // 130.98.0.0 - 130.98.255.255 { 0x82630000, 0x8263ffff, REGISTRY_ARIN }, // 130.99.0.0 - 130.99.255.255 { 0x82640000, 0x8264ffff, REGISTRY_RIPENCC }, // 130.100.0.0 - 130.100.255.255 { 0x82650000, 0x8265ffff, REGISTRY_ARIN }, // 130.101.0.0 - 130.101.255.255 { 0x82660000, 0x8266ffff, REGISTRY_APNIC }, // 130.102.0.0 - 130.102.255.255 { 0x82670000, 0x8267ffff, REGISTRY_ARIN }, // 130.103.0.0 - 130.103.255.255 { 0x82680000, 0x8268ffff, REGISTRY_RIPENCC }, // 130.104.0.0 - 130.104.255.255 { 0x82690000, 0x8269ffff, REGISTRY_APNIC }, // 130.105.0.0 - 130.105.255.255 { 0x826a0000, 0x826fffff, REGISTRY_ARIN }, // 130.106.0.0 - 130.111.255.255 { 0x82700000, 0x8270ffff, REGISTRY_RIPENCC }, // 130.112.0.0 - 130.112.255.255 { 0x82710000, 0x8272ffff, REGISTRY_ARIN }, // 130.113.0.0 - 130.114.255.255 { 0x82730000, 0x8273ffff, REGISTRY_RIPENCC }, // 130.115.0.0 - 130.115.255.255 { 0x82740000, 0x8274ffff, REGISTRY_APNIC }, // 130.116.0.0 - 130.116.255.255 { 0x82750000, 0x8277ffff, REGISTRY_ARIN }, // 130.117.0.0 - 130.119.255.255 { 0x82780000, 0x8278ffff, REGISTRY_RIPENCC }, // 130.120.0.0 - 130.120.255.255 { 0x82790000, 0x827affff, REGISTRY_ARIN }, // 130.121.0.0 - 130.122.255.255 { 0x827b0000, 0x827bffff, REGISTRY_APNIC }, // 130.123.0.0 - 130.123.255.255 { 0x827c0000, 0x827cffff, REGISTRY_ARIN }, // 130.124.0.0 - 130.124.255.255 { 0x827d0000, 0x827dffff, REGISTRY_RIPENCC }, // 130.125.0.0 - 130.125.255.255 { 0x827e0000, 0x8281ffff, REGISTRY_ARIN }, // 130.126.0.0 - 130.129.255.255 { 0x82820000, 0x8282ffff, REGISTRY_APNIC }, // 130.130.0.0 - 130.130.255.255 { 0x82830000, 0x8284ffff, REGISTRY_ARIN }, // 130.131.0.0 - 130.132.255.255 { 0x82850000, 0x8285ffff, REGISTRY_RIPENCC }, // 130.133.0.0 - 130.133.255.255 { 0x82860000, 0x8287ffff, REGISTRY_ARIN }, // 130.134.0.0 - 130.135.255.255 { 0x82880000, 0x8288ffff, REGISTRY_RIPENCC }, // 130.136.0.0 - 130.136.255.255 { 0x82890000, 0x8289ffff, REGISTRY_ARIN }, // 130.137.0.0 - 130.137.255.255 { 0x828a0000, 0x8295ffff, REGISTRY_RIPENCC }, // 130.138.0.0 - 130.149.255.255 { 0x82960000, 0x8298ffff, REGISTRY_ARIN }, // 130.150.0.0 - 130.152.255.255 { 0x82990000, 0x8299ffff, REGISTRY_APNIC }, // 130.153.0.0 - 130.153.255.255 { 0x829a0000, 0x829affff, REGISTRY_ARIN }, // 130.154.0.0 - 130.154.255.255 { 0x829b0000, 0x829bffff, REGISTRY_APNIC }, // 130.155.0.0 - 130.155.255.255 { 0x829c0000, 0x829dffff, REGISTRY_ARIN }, // 130.156.0.0 - 130.157.255.255 { 0x829e0000, 0x829effff, REGISTRY_APNIC }, // 130.158.0.0 - 130.158.255.255 { 0x829f0000, 0x829fffff, REGISTRY_RIPENCC }, // 130.159.0.0 - 130.159.255.255 { 0x82a00000, 0x82a0ffff, REGISTRY_ARIN }, // 130.160.0.0 - 130.160.255.255 { 0x82a10000, 0x82a1ffff, REGISTRY_RIPENCC }, // 130.161.0.0 - 130.161.255.255 { 0x82a20000, 0x82b3ffff, REGISTRY_ARIN }, // 130.162.0.0 - 130.179.255.255 { 0x82b40000, 0x82b4ffff, REGISTRY_RIPENCC }, // 130.180.0.0 - 130.180.255.255 { 0x82b50000, 0x82b6ffff, REGISTRY_ARIN }, // 130.181.0.0 - 130.182.255.255 { 0x82b70000, 0x82b7ffff, REGISTRY_RIPENCC }, // 130.183.0.0 - 130.183.255.255 { 0x82b80000, 0x82b8ffff, REGISTRY_ARIN }, // 130.184.0.0 - 130.184.255.255 { 0x82b90000, 0x82b96fff, REGISTRY_RIPENCC }, // 130.185.0.0 - 130.185.111.255 { 0x82b98000, 0x82b9ffff, REGISTRY_RIPENCC }, // 130.185.128.0 - 130.185.255.255 { 0x82ba0000, 0x82baffff, REGISTRY_RIPENCC }, // 130.186.0.0 - 130.186.255.255 { 0x82bb0000, 0x82bbffff, REGISTRY_ARIN }, // 130.187.0.0 - 130.187.255.255 { 0x82bc0000, 0x82bcffff, REGISTRY_RIPENCC }, // 130.188.0.0 - 130.188.255.255 { 0x82bd0000, 0x82bdffff, REGISTRY_ARIN }, // 130.189.0.0 - 130.189.255.255 { 0x82be0000, 0x82beffff, REGISTRY_RIPENCC }, // 130.190.0.0 - 130.190.255.255 { 0x82bf0000, 0x82bfffff, REGISTRY_ARIN }, // 130.191.0.0 - 130.191.255.255 { 0x82c00000, 0x82c0ffff, REGISTRY_RIPENCC }, // 130.192.0.0 - 130.192.255.255 { 0x82c10000, 0x82c1ffff, REGISTRY_RIPENCC }, // 130.193.0.0 - 130.193.255.255 { 0x82c20000, 0x82c3ffff, REGISTRY_APNIC }, // 130.194.0.0 - 130.195.255.255 { 0x82c40000, 0x82c5ffff, REGISTRY_ARIN }, // 130.196.0.0 - 130.197.255.255 { 0x82c60000, 0x82c6ffff, REGISTRY_RIPENCC }, // 130.198.0.0 - 130.198.255.255 { 0x82c70000, 0x82cbffff, REGISTRY_ARIN }, // 130.199.0.0 - 130.203.255.255 { 0x82cc0000, 0x82ccffff, REGISTRY_RIPENCC }, // 130.204.0.0 - 130.204.255.255 { 0x82cd0000, 0x82cdffff, REGISTRY_ARIN }, // 130.205.0.0 - 130.205.255.255 { 0x82ce0000, 0x82ceffff, REGISTRY_RIPENCC }, // 130.206.0.0 - 130.206.255.255 { 0x82cf0000, 0x82cfffff, REGISTRY_ARIN }, // 130.207.0.0 - 130.207.255.255 { 0x82d00000, 0x82d1ffff, REGISTRY_RIPENCC }, // 130.208.0.0 - 130.209.255.255 { 0x82d20000, 0x82d7ffff, REGISTRY_ARIN }, // 130.210.0.0 - 130.215.255.255 { 0x82d80000, 0x82d9ffff, REGISTRY_APNIC }, // 130.216.0.0 - 130.217.255.255 { 0x82da0000, 0x82dbffff, REGISTRY_ARIN }, // 130.218.0.0 - 130.219.255.255 { 0x82dc0000, 0x82dcffff, REGISTRY_APNIC }, // 130.220.0.0 - 130.220.255.255 { 0x82dd0000, 0x82deffff, REGISTRY_ARIN }, // 130.221.0.0 - 130.222.255.255 { 0x82df0000, 0x82dfffff, REGISTRY_RIPENCC }, // 130.223.0.0 - 130.223.255.255 { 0x82e00000, 0x82e0ffff, REGISTRY_ARIN }, // 130.224.0.0 - 130.224.255.255 { 0x82e10000, 0x82e2ffff, REGISTRY_RIPENCC }, // 130.225.0.0 - 130.226.255.255 { 0x82e30000, 0x82f4ffff, REGISTRY_RIPENCC }, // 130.227.0.0 - 130.244.255.255 { 0x82f50000, 0x82f5ffff, REGISTRY_ARIN }, // 130.245.0.0 - 130.245.255.255 { 0x82f60000, 0x82f6ffff, REGISTRY_RIPENCC }, // 130.246.0.0 - 130.246.255.255 { 0x82f70000, 0x82faffff, REGISTRY_ARIN }, // 130.247.0.0 - 130.250.255.255 { 0x82fb0000, 0x82fbffff, REGISTRY_RIPENCC }, // 130.251.0.0 - 130.251.255.255 { 0x82fc0000, 0x82feffff, REGISTRY_ARIN }, // 130.252.0.0 - 130.254.255.255 { 0x82ff0000, 0x82ffffff, REGISTRY_RIPENCC }, // 130.255.0.0 - 130.255.255.255 { 0x83000000, 0x8300ffff, REGISTRY_LACNIC }, // 131.0.0.0 - 131.0.255.255 { 0x83010000, 0x8301ffff, REGISTRY_RIPENCC }, // 131.1.0.0 - 131.1.255.255 { 0x83020000, 0x8347ffff, REGISTRY_ARIN }, // 131.2.0.0 - 131.71.255.255 { 0x83480000, 0x8348ffff, REGISTRY_LACNIC }, // 131.72.0.0 - 131.72.255.255 { 0x83490000, 0x8360ffff, REGISTRY_ARIN }, // 131.73.0.0 - 131.96.255.255 { 0x83610000, 0x8361ffff, REGISTRY_RIPENCC }, // 131.97.0.0 - 131.97.255.255 { 0x83620000, 0x8362ffff, REGISTRY_ARIN }, // 131.98.0.0 - 131.98.255.255 { 0x83630000, 0x8363ffff, REGISTRY_RIPENCC }, // 131.99.0.0 - 131.99.255.255 { 0x83640000, 0x8364ffff, REGISTRY_LACNIC }, // 131.100.0.0 - 131.100.255.255 { 0x83650000, 0x8365ffff, REGISTRY_ARIN }, // 131.101.0.0 - 131.101.255.255 { 0x83660000, 0x8366ffff, REGISTRY_RIPENCC }, // 131.102.0.0 - 131.102.255.255 { 0x83670000, 0x836bffff, REGISTRY_ARIN }, // 131.103.0.0 - 131.107.255.255 { 0x836c0000, 0x836cffff, REGISTRY_LACNIC }, // 131.108.0.0 - 131.108.255.255 { 0x836d0000, 0x836effff, REGISTRY_ARIN }, // 131.109.0.0 - 131.110.255.255 { 0x836f0000, 0x836fffff, REGISTRY_RIPENCC }, // 131.111.0.0 - 131.111.255.255 { 0x83700000, 0x8371ffff, REGISTRY_APNIC }, // 131.112.0.0 - 131.113.255.255 { 0x83720000, 0x8372ffff, REGISTRY_RIPENCC }, // 131.114.0.0 - 131.114.255.255 { 0x83730000, 0x8374ffff, REGISTRY_RIPENCC }, // 131.115.0.0 - 131.116.255.255 { 0x83750000, 0x83757fff, REGISTRY_RIPENCC }, // 131.117.0.0 - 131.117.127.255 { 0x83758000, 0x8375ffff, REGISTRY_RIPENCC }, // 131.117.128.0 - 131.117.255.255 { 0x83760000, 0x8380ffff, REGISTRY_ARIN }, // 131.118.0.0 - 131.128.255.255 { 0x83810000, 0x8381ffff, REGISTRY_APNIC }, // 131.129.0.0 - 131.129.255.255 { 0x83820000, 0x8382ffff, REGISTRY_RIPENCC }, // 131.130.0.0 - 131.130.255.255 { 0x83830000, 0x8392ffff, REGISTRY_ARIN }, // 131.131.0.0 - 131.146.255.255 { 0x83930000, 0x8393ffff, REGISTRY_APNIC }, // 131.147.0.0 - 131.147.255.255 { 0x83940000, 0x8397ffff, REGISTRY_ARIN }, // 131.148.0.0 - 131.151.255.255 { 0x83980000, 0x8398ffff, REGISTRY_RIPENCC }, // 131.152.0.0 - 131.152.255.255 { 0x83990000, 0x8399ffff, REGISTRY_ARIN }, // 131.153.0.0 - 131.153.255.255 { 0x839a0000, 0x839bffff, REGISTRY_RIPENCC }, // 131.154.0.0 - 131.155.255.255 { 0x839c0000, 0x839effff, REGISTRY_ARIN }, // 131.156.0.0 - 131.158.255.255 { 0x839f0000, 0x83a0ffff, REGISTRY_RIPENCC }, // 131.159.0.0 - 131.160.255.255 { 0x83a10000, 0x83a1ffff, REGISTRY_LACNIC }, // 131.161.0.0 - 131.161.255.255 { 0x83a20000, 0x83a3ffff, REGISTRY_ARIN }, // 131.162.0.0 - 131.163.255.255 { 0x83a40000, 0x83a6ffff, REGISTRY_RIPENCC }, // 131.164.0.0 - 131.166.255.255 { 0x83a70000, 0x83a8ffff, REGISTRY_ARIN }, // 131.167.0.0 - 131.168.255.255 { 0x83a90000, 0x83a9ffff, REGISTRY_RIPENCC }, // 131.169.0.0 - 131.169.255.255 { 0x83aa0000, 0x83aaffff, REGISTRY_APNIC }, // 131.170.0.0 - 131.170.255.255 { 0x83ab0000, 0x83abffff, REGISTRY_ARIN }, // 131.171.0.0 - 131.171.255.255 { 0x83ac0000, 0x83acffff, REGISTRY_APNIC }, // 131.172.0.0 - 131.172.255.255 { 0x83ad0000, 0x83b1ffff, REGISTRY_RIPENCC }, // 131.173.0.0 - 131.177.255.255 { 0x83b20000, 0x83b2ffff, REGISTRY_LACNIC }, // 131.178.0.0 - 131.178.255.255 { 0x83b30000, 0x83b3ffff, REGISTRY_ARIN }, // 131.179.0.0 - 131.179.255.255 { 0x83b40000, 0x83b4ffff, REGISTRY_RIPENCC }, // 131.180.0.0 - 131.180.255.255 { 0x83b50000, 0x83b5ffff, REGISTRY_APNIC }, // 131.181.0.0 - 131.181.255.255 { 0x83b60000, 0x83b8ffff, REGISTRY_ARIN }, // 131.182.0.0 - 131.184.255.255 { 0x83b90000, 0x83b9ffff, REGISTRY_APNIC }, // 131.185.0.0 - 131.185.255.255 { 0x83ba0000, 0x83bbffff, REGISTRY_ARIN }, // 131.186.0.0 - 131.187.255.255 { 0x83bc0000, 0x83bcffff, REGISTRY_RIPENCC }, // 131.188.0.0 - 131.188.255.255 { 0x83bd0000, 0x83c3ffff, REGISTRY_ARIN }, // 131.189.0.0 - 131.195.255.255 { 0x83c40400, 0x83c40bff, REGISTRY_LACNIC }, // 131.196.4.0 - 131.196.11.255 { 0x83c41800, 0x83c41fff, REGISTRY_LACNIC }, // 131.196.24.0 - 131.196.31.255 { 0x83c43400, 0x83c437ff, REGISTRY_LACNIC }, // 131.196.52.0 - 131.196.55.255 { 0x83c50000, 0x83caffff, REGISTRY_ARIN }, // 131.197.0.0 - 131.202.255.255 { 0x83cb0000, 0x83cbffff, REGISTRY_APNIC }, // 131.203.0.0 - 131.203.255.255 { 0x83cc0000, 0x83ccffff, REGISTRY_ARIN }, // 131.204.0.0 - 131.204.255.255 { 0x83cd0000, 0x83cdffff, REGISTRY_RIPENCC }, // 131.205.0.0 - 131.205.255.255 { 0x83ce0000, 0x83ceffff, REGISTRY_APNIC }, // 131.206.0.0 - 131.206.255.255 { 0x83cf0000, 0x83cfffff, REGISTRY_RIPENCC }, // 131.207.0.0 - 131.207.255.255 { 0x83d00000, 0x83d2ffff, REGISTRY_ARIN }, // 131.208.0.0 - 131.210.255.255 { 0x83d30000, 0x83d3ffff, REGISTRY_RIPENCC }, // 131.211.0.0 - 131.211.255.255 { 0x83d40000, 0x83d4ffff, REGISTRY_ARIN }, // 131.212.0.0 - 131.212.255.255 { 0x83d50000, 0x83d5ffff, REGISTRY_APNIC }, // 131.213.0.0 - 131.213.255.255 { 0x83d60000, 0x83d8ffff, REGISTRY_ARIN }, // 131.214.0.0 - 131.216.255.255 { 0x83d90000, 0x83d9ffff, REGISTRY_APNIC }, // 131.217.0.0 - 131.217.255.255 { 0x83da0000, 0x83dbffff, REGISTRY_ARIN }, // 131.218.0.0 - 131.219.255.255 { 0x83dc0000, 0x83dcffff, REGISTRY_RIPENCC }, // 131.220.0.0 - 131.220.255.255 { 0x83dd0000, 0x83ddffff, REGISTRY_LACNIC }, // 131.221.0.0 - 131.221.255.255 { 0x83de0000, 0x83dfffff, REGISTRY_ARIN }, // 131.222.0.0 - 131.223.255.255 { 0x83e00000, 0x83e0ffff, REGISTRY_RIPENCC }, // 131.224.0.0 - 131.224.255.255 { 0x83e10000, 0x83e2ffff, REGISTRY_ARIN }, // 131.225.0.0 - 131.226.255.255 { 0x83e30000, 0x83e4ffff, REGISTRY_RIPENCC }, // 131.227.0.0 - 131.228.255.255 { 0x83e50000, 0x83e6ffff, REGISTRY_ARIN }, // 131.229.0.0 - 131.230.255.255 { 0x83e70000, 0x83e7ffff, REGISTRY_RIPENCC }, // 131.231.0.0 - 131.231.255.255 { 0x83e80000, 0x83e9ffff, REGISTRY_ARIN }, // 131.232.0.0 - 131.233.255.255 { 0x83ea0000, 0x83eaffff, REGISTRY_RIPENCC }, // 131.234.0.0 - 131.234.255.255 { 0x83eb0000, 0x83ebffff, REGISTRY_ARIN }, // 131.235.0.0 - 131.235.255.255 { 0x83ec0000, 0x83ecffff, REGISTRY_APNIC }, // 131.236.0.0 - 131.236.255.255 { 0x83ed0000, 0x83edffff, REGISTRY_RIPENCC }, // 131.237.0.0 - 131.237.255.255 { 0x83ee0000, 0x83f1ffff, REGISTRY_ARIN }, // 131.238.0.0 - 131.241.255.255 { 0x83f20000, 0x83f2ffff, REGISTRY_APNIC }, // 131.242.0.0 - 131.242.255.255 { 0x83f30000, 0x83f3ffff, REGISTRY_ARIN }, // 131.243.0.0 - 131.243.255.255 { 0x83f40000, 0x83f5ffff, REGISTRY_APNIC }, // 131.244.0.0 - 131.245.255.255 { 0x83f60000, 0x83f6ffff, REGISTRY_RIPENCC }, // 131.246.0.0 - 131.246.255.255 { 0x83f70000, 0x83f7ffff, REGISTRY_ARIN }, // 131.247.0.0 - 131.247.255.255 { 0x83f80000, 0x83f8ffff, REGISTRY_APNIC }, // 131.248.0.0 - 131.248.255.255 { 0x83f90000, 0x83faffff, REGISTRY_ARIN }, // 131.249.0.0 - 131.250.255.255 { 0x83fb0000, 0x83fbffff, REGISTRY_RIPENCC }, // 131.251.0.0 - 131.251.255.255 { 0x83fc0000, 0x83fdffff, REGISTRY_ARIN }, // 131.252.0.0 - 131.253.255.255 { 0x83fe0000, 0x83feffff, REGISTRY_RIPENCC }, // 131.254.0.0 - 131.254.255.255 { 0x83ff0000, 0x83ffffff, REGISTRY_LACNIC }, // 131.255.0.0 - 131.255.255.255 { 0x84000000, 0x843fffff, REGISTRY_ARIN }, // 132.0.0.0 - 132.63.255.255 { 0x84400000, 0x844effff, REGISTRY_RIPENCC }, // 132.64.0.0 - 132.78.255.255 { 0x844f0000, 0x8491ffff, REGISTRY_ARIN }, // 132.79.0.0 - 132.145.255.255 { 0x84920000, 0x8492ffff, REGISTRY_RIPENCC }, // 132.146.0.0 - 132.146.255.255 { 0x84930000, 0x84933fff, REGISTRY_ARIN }, // 132.147.0.0 - 132.147.63.255 { 0x84934000, 0x84937fff, REGISTRY_APNIC }, // 132.147.64.0 - 132.147.127.255 { 0x84938000, 0x8494ffff, REGISTRY_ARIN }, // 132.147.128.0 - 132.148.255.255 { 0x84950000, 0x8496ffff, REGISTRY_RIPENCC }, // 132.149.0.0 - 132.150.255.255 { 0x84970000, 0x8498ffff, REGISTRY_ARIN }, // 132.151.0.0 - 132.152.255.255 { 0x84990000, 0x8499ffff, REGISTRY_RIPENCC }, // 132.153.0.0 - 132.153.255.255 { 0x849a0000, 0x849affff, REGISTRY_APNIC }, // 132.154.0.0 - 132.154.255.255 { 0x849b0000, 0x849bffff, REGISTRY_RIPENCC }, // 132.155.0.0 - 132.155.255.255 { 0x849c0000, 0x849cffff, REGISTRY_ARIN }, // 132.156.0.0 - 132.156.255.255 { 0x849d0000, 0x849dffff, REGISTRY_LACNIC }, // 132.157.0.0 - 132.157.255.255 { 0x849e0000, 0x84a4ffff, REGISTRY_ARIN }, // 132.158.0.0 - 132.164.255.255 { 0x84a50000, 0x84a9ffff, REGISTRY_RIPENCC }, // 132.165.0.0 - 132.169.255.255 { 0x84aa0000, 0x84aaffff, REGISTRY_ARIN }, // 132.170.0.0 - 132.170.255.255 { 0x84ab0000, 0x84abffff, REGISTRY_RIPENCC }, // 132.171.0.0 - 132.171.255.255 { 0x84ac0000, 0x84afffff, REGISTRY_ARIN }, // 132.172.0.0 - 132.175.255.255 { 0x84b00000, 0x84b0ffff, REGISTRY_RIPENCC }, // 132.176.0.0 - 132.176.255.255 { 0x84b10000, 0x84b2ffff, REGISTRY_ARIN }, // 132.177.0.0 - 132.178.255.255 { 0x84b30000, 0x84b3ffff, REGISTRY_APNIC }, // 132.179.0.0 - 132.179.255.255 { 0x84b40000, 0x84b4ffff, REGISTRY_RIPENCC }, // 132.180.0.0 - 132.180.255.255 { 0x84b50000, 0x84b6ffff, REGISTRY_APNIC }, // 132.181.0.0 - 132.182.255.255 { 0x84b70000, 0x84b7ffff, REGISTRY_ARIN }, // 132.183.0.0 - 132.183.255.255 { 0x84b80000, 0x84b8ffff, REGISTRY_LACNIC }, // 132.184.0.0 - 132.184.255.255 { 0x84b90000, 0x84b9ffff, REGISTRY_RIPENCC }, // 132.185.0.0 - 132.185.255.255 { 0x84ba0000, 0x84baffff, REGISTRY_RIPENCC }, // 132.186.0.0 - 132.186.255.255 { 0x84bb0000, 0x84bbffff, REGISTRY_RIPENCC }, // 132.187.0.0 - 132.187.255.255 { 0x84bc0000, 0x84beffff, REGISTRY_ARIN }, // 132.188.0.0 - 132.190.255.255 { 0x84bf0000, 0x84bfffff, REGISTRY_LACNIC }, // 132.191.0.0 - 132.191.255.255 { 0x84c00000, 0x84c2ffff, REGISTRY_ARIN }, // 132.192.0.0 - 132.194.255.255 { 0x84c30000, 0x84c4ffff, REGISTRY_RIPENCC }, // 132.195.0.0 - 132.196.255.255 { 0x84c50000, 0x84c6ffff, REGISTRY_ARIN }, // 132.197.0.0 - 132.198.255.255 { 0x84c70000, 0x84c7ffff, REGISTRY_RIPENCC }, // 132.199.0.0 - 132.199.255.255 { 0x84c80000, 0x84ddffff, REGISTRY_ARIN }, // 132.200.0.0 - 132.221.255.255 { 0x84de0000, 0x84deffff, REGISTRY_APNIC }, // 132.222.0.0 - 132.222.255.255 { 0x84df0000, 0x84e2ffff, REGISTRY_ARIN }, // 132.223.0.0 - 132.226.255.255 { 0x84e30000, 0x84e3ffff, REGISTRY_RIPENCC }, // 132.227.0.0 - 132.227.255.255 { 0x84e40000, 0x84e4ffff, REGISTRY_ARIN }, // 132.228.0.0 - 132.228.255.255 { 0x84e50000, 0x84e8ffff, REGISTRY_RIPENCC }, // 132.229.0.0 - 132.232.255.255 { 0x84e90000, 0x84e9ffff, REGISTRY_ARIN }, // 132.233.0.0 - 132.233.255.255 { 0x84ea0000, 0x84eaffff, REGISTRY_APNIC }, // 132.234.0.0 - 132.234.255.255 { 0x84eb0000, 0x84f3ffff, REGISTRY_ARIN }, // 132.235.0.0 - 132.243.255.255 { 0x84f40000, 0x84f4ffff, REGISTRY_RIPENCC }, // 132.244.0.0 - 132.244.255.255 { 0x84f50000, 0x84f6ffff, REGISTRY_ARIN }, // 132.245.0.0 - 132.246.255.255 { 0x84f70000, 0x84f8ffff, REGISTRY_LACNIC }, // 132.247.0.0 - 132.248.255.255 { 0x84f90000, 0x84faffff, REGISTRY_ARIN }, // 132.249.0.0 - 132.250.255.255 { 0x84fb0000, 0x84fbffff, REGISTRY_LACNIC }, // 132.251.0.0 - 132.251.255.255 { 0x84fc0000, 0x84fcffff, REGISTRY_RIPENCC }, // 132.252.0.0 - 132.252.255.255 { 0x84fd0000, 0x84fdffff, REGISTRY_ARIN }, // 132.253.0.0 - 132.253.255.255 { 0x84fe0000, 0x84ffffff, REGISTRY_LACNIC }, // 132.254.0.0 - 132.255.255.255 { 0x85000000, 0x85ffffff, REGISTRY_APNIC }, // 133.0.0.0 - 133.255.255.255 { 0x86000000, 0x8600ffff, REGISTRY_RIPENCC }, // 134.0.0.0 - 134.0.255.255 { 0x86010000, 0x8602ffff, REGISTRY_RIPENCC }, // 134.1.0.0 - 134.2.255.255 { 0x86030000, 0x8603ffff, REGISTRY_RIPENCC }, // 134.3.0.0 - 134.3.255.255 { 0x86040000, 0x8606ffff, REGISTRY_ARIN }, // 134.4.0.0 - 134.6.255.255 { 0x86070000, 0x8607ffff, REGISTRY_APNIC }, // 134.7.0.0 - 134.7.255.255 { 0x86080000, 0x8610ffff, REGISTRY_ARIN }, // 134.8.0.0 - 134.16.255.255 { 0x86110000, 0x8611ffff, REGISTRY_RIPENCC }, // 134.17.0.0 - 134.17.255.255 { 0x86120000, 0x8612ffff, REGISTRY_APNIC }, // 134.18.0.0 - 134.18.255.255 { 0x86130000, 0x8613ffff, REGISTRY_RIPENCC }, // 134.19.0.0 - 134.19.255.255 { 0x86140000, 0x8614ffff, REGISTRY_ARIN }, // 134.20.0.0 - 134.20.255.255 { 0x86150000, 0x8615ffff, REGISTRY_RIPENCC }, // 134.21.0.0 - 134.21.255.255 { 0x86160000, 0x8618ffff, REGISTRY_ARIN }, // 134.22.0.0 - 134.24.255.255 { 0x86190000, 0x8619ffff, REGISTRY_RIPENCC }, // 134.25.0.0 - 134.25.255.255 { 0x861a0000, 0x861affff, REGISTRY_ARIN }, // 134.26.0.0 - 134.26.255.255 { 0x861b0000, 0x861cffff, REGISTRY_RIPENCC }, // 134.27.0.0 - 134.28.255.255 { 0x861d0000, 0x861dffff, REGISTRY_ARIN }, // 134.29.0.0 - 134.29.255.255 { 0x861e0000, 0x861effff, REGISTRY_RIPENCC }, // 134.30.0.0 - 134.30.255.255 { 0x861f0000, 0x8621ffff, REGISTRY_ARIN }, // 134.31.0.0 - 134.33.255.255 { 0x86220000, 0x8625ffff, REGISTRY_RIPENCC }, // 134.34.0.0 - 134.37.255.255 { 0x86260000, 0x862adfff, REGISTRY_ARIN }, // 134.38.0.0 - 134.42.223.255 { 0x862ae000, 0x862ae3ff, REGISTRY_APNIC }, // 134.42.224.0 - 134.42.227.255 { 0x862ae400, 0x862effff, REGISTRY_ARIN }, // 134.42.228.0 - 134.46.255.255 { 0x862f0000, 0x862fffff, REGISTRY_RIPENCC }, // 134.47.0.0 - 134.47.255.255 { 0x86300000, 0x8635ffff, REGISTRY_ARIN }, // 134.48.0.0 - 134.53.255.255 { 0x86360000, 0x8636ffff, REGISTRY_RIPENCC }, // 134.54.0.0 - 134.54.255.255 { 0x86370000, 0x8639ffff, REGISTRY_ARIN }, // 134.55.0.0 - 134.57.255.255 { 0x863a0000, 0x863dffff, REGISTRY_RIPENCC }, // 134.58.0.0 - 134.61.255.255 { 0x863e0000, 0x864affff, REGISTRY_ARIN }, // 134.62.0.0 - 134.74.255.255 { 0x864b0000, 0x864bffff, REGISTRY_APNIC }, // 134.75.0.0 - 134.75.255.255 { 0x864c0000, 0x864cffff, REGISTRY_RIPENCC }, // 134.76.0.0 - 134.76.255.255 { 0x864d0000, 0x8650ffff, REGISTRY_ARIN }, // 134.77.0.0 - 134.80.255.255 { 0x86510000, 0x8651ffff, REGISTRY_RIPENCC }, // 134.81.0.0 - 134.81.255.255 { 0x86520000, 0x8652ffff, REGISTRY_ARIN }, // 134.82.0.0 - 134.82.255.255 { 0x86530000, 0x8653ffff, REGISTRY_RIPENCC }, // 134.83.0.0 - 134.83.255.255 { 0x86540000, 0x8659ffff, REGISTRY_ARIN }, // 134.84.0.0 - 134.89.255.255 { 0x865a0000, 0x865affff, REGISTRY_RIPENCC }, // 134.90.0.0 - 134.90.255.255 { 0x865b0000, 0x866effff, REGISTRY_RIPENCC }, // 134.91.0.0 - 134.110.255.255 { 0x866f0000, 0x8672ffff, REGISTRY_ARIN }, // 134.111.0.0 - 134.114.255.255 { 0x86730000, 0x8673ffff, REGISTRY_APNIC }, // 134.115.0.0 - 134.115.255.255 { 0x86740000, 0x8676ffff, REGISTRY_ARIN }, // 134.116.0.0 - 134.118.255.255 { 0x86770000, 0x8677ffff, REGISTRY_RIPENCC }, // 134.119.0.0 - 134.119.255.255 { 0x86780000, 0x8681ffff, REGISTRY_ARIN }, // 134.120.0.0 - 134.129.255.255 { 0x86820000, 0x8682ffff, REGISTRY_RIPENCC }, // 134.130.0.0 - 134.130.255.255 { 0x86830000, 0x8689ffff, REGISTRY_ARIN }, // 134.131.0.0 - 134.137.255.255 { 0x868a0000, 0x868affff, REGISTRY_RIPENCC }, // 134.138.0.0 - 134.138.255.255 { 0x868b0000, 0x868dffff, REGISTRY_ARIN }, // 134.139.0.0 - 134.141.255.255 { 0x868e0000, 0x868fffff, REGISTRY_RIPENCC }, // 134.142.0.0 - 134.143.255.255 { 0x86900000, 0x8690ffff, REGISTRY_APNIC }, // 134.144.0.0 - 134.144.255.255 { 0x86910000, 0x8692ffff, REGISTRY_RIPENCC }, // 134.145.0.0 - 134.146.255.255 { 0x86930000, 0x8693ffff, REGISTRY_RIPENCC }, // 134.147.0.0 - 134.147.255.255 { 0x86940000, 0x8694ffff, REGISTRY_APNIC }, // 134.148.0.0 - 134.148.255.255 { 0x86950000, 0x8696ffff, REGISTRY_ARIN }, // 134.149.0.0 - 134.150.255.255 { 0x86970000, 0x8697ffff, REGISTRY_RIPENCC }, // 134.151.0.0 - 134.151.255.255 { 0x86980000, 0x869affff, REGISTRY_ARIN }, // 134.152.0.0 - 134.154.255.255 { 0x869b0000, 0x869bffff, REGISTRY_RIPENCC }, // 134.155.0.0 - 134.155.255.255 { 0x869c0000, 0x869cffff, REGISTRY_ARIN }, // 134.156.0.0 - 134.156.255.255 { 0x869d0000, 0x869effff, REGISTRY_RIPENCC }, // 134.157.0.0 - 134.158.255.255 { 0x869f0000, 0x86a0ffff, REGISTRY_APNIC }, // 134.159.0.0 - 134.160.255.255 { 0x86a10000, 0x86a8ffff, REGISTRY_ARIN }, // 134.161.0.0 - 134.168.255.255 { 0x86a90000, 0x86a9ffff, REGISTRY_RIPENCC }, // 134.169.0.0 - 134.169.255.255 { 0x86aa0000, 0x86aaffff, REGISTRY_ARIN }, // 134.170.0.0 - 134.170.255.255 { 0x86ab0000, 0x86abffff, REGISTRY_RIPENCC }, // 134.171.0.0 - 134.171.255.255 { 0x86ac0000, 0x86afffff, REGISTRY_ARIN }, // 134.172.0.0 - 134.175.255.255 { 0x86b00000, 0x86b0ffff, REGISTRY_RIPENCC }, // 134.176.0.0 - 134.176.255.255 { 0x86b10000, 0x86b1ffff, REGISTRY_ARIN }, // 134.177.0.0 - 134.177.255.255 { 0x86b20000, 0x86b2ffff, REGISTRY_APNIC }, // 134.178.0.0 - 134.178.255.255 { 0x86b30000, 0x86b3ffff, REGISTRY_ARIN }, // 134.179.0.0 - 134.179.255.255 { 0x86b40000, 0x86b4ffff, REGISTRY_APNIC }, // 134.180.0.0 - 134.180.255.255 { 0x86b50000, 0x86b6ffff, REGISTRY_ARIN }, // 134.181.0.0 - 134.182.255.255 { 0x86b70000, 0x86b8ffff, REGISTRY_RIPENCC }, // 134.183.0.0 - 134.184.255.255 { 0x86b90000, 0x86bbffff, REGISTRY_ARIN }, // 134.185.0.0 - 134.187.255.255 { 0x86bc0000, 0x86bcffff, REGISTRY_RIPENCC }, // 134.188.0.0 - 134.188.255.255 { 0x86bd0000, 0x86beffff, REGISTRY_ARIN }, // 134.189.0.0 - 134.190.255.255 { 0x86bf0000, 0x86bfffff, REGISTRY_RIPENCC }, // 134.191.0.0 - 134.191.255.255 { 0x86c00000, 0x86c3ffff, REGISTRY_ARIN }, // 134.192.0.0 - 134.195.255.255 { 0x86c40000, 0x86c4ffff, REGISTRY_APNIC }, // 134.196.0.0 - 134.196.255.255 { 0x86c50000, 0x86caffff, REGISTRY_ARIN }, // 134.197.0.0 - 134.202.255.255 { 0x86cb0000, 0x86cbffff, REGISTRY_RIPENCC }, // 134.203.0.0 - 134.203.255.255 { 0x86cc0000, 0x86cdffff, REGISTRY_ARIN }, // 134.204.0.0 - 134.205.255.255 { 0x86ce0000, 0x86ceffff, REGISTRY_RIPENCC }, // 134.206.0.0 - 134.206.255.255 { 0x86cf0000, 0x86cfffff, REGISTRY_ARIN }, // 134.207.0.0 - 134.207.255.255 { 0x86d00000, 0x86d0ffff, REGISTRY_APNIC }, // 134.208.0.0 - 134.208.255.255 { 0x86d10000, 0x86d2ffff, REGISTRY_ARIN }, // 134.209.0.0 - 134.210.255.255 { 0x86d30000, 0x86d3ffff, REGISTRY_APNIC }, // 134.211.0.0 - 134.211.255.255 { 0x86d40000, 0x86d6ffff, REGISTRY_RIPENCC }, // 134.212.0.0 - 134.214.255.255 { 0x86d70000, 0x86daffff, REGISTRY_ARIN }, // 134.215.0.0 - 134.218.255.255 { 0x86db0000, 0x86deffff, REGISTRY_RIPENCC }, // 134.219.0.0 - 134.222.255.255 { 0x86df0000, 0x86e0ffff, REGISTRY_ARIN }, // 134.223.0.0 - 134.224.255.255 { 0x86e10000, 0x86e3ffff, REGISTRY_RIPENCC }, // 134.225.0.0 - 134.227.255.255 { 0x86e40000, 0x86ebffff, REGISTRY_ARIN }, // 134.228.0.0 - 134.235.255.255 { 0x86ec0000, 0x86edffff, REGISTRY_APNIC }, // 134.236.0.0 - 134.237.255.255 { 0x86ee0000, 0x86eeffff, REGISTRY_ARIN }, // 134.238.0.0 - 134.238.255.255 { 0x86ef0000, 0x86efffff, REGISTRY_RIPENCC }, // 134.239.0.0 - 134.239.255.255 { 0x86f00000, 0x86f2dfff, REGISTRY_ARIN }, // 134.240.0.0 - 134.242.223.255 { 0x86f2e000, 0x86f2ffff, REGISTRY_APNIC }, // 134.242.224.0 - 134.242.255.255 { 0x86f30000, 0x86f4ffff, REGISTRY_ARIN }, // 134.243.0.0 - 134.244.255.255 { 0x86f50000, 0x86f7ffff, REGISTRY_RIPENCC }, // 134.245.0.0 - 134.247.255.255 { 0x86f80000, 0x86f8ffff, REGISTRY_ARIN }, // 134.248.0.0 - 134.248.255.255 { 0x86f90000, 0x86f9ffff, REGISTRY_RIPENCC }, // 134.249.0.0 - 134.249.255.255 { 0x86fa0000, 0x86feffff, REGISTRY_ARIN }, // 134.250.0.0 - 134.254.255.255 { 0x86ff0000, 0x86ffffff, REGISTRY_RIPENCC }, // 134.255.0.0 - 134.255.255.255 { 0x87000000, 0x875433ff, REGISTRY_ARIN }, // 135.0.0.0 - 135.84.51.255 { 0x87543400, 0x875437ff, REGISTRY_RIPENCC }, // 135.84.52.0 - 135.84.55.255 { 0x87543800, 0x875493ff, REGISTRY_ARIN }, // 135.84.56.0 - 135.84.147.255 { 0x87549400, 0x875497ff, REGISTRY_RIPENCC }, // 135.84.148.0 - 135.84.151.255 { 0x87549800, 0x8754e7ff, REGISTRY_ARIN }, // 135.84.152.0 - 135.84.231.255 { 0x8754e800, 0x8754ffff, REGISTRY_APNIC }, // 135.84.232.0 - 135.84.255.255 { 0x87550000, 0x8759ffff, REGISTRY_ARIN }, // 135.85.0.0 - 135.89.255.255 { 0x875a0000, 0x875affff, REGISTRY_RIPENCC }, // 135.90.0.0 - 135.90.255.255 { 0x875b0000, 0x87c3ffff, REGISTRY_ARIN }, // 135.91.0.0 - 135.195.255.255 { 0x87c40000, 0x87c4ffff, REGISTRY_RIPENCC }, // 135.196.0.0 - 135.196.255.255 { 0x87c50000, 0x88161fff, REGISTRY_ARIN }, // 135.197.0.0 - 136.22.31.255 { 0x88162000, 0x88163fff, REGISTRY_APNIC }, // 136.22.32.0 - 136.22.63.255 { 0x88164000, 0x88900fff, REGISTRY_ARIN }, // 136.22.64.0 - 136.144.15.255 { 0x88901000, 0x8890ffff, REGISTRY_RIPENCC }, // 136.144.16.0 - 136.144.255.255 { 0x88910000, 0x8893ffff, REGISTRY_ARIN }, // 136.145.0.0 - 136.147.255.255 { 0x88940000, 0x8894ffff, REGISTRY_RIPENCC }, // 136.148.0.0 - 136.148.255.255 { 0x88950000, 0x8898ffff, REGISTRY_ARIN }, // 136.149.0.0 - 136.152.255.255 { 0x88990000, 0x889affff, REGISTRY_APNIC }, // 136.153.0.0 - 136.154.255.255 { 0x889b0000, 0x889cffff, REGISTRY_RIPENCC }, // 136.155.0.0 - 136.156.255.255 { 0x889d0000, 0x889dffff, REGISTRY_RIPENCC }, // 136.157.0.0 - 136.157.255.255 { 0x889e0000, 0x889effff, REGISTRY_RIPENCC }, // 136.158.0.0 - 136.158.255.255 { 0x889f0000, 0x88a2ffff, REGISTRY_ARIN }, // 136.159.0.0 - 136.162.255.255 { 0x88a30000, 0x88a4ffff, REGISTRY_RIPENCC }, // 136.163.0.0 - 136.164.255.255 { 0x88a50000, 0x88a8ffff, REGISTRY_ARIN }, // 136.165.0.0 - 136.168.255.255 { 0x88a90000, 0x88a9ffff, REGISTRY_RIPENCC }, // 136.169.0.0 - 136.169.255.255 { 0x88aa0000, 0x88aaffff, REGISTRY_RIPENCC }, // 136.170.0.0 - 136.170.255.255 { 0x88ab0000, 0x88abffff, REGISTRY_ARIN }, // 136.171.0.0 - 136.171.255.255 { 0x88ac0000, 0x88adffff, REGISTRY_RIPENCC }, // 136.172.0.0 - 136.173.255.255 { 0x88ae0000, 0x88b8ffff, REGISTRY_ARIN }, // 136.174.0.0 - 136.184.255.255 { 0x88b90000, 0x88bbffff, REGISTRY_APNIC }, // 136.185.0.0 - 136.187.255.255 { 0x88bc0000, 0x88c5ffff, REGISTRY_ARIN }, // 136.188.0.0 - 136.197.255.255 { 0x88c60000, 0x88c6ffff, REGISTRY_APNIC }, // 136.198.0.0 - 136.198.255.255 { 0x88c70000, 0x88c7ffff, REGISTRY_RIPENCC }, // 136.199.0.0 - 136.199.255.255 { 0x88c80000, 0x88c8ffff, REGISTRY_ARIN }, // 136.200.0.0 - 136.200.255.255 { 0x88c90000, 0x88c9ffff, REGISTRY_RIPENCC }, // 136.201.0.0 - 136.201.255.255 { 0x88ca0000, 0x88cdffff, REGISTRY_ARIN }, // 136.202.0.0 - 136.205.255.255 { 0x88ce0000, 0x88ceffff, REGISTRY_RIPENCC }, // 136.206.0.0 - 136.206.255.255 { 0x88cf0000, 0x88e0ffff, REGISTRY_ARIN }, // 136.207.0.0 - 136.224.255.255 { 0x88e10000, 0x88e1ffff, REGISTRY_RIPENCC }, // 136.225.0.0 - 136.225.255.255 { 0x88e20000, 0x88e5ffff, REGISTRY_ARIN }, // 136.226.0.0 - 136.229.255.255 { 0x88e60000, 0x88e7ffff, REGISTRY_RIPENCC }, // 136.230.0.0 - 136.231.255.255 { 0x88e80000, 0x88e9ffff, REGISTRY_APNIC }, // 136.232.0.0 - 136.233.255.255 { 0x88ea0000, 0x88f2ffff, REGISTRY_ARIN }, // 136.234.0.0 - 136.242.255.255 { 0x88f30000, 0x88f3ffff, REGISTRY_RIPENCC }, // 136.243.0.0 - 136.243.255.255 { 0x88f40000, 0x8910ffff, REGISTRY_ARIN }, // 136.244.0.0 - 137.16.255.255 { 0x89110000, 0x8911ffff, REGISTRY_RIPENCC }, // 137.17.0.0 - 137.17.255.255 { 0x89120000, 0x8920ffff, REGISTRY_ARIN }, // 137.18.0.0 - 137.32.255.255 { 0x89210000, 0x8922ffff, REGISTRY_RIPENCC }, // 137.33.0.0 - 137.34.255.255 { 0x89230000, 0x892affff, REGISTRY_ARIN }, // 137.35.0.0 - 137.42.255.255 { 0x892b0000, 0x892cffff, REGISTRY_RIPENCC }, // 137.43.0.0 - 137.44.255.255 { 0x892d0000, 0x892effff, REGISTRY_ARIN }, // 137.45.0.0 - 137.46.255.255 { 0x892f0000, 0x892fffff, REGISTRY_RIPENCC }, // 137.47.0.0 - 137.47.255.255 { 0x89300000, 0x8931ffff, REGISTRY_ARIN }, // 137.48.0.0 - 137.49.255.255 { 0x89320000, 0x8932ffff, REGISTRY_RIPENCC }, // 137.50.0.0 - 137.50.255.255 { 0x89330000, 0x8936ffff, REGISTRY_ARIN }, // 137.51.0.0 - 137.54.255.255 { 0x89370000, 0x8938ffff, REGISTRY_RIPENCC }, // 137.55.0.0 - 137.56.255.255 { 0x89390000, 0x8939ffff, REGISTRY_ARIN }, // 137.57.0.0 - 137.57.255.255 { 0x893a0000, 0x893affff, REGISTRY_RIPENCC }, // 137.58.0.0 - 137.58.255.255 { 0x893b0000, 0x893bffff, REGISTRY_APNIC }, // 137.59.0.0 - 137.59.255.255 { 0x893c0000, 0x893effff, REGISTRY_RIPENCC }, // 137.60.0.0 - 137.62.255.255 { 0x893f0000, 0x8940ffff, REGISTRY_AFRINIC }, // 137.63.0.0 - 137.64.255.255 { 0x89410000, 0x8943ffff, REGISTRY_ARIN }, // 137.65.0.0 - 137.67.255.255 { 0x89440000, 0x8944ffff, REGISTRY_APNIC }, // 137.68.0.0 - 137.68.255.255 { 0x89450000, 0x8948ffff, REGISTRY_ARIN }, // 137.69.0.0 - 137.72.255.255 { 0x89490000, 0x8949ffff, REGISTRY_RIPENCC }, // 137.73.0.0 - 137.73.255.255 { 0x894a0000, 0x894affff, REGISTRY_RIPENCC }, // 137.74.0.0 - 137.74.255.255 { 0x894b0000, 0x894bffff, REGISTRY_ARIN }, // 137.75.0.0 - 137.75.255.255 { 0x894c0000, 0x894cffff, REGISTRY_APNIC }, // 137.76.0.0 - 137.76.255.255 { 0x894d0000, 0x895bffff, REGISTRY_ARIN }, // 137.77.0.0 - 137.91.255.255 { 0x895c0000, 0x895cffff, REGISTRY_APNIC }, // 137.92.0.0 - 137.92.255.255 { 0x895d0000, 0x895dffff, REGISTRY_RIPENCC }, // 137.93.0.0 - 137.93.255.255 { 0x895e0000, 0x895fffff, REGISTRY_ARIN }, // 137.94.0.0 - 137.95.255.255 { 0x89600000, 0x8960ffff, REGISTRY_RIPENCC }, // 137.96.0.0 - 137.96.255.255 { 0x89610000, 0x8961ffff, REGISTRY_APNIC }, // 137.97.0.0 - 137.97.255.255 { 0x89620000, 0x8964ffff, REGISTRY_ARIN }, // 137.98.0.0 - 137.100.255.255 { 0x89650000, 0x8965ffff, REGISTRY_RIPENCC }, // 137.101.0.0 - 137.101.255.255 { 0x89660000, 0x8968ffff, REGISTRY_ARIN }, // 137.102.0.0 - 137.104.255.255 { 0x89690000, 0x8969ffff, REGISTRY_RIPENCC }, // 137.105.0.0 - 137.105.255.255 { 0x896a0000, 0x896bffff, REGISTRY_ARIN }, // 137.106.0.0 - 137.107.255.255 { 0x896c0000, 0x896cffff, REGISTRY_RIPENCC }, // 137.108.0.0 - 137.108.255.255 { 0x896d0000, 0x896dffff, REGISTRY_APNIC }, // 137.109.0.0 - 137.109.255.255 { 0x896e0000, 0x896effff, REGISTRY_ARIN }, // 137.110.0.0 - 137.110.255.255 { 0x896f0000, 0x896fffff, REGISTRY_APNIC }, // 137.111.0.0 - 137.111.255.255 { 0x89700000, 0x8972ffff, REGISTRY_ARIN }, // 137.112.0.0 - 137.114.255.255 { 0x89730000, 0x8973ffff, REGISTRY_AFRINIC }, // 137.115.0.0 - 137.115.255.255 { 0x89740000, 0x8977ffff, REGISTRY_ARIN }, // 137.116.0.0 - 137.119.255.255 { 0x89780000, 0x8979ffff, REGISTRY_RIPENCC }, // 137.120.0.0 - 137.121.255.255 { 0x897a0000, 0x8980ffff, REGISTRY_ARIN }, // 137.122.0.0 - 137.128.255.255 { 0x89810000, 0x8981ffff, REGISTRY_RIPENCC }, // 137.129.0.0 - 137.129.255.255 { 0x89820000, 0x8983ffff, REGISTRY_ARIN }, // 137.130.0.0 - 137.131.255.255 { 0x89840000, 0x8984ffff, REGISTRY_APNIC }, // 137.132.0.0 - 137.132.255.255 { 0x89850000, 0x8985ffff, REGISTRY_RIPENCC }, // 137.133.0.0 - 137.133.255.255 { 0x89860000, 0x8989ffff, REGISTRY_ARIN }, // 137.134.0.0 - 137.137.255.255 { 0x898a0000, 0x898affff, REGISTRY_RIPENCC }, // 137.138.0.0 - 137.138.255.255 { 0x898b0000, 0x8992ffff, REGISTRY_ARIN }, // 137.139.0.0 - 137.146.255.255 { 0x89930000, 0x8993ffff, REGISTRY_APNIC }, // 137.147.0.0 - 137.147.255.255 { 0x89940000, 0x8998ffff, REGISTRY_ARIN }, // 137.148.0.0 - 137.152.255.255 { 0x89990000, 0x899affff, REGISTRY_APNIC }, // 137.153.0.0 - 137.154.255.255 { 0x899b0000, 0x899bffff, REGISTRY_ARIN }, // 137.155.0.0 - 137.155.255.255 { 0x899c0000, 0x899cffff, REGISTRY_RIPENCC }, // 137.156.0.0 - 137.156.255.255 { 0x899d0000, 0x899dffff, REGISTRY_APNIC }, // 137.157.0.0 - 137.157.255.255 { 0x899e0000, 0x899effff, REGISTRY_AFRINIC }, // 137.158.0.0 - 137.158.255.255 { 0x899f0000, 0x89a2ffff, REGISTRY_ARIN }, // 137.159.0.0 - 137.162.255.255 { 0x89a30000, 0x89a3ffff, REGISTRY_RIPENCC }, // 137.163.0.0 - 137.163.255.255 { 0x89a40000, 0x89a5ffff, REGISTRY_ARIN }, // 137.164.0.0 - 137.165.255.255 { 0x89a60000, 0x89a6ffff, REGISTRY_APNIC }, // 137.166.0.0 - 137.166.255.255 { 0x89a70000, 0x89aaffff, REGISTRY_ARIN }, // 137.167.0.0 - 137.170.255.255 { 0x89ab0000, 0x89abffff, REGISTRY_AFRINIC }, // 137.171.0.0 - 137.171.255.255 { 0x89ac0000, 0x89acffff, REGISTRY_APNIC }, // 137.172.0.0 - 137.172.255.255 { 0x89ad0000, 0x89adffff, REGISTRY_ARIN }, // 137.173.0.0 - 137.173.255.255 { 0x89ae0000, 0x89aeffff, REGISTRY_RIPENCC }, // 137.174.0.0 - 137.174.255.255 { 0x89af0000, 0x89bcffff, REGISTRY_ARIN }, // 137.175.0.0 - 137.188.255.255 { 0x89bd0000, 0x89bdffff, REGISTRY_APNIC }, // 137.189.0.0 - 137.189.255.255 { 0x89be0000, 0x89beffff, REGISTRY_ARIN }, // 137.190.0.0 - 137.190.255.255 { 0x89bf0000, 0x89bfffff, REGISTRY_RIPENCC }, // 137.191.0.0 - 137.191.255.255 { 0x89c00000, 0x89c0ffff, REGISTRY_ARIN }, // 137.192.0.0 - 137.192.255.255 { 0x89c10000, 0x89c3ffff, REGISTRY_RIPENCC }, // 137.193.0.0 - 137.195.255.255 { 0x89c40000, 0x89c4ffff, REGISTRY_AFRINIC }, // 137.196.0.0 - 137.196.255.255 { 0x89c50000, 0x89cbffff, REGISTRY_ARIN }, // 137.197.0.0 - 137.203.255.255 { 0x89cc0000, 0x89cdffff, REGISTRY_RIPENCC }, // 137.204.0.0 - 137.205.255.255 { 0x89ce0000, 0x89cfffff, REGISTRY_ARIN }, // 137.206.0.0 - 137.207.255.255 { 0x89d00000, 0x89d0ffff, REGISTRY_RIPENCC }, // 137.208.0.0 - 137.208.255.255 { 0x89d10000, 0x89d4ffff, REGISTRY_ARIN }, // 137.209.0.0 - 137.212.255.255 { 0x89d50000, 0x89d5ffff, REGISTRY_RIPENCC }, // 137.213.0.0 - 137.213.255.255 { 0x89d60000, 0x89d7ffff, REGISTRY_AFRINIC }, // 137.214.0.0 - 137.215.255.255 { 0x89d80000, 0x89d8ffff, REGISTRY_ARIN }, // 137.216.0.0 - 137.216.255.255 { 0x89d90000, 0x89daffff, REGISTRY_RIPENCC }, // 137.217.0.0 - 137.218.255.255 { 0x89db0000, 0x89dbffff, REGISTRY_APNIC }, // 137.219.0.0 - 137.219.255.255 { 0x89dc0000, 0x89dcffff, REGISTRY_ARIN }, // 137.220.0.0 - 137.220.255.255 { 0x89dd0000, 0x89dd17ff, REGISTRY_RIPENCC }, // 137.221.0.0 - 137.221.23.255 { 0x89dd1800, 0x89dd3fff, REGISTRY_RIPENCC }, // 137.221.24.0 - 137.221.63.255 { 0x89dd4000, 0x89dd7fff, REGISTRY_RIPENCC }, // 137.221.64.0 - 137.221.127.255 { 0x89dd8000, 0x89deffff, REGISTRY_RIPENCC }, // 137.221.128.0 - 137.222.255.255 { 0x89df0000, 0x89dfffff, REGISTRY_RIPENCC }, // 137.223.0.0 - 137.223.255.255 { 0x89e00000, 0x89e0ffff, REGISTRY_RIPENCC }, // 137.224.0.0 - 137.224.255.255 { 0x89e10000, 0x89e1ffff, REGISTRY_ARIN }, // 137.225.0.0 - 137.225.255.255 { 0x89e20000, 0x89e2ffff, REGISTRY_RIPENCC }, // 137.226.0.0 - 137.226.255.255 { 0x89e30000, 0x89f7ffff, REGISTRY_ARIN }, // 137.227.0.0 - 137.247.255.255 { 0x89f80000, 0x89f8ffff, REGISTRY_RIPENCC }, // 137.248.0.0 - 137.248.255.255 { 0x89f90000, 0x89f9ffff, REGISTRY_ARIN }, // 137.249.0.0 - 137.249.255.255 { 0x89fa0000, 0x89fbffff, REGISTRY_RIPENCC }, // 137.250.0.0 - 137.251.255.255 { 0x89fc0000, 0x89fcffff, REGISTRY_ARIN }, // 137.252.0.0 - 137.252.255.255 { 0x89fd0000, 0x89fdffff, REGISTRY_RIPENCC }, // 137.253.0.0 - 137.253.255.255 { 0x89fe0000, 0x89feffff, REGISTRY_ARIN }, // 137.254.0.0 - 137.254.255.255 { 0x89ff0000, 0x89ffffff, REGISTRY_AFRINIC }, // 137.255.0.0 - 137.255.255.255 { 0x8a000000, 0x8a00ffff, REGISTRY_LACNIC }, // 138.0.0.0 - 138.0.255.255 { 0x8a010000, 0x8a02ffff, REGISTRY_ARIN }, // 138.1.0.0 - 138.2.255.255 { 0x8a030000, 0x8a04ffff, REGISTRY_RIPENCC }, // 138.3.0.0 - 138.4.255.255 { 0x8a050000, 0x8a05ffff, REGISTRY_ARIN }, // 138.5.0.0 - 138.5.255.255 { 0x8a060000, 0x8a06ffff, REGISTRY_RIPENCC }, // 138.6.0.0 - 138.6.255.255 { 0x8a070000, 0x8a07ffff, REGISTRY_APNIC }, // 138.7.0.0 - 138.7.255.255 { 0x8a080000, 0x8a0dffff, REGISTRY_ARIN }, // 138.8.0.0 - 138.13.255.255 { 0x8a0e0000, 0x8a0effff, REGISTRY_RIPENCC }, // 138.14.0.0 - 138.14.255.255 { 0x8a0f0000, 0x8a12ffff, REGISTRY_ARIN }, // 138.15.0.0 - 138.18.255.255 { 0x8a130000, 0x8a13ffff, REGISTRY_APNIC }, // 138.19.0.0 - 138.19.255.255 { 0x8a140000, 0x8a14ffff, REGISTRY_ARIN }, // 138.20.0.0 - 138.20.255.255 { 0x8a150000, 0x8a16ffff, REGISTRY_RIPENCC }, // 138.21.0.0 - 138.22.255.255 { 0x8a170000, 0x8a17ffff, REGISTRY_ARIN }, // 138.23.0.0 - 138.23.255.255 { 0x8a180000, 0x8a19ffff, REGISTRY_APNIC }, // 138.24.0.0 - 138.25.255.255 { 0x8a1a0000, 0x8a1dffff, REGISTRY_ARIN }, // 138.26.0.0 - 138.29.255.255 { 0x8a1e0000, 0x8a1effff, REGISTRY_APNIC }, // 138.30.0.0 - 138.30.255.255 { 0x8a1f0000, 0x8a23ffff, REGISTRY_ARIN }, // 138.31.0.0 - 138.35.255.255 { 0x8a240000, 0x8a24ffff, REGISTRY_LACNIC }, // 138.36.0.0 - 138.36.255.255 { 0x8a250000, 0x8a26ffff, REGISTRY_RIPENCC }, // 138.37.0.0 - 138.38.255.255 { 0x8a270000, 0x8a27ffff, REGISTRY_ARIN }, // 138.39.0.0 - 138.39.255.255 { 0x8a280000, 0x8a29ffff, REGISTRY_RIPENCC }, // 138.40.0.0 - 138.41.255.255 { 0x8a2a0000, 0x8a2bffff, REGISTRY_ARIN }, // 138.42.0.0 - 138.43.255.255 { 0x8a2c0000, 0x8a2cffff, REGISTRY_APNIC }, // 138.44.0.0 - 138.44.255.255 { 0x8a2d0000, 0x8a2fffff, REGISTRY_ARIN }, // 138.45.0.0 - 138.47.255.255 { 0x8a300000, 0x8a30ffff, REGISTRY_RIPENCC }, // 138.48.0.0 - 138.48.255.255 { 0x8a310000, 0x8a3affff, REGISTRY_ARIN }, // 138.49.0.0 - 138.58.255.255 { 0x8a3b0000, 0x8a3bb3ff, REGISTRY_LACNIC }, // 138.59.0.0 - 138.59.179.255 { 0x8a3bb800, 0x8a3bffff, REGISTRY_LACNIC }, // 138.59.184.0 - 138.59.255.255 { 0x8a3c0000, 0x8a3dffff, REGISTRY_ARIN }, // 138.60.0.0 - 138.61.255.255 { 0x8a3e0000, 0x8a3fffff, REGISTRY_RIPENCC }, // 138.62.0.0 - 138.63.255.255 { 0x8a400000, 0x8a41ffff, REGISTRY_ARIN }, // 138.64.0.0 - 138.65.255.255 { 0x8a420000, 0x8a42ffff, REGISTRY_RIPENCC }, // 138.66.0.0 - 138.66.255.255 { 0x8a430000, 0x8a45ffff, REGISTRY_ARIN }, // 138.67.0.0 - 138.69.255.255 { 0x8a460000, 0x8a46ffff, REGISTRY_RIPENCC }, // 138.70.0.0 - 138.70.255.255 { 0x8a470000, 0x8a47ffff, REGISTRY_APNIC }, // 138.71.0.0 - 138.71.255.255 { 0x8a480000, 0x8a4affff, REGISTRY_ARIN }, // 138.72.0.0 - 138.74.255.255 { 0x8a4b0000, 0x8a4bffff, REGISTRY_APNIC }, // 138.75.0.0 - 138.75.255.255 { 0x8a4c0000, 0x8a4cffff, REGISTRY_ARIN }, // 138.76.0.0 - 138.76.255.255 { 0x8a4d0000, 0x8a4dffff, REGISTRY_APNIC }, // 138.77.0.0 - 138.77.255.255 { 0x8a4e0000, 0x8a4effff, REGISTRY_ARIN }, // 138.78.0.0 - 138.78.255.255 { 0x8a4f0000, 0x8a50ffff, REGISTRY_APNIC }, // 138.79.0.0 - 138.80.255.255 { 0x8a510000, 0x8a51ffff, REGISTRY_RIPENCC }, // 138.81.0.0 - 138.81.255.255 { 0x8a520000, 0x8a5dffff, REGISTRY_ARIN }, // 138.82.0.0 - 138.93.255.255 { 0x8a5e0000, 0x8a5eb7ff, REGISTRY_LACNIC }, // 138.94.0.0 - 138.94.183.255 { 0x8a5ebc00, 0x8a5effff, REGISTRY_LACNIC }, // 138.94.188.0 - 138.94.255.255 { 0x8a5f0000, 0x8a5fffff, REGISTRY_ARIN }, // 138.95.0.0 - 138.95.255.255 { 0x8a600000, 0x8a60ffff, REGISTRY_RIPENCC }, // 138.96.0.0 - 138.96.255.255 { 0x8a610000, 0x8a61ffff, REGISTRY_LACNIC }, // 138.97.0.0 - 138.97.255.255 { 0x8a620000, 0x8a62ffff, REGISTRY_ARIN }, // 138.98.0.0 - 138.98.255.255 { 0x8a630000, 0x8a63e3ff, REGISTRY_LACNIC }, // 138.99.0.0 - 138.99.227.255 { 0x8a63e800, 0x8a63ffff, REGISTRY_LACNIC }, // 138.99.232.0 - 138.99.255.255 { 0x8a640000, 0x8a64ffff, REGISTRY_RIPENCC }, // 138.100.0.0 - 138.100.255.255 { 0x8a650000, 0x8a65ffff, REGISTRY_APNIC }, // 138.101.0.0 - 138.101.255.255 { 0x8a660000, 0x8a68ffff, REGISTRY_RIPENCC }, // 138.102.0.0 - 138.104.255.255 { 0x8a690000, 0x8a69ffff, REGISTRY_ARIN }, // 138.105.0.0 - 138.105.255.255 { 0x8a6a0000, 0x8a6affff, REGISTRY_RIPENCC }, // 138.106.0.0 - 138.106.255.255 { 0x8a6b0000, 0x8a6bffff, REGISTRY_APNIC }, // 138.107.0.0 - 138.107.255.255 { 0x8a6c0000, 0x8a74ffff, REGISTRY_ARIN }, // 138.108.0.0 - 138.116.255.255 { 0x8a750000, 0x8a75dfff, REGISTRY_LACNIC }, // 138.117.0.0 - 138.117.223.255 { 0x8a760000, 0x8a76ffff, REGISTRY_LACNIC }, // 138.118.0.0 - 138.118.255.255 { 0x8a770000, 0x8a78ffff, REGISTRY_ARIN }, // 138.119.0.0 - 138.120.255.255 { 0x8a790000, 0x8a7affff, REGISTRY_LACNIC }, // 138.121.0.0 - 138.122.255.255 { 0x8a7b0000, 0x8a7bffff, REGISTRY_ARIN }, // 138.123.0.0 - 138.123.255.255 { 0x8a7c0000, 0x8a7cffff, REGISTRY_RIPENCC }, // 138.124.0.0 - 138.124.255.255 { 0x8a7d0000, 0x8a81ffff, REGISTRY_ARIN }, // 138.125.0.0 - 138.129.255.255 { 0x8a820000, 0x8a82ffff, REGISTRY_APNIC }, // 138.130.0.0 - 138.130.255.255 { 0x8a830000, 0x8a84ffff, REGISTRY_RIPENCC }, // 138.131.0.0 - 138.132.255.255 { 0x8a850000, 0x8a85ffff, REGISTRY_ARIN }, // 138.133.0.0 - 138.133.255.255 { 0x8a860000, 0x8a86ffff, REGISTRY_RIPENCC }, // 138.134.0.0 - 138.134.255.255 { 0x8a870000, 0x8ab8ffff, REGISTRY_ARIN }, // 138.135.0.0 - 138.184.255.255 { 0x8ab90000, 0x8abaffff, REGISTRY_LACNIC }, // 138.185.0.0 - 138.186.255.255 { 0x8abb0000, 0x8abcffff, REGISTRY_RIPENCC }, // 138.187.0.0 - 138.188.255.255 { 0x8abd0000, 0x8abdffff, REGISTRY_RIPENCC }, // 138.189.0.0 - 138.189.255.255 { 0x8abe0000, 0x8abeffff, REGISTRY_RIPENCC }, // 138.190.0.0 - 138.190.255.255 { 0x8abf0000, 0x8abfffff, REGISTRY_RIPENCC }, // 138.191.0.0 - 138.191.255.255 { 0x8ac00000, 0x8ac1ffff, REGISTRY_ARIN }, // 138.192.0.0 - 138.193.255.255 { 0x8ac20000, 0x8ac2ffff, REGISTRY_APNIC }, // 138.194.0.0 - 138.194.255.255 { 0x8ac30000, 0x8ac3ffff, REGISTRY_RIPENCC }, // 138.195.0.0 - 138.195.255.255 { 0x8ac40000, 0x8ac5ffff, REGISTRY_ARIN }, // 138.196.0.0 - 138.197.255.255 { 0x8ac60000, 0x8ac9ffff, REGISTRY_RIPENCC }, // 138.198.0.0 - 138.201.255.255 { 0x8aca0000, 0x8acaffff, REGISTRY_ARIN }, // 138.202.0.0 - 138.202.255.255 { 0x8acb0000, 0x8acbffff, REGISTRY_RIPENCC }, // 138.203.0.0 - 138.203.255.255 { 0x8acc0000, 0x8acca3ff, REGISTRY_LACNIC }, // 138.204.0.0 - 138.204.163.255 { 0x8acca800, 0x8accffff, REGISTRY_LACNIC }, // 138.204.168.0 - 138.204.255.255 { 0x8acd0000, 0x8aceffff, REGISTRY_RIPENCC }, // 138.205.0.0 - 138.206.255.255 { 0x8acf0000, 0x8ad2ffff, REGISTRY_ARIN }, // 138.207.0.0 - 138.210.255.255 { 0x8ad30000, 0x8ad4ffff, REGISTRY_APNIC }, // 138.211.0.0 - 138.212.255.255 { 0x8ad60000, 0x8ad6ffff, REGISTRY_ARIN }, // 138.214.0.0 - 138.214.255.255 { 0x8ad70000, 0x8ad8ffff, REGISTRY_RIPENCC }, // 138.215.0.0 - 138.216.255.255 { 0x8ad90000, 0x8ad9ffff, REGISTRY_APNIC }, // 138.217.0.0 - 138.217.255.255 { 0x8ada0000, 0x8adaffff, REGISTRY_ARIN }, // 138.218.0.0 - 138.218.255.255 { 0x8adb0000, 0x8adbffff, REGISTRY_LACNIC }, // 138.219.0.0 - 138.219.255.255 { 0x8adc0000, 0x8adcffff, REGISTRY_ARIN }, // 138.220.0.0 - 138.220.255.255 { 0x8add0000, 0x8ae4ffff, REGISTRY_RIPENCC }, // 138.221.0.0 - 138.228.255.255 { 0x8ae50000, 0x8ae6ffff, REGISTRY_ARIN }, // 138.229.0.0 - 138.230.255.255 { 0x8ae70000, 0x8ae9ffff, REGISTRY_RIPENCC }, // 138.231.0.0 - 138.233.255.255 { 0x8aea0000, 0x8aeaffff, REGISTRY_ARIN }, // 138.234.0.0 - 138.234.255.255 { 0x8aeb0000, 0x8aebffff, REGISTRY_APNIC }, // 138.235.0.0 - 138.235.255.255 { 0x8aec0000, 0x8af2ffff, REGISTRY_ARIN }, // 138.236.0.0 - 138.242.255.255 { 0x8af30000, 0x8af3ffff, REGISTRY_APNIC }, // 138.243.0.0 - 138.243.255.255 { 0x8af40000, 0x8af6ffff, REGISTRY_RIPENCC }, // 138.244.0.0 - 138.246.255.255 { 0x8af70000, 0x8af7ffff, REGISTRY_ARIN }, // 138.247.0.0 - 138.247.255.255 { 0x8af80000, 0x8afbffff, REGISTRY_RIPENCC }, // 138.248.0.0 - 138.251.255.255 { 0x8afd0000, 0x8afdffff, REGISTRY_RIPENCC }, // 138.253.0.0 - 138.253.255.255 { 0x8afe0000, 0x8afeffff, REGISTRY_ARIN }, // 138.254.0.0 - 138.254.255.255 { 0x8aff0000, 0x8affffff, REGISTRY_LACNIC }, // 138.255.0.0 - 138.255.255.255 { 0x8b000000, 0x8b00ffff, REGISTRY_APNIC }, // 139.0.0.0 - 139.0.255.255 { 0x8b010000, 0x8b04ffff, REGISTRY_RIPENCC }, // 139.1.0.0 - 139.4.255.255 { 0x8b050000, 0x8b0527ff, REGISTRY_APNIC }, // 139.5.0.0 - 139.5.39.255 { 0x8b052c00, 0x8b0573ff, REGISTRY_APNIC }, // 139.5.44.0 - 139.5.115.255 { 0x8b057c00, 0x8b05ffff, REGISTRY_APNIC }, // 139.5.124.0 - 139.5.255.255 { 0x8b060000, 0x8b08ffff, REGISTRY_RIPENCC }, // 139.6.0.0 - 139.8.255.255 { 0x8b090000, 0x8b09ffff, REGISTRY_APNIC }, // 139.9.0.0 - 139.9.255.255 { 0x8b0a0000, 0x8b0affff, REGISTRY_RIPENCC }, // 139.10.0.0 - 139.10.255.255 { 0x8b0b0000, 0x8b0fffff, REGISTRY_RIPENCC }, // 139.11.0.0 - 139.15.255.255 { 0x8b100000, 0x8b10ffff, REGISTRY_RIPENCC }, // 139.16.0.0 - 139.16.255.255 { 0x8b110000, 0x8b14ffff, REGISTRY_RIPENCC }, // 139.17.0.0 - 139.20.255.255 { 0x8b150000, 0x8b19ffff, REGISTRY_RIPENCC }, // 139.21.0.0 - 139.25.255.255 { 0x8b1a0000, 0x8b1affff, REGISTRY_AFRINIC }, // 139.26.0.0 - 139.26.255.255 { 0x8b1b0000, 0x8b1bffff, REGISTRY_RIPENCC }, // 139.27.0.0 - 139.27.255.255 { 0x8b1d0000, 0x8b1effff, REGISTRY_RIPENCC }, // 139.29.0.0 - 139.30.255.255 { 0x8b1f0000, 0x8b2bffff, REGISTRY_ARIN }, // 139.31.0.0 - 139.43.255.255 { 0x8b2c0000, 0x8b2cffff, REGISTRY_APNIC }, // 139.44.0.0 - 139.44.255.255 { 0x8b2d0000, 0x8b2effff, REGISTRY_ARIN }, // 139.45.0.0 - 139.46.255.255 { 0x8b2f0000, 0x8b2fffff, REGISTRY_RIPENCC }, // 139.47.0.0 - 139.47.255.255 { 0x8b300000, 0x8b31ffff, REGISTRY_ARIN }, // 139.48.0.0 - 139.49.255.255 { 0x8b320000, 0x8b32ffff, REGISTRY_RIPENCC }, // 139.50.0.0 - 139.50.255.255 { 0x8b330000, 0x8b34ffff, REGISTRY_ARIN }, // 139.51.0.0 - 139.52.255.255 { 0x8b350000, 0x8b35ffff, REGISTRY_AFRINIC }, // 139.53.0.0 - 139.53.255.255 { 0x8b360000, 0x8b36ffff, REGISTRY_RIPENCC }, // 139.54.0.0 - 139.54.255.255 { 0x8b370000, 0x8b39ffff, REGISTRY_ARIN }, // 139.55.0.0 - 139.57.255.255 { 0x8b3a0000, 0x8b3affff, REGISTRY_RIPENCC }, // 139.58.0.0 - 139.58.255.255 { 0x8b3b0000, 0x8b3bffff, REGISTRY_APNIC }, // 139.59.0.0 - 139.59.255.255 { 0x8b3c0000, 0x8b3effff, REGISTRY_ARIN }, // 139.60.0.0 - 139.62.255.255 { 0x8b3f0000, 0x8b3fffff, REGISTRY_RIPENCC }, // 139.63.0.0 - 139.63.255.255 { 0x8b400000, 0x8b41ffff, REGISTRY_ARIN }, // 139.64.0.0 - 139.65.255.255 { 0x8b420000, 0x8b42ffff, REGISTRY_RIPENCC }, // 139.66.0.0 - 139.66.255.255 { 0x8b430000, 0x8b49ffff, REGISTRY_ARIN }, // 139.67.0.0 - 139.73.255.255 { 0x8b4a0000, 0x8b4bffff, REGISTRY_RIPENCC }, // 139.74.0.0 - 139.75.255.255 { 0x8b4c0000, 0x8b4effff, REGISTRY_ARIN }, // 139.76.0.0 - 139.78.255.255 { 0x8b4f0000, 0x8b4fffff, REGISTRY_RIPENCC }, // 139.79.0.0 - 139.79.255.255 { 0x8b500000, 0x8b50ffff, REGISTRY_APNIC }, // 139.80.0.0 - 139.80.255.255 { 0x8b510000, 0x8b51ffff, REGISTRY_ARIN }, // 139.81.0.0 - 139.81.255.255 { 0x8b520000, 0x8b52ffff, REGISTRY_LACNIC }, // 139.82.0.0 - 139.82.255.255 { 0x8b530000, 0x8b53ffff, REGISTRY_RIPENCC }, // 139.83.0.0 - 139.83.255.255 { 0x8b540000, 0x8b55ffff, REGISTRY_ARIN }, // 139.84.0.0 - 139.85.255.255 { 0x8b560000, 0x8b56ffff, REGISTRY_APNIC }, // 139.86.0.0 - 139.86.255.255 { 0x8b570000, 0x8b58ffff, REGISTRY_ARIN }, // 139.87.0.0 - 139.88.255.255 { 0x8b590000, 0x8b5cffff, REGISTRY_RIPENCC }, // 139.89.0.0 - 139.92.255.255 { 0x8b5d0000, 0x8b5fffff, REGISTRY_ARIN }, // 139.93.0.0 - 139.95.255.255 { 0x8b600000, 0x8b60ffff, REGISTRY_RIPENCC }, // 139.96.0.0 - 139.96.255.255 { 0x8b610000, 0x8b61ffff, REGISTRY_RIPENCC }, // 139.97.0.0 - 139.97.255.255 { 0x8b620000, 0x8b62ffff, REGISTRY_RIPENCC }, // 139.98.0.0 - 139.98.255.255 { 0x8b630000, 0x8b63ffff, REGISTRY_ARIN }, // 139.99.0.0 - 139.99.255.255 { 0x8b640000, 0x8b64ffff, REGISTRY_RIPENCC }, // 139.100.0.0 - 139.100.255.255 { 0x8b650000, 0x8b65ffff, REGISTRY_APNIC }, // 139.101.0.0 - 139.101.255.255 { 0x8b660000, 0x8b68ffff, REGISTRY_ARIN }, // 139.102.0.0 - 139.104.255.255 { 0x8b690000, 0x8b78ffff, REGISTRY_RIPENCC }, // 139.105.0.0 - 139.120.255.255 { 0x8b790000, 0x8b79ffff, REGISTRY_ARIN }, // 139.121.0.0 - 139.121.255.255 { 0x8b7a0000, 0x8b7cffff, REGISTRY_RIPENCC }, // 139.122.0.0 - 139.124.255.255 { 0x8b7d0000, 0x8b7fffff, REGISTRY_ARIN }, // 139.125.0.0 - 139.127.255.255 { 0x8b800000, 0x8b80ffff, REGISTRY_RIPENCC }, // 139.128.0.0 - 139.128.255.255 { 0x8b810000, 0x8b82ffff, REGISTRY_APNIC }, // 139.129.0.0 - 139.130.255.255 { 0x8b830000, 0x8b83ffff, REGISTRY_ARIN }, // 139.131.0.0 - 139.131.255.255 { 0x8b840000, 0x8b84ffff, REGISTRY_APNIC }, // 139.132.0.0 - 139.132.255.255 { 0x8b850000, 0x8b85ffff, REGISTRY_RIPENCC }, // 139.133.0.0 - 139.133.255.255 { 0x8b860000, 0x8b86ffff, REGISTRY_APNIC }, // 139.134.0.0 - 139.134.255.255 { 0x8b870000, 0x8b8abfff, REGISTRY_ARIN }, // 139.135.0.0 - 139.138.191.255 { 0x8b8ac000, 0x8b8adfff, REGISTRY_RIPENCC }, // 139.138.192.0 - 139.138.223.255 { 0x8b8ae000, 0x8b8cffff, REGISTRY_ARIN }, // 139.138.224.0 - 139.140.255.255 { 0x8b8d0000, 0x8b8dffff, REGISTRY_RIPENCC }, // 139.141.0.0 - 139.141.255.255 { 0x8b8e0000, 0x8b8effff, REGISTRY_ARIN }, // 139.142.0.0 - 139.142.255.255 { 0x8b8f0000, 0x8b8fffff, REGISTRY_RIPENCC }, // 139.143.0.0 - 139.143.255.255 { 0x8b900000, 0x8b90ffff, REGISTRY_ARIN }, // 139.144.0.0 - 139.144.255.255 { 0x8b910000, 0x8b91ffff, REGISTRY_RIPENCC }, // 139.145.0.0 - 139.145.255.255 { 0x8b920000, 0x8b93ffff, REGISTRY_ARIN }, // 139.146.0.0 - 139.147.255.255 { 0x8b940000, 0x8b94ffff, REGISTRY_APNIC }, // 139.148.0.0 - 139.148.255.255 { 0x8b950000, 0x8b95ffff, REGISTRY_RIPENCC }, // 139.149.0.0 - 139.149.255.255 { 0x8b960000, 0x8b96ffff, REGISTRY_APNIC }, // 139.150.0.0 - 139.150.255.255 { 0x8b970000, 0x8b97ffff, REGISTRY_ARIN }, // 139.151.0.0 - 139.151.255.255 { 0x8b980000, 0x8b98ffff, REGISTRY_APNIC }, // 139.152.0.0 - 139.152.255.255 { 0x8b990000, 0x8b99ffff, REGISTRY_RIPENCC }, // 139.153.0.0 - 139.153.255.255 { 0x8b9a0000, 0x8b9bffff, REGISTRY_APNIC }, // 139.154.0.0 - 139.155.255.255 { 0x8b9c0000, 0x8b9effff, REGISTRY_RIPENCC }, // 139.156.0.0 - 139.158.255.255 { 0x8b9f0000, 0x8b9fffff, REGISTRY_APNIC }, // 139.159.0.0 - 139.159.255.255 { 0x8ba00000, 0x8ba0ffff, REGISTRY_RIPENCC }, // 139.160.0.0 - 139.160.255.255 { 0x8ba10000, 0x8ba1ffff, REGISTRY_ARIN }, // 139.161.0.0 - 139.161.255.255 { 0x8ba20000, 0x8ba2ffff, REGISTRY_RIPENCC }, // 139.162.0.0 - 139.162.255.255 { 0x8ba30000, 0x8ba3ffff, REGISTRY_APNIC }, // 139.163.0.0 - 139.163.255.255 { 0x8ba40000, 0x8ba6ffff, REGISTRY_RIPENCC }, // 139.164.0.0 - 139.166.255.255 { 0x8ba70000, 0x8ba8ffff, REGISTRY_APNIC }, // 139.167.0.0 - 139.168.255.255 { 0x8ba90000, 0x8ba9ffff, REGISTRY_ARIN }, // 139.169.0.0 - 139.169.255.255 { 0x8baa0000, 0x8baaffff, REGISTRY_APNIC }, // 139.170.0.0 - 139.170.255.255 { 0x8bab0000, 0x8badffff, REGISTRY_ARIN }, // 139.171.0.0 - 139.173.255.255 { 0x8bae0000, 0x8baeffff, REGISTRY_RIPENCC }, // 139.174.0.0 - 139.174.255.255 { 0x8baf0000, 0x8bb0ffff, REGISTRY_APNIC }, // 139.175.0.0 - 139.176.255.255 { 0x8bb10000, 0x8bb1ffff, REGISTRY_ARIN }, // 139.177.0.0 - 139.177.255.255 { 0x8bb20000, 0x8bb3ffff, REGISTRY_RIPENCC }, // 139.178.0.0 - 139.179.255.255 { 0x8bb40000, 0x8bb6ffff, REGISTRY_ARIN }, // 139.180.0.0 - 139.182.255.255 { 0x8bb70000, 0x8bb7ffff, REGISTRY_APNIC }, // 139.183.0.0 - 139.183.255.255 { 0x8bb80000, 0x8bb8ffff, REGISTRY_RIPENCC }, // 139.184.0.0 - 139.184.255.255 { 0x8bb90000, 0x8bb9ffff, REGISTRY_ARIN }, // 139.185.0.0 - 139.185.255.255 { 0x8bba0000, 0x8bbaffff, REGISTRY_APNIC }, // 139.186.0.0 - 139.186.255.255 { 0x8bbb0000, 0x8bbbffff, REGISTRY_ARIN }, // 139.187.0.0 - 139.187.255.255 { 0x8bbc0000, 0x8bbeffff, REGISTRY_APNIC }, // 139.188.0.0 - 139.190.255.255 { 0x8bbf0000, 0x8bbfffff, REGISTRY_RIPENCC }, // 139.191.0.0 - 139.191.255.255 { 0x8bc00000, 0x8bddffff, REGISTRY_APNIC }, // 139.192.0.0 - 139.221.255.255 { 0x8bde0000, 0x8bdeffff, REGISTRY_RIPENCC }, // 139.222.0.0 - 139.222.255.255 { 0x8bdf0000, 0x8be0ffff, REGISTRY_APNIC }, // 139.223.0.0 - 139.224.255.255 { 0x8be10000, 0x8be1ffff, REGISTRY_ARIN }, // 139.225.0.0 - 139.225.255.255 { 0x8be20000, 0x8be4ffff, REGISTRY_APNIC }, // 139.226.0.0 - 139.228.255.255 { 0x8be50000, 0x8be5ffff, REGISTRY_ARIN }, // 139.229.0.0 - 139.229.255.255 { 0x8be60000, 0x8be6ffff, REGISTRY_APNIC }, // 139.230.0.0 - 139.230.255.255 { 0x8be70000, 0x8bfeffff, REGISTRY_ARIN }, // 139.231.0.0 - 139.254.255.255 { 0x8bff0000, 0x8c00ffff, REGISTRY_APNIC }, // 139.255.0.0 - 140.0.255.255 { 0x8c010000, 0x8c4affff, REGISTRY_ARIN }, // 140.1.0.0 - 140.74.255.255 { 0x8c4b0000, 0x8c4bffff, REGISTRY_APNIC }, // 140.75.0.0 - 140.75.255.255 { 0x8c4c0000, 0x8c4cffff, REGISTRY_ARIN }, // 140.76.0.0 - 140.76.255.255 { 0x8c4d0000, 0x8c4effff, REGISTRY_RIPENCC }, // 140.77.0.0 - 140.78.255.255 { 0x8c4f0000, 0x8c4fffff, REGISTRY_APNIC }, // 140.79.0.0 - 140.79.255.255 { 0x8c500000, 0x8c50ffff, REGISTRY_ARIN }, // 140.80.0.0 - 140.80.255.255 { 0x8c520000, 0x8c52ffff, REGISTRY_ARIN }, // 140.82.0.0 - 140.82.255.255 { 0x8c530000, 0x8c53ffff, REGISTRY_APNIC }, // 140.83.0.0 - 140.83.255.255 { 0x8c540000, 0x8c56ffff, REGISTRY_RIPENCC }, // 140.84.0.0 - 140.86.255.255 { 0x8c570000, 0x8c5bffff, REGISTRY_ARIN }, // 140.87.0.0 - 140.91.255.255 { 0x8c5c0000, 0x8c5cffff, REGISTRY_APNIC }, // 140.92.0.0 - 140.92.255.255 { 0x8c5d0000, 0x8c5effff, REGISTRY_RIPENCC }, // 140.93.0.0 - 140.94.255.255 { 0x8c5f0000, 0x8c5fffff, REGISTRY_ARIN }, // 140.95.0.0 - 140.95.255.255 { 0x8c600000, 0x8c60ffff, REGISTRY_APNIC }, // 140.96.0.0 - 140.96.255.255 { 0x8c610000, 0x8c61ffff, REGISTRY_RIPENCC }, // 140.97.0.0 - 140.97.255.255 { 0x8c620000, 0x8c68ffff, REGISTRY_ARIN }, // 140.98.0.0 - 140.104.255.255 { 0x8c690000, 0x8c69ffff, REGISTRY_RIPENCC }, // 140.105.0.0 - 140.105.255.255 { 0x8c6a0000, 0x8c6cffff, REGISTRY_ARIN }, // 140.106.0.0 - 140.108.255.255 { 0x8c6d0000, 0x8c8affff, REGISTRY_APNIC }, // 140.109.0.0 - 140.138.255.255 { 0x8c8b0000, 0x8c8effff, REGISTRY_ARIN }, // 140.139.0.0 - 140.142.255.255 { 0x8c8f0000, 0x8c8fffff, REGISTRY_APNIC }, // 140.143.0.0 - 140.143.255.255 { 0x8c900000, 0x8c93ffff, REGISTRY_ARIN }, // 140.144.0.0 - 140.147.255.255 { 0x8c940000, 0x8c94ffff, REGISTRY_LACNIC }, // 140.148.0.0 - 140.148.255.255 { 0x8c950000, 0x8c95ffff, REGISTRY_APNIC }, // 140.149.0.0 - 140.149.255.255 { 0x8c960000, 0x8c97ffff, REGISTRY_RIPENCC }, // 140.150.0.0 - 140.151.255.255 { 0x8c980000, 0x8c9effff, REGISTRY_ARIN }, // 140.152.0.0 - 140.158.255.255 { 0x8c9f0000, 0x8c9fffff, REGISTRY_APNIC }, // 140.159.0.0 - 140.159.255.255 { 0x8ca00000, 0x8ca3ffff, REGISTRY_ARIN }, // 140.160.0.0 - 140.163.255.255 { 0x8ca40000, 0x8ca4ffff, REGISTRY_RIPENCC }, // 140.164.0.0 - 140.164.255.255 { 0x8ca50000, 0x8ca5ffff, REGISTRY_ARIN }, // 140.165.0.0 - 140.165.255.255 { 0x8ca60000, 0x8ca6ffff, REGISTRY_RIPENCC }, // 140.166.0.0 - 140.166.255.255 { 0x8ca70000, 0x8ca7ffff, REGISTRY_ARIN }, // 140.167.0.0 - 140.167.255.255 { 0x8ca80000, 0x8ca8ffff, REGISTRY_APNIC }, // 140.168.0.0 - 140.168.255.255 { 0x8ca90000, 0x8cb4ffff, REGISTRY_ARIN }, // 140.169.0.0 - 140.180.255.255 { 0x8cb50000, 0x8cb5ffff, REGISTRY_RIPENCC }, // 140.181.0.0 - 140.181.255.255 { 0x8cb60000, 0x8cbeffff, REGISTRY_ARIN }, // 140.182.0.0 - 140.190.255.255 { 0x8cbf0000, 0x8cbfffff, REGISTRY_LACNIC }, // 140.191.0.0 - 140.191.255.255 { 0x8cc00000, 0x8cc7ffff, REGISTRY_ARIN }, // 140.192.0.0 - 140.199.255.255 { 0x8cc80000, 0x8cc8ffff, REGISTRY_APNIC }, // 140.200.0.0 - 140.200.255.255 { 0x8cc90000, 0x8ccaffff, REGISTRY_ARIN }, // 140.201.0.0 - 140.202.255.255 { 0x8ccb0000, 0x8ccbffff, REGISTRY_RIPENCC }, // 140.203.0.0 - 140.203.255.255 { 0x8ccc0000, 0x8cccffff, REGISTRY_ARIN }, // 140.204.0.0 - 140.204.255.255 { 0x8ccd0000, 0x8ccfffff, REGISTRY_APNIC }, // 140.205.0.0 - 140.207.255.255 { 0x8cd00000, 0x8cd1ffff, REGISTRY_ARIN }, // 140.208.0.0 - 140.209.255.255 { 0x8cd20000, 0x8cd2ffff, REGISTRY_APNIC }, // 140.210.0.0 - 140.210.255.255 { 0x8cd30000, 0x8cd4ffff, REGISTRY_ARIN }, // 140.211.0.0 - 140.212.255.255 { 0x8cd50000, 0x8cd5ffff, REGISTRY_APNIC }, // 140.213.0.0 - 140.213.255.255 { 0x8cd60000, 0x8cdfffff, REGISTRY_ARIN }, // 140.214.0.0 - 140.223.255.255 { 0x8ce00000, 0x8ce0ffff, REGISTRY_APNIC }, // 140.224.0.0 - 140.224.255.255 { 0x8ce10000, 0x8ce2ffff, REGISTRY_ARIN }, // 140.225.0.0 - 140.226.255.255 { 0x8ce30000, 0x8ce3ffff, REGISTRY_APNIC }, // 140.227.0.0 - 140.227.255.255 { 0x8ce40000, 0x8ce6ffff, REGISTRY_ARIN }, // 140.228.0.0 - 140.230.255.255 { 0x8ce70000, 0x8ce7ffff, REGISTRY_RIPENCC }, // 140.231.0.0 - 140.231.255.255 { 0x8ce80000, 0x8cecffff, REGISTRY_ARIN }, // 140.232.0.0 - 140.236.255.255 { 0x8ced0000, 0x8cedffff, REGISTRY_APNIC }, // 140.237.0.0 - 140.237.255.255 { 0x8cee0000, 0x8cefffff, REGISTRY_ARIN }, // 140.238.0.0 - 140.239.255.255 { 0x8cf00000, 0x8cf0ffff, REGISTRY_APNIC }, // 140.240.0.0 - 140.240.255.255 { 0x8cf10000, 0x8cf2ffff, REGISTRY_ARIN }, // 140.241.0.0 - 140.242.255.255 { 0x8cf30000, 0x8cf3ffff, REGISTRY_APNIC }, // 140.243.0.0 - 140.243.255.255 { 0x8cf40000, 0x8cf5ffff, REGISTRY_ARIN }, // 140.244.0.0 - 140.245.255.255 { 0x8cf60000, 0x8cf6ffff, REGISTRY_APNIC }, // 140.246.0.0 - 140.246.255.255 { 0x8cf70000, 0x8cf8ffff, REGISTRY_ARIN }, // 140.247.0.0 - 140.248.255.255 { 0x8cf90000, 0x8cfaffff, REGISTRY_APNIC }, // 140.249.0.0 - 140.250.255.255 { 0x8cfb0000, 0x8cfcffff, REGISTRY_ARIN }, // 140.251.0.0 - 140.252.255.255 { 0x8cfd0000, 0x8cfdffff, REGISTRY_APNIC }, // 140.253.0.0 - 140.253.255.255 { 0x8cfe0000, 0x8cfeffff, REGISTRY_ARIN }, // 140.254.0.0 - 140.254.255.255 { 0x8cff0000, 0x8cffffff, REGISTRY_APNIC }, // 140.255.0.0 - 140.255.255.255 { 0x8d000000, 0x8d00ffff, REGISTRY_RIPENCC }, // 141.0.0.0 - 141.0.255.255 { 0x8d010000, 0x8d07ffff, REGISTRY_RIPENCC }, // 141.1.0.0 - 141.7.255.255 { 0x8d080000, 0x8d08ffff, REGISTRY_RIPENCC }, // 141.8.0.0 - 141.8.255.255 { 0x8d090000, 0x8d1cffff, REGISTRY_RIPENCC }, // 141.9.0.0 - 141.28.255.255 { 0x8d1d0000, 0x8d1dffff, REGISTRY_RIPENCC }, // 141.29.0.0 - 141.29.255.255 { 0x8d1e0000, 0x8d48ffff, REGISTRY_RIPENCC }, // 141.30.0.0 - 141.72.255.255 { 0x8d490000, 0x8d49ffff, REGISTRY_RIPENCC }, // 141.73.0.0 - 141.73.255.255 { 0x8d4a0000, 0x8d55ffff, REGISTRY_RIPENCC }, // 141.74.0.0 - 141.85.255.255 { 0x8d560000, 0x8d56ffff, REGISTRY_ARIN }, // 141.86.0.0 - 141.86.255.255 { 0x8d570000, 0x8d60ffff, REGISTRY_RIPENCC }, // 141.87.0.0 - 141.96.255.255 { 0x8d610000, 0x8d61ffff, REGISTRY_RIPENCC }, // 141.97.0.0 - 141.97.255.255 { 0x8d630000, 0x8d64ffff, REGISTRY_RIPENCC }, // 141.99.0.0 - 141.100.255.255 { 0x8d650000, 0x8d65ffff, REGISTRY_RIPENCC }, // 141.101.0.0 - 141.101.255.255 { 0x8d660000, 0x8d66ffff, REGISTRY_ARIN }, // 141.102.0.0 - 141.102.255.255 { 0x8d670000, 0x8d67ffff, REGISTRY_APNIC }, // 141.103.0.0 - 141.103.255.255 { 0x8d680000, 0x8d68ffff, REGISTRY_ARIN }, // 141.104.0.0 - 141.104.255.255 { 0x8d690000, 0x8d69ffff, REGISTRY_RIPENCC }, // 141.105.0.0 - 141.105.255.255 { 0x8d6a0000, 0x8d6bffff, REGISTRY_ARIN }, // 141.106.0.0 - 141.107.255.255 { 0x8d6c0000, 0x8d6cffff, REGISTRY_RIPENCC }, // 141.108.0.0 - 141.108.255.255 { 0x8d6d0000, 0x8d70ffff, REGISTRY_ARIN }, // 141.109.0.0 - 141.112.255.255 { 0x8d710000, 0x8d71ffff, REGISTRY_RIPENCC }, // 141.113.0.0 - 141.113.255.255 { 0x8d720000, 0x8d72ffff, REGISTRY_ARIN }, // 141.114.0.0 - 141.114.255.255 { 0x8d730000, 0x8d73ffff, REGISTRY_RIPENCC }, // 141.115.0.0 - 141.115.255.255 { 0x8d740000, 0x8d77ffff, REGISTRY_ARIN }, // 141.116.0.0 - 141.119.255.255 { 0x8d780000, 0x8d78ffff, REGISTRY_APNIC }, // 141.120.0.0 - 141.120.255.255 { 0x8d790000, 0x8d7cffff, REGISTRY_ARIN }, // 141.121.0.0 - 141.124.255.255 { 0x8d7d0000, 0x8d7dffff, REGISTRY_RIPENCC }, // 141.125.0.0 - 141.125.255.255 { 0x8d7e0000, 0x8d81ffff, REGISTRY_ARIN }, // 141.126.0.0 - 141.129.255.255 { 0x8d820000, 0x8d82ffff, REGISTRY_RIPENCC }, // 141.130.0.0 - 141.130.255.255 { 0x8d830000, 0x8d83ffff, REGISTRY_ARIN }, // 141.131.0.0 - 141.131.255.255 { 0x8d840000, 0x8d84ffff, REGISTRY_APNIC }, // 141.132.0.0 - 141.132.255.255 { 0x8d850000, 0x8d85ffff, REGISTRY_ARIN }, // 141.133.0.0 - 141.133.255.255 { 0x8d860000, 0x8d88ffff, REGISTRY_RIPENCC }, // 141.134.0.0 - 141.136.255.255 { 0x8d890000, 0x8d89ffff, REGISTRY_RIPENCC }, // 141.137.0.0 - 141.137.255.255 { 0x8d8a0000, 0x8d8affff, REGISTRY_RIPENCC }, // 141.138.0.0 - 141.138.255.255 { 0x8d8b0000, 0x8d8effff, REGISTRY_ARIN }, // 141.139.0.0 - 141.142.255.255 { 0x8d8f0000, 0x8d94ffff, REGISTRY_RIPENCC }, // 141.143.0.0 - 141.148.255.255 { 0x8d950000, 0x8da2ffff, REGISTRY_ARIN }, // 141.149.0.0 - 141.162.255.255 { 0x8da30000, 0x8da3ffff, REGISTRY_RIPENCC }, // 141.163.0.0 - 141.163.255.255 { 0x8da40000, 0x8da7ffff, REGISTRY_ARIN }, // 141.164.0.0 - 141.167.255.255 { 0x8da80000, 0x8da8ffff, REGISTRY_APNIC }, // 141.168.0.0 - 141.168.255.255 { 0x8da90000, 0x8da9ffff, REGISTRY_RIPENCC }, // 141.169.0.0 - 141.169.255.255 { 0x8daa0000, 0x8daaffff, REGISTRY_RIPENCC }, // 141.170.0.0 - 141.170.255.255 { 0x8dab0000, 0x8dacffff, REGISTRY_RIPENCC }, // 141.171.0.0 - 141.172.255.255 { 0x8dad0000, 0x8daeffff, REGISTRY_ARIN }, // 141.173.0.0 - 141.174.255.255 { 0x8daf0000, 0x8db0ffff, REGISTRY_RIPENCC }, // 141.175.0.0 - 141.176.255.255 { 0x8db10000, 0x8db1ffff, REGISTRY_ARIN }, // 141.177.0.0 - 141.177.255.255 { 0x8db20000, 0x8db2ffff, REGISTRY_APNIC }, // 141.178.0.0 - 141.178.255.255 { 0x8db30000, 0x8dbfffff, REGISTRY_ARIN }, // 141.179.0.0 - 141.191.255.255 { 0x8dc00000, 0x8dc0ffff, REGISTRY_RIPENCC }, // 141.192.0.0 - 141.192.255.255 { 0x8dc10000, 0x8dc113ff, REGISTRY_ARIN }, // 141.193.0.0 - 141.193.19.255 { 0x8dc11400, 0x8dc114ff, REGISTRY_RIPENCC }, // 141.193.20.0 - 141.193.20.255 { 0x8dc11500, 0x8dc1ffff, REGISTRY_ARIN }, // 141.193.21.0 - 141.193.255.255 { 0x8dc20000, 0x8dc2ffff, REGISTRY_RIPENCC }, // 141.194.0.0 - 141.194.255.255 { 0x8dc30000, 0x8dc3ffff, REGISTRY_ARIN }, // 141.195.0.0 - 141.195.255.255 { 0x8dc40000, 0x8dc4ffff, REGISTRY_RIPENCC }, // 141.196.0.0 - 141.196.255.255 { 0x8dc50000, 0x8dc7ffff, REGISTRY_ARIN }, // 141.197.0.0 - 141.199.255.255 { 0x8dc80000, 0x8dc9ffff, REGISTRY_RIPENCC }, // 141.200.0.0 - 141.201.255.255 { 0x8dca0000, 0x8dcaffff, REGISTRY_ARIN }, // 141.202.0.0 - 141.202.255.255 { 0x8dcb0000, 0x8dcbffff, REGISTRY_RIPENCC }, // 141.203.0.0 - 141.203.255.255 { 0x8dcc0000, 0x8dcfffff, REGISTRY_ARIN }, // 141.204.0.0 - 141.207.255.255 { 0x8dd00000, 0x8dd0ffff, REGISTRY_RIPENCC }, // 141.208.0.0 - 141.208.255.255 { 0x8dd10000, 0x8ddeffff, REGISTRY_ARIN }, // 141.209.0.0 - 141.222.255.255 { 0x8ddf0000, 0x8ddfffff, REGISTRY_APNIC }, // 141.223.0.0 - 141.223.255.255 { 0x8de00000, 0x8de1ffff, REGISTRY_ARIN }, // 141.224.0.0 - 141.225.255.255 { 0x8de20000, 0x8de277ff, REGISTRY_RIPENCC }, // 141.226.0.0 - 141.226.119.255 { 0x8de27800, 0x8de27bff, REGISTRY_RIPENCC }, // 141.226.120.0 - 141.226.123.255 { 0x8de27c00, 0x8de28bff, REGISTRY_RIPENCC }, // 141.226.124.0 - 141.226.139.255 { 0x8de28c00, 0x8de28fff, REGISTRY_ARIN }, // 141.226.140.0 - 141.226.143.255 { 0x8de29000, 0x8de2bfff, REGISTRY_RIPENCC }, // 141.226.144.0 - 141.226.191.255 { 0x8de2c000, 0x8de2dfff, REGISTRY_RIPENCC }, // 141.226.192.0 - 141.226.223.255 { 0x8de2e000, 0x8de2ebff, REGISTRY_RIPENCC }, // 141.226.224.0 - 141.226.235.255 { 0x8de2ec00, 0x8de2ffff, REGISTRY_RIPENCC }, // 141.226.236.0 - 141.226.255.255 { 0x8de30000, 0x8de4ffff, REGISTRY_RIPENCC }, // 141.227.0.0 - 141.228.255.255 { 0x8de60000, 0x8de6ffff, REGISTRY_ARIN }, // 141.230.0.0 - 141.230.255.255 { 0x8de70000, 0x8de7ffff, REGISTRY_RIPENCC }, // 141.231.0.0 - 141.231.255.255 { 0x8de80000, 0x8decffff, REGISTRY_ARIN }, // 141.232.0.0 - 141.236.255.255 { 0x8ded0000, 0x8dedffff, REGISTRY_RIPENCC }, // 141.237.0.0 - 141.237.255.255 { 0x8dee0000, 0x8df0ffff, REGISTRY_ARIN }, // 141.238.0.0 - 141.240.255.255 { 0x8df10000, 0x8df1ffff, REGISTRY_RIPENCC }, // 141.241.0.0 - 141.241.255.255 { 0x8df20000, 0x8df2ffff, REGISTRY_ARIN }, // 141.242.0.0 - 141.242.255.255 { 0x8df30000, 0x8df3ffff, REGISTRY_APNIC }, // 141.243.0.0 - 141.243.255.255 { 0x8df40000, 0x8df5ffff, REGISTRY_RIPENCC }, // 141.244.0.0 - 141.245.255.255 { 0x8df60000, 0x8df8ffff, REGISTRY_ARIN }, // 141.246.0.0 - 141.248.255.255 { 0x8df90000, 0x8dfaffff, REGISTRY_RIPENCC }, // 141.249.0.0 - 141.250.255.255 { 0x8dfb0000, 0x8dfbffff, REGISTRY_ARIN }, // 141.251.0.0 - 141.251.255.255 { 0x8dfc0000, 0x8dfdffff, REGISTRY_RIPENCC }, // 141.252.0.0 - 141.253.255.255 { 0x8dfe0000, 0x8dfeffff, REGISTRY_ARIN }, // 141.254.0.0 - 141.254.255.255 { 0x8dff0000, 0x8dffffff, REGISTRY_RIPENCC }, // 141.255.0.0 - 141.255.255.255 { 0x8e000000, 0x8e5b07ff, REGISTRY_ARIN }, // 142.0.0.0 - 142.91.7.255 { 0x8e5b0800, 0x8e5b0fff, REGISTRY_RIPENCC }, // 142.91.8.0 - 142.91.15.255 { 0x8e5b1000, 0x8e5b77ff, REGISTRY_ARIN }, // 142.91.16.0 - 142.91.119.255 { 0x8e5b7800, 0x8e5b7fff, REGISTRY_RIPENCC }, // 142.91.120.0 - 142.91.127.255 { 0x8e5b8000, 0x8e5b97ff, REGISTRY_ARIN }, // 142.91.128.0 - 142.91.151.255 { 0x8e5b9800, 0x8e5b9fff, REGISTRY_RIPENCC }, // 142.91.152.0 - 142.91.159.255 { 0x8e5ba000, 0x8e99ffff, REGISTRY_ARIN }, // 142.91.160.0 - 142.153.255.255 { 0x8e9a0000, 0x8e9a7fff, REGISTRY_RIPENCC }, // 142.154.0.0 - 142.154.127.255 { 0x8e9a8000, 0x8eea1fff, REGISTRY_ARIN }, // 142.154.128.0 - 142.234.31.255 { 0x8eea2000, 0x8eea27ff, REGISTRY_RIPENCC }, // 142.234.32.0 - 142.234.39.255 { 0x8eea2800, 0x8effffff, REGISTRY_ARIN }, // 142.234.40.0 - 142.255.255.255 { 0x8f000000, 0x8f00ffff, REGISTRY_LACNIC }, // 143.0.0.0 - 143.0.255.255 { 0x8f010000, 0x8f28ffff, REGISTRY_ARIN }, // 143.1.0.0 - 143.40.255.255 { 0x8f290000, 0x8f29ffff, REGISTRY_RIPENCC }, // 143.41.0.0 - 143.41.255.255 { 0x8f2a0000, 0x8f2effff, REGISTRY_ARIN }, // 143.42.0.0 - 143.46.255.255 { 0x8f2f0000, 0x8f2fffff, REGISTRY_RIPENCC }, // 143.47.0.0 - 143.47.255.255 { 0x8f300000, 0x8f31ffff, REGISTRY_ARIN }, // 143.48.0.0 - 143.49.255.255 { 0x8f320000, 0x8f35ffff, REGISTRY_RIPENCC }, // 143.50.0.0 - 143.53.255.255 { 0x8f360000, 0x8f36ffff, REGISTRY_LACNIC }, // 143.54.0.0 - 143.54.255.255 { 0x8f370000, 0x8f40ffff, REGISTRY_ARIN }, // 143.55.0.0 - 143.64.255.255 { 0x8f410000, 0x8f41ffff, REGISTRY_RIPENCC }, // 143.65.0.0 - 143.65.255.255 { 0x8f420000, 0x8f58ffff, REGISTRY_ARIN }, // 143.66.0.0 - 143.88.255.255 { 0x8f590000, 0x8f5affff, REGISTRY_APNIC }, // 143.89.0.0 - 143.90.255.255 { 0x8f5b0000, 0x8f5bffff, REGISTRY_ARIN }, // 143.91.0.0 - 143.91.255.255 { 0x8f5c0000, 0x8f5cffff, REGISTRY_APNIC }, // 143.92.0.0 - 143.92.255.255 { 0x8f5d0000, 0x8f5dffff, REGISTRY_RIPENCC }, // 143.93.0.0 - 143.93.255.255 { 0x8f5e0000, 0x8f5effff, REGISTRY_APNIC }, // 143.94.0.0 - 143.94.255.255 { 0x8f5f0000, 0x8f5fffff, REGISTRY_ARIN }, // 143.95.0.0 - 143.95.255.255 { 0x8f600000, 0x8f60ffff, REGISTRY_APNIC }, // 143.96.0.0 - 143.96.255.255 { 0x8f610000, 0x8f61ffff, REGISTRY_RIPENCC }, // 143.97.0.0 - 143.97.255.255 { 0x8f620000, 0x8f62ffff, REGISTRY_ARIN }, // 143.98.0.0 - 143.98.255.255 { 0x8f630000, 0x8f63ffff, REGISTRY_RIPENCC }, // 143.99.0.0 - 143.99.255.255 { 0x8f640000, 0x8f69ffff, REGISTRY_ARIN }, // 143.100.0.0 - 143.105.255.255 { 0x8f6a0000, 0x8f6cffff, REGISTRY_LACNIC }, // 143.106.0.0 - 143.108.255.255 { 0x8f6d0000, 0x8f74ffff, REGISTRY_ARIN }, // 143.109.0.0 - 143.116.255.255 { 0x8f750000, 0x8f76ffff, REGISTRY_RIPENCC }, // 143.117.0.0 - 143.118.255.255 { 0x8f770000, 0x8f77ffff, REGISTRY_APNIC }, // 143.119.0.0 - 143.119.255.255 { 0x8f780000, 0x8f78ffff, REGISTRY_ARIN }, // 143.120.0.0 - 143.120.255.255 { 0x8f790000, 0x8f79ffff, REGISTRY_RIPENCC }, // 143.121.0.0 - 143.121.255.255 { 0x8f7a0000, 0x8f7cffff, REGISTRY_ARIN }, // 143.122.0.0 - 143.124.255.255 { 0x8f7d0000, 0x8f7dffff, REGISTRY_APNIC }, // 143.125.0.0 - 143.125.255.255 { 0x8f7e0000, 0x8f7effff, REGISTRY_RIPENCC }, // 143.126.0.0 - 143.126.255.255 { 0x8f7f0000, 0x8f7fffff, REGISTRY_ARIN }, // 143.127.0.0 - 143.127.255.255 { 0x8f800000, 0x8f80ffff, REGISTRY_AFRINIC }, // 143.128.0.0 - 143.128.255.255 { 0x8f810000, 0x8f82ffff, REGISTRY_RIPENCC }, // 143.129.0.0 - 143.130.255.255 { 0x8f830000, 0x8f87ffff, REGISTRY_ARIN }, // 143.131.0.0 - 143.135.255.255 { 0x8f880000, 0x8f88ffff, REGISTRY_APNIC }, // 143.136.0.0 - 143.136.255.255 { 0x8f890000, 0x8f89ffff, REGISTRY_LACNIC }, // 143.137.0.0 - 143.137.255.255 { 0x8f8a0000, 0x8f9fffff, REGISTRY_ARIN }, // 143.138.0.0 - 143.159.255.255 { 0x8fa00000, 0x8fa0ffff, REGISTRY_AFRINIC }, // 143.160.0.0 - 143.160.255.255 { 0x8fa10000, 0x8fa1ffff, REGISTRY_RIPENCC }, // 143.161.0.0 - 143.161.255.255 { 0x8fa20000, 0x8fa2ffff, REGISTRY_ARIN }, // 143.162.0.0 - 143.162.255.255 { 0x8fa30000, 0x8fa4ffff, REGISTRY_RIPENCC }, // 143.163.0.0 - 143.164.255.255 { 0x8fa50000, 0x8fa6ffff, REGISTRY_ARIN }, // 143.165.0.0 - 143.166.255.255 { 0x8fa70000, 0x8fa7ffff, REGISTRY_RIPENCC }, // 143.167.0.0 - 143.167.255.255 { 0x8fa80000, 0x8fa8ffff, REGISTRY_ARIN }, // 143.168.0.0 - 143.168.255.255 { 0x8fa90000, 0x8fa9ffff, REGISTRY_RIPENCC }, // 143.169.0.0 - 143.169.255.255 { 0x8faa0000, 0x8faaffff, REGISTRY_ARIN }, // 143.170.0.0 - 143.170.255.255 { 0x8fac0000, 0x8fadffff, REGISTRY_ARIN }, // 143.172.0.0 - 143.173.255.255 { 0x8fae0000, 0x8faeffff, REGISTRY_APNIC }, // 143.174.0.0 - 143.174.255.255 { 0x8faf0000, 0x8fafffff, REGISTRY_ARIN }, // 143.175.0.0 - 143.175.255.255 { 0x8fb00000, 0x8fb4ffff, REGISTRY_RIPENCC }, // 143.176.0.0 - 143.180.255.255 { 0x8fb50000, 0x8fbbffff, REGISTRY_ARIN }, // 143.181.0.0 - 143.187.255.255 { 0x8fbc0000, 0x8fbdffff, REGISTRY_APNIC }, // 143.188.0.0 - 143.189.255.255 { 0x8fbe0000, 0x8fc05fff, REGISTRY_ARIN }, // 143.190.0.0 - 143.192.95.255 { 0x8fc06000, 0x8fc07fff, REGISTRY_APNIC }, // 143.192.96.0 - 143.192.127.255 { 0x8fc08000, 0x8fc3ffff, REGISTRY_ARIN }, // 143.192.128.0 - 143.195.255.255 { 0x8fc40000, 0x8fc4ffff, REGISTRY_RIPENCC }, // 143.196.0.0 - 143.196.255.255 { 0x8fc50000, 0x8fc8ffff, REGISTRY_ARIN }, // 143.197.0.0 - 143.200.255.255 { 0x8fca0000, 0x8fcaffff, REGISTRY_LACNIC }, // 143.202.0.0 - 143.202.255.255 { 0x8fcb0000, 0x8fccffff, REGISTRY_ARIN }, // 143.203.0.0 - 143.204.255.255 { 0x8fcd0000, 0x8fcdffff, REGISTRY_RIPENCC }, // 143.205.0.0 - 143.205.255.255 { 0x8fce0000, 0x8fcfffff, REGISTRY_ARIN }, // 143.206.0.0 - 143.207.255.255 { 0x8fd00000, 0x8fd0ffff, REGISTRY_LACNIC }, // 143.208.0.0 - 143.208.255.255 { 0x8fd10000, 0x8fd1ffff, REGISTRY_ARIN }, // 143.209.0.0 - 143.209.255.255 { 0x8fd20000, 0x8fd2ffff, REGISTRY_RIPENCC }, // 143.210.0.0 - 143.210.255.255 { 0x8fd30000, 0x8fd7ffff, REGISTRY_ARIN }, // 143.211.0.0 - 143.215.255.255 { 0x8fd80000, 0x8fd8ffff, REGISTRY_APNIC }, // 143.216.0.0 - 143.216.255.255 { 0x8fd90000, 0x8fd9ffff, REGISTRY_RIPENCC }, // 143.217.0.0 - 143.217.255.255 { 0x8fda0000, 0x8fdaffff, REGISTRY_APNIC }, // 143.218.0.0 - 143.218.255.255 { 0x8fdb0000, 0x8fdcffff, REGISTRY_ARIN }, // 143.219.0.0 - 143.220.255.255 { 0x8fdd0000, 0x8fddffff, REGISTRY_APNIC }, // 143.221.0.0 - 143.221.255.255 { 0x8fde0000, 0x8fdfffff, REGISTRY_ARIN }, // 143.222.0.0 - 143.223.255.255 { 0x8fe00000, 0x8fe1ffff, REGISTRY_RIPENCC }, // 143.224.0.0 - 143.225.255.255 { 0x8fe20000, 0x8fe8ffff, REGISTRY_ARIN }, // 143.226.0.0 - 143.232.255.255 { 0x8fe90000, 0x8feaffff, REGISTRY_RIPENCC }, // 143.233.0.0 - 143.234.255.255 { 0x8feb0000, 0x8fecffff, REGISTRY_ARIN }, // 143.235.0.0 - 143.236.255.255 { 0x8fed0000, 0x8fedffff, REGISTRY_RIPENCC }, // 143.237.0.0 - 143.237.255.255 { 0x8fee0000, 0x8feeffff, REGISTRY_APNIC }, // 143.238.0.0 - 143.238.255.255 { 0x8fef0000, 0x8fefffff, REGISTRY_RIPENCC }, // 143.239.0.0 - 143.239.255.255 { 0x8ff00000, 0x8ff4ffff, REGISTRY_ARIN }, // 143.240.0.0 - 143.244.255.255 { 0x8ff50000, 0x8ff5ffff, REGISTRY_RIPENCC }, // 143.245.0.0 - 143.245.255.255 { 0x8ff60000, 0x8ff7ffff, REGISTRY_ARIN }, // 143.246.0.0 - 143.247.255.255 { 0x8ff80000, 0x8ff8ffff, REGISTRY_APNIC }, // 143.248.0.0 - 143.248.255.255 { 0x8ff90000, 0x8ffbffff, REGISTRY_ARIN }, // 143.249.0.0 - 143.251.255.255 { 0x8ffc0000, 0x8ffcffff, REGISTRY_RIPENCC }, // 143.252.0.0 - 143.252.255.255 { 0x8ffd0000, 0x8ffdffff, REGISTRY_APNIC }, // 143.253.0.0 - 143.253.255.255 { 0x8ffe0000, 0x8ffeffff, REGISTRY_ARIN }, // 143.254.0.0 - 143.254.255.255 { 0x8fff0000, 0x8fffffff, REGISTRY_LACNIC }, // 143.255.0.0 - 143.255.255.255 { 0x90000000, 0x9000ffff, REGISTRY_APNIC }, // 144.0.0.0 - 144.0.255.255 { 0x90020000, 0x9002ffff, REGISTRY_RIPENCC }, // 144.2.0.0 - 144.2.255.255 { 0x90030000, 0x9003ffff, REGISTRY_ARIN }, // 144.3.0.0 - 144.3.255.255 { 0x90040000, 0x9004ffff, REGISTRY_RIPENCC }, // 144.4.0.0 - 144.4.255.255 { 0x90050000, 0x9005ffff, REGISTRY_ARIN }, // 144.5.0.0 - 144.5.255.255 { 0x90060000, 0x9007ffff, REGISTRY_APNIC }, // 144.6.0.0 - 144.7.255.255 { 0x90080000, 0x900bffff, REGISTRY_ARIN }, // 144.8.0.0 - 144.11.255.255 { 0x900c0000, 0x900cffff, REGISTRY_APNIC }, // 144.12.0.0 - 144.12.255.255 { 0x900d0000, 0x900fffff, REGISTRY_ARIN }, // 144.13.0.0 - 144.15.255.255 { 0x90100000, 0x9010ffff, REGISTRY_APNIC }, // 144.16.0.0 - 144.16.255.255 { 0x90110000, 0x9013ffff, REGISTRY_ARIN }, // 144.17.0.0 - 144.19.255.255 { 0x90140000, 0x9015ffff, REGISTRY_RIPENCC }, // 144.20.0.0 - 144.21.255.255 { 0x90160000, 0x9017ffff, REGISTRY_LACNIC }, // 144.22.0.0 - 144.23.255.255 { 0x90180000, 0x9018ffff, REGISTRY_RIPENCC }, // 144.24.0.0 - 144.24.255.255 { 0x90190000, 0x901affff, REGISTRY_ARIN }, // 144.25.0.0 - 144.26.255.255 { 0x901b0000, 0x901bffff, REGISTRY_RIPENCC }, // 144.27.0.0 - 144.27.255.255 { 0x901c0000, 0x901fffff, REGISTRY_ARIN }, // 144.28.0.0 - 144.31.255.255 { 0x90200000, 0x9020ffff, REGISTRY_RIPENCC }, // 144.32.0.0 - 144.32.255.255 { 0x90210000, 0x902445ff, REGISTRY_ARIN }, // 144.33.0.0 - 144.36.69.255 { 0x90244600, 0x902449ff, REGISTRY_APNIC }, // 144.36.70.0 - 144.36.73.255 { 0x90244a00, 0x902467ff, REGISTRY_ARIN }, // 144.36.74.0 - 144.36.103.255 { 0x90246800, 0x902468ff, REGISTRY_APNIC }, // 144.36.104.0 - 144.36.104.255 { 0x90246900, 0x90247fff, REGISTRY_ARIN }, // 144.36.105.0 - 144.36.127.255 { 0x90248000, 0x902481ff, REGISTRY_APNIC }, // 144.36.128.0 - 144.36.129.255 { 0x90248200, 0x902485ff, REGISTRY_ARIN }, // 144.36.130.0 - 144.36.133.255 { 0x90248600, 0x902487ff, REGISTRY_APNIC }, // 144.36.134.0 - 144.36.135.255 { 0x90248800, 0x90248bff, REGISTRY_ARIN }, // 144.36.136.0 - 144.36.139.255 { 0x90248c00, 0x90248dff, REGISTRY_APNIC }, // 144.36.140.0 - 144.36.141.255 { 0x90248e00, 0x90248fff, REGISTRY_ARIN }, // 144.36.142.0 - 144.36.143.255 { 0x90249000, 0x902491ff, REGISTRY_APNIC }, // 144.36.144.0 - 144.36.145.255 { 0x90249200, 0x902493ff, REGISTRY_ARIN }, // 144.36.146.0 - 144.36.147.255 { 0x90249400, 0x902495ff, REGISTRY_APNIC }, // 144.36.148.0 - 144.36.149.255 { 0x90249600, 0x9024afff, REGISTRY_ARIN }, // 144.36.150.0 - 144.36.175.255 { 0x9024b000, 0x9024b0ff, REGISTRY_APNIC }, // 144.36.176.0 - 144.36.176.255 { 0x9024b100, 0x9024b1ff, REGISTRY_ARIN }, // 144.36.177.0 - 144.36.177.255 { 0x9024b200, 0x9024b2ff, REGISTRY_APNIC }, // 144.36.178.0 - 144.36.178.255 { 0x9024b300, 0x9024b5ff, REGISTRY_ARIN }, // 144.36.179.0 - 144.36.181.255 { 0x9024b600, 0x9024b9ff, REGISTRY_APNIC }, // 144.36.182.0 - 144.36.185.255 { 0x9024ba00, 0x9024bbff, REGISTRY_ARIN }, // 144.36.186.0 - 144.36.187.255 { 0x9024bc00, 0x9024bdff, REGISTRY_APNIC }, // 144.36.188.0 - 144.36.189.255 { 0x9024be00, 0x9024cdff, REGISTRY_ARIN }, // 144.36.190.0 - 144.36.205.255 { 0x9024ce00, 0x9024cfff, REGISTRY_APNIC }, // 144.36.206.0 - 144.36.207.255 { 0x9024d000, 0x9024d1ff, REGISTRY_ARIN }, // 144.36.208.0 - 144.36.209.255 { 0x9024d200, 0x9024d3ff, REGISTRY_APNIC }, // 144.36.210.0 - 144.36.211.255 { 0x9024d400, 0x9024d5ff, REGISTRY_ARIN }, // 144.36.212.0 - 144.36.213.255 { 0x9024d600, 0x9024d9ff, REGISTRY_APNIC }, // 144.36.214.0 - 144.36.217.255 { 0x9024da00, 0x9024dbff, REGISTRY_ARIN }, // 144.36.218.0 - 144.36.219.255 { 0x9024dc00, 0x9024ecff, REGISTRY_APNIC }, // 144.36.220.0 - 144.36.236.255 { 0x9024ed00, 0x9024f3ff, REGISTRY_ARIN }, // 144.36.237.0 - 144.36.243.255 { 0x9024f400, 0x9024f5ff, REGISTRY_APNIC }, // 144.36.244.0 - 144.36.245.255 { 0x9024f600, 0x9024f7ff, REGISTRY_ARIN }, // 144.36.246.0 - 144.36.247.255 { 0x9024f800, 0x9024fbff, REGISTRY_APNIC }, // 144.36.248.0 - 144.36.251.255 { 0x9024fc00, 0x9024fdff, REGISTRY_ARIN }, // 144.36.252.0 - 144.36.253.255 { 0x9024fe00, 0x9024ffff, REGISTRY_APNIC }, // 144.36.254.0 - 144.36.255.255 { 0x90250000, 0x9028ffff, REGISTRY_ARIN }, // 144.37.0.0 - 144.40.255.255 { 0x90290000, 0x9029ffff, REGISTRY_RIPENCC }, // 144.41.0.0 - 144.41.255.255 { 0x902a0000, 0x902affff, REGISTRY_ARIN }, // 144.42.0.0 - 144.42.255.255 { 0x902b0000, 0x902cffff, REGISTRY_RIPENCC }, // 144.43.0.0 - 144.44.255.255 { 0x902d0000, 0x902fffff, REGISTRY_ARIN }, // 144.45.0.0 - 144.47.255.255 { 0x90300000, 0x9030ffff, REGISTRY_APNIC }, // 144.48.0.0 - 144.48.255.255 { 0x90310000, 0x9033ffff, REGISTRY_ARIN }, // 144.49.0.0 - 144.51.255.255 { 0x90340000, 0x9035ffff, REGISTRY_APNIC }, // 144.52.0.0 - 144.53.255.255 { 0x90360000, 0x9036ffff, REGISTRY_RIPENCC }, // 144.54.0.0 - 144.54.255.255 { 0x90370000, 0x9037ffff, REGISTRY_APNIC }, // 144.55.0.0 - 144.55.255.255 { 0x90380000, 0x9039ffff, REGISTRY_RIPENCC }, // 144.56.0.0 - 144.57.255.255 { 0x903a0000, 0x903effff, REGISTRY_ARIN }, // 144.58.0.0 - 144.62.255.255 { 0x903f0000, 0x903fffff, REGISTRY_RIPENCC }, // 144.63.0.0 - 144.63.255.255 { 0x90400000, 0x9040ffff, REGISTRY_RIPENCC }, // 144.64.0.0 - 144.64.255.255 { 0x90410000, 0x9041ffff, REGISTRY_RIPENCC }, // 144.65.0.0 - 144.65.255.255 { 0x90420000, 0x9042ffff, REGISTRY_APNIC }, // 144.66.0.0 - 144.66.255.255 { 0x90430000, 0x904bffff, REGISTRY_ARIN }, // 144.67.0.0 - 144.75.255.255 { 0x904c0000, 0x904cffff, REGISTRY_RIPENCC }, // 144.76.0.0 - 144.76.255.255 { 0x904d0000, 0x904effff, REGISTRY_ARIN }, // 144.77.0.0 - 144.78.255.255 { 0x90500000, 0x9051ffff, REGISTRY_ARIN }, // 144.80.0.0 - 144.81.255.255 { 0x90520000, 0x9052ffff, REGISTRY_RIPENCC }, // 144.82.0.0 - 144.82.255.255 { 0x90530000, 0x9053ffff, REGISTRY_ARIN }, // 144.83.0.0 - 144.83.255.255 { 0x90540000, 0x9055ffff, REGISTRY_RIPENCC }, // 144.84.0.0 - 144.85.255.255 { 0x90560000, 0x9056ffff, REGISTRY_ARIN }, // 144.86.0.0 - 144.86.255.255 { 0x90570000, 0x9057ffff, REGISTRY_RIPENCC }, // 144.87.0.0 - 144.87.255.255 { 0x90580000, 0x905effff, REGISTRY_ARIN }, // 144.88.0.0 - 144.94.255.255 { 0x905f0000, 0x905fffff, REGISTRY_RIPENCC }, // 144.95.0.0 - 144.95.255.255 { 0x90600000, 0x9060ffff, REGISTRY_ARIN }, // 144.96.0.0 - 144.96.255.255 { 0x90610000, 0x9061ffff, REGISTRY_APNIC }, // 144.97.0.0 - 144.97.255.255 { 0x90620000, 0x9062ffff, REGISTRY_RIPENCC }, // 144.98.0.0 - 144.98.255.255 { 0x90630000, 0x906dffff, REGISTRY_ARIN }, // 144.99.0.0 - 144.109.255.255 { 0x906e0000, 0x906effff, REGISTRY_APNIC }, // 144.110.0.0 - 144.110.255.255 { 0x906f0000, 0x9076ffff, REGISTRY_ARIN }, // 144.111.0.0 - 144.118.255.255 { 0x90770000, 0x9077ffff, REGISTRY_RIPENCC }, // 144.119.0.0 - 144.119.255.255 { 0x90780000, 0x9078ffff, REGISTRY_APNIC }, // 144.120.0.0 - 144.120.255.255 { 0x90790000, 0x9079ffff, REGISTRY_ARIN }, // 144.121.0.0 - 144.121.255.255 { 0x907a0000, 0x907affff, REGISTRY_RIPENCC }, // 144.122.0.0 - 144.122.255.255 { 0x907b0000, 0x907bffff, REGISTRY_APNIC }, // 144.123.0.0 - 144.123.255.255 { 0x907c0000, 0x907cffff, REGISTRY_RIPENCC }, // 144.124.0.0 - 144.124.255.255 { 0x907d0000, 0x907effff, REGISTRY_ARIN }, // 144.125.0.0 - 144.126.255.255 { 0x907f0000, 0x907fffff, REGISTRY_RIPENCC }, // 144.127.0.0 - 144.127.255.255 { 0x90800000, 0x9081ffff, REGISTRY_ARIN }, // 144.128.0.0 - 144.129.255.255 { 0x90820000, 0x908cffff, REGISTRY_APNIC }, // 144.130.0.0 - 144.140.255.255 { 0x908d0000, 0x9090ffff, REGISTRY_ARIN }, // 144.141.0.0 - 144.144.255.255 { 0x90910000, 0x9091ffff, REGISTRY_RIPENCC }, // 144.145.0.0 - 144.145.255.255 { 0x90920000, 0x90a3ffff, REGISTRY_ARIN }, // 144.146.0.0 - 144.163.255.255 { 0x90a40000, 0x90a5ffff, REGISTRY_RIPENCC }, // 144.164.0.0 - 144.165.255.255 { 0x90a60000, 0x90acffff, REGISTRY_ARIN }, // 144.166.0.0 - 144.172.255.255 { 0x90ad0000, 0x90adffff, REGISTRY_RIPENCC }, // 144.173.0.0 - 144.173.255.255 { 0x90ae0000, 0x90afffff, REGISTRY_ARIN }, // 144.174.0.0 - 144.175.255.255 { 0x90b00000, 0x90b5ffff, REGISTRY_RIPENCC }, // 144.176.0.0 - 144.181.255.255 { 0x90b60000, 0x90c0ffff, REGISTRY_ARIN }, // 144.182.0.0 - 144.192.255.255 { 0x90c10000, 0x90c1ffff, REGISTRY_RIPENCC }, // 144.193.0.0 - 144.193.255.255 { 0x90c20000, 0x90c6ffff, REGISTRY_ARIN }, // 144.194.0.0 - 144.198.255.255 { 0x90c70000, 0x90c7ffff, REGISTRY_APNIC }, // 144.199.0.0 - 144.199.255.255 { 0x90c80000, 0x90c8ffff, REGISTRY_RIPENCC }, // 144.200.0.0 - 144.200.255.255 { 0x90c90000, 0x90cbffff, REGISTRY_ARIN }, // 144.201.0.0 - 144.203.255.255 { 0x90cc0000, 0x90ccffff, REGISTRY_RIPENCC }, // 144.204.0.0 - 144.204.255.255 { 0x90cd0000, 0x90cdffff, REGISTRY_APNIC }, // 144.205.0.0 - 144.205.255.255 { 0x90ce0000, 0x90ceffff, REGISTRY_RIPENCC }, // 144.206.0.0 - 144.206.255.255 { 0x90cf0000, 0x90cfffff, REGISTRY_ARIN }, // 144.207.0.0 - 144.207.255.255 { 0x90d00000, 0x90d03fff, REGISTRY_RIPENCC }, // 144.208.0.0 - 144.208.63.255 { 0x90d04000, 0x90d07fff, REGISTRY_ARIN }, // 144.208.64.0 - 144.208.127.255 { 0x90d08000, 0x90d1ffff, REGISTRY_RIPENCC }, // 144.208.128.0 - 144.209.255.255 { 0x90d20000, 0x90d4ffff, REGISTRY_ARIN }, // 144.210.0.0 - 144.212.255.255 { 0x90d50000, 0x90d6ffff, REGISTRY_APNIC }, // 144.213.0.0 - 144.214.255.255 { 0x90d70000, 0x90d9ffff, REGISTRY_ARIN }, // 144.215.0.0 - 144.217.255.255 { 0x90db0000, 0x90f7ffff, REGISTRY_ARIN }, // 144.219.0.0 - 144.247.255.255 { 0x90f80000, 0x90f8ffff, REGISTRY_RIPENCC }, // 144.248.0.0 - 144.248.255.255 { 0x90f90000, 0x90feffff, REGISTRY_ARIN }, // 144.249.0.0 - 144.254.255.255 { 0x90ff0000, 0x90ffffff, REGISTRY_APNIC }, // 144.255.0.0 - 144.255.255.255 { 0x91000000, 0x910e3fff, REGISTRY_RIPENCC }, // 145.0.0.0 - 145.14.63.255 { 0x910e4000, 0x910e7fff, REGISTRY_RIPENCC }, // 145.14.64.0 - 145.14.127.255 { 0x910e8000, 0x91e3ffff, REGISTRY_RIPENCC }, // 145.14.128.0 - 145.227.255.255 { 0x91e40000, 0x91e4ffff, REGISTRY_RIPENCC }, // 145.228.0.0 - 145.228.255.255 { 0x91e50000, 0x91e8ffff, REGISTRY_RIPENCC }, // 145.229.0.0 - 145.232.255.255 { 0x91e90000, 0x91e9ffff, REGISTRY_RIPENCC }, // 145.233.0.0 - 145.233.255.255 { 0x91ea0000, 0x91eeffff, REGISTRY_RIPENCC }, // 145.234.0.0 - 145.238.255.255 { 0x91ef0000, 0x91efffff, REGISTRY_RIPENCC }, // 145.239.0.0 - 145.239.255.255 { 0x91f00000, 0x91fcffff, REGISTRY_RIPENCC }, // 145.240.0.0 - 145.252.255.255 { 0x91fd0000, 0x9200ffff, REGISTRY_RIPENCC }, // 145.253.0.0 - 146.0.255.255 { 0x92010000, 0x9201ffff, REGISTRY_ARIN }, // 146.1.0.0 - 146.1.255.255 { 0x92020000, 0x9203ffff, REGISTRY_RIPENCC }, // 146.2.0.0 - 146.3.255.255 { 0x92040000, 0x92047fff, REGISTRY_RIPENCC }, // 146.4.0.0 - 146.4.127.255 { 0x92048000, 0x9204ffff, REGISTRY_RIPENCC }, // 146.4.128.0 - 146.4.255.255 { 0x92050000, 0x920affff, REGISTRY_ARIN }, // 146.5.0.0 - 146.10.255.255 { 0x920b0000, 0x920bffff, REGISTRY_APNIC }, // 146.11.0.0 - 146.11.255.255 { 0x920c0000, 0x9212ffff, REGISTRY_ARIN }, // 146.12.0.0 - 146.18.255.255 { 0x92130000, 0x9213ffff, REGISTRY_RIPENCC }, // 146.19.0.0 - 146.19.255.255 { 0x92140000, 0x9214ffff, REGISTRY_ARIN }, // 146.20.0.0 - 146.20.255.255 { 0x92150000, 0x9215ffff, REGISTRY_RIPENCC }, // 146.21.0.0 - 146.21.255.255 { 0x92160000, 0x922fffff, REGISTRY_ARIN }, // 146.22.0.0 - 146.47.255.255 { 0x92300000, 0x9230ffff, REGISTRY_RIPENCC }, // 146.48.0.0 - 146.48.255.255 { 0x92310000, 0x9231ffff, REGISTRY_ARIN }, // 146.49.0.0 - 146.49.255.255 { 0x92320000, 0x9232ffff, REGISTRY_RIPENCC }, // 146.50.0.0 - 146.50.255.255 { 0x92330000, 0x9233ffff, REGISTRY_APNIC }, // 146.51.0.0 - 146.51.255.255 { 0x92340000, 0x9234ffff, REGISTRY_RIPENCC }, // 146.52.0.0 - 146.52.255.255 { 0x92350000, 0x9237ffff, REGISTRY_ARIN }, // 146.53.0.0 - 146.55.255.255 { 0x92380000, 0x9238ffff, REGISTRY_APNIC }, // 146.56.0.0 - 146.56.255.255 { 0x92390000, 0x923affff, REGISTRY_ARIN }, // 146.57.0.0 - 146.58.255.255 { 0x923b0000, 0x923bffff, REGISTRY_RIPENCC }, // 146.59.0.0 - 146.59.255.255 { 0x923c0000, 0x923cffff, REGISTRY_RIPENCC }, // 146.60.0.0 - 146.60.255.255 { 0x923d0000, 0x923dffff, REGISTRY_ARIN }, // 146.61.0.0 - 146.61.255.255 { 0x923f0000, 0x923fffff, REGISTRY_ARIN }, // 146.63.0.0 - 146.63.255.255 { 0x92400000, 0x9240ffff, REGISTRY_AFRINIC }, // 146.64.0.0 - 146.64.255.255 { 0x92410000, 0x9241ffff, REGISTRY_ARIN }, // 146.65.0.0 - 146.65.255.255 { 0x92420000, 0x9242ffff, REGISTRY_RIPENCC }, // 146.66.0.0 - 146.66.255.255 { 0x92430000, 0x9243ffff, REGISTRY_RIPENCC }, // 146.67.0.0 - 146.67.255.255 { 0x92440000, 0x9245ffff, REGISTRY_ARIN }, // 146.68.0.0 - 146.69.255.255 { 0x92460000, 0x9246ffff, REGISTRY_RIPENCC }, // 146.70.0.0 - 146.70.255.255 { 0x92470000, 0x92475dff, REGISTRY_ARIN }, // 146.71.0.0 - 146.71.93.255 { 0x92475e00, 0x92475fff, REGISTRY_RIPENCC }, // 146.71.94.0 - 146.71.95.255 { 0x92476000, 0x9247ffff, REGISTRY_ARIN }, // 146.71.96.0 - 146.71.255.255 { 0x92480000, 0x9248ffff, REGISTRY_RIPENCC }, // 146.72.0.0 - 146.72.255.255 { 0x92490000, 0x924affff, REGISTRY_ARIN }, // 146.73.0.0 - 146.74.255.255 { 0x924b0000, 0x924bffff, REGISTRY_RIPENCC }, // 146.75.0.0 - 146.75.255.255 { 0x924c0000, 0x924cffff, REGISTRY_ARIN }, // 146.76.0.0 - 146.76.255.255 { 0x924d0000, 0x924dffff, REGISTRY_RIPENCC }, // 146.77.0.0 - 146.77.255.255 { 0x924e0000, 0x924fffff, REGISTRY_ARIN }, // 146.78.0.0 - 146.79.255.255 { 0x92500000, 0x9251ffff, REGISTRY_RIPENCC }, // 146.80.0.0 - 146.81.255.255 { 0x92520000, 0x9252ffff, REGISTRY_ARIN }, // 146.82.0.0 - 146.82.255.255 { 0x92530000, 0x9253ffff, REGISTRY_LACNIC }, // 146.83.0.0 - 146.83.255.255 { 0x92540000, 0x9256ffff, REGISTRY_ARIN }, // 146.84.0.0 - 146.86.255.255 { 0x92570000, 0x9257ffff, REGISTRY_RIPENCC }, // 146.87.0.0 - 146.87.255.255 { 0x92580000, 0x92580fff, REGISTRY_ARIN }, // 146.88.0.0 - 146.88.15.255 { 0x92581000, 0x92581cff, REGISTRY_APNIC }, // 146.88.16.0 - 146.88.28.255 { 0x92581d00, 0x92581fff, REGISTRY_ARIN }, // 146.88.29.0 - 146.88.31.255 { 0x92582000, 0x92585fff, REGISTRY_APNIC }, // 146.88.32.0 - 146.88.95.255 { 0x92586000, 0x92587fff, REGISTRY_ARIN }, // 146.88.96.0 - 146.88.127.255 { 0x92588000, 0x925887ff, REGISTRY_APNIC }, // 146.88.128.0 - 146.88.135.255 { 0x92588800, 0x92588fff, REGISTRY_ARIN }, // 146.88.136.0 - 146.88.143.255 { 0x92589000, 0x925893ff, REGISTRY_APNIC }, // 146.88.144.0 - 146.88.147.255 { 0x92589400, 0x925897ff, REGISTRY_ARIN }, // 146.88.148.0 - 146.88.151.255 { 0x92589800, 0x9258afff, REGISTRY_APNIC }, // 146.88.152.0 - 146.88.175.255 { 0x9258b000, 0x9258c3ff, REGISTRY_ARIN }, // 146.88.176.0 - 146.88.195.255 { 0x9258c400, 0x9258cfff, REGISTRY_APNIC }, // 146.88.196.0 - 146.88.207.255 { 0x9258d000, 0x9258e7ff, REGISTRY_ARIN }, // 146.88.208.0 - 146.88.231.255 { 0x9258e800, 0x9258efff, REGISTRY_RIPENCC }, // 146.88.232.0 - 146.88.239.255 { 0x9258f000, 0x9259ffff, REGISTRY_ARIN }, // 146.88.240.0 - 146.89.255.255 { 0x925a0000, 0x925affff, REGISTRY_RIPENCC }, // 146.90.0.0 - 146.90.255.255 { 0x925b0000, 0x9260ffff, REGISTRY_ARIN }, // 146.91.0.0 - 146.96.255.255 { 0x92610000, 0x9261ffff, REGISTRY_RIPENCC }, // 146.97.0.0 - 146.97.255.255 { 0x92620000, 0x9262ffff, REGISTRY_ARIN }, // 146.98.0.0 - 146.98.255.255 { 0x92630000, 0x9263ffff, REGISTRY_APNIC }, // 146.99.0.0 - 146.99.255.255 { 0x92640000, 0x926effff, REGISTRY_RIPENCC }, // 146.100.0.0 - 146.110.255.255 { 0x926f0000, 0x926fffff, REGISTRY_ARIN }, // 146.111.0.0 - 146.111.255.255 { 0x92700000, 0x9270ffff, REGISTRY_RIPENCC }, // 146.112.0.0 - 146.112.255.255 { 0x92710000, 0x9273ffff, REGISTRY_ARIN }, // 146.113.0.0 - 146.115.255.255 { 0x92740000, 0x9274ffff, REGISTRY_APNIC }, // 146.116.0.0 - 146.116.255.255 { 0x92760000, 0x9276ffff, REGISTRY_APNIC }, // 146.118.0.0 - 146.118.255.255 { 0x92770000, 0x9277ffff, REGISTRY_RIPENCC }, // 146.119.0.0 - 146.119.255.255 { 0x92780000, 0x9278ffff, REGISTRY_RIPENCC }, // 146.120.0.0 - 146.120.255.255 { 0x92790000, 0x927bffff, REGISTRY_ARIN }, // 146.121.0.0 - 146.123.255.255 { 0x927c0000, 0x927cffff, REGISTRY_RIPENCC }, // 146.124.0.0 - 146.124.255.255 { 0x927d0000, 0x9284ffff, REGISTRY_ARIN }, // 146.125.0.0 - 146.132.255.255 { 0x92850000, 0x9285ffff, REGISTRY_RIPENCC }, // 146.133.0.0 - 146.133.255.255 { 0x92860000, 0x9286ffff, REGISTRY_LACNIC }, // 146.134.0.0 - 146.134.255.255 { 0x92870000, 0x9287ffff, REGISTRY_ARIN }, // 146.135.0.0 - 146.135.255.255 { 0x92880000, 0x9288ffff, REGISTRY_RIPENCC }, // 146.136.0.0 - 146.136.255.255 { 0x92890000, 0x928bffff, REGISTRY_ARIN }, // 146.137.0.0 - 146.139.255.255 { 0x928c0000, 0x928cffff, REGISTRY_RIPENCC }, // 146.140.0.0 - 146.140.255.255 { 0x928d0000, 0x928dffff, REGISTRY_AFRINIC }, // 146.141.0.0 - 146.141.255.255 { 0x928e0000, 0x928fffff, REGISTRY_ARIN }, // 146.142.0.0 - 146.143.255.255 { 0x92910000, 0x929affff, REGISTRY_ARIN }, // 146.145.0.0 - 146.154.255.255 { 0x929b0000, 0x929bffff, REGISTRY_LACNIC }, // 146.155.0.0 - 146.155.255.255 { 0x929c0000, 0x929dffff, REGISTRY_ARIN }, // 146.156.0.0 - 146.157.255.255 { 0x929e0000, 0x929effff, REGISTRY_RIPENCC }, // 146.158.0.0 - 146.158.255.255 { 0x929f0000, 0x929fffff, REGISTRY_RIPENCC }, // 146.159.0.0 - 146.159.255.255 { 0x92a00000, 0x92a0ffff, REGISTRY_APNIC }, // 146.160.0.0 - 146.160.255.255 { 0x92a10000, 0x92a2ffff, REGISTRY_RIPENCC }, // 146.161.0.0 - 146.162.255.255 { 0x92a30000, 0x92a3ffff, REGISTRY_ARIN }, // 146.163.0.0 - 146.163.255.255 { 0x92a40000, 0x92a4ffff, REGISTRY_LACNIC }, // 146.164.0.0 - 146.164.255.255 { 0x92a50000, 0x92a8ffff, REGISTRY_ARIN }, // 146.165.0.0 - 146.168.255.255 { 0x92a90000, 0x92a9ffff, REGISTRY_RIPENCC }, // 146.169.0.0 - 146.169.255.255 { 0x92aa0000, 0x92aaffff, REGISTRY_ARIN }, // 146.170.0.0 - 146.170.255.255 { 0x92ab0000, 0x92abffff, REGISTRY_APNIC }, // 146.171.0.0 - 146.171.255.255 { 0x92ac0000, 0x92adffff, REGISTRY_RIPENCC }, // 146.172.0.0 - 146.173.255.255 { 0x92ae0000, 0x92aeffff, REGISTRY_ARIN }, // 146.174.0.0 - 146.174.255.255 { 0x92af0000, 0x92b1ffff, REGISTRY_RIPENCC }, // 146.175.0.0 - 146.177.255.255 { 0x92b20000, 0x92b2ffff, REGISTRY_APNIC }, // 146.178.0.0 - 146.178.255.255 { 0x92b30000, 0x92b3ffff, REGISTRY_RIPENCC }, // 146.179.0.0 - 146.179.255.255 { 0x92b40000, 0x92b5ffff, REGISTRY_ARIN }, // 146.180.0.0 - 146.181.255.255 { 0x92b60000, 0x92b6ffff, REGISTRY_AFRINIC }, // 146.182.0.0 - 146.182.255.255 { 0x92b70000, 0x92b8ffff, REGISTRY_ARIN }, // 146.183.0.0 - 146.184.255.255 { 0x92b90000, 0x92b9ffff, REGISTRY_RIPENCC }, // 146.185.0.0 - 146.185.255.255 { 0x92ba0000, 0x92bbffff, REGISTRY_ARIN }, // 146.186.0.0 - 146.187.255.255 { 0x92bc0000, 0x92bcffff, REGISTRY_RIPENCC }, // 146.188.0.0 - 146.188.255.255 { 0x92bd0000, 0x92beffff, REGISTRY_ARIN }, // 146.189.0.0 - 146.190.255.255 { 0x92bf0000, 0x92c2ffff, REGISTRY_RIPENCC }, // 146.191.0.0 - 146.194.255.255 { 0x92c30000, 0x92c47fff, REGISTRY_APNIC }, // 146.195.0.0 - 146.196.127.255 { 0x92c48000, 0x92c4ffff, REGISTRY_AFRINIC }, // 146.196.128.0 - 146.196.255.255 { 0x92c50000, 0x92d1ffff, REGISTRY_ARIN }, // 146.197.0.0 - 146.209.255.255 { 0x92d20000, 0x92d3ffff, REGISTRY_RIPENCC }, // 146.210.0.0 - 146.211.255.255 { 0x92d40000, 0x92d4ffff, REGISTRY_RIPENCC }, // 146.212.0.0 - 146.212.255.255 { 0x92d50000, 0x92d5ffff, REGISTRY_RIPENCC }, // 146.213.0.0 - 146.213.255.255 { 0x92d60000, 0x92d7ffff, REGISTRY_ARIN }, // 146.214.0.0 - 146.215.255.255 { 0x92d80000, 0x92d8ffff, REGISTRY_RIPENCC }, // 146.216.0.0 - 146.216.255.255 { 0x92d90000, 0x92daffff, REGISTRY_ARIN }, // 146.217.0.0 - 146.218.255.255 { 0x92db0000, 0x92dcffff, REGISTRY_RIPENCC }, // 146.219.0.0 - 146.220.255.255 { 0x92dd0000, 0x92ddffff, REGISTRY_APNIC }, // 146.221.0.0 - 146.221.255.255 { 0x92de0000, 0x92dfffff, REGISTRY_ARIN }, // 146.222.0.0 - 146.223.255.255 { 0x92e00000, 0x92e0ffff, REGISTRY_RIPENCC }, // 146.224.0.0 - 146.224.255.255 { 0x92e10000, 0x92e2ffff, REGISTRY_ARIN }, // 146.225.0.0 - 146.226.255.255 { 0x92e30000, 0x92e4ffff, REGISTRY_RIPENCC }, // 146.227.0.0 - 146.228.255.255 { 0x92e50000, 0x92e5ffff, REGISTRY_ARIN }, // 146.229.0.0 - 146.229.255.255 { 0x92e60000, 0x92e8ffff, REGISTRY_AFRINIC }, // 146.230.0.0 - 146.232.255.255 { 0x92e90000, 0x92e9ffff, REGISTRY_ARIN }, // 146.233.0.0 - 146.233.255.255 { 0x92ea0000, 0x92eaffff, REGISTRY_RIPENCC }, // 146.234.0.0 - 146.234.255.255 { 0x92eb0000, 0x92f0ffff, REGISTRY_ARIN }, // 146.235.0.0 - 146.240.255.255 { 0x92f10000, 0x92f1ffff, REGISTRY_RIPENCC }, // 146.241.0.0 - 146.241.255.255 { 0x92f20000, 0x92f6ffff, REGISTRY_ARIN }, // 146.242.0.0 - 146.246.255.255 { 0x92f70000, 0x92f7ffff, REGISTRY_RIPENCC }, // 146.247.0.0 - 146.247.255.255 { 0x92f80000, 0x92f9ffff, REGISTRY_RIPENCC }, // 146.248.0.0 - 146.249.255.255 { 0x92fa0000, 0x92faffff, REGISTRY_ARIN }, // 146.250.0.0 - 146.250.255.255 { 0x92fb0000, 0x92fbffff, REGISTRY_RIPENCC }, // 146.251.0.0 - 146.251.255.255 { 0x92fc0000, 0x92fcffff, REGISTRY_ARIN }, // 146.252.0.0 - 146.252.255.255 { 0x92fd0000, 0x92ff6fff, REGISTRY_RIPENCC }, // 146.253.0.0 - 146.255.111.255 { 0x92ff7800, 0x92ffffff, REGISTRY_RIPENCC }, // 146.255.120.0 - 146.255.255.255 { 0x93000000, 0x9305ffff, REGISTRY_ARIN }, // 147.0.0.0 - 147.5.255.255 { 0x93060000, 0x9306ffff, REGISTRY_APNIC }, // 147.6.0.0 - 147.6.255.255 { 0x93070000, 0x9307ffff, REGISTRY_RIPENCC }, // 147.7.0.0 - 147.7.255.255 { 0x93080000, 0x9308ffff, REGISTRY_APNIC }, // 147.8.0.0 - 147.8.255.255 { 0x93090000, 0x9309ffff, REGISTRY_ARIN }, // 147.9.0.0 - 147.9.255.255 { 0x930a0000, 0x930affff, REGISTRY_APNIC }, // 147.10.0.0 - 147.10.255.255 { 0x930b0000, 0x930bffff, REGISTRY_ARIN }, // 147.11.0.0 - 147.11.255.255 { 0x930c0000, 0x930effff, REGISTRY_RIPENCC }, // 147.12.0.0 - 147.14.255.255 { 0x930f0000, 0x931affff, REGISTRY_ARIN }, // 147.15.0.0 - 147.26.255.255 { 0x931b0000, 0x931dffff, REGISTRY_RIPENCC }, // 147.27.0.0 - 147.29.255.255 { 0x931e0000, 0x931effff, REGISTRY_RIPENCC }, // 147.30.0.0 - 147.30.255.255 { 0x931f0000, 0x931fffff, REGISTRY_ARIN }, // 147.31.0.0 - 147.31.255.255 { 0x93200000, 0x9321ffff, REGISTRY_RIPENCC }, // 147.32.0.0 - 147.33.255.255 { 0x93220000, 0x9328ffff, REGISTRY_ARIN }, // 147.34.0.0 - 147.40.255.255 { 0x93290000, 0x9329ffff, REGISTRY_APNIC }, // 147.41.0.0 - 147.41.255.255 { 0x932a0000, 0x932affff, REGISTRY_ARIN }, // 147.42.0.0 - 147.42.255.255 { 0x932b0000, 0x932bffff, REGISTRY_APNIC }, // 147.43.0.0 - 147.43.255.255 { 0x932c0000, 0x932dffff, REGISTRY_RIPENCC }, // 147.44.0.0 - 147.45.255.255 { 0x932e0000, 0x932fffff, REGISTRY_APNIC }, // 147.46.0.0 - 147.47.255.255 { 0x93300000, 0x9331ffff, REGISTRY_ARIN }, // 147.48.0.0 - 147.49.255.255 { 0x93320000, 0x9332ffff, REGISTRY_APNIC }, // 147.50.0.0 - 147.50.255.255 { 0x93330000, 0x9333ffff, REGISTRY_ARIN }, // 147.51.0.0 - 147.51.255.255 { 0x93340000, 0x9334ffff, REGISTRY_RIPENCC }, // 147.52.0.0 - 147.52.255.255 { 0x93350000, 0x9335ffff, REGISTRY_ARIN }, // 147.53.0.0 - 147.53.255.255 { 0x93360000, 0x9336ffff, REGISTRY_RIPENCC }, // 147.54.0.0 - 147.54.255.255 { 0x93370000, 0x933bffff, REGISTRY_ARIN }, // 147.55.0.0 - 147.59.255.255 { 0x933c0000, 0x933cffff, REGISTRY_RIPENCC }, // 147.60.0.0 - 147.60.255.255 { 0x933d0000, 0x9340ffff, REGISTRY_ARIN }, // 147.61.0.0 - 147.64.255.255 { 0x93410000, 0x9341ffff, REGISTRY_LACNIC }, // 147.65.0.0 - 147.65.255.255 { 0x93420000, 0x9342ffff, REGISTRY_APNIC }, // 147.66.0.0 - 147.66.255.255 { 0x93430000, 0x9344ffff, REGISTRY_RIPENCC }, // 147.67.0.0 - 147.68.255.255 { 0x93450000, 0x9345ffff, REGISTRY_APNIC }, // 147.69.0.0 - 147.69.255.255 { 0x93460000, 0x934affff, REGISTRY_ARIN }, // 147.70.0.0 - 147.74.255.255 { 0x934b0000, 0x934bffff, REGISTRY_RIPENCC }, // 147.75.0.0 - 147.75.255.255 { 0x934c0000, 0x934cffff, REGISTRY_APNIC }, // 147.76.0.0 - 147.76.255.255 { 0x934d0000, 0x934dffff, REGISTRY_RIPENCC }, // 147.77.0.0 - 147.77.255.255 { 0x934f0000, 0x9351ffff, REGISTRY_ARIN }, // 147.79.0.0 - 147.81.255.255 { 0x93520000, 0x9352ffff, REGISTRY_RIPENCC }, // 147.82.0.0 - 147.82.255.255 { 0x93530000, 0x9354ffff, REGISTRY_RIPENCC }, // 147.83.0.0 - 147.84.255.255 { 0x93550000, 0x9355ffff, REGISTRY_ARIN }, // 147.85.0.0 - 147.85.255.255 { 0x93560000, 0x9359ffff, REGISTRY_RIPENCC }, // 147.86.0.0 - 147.89.255.255 { 0x935a0000, 0x935affff, REGISTRY_ARIN }, // 147.90.0.0 - 147.90.255.255 { 0x935b0000, 0x935bffff, REGISTRY_RIPENCC }, // 147.91.0.0 - 147.91.255.255 { 0x935c0000, 0x935c7fff, REGISTRY_ARIN }, // 147.92.0.0 - 147.92.127.255 { 0x935c8000, 0x935cffff, REGISTRY_APNIC }, // 147.92.128.0 - 147.92.255.255 { 0x935d0000, 0x9360ffff, REGISTRY_RIPENCC }, // 147.93.0.0 - 147.96.255.255 { 0x93610000, 0x9361ffff, REGISTRY_ARIN }, // 147.97.0.0 - 147.97.255.255 { 0x93620000, 0x9364ffff, REGISTRY_RIPENCC }, // 147.98.0.0 - 147.100.255.255 { 0x93650000, 0x9365ffff, REGISTRY_ARIN }, // 147.101.0.0 - 147.101.255.255 { 0x93660000, 0x9366ffff, REGISTRY_RIPENCC }, // 147.102.0.0 - 147.102.255.255 { 0x93670000, 0x936cffff, REGISTRY_ARIN }, // 147.103.0.0 - 147.108.255.255 { 0x936d0000, 0x936dffff, REGISTRY_APNIC }, // 147.109.0.0 - 147.109.255.255 { 0x936e0000, 0x936effff, REGISTRY_AFRINIC }, // 147.110.0.0 - 147.110.255.255 { 0x936f0000, 0x9370ffff, REGISTRY_RIPENCC }, // 147.111.0.0 - 147.112.255.255 { 0x93710000, 0x9376ffff, REGISTRY_ARIN }, // 147.113.0.0 - 147.118.255.255 { 0x93770000, 0x9377ffff, REGISTRY_RIPENCC }, // 147.119.0.0 - 147.119.255.255 { 0x93780000, 0x9379ffff, REGISTRY_ARIN }, // 147.120.0.0 - 147.121.255.255 { 0x937a0000, 0x937bffff, REGISTRY_RIPENCC }, // 147.122.0.0 - 147.123.255.255 { 0x937c0000, 0x937cffff, REGISTRY_ARIN }, // 147.124.0.0 - 147.124.255.255 { 0x937d0000, 0x937dffff, REGISTRY_RIPENCC }, // 147.125.0.0 - 147.125.255.255 { 0x937e0000, 0x937effff, REGISTRY_ARIN }, // 147.126.0.0 - 147.126.255.255 { 0x937f0000, 0x937fffff, REGISTRY_RIPENCC }, // 147.127.0.0 - 147.127.255.255 { 0x93800000, 0x9383ffff, REGISTRY_ARIN }, // 147.128.0.0 - 147.131.255.255 { 0x93840000, 0x9384ffff, REGISTRY_APNIC }, // 147.132.0.0 - 147.132.255.255 { 0x93850000, 0x93877fff, REGISTRY_ARIN }, // 147.133.0.0 - 147.135.127.255 { 0x93878000, 0x9387ffff, REGISTRY_RIPENCC }, // 147.135.128.0 - 147.135.255.255 { 0x93880000, 0x938dffff, REGISTRY_ARIN }, // 147.136.0.0 - 147.141.255.255 { 0x938e0000, 0x938fffff, REGISTRY_RIPENCC }, // 147.142.0.0 - 147.143.255.255 { 0x93900000, 0x9392ffff, REGISTRY_ARIN }, // 147.144.0.0 - 147.146.255.255 { 0x93930000, 0x9398ffff, REGISTRY_RIPENCC }, // 147.147.0.0 - 147.152.255.255 { 0x93990000, 0x939bffff, REGISTRY_ARIN }, // 147.153.0.0 - 147.155.255.255 { 0x939c0000, 0x939cffff, REGISTRY_RIPENCC }, // 147.156.0.0 - 147.156.255.255 { 0x939d0000, 0x939effff, REGISTRY_APNIC }, // 147.157.0.0 - 147.158.255.255 { 0x939f0000, 0x93a0ffff, REGISTRY_ARIN }, // 147.159.0.0 - 147.160.255.255 { 0x93a10000, 0x93a3ffff, REGISTRY_RIPENCC }, // 147.161.0.0 - 147.163.255.255 { 0x93a40000, 0x93a6ffff, REGISTRY_ARIN }, // 147.164.0.0 - 147.166.255.255 { 0x93a70000, 0x93a7ffff, REGISTRY_RIPENCC }, // 147.167.0.0 - 147.167.255.255 { 0x93a80000, 0x93aaffff, REGISTRY_ARIN }, // 147.168.0.0 - 147.170.255.255 { 0x93ab0000, 0x93adffff, REGISTRY_RIPENCC }, // 147.171.0.0 - 147.173.255.255 { 0x93ae0000, 0x93aeffff, REGISTRY_ARIN }, // 147.174.0.0 - 147.174.255.255 { 0x93af0000, 0x93afffff, REGISTRY_RIPENCC }, // 147.175.0.0 - 147.175.255.255 { 0x93b00000, 0x93b0ffff, REGISTRY_APNIC }, // 147.176.0.0 - 147.176.255.255 { 0x93b10000, 0x93b3ffff, REGISTRY_ARIN }, // 147.177.0.0 - 147.179.255.255 { 0x93b40000, 0x93b5ffff, REGISTRY_RIPENCC }, // 147.180.0.0 - 147.181.255.255 { 0x93b60000, 0x93b7ffff, REGISTRY_ARIN }, // 147.182.0.0 - 147.183.255.255 { 0x93b80000, 0x93b8ffff, REGISTRY_RIPENCC }, // 147.184.0.0 - 147.184.255.255 { 0x93b90000, 0x93b9ffff, REGISTRY_ARIN }, // 147.185.0.0 - 147.185.255.255 { 0x93ba0000, 0x93baffff, REGISTRY_RIPENCC }, // 147.186.0.0 - 147.186.255.255 { 0x93bb0000, 0x93bbffff, REGISTRY_ARIN }, // 147.187.0.0 - 147.187.255.255 { 0x93bc0000, 0x93bdffff, REGISTRY_RIPENCC }, // 147.188.0.0 - 147.189.255.255 { 0x93be0000, 0x93c0ffff, REGISTRY_ARIN }, // 147.190.0.0 - 147.192.255.255 { 0x93c10000, 0x93c1ffff, REGISTRY_RIPENCC }, // 147.193.0.0 - 147.193.255.255 { 0x93c20000, 0x93c3ffff, REGISTRY_ARIN }, // 147.194.0.0 - 147.195.255.255 { 0x93c40000, 0x93c5ffff, REGISTRY_RIPENCC }, // 147.196.0.0 - 147.197.255.255 { 0x93c60000, 0x93c7ffff, REGISTRY_ARIN }, // 147.198.0.0 - 147.199.255.255 { 0x93c80000, 0x93c8ffff, REGISTRY_APNIC }, // 147.200.0.0 - 147.200.255.255 { 0x93c90000, 0x93c9ffff, REGISTRY_RIPENCC }, // 147.201.0.0 - 147.201.255.255 { 0x93ca0000, 0x93cbffff, REGISTRY_ARIN }, // 147.202.0.0 - 147.203.255.255 { 0x93cc0000, 0x93ccffff, REGISTRY_RIPENCC }, // 147.204.0.0 - 147.204.255.255 { 0x93cd0000, 0x93d0ffff, REGISTRY_ARIN }, // 147.205.0.0 - 147.208.255.255 { 0x93d10000, 0x93d1ffff, REGISTRY_APNIC }, // 147.209.0.0 - 147.209.255.255 { 0x93d20000, 0x93d2ffff, REGISTRY_RIPENCC }, // 147.210.0.0 - 147.210.255.255 { 0x93d30000, 0x93d3ffff, REGISTRY_APNIC }, // 147.211.0.0 - 147.211.255.255 { 0x93d50000, 0x93d7ffff, REGISTRY_RIPENCC }, // 147.213.0.0 - 147.215.255.255 { 0x93d80000, 0x93dbffff, REGISTRY_ARIN }, // 147.216.0.0 - 147.219.255.255 { 0x93dc0000, 0x93dcffff, REGISTRY_RIPENCC }, // 147.220.0.0 - 147.220.255.255 { 0x93dd0000, 0x93e3ffff, REGISTRY_ARIN }, // 147.221.0.0 - 147.227.255.255 { 0x93e40000, 0x93e4ffff, REGISTRY_RIPENCC }, // 147.228.0.0 - 147.228.255.255 { 0x93e50000, 0x93e5ffff, REGISTRY_RIPENCC }, // 147.229.0.0 - 147.229.255.255 { 0x93e60000, 0x93edffff, REGISTRY_RIPENCC }, // 147.230.0.0 - 147.237.255.255 { 0x93ee0000, 0x93f2ffff, REGISTRY_ARIN }, // 147.238.0.0 - 147.242.255.255 { 0x93f30000, 0x93f3ffff, REGISTRY_RIPENCC }, // 147.243.0.0 - 147.243.255.255 { 0x93f40000, 0x93f9ffff, REGISTRY_ARIN }, // 147.244.0.0 - 147.249.255.255 { 0x93fa0000, 0x93fcffff, REGISTRY_RIPENCC }, // 147.250.0.0 - 147.252.255.255 { 0x93fd0000, 0x93ffffff, REGISTRY_ARIN }, // 147.253.0.0 - 147.255.255.255 { 0x94000000, 0x9400ffff, REGISTRY_LACNIC }, // 148.0.0.0 - 148.0.255.255 { 0x94010000, 0x9401ffff, REGISTRY_ARIN }, // 148.1.0.0 - 148.1.255.255 { 0x94020000, 0x9403ffff, REGISTRY_RIPENCC }, // 148.2.0.0 - 148.3.255.255 { 0x94040000, 0x9405ffff, REGISTRY_ARIN }, // 148.4.0.0 - 148.5.255.255 { 0x94060000, 0x9406ffff, REGISTRY_RIPENCC }, // 148.6.0.0 - 148.6.255.255 { 0x94070000, 0x9435ffff, REGISTRY_ARIN }, // 148.7.0.0 - 148.53.255.255 { 0x94360000, 0x9436ffff, REGISTRY_RIPENCC }, // 148.54.0.0 - 148.54.255.255 { 0x94370000, 0x9437ffff, REGISTRY_ARIN }, // 148.55.0.0 - 148.55.255.255 { 0x94380000, 0x9438ffff, REGISTRY_RIPENCC }, // 148.56.0.0 - 148.56.255.255 { 0x94390000, 0x943bffff, REGISTRY_ARIN }, // 148.57.0.0 - 148.59.255.255 { 0x943c0000, 0x943cffff, REGISTRY_RIPENCC }, // 148.60.0.0 - 148.60.255.255 { 0x943d0000, 0x943effff, REGISTRY_ARIN }, // 148.61.0.0 - 148.62.255.255 { 0x943f0000, 0x943fffff, REGISTRY_RIPENCC }, // 148.63.0.0 - 148.63.255.255 { 0x94400000, 0x9441ffff, REGISTRY_ARIN }, // 148.64.0.0 - 148.65.255.255 { 0x94420000, 0x94421fff, REGISTRY_APNIC }, // 148.66.0.0 - 148.66.31.255 { 0x94422000, 0x94423fff, REGISTRY_ARIN }, // 148.66.32.0 - 148.66.63.255 { 0x94424000, 0x94429fff, REGISTRY_APNIC }, // 148.66.64.0 - 148.66.159.255 { 0x9442a000, 0x9442ffff, REGISTRY_ARIN }, // 148.66.160.0 - 148.66.255.255 { 0x94430000, 0x9444ffff, REGISTRY_APNIC }, // 148.67.0.0 - 148.68.255.255 { 0x94450000, 0x9445ffff, REGISTRY_RIPENCC }, // 148.69.0.0 - 148.69.255.255 { 0x94460000, 0x9446ffff, REGISTRY_ARIN }, // 148.70.0.0 - 148.70.255.255 { 0x94470000, 0x9447ffff, REGISTRY_RIPENCC }, // 148.71.0.0 - 148.71.255.255 { 0x94480000, 0x944cdfff, REGISTRY_ARIN }, // 148.72.0.0 - 148.76.223.255 { 0x944ce000, 0x944cffff, REGISTRY_RIPENCC }, // 148.76.224.0 - 148.76.255.255 { 0x944d0000, 0x944effff, REGISTRY_ARIN }, // 148.77.0.0 - 148.78.255.255 { 0x944f0000, 0x944fffff, REGISTRY_RIPENCC }, // 148.79.0.0 - 148.79.255.255 { 0x94500000, 0x9450ffff, REGISTRY_ARIN }, // 148.80.0.0 - 148.80.255.255 { 0x94510000, 0x9451ffff, REGISTRY_RIPENCC }, // 148.81.0.0 - 148.81.255.255 { 0x94520000, 0x9453ffff, REGISTRY_RIPENCC }, // 148.82.0.0 - 148.83.255.255 { 0x94540000, 0x9457ffff, REGISTRY_ARIN }, // 148.84.0.0 - 148.87.255.255 { 0x94580000, 0x9458ffff, REGISTRY_RIPENCC }, // 148.88.0.0 - 148.88.255.255 { 0x94590000, 0x9464ffff, REGISTRY_ARIN }, // 148.89.0.0 - 148.100.255.255 { 0x94650000, 0x9467ffff, REGISTRY_LACNIC }, // 148.101.0.0 - 148.103.255.255 { 0x94680000, 0x946dffff, REGISTRY_ARIN }, // 148.104.0.0 - 148.109.255.255 { 0x946e0000, 0x946effff, REGISTRY_RIPENCC }, // 148.110.0.0 - 148.110.255.255 { 0x946f0000, 0x9475ffff, REGISTRY_ARIN }, // 148.111.0.0 - 148.117.255.255 { 0x94760000, 0x947bffff, REGISTRY_RIPENCC }, // 148.118.0.0 - 148.123.255.255 { 0x947c0000, 0x9486ffff, REGISTRY_ARIN }, // 148.124.0.0 - 148.134.255.255 { 0x94870000, 0x9488ffff, REGISTRY_RIPENCC }, // 148.135.0.0 - 148.136.255.255 { 0x94890000, 0x9489ffff, REGISTRY_ARIN }, // 148.137.0.0 - 148.137.255.255 { 0x948a0000, 0x948affff, REGISTRY_RIPENCC }, // 148.138.0.0 - 148.138.255.255 { 0x948b0000, 0x948bffff, REGISTRY_ARIN }, // 148.139.0.0 - 148.139.255.255 { 0x948c0000, 0x948cffff, REGISTRY_RIPENCC }, // 148.140.0.0 - 148.140.255.255 { 0x948d0000, 0x948effff, REGISTRY_ARIN }, // 148.141.0.0 - 148.142.255.255 { 0x948f0000, 0x948fffff, REGISTRY_RIPENCC }, // 148.143.0.0 - 148.143.255.255 { 0x94900000, 0x9490ffff, REGISTRY_ARIN }, // 148.144.0.0 - 148.144.255.255 { 0x94910000, 0x9491ffff, REGISTRY_APNIC }, // 148.145.0.0 - 148.145.255.255 { 0x94920000, 0x9493ffff, REGISTRY_ARIN }, // 148.146.0.0 - 148.147.255.255 { 0x94940000, 0x9494ffff, REGISTRY_RIPENCC }, // 148.148.0.0 - 148.148.255.255 { 0x94950000, 0x9496ffff, REGISTRY_ARIN }, // 148.149.0.0 - 148.150.255.255 { 0x94970000, 0x9497ffff, REGISTRY_RIPENCC }, // 148.151.0.0 - 148.151.255.255 { 0x94980000, 0x949fffff, REGISTRY_ARIN }, // 148.152.0.0 - 148.159.255.255 { 0x94a00000, 0x94a0ffff, REGISTRY_RIPENCC }, // 148.160.0.0 - 148.160.255.255 { 0x94a10000, 0x94a1ffff, REGISTRY_APNIC }, // 148.161.0.0 - 148.161.255.255 { 0x94a20000, 0x94a8ffff, REGISTRY_ARIN }, // 148.162.0.0 - 148.168.255.255 { 0x94a90000, 0x94a9ffff, REGISTRY_RIPENCC }, // 148.169.0.0 - 148.169.255.255 { 0x94aa0000, 0x94afffff, REGISTRY_ARIN }, // 148.170.0.0 - 148.175.255.255 { 0x94b00000, 0x94b0ffff, REGISTRY_RIPENCC }, // 148.176.0.0 - 148.176.255.255 { 0x94b10000, 0x94b4ffff, REGISTRY_ARIN }, // 148.177.0.0 - 148.180.255.255 { 0x94b50000, 0x94b5ffff, REGISTRY_RIPENCC }, // 148.181.0.0 - 148.181.255.255 { 0x94b60000, 0x94b6ffff, REGISTRY_APNIC }, // 148.182.0.0 - 148.182.255.255 { 0x94b70000, 0x94b8ffff, REGISTRY_ARIN }, // 148.183.0.0 - 148.184.255.255 { 0x94b90000, 0x94b9ffff, REGISTRY_RIPENCC }, // 148.185.0.0 - 148.185.255.255 { 0x94ba0000, 0x94baffff, REGISTRY_ARIN }, // 148.186.0.0 - 148.186.255.255 { 0x94bb0000, 0x94bbffff, REGISTRY_RIPENCC }, // 148.187.0.0 - 148.187.255.255 { 0x94bc0000, 0x94c2ffff, REGISTRY_ARIN }, // 148.188.0.0 - 148.194.255.255 { 0x94c30000, 0x94c3ffff, REGISTRY_APNIC }, // 148.195.0.0 - 148.195.255.255 { 0x94c40000, 0x94c6ffff, REGISTRY_RIPENCC }, // 148.196.0.0 - 148.198.255.255 { 0x94c70000, 0x94c7ffff, REGISTRY_ARIN }, // 148.199.0.0 - 148.199.255.255 { 0x94c80000, 0x94c8ffff, REGISTRY_RIPENCC }, // 148.200.0.0 - 148.200.255.255 { 0x94c90000, 0x94faffff, REGISTRY_LACNIC }, // 148.201.0.0 - 148.250.255.255 { 0x94fb0000, 0x94fc0fff, REGISTRY_RIPENCC }, // 148.251.0.0 - 148.252.15.255 { 0x94fc1000, 0x94fc1fff, REGISTRY_RIPENCC }, // 148.252.16.0 - 148.252.31.255 { 0x94fc2000, 0x94fd7fff, REGISTRY_RIPENCC }, // 148.252.32.0 - 148.253.127.255 { 0x94fd8000, 0x94fd9fff, REGISTRY_RIPENCC }, // 148.253.128.0 - 148.253.159.255 { 0x94fda000, 0x94fdffff, REGISTRY_RIPENCC }, // 148.253.160.0 - 148.253.255.255 { 0x94fe0000, 0x94feffff, REGISTRY_ARIN }, // 148.254.0.0 - 148.254.255.255 { 0x94ff0000, 0x94ffffff, REGISTRY_LACNIC }, // 148.255.0.0 - 148.255.255.255 { 0x95000000, 0x9500ffff, REGISTRY_RIPENCC }, // 149.0.0.0 - 149.0.255.255 { 0x95010000, 0x9502ffff, REGISTRY_ARIN }, // 149.1.0.0 - 149.2.255.255 { 0x95030000, 0x9503ffff, REGISTRY_RIPENCC }, // 149.3.0.0 - 149.3.255.255 { 0x95040000, 0x951affff, REGISTRY_ARIN }, // 149.4.0.0 - 149.26.255.255 { 0x951b0000, 0x951bffff, REGISTRY_RIPENCC }, // 149.27.0.0 - 149.27.255.255 { 0x951c0000, 0x9530ffff, REGISTRY_ARIN }, // 149.28.0.0 - 149.48.255.255 { 0x95310000, 0x9531ffff, REGISTRY_RIPENCC }, // 149.49.0.0 - 149.49.255.255 { 0x95320000, 0x9535ffff, REGISTRY_ARIN }, // 149.50.0.0 - 149.53.255.255 { 0x95360000, 0x9536ffff, REGISTRY_APNIC }, // 149.54.0.0 - 149.54.255.255 { 0x95370000, 0x953affff, REGISTRY_ARIN }, // 149.55.0.0 - 149.58.255.255 { 0x953b0000, 0x953bffff, REGISTRY_RIPENCC }, // 149.59.0.0 - 149.59.255.255 { 0x953c0000, 0x953dffff, REGISTRY_ARIN }, // 149.60.0.0 - 149.61.255.255 { 0x953e0000, 0x953e1fff, REGISTRY_RIPENCC }, // 149.62.0.0 - 149.62.31.255 { 0x953e3000, 0x953effff, REGISTRY_RIPENCC }, // 149.62.48.0 - 149.62.255.255 { 0x953f0000, 0x9550ffff, REGISTRY_ARIN }, // 149.63.0.0 - 149.80.255.255 { 0x95510000, 0x9551ffff, REGISTRY_RIPENCC }, // 149.81.0.0 - 149.81.255.255 { 0x95520000, 0x9559ffff, REGISTRY_ARIN }, // 149.82.0.0 - 149.89.255.255 { 0x955a0000, 0x955affff, REGISTRY_RIPENCC }, // 149.90.0.0 - 149.90.255.255 { 0x955b0000, 0x957dffff, REGISTRY_ARIN }, // 149.91.0.0 - 149.125.255.255 { 0x957e0000, 0x957effff, REGISTRY_RIPENCC }, // 149.126.0.0 - 149.126.255.255 { 0x957f0000, 0x9580ffff, REGISTRY_ARIN }, // 149.127.0.0 - 149.128.255.255 { 0x95810000, 0x9581ffff, REGISTRY_APNIC }, // 149.129.0.0 - 149.129.255.255 { 0x95820000, 0x9583ffff, REGISTRY_ARIN }, // 149.130.0.0 - 149.131.255.255 { 0x95840000, 0x9586ffff, REGISTRY_RIPENCC }, // 149.132.0.0 - 149.134.255.255 { 0x95870000, 0x9587ffff, REGISTRY_APNIC }, // 149.135.0.0 - 149.135.255.255 { 0x95880000, 0x958affff, REGISTRY_ARIN }, // 149.136.0.0 - 149.138.255.255 { 0x958b0000, 0x958bffff, REGISTRY_RIPENCC }, // 149.139.0.0 - 149.139.255.255 { 0x958c0000, 0x958cffff, REGISTRY_RIPENCC }, // 149.140.0.0 - 149.140.255.255 { 0x958d0000, 0x958fffff, REGISTRY_ARIN }, // 149.141.0.0 - 149.143.255.255 { 0x95900000, 0x9590ffff, REGISTRY_APNIC }, // 149.144.0.0 - 149.144.255.255 { 0x95910000, 0x9591ffff, REGISTRY_ARIN }, // 149.145.0.0 - 149.145.255.255 { 0x95920000, 0x9592ffff, REGISTRY_RIPENCC }, // 149.146.0.0 - 149.146.255.255 { 0x95930000, 0x9593ffff, REGISTRY_RIPENCC }, // 149.147.0.0 - 149.147.255.255 { 0x95940000, 0x9594ffff, REGISTRY_RIPENCC }, // 149.148.0.0 - 149.148.255.255 { 0x95950000, 0x9598ffff, REGISTRY_ARIN }, // 149.149.0.0 - 149.152.255.255 { 0x95990000, 0x9599ffff, REGISTRY_RIPENCC }, // 149.153.0.0 - 149.153.255.255 { 0x959a0000, 0x959affff, REGISTRY_RIPENCC }, // 149.154.0.0 - 149.154.255.255 { 0x959b0000, 0x959dffff, REGISTRY_RIPENCC }, // 149.155.0.0 - 149.157.255.255 { 0x959e0000, 0x95a6ffff, REGISTRY_ARIN }, // 149.158.0.0 - 149.166.255.255 { 0x95a70000, 0x95a7ffff, REGISTRY_APNIC }, // 149.167.0.0 - 149.167.255.255 { 0x95a80000, 0x95a9ffff, REGISTRY_ARIN }, // 149.168.0.0 - 149.169.255.255 { 0x95aa0000, 0x95aaffff, REGISTRY_RIPENCC }, // 149.170.0.0 - 149.170.255.255 { 0x95ab0000, 0x95abffff, REGISTRY_APNIC }, // 149.171.0.0 - 149.171.255.255 { 0x95ac0000, 0x95acffff, REGISTRY_RIPENCC }, // 149.172.0.0 - 149.172.255.255 { 0x95ad0000, 0x95afffff, REGISTRY_ARIN }, // 149.173.0.0 - 149.175.255.255 { 0x95b00000, 0x95b0ffff, REGISTRY_APNIC }, // 149.176.0.0 - 149.176.255.255 { 0x95b10000, 0x95c5ffff, REGISTRY_RIPENCC }, // 149.177.0.0 - 149.197.255.255 { 0x95c60000, 0x95c7ffff, REGISTRY_ARIN }, // 149.198.0.0 - 149.199.255.255 { 0x95c80000, 0x95c8ffff, REGISTRY_RIPENCC }, // 149.200.0.0 - 149.200.255.255 { 0x95c90000, 0x95c9ffff, REGISTRY_RIPENCC }, // 149.201.0.0 - 149.201.255.255 { 0x95ca0000, 0x95caffff, REGISTRY_RIPENCC }, // 149.202.0.0 - 149.202.255.255 { 0x95cb0000, 0x95d1ffff, REGISTRY_RIPENCC }, // 149.203.0.0 - 149.209.255.255 { 0x95d20000, 0x95d2ffff, REGISTRY_RIPENCC }, // 149.210.0.0 - 149.210.255.255 { 0x95d30000, 0x95d3ffff, REGISTRY_RIPENCC }, // 149.211.0.0 - 149.211.255.255 { 0x95d40000, 0x95d4ffff, REGISTRY_RIPENCC }, // 149.212.0.0 - 149.212.255.255 { 0x95d50000, 0x95e9ffff, REGISTRY_RIPENCC }, // 149.213.0.0 - 149.233.255.255 { 0x95ea0000, 0x95ea07ff, REGISTRY_ARIN }, // 149.234.0.0 - 149.234.7.255 { 0x95ea0800, 0x95eabfff, REGISTRY_RIPENCC }, // 149.234.8.0 - 149.234.191.255 { 0x95eac000, 0x95eaffff, REGISTRY_ARIN }, // 149.234.192.0 - 149.234.255.255 { 0x95eb0000, 0x95f0ffff, REGISTRY_RIPENCC }, // 149.235.0.0 - 149.240.255.255 { 0x95f10000, 0x95f1ffff, REGISTRY_RIPENCC }, // 149.241.0.0 - 149.241.255.255 { 0x95f20000, 0x95f5ffff, REGISTRY_RIPENCC }, // 149.242.0.0 - 149.245.255.255 { 0x95f60000, 0x95f6ffff, REGISTRY_RIPENCC }, // 149.246.0.0 - 149.246.255.255 { 0x95f70000, 0x95f7ffff, REGISTRY_RIPENCC }, // 149.247.0.0 - 149.247.255.255 { 0x95f80000, 0x95f8ffff, REGISTRY_ARIN }, // 149.248.0.0 - 149.248.255.255 { 0x95f90000, 0x95fbffff, REGISTRY_RIPENCC }, // 149.249.0.0 - 149.251.255.255 { 0x95fc0000, 0x95fdffff, REGISTRY_ARIN }, // 149.252.0.0 - 149.253.255.255 { 0x95fe0000, 0x95feffff, REGISTRY_RIPENCC }, // 149.254.0.0 - 149.254.255.255 { 0x95ff0000, 0x95ff0fff, REGISTRY_RIPENCC }, // 149.255.0.0 - 149.255.15.255 { 0x95ff1800, 0x95ffffff, REGISTRY_RIPENCC }, // 149.255.24.0 - 149.255.255.255 { 0x96000000, 0x9665ffff, REGISTRY_APNIC }, // 150.0.0.0 - 150.101.255.255 { 0x96660000, 0x9669ffff, REGISTRY_ARIN }, // 150.102.0.0 - 150.105.255.255 { 0x966a0000, 0x966affff, REGISTRY_RIPENCC }, // 150.106.0.0 - 150.106.255.255 { 0x966b0000, 0x966bc7ff, REGISTRY_APNIC }, // 150.107.0.0 - 150.107.199.255 { 0x966bc800, 0x966bcbff, REGISTRY_RIPENCC }, // 150.107.200.0 - 150.107.203.255 { 0x966bcc00, 0x966bffff, REGISTRY_APNIC }, // 150.107.204.0 - 150.107.255.255 { 0x966c0000, 0x966fffff, REGISTRY_ARIN }, // 150.108.0.0 - 150.111.255.255 { 0x96700000, 0x9670ffff, REGISTRY_RIPENCC }, // 150.112.0.0 - 150.112.255.255 { 0x96710000, 0x9672ffff, REGISTRY_ARIN }, // 150.113.0.0 - 150.114.255.255 { 0x96730000, 0x9675ffff, REGISTRY_APNIC }, // 150.115.0.0 - 150.117.255.255 { 0x96760000, 0x9678ffff, REGISTRY_ARIN }, // 150.118.0.0 - 150.120.255.255 { 0x96790000, 0x967affff, REGISTRY_APNIC }, // 150.121.0.0 - 150.122.255.255 { 0x967b0000, 0x967fffff, REGISTRY_ARIN }, // 150.123.0.0 - 150.127.255.255 { 0x96800000, 0x9680ffff, REGISTRY_RIPENCC }, // 150.128.0.0 - 150.128.255.255 { 0x96810000, 0x968107ff, REGISTRY_APNIC }, // 150.129.0.0 - 150.129.7.255 { 0x96810800, 0x96810bff, REGISTRY_RIPENCC }, // 150.129.8.0 - 150.129.11.255 { 0x96810c00, 0x9681ffff, REGISTRY_APNIC }, // 150.129.12.0 - 150.129.255.255 { 0x96820000, 0x9683ffff, REGISTRY_ARIN }, // 150.130.0.0 - 150.131.255.255 { 0x96840000, 0x9684ffff, REGISTRY_RIPENCC }, // 150.132.0.0 - 150.132.255.255 { 0x96850000, 0x9689ffff, REGISTRY_ARIN }, // 150.133.0.0 - 150.137.255.255 { 0x968a0000, 0x968bffff, REGISTRY_APNIC }, // 150.138.0.0 - 150.139.255.255 { 0x968c0000, 0x968cffff, REGISTRY_RIPENCC }, // 150.140.0.0 - 150.140.255.255 { 0x968d0000, 0x9690ffff, REGISTRY_ARIN }, // 150.141.0.0 - 150.144.255.255 { 0x96910000, 0x9692ffff, REGISTRY_RIPENCC }, // 150.145.0.0 - 150.146.255.255 { 0x96930000, 0x9693ffff, REGISTRY_APNIC }, // 150.147.0.0 - 150.147.255.255 { 0x96940000, 0x9695ffff, REGISTRY_ARIN }, // 150.148.0.0 - 150.149.255.255 { 0x96960000, 0x9697ffff, REGISTRY_APNIC }, // 150.150.0.0 - 150.151.255.255 { 0x96980000, 0x969dffff, REGISTRY_ARIN }, // 150.152.0.0 - 150.157.255.255 { 0x969e0000, 0x969effff, REGISTRY_RIPENCC }, // 150.158.0.0 - 150.158.255.255 { 0x969f0000, 0x96a0ffff, REGISTRY_ARIN }, // 150.159.0.0 - 150.160.255.255 { 0x96a10000, 0x96a5ffff, REGISTRY_LACNIC }, // 150.161.0.0 - 150.165.255.255 { 0x96a60000, 0x96acffff, REGISTRY_ARIN }, // 150.166.0.0 - 150.172.255.255 { 0x96ad0000, 0x96adffff, REGISTRY_APNIC }, // 150.173.0.0 - 150.173.255.255 { 0x96ae0000, 0x96aeffff, REGISTRY_ARIN }, // 150.174.0.0 - 150.174.255.255 { 0x96af0000, 0x96afffff, REGISTRY_RIPENCC }, // 150.175.0.0 - 150.175.255.255 { 0x96b00000, 0x96b1ffff, REGISTRY_ARIN }, // 150.176.0.0 - 150.177.255.255 { 0x96b20000, 0x96b2ffff, REGISTRY_RIPENCC }, // 150.178.0.0 - 150.178.255.255 { 0x96b30000, 0x96b6ffff, REGISTRY_ARIN }, // 150.179.0.0 - 150.182.255.255 { 0x96b70000, 0x96b7ffff, REGISTRY_APNIC }, // 150.183.0.0 - 150.183.255.255 { 0x96b80000, 0x96b8ffff, REGISTRY_ARIN }, // 150.184.0.0 - 150.184.255.255 { 0x96b90000, 0x96bdffff, REGISTRY_LACNIC }, // 150.185.0.0 - 150.189.255.255 { 0x96be0000, 0x96beffff, REGISTRY_ARIN }, // 150.190.0.0 - 150.190.255.255 { 0x96bf0000, 0x96bfffff, REGISTRY_APNIC }, // 150.191.0.0 - 150.191.255.255 { 0x96c00000, 0x96c4ffff, REGISTRY_ARIN }, // 150.192.0.0 - 150.196.255.255 { 0x96c50000, 0x96c5ffff, REGISTRY_APNIC }, // 150.197.0.0 - 150.197.255.255 { 0x96c60000, 0x96caffff, REGISTRY_ARIN }, // 150.198.0.0 - 150.202.255.255 { 0x96cb0000, 0x96cbffff, REGISTRY_APNIC }, // 150.203.0.0 - 150.203.255.255 { 0x96cc0000, 0x96cdffff, REGISTRY_RIPENCC }, // 150.204.0.0 - 150.205.255.255 { 0x96ce0000, 0x96cfffff, REGISTRY_APNIC }, // 150.206.0.0 - 150.207.255.255 { 0x96d00000, 0x96d4ffff, REGISTRY_ARIN }, // 150.208.0.0 - 150.212.255.255 { 0x96d50000, 0x96d6ffff, REGISTRY_RIPENCC }, // 150.213.0.0 - 150.214.255.255 { 0x96d70000, 0x96d8ffff, REGISTRY_ARIN }, // 150.215.0.0 - 150.216.255.255 { 0x96d90000, 0x96d9ffff, REGISTRY_RIPENCC }, // 150.217.0.0 - 150.217.255.255 { 0x96da0000, 0x96deffff, REGISTRY_ARIN }, // 150.218.0.0 - 150.222.255.255 { 0x96df0000, 0x96dfffff, REGISTRY_APNIC }, // 150.223.0.0 - 150.223.255.255 { 0x96e00000, 0x96e2ffff, REGISTRY_ARIN }, // 150.224.0.0 - 150.226.255.255 { 0x96e30000, 0x96e3ffff, REGISTRY_RIPENCC }, // 150.227.0.0 - 150.227.255.255 { 0x96e40000, 0x96e4ffff, REGISTRY_ARIN }, // 150.228.0.0 - 150.228.255.255 { 0x96e50000, 0x96e5ffff, REGISTRY_APNIC }, // 150.229.0.0 - 150.229.255.255 { 0x96e60000, 0x96ebffff, REGISTRY_ARIN }, // 150.230.0.0 - 150.235.255.255 { 0x96ec0000, 0x96edffff, REGISTRY_RIPENCC }, // 150.236.0.0 - 150.237.255.255 { 0x96ee0000, 0x96f0ffff, REGISTRY_ARIN }, // 150.238.0.0 - 150.240.255.255 { 0x96f10000, 0x96f1ffff, REGISTRY_RIPENCC }, // 150.241.0.0 - 150.241.255.255 { 0x96f20000, 0x96f2dbff, REGISTRY_APNIC }, // 150.242.0.0 - 150.242.219.255 { 0x96f2dc00, 0x96f2dfff, REGISTRY_ARIN }, // 150.242.220.0 - 150.242.223.255 { 0x96f2e000, 0x96f2ffff, REGISTRY_APNIC }, // 150.242.224.0 - 150.242.255.255 { 0x96f30000, 0x96f3ffff, REGISTRY_ARIN }, // 150.243.0.0 - 150.243.255.255 { 0x96f40000, 0x96f4ffff, REGISTRY_RIPENCC }, // 150.244.0.0 - 150.244.255.255 { 0x96f50000, 0x96f5ffff, REGISTRY_ARIN }, // 150.245.0.0 - 150.245.255.255 { 0x96f60000, 0x96f6ffff, REGISTRY_APNIC }, // 150.246.0.0 - 150.246.255.255 { 0x96f70000, 0x96f8ffff, REGISTRY_ARIN }, // 150.247.0.0 - 150.248.255.255 { 0x96f90000, 0x96f9ffff, REGISTRY_APNIC }, // 150.249.0.0 - 150.249.255.255 { 0x96fa0000, 0x96faffff, REGISTRY_ARIN }, // 150.250.0.0 - 150.250.255.255 { 0x96fb0000, 0x96fbffff, REGISTRY_RIPENCC }, // 150.251.0.0 - 150.251.255.255 { 0x96fc0000, 0x96fdffff, REGISTRY_ARIN }, // 150.252.0.0 - 150.253.255.255 { 0x96fe0000, 0x96feffff, REGISTRY_RIPENCC }, // 150.254.0.0 - 150.254.255.255 { 0x96ff0000, 0x96ffffff, REGISTRY_APNIC }, // 150.255.0.0 - 150.255.255.255 { 0x97000000, 0x9702ffff, REGISTRY_RIPENCC }, // 151.0.0.0 - 151.2.255.255 { 0x97030000, 0x9762ffff, REGISTRY_RIPENCC }, // 151.3.0.0 - 151.98.255.255 { 0x97630000, 0x9763ffff, REGISTRY_RIPENCC }, // 151.99.0.0 - 151.99.255.255 { 0x97640000, 0x9764ffff, REGISTRY_RIPENCC }, // 151.100.0.0 - 151.100.255.255 { 0x97650000, 0x9772ffff, REGISTRY_ARIN }, // 151.101.0.0 - 151.114.255.255 { 0x97730000, 0x9773ffff, REGISTRY_RIPENCC }, // 151.115.0.0 - 151.115.255.255 { 0x97740000, 0x9777ffff, REGISTRY_ARIN }, // 151.116.0.0 - 151.119.255.255 { 0x97780000, 0x9778ffff, REGISTRY_RIPENCC }, // 151.120.0.0 - 151.120.255.255 { 0x97790000, 0x977effff, REGISTRY_ARIN }, // 151.121.0.0 - 151.126.255.255 { 0x977f0000, 0x977fffff, REGISTRY_RIPENCC }, // 151.127.0.0 - 151.127.255.255 { 0x97800000, 0x9780ffff, REGISTRY_ARIN }, // 151.128.0.0 - 151.128.255.255 { 0x97810000, 0x9781ffff, REGISTRY_RIPENCC }, // 151.129.0.0 - 151.129.255.255 { 0x97820000, 0x9782ffff, REGISTRY_APNIC }, // 151.130.0.0 - 151.130.255.255 { 0x97830000, 0x9784ffff, REGISTRY_ARIN }, // 151.131.0.0 - 151.132.255.255 { 0x97850000, 0x9785ffff, REGISTRY_RIPENCC }, // 151.133.0.0 - 151.133.255.255 { 0x97860000, 0x9786ffff, REGISTRY_ARIN }, // 151.134.0.0 - 151.134.255.255 { 0x97870000, 0x9787ffff, REGISTRY_RIPENCC }, // 151.135.0.0 - 151.135.255.255 { 0x97880000, 0x9788ffff, REGISTRY_RIPENCC }, // 151.136.0.0 - 151.136.255.255 { 0x97890000, 0x979bffff, REGISTRY_ARIN }, // 151.137.0.0 - 151.155.255.255 { 0x979c0000, 0x979dffff, REGISTRY_RIPENCC }, // 151.156.0.0 - 151.157.255.255 { 0x979f0000, 0x97a9ffff, REGISTRY_ARIN }, // 151.159.0.0 - 151.169.255.255 { 0x97aa0000, 0x97aaffff, REGISTRY_RIPENCC }, // 151.170.0.0 - 151.170.255.255 { 0x97ab0000, 0x97abffff, REGISTRY_ARIN }, // 151.171.0.0 - 151.171.255.255 { 0x97ad0000, 0x97aeffff, REGISTRY_ARIN }, // 151.173.0.0 - 151.174.255.255 { 0x97af0000, 0x97b0ffff, REGISTRY_RIPENCC }, // 151.175.0.0 - 151.176.255.255 { 0x97b10000, 0x97b1ffff, REGISTRY_RIPENCC }, // 151.177.0.0 - 151.177.255.255 { 0x97b20000, 0x97b2ffff, REGISTRY_APNIC }, // 151.178.0.0 - 151.178.255.255 { 0x97b30000, 0x97b3ffff, REGISTRY_ARIN }, // 151.179.0.0 - 151.179.255.255 { 0x97b40000, 0x97b4ffff, REGISTRY_RIPENCC }, // 151.180.0.0 - 151.180.255.255 { 0x97b50000, 0x97b5ffff, REGISTRY_ARIN }, // 151.181.0.0 - 151.181.255.255 { 0x97b60000, 0x97b8ffff, REGISTRY_RIPENCC }, // 151.182.0.0 - 151.184.255.255 { 0x97b90000, 0x97baffff, REGISTRY_ARIN }, // 151.185.0.0 - 151.186.255.255 { 0x97bb0000, 0x97bbffff, REGISTRY_RIPENCC }, // 151.187.0.0 - 151.187.255.255 { 0x97bc0000, 0x97bcffff, REGISTRY_ARIN }, // 151.188.0.0 - 151.188.255.255 { 0x97bd0000, 0x97bdffff, REGISTRY_RIPENCC }, // 151.189.0.0 - 151.189.255.255 { 0x97be0000, 0x97d2ffff, REGISTRY_ARIN }, // 151.190.0.0 - 151.210.255.255 { 0x97d30000, 0x97d4ffff, REGISTRY_RIPENCC }, // 151.211.0.0 - 151.212.255.255 { 0x97d50000, 0x97d7ffff, REGISTRY_ARIN }, // 151.213.0.0 - 151.215.255.255 { 0x97e00000, 0x97ffffff, REGISTRY_RIPENCC }, // 151.224.0.0 - 151.255.255.255 { 0x98000000, 0x9800ffff, REGISTRY_LACNIC }, // 152.0.0.0 - 152.0.255.255 { 0x98010000, 0x9833ffff, REGISTRY_ARIN }, // 152.1.0.0 - 152.51.255.255 { 0x98340000, 0x9834ffff, REGISTRY_APNIC }, // 152.52.0.0 - 152.52.255.255 { 0x98350000, 0x9837ffff, REGISTRY_ARIN }, // 152.53.0.0 - 152.55.255.255 { 0x98380000, 0x983bffff, REGISTRY_APNIC }, // 152.56.0.0 - 152.59.255.255 { 0x983c0000, 0x9841ffff, REGISTRY_ARIN }, // 152.60.0.0 - 152.65.255.255 { 0x98420000, 0x9842ffff, REGISTRY_RIPENCC }, // 152.66.0.0 - 152.66.255.255 { 0x98430000, 0x9846ffff, REGISTRY_ARIN }, // 152.67.0.0 - 152.70.255.255 { 0x98470000, 0x9847ffff, REGISTRY_RIPENCC }, // 152.71.0.0 - 152.71.255.255 { 0x98480000, 0x9848ffff, REGISTRY_ARIN }, // 152.72.0.0 - 152.72.255.255 { 0x98490000, 0x9849ffff, REGISTRY_RIPENCC }, // 152.73.0.0 - 152.73.255.255 { 0x984a0000, 0x984affff, REGISTRY_LACNIC }, // 152.74.0.0 - 152.74.255.255 { 0x984b0000, 0x984bffff, REGISTRY_ARIN }, // 152.75.0.0 - 152.75.255.255 { 0x984c0000, 0x984cffff, REGISTRY_APNIC }, // 152.76.0.0 - 152.76.255.255 { 0x984d0000, 0x984effff, REGISTRY_RIPENCC }, // 152.77.0.0 - 152.78.255.255 { 0x984f0000, 0x9850ffff, REGISTRY_ARIN }, // 152.79.0.0 - 152.80.255.255 { 0x98510000, 0x9851ffff, REGISTRY_RIPENCC }, // 152.81.0.0 - 152.81.255.255 { 0x98520000, 0x9852ffff, REGISTRY_ARIN }, // 152.82.0.0 - 152.82.255.255 { 0x98530000, 0x9853ffff, REGISTRY_APNIC }, // 152.83.0.0 - 152.83.255.255 { 0x98540000, 0x9854ffff, REGISTRY_LACNIC }, // 152.84.0.0 - 152.84.255.255 { 0x98550000, 0x9857ffff, REGISTRY_ARIN }, // 152.85.0.0 - 152.87.255.255 { 0x98580000, 0x9858ffff, REGISTRY_RIPENCC }, // 152.88.0.0 - 152.88.255.255 { 0x985a0000, 0x985affff, REGISTRY_RIPENCC }, // 152.90.0.0 - 152.90.255.255 { 0x985b0000, 0x985bffff, REGISTRY_APNIC }, // 152.91.0.0 - 152.91.255.255 { 0x985c0000, 0x985cffff, REGISTRY_LACNIC }, // 152.92.0.0 - 152.92.255.255 { 0x985d0000, 0x9860ffff, REGISTRY_RIPENCC }, // 152.93.0.0 - 152.96.255.255 { 0x98610000, 0x9861ffff, REGISTRY_ARIN }, // 152.97.0.0 - 152.97.255.255 { 0x98620000, 0x9863ffff, REGISTRY_APNIC }, // 152.98.0.0 - 152.99.255.255 { 0x98640000, 0x9864ffff, REGISTRY_ARIN }, // 152.100.0.0 - 152.100.255.255 { 0x98650000, 0x9868ffff, REGISTRY_APNIC }, // 152.101.0.0 - 152.104.255.255 { 0x98690000, 0x9869ffff, REGISTRY_RIPENCC }, // 152.105.0.0 - 152.105.255.255 { 0x986a0000, 0x9870ffff, REGISTRY_AFRINIC }, // 152.106.0.0 - 152.112.255.255 { 0x98710000, 0x9871ffff, REGISTRY_ARIN }, // 152.113.0.0 - 152.113.255.255 { 0x98720000, 0x9873ffff, REGISTRY_RIPENCC }, // 152.114.0.0 - 152.115.255.255 { 0x98740000, 0x9875ffff, REGISTRY_ARIN }, // 152.116.0.0 - 152.117.255.255 { 0x98760000, 0x9876ffff, REGISTRY_APNIC }, // 152.118.0.0 - 152.118.255.255 { 0x98770000, 0x9885ffff, REGISTRY_ARIN }, // 152.119.0.0 - 152.133.255.255 { 0x98860000, 0x9886ffff, REGISTRY_RIPENCC }, // 152.134.0.0 - 152.134.255.255 { 0x98870000, 0x988affff, REGISTRY_ARIN }, // 152.135.0.0 - 152.138.255.255 { 0x988b0000, 0x988bffff, REGISTRY_LACNIC }, // 152.139.0.0 - 152.139.255.255 { 0x988c0000, 0x988effff, REGISTRY_ARIN }, // 152.140.0.0 - 152.142.255.255 { 0x988f0000, 0x988fffff, REGISTRY_RIPENCC }, // 152.143.0.0 - 152.143.255.255 { 0x98900000, 0x9892ffff, REGISTRY_ARIN }, // 152.144.0.0 - 152.146.255.255 { 0x98930000, 0x9893ffff, REGISTRY_APNIC }, // 152.147.0.0 - 152.147.255.255 { 0x98940000, 0x9894ffff, REGISTRY_ARIN }, // 152.148.0.0 - 152.148.255.255 { 0x98950000, 0x9895ffff, REGISTRY_APNIC }, // 152.149.0.0 - 152.149.255.255 { 0x98960000, 0x9896ffff, REGISTRY_RIPENCC }, // 152.150.0.0 - 152.150.255.255 { 0x98970000, 0x9897ffff, REGISTRY_ARIN }, // 152.151.0.0 - 152.151.255.255 { 0x98980000, 0x9898ffff, REGISTRY_RIPENCC }, // 152.152.0.0 - 152.152.255.255 { 0x989a0000, 0x989bffff, REGISTRY_ARIN }, // 152.154.0.0 - 152.155.255.255 { 0x989c0000, 0x989cffff, REGISTRY_LACNIC }, // 152.156.0.0 - 152.156.255.255 { 0x989d0000, 0x98a5ffff, REGISTRY_ARIN }, // 152.157.0.0 - 152.165.255.255 { 0x98a60000, 0x98afffff, REGISTRY_LACNIC }, // 152.166.0.0 - 152.175.255.255 { 0x98b00000, 0x98c7ffff, REGISTRY_ARIN }, // 152.176.0.0 - 152.199.255.255 { 0x98c80000, 0x98cfffff, REGISTRY_LACNIC }, // 152.200.0.0 - 152.207.255.255 { 0x98d00000, 0x98e1ffff, REGISTRY_ARIN }, // 152.208.0.0 - 152.225.255.255 { 0x98e20000, 0x98e2ffff, REGISTRY_APNIC }, // 152.226.0.0 - 152.226.255.255 { 0x98e30000, 0x98e5ffff, REGISTRY_ARIN }, // 152.227.0.0 - 152.229.255.255 { 0x98e60000, 0x98ffffff, REGISTRY_LACNIC }, // 152.230.0.0 - 152.255.255.255 { 0x99000000, 0x9900ffff, REGISTRY_APNIC }, // 153.0.0.0 - 153.0.255.255 { 0x99010000, 0x9901ffff, REGISTRY_RIPENCC }, // 153.1.0.0 - 153.1.255.255 { 0x99020000, 0x9902ffff, REGISTRY_ARIN }, // 153.2.0.0 - 153.2.255.255 { 0x99030000, 0x9903ffff, REGISTRY_APNIC }, // 153.3.0.0 - 153.3.255.255 { 0x99040000, 0x9904ffff, REGISTRY_ARIN }, // 153.4.0.0 - 153.4.255.255 { 0x99050000, 0x9905ffff, REGISTRY_RIPENCC }, // 153.5.0.0 - 153.5.255.255 { 0x99060000, 0x990effff, REGISTRY_ARIN }, // 153.6.0.0 - 153.14.255.255 { 0x990f0000, 0x990fffff, REGISTRY_RIPENCC }, // 153.15.0.0 - 153.15.255.255 { 0x99100000, 0x9910ffff, REGISTRY_ARIN }, // 153.16.0.0 - 153.16.255.255 { 0x99110000, 0x9911ffff, REGISTRY_RIPENCC }, // 153.17.0.0 - 153.17.255.255 { 0x99120000, 0x9912ffff, REGISTRY_ARIN }, // 153.18.0.0 - 153.18.255.255 { 0x99130000, 0x9913ffff, REGISTRY_RIPENCC }, // 153.19.0.0 - 153.19.255.255 { 0x99140000, 0x9914ffff, REGISTRY_APNIC }, // 153.20.0.0 - 153.20.255.255 { 0x99150000, 0x9921ffff, REGISTRY_ARIN }, // 153.21.0.0 - 153.33.255.255 { 0x99220000, 0x9925ffff, REGISTRY_APNIC }, // 153.34.0.0 - 153.37.255.255 { 0x99260000, 0x9957ffff, REGISTRY_ARIN }, // 153.38.0.0 - 153.87.255.255 { 0x99580000, 0x9958ffff, REGISTRY_RIPENCC }, // 153.88.0.0 - 153.88.255.255 { 0x99590000, 0x995bffff, REGISTRY_ARIN }, // 153.89.0.0 - 153.91.255.255 { 0x995c0000, 0x995c47ff, REGISTRY_RIPENCC }, // 153.92.0.0 - 153.92.71.255 { 0x995c4800, 0x995c4fff, REGISTRY_RIPENCC }, // 153.92.72.0 - 153.92.79.255 { 0x995c5000, 0x995c6fff, REGISTRY_RIPENCC }, // 153.92.80.0 - 153.92.111.255 { 0x995c7000, 0x995c7bff, REGISTRY_RIPENCC }, // 153.92.112.0 - 153.92.123.255 { 0x995c7c00, 0x995e0fff, REGISTRY_RIPENCC }, // 153.92.124.0 - 153.94.15.255 { 0x995e1000, 0x995effff, REGISTRY_RIPENCC }, // 153.94.16.0 - 153.94.255.255 { 0x995f0000, 0x9962ffff, REGISTRY_RIPENCC }, // 153.95.0.0 - 153.98.255.255 { 0x99630000, 0x9963ffff, REGISTRY_APNIC }, // 153.99.0.0 - 153.99.255.255 { 0x99640000, 0x9964ffff, REGISTRY_RIPENCC }, // 153.100.0.0 - 153.100.255.255 { 0x99650000, 0x9965ffff, REGISTRY_APNIC }, // 153.101.0.0 - 153.101.255.255 { 0x99660000, 0x996affff, REGISTRY_ARIN }, // 153.102.0.0 - 153.106.255.255 { 0x996b0000, 0x996bffff, REGISTRY_APNIC }, // 153.107.0.0 - 153.107.255.255 { 0x996c0000, 0x996effff, REGISTRY_RIPENCC }, // 153.108.0.0 - 153.110.255.255 { 0x996f0000, 0x996fffff, REGISTRY_APNIC }, // 153.111.0.0 - 153.111.255.255 { 0x99700000, 0x9970ffff, REGISTRY_RIPENCC }, // 153.112.0.0 - 153.112.255.255 { 0x99710000, 0x9975ffff, REGISTRY_ARIN }, // 153.113.0.0 - 153.117.255.255 { 0x99760000, 0x99ffffff, REGISTRY_APNIC }, // 153.118.0.0 - 153.255.255.255 { 0x9a000000, 0x9a008fff, REGISTRY_AFRINIC }, // 154.0.0.0 - 154.0.143.255 { 0x9a009800, 0x9a00ffff, REGISTRY_AFRINIC }, // 154.0.152.0 - 154.0.255.255 { 0x9a010000, 0x9a07ffff, REGISTRY_ARIN }, // 154.1.0.0 - 154.7.255.255 { 0x9a080000, 0x9a08ffff, REGISTRY_RIPENCC }, // 154.8.0.0 - 154.8.255.255 { 0x9a090000, 0x9a09ffff, REGISTRY_ARIN }, // 154.9.0.0 - 154.9.255.255 { 0x9a0a0000, 0x9a0affff, REGISTRY_APNIC }, // 154.10.0.0 - 154.10.255.255 { 0x9a0b0000, 0x9a0dffff, REGISTRY_ARIN }, // 154.11.0.0 - 154.13.255.255 { 0x9a0e0000, 0x9a0fffff, REGISTRY_RIPENCC }, // 154.14.0.0 - 154.15.255.255 { 0x9a100000, 0x9a10ffff, REGISTRY_AFRINIC }, // 154.16.0.0 - 154.16.255.255 { 0x9a110000, 0x9a1fffff, REGISTRY_ARIN }, // 154.17.0.0 - 154.31.255.255 { 0x9a200000, 0x9a20ffff, REGISTRY_RIPENCC }, // 154.32.0.0 - 154.32.255.255 { 0x9a210000, 0x9a22ffff, REGISTRY_APNIC }, // 154.33.0.0 - 154.34.255.255 { 0x9a230000, 0x9a40ffff, REGISTRY_ARIN }, // 154.35.0.0 - 154.64.255.255 { 0x9a410000, 0x9a410fff, REGISTRY_AFRINIC }, // 154.65.0.0 - 154.65.15.255 { 0x9a412000, 0x9a4137ff, REGISTRY_AFRINIC }, // 154.65.32.0 - 154.65.55.255 { 0x9a413c00, 0x9a425fff, REGISTRY_AFRINIC }, // 154.65.60.0 - 154.66.95.255 { 0x9a426400, 0x9a42d3ff, REGISTRY_AFRINIC }, // 154.66.100.0 - 154.66.211.255 { 0x9a42d800, 0x9a47ffff, REGISTRY_AFRINIC }, // 154.66.216.0 - 154.71.255.255 { 0x9a480400, 0x9a737fff, REGISTRY_AFRINIC }, // 154.72.4.0 - 154.115.127.255 { 0x9a740000, 0x9a777fff, REGISTRY_AFRINIC }, // 154.116.0.0 - 154.119.127.255 { 0x9a779000, 0x9b00ffff, REGISTRY_AFRINIC }, // 154.119.144.0 - 155.0.255.255 { 0x9b010000, 0x9b03ffff, REGISTRY_ARIN }, // 155.1.0.0 - 155.3.255.255 { 0x9b040000, 0x9b04ffff, REGISTRY_RIPENCC }, // 155.4.0.0 - 155.4.255.255 { 0x9b050000, 0x9b0affff, REGISTRY_ARIN }, // 155.5.0.0 - 155.10.255.255 { 0x9b0b0000, 0x9b0cffff, REGISTRY_AFRINIC }, // 155.11.0.0 - 155.12.255.255 { 0x9b0d0000, 0x9b1fffff, REGISTRY_ARIN }, // 155.13.0.0 - 155.31.255.255 { 0x9b200000, 0x9b20ffff, REGISTRY_APNIC }, // 155.32.0.0 - 155.32.255.255 { 0x9b210000, 0x9b2300ff, REGISTRY_ARIN }, // 155.33.0.0 - 155.35.0.255 { 0x9b230100, 0x9b2301ff, REGISTRY_APNIC }, // 155.35.1.0 - 155.35.1.255 { 0x9b230200, 0x9b2321ff, REGISTRY_ARIN }, // 155.35.2.0 - 155.35.33.255 { 0x9b232200, 0x9b2323ff, REGISTRY_APNIC }, // 155.35.34.0 - 155.35.35.255 { 0x9b232400, 0x9b232dff, REGISTRY_ARIN }, // 155.35.36.0 - 155.35.45.255 { 0x9b232e00, 0x9b232fff, REGISTRY_APNIC }, // 155.35.46.0 - 155.35.47.255 { 0x9b233000, 0x9b23e7ff, REGISTRY_ARIN }, // 155.35.48.0 - 155.35.231.255 { 0x9b23e800, 0x9b23e8ff, REGISTRY_APNIC }, // 155.35.232.0 - 155.35.232.255 { 0x9b23e900, 0x9b2cffff, REGISTRY_ARIN }, // 155.35.233.0 - 155.44.255.255 { 0x9b2d0000, 0x9b2dffff, REGISTRY_RIPENCC }, // 155.45.0.0 - 155.45.255.255 { 0x9b2e0000, 0x9b35ffff, REGISTRY_ARIN }, // 155.46.0.0 - 155.53.255.255 { 0x9b360000, 0x9b38ffff, REGISTRY_RIPENCC }, // 155.54.0.0 - 155.56.255.255 { 0x9b390000, 0x9b3affff, REGISTRY_ARIN }, // 155.57.0.0 - 155.58.255.255 { 0x9b3b0000, 0x9b3cffff, REGISTRY_APNIC }, // 155.59.0.0 - 155.60.255.255 { 0x9b3d0000, 0x9b41ffff, REGISTRY_ARIN }, // 155.61.0.0 - 155.65.255.255 { 0x9b420000, 0x9b42ffff, REGISTRY_RIPENCC }, // 155.66.0.0 - 155.66.255.255 { 0x9b430000, 0x9b44ffff, REGISTRY_ARIN }, // 155.67.0.0 - 155.68.255.255 { 0x9b450000, 0x9b45ffff, REGISTRY_APNIC }, // 155.69.0.0 - 155.69.255.255 { 0x9b460000, 0x9b46ffff, REGISTRY_ARIN }, // 155.70.0.0 - 155.70.255.255 { 0x9b470000, 0x9b47ffff, REGISTRY_APNIC }, // 155.71.0.0 - 155.71.255.255 { 0x9b480000, 0x9b48ffff, REGISTRY_ARIN }, // 155.72.0.0 - 155.72.255.255 { 0x9b490000, 0x9b49ffff, REGISTRY_RIPENCC }, // 155.73.0.0 - 155.73.255.255 { 0x9b4a0000, 0x9b58ffff, REGISTRY_ARIN }, // 155.74.0.0 - 155.88.255.255 { 0x9b590000, 0x9b59ffff, REGISTRY_AFRINIC }, // 155.89.0.0 - 155.89.255.255 { 0x9b5a0000, 0x9b5cffff, REGISTRY_ARIN }, // 155.90.0.0 - 155.92.255.255 { 0x9b5d0000, 0x9b5dffff, REGISTRY_AFRINIC }, // 155.93.0.0 - 155.93.255.255 { 0x9b5e0000, 0x9b68ffff, REGISTRY_ARIN }, // 155.94.0.0 - 155.104.255.255 { 0x9b690000, 0x9b69ffff, REGISTRY_RIPENCC }, // 155.105.0.0 - 155.105.255.255 { 0x9b6a0000, 0x9b82ffff, REGISTRY_ARIN }, // 155.106.0.0 - 155.130.255.255 { 0x9b830000, 0x9b85ffff, REGISTRY_RIPENCC }, // 155.131.0.0 - 155.133.255.255 { 0x9b860000, 0x9b87ffff, REGISTRY_ARIN }, // 155.134.0.0 - 155.135.255.255 { 0x9b880000, 0x9b89ffff, REGISTRY_RIPENCC }, // 155.136.0.0 - 155.137.255.255 { 0x9b8a0000, 0x9b8bffff, REGISTRY_ARIN }, // 155.138.0.0 - 155.139.255.255 { 0x9b8c0000, 0x9b8cffff, REGISTRY_RIPENCC }, // 155.140.0.0 - 155.140.255.255 { 0x9b8d0000, 0x9b8effff, REGISTRY_ARIN }, // 155.141.0.0 - 155.142.255.255 { 0x9b8f0000, 0x9b90ffff, REGISTRY_APNIC }, // 155.143.0.0 - 155.144.255.255 { 0x9b910000, 0x9b91ffff, REGISTRY_RIPENCC }, // 155.145.0.0 - 155.145.255.255 { 0x9b920000, 0x9b9dffff, REGISTRY_ARIN }, // 155.146.0.0 - 155.157.255.255 { 0x9b9e0000, 0x9b9effff, REGISTRY_RIPENCC }, // 155.158.0.0 - 155.158.255.255 { 0x9b9f0000, 0x9b9fffff, REGISTRY_AFRINIC }, // 155.159.0.0 - 155.159.255.255 { 0x9ba00000, 0x9ba0ffff, REGISTRY_APNIC }, // 155.160.0.0 - 155.160.255.255 { 0x9ba10000, 0x9bb8ffff, REGISTRY_ARIN }, // 155.161.0.0 - 155.184.255.255 { 0x9bb90000, 0x9bb9ffff, REGISTRY_RIPENCC }, // 155.185.0.0 - 155.185.255.255 { 0x9bba0000, 0x9bbaffff, REGISTRY_ARIN }, // 155.186.0.0 - 155.186.255.255 { 0x9bbb0000, 0x9bbbffff, REGISTRY_APNIC }, // 155.187.0.0 - 155.187.255.255 { 0x9bbc0000, 0x9bbfffff, REGISTRY_ARIN }, // 155.188.0.0 - 155.191.255.255 { 0x9bc00000, 0x9bc0ffff, REGISTRY_RIPENCC }, // 155.192.0.0 - 155.192.255.255 { 0x9bc10000, 0x9bc3ffff, REGISTRY_ARIN }, // 155.193.0.0 - 155.195.255.255 { 0x9bc40000, 0x9bc4ffff, REGISTRY_AFRINIC }, // 155.196.0.0 - 155.196.255.255 { 0x9bc50000, 0x9bc5ffff, REGISTRY_ARIN }, // 155.197.0.0 - 155.197.255.255 { 0x9bc60000, 0x9bc6ffff, REGISTRY_RIPENCC }, // 155.198.0.0 - 155.198.255.255 { 0x9bc70000, 0x9bc9ffff, REGISTRY_ARIN }, // 155.199.0.0 - 155.201.255.255 { 0x9bca0000, 0x9bcaffff, REGISTRY_RIPENCC }, // 155.202.0.0 - 155.202.255.255 { 0x9bcb0000, 0x9bcbffff, REGISTRY_ARIN }, // 155.203.0.0 - 155.203.255.255 { 0x9bcc0000, 0x9bccffff, REGISTRY_RIPENCC }, // 155.204.0.0 - 155.204.255.255 { 0x9bcd0000, 0x9bcdffff, REGISTRY_APNIC }, // 155.205.0.0 - 155.205.255.255 { 0x9bce0000, 0x9bceffff, REGISTRY_ARIN }, // 155.206.0.0 - 155.206.255.255 { 0x9bcf0000, 0x9bcfffff, REGISTRY_RIPENCC }, // 155.207.0.0 - 155.207.255.255 { 0x9bd00000, 0x9bd0ffff, REGISTRY_ARIN }, // 155.208.0.0 - 155.208.255.255 { 0x9bd10000, 0x9bd2ffff, REGISTRY_RIPENCC }, // 155.209.0.0 - 155.210.255.255 { 0x9bd30000, 0x9bd3ffff, REGISTRY_LACNIC }, // 155.211.0.0 - 155.211.255.255 { 0x9bd40000, 0x9bdeffff, REGISTRY_ARIN }, // 155.212.0.0 - 155.222.255.255 { 0x9bdf0000, 0x9bdfffff, REGISTRY_RIPENCC }, // 155.223.0.0 - 155.223.255.255 { 0x9be00000, 0x9be2ffff, REGISTRY_ARIN }, // 155.224.0.0 - 155.226.255.255 { 0x9be30000, 0x9be4ffff, REGISTRY_RIPENCC }, // 155.227.0.0 - 155.228.255.255 { 0x9be50000, 0x9be5ffff, REGISTRY_ARIN }, // 155.229.0.0 - 155.229.255.255 { 0x9be60000, 0x9be6ffff, REGISTRY_APNIC }, // 155.230.0.0 - 155.230.255.255 { 0x9be70000, 0x9be7ffff, REGISTRY_RIPENCC }, // 155.231.0.0 - 155.231.255.255 { 0x9be80000, 0x9bf0ffff, REGISTRY_AFRINIC }, // 155.232.0.0 - 155.240.255.255 { 0x9bf10000, 0x9bf4ffff, REGISTRY_ARIN }, // 155.241.0.0 - 155.244.255.255 { 0x9bf50000, 0x9bf5ffff, REGISTRY_RIPENCC }, // 155.245.0.0 - 155.245.255.255 { 0x9bf60000, 0x9bf8ffff, REGISTRY_ARIN }, // 155.246.0.0 - 155.248.255.255 { 0x9bf90000, 0x9bfaffff, REGISTRY_RIPENCC }, // 155.249.0.0 - 155.250.255.255 { 0x9bfb0000, 0x9bfbffff, REGISTRY_AFRINIC }, // 155.251.0.0 - 155.251.255.255 { 0x9bfc0000, 0x9bfcffff, REGISTRY_ARIN }, // 155.252.0.0 - 155.252.255.255 { 0x9bfd0000, 0x9bfdffff, REGISTRY_RIPENCC }, // 155.253.0.0 - 155.253.255.255 { 0x9bfe0000, 0x9bfe1fff, REGISTRY_ARIN }, // 155.254.0.0 - 155.254.31.255 { 0x9bfe2000, 0x9bfe3fff, REGISTRY_RIPENCC }, // 155.254.32.0 - 155.254.63.255 { 0x9bfe4000, 0x9bfeffff, REGISTRY_ARIN }, // 155.254.64.0 - 155.254.255.255 { 0x9bff0000, 0x9bffffff, REGISTRY_AFRINIC }, // 155.255.0.0 - 155.255.255.255 { 0x9c010000, 0x9c07ffff, REGISTRY_ARIN }, // 156.1.0.0 - 156.7.255.255 { 0x9c080000, 0x9c08ffff, REGISTRY_AFRINIC }, // 156.8.0.0 - 156.8.255.255 { 0x9c090000, 0x9c09ffff, REGISTRY_ARIN }, // 156.9.0.0 - 156.9.255.255 { 0x9c0a0000, 0x9c0affff, REGISTRY_RIPENCC }, // 156.10.0.0 - 156.10.255.255 { 0x9c0b0000, 0x9c0cffff, REGISTRY_ARIN }, // 156.11.0.0 - 156.12.255.255 { 0x9c0d0000, 0x9c0dffff, REGISTRY_APNIC }, // 156.13.0.0 - 156.13.255.255 { 0x9c0e0000, 0x9c0effff, REGISTRY_RIPENCC }, // 156.14.0.0 - 156.14.255.255 { 0x9c0f0000, 0x9c0fffff, REGISTRY_ARIN }, // 156.15.0.0 - 156.15.255.255 { 0x9c110000, 0x9c12ffff, REGISTRY_RIPENCC }, // 156.17.0.0 - 156.18.255.255 { 0x9c130000, 0x9c15ffff, REGISTRY_ARIN }, // 156.19.0.0 - 156.21.255.255 { 0x9c160000, 0x9c16ffff, REGISTRY_APNIC }, // 156.22.0.0 - 156.22.255.255 { 0x9c170000, 0x9c18ffff, REGISTRY_ARIN }, // 156.23.0.0 - 156.24.255.255 { 0x9c190000, 0x9c19ffff, REGISTRY_RIPENCC }, // 156.25.0.0 - 156.25.255.255 { 0x9c1a0000, 0x9c1bffff, REGISTRY_ARIN }, // 156.26.0.0 - 156.27.255.255 { 0x9c1c0000, 0x9c1cffff, REGISTRY_RIPENCC }, // 156.28.0.0 - 156.28.255.255 { 0x9c1d0000, 0x9c1effff, REGISTRY_ARIN }, // 156.29.0.0 - 156.30.255.255 { 0x9c1f0000, 0x9c1fffff, REGISTRY_APNIC }, // 156.31.0.0 - 156.31.255.255 { 0x9c200000, 0x9c22ffff, REGISTRY_ARIN }, // 156.32.0.0 - 156.34.255.255 { 0x9c230000, 0x9c23ffff, REGISTRY_RIPENCC }, // 156.35.0.0 - 156.35.255.255 { 0x9c240000, 0x9c25ffff, REGISTRY_ARIN }, // 156.36.0.0 - 156.37.255.255 { 0x9c260000, 0x9c2603ff, REGISTRY_AFRINIC }, // 156.38.0.0 - 156.38.3.255 { 0x9c260800, 0x9c260fff, REGISTRY_AFRINIC }, // 156.38.8.0 - 156.38.15.255 { 0x9c268000, 0x9c26ffff, REGISTRY_AFRINIC }, // 156.38.128.0 - 156.38.255.255 { 0x9c270000, 0x9c2affff, REGISTRY_ARIN }, // 156.39.0.0 - 156.42.255.255 { 0x9c2b0000, 0x9c2bffff, REGISTRY_RIPENCC }, // 156.43.0.0 - 156.43.255.255 { 0x9c2c0000, 0x9c2fffff, REGISTRY_ARIN }, // 156.44.0.0 - 156.47.255.255 { 0x9c300000, 0x9c31ffff, REGISTRY_RIPENCC }, // 156.48.0.0 - 156.49.255.255 { 0x9c320000, 0x9c32ffff, REGISTRY_APNIC }, // 156.50.0.0 - 156.50.255.255 { 0x9c330000, 0x9c34ffff, REGISTRY_RIPENCC }, // 156.51.0.0 - 156.52.255.255 { 0x9c350000, 0x9c35ffff, REGISTRY_ARIN }, // 156.53.0.0 - 156.53.255.255 { 0x9c360000, 0x9c36ffff, REGISTRY_RIPENCC }, // 156.54.0.0 - 156.54.255.255 { 0x9c370000, 0x9c39ffff, REGISTRY_ARIN }, // 156.55.0.0 - 156.57.255.255 { 0x9c3a0000, 0x9c3affff, REGISTRY_RIPENCC }, // 156.58.0.0 - 156.58.255.255 { 0x9c3b0000, 0x9c3bffff, REGISTRY_APNIC }, // 156.59.0.0 - 156.59.255.255 { 0x9c3c0000, 0x9c3cffff, REGISTRY_ARIN }, // 156.60.0.0 - 156.60.255.255 { 0x9c3d0000, 0x9c3dffff, REGISTRY_RIPENCC }, // 156.61.0.0 - 156.61.255.255 { 0x9c3e0000, 0x9c3effff, REGISTRY_APNIC }, // 156.62.0.0 - 156.62.255.255 { 0x9c3f0000, 0x9c42ffff, REGISTRY_ARIN }, // 156.63.0.0 - 156.66.255.255 { 0x9c430000, 0x9c4307ff, REGISTRY_RIPENCC }, // 156.67.0.0 - 156.67.7.255 { 0x9c430800, 0x9c430bff, REGISTRY_RIPENCC }, // 156.67.8.0 - 156.67.11.255 { 0x9c430c00, 0x9c43c7ff, REGISTRY_RIPENCC }, // 156.67.12.0 - 156.67.199.255 { 0x9c43c800, 0x9c43cfff, REGISTRY_RIPENCC }, // 156.67.200.0 - 156.67.207.255 { 0x9c43d000, 0x9c43ffff, REGISTRY_RIPENCC }, // 156.67.208.0 - 156.67.255.255 { 0x9c440000, 0x9c44ffff, REGISTRY_ARIN }, // 156.68.0.0 - 156.68.255.255 { 0x9c450000, 0x9c45ffff, REGISTRY_APNIC }, // 156.69.0.0 - 156.69.255.255 { 0x9c460000, 0x9c52ffff, REGISTRY_ARIN }, // 156.70.0.0 - 156.82.255.255 { 0x9c530000, 0x9c53ffff, REGISTRY_RIPENCC }, // 156.83.0.0 - 156.83.255.255 { 0x9c540000, 0x9c60ffff, REGISTRY_ARIN }, // 156.84.0.0 - 156.96.255.255 { 0x9c610000, 0x9c61ffff, REGISTRY_LACNIC }, // 156.97.0.0 - 156.97.255.255 { 0x9c620000, 0x9c69ffff, REGISTRY_ARIN }, // 156.98.0.0 - 156.105.255.255 { 0x9c6a0000, 0x9c6affff, REGISTRY_RIPENCC }, // 156.106.0.0 - 156.106.255.255 { 0x9c6b0000, 0x9c71ffff, REGISTRY_ARIN }, // 156.107.0.0 - 156.113.255.255 { 0x9c720000, 0x9c74ffff, REGISTRY_RIPENCC }, // 156.114.0.0 - 156.116.255.255 { 0x9c750000, 0x9c75ffff, REGISTRY_ARIN }, // 156.117.0.0 - 156.117.255.255 { 0x9c760000, 0x9c76ffff, REGISTRY_RIPENCC }, // 156.118.0.0 - 156.118.255.255 { 0x9c770000, 0x9c84ffff, REGISTRY_ARIN }, // 156.119.0.0 - 156.132.255.255 { 0x9c850000, 0x9c85ffff, REGISTRY_RIPENCC }, // 156.133.0.0 - 156.133.255.255 { 0x9c860000, 0x9c86ffff, REGISTRY_ARIN }, // 156.134.0.0 - 156.134.255.255 { 0x9c870000, 0x9c87ffff, REGISTRY_RIPENCC }, // 156.135.0.0 - 156.135.255.255 { 0x9c880000, 0x9c92ffff, REGISTRY_ARIN }, // 156.136.0.0 - 156.146.255.255 { 0x9c930000, 0x9c93ffff, REGISTRY_APNIC }, // 156.147.0.0 - 156.147.255.255 { 0x9c940000, 0x9c94ffff, REGISTRY_RIPENCC }, // 156.148.0.0 - 156.148.255.255 { 0x9c950000, 0x9c95ffff, REGISTRY_APNIC }, // 156.149.0.0 - 156.149.255.255 { 0x9c960000, 0x9c96ffff, REGISTRY_RIPENCC }, // 156.150.0.0 - 156.150.255.255 { 0x9c970000, 0x9c9affff, REGISTRY_ARIN }, // 156.151.0.0 - 156.154.255.255 { 0x9c9b0000, 0x9cffffff, REGISTRY_AFRINIC }, // 156.155.0.0 - 156.255.255.255 { 0x9d000000, 0x9d04ffff, REGISTRY_APNIC }, // 157.0.0.0 - 157.4.255.255 { 0x9d060000, 0x9d09ffff, REGISTRY_APNIC }, // 157.6.0.0 - 157.9.255.255 { 0x9d0b0000, 0x9d0effff, REGISTRY_APNIC }, // 157.11.0.0 - 157.14.255.255 { 0x9d100000, 0x9d13ffff, REGISTRY_APNIC }, // 157.16.0.0 - 157.19.255.255 { 0x9d150000, 0x9d16ffff, REGISTRY_ARIN }, // 157.21.0.0 - 157.22.255.255 { 0x9d170000, 0x9d1dffff, REGISTRY_RIPENCC }, // 157.23.0.0 - 157.29.255.255 { 0x9d1e0000, 0x9d1fffff, REGISTRY_ARIN }, // 157.30.0.0 - 157.31.255.255 { 0x9d200000, 0x9d33ffff, REGISTRY_APNIC }, // 157.32.0.0 - 157.51.255.255 { 0x9d340000, 0x9d3cffff, REGISTRY_ARIN }, // 157.52.0.0 - 157.60.255.255 { 0x9d3d0000, 0x9d3dffff, REGISTRY_APNIC }, // 157.61.0.0 - 157.61.255.255 { 0x9d3e0000, 0x9d3effff, REGISTRY_ARIN }, // 157.62.0.0 - 157.62.255.255 { 0x9d3f0000, 0x9d41ffff, REGISTRY_APNIC }, // 157.63.0.0 - 157.65.255.255 { 0x9d430000, 0x9d50ffff, REGISTRY_APNIC }, // 157.67.0.0 - 157.80.255.255 { 0x9d520000, 0x9d52ffff, REGISTRY_APNIC }, // 157.82.0.0 - 157.82.255.255 { 0x9d530000, 0x9d54ffff, REGISTRY_RIPENCC }, // 157.83.0.0 - 157.84.255.255 { 0x9d550000, 0x9d55ffff, REGISTRY_APNIC }, // 157.85.0.0 - 157.85.255.255 { 0x9d560000, 0x9d56ffff, REGISTRY_LACNIC }, // 157.86.0.0 - 157.86.255.255 { 0x9d570000, 0x9d57ffff, REGISTRY_ARIN }, // 157.87.0.0 - 157.87.255.255 { 0x9d580000, 0x9d58ffff, REGISTRY_RIPENCC }, // 157.88.0.0 - 157.88.255.255 { 0x9d590000, 0x9d5bffff, REGISTRY_ARIN }, // 157.89.0.0 - 157.91.255.255 { 0x9d5c0000, 0x9d5cffff, REGISTRY_LACNIC }, // 157.92.0.0 - 157.92.255.255 { 0x9d5d0000, 0x9d5dffff, REGISTRY_ARIN }, // 157.93.0.0 - 157.93.255.255 { 0x9d5e0000, 0x9d5effff, REGISTRY_RIPENCC }, // 157.94.0.0 - 157.94.255.255 { 0x9d5f0000, 0x9d5fffff, REGISTRY_ARIN }, // 157.95.0.0 - 157.95.255.255 { 0x9d600000, 0x9d6157ff, REGISTRY_RIPENCC }, // 157.96.0.0 - 157.97.87.255 { 0x9d615800, 0x9d615fff, REGISTRY_RIPENCC }, // 157.97.88.0 - 157.97.95.255 { 0x9d616000, 0x9d61ffff, REGISTRY_RIPENCC }, // 157.97.96.0 - 157.97.255.255 { 0x9d620000, 0x9d62ffff, REGISTRY_ARIN }, // 157.98.0.0 - 157.98.255.255 { 0x9d630000, 0x9d63ffff, REGISTRY_RIPENCC }, // 157.99.0.0 - 157.99.255.255 { 0x9d640000, 0x9d64ffff, REGISTRY_LACNIC }, // 157.100.0.0 - 157.100.255.255 { 0x9d650000, 0x9d78bfff, REGISTRY_APNIC }, // 157.101.0.0 - 157.120.191.255 { 0x9d78c000, 0x9d78dfff, REGISTRY_ARIN }, // 157.120.192.0 - 157.120.223.255 { 0x9d78e000, 0x9d78ffff, REGISTRY_APNIC }, // 157.120.224.0 - 157.120.255.255 { 0x9d790000, 0x9d79ffff, REGISTRY_ARIN }, // 157.121.0.0 - 157.121.255.255 { 0x9d7a0000, 0x9d7affff, REGISTRY_APNIC }, // 157.122.0.0 - 157.122.255.255 { 0x9d7b0000, 0x9d7bffff, REGISTRY_ARIN }, // 157.123.0.0 - 157.123.255.255 { 0x9d7c0000, 0x9d7dffff, REGISTRY_RIPENCC }, // 157.124.0.0 - 157.125.255.255 { 0x9d7e0000, 0x9d7fffff, REGISTRY_ARIN }, // 157.126.0.0 - 157.127.255.255 { 0x9d800000, 0x9d80ffff, REGISTRY_APNIC }, // 157.128.0.0 - 157.128.255.255 { 0x9d810000, 0x9d81ffff, REGISTRY_RIPENCC }, // 157.129.0.0 - 157.129.255.255 { 0x9d820000, 0x9d87ffff, REGISTRY_ARIN }, // 157.130.0.0 - 157.135.255.255 { 0x9d880000, 0x9d88ffff, REGISTRY_RIPENCC }, // 157.136.0.0 - 157.136.255.255 { 0x9d890000, 0x9d89ffff, REGISTRY_ARIN }, // 157.137.0.0 - 157.137.255.255 { 0x9d8a0000, 0x9d8affff, REGISTRY_RIPENCC }, // 157.138.0.0 - 157.138.255.255 { 0x9d8b0000, 0x9d8bffff, REGISTRY_ARIN }, // 157.139.0.0 - 157.139.255.255 { 0x9d8c0000, 0x9d8cffff, REGISTRY_RIPENCC }, // 157.140.0.0 - 157.140.255.255 { 0x9d8d0000, 0x9d8fffff, REGISTRY_ARIN }, // 157.141.0.0 - 157.143.255.255 { 0x9d900000, 0x9d90ffff, REGISTRY_RIPENCC }, // 157.144.0.0 - 157.144.255.255 { 0x9d910000, 0x9d93ffff, REGISTRY_ARIN }, // 157.145.0.0 - 157.147.255.255 { 0x9d940000, 0x9d94ffff, REGISTRY_APNIC }, // 157.148.0.0 - 157.148.255.255 { 0x9d950000, 0x9d9affff, REGISTRY_ARIN }, // 157.149.0.0 - 157.154.255.255 { 0x9d9b0000, 0x9d9cffff, REGISTRY_APNIC }, // 157.155.0.0 - 157.156.255.255 { 0x9d9d0000, 0x9d9fffff, REGISTRY_RIPENCC }, // 157.157.0.0 - 157.159.255.255 { 0x9da00000, 0x9da0ffff, REGISTRY_ARIN }, // 157.160.0.0 - 157.160.255.255 { 0x9da10000, 0x9da2ffff, REGISTRY_RIPENCC }, // 157.161.0.0 - 157.162.255.255 { 0x9da30000, 0x9da3ffff, REGISTRY_RIPENCC }, // 157.163.0.0 - 157.163.255.255 { 0x9da40000, 0x9da4ffff, REGISTRY_RIPENCC }, // 157.164.0.0 - 157.164.255.255 { 0x9da50000, 0x9da6ffff, REGISTRY_ARIN }, // 157.165.0.0 - 157.166.255.255 { 0x9da70000, 0x9da9ffff, REGISTRY_RIPENCC }, // 157.167.0.0 - 157.169.255.255 { 0x9daa0000, 0x9daaffff, REGISTRY_ARIN }, // 157.170.0.0 - 157.170.255.255 { 0x9dab0000, 0x9dadffff, REGISTRY_RIPENCC }, // 157.171.0.0 - 157.173.255.255 { 0x9dae0000, 0x9db0ffff, REGISTRY_ARIN }, // 157.174.0.0 - 157.176.255.255 { 0x9db10000, 0x9db1ffff, REGISTRY_RIPENCC }, // 157.177.0.0 - 157.177.255.255 { 0x9db20000, 0x9db2ffff, REGISTRY_ARIN }, // 157.178.0.0 - 157.178.255.255 { 0x9db30000, 0x9db3ffff, REGISTRY_APNIC }, // 157.179.0.0 - 157.179.255.255 { 0x9db40000, 0x9db5ffff, REGISTRY_RIPENCC }, // 157.180.0.0 - 157.181.255.255 { 0x9db60000, 0x9db9ffff, REGISTRY_ARIN }, // 157.182.0.0 - 157.185.255.255 { 0x9dba0000, 0x9dbaffff, REGISTRY_RIPENCC }, // 157.186.0.0 - 157.186.255.255 { 0x9dbb0000, 0x9dbdffff, REGISTRY_ARIN }, // 157.187.0.0 - 157.189.255.255 { 0x9dbe0000, 0x9dbeffff, REGISTRY_RIPENCC }, // 157.190.0.0 - 157.190.255.255 { 0x9dbf0000, 0x9dbfffff, REGISTRY_ARIN }, // 157.191.0.0 - 157.191.255.255 { 0x9dc00000, 0x9dc0ffff, REGISTRY_APNIC }, // 157.192.0.0 - 157.192.255.255 { 0x9dc10000, 0x9dc1ffff, REGISTRY_RIPENCC }, // 157.193.0.0 - 157.193.255.255 { 0x9dc20000, 0x9dc4ffff, REGISTRY_ARIN }, // 157.194.0.0 - 157.196.255.255 { 0x9dc50000, 0x9dc5ffff, REGISTRY_APNIC }, // 157.197.0.0 - 157.197.255.255 { 0x9dc60000, 0x9dc7ffff, REGISTRY_ARIN }, // 157.198.0.0 - 157.199.255.255 { 0x9dc80000, 0x9dc8ffff, REGISTRY_RIPENCC }, // 157.200.0.0 - 157.200.255.255 { 0x9dc90000, 0x9dcaffff, REGISTRY_ARIN }, // 157.201.0.0 - 157.202.255.255 { 0x9dcb0000, 0x9dcbffff, REGISTRY_RIPENCC }, // 157.203.0.0 - 157.203.255.255 { 0x9dcc0000, 0x9dccffff, REGISTRY_ARIN }, // 157.204.0.0 - 157.204.255.255 { 0x9dcd0000, 0x9dcdffff, REGISTRY_APNIC }, // 157.205.0.0 - 157.205.255.255 { 0x9dce0000, 0x9dd2ffff, REGISTRY_ARIN }, // 157.206.0.0 - 157.210.255.255 { 0x9dd30000, 0x9dd3ffff, REGISTRY_APNIC }, // 157.211.0.0 - 157.211.255.255 { 0x9dd40000, 0x9de2ffff, REGISTRY_ARIN }, // 157.212.0.0 - 157.226.255.255 { 0x9de30000, 0x9de3ffff, REGISTRY_APNIC }, // 157.227.0.0 - 157.227.255.255 { 0x9de40000, 0x9de4ffff, REGISTRY_RIPENCC }, // 157.228.0.0 - 157.228.255.255 { 0x9de50000, 0x9debffff, REGISTRY_ARIN }, // 157.229.0.0 - 157.235.255.255 { 0x9dec0000, 0x9dedffff, REGISTRY_RIPENCC }, // 157.236.0.0 - 157.237.255.255 { 0x9dee0000, 0x9df2ffff, REGISTRY_ARIN }, // 157.238.0.0 - 157.242.255.255 { 0x9df30000, 0x9df3ffff, REGISTRY_RIPENCC }, // 157.243.0.0 - 157.243.255.255 { 0x9df40000, 0x9df6ffff, REGISTRY_ARIN }, // 157.244.0.0 - 157.246.255.255 { 0x9df70000, 0x9df7ffff, REGISTRY_RIPENCC }, // 157.247.0.0 - 157.247.255.255 { 0x9df80000, 0x9df8ffff, REGISTRY_ARIN }, // 157.248.0.0 - 157.248.255.255 { 0x9df90000, 0x9df9ffff, REGISTRY_RIPENCC }, // 157.249.0.0 - 157.249.255.255 { 0x9dfa0000, 0x9dfa3fff, REGISTRY_ARIN }, // 157.250.0.0 - 157.250.63.255 { 0x9dfa4000, 0x9dfaffff, REGISTRY_APNIC }, // 157.250.64.0 - 157.250.255.255 { 0x9dfb0000, 0x9dfcffff, REGISTRY_ARIN }, // 157.251.0.0 - 157.252.255.255 { 0x9dfd0000, 0x9dfdffff, REGISTRY_LACNIC }, // 157.253.0.0 - 157.253.255.255 { 0x9dfe0000, 0x9dfeffff, REGISTRY_ARIN }, // 157.254.0.0 - 157.254.255.255 { 0x9dff0000, 0x9dffffff, REGISTRY_APNIC }, // 157.255.0.0 - 157.255.255.255 { 0x9e000000, 0x9e23ffff, REGISTRY_ARIN }, // 158.0.0.0 - 158.35.255.255 { 0x9e240000, 0x9e27ffff, REGISTRY_RIPENCC }, // 158.36.0.0 - 158.39.255.255 { 0x9e280000, 0x9e28ffff, REGISTRY_APNIC }, // 158.40.0.0 - 158.40.255.255 { 0x9e290000, 0x9e2bffff, REGISTRY_RIPENCC }, // 158.41.0.0 - 158.43.255.255 { 0x9e2c0000, 0x9e2dffff, REGISTRY_APNIC }, // 158.44.0.0 - 158.45.255.255 { 0x9e2e0000, 0x9e2effff, REGISTRY_RIPENCC }, // 158.46.0.0 - 158.46.255.255 { 0x9e2f0000, 0x9e2fffff, REGISTRY_RIPENCC }, // 158.47.0.0 - 158.47.255.255 { 0x9e300000, 0x9e30ffff, REGISTRY_ARIN }, // 158.48.0.0 - 158.48.255.255 { 0x9e310000, 0x9e32ffff, REGISTRY_RIPENCC }, // 158.49.0.0 - 158.50.255.255 { 0x9e330000, 0x9e35ffff, REGISTRY_ARIN }, // 158.51.0.0 - 158.53.255.255 { 0x9e360000, 0x9e36ffff, REGISTRY_APNIC }, // 158.54.0.0 - 158.54.255.255 { 0x9e370000, 0x9e39ffff, REGISTRY_ARIN }, // 158.55.0.0 - 158.57.255.255 { 0x9e3a0000, 0x9e3affff, REGISTRY_RIPENCC }, // 158.58.0.0 - 158.58.255.255 { 0x9e3b0000, 0x9e3fffff, REGISTRY_ARIN }, // 158.59.0.0 - 158.63.255.255 { 0x9e400000, 0x9e40ffff, REGISTRY_RIPENCC }, // 158.64.0.0 - 158.64.255.255 { 0x9e410000, 0x9e41ffff, REGISTRY_ARIN }, // 158.65.0.0 - 158.65.255.255 { 0x9e420000, 0x9e43ffff, REGISTRY_RIPENCC }, // 158.66.0.0 - 158.67.255.255 { 0x9e440000, 0x9e4affff, REGISTRY_ARIN }, // 158.68.0.0 - 158.74.255.255 { 0x9e4b0000, 0x9e4bffff, REGISTRY_RIPENCC }, // 158.75.0.0 - 158.75.255.255 { 0x9e4c0000, 0x9e58ffff, REGISTRY_ARIN }, // 158.76.0.0 - 158.88.255.255 { 0x9e590000, 0x9e59ffff, REGISTRY_APNIC }, // 158.89.0.0 - 158.89.255.255 { 0x9e5a0000, 0x9e5affff, REGISTRY_RIPENCC }, // 158.90.0.0 - 158.90.255.255 { 0x9e5b0000, 0x9e5bffff, REGISTRY_ARIN }, // 158.91.0.0 - 158.91.255.255 { 0x9e5c0000, 0x9e5cffff, REGISTRY_RIPENCC }, // 158.92.0.0 - 158.92.255.255 { 0x9e5d0000, 0x9e5dffff, REGISTRY_ARIN }, // 158.93.0.0 - 158.93.255.255 { 0x9e5e0000, 0x9e5effff, REGISTRY_RIPENCC }, // 158.94.0.0 - 158.94.255.255 { 0x9e5f0000, 0x9e60ffff, REGISTRY_ARIN }, // 158.95.0.0 - 158.96.255.255 { 0x9e610000, 0x9e61ffff, REGISTRY_LACNIC }, // 158.97.0.0 - 158.97.255.255 { 0x9e620000, 0x9e62ffff, REGISTRY_ARIN }, // 158.98.0.0 - 158.98.255.255 { 0x9e630000, 0x9e63ffff, REGISTRY_RIPENCC }, // 158.99.0.0 - 158.99.255.255 { 0x9e640000, 0x9e65ffff, REGISTRY_ARIN }, // 158.100.0.0 - 158.101.255.255 { 0x9e660000, 0x9e66ffff, REGISTRY_RIPENCC }, // 158.102.0.0 - 158.102.255.255 { 0x9e670000, 0x9e68ffff, REGISTRY_ARIN }, // 158.103.0.0 - 158.104.255.255 { 0x9e690000, 0x9e69ffff, REGISTRY_RIPENCC }, // 158.105.0.0 - 158.105.255.255 { 0x9e6a0000, 0x9e6bffff, REGISTRY_ARIN }, // 158.106.0.0 - 158.107.255.255 { 0x9e6c0000, 0x9e6cffff, REGISTRY_APNIC }, // 158.108.0.0 - 158.108.255.255 { 0x9e6d0000, 0x9e6effff, REGISTRY_RIPENCC }, // 158.109.0.0 - 158.110.255.255 { 0x9e6f0000, 0x9e6fffff, REGISTRY_ARIN }, // 158.111.0.0 - 158.111.255.255 { 0x9e700000, 0x9e70ffff, REGISTRY_RIPENCC }, // 158.112.0.0 - 158.112.255.255 { 0x9e710000, 0x9e76ffff, REGISTRY_ARIN }, // 158.113.0.0 - 158.118.255.255 { 0x9e770000, 0x9e77ffff, REGISTRY_RIPENCC }, // 158.119.0.0 - 158.119.255.255 { 0x9e780000, 0x9e7bffff, REGISTRY_ARIN }, // 158.120.0.0 - 158.123.255.255 { 0x9e7c0000, 0x9e7fffff, REGISTRY_RIPENCC }, // 158.124.0.0 - 158.127.255.255 { 0x9e800000, 0x9e80ffff, REGISTRY_ARIN }, // 158.128.0.0 - 158.128.255.255 { 0x9e810000, 0x9e81ffff, REGISTRY_RIPENCC }, // 158.129.0.0 - 158.129.255.255 { 0x9e820000, 0x9e82ffff, REGISTRY_ARIN }, // 158.130.0.0 - 158.130.255.255 { 0x9e830000, 0x9e83ffff, REGISTRY_RIPENCC }, // 158.131.0.0 - 158.131.255.255 { 0x9e840000, 0x9e84ffff, REGISTRY_APNIC }, // 158.132.0.0 - 158.132.255.255 { 0x9e850000, 0x9e85ffff, REGISTRY_RIPENCC }, // 158.133.0.0 - 158.133.255.255 { 0x9e860000, 0x9e8c0fff, REGISTRY_ARIN }, // 158.134.0.0 - 158.140.15.255 { 0x9e8c1000, 0x9e8c1fff, REGISTRY_RIPENCC }, // 158.140.16.0 - 158.140.31.255 { 0x9e8c2000, 0x9e8c3fff, REGISTRY_ARIN }, // 158.140.32.0 - 158.140.63.255 { 0x9e8c4000, 0x9e8c7fff, REGISTRY_RIPENCC }, // 158.140.64.0 - 158.140.127.255 { 0x9e8c8000, 0x9e8cffff, REGISTRY_APNIC }, // 158.140.128.0 - 158.140.255.255 { 0x9e8d0000, 0x9e8effff, REGISTRY_ARIN }, // 158.141.0.0 - 158.142.255.255 { 0x9e8f0000, 0x9e8fffff, REGISTRY_RIPENCC }, // 158.143.0.0 - 158.143.255.255 { 0x9e900000, 0x9e90ffff, REGISTRY_APNIC }, // 158.144.0.0 - 158.144.255.255 { 0x9e910000, 0x9e93ffff, REGISTRY_ARIN }, // 158.145.0.0 - 158.147.255.255 { 0x9e940000, 0x9e94ffff, REGISTRY_RIPENCC }, // 158.148.0.0 - 158.148.255.255 { 0x9e950000, 0x9e96ffff, REGISTRY_RIPENCC }, // 158.149.0.0 - 158.150.255.255 { 0x9e970000, 0x9e97ffff, REGISTRY_ARIN }, // 158.151.0.0 - 158.151.255.255 { 0x9e980000, 0x9e98ffff, REGISTRY_RIPENCC }, // 158.152.0.0 - 158.152.255.255 { 0x9e990000, 0x9e9bffff, REGISTRY_ARIN }, // 158.153.0.0 - 158.155.255.255 { 0x9e9c0000, 0x9e9cffff, REGISTRY_RIPENCC }, // 158.156.0.0 - 158.156.255.255 { 0x9e9d0000, 0x9e9fffff, REGISTRY_ARIN }, // 158.157.0.0 - 158.159.255.255 { 0x9ea00000, 0x9ea0ffff, REGISTRY_LACNIC }, // 158.160.0.0 - 158.160.255.255 { 0x9ea10000, 0x9ea1ffff, REGISTRY_APNIC }, // 158.161.0.0 - 158.161.255.255 { 0x9ea20000, 0x9ea2ffff, REGISTRY_RIPENCC }, // 158.162.0.0 - 158.162.255.255 { 0x9ea30000, 0x9ea5ffff, REGISTRY_ARIN }, // 158.163.0.0 - 158.165.255.255 { 0x9ea60000, 0x9ea9ffff, REGISTRY_RIPENCC }, // 158.166.0.0 - 158.169.255.255 { 0x9eaa0000, 0x9eaaffff, REGISTRY_LACNIC }, // 158.170.0.0 - 158.170.255.255 { 0x9eab0000, 0x9eabffff, REGISTRY_ARIN }, // 158.171.0.0 - 158.171.255.255 { 0x9eac0000, 0x9eb4ffff, REGISTRY_RIPENCC }, // 158.172.0.0 - 158.180.255.255 { 0x9eb50000, 0x9eb5ffff, REGISTRY_RIPENCC }, // 158.181.0.0 - 158.181.255.255 { 0x9eb60000, 0x9eb6ffff, REGISTRY_APNIC }, // 158.182.0.0 - 158.182.255.255 { 0x9eb70000, 0x9ebdffff, REGISTRY_ARIN }, // 158.183.0.0 - 158.189.255.255 { 0x9ebe0000, 0x9ec5ffff, REGISTRY_RIPENCC }, // 158.190.0.0 - 158.197.255.255 { 0x9ec60000, 0x9ed7ffff, REGISTRY_APNIC }, // 158.198.0.0 - 158.215.255.255 { 0x9ed80000, 0x9ed8ffff, REGISTRY_RIPENCC }, // 158.216.0.0 - 158.216.255.255 { 0x9ed90000, 0x9ed9ffff, REGISTRY_APNIC }, // 158.217.0.0 - 158.217.255.255 { 0x9eda0000, 0x9edaffff, REGISTRY_RIPENCC }, // 158.218.0.0 - 158.218.255.255 { 0x9edb0000, 0x9edbffff, REGISTRY_ARIN }, // 158.219.0.0 - 158.219.255.255 { 0x9edc0000, 0x9edcffff, REGISTRY_RIPENCC }, // 158.220.0.0 - 158.220.255.255 { 0x9edd0000, 0x9edeffff, REGISTRY_ARIN }, // 158.221.0.0 - 158.222.255.255 { 0x9edf0000, 0x9edfffff, REGISTRY_RIPENCC }, // 158.223.0.0 - 158.223.255.255 { 0x9ee00000, 0x9ee0ffff, REGISTRY_ARIN }, // 158.224.0.0 - 158.224.255.255 { 0x9ee10000, 0x9ee1ffff, REGISTRY_RIPENCC }, // 158.225.0.0 - 158.225.255.255 { 0x9ee20000, 0x9ee2ffff, REGISTRY_RIPENCC }, // 158.226.0.0 - 158.226.255.255 { 0x9ee30000, 0x9ee3ffff, REGISTRY_RIPENCC }, // 158.227.0.0 - 158.227.255.255 { 0x9ee40000, 0x9ee5ffff, REGISTRY_ARIN }, // 158.228.0.0 - 158.229.255.255 { 0x9ee60000, 0x9eeaffff, REGISTRY_RIPENCC }, // 158.230.0.0 - 158.234.255.255 { 0x9eeb0000, 0x9ef7ffff, REGISTRY_ARIN }, // 158.235.0.0 - 158.247.255.255 { 0x9ef80000, 0x9efaffff, REGISTRY_RIPENCC }, // 158.248.0.0 - 158.250.255.255 { 0x9efb0000, 0x9efbffff, REGISTRY_LACNIC }, // 158.251.0.0 - 158.251.255.255 { 0x9efc0000, 0x9efeffff, REGISTRY_ARIN }, // 158.252.0.0 - 158.254.255.255 { 0x9eff0000, 0x9f00ffff, REGISTRY_RIPENCC }, // 158.255.0.0 - 159.0.255.255 { 0x9f010000, 0x9f06ffff, REGISTRY_ARIN }, // 159.1.0.0 - 159.6.255.255 { 0x9f070000, 0x9f08ffff, REGISTRY_RIPENCC }, // 159.7.0.0 - 159.8.255.255 { 0x9f090000, 0x9f0bffff, REGISTRY_ARIN }, // 159.9.0.0 - 159.11.255.255 { 0x9f0c0000, 0x9f0cffff, REGISTRY_RIPENCC }, // 159.12.0.0 - 159.12.255.255 { 0x9f0d0000, 0x9f0dffff, REGISTRY_APNIC }, // 159.13.0.0 - 159.13.255.255 { 0x9f0e0000, 0x9f0effff, REGISTRY_ARIN }, // 159.14.0.0 - 159.14.255.255 { 0x9f0f0000, 0x9f0fffff, REGISTRY_RIPENCC }, // 159.15.0.0 - 159.15.255.255 { 0x9f100000, 0x9f10ffff, REGISTRY_LACNIC }, // 159.16.0.0 - 159.16.255.255 { 0x9f110000, 0x9f13ffff, REGISTRY_ARIN }, // 159.17.0.0 - 159.19.255.255 { 0x9f140000, 0x9f14ffff, REGISTRY_RIPENCC }, // 159.20.0.0 - 159.20.255.255 { 0x9f150000, 0x9f15ffff, REGISTRY_ARIN }, // 159.21.0.0 - 159.21.255.255 { 0x9f160000, 0x9f17ffff, REGISTRY_RIPENCC }, // 159.22.0.0 - 159.23.255.255 { 0x9f180000, 0x9f18ffff, REGISTRY_ARIN }, // 159.24.0.0 - 159.24.255.255 { 0x9f190000, 0x9f19ffff, REGISTRY_RIPENCC }, // 159.25.0.0 - 159.25.255.255 { 0x9f1a0000, 0x9f1c3fff, REGISTRY_ARIN }, // 159.26.0.0 - 159.28.63.255 { 0x9f1c4000, 0x9f1cffff, REGISTRY_APNIC }, // 159.28.64.0 - 159.28.255.255 { 0x9f1d0000, 0x9f1fffff, REGISTRY_RIPENCC }, // 159.29.0.0 - 159.31.255.255 { 0x9f200000, 0x9f21ffff, REGISTRY_ARIN }, // 159.32.0.0 - 159.33.255.255 { 0x9f220000, 0x9f22ffff, REGISTRY_RIPENCC }, // 159.34.0.0 - 159.34.255.255 { 0x9f230000, 0x9f25ffff, REGISTRY_ARIN }, // 159.35.0.0 - 159.37.255.255 { 0x9f260000, 0x9f26ffff, REGISTRY_RIPENCC }, // 159.38.0.0 - 159.38.255.255 { 0x9f270000, 0x9f2dffff, REGISTRY_ARIN }, // 159.39.0.0 - 159.45.255.255 { 0x9f2e0000, 0x9f2effff, REGISTRY_RIPENCC }, // 159.46.0.0 - 159.46.255.255 { 0x9f2f0000, 0x9f31ffff, REGISTRY_ARIN }, // 159.47.0.0 - 159.49.255.255 { 0x9f320000, 0x9f33ffff, REGISTRY_RIPENCC }, // 159.50.0.0 - 159.51.255.255 { 0x9f340000, 0x9f34ffff, REGISTRY_APNIC }, // 159.52.0.0 - 159.52.255.255 { 0x9f350000, 0x9f39ffff, REGISTRY_ARIN }, // 159.53.0.0 - 159.57.255.255 { 0x9f3a0000, 0x9f3affff, REGISTRY_RIPENCC }, // 159.58.0.0 - 159.58.255.255 { 0x9f3b0000, 0x9f3bffff, REGISTRY_ARIN }, // 159.59.0.0 - 159.59.255.255 { 0x9f3c0000, 0x9f3cffff, REGISTRY_RIPENCC }, // 159.60.0.0 - 159.60.255.255 { 0x9f3d0000, 0x9f47ffff, REGISTRY_ARIN }, // 159.61.0.0 - 159.71.255.255 { 0x9f480000, 0x9f48ffff, REGISTRY_RIPENCC }, // 159.72.0.0 - 159.72.255.255 { 0x9f490000, 0x9f49ffff, REGISTRY_APNIC }, // 159.73.0.0 - 159.73.255.255 { 0x9f4a0000, 0x9f4fffff, REGISTRY_ARIN }, // 159.74.0.0 - 159.79.255.255 { 0x9f500000, 0x9f50ffff, REGISTRY_APNIC }, // 159.80.0.0 - 159.80.255.255 { 0x9f510000, 0x9f51ffff, REGISTRY_RIPENCC }, // 159.81.0.0 - 159.81.255.255 { 0x9f520000, 0x9f53ffff, REGISTRY_ARIN }, // 159.82.0.0 - 159.83.255.255 { 0x9f540000, 0x9f54ffff, REGISTRY_RIPENCC }, // 159.84.0.0 - 159.84.255.255 { 0x9f550000, 0x9f55ffff, REGISTRY_ARIN }, // 159.85.0.0 - 159.85.255.255 { 0x9f560000, 0x9f56ffff, REGISTRY_RIPENCC }, // 159.86.0.0 - 159.86.255.255 { 0x9f570000, 0x9f59ffff, REGISTRY_ARIN }, // 159.87.0.0 - 159.89.255.255 { 0x9f5a0000, 0x9f5affff, REGISTRY_LACNIC }, // 159.90.0.0 - 159.90.255.255 { 0x9f5b0000, 0x9f5bffff, REGISTRY_ARIN }, // 159.91.0.0 - 159.91.255.255 { 0x9f5c0000, 0x9f5dffff, REGISTRY_RIPENCC }, // 159.92.0.0 - 159.93.255.255 { 0x9f5e0000, 0x9f5effff, REGISTRY_ARIN }, // 159.94.0.0 - 159.94.255.255 { 0x9f5f0000, 0x9f5fffff, REGISTRY_RIPENCC }, // 159.95.0.0 - 159.95.255.255 { 0x9f600000, 0x9f63ffff, REGISTRY_ARIN }, // 159.96.0.0 - 159.99.255.255 { 0x9f640000, 0x9f65ffff, REGISTRY_RIPENCC }, // 159.100.0.0 - 159.101.255.255 { 0x9f660000, 0x9f66ffff, REGISTRY_ARIN }, // 159.102.0.0 - 159.102.255.255 { 0x9f670000, 0x9f68ffff, REGISTRY_RIPENCC }, // 159.103.0.0 - 159.104.255.255 { 0x9f690000, 0x9f6affff, REGISTRY_ARIN }, // 159.105.0.0 - 159.106.255.255 { 0x9f6b0000, 0x9f6bffff, REGISTRY_RIPENCC }, // 159.107.0.0 - 159.107.255.255 { 0x9f6c0000, 0x9f6cffff, REGISTRY_ARIN }, // 159.108.0.0 - 159.108.255.255 { 0x9f6d0000, 0x9f6dffff, REGISTRY_RIPENCC }, // 159.109.0.0 - 159.109.255.255 { 0x9f6e0000, 0x9f6effff, REGISTRY_ARIN }, // 159.110.0.0 - 159.110.255.255 { 0x9f6f0000, 0x9f6fffff, REGISTRY_APNIC }, // 159.111.0.0 - 159.111.255.255 { 0x9f700000, 0x9f71ffff, REGISTRY_ARIN }, // 159.112.0.0 - 159.113.255.255 { 0x9f720000, 0x9f72ffff, REGISTRY_RIPENCC }, // 159.114.0.0 - 159.114.255.255 { 0x9f730000, 0x9f74ffff, REGISTRY_ARIN }, // 159.115.0.0 - 159.116.255.255 { 0x9f750000, 0x9f752fff, REGISTRY_APNIC }, // 159.117.0.0 - 159.117.47.255 { 0x9f753000, 0x9f753fff, REGISTRY_ARIN }, // 159.117.48.0 - 159.117.63.255 { 0x9f754000, 0x9f759fff, REGISTRY_APNIC }, // 159.117.64.0 - 159.117.159.255 { 0x9f75a000, 0x9f75bfff, REGISTRY_ARIN }, // 159.117.160.0 - 159.117.191.255 { 0x9f75c000, 0x9f75c7ff, REGISTRY_RIPENCC }, // 159.117.192.0 - 159.117.199.255 { 0x9f75c800, 0x9f75c9ff, REGISTRY_APNIC }, // 159.117.200.0 - 159.117.201.255 { 0x9f75ca00, 0x9f75cfff, REGISTRY_RIPENCC }, // 159.117.202.0 - 159.117.207.255 { 0x9f75d000, 0x9f75dbff, REGISTRY_ARIN }, // 159.117.208.0 - 159.117.219.255 { 0x9f75dc00, 0x9f75ffff, REGISTRY_APNIC }, // 159.117.220.0 - 159.117.255.255 { 0x9f760000, 0x9f79ffff, REGISTRY_ARIN }, // 159.118.0.0 - 159.121.255.255 { 0x9f7a0000, 0x9f7affff, REGISTRY_RIPENCC }, // 159.122.0.0 - 159.122.255.255 { 0x9f7b0000, 0x9f81ffff, REGISTRY_ARIN }, // 159.123.0.0 - 159.129.255.255 { 0x9f820000, 0x9f82ffff, REGISTRY_RIPENCC }, // 159.130.0.0 - 159.130.255.255 { 0x9f830000, 0x9f85ffff, REGISTRY_ARIN }, // 159.131.0.0 - 159.133.255.255 { 0x9f860000, 0x9f86ffff, REGISTRY_RIPENCC }, // 159.134.0.0 - 159.134.255.255 { 0x9f870000, 0x9f8fffff, REGISTRY_ARIN }, // 159.135.0.0 - 159.143.255.255 { 0x9f900000, 0x9f90ffff, REGISTRY_RIPENCC }, // 159.144.0.0 - 159.144.255.255 { 0x9f910000, 0x9f91ffff, REGISTRY_ARIN }, // 159.145.0.0 - 159.145.255.255 { 0x9f920000, 0x9f92ffff, REGISTRY_RIPENCC }, // 159.146.0.0 - 159.146.255.255 { 0x9f930000, 0x9f95ffff, REGISTRY_RIPENCC }, // 159.147.0.0 - 159.149.255.255 { 0x9f960000, 0x9f96ffff, REGISTRY_ARIN }, // 159.150.0.0 - 159.150.255.255 { 0x9f970000, 0x9f98ffff, REGISTRY_RIPENCC }, // 159.151.0.0 - 159.152.255.255 { 0x9f990000, 0x9f99ffff, REGISTRY_ARIN }, // 159.153.0.0 - 159.153.255.255 { 0x9f9a0000, 0x9f9affff, REGISTRY_RIPENCC }, // 159.154.0.0 - 159.154.255.255 { 0x9f9b0000, 0x9f9bffff, REGISTRY_ARIN }, // 159.155.0.0 - 159.155.255.255 { 0x9f9c0000, 0x9f9cffff, REGISTRY_RIPENCC }, // 159.156.0.0 - 159.156.255.255 { 0x9f9d0000, 0x9f9fffff, REGISTRY_ARIN }, // 159.157.0.0 - 159.159.255.255 { 0x9fa00000, 0x9fa0ffff, REGISTRY_RIPENCC }, // 159.160.0.0 - 159.160.255.255 { 0x9fa10000, 0x9fa1ffff, REGISTRY_ARIN }, // 159.161.0.0 - 159.161.255.255 { 0x9fa20000, 0x9fa2ffff, REGISTRY_RIPENCC }, // 159.162.0.0 - 159.162.255.255 { 0x9fa30000, 0x9fa6ffff, REGISTRY_ARIN }, // 159.163.0.0 - 159.166.255.255 { 0x9fa70000, 0x9fa8ffff, REGISTRY_RIPENCC }, // 159.167.0.0 - 159.168.255.255 { 0x9fa90000, 0x9fa9ffff, REGISTRY_ARIN }, // 159.169.0.0 - 159.169.255.255 { 0x9faa0000, 0x9fabffff, REGISTRY_RIPENCC }, // 159.170.0.0 - 159.171.255.255 { 0x9fac0000, 0x9facffff, REGISTRY_ARIN }, // 159.172.0.0 - 159.172.255.255 { 0x9fad0000, 0x9fadffff, REGISTRY_RIPENCC }, // 159.173.0.0 - 159.173.255.255 { 0x9fae0000, 0x9fb2ffff, REGISTRY_ARIN }, // 159.174.0.0 - 159.178.255.255 { 0x9fb30000, 0x9fb4ffff, REGISTRY_RIPENCC }, // 159.179.0.0 - 159.180.255.255 { 0x9fb50000, 0x9fbdffff, REGISTRY_ARIN }, // 159.181.0.0 - 159.189.255.255 { 0x9fbe0000, 0x9fbeffff, REGISTRY_RIPENCC }, // 159.190.0.0 - 159.190.255.255 { 0x9fbf0000, 0x9fbfffff, REGISTRY_ARIN }, // 159.191.0.0 - 159.191.255.255 { 0x9fc00000, 0x9fc0ffff, REGISTRY_APNIC }, // 159.192.0.0 - 159.192.255.255 { 0x9fc10000, 0x9fc3ffff, REGISTRY_RIPENCC }, // 159.193.0.0 - 159.195.255.255 { 0x9fc40000, 0x9fc4ffff, REGISTRY_APNIC }, // 159.196.0.0 - 159.196.255.255 { 0x9fc50000, 0x9fc5ffff, REGISTRY_RIPENCC }, // 159.197.0.0 - 159.197.255.255 { 0x9fc60000, 0x9fc7ffff, REGISTRY_ARIN }, // 159.198.0.0 - 159.199.255.255 { 0x9fc80000, 0x9fc8ffff, REGISTRY_RIPENCC }, // 159.200.0.0 - 159.200.255.255 { 0x9fc90000, 0x9fccffff, REGISTRY_ARIN }, // 159.201.0.0 - 159.204.255.255 { 0x9fcd0000, 0x9fcdffff, REGISTRY_RIPENCC }, // 159.205.0.0 - 159.205.255.255 { 0x9fce0000, 0x9fceffff, REGISTRY_ARIN }, // 159.206.0.0 - 159.206.255.255 { 0x9fcf0000, 0x9fcfffff, REGISTRY_APNIC }, // 159.207.0.0 - 159.207.255.255 { 0x9fd00000, 0x9fd1ffff, REGISTRY_ARIN }, // 159.208.0.0 - 159.209.255.255 { 0x9fd20000, 0x9fd2ffff, REGISTRY_RIPENCC }, // 159.210.0.0 - 159.210.255.255 { 0x9fd30000, 0x9fd3ffff, REGISTRY_APNIC }, // 159.211.0.0 - 159.211.255.255 { 0x9fd40000, 0x9fd4ffff, REGISTRY_ARIN }, // 159.212.0.0 - 159.212.255.255 { 0x9fd50000, 0x9fd5ffff, REGISTRY_RIPENCC }, // 159.213.0.0 - 159.213.255.255 { 0x9fd60000, 0x9fd7ffff, REGISTRY_ARIN }, // 159.214.0.0 - 159.215.255.255 { 0x9fd80000, 0x9fd9ffff, REGISTRY_RIPENCC }, // 159.216.0.0 - 159.217.255.255 { 0x9fda0000, 0x9fdaffff, REGISTRY_ARIN }, // 159.218.0.0 - 159.218.255.255 { 0x9fdb0000, 0x9fdbffff, REGISTRY_RIPENCC }, // 159.219.0.0 - 159.219.255.255 { 0x9fdc0000, 0x9fdfffff, REGISTRY_ARIN }, // 159.220.0.0 - 159.223.255.255 { 0x9fe00000, 0x9fe0ffff, REGISTRY_RIPENCC }, // 159.224.0.0 - 159.224.255.255 { 0x9fe10000, 0x9fe1ffff, REGISTRY_ARIN }, // 159.225.0.0 - 159.225.255.255 { 0x9fe20000, 0x9fe2ffff, REGISTRY_APNIC }, // 159.226.0.0 - 159.226.255.255 { 0x9fe30000, 0x9fe3ffff, REGISTRY_ARIN }, // 159.227.0.0 - 159.227.255.255 { 0x9fe50000, 0x9fe7ffff, REGISTRY_ARIN }, // 159.229.0.0 - 159.231.255.255 { 0x9fe80000, 0x9fe8ffff, REGISTRY_RIPENCC }, // 159.232.0.0 - 159.232.255.255 { 0x9fe90000, 0x9febffff, REGISTRY_ARIN }, // 159.233.0.0 - 159.235.255.255 { 0x9fec0000, 0x9fedffff, REGISTRY_RIPENCC }, // 159.236.0.0 - 159.237.255.255 { 0x9fee0000, 0x9feeffff, REGISTRY_ARIN }, // 159.238.0.0 - 159.238.255.255 { 0x9fef0000, 0x9fefffff, REGISTRY_RIPENCC }, // 159.239.0.0 - 159.239.255.255 { 0x9ff00000, 0x9ff0ffff, REGISTRY_ARIN }, // 159.240.0.0 - 159.240.255.255 { 0x9ff10000, 0x9ff1ffff, REGISTRY_RIPENCC }, // 159.241.0.0 - 159.241.255.255 { 0x9ff20000, 0x9ff3ffff, REGISTRY_ARIN }, // 159.242.0.0 - 159.243.255.255 { 0x9ff40000, 0x9ff5ffff, REGISTRY_RIPENCC }, // 159.244.0.0 - 159.245.255.255 { 0x9ff60000, 0x9ff7ffff, REGISTRY_ARIN }, // 159.246.0.0 - 159.247.255.255 { 0x9ff80000, 0x9ff8ffff, REGISTRY_APNIC }, // 159.248.0.0 - 159.248.255.255 { 0x9ff90000, 0x9ffcffff, REGISTRY_ARIN }, // 159.249.0.0 - 159.252.255.255 { 0x9ffd0000, 0x9ffdffff, REGISTRY_RIPENCC }, // 159.253.0.0 - 159.253.255.255 { 0x9ffe0000, 0x9ffeffff, REGISTRY_RIPENCC }, // 159.254.0.0 - 159.254.255.255 { 0x9fff0000, 0x9fffffff, REGISTRY_RIPENCC }, // 159.255.0.0 - 159.255.255.255 { 0xa0000000, 0xa000ffff, REGISTRY_AFRINIC }, // 160.0.0.0 - 160.0.255.255 { 0xa0010000, 0xa003ffff, REGISTRY_ARIN }, // 160.1.0.0 - 160.3.255.255 { 0xa0040000, 0xa004ffff, REGISTRY_APNIC }, // 160.4.0.0 - 160.4.255.255 { 0xa0050000, 0xa006ffff, REGISTRY_RIPENCC }, // 160.5.0.0 - 160.6.255.255 { 0xa0070000, 0xa007ffff, REGISTRY_ARIN }, // 160.7.0.0 - 160.7.255.255 { 0xa0080000, 0xa009ffff, REGISTRY_RIPENCC }, // 160.8.0.0 - 160.9.255.255 { 0xa00a0000, 0xa00affff, REGISTRY_ARIN }, // 160.10.0.0 - 160.10.255.255 { 0xa00b0000, 0xa012ffff, REGISTRY_APNIC }, // 160.11.0.0 - 160.18.255.255 { 0xa0130000, 0xa0130fff, REGISTRY_ARIN }, // 160.19.0.0 - 160.19.15.255 { 0xa0131400, 0xa01317ff, REGISTRY_APNIC }, // 160.19.20.0 - 160.19.23.255 { 0xa0131800, 0xa0131fff, REGISTRY_ARIN }, // 160.19.24.0 - 160.19.31.255 { 0xa0132400, 0xa01327ff, REGISTRY_AFRINIC }, // 160.19.36.0 - 160.19.39.255 { 0xa0132c00, 0xa0132fff, REGISTRY_LACNIC }, // 160.19.44.0 - 160.19.47.255 { 0xa0133000, 0xa01337ff, REGISTRY_APNIC }, // 160.19.48.0 - 160.19.55.255 { 0xa0133c00, 0xa0133fff, REGISTRY_AFRINIC }, // 160.19.60.0 - 160.19.63.255 { 0xa0134000, 0xa01343ff, REGISTRY_APNIC }, // 160.19.64.0 - 160.19.67.255 { 0xa0136800, 0xa0136bff, REGISTRY_ARIN }, // 160.19.104.0 - 160.19.107.255 { 0xa0137000, 0xa0137fff, REGISTRY_AFRINIC }, // 160.19.112.0 - 160.19.127.255 { 0xa0139800, 0xa0139bff, REGISTRY_AFRINIC }, // 160.19.152.0 - 160.19.155.255 { 0xa013a000, 0xa013a3ff, REGISTRY_ARIN }, // 160.19.160.0 - 160.19.163.255 { 0xa013a800, 0xa013afff, REGISTRY_LACNIC }, // 160.19.168.0 - 160.19.175.255 { 0xa013bc00, 0xa013bdff, REGISTRY_AFRINIC }, // 160.19.188.0 - 160.19.189.255 { 0xa013c400, 0xa013c7ff, REGISTRY_AFRINIC }, // 160.19.196.0 - 160.19.199.255 { 0xa013c800, 0xa013cbff, REGISTRY_LACNIC }, // 160.19.200.0 - 160.19.203.255 { 0xa013d000, 0xa013e3ff, REGISTRY_APNIC }, // 160.19.208.0 - 160.19.227.255 { 0xa013e800, 0xa013efff, REGISTRY_AFRINIC }, // 160.19.232.0 - 160.19.239.255 { 0xa013f000, 0xa013ffff, REGISTRY_LACNIC }, // 160.19.240.0 - 160.19.255.255 { 0xa0140000, 0xa0140fff, REGISTRY_APNIC }, // 160.20.0.0 - 160.20.15.255 { 0xa0141400, 0xa01417ff, REGISTRY_LACNIC }, // 160.20.20.0 - 160.20.23.255 { 0xa0141800, 0xa0141fff, REGISTRY_AFRINIC }, // 160.20.24.0 - 160.20.31.255 { 0xa0142000, 0xa01423ff, REGISTRY_LACNIC }, // 160.20.32.0 - 160.20.35.255 { 0xa0142800, 0xa0143fff, REGISTRY_APNIC }, // 160.20.40.0 - 160.20.63.255 { 0xa0144000, 0xa01447ff, REGISTRY_LACNIC }, // 160.20.64.0 - 160.20.71.255 { 0xa0144800, 0xa0144bff, REGISTRY_APNIC }, // 160.20.72.0 - 160.20.75.255 { 0xa0145000, 0xa0145fff, REGISTRY_LACNIC }, // 160.20.80.0 - 160.20.95.255 { 0xa014a000, 0xa014cfff, REGISTRY_LACNIC }, // 160.20.160.0 - 160.20.207.255 { 0xa014d000, 0xa014d3ff, REGISTRY_ARIN }, // 160.20.208.0 - 160.20.211.255 { 0xa014e800, 0xa014efff, REGISTRY_ARIN }, // 160.20.232.0 - 160.20.239.255 { 0xa0150000, 0xa015ffff, REGISTRY_APNIC }, // 160.21.0.0 - 160.21.255.255 { 0xa0170000, 0xa018ffff, REGISTRY_APNIC }, // 160.23.0.0 - 160.24.255.255 { 0xa01a0000, 0xa01dffff, REGISTRY_APNIC }, // 160.26.0.0 - 160.29.255.255 { 0xa01f0000, 0xa025ffff, REGISTRY_ARIN }, // 160.31.0.0 - 160.37.255.255 { 0xa0260000, 0xa026ffff, REGISTRY_RIPENCC }, // 160.38.0.0 - 160.38.255.255 { 0xa0270000, 0xa027ffff, REGISTRY_ARIN }, // 160.39.0.0 - 160.39.255.255 { 0xa0280000, 0xa028ffff, REGISTRY_RIPENCC }, // 160.40.0.0 - 160.40.255.255 { 0xa0290000, 0xa02bffff, REGISTRY_ARIN }, // 160.41.0.0 - 160.43.255.255 { 0xa02c0000, 0xa02cffff, REGISTRY_RIPENCC }, // 160.44.0.0 - 160.44.255.255 { 0xa02d0000, 0xa03cffff, REGISTRY_RIPENCC }, // 160.45.0.0 - 160.60.255.255 { 0xa03d0000, 0xa03effff, REGISTRY_RIPENCC }, // 160.61.0.0 - 160.62.255.255 { 0xa03f0000, 0xa03fffff, REGISTRY_RIPENCC }, // 160.63.0.0 - 160.63.255.255 { 0xa0400000, 0xa040ffff, REGISTRY_APNIC }, // 160.64.0.0 - 160.64.255.255 { 0xa0410000, 0xa041ffff, REGISTRY_ARIN }, // 160.65.0.0 - 160.65.255.255 { 0xa0420000, 0xa044ffff, REGISTRY_RIPENCC }, // 160.66.0.0 - 160.68.255.255 { 0xa0450000, 0xa045ffff, REGISTRY_ARIN }, // 160.69.0.0 - 160.69.255.255 { 0xa0460000, 0xa047ffff, REGISTRY_RIPENCC }, // 160.70.0.0 - 160.71.255.255 { 0xa0480000, 0xa049ffff, REGISTRY_ARIN }, // 160.72.0.0 - 160.73.255.255 { 0xa04a0000, 0xa04affff, REGISTRY_APNIC }, // 160.74.0.0 - 160.74.255.255 { 0xa04b0000, 0xa04bffff, REGISTRY_RIPENCC }, // 160.75.0.0 - 160.75.255.255 { 0xa04c0000, 0xa04cffff, REGISTRY_ARIN }, // 160.76.0.0 - 160.76.255.255 { 0xa04d0000, 0xa04dffff, REGISTRY_AFRINIC }, // 160.77.0.0 - 160.77.255.255 { 0xa04e0000, 0xa04effff, REGISTRY_RIPENCC }, // 160.78.0.0 - 160.78.255.255 { 0xa04f0000, 0xa04fffff, REGISTRY_ARIN }, // 160.79.0.0 - 160.79.255.255 { 0xa0500000, 0xa050ffff, REGISTRY_RIPENCC }, // 160.80.0.0 - 160.80.255.255 { 0xa0510000, 0xa054ffff, REGISTRY_ARIN }, // 160.81.0.0 - 160.84.255.255 { 0xa0550000, 0xa055ffff, REGISTRY_RIPENCC }, // 160.85.0.0 - 160.85.255.255 { 0xa0560000, 0xa058ffff, REGISTRY_ARIN }, // 160.86.0.0 - 160.88.255.255 { 0xa0590000, 0xa05affff, REGISTRY_AFRINIC }, // 160.89.0.0 - 160.90.255.255 { 0xa05b0000, 0xa05bffff, REGISTRY_ARIN }, // 160.91.0.0 - 160.91.255.255 { 0xa05c0000, 0xa05cffff, REGISTRY_RIPENCC }, // 160.92.0.0 - 160.92.255.255 { 0xa05d0000, 0xa05fffff, REGISTRY_ARIN }, // 160.93.0.0 - 160.95.255.255 { 0xa0600000, 0xa060ffff, REGISTRY_APNIC }, // 160.96.0.0 - 160.96.255.255 { 0xa0610000, 0xa064ffff, REGISTRY_RIPENCC }, // 160.97.0.0 - 160.100.255.255 { 0xa0650000, 0xa066ffff, REGISTRY_ARIN }, // 160.101.0.0 - 160.102.255.255 { 0xa0670000, 0xa068ffff, REGISTRY_RIPENCC }, // 160.103.0.0 - 160.104.255.255 { 0xa0690000, 0xa069ffff, REGISTRY_AFRINIC }, // 160.105.0.0 - 160.105.255.255 { 0xa06a0000, 0xa070ffff, REGISTRY_ARIN }, // 160.106.0.0 - 160.112.255.255 { 0xa0720000, 0xa072ffff, REGISTRY_RIPENCC }, // 160.114.0.0 - 160.114.255.255 { 0xa0730000, 0xa07767ff, REGISTRY_AFRINIC }, // 160.115.0.0 - 160.119.103.255 { 0xa0776c00, 0xa0777fff, REGISTRY_AFRINIC }, // 160.119.108.0 - 160.119.127.255 { 0xa077a000, 0xa077c7ff, REGISTRY_AFRINIC }, // 160.119.160.0 - 160.119.199.255 { 0xa077cc00, 0xa077d3ff, REGISTRY_AFRINIC }, // 160.119.204.0 - 160.119.211.255 { 0xa077d800, 0xa077f5ff, REGISTRY_AFRINIC }, // 160.119.216.0 - 160.119.245.255 { 0xa077f800, 0xa07cffff, REGISTRY_AFRINIC }, // 160.119.248.0 - 160.124.255.255 { 0xa07d0000, 0xa097ffff, REGISTRY_ARIN }, // 160.125.0.0 - 160.151.255.255 { 0xa0980000, 0xa098ffff, REGISTRY_AFRINIC }, // 160.152.0.0 - 160.152.255.255 { 0xa0990000, 0xa099ffff, REGISTRY_ARIN }, // 160.153.0.0 - 160.153.255.255 { 0xa09a0000, 0xa0b3ffff, REGISTRY_AFRINIC }, // 160.154.0.0 - 160.179.255.255 { 0xa0b40000, 0xa0b4ffff, REGISTRY_RIPENCC }, // 160.180.0.0 - 160.180.255.255 { 0xa0b50000, 0xa0b8ffff, REGISTRY_AFRINIC }, // 160.181.0.0 - 160.184.255.255 { 0xa0b90000, 0xa0baffff, REGISTRY_APNIC }, // 160.185.0.0 - 160.186.255.255 { 0xa0bc0000, 0xa0beffff, REGISTRY_APNIC }, // 160.188.0.0 - 160.190.255.255 { 0xa0c00000, 0xa0ca0fff, REGISTRY_APNIC }, // 160.192.0.0 - 160.202.15.255 { 0xa0ca2000, 0xa0ca3fff, REGISTRY_APNIC }, // 160.202.32.0 - 160.202.63.255 { 0xa0ca4000, 0xa0ca7fff, REGISTRY_ARIN }, // 160.202.64.0 - 160.202.127.255 { 0xa0ca8400, 0xa0caa7ff, REGISTRY_APNIC }, // 160.202.132.0 - 160.202.167.255 { 0xa0caac00, 0xa0ccffff, REGISTRY_APNIC }, // 160.202.172.0 - 160.204.255.255 { 0xa0cd0000, 0xa0cdffff, REGISTRY_ARIN }, // 160.205.0.0 - 160.205.255.255 { 0xa0ce0000, 0xa0ceffff, REGISTRY_APNIC }, // 160.206.0.0 - 160.206.255.255 { 0xa0cf0000, 0xa0d1ffff, REGISTRY_ARIN }, // 160.207.0.0 - 160.209.255.255 { 0xa0d20000, 0xa0d3ffff, REGISTRY_RIPENCC }, // 160.210.0.0 - 160.211.255.255 { 0xa0d40000, 0xa0d4ffff, REGISTRY_ARIN }, // 160.212.0.0 - 160.212.255.255 { 0xa0d50000, 0xa0d6ffff, REGISTRY_RIPENCC }, // 160.213.0.0 - 160.214.255.255 { 0xa0d70000, 0xa0d7ffff, REGISTRY_APNIC }, // 160.215.0.0 - 160.215.255.255 { 0xa0d80000, 0xa0ddffff, REGISTRY_RIPENCC }, // 160.216.0.0 - 160.221.255.255 { 0xa0de0000, 0xa0deffff, REGISTRY_APNIC }, // 160.222.0.0 - 160.222.255.255 { 0xa0df0000, 0xa0dfffff, REGISTRY_ARIN }, // 160.223.0.0 - 160.223.255.255 { 0xa0e00000, 0xa0e2b1ff, REGISTRY_AFRINIC }, // 160.224.0.0 - 160.226.177.255 { 0xa0e2b300, 0xa0e2b3ff, REGISTRY_AFRINIC }, // 160.226.179.0 - 160.226.179.255 { 0xa0e2c000, 0xa0e2ffff, REGISTRY_AFRINIC }, // 160.226.192.0 - 160.226.255.255 { 0xa0e30000, 0xa0e3ffff, REGISTRY_ARIN }, // 160.227.0.0 - 160.227.255.255 { 0xa0e40000, 0xa0e4ffff, REGISTRY_RIPENCC }, // 160.228.0.0 - 160.228.255.255 { 0xa0e50000, 0xa0e8ffff, REGISTRY_ARIN }, // 160.229.0.0 - 160.232.255.255 { 0xa0e90000, 0xa0e9ffff, REGISTRY_APNIC }, // 160.233.0.0 - 160.233.255.255 { 0xa0eb0000, 0xa0ebffff, REGISTRY_APNIC }, // 160.235.0.0 - 160.235.255.255 { 0xa0ed0000, 0xa0edffff, REGISTRY_APNIC }, // 160.237.0.0 - 160.237.255.255 { 0xa0ee0100, 0xa0ee0aff, REGISTRY_APNIC }, // 160.238.1.0 - 160.238.10.255 { 0xa0ee0c00, 0xa0ee14ff, REGISTRY_APNIC }, // 160.238.12.0 - 160.238.20.255 { 0xa0ee1e00, 0xa0ee1eff, REGISTRY_APNIC }, // 160.238.30.0 - 160.238.30.255 { 0xa0ee2000, 0xa0ee20ff, REGISTRY_APNIC }, // 160.238.32.0 - 160.238.32.255 { 0xa0ee2800, 0xa0ee28ff, REGISTRY_APNIC }, // 160.238.40.0 - 160.238.40.255 { 0xa0ee3300, 0xa0ee33ff, REGISTRY_APNIC }, // 160.238.51.0 - 160.238.51.255 { 0xa0ee3800, 0xa0ee38ff, REGISTRY_APNIC }, // 160.238.56.0 - 160.238.56.255 { 0xa0ee3e00, 0xa0ee3eff, REGISTRY_APNIC }, // 160.238.62.0 - 160.238.62.255 { 0xa0ee4000, 0xa0ee5fff, REGISTRY_APNIC }, // 160.238.64.0 - 160.238.95.255 { 0xa0ee6400, 0xa0ee64ff, REGISTRY_APNIC }, // 160.238.100.0 - 160.238.100.255 { 0xa0ee6800, 0xa0ee6fff, REGISTRY_LACNIC }, // 160.238.104.0 - 160.238.111.255 { 0xa0ee8000, 0xa0eeffff, REGISTRY_LACNIC }, // 160.238.128.0 - 160.238.255.255 { 0xa0ef0000, 0xa0f1ffff, REGISTRY_APNIC }, // 160.239.0.0 - 160.241.255.255 { 0xa0f20000, 0xa0f2ffff, REGISTRY_AFRINIC }, // 160.242.0.0 - 160.242.255.255 { 0xa0f30000, 0xa0f9ffff, REGISTRY_APNIC }, // 160.243.0.0 - 160.249.255.255 { 0xa0fb0000, 0xa0fcffff, REGISTRY_APNIC }, // 160.251.0.0 - 160.252.255.255 { 0xa0fd0000, 0xa0feffff, REGISTRY_ARIN }, // 160.253.0.0 - 160.254.255.255 { 0xa0ff0000, 0xa0ffffff, REGISTRY_AFRINIC }, // 160.255.0.0 - 160.255.255.255 { 0xa1000000, 0xa100ffff, REGISTRY_LACNIC }, // 161.0.0.0 - 161.0.255.255 { 0xa1010000, 0xa101ffff, REGISTRY_ARIN }, // 161.1.0.0 - 161.1.255.255 { 0xa1020000, 0xa105ffff, REGISTRY_RIPENCC }, // 161.2.0.0 - 161.5.255.255 { 0xa1060000, 0xa107ffff, REGISTRY_ARIN }, // 161.6.0.0 - 161.7.255.255 { 0xa1080000, 0xa109ffff, REGISTRY_RIPENCC }, // 161.8.0.0 - 161.9.255.255 { 0xa10a0000, 0xa10affff, REGISTRY_LACNIC }, // 161.10.0.0 - 161.10.255.255 { 0xa10b0000, 0xa10bffff, REGISTRY_ARIN }, // 161.11.0.0 - 161.11.255.255 { 0xa10c0000, 0xa10cffff, REGISTRY_RIPENCC }, // 161.12.0.0 - 161.12.255.255 { 0xa10d0000, 0xa110ffff, REGISTRY_ARIN }, // 161.13.0.0 - 161.16.255.255 { 0xa1110000, 0xa111ffff, REGISTRY_RIPENCC }, // 161.17.0.0 - 161.17.255.255 { 0xa1120000, 0xa112ffff, REGISTRY_LACNIC }, // 161.18.0.0 - 161.18.255.255 { 0xa1130000, 0xa113ffff, REGISTRY_ARIN }, // 161.19.0.0 - 161.19.255.255 { 0xa1140000, 0xa114ffff, REGISTRY_RIPENCC }, // 161.20.0.0 - 161.20.255.255 { 0xa1150000, 0xa115ffff, REGISTRY_ARIN }, // 161.21.0.0 - 161.21.255.255 { 0xa1160000, 0xa116ffff, REGISTRY_LACNIC }, // 161.22.0.0 - 161.22.255.255 { 0xa1170000, 0xa117ffff, REGISTRY_RIPENCC }, // 161.23.0.0 - 161.23.255.255 { 0xa1180000, 0xa119ffff, REGISTRY_LACNIC }, // 161.24.0.0 - 161.25.255.255 { 0xa11a0000, 0xa11affff, REGISTRY_ARIN }, // 161.26.0.0 - 161.26.255.255 { 0xa11b0000, 0xa11bffff, REGISTRY_RIPENCC }, // 161.27.0.0 - 161.27.255.255 { 0xa11c0000, 0xa11cffff, REGISTRY_ARIN }, // 161.28.0.0 - 161.28.255.255 { 0xa11d0000, 0xa11dffff, REGISTRY_APNIC }, // 161.29.0.0 - 161.29.255.255 { 0xa11e0000, 0xa11effff, REGISTRY_RIPENCC }, // 161.30.0.0 - 161.30.255.255 { 0xa11f0000, 0xa121ffff, REGISTRY_ARIN }, // 161.31.0.0 - 161.33.255.255 { 0xa1220000, 0xa122ffff, REGISTRY_APNIC }, // 161.34.0.0 - 161.34.255.255 { 0xa1230000, 0xa124ffff, REGISTRY_ARIN }, // 161.35.0.0 - 161.36.255.255 { 0xa1250000, 0xa125ffff, REGISTRY_RIPENCC }, // 161.37.0.0 - 161.37.255.255 { 0xa1260000, 0xa128ffff, REGISTRY_ARIN }, // 161.38.0.0 - 161.40.255.255 { 0xa1290000, 0xa12affff, REGISTRY_RIPENCC }, // 161.41.0.0 - 161.42.255.255 { 0xa12b0000, 0xa12bffff, REGISTRY_APNIC }, // 161.43.0.0 - 161.43.255.255 { 0xa12c0000, 0xa12fffff, REGISTRY_ARIN }, // 161.44.0.0 - 161.47.255.255 { 0xa1300000, 0xa130ffff, REGISTRY_RIPENCC }, // 161.48.0.0 - 161.48.255.255 { 0xa1310000, 0xa131ffff, REGISTRY_ARIN }, // 161.49.0.0 - 161.49.255.255 { 0xa1320000, 0xa132ffff, REGISTRY_APNIC }, // 161.50.0.0 - 161.50.255.255 { 0xa1330000, 0xa133ffff, REGISTRY_ARIN }, // 161.51.0.0 - 161.51.255.255 { 0xa1340000, 0xa134ffff, REGISTRY_RIPENCC }, // 161.52.0.0 - 161.52.255.255 { 0xa1350000, 0xa135ffff, REGISTRY_RIPENCC }, // 161.53.0.0 - 161.53.255.255 { 0xa1360000, 0xa136ffff, REGISTRY_RIPENCC }, // 161.54.0.0 - 161.54.255.255 { 0xa1370000, 0xa137ffff, REGISTRY_ARIN }, // 161.55.0.0 - 161.55.255.255 { 0xa1380000, 0xa138ffff, REGISTRY_LACNIC }, // 161.56.0.0 - 161.56.255.255 { 0xa1390000, 0xa13affff, REGISTRY_ARIN }, // 161.57.0.0 - 161.58.255.255 { 0xa13b0000, 0xa13bffff, REGISTRY_RIPENCC }, // 161.59.0.0 - 161.59.255.255 { 0xa13c0000, 0xa13dffff, REGISTRY_ARIN }, // 161.60.0.0 - 161.61.255.255 { 0xa13e0000, 0xa13effff, REGISTRY_RIPENCC }, // 161.62.0.0 - 161.62.255.255 { 0xa13f0000, 0xa13fffff, REGISTRY_ARIN }, // 161.63.0.0 - 161.63.255.255 { 0xa1400000, 0xa142ffff, REGISTRY_APNIC }, // 161.64.0.0 - 161.66.255.255 { 0xa1430000, 0xa143ffff, REGISTRY_RIPENCC }, // 161.67.0.0 - 161.67.255.255 { 0xa1440000, 0xa146ffff, REGISTRY_ARIN }, // 161.68.0.0 - 161.70.255.255 { 0xa1470000, 0xa14affff, REGISTRY_RIPENCC }, // 161.71.0.0 - 161.74.255.255 { 0xa14b0000, 0xa14bffff, REGISTRY_APNIC }, // 161.75.0.0 - 161.75.255.255 { 0xa14c0000, 0xa14cffff, REGISTRY_RIPENCC }, // 161.76.0.0 - 161.76.255.255 { 0xa14d0000, 0xa14dffff, REGISTRY_ARIN }, // 161.77.0.0 - 161.77.255.255 { 0xa14e0000, 0xa14effff, REGISTRY_RIPENCC }, // 161.78.0.0 - 161.78.255.255 { 0xa14f0000, 0xa14fffff, REGISTRY_LACNIC }, // 161.79.0.0 - 161.79.255.255 { 0xa1500000, 0xa152ffff, REGISTRY_ARIN }, // 161.80.0.0 - 161.82.255.255 { 0xa1530000, 0xa15cffff, REGISTRY_RIPENCC }, // 161.83.0.0 - 161.92.255.255 { 0xa15d0000, 0xa160ffff, REGISTRY_APNIC }, // 161.93.0.0 - 161.96.255.255 { 0xa1610000, 0xa167ffff, REGISTRY_ARIN }, // 161.97.0.0 - 161.103.255.255 { 0xa1680000, 0xa16affff, REGISTRY_RIPENCC }, // 161.104.0.0 - 161.106.255.255 { 0xa16b0000, 0xa16dffff, REGISTRY_ARIN }, // 161.107.0.0 - 161.109.255.255 { 0xa16e0000, 0xa170ffff, REGISTRY_RIPENCC }, // 161.110.0.0 - 161.112.255.255 { 0xa1710000, 0xa173ffff, REGISTRY_ARIN }, // 161.113.0.0 - 161.115.255.255 { 0xa1740000, 0xa174ffff, REGISTRY_RIPENCC }, // 161.116.0.0 - 161.116.255.255 { 0xa1750000, 0xa176ffff, REGISTRY_APNIC }, // 161.117.0.0 - 161.118.255.255 { 0xa1770000, 0xa179ffff, REGISTRY_ARIN }, // 161.119.0.0 - 161.121.255.255 { 0xa17a0000, 0xa17affff, REGISTRY_APNIC }, // 161.122.0.0 - 161.122.255.255 { 0xa17b0000, 0xa17bffff, REGISTRY_AFRINIC }, // 161.123.0.0 - 161.123.255.255 { 0xa17c0000, 0xa17dffff, REGISTRY_ARIN }, // 161.124.0.0 - 161.125.255.255 { 0xa17e0000, 0xa17effff, REGISTRY_APNIC }, // 161.126.0.0 - 161.126.255.255 { 0xa17f0000, 0xa182ffff, REGISTRY_ARIN }, // 161.127.0.0 - 161.130.255.255 { 0xa1830000, 0xa184ffff, REGISTRY_LACNIC }, // 161.131.0.0 - 161.132.255.255 { 0xa1850000, 0xa185ffff, REGISTRY_ARIN }, // 161.133.0.0 - 161.133.255.255 { 0xa1860000, 0xa186ffff, REGISTRY_RIPENCC }, // 161.134.0.0 - 161.134.255.255 { 0xa1870000, 0xa189ffff, REGISTRY_ARIN }, // 161.135.0.0 - 161.137.255.255 { 0xa18a0000, 0xa18affff, REGISTRY_LACNIC }, // 161.138.0.0 - 161.138.255.255 { 0xa18b0000, 0xa18bffff, REGISTRY_APNIC }, // 161.139.0.0 - 161.139.255.255 { 0xa18c0000, 0xa18cffff, REGISTRY_LACNIC }, // 161.140.0.0 - 161.140.255.255 { 0xa18d0000, 0xa18dffff, REGISTRY_ARIN }, // 161.141.0.0 - 161.141.255.255 { 0xa18e0000, 0xa18fffff, REGISTRY_APNIC }, // 161.142.0.0 - 161.143.255.255 { 0xa1900000, 0xa191ffff, REGISTRY_ARIN }, // 161.144.0.0 - 161.145.255.255 { 0xa1920000, 0xa192ffff, REGISTRY_APNIC }, // 161.146.0.0 - 161.146.255.255 { 0xa1930000, 0xa193ffff, REGISTRY_RIPENCC }, // 161.147.0.0 - 161.147.255.255 { 0xa1940000, 0xa194ffff, REGISTRY_LACNIC }, // 161.148.0.0 - 161.148.255.255 { 0xa1950000, 0xa197ffff, REGISTRY_ARIN }, // 161.149.0.0 - 161.151.255.255 { 0xa1980000, 0xa198ffff, REGISTRY_APNIC }, // 161.152.0.0 - 161.152.255.255 { 0xa1990000, 0xa19bffff, REGISTRY_ARIN }, // 161.153.0.0 - 161.155.255.255 { 0xa19c0000, 0xa19cffff, REGISTRY_RIPENCC }, // 161.156.0.0 - 161.156.255.255 { 0xa19d0000, 0xa19dffff, REGISTRY_ARIN }, // 161.157.0.0 - 161.157.255.255 { 0xa19e0000, 0xa19effff, REGISTRY_RIPENCC }, // 161.158.0.0 - 161.158.255.255 { 0xa19f0000, 0xa1bdffff, REGISTRY_ARIN }, // 161.159.0.0 - 161.189.255.255 { 0xa1be0000, 0xa1beffff, REGISTRY_LACNIC }, // 161.190.0.0 - 161.190.255.255 { 0xa1bf0000, 0xa1c3ffff, REGISTRY_ARIN }, // 161.191.0.0 - 161.195.255.255 { 0xa1c40000, 0xa1c4ffff, REGISTRY_LACNIC }, // 161.196.0.0 - 161.196.255.255 { 0xa1c50000, 0xa1c7ffff, REGISTRY_ARIN }, // 161.197.0.0 - 161.199.255.255 { 0xa1c80000, 0xa1c8ffff, REGISTRY_APNIC }, // 161.200.0.0 - 161.200.255.255 { 0xa1c90000, 0xa1c9ffff, REGISTRY_ARIN }, // 161.201.0.0 - 161.201.255.255 { 0xa1ca0000, 0xa1caffff, REGISTRY_RIPENCC }, // 161.202.0.0 - 161.202.255.255 { 0xa1cb0000, 0xa1ceffff, REGISTRY_ARIN }, // 161.203.0.0 - 161.206.255.255 { 0xa1cf0000, 0xa1cfffff, REGISTRY_APNIC }, // 161.207.0.0 - 161.207.255.255 { 0xa1d00000, 0xa1d3ffff, REGISTRY_ARIN }, // 161.208.0.0 - 161.211.255.255 { 0xa1d40000, 0xa1d4ffff, REGISTRY_LACNIC }, // 161.212.0.0 - 161.212.255.255 { 0xa1d50000, 0xa1d9ffff, REGISTRY_ARIN }, // 161.213.0.0 - 161.217.255.255 { 0xa1da0000, 0xa1daffff, REGISTRY_RIPENCC }, // 161.218.0.0 - 161.218.255.255 { 0xa1db0000, 0xa1e4ffff, REGISTRY_ARIN }, // 161.219.0.0 - 161.228.255.255 { 0xa1e50000, 0xa1e5ffff, REGISTRY_APNIC }, // 161.229.0.0 - 161.229.255.255 { 0xa1e60000, 0xa1e6ffff, REGISTRY_RIPENCC }, // 161.230.0.0 - 161.230.255.255 { 0xa1e70000, 0xa1e9ffff, REGISTRY_ARIN }, // 161.231.0.0 - 161.233.255.255 { 0xa1ea0000, 0xa1eaffff, REGISTRY_LACNIC }, // 161.234.0.0 - 161.234.255.255 { 0xa1eb0000, 0xa1edffff, REGISTRY_ARIN }, // 161.235.0.0 - 161.237.255.255 { 0xa1ee0000, 0xa1eeffff, REGISTRY_LACNIC }, // 161.238.0.0 - 161.238.255.255 { 0xa1ef0000, 0xa1f5ffff, REGISTRY_ARIN }, // 161.239.0.0 - 161.245.255.255 { 0xa1f60000, 0xa1f6ffff, REGISTRY_APNIC }, // 161.246.0.0 - 161.246.255.255 { 0xa1f70000, 0xa1f7ffff, REGISTRY_ARIN }, // 161.247.0.0 - 161.247.255.255 { 0xa1f90000, 0xa1faffff, REGISTRY_ARIN }, // 161.249.0.0 - 161.250.255.255 { 0xa1fb0000, 0xa1fbffff, REGISTRY_RIPENCC }, // 161.251.0.0 - 161.251.255.255 { 0xa1fc0000, 0xa1fcffff, REGISTRY_RIPENCC }, // 161.252.0.0 - 161.252.255.255 { 0xa1fd0000, 0xa1feffff, REGISTRY_ARIN }, // 161.253.0.0 - 161.254.255.255 { 0xa1ff0000, 0xa1ffffff, REGISTRY_LACNIC }, // 161.255.0.0 - 161.255.255.255 { 0xa2000000, 0xa203ffff, REGISTRY_ARIN }, // 162.0.0.0 - 162.3.255.255 { 0xa2050000, 0xa20affff, REGISTRY_ARIN }, // 162.5.0.0 - 162.10.255.255 { 0xa20b0000, 0xa20bffff, REGISTRY_RIPENCC }, // 162.11.0.0 - 162.11.255.255 { 0xa20c0000, 0xa20cc3ff, REGISTRY_ARIN }, // 162.12.0.0 - 162.12.195.255 { 0xa20cc400, 0xa20cc7ff, REGISTRY_LACNIC }, // 162.12.196.0 - 162.12.199.255 { 0xa20cd000, 0xa20cd7ff, REGISTRY_APNIC }, // 162.12.208.0 - 162.12.215.255 { 0xa20cd800, 0xa20cefff, REGISTRY_ARIN }, // 162.12.216.0 - 162.12.239.255 { 0xa20cf000, 0xa20cf7ff, REGISTRY_APNIC }, // 162.12.240.0 - 162.12.247.255 { 0xa20cf800, 0xa20cffff, REGISTRY_ARIN }, // 162.12.248.0 - 162.12.255.255 { 0xa20d0000, 0xa20dffff, REGISTRY_RIPENCC }, // 162.13.0.0 - 162.13.255.255 { 0xa20e0000, 0xa214ffff, REGISTRY_ARIN }, // 162.14.0.0 - 162.20.255.255 { 0xa2150000, 0xa215ffff, REGISTRY_RIPENCC }, // 162.21.0.0 - 162.21.255.255 { 0xa2160000, 0xa216ffff, REGISTRY_ARIN }, // 162.22.0.0 - 162.22.255.255 { 0xa2170000, 0xa217ffff, REGISTRY_RIPENCC }, // 162.23.0.0 - 162.23.255.255 { 0xa2180000, 0xa218ffff, REGISTRY_ARIN }, // 162.24.0.0 - 162.24.255.255 { 0xa2190000, 0xa21affff, REGISTRY_RIPENCC }, // 162.25.0.0 - 162.26.255.255 { 0xa21b0000, 0xa225ffff, REGISTRY_ARIN }, // 162.27.0.0 - 162.37.255.255 { 0xa2260000, 0xa226ffff, REGISTRY_RIPENCC }, // 162.38.0.0 - 162.38.255.255 { 0xa2270000, 0xa237ffff, REGISTRY_ARIN }, // 162.39.0.0 - 162.55.255.255 { 0xa2380000, 0xa238ffff, REGISTRY_APNIC }, // 162.56.0.0 - 162.56.255.255 { 0xa2390000, 0xa255ffff, REGISTRY_ARIN }, // 162.57.0.0 - 162.85.255.255 { 0xa2560000, 0xa256ffff, REGISTRY_RIPENCC }, // 162.86.0.0 - 162.86.255.255 { 0xa2570000, 0xa268ffff, REGISTRY_ARIN }, // 162.87.0.0 - 162.104.255.255 { 0xa2690000, 0xa269ffff, REGISTRY_APNIC }, // 162.105.0.0 - 162.105.255.255 { 0xa26a0000, 0xa26fffff, REGISTRY_ARIN }, // 162.106.0.0 - 162.111.255.255 { 0xa2700000, 0xa270ffff, REGISTRY_APNIC }, // 162.112.0.0 - 162.112.255.255 { 0xa2710000, 0xa279ffff, REGISTRY_ARIN }, // 162.113.0.0 - 162.121.255.255 { 0xa27a0000, 0xa27affff, REGISTRY_LACNIC }, // 162.122.0.0 - 162.122.255.255 { 0xa27b0000, 0xa284ffff, REGISTRY_ARIN }, // 162.123.0.0 - 162.132.255.255 { 0xa2850000, 0xa285ffff, REGISTRY_RIPENCC }, // 162.133.0.0 - 162.133.255.255 { 0xa2860000, 0xa290ffff, REGISTRY_ARIN }, // 162.134.0.0 - 162.144.255.255 { 0xa2910000, 0xa293ffff, REGISTRY_APNIC }, // 162.145.0.0 - 162.147.255.255 { 0xa2940000, 0xa2d9f7ff, REGISTRY_ARIN }, // 162.148.0.0 - 162.217.247.255 { 0xa2d9f800, 0xa2d9fbff, REGISTRY_RIPENCC }, // 162.217.248.0 - 162.217.251.255 { 0xa2d9fc00, 0xa2daafff, REGISTRY_ARIN }, // 162.217.252.0 - 162.218.175.255 { 0xa2dab000, 0xa2dab3ff, REGISTRY_RIPENCC }, // 162.218.176.0 - 162.218.179.255 { 0xa2dab400, 0xa2dcefff, REGISTRY_ARIN }, // 162.218.180.0 - 162.220.239.255 { 0xa2dcf000, 0xa2dcf7ff, REGISTRY_RIPENCC }, // 162.220.240.0 - 162.220.247.255 { 0xa2dcf800, 0xa2de57ff, REGISTRY_ARIN }, // 162.220.248.0 - 162.222.87.255 { 0xa2de5800, 0xa2de5aff, REGISTRY_RIPENCC }, // 162.222.88.0 - 162.222.90.255 { 0xa2de5b00, 0xa2ffffff, REGISTRY_ARIN }, // 162.222.91.0 - 162.255.255.255 { 0xa3000000, 0xa300ffff, REGISTRY_APNIC }, // 163.0.0.0 - 163.0.255.255 { 0xa3010000, 0xa301ffff, REGISTRY_RIPENCC }, // 163.1.0.0 - 163.1.255.255 { 0xa3020000, 0xa302ffff, REGISTRY_ARIN }, // 163.2.0.0 - 163.2.255.255 { 0xa3030000, 0xa303ffff, REGISTRY_RIPENCC }, // 163.3.0.0 - 163.3.255.255 { 0xa3040000, 0xa304ffff, REGISTRY_ARIN }, // 163.4.0.0 - 163.4.255.255 { 0xa3050000, 0xa305ffff, REGISTRY_RIPENCC }, // 163.5.0.0 - 163.5.255.255 { 0xa3060000, 0xa306ffff, REGISTRY_ARIN }, // 163.6.0.0 - 163.6.255.255 { 0xa3070000, 0xa308ffff, REGISTRY_APNIC }, // 163.7.0.0 - 163.8.255.255 { 0xa3090000, 0xa309ffff, REGISTRY_RIPENCC }, // 163.9.0.0 - 163.9.255.255 { 0xa30a0000, 0xa30affff, REGISTRY_LACNIC }, // 163.10.0.0 - 163.10.255.255 { 0xa30b0000, 0xa30cffff, REGISTRY_ARIN }, // 163.11.0.0 - 163.12.255.255 { 0xa30d0000, 0xa320ffff, REGISTRY_APNIC }, // 163.13.0.0 - 163.32.255.255 { 0xa3210000, 0xa321ffff, REGISTRY_ARIN }, // 163.33.0.0 - 163.33.255.255 { 0xa3220000, 0xa322ffff, REGISTRY_RIPENCC }, // 163.34.0.0 - 163.34.255.255 { 0xa3230000, 0xa329ffff, REGISTRY_ARIN }, // 163.35.0.0 - 163.41.255.255 { 0xa32a0000, 0xa32f15ff, REGISTRY_APNIC }, // 163.42.0.0 - 163.47.21.255 { 0xa32f1700, 0xa32f18ff, REGISTRY_APNIC }, // 163.47.23.0 - 163.47.24.255 { 0xa32f1d00, 0xa32f1dff, REGISTRY_APNIC }, // 163.47.29.0 - 163.47.29.255 { 0xa32f2000, 0xa32f2dff, REGISTRY_APNIC }, // 163.47.32.0 - 163.47.45.255 { 0xa32f2f00, 0xa333ffff, REGISTRY_APNIC }, // 163.47.47.0 - 163.51.255.255 { 0xa3350000, 0xa335ebff, REGISTRY_APNIC }, // 163.53.0.0 - 163.53.235.255 { 0xa335f000, 0xa338ffff, REGISTRY_APNIC }, // 163.53.240.0 - 163.56.255.255 { 0xa33a0000, 0xa33cffff, REGISTRY_APNIC }, // 163.58.0.0 - 163.60.255.255 { 0xa33e0000, 0xa375ffff, REGISTRY_RIPENCC }, // 163.62.0.0 - 163.117.255.255 { 0xa3760000, 0xa376ffff, REGISTRY_ARIN }, // 163.118.0.0 - 163.118.255.255 { 0xa3770000, 0xa377ffff, REGISTRY_RIPENCC }, // 163.119.0.0 - 163.119.255.255 { 0xa3780000, 0xa378ffff, REGISTRY_ARIN }, // 163.120.0.0 - 163.120.255.255 { 0xa3790000, 0xa379ffff, REGISTRY_AFRINIC }, // 163.121.0.0 - 163.121.255.255 { 0xa37a0000, 0xa37affff, REGISTRY_APNIC }, // 163.122.0.0 - 163.122.255.255 { 0xa37b0000, 0xa37cffff, REGISTRY_ARIN }, // 163.123.0.0 - 163.124.255.255 { 0xa37d0000, 0xa37dffff, REGISTRY_APNIC }, // 163.125.0.0 - 163.125.255.255 { 0xa37e0000, 0xa37effff, REGISTRY_ARIN }, // 163.126.0.0 - 163.126.255.255 { 0xa3810000, 0xa381ffff, REGISTRY_ARIN }, // 163.129.0.0 - 163.129.255.255 { 0xa3820000, 0xa395ffff, REGISTRY_APNIC }, // 163.130.0.0 - 163.149.255.255 { 0xa3960000, 0xa397ffff, REGISTRY_ARIN }, // 163.150.0.0 - 163.151.255.255 { 0xa3980000, 0xa398ffff, REGISTRY_APNIC }, // 163.152.0.0 - 163.152.255.255 { 0xa3990000, 0xa39bffff, REGISTRY_ARIN }, // 163.153.0.0 - 163.155.255.255 { 0xa39c0000, 0xa3afffff, REGISTRY_RIPENCC }, // 163.156.0.0 - 163.175.255.255 { 0xa3b00000, 0xa3b0ffff, REGISTRY_ARIN }, // 163.176.0.0 - 163.176.255.255 { 0xa3b10000, 0xa3b1ffff, REGISTRY_APNIC }, // 163.177.0.0 - 163.177.255.255 { 0xa3b20000, 0xa3b2ffff, REGISTRY_LACNIC }, // 163.178.0.0 - 163.178.255.255 { 0xa3b30000, 0xa3b4ffff, REGISTRY_APNIC }, // 163.179.0.0 - 163.180.255.255 { 0xa3b50000, 0xa3bcffff, REGISTRY_ARIN }, // 163.181.0.0 - 163.188.255.255 { 0xa3bd0000, 0xa3bdffff, REGISTRY_APNIC }, // 163.189.0.0 - 163.189.255.255 { 0xa3be0000, 0xa3c2ffff, REGISTRY_ARIN }, // 163.190.0.0 - 163.194.255.255 { 0xa3c30000, 0xa3cbffff, REGISTRY_AFRINIC }, // 163.195.0.0 - 163.203.255.255 { 0xa3cc0000, 0xa3ccffff, REGISTRY_APNIC }, // 163.204.0.0 - 163.204.255.255 { 0xa3cd0000, 0xa3cfffff, REGISTRY_ARIN }, // 163.205.0.0 - 163.207.255.255 { 0xa3d00000, 0xa3d7ffff, REGISTRY_APNIC }, // 163.208.0.0 - 163.215.255.255 { 0xa3d90000, 0xa3deffff, REGISTRY_APNIC }, // 163.217.0.0 - 163.222.255.255 { 0xa3e00000, 0xa3e2ffff, REGISTRY_APNIC }, // 163.224.0.0 - 163.226.255.255 { 0xa3e30100, 0xa3e301ff, REGISTRY_APNIC }, // 163.227.1.0 - 163.227.1.255 { 0xa3e31100, 0xa3e311ff, REGISTRY_APNIC }, // 163.227.17.0 - 163.227.17.255 { 0xa3e37d00, 0xa3e37dff, REGISTRY_APNIC }, // 163.227.125.0 - 163.227.125.255 { 0xa3e3dd00, 0xa3e3ddff, REGISTRY_APNIC }, // 163.227.221.0 - 163.227.221.255 { 0xa3e3e100, 0xa3e3e3ff, REGISTRY_APNIC }, // 163.227.225.0 - 163.227.227.255 { 0xa3e3e900, 0xa3e3eaff, REGISTRY_APNIC }, // 163.227.233.0 - 163.227.234.255 { 0xa3e3f100, 0xa3e3f3ff, REGISTRY_APNIC }, // 163.227.241.0 - 163.227.243.255 { 0xa3e3fe00, 0xa3e3feff, REGISTRY_APNIC }, // 163.227.254.0 - 163.227.254.255 { 0xa3e40000, 0xa3e4ffff, REGISTRY_ARIN }, // 163.228.0.0 - 163.228.255.255 { 0xa3e50000, 0xa3e5ffff, REGISTRY_APNIC }, // 163.229.0.0 - 163.229.255.255 { 0xa3e60000, 0xa3e7ffff, REGISTRY_ARIN }, // 163.230.0.0 - 163.231.255.255 { 0xa3e80000, 0xa3e9ffff, REGISTRY_APNIC }, // 163.232.0.0 - 163.233.255.255 { 0xa3ea0000, 0xa3eeffff, REGISTRY_ARIN }, // 163.234.0.0 - 163.238.255.255 { 0xa3ef0000, 0xa3efffff, REGISTRY_APNIC }, // 163.239.0.0 - 163.239.255.255 { 0xa3f00000, 0xa3f1ffff, REGISTRY_ARIN }, // 163.240.0.0 - 163.241.255.255 { 0xa3f20000, 0xa3f2ffff, REGISTRY_RIPENCC }, // 163.242.0.0 - 163.242.255.255 { 0xa3f30000, 0xa3f6ffff, REGISTRY_ARIN }, // 163.243.0.0 - 163.246.255.255 { 0xa3f70000, 0xa3f7ffff, REGISTRY_LACNIC }, // 163.247.0.0 - 163.247.255.255 { 0xa3f80000, 0xa3f9ffff, REGISTRY_ARIN }, // 163.248.0.0 - 163.249.255.255 { 0xa3fa0000, 0xa3faffff, REGISTRY_LACNIC }, // 163.250.0.0 - 163.250.255.255 { 0xa3fb0000, 0xa3feffff, REGISTRY_ARIN }, // 163.251.0.0 - 163.254.255.255 { 0xa3ff0000, 0xa3ffffff, REGISTRY_APNIC }, // 163.255.0.0 - 163.255.255.255 { 0xa4000000, 0xa400ffff, REGISTRY_RIPENCC }, // 164.0.0.0 - 164.0.255.255 { 0xa4010000, 0xa40fffff, REGISTRY_RIPENCC }, // 164.1.0.0 - 164.15.255.255 { 0xa4100000, 0xa423ffff, REGISTRY_RIPENCC }, // 164.16.0.0 - 164.35.255.255 { 0xa4240000, 0xa427ffff, REGISTRY_RIPENCC }, // 164.36.0.0 - 164.39.255.255 { 0xa4280000, 0xa428b7ff, REGISTRY_RIPENCC }, // 164.40.0.0 - 164.40.183.255 { 0xa428c000, 0xa428ffff, REGISTRY_RIPENCC }, // 164.40.192.0 - 164.40.255.255 { 0xa4290000, 0xa429ffff, REGISTRY_LACNIC }, // 164.41.0.0 - 164.41.255.255 { 0xa42a0000, 0xa42affff, REGISTRY_ARIN }, // 164.42.0.0 - 164.42.255.255 { 0xa42b0000, 0xa42bffff, REGISTRY_APNIC }, // 164.43.0.0 - 164.43.255.255 { 0xa42c0000, 0xa42dffff, REGISTRY_ARIN }, // 164.44.0.0 - 164.45.255.255 { 0xa42e0000, 0xa42effff, REGISTRY_APNIC }, // 164.46.0.0 - 164.46.255.255 { 0xa42f0000, 0xa42fffff, REGISTRY_ARIN }, // 164.47.0.0 - 164.47.255.255 { 0xa4300000, 0xa430ffff, REGISTRY_RIPENCC }, // 164.48.0.0 - 164.48.255.255 { 0xa4310000, 0xa433ffff, REGISTRY_ARIN }, // 164.49.0.0 - 164.51.255.255 { 0xa4340000, 0xa4347fff, REGISTRY_APNIC }, // 164.52.0.0 - 164.52.127.255 { 0xa4348000, 0xa434bfff, REGISTRY_ARIN }, // 164.52.128.0 - 164.52.191.255 { 0xa434c000, 0xa434dfff, REGISTRY_APNIC }, // 164.52.192.0 - 164.52.223.255 { 0xa434e000, 0xa434ffff, REGISTRY_ARIN }, // 164.52.224.0 - 164.52.255.255 { 0xa4350000, 0xa435ffff, REGISTRY_APNIC }, // 164.53.0.0 - 164.53.255.255 { 0xa4360000, 0xa43affff, REGISTRY_ARIN }, // 164.54.0.0 - 164.58.255.255 { 0xa43b0000, 0xa43dffff, REGISTRY_RIPENCC }, // 164.59.0.0 - 164.61.255.255 { 0xa43e0000, 0xa444ffff, REGISTRY_ARIN }, // 164.62.0.0 - 164.68.255.255 { 0xa4450000, 0xa447ffff, REGISTRY_APNIC }, // 164.69.0.0 - 164.71.255.255 { 0xa4480000, 0xa448ffff, REGISTRY_ARIN }, // 164.72.0.0 - 164.72.255.255 { 0xa4490000, 0xa449ffff, REGISTRY_LACNIC }, // 164.73.0.0 - 164.73.255.255 { 0xa44a0000, 0xa44affff, REGISTRY_ARIN }, // 164.74.0.0 - 164.74.255.255 { 0xa44b0000, 0xa44bffff, REGISTRY_APNIC }, // 164.75.0.0 - 164.75.255.255 { 0xa44c0000, 0xa44cffff, REGISTRY_ARIN }, // 164.76.0.0 - 164.76.255.255 { 0xa44d0000, 0xa44dffff, REGISTRY_LACNIC }, // 164.77.0.0 - 164.77.255.255 { 0xa44e0000, 0xa44effff, REGISTRY_APNIC }, // 164.78.0.0 - 164.78.255.255 { 0xa44f0000, 0xa44fffff, REGISTRY_ARIN }, // 164.79.0.0 - 164.79.255.255 { 0xa4500000, 0xa450ffff, REGISTRY_APNIC }, // 164.80.0.0 - 164.80.255.255 { 0xa4510000, 0xa451ffff, REGISTRY_RIPENCC }, // 164.81.0.0 - 164.81.255.255 { 0xa4520000, 0xa454ffff, REGISTRY_ARIN }, // 164.82.0.0 - 164.84.255.255 { 0xa4550000, 0xa455ffff, REGISTRY_LACNIC }, // 164.85.0.0 - 164.85.255.255 { 0xa4560000, 0xa457ffff, REGISTRY_ARIN }, // 164.86.0.0 - 164.87.255.255 { 0xa4580000, 0xa458ffff, REGISTRY_AFRINIC }, // 164.88.0.0 - 164.88.255.255 { 0xa4590000, 0xa45fffff, REGISTRY_ARIN }, // 164.89.0.0 - 164.95.255.255 { 0xa4600000, 0xa460ffff, REGISTRY_LACNIC }, // 164.96.0.0 - 164.96.255.255 { 0xa4610000, 0xa461ffff, REGISTRY_APNIC }, // 164.97.0.0 - 164.97.255.255 { 0xa4620000, 0xa462ffff, REGISTRY_LACNIC }, // 164.98.0.0 - 164.98.255.255 { 0xa4630000, 0xa463ffff, REGISTRY_ARIN }, // 164.99.0.0 - 164.99.255.255 { 0xa4640000, 0xa464ffff, REGISTRY_APNIC }, // 164.100.0.0 - 164.100.255.255 { 0xa4650000, 0xa46bffff, REGISTRY_ARIN }, // 164.101.0.0 - 164.107.255.255 { 0xa46c0000, 0xa46cffff, REGISTRY_APNIC }, // 164.108.0.0 - 164.108.255.255 { 0xa46d0000, 0xa46fffff, REGISTRY_ARIN }, // 164.109.0.0 - 164.111.255.255 { 0xa4700000, 0xa470ffff, REGISTRY_APNIC }, // 164.112.0.0 - 164.112.255.255 { 0xa4710000, 0xa472ffff, REGISTRY_ARIN }, // 164.113.0.0 - 164.114.255.255 { 0xa4730000, 0xa473ffff, REGISTRY_APNIC }, // 164.115.0.0 - 164.115.255.255 { 0xa4740000, 0xa47bffff, REGISTRY_ARIN }, // 164.116.0.0 - 164.123.255.255 { 0xa47c0000, 0xa47dffff, REGISTRY_APNIC }, // 164.124.0.0 - 164.125.255.255 { 0xa47e0000, 0xa480ffff, REGISTRY_RIPENCC }, // 164.126.0.0 - 164.128.255.255 { 0xa4810000, 0xa489ffff, REGISTRY_RIPENCC }, // 164.129.0.0 - 164.137.255.255 { 0xa48a0000, 0xa48a5fff, REGISTRY_RIPENCC }, // 164.138.0.0 - 164.138.95.255 { 0xa48a6800, 0xa48affff, REGISTRY_RIPENCC }, // 164.138.104.0 - 164.138.255.255 { 0xa48b0000, 0xa48fffff, REGISTRY_RIPENCC }, // 164.139.0.0 - 164.143.255.255 { 0xa4900000, 0xa491ffff, REGISTRY_ARIN }, // 164.144.0.0 - 164.145.255.255 { 0xa4920000, 0xa497ffff, REGISTRY_AFRINIC }, // 164.146.0.0 - 164.151.255.255 { 0xa4980000, 0xa49affff, REGISTRY_ARIN }, // 164.152.0.0 - 164.154.255.255 { 0xa49b0000, 0xa49bffff, REGISTRY_AFRINIC }, // 164.155.0.0 - 164.155.255.255 { 0xa49c0000, 0xa49fffff, REGISTRY_ARIN }, // 164.156.0.0 - 164.159.255.255 { 0xa4a00000, 0xa4a0ffff, REGISTRY_AFRINIC }, // 164.160.0.0 - 164.160.255.255 { 0xa4a10000, 0xa4a2ffff, REGISTRY_APNIC }, // 164.161.0.0 - 164.162.255.255 { 0xa4a40000, 0xa4a4ffff, REGISTRY_APNIC }, // 164.164.0.0 - 164.164.255.255 { 0xa4a50000, 0xa4b0ffff, REGISTRY_ARIN }, // 164.165.0.0 - 164.176.255.255 { 0xa4b10000, 0xa4b1ffff, REGISTRY_RIPENCC }, // 164.177.0.0 - 164.177.255.255 { 0xa4b20000, 0xa4d6ffff, REGISTRY_ARIN }, // 164.178.0.0 - 164.214.255.255 { 0xa4d70000, 0xa4d7ffff, REGISTRY_RIPENCC }, // 164.215.0.0 - 164.215.255.255 { 0xa4d80000, 0xa4ffffff, REGISTRY_ARIN }, // 164.216.0.0 - 164.255.255.255 { 0xa5000000, 0xa500ffff, REGISTRY_AFRINIC }, // 165.0.0.0 - 165.0.255.255 { 0xa5010000, 0xa502ffff, REGISTRY_ARIN }, // 165.1.0.0 - 165.2.255.255 { 0xa5030000, 0xa505ffff, REGISTRY_AFRINIC }, // 165.3.0.0 - 165.5.255.255 { 0xa5060000, 0xa507ffff, REGISTRY_ARIN }, // 165.6.0.0 - 165.7.255.255 { 0xa5080000, 0xa50bffff, REGISTRY_AFRINIC }, // 165.8.0.0 - 165.11.255.255 { 0xa50c0000, 0xa50cffff, REGISTRY_APNIC }, // 165.12.0.0 - 165.12.255.255 { 0xa50d0000, 0xa50dffff, REGISTRY_ARIN }, // 165.13.0.0 - 165.13.255.255 { 0xa50e0000, 0xa50effff, REGISTRY_APNIC }, // 165.14.0.0 - 165.14.255.255 { 0xa5100000, 0xa510ffff, REGISTRY_AFRINIC }, // 165.16.0.0 - 165.16.255.255 { 0xa5130000, 0xa514ffff, REGISTRY_ARIN }, // 165.19.0.0 - 165.20.255.255 { 0xa5150000, 0xa515ffff, REGISTRY_APNIC }, // 165.21.0.0 - 165.21.255.255 { 0xa5160000, 0xa518ffff, REGISTRY_ARIN }, // 165.22.0.0 - 165.24.255.255 { 0xa5190000, 0xa519ffff, REGISTRY_AFRINIC }, // 165.25.0.0 - 165.25.255.255 { 0xa51a0000, 0xa51effff, REGISTRY_ARIN }, // 165.26.0.0 - 165.30.255.255 { 0xa51f0000, 0xa51fffff, REGISTRY_APNIC }, // 165.31.0.0 - 165.31.255.255 { 0xa5200000, 0xa529ffff, REGISTRY_ARIN }, // 165.32.0.0 - 165.41.255.255 { 0xa52a0000, 0xa52bffff, REGISTRY_APNIC }, // 165.42.0.0 - 165.43.255.255 { 0xa52c0000, 0xa530ffff, REGISTRY_ARIN }, // 165.44.0.0 - 165.48.255.255 { 0xa5310000, 0xa53fffff, REGISTRY_AFRINIC }, // 165.49.0.0 - 165.63.255.255 { 0xa5400000, 0xa542ffff, REGISTRY_ARIN }, // 165.64.0.0 - 165.66.255.255 { 0xa5440000, 0xa544ffff, REGISTRY_ARIN }, // 165.68.0.0 - 165.68.255.255 { 0xa5450000, 0xa545ffff, REGISTRY_APNIC }, // 165.69.0.0 - 165.69.255.255 { 0xa5460000, 0xa548ffff, REGISTRY_ARIN }, // 165.70.0.0 - 165.72.255.255 { 0xa5490000, 0xa549bfff, REGISTRY_AFRINIC }, // 165.73.0.0 - 165.73.191.255 { 0xa549e000, 0xa549e7ff, REGISTRY_AFRINIC }, // 165.73.224.0 - 165.73.231.255 { 0xa549ec00, 0xa549ffff, REGISTRY_AFRINIC }, // 165.73.236.0 - 165.73.255.255 { 0xa54a0000, 0xa54bffff, REGISTRY_ARIN }, // 165.74.0.0 - 165.75.255.255 { 0xa54c0000, 0xa54cffff, REGISTRY_APNIC }, // 165.76.0.0 - 165.76.255.255 { 0xa54d0000, 0xa553ffff, REGISTRY_ARIN }, // 165.77.0.0 - 165.83.255.255 { 0xa5540000, 0xa554cfff, REGISTRY_APNIC }, // 165.84.0.0 - 165.84.207.255 { 0xa554d000, 0xa554dfff, REGISTRY_RIPENCC }, // 165.84.208.0 - 165.84.223.255 { 0xa554e000, 0xa554e7ff, REGISTRY_ARIN }, // 165.84.224.0 - 165.84.231.255 { 0xa554e800, 0xa554ffff, REGISTRY_APNIC }, // 165.84.232.0 - 165.84.255.255 { 0xa5550000, 0xa555ffff, REGISTRY_ARIN }, // 165.85.0.0 - 165.85.255.255 { 0xa5560000, 0xa556ffff, REGISTRY_APNIC }, // 165.86.0.0 - 165.86.255.255 { 0xa5570000, 0xa559ffff, REGISTRY_ARIN }, // 165.87.0.0 - 165.89.255.255 { 0xa55a0000, 0xa55affff, REGISTRY_AFRINIC }, // 165.90.0.0 - 165.90.255.255 { 0xa55b0000, 0xa55cffff, REGISTRY_ARIN }, // 165.91.0.0 - 165.92.255.255 { 0xa55d0000, 0xa55dffff, REGISTRY_APNIC }, // 165.93.0.0 - 165.93.255.255 { 0xa55e0000, 0xa55fffff, REGISTRY_ARIN }, // 165.94.0.0 - 165.95.255.255 { 0xa5600000, 0xa560ffff, REGISTRY_APNIC }, // 165.96.0.0 - 165.96.255.255 { 0xa5610000, 0xa561ffff, REGISTRY_ARIN }, // 165.97.0.0 - 165.97.255.255 { 0xa5620000, 0xa562ffff, REGISTRY_LACNIC }, // 165.98.0.0 - 165.98.255.255 { 0xa5640000, 0xa56503ff, REGISTRY_APNIC }, // 165.100.0.0 - 165.101.3.255 { 0xa5660000, 0xa566ffff, REGISTRY_APNIC }, // 165.102.0.0 - 165.102.255.255 { 0xa5670000, 0xa56bffff, REGISTRY_ARIN }, // 165.103.0.0 - 165.107.255.255 { 0xa56c0000, 0xa56cffff, REGISTRY_APNIC }, // 165.108.0.0 - 165.108.255.255 { 0xa56d0000, 0xa571ffff, REGISTRY_ARIN }, // 165.109.0.0 - 165.113.255.255 { 0xa5720000, 0xa572ffff, REGISTRY_RIPENCC }, // 165.114.0.0 - 165.114.255.255 { 0xa5730000, 0xa575ffff, REGISTRY_ARIN }, // 165.115.0.0 - 165.117.255.255 { 0xa5760000, 0xa576ffff, REGISTRY_APNIC }, // 165.118.0.0 - 165.118.255.255 { 0xa5770000, 0xa583ffff, REGISTRY_ARIN }, // 165.119.0.0 - 165.131.255.255 { 0xa5840000, 0xa585ffff, REGISTRY_APNIC }, // 165.132.0.0 - 165.133.255.255 { 0xa5860000, 0xa58cffff, REGISTRY_ARIN }, // 165.134.0.0 - 165.140.255.255 { 0xa58d0000, 0xa58effff, REGISTRY_APNIC }, // 165.141.0.0 - 165.142.255.255 { 0xa58f0000, 0xa595ffff, REGISTRY_AFRINIC }, // 165.143.0.0 - 165.149.255.255 { 0xa5960000, 0xa5a4ffff, REGISTRY_ARIN }, // 165.150.0.0 - 165.164.255.255 { 0xa5a50000, 0xa5a5ffff, REGISTRY_AFRINIC }, // 165.165.0.0 - 165.165.255.255 { 0xa5a60000, 0xa5a8ffff, REGISTRY_ARIN }, // 165.166.0.0 - 165.168.255.255 { 0xa5a90000, 0xa5a9ffff, REGISTRY_AFRINIC }, // 165.169.0.0 - 165.169.255.255 { 0xa5aa0000, 0xa5b3ffff, REGISTRY_ARIN }, // 165.170.0.0 - 165.179.255.255 { 0xa5b40000, 0xa5b4ffff, REGISTRY_AFRINIC }, // 165.180.0.0 - 165.180.255.255 { 0xa5b50000, 0xa5b5ffff, REGISTRY_ARIN }, // 165.181.0.0 - 165.181.255.255 { 0xa5b60000, 0xa5b7ffff, REGISTRY_LACNIC }, // 165.182.0.0 - 165.183.255.255 { 0xa5b80000, 0xa5b9ffff, REGISTRY_ARIN }, // 165.184.0.0 - 165.185.255.255 { 0xa5ba0000, 0xa5bbffff, REGISTRY_APNIC }, // 165.186.0.0 - 165.187.255.255 { 0xa5bc0000, 0xa5beffff, REGISTRY_ARIN }, // 165.188.0.0 - 165.190.255.255 { 0xa5bf0000, 0xa5bfffff, REGISTRY_APNIC }, // 165.191.0.0 - 165.191.255.255 { 0xa5c00000, 0xa5c0ffff, REGISTRY_RIPENCC }, // 165.192.0.0 - 165.192.255.255 { 0xa5c10000, 0xa5c1ffff, REGISTRY_ARIN }, // 165.193.0.0 - 165.193.255.255 { 0xa5c20000, 0xa5c2ffff, REGISTRY_APNIC }, // 165.194.0.0 - 165.194.255.255 { 0xa5c30000, 0xa5c9ffff, REGISTRY_ARIN }, // 165.195.0.0 - 165.201.255.255 { 0xa5ca0000, 0xa5caffff, REGISTRY_APNIC }, // 165.202.0.0 - 165.202.255.255 { 0xa5cb0000, 0xa5ccffff, REGISTRY_ARIN }, // 165.203.0.0 - 165.204.255.255 { 0xa5cd0000, 0xa5cdffff, REGISTRY_APNIC }, // 165.205.0.0 - 165.205.255.255 { 0xa5ce0000, 0xa5d0ffff, REGISTRY_ARIN }, // 165.206.0.0 - 165.208.255.255 { 0xa5d10000, 0xa5d1ffff, REGISTRY_APNIC }, // 165.209.0.0 - 165.209.255.255 { 0xa5d20000, 0xa5d3ffff, REGISTRY_AFRINIC }, // 165.210.0.0 - 165.211.255.255 { 0xa5d40000, 0xa5d4ffff, REGISTRY_ARIN }, // 165.212.0.0 - 165.212.255.255 { 0xa5d50000, 0xa5d5ffff, REGISTRY_APNIC }, // 165.213.0.0 - 165.213.255.255 { 0xa5d60000, 0xa5d9ffff, REGISTRY_ARIN }, // 165.214.0.0 - 165.217.255.255 { 0xa5da0000, 0xa5daffff, REGISTRY_RIPENCC }, // 165.218.0.0 - 165.218.255.255 { 0xa5db0000, 0xa5dbffff, REGISTRY_ARIN }, // 165.219.0.0 - 165.219.255.255 { 0xa5dc0000, 0xa5dcffff, REGISTRY_APNIC }, // 165.220.0.0 - 165.220.255.255 { 0xa5dd0000, 0xa5ddffff, REGISTRY_ARIN }, // 165.221.0.0 - 165.221.255.255 { 0xa5de0000, 0xa5deffff, REGISTRY_RIPENCC }, // 165.222.0.0 - 165.222.255.255 { 0xa5df0000, 0xa5e3ffff, REGISTRY_ARIN }, // 165.223.0.0 - 165.227.255.255 { 0xa5e40000, 0xa5e5ffff, REGISTRY_APNIC }, // 165.228.0.0 - 165.229.255.255 { 0xa5e60000, 0xa5e6ffff, REGISTRY_ARIN }, // 165.230.0.0 - 165.230.255.255 { 0xa5e70000, 0xa5e7ffff, REGISTRY_AFRINIC }, // 165.231.0.0 - 165.231.255.255 { 0xa5e80000, 0xa5e8ffff, REGISTRY_ARIN }, // 165.232.0.0 - 165.232.255.255 { 0xa5e90000, 0xa5e9ffff, REGISTRY_AFRINIC }, // 165.233.0.0 - 165.233.255.255 { 0xa5ea0000, 0xa5efffff, REGISTRY_ARIN }, // 165.234.0.0 - 165.239.255.255 { 0xa5f00000, 0xa5f4ffff, REGISTRY_APNIC }, // 165.240.0.0 - 165.244.255.255 { 0xa5f50000, 0xa5f5ffff, REGISTRY_ARIN }, // 165.245.0.0 - 165.245.255.255 { 0xa5f60000, 0xa5f6ffff, REGISTRY_APNIC }, // 165.246.0.0 - 165.246.255.255 { 0xa5f70000, 0xa5feffff, REGISTRY_ARIN }, // 165.247.0.0 - 165.254.255.255 { 0xa5ff0000, 0xa5ffffff, REGISTRY_AFRINIC }, // 165.255.0.0 - 165.255.255.255 { 0xa6000000, 0xa607ffff, REGISTRY_ARIN }, // 166.0.0.0 - 166.7.255.255 { 0xa6080000, 0xa60fffff, REGISTRY_RIPENCC }, // 166.8.0.0 - 166.15.255.255 { 0xa6100000, 0xa6317fff, REGISTRY_ARIN }, // 166.16.0.0 - 166.49.127.255 { 0xa6318000, 0xa631ffff, REGISTRY_RIPENCC }, // 166.49.128.0 - 166.49.255.255 { 0xa6320000, 0xa63fffff, REGISTRY_ARIN }, // 166.50.0.0 - 166.63.255.255 { 0xa6400000, 0xa641ffff, REGISTRY_APNIC }, // 166.64.0.0 - 166.65.255.255 { 0xa6420000, 0xa64affff, REGISTRY_ARIN }, // 166.66.0.0 - 166.74.255.255 { 0xa64b0000, 0xa64bffff, REGISTRY_LACNIC }, // 166.75.0.0 - 166.75.255.255 { 0xa64c0000, 0xa64effff, REGISTRY_ARIN }, // 166.76.0.0 - 166.78.255.255 { 0xa64f0000, 0xa64fffff, REGISTRY_APNIC }, // 166.79.0.0 - 166.79.255.255 { 0xa6500000, 0xa650ffff, REGISTRY_ARIN }, // 166.80.0.0 - 166.80.255.255 { 0xa6510000, 0xa651ffff, REGISTRY_APNIC }, // 166.81.0.0 - 166.81.255.255 { 0xa6520000, 0xa652ffff, REGISTRY_ARIN }, // 166.82.0.0 - 166.82.255.255 { 0xa6530000, 0xa653ffff, REGISTRY_APNIC }, // 166.83.0.0 - 166.83.255.255 { 0xa6540000, 0xa654ffff, REGISTRY_ARIN }, // 166.84.0.0 - 166.84.255.255 { 0xa6550000, 0xa655ffff, REGISTRY_AFRINIC }, // 166.85.0.0 - 166.85.255.255 { 0xa6560000, 0xa656ffff, REGISTRY_ARIN }, // 166.86.0.0 - 166.86.255.255 { 0xa6570000, 0xa657ffff, REGISTRY_RIPENCC }, // 166.87.0.0 - 166.87.255.255 { 0xa6580000, 0xa663ffff, REGISTRY_ARIN }, // 166.88.0.0 - 166.99.255.255 { 0xa6640000, 0xa664ffff, REGISTRY_APNIC }, // 166.100.0.0 - 166.100.255.255 { 0xa6650000, 0xa666ffff, REGISTRY_ARIN }, // 166.101.0.0 - 166.102.255.255 { 0xa6670000, 0xa668ffff, REGISTRY_APNIC }, // 166.103.0.0 - 166.104.255.255 { 0xa6690000, 0xa669ffff, REGISTRY_ARIN }, // 166.105.0.0 - 166.105.255.255 { 0xa66b0000, 0xa66dffff, REGISTRY_ARIN }, // 166.107.0.0 - 166.109.255.255 { 0xa66e0000, 0xa66effff, REGISTRY_LACNIC }, // 166.110.0.0 - 166.110.255.255 { 0xa66f0000, 0xa66fffff, REGISTRY_APNIC }, // 166.111.0.0 - 166.111.255.255 { 0xa6700000, 0xa671ffff, REGISTRY_ARIN }, // 166.112.0.0 - 166.113.255.255 { 0xa6720000, 0xa672ffff, REGISTRY_LACNIC }, // 166.114.0.0 - 166.114.255.255 { 0xa6730000, 0xa675ffff, REGISTRY_ARIN }, // 166.115.0.0 - 166.117.255.255 { 0xa6760000, 0xa679ffff, REGISTRY_APNIC }, // 166.118.0.0 - 166.121.255.255 { 0xa67a0000, 0xa67cffff, REGISTRY_ARIN }, // 166.122.0.0 - 166.124.255.255 { 0xa67d0000, 0xa67dffff, REGISTRY_APNIC }, // 166.125.0.0 - 166.125.255.255 { 0xa67e0000, 0xa6ffffff, REGISTRY_ARIN }, // 166.126.0.0 - 166.255.255.255 { 0xa7000000, 0xa700ffff, REGISTRY_LACNIC }, // 167.0.0.0 - 167.0.255.255 { 0xa7010000, 0xa71bffff, REGISTRY_ARIN }, // 167.1.0.0 - 167.27.255.255 { 0xa71c0000, 0xa71cffff, REGISTRY_LACNIC }, // 167.28.0.0 - 167.28.255.255 { 0xa71d0000, 0xa71dffff, REGISTRY_ARIN }, // 167.29.0.0 - 167.29.255.255 { 0xa71e0000, 0xa71effff, REGISTRY_APNIC }, // 167.30.0.0 - 167.30.255.255 { 0xa71f0000, 0xa737ffff, REGISTRY_ARIN }, // 167.31.0.0 - 167.55.255.255 { 0xa7380000, 0xa73fffff, REGISTRY_LACNIC }, // 167.56.0.0 - 167.63.255.255 { 0xa7400000, 0xa750ffff, REGISTRY_ARIN }, // 167.64.0.0 - 167.80.255.255 { 0xa7510000, 0xa751ffff, REGISTRY_RIPENCC }, // 167.81.0.0 - 167.81.255.255 { 0xa7520000, 0xa756ffff, REGISTRY_ARIN }, // 167.82.0.0 - 167.86.255.255 { 0xa7570000, 0xa757ffff, REGISTRY_RIPENCC }, // 167.87.0.0 - 167.87.255.255 { 0xa7580000, 0xa761ffff, REGISTRY_ARIN }, // 167.88.0.0 - 167.97.255.255 { 0xa7620000, 0xa762ffff, REGISTRY_RIPENCC }, // 167.98.0.0 - 167.98.255.255 { 0xa7630000, 0xa766ffff, REGISTRY_ARIN }, // 167.99.0.0 - 167.102.255.255 { 0xa7670000, 0xa767ffff, REGISTRY_APNIC }, // 167.103.0.0 - 167.103.255.255 { 0xa7680000, 0xa76bffff, REGISTRY_ARIN }, // 167.104.0.0 - 167.107.255.255 { 0xa76c0000, 0xa76cffff, REGISTRY_LACNIC }, // 167.108.0.0 - 167.108.255.255 { 0xa76d0000, 0xa76effff, REGISTRY_ARIN }, // 167.109.0.0 - 167.110.255.255 { 0xa76f0000, 0xa76fffff, REGISTRY_RIPENCC }, // 167.111.0.0 - 167.111.255.255 { 0xa7700000, 0xa773ffff, REGISTRY_ARIN }, // 167.112.0.0 - 167.115.255.255 { 0xa7740000, 0xa774ffff, REGISTRY_LACNIC }, // 167.116.0.0 - 167.116.255.255 { 0xa7750000, 0xa77affff, REGISTRY_ARIN }, // 167.117.0.0 - 167.122.255.255 { 0xa77b0000, 0xa77bffff, REGISTRY_APNIC }, // 167.123.0.0 - 167.123.255.255 { 0xa77c0000, 0xa781ffff, REGISTRY_ARIN }, // 167.124.0.0 - 167.129.255.255 { 0xa7820000, 0xa782ffff, REGISTRY_APNIC }, // 167.130.0.0 - 167.130.255.255 { 0xa7830000, 0xa785ffff, REGISTRY_ARIN }, // 167.131.0.0 - 167.133.255.255 { 0xa7860000, 0xa786ffff, REGISTRY_LACNIC }, // 167.134.0.0 - 167.134.255.255 { 0xa7870000, 0xa78affff, REGISTRY_ARIN }, // 167.135.0.0 - 167.138.255.255 { 0xa78b0000, 0xa78bffff, REGISTRY_APNIC }, // 167.139.0.0 - 167.139.255.255 { 0xa78c0000, 0xa79cffff, REGISTRY_ARIN }, // 167.140.0.0 - 167.156.255.255 { 0xa79d0000, 0xa79dffff, REGISTRY_LACNIC }, // 167.157.0.0 - 167.157.255.255 { 0xa79e0000, 0xa79fffff, REGISTRY_ARIN }, // 167.158.0.0 - 167.159.255.255 { 0xa7a00000, 0xa7a01fff, REGISTRY_RIPENCC }, // 167.160.0.0 - 167.160.31.255 { 0xa7a02000, 0xa7a1ffff, REGISTRY_ARIN }, // 167.160.32.0 - 167.161.255.255 { 0xa7a20000, 0xa7a2ffff, REGISTRY_APNIC }, // 167.162.0.0 - 167.162.255.255 { 0xa7a30000, 0xa7a7ffff, REGISTRY_ARIN }, // 167.163.0.0 - 167.167.255.255 { 0xa7a80000, 0xa7a8ffff, REGISTRY_RIPENCC }, // 167.168.0.0 - 167.168.255.255 { 0xa7a90000, 0xa7a9ffff, REGISTRY_APNIC }, // 167.169.0.0 - 167.169.255.255 { 0xa7aa0000, 0xa7abffff, REGISTRY_ARIN }, // 167.170.0.0 - 167.171.255.255 { 0xa7ac0000, 0xa7acffff, REGISTRY_RIPENCC }, // 167.172.0.0 - 167.172.255.255 { 0xa7ad0000, 0xa7aeffff, REGISTRY_ARIN }, // 167.173.0.0 - 167.174.255.255 { 0xa7af0000, 0xa7afffff, REGISTRY_APNIC }, // 167.175.0.0 - 167.175.255.255 { 0xa7b00000, 0xa7b2ffff, REGISTRY_ARIN }, // 167.176.0.0 - 167.178.255.255 { 0xa7b30000, 0xa7b3ffff, REGISTRY_APNIC }, // 167.179.0.0 - 167.179.255.255 { 0xa7b40000, 0xa7bcffff, REGISTRY_ARIN }, // 167.180.0.0 - 167.188.255.255 { 0xa7bd0000, 0xa7bdffff, REGISTRY_APNIC }, // 167.189.0.0 - 167.189.255.255 { 0xa7be0000, 0xa7caffff, REGISTRY_ARIN }, // 167.190.0.0 - 167.202.255.255 { 0xa7cb0000, 0xa7cbffff, REGISTRY_RIPENCC }, // 167.203.0.0 - 167.203.255.255 { 0xa7cc0000, 0xa7ccffff, REGISTRY_ARIN }, // 167.204.0.0 - 167.204.255.255 { 0xa7cd0000, 0xa7cdffff, REGISTRY_APNIC }, // 167.205.0.0 - 167.205.255.255 { 0xa7ce0000, 0xa7db2fff, REGISTRY_ARIN }, // 167.206.0.0 - 167.219.47.255 { 0xa7db3000, 0xa7db3fff, REGISTRY_APNIC }, // 167.219.48.0 - 167.219.63.255 { 0xa7db4000, 0xa7dcdfff, REGISTRY_ARIN }, // 167.219.64.0 - 167.220.223.255 { 0xa7dce000, 0xa7dcffff, REGISTRY_APNIC }, // 167.220.224.0 - 167.220.255.255 { 0xa7dd0000, 0xa7e8ffff, REGISTRY_ARIN }, // 167.221.0.0 - 167.232.255.255 { 0xa7e90000, 0xa7e9ffff, REGISTRY_RIPENCC }, // 167.233.0.0 - 167.233.255.255 { 0xa7ea0000, 0xa7f8ffff, REGISTRY_ARIN }, // 167.234.0.0 - 167.248.255.255 { 0xa7f90000, 0xa7faffff, REGISTRY_LACNIC }, // 167.249.0.0 - 167.250.255.255 { 0xa7fb0000, 0xa7fbffff, REGISTRY_ARIN }, // 167.251.0.0 - 167.251.255.255 { 0xa7fc0000, 0xa7fcffff, REGISTRY_LACNIC }, // 167.252.0.0 - 167.252.255.255 { 0xa7fd0000, 0xa7ffffff, REGISTRY_ARIN }, // 167.253.0.0 - 167.255.255.255 { 0xa8000000, 0xa800ffff, REGISTRY_LACNIC }, // 168.0.0.0 - 168.0.255.255 { 0xa8010000, 0xa801ffff, REGISTRY_RIPENCC }, // 168.1.0.0 - 168.1.255.255 { 0xa8020000, 0xa845ffff, REGISTRY_ARIN }, // 168.2.0.0 - 168.69.255.255 { 0xa8460000, 0xa846ffff, REGISTRY_APNIC }, // 168.70.0.0 - 168.70.255.255 { 0xa8470000, 0xa84bffff, REGISTRY_ARIN }, // 168.71.0.0 - 168.75.255.255 { 0xa84c0000, 0xa84cffff, REGISTRY_AFRINIC }, // 168.76.0.0 - 168.76.255.255 { 0xa84d0000, 0xa84dffff, REGISTRY_LACNIC }, // 168.77.0.0 - 168.77.255.255 { 0xa84e0000, 0xa84effff, REGISTRY_APNIC }, // 168.78.0.0 - 168.78.255.255 { 0xa8500000, 0xa851ffff, REGISTRY_AFRINIC }, // 168.80.0.0 - 168.81.255.255 { 0xa8520000, 0xa852ffff, REGISTRY_ARIN }, // 168.82.0.0 - 168.82.255.255 { 0xa8530000, 0xa853ffff, REGISTRY_LACNIC }, // 168.83.0.0 - 168.83.255.255 { 0xa8540000, 0xa858ffff, REGISTRY_ARIN }, // 168.84.0.0 - 168.88.255.255 { 0xa8590000, 0xa859ffff, REGISTRY_AFRINIC }, // 168.89.0.0 - 168.89.255.255 { 0xa85a0000, 0xa85affff, REGISTRY_LACNIC }, // 168.90.0.0 - 168.90.255.255 { 0xa85b0000, 0xa85effff, REGISTRY_ARIN }, // 168.91.0.0 - 168.94.255.255 { 0xa85f0000, 0xa85fffff, REGISTRY_APNIC }, // 168.95.0.0 - 168.95.255.255 { 0xa8600000, 0xa860ffff, REGISTRY_LACNIC }, // 168.96.0.0 - 168.96.255.255 { 0xa8610000, 0xa864ffff, REGISTRY_ARIN }, // 168.97.0.0 - 168.100.255.255 { 0xa8650000, 0xa865ffff, REGISTRY_LACNIC }, // 168.101.0.0 - 168.101.255.255 { 0xa8660000, 0xa869ffff, REGISTRY_ARIN }, // 168.102.0.0 - 168.105.255.255 { 0xa86a0000, 0xa86affff, REGISTRY_APNIC }, // 168.106.0.0 - 168.106.255.255 { 0xa86b0000, 0xa872ffff, REGISTRY_ARIN }, // 168.107.0.0 - 168.114.255.255 { 0xa8730000, 0xa873ffff, REGISTRY_APNIC }, // 168.115.0.0 - 168.115.255.255 { 0xa8740000, 0xa877ffff, REGISTRY_ARIN }, // 168.116.0.0 - 168.119.255.255 { 0xa8780000, 0xa878ffff, REGISTRY_APNIC }, // 168.120.0.0 - 168.120.255.255 { 0xa8790000, 0xa879ffff, REGISTRY_LACNIC }, // 168.121.0.0 - 168.121.255.255 { 0xa87a0000, 0xa87dffff, REGISTRY_ARIN }, // 168.122.0.0 - 168.125.255.255 { 0xa87e0000, 0xa87effff, REGISTRY_APNIC }, // 168.126.0.0 - 168.126.255.255 { 0xa87f0000, 0xa87fffff, REGISTRY_ARIN }, // 168.127.0.0 - 168.127.255.255 { 0xa8800000, 0xa880ffff, REGISTRY_AFRINIC }, // 168.128.0.0 - 168.128.255.255 { 0xa8810000, 0xa881ffff, REGISTRY_ARIN }, // 168.129.0.0 - 168.129.255.255 { 0xa8820000, 0xa884ffff, REGISTRY_APNIC }, // 168.130.0.0 - 168.132.255.255 { 0xa8850000, 0xa885ffff, REGISTRY_ARIN }, // 168.133.0.0 - 168.133.255.255 { 0xa8860000, 0xa886ffff, REGISTRY_APNIC }, // 168.134.0.0 - 168.134.255.255 { 0xa8870000, 0xa88affff, REGISTRY_ARIN }, // 168.135.0.0 - 168.138.255.255 { 0xa88b0000, 0xa88bffff, REGISTRY_RIPENCC }, // 168.139.0.0 - 168.139.255.255 { 0xa88c0000, 0xa88cffff, REGISTRY_APNIC }, // 168.140.0.0 - 168.140.255.255 { 0xa88d0000, 0xa88dffff, REGISTRY_ARIN }, // 168.141.0.0 - 168.141.255.255 { 0xa88e0000, 0xa88effff, REGISTRY_AFRINIC }, // 168.142.0.0 - 168.142.255.255 { 0xa88f0000, 0xa897ffff, REGISTRY_ARIN }, // 168.143.0.0 - 168.151.255.255 { 0xa8980000, 0xa89affff, REGISTRY_APNIC }, // 168.152.0.0 - 168.154.255.255 { 0xa89b0000, 0xa89bffff, REGISTRY_AFRINIC }, // 168.155.0.0 - 168.155.255.255 { 0xa89c0000, 0xa89fffff, REGISTRY_ARIN }, // 168.156.0.0 - 168.159.255.255 { 0xa8a00000, 0xa8a0ffff, REGISTRY_APNIC }, // 168.160.0.0 - 168.160.255.255 { 0xa8a10000, 0xa8a3ffff, REGISTRY_ARIN }, // 168.161.0.0 - 168.163.255.255 { 0xa8a40000, 0xa8a4ffff, REGISTRY_AFRINIC }, // 168.164.0.0 - 168.164.255.255 { 0xa8a50000, 0xa8a5ffff, REGISTRY_LACNIC }, // 168.165.0.0 - 168.165.255.255 { 0xa8a60000, 0xa8a6ffff, REGISTRY_ARIN }, // 168.166.0.0 - 168.166.255.255 { 0xa8a70000, 0xa8a7ffff, REGISTRY_AFRINIC }, // 168.167.0.0 - 168.167.255.255 { 0xa8a80000, 0xa8abffff, REGISTRY_ARIN }, // 168.168.0.0 - 168.171.255.255 { 0xa8ac0000, 0xa8acffff, REGISTRY_AFRINIC }, // 168.172.0.0 - 168.172.255.255 { 0xa8ad0000, 0xa8afffff, REGISTRY_ARIN }, // 168.173.0.0 - 168.175.255.255 { 0xa8b00000, 0xa8b0ffff, REGISTRY_LACNIC }, // 168.176.0.0 - 168.176.255.255 { 0xa8b10000, 0xa8b4ffff, REGISTRY_ARIN }, // 168.177.0.0 - 168.180.255.255 { 0xa8b50000, 0xa8b5ffff, REGISTRY_LACNIC }, // 168.181.0.0 - 168.181.255.255 { 0xa8b60000, 0xa8b9ffff, REGISTRY_ARIN }, // 168.182.0.0 - 168.185.255.255 { 0xa8ba0000, 0xa8baffff, REGISTRY_APNIC }, // 168.186.0.0 - 168.186.255.255 { 0xa8bb0000, 0xa8bbffff, REGISTRY_RIPENCC }, // 168.187.0.0 - 168.187.255.255 { 0xa8bc0000, 0xa8bcffff, REGISTRY_APNIC }, // 168.188.0.0 - 168.188.255.255 { 0xa8bd0000, 0xa8c1ffff, REGISTRY_ARIN }, // 168.189.0.0 - 168.193.255.255 { 0xa8c20000, 0xa8c5ffff, REGISTRY_LACNIC }, // 168.194.0.0 - 168.197.255.255 { 0xa8c60000, 0xa8c6ffff, REGISTRY_APNIC }, // 168.198.0.0 - 168.198.255.255 { 0xa8c70000, 0xa8ccffff, REGISTRY_ARIN }, // 168.199.0.0 - 168.204.255.255 { 0xa8cd0000, 0xa8cdffff, REGISTRY_LACNIC }, // 168.205.0.0 - 168.205.255.255 { 0xa8ce0000, 0xa8ceffff, REGISTRY_AFRINIC }, // 168.206.0.0 - 168.206.255.255 { 0xa8cf0000, 0xa8d0ffff, REGISTRY_ARIN }, // 168.207.0.0 - 168.208.255.255 { 0xa8d10000, 0xa8d3ffff, REGISTRY_AFRINIC }, // 168.209.0.0 - 168.211.255.255 { 0xa8d40000, 0xa8d8ffff, REGISTRY_ARIN }, // 168.212.0.0 - 168.216.255.255 { 0xa8d90000, 0xa8d9ffff, REGISTRY_APNIC }, // 168.217.0.0 - 168.217.255.255 { 0xa8da0000, 0xa8daffff, REGISTRY_ARIN }, // 168.218.0.0 - 168.218.255.255 { 0xa8db0000, 0xa8dbffff, REGISTRY_APNIC }, // 168.219.0.0 - 168.219.255.255 { 0xa8dc0000, 0xa8e1ffff, REGISTRY_ARIN }, // 168.220.0.0 - 168.225.255.255 { 0xa8e20000, 0xa8e4ffff, REGISTRY_LACNIC }, // 168.226.0.0 - 168.228.255.255 { 0xa8e50000, 0xa8e6ffff, REGISTRY_ARIN }, // 168.229.0.0 - 168.230.255.255 { 0xa8e70000, 0xa8e8ffff, REGISTRY_LACNIC }, // 168.231.0.0 - 168.232.255.255 { 0xa8e90000, 0xa8e9ffff, REGISTRY_ARIN }, // 168.233.0.0 - 168.233.255.255 { 0xa8ea0000, 0xa8eaffff, REGISTRY_LACNIC }, // 168.234.0.0 - 168.234.255.255 { 0xa8eb0000, 0xa8f2ffff, REGISTRY_ARIN }, // 168.235.0.0 - 168.242.255.255 { 0xa8f30000, 0xa8f3ffff, REGISTRY_LACNIC }, // 168.243.0.0 - 168.243.255.255 { 0xa8f40000, 0xa8f5bbff, REGISTRY_ARIN }, // 168.244.0.0 - 168.245.187.255 { 0xa8f5bc00, 0xa8f5bfff, REGISTRY_APNIC }, // 168.245.188.0 - 168.245.191.255 { 0xa8f5c000, 0xa8f5c3ff, REGISTRY_ARIN }, // 168.245.192.0 - 168.245.195.255 { 0xa8f5c400, 0xa8f5c5ff, REGISTRY_RIPENCC }, // 168.245.196.0 - 168.245.197.255 { 0xa8f5c600, 0xa8f7ffff, REGISTRY_ARIN }, // 168.245.198.0 - 168.247.255.255 { 0xa8f80000, 0xa8f9ffff, REGISTRY_APNIC }, // 168.248.0.0 - 168.249.255.255 { 0xa8fa0000, 0xa8fbffff, REGISTRY_ARIN }, // 168.250.0.0 - 168.251.255.255 { 0xa8fc0000, 0xa8fcffff, REGISTRY_APNIC }, // 168.252.0.0 - 168.252.255.255 { 0xa8fd0000, 0xa8fdffff, REGISTRY_AFRINIC }, // 168.253.0.0 - 168.253.255.255 { 0xa8fe0000, 0xa8feffff, REGISTRY_ARIN }, // 168.254.0.0 - 168.254.255.255 { 0xa8ff0000, 0xa8ffffff, REGISTRY_LACNIC }, // 168.255.0.0 - 168.255.255.255 { 0xa9000000, 0xa901ffff, REGISTRY_AFRINIC }, // 169.0.0.0 - 169.1.255.255 { 0xa9020000, 0xa91fffff, REGISTRY_ARIN }, // 169.2.0.0 - 169.31.255.255 { 0xa9200000, 0xa93fffff, REGISTRY_RIPENCC }, // 169.32.0.0 - 169.63.255.255 { 0xa9400000, 0xa980ffff, REGISTRY_ARIN }, // 169.64.0.0 - 169.128.255.255 { 0xa9810000, 0xa981ffff, REGISTRY_AFRINIC }, // 169.129.0.0 - 169.129.255.255 { 0xa9820000, 0xa98bffff, REGISTRY_ARIN }, // 169.130.0.0 - 169.139.255.255 { 0xa98c0000, 0xa98cffff, REGISTRY_APNIC }, // 169.140.0.0 - 169.140.255.255 { 0xa98d0000, 0xa994ffff, REGISTRY_ARIN }, // 169.141.0.0 - 169.148.255.255 { 0xa9950000, 0xa995ffff, REGISTRY_APNIC }, // 169.149.0.0 - 169.149.255.255 { 0xa9960000, 0xa99dffff, REGISTRY_ARIN }, // 169.150.0.0 - 169.157.255.255 { 0xa99e0000, 0xa99effff, REGISTRY_LACNIC }, // 169.158.0.0 - 169.158.255.255 { 0xa99f0000, 0xa99fffff, REGISTRY_AFRINIC }, // 169.159.0.0 - 169.159.255.255 { 0xa9a00000, 0xa9c8ffff, REGISTRY_ARIN }, // 169.160.0.0 - 169.200.255.255 { 0xa9ca0000, 0xa9caffff, REGISTRY_AFRINIC }, // 169.202.0.0 - 169.202.255.255 { 0xa9cb0000, 0xa9cfffff, REGISTRY_ARIN }, // 169.203.0.0 - 169.207.255.255 { 0xa9d00000, 0xa9dfffff, REGISTRY_APNIC }, // 169.208.0.0 - 169.223.255.255 { 0xa9e00000, 0xa9eeffff, REGISTRY_ARIN }, // 169.224.0.0 - 169.238.255.255 { 0xa9ef0000, 0xa9efffff, REGISTRY_AFRINIC }, // 169.239.0.0 - 169.239.255.255 { 0xa9f00000, 0xa9fdffff, REGISTRY_ARIN }, // 169.240.0.0 - 169.253.255.255 { 0xa9ff0000, 0xa9ffffff, REGISTRY_AFRINIC }, // 169.255.0.0 - 169.255.255.255 { 0xaa000000, 0xaa00ffff, REGISTRY_LACNIC }, // 170.0.0.0 - 170.0.255.255 { 0xaa010000, 0xaa11ffff, REGISTRY_ARIN }, // 170.1.0.0 - 170.17.255.255 { 0xaa120000, 0xaa12ffff, REGISTRY_LACNIC }, // 170.18.0.0 - 170.18.255.255 { 0xaa130000, 0xaa18ffff, REGISTRY_ARIN }, // 170.19.0.0 - 170.24.255.255 { 0xaa190000, 0xaa19ffff, REGISTRY_LACNIC }, // 170.25.0.0 - 170.25.255.255 { 0xaa1a0000, 0xaa20ffff, REGISTRY_ARIN }, // 170.26.0.0 - 170.32.255.255 { 0xaa210000, 0xaa21ffff, REGISTRY_APNIC }, // 170.33.0.0 - 170.33.255.255 { 0xaa220000, 0xaa25ffff, REGISTRY_ARIN }, // 170.34.0.0 - 170.37.255.255 { 0xaa260000, 0xaa26ffff, REGISTRY_APNIC }, // 170.38.0.0 - 170.38.255.255 { 0xaa270000, 0xaa32ffff, REGISTRY_ARIN }, // 170.39.0.0 - 170.50.255.255 { 0xaa330000, 0xaa33ffff, REGISTRY_LACNIC }, // 170.51.0.0 - 170.51.255.255 { 0xaa340000, 0xaa3bffff, REGISTRY_ARIN }, // 170.52.0.0 - 170.59.255.255 { 0xaa3c0000, 0xaa3cffff, REGISTRY_RIPENCC }, // 170.60.0.0 - 170.60.255.255 { 0xaa3d0000, 0xaa41ffff, REGISTRY_ARIN }, // 170.61.0.0 - 170.65.255.255 { 0xaa420000, 0xaa42ffff, REGISTRY_LACNIC }, // 170.66.0.0 - 170.66.255.255 { 0xaa430000, 0xaa45ffff, REGISTRY_ARIN }, // 170.67.0.0 - 170.69.255.255 { 0xaa460000, 0xaa46ffff, REGISTRY_LACNIC }, // 170.70.0.0 - 170.70.255.255 { 0xaa470000, 0xaa4cafff, REGISTRY_ARIN }, // 170.71.0.0 - 170.76.175.255 { 0xaa4cb000, 0xaa4cb3ff, REGISTRY_APNIC }, // 170.76.176.0 - 170.76.179.255 { 0xaa4cb400, 0xaa4dffff, REGISTRY_ARIN }, // 170.76.180.0 - 170.77.255.255 { 0xaa4e0000, 0xaa54ffff, REGISTRY_LACNIC }, // 170.78.0.0 - 170.84.255.255 { 0xaa550000, 0xaa5effff, REGISTRY_ARIN }, // 170.85.0.0 - 170.94.255.255 { 0xaa600000, 0xaa95ffff, REGISTRY_ARIN }, // 170.96.0.0 - 170.149.255.255 { 0xaa960000, 0xaa96ffff, REGISTRY_LACNIC }, // 170.150.0.0 - 170.150.255.255 { 0xaa970000, 0xaa9affff, REGISTRY_ARIN }, // 170.151.0.0 - 170.154.255.255 { 0xaa9b0000, 0xaa9bffff, REGISTRY_LACNIC }, // 170.155.0.0 - 170.155.255.255 { 0xaa9c0000, 0xaa9cffff, REGISTRY_ARIN }, // 170.156.0.0 - 170.156.255.255 { 0xaa9d0000, 0xaa9dffff, REGISTRY_APNIC }, // 170.157.0.0 - 170.157.255.255 { 0xaa9e0000, 0xaaa8ffff, REGISTRY_ARIN }, // 170.158.0.0 - 170.168.255.255 { 0xaaa90000, 0xaaa9ffff, REGISTRY_LACNIC }, // 170.169.0.0 - 170.169.255.255 { 0xaaaa0000, 0xaab2ffff, REGISTRY_ARIN }, // 170.170.0.0 - 170.178.255.255 { 0xaab30000, 0xaab3ffff, REGISTRY_APNIC }, // 170.179.0.0 - 170.179.255.255 { 0xaab40000, 0xaad1ffff, REGISTRY_ARIN }, // 170.180.0.0 - 170.209.255.255 { 0xaad20000, 0xaad2ffff, REGISTRY_LACNIC }, // 170.210.0.0 - 170.210.255.255 { 0xaad30000, 0xaae6ffff, REGISTRY_ARIN }, // 170.211.0.0 - 170.230.255.255 { 0xaae70000, 0xaae7ffff, REGISTRY_LACNIC }, // 170.231.0.0 - 170.231.255.255 { 0xaae80000, 0xaae8ffff, REGISTRY_ARIN }, // 170.232.0.0 - 170.232.255.255 { 0xaae90000, 0xaae9ffff, REGISTRY_LACNIC }, // 170.233.0.0 - 170.233.255.255 { 0xaaea0000, 0xaaebffff, REGISTRY_ARIN }, // 170.234.0.0 - 170.235.255.255 { 0xaaec0000, 0xaaedffff, REGISTRY_RIPENCC }, // 170.236.0.0 - 170.237.255.255 { 0xaaee0000, 0xaaefffff, REGISTRY_LACNIC }, // 170.238.0.0 - 170.239.255.255 { 0xaaf00000, 0xaaf3ffff, REGISTRY_ARIN }, // 170.240.0.0 - 170.243.255.255 { 0xaaf40000, 0xaaf7ffff, REGISTRY_LACNIC }, // 170.244.0.0 - 170.247.255.255 { 0xaaf80000, 0xaaf801ff, REGISTRY_APNIC }, // 170.248.0.0 - 170.248.1.255 { 0xaaf80200, 0xaaf80bff, REGISTRY_ARIN }, // 170.248.2.0 - 170.248.11.255 { 0xaaf80c00, 0xaaf80dff, REGISTRY_APNIC }, // 170.248.12.0 - 170.248.13.255 { 0xaaf80e00, 0xaaf829ff, REGISTRY_ARIN }, // 170.248.14.0 - 170.248.41.255 { 0xaaf82a00, 0xaaf82bff, REGISTRY_APNIC }, // 170.248.42.0 - 170.248.43.255 { 0xaaf82c00, 0xaaf82dff, REGISTRY_ARIN }, // 170.248.44.0 - 170.248.45.255 { 0xaaf82e00, 0xaaf82fff, REGISTRY_APNIC }, // 170.248.46.0 - 170.248.47.255 { 0xaaf83000, 0xaaf889ff, REGISTRY_ARIN }, // 170.248.48.0 - 170.248.137.255 { 0xaaf88a00, 0xaaf88bff, REGISTRY_APNIC }, // 170.248.138.0 - 170.248.139.255 { 0xaaf88c00, 0xaaf89fff, REGISTRY_ARIN }, // 170.248.140.0 - 170.248.159.255 { 0xaaf8a000, 0xaaf8abff, REGISTRY_APNIC }, // 170.248.160.0 - 170.248.171.255 { 0xaaf8ac00, 0xaaf8bdff, REGISTRY_ARIN }, // 170.248.172.0 - 170.248.189.255 { 0xaaf8be00, 0xaaf8bfff, REGISTRY_APNIC }, // 170.248.190.0 - 170.248.191.255 { 0xaaf8c000, 0xaafb09ff, REGISTRY_ARIN }, // 170.248.192.0 - 170.251.9.255 { 0xaafb0a00, 0xaafb0bff, REGISTRY_APNIC }, // 170.251.10.0 - 170.251.11.255 { 0xaafb0c00, 0xaafb13ff, REGISTRY_ARIN }, // 170.251.12.0 - 170.251.19.255 { 0xaafb1400, 0xaafb15ff, REGISTRY_APNIC }, // 170.251.20.0 - 170.251.21.255 { 0xaafb1600, 0xaafb27ff, REGISTRY_ARIN }, // 170.251.22.0 - 170.251.39.255 { 0xaafb2800, 0xaafb2fff, REGISTRY_APNIC }, // 170.251.40.0 - 170.251.47.255 { 0xaafb3000, 0xaafb3bff, REGISTRY_ARIN }, // 170.251.48.0 - 170.251.59.255 { 0xaafb3c00, 0xaafb3dff, REGISTRY_APNIC }, // 170.251.60.0 - 170.251.61.255 { 0xaafb3e00, 0xaafb59ff, REGISTRY_ARIN }, // 170.251.62.0 - 170.251.89.255 { 0xaafb5a00, 0xaafb5bff, REGISTRY_APNIC }, // 170.251.90.0 - 170.251.91.255 { 0xaafb5c00, 0xaafb6dff, REGISTRY_ARIN }, // 170.251.92.0 - 170.251.109.255 { 0xaafb6e00, 0xaafb6fff, REGISTRY_APNIC }, // 170.251.110.0 - 170.251.111.255 { 0xaafb7000, 0xaafb8dff, REGISTRY_ARIN }, // 170.251.112.0 - 170.251.141.255 { 0xaafb8e00, 0xaafb8fff, REGISTRY_APNIC }, // 170.251.142.0 - 170.251.143.255 { 0xaafb9000, 0xaafb94ff, REGISTRY_ARIN }, // 170.251.144.0 - 170.251.148.255 { 0xaafb9500, 0xaafb97ff, REGISTRY_APNIC }, // 170.251.149.0 - 170.251.151.255 { 0xaafb9800, 0xaafb99ff, REGISTRY_ARIN }, // 170.251.152.0 - 170.251.153.255 { 0xaafb9a00, 0xaafb9dff, REGISTRY_APNIC }, // 170.251.154.0 - 170.251.157.255 { 0xaafb9e00, 0xaafba9ff, REGISTRY_ARIN }, // 170.251.158.0 - 170.251.169.255 { 0xaafbaa00, 0xaafbabff, REGISTRY_APNIC }, // 170.251.170.0 - 170.251.171.255 { 0xaafbac00, 0xaafbadff, REGISTRY_ARIN }, // 170.251.172.0 - 170.251.173.255 { 0xaafbae00, 0xaafbafff, REGISTRY_APNIC }, // 170.251.174.0 - 170.251.175.255 { 0xaafbb000, 0xaafdffff, REGISTRY_ARIN }, // 170.251.176.0 - 170.253.255.255 { 0xaafe0000, 0xaafeffff, REGISTRY_LACNIC }, // 170.254.0.0 - 170.254.255.255 { 0xaaff0000, 0xaaffffff, REGISTRY_RIPENCC }, // 170.255.0.0 - 170.255.255.255 { 0xab000000, 0xab0fffff, REGISTRY_APNIC }, // 171.0.0.0 - 171.15.255.255 { 0xab100000, 0xab19c7ff, REGISTRY_RIPENCC }, // 171.16.0.0 - 171.25.199.255 { 0xab19c800, 0xab19c9ff, REGISTRY_RIPENCC }, // 171.25.200.0 - 171.25.201.255 { 0xab19ca00, 0xab19deff, REGISTRY_RIPENCC }, // 171.25.202.0 - 171.25.222.255 { 0xab19df00, 0xab19dfff, REGISTRY_RIPENCC }, // 171.25.223.0 - 171.25.223.255 { 0xab19e000, 0xab19efff, REGISTRY_RIPENCC }, // 171.25.224.0 - 171.25.239.255 { 0xab19f000, 0xab19f0ff, REGISTRY_RIPENCC }, // 171.25.240.0 - 171.25.240.255 { 0xab19f100, 0xab213fff, REGISTRY_RIPENCC }, // 171.25.241.0 - 171.33.63.255 { 0xab214000, 0xab21ffff, REGISTRY_RIPENCC }, // 171.33.64.0 - 171.33.255.255 { 0xab220000, 0xab3fffff, REGISTRY_APNIC }, // 171.34.0.0 - 171.63.255.255 { 0xab400000, 0xab4bffff, REGISTRY_ARIN }, // 171.64.0.0 - 171.75.255.255 { 0xab4c0000, 0xab7fffff, REGISTRY_APNIC }, // 171.76.0.0 - 171.127.255.255 { 0xab800000, 0xabceffff, REGISTRY_ARIN }, // 171.128.0.0 - 171.206.255.255 { 0xabcf0000, 0xabffffff, REGISTRY_APNIC }, // 171.207.0.0 - 171.255.255.255 { 0xac000000, 0xac0fffff, REGISTRY_ARIN }, // 172.0.0.0 - 172.15.255.255 { 0xac200000, 0xac507fff, REGISTRY_ARIN }, // 172.32.0.0 - 172.80.127.255 { 0xac508000, 0xac50ffff, REGISTRY_RIPENCC }, // 172.80.128.0 - 172.80.255.255 { 0xac510000, 0xac79ffff, REGISTRY_ARIN }, // 172.81.0.0 - 172.121.255.255 { 0xac7a0000, 0xac7bffff, REGISTRY_APNIC }, // 172.122.0.0 - 172.123.255.255 { 0xac7c0000, 0xacbfffff, REGISTRY_ARIN }, // 172.124.0.0 - 172.191.255.255 { 0xacc00000, 0xacc7ffff, REGISTRY_APNIC }, // 172.192.0.0 - 172.199.255.255 { 0xacc80000, 0xacf0ffff, REGISTRY_ARIN }, // 172.200.0.0 - 172.240.255.255 { 0xacf10000, 0xacf107ff, REGISTRY_RIPENCC }, // 172.241.0.0 - 172.241.7.255 { 0xacf10800, 0xacf127ff, REGISTRY_ARIN }, // 172.241.8.0 - 172.241.39.255 { 0xacf12800, 0xacf137ff, REGISTRY_RIPENCC }, // 172.241.40.0 - 172.241.55.255 { 0xacf13800, 0xacf13fff, REGISTRY_ARIN }, // 172.241.56.0 - 172.241.63.255 { 0xacf14000, 0xacf147ff, REGISTRY_RIPENCC }, // 172.241.64.0 - 172.241.71.255 { 0xacf14800, 0xacf153ff, REGISTRY_ARIN }, // 172.241.72.0 - 172.241.83.255 { 0xacf15400, 0xacf157ff, REGISTRY_RIPENCC }, // 172.241.84.0 - 172.241.87.255 { 0xacf15800, 0xacfeffff, REGISTRY_ARIN }, // 172.241.88.0 - 172.254.255.255 { 0xacff0000, 0xacff0fff, REGISTRY_RIPENCC }, // 172.255.0.0 - 172.255.15.255 { 0xacff1000, 0xacff5fff, REGISTRY_ARIN }, // 172.255.16.0 - 172.255.95.255 { 0xacff6000, 0xacff6fff, REGISTRY_RIPENCC }, // 172.255.96.0 - 172.255.111.255 { 0xacff7000, 0xacff87ff, REGISTRY_ARIN }, // 172.255.112.0 - 172.255.135.255 { 0xacff8800, 0xacff8fff, REGISTRY_RIPENCC }, // 172.255.136.0 - 172.255.143.255 { 0xacff9000, 0xacffbfff, REGISTRY_ARIN }, // 172.255.144.0 - 172.255.191.255 { 0xacffc000, 0xacffcfff, REGISTRY_RIPENCC }, // 172.255.192.0 - 172.255.207.255 { 0xacffd000, 0xacffdfff, REGISTRY_ARIN }, // 172.255.208.0 - 172.255.223.255 { 0xacffe000, 0xacffefff, REGISTRY_RIPENCC }, // 172.255.224.0 - 172.255.239.255 { 0xacfff000, 0xacfff7ff, REGISTRY_ARIN }, // 172.255.240.0 - 172.255.247.255 { 0xacfff800, 0xacffffff, REGISTRY_RIPENCC }, // 172.255.248.0 - 172.255.255.255 { 0xad000000, 0xadd4bfff, REGISTRY_ARIN }, // 173.0.0.0 - 173.212.191.255 { 0xadd4c000, 0xadd4ffff, REGISTRY_RIPENCC }, // 173.212.192.0 - 173.212.255.255 { 0xadd50000, 0xadea7fff, REGISTRY_ARIN }, // 173.213.0.0 - 173.234.127.255 { 0xadea8000, 0xadea87ff, REGISTRY_RIPENCC }, // 173.234.128.0 - 173.234.135.255 { 0xadea8800, 0xadf8dfff, REGISTRY_ARIN }, // 173.234.136.0 - 173.248.223.255 { 0xadf8e000, 0xadf8ffff, REGISTRY_APNIC }, // 173.248.224.0 - 173.248.255.255 { 0xadf90000, 0xae8a8fff, REGISTRY_ARIN }, // 173.249.0.0 - 174.138.143.255 { 0xae8a9000, 0xae8a9fff, REGISTRY_APNIC }, // 174.138.144.0 - 174.138.159.255 { 0xae8aa000, 0xaeffffff, REGISTRY_ARIN }, // 174.138.160.0 - 174.255.255.255 { 0xaf000000, 0xafb0bfff, REGISTRY_APNIC }, // 175.0.0.0 - 175.176.191.255 { 0xafb0c400, 0xafffffff, REGISTRY_APNIC }, // 175.176.196.0 - 175.255.255.255 { 0xb0000000, 0xb0357fff, REGISTRY_RIPENCC }, // 176.0.0.0 - 176.53.127.255 { 0xb035c000, 0xb03827ff, REGISTRY_RIPENCC }, // 176.53.192.0 - 176.56.39.255 { 0xb0383000, 0xb0393fff, REGISTRY_RIPENCC }, // 176.56.48.0 - 176.57.63.255 { 0xb0394800, 0xb05fffff, REGISTRY_RIPENCC }, // 176.57.72.0 - 176.95.255.255 { 0xb0600000, 0xb0602fff, REGISTRY_RIPENCC }, // 176.96.0.0 - 176.96.47.255 { 0xb0603000, 0xb0603fff, REGISTRY_RIPENCC }, // 176.96.48.0 - 176.96.63.255 { 0xb0604000, 0xb06057ff, REGISTRY_RIPENCC }, // 176.96.64.0 - 176.96.87.255 { 0xb0605800, 0xb0607fff, REGISTRY_RIPENCC }, // 176.96.88.0 - 176.96.127.255 { 0xb0608000, 0xb060afff, REGISTRY_RIPENCC }, // 176.96.128.0 - 176.96.175.255 { 0xb060b000, 0xb060b7ff, REGISTRY_RIPENCC }, // 176.96.176.0 - 176.96.183.255 { 0xb060b800, 0xb060dfff, REGISTRY_RIPENCC }, // 176.96.184.0 - 176.96.223.255 { 0xb060e000, 0xb060ffff, REGISTRY_RIPENCC }, // 176.96.224.0 - 176.96.255.255 { 0xb0610000, 0xb0618fff, REGISTRY_RIPENCC }, // 176.97.0.0 - 176.97.143.255 { 0xb0619000, 0xb06197ff, REGISTRY_RIPENCC }, // 176.97.144.0 - 176.97.151.255 { 0xb0619c00, 0xb061e3ff, REGISTRY_RIPENCC }, // 176.97.156.0 - 176.97.227.255 { 0xb061e400, 0xb061e7ff, REGISTRY_RIPENCC }, // 176.97.228.0 - 176.97.231.255 { 0xb061e800, 0xb0621fff, REGISTRY_RIPENCC }, // 176.97.232.0 - 176.98.31.255 { 0xb0623000, 0xb06237ff, REGISTRY_RIPENCC }, // 176.98.48.0 - 176.98.55.255 { 0xb0623800, 0xb0623fff, REGISTRY_RIPENCC }, // 176.98.56.0 - 176.98.63.255 { 0xb0624000, 0xb0630fff, REGISTRY_RIPENCC }, // 176.98.64.0 - 176.99.15.255 { 0xb0631000, 0xb0632fff, REGISTRY_RIPENCC }, // 176.99.16.0 - 176.99.47.255 { 0xb0633000, 0xb0642fff, REGISTRY_RIPENCC }, // 176.99.48.0 - 176.100.47.255 { 0xb0643000, 0xb06437ff, REGISTRY_RIPENCC }, // 176.100.48.0 - 176.100.55.255 { 0xb0643800, 0xb065a7ff, REGISTRY_RIPENCC }, // 176.100.56.0 - 176.101.167.255 { 0xb065b000, 0xb06677ff, REGISTRY_RIPENCC }, // 176.101.176.0 - 176.102.119.255 { 0xb0667800, 0xb0667fff, REGISTRY_RIPENCC }, // 176.102.120.0 - 176.102.127.255 { 0xb0668000, 0xb0675fff, REGISTRY_RIPENCC }, // 176.102.128.0 - 176.103.95.255 { 0xb0676000, 0xb0676fff, REGISTRY_RIPENCC }, // 176.103.96.0 - 176.103.111.255 { 0xb0677000, 0xb06777ff, REGISTRY_RIPENCC }, // 176.103.112.0 - 176.103.119.255 { 0xb0677800, 0xb0677fff, REGISTRY_RIPENCC }, // 176.103.120.0 - 176.103.127.255 { 0xb0678000, 0xb067efff, REGISTRY_RIPENCC }, // 176.103.128.0 - 176.103.239.255 { 0xb067f000, 0xb067f7ff, REGISTRY_RIPENCC }, // 176.103.240.0 - 176.103.247.255 { 0xb067f800, 0xb068bfff, REGISTRY_RIPENCC }, // 176.103.248.0 - 176.104.191.255 { 0xb068c000, 0xb068dfff, REGISTRY_RIPENCC }, // 176.104.192.0 - 176.104.223.255 { 0xb068e000, 0xb0698fff, REGISTRY_RIPENCC }, // 176.104.224.0 - 176.105.143.255 { 0xb069a000, 0xb069dfff, REGISTRY_RIPENCC }, // 176.105.160.0 - 176.105.223.255 { 0xb06a0000, 0xb06a6fff, REGISTRY_RIPENCC }, // 176.106.0.0 - 176.106.111.255 { 0xb06a7000, 0xb06a77ff, REGISTRY_RIPENCC }, // 176.106.112.0 - 176.106.119.255 { 0xb06a7800, 0xb06a87ff, REGISTRY_RIPENCC }, // 176.106.120.0 - 176.106.135.255 { 0xb06a8800, 0xb06a8fff, REGISTRY_RIPENCC }, // 176.106.136.0 - 176.106.143.255 { 0xb06a9000, 0xb06b3fff, REGISTRY_RIPENCC }, // 176.106.144.0 - 176.107.63.255 { 0xb06b4000, 0xb06b4fff, REGISTRY_RIPENCC }, // 176.107.64.0 - 176.107.79.255 { 0xb06b5000, 0xb06bafff, REGISTRY_RIPENCC }, // 176.107.80.0 - 176.107.175.255 { 0xb06bb000, 0xb06bbfff, REGISTRY_RIPENCC }, // 176.107.176.0 - 176.107.191.255 { 0xb06bc000, 0xb06cdfff, REGISTRY_RIPENCC }, // 176.107.192.0 - 176.108.223.255 { 0xb06ce000, 0xb06ce7ff, REGISTRY_RIPENCC }, // 176.108.224.0 - 176.108.231.255 { 0xb06ce800, 0xb06e64ff, REGISTRY_RIPENCC }, // 176.108.232.0 - 176.110.100.255 { 0xb06e6600, 0xb06e69ff, REGISTRY_RIPENCC }, // 176.110.102.0 - 176.110.105.255 { 0xb06e6a00, 0xb06e6bff, REGISTRY_RIPENCC }, // 176.110.106.0 - 176.110.107.255 { 0xb06e6c00, 0xb06e6fff, REGISTRY_RIPENCC }, // 176.110.108.0 - 176.110.111.255 { 0xb06e7000, 0xb06e73ff, REGISTRY_RIPENCC }, // 176.110.112.0 - 176.110.115.255 { 0xb06e7400, 0xb06ed7ff, REGISTRY_RIPENCC }, // 176.110.116.0 - 176.110.215.255 { 0xb06ed800, 0xb06edfff, REGISTRY_RIPENCC }, // 176.110.216.0 - 176.110.223.255 { 0xb06ee000, 0xb06effff, REGISTRY_RIPENCC }, // 176.110.224.0 - 176.110.255.255 { 0xb06f0000, 0xb06f07ff, REGISTRY_RIPENCC }, // 176.111.0.0 - 176.111.7.255 { 0xb06f0800, 0xb06f67ff, REGISTRY_RIPENCC }, // 176.111.8.0 - 176.111.103.255 { 0xb06f6800, 0xb06f6fff, REGISTRY_RIPENCC }, // 176.111.104.0 - 176.111.111.255 { 0xb06f7000, 0xb06f9fff, REGISTRY_RIPENCC }, // 176.111.112.0 - 176.111.159.255 { 0xb06fa000, 0xb06fa7ff, REGISTRY_RIPENCC }, // 176.111.160.0 - 176.111.167.255 { 0xb06fb000, 0xb0704fff, REGISTRY_RIPENCC }, // 176.111.176.0 - 176.112.79.255 { 0xb0705000, 0xb07057ff, REGISTRY_RIPENCC }, // 176.112.80.0 - 176.112.87.255 { 0xb0705800, 0xb0707fff, REGISTRY_RIPENCC }, // 176.112.88.0 - 176.112.127.255 { 0xb0708000, 0xb0709fff, REGISTRY_RIPENCC }, // 176.112.128.0 - 176.112.159.255 { 0xb070a000, 0xb07127ff, REGISTRY_RIPENCC }, // 176.112.160.0 - 176.113.39.255 { 0xb0713000, 0xb0713fff, REGISTRY_RIPENCC }, // 176.113.48.0 - 176.113.63.255 { 0xb0716000, 0xb07167ff, REGISTRY_RIPENCC }, // 176.113.96.0 - 176.113.103.255 { 0xb0716800, 0xb071afff, REGISTRY_RIPENCC }, // 176.113.104.0 - 176.113.175.255 { 0xb071b000, 0xb071bfff, REGISTRY_RIPENCC }, // 176.113.176.0 - 176.113.191.255 { 0xb071c000, 0xb0725fff, REGISTRY_RIPENCC }, // 176.113.192.0 - 176.114.95.255 { 0xb0726000, 0xb0726fff, REGISTRY_RIPENCC }, // 176.114.96.0 - 176.114.111.255 { 0xb0727000, 0xb073afff, REGISTRY_RIPENCC }, // 176.114.112.0 - 176.115.175.255 { 0xb073b000, 0xb073bfff, REGISTRY_ARIN }, // 176.115.176.0 - 176.115.191.255 { 0xb073c000, 0xb073dfff, REGISTRY_RIPENCC }, // 176.115.192.0 - 176.115.223.255 { 0xb073e000, 0xb073efff, REGISTRY_RIPENCC }, // 176.115.224.0 - 176.115.239.255 { 0xb073f000, 0xb0741fff, REGISTRY_RIPENCC }, // 176.115.240.0 - 176.116.31.255 { 0xb0742000, 0xb0742fff, REGISTRY_RIPENCC }, // 176.116.32.0 - 176.116.47.255 { 0xb0743000, 0xb074dfff, REGISTRY_RIPENCC }, // 176.116.48.0 - 176.116.223.255 { 0xb074e000, 0xb074efff, REGISTRY_RIPENCC }, // 176.116.224.0 - 176.116.239.255 { 0xb074f000, 0xb07539ff, REGISTRY_RIPENCC }, // 176.116.240.0 - 176.117.57.255 { 0xb0753a00, 0xb0753bff, REGISTRY_RIPENCC }, // 176.117.58.0 - 176.117.59.255 { 0xb0753c00, 0xb075ffff, REGISTRY_RIPENCC }, // 176.117.60.0 - 176.117.255.255 { 0xb0760000, 0xb0761fff, REGISTRY_RIPENCC }, // 176.118.0.0 - 176.118.31.255 { 0xb0762800, 0xb0764fff, REGISTRY_RIPENCC }, // 176.118.40.0 - 176.118.79.255 { 0xb0765000, 0xb0765fff, REGISTRY_RIPENCC }, // 176.118.80.0 - 176.118.95.255 { 0xb0766000, 0xb0769fff, REGISTRY_RIPENCC }, // 176.118.96.0 - 176.118.159.255 { 0xb076c800, 0xb076dfff, REGISTRY_RIPENCC }, // 176.118.200.0 - 176.118.223.255 { 0xb076e000, 0xb0773fff, REGISTRY_RIPENCC }, // 176.118.224.0 - 176.119.63.255 { 0xb0774000, 0xb0777fff, REGISTRY_RIPENCC }, // 176.119.64.0 - 176.119.127.255 { 0xb077a000, 0xb077dfff, REGISTRY_RIPENCC }, // 176.119.160.0 - 176.119.223.255 { 0xb077e000, 0xb077e7ff, REGISTRY_RIPENCC }, // 176.119.224.0 - 176.119.231.255 { 0xb077e800, 0xb0791fff, REGISTRY_RIPENCC }, // 176.119.232.0 - 176.121.31.255 { 0xb0792000, 0xb0792fff, REGISTRY_RIPENCC }, // 176.121.32.0 - 176.121.47.255 { 0xb0793000, 0xb0795fff, REGISTRY_RIPENCC }, // 176.121.48.0 - 176.121.95.255 { 0xb0796000, 0xb0796fff, REGISTRY_RIPENCC }, // 176.121.96.0 - 176.121.111.255 { 0xb0797000, 0xb07acfff, REGISTRY_RIPENCC }, // 176.121.112.0 - 176.122.207.255 { 0xb07ad200, 0xb07b1fff, REGISTRY_RIPENCC }, // 176.122.210.0 - 176.123.31.255 { 0xb07b2000, 0xb07b2fff, REGISTRY_RIPENCC }, // 176.123.32.0 - 176.123.47.255 { 0xb07b3000, 0xb07c1fff, REGISTRY_RIPENCC }, // 176.123.48.0 - 176.124.31.255 { 0xb07c4000, 0xb07c4fff, REGISTRY_RIPENCC }, // 176.124.64.0 - 176.124.79.255 { 0xb07c5000, 0xb07c5fff, REGISTRY_RIPENCC }, // 176.124.80.0 - 176.124.95.255 { 0xb07c6000, 0xb07cabff, REGISTRY_RIPENCC }, // 176.124.96.0 - 176.124.171.255 { 0xb07cac00, 0xb07cb7ff, REGISTRY_RIPENCC }, // 176.124.172.0 - 176.124.183.255 { 0xb07cb800, 0xb07ddfff, REGISTRY_RIPENCC }, // 176.124.184.0 - 176.125.223.255 { 0xb07e0000, 0xb07e3fff, REGISTRY_RIPENCC }, // 176.126.0.0 - 176.126.63.255 { 0xb07e4000, 0xb07e5fff, REGISTRY_RIPENCC }, // 176.126.64.0 - 176.126.95.255 { 0xb07e6000, 0xb07ea7ff, REGISTRY_RIPENCC }, // 176.126.96.0 - 176.126.167.255 { 0xb07ea800, 0xb0e3efff, REGISTRY_RIPENCC }, // 176.126.168.0 - 176.227.239.255 { 0xb0e3f800, 0xb0ffffff, REGISTRY_RIPENCC }, // 176.227.248.0 - 176.255.255.255 { 0xb1000000, 0xb1087fff, REGISTRY_LACNIC }, // 177.0.0.0 - 177.8.127.255 { 0xb1089000, 0xb10a0fff, REGISTRY_LACNIC }, // 177.8.144.0 - 177.10.15.255 { 0xb10a1400, 0xb10a47ff, REGISTRY_LACNIC }, // 177.10.20.0 - 177.10.71.255 { 0xb10a4c00, 0xb10a83ff, REGISTRY_LACNIC }, // 177.10.76.0 - 177.10.131.255 { 0xb10a8800, 0xb10abbff, REGISTRY_LACNIC }, // 177.10.136.0 - 177.10.187.255 { 0xb10ac000, 0xb10b17ff, REGISTRY_LACNIC }, // 177.10.192.0 - 177.11.23.255 { 0xb10b1e00, 0xb10b7fff, REGISTRY_LACNIC }, // 177.11.30.0 - 177.11.127.255 { 0xb10b8800, 0xb10bd7ff, REGISTRY_LACNIC }, // 177.11.136.0 - 177.11.215.255 { 0xb10bdc00, 0xb10c57ff, REGISTRY_LACNIC }, // 177.11.220.0 - 177.12.87.255 { 0xb10c5c00, 0xb10ccfff, REGISTRY_LACNIC }, // 177.12.92.0 - 177.12.207.255 { 0xb10ce000, 0xb1177fff, REGISTRY_LACNIC }, // 177.12.224.0 - 177.23.127.255 { 0xb1178800, 0xb1250fff, REGISTRY_LACNIC }, // 177.23.136.0 - 177.37.15.255 { 0xb1253000, 0xb12707ff, REGISTRY_LACNIC }, // 177.37.48.0 - 177.39.7.255 { 0xb1270c00, 0xb1348bff, REGISTRY_LACNIC }, // 177.39.12.0 - 177.52.139.255 { 0xb1349000, 0xb13577ff, REGISTRY_LACNIC }, // 177.52.144.0 - 177.53.119.255 { 0xb1357c00, 0xb13597ff, REGISTRY_LACNIC }, // 177.53.124.0 - 177.53.151.255 { 0xb135a400, 0xb143a7ff, REGISTRY_LACNIC }, // 177.53.164.0 - 177.67.167.255 { 0xb143ac00, 0xb146efff, REGISTRY_LACNIC }, // 177.67.172.0 - 177.70.239.255 { 0xb1470000, 0xb148c7ff, REGISTRY_LACNIC }, // 177.71.0.0 - 177.72.199.255 { 0xb148cc00, 0xb148d7ff, REGISTRY_LACNIC }, // 177.72.204.0 - 177.72.215.255 { 0xb148dc00, 0xb14927ff, REGISTRY_LACNIC }, // 177.72.220.0 - 177.73.39.255 { 0xb1492c00, 0xb149fcff, REGISTRY_LACNIC }, // 177.73.44.0 - 177.73.252.255 { 0xb149fe00, 0xb14abfff, REGISTRY_LACNIC }, // 177.73.254.0 - 177.74.191.255 { 0xb14ad000, 0xb154cbff, REGISTRY_LACNIC }, // 177.74.208.0 - 177.84.203.255 { 0xb154d000, 0xb155b7ff, REGISTRY_LACNIC }, // 177.84.208.0 - 177.85.183.255 { 0xb155bc00, 0xb155efff, REGISTRY_LACNIC }, // 177.85.188.0 - 177.85.239.255 { 0xb155f800, 0xb15733ff, REGISTRY_LACNIC }, // 177.85.248.0 - 177.87.51.255 { 0xb1573800, 0xb15753ff, REGISTRY_LACNIC }, // 177.87.56.0 - 177.87.83.255 { 0xb1575800, 0xb15b37ff, REGISTRY_LACNIC }, // 177.87.88.0 - 177.91.55.255 { 0xb15b3c00, 0xb17c9bff, REGISTRY_LACNIC }, // 177.91.60.0 - 177.124.155.255 { 0xb17ca000, 0xb1802fff, REGISTRY_LACNIC }, // 177.124.160.0 - 177.128.47.255 { 0xb1803800, 0xb1806fff, REGISTRY_LACNIC }, // 177.128.56.0 - 177.128.111.255 { 0xb1807400, 0xb1811fff, REGISTRY_LACNIC }, // 177.128.116.0 - 177.129.31.255 { 0xb1812800, 0xb1837fff, REGISTRY_LACNIC }, // 177.129.40.0 - 177.131.127.255 { 0xb1839000, 0xb1985fff, REGISTRY_LACNIC }, // 177.131.144.0 - 177.152.95.255 { 0xb1987000, 0xb19877ff, REGISTRY_LACNIC }, // 177.152.112.0 - 177.152.119.255 { 0xb1987c00, 0xb19a5cff, REGISTRY_LACNIC }, // 177.152.124.0 - 177.154.92.255 { 0xb19a5e00, 0xb1c8dfff, REGISTRY_LACNIC }, // 177.154.94.0 - 177.200.223.255 { 0xb1c8f000, 0xb1dd7fff, REGISTRY_LACNIC }, // 177.200.240.0 - 177.221.127.255 { 0xb1dda000, 0xb1ddb7ff, REGISTRY_LACNIC }, // 177.221.160.0 - 177.221.183.255 { 0xb1ddc000, 0xb1ffffff, REGISTRY_LACNIC }, // 177.221.192.0 - 177.255.255.255 { 0xb2000000, 0xb211cfff, REGISTRY_RIPENCC }, // 178.0.0.0 - 178.17.207.255 { 0xb211e000, 0xb21417ff, REGISTRY_RIPENCC }, // 178.17.224.0 - 178.20.23.255 { 0xb2142000, 0xb214cfff, REGISTRY_RIPENCC }, // 178.20.32.0 - 178.20.207.255 { 0xb214d800, 0xb235ffff, REGISTRY_RIPENCC }, // 178.20.216.0 - 178.53.255.255 { 0xb2360000, 0xb236ffff, REGISTRY_RIPENCC }, // 178.54.0.0 - 178.54.255.255 { 0xb2370000, 0xb29dffff, REGISTRY_RIPENCC }, // 178.55.0.0 - 178.157.255.255 { 0xb29e0000, 0xb29effff, REGISTRY_RIPENCC }, // 178.158.0.0 - 178.158.255.255 { 0xb29f0000, 0xb29f0fff, REGISTRY_RIPENCC }, // 178.159.0.0 - 178.159.15.255 { 0xb29f1000, 0xb29f25ff, REGISTRY_RIPENCC }, // 178.159.16.0 - 178.159.37.255 { 0xb29f2600, 0xb29f27ff, REGISTRY_RIPENCC }, // 178.159.38.0 - 178.159.39.255 { 0xb29f2800, 0xb29f29ff, REGISTRY_RIPENCC }, // 178.159.40.0 - 178.159.41.255 { 0xb29f2a00, 0xb29f2fff, REGISTRY_RIPENCC }, // 178.159.42.0 - 178.159.47.255 { 0xb29f3000, 0xb29f5fff, REGISTRY_RIPENCC }, // 178.159.48.0 - 178.159.95.255 { 0xb29f6000, 0xb29f6fff, REGISTRY_RIPENCC }, // 178.159.96.0 - 178.159.111.255 { 0xb29f7000, 0xb29f8fff, REGISTRY_RIPENCC }, // 178.159.112.0 - 178.159.143.255 { 0xb29f9000, 0xb29f9fff, REGISTRY_RIPENCC }, // 178.159.144.0 - 178.159.159.255 { 0xb29fa000, 0xb29fffff, REGISTRY_RIPENCC }, // 178.159.160.0 - 178.159.255.255 { 0xb2a00000, 0xb2d3ffff, REGISTRY_RIPENCC }, // 178.160.0.0 - 178.211.255.255 { 0xb2d40000, 0xb2d4b7ff, REGISTRY_RIPENCC }, // 178.212.0.0 - 178.212.183.255 { 0xb2d4b800, 0xb2d4bfff, REGISTRY_RIPENCC }, // 178.212.184.0 - 178.212.191.255 { 0xb2d4c000, 0xb2d4c7ff, REGISTRY_RIPENCC }, // 178.212.192.0 - 178.212.199.255 { 0xb2d4c800, 0xb2d4cfff, REGISTRY_RIPENCC }, // 178.212.200.0 - 178.212.207.255 { 0xb2d4d000, 0xb2d5afff, REGISTRY_RIPENCC }, // 178.212.208.0 - 178.213.175.255 { 0xb2d5b000, 0xb2d5b7ff, REGISTRY_RIPENCC }, // 178.213.176.0 - 178.213.183.255 { 0xb2d5b800, 0xb2d67fff, REGISTRY_RIPENCC }, // 178.213.184.0 - 178.214.127.255 { 0xb2d68000, 0xb2d69fff, REGISTRY_RIPENCC }, // 178.214.128.0 - 178.214.159.255 { 0xb2d6a000, 0xb2d7dfff, REGISTRY_RIPENCC }, // 178.214.160.0 - 178.215.223.255 { 0xb2d7f000, 0xb2d82fff, REGISTRY_RIPENCC }, // 178.215.240.0 - 178.216.47.255 { 0xb2d83000, 0xb2d837ff, REGISTRY_RIPENCC }, // 178.216.48.0 - 178.216.55.255 { 0xb2d83800, 0xb2d847ff, REGISTRY_RIPENCC }, // 178.216.56.0 - 178.216.71.255 { 0xb2d84800, 0xb2d84fff, REGISTRY_RIPENCC }, // 178.216.72.0 - 178.216.79.255 { 0xb2d85000, 0xb2d857ff, REGISTRY_RIPENCC }, // 178.216.80.0 - 178.216.87.255 { 0xb2d85800, 0xb2d85fff, REGISTRY_RIPENCC }, // 178.216.88.0 - 178.216.95.255 { 0xb2d86000, 0xb2d8f7ff, REGISTRY_RIPENCC }, // 178.216.96.0 - 178.216.247.255 { 0xb2d8f800, 0xb2d8ffff, REGISTRY_RIPENCC }, // 178.216.248.0 - 178.216.255.255 { 0xb2d90000, 0xb2d927ff, REGISTRY_RIPENCC }, // 178.217.0.0 - 178.217.39.255 { 0xb2d92800, 0xb2d92fff, REGISTRY_RIPENCC }, // 178.217.40.0 - 178.217.47.255 { 0xb2d93000, 0xb2d957ff, REGISTRY_RIPENCC }, // 178.217.48.0 - 178.217.87.255 { 0xb2d96000, 0xb2d9e7ff, REGISTRY_RIPENCC }, // 178.217.96.0 - 178.217.231.255 { 0xb2d9f000, 0xb2da8fff, REGISTRY_RIPENCC }, // 178.217.240.0 - 178.218.143.255 { 0xb2daa000, 0xb2daafff, REGISTRY_RIPENCC }, // 178.218.160.0 - 178.218.175.255 { 0xb2dab000, 0xb2dabfff, REGISTRY_RIPENCC }, // 178.218.176.0 - 178.218.191.255 { 0xb2dac800, 0xb2daefff, REGISTRY_RIPENCC }, // 178.218.200.0 - 178.218.239.255 { 0xb2db0000, 0xb2db0fff, REGISTRY_RIPENCC }, // 178.219.0.0 - 178.219.15.255 { 0xb2db1000, 0xb2dbffff, REGISTRY_RIPENCC }, // 178.219.16.0 - 178.219.255.255 { 0xb2dc0000, 0xb2ed2fff, REGISTRY_RIPENCC }, // 178.220.0.0 - 178.237.47.255 { 0xb2ed4000, 0xb2edffff, REGISTRY_RIPENCC }, // 178.237.64.0 - 178.237.255.255 { 0xb2ee1000, 0xb2f9e7ff, REGISTRY_RIPENCC }, // 178.238.16.0 - 178.249.231.255 { 0xb2f9f000, 0xb2fb77ff, REGISTRY_RIPENCC }, // 178.249.240.0 - 178.251.119.255 { 0xb2fb8000, 0xb2ff6fff, REGISTRY_RIPENCC }, // 178.251.128.0 - 178.255.111.255 { 0xb2ff7800, 0xb2ffffff, REGISTRY_RIPENCC }, // 178.255.120.0 - 178.255.255.255 { 0xb3000000, 0xb30017ff, REGISTRY_LACNIC }, // 179.0.0.0 - 179.0.23.255 { 0xb3001900, 0xb3009fff, REGISTRY_LACNIC }, // 179.0.25.0 - 179.0.159.255 { 0xb300c000, 0xb32affff, REGISTRY_LACNIC }, // 179.0.192.0 - 179.42.255.255 { 0xb32b4000, 0xb33c7fff, REGISTRY_LACNIC }, // 179.43.64.0 - 179.60.127.255 { 0xb33c9000, 0xb33cdfff, REGISTRY_LACNIC }, // 179.60.144.0 - 179.60.223.255 { 0xb33ce400, 0xb36d5fff, REGISTRY_LACNIC }, // 179.60.228.0 - 179.109.95.255 { 0xb36d8000, 0xb3bf23ff, REGISTRY_LACNIC }, // 179.109.128.0 - 179.191.35.255 { 0xb3bf3000, 0xb3ffffff, REGISTRY_LACNIC }, // 179.191.48.0 - 179.255.255.255 { 0xb4000000, 0xb4ffffff, REGISTRY_APNIC }, // 180.0.0.0 - 180.255.255.255 { 0xb5000000, 0xb5beffff, REGISTRY_LACNIC }, // 181.0.0.0 - 181.190.255.255 { 0xb5c00000, 0xb5c05fff, REGISTRY_LACNIC }, // 181.192.0.0 - 181.192.95.255 { 0xb5c08000, 0xb5e197ff, REGISTRY_LACNIC }, // 181.192.128.0 - 181.225.151.255 { 0xb5e1a000, 0xb5ffffff, REGISTRY_LACNIC }, // 181.225.160.0 - 181.255.255.255 { 0xb6000000, 0xb6a11fff, REGISTRY_APNIC }, // 182.0.0.0 - 182.161.31.255 { 0xb6a12400, 0xb6a142ff, REGISTRY_APNIC }, // 182.161.36.0 - 182.161.66.255 { 0xb6a14400, 0xb7ffffff, REGISTRY_APNIC }, // 182.161.68.0 - 183.255.255.255 { 0xb8000000, 0xb815ffff, REGISTRY_ARIN }, // 184.0.0.0 - 184.21.255.255 { 0xb8160000, 0xb816ffff, REGISTRY_APNIC }, // 184.22.0.0 - 184.22.255.255 { 0xb8170000, 0xb851ffff, REGISTRY_ARIN }, // 184.23.0.0 - 184.81.255.255 { 0xb8520000, 0xb852ffff, REGISTRY_APNIC }, // 184.82.0.0 - 184.82.255.255 { 0xb8530000, 0xb8ffffff, REGISTRY_ARIN }, // 184.83.0.0 - 184.255.255.255 { 0xb9010000, 0xb9015bff, REGISTRY_RIPENCC }, // 185.1.0.0 - 185.1.91.255 { 0xb9020000, 0xb904afff, REGISTRY_RIPENCC }, // 185.2.0.0 - 185.4.175.255 { 0xb904b400, 0xb9067fff, REGISTRY_RIPENCC }, // 185.4.180.0 - 185.6.127.255 { 0xb9068400, 0xb90e3bff, REGISTRY_RIPENCC }, // 185.6.132.0 - 185.14.59.255 { 0xb90e4000, 0xb9115fff, REGISTRY_RIPENCC }, // 185.14.64.0 - 185.17.95.255 { 0xb9116400, 0xb91227ff, REGISTRY_RIPENCC }, // 185.17.100.0 - 185.18.39.255 { 0xb9122c00, 0xb914dbff, REGISTRY_RIPENCC }, // 185.18.44.0 - 185.20.219.255 { 0xb914dc00, 0xb914dfff, REGISTRY_ARIN }, // 185.20.220.0 - 185.20.223.255 { 0xb914e000, 0xb91603ff, REGISTRY_RIPENCC }, // 185.20.224.0 - 185.22.3.255 { 0xb9160800, 0xb9172bff, REGISTRY_RIPENCC }, // 185.22.8.0 - 185.23.43.255 { 0xb9173000, 0xb9174bff, REGISTRY_RIPENCC }, // 185.23.48.0 - 185.23.75.255 { 0xb9175000, 0xb917c7ff, REGISTRY_RIPENCC }, // 185.23.80.0 - 185.23.199.255 { 0xb917d000, 0xb91933ff, REGISTRY_RIPENCC }, // 185.23.208.0 - 185.25.51.255 { 0xb9193800, 0xb9199bff, REGISTRY_RIPENCC }, // 185.25.56.0 - 185.25.155.255 { 0xb919a000, 0xb91a2bff, REGISTRY_RIPENCC }, // 185.25.160.0 - 185.26.43.255 { 0xb91a3000, 0xb91ea7ff, REGISTRY_RIPENCC }, // 185.26.48.0 - 185.30.167.255 { 0xb91eac00, 0xb923dfff, REGISTRY_RIPENCC }, // 185.30.172.0 - 185.35.223.255 { 0xb923e400, 0xb92e03ff, REGISTRY_RIPENCC }, // 185.35.228.0 - 185.46.3.255 { 0xb92e0800, 0xb9305fff, REGISTRY_RIPENCC }, // 185.46.8.0 - 185.48.95.255 { 0xb9306400, 0xb9358bff, REGISTRY_RIPENCC }, // 185.48.100.0 - 185.53.139.255 { 0xb9359000, 0xb93fefff, REGISTRY_RIPENCC }, // 185.53.144.0 - 185.63.239.255 { 0xb93ff400, 0xb94167ff, REGISTRY_RIPENCC }, // 185.63.244.0 - 185.65.103.255 { 0xb9416c00, 0xb94257ff, REGISTRY_RIPENCC }, // 185.65.108.0 - 185.66.87.255 { 0xb9425c00, 0xb9439bff, REGISTRY_RIPENCC }, // 185.66.92.0 - 185.67.155.255 { 0xb943a000, 0xb9444fff, REGISTRY_RIPENCC }, // 185.67.160.0 - 185.68.79.255 { 0xb9445400, 0xb94673ff, REGISTRY_RIPENCC }, // 185.68.84.0 - 185.70.115.255 { 0xb9467800, 0xb94bdfff, REGISTRY_RIPENCC }, // 185.70.120.0 - 185.75.223.255 { 0xb94be400, 0xb94eabff, REGISTRY_RIPENCC }, // 185.75.228.0 - 185.78.171.255 { 0xb94eb000, 0xb950afff, REGISTRY_RIPENCC }, // 185.78.176.0 - 185.80.175.255 { 0xb950b400, 0xb952f3ff, REGISTRY_RIPENCC }, // 185.80.180.0 - 185.82.243.255 { 0xb952f800, 0xb956d7ff, REGISTRY_RIPENCC }, // 185.82.248.0 - 185.86.215.255 { 0xb956dc00, 0xb95793ff, REGISTRY_RIPENCC }, // 185.86.220.0 - 185.87.147.255 { 0xb9579800, 0xb9595fff, REGISTRY_RIPENCC }, // 185.87.152.0 - 185.89.95.255 { 0xb9596400, 0xb95af3ff, REGISTRY_RIPENCC }, // 185.89.100.0 - 185.90.243.255 { 0xb95af400, 0xb95af7ff, REGISTRY_ARIN }, // 185.90.244.0 - 185.90.247.255 { 0xb95afc00, 0xb95b47ff, REGISTRY_RIPENCC }, // 185.90.252.0 - 185.91.71.255 { 0xb95b4c00, 0xb95cabff, REGISTRY_RIPENCC }, // 185.91.76.0 - 185.92.171.255 { 0xb95cb000, 0xb95dabff, REGISTRY_RIPENCC }, // 185.92.176.0 - 185.93.171.255 { 0xb95db000, 0xb9635bff, REGISTRY_RIPENCC }, // 185.93.176.0 - 185.99.91.255 { 0xb9636000, 0xb968ffff, REGISTRY_RIPENCC }, // 185.99.96.0 - 185.104.255.255 { 0xb9690400, 0xb96943ff, REGISTRY_RIPENCC }, // 185.105.4.0 - 185.105.67.255 { 0xb9694800, 0xb96a37ff, REGISTRY_RIPENCC }, // 185.105.72.0 - 185.106.55.255 { 0xb96a3c00, 0xb96a73ff, REGISTRY_RIPENCC }, // 185.106.60.0 - 185.106.115.255 { 0xb96a7800, 0xb96c2fff, REGISTRY_RIPENCC }, // 185.106.120.0 - 185.108.47.255 { 0xb96c3400, 0xb96c9bff, REGISTRY_RIPENCC }, // 185.108.52.0 - 185.108.155.255 { 0xb96ca000, 0xb96d97ff, REGISTRY_RIPENCC }, // 185.108.160.0 - 185.109.151.255 { 0xb96d9c00, 0xb970efff, REGISTRY_RIPENCC }, // 185.109.156.0 - 185.112.239.255 { 0xb970f400, 0xb972d7ff, REGISTRY_RIPENCC }, // 185.112.244.0 - 185.114.215.255 { 0xb972dc00, 0xb97667ff, REGISTRY_RIPENCC }, // 185.114.220.0 - 185.118.103.255 { 0xb9767000, 0xb97af3ff, REGISTRY_RIPENCC }, // 185.118.112.0 - 185.122.243.255 { 0xb97af800, 0xb97ee7ff, REGISTRY_RIPENCC }, // 185.122.248.0 - 185.126.231.255 { 0xb97eec00, 0xb9819fff, REGISTRY_RIPENCC }, // 185.126.236.0 - 185.129.159.255 { 0xb981a400, 0xb98203ff, REGISTRY_RIPENCC }, // 185.129.164.0 - 185.130.3.255 { 0xb9820800, 0xb982b7ff, REGISTRY_RIPENCC }, // 185.130.8.0 - 185.130.183.255 { 0xb982bc00, 0xb98787ff, REGISTRY_RIPENCC }, // 185.130.188.0 - 185.135.135.255 { 0xb9878c00, 0xb98cdbff, REGISTRY_RIPENCC }, // 185.135.140.0 - 185.140.219.255 { 0xb98ce000, 0xb98d3bff, REGISTRY_RIPENCC }, // 185.140.224.0 - 185.141.59.255 { 0xb98d4000, 0xb98d63ff, REGISTRY_RIPENCC }, // 185.141.64.0 - 185.141.99.255 { 0xb98d6800, 0xb98e5fff, REGISTRY_RIPENCC }, // 185.141.104.0 - 185.142.95.255 { 0xb98e6400, 0xb9955fff, REGISTRY_RIPENCC }, // 185.142.100.0 - 185.149.95.255 { 0xb9956400, 0xb9984bff, REGISTRY_RIPENCC }, // 185.149.100.0 - 185.152.75.255 { 0xb9985000, 0xb99913ff, REGISTRY_RIPENCC }, // 185.152.80.0 - 185.153.19.255 { 0xb9991800, 0xb99e13ff, REGISTRY_RIPENCC }, // 185.153.24.0 - 185.158.19.255 { 0xb99e1800, 0xb9a1c3ff, REGISTRY_RIPENCC }, // 185.158.24.0 - 185.161.195.255 { 0xb9a1c800, 0xb9a45fff, REGISTRY_RIPENCC }, // 185.161.200.0 - 185.164.95.255 { 0xb9a46400, 0xb9b6f3ff, REGISTRY_RIPENCC }, // 185.164.100.0 - 185.182.243.255 { 0xb9b6f800, 0xb9c233ff, REGISTRY_RIPENCC }, // 185.182.248.0 - 185.194.51.255 { 0xb9c23800, 0xb9d20bff, REGISTRY_RIPENCC }, // 185.194.56.0 - 185.210.11.255 { 0xba000000, 0xba008fff, REGISTRY_LACNIC }, // 186.0.0.0 - 186.0.143.255 { 0xba009800, 0xba415bff, REGISTRY_LACNIC }, // 186.0.152.0 - 186.65.91.255 { 0xba416000, 0xba94bfff, REGISTRY_LACNIC }, // 186.65.96.0 - 186.148.191.255 { 0xba94c800, 0xba94dfff, REGISTRY_LACNIC }, // 186.148.200.0 - 186.148.223.255 { 0xba94e800, 0xbac29fff, REGISTRY_LACNIC }, // 186.148.232.0 - 186.194.159.255 { 0xbac2b000, 0xbac3efff, REGISTRY_LACNIC }, // 186.194.176.0 - 186.195.239.255 { 0xbac40000, 0xbad177ff, REGISTRY_LACNIC }, // 186.196.0.0 - 186.209.119.255 { 0xbad18000, 0xbadbdfff, REGISTRY_LACNIC }, // 186.209.128.0 - 186.219.223.255 { 0xbadbf000, 0xbae867ff, REGISTRY_LACNIC }, // 186.219.240.0 - 186.232.103.255 { 0xbae86c00, 0xbae8ffff, REGISTRY_LACNIC }, // 186.232.108.0 - 186.232.255.255 { 0xbae90400, 0xbae917ff, REGISTRY_LACNIC }, // 186.233.4.0 - 186.233.23.255 { 0xbae92000, 0xbae987ff, REGISTRY_LACNIC }, // 186.233.32.0 - 186.233.135.255 { 0xbae98c00, 0xbaed5fff, REGISTRY_LACNIC }, // 186.233.140.0 - 186.237.95.255 { 0xbaed7000, 0xbafa1fff, REGISTRY_LACNIC }, // 186.237.112.0 - 186.250.31.255 { 0xbafa2400, 0xbafa3bff, REGISTRY_LACNIC }, // 186.250.36.0 - 186.250.59.255 { 0xbafa4000, 0xbafa8fff, REGISTRY_LACNIC }, // 186.250.64.0 - 186.250.143.255 { 0xbafa9400, 0xbafad7ff, REGISTRY_LACNIC }, // 186.250.148.0 - 186.250.215.255 { 0xbafadc00, 0xbafb1fff, REGISTRY_LACNIC }, // 186.250.220.0 - 186.251.31.255 { 0xbafb2400, 0xbb001fff, REGISTRY_LACNIC }, // 186.251.36.0 - 187.0.31.255 { 0xbb003000, 0xbb117fff, REGISTRY_LACNIC }, // 187.0.48.0 - 187.17.127.255 { 0xbb119000, 0xbb318fff, REGISTRY_LACNIC }, // 187.17.144.0 - 187.49.143.255 { 0xbb31c000, 0xbb3e3fff, REGISTRY_LACNIC }, // 187.49.192.0 - 187.62.63.255 { 0xbb3e8000, 0xbb3f77ff, REGISTRY_LACNIC }, // 187.62.128.0 - 187.63.119.255 { 0xbb3f8000, 0xbb49afff, REGISTRY_LACNIC }, // 187.63.128.0 - 187.73.175.255 { 0xbb49c000, 0xbb5dffff, REGISTRY_LACNIC }, // 187.73.192.0 - 187.93.255.255 { 0xbb5e1000, 0xbb5fcfff, REGISTRY_LACNIC }, // 187.94.16.0 - 187.95.207.255 { 0xbb5fe000, 0xbb66bfff, REGISTRY_LACNIC }, // 187.95.224.0 - 187.102.191.255 { 0xbb670000, 0xbb670fff, REGISTRY_LACNIC }, // 187.103.0.0 - 187.103.15.255 { 0xbb672000, 0xbb67bfff, REGISTRY_LACNIC }, // 187.103.32.0 - 187.103.191.255 { 0xbb67d000, 0xbb6e97ff, REGISTRY_LACNIC }, // 187.103.208.0 - 187.110.151.255 { 0xbb6ea000, 0xbb789fff, REGISTRY_LACNIC }, // 187.110.160.0 - 187.120.159.255 { 0xbb78b000, 0xbbffffff, REGISTRY_LACNIC }, // 187.120.176.0 - 187.255.255.255 { 0xbc000000, 0xbc007fff, REGISTRY_RIPENCC }, // 188.0.0.0 - 188.0.127.255 { 0xbc008000, 0xbc009fff, REGISTRY_RIPENCC }, // 188.0.128.0 - 188.0.159.255 { 0xbc00a000, 0xbc00dfff, REGISTRY_RIPENCC }, // 188.0.160.0 - 188.0.223.255 { 0xbc00e000, 0xbc00efff, REGISTRY_RIPENCC }, // 188.0.224.0 - 188.0.239.255 { 0xbc00f000, 0xbc01ffff, REGISTRY_RIPENCC }, // 188.0.240.0 - 188.1.255.255 { 0xbc020000, 0xbc40cfff, REGISTRY_RIPENCC }, // 188.2.0.0 - 188.64.207.255 { 0xbc40d800, 0xbc410fff, REGISTRY_RIPENCC }, // 188.64.216.0 - 188.65.15.255 { 0xbc411800, 0xbc4217ff, REGISTRY_RIPENCC }, // 188.65.24.0 - 188.66.23.255 { 0xbc422000, 0xbc422fff, REGISTRY_RIPENCC }, // 188.66.32.0 - 188.66.47.255 { 0xbc424000, 0xbc5c77ff, REGISTRY_RIPENCC }, // 188.66.64.0 - 188.92.119.255 { 0xbc5c8000, 0xbc5eb7ff, REGISTRY_RIPENCC }, // 188.92.128.0 - 188.94.183.255 { 0xbc5ec000, 0xbc5f57ff, REGISTRY_RIPENCC }, // 188.94.192.0 - 188.95.87.255 { 0xbc5f6000, 0xbc773fff, REGISTRY_RIPENCC }, // 188.95.96.0 - 188.119.63.255 { 0xbc778000, 0xbc7ffbff, REGISTRY_RIPENCC }, // 188.119.128.0 - 188.127.251.255 { 0xbc7ffd00, 0xbcbdffff, REGISTRY_RIPENCC }, // 188.127.253.0 - 188.189.255.255 { 0xbcbe0000, 0xbcbe5fff, REGISTRY_RIPENCC }, // 188.190.0.0 - 188.190.95.255 { 0xbcbe8000, 0xbcbf87ff, REGISTRY_RIPENCC }, // 188.190.128.0 - 188.191.135.255 { 0xbcbf8800, 0xbcbf8fff, REGISTRY_RIPENCC }, // 188.191.136.0 - 188.191.143.255 { 0xbcbf9000, 0xbcbff7ff, REGISTRY_RIPENCC }, // 188.191.144.0 - 188.191.247.255 { 0xbcbff800, 0xbce3bfff, REGISTRY_RIPENCC }, // 188.191.248.0 - 188.227.191.255 { 0xbce3c800, 0xbceeffff, REGISTRY_RIPENCC }, // 188.227.200.0 - 188.238.255.255 { 0xbcef0000, 0xbcefffff, REGISTRY_RIPENCC }, // 188.239.0.0 - 188.239.255.255 { 0xbcf00000, 0xbcf45fff, REGISTRY_RIPENCC }, // 188.240.0.0 - 188.244.95.255 { 0xbcf47000, 0xbcffffff, REGISTRY_RIPENCC }, // 188.244.112.0 - 188.255.255.255 { 0xbd000000, 0xbd086fff, REGISTRY_LACNIC }, // 189.0.0.0 - 189.8.111.255 { 0xbd088000, 0xbd0e6fff, REGISTRY_LACNIC }, // 189.8.128.0 - 189.14.111.255 { 0xbd0e8000, 0xbd247fff, REGISTRY_LACNIC }, // 189.14.128.0 - 189.36.127.255 { 0xbd249000, 0xbd24efff, REGISTRY_LACNIC }, // 189.36.144.0 - 189.36.239.255 { 0xbd250000, 0xbd27b3ff, REGISTRY_LACNIC }, // 189.37.0.0 - 189.39.179.255 { 0xbd27bc00, 0xbd2dafff, REGISTRY_LACNIC }, // 189.39.188.0 - 189.45.175.255 { 0xbd2dc000, 0xbd32cfff, REGISTRY_LACNIC }, // 189.45.192.0 - 189.50.207.255 { 0xbd32e000, 0xbd331fff, REGISTRY_LACNIC }, // 189.50.224.0 - 189.51.31.255 { 0xbd333000, 0xbd339fff, REGISTRY_LACNIC }, // 189.51.48.0 - 189.51.159.255 { 0xbd33b000, 0xbd541fff, REGISTRY_LACNIC }, // 189.51.176.0 - 189.84.31.255 { 0xbd543000, 0xbd551fff, REGISTRY_LACNIC }, // 189.84.48.0 - 189.85.31.255 { 0xbd553000, 0xbd555fff, REGISTRY_LACNIC }, // 189.85.48.0 - 189.85.95.255 { 0xbd558000, 0xbd5adfff, REGISTRY_LACNIC }, // 189.85.128.0 - 189.90.223.255 { 0xbd5af000, 0xbd71afff, REGISTRY_LACNIC }, // 189.90.240.0 - 189.113.175.255 { 0xbd71c000, 0xbd7dffff, REGISTRY_LACNIC }, // 189.113.192.0 - 189.125.255.255 { 0xbd7e1000, 0xbd7e4fff, REGISTRY_LACNIC }, // 189.126.16.0 - 189.126.79.255 { 0xbd7e6000, 0xbd7f7fff, REGISTRY_LACNIC }, // 189.126.96.0 - 189.127.127.255 { 0xbd7fc000, 0xbdc9f7ff, REGISTRY_LACNIC }, // 189.127.192.0 - 189.201.247.255 { 0xbdc9fc00, 0xbe023fff, REGISTRY_LACNIC }, // 189.201.252.0 - 190.2.63.255 { 0xbe024800, 0xbe039fff, REGISTRY_LACNIC }, // 190.2.72.0 - 190.3.159.255 { 0xbe03a800, 0xbe080fff, REGISTRY_LACNIC }, // 190.3.168.0 - 190.8.15.255 { 0xbe082000, 0xbe089fff, REGISTRY_LACNIC }, // 190.8.32.0 - 190.8.159.255 { 0xbe08a400, 0xbe0bcfff, REGISTRY_LACNIC }, // 190.8.164.0 - 190.11.207.255 { 0xbe0be000, 0xbe52ffff, REGISTRY_LACNIC }, // 190.11.224.0 - 190.82.255.255 { 0xbe538000, 0xbe58ffff, REGISTRY_LACNIC }, // 190.83.128.0 - 190.88.255.255 { 0xbe5a0000, 0xbe5d1fff, REGISTRY_LACNIC }, // 190.90.0.0 - 190.93.31.255 { 0xbe5d2400, 0xbe5db3ff, REGISTRY_LACNIC }, // 190.93.36.0 - 190.93.179.255 { 0xbe5dc000, 0xbe61abff, REGISTRY_LACNIC }, // 190.93.192.0 - 190.97.171.255 { 0xbe61b000, 0xbe69c3ff, REGISTRY_LACNIC }, // 190.97.176.0 - 190.105.195.255 { 0xbe69c800, 0xbe6adfff, REGISTRY_LACNIC }, // 190.105.200.0 - 190.106.223.255 { 0xbe6af000, 0xbe6b9fff, REGISTRY_LACNIC }, // 190.106.240.0 - 190.107.159.255 { 0xbe6bb000, 0xbe6c4bff, REGISTRY_LACNIC }, // 190.107.176.0 - 190.108.75.255 { 0xbe6c5000, 0xbe6f5fff, REGISTRY_LACNIC }, // 190.108.80.0 - 190.111.95.255 { 0xbe6f7000, 0xbe6f7fff, REGISTRY_LACNIC }, // 190.111.112.0 - 190.111.127.255 { 0xbe6fc000, 0xbe707fff, REGISTRY_LACNIC }, // 190.111.192.0 - 190.112.127.255 { 0xbe70b000, 0xbe733fff, REGISTRY_LACNIC }, // 190.112.176.0 - 190.115.63.255 { 0xbe736000, 0xbe73bfff, REGISTRY_LACNIC }, // 190.115.96.0 - 190.115.191.255 { 0xbe73e000, 0xbe781fff, REGISTRY_LACNIC }, // 190.115.224.0 - 190.120.31.255 { 0xbe783000, 0xbe78dfff, REGISTRY_LACNIC }, // 190.120.48.0 - 190.120.223.255 { 0xbe78f000, 0xbe7cf3ff, REGISTRY_LACNIC }, // 190.120.240.0 - 190.124.243.255 { 0xbe7cf800, 0xbe7cfbff, REGISTRY_LACNIC }, // 190.124.248.0 - 190.124.251.255 { 0xbe7d0000, 0xbf25fbff, REGISTRY_LACNIC }, // 190.125.0.0 - 191.37.251.255 { 0xbf25fd00, 0xbf34cfff, REGISTRY_LACNIC }, // 191.37.253.0 - 191.52.207.255 { 0xbf34e000, 0xbfffffff, REGISTRY_LACNIC }, // 191.52.224.0 - 191.255.255.255 { 0xc0000100, 0xc00001ff, REGISTRY_ARIN }, // 192.0.1.0 - 192.0.1.255 { 0xc0000300, 0xc0051bff, REGISTRY_ARIN }, // 192.0.3.0 - 192.5.27.255 { 0xc0051c00, 0xc0051eff, REGISTRY_RIPENCC }, // 192.5.28.0 - 192.5.30.255 { 0xc0051f00, 0xc00523ff, REGISTRY_ARIN }, // 192.5.31.0 - 192.5.35.255 { 0xc0052400, 0xc00524ff, REGISTRY_RIPENCC }, // 192.5.36.0 - 192.5.36.255 { 0xc0052500, 0xc00531ff, REGISTRY_ARIN }, // 192.5.37.0 - 192.5.49.255 { 0xc0053200, 0xc00532ff, REGISTRY_RIPENCC }, // 192.5.50.0 - 192.5.50.255 { 0xc0053300, 0xc0053aff, REGISTRY_ARIN }, // 192.5.51.0 - 192.5.58.255 { 0xc0053b00, 0xc0053bff, REGISTRY_RIPENCC }, // 192.5.59.0 - 192.5.59.255 { 0xc0053c00, 0xc0053cff, REGISTRY_ARIN }, // 192.5.60.0 - 192.5.60.255 { 0xc0053d00, 0xc0053eff, REGISTRY_RIPENCC }, // 192.5.61.0 - 192.5.62.255 { 0xc0053f00, 0xc00559ff, REGISTRY_ARIN }, // 192.5.63.0 - 192.5.89.255 { 0xc0055a00, 0xc0055aff, REGISTRY_APNIC }, // 192.5.90.0 - 192.5.90.255 { 0xc0055b00, 0xc00560ff, REGISTRY_ARIN }, // 192.5.91.0 - 192.5.96.255 { 0xc0056100, 0xc00561ff, REGISTRY_RIPENCC }, // 192.5.97.0 - 192.5.97.255 { 0xc0056200, 0xc0058dff, REGISTRY_ARIN }, // 192.5.98.0 - 192.5.141.255 { 0xc0058e00, 0xc0058eff, REGISTRY_RIPENCC }, // 192.5.142.0 - 192.5.142.255 { 0xc0058f00, 0xc00590ff, REGISTRY_ARIN }, // 192.5.143.0 - 192.5.144.255 { 0xc0059100, 0xc00591ff, REGISTRY_RIPENCC }, // 192.5.145.0 - 192.5.145.255 { 0xc0059200, 0xc005a1ff, REGISTRY_ARIN }, // 192.5.146.0 - 192.5.161.255 { 0xc005a200, 0xc005a2ff, REGISTRY_RIPENCC }, // 192.5.162.0 - 192.5.162.255 { 0xc005a300, 0xc005d7ff, REGISTRY_ARIN }, // 192.5.163.0 - 192.5.215.255 { 0xc005d800, 0xc005d8ff, REGISTRY_APNIC }, // 192.5.216.0 - 192.5.216.255 { 0xc005d900, 0xc005eeff, REGISTRY_ARIN }, // 192.5.217.0 - 192.5.238.255 { 0xc005ef00, 0xc005efff, REGISTRY_RIPENCC }, // 192.5.239.0 - 192.5.239.255 { 0xc005f000, 0xc005f0ff, REGISTRY_APNIC }, // 192.5.240.0 - 192.5.240.255 { 0xc005f100, 0xc005fdff, REGISTRY_ARIN }, // 192.5.241.0 - 192.5.253.255 { 0xc005fe00, 0xc005feff, REGISTRY_RIPENCC }, // 192.5.254.0 - 192.5.254.255 { 0xc005ff00, 0xc0081fff, REGISTRY_ARIN }, // 192.5.255.0 - 192.8.31.255 { 0xc0082000, 0xc0082bff, REGISTRY_APNIC }, // 192.8.32.0 - 192.8.43.255 { 0xc0082c00, 0xc00873ff, REGISTRY_ARIN }, // 192.8.44.0 - 192.8.115.255 { 0xc0087400, 0xc00877ff, REGISTRY_APNIC }, // 192.8.116.0 - 192.8.119.255 { 0xc0087800, 0xc0089fff, REGISTRY_ARIN }, // 192.8.120.0 - 192.8.159.255 { 0xc008a000, 0xc008b0ff, REGISTRY_APNIC }, // 192.8.160.0 - 192.8.176.255 { 0xc008b100, 0xc008b2ff, REGISTRY_ARIN }, // 192.8.177.0 - 192.8.178.255 { 0xc008b300, 0xc008b4ff, REGISTRY_APNIC }, // 192.8.179.0 - 192.8.180.255 { 0xc008b500, 0xc008b5ff, REGISTRY_ARIN }, // 192.8.181.0 - 192.8.181.255 { 0xc008b600, 0xc008b6ff, REGISTRY_APNIC }, // 192.8.182.0 - 192.8.182.255 { 0xc008b700, 0xc008b7ff, REGISTRY_ARIN }, // 192.8.183.0 - 192.8.183.255 { 0xc008b800, 0xc008ffff, REGISTRY_APNIC }, // 192.8.184.0 - 192.8.255.255 { 0xc0090000, 0xc00c00ff, REGISTRY_ARIN }, // 192.9.0.0 - 192.12.0.255 { 0xc00c0100, 0xc00c01ff, REGISTRY_RIPENCC }, // 192.12.1.0 - 192.12.1.255 { 0xc00c0200, 0xc00c2eff, REGISTRY_ARIN }, // 192.12.2.0 - 192.12.46.255 { 0xc00c2f00, 0xc00c2fff, REGISTRY_RIPENCC }, // 192.12.47.0 - 192.12.47.255 { 0xc00c3000, 0xc00c35ff, REGISTRY_ARIN }, // 192.12.48.0 - 192.12.53.255 { 0xc00c3600, 0xc00c36ff, REGISTRY_RIPENCC }, // 192.12.54.0 - 192.12.54.255 { 0xc00c3700, 0xc00c47ff, REGISTRY_ARIN }, // 192.12.55.0 - 192.12.71.255 { 0xc00c4800, 0xc00c49ff, REGISTRY_RIPENCC }, // 192.12.72.0 - 192.12.73.255 { 0xc00c4a00, 0xc00c4bff, REGISTRY_ARIN }, // 192.12.74.0 - 192.12.75.255 { 0xc00c4c00, 0xc00c4cff, REGISTRY_APNIC }, // 192.12.76.0 - 192.12.76.255 { 0xc00c4d00, 0xc00c4dff, REGISTRY_RIPENCC }, // 192.12.77.0 - 192.12.77.255 { 0xc00c4e00, 0xc00c50ff, REGISTRY_ARIN }, // 192.12.78.0 - 192.12.80.255 { 0xc00c5100, 0xc00c51ff, REGISTRY_RIPENCC }, // 192.12.81.0 - 192.12.81.255 { 0xc00c5200, 0xc00c5fff, REGISTRY_ARIN }, // 192.12.82.0 - 192.12.95.255 { 0xc00c6000, 0xc00c60ff, REGISTRY_RIPENCC }, // 192.12.96.0 - 192.12.96.255 { 0xc00c6100, 0xc00c62ff, REGISTRY_ARIN }, // 192.12.97.0 - 192.12.98.255 { 0xc00c6300, 0xc00c63ff, REGISTRY_RIPENCC }, // 192.12.99.0 - 192.12.99.255 { 0xc00c6400, 0xc00c6cff, REGISTRY_ARIN }, // 192.12.100.0 - 192.12.108.255 { 0xc00c7000, 0xc00c73ff, REGISTRY_LACNIC }, // 192.12.112.0 - 192.12.115.255 { 0xc00c7700, 0xc00cbfff, REGISTRY_ARIN }, // 192.12.119.0 - 192.12.191.255 { 0xc00cc000, 0xc00cc2ff, REGISTRY_RIPENCC }, // 192.12.192.0 - 192.12.194.255 { 0xc00cc300, 0xc00cd8ff, REGISTRY_ARIN }, // 192.12.195.0 - 192.12.216.255 { 0xc00cd900, 0xc00cdaff, REGISTRY_RIPENCC }, // 192.12.217.0 - 192.12.218.255 { 0xc00cdb00, 0xc00ce6ff, REGISTRY_ARIN }, // 192.12.219.0 - 192.12.230.255 { 0xc00ce700, 0xc00ce8ff, REGISTRY_RIPENCC }, // 192.12.231.0 - 192.12.232.255 { 0xc00ce900, 0xc00ceaff, REGISTRY_ARIN }, // 192.12.233.0 - 192.12.234.255 { 0xc00ceb00, 0xc00cebff, REGISTRY_RIPENCC }, // 192.12.235.0 - 192.12.235.255 { 0xc00cec00, 0xc00cf6ff, REGISTRY_ARIN }, // 192.12.236.0 - 192.12.246.255 { 0xc00cf700, 0xc00cf7ff, REGISTRY_RIPENCC }, // 192.12.247.0 - 192.12.247.255 { 0xc00cf800, 0xc00effff, REGISTRY_ARIN }, // 192.12.248.0 - 192.14.255.255 { 0xc00f0000, 0xc00fffff, REGISTRY_RIPENCC }, // 192.15.0.0 - 192.15.255.255 { 0xc0100000, 0xc0107aff, REGISTRY_ARIN }, // 192.16.0.0 - 192.16.122.255 { 0xc0107b00, 0xc01097ff, REGISTRY_RIPENCC }, // 192.16.123.0 - 192.16.151.255 { 0xc0109800, 0xc0109aff, REGISTRY_RIPENCC }, // 192.16.152.0 - 192.16.154.255 { 0xc0109b00, 0xc010a6ff, REGISTRY_RIPENCC }, // 192.16.155.0 - 192.16.166.255 { 0xc010a700, 0xc010b1ff, REGISTRY_ARIN }, // 192.16.167.0 - 192.16.177.255 { 0xc010b200, 0xc010b4ff, REGISTRY_APNIC }, // 192.16.178.0 - 192.16.180.255 { 0xc010b500, 0xc010b6ff, REGISTRY_ARIN }, // 192.16.181.0 - 192.16.182.255 { 0xc010b700, 0xc010caff, REGISTRY_RIPENCC }, // 192.16.183.0 - 192.16.202.255 { 0xc010cb00, 0xc012c2ff, REGISTRY_ARIN }, // 192.16.203.0 - 192.18.194.255 { 0xc012c300, 0xc012c3ff, REGISTRY_RIPENCC }, // 192.18.195.0 - 192.18.195.255 { 0xc012c400, 0xc01a1bff, REGISTRY_ARIN }, // 192.18.196.0 - 192.26.27.255 { 0xc01a1c00, 0xc01a2fff, REGISTRY_RIPENCC }, // 192.26.28.0 - 192.26.47.255 { 0xc01a3000, 0xc01a5aff, REGISTRY_ARIN }, // 192.26.48.0 - 192.26.90.255 { 0xc01a5b00, 0xc01a5bff, REGISTRY_APNIC }, // 192.26.91.0 - 192.26.91.255 { 0xc01a5c00, 0xc01a5cff, REGISTRY_ARIN }, // 192.26.92.0 - 192.26.92.255 { 0xc01a5d00, 0xc01a5eff, REGISTRY_APNIC }, // 192.26.93.0 - 192.26.94.255 { 0xc01a5f00, 0xc01a5fff, REGISTRY_ARIN }, // 192.26.95.0 - 192.26.95.255 { 0xc01a6000, 0xc01a60ff, REGISTRY_APNIC }, // 192.26.96.0 - 192.26.96.255 { 0xc01a6100, 0xc01a68ff, REGISTRY_ARIN }, // 192.26.97.0 - 192.26.104.255 { 0xc01a6900, 0xc01a6dff, REGISTRY_RIPENCC }, // 192.26.105.0 - 192.26.109.255 { 0xc01a6f00, 0xc01a80ff, REGISTRY_RIPENCC }, // 192.26.111.0 - 192.26.128.255 { 0xc01a8100, 0xc01a84ff, REGISTRY_ARIN }, // 192.26.129.0 - 192.26.132.255 { 0xc01a8500, 0xc01a87ff, REGISTRY_RIPENCC }, // 192.26.133.0 - 192.26.135.255 { 0xc01a8800, 0xc01a99ff, REGISTRY_ARIN }, // 192.26.136.0 - 192.26.153.255 { 0xc01a9a00, 0xc01ac1ff, REGISTRY_RIPENCC }, // 192.26.154.0 - 192.26.193.255 { 0xc01ac200, 0xc01ad6ff, REGISTRY_ARIN }, // 192.26.194.0 - 192.26.214.255 { 0xc01ad800, 0xc01ae6ff, REGISTRY_APNIC }, // 192.26.216.0 - 192.26.230.255 { 0xc01ae700, 0xc01ae7ff, REGISTRY_RIPENCC }, // 192.26.231.0 - 192.26.231.255 { 0xc01ae800, 0xc01ae8ff, REGISTRY_APNIC }, // 192.26.232.0 - 192.26.232.255 { 0xc01ae900, 0xc01ae9ff, REGISTRY_ARIN }, // 192.26.233.0 - 192.26.233.255 { 0xc01aea00, 0xc01aeaff, REGISTRY_RIPENCC }, // 192.26.234.0 - 192.26.234.255 { 0xc01aeb00, 0xc01aebff, REGISTRY_ARIN }, // 192.26.235.0 - 192.26.235.255 { 0xc01aec00, 0xc01aefff, REGISTRY_RIPENCC }, // 192.26.236.0 - 192.26.239.255 { 0xc01af000, 0xc01c77ff, REGISTRY_ARIN }, // 192.26.240.0 - 192.28.119.255 { 0xc01c7800, 0xc01c7bff, REGISTRY_APNIC }, // 192.28.120.0 - 192.28.123.255 { 0xc01c7c00, 0xc01c83ff, REGISTRY_RIPENCC }, // 192.28.124.0 - 192.28.131.255 { 0xc01c8400, 0xc01f0dff, REGISTRY_ARIN }, // 192.28.132.0 - 192.31.13.255 { 0xc01f0e00, 0xc01f0eff, REGISTRY_RIPENCC }, // 192.31.14.0 - 192.31.14.255 { 0xc01f0f00, 0xc01f16ff, REGISTRY_ARIN }, // 192.31.15.0 - 192.31.22.255 { 0xc01f1700, 0xc01f17ff, REGISTRY_RIPENCC }, // 192.31.23.0 - 192.31.23.255 { 0xc01f1800, 0xc01f19ff, REGISTRY_ARIN }, // 192.31.24.0 - 192.31.25.255 { 0xc01f1a00, 0xc01f1bff, REGISTRY_RIPENCC }, // 192.31.26.0 - 192.31.27.255 { 0xc01f1c00, 0xc01f1eff, REGISTRY_ARIN }, // 192.31.28.0 - 192.31.30.255 { 0xc01f1f00, 0xc01f1fff, REGISTRY_RIPENCC }, // 192.31.31.0 - 192.31.31.255 { 0xc01f2000, 0xc01f27ff, REGISTRY_ARIN }, // 192.31.32.0 - 192.31.39.255 { 0xc01f2800, 0xc01f28ff, REGISTRY_RIPENCC }, // 192.31.40.0 - 192.31.40.255 { 0xc01f2900, 0xc01f3dff, REGISTRY_ARIN }, // 192.31.41.0 - 192.31.61.255 { 0xc01f3e00, 0xc01f3eff, REGISTRY_RIPENCC }, // 192.31.62.0 - 192.31.62.255 { 0xc01f3f00, 0xc01f65ff, REGISTRY_ARIN }, // 192.31.63.0 - 192.31.101.255 { 0xc01f6600, 0xc01f66ff, REGISTRY_RIPENCC }, // 192.31.102.0 - 192.31.102.255 { 0xc01f6700, 0xc01f73ff, REGISTRY_ARIN }, // 192.31.103.0 - 192.31.115.255 { 0xc01f7400, 0xc01f7cff, REGISTRY_APNIC }, // 192.31.116.0 - 192.31.124.255 { 0xc01f7d00, 0xc01fa5ff, REGISTRY_ARIN }, // 192.31.125.0 - 192.31.165.255 { 0xc01fa600, 0xc01fabff, REGISTRY_RIPENCC }, // 192.31.166.0 - 192.31.171.255 { 0xc01fac00, 0xc01fc3ff, REGISTRY_ARIN }, // 192.31.172.0 - 192.31.195.255 { 0xc01fc500, 0xc01fceff, REGISTRY_APNIC }, // 192.31.197.0 - 192.31.206.255 { 0xc01fcf00, 0xc01fd2ff, REGISTRY_ARIN }, // 192.31.207.0 - 192.31.210.255 { 0xc01fd300, 0xc01fd3ff, REGISTRY_RIPENCC }, // 192.31.211.0 - 192.31.211.255 { 0xc01fd400, 0xc01fe6ff, REGISTRY_ARIN }, // 192.31.212.0 - 192.31.230.255 { 0xc01fe700, 0xc01fe7ff, REGISTRY_RIPENCC }, // 192.31.231.0 - 192.31.231.255 { 0xc01fe800, 0xc01ffbff, REGISTRY_ARIN }, // 192.31.232.0 - 192.31.251.255 { 0xc01ffc00, 0xc01ffcff, REGISTRY_RIPENCC }, // 192.31.252.0 - 192.31.252.255 { 0xc01ffd00, 0xc02109ff, REGISTRY_ARIN }, // 192.31.253.0 - 192.33.9.255 { 0xc0210a00, 0xc0210aff, REGISTRY_AFRINIC }, // 192.33.10.0 - 192.33.10.255 { 0xc0210b00, 0xc0210eff, REGISTRY_ARIN }, // 192.33.11.0 - 192.33.14.255 { 0xc0210f00, 0xc02110ff, REGISTRY_RIPENCC }, // 192.33.15.0 - 192.33.16.255 { 0xc0211100, 0xc02123ff, REGISTRY_ARIN }, // 192.33.17.0 - 192.33.35.255 { 0xc0212400, 0xc02124ff, REGISTRY_RIPENCC }, // 192.33.36.0 - 192.33.36.255 { 0xc0212500, 0xc02156ff, REGISTRY_ARIN }, // 192.33.37.0 - 192.33.86.255 { 0xc0215700, 0xc0216fff, REGISTRY_RIPENCC }, // 192.33.87.0 - 192.33.111.255 { 0xc0217000, 0xc02170ff, REGISTRY_ARIN }, // 192.33.112.0 - 192.33.112.255 { 0xc0217100, 0xc02172ff, REGISTRY_RIPENCC }, // 192.33.113.0 - 192.33.114.255 { 0xc0217300, 0xc02175ff, REGISTRY_ARIN }, // 192.33.115.0 - 192.33.117.255 { 0xc0217600, 0xc0217fff, REGISTRY_RIPENCC }, // 192.33.118.0 - 192.33.127.255 { 0xc0218000, 0xc02181ff, REGISTRY_ARIN }, // 192.33.128.0 - 192.33.129.255 { 0xc0218200, 0xc02183ff, REGISTRY_RIPENCC }, // 192.33.130.0 - 192.33.131.255 { 0xc0218400, 0xc02186ff, REGISTRY_ARIN }, // 192.33.132.0 - 192.33.134.255 { 0xc0218700, 0xc02187ff, REGISTRY_APNIC }, // 192.33.135.0 - 192.33.135.255 { 0xc0218800, 0xc0218eff, REGISTRY_ARIN }, // 192.33.136.0 - 192.33.142.255 { 0xc0218f00, 0xc02191ff, REGISTRY_RIPENCC }, // 192.33.143.0 - 192.33.145.255 { 0xc0219200, 0xc02192ff, REGISTRY_ARIN }, // 192.33.146.0 - 192.33.146.255 { 0xc0219300, 0xc021a2ff, REGISTRY_RIPENCC }, // 192.33.147.0 - 192.33.162.255 { 0xc021a400, 0xc021a6ff, REGISTRY_RIPENCC }, // 192.33.164.0 - 192.33.166.255 { 0xc021a700, 0xc021a8ff, REGISTRY_ARIN }, // 192.33.167.0 - 192.33.168.255 { 0xc021a900, 0xc021abff, REGISTRY_RIPENCC }, // 192.33.169.0 - 192.33.171.255 { 0xc021ac00, 0xc021afff, REGISTRY_ARIN }, // 192.33.172.0 - 192.33.175.255 { 0xc021b000, 0xc021b6ff, REGISTRY_RIPENCC }, // 192.33.176.0 - 192.33.182.255 { 0xc021b700, 0xc021bfff, REGISTRY_ARIN }, // 192.33.183.0 - 192.33.191.255 { 0xc021c000, 0xc021e7ff, REGISTRY_RIPENCC }, // 192.33.192.0 - 192.33.231.255 { 0xc021e800, 0xc021e8ff, REGISTRY_ARIN }, // 192.33.232.0 - 192.33.232.255 { 0xc021e900, 0xc021efff, REGISTRY_RIPENCC }, // 192.33.233.0 - 192.33.239.255 { 0xc021f000, 0xc021fdff, REGISTRY_ARIN }, // 192.33.240.0 - 192.33.253.255 { 0xc021fe00, 0xc021feff, REGISTRY_RIPENCC }, // 192.33.254.0 - 192.33.254.255 { 0xc021ff00, 0xc02212ff, REGISTRY_ARIN }, // 192.33.255.0 - 192.34.18.255 { 0xc0221300, 0xc02213ff, REGISTRY_RIPENCC }, // 192.34.19.0 - 192.34.19.255 { 0xc0221400, 0xc02231ff, REGISTRY_ARIN }, // 192.34.20.0 - 192.34.49.255 { 0xc0223200, 0xc02232ff, REGISTRY_RIPENCC }, // 192.34.50.0 - 192.34.50.255 { 0xc0223300, 0xc0226aff, REGISTRY_ARIN }, // 192.34.51.0 - 192.34.106.255 { 0xc0226b00, 0xc0226bff, REGISTRY_RIPENCC }, // 192.34.107.0 - 192.34.107.255 { 0xc0226c00, 0xc02273ff, REGISTRY_ARIN }, // 192.34.108.0 - 192.34.115.255 { 0xc0227400, 0xc02274ff, REGISTRY_RIPENCC }, // 192.34.116.0 - 192.34.116.255 { 0xc0227500, 0xc022b2ff, REGISTRY_ARIN }, // 192.34.117.0 - 192.34.178.255 { 0xc022b300, 0xc022b3ff, REGISTRY_RIPENCC }, // 192.34.179.0 - 192.34.179.255 { 0xc022b400, 0xc022ffff, REGISTRY_ARIN }, // 192.34.180.0 - 192.34.255.255 { 0xc0230000, 0xc02313ff, REGISTRY_RIPENCC }, // 192.35.0.0 - 192.35.19.255 { 0xc0231400, 0xc0233aff, REGISTRY_ARIN }, // 192.35.20.0 - 192.35.58.255 { 0xc0233b00, 0xc0233bff, REGISTRY_APNIC }, // 192.35.59.0 - 192.35.59.255 { 0xc0233c00, 0xc0233eff, REGISTRY_ARIN }, // 192.35.60.0 - 192.35.62.255 { 0xc0233f00, 0xc02348ff, REGISTRY_RIPENCC }, // 192.35.63.0 - 192.35.72.255 { 0xc0234900, 0xc02359ff, REGISTRY_ARIN }, // 192.35.73.0 - 192.35.89.255 { 0xc0235a00, 0xc0235aff, REGISTRY_RIPENCC }, // 192.35.90.0 - 192.35.90.255 { 0xc0235b00, 0xc0235dff, REGISTRY_ARIN }, // 192.35.91.0 - 192.35.93.255 { 0xc0235e00, 0xc0235eff, REGISTRY_RIPENCC }, // 192.35.94.0 - 192.35.94.255 { 0xc0235f00, 0xc0236bff, REGISTRY_ARIN }, // 192.35.95.0 - 192.35.107.255 { 0xc0236c00, 0xc0236cff, REGISTRY_RIPENCC }, // 192.35.108.0 - 192.35.108.255 { 0xc0236d00, 0xc02381ff, REGISTRY_ARIN }, // 192.35.109.0 - 192.35.129.255 { 0xc0238200, 0xc02385ff, REGISTRY_RIPENCC }, // 192.35.130.0 - 192.35.133.255 { 0xc0238600, 0xc02389ff, REGISTRY_ARIN }, // 192.35.134.0 - 192.35.137.255 { 0xc0238a00, 0xc0238aff, REGISTRY_RIPENCC }, // 192.35.138.0 - 192.35.138.255 { 0xc0238b00, 0xc02391ff, REGISTRY_ARIN }, // 192.35.139.0 - 192.35.145.255 { 0xc0239200, 0xc02392ff, REGISTRY_RIPENCC }, // 192.35.146.0 - 192.35.146.255 { 0xc0239300, 0xc02394ff, REGISTRY_ARIN }, // 192.35.147.0 - 192.35.148.255 { 0xc0239500, 0xc02399ff, REGISTRY_RIPENCC }, // 192.35.149.0 - 192.35.153.255 { 0xc0239a00, 0xc023abff, REGISTRY_ARIN }, // 192.35.154.0 - 192.35.171.255 { 0xc023ac00, 0xc023acff, REGISTRY_RIPENCC }, // 192.35.172.0 - 192.35.172.255 { 0xc023ad00, 0xc023b6ff, REGISTRY_ARIN }, // 192.35.173.0 - 192.35.182.255 { 0xc023b700, 0xc023c0ff, REGISTRY_RIPENCC }, // 192.35.183.0 - 192.35.192.255 { 0xc023c100, 0xc023c4ff, REGISTRY_ARIN }, // 192.35.193.0 - 192.35.196.255 { 0xc023c500, 0xc023c6ff, REGISTRY_RIPENCC }, // 192.35.197.0 - 192.35.198.255 { 0xc023c700, 0xc023ccff, REGISTRY_ARIN }, // 192.35.199.0 - 192.35.204.255 { 0xc023cf00, 0xc023cfff, REGISTRY_RIPENCC }, // 192.35.207.0 - 192.35.207.255 { 0xc023d000, 0xc023e4ff, REGISTRY_ARIN }, // 192.35.208.0 - 192.35.228.255 { 0xc023e500, 0xc023e5ff, REGISTRY_RIPENCC }, // 192.35.229.0 - 192.35.229.255 { 0xc023e600, 0xc023efff, REGISTRY_ARIN }, // 192.35.230.0 - 192.35.239.255 { 0xc023f000, 0xc023f4ff, REGISTRY_RIPENCC }, // 192.35.240.0 - 192.35.244.255 { 0xc023f500, 0xc023f5ff, REGISTRY_ARIN }, // 192.35.245.0 - 192.35.245.255 { 0xc023f600, 0xc023f7ff, REGISTRY_RIPENCC }, // 192.35.246.0 - 192.35.247.255 { 0xc023f800, 0xc023f8ff, REGISTRY_APNIC }, // 192.35.248.0 - 192.35.248.255 { 0xc023f900, 0xc023ffff, REGISTRY_ARIN }, // 192.35.249.0 - 192.35.255.255 { 0xc0240000, 0xc025ffff, REGISTRY_RIPENCC }, // 192.36.0.0 - 192.37.255.255 { 0xc0260000, 0xc0267fff, REGISTRY_RIPENCC }, // 192.38.0.0 - 192.38.127.255 { 0xc0268000, 0xc026ffff, REGISTRY_RIPENCC }, // 192.38.128.0 - 192.38.255.255 { 0xc0270000, 0xc02844ff, REGISTRY_ARIN }, // 192.39.0.0 - 192.40.68.255 { 0xc0284500, 0xc02850ff, REGISTRY_RIPENCC }, // 192.40.69.0 - 192.40.80.255 { 0xc0285100, 0xc028e3ff, REGISTRY_ARIN }, // 192.40.81.0 - 192.40.227.255 { 0xc028e400, 0xc028e4ff, REGISTRY_RIPENCC }, // 192.40.228.0 - 192.40.228.255 { 0xc028e500, 0xc02966ff, REGISTRY_ARIN }, // 192.40.229.0 - 192.41.102.255 { 0xc0296700, 0xc02988ff, REGISTRY_RIPENCC }, // 192.41.103.0 - 192.41.136.255 { 0xc0298900, 0xc0298bff, REGISTRY_ARIN }, // 192.41.137.0 - 192.41.139.255 { 0xc0298c00, 0xc02991ff, REGISTRY_RIPENCC }, // 192.41.140.0 - 192.41.145.255 { 0xc0299200, 0xc02992ff, REGISTRY_APNIC }, // 192.41.146.0 - 192.41.146.255 { 0xc0299300, 0xc02993ff, REGISTRY_RIPENCC }, // 192.41.147.0 - 192.41.147.255 { 0xc0299400, 0xc02994ff, REGISTRY_ARIN }, // 192.41.148.0 - 192.41.148.255 { 0xc0299500, 0xc029a0ff, REGISTRY_RIPENCC }, // 192.41.149.0 - 192.41.160.255 { 0xc029a100, 0xc029a9ff, REGISTRY_ARIN }, // 192.41.161.0 - 192.41.169.255 { 0xc029aa00, 0xc029aaff, REGISTRY_APNIC }, // 192.41.170.0 - 192.41.170.255 { 0xc029ab00, 0xc029b1ff, REGISTRY_ARIN }, // 192.41.171.0 - 192.41.177.255 { 0xc029b200, 0xc029c5ff, REGISTRY_APNIC }, // 192.41.178.0 - 192.41.197.255 { 0xc029c600, 0xc029caff, REGISTRY_ARIN }, // 192.41.198.0 - 192.41.202.255 { 0xc029cb00, 0xc029cbff, REGISTRY_APNIC }, // 192.41.203.0 - 192.41.203.255 { 0xc029cc00, 0xc029cdff, REGISTRY_ARIN }, // 192.41.204.0 - 192.41.205.255 { 0xc029ce00, 0xc029ceff, REGISTRY_APNIC }, // 192.41.206.0 - 192.41.206.255 { 0xc029cf00, 0xc029d1ff, REGISTRY_ARIN }, // 192.41.207.0 - 192.41.209.255 { 0xc029d200, 0xc029d2ff, REGISTRY_RIPENCC }, // 192.41.210.0 - 192.41.210.255 { 0xc029d300, 0xc029d7ff, REGISTRY_ARIN }, // 192.41.211.0 - 192.41.215.255 { 0xc029d800, 0xc029d8ff, REGISTRY_RIPENCC }, // 192.41.216.0 - 192.41.216.255 { 0xc029d900, 0xc029d9ff, REGISTRY_ARIN }, // 192.41.217.0 - 192.41.217.255 { 0xc029da00, 0xc029daff, REGISTRY_RIPENCC }, // 192.41.218.0 - 192.41.218.255 { 0xc029db00, 0xc029e2ff, REGISTRY_ARIN }, // 192.41.219.0 - 192.41.226.255 { 0xc029e300, 0xc029e3ff, REGISTRY_RIPENCC }, // 192.41.227.0 - 192.41.227.255 { 0xc029e400, 0xc02a00ff, REGISTRY_ARIN }, // 192.41.228.0 - 192.42.0.255 { 0xc02a0100, 0xc02a01ff, REGISTRY_RIPENCC }, // 192.42.1.0 - 192.42.1.255 { 0xc02a0200, 0xc02a29ff, REGISTRY_ARIN }, // 192.42.2.0 - 192.42.41.255 { 0xc02a2a00, 0xc02a2fff, REGISTRY_RIPENCC }, // 192.42.42.0 - 192.42.47.255 { 0xc02a3000, 0xc02a33ff, REGISTRY_ARIN }, // 192.42.48.0 - 192.42.51.255 { 0xc02a3500, 0xc02a35ff, REGISTRY_RIPENCC }, // 192.42.53.0 - 192.42.53.255 { 0xc02a3600, 0xc02a3bff, REGISTRY_ARIN }, // 192.42.54.0 - 192.42.59.255 { 0xc02a3c00, 0xc02a3eff, REGISTRY_APNIC }, // 192.42.60.0 - 192.42.62.255 { 0xc02a3f00, 0xc02a40ff, REGISTRY_RIPENCC }, // 192.42.63.0 - 192.42.64.255 { 0xc02a4200, 0xc02a53ff, REGISTRY_ARIN }, // 192.42.66.0 - 192.42.83.255 { 0xc02a5700, 0xc02a57ff, REGISTRY_RIPENCC }, // 192.42.87.0 - 192.42.87.255 { 0xc02a5800, 0xc02a62ff, REGISTRY_ARIN }, // 192.42.88.0 - 192.42.98.255 { 0xc02a6300, 0xc02a63ff, REGISTRY_AFRINIC }, // 192.42.99.0 - 192.42.99.255 { 0xc02a6400, 0xc02a64ff, REGISTRY_RIPENCC }, // 192.42.100.0 - 192.42.100.255 { 0xc02a6500, 0xc02a65ff, REGISTRY_ARIN }, // 192.42.101.0 - 192.42.101.255 { 0xc02a6600, 0xc02a66ff, REGISTRY_RIPENCC }, // 192.42.102.0 - 192.42.102.255 { 0xc02a6700, 0xc02a6bff, REGISTRY_APNIC }, // 192.42.103.0 - 192.42.107.255 { 0xc02a6c00, 0xc02a70ff, REGISTRY_ARIN }, // 192.42.108.0 - 192.42.112.255 { 0xc02a7100, 0xc02a84ff, REGISTRY_RIPENCC }, // 192.42.113.0 - 192.42.132.255 { 0xc02a8500, 0xc02a8eff, REGISTRY_ARIN }, // 192.42.133.0 - 192.42.142.255 { 0xc02a8f00, 0xc02a8fff, REGISTRY_RIPENCC }, // 192.42.143.0 - 192.42.143.255 { 0xc02a9000, 0xc02a96ff, REGISTRY_ARIN }, // 192.42.144.0 - 192.42.150.255 { 0xc02a9700, 0xc02a97ff, REGISTRY_APNIC }, // 192.42.151.0 - 192.42.151.255 { 0xc02a9800, 0xc02ab3ff, REGISTRY_ARIN }, // 192.42.152.0 - 192.42.179.255 { 0xc02ab400, 0xc02ac9ff, REGISTRY_RIPENCC }, // 192.42.180.0 - 192.42.201.255 { 0xc02aca00, 0xc02aecff, REGISTRY_ARIN }, // 192.42.202.0 - 192.42.236.255 { 0xc02aed00, 0xc02aedff, REGISTRY_APNIC }, // 192.42.237.0 - 192.42.237.255 { 0xc02aee00, 0xc02afcff, REGISTRY_ARIN }, // 192.42.238.0 - 192.42.252.255 { 0xc02afe00, 0xc02ba1ff, REGISTRY_ARIN }, // 192.42.254.0 - 192.43.161.255 { 0xc02ba200, 0xc02babff, REGISTRY_RIPENCC }, // 192.43.162.0 - 192.43.171.255 { 0xc02bac00, 0xc02badff, REGISTRY_ARIN }, // 192.43.172.0 - 192.43.173.255 { 0xc02baf00, 0xc02bb8ff, REGISTRY_ARIN }, // 192.43.175.0 - 192.43.184.255 { 0xc02bb900, 0xc02bb9ff, REGISTRY_APNIC }, // 192.43.185.0 - 192.43.185.255 { 0xc02bba00, 0xc02bbcff, REGISTRY_ARIN }, // 192.43.186.0 - 192.43.188.255 { 0xc02bbe00, 0xc02bbfff, REGISTRY_ARIN }, // 192.43.190.0 - 192.43.191.255 { 0xc02bc000, 0xc02bc4ff, REGISTRY_RIPENCC }, // 192.43.192.0 - 192.43.196.255 { 0xc02bc500, 0xc02bc5ff, REGISTRY_ARIN }, // 192.43.197.0 - 192.43.197.255 { 0xc02bc600, 0xc02bc6ff, REGISTRY_APNIC }, // 192.43.198.0 - 192.43.198.255 { 0xc02bc700, 0xc02bc8ff, REGISTRY_ARIN }, // 192.43.199.0 - 192.43.200.255 { 0xc02bcb00, 0xc02bceff, REGISTRY_ARIN }, // 192.43.203.0 - 192.43.206.255 { 0xc02bcf00, 0xc02bd1ff, REGISTRY_APNIC }, // 192.43.207.0 - 192.43.209.255 { 0xc02bd200, 0xc02bd2ff, REGISTRY_RIPENCC }, // 192.43.210.0 - 192.43.210.255 { 0xc02bd300, 0xc02bd3ff, REGISTRY_ARIN }, // 192.43.211.0 - 192.43.211.255 { 0xc02bd400, 0xc02bd4ff, REGISTRY_RIPENCC }, // 192.43.212.0 - 192.43.212.255 { 0xc02bd500, 0xc02be1ff, REGISTRY_ARIN }, // 192.43.213.0 - 192.43.225.255 { 0xc02be200, 0xc02be5ff, REGISTRY_APNIC }, // 192.43.226.0 - 192.43.229.255 { 0xc02be600, 0xc02be9ff, REGISTRY_ARIN }, // 192.43.230.0 - 192.43.233.255 { 0xc02bea00, 0xc02beaff, REGISTRY_RIPENCC }, // 192.43.234.0 - 192.43.234.255 { 0xc02beb00, 0xc02beeff, REGISTRY_ARIN }, // 192.43.235.0 - 192.43.238.255 { 0xc02bef00, 0xc02befff, REGISTRY_APNIC }, // 192.43.239.0 - 192.43.239.255 { 0xc02bf000, 0xc02bffff, REGISTRY_ARIN }, // 192.43.240.0 - 192.43.255.255 { 0xc02c0000, 0xc02c43ff, REGISTRY_RIPENCC }, // 192.44.0.0 - 192.44.67.255 { 0xc02c4400, 0xc02c46ff, REGISTRY_ARIN }, // 192.44.68.0 - 192.44.70.255 { 0xc02c4700, 0xc02c5aff, REGISTRY_RIPENCC }, // 192.44.71.0 - 192.44.90.255 { 0xc02c5b00, 0xc02cefff, REGISTRY_ARIN }, // 192.44.91.0 - 192.44.239.255 { 0xc02cf000, 0xc02cfbff, REGISTRY_RIPENCC }, // 192.44.240.0 - 192.44.251.255 { 0xc02cfc00, 0xc02effff, REGISTRY_ARIN }, // 192.44.252.0 - 192.46.255.255 { 0xc02f0000, 0xc02f1bff, REGISTRY_APNIC }, // 192.47.0.0 - 192.47.27.255 { 0xc02f1d00, 0xc02f23ff, REGISTRY_APNIC }, // 192.47.29.0 - 192.47.35.255 { 0xc02f2500, 0xc02ff1ff, REGISTRY_APNIC }, // 192.47.37.0 - 192.47.241.255 { 0xc02ff200, 0xc02ff3ff, REGISTRY_ARIN }, // 192.47.242.0 - 192.47.243.255 { 0xc02ff400, 0xc02ff9ff, REGISTRY_RIPENCC }, // 192.47.244.0 - 192.47.249.255 { 0xc02ffa00, 0xc0301eff, REGISTRY_ARIN }, // 192.47.250.0 - 192.48.30.255 { 0xc0301f00, 0xc0301fff, REGISTRY_RIPENCC }, // 192.48.31.0 - 192.48.31.255 { 0xc0302000, 0xc0306aff, REGISTRY_ARIN }, // 192.48.32.0 - 192.48.106.255 { 0xc0306b00, 0xc0306bff, REGISTRY_RIPENCC }, // 192.48.107.0 - 192.48.107.255 { 0xc0306c00, 0xc0306cff, REGISTRY_ARIN }, // 192.48.108.0 - 192.48.108.255 { 0xc0306d00, 0xc0306eff, REGISTRY_APNIC }, // 192.48.109.0 - 192.48.110.255 { 0xc0306f00, 0xc03090ff, REGISTRY_ARIN }, // 192.48.111.0 - 192.48.144.255 { 0xc0309100, 0xc03091ff, REGISTRY_RIPENCC }, // 192.48.145.0 - 192.48.145.255 { 0xc0309200, 0xc030dfff, REGISTRY_ARIN }, // 192.48.146.0 - 192.48.223.255 { 0xc030e000, 0xc030e0ff, REGISTRY_RIPENCC }, // 192.48.224.0 - 192.48.224.255 { 0xc030e100, 0xc030e6ff, REGISTRY_ARIN }, // 192.48.225.0 - 192.48.230.255 { 0xc030e700, 0xc030e7ff, REGISTRY_RIPENCC }, // 192.48.231.0 - 192.48.231.255 { 0xc030e800, 0xc030f7ff, REGISTRY_ARIN }, // 192.48.232.0 - 192.48.247.255 { 0xc030f900, 0xc030fcff, REGISTRY_ARIN }, // 192.48.249.0 - 192.48.252.255 { 0xc030fd00, 0xc030fdff, REGISTRY_AFRINIC }, // 192.48.253.0 - 192.48.253.255 { 0xc030fe00, 0xc030ffff, REGISTRY_ARIN }, // 192.48.254.0 - 192.48.255.255 { 0xc0310000, 0xc031ffff, REGISTRY_RIPENCC }, // 192.49.0.0 - 192.49.255.255 { 0xc0320000, 0xc032ffff, REGISTRY_APNIC }, // 192.50.0.0 - 192.50.255.255 { 0xc0330000, 0xc0330fff, REGISTRY_RIPENCC }, // 192.51.0.0 - 192.51.15.255 { 0xc0331000, 0xc0332fff, REGISTRY_APNIC }, // 192.51.16.0 - 192.51.47.255 { 0xc0333000, 0xc03330ff, REGISTRY_ARIN }, // 192.51.48.0 - 192.51.48.255 { 0xc0333100, 0xc033abff, REGISTRY_APNIC }, // 192.51.49.0 - 192.51.171.255 { 0xc033b000, 0xc033bbff, REGISTRY_APNIC }, // 192.51.176.0 - 192.51.187.255 { 0xc033bd00, 0xc033bfff, REGISTRY_APNIC }, // 192.51.189.0 - 192.51.191.255 { 0xc033c000, 0xc033c1ff, REGISTRY_ARIN }, // 192.51.192.0 - 192.51.193.255 { 0xc033c200, 0xc033efff, REGISTRY_APNIC }, // 192.51.194.0 - 192.51.239.255 { 0xc033f100, 0xc033fdff, REGISTRY_APNIC }, // 192.51.241.0 - 192.51.253.255 { 0xc033ff00, 0xc033ffff, REGISTRY_APNIC }, // 192.51.255.0 - 192.51.255.255 { 0xc0340000, 0xc03432ff, REGISTRY_RIPENCC }, // 192.52.0.0 - 192.52.50.255 { 0xc0343300, 0xc03447ff, REGISTRY_ARIN }, // 192.52.51.0 - 192.52.71.255 { 0xc0344800, 0xc03449ff, REGISTRY_APNIC }, // 192.52.72.0 - 192.52.73.255 { 0xc0344a00, 0xc03476ff, REGISTRY_ARIN }, // 192.52.74.0 - 192.52.118.255 { 0xc0349700, 0xc03497ff, REGISTRY_ARIN }, // 192.52.151.0 - 192.52.151.255 { 0xc0349800, 0xc03498ff, REGISTRY_RIPENCC }, // 192.52.152.0 - 192.52.152.255 { 0xc0349900, 0xc0349eff, REGISTRY_ARIN }, // 192.52.153.0 - 192.52.158.255 { 0xc0349f00, 0xc034a1ff, REGISTRY_RIPENCC }, // 192.52.159.0 - 192.52.161.255 { 0xc034a200, 0xc034aaff, REGISTRY_ARIN }, // 192.52.162.0 - 192.52.170.255 { 0xc034ab00, 0xc034b0ff, REGISTRY_APNIC }, // 192.52.171.0 - 192.52.176.255 { 0xc034b100, 0xc034b8ff, REGISTRY_ARIN }, // 192.52.177.0 - 192.52.184.255 { 0xc034ba00, 0xc034c0ff, REGISTRY_ARIN }, // 192.52.186.0 - 192.52.192.255 { 0xc034c200, 0xc034c3ff, REGISTRY_ARIN }, // 192.52.194.0 - 192.52.195.255 { 0xc034c600, 0xc034dcff, REGISTRY_ARIN }, // 192.52.198.0 - 192.52.220.255 { 0xc034dd00, 0xc034dfff, REGISTRY_RIPENCC }, // 192.52.221.0 - 192.52.223.255 { 0xc034e000, 0xc034e7ff, REGISTRY_ARIN }, // 192.52.224.0 - 192.52.231.255 { 0xc034e800, 0xc034e8ff, REGISTRY_AFRINIC }, // 192.52.232.0 - 192.52.232.255 { 0xc034e900, 0xc034fcff, REGISTRY_ARIN }, // 192.52.233.0 - 192.52.252.255 { 0xc034fd00, 0xc034feff, REGISTRY_RIPENCC }, // 192.52.253.0 - 192.52.254.255 { 0xc034ff00, 0xc03566ff, REGISTRY_ARIN }, // 192.52.255.0 - 192.53.102.255 { 0xc0356700, 0xc03568ff, REGISTRY_RIPENCC }, // 192.53.103.0 - 192.53.104.255 { 0xc0356900, 0xc0361eff, REGISTRY_ARIN }, // 192.53.105.0 - 192.54.30.255 { 0xc0361f00, 0xc03634ff, REGISTRY_RIPENCC }, // 192.54.31.0 - 192.54.52.255 { 0xc0363500, 0xc03635ff, REGISTRY_ARIN }, // 192.54.53.0 - 192.54.53.255 { 0xc0363c00, 0xc03642ff, REGISTRY_RIPENCC }, // 192.54.60.0 - 192.54.66.255 { 0xc0364300, 0xc03647ff, REGISTRY_RIPENCC }, // 192.54.67.0 - 192.54.71.255 { 0xc0364800, 0xc0364bff, REGISTRY_RIPENCC }, // 192.54.72.0 - 192.54.75.255 { 0xc0364e00, 0xc03650ff, REGISTRY_RIPENCC }, // 192.54.78.0 - 192.54.80.255 { 0xc0365100, 0xc03667ff, REGISTRY_ARIN }, // 192.54.81.0 - 192.54.103.255 { 0xc0366800, 0xc03668ff, REGISTRY_RIPENCC }, // 192.54.104.0 - 192.54.104.255 { 0xc0366900, 0xc0366aff, REGISTRY_APNIC }, // 192.54.105.0 - 192.54.106.255 { 0xc0366b00, 0xc03670ff, REGISTRY_ARIN }, // 192.54.107.0 - 192.54.112.255 { 0xc0367100, 0xc03671ff, REGISTRY_RIPENCC }, // 192.54.113.0 - 192.54.113.255 { 0xc0367200, 0xc03672ff, REGISTRY_ARIN }, // 192.54.114.0 - 192.54.114.255 { 0xc0367300, 0xc03678ff, REGISTRY_RIPENCC }, // 192.54.115.0 - 192.54.120.255 { 0xc0367900, 0xc03679ff, REGISTRY_ARIN }, // 192.54.121.0 - 192.54.121.255 { 0xc0367a00, 0xc0367aff, REGISTRY_RIPENCC }, // 192.54.122.0 - 192.54.122.255 { 0xc0367b00, 0xc0367cff, REGISTRY_ARIN }, // 192.54.123.0 - 192.54.124.255 { 0xc0367d00, 0xc03680ff, REGISTRY_RIPENCC }, // 192.54.125.0 - 192.54.128.255 { 0xc0368100, 0xc03681ff, REGISTRY_ARIN }, // 192.54.129.0 - 192.54.129.255 { 0xc0368200, 0xc03682ff, REGISTRY_APNIC }, // 192.54.130.0 - 192.54.130.255 { 0xc0368300, 0xc03683ff, REGISTRY_ARIN }, // 192.54.131.0 - 192.54.131.255 { 0xc0368400, 0xc03684ff, REGISTRY_RIPENCC }, // 192.54.132.0 - 192.54.132.255 { 0xc0368500, 0xc03686ff, REGISTRY_ARIN }, // 192.54.133.0 - 192.54.134.255 { 0xc0368700, 0xc03687ff, REGISTRY_APNIC }, // 192.54.135.0 - 192.54.135.255 { 0xc0368800, 0xc03688ff, REGISTRY_ARIN }, // 192.54.136.0 - 192.54.136.255 { 0xc0368a00, 0xc0368aff, REGISTRY_ARIN }, // 192.54.138.0 - 192.54.138.255 { 0xc0368b00, 0xc0368bff, REGISTRY_RIPENCC }, // 192.54.139.0 - 192.54.139.255 { 0xc0368c00, 0xc0368cff, REGISTRY_ARIN }, // 192.54.140.0 - 192.54.140.255 { 0xc0368d00, 0xc036b9ff, REGISTRY_RIPENCC }, // 192.54.141.0 - 192.54.185.255 { 0xc036bc00, 0xc036ddff, REGISTRY_RIPENCC }, // 192.54.188.0 - 192.54.221.255 { 0xc036de00, 0xc036e0ff, REGISTRY_ARIN }, // 192.54.222.0 - 192.54.224.255 { 0xc036e100, 0xc036e1ff, REGISTRY_RIPENCC }, // 192.54.225.0 - 192.54.225.255 { 0xc036e200, 0xc036f3ff, REGISTRY_ARIN }, // 192.54.226.0 - 192.54.243.255 { 0xc036f500, 0xc036f5ff, REGISTRY_RIPENCC }, // 192.54.245.0 - 192.54.245.255 { 0xc036f600, 0xc036f6ff, REGISTRY_ARIN }, // 192.54.246.0 - 192.54.246.255 { 0xc036f800, 0xc036faff, REGISTRY_ARIN }, // 192.54.248.0 - 192.54.250.255 { 0xc036fb00, 0xc036fbff, REGISTRY_APNIC }, // 192.54.251.0 - 192.54.251.255 { 0xc036fc00, 0xc036fdff, REGISTRY_ARIN }, // 192.54.252.0 - 192.54.253.255 { 0xc036fe00, 0xc036feff, REGISTRY_RIPENCC }, // 192.54.254.0 - 192.54.254.255 { 0xc036ff00, 0xc03753ff, REGISTRY_ARIN }, // 192.54.255.0 - 192.55.83.255 { 0xc0375400, 0xc03754ff, REGISTRY_RIPENCC }, // 192.55.84.0 - 192.55.84.255 { 0xc0375500, 0xc03758ff, REGISTRY_ARIN }, // 192.55.85.0 - 192.55.88.255 { 0xc0375900, 0xc03759ff, REGISTRY_RIPENCC }, // 192.55.89.0 - 192.55.89.255 { 0xc0375a00, 0xc03761ff, REGISTRY_ARIN }, // 192.55.90.0 - 192.55.97.255 { 0xc0376200, 0xc03763ff, REGISTRY_APNIC }, // 192.55.98.0 - 192.55.99.255 { 0xc0376400, 0xc03764ff, REGISTRY_ARIN }, // 192.55.100.0 - 192.55.100.255 { 0xc0376500, 0xc03765ff, REGISTRY_RIPENCC }, // 192.55.101.0 - 192.55.101.255 { 0xc0376600, 0xc03768ff, REGISTRY_ARIN }, // 192.55.102.0 - 192.55.104.255 { 0xc0376900, 0xc03769ff, REGISTRY_RIPENCC }, // 192.55.105.0 - 192.55.105.255 { 0xc0376a00, 0xc0376cff, REGISTRY_ARIN }, // 192.55.106.0 - 192.55.108.255 { 0xc0376d00, 0xc0376dff, REGISTRY_RIPENCC }, // 192.55.109.0 - 192.55.109.255 { 0xc0376f00, 0xc0376fff, REGISTRY_ARIN }, // 192.55.111.0 - 192.55.111.255 { 0xc0377000, 0xc03770ff, REGISTRY_APNIC }, // 192.55.112.0 - 192.55.112.255 { 0xc0377100, 0xc03772ff, REGISTRY_ARIN }, // 192.55.113.0 - 192.55.114.255 { 0xc0377300, 0xc03773ff, REGISTRY_RIPENCC }, // 192.55.115.0 - 192.55.115.255 { 0xc0377400, 0xc03775ff, REGISTRY_ARIN }, // 192.55.116.0 - 192.55.117.255 { 0xc0377600, 0xc03776ff, REGISTRY_APNIC }, // 192.55.118.0 - 192.55.118.255 { 0xc0377700, 0xc03780ff, REGISTRY_ARIN }, // 192.55.119.0 - 192.55.128.255 { 0xc0378100, 0xc03781ff, REGISTRY_RIPENCC }, // 192.55.129.0 - 192.55.129.255 { 0xc0378200, 0xc03783ff, REGISTRY_ARIN }, // 192.55.130.0 - 192.55.131.255 { 0xc0378400, 0xc03784ff, REGISTRY_RIPENCC }, // 192.55.132.0 - 192.55.132.255 { 0xc0378500, 0xc037bbff, REGISTRY_ARIN }, // 192.55.133.0 - 192.55.187.255 { 0xc037bc00, 0xc037bcff, REGISTRY_RIPENCC }, // 192.55.188.0 - 192.55.188.255 { 0xc037bd00, 0xc037bdff, REGISTRY_ARIN }, // 192.55.189.0 - 192.55.189.255 { 0xc037be00, 0xc037beff, REGISTRY_APNIC }, // 192.55.190.0 - 192.55.190.255 { 0xc037bf00, 0xc037c0ff, REGISTRY_ARIN }, // 192.55.191.0 - 192.55.192.255 { 0xc037c100, 0xc037c1ff, REGISTRY_RIPENCC }, // 192.55.193.0 - 192.55.193.255 { 0xc037c200, 0xc037c4ff, REGISTRY_ARIN }, // 192.55.194.0 - 192.55.196.255 { 0xc037c500, 0xc037c5ff, REGISTRY_RIPENCC }, // 192.55.197.0 - 192.55.197.255 { 0xc037c600, 0xc037c6ff, REGISTRY_APNIC }, // 192.55.198.0 - 192.55.198.255 { 0xc037c700, 0xc037d0ff, REGISTRY_ARIN }, // 192.55.199.0 - 192.55.208.255 { 0xc037d200, 0xc037d3ff, REGISTRY_ARIN }, // 192.55.210.0 - 192.55.211.255 { 0xc037d400, 0xc037d4ff, REGISTRY_RIPENCC }, // 192.55.212.0 - 192.55.212.255 { 0xc037d500, 0xc037daff, REGISTRY_ARIN }, // 192.55.213.0 - 192.55.218.255 { 0xc037db00, 0xc037dcff, REGISTRY_APNIC }, // 192.55.219.0 - 192.55.220.255 { 0xc037dd00, 0xc037e7ff, REGISTRY_ARIN }, // 192.55.221.0 - 192.55.231.255 { 0xc037e800, 0xc037e8ff, REGISTRY_APNIC }, // 192.55.232.0 - 192.55.232.255 { 0xc037e900, 0xc037edff, REGISTRY_ARIN }, // 192.55.233.0 - 192.55.237.255 { 0xc037ef00, 0xc037f3ff, REGISTRY_ARIN }, // 192.55.239.0 - 192.55.243.255 { 0xc037f400, 0xc037f4ff, REGISTRY_RIPENCC }, // 192.55.244.0 - 192.55.244.255 { 0xc037f500, 0xc03a08ff, REGISTRY_ARIN }, // 192.55.245.0 - 192.58.8.255 { 0xc03a0900, 0xc03a12ff, REGISTRY_APNIC }, // 192.58.9.0 - 192.58.18.255 { 0xc03a1300, 0xc03a1bff, REGISTRY_ARIN }, // 192.58.19.0 - 192.58.27.255 { 0xc03a1c00, 0xc03a23ff, REGISTRY_RIPENCC }, // 192.58.28.0 - 192.58.35.255 { 0xc03a2400, 0xc03a28ff, REGISTRY_ARIN }, // 192.58.36.0 - 192.58.40.255 { 0xc03a2900, 0xc03a59ff, REGISTRY_RIPENCC }, // 192.58.41.0 - 192.58.89.255 { 0xc03a5a00, 0xc03a60ff, REGISTRY_ARIN }, // 192.58.90.0 - 192.58.96.255 { 0xc03a6600, 0xc03a84ff, REGISTRY_ARIN }, // 192.58.102.0 - 192.58.132.255 { 0xc03a8500, 0xc03a88ff, REGISTRY_APNIC }, // 192.58.133.0 - 192.58.136.255 { 0xc03a8900, 0xc03ac4ff, REGISTRY_ARIN }, // 192.58.137.0 - 192.58.196.255 { 0xc03ac500, 0xc03ac5ff, REGISTRY_RIPENCC }, // 192.58.197.0 - 192.58.197.255 { 0xc03ac600, 0xc03ad9ff, REGISTRY_ARIN }, // 192.58.198.0 - 192.58.217.255 { 0xc03ada00, 0xc03adaff, REGISTRY_RIPENCC }, // 192.58.218.0 - 192.58.218.255 { 0xc03adb00, 0xc03ae1ff, REGISTRY_ARIN }, // 192.58.219.0 - 192.58.225.255 { 0xc03ae200, 0xc03ae5ff, REGISTRY_RIPENCC }, // 192.58.226.0 - 192.58.229.255 { 0xc03ae600, 0xc0401bff, REGISTRY_ARIN }, // 192.58.230.0 - 192.64.27.255 { 0xc0401c00, 0xc0401cff, REGISTRY_RIPENCC }, // 192.64.28.0 - 192.64.28.255 { 0xc0401d00, 0xc0402bff, REGISTRY_ARIN }, // 192.64.29.0 - 192.64.43.255 { 0xc0402c00, 0xc0402dff, REGISTRY_RIPENCC }, // 192.64.44.0 - 192.64.45.255 { 0xc0402e00, 0xc04063ff, REGISTRY_ARIN }, // 192.64.46.0 - 192.64.99.255 { 0xc0406400, 0xc04067ff, REGISTRY_RIPENCC }, // 192.64.100.0 - 192.64.103.255 { 0xc0406800, 0xc0407cff, REGISTRY_ARIN }, // 192.64.104.0 - 192.64.124.255 { 0xc0407e00, 0xc040c9ff, REGISTRY_ARIN }, // 192.64.126.0 - 192.64.201.255 { 0xc040ca00, 0xc040caff, REGISTRY_RIPENCC }, // 192.64.202.0 - 192.64.202.255 { 0xc040cb00, 0xc040ccff, REGISTRY_APNIC }, // 192.64.203.0 - 192.64.204.255 { 0xc040cd00, 0xc04132ff, REGISTRY_ARIN }, // 192.64.205.0 - 192.65.50.255 { 0xc0413300, 0xc04146ff, REGISTRY_RIPENCC }, // 192.65.51.0 - 192.65.70.255 { 0xc0414700, 0xc04151ff, REGISTRY_ARIN }, // 192.65.71.0 - 192.65.81.255 { 0xc0415200, 0xc0415bff, REGISTRY_APNIC }, // 192.65.82.0 - 192.65.91.255 { 0xc0415c00, 0xc0415eff, REGISTRY_RIPENCC }, // 192.65.92.0 - 192.65.94.255 { 0xc0415f00, 0xc0415fff, REGISTRY_ARIN }, // 192.65.95.0 - 192.65.95.255 { 0xc0416000, 0xc04160ff, REGISTRY_RIPENCC }, // 192.65.96.0 - 192.65.96.255 { 0xc0416100, 0xc04181ff, REGISTRY_ARIN }, // 192.65.97.0 - 192.65.129.255 { 0xc0418200, 0xc04182ff, REGISTRY_APNIC }, // 192.65.130.0 - 192.65.130.255 { 0xc0418300, 0xc04184ff, REGISTRY_RIPENCC }, // 192.65.131.0 - 192.65.132.255 { 0xc0418500, 0xc0418aff, REGISTRY_ARIN }, // 192.65.133.0 - 192.65.138.255 { 0xc0418b00, 0xc0418bff, REGISTRY_RIPENCC }, // 192.65.139.0 - 192.65.139.255 { 0xc0418c00, 0xc0418fff, REGISTRY_ARIN }, // 192.65.140.0 - 192.65.143.255 { 0xc0419000, 0xc04192ff, REGISTRY_RIPENCC }, // 192.65.144.0 - 192.65.146.255 { 0xc0419300, 0xc04197ff, REGISTRY_ARIN }, // 192.65.147.0 - 192.65.151.255 { 0xc0419800, 0xc04198ff, REGISTRY_LACNIC }, // 192.65.152.0 - 192.65.152.255 { 0xc0419900, 0xc04199ff, REGISTRY_RIPENCC }, // 192.65.153.0 - 192.65.153.255 { 0xc0419a00, 0xc041b5ff, REGISTRY_ARIN }, // 192.65.154.0 - 192.65.181.255 { 0xc041b600, 0xc041b6ff, REGISTRY_APNIC }, // 192.65.182.0 - 192.65.182.255 { 0xc041b700, 0xc041c5ff, REGISTRY_RIPENCC }, // 192.65.183.0 - 192.65.197.255 { 0xc041c600, 0xc041d8ff, REGISTRY_ARIN }, // 192.65.198.0 - 192.65.216.255 { 0xc041d900, 0xc041d9ff, REGISTRY_APNIC }, // 192.65.217.0 - 192.65.217.255 { 0xc041da00, 0xc041daff, REGISTRY_ARIN }, // 192.65.218.0 - 192.65.218.255 { 0xc041db00, 0xc041e4ff, REGISTRY_RIPENCC }, // 192.65.219.0 - 192.65.228.255 { 0xc041e500, 0xc041f7ff, REGISTRY_ARIN }, // 192.65.229.0 - 192.65.247.255 { 0xc041f900, 0xc041f9ff, REGISTRY_ARIN }, // 192.65.249.0 - 192.65.249.255 { 0xc041fb00, 0xc041ffff, REGISTRY_ARIN }, // 192.65.251.0 - 192.65.255.255 { 0xc0420000, 0xc042ffff, REGISTRY_RIPENCC }, // 192.66.0.0 - 192.66.255.255 { 0xc0430000, 0xc04300ff, REGISTRY_ARIN }, // 192.67.0.0 - 192.67.0.255 { 0xc0430200, 0xc04302ff, REGISTRY_ARIN }, // 192.67.2.0 - 192.67.2.255 { 0xc0430300, 0xc04304ff, REGISTRY_RIPENCC }, // 192.67.3.0 - 192.67.4.255 { 0xc0430500, 0xc0430bff, REGISTRY_ARIN }, // 192.67.5.0 - 192.67.11.255 { 0xc0430c00, 0xc0430cff, REGISTRY_APNIC }, // 192.67.12.0 - 192.67.12.255 { 0xc0430d00, 0xc04316ff, REGISTRY_ARIN }, // 192.67.13.0 - 192.67.22.255 { 0xc0431800, 0xc04326ff, REGISTRY_ARIN }, // 192.67.24.0 - 192.67.38.255 { 0xc0432700, 0xc04327ff, REGISTRY_RIPENCC }, // 192.67.39.0 - 192.67.39.255 { 0xc0432800, 0xc0432aff, REGISTRY_ARIN }, // 192.67.40.0 - 192.67.42.255 { 0xc0432b00, 0xc0432bff, REGISTRY_RIPENCC }, // 192.67.43.0 - 192.67.43.255 { 0xc0432c00, 0xc0432eff, REGISTRY_ARIN }, // 192.67.44.0 - 192.67.46.255 { 0xc0432f00, 0xc0432fff, REGISTRY_RIPENCC }, // 192.67.47.0 - 192.67.47.255 { 0xc0433000, 0xc04331ff, REGISTRY_ARIN }, // 192.67.48.0 - 192.67.49.255 { 0xc0433200, 0xc04332ff, REGISTRY_RIPENCC }, // 192.67.50.0 - 192.67.50.255 { 0xc0433300, 0xc04333ff, REGISTRY_ARIN }, // 192.67.51.0 - 192.67.51.255 { 0xc0433400, 0xc04334ff, REGISTRY_RIPENCC }, // 192.67.52.0 - 192.67.52.255 { 0xc0433500, 0xc04336ff, REGISTRY_ARIN }, // 192.67.53.0 - 192.67.54.255 { 0xc0433700, 0xc04337ff, REGISTRY_RIPENCC }, // 192.67.55.0 - 192.67.55.255 { 0xc0433800, 0xc04339ff, REGISTRY_ARIN }, // 192.67.56.0 - 192.67.57.255 { 0xc0433a00, 0xc0433aff, REGISTRY_RIPENCC }, // 192.67.58.0 - 192.67.58.255 { 0xc0433b00, 0xc0434bff, REGISTRY_ARIN }, // 192.67.59.0 - 192.67.75.255 { 0xc0434c00, 0xc0434cff, REGISTRY_RIPENCC }, // 192.67.76.0 - 192.67.76.255 { 0xc0434d00, 0xc0434eff, REGISTRY_ARIN }, // 192.67.77.0 - 192.67.78.255 { 0xc0434f00, 0xc0434fff, REGISTRY_RIPENCC }, // 192.67.79.0 - 192.67.79.255 { 0xc0435000, 0xc04353ff, REGISTRY_ARIN }, // 192.67.80.0 - 192.67.83.255 { 0xc0435400, 0xc04354ff, REGISTRY_APNIC }, // 192.67.84.0 - 192.67.84.255 { 0xc0435600, 0xc04356ff, REGISTRY_ARIN }, // 192.67.86.0 - 192.67.86.255 { 0xc0435700, 0xc04357ff, REGISTRY_RIPENCC }, // 192.67.87.0 - 192.67.87.255 { 0xc0435800, 0xc0435dff, REGISTRY_ARIN }, // 192.67.88.0 - 192.67.93.255 { 0xc0435e00, 0xc0435eff, REGISTRY_RIPENCC }, // 192.67.94.0 - 192.67.94.255 { 0xc0435f00, 0xc04363ff, REGISTRY_ARIN }, // 192.67.95.0 - 192.67.99.255 { 0xc0436400, 0xc04368ff, REGISTRY_RIPENCC }, // 192.67.100.0 - 192.67.104.255 { 0xc0436900, 0xc04386ff, REGISTRY_ARIN }, // 192.67.105.0 - 192.67.134.255 { 0xc0438700, 0xc04387ff, REGISTRY_RIPENCC }, // 192.67.135.0 - 192.67.135.255 { 0xc0438800, 0xc043a6ff, REGISTRY_ARIN }, // 192.67.136.0 - 192.67.166.255 { 0xc043a700, 0xc043a7ff, REGISTRY_RIPENCC }, // 192.67.167.0 - 192.67.167.255 { 0xc043a900, 0xc043a9ff, REGISTRY_ARIN }, // 192.67.169.0 - 192.67.169.255 { 0xc043aa00, 0xc043aaff, REGISTRY_RIPENCC }, // 192.67.170.0 - 192.67.170.255 { 0xc043ab00, 0xc043abff, REGISTRY_APNIC }, // 192.67.171.0 - 192.67.171.255 { 0xc043ac00, 0xc043bcff, REGISTRY_ARIN }, // 192.67.172.0 - 192.67.188.255 { 0xc043bd00, 0xc043c6ff, REGISTRY_RIPENCC }, // 192.67.189.0 - 192.67.198.255 { 0xc043c800, 0xc043d0ff, REGISTRY_RIPENCC }, // 192.67.200.0 - 192.67.208.255 { 0xc043d100, 0xc043d8ff, REGISTRY_ARIN }, // 192.67.209.0 - 192.67.216.255 { 0xc043da00, 0xc043daff, REGISTRY_RIPENCC }, // 192.67.218.0 - 192.67.218.255 { 0xc043db00, 0xc043dbff, REGISTRY_ARIN }, // 192.67.219.0 - 192.67.219.255 { 0xc043dc00, 0xc043ddff, REGISTRY_RIPENCC }, // 192.67.220.0 - 192.67.221.255 { 0xc043de00, 0xc043deff, REGISTRY_ARIN }, // 192.67.222.0 - 192.67.222.255 { 0xc043df00, 0xc043dfff, REGISTRY_RIPENCC }, // 192.67.223.0 - 192.67.223.255 { 0xc043e000, 0xc043f7ff, REGISTRY_ARIN }, // 192.67.224.0 - 192.67.247.255 { 0xc043f800, 0xc043f8ff, REGISTRY_APNIC }, // 192.67.248.0 - 192.67.248.255 { 0xc043f900, 0xc043f9ff, REGISTRY_RIPENCC }, // 192.67.249.0 - 192.67.249.255 { 0xc043fa00, 0xc043ffff, REGISTRY_ARIN }, // 192.67.250.0 - 192.67.255.255 { 0xc0440000, 0xc04413ff, REGISTRY_RIPENCC }, // 192.68.0.0 - 192.68.19.255 { 0xc0441400, 0xc04416ff, REGISTRY_ARIN }, // 192.68.20.0 - 192.68.22.255 { 0xc0441700, 0xc04417ff, REGISTRY_RIPENCC }, // 192.68.23.0 - 192.68.23.255 { 0xc0441800, 0xc0441eff, REGISTRY_ARIN }, // 192.68.24.0 - 192.68.30.255 { 0xc0441f00, 0xc04433ff, REGISTRY_RIPENCC }, // 192.68.31.0 - 192.68.51.255 { 0xc0443400, 0xc0444bff, REGISTRY_ARIN }, // 192.68.52.0 - 192.68.75.255 { 0xc0444c00, 0xc0446bff, REGISTRY_RIPENCC }, // 192.68.76.0 - 192.68.107.255 { 0xc0446c00, 0xc0446dff, REGISTRY_ARIN }, // 192.68.108.0 - 192.68.109.255 { 0xc0447000, 0xc04483ff, REGISTRY_ARIN }, // 192.68.112.0 - 192.68.131.255 { 0xc0448400, 0xc04484ff, REGISTRY_APNIC }, // 192.68.132.0 - 192.68.132.255 { 0xc0448500, 0xc04489ff, REGISTRY_ARIN }, // 192.68.133.0 - 192.68.137.255 { 0xc0448a00, 0xc0448aff, REGISTRY_AFRINIC }, // 192.68.138.0 - 192.68.138.255 { 0xc0448c00, 0xc04496ff, REGISTRY_ARIN }, // 192.68.140.0 - 192.68.150.255 { 0xc0449700, 0xc04499ff, REGISTRY_RIPENCC }, // 192.68.151.0 - 192.68.153.255 { 0xc0449a00, 0xc044a4ff, REGISTRY_ARIN }, // 192.68.154.0 - 192.68.164.255 { 0xc044a500, 0xc044aaff, REGISTRY_RIPENCC }, // 192.68.165.0 - 192.68.170.255 { 0xc044ab00, 0xc044acff, REGISTRY_APNIC }, // 192.68.171.0 - 192.68.172.255 { 0xc044ad00, 0xc044adff, REGISTRY_ARIN }, // 192.68.173.0 - 192.68.173.255 { 0xc044ae00, 0xc044aeff, REGISTRY_RIPENCC }, // 192.68.174.0 - 192.68.174.255 { 0xc044af00, 0xc044afff, REGISTRY_ARIN }, // 192.68.175.0 - 192.68.175.255 { 0xc044b000, 0xc044b0ff, REGISTRY_RIPENCC }, // 192.68.176.0 - 192.68.176.255 { 0xc044b100, 0xc044b2ff, REGISTRY_ARIN }, // 192.68.177.0 - 192.68.178.255 { 0xc044b400, 0xc044b5ff, REGISTRY_ARIN }, // 192.68.180.0 - 192.68.181.255 { 0xc044b600, 0xc044b6ff, REGISTRY_RIPENCC }, // 192.68.182.0 - 192.68.182.255 { 0xc044b700, 0xc044b8ff, REGISTRY_ARIN }, // 192.68.183.0 - 192.68.184.255 { 0xc044ba00, 0xc044baff, REGISTRY_RIPENCC }, // 192.68.186.0 - 192.68.186.255 { 0xc044bb00, 0xc044d0ff, REGISTRY_ARIN }, // 192.68.187.0 - 192.68.208.255 { 0xc044d100, 0xc044d1ff, REGISTRY_RIPENCC }, // 192.68.209.0 - 192.68.209.255 { 0xc044d200, 0xc044d2ff, REGISTRY_ARIN }, // 192.68.210.0 - 192.68.210.255 { 0xc044d300, 0xc044d8ff, REGISTRY_RIPENCC }, // 192.68.211.0 - 192.68.216.255 { 0xc044d900, 0xc044dcff, REGISTRY_ARIN }, // 192.68.217.0 - 192.68.220.255 { 0xc044dd00, 0xc044ddff, REGISTRY_RIPENCC }, // 192.68.221.0 - 192.68.221.255 { 0xc044de00, 0xc044dfff, REGISTRY_ARIN }, // 192.68.222.0 - 192.68.223.255 { 0xc044e000, 0xc044e0ff, REGISTRY_RIPENCC }, // 192.68.224.0 - 192.68.224.255 { 0xc044e100, 0xc044e5ff, REGISTRY_ARIN }, // 192.68.225.0 - 192.68.229.255 { 0xc044e600, 0xc044e6ff, REGISTRY_RIPENCC }, // 192.68.230.0 - 192.68.230.255 { 0xc044e700, 0xc044eaff, REGISTRY_ARIN }, // 192.68.231.0 - 192.68.234.255 { 0xc044eb00, 0xc044f9ff, REGISTRY_APNIC }, // 192.68.235.0 - 192.68.249.255 { 0xc044fa00, 0xc044fcff, REGISTRY_RIPENCC }, // 192.68.250.0 - 192.68.252.255 { 0xc044fd00, 0xc044fdff, REGISTRY_ARIN }, // 192.68.253.0 - 192.68.253.255 { 0xc044fe00, 0xc044feff, REGISTRY_RIPENCC }, // 192.68.254.0 - 192.68.254.255 { 0xc044ff00, 0xc045ffff, REGISTRY_ARIN }, // 192.68.255.0 - 192.69.255.255 { 0xc0460000, 0xc04677ff, REGISTRY_RIPENCC }, // 192.70.0.0 - 192.70.119.255 { 0xc0467800, 0xc04684ff, REGISTRY_ARIN }, // 192.70.120.0 - 192.70.132.255 { 0xc0468500, 0xc04686ff, REGISTRY_RIPENCC }, // 192.70.133.0 - 192.70.134.255 { 0xc0468700, 0xc04687ff, REGISTRY_APNIC }, // 192.70.135.0 - 192.70.135.255 { 0xc0468800, 0xc04688ff, REGISTRY_RIPENCC }, // 192.70.136.0 - 192.70.136.255 { 0xc0468900, 0xc0468bff, REGISTRY_ARIN }, // 192.70.137.0 - 192.70.139.255 { 0xc0468c00, 0xc0469fff, REGISTRY_RIPENCC }, // 192.70.140.0 - 192.70.159.255 { 0xc046a000, 0xc046adff, REGISTRY_ARIN }, // 192.70.160.0 - 192.70.173.255 { 0xc046ae00, 0xc046aeff, REGISTRY_APNIC }, // 192.70.174.0 - 192.70.174.255 { 0xc046af00, 0xc046b2ff, REGISTRY_ARIN }, // 192.70.175.0 - 192.70.178.255 { 0xc046b300, 0xc046b5ff, REGISTRY_APNIC }, // 192.70.179.0 - 192.70.181.255 { 0xc046b800, 0xc046bfff, REGISTRY_ARIN }, // 192.70.184.0 - 192.70.191.255 { 0xc046ca00, 0xc046d7ff, REGISTRY_ARIN }, // 192.70.202.0 - 192.70.215.255 { 0xc046d800, 0xc046d8ff, REGISTRY_APNIC }, // 192.70.216.0 - 192.70.216.255 { 0xc046d900, 0xc046daff, REGISTRY_ARIN }, // 192.70.217.0 - 192.70.218.255 { 0xc046db00, 0xc046dbff, REGISTRY_APNIC }, // 192.70.219.0 - 192.70.219.255 { 0xc046dc00, 0xc046ecff, REGISTRY_ARIN }, // 192.70.220.0 - 192.70.236.255 { 0xc046ed00, 0xc046edff, REGISTRY_AFRINIC }, // 192.70.237.0 - 192.70.237.255 { 0xc046ee00, 0xc046f1ff, REGISTRY_ARIN }, // 192.70.238.0 - 192.70.241.255 { 0xc046f200, 0xc046f2ff, REGISTRY_RIPENCC }, // 192.70.242.0 - 192.70.242.255 { 0xc046f300, 0xc046ffff, REGISTRY_ARIN }, // 192.70.243.0 - 192.70.255.255 { 0xc0470000, 0xc047ffff, REGISTRY_RIPENCC }, // 192.71.0.0 - 192.71.255.255 { 0xc0480000, 0xc04802ff, REGISTRY_ARIN }, // 192.72.0.0 - 192.72.2.255 { 0xc0480300, 0xc048fcff, REGISTRY_APNIC }, // 192.72.3.0 - 192.72.252.255 { 0xc048fd00, 0xc0490bff, REGISTRY_ARIN }, // 192.72.253.0 - 192.73.11.255 { 0xc0490c00, 0xc0490cff, REGISTRY_APNIC }, // 192.73.12.0 - 192.73.12.255 { 0xc0490d00, 0xc04912ff, REGISTRY_ARIN }, // 192.73.13.0 - 192.73.18.255 { 0xc0491300, 0xc04914ff, REGISTRY_RIPENCC }, // 192.73.19.0 - 192.73.20.255 { 0xc0491500, 0xc04916ff, REGISTRY_APNIC }, // 192.73.21.0 - 192.73.22.255 { 0xc0491700, 0xc04917ff, REGISTRY_ARIN }, // 192.73.23.0 - 192.73.23.255 { 0xc0491800, 0xc04919ff, REGISTRY_APNIC }, // 192.73.24.0 - 192.73.25.255 { 0xc0491a00, 0xc04921ff, REGISTRY_ARIN }, // 192.73.26.0 - 192.73.33.255 { 0xc0492200, 0xc0492cff, REGISTRY_RIPENCC }, // 192.73.34.0 - 192.73.44.255 { 0xc0492d00, 0xc04941ff, REGISTRY_ARIN }, // 192.73.45.0 - 192.73.65.255 { 0xc0494200, 0xc04942ff, REGISTRY_APNIC }, // 192.73.66.0 - 192.73.66.255 { 0xc0494300, 0xc049e1ff, REGISTRY_ARIN }, // 192.73.67.0 - 192.73.225.255 { 0xc049e200, 0xc049e2ff, REGISTRY_RIPENCC }, // 192.73.226.0 - 192.73.226.255 { 0xc049e300, 0xc049e4ff, REGISTRY_ARIN }, // 192.73.227.0 - 192.73.228.255 { 0xc049e500, 0xc049e5ff, REGISTRY_RIPENCC }, // 192.73.229.0 - 192.73.229.255 { 0xc049e600, 0xc04a8aff, REGISTRY_ARIN }, // 192.73.230.0 - 192.74.138.255 { 0xc04a8b00, 0xc04ad0ff, REGISTRY_APNIC }, // 192.74.139.0 - 192.74.208.255 { 0xc04ad100, 0xc04b03ff, REGISTRY_ARIN }, // 192.74.209.0 - 192.75.3.255 { 0xc04b0500, 0xc04b88ff, REGISTRY_ARIN }, // 192.75.5.0 - 192.75.136.255 { 0xc04b8a00, 0xc04bebff, REGISTRY_ARIN }, // 192.75.138.0 - 192.75.235.255 { 0xc04bed00, 0xc04c05ff, REGISTRY_ARIN }, // 192.75.237.0 - 192.76.5.255 { 0xc04c0600, 0xc04c23ff, REGISTRY_RIPENCC }, // 192.76.6.0 - 192.76.35.255 { 0xc04c2400, 0xc04c79ff, REGISTRY_ARIN }, // 192.76.36.0 - 192.76.121.255 { 0xc04c7a00, 0xc04c7aff, REGISTRY_APNIC }, // 192.76.122.0 - 192.76.122.255 { 0xc04c7b00, 0xc04c84ff, REGISTRY_RIPENCC }, // 192.76.123.0 - 192.76.132.255 { 0xc04c8500, 0xc04c85ff, REGISTRY_ARIN }, // 192.76.133.0 - 192.76.133.255 { 0xc04c8600, 0xc04c94ff, REGISTRY_RIPENCC }, // 192.76.134.0 - 192.76.148.255 { 0xc04c9700, 0xc04c98ff, REGISTRY_RIPENCC }, // 192.76.151.0 - 192.76.152.255 { 0xc04c9a00, 0xc04c9fff, REGISTRY_RIPENCC }, // 192.76.154.0 - 192.76.159.255 { 0xc04ca100, 0xc04ca2ff, REGISTRY_RIPENCC }, // 192.76.161.0 - 192.76.162.255 { 0xc04ca500, 0xc04caaff, REGISTRY_RIPENCC }, // 192.76.165.0 - 192.76.170.255 { 0xc04cac00, 0xc04cacff, REGISTRY_RIPENCC }, // 192.76.172.0 - 192.76.172.255 { 0xc04cad00, 0xc04cafff, REGISTRY_ARIN }, // 192.76.173.0 - 192.76.175.255 { 0xc04cb000, 0xc04cb0ff, REGISTRY_RIPENCC }, // 192.76.176.0 - 192.76.176.255 { 0xc04cb100, 0xc04cf0ff, REGISTRY_ARIN }, // 192.76.177.0 - 192.76.240.255 { 0xc04cf100, 0xc04cf8ff, REGISTRY_RIPENCC }, // 192.76.241.0 - 192.76.248.255 { 0xc04cf900, 0xc04cfbff, REGISTRY_ARIN }, // 192.76.249.0 - 192.76.251.255 { 0xc04cff00, 0xc04d07ff, REGISTRY_ARIN }, // 192.76.255.0 - 192.77.7.255 { 0xc04d0900, 0xc04d0aff, REGISTRY_ARIN }, // 192.77.9.0 - 192.77.10.255 { 0xc04d0b00, 0xc04d0bff, REGISTRY_RIPENCC }, // 192.77.11.0 - 192.77.11.255 { 0xc04d0c00, 0xc04d10ff, REGISTRY_ARIN }, // 192.77.12.0 - 192.77.16.255 { 0xc04d1200, 0xc04d71ff, REGISTRY_ARIN }, // 192.77.18.0 - 192.77.113.255 { 0xc04d7200, 0xc04d73ff, REGISTRY_RIPENCC }, // 192.77.114.0 - 192.77.115.255 { 0xc04d7400, 0xc04d77ff, REGISTRY_ARIN }, // 192.77.116.0 - 192.77.119.255 { 0xc04d7800, 0xc04d7bff, REGISTRY_RIPENCC }, // 192.77.120.0 - 192.77.123.255 { 0xc04d7c00, 0xc04d83ff, REGISTRY_ARIN }, // 192.77.124.0 - 192.77.131.255 { 0xc04d8400, 0xc04d8aff, REGISTRY_RIPENCC }, // 192.77.132.0 - 192.77.138.255 { 0xc04d8b00, 0xc04d8bff, REGISTRY_ARIN }, // 192.77.139.0 - 192.77.139.255 { 0xc04d8c00, 0xc04d8dff, REGISTRY_RIPENCC }, // 192.77.140.0 - 192.77.141.255 { 0xc04d8e00, 0xc05013ff, REGISTRY_ARIN }, // 192.77.142.0 - 192.80.19.255 { 0xc0501400, 0xc05015ff, REGISTRY_RIPENCC }, // 192.80.20.0 - 192.80.21.255 { 0xc0501600, 0xc05017ff, REGISTRY_ARIN }, // 192.80.22.0 - 192.80.23.255 { 0xc0501800, 0xc05018ff, REGISTRY_LACNIC }, // 192.80.24.0 - 192.80.24.255 { 0xc0501900, 0xc0501eff, REGISTRY_ARIN }, // 192.80.25.0 - 192.80.30.255 { 0xc0501f00, 0xc0502aff, REGISTRY_RIPENCC }, // 192.80.31.0 - 192.80.42.255 { 0xc0502b00, 0xc0502dff, REGISTRY_ARIN }, // 192.80.43.0 - 192.80.45.255 { 0xc0502e00, 0xc0502eff, REGISTRY_RIPENCC }, // 192.80.46.0 - 192.80.46.255 { 0xc0502f00, 0xc05032ff, REGISTRY_ARIN }, // 192.80.47.0 - 192.80.50.255 { 0xc0503300, 0xc05033ff, REGISTRY_RIPENCC }, // 192.80.51.0 - 192.80.51.255 { 0xc0503400, 0xc050d0ff, REGISTRY_ARIN }, // 192.80.52.0 - 192.80.208.255 { 0xc050d100, 0xc050d1ff, REGISTRY_LACNIC }, // 192.80.209.0 - 192.80.209.255 { 0xc050d200, 0xc0513aff, REGISTRY_ARIN }, // 192.80.210.0 - 192.81.58.255 { 0xc0513b00, 0xc0513bff, REGISTRY_RIPENCC }, // 192.81.59.0 - 192.81.59.255 { 0xc0513c00, 0xc0513cff, REGISTRY_ARIN }, // 192.81.60.0 - 192.81.60.255 { 0xc0513d00, 0xc0513eff, REGISTRY_RIPENCC }, // 192.81.61.0 - 192.81.62.255 { 0xc0513f00, 0xc0516cff, REGISTRY_ARIN }, // 192.81.63.0 - 192.81.108.255 { 0xc0516d00, 0xc0516dff, REGISTRY_RIPENCC }, // 192.81.109.0 - 192.81.109.255 { 0xc0516e00, 0xc05178ff, REGISTRY_ARIN }, // 192.81.110.0 - 192.81.120.255 { 0xc0517900, 0xc05179ff, REGISTRY_RIPENCC }, // 192.81.121.0 - 192.81.121.255 { 0xc0517a00, 0xc0517aff, REGISTRY_ARIN }, // 192.81.122.0 - 192.81.122.255 { 0xc0517b00, 0xc0517bff, REGISTRY_RIPENCC }, // 192.81.123.0 - 192.81.123.255 { 0xc0517c00, 0xc0519fff, REGISTRY_ARIN }, // 192.81.124.0 - 192.81.159.255 { 0xc051a000, 0xc051a0ff, REGISTRY_RIPENCC }, // 192.81.160.0 - 192.81.160.255 { 0xc051a100, 0xc051b5ff, REGISTRY_ARIN }, // 192.81.161.0 - 192.81.181.255 { 0xc051b600, 0xc051b8ff, REGISTRY_RIPENCC }, // 192.81.182.0 - 192.81.184.255 { 0xc051b900, 0xc051c1ff, REGISTRY_ARIN }, // 192.81.185.0 - 192.81.193.255 { 0xc051c200, 0xc051c2ff, REGISTRY_RIPENCC }, // 192.81.194.0 - 192.81.194.255 { 0xc051c300, 0xc051e5ff, REGISTRY_ARIN }, // 192.81.195.0 - 192.81.229.255 { 0xc051e600, 0xc051e6ff, REGISTRY_RIPENCC }, // 192.81.230.0 - 192.81.230.255 { 0xc051e700, 0xc051e9ff, REGISTRY_ARIN }, // 192.81.231.0 - 192.81.233.255 { 0xc051ea00, 0xc051eaff, REGISTRY_RIPENCC }, // 192.81.234.0 - 192.81.234.255 { 0xc051eb00, 0xc05278ff, REGISTRY_ARIN }, // 192.81.235.0 - 192.82.120.255 { 0xc0527900, 0xc05279ff, REGISTRY_RIPENCC }, // 192.82.121.0 - 192.82.121.255 { 0xc0527a00, 0xc0527bff, REGISTRY_ARIN }, // 192.82.122.0 - 192.82.123.255 { 0xc0527c00, 0xc0527cff, REGISTRY_RIPENCC }, // 192.82.124.0 - 192.82.124.255 { 0xc0527d00, 0xc0527eff, REGISTRY_ARIN }, // 192.82.125.0 - 192.82.126.255 { 0xc0527f00, 0xc0527fff, REGISTRY_RIPENCC }, // 192.82.127.0 - 192.82.127.255 { 0xc0528000, 0xc05283ff, REGISTRY_ARIN }, // 192.82.128.0 - 192.82.131.255 { 0xc0528500, 0xc0528bff, REGISTRY_ARIN }, // 192.82.133.0 - 192.82.139.255 { 0xc0528c00, 0xc0528cff, REGISTRY_APNIC }, // 192.82.140.0 - 192.82.140.255 { 0xc0528d00, 0xc0528dff, REGISTRY_ARIN }, // 192.82.141.0 - 192.82.141.255 { 0xc0528e00, 0xc0528eff, REGISTRY_AFRINIC }, // 192.82.142.0 - 192.82.142.255 { 0xc0528f00, 0xc0528fff, REGISTRY_APNIC }, // 192.82.143.0 - 192.82.143.255 { 0xc0529000, 0xc05298ff, REGISTRY_ARIN }, // 192.82.144.0 - 192.82.152.255 { 0xc0529900, 0xc05299ff, REGISTRY_RIPENCC }, // 192.82.153.0 - 192.82.153.255 { 0xc0529a00, 0xc0529cff, REGISTRY_ARIN }, // 192.82.154.0 - 192.82.156.255 { 0xc0529d00, 0xc0529eff, REGISTRY_RIPENCC }, // 192.82.157.0 - 192.82.158.255 { 0xc0529f00, 0xc052a0ff, REGISTRY_ARIN }, // 192.82.159.0 - 192.82.160.255 { 0xc052a100, 0xc052a1ff, REGISTRY_APNIC }, // 192.82.161.0 - 192.82.161.255 { 0xc052a200, 0xc052d5ff, REGISTRY_ARIN }, // 192.82.162.0 - 192.82.213.255 { 0xc052d600, 0xc052d6ff, REGISTRY_RIPENCC }, // 192.82.214.0 - 192.82.214.255 { 0xc052d700, 0xc052dbff, REGISTRY_ARIN }, // 192.82.215.0 - 192.82.219.255 { 0xc052dc00, 0xc052ddff, REGISTRY_RIPENCC }, // 192.82.220.0 - 192.82.221.255 { 0xc052de00, 0xc052deff, REGISTRY_APNIC }, // 192.82.222.0 - 192.82.222.255 { 0xc052df00, 0xc052e5ff, REGISTRY_ARIN }, // 192.82.223.0 - 192.82.229.255 { 0xc052e700, 0xc052f0ff, REGISTRY_ARIN }, // 192.82.231.0 - 192.82.240.255 { 0xc052f100, 0xc052f1ff, REGISTRY_RIPENCC }, // 192.82.241.0 - 192.82.241.255 { 0xc052f200, 0xc052ffff, REGISTRY_ARIN }, // 192.82.242.0 - 192.82.255.255 { 0xc0530000, 0xc05364ff, REGISTRY_RIPENCC }, // 192.83.0.0 - 192.83.100.255 { 0xc0536500, 0xc05365ff, REGISTRY_ARIN }, // 192.83.101.0 - 192.83.101.255 { 0xc0536600, 0xc05366ff, REGISTRY_RIPENCC }, // 192.83.102.0 - 192.83.102.255 { 0xc0536700, 0xc05367ff, REGISTRY_ARIN }, // 192.83.103.0 - 192.83.103.255 { 0xc0536900, 0xc05375ff, REGISTRY_ARIN }, // 192.83.105.0 - 192.83.117.255 { 0xc0537600, 0xc05377ff, REGISTRY_APNIC }, // 192.83.118.0 - 192.83.119.255 { 0xc0537800, 0xc05379ff, REGISTRY_ARIN }, // 192.83.120.0 - 192.83.121.255 { 0xc0537b00, 0xc0537bff, REGISTRY_APNIC }, // 192.83.123.0 - 192.83.123.255 { 0xc0537c00, 0xc0539cff, REGISTRY_ARIN }, // 192.83.124.0 - 192.83.156.255 { 0xc0539e00, 0xc0539fff, REGISTRY_ARIN }, // 192.83.158.0 - 192.83.159.255 { 0xc053a000, 0xc053a0ff, REGISTRY_RIPENCC }, // 192.83.160.0 - 192.83.160.255 { 0xc053a100, 0xc053a4ff, REGISTRY_ARIN }, // 192.83.161.0 - 192.83.164.255 { 0xc053a500, 0xc053a5ff, REGISTRY_RIPENCC }, // 192.83.165.0 - 192.83.165.255 { 0xc053a600, 0xc053c4ff, REGISTRY_APNIC }, // 192.83.166.0 - 192.83.196.255 { 0xc053c500, 0xc053c5ff, REGISTRY_ARIN }, // 192.83.197.0 - 192.83.197.255 { 0xc053c600, 0xc053c6ff, REGISTRY_APNIC }, // 192.83.198.0 - 192.83.198.255 { 0xc053c700, 0xc053c7ff, REGISTRY_ARIN }, // 192.83.199.0 - 192.83.199.255 { 0xc053c800, 0xc053c8ff, REGISTRY_RIPENCC }, // 192.83.200.0 - 192.83.200.255 { 0xc053c900, 0xc053c9ff, REGISTRY_ARIN }, // 192.83.201.0 - 192.83.201.255 { 0xc053ca00, 0xc053caff, REGISTRY_RIPENCC }, // 192.83.202.0 - 192.83.202.255 { 0xc053cb00, 0xc053ceff, REGISTRY_ARIN }, // 192.83.203.0 - 192.83.206.255 { 0xc053d000, 0xc053d3ff, REGISTRY_AFRINIC }, // 192.83.208.0 - 192.83.211.255 { 0xc053da00, 0xc053dbff, REGISTRY_APNIC }, // 192.83.218.0 - 192.83.219.255 { 0xc053dc00, 0xc053deff, REGISTRY_ARIN }, // 192.83.220.0 - 192.83.222.255 { 0xc053df00, 0xc053dfff, REGISTRY_RIPENCC }, // 192.83.223.0 - 192.83.223.255 { 0xc053e000, 0xc053e0ff, REGISTRY_APNIC }, // 192.83.224.0 - 192.83.224.255 { 0xc053e100, 0xc053e4ff, REGISTRY_ARIN }, // 192.83.225.0 - 192.83.228.255 { 0xc053e500, 0xc053e6ff, REGISTRY_RIPENCC }, // 192.83.229.0 - 192.83.230.255 { 0xc053e700, 0xc053e7ff, REGISTRY_APNIC }, // 192.83.231.0 - 192.83.231.255 { 0xc053e800, 0xc053ecff, REGISTRY_ARIN }, // 192.83.232.0 - 192.83.236.255 { 0xc053ed00, 0xc053eeff, REGISTRY_APNIC }, // 192.83.237.0 - 192.83.238.255 { 0xc053ef00, 0xc05404ff, REGISTRY_ARIN }, // 192.83.239.0 - 192.84.4.255 { 0xc0540500, 0xc05405ff, REGISTRY_RIPENCC }, // 192.84.5.0 - 192.84.5.255 { 0xc0540600, 0xc0540bff, REGISTRY_ARIN }, // 192.84.6.0 - 192.84.11.255 { 0xc0540c00, 0xc0540cff, REGISTRY_LACNIC }, // 192.84.12.0 - 192.84.12.255 { 0xc0540d00, 0xc0540dff, REGISTRY_RIPENCC }, // 192.84.13.0 - 192.84.13.255 { 0xc0540e00, 0xc0540eff, REGISTRY_ARIN }, // 192.84.14.0 - 192.84.14.255 { 0xc0540f00, 0xc0540fff, REGISTRY_RIPENCC }, // 192.84.15.0 - 192.84.15.255 { 0xc0541000, 0xc0541aff, REGISTRY_ARIN }, // 192.84.16.0 - 192.84.26.255 { 0xc0541b00, 0xc0541bff, REGISTRY_RIPENCC }, // 192.84.27.0 - 192.84.27.255 { 0xc0541c00, 0xc0541dff, REGISTRY_ARIN }, // 192.84.28.0 - 192.84.29.255 { 0xc0541e00, 0xc0541eff, REGISTRY_RIPENCC }, // 192.84.30.0 - 192.84.30.255 { 0xc0541f00, 0xc0541fff, REGISTRY_ARIN }, // 192.84.31.0 - 192.84.31.255 { 0xc0542000, 0xc05421ff, REGISTRY_RIPENCC }, // 192.84.32.0 - 192.84.33.255 { 0xc0542200, 0xc0543dff, REGISTRY_ARIN }, // 192.84.34.0 - 192.84.61.255 { 0xc0543e00, 0xc0543eff, REGISTRY_RIPENCC }, // 192.84.62.0 - 192.84.62.255 { 0xc0543f00, 0xc05446ff, REGISTRY_ARIN }, // 192.84.63.0 - 192.84.70.255 { 0xc0544a00, 0xc0544aff, REGISTRY_ARIN }, // 192.84.74.0 - 192.84.74.255 { 0xc0544b00, 0xc05454ff, REGISTRY_RIPENCC }, // 192.84.75.0 - 192.84.84.255 { 0xc0545500, 0xc05456ff, REGISTRY_ARIN }, // 192.84.85.0 - 192.84.86.255 { 0xc0545700, 0xc05457ff, REGISTRY_RIPENCC }, // 192.84.87.0 - 192.84.87.255 { 0xc0545800, 0xc05458ff, REGISTRY_ARIN }, // 192.84.88.0 - 192.84.88.255 { 0xc0545900, 0xc05459ff, REGISTRY_APNIC }, // 192.84.89.0 - 192.84.89.255 { 0xc0545a00, 0xc05463ff, REGISTRY_RIPENCC }, // 192.84.90.0 - 192.84.99.255 { 0xc0546400, 0xc05464ff, REGISTRY_ARIN }, // 192.84.100.0 - 192.84.100.255 { 0xc0546500, 0xc0546dff, REGISTRY_RIPENCC }, // 192.84.101.0 - 192.84.109.255 { 0xc0546e00, 0xc0547eff, REGISTRY_ARIN }, // 192.84.110.0 - 192.84.126.255 { 0xc0547f00, 0xc0549cff, REGISTRY_RIPENCC }, // 192.84.127.0 - 192.84.156.255 { 0xc0549d00, 0xc054a5ff, REGISTRY_ARIN }, // 192.84.157.0 - 192.84.165.255 { 0xc054a600, 0xc054a6ff, REGISTRY_RIPENCC }, // 192.84.166.0 - 192.84.166.255 { 0xc054a700, 0xc054acff, REGISTRY_ARIN }, // 192.84.167.0 - 192.84.172.255 { 0xc054ad00, 0xc054adff, REGISTRY_RIPENCC }, // 192.84.173.0 - 192.84.173.255 { 0xc054ae00, 0xc054afff, REGISTRY_ARIN }, // 192.84.174.0 - 192.84.175.255 { 0xc054b000, 0xc054cfff, REGISTRY_RIPENCC }, // 192.84.176.0 - 192.84.207.255 { 0xc054d000, 0xc054d3ff, REGISTRY_ARIN }, // 192.84.208.0 - 192.84.211.255 { 0xc054d400, 0xc054d4ff, REGISTRY_RIPENCC }, // 192.84.212.0 - 192.84.212.255 { 0xc054d500, 0xc054daff, REGISTRY_ARIN }, // 192.84.213.0 - 192.84.218.255 { 0xc054dc00, 0xc054ddff, REGISTRY_RIPENCC }, // 192.84.220.0 - 192.84.221.255 { 0xc054de00, 0xc054e1ff, REGISTRY_ARIN }, // 192.84.222.0 - 192.84.225.255 { 0xc054e200, 0xc054e5ff, REGISTRY_RIPENCC }, // 192.84.226.0 - 192.84.229.255 { 0xc054e600, 0xc054e6ff, REGISTRY_APNIC }, // 192.84.230.0 - 192.84.230.255 { 0xc054e700, 0xc054ecff, REGISTRY_ARIN }, // 192.84.231.0 - 192.84.236.255 { 0xc054ed00, 0xc054eeff, REGISTRY_APNIC }, // 192.84.237.0 - 192.84.238.255 { 0xc054ef00, 0xc054f0ff, REGISTRY_ARIN }, // 192.84.239.0 - 192.84.240.255 { 0xc054f200, 0xc054f2ff, REGISTRY_APNIC }, // 192.84.242.0 - 192.84.242.255 { 0xc054f300, 0xc054f3ff, REGISTRY_ARIN }, // 192.84.243.0 - 192.84.243.255 { 0xc054f400, 0xc054f4ff, REGISTRY_AFRINIC }, // 192.84.244.0 - 192.84.244.255 { 0xc054f500, 0xc054f7ff, REGISTRY_RIPENCC }, // 192.84.245.0 - 192.84.247.255 { 0xc054f800, 0xc054fcff, REGISTRY_ARIN }, // 192.84.248.0 - 192.84.252.255 { 0xc054fd00, 0xc054fdff, REGISTRY_APNIC }, // 192.84.253.0 - 192.84.253.255 { 0xc054fe00, 0xc0560aff, REGISTRY_ARIN }, // 192.84.254.0 - 192.86.10.255 { 0xc0560b00, 0xc0560bff, REGISTRY_RIPENCC }, // 192.86.11.0 - 192.86.11.255 { 0xc0560d00, 0xc0560dff, REGISTRY_ARIN }, // 192.86.13.0 - 192.86.13.255 { 0xc0560e00, 0xc0560eff, REGISTRY_RIPENCC }, // 192.86.14.0 - 192.86.14.255 { 0xc0560f00, 0xc05611ff, REGISTRY_ARIN }, // 192.86.15.0 - 192.86.17.255 { 0xc0561200, 0xc05612ff, REGISTRY_RIPENCC }, // 192.86.18.0 - 192.86.18.255 { 0xc0561300, 0xc05618ff, REGISTRY_ARIN }, // 192.86.19.0 - 192.86.24.255 { 0xc0561900, 0xc05619ff, REGISTRY_RIPENCC }, // 192.86.25.0 - 192.86.25.255 { 0xc0561a00, 0xc0561aff, REGISTRY_ARIN }, // 192.86.26.0 - 192.86.26.255 { 0xc0561b00, 0xc0561bff, REGISTRY_RIPENCC }, // 192.86.27.0 - 192.86.27.255 { 0xc0561c00, 0xc05658ff, REGISTRY_ARIN }, // 192.86.28.0 - 192.86.88.255 { 0xc0565900, 0xc05659ff, REGISTRY_RIPENCC }, // 192.86.89.0 - 192.86.89.255 { 0xc0565a00, 0xc0567cff, REGISTRY_ARIN }, // 192.86.90.0 - 192.86.124.255 { 0xc0567d00, 0xc0567fff, REGISTRY_RIPENCC }, // 192.86.125.0 - 192.86.127.255 { 0xc0568000, 0xc05680ff, REGISTRY_ARIN }, // 192.86.128.0 - 192.86.128.255 { 0xc0568200, 0xc05683ff, REGISTRY_ARIN }, // 192.86.130.0 - 192.86.131.255 { 0xc0568600, 0xc05686ff, REGISTRY_RIPENCC }, // 192.86.134.0 - 192.86.134.255 { 0xc0568700, 0xc05688ff, REGISTRY_ARIN }, // 192.86.135.0 - 192.86.136.255 { 0xc0568900, 0xc0568aff, REGISTRY_RIPENCC }, // 192.86.137.0 - 192.86.138.255 { 0xc0568b00, 0xc056a2ff, REGISTRY_ARIN }, // 192.86.139.0 - 192.86.162.255 { 0xc056a300, 0xc056a3ff, REGISTRY_RIPENCC }, // 192.86.163.0 - 192.86.163.255 { 0xc056a400, 0xc056a4ff, REGISTRY_ARIN }, // 192.86.164.0 - 192.86.164.255 { 0xc056a500, 0xc056a5ff, REGISTRY_APNIC }, // 192.86.165.0 - 192.86.165.255 { 0xc056a600, 0xc056a7ff, REGISTRY_RIPENCC }, // 192.86.166.0 - 192.86.167.255 { 0xc056a800, 0xc056a8ff, REGISTRY_ARIN }, // 192.86.168.0 - 192.86.168.255 { 0xc056a900, 0xc056a9ff, REGISTRY_RIPENCC }, // 192.86.169.0 - 192.86.169.255 { 0xc056aa00, 0xc056fdff, REGISTRY_ARIN }, // 192.86.170.0 - 192.86.253.255 { 0xc056fe00, 0xc056feff, REGISTRY_RIPENCC }, // 192.86.254.0 - 192.86.254.255 { 0xc056ff00, 0xc056ffff, REGISTRY_ARIN }, // 192.86.255.0 - 192.86.255.255 { 0xc0570000, 0xc057ffff, REGISTRY_RIPENCC }, // 192.87.0.0 - 192.87.255.255 { 0xc0580000, 0xc05800ff, REGISTRY_ARIN }, // 192.88.0.0 - 192.88.0.255 { 0xc0580100, 0xc05801ff, REGISTRY_RIPENCC }, // 192.88.1.0 - 192.88.1.255 { 0xc0580200, 0xc05803ff, REGISTRY_ARIN }, // 192.88.2.0 - 192.88.3.255 { 0xc0580400, 0xc05804ff, REGISTRY_RIPENCC }, // 192.88.4.0 - 192.88.4.255 { 0xc0580500, 0xc05805ff, REGISTRY_ARIN }, // 192.88.5.0 - 192.88.5.255 { 0xc0580600, 0xc05807ff, REGISTRY_APNIC }, // 192.88.6.0 - 192.88.7.255 { 0xc0580800, 0xc05808ff, REGISTRY_ARIN }, // 192.88.8.0 - 192.88.8.255 { 0xc0580900, 0xc0580aff, REGISTRY_RIPENCC }, // 192.88.9.0 - 192.88.10.255 { 0xc0580b00, 0xc05810ff, REGISTRY_ARIN }, // 192.88.11.0 - 192.88.16.255 { 0xc0581100, 0xc05811ff, REGISTRY_RIPENCC }, // 192.88.17.0 - 192.88.17.255 { 0xc0581200, 0xc05816ff, REGISTRY_ARIN }, // 192.88.18.0 - 192.88.22.255 { 0xc0581700, 0xc05818ff, REGISTRY_RIPENCC }, // 192.88.23.0 - 192.88.24.255 { 0xc0581900, 0xc0584fff, REGISTRY_ARIN }, // 192.88.25.0 - 192.88.79.255 { 0xc0585100, 0xc05852ff, REGISTRY_ARIN }, // 192.88.81.0 - 192.88.82.255 { 0xc0585300, 0xc05854ff, REGISTRY_RIPENCC }, // 192.88.83.0 - 192.88.84.255 { 0xc0585500, 0xc05855ff, REGISTRY_APNIC }, // 192.88.85.0 - 192.88.85.255 { 0xc0585600, 0xc05856ff, REGISTRY_RIPENCC }, // 192.88.86.0 - 192.88.86.255 { 0xc0585700, 0xc05860ff, REGISTRY_ARIN }, // 192.88.87.0 - 192.88.96.255 { 0xc0586100, 0xc05862ff, REGISTRY_RIPENCC }, // 192.88.97.0 - 192.88.98.255 { 0xc0586400, 0xc05864ff, REGISTRY_ARIN }, // 192.88.100.0 - 192.88.100.255 { 0xc0586700, 0xc0586bff, REGISTRY_ARIN }, // 192.88.103.0 - 192.88.107.255 { 0xc0586c00, 0xc0586cff, REGISTRY_RIPENCC }, // 192.88.108.0 - 192.88.108.255 { 0xc0586d00, 0xc05875ff, REGISTRY_ARIN }, // 192.88.109.0 - 192.88.117.255 { 0xc0587600, 0xc05876ff, REGISTRY_RIPENCC }, // 192.88.118.0 - 192.88.118.255 { 0xc0587800, 0xc0587aff, REGISTRY_ARIN }, // 192.88.120.0 - 192.88.122.255 { 0xc0587b00, 0xc0587bff, REGISTRY_RIPENCC }, // 192.88.123.0 - 192.88.123.255 { 0xc0587c00, 0xc0587fff, REGISTRY_ARIN }, // 192.88.124.0 - 192.88.127.255 { 0xc0588000, 0xc05880ff, REGISTRY_RIPENCC }, // 192.88.128.0 - 192.88.128.255 { 0xc0588100, 0xc05881ff, REGISTRY_ARIN }, // 192.88.129.0 - 192.88.129.255 { 0xc0588200, 0xc05882ff, REGISTRY_RIPENCC }, // 192.88.130.0 - 192.88.130.255 { 0xc0588300, 0xc05884ff, REGISTRY_ARIN }, // 192.88.131.0 - 192.88.132.255 { 0xc0588500, 0xc05885ff, REGISTRY_RIPENCC }, // 192.88.133.0 - 192.88.133.255 { 0xc0588600, 0xc058baff, REGISTRY_ARIN }, // 192.88.134.0 - 192.88.186.255 { 0xc058bb00, 0xc058bbff, REGISTRY_APNIC }, // 192.88.187.0 - 192.88.187.255 { 0xc058bc00, 0xc058bdff, REGISTRY_ARIN }, // 192.88.188.0 - 192.88.189.255 { 0xc058be00, 0xc058beff, REGISTRY_APNIC }, // 192.88.190.0 - 192.88.190.255 { 0xc058bf00, 0xc058c3ff, REGISTRY_ARIN }, // 192.88.191.0 - 192.88.195.255 { 0xc058c400, 0xc058c4ff, REGISTRY_RIPENCC }, // 192.88.196.0 - 192.88.196.255 { 0xc058c500, 0xc058cbff, REGISTRY_ARIN }, // 192.88.197.0 - 192.88.203.255 { 0xc058cc00, 0xc058ccff, REGISTRY_RIPENCC }, // 192.88.204.0 - 192.88.204.255 { 0xc058cd00, 0xc058edff, REGISTRY_ARIN }, // 192.88.205.0 - 192.88.237.255 { 0xc058ee00, 0xc058efff, REGISTRY_RIPENCC }, // 192.88.238.0 - 192.88.239.255 { 0xc058f000, 0xc058f9ff, REGISTRY_ARIN }, // 192.88.240.0 - 192.88.249.255 { 0xc058fa00, 0xc058feff, REGISTRY_RIPENCC }, // 192.88.250.0 - 192.88.254.255 { 0xc058ff00, 0xc058ffff, REGISTRY_ARIN }, // 192.88.255.0 - 192.88.255.255 { 0xc0590000, 0xc059ffff, REGISTRY_RIPENCC }, // 192.89.0.0 - 192.89.255.255 { 0xc05a0000, 0xc05b8bff, REGISTRY_ARIN }, // 192.90.0.0 - 192.91.139.255 { 0xc05b8c00, 0xc05b8dff, REGISTRY_RIPENCC }, // 192.91.140.0 - 192.91.141.255 { 0xc05b8e00, 0xc05bb0ff, REGISTRY_ARIN }, // 192.91.142.0 - 192.91.176.255 { 0xc05bb100, 0xc05bb1ff, REGISTRY_RIPENCC }, // 192.91.177.0 - 192.91.177.255 { 0xc05bb200, 0xc05bb2ff, REGISTRY_ARIN }, // 192.91.178.0 - 192.91.178.255 { 0xc05bb300, 0xc05bb3ff, REGISTRY_APNIC }, // 192.91.179.0 - 192.91.179.255 { 0xc05bb400, 0xc05bb8ff, REGISTRY_ARIN }, // 192.91.180.0 - 192.91.184.255 { 0xc05bb900, 0xc05bb9ff, REGISTRY_APNIC }, // 192.91.185.0 - 192.91.185.255 { 0xc05bba00, 0xc05bbaff, REGISTRY_RIPENCC }, // 192.91.186.0 - 192.91.186.255 { 0xc05bbb00, 0xc05bbcff, REGISTRY_ARIN }, // 192.91.187.0 - 192.91.188.255 { 0xc05bbd00, 0xc05bbdff, REGISTRY_RIPENCC }, // 192.91.189.0 - 192.91.189.255 { 0xc05bbe00, 0xc05bbeff, REGISTRY_ARIN }, // 192.91.190.0 - 192.91.190.255 { 0xc05bbf00, 0xc05bbfff, REGISTRY_RIPENCC }, // 192.91.191.0 - 192.91.191.255 { 0xc05bc000, 0xc05bc6ff, REGISTRY_ARIN }, // 192.91.192.0 - 192.91.198.255 { 0xc05bc700, 0xc05bc7ff, REGISTRY_RIPENCC }, // 192.91.199.0 - 192.91.199.255 { 0xc05bc900, 0xc05bc9ff, REGISTRY_RIPENCC }, // 192.91.201.0 - 192.91.201.255 { 0xc05bca00, 0xc05bd2ff, REGISTRY_ARIN }, // 192.91.202.0 - 192.91.210.255 { 0xc05bd300, 0xc05bd3ff, REGISTRY_RIPENCC }, // 192.91.211.0 - 192.91.211.255 { 0xc05bd400, 0xc05bd4ff, REGISTRY_ARIN }, // 192.91.212.0 - 192.91.212.255 { 0xc05bd600, 0xc05be9ff, REGISTRY_RIPENCC }, // 192.91.214.0 - 192.91.233.255 { 0xc05bea00, 0xc05bebff, REGISTRY_ARIN }, // 192.91.234.0 - 192.91.235.255 { 0xc05bec00, 0xc05bf7ff, REGISTRY_RIPENCC }, // 192.91.236.0 - 192.91.247.255 { 0xc05bf800, 0xc05bfdff, REGISTRY_ARIN }, // 192.91.248.0 - 192.91.253.255 { 0xc05bff00, 0xc05c0eff, REGISTRY_ARIN }, // 192.91.255.0 - 192.92.14.255 { 0xc05c1000, 0xc05c55ff, REGISTRY_ARIN }, // 192.92.16.0 - 192.92.85.255 { 0xc05c5600, 0xc05c56ff, REGISTRY_RIPENCC }, // 192.92.86.0 - 192.92.86.255 { 0xc05c5700, 0xc05c5dff, REGISTRY_ARIN }, // 192.92.87.0 - 192.92.93.255 { 0xc05c5e00, 0xc05c5eff, REGISTRY_RIPENCC }, // 192.92.94.0 - 192.92.94.255 { 0xc05c5f00, 0xc05c67ff, REGISTRY_ARIN }, // 192.92.95.0 - 192.92.103.255 { 0xc05c6800, 0xc05c6aff, REGISTRY_RIPENCC }, // 192.92.104.0 - 192.92.106.255 { 0xc05c6b00, 0xc05c6bff, REGISTRY_ARIN }, // 192.92.107.0 - 192.92.107.255 { 0xc05c6c00, 0xc05c6dff, REGISTRY_RIPENCC }, // 192.92.108.0 - 192.92.109.255 { 0xc05c6e00, 0xc05c73ff, REGISTRY_ARIN }, // 192.92.110.0 - 192.92.115.255 { 0xc05c7400, 0xc05c74ff, REGISTRY_RIPENCC }, // 192.92.116.0 - 192.92.116.255 { 0xc05c7500, 0xc05c7cff, REGISTRY_ARIN }, // 192.92.117.0 - 192.92.124.255 { 0xc05c7d00, 0xc05c8bff, REGISTRY_RIPENCC }, // 192.92.125.0 - 192.92.139.255 { 0xc05c8c00, 0xc05c8cff, REGISTRY_ARIN }, // 192.92.140.0 - 192.92.140.255 { 0xc05c8d00, 0xc05c99ff, REGISTRY_RIPENCC }, // 192.92.141.0 - 192.92.153.255 { 0xc05c9b00, 0xc05c9cff, REGISTRY_RIPENCC }, // 192.92.155.0 - 192.92.156.255 { 0xc05c9d00, 0xc05cd7ff, REGISTRY_ARIN }, // 192.92.157.0 - 192.92.215.255 { 0xc05cd800, 0xc05cd8ff, REGISTRY_RIPENCC }, // 192.92.216.0 - 192.92.216.255 { 0xc05cd900, 0xc05cffff, REGISTRY_ARIN }, // 192.92.217.0 - 192.92.255.255 { 0xc05d0000, 0xc05dffff, REGISTRY_RIPENCC }, // 192.93.0.0 - 192.93.255.255 { 0xc05e0000, 0xc05e17ff, REGISTRY_ARIN }, // 192.94.0.0 - 192.94.23.255 { 0xc05e1800, 0xc05e18ff, REGISTRY_RIPENCC }, // 192.94.24.0 - 192.94.24.255 { 0xc05e1900, 0xc05e1bff, REGISTRY_ARIN }, // 192.94.25.0 - 192.94.27.255 { 0xc05e1c00, 0xc05e1cff, REGISTRY_RIPENCC }, // 192.94.28.0 - 192.94.28.255 { 0xc05e1d00, 0xc05e28ff, REGISTRY_ARIN }, // 192.94.29.0 - 192.94.40.255 { 0xc05e2900, 0xc05e29ff, REGISTRY_APNIC }, // 192.94.41.0 - 192.94.41.255 { 0xc05e2a00, 0xc05e38ff, REGISTRY_ARIN }, // 192.94.42.0 - 192.94.56.255 { 0xc05e3900, 0xc05e3aff, REGISTRY_RIPENCC }, // 192.94.57.0 - 192.94.58.255 { 0xc05e3b00, 0xc05e3cff, REGISTRY_ARIN }, // 192.94.59.0 - 192.94.60.255 { 0xc05e3d00, 0xc05e3dff, REGISTRY_AFRINIC }, // 192.94.61.0 - 192.94.61.255 { 0xc05e3e00, 0xc05e40ff, REGISTRY_APNIC }, // 192.94.62.0 - 192.94.64.255 { 0xc05e4100, 0xc05e42ff, REGISTRY_ARIN }, // 192.94.65.0 - 192.94.66.255 { 0xc05e4300, 0xc05e44ff, REGISTRY_RIPENCC }, // 192.94.67.0 - 192.94.68.255 { 0xc05e4500, 0xc05e4bff, REGISTRY_ARIN }, // 192.94.69.0 - 192.94.75.255 { 0xc05e4c00, 0xc05e4cff, REGISTRY_RIPENCC }, // 192.94.76.0 - 192.94.76.255 { 0xc05e4f00, 0xc05e6eff, REGISTRY_ARIN }, // 192.94.79.0 - 192.94.110.255 { 0xc05e6f00, 0xc05e75ff, REGISTRY_RIPENCC }, // 192.94.111.0 - 192.94.117.255 { 0xc05e7600, 0xc05e79ff, REGISTRY_ARIN }, // 192.94.118.0 - 192.94.121.255 { 0xc05e7a00, 0xc05e7aff, REGISTRY_APNIC }, // 192.94.122.0 - 192.94.122.255 { 0xc05e7b00, 0xc05e9bff, REGISTRY_ARIN }, // 192.94.123.0 - 192.94.155.255 { 0xc05e9c00, 0xc05ea3ff, REGISTRY_RIPENCC }, // 192.94.156.0 - 192.94.163.255 { 0xc05ea400, 0xc05ea8ff, REGISTRY_ARIN }, // 192.94.164.0 - 192.94.168.255 { 0xc05ea900, 0xc05ea9ff, REGISTRY_APNIC }, // 192.94.169.0 - 192.94.169.255 { 0xc05eaa00, 0xc05eabff, REGISTRY_ARIN }, // 192.94.170.0 - 192.94.171.255 { 0xc05eac00, 0xc05eacff, REGISTRY_RIPENCC }, // 192.94.172.0 - 192.94.172.255 { 0xc05ead00, 0xc05eadff, REGISTRY_ARIN }, // 192.94.173.0 - 192.94.173.255 { 0xc05eae00, 0xc05eaeff, REGISTRY_APNIC }, // 192.94.174.0 - 192.94.174.255 { 0xc05eaf00, 0xc05ec7ff, REGISTRY_RIPENCC }, // 192.94.175.0 - 192.94.199.255 { 0xc05ec900, 0xc05ecfff, REGISTRY_ARIN }, // 192.94.201.0 - 192.94.207.255 { 0xc05ed000, 0xc05ed1ff, REGISTRY_APNIC }, // 192.94.208.0 - 192.94.209.255 { 0xc05ed200, 0xc05ed2ff, REGISTRY_AFRINIC }, // 192.94.210.0 - 192.94.210.255 { 0xc05ed300, 0xc05ed3ff, REGISTRY_ARIN }, // 192.94.211.0 - 192.94.211.255 { 0xc05ed400, 0xc05ed4ff, REGISTRY_RIPENCC }, // 192.94.212.0 - 192.94.212.255 { 0xc05ed500, 0xc05edbff, REGISTRY_ARIN }, // 192.94.213.0 - 192.94.219.255 { 0xc05edd00, 0xc05eddff, REGISTRY_RIPENCC }, // 192.94.221.0 - 192.94.221.255 { 0xc05ede00, 0xc05ee1ff, REGISTRY_ARIN }, // 192.94.222.0 - 192.94.225.255 { 0xc05ee200, 0xc05ee2ff, REGISTRY_RIPENCC }, // 192.94.226.0 - 192.94.226.255 { 0xc05ee300, 0xc05ee3ff, REGISTRY_APNIC }, // 192.94.227.0 - 192.94.227.255 { 0xc05ee400, 0xc05ee8ff, REGISTRY_ARIN }, // 192.94.228.0 - 192.94.232.255 { 0xc05ee900, 0xc05ee9ff, REGISTRY_RIPENCC }, // 192.94.233.0 - 192.94.233.255 { 0xc05eea00, 0xc05eeaff, REGISTRY_ARIN }, // 192.94.234.0 - 192.94.234.255 { 0xc05eeb00, 0xc05eebff, REGISTRY_RIPENCC }, // 192.94.235.0 - 192.94.235.255 { 0xc05eec00, 0xc05eedff, REGISTRY_ARIN }, // 192.94.236.0 - 192.94.237.255 { 0xc05eef00, 0xc05eefff, REGISTRY_RIPENCC }, // 192.94.239.0 - 192.94.239.255 { 0xc05ef000, 0xc05ef1ff, REGISTRY_AFRINIC }, // 192.94.240.0 - 192.94.241.255 { 0xc05ef200, 0xc05ef2ff, REGISTRY_ARIN }, // 192.94.242.0 - 192.94.242.255 { 0xc05ef300, 0xc05ef4ff, REGISTRY_APNIC }, // 192.94.243.0 - 192.94.244.255 { 0xc05ef500, 0xc05ef5ff, REGISTRY_ARIN }, // 192.94.245.0 - 192.94.245.255 { 0xc05ef600, 0xc05ef6ff, REGISTRY_AFRINIC }, // 192.94.246.0 - 192.94.246.255 { 0xc05ef700, 0xc06000ff, REGISTRY_ARIN }, // 192.94.247.0 - 192.96.0.255 { 0xc0600100, 0xc06010ff, REGISTRY_AFRINIC }, // 192.96.1.0 - 192.96.16.255 { 0xc0601100, 0xc06012ff, REGISTRY_ARIN }, // 192.96.17.0 - 192.96.18.255 { 0xc0601300, 0xc06016ff, REGISTRY_AFRINIC }, // 192.96.19.0 - 192.96.22.255 { 0xc0601700, 0xc06017ff, REGISTRY_ARIN }, // 192.96.23.0 - 192.96.23.255 { 0xc0601800, 0xc06023ff, REGISTRY_AFRINIC }, // 192.96.24.0 - 192.96.35.255 { 0xc0602400, 0xc06024ff, REGISTRY_ARIN }, // 192.96.36.0 - 192.96.36.255 { 0xc0602500, 0xc06028ff, REGISTRY_AFRINIC }, // 192.96.37.0 - 192.96.40.255 { 0xc0602900, 0xc0602aff, REGISTRY_ARIN }, // 192.96.41.0 - 192.96.42.255 { 0xc0602b00, 0xc0602bff, REGISTRY_AFRINIC }, // 192.96.43.0 - 192.96.43.255 { 0xc0602c00, 0xc0602cff, REGISTRY_ARIN }, // 192.96.44.0 - 192.96.44.255 { 0xc0602d00, 0xc0603aff, REGISTRY_AFRINIC }, // 192.96.45.0 - 192.96.58.255 { 0xc0603b00, 0xc0603bff, REGISTRY_ARIN }, // 192.96.59.0 - 192.96.59.255 { 0xc0603c00, 0xc0603dff, REGISTRY_AFRINIC }, // 192.96.60.0 - 192.96.61.255 { 0xc0603e00, 0xc06043ff, REGISTRY_ARIN }, // 192.96.62.0 - 192.96.67.255 { 0xc0604400, 0xc06048ff, REGISTRY_AFRINIC }, // 192.96.68.0 - 192.96.72.255 { 0xc0604900, 0xc06049ff, REGISTRY_ARIN }, // 192.96.73.0 - 192.96.73.255 { 0xc0604a00, 0xc0604dff, REGISTRY_AFRINIC }, // 192.96.74.0 - 192.96.77.255 { 0xc0604e00, 0xc0604eff, REGISTRY_ARIN }, // 192.96.78.0 - 192.96.78.255 { 0xc0604f00, 0xc06066ff, REGISTRY_AFRINIC }, // 192.96.79.0 - 192.96.102.255 { 0xc0606700, 0xc06067ff, REGISTRY_ARIN }, // 192.96.103.0 - 192.96.103.255 { 0xc0606800, 0xc06086ff, REGISTRY_AFRINIC }, // 192.96.104.0 - 192.96.134.255 { 0xc0608700, 0xc06089ff, REGISTRY_ARIN }, // 192.96.135.0 - 192.96.137.255 { 0xc0608a00, 0xc0608eff, REGISTRY_AFRINIC }, // 192.96.138.0 - 192.96.142.255 { 0xc0608f00, 0xc0608fff, REGISTRY_ARIN }, // 192.96.143.0 - 192.96.143.255 { 0xc0609000, 0xc06090ff, REGISTRY_AFRINIC }, // 192.96.144.0 - 192.96.144.255 { 0xc0609100, 0xc06091ff, REGISTRY_ARIN }, // 192.96.145.0 - 192.96.145.255 { 0xc0609200, 0xc0609bff, REGISTRY_AFRINIC }, // 192.96.146.0 - 192.96.155.255 { 0xc0609c00, 0xc0609dff, REGISTRY_ARIN }, // 192.96.156.0 - 192.96.157.255 { 0xc0609e00, 0xc0609eff, REGISTRY_AFRINIC }, // 192.96.158.0 - 192.96.158.255 { 0xc0609f00, 0xc060a3ff, REGISTRY_ARIN }, // 192.96.159.0 - 192.96.163.255 { 0xc060a400, 0xc060a7ff, REGISTRY_AFRINIC }, // 192.96.164.0 - 192.96.167.255 { 0xc060a800, 0xc060b0ff, REGISTRY_ARIN }, // 192.96.168.0 - 192.96.176.255 { 0xc060b100, 0xc060bfff, REGISTRY_AFRINIC }, // 192.96.177.0 - 192.96.191.255 { 0xc060c000, 0xc060c0ff, REGISTRY_ARIN }, // 192.96.192.0 - 192.96.192.255 { 0xc060c100, 0xc060c7ff, REGISTRY_AFRINIC }, // 192.96.193.0 - 192.96.199.255 { 0xc060c800, 0xc060dfff, REGISTRY_ARIN }, // 192.96.200.0 - 192.96.223.255 { 0xc060e000, 0xc060e8ff, REGISTRY_AFRINIC }, // 192.96.224.0 - 192.96.232.255 { 0xc060e900, 0xc060e9ff, REGISTRY_ARIN }, // 192.96.233.0 - 192.96.233.255 { 0xc060ea00, 0xc060f3ff, REGISTRY_AFRINIC }, // 192.96.234.0 - 192.96.243.255 { 0xc060f400, 0xc060f4ff, REGISTRY_ARIN }, // 192.96.244.0 - 192.96.244.255 { 0xc060f500, 0xc060feff, REGISTRY_AFRINIC }, // 192.96.245.0 - 192.96.254.255 { 0xc060ff00, 0xc061ffff, REGISTRY_ARIN }, // 192.96.255.0 - 192.97.255.255 { 0xc0620000, 0xc062ffff, REGISTRY_RIPENCC }, // 192.98.0.0 - 192.98.255.255 { 0xc0630000, 0xc06400ff, REGISTRY_ARIN }, // 192.99.0.0 - 192.100.0.255 { 0xc0640100, 0xc06401ff, REGISTRY_AFRINIC }, // 192.100.1.0 - 192.100.1.255 { 0xc0640200, 0xc06402ff, REGISTRY_APNIC }, // 192.100.2.0 - 192.100.2.255 { 0xc0640300, 0xc06411ff, REGISTRY_ARIN }, // 192.100.3.0 - 192.100.17.255 { 0xc0641200, 0xc06412ff, REGISTRY_RIPENCC }, // 192.100.18.0 - 192.100.18.255 { 0xc0641300, 0xc06415ff, REGISTRY_ARIN }, // 192.100.19.0 - 192.100.21.255 { 0xc0641600, 0xc06416ff, REGISTRY_APNIC }, // 192.100.22.0 - 192.100.22.255 { 0xc0641700, 0xc06419ff, REGISTRY_RIPENCC }, // 192.100.23.0 - 192.100.25.255 { 0xc0641a00, 0xc06433ff, REGISTRY_ARIN }, // 192.100.26.0 - 192.100.51.255 { 0xc0643400, 0xc06434ff, REGISTRY_RIPENCC }, // 192.100.52.0 - 192.100.52.255 { 0xc0643500, 0xc06435ff, REGISTRY_APNIC }, // 192.100.53.0 - 192.100.53.255 { 0xc0643600, 0xc0643cff, REGISTRY_ARIN }, // 192.100.54.0 - 192.100.60.255 { 0xc0643d00, 0xc0643dff, REGISTRY_RIPENCC }, // 192.100.61.0 - 192.100.61.255 { 0xc0643e00, 0xc0643eff, REGISTRY_ARIN }, // 192.100.62.0 - 192.100.62.255 { 0xc0643f00, 0xc0643fff, REGISTRY_RIPENCC }, // 192.100.63.0 - 192.100.63.255 { 0xc0644000, 0xc0644cff, REGISTRY_ARIN }, // 192.100.64.0 - 192.100.76.255 { 0xc0644d00, 0xc0644dff, REGISTRY_APNIC }, // 192.100.77.0 - 192.100.77.255 { 0xc0644e00, 0xc0644eff, REGISTRY_RIPENCC }, // 192.100.78.0 - 192.100.78.255 { 0xc0644f00, 0xc0644fff, REGISTRY_ARIN }, // 192.100.79.0 - 192.100.79.255 { 0xc0645000, 0xc06450ff, REGISTRY_APNIC }, // 192.100.80.0 - 192.100.80.255 { 0xc0645100, 0xc0645fff, REGISTRY_ARIN }, // 192.100.81.0 - 192.100.95.255 { 0xc0646000, 0xc06463ff, REGISTRY_RIPENCC }, // 192.100.96.0 - 192.100.99.255 { 0xc0646400, 0xc06465ff, REGISTRY_ARIN }, // 192.100.100.0 - 192.100.101.255 { 0xc0646600, 0xc06485ff, REGISTRY_RIPENCC }, // 192.100.102.0 - 192.100.133.255 { 0xc0648600, 0xc06486ff, REGISTRY_ARIN }, // 192.100.134.0 - 192.100.134.255 { 0xc0648700, 0xc0648cff, REGISTRY_RIPENCC }, // 192.100.135.0 - 192.100.140.255 { 0xc0648d00, 0xc0648fff, REGISTRY_ARIN }, // 192.100.141.0 - 192.100.143.255 { 0xc0649000, 0xc06490ff, REGISTRY_RIPENCC }, // 192.100.144.0 - 192.100.144.255 { 0xc0649100, 0xc06499ff, REGISTRY_ARIN }, // 192.100.145.0 - 192.100.153.255 { 0xc0649a00, 0xc0649aff, REGISTRY_RIPENCC }, // 192.100.154.0 - 192.100.154.255 { 0xc0649b00, 0xc064a7ff, REGISTRY_LACNIC }, // 192.100.155.0 - 192.100.167.255 { 0xc064a900, 0xc064beff, REGISTRY_LACNIC }, // 192.100.169.0 - 192.100.190.255 { 0xc064c000, 0xc064feff, REGISTRY_LACNIC }, // 192.100.192.0 - 192.100.254.255 { 0xc064ff00, 0xc06500ff, REGISTRY_ARIN }, // 192.100.255.0 - 192.101.0.255 { 0xc0650100, 0xc06501ff, REGISTRY_RIPENCC }, // 192.101.1.0 - 192.101.1.255 { 0xc0650200, 0xc06503ff, REGISTRY_ARIN }, // 192.101.2.0 - 192.101.3.255 { 0xc0650400, 0xc06504ff, REGISTRY_RIPENCC }, // 192.101.4.0 - 192.101.4.255 { 0xc0650500, 0xc06507ff, REGISTRY_ARIN }, // 192.101.5.0 - 192.101.7.255 { 0xc0650800, 0xc06508ff, REGISTRY_RIPENCC }, // 192.101.8.0 - 192.101.8.255 { 0xc0650900, 0xc0650aff, REGISTRY_ARIN }, // 192.101.9.0 - 192.101.10.255 { 0xc0650b00, 0xc0650bff, REGISTRY_RIPENCC }, // 192.101.11.0 - 192.101.11.255 { 0xc0650c00, 0xc0650fff, REGISTRY_ARIN }, // 192.101.12.0 - 192.101.15.255 { 0xc0651000, 0xc06510ff, REGISTRY_APNIC }, // 192.101.16.0 - 192.101.16.255 { 0xc0651100, 0xc0651bff, REGISTRY_ARIN }, // 192.101.17.0 - 192.101.27.255 { 0xc0651c00, 0xc0651cff, REGISTRY_RIPENCC }, // 192.101.28.0 - 192.101.28.255 { 0xc0651d00, 0xc06521ff, REGISTRY_ARIN }, // 192.101.29.0 - 192.101.33.255 { 0xc0652200, 0xc06522ff, REGISTRY_RIPENCC }, // 192.101.34.0 - 192.101.34.255 { 0xc0652300, 0xc0654aff, REGISTRY_ARIN }, // 192.101.35.0 - 192.101.74.255 { 0xc0654b00, 0xc0654bff, REGISTRY_RIPENCC }, // 192.101.75.0 - 192.101.75.255 { 0xc0654c00, 0xc06550ff, REGISTRY_ARIN }, // 192.101.76.0 - 192.101.80.255 { 0xc0655100, 0xc0655aff, REGISTRY_RIPENCC }, // 192.101.81.0 - 192.101.90.255 { 0xc0655b00, 0xc0655bff, REGISTRY_APNIC }, // 192.101.91.0 - 192.101.91.255 { 0xc0655c00, 0xc0656eff, REGISTRY_ARIN }, // 192.101.92.0 - 192.101.110.255 { 0xc0656f00, 0xc06572ff, REGISTRY_RIPENCC }, // 192.101.111.0 - 192.101.114.255 { 0xc0657300, 0xc06575ff, REGISTRY_ARIN }, // 192.101.115.0 - 192.101.117.255 { 0xc0657600, 0xc06576ff, REGISTRY_RIPENCC }, // 192.101.118.0 - 192.101.118.255 { 0xc0657700, 0xc06585ff, REGISTRY_ARIN }, // 192.101.119.0 - 192.101.133.255 { 0xc0658600, 0xc06586ff, REGISTRY_APNIC }, // 192.101.134.0 - 192.101.134.255 { 0xc0658700, 0xc06588ff, REGISTRY_ARIN }, // 192.101.135.0 - 192.101.136.255 { 0xc0658900, 0xc06589ff, REGISTRY_RIPENCC }, // 192.101.137.0 - 192.101.137.255 { 0xc0658a00, 0xc0658dff, REGISTRY_ARIN }, // 192.101.138.0 - 192.101.141.255 { 0xc0658e00, 0xc0658eff, REGISTRY_AFRINIC }, // 192.101.142.0 - 192.101.142.255 { 0xc0658f00, 0xc065a0ff, REGISTRY_ARIN }, // 192.101.143.0 - 192.101.160.255 { 0xc065a100, 0xc065a8ff, REGISTRY_RIPENCC }, // 192.101.161.0 - 192.101.168.255 { 0xc065a900, 0xc065a9ff, REGISTRY_ARIN }, // 192.101.169.0 - 192.101.169.255 { 0xc065aa00, 0xc065aaff, REGISTRY_RIPENCC }, // 192.101.170.0 - 192.101.170.255 { 0xc065ab00, 0xc065afff, REGISTRY_ARIN }, // 192.101.171.0 - 192.101.175.255 { 0xc065b000, 0xc065b0ff, REGISTRY_RIPENCC }, // 192.101.176.0 - 192.101.176.255 { 0xc065b100, 0xc065b2ff, REGISTRY_ARIN }, // 192.101.177.0 - 192.101.178.255 { 0xc065b300, 0xc065b4ff, REGISTRY_RIPENCC }, // 192.101.179.0 - 192.101.180.255 { 0xc065b500, 0xc065b6ff, REGISTRY_ARIN }, // 192.101.181.0 - 192.101.182.255 { 0xc065b700, 0xc065b7ff, REGISTRY_APNIC }, // 192.101.183.0 - 192.101.183.255 { 0xc065b800, 0xc065bfff, REGISTRY_ARIN }, // 192.101.184.0 - 192.101.191.255 { 0xc065c000, 0xc065c0ff, REGISTRY_RIPENCC }, // 192.101.192.0 - 192.101.192.255 { 0xc065c100, 0xc065c4ff, REGISTRY_ARIN }, // 192.101.193.0 - 192.101.196.255 { 0xc065c500, 0xc065c6ff, REGISTRY_RIPENCC }, // 192.101.197.0 - 192.101.198.255 { 0xc065c700, 0xc065fbff, REGISTRY_ARIN }, // 192.101.199.0 - 192.101.251.255 { 0xc065fc00, 0xc065fcff, REGISTRY_RIPENCC }, // 192.101.252.0 - 192.101.252.255 { 0xc065fd00, 0xc065fdff, REGISTRY_ARIN }, // 192.101.253.0 - 192.101.253.255 { 0xc065fe00, 0xc065feff, REGISTRY_APNIC }, // 192.101.254.0 - 192.101.254.255 { 0xc065ff00, 0xc06600ff, REGISTRY_ARIN }, // 192.101.255.0 - 192.102.0.255 { 0xc0660100, 0xc06601ff, REGISTRY_RIPENCC }, // 192.102.1.0 - 192.102.1.255 { 0xc0660200, 0xc06605ff, REGISTRY_ARIN }, // 192.102.2.0 - 192.102.5.255 { 0xc0660600, 0xc06608ff, REGISTRY_RIPENCC }, // 192.102.6.0 - 192.102.8.255 { 0xc0660900, 0xc06609ff, REGISTRY_AFRINIC }, // 192.102.9.0 - 192.102.9.255 { 0xc0660a00, 0xc06610ff, REGISTRY_ARIN }, // 192.102.10.0 - 192.102.16.255 { 0xc0661100, 0xc06611ff, REGISTRY_RIPENCC }, // 192.102.17.0 - 192.102.17.255 { 0xc0661200, 0xc0663fff, REGISTRY_RIPENCC }, // 192.102.18.0 - 192.102.63.255 { 0xc0664000, 0xc06641ff, REGISTRY_RIPENCC }, // 192.102.64.0 - 192.102.65.255 { 0xc0664200, 0xc06651ff, REGISTRY_RIPENCC }, // 192.102.66.0 - 192.102.81.255 { 0xc0665200, 0xc06652ff, REGISTRY_ARIN }, // 192.102.82.0 - 192.102.82.255 { 0xc0665300, 0xc06653ff, REGISTRY_APNIC }, // 192.102.83.0 - 192.102.83.255 { 0xc0665400, 0xc06654ff, REGISTRY_LACNIC }, // 192.102.84.0 - 192.102.84.255 { 0xc0665500, 0xc06658ff, REGISTRY_ARIN }, // 192.102.85.0 - 192.102.88.255 { 0xc0665900, 0xc06659ff, REGISTRY_RIPENCC }, // 192.102.89.0 - 192.102.89.255 { 0xc0665a00, 0xc0665bff, REGISTRY_ARIN }, // 192.102.90.0 - 192.102.91.255 { 0xc0665c00, 0xc0665cff, REGISTRY_APNIC }, // 192.102.92.0 - 192.102.92.255 { 0xc0665d00, 0xc0665eff, REGISTRY_ARIN }, // 192.102.93.0 - 192.102.94.255 { 0xc0665f00, 0xc0665fff, REGISTRY_RIPENCC }, // 192.102.95.0 - 192.102.95.255 { 0xc0666000, 0xc06691ff, REGISTRY_ARIN }, // 192.102.96.0 - 192.102.145.255 { 0xc0669200, 0xc066b1ff, REGISTRY_RIPENCC }, // 192.102.146.0 - 192.102.177.255 { 0xc066b200, 0xc066d5ff, REGISTRY_ARIN }, // 192.102.178.0 - 192.102.213.255 { 0xc066d600, 0xc066d6ff, REGISTRY_RIPENCC }, // 192.102.214.0 - 192.102.214.255 { 0xc066d700, 0xc066dfff, REGISTRY_ARIN }, // 192.102.215.0 - 192.102.223.255 { 0xc066e000, 0xc066e1ff, REGISTRY_RIPENCC }, // 192.102.224.0 - 192.102.225.255 { 0xc066e200, 0xc066e2ff, REGISTRY_ARIN }, // 192.102.226.0 - 192.102.226.255 { 0xc066e300, 0xc066e5ff, REGISTRY_RIPENCC }, // 192.102.227.0 - 192.102.229.255 { 0xc066e600, 0xc066eeff, REGISTRY_ARIN }, // 192.102.230.0 - 192.102.238.255 { 0xc066ef00, 0xc066efff, REGISTRY_APNIC }, // 192.102.239.0 - 192.102.239.255 { 0xc066f000, 0xc066f9ff, REGISTRY_ARIN }, // 192.102.240.0 - 192.102.249.255 { 0xc066fa00, 0xc066fbff, REGISTRY_APNIC }, // 192.102.250.0 - 192.102.251.255 { 0xc066fc00, 0xc06701ff, REGISTRY_ARIN }, // 192.102.252.0 - 192.103.1.255 { 0xc0670200, 0xc06702ff, REGISTRY_RIPENCC }, // 192.103.2.0 - 192.103.2.255 { 0xc0670300, 0xc06706ff, REGISTRY_ARIN }, // 192.103.3.0 - 192.103.6.255 { 0xc0670700, 0xc06707ff, REGISTRY_RIPENCC }, // 192.103.7.0 - 192.103.7.255 { 0xc0670800, 0xc0670dff, REGISTRY_ARIN }, // 192.103.8.0 - 192.103.13.255 { 0xc0670e00, 0xc0670eff, REGISTRY_RIPENCC }, // 192.103.14.0 - 192.103.14.255 { 0xc0670f00, 0xc06713ff, REGISTRY_ARIN }, // 192.103.15.0 - 192.103.19.255 { 0xc0671400, 0xc06714ff, REGISTRY_RIPENCC }, // 192.103.20.0 - 192.103.20.255 { 0xc0671500, 0xc06716ff, REGISTRY_ARIN }, // 192.103.21.0 - 192.103.22.255 { 0xc0671700, 0xc06717ff, REGISTRY_RIPENCC }, // 192.103.23.0 - 192.103.23.255 { 0xc0671800, 0xc0671aff, REGISTRY_ARIN }, // 192.103.24.0 - 192.103.26.255 { 0xc0671b00, 0xc0671bff, REGISTRY_RIPENCC }, // 192.103.27.0 - 192.103.27.255 { 0xc0671c00, 0xc06728ff, REGISTRY_RIPENCC }, // 192.103.28.0 - 192.103.40.255 { 0xc0672900, 0xc06729ff, REGISTRY_ARIN }, // 192.103.41.0 - 192.103.41.255 { 0xc0672b00, 0xc0672bff, REGISTRY_APNIC }, // 192.103.43.0 - 192.103.43.255 { 0xc0672c00, 0xc0672dff, REGISTRY_ARIN }, // 192.103.44.0 - 192.103.45.255 { 0xc0672f00, 0xc06754ff, REGISTRY_ARIN }, // 192.103.47.0 - 192.103.84.255 { 0xc0675500, 0xc06774ff, REGISTRY_RIPENCC }, // 192.103.85.0 - 192.103.116.255 { 0xc0677500, 0xc06781ff, REGISTRY_ARIN }, // 192.103.117.0 - 192.103.129.255 { 0xc0678200, 0xc06782ff, REGISTRY_APNIC }, // 192.103.130.0 - 192.103.130.255 { 0xc0678300, 0xc06783ff, REGISTRY_ARIN }, // 192.103.131.0 - 192.103.131.255 { 0xc0678500, 0xc06788ff, REGISTRY_ARIN }, // 192.103.133.0 - 192.103.136.255 { 0xc0678900, 0xc0678bff, REGISTRY_RIPENCC }, // 192.103.137.0 - 192.103.139.255 { 0xc0678c00, 0xc06792ff, REGISTRY_ARIN }, // 192.103.140.0 - 192.103.146.255 { 0xc0679300, 0xc06793ff, REGISTRY_RIPENCC }, // 192.103.147.0 - 192.103.147.255 { 0xc0679400, 0xc0680eff, REGISTRY_ARIN }, // 192.103.148.0 - 192.104.14.255 { 0xc0680f00, 0xc0680fff, REGISTRY_APNIC }, // 192.104.15.0 - 192.104.15.255 { 0xc0681000, 0xc06816ff, REGISTRY_ARIN }, // 192.104.16.0 - 192.104.22.255 { 0xc0681700, 0xc06817ff, REGISTRY_RIPENCC }, // 192.104.23.0 - 192.104.23.255 { 0xc0681800, 0xc0681bff, REGISTRY_ARIN }, // 192.104.24.0 - 192.104.27.255 { 0xc0681c00, 0xc0681dff, REGISTRY_RIPENCC }, // 192.104.28.0 - 192.104.29.255 { 0xc0681e00, 0xc06822ff, REGISTRY_ARIN }, // 192.104.30.0 - 192.104.34.255 { 0xc0682300, 0xc06825ff, REGISTRY_RIPENCC }, // 192.104.35.0 - 192.104.37.255 { 0xc0682600, 0xc06827ff, REGISTRY_ARIN }, // 192.104.38.0 - 192.104.39.255 { 0xc0682900, 0xc06829ff, REGISTRY_RIPENCC }, // 192.104.41.0 - 192.104.41.255 { 0xc0682a00, 0xc0682aff, REGISTRY_ARIN }, // 192.104.42.0 - 192.104.42.255 { 0xc0682b00, 0xc0682dff, REGISTRY_APNIC }, // 192.104.43.0 - 192.104.45.255 { 0xc0682e00, 0xc0682fff, REGISTRY_ARIN }, // 192.104.46.0 - 192.104.47.255 { 0xc0683000, 0xc06830ff, REGISTRY_RIPENCC }, // 192.104.48.0 - 192.104.48.255 { 0xc0683100, 0xc06834ff, REGISTRY_ARIN }, // 192.104.49.0 - 192.104.52.255 { 0xc0683500, 0xc06835ff, REGISTRY_RIPENCC }, // 192.104.53.0 - 192.104.53.255 { 0xc0683600, 0xc06836ff, REGISTRY_ARIN }, // 192.104.54.0 - 192.104.54.255 { 0xc0683700, 0xc0683aff, REGISTRY_RIPENCC }, // 192.104.55.0 - 192.104.58.255 { 0xc0683b00, 0xc06847ff, REGISTRY_ARIN }, // 192.104.59.0 - 192.104.71.255 { 0xc0684800, 0xc06848ff, REGISTRY_RIPENCC }, // 192.104.72.0 - 192.104.72.255 { 0xc0684900, 0xc0684cff, REGISTRY_ARIN }, // 192.104.73.0 - 192.104.76.255 { 0xc0684d00, 0xc0684dff, REGISTRY_RIPENCC }, // 192.104.77.0 - 192.104.77.255 { 0xc0684e00, 0xc0684fff, REGISTRY_ARIN }, // 192.104.78.0 - 192.104.79.255 { 0xc0685100, 0xc06851ff, REGISTRY_ARIN }, // 192.104.81.0 - 192.104.81.255 { 0xc0685200, 0xc06852ff, REGISTRY_RIPENCC }, // 192.104.82.0 - 192.104.82.255 { 0xc0685300, 0xc0688bff, REGISTRY_ARIN }, // 192.104.83.0 - 192.104.139.255 { 0xc0688c00, 0xc0688cff, REGISTRY_RIPENCC }, // 192.104.140.0 - 192.104.140.255 { 0xc0688d00, 0xc0688dff, REGISTRY_ARIN }, // 192.104.141.0 - 192.104.141.255 { 0xc0688e00, 0xc0688eff, REGISTRY_RIPENCC }, // 192.104.142.0 - 192.104.142.255 { 0xc0688f00, 0xc06892ff, REGISTRY_ARIN }, // 192.104.143.0 - 192.104.146.255 { 0xc0689300, 0xc06893ff, REGISTRY_RIPENCC }, // 192.104.147.0 - 192.104.147.255 { 0xc0689400, 0xc06899ff, REGISTRY_ARIN }, // 192.104.148.0 - 192.104.153.255 { 0xc0689a00, 0xc0689bff, REGISTRY_RIPENCC }, // 192.104.154.0 - 192.104.155.255 { 0xc0689c00, 0xc068a6ff, REGISTRY_ARIN }, // 192.104.156.0 - 192.104.166.255 { 0xc068a700, 0xc068a8ff, REGISTRY_RIPENCC }, // 192.104.167.0 - 192.104.168.255 { 0xc068a900, 0xc068abff, REGISTRY_ARIN }, // 192.104.169.0 - 192.104.171.255 { 0xc068ac00, 0xc068acff, REGISTRY_APNIC }, // 192.104.172.0 - 192.104.172.255 { 0xc068ad00, 0xc068e7ff, REGISTRY_ARIN }, // 192.104.173.0 - 192.104.231.255 { 0xc068e800, 0xc068e9ff, REGISTRY_APNIC }, // 192.104.232.0 - 192.104.233.255 { 0xc068ea00, 0xc068edff, REGISTRY_ARIN }, // 192.104.234.0 - 192.104.237.255 { 0xc068ee00, 0xc068eeff, REGISTRY_RIPENCC }, // 192.104.238.0 - 192.104.238.255 { 0xc068ef00, 0xc068f4ff, REGISTRY_ARIN }, // 192.104.239.0 - 192.104.244.255 { 0xc068f500, 0xc068f5ff, REGISTRY_RIPENCC }, // 192.104.245.0 - 192.104.245.255 { 0xc068f600, 0xc068f7ff, REGISTRY_APNIC }, // 192.104.246.0 - 192.104.247.255 { 0xc068f800, 0xc068f8ff, REGISTRY_RIPENCC }, // 192.104.248.0 - 192.104.248.255 { 0xc068f900, 0xc068faff, REGISTRY_ARIN }, // 192.104.249.0 - 192.104.250.255 { 0xc068fb00, 0xc068fbff, REGISTRY_RIPENCC }, // 192.104.251.0 - 192.104.251.255 { 0xc068fd00, 0xc06909ff, REGISTRY_ARIN }, // 192.104.253.0 - 192.105.9.255 { 0xc0690a00, 0xc0690aff, REGISTRY_APNIC }, // 192.105.10.0 - 192.105.10.255 { 0xc0690b00, 0xc0694aff, REGISTRY_ARIN }, // 192.105.11.0 - 192.105.74.255 { 0xc0694b00, 0xc0694bff, REGISTRY_RIPENCC }, // 192.105.75.0 - 192.105.75.255 { 0xc0694c00, 0xc069ffff, REGISTRY_ARIN }, // 192.105.76.0 - 192.105.255.255 { 0xc06a0000, 0xc06affff, REGISTRY_RIPENCC }, // 192.106.0.0 - 192.106.255.255 { 0xc06b0000, 0xc06b00ff, REGISTRY_ARIN }, // 192.107.0.0 - 192.107.0.255 { 0xc06b0200, 0xc06b02ff, REGISTRY_RIPENCC }, // 192.107.2.0 - 192.107.2.255 { 0xc06b0300, 0xc06b03ff, REGISTRY_ARIN }, // 192.107.3.0 - 192.107.3.255 { 0xc06b0400, 0xc06b05ff, REGISTRY_RIPENCC }, // 192.107.4.0 - 192.107.5.255 { 0xc06b0600, 0xc06b08ff, REGISTRY_ARIN }, // 192.107.6.0 - 192.107.8.255 { 0xc06b0900, 0xc06b09ff, REGISTRY_APNIC }, // 192.107.9.0 - 192.107.9.255 { 0xc06b0b00, 0xc06b0dff, REGISTRY_RIPENCC }, // 192.107.11.0 - 192.107.13.255 { 0xc06b0e00, 0xc06b32ff, REGISTRY_ARIN }, // 192.107.14.0 - 192.107.50.255 { 0xc06b3300, 0xc06b64ff, REGISTRY_RIPENCC }, // 192.107.51.0 - 192.107.100.255 { 0xc06b6500, 0xc06b65ff, REGISTRY_APNIC }, // 192.107.101.0 - 192.107.101.255 { 0xc06b6600, 0xc06b67ff, REGISTRY_ARIN }, // 192.107.102.0 - 192.107.103.255 { 0xc06b6800, 0xc06b68ff, REGISTRY_LACNIC }, // 192.107.104.0 - 192.107.104.255 { 0xc06b6900, 0xc06b6dff, REGISTRY_ARIN }, // 192.107.105.0 - 192.107.109.255 { 0xc06b6e00, 0xc06b6eff, REGISTRY_RIPENCC }, // 192.107.110.0 - 192.107.110.255 { 0xc06b6f00, 0xc06b6fff, REGISTRY_ARIN }, // 192.107.111.0 - 192.107.111.255 { 0xc06b7100, 0xc06b71ff, REGISTRY_APNIC }, // 192.107.113.0 - 192.107.113.255 { 0xc06b7200, 0xc06b72ff, REGISTRY_RIPENCC }, // 192.107.114.0 - 192.107.114.255 { 0xc06b7300, 0xc06b79ff, REGISTRY_ARIN }, // 192.107.115.0 - 192.107.121.255 { 0xc06b7a00, 0xc06b81ff, REGISTRY_RIPENCC }, // 192.107.122.0 - 192.107.129.255 { 0xc06b8200, 0xc06b83ff, REGISTRY_ARIN }, // 192.107.130.0 - 192.107.131.255 { 0xc06b8400, 0xc06b84ff, REGISTRY_RIPENCC }, // 192.107.132.0 - 192.107.132.255 { 0xc06b8500, 0xc06ba7ff, REGISTRY_ARIN }, // 192.107.133.0 - 192.107.167.255 { 0xc06ba800, 0xc06ba8ff, REGISTRY_RIPENCC }, // 192.107.168.0 - 192.107.168.255 { 0xc06ba900, 0xc06baaff, REGISTRY_ARIN }, // 192.107.169.0 - 192.107.170.255 { 0xc06bab00, 0xc06bacff, REGISTRY_APNIC }, // 192.107.171.0 - 192.107.172.255 { 0xc06bad00, 0xc06badff, REGISTRY_ARIN }, // 192.107.173.0 - 192.107.173.255 { 0xc06bae00, 0xc06baeff, REGISTRY_RIPENCC }, // 192.107.174.0 - 192.107.174.255 { 0xc06baf00, 0xc06bb0ff, REGISTRY_ARIN }, // 192.107.175.0 - 192.107.176.255 { 0xc06bb100, 0xc06bb2ff, REGISTRY_RIPENCC }, // 192.107.177.0 - 192.107.178.255 { 0xc06bb300, 0xc06bbaff, REGISTRY_ARIN }, // 192.107.179.0 - 192.107.186.255 { 0xc06bbb00, 0xc06bbbff, REGISTRY_RIPENCC }, // 192.107.187.0 - 192.107.187.255 { 0xc06bbc00, 0xc06bc7ff, REGISTRY_ARIN }, // 192.107.188.0 - 192.107.199.255 { 0xc06bc800, 0xc06be7ff, REGISTRY_RIPENCC }, // 192.107.200.0 - 192.107.231.255 { 0xc06be800, 0xc06be9ff, REGISTRY_RIPENCC }, // 192.107.232.0 - 192.107.233.255 { 0xc06bea00, 0xc06beaff, REGISTRY_ARIN }, // 192.107.234.0 - 192.107.234.255 { 0xc06beb00, 0xc06becff, REGISTRY_RIPENCC }, // 192.107.235.0 - 192.107.236.255 { 0xc06bed00, 0xc06c16ff, REGISTRY_ARIN }, // 192.107.237.0 - 192.108.22.255 { 0xc06c1700, 0xc06c31ff, REGISTRY_RIPENCC }, // 192.108.23.0 - 192.108.49.255 { 0xc06c3200, 0xc06c32ff, REGISTRY_ARIN }, // 192.108.50.0 - 192.108.50.255 { 0xc06c3300, 0xc06c5cff, REGISTRY_RIPENCC }, // 192.108.51.0 - 192.108.92.255 { 0xc06c5d00, 0xc06c62ff, REGISTRY_ARIN }, // 192.108.93.0 - 192.108.98.255 { 0xc06c6300, 0xc06c63ff, REGISTRY_APNIC }, // 192.108.99.0 - 192.108.99.255 { 0xc06c6400, 0xc06c65ff, REGISTRY_RIPENCC }, // 192.108.100.0 - 192.108.101.255 { 0xc06c6600, 0xc06c6aff, REGISTRY_ARIN }, // 192.108.102.0 - 192.108.106.255 { 0xc06c6b00, 0xc06c6cff, REGISTRY_RIPENCC }, // 192.108.107.0 - 192.108.108.255 { 0xc06c6d00, 0xc06c70ff, REGISTRY_ARIN }, // 192.108.109.0 - 192.108.112.255 { 0xc06c7200, 0xc06c79ff, REGISTRY_RIPENCC }, // 192.108.114.0 - 192.108.121.255 { 0xc06c7a00, 0xc06c7cff, REGISTRY_ARIN }, // 192.108.122.0 - 192.108.124.255 { 0xc06c7d00, 0xc06c7eff, REGISTRY_RIPENCC }, // 192.108.125.0 - 192.108.126.255 { 0xc06c7f00, 0xc06c7fff, REGISTRY_ARIN }, // 192.108.127.0 - 192.108.127.255 { 0xc06c8000, 0xc06caeff, REGISTRY_RIPENCC }, // 192.108.128.0 - 192.108.174.255 { 0xc06caf00, 0xc06cc2ff, REGISTRY_ARIN }, // 192.108.175.0 - 192.108.194.255 { 0xc06cc300, 0xc06cd6ff, REGISTRY_RIPENCC }, // 192.108.195.0 - 192.108.214.255 { 0xc06cd700, 0xc06ce5ff, REGISTRY_ARIN }, // 192.108.215.0 - 192.108.229.255 { 0xc06ce600, 0xc06ce6ff, REGISTRY_APNIC }, // 192.108.230.0 - 192.108.230.255 { 0xc06ce700, 0xc06ce9ff, REGISTRY_ARIN }, // 192.108.231.0 - 192.108.233.255 { 0xc06cea00, 0xc06ceaff, REGISTRY_RIPENCC }, // 192.108.234.0 - 192.108.234.255 { 0xc06ceb00, 0xc06cedff, REGISTRY_ARIN }, // 192.108.235.0 - 192.108.237.255 { 0xc06cee00, 0xc06ceeff, REGISTRY_RIPENCC }, // 192.108.238.0 - 192.108.238.255 { 0xc06cef00, 0xc06cffff, REGISTRY_ARIN }, // 192.108.239.0 - 192.108.255.255 { 0xc06d0000, 0xc06d09ff, REGISTRY_RIPENCC }, // 192.109.0.0 - 192.109.9.255 { 0xc06d0c00, 0xc06d0eff, REGISTRY_RIPENCC }, // 192.109.12.0 - 192.109.14.255 { 0xc06d1000, 0xc06d10ff, REGISTRY_RIPENCC }, // 192.109.16.0 - 192.109.16.255 { 0xc06d1200, 0xc06d16ff, REGISTRY_RIPENCC }, // 192.109.18.0 - 192.109.22.255 { 0xc06d1800, 0xc06d18ff, REGISTRY_RIPENCC }, // 192.109.24.0 - 192.109.24.255 { 0xc06d1a00, 0xc06d1dff, REGISTRY_RIPENCC }, // 192.109.26.0 - 192.109.29.255 { 0xc06d1f00, 0xc06d1fff, REGISTRY_RIPENCC }, // 192.109.31.0 - 192.109.31.255 { 0xc06d2000, 0xc06d23ff, REGISTRY_RIPENCC }, // 192.109.32.0 - 192.109.35.255 { 0xc06d2400, 0xc06d24ff, REGISTRY_RIPENCC }, // 192.109.36.0 - 192.109.36.255 { 0xc06d2700, 0xc06d27ff, REGISTRY_RIPENCC }, // 192.109.39.0 - 192.109.39.255 { 0xc06d2a00, 0xc06d2cff, REGISTRY_RIPENCC }, // 192.109.42.0 - 192.109.44.255 { 0xc06d2d00, 0xc06d2dff, REGISTRY_ARIN }, // 192.109.45.0 - 192.109.45.255 { 0xc06d2e00, 0xc06d2eff, REGISTRY_RIPENCC }, // 192.109.46.0 - 192.109.46.255 { 0xc06d3000, 0xc06d36ff, REGISTRY_RIPENCC }, // 192.109.48.0 - 192.109.54.255 { 0xc06d3700, 0xc06d37ff, REGISTRY_RIPENCC }, // 192.109.55.0 - 192.109.55.255 { 0xc06d3800, 0xc06d38ff, REGISTRY_RIPENCC }, // 192.109.56.0 - 192.109.56.255 { 0xc06d3900, 0xc06d39ff, REGISTRY_RIPENCC }, // 192.109.57.0 - 192.109.57.255 { 0xc06d3a00, 0xc06d46ff, REGISTRY_RIPENCC }, // 192.109.58.0 - 192.109.70.255 { 0xc06d4800, 0xc06d49ff, REGISTRY_RIPENCC }, // 192.109.72.0 - 192.109.73.255 { 0xc06d4b00, 0xc06d4bff, REGISTRY_ARIN }, // 192.109.75.0 - 192.109.75.255 { 0xc06d4c00, 0xc06d4cff, REGISTRY_RIPENCC }, // 192.109.76.0 - 192.109.76.255 { 0xc06d4e00, 0xc06d4eff, REGISTRY_RIPENCC }, // 192.109.78.0 - 192.109.78.255 { 0xc06d5000, 0xc06d53ff, REGISTRY_RIPENCC }, // 192.109.80.0 - 192.109.83.255 { 0xc06d5600, 0xc06d5aff, REGISTRY_RIPENCC }, // 192.109.86.0 - 192.109.90.255 { 0xc06d5c00, 0xc06d5dff, REGISTRY_ARIN }, // 192.109.92.0 - 192.109.93.255 { 0xc06d5e00, 0xc06d60ff, REGISTRY_RIPENCC }, // 192.109.94.0 - 192.109.96.255 { 0xc06d6300, 0xc06d63ff, REGISTRY_ARIN }, // 192.109.99.0 - 192.109.99.255 { 0xc06d6500, 0xc06d66ff, REGISTRY_RIPENCC }, // 192.109.101.0 - 192.109.102.255 { 0xc06d6700, 0xc06d68ff, REGISTRY_ARIN }, // 192.109.103.0 - 192.109.104.255 { 0xc06d6900, 0xc06d6cff, REGISTRY_RIPENCC }, // 192.109.105.0 - 192.109.108.255 { 0xc06d6f00, 0xc06d6fff, REGISTRY_RIPENCC }, // 192.109.111.0 - 192.109.111.255 { 0xc06d7000, 0xc06d71ff, REGISTRY_RIPENCC }, // 192.109.112.0 - 192.109.113.255 { 0xc06d7200, 0xc06d74ff, REGISTRY_RIPENCC }, // 192.109.114.0 - 192.109.116.255 { 0xc06d7600, 0xc06d76ff, REGISTRY_RIPENCC }, // 192.109.118.0 - 192.109.118.255 { 0xc06d7800, 0xc06d78ff, REGISTRY_ARIN }, // 192.109.120.0 - 192.109.120.255 { 0xc06d7900, 0xc06d7aff, REGISTRY_RIPENCC }, // 192.109.121.0 - 192.109.122.255 { 0xc06d7c00, 0xc06d7cff, REGISTRY_RIPENCC }, // 192.109.124.0 - 192.109.124.255 { 0xc06d7e00, 0xc06d7eff, REGISTRY_RIPENCC }, // 192.109.126.0 - 192.109.126.255 { 0xc06d8000, 0xc06d82ff, REGISTRY_RIPENCC }, // 192.109.128.0 - 192.109.130.255 { 0xc06d8600, 0xc06d87ff, REGISTRY_RIPENCC }, // 192.109.134.0 - 192.109.135.255 { 0xc06d8900, 0xc06d89ff, REGISTRY_RIPENCC }, // 192.109.137.0 - 192.109.137.255 { 0xc06d8c00, 0xc06d94ff, REGISTRY_RIPENCC }, // 192.109.140.0 - 192.109.148.255 { 0xc06d9600, 0xc06da4ff, REGISTRY_RIPENCC }, // 192.109.150.0 - 192.109.164.255 { 0xc06da600, 0xc06dabff, REGISTRY_RIPENCC }, // 192.109.166.0 - 192.109.171.255 { 0xc06dad00, 0xc06daeff, REGISTRY_RIPENCC }, // 192.109.173.0 - 192.109.174.255 { 0xc06daf00, 0xc06dbeff, REGISTRY_RIPENCC }, // 192.109.175.0 - 192.109.190.255 { 0xc06dbf00, 0xc06dc2ff, REGISTRY_RIPENCC }, // 192.109.191.0 - 192.109.194.255 { 0xc06dc300, 0xc06dc3ff, REGISTRY_RIPENCC }, // 192.109.195.0 - 192.109.195.255 { 0xc06dc500, 0xc06dc7ff, REGISTRY_RIPENCC }, // 192.109.197.0 - 192.109.199.255 { 0xc06dca00, 0xc06dcaff, REGISTRY_RIPENCC }, // 192.109.202.0 - 192.109.202.255 { 0xc06dcc00, 0xc06dcfff, REGISTRY_RIPENCC }, // 192.109.204.0 - 192.109.207.255 { 0xc06dd100, 0xc06dd1ff, REGISTRY_RIPENCC }, // 192.109.209.0 - 192.109.209.255 { 0xc06dd300, 0xc06dd5ff, REGISTRY_RIPENCC }, // 192.109.211.0 - 192.109.213.255 { 0xc06dd800, 0xc06dd8ff, REGISTRY_RIPENCC }, // 192.109.216.0 - 192.109.216.255 { 0xc06dda00, 0xc06ddaff, REGISTRY_RIPENCC }, // 192.109.218.0 - 192.109.218.255 { 0xc06ddd00, 0xc06ddeff, REGISTRY_RIPENCC }, // 192.109.221.0 - 192.109.222.255 { 0xc06de200, 0xc06de3ff, REGISTRY_RIPENCC }, // 192.109.226.0 - 192.109.227.255 { 0xc06de600, 0xc06de6ff, REGISTRY_RIPENCC }, // 192.109.230.0 - 192.109.230.255 { 0xc06dea00, 0xc06deaff, REGISTRY_RIPENCC }, // 192.109.234.0 - 192.109.234.255 { 0xc06dec00, 0xc06deeff, REGISTRY_RIPENCC }, // 192.109.236.0 - 192.109.238.255 { 0xc06df200, 0xc06df2ff, REGISTRY_AFRINIC }, // 192.109.242.0 - 192.109.242.255 { 0xc06df600, 0xc06df7ff, REGISTRY_RIPENCC }, // 192.109.246.0 - 192.109.247.255 { 0xc06df900, 0xc06df9ff, REGISTRY_RIPENCC }, // 192.109.249.0 - 192.109.249.255 { 0xc06dfb00, 0xc06dfcff, REGISTRY_RIPENCC }, // 192.109.251.0 - 192.109.252.255 { 0xc06dfe00, 0xc06dffff, REGISTRY_RIPENCC }, // 192.109.254.0 - 192.109.255.255 { 0xc06e0000, 0xc06f1fff, REGISTRY_ARIN }, // 192.110.0.0 - 192.111.31.255 { 0xc06f2000, 0xc06f20ff, REGISTRY_APNIC }, // 192.111.32.0 - 192.111.32.255 { 0xc06f2100, 0xc06f21ff, REGISTRY_RIPENCC }, // 192.111.33.0 - 192.111.33.255 { 0xc06f2200, 0xc06f26ff, REGISTRY_ARIN }, // 192.111.34.0 - 192.111.38.255 { 0xc06f2700, 0xc06f27ff, REGISTRY_RIPENCC }, // 192.111.39.0 - 192.111.39.255 { 0xc06f2800, 0xc06f2bff, REGISTRY_ARIN }, // 192.111.40.0 - 192.111.43.255 { 0xc06f2c00, 0xc06f2cff, REGISTRY_RIPENCC }, // 192.111.44.0 - 192.111.44.255 { 0xc06f2d00, 0xc06f2eff, REGISTRY_ARIN }, // 192.111.45.0 - 192.111.46.255 { 0xc06f2f00, 0xc06f30ff, REGISTRY_RIPENCC }, // 192.111.47.0 - 192.111.48.255 { 0xc06f3100, 0xc06f57ff, REGISTRY_ARIN }, // 192.111.49.0 - 192.111.87.255 { 0xc06f5800, 0xc06f58ff, REGISTRY_RIPENCC }, // 192.111.88.0 - 192.111.88.255 { 0xc06f5900, 0xc06f64ff, REGISTRY_ARIN }, // 192.111.89.0 - 192.111.100.255 { 0xc06f6500, 0xc06f65ff, REGISTRY_RIPENCC }, // 192.111.101.0 - 192.111.101.255 { 0xc06f6600, 0xc06f66ff, REGISTRY_APNIC }, // 192.111.102.0 - 192.111.102.255 { 0xc06f6700, 0xc06f68ff, REGISTRY_RIPENCC }, // 192.111.103.0 - 192.111.104.255 { 0xc06f6900, 0xc06f69ff, REGISTRY_APNIC }, // 192.111.105.0 - 192.111.105.255 { 0xc06f6a00, 0xc06f7bff, REGISTRY_ARIN }, // 192.111.106.0 - 192.111.123.255 { 0xc06f7c00, 0xc06f7dff, REGISTRY_RIPENCC }, // 192.111.124.0 - 192.111.125.255 { 0xc06f7e00, 0xc06f7eff, REGISTRY_ARIN }, // 192.111.126.0 - 192.111.126.255 { 0xc06f7f00, 0xc06f7fff, REGISTRY_RIPENCC }, // 192.111.127.0 - 192.111.127.255 { 0xc06f8000, 0xc06fe4ff, REGISTRY_ARIN }, // 192.111.128.0 - 192.111.228.255 { 0xc06fe500, 0xc06fe6ff, REGISTRY_LACNIC }, // 192.111.229.0 - 192.111.230.255 { 0xc06fe700, 0xc06ffbff, REGISTRY_ARIN }, // 192.111.231.0 - 192.111.251.255 { 0xc06ffc00, 0xc06ffcff, REGISTRY_RIPENCC }, // 192.111.252.0 - 192.111.252.255 { 0xc06ffd00, 0xc0701dff, REGISTRY_ARIN }, // 192.111.253.0 - 192.112.29.255 { 0xc0701e00, 0xc07020ff, REGISTRY_RIPENCC }, // 192.112.30.0 - 192.112.32.255 { 0xc0702100, 0xc0702cff, REGISTRY_ARIN }, // 192.112.33.0 - 192.112.44.255 { 0xc0702d00, 0xc0702dff, REGISTRY_RIPENCC }, // 192.112.45.0 - 192.112.45.255 { 0xc0702e00, 0xc07030ff, REGISTRY_ARIN }, // 192.112.46.0 - 192.112.48.255 { 0xc0703100, 0xc07031ff, REGISTRY_RIPENCC }, // 192.112.49.0 - 192.112.49.255 { 0xc0703200, 0xc0703cff, REGISTRY_ARIN }, // 192.112.50.0 - 192.112.60.255 { 0xc0703d00, 0xc0703dff, REGISTRY_RIPENCC }, // 192.112.61.0 - 192.112.61.255 { 0xc0703e00, 0xc07045ff, REGISTRY_ARIN }, // 192.112.62.0 - 192.112.69.255 { 0xc0704600, 0xc0704fff, REGISTRY_RIPENCC }, // 192.112.70.0 - 192.112.79.255 { 0xc0705000, 0xc07061ff, REGISTRY_ARIN }, // 192.112.80.0 - 192.112.97.255 { 0xc0706200, 0xc07064ff, REGISTRY_RIPENCC }, // 192.112.98.0 - 192.112.100.255 { 0xc0706500, 0xc070cbff, REGISTRY_ARIN }, // 192.112.101.0 - 192.112.203.255 { 0xc070cc00, 0xc070ccff, REGISTRY_RIPENCC }, // 192.112.204.0 - 192.112.204.255 { 0xc070cd00, 0xc070cdff, REGISTRY_ARIN }, // 192.112.205.0 - 192.112.205.255 { 0xc070ce00, 0xc070ceff, REGISTRY_RIPENCC }, // 192.112.206.0 - 192.112.206.255 { 0xc070cf00, 0xc070cfff, REGISTRY_ARIN }, // 192.112.207.0 - 192.112.207.255 { 0xc070d000, 0xc070d0ff, REGISTRY_RIPENCC }, // 192.112.208.0 - 192.112.208.255 { 0xc070d100, 0xc070d4ff, REGISTRY_ARIN }, // 192.112.209.0 - 192.112.212.255 { 0xc070d500, 0xc070d6ff, REGISTRY_RIPENCC }, // 192.112.213.0 - 192.112.214.255 { 0xc070d700, 0xc070d7ff, REGISTRY_APNIC }, // 192.112.215.0 - 192.112.215.255 { 0xc070d800, 0xc070f6ff, REGISTRY_ARIN }, // 192.112.216.0 - 192.112.246.255 { 0xc070f700, 0xc070f7ff, REGISTRY_RIPENCC }, // 192.112.247.0 - 192.112.247.255 { 0xc070f800, 0xc070fdff, REGISTRY_ARIN }, // 192.112.248.0 - 192.112.253.255 { 0xc070fe00, 0xc070feff, REGISTRY_RIPENCC }, // 192.112.254.0 - 192.112.254.255 { 0xc070ff00, 0xc070ffff, REGISTRY_ARIN }, // 192.112.255.0 - 192.112.255.255 { 0xc0710000, 0xc071ffff, REGISTRY_RIPENCC }, // 192.113.0.0 - 192.113.255.255 { 0xc0720000, 0xc076ffff, REGISTRY_RIPENCC }, // 192.114.0.0 - 192.118.255.255 { 0xc0770000, 0xc078ffff, REGISTRY_ARIN }, // 192.119.0.0 - 192.120.255.255 { 0xc0790000, 0xc079ffff, REGISTRY_RIPENCC }, // 192.121.0.0 - 192.121.255.255 { 0xc07a0000, 0xc07a00ff, REGISTRY_ARIN }, // 192.122.0.0 - 192.122.0.255 { 0xc07a0100, 0xc07a82ff, REGISTRY_RIPENCC }, // 192.122.1.0 - 192.122.130.255 { 0xc07a8300, 0xc07a8cff, REGISTRY_APNIC }, // 192.122.131.0 - 192.122.140.255 { 0xc07a8d00, 0xc07a92ff, REGISTRY_RIPENCC }, // 192.122.141.0 - 192.122.146.255 { 0xc07a9300, 0xc07a96ff, REGISTRY_ARIN }, // 192.122.147.0 - 192.122.150.255 { 0xc07a9700, 0xc07aaaff, REGISTRY_RIPENCC }, // 192.122.151.0 - 192.122.170.255 { 0xc07aab00, 0xc07aabff, REGISTRY_APNIC }, // 192.122.171.0 - 192.122.171.255 { 0xc07aac00, 0xc07aafff, REGISTRY_ARIN }, // 192.122.172.0 - 192.122.175.255 { 0xc07ab000, 0xc07ab0ff, REGISTRY_APNIC }, // 192.122.176.0 - 192.122.176.255 { 0xc07ab100, 0xc07ab3ff, REGISTRY_ARIN }, // 192.122.177.0 - 192.122.179.255 { 0xc07ab400, 0xc07ab4ff, REGISTRY_APNIC }, // 192.122.180.0 - 192.122.180.255 { 0xc07ab500, 0xc07ad1ff, REGISTRY_ARIN }, // 192.122.181.0 - 192.122.209.255 { 0xc07ad300, 0xc07ad5ff, REGISTRY_ARIN }, // 192.122.211.0 - 192.122.213.255 { 0xc07ad600, 0xc07ad6ff, REGISTRY_RIPENCC }, // 192.122.214.0 - 192.122.214.255 { 0xc07ad700, 0xc07ad7ff, REGISTRY_ARIN }, // 192.122.215.0 - 192.122.215.255 { 0xc07ad800, 0xc07aeaff, REGISTRY_RIPENCC }, // 192.122.216.0 - 192.122.234.255 { 0xc07aeb00, 0xc07aedff, REGISTRY_ARIN }, // 192.122.235.0 - 192.122.237.255 { 0xc07aee00, 0xc07af2ff, REGISTRY_RIPENCC }, // 192.122.238.0 - 192.122.242.255 { 0xc07af300, 0xc07afdff, REGISTRY_ARIN }, // 192.122.243.0 - 192.122.253.255 { 0xc07aff00, 0xc07c09ff, REGISTRY_ARIN }, // 192.122.255.0 - 192.124.9.255 { 0xc07c0a00, 0xc07c0eff, REGISTRY_APNIC }, // 192.124.10.0 - 192.124.14.255 { 0xc07c0f00, 0xc07c17ff, REGISTRY_ARIN }, // 192.124.15.0 - 192.124.23.255 { 0xc07c1900, 0xc07c1cff, REGISTRY_RIPENCC }, // 192.124.25.0 - 192.124.28.255 { 0xc07c1d00, 0xc07c1fff, REGISTRY_ARIN }, // 192.124.29.0 - 192.124.31.255 { 0xc07c2000, 0xc07c20ff, REGISTRY_RIPENCC }, // 192.124.32.0 - 192.124.32.255 { 0xc07c2100, 0xc07c26ff, REGISTRY_ARIN }, // 192.124.33.0 - 192.124.38.255 { 0xc07c2700, 0xc07c27ff, REGISTRY_RIPENCC }, // 192.124.39.0 - 192.124.39.255 { 0xc07c2800, 0xc07c2dff, REGISTRY_ARIN }, // 192.124.40.0 - 192.124.45.255 { 0xc07c2e00, 0xc07c2eff, REGISTRY_RIPENCC }, // 192.124.46.0 - 192.124.46.255 { 0xc07c2f00, 0xc07c6fff, REGISTRY_ARIN }, // 192.124.47.0 - 192.124.111.255 { 0xc07c7000, 0xc07c70ff, REGISTRY_RIPENCC }, // 192.124.112.0 - 192.124.112.255 { 0xc07c7100, 0xc07c72ff, REGISTRY_ARIN }, // 192.124.113.0 - 192.124.114.255 { 0xc07c7300, 0xc07c74ff, REGISTRY_RIPENCC }, // 192.124.115.0 - 192.124.116.255 { 0xc07c7500, 0xc07c75ff, REGISTRY_APNIC }, // 192.124.117.0 - 192.124.117.255 { 0xc07c7600, 0xc07c97ff, REGISTRY_ARIN }, // 192.124.118.0 - 192.124.151.255 { 0xc07c9800, 0xc07c98ff, REGISTRY_APNIC }, // 192.124.152.0 - 192.124.152.255 { 0xc07c9900, 0xc07c99ff, REGISTRY_ARIN }, // 192.124.153.0 - 192.124.153.255 { 0xc07c9a00, 0xc07c9aff, REGISTRY_APNIC }, // 192.124.154.0 - 192.124.154.255 { 0xc07c9b00, 0xc07c9bff, REGISTRY_RIPENCC }, // 192.124.155.0 - 192.124.155.255 { 0xc07c9c00, 0xc07ca9ff, REGISTRY_ARIN }, // 192.124.156.0 - 192.124.169.255 { 0xc07caa00, 0xc07cdbff, REGISTRY_RIPENCC }, // 192.124.170.0 - 192.124.219.255 { 0xc07cdc00, 0xc07ceaff, REGISTRY_ARIN }, // 192.124.220.0 - 192.124.234.255 { 0xc07ceb00, 0xc07cebff, REGISTRY_RIPENCC }, // 192.124.235.0 - 192.124.235.255 { 0xc07cec00, 0xc07cecff, REGISTRY_ARIN }, // 192.124.236.0 - 192.124.236.255 { 0xc07ced00, 0xc07cf5ff, REGISTRY_RIPENCC }, // 192.124.237.0 - 192.124.245.255 { 0xc07cf600, 0xc07cf6ff, REGISTRY_ARIN }, // 192.124.246.0 - 192.124.246.255 { 0xc07cf700, 0xc07cf8ff, REGISTRY_RIPENCC }, // 192.124.247.0 - 192.124.248.255 { 0xc07cf900, 0xc07cf9ff, REGISTRY_ARIN }, // 192.124.249.0 - 192.124.249.255 { 0xc07cfa00, 0xc07cfeff, REGISTRY_RIPENCC }, // 192.124.250.0 - 192.124.254.255 { 0xc07cff00, 0xc07cffff, REGISTRY_ARIN }, // 192.124.255.0 - 192.124.255.255 { 0xc07d0000, 0xc07dffff, REGISTRY_RIPENCC }, // 192.125.0.0 - 192.125.255.255 { 0xc07e0000, 0xc07e00ff, REGISTRY_ARIN }, // 192.126.0.0 - 192.126.0.255 { 0xc07e0100, 0xc07e40ff, REGISTRY_RIPENCC }, // 192.126.1.0 - 192.126.64.255 { 0xc07e4100, 0xc08100ff, REGISTRY_ARIN }, // 192.126.65.0 - 192.129.0.255 { 0xc0810100, 0xc08128ff, REGISTRY_RIPENCC }, // 192.129.1.0 - 192.129.40.255 { 0xc0812900, 0xc08129ff, REGISTRY_RIPENCC }, // 192.129.41.0 - 192.129.41.255 { 0xc0812a00, 0xc0813dff, REGISTRY_RIPENCC }, // 192.129.42.0 - 192.129.61.255 { 0xc0813e00, 0xc0814fff, REGISTRY_ARIN }, // 192.129.62.0 - 192.129.79.255 { 0xc0815000, 0xc08150ff, REGISTRY_RIPENCC }, // 192.129.80.0 - 192.129.80.255 { 0xc0815100, 0xc08156ff, REGISTRY_ARIN }, // 192.129.81.0 - 192.129.86.255 { 0xc0815700, 0xc08157ff, REGISTRY_RIPENCC }, // 192.129.87.0 - 192.129.87.255 { 0xc0815800, 0xc08161ff, REGISTRY_ARIN }, // 192.129.88.0 - 192.129.97.255 { 0xc0816200, 0xc08162ff, REGISTRY_RIPENCC }, // 192.129.98.0 - 192.129.98.255 { 0xc0816300, 0xc081ffff, REGISTRY_ARIN }, // 192.129.99.0 - 192.129.255.255 { 0xc0820000, 0xc082ffff, REGISTRY_RIPENCC }, // 192.130.0.0 - 192.130.255.255 { 0xc0830000, 0xc0830cff, REGISTRY_ARIN }, // 192.131.0.0 - 192.131.12.255 { 0xc0830d00, 0xc0830dff, REGISTRY_APNIC }, // 192.131.13.0 - 192.131.13.255 { 0xc0830e00, 0xc08313ff, REGISTRY_ARIN }, // 192.131.14.0 - 192.131.19.255 { 0xc0831400, 0xc08314ff, REGISTRY_RIPENCC }, // 192.131.20.0 - 192.131.20.255 { 0xc0831500, 0xc08318ff, REGISTRY_ARIN }, // 192.131.21.0 - 192.131.24.255 { 0xc0831900, 0xc0831aff, REGISTRY_RIPENCC }, // 192.131.25.0 - 192.131.26.255 { 0xc0831b00, 0xc0831eff, REGISTRY_APNIC }, // 192.131.27.0 - 192.131.30.255 { 0xc0831f00, 0xc0834eff, REGISTRY_ARIN }, // 192.131.31.0 - 192.131.78.255 { 0xc0834f00, 0xc0834fff, REGISTRY_RIPENCC }, // 192.131.79.0 - 192.131.79.255 { 0xc0835000, 0xc08358ff, REGISTRY_ARIN }, // 192.131.80.0 - 192.131.88.255 { 0xc0835900, 0xc08359ff, REGISTRY_RIPENCC }, // 192.131.89.0 - 192.131.89.255 { 0xc0835a00, 0xc0835cff, REGISTRY_APNIC }, // 192.131.90.0 - 192.131.92.255 { 0xc0835d00, 0xc0835fff, REGISTRY_ARIN }, // 192.131.93.0 - 192.131.95.255 { 0xc0836000, 0xc08360ff, REGISTRY_RIPENCC }, // 192.131.96.0 - 192.131.96.255 { 0xc0836100, 0xc0836bff, REGISTRY_ARIN }, // 192.131.97.0 - 192.131.107.255 { 0xc0836c00, 0xc0836cff, REGISTRY_RIPENCC }, // 192.131.108.0 - 192.131.108.255 { 0xc0836d00, 0xc08383ff, REGISTRY_ARIN }, // 192.131.109.0 - 192.131.131.255 { 0xc0838400, 0xc08384ff, REGISTRY_RIPENCC }, // 192.131.132.0 - 192.131.132.255 { 0xc0838500, 0xc083faff, REGISTRY_ARIN }, // 192.131.133.0 - 192.131.250.255 { 0xc083fb00, 0xc083fcff, REGISTRY_APNIC }, // 192.131.251.0 - 192.131.252.255 { 0xc083fd00, 0xc08408ff, REGISTRY_ARIN }, // 192.131.253.0 - 192.132.8.255 { 0xc0840900, 0xc0840bff, REGISTRY_RIPENCC }, // 192.132.9.0 - 192.132.11.255 { 0xc0840c00, 0xc0840eff, REGISTRY_ARIN }, // 192.132.12.0 - 192.132.14.255 { 0xc0840f00, 0xc0840fff, REGISTRY_APNIC }, // 192.132.15.0 - 192.132.15.255 { 0xc0841000, 0xc0841eff, REGISTRY_ARIN }, // 192.132.16.0 - 192.132.30.255 { 0xc0841f00, 0xc0841fff, REGISTRY_APNIC }, // 192.132.31.0 - 192.132.31.255 { 0xc0842000, 0xc08421ff, REGISTRY_ARIN }, // 192.132.32.0 - 192.132.33.255 { 0xc0842200, 0xc08422ff, REGISTRY_RIPENCC }, // 192.132.34.0 - 192.132.34.255 { 0xc0842300, 0xc08423ff, REGISTRY_LACNIC }, // 192.132.35.0 - 192.132.35.255 { 0xc0842400, 0xc08428ff, REGISTRY_ARIN }, // 192.132.36.0 - 192.132.40.255 { 0xc0842900, 0xc08429ff, REGISTRY_APNIC }, // 192.132.41.0 - 192.132.41.255 { 0xc0842a00, 0xc08434ff, REGISTRY_ARIN }, // 192.132.42.0 - 192.132.52.255 { 0xc0843500, 0xc08435ff, REGISTRY_RIPENCC }, // 192.132.53.0 - 192.132.53.255 { 0xc0843600, 0xc08436ff, REGISTRY_ARIN }, // 192.132.54.0 - 192.132.54.255 { 0xc0843700, 0xc08437ff, REGISTRY_RIPENCC }, // 192.132.55.0 - 192.132.55.255 { 0xc0843800, 0xc0845cff, REGISTRY_ARIN }, // 192.132.56.0 - 192.132.92.255 { 0xc0845d00, 0xc0845dff, REGISTRY_APNIC }, // 192.132.93.0 - 192.132.93.255 { 0xc0845e00, 0xc08462ff, REGISTRY_ARIN }, // 192.132.94.0 - 192.132.98.255 { 0xc0846300, 0xc08463ff, REGISTRY_RIPENCC }, // 192.132.99.0 - 192.132.99.255 { 0xc0846400, 0xc08465ff, REGISTRY_ARIN }, // 192.132.100.0 - 192.132.101.255 { 0xc0846700, 0xc084eeff, REGISTRY_ARIN }, // 192.132.103.0 - 192.132.238.255 { 0xc084ef00, 0xc084efff, REGISTRY_RIPENCC }, // 192.132.239.0 - 192.132.239.255 { 0xc084f000, 0xc084f3ff, REGISTRY_ARIN }, // 192.132.240.0 - 192.132.243.255 { 0xc084f400, 0xc084f5ff, REGISTRY_RIPENCC }, // 192.132.244.0 - 192.132.245.255 { 0xc084f600, 0xc084f6ff, REGISTRY_ARIN }, // 192.132.246.0 - 192.132.246.255 { 0xc084f700, 0xc084fbff, REGISTRY_APNIC }, // 192.132.247.0 - 192.132.251.255 { 0xc084fc00, 0xc084fcff, REGISTRY_RIPENCC }, // 192.132.252.0 - 192.132.252.255 { 0xc084fd00, 0xc084fdff, REGISTRY_APNIC }, // 192.132.253.0 - 192.132.253.255 { 0xc084fe00, 0xc08509ff, REGISTRY_ARIN }, // 192.132.254.0 - 192.133.9.255 { 0xc0850b00, 0xc0850dff, REGISTRY_ARIN }, // 192.133.11.0 - 192.133.13.255 { 0xc0850f00, 0xc0850fff, REGISTRY_RIPENCC }, // 192.133.15.0 - 192.133.15.255 { 0xc0851000, 0xc08514ff, REGISTRY_ARIN }, // 192.133.16.0 - 192.133.20.255 { 0xc0851500, 0xc08515ff, REGISTRY_APNIC }, // 192.133.21.0 - 192.133.21.255 { 0xc0851600, 0xc0851bff, REGISTRY_ARIN }, // 192.133.22.0 - 192.133.27.255 { 0xc0851c00, 0xc0851cff, REGISTRY_RIPENCC }, // 192.133.28.0 - 192.133.28.255 { 0xc0851d00, 0xc0851eff, REGISTRY_ARIN }, // 192.133.29.0 - 192.133.30.255 { 0xc0851f00, 0xc0851fff, REGISTRY_APNIC }, // 192.133.31.0 - 192.133.31.255 { 0xc0852000, 0xc08520ff, REGISTRY_RIPENCC }, // 192.133.32.0 - 192.133.32.255 { 0xc0852100, 0xc08523ff, REGISTRY_ARIN }, // 192.133.33.0 - 192.133.35.255 { 0xc0852400, 0xc08524ff, REGISTRY_RIPENCC }, // 192.133.36.0 - 192.133.36.255 { 0xc0852500, 0xc08528ff, REGISTRY_ARIN }, // 192.133.37.0 - 192.133.40.255 { 0xc0852900, 0xc08529ff, REGISTRY_APNIC }, // 192.133.41.0 - 192.133.41.255 { 0xc0852a00, 0xc08534ff, REGISTRY_ARIN }, // 192.133.42.0 - 192.133.52.255 { 0xc0853500, 0xc08537ff, REGISTRY_RIPENCC }, // 192.133.53.0 - 192.133.55.255 { 0xc0853800, 0xc08539ff, REGISTRY_ARIN }, // 192.133.56.0 - 192.133.57.255 { 0xc0853a00, 0xc0853aff, REGISTRY_RIPENCC }, // 192.133.58.0 - 192.133.58.255 { 0xc0853b00, 0xc0853fff, REGISTRY_ARIN }, // 192.133.59.0 - 192.133.63.255 { 0xc0854000, 0xc08540ff, REGISTRY_RIPENCC }, // 192.133.64.0 - 192.133.64.255 { 0xc0854100, 0xc08541ff, REGISTRY_ARIN }, // 192.133.65.0 - 192.133.65.255 { 0xc0854300, 0xc08543ff, REGISTRY_APNIC }, // 192.133.67.0 - 192.133.67.255 { 0xc0854400, 0xc08566ff, REGISTRY_ARIN }, // 192.133.68.0 - 192.133.102.255 { 0xc0856800, 0xc0856bff, REGISTRY_ARIN }, // 192.133.104.0 - 192.133.107.255 { 0xc0856c00, 0xc0856fff, REGISTRY_RIPENCC }, // 192.133.108.0 - 192.133.111.255 { 0xc0857000, 0xc08578ff, REGISTRY_ARIN }, // 192.133.112.0 - 192.133.120.255 { 0xc0857900, 0xc08579ff, REGISTRY_RIPENCC }, // 192.133.121.0 - 192.133.121.255 { 0xc0857a00, 0xc08582ff, REGISTRY_ARIN }, // 192.133.122.0 - 192.133.130.255 { 0xc0858300, 0xc08583ff, REGISTRY_RIPENCC }, // 192.133.131.0 - 192.133.131.255 { 0xc0858400, 0xc085f3ff, REGISTRY_ARIN }, // 192.133.132.0 - 192.133.243.255 { 0xc085f400, 0xc085f4ff, REGISTRY_RIPENCC }, // 192.133.244.0 - 192.133.244.255 { 0xc085f500, 0xc085f9ff, REGISTRY_ARIN }, // 192.133.245.0 - 192.133.249.255 { 0xc085fa00, 0xc085faff, REGISTRY_AFRINIC }, // 192.133.250.0 - 192.133.250.255 { 0xc085fb00, 0xc085ffff, REGISTRY_ARIN }, // 192.133.251.0 - 192.133.255.255 { 0xc0860000, 0xc086ffff, REGISTRY_RIPENCC }, // 192.134.0.0 - 192.134.255.255 { 0xc0870000, 0xc08706ff, REGISTRY_ARIN }, // 192.135.0.0 - 192.135.6.255 { 0xc0870700, 0xc08725ff, REGISTRY_RIPENCC }, // 192.135.7.0 - 192.135.37.255 { 0xc0872600, 0xc0872dff, REGISTRY_ARIN }, // 192.135.38.0 - 192.135.45.255 { 0xc0872e00, 0xc0872eff, REGISTRY_RIPENCC }, // 192.135.46.0 - 192.135.46.255 { 0xc0872f00, 0xc08732ff, REGISTRY_ARIN }, // 192.135.47.0 - 192.135.50.255 { 0xc0873300, 0xc08735ff, REGISTRY_RIPENCC }, // 192.135.51.0 - 192.135.53.255 { 0xc0873600, 0xc0873eff, REGISTRY_ARIN }, // 192.135.54.0 - 192.135.62.255 { 0xc0874000, 0xc08741ff, REGISTRY_ARIN }, // 192.135.64.0 - 192.135.65.255 { 0xc0874200, 0xc08742ff, REGISTRY_RIPENCC }, // 192.135.66.0 - 192.135.66.255 { 0xc0874300, 0xc08743ff, REGISTRY_ARIN }, // 192.135.67.0 - 192.135.67.255 { 0xc0874400, 0xc08744ff, REGISTRY_RIPENCC }, // 192.135.68.0 - 192.135.68.255 { 0xc0874500, 0xc08751ff, REGISTRY_ARIN }, // 192.135.69.0 - 192.135.81.255 { 0xc0875200, 0xc08752ff, REGISTRY_RIPENCC }, // 192.135.82.0 - 192.135.82.255 { 0xc0875300, 0xc08758ff, REGISTRY_ARIN }, // 192.135.83.0 - 192.135.88.255 { 0xc0875d00, 0xc0875dff, REGISTRY_ARIN }, // 192.135.93.0 - 192.135.93.255 { 0xc0875e00, 0xc0875eff, REGISTRY_APNIC }, // 192.135.94.0 - 192.135.94.255 { 0xc0876000, 0xc08760ff, REGISTRY_APNIC }, // 192.135.96.0 - 192.135.96.255 { 0xc0876500, 0xc08765ff, REGISTRY_APNIC }, // 192.135.101.0 - 192.135.101.255 { 0xc0876700, 0xc0876cff, REGISTRY_APNIC }, // 192.135.103.0 - 192.135.108.255 { 0xc0876d00, 0xc08780ff, REGISTRY_ARIN }, // 192.135.109.0 - 192.135.128.255 { 0xc0878100, 0xc08781ff, REGISTRY_RIPENCC }, // 192.135.129.0 - 192.135.129.255 { 0xc0878200, 0xc08784ff, REGISTRY_ARIN }, // 192.135.130.0 - 192.135.132.255 { 0xc0878500, 0xc08785ff, REGISTRY_RIPENCC }, // 192.135.133.0 - 192.135.133.255 { 0xc0878600, 0xc0878eff, REGISTRY_ARIN }, // 192.135.134.0 - 192.135.142.255 { 0xc0878f00, 0xc0878fff, REGISTRY_RIPENCC }, // 192.135.143.0 - 192.135.143.255 { 0xc0879000, 0xc08790ff, REGISTRY_ARIN }, // 192.135.144.0 - 192.135.144.255 { 0xc0879100, 0xc087a8ff, REGISTRY_RIPENCC }, // 192.135.145.0 - 192.135.168.255 { 0xc087a900, 0xc087aeff, REGISTRY_ARIN }, // 192.135.169.0 - 192.135.174.255 { 0xc087af00, 0xc087afff, REGISTRY_RIPENCC }, // 192.135.175.0 - 192.135.175.255 { 0xc087b000, 0xc087b8ff, REGISTRY_ARIN }, // 192.135.176.0 - 192.135.184.255 { 0xc087ba00, 0xc087baff, REGISTRY_ARIN }, // 192.135.186.0 - 192.135.186.255 { 0xc087bb00, 0xc087bbff, REGISTRY_RIPENCC }, // 192.135.187.0 - 192.135.187.255 { 0xc087bc00, 0xc087ceff, REGISTRY_ARIN }, // 192.135.188.0 - 192.135.206.255 { 0xc087cf00, 0xc087d0ff, REGISTRY_APNIC }, // 192.135.207.0 - 192.135.208.255 { 0xc087d100, 0xc087d1ff, REGISTRY_ARIN }, // 192.135.209.0 - 192.135.209.255 { 0xc087d300, 0xc087daff, REGISTRY_ARIN }, // 192.135.211.0 - 192.135.218.255 { 0xc087db00, 0xc087dbff, REGISTRY_RIPENCC }, // 192.135.219.0 - 192.135.219.255 { 0xc087dc00, 0xc087ddff, REGISTRY_ARIN }, // 192.135.220.0 - 192.135.221.255 { 0xc087de00, 0xc087deff, REGISTRY_APNIC }, // 192.135.222.0 - 192.135.222.255 { 0xc087df00, 0xc087e0ff, REGISTRY_ARIN }, // 192.135.223.0 - 192.135.224.255 { 0xc087e100, 0xc087e1ff, REGISTRY_RIPENCC }, // 192.135.225.0 - 192.135.225.255 { 0xc087e200, 0xc087e6ff, REGISTRY_ARIN }, // 192.135.226.0 - 192.135.230.255 { 0xc087e700, 0xc087eaff, REGISTRY_RIPENCC }, // 192.135.231.0 - 192.135.234.255 { 0xc087eb00, 0xc087fcff, REGISTRY_ARIN }, // 192.135.235.0 - 192.135.252.255 { 0xc087fd00, 0xc087feff, REGISTRY_RIPENCC }, // 192.135.253.0 - 192.135.254.255 { 0xc087ff00, 0xc08806ff, REGISTRY_ARIN }, // 192.135.255.0 - 192.136.6.255 { 0xc0880700, 0xc08807ff, REGISTRY_RIPENCC }, // 192.136.7.0 - 192.136.7.255 { 0xc0880800, 0xc08808ff, REGISTRY_ARIN }, // 192.136.8.0 - 192.136.8.255 { 0xc0880900, 0xc08809ff, REGISTRY_RIPENCC }, // 192.136.9.0 - 192.136.9.255 { 0xc0880a00, 0xc08811ff, REGISTRY_ARIN }, // 192.136.10.0 - 192.136.17.255 { 0xc0881200, 0xc08813ff, REGISTRY_RIPENCC }, // 192.136.18.0 - 192.136.19.255 { 0xc0881400, 0xc08816ff, REGISTRY_ARIN }, // 192.136.20.0 - 192.136.22.255 { 0xc0881700, 0xc08817ff, REGISTRY_RIPENCC }, // 192.136.23.0 - 192.136.23.255 { 0xc0881800, 0xc0881cff, REGISTRY_ARIN }, // 192.136.24.0 - 192.136.28.255 { 0xc0881d00, 0xc0881fff, REGISTRY_RIPENCC }, // 192.136.29.0 - 192.136.31.255 { 0xc0882000, 0xc08826ff, REGISTRY_ARIN }, // 192.136.32.0 - 192.136.38.255 { 0xc0882700, 0xc08827ff, REGISTRY_APNIC }, // 192.136.39.0 - 192.136.39.255 { 0xc0882800, 0xc08829ff, REGISTRY_RIPENCC }, // 192.136.40.0 - 192.136.41.255 { 0xc0882a00, 0xc0882fff, REGISTRY_LACNIC }, // 192.136.42.0 - 192.136.47.255 { 0xc0883000, 0xc08830ff, REGISTRY_ARIN }, // 192.136.48.0 - 192.136.48.255 { 0xc0883100, 0xc08831ff, REGISTRY_RIPENCC }, // 192.136.49.0 - 192.136.49.255 { 0xc0883200, 0xc08832ff, REGISTRY_ARIN }, // 192.136.50.0 - 192.136.50.255 { 0xc0883300, 0xc08834ff, REGISTRY_RIPENCC }, // 192.136.51.0 - 192.136.52.255 { 0xc0883500, 0xc08836ff, REGISTRY_ARIN }, // 192.136.53.0 - 192.136.54.255 { 0xc0883700, 0xc08839ff, REGISTRY_AFRINIC }, // 192.136.55.0 - 192.136.57.255 { 0xc0883a00, 0xc0883aff, REGISTRY_ARIN }, // 192.136.58.0 - 192.136.58.255 { 0xc0883b00, 0xc0883bff, REGISTRY_APNIC }, // 192.136.59.0 - 192.136.59.255 { 0xc0883c00, 0xc0883cff, REGISTRY_ARIN }, // 192.136.60.0 - 192.136.60.255 { 0xc0883d00, 0xc0883dff, REGISTRY_RIPENCC }, // 192.136.61.0 - 192.136.61.255 { 0xc0883e00, 0xc08846ff, REGISTRY_ARIN }, // 192.136.62.0 - 192.136.70.255 { 0xc0884700, 0xc08866ff, REGISTRY_RIPENCC }, // 192.136.71.0 - 192.136.102.255 { 0xc0886700, 0xc0888cff, REGISTRY_ARIN }, // 192.136.103.0 - 192.136.140.255 { 0xc0889000, 0xc08899ff, REGISTRY_ARIN }, // 192.136.144.0 - 192.136.153.255 { 0xc0889a00, 0xc0889cff, REGISTRY_RIPENCC }, // 192.136.154.0 - 192.136.156.255 { 0xc0889d00, 0xc08a00ff, REGISTRY_ARIN }, // 192.136.157.0 - 192.138.0.255 { 0xc08a0100, 0xc08a08ff, REGISTRY_RIPENCC }, // 192.138.1.0 - 192.138.8.255 { 0xc08a0900, 0xc08a55ff, REGISTRY_ARIN }, // 192.138.9.0 - 192.138.85.255 { 0xc08a5600, 0xc08a56ff, REGISTRY_RIPENCC }, // 192.138.86.0 - 192.138.86.255 { 0xc08a5700, 0xc08a63ff, REGISTRY_ARIN }, // 192.138.87.0 - 192.138.99.255 { 0xc08a6400, 0xc08a64ff, REGISTRY_APNIC }, // 192.138.100.0 - 192.138.100.255 { 0xc08a6500, 0xc08a68ff, REGISTRY_ARIN }, // 192.138.101.0 - 192.138.104.255 { 0xc08a6900, 0xc08a75ff, REGISTRY_RIPENCC }, // 192.138.105.0 - 192.138.117.255 { 0xc08a7e00, 0xc08a9aff, REGISTRY_ARIN }, // 192.138.126.0 - 192.138.154.255 { 0xc08a9b00, 0xc08a9eff, REGISTRY_RIPENCC }, // 192.138.155.0 - 192.138.158.255 { 0xc08a9f00, 0xc08ab6ff, REGISTRY_ARIN }, // 192.138.159.0 - 192.138.182.255 { 0xc08ab700, 0xc08ab7ff, REGISTRY_RIPENCC }, // 192.138.183.0 - 192.138.183.255 { 0xc08ab800, 0xc08abbff, REGISTRY_ARIN }, // 192.138.184.0 - 192.138.187.255 { 0xc08abd00, 0xc08abfff, REGISTRY_ARIN }, // 192.138.189.0 - 192.138.191.255 { 0xc08ac000, 0xc08ac0ff, REGISTRY_RIPENCC }, // 192.138.192.0 - 192.138.192.255 { 0xc08ac100, 0xc08acbff, REGISTRY_ARIN }, // 192.138.193.0 - 192.138.203.255 { 0xc08acc00, 0xc08accff, REGISTRY_RIPENCC }, // 192.138.204.0 - 192.138.204.255 { 0xc08acd00, 0xc08ae3ff, REGISTRY_ARIN }, // 192.138.205.0 - 192.138.227.255 { 0xc08ae400, 0xc08ae8ff, REGISTRY_RIPENCC }, // 192.138.228.0 - 192.138.232.255 { 0xc08ae900, 0xc08af7ff, REGISTRY_ARIN }, // 192.138.233.0 - 192.138.247.255 { 0xc08af800, 0xc08af8ff, REGISTRY_RIPENCC }, // 192.138.248.0 - 192.138.248.255 { 0xc08af900, 0xc08afaff, REGISTRY_ARIN }, // 192.138.249.0 - 192.138.250.255 { 0xc08afb00, 0xc08afbff, REGISTRY_APNIC }, // 192.138.251.0 - 192.138.251.255 { 0xc08afc00, 0xc08b4dff, REGISTRY_ARIN }, // 192.138.252.0 - 192.139.77.255 { 0xc08b4e00, 0xc08b4eff, REGISTRY_RIPENCC }, // 192.139.78.0 - 192.139.78.255 { 0xc08b4f00, 0xc08c00ff, REGISTRY_ARIN }, // 192.139.79.0 - 192.140.0.255 { 0xc08c0400, 0xc08c07ff, REGISTRY_ARIN }, // 192.140.4.0 - 192.140.7.255 { 0xc08c0800, 0xc08c7eff, REGISTRY_LACNIC }, // 192.140.8.0 - 192.140.126.255 { 0xc08c8000, 0xc08cd7ff, REGISTRY_APNIC }, // 192.140.128.0 - 192.140.215.255 { 0xc08cdc00, 0xc08cffff, REGISTRY_APNIC }, // 192.140.220.0 - 192.140.255.255 { 0xc08e0000, 0xc08fffff, REGISTRY_AFRINIC }, // 192.142.0.0 - 192.143.255.255 { 0xc0904000, 0xc09047ff, REGISTRY_LACNIC }, // 192.144.64.0 - 192.144.71.255 { 0xc0904a00, 0xc0904aff, REGISTRY_RIPENCC }, // 192.144.74.0 - 192.144.74.255 { 0xc0904c00, 0xc0904dff, REGISTRY_RIPENCC }, // 192.144.76.0 - 192.144.77.255 { 0xc0905000, 0xc0905fff, REGISTRY_APNIC }, // 192.144.80.0 - 192.144.95.255 { 0xc0906000, 0xc0907fff, REGISTRY_LACNIC }, // 192.144.96.0 - 192.144.127.255 { 0xc0908000, 0xc090ffff, REGISTRY_ARIN }, // 192.144.128.0 - 192.144.255.255 { 0xc091c000, 0xc091dfff, REGISTRY_LACNIC }, // 192.145.192.0 - 192.145.223.255 { 0xc091e700, 0xc09274ff, REGISTRY_ARIN }, // 192.145.231.0 - 192.146.116.255 { 0xc0927500, 0xc09275ff, REGISTRY_RIPENCC }, // 192.146.117.0 - 192.146.117.255 { 0xc0927600, 0xc09276ff, REGISTRY_ARIN }, // 192.146.118.0 - 192.146.118.255 { 0xc0927700, 0xc09277ff, REGISTRY_RIPENCC }, // 192.146.119.0 - 192.146.119.255 { 0xc0927800, 0xc0927aff, REGISTRY_ARIN }, // 192.146.120.0 - 192.146.122.255 { 0xc0927b00, 0xc0927eff, REGISTRY_RIPENCC }, // 192.146.123.0 - 192.146.126.255 { 0xc0927f00, 0xc09283ff, REGISTRY_ARIN }, // 192.146.127.0 - 192.146.131.255 { 0xc0928400, 0xc09284ff, REGISTRY_RIPENCC }, // 192.146.132.0 - 192.146.132.255 { 0xc0928500, 0xc09285ff, REGISTRY_APNIC }, // 192.146.133.0 - 192.146.133.255 { 0xc0928600, 0xc09289ff, REGISTRY_RIPENCC }, // 192.146.134.0 - 192.146.137.255 { 0xc0928c00, 0xc0928dff, REGISTRY_RIPENCC }, // 192.146.140.0 - 192.146.141.255 { 0xc0928e00, 0xc09295ff, REGISTRY_ARIN }, // 192.146.142.0 - 192.146.149.255 { 0xc0929600, 0xc09296ff, REGISTRY_APNIC }, // 192.146.150.0 - 192.146.150.255 { 0xc0929700, 0xc09297ff, REGISTRY_ARIN }, // 192.146.151.0 - 192.146.151.255 { 0xc0929800, 0xc09298ff, REGISTRY_RIPENCC }, // 192.146.152.0 - 192.146.152.255 { 0xc0929900, 0xc0929cff, REGISTRY_ARIN }, // 192.146.153.0 - 192.146.156.255 { 0xc0929d00, 0xc0929dff, REGISTRY_LACNIC }, // 192.146.157.0 - 192.146.157.255 { 0xc0929e00, 0xc092a2ff, REGISTRY_ARIN }, // 192.146.158.0 - 192.146.162.255 { 0xc092a300, 0xc092aaff, REGISTRY_RIPENCC }, // 192.146.163.0 - 192.146.170.255 { 0xc092ab00, 0xc092abff, REGISTRY_ARIN }, // 192.146.171.0 - 192.146.171.255 { 0xc092ac00, 0xc092b6ff, REGISTRY_RIPENCC }, // 192.146.172.0 - 192.146.182.255 { 0xc092b700, 0xc092b7ff, REGISTRY_ARIN }, // 192.146.183.0 - 192.146.183.255 { 0xc092b800, 0xc092b8ff, REGISTRY_APNIC }, // 192.146.184.0 - 192.146.184.255 { 0xc092b900, 0xc092b9ff, REGISTRY_RIPENCC }, // 192.146.185.0 - 192.146.185.255 { 0xc092ba00, 0xc092baff, REGISTRY_ARIN }, // 192.146.186.0 - 192.146.186.255 { 0xc092bb00, 0xc092bbff, REGISTRY_RIPENCC }, // 192.146.187.0 - 192.146.187.255 { 0xc092bc00, 0xc092bcff, REGISTRY_ARIN }, // 192.146.188.0 - 192.146.188.255 { 0xc092be00, 0xc092c0ff, REGISTRY_ARIN }, // 192.146.190.0 - 192.146.192.255 { 0xc092c100, 0xc092c1ff, REGISTRY_RIPENCC }, // 192.146.193.0 - 192.146.193.255 { 0xc092c200, 0xc092c7ff, REGISTRY_ARIN }, // 192.146.194.0 - 192.146.199.255 { 0xc092c800, 0xc092c8ff, REGISTRY_APNIC }, // 192.146.200.0 - 192.146.200.255 { 0xc092c900, 0xc092cbff, REGISTRY_ARIN }, // 192.146.201.0 - 192.146.203.255 { 0xc092cc00, 0xc092ccff, REGISTRY_RIPENCC }, // 192.146.204.0 - 192.146.204.255 { 0xc092cd00, 0xc092d9ff, REGISTRY_ARIN }, // 192.146.205.0 - 192.146.217.255 { 0xc092da00, 0xc092dbff, REGISTRY_APNIC }, // 192.146.218.0 - 192.146.219.255 { 0xc092dc00, 0xc092e2ff, REGISTRY_ARIN }, // 192.146.220.0 - 192.146.226.255 { 0xc092e300, 0xc092e4ff, REGISTRY_RIPENCC }, // 192.146.227.0 - 192.146.228.255 { 0xc092e500, 0xc092e5ff, REGISTRY_LACNIC }, // 192.146.229.0 - 192.146.229.255 { 0xc092e600, 0xc092e7ff, REGISTRY_ARIN }, // 192.146.230.0 - 192.146.231.255 { 0xc092e900, 0xc092eaff, REGISTRY_RIPENCC }, // 192.146.233.0 - 192.146.234.255 { 0xc092eb00, 0xc092ecff, REGISTRY_ARIN }, // 192.146.235.0 - 192.146.236.255 { 0xc092ed00, 0xc092edff, REGISTRY_LACNIC }, // 192.146.237.0 - 192.146.237.255 { 0xc092ee00, 0xc092efff, REGISTRY_RIPENCC }, // 192.146.238.0 - 192.146.239.255 { 0xc092f000, 0xc092f1ff, REGISTRY_ARIN }, // 192.146.240.0 - 192.146.241.255 { 0xc092f200, 0xc092f2ff, REGISTRY_RIPENCC }, // 192.146.242.0 - 192.146.242.255 { 0xc092f300, 0xc092faff, REGISTRY_ARIN }, // 192.146.243.0 - 192.146.250.255 { 0xc092fb00, 0xc092fdff, REGISTRY_APNIC }, // 192.146.251.0 - 192.146.253.255 { 0xc092fe00, 0xc0930aff, REGISTRY_ARIN }, // 192.146.254.0 - 192.147.10.255 { 0xc0930c00, 0xc09316ff, REGISTRY_ARIN }, // 192.147.12.0 - 192.147.22.255 { 0xc0931700, 0xc09317ff, REGISTRY_RIPENCC }, // 192.147.23.0 - 192.147.23.255 { 0xc0931800, 0xc09321ff, REGISTRY_ARIN }, // 192.147.24.0 - 192.147.33.255 { 0xc0932200, 0xc09322ff, REGISTRY_RIPENCC }, // 192.147.34.0 - 192.147.34.255 { 0xc0932300, 0xc09323ff, REGISTRY_ARIN }, // 192.147.35.0 - 192.147.35.255 { 0xc0932400, 0xc09324ff, REGISTRY_RIPENCC }, // 192.147.36.0 - 192.147.36.255 { 0xc0932500, 0xc09329ff, REGISTRY_ARIN }, // 192.147.37.0 - 192.147.41.255 { 0xc0932a00, 0xc0932aff, REGISTRY_RIPENCC }, // 192.147.42.0 - 192.147.42.255 { 0xc0932b00, 0xc0934bff, REGISTRY_ARIN }, // 192.147.43.0 - 192.147.75.255 { 0xc0934c00, 0xc0934fff, REGISTRY_RIPENCC }, // 192.147.76.0 - 192.147.79.255 { 0xc0935000, 0xc09371ff, REGISTRY_ARIN }, // 192.147.80.0 - 192.147.113.255 { 0xc0937300, 0xc0938cff, REGISTRY_ARIN }, // 192.147.115.0 - 192.147.140.255 { 0xc0938d00, 0xc0938dff, REGISTRY_RIPENCC }, // 192.147.141.0 - 192.147.141.255 { 0xc0938e00, 0xc09395ff, REGISTRY_ARIN }, // 192.147.142.0 - 192.147.149.255 { 0xc0939600, 0xc09396ff, REGISTRY_RIPENCC }, // 192.147.150.0 - 192.147.150.255 { 0xc0939a00, 0xc0939aff, REGISTRY_ARIN }, // 192.147.154.0 - 192.147.154.255 { 0xc0939b00, 0xc0939bff, REGISTRY_RIPENCC }, // 192.147.155.0 - 192.147.155.255 { 0xc0939c00, 0xc093d1ff, REGISTRY_ARIN }, // 192.147.156.0 - 192.147.209.255 { 0xc093d200, 0xc093d2ff, REGISTRY_LACNIC }, // 192.147.210.0 - 192.147.210.255 { 0xc093d300, 0xc093d3ff, REGISTRY_ARIN }, // 192.147.211.0 - 192.147.211.255 { 0xc093d400, 0xc093d4ff, REGISTRY_RIPENCC }, // 192.147.212.0 - 192.147.212.255 { 0xc093d500, 0xc093d6ff, REGISTRY_ARIN }, // 192.147.213.0 - 192.147.214.255 { 0xc093d700, 0xc093d9ff, REGISTRY_RIPENCC }, // 192.147.215.0 - 192.147.217.255 { 0xc093da00, 0xc093daff, REGISTRY_LACNIC }, // 192.147.218.0 - 192.147.218.255 { 0xc093db00, 0xc093dbff, REGISTRY_RIPENCC }, // 192.147.219.0 - 192.147.219.255 { 0xc093dc00, 0xc093e3ff, REGISTRY_ARIN }, // 192.147.220.0 - 192.147.227.255 { 0xc093e400, 0xc093e4ff, REGISTRY_RIPENCC }, // 192.147.228.0 - 192.147.228.255 { 0xc093e500, 0xc093eaff, REGISTRY_ARIN }, // 192.147.229.0 - 192.147.234.255 { 0xc093eb00, 0xc093ebff, REGISTRY_APNIC }, // 192.147.235.0 - 192.147.235.255 { 0xc093ec00, 0xc093f5ff, REGISTRY_ARIN }, // 192.147.236.0 - 192.147.245.255 { 0xc093f600, 0xc093f6ff, REGISTRY_APNIC }, // 192.147.246.0 - 192.147.246.255 { 0xc093f700, 0xc093f7ff, REGISTRY_RIPENCC }, // 192.147.247.0 - 192.147.247.255 { 0xc093f800, 0xc093faff, REGISTRY_ARIN }, // 192.147.248.0 - 192.147.250.255 { 0xc093fb00, 0xc093fbff, REGISTRY_RIPENCC }, // 192.147.251.0 - 192.147.251.255 { 0xc093fc00, 0xc093fcff, REGISTRY_ARIN }, // 192.147.252.0 - 192.147.252.255 { 0xc093fe00, 0xc09420ff, REGISTRY_ARIN }, // 192.147.254.0 - 192.148.32.255 { 0xc0942100, 0xc0945cff, REGISTRY_RIPENCC }, // 192.148.33.0 - 192.148.92.255 { 0xc0945d00, 0xc09466ff, REGISTRY_ARIN }, // 192.148.93.0 - 192.148.102.255 { 0xc0946700, 0xc09467ff, REGISTRY_RIPENCC }, // 192.148.103.0 - 192.148.103.255 { 0xc0946800, 0xc09473ff, REGISTRY_ARIN }, // 192.148.104.0 - 192.148.115.255 { 0xc0947400, 0xc094a5ff, REGISTRY_APNIC }, // 192.148.116.0 - 192.148.165.255 { 0xc094a600, 0xc094a6ff, REGISTRY_RIPENCC }, // 192.148.166.0 - 192.148.166.255 { 0xc094a700, 0xc094a7ff, REGISTRY_RIPENCC }, // 192.148.167.0 - 192.148.167.255 { 0xc094a800, 0xc094aeff, REGISTRY_ARIN }, // 192.148.168.0 - 192.148.174.255 { 0xc094af00, 0xc094afff, REGISTRY_LACNIC }, // 192.148.175.0 - 192.148.175.255 { 0xc094b000, 0xc094b0ff, REGISTRY_ARIN }, // 192.148.176.0 - 192.148.176.255 { 0xc094b100, 0xc094baff, REGISTRY_RIPENCC }, // 192.148.177.0 - 192.148.186.255 { 0xc094bb00, 0xc094bfff, REGISTRY_ARIN }, // 192.148.187.0 - 192.148.191.255 { 0xc094c000, 0xc094c2ff, REGISTRY_RIPENCC }, // 192.148.192.0 - 192.148.194.255 { 0xc094c300, 0xc094c5ff, REGISTRY_ARIN }, // 192.148.195.0 - 192.148.197.255 { 0xc094c600, 0xc094cfff, REGISTRY_RIPENCC }, // 192.148.198.0 - 192.148.207.255 { 0xc094d000, 0xc094d7ff, REGISTRY_RIPENCC }, // 192.148.208.0 - 192.148.215.255 { 0xc094d800, 0xc094d8ff, REGISTRY_RIPENCC }, // 192.148.216.0 - 192.148.216.255 { 0xc094d900, 0xc094dbff, REGISTRY_ARIN }, // 192.148.217.0 - 192.148.219.255 { 0xc094dc00, 0xc094dcff, REGISTRY_RIPENCC }, // 192.148.220.0 - 192.148.220.255 { 0xc094dd00, 0xc094ddff, REGISTRY_APNIC }, // 192.148.221.0 - 192.148.221.255 { 0xc094de00, 0xc094deff, REGISTRY_ARIN }, // 192.148.222.0 - 192.148.222.255 { 0xc094df00, 0xc094e6ff, REGISTRY_APNIC }, // 192.148.223.0 - 192.148.230.255 { 0xc094e700, 0xc09502ff, REGISTRY_ARIN }, // 192.148.231.0 - 192.149.2.255 { 0xc0950300, 0xc09503ff, REGISTRY_RIPENCC }, // 192.149.3.0 - 192.149.3.255 { 0xc0950400, 0xc09504ff, REGISTRY_ARIN }, // 192.149.4.0 - 192.149.4.255 { 0xc0950500, 0xc09505ff, REGISTRY_RIPENCC }, // 192.149.5.0 - 192.149.5.255 { 0xc0950600, 0xc0950eff, REGISTRY_ARIN }, // 192.149.6.0 - 192.149.14.255 { 0xc0950f00, 0xc0950fff, REGISTRY_RIPENCC }, // 192.149.15.0 - 192.149.15.255 { 0xc0951000, 0xc09512ff, REGISTRY_ARIN }, // 192.149.16.0 - 192.149.18.255 { 0xc0951300, 0xc09513ff, REGISTRY_RIPENCC }, // 192.149.19.0 - 192.149.19.255 { 0xc0951400, 0xc09514ff, REGISTRY_APNIC }, // 192.149.20.0 - 192.149.20.255 { 0xc0951500, 0xc0951aff, REGISTRY_ARIN }, // 192.149.21.0 - 192.149.26.255 { 0xc0951b00, 0xc0951bff, REGISTRY_RIPENCC }, // 192.149.27.0 - 192.149.27.255 { 0xc0951c00, 0xc0951cff, REGISTRY_ARIN }, // 192.149.28.0 - 192.149.28.255 { 0xc0951d00, 0xc09521ff, REGISTRY_RIPENCC }, // 192.149.29.0 - 192.149.33.255 { 0xc0952200, 0xc09522ff, REGISTRY_ARIN }, // 192.149.34.0 - 192.149.34.255 { 0xc0952300, 0xc09523ff, REGISTRY_RIPENCC }, // 192.149.35.0 - 192.149.35.255 { 0xc0952400, 0xc09524ff, REGISTRY_APNIC }, // 192.149.36.0 - 192.149.36.255 { 0xc0952500, 0xc09528ff, REGISTRY_ARIN }, // 192.149.37.0 - 192.149.40.255 { 0xc0952900, 0xc09529ff, REGISTRY_RIPENCC }, // 192.149.41.0 - 192.149.41.255 { 0xc0952a00, 0xc09535ff, REGISTRY_ARIN }, // 192.149.42.0 - 192.149.53.255 { 0xc0953600, 0xc09536ff, REGISTRY_APNIC }, // 192.149.54.0 - 192.149.54.255 { 0xc0953700, 0xc09538ff, REGISTRY_ARIN }, // 192.149.55.0 - 192.149.56.255 { 0xc0953900, 0xc09539ff, REGISTRY_RIPENCC }, // 192.149.57.0 - 192.149.57.255 { 0xc0953a00, 0xc0953aff, REGISTRY_ARIN }, // 192.149.58.0 - 192.149.58.255 { 0xc0953b00, 0xc0953cff, REGISTRY_RIPENCC }, // 192.149.59.0 - 192.149.60.255 { 0xc0953d00, 0xc0954cff, REGISTRY_ARIN }, // 192.149.61.0 - 192.149.76.255 { 0xc0954d00, 0xc0954fff, REGISTRY_RIPENCC }, // 192.149.77.0 - 192.149.79.255 { 0xc0955000, 0xc09561ff, REGISTRY_ARIN }, // 192.149.80.0 - 192.149.97.255 { 0xc0956200, 0xc09562ff, REGISTRY_RIPENCC }, // 192.149.98.0 - 192.149.98.255 { 0xc0956300, 0xc09563ff, REGISTRY_ARIN }, // 192.149.99.0 - 192.149.99.255 { 0xc0956400, 0xc09564ff, REGISTRY_RIPENCC }, // 192.149.100.0 - 192.149.100.255 { 0xc0956500, 0xc09565ff, REGISTRY_ARIN }, // 192.149.101.0 - 192.149.101.255 { 0xc0956600, 0xc09566ff, REGISTRY_RIPENCC }, // 192.149.102.0 - 192.149.102.255 { 0xc0956700, 0xc0956dff, REGISTRY_ARIN }, // 192.149.103.0 - 192.149.109.255 { 0xc0956e00, 0xc0956fff, REGISTRY_RIPENCC }, // 192.149.110.0 - 192.149.111.255 { 0xc0957000, 0xc09574ff, REGISTRY_ARIN }, // 192.149.112.0 - 192.149.116.255 { 0xc0957500, 0xc09579ff, REGISTRY_RIPENCC }, // 192.149.117.0 - 192.149.121.255 { 0xc0957a00, 0xc0957dff, REGISTRY_ARIN }, // 192.149.122.0 - 192.149.125.255 { 0xc0957e00, 0xc0957eff, REGISTRY_RIPENCC }, // 192.149.126.0 - 192.149.126.255 { 0xc0957f00, 0xc09594ff, REGISTRY_ARIN }, // 192.149.127.0 - 192.149.148.255 { 0xc0959600, 0xc095d0ff, REGISTRY_ARIN }, // 192.149.150.0 - 192.149.208.255 { 0xc095d100, 0xc095d1ff, REGISTRY_APNIC }, // 192.149.209.0 - 192.149.209.255 { 0xc095d200, 0xc095e2ff, REGISTRY_ARIN }, // 192.149.210.0 - 192.149.226.255 { 0xc095e300, 0xc095e3ff, REGISTRY_RIPENCC }, // 192.149.227.0 - 192.149.227.255 { 0xc095e400, 0xc095e7ff, REGISTRY_ARIN }, // 192.149.228.0 - 192.149.231.255 { 0xc095e800, 0xc095e8ff, REGISTRY_RIPENCC }, // 192.149.232.0 - 192.149.232.255 { 0xc095e900, 0xc095edff, REGISTRY_ARIN }, // 192.149.233.0 - 192.149.237.255 { 0xc095ee00, 0xc095eeff, REGISTRY_RIPENCC }, // 192.149.238.0 - 192.149.238.255 { 0xc095f000, 0xc09639ff, REGISTRY_ARIN }, // 192.149.240.0 - 192.150.57.255 { 0xc0963a00, 0xc09645ff, REGISTRY_RIPENCC }, // 192.150.58.0 - 192.150.69.255 { 0xc0964600, 0xc09648ff, REGISTRY_RIPENCC }, // 192.150.70.0 - 192.150.72.255 { 0xc0964900, 0xc0964aff, REGISTRY_ARIN }, // 192.150.73.0 - 192.150.74.255 { 0xc0964b00, 0xc0964cff, REGISTRY_RIPENCC }, // 192.150.75.0 - 192.150.76.255 { 0xc0964d00, 0xc0964dff, REGISTRY_ARIN }, // 192.150.77.0 - 192.150.77.255 { 0xc0964e00, 0xc09652ff, REGISTRY_RIPENCC }, // 192.150.78.0 - 192.150.82.255 { 0xc0965300, 0xc09653ff, REGISTRY_RIPENCC }, // 192.150.83.0 - 192.150.83.255 { 0xc0965400, 0xc09654ff, REGISTRY_RIPENCC }, // 192.150.84.0 - 192.150.84.255 { 0xc0965500, 0xc09658ff, REGISTRY_ARIN }, // 192.150.85.0 - 192.150.88.255 { 0xc0965900, 0xc09659ff, REGISTRY_RIPENCC }, // 192.150.89.0 - 192.150.89.255 { 0xc0965a00, 0xc0965bff, REGISTRY_ARIN }, // 192.150.90.0 - 192.150.91.255 { 0xc0965c00, 0xc0965cff, REGISTRY_RIPENCC }, // 192.150.92.0 - 192.150.92.255 { 0xc0965d00, 0xc0965dff, REGISTRY_ARIN }, // 192.150.93.0 - 192.150.93.255 { 0xc0965e00, 0xc0965eff, REGISTRY_RIPENCC }, // 192.150.94.0 - 192.150.94.255 { 0xc0965f00, 0xc0965fff, REGISTRY_ARIN }, // 192.150.95.0 - 192.150.95.255 { 0xc0966100, 0xc09667ff, REGISTRY_ARIN }, // 192.150.97.0 - 192.150.103.255 { 0xc0966800, 0xc09668ff, REGISTRY_RIPENCC }, // 192.150.104.0 - 192.150.104.255 { 0xc0966900, 0xc09669ff, REGISTRY_ARIN }, // 192.150.105.0 - 192.150.105.255 { 0xc0966a00, 0xc0966aff, REGISTRY_RIPENCC }, // 192.150.106.0 - 192.150.106.255 { 0xc0966c00, 0xc0967bff, REGISTRY_ARIN }, // 192.150.108.0 - 192.150.123.255 { 0xc0967c00, 0xc0967cff, REGISTRY_RIPENCC }, // 192.150.124.0 - 192.150.124.255 { 0xc0967d00, 0xc0967dff, REGISTRY_ARIN }, // 192.150.125.0 - 192.150.125.255 { 0xc0967e00, 0xc0967eff, REGISTRY_LACNIC }, // 192.150.126.0 - 192.150.126.255 { 0xc0967f00, 0xc09680ff, REGISTRY_ARIN }, // 192.150.127.0 - 192.150.128.255 { 0xc0968100, 0xc09687ff, REGISTRY_APNIC }, // 192.150.129.0 - 192.150.135.255 { 0xc0968900, 0xc0968bff, REGISTRY_APNIC }, // 192.150.137.0 - 192.150.139.255 { 0xc0968c00, 0xc0968cff, REGISTRY_RIPENCC }, // 192.150.140.0 - 192.150.140.255 { 0xc0968d00, 0xc0968fff, REGISTRY_ARIN }, // 192.150.141.0 - 192.150.143.255 { 0xc0969100, 0xc09691ff, REGISTRY_ARIN }, // 192.150.145.0 - 192.150.145.255 { 0xc0969200, 0xc09692ff, REGISTRY_RIPENCC }, // 192.150.146.0 - 192.150.146.255 { 0xc0969300, 0xc096b0ff, REGISTRY_ARIN }, // 192.150.147.0 - 192.150.176.255 { 0xc096b100, 0xc096b8ff, REGISTRY_RIPENCC }, // 192.150.177.0 - 192.150.184.255 { 0xc096b900, 0xc096bbff, REGISTRY_ARIN }, // 192.150.185.0 - 192.150.187.255 { 0xc096bc00, 0xc096beff, REGISTRY_RIPENCC }, // 192.150.188.0 - 192.150.190.255 { 0xc096bf00, 0xc096bfff, REGISTRY_ARIN }, // 192.150.191.0 - 192.150.191.255 { 0xc096c000, 0xc096c6ff, REGISTRY_RIPENCC }, // 192.150.192.0 - 192.150.198.255 { 0xc096c700, 0xc096c7ff, REGISTRY_ARIN }, // 192.150.199.0 - 192.150.199.255 { 0xc096c900, 0xc096c9ff, REGISTRY_ARIN }, // 192.150.201.0 - 192.150.201.255 { 0xc096ca00, 0xc096caff, REGISTRY_APNIC }, // 192.150.202.0 - 192.150.202.255 { 0xc096cb00, 0xc096cdff, REGISTRY_RIPENCC }, // 192.150.203.0 - 192.150.205.255 { 0xc096ce00, 0xc096cfff, REGISTRY_ARIN }, // 192.150.206.0 - 192.150.207.255 { 0xc096d000, 0xc096d1ff, REGISTRY_RIPENCC }, // 192.150.208.0 - 192.150.209.255 { 0xc096d200, 0xc096d9ff, REGISTRY_ARIN }, // 192.150.210.0 - 192.150.217.255 { 0xc096da00, 0xc096dbff, REGISTRY_APNIC }, // 192.150.218.0 - 192.150.219.255 { 0xc096dd00, 0xc096deff, REGISTRY_ARIN }, // 192.150.221.0 - 192.150.222.255 { 0xc096df00, 0xc096dfff, REGISTRY_RIPENCC }, // 192.150.223.0 - 192.150.223.255 { 0xc096e000, 0xc096e2ff, REGISTRY_ARIN }, // 192.150.224.0 - 192.150.226.255 { 0xc096e300, 0xc096e9ff, REGISTRY_RIPENCC }, // 192.150.227.0 - 192.150.233.255 { 0xc096ea00, 0xc096edff, REGISTRY_APNIC }, // 192.150.234.0 - 192.150.237.255 { 0xc096ee00, 0xc096eeff, REGISTRY_RIPENCC }, // 192.150.238.0 - 192.150.238.255 { 0xc096ef00, 0xc096f5ff, REGISTRY_ARIN }, // 192.150.239.0 - 192.150.245.255 { 0xc096f600, 0xc096f6ff, REGISTRY_APNIC }, // 192.150.246.0 - 192.150.246.255 { 0xc096f700, 0xc096f7ff, REGISTRY_ARIN }, // 192.150.247.0 - 192.150.247.255 { 0xc096f800, 0xc096f8ff, REGISTRY_RIPENCC }, // 192.150.248.0 - 192.150.248.255 { 0xc096f900, 0xc096fbff, REGISTRY_APNIC }, // 192.150.249.0 - 192.150.251.255 { 0xc096fc00, 0xc096fcff, REGISTRY_RIPENCC }, // 192.150.252.0 - 192.150.252.255 { 0xc096fd00, 0xc096fdff, REGISTRY_ARIN }, // 192.150.253.0 - 192.150.253.255 { 0xc096fe00, 0xc096feff, REGISTRY_RIPENCC }, // 192.150.254.0 - 192.150.254.255 { 0xc096ff00, 0xc09780ff, REGISTRY_ARIN }, // 192.150.255.0 - 192.151.128.255 { 0xc0978200, 0xc09805ff, REGISTRY_ARIN }, // 192.151.130.0 - 192.152.5.255 { 0xc0980600, 0xc09806ff, REGISTRY_RIPENCC }, // 192.152.6.0 - 192.152.6.255 { 0xc0980700, 0xc0980dff, REGISTRY_ARIN }, // 192.152.7.0 - 192.152.13.255 { 0xc0980e00, 0xc0980eff, REGISTRY_RIPENCC }, // 192.152.14.0 - 192.152.14.255 { 0xc0980f00, 0xc09810ff, REGISTRY_ARIN }, // 192.152.15.0 - 192.152.16.255 { 0xc0981100, 0xc09811ff, REGISTRY_RIPENCC }, // 192.152.17.0 - 192.152.17.255 { 0xc0981200, 0xc09819ff, REGISTRY_ARIN }, // 192.152.18.0 - 192.152.25.255 { 0xc0981a00, 0xc0981bff, REGISTRY_RIPENCC }, // 192.152.26.0 - 192.152.27.255 { 0xc0981c00, 0xc09829ff, REGISTRY_ARIN }, // 192.152.28.0 - 192.152.41.255 { 0xc0982a00, 0xc0982aff, REGISTRY_RIPENCC }, // 192.152.42.0 - 192.152.42.255 { 0xc0982b00, 0xc0982bff, REGISTRY_ARIN }, // 192.152.43.0 - 192.152.43.255 { 0xc0982c00, 0xc0982cff, REGISTRY_RIPENCC }, // 192.152.44.0 - 192.152.44.255 { 0xc0982d00, 0xc0982eff, REGISTRY_ARIN }, // 192.152.45.0 - 192.152.46.255 { 0xc0982f00, 0xc09833ff, REGISTRY_RIPENCC }, // 192.152.47.0 - 192.152.51.255 { 0xc0983400, 0xc09835ff, REGISTRY_ARIN }, // 192.152.52.0 - 192.152.53.255 { 0xc0983600, 0xc09836ff, REGISTRY_RIPENCC }, // 192.152.54.0 - 192.152.54.255 { 0xc0983700, 0xc0983cff, REGISTRY_ARIN }, // 192.152.55.0 - 192.152.60.255 { 0xc0983d00, 0xc0983fff, REGISTRY_RIPENCC }, // 192.152.61.0 - 192.152.63.255 { 0xc0984000, 0xc09843ff, REGISTRY_ARIN }, // 192.152.64.0 - 192.152.67.255 { 0xc0984400, 0xc09844ff, REGISTRY_RIPENCC }, // 192.152.68.0 - 192.152.68.255 { 0xc0984500, 0xc09845ff, REGISTRY_APNIC }, // 192.152.69.0 - 192.152.69.255 { 0xc0984600, 0xc09851ff, REGISTRY_ARIN }, // 192.152.70.0 - 192.152.81.255 { 0xc0985200, 0xc09852ff, REGISTRY_RIPENCC }, // 192.152.82.0 - 192.152.82.255 { 0xc0985300, 0xc09855ff, REGISTRY_ARIN }, // 192.152.83.0 - 192.152.85.255 { 0xc0985800, 0xc09861ff, REGISTRY_ARIN }, // 192.152.88.0 - 192.152.97.255 { 0xc0986200, 0xc09862ff, REGISTRY_RIPENCC }, // 192.152.98.0 - 192.152.98.255 { 0xc0986300, 0xc0986eff, REGISTRY_ARIN }, // 192.152.99.0 - 192.152.110.255 { 0xc0986f00, 0xc09870ff, REGISTRY_RIPENCC }, // 192.152.111.0 - 192.152.112.255 { 0xc0987100, 0xc09876ff, REGISTRY_ARIN }, // 192.152.113.0 - 192.152.118.255 { 0xc0987700, 0xc09877ff, REGISTRY_APNIC }, // 192.152.119.0 - 192.152.119.255 { 0xc0987800, 0xc09879ff, REGISTRY_ARIN }, // 192.152.120.0 - 192.152.121.255 { 0xc0987a00, 0xc0987aff, REGISTRY_RIPENCC }, // 192.152.122.0 - 192.152.122.255 { 0xc0987b00, 0xc0987bff, REGISTRY_ARIN }, // 192.152.123.0 - 192.152.123.255 { 0xc0987c00, 0xc0987cff, REGISTRY_RIPENCC }, // 192.152.124.0 - 192.152.124.255 { 0xc0987d00, 0xc0988cff, REGISTRY_ARIN }, // 192.152.125.0 - 192.152.140.255 { 0xc0988d00, 0xc0988dff, REGISTRY_RIPENCC }, // 192.152.141.0 - 192.152.141.255 { 0xc0988e00, 0xc0988fff, REGISTRY_ARIN }, // 192.152.142.0 - 192.152.143.255 { 0xc0989100, 0xc09891ff, REGISTRY_ARIN }, // 192.152.145.0 - 192.152.145.255 { 0xc0989300, 0xc09896ff, REGISTRY_ARIN }, // 192.152.147.0 - 192.152.150.255 { 0xc0989700, 0xc09897ff, REGISTRY_RIPENCC }, // 192.152.151.0 - 192.152.151.255 { 0xc0989800, 0xc0989bff, REGISTRY_ARIN }, // 192.152.152.0 - 192.152.155.255 { 0xc0989c00, 0xc0989cff, REGISTRY_RIPENCC }, // 192.152.156.0 - 192.152.156.255 { 0xc0989d00, 0xc098a5ff, REGISTRY_ARIN }, // 192.152.157.0 - 192.152.165.255 { 0xc098a600, 0xc098a7ff, REGISTRY_RIPENCC }, // 192.152.166.0 - 192.152.167.255 { 0xc098a800, 0xc098adff, REGISTRY_ARIN }, // 192.152.168.0 - 192.152.173.255 { 0xc098ae00, 0xc098aeff, REGISTRY_RIPENCC }, // 192.152.174.0 - 192.152.174.255 { 0xc098af00, 0xc098b7ff, REGISTRY_ARIN }, // 192.152.175.0 - 192.152.183.255 { 0xc098b800, 0xc098bbff, REGISTRY_RIPENCC }, // 192.152.184.0 - 192.152.187.255 { 0xc098bc00, 0xc098c4ff, REGISTRY_ARIN }, // 192.152.188.0 - 192.152.196.255 { 0xc098c600, 0xc098d3ff, REGISTRY_ARIN }, // 192.152.198.0 - 192.152.211.255 { 0xc098d400, 0xc098d4ff, REGISTRY_APNIC }, // 192.152.212.0 - 192.152.212.255 { 0xc098d500, 0xc098f0ff, REGISTRY_ARIN }, // 192.152.213.0 - 192.152.240.255 { 0xc098f100, 0xc098f1ff, REGISTRY_RIPENCC }, // 192.152.241.0 - 192.152.241.255 { 0xc098f200, 0xc098f3ff, REGISTRY_ARIN }, // 192.152.242.0 - 192.152.243.255 { 0xc098f400, 0xc098f4ff, REGISTRY_RIPENCC }, // 192.152.244.0 - 192.152.244.255 { 0xc098f500, 0xc098fcff, REGISTRY_ARIN }, // 192.152.245.0 - 192.152.252.255 { 0xc098fd00, 0xc098feff, REGISTRY_RIPENCC }, // 192.152.253.0 - 192.152.254.255 { 0xc098ff00, 0xc09901ff, REGISTRY_ARIN }, // 192.152.255.0 - 192.153.1.255 { 0xc0990200, 0xc09903ff, REGISTRY_RIPENCC }, // 192.153.2.0 - 192.153.3.255 { 0xc0990400, 0xc09908ff, REGISTRY_ARIN }, // 192.153.4.0 - 192.153.8.255 { 0xc0990a00, 0xc0990bff, REGISTRY_ARIN }, // 192.153.10.0 - 192.153.11.255 { 0xc0990d00, 0xc0990dff, REGISTRY_RIPENCC }, // 192.153.13.0 - 192.153.13.255 { 0xc0990e00, 0xc09911ff, REGISTRY_ARIN }, // 192.153.14.0 - 192.153.17.255 { 0xc0991200, 0xc09913ff, REGISTRY_RIPENCC }, // 192.153.18.0 - 192.153.19.255 { 0xc0991400, 0xc09957ff, REGISTRY_ARIN }, // 192.153.20.0 - 192.153.87.255 { 0xc0995800, 0xc09958ff, REGISTRY_LACNIC }, // 192.153.88.0 - 192.153.88.255 { 0xc0995900, 0xc09959ff, REGISTRY_RIPENCC }, // 192.153.89.0 - 192.153.89.255 { 0xc0995a00, 0xc0995cff, REGISTRY_ARIN }, // 192.153.90.0 - 192.153.92.255 { 0xc0995d00, 0xc0995dff, REGISTRY_APNIC }, // 192.153.93.0 - 192.153.93.255 { 0xc0995e00, 0xc0995eff, REGISTRY_ARIN }, // 192.153.94.0 - 192.153.94.255 { 0xc0995f00, 0xc09972ff, REGISTRY_APNIC }, // 192.153.95.0 - 192.153.114.255 { 0xc0997300, 0xc09973ff, REGISTRY_ARIN }, // 192.153.115.0 - 192.153.115.255 { 0xc0997400, 0xc09974ff, REGISTRY_RIPENCC }, // 192.153.116.0 - 192.153.116.255 { 0xc0997500, 0xc09976ff, REGISTRY_ARIN }, // 192.153.117.0 - 192.153.118.255 { 0xc0997700, 0xc09978ff, REGISTRY_LACNIC }, // 192.153.119.0 - 192.153.120.255 { 0xc0997900, 0xc0997eff, REGISTRY_ARIN }, // 192.153.121.0 - 192.153.126.255 { 0xc0997f00, 0xc0997fff, REGISTRY_RIPENCC }, // 192.153.127.0 - 192.153.127.255 { 0xc0998000, 0xc09998ff, REGISTRY_ARIN }, // 192.153.128.0 - 192.153.152.255 { 0xc0999900, 0xc09999ff, REGISTRY_RIPENCC }, // 192.153.153.0 - 192.153.153.255 { 0xc0999a00, 0xc0999aff, REGISTRY_ARIN }, // 192.153.154.0 - 192.153.154.255 { 0xc0999b00, 0xc0999bff, REGISTRY_LACNIC }, // 192.153.155.0 - 192.153.155.255 { 0xc0999c00, 0xc0999dff, REGISTRY_ARIN }, // 192.153.156.0 - 192.153.157.255 { 0xc0999e00, 0xc0999eff, REGISTRY_APNIC }, // 192.153.158.0 - 192.153.158.255 { 0xc0999f00, 0xc099a5ff, REGISTRY_ARIN }, // 192.153.159.0 - 192.153.165.255 { 0xc099a600, 0xc099a6ff, REGISTRY_RIPENCC }, // 192.153.166.0 - 192.153.166.255 { 0xc099a700, 0xc099a7ff, REGISTRY_LACNIC }, // 192.153.167.0 - 192.153.167.255 { 0xc099a800, 0xc099a8ff, REGISTRY_RIPENCC }, // 192.153.168.0 - 192.153.168.255 { 0xc099a900, 0xc099aaff, REGISTRY_ARIN }, // 192.153.169.0 - 192.153.170.255 { 0xc099ab00, 0xc099abff, REGISTRY_RIPENCC }, // 192.153.171.0 - 192.153.171.255 { 0xc099ac00, 0xc099acff, REGISTRY_ARIN }, // 192.153.172.0 - 192.153.172.255 { 0xc099ad00, 0xc099b6ff, REGISTRY_RIPENCC }, // 192.153.173.0 - 192.153.182.255 { 0xc099b700, 0xc099bbff, REGISTRY_ARIN }, // 192.153.183.0 - 192.153.187.255 { 0xc099bc00, 0xc099bdff, REGISTRY_RIPENCC }, // 192.153.188.0 - 192.153.189.255 { 0xc099be00, 0xc099c1ff, REGISTRY_ARIN }, // 192.153.190.0 - 192.153.193.255 { 0xc099c200, 0xc099c2ff, REGISTRY_RIPENCC }, // 192.153.194.0 - 192.153.194.255 { 0xc099c300, 0xc099c3ff, REGISTRY_ARIN }, // 192.153.195.0 - 192.153.195.255 { 0xc099c400, 0xc099c5ff, REGISTRY_APNIC }, // 192.153.196.0 - 192.153.197.255 { 0xc099c600, 0xc099d4ff, REGISTRY_ARIN }, // 192.153.198.0 - 192.153.212.255 { 0xc099d500, 0xc099d5ff, REGISTRY_RIPENCC }, // 192.153.213.0 - 192.153.213.255 { 0xc099d600, 0xc099dcff, REGISTRY_ARIN }, // 192.153.214.0 - 192.153.220.255 { 0xc099e500, 0xc099faff, REGISTRY_ARIN }, // 192.153.229.0 - 192.153.250.255 { 0xc099fb00, 0xc099fbff, REGISTRY_APNIC }, // 192.153.251.0 - 192.153.251.255 { 0xc099fc00, 0xc09a0fff, REGISTRY_ARIN }, // 192.153.252.0 - 192.154.15.255 { 0xc09a1000, 0xc09a19ff, REGISTRY_APNIC }, // 192.154.16.0 - 192.154.25.255 { 0xc09a1a00, 0xc09b00ff, REGISTRY_ARIN }, // 192.154.26.0 - 192.155.0.255 { 0xc09b0100, 0xc09b06ff, REGISTRY_RIPENCC }, // 192.155.1.0 - 192.155.6.255 { 0xc09b0700, 0xc09c83ff, REGISTRY_ARIN }, // 192.155.7.0 - 192.156.131.255 { 0xc09c8400, 0xc09c84ff, REGISTRY_RIPENCC }, // 192.156.132.0 - 192.156.132.255 { 0xc09c8500, 0xc09c8bff, REGISTRY_ARIN }, // 192.156.133.0 - 192.156.139.255 { 0xc09c8c00, 0xc09c8dff, REGISTRY_APNIC }, // 192.156.140.0 - 192.156.141.255 { 0xc09c8f00, 0xc09c8fff, REGISTRY_APNIC }, // 192.156.143.0 - 192.156.143.255 { 0xc09c9100, 0xc09c97ff, REGISTRY_APNIC }, // 192.156.145.0 - 192.156.151.255 { 0xc09c9a00, 0xc09c9aff, REGISTRY_APNIC }, // 192.156.154.0 - 192.156.154.255 { 0xc09c9d00, 0xc09c9dff, REGISTRY_ARIN }, // 192.156.157.0 - 192.156.157.255 { 0xc09c9e00, 0xc09c9fff, REGISTRY_APNIC }, // 192.156.158.0 - 192.156.159.255 { 0xc09ca000, 0xc09ca1ff, REGISTRY_ARIN }, // 192.156.160.0 - 192.156.161.255 { 0xc09ca200, 0xc09ca2ff, REGISTRY_RIPENCC }, // 192.156.162.0 - 192.156.162.255 { 0xc09ca300, 0xc09ca4ff, REGISTRY_ARIN }, // 192.156.163.0 - 192.156.164.255 { 0xc09ca500, 0xc09ca5ff, REGISTRY_APNIC }, // 192.156.165.0 - 192.156.165.255 { 0xc09ca600, 0xc09ca6ff, REGISTRY_ARIN }, // 192.156.166.0 - 192.156.166.255 { 0xc09ca700, 0xc09ca7ff, REGISTRY_RIPENCC }, // 192.156.167.0 - 192.156.167.255 { 0xc09ca800, 0xc09cc9ff, REGISTRY_ARIN }, // 192.156.168.0 - 192.156.201.255 { 0xc09ccb00, 0xc09cceff, REGISTRY_ARIN }, // 192.156.203.0 - 192.156.206.255 { 0xc09ccf00, 0xc09ccfff, REGISTRY_APNIC }, // 192.156.207.0 - 192.156.207.255 { 0xc09cd100, 0xc09cd1ff, REGISTRY_ARIN }, // 192.156.209.0 - 192.156.209.255 { 0xc09cd200, 0xc09cd2ff, REGISTRY_RIPENCC }, // 192.156.210.0 - 192.156.210.255 { 0xc09cd300, 0xc09cd4ff, REGISTRY_ARIN }, // 192.156.211.0 - 192.156.212.255 { 0xc09cd500, 0xc09cd5ff, REGISTRY_RIPENCC }, // 192.156.213.0 - 192.156.213.255 { 0xc09cd600, 0xc09cd8ff, REGISTRY_ARIN }, // 192.156.214.0 - 192.156.216.255 { 0xc09cda00, 0xc09cdbff, REGISTRY_ARIN }, // 192.156.218.0 - 192.156.219.255 { 0xc09cdd00, 0xc09ce0ff, REGISTRY_ARIN }, // 192.156.221.0 - 192.156.224.255 { 0xc09ce100, 0xc09ce1ff, REGISTRY_APNIC }, // 192.156.225.0 - 192.156.225.255 { 0xc09ce200, 0xc09ce2ff, REGISTRY_ARIN }, // 192.156.226.0 - 192.156.226.255 { 0xc09ce300, 0xc09ce3ff, REGISTRY_RIPENCC }, // 192.156.227.0 - 192.156.227.255 { 0xc09ce400, 0xc09ceeff, REGISTRY_ARIN }, // 192.156.228.0 - 192.156.238.255 { 0xc09cef00, 0xc09cefff, REGISTRY_RIPENCC }, // 192.156.239.0 - 192.156.239.255 { 0xc09cf000, 0xc09cf7ff, REGISTRY_ARIN }, // 192.156.240.0 - 192.156.247.255 { 0xc09cf800, 0xc09cf8ff, REGISTRY_RIPENCC }, // 192.156.248.0 - 192.156.248.255 { 0xc09cfa00, 0xc09d00ff, REGISTRY_ARIN }, // 192.156.250.0 - 192.157.0.255 { 0xc09d0100, 0xc09d03ff, REGISTRY_RIPENCC }, // 192.157.1.0 - 192.157.3.255 { 0xc09d0400, 0xc09d07ff, REGISTRY_ARIN }, // 192.157.4.0 - 192.157.7.255 { 0xc09d0800, 0xc09d11ff, REGISTRY_RIPENCC }, // 192.157.8.0 - 192.157.17.255 { 0xc09d1200, 0xc09d80ff, REGISTRY_ARIN }, // 192.157.18.0 - 192.157.128.255 { 0xc09d8100, 0xc09d81ff, REGISTRY_RIPENCC }, // 192.157.129.0 - 192.157.129.255 { 0xc09d8200, 0xc09da1ff, REGISTRY_ARIN }, // 192.157.130.0 - 192.157.161.255 { 0xc09da300, 0xc09da4ff, REGISTRY_ARIN }, // 192.157.163.0 - 192.157.164.255 { 0xc09da500, 0xc09dacff, REGISTRY_RIPENCC }, // 192.157.165.0 - 192.157.172.255 { 0xc09dad00, 0xc09dadff, REGISTRY_ARIN }, // 192.157.173.0 - 192.157.173.255 { 0xc09dae00, 0xc09daeff, REGISTRY_RIPENCC }, // 192.157.174.0 - 192.157.174.255 { 0xc09daf00, 0xc09dafff, REGISTRY_ARIN }, // 192.157.175.0 - 192.157.175.255 { 0xc09db000, 0xc09db0ff, REGISTRY_RIPENCC }, // 192.157.176.0 - 192.157.176.255 { 0xc09db100, 0xc09db8ff, REGISTRY_ARIN }, // 192.157.177.0 - 192.157.184.255 { 0xc09db900, 0xc09db9ff, REGISTRY_RIPENCC }, // 192.157.185.0 - 192.157.185.255 { 0xc09dba00, 0xc09dbaff, REGISTRY_ARIN }, // 192.157.186.0 - 192.157.186.255 { 0xc09dbb00, 0xc09dbbff, REGISTRY_RIPENCC }, // 192.157.187.0 - 192.157.187.255 { 0xc09dbc00, 0xc09dbcff, REGISTRY_ARIN }, // 192.157.188.0 - 192.157.188.255 { 0xc09dbd00, 0xc09dbdff, REGISTRY_RIPENCC }, // 192.157.189.0 - 192.157.189.255 { 0xc09dbe00, 0xc09dbeff, REGISTRY_AFRINIC }, // 192.157.190.0 - 192.157.190.255 { 0xc09dc000, 0xc09f0fff, REGISTRY_ARIN }, // 192.157.192.0 - 192.159.15.255 { 0xc09f1000, 0xc09f1eff, REGISTRY_APNIC }, // 192.159.16.0 - 192.159.30.255 { 0xc09f1f00, 0xc09f45ff, REGISTRY_ARIN }, // 192.159.31.0 - 192.159.69.255 { 0xc09f4600, 0xc09f46ff, REGISTRY_RIPENCC }, // 192.159.70.0 - 192.159.70.255 { 0xc09f4700, 0xc09f48ff, REGISTRY_ARIN }, // 192.159.71.0 - 192.159.72.255 { 0xc09f4900, 0xc09f49ff, REGISTRY_RIPENCC }, // 192.159.73.0 - 192.159.73.255 { 0xc09f4a00, 0xc09f4cff, REGISTRY_ARIN }, // 192.159.74.0 - 192.159.76.255 { 0xc09f4d00, 0xc09f4dff, REGISTRY_RIPENCC }, // 192.159.77.0 - 192.159.77.255 { 0xc09f4e00, 0xc09f53ff, REGISTRY_ARIN }, // 192.159.78.0 - 192.159.83.255 { 0xc09f5400, 0xc09f55ff, REGISTRY_RIPENCC }, // 192.159.84.0 - 192.159.85.255 { 0xc09f5600, 0xc09f59ff, REGISTRY_ARIN }, // 192.159.86.0 - 192.159.89.255 { 0xc09f5a00, 0xc09f5aff, REGISTRY_RIPENCC }, // 192.159.90.0 - 192.159.90.255 { 0xc09f5b00, 0xc09f5eff, REGISTRY_ARIN }, // 192.159.91.0 - 192.159.94.255 { 0xc09f5f00, 0xc09f5fff, REGISTRY_RIPENCC }, // 192.159.95.0 - 192.159.95.255 { 0xc09f6000, 0xc09f62ff, REGISTRY_ARIN }, // 192.159.96.0 - 192.159.98.255 { 0xc09f6300, 0xc09f67ff, REGISTRY_RIPENCC }, // 192.159.99.0 - 192.159.103.255 { 0xc09f6800, 0xc09f68ff, REGISTRY_ARIN }, // 192.159.104.0 - 192.159.104.255 { 0xc09f6900, 0xc09f69ff, REGISTRY_RIPENCC }, // 192.159.105.0 - 192.159.105.255 { 0xc09f6a00, 0xc09f6bff, REGISTRY_ARIN }, // 192.159.106.0 - 192.159.107.255 { 0xc09f6c00, 0xc09f6dff, REGISTRY_RIPENCC }, // 192.159.108.0 - 192.159.109.255 { 0xc09f6e00, 0xc09f73ff, REGISTRY_ARIN }, // 192.159.110.0 - 192.159.115.255 { 0xc09f7400, 0xc09f75ff, REGISTRY_LACNIC }, // 192.159.116.0 - 192.159.117.255 { 0xc09f7600, 0xc09f76ff, REGISTRY_RIPENCC }, // 192.159.118.0 - 192.159.118.255 { 0xc09f7700, 0xc09f78ff, REGISTRY_ARIN }, // 192.159.119.0 - 192.159.120.255 { 0xc09f7900, 0xc09f7aff, REGISTRY_RIPENCC }, // 192.159.121.0 - 192.159.122.255 { 0xc09f7b00, 0xc0a009ff, REGISTRY_ARIN }, // 192.159.123.0 - 192.160.9.255 { 0xc0a00a00, 0xc0a00aff, REGISTRY_RIPENCC }, // 192.160.10.0 - 192.160.10.255 { 0xc0a00b00, 0xc0a00eff, REGISTRY_ARIN }, // 192.160.11.0 - 192.160.14.255 { 0xc0a00f00, 0xc0a00fff, REGISTRY_RIPENCC }, // 192.160.15.0 - 192.160.15.255 { 0xc0a01000, 0xc0a010ff, REGISTRY_APNIC }, // 192.160.16.0 - 192.160.16.255 { 0xc0a01100, 0xc0a012ff, REGISTRY_ARIN }, // 192.160.17.0 - 192.160.18.255 { 0xc0a01300, 0xc0a013ff, REGISTRY_APNIC }, // 192.160.19.0 - 192.160.19.255 { 0xc0a01400, 0xc0a014ff, REGISTRY_ARIN }, // 192.160.20.0 - 192.160.20.255 { 0xc0a01500, 0xc0a017ff, REGISTRY_RIPENCC }, // 192.160.21.0 - 192.160.23.255 { 0xc0a01800, 0xc0a01aff, REGISTRY_ARIN }, // 192.160.24.0 - 192.160.26.255 { 0xc0a01b00, 0xc0a01bff, REGISTRY_RIPENCC }, // 192.160.27.0 - 192.160.27.255 { 0xc0a01c00, 0xc0a01cff, REGISTRY_ARIN }, // 192.160.28.0 - 192.160.28.255 { 0xc0a01e00, 0xc0a020ff, REGISTRY_ARIN }, // 192.160.30.0 - 192.160.32.255 { 0xc0a02100, 0xc0a021ff, REGISTRY_RIPENCC }, // 192.160.33.0 - 192.160.33.255 { 0xc0a02200, 0xc0a024ff, REGISTRY_ARIN }, // 192.160.34.0 - 192.160.36.255 { 0xc0a02500, 0xc0a025ff, REGISTRY_RIPENCC }, // 192.160.37.0 - 192.160.37.255 { 0xc0a02600, 0xc0a02cff, REGISTRY_ARIN }, // 192.160.38.0 - 192.160.44.255 { 0xc0a02d00, 0xc0a02dff, REGISTRY_LACNIC }, // 192.160.45.0 - 192.160.45.255 { 0xc0a02e00, 0xc0a031ff, REGISTRY_ARIN }, // 192.160.46.0 - 192.160.49.255 { 0xc0a03200, 0xc0a032ff, REGISTRY_LACNIC }, // 192.160.50.0 - 192.160.50.255 { 0xc0a03300, 0xc0a040ff, REGISTRY_ARIN }, // 192.160.51.0 - 192.160.64.255 { 0xc0a04100, 0xc0a041ff, REGISTRY_RIPENCC }, // 192.160.65.0 - 192.160.65.255 { 0xc0a04200, 0xc0a042ff, REGISTRY_ARIN }, // 192.160.66.0 - 192.160.66.255 { 0xc0a04300, 0xc0a043ff, REGISTRY_RIPENCC }, // 192.160.67.0 - 192.160.67.255 { 0xc0a04400, 0xc0a046ff, REGISTRY_ARIN }, // 192.160.68.0 - 192.160.70.255 { 0xc0a04700, 0xc0a047ff, REGISTRY_APNIC }, // 192.160.71.0 - 192.160.71.255 { 0xc0a04800, 0xc0a05eff, REGISTRY_ARIN }, // 192.160.72.0 - 192.160.94.255 { 0xc0a05f00, 0xc0a060ff, REGISTRY_RIPENCC }, // 192.160.95.0 - 192.160.96.255 { 0xc0a06100, 0xc0a069ff, REGISTRY_ARIN }, // 192.160.97.0 - 192.160.105.255 { 0xc0a06a00, 0xc0a06aff, REGISTRY_RIPENCC }, // 192.160.106.0 - 192.160.106.255 { 0xc0a06b00, 0xc0a06cff, REGISTRY_ARIN }, // 192.160.107.0 - 192.160.108.255 { 0xc0a06d00, 0xc0a06eff, REGISTRY_RIPENCC }, // 192.160.109.0 - 192.160.110.255 { 0xc0a06f00, 0xc0a06fff, REGISTRY_LACNIC }, // 192.160.111.0 - 192.160.111.255 { 0xc0a07000, 0xc0a07aff, REGISTRY_ARIN }, // 192.160.112.0 - 192.160.122.255 { 0xc0a07b00, 0xc0a07bff, REGISTRY_RIPENCC }, // 192.160.123.0 - 192.160.123.255 { 0xc0a07c00, 0xc0a07dff, REGISTRY_ARIN }, // 192.160.124.0 - 192.160.125.255 { 0xc0a07e00, 0xc0a07eff, REGISTRY_RIPENCC }, // 192.160.126.0 - 192.160.126.255 { 0xc0a07f00, 0xc0a07fff, REGISTRY_ARIN }, // 192.160.127.0 - 192.160.127.255 { 0xc0a08000, 0xc0a080ff, REGISTRY_LACNIC }, // 192.160.128.0 - 192.160.128.255 { 0xc0a08100, 0xc0a08dff, REGISTRY_ARIN }, // 192.160.129.0 - 192.160.141.255 { 0xc0a08e00, 0xc0a08fff, REGISTRY_RIPENCC }, // 192.160.142.0 - 192.160.143.255 { 0xc0a09000, 0xc0a097ff, REGISTRY_ARIN }, // 192.160.144.0 - 192.160.151.255 { 0xc0a09800, 0xc0a098ff, REGISTRY_RIPENCC }, // 192.160.152.0 - 192.160.152.255 { 0xc0a09900, 0xc0a09aff, REGISTRY_ARIN }, // 192.160.153.0 - 192.160.154.255 { 0xc0a09c00, 0xc0a09cff, REGISTRY_RIPENCC }, // 192.160.156.0 - 192.160.156.255 { 0xc0a09d00, 0xc0a09fff, REGISTRY_ARIN }, // 192.160.157.0 - 192.160.159.255 { 0xc0a0a000, 0xc0a0a0ff, REGISTRY_RIPENCC }, // 192.160.160.0 - 192.160.160.255 { 0xc0a0a100, 0xc0a0a1ff, REGISTRY_APNIC }, // 192.160.161.0 - 192.160.161.255 { 0xc0a0a200, 0xc0a0a8ff, REGISTRY_ARIN }, // 192.160.162.0 - 192.160.168.255 { 0xc0a0a900, 0xc0a0abff, REGISTRY_APNIC }, // 192.160.169.0 - 192.160.171.255 { 0xc0a0ac00, 0xc0a0acff, REGISTRY_RIPENCC }, // 192.160.172.0 - 192.160.172.255 { 0xc0a0ad00, 0xc0a0b0ff, REGISTRY_ARIN }, // 192.160.173.0 - 192.160.176.255 { 0xc0a0b100, 0xc0a0b3ff, REGISTRY_RIPENCC }, // 192.160.177.0 - 192.160.179.255 { 0xc0a0b400, 0xc0a0bbff, REGISTRY_ARIN }, // 192.160.180.0 - 192.160.187.255 { 0xc0a0bc00, 0xc0a0bcff, REGISTRY_LACNIC }, // 192.160.188.0 - 192.160.188.255 { 0xc0a0bd00, 0xc0a0c1ff, REGISTRY_ARIN }, // 192.160.189.0 - 192.160.193.255 { 0xc0a0c200, 0xc0a0c3ff, REGISTRY_RIPENCC }, // 192.160.194.0 - 192.160.195.255 { 0xc0a0c400, 0xc0a0ccff, REGISTRY_ARIN }, // 192.160.196.0 - 192.160.204.255 { 0xc0a0cd00, 0xc0a0cdff, REGISTRY_APNIC }, // 192.160.205.0 - 192.160.205.255 { 0xc0a0ce00, 0xc0a0dfff, REGISTRY_ARIN }, // 192.160.206.0 - 192.160.223.255 { 0xc0a0e000, 0xc0a0e1ff, REGISTRY_RIPENCC }, // 192.160.224.0 - 192.160.225.255 { 0xc0a0e300, 0xc0a0e4ff, REGISTRY_ARIN }, // 192.160.227.0 - 192.160.228.255 { 0xc0a0e500, 0xc0a0e5ff, REGISTRY_APNIC }, // 192.160.229.0 - 192.160.229.255 { 0xc0a0e600, 0xc0a0e6ff, REGISTRY_ARIN }, // 192.160.230.0 - 192.160.230.255 { 0xc0a0e700, 0xc0a0e9ff, REGISTRY_RIPENCC }, // 192.160.231.0 - 192.160.233.255 { 0xc0a0ea00, 0xc0a0f4ff, REGISTRY_ARIN }, // 192.160.234.0 - 192.160.244.255 { 0xc0a0f500, 0xc0a0f9ff, REGISTRY_RIPENCC }, // 192.160.245.0 - 192.160.249.255 { 0xc0a0fa00, 0xc0a0faff, REGISTRY_ARIN }, // 192.160.250.0 - 192.160.250.255 { 0xc0a0fb00, 0xc0a0fcff, REGISTRY_RIPENCC }, // 192.160.251.0 - 192.160.252.255 { 0xc0a0fd00, 0xc0a13fff, REGISTRY_ARIN }, // 192.160.253.0 - 192.161.63.255 { 0xc0a14000, 0xc0a141ff, REGISTRY_RIPENCC }, // 192.161.64.0 - 192.161.65.255 { 0xc0a14200, 0xc0a17fff, REGISTRY_ARIN }, // 192.161.66.0 - 192.161.127.255 { 0xc0a18000, 0xc0a181ff, REGISTRY_APNIC }, // 192.161.128.0 - 192.161.129.255 { 0xc0a18200, 0xc0a1ffff, REGISTRY_ARIN }, // 192.161.130.0 - 192.161.255.255 { 0xc0a20000, 0xc0a217ff, REGISTRY_RIPENCC }, // 192.162.0.0 - 192.162.23.255 { 0xc0a21800, 0xc0a21bff, REGISTRY_RIPENCC }, // 192.162.24.0 - 192.162.27.255 { 0xc0a21c00, 0xc0a263ff, REGISTRY_RIPENCC }, // 192.162.28.0 - 192.162.99.255 { 0xc0a26400, 0xc0a267ff, REGISTRY_RIPENCC }, // 192.162.100.0 - 192.162.103.255 { 0xc0a26800, 0xc0a2b7ff, REGISTRY_RIPENCC }, // 192.162.104.0 - 192.162.183.255 { 0xc0a2b800, 0xc0a2bbff, REGISTRY_RIPENCC }, // 192.162.184.0 - 192.162.187.255 { 0xc0a2bc00, 0xc0a2c3ff, REGISTRY_RIPENCC }, // 192.162.188.0 - 192.162.195.255 { 0xc0a2c800, 0xc0a2cbff, REGISTRY_RIPENCC }, // 192.162.200.0 - 192.162.203.255 { 0xc0a2d000, 0xc0a2ffff, REGISTRY_RIPENCC }, // 192.162.208.0 - 192.162.255.255 { 0xc0a30000, 0xc0a31fff, REGISTRY_ARIN }, // 192.163.0.0 - 192.163.31.255 { 0xc0a32000, 0xc0a39fff, REGISTRY_RIPENCC }, // 192.163.32.0 - 192.163.159.255 { 0xc0a3a000, 0xc0a3ffff, REGISTRY_ARIN }, // 192.163.160.0 - 192.163.255.255 { 0xc0a40000, 0xc0a5ffff, REGISTRY_RIPENCC }, // 192.164.0.0 - 192.165.255.255 { 0xc0a60000, 0xc0a607ff, REGISTRY_RIPENCC }, // 192.166.0.0 - 192.166.7.255 { 0xc0a60c00, 0xc0a61fff, REGISTRY_RIPENCC }, // 192.166.12.0 - 192.166.31.255 { 0xc0a63000, 0xc0a650ff, REGISTRY_RIPENCC }, // 192.166.48.0 - 192.166.80.255 { 0xc0a65400, 0xc0a671ff, REGISTRY_RIPENCC }, // 192.166.84.0 - 192.166.113.255 { 0xc0a67400, 0xc0a698ff, REGISTRY_RIPENCC }, // 192.166.116.0 - 192.166.152.255 { 0xc0a69e00, 0xc0a6cbff, REGISTRY_RIPENCC }, // 192.166.158.0 - 192.166.203.255 { 0xc0a6d000, 0xc0a6dbff, REGISTRY_RIPENCC }, // 192.166.208.0 - 192.166.219.255 { 0xc0a6e800, 0xc0a6efff, REGISTRY_RIPENCC }, // 192.166.232.0 - 192.166.239.255 { 0xc0a6fd00, 0xc0a6ffff, REGISTRY_RIPENCC }, // 192.166.253.0 - 192.166.255.255 { 0xc0a70000, 0xc0a7ffff, REGISTRY_RIPENCC }, // 192.167.0.0 - 192.167.255.255 { 0xc0a90000, 0xc0a91fff, REGISTRY_ARIN }, // 192.169.0.0 - 192.169.31.255 { 0xc0a92000, 0xc0a929ff, REGISTRY_APNIC }, // 192.169.32.0 - 192.169.41.255 { 0xc0a92a00, 0xc0ab00ff, REGISTRY_ARIN }, // 192.169.42.0 - 192.171.0.255 { 0xc0ab0100, 0xc0ab05ff, REGISTRY_RIPENCC }, // 192.171.1.0 - 192.171.5.255 { 0xc0ab0600, 0xc0ab7fff, REGISTRY_ARIN }, // 192.171.6.0 - 192.171.127.255 { 0xc0ab8000, 0xc0abc7ff, REGISTRY_RIPENCC }, // 192.171.128.0 - 192.171.199.255 { 0xc0abc800, 0xc0ace2ff, REGISTRY_ARIN }, // 192.171.200.0 - 192.172.226.255 { 0xc0ace300, 0xc0ace7ff, REGISTRY_APNIC }, // 192.172.227.0 - 192.172.231.255 { 0xc0ace900, 0xc0ace9ff, REGISTRY_ARIN }, // 192.172.233.0 - 192.172.233.255 { 0xc0acea00, 0xc0acefff, REGISTRY_APNIC }, // 192.172.234.0 - 192.172.239.255 { 0xc0acf000, 0xc0acf0ff, REGISTRY_ARIN }, // 192.172.240.0 - 192.172.240.255 { 0xc0acf100, 0xc0acf3ff, REGISTRY_APNIC }, // 192.172.241.0 - 192.172.243.255 { 0xc0acf700, 0xc0acfcff, REGISTRY_ARIN }, // 192.172.247.0 - 192.172.252.255 { 0xc0acfd00, 0xc0acfdff, REGISTRY_RIPENCC }, // 192.172.253.0 - 192.172.253.255 { 0xc0acfe00, 0xc0ad00ff, REGISTRY_ARIN }, // 192.172.254.0 - 192.173.0.255 { 0xc0ad0100, 0xc0ad04ff, REGISTRY_RIPENCC }, // 192.173.1.0 - 192.173.4.255 { 0xc0ad0500, 0xc0ad0fff, REGISTRY_ARIN }, // 192.173.5.0 - 192.173.15.255 { 0xc0ad1000, 0xc0ad18ff, REGISTRY_APNIC }, // 192.173.16.0 - 192.173.24.255 { 0xc0ad1900, 0xc0ad7fff, REGISTRY_ARIN }, // 192.173.25.0 - 192.173.127.255 { 0xc0ad8000, 0xc0ad87ff, REGISTRY_RIPENCC }, // 192.173.128.0 - 192.173.135.255 { 0xc0ad8800, 0xc0ae3fff, REGISTRY_ARIN }, // 192.173.136.0 - 192.174.63.255 { 0xc0ae4000, 0xc0ae44ff, REGISTRY_RIPENCC }, // 192.174.64.0 - 192.174.68.255 { 0xc0ae4500, 0xc0ae7fff, REGISTRY_ARIN }, // 192.174.69.0 - 192.174.127.255 { 0xc0ae8000, 0xc0aeffff, REGISTRY_APNIC }, // 192.174.128.0 - 192.174.255.255 { 0xc0af0000, 0xc0af1fff, REGISTRY_ARIN }, // 192.175.0.0 - 192.175.31.255 { 0xc0af2000, 0xc0af20ff, REGISTRY_RIPENCC }, // 192.175.32.0 - 192.175.32.255 { 0xc0af2100, 0xc0af27ff, REGISTRY_RIPENCC }, // 192.175.33.0 - 192.175.39.255 { 0xc0af2800, 0xc0af2bff, REGISTRY_RIPENCC }, // 192.175.40.0 - 192.175.43.255 { 0xc0af2c00, 0xc0af2cff, REGISTRY_RIPENCC }, // 192.175.44.0 - 192.175.44.255 { 0xc0af2d00, 0xc0af2dff, REGISTRY_RIPENCC }, // 192.175.45.0 - 192.175.45.255 { 0xc0af2e00, 0xc0af2fff, REGISTRY_RIPENCC }, // 192.175.46.0 - 192.175.47.255 { 0xc0af3000, 0xc0afffff, REGISTRY_ARIN }, // 192.175.48.0 - 192.175.255.255 { 0xc0b00000, 0xc0b0ffff, REGISTRY_RIPENCC }, // 192.176.0.0 - 192.176.255.255 { 0xc0b10000, 0xc0bb0fff, REGISTRY_ARIN }, // 192.177.0.0 - 192.187.15.255 { 0xc0bb1000, 0xc0bb17ff, REGISTRY_RIPENCC }, // 192.187.16.0 - 192.187.23.255 { 0xc0bb1800, 0xc0bb19ff, REGISTRY_RIPENCC }, // 192.187.24.0 - 192.187.25.255 { 0xc0bb1a00, 0xc0bc09ff, REGISTRY_ARIN }, // 192.187.26.0 - 192.188.9.255 { 0xc0bc0a00, 0xc0bc0aff, REGISTRY_RIPENCC }, // 192.188.10.0 - 192.188.10.255 { 0xc0bc0b00, 0xc0bc0bff, REGISTRY_LACNIC }, // 192.188.11.0 - 192.188.11.255 { 0xc0bc0c00, 0xc0bc2aff, REGISTRY_ARIN }, // 192.188.12.0 - 192.188.42.255 { 0xc0bc2b00, 0xc0bc2bff, REGISTRY_APNIC }, // 192.188.43.0 - 192.188.43.255 { 0xc0bc2c00, 0xc0bc3cff, REGISTRY_LACNIC }, // 192.188.44.0 - 192.188.60.255 { 0xc0bc3d00, 0xc0bc3eff, REGISTRY_ARIN }, // 192.188.61.0 - 192.188.62.255 { 0xc0bc3f00, 0xc0bc41ff, REGISTRY_RIPENCC }, // 192.188.63.0 - 192.188.65.255 { 0xc0bc4200, 0xc0bc44ff, REGISTRY_ARIN }, // 192.188.66.0 - 192.188.68.255 { 0xc0bc4500, 0xc0bc45ff, REGISTRY_RIPENCC }, // 192.188.69.0 - 192.188.69.255 { 0xc0bc4600, 0xc0bc46ff, REGISTRY_ARIN }, // 192.188.70.0 - 192.188.70.255 { 0xc0bc4700, 0xc0bc47ff, REGISTRY_APNIC }, // 192.188.71.0 - 192.188.71.255 { 0xc0bc4800, 0xc0bc48ff, REGISTRY_ARIN }, // 192.188.72.0 - 192.188.72.255 { 0xc0bc4900, 0xc0bc4fff, REGISTRY_APNIC }, // 192.188.73.0 - 192.188.79.255 { 0xc0bc5400, 0xc0bc54ff, REGISTRY_ARIN }, // 192.188.84.0 - 192.188.84.255 { 0xc0bc5800, 0xc0bc58ff, REGISTRY_ARIN }, // 192.188.88.0 - 192.188.88.255 { 0xc0bc5b00, 0xc0bc5bff, REGISTRY_ARIN }, // 192.188.91.0 - 192.188.91.255 { 0xc0bc5c00, 0xc0bc5cff, REGISTRY_APNIC }, // 192.188.92.0 - 192.188.92.255 { 0xc0bc5d00, 0xc0bc5fff, REGISTRY_ARIN }, // 192.188.93.0 - 192.188.95.255 { 0xc0bc6000, 0xc0bc60ff, REGISTRY_RIPENCC }, // 192.188.96.0 - 192.188.96.255 { 0xc0bc6100, 0xc0bc64ff, REGISTRY_ARIN }, // 192.188.97.0 - 192.188.100.255 { 0xc0bc6500, 0xc0bc65ff, REGISTRY_APNIC }, // 192.188.101.0 - 192.188.101.255 { 0xc0bc6600, 0xc0bc68ff, REGISTRY_ARIN }, // 192.188.102.0 - 192.188.104.255 { 0xc0bc6900, 0xc0bc69ff, REGISTRY_RIPENCC }, // 192.188.105.0 - 192.188.105.255 { 0xc0bc6a00, 0xc0bc6aff, REGISTRY_ARIN }, // 192.188.106.0 - 192.188.106.255 { 0xc0bc6b00, 0xc0bc6bff, REGISTRY_APNIC }, // 192.188.107.0 - 192.188.107.255 { 0xc0bc6c00, 0xc0bc72ff, REGISTRY_ARIN }, // 192.188.108.0 - 192.188.114.255 { 0xc0bc7300, 0xc0bc73ff, REGISTRY_APNIC }, // 192.188.115.0 - 192.188.115.255 { 0xc0bc7400, 0xc0bc75ff, REGISTRY_RIPENCC }, // 192.188.116.0 - 192.188.117.255 { 0xc0bc7600, 0xc0bc78ff, REGISTRY_ARIN }, // 192.188.118.0 - 192.188.120.255 { 0xc0bc7900, 0xc0bc7aff, REGISTRY_RIPENCC }, // 192.188.121.0 - 192.188.122.255 { 0xc0bc7b00, 0xc0bc7cff, REGISTRY_ARIN }, // 192.188.123.0 - 192.188.124.255 { 0xc0bc7d00, 0xc0bc7dff, REGISTRY_RIPENCC }, // 192.188.125.0 - 192.188.125.255 { 0xc0bc7e00, 0xc0bc7eff, REGISTRY_ARIN }, // 192.188.126.0 - 192.188.126.255 { 0xc0bc7f00, 0xc0bc7fff, REGISTRY_RIPENCC }, // 192.188.127.0 - 192.188.127.255 { 0xc0bc8100, 0xc0bc81ff, REGISTRY_RIPENCC }, // 192.188.129.0 - 192.188.129.255 { 0xc0bc8200, 0xc0bc83ff, REGISTRY_ARIN }, // 192.188.130.0 - 192.188.131.255 { 0xc0bc8400, 0xc0bc84ff, REGISTRY_RIPENCC }, // 192.188.132.0 - 192.188.132.255 { 0xc0bc8500, 0xc0bc87ff, REGISTRY_ARIN }, // 192.188.133.0 - 192.188.135.255 { 0xc0bc8800, 0xc0bc88ff, REGISTRY_RIPENCC }, // 192.188.136.0 - 192.188.136.255 { 0xc0bc8900, 0xc0bc90ff, REGISTRY_ARIN }, // 192.188.137.0 - 192.188.144.255 { 0xc0bc9100, 0xc0bc91ff, REGISTRY_RIPENCC }, // 192.188.145.0 - 192.188.145.255 { 0xc0bc9200, 0xc0bc96ff, REGISTRY_ARIN }, // 192.188.146.0 - 192.188.150.255 { 0xc0bc9700, 0xc0bc97ff, REGISTRY_APNIC }, // 192.188.151.0 - 192.188.151.255 { 0xc0bc9800, 0xc0bc9cff, REGISTRY_ARIN }, // 192.188.152.0 - 192.188.156.255 { 0xc0bc9d00, 0xc0bc9eff, REGISTRY_RIPENCC }, // 192.188.157.0 - 192.188.158.255 { 0xc0bc9f00, 0xc0bca3ff, REGISTRY_ARIN }, // 192.188.159.0 - 192.188.163.255 { 0xc0bca400, 0xc0bca7ff, REGISTRY_AFRINIC }, // 192.188.164.0 - 192.188.167.255 { 0xc0bca800, 0xc0bca9ff, REGISTRY_ARIN }, // 192.188.168.0 - 192.188.169.255 { 0xc0bcaa00, 0xc0bcacff, REGISTRY_APNIC }, // 192.188.170.0 - 192.188.172.255 { 0xc0bcad00, 0xc0bcadff, REGISTRY_ARIN }, // 192.188.173.0 - 192.188.173.255 { 0xc0bcae00, 0xc0bcafff, REGISTRY_APNIC }, // 192.188.174.0 - 192.188.175.255 { 0xc0bcb000, 0xc0bcb8ff, REGISTRY_ARIN }, // 192.188.176.0 - 192.188.184.255 { 0xc0bcb900, 0xc0bcbaff, REGISTRY_APNIC }, // 192.188.185.0 - 192.188.186.255 { 0xc0bcbb00, 0xc0bcbbff, REGISTRY_RIPENCC }, // 192.188.187.0 - 192.188.187.255 { 0xc0bcbc00, 0xc0bcbcff, REGISTRY_ARIN }, // 192.188.188.0 - 192.188.188.255 { 0xc0bcbd00, 0xc0bcbdff, REGISTRY_RIPENCC }, // 192.188.189.0 - 192.188.189.255 { 0xc0bcbe00, 0xc0bcc1ff, REGISTRY_ARIN }, // 192.188.190.0 - 192.188.193.255 { 0xc0bcc200, 0xc0bcc5ff, REGISTRY_LACNIC }, // 192.188.194.0 - 192.188.197.255 { 0xc0bcc600, 0xc0bce8ff, REGISTRY_ARIN }, // 192.188.198.0 - 192.188.232.255 { 0xc0bce900, 0xc0bcedff, REGISTRY_RIPENCC }, // 192.188.233.0 - 192.188.237.255 { 0xc0bcee00, 0xc0bcf0ff, REGISTRY_ARIN }, // 192.188.238.0 - 192.188.240.255 { 0xc0bcf100, 0xc0bcf1ff, REGISTRY_APNIC }, // 192.188.241.0 - 192.188.241.255 { 0xc0bcf200, 0xc0bcf7ff, REGISTRY_RIPENCC }, // 192.188.242.0 - 192.188.247.255 { 0xc0bcf900, 0xc0bd00ff, REGISTRY_ARIN }, // 192.188.249.0 - 192.189.0.255 { 0xc0bd0100, 0xc0bd01ff, REGISTRY_RIPENCC }, // 192.189.1.0 - 192.189.1.255 { 0xc0bd0200, 0xc0bd07ff, REGISTRY_ARIN }, // 192.189.2.0 - 192.189.7.255 { 0xc0bd0800, 0xc0bd0bff, REGISTRY_RIPENCC }, // 192.189.8.0 - 192.189.11.255 { 0xc0bd0c00, 0xc0bd0dff, REGISTRY_ARIN }, // 192.189.12.0 - 192.189.13.255 { 0xc0bd0e00, 0xc0bd0eff, REGISTRY_RIPENCC }, // 192.189.14.0 - 192.189.14.255 { 0xc0bd0f00, 0xc0bd16ff, REGISTRY_ARIN }, // 192.189.15.0 - 192.189.22.255 { 0xc0bd1700, 0xc0bd17ff, REGISTRY_RIPENCC }, // 192.189.23.0 - 192.189.23.255 { 0xc0bd1800, 0xc0bd18ff, REGISTRY_APNIC }, // 192.189.24.0 - 192.189.24.255 { 0xc0bd1900, 0xc0bd21ff, REGISTRY_ARIN }, // 192.189.25.0 - 192.189.33.255 { 0xc0bd2200, 0xc0bd22ff, REGISTRY_APNIC }, // 192.189.34.0 - 192.189.34.255 { 0xc0bd2300, 0xc0bd28ff, REGISTRY_ARIN }, // 192.189.35.0 - 192.189.40.255 { 0xc0bd2900, 0xc0bd29ff, REGISTRY_RIPENCC }, // 192.189.41.0 - 192.189.41.255 { 0xc0bd2a00, 0xc0bd32ff, REGISTRY_ARIN }, // 192.189.42.0 - 192.189.50.255 { 0xc0bd3300, 0xc0bd34ff, REGISTRY_RIPENCC }, // 192.189.51.0 - 192.189.52.255 { 0xc0bd3500, 0xc0bd35ff, REGISTRY_ARIN }, // 192.189.53.0 - 192.189.53.255 { 0xc0bd3600, 0xc0bd36ff, REGISTRY_APNIC }, // 192.189.54.0 - 192.189.54.255 { 0xc0bd3700, 0xc0bd37ff, REGISTRY_RIPENCC }, // 192.189.55.0 - 192.189.55.255 { 0xc0bd3800, 0xc0bd41ff, REGISTRY_ARIN }, // 192.189.56.0 - 192.189.65.255 { 0xc0bd4200, 0xc0bd42ff, REGISTRY_RIPENCC }, // 192.189.66.0 - 192.189.66.255 { 0xc0bd4300, 0xc0bd44ff, REGISTRY_ARIN }, // 192.189.67.0 - 192.189.68.255 { 0xc0bd4500, 0xc0bd46ff, REGISTRY_RIPENCC }, // 192.189.69.0 - 192.189.70.255 { 0xc0bd4700, 0xc0bd48ff, REGISTRY_ARIN }, // 192.189.71.0 - 192.189.72.255 { 0xc0bd4900, 0xc0bd49ff, REGISTRY_RIPENCC }, // 192.189.73.0 - 192.189.73.255 { 0xc0bd4a00, 0xc0bd4aff, REGISTRY_ARIN }, // 192.189.74.0 - 192.189.74.255 { 0xc0bd4b00, 0xc0bd4bff, REGISTRY_AFRINIC }, // 192.189.75.0 - 192.189.75.255 { 0xc0bd4c00, 0xc0bd4cff, REGISTRY_RIPENCC }, // 192.189.76.0 - 192.189.76.255 { 0xc0bd4d00, 0xc0bd5dff, REGISTRY_ARIN }, // 192.189.77.0 - 192.189.93.255 { 0xc0bd5f00, 0xc0bd76ff, REGISTRY_ARIN }, // 192.189.95.0 - 192.189.118.255 { 0xc0bd7700, 0xc0bd77ff, REGISTRY_RIPENCC }, // 192.189.119.0 - 192.189.119.255 { 0xc0bd7800, 0xc0bd87ff, REGISTRY_ARIN }, // 192.189.120.0 - 192.189.135.255 { 0xc0bd8800, 0xc0bd88ff, REGISTRY_APNIC }, // 192.189.136.0 - 192.189.136.255 { 0xc0bd8900, 0xc0bd8aff, REGISTRY_ARIN }, // 192.189.137.0 - 192.189.138.255 { 0xc0bd8b00, 0xc0bd8cff, REGISTRY_AFRINIC }, // 192.189.139.0 - 192.189.140.255 { 0xc0bd8d00, 0xc0bd93ff, REGISTRY_ARIN }, // 192.189.141.0 - 192.189.147.255 { 0xc0bd9400, 0xc0bd94ff, REGISTRY_APNIC }, // 192.189.148.0 - 192.189.148.255 { 0xc0bd9500, 0xc0bd96ff, REGISTRY_ARIN }, // 192.189.149.0 - 192.189.150.255 { 0xc0bd9700, 0xc0bd97ff, REGISTRY_RIPENCC }, // 192.189.151.0 - 192.189.151.255 { 0xc0bd9800, 0xc0bd99ff, REGISTRY_ARIN }, // 192.189.152.0 - 192.189.153.255 { 0xc0bd9a00, 0xc0bd9aff, REGISTRY_RIPENCC }, // 192.189.154.0 - 192.189.154.255 { 0xc0bd9b00, 0xc0bd9cff, REGISTRY_ARIN }, // 192.189.155.0 - 192.189.156.255 { 0xc0bd9d00, 0xc0bd9dff, REGISTRY_RIPENCC }, // 192.189.157.0 - 192.189.157.255 { 0xc0bd9e00, 0xc0bd9eff, REGISTRY_ARIN }, // 192.189.158.0 - 192.189.158.255 { 0xc0bda000, 0xc0bda0ff, REGISTRY_RIPENCC }, // 192.189.160.0 - 192.189.160.255 { 0xc0bda100, 0xc0bda5ff, REGISTRY_ARIN }, // 192.189.161.0 - 192.189.165.255 { 0xc0bda600, 0xc0bdaaff, REGISTRY_RIPENCC }, // 192.189.166.0 - 192.189.170.255 { 0xc0bdab00, 0xc0bdc9ff, REGISTRY_ARIN }, // 192.189.171.0 - 192.189.201.255 { 0xc0bdca00, 0xc0bdcbff, REGISTRY_RIPENCC }, // 192.189.202.0 - 192.189.203.255 { 0xc0bdcc00, 0xc0bdcfff, REGISTRY_ARIN }, // 192.189.204.0 - 192.189.207.255 { 0xc0bdd000, 0xc0bdd3ff, REGISTRY_APNIC }, // 192.189.208.0 - 192.189.211.255 { 0xc0bdd400, 0xc0bddeff, REGISTRY_ARIN }, // 192.189.212.0 - 192.189.222.255 { 0xc0bddf00, 0xc0bddfff, REGISTRY_APNIC }, // 192.189.223.0 - 192.189.223.255 { 0xc0bde000, 0xc0bde4ff, REGISTRY_ARIN }, // 192.189.224.0 - 192.189.228.255 { 0xc0bde500, 0xc0bde5ff, REGISTRY_APNIC }, // 192.189.229.0 - 192.189.229.255 { 0xc0bdea00, 0xc0bdfaff, REGISTRY_ARIN }, // 192.189.234.0 - 192.189.250.255 { 0xc0bdfb00, 0xc0bdfbff, REGISTRY_RIPENCC }, // 192.189.251.0 - 192.189.251.255 { 0xc0bdfc00, 0xc0be1dff, REGISTRY_ARIN }, // 192.189.252.0 - 192.190.29.255 { 0xc0be1e00, 0xc0be1fff, REGISTRY_LACNIC }, // 192.190.30.0 - 192.190.31.255 { 0xc0be2000, 0xc0be2bff, REGISTRY_ARIN }, // 192.190.32.0 - 192.190.43.255 { 0xc0be2c00, 0xc0be2cff, REGISTRY_RIPENCC }, // 192.190.44.0 - 192.190.44.255 { 0xc0be2d00, 0xc0be39ff, REGISTRY_ARIN }, // 192.190.45.0 - 192.190.57.255 { 0xc0be3a00, 0xc0be3bff, REGISTRY_RIPENCC }, // 192.190.58.0 - 192.190.59.255 { 0xc0be3c00, 0xc0be3cff, REGISTRY_ARIN }, // 192.190.60.0 - 192.190.60.255 { 0xc0be3d00, 0xc0be3dff, REGISTRY_APNIC }, // 192.190.61.0 - 192.190.61.255 { 0xc0be3e00, 0xc0be3fff, REGISTRY_ARIN }, // 192.190.62.0 - 192.190.63.255 { 0xc0be4000, 0xc0be40ff, REGISTRY_RIPENCC }, // 192.190.64.0 - 192.190.64.255 { 0xc0be4100, 0xc0be41ff, REGISTRY_ARIN }, // 192.190.65.0 - 192.190.65.255 { 0xc0be4200, 0xc0be42ff, REGISTRY_APNIC }, // 192.190.66.0 - 192.190.66.255 { 0xc0be4300, 0xc0be43ff, REGISTRY_RIPENCC }, // 192.190.67.0 - 192.190.67.255 { 0xc0be4400, 0xc0be44ff, REGISTRY_ARIN }, // 192.190.68.0 - 192.190.68.255 { 0xc0be4500, 0xc0be45ff, REGISTRY_RIPENCC }, // 192.190.69.0 - 192.190.69.255 { 0xc0be4600, 0xc0be5eff, REGISTRY_ARIN }, // 192.190.70.0 - 192.190.94.255 { 0xc0be5f00, 0xc0be5fff, REGISTRY_RIPENCC }, // 192.190.95.0 - 192.190.95.255 { 0xc0be6000, 0xc0be6bff, REGISTRY_ARIN }, // 192.190.96.0 - 192.190.107.255 { 0xc0be6c00, 0xc0be6cff, REGISTRY_APNIC }, // 192.190.108.0 - 192.190.108.255 { 0xc0be6d00, 0xc0be80ff, REGISTRY_ARIN }, // 192.190.109.0 - 192.190.128.255 { 0xc0be8100, 0xc0be84ff, REGISTRY_RIPENCC }, // 192.190.129.0 - 192.190.132.255 { 0xc0be8500, 0xc0beacff, REGISTRY_ARIN }, // 192.190.133.0 - 192.190.172.255 { 0xc0bead00, 0xc0beaeff, REGISTRY_RIPENCC }, // 192.190.173.0 - 192.190.174.255 { 0xc0beaf00, 0xc0beb3ff, REGISTRY_ARIN }, // 192.190.175.0 - 192.190.179.255 { 0xc0beb400, 0xc0beb5ff, REGISTRY_APNIC }, // 192.190.180.0 - 192.190.181.255 { 0xc0beb600, 0xc0beb7ff, REGISTRY_RIPENCC }, // 192.190.182.0 - 192.190.183.255 { 0xc0beb800, 0xc0bebdff, REGISTRY_ARIN }, // 192.190.184.0 - 192.190.189.255 { 0xc0bebe00, 0xc0bec1ff, REGISTRY_RIPENCC }, // 192.190.190.0 - 192.190.193.255 { 0xc0bec200, 0xc0bec8ff, REGISTRY_ARIN }, // 192.190.194.0 - 192.190.200.255 { 0xc0bec900, 0xc0becaff, REGISTRY_RIPENCC }, // 192.190.201.0 - 192.190.202.255 { 0xc0becb00, 0xc0becbff, REGISTRY_ARIN }, // 192.190.203.0 - 192.190.203.255 { 0xc0becc00, 0xc0becdff, REGISTRY_APNIC }, // 192.190.204.0 - 192.190.205.255 { 0xc0bece00, 0xc0becfff, REGISTRY_ARIN }, // 192.190.206.0 - 192.190.207.255 { 0xc0bed000, 0xc0bed7ff, REGISTRY_APNIC }, // 192.190.208.0 - 192.190.215.255 { 0xc0bed800, 0xc0bee8ff, REGISTRY_ARIN }, // 192.190.216.0 - 192.190.232.255 { 0xc0bee900, 0xc0beecff, REGISTRY_RIPENCC }, // 192.190.233.0 - 192.190.236.255 { 0xc0beed00, 0xc0beefff, REGISTRY_ARIN }, // 192.190.237.0 - 192.190.239.255 { 0xc0bef000, 0xc0bef0ff, REGISTRY_RIPENCC }, // 192.190.240.0 - 192.190.240.255 { 0xc0bef100, 0xc0bef1ff, REGISTRY_ARIN }, // 192.190.241.0 - 192.190.241.255 { 0xc0bef200, 0xc0bef2ff, REGISTRY_RIPENCC }, // 192.190.242.0 - 192.190.242.255 { 0xc0bef300, 0xc0bef6ff, REGISTRY_ARIN }, // 192.190.243.0 - 192.190.246.255 { 0xc0bef700, 0xc0bef9ff, REGISTRY_RIPENCC }, // 192.190.247.0 - 192.190.249.255 { 0xc0befa00, 0xc0bfffff, REGISTRY_ARIN }, // 192.190.250.0 - 192.191.255.255 { 0xc0c00000, 0xc0c0ffff, REGISTRY_APNIC }, // 192.192.0.0 - 192.192.255.255 { 0xc0c10000, 0xc0c1ffff, REGISTRY_ARIN }, // 192.193.0.0 - 192.193.255.255 { 0xc0c20000, 0xc0c2ffff, REGISTRY_RIPENCC }, // 192.194.0.0 - 192.194.255.255 { 0xc0c30000, 0xc0c300ff, REGISTRY_ARIN }, // 192.195.0.0 - 192.195.0.255 { 0xc0c30100, 0xc0c301ff, REGISTRY_RIPENCC }, // 192.195.1.0 - 192.195.1.255 { 0xc0c30300, 0xc0c307ff, REGISTRY_ARIN }, // 192.195.3.0 - 192.195.7.255 { 0xc0c30800, 0xc0c308ff, REGISTRY_RIPENCC }, // 192.195.8.0 - 192.195.8.255 { 0xc0c30900, 0xc0c309ff, REGISTRY_ARIN }, // 192.195.9.0 - 192.195.9.255 { 0xc0c30b00, 0xc0c30bff, REGISTRY_ARIN }, // 192.195.11.0 - 192.195.11.255 { 0xc0c30c00, 0xc0c30eff, REGISTRY_APNIC }, // 192.195.12.0 - 192.195.14.255 { 0xc0c30f00, 0xc0c321ff, REGISTRY_ARIN }, // 192.195.15.0 - 192.195.33.255 { 0xc0c32200, 0xc0c322ff, REGISTRY_APNIC }, // 192.195.34.0 - 192.195.34.255 { 0xc0c32300, 0xc0c326ff, REGISTRY_ARIN }, // 192.195.35.0 - 192.195.38.255 { 0xc0c32700, 0xc0c328ff, REGISTRY_APNIC }, // 192.195.39.0 - 192.195.40.255 { 0xc0c32900, 0xc0c329ff, REGISTRY_ARIN }, // 192.195.41.0 - 192.195.41.255 { 0xc0c32a00, 0xc0c32bff, REGISTRY_RIPENCC }, // 192.195.42.0 - 192.195.43.255 { 0xc0c32c00, 0xc0c337ff, REGISTRY_APNIC }, // 192.195.44.0 - 192.195.55.255 { 0xc0c33a00, 0xc0c347ff, REGISTRY_ARIN }, // 192.195.58.0 - 192.195.71.255 { 0xc0c34800, 0xc0c348ff, REGISTRY_RIPENCC }, // 192.195.72.0 - 192.195.72.255 { 0xc0c34900, 0xc0c361ff, REGISTRY_ARIN }, // 192.195.73.0 - 192.195.97.255 { 0xc0c36200, 0xc0c362ff, REGISTRY_RIPENCC }, // 192.195.98.0 - 192.195.98.255 { 0xc0c36300, 0xc0c365ff, REGISTRY_ARIN }, // 192.195.99.0 - 192.195.101.255 { 0xc0c36600, 0xc0c366ff, REGISTRY_APNIC }, // 192.195.102.0 - 192.195.102.255 { 0xc0c36700, 0xc0c368ff, REGISTRY_ARIN }, // 192.195.103.0 - 192.195.104.255 { 0xc0c36900, 0xc0c36aff, REGISTRY_RIPENCC }, // 192.195.105.0 - 192.195.106.255 { 0xc0c36b00, 0xc0c36dff, REGISTRY_ARIN }, // 192.195.107.0 - 192.195.109.255 { 0xc0c36e00, 0xc0c36eff, REGISTRY_RIPENCC }, // 192.195.110.0 - 192.195.110.255 { 0xc0c36f00, 0xc0c36fff, REGISTRY_ARIN }, // 192.195.111.0 - 192.195.111.255 { 0xc0c37000, 0xc0c370ff, REGISTRY_APNIC }, // 192.195.112.0 - 192.195.112.255 { 0xc0c37100, 0xc0c373ff, REGISTRY_ARIN }, // 192.195.113.0 - 192.195.115.255 { 0xc0c37400, 0xc0c376ff, REGISTRY_RIPENCC }, // 192.195.116.0 - 192.195.118.255 { 0xc0c37700, 0xc0c385ff, REGISTRY_ARIN }, // 192.195.119.0 - 192.195.133.255 { 0xc0c38600, 0xc0c394ff, REGISTRY_RIPENCC }, // 192.195.134.0 - 192.195.148.255 { 0xc0c39500, 0xc0c397ff, REGISTRY_ARIN }, // 192.195.149.0 - 192.195.151.255 { 0xc0c39800, 0xc0c398ff, REGISTRY_APNIC }, // 192.195.152.0 - 192.195.152.255 { 0xc0c39900, 0xc0c3a9ff, REGISTRY_ARIN }, // 192.195.153.0 - 192.195.169.255 { 0xc0c3aa00, 0xc0c3aaff, REGISTRY_APNIC }, // 192.195.170.0 - 192.195.170.255 { 0xc0c3ab00, 0xc0c3b6ff, REGISTRY_ARIN }, // 192.195.171.0 - 192.195.182.255 { 0xc0c3b700, 0xc0c3b8ff, REGISTRY_RIPENCC }, // 192.195.183.0 - 192.195.184.255 { 0xc0c3b900, 0xc0c3b9ff, REGISTRY_ARIN }, // 192.195.185.0 - 192.195.185.255 { 0xc0c3bb00, 0xc0c3c2ff, REGISTRY_ARIN }, // 192.195.187.0 - 192.195.194.255 { 0xc0c3c300, 0xc0c3c3ff, REGISTRY_RIPENCC }, // 192.195.195.0 - 192.195.195.255 { 0xc0c3c400, 0xc0c3c4ff, REGISTRY_ARIN }, // 192.195.196.0 - 192.195.196.255 { 0xc0c3c500, 0xc0c3c5ff, REGISTRY_APNIC }, // 192.195.197.0 - 192.195.197.255 { 0xc0c3c600, 0xc0c3daff, REGISTRY_ARIN }, // 192.195.198.0 - 192.195.218.255 { 0xc0c3db00, 0xc0c3dbff, REGISTRY_APNIC }, // 192.195.219.0 - 192.195.219.255 { 0xc0c3dc00, 0xc0c3e8ff, REGISTRY_ARIN }, // 192.195.220.0 - 192.195.232.255 { 0xc0c3ea00, 0xc0c3ebff, REGISTRY_ARIN }, // 192.195.234.0 - 192.195.235.255 { 0xc0c3ec00, 0xc0c3ecff, REGISTRY_RIPENCC }, // 192.195.236.0 - 192.195.236.255 { 0xc0c3ed00, 0xc0c3edff, REGISTRY_LACNIC }, // 192.195.237.0 - 192.195.237.255 { 0xc0c3ee00, 0xc0c400ff, REGISTRY_ARIN }, // 192.195.238.0 - 192.196.0.255 { 0xc0c40100, 0xc0c49bff, REGISTRY_RIPENCC }, // 192.196.1.0 - 192.196.155.255 { 0xc0c49c00, 0xc0c570ff, REGISTRY_ARIN }, // 192.196.156.0 - 192.197.112.255 { 0xc0c57200, 0xc0c607ff, REGISTRY_ARIN }, // 192.197.114.0 - 192.198.7.255 { 0xc0c60800, 0xc0c60fff, REGISTRY_LACNIC }, // 192.198.8.0 - 192.198.15.255 { 0xc0c61000, 0xc0c70fff, REGISTRY_ARIN }, // 192.198.16.0 - 192.199.15.255 { 0xc0c71000, 0xc0c71fff, REGISTRY_RIPENCC }, // 192.199.16.0 - 192.199.31.255 { 0xc0c72000, 0xc0c72fff, REGISTRY_APNIC }, // 192.199.32.0 - 192.199.47.255 { 0xc0c73000, 0xc0c83fff, REGISTRY_ARIN }, // 192.199.48.0 - 192.200.63.255 { 0xc0c84000, 0xc0c84fff, REGISTRY_APNIC }, // 192.200.64.0 - 192.200.79.255 { 0xc0c85000, 0xc0cb25ff, REGISTRY_ARIN }, // 192.200.80.0 - 192.203.37.255 { 0xc0cb2800, 0xc0cb4fff, REGISTRY_ARIN }, // 192.203.40.0 - 192.203.79.255 { 0xc0cb5000, 0xc0cb50ff, REGISTRY_RIPENCC }, // 192.203.80.0 - 192.203.80.255 { 0xc0cb6000, 0xc0cb62ff, REGISTRY_ARIN }, // 192.203.96.0 - 192.203.98.255 { 0xc0cb6400, 0xc0cb6bff, REGISTRY_ARIN }, // 192.203.100.0 - 192.203.107.255 { 0xc0cb6c00, 0xc0cb6dff, REGISTRY_RIPENCC }, // 192.203.108.0 - 192.203.109.255 { 0xc0cb6e00, 0xc0cb89ff, REGISTRY_ARIN }, // 192.203.110.0 - 192.203.137.255 { 0xc0cb8a00, 0xc0cb92ff, REGISTRY_APNIC }, // 192.203.138.0 - 192.203.146.255 { 0xc0cb9300, 0xc0cb99ff, REGISTRY_ARIN }, // 192.203.147.0 - 192.203.153.255 { 0xc0cb9a00, 0xc0cb9aff, REGISTRY_APNIC }, // 192.203.154.0 - 192.203.154.255 { 0xc0cb9b00, 0xc0cb9bff, REGISTRY_ARIN }, // 192.203.155.0 - 192.203.155.255 { 0xc0cb9e00, 0xc0cb9eff, REGISTRY_LACNIC }, // 192.203.158.0 - 192.203.158.255 { 0xc0cb9f00, 0xc0cbafff, REGISTRY_ARIN }, // 192.203.159.0 - 192.203.175.255 { 0xc0cbb000, 0xc0cbb0ff, REGISTRY_APNIC }, // 192.203.176.0 - 192.203.176.255 { 0xc0cbb100, 0xc0cbb1ff, REGISTRY_LACNIC }, // 192.203.177.0 - 192.203.177.255 { 0xc0cbb200, 0xc0cbb6ff, REGISTRY_ARIN }, // 192.203.178.0 - 192.203.182.255 { 0xc0cbba00, 0xc0cbc0ff, REGISTRY_ARIN }, // 192.203.186.0 - 192.203.192.255 { 0xc0cbc200, 0xc0cbcfff, REGISTRY_ARIN }, // 192.203.194.0 - 192.203.207.255 { 0xc0cbd200, 0xc0cbd4ff, REGISTRY_ARIN }, // 192.203.210.0 - 192.203.212.255 { 0xc0cbd500, 0xc0cbd5ff, REGISTRY_APNIC }, // 192.203.213.0 - 192.203.213.255 { 0xc0cbd600, 0xc0cbd7ff, REGISTRY_ARIN }, // 192.203.214.0 - 192.203.215.255 { 0xc0cbd800, 0xc0cbd8ff, REGISTRY_APNIC }, // 192.203.216.0 - 192.203.216.255 { 0xc0cbd900, 0xc0cbe2ff, REGISTRY_ARIN }, // 192.203.217.0 - 192.203.226.255 { 0xc0cbe300, 0xc0cbe3ff, REGISTRY_RIPENCC }, // 192.203.227.0 - 192.203.227.255 { 0xc0cbe400, 0xc0cbe7ff, REGISTRY_ARIN }, // 192.203.228.0 - 192.203.231.255 { 0xc0cbe800, 0xc0cbe8ff, REGISTRY_APNIC }, // 192.203.232.0 - 192.203.232.255 { 0xc0cbe900, 0xc0cbeaff, REGISTRY_ARIN }, // 192.203.233.0 - 192.203.234.255 { 0xc0cbeb00, 0xc0cbebff, REGISTRY_APNIC }, // 192.203.235.0 - 192.203.235.255 { 0xc0cbec00, 0xc0cbf6ff, REGISTRY_ARIN }, // 192.203.236.0 - 192.203.246.255 { 0xc0cbf700, 0xc0cbf7ff, REGISTRY_APNIC }, // 192.203.247.0 - 192.203.247.255 { 0xc0cbf800, 0xc0ce4cff, REGISTRY_ARIN }, // 192.203.248.0 - 192.206.76.255 { 0xc0ce4d00, 0xc0ce51ff, REGISTRY_RIPENCC }, // 192.206.77.0 - 192.206.81.255 { 0xc0ce5200, 0xc0ce55ff, REGISTRY_ARIN }, // 192.206.82.0 - 192.206.85.255 { 0xc0ce5600, 0xc0ce56ff, REGISTRY_RIPENCC }, // 192.206.86.0 - 192.206.86.255 { 0xc0ce5700, 0xc0ce65ff, REGISTRY_ARIN }, // 192.206.87.0 - 192.206.101.255 { 0xc0ce6700, 0xc0ce6bff, REGISTRY_ARIN }, // 192.206.103.0 - 192.206.107.255 { 0xc0ce6d00, 0xc0ce74ff, REGISTRY_ARIN }, // 192.206.109.0 - 192.206.116.255 { 0xc0ce7600, 0xc0ce97ff, REGISTRY_ARIN }, // 192.206.118.0 - 192.206.151.255 { 0xc0ce9800, 0xc0ce9dff, REGISTRY_APNIC }, // 192.206.152.0 - 192.206.157.255 { 0xc0ce9e00, 0xc0ceddff, REGISTRY_ARIN }, // 192.206.158.0 - 192.206.221.255 { 0xc0cede00, 0xc0cee2ff, REGISTRY_RIPENCC }, // 192.206.222.0 - 192.206.226.255 { 0xc0cee300, 0xc0cf0dff, REGISTRY_ARIN }, // 192.206.227.0 - 192.207.13.255 { 0xc0cf0f00, 0xc0cf1eff, REGISTRY_ARIN }, // 192.207.15.0 - 192.207.30.255 { 0xc0cf1f00, 0xc0cf1fff, REGISTRY_RIPENCC }, // 192.207.31.0 - 192.207.31.255 { 0xc0cf2000, 0xc0cf20ff, REGISTRY_ARIN }, // 192.207.32.0 - 192.207.32.255 { 0xc0cf2100, 0xc0cf21ff, REGISTRY_APNIC }, // 192.207.33.0 - 192.207.33.255 { 0xc0cf2200, 0xc0cf23ff, REGISTRY_ARIN }, // 192.207.34.0 - 192.207.35.255 { 0xc0cf2400, 0xc0cf24ff, REGISTRY_APNIC }, // 192.207.36.0 - 192.207.36.255 { 0xc0cf2500, 0xc0cf27ff, REGISTRY_ARIN }, // 192.207.37.0 - 192.207.39.255 { 0xc0cf2800, 0xc0cf2aff, REGISTRY_LACNIC }, // 192.207.40.0 - 192.207.42.255 { 0xc0cf2b00, 0xc0cf3fff, REGISTRY_ARIN }, // 192.207.43.0 - 192.207.63.255 { 0xc0cf4000, 0xc0cf40ff, REGISTRY_APNIC }, // 192.207.64.0 - 192.207.64.255 { 0xc0cf4100, 0xc0cf44ff, REGISTRY_LACNIC }, // 192.207.65.0 - 192.207.68.255 { 0xc0cf4500, 0xc0cf5aff, REGISTRY_ARIN }, // 192.207.69.0 - 192.207.90.255 { 0xc0cf5b00, 0xc0cf5bff, REGISTRY_APNIC }, // 192.207.91.0 - 192.207.91.255 { 0xc0cf5c00, 0xc0cf5fff, REGISTRY_ARIN }, // 192.207.92.0 - 192.207.95.255 { 0xc0cf6000, 0xc0cf62ff, REGISTRY_APNIC }, // 192.207.96.0 - 192.207.98.255 { 0xc0cf6300, 0xc0cf70ff, REGISTRY_ARIN }, // 192.207.99.0 - 192.207.112.255 { 0xc0cf7100, 0xc0cf71ff, REGISTRY_APNIC }, // 192.207.113.0 - 192.207.113.255 { 0xc0cf7200, 0xc0cf76ff, REGISTRY_ARIN }, // 192.207.114.0 - 192.207.118.255 { 0xc0cf7700, 0xc0cf79ff, REGISTRY_APNIC }, // 192.207.119.0 - 192.207.121.255 { 0xc0cf7a00, 0xc0cf8cff, REGISTRY_ARIN }, // 192.207.122.0 - 192.207.140.255 { 0xc0cf8d00, 0xc0cf8eff, REGISTRY_RIPENCC }, // 192.207.141.0 - 192.207.142.255 { 0xc0cf8f00, 0xc0cf8fff, REGISTRY_APNIC }, // 192.207.143.0 - 192.207.143.255 { 0xc0cf9000, 0xc0cf91ff, REGISTRY_ARIN }, // 192.207.144.0 - 192.207.145.255 { 0xc0cf9200, 0xc0cf92ff, REGISTRY_LACNIC }, // 192.207.146.0 - 192.207.146.255 { 0xc0cf9300, 0xc0cf96ff, REGISTRY_ARIN }, // 192.207.147.0 - 192.207.150.255 { 0xc0cf9700, 0xc0cf99ff, REGISTRY_APNIC }, // 192.207.151.0 - 192.207.153.255 { 0xc0cf9c00, 0xc0cf9eff, REGISTRY_APNIC }, // 192.207.156.0 - 192.207.158.255 { 0xc0cf9f00, 0xc0cfa0ff, REGISTRY_ARIN }, // 192.207.159.0 - 192.207.160.255 { 0xc0cfa100, 0xc0cfa1ff, REGISTRY_APNIC }, // 192.207.161.0 - 192.207.161.255 { 0xc0cfa200, 0xc0cfa4ff, REGISTRY_ARIN }, // 192.207.162.0 - 192.207.164.255 { 0xc0cfa500, 0xc0cfa5ff, REGISTRY_APNIC }, // 192.207.165.0 - 192.207.165.255 { 0xc0cfa600, 0xc0cfb6ff, REGISTRY_ARIN }, // 192.207.166.0 - 192.207.182.255 { 0xc0cfb700, 0xc0cfb7ff, REGISTRY_LACNIC }, // 192.207.183.0 - 192.207.183.255 { 0xc0cfb800, 0xc0cfbaff, REGISTRY_ARIN }, // 192.207.184.0 - 192.207.186.255 { 0xc0cfbb00, 0xc0cfbbff, REGISTRY_APNIC }, // 192.207.187.0 - 192.207.187.255 { 0xc0cfbc00, 0xc0cfc1ff, REGISTRY_ARIN }, // 192.207.188.0 - 192.207.193.255 { 0xc0cfc200, 0xc0cfc3ff, REGISTRY_LACNIC }, // 192.207.194.0 - 192.207.195.255 { 0xc0cfc400, 0xc0cfc4ff, REGISTRY_RIPENCC }, // 192.207.196.0 - 192.207.196.255 { 0xc0cfc500, 0xc0cfc6ff, REGISTRY_APNIC }, // 192.207.197.0 - 192.207.198.255 { 0xc0cfc700, 0xc0cfc7ff, REGISTRY_ARIN }, // 192.207.199.0 - 192.207.199.255 { 0xc0cfc800, 0xc0cfceff, REGISTRY_LACNIC }, // 192.207.200.0 - 192.207.206.255 { 0xc0cfcf00, 0xc0cff1ff, REGISTRY_ARIN }, // 192.207.207.0 - 192.207.241.255 { 0xc0cff200, 0xc0cff2ff, REGISTRY_APNIC }, // 192.207.242.0 - 192.207.242.255 { 0xc0cff300, 0xc0cff3ff, REGISTRY_ARIN }, // 192.207.243.0 - 192.207.243.255 { 0xc0cff400, 0xc0cff4ff, REGISTRY_LACNIC }, // 192.207.244.0 - 192.207.244.255 { 0xc0cff500, 0xc0cff7ff, REGISTRY_ARIN }, // 192.207.245.0 - 192.207.247.255 { 0xc0cff800, 0xc0cff8ff, REGISTRY_APNIC }, // 192.207.248.0 - 192.207.248.255 { 0xc0cff900, 0xc0cffdff, REGISTRY_ARIN }, // 192.207.249.0 - 192.207.253.255 { 0xc0cfff00, 0xc0d9ffff, REGISTRY_ARIN }, // 192.207.255.0 - 192.217.255.255 { 0xc0da0000, 0xc0daffff, REGISTRY_APNIC }, // 192.218.0.0 - 192.218.255.255 { 0xc0db0000, 0xc0df3fff, REGISTRY_ARIN }, // 192.219.0.0 - 192.223.63.255 { 0xc0df4000, 0xc0df7fff, REGISTRY_LACNIC }, // 192.223.64.0 - 192.223.127.255 { 0xc0df8000, 0xc0e300ff, REGISTRY_ARIN }, // 192.223.128.0 - 192.227.0.255 { 0xc0e30100, 0xc0e30fff, REGISTRY_APNIC }, // 192.227.1.0 - 192.227.15.255 { 0xc0e31000, 0xc0e47fff, REGISTRY_ARIN }, // 192.227.16.0 - 192.228.127.255 { 0xc0e48000, 0xc0e4ffff, REGISTRY_APNIC }, // 192.228.128.0 - 192.228.255.255 { 0xc0e50000, 0xc0e60fff, REGISTRY_ARIN }, // 192.229.0.0 - 192.230.15.255 { 0xc0e62000, 0xc0e70eff, REGISTRY_ARIN }, // 192.230.32.0 - 192.231.14.255 { 0xc0e70f00, 0xc0e70fff, REGISTRY_APNIC }, // 192.231.15.0 - 192.231.15.255 { 0xc0e71000, 0xc0e721ff, REGISTRY_ARIN }, // 192.231.16.0 - 192.231.33.255 { 0xc0e72200, 0xc0e722ff, REGISTRY_APNIC }, // 192.231.34.0 - 192.231.34.255 { 0xc0e72300, 0xc0e73aff, REGISTRY_ARIN }, // 192.231.35.0 - 192.231.58.255 { 0xc0e73b00, 0xc0e73bff, REGISTRY_APNIC }, // 192.231.59.0 - 192.231.59.255 { 0xc0e73c00, 0xc0e742ff, REGISTRY_ARIN }, // 192.231.60.0 - 192.231.66.255 { 0xc0e74300, 0xc0e743ff, REGISTRY_RIPENCC }, // 192.231.67.0 - 192.231.67.255 { 0xc0e74400, 0xc0e74cff, REGISTRY_ARIN }, // 192.231.68.0 - 192.231.76.255 { 0xc0e74e00, 0xc0e751ff, REGISTRY_ARIN }, // 192.231.78.0 - 192.231.81.255 { 0xc0e75200, 0xc0e752ff, REGISTRY_RIPENCC }, // 192.231.82.0 - 192.231.82.255 { 0xc0e75300, 0xc0e76dff, REGISTRY_ARIN }, // 192.231.83.0 - 192.231.109.255 { 0xc0e76e00, 0xc0e76eff, REGISTRY_LACNIC }, // 192.231.110.0 - 192.231.110.255 { 0xc0e76f00, 0xc0e771ff, REGISTRY_ARIN }, // 192.231.111.0 - 192.231.113.255 { 0xc0e77200, 0xc0e779ff, REGISTRY_LACNIC }, // 192.231.114.0 - 192.231.121.255 { 0xc0e77a00, 0xc0e77eff, REGISTRY_ARIN }, // 192.231.122.0 - 192.231.126.255 { 0xc0e77f00, 0xc0e77fff, REGISTRY_APNIC }, // 192.231.127.0 - 192.231.127.255 { 0xc0e78000, 0xc0e786ff, REGISTRY_ARIN }, // 192.231.128.0 - 192.231.134.255 { 0xc0e78700, 0xc0e788ff, REGISTRY_APNIC }, // 192.231.135.0 - 192.231.136.255 { 0xc0e78a00, 0xc0e78bff, REGISTRY_ARIN }, // 192.231.138.0 - 192.231.139.255 { 0xc0e78c00, 0xc0e78cff, REGISTRY_LACNIC }, // 192.231.140.0 - 192.231.140.255 { 0xc0e78d00, 0xc0e78fff, REGISTRY_ARIN }, // 192.231.141.0 - 192.231.143.255 { 0xc0e79100, 0xc0e7a5ff, REGISTRY_ARIN }, // 192.231.145.0 - 192.231.165.255 { 0xc0e7a600, 0xc0e7aaff, REGISTRY_APNIC }, // 192.231.166.0 - 192.231.170.255 { 0xc0e7ab00, 0xc0e7aeff, REGISTRY_ARIN }, // 192.231.171.0 - 192.231.174.255 { 0xc0e7af00, 0xc0e7b0ff, REGISTRY_LACNIC }, // 192.231.175.0 - 192.231.176.255 { 0xc0e7b100, 0xc0e7b6ff, REGISTRY_ARIN }, // 192.231.177.0 - 192.231.182.255 { 0xc0e7b800, 0xc0e7c0ff, REGISTRY_ARIN }, // 192.231.184.0 - 192.231.192.255 { 0xc0e7c100, 0xc0e7c1ff, REGISTRY_APNIC }, // 192.231.193.0 - 192.231.193.255 { 0xc0e7c200, 0xc0e7caff, REGISTRY_ARIN }, // 192.231.194.0 - 192.231.202.255 { 0xc0e7cb00, 0xc0e7cbff, REGISTRY_APNIC }, // 192.231.203.0 - 192.231.203.255 { 0xc0e7cc00, 0xc0e7d2ff, REGISTRY_ARIN }, // 192.231.204.0 - 192.231.210.255 { 0xc0e7d400, 0xc0e7d4ff, REGISTRY_APNIC }, // 192.231.212.0 - 192.231.212.255 { 0xc0e7d500, 0xc0e7d7ff, REGISTRY_ARIN }, // 192.231.213.0 - 192.231.215.255 { 0xc0e7d900, 0xc0e7d9ff, REGISTRY_ARIN }, // 192.231.217.0 - 192.231.217.255 { 0xc0e7db00, 0xc0e7ecff, REGISTRY_ARIN }, // 192.231.219.0 - 192.231.236.255 { 0xc0e7ef00, 0xc0e7f7ff, REGISTRY_ARIN }, // 192.231.239.0 - 192.231.247.255 { 0xc0e7f900, 0xc0e7fdff, REGISTRY_ARIN }, // 192.231.249.0 - 192.231.253.255 { 0xc0e7fe00, 0xc0e7feff, REGISTRY_AFRINIC }, // 192.231.254.0 - 192.231.254.255 { 0xc0e7ff00, 0xc0e81fff, REGISTRY_ARIN }, // 192.231.255.0 - 192.232.31.255 { 0xc0e84000, 0xc0e87fff, REGISTRY_ARIN }, // 192.232.64.0 - 192.232.127.255 { 0xc0e88000, 0xc0e89fff, REGISTRY_APNIC }, // 192.232.128.0 - 192.232.159.255 { 0xc0e8a000, 0xc0ea39ff, REGISTRY_ARIN }, // 192.232.160.0 - 192.234.57.255 { 0xc0ea3b00, 0xc0eae6ff, REGISTRY_ARIN }, // 192.234.59.0 - 192.234.230.255 { 0xc0eae800, 0xc0eaf4ff, REGISTRY_ARIN }, // 192.234.232.0 - 192.234.244.255 { 0xc0eaf500, 0xc0eaf5ff, REGISTRY_APNIC }, // 192.234.245.0 - 192.234.245.255 { 0xc0eaf600, 0xc0ee00ff, REGISTRY_ARIN }, // 192.234.246.0 - 192.238.0.255 { 0xc0ee0100, 0xc0ee0aff, REGISTRY_RIPENCC }, // 192.238.1.0 - 192.238.10.255 { 0xc0ee0b00, 0xc0f00fff, REGISTRY_ARIN }, // 192.238.11.0 - 192.240.15.255 { 0xc0f01000, 0xc0f01fff, REGISTRY_APNIC }, // 192.240.16.0 - 192.240.31.255 { 0xc0f02000, 0xc0f3ffff, REGISTRY_ARIN }, // 192.240.32.0 - 192.243.255.255 { 0xc0f40000, 0xc0f4ffff, REGISTRY_APNIC }, // 192.244.0.0 - 192.244.255.255 { 0xc0f50000, 0xc0f50aff, REGISTRY_ARIN }, // 192.245.0.0 - 192.245.10.255 { 0xc0f50c00, 0xc0f50cff, REGISTRY_ARIN }, // 192.245.12.0 - 192.245.12.255 { 0xc0f50d00, 0xc0f50eff, REGISTRY_APNIC }, // 192.245.13.0 - 192.245.14.255 { 0xc0f50f00, 0xc0f51dff, REGISTRY_ARIN }, // 192.245.15.0 - 192.245.29.255 { 0xc0f51e00, 0xc0f51eff, REGISTRY_LACNIC }, // 192.245.30.0 - 192.245.30.255 { 0xc0f51f00, 0xc0f521ff, REGISTRY_ARIN }, // 192.245.31.0 - 192.245.33.255 { 0xc0f52400, 0xc0f524ff, REGISTRY_APNIC }, // 192.245.36.0 - 192.245.36.255 { 0xc0f52500, 0xc0f539ff, REGISTRY_ARIN }, // 192.245.37.0 - 192.245.57.255 { 0xc0f53a00, 0xc0f53bff, REGISTRY_APNIC }, // 192.245.58.0 - 192.245.59.255 { 0xc0f53c00, 0xc0f53cff, REGISTRY_LACNIC }, // 192.245.60.0 - 192.245.60.255 { 0xc0f53d00, 0xc0f548ff, REGISTRY_ARIN }, // 192.245.61.0 - 192.245.72.255 { 0xc0f55100, 0xc0f55dff, REGISTRY_ARIN }, // 192.245.81.0 - 192.245.93.255 { 0xc0f55f00, 0xc0f568ff, REGISTRY_ARIN }, // 192.245.95.0 - 192.245.104.255 { 0xc0f56900, 0xc0f570ff, REGISTRY_APNIC }, // 192.245.105.0 - 192.245.112.255 { 0xc0f57100, 0xc0f578ff, REGISTRY_ARIN }, // 192.245.113.0 - 192.245.120.255 { 0xc0f57900, 0xc0f579ff, REGISTRY_LACNIC }, // 192.245.121.0 - 192.245.121.255 { 0xc0f57a00, 0xc0f593ff, REGISTRY_ARIN }, // 192.245.122.0 - 192.245.147.255 { 0xc0f59400, 0xc0f594ff, REGISTRY_AFRINIC }, // 192.245.148.0 - 192.245.148.255 { 0xc0f59500, 0xc0f597ff, REGISTRY_ARIN }, // 192.245.149.0 - 192.245.151.255 { 0xc0f59800, 0xc0f598ff, REGISTRY_RIPENCC }, // 192.245.152.0 - 192.245.152.255 { 0xc0f59900, 0xc0f59aff, REGISTRY_ARIN }, // 192.245.153.0 - 192.245.154.255 { 0xc0f59c00, 0xc0f5a8ff, REGISTRY_ARIN }, // 192.245.156.0 - 192.245.168.255 { 0xc0f5a900, 0xc0f5a9ff, REGISTRY_RIPENCC }, // 192.245.169.0 - 192.245.169.255 { 0xc0f5aa00, 0xc0f5b8ff, REGISTRY_ARIN }, // 192.245.170.0 - 192.245.184.255 { 0xc0f5b900, 0xc0f5b9ff, REGISTRY_APNIC }, // 192.245.185.0 - 192.245.185.255 { 0xc0f5ba00, 0xc0f5bfff, REGISTRY_ARIN }, // 192.245.186.0 - 192.245.191.255 { 0xc0f5c000, 0xc0f5c0ff, REGISTRY_APNIC }, // 192.245.192.0 - 192.245.192.255 { 0xc0f5c100, 0xc0f5c3ff, REGISTRY_ARIN }, // 192.245.193.0 - 192.245.195.255 { 0xc0f5c400, 0xc0f5c4ff, REGISTRY_APNIC }, // 192.245.196.0 - 192.245.196.255 { 0xc0f5c500, 0xc0f5cfff, REGISTRY_ARIN }, // 192.245.197.0 - 192.245.207.255 { 0xc0f5d000, 0xc0f5d0ff, REGISTRY_APNIC }, // 192.245.208.0 - 192.245.208.255 { 0xc0f5d100, 0xc0f5d1ff, REGISTRY_ARIN }, // 192.245.209.0 - 192.245.209.255 { 0xc0f5d200, 0xc0f5d9ff, REGISTRY_APNIC }, // 192.245.210.0 - 192.245.217.255 { 0xc0f5da00, 0xc0f5daff, REGISTRY_ARIN }, // 192.245.218.0 - 192.245.218.255 { 0xc0f5dd00, 0xc0f5e0ff, REGISTRY_ARIN }, // 192.245.221.0 - 192.245.224.255 { 0xc0f5e100, 0xc0f5e1ff, REGISTRY_RIPENCC }, // 192.245.225.0 - 192.245.225.255 { 0xc0f5e200, 0xc0f5f8ff, REGISTRY_ARIN }, // 192.245.226.0 - 192.245.248.255 { 0xc0f5f900, 0xc0f5fbff, REGISTRY_APNIC }, // 192.245.249.0 - 192.245.251.255 { 0xc0f5fc00, 0xc0f700ff, REGISTRY_ARIN }, // 192.245.252.0 - 192.247.0.255 { 0xc0f70100, 0xc0f70aff, REGISTRY_RIPENCC }, // 192.247.1.0 - 192.247.10.255 { 0xc0f70b00, 0xc0f7ffff, REGISTRY_ARIN }, // 192.247.11.0 - 192.247.255.255 { 0xc0f80000, 0xc0f87fff, REGISTRY_APNIC }, // 192.248.0.0 - 192.248.127.255 { 0xc0f88000, 0xc0f90fff, REGISTRY_ARIN }, // 192.248.128.0 - 192.249.15.255 { 0xc0f91000, 0xc0f91fff, REGISTRY_APNIC }, // 192.249.16.0 - 192.249.31.255 { 0xc0f92000, 0xc0f929ff, REGISTRY_ARIN }, // 192.249.32.0 - 192.249.41.255 { 0xc0f92a00, 0xc0f92bff, REGISTRY_APNIC }, // 192.249.42.0 - 192.249.43.255 { 0xc0f92c00, 0xc0fb26ff, REGISTRY_ARIN }, // 192.249.44.0 - 192.251.38.255 { 0xc0fb2700, 0xc0fb27ff, REGISTRY_LACNIC }, // 192.251.39.0 - 192.251.39.255 { 0xc0fb2800, 0xc0fb3cff, REGISTRY_ARIN }, // 192.251.40.0 - 192.251.60.255 { 0xc0fb3d00, 0xc0fb41ff, REGISTRY_RIPENCC }, // 192.251.61.0 - 192.251.65.255 { 0xc0fb4200, 0xc0fb93ff, REGISTRY_ARIN }, // 192.251.66.0 - 192.251.147.255 { 0xc0fb9400, 0xc0fb94ff, REGISTRY_APNIC }, // 192.251.148.0 - 192.251.148.255 { 0xc0fb9500, 0xc0fbc2ff, REGISTRY_ARIN }, // 192.251.149.0 - 192.251.194.255 { 0xc0fbc300, 0xc0fbc3ff, REGISTRY_APNIC }, // 192.251.195.0 - 192.251.195.255 { 0xc0fbc400, 0xc0fbc8ff, REGISTRY_ARIN }, // 192.251.196.0 - 192.251.200.255 { 0xc0fbca00, 0xc0fbcaff, REGISTRY_AFRINIC }, // 192.251.202.0 - 192.251.202.255 { 0xc0fbcb00, 0xc0fbcbff, REGISTRY_ARIN }, // 192.251.203.0 - 192.251.203.255 { 0xc0fbcd00, 0xc0fbcfff, REGISTRY_APNIC }, // 192.251.205.0 - 192.251.207.255 { 0xc0fbd000, 0xc0fbe1ff, REGISTRY_ARIN }, // 192.251.208.0 - 192.251.225.255 { 0xc0fbe200, 0xc0fbe2ff, REGISTRY_RIPENCC }, // 192.251.226.0 - 192.251.226.255 { 0xc0fbe700, 0xc0ffffff, REGISTRY_ARIN }, // 192.251.231.0 - 192.255.255.255 { 0xc1000000, 0xc1001fff, REGISTRY_RIPENCC }, // 193.0.0.0 - 193.0.31.255 { 0xc1002000, 0xc10080ff, REGISTRY_RIPENCC }, // 193.0.32.0 - 193.0.128.255 { 0xc1008200, 0xc10091ff, REGISTRY_RIPENCC }, // 193.0.130.0 - 193.0.145.255 { 0xc1009400, 0xc100afff, REGISTRY_RIPENCC }, // 193.0.148.0 - 193.0.175.255 { 0xc100b000, 0xc100b1ff, REGISTRY_RIPENCC }, // 193.0.176.0 - 193.0.177.255 { 0xc100b200, 0xc100bcff, REGISTRY_RIPENCC }, // 193.0.178.0 - 193.0.188.255 { 0xc100bd00, 0xc100beff, REGISTRY_RIPENCC }, // 193.0.189.0 - 193.0.190.255 { 0xc100bf00, 0xc100c7ff, REGISTRY_RIPENCC }, // 193.0.191.0 - 193.0.199.255 { 0xc100c800, 0xc100cbff, REGISTRY_RIPENCC }, // 193.0.200.0 - 193.0.203.255 { 0xc100cc00, 0xc100d3ff, REGISTRY_RIPENCC }, // 193.0.204.0 - 193.0.211.255 { 0xc100d500, 0xc100e2ff, REGISTRY_RIPENCC }, // 193.0.213.0 - 193.0.226.255 { 0xc100e400, 0xc100e4ff, REGISTRY_RIPENCC }, // 193.0.228.0 - 193.0.228.255 { 0xc100e700, 0xc100e9ff, REGISTRY_RIPENCC }, // 193.0.231.0 - 193.0.233.255 { 0xc100ec00, 0xc100eeff, REGISTRY_RIPENCC }, // 193.0.236.0 - 193.0.238.255 { 0xc100f000, 0xc100f4ff, REGISTRY_RIPENCC }, // 193.0.240.0 - 193.0.244.255 { 0xc100f600, 0xc100ffff, REGISTRY_RIPENCC }, // 193.0.246.0 - 193.0.255.255 { 0xc1010000, 0xc106ffff, REGISTRY_RIPENCC }, // 193.1.0.0 - 193.6.255.255 { 0xc1070000, 0xc107bfff, REGISTRY_RIPENCC }, // 193.7.0.0 - 193.7.191.255 { 0xc107e000, 0xc10800ff, REGISTRY_RIPENCC }, // 193.7.224.0 - 193.8.0.255 { 0xc1080900, 0xc1080bff, REGISTRY_RIPENCC }, // 193.8.9.0 - 193.8.11.255 { 0xc1081000, 0xc10835ff, REGISTRY_RIPENCC }, // 193.8.16.0 - 193.8.53.255 { 0xc1083900, 0xc1083dff, REGISTRY_RIPENCC }, // 193.8.57.0 - 193.8.61.255 { 0xc1084000, 0xc10847ff, REGISTRY_RIPENCC }, // 193.8.64.0 - 193.8.71.255 { 0xc1084a00, 0xc1084fff, REGISTRY_RIPENCC }, // 193.8.74.0 - 193.8.79.255 { 0xc1085600, 0xc1085bff, REGISTRY_RIPENCC }, // 193.8.86.0 - 193.8.91.255 { 0xc1085f00, 0xc1086fff, REGISTRY_RIPENCC }, // 193.8.95.0 - 193.8.111.255 { 0xc1087e00, 0xc1087eff, REGISTRY_RIPENCC }, // 193.8.126.0 - 193.8.126.255 { 0xc1088000, 0xc10889ff, REGISTRY_RIPENCC }, // 193.8.128.0 - 193.8.137.255 { 0xc1088b00, 0xc108a3ff, REGISTRY_RIPENCC }, // 193.8.139.0 - 193.8.163.255 { 0xc108a500, 0xc108a6ff, REGISTRY_RIPENCC }, // 193.8.165.0 - 193.8.166.255 { 0xc108aa00, 0xc108aaff, REGISTRY_RIPENCC }, // 193.8.170.0 - 193.8.170.255 { 0xc108ae00, 0xc108aeff, REGISTRY_RIPENCC }, // 193.8.174.0 - 193.8.174.255 { 0xc108b000, 0xc108b7ff, REGISTRY_RIPENCC }, // 193.8.176.0 - 193.8.183.255 { 0xc108bc00, 0xc108bdff, REGISTRY_RIPENCC }, // 193.8.188.0 - 193.8.189.255 { 0xc108be00, 0xc108bfff, REGISTRY_RIPENCC }, // 193.8.190.0 - 193.8.191.255 { 0xc108c100, 0xc108c1ff, REGISTRY_RIPENCC }, // 193.8.193.0 - 193.8.193.255 { 0xc108c400, 0xc108c9ff, REGISTRY_RIPENCC }, // 193.8.196.0 - 193.8.201.255 { 0xc108cb00, 0xc108ccff, REGISTRY_RIPENCC }, // 193.8.203.0 - 193.8.204.255 { 0xc108d500, 0xc108d5ff, REGISTRY_RIPENCC }, // 193.8.213.0 - 193.8.213.255 { 0xc108d600, 0xc108d6ff, REGISTRY_RIPENCC }, // 193.8.214.0 - 193.8.214.255 { 0xc108de00, 0xc108dfff, REGISTRY_RIPENCC }, // 193.8.222.0 - 193.8.223.255 { 0xc108e600, 0xc108e6ff, REGISTRY_RIPENCC }, // 193.8.230.0 - 193.8.230.255 { 0xc108eb00, 0xc108ebff, REGISTRY_RIPENCC }, // 193.8.235.0 - 193.8.235.255 { 0xc108ef00, 0xc108efff, REGISTRY_RIPENCC }, // 193.8.239.0 - 193.8.239.255 { 0xc108f500, 0xc108f6ff, REGISTRY_RIPENCC }, // 193.8.245.0 - 193.8.246.255 { 0xc108f800, 0xc108f8ff, REGISTRY_RIPENCC }, // 193.8.248.0 - 193.8.248.255 { 0xc108fa00, 0xc108feff, REGISTRY_RIPENCC }, // 193.8.250.0 - 193.8.254.255 { 0xc1090000, 0xc1090eff, REGISTRY_RIPENCC }, // 193.9.0.0 - 193.9.14.255 { 0xc1091000, 0xc10911ff, REGISTRY_RIPENCC }, // 193.9.16.0 - 193.9.17.255 { 0xc1091200, 0xc10912ff, REGISTRY_RIPENCC }, // 193.9.18.0 - 193.9.18.255 { 0xc1091300, 0xc1091cff, REGISTRY_RIPENCC }, // 193.9.19.0 - 193.9.28.255 { 0xc1094000, 0xc1096fff, REGISTRY_RIPENCC }, // 193.9.64.0 - 193.9.111.255 { 0xc1097800, 0xc10997ff, REGISTRY_RIPENCC }, // 193.9.120.0 - 193.9.151.255 { 0xc1099e00, 0xc1099eff, REGISTRY_RIPENCC }, // 193.9.158.0 - 193.9.158.255 { 0xc1099f00, 0xc109feff, REGISTRY_RIPENCC }, // 193.9.159.0 - 193.9.254.255 { 0xc10a0000, 0xc10fffff, REGISTRY_RIPENCC }, // 193.10.0.0 - 193.15.255.255 { 0xc1100100, 0xc11001ff, REGISTRY_RIPENCC }, // 193.16.1.0 - 193.16.1.255 { 0xc1100300, 0xc11007ff, REGISTRY_RIPENCC }, // 193.16.3.0 - 193.16.7.255 { 0xc1101000, 0xc1101fff, REGISTRY_RIPENCC }, // 193.16.16.0 - 193.16.31.255 { 0xc1102b00, 0xc11069ff, REGISTRY_RIPENCC }, // 193.16.43.0 - 193.16.105.255 { 0xc1106b00, 0xc1106dff, REGISTRY_RIPENCC }, // 193.16.107.0 - 193.16.109.255 { 0xc1106f00, 0xc1108fff, REGISTRY_RIPENCC }, // 193.16.111.0 - 193.16.143.255 { 0xc1109200, 0xc11094ff, REGISTRY_RIPENCC }, // 193.16.146.0 - 193.16.148.255 { 0xc1109600, 0xc1109bff, REGISTRY_RIPENCC }, // 193.16.150.0 - 193.16.155.255 { 0xc1109d00, 0xc110d3ff, REGISTRY_RIPENCC }, // 193.16.157.0 - 193.16.211.255 { 0xc110d400, 0xc110d4ff, REGISTRY_RIPENCC }, // 193.16.212.0 - 193.16.212.255 { 0xc110d600, 0xc110d7ff, REGISTRY_RIPENCC }, // 193.16.214.0 - 193.16.215.255 { 0xc110d800, 0xc110dcff, REGISTRY_RIPENCC }, // 193.16.216.0 - 193.16.220.255 { 0xc110de00, 0xc110dfff, REGISTRY_RIPENCC }, // 193.16.222.0 - 193.16.223.255 { 0xc110e000, 0xc110e3ff, REGISTRY_RIPENCC }, // 193.16.224.0 - 193.16.227.255 { 0xc110e400, 0xc110e4ff, REGISTRY_RIPENCC }, // 193.16.228.0 - 193.16.228.255 { 0xc110e500, 0xc110e5ff, REGISTRY_RIPENCC }, // 193.16.229.0 - 193.16.229.255 { 0xc110e600, 0xc110e7ff, REGISTRY_RIPENCC }, // 193.16.230.0 - 193.16.231.255 { 0xc110e800, 0xc110ebff, REGISTRY_RIPENCC }, // 193.16.232.0 - 193.16.235.255 { 0xc110ed00, 0xc110eeff, REGISTRY_RIPENCC }, // 193.16.237.0 - 193.16.238.255 { 0xc110f000, 0xc110f7ff, REGISTRY_RIPENCC }, // 193.16.240.0 - 193.16.247.255 { 0xc110f800, 0xc110feff, REGISTRY_RIPENCC }, // 193.16.248.0 - 193.16.254.255 { 0xc110ff00, 0xc11102ff, REGISTRY_RIPENCC }, // 193.16.255.0 - 193.17.2.255 { 0xc1110800, 0xc1110eff, REGISTRY_RIPENCC }, // 193.17.8.0 - 193.17.14.255 { 0xc1111000, 0xc11113ff, REGISTRY_RIPENCC }, // 193.17.16.0 - 193.17.19.255 { 0xc1111500, 0xc11116ff, REGISTRY_RIPENCC }, // 193.17.21.0 - 193.17.22.255 { 0xc1111900, 0xc11119ff, REGISTRY_RIPENCC }, // 193.17.25.0 - 193.17.25.255 { 0xc1111b00, 0xc1111bff, REGISTRY_RIPENCC }, // 193.17.27.0 - 193.17.27.255 { 0xc1112900, 0xc11136ff, REGISTRY_RIPENCC }, // 193.17.41.0 - 193.17.54.255 { 0xc1113c00, 0xc1113fff, REGISTRY_RIPENCC }, // 193.17.60.0 - 193.17.63.255 { 0xc1114100, 0xc11145ff, REGISTRY_RIPENCC }, // 193.17.65.0 - 193.17.69.255 { 0xc1114700, 0xc1114fff, REGISTRY_RIPENCC }, // 193.17.71.0 - 193.17.79.255 { 0xc1115400, 0xc11155ff, REGISTRY_RIPENCC }, // 193.17.84.0 - 193.17.85.255 { 0xc1116000, 0xc1117fff, REGISTRY_RIPENCC }, // 193.17.96.0 - 193.17.127.255 { 0xc1118000, 0xc111afff, REGISTRY_RIPENCC }, // 193.17.128.0 - 193.17.175.255 { 0xc111b200, 0xc111b2ff, REGISTRY_RIPENCC }, // 193.17.178.0 - 193.17.178.255 { 0xc111b800, 0xc111bbff, REGISTRY_RIPENCC }, // 193.17.184.0 - 193.17.187.255 { 0xc111c000, 0xc111c0ff, REGISTRY_RIPENCC }, // 193.17.192.0 - 193.17.192.255 { 0xc111c200, 0xc111d6ff, REGISTRY_RIPENCC }, // 193.17.194.0 - 193.17.214.255 { 0xc111d800, 0xc111d9ff, REGISTRY_RIPENCC }, // 193.17.216.0 - 193.17.217.255 { 0xc111da00, 0xc111dbff, REGISTRY_RIPENCC }, // 193.17.218.0 - 193.17.219.255 { 0xc111dd00, 0xc111dfff, REGISTRY_RIPENCC }, // 193.17.221.0 - 193.17.223.255 { 0xc111e100, 0xc111e3ff, REGISTRY_RIPENCC }, // 193.17.225.0 - 193.17.227.255 { 0xc111e500, 0xc111e6ff, REGISTRY_RIPENCC }, // 193.17.229.0 - 193.17.230.255 { 0xc111e800, 0xc111fcff, REGISTRY_RIPENCC }, // 193.17.232.0 - 193.17.252.255 { 0xc111fe00, 0xc111feff, REGISTRY_RIPENCC }, // 193.17.254.0 - 193.17.254.255 { 0xc1120000, 0xc11347ff, REGISTRY_RIPENCC }, // 193.18.0.0 - 193.19.71.255 { 0xc1134a00, 0xc1135fff, REGISTRY_RIPENCC }, // 193.19.74.0 - 193.19.95.255 { 0xc1136200, 0xc11369ff, REGISTRY_RIPENCC }, // 193.19.98.0 - 193.19.105.255 { 0xc1136c00, 0xc1137fff, REGISTRY_RIPENCC }, // 193.19.108.0 - 193.19.127.255 { 0xc1138400, 0xc11393ff, REGISTRY_RIPENCC }, // 193.19.132.0 - 193.19.147.255 { 0xc1139800, 0xc113c7ff, REGISTRY_RIPENCC }, // 193.19.152.0 - 193.19.199.255 { 0xc113d000, 0xc113dfff, REGISTRY_RIPENCC }, // 193.19.208.0 - 193.19.223.255 { 0xc113e000, 0xc113e3ff, REGISTRY_RIPENCC }, // 193.19.224.0 - 193.19.227.255 { 0xc113e400, 0xc113e7ff, REGISTRY_RIPENCC }, // 193.19.228.0 - 193.19.231.255 { 0xc113e800, 0xc113ebff, REGISTRY_AFRINIC }, // 193.19.232.0 - 193.19.235.255 { 0xc113ec00, 0xc113f7ff, REGISTRY_RIPENCC }, // 193.19.236.0 - 193.19.247.255 { 0xc113fc00, 0xc11600ff, REGISTRY_RIPENCC }, // 193.19.252.0 - 193.22.0.255 { 0xc1160200, 0xc1160bff, REGISTRY_RIPENCC }, // 193.22.2.0 - 193.22.11.255 { 0xc1161000, 0xc11613ff, REGISTRY_RIPENCC }, // 193.22.16.0 - 193.22.19.255 { 0xc1161c00, 0xc1164fff, REGISTRY_RIPENCC }, // 193.22.28.0 - 193.22.79.255 { 0xc1165100, 0xc11655ff, REGISTRY_RIPENCC }, // 193.22.81.0 - 193.22.85.255 { 0xc1165700, 0xc1165fff, REGISTRY_RIPENCC }, // 193.22.87.0 - 193.22.95.255 { 0xc1166400, 0xc11667ff, REGISTRY_RIPENCC }, // 193.22.100.0 - 193.22.103.255 { 0xc1166b00, 0xc1166bff, REGISTRY_RIPENCC }, // 193.22.107.0 - 193.22.107.255 { 0xc1166d00, 0xc1167fff, REGISTRY_RIPENCC }, // 193.22.109.0 - 193.22.127.255 { 0xc1168c00, 0xc1168cff, REGISTRY_RIPENCC }, // 193.22.140.0 - 193.22.140.255 { 0xc1168e00, 0xc1168fff, REGISTRY_RIPENCC }, // 193.22.142.0 - 193.22.143.255 { 0xc116a000, 0xc116a7ff, REGISTRY_RIPENCC }, // 193.22.160.0 - 193.22.167.255 { 0xc116a900, 0xc116a9ff, REGISTRY_RIPENCC }, // 193.22.169.0 - 193.22.169.255 { 0xc116ab00, 0xc116dfff, REGISTRY_RIPENCC }, // 193.22.171.0 - 193.22.223.255 { 0xc116f200, 0xc116f3ff, REGISTRY_RIPENCC }, // 193.22.242.0 - 193.22.243.255 { 0xc116f500, 0xc116f5ff, REGISTRY_RIPENCC }, // 193.22.245.0 - 193.22.245.255 { 0xc116f800, 0xc116feff, REGISTRY_RIPENCC }, // 193.22.248.0 - 193.22.254.255 { 0xc116ff00, 0xc116ffff, REGISTRY_RIPENCC }, // 193.22.255.0 - 193.22.255.255 { 0xc1170200, 0xc11702ff, REGISTRY_RIPENCC }, // 193.23.2.0 - 193.23.2.255 { 0xc1170800, 0xc1170fff, REGISTRY_RIPENCC }, // 193.23.8.0 - 193.23.15.255 { 0xc1172000, 0xc1172dff, REGISTRY_RIPENCC }, // 193.23.32.0 - 193.23.45.255 { 0xc1173000, 0xc11731ff, REGISTRY_RIPENCC }, // 193.23.48.0 - 193.23.49.255 { 0xc1173300, 0xc11735ff, REGISTRY_RIPENCC }, // 193.23.51.0 - 193.23.53.255 { 0xc1173600, 0xc11736ff, REGISTRY_RIPENCC }, // 193.23.54.0 - 193.23.54.255 { 0xc1173800, 0xc1173bff, REGISTRY_RIPENCC }, // 193.23.56.0 - 193.23.59.255 { 0xc1173d00, 0xc11775ff, REGISTRY_RIPENCC }, // 193.23.61.0 - 193.23.117.255 { 0xc1177700, 0xc1177cff, REGISTRY_RIPENCC }, // 193.23.119.0 - 193.23.124.255 { 0xc1178400, 0xc11784ff, REGISTRY_RIPENCC }, // 193.23.132.0 - 193.23.132.255 { 0xc1178600, 0xc11786ff, REGISTRY_RIPENCC }, // 193.23.134.0 - 193.23.134.255 { 0xc1178800, 0xc1178fff, REGISTRY_RIPENCC }, // 193.23.136.0 - 193.23.143.255 { 0xc1179400, 0xc1179fff, REGISTRY_RIPENCC }, // 193.23.148.0 - 193.23.159.255 { 0xc117a200, 0xc117a3ff, REGISTRY_RIPENCC }, // 193.23.162.0 - 193.23.163.255 { 0xc117a700, 0xc117acff, REGISTRY_RIPENCC }, // 193.23.167.0 - 193.23.172.255 { 0xc117ae00, 0xc117afff, REGISTRY_RIPENCC }, // 193.23.174.0 - 193.23.175.255 { 0xc117b400, 0xc117f1ff, REGISTRY_RIPENCC }, // 193.23.180.0 - 193.23.241.255 { 0xc117f300, 0xc117f4ff, REGISTRY_RIPENCC }, // 193.23.243.0 - 193.23.244.255 { 0xc117f800, 0xc117f8ff, REGISTRY_RIPENCC }, // 193.23.248.0 - 193.23.248.255 { 0xc117fb00, 0xc117fcff, REGISTRY_RIPENCC }, // 193.23.251.0 - 193.23.252.255 { 0xc117fe00, 0xc117ffff, REGISTRY_RIPENCC }, // 193.23.254.0 - 193.23.255.255 { 0xc1180200, 0xc11802ff, REGISTRY_RIPENCC }, // 193.24.2.0 - 193.24.2.255 { 0xc1180700, 0xc11807ff, REGISTRY_RIPENCC }, // 193.24.7.0 - 193.24.7.255 { 0xc1180c00, 0xc1180cff, REGISTRY_RIPENCC }, // 193.24.12.0 - 193.24.12.255 { 0xc1180e00, 0xc1181eff, REGISTRY_RIPENCC }, // 193.24.14.0 - 193.24.30.255 { 0xc1182000, 0xc11823ff, REGISTRY_RIPENCC }, // 193.24.32.0 - 193.24.35.255 { 0xc1182500, 0xc11825ff, REGISTRY_RIPENCC }, // 193.24.37.0 - 193.24.37.255 { 0xc1183000, 0xc118d3ff, REGISTRY_RIPENCC }, // 193.24.48.0 - 193.24.211.255 { 0xc118d800, 0xc118e3ff, REGISTRY_RIPENCC }, // 193.24.216.0 - 193.24.227.255 { 0xc118ec00, 0xc1195fff, REGISTRY_RIPENCC }, // 193.24.236.0 - 193.25.95.255 { 0xc1196200, 0xc11969ff, REGISTRY_RIPENCC }, // 193.25.98.0 - 193.25.105.255 { 0xc1196e00, 0xc11971ff, REGISTRY_RIPENCC }, // 193.25.110.0 - 193.25.113.255 { 0xc1197200, 0xc11973ff, REGISTRY_RIPENCC }, // 193.25.114.0 - 193.25.115.255 { 0xc1197400, 0xc11979ff, REGISTRY_RIPENCC }, // 193.25.116.0 - 193.25.121.255 { 0xc1197c00, 0xc119a7ff, REGISTRY_RIPENCC }, // 193.25.124.0 - 193.25.167.255 { 0xc119aa00, 0xc119bbff, REGISTRY_RIPENCC }, // 193.25.170.0 - 193.25.187.255 { 0xc119be00, 0xc119c1ff, REGISTRY_RIPENCC }, // 193.25.190.0 - 193.25.193.255 { 0xc119c300, 0xc119c3ff, REGISTRY_RIPENCC }, // 193.25.195.0 - 193.25.195.255 { 0xc119c500, 0xc119d1ff, REGISTRY_RIPENCC }, // 193.25.197.0 - 193.25.209.255 { 0xc119d400, 0xc119d5ff, REGISTRY_RIPENCC }, // 193.25.212.0 - 193.25.213.255 { 0xc119dc00, 0xc119deff, REGISTRY_RIPENCC }, // 193.25.220.0 - 193.25.222.255 { 0xc119e000, 0xc119f7ff, REGISTRY_RIPENCC }, // 193.25.224.0 - 193.25.247.255 { 0xc119fe00, 0xc119feff, REGISTRY_RIPENCC }, // 193.25.254.0 - 193.25.254.255 { 0xc11a0100, 0xc11a01ff, REGISTRY_RIPENCC }, // 193.26.1.0 - 193.26.1.255 { 0xc11a0300, 0xc11a0bff, REGISTRY_RIPENCC }, // 193.26.3.0 - 193.26.11.255 { 0xc11a0d00, 0xc11a0dff, REGISTRY_RIPENCC }, // 193.26.13.0 - 193.26.13.255 { 0xc11a0f00, 0xc11a14ff, REGISTRY_RIPENCC }, // 193.26.15.0 - 193.26.20.255 { 0xc11a1700, 0xc11a6fff, REGISTRY_RIPENCC }, // 193.26.23.0 - 193.26.111.255 { 0xc11a7800, 0xc11a78ff, REGISTRY_RIPENCC }, // 193.26.120.0 - 193.26.120.255 { 0xc11a7b00, 0xc11a7eff, REGISTRY_RIPENCC }, // 193.26.123.0 - 193.26.126.255 { 0xc11a8000, 0xc11a84ff, REGISTRY_RIPENCC }, // 193.26.128.0 - 193.26.132.255 { 0xc11a8600, 0xc11a93ff, REGISTRY_RIPENCC }, // 193.26.134.0 - 193.26.147.255 { 0xc11aa000, 0xc11acfff, REGISTRY_RIPENCC }, // 193.26.160.0 - 193.26.207.255 { 0xc11ad100, 0xc11ad1ff, REGISTRY_RIPENCC }, // 193.26.209.0 - 193.26.209.255 { 0xc11ad600, 0xc11ad6ff, REGISTRY_RIPENCC }, // 193.26.214.0 - 193.26.214.255 { 0xc11ad800, 0xc11adaff, REGISTRY_RIPENCC }, // 193.26.216.0 - 193.26.218.255 { 0xc11adc00, 0xc11adeff, REGISTRY_RIPENCC }, // 193.26.220.0 - 193.26.222.255 { 0xc11ae000, 0xc11b07ff, REGISTRY_RIPENCC }, // 193.26.224.0 - 193.27.7.255 { 0xc11b0900, 0xc11b09ff, REGISTRY_RIPENCC }, // 193.27.9.0 - 193.27.9.255 { 0xc11b0b00, 0xc11b0bff, REGISTRY_RIPENCC }, // 193.27.11.0 - 193.27.11.255 { 0xc11b1200, 0xc11b12ff, REGISTRY_RIPENCC }, // 193.27.18.0 - 193.27.18.255 { 0xc11b1400, 0xc11b14ff, REGISTRY_RIPENCC }, // 193.27.20.0 - 193.27.20.255 { 0xc11b1600, 0xc11b16ff, REGISTRY_RIPENCC }, // 193.27.22.0 - 193.27.22.255 { 0xc11b2800, 0xc11b2cff, REGISTRY_RIPENCC }, // 193.27.40.0 - 193.27.44.255 { 0xc11b2e00, 0xc11b3fff, REGISTRY_RIPENCC }, // 193.27.46.0 - 193.27.63.255 { 0xc11b4000, 0xc11b41ff, REGISTRY_RIPENCC }, // 193.27.64.0 - 193.27.65.255 { 0xc11b4200, 0xc11b4bff, REGISTRY_RIPENCC }, // 193.27.66.0 - 193.27.75.255 { 0xc11b4e00, 0xc11bc1ff, REGISTRY_RIPENCC }, // 193.27.78.0 - 193.27.193.255 { 0xc11bc200, 0xc11bc3ff, REGISTRY_RIPENCC }, // 193.27.194.0 - 193.27.195.255 { 0xc11bc400, 0xc11bd3ff, REGISTRY_RIPENCC }, // 193.27.196.0 - 193.27.211.255 { 0xc11bd400, 0xc11bd5ff, REGISTRY_RIPENCC }, // 193.27.212.0 - 193.27.213.255 { 0xc11bd600, 0xc11bdfff, REGISTRY_RIPENCC }, // 193.27.214.0 - 193.27.223.255 { 0xc11be200, 0xc11be3ff, REGISTRY_RIPENCC }, // 193.27.226.0 - 193.27.227.255 { 0xc11be600, 0xc11be7ff, REGISTRY_RIPENCC }, // 193.27.230.0 - 193.27.231.255 { 0xc11bec00, 0xc11bf5ff, REGISTRY_RIPENCC }, // 193.27.236.0 - 193.27.245.255 { 0xc11bfa00, 0xc11c00ff, REGISTRY_RIPENCC }, // 193.27.250.0 - 193.28.0.255 { 0xc11c0500, 0xc11c06ff, REGISTRY_RIPENCC }, // 193.28.5.0 - 193.28.6.255 { 0xc11c0800, 0xc11c0dff, REGISTRY_RIPENCC }, // 193.28.8.0 - 193.28.13.255 { 0xc11c0f00, 0xc11c23ff, REGISTRY_RIPENCC }, // 193.28.15.0 - 193.28.35.255 { 0xc11c2800, 0xc11c2aff, REGISTRY_RIPENCC }, // 193.28.40.0 - 193.28.42.255 { 0xc11c2c00, 0xc11c32ff, REGISTRY_RIPENCC }, // 193.28.44.0 - 193.28.50.255 { 0xc11c3400, 0xc11c35ff, REGISTRY_RIPENCC }, // 193.28.52.0 - 193.28.53.255 { 0xc11c3700, 0xc11c38ff, REGISTRY_RIPENCC }, // 193.28.55.0 - 193.28.56.255 { 0xc11c3d00, 0xc11c3dff, REGISTRY_RIPENCC }, // 193.28.61.0 - 193.28.61.255 { 0xc11c4000, 0xc11c5cff, REGISTRY_RIPENCC }, // 193.28.64.0 - 193.28.92.255 { 0xc11c5e00, 0xc11c5fff, REGISTRY_RIPENCC }, // 193.28.94.0 - 193.28.95.255 { 0xc11c6000, 0xc11c67ff, REGISTRY_RIPENCC }, // 193.28.96.0 - 193.28.103.255 { 0xc11c6b00, 0xc11c8fff, REGISTRY_RIPENCC }, // 193.28.107.0 - 193.28.143.255 { 0xc11c9100, 0xc11c93ff, REGISTRY_RIPENCC }, // 193.28.145.0 - 193.28.147.255 { 0xc11c9500, 0xc11cb0ff, REGISTRY_RIPENCC }, // 193.28.149.0 - 193.28.176.255 { 0xc11cb100, 0xc11cb1ff, REGISTRY_RIPENCC }, // 193.28.177.0 - 193.28.177.255 { 0xc11cb200, 0xc11cb2ff, REGISTRY_RIPENCC }, // 193.28.178.0 - 193.28.178.255 { 0xc11cb400, 0xc11cb5ff, REGISTRY_RIPENCC }, // 193.28.180.0 - 193.28.181.255 { 0xc11cb700, 0xc11cbeff, REGISTRY_RIPENCC }, // 193.28.183.0 - 193.28.190.255 { 0xc11cc000, 0xc11cc9ff, REGISTRY_RIPENCC }, // 193.28.192.0 - 193.28.201.255 { 0xc11ccb00, 0xc11cdbff, REGISTRY_RIPENCC }, // 193.28.203.0 - 193.28.219.255 { 0xc11ce000, 0xc11ce3ff, REGISTRY_RIPENCC }, // 193.28.224.0 - 193.28.227.255 { 0xc11ce400, 0xc11ce4ff, REGISTRY_RIPENCC }, // 193.28.228.0 - 193.28.228.255 { 0xc11ce500, 0xc11cecff, REGISTRY_RIPENCC }, // 193.28.229.0 - 193.28.236.255 { 0xc11cee00, 0xc11cfaff, REGISTRY_RIPENCC }, // 193.28.238.0 - 193.28.250.255 { 0xc11cfb00, 0xc11cfbff, REGISTRY_RIPENCC }, // 193.28.251.0 - 193.28.251.255 { 0xc11cfe00, 0xc11cfeff, REGISTRY_RIPENCC }, // 193.28.254.0 - 193.28.254.255 { 0xc11d0000, 0xc11d00ff, REGISTRY_RIPENCC }, // 193.29.0.0 - 193.29.0.255 { 0xc11d0200, 0xc11d03ff, REGISTRY_RIPENCC }, // 193.29.2.0 - 193.29.3.255 { 0xc11d0500, 0xc11d05ff, REGISTRY_RIPENCC }, // 193.29.5.0 - 193.29.5.255 { 0xc11d0900, 0xc11d09ff, REGISTRY_RIPENCC }, // 193.29.9.0 - 193.29.9.255 { 0xc11d1000, 0xc11d10ff, REGISTRY_RIPENCC }, // 193.29.16.0 - 193.29.16.255 { 0xc11d1300, 0xc11d13ff, REGISTRY_RIPENCC }, // 193.29.19.0 - 193.29.19.255 { 0xc11d1600, 0xc11d17ff, REGISTRY_RIPENCC }, // 193.29.22.0 - 193.29.23.255 { 0xc11d1900, 0xc11d19ff, REGISTRY_RIPENCC }, // 193.29.25.0 - 193.29.25.255 { 0xc11d1b00, 0xc11d1bff, REGISTRY_RIPENCC }, // 193.29.27.0 - 193.29.27.255 { 0xc11d2600, 0xc11d27ff, REGISTRY_RIPENCC }, // 193.29.38.0 - 193.29.39.255 { 0xc11d2b00, 0xc11d2bff, REGISTRY_RIPENCC }, // 193.29.43.0 - 193.29.43.255 { 0xc11d3000, 0xc11d34ff, REGISTRY_RIPENCC }, // 193.29.48.0 - 193.29.52.255 { 0xc11d3500, 0xc11d35ff, REGISTRY_RIPENCC }, // 193.29.53.0 - 193.29.53.255 { 0xc11d3600, 0xc11d37ff, REGISTRY_RIPENCC }, // 193.29.54.0 - 193.29.55.255 { 0xc11d4000, 0xc11d5fff, REGISTRY_RIPENCC }, // 193.29.64.0 - 193.29.95.255 { 0xc11d7000, 0xc11d7fff, REGISTRY_RIPENCC }, // 193.29.112.0 - 193.29.127.255 { 0xc11d8200, 0xc11db0ff, REGISTRY_RIPENCC }, // 193.29.130.0 - 193.29.176.255 { 0xc11dba00, 0xc11dbcff, REGISTRY_RIPENCC }, // 193.29.186.0 - 193.29.188.255 { 0xc11dc000, 0xc11ddfff, REGISTRY_RIPENCC }, // 193.29.192.0 - 193.29.223.255 { 0xc11de200, 0xc11de5ff, REGISTRY_RIPENCC }, // 193.29.226.0 - 193.29.229.255 { 0xc11de800, 0xc11df7ff, REGISTRY_RIPENCC }, // 193.29.232.0 - 193.29.247.255 { 0xc11dfa00, 0xc11dfaff, REGISTRY_RIPENCC }, // 193.29.250.0 - 193.29.250.255 { 0xc11dfc00, 0xc11dfdff, REGISTRY_RIPENCC }, // 193.29.252.0 - 193.29.253.255 { 0xc11dff00, 0xc11e00ff, REGISTRY_RIPENCC }, // 193.29.255.0 - 193.30.0.255 { 0xc11e0300, 0xc11e04ff, REGISTRY_RIPENCC }, // 193.30.3.0 - 193.30.4.255 { 0xc11e1000, 0xc11e12ff, REGISTRY_RIPENCC }, // 193.30.16.0 - 193.30.18.255 { 0xc11e1400, 0xc11e14ff, REGISTRY_RIPENCC }, // 193.30.20.0 - 193.30.20.255 { 0xc11e1800, 0xc11e1fff, REGISTRY_RIPENCC }, // 193.30.24.0 - 193.30.31.255 { 0xc11e2400, 0xc11e27ff, REGISTRY_RIPENCC }, // 193.30.36.0 - 193.30.39.255 { 0xc11e2900, 0xc11e2aff, REGISTRY_RIPENCC }, // 193.30.41.0 - 193.30.42.255 { 0xc11e2c00, 0xc11e57ff, REGISTRY_RIPENCC }, // 193.30.44.0 - 193.30.87.255 { 0xc11e5900, 0xc11e59ff, REGISTRY_RIPENCC }, // 193.30.89.0 - 193.30.89.255 { 0xc11e5d00, 0xc11e5dff, REGISTRY_RIPENCC }, // 193.30.93.0 - 193.30.93.255 { 0xc11e6800, 0xc11e6cff, REGISTRY_RIPENCC }, // 193.30.104.0 - 193.30.108.255 { 0xc11e6e00, 0xc11e70ff, REGISTRY_RIPENCC }, // 193.30.110.0 - 193.30.112.255 { 0xc11e7e00, 0xc11e7fff, REGISTRY_RIPENCC }, // 193.30.126.0 - 193.30.127.255 { 0xc11e8200, 0xc11e85ff, REGISTRY_RIPENCC }, // 193.30.130.0 - 193.30.133.255 { 0xc11e8700, 0xc11ea1ff, REGISTRY_RIPENCC }, // 193.30.135.0 - 193.30.161.255 { 0xc11ea300, 0xc11ea4ff, REGISTRY_RIPENCC }, // 193.30.163.0 - 193.30.164.255 { 0xc11ea700, 0xc11efdff, REGISTRY_RIPENCC }, // 193.30.167.0 - 193.30.253.255 { 0xc11efe00, 0xc11effff, REGISTRY_RIPENCC }, // 193.30.254.0 - 193.30.255.255 { 0xc11f0000, 0xc11f03ff, REGISTRY_RIPENCC }, // 193.31.0.0 - 193.31.3.255 { 0xc11f0700, 0xc11f0bff, REGISTRY_RIPENCC }, // 193.31.7.0 - 193.31.11.255 { 0xc11f0e00, 0xc11f0eff, REGISTRY_RIPENCC }, // 193.31.14.0 - 193.31.14.255 { 0xc11f1200, 0xc11f13ff, REGISTRY_RIPENCC }, // 193.31.18.0 - 193.31.19.255 { 0xc11f3d00, 0xc11f3dff, REGISTRY_RIPENCC }, // 193.31.61.0 - 193.31.61.255 { 0xc11f3f00, 0xc11f3fff, REGISTRY_RIPENCC }, // 193.31.63.0 - 193.31.63.255 { 0xc11f5000, 0xc11f5fff, REGISTRY_RIPENCC }, // 193.31.80.0 - 193.31.95.255 { 0xc11f8000, 0xc11fcfff, REGISTRY_RIPENCC }, // 193.31.128.0 - 193.31.207.255 { 0xc11fd000, 0xc11fdfff, REGISTRY_RIPENCC }, // 193.31.208.0 - 193.31.223.255 { 0xc11fe000, 0xc11ff7ff, REGISTRY_RIPENCC }, // 193.31.224.0 - 193.31.247.255 { 0xc11ffc00, 0xc11ffdff, REGISTRY_RIPENCC }, // 193.31.252.0 - 193.31.253.255 { 0xc1200300, 0xc12003ff, REGISTRY_RIPENCC }, // 193.32.3.0 - 193.32.3.255 { 0xc1200600, 0xc12007ff, REGISTRY_RIPENCC }, // 193.32.6.0 - 193.32.7.255 { 0xc1200900, 0xc12009ff, REGISTRY_RIPENCC }, // 193.32.9.0 - 193.32.9.255 { 0xc1200c00, 0xc1200fff, REGISTRY_RIPENCC }, // 193.32.12.0 - 193.32.15.255 { 0xc1201100, 0xc12016ff, REGISTRY_RIPENCC }, // 193.32.17.0 - 193.32.22.255 { 0xc1201800, 0xc1201bff, REGISTRY_RIPENCC }, // 193.32.24.0 - 193.32.27.255 { 0xc1201e00, 0xc12027ff, REGISTRY_RIPENCC }, // 193.32.30.0 - 193.32.39.255 { 0xc1202900, 0xc12039ff, REGISTRY_RIPENCC }, // 193.32.41.0 - 193.32.57.255 { 0xc1203a00, 0xc1203bff, REGISTRY_RIPENCC }, // 193.32.58.0 - 193.32.59.255 { 0xc1203c00, 0xc12041ff, REGISTRY_RIPENCC }, // 193.32.60.0 - 193.32.65.255 { 0xc1204200, 0xc12043ff, REGISTRY_RIPENCC }, // 193.32.66.0 - 193.32.67.255 { 0xc1204800, 0xc12053ff, REGISTRY_RIPENCC }, // 193.32.72.0 - 193.32.83.255 { 0xc1205800, 0xc1205bff, REGISTRY_RIPENCC }, // 193.32.88.0 - 193.32.91.255 { 0xc1206400, 0xc12065ff, REGISTRY_RIPENCC }, // 193.32.100.0 - 193.32.101.255 { 0xc1206700, 0xc12067ff, REGISTRY_RIPENCC }, // 193.32.103.0 - 193.32.103.255 { 0xc1206a00, 0xc1206dff, REGISTRY_RIPENCC }, // 193.32.106.0 - 193.32.109.255 { 0xc1206f00, 0xc1206fff, REGISTRY_RIPENCC }, // 193.32.111.0 - 193.32.111.255 { 0xc1207600, 0xc1207dff, REGISTRY_RIPENCC }, // 193.32.118.0 - 193.32.125.255 { 0xc120fa00, 0xc12105ff, REGISTRY_RIPENCC }, // 193.32.250.0 - 193.33.5.255 { 0xc1210800, 0xc1211dff, REGISTRY_RIPENCC }, // 193.33.8.0 - 193.33.29.255 { 0xc1211e00, 0xc1211fff, REGISTRY_RIPENCC }, // 193.33.30.0 - 193.33.31.255 { 0xc1212000, 0xc12127ff, REGISTRY_RIPENCC }, // 193.33.32.0 - 193.33.39.255 { 0xc1212a00, 0xc12131ff, REGISTRY_RIPENCC }, // 193.33.42.0 - 193.33.49.255 { 0xc1213400, 0xc12139ff, REGISTRY_RIPENCC }, // 193.33.52.0 - 193.33.57.255 { 0xc1213c00, 0xc1213fff, REGISTRY_RIPENCC }, // 193.33.60.0 - 193.33.63.255 { 0xc1214000, 0xc12141ff, REGISTRY_RIPENCC }, // 193.33.64.0 - 193.33.65.255 { 0xc1214400, 0xc12155ff, REGISTRY_RIPENCC }, // 193.33.68.0 - 193.33.85.255 { 0xc1215800, 0xc12169ff, REGISTRY_RIPENCC }, // 193.33.88.0 - 193.33.105.255 { 0xc1216c00, 0xc1216fff, REGISTRY_RIPENCC }, // 193.33.108.0 - 193.33.111.255 { 0xc1217200, 0xc12181ff, REGISTRY_RIPENCC }, // 193.33.114.0 - 193.33.129.255 { 0xc1218400, 0xc12185ff, REGISTRY_RIPENCC }, // 193.33.132.0 - 193.33.133.255 { 0xc1218600, 0xc12187ff, REGISTRY_RIPENCC }, // 193.33.134.0 - 193.33.135.255 { 0xc1218a00, 0xc1218bff, REGISTRY_RIPENCC }, // 193.33.138.0 - 193.33.139.255 { 0xc1218e00, 0xc121a1ff, REGISTRY_RIPENCC }, // 193.33.142.0 - 193.33.161.255 { 0xc121a600, 0xc121cbff, REGISTRY_RIPENCC }, // 193.33.166.0 - 193.33.203.255 { 0xc121ce00, 0xc121f1ff, REGISTRY_RIPENCC }, // 193.33.206.0 - 193.33.241.255 { 0xc121f400, 0xc121fbff, REGISTRY_RIPENCC }, // 193.33.244.0 - 193.33.251.255 { 0xc121fe00, 0xc12207ff, REGISTRY_RIPENCC }, // 193.33.254.0 - 193.34.7.255 { 0xc1220800, 0xc1220bff, REGISTRY_RIPENCC }, // 193.34.8.0 - 193.34.11.255 { 0xc1220c00, 0xc1224bff, REGISTRY_RIPENCC }, // 193.34.12.0 - 193.34.75.255 { 0xc1225000, 0xc12267ff, REGISTRY_RIPENCC }, // 193.34.80.0 - 193.34.103.255 { 0xc1226800, 0xc1226bff, REGISTRY_RIPENCC }, // 193.34.104.0 - 193.34.107.255 { 0xc1226c00, 0xc12273ff, REGISTRY_RIPENCC }, // 193.34.108.0 - 193.34.115.255 { 0xc1227400, 0xc12277ff, REGISTRY_RIPENCC }, // 193.34.116.0 - 193.34.119.255 { 0xc1227800, 0xc1228fff, REGISTRY_RIPENCC }, // 193.34.120.0 - 193.34.143.255 { 0xc1229000, 0xc12291ff, REGISTRY_RIPENCC }, // 193.34.144.0 - 193.34.145.255 { 0xc1229200, 0xc122c17f, REGISTRY_RIPENCC }, // 193.34.146.0 - 193.34.193.127 { 0xc122c300, 0xc122c47f, REGISTRY_RIPENCC }, // 193.34.195.0 - 193.34.196.127 { 0xc122c500, 0xc122c97f, REGISTRY_RIPENCC }, // 193.34.197.0 - 193.34.201.127 { 0xc122ca00, 0xc122dfff, REGISTRY_RIPENCC }, // 193.34.202.0 - 193.34.223.255 { 0xc122e600, 0xc122e7ff, REGISTRY_RIPENCC }, // 193.34.230.0 - 193.34.231.255 { 0xc122f800, 0xc12300ff, REGISTRY_RIPENCC }, // 193.34.248.0 - 193.35.0.255 { 0xc1230800, 0xc1230dff, REGISTRY_RIPENCC }, // 193.35.8.0 - 193.35.13.255 { 0xc1231900, 0xc12319ff, REGISTRY_RIPENCC }, // 193.35.25.0 - 193.35.25.255 { 0xc1232000, 0xc1233cff, REGISTRY_RIPENCC }, // 193.35.32.0 - 193.35.60.255 { 0xc1233e00, 0xc1233eff, REGISTRY_RIPENCC }, // 193.35.62.0 - 193.35.62.255 { 0xc1234000, 0xc1234fff, REGISTRY_RIPENCC }, // 193.35.64.0 - 193.35.79.255 { 0xc1236000, 0xc12361ff, REGISTRY_RIPENCC }, // 193.35.96.0 - 193.35.97.255 { 0xc1236300, 0xc12364ff, REGISTRY_RIPENCC }, // 193.35.99.0 - 193.35.100.255 { 0xc1236600, 0xc12390ff, REGISTRY_RIPENCC }, // 193.35.102.0 - 193.35.144.255 { 0xc1239200, 0xc12393ff, REGISTRY_RIPENCC }, // 193.35.146.0 - 193.35.147.255 { 0xc1239d00, 0xc123c5ff, REGISTRY_RIPENCC }, // 193.35.157.0 - 193.35.197.255 { 0xc123d900, 0xc123d9ff, REGISTRY_RIPENCC }, // 193.35.217.0 - 193.35.217.255 { 0xc123dc00, 0xc123dfff, REGISTRY_RIPENCC }, // 193.35.220.0 - 193.35.223.255 { 0xc123e800, 0xc12402ff, REGISTRY_RIPENCC }, // 193.35.232.0 - 193.36.2.255 { 0xc1240400, 0xc1242fff, REGISTRY_RIPENCC }, // 193.36.4.0 - 193.36.47.255 { 0xc1244000, 0xc12447ff, REGISTRY_RIPENCC }, // 193.36.64.0 - 193.36.71.255 { 0xc1244b00, 0xc1244bff, REGISTRY_RIPENCC }, // 193.36.75.0 - 193.36.75.255 { 0xc1244d00, 0xc12453ff, REGISTRY_RIPENCC }, // 193.36.77.0 - 193.36.83.255 { 0xc1245700, 0xc12457ff, REGISTRY_RIPENCC }, // 193.36.87.0 - 193.36.87.255 { 0xc1248500, 0xc12485ff, REGISTRY_RIPENCC }, // 193.36.133.0 - 193.36.133.255 { 0xc1248800, 0xc1248fff, REGISTRY_RIPENCC }, // 193.36.136.0 - 193.36.143.255 { 0xc1249800, 0xc124a1ff, REGISTRY_RIPENCC }, // 193.36.152.0 - 193.36.161.255 { 0xc124ad00, 0xc124adff, REGISTRY_RIPENCC }, // 193.36.173.0 - 193.36.173.255 { 0xc124b000, 0xc124b2ff, REGISTRY_RIPENCC }, // 193.36.176.0 - 193.36.178.255 { 0xc124b600, 0xc124b8ff, REGISTRY_RIPENCC }, // 193.36.182.0 - 193.36.184.255 { 0xc124ba00, 0xc124bfff, REGISTRY_RIPENCC }, // 193.36.186.0 - 193.36.191.255 { 0xc124c000, 0xc124dfff, REGISTRY_RIPENCC }, // 193.36.192.0 - 193.36.223.255 { 0xc124e200, 0xc124e2ff, REGISTRY_RIPENCC }, // 193.36.226.0 - 193.36.226.255 { 0xc124e500, 0xc124e6ff, REGISTRY_RIPENCC }, // 193.36.229.0 - 193.36.230.255 { 0xc124f000, 0xc1251fff, REGISTRY_RIPENCC }, // 193.36.240.0 - 193.37.31.255 { 0xc1252300, 0xc12527ff, REGISTRY_RIPENCC }, // 193.37.35.0 - 193.37.39.255 { 0xc1255800, 0xc1256bff, REGISTRY_RIPENCC }, // 193.37.88.0 - 193.37.107.255 { 0xc1257000, 0xc12585ff, REGISTRY_RIPENCC }, // 193.37.112.0 - 193.37.133.255 { 0xc1258700, 0xc12597ff, REGISTRY_RIPENCC }, // 193.37.135.0 - 193.37.151.255 { 0xc1259800, 0xc12598ff, REGISTRY_RIPENCC }, // 193.37.152.0 - 193.37.152.255 { 0xc1259900, 0xc1259aff, REGISTRY_RIPENCC }, // 193.37.153.0 - 193.37.154.255 { 0xc1259c00, 0xc125bfff, REGISTRY_RIPENCC }, // 193.37.156.0 - 193.37.191.255 { 0xc125e100, 0xc125e1ff, REGISTRY_RIPENCC }, // 193.37.225.0 - 193.37.225.255 { 0xc125e400, 0xc125e5ff, REGISTRY_RIPENCC }, // 193.37.228.0 - 193.37.229.255 { 0xc125ec00, 0xc125f7ff, REGISTRY_RIPENCC }, // 193.37.236.0 - 193.37.247.255 { 0xc1260000, 0xc1261fff, REGISTRY_RIPENCC }, // 193.38.0.0 - 193.38.31.255 { 0xc1263000, 0xc12631ff, REGISTRY_RIPENCC }, // 193.38.48.0 - 193.38.49.255 { 0xc1263400, 0xc12634ff, REGISTRY_RIPENCC }, // 193.38.52.0 - 193.38.52.255 { 0xc1263800, 0xc1267fff, REGISTRY_RIPENCC }, // 193.38.56.0 - 193.38.127.255 { 0xc1268e00, 0xc1268fff, REGISTRY_RIPENCC }, // 193.38.142.0 - 193.38.143.255 { 0xc126a000, 0xc126dfff, REGISTRY_RIPENCC }, // 193.38.160.0 - 193.38.223.255 { 0xc1270400, 0xc12705ff, REGISTRY_RIPENCC }, // 193.39.4.0 - 193.39.5.255 { 0xc1270800, 0xc12708ff, REGISTRY_RIPENCC }, // 193.39.8.0 - 193.39.8.255 { 0xc1270b00, 0xc1270bff, REGISTRY_RIPENCC }, // 193.39.11.0 - 193.39.11.255 { 0xc1271000, 0xc1274dff, REGISTRY_RIPENCC }, // 193.39.16.0 - 193.39.77.255 { 0xc1274f00, 0xc12757ff, REGISTRY_RIPENCC }, // 193.39.79.0 - 193.39.87.255 { 0xc1276000, 0xc12788ff, REGISTRY_RIPENCC }, // 193.39.96.0 - 193.39.136.255 { 0xc1278b00, 0xc1278dff, REGISTRY_RIPENCC }, // 193.39.139.0 - 193.39.141.255 { 0xc1279000, 0xc1279fff, REGISTRY_RIPENCC }, // 193.39.144.0 - 193.39.159.255 { 0xc127ac00, 0xc127b7ff, REGISTRY_RIPENCC }, // 193.39.172.0 - 193.39.183.255 { 0xc127c800, 0xc127cfff, REGISTRY_RIPENCC }, // 193.39.200.0 - 193.39.207.255 { 0xc127d200, 0xc127d4ff, REGISTRY_RIPENCC }, // 193.39.210.0 - 193.39.212.255 { 0xc127d600, 0xc127d6ff, REGISTRY_RIPENCC }, // 193.39.214.0 - 193.39.214.255 { 0xc127e000, 0xc127efff, REGISTRY_RIPENCC }, // 193.39.224.0 - 193.39.239.255 { 0xc127f700, 0xc127f9ff, REGISTRY_RIPENCC }, // 193.39.247.0 - 193.39.249.255 { 0xc127fb00, 0xc127fbff, REGISTRY_RIPENCC }, // 193.39.251.0 - 193.39.251.255 { 0xc1280000, 0xc128ffff, REGISTRY_RIPENCC }, // 193.40.0.0 - 193.40.255.255 { 0xc1290000, 0xc1291fff, REGISTRY_RIPENCC }, // 193.41.0.0 - 193.41.31.255 { 0xc1292100, 0xc12921ff, REGISTRY_RIPENCC }, // 193.41.33.0 - 193.41.33.255 { 0xc1292300, 0xc12925ff, REGISTRY_RIPENCC }, // 193.41.35.0 - 193.41.37.255 { 0xc1292800, 0xc1292eff, REGISTRY_RIPENCC }, // 193.41.40.0 - 193.41.46.255 { 0xc1293000, 0xc12933ff, REGISTRY_RIPENCC }, // 193.41.48.0 - 193.41.51.255 { 0xc1293800, 0xc12943ff, REGISTRY_RIPENCC }, // 193.41.56.0 - 193.41.67.255 { 0xc1294700, 0xc12947ff, REGISTRY_RIPENCC }, // 193.41.71.0 - 193.41.71.255 { 0xc1294800, 0xc1294bff, REGISTRY_RIPENCC }, // 193.41.72.0 - 193.41.75.255 { 0xc1294c00, 0xc12951ff, REGISTRY_RIPENCC }, // 193.41.76.0 - 193.41.81.255 { 0xc1295300, 0xc12956ff, REGISTRY_RIPENCC }, // 193.41.83.0 - 193.41.86.255 { 0xc1295800, 0xc1295aff, REGISTRY_RIPENCC }, // 193.41.88.0 - 193.41.90.255 { 0xc1295d00, 0xc12971ff, REGISTRY_RIPENCC }, // 193.41.93.0 - 193.41.113.255 { 0xc1297400, 0xc12975ff, REGISTRY_RIPENCC }, // 193.41.116.0 - 193.41.117.255 { 0xc1297600, 0xc12979ff, REGISTRY_RIPENCC }, // 193.41.118.0 - 193.41.121.255 { 0xc1297c00, 0xc12991ff, REGISTRY_RIPENCC }, // 193.41.124.0 - 193.41.145.255 { 0xc1299200, 0xc12993ff, REGISTRY_AFRINIC }, // 193.41.146.0 - 193.41.147.255 { 0xc1299400, 0xc12999ff, REGISTRY_RIPENCC }, // 193.41.148.0 - 193.41.153.255 { 0xc1299c00, 0xc129bfff, REGISTRY_RIPENCC }, // 193.41.156.0 - 193.41.191.255 { 0xc129c100, 0xc129c6ff, REGISTRY_RIPENCC }, // 193.41.193.0 - 193.41.198.255 { 0xc129c800, 0xc129cbff, REGISTRY_RIPENCC }, // 193.41.200.0 - 193.41.203.255 { 0xc129cd00, 0xc129d3ff, REGISTRY_RIPENCC }, // 193.41.205.0 - 193.41.211.255 { 0xc129d600, 0xc129e1ff, REGISTRY_RIPENCC }, // 193.41.214.0 - 193.41.225.255 { 0xc129e300, 0xc129ecff, REGISTRY_RIPENCC }, // 193.41.227.0 - 193.41.236.255 { 0xc129ee00, 0xc129ffff, REGISTRY_RIPENCC }, // 193.41.238.0 - 193.41.255.255 { 0xc12a0200, 0xc12a03ff, REGISTRY_RIPENCC }, // 193.42.2.0 - 193.42.3.255 { 0xc12a0800, 0xc12a0aff, REGISTRY_RIPENCC }, // 193.42.8.0 - 193.42.10.255 { 0xc12a0d00, 0xc12a0eff, REGISTRY_RIPENCC }, // 193.42.13.0 - 193.42.14.255 { 0xc12a4000, 0xc12a5fff, REGISTRY_RIPENCC }, // 193.42.64.0 - 193.42.95.255 { 0xc12a8500, 0xc12a86ff, REGISTRY_RIPENCC }, // 193.42.133.0 - 193.42.134.255 { 0xc12a8a00, 0xc12a94ff, REGISTRY_RIPENCC }, // 193.42.138.0 - 193.42.148.255 { 0xc12a9600, 0xc12a99ff, REGISTRY_RIPENCC }, // 193.42.150.0 - 193.42.153.255 { 0xc12a9a00, 0xc12a9aff, REGISTRY_RIPENCC }, // 193.42.154.0 - 193.42.154.255 { 0xc12a9b00, 0xc12ad1ff, REGISTRY_RIPENCC }, // 193.42.155.0 - 193.42.209.255 { 0xc12ad300, 0xc12ad5ff, REGISTRY_RIPENCC }, // 193.42.211.0 - 193.42.213.255 { 0xc12ad700, 0xc12ad8ff, REGISTRY_RIPENCC }, // 193.42.215.0 - 193.42.216.255 { 0xc12ada00, 0xc12adaff, REGISTRY_RIPENCC }, // 193.42.218.0 - 193.42.218.255 { 0xc12adc00, 0xc12adfff, REGISTRY_RIPENCC }, // 193.42.220.0 - 193.42.223.255 { 0xc12ae400, 0xc12aefff, REGISTRY_RIPENCC }, // 193.42.228.0 - 193.42.239.255 { 0xc12af800, 0xc12b07ff, REGISTRY_RIPENCC }, // 193.42.248.0 - 193.43.7.255 { 0xc12b0c00, 0xc12b0dff, REGISTRY_RIPENCC }, // 193.43.12.0 - 193.43.13.255 { 0xc12b0f00, 0xc12b13ff, REGISTRY_RIPENCC }, // 193.43.15.0 - 193.43.19.255 { 0xc12b1800, 0xc12b1bff, REGISTRY_RIPENCC }, // 193.43.24.0 - 193.43.27.255 { 0xc12b1d00, 0xc12b1dff, REGISTRY_RIPENCC }, // 193.43.29.0 - 193.43.29.255 { 0xc12b2200, 0xc12b24ff, REGISTRY_RIPENCC }, // 193.43.34.0 - 193.43.36.255 { 0xc12b2600, 0xc12b27ff, REGISTRY_RIPENCC }, // 193.43.38.0 - 193.43.39.255 { 0xc12b2c00, 0xc12b3fff, REGISTRY_RIPENCC }, // 193.43.44.0 - 193.43.63.255 { 0xc12b4900, 0xc12b49ff, REGISTRY_RIPENCC }, // 193.43.73.0 - 193.43.73.255 { 0xc12b4c00, 0xc12b4eff, REGISTRY_RIPENCC }, // 193.43.76.0 - 193.43.78.255 { 0xc12b5000, 0xc12b5aff, REGISTRY_RIPENCC }, // 193.43.80.0 - 193.43.90.255 { 0xc12b5c00, 0xc12b5dff, REGISTRY_RIPENCC }, // 193.43.92.0 - 193.43.93.255 { 0xc12b5f00, 0xc12b61ff, REGISTRY_RIPENCC }, // 193.43.95.0 - 193.43.97.255 { 0xc12b6500, 0xc12b6dff, REGISTRY_RIPENCC }, // 193.43.101.0 - 193.43.109.255 { 0xc12b6f00, 0xc12b75ff, REGISTRY_RIPENCC }, // 193.43.111.0 - 193.43.117.255 { 0xc12b7800, 0xc12b7dff, REGISTRY_RIPENCC }, // 193.43.120.0 - 193.43.125.255 { 0xc12b7f00, 0xc12b85ff, REGISTRY_RIPENCC }, // 193.43.127.0 - 193.43.133.255 { 0xc12b8900, 0xc12b89ff, REGISTRY_RIPENCC }, // 193.43.137.0 - 193.43.137.255 { 0xc12b8d00, 0xc12b8dff, REGISTRY_RIPENCC }, // 193.43.141.0 - 193.43.141.255 { 0xc12b9000, 0xc12b90ff, REGISTRY_RIPENCC }, // 193.43.144.0 - 193.43.144.255 { 0xc12b9400, 0xc12b94ff, REGISTRY_RIPENCC }, // 193.43.148.0 - 193.43.148.255 { 0xc12b9600, 0xc12b9eff, REGISTRY_RIPENCC }, // 193.43.150.0 - 193.43.158.255 { 0xc12ba000, 0xc12bffff, REGISTRY_RIPENCC }, // 193.43.160.0 - 193.43.255.255 { 0xc12c0000, 0xc12dffff, REGISTRY_RIPENCC }, // 193.44.0.0 - 193.45.255.255 { 0xc12e0100, 0xc12e13ff, REGISTRY_RIPENCC }, // 193.46.1.0 - 193.46.19.255 { 0xc12e2800, 0xc12e37ff, REGISTRY_RIPENCC }, // 193.46.40.0 - 193.46.55.255 { 0xc12e3a00, 0xc12e42ff, REGISTRY_RIPENCC }, // 193.46.58.0 - 193.46.66.255 { 0xc12e4400, 0xc12e48ff, REGISTRY_RIPENCC }, // 193.46.68.0 - 193.46.72.255 { 0xc12e4900, 0xc12e49ff, REGISTRY_RIPENCC }, // 193.46.73.0 - 193.46.73.255 { 0xc12e4b00, 0xc12e4dff, REGISTRY_RIPENCC }, // 193.46.75.0 - 193.46.77.255 { 0xc12e5000, 0xc12eabff, REGISTRY_RIPENCC }, // 193.46.80.0 - 193.46.171.255 { 0xc12eb400, 0xc12ebfff, REGISTRY_RIPENCC }, // 193.46.180.0 - 193.46.191.255 { 0xc12ec900, 0xc12ecbff, REGISTRY_RIPENCC }, // 193.46.201.0 - 193.46.203.255 { 0xc12ecd00, 0xc12ed2ff, REGISTRY_RIPENCC }, // 193.46.205.0 - 193.46.210.255 { 0xc12ed400, 0xc12ed5ff, REGISTRY_RIPENCC }, // 193.46.212.0 - 193.46.213.255 { 0xc12ed700, 0xc12ed7ff, REGISTRY_RIPENCC }, // 193.46.215.0 - 193.46.215.255 { 0xc12edd00, 0xc12eddff, REGISTRY_RIPENCC }, // 193.46.221.0 - 193.46.221.255 { 0xc12ee000, 0xc12ee7ff, REGISTRY_RIPENCC }, // 193.46.224.0 - 193.46.231.255 { 0xc12eea00, 0xc12eefff, REGISTRY_RIPENCC }, // 193.46.234.0 - 193.46.239.255 { 0xc12ef800, 0xc12ef9ff, REGISTRY_RIPENCC }, // 193.46.248.0 - 193.46.249.255 { 0xc12efd00, 0xc12efdff, REGISTRY_RIPENCC }, // 193.46.253.0 - 193.46.253.255 { 0xc12f0000, 0xc12f1fff, REGISTRY_RIPENCC }, // 193.47.0.0 - 193.47.31.255 { 0xc12f4700, 0xc12f4aff, REGISTRY_RIPENCC }, // 193.47.71.0 - 193.47.74.255 { 0xc12f4c00, 0xc12f55ff, REGISTRY_RIPENCC }, // 193.47.76.0 - 193.47.85.255 { 0xc12f5700, 0xc12f95ff, REGISTRY_RIPENCC }, // 193.47.87.0 - 193.47.149.255 { 0xc12f9700, 0xc12fc0ff, REGISTRY_RIPENCC }, // 193.47.151.0 - 193.47.192.255 { 0xc12fc200, 0xc12fe9ff, REGISTRY_RIPENCC }, // 193.47.194.0 - 193.47.233.255 { 0xc12ff600, 0xc12ffdff, REGISTRY_RIPENCC }, // 193.47.246.0 - 193.47.253.255 { 0xc12fff00, 0xc12fffff, REGISTRY_RIPENCC }, // 193.47.255.0 - 193.47.255.255 { 0xc1300000, 0xc134ffff, REGISTRY_RIPENCC }, // 193.48.0.0 - 193.52.255.255 { 0xc1350300, 0xc13504ff, REGISTRY_RIPENCC }, // 193.53.3.0 - 193.53.4.255 { 0xc1350600, 0xc13506ff, REGISTRY_RIPENCC }, // 193.53.6.0 - 193.53.6.255 { 0xc1350800, 0xc13509ff, REGISTRY_RIPENCC }, // 193.53.8.0 - 193.53.9.255 { 0xc1350d00, 0xc13516ff, REGISTRY_RIPENCC }, // 193.53.13.0 - 193.53.22.255 { 0xc1351700, 0xc13517ff, REGISTRY_RIPENCC }, // 193.53.23.0 - 193.53.23.255 { 0xc1351800, 0xc13522ff, REGISTRY_RIPENCC }, // 193.53.24.0 - 193.53.34.255 { 0xc1352400, 0xc13527ff, REGISTRY_RIPENCC }, // 193.53.36.0 - 193.53.39.255 { 0xc1352900, 0xc13550ff, REGISTRY_RIPENCC }, // 193.53.41.0 - 193.53.80.255 { 0xc1355300, 0xc13556ff, REGISTRY_RIPENCC }, // 193.53.83.0 - 193.53.86.255 { 0xc1355800, 0xc13559ff, REGISTRY_RIPENCC }, // 193.53.88.0 - 193.53.89.255 { 0xc1355c00, 0xc1355fff, REGISTRY_RIPENCC }, // 193.53.92.0 - 193.53.95.255 { 0xc1356300, 0xc13566ff, REGISTRY_RIPENCC }, // 193.53.99.0 - 193.53.102.255 { 0xc1356a00, 0xc1356cff, REGISTRY_RIPENCC }, // 193.53.106.0 - 193.53.108.255 { 0xc1356d00, 0xc13570ff, REGISTRY_RIPENCC }, // 193.53.109.0 - 193.53.112.255 { 0xc1357100, 0xc1357dff, REGISTRY_RIPENCC }, // 193.53.113.0 - 193.53.125.255 { 0xc1358000, 0xc1359fff, REGISTRY_RIPENCC }, // 193.53.128.0 - 193.53.159.255 { 0xc135aa00, 0xc135f4ff, REGISTRY_RIPENCC }, // 193.53.170.0 - 193.53.244.255 { 0xc135f800, 0xc135f8ff, REGISTRY_RIPENCC }, // 193.53.248.0 - 193.53.248.255 { 0xc135ff00, 0xc135ffff, REGISTRY_RIPENCC }, // 193.53.255.0 - 193.53.255.255 { 0xc1360000, 0xc137ffff, REGISTRY_RIPENCC }, // 193.54.0.0 - 193.55.255.255 { 0xc1380400, 0xc13807ff, REGISTRY_RIPENCC }, // 193.56.4.0 - 193.56.7.255 { 0xc1380f00, 0xc1380fff, REGISTRY_RIPENCC }, // 193.56.15.0 - 193.56.15.255 { 0xc1382000, 0xc13828ff, REGISTRY_RIPENCC }, // 193.56.32.0 - 193.56.40.255 { 0xc1382a00, 0xc13835ff, REGISTRY_RIPENCC }, // 193.56.42.0 - 193.56.53.255 { 0xc1383a00, 0xc1383aff, REGISTRY_RIPENCC }, // 193.56.58.0 - 193.56.58.255 { 0xc1383c00, 0xc1383cff, REGISTRY_RIPENCC }, // 193.56.60.0 - 193.56.60.255 { 0xc1385000, 0xc13867ff, REGISTRY_RIPENCC }, // 193.56.80.0 - 193.56.103.255 { 0xc1386a00, 0xc1386aff, REGISTRY_RIPENCC }, // 193.56.106.0 - 193.56.106.255 { 0xc1386c00, 0xc1386fff, REGISTRY_RIPENCC }, // 193.56.108.0 - 193.56.111.255 { 0xc1387200, 0xc13873ff, REGISTRY_RIPENCC }, // 193.56.114.0 - 193.56.115.255 { 0xc1387700, 0xc13877ff, REGISTRY_RIPENCC }, // 193.56.119.0 - 193.56.119.255 { 0xc1387f00, 0xc13880ff, REGISTRY_RIPENCC }, // 193.56.127.0 - 193.56.128.255 { 0xc1388800, 0xc1388fff, REGISTRY_RIPENCC }, // 193.56.136.0 - 193.56.143.255 { 0xc1389d00, 0xc1389dff, REGISTRY_RIPENCC }, // 193.56.157.0 - 193.56.157.255 { 0xc138a000, 0xc138a1ff, REGISTRY_RIPENCC }, // 193.56.160.0 - 193.56.161.255 { 0xc138ac00, 0xc138acff, REGISTRY_RIPENCC }, // 193.56.172.0 - 193.56.172.255 { 0xc138b800, 0xc138b8ff, REGISTRY_RIPENCC }, // 193.56.184.0 - 193.56.184.255 { 0xc138bb00, 0xc138bbff, REGISTRY_RIPENCC }, // 193.56.187.0 - 193.56.187.255 { 0xc138bd00, 0xc138bdff, REGISTRY_RIPENCC }, // 193.56.189.0 - 193.56.189.255 { 0xc138bf00, 0xc138bfff, REGISTRY_RIPENCC }, // 193.56.191.0 - 193.56.191.255 { 0xc138c100, 0xc138c1ff, REGISTRY_RIPENCC }, // 193.56.193.0 - 193.56.193.255 { 0xc138ca00, 0xc138caff, REGISTRY_RIPENCC }, // 193.56.202.0 - 193.56.202.255 { 0xc138d100, 0xc138d3ff, REGISTRY_RIPENCC }, // 193.56.209.0 - 193.56.211.255 { 0xc138d800, 0xc138dbff, REGISTRY_RIPENCC }, // 193.56.216.0 - 193.56.219.255 { 0xc138e100, 0xc138e1ff, REGISTRY_RIPENCC }, // 193.56.225.0 - 193.56.225.255 { 0xc138e400, 0xc138edff, REGISTRY_RIPENCC }, // 193.56.228.0 - 193.56.237.255 { 0xc138f100, 0xc138f6ff, REGISTRY_RIPENCC }, // 193.56.241.0 - 193.56.246.255 { 0xc1390500, 0xc13906ff, REGISTRY_RIPENCC }, // 193.57.5.0 - 193.57.6.255 { 0xc1390a00, 0xc1390dff, REGISTRY_RIPENCC }, // 193.57.10.0 - 193.57.13.255 { 0xc1391400, 0xc13914ff, REGISTRY_RIPENCC }, // 193.57.20.0 - 193.57.20.255 { 0xc1391800, 0xc1391aff, REGISTRY_RIPENCC }, // 193.57.24.0 - 193.57.26.255 { 0xc1392000, 0xc13920ff, REGISTRY_RIPENCC }, // 193.57.32.0 - 193.57.32.255 { 0xc1392200, 0xc13922ff, REGISTRY_RIPENCC }, // 193.57.34.0 - 193.57.34.255 { 0xc1393000, 0xc13931ff, REGISTRY_RIPENCC }, // 193.57.48.0 - 193.57.49.255 { 0xc1393800, 0xc13938ff, REGISTRY_RIPENCC }, // 193.57.56.0 - 193.57.56.255 { 0xc1394000, 0xc13940ff, REGISTRY_RIPENCC }, // 193.57.64.0 - 193.57.64.255 { 0xc1394200, 0xc13947ff, REGISTRY_RIPENCC }, // 193.57.66.0 - 193.57.71.255 { 0xc1394d00, 0xc1394fff, REGISTRY_RIPENCC }, // 193.57.77.0 - 193.57.79.255 { 0xc1395400, 0xc13957ff, REGISTRY_RIPENCC }, // 193.57.84.0 - 193.57.87.255 { 0xc1395b00, 0xc1395cff, REGISTRY_RIPENCC }, // 193.57.91.0 - 193.57.92.255 { 0xc1396000, 0xc13961ff, REGISTRY_RIPENCC }, // 193.57.96.0 - 193.57.97.255 { 0xc1396900, 0xc1396bff, REGISTRY_RIPENCC }, // 193.57.105.0 - 193.57.107.255 { 0xc1396d00, 0xc1397eff, REGISTRY_RIPENCC }, // 193.57.109.0 - 193.57.126.255 { 0xc1398400, 0xc13987ff, REGISTRY_RIPENCC }, // 193.57.132.0 - 193.57.135.255 { 0xc1398d00, 0xc1398dff, REGISTRY_RIPENCC }, // 193.57.141.0 - 193.57.141.255 { 0xc1399100, 0xc13991ff, REGISTRY_RIPENCC }, // 193.57.145.0 - 193.57.145.255 { 0xc1399800, 0xc1399eff, REGISTRY_RIPENCC }, // 193.57.152.0 - 193.57.158.255 { 0xc139a600, 0xc139a6ff, REGISTRY_RIPENCC }, // 193.57.166.0 - 193.57.166.255 { 0xc139a900, 0xc139acff, REGISTRY_RIPENCC }, // 193.57.169.0 - 193.57.172.255 { 0xc139b000, 0xc139c7ff, REGISTRY_RIPENCC }, // 193.57.176.0 - 193.57.199.255 { 0xc139c900, 0xc139c9ff, REGISTRY_RIPENCC }, // 193.57.201.0 - 193.57.201.255 { 0xc139cc00, 0xc139cdff, REGISTRY_RIPENCC }, // 193.57.204.0 - 193.57.205.255 { 0xc139d900, 0xc139deff, REGISTRY_RIPENCC }, // 193.57.217.0 - 193.57.222.255 { 0xc139e100, 0xc139e1ff, REGISTRY_RIPENCC }, // 193.57.225.0 - 193.57.225.255 { 0xc139e800, 0xc139f7ff, REGISTRY_RIPENCC }, // 193.57.232.0 - 193.57.247.255 { 0xc139f900, 0xc13a06ff, REGISTRY_RIPENCC }, // 193.57.249.0 - 193.58.6.255 { 0xc13a0700, 0xc13a0fff, REGISTRY_RIPENCC }, // 193.58.7.0 - 193.58.15.255 { 0xc13a1000, 0xc13a23ff, REGISTRY_RIPENCC }, // 193.58.16.0 - 193.58.35.255 { 0xc13a2800, 0xc13a29ff, REGISTRY_RIPENCC }, // 193.58.40.0 - 193.58.41.255 { 0xc13a2c00, 0xc13a57ff, REGISTRY_RIPENCC }, // 193.58.44.0 - 193.58.87.255 { 0xc13a5c00, 0xc13a5fff, REGISTRY_RIPENCC }, // 193.58.92.0 - 193.58.95.255 { 0xc13a8000, 0xc13a83ff, REGISTRY_RIPENCC }, // 193.58.128.0 - 193.58.131.255 { 0xc13a8800, 0xc13a8fff, REGISTRY_RIPENCC }, // 193.58.136.0 - 193.58.143.255 { 0xc13a9400, 0xc13a95ff, REGISTRY_RIPENCC }, // 193.58.148.0 - 193.58.149.255 { 0xc13a9b00, 0xc13aa3ff, REGISTRY_RIPENCC }, // 193.58.155.0 - 193.58.163.255 { 0xc13aac00, 0xc13aacff, REGISTRY_RIPENCC }, // 193.58.172.0 - 193.58.172.255 { 0xc13ac000, 0xc13aecff, REGISTRY_RIPENCC }, // 193.58.192.0 - 193.58.236.255 { 0xc13aee00, 0xc13aefff, REGISTRY_RIPENCC }, // 193.58.238.0 - 193.58.239.255 { 0xc13af100, 0xc13af7ff, REGISTRY_RIPENCC }, // 193.58.241.0 - 193.58.247.255 { 0xc13afa00, 0xc13afdff, REGISTRY_RIPENCC }, // 193.58.250.0 - 193.58.253.255 { 0xc13aff00, 0xc13affff, REGISTRY_RIPENCC }, // 193.58.255.0 - 193.58.255.255 { 0xc13b0000, 0xc153ffff, REGISTRY_RIPENCC }, // 193.59.0.0 - 193.83.255.255 { 0xc1540000, 0xc15400ff, REGISTRY_RIPENCC }, // 193.84.0.0 - 193.84.0.255 { 0xc1540700, 0xc1540aff, REGISTRY_RIPENCC }, // 193.84.7.0 - 193.84.10.255 { 0xc1540c00, 0xc1540fff, REGISTRY_RIPENCC }, // 193.84.12.0 - 193.84.15.255 { 0xc1541100, 0xc15412ff, REGISTRY_RIPENCC }, // 193.84.17.0 - 193.84.18.255 { 0xc1541400, 0xc1541dff, REGISTRY_RIPENCC }, // 193.84.20.0 - 193.84.29.255 { 0xc1541f00, 0xc1542fff, REGISTRY_RIPENCC }, // 193.84.31.0 - 193.84.47.255 { 0xc1543200, 0xc15445ff, REGISTRY_RIPENCC }, // 193.84.50.0 - 193.84.69.255 { 0xc1544700, 0xc15449ff, REGISTRY_RIPENCC }, // 193.84.71.0 - 193.84.73.255 { 0xc1544b00, 0xc1544dff, REGISTRY_RIPENCC }, // 193.84.75.0 - 193.84.77.255 { 0xc1544f00, 0xc15454ff, REGISTRY_RIPENCC }, // 193.84.79.0 - 193.84.84.255 { 0xc1545600, 0xc15457ff, REGISTRY_RIPENCC }, // 193.84.86.0 - 193.84.87.255 { 0xc1545900, 0xc15459ff, REGISTRY_RIPENCC }, // 193.84.89.0 - 193.84.89.255 { 0xc1545b00, 0xc1545bff, REGISTRY_RIPENCC }, // 193.84.91.0 - 193.84.91.255 { 0xc1545e00, 0xc15463ff, REGISTRY_RIPENCC }, // 193.84.94.0 - 193.84.99.255 { 0xc1546800, 0xc1546bff, REGISTRY_RIPENCC }, // 193.84.104.0 - 193.84.107.255 { 0xc1547000, 0xc15470ff, REGISTRY_RIPENCC }, // 193.84.112.0 - 193.84.112.255 { 0xc1547400, 0xc15475ff, REGISTRY_RIPENCC }, // 193.84.116.0 - 193.84.117.255 { 0xc1548000, 0xc15481ff, REGISTRY_RIPENCC }, // 193.84.128.0 - 193.84.129.255 { 0xc1548e00, 0xc154b2ff, REGISTRY_RIPENCC }, // 193.84.142.0 - 193.84.178.255 { 0xc154b500, 0xc154baff, REGISTRY_RIPENCC }, // 193.84.181.0 - 193.84.186.255 { 0xc154c000, 0xc154efff, REGISTRY_RIPENCC }, // 193.84.192.0 - 193.84.239.255 { 0xc154f500, 0xc154f6ff, REGISTRY_RIPENCC }, // 193.84.245.0 - 193.84.246.255 { 0xc154fb00, 0xc154fcff, REGISTRY_RIPENCC }, // 193.84.251.0 - 193.84.252.255 { 0xc154ff00, 0xc154ffff, REGISTRY_RIPENCC }, // 193.84.255.0 - 193.84.255.255 { 0xc1550000, 0xc15cffff, REGISTRY_RIPENCC }, // 193.85.0.0 - 193.92.255.255 { 0xc15d0000, 0xc15d03ff, REGISTRY_RIPENCC }, // 193.93.0.0 - 193.93.3.255 { 0xc15d0800, 0xc15d1bff, REGISTRY_RIPENCC }, // 193.93.8.0 - 193.93.27.255 { 0xc15d2000, 0xc15d4fff, REGISTRY_RIPENCC }, // 193.93.32.0 - 193.93.79.255 { 0xc15d5400, 0xc15dbfff, REGISTRY_RIPENCC }, // 193.93.84.0 - 193.93.191.255 { 0xc15dc000, 0xc15dc3ff, REGISTRY_RIPENCC }, // 193.93.192.0 - 193.93.195.255 { 0xc15dc400, 0xc15de7ff, REGISTRY_RIPENCC }, // 193.93.196.0 - 193.93.231.255 { 0xc15dec00, 0xc15df7ff, REGISTRY_RIPENCC }, // 193.93.236.0 - 193.93.247.255 { 0xc15df800, 0xc15dfbff, REGISTRY_RIPENCC }, // 193.93.248.0 - 193.93.251.255 { 0xc15dfc00, 0xc15dffff, REGISTRY_RIPENCC }, // 193.93.252.0 - 193.93.255.255 { 0xc15e0000, 0xc15effff, REGISTRY_RIPENCC }, // 193.94.0.0 - 193.94.255.255 { 0xc15f0000, 0xc15f7fff, REGISTRY_AFRINIC }, // 193.95.0.0 - 193.95.127.255 { 0xc15f8000, 0xc167ffff, REGISTRY_RIPENCC }, // 193.95.128.0 - 193.103.255.255 { 0xc1680000, 0xc16806ff, REGISTRY_RIPENCC }, // 193.104.0.0 - 193.104.6.255 { 0xc1680800, 0xc1680bff, REGISTRY_RIPENCC }, // 193.104.8.0 - 193.104.11.255 { 0xc1680d00, 0xc16828ff, REGISTRY_RIPENCC }, // 193.104.13.0 - 193.104.40.255 { 0xc1682a00, 0xc16842ff, REGISTRY_RIPENCC }, // 193.104.42.0 - 193.104.66.255 { 0xc1684400, 0xc1684fff, REGISTRY_RIPENCC }, // 193.104.68.0 - 193.104.79.255 { 0xc1685100, 0xc1685cff, REGISTRY_RIPENCC }, // 193.104.81.0 - 193.104.92.255 { 0xc1685f00, 0xc1686dff, REGISTRY_RIPENCC }, // 193.104.95.0 - 193.104.109.255 { 0xc1686f00, 0xc16881ff, REGISTRY_RIPENCC }, // 193.104.111.0 - 193.104.129.255 { 0xc1688300, 0xc1688cff, REGISTRY_RIPENCC }, // 193.104.131.0 - 193.104.140.255 { 0xc1688e00, 0xc16898ff, REGISTRY_RIPENCC }, // 193.104.142.0 - 193.104.152.255 { 0xc1689a00, 0xc168afff, REGISTRY_RIPENCC }, // 193.104.154.0 - 193.104.175.255 { 0xc168b100, 0xc168bdff, REGISTRY_RIPENCC }, // 193.104.177.0 - 193.104.189.255 { 0xc168bf00, 0xc168c5ff, REGISTRY_RIPENCC }, // 193.104.191.0 - 193.104.197.255 { 0xc168c700, 0xc168d2ff, REGISTRY_RIPENCC }, // 193.104.199.0 - 193.104.210.255 { 0xc168d400, 0xc168ddff, REGISTRY_RIPENCC }, // 193.104.212.0 - 193.104.221.255 { 0xc168df00, 0xc168fbff, REGISTRY_RIPENCC }, // 193.104.223.0 - 193.104.251.255 { 0xc168fd00, 0xc1691bff, REGISTRY_RIPENCC }, // 193.104.253.0 - 193.105.27.255 { 0xc1691d00, 0xc1691eff, REGISTRY_RIPENCC }, // 193.105.29.0 - 193.105.30.255 { 0xc1692000, 0xc16939ff, REGISTRY_RIPENCC }, // 193.105.32.0 - 193.105.57.255 { 0xc1693b00, 0xc16950ff, REGISTRY_RIPENCC }, // 193.105.59.0 - 193.105.80.255 { 0xc1695200, 0xc16952ff, REGISTRY_RIPENCC }, // 193.105.82.0 - 193.105.82.255 { 0xc1695500, 0xc16957ff, REGISTRY_RIPENCC }, // 193.105.85.0 - 193.105.87.255 { 0xc1695900, 0xc1695eff, REGISTRY_RIPENCC }, // 193.105.89.0 - 193.105.94.255 { 0xc1696100, 0xc16965ff, REGISTRY_RIPENCC }, // 193.105.97.0 - 193.105.101.255 { 0xc1696700, 0xc16978ff, REGISTRY_RIPENCC }, // 193.105.103.0 - 193.105.120.255 { 0xc1697a00, 0xc1698cff, REGISTRY_RIPENCC }, // 193.105.122.0 - 193.105.140.255 { 0xc1698e00, 0xc16996ff, REGISTRY_RIPENCC }, // 193.105.142.0 - 193.105.150.255 { 0xc1699800, 0xc16999ff, REGISTRY_RIPENCC }, // 193.105.152.0 - 193.105.153.255 { 0xc1699b00, 0xc169a1ff, REGISTRY_RIPENCC }, // 193.105.155.0 - 193.105.161.255 { 0xc169a300, 0xc169b7ff, REGISTRY_RIPENCC }, // 193.105.163.0 - 193.105.183.255 { 0xc169b900, 0xc169bbff, REGISTRY_RIPENCC }, // 193.105.185.0 - 193.105.187.255 { 0xc169bc00, 0xc169bcff, REGISTRY_RIPENCC }, // 193.105.188.0 - 193.105.188.255 { 0xc169bd00, 0xc169ceff, REGISTRY_RIPENCC }, // 193.105.189.0 - 193.105.206.255 { 0xc169d100, 0xc169d8ff, REGISTRY_RIPENCC }, // 193.105.209.0 - 193.105.216.255 { 0xc169da00, 0xc169f3ff, REGISTRY_RIPENCC }, // 193.105.218.0 - 193.105.243.255 { 0xc169f600, 0xc16a13ff, REGISTRY_RIPENCC }, // 193.105.246.0 - 193.106.19.255 { 0xc16a1800, 0xc16a1fff, REGISTRY_RIPENCC }, // 193.106.24.0 - 193.106.31.255 { 0xc16a2400, 0xc16b4bff, REGISTRY_RIPENCC }, // 193.106.36.0 - 193.107.75.255 { 0xc16b5000, 0xc16bb7ff, REGISTRY_RIPENCC }, // 193.107.80.0 - 193.107.183.255 { 0xc16bbc00, 0xc16bc3ff, REGISTRY_RIPENCC }, // 193.107.188.0 - 193.107.195.255 { 0xc16bc400, 0xc16bc7ff, REGISTRY_RIPENCC }, // 193.107.196.0 - 193.107.199.255 { 0xc16bc800, 0xc16bcfff, REGISTRY_RIPENCC }, // 193.107.200.0 - 193.107.207.255 { 0xc16bd400, 0xc16bd7ff, REGISTRY_RIPENCC }, // 193.107.212.0 - 193.107.215.255 { 0xc16bdc00, 0xc16c13ff, REGISTRY_RIPENCC }, // 193.107.220.0 - 193.108.19.255 { 0xc16c1500, 0xc16c16ff, REGISTRY_RIPENCC }, // 193.108.21.0 - 193.108.22.255 { 0xc16c1700, 0xc16c17ff, REGISTRY_AFRINIC }, // 193.108.23.0 - 193.108.23.255 { 0xc16c1800, 0xc16c18ff, REGISTRY_RIPENCC }, // 193.108.24.0 - 193.108.24.255 { 0xc16c1b00, 0xc16c1bff, REGISTRY_RIPENCC }, // 193.108.27.0 - 193.108.27.255 { 0xc16c1c00, 0xc16c1cff, REGISTRY_AFRINIC }, // 193.108.28.0 - 193.108.28.255 { 0xc16c1d00, 0xc16c29ff, REGISTRY_RIPENCC }, // 193.108.29.0 - 193.108.41.255 { 0xc16c2a00, 0xc16c2bff, REGISTRY_RIPENCC }, // 193.108.42.0 - 193.108.43.255 { 0xc16c2c00, 0xc16c2dff, REGISTRY_RIPENCC }, // 193.108.44.0 - 193.108.45.255 { 0xc16c3000, 0xc16c3fff, REGISTRY_RIPENCC }, // 193.108.48.0 - 193.108.63.255 { 0xc16c4000, 0xc16c47ff, REGISTRY_RIPENCC }, // 193.108.64.0 - 193.108.71.255 { 0xc16c4800, 0xc16c5fff, REGISTRY_RIPENCC }, // 193.108.72.0 - 193.108.95.255 { 0xc16c6200, 0xc16c6fff, REGISTRY_RIPENCC }, // 193.108.98.0 - 193.108.111.255 { 0xc16c7400, 0xc16c8fff, REGISTRY_RIPENCC }, // 193.108.116.0 - 193.108.143.255 { 0xc16c9000, 0xc16c93ff, REGISTRY_RIPENCC }, // 193.108.144.0 - 193.108.147.255 { 0xc16c9400, 0xc16cb1ff, REGISTRY_RIPENCC }, // 193.108.148.0 - 193.108.177.255 { 0xc16cb300, 0xc16cb6ff, REGISTRY_RIPENCC }, // 193.108.179.0 - 193.108.182.255 { 0xc16cb800, 0xc16cb8ff, REGISTRY_RIPENCC }, // 193.108.184.0 - 193.108.184.255 { 0xc16cb900, 0xc16cb9ff, REGISTRY_RIPENCC }, // 193.108.185.0 - 193.108.185.255 { 0xc16cba00, 0xc16cc0ff, REGISTRY_RIPENCC }, // 193.108.186.0 - 193.108.192.255 { 0xc16cc100, 0xc16cc1ff, REGISTRY_RIPENCC }, // 193.108.193.0 - 193.108.193.255 { 0xc16cc200, 0xc16cc5ff, REGISTRY_RIPENCC }, // 193.108.194.0 - 193.108.197.255 { 0xc16cc700, 0xc16ccdff, REGISTRY_RIPENCC }, // 193.108.199.0 - 193.108.205.255 { 0xc16cd100, 0xc16cd2ff, REGISTRY_RIPENCC }, // 193.108.209.0 - 193.108.210.255 { 0xc16cd400, 0xc16cd5ff, REGISTRY_RIPENCC }, // 193.108.212.0 - 193.108.213.255 { 0xc16cd600, 0xc16cd6ff, REGISTRY_AFRINIC }, // 193.108.214.0 - 193.108.214.255 { 0xc16cd800, 0xc16cdaff, REGISTRY_RIPENCC }, // 193.108.216.0 - 193.108.218.255 { 0xc16cdc00, 0xc16ce5ff, REGISTRY_RIPENCC }, // 193.108.220.0 - 193.108.229.255 { 0xc16ce800, 0xc16ce9ff, REGISTRY_RIPENCC }, // 193.108.232.0 - 193.108.233.255 { 0xc16cec00, 0xc16cfbff, REGISTRY_RIPENCC }, // 193.108.236.0 - 193.108.251.255 { 0xc16cfc00, 0xc16cffff, REGISTRY_AFRINIC }, // 193.108.252.0 - 193.108.255.255 { 0xc16d0000, 0xc16d0bff, REGISTRY_RIPENCC }, // 193.109.0.0 - 193.109.11.255 { 0xc16d1000, 0xc16d1fff, REGISTRY_RIPENCC }, // 193.109.16.0 - 193.109.31.255 { 0xc16d2000, 0xc16d27ff, REGISTRY_RIPENCC }, // 193.109.32.0 - 193.109.39.255 { 0xc16d2800, 0xc16d3fff, REGISTRY_RIPENCC }, // 193.109.40.0 - 193.109.63.255 { 0xc16d4200, 0xc16d43ff, REGISTRY_AFRINIC }, // 193.109.66.0 - 193.109.67.255 { 0xc16d4400, 0xc16d4dff, REGISTRY_RIPENCC }, // 193.109.68.0 - 193.109.77.255 { 0xc16d5000, 0xc16d50ff, REGISTRY_RIPENCC }, // 193.109.80.0 - 193.109.80.255 { 0xc16d5100, 0xc16d51ff, REGISTRY_RIPENCC }, // 193.109.81.0 - 193.109.81.255 { 0xc16d5200, 0xc16d53ff, REGISTRY_RIPENCC }, // 193.109.82.0 - 193.109.83.255 { 0xc16d5600, 0xc16d5bff, REGISTRY_RIPENCC }, // 193.109.86.0 - 193.109.91.255 { 0xc16d5d00, 0xc16d5dff, REGISTRY_RIPENCC }, // 193.109.93.0 - 193.109.93.255 { 0xc16d5f00, 0xc16d63ff, REGISTRY_RIPENCC }, // 193.109.95.0 - 193.109.99.255 { 0xc16d6800, 0xc16d6bff, REGISTRY_RIPENCC }, // 193.109.104.0 - 193.109.107.255 { 0xc16d7000, 0xc16d77ff, REGISTRY_RIPENCC }, // 193.109.112.0 - 193.109.119.255 { 0xc16d7900, 0xc16d87ff, REGISTRY_RIPENCC }, // 193.109.121.0 - 193.109.135.255 { 0xc16d8a00, 0xc16da7ff, REGISTRY_RIPENCC }, // 193.109.138.0 - 193.109.167.255 { 0xc16dac00, 0xc16dd4ff, REGISTRY_RIPENCC }, // 193.109.172.0 - 193.109.212.255 { 0xc16dd600, 0xc16dd8ff, REGISTRY_RIPENCC }, // 193.109.214.0 - 193.109.216.255 { 0xc16dda00, 0xc16ddaff, REGISTRY_RIPENCC }, // 193.109.218.0 - 193.109.218.255 { 0xc16ddc00, 0xc16ddcff, REGISTRY_RIPENCC }, // 193.109.220.0 - 193.109.220.255 { 0xc16dde00, 0xc16ddfff, REGISTRY_RIPENCC }, // 193.109.222.0 - 193.109.223.255 { 0xc16de100, 0xc16de1ff, REGISTRY_RIPENCC }, // 193.109.225.0 - 193.109.225.255 { 0xc16de300, 0xc16de5ff, REGISTRY_RIPENCC }, // 193.109.227.0 - 193.109.229.255 { 0xc16de700, 0xc16dffff, REGISTRY_RIPENCC }, // 193.109.231.0 - 193.109.255.255 { 0xc16e0400, 0xc16e1bff, REGISTRY_RIPENCC }, // 193.110.4.0 - 193.110.27.255 { 0xc16e1c00, 0xc16e1fff, REGISTRY_RIPENCC }, // 193.110.28.0 - 193.110.31.255 { 0xc16e2000, 0xc16e27ff, REGISTRY_RIPENCC }, // 193.110.32.0 - 193.110.39.255 { 0xc16e2800, 0xc16e2fff, REGISTRY_RIPENCC }, // 193.110.40.0 - 193.110.47.255 { 0xc16e3000, 0xc16e51ff, REGISTRY_RIPENCC }, // 193.110.48.0 - 193.110.81.255 { 0xc16e5300, 0xc16e5cff, REGISTRY_RIPENCC }, // 193.110.83.0 - 193.110.92.255 { 0xc16e5e00, 0xc16e67ff, REGISTRY_RIPENCC }, // 193.110.94.0 - 193.110.103.255 { 0xc16e6800, 0xc16e69ff, REGISTRY_AFRINIC }, // 193.110.104.0 - 193.110.105.255 { 0xc16e6a00, 0xc16e82ff, REGISTRY_RIPENCC }, // 193.110.106.0 - 193.110.130.255 { 0xc16e8400, 0xc16e85ff, REGISTRY_RIPENCC }, // 193.110.132.0 - 193.110.133.255 { 0xc16e8900, 0xc16e8cff, REGISTRY_RIPENCC }, // 193.110.137.0 - 193.110.140.255 { 0xc16e8e00, 0xc16e8eff, REGISTRY_RIPENCC }, // 193.110.142.0 - 193.110.142.255 { 0xc16e9000, 0xc16e93ff, REGISTRY_RIPENCC }, // 193.110.144.0 - 193.110.147.255 { 0xc16e9500, 0xc16e9dff, REGISTRY_RIPENCC }, // 193.110.149.0 - 193.110.157.255 { 0xc16e9f00, 0xc16e9fff, REGISTRY_RIPENCC }, // 193.110.159.0 - 193.110.159.255 { 0xc16ea200, 0xc16ec7ff, REGISTRY_RIPENCC }, // 193.110.162.0 - 193.110.199.255 { 0xc16ecc00, 0xc16f03ff, REGISTRY_RIPENCC }, // 193.110.204.0 - 193.111.3.255 { 0xc16f0600, 0xc16f11ff, REGISTRY_RIPENCC }, // 193.111.6.0 - 193.111.17.255 { 0xc16f1400, 0xc16f15ff, REGISTRY_RIPENCC }, // 193.111.20.0 - 193.111.21.255 { 0xc16f1600, 0xc16f17ff, REGISTRY_RIPENCC }, // 193.111.22.0 - 193.111.23.255 { 0xc16f1800, 0xc16f1dff, REGISTRY_RIPENCC }, // 193.111.24.0 - 193.111.29.255 { 0xc16f2100, 0xc16f23ff, REGISTRY_RIPENCC }, // 193.111.33.0 - 193.111.35.255 { 0xc16f2400, 0xc16f26ff, REGISTRY_RIPENCC }, // 193.111.36.0 - 193.111.38.255 { 0xc16f2700, 0xc16f2cff, REGISTRY_RIPENCC }, // 193.111.39.0 - 193.111.44.255 { 0xc16f2e00, 0xc16f33ff, REGISTRY_RIPENCC }, // 193.111.46.0 - 193.111.51.255 { 0xc16f3800, 0xc16f4bff, REGISTRY_RIPENCC }, // 193.111.56.0 - 193.111.75.255 { 0xc16f5100, 0xc16f55ff, REGISTRY_RIPENCC }, // 193.111.81.0 - 193.111.85.255 { 0xc16f5700, 0xc16f57ff, REGISTRY_RIPENCC }, // 193.111.87.0 - 193.111.87.255 { 0xc16f5900, 0xc16f59ff, REGISTRY_RIPENCC }, // 193.111.89.0 - 193.111.89.255 { 0xc16f5c00, 0xc16f73ff, REGISTRY_RIPENCC }, // 193.111.92.0 - 193.111.115.255 { 0xc16f7600, 0xc16f7bff, REGISTRY_RIPENCC }, // 193.111.118.0 - 193.111.123.255 { 0xc16f7e00, 0xc16f93ff, REGISTRY_RIPENCC }, // 193.111.126.0 - 193.111.147.255 { 0xc16f9c00, 0xc16f9fff, REGISTRY_RIPENCC }, // 193.111.156.0 - 193.111.159.255 { 0xc16fa100, 0xc16fa7ff, REGISTRY_RIPENCC }, // 193.111.161.0 - 193.111.167.255 { 0xc16fa900, 0xc16fa9ff, REGISTRY_RIPENCC }, // 193.111.169.0 - 193.111.169.255 { 0xc16fac00, 0xc16fadff, REGISTRY_RIPENCC }, // 193.111.172.0 - 193.111.173.255 { 0xc16faf00, 0xc16fb3ff, REGISTRY_RIPENCC }, // 193.111.175.0 - 193.111.179.255 { 0xc16fb800, 0xc16fc3ff, REGISTRY_RIPENCC }, // 193.111.184.0 - 193.111.195.255 { 0xc16fc600, 0xc16fe1ff, REGISTRY_RIPENCC }, // 193.111.198.0 - 193.111.225.255 { 0xc16fe300, 0xc16fe4ff, REGISTRY_RIPENCC }, // 193.111.227.0 - 193.111.228.255 { 0xc16fe600, 0xc16fe8ff, REGISTRY_RIPENCC }, // 193.111.230.0 - 193.111.232.255 { 0xc16fec00, 0xc16ff7ff, REGISTRY_RIPENCC }, // 193.111.236.0 - 193.111.247.255 { 0xc16ffc00, 0xc16fffff, REGISTRY_RIPENCC }, // 193.111.252.0 - 193.111.255.255 { 0xc1700000, 0xc179ffff, REGISTRY_RIPENCC }, // 193.112.0.0 - 193.121.255.255 { 0xc17a0000, 0xc17bffff, REGISTRY_ARIN }, // 193.122.0.0 - 193.123.255.255 { 0xc17c0000, 0xc189ffff, REGISTRY_RIPENCC }, // 193.124.0.0 - 193.137.255.255 { 0xc18a0000, 0xc18a03ff, REGISTRY_RIPENCC }, // 193.138.0.0 - 193.138.3.255 { 0xc18a0600, 0xc18a1bff, REGISTRY_RIPENCC }, // 193.138.6.0 - 193.138.27.255 { 0xc18a1d00, 0xc18a1fff, REGISTRY_RIPENCC }, // 193.138.29.0 - 193.138.31.255 { 0xc18a2000, 0xc18a3fff, REGISTRY_RIPENCC }, // 193.138.32.0 - 193.138.63.255 { 0xc18a4000, 0xc18a47ff, REGISTRY_RIPENCC }, // 193.138.64.0 - 193.138.71.255 { 0xc18a4900, 0xc18a49ff, REGISTRY_RIPENCC }, // 193.138.73.0 - 193.138.73.255 { 0xc18a4a00, 0xc18a4aff, REGISTRY_RIPENCC }, // 193.138.74.0 - 193.138.74.255 { 0xc18a4c00, 0xc18a50ff, REGISTRY_RIPENCC }, // 193.138.76.0 - 193.138.80.255 { 0xc18a5100, 0xc18a51ff, REGISTRY_RIPENCC }, // 193.138.81.0 - 193.138.81.255 { 0xc18a5200, 0xc18a52ff, REGISTRY_RIPENCC }, // 193.138.82.0 - 193.138.82.255 { 0xc18a5300, 0xc18a53ff, REGISTRY_RIPENCC }, // 193.138.83.0 - 193.138.83.255 { 0xc18a5400, 0xc18a54ff, REGISTRY_RIPENCC }, // 193.138.84.0 - 193.138.84.255 { 0xc18a5600, 0xc18a63ff, REGISTRY_RIPENCC }, // 193.138.86.0 - 193.138.99.255 { 0xc18a6400, 0xc18a64ff, REGISTRY_RIPENCC }, // 193.138.100.0 - 193.138.100.255 { 0xc18a6500, 0xc18a6eff, REGISTRY_RIPENCC }, // 193.138.101.0 - 193.138.110.255 { 0xc18a7000, 0xc18a77ff, REGISTRY_RIPENCC }, // 193.138.112.0 - 193.138.119.255 { 0xc18a7b00, 0xc18a8fff, REGISTRY_RIPENCC }, // 193.138.123.0 - 193.138.143.255 { 0xc18a9000, 0xc18a93ff, REGISTRY_RIPENCC }, // 193.138.144.0 - 193.138.147.255 { 0xc18a9400, 0xc18aa7ff, REGISTRY_RIPENCC }, // 193.138.148.0 - 193.138.167.255 { 0xc18ab000, 0xc18afbff, REGISTRY_RIPENCC }, // 193.138.176.0 - 193.138.251.255 { 0xc18b0000, 0xc18dffff, REGISTRY_RIPENCC }, // 193.139.0.0 - 193.141.255.255 { 0xc18e0000, 0xc18e02ff, REGISTRY_RIPENCC }, // 193.142.0.0 - 193.142.2.255 { 0xc18e0500, 0xc18e05ff, REGISTRY_RIPENCC }, // 193.142.5.0 - 193.142.5.255 { 0xc18e0700, 0xc18e11ff, REGISTRY_RIPENCC }, // 193.142.7.0 - 193.142.17.255 { 0xc18e1300, 0xc18e13ff, REGISTRY_RIPENCC }, // 193.142.19.0 - 193.142.19.255 { 0xc18e1700, 0xc18e1aff, REGISTRY_RIPENCC }, // 193.142.23.0 - 193.142.26.255 { 0xc18e1e00, 0xc18e1fff, REGISTRY_RIPENCC }, // 193.142.30.0 - 193.142.31.255 { 0xc18e3200, 0xc18e33ff, REGISTRY_RIPENCC }, // 193.142.50.0 - 193.142.51.255 { 0xc18e3500, 0xc18e35ff, REGISTRY_RIPENCC }, // 193.142.53.0 - 193.142.53.255 { 0xc18e3700, 0xc18e39ff, REGISTRY_RIPENCC }, // 193.142.55.0 - 193.142.57.255 { 0xc18e3d00, 0xc18e3eff, REGISTRY_RIPENCC }, // 193.142.61.0 - 193.142.62.255 { 0xc18e4000, 0xc18e74ff, REGISTRY_RIPENCC }, // 193.142.64.0 - 193.142.116.255 { 0xc18e7600, 0xc18e7dff, REGISTRY_RIPENCC }, // 193.142.118.0 - 193.142.125.255 { 0xc18e7f00, 0xc18e7fff, REGISTRY_RIPENCC }, // 193.142.127.0 - 193.142.127.255 { 0xc18e8800, 0xc18e8fff, REGISTRY_RIPENCC }, // 193.142.136.0 - 193.142.143.255 { 0xc18e9100, 0xc18e91ff, REGISTRY_RIPENCC }, // 193.142.145.0 - 193.142.145.255 { 0xc18e9500, 0xc18e97ff, REGISTRY_RIPENCC }, // 193.142.149.0 - 193.142.151.255 { 0xc18e9900, 0xc18e99ff, REGISTRY_RIPENCC }, // 193.142.153.0 - 193.142.153.255 { 0xc18e9d00, 0xc18ebbff, REGISTRY_RIPENCC }, // 193.142.157.0 - 193.142.187.255 { 0xc18ecc00, 0xc18eccff, REGISTRY_RIPENCC }, // 193.142.204.0 - 193.142.204.255 { 0xc18ed000, 0xc18edeff, REGISTRY_RIPENCC }, // 193.142.208.0 - 193.142.222.255 { 0xc18ee000, 0xc18ee7ff, REGISTRY_RIPENCC }, // 193.142.224.0 - 193.142.231.255 { 0xc18eeb00, 0xc18ef0ff, REGISTRY_RIPENCC }, // 193.142.235.0 - 193.142.240.255 { 0xc18ef300, 0xc18ef8ff, REGISTRY_RIPENCC }, // 193.142.243.0 - 193.142.248.255 { 0xc18efa00, 0xc18efcff, REGISTRY_RIPENCC }, // 193.142.250.0 - 193.142.252.255 { 0xc18f0000, 0xc18f00ff, REGISTRY_RIPENCC }, // 193.143.0.0 - 193.143.0.255 { 0xc18f0400, 0xc18f05ff, REGISTRY_RIPENCC }, // 193.143.4.0 - 193.143.5.255 { 0xc18f0800, 0xc18f0fff, REGISTRY_RIPENCC }, // 193.143.8.0 - 193.143.15.255 { 0xc18f1300, 0xc18f13ff, REGISTRY_RIPENCC }, // 193.143.19.0 - 193.143.19.255 { 0xc18f2000, 0xc18f3fff, REGISTRY_RIPENCC }, // 193.143.32.0 - 193.143.63.255 { 0xc18f4600, 0xc18f47ff, REGISTRY_RIPENCC }, // 193.143.70.0 - 193.143.71.255 { 0xc18f4900, 0xc18f49ff, REGISTRY_RIPENCC }, // 193.143.73.0 - 193.143.73.255 { 0xc18f4a00, 0xc18f4aff, REGISTRY_RIPENCC }, // 193.143.74.0 - 193.143.74.255 { 0xc18f4d00, 0xc18f4dff, REGISTRY_RIPENCC }, // 193.143.77.0 - 193.143.77.255 { 0xc18f4f00, 0xc18f59ff, REGISTRY_RIPENCC }, // 193.143.79.0 - 193.143.89.255 { 0xc18f5b00, 0xc18f5bff, REGISTRY_RIPENCC }, // 193.143.91.0 - 193.143.91.255 { 0xc18f5c00, 0xc18f5cff, REGISTRY_RIPENCC }, // 193.143.92.0 - 193.143.92.255 { 0xc18f5d00, 0xc18f5fff, REGISTRY_RIPENCC }, // 193.143.93.0 - 193.143.95.255 { 0xc18f6300, 0xc18f7aff, REGISTRY_RIPENCC }, // 193.143.99.0 - 193.143.122.255 { 0xc18f7c00, 0xc18fdfff, REGISTRY_RIPENCC }, // 193.143.124.0 - 193.143.223.255 { 0xc18fe100, 0xc18fe2ff, REGISTRY_RIPENCC }, // 193.143.225.0 - 193.143.226.255 { 0xc18fe400, 0xc18fe6ff, REGISTRY_RIPENCC }, // 193.143.228.0 - 193.143.230.255 { 0xc18fe800, 0xc18ff7ff, REGISTRY_RIPENCC }, // 193.143.232.0 - 193.143.247.255 { 0xc18ff900, 0xc18ff9ff, REGISTRY_RIPENCC }, // 193.143.249.0 - 193.143.249.255 { 0xc18ffd00, 0xc18ffeff, REGISTRY_RIPENCC }, // 193.143.253.0 - 193.143.254.255 { 0xc1900000, 0xc193ffff, REGISTRY_RIPENCC }, // 193.144.0.0 - 193.147.255.255 { 0xc1940000, 0xc19400ff, REGISTRY_RIPENCC }, // 193.148.0.0 - 193.148.0.255 { 0xc1940200, 0xc19404ff, REGISTRY_RIPENCC }, // 193.148.2.0 - 193.148.4.255 { 0xc1940600, 0xc19407ff, REGISTRY_RIPENCC }, // 193.148.6.0 - 193.148.7.255 { 0xc1940f00, 0xc1940fff, REGISTRY_RIPENCC }, // 193.148.15.0 - 193.148.15.255 { 0xc1941800, 0xc19427ff, REGISTRY_RIPENCC }, // 193.148.24.0 - 193.148.39.255 { 0xc1942c00, 0xc1942eff, REGISTRY_RIPENCC }, // 193.148.44.0 - 193.148.46.255 { 0xc1946000, 0xc1949fff, REGISTRY_RIPENCC }, // 193.148.96.0 - 193.148.159.255 { 0xc194a000, 0xc194bfff, REGISTRY_RIPENCC }, // 193.148.160.0 - 193.148.191.255 { 0xc194c000, 0xc194dfff, REGISTRY_RIPENCC }, // 193.148.192.0 - 193.148.223.255 { 0xc194e000, 0xc194f3ff, REGISTRY_RIPENCC }, // 193.148.224.0 - 193.148.243.255 { 0xc194f600, 0xc194f6ff, REGISTRY_RIPENCC }, // 193.148.246.0 - 193.148.246.255 { 0xc194fe00, 0xc194feff, REGISTRY_RIPENCC }, // 193.148.254.0 - 193.148.254.255 { 0xc1950000, 0xc19501ff, REGISTRY_RIPENCC }, // 193.149.0.0 - 193.149.1.255 { 0xc1950400, 0xc1950fff, REGISTRY_RIPENCC }, // 193.149.4.0 - 193.149.15.255 { 0xc1952000, 0xc1953fff, REGISTRY_RIPENCC }, // 193.149.32.0 - 193.149.63.255 { 0xc1954000, 0xc1955fff, REGISTRY_RIPENCC }, // 193.149.64.0 - 193.149.95.255 { 0xc1956000, 0xc1957fff, REGISTRY_RIPENCC }, // 193.149.96.0 - 193.149.127.255 { 0xc1958000, 0xc195bfff, REGISTRY_RIPENCC }, // 193.149.128.0 - 193.149.191.255 { 0xc195c000, 0xc195d8ff, REGISTRY_RIPENCC }, // 193.149.192.0 - 193.149.216.255 { 0xc195d900, 0xc195d9ff, REGISTRY_RIPENCC }, // 193.149.217.0 - 193.149.217.255 { 0xc195da00, 0xc195e0ff, REGISTRY_RIPENCC }, // 193.149.218.0 - 193.149.224.255 { 0xc195e100, 0xc195e1ff, REGISTRY_RIPENCC }, // 193.149.225.0 - 193.149.225.255 { 0xc195e200, 0xc195efff, REGISTRY_RIPENCC }, // 193.149.226.0 - 193.149.239.255 { 0xc195f000, 0xc19677ff, REGISTRY_RIPENCC }, // 193.149.240.0 - 193.150.119.255 { 0xc1967900, 0xc196a7ff, REGISTRY_RIPENCC }, // 193.150.121.0 - 193.150.167.255 { 0xc196a900, 0xc196a9ff, REGISTRY_RIPENCC }, // 193.150.169.0 - 193.150.169.255 { 0xc196ac00, 0xc196bfff, REGISTRY_RIPENCC }, // 193.150.172.0 - 193.150.191.255 { 0xc196c000, 0xc196ffff, REGISTRY_RIPENCC }, // 193.150.192.0 - 193.150.255.255 { 0xc1970000, 0xc1972fff, REGISTRY_RIPENCC }, // 193.151.0.0 - 193.151.47.255 { 0xc1973000, 0xc19733ff, REGISTRY_RIPENCC }, // 193.151.48.0 - 193.151.51.255 { 0xc1973400, 0xc1973bff, REGISTRY_RIPENCC }, // 193.151.52.0 - 193.151.59.255 { 0xc1973c00, 0xc19743ff, REGISTRY_RIPENCC }, // 193.151.60.0 - 193.151.67.255 { 0xc1974400, 0xc19747ff, REGISTRY_RIPENCC }, // 193.151.68.0 - 193.151.71.255 { 0xc1974800, 0xc1974bff, REGISTRY_RIPENCC }, // 193.151.72.0 - 193.151.75.255 { 0xc1974c00, 0xc1979fff, REGISTRY_RIPENCC }, // 193.151.76.0 - 193.151.159.255 { 0xc197c000, 0xc197ffff, REGISTRY_RIPENCC }, // 193.151.192.0 - 193.151.255.255 { 0xc1980000, 0xc19fffff, REGISTRY_RIPENCC }, // 193.152.0.0 - 193.159.255.255 { 0xc1a00000, 0xc1a007ff, REGISTRY_RIPENCC }, // 193.160.0.0 - 193.160.7.255 { 0xc1a00900, 0xc1a009ff, REGISTRY_RIPENCC }, // 193.160.9.0 - 193.160.9.255 { 0xc1a00c00, 0xc1a00dff, REGISTRY_RIPENCC }, // 193.160.12.0 - 193.160.13.255 { 0xc1a01400, 0xc1a014ff, REGISTRY_RIPENCC }, // 193.160.20.0 - 193.160.20.255 { 0xc1a01800, 0xc1a01dff, REGISTRY_RIPENCC }, // 193.160.24.0 - 193.160.29.255 { 0xc1a02100, 0xc1a03fff, REGISTRY_RIPENCC }, // 193.160.33.0 - 193.160.63.255 { 0xc1a06100, 0xc1a063ff, REGISTRY_RIPENCC }, // 193.160.97.0 - 193.160.99.255 { 0xc1a06700, 0xc1a070ff, REGISTRY_RIPENCC }, // 193.160.103.0 - 193.160.112.255 { 0xc1a07200, 0xc1a075ff, REGISTRY_RIPENCC }, // 193.160.114.0 - 193.160.117.255 { 0xc1a07800, 0xc1a07fff, REGISTRY_RIPENCC }, // 193.160.120.0 - 193.160.127.255 { 0xc1a08300, 0xc1a085ff, REGISTRY_RIPENCC }, // 193.160.131.0 - 193.160.133.255 { 0xc1a08900, 0xc1a08aff, REGISTRY_RIPENCC }, // 193.160.137.0 - 193.160.138.255 { 0xc1a09400, 0xc1a097ff, REGISTRY_RIPENCC }, // 193.160.148.0 - 193.160.151.255 { 0xc1a09c00, 0xc1a09eff, REGISTRY_RIPENCC }, // 193.160.156.0 - 193.160.158.255 { 0xc1a0a000, 0xc1a0bbff, REGISTRY_RIPENCC }, // 193.160.160.0 - 193.160.187.255 { 0xc1a0c000, 0xc1a0cfff, REGISTRY_RIPENCC }, // 193.160.192.0 - 193.160.207.255 { 0xc1a0e000, 0xc1a0e7ff, REGISTRY_RIPENCC }, // 193.160.224.0 - 193.160.231.255 { 0xc1a0ef00, 0xc1a0efff, REGISTRY_RIPENCC }, // 193.160.239.0 - 193.160.239.255 { 0xc1a0f800, 0xc1a0fcff, REGISTRY_RIPENCC }, // 193.160.248.0 - 193.160.252.255 { 0xc1a0ff00, 0xc1a100ff, REGISTRY_RIPENCC }, // 193.160.255.0 - 193.161.0.255 { 0xc1a10c00, 0xc1a117ff, REGISTRY_RIPENCC }, // 193.161.12.0 - 193.161.23.255 { 0xc1a11b00, 0xc1a11bff, REGISTRY_RIPENCC }, // 193.161.27.0 - 193.161.27.255 { 0xc1a11e00, 0xc1a11fff, REGISTRY_RIPENCC }, // 193.161.30.0 - 193.161.31.255 { 0xc1a12000, 0xc1a16fff, REGISTRY_RIPENCC }, // 193.161.32.0 - 193.161.111.255 { 0xc1a17800, 0xc1a17fff, REGISTRY_RIPENCC }, // 193.161.120.0 - 193.161.127.255 { 0xc1a18a00, 0xc1a18bff, REGISTRY_RIPENCC }, // 193.161.138.0 - 193.161.139.255 { 0xc1a19000, 0xc1a192ff, REGISTRY_RIPENCC }, // 193.161.144.0 - 193.161.146.255 { 0xc1a19800, 0xc1a19bff, REGISTRY_RIPENCC }, // 193.161.152.0 - 193.161.155.255 { 0xc1a19e00, 0xc1a1c3ff, REGISTRY_RIPENCC }, // 193.161.158.0 - 193.161.195.255 { 0xc1a1cf00, 0xc1a1d3ff, REGISTRY_RIPENCC }, // 193.161.207.0 - 193.161.211.255 { 0xc1a1d800, 0xc1a1dbff, REGISTRY_RIPENCC }, // 193.161.216.0 - 193.161.219.255 { 0xc1a1e000, 0xc1a1f4ff, REGISTRY_RIPENCC }, // 193.161.224.0 - 193.161.244.255 { 0xc1a1f800, 0xc1a1fdff, REGISTRY_RIPENCC }, // 193.161.248.0 - 193.161.253.255 { 0xc1a20000, 0xc1a3ffff, REGISTRY_RIPENCC }, // 193.162.0.0 - 193.163.255.255 { 0xc1a40000, 0xc1a400ff, REGISTRY_RIPENCC }, // 193.164.0.0 - 193.164.0.255 { 0xc1a40800, 0xc1a409ff, REGISTRY_RIPENCC }, // 193.164.8.0 - 193.164.9.255 { 0xc1a40b00, 0xc1a40fff, REGISTRY_RIPENCC }, // 193.164.11.0 - 193.164.15.255 { 0xc1a42000, 0xc1a45fff, REGISTRY_RIPENCC }, // 193.164.32.0 - 193.164.95.255 { 0xc1a46000, 0xc1a480ff, REGISTRY_RIPENCC }, // 193.164.96.0 - 193.164.128.255 { 0xc1a48100, 0xc1a482ff, REGISTRY_RIPENCC }, // 193.164.129.0 - 193.164.130.255 { 0xc1a48300, 0xc1a485ff, REGISTRY_RIPENCC }, // 193.164.131.0 - 193.164.133.255 { 0xc1a48800, 0xc1a494ff, REGISTRY_RIPENCC }, // 193.164.136.0 - 193.164.148.255 { 0xc1a49700, 0xc1a497ff, REGISTRY_RIPENCC }, // 193.164.151.0 - 193.164.151.255 { 0xc1a49900, 0xc1a49fff, REGISTRY_RIPENCC }, // 193.164.153.0 - 193.164.159.255 { 0xc1a4a000, 0xc1a4c1ff, REGISTRY_RIPENCC }, // 193.164.160.0 - 193.164.193.255 { 0xc1a4c200, 0xc1a4cfff, REGISTRY_RIPENCC }, // 193.164.194.0 - 193.164.207.255 { 0xc1a4d200, 0xc1a4ddff, REGISTRY_RIPENCC }, // 193.164.210.0 - 193.164.221.255 { 0xc1a4e000, 0xc1a4e85f, REGISTRY_RIPENCC }, // 193.164.224.0 - 193.164.232.95 { 0xc1a4e8a0, 0xc1a4e8df, REGISTRY_RIPENCC }, // 193.164.232.160 - 193.164.232.223 { 0xc1a4e900, 0xc1a4f7ff, REGISTRY_RIPENCC }, // 193.164.233.0 - 193.164.247.255 { 0xc1a4fc00, 0xc1a4ffff, REGISTRY_RIPENCC }, // 193.164.252.0 - 193.164.255.255 { 0xc1a50000, 0xc1a7ffff, REGISTRY_RIPENCC }, // 193.165.0.0 - 193.167.255.255 { 0xc1a80000, 0xc1a802ff, REGISTRY_RIPENCC }, // 193.168.0.0 - 193.168.2.255 { 0xc1a80600, 0xc1a807ff, REGISTRY_RIPENCC }, // 193.168.6.0 - 193.168.7.255 { 0xc1a80800, 0xc1a82dff, REGISTRY_RIPENCC }, // 193.168.8.0 - 193.168.45.255 { 0xc1a83200, 0xc1a832ff, REGISTRY_RIPENCC }, // 193.168.50.0 - 193.168.50.255 { 0xc1a83600, 0xc1a836ff, REGISTRY_RIPENCC }, // 193.168.54.0 - 193.168.54.255 { 0xc1a83a00, 0xc1a83fff, REGISTRY_RIPENCC }, // 193.168.58.0 - 193.168.63.255 { 0xc1a84000, 0xc1a87fff, REGISTRY_RIPENCC }, // 193.168.64.0 - 193.168.127.255 { 0xc1a90000, 0xc1a919ff, REGISTRY_RIPENCC }, // 193.169.0.0 - 193.169.25.255 { 0xc1a91c00, 0xc1a969ff, REGISTRY_RIPENCC }, // 193.169.28.0 - 193.169.105.255 { 0xc1a96c00, 0xc1a9a9ff, REGISTRY_RIPENCC }, // 193.169.108.0 - 193.169.169.255 { 0xc1a9ac00, 0xc1a9bfff, REGISTRY_RIPENCC }, // 193.169.172.0 - 193.169.191.255 { 0xc1a9c000, 0xc1a9c1ff, REGISTRY_RIPENCC }, // 193.169.192.0 - 193.169.193.255 { 0xc1a9c200, 0xc1a9c7ff, REGISTRY_RIPENCC }, // 193.169.194.0 - 193.169.199.255 { 0xc1a9ca00, 0xc1a9d9ff, REGISTRY_RIPENCC }, // 193.169.202.0 - 193.169.217.255 { 0xc1a9dc00, 0xc1a9edff, REGISTRY_RIPENCC }, // 193.169.220.0 - 193.169.237.255 { 0xc1a9f000, 0xc1a9f9ff, REGISTRY_RIPENCC }, // 193.169.240.0 - 193.169.249.255 { 0xc1a9fc00, 0xc1a9fdff, REGISTRY_RIPENCC }, // 193.169.252.0 - 193.169.253.255 { 0xc1aa0000, 0xc1afffff, REGISTRY_RIPENCC }, // 193.170.0.0 - 193.175.255.255 { 0xc1b00000, 0xc1b000ff, REGISTRY_RIPENCC }, // 193.176.0.0 - 193.176.0.255 { 0xc1b00300, 0xc1b003ff, REGISTRY_RIPENCC }, // 193.176.3.0 - 193.176.3.255 { 0xc1b00500, 0xc1b00fff, REGISTRY_RIPENCC }, // 193.176.5.0 - 193.176.15.255 { 0xc1b02000, 0xc1b027ff, REGISTRY_RIPENCC }, // 193.176.32.0 - 193.176.39.255 { 0xc1b02d00, 0xc1b035ff, REGISTRY_RIPENCC }, // 193.176.45.0 - 193.176.53.255 { 0xc1b03800, 0xc1b03dff, REGISTRY_RIPENCC }, // 193.176.56.0 - 193.176.61.255 { 0xc1b03f00, 0xc1b03fff, REGISTRY_RIPENCC }, // 193.176.63.0 - 193.176.63.255 { 0xc1b06000, 0xc1b06fff, REGISTRY_RIPENCC }, // 193.176.96.0 - 193.176.111.255 { 0xc1b08200, 0xc1b092ff, REGISTRY_RIPENCC }, // 193.176.130.0 - 193.176.146.255 { 0xc1b09400, 0xc1b098ff, REGISTRY_RIPENCC }, // 193.176.148.0 - 193.176.152.255 { 0xc1b09f00, 0xc1b0b2ff, REGISTRY_RIPENCC }, // 193.176.159.0 - 193.176.178.255 { 0xc1b0bc00, 0xc1b0bdff, REGISTRY_RIPENCC }, // 193.176.188.0 - 193.176.189.255 { 0xc1b0bf00, 0xc1b0d1ff, REGISTRY_RIPENCC }, // 193.176.191.0 - 193.176.209.255 { 0xc1b0d800, 0xc1b0dbff, REGISTRY_RIPENCC }, // 193.176.216.0 - 193.176.219.255 { 0xc1b0dd00, 0xc1b0e2ff, REGISTRY_RIPENCC }, // 193.176.221.0 - 193.176.226.255 { 0xc1b0e800, 0xc1b0e8ff, REGISTRY_RIPENCC }, // 193.176.232.0 - 193.176.232.255 { 0xc1b0ea00, 0xc1b0ecff, REGISTRY_RIPENCC }, // 193.176.234.0 - 193.176.236.255 { 0xc1b0ef00, 0xc1b0efff, REGISTRY_RIPENCC }, // 193.176.239.0 - 193.176.239.255 { 0xc1b0f700, 0xc1b0fdff, REGISTRY_RIPENCC }, // 193.176.247.0 - 193.176.253.255 { 0xc1b0ff00, 0xc1b0ffff, REGISTRY_RIPENCC }, // 193.176.255.0 - 193.176.255.255 { 0xc1b10100, 0xc1b17fff, REGISTRY_RIPENCC }, // 193.177.1.0 - 193.177.127.255 { 0xc1b18800, 0xc1b193ff, REGISTRY_RIPENCC }, // 193.177.136.0 - 193.177.147.255 { 0xc1b19400, 0xc1b197ff, REGISTRY_RIPENCC }, // 193.177.148.0 - 193.177.151.255 { 0xc1b19800, 0xc1b1a1ff, REGISTRY_RIPENCC }, // 193.177.152.0 - 193.177.161.255 { 0xc1b1a300, 0xc1b1a3ff, REGISTRY_RIPENCC }, // 193.177.163.0 - 193.177.163.255 { 0xc1b1a600, 0xc1b1b5ff, REGISTRY_RIPENCC }, // 193.177.166.0 - 193.177.181.255 { 0xc1b1b700, 0xc1b1bbff, REGISTRY_RIPENCC }, // 193.177.183.0 - 193.177.187.255 { 0xc1b1c000, 0xc1b1cfff, REGISTRY_RIPENCC }, // 193.177.192.0 - 193.177.207.255 { 0xc1b1e000, 0xc1b1ffff, REGISTRY_RIPENCC }, // 193.177.224.0 - 193.177.255.255 { 0xc1b20100, 0xc1b21eff, REGISTRY_RIPENCC }, // 193.178.1.0 - 193.178.30.255 { 0xc1b22000, 0xc1b220ff, REGISTRY_RIPENCC }, // 193.178.32.0 - 193.178.32.255 { 0xc1b22200, 0xc1b223ff, REGISTRY_RIPENCC }, // 193.178.34.0 - 193.178.35.255 { 0xc1b22800, 0xc1b229ff, REGISTRY_RIPENCC }, // 193.178.40.0 - 193.178.41.255 { 0xc1b23500, 0xc1b235ff, REGISTRY_RIPENCC }, // 193.178.53.0 - 193.178.53.255 { 0xc1b23c00, 0xc1b23fff, REGISTRY_RIPENCC }, // 193.178.60.0 - 193.178.63.255 { 0xc1b24000, 0xc1b26fff, REGISTRY_RIPENCC }, // 193.178.64.0 - 193.178.111.255 { 0xc1b27200, 0xc1b272ff, REGISTRY_RIPENCC }, // 193.178.114.0 - 193.178.114.255 { 0xc1b27400, 0xc1b277ff, REGISTRY_RIPENCC }, // 193.178.116.0 - 193.178.119.255 { 0xc1b28100, 0xc1b288ff, REGISTRY_RIPENCC }, // 193.178.129.0 - 193.178.136.255 { 0xc1b28a00, 0xc1b28aff, REGISTRY_RIPENCC }, // 193.178.138.0 - 193.178.138.255 { 0xc1b28c00, 0xc1b28dff, REGISTRY_RIPENCC }, // 193.178.140.0 - 193.178.141.255 { 0xc1b28f00, 0xc1b2a8ff, REGISTRY_RIPENCC }, // 193.178.143.0 - 193.178.168.255 { 0xc1b2ab00, 0xc1b2abff, REGISTRY_RIPENCC }, // 193.178.171.0 - 193.178.171.255 { 0xc1b2ad00, 0xc1b2adff, REGISTRY_RIPENCC }, // 193.178.173.0 - 193.178.173.255 { 0xc1b2af00, 0xc1b2c3ff, REGISTRY_RIPENCC }, // 193.178.175.0 - 193.178.195.255 { 0xc1b2c800, 0xc1b2d3ff, REGISTRY_RIPENCC }, // 193.178.200.0 - 193.178.211.255 { 0xc1b2d500, 0xc1b2d9ff, REGISTRY_RIPENCC }, // 193.178.213.0 - 193.178.217.255 { 0xc1b2db00, 0xc1b2dbff, REGISTRY_RIPENCC }, // 193.178.219.0 - 193.178.219.255 { 0xc1b2dd00, 0xc1b2e5ff, REGISTRY_RIPENCC }, // 193.178.221.0 - 193.178.229.255 { 0xc1b2e800, 0xc1b2ffff, REGISTRY_RIPENCC }, // 193.178.232.0 - 193.178.255.255 { 0xc1b30000, 0xc1b9ffff, REGISTRY_RIPENCC }, // 193.179.0.0 - 193.185.255.255 { 0xc1ba0000, 0xc1ba00ff, REGISTRY_RIPENCC }, // 193.186.0.0 - 193.186.0.255 { 0xc1ba0200, 0xc1ba0aff, REGISTRY_RIPENCC }, // 193.186.2.0 - 193.186.10.255 { 0xc1ba0c00, 0xc1ba0dff, REGISTRY_RIPENCC }, // 193.186.12.0 - 193.186.13.255 { 0xc1ba0f00, 0xc1ba47ff, REGISTRY_RIPENCC }, // 193.186.15.0 - 193.186.71.255 { 0xc1ba4800, 0xc1ba57ff, REGISTRY_RIPENCC }, // 193.186.72.0 - 193.186.87.255 { 0xc1ba5800, 0xc1ba9fff, REGISTRY_RIPENCC }, // 193.186.88.0 - 193.186.159.255 { 0xc1baa100, 0xc1babfff, REGISTRY_RIPENCC }, // 193.186.161.0 - 193.186.191.255 { 0xc1bad000, 0xc1bad2ff, REGISTRY_RIPENCC }, // 193.186.208.0 - 193.186.210.255 { 0xc1bad400, 0xc1bad6ff, REGISTRY_RIPENCC }, // 193.186.212.0 - 193.186.214.255 { 0xc1bad800, 0xc1bafcff, REGISTRY_RIPENCC }, // 193.186.216.0 - 193.186.252.255 { 0xc1bafe00, 0xc1bb00ff, REGISTRY_RIPENCC }, // 193.186.254.0 - 193.187.0.255 { 0xc1bb0200, 0xc1bb53ff, REGISTRY_RIPENCC }, // 193.187.2.0 - 193.187.83.255 { 0xc1bbc400, 0xc1bc00ff, REGISTRY_RIPENCC }, // 193.187.196.0 - 193.188.0.255 { 0xc1bc0400, 0xc1bc06ff, REGISTRY_RIPENCC }, // 193.188.4.0 - 193.188.6.255 { 0xc1bc0700, 0xc1bc07ff, REGISTRY_AFRINIC }, // 193.188.7.0 - 193.188.7.255 { 0xc1bc0c00, 0xc1bc0dff, REGISTRY_RIPENCC }, // 193.188.12.0 - 193.188.13.255 { 0xc1bc2000, 0xc1bc3fff, REGISTRY_RIPENCC }, // 193.188.32.0 - 193.188.63.255 { 0xc1bc4000, 0xc1bc7fff, REGISTRY_RIPENCC }, // 193.188.64.0 - 193.188.127.255 { 0xc1bc8000, 0xc1bc8687, REGISTRY_RIPENCC }, // 193.188.128.0 - 193.188.134.135 { 0xc1bc8690, 0xc1bc86c7, REGISTRY_RIPENCC }, // 193.188.134.144 - 193.188.134.199 { 0xc1bc8700, 0xc1bc89ff, REGISTRY_RIPENCC }, // 193.188.135.0 - 193.188.137.255 { 0xc1bc8c00, 0xc1bcc2ff, REGISTRY_RIPENCC }, // 193.188.140.0 - 193.188.194.255 { 0xc1bcc400, 0xc1bcc7ff, REGISTRY_RIPENCC }, // 193.188.196.0 - 193.188.199.255 { 0xc1bcc900, 0xc1bcfaff, REGISTRY_RIPENCC }, // 193.188.201.0 - 193.188.250.255 { 0xc1bcfd00, 0xc1bcffff, REGISTRY_RIPENCC }, // 193.188.253.0 - 193.188.255.255 { 0xc1bd0000, 0xc1bd41ff, REGISTRY_AFRINIC }, // 193.189.0.0 - 193.189.65.255 { 0xc1bd4200, 0xc1bd49ff, REGISTRY_RIPENCC }, // 193.189.66.0 - 193.189.73.255 { 0xc1bd4a00, 0xc1bd4bff, REGISTRY_RIPENCC }, // 193.189.74.0 - 193.189.75.255 { 0xc1bd4c00, 0xc1bd51ff, REGISTRY_RIPENCC }, // 193.189.76.0 - 193.189.81.255 { 0xc1bd5200, 0xc1bd53ff, REGISTRY_RIPENCC }, // 193.189.82.0 - 193.189.83.255 { 0xc1bd5600, 0xc1bd59ff, REGISTRY_RIPENCC }, // 193.189.86.0 - 193.189.89.255 { 0xc1bd5c00, 0xc1bd69ff, REGISTRY_RIPENCC }, // 193.189.92.0 - 193.189.105.255 { 0xc1bd6a00, 0xc1bd6bff, REGISTRY_RIPENCC }, // 193.189.106.0 - 193.189.107.255 { 0xc1bd6c00, 0xc1bd75ff, REGISTRY_RIPENCC }, // 193.189.108.0 - 193.189.117.255 { 0xc1bd7800, 0xc1bd7fff, REGISTRY_RIPENCC }, // 193.189.120.0 - 193.189.127.255 { 0xc1bd8000, 0xc1bd80ff, REGISTRY_AFRINIC }, // 193.189.128.0 - 193.189.128.255 { 0xc1bd8100, 0xc1bd8eff, REGISTRY_RIPENCC }, // 193.189.129.0 - 193.189.142.255 { 0xc1bd8f00, 0xc1bd8fff, REGISTRY_RIPENCC }, // 193.189.143.0 - 193.189.143.255 { 0xc1bd9000, 0xc1bd90ff, REGISTRY_RIPENCC }, // 193.189.144.0 - 193.189.144.255 { 0xc1bd9200, 0xc1bd9fff, REGISTRY_RIPENCC }, // 193.189.146.0 - 193.189.159.255 { 0xc1bda000, 0xc1bfffff, REGISTRY_RIPENCC }, // 193.189.160.0 - 193.191.255.255 { 0xc1c00000, 0xc1c000ff, REGISTRY_RIPENCC }, // 193.192.0.0 - 193.192.0.255 { 0xc1c00400, 0xc1c00bff, REGISTRY_RIPENCC }, // 193.192.4.0 - 193.192.11.255 { 0xc1c00c80, 0xc1c00eff, REGISTRY_RIPENCC }, // 193.192.12.128 - 193.192.14.255 { 0xc1c01000, 0xc1c03fff, REGISTRY_RIPENCC }, // 193.192.16.0 - 193.192.63.255 { 0xc1c04000, 0xc1c19fff, REGISTRY_RIPENCC }, // 193.192.64.0 - 193.193.159.255 { 0xc1c1a100, 0xc1c1a1ff, REGISTRY_RIPENCC }, // 193.193.161.0 - 193.193.161.255 { 0xc1c1a500, 0xc1c1aaff, REGISTRY_RIPENCC }, // 193.193.165.0 - 193.193.170.255 { 0xc1c1ac00, 0xc1c1adff, REGISTRY_RIPENCC }, // 193.193.172.0 - 193.193.173.255 { 0xc1c1ae00, 0xc1c1b5ff, REGISTRY_RIPENCC }, // 193.193.174.0 - 193.193.181.255 { 0xc1c1b700, 0xc1c1bfff, REGISTRY_RIPENCC }, // 193.193.183.0 - 193.193.191.255 { 0xc1c1c000, 0xc1c1ffff, REGISTRY_RIPENCC }, // 193.193.192.0 - 193.193.255.255 { 0xc1c20000, 0xc1c200ff, REGISTRY_RIPENCC }, // 193.194.0.0 - 193.194.0.255 { 0xc1c20100, 0xc1c205ff, REGISTRY_AFRINIC }, // 193.194.1.0 - 193.194.5.255 { 0xc1c20600, 0xc1c21fff, REGISTRY_RIPENCC }, // 193.194.6.0 - 193.194.31.255 { 0xc1c22000, 0xc1c25fff, REGISTRY_AFRINIC }, // 193.194.32.0 - 193.194.95.255 { 0xc1c26000, 0xc1c27fff, REGISTRY_RIPENCC }, // 193.194.96.0 - 193.194.127.255 { 0xc1c28000, 0xc1c280ff, REGISTRY_AFRINIC }, // 193.194.128.0 - 193.194.128.255 { 0xc1c28100, 0xc1c281ff, REGISTRY_RIPENCC }, // 193.194.129.0 - 193.194.129.255 { 0xc1c28400, 0xc1c288ff, REGISTRY_RIPENCC }, // 193.194.132.0 - 193.194.136.255 { 0xc1c28a00, 0xc1c28dff, REGISTRY_RIPENCC }, // 193.194.138.0 - 193.194.141.255 { 0xc1c29000, 0xc1c292ff, REGISTRY_RIPENCC }, // 193.194.144.0 - 193.194.146.255 { 0xc1c29400, 0xc1c295ff, REGISTRY_RIPENCC }, // 193.194.148.0 - 193.194.149.255 { 0xc1c29800, 0xc1c29aff, REGISTRY_RIPENCC }, // 193.194.152.0 - 193.194.154.255 { 0xc1c29c00, 0xc1c29fff, REGISTRY_RIPENCC }, // 193.194.156.0 - 193.194.159.255 { 0xc1c2a000, 0xc1c2bfff, REGISTRY_AFRINIC }, // 193.194.160.0 - 193.194.191.255 { 0xc1c2c000, 0xc1c7ffff, REGISTRY_RIPENCC }, // 193.194.192.0 - 193.199.255.255 { 0xc1c80300, 0xc1c807ff, REGISTRY_RIPENCC }, // 193.200.3.0 - 193.200.7.255 { 0xc1c80900, 0xc1c80bff, REGISTRY_RIPENCC }, // 193.200.9.0 - 193.200.11.255 { 0xc1c80e00, 0xc1c80fff, REGISTRY_RIPENCC }, // 193.200.14.0 - 193.200.15.255 { 0xc1c81200, 0xc1c817ff, REGISTRY_RIPENCC }, // 193.200.18.0 - 193.200.23.255 { 0xc1c81900, 0xc1c819ff, REGISTRY_RIPENCC }, // 193.200.25.0 - 193.200.25.255 { 0xc1c81c00, 0xc1c82fff, REGISTRY_RIPENCC }, // 193.200.28.0 - 193.200.47.255 { 0xc1c83200, 0xc1c833ff, REGISTRY_RIPENCC }, // 193.200.50.0 - 193.200.51.255 { 0xc1c83600, 0xc1c837ff, REGISTRY_RIPENCC }, // 193.200.54.0 - 193.200.55.255 { 0xc1c83a00, 0xc1c83dff, REGISTRY_RIPENCC }, // 193.200.58.0 - 193.200.61.255 { 0xc1c84000, 0xc1c847ff, REGISTRY_RIPENCC }, // 193.200.64.0 - 193.200.71.255 { 0xc1c84c00, 0xc1c85fff, REGISTRY_RIPENCC }, // 193.200.76.0 - 193.200.95.255 { 0xc1c86200, 0xc1c865ff, REGISTRY_RIPENCC }, // 193.200.98.0 - 193.200.101.255 { 0xc1c86800, 0xc1c881ff, REGISTRY_RIPENCC }, // 193.200.104.0 - 193.200.129.255 { 0xc1c88300, 0xc1c885ff, REGISTRY_RIPENCC }, // 193.200.131.0 - 193.200.133.255 { 0xc1c88700, 0xc1c894ff, REGISTRY_RIPENCC }, // 193.200.135.0 - 193.200.148.255 { 0xc1c89600, 0xc1c897ff, REGISTRY_RIPENCC }, // 193.200.150.0 - 193.200.151.255 { 0xc1c89900, 0xc1c89eff, REGISTRY_RIPENCC }, // 193.200.153.0 - 193.200.158.255 { 0xc1c8a000, 0xc1c8a2ff, REGISTRY_RIPENCC }, // 193.200.160.0 - 193.200.162.255 { 0xc1c8a400, 0xc1c8a6ff, REGISTRY_RIPENCC }, // 193.200.164.0 - 193.200.166.255 { 0xc1c8a800, 0xc1c8a8ff, REGISTRY_RIPENCC }, // 193.200.168.0 - 193.200.168.255 { 0xc1c8aa00, 0xc1c8b4ff, REGISTRY_RIPENCC }, // 193.200.170.0 - 193.200.180.255 { 0xc1c8b600, 0xc1c8b9ff, REGISTRY_RIPENCC }, // 193.200.182.0 - 193.200.185.255 { 0xc1c8bb00, 0xc1c8c1ff, REGISTRY_RIPENCC }, // 193.200.187.0 - 193.200.193.255 { 0xc1c8c300, 0xc1c8c3ff, REGISTRY_RIPENCC }, // 193.200.195.0 - 193.200.195.255 { 0xc1c8c500, 0xc1c8d8ff, REGISTRY_RIPENCC }, // 193.200.197.0 - 193.200.216.255 { 0xc1c8da00, 0xc1c8dcff, REGISTRY_RIPENCC }, // 193.200.218.0 - 193.200.220.255 { 0xc1c8de00, 0xc1c8edff, REGISTRY_RIPENCC }, // 193.200.222.0 - 193.200.237.255 { 0xc1c8ef00, 0xc1c8f0ff, REGISTRY_RIPENCC }, // 193.200.239.0 - 193.200.240.255 { 0xc1c8f100, 0xc1c8f1ff, REGISTRY_RIPENCC }, // 193.200.241.0 - 193.200.241.255 { 0xc1c8f200, 0xc1c8f3ff, REGISTRY_RIPENCC }, // 193.200.242.0 - 193.200.243.255 { 0xc1c8f500, 0xc1c8f5ff, REGISTRY_RIPENCC }, // 193.200.245.0 - 193.200.245.255 { 0xc1c8f700, 0xc1c8faff, REGISTRY_RIPENCC }, // 193.200.247.0 - 193.200.250.255 { 0xc1c8fd00, 0xc1c922ff, REGISTRY_RIPENCC }, // 193.200.253.0 - 193.201.34.255 { 0xc1c92400, 0xc1c924ff, REGISTRY_RIPENCC }, // 193.201.36.0 - 193.201.36.255 { 0xc1c92700, 0xc1c92aff, REGISTRY_RIPENCC }, // 193.201.39.0 - 193.201.42.255 { 0xc1c92c00, 0xc1c92dff, REGISTRY_RIPENCC }, // 193.201.44.0 - 193.201.45.255 { 0xc1c92f00, 0xc1c937ff, REGISTRY_RIPENCC }, // 193.201.47.0 - 193.201.55.255 { 0xc1c93c00, 0xc1c947ff, REGISTRY_RIPENCC }, // 193.201.60.0 - 193.201.71.255 { 0xc1c94a00, 0xc1c962ff, REGISTRY_RIPENCC }, // 193.201.74.0 - 193.201.98.255 { 0xc1c96400, 0xc1c96fff, REGISTRY_RIPENCC }, // 193.201.100.0 - 193.201.111.255 { 0xc1c97400, 0xc1c97dff, REGISTRY_RIPENCC }, // 193.201.116.0 - 193.201.125.255 { 0xc1c98000, 0xc1c9917f, REGISTRY_RIPENCC }, // 193.201.128.0 - 193.201.145.127 { 0xc1c99200, 0xc1c993bf, REGISTRY_RIPENCC }, // 193.201.146.0 - 193.201.147.191 { 0xc1c993e0, 0xc1c9947f, REGISTRY_RIPENCC }, // 193.201.147.224 - 193.201.148.127 { 0xc1c994c0, 0xc1c994ff, REGISTRY_RIPENCC }, // 193.201.148.192 - 193.201.148.255 { 0xc1c99540, 0xc1c9957f, REGISTRY_RIPENCC }, // 193.201.149.64 - 193.201.149.127 { 0xc1c995c0, 0xc1c996bf, REGISTRY_RIPENCC }, // 193.201.149.192 - 193.201.150.191 { 0xc1c99700, 0xc1c9973f, REGISTRY_RIPENCC }, // 193.201.151.0 - 193.201.151.63 { 0xc1c997c0, 0xc1c99aff, REGISTRY_RIPENCC }, // 193.201.151.192 - 193.201.154.255 { 0xc1c99b80, 0xc1c99d7f, REGISTRY_RIPENCC }, // 193.201.155.128 - 193.201.157.127 { 0xc1c99e00, 0xc1c99eff, REGISTRY_RIPENCC }, // 193.201.158.0 - 193.201.158.255 { 0xc1c99f80, 0xc1c9a1ff, REGISTRY_RIPENCC }, // 193.201.159.128 - 193.201.161.255 { 0xc1c9a200, 0xc1c9a2ff, REGISTRY_RIPENCC }, // 193.201.162.0 - 193.201.162.255 { 0xc1c9a300, 0xc1c9bfff, REGISTRY_RIPENCC }, // 193.201.163.0 - 193.201.191.255 { 0xc1c9c400, 0xc1c9c9ff, REGISTRY_RIPENCC }, // 193.201.196.0 - 193.201.201.255 { 0xc1c9cc00, 0xc1c9cfff, REGISTRY_RIPENCC }, // 193.201.204.0 - 193.201.207.255 { 0xc1c9d400, 0xc1c9f3ff, REGISTRY_RIPENCC }, // 193.201.212.0 - 193.201.243.255 { 0xc1c9fc00, 0xc1ca07ff, REGISTRY_RIPENCC }, // 193.201.252.0 - 193.202.7.255 { 0xc1ca1000, 0xc1ca1eff, REGISTRY_RIPENCC }, // 193.202.16.0 - 193.202.30.255 { 0xc1ca2000, 0xc1ca27ff, REGISTRY_RIPENCC }, // 193.202.32.0 - 193.202.39.255 { 0xc1ca2e00, 0xc1ca49ff, REGISTRY_RIPENCC }, // 193.202.46.0 - 193.202.73.255 { 0xc1ca4d00, 0xc1ca4fff, REGISTRY_RIPENCC }, // 193.202.77.0 - 193.202.79.255 { 0xc1ca5b00, 0xc1ca6fff, REGISTRY_RIPENCC }, // 193.202.91.0 - 193.202.111.255 { 0xc1ca7100, 0xc1ca71ff, REGISTRY_RIPENCC }, // 193.202.113.0 - 193.202.113.255 { 0xc1ca7300, 0xc1cb01ff, REGISTRY_RIPENCC }, // 193.202.115.0 - 193.203.1.255 { 0xc1cb0500, 0xc1cb07ff, REGISTRY_RIPENCC }, // 193.203.5.0 - 193.203.7.255 { 0xc1cb1200, 0xc1cb15ff, REGISTRY_RIPENCC }, // 193.203.18.0 - 193.203.21.255 { 0xc1cb1700, 0xc1cb17ff, REGISTRY_RIPENCC }, // 193.203.23.0 - 193.203.23.255 { 0xc1cb1a00, 0xc1cb1bff, REGISTRY_RIPENCC }, // 193.203.26.0 - 193.203.27.255 { 0xc1cb2000, 0xc1cb33ff, REGISTRY_RIPENCC }, // 193.203.32.0 - 193.203.51.255 { 0xc1cb3800, 0xc1cb3fff, REGISTRY_RIPENCC }, // 193.203.56.0 - 193.203.63.255 { 0xc1cb4000, 0xc1cb5fff, REGISTRY_RIPENCC }, // 193.203.64.0 - 193.203.95.255 { 0xc1cb6000, 0xc1cb6dff, REGISTRY_RIPENCC }, // 193.203.96.0 - 193.203.109.255 { 0xc1cb7000, 0xc1cb7fff, REGISTRY_RIPENCC }, // 193.203.112.0 - 193.203.127.255 { 0xc1cb8000, 0xc1cbbfff, REGISTRY_RIPENCC }, // 193.203.128.0 - 193.203.191.255 { 0xc1cbc000, 0xc1cbd5ff, REGISTRY_RIPENCC }, // 193.203.192.0 - 193.203.213.255 { 0xc1cbd800, 0xc1cbdfff, REGISTRY_RIPENCC }, // 193.203.216.0 - 193.203.223.255 { 0xc1cbe100, 0xc1cbffff, REGISTRY_RIPENCC }, // 193.203.225.0 - 193.203.255.255 { 0xc1cc0000, 0xc1d9ffff, REGISTRY_RIPENCC }, // 193.204.0.0 - 193.217.255.255 { 0xc1da0000, 0xc1da06ff, REGISTRY_RIPENCC }, // 193.218.0.0 - 193.218.6.255 { 0xc1da0800, 0xc1da1fff, REGISTRY_RIPENCC }, // 193.218.8.0 - 193.218.31.255 { 0xc1da2400, 0xc1da24ff, REGISTRY_RIPENCC }, // 193.218.36.0 - 193.218.36.255 { 0xc1da2900, 0xc1da2aff, REGISTRY_RIPENCC }, // 193.218.41.0 - 193.218.42.255 { 0xc1da2c00, 0xc1da51ff, REGISTRY_RIPENCC }, // 193.218.44.0 - 193.218.81.255 { 0xc1da5400, 0xc1da68ff, REGISTRY_RIPENCC }, // 193.218.84.0 - 193.218.104.255 { 0xc1da6a00, 0xc1da75ff, REGISTRY_RIPENCC }, // 193.218.106.0 - 193.218.117.255 { 0xc1da7800, 0xc1da78ff, REGISTRY_RIPENCC }, // 193.218.120.0 - 193.218.120.255 { 0xc1da7a00, 0xc1da7aff, REGISTRY_RIPENCC }, // 193.218.122.0 - 193.218.122.255 { 0xc1da7c00, 0xc1da7fff, REGISTRY_RIPENCC }, // 193.218.124.0 - 193.218.127.255 { 0xc1da8000, 0xc1da83ff, REGISTRY_RIPENCC }, // 193.218.128.0 - 193.218.131.255 { 0xc1da8400, 0xc1da9bff, REGISTRY_RIPENCC }, // 193.218.132.0 - 193.218.155.255 { 0xc1da9c00, 0xc1daafff, REGISTRY_RIPENCC }, // 193.218.156.0 - 193.218.175.255 { 0xc1dab000, 0xc1dac7ff, REGISTRY_RIPENCC }, // 193.218.176.0 - 193.218.199.255 { 0xc1daca00, 0xc1dacaff, REGISTRY_RIPENCC }, // 193.218.202.0 - 193.218.202.255 { 0xc1dacd00, 0xc1dacf7f, REGISTRY_RIPENCC }, // 193.218.205.0 - 193.218.207.127 { 0xc1dacf80, 0xc1daddff, REGISTRY_RIPENCC }, // 193.218.207.128 - 193.218.221.255 { 0xc1dadf00, 0xc1daffff, REGISTRY_RIPENCC }, // 193.218.223.0 - 193.218.255.255 { 0xc1db0100, 0xc1db06ff, REGISTRY_RIPENCC }, // 193.219.1.0 - 193.219.6.255 { 0xc1db0800, 0xc1db1fff, REGISTRY_RIPENCC }, // 193.219.8.0 - 193.219.31.255 { 0xc1db2000, 0xc1db5fff, REGISTRY_RIPENCC }, // 193.219.32.0 - 193.219.95.255 { 0xc1db6000, 0xc1db62ff, REGISTRY_RIPENCC }, // 193.219.96.0 - 193.219.98.255 { 0xc1db6400, 0xc1db64ff, REGISTRY_RIPENCC }, // 193.219.100.0 - 193.219.100.255 { 0xc1db6600, 0xc1db78ff, REGISTRY_RIPENCC }, // 193.219.102.0 - 193.219.120.255 { 0xc1db7a00, 0xc1db7fff, REGISTRY_RIPENCC }, // 193.219.122.0 - 193.219.127.255 { 0xc1db8000, 0xc1dcffff, REGISTRY_RIPENCC }, // 193.219.128.0 - 193.220.255.255 { 0xc1dd0000, 0xc1dd51ff, REGISTRY_RIPENCC }, // 193.221.0.0 - 193.221.81.255 { 0xc1dd5200, 0xc1dd53ff, REGISTRY_RIPENCC }, // 193.221.82.0 - 193.221.83.255 { 0xc1dd5400, 0xc1dd5cff, REGISTRY_RIPENCC }, // 193.221.84.0 - 193.221.92.255 { 0xc1dd6000, 0xc1dd77ff, REGISTRY_RIPENCC }, // 193.221.96.0 - 193.221.119.255 { 0xc1dd7900, 0xc1dd7aff, REGISTRY_RIPENCC }, // 193.221.121.0 - 193.221.122.255 { 0xc1dd7c00, 0xc1ddbfff, REGISTRY_RIPENCC }, // 193.221.124.0 - 193.221.191.255 { 0xc1ddda00, 0xc1dddaff, REGISTRY_AFRINIC }, // 193.221.218.0 - 193.221.218.255 { 0xc1dde000, 0xc1de31ff, REGISTRY_RIPENCC }, // 193.221.224.0 - 193.222.49.255 { 0xc1de3300, 0xc1de3bff, REGISTRY_RIPENCC }, // 193.222.51.0 - 193.222.59.255 { 0xc1de3d00, 0xc1de5fff, REGISTRY_RIPENCC }, // 193.222.61.0 - 193.222.95.255 { 0xc1de6a00, 0xc1de6eff, REGISTRY_RIPENCC }, // 193.222.106.0 - 193.222.110.255 { 0xc1de7000, 0xc1de8aff, REGISTRY_RIPENCC }, // 193.222.112.0 - 193.222.138.255 { 0xc1de8c00, 0xc1de8dff, REGISTRY_RIPENCC }, // 193.222.140.0 - 193.222.141.255 { 0xc1de9400, 0xc1debbff, REGISTRY_RIPENCC }, // 193.222.148.0 - 193.222.187.255 { 0xc1debe00, 0xc1defaff, REGISTRY_RIPENCC }, // 193.222.190.0 - 193.222.250.255 { 0xc1defe00, 0xc1df3fff, REGISTRY_RIPENCC }, // 193.222.254.0 - 193.223.63.255 { 0xc1df4400, 0xc1df44ff, REGISTRY_RIPENCC }, // 193.223.68.0 - 193.223.68.255 { 0xc1df4c00, 0xc1df5fff, REGISTRY_RIPENCC }, // 193.223.76.0 - 193.223.95.255 { 0xc1df6200, 0xc1df66ff, REGISTRY_RIPENCC }, // 193.223.98.0 - 193.223.102.255 { 0xc1df6d00, 0xc1df6dff, REGISTRY_RIPENCC }, // 193.223.109.0 - 193.223.109.255 { 0xc1df7000, 0xc1dff7ff, REGISTRY_RIPENCC }, // 193.223.112.0 - 193.223.247.255 { 0xc1dffe00, 0xc1dfffff, REGISTRY_RIPENCC }, // 193.223.254.0 - 193.223.255.255 { 0xc1e00000, 0xc1e2ffff, REGISTRY_RIPENCC }, // 193.224.0.0 - 193.226.255.255 { 0xc1e30000, 0xc1e33fff, REGISTRY_AFRINIC }, // 193.227.0.0 - 193.227.63.255 { 0xc1e34000, 0xc1e35fff, REGISTRY_RIPENCC }, // 193.227.64.0 - 193.227.95.255 { 0xc1e36000, 0xc1e366ff, REGISTRY_RIPENCC }, // 193.227.96.0 - 193.227.102.255 { 0xc1e36800, 0xc1e36cff, REGISTRY_RIPENCC }, // 193.227.104.0 - 193.227.108.255 { 0xc1e36e00, 0xc1e371ff, REGISTRY_RIPENCC }, // 193.227.110.0 - 193.227.113.255 { 0xc1e37300, 0xc1e378ff, REGISTRY_RIPENCC }, // 193.227.115.0 - 193.227.120.255 { 0xc1e37b00, 0xc1e37cff, REGISTRY_RIPENCC }, // 193.227.123.0 - 193.227.124.255 { 0xc1e37e00, 0xc1e37fff, REGISTRY_RIPENCC }, // 193.227.126.0 - 193.227.127.255 { 0xc1e38000, 0xc1e380ff, REGISTRY_AFRINIC }, // 193.227.128.0 - 193.227.128.255 { 0xc1e38200, 0xc1e386ff, REGISTRY_RIPENCC }, // 193.227.130.0 - 193.227.134.255 { 0xc1e38800, 0xc1e39fff, REGISTRY_RIPENCC }, // 193.227.136.0 - 193.227.159.255 { 0xc1e3a000, 0xc1e3bfff, REGISTRY_RIPENCC }, // 193.227.160.0 - 193.227.191.255 { 0xc1e3c000, 0xc1e3ebff, REGISTRY_RIPENCC }, // 193.227.192.0 - 193.227.235.255 { 0xc1e3ee00, 0xc1e3f1ff, REGISTRY_RIPENCC }, // 193.227.238.0 - 193.227.241.255 { 0xc1e3f400, 0xc1e402ff, REGISTRY_RIPENCC }, // 193.227.244.0 - 193.228.2.255 { 0xc1e40400, 0xc1e409ff, REGISTRY_RIPENCC }, // 193.228.4.0 - 193.228.9.255 { 0xc1e41000, 0xc1e42fff, REGISTRY_RIPENCC }, // 193.228.16.0 - 193.228.47.255 { 0xc1e43d00, 0xc1e447ff, REGISTRY_RIPENCC }, // 193.228.61.0 - 193.228.71.255 { 0xc1e45000, 0xc1e459ff, REGISTRY_RIPENCC }, // 193.228.80.0 - 193.228.89.255 { 0xc1e45c00, 0xc1e464ff, REGISTRY_RIPENCC }, // 193.228.92.0 - 193.228.100.255 { 0xc1e46600, 0xc1e46bff, REGISTRY_RIPENCC }, // 193.228.102.0 - 193.228.107.255 { 0xc1e47000, 0xc1e47aff, REGISTRY_RIPENCC }, // 193.228.112.0 - 193.228.122.255 { 0xc1e48d00, 0xc1e48dff, REGISTRY_RIPENCC }, // 193.228.141.0 - 193.228.141.255 { 0xc1e48f00, 0xc1e490ff, REGISTRY_RIPENCC }, // 193.228.143.0 - 193.228.144.255 { 0xc1e49200, 0xc1e493ff, REGISTRY_RIPENCC }, // 193.228.146.0 - 193.228.147.255 { 0xc1e49500, 0xc1e49fff, REGISTRY_RIPENCC }, // 193.228.149.0 - 193.228.159.255 { 0xc1e4aa00, 0xc1e4abff, REGISTRY_RIPENCC }, // 193.228.170.0 - 193.228.171.255 { 0xc1e4ae00, 0xc1e4aeff, REGISTRY_RIPENCC }, // 193.228.174.0 - 193.228.174.255 { 0xc1e4b000, 0xc1e4b4ff, REGISTRY_RIPENCC }, // 193.228.176.0 - 193.228.180.255 { 0xc1e4b800, 0xc1e4b8ff, REGISTRY_RIPENCC }, // 193.228.184.0 - 193.228.184.255 { 0xc1e4bb00, 0xc1e4bbff, REGISTRY_RIPENCC }, // 193.228.187.0 - 193.228.187.255 { 0xc1e4c000, 0xc1e4c0ff, REGISTRY_RIPENCC }, // 193.228.192.0 - 193.228.192.255 { 0xc1e4c500, 0xc1e4c6ff, REGISTRY_RIPENCC }, // 193.228.197.0 - 193.228.198.255 { 0xc1e4c800, 0xc1e4cbff, REGISTRY_RIPENCC }, // 193.228.200.0 - 193.228.203.255 { 0xc1e4cf00, 0xc1e4dfff, REGISTRY_RIPENCC }, // 193.228.207.0 - 193.228.223.255 { 0xc1e4e300, 0xc1e4e3ff, REGISTRY_RIPENCC }, // 193.228.227.0 - 193.228.227.255 { 0xc1e4e800, 0xc1e4eaff, REGISTRY_RIPENCC }, // 193.228.232.0 - 193.228.234.255 { 0xc1e4f000, 0xc1ec1fff, REGISTRY_RIPENCC }, // 193.228.240.0 - 193.236.31.255 { 0xc1ec2000, 0xc1ec5fff, REGISTRY_RIPENCC }, // 193.236.32.0 - 193.236.95.255 { 0xc1ec6000, 0xc1ec77ff, REGISTRY_RIPENCC }, // 193.236.96.0 - 193.236.119.255 { 0xc1ec7800, 0xc1ec7bff, REGISTRY_RIPENCC }, // 193.236.120.0 - 193.236.123.255 { 0xc1ec7c00, 0xc1ec7fff, REGISTRY_RIPENCC }, // 193.236.124.0 - 193.236.127.255 { 0xc1ec8000, 0xc1ec97ff, REGISTRY_RIPENCC }, // 193.236.128.0 - 193.236.151.255 { 0xc1ec9800, 0xc1ecafff, REGISTRY_RIPENCC }, // 193.236.152.0 - 193.236.175.255 { 0xc1ecb000, 0xc1ecb1ff, REGISTRY_RIPENCC }, // 193.236.176.0 - 193.236.177.255 { 0xc1ecb200, 0xc1edffff, REGISTRY_RIPENCC }, // 193.236.178.0 - 193.237.255.255 { 0xc1ee0400, 0xc1ee27ff, REGISTRY_RIPENCC }, // 193.238.4.0 - 193.238.39.255 { 0xc1ee2800, 0xc1ee2bff, REGISTRY_RIPENCC }, // 193.238.40.0 - 193.238.43.255 { 0xc1ee3000, 0xc1ee53ff, REGISTRY_RIPENCC }, // 193.238.48.0 - 193.238.83.255 { 0xc1ee5800, 0xc1ee77ff, REGISTRY_RIPENCC }, // 193.238.88.0 - 193.238.119.255 { 0xc1ee7c00, 0xc1ee9bff, REGISTRY_RIPENCC }, // 193.238.124.0 - 193.238.155.255 { 0xc1ee9c00, 0xc1ee9fff, REGISTRY_RIPENCC }, // 193.238.156.0 - 193.238.159.255 { 0xc1eea000, 0xc1eeb7ff, REGISTRY_RIPENCC }, // 193.238.160.0 - 193.238.183.255 { 0xc1eeb800, 0xc1eebbff, REGISTRY_RIPENCC }, // 193.238.184.0 - 193.238.187.255 { 0xc1eebc00, 0xc1eebfff, REGISTRY_RIPENCC }, // 193.238.188.0 - 193.238.191.255 { 0xc1eec400, 0xc1eeebff, REGISTRY_RIPENCC }, // 193.238.196.0 - 193.238.235.255 { 0xc1eef000, 0xc1eef3ff, REGISTRY_RIPENCC }, // 193.238.240.0 - 193.238.243.255 { 0xc1eef800, 0xc1ef1fff, REGISTRY_RIPENCC }, // 193.238.248.0 - 193.239.31.255 { 0xc1ef2400, 0xc1ef53ff, REGISTRY_RIPENCC }, // 193.239.36.0 - 193.239.83.255 { 0xc1ef5800, 0xc1ef91ff, REGISTRY_RIPENCC }, // 193.239.88.0 - 193.239.145.255 { 0xc1ef9400, 0xc1ef95ff, REGISTRY_RIPENCC }, // 193.239.148.0 - 193.239.149.255 { 0xc1ef9800, 0xc1ef99ff, REGISTRY_RIPENCC }, // 193.239.152.0 - 193.239.153.255 { 0xc1ef9c00, 0xc1ef9fff, REGISTRY_RIPENCC }, // 193.239.156.0 - 193.239.159.255 { 0xc1efa200, 0xc1efa3ff, REGISTRY_RIPENCC }, // 193.239.162.0 - 193.239.163.255 { 0xc1efa400, 0xc1efa5ff, REGISTRY_RIPENCC }, // 193.239.164.0 - 193.239.165.255 { 0xc1efa800, 0xc1efb1ff, REGISTRY_RIPENCC }, // 193.239.168.0 - 193.239.177.255 { 0xc1efb400, 0xc1efbdff, REGISTRY_RIPENCC }, // 193.239.180.0 - 193.239.189.255 { 0xc1efc000, 0xc1efc3ff, REGISTRY_RIPENCC }, // 193.239.192.0 - 193.239.195.255 { 0xc1efc600, 0xc1efebff, REGISTRY_RIPENCC }, // 193.239.198.0 - 193.239.235.255 { 0xc1efee00, 0xc1eff3ff, REGISTRY_RIPENCC }, // 193.239.238.0 - 193.239.243.255 { 0xc1eff600, 0xc1efffff, REGISTRY_RIPENCC }, // 193.239.246.0 - 193.239.255.255 { 0xc1f00000, 0xc1f0ffff, REGISTRY_RIPENCC }, // 193.240.0.0 - 193.240.255.255 { 0xc1f10000, 0xc1f262ff, REGISTRY_RIPENCC }, // 193.241.0.0 - 193.242.98.255 { 0xc1f26400, 0xc1f268ff, REGISTRY_RIPENCC }, // 193.242.100.0 - 193.242.104.255 { 0xc1f26b00, 0xc1f26cff, REGISTRY_RIPENCC }, // 193.242.107.0 - 193.242.108.255 { 0xc1f26e00, 0xc1f298ff, REGISTRY_RIPENCC }, // 193.242.110.0 - 193.242.152.255 { 0xc1f29a00, 0xc1f2a3ff, REGISTRY_RIPENCC }, // 193.242.154.0 - 193.242.163.255 { 0xc1f2a400, 0xc1f2a5ff, REGISTRY_RIPENCC }, // 193.242.164.0 - 193.242.165.255 { 0xc1f2a600, 0xc1f2adff, REGISTRY_RIPENCC }, // 193.242.166.0 - 193.242.173.255 { 0xc1f2ae00, 0xc1f2afff, REGISTRY_RIPENCC }, // 193.242.174.0 - 193.242.175.255 { 0xc1f2b000, 0xc1f385ff, REGISTRY_RIPENCC }, // 193.242.176.0 - 193.243.133.255 { 0xc1f38800, 0xc1f395ff, REGISTRY_RIPENCC }, // 193.243.136.0 - 193.243.149.255 { 0xc1f39800, 0xc1f3a0ff, REGISTRY_RIPENCC }, // 193.243.152.0 - 193.243.160.255 { 0xc1f3a200, 0xc1f3a3ff, REGISTRY_RIPENCC }, // 193.243.162.0 - 193.243.163.255 { 0xc1f3a700, 0xc1f3b5ff, REGISTRY_RIPENCC }, // 193.243.167.0 - 193.243.181.255 { 0xc1f3b740, 0xc1f3b77f, REGISTRY_RIPENCC }, // 193.243.183.64 - 193.243.183.127 { 0xc1f3b7c0, 0xc1f3bfff, REGISTRY_RIPENCC }, // 193.243.183.192 - 193.243.191.255 { 0xc1f3c000, 0xc1fdffff, REGISTRY_RIPENCC }, // 193.243.192.0 - 193.253.255.255 { 0xc1fe0100, 0xc1fe02ff, REGISTRY_RIPENCC }, // 193.254.1.0 - 193.254.2.255 { 0xc1fe0400, 0xc1fe07ff, REGISTRY_RIPENCC }, // 193.254.4.0 - 193.254.7.255 { 0xc1fe1200, 0xc1fe1aff, REGISTRY_RIPENCC }, // 193.254.18.0 - 193.254.26.255 { 0xc1fe1d00, 0xc1fe1fff, REGISTRY_RIPENCC }, // 193.254.29.0 - 193.254.31.255 { 0xc1fe2000, 0xc1feafff, REGISTRY_RIPENCC }, // 193.254.32.0 - 193.254.175.255 { 0xc1feb000, 0xc1feb7ff, REGISTRY_RIPENCC }, // 193.254.176.0 - 193.254.183.255 { 0xc1feb800, 0xc1febfff, REGISTRY_RIPENCC }, // 193.254.184.0 - 193.254.191.255 { 0xc1fec000, 0xc1fecbff, REGISTRY_RIPENCC }, // 193.254.192.0 - 193.254.203.255 { 0xc1fece00, 0xc1fed9ff, REGISTRY_RIPENCC }, // 193.254.206.0 - 193.254.217.255 { 0xc1fedc00, 0xc1fee9ff, REGISTRY_RIPENCC }, // 193.254.220.0 - 193.254.233.255 { 0xc1feec00, 0xc1fef3ff, REGISTRY_RIPENCC }, // 193.254.236.0 - 193.254.243.255 { 0xc1fef600, 0xc1fef7ff, REGISTRY_RIPENCC }, // 193.254.246.0 - 193.254.247.255 { 0xc1fef800, 0xc1fef9ff, REGISTRY_RIPENCC }, // 193.254.248.0 - 193.254.249.255 { 0xc1fefa00, 0xc1feffff, REGISTRY_RIPENCC }, // 193.254.250.0 - 193.254.255.255 { 0xc1ff0000, 0xc1ffffff, REGISTRY_RIPENCC }, // 193.255.0.0 - 193.255.255.255 { 0xc2000000, 0xc20047ff, REGISTRY_RIPENCC }, // 194.0.0.0 - 194.0.71.255 { 0xc2004800, 0xc2004bff, REGISTRY_RIPENCC }, // 194.0.72.0 - 194.0.75.255 { 0xc2004c00, 0xc20067ff, REGISTRY_RIPENCC }, // 194.0.76.0 - 194.0.103.255 { 0xc2006c00, 0xc20073ff, REGISTRY_RIPENCC }, // 194.0.108.0 - 194.0.115.255 { 0xc2007800, 0xc20084ff, REGISTRY_RIPENCC }, // 194.0.120.0 - 194.0.132.255 { 0xc2008600, 0xc20087ff, REGISTRY_RIPENCC }, // 194.0.134.0 - 194.0.135.255 { 0xc2008900, 0xc2008aff, REGISTRY_RIPENCC }, // 194.0.137.0 - 194.0.138.255 { 0xc2008c00, 0xc2008cff, REGISTRY_RIPENCC }, // 194.0.140.0 - 194.0.140.255 { 0xc2008e00, 0xc2009eff, REGISTRY_RIPENCC }, // 194.0.142.0 - 194.0.158.255 { 0xc200a000, 0xc200a7ff, REGISTRY_RIPENCC }, // 194.0.160.0 - 194.0.167.255 { 0xc200a900, 0xc200b3ff, REGISTRY_RIPENCC }, // 194.0.169.0 - 194.0.179.255 { 0xc200b500, 0xc200b9ff, REGISTRY_RIPENCC }, // 194.0.181.0 - 194.0.185.255 { 0xc200bb00, 0xc200bbff, REGISTRY_RIPENCC }, // 194.0.187.0 - 194.0.187.255 { 0xc200be00, 0xc200c0ff, REGISTRY_RIPENCC }, // 194.0.190.0 - 194.0.192.255 { 0xc200c200, 0xc200ceff, REGISTRY_RIPENCC }, // 194.0.194.0 - 194.0.206.255 { 0xc200d000, 0xc200dcff, REGISTRY_RIPENCC }, // 194.0.208.0 - 194.0.220.255 { 0xc200de00, 0xc200deff, REGISTRY_RIPENCC }, // 194.0.222.0 - 194.0.222.255 { 0xc200e000, 0xc200e2ff, REGISTRY_RIPENCC }, // 194.0.224.0 - 194.0.226.255 { 0xc200e500, 0xc200e6ff, REGISTRY_RIPENCC }, // 194.0.229.0 - 194.0.230.255 { 0xc200e800, 0xc200f2ff, REGISTRY_RIPENCC }, // 194.0.232.0 - 194.0.242.255 { 0xc200f600, 0xc200f7ff, REGISTRY_RIPENCC }, // 194.0.246.0 - 194.0.247.255 { 0xc200f900, 0xc201b0ff, REGISTRY_RIPENCC }, // 194.0.249.0 - 194.1.176.255 { 0xc201b200, 0xc201b2ff, REGISTRY_RIPENCC }, // 194.1.178.0 - 194.1.178.255 { 0xc201b400, 0xc201b7ff, REGISTRY_RIPENCC }, // 194.1.180.0 - 194.1.183.255 { 0xc201b900, 0xc201b9ff, REGISTRY_RIPENCC }, // 194.1.185.0 - 194.1.185.255 { 0xc201bc00, 0xc201bfff, REGISTRY_RIPENCC }, // 194.1.188.0 - 194.1.191.255 { 0xc201c100, 0xc201d9ff, REGISTRY_RIPENCC }, // 194.1.193.0 - 194.1.217.255 { 0xc201db00, 0xc201f3ff, REGISTRY_RIPENCC }, // 194.1.219.0 - 194.1.243.255 { 0xc201f500, 0xc201ffff, REGISTRY_RIPENCC }, // 194.1.245.0 - 194.1.255.255 { 0xc2020000, 0xc20249ff, REGISTRY_RIPENCC }, // 194.2.0.0 - 194.2.73.255 { 0xc2024a00, 0xc2024bff, REGISTRY_RIPENCC }, // 194.2.74.0 - 194.2.75.255 { 0xc2024c00, 0xc2024cff, REGISTRY_RIPENCC }, // 194.2.76.0 - 194.2.76.255 { 0xc2024d00, 0xc2024dff, REGISTRY_RIPENCC }, // 194.2.77.0 - 194.2.77.255 { 0xc2024e00, 0xc20257ff, REGISTRY_RIPENCC }, // 194.2.78.0 - 194.2.87.255 { 0xc2025800, 0xc2025fff, REGISTRY_RIPENCC }, // 194.2.88.0 - 194.2.95.255 { 0xc2026000, 0xc2029aff, REGISTRY_RIPENCC }, // 194.2.96.0 - 194.2.154.255 { 0xc2029b00, 0xc2029bff, REGISTRY_RIPENCC }, // 194.2.155.0 - 194.2.155.255 { 0xc2029c00, 0xc20387ff, REGISTRY_RIPENCC }, // 194.2.156.0 - 194.3.135.255 { 0xc2038800, 0xc20388ff, REGISTRY_RIPENCC }, // 194.3.136.0 - 194.3.136.255 { 0xc2038900, 0xc203ffff, REGISTRY_RIPENCC }, // 194.3.137.0 - 194.3.255.255 { 0xc2040000, 0xc20407ff, REGISTRY_RIPENCC }, // 194.4.0.0 - 194.4.7.255 { 0xc2040a00, 0xc2040dff, REGISTRY_RIPENCC }, // 194.4.10.0 - 194.4.13.255 { 0xc2041000, 0xc20427ff, REGISTRY_RIPENCC }, // 194.4.16.0 - 194.4.39.255 { 0xc2044800, 0xc20463ff, REGISTRY_RIPENCC }, // 194.4.72.0 - 194.4.99.255 { 0xc2046800, 0xc2048fff, REGISTRY_RIPENCC }, // 194.4.104.0 - 194.4.143.255 { 0xc2049800, 0xc20499ff, REGISTRY_RIPENCC }, // 194.4.152.0 - 194.4.153.255 { 0xc204b000, 0xc204ffff, REGISTRY_RIPENCC }, // 194.4.176.0 - 194.4.255.255 { 0xc2051100, 0xc20517ff, REGISTRY_RIPENCC }, // 194.5.17.0 - 194.5.23.255 { 0xc2051e00, 0xc2051fff, REGISTRY_RIPENCC }, // 194.5.30.0 - 194.5.31.255 { 0xc2052200, 0xc20527ff, REGISTRY_RIPENCC }, // 194.5.34.0 - 194.5.39.255 { 0xc2053300, 0xc20533ff, REGISTRY_RIPENCC }, // 194.5.51.0 - 194.5.51.255 { 0xc2053700, 0xc20537ff, REGISTRY_RIPENCC }, // 194.5.55.0 - 194.5.55.255 { 0xc2053f00, 0xc2053fff, REGISTRY_RIPENCC }, // 194.5.63.0 - 194.5.63.255 { 0xc2054800, 0xc2054dff, REGISTRY_RIPENCC }, // 194.5.72.0 - 194.5.77.255 { 0xc2055000, 0xc20551ff, REGISTRY_RIPENCC }, // 194.5.80.0 - 194.5.81.255 { 0xc2055700, 0xc20559ff, REGISTRY_RIPENCC }, // 194.5.87.0 - 194.5.89.255 { 0xc2056c00, 0xc2057dff, REGISTRY_RIPENCC }, // 194.5.108.0 - 194.5.125.255 { 0xc2058500, 0xc20586ff, REGISTRY_RIPENCC }, // 194.5.133.0 - 194.5.134.255 { 0xc2058800, 0xc20590ff, REGISTRY_RIPENCC }, // 194.5.136.0 - 194.5.144.255 { 0xc2059600, 0xc20597ff, REGISTRY_RIPENCC }, // 194.5.150.0 - 194.5.151.255 { 0xc205a600, 0xc205a7ff, REGISTRY_RIPENCC }, // 194.5.166.0 - 194.5.167.255 { 0xc205aa00, 0xc205aeff, REGISTRY_RIPENCC }, // 194.5.170.0 - 194.5.174.255 { 0xc205bd00, 0xc205bfff, REGISTRY_RIPENCC }, // 194.5.189.0 - 194.5.191.255 { 0xc205c200, 0xc205c2ff, REGISTRY_RIPENCC }, // 194.5.194.0 - 194.5.194.255 { 0xc205c400, 0xc205ccff, REGISTRY_RIPENCC }, // 194.5.196.0 - 194.5.204.255 { 0xc205ea00, 0xc205eaff, REGISTRY_RIPENCC }, // 194.5.234.0 - 194.5.234.255 { 0xc205ee00, 0xc205efff, REGISTRY_RIPENCC }, // 194.5.238.0 - 194.5.239.255 { 0xc205fd00, 0xc205fdff, REGISTRY_RIPENCC }, // 194.5.253.0 - 194.5.253.255 { 0xc2060000, 0xc206bfff, REGISTRY_RIPENCC }, // 194.6.0.0 - 194.6.191.255 { 0xc206c000, 0xc206cbff, REGISTRY_RIPENCC }, // 194.6.192.0 - 194.6.203.255 { 0xc206cc00, 0xc206cfff, REGISTRY_RIPENCC }, // 194.6.204.0 - 194.6.207.255 { 0xc206d000, 0xc206dfff, REGISTRY_RIPENCC }, // 194.6.208.0 - 194.6.223.255 { 0xc206e000, 0xc206e0ff, REGISTRY_AFRINIC }, // 194.6.224.0 - 194.6.224.255 { 0xc206e100, 0xc206e9ff, REGISTRY_RIPENCC }, // 194.6.225.0 - 194.6.233.255 { 0xc206eb00, 0xc206f6ff, REGISTRY_RIPENCC }, // 194.6.235.0 - 194.6.246.255 { 0xc206f800, 0xc206f9ff, REGISTRY_RIPENCC }, // 194.6.248.0 - 194.6.249.255 { 0xc206fa00, 0xc206faff, REGISTRY_RIPENCC }, // 194.6.250.0 - 194.6.250.255 { 0xc206fd00, 0xc206fdff, REGISTRY_RIPENCC }, // 194.6.253.0 - 194.6.253.255 { 0xc206ff00, 0xc206ffff, REGISTRY_RIPENCC }, // 194.6.255.0 - 194.6.255.255 { 0xc2070000, 0xc207ffff, REGISTRY_RIPENCC }, // 194.7.0.0 - 194.7.255.255 { 0xc2080000, 0xc20800ff, REGISTRY_RIPENCC }, // 194.8.0.0 - 194.8.0.255 { 0xc2080100, 0xc20803ff, REGISTRY_RIPENCC }, // 194.8.1.0 - 194.8.3.255 { 0xc2080400, 0xc2080bff, REGISTRY_RIPENCC }, // 194.8.4.0 - 194.8.11.255 { 0xc2080e00, 0xc2081bff, REGISTRY_RIPENCC }, // 194.8.14.0 - 194.8.27.255 { 0xc2081d00, 0xc2082fff, REGISTRY_RIPENCC }, // 194.8.29.0 - 194.8.47.255 { 0xc2083100, 0xc2083aff, REGISTRY_RIPENCC }, // 194.8.49.0 - 194.8.58.255 { 0xc2083c00, 0xc20855ff, REGISTRY_RIPENCC }, // 194.8.60.0 - 194.8.85.255 { 0xc2085800, 0xc2085fff, REGISTRY_RIPENCC }, // 194.8.88.0 - 194.8.95.255 { 0xc2086000, 0xc2087fff, REGISTRY_RIPENCC }, // 194.8.96.0 - 194.8.127.255 { 0xc2088000, 0xc2088bff, REGISTRY_RIPENCC }, // 194.8.128.0 - 194.8.139.255 { 0xc2089000, 0xc2089fff, REGISTRY_RIPENCC }, // 194.8.144.0 - 194.8.159.255 { 0xc208a000, 0xc208dfff, REGISTRY_RIPENCC }, // 194.8.160.0 - 194.8.223.255 { 0xc208e000, 0xc208fdff, REGISTRY_RIPENCC }, // 194.8.224.0 - 194.8.253.255 { 0xc208fe00, 0xc208ffff, REGISTRY_RIPENCC }, // 194.8.254.0 - 194.8.255.255 { 0xc2090200, 0xc20907ff, REGISTRY_RIPENCC }, // 194.9.2.0 - 194.9.7.255 { 0xc2090a00, 0xc20911ff, REGISTRY_RIPENCC }, // 194.9.10.0 - 194.9.17.255 { 0xc2091400, 0xc20917ff, REGISTRY_RIPENCC }, // 194.9.20.0 - 194.9.23.255 { 0xc2091800, 0xc20919ff, REGISTRY_RIPENCC }, // 194.9.24.0 - 194.9.25.255 { 0xc2091a00, 0xc2091fff, REGISTRY_RIPENCC }, // 194.9.26.0 - 194.9.31.255 { 0xc2092000, 0xc20921ff, REGISTRY_RIPENCC }, // 194.9.32.0 - 194.9.33.255 { 0xc2092200, 0xc20937ff, REGISTRY_RIPENCC }, // 194.9.34.0 - 194.9.55.255 { 0xc2093a00, 0xc2093fff, REGISTRY_RIPENCC }, // 194.9.58.0 - 194.9.63.255 { 0xc2094000, 0xc20941ff, REGISTRY_AFRINIC }, // 194.9.64.0 - 194.9.65.255 { 0xc2094200, 0xc2094fff, REGISTRY_RIPENCC }, // 194.9.66.0 - 194.9.79.255 { 0xc2095200, 0xc20953ff, REGISTRY_AFRINIC }, // 194.9.82.0 - 194.9.83.255 { 0xc2095400, 0xc20955ff, REGISTRY_RIPENCC }, // 194.9.84.0 - 194.9.85.255 { 0xc2095600, 0xc20957ff, REGISTRY_RIPENCC }, // 194.9.86.0 - 194.9.87.255 { 0xc2095800, 0xc209abff, REGISTRY_RIPENCC }, // 194.9.88.0 - 194.9.171.255 { 0xc209af00, 0xc209afff, REGISTRY_RIPENCC }, // 194.9.175.0 - 194.9.175.255 { 0xc209b400, 0xc209b7ff, REGISTRY_RIPENCC }, // 194.9.180.0 - 194.9.183.255 { 0xc209bc00, 0xc209cfff, REGISTRY_RIPENCC }, // 194.9.188.0 - 194.9.207.255 { 0xc209d400, 0xc209d7ff, REGISTRY_RIPENCC }, // 194.9.212.0 - 194.9.215.255 { 0xc209dc00, 0xc209ddff, REGISTRY_RIPENCC }, // 194.9.220.0 - 194.9.221.255 { 0xc209df00, 0xc209ffff, REGISTRY_RIPENCC }, // 194.9.223.0 - 194.9.255.255 { 0xc20a0000, 0xc20affff, REGISTRY_RIPENCC }, // 194.10.0.0 - 194.10.255.255 { 0xc20b0000, 0xc20b0fff, REGISTRY_RIPENCC }, // 194.11.0.0 - 194.11.15.255 { 0xc20b1100, 0xc20b12ff, REGISTRY_RIPENCC }, // 194.11.17.0 - 194.11.18.255 { 0xc20b1600, 0xc20b18ff, REGISTRY_RIPENCC }, // 194.11.22.0 - 194.11.24.255 { 0xc20b1a00, 0xc20b52ff, REGISTRY_RIPENCC }, // 194.11.26.0 - 194.11.82.255 { 0xc20b5800, 0xc20b83ff, REGISTRY_RIPENCC }, // 194.11.88.0 - 194.11.131.255 { 0xc20b8500, 0xc20b99ff, REGISTRY_RIPENCC }, // 194.11.133.0 - 194.11.153.255 { 0xc20b9c00, 0xc20ba3ff, REGISTRY_RIPENCC }, // 194.11.156.0 - 194.11.163.255 { 0xc20ba400, 0xc20ba7ff, REGISTRY_RIPENCC }, // 194.11.164.0 - 194.11.167.255 { 0xc20ba800, 0xc20bbbff, REGISTRY_RIPENCC }, // 194.11.168.0 - 194.11.187.255 { 0xc20bc800, 0xc20bd5ff, REGISTRY_RIPENCC }, // 194.11.200.0 - 194.11.213.255 { 0xc20bd900, 0xc20bdbff, REGISTRY_RIPENCC }, // 194.11.217.0 - 194.11.219.255 { 0xc20bdd00, 0xc20bdfff, REGISTRY_RIPENCC }, // 194.11.221.0 - 194.11.223.255 { 0xc20be100, 0xc20be1ff, REGISTRY_RIPENCC }, // 194.11.225.0 - 194.11.225.255 { 0xc20be300, 0xc20be5ff, REGISTRY_RIPENCC }, // 194.11.227.0 - 194.11.229.255 { 0xc20be800, 0xc20be9ff, REGISTRY_RIPENCC }, // 194.11.232.0 - 194.11.233.255 { 0xc20bec00, 0xc20beeff, REGISTRY_RIPENCC }, // 194.11.236.0 - 194.11.238.255 { 0xc20bf000, 0xc20bf2ff, REGISTRY_RIPENCC }, // 194.11.240.0 - 194.11.242.255 { 0xc20bf600, 0xc20bf7ff, REGISTRY_RIPENCC }, // 194.11.246.0 - 194.11.247.255 { 0xc20bfc00, 0xc20bfeff, REGISTRY_RIPENCC }, // 194.11.252.0 - 194.11.254.255 { 0xc20c0000, 0xc20c1fff, REGISTRY_RIPENCC }, // 194.12.0.0 - 194.12.31.255 { 0xc20c2000, 0xc20c2fff, REGISTRY_RIPENCC }, // 194.12.32.0 - 194.12.47.255 { 0xc20c3000, 0xc20c3fff, REGISTRY_RIPENCC }, // 194.12.48.0 - 194.12.63.255 { 0xc20c4000, 0xc20cdfff, REGISTRY_RIPENCC }, // 194.12.64.0 - 194.12.223.255 { 0xc20ce000, 0xc20cffff, REGISTRY_RIPENCC }, // 194.12.224.0 - 194.12.255.255 { 0xc20d0000, 0xc20d00ff, REGISTRY_RIPENCC }, // 194.13.0.0 - 194.13.0.255 { 0xc20d0200, 0xc20d3fff, REGISTRY_RIPENCC }, // 194.13.2.0 - 194.13.63.255 { 0xc20d4100, 0xc20d41ff, REGISTRY_RIPENCC }, // 194.13.65.0 - 194.13.65.255 { 0xc20d4200, 0xc20d42ff, REGISTRY_RIPENCC }, // 194.13.66.0 - 194.13.66.255 { 0xc20d4800, 0xc20d4fff, REGISTRY_RIPENCC }, // 194.13.72.0 - 194.13.79.255 { 0xc20d5800, 0xc20d6bff, REGISTRY_RIPENCC }, // 194.13.88.0 - 194.13.107.255 { 0xc20d6f00, 0xc20d7bff, REGISTRY_RIPENCC }, // 194.13.111.0 - 194.13.123.255 { 0xc20d8000, 0xc20d85ff, REGISTRY_RIPENCC }, // 194.13.128.0 - 194.13.133.255 { 0xc20d8700, 0xc20d87ff, REGISTRY_RIPENCC }, // 194.13.135.0 - 194.13.135.255 { 0xc20d8e00, 0xc20de7ff, REGISTRY_RIPENCC }, // 194.13.142.0 - 194.13.231.255 { 0xc20dee00, 0xc20dffff, REGISTRY_RIPENCC }, // 194.13.238.0 - 194.13.255.255 { 0xc20e0000, 0xc20effff, REGISTRY_RIPENCC }, // 194.14.0.0 - 194.14.255.255 { 0xc20f0000, 0xc20f1fff, REGISTRY_RIPENCC }, // 194.15.0.0 - 194.15.31.255 { 0xc20f4000, 0xc20f4bff, REGISTRY_RIPENCC }, // 194.15.64.0 - 194.15.75.255 { 0xc20f5000, 0xc20f5fff, REGISTRY_RIPENCC }, // 194.15.80.0 - 194.15.95.255 { 0xc20f7000, 0xc20f87ff, REGISTRY_RIPENCC }, // 194.15.112.0 - 194.15.135.255 { 0xc20f8900, 0xc20f8bff, REGISTRY_RIPENCC }, // 194.15.137.0 - 194.15.139.255 { 0xc20f8d00, 0xc20f91ff, REGISTRY_RIPENCC }, // 194.15.141.0 - 194.15.145.255 { 0xc20f9300, 0xc20f97ff, REGISTRY_RIPENCC }, // 194.15.147.0 - 194.15.151.255 { 0xc20f9c00, 0xc20fb5ff, REGISTRY_RIPENCC }, // 194.15.156.0 - 194.15.181.255 { 0xc20fb700, 0xc20fbbff, REGISTRY_RIPENCC }, // 194.15.183.0 - 194.15.187.255 { 0xc20fbe00, 0xc20fbfff, REGISTRY_RIPENCC }, // 194.15.190.0 - 194.15.191.255 { 0xc20fc200, 0xc20fc2ff, REGISTRY_RIPENCC }, // 194.15.194.0 - 194.15.194.255 { 0xc20fc600, 0xc20fd7ff, REGISTRY_RIPENCC }, // 194.15.198.0 - 194.15.215.255 { 0xc20fda00, 0xc20fdaff, REGISTRY_RIPENCC }, // 194.15.218.0 - 194.15.218.255 { 0xc20fdc00, 0xc20fdfff, REGISTRY_RIPENCC }, // 194.15.220.0 - 194.15.223.255 { 0xc20fe400, 0xc20fe7ff, REGISTRY_RIPENCC }, // 194.15.228.0 - 194.15.231.255 { 0xc20fe900, 0xc20fe9ff, REGISTRY_RIPENCC }, // 194.15.233.0 - 194.15.233.255 { 0xc20fed00, 0xc20fedff, REGISTRY_RIPENCC }, // 194.15.237.0 - 194.15.237.255 { 0xc20ff000, 0xc20ff7ff, REGISTRY_RIPENCC }, // 194.15.240.0 - 194.15.247.255 { 0xc20ffc00, 0xc20fffff, REGISTRY_RIPENCC }, // 194.15.252.0 - 194.15.255.255 { 0xc2100000, 0xc217ffff, REGISTRY_RIPENCC }, // 194.16.0.0 - 194.23.255.255 { 0xc2180000, 0xc218a1ff, REGISTRY_RIPENCC }, // 194.24.0.0 - 194.24.161.255 { 0xc218a400, 0xc218a5ff, REGISTRY_RIPENCC }, // 194.24.164.0 - 194.24.165.255 { 0xc218a600, 0xc218afff, REGISTRY_RIPENCC }, // 194.24.166.0 - 194.24.175.255 { 0xc218b200, 0xc218bfff, REGISTRY_RIPENCC }, // 194.24.178.0 - 194.24.191.255 { 0xc218c000, 0xc218dfff, REGISTRY_RIPENCC }, // 194.24.192.0 - 194.24.223.255 { 0xc218e000, 0xc218e7ff, REGISTRY_RIPENCC }, // 194.24.224.0 - 194.24.231.255 { 0xc218ea00, 0xc218f9ff, REGISTRY_RIPENCC }, // 194.24.234.0 - 194.24.249.255 { 0xc218fc00, 0xc218ffff, REGISTRY_RIPENCC }, // 194.24.252.0 - 194.24.255.255 { 0xc2190000, 0xc219ffff, REGISTRY_RIPENCC }, // 194.25.0.0 - 194.25.255.255 { 0xc21a0000, 0xc21a00ff, REGISTRY_RIPENCC }, // 194.26.0.0 - 194.26.0.255 { 0xc21a0800, 0xc21a0fff, REGISTRY_RIPENCC }, // 194.26.8.0 - 194.26.15.255 { 0xc21a1600, 0xc21a18ff, REGISTRY_RIPENCC }, // 194.26.22.0 - 194.26.24.255 { 0xc21a1a00, 0xc21a1aff, REGISTRY_RIPENCC }, // 194.26.26.0 - 194.26.26.255 { 0xc21a1c00, 0xc21a1cff, REGISTRY_RIPENCC }, // 194.26.28.0 - 194.26.28.255 { 0xc21a2000, 0xc21a44ff, REGISTRY_RIPENCC }, // 194.26.32.0 - 194.26.68.255 { 0xc21a5000, 0xc21a63ff, REGISTRY_RIPENCC }, // 194.26.80.0 - 194.26.99.255 { 0xc21a6800, 0xc21a6bff, REGISTRY_RIPENCC }, // 194.26.104.0 - 194.26.107.255 { 0xc21a6e00, 0xc21a71ff, REGISTRY_RIPENCC }, // 194.26.110.0 - 194.26.113.255 { 0xc21a7800, 0xc21a94ff, REGISTRY_RIPENCC }, // 194.26.120.0 - 194.26.148.255 { 0xc21a9800, 0xc21aa3ff, REGISTRY_RIPENCC }, // 194.26.152.0 - 194.26.163.255 { 0xc21ab800, 0xc21abbff, REGISTRY_RIPENCC }, // 194.26.184.0 - 194.26.187.255 { 0xc21ac000, 0xc21affff, REGISTRY_RIPENCC }, // 194.26.192.0 - 194.26.255.255 { 0xc21b0000, 0xc21bffff, REGISTRY_RIPENCC }, // 194.27.0.0 - 194.27.255.255 { 0xc21c0000, 0xc21c2bff, REGISTRY_RIPENCC }, // 194.28.0.0 - 194.28.43.255 { 0xc21c3000, 0xc21c5fff, REGISTRY_RIPENCC }, // 194.28.48.0 - 194.28.95.255 { 0xc21c6400, 0xc21cffff, REGISTRY_RIPENCC }, // 194.28.100.0 - 194.28.255.255 { 0xc21d0000, 0xc21d1fff, REGISTRY_RIPENCC }, // 194.29.0.0 - 194.29.31.255 { 0xc21d2000, 0xc21d33ff, REGISTRY_RIPENCC }, // 194.29.32.0 - 194.29.51.255 { 0xc21d3800, 0xc21d41ff, REGISTRY_RIPENCC }, // 194.29.56.0 - 194.29.65.255 { 0xc21d4200, 0xc21d42ff, REGISTRY_RIPENCC }, // 194.29.66.0 - 194.29.66.255 { 0xc21d4300, 0xc21d47ff, REGISTRY_RIPENCC }, // 194.29.67.0 - 194.29.71.255 { 0xc21d4800, 0xc21d48ff, REGISTRY_RIPENCC }, // 194.29.72.0 - 194.29.72.255 { 0xc21d4900, 0xc21d4bff, REGISTRY_RIPENCC }, // 194.29.73.0 - 194.29.75.255 { 0xc21d4c00, 0xc21d4dff, REGISTRY_RIPENCC }, // 194.29.76.0 - 194.29.77.255 { 0xc21d4e00, 0xc21d50ff, REGISTRY_RIPENCC }, // 194.29.78.0 - 194.29.80.255 { 0xc21d5100, 0xc21d60ff, REGISTRY_RIPENCC }, // 194.29.81.0 - 194.29.96.255 { 0xc21d6100, 0xc21d65ff, REGISTRY_RIPENCC }, // 194.29.97.0 - 194.29.101.255 { 0xc21d6600, 0xc21d71ff, REGISTRY_RIPENCC }, // 194.29.102.0 - 194.29.113.255 { 0xc21d7200, 0xc21d72ff, REGISTRY_RIPENCC }, // 194.29.114.0 - 194.29.114.255 { 0xc21d7300, 0xc21d75ff, REGISTRY_RIPENCC }, // 194.29.115.0 - 194.29.117.255 { 0xc21d7600, 0xc21d78ff, REGISTRY_RIPENCC }, // 194.29.118.0 - 194.29.120.255 { 0xc21d7900, 0xc21d7fff, REGISTRY_RIPENCC }, // 194.29.121.0 - 194.29.127.255 { 0xc21d8000, 0xc21dbfff, REGISTRY_RIPENCC }, // 194.29.128.0 - 194.29.191.255 { 0xc21dc000, 0xc21dc7ff, REGISTRY_RIPENCC }, // 194.29.192.0 - 194.29.199.255 { 0xc21dc800, 0xc21ddfff, REGISTRY_RIPENCC }, // 194.29.200.0 - 194.29.223.255 { 0xc21de000, 0xc21e9fff, REGISTRY_RIPENCC }, // 194.29.224.0 - 194.30.159.255 { 0xc21ea000, 0xc21ea0ff, REGISTRY_RIPENCC }, // 194.30.160.0 - 194.30.160.255 { 0xc21ea200, 0xc21ea4ff, REGISTRY_RIPENCC }, // 194.30.162.0 - 194.30.164.255 { 0xc21ea600, 0xc21ea8ff, REGISTRY_RIPENCC }, // 194.30.166.0 - 194.30.168.255 { 0xc21ea900, 0xc21ea9ff, REGISTRY_RIPENCC }, // 194.30.169.0 - 194.30.169.255 { 0xc21eaa00, 0xc21eafff, REGISTRY_RIPENCC }, // 194.30.170.0 - 194.30.175.255 { 0xc21eb200, 0xc21eb6ff, REGISTRY_RIPENCC }, // 194.30.178.0 - 194.30.182.255 { 0xc21eb800, 0xc21ebcff, REGISTRY_RIPENCC }, // 194.30.184.0 - 194.30.188.255 { 0xc21ebd00, 0xc21ebdff, REGISTRY_RIPENCC }, // 194.30.189.0 - 194.30.189.255 { 0xc21ebe00, 0xc21ebfff, REGISTRY_RIPENCC }, // 194.30.190.0 - 194.30.191.255 { 0xc21ec000, 0xc21effff, REGISTRY_RIPENCC }, // 194.30.192.0 - 194.30.255.255 { 0xc21f0000, 0xc21f00ff, REGISTRY_RIPENCC }, // 194.31.0.0 - 194.31.0.255 { 0xc21f0200, 0xc21f03ff, REGISTRY_RIPENCC }, // 194.31.2.0 - 194.31.3.255 { 0xc21f0600, 0xc21f07ff, REGISTRY_RIPENCC }, // 194.31.6.0 - 194.31.7.255 { 0xc21f0e00, 0xc21f26ff, REGISTRY_RIPENCC }, // 194.31.14.0 - 194.31.38.255 { 0xc21f2700, 0xc21f27ff, REGISTRY_RIPENCC }, // 194.31.39.0 - 194.31.39.255 { 0xc21f2800, 0xc21f33ff, REGISTRY_RIPENCC }, // 194.31.40.0 - 194.31.51.255 { 0xc21f3800, 0xc21f3fff, REGISTRY_RIPENCC }, // 194.31.56.0 - 194.31.63.255 { 0xc21f4100, 0xc21f41ff, REGISTRY_RIPENCC }, // 194.31.65.0 - 194.31.65.255 { 0xc21f4600, 0xc21f47ff, REGISTRY_RIPENCC }, // 194.31.70.0 - 194.31.71.255 { 0xc21f4c00, 0xc21f4eff, REGISTRY_RIPENCC }, // 194.31.76.0 - 194.31.78.255 { 0xc21f5000, 0xc21f53ff, REGISTRY_RIPENCC }, // 194.31.80.0 - 194.31.83.255 { 0xc21f5600, 0xc21f56ff, REGISTRY_RIPENCC }, // 194.31.86.0 - 194.31.86.255 { 0xc21f5c00, 0xc21f5cff, REGISTRY_RIPENCC }, // 194.31.92.0 - 194.31.92.255 { 0xc21f5e00, 0xc21f5fff, REGISTRY_RIPENCC }, // 194.31.94.0 - 194.31.95.255 { 0xc21f7000, 0xc21f7fff, REGISTRY_RIPENCC }, // 194.31.112.0 - 194.31.127.255 { 0xc21fc000, 0xc21fc0ff, REGISTRY_RIPENCC }, // 194.31.192.0 - 194.31.192.255 { 0xc21fc600, 0xc21fc6ff, REGISTRY_RIPENCC }, // 194.31.198.0 - 194.31.198.255 { 0xc21fc800, 0xc21fcbff, REGISTRY_RIPENCC }, // 194.31.200.0 - 194.31.203.255 { 0xc21fce00, 0xc21fd3ff, REGISTRY_RIPENCC }, // 194.31.206.0 - 194.31.211.255 { 0xc21fdd00, 0xc21fddff, REGISTRY_RIPENCC }, // 194.31.221.0 - 194.31.221.255 { 0xc21fe100, 0xc21fe1ff, REGISTRY_RIPENCC }, // 194.31.225.0 - 194.31.225.255 { 0xc21fe300, 0xc21febff, REGISTRY_RIPENCC }, // 194.31.227.0 - 194.31.235.255 { 0xc21fee00, 0xc21feeff, REGISTRY_RIPENCC }, // 194.31.238.0 - 194.31.238.255 { 0xc21ff000, 0xc21ff3ff, REGISTRY_RIPENCC }, // 194.31.240.0 - 194.31.243.255 { 0xc21ff600, 0xc21ff6ff, REGISTRY_RIPENCC }, // 194.31.246.0 - 194.31.246.255 { 0xc21ff800, 0xc21ffeff, REGISTRY_RIPENCC }, // 194.31.248.0 - 194.31.254.255 { 0xc2200000, 0xc22043ff, REGISTRY_RIPENCC }, // 194.32.0.0 - 194.32.67.255 { 0xc2204500, 0xc22045ff, REGISTRY_RIPENCC }, // 194.32.69.0 - 194.32.69.255 { 0xc2204700, 0xc2204bff, REGISTRY_RIPENCC }, // 194.32.71.0 - 194.32.75.255 { 0xc2205200, 0xc22052ff, REGISTRY_RIPENCC }, // 194.32.82.0 - 194.32.82.255 { 0xc2205400, 0xc22057ff, REGISTRY_RIPENCC }, // 194.32.84.0 - 194.32.87.255 { 0xc2209600, 0xc22097ff, REGISTRY_RIPENCC }, // 194.32.150.0 - 194.32.151.255 { 0xc220a000, 0xc220a0ff, REGISTRY_RIPENCC }, // 194.32.160.0 - 194.32.160.255 { 0xc220a200, 0xc220a2ff, REGISTRY_RIPENCC }, // 194.32.162.0 - 194.32.162.255 { 0xc220a400, 0xc220a4ff, REGISTRY_RIPENCC }, // 194.32.164.0 - 194.32.164.255 { 0xc220b000, 0xc220c3ff, REGISTRY_RIPENCC }, // 194.32.176.0 - 194.32.195.255 { 0xc220c400, 0xc220caff, REGISTRY_RIPENCC }, // 194.32.196.0 - 194.32.202.255 { 0xc220cf00, 0xc220dbff, REGISTRY_RIPENCC }, // 194.32.207.0 - 194.32.219.255 { 0xc220dd00, 0xc220ddff, REGISTRY_RIPENCC }, // 194.32.221.0 - 194.32.221.255 { 0xc2210000, 0xc22107ff, REGISTRY_RIPENCC }, // 194.33.0.0 - 194.33.7.255 { 0xc2210b00, 0xc2210bff, REGISTRY_RIPENCC }, // 194.33.11.0 - 194.33.11.255 { 0xc2210c00, 0xc2210fff, REGISTRY_RIPENCC }, // 194.33.12.0 - 194.33.15.255 { 0xc2211100, 0xc22113ff, REGISTRY_RIPENCC }, // 194.33.17.0 - 194.33.19.255 { 0xc2211800, 0xc2211cff, REGISTRY_RIPENCC }, // 194.33.24.0 - 194.33.28.255 { 0xc2211e00, 0xc2211fff, REGISTRY_RIPENCC }, // 194.33.30.0 - 194.33.31.255 { 0xc2212100, 0xc22121ff, REGISTRY_RIPENCC }, // 194.33.33.0 - 194.33.33.255 { 0xc2213200, 0xc22139ff, REGISTRY_RIPENCC }, // 194.33.50.0 - 194.33.57.255 { 0xc2213c00, 0xc2213cff, REGISTRY_RIPENCC }, // 194.33.60.0 - 194.33.60.255 { 0xc2213f00, 0xc2213fff, REGISTRY_RIPENCC }, // 194.33.63.0 - 194.33.63.255 { 0xc2214000, 0xc22143ff, REGISTRY_RIPENCC }, // 194.33.64.0 - 194.33.67.255 { 0xc2214400, 0xc22157ff, REGISTRY_RIPENCC }, // 194.33.68.0 - 194.33.87.255 { 0xc2215c00, 0xc22163ff, REGISTRY_RIPENCC }, // 194.33.92.0 - 194.33.99.255 { 0xc2216400, 0xc22167ff, REGISTRY_RIPENCC }, // 194.33.100.0 - 194.33.103.255 { 0xc2216800, 0xc22194ff, REGISTRY_RIPENCC }, // 194.33.104.0 - 194.33.148.255 { 0xc221a000, 0xc221b5ff, REGISTRY_RIPENCC }, // 194.33.160.0 - 194.33.181.255 { 0xc221b700, 0xc2223dff, REGISTRY_RIPENCC }, // 194.33.183.0 - 194.34.61.255 { 0xc2224000, 0xc2225fff, REGISTRY_RIPENCC }, // 194.34.64.0 - 194.34.95.255 { 0xc2227000, 0xc2227fff, REGISTRY_RIPENCC }, // 194.34.112.0 - 194.34.127.255 { 0xc2228a00, 0xc2228aff, REGISTRY_RIPENCC }, // 194.34.138.0 - 194.34.138.255 { 0xc2228c00, 0xc22297ff, REGISTRY_RIPENCC }, // 194.34.140.0 - 194.34.151.255 { 0xc222a400, 0xc222a7ff, REGISTRY_RIPENCC }, // 194.34.164.0 - 194.34.167.255 { 0xc222ae00, 0xc222aeff, REGISTRY_RIPENCC }, // 194.34.174.0 - 194.34.174.255 { 0xc222b000, 0xc222bfff, REGISTRY_RIPENCC }, // 194.34.176.0 - 194.34.191.255 { 0xc222c600, 0xc222c6ff, REGISTRY_RIPENCC }, // 194.34.198.0 - 194.34.198.255 { 0xc222cc00, 0xc222dfff, REGISTRY_RIPENCC }, // 194.34.204.0 - 194.34.223.255 { 0xc2230000, 0xc2230aff, REGISTRY_RIPENCC }, // 194.35.0.0 - 194.35.10.255 { 0xc2231000, 0xc2231fff, REGISTRY_RIPENCC }, // 194.35.16.0 - 194.35.31.255 { 0xc2234000, 0xc22348ff, REGISTRY_RIPENCC }, // 194.35.64.0 - 194.35.72.255 { 0xc2234a00, 0xc2234aff, REGISTRY_RIPENCC }, // 194.35.74.0 - 194.35.74.255 { 0xc2234f00, 0xc2234fff, REGISTRY_RIPENCC }, // 194.35.79.0 - 194.35.79.255 { 0xc2235200, 0xc22353ff, REGISTRY_RIPENCC }, // 194.35.82.0 - 194.35.83.255 { 0xc2235d00, 0xc2235eff, REGISTRY_RIPENCC }, // 194.35.93.0 - 194.35.94.255 { 0xc2238000, 0xc223afff, REGISTRY_RIPENCC }, // 194.35.128.0 - 194.35.175.255 { 0xc223b700, 0xc223b7ff, REGISTRY_RIPENCC }, // 194.35.183.0 - 194.35.183.255 { 0xc223ba00, 0xc223baff, REGISTRY_RIPENCC }, // 194.35.186.0 - 194.35.186.255 { 0xc223be00, 0xc223dfff, REGISTRY_RIPENCC }, // 194.35.190.0 - 194.35.223.255 { 0xc223f000, 0xc223f7ff, REGISTRY_RIPENCC }, // 194.35.240.0 - 194.35.247.255 { 0xc223fc00, 0xc22417ff, REGISTRY_RIPENCC }, // 194.35.252.0 - 194.36.23.255 { 0xc2243000, 0xc22439ff, REGISTRY_RIPENCC }, // 194.36.48.0 - 194.36.57.255 { 0xc2244200, 0xc22447ff, REGISTRY_RIPENCC }, // 194.36.66.0 - 194.36.71.255 { 0xc2244c00, 0xc2244fff, REGISTRY_RIPENCC }, // 194.36.76.0 - 194.36.79.255 { 0xc2245200, 0xc22452ff, REGISTRY_RIPENCC }, // 194.36.82.0 - 194.36.82.255 { 0xc2245c00, 0xc2245dff, REGISTRY_RIPENCC }, // 194.36.92.0 - 194.36.93.255 { 0xc2247000, 0xc22473ff, REGISTRY_RIPENCC }, // 194.36.112.0 - 194.36.115.255 { 0xc2247900, 0xc22479ff, REGISTRY_RIPENCC }, // 194.36.121.0 - 194.36.121.255 { 0xc2248000, 0xc22488ff, REGISTRY_RIPENCC }, // 194.36.128.0 - 194.36.136.255 { 0xc2249800, 0xc224a6ff, REGISTRY_RIPENCC }, // 194.36.152.0 - 194.36.166.255 { 0xc224a800, 0xc224a8ff, REGISTRY_RIPENCC }, // 194.36.168.0 - 194.36.168.255 { 0xc224d200, 0xc224dcff, REGISTRY_RIPENCC }, // 194.36.210.0 - 194.36.220.255 { 0xc224e000, 0xc224f1ff, REGISTRY_RIPENCC }, // 194.36.224.0 - 194.36.241.255 { 0xc224f800, 0xc22500ff, REGISTRY_RIPENCC }, // 194.36.248.0 - 194.37.0.255 { 0xc2250200, 0xc2254fff, REGISTRY_RIPENCC }, // 194.37.2.0 - 194.37.79.255 { 0xc2255400, 0xc22557ff, REGISTRY_RIPENCC }, // 194.37.84.0 - 194.37.87.255 { 0xc2256800, 0xc225f9ff, REGISTRY_RIPENCC }, // 194.37.104.0 - 194.37.249.255 { 0xc225fc00, 0xc225fdff, REGISTRY_RIPENCC }, // 194.37.252.0 - 194.37.253.255 { 0xc225ff00, 0xc225ffff, REGISTRY_RIPENCC }, // 194.37.255.0 - 194.37.255.255 { 0xc2264000, 0xc226ffff, REGISTRY_RIPENCC }, // 194.38.64.0 - 194.38.255.255 { 0xc2270000, 0xc2271bff, REGISTRY_RIPENCC }, // 194.39.0.0 - 194.39.27.255 { 0xc2273000, 0xc2273fff, REGISTRY_RIPENCC }, // 194.39.48.0 - 194.39.63.255 { 0xc2274800, 0xc2274dff, REGISTRY_RIPENCC }, // 194.39.72.0 - 194.39.77.255 { 0xc2275000, 0xc22751ff, REGISTRY_RIPENCC }, // 194.39.80.0 - 194.39.81.255 { 0xc2275400, 0xc22755ff, REGISTRY_RIPENCC }, // 194.39.84.0 - 194.39.85.255 { 0xc2275600, 0xc22756ff, REGISTRY_RIPENCC }, // 194.39.86.0 - 194.39.86.255 { 0xc2275700, 0xc22762ff, REGISTRY_RIPENCC }, // 194.39.87.0 - 194.39.98.255 { 0xc2276400, 0xc22764ff, REGISTRY_RIPENCC }, // 194.39.100.0 - 194.39.100.255 { 0xc2276800, 0xc2276bff, REGISTRY_RIPENCC }, // 194.39.104.0 - 194.39.107.255 { 0xc2277000, 0xc22779ff, REGISTRY_RIPENCC }, // 194.39.112.0 - 194.39.121.255 { 0xc2278000, 0xc2278dff, REGISTRY_RIPENCC }, // 194.39.128.0 - 194.39.141.255 { 0xc2278f00, 0xc2278fff, REGISTRY_RIPENCC }, // 194.39.143.0 - 194.39.143.255 { 0xc2279600, 0xc22797ff, REGISTRY_RIPENCC }, // 194.39.150.0 - 194.39.151.255 { 0xc2279800, 0xc2279aff, REGISTRY_RIPENCC }, // 194.39.152.0 - 194.39.154.255 { 0xc2279b00, 0xc2279cff, REGISTRY_RIPENCC }, // 194.39.155.0 - 194.39.156.255 { 0xc2279e00, 0xc2279fff, REGISTRY_RIPENCC }, // 194.39.158.0 - 194.39.159.255 { 0xc227ac00, 0xc227adff, REGISTRY_RIPENCC }, // 194.39.172.0 - 194.39.173.255 { 0xc227af00, 0xc227afff, REGISTRY_RIPENCC }, // 194.39.175.0 - 194.39.175.255 { 0xc227b100, 0xc227b1ff, REGISTRY_RIPENCC }, // 194.39.177.0 - 194.39.177.255 { 0xc227b400, 0xc227baff, REGISTRY_RIPENCC }, // 194.39.180.0 - 194.39.186.255 { 0xc227bc00, 0xc227c3ff, REGISTRY_RIPENCC }, // 194.39.188.0 - 194.39.195.255 { 0xc227d600, 0xc227d6ff, REGISTRY_RIPENCC }, // 194.39.214.0 - 194.39.214.255 { 0xc227da00, 0xc227dfff, REGISTRY_RIPENCC }, // 194.39.218.0 - 194.39.223.255 { 0xc227f000, 0xc228ebff, REGISTRY_RIPENCC }, // 194.39.240.0 - 194.40.235.255 { 0xc228f500, 0xc228f5ff, REGISTRY_RIPENCC }, // 194.40.245.0 - 194.40.245.255 { 0xc228f800, 0xc228f9ff, REGISTRY_RIPENCC }, // 194.40.248.0 - 194.40.249.255 { 0xc2290000, 0xc22900ff, REGISTRY_RIPENCC }, // 194.41.0.0 - 194.41.0.255 { 0xc2290200, 0xc22907ff, REGISTRY_RIPENCC }, // 194.41.2.0 - 194.41.7.255 { 0xc2290900, 0xc22909ff, REGISTRY_RIPENCC }, // 194.41.9.0 - 194.41.9.255 { 0xc2290c00, 0xc2291fff, REGISTRY_RIPENCC }, // 194.41.12.0 - 194.41.31.255 { 0xc2292700, 0xc22927ff, REGISTRY_RIPENCC }, // 194.41.39.0 - 194.41.39.255 { 0xc2293900, 0xc22939ff, REGISTRY_RIPENCC }, // 194.41.57.0 - 194.41.57.255 { 0xc2293c00, 0xc2293dff, REGISTRY_RIPENCC }, // 194.41.60.0 - 194.41.61.255 { 0xc2293e00, 0xc2296fff, REGISTRY_RIPENCC }, // 194.41.62.0 - 194.41.111.255 { 0xc2298000, 0xc229ffff, REGISTRY_RIPENCC }, // 194.41.128.0 - 194.41.255.255 { 0xc22a0000, 0xc22a27ff, REGISTRY_RIPENCC }, // 194.42.0.0 - 194.42.39.255 { 0xc22a2800, 0xc22a2eff, REGISTRY_RIPENCC }, // 194.42.40.0 - 194.42.46.255 { 0xc22a2f80, 0xc22a3fff, REGISTRY_RIPENCC }, // 194.42.47.128 - 194.42.63.255 { 0xc22a4000, 0xc22a5fff, REGISTRY_RIPENCC }, // 194.42.64.0 - 194.42.95.255 { 0xc22a6200, 0xc22a67ff, REGISTRY_RIPENCC }, // 194.42.98.0 - 194.42.103.255 { 0xc22a6a00, 0xc22a7fff, REGISTRY_RIPENCC }, // 194.42.106.0 - 194.42.127.255 { 0xc22a8000, 0xc22a9fff, REGISTRY_RIPENCC }, // 194.42.128.0 - 194.42.159.255 { 0xc22aa000, 0xc22aa2ff, REGISTRY_RIPENCC }, // 194.42.160.0 - 194.42.162.255 { 0xc22aa300, 0xc22aafff, REGISTRY_RIPENCC }, // 194.42.163.0 - 194.42.175.255 { 0xc22ab000, 0xc22adfff, REGISTRY_RIPENCC }, // 194.42.176.0 - 194.42.223.255 { 0xc22ae000, 0xc22fffff, REGISTRY_RIPENCC }, // 194.42.224.0 - 194.47.255.255 { 0xc2300000, 0xc23002ff, REGISTRY_RIPENCC }, // 194.48.0.0 - 194.48.2.255 { 0xc2300400, 0xc2305bff, REGISTRY_RIPENCC }, // 194.48.4.0 - 194.48.91.255 { 0xc2306c00, 0xc2308bff, REGISTRY_RIPENCC }, // 194.48.108.0 - 194.48.139.255 { 0xc2309c00, 0xc230a3ff, REGISTRY_RIPENCC }, // 194.48.156.0 - 194.48.163.255 { 0xc230ac00, 0xc230adff, REGISTRY_RIPENCC }, // 194.48.172.0 - 194.48.173.255 { 0xc230b800, 0xc230bbff, REGISTRY_RIPENCC }, // 194.48.184.0 - 194.48.187.255 { 0xc230be00, 0xc230beff, REGISTRY_RIPENCC }, // 194.48.190.0 - 194.48.190.255 { 0xc230c200, 0xc230c6ff, REGISTRY_RIPENCC }, // 194.48.194.0 - 194.48.198.255 { 0xc230c800, 0xc230d2ff, REGISTRY_RIPENCC }, // 194.48.200.0 - 194.48.210.255 { 0xc230d400, 0xc230dbff, REGISTRY_RIPENCC }, // 194.48.212.0 - 194.48.219.255 { 0xc230ec00, 0xc230f1ff, REGISTRY_RIPENCC }, // 194.48.236.0 - 194.48.241.255 { 0xc230f300, 0xc230f3ff, REGISTRY_RIPENCC }, // 194.48.243.0 - 194.48.243.255 { 0xc230fe00, 0xc230feff, REGISTRY_RIPENCC }, // 194.48.254.0 - 194.48.254.255 { 0xc2310700, 0xc23107ff, REGISTRY_RIPENCC }, // 194.49.7.0 - 194.49.7.255 { 0xc2311300, 0xc23113ff, REGISTRY_RIPENCC }, // 194.49.19.0 - 194.49.19.255 { 0xc2311500, 0xc23133ff, REGISTRY_RIPENCC }, // 194.49.21.0 - 194.49.51.255 { 0xc2313600, 0xc23136ff, REGISTRY_RIPENCC }, // 194.49.54.0 - 194.49.54.255 { 0xc2313c00, 0xc23141ff, REGISTRY_RIPENCC }, // 194.49.60.0 - 194.49.65.255 { 0xc2314600, 0xc23146ff, REGISTRY_RIPENCC }, // 194.49.70.0 - 194.49.70.255 { 0xc2314800, 0xc2314bff, REGISTRY_RIPENCC }, // 194.49.72.0 - 194.49.75.255 { 0xc2314d00, 0xc2314dff, REGISTRY_RIPENCC }, // 194.49.77.0 - 194.49.77.255 { 0xc2315500, 0xc23155ff, REGISTRY_RIPENCC }, // 194.49.85.0 - 194.49.85.255 { 0xc2315c00, 0xc2315cff, REGISTRY_RIPENCC }, // 194.49.92.0 - 194.49.92.255 { 0xc2316e00, 0xc2316eff, REGISTRY_RIPENCC }, // 194.49.110.0 - 194.49.110.255 { 0xc2317200, 0xc23172ff, REGISTRY_RIPENCC }, // 194.49.114.0 - 194.49.114.255 { 0xc2317500, 0xc231ffff, REGISTRY_RIPENCC }, // 194.49.117.0 - 194.49.255.255 { 0xc2320200, 0xc23202ff, REGISTRY_RIPENCC }, // 194.50.2.0 - 194.50.2.255 { 0xc2320600, 0xc23207ff, REGISTRY_RIPENCC }, // 194.50.6.0 - 194.50.7.255 { 0xc2320900, 0xc2320bff, REGISTRY_RIPENCC }, // 194.50.9.0 - 194.50.11.255 { 0xc2321800, 0xc23218ff, REGISTRY_RIPENCC }, // 194.50.24.0 - 194.50.24.255 { 0xc2321a00, 0xc23224ff, REGISTRY_RIPENCC }, // 194.50.26.0 - 194.50.36.255 { 0xc2322500, 0xc23225ff, REGISTRY_RIPENCC }, // 194.50.37.0 - 194.50.37.255 { 0xc2322600, 0xc2322dff, REGISTRY_RIPENCC }, // 194.50.38.0 - 194.50.45.255 { 0xc2322f00, 0xc2322fff, REGISTRY_RIPENCC }, // 194.50.47.0 - 194.50.47.255 { 0xc2323100, 0xc23233ff, REGISTRY_RIPENCC }, // 194.50.49.0 - 194.50.51.255 { 0xc2323500, 0xc2323aff, REGISTRY_RIPENCC }, // 194.50.53.0 - 194.50.58.255 { 0xc2323c00, 0xc23247ff, REGISTRY_RIPENCC }, // 194.50.60.0 - 194.50.71.255 { 0xc2324b00, 0xc23251ff, REGISTRY_RIPENCC }, // 194.50.75.0 - 194.50.81.255 { 0xc2325300, 0xc2325bff, REGISTRY_RIPENCC }, // 194.50.83.0 - 194.50.91.255 { 0xc2325d00, 0xc2325dff, REGISTRY_RIPENCC }, // 194.50.93.0 - 194.50.93.255 { 0xc2325f00, 0xc23262ff, REGISTRY_RIPENCC }, // 194.50.95.0 - 194.50.98.255 { 0xc2326400, 0xc2326eff, REGISTRY_RIPENCC }, // 194.50.100.0 - 194.50.110.255 { 0xc2327000, 0xc23273ff, REGISTRY_RIPENCC }, // 194.50.112.0 - 194.50.115.255 { 0xc2327500, 0xc232a9ff, REGISTRY_RIPENCC }, // 194.50.117.0 - 194.50.169.255 { 0xc232ac00, 0xc232b3ff, REGISTRY_RIPENCC }, // 194.50.172.0 - 194.50.179.255 { 0xc232b500, 0xc232b7ff, REGISTRY_RIPENCC }, // 194.50.181.0 - 194.50.183.255 { 0xc232ba00, 0xc232baff, REGISTRY_RIPENCC }, // 194.50.186.0 - 194.50.186.255 { 0xc232bb00, 0xc232bbff, REGISTRY_RIPENCC }, // 194.50.187.0 - 194.50.187.255 { 0xc232bf00, 0xc232bfff, REGISTRY_RIPENCC }, // 194.50.191.0 - 194.50.191.255 { 0xc232ca00, 0xc232cbff, REGISTRY_RIPENCC }, // 194.50.202.0 - 194.50.203.255 { 0xc232cd00, 0xc232cdff, REGISTRY_RIPENCC }, // 194.50.205.0 - 194.50.205.255 { 0xc232d000, 0xc232d0ff, REGISTRY_RIPENCC }, // 194.50.208.0 - 194.50.208.255 { 0xc232d200, 0xc232d3ff, REGISTRY_RIPENCC }, // 194.50.210.0 - 194.50.211.255 { 0xc232d600, 0xc232d7ff, REGISTRY_RIPENCC }, // 194.50.214.0 - 194.50.215.255 { 0xc232d900, 0xc232d9ff, REGISTRY_RIPENCC }, // 194.50.217.0 - 194.50.217.255 { 0xc232db00, 0xc232dbff, REGISTRY_RIPENCC }, // 194.50.219.0 - 194.50.219.255 { 0xc232de00, 0xc232deff, REGISTRY_RIPENCC }, // 194.50.222.0 - 194.50.222.255 { 0xc232e100, 0xc232e8ff, REGISTRY_RIPENCC }, // 194.50.225.0 - 194.50.232.255 { 0xc232f000, 0xc232f2ff, REGISTRY_RIPENCC }, // 194.50.240.0 - 194.50.242.255 { 0xc232f800, 0xc232f9ff, REGISTRY_RIPENCC }, // 194.50.248.0 - 194.50.249.255 { 0xc232fc00, 0xc232fcff, REGISTRY_RIPENCC }, // 194.50.252.0 - 194.50.252.255 { 0xc232fe00, 0xc232ffff, REGISTRY_RIPENCC }, // 194.50.254.0 - 194.50.255.255 { 0xc2330000, 0xc234ffff, REGISTRY_RIPENCC }, // 194.51.0.0 - 194.52.255.255 { 0xc2350000, 0xc23500ff, REGISTRY_RIPENCC }, // 194.53.0.0 - 194.53.0.255 { 0xc2350300, 0xc23503ff, REGISTRY_RIPENCC }, // 194.53.3.0 - 194.53.3.255 { 0xc2350800, 0xc2352fff, REGISTRY_RIPENCC }, // 194.53.8.0 - 194.53.47.255 { 0xc2353800, 0xc2353cff, REGISTRY_RIPENCC }, // 194.53.56.0 - 194.53.60.255 { 0xc2353e00, 0xc2353fff, REGISTRY_RIPENCC }, // 194.53.62.0 - 194.53.63.255 { 0xc2354800, 0xc23554ff, REGISTRY_RIPENCC }, // 194.53.72.0 - 194.53.84.255 { 0xc2355800, 0xc23567ff, REGISTRY_RIPENCC }, // 194.53.88.0 - 194.53.103.255 { 0xc2357100, 0xc23571ff, REGISTRY_RIPENCC }, // 194.53.113.0 - 194.53.113.255 { 0xc2357400, 0xc23575ff, REGISTRY_RIPENCC }, // 194.53.116.0 - 194.53.117.255 { 0xc2357900, 0xc23579ff, REGISTRY_RIPENCC }, // 194.53.121.0 - 194.53.121.255 { 0xc2358200, 0xc23586ff, REGISTRY_RIPENCC }, // 194.53.130.0 - 194.53.134.255 { 0xc235a000, 0xc235afff, REGISTRY_RIPENCC }, // 194.53.160.0 - 194.53.175.255 { 0xc235d000, 0xc235d5ff, REGISTRY_RIPENCC }, // 194.53.208.0 - 194.53.213.255 { 0xc235d800, 0xc2361fff, REGISTRY_RIPENCC }, // 194.53.216.0 - 194.54.31.255 { 0xc2362000, 0xc2363fff, REGISTRY_RIPENCC }, // 194.54.32.0 - 194.54.63.255 { 0xc2364000, 0xc2364bff, REGISTRY_RIPENCC }, // 194.54.64.0 - 194.54.75.255 { 0xc2365000, 0xc2365fff, REGISTRY_RIPENCC }, // 194.54.80.0 - 194.54.95.255 { 0xc2366000, 0xc2367fff, REGISTRY_RIPENCC }, // 194.54.96.0 - 194.54.127.255 { 0xc2368000, 0xc23687ff, REGISTRY_RIPENCC }, // 194.54.128.0 - 194.54.135.255 { 0xc2368c00, 0xc236bfff, REGISTRY_RIPENCC }, // 194.54.140.0 - 194.54.191.255 { 0xc236c000, 0xc236ffff, REGISTRY_RIPENCC }, // 194.54.192.0 - 194.54.255.255 { 0xc2370100, 0xc23703ff, REGISTRY_RIPENCC }, // 194.55.1.0 - 194.55.3.255 { 0xc2371000, 0xc23727ff, REGISTRY_RIPENCC }, // 194.55.16.0 - 194.55.39.255 { 0xc2372900, 0xc2372aff, REGISTRY_RIPENCC }, // 194.55.41.0 - 194.55.42.255 { 0xc2373000, 0xc2374fff, REGISTRY_RIPENCC }, // 194.55.48.0 - 194.55.79.255 { 0xc2375400, 0xc2375bff, REGISTRY_RIPENCC }, // 194.55.84.0 - 194.55.91.255 { 0xc2376400, 0xc23765ff, REGISTRY_RIPENCC }, // 194.55.100.0 - 194.55.101.255 { 0xc2376a00, 0xc2377fff, REGISTRY_RIPENCC }, // 194.55.106.0 - 194.55.127.255 { 0xc2378200, 0xc23783ff, REGISTRY_RIPENCC }, // 194.55.130.0 - 194.55.131.255 { 0xc2378600, 0xc23787ff, REGISTRY_RIPENCC }, // 194.55.134.0 - 194.55.135.255 { 0xc2378a00, 0xc2378bff, REGISTRY_RIPENCC }, // 194.55.138.0 - 194.55.139.255 { 0xc2379000, 0xc23793ff, REGISTRY_RIPENCC }, // 194.55.144.0 - 194.55.147.255 { 0xc2379c00, 0xc2379cff, REGISTRY_RIPENCC }, // 194.55.156.0 - 194.55.156.255 { 0xc2379e00, 0xc2379fff, REGISTRY_RIPENCC }, // 194.55.158.0 - 194.55.159.255 { 0xc237a000, 0xc237a0ff, REGISTRY_RIPENCC }, // 194.55.160.0 - 194.55.160.255 { 0xc237a200, 0xc237a2ff, REGISTRY_RIPENCC }, // 194.55.162.0 - 194.55.162.255 { 0xc237a900, 0xc237aaff, REGISTRY_RIPENCC }, // 194.55.169.0 - 194.55.170.255 { 0xc237ac00, 0xc237b4ff, REGISTRY_RIPENCC }, // 194.55.172.0 - 194.55.180.255 { 0xc237b700, 0xc237b7ff, REGISTRY_RIPENCC }, // 194.55.183.0 - 194.55.183.255 { 0xc237be00, 0xc237dfff, REGISTRY_RIPENCC }, // 194.55.190.0 - 194.55.223.255 { 0xc237e800, 0xc237e9ff, REGISTRY_RIPENCC }, // 194.55.232.0 - 194.55.233.255 { 0xc237f600, 0xc237f7ff, REGISTRY_RIPENCC }, // 194.55.246.0 - 194.55.247.255 { 0xc237fc00, 0xc237fdff, REGISTRY_RIPENCC }, // 194.55.252.0 - 194.55.253.255 { 0xc237fe00, 0xc237feff, REGISTRY_RIPENCC }, // 194.55.254.0 - 194.55.254.255 { 0xc2380000, 0xc23847ff, REGISTRY_RIPENCC }, // 194.56.0.0 - 194.56.71.255 { 0xc2386000, 0xc23893ff, REGISTRY_RIPENCC }, // 194.56.96.0 - 194.56.147.255 { 0xc2389a00, 0xc238b3ff, REGISTRY_RIPENCC }, // 194.56.154.0 - 194.56.179.255 { 0xc238c800, 0xc238d3ff, REGISTRY_RIPENCC }, // 194.56.200.0 - 194.56.211.255 { 0xc238d600, 0xc238d7ff, REGISTRY_RIPENCC }, // 194.56.214.0 - 194.56.215.255 { 0xc238da00, 0xc238ddff, REGISTRY_RIPENCC }, // 194.56.218.0 - 194.56.221.255 { 0xc238e400, 0xc238e5ff, REGISTRY_RIPENCC }, // 194.56.228.0 - 194.56.229.255 { 0xc238e700, 0xc238e7ff, REGISTRY_RIPENCC }, // 194.56.231.0 - 194.56.231.255 { 0xc238e900, 0xc238eaff, REGISTRY_RIPENCC }, // 194.56.233.0 - 194.56.234.255 { 0xc238f100, 0xc238f1ff, REGISTRY_RIPENCC }, // 194.56.241.0 - 194.56.241.255 { 0xc238f400, 0xc238f4ff, REGISTRY_RIPENCC }, // 194.56.244.0 - 194.56.244.255 { 0xc238f800, 0xc238fbff, REGISTRY_RIPENCC }, // 194.56.248.0 - 194.56.251.255 { 0xc238fe00, 0xc238feff, REGISTRY_RIPENCC }, // 194.56.254.0 - 194.56.254.255 { 0xc2390000, 0xc23affff, REGISTRY_RIPENCC }, // 194.57.0.0 - 194.58.255.255 { 0xc23b0200, 0xc23b04ff, REGISTRY_RIPENCC }, // 194.59.2.0 - 194.59.4.255 { 0xc23b0a00, 0xc23b0bff, REGISTRY_RIPENCC }, // 194.59.10.0 - 194.59.11.255 { 0xc23b0d00, 0xc23b0dff, REGISTRY_RIPENCC }, // 194.59.13.0 - 194.59.13.255 { 0xc23b1000, 0xc23b17ff, REGISTRY_RIPENCC }, // 194.59.16.0 - 194.59.23.255 { 0xc23b2200, 0xc23b27ff, REGISTRY_RIPENCC }, // 194.59.34.0 - 194.59.39.255 { 0xc23b2900, 0xc23b2dff, REGISTRY_RIPENCC }, // 194.59.41.0 - 194.59.45.255 { 0xc23b2f00, 0xc23b33ff, REGISTRY_RIPENCC }, // 194.59.47.0 - 194.59.51.255 { 0xc23b3800, 0xc23b3aff, REGISTRY_RIPENCC }, // 194.59.56.0 - 194.59.58.255 { 0xc23b3c00, 0xc23b87ff, REGISTRY_RIPENCC }, // 194.59.60.0 - 194.59.135.255 { 0xc23b8f00, 0xc23b9aff, REGISTRY_RIPENCC }, // 194.59.143.0 - 194.59.154.255 { 0xc23b9c00, 0xc23b9cff, REGISTRY_RIPENCC }, // 194.59.156.0 - 194.59.156.255 { 0xc23ba000, 0xc23ba3ff, REGISTRY_RIPENCC }, // 194.59.160.0 - 194.59.163.255 { 0xc23ba900, 0xc23ba9ff, REGISTRY_RIPENCC }, // 194.59.169.0 - 194.59.169.255 { 0xc23bac00, 0xc23bafff, REGISTRY_RIPENCC }, // 194.59.172.0 - 194.59.175.255 { 0xc23bb100, 0xc23bb4ff, REGISTRY_RIPENCC }, // 194.59.177.0 - 194.59.180.255 { 0xc23bb600, 0xc23bbaff, REGISTRY_RIPENCC }, // 194.59.182.0 - 194.59.186.255 { 0xc23bbc00, 0xc23bbfff, REGISTRY_RIPENCC }, // 194.59.188.0 - 194.59.191.255 { 0xc23bd400, 0xc23bd5ff, REGISTRY_RIPENCC }, // 194.59.212.0 - 194.59.213.255 { 0xc23bdf00, 0xc23befff, REGISTRY_RIPENCC }, // 194.59.223.0 - 194.59.239.255 { 0xc23bf700, 0xc23bf7ff, REGISTRY_RIPENCC }, // 194.59.247.0 - 194.59.247.255 { 0xc23c0000, 0xc23c4bff, REGISTRY_RIPENCC }, // 194.60.0.0 - 194.60.75.255 { 0xc23c4d00, 0xc23c55ff, REGISTRY_RIPENCC }, // 194.60.77.0 - 194.60.85.255 { 0xc23c5800, 0xc23c83ff, REGISTRY_RIPENCC }, // 194.60.88.0 - 194.60.131.255 { 0xc23c8800, 0xc23cbfff, REGISTRY_RIPENCC }, // 194.60.136.0 - 194.60.191.255 { 0xc23cc000, 0xc23cc3ff, REGISTRY_RIPENCC }, // 194.60.192.0 - 194.60.195.255 { 0xc23ccb00, 0xc23cccff, REGISTRY_RIPENCC }, // 194.60.203.0 - 194.60.204.255 { 0xc23cce00, 0xc23ccfff, REGISTRY_RIPENCC }, // 194.60.206.0 - 194.60.207.255 { 0xc23cd800, 0xc23cf9ff, REGISTRY_RIPENCC }, // 194.60.216.0 - 194.60.249.255 { 0xc23cfa00, 0xc23cfaff, REGISTRY_RIPENCC }, // 194.60.250.0 - 194.60.250.255 { 0xc23cfb00, 0xc23cffff, REGISTRY_RIPENCC }, // 194.60.251.0 - 194.60.255.255 { 0xc23d3000, 0xc23d47ff, REGISTRY_RIPENCC }, // 194.61.48.0 - 194.61.71.255 { 0xc23d4e00, 0xc23d4fff, REGISTRY_RIPENCC }, // 194.61.78.0 - 194.61.79.255 { 0xc23d5c00, 0xc23d6fff, REGISTRY_RIPENCC }, // 194.61.92.0 - 194.61.111.255 { 0xc23d7a00, 0xc23d7bff, REGISTRY_RIPENCC }, // 194.61.122.0 - 194.61.123.255 { 0xc23d9000, 0xc23d97ff, REGISTRY_RIPENCC }, // 194.61.144.0 - 194.61.151.255 { 0xc23d9e00, 0xc23d9eff, REGISTRY_RIPENCC }, // 194.61.158.0 - 194.61.158.255 { 0xc23da000, 0xc23ddfff, REGISTRY_RIPENCC }, // 194.61.160.0 - 194.61.223.255 { 0xc23df000, 0xc23e00ff, REGISTRY_RIPENCC }, // 194.61.240.0 - 194.62.0.255 { 0xc23e0700, 0xc23e07ff, REGISTRY_RIPENCC }, // 194.62.7.0 - 194.62.7.255 { 0xc23e0a00, 0xc23e0fff, REGISTRY_RIPENCC }, // 194.62.10.0 - 194.62.15.255 { 0xc23e1400, 0xc23e16ff, REGISTRY_RIPENCC }, // 194.62.20.0 - 194.62.22.255 { 0xc23e1700, 0xc23e17ff, REGISTRY_RIPENCC }, // 194.62.23.0 - 194.62.23.255 { 0xc23e1800, 0xc23e1cff, REGISTRY_RIPENCC }, // 194.62.24.0 - 194.62.28.255 { 0xc23e2000, 0xc23e27ff, REGISTRY_RIPENCC }, // 194.62.32.0 - 194.62.39.255 { 0xc23e2c00, 0xc23e33ff, REGISTRY_RIPENCC }, // 194.62.44.0 - 194.62.51.255 { 0xc23e4000, 0xc23e41ff, REGISTRY_RIPENCC }, // 194.62.64.0 - 194.62.65.255 { 0xc23e4400, 0xc23e5fff, REGISTRY_RIPENCC }, // 194.62.68.0 - 194.62.95.255 { 0xc23e6400, 0xc23e65ff, REGISTRY_RIPENCC }, // 194.62.100.0 - 194.62.101.255 { 0xc23e6600, 0xc23e66ff, REGISTRY_RIPENCC }, // 194.62.102.0 - 194.62.102.255 { 0xc23e6700, 0xc23e67ff, REGISTRY_RIPENCC }, // 194.62.103.0 - 194.62.103.255 { 0xc23e7000, 0xc23e79ff, REGISTRY_RIPENCC }, // 194.62.112.0 - 194.62.121.255 { 0xc23e7c00, 0xc23e7dff, REGISTRY_RIPENCC }, // 194.62.124.0 - 194.62.125.255 { 0xc23e9000, 0xc23e93ff, REGISTRY_RIPENCC }, // 194.62.144.0 - 194.62.147.255 { 0xc23e9c00, 0xc23e9cff, REGISTRY_RIPENCC }, // 194.62.156.0 - 194.62.156.255 { 0xc23eac00, 0xc23eadff, REGISTRY_RIPENCC }, // 194.62.172.0 - 194.62.173.255 { 0xc23eaf00, 0xc23eb3ff, REGISTRY_RIPENCC }, // 194.62.175.0 - 194.62.179.255 { 0xc23ebd00, 0xc23ebdff, REGISTRY_RIPENCC }, // 194.62.189.0 - 194.62.189.255 { 0xc23ec000, 0xc23ec7ff, REGISTRY_RIPENCC }, // 194.62.192.0 - 194.62.199.255 { 0xc23ecc00, 0xc23ed5ff, REGISTRY_RIPENCC }, // 194.62.204.0 - 194.62.213.255 { 0xc23ee800, 0xc23ee8ff, REGISTRY_RIPENCC }, // 194.62.232.0 - 194.62.232.255 { 0xc23eea00, 0xc23eefff, REGISTRY_RIPENCC }, // 194.62.234.0 - 194.62.239.255 { 0xc23f0000, 0xc23f8bff, REGISTRY_RIPENCC }, // 194.63.0.0 - 194.63.139.255 { 0xc23f8c00, 0xc23f8fff, REGISTRY_RIPENCC }, // 194.63.140.0 - 194.63.143.255 { 0xc23f9400, 0xc23f97ff, REGISTRY_RIPENCC }, // 194.63.148.0 - 194.63.151.255 { 0xc23f9c00, 0xc23fffff, REGISTRY_RIPENCC }, // 194.63.156.0 - 194.63.255.255 { 0xc2400000, 0xc244ffff, REGISTRY_RIPENCC }, // 194.64.0.0 - 194.68.255.255 { 0xc2450000, 0xc2451fff, REGISTRY_RIPENCC }, // 194.69.0.0 - 194.69.31.255 { 0xc2452000, 0xc24523ff, REGISTRY_RIPENCC }, // 194.69.32.0 - 194.69.35.255 { 0xc2452400, 0xc24525ff, REGISTRY_RIPENCC }, // 194.69.36.0 - 194.69.37.255 { 0xc2452600, 0xc24529ff, REGISTRY_RIPENCC }, // 194.69.38.0 - 194.69.41.255 { 0xc2452a00, 0xc2452bff, REGISTRY_RIPENCC }, // 194.69.42.0 - 194.69.43.255 { 0xc2452c00, 0xc2453bff, REGISTRY_RIPENCC }, // 194.69.44.0 - 194.69.59.255 { 0xc2453c00, 0xc2453fff, REGISTRY_RIPENCC }, // 194.69.60.0 - 194.69.63.255 { 0xc2454000, 0xc2455fff, REGISTRY_RIPENCC }, // 194.69.64.0 - 194.69.95.255 { 0xc2456000, 0xc2458fff, REGISTRY_RIPENCC }, // 194.69.96.0 - 194.69.143.255 { 0xc2459000, 0xc2459fff, REGISTRY_RIPENCC }, // 194.69.144.0 - 194.69.159.255 { 0xc245a000, 0xc245a7ff, REGISTRY_RIPENCC }, // 194.69.160.0 - 194.69.167.255 { 0xc245a800, 0xc245b0ff, REGISTRY_RIPENCC }, // 194.69.168.0 - 194.69.176.255 { 0xc245b100, 0xc245b1ff, REGISTRY_RIPENCC }, // 194.69.177.0 - 194.69.177.255 { 0xc245b200, 0xc245b4ff, REGISTRY_RIPENCC }, // 194.69.178.0 - 194.69.180.255 { 0xc245b500, 0xc245b5ff, REGISTRY_RIPENCC }, // 194.69.181.0 - 194.69.181.255 { 0xc245b600, 0xc245b6ff, REGISTRY_RIPENCC }, // 194.69.182.0 - 194.69.182.255 { 0xc245b700, 0xc245c7ff, REGISTRY_RIPENCC }, // 194.69.183.0 - 194.69.199.255 { 0xc245cc00, 0xc245cdff, REGISTRY_RIPENCC }, // 194.69.204.0 - 194.69.205.255 { 0xc245cf00, 0xc245dfff, REGISTRY_RIPENCC }, // 194.69.207.0 - 194.69.223.255 { 0xc245e000, 0xc24bffff, REGISTRY_RIPENCC }, // 194.69.224.0 - 194.75.255.255 { 0xc24c0200, 0xc24c09ff, REGISTRY_RIPENCC }, // 194.76.2.0 - 194.76.9.255 { 0xc24c0e00, 0xc24c0eff, REGISTRY_RIPENCC }, // 194.76.14.0 - 194.76.14.255 { 0xc24c1300, 0xc24c19ff, REGISTRY_RIPENCC }, // 194.76.19.0 - 194.76.25.255 { 0xc24c1d00, 0xc24c1fff, REGISTRY_RIPENCC }, // 194.76.29.0 - 194.76.31.255 { 0xc24c2600, 0xc24c28ff, REGISTRY_RIPENCC }, // 194.76.38.0 - 194.76.40.255 { 0xc24c2a00, 0xc24c2bff, REGISTRY_RIPENCC }, // 194.76.42.0 - 194.76.43.255 { 0xc24c2d00, 0xc24c2dff, REGISTRY_RIPENCC }, // 194.76.45.0 - 194.76.45.255 { 0xc24c3000, 0xc24c34ff, REGISTRY_RIPENCC }, // 194.76.48.0 - 194.76.52.255 { 0xc24c3600, 0xc24c39ff, REGISTRY_RIPENCC }, // 194.76.54.0 - 194.76.57.255 { 0xc24c3c00, 0xc24c67ff, REGISTRY_RIPENCC }, // 194.76.60.0 - 194.76.103.255 { 0xc24c6a00, 0xc24c6bff, REGISTRY_RIPENCC }, // 194.76.106.0 - 194.76.107.255 { 0xc24c6e00, 0xc24c6fff, REGISTRY_RIPENCC }, // 194.76.110.0 - 194.76.111.255 { 0xc24c7a00, 0xc24c7bff, REGISTRY_RIPENCC }, // 194.76.122.0 - 194.76.123.255 { 0xc24c8c00, 0xc24c8eff, REGISTRY_RIPENCC }, // 194.76.140.0 - 194.76.142.255 { 0xc24c9000, 0xc24c90ff, REGISTRY_RIPENCC }, // 194.76.144.0 - 194.76.144.255 { 0xc24c9400, 0xc24c94ff, REGISTRY_RIPENCC }, // 194.76.148.0 - 194.76.148.255 { 0xc24c9700, 0xc24c99ff, REGISTRY_RIPENCC }, // 194.76.151.0 - 194.76.153.255 { 0xc24c9c00, 0xc24ca7ff, REGISTRY_RIPENCC }, // 194.76.156.0 - 194.76.167.255 { 0xc24caa00, 0xc24cabff, REGISTRY_RIPENCC }, // 194.76.170.0 - 194.76.171.255 { 0xc24cae00, 0xc24cb7ff, REGISTRY_RIPENCC }, // 194.76.174.0 - 194.76.183.255 { 0xc24cbb00, 0xc24cbbff, REGISTRY_RIPENCC }, // 194.76.187.0 - 194.76.187.255 { 0xc24cc100, 0xc24cc5ff, REGISTRY_RIPENCC }, // 194.76.193.0 - 194.76.197.255 { 0xc24cd000, 0xc24cd9ff, REGISTRY_RIPENCC }, // 194.76.208.0 - 194.76.217.255 { 0xc24cdb00, 0xc24cdbff, REGISTRY_RIPENCC }, // 194.76.219.0 - 194.76.219.255 { 0xc24cde00, 0xc24cdfff, REGISTRY_RIPENCC }, // 194.76.222.0 - 194.76.223.255 { 0xc24ce400, 0xc24cebff, REGISTRY_RIPENCC }, // 194.76.228.0 - 194.76.235.255 { 0xc24cef00, 0xc24cefff, REGISTRY_RIPENCC }, // 194.76.239.0 - 194.76.239.255 { 0xc24cf200, 0xc24cf7ff, REGISTRY_RIPENCC }, // 194.76.242.0 - 194.76.247.255 { 0xc24cfd00, 0xc24cfdff, REGISTRY_RIPENCC }, // 194.76.253.0 - 194.76.253.255 { 0xc24d0000, 0xc24effff, REGISTRY_RIPENCC }, // 194.77.0.0 - 194.78.255.255 { 0xc24f0000, 0xc24f0fff, REGISTRY_RIPENCC }, // 194.79.0.0 - 194.79.15.255 { 0xc24f1000, 0xc24f13ff, REGISTRY_RIPENCC }, // 194.79.16.0 - 194.79.19.255 { 0xc24f1400, 0xc24f1bff, REGISTRY_RIPENCC }, // 194.79.20.0 - 194.79.27.255 { 0xc24f1c00, 0xc24f1fff, REGISTRY_RIPENCC }, // 194.79.28.0 - 194.79.31.255 { 0xc24f2000, 0xc24f23ff, REGISTRY_RIPENCC }, // 194.79.32.0 - 194.79.35.255 { 0xc24f2800, 0xc24f2fff, REGISTRY_RIPENCC }, // 194.79.40.0 - 194.79.47.255 { 0xc24f3400, 0xc24f3fff, REGISTRY_RIPENCC }, // 194.79.52.0 - 194.79.63.255 { 0xc24f4000, 0xc24f5fff, REGISTRY_RIPENCC }, // 194.79.64.0 - 194.79.95.255 { 0xc24f6000, 0xc24f7fff, REGISTRY_AFRINIC }, // 194.79.96.0 - 194.79.127.255 { 0xc24f8000, 0xc24fdfff, REGISTRY_RIPENCC }, // 194.79.128.0 - 194.79.223.255 { 0xc24fe000, 0xc24fffff, REGISTRY_RIPENCC }, // 194.79.224.0 - 194.79.255.255 { 0xc2500000, 0xc257ffff, REGISTRY_RIPENCC }, // 194.80.0.0 - 194.87.255.255 { 0xc2580000, 0xc25805ff, REGISTRY_RIPENCC }, // 194.88.0.0 - 194.88.5.255 { 0xc2580800, 0xc2580aff, REGISTRY_RIPENCC }, // 194.88.8.0 - 194.88.10.255 { 0xc2580e00, 0xc2581fff, REGISTRY_RIPENCC }, // 194.88.14.0 - 194.88.31.255 { 0xc2582000, 0xc2587fff, REGISTRY_RIPENCC }, // 194.88.32.0 - 194.88.127.255 { 0xc2588000, 0xc25883ff, REGISTRY_RIPENCC }, // 194.88.128.0 - 194.88.131.255 { 0xc2588400, 0xc25885ff, REGISTRY_RIPENCC }, // 194.88.132.0 - 194.88.133.255 { 0xc2588600, 0xc2589fff, REGISTRY_RIPENCC }, // 194.88.134.0 - 194.88.159.255 { 0xc258a000, 0xc258bfff, REGISTRY_RIPENCC }, // 194.88.160.0 - 194.88.191.255 { 0xc258c000, 0xc258d7ff, REGISTRY_RIPENCC }, // 194.88.192.0 - 194.88.215.255 { 0xc258d800, 0xc258d9ff, REGISTRY_RIPENCC }, // 194.88.216.0 - 194.88.217.255 { 0xc258da00, 0xc258e1ff, REGISTRY_RIPENCC }, // 194.88.218.0 - 194.88.225.255 { 0xc258e400, 0xc258fbff, REGISTRY_RIPENCC }, // 194.88.228.0 - 194.88.251.255 { 0xc258fe00, 0xc258ffff, REGISTRY_RIPENCC }, // 194.88.254.0 - 194.88.255.255 { 0xc2590000, 0xc25cffff, REGISTRY_RIPENCC }, // 194.89.0.0 - 194.92.255.255 { 0xc25d4900, 0xc25d7aff, REGISTRY_RIPENCC }, // 194.93.73.0 - 194.93.122.255 { 0xc25d7b80, 0xc25d7fff, REGISTRY_RIPENCC }, // 194.93.123.128 - 194.93.127.255 { 0xc25d8000, 0xc262ffff, REGISTRY_RIPENCC }, // 194.93.128.0 - 194.98.255.255 { 0xc2630000, 0xc26307ff, REGISTRY_RIPENCC }, // 194.99.0.0 - 194.99.7.255 { 0xc2630c00, 0xc2630fff, REGISTRY_RIPENCC }, // 194.99.12.0 - 194.99.15.255 { 0xc2632000, 0xc26320ff, REGISTRY_RIPENCC }, // 194.99.32.0 - 194.99.32.255 { 0xc2632200, 0xc26325ff, REGISTRY_RIPENCC }, // 194.99.34.0 - 194.99.37.255 { 0xc2633000, 0xc26331ff, REGISTRY_RIPENCC }, // 194.99.48.0 - 194.99.49.255 { 0xc2633500, 0xc26337ff, REGISTRY_RIPENCC }, // 194.99.53.0 - 194.99.55.255 { 0xc2633800, 0xc26338ff, REGISTRY_RIPENCC }, // 194.99.56.0 - 194.99.56.255 { 0xc2634000, 0xc26341ff, REGISTRY_RIPENCC }, // 194.99.64.0 - 194.99.65.255 { 0xc2634400, 0xc26347ff, REGISTRY_RIPENCC }, // 194.99.68.0 - 194.99.71.255 { 0xc2634900, 0xc26349ff, REGISTRY_RIPENCC }, // 194.99.73.0 - 194.99.73.255 { 0xc2634b00, 0xc2634dff, REGISTRY_RIPENCC }, // 194.99.75.0 - 194.99.77.255 { 0xc2635300, 0xc26354ff, REGISTRY_RIPENCC }, // 194.99.83.0 - 194.99.84.255 { 0xc2635800, 0xc2635aff, REGISTRY_RIPENCC }, // 194.99.88.0 - 194.99.90.255 { 0xc2635c00, 0xc2635fff, REGISTRY_RIPENCC }, // 194.99.92.0 - 194.99.95.255 { 0xc2636200, 0xc26363ff, REGISTRY_RIPENCC }, // 194.99.98.0 - 194.99.99.255 { 0xc2636c00, 0xc2636dff, REGISTRY_RIPENCC }, // 194.99.108.0 - 194.99.109.255 { 0xc2636f00, 0xc2636fff, REGISTRY_RIPENCC }, // 194.99.111.0 - 194.99.111.255 { 0xc2637100, 0xc26371ff, REGISTRY_RIPENCC }, // 194.99.113.0 - 194.99.113.255 { 0xc2637400, 0xc2639bff, REGISTRY_RIPENCC }, // 194.99.116.0 - 194.99.155.255 { 0xc263a000, 0xc263ffff, REGISTRY_RIPENCC }, // 194.99.160.0 - 194.99.255.255 { 0xc2640000, 0xc267ffff, REGISTRY_RIPENCC }, // 194.100.0.0 - 194.103.255.255 { 0xc2680000, 0xc26800ff, REGISTRY_RIPENCC }, // 194.104.0.0 - 194.104.0.255 { 0xc2681800, 0xc26854ff, REGISTRY_RIPENCC }, // 194.104.24.0 - 194.104.84.255 { 0xc2685800, 0xc26859ff, REGISTRY_RIPENCC }, // 194.104.88.0 - 194.104.89.255 { 0xc2685e00, 0xc26860ff, REGISTRY_RIPENCC }, // 194.104.94.0 - 194.104.96.255 { 0xc2686300, 0xc26867ff, REGISTRY_RIPENCC }, // 194.104.99.0 - 194.104.103.255 { 0xc2687100, 0xc26871ff, REGISTRY_RIPENCC }, // 194.104.113.0 - 194.104.113.255 { 0xc2687800, 0xc2687dff, REGISTRY_RIPENCC }, // 194.104.120.0 - 194.104.125.255 { 0xc2687f00, 0xc2688fff, REGISTRY_RIPENCC }, // 194.104.127.0 - 194.104.143.255 { 0xc2689600, 0xc26897ff, REGISTRY_RIPENCC }, // 194.104.150.0 - 194.104.151.255 { 0xc2689d00, 0xc2689dff, REGISTRY_RIPENCC }, // 194.104.157.0 - 194.104.157.255 { 0xc2689f00, 0xc268bbff, REGISTRY_RIPENCC }, // 194.104.159.0 - 194.104.187.255 { 0xc268c000, 0xc268ffff, REGISTRY_RIPENCC }, // 194.104.192.0 - 194.104.255.255 { 0xc2690000, 0xc2691fff, REGISTRY_RIPENCC }, // 194.105.0.0 - 194.105.31.255 { 0xc2692000, 0xc2692fff, REGISTRY_RIPENCC }, // 194.105.32.0 - 194.105.47.255 { 0xc2693000, 0xc26937ff, REGISTRY_RIPENCC }, // 194.105.48.0 - 194.105.55.255 { 0xc2693800, 0xc26939ff, REGISTRY_RIPENCC }, // 194.105.56.0 - 194.105.57.255 { 0xc2693d00, 0xc2693dff, REGISTRY_RIPENCC }, // 194.105.61.0 - 194.105.61.255 { 0xc2694000, 0xc2695fff, REGISTRY_RIPENCC }, // 194.105.64.0 - 194.105.95.255 { 0xc2696000, 0xc2699dff, REGISTRY_RIPENCC }, // 194.105.96.0 - 194.105.157.255 { 0xc269a000, 0xc26abfff, REGISTRY_RIPENCC }, // 194.105.160.0 - 194.106.191.255 { 0xc26ac000, 0xc26ac3ff, REGISTRY_RIPENCC }, // 194.106.192.0 - 194.106.195.255 { 0xc26ac600, 0xc26ac9ff, REGISTRY_RIPENCC }, // 194.106.198.0 - 194.106.201.255 { 0xc26acc00, 0xc26adfff, REGISTRY_RIPENCC }, // 194.106.204.0 - 194.106.223.255 { 0xc26ae000, 0xc26affff, REGISTRY_RIPENCC }, // 194.106.224.0 - 194.106.255.255 { 0xc26b0000, 0xc26b33ff, REGISTRY_RIPENCC }, // 194.107.0.0 - 194.107.51.255 { 0xc26b3400, 0xc26b37ff, REGISTRY_RIPENCC }, // 194.107.52.0 - 194.107.55.255 { 0xc26b3800, 0xc26b45ff, REGISTRY_RIPENCC }, // 194.107.56.0 - 194.107.69.255 { 0xc26b5000, 0xc26b5bff, REGISTRY_RIPENCC }, // 194.107.80.0 - 194.107.91.255 { 0xc26b5d00, 0xc26b79ff, REGISTRY_RIPENCC }, // 194.107.93.0 - 194.107.121.255 { 0xc26b7a00, 0xc26b7aff, REGISTRY_RIPENCC }, // 194.107.122.0 - 194.107.122.255 { 0xc26b7b00, 0xc26b7cff, REGISTRY_RIPENCC }, // 194.107.123.0 - 194.107.124.255 { 0xc26b7e00, 0xc26b7fff, REGISTRY_RIPENCC }, // 194.107.126.0 - 194.107.127.255 { 0xc26b8200, 0xc26b87ff, REGISTRY_RIPENCC }, // 194.107.130.0 - 194.107.135.255 { 0xc26b8c00, 0xc26b9fff, REGISTRY_RIPENCC }, // 194.107.140.0 - 194.107.159.255 { 0xc26ba600, 0xc26bafff, REGISTRY_RIPENCC }, // 194.107.166.0 - 194.107.175.255 { 0xc26bb800, 0xc26bc7ff, REGISTRY_RIPENCC }, // 194.107.184.0 - 194.107.199.255 { 0xc26bc900, 0xc26bcbff, REGISTRY_RIPENCC }, // 194.107.201.0 - 194.107.203.255 { 0xc26bd000, 0xc26be4ff, REGISTRY_RIPENCC }, // 194.107.208.0 - 194.107.228.255 { 0xc26be800, 0xc26bf7ff, REGISTRY_RIPENCC }, // 194.107.232.0 - 194.107.247.255 { 0xc26c0000, 0xc26dffff, REGISTRY_RIPENCC }, // 194.108.0.0 - 194.109.255.255 { 0xc26e0000, 0xc26e00ff, REGISTRY_RIPENCC }, // 194.110.0.0 - 194.110.0.255 { 0xc26e0600, 0xc26e06ff, REGISTRY_RIPENCC }, // 194.110.6.0 - 194.110.6.255 { 0xc26e1200, 0xc26e12ff, REGISTRY_RIPENCC }, // 194.110.18.0 - 194.110.18.255 { 0xc26e1700, 0xc26e1aff, REGISTRY_RIPENCC }, // 194.110.23.0 - 194.110.26.255 { 0xc26e1f00, 0xc26e2fff, REGISTRY_RIPENCC }, // 194.110.31.0 - 194.110.47.255 { 0xc26e3e00, 0xc26e47ff, REGISTRY_RIPENCC }, // 194.110.62.0 - 194.110.71.255 { 0xc26e4900, 0xc26e49ff, REGISTRY_RIPENCC }, // 194.110.73.0 - 194.110.73.255 { 0xc26e4b00, 0xc26e4fff, REGISTRY_RIPENCC }, // 194.110.75.0 - 194.110.79.255 { 0xc26e6000, 0xc26e6fff, REGISTRY_RIPENCC }, // 194.110.96.0 - 194.110.111.255 { 0xc26e7400, 0xc26e74ff, REGISTRY_RIPENCC }, // 194.110.116.0 - 194.110.116.255 { 0xc26e7e00, 0xc26e81ff, REGISTRY_RIPENCC }, // 194.110.126.0 - 194.110.129.255 { 0xc26e8500, 0xc26e85ff, REGISTRY_RIPENCC }, // 194.110.133.0 - 194.110.133.255 { 0xc26e8800, 0xc26e88ff, REGISTRY_RIPENCC }, // 194.110.136.0 - 194.110.136.255 { 0xc26e8e00, 0xc26e8eff, REGISTRY_RIPENCC }, // 194.110.142.0 - 194.110.142.255 { 0xc26e9600, 0xc26ea7ff, REGISTRY_RIPENCC }, // 194.110.150.0 - 194.110.167.255 { 0xc26eb000, 0xc26ebfff, REGISTRY_RIPENCC }, // 194.110.176.0 - 194.110.191.255 { 0xc26ec000, 0xc26ec0ff, REGISTRY_RIPENCC }, // 194.110.192.0 - 194.110.192.255 { 0xc26ec200, 0xc26ec3ff, REGISTRY_RIPENCC }, // 194.110.194.0 - 194.110.195.255 { 0xc26ec400, 0xc26ec4ff, REGISTRY_RIPENCC }, // 194.110.196.0 - 194.110.196.255 { 0xc26ec500, 0xc26ec7ff, REGISTRY_RIPENCC }, // 194.110.197.0 - 194.110.199.255 { 0xc26ec900, 0xc26ed1ff, REGISTRY_RIPENCC }, // 194.110.201.0 - 194.110.209.255 { 0xc26ed300, 0xc26ef5ff, REGISTRY_RIPENCC }, // 194.110.211.0 - 194.110.245.255 { 0xc26ef900, 0xc26efdff, REGISTRY_RIPENCC }, // 194.110.249.0 - 194.110.253.255 { 0xc26eff00, 0xc26effff, REGISTRY_RIPENCC }, // 194.110.255.0 - 194.110.255.255 { 0xc26f0000, 0xc270ffff, REGISTRY_RIPENCC }, // 194.111.0.0 - 194.112.255.255 { 0xc2710000, 0xc27117ff, REGISTRY_RIPENCC }, // 194.113.0.0 - 194.113.23.255 { 0xc2712100, 0xc27121ff, REGISTRY_RIPENCC }, // 194.113.33.0 - 194.113.33.255 { 0xc2712800, 0xc27129ff, REGISTRY_RIPENCC }, // 194.113.40.0 - 194.113.41.255 { 0xc2713000, 0xc27135ff, REGISTRY_RIPENCC }, // 194.113.48.0 - 194.113.53.255 { 0xc2713800, 0xc27139ff, REGISTRY_RIPENCC }, // 194.113.56.0 - 194.113.57.255 { 0xc2713b00, 0xc2713cff, REGISTRY_RIPENCC }, // 194.113.59.0 - 194.113.60.255 { 0xc2714700, 0xc27147ff, REGISTRY_RIPENCC }, // 194.113.71.0 - 194.113.71.255 { 0xc2714c00, 0xc2714fff, REGISTRY_RIPENCC }, // 194.113.76.0 - 194.113.79.255 { 0xc2715200, 0xc27157ff, REGISTRY_RIPENCC }, // 194.113.82.0 - 194.113.87.255 { 0xc2715d00, 0xc2715dff, REGISTRY_RIPENCC }, // 194.113.93.0 - 194.113.93.255 { 0xc2716000, 0xc27167ff, REGISTRY_RIPENCC }, // 194.113.96.0 - 194.113.103.255 { 0xc2717300, 0xc27175ff, REGISTRY_RIPENCC }, // 194.113.115.0 - 194.113.117.255 { 0xc2717800, 0xc2718aff, REGISTRY_RIPENCC }, // 194.113.120.0 - 194.113.138.255 { 0xc2718d00, 0xc2718dff, REGISTRY_RIPENCC }, // 194.113.141.0 - 194.113.141.255 { 0xc2718f00, 0xc2718fff, REGISTRY_RIPENCC }, // 194.113.143.0 - 194.113.143.255 { 0xc2719400, 0xc27195ff, REGISTRY_RIPENCC }, // 194.113.148.0 - 194.113.149.255 { 0xc2719a00, 0xc2719aff, REGISTRY_RIPENCC }, // 194.113.154.0 - 194.113.154.255 { 0xc271a000, 0xc271a3ff, REGISTRY_RIPENCC }, // 194.113.160.0 - 194.113.163.255 { 0xc271a500, 0xc271a5ff, REGISTRY_RIPENCC }, // 194.113.165.0 - 194.113.165.255 { 0xc271a800, 0xc271a8ff, REGISTRY_RIPENCC }, // 194.113.168.0 - 194.113.168.255 { 0xc271ab00, 0xc271abff, REGISTRY_RIPENCC }, // 194.113.171.0 - 194.113.171.255 { 0xc271ad00, 0xc271adff, REGISTRY_RIPENCC }, // 194.113.173.0 - 194.113.173.255 { 0xc271b000, 0xc271c1ff, REGISTRY_RIPENCC }, // 194.113.176.0 - 194.113.193.255 { 0xc271c800, 0xc271d0ff, REGISTRY_RIPENCC }, // 194.113.200.0 - 194.113.208.255 { 0xc271d800, 0xc271d9ff, REGISTRY_RIPENCC }, // 194.113.216.0 - 194.113.217.255 { 0xc271da00, 0xc271ddff, REGISTRY_RIPENCC }, // 194.113.218.0 - 194.113.221.255 { 0xc271e000, 0xc271e1ff, REGISTRY_RIPENCC }, // 194.113.224.0 - 194.113.225.255 { 0xc271f000, 0xc271f4ff, REGISTRY_RIPENCC }, // 194.113.240.0 - 194.113.244.255 { 0xc271f600, 0xc271f7ff, REGISTRY_RIPENCC }, // 194.113.246.0 - 194.113.247.255 { 0xc271fa00, 0xc27287ff, REGISTRY_RIPENCC }, // 194.113.250.0 - 194.114.135.255 { 0xc2728c00, 0xc27293ff, REGISTRY_RIPENCC }, // 194.114.140.0 - 194.114.147.255 { 0xc2729400, 0xc27297ff, REGISTRY_RIPENCC }, // 194.114.148.0 - 194.114.151.255 { 0xc2729800, 0xc272ffff, REGISTRY_RIPENCC }, // 194.114.152.0 - 194.114.255.255 { 0xc2730000, 0xc2747fff, REGISTRY_RIPENCC }, // 194.115.0.0 - 194.116.127.255 { 0xc2748000, 0xc27489ff, REGISTRY_RIPENCC }, // 194.116.128.0 - 194.116.137.255 { 0xc2748a00, 0xc2748bff, REGISTRY_RIPENCC }, // 194.116.138.0 - 194.116.139.255 { 0xc2748c00, 0xc27499ff, REGISTRY_RIPENCC }, // 194.116.140.0 - 194.116.153.255 { 0xc2749c00, 0xc274abff, REGISTRY_RIPENCC }, // 194.116.156.0 - 194.116.171.255 { 0xc274ae00, 0xc274bdff, REGISTRY_RIPENCC }, // 194.116.174.0 - 194.116.189.255 { 0xc274c000, 0xc274c1ff, REGISTRY_RIPENCC }, // 194.116.192.0 - 194.116.193.255 { 0xc274c200, 0xc274c3ff, REGISTRY_RIPENCC }, // 194.116.194.0 - 194.116.195.255 { 0xc274c400, 0xc274d5ff, REGISTRY_RIPENCC }, // 194.116.196.0 - 194.116.213.255 { 0xc274da00, 0xc274e3ff, REGISTRY_RIPENCC }, // 194.116.218.0 - 194.116.227.255 { 0xc274e600, 0xc274e9ff, REGISTRY_RIPENCC }, // 194.116.230.0 - 194.116.233.255 { 0xc274ea00, 0xc274ebff, REGISTRY_RIPENCC }, // 194.116.234.0 - 194.116.235.255 { 0xc274ee00, 0xc274f7ff, REGISTRY_RIPENCC }, // 194.116.238.0 - 194.116.247.255 { 0xc274fc00, 0xc274ffff, REGISTRY_RIPENCC }, // 194.116.252.0 - 194.116.255.255 { 0xc2750000, 0xc27531ff, REGISTRY_RIPENCC }, // 194.117.0.0 - 194.117.49.255 { 0xc2753280, 0xc27534ff, REGISTRY_RIPENCC }, // 194.117.50.128 - 194.117.52.255 { 0xc2753580, 0xc27536ff, REGISTRY_RIPENCC }, // 194.117.53.128 - 194.117.54.255 { 0xc2753780, 0xc27537ff, REGISTRY_RIPENCC }, // 194.117.55.128 - 194.117.55.255 { 0xc2753800, 0xc275dfff, REGISTRY_RIPENCC }, // 194.117.56.0 - 194.117.223.255 { 0xc275e200, 0xc275edff, REGISTRY_RIPENCC }, // 194.117.226.0 - 194.117.237.255 { 0xc275f000, 0xc275f9ff, REGISTRY_RIPENCC }, // 194.117.240.0 - 194.117.249.255 { 0xc275fc00, 0xc275fdff, REGISTRY_RIPENCC }, // 194.117.252.0 - 194.117.253.255 { 0xc275fe00, 0xc27bffff, REGISTRY_RIPENCC }, // 194.117.254.0 - 194.123.255.255 { 0xc27c0000, 0xc27c1fff, REGISTRY_RIPENCC }, // 194.124.0.0 - 194.124.31.255 { 0xc27c4e00, 0xc27c8fff, REGISTRY_RIPENCC }, // 194.124.78.0 - 194.124.143.255 { 0xc27c9100, 0xc27c9dff, REGISTRY_RIPENCC }, // 194.124.145.0 - 194.124.157.255 { 0xc27ca000, 0xc27cbfff, REGISTRY_RIPENCC }, // 194.124.160.0 - 194.124.191.255 { 0xc27cc900, 0xc27ccbff, REGISTRY_RIPENCC }, // 194.124.201.0 - 194.124.203.255 { 0xc27cd000, 0xc27cd1ff, REGISTRY_RIPENCC }, // 194.124.208.0 - 194.124.209.255 { 0xc27cd400, 0xc27cd4ff, REGISTRY_RIPENCC }, // 194.124.212.0 - 194.124.212.255 { 0xc27cd900, 0xc27cd9ff, REGISTRY_RIPENCC }, // 194.124.217.0 - 194.124.217.255 { 0xc27ce200, 0xc27ce2ff, REGISTRY_RIPENCC }, // 194.124.226.0 - 194.124.226.255 { 0xc27ce500, 0xc27ce9ff, REGISTRY_RIPENCC }, // 194.124.229.0 - 194.124.233.255 { 0xc27cee00, 0xc27ceeff, REGISTRY_RIPENCC }, // 194.124.238.0 - 194.124.238.255 { 0xc27cf100, 0xc27cf3ff, REGISTRY_RIPENCC }, // 194.124.241.0 - 194.124.243.255 { 0xc27cf600, 0xc27cf6ff, REGISTRY_RIPENCC }, // 194.124.246.0 - 194.124.246.255 { 0xc27cf900, 0xc27cf9ff, REGISTRY_RIPENCC }, // 194.124.249.0 - 194.124.249.255 { 0xc27cfd00, 0xc27cfeff, REGISTRY_RIPENCC }, // 194.124.253.0 - 194.124.254.255 { 0xc27d0000, 0xc27ddfff, REGISTRY_RIPENCC }, // 194.125.0.0 - 194.125.223.255 { 0xc27de000, 0xc27de3ff, REGISTRY_RIPENCC }, // 194.125.224.0 - 194.125.227.255 { 0xc27de800, 0xc27df7ff, REGISTRY_RIPENCC }, // 194.125.232.0 - 194.125.247.255 { 0xc27dfc00, 0xc27dffff, REGISTRY_RIPENCC }, // 194.125.252.0 - 194.125.255.255 { 0xc27e0000, 0xc27e7fff, REGISTRY_RIPENCC }, // 194.126.0.0 - 194.126.127.255 { 0xc27e8000, 0xc27e82ff, REGISTRY_RIPENCC }, // 194.126.128.0 - 194.126.130.255 { 0xc27e8800, 0xc27e8fff, REGISTRY_RIPENCC }, // 194.126.136.0 - 194.126.143.255 { 0xc27e9000, 0xc27e97ff, REGISTRY_RIPENCC }, // 194.126.144.0 - 194.126.151.255 { 0xc27e9c00, 0xc27e9fff, REGISTRY_RIPENCC }, // 194.126.156.0 - 194.126.159.255 { 0xc27ea400, 0xc27eafff, REGISTRY_RIPENCC }, // 194.126.164.0 - 194.126.175.255 { 0xc27eb400, 0xc27ebbff, REGISTRY_RIPENCC }, // 194.126.180.0 - 194.126.187.255 { 0xc27ebc00, 0xc27ebfff, REGISTRY_RIPENCC }, // 194.126.188.0 - 194.126.191.255 { 0xc27ec000, 0xc27ec1ff, REGISTRY_RIPENCC }, // 194.126.192.0 - 194.126.193.255 { 0xc27ec300, 0xc27ec9ff, REGISTRY_RIPENCC }, // 194.126.195.0 - 194.126.201.255 { 0xc27ecb00, 0xc27ecdff, REGISTRY_RIPENCC }, // 194.126.203.0 - 194.126.205.255 { 0xc27ece00, 0xc27eceff, REGISTRY_RIPENCC }, // 194.126.206.0 - 194.126.206.255 { 0xc27ecf00, 0xc27ed6ff, REGISTRY_RIPENCC }, // 194.126.207.0 - 194.126.214.255 { 0xc27ed800, 0xc27edaff, REGISTRY_RIPENCC }, // 194.126.216.0 - 194.126.218.255 { 0xc27edc00, 0xc27ee2ff, REGISTRY_RIPENCC }, // 194.126.220.0 - 194.126.226.255 { 0xc27ee400, 0xc27ee8ff, REGISTRY_RIPENCC }, // 194.126.228.0 - 194.126.232.255 { 0xc27eea00, 0xc27eecff, REGISTRY_RIPENCC }, // 194.126.234.0 - 194.126.236.255 { 0xc27eed00, 0xc27eedff, REGISTRY_RIPENCC }, // 194.126.237.0 - 194.126.237.255 { 0xc27eee00, 0xc27eeeff, REGISTRY_RIPENCC }, // 194.126.238.0 - 194.126.238.255 { 0xc27eef00, 0xc27eefff, REGISTRY_RIPENCC }, // 194.126.239.0 - 194.126.239.255 { 0xc27ef000, 0xc27ef4ff, REGISTRY_RIPENCC }, // 194.126.240.0 - 194.126.244.255 { 0xc27ef600, 0xc27ef8ff, REGISTRY_RIPENCC }, // 194.126.246.0 - 194.126.248.255 { 0xc27ef900, 0xc27ef9ff, REGISTRY_RIPENCC }, // 194.126.249.0 - 194.126.249.255 { 0xc27efa00, 0xc27efaff, REGISTRY_RIPENCC }, // 194.126.250.0 - 194.126.250.255 { 0xc27efc00, 0xc27f60ff, REGISTRY_RIPENCC }, // 194.126.252.0 - 194.127.96.255 { 0xc27f6500, 0xc27f67ff, REGISTRY_RIPENCC }, // 194.127.101.0 - 194.127.103.255 { 0xc27f6b00, 0xc27f6bff, REGISTRY_RIPENCC }, // 194.127.107.0 - 194.127.107.255 { 0xc27f7800, 0xc27f80ff, REGISTRY_RIPENCC }, // 194.127.120.0 - 194.127.128.255 { 0xc27f8400, 0xc27f86ff, REGISTRY_RIPENCC }, // 194.127.132.0 - 194.127.134.255 { 0xc27f8800, 0xc27f97ff, REGISTRY_RIPENCC }, // 194.127.136.0 - 194.127.151.255 { 0xc27f9a00, 0xc27f9bff, REGISTRY_RIPENCC }, // 194.127.154.0 - 194.127.155.255 { 0xc27f9d00, 0xc27f9dff, REGISTRY_RIPENCC }, // 194.127.157.0 - 194.127.157.255 { 0xc27fa100, 0xc27fa1ff, REGISTRY_RIPENCC }, // 194.127.161.0 - 194.127.161.255 { 0xc27fa800, 0xc27fa9ff, REGISTRY_RIPENCC }, // 194.127.168.0 - 194.127.169.255 { 0xc27fab00, 0xc27fabff, REGISTRY_RIPENCC }, // 194.127.171.0 - 194.127.171.255 { 0xc27faf00, 0xc27fb0ff, REGISTRY_RIPENCC }, // 194.127.175.0 - 194.127.176.255 { 0xc27fb400, 0xc27fb4ff, REGISTRY_RIPENCC }, // 194.127.180.0 - 194.127.180.255 { 0xc27fb600, 0xc27fb6ff, REGISTRY_RIPENCC }, // 194.127.182.0 - 194.127.182.255 { 0xc27fb800, 0xc27fbfff, REGISTRY_RIPENCC }, // 194.127.184.0 - 194.127.191.255 { 0xc27fc300, 0xc27fc3ff, REGISTRY_RIPENCC }, // 194.127.195.0 - 194.127.195.255 { 0xc27fc500, 0xc27fc5ff, REGISTRY_RIPENCC }, // 194.127.197.0 - 194.127.197.255 { 0xc27fcb00, 0xc27fcdff, REGISTRY_RIPENCC }, // 194.127.203.0 - 194.127.205.255 { 0xc27fcf00, 0xc27fd3ff, REGISTRY_RIPENCC }, // 194.127.207.0 - 194.127.211.255 { 0xc27fd700, 0xc27fe2ff, REGISTRY_RIPENCC }, // 194.127.215.0 - 194.127.226.255 { 0xc27fe400, 0xc27fe5ff, REGISTRY_RIPENCC }, // 194.127.228.0 - 194.127.229.255 { 0xc27fe700, 0xc27fe7ff, REGISTRY_RIPENCC }, // 194.127.231.0 - 194.127.231.255 { 0xc27fe900, 0xc27fe9ff, REGISTRY_RIPENCC }, // 194.127.233.0 - 194.127.233.255 { 0xc27fee00, 0xc27fefff, REGISTRY_RIPENCC }, // 194.127.238.0 - 194.127.239.255 { 0xc27ff100, 0xc27ff3ff, REGISTRY_RIPENCC }, // 194.127.241.0 - 194.127.243.255 { 0xc27ffe00, 0xc27ffeff, REGISTRY_RIPENCC }, // 194.127.254.0 - 194.127.254.255 { 0xc2800000, 0xc28cdfff, REGISTRY_RIPENCC }, // 194.128.0.0 - 194.140.223.255 { 0xc28ce100, 0xc28ce4ff, REGISTRY_RIPENCC }, // 194.140.225.0 - 194.140.228.255 { 0xc28ce600, 0xc28cecff, REGISTRY_RIPENCC }, // 194.140.230.0 - 194.140.236.255 { 0xc28cee00, 0xc28cf1ff, REGISTRY_RIPENCC }, // 194.140.238.0 - 194.140.241.255 { 0xc28cf300, 0xc28cf8ff, REGISTRY_RIPENCC }, // 194.140.243.0 - 194.140.248.255 { 0xc28cfa00, 0xc28cffff, REGISTRY_RIPENCC }, // 194.140.250.0 - 194.140.255.255 { 0xc28d0000, 0xc28f7fff, REGISTRY_RIPENCC }, // 194.141.0.0 - 194.143.127.255 { 0xc28f8000, 0xc28f9fff, REGISTRY_RIPENCC }, // 194.143.128.0 - 194.143.159.255 { 0xc28fa000, 0xc2911fff, REGISTRY_RIPENCC }, // 194.143.160.0 - 194.145.31.255 { 0xc2912000, 0xc2913aff, REGISTRY_RIPENCC }, // 194.145.32.0 - 194.145.58.255 { 0xc2913b00, 0xc2913eff, REGISTRY_RIPENCC }, // 194.145.59.0 - 194.145.62.255 { 0xc2913f00, 0xc2916fff, REGISTRY_RIPENCC }, // 194.145.63.0 - 194.145.111.255 { 0xc2917200, 0xc29173ff, REGISTRY_RIPENCC }, // 194.145.114.0 - 194.145.115.255 { 0xc2917500, 0xc2917cff, REGISTRY_RIPENCC }, // 194.145.117.0 - 194.145.124.255 { 0xc2917e00, 0xc2917eff, REGISTRY_RIPENCC }, // 194.145.126.0 - 194.145.126.255 { 0xc2918000, 0xc29187ff, REGISTRY_RIPENCC }, // 194.145.128.0 - 194.145.135.255 { 0xc2918c00, 0xc2918dff, REGISTRY_RIPENCC }, // 194.145.140.0 - 194.145.141.255 { 0xc2919000, 0xc29197ff, REGISTRY_RIPENCC }, // 194.145.144.0 - 194.145.151.255 { 0xc2919900, 0xc2919aff, REGISTRY_RIPENCC }, // 194.145.153.0 - 194.145.154.255 { 0xc2919c00, 0xc291bfff, REGISTRY_RIPENCC }, // 194.145.156.0 - 194.145.191.255 { 0xc291c000, 0xc291c1ff, REGISTRY_RIPENCC }, // 194.145.192.0 - 194.145.193.255 { 0xc291c200, 0xc291cfff, REGISTRY_RIPENCC }, // 194.145.194.0 - 194.145.207.255 { 0xc291d000, 0xc291d1ff, REGISTRY_RIPENCC }, // 194.145.208.0 - 194.145.209.255 { 0xc291d600, 0xc291e3ff, REGISTRY_RIPENCC }, // 194.145.214.0 - 194.145.227.255 { 0xc291e400, 0xc291e4ff, REGISTRY_RIPENCC }, // 194.145.228.0 - 194.145.228.255 { 0xc291e500, 0xc291f3ff, REGISTRY_RIPENCC }, // 194.145.229.0 - 194.145.243.255 { 0xc291f400, 0xc291f7ff, REGISTRY_RIPENCC }, // 194.145.244.0 - 194.145.247.255 { 0xc291f800, 0xc291ffff, REGISTRY_RIPENCC }, // 194.145.248.0 - 194.145.255.255 { 0xc2921000, 0xc29216ff, REGISTRY_RIPENCC }, // 194.146.16.0 - 194.146.22.255 { 0xc2921b00, 0xc2921bff, REGISTRY_RIPENCC }, // 194.146.27.0 - 194.146.27.255 { 0xc2922500, 0xc29225ff, REGISTRY_RIPENCC }, // 194.146.37.0 - 194.146.37.255 { 0xc2922e00, 0xc2922eff, REGISTRY_RIPENCC }, // 194.146.46.0 - 194.146.46.255 { 0xc2923300, 0xc29233ff, REGISTRY_RIPENCC }, // 194.146.51.0 - 194.146.51.255 { 0xc2923600, 0xc29236ff, REGISTRY_RIPENCC }, // 194.146.54.0 - 194.146.54.255 { 0xc2923e00, 0xc2923eff, REGISTRY_RIPENCC }, // 194.146.62.0 - 194.146.62.255 { 0xc2924200, 0xc29245ff, REGISTRY_RIPENCC }, // 194.146.66.0 - 194.146.69.255 { 0xc2924700, 0xc29251ff, REGISTRY_RIPENCC }, // 194.146.71.0 - 194.146.81.255 { 0xc2925e00, 0xc29262ff, REGISTRY_RIPENCC }, // 194.146.94.0 - 194.146.98.255 { 0xc2926900, 0xc29271ff, REGISTRY_RIPENCC }, // 194.146.105.0 - 194.146.113.255 { 0xc2927300, 0xc29273ff, REGISTRY_RIPENCC }, // 194.146.115.0 - 194.146.115.255 { 0xc2927500, 0xc2927bff, REGISTRY_RIPENCC }, // 194.146.117.0 - 194.146.123.255 { 0xc2927d00, 0xc2927dff, REGISTRY_RIPENCC }, // 194.146.125.0 - 194.146.125.255 { 0xc2927f00, 0xc2927fff, REGISTRY_RIPENCC }, // 194.146.127.0 - 194.146.127.255 { 0xc2928000, 0xc29283ff, REGISTRY_RIPENCC }, // 194.146.128.0 - 194.146.131.255 { 0xc2928400, 0xc2929bff, REGISTRY_RIPENCC }, // 194.146.132.0 - 194.146.155.255 { 0xc292a000, 0xc292a3ff, REGISTRY_RIPENCC }, // 194.146.160.0 - 194.146.163.255 { 0xc292a800, 0xc292abff, REGISTRY_RIPENCC }, // 194.146.168.0 - 194.146.171.255 { 0xc292ac00, 0xc292afff, REGISTRY_RIPENCC }, // 194.146.172.0 - 194.146.175.255 { 0xc292b000, 0xc292bfff, REGISTRY_RIPENCC }, // 194.146.176.0 - 194.146.191.255 { 0xc292c400, 0xc292cbff, REGISTRY_RIPENCC }, // 194.146.196.0 - 194.146.203.255 { 0xc292d000, 0xc292dbff, REGISTRY_RIPENCC }, // 194.146.208.0 - 194.146.219.255 { 0xc292e000, 0xc292f7ff, REGISTRY_RIPENCC }, // 194.146.224.0 - 194.146.247.255 { 0xc292f800, 0xc292fbff, REGISTRY_RIPENCC }, // 194.146.248.0 - 194.146.251.255 { 0xc292fc00, 0xc292ffff, REGISTRY_RIPENCC }, // 194.146.252.0 - 194.146.255.255 { 0xc2931200, 0xc29315ff, REGISTRY_RIPENCC }, // 194.147.18.0 - 194.147.21.255 { 0xc2932d00, 0xc2932eff, REGISTRY_RIPENCC }, // 194.147.45.0 - 194.147.46.255 { 0xc2933400, 0xc29337ff, REGISTRY_RIPENCC }, // 194.147.52.0 - 194.147.55.255 { 0xc2934200, 0xc29342ff, REGISTRY_RIPENCC }, // 194.147.66.0 - 194.147.66.255 { 0xc2934400, 0xc29346ff, REGISTRY_RIPENCC }, // 194.147.68.0 - 194.147.70.255 { 0xc2934800, 0xc29349ff, REGISTRY_RIPENCC }, // 194.147.72.0 - 194.147.73.255 { 0xc2934c00, 0xc2934dff, REGISTRY_RIPENCC }, // 194.147.76.0 - 194.147.77.255 { 0xc2936000, 0xc29360ff, REGISTRY_RIPENCC }, // 194.147.96.0 - 194.147.96.255 { 0xc2936600, 0xc29368ff, REGISTRY_RIPENCC }, // 194.147.102.0 - 194.147.104.255 { 0xc2936c00, 0xc2936cff, REGISTRY_RIPENCC }, // 194.147.108.0 - 194.147.108.255 { 0xc2937000, 0xc29371ff, REGISTRY_RIPENCC }, // 194.147.112.0 - 194.147.113.255 { 0xc2938400, 0xc29384ff, REGISTRY_RIPENCC }, // 194.147.132.0 - 194.147.132.255 { 0xc2938500, 0xc29385ff, REGISTRY_RIPENCC }, // 194.147.133.0 - 194.147.133.255 { 0xc2938600, 0xc29387ff, REGISTRY_RIPENCC }, // 194.147.134.0 - 194.147.135.255 { 0xc2938d00, 0xc2938dff, REGISTRY_RIPENCC }, // 194.147.141.0 - 194.147.141.255 { 0xc2938f00, 0xc2938fff, REGISTRY_RIPENCC }, // 194.147.143.0 - 194.147.143.255 { 0xc2939700, 0xc29397ff, REGISTRY_RIPENCC }, // 194.147.151.0 - 194.147.151.255 { 0xc293a000, 0xc293a3ff, REGISTRY_RIPENCC }, // 194.147.160.0 - 194.147.163.255 { 0xc293a800, 0xc293a9ff, REGISTRY_RIPENCC }, // 194.147.168.0 - 194.147.169.255 { 0xc293ab00, 0xc293abff, REGISTRY_RIPENCC }, // 194.147.171.0 - 194.147.171.255 { 0xc293ad00, 0xc293adff, REGISTRY_RIPENCC }, // 194.147.173.0 - 194.147.173.255 { 0xc293b000, 0xc293e2ff, REGISTRY_RIPENCC }, // 194.147.176.0 - 194.147.226.255 { 0xc293e500, 0xc293e5ff, REGISTRY_RIPENCC }, // 194.147.229.0 - 194.147.229.255 { 0xc293e700, 0xc293edff, REGISTRY_RIPENCC }, // 194.147.231.0 - 194.147.237.255 { 0xc293f000, 0xc293f0ff, REGISTRY_RIPENCC }, // 194.147.240.0 - 194.147.240.255 { 0xc293f500, 0xc293f9ff, REGISTRY_RIPENCC }, // 194.147.245.0 - 194.147.249.255 { 0xc293fe00, 0xc293feff, REGISTRY_RIPENCC }, // 194.147.254.0 - 194.147.254.255 { 0xc2940000, 0xc29547ff, REGISTRY_RIPENCC }, // 194.148.0.0 - 194.149.71.255 { 0xc2954800, 0xc29558ff, REGISTRY_RIPENCC }, // 194.149.72.0 - 194.149.88.255 { 0xc2955a00, 0xc2955aff, REGISTRY_RIPENCC }, // 194.149.90.0 - 194.149.90.255 { 0xc2955c00, 0xc2955cff, REGISTRY_RIPENCC }, // 194.149.92.0 - 194.149.92.255 { 0xc2955e00, 0xc2955fff, REGISTRY_RIPENCC }, // 194.149.94.0 - 194.149.95.255 { 0xc2956000, 0xc295dfff, REGISTRY_RIPENCC }, // 194.149.96.0 - 194.149.223.255 { 0xc295e000, 0xc295e7ff, REGISTRY_RIPENCC }, // 194.149.224.0 - 194.149.231.255 { 0xc295e800, 0xc295e9ff, REGISTRY_RIPENCC }, // 194.149.232.0 - 194.149.233.255 { 0xc295ea00, 0xc295ffff, REGISTRY_RIPENCC }, // 194.149.234.0 - 194.149.255.255 { 0xc2960000, 0xc2963fff, REGISTRY_RIPENCC }, // 194.150.0.0 - 194.150.63.255 { 0xc2964000, 0xc29643ff, REGISTRY_RIPENCC }, // 194.150.64.0 - 194.150.67.255 { 0xc2964800, 0xc2964bff, REGISTRY_RIPENCC }, // 194.150.72.0 - 194.150.75.255 { 0xc2965000, 0xc2965bff, REGISTRY_RIPENCC }, // 194.150.80.0 - 194.150.91.255 { 0xc2966000, 0xc2966bff, REGISTRY_RIPENCC }, // 194.150.96.0 - 194.150.107.255 { 0xc2966c00, 0xc2966fff, REGISTRY_RIPENCC }, // 194.150.108.0 - 194.150.111.255 { 0xc2967000, 0xc29673ff, REGISTRY_RIPENCC }, // 194.150.112.0 - 194.150.115.255 { 0xc2967400, 0xc29677ff, REGISTRY_RIPENCC }, // 194.150.116.0 - 194.150.119.255 { 0xc2967800, 0xc2967bff, REGISTRY_RIPENCC }, // 194.150.120.0 - 194.150.123.255 { 0xc2968000, 0xc296b3ff, REGISTRY_RIPENCC }, // 194.150.128.0 - 194.150.179.255 { 0xc296b600, 0xc296cbff, REGISTRY_RIPENCC }, // 194.150.182.0 - 194.150.203.255 { 0xc296ce00, 0xc296cfff, REGISTRY_RIPENCC }, // 194.150.206.0 - 194.150.207.255 { 0xc296d000, 0xc296d5ff, REGISTRY_RIPENCC }, // 194.150.208.0 - 194.150.213.255 { 0xc296d800, 0xc296e3ff, REGISTRY_RIPENCC }, // 194.150.216.0 - 194.150.227.255 { 0xc296e400, 0xc296e5ff, REGISTRY_RIPENCC }, // 194.150.228.0 - 194.150.229.255 { 0xc296e600, 0xc296e9ff, REGISTRY_RIPENCC }, // 194.150.230.0 - 194.150.233.255 { 0xc296ec00, 0xc296ffff, REGISTRY_RIPENCC }, // 194.150.236.0 - 194.150.255.255 { 0xc2970000, 0xc2981fff, REGISTRY_RIPENCC }, // 194.151.0.0 - 194.152.31.255 { 0xc2982000, 0xc29839ff, REGISTRY_RIPENCC }, // 194.152.32.0 - 194.152.57.255 { 0xc2983c00, 0xc2983fff, REGISTRY_RIPENCC }, // 194.152.60.0 - 194.152.63.255 { 0xc2984000, 0xc2991fff, REGISTRY_RIPENCC }, // 194.152.64.0 - 194.153.31.255 { 0xc2992000, 0xc29947ff, REGISTRY_RIPENCC }, // 194.153.32.0 - 194.153.71.255 { 0xc2994a00, 0xc2994bff, REGISTRY_RIPENCC }, // 194.153.74.0 - 194.153.75.255 { 0xc2994e00, 0xc2994fff, REGISTRY_RIPENCC }, // 194.153.78.0 - 194.153.79.255 { 0xc2995100, 0xc29962ff, REGISTRY_RIPENCC }, // 194.153.81.0 - 194.153.98.255 { 0xc2996400, 0xc29965ff, REGISTRY_RIPENCC }, // 194.153.100.0 - 194.153.101.255 { 0xc2996800, 0xc29984ff, REGISTRY_RIPENCC }, // 194.153.104.0 - 194.153.132.255 { 0xc2998600, 0xc29986ff, REGISTRY_RIPENCC }, // 194.153.134.0 - 194.153.134.255 { 0xc2998700, 0xc29998ff, REGISTRY_RIPENCC }, // 194.153.135.0 - 194.153.152.255 { 0xc2999980, 0xc2999aff, REGISTRY_RIPENCC }, // 194.153.153.128 - 194.153.154.255 { 0xc2999c00, 0xc2999cff, REGISTRY_RIPENCC }, // 194.153.156.0 - 194.153.156.255 { 0xc2999d80, 0xc2999dff, REGISTRY_RIPENCC }, // 194.153.157.128 - 194.153.157.255 { 0xc2999e80, 0xc2999f7f, REGISTRY_RIPENCC }, // 194.153.158.128 - 194.153.159.127 { 0xc299a000, 0xc299a9ff, REGISTRY_RIPENCC }, // 194.153.160.0 - 194.153.169.255 { 0xc299ab00, 0xc299b8ff, REGISTRY_RIPENCC }, // 194.153.171.0 - 194.153.184.255 { 0xc299ba00, 0xc299bfff, REGISTRY_RIPENCC }, // 194.153.186.0 - 194.153.191.255 { 0xc299c000, 0xc299d5ff, REGISTRY_RIPENCC }, // 194.153.192.0 - 194.153.213.255 { 0xc299d600, 0xc299dfff, REGISTRY_RIPENCC }, // 194.153.214.0 - 194.153.223.255 { 0xc299e000, 0xc29bffff, REGISTRY_RIPENCC }, // 194.153.224.0 - 194.155.255.255 { 0xc29c0300, 0xc29c07ff, REGISTRY_RIPENCC }, // 194.156.3.0 - 194.156.7.255 { 0xc29c1800, 0xc29c19ff, REGISTRY_RIPENCC }, // 194.156.24.0 - 194.156.25.255 { 0xc29c2000, 0xc29c3fff, REGISTRY_RIPENCC }, // 194.156.32.0 - 194.156.63.255 { 0xc29c8000, 0xc29c83ff, REGISTRY_RIPENCC }, // 194.156.128.0 - 194.156.131.255 { 0xc29c8700, 0xc29c87ff, REGISTRY_RIPENCC }, // 194.156.135.0 - 194.156.135.255 { 0xc29c9100, 0xc29c94ff, REGISTRY_RIPENCC }, // 194.156.145.0 - 194.156.148.255 { 0xc29c9800, 0xc29c99ff, REGISTRY_RIPENCC }, // 194.156.152.0 - 194.156.153.255 { 0xc29ca100, 0xc29ca1ff, REGISTRY_RIPENCC }, // 194.156.161.0 - 194.156.161.255 { 0xc29ca500, 0xc29ca5ff, REGISTRY_RIPENCC }, // 194.156.165.0 - 194.156.165.255 { 0xc29ca800, 0xc29cacff, REGISTRY_RIPENCC }, // 194.156.168.0 - 194.156.172.255 { 0xc29cae00, 0xc29caeff, REGISTRY_RIPENCC }, // 194.156.174.0 - 194.156.174.255 { 0xc29cba00, 0xc29cbbff, REGISTRY_RIPENCC }, // 194.156.186.0 - 194.156.187.255 { 0xc29cbd00, 0xc29cbdff, REGISTRY_RIPENCC }, // 194.156.189.0 - 194.156.189.255 { 0xc29cc400, 0xc29cc5ff, REGISTRY_RIPENCC }, // 194.156.196.0 - 194.156.197.255 { 0xc29cca00, 0xc29ccbff, REGISTRY_RIPENCC }, // 194.156.202.0 - 194.156.203.255 { 0xc29cce00, 0xc29cceff, REGISTRY_RIPENCC }, // 194.156.206.0 - 194.156.206.255 { 0xc29cd000, 0xc29cd3ff, REGISTRY_RIPENCC }, // 194.156.208.0 - 194.156.211.255 { 0xc29cd800, 0xc29cdfff, REGISTRY_RIPENCC }, // 194.156.216.0 - 194.156.223.255 { 0xc29ce800, 0xc29ceaff, REGISTRY_RIPENCC }, // 194.156.232.0 - 194.156.234.255 { 0xc29cf000, 0xc29cf7ff, REGISTRY_RIPENCC }, // 194.156.240.0 - 194.156.247.255 { 0xc29d0000, 0xc2a4ffff, REGISTRY_RIPENCC }, // 194.157.0.0 - 194.164.255.255 { 0xc2a50000, 0xc2a503ff, REGISTRY_RIPENCC }, // 194.165.0.0 - 194.165.3.255 { 0xc2a50600, 0xc2a509ff, REGISTRY_RIPENCC }, // 194.165.6.0 - 194.165.9.255 { 0xc2a50c00, 0xc2a519ff, REGISTRY_RIPENCC }, // 194.165.12.0 - 194.165.25.255 { 0xc2a51c00, 0xc2a522ff, REGISTRY_RIPENCC }, // 194.165.28.0 - 194.165.34.255 { 0xc2a52400, 0xc2a525ff, REGISTRY_RIPENCC }, // 194.165.36.0 - 194.165.37.255 { 0xc2a52700, 0xc2a537ff, REGISTRY_RIPENCC }, // 194.165.39.0 - 194.165.55.255 { 0xc2a53900, 0xc2a539ff, REGISTRY_RIPENCC }, // 194.165.57.0 - 194.165.57.255 { 0xc2a53b00, 0xc2a53eff, REGISTRY_RIPENCC }, // 194.165.59.0 - 194.165.62.255 { 0xc2a53f00, 0xc2a8ffff, REGISTRY_RIPENCC }, // 194.165.63.0 - 194.168.255.255 { 0xc2a90000, 0xc2a92fff, REGISTRY_RIPENCC }, // 194.169.0.0 - 194.169.47.255 { 0xc2a93200, 0xc2a932ff, REGISTRY_RIPENCC }, // 194.169.50.0 - 194.169.50.255 { 0xc2a93400, 0xc2a934ff, REGISTRY_RIPENCC }, // 194.169.52.0 - 194.169.52.255 { 0xc2a94000, 0xc2a94fff, REGISTRY_RIPENCC }, // 194.169.64.0 - 194.169.79.255 { 0xc2a96000, 0xc2a977ff, REGISTRY_RIPENCC }, // 194.169.96.0 - 194.169.119.255 { 0xc2a97c00, 0xc2a99eff, REGISTRY_RIPENCC }, // 194.169.124.0 - 194.169.158.255 { 0xc2a9b700, 0xc2a9b7ff, REGISTRY_RIPENCC }, // 194.169.183.0 - 194.169.183.255 { 0xc2a9bf00, 0xc2a9c0ff, REGISTRY_RIPENCC }, // 194.169.191.0 - 194.169.192.255 { 0xc2a9c200, 0xc2a9c3ff, REGISTRY_RIPENCC }, // 194.169.194.0 - 194.169.195.255 { 0xc2a9c500, 0xc2a9d4ff, REGISTRY_RIPENCC }, // 194.169.197.0 - 194.169.212.255 { 0xc2a9d600, 0xc2a9deff, REGISTRY_RIPENCC }, // 194.169.214.0 - 194.169.222.255 { 0xc2a9e000, 0xc2a9e5ff, REGISTRY_RIPENCC }, // 194.169.224.0 - 194.169.229.255 { 0xc2a9e700, 0xc2a9ecff, REGISTRY_RIPENCC }, // 194.169.231.0 - 194.169.236.255 { 0xc2a9ee00, 0xc2a9f1ff, REGISTRY_RIPENCC }, // 194.169.238.0 - 194.169.241.255 { 0xc2a9f300, 0xc2a9f4ff, REGISTRY_RIPENCC }, // 194.169.243.0 - 194.169.244.255 { 0xc2a9f600, 0xc2a9fcff, REGISTRY_RIPENCC }, // 194.169.246.0 - 194.169.252.255 { 0xc2a9fe00, 0xc2a9ffff, REGISTRY_RIPENCC }, // 194.169.254.0 - 194.169.255.255 { 0xc2aa0000, 0xc2b05fff, REGISTRY_RIPENCC }, // 194.170.0.0 - 194.176.95.255 { 0xc2b06000, 0xc2b061ff, REGISTRY_RIPENCC }, // 194.176.96.0 - 194.176.97.255 { 0xc2b06400, 0xc2b06aff, REGISTRY_RIPENCC }, // 194.176.100.0 - 194.176.106.255 { 0xc2b06c00, 0xc2b074ff, REGISTRY_RIPENCC }, // 194.176.108.0 - 194.176.116.255 { 0xc2b07600, 0xc2b07aff, REGISTRY_RIPENCC }, // 194.176.118.0 - 194.176.122.255 { 0xc2b07c00, 0xc2b07cff, REGISTRY_RIPENCC }, // 194.176.124.0 - 194.176.124.255 { 0xc2b07d00, 0xc2b07dff, REGISTRY_RIPENCC }, // 194.176.125.0 - 194.176.125.255 { 0xc2b07e00, 0xc2b07eff, REGISTRY_RIPENCC }, // 194.176.126.0 - 194.176.126.255 { 0xc2b07f00, 0xc2b07fff, REGISTRY_RIPENCC }, // 194.176.127.0 - 194.176.127.255 { 0xc2b08000, 0xc2b0ffff, REGISTRY_RIPENCC }, // 194.176.128.0 - 194.176.255.255 { 0xc2b10000, 0xc2b113ff, REGISTRY_RIPENCC }, // 194.177.0.0 - 194.177.19.255 { 0xc2b11400, 0xc2b117ff, REGISTRY_RIPENCC }, // 194.177.20.0 - 194.177.23.255 { 0xc2b11800, 0xc2b11fff, REGISTRY_RIPENCC }, // 194.177.24.0 - 194.177.31.255 { 0xc2b12000, 0xc2b3ffff, REGISTRY_RIPENCC }, // 194.177.32.0 - 194.179.255.255 { 0xc2b40000, 0xc2b405ff, REGISTRY_RIPENCC }, // 194.180.0.0 - 194.180.5.255 { 0xc2b40d00, 0xc2b40fff, REGISTRY_RIPENCC }, // 194.180.13.0 - 194.180.15.255 { 0xc2b41100, 0xc2b412ff, REGISTRY_RIPENCC }, // 194.180.17.0 - 194.180.18.255 { 0xc2b41500, 0xc2b418ff, REGISTRY_RIPENCC }, // 194.180.21.0 - 194.180.24.255 { 0xc2b41c00, 0xc2b41fff, REGISTRY_RIPENCC }, // 194.180.28.0 - 194.180.31.255 { 0xc2b43500, 0xc2b436ff, REGISTRY_RIPENCC }, // 194.180.53.0 - 194.180.54.255 { 0xc2b43800, 0xc2b43bff, REGISTRY_RIPENCC }, // 194.180.56.0 - 194.180.59.255 { 0xc2b44000, 0xc2b467ff, REGISTRY_RIPENCC }, // 194.180.64.0 - 194.180.103.255 { 0xc2b46f00, 0xc2b472ff, REGISTRY_RIPENCC }, // 194.180.111.0 - 194.180.114.255 { 0xc2b47800, 0xc2b495ff, REGISTRY_RIPENCC }, // 194.180.120.0 - 194.180.149.255 { 0xc2b49700, 0xc2b499ff, REGISTRY_RIPENCC }, // 194.180.151.0 - 194.180.153.255 { 0xc2b49b00, 0xc2b49cff, REGISTRY_RIPENCC }, // 194.180.155.0 - 194.180.156.255 { 0xc2b49ff0, 0xc2b4a9ff, REGISTRY_RIPENCC }, // 194.180.159.240 - 194.180.169.255 { 0xc2b4ac00, 0xc2b4adff, REGISTRY_RIPENCC }, // 194.180.172.0 - 194.180.173.255 { 0xc2b4af00, 0xc2b4afff, REGISTRY_RIPENCC }, // 194.180.175.0 - 194.180.175.255 { 0xc2b4be00, 0xc2b4beff, REGISTRY_RIPENCC }, // 194.180.190.0 - 194.180.190.255 { 0xc2b4c000, 0xc2b4c4ff, REGISTRY_RIPENCC }, // 194.180.192.0 - 194.180.196.255 { 0xc2b4c600, 0xc2b4ccff, REGISTRY_RIPENCC }, // 194.180.198.0 - 194.180.204.255 { 0xc2b4cd00, 0xc2b4cdff, REGISTRY_RIPENCC }, // 194.180.205.0 - 194.180.205.255 { 0xc2b4d200, 0xc2b4d7ff, REGISTRY_RIPENCC }, // 194.180.210.0 - 194.180.215.255 { 0xc2b4d900, 0xc2b4daff, REGISTRY_RIPENCC }, // 194.180.217.0 - 194.180.218.255 { 0xc2b4e298, 0xc2b4e29f, REGISTRY_RIPENCC }, // 194.180.226.152 - 194.180.226.159 { 0xc2b4ea00, 0xc2b4ebff, REGISTRY_RIPENCC }, // 194.180.234.0 - 194.180.235.255 { 0xc2b4ef00, 0xc2b4faff, REGISTRY_RIPENCC }, // 194.180.239.0 - 194.180.250.255 { 0xc2b4fc00, 0xc2b4ffff, REGISTRY_RIPENCC }, // 194.180.252.0 - 194.180.255.255 { 0xc2b50000, 0xc2baffff, REGISTRY_RIPENCC }, // 194.181.0.0 - 194.186.255.255 { 0xc2bb0000, 0xc2bb17ff, REGISTRY_RIPENCC }, // 194.187.0.0 - 194.187.23.255 { 0xc2bb1c00, 0xc2bb23ff, REGISTRY_RIPENCC }, // 194.187.28.0 - 194.187.35.255 { 0xc2bb2800, 0xc2bb57ff, REGISTRY_RIPENCC }, // 194.187.40.0 - 194.187.87.255 { 0xc2bb5800, 0xc2bb5bff, REGISTRY_RIPENCC }, // 194.187.88.0 - 194.187.91.255 { 0xc2bb5c00, 0xc2bb77ff, REGISTRY_RIPENCC }, // 194.187.92.0 - 194.187.119.255 { 0xc2bb7c00, 0xc2bbb3ff, REGISTRY_RIPENCC }, // 194.187.124.0 - 194.187.179.255 { 0xc2bbb400, 0xc2bbb7ff, REGISTRY_RIPENCC }, // 194.187.180.0 - 194.187.183.255 { 0xc2bbb800, 0xc2bbbbff, REGISTRY_RIPENCC }, // 194.187.184.0 - 194.187.187.255 { 0xc2bbc000, 0xc2bbf7ff, REGISTRY_RIPENCC }, // 194.187.192.0 - 194.187.247.255 { 0xc2bbf800, 0xc2bbfbff, REGISTRY_RIPENCC }, // 194.187.248.0 - 194.187.251.255 { 0xc2bbfc00, 0xc2bbffff, REGISTRY_RIPENCC }, // 194.187.252.0 - 194.187.255.255 { 0xc2bc0000, 0xc2ccbfff, REGISTRY_RIPENCC }, // 194.188.0.0 - 194.204.191.255 { 0xc2ccc000, 0xc2ccffff, REGISTRY_AFRINIC }, // 194.204.192.0 - 194.204.255.255 { 0xc2cd0000, 0xc2d4ffff, REGISTRY_RIPENCC }, // 194.205.0.0 - 194.212.255.255 { 0xc2d50000, 0xc2d505ff, REGISTRY_RIPENCC }, // 194.213.0.0 - 194.213.5.255 { 0xc2d50600, 0xc2d506ff, REGISTRY_RIPENCC }, // 194.213.6.0 - 194.213.6.255 { 0xc2d50700, 0xc2d507ff, REGISTRY_RIPENCC }, // 194.213.7.0 - 194.213.7.255 { 0xc2d50900, 0xc2d509ff, REGISTRY_RIPENCC }, // 194.213.9.0 - 194.213.9.255 { 0xc2d50b00, 0xc2d50cff, REGISTRY_RIPENCC }, // 194.213.11.0 - 194.213.12.255 { 0xc2d50e00, 0xc2d510ff, REGISTRY_RIPENCC }, // 194.213.14.0 - 194.213.16.255 { 0xc2d51200, 0xc2d513ff, REGISTRY_RIPENCC }, // 194.213.18.0 - 194.213.19.255 { 0xc2d51500, 0xc2d517ff, REGISTRY_RIPENCC }, // 194.213.21.0 - 194.213.23.255 { 0xc2d51900, 0xc2d51fff, REGISTRY_RIPENCC }, // 194.213.25.0 - 194.213.31.255 { 0xc2d52000, 0xc2d55fff, REGISTRY_RIPENCC }, // 194.213.32.0 - 194.213.95.255 { 0xc2d56000, 0xc2d57fff, REGISTRY_RIPENCC }, // 194.213.96.0 - 194.213.127.255 { 0xc2d58000, 0xc2f1ffff, REGISTRY_RIPENCC }, // 194.213.128.0 - 194.241.255.255 { 0xc2f20000, 0xc2f201ff, REGISTRY_RIPENCC }, // 194.242.0.0 - 194.242.1.255 { 0xc2f20400, 0xc2f215ff, REGISTRY_RIPENCC }, // 194.242.4.0 - 194.242.21.255 { 0xc2f21800, 0xc2f21bff, REGISTRY_RIPENCC }, // 194.242.24.0 - 194.242.27.255 { 0xc2f21e00, 0xc2f225ff, REGISTRY_RIPENCC }, // 194.242.30.0 - 194.242.37.255 { 0xc2f22700, 0xc2f227ff, REGISTRY_RIPENCC }, // 194.242.39.0 - 194.242.39.255 { 0xc2f22800, 0xc2f228ff, REGISTRY_RIPENCC }, // 194.242.40.0 - 194.242.40.255 { 0xc2f22900, 0xc2f22cff, REGISTRY_RIPENCC }, // 194.242.41.0 - 194.242.44.255 { 0xc2f22f00, 0xc2f22fff, REGISTRY_RIPENCC }, // 194.242.47.0 - 194.242.47.255 { 0xc2f23200, 0xc2f237ff, REGISTRY_RIPENCC }, // 194.242.50.0 - 194.242.55.255 { 0xc2f23a00, 0xc2f23fff, REGISTRY_RIPENCC }, // 194.242.58.0 - 194.242.63.255 { 0xc2f24000, 0xc2f263ff, REGISTRY_RIPENCC }, // 194.242.64.0 - 194.242.99.255 { 0xc2f26400, 0xc2f27fff, REGISTRY_RIPENCC }, // 194.242.100.0 - 194.242.127.255 { 0xc2f28000, 0xc2f61fff, REGISTRY_RIPENCC }, // 194.242.128.0 - 194.246.31.255 { 0xc2f62760, 0xc2f627bf, REGISTRY_RIPENCC }, // 194.246.39.96 - 194.246.39.191 { 0xc2f627e0, 0xc2f627ff, REGISTRY_RIPENCC }, // 194.246.39.224 - 194.246.39.255 { 0xc2f62c00, 0xc2f64fff, REGISTRY_RIPENCC }, // 194.246.44.0 - 194.246.79.255 { 0xc2f65500, 0xc2f657ff, REGISTRY_RIPENCC }, // 194.246.85.0 - 194.246.87.255 { 0xc2f66000, 0xc2f663ff, REGISTRY_RIPENCC }, // 194.246.96.0 - 194.246.99.255 { 0xc2f66500, 0xc2f666ff, REGISTRY_RIPENCC }, // 194.246.101.0 - 194.246.102.255 { 0xc2f66800, 0xc2f71fff, REGISTRY_RIPENCC }, // 194.246.104.0 - 194.247.31.255 { 0xc2f72100, 0xc2f72aff, REGISTRY_RIPENCC }, // 194.247.33.0 - 194.247.42.255 { 0xc2f72e00, 0xc2f739ff, REGISTRY_RIPENCC }, // 194.247.46.0 - 194.247.57.255 { 0xc2f73b00, 0xc2f73fff, REGISTRY_RIPENCC }, // 194.247.59.0 - 194.247.63.255 { 0xc2f74000, 0xc2f79fff, REGISTRY_RIPENCC }, // 194.247.64.0 - 194.247.159.255 { 0xc2f7a000, 0xc2f7a9ff, REGISTRY_RIPENCC }, // 194.247.160.0 - 194.247.169.255 { 0xc2f7aa00, 0xc2f7abff, REGISTRY_RIPENCC }, // 194.247.170.0 - 194.247.171.255 { 0xc2f7ac00, 0xc2f7b5ff, REGISTRY_RIPENCC }, // 194.247.172.0 - 194.247.181.255 { 0xc2f7b800, 0xc2f7b9ff, REGISTRY_RIPENCC }, // 194.247.184.0 - 194.247.185.255 { 0xc2f7bc00, 0xc2f7bfff, REGISTRY_RIPENCC }, // 194.247.188.0 - 194.247.191.255 { 0xc2f7c000, 0xc302bfff, REGISTRY_RIPENCC }, // 194.247.192.0 - 195.2.191.255 { 0xc302c000, 0xc302d3ff, REGISTRY_RIPENCC }, // 195.2.192.0 - 195.2.211.255 { 0xc302d600, 0xc302efff, REGISTRY_RIPENCC }, // 195.2.214.0 - 195.2.239.255 { 0xc302f000, 0xc302f1ff, REGISTRY_RIPENCC }, // 195.2.240.0 - 195.2.241.255 { 0xc302f400, 0xc302ffff, REGISTRY_RIPENCC }, // 195.2.244.0 - 195.2.255.255 { 0xc3030000, 0xc3037fff, REGISTRY_RIPENCC }, // 195.3.0.0 - 195.3.127.255 { 0xc3038000, 0xc30387ff, REGISTRY_RIPENCC }, // 195.3.128.0 - 195.3.135.255 { 0xc3038c00, 0xc303abff, REGISTRY_RIPENCC }, // 195.3.140.0 - 195.3.171.255 { 0xc303ac00, 0xc303afff, REGISTRY_RIPENCC }, // 195.3.172.0 - 195.3.175.255 { 0xc303b000, 0xc303e7ff, REGISTRY_RIPENCC }, // 195.3.176.0 - 195.3.231.255 { 0xc303e800, 0xc303ebff, REGISTRY_RIPENCC }, // 195.3.232.0 - 195.3.235.255 { 0xc303ec00, 0xc303ffff, REGISTRY_RIPENCC }, // 195.3.236.0 - 195.3.255.255 { 0xc3040000, 0xc3055fff, REGISTRY_RIPENCC }, // 195.4.0.0 - 195.5.95.255 { 0xc3056200, 0xc30577ff, REGISTRY_RIPENCC }, // 195.5.98.0 - 195.5.119.255 { 0xc3057800, 0xc30579ff, REGISTRY_RIPENCC }, // 195.5.120.0 - 195.5.121.255 { 0xc3057a00, 0xc3057fff, REGISTRY_RIPENCC }, // 195.5.122.0 - 195.5.127.255 { 0xc3058000, 0xc3059fff, REGISTRY_RIPENCC }, // 195.5.128.0 - 195.5.159.255 { 0xc305a000, 0xc305a0ff, REGISTRY_RIPENCC }, // 195.5.160.0 - 195.5.160.255 { 0xc305a200, 0xc305a7ff, REGISTRY_RIPENCC }, // 195.5.162.0 - 195.5.167.255 { 0xc305a900, 0xc305a9ff, REGISTRY_RIPENCC }, // 195.5.169.0 - 195.5.169.255 { 0xc305ab00, 0xc305afff, REGISTRY_RIPENCC }, // 195.5.171.0 - 195.5.175.255 { 0xc305b100, 0xc305bfff, REGISTRY_RIPENCC }, // 195.5.177.0 - 195.5.191.255 { 0xc305c000, 0xc306ffff, REGISTRY_RIPENCC }, // 195.5.192.0 - 195.6.255.255 { 0xc3071000, 0xc3071fff, REGISTRY_RIPENCC }, // 195.7.16.0 - 195.7.31.255 { 0xc3072000, 0xc3081fff, REGISTRY_RIPENCC }, // 195.7.32.0 - 195.8.31.255 { 0xc3082000, 0xc3082fff, REGISTRY_RIPENCC }, // 195.8.32.0 - 195.8.47.255 { 0xc3083200, 0xc3083fff, REGISTRY_RIPENCC }, // 195.8.50.0 - 195.8.63.255 { 0xc3084000, 0xc3085fff, REGISTRY_RIPENCC }, // 195.8.64.0 - 195.8.95.255 { 0xc3086000, 0xc30865ff, REGISTRY_RIPENCC }, // 195.8.96.0 - 195.8.101.255 { 0xc3086700, 0xc3086dff, REGISTRY_RIPENCC }, // 195.8.103.0 - 195.8.109.255 { 0xc3086f00, 0xc3086fff, REGISTRY_RIPENCC }, // 195.8.111.0 - 195.8.111.255 { 0xc3087100, 0xc30871ff, REGISTRY_RIPENCC }, // 195.8.113.0 - 195.8.113.255 { 0xc3087300, 0xc30875ff, REGISTRY_RIPENCC }, // 195.8.115.0 - 195.8.117.255 { 0xc3087800, 0xc3087fff, REGISTRY_RIPENCC }, // 195.8.120.0 - 195.8.127.255 { 0xc3088000, 0xc308bfff, REGISTRY_RIPENCC }, // 195.8.128.0 - 195.8.191.255 { 0xc308c000, 0xc308c3ff, REGISTRY_RIPENCC }, // 195.8.192.0 - 195.8.195.255 { 0xc308c400, 0xc308c5ff, REGISTRY_RIPENCC }, // 195.8.196.0 - 195.8.197.255 { 0xc308c600, 0xc308dfff, REGISTRY_RIPENCC }, // 195.8.198.0 - 195.8.223.255 { 0xc308e000, 0xc30abfff, REGISTRY_RIPENCC }, // 195.8.224.0 - 195.10.191.255 { 0xc30ac000, 0xc30ad0ff, REGISTRY_RIPENCC }, // 195.10.192.0 - 195.10.208.255 { 0xc30ad200, 0xc30ad6ff, REGISTRY_RIPENCC }, // 195.10.210.0 - 195.10.214.255 { 0xc30ad800, 0xc30ad9ff, REGISTRY_RIPENCC }, // 195.10.216.0 - 195.10.217.255 { 0xc30ada00, 0xc30adaff, REGISTRY_RIPENCC }, // 195.10.218.0 - 195.10.218.255 { 0xc30adc00, 0xc30addff, REGISTRY_RIPENCC }, // 195.10.220.0 - 195.10.221.255 { 0xc30adf00, 0xc30adfff, REGISTRY_RIPENCC }, // 195.10.223.0 - 195.10.223.255 { 0xc30ae000, 0xc30c1fff, REGISTRY_RIPENCC }, // 195.10.224.0 - 195.12.31.255 { 0xc30c2000, 0xc30c2fff, REGISTRY_RIPENCC }, // 195.12.32.0 - 195.12.47.255 { 0xc30c3000, 0xc30c33ff, REGISTRY_RIPENCC }, // 195.12.48.0 - 195.12.51.255 { 0xc30c3400, 0xc30c3fff, REGISTRY_RIPENCC }, // 195.12.52.0 - 195.12.63.255 { 0xc30c4000, 0xc30d1fff, REGISTRY_RIPENCC }, // 195.12.64.0 - 195.13.31.255 { 0xc30d2000, 0xc30d257f, REGISTRY_RIPENCC }, // 195.13.32.0 - 195.13.37.127 { 0xc30d2600, 0xc30d2bff, REGISTRY_RIPENCC }, // 195.13.38.0 - 195.13.43.255 { 0xc30d2e00, 0xc30d2eff, REGISTRY_RIPENCC }, // 195.13.46.0 - 195.13.46.255 { 0xc30d3000, 0xc30d35ff, REGISTRY_RIPENCC }, // 195.13.48.0 - 195.13.53.255 { 0xc30d3800, 0xc30d3fff, REGISTRY_RIPENCC }, // 195.13.56.0 - 195.13.63.255 { 0xc30d4000, 0xc30dffff, REGISTRY_RIPENCC }, // 195.13.64.0 - 195.13.255.255 { 0xc30e0000, 0xc30e06ff, REGISTRY_RIPENCC }, // 195.14.0.0 - 195.14.6.255 { 0xc30e0800, 0xc30e09ff, REGISTRY_RIPENCC }, // 195.14.8.0 - 195.14.9.255 { 0xc30e0b00, 0xc30e11ff, REGISTRY_RIPENCC }, // 195.14.11.0 - 195.14.17.255 { 0xc30e1300, 0xc30e17ff, REGISTRY_RIPENCC }, // 195.14.19.0 - 195.14.23.255 { 0xc30e1900, 0xc30e19ff, REGISTRY_RIPENCC }, // 195.14.25.0 - 195.14.25.255 { 0xc30e1c00, 0xc30e1fff, REGISTRY_RIPENCC }, // 195.14.28.0 - 195.14.31.255 { 0xc30e2000, 0xc30e5fff, REGISTRY_RIPENCC }, // 195.14.32.0 - 195.14.95.255 { 0xc30e6000, 0xc30e6fff, REGISTRY_RIPENCC }, // 195.14.96.0 - 195.14.111.255 { 0xc30e7200, 0xc30e7fff, REGISTRY_RIPENCC }, // 195.14.114.0 - 195.14.127.255 { 0xc30e8000, 0xc3103fff, REGISTRY_RIPENCC }, // 195.14.128.0 - 195.16.63.255 { 0xc3104400, 0xc31057ff, REGISTRY_RIPENCC }, // 195.16.68.0 - 195.16.87.255 { 0xc3105800, 0xc3105bff, REGISTRY_RIPENCC }, // 195.16.88.0 - 195.16.91.255 { 0xc3105c00, 0xc3105fff, REGISTRY_RIPENCC }, // 195.16.92.0 - 195.16.95.255 { 0xc3106000, 0xc311ffff, REGISTRY_RIPENCC }, // 195.16.96.0 - 195.17.255.255 { 0xc3120400, 0xc3121fff, REGISTRY_RIPENCC }, // 195.18.4.0 - 195.18.31.255 { 0xc3122000, 0xc313ffff, REGISTRY_RIPENCC }, // 195.18.32.0 - 195.19.255.255 { 0xc3140000, 0xc31413ff, REGISTRY_RIPENCC }, // 195.20.0.0 - 195.20.19.255 { 0xc3141800, 0xc3141fff, REGISTRY_RIPENCC }, // 195.20.24.0 - 195.20.31.255 { 0xc3142000, 0xc3145fff, REGISTRY_RIPENCC }, // 195.20.32.0 - 195.20.95.255 { 0xc3146000, 0xc31461ff, REGISTRY_RIPENCC }, // 195.20.96.0 - 195.20.97.255 { 0xc3146400, 0xc31467ff, REGISTRY_RIPENCC }, // 195.20.100.0 - 195.20.103.255 { 0xc3146a00, 0xc31479ff, REGISTRY_RIPENCC }, // 195.20.106.0 - 195.20.121.255 { 0xc3147b00, 0xc3148cff, REGISTRY_RIPENCC }, // 195.20.123.0 - 195.20.140.255 { 0xc3148e00, 0xc3148eff, REGISTRY_RIPENCC }, // 195.20.142.0 - 195.20.142.255 { 0xc3149000, 0xc3149fff, REGISTRY_RIPENCC }, // 195.20.144.0 - 195.20.159.255 { 0xc314a000, 0xc314bfff, REGISTRY_RIPENCC }, // 195.20.160.0 - 195.20.191.255 { 0xc314c000, 0xc314dfff, REGISTRY_RIPENCC }, // 195.20.192.0 - 195.20.223.255 { 0xc314e000, 0xc3165fff, REGISTRY_RIPENCC }, // 195.20.224.0 - 195.22.95.255 { 0xc3166000, 0xc31679ff, REGISTRY_RIPENCC }, // 195.22.96.0 - 195.22.121.255 { 0xc3167b00, 0xc31693ff, REGISTRY_RIPENCC }, // 195.22.123.0 - 195.22.147.255 { 0xc3169600, 0xc31697ff, REGISTRY_RIPENCC }, // 195.22.150.0 - 195.22.151.255 { 0xc3169a00, 0xc3169bff, REGISTRY_RIPENCC }, // 195.22.154.0 - 195.22.155.255 { 0xc3169e00, 0xc3169fff, REGISTRY_RIPENCC }, // 195.22.158.0 - 195.22.159.255 { 0xc316a000, 0xc3183fff, REGISTRY_RIPENCC }, // 195.22.160.0 - 195.24.63.255 { 0xc3184000, 0xc3184fff, REGISTRY_RIPENCC }, // 195.24.64.0 - 195.24.79.255 { 0xc3185000, 0xc31857ff, REGISTRY_AFRINIC }, // 195.24.80.0 - 195.24.87.255 { 0xc3185800, 0xc3185fff, REGISTRY_RIPENCC }, // 195.24.88.0 - 195.24.95.255 { 0xc3186000, 0xc318bfff, REGISTRY_RIPENCC }, // 195.24.96.0 - 195.24.191.255 { 0xc318c000, 0xc318dfff, REGISTRY_AFRINIC }, // 195.24.192.0 - 195.24.223.255 { 0xc318e000, 0xc318ffff, REGISTRY_RIPENCC }, // 195.24.224.0 - 195.24.255.255 { 0xc3190000, 0xc319ffff, REGISTRY_RIPENCC }, // 195.25.0.0 - 195.25.255.255 { 0xc31a0000, 0xc31a05ff, REGISTRY_RIPENCC }, // 195.26.0.0 - 195.26.5.255 { 0xc31a0a00, 0xc31a0bff, REGISTRY_RIPENCC }, // 195.26.10.0 - 195.26.11.255 { 0xc31a0c00, 0xc31a1fff, REGISTRY_RIPENCC }, // 195.26.12.0 - 195.26.31.255 { 0xc31a2000, 0xc31a3fff, REGISTRY_RIPENCC }, // 195.26.32.0 - 195.26.63.255 { 0xc31a4000, 0xc31a43ff, REGISTRY_RIPENCC }, // 195.26.64.0 - 195.26.67.255 { 0xc31a4800, 0xc31a5fff, REGISTRY_RIPENCC }, // 195.26.72.0 - 195.26.95.255 { 0xc31a6000, 0xc31bffff, REGISTRY_RIPENCC }, // 195.26.96.0 - 195.27.255.255 { 0xc31c0000, 0xc31c05ff, REGISTRY_RIPENCC }, // 195.28.0.0 - 195.28.5.255 { 0xc31c0800, 0xc31c09ff, REGISTRY_RIPENCC }, // 195.28.8.0 - 195.28.9.255 { 0xc31c0c00, 0xc31c1fff, REGISTRY_RIPENCC }, // 195.28.12.0 - 195.28.31.255 { 0xc31c2000, 0xc31c9fff, REGISTRY_RIPENCC }, // 195.28.32.0 - 195.28.159.255 { 0xc31ca000, 0xc31ca7ff, REGISTRY_RIPENCC }, // 195.28.160.0 - 195.28.167.255 { 0xc31caa00, 0xc31cb1ff, REGISTRY_RIPENCC }, // 195.28.170.0 - 195.28.177.255 { 0xc31cb400, 0xc31cb5ff, REGISTRY_RIPENCC }, // 195.28.180.0 - 195.28.181.255 { 0xc31cb600, 0xc31cbfff, REGISTRY_RIPENCC }, // 195.28.182.0 - 195.28.191.255 { 0xc31cc000, 0xc3223fff, REGISTRY_RIPENCC }, // 195.28.192.0 - 195.34.63.255 { 0xc3224000, 0xc32241ff, REGISTRY_RIPENCC }, // 195.34.64.0 - 195.34.65.255 { 0xc3224400, 0xc32245ff, REGISTRY_RIPENCC }, // 195.34.68.0 - 195.34.69.255 { 0xc3224800, 0xc3225fff, REGISTRY_RIPENCC }, // 195.34.72.0 - 195.34.95.255 { 0xc3226000, 0xc322bfff, REGISTRY_RIPENCC }, // 195.34.96.0 - 195.34.191.255 { 0xc322c000, 0xc322c7ff, REGISTRY_RIPENCC }, // 195.34.192.0 - 195.34.199.255 { 0xc322cc00, 0xc322dfff, REGISTRY_RIPENCC }, // 195.34.204.0 - 195.34.223.255 { 0xc322e000, 0xc3233fff, REGISTRY_RIPENCC }, // 195.34.224.0 - 195.35.63.255 { 0xc3234000, 0xc32342ff, REGISTRY_RIPENCC }, // 195.35.64.0 - 195.35.66.255 { 0xc3234400, 0xc32354ff, REGISTRY_RIPENCC }, // 195.35.68.0 - 195.35.84.255 { 0xc3235500, 0xc32355ff, REGISTRY_RIPENCC }, // 195.35.85.0 - 195.35.85.255 { 0xc3235600, 0xc32360ff, REGISTRY_RIPENCC }, // 195.35.86.0 - 195.35.96.255 { 0xc3236300, 0xc32365ff, REGISTRY_RIPENCC }, // 195.35.99.0 - 195.35.101.255 { 0xc3236700, 0xc32367ff, REGISTRY_RIPENCC }, // 195.35.103.0 - 195.35.103.255 { 0xc3236820, 0xc32375ff, REGISTRY_RIPENCC }, // 195.35.104.32 - 195.35.117.255 { 0xc3237800, 0xc3237fff, REGISTRY_RIPENCC }, // 195.35.120.0 - 195.35.127.255 { 0xc3238000, 0xc325ffff, REGISTRY_RIPENCC }, // 195.35.128.0 - 195.37.255.255 { 0xc3260c00, 0xc32614ff, REGISTRY_RIPENCC }, // 195.38.12.0 - 195.38.20.255 { 0xc3261600, 0xc3261fff, REGISTRY_RIPENCC }, // 195.38.22.0 - 195.38.31.255 { 0xc3262000, 0xc327bfff, REGISTRY_RIPENCC }, // 195.38.32.0 - 195.39.191.255 { 0xc327c000, 0xc327c1ff, REGISTRY_RIPENCC }, // 195.39.192.0 - 195.39.193.255 { 0xc327c400, 0xc327c7ff, REGISTRY_RIPENCC }, // 195.39.196.0 - 195.39.199.255 { 0xc327c800, 0xc327c9ff, REGISTRY_RIPENCC }, // 195.39.200.0 - 195.39.201.255 { 0xc327ce00, 0xc327d5ff, REGISTRY_RIPENCC }, // 195.39.206.0 - 195.39.213.255 { 0xc327d800, 0xc327d9ff, REGISTRY_RIPENCC }, // 195.39.216.0 - 195.39.217.255 { 0xc327da00, 0xc327dbff, REGISTRY_AFRINIC }, // 195.39.218.0 - 195.39.219.255 { 0xc327de00, 0xc327edff, REGISTRY_RIPENCC }, // 195.39.222.0 - 195.39.237.255 { 0xc327ef00, 0xc327f5ff, REGISTRY_RIPENCC }, // 195.39.239.0 - 195.39.245.255 { 0xc327f800, 0xc327f9ff, REGISTRY_RIPENCC }, // 195.39.248.0 - 195.39.249.255 { 0xc327fe00, 0xc327ffff, REGISTRY_RIPENCC }, // 195.39.254.0 - 195.39.255.255 { 0xc3280000, 0xc329ffff, REGISTRY_RIPENCC }, // 195.40.0.0 - 195.41.255.255 { 0xc32a0000, 0xc32a3fff, REGISTRY_RIPENCC }, // 195.42.0.0 - 195.42.63.255 { 0xc32a4000, 0xc32a5fff, REGISTRY_RIPENCC }, // 195.42.64.0 - 195.42.95.255 { 0xc32a6000, 0xc32a9dff, REGISTRY_RIPENCC }, // 195.42.96.0 - 195.42.157.255 { 0xc32aa000, 0xc32ae5ff, REGISTRY_RIPENCC }, // 195.42.160.0 - 195.42.229.255 { 0xc32ae600, 0xc32ae7ff, REGISTRY_RIPENCC }, // 195.42.230.0 - 195.42.231.255 { 0xc32aec00, 0xc32aefff, REGISTRY_RIPENCC }, // 195.42.236.0 - 195.42.239.255 { 0xc32af900, 0xc32affff, REGISTRY_RIPENCC }, // 195.42.249.0 - 195.42.255.255 { 0xc32b0000, 0xc32b1fff, REGISTRY_AFRINIC }, // 195.43.0.0 - 195.43.31.255 { 0xc32b2000, 0xc32b23ff, REGISTRY_RIPENCC }, // 195.43.32.0 - 195.43.35.255 { 0xc32b2400, 0xc32b27ff, REGISTRY_RIPENCC }, // 195.43.36.0 - 195.43.39.255 { 0xc32b2800, 0xc32b4fff, REGISTRY_RIPENCC }, // 195.43.40.0 - 195.43.79.255 { 0xc32b5200, 0xc32b5dff, REGISTRY_RIPENCC }, // 195.43.82.0 - 195.43.93.255 { 0xc32b5e00, 0xc32b7fff, REGISTRY_RIPENCC }, // 195.43.94.0 - 195.43.127.255 { 0xc32b8100, 0xc32b9fff, REGISTRY_RIPENCC }, // 195.43.129.0 - 195.43.159.255 { 0xc32ba000, 0xc32e1fff, REGISTRY_RIPENCC }, // 195.43.160.0 - 195.46.31.255 { 0xc32e2000, 0xc32e3bff, REGISTRY_RIPENCC }, // 195.46.32.0 - 195.46.59.255 { 0xc32e3c00, 0xc32fbfff, REGISTRY_RIPENCC }, // 195.46.60.0 - 195.47.191.255 { 0xc32fc000, 0xc32fd1ff, REGISTRY_RIPENCC }, // 195.47.192.0 - 195.47.209.255 { 0xc32fd300, 0xc32fd3ff, REGISTRY_RIPENCC }, // 195.47.211.0 - 195.47.211.255 { 0xc32fd500, 0xc32fd7ff, REGISTRY_RIPENCC }, // 195.47.213.0 - 195.47.215.255 { 0xc32fd900, 0xc32fd9ff, REGISTRY_RIPENCC }, // 195.47.217.0 - 195.47.217.255 { 0xc32fdb00, 0xc32fe5ff, REGISTRY_RIPENCC }, // 195.47.219.0 - 195.47.229.255 { 0xc32fe700, 0xc32feeff, REGISTRY_RIPENCC }, // 195.47.231.0 - 195.47.238.255 { 0xc32ff000, 0xc32ff1ff, REGISTRY_RIPENCC }, // 195.47.240.0 - 195.47.241.255 { 0xc32ff300, 0xc32ff9ff, REGISTRY_RIPENCC }, // 195.47.243.0 - 195.47.249.255 { 0xc32ffb00, 0xc32fffff, REGISTRY_RIPENCC }, // 195.47.251.0 - 195.47.255.255 { 0xc3300000, 0xc3317fff, REGISTRY_RIPENCC }, // 195.48.0.0 - 195.49.127.255 { 0xc3318400, 0xc3318fff, REGISTRY_RIPENCC }, // 195.49.132.0 - 195.49.143.255 { 0xc3319000, 0xc33193ff, REGISTRY_RIPENCC }, // 195.49.144.0 - 195.49.147.255 { 0xc3319400, 0xc331afff, REGISTRY_RIPENCC }, // 195.49.148.0 - 195.49.175.255 { 0xc331b000, 0xc331b3ff, REGISTRY_RIPENCC }, // 195.49.176.0 - 195.49.179.255 { 0xc331b400, 0xc331e7ff, REGISTRY_RIPENCC }, // 195.49.180.0 - 195.49.231.255 { 0xc331f000, 0xc331ffff, REGISTRY_RIPENCC }, // 195.49.240.0 - 195.49.255.255 { 0xc3320000, 0xc3361fff, REGISTRY_RIPENCC }, // 195.50.0.0 - 195.54.31.255 { 0xc3362000, 0xc33635ff, REGISTRY_RIPENCC }, // 195.54.32.0 - 195.54.53.255 { 0xc3363600, 0xc33637ff, REGISTRY_RIPENCC }, // 195.54.54.0 - 195.54.55.255 { 0xc3363800, 0xc3363fff, REGISTRY_RIPENCC }, // 195.54.56.0 - 195.54.63.255 { 0xc3364000, 0xc3369fff, REGISTRY_RIPENCC }, // 195.54.64.0 - 195.54.159.255 { 0xc336a200, 0xc336a5ff, REGISTRY_RIPENCC }, // 195.54.162.0 - 195.54.165.255 { 0xc336a800, 0xc336a9ff, REGISTRY_RIPENCC }, // 195.54.168.0 - 195.54.169.255 { 0xc336ac00, 0xc336adff, REGISTRY_RIPENCC }, // 195.54.172.0 - 195.54.173.255 { 0xc336b000, 0xc336bfff, REGISTRY_RIPENCC }, // 195.54.176.0 - 195.54.191.255 { 0xc336c000, 0xc33c3fff, REGISTRY_RIPENCC }, // 195.54.192.0 - 195.60.63.255 { 0xc33c4000, 0xc33c4fff, REGISTRY_RIPENCC }, // 195.60.64.0 - 195.60.79.255 { 0xc33c5060, 0xc33c517f, REGISTRY_RIPENCC }, // 195.60.80.96 - 195.60.81.127 { 0xc33c51c0, 0xc33c531f, REGISTRY_RIPENCC }, // 195.60.81.192 - 195.60.83.31 { 0xc33c5340, 0xc33c547f, REGISTRY_RIPENCC }, // 195.60.83.64 - 195.60.84.127 { 0xc33c5500, 0xc33c557f, REGISTRY_RIPENCC }, // 195.60.85.0 - 195.60.85.127 { 0xc33c5600, 0xc33c57ff, REGISTRY_RIPENCC }, // 195.60.86.0 - 195.60.87.255 { 0xc33c5880, 0xc33c5b7f, REGISTRY_RIPENCC }, // 195.60.88.128 - 195.60.91.127 { 0xc33c5c00, 0xc33c5d3f, REGISTRY_RIPENCC }, // 195.60.92.0 - 195.60.93.63 { 0xc33c5d80, 0xc33c5e7f, REGISTRY_RIPENCC }, // 195.60.93.128 - 195.60.94.127 { 0xc33c5f00, 0xc33c5fff, REGISTRY_RIPENCC }, // 195.60.95.0 - 195.60.95.255 { 0xc33c6000, 0xc33c9fff, REGISTRY_RIPENCC }, // 195.60.96.0 - 195.60.159.255 { 0xc33ca000, 0xc33ca5ff, REGISTRY_RIPENCC }, // 195.60.160.0 - 195.60.165.255 { 0xc33ca800, 0xc33cabff, REGISTRY_RIPENCC }, // 195.60.168.0 - 195.60.171.255 { 0xc33cae00, 0xc33cafff, REGISTRY_RIPENCC }, // 195.60.174.0 - 195.60.175.255 { 0xc33cb200, 0xc33ccbff, REGISTRY_RIPENCC }, // 195.60.178.0 - 195.60.203.255 { 0xc33cd000, 0xc33cd3ff, REGISTRY_RIPENCC }, // 195.60.208.0 - 195.60.211.255 { 0xc33cd400, 0xc33cffff, REGISTRY_RIPENCC }, // 195.60.212.0 - 195.60.255.255 { 0xc33d0000, 0xc33dffff, REGISTRY_RIPENCC }, // 195.61.0.0 - 195.61.255.255 { 0xc33e0000, 0xc33e13ff, REGISTRY_RIPENCC }, // 195.62.0.0 - 195.62.19.255 { 0xc33e1400, 0xc33e15ff, REGISTRY_RIPENCC }, // 195.62.20.0 - 195.62.21.255 { 0xc33e1800, 0xc33e55ff, REGISTRY_RIPENCC }, // 195.62.24.0 - 195.62.85.255 { 0xc33e5800, 0xc33e5fff, REGISTRY_RIPENCC }, // 195.62.88.0 - 195.62.95.255 { 0xc33e6000, 0xc3407fff, REGISTRY_RIPENCC }, // 195.62.96.0 - 195.64.127.255 { 0xc3408200, 0xc3408dff, REGISTRY_RIPENCC }, // 195.64.130.0 - 195.64.141.255 { 0xc3408e00, 0xc3408fff, REGISTRY_RIPENCC }, // 195.64.142.0 - 195.64.143.255 { 0xc3409000, 0xc34097ff, REGISTRY_RIPENCC }, // 195.64.144.0 - 195.64.151.255 { 0xc3409a00, 0xc340a7ff, REGISTRY_RIPENCC }, // 195.64.154.0 - 195.64.167.255 { 0xc340aa00, 0xc340bfff, REGISTRY_RIPENCC }, // 195.64.170.0 - 195.64.191.255 { 0xc340c000, 0xc34207ff, REGISTRY_RIPENCC }, // 195.64.192.0 - 195.66.7.255 { 0xc3420800, 0xc3421fff, REGISTRY_RIPENCC }, // 195.66.8.0 - 195.66.31.255 { 0xc3422000, 0xc3423fff, REGISTRY_RIPENCC }, // 195.66.32.0 - 195.66.63.255 { 0xc3424000, 0xc34256ff, REGISTRY_RIPENCC }, // 195.66.64.0 - 195.66.86.255 { 0xc3425800, 0xc34267ff, REGISTRY_RIPENCC }, // 195.66.88.0 - 195.66.103.255 { 0xc3426900, 0xc34271ff, REGISTRY_RIPENCC }, // 195.66.105.0 - 195.66.113.255 { 0xc3427300, 0xc34277ff, REGISTRY_RIPENCC }, // 195.66.115.0 - 195.66.119.255 { 0xc3427900, 0xc34297ff, REGISTRY_RIPENCC }, // 195.66.121.0 - 195.66.151.255 { 0xc3429a00, 0xc3429fff, REGISTRY_RIPENCC }, // 195.66.154.0 - 195.66.159.255 { 0xc342a000, 0xc344bfff, REGISTRY_RIPENCC }, // 195.66.160.0 - 195.68.191.255 { 0xc344c000, 0xc344d9ff, REGISTRY_RIPENCC }, // 195.68.192.0 - 195.68.217.255 { 0xc344dc00, 0xc344dfff, REGISTRY_RIPENCC }, // 195.68.220.0 - 195.68.223.255 { 0xc344e400, 0xc344f7ff, REGISTRY_RIPENCC }, // 195.68.228.0 - 195.68.247.255 { 0xc344fa00, 0xc344fdff, REGISTRY_RIPENCC }, // 195.68.250.0 - 195.68.253.255 { 0xc3450000, 0xc34563ff, REGISTRY_RIPENCC }, // 195.69.0.0 - 195.69.99.255 { 0xc3456800, 0xc34587ff, REGISTRY_RIPENCC }, // 195.69.104.0 - 195.69.135.255 { 0xc3459000, 0xc345abff, REGISTRY_RIPENCC }, // 195.69.144.0 - 195.69.171.255 { 0xc345ac00, 0xc345afff, REGISTRY_RIPENCC }, // 195.69.172.0 - 195.69.175.255 { 0xc345b000, 0xc345e3ff, REGISTRY_RIPENCC }, // 195.69.176.0 - 195.69.227.255 { 0xc345e800, 0xc345efff, REGISTRY_RIPENCC }, // 195.69.232.0 - 195.69.239.255 { 0xc345f000, 0xc345f3ff, REGISTRY_RIPENCC }, // 195.69.240.0 - 195.69.243.255 { 0xc345f400, 0xc345fbff, REGISTRY_RIPENCC }, // 195.69.244.0 - 195.69.251.255 { 0xc3460000, 0xc3485fff, REGISTRY_RIPENCC }, // 195.70.0.0 - 195.72.95.255 { 0xc3486000, 0xc3489fff, REGISTRY_RIPENCC }, // 195.72.96.0 - 195.72.159.255 { 0xc348a000, 0xc34a1fff, REGISTRY_RIPENCC }, // 195.72.160.0 - 195.74.31.255 { 0xc34a2000, 0xc34a23ff, REGISTRY_RIPENCC }, // 195.74.32.0 - 195.74.35.255 { 0xc34a2400, 0xc34a27ff, REGISTRY_RIPENCC }, // 195.74.36.0 - 195.74.39.255 { 0xc34a2800, 0xc34a33ff, REGISTRY_RIPENCC }, // 195.74.40.0 - 195.74.51.255 { 0xc34a3400, 0xc34a3bff, REGISTRY_RIPENCC }, // 195.74.52.0 - 195.74.59.255 { 0xc34a3c00, 0xc34a57ff, REGISTRY_RIPENCC }, // 195.74.60.0 - 195.74.87.255 { 0xc34a5b00, 0xc34a5fff, REGISTRY_RIPENCC }, // 195.74.91.0 - 195.74.95.255 { 0xc34a6000, 0xc34e1fff, REGISTRY_RIPENCC }, // 195.74.96.0 - 195.78.31.255 { 0xc34e2000, 0xc34e23ff, REGISTRY_RIPENCC }, // 195.78.32.0 - 195.78.35.255 { 0xc34e2400, 0xc34e25ff, REGISTRY_RIPENCC }, // 195.78.36.0 - 195.78.37.255 { 0xc34e2600, 0xc34e2fff, REGISTRY_RIPENCC }, // 195.78.38.0 - 195.78.47.255 { 0xc34e3200, 0xc34e35ff, REGISTRY_RIPENCC }, // 195.78.50.0 - 195.78.53.255 { 0xc34e3a00, 0xc34e59ff, REGISTRY_RIPENCC }, // 195.78.58.0 - 195.78.89.255 { 0xc34e5a00, 0xc34e5dff, REGISTRY_RIPENCC }, // 195.78.90.0 - 195.78.93.255 { 0xc34e5e00, 0xc34e6bff, REGISTRY_RIPENCC }, // 195.78.94.0 - 195.78.107.255 { 0xc34e6e00, 0xc34e7fff, REGISTRY_RIPENCC }, // 195.78.110.0 - 195.78.127.255 { 0xc34e8000, 0xc34edfff, REGISTRY_RIPENCC }, // 195.78.128.0 - 195.78.223.255 { 0xc34ee000, 0xc34ee3ff, REGISTRY_RIPENCC }, // 195.78.224.0 - 195.78.227.255 { 0xc34ee400, 0xc34ee7ff, REGISTRY_RIPENCC }, // 195.78.228.0 - 195.78.231.255 { 0xc34ee800, 0xc34effff, REGISTRY_RIPENCC }, // 195.78.232.0 - 195.78.255.255 { 0xc34f0000, 0xc35087ff, REGISTRY_RIPENCC }, // 195.79.0.0 - 195.80.135.255 { 0xc3508800, 0xc3508dff, REGISTRY_RIPENCC }, // 195.80.136.0 - 195.80.141.255 { 0xc3508e00, 0xc3508fff, REGISTRY_RIPENCC }, // 195.80.142.0 - 195.80.143.255 { 0xc3509000, 0xc35097ff, REGISTRY_RIPENCC }, // 195.80.144.0 - 195.80.151.255 { 0xc3509800, 0xc350dfff, REGISTRY_RIPENCC }, // 195.80.152.0 - 195.80.223.255 { 0xc350e000, 0xc350e5ff, REGISTRY_RIPENCC }, // 195.80.224.0 - 195.80.229.255 { 0xc350e800, 0xc350ffff, REGISTRY_RIPENCC }, // 195.80.232.0 - 195.80.255.255 { 0xc3510000, 0xc3527fff, REGISTRY_RIPENCC }, // 195.81.0.0 - 195.82.127.255 { 0xc3528000, 0xc35283ff, REGISTRY_RIPENCC }, // 195.82.128.0 - 195.82.131.255 { 0xc3528600, 0xc35297ff, REGISTRY_RIPENCC }, // 195.82.134.0 - 195.82.151.255 { 0xc3529800, 0xc35299ff, REGISTRY_RIPENCC }, // 195.82.152.0 - 195.82.153.255 { 0xc3529a00, 0xc3529fff, REGISTRY_RIPENCC }, // 195.82.154.0 - 195.82.159.255 { 0xc352a000, 0xc355bfff, REGISTRY_RIPENCC }, // 195.82.160.0 - 195.85.191.255 { 0xc355c000, 0xc355c1ff, REGISTRY_RIPENCC }, // 195.85.192.0 - 195.85.193.255 { 0xc355c400, 0xc355c4ff, REGISTRY_RIPENCC }, // 195.85.196.0 - 195.85.196.255 { 0xc355c600, 0xc355c8ff, REGISTRY_RIPENCC }, // 195.85.198.0 - 195.85.200.255 { 0xc355ca00, 0xc355ccff, REGISTRY_RIPENCC }, // 195.85.202.0 - 195.85.204.255 { 0xc355ce00, 0xc355ceff, REGISTRY_RIPENCC }, // 195.85.206.0 - 195.85.206.255 { 0xc355d000, 0xc355d7ff, REGISTRY_RIPENCC }, // 195.85.208.0 - 195.85.215.255 { 0xc355d900, 0xc355d9ff, REGISTRY_RIPENCC }, // 195.85.217.0 - 195.85.217.255 { 0xc355db00, 0xc355deff, REGISTRY_RIPENCC }, // 195.85.219.0 - 195.85.222.255 { 0xc355e000, 0xc355e1ff, REGISTRY_RIPENCC }, // 195.85.224.0 - 195.85.225.255 { 0xc355e300, 0xc355e8ff, REGISTRY_RIPENCC }, // 195.85.227.0 - 195.85.232.255 { 0xc355ea00, 0xc355f3ff, REGISTRY_RIPENCC }, // 195.85.234.0 - 195.85.243.255 { 0xc355f500, 0xc355f5ff, REGISTRY_RIPENCC }, // 195.85.245.0 - 195.85.245.255 { 0xc355f600, 0xc355f7ff, REGISTRY_RIPENCC }, // 195.85.246.0 - 195.85.247.255 { 0xc355f900, 0xc355ffff, REGISTRY_RIPENCC }, // 195.85.249.0 - 195.85.255.255 { 0xc3560000, 0xc357ffff, REGISTRY_RIPENCC }, // 195.86.0.0 - 195.87.255.255 { 0xc3580000, 0xc35803ff, REGISTRY_RIPENCC }, // 195.88.0.0 - 195.88.3.255 { 0xc3580400, 0xc35805ff, REGISTRY_RIPENCC }, // 195.88.4.0 - 195.88.5.255 { 0xc3580600, 0xc35817ff, REGISTRY_RIPENCC }, // 195.88.6.0 - 195.88.23.255 { 0xc3581a00, 0xc35837ff, REGISTRY_RIPENCC }, // 195.88.26.0 - 195.88.55.255 { 0xc3583a00, 0xc35851ff, REGISTRY_RIPENCC }, // 195.88.58.0 - 195.88.81.255 { 0xc3585200, 0xc35853ff, REGISTRY_RIPENCC }, // 195.88.82.0 - 195.88.83.255 { 0xc3585400, 0xc35863ff, REGISTRY_RIPENCC }, // 195.88.84.0 - 195.88.99.255 { 0xc3586400, 0xc35865ff, REGISTRY_RIPENCC }, // 195.88.100.0 - 195.88.101.255 { 0xc3586600, 0xc35867ff, REGISTRY_RIPENCC }, // 195.88.102.0 - 195.88.103.255 { 0xc3586a00, 0xc35891ff, REGISTRY_RIPENCC }, // 195.88.106.0 - 195.88.145.255 { 0xc3589400, 0xc35895ff, REGISTRY_RIPENCC }, // 195.88.148.0 - 195.88.149.255 { 0xc3589800, 0xc3589bff, REGISTRY_RIPENCC }, // 195.88.152.0 - 195.88.155.255 { 0xc3589c00, 0xc3589dff, REGISTRY_RIPENCC }, // 195.88.156.0 - 195.88.157.255 { 0xc3589e00, 0xc358a7ff, REGISTRY_RIPENCC }, // 195.88.158.0 - 195.88.167.255 { 0xc358aa00, 0xc358cbff, REGISTRY_RIPENCC }, // 195.88.170.0 - 195.88.203.255 { 0xc358d000, 0xc358d1ff, REGISTRY_RIPENCC }, // 195.88.208.0 - 195.88.209.255 { 0xc358d400, 0xc358d9ff, REGISTRY_RIPENCC }, // 195.88.212.0 - 195.88.217.255 { 0xc358dc00, 0xc358e1ff, REGISTRY_RIPENCC }, // 195.88.220.0 - 195.88.225.255 { 0xc358e400, 0xc358e5ff, REGISTRY_RIPENCC }, // 195.88.228.0 - 195.88.229.255 { 0xc358e800, 0xc358e9ff, REGISTRY_RIPENCC }, // 195.88.232.0 - 195.88.233.255 { 0xc358ec00, 0xc358ffff, REGISTRY_RIPENCC }, // 195.88.236.0 - 195.88.255.255 { 0xc3590000, 0xc35a5fff, REGISTRY_RIPENCC }, // 195.89.0.0 - 195.90.95.255 { 0xc35a6000, 0xc35a61ff, REGISTRY_RIPENCC }, // 195.90.96.0 - 195.90.97.255 { 0xc35a6400, 0xc35a71ff, REGISTRY_RIPENCC }, // 195.90.100.0 - 195.90.113.255 { 0xc35a7800, 0xc35a79ff, REGISTRY_RIPENCC }, // 195.90.120.0 - 195.90.121.255 { 0xc35a7c00, 0xc35a7fff, REGISTRY_RIPENCC }, // 195.90.124.0 - 195.90.127.255 { 0xc35a8000, 0xc35d7fff, REGISTRY_RIPENCC }, // 195.90.128.0 - 195.93.127.255 { 0xc35d8000, 0xc35d97ff, REGISTRY_RIPENCC }, // 195.93.128.0 - 195.93.151.255 { 0xc35d9800, 0xc35d99ff, REGISTRY_RIPENCC }, // 195.93.152.0 - 195.93.153.255 { 0xc35d9a00, 0xc35d9fff, REGISTRY_RIPENCC }, // 195.93.154.0 - 195.93.159.255 { 0xc35da200, 0xc35da7ff, REGISTRY_RIPENCC }, // 195.93.162.0 - 195.93.167.255 { 0xc35da800, 0xc35da9ff, REGISTRY_RIPENCC }, // 195.93.168.0 - 195.93.169.255 { 0xc35daa00, 0xc35dafff, REGISTRY_RIPENCC }, // 195.93.170.0 - 195.93.175.255 { 0xc35db200, 0xc35db7ff, REGISTRY_RIPENCC }, // 195.93.178.0 - 195.93.183.255 { 0xc35dba00, 0xc35dcfff, REGISTRY_RIPENCC }, // 195.93.186.0 - 195.93.207.255 { 0xc35dd200, 0xc35dd5ff, REGISTRY_RIPENCC }, // 195.93.210.0 - 195.93.213.255 { 0xc35dd800, 0xc35dd9ff, REGISTRY_RIPENCC }, // 195.93.216.0 - 195.93.217.255 { 0xc35dda00, 0xc35ddbff, REGISTRY_RIPENCC }, // 195.93.218.0 - 195.93.219.255 { 0xc35ddc00, 0xc35dffff, REGISTRY_RIPENCC }, // 195.93.220.0 - 195.93.255.255 { 0xc35e0000, 0xc35f7fff, REGISTRY_RIPENCC }, // 195.94.0.0 - 195.95.127.255 { 0xc35f8100, 0xc35f81ff, REGISTRY_RIPENCC }, // 195.95.129.0 - 195.95.129.255 { 0xc35f8300, 0xc35f85ff, REGISTRY_RIPENCC }, // 195.95.131.0 - 195.95.133.255 { 0xc35f8700, 0xc35f91ff, REGISTRY_RIPENCC }, // 195.95.135.0 - 195.95.145.255 { 0xc35f9200, 0xc35f92ff, REGISTRY_RIPENCC }, // 195.95.146.0 - 195.95.146.255 { 0xc35f9300, 0xc35f9aff, REGISTRY_RIPENCC }, // 195.95.147.0 - 195.95.154.255 { 0xc35f9c00, 0xc35fb8ff, REGISTRY_RIPENCC }, // 195.95.156.0 - 195.95.184.255 { 0xc35fba00, 0xc35fc7ff, REGISTRY_RIPENCC }, // 195.95.186.0 - 195.95.199.255 { 0xc35fca00, 0xc35ff9ff, REGISTRY_RIPENCC }, // 195.95.202.0 - 195.95.249.255 { 0xc35ffc00, 0xc35fffff, REGISTRY_RIPENCC }, // 195.95.252.0 - 195.95.255.255 { 0xc3600000, 0xc36dffff, REGISTRY_RIPENCC }, // 195.96.0.0 - 195.109.255.255 { 0xc36e0400, 0xc36e0dff, REGISTRY_RIPENCC }, // 195.110.4.0 - 195.110.13.255 { 0xc36e0e00, 0xc36e0fff, REGISTRY_RIPENCC }, // 195.110.14.0 - 195.110.15.255 { 0xc36e1000, 0xc36e15ff, REGISTRY_RIPENCC }, // 195.110.16.0 - 195.110.21.255 { 0xc36e1800, 0xc36e2dff, REGISTRY_RIPENCC }, // 195.110.24.0 - 195.110.45.255 { 0xc36e2e00, 0xc36e2fff, REGISTRY_RIPENCC }, // 195.110.46.0 - 195.110.47.255 { 0xc36e3000, 0xc36e3fff, REGISTRY_RIPENCC }, // 195.110.48.0 - 195.110.63.255 { 0xc36e4000, 0xc371ffff, REGISTRY_RIPENCC }, // 195.110.64.0 - 195.113.255.255 { 0xc3720000, 0xc37203ff, REGISTRY_RIPENCC }, // 195.114.0.0 - 195.114.3.255 { 0xc3720600, 0xc37207ff, REGISTRY_RIPENCC }, // 195.114.6.0 - 195.114.7.255 { 0xc3720a00, 0xc3720dff, REGISTRY_RIPENCC }, // 195.114.10.0 - 195.114.13.255 { 0xc3721000, 0xc37219ff, REGISTRY_RIPENCC }, // 195.114.16.0 - 195.114.25.255 { 0xc3721a00, 0xc3721bff, REGISTRY_RIPENCC }, // 195.114.26.0 - 195.114.27.255 { 0xc3721c00, 0xc3721fff, REGISTRY_RIPENCC }, // 195.114.28.0 - 195.114.31.255 { 0xc3722000, 0xc3725fff, REGISTRY_RIPENCC }, // 195.114.32.0 - 195.114.95.255 { 0xc3726000, 0xc37265ff, REGISTRY_RIPENCC }, // 195.114.96.0 - 195.114.101.255 { 0xc3726600, 0xc37267ff, REGISTRY_RIPENCC }, // 195.114.102.0 - 195.114.103.255 { 0xc3726800, 0xc3726bff, REGISTRY_RIPENCC }, // 195.114.104.0 - 195.114.107.255 { 0xc3727000, 0xc37270ff, REGISTRY_RIPENCC }, // 195.114.112.0 - 195.114.112.255 { 0xc3727200, 0xc37273ff, REGISTRY_RIPENCC }, // 195.114.114.0 - 195.114.115.255 { 0xc3727800, 0xc3727dff, REGISTRY_RIPENCC }, // 195.114.120.0 - 195.114.125.255 { 0xc3728000, 0xc37fffff, REGISTRY_RIPENCC }, // 195.114.128.0 - 195.127.255.255 { 0xc3800000, 0xc3800bff, REGISTRY_RIPENCC }, // 195.128.0.0 - 195.128.11.255 { 0xc3801000, 0xc38017ff, REGISTRY_RIPENCC }, // 195.128.16.0 - 195.128.23.255 { 0xc3801c00, 0xc3803fff, REGISTRY_RIPENCC }, // 195.128.28.0 - 195.128.63.255 { 0xc3804000, 0xc3805fff, REGISTRY_RIPENCC }, // 195.128.64.0 - 195.128.95.255 { 0xc3806800, 0xc380a1ff, REGISTRY_RIPENCC }, // 195.128.104.0 - 195.128.161.255 { 0xc380a400, 0xc380b1ff, REGISTRY_RIPENCC }, // 195.128.164.0 - 195.128.177.255 { 0xc380b400, 0xc380bfff, REGISTRY_RIPENCC }, // 195.128.180.0 - 195.128.191.255 { 0xc380c000, 0xc380dfff, REGISTRY_RIPENCC }, // 195.128.192.0 - 195.128.223.255 { 0xc380e000, 0xc380efff, REGISTRY_RIPENCC }, // 195.128.224.0 - 195.128.239.255 { 0xc380f200, 0xc380fdff, REGISTRY_RIPENCC }, // 195.128.242.0 - 195.128.253.255 { 0xc3810000, 0xc382bfff, REGISTRY_RIPENCC }, // 195.129.0.0 - 195.130.191.255 { 0xc382c100, 0xc382cbff, REGISTRY_RIPENCC }, // 195.130.193.0 - 195.130.203.255 { 0xc382cd00, 0xc382cdff, REGISTRY_RIPENCC }, // 195.130.205.0 - 195.130.205.255 { 0xc382cf00, 0xc382cfff, REGISTRY_RIPENCC }, // 195.130.207.0 - 195.130.207.255 { 0xc382d100, 0xc382dfff, REGISTRY_RIPENCC }, // 195.130.209.0 - 195.130.223.255 { 0xc382e000, 0xc3863fff, REGISTRY_RIPENCC }, // 195.130.224.0 - 195.134.63.255 { 0xc3864000, 0xc3867fff, REGISTRY_RIPENCC }, // 195.134.64.0 - 195.134.127.255 { 0xc3868000, 0xc387bfff, REGISTRY_RIPENCC }, // 195.134.128.0 - 195.135.191.255 { 0xc387c000, 0xc387cbff, REGISTRY_RIPENCC }, // 195.135.192.0 - 195.135.203.255 { 0xc387cc00, 0xc387cfff, REGISTRY_RIPENCC }, // 195.135.204.0 - 195.135.207.255 { 0xc387d000, 0xc387f3ff, REGISTRY_RIPENCC }, // 195.135.208.0 - 195.135.243.255 { 0xc387f800, 0xc387fbff, REGISTRY_RIPENCC }, // 195.135.248.0 - 195.135.251.255 { 0xc3880000, 0xc3899fff, REGISTRY_RIPENCC }, // 195.136.0.0 - 195.137.159.255 { 0xc389a000, 0xc389a3ff, REGISTRY_RIPENCC }, // 195.137.160.0 - 195.137.163.255 { 0xc389a500, 0xc389a7ff, REGISTRY_RIPENCC }, // 195.137.165.0 - 195.137.167.255 { 0xc389a900, 0xc389b9ff, REGISTRY_RIPENCC }, // 195.137.169.0 - 195.137.185.255 { 0xc389bb00, 0xc389bbff, REGISTRY_RIPENCC }, // 195.137.187.0 - 195.137.187.255 { 0xc389bd00, 0xc389bfff, REGISTRY_RIPENCC }, // 195.137.189.0 - 195.137.191.255 { 0xc389c200, 0xc389cbff, REGISTRY_RIPENCC }, // 195.137.194.0 - 195.137.203.255 { 0xc389ce00, 0xc389d3ff, REGISTRY_RIPENCC }, // 195.137.206.0 - 195.137.211.255 { 0xc389d400, 0xc389d5ff, REGISTRY_RIPENCC }, // 195.137.212.0 - 195.137.213.255 { 0xc389d600, 0xc389ffff, REGISTRY_RIPENCC }, // 195.137.214.0 - 195.137.255.255 { 0xc38a0000, 0xc38abfff, REGISTRY_RIPENCC }, // 195.138.0.0 - 195.138.191.255 { 0xc38ac000, 0xc38adbff, REGISTRY_RIPENCC }, // 195.138.192.0 - 195.138.219.255 { 0xc38add00, 0xc38adfff, REGISTRY_RIPENCC }, // 195.138.221.0 - 195.138.223.255 { 0xc38ae000, 0xc38bffff, REGISTRY_RIPENCC }, // 195.138.224.0 - 195.139.255.255 { 0xc38c0000, 0xc38c7fff, REGISTRY_RIPENCC }, // 195.140.0.0 - 195.140.127.255 { 0xc38c8400, 0xc38c8fff, REGISTRY_RIPENCC }, // 195.140.132.0 - 195.140.143.255 { 0xc38c9400, 0xc38cd3ff, REGISTRY_RIPENCC }, // 195.140.148.0 - 195.140.211.255 { 0xc38cd400, 0xc38cd7ff, REGISTRY_RIPENCC }, // 195.140.212.0 - 195.140.215.255 { 0xc38cd800, 0xc38cdfff, REGISTRY_RIPENCC }, // 195.140.216.0 - 195.140.223.255 { 0xc38ce400, 0xc38cebff, REGISTRY_RIPENCC }, // 195.140.228.0 - 195.140.235.255 { 0xc38cec00, 0xc38cefff, REGISTRY_RIPENCC }, // 195.140.236.0 - 195.140.239.255 { 0xc38cf000, 0xc38cffff, REGISTRY_RIPENCC }, // 195.140.240.0 - 195.140.255.255 { 0xc38d0000, 0xc38fffff, REGISTRY_RIPENCC }, // 195.141.0.0 - 195.143.255.255 { 0xc3900000, 0xc39016ff, REGISTRY_RIPENCC }, // 195.144.0.0 - 195.144.22.255 { 0xc3901800, 0xc3901aff, REGISTRY_RIPENCC }, // 195.144.24.0 - 195.144.26.255 { 0xc3901c00, 0xc3901fff, REGISTRY_RIPENCC }, // 195.144.28.0 - 195.144.31.255 { 0xc3902000, 0xc3953fff, REGISTRY_RIPENCC }, // 195.144.32.0 - 195.149.63.255 { 0xc3954000, 0xc39542ff, REGISTRY_RIPENCC }, // 195.149.64.0 - 195.149.66.255 { 0xc3954400, 0xc39548ff, REGISTRY_RIPENCC }, // 195.149.68.0 - 195.149.72.255 { 0xc3954a00, 0xc3954aff, REGISTRY_RIPENCC }, // 195.149.74.0 - 195.149.74.255 { 0xc3954b00, 0xc39559ff, REGISTRY_RIPENCC }, // 195.149.75.0 - 195.149.89.255 { 0xc3955b00, 0xc3955bff, REGISTRY_RIPENCC }, // 195.149.91.0 - 195.149.91.255 { 0xc3955e00, 0xc3955fff, REGISTRY_RIPENCC }, // 195.149.94.0 - 195.149.95.255 { 0xc3956000, 0xc39560ff, REGISTRY_RIPENCC }, // 195.149.96.0 - 195.149.96.255 { 0xc3956100, 0xc39572ff, REGISTRY_RIPENCC }, // 195.149.97.0 - 195.149.114.255 { 0xc3957300, 0xc39573ff, REGISTRY_RIPENCC }, // 195.149.115.0 - 195.149.115.255 { 0xc3957400, 0xc39576ff, REGISTRY_RIPENCC }, // 195.149.116.0 - 195.149.118.255 { 0xc3957800, 0xc3957fff, REGISTRY_RIPENCC }, // 195.149.120.0 - 195.149.127.255 { 0xc3958000, 0xc395bfff, REGISTRY_RIPENCC }, // 195.149.128.0 - 195.149.191.255 { 0xc395c000, 0xc395ffff, REGISTRY_RIPENCC }, // 195.149.192.0 - 195.149.255.255 { 0xc3960000, 0xc39edfff, REGISTRY_RIPENCC }, // 195.150.0.0 - 195.158.223.255 { 0xc39ee000, 0xc39ef3ff, REGISTRY_RIPENCC }, // 195.158.224.0 - 195.158.243.255 { 0xc39ef600, 0xc39effff, REGISTRY_RIPENCC }, // 195.158.246.0 - 195.158.255.255 { 0xc39f0000, 0xc39fffff, REGISTRY_RIPENCC }, // 195.159.0.0 - 195.159.255.255 { 0xc3a00000, 0xc3a0b3ff, REGISTRY_RIPENCC }, // 195.160.0.0 - 195.160.179.255 { 0xc3a0b400, 0xc3a0b5ff, REGISTRY_RIPENCC }, // 195.160.180.0 - 195.160.181.255 { 0xc3a0b600, 0xc3a0b9ff, REGISTRY_RIPENCC }, // 195.160.182.0 - 195.160.185.255 { 0xc3a0bc00, 0xc3a0dfff, REGISTRY_RIPENCC }, // 195.160.188.0 - 195.160.223.255 { 0xc3a0e000, 0xc3a0e3ff, REGISTRY_RIPENCC }, // 195.160.224.0 - 195.160.227.255 { 0xc3a0e400, 0xc3a0ffff, REGISTRY_RIPENCC }, // 195.160.228.0 - 195.160.255.255 { 0xc3a10000, 0xc3a1ffff, REGISTRY_RIPENCC }, // 195.161.0.0 - 195.161.255.255 { 0xc3a20000, 0xc3a205ff, REGISTRY_RIPENCC }, // 195.162.0.0 - 195.162.5.255 { 0xc3a20800, 0xc3a213ff, REGISTRY_RIPENCC }, // 195.162.8.0 - 195.162.19.255 { 0xc3a21400, 0xc3a215ff, REGISTRY_RIPENCC }, // 195.162.20.0 - 195.162.21.255 { 0xc3a21600, 0xc3a21fff, REGISTRY_RIPENCC }, // 195.162.22.0 - 195.162.31.255 { 0xc3a22000, 0xc3a23fff, REGISTRY_RIPENCC }, // 195.162.32.0 - 195.162.63.255 { 0xc3a24000, 0xc3a253ff, REGISTRY_RIPENCC }, // 195.162.64.0 - 195.162.83.255 { 0xc3a25400, 0xc3a257ff, REGISTRY_RIPENCC }, // 195.162.84.0 - 195.162.87.255 { 0xc3a25800, 0xc3a25bff, REGISTRY_RIPENCC }, // 195.162.88.0 - 195.162.91.255 { 0xc3a26000, 0xc3a6dfff, REGISTRY_RIPENCC }, // 195.162.96.0 - 195.166.223.255 { 0xc3a70000, 0xc3a79fff, REGISTRY_RIPENCC }, // 195.167.0.0 - 195.167.159.255 { 0xc3a7a000, 0xc3a7afff, REGISTRY_ARIN }, // 195.167.160.0 - 195.167.175.255 { 0xc3a7b000, 0xc3aa9fff, REGISTRY_RIPENCC }, // 195.167.176.0 - 195.170.159.255 { 0xc3aaa000, 0xc3aaa4ff, REGISTRY_RIPENCC }, // 195.170.160.0 - 195.170.164.255 { 0xc3aaa600, 0xc3aaa6ff, REGISTRY_RIPENCC }, // 195.170.166.0 - 195.170.166.255 { 0xc3aaa800, 0xc3aaabff, REGISTRY_RIPENCC }, // 195.170.168.0 - 195.170.171.255 { 0xc3aaad00, 0xc3aabdff, REGISTRY_RIPENCC }, // 195.170.173.0 - 195.170.189.255 { 0xc3aabf00, 0xc3aabfff, REGISTRY_RIPENCC }, // 195.170.191.0 - 195.170.191.255 { 0xc3aac000, 0xc3b13fff, REGISTRY_RIPENCC }, // 195.170.192.0 - 195.177.63.255 { 0xc3b14000, 0xc3b14bff, REGISTRY_RIPENCC }, // 195.177.64.0 - 195.177.75.255 { 0xc3b15000, 0xc3b157ff, REGISTRY_RIPENCC }, // 195.177.80.0 - 195.177.87.255 { 0xc3b15c00, 0xc3b16bff, REGISTRY_RIPENCC }, // 195.177.92.0 - 195.177.107.255 { 0xc3b17400, 0xc3b17fff, REGISTRY_RIPENCC }, // 195.177.116.0 - 195.177.127.255 { 0xc3b18000, 0xc3b1bfff, REGISTRY_RIPENCC }, // 195.177.128.0 - 195.177.191.255 { 0xc3b1c000, 0xc3b1c1ff, REGISTRY_RIPENCC }, // 195.177.192.0 - 195.177.193.255 { 0xc3b1c400, 0xc3b1d7ff, REGISTRY_RIPENCC }, // 195.177.196.0 - 195.177.215.255 { 0xc3b1d800, 0xc3b1d9ff, REGISTRY_RIPENCC }, // 195.177.216.0 - 195.177.217.255 { 0xc3b1da00, 0xc3b1e5ff, REGISTRY_RIPENCC }, // 195.177.218.0 - 195.177.229.255 { 0xc3b1e800, 0xc3b1e9ff, REGISTRY_RIPENCC }, // 195.177.232.0 - 195.177.233.255 { 0xc3b1ea00, 0xc3b21fff, REGISTRY_RIPENCC }, // 195.177.234.0 - 195.178.31.255 { 0xc3b22000, 0xc3b25fff, REGISTRY_RIPENCC }, // 195.178.32.0 - 195.178.95.255 { 0xc3b26000, 0xc3b26dff, REGISTRY_RIPENCC }, // 195.178.96.0 - 195.178.109.255 { 0xc3b27000, 0xc3b277ff, REGISTRY_RIPENCC }, // 195.178.112.0 - 195.178.119.255 { 0xc3b27a00, 0xc3b27bff, REGISTRY_RIPENCC }, // 195.178.122.0 - 195.178.123.255 { 0xc3b28000, 0xc3b5ffff, REGISTRY_RIPENCC }, // 195.178.128.0 - 195.181.255.255 { 0xc3b60000, 0xc3b603ff, REGISTRY_RIPENCC }, // 195.182.0.0 - 195.182.3.255 { 0xc3b60400, 0xc3b604ff, REGISTRY_RIPENCC }, // 195.182.4.0 - 195.182.4.255 { 0xc3b60500, 0xc3b609ff, REGISTRY_RIPENCC }, // 195.182.5.0 - 195.182.9.255 { 0xc3b60b00, 0xc3b60eff, REGISTRY_RIPENCC }, // 195.182.11.0 - 195.182.14.255 { 0xc3b61000, 0xc3b612ff, REGISTRY_RIPENCC }, // 195.182.16.0 - 195.182.18.255 { 0xc3b61400, 0xc3b617ff, REGISTRY_RIPENCC }, // 195.182.20.0 - 195.182.23.255 { 0xc3b61900, 0xc3b61aff, REGISTRY_RIPENCC }, // 195.182.25.0 - 195.182.26.255 { 0xc3b61c00, 0xc3b61cff, REGISTRY_RIPENCC }, // 195.182.28.0 - 195.182.28.255 { 0xc3b61e00, 0xc3b624ff, REGISTRY_RIPENCC }, // 195.182.30.0 - 195.182.36.255 { 0xc3b62700, 0xc3b63fff, REGISTRY_RIPENCC }, // 195.182.39.0 - 195.182.63.255 { 0xc3b64000, 0xc3b6bfff, REGISTRY_RIPENCC }, // 195.182.64.0 - 195.182.191.255 { 0xc3b6c000, 0xc3b6c5ff, REGISTRY_RIPENCC }, // 195.182.192.0 - 195.182.197.255 { 0xc3b6ca00, 0xc3b6cbff, REGISTRY_RIPENCC }, // 195.182.202.0 - 195.182.203.255 { 0xc3b6ce00, 0xc3b6dfff, REGISTRY_RIPENCC }, // 195.182.206.0 - 195.182.223.255 { 0xc3b6e000, 0xc3b83fff, REGISTRY_RIPENCC }, // 195.182.224.0 - 195.184.63.255 { 0xc3b84000, 0xc3b847ff, REGISTRY_RIPENCC }, // 195.184.64.0 - 195.184.71.255 { 0xc3b84a00, 0xc3b855ff, REGISTRY_RIPENCC }, // 195.184.74.0 - 195.184.85.255 { 0xc3b85800, 0xc3b859ff, REGISTRY_RIPENCC }, // 195.184.88.0 - 195.184.89.255 { 0xc3b85c00, 0xc3b85fff, REGISTRY_RIPENCC }, // 195.184.92.0 - 195.184.95.255 { 0xc3b86000, 0xc3bcffff, REGISTRY_RIPENCC }, // 195.184.96.0 - 195.188.255.255 { 0xc3bd0000, 0xc3bd1bff, REGISTRY_RIPENCC }, // 195.189.0.0 - 195.189.27.255 { 0xc3bd1c00, 0xc3bd1fff, REGISTRY_RIPENCC }, // 195.189.28.0 - 195.189.31.255 { 0xc3bd2000, 0xc3bd3fff, REGISTRY_RIPENCC }, // 195.189.32.0 - 195.189.63.255 { 0xc3bd4000, 0xc3bd43ff, REGISTRY_RIPENCC }, // 195.189.64.0 - 195.189.67.255 { 0xc3bd4400, 0xc3bd47ff, REGISTRY_RIPENCC }, // 195.189.68.0 - 195.189.71.255 { 0xc3bd4c00, 0xc3bd97ff, REGISTRY_RIPENCC }, // 195.189.76.0 - 195.189.151.255 { 0xc3bd9a00, 0xc3bda3ff, REGISTRY_RIPENCC }, // 195.189.154.0 - 195.189.163.255 { 0xc3bda600, 0xc3bda7ff, REGISTRY_RIPENCC }, // 195.189.166.0 - 195.189.167.255 { 0xc3bdaa00, 0xc3bdadff, REGISTRY_RIPENCC }, // 195.189.170.0 - 195.189.173.255 { 0xc3bdb000, 0xc3bdb7ff, REGISTRY_RIPENCC }, // 195.189.176.0 - 195.189.183.255 { 0xc3bdba00, 0xc3bdbdff, REGISTRY_RIPENCC }, // 195.189.186.0 - 195.189.189.255 { 0xc3bdc000, 0xc3be1fff, REGISTRY_RIPENCC }, // 195.189.192.0 - 195.190.31.255 { 0xc3be2000, 0xc3be7fff, REGISTRY_RIPENCC }, // 195.190.32.0 - 195.190.127.255 { 0xc3be8000, 0xc3be81ff, REGISTRY_RIPENCC }, // 195.190.128.0 - 195.190.129.255 { 0xc3be8300, 0xc3be8aff, REGISTRY_RIPENCC }, // 195.190.131.0 - 195.190.138.255 { 0xc3be8c00, 0xc3be8fff, REGISTRY_RIPENCC }, // 195.190.140.0 - 195.190.143.255 { 0xc3be9100, 0xc3be94ff, REGISTRY_RIPENCC }, // 195.190.145.0 - 195.190.148.255 { 0xc3be9700, 0xc3be99ff, REGISTRY_RIPENCC }, // 195.190.151.0 - 195.190.153.255 { 0xc3be9b00, 0xc3be9cff, REGISTRY_RIPENCC }, // 195.190.155.0 - 195.190.156.255 { 0xc3be9e00, 0xc3be9fff, REGISTRY_RIPENCC }, // 195.190.158.0 - 195.190.159.255 { 0xc3bea000, 0xc3bedfff, REGISTRY_RIPENCC }, // 195.190.160.0 - 195.190.223.255 { 0xc3bee000, 0xc3bf15ff, REGISTRY_RIPENCC }, // 195.190.224.0 - 195.191.21.255 { 0xc3bf1800, 0xc3bf2bff, REGISTRY_RIPENCC }, // 195.191.24.0 - 195.191.43.255 { 0xc3bf2e00, 0xc3bf35ff, REGISTRY_RIPENCC }, // 195.191.46.0 - 195.191.53.255 { 0xc3bf3800, 0xc3bf69ff, REGISTRY_RIPENCC }, // 195.191.56.0 - 195.191.105.255 { 0xc3bf6a00, 0xc3bf6bff, REGISTRY_RIPENCC }, // 195.191.106.0 - 195.191.107.255 { 0xc3bf6c00, 0xc3bf71ff, REGISTRY_RIPENCC }, // 195.191.108.0 - 195.191.113.255 { 0xc3bf7200, 0xc3bf73ff, REGISTRY_RIPENCC }, // 195.191.114.0 - 195.191.115.255 { 0xc3bf7400, 0xc3bf77ff, REGISTRY_RIPENCC }, // 195.191.116.0 - 195.191.119.255 { 0xc3bf7800, 0xc3bf79ff, REGISTRY_RIPENCC }, // 195.191.120.0 - 195.191.121.255 { 0xc3bf7a00, 0xc3bf8bff, REGISTRY_RIPENCC }, // 195.191.122.0 - 195.191.139.255 { 0xc3bf8e00, 0xc3bfabff, REGISTRY_RIPENCC }, // 195.191.142.0 - 195.191.171.255 { 0xc3bfac00, 0xc3bfadff, REGISTRY_RIPENCC }, // 195.191.172.0 - 195.191.173.255 { 0xc3bfae00, 0xc3bfafff, REGISTRY_RIPENCC }, // 195.191.174.0 - 195.191.175.255 { 0xc3bfb200, 0xc3bfc5ff, REGISTRY_RIPENCC }, // 195.191.178.0 - 195.191.197.255 { 0xc3bfc800, 0xc3bfcdff, REGISTRY_RIPENCC }, // 195.191.200.0 - 195.191.205.255 { 0xc3bfd000, 0xc3bfd9ff, REGISTRY_RIPENCC }, // 195.191.208.0 - 195.191.217.255 { 0xc3bfda00, 0xc3bfdbff, REGISTRY_RIPENCC }, // 195.191.218.0 - 195.191.219.255 { 0xc3bfdc00, 0xc3bfffff, REGISTRY_RIPENCC }, // 195.191.220.0 - 195.191.255.255 { 0xc3c00000, 0xc3c83fff, REGISTRY_RIPENCC }, // 195.192.0.0 - 195.200.63.255 { 0xc3c84000, 0xc3c841ff, REGISTRY_RIPENCC }, // 195.200.64.0 - 195.200.65.255 { 0xc3c84400, 0xc3c85fff, REGISTRY_RIPENCC }, // 195.200.68.0 - 195.200.95.255 { 0xc3c86000, 0xc3c8bfff, REGISTRY_RIPENCC }, // 195.200.96.0 - 195.200.191.255 { 0xc3c8c000, 0xc3c8d1ff, REGISTRY_RIPENCC }, // 195.200.192.0 - 195.200.209.255 { 0xc3c8d300, 0xc3c8d6ff, REGISTRY_RIPENCC }, // 195.200.211.0 - 195.200.214.255 { 0xc3c8d800, 0xc3c8daff, REGISTRY_RIPENCC }, // 195.200.216.0 - 195.200.218.255 { 0xc3c8db00, 0xc3c8dbff, REGISTRY_RIPENCC }, // 195.200.219.0 - 195.200.219.255 { 0xc3c8dc00, 0xc3c8dcff, REGISTRY_RIPENCC }, // 195.200.220.0 - 195.200.220.255 { 0xc3c8de00, 0xc3c8e7ff, REGISTRY_RIPENCC }, // 195.200.222.0 - 195.200.231.255 { 0xc3c8ea00, 0xc3c8fbff, REGISTRY_RIPENCC }, // 195.200.234.0 - 195.200.251.255 { 0xc3c8fc00, 0xc3c8fdff, REGISTRY_RIPENCC }, // 195.200.252.0 - 195.200.253.255 { 0xc3c8fe00, 0xc3c8ffff, REGISTRY_RIPENCC }, // 195.200.254.0 - 195.200.255.255 { 0xc3c90000, 0xc3ca3fff, REGISTRY_RIPENCC }, // 195.201.0.0 - 195.202.63.255 { 0xc3ca4000, 0xc3ca5fff, REGISTRY_AFRINIC }, // 195.202.64.0 - 195.202.95.255 { 0xc3ca6000, 0xc3ce5fff, REGISTRY_RIPENCC }, // 195.202.96.0 - 195.206.95.255 { 0xc3ce6000, 0xc3ce67ff, REGISTRY_RIPENCC }, // 195.206.96.0 - 195.206.103.255 { 0xc3ce7000, 0xc3ce7fff, REGISTRY_RIPENCC }, // 195.206.112.0 - 195.206.127.255 { 0xc3ce8000, 0xc3cedfff, REGISTRY_RIPENCC }, // 195.206.128.0 - 195.206.223.255 { 0xc3cee000, 0xc3cee5ff, REGISTRY_RIPENCC }, // 195.206.224.0 - 195.206.229.255 { 0xc3cee800, 0xc3cee9ff, REGISTRY_RIPENCC }, // 195.206.232.0 - 195.206.233.255 { 0xc3ceec00, 0xc3cef5ff, REGISTRY_RIPENCC }, // 195.206.236.0 - 195.206.245.255 { 0xc3cef800, 0xc3cefbff, REGISTRY_RIPENCC }, // 195.206.248.0 - 195.206.251.255 { 0xc3cefc00, 0xc3cefdff, REGISTRY_RIPENCC }, // 195.206.252.0 - 195.206.253.255 { 0xc3cefe00, 0xc3ceffff, REGISTRY_RIPENCC }, // 195.206.254.0 - 195.206.255.255 { 0xc3cf0000, 0xc3d1ffff, REGISTRY_RIPENCC }, // 195.207.0.0 - 195.209.255.255 { 0xc3d20000, 0xc3d22dff, REGISTRY_RIPENCC }, // 195.210.0.0 - 195.210.45.255 { 0xc3d22e00, 0xc3d22fff, REGISTRY_RIPENCC }, // 195.210.46.0 - 195.210.47.255 { 0xc3d23000, 0xc3d239ff, REGISTRY_RIPENCC }, // 195.210.48.0 - 195.210.57.255 { 0xc3d23a00, 0xc3d23bff, REGISTRY_RIPENCC }, // 195.210.58.0 - 195.210.59.255 { 0xc3d23c00, 0xc3d23fff, REGISTRY_RIPENCC }, // 195.210.60.0 - 195.210.63.255 { 0xc3d24000, 0xc3d2ffff, REGISTRY_RIPENCC }, // 195.210.64.0 - 195.210.255.255 { 0xc3d30000, 0xc3d303ff, REGISTRY_RIPENCC }, // 195.211.0.0 - 195.211.3.255 { 0xc3d30400, 0xc3d307ff, REGISTRY_RIPENCC }, // 195.211.4.0 - 195.211.7.255 { 0xc3d30800, 0xc3d31bff, REGISTRY_RIPENCC }, // 195.211.8.0 - 195.211.27.255 { 0xc3d31c00, 0xc3d31fff, REGISTRY_RIPENCC }, // 195.211.28.0 - 195.211.31.255 { 0xc3d32000, 0xc3d3a7ff, REGISTRY_RIPENCC }, // 195.211.32.0 - 195.211.167.255 { 0xc3d3ac00, 0xc3d3ffff, REGISTRY_RIPENCC }, // 195.211.172.0 - 195.211.255.255 { 0xc3d40000, 0xc3d6bfff, REGISTRY_RIPENCC }, // 195.212.0.0 - 195.214.191.255 { 0xc3d6c000, 0xc3d6cfff, REGISTRY_RIPENCC }, // 195.214.192.0 - 195.214.207.255 { 0xc3d6d000, 0xc3d6d7ff, REGISTRY_RIPENCC }, // 195.214.208.0 - 195.214.215.255 { 0xc3d6d800, 0xc3d6efff, REGISTRY_RIPENCC }, // 195.214.216.0 - 195.214.239.255 { 0xc3d6f000, 0xc3d6f7ff, REGISTRY_RIPENCC }, // 195.214.240.0 - 195.214.247.255 { 0xc3d6f800, 0xc3d6ffff, REGISTRY_RIPENCC }, // 195.214.248.0 - 195.214.255.255 { 0xc3d70000, 0xc3d87fff, REGISTRY_RIPENCC }, // 195.215.0.0 - 195.216.127.255 { 0xc3d8a000, 0xc3d8bfff, REGISTRY_RIPENCC }, // 195.216.160.0 - 195.216.191.255 { 0xc3d8c000, 0xc3d8c3ff, REGISTRY_RIPENCC }, // 195.216.192.0 - 195.216.195.255 { 0xc3d8c400, 0xc3d8c5ff, REGISTRY_RIPENCC }, // 195.216.196.0 - 195.216.197.255 { 0xc3d8c600, 0xc3d8c9ff, REGISTRY_RIPENCC }, // 195.216.198.0 - 195.216.201.255 { 0xc3d8cc00, 0xc3d8cfff, REGISTRY_RIPENCC }, // 195.216.204.0 - 195.216.207.255 { 0xc3d8d200, 0xc3d8daff, REGISTRY_RIPENCC }, // 195.216.210.0 - 195.216.218.255 { 0xc3d8dc00, 0xc3d8e9ff, REGISTRY_RIPENCC }, // 195.216.220.0 - 195.216.233.255 { 0xc3d8eb00, 0xc3d8edff, REGISTRY_RIPENCC }, // 195.216.235.0 - 195.216.237.255 { 0xc3d8ef00, 0xc3d8f4ff, REGISTRY_RIPENCC }, // 195.216.239.0 - 195.216.244.255 { 0xc3d8f600, 0xc3d8f6ff, REGISTRY_RIPENCC }, // 195.216.246.0 - 195.216.246.255 { 0xc3d8f800, 0xc3d8ffff, REGISTRY_RIPENCC }, // 195.216.248.0 - 195.216.255.255 { 0xc3d90000, 0xc3de5fff, REGISTRY_RIPENCC }, // 195.217.0.0 - 195.222.95.255 { 0xc3de6000, 0xc3de7fff, REGISTRY_RIPENCC }, // 195.222.96.0 - 195.222.127.255 { 0xc3de8000, 0xc3e11fff, REGISTRY_RIPENCC }, // 195.222.128.0 - 195.225.31.255 { 0xc3e12000, 0xc3e13fff, REGISTRY_RIPENCC }, // 195.225.32.0 - 195.225.63.255 { 0xc3e14400, 0xc3e167ff, REGISTRY_RIPENCC }, // 195.225.68.0 - 195.225.103.255 { 0xc3e16800, 0xc3e16bff, REGISTRY_RIPENCC }, // 195.225.104.0 - 195.225.107.255 { 0xc3e16c00, 0xc3e193ff, REGISTRY_RIPENCC }, // 195.225.108.0 - 195.225.147.255 { 0xc3e19400, 0xc3e197ff, REGISTRY_RIPENCC }, // 195.225.148.0 - 195.225.151.255 { 0xc3e19800, 0xc3e1b3ff, REGISTRY_RIPENCC }, // 195.225.152.0 - 195.225.179.255 { 0xc3e1b800, 0xc3e1c7ff, REGISTRY_RIPENCC }, // 195.225.184.0 - 195.225.199.255 { 0xc3e1c800, 0xc3e1cbff, REGISTRY_RIPENCC }, // 195.225.200.0 - 195.225.203.255 { 0xc3e1cc00, 0xc3e1dbff, REGISTRY_RIPENCC }, // 195.225.204.0 - 195.225.219.255 { 0xc3e1e000, 0xc3e1e3ff, REGISTRY_RIPENCC }, // 195.225.224.0 - 195.225.227.255 { 0xc3e1e400, 0xc3e1e7ff, REGISTRY_RIPENCC }, // 195.225.228.0 - 195.225.231.255 { 0xc3e1e800, 0xc3e1efff, REGISTRY_RIPENCC }, // 195.225.232.0 - 195.225.239.255 { 0xc3e1f000, 0xc3e1f3ff, REGISTRY_RIPENCC }, // 195.225.240.0 - 195.225.243.255 { 0xc3e1f400, 0xc3e1f7ff, REGISTRY_RIPENCC }, // 195.225.244.0 - 195.225.247.255 { 0xc3e1f800, 0xc3e1fbff, REGISTRY_RIPENCC }, // 195.225.248.0 - 195.225.251.255 { 0xc3e1fc00, 0xc3e1ffff, REGISTRY_RIPENCC }, // 195.225.252.0 - 195.225.255.255 { 0xc3e20000, 0xc3e2bfff, REGISTRY_RIPENCC }, // 195.226.0.0 - 195.226.191.255 { 0xc3e2c000, 0xc3e2c4ff, REGISTRY_RIPENCC }, // 195.226.192.0 - 195.226.196.255 { 0xc3e2c600, 0xc3e2d6ff, REGISTRY_RIPENCC }, // 195.226.198.0 - 195.226.214.255 { 0xc3e2d800, 0xc3e2dbff, REGISTRY_RIPENCC }, // 195.226.216.0 - 195.226.219.255 { 0xc3e2dd00, 0xc3e2dfff, REGISTRY_RIPENCC }, // 195.226.221.0 - 195.226.223.255 { 0xc3e2e000, 0xc3e65fff, REGISTRY_RIPENCC }, // 195.226.224.0 - 195.230.95.255 { 0xc3e66000, 0xc3e660ff, REGISTRY_RIPENCC }, // 195.230.96.0 - 195.230.96.255 { 0xc3e66200, 0xc3e66aff, REGISTRY_RIPENCC }, // 195.230.98.0 - 195.230.106.255 { 0xc3e66c00, 0xc3e66cff, REGISTRY_RIPENCC }, // 195.230.108.0 - 195.230.108.255 { 0xc3e66d00, 0xc3e67fff, REGISTRY_RIPENCC }, // 195.230.109.0 - 195.230.127.255 { 0xc3e68000, 0xc3e9ffff, REGISTRY_RIPENCC }, // 195.230.128.0 - 195.233.255.255 { 0xc3ea0000, 0xc3ea19ff, REGISTRY_RIPENCC }, // 195.234.0.0 - 195.234.25.255 { 0xc3ea1c00, 0xc3ea33ff, REGISTRY_RIPENCC }, // 195.234.28.0 - 195.234.51.255 { 0xc3ea3500, 0xc3ea3dff, REGISTRY_RIPENCC }, // 195.234.53.0 - 195.234.61.255 { 0xc3ea4000, 0xc3ea51ff, REGISTRY_RIPENCC }, // 195.234.64.0 - 195.234.81.255 { 0xc3ea5400, 0xc3ea5bff, REGISTRY_RIPENCC }, // 195.234.84.0 - 195.234.91.255 { 0xc3ea6000, 0xc3ea6bff, REGISTRY_RIPENCC }, // 195.234.96.0 - 195.234.107.255 { 0xc3ea7000, 0xc3ea77ff, REGISTRY_RIPENCC }, // 195.234.112.0 - 195.234.119.255 { 0xc3ea8000, 0xc3ea81ff, REGISTRY_RIPENCC }, // 195.234.128.0 - 195.234.129.255 { 0xc3ea8300, 0xc3ea8bff, REGISTRY_RIPENCC }, // 195.234.131.0 - 195.234.139.255 { 0xc3ea8d00, 0xc3ea8eff, REGISTRY_RIPENCC }, // 195.234.141.0 - 195.234.142.255 { 0xc3ea9000, 0xc3ea92ff, REGISTRY_RIPENCC }, // 195.234.144.0 - 195.234.146.255 { 0xc3ea9400, 0xc3ea9bff, REGISTRY_RIPENCC }, // 195.234.148.0 - 195.234.155.255 { 0xc3ea9d00, 0xc3ea9dff, REGISTRY_RIPENCC }, // 195.234.157.0 - 195.234.157.255 { 0xc3ea9e00, 0xc3ea9eff, REGISTRY_RIPENCC }, // 195.234.158.0 - 195.234.158.255 { 0xc3eaa000, 0xc3eaa0ff, REGISTRY_RIPENCC }, // 195.234.160.0 - 195.234.160.255 { 0xc3eaa200, 0xc3eaa7ff, REGISTRY_RIPENCC }, // 195.234.162.0 - 195.234.167.255 { 0xc3eaa800, 0xc3eaa8ff, REGISTRY_AFRINIC }, // 195.234.168.0 - 195.234.168.255 { 0xc3eaaa00, 0xc3eab2ff, REGISTRY_RIPENCC }, // 195.234.170.0 - 195.234.178.255 { 0xc3eab400, 0xc3eab4ff, REGISTRY_RIPENCC }, // 195.234.180.0 - 195.234.180.255 { 0xc3eab600, 0xc3eab8ff, REGISTRY_RIPENCC }, // 195.234.182.0 - 195.234.184.255 { 0xc3eab900, 0xc3eab9ff, REGISTRY_AFRINIC }, // 195.234.185.0 - 195.234.185.255 { 0xc3eaba00, 0xc3eabcff, REGISTRY_RIPENCC }, // 195.234.186.0 - 195.234.188.255 { 0xc3eabe00, 0xc3eabeff, REGISTRY_RIPENCC }, // 195.234.190.0 - 195.234.190.255 { 0xc3eac000, 0xc3eafbff, REGISTRY_RIPENCC }, // 195.234.192.0 - 195.234.251.255 { 0xc3eafc00, 0xc3eaffff, REGISTRY_AFRINIC }, // 195.234.252.0 - 195.234.255.255 { 0xc3eb0000, 0xc3edffff, REGISTRY_RIPENCC }, // 195.235.0.0 - 195.237.255.255 { 0xc3ee0000, 0xc3ee1fff, REGISTRY_RIPENCC }, // 195.238.0.0 - 195.238.31.255 { 0xc3ee2000, 0xc3ee3fff, REGISTRY_RIPENCC }, // 195.238.32.0 - 195.238.63.255 { 0xc3ee4000, 0xc3ee43ff, REGISTRY_RIPENCC }, // 195.238.64.0 - 195.238.67.255 { 0xc3ee4600, 0xc3ee4dff, REGISTRY_RIPENCC }, // 195.238.70.0 - 195.238.77.255 { 0xc3ee5000, 0xc3ee5dff, REGISTRY_RIPENCC }, // 195.238.80.0 - 195.238.93.255 { 0xc3ee6000, 0xc3ee77ff, REGISTRY_RIPENCC }, // 195.238.96.0 - 195.238.119.255 { 0xc3ee8000, 0xc3ee9fff, REGISTRY_RIPENCC }, // 195.238.128.0 - 195.238.159.255 { 0xc3eea000, 0xc3eebfff, REGISTRY_RIPENCC }, // 195.238.160.0 - 195.238.191.255 { 0xc3eec000, 0xc3eedfff, REGISTRY_RIPENCC }, // 195.238.192.0 - 195.238.223.255 { 0xc3eee000, 0xc3eee6ff, REGISTRY_RIPENCC }, // 195.238.224.0 - 195.238.230.255 { 0xc3eee800, 0xc3eeecff, REGISTRY_RIPENCC }, // 195.238.232.0 - 195.238.236.255 { 0xc3eeed00, 0xc3eeedff, REGISTRY_RIPENCC }, // 195.238.237.0 - 195.238.237.255 { 0xc3eeee00, 0xc3eeefff, REGISTRY_RIPENCC }, // 195.238.238.0 - 195.238.239.255 { 0xc3eef100, 0xc3eef1ff, REGISTRY_RIPENCC }, // 195.238.241.0 - 195.238.241.255 { 0xc3eef400, 0xc3eef6ff, REGISTRY_RIPENCC }, // 195.238.244.0 - 195.238.246.255 { 0xc3eef900, 0xc3eefbff, REGISTRY_RIPENCC }, // 195.238.249.0 - 195.238.251.255 { 0xc3eefd00, 0xc3eeffff, REGISTRY_RIPENCC }, // 195.238.253.0 - 195.238.255.255 { 0xc3ef0000, 0xc3f23fff, REGISTRY_RIPENCC }, // 195.239.0.0 - 195.242.63.255 { 0xc3f24000, 0xc3f249ff, REGISTRY_RIPENCC }, // 195.242.64.0 - 195.242.73.255 { 0xc3f24c00, 0xc3f251ff, REGISTRY_RIPENCC }, // 195.242.76.0 - 195.242.81.255 { 0xc3f25200, 0xc3f253ff, REGISTRY_RIPENCC }, // 195.242.82.0 - 195.242.83.255 { 0xc3f25400, 0xc3f263ff, REGISTRY_RIPENCC }, // 195.242.84.0 - 195.242.99.255 { 0xc3f26800, 0xc3f26dff, REGISTRY_RIPENCC }, // 195.242.104.0 - 195.242.109.255 { 0xc3f27000, 0xc3f275ff, REGISTRY_RIPENCC }, // 195.242.112.0 - 195.242.117.255 { 0xc3f27800, 0xc3f293ff, REGISTRY_RIPENCC }, // 195.242.120.0 - 195.242.147.255 { 0xc3f29600, 0xc3f2b0ff, REGISTRY_RIPENCC }, // 195.242.150.0 - 195.242.176.255 { 0xc3f2b300, 0xc3f2b5ff, REGISTRY_RIPENCC }, // 195.242.179.0 - 195.242.181.255 { 0xc3f2b700, 0xc3f2baff, REGISTRY_RIPENCC }, // 195.242.183.0 - 195.242.186.255 { 0xc3f2bc00, 0xc3f2cfff, REGISTRY_RIPENCC }, // 195.242.188.0 - 195.242.207.255 { 0xc3f2d400, 0xc3f2d7ff, REGISTRY_RIPENCC }, // 195.242.212.0 - 195.242.215.255 { 0xc3f2d800, 0xc3f2efff, REGISTRY_RIPENCC }, // 195.242.216.0 - 195.242.239.255 { 0xc3f2f400, 0xc3f2ffff, REGISTRY_RIPENCC }, // 195.242.244.0 - 195.242.255.255 { 0xc3f30000, 0xc3f3ffff, REGISTRY_RIPENCC }, // 195.243.0.0 - 195.243.255.255 { 0xc3f40000, 0xc3f401ff, REGISTRY_RIPENCC }, // 195.244.0.0 - 195.244.1.255 { 0xc3f40400, 0xc3f40dff, REGISTRY_RIPENCC }, // 195.244.4.0 - 195.244.13.255 { 0xc3f41000, 0xc3f411ff, REGISTRY_RIPENCC }, // 195.244.16.0 - 195.244.17.255 { 0xc3f41400, 0xc3f41fff, REGISTRY_RIPENCC }, // 195.244.20.0 - 195.244.31.255 { 0xc3f42000, 0xc3f53fff, REGISTRY_RIPENCC }, // 195.244.32.0 - 195.245.63.255 { 0xc3f54000, 0xc3f557ff, REGISTRY_RIPENCC }, // 195.245.64.0 - 195.245.87.255 { 0xc3f55a00, 0xc3f55fff, REGISTRY_RIPENCC }, // 195.245.90.0 - 195.245.95.255 { 0xc3f56400, 0xc3f565ff, REGISTRY_RIPENCC }, // 195.245.100.0 - 195.245.101.255 { 0xc3f56800, 0xc3f56dff, REGISTRY_RIPENCC }, // 195.245.104.0 - 195.245.109.255 { 0xc3f57000, 0xc3f57fff, REGISTRY_RIPENCC }, // 195.245.112.0 - 195.245.127.255 { 0xc3f58000, 0xc3f5bfff, REGISTRY_RIPENCC }, // 195.245.128.0 - 195.245.191.255 { 0xc3f5c000, 0xc3f5c2ff, REGISTRY_RIPENCC }, // 195.245.192.0 - 195.245.194.255 { 0xc3f5c400, 0xc3f5ceff, REGISTRY_RIPENCC }, // 195.245.196.0 - 195.245.206.255 { 0xc3f5d000, 0xc3f5daff, REGISTRY_RIPENCC }, // 195.245.208.0 - 195.245.218.255 { 0xc3f5dc00, 0xc3f5e4ff, REGISTRY_RIPENCC }, // 195.245.220.0 - 195.245.228.255 { 0xc3f5e600, 0xc3f5edff, REGISTRY_RIPENCC }, // 195.245.230.0 - 195.245.237.255 { 0xc3f5f000, 0xc3f5f0ff, REGISTRY_RIPENCC }, // 195.245.240.0 - 195.245.240.255 { 0xc3f5f300, 0xc3f5f5ff, REGISTRY_RIPENCC }, // 195.245.243.0 - 195.245.245.255 { 0xc3f5f700, 0xc3f5ffff, REGISTRY_RIPENCC }, // 195.245.247.0 - 195.245.255.255 { 0xc3f60000, 0xc3f61fff, REGISTRY_RIPENCC }, // 195.246.0.0 - 195.246.31.255 { 0xc3f62000, 0xc3f63fff, REGISTRY_AFRINIC }, // 195.246.32.0 - 195.246.63.255 { 0xc3f64000, 0xc3f65fff, REGISTRY_RIPENCC }, // 195.246.64.0 - 195.246.95.255 { 0xc3f66000, 0xc3f661ff, REGISTRY_RIPENCC }, // 195.246.96.0 - 195.246.97.255 { 0xc3f66200, 0xc3f663ff, REGISTRY_RIPENCC }, // 195.246.98.0 - 195.246.99.255 { 0xc3f66400, 0xc3f66dff, REGISTRY_RIPENCC }, // 195.246.100.0 - 195.246.109.255 { 0xc3f67000, 0xc3f673ff, REGISTRY_RIPENCC }, // 195.246.112.0 - 195.246.115.255 { 0xc3f67400, 0xc3f675ff, REGISTRY_RIPENCC }, // 195.246.116.0 - 195.246.117.255 { 0xc3f67600, 0xc3f67fff, REGISTRY_RIPENCC }, // 195.246.118.0 - 195.246.127.255 { 0xc3f68000, 0xc3f6bfff, REGISTRY_RIPENCC }, // 195.246.128.0 - 195.246.191.255 { 0xc3f6c000, 0xc3f6c4ff, REGISTRY_RIPENCC }, // 195.246.192.0 - 195.246.196.255 { 0xc3f6c600, 0xc3f6c7ff, REGISTRY_RIPENCC }, // 195.246.198.0 - 195.246.199.255 { 0xc3f6d000, 0xc3f6daff, REGISTRY_RIPENCC }, // 195.246.208.0 - 195.246.218.255 { 0xc3f6dc00, 0xc3f6f5ff, REGISTRY_RIPENCC }, // 195.246.220.0 - 195.246.245.255 { 0xc3f6fa00, 0xc3f6fdff, REGISTRY_RIPENCC }, // 195.246.250.0 - 195.246.253.255 { 0xc3f70000, 0xc3f83fff, REGISTRY_RIPENCC }, // 195.247.0.0 - 195.248.63.255 { 0xc3f84000, 0xc3f853ff, REGISTRY_RIPENCC }, // 195.248.64.0 - 195.248.83.255 { 0xc3f85500, 0xc3f85fff, REGISTRY_RIPENCC }, // 195.248.85.0 - 195.248.95.255 { 0xc3f86000, 0xc3f8dfff, REGISTRY_RIPENCC }, // 195.248.96.0 - 195.248.223.255 { 0xc3f8e000, 0xc3f8efff, REGISTRY_RIPENCC }, // 195.248.224.0 - 195.248.239.255 { 0xc3f8f600, 0xc3f8f7ff, REGISTRY_RIPENCC }, // 195.248.246.0 - 195.248.247.255 { 0xc3f8f800, 0xc3f8ffff, REGISTRY_RIPENCC }, // 195.248.248.0 - 195.248.255.255 { 0xc3f90000, 0xc3fa1fff, REGISTRY_RIPENCC }, // 195.249.0.0 - 195.250.31.255 { 0xc3fa2000, 0xc3fa36ff, REGISTRY_RIPENCC }, // 195.250.32.0 - 195.250.54.255 { 0xc3fa3800, 0xc3fa3eff, REGISTRY_RIPENCC }, // 195.250.56.0 - 195.250.62.255 { 0xc3fa4000, 0xc3fbffff, REGISTRY_RIPENCC }, // 195.250.64.0 - 195.251.255.255 { 0xc3fc0000, 0xc3fc1fff, REGISTRY_RIPENCC }, // 195.252.0.0 - 195.252.31.255 { 0xc3fc2000, 0xc3fe7fff, REGISTRY_RIPENCC }, // 195.252.32.0 - 195.254.127.255 { 0xc3fe8000, 0xc3fe8dff, REGISTRY_RIPENCC }, // 195.254.128.0 - 195.254.141.255 { 0xc3fe9000, 0xc3fe99ff, REGISTRY_RIPENCC }, // 195.254.144.0 - 195.254.153.255 { 0xc3fe9c00, 0xc3feb9ff, REGISTRY_RIPENCC }, // 195.254.156.0 - 195.254.185.255 { 0xc3febc00, 0xc3febfff, REGISTRY_RIPENCC }, // 195.254.188.0 - 195.254.191.255 { 0xc3fec000, 0xc3ffffff, REGISTRY_RIPENCC }, // 195.254.192.0 - 195.255.255.255 { 0xc4000000, 0xc40100ff, REGISTRY_AFRINIC }, // 196.0.0.0 - 196.1.0.255 { 0xc4010100, 0xc40101ff, REGISTRY_APNIC }, // 196.1.1.0 - 196.1.1.255 { 0xc4010200, 0xc40102ff, REGISTRY_ARIN }, // 196.1.2.0 - 196.1.2.255 { 0xc4010300, 0xc40103ff, REGISTRY_RIPENCC }, // 196.1.3.0 - 196.1.3.255 { 0xc4010400, 0xc40104ff, REGISTRY_AFRINIC }, // 196.1.4.0 - 196.1.4.255 { 0xc4010500, 0xc40106ff, REGISTRY_RIPENCC }, // 196.1.5.0 - 196.1.6.255 { 0xc4010700, 0xc4013fff, REGISTRY_AFRINIC }, // 196.1.7.0 - 196.1.63.255 { 0xc4014000, 0xc40143ff, REGISTRY_RIPENCC }, // 196.1.64.0 - 196.1.67.255 { 0xc4014400, 0xc40144ff, REGISTRY_APNIC }, // 196.1.68.0 - 196.1.68.255 { 0xc4014500, 0xc40146ff, REGISTRY_RIPENCC }, // 196.1.69.0 - 196.1.70.255 { 0xc4014700, 0xc40147ff, REGISTRY_AFRINIC }, // 196.1.71.0 - 196.1.71.255 { 0xc4014800, 0xc40149ff, REGISTRY_ARIN }, // 196.1.72.0 - 196.1.73.255 { 0xc4014a00, 0xc40167ff, REGISTRY_AFRINIC }, // 196.1.74.0 - 196.1.103.255 { 0xc4016800, 0xc4016aff, REGISTRY_APNIC }, // 196.1.104.0 - 196.1.106.255 { 0xc4016b00, 0xc4016bff, REGISTRY_ARIN }, // 196.1.107.0 - 196.1.107.255 { 0xc4016d00, 0xc4016fff, REGISTRY_APNIC }, // 196.1.109.0 - 196.1.111.255 { 0xc4017000, 0xc40170ff, REGISTRY_LACNIC }, // 196.1.112.0 - 196.1.112.255 { 0xc4017100, 0xc40172ff, REGISTRY_APNIC }, // 196.1.113.0 - 196.1.114.255 { 0xc4017300, 0xc40176ff, REGISTRY_AFRINIC }, // 196.1.115.0 - 196.1.118.255 { 0xc4017800, 0xc40185ff, REGISTRY_AFRINIC }, // 196.1.120.0 - 196.1.133.255 { 0xc4018600, 0xc40186ff, REGISTRY_APNIC }, // 196.1.134.0 - 196.1.134.255 { 0xc4018700, 0xc40187ff, REGISTRY_LACNIC }, // 196.1.135.0 - 196.1.135.255 { 0xc4018800, 0xc40188ff, REGISTRY_ARIN }, // 196.1.136.0 - 196.1.136.255 { 0xc4018900, 0xc40189ff, REGISTRY_AFRINIC }, // 196.1.137.0 - 196.1.137.255 { 0xc4018a00, 0xc4018eff, REGISTRY_ARIN }, // 196.1.138.0 - 196.1.142.255 { 0xc4018f00, 0xc4019fff, REGISTRY_AFRINIC }, // 196.1.143.0 - 196.1.159.255 { 0xc401a000, 0xc401afff, REGISTRY_ARIN }, // 196.1.160.0 - 196.1.175.255 { 0xc401b000, 0xc401ffff, REGISTRY_AFRINIC }, // 196.1.176.0 - 196.1.255.255 { 0xc4020000, 0xc40201ff, REGISTRY_ARIN }, // 196.2.0.0 - 196.2.1.255 { 0xc4020200, 0xc40203ff, REGISTRY_AFRINIC }, // 196.2.2.0 - 196.2.3.255 { 0xc4020400, 0xc40207ff, REGISTRY_RIPENCC }, // 196.2.4.0 - 196.2.7.255 { 0xc4020800, 0xc402ffff, REGISTRY_AFRINIC }, // 196.2.8.0 - 196.2.255.255 { 0xc4030000, 0xc4030dff, REGISTRY_ARIN }, // 196.3.0.0 - 196.3.13.255 { 0xc4030e00, 0xc4030fff, REGISTRY_AFRINIC }, // 196.3.14.0 - 196.3.15.255 { 0xc4031000, 0xc4031fff, REGISTRY_LACNIC }, // 196.3.16.0 - 196.3.31.255 { 0xc4032000, 0xc40338ff, REGISTRY_ARIN }, // 196.3.32.0 - 196.3.56.255 { 0xc4033900, 0xc4033bff, REGISTRY_AFRINIC }, // 196.3.57.0 - 196.3.59.255 { 0xc4034000, 0xc40340ff, REGISTRY_AFRINIC }, // 196.3.64.0 - 196.3.64.255 { 0xc4034100, 0xc40341ff, REGISTRY_APNIC }, // 196.3.65.0 - 196.3.65.255 { 0xc4034200, 0xc40347ff, REGISTRY_RIPENCC }, // 196.3.66.0 - 196.3.71.255 { 0xc4034800, 0xc40348ff, REGISTRY_APNIC }, // 196.3.72.0 - 196.3.72.255 { 0xc4034900, 0xc40349ff, REGISTRY_ARIN }, // 196.3.73.0 - 196.3.73.255 { 0xc4034a00, 0xc40359ff, REGISTRY_LACNIC }, // 196.3.74.0 - 196.3.89.255 { 0xc4035a00, 0xc4035aff, REGISTRY_AFRINIC }, // 196.3.90.0 - 196.3.90.255 { 0xc4035b00, 0xc4035bff, REGISTRY_RIPENCC }, // 196.3.91.0 - 196.3.91.255 { 0xc4035c00, 0xc4035eff, REGISTRY_AFRINIC }, // 196.3.92.0 - 196.3.94.255 { 0xc4035f00, 0xc4035fff, REGISTRY_ARIN }, // 196.3.95.0 - 196.3.95.255 { 0xc4036000, 0xc40367ff, REGISTRY_AFRINIC }, // 196.3.96.0 - 196.3.103.255 { 0xc4036800, 0xc40368ff, REGISTRY_ARIN }, // 196.3.104.0 - 196.3.104.255 { 0xc4036900, 0xc40369ff, REGISTRY_AFRINIC }, // 196.3.105.0 - 196.3.105.255 { 0xc4036a00, 0xc4036aff, REGISTRY_LACNIC }, // 196.3.106.0 - 196.3.106.255 { 0xc4036b00, 0xc40383ff, REGISTRY_AFRINIC }, // 196.3.107.0 - 196.3.131.255 { 0xc4038400, 0xc40393ff, REGISTRY_LACNIC }, // 196.3.132.0 - 196.3.147.255 { 0xc4039400, 0xc40397ff, REGISTRY_AFRINIC }, // 196.3.148.0 - 196.3.151.255 { 0xc4039800, 0xc40398ff, REGISTRY_LACNIC }, // 196.3.152.0 - 196.3.152.255 { 0xc4039900, 0xc40399ff, REGISTRY_ARIN }, // 196.3.153.0 - 196.3.153.255 { 0xc4039a00, 0xc403b3ff, REGISTRY_AFRINIC }, // 196.3.154.0 - 196.3.179.255 { 0xc403b800, 0xc403dfff, REGISTRY_ARIN }, // 196.3.184.0 - 196.3.223.255 { 0xc403e000, 0xc4042dff, REGISTRY_AFRINIC }, // 196.3.224.0 - 196.4.45.255 { 0xc4042e00, 0xc40446ff, REGISTRY_ARIN }, // 196.4.46.0 - 196.4.70.255 { 0xc4044700, 0xc405ffff, REGISTRY_AFRINIC }, // 196.4.71.0 - 196.5.255.255 { 0xc4060100, 0xc406d9ff, REGISTRY_AFRINIC }, // 196.6.1.0 - 196.6.217.255 { 0xc406dc00, 0xc406e5ff, REGISTRY_AFRINIC }, // 196.6.220.0 - 196.6.229.255 { 0xc406e700, 0xc409ffff, REGISTRY_AFRINIC }, // 196.6.231.0 - 196.9.255.255 { 0xc40a0100, 0xc40b66ff, REGISTRY_AFRINIC }, // 196.10.1.0 - 196.11.102.255 { 0xc40b6800, 0xc40bffff, REGISTRY_AFRINIC }, // 196.11.104.0 - 196.11.255.255 { 0xc40c0000, 0xc40c09ff, REGISTRY_ARIN }, // 196.12.0.0 - 196.12.9.255 { 0xc40c0a00, 0xc40c1fff, REGISTRY_AFRINIC }, // 196.12.10.0 - 196.12.31.255 { 0xc40c2000, 0xc40c3fff, REGISTRY_APNIC }, // 196.12.32.0 - 196.12.63.255 { 0xc40c4000, 0xc40c7fff, REGISTRY_ARIN }, // 196.12.64.0 - 196.12.127.255 { 0xc40c8000, 0xc40c9fff, REGISTRY_AFRINIC }, // 196.12.128.0 - 196.12.159.255 { 0xc40ca000, 0xc40cbfff, REGISTRY_ARIN }, // 196.12.160.0 - 196.12.191.255 { 0xc40cc000, 0xc40dbeff, REGISTRY_AFRINIC }, // 196.12.192.0 - 196.13.190.255 { 0xc40dc000, 0xc40f0fff, REGISTRY_AFRINIC }, // 196.13.192.0 - 196.15.15.255 { 0xc40f1000, 0xc40f1fff, REGISTRY_APNIC }, // 196.15.16.0 - 196.15.31.255 { 0xc40f2000, 0xc40f3fff, REGISTRY_RIPENCC }, // 196.15.32.0 - 196.15.63.255 { 0xc40f4000, 0xc41607ff, REGISTRY_AFRINIC }, // 196.15.64.0 - 196.22.7.255 { 0xc4160c00, 0xc41affff, REGISTRY_AFRINIC }, // 196.22.12.0 - 196.26.255.255 { 0xc41b0000, 0xc41b3fff, REGISTRY_ARIN }, // 196.27.0.0 - 196.27.63.255 { 0xc41b4000, 0xc41c2fff, REGISTRY_AFRINIC }, // 196.27.64.0 - 196.28.47.255 { 0xc41c3000, 0xc41c3fff, REGISTRY_ARIN }, // 196.28.48.0 - 196.28.63.255 { 0xc41c4000, 0xc41d3fff, REGISTRY_AFRINIC }, // 196.28.64.0 - 196.29.63.255 { 0xc41d4000, 0xc41d5fff, REGISTRY_LACNIC }, // 196.29.64.0 - 196.29.95.255 { 0xc41d6000, 0xc41dcfff, REGISTRY_AFRINIC }, // 196.29.96.0 - 196.29.207.255 { 0xc41de000, 0xc41fffff, REGISTRY_AFRINIC }, // 196.29.224.0 - 196.31.255.255 { 0xc4200000, 0xc42007ff, REGISTRY_ARIN }, // 196.32.0.0 - 196.32.7.255 { 0xc4200800, 0xc4201fff, REGISTRY_AFRINIC }, // 196.32.8.0 - 196.32.31.255 { 0xc4202000, 0xc4205fff, REGISTRY_LACNIC }, // 196.32.32.0 - 196.32.95.255 { 0xc4206000, 0xc4207fff, REGISTRY_AFRINIC }, // 196.32.96.0 - 196.32.127.255 { 0xc4208000, 0xc4209fff, REGISTRY_ARIN }, // 196.32.128.0 - 196.32.159.255 { 0xc420c000, 0xc427ffff, REGISTRY_AFRINIC }, // 196.32.192.0 - 196.39.255.255 { 0xc4280000, 0xc4285fff, REGISTRY_LACNIC }, // 196.40.0.0 - 196.40.95.255 { 0xc4286000, 0xc4287fff, REGISTRY_AFRINIC }, // 196.40.96.0 - 196.40.127.255 { 0xc4289000, 0xc429ffff, REGISTRY_AFRINIC }, // 196.40.144.0 - 196.41.255.255 { 0xc42a0000, 0xc42a3fff, REGISTRY_ARIN }, // 196.42.0.0 - 196.42.63.255 { 0xc42a4000, 0xc42be8ff, REGISTRY_AFRINIC }, // 196.42.64.0 - 196.43.232.255 { 0xc42bea00, 0xc42c2fff, REGISTRY_AFRINIC }, // 196.43.234.0 - 196.44.47.255 { 0xc42c4000, 0xc42cffff, REGISTRY_AFRINIC }, // 196.44.64.0 - 196.44.255.255 { 0xc42d1000, 0xc42d3fff, REGISTRY_AFRINIC }, // 196.45.16.0 - 196.45.63.255 { 0xc42d6000, 0xc42e10ff, REGISTRY_AFRINIC }, // 196.45.96.0 - 196.46.16.255 { 0xc42e1200, 0xc42e17ff, REGISTRY_AFRINIC }, // 196.46.18.0 - 196.46.23.255 { 0xc42e1900, 0xc42e73ff, REGISTRY_AFRINIC }, // 196.46.25.0 - 196.46.115.255 { 0xc42e7800, 0xc43114ff, REGISTRY_AFRINIC }, // 196.46.120.0 - 196.49.20.255 { 0xc4311600, 0xc43116ff, REGISTRY_AFRINIC }, // 196.49.22.0 - 196.49.22.255 { 0xc4311800, 0xc43118ff, REGISTRY_AFRINIC }, // 196.49.24.0 - 196.49.24.255 { 0xc4311a00, 0xc4311aff, REGISTRY_AFRINIC }, // 196.49.26.0 - 196.49.26.255 { 0xc4311c00, 0xc4311cff, REGISTRY_AFRINIC }, // 196.49.28.0 - 196.49.28.255 { 0xc4311e00, 0xc4311eff, REGISTRY_AFRINIC }, // 196.49.30.0 - 196.49.30.255 { 0xc4312000, 0xc43120ff, REGISTRY_AFRINIC }, // 196.49.32.0 - 196.49.32.255 { 0xc4312200, 0xc43122ff, REGISTRY_AFRINIC }, // 196.49.34.0 - 196.49.34.255 { 0xc4312400, 0xc43124ff, REGISTRY_AFRINIC }, // 196.49.36.0 - 196.49.36.255 { 0xc4312600, 0xc43126ff, REGISTRY_AFRINIC }, // 196.49.38.0 - 196.49.38.255 { 0xc4312800, 0xc43128ff, REGISTRY_AFRINIC }, // 196.49.40.0 - 196.49.40.255 { 0xc4312a00, 0xc4312aff, REGISTRY_AFRINIC }, // 196.49.42.0 - 196.49.42.255 { 0xc4312c00, 0xc4312cff, REGISTRY_AFRINIC }, // 196.49.44.0 - 196.49.44.255 { 0xc4320000, 0xc43c00ff, REGISTRY_AFRINIC }, // 196.50.0.0 - 196.60.0.255 { 0xc43c0200, 0xc43c02ff, REGISTRY_AFRINIC }, // 196.60.2.0 - 196.60.2.255 { 0xc43c0400, 0xc43c04ff, REGISTRY_AFRINIC }, // 196.60.4.0 - 196.60.4.255 { 0xc43c0600, 0xc43c06ff, REGISTRY_AFRINIC }, // 196.60.6.0 - 196.60.6.255 { 0xc43c0800, 0xc43c09ff, REGISTRY_AFRINIC }, // 196.60.8.0 - 196.60.9.255 { 0xc43c2000, 0xc43c20ff, REGISTRY_AFRINIC }, // 196.60.32.0 - 196.60.32.255 { 0xc43c2400, 0xc43c24ff, REGISTRY_AFRINIC }, // 196.60.36.0 - 196.60.36.255 { 0xc43c2600, 0xc43c26ff, REGISTRY_AFRINIC }, // 196.60.38.0 - 196.60.38.255 { 0xc43c2800, 0xc43c28ff, REGISTRY_AFRINIC }, // 196.60.40.0 - 196.60.40.255 { 0xc43c2a00, 0xc43c2aff, REGISTRY_AFRINIC }, // 196.60.42.0 - 196.60.42.255 { 0xc43d0000, 0xc4c02fff, REGISTRY_AFRINIC }, // 196.61.0.0 - 196.192.47.255 { 0xc4c04000, 0xc4c071ff, REGISTRY_AFRINIC }, // 196.192.64.0 - 196.192.113.255 { 0xc4c07c00, 0xc4c07cff, REGISTRY_AFRINIC }, // 196.192.124.0 - 196.192.124.255 { 0xc4c08c00, 0xc4c8dfff, REGISTRY_AFRINIC }, // 196.192.140.0 - 196.200.223.255 { 0xc4c8f000, 0xc4c8ffff, REGISTRY_AFRINIC }, // 196.200.240.0 - 196.200.255.255 { 0xc4c90100, 0xc4c90bff, REGISTRY_AFRINIC }, // 196.201.1.0 - 196.201.11.255 { 0xc4c91000, 0xc4c99fff, REGISTRY_AFRINIC }, // 196.201.16.0 - 196.201.159.255 { 0xc4c9c000, 0xc4c9f7ff, REGISTRY_AFRINIC }, // 196.201.192.0 - 196.201.247.255 { 0xc4ca0000, 0xc4d800ff, REGISTRY_AFRINIC }, // 196.202.0.0 - 196.216.0.255 { 0xc4d80100, 0xc4d801ff, REGISTRY_ARIN }, // 196.216.1.0 - 196.216.1.255 { 0xc4d80200, 0xc4d8aaff, REGISTRY_AFRINIC }, // 196.216.2.0 - 196.216.170.255 { 0xc4d8ac00, 0xc4d8b7ff, REGISTRY_AFRINIC }, // 196.216.172.0 - 196.216.183.255 { 0xc4d8bc00, 0xc4d8f3ff, REGISTRY_AFRINIC }, // 196.216.188.0 - 196.216.243.255 { 0xc4d8f500, 0xc4d8fdff, REGISTRY_AFRINIC }, // 196.216.245.0 - 196.216.253.255 { 0xc4d8ff00, 0xc4df0aff, REGISTRY_AFRINIC }, // 196.216.255.0 - 196.223.10.255 { 0xc4df0c00, 0xc4df1cff, REGISTRY_AFRINIC }, // 196.223.12.0 - 196.223.28.255 { 0xc4df1e00, 0xc4df2dff, REGISTRY_AFRINIC }, // 196.223.30.0 - 196.223.45.255 { 0xc4df2f00, 0xc4fa9fff, REGISTRY_AFRINIC }, // 196.223.47.0 - 196.250.159.255 { 0xc4fab000, 0xc4fac7ff, REGISTRY_AFRINIC }, // 196.250.176.0 - 196.250.199.255 { 0xc4facc00, 0xc4fad7ff, REGISTRY_AFRINIC }, // 196.250.204.0 - 196.250.215.255 { 0xc4fae000, 0xc4fb8fff, REGISTRY_AFRINIC }, // 196.250.224.0 - 196.251.143.255 { 0xc4fb9400, 0xc4fb9bff, REGISTRY_AFRINIC }, // 196.251.148.0 - 196.251.155.255 { 0xc4fba000, 0xc594bfff, REGISTRY_AFRINIC }, // 196.251.160.0 - 197.148.191.255 { 0xc594e000, 0xc59583ff, REGISTRY_AFRINIC }, // 197.148.224.0 - 197.149.131.255 { 0xc5958800, 0xc5958bff, REGISTRY_AFRINIC }, // 197.149.136.0 - 197.149.139.255 { 0xc5959000, 0xc595a3ff, REGISTRY_AFRINIC }, // 197.149.144.0 - 197.149.163.255 { 0xc595a800, 0xc595abff, REGISTRY_AFRINIC }, // 197.149.168.0 - 197.149.171.255 { 0xc595b000, 0xc59bcfff, REGISTRY_AFRINIC }, // 197.149.176.0 - 197.155.207.255 { 0xc59be000, 0xc59debff, REGISTRY_AFRINIC }, // 197.155.224.0 - 197.157.235.255 { 0xc59df000, 0xc59df7ff, REGISTRY_AFRINIC }, // 197.157.240.0 - 197.157.247.255 { 0xc59dfc00, 0xc59fdfff, REGISTRY_AFRINIC }, // 197.157.252.0 - 197.159.223.255 { 0xc5a00000, 0xc5d677ff, REGISTRY_AFRINIC }, // 197.160.0.0 - 197.214.119.255 { 0xc5d68000, 0xc5dc1fff, REGISTRY_AFRINIC }, // 197.214.128.0 - 197.220.31.255 { 0xc5dc4000, 0xc5e7d3ff, REGISTRY_AFRINIC }, // 197.220.64.0 - 197.231.211.255 { 0xc5e7d800, 0xc5e7dfff, REGISTRY_AFRINIC }, // 197.231.216.0 - 197.231.223.255 { 0xc5e7e400, 0xc5e7efff, REGISTRY_AFRINIC }, // 197.231.228.0 - 197.231.239.255 { 0xc5e7f400, 0xc5eae3ff, REGISTRY_AFRINIC }, // 197.231.244.0 - 197.234.227.255 { 0xc5eae800, 0xc5eafbff, REGISTRY_AFRINIC }, // 197.234.232.0 - 197.234.251.255 { 0xc5eb0000, 0xc5edffff, REGISTRY_AFRINIC }, // 197.235.0.0 - 197.237.255.255 { 0xc5ef0000, 0xc5efffff, REGISTRY_AFRINIC }, // 197.239.0.0 - 197.239.255.255 { 0xc5f10000, 0xc5f2dfff, REGISTRY_AFRINIC }, // 197.241.0.0 - 197.242.223.255 { 0xc5f2f000, 0xc5f3ffff, REGISTRY_AFRINIC }, // 197.242.240.0 - 197.243.255.255 { 0xc5f50000, 0xc5ffffff, REGISTRY_AFRINIC }, // 197.245.0.0 - 197.255.255.255 { 0xc6000000, 0xc6020fff, REGISTRY_ARIN }, // 198.0.0.0 - 198.2.15.255 { 0xc6021000, 0xc6021fff, REGISTRY_LACNIC }, // 198.2.16.0 - 198.2.31.255 { 0xc6022000, 0xc60affff, REGISTRY_ARIN }, // 198.2.32.0 - 198.10.255.255 { 0xc60b0000, 0xc60b03ff, REGISTRY_RIPENCC }, // 198.11.0.0 - 198.11.3.255 { 0xc60b0400, 0xc60c1fff, REGISTRY_ARIN }, // 198.11.4.0 - 198.12.31.255 { 0xc60c2000, 0xc60c3fff, REGISTRY_LACNIC }, // 198.12.32.0 - 198.12.63.255 { 0xc60c4000, 0xc60f0fff, REGISTRY_ARIN }, // 198.12.64.0 - 198.15.15.255 { 0xc60f2000, 0xc60f3fff, REGISTRY_APNIC }, // 198.15.32.0 - 198.15.63.255 { 0xc60f4000, 0xc61100ff, REGISTRY_ARIN }, // 198.15.64.0 - 198.17.0.255 { 0xc6110200, 0xc61106ff, REGISTRY_ARIN }, // 198.17.2.0 - 198.17.6.255 { 0xc6110800, 0xc61145ff, REGISTRY_ARIN }, // 198.17.8.0 - 198.17.69.255 { 0xc6114600, 0xc61146ff, REGISTRY_APNIC }, // 198.17.70.0 - 198.17.70.255 { 0xc6114700, 0xc6114cff, REGISTRY_ARIN }, // 198.17.71.0 - 198.17.76.255 { 0xc6114d00, 0xc6114dff, REGISTRY_RIPENCC }, // 198.17.77.0 - 198.17.77.255 { 0xc6114e00, 0xc6114eff, REGISTRY_ARIN }, // 198.17.78.0 - 198.17.78.255 { 0xc6115000, 0xc61169ff, REGISTRY_ARIN }, // 198.17.80.0 - 198.17.105.255 { 0xc6116b00, 0xc61170ff, REGISTRY_ARIN }, // 198.17.107.0 - 198.17.112.255 { 0xc6117400, 0xc61174ff, REGISTRY_ARIN }, // 198.17.116.0 - 198.17.116.255 { 0xc6117500, 0xc61175ff, REGISTRY_RIPENCC }, // 198.17.117.0 - 198.17.117.255 { 0xc6117700, 0xc61177ff, REGISTRY_ARIN }, // 198.17.119.0 - 198.17.119.255 { 0xc6117800, 0xc61179ff, REGISTRY_LACNIC }, // 198.17.120.0 - 198.17.121.255 { 0xc6117a00, 0xc611b3ff, REGISTRY_ARIN }, // 198.17.122.0 - 198.17.179.255 { 0xc611b400, 0xc611b6ff, REGISTRY_RIPENCC }, // 198.17.180.0 - 198.17.182.255 { 0xc611b700, 0xc611e3ff, REGISTRY_ARIN }, // 198.17.183.0 - 198.17.227.255 { 0xc611e500, 0xc611e6ff, REGISTRY_ARIN }, // 198.17.229.0 - 198.17.230.255 { 0xc611e700, 0xc611e8ff, REGISTRY_LACNIC }, // 198.17.231.0 - 198.17.232.255 { 0xc611e900, 0xc611efff, REGISTRY_ARIN }, // 198.17.233.0 - 198.17.239.255 { 0xc611f200, 0xc611ffff, REGISTRY_ARIN }, // 198.17.242.0 - 198.17.255.255 { 0xc6140000, 0xc61621ff, REGISTRY_ARIN }, // 198.20.0.0 - 198.22.33.255 { 0xc6162400, 0xc61624ff, REGISTRY_ARIN }, // 198.22.36.0 - 198.22.36.255 { 0xc6162600, 0xc6162eff, REGISTRY_ARIN }, // 198.22.38.0 - 198.22.46.255 { 0xc6162f00, 0xc6162fff, REGISTRY_APNIC }, // 198.22.47.0 - 198.22.47.255 { 0xc6163300, 0xc61633ff, REGISTRY_RIPENCC }, // 198.22.51.0 - 198.22.51.255 { 0xc6163400, 0xc6163cff, REGISTRY_ARIN }, // 198.22.52.0 - 198.22.60.255 { 0xc6163d00, 0xc6163dff, REGISTRY_APNIC }, // 198.22.61.0 - 198.22.61.255 { 0xc6163e00, 0xc6165cff, REGISTRY_ARIN }, // 198.22.62.0 - 198.22.92.255 { 0xc6165d00, 0xc61661ff, REGISTRY_RIPENCC }, // 198.22.93.0 - 198.22.97.255 { 0xc6166200, 0xc616f9ff, REGISTRY_ARIN }, // 198.22.98.0 - 198.22.249.255 { 0xc616fa00, 0xc616fbff, REGISTRY_LACNIC }, // 198.22.250.0 - 198.22.251.255 { 0xc616fc00, 0xc61b03ff, REGISTRY_ARIN }, // 198.22.252.0 - 198.27.3.255 { 0xc61b0400, 0xc61b08ff, REGISTRY_APNIC }, // 198.27.4.0 - 198.27.8.255 { 0xc61b0900, 0xc6241fff, REGISTRY_ARIN }, // 198.27.9.0 - 198.36.31.255 { 0xc6242000, 0xc6242eff, REGISTRY_RIPENCC }, // 198.36.32.0 - 198.36.46.255 { 0xc6242f00, 0xc6290fff, REGISTRY_ARIN }, // 198.36.47.0 - 198.41.15.255 { 0xc6291c00, 0xc6291fff, REGISTRY_ARIN }, // 198.41.28.0 - 198.41.31.255 { 0xc6292000, 0xc6292eff, REGISTRY_LACNIC }, // 198.41.32.0 - 198.41.46.255 { 0xc6292f00, 0xc62fffff, REGISTRY_ARIN }, // 198.41.47.0 - 198.47.255.255 { 0xc6300000, 0xc63003ff, REGISTRY_APNIC }, // 198.48.0.0 - 198.48.3.255 { 0xc6300400, 0xc63101ff, REGISTRY_ARIN }, // 198.48.4.0 - 198.49.1.255 { 0xc6310400, 0xc6311fff, REGISTRY_ARIN }, // 198.49.4.0 - 198.49.31.255 { 0xc6312800, 0xc63156ff, REGISTRY_ARIN }, // 198.49.40.0 - 198.49.86.255 { 0xc6315800, 0xc6316fff, REGISTRY_ARIN }, // 198.49.88.0 - 198.49.111.255 { 0xc6317000, 0xc63171ff, REGISTRY_APNIC }, // 198.49.112.0 - 198.49.113.255 { 0xc6317200, 0xc6317bff, REGISTRY_ARIN }, // 198.49.114.0 - 198.49.123.255 { 0xc6317c00, 0xc6317cff, REGISTRY_APNIC }, // 198.49.124.0 - 198.49.124.255 { 0xc6317d00, 0xc6317fff, REGISTRY_ARIN }, // 198.49.125.0 - 198.49.127.255 { 0xc6318000, 0xc63185ff, REGISTRY_LACNIC }, // 198.49.128.0 - 198.49.133.255 { 0xc6318600, 0xc631a3ff, REGISTRY_ARIN }, // 198.49.134.0 - 198.49.163.255 { 0xc631a400, 0xc631a4ff, REGISTRY_LACNIC }, // 198.49.164.0 - 198.49.164.255 { 0xc631a500, 0xc6320fff, REGISTRY_ARIN }, // 198.49.165.0 - 198.50.15.255 { 0xc6321000, 0xc63217ff, REGISTRY_LACNIC }, // 198.50.16.0 - 198.50.23.255 { 0xc6321800, 0xc63303ff, REGISTRY_ARIN }, // 198.50.24.0 - 198.51.3.255 { 0xc6330800, 0xc6330bff, REGISTRY_ARIN }, // 198.51.8.0 - 198.51.11.255 { 0xc6330c00, 0xc6330cff, REGISTRY_RIPENCC }, // 198.51.12.0 - 198.51.12.255 { 0xc6330d00, 0xc63346ff, REGISTRY_ARIN }, // 198.51.13.0 - 198.51.70.255 { 0xc6334700, 0xc63347ff, REGISTRY_LACNIC }, // 198.51.71.0 - 198.51.71.255 { 0xc6334800, 0xc63362ff, REGISTRY_ARIN }, // 198.51.72.0 - 198.51.98.255 { 0xc6336600, 0xc6338eff, REGISTRY_ARIN }, // 198.51.102.0 - 198.51.142.255 { 0xc6338f00, 0xc63392ff, REGISTRY_RIPENCC }, // 198.51.143.0 - 198.51.146.255 { 0xc6339300, 0xc633b9ff, REGISTRY_ARIN }, // 198.51.147.0 - 198.51.185.255 { 0xc633bb00, 0xc633c2ff, REGISTRY_ARIN }, // 198.51.187.0 - 198.51.194.255 { 0xc633c300, 0xc633c3ff, REGISTRY_APNIC }, // 198.51.195.0 - 198.51.195.255 { 0xc633c500, 0xc633d1ff, REGISTRY_ARIN }, // 198.51.197.0 - 198.51.209.255 { 0xc633d200, 0xc633d2ff, REGISTRY_APNIC }, // 198.51.210.0 - 198.51.210.255 { 0xc633d400, 0xc6342bff, REGISTRY_ARIN }, // 198.51.212.0 - 198.52.43.255 { 0xc6342c00, 0xc6342fff, REGISTRY_RIPENCC }, // 198.52.44.0 - 198.52.47.255 { 0xc6343000, 0xc63600ff, REGISTRY_ARIN }, // 198.52.48.0 - 198.54.0.255 { 0xc6360100, 0xc6360aff, REGISTRY_AFRINIC }, // 198.54.1.0 - 198.54.10.255 { 0xc6360b00, 0xc6360eff, REGISTRY_ARIN }, // 198.54.11.0 - 198.54.14.255 { 0xc6360f00, 0xc6363dff, REGISTRY_AFRINIC }, // 198.54.15.0 - 198.54.61.255 { 0xc6363e00, 0xc6363fff, REGISTRY_ARIN }, // 198.54.62.0 - 198.54.63.255 { 0xc6364000, 0xc63650ff, REGISTRY_AFRINIC }, // 198.54.64.0 - 198.54.80.255 { 0xc6365100, 0xc63652ff, REGISTRY_ARIN }, // 198.54.81.0 - 198.54.82.255 { 0xc6365300, 0xc63657ff, REGISTRY_AFRINIC }, // 198.54.83.0 - 198.54.87.255 { 0xc6365800, 0xc6365aff, REGISTRY_ARIN }, // 198.54.88.0 - 198.54.90.255 { 0xc6365b00, 0xc6365bff, REGISTRY_AFRINIC }, // 198.54.91.0 - 198.54.91.255 { 0xc6365c00, 0xc63661ff, REGISTRY_ARIN }, // 198.54.92.0 - 198.54.97.255 { 0xc6366200, 0xc63663ff, REGISTRY_AFRINIC }, // 198.54.98.0 - 198.54.99.255 { 0xc6366400, 0xc6368cff, REGISTRY_ARIN }, // 198.54.100.0 - 198.54.140.255 { 0xc6368d00, 0xc63697ff, REGISTRY_AFRINIC }, // 198.54.141.0 - 198.54.151.255 { 0xc6369800, 0xc63699ff, REGISTRY_ARIN }, // 198.54.152.0 - 198.54.153.255 { 0xc6369a00, 0xc636a3ff, REGISTRY_AFRINIC }, // 198.54.154.0 - 198.54.163.255 { 0xc636a400, 0xc636a4ff, REGISTRY_ARIN }, // 198.54.164.0 - 198.54.164.255 { 0xc636a500, 0xc636a5ff, REGISTRY_AFRINIC }, // 198.54.165.0 - 198.54.165.255 { 0xc636a600, 0xc636a9ff, REGISTRY_ARIN }, // 198.54.166.0 - 198.54.169.255 { 0xc636aa00, 0xc636aaff, REGISTRY_AFRINIC }, // 198.54.170.0 - 198.54.170.255 { 0xc636ab00, 0xc636acff, REGISTRY_ARIN }, // 198.54.171.0 - 198.54.172.255 { 0xc636ad00, 0xc636b5ff, REGISTRY_AFRINIC }, // 198.54.173.0 - 198.54.181.255 { 0xc636b600, 0xc636b6ff, REGISTRY_ARIN }, // 198.54.182.0 - 198.54.182.255 { 0xc636b700, 0xc636c7ff, REGISTRY_AFRINIC }, // 198.54.183.0 - 198.54.199.255 { 0xc636c800, 0xc636c9ff, REGISTRY_ARIN }, // 198.54.200.0 - 198.54.201.255 { 0xc636ca00, 0xc636d2ff, REGISTRY_AFRINIC }, // 198.54.202.0 - 198.54.210.255 { 0xc636d300, 0xc636daff, REGISTRY_ARIN }, // 198.54.211.0 - 198.54.218.255 { 0xc636db00, 0xc636dcff, REGISTRY_AFRINIC }, // 198.54.219.0 - 198.54.220.255 { 0xc636dd00, 0xc636deff, REGISTRY_ARIN }, // 198.54.221.0 - 198.54.222.255 { 0xc636df00, 0xc636dfff, REGISTRY_AFRINIC }, // 198.54.223.0 - 198.54.223.255 { 0xc636e000, 0xc636e0ff, REGISTRY_ARIN }, // 198.54.224.0 - 198.54.224.255 { 0xc636e100, 0xc636e5ff, REGISTRY_AFRINIC }, // 198.54.225.0 - 198.54.229.255 { 0xc636e600, 0xc636e6ff, REGISTRY_ARIN }, // 198.54.230.0 - 198.54.230.255 { 0xc636e700, 0xc636e8ff, REGISTRY_AFRINIC }, // 198.54.231.0 - 198.54.232.255 { 0xc636e900, 0xc636e9ff, REGISTRY_ARIN }, // 198.54.233.0 - 198.54.233.255 { 0xc636ea00, 0xc636eaff, REGISTRY_AFRINIC }, // 198.54.234.0 - 198.54.234.255 { 0xc636eb00, 0xc636f6ff, REGISTRY_ARIN }, // 198.54.235.0 - 198.54.246.255 { 0xc636f700, 0xc636feff, REGISTRY_AFRINIC }, // 198.54.247.0 - 198.54.254.255 { 0xc636ff00, 0xc6371bff, REGISTRY_ARIN }, // 198.54.255.0 - 198.55.27.255 { 0xc6371c00, 0xc6371fff, REGISTRY_RIPENCC }, // 198.55.28.0 - 198.55.31.255 { 0xc6372000, 0xc6380fff, REGISTRY_ARIN }, // 198.55.32.0 - 198.56.15.255 { 0xc6381a00, 0xc63a07ff, REGISTRY_ARIN }, // 198.56.26.0 - 198.58.7.255 { 0xc63a0800, 0xc63a0cff, REGISTRY_LACNIC }, // 198.58.8.0 - 198.58.12.255 { 0xc63a0d00, 0xc63d00ff, REGISTRY_ARIN }, // 198.58.13.0 - 198.61.0.255 { 0xc63d0400, 0xc63d07ff, REGISTRY_ARIN }, // 198.61.4.0 - 198.61.7.255 { 0xc63d1000, 0xc649dbff, REGISTRY_ARIN }, // 198.61.16.0 - 198.73.219.255 { 0xc649dc00, 0xc649dcff, REGISTRY_APNIC }, // 198.73.220.0 - 198.73.220.255 { 0xc649dd00, 0xc66125ff, REGISTRY_ARIN }, // 198.73.221.0 - 198.97.37.255 { 0xc6612700, 0xc66393ff, REGISTRY_ARIN }, // 198.97.39.0 - 198.99.147.255 { 0xc6639400, 0xc66394ff, REGISTRY_RIPENCC }, // 198.99.148.0 - 198.99.148.255 { 0xc6639500, 0xc663acff, REGISTRY_ARIN }, // 198.99.149.0 - 198.99.172.255 { 0xc663ad00, 0xc663adff, REGISTRY_APNIC }, // 198.99.173.0 - 198.99.173.255 { 0xc663ae00, 0xc663ddff, REGISTRY_ARIN }, // 198.99.174.0 - 198.99.221.255 { 0xc663de00, 0xc663deff, REGISTRY_RIPENCC }, // 198.99.222.0 - 198.99.222.255 { 0xc663df00, 0xc6695fff, REGISTRY_ARIN }, // 198.99.223.0 - 198.105.95.255 { 0xc6696000, 0xc6697fff, REGISTRY_RIPENCC }, // 198.105.96.0 - 198.105.127.255 { 0xc6698000, 0xc6854fff, REGISTRY_ARIN }, // 198.105.128.0 - 198.133.79.255 { 0xc6855000, 0xc68555ff, REGISTRY_RIPENCC }, // 198.133.80.0 - 198.133.85.255 { 0xc6855600, 0xc6858bff, REGISTRY_ARIN }, // 198.133.86.0 - 198.133.139.255 { 0xc6858c00, 0xc6858cff, REGISTRY_RIPENCC }, // 198.133.140.0 - 198.133.140.255 { 0xc6858d00, 0xc685cdff, REGISTRY_ARIN }, // 198.133.141.0 - 198.133.205.255 { 0xc685ce00, 0xc685ceff, REGISTRY_RIPENCC }, // 198.133.206.0 - 198.133.206.255 { 0xc685cf00, 0xc685e1ff, REGISTRY_ARIN }, // 198.133.207.0 - 198.133.225.255 { 0xc685e200, 0xc685e2ff, REGISTRY_RIPENCC }, // 198.133.226.0 - 198.133.226.255 { 0xc685e300, 0xc68788ff, REGISTRY_ARIN }, // 198.133.227.0 - 198.135.136.255 { 0xc6878900, 0xc6878aff, REGISTRY_RIPENCC }, // 198.135.137.0 - 198.135.138.255 { 0xc6878b00, 0xc687a6ff, REGISTRY_ARIN }, // 198.135.139.0 - 198.135.166.255 { 0xc687a700, 0xc687a7ff, REGISTRY_RIPENCC }, // 198.135.167.0 - 198.135.167.255 { 0xc687a800, 0xc68dffff, REGISTRY_ARIN }, // 198.135.168.0 - 198.141.255.255 { 0xc68e0000, 0xc68effff, REGISTRY_APNIC }, // 198.142.0.0 - 198.142.255.255 { 0xc68f0000, 0xc6907fff, REGISTRY_ARIN }, // 198.143.0.0 - 198.144.127.255 { 0xc6908000, 0xc6908fff, REGISTRY_APNIC }, // 198.144.128.0 - 198.144.143.255 { 0xc6909000, 0xc6939fff, REGISTRY_ARIN }, // 198.144.144.0 - 198.147.159.255 { 0xc693a000, 0xc693a0ff, REGISTRY_RIPENCC }, // 198.147.160.0 - 198.147.160.255 { 0xc693a100, 0xc694b0ff, REGISTRY_ARIN }, // 198.147.161.0 - 198.148.176.255 { 0xc694b100, 0xc694b2ff, REGISTRY_RIPENCC }, // 198.148.177.0 - 198.148.178.255 { 0xc694b300, 0xc694bcff, REGISTRY_ARIN }, // 198.148.179.0 - 198.148.188.255 { 0xc694bd00, 0xc694bdff, REGISTRY_APNIC }, // 198.148.189.0 - 198.148.189.255 { 0xc694be00, 0xc694bfff, REGISTRY_ARIN }, // 198.148.190.0 - 198.148.191.255 { 0xc694c000, 0xc694c5ff, REGISTRY_APNIC }, // 198.148.192.0 - 198.148.197.255 { 0xc694c600, 0xc69783ff, REGISTRY_ARIN }, // 198.148.198.0 - 198.151.131.255 { 0xc6978400, 0xc69784ff, REGISTRY_LACNIC }, // 198.151.132.0 - 198.151.132.255 { 0xc6978500, 0xc6b3e0ff, REGISTRY_ARIN }, // 198.151.133.0 - 198.179.224.255 { 0xc6b3e100, 0xc6b3e1ff, REGISTRY_APNIC }, // 198.179.225.0 - 198.179.225.255 { 0xc6b3e200, 0xc6b48dff, REGISTRY_ARIN }, // 198.179.226.0 - 198.180.141.255 { 0xc6b48e00, 0xc6b48eff, REGISTRY_APNIC }, // 198.180.142.0 - 198.180.142.255 { 0xc6b48f00, 0xc6b495ff, REGISTRY_ARIN }, // 198.180.143.0 - 198.180.149.255 { 0xc6b49600, 0xc6b499ff, REGISTRY_RIPENCC }, // 198.180.150.0 - 198.180.153.255 { 0xc6b49a00, 0xc6b8a0ff, REGISTRY_ARIN }, // 198.180.154.0 - 198.184.160.255 { 0xc6b8a100, 0xc6b8a1ff, REGISTRY_LACNIC }, // 198.184.161.0 - 198.184.161.255 { 0xc6b8a200, 0xc6c7ffff, REGISTRY_ARIN }, // 198.184.162.0 - 198.199.255.255 { 0xc6c80000, 0xc6c809ff, REGISTRY_APNIC }, // 198.200.0.0 - 198.200.9.255 { 0xc6c80a00, 0xc6cec4ff, REGISTRY_ARIN }, // 198.200.10.0 - 198.206.196.255 { 0xc6cec500, 0xc6cec5ff, REGISTRY_RIPENCC }, // 198.206.197.0 - 198.206.197.255 { 0xc6cec600, 0xc6cec7ff, REGISTRY_ARIN }, // 198.206.198.0 - 198.206.199.255 { 0xc6cec800, 0xc6cecaff, REGISTRY_RIPENCC }, // 198.206.200.0 - 198.206.202.255 { 0xc6cecb00, 0xc6f07fff, REGISTRY_ARIN }, // 198.206.203.0 - 198.240.127.255 { 0xc6f08000, 0xc6f0ffff, REGISTRY_RIPENCC }, // 198.240.128.0 - 198.240.255.255 { 0xc6f10000, 0xc6f409ff, REGISTRY_ARIN }, // 198.241.0.0 - 198.244.9.255 { 0xc6f40a00, 0xc6f40bff, REGISTRY_APNIC }, // 198.244.10.0 - 198.244.11.255 { 0xc6f40c00, 0xc6f6deff, REGISTRY_ARIN }, // 198.244.12.0 - 198.246.222.255 { 0xc6f6df00, 0xc6f6dfff, REGISTRY_APNIC }, // 198.246.223.0 - 198.246.223.255 { 0xc6f6e000, 0xc70917ff, REGISTRY_ARIN }, // 198.246.224.0 - 199.9.23.255 { 0xc7091800, 0xc7091fff, REGISTRY_APNIC }, // 199.9.24.0 - 199.9.31.255 { 0xc7092000, 0xc715abff, REGISTRY_ARIN }, // 199.9.32.0 - 199.21.171.255 { 0xc715b000, 0xc71ae9ff, REGISTRY_ARIN }, // 199.21.176.0 - 199.26.233.255 { 0xc71aea00, 0xc71aeaff, REGISTRY_LACNIC }, // 199.26.234.0 - 199.26.234.255 { 0xc71aeb00, 0xc72b11ff, REGISTRY_ARIN }, // 199.26.235.0 - 199.43.17.255 { 0xc72b1200, 0xc72b13ff, REGISTRY_APNIC }, // 199.43.18.0 - 199.43.19.255 { 0xc72b1400, 0xc72b2cff, REGISTRY_ARIN }, // 199.43.20.0 - 199.43.44.255 { 0xc72b2d00, 0xc72b2dff, REGISTRY_APNIC }, // 199.43.45.0 - 199.43.45.255 { 0xc72b2e00, 0xc72b3eff, REGISTRY_ARIN }, // 199.43.46.0 - 199.43.62.255 { 0xc72b3f00, 0xc72b3fff, REGISTRY_APNIC }, // 199.43.63.0 - 199.43.63.255 { 0xc72b4000, 0xc72bf5ff, REGISTRY_ARIN }, // 199.43.64.0 - 199.43.245.255 { 0xc72bf600, 0xc72bf7ff, REGISTRY_RIPENCC }, // 199.43.246.0 - 199.43.247.255 { 0xc72bf800, 0xc734ffff, REGISTRY_ARIN }, // 199.43.248.0 - 199.52.255.255 { 0xc7350000, 0xc735ffff, REGISTRY_RIPENCC }, // 199.53.0.0 - 199.53.255.255 { 0xc7360000, 0xc758cfff, REGISTRY_ARIN }, // 199.54.0.0 - 199.88.207.255 { 0xc758d000, 0xc758d7ff, REGISTRY_RIPENCC }, // 199.88.208.0 - 199.88.215.255 { 0xc758d800, 0xc75b0fff, REGISTRY_ARIN }, // 199.88.216.0 - 199.91.15.255 { 0xc75b1000, 0xc75b1fff, REGISTRY_RIPENCC }, // 199.91.16.0 - 199.91.31.255 { 0xc75b2000, 0xc76707ff, REGISTRY_ARIN }, // 199.91.32.0 - 199.103.7.255 { 0xc7670800, 0xc7670cff, REGISTRY_RIPENCC }, // 199.103.8.0 - 199.103.12.255 { 0xc7670d00, 0xc76765ff, REGISTRY_ARIN }, // 199.103.13.0 - 199.103.101.255 { 0xc7676600, 0xc76766ff, REGISTRY_LACNIC }, // 199.103.102.0 - 199.103.102.255 { 0xc7676700, 0xc7a621ff, REGISTRY_ARIN }, // 199.103.103.0 - 199.166.33.255 { 0xc7a62200, 0xc7a625ff, REGISTRY_APNIC }, // 199.166.34.0 - 199.166.37.255 { 0xc7a62600, 0xc7d438ff, REGISTRY_ARIN }, // 199.166.38.0 - 199.212.56.255 { 0xc7d43a00, 0xc7f88fff, REGISTRY_ARIN }, // 199.212.58.0 - 199.248.143.255 { 0xc7f89000, 0xc7f890ff, REGISTRY_LACNIC }, // 199.248.144.0 - 199.248.144.255 { 0xc7f89100, 0xc7ffffff, REGISTRY_ARIN }, // 199.248.145.0 - 199.255.255.255 { 0xc8000000, 0xc8003fff, REGISTRY_LACNIC }, // 200.0.0.0 - 200.0.63.255 { 0xc8004100, 0xc8005dff, REGISTRY_LACNIC }, // 200.0.65.0 - 200.0.93.255 { 0xc8005e00, 0xc8005eff, REGISTRY_ARIN }, // 200.0.94.0 - 200.0.94.255 { 0xc8005f00, 0xc80088ff, REGISTRY_LACNIC }, // 200.0.95.0 - 200.0.136.255 { 0xc8008900, 0xc8008aff, REGISTRY_ARIN }, // 200.0.137.0 - 200.0.138.255 { 0xc8008b00, 0xc800c9ff, REGISTRY_LACNIC }, // 200.0.139.0 - 200.0.201.255 { 0xc800cc00, 0xc800d7ff, REGISTRY_LACNIC }, // 200.0.204.0 - 200.0.215.255 { 0xc800d800, 0xc800dfff, REGISTRY_ARIN }, // 200.0.216.0 - 200.0.223.255 { 0xc800e000, 0xc8016fff, REGISTRY_LACNIC }, // 200.0.224.0 - 200.1.111.255 { 0xc8017100, 0xc80171ff, REGISTRY_LACNIC }, // 200.1.113.0 - 200.1.113.255 { 0xc8017300, 0xc8019fff, REGISTRY_LACNIC }, // 200.1.115.0 - 200.1.159.255 { 0xc801a000, 0xc801a0ff, REGISTRY_ARIN }, // 200.1.160.0 - 200.1.160.255 { 0xc801a100, 0xc80309ff, REGISTRY_LACNIC }, // 200.1.161.0 - 200.3.9.255 { 0xc8030c00, 0xc803c3ff, REGISTRY_LACNIC }, // 200.3.12.0 - 200.3.195.255 { 0xc803c800, 0xc804ffff, REGISTRY_LACNIC }, // 200.3.200.0 - 200.4.255.255 { 0xc8050000, 0xc80508ff, REGISTRY_ARIN }, // 200.5.0.0 - 200.5.8.255 { 0xc8050900, 0xc8050aff, REGISTRY_LACNIC }, // 200.5.9.0 - 200.5.10.255 { 0xc8050b00, 0xc8050bff, REGISTRY_ARIN }, // 200.5.11.0 - 200.5.11.255 { 0xc8050c00, 0xc80630ff, REGISTRY_LACNIC }, // 200.5.12.0 - 200.6.48.255 { 0xc8063400, 0xc8064fff, REGISTRY_LACNIC }, // 200.6.52.0 - 200.6.79.255 { 0xc8066000, 0xc80951ff, REGISTRY_LACNIC }, // 200.6.96.0 - 200.9.81.255 { 0xc8095200, 0xc80953ff, REGISTRY_ARIN }, // 200.9.82.0 - 200.9.83.255 { 0xc8095400, 0xc80972ff, REGISTRY_LACNIC }, // 200.9.84.0 - 200.9.114.255 { 0xc8097300, 0xc80973ff, REGISTRY_ARIN }, // 200.9.115.0 - 200.9.115.255 { 0xc8097400, 0xc80999ff, REGISTRY_LACNIC }, // 200.9.116.0 - 200.9.153.255 { 0xc8099d00, 0xc80a97ff, REGISTRY_LACNIC }, // 200.9.157.0 - 200.10.151.255 { 0xc80a9800, 0xc80a98ff, REGISTRY_ARIN }, // 200.10.152.0 - 200.10.152.255 { 0xc80a9900, 0xc80a9aff, REGISTRY_LACNIC }, // 200.10.153.0 - 200.10.154.255 { 0xc80a9b00, 0xc80a9bff, REGISTRY_ARIN }, // 200.10.155.0 - 200.10.155.255 { 0xc80a9c00, 0xc80a9fff, REGISTRY_LACNIC }, // 200.10.156.0 - 200.10.159.255 { 0xc80aa000, 0xc80aa0ff, REGISTRY_ARIN }, // 200.10.160.0 - 200.10.160.255 { 0xc80aa100, 0xc80aa4ff, REGISTRY_LACNIC }, // 200.10.161.0 - 200.10.164.255 { 0xc80aa500, 0xc80aa6ff, REGISTRY_ARIN }, // 200.10.165.0 - 200.10.166.255 { 0xc80aa700, 0xc80aeaff, REGISTRY_LACNIC }, // 200.10.167.0 - 200.10.234.255 { 0xc80aec00, 0xc80b20ff, REGISTRY_LACNIC }, // 200.10.236.0 - 200.11.32.255 { 0xc80b2200, 0xc80b67ff, REGISTRY_LACNIC }, // 200.11.34.0 - 200.11.103.255 { 0xc80b7000, 0xc80b77ff, REGISTRY_LACNIC }, // 200.11.112.0 - 200.11.119.255 { 0xc80b8000, 0xc80c98ff, REGISTRY_LACNIC }, // 200.11.128.0 - 200.12.152.255 { 0xc80c9a00, 0xc80ca7ff, REGISTRY_LACNIC }, // 200.12.154.0 - 200.12.167.255 { 0xc80ca800, 0xc80ca8ff, REGISTRY_ARIN }, // 200.12.168.0 - 200.12.168.255 { 0xc80ca900, 0xc80cdfff, REGISTRY_LACNIC }, // 200.12.169.0 - 200.12.223.255 { 0xc80ce000, 0xc80cefff, REGISTRY_ARIN }, // 200.12.224.0 - 200.12.239.255 { 0xc80cf000, 0xc80d1fff, REGISTRY_LACNIC }, // 200.12.240.0 - 200.13.31.255 { 0xc80d2100, 0xc80d53ff, REGISTRY_LACNIC }, // 200.13.33.0 - 200.13.83.255 { 0xc80d5800, 0xc80e37ff, REGISTRY_LACNIC }, // 200.13.88.0 - 200.14.55.255 { 0xc80e4000, 0xc80e50ff, REGISTRY_LACNIC }, // 200.14.64.0 - 200.14.80.255 { 0xc80e5200, 0xc80e77ff, REGISTRY_LACNIC }, // 200.14.82.0 - 200.14.119.255 { 0xc80e8000, 0xc80effff, REGISTRY_LACNIC }, // 200.14.128.0 - 200.14.255.255 { 0xc80f0000, 0xc80fffff, REGISTRY_ARIN }, // 200.15.0.0 - 200.15.255.255 { 0xc8100000, 0xc81007ff, REGISTRY_LACNIC }, // 200.16.0.0 - 200.16.7.255 { 0xc8100800, 0xc8100fff, REGISTRY_AFRINIC }, // 200.16.8.0 - 200.16.15.255 { 0xc8101000, 0xc81057ff, REGISTRY_LACNIC }, // 200.16.16.0 - 200.16.87.255 { 0xc8105800, 0xc81058ff, REGISTRY_ARIN }, // 200.16.88.0 - 200.16.88.255 { 0xc8105900, 0xc8174aff, REGISTRY_LACNIC }, // 200.16.89.0 - 200.23.74.255 { 0xc8174c00, 0xc8178bff, REGISTRY_LACNIC }, // 200.23.76.0 - 200.23.139.255 { 0xc8178d00, 0xc81adfff, REGISTRY_LACNIC }, // 200.23.141.0 - 200.26.223.255 { 0xc81b0000, 0xc81dffff, REGISTRY_LACNIC }, // 200.27.0.0 - 200.29.255.255 { 0xc81e0000, 0xc81e3fff, REGISTRY_ARIN }, // 200.30.0.0 - 200.30.63.255 { 0xc81e4000, 0xc821cdff, REGISTRY_LACNIC }, // 200.30.64.0 - 200.33.205.255 { 0xc821cf00, 0xc8228bff, REGISTRY_LACNIC }, // 200.33.207.0 - 200.34.139.255 { 0xc8228d00, 0xc8238fff, REGISTRY_LACNIC }, // 200.34.141.0 - 200.35.143.255 { 0xc8239800, 0xc8277fff, REGISTRY_LACNIC }, // 200.35.152.0 - 200.39.127.255 { 0xc827a000, 0xc831ffff, REGISTRY_LACNIC }, // 200.39.160.0 - 200.49.255.255 { 0xc8320000, 0xc8321fff, REGISTRY_ARIN }, // 200.50.0.0 - 200.50.31.255 { 0xc8322000, 0xc8323fff, REGISTRY_LACNIC }, // 200.50.32.0 - 200.50.63.255 { 0xc8324000, 0xc8325fff, REGISTRY_ARIN }, // 200.50.64.0 - 200.50.95.255 { 0xc8326000, 0xc8327fff, REGISTRY_LACNIC }, // 200.50.96.0 - 200.50.127.255 { 0xc8328000, 0xc8328fff, REGISTRY_ARIN }, // 200.50.128.0 - 200.50.143.255 { 0xc8329000, 0xc832bfff, REGISTRY_LACNIC }, // 200.50.144.0 - 200.50.191.255 { 0xc832e000, 0xc834ffff, REGISTRY_LACNIC }, // 200.50.224.0 - 200.52.255.255 { 0xc8350800, 0xc839ffff, REGISTRY_LACNIC }, // 200.53.8.0 - 200.57.255.255 { 0xc83a0000, 0xc83a3fff, REGISTRY_ARIN }, // 200.58.0.0 - 200.58.63.255 { 0xc83a4000, 0xc83af7ff, REGISTRY_LACNIC }, // 200.58.64.0 - 200.58.247.255 { 0xc83b0000, 0xc83bcfff, REGISTRY_LACNIC }, // 200.59.0.0 - 200.59.207.255 { 0xc83be000, 0xc83dffff, REGISTRY_LACNIC }, // 200.59.224.0 - 200.61.255.255 { 0xc83e0000, 0xc83e3fff, REGISTRY_ARIN }, // 200.62.0.0 - 200.62.63.255 { 0xc83e4000, 0xc8475fff, REGISTRY_LACNIC }, // 200.62.64.0 - 200.71.95.255 { 0xc8477000, 0xc849d7ff, REGISTRY_LACNIC }, // 200.71.112.0 - 200.73.215.255 { 0xc849e000, 0xc8512fff, REGISTRY_LACNIC }, // 200.73.224.0 - 200.81.47.255 { 0xc8513800, 0xc86a7fff, REGISTRY_LACNIC }, // 200.81.56.0 - 200.106.127.255 { 0xc86a9000, 0xc86b6fff, REGISTRY_LACNIC }, // 200.106.144.0 - 200.107.111.255 { 0xc86b7800, 0xc86bd7ff, REGISTRY_LACNIC }, // 200.107.120.0 - 200.107.215.255 { 0xc86be000, 0xc86c9fff, REGISTRY_LACNIC }, // 200.107.224.0 - 200.108.159.255 { 0xc86cc000, 0xc86e5fff, REGISTRY_LACNIC }, // 200.108.192.0 - 200.110.95.255 { 0xc86e7000, 0xc86ec7ff, REGISTRY_LACNIC }, // 200.110.112.0 - 200.110.199.255 { 0xc86ed000, 0xc8735fff, REGISTRY_LACNIC }, // 200.110.208.0 - 200.115.95.255 { 0xc8738000, 0xc87bdfff, REGISTRY_LACNIC }, // 200.115.128.0 - 200.123.223.255 { 0xc87bf000, 0xc87c3fff, REGISTRY_LACNIC }, // 200.123.240.0 - 200.124.63.255 { 0xc87c6000, 0xc87c9fff, REGISTRY_LACNIC }, // 200.124.96.0 - 200.124.159.255 { 0xc87cb000, 0xc87cbbff, REGISTRY_LACNIC }, // 200.124.176.0 - 200.124.187.255 { 0xc87cc000, 0xc87da7ff, REGISTRY_LACNIC }, // 200.124.192.0 - 200.125.167.255 { 0xc87db800, 0xc88ee7ff, REGISTRY_LACNIC }, // 200.125.184.0 - 200.142.231.255 { 0xc88ef000, 0xc8bb5fff, REGISTRY_LACNIC }, // 200.142.240.0 - 200.187.95.255 { 0xc8bb7000, 0xc8d7efff, REGISTRY_LACNIC }, // 200.187.112.0 - 200.215.239.255 { 0xc8d80000, 0xc8db07ff, REGISTRY_LACNIC }, // 200.216.0.0 - 200.219.7.255 { 0xc8db4000, 0xc8e163ff, REGISTRY_LACNIC }, // 200.219.64.0 - 200.225.99.255 { 0xc8e16800, 0xc8e5efff, REGISTRY_LACNIC }, // 200.225.104.0 - 200.229.239.255 { 0xc8e5f800, 0xc8e91fff, REGISTRY_LACNIC }, // 200.229.248.0 - 200.233.31.255 { 0xc8e93000, 0xc92e4fff, REGISTRY_LACNIC }, // 200.233.48.0 - 201.46.79.255 { 0xc92e6000, 0xc9317fff, REGISTRY_LACNIC }, // 201.46.96.0 - 201.49.127.255 { 0xc9319000, 0xc946ffff, REGISTRY_LACNIC }, // 201.49.144.0 - 201.70.255.255 { 0xc9472000, 0xc9472fff, REGISTRY_LACNIC }, // 201.71.32.0 - 201.71.47.255 { 0xc9474000, 0xc947bfff, REGISTRY_LACNIC }, // 201.71.64.0 - 201.71.191.255 { 0xc947d000, 0xc94d01ff, REGISTRY_LACNIC }, // 201.71.208.0 - 201.77.1.255 { 0xc94d0800, 0xc94d5fff, REGISTRY_LACNIC }, // 201.77.8.0 - 201.77.95.255 { 0xc94d7000, 0xc94d8fff, REGISTRY_LACNIC }, // 201.77.112.0 - 201.77.143.255 { 0xc94da000, 0xc98304ff, REGISTRY_LACNIC }, // 201.77.160.0 - 201.131.4.255 { 0xc9830600, 0xc98309ff, REGISTRY_LACNIC }, // 201.131.6.0 - 201.131.9.255 { 0xc9830c00, 0xc9833fff, REGISTRY_LACNIC }, // 201.131.12.0 - 201.131.63.255 { 0xc9834100, 0xc98357ff, REGISTRY_LACNIC }, // 201.131.65.0 - 201.131.87.255 { 0xc9835a00, 0xc98366ff, REGISTRY_LACNIC }, // 201.131.90.0 - 201.131.102.255 { 0xc9836800, 0xc9946fff, REGISTRY_LACNIC }, // 201.131.104.0 - 201.148.111.255 { 0xc9947400, 0xc99e5fff, REGISTRY_LACNIC }, // 201.148.116.0 - 201.158.95.255 { 0xc99e6800, 0xc99f9fff, REGISTRY_LACNIC }, // 201.158.104.0 - 201.159.159.255 { 0xc99fa800, 0xc9b5ffff, REGISTRY_LACNIC }, // 201.159.168.0 - 201.181.255.255 { 0xc9b70000, 0xc9d83fff, REGISTRY_LACNIC }, // 201.183.0.0 - 201.216.63.255 { 0xc9d88000, 0xc9de1fff, REGISTRY_LACNIC }, // 201.216.128.0 - 201.222.31.255 { 0xc9de3000, 0xc9ffffff, REGISTRY_LACNIC }, // 201.222.48.0 - 201.255.255.255 { 0xca000000, 0xca0097ff, REGISTRY_APNIC }, // 202.0.0.0 - 202.0.151.255 { 0xca009900, 0xca010fff, REGISTRY_APNIC }, // 202.0.153.0 - 202.1.15.255 { 0xca012000, 0xca01dfff, REGISTRY_APNIC }, // 202.1.32.0 - 202.1.223.255 { 0xca01e800, 0xca034bff, REGISTRY_APNIC }, // 202.1.232.0 - 202.3.75.255 { 0xca034d00, 0xca04a1ff, REGISTRY_APNIC }, // 202.3.77.0 - 202.4.161.255 { 0xca04a400, 0xca050fff, REGISTRY_APNIC }, // 202.4.164.0 - 202.5.15.255 { 0xca051000, 0xca051fff, REGISTRY_ARIN }, // 202.5.16.0 - 202.5.31.255 { 0xca052000, 0xca073aff, REGISTRY_APNIC }, // 202.5.32.0 - 202.7.58.255 { 0xca073c00, 0xca085fff, REGISTRY_APNIC }, // 202.7.60.0 - 202.8.95.255 { 0xca088000, 0xca0943ff, REGISTRY_APNIC }, // 202.8.128.0 - 202.9.67.255 { 0xca094500, 0xca0c79ff, REGISTRY_APNIC }, // 202.9.69.0 - 202.12.121.255 { 0xca0c7d00, 0xca0ebaff, REGISTRY_APNIC }, // 202.12.125.0 - 202.14.186.255 { 0xca0ebc00, 0xca0edfff, REGISTRY_APNIC }, // 202.14.188.0 - 202.14.223.255 { 0xca0ee100, 0xca146dff, REGISTRY_APNIC }, // 202.14.225.0 - 202.20.109.255 { 0xca146f00, 0xca1b71ff, REGISTRY_APNIC }, // 202.20.111.0 - 202.27.113.255 { 0xca1b7300, 0xca1b81ff, REGISTRY_APNIC }, // 202.27.115.0 - 202.27.129.255 { 0xca1b8400, 0xca1bccff, REGISTRY_APNIC }, // 202.27.132.0 - 202.27.204.255 { 0xca1bd000, 0xca1be4ff, REGISTRY_APNIC }, // 202.27.208.0 - 202.27.228.255 { 0xca1be800, 0xca241bff, REGISTRY_APNIC }, // 202.27.232.0 - 202.36.27.255 { 0xca241d00, 0xca2449ff, REGISTRY_APNIC }, // 202.36.29.0 - 202.36.73.255 { 0xca244b00, 0xca2456ff, REGISTRY_APNIC }, // 202.36.75.0 - 202.36.86.255 { 0xca245800, 0xca2473ff, REGISTRY_APNIC }, // 202.36.88.0 - 202.36.115.255 { 0xca247600, 0xca2479ff, REGISTRY_APNIC }, // 202.36.118.0 - 202.36.121.255 { 0xca247c00, 0xca249fff, REGISTRY_APNIC }, // 202.36.124.0 - 202.36.159.255 { 0xca24a200, 0xca2527ff, REGISTRY_APNIC }, // 202.36.162.0 - 202.37.39.255 { 0xca252a00, 0xca252dff, REGISTRY_APNIC }, // 202.37.42.0 - 202.37.45.255 { 0xca253000, 0xca2533ff, REGISTRY_APNIC }, // 202.37.48.0 - 202.37.51.255 { 0xca253600, 0xca2549ff, REGISTRY_APNIC }, // 202.37.54.0 - 202.37.73.255 { 0xca254b00, 0xca2584ff, REGISTRY_APNIC }, // 202.37.75.0 - 202.37.132.255 { 0xca258600, 0xca2597ff, REGISTRY_APNIC }, // 202.37.134.0 - 202.37.151.255 { 0xca259900, 0xca25a5ff, REGISTRY_APNIC }, // 202.37.153.0 - 202.37.165.255 { 0xca25a700, 0xca25c6ff, REGISTRY_APNIC }, // 202.37.167.0 - 202.37.198.255 { 0xca25c800, 0xca25eaff, REGISTRY_APNIC }, // 202.37.200.0 - 202.37.234.255 { 0xca25ec00, 0xca2f7bff, REGISTRY_APNIC }, // 202.37.236.0 - 202.47.123.255 { 0xca2f7d00, 0xca3120ff, REGISTRY_APNIC }, // 202.47.125.0 - 202.49.32.255 { 0xca312200, 0xca3171ff, REGISTRY_APNIC }, // 202.49.34.0 - 202.49.113.255 { 0xca317300, 0xca31f7ff, REGISTRY_APNIC }, // 202.49.115.0 - 202.49.247.255 { 0xca31f900, 0xca322fff, REGISTRY_APNIC }, // 202.49.249.0 - 202.50.47.255 { 0xca323100, 0xca324bff, REGISTRY_APNIC }, // 202.50.49.0 - 202.50.75.255 { 0xca324e00, 0xca32f1ff, REGISTRY_APNIC }, // 202.50.78.0 - 202.50.241.255 { 0xca32f300, 0xca3427ff, REGISTRY_APNIC }, // 202.50.243.0 - 202.52.39.255 { 0xca342900, 0xca348fff, REGISTRY_APNIC }, // 202.52.41.0 - 202.52.143.255 { 0xca349100, 0xca3587ff, REGISTRY_APNIC }, // 202.52.145.0 - 202.53.135.255 { 0xca358c00, 0xca3a64ff, REGISTRY_APNIC }, // 202.53.140.0 - 202.58.100.255 { 0xca3a6600, 0xca3b07ff, REGISTRY_APNIC }, // 202.58.102.0 - 202.59.7.255 { 0xca3b1000, 0xca3bf8ff, REGISTRY_APNIC }, // 202.59.16.0 - 202.59.248.255 { 0xca3bfa00, 0xca3d60ff, REGISTRY_APNIC }, // 202.59.250.0 - 202.61.96.255 { 0xca3d6200, 0xca3d6bff, REGISTRY_APNIC }, // 202.61.98.0 - 202.61.107.255 { 0xca3d6d00, 0xca3d6eff, REGISTRY_APNIC }, // 202.61.109.0 - 202.61.110.255 { 0xca3d7000, 0xca4a2fff, REGISTRY_APNIC }, // 202.61.112.0 - 202.74.47.255 { 0xca4a3100, 0xca52ffff, REGISTRY_APNIC }, // 202.74.49.0 - 202.82.255.255 { 0xca530400, 0xca5dffff, REGISTRY_APNIC }, // 202.83.4.0 - 202.93.255.255 { 0xca5e2000, 0xca5e43ff, REGISTRY_APNIC }, // 202.94.32.0 - 202.94.67.255 { 0xca5e4500, 0xca7affff, REGISTRY_APNIC }, // 202.94.69.0 - 202.122.255.255 { 0xca7b0000, 0xca7b1fff, REGISTRY_AFRINIC }, // 202.123.0.0 - 202.123.31.255 { 0xca7b2000, 0xca7cf7ff, REGISTRY_APNIC }, // 202.123.32.0 - 202.124.247.255 { 0xca7d0000, 0xca7d53ff, REGISTRY_APNIC }, // 202.125.0.0 - 202.125.83.255 { 0xca7d5600, 0xca7d6bff, REGISTRY_APNIC }, // 202.125.86.0 - 202.125.107.255 { 0xca7d6d00, 0xca90bfff, REGISTRY_APNIC }, // 202.125.109.0 - 202.144.191.255 { 0xca90d000, 0xca9ef7ff, REGISTRY_APNIC }, // 202.144.208.0 - 202.158.247.255 { 0xca9efc00, 0xcaaabfff, REGISTRY_APNIC }, // 202.158.252.0 - 202.170.191.255 { 0xcaaac000, 0xcaaac3ff, REGISTRY_ARIN }, // 202.170.192.0 - 202.170.195.255 { 0xcaaac400, 0xcaad73ff, REGISTRY_APNIC }, // 202.170.196.0 - 202.173.115.255 { 0xcaad7400, 0xcaad77ff, REGISTRY_ARIN }, // 202.173.116.0 - 202.173.119.255 { 0xcaad7c00, 0xcab503ff, REGISTRY_APNIC }, // 202.173.124.0 - 202.181.3.255 { 0xcab50800, 0xcb0070ff, REGISTRY_APNIC }, // 202.181.8.0 - 203.0.112.255 { 0xcb007200, 0xcb015aff, REGISTRY_APNIC }, // 203.0.114.0 - 203.1.90.255 { 0xcb015c00, 0xcb0296ff, REGISTRY_APNIC }, // 203.1.92.0 - 203.2.150.255 { 0xcb029800, 0xcb04baff, REGISTRY_APNIC }, // 203.2.152.0 - 203.4.186.255 { 0xcb04bc00, 0xcb05c6ff, REGISTRY_APNIC }, // 203.4.188.0 - 203.5.198.255 { 0xcb05c800, 0xcb06cfff, REGISTRY_APNIC }, // 203.5.200.0 - 203.6.207.255 { 0xcb06d800, 0xcb08deff, REGISTRY_APNIC }, // 203.6.216.0 - 203.8.222.255 { 0xcb08e000, 0xcb0b5aff, REGISTRY_APNIC }, // 203.8.224.0 - 203.11.90.255 { 0xcb0b5c00, 0xcb0c55ff, REGISTRY_APNIC }, // 203.11.92.0 - 203.12.85.255 { 0xcb0c5700, 0xcb0cfbff, REGISTRY_APNIC }, // 203.12.87.0 - 203.12.251.255 { 0xcb0d0000, 0xcb0de6ff, REGISTRY_APNIC }, // 203.13.0.0 - 203.13.230.255 { 0xcb0de800, 0xcb100aff, REGISTRY_APNIC }, // 203.13.232.0 - 203.16.10.255 { 0xcb100c00, 0xcb1140ff, REGISTRY_APNIC }, // 203.16.12.0 - 203.17.64.255 { 0xcb114200, 0xcb1188ff, REGISTRY_APNIC }, // 203.17.66.0 - 203.17.136.255 { 0xcb118a00, 0xcb11b0ff, REGISTRY_APNIC }, // 203.17.138.0 - 203.17.176.255 { 0xcb11b200, 0xcb11bcff, REGISTRY_APNIC }, // 203.17.178.0 - 203.17.188.255 { 0xcb11be00, 0xcb1267ff, REGISTRY_APNIC }, // 203.17.190.0 - 203.18.103.255 { 0xcb126900, 0xcb126eff, REGISTRY_APNIC }, // 203.18.105.0 - 203.18.110.255 { 0xcb127000, 0xcb129bff, REGISTRY_APNIC }, // 203.18.112.0 - 203.18.155.255 { 0xcb12a000, 0xcb13efff, REGISTRY_APNIC }, // 203.18.160.0 - 203.19.239.255 { 0xcb13f100, 0xcb1429ff, REGISTRY_APNIC }, // 203.19.241.0 - 203.20.41.255 { 0xcb142b00, 0xcb1448ff, REGISTRY_APNIC }, // 203.20.43.0 - 203.20.72.255 { 0xcb144a00, 0xcb166bff, REGISTRY_APNIC }, // 203.20.74.0 - 203.22.107.255 { 0xcb166e00, 0xcb16a6ff, REGISTRY_APNIC }, // 203.22.110.0 - 203.22.166.255 { 0xcb16a800, 0xcb1700ff, REGISTRY_APNIC }, // 203.22.168.0 - 203.23.0.255 { 0xcb170200, 0xcb1733ff, REGISTRY_APNIC }, // 203.23.2.0 - 203.23.51.255 { 0xcb173500, 0xcb1745ff, REGISTRY_APNIC }, // 203.23.53.0 - 203.23.69.255 { 0xcb174700, 0xcb174cff, REGISTRY_APNIC }, // 203.23.71.0 - 203.23.76.255 { 0xcb174e00, 0xcb1825ff, REGISTRY_APNIC }, // 203.23.78.0 - 203.24.37.255 { 0xcb182700, 0xcb1987ff, REGISTRY_APNIC }, // 203.24.39.0 - 203.25.135.255 { 0xcb198900, 0xcb19a0ff, REGISTRY_APNIC }, // 203.25.137.0 - 203.25.160.255 { 0xcb19a200, 0xcb1a2eff, REGISTRY_APNIC }, // 203.25.162.0 - 203.26.46.255 { 0xcb1a3000, 0xcb1b21ff, REGISTRY_APNIC }, // 203.26.48.0 - 203.27.33.255 { 0xcb1b2300, 0xcb1c38ff, REGISTRY_APNIC }, // 203.27.35.0 - 203.28.56.255 { 0xcb1c3a00, 0xcb1cfbff, REGISTRY_APNIC }, // 203.28.58.0 - 203.28.251.255 { 0xcb1cfe00, 0xcb1edcff, REGISTRY_APNIC }, // 203.28.254.0 - 203.30.220.255 { 0xcb1ede00, 0xcb2055ff, REGISTRY_APNIC }, // 203.30.222.0 - 203.32.85.255 { 0xcb205800, 0xcb20bbff, REGISTRY_APNIC }, // 203.32.88.0 - 203.32.187.255 { 0xcb20bd00, 0xcb2197ff, REGISTRY_APNIC }, // 203.32.189.0 - 203.33.151.255 { 0xcb219800, 0xcb2199ff, REGISTRY_ARIN }, // 203.33.152.0 - 203.33.153.255 { 0xcb219a00, 0xcb21bcff, REGISTRY_APNIC }, // 203.33.154.0 - 203.33.188.255 { 0xcb21be00, 0xcb2251ff, REGISTRY_APNIC }, // 203.33.190.0 - 203.34.81.255 { 0xcb225300, 0xcb227cff, REGISTRY_APNIC }, // 203.34.83.0 - 203.34.124.255 { 0xcb227e00, 0xcb22edff, REGISTRY_APNIC }, // 203.34.126.0 - 203.34.237.255 { 0xcb22ef00, 0xcb22f0ff, REGISTRY_APNIC }, // 203.34.239.0 - 203.34.240.255 { 0xcb22f200, 0xcb3743ff, REGISTRY_APNIC }, // 203.34.242.0 - 203.55.67.255 { 0xcb374500, 0xcb3954ff, REGISTRY_APNIC }, // 203.55.69.0 - 203.57.84.255 { 0xcb395600, 0xcb52d9ff, REGISTRY_APNIC }, // 203.57.86.0 - 203.82.217.255 { 0xcb52db00, 0xcb595fff, REGISTRY_APNIC }, // 203.82.219.0 - 203.89.95.255 { 0xcb598000, 0xcb72fbff, REGISTRY_APNIC }, // 203.89.128.0 - 203.114.251.255 { 0xcb730000, 0xcbaf07ff, REGISTRY_APNIC }, // 203.115.0.0 - 203.175.7.255 { 0xcbaf1000, 0xcbaf5fff, REGISTRY_APNIC }, // 203.175.16.0 - 203.175.95.255 { 0xcbaf7000, 0xcbbd17ff, REGISTRY_APNIC }, // 203.175.112.0 - 203.189.23.255 { 0xcbbd1900, 0xcbbd73ff, REGISTRY_APNIC }, // 203.189.25.0 - 203.189.115.255 { 0xcbbd7800, 0xcbc26fff, REGISTRY_APNIC }, // 203.189.120.0 - 203.194.111.255 { 0xcbc27800, 0xcbd337ff, REGISTRY_APNIC }, // 203.194.120.0 - 203.211.55.255 { 0xcbd33c00, 0xcbd730ff, REGISTRY_APNIC }, // 203.211.60.0 - 203.215.48.255 { 0xcbd73200, 0xcbd989ff, REGISTRY_APNIC }, // 203.215.50.0 - 203.217.137.255 { 0xcbd98c00, 0xcbffffff, REGISTRY_APNIC }, // 203.217.140.0 - 203.255.255.255 { 0xcc000000, 0xcc08cbff, REGISTRY_ARIN }, // 204.0.0.0 - 204.8.203.255 { 0xcc08cc00, 0xcc08ccff, REGISTRY_AFRINIC }, // 204.8.204.0 - 204.8.204.255 { 0xcc08ce00, 0xcc08ceff, REGISTRY_AFRINIC }, // 204.8.206.0 - 204.8.206.255 { 0xcc08d000, 0xcc0affff, REGISTRY_ARIN }, // 204.8.208.0 - 204.10.255.255 { 0xcc0b0400, 0xcc0c7fff, REGISTRY_ARIN }, // 204.11.4.0 - 204.12.127.255 { 0xcc0c8000, 0xcc0c8fff, REGISTRY_AFRINIC }, // 204.12.128.0 - 204.12.143.255 { 0xcc0c9000, 0xcc11ffff, REGISTRY_ARIN }, // 204.12.144.0 - 204.17.255.255 { 0xcc120000, 0xcc12ffff, REGISTRY_RIPENCC }, // 204.18.0.0 - 204.18.255.255 { 0xcc130000, 0xcc301fff, REGISTRY_ARIN }, // 204.19.0.0 - 204.48.31.255 { 0xcc302200, 0xcc34beff, REGISTRY_ARIN }, // 204.48.34.0 - 204.52.190.255 { 0xcc34c000, 0xcc3a87ff, REGISTRY_ARIN }, // 204.52.192.0 - 204.58.135.255 { 0xcc3a8800, 0xcc3a8bff, REGISTRY_LACNIC }, // 204.58.136.0 - 204.58.139.255 { 0xcc3a8c00, 0xcc4b8dff, REGISTRY_ARIN }, // 204.58.140.0 - 204.75.141.255 { 0xcc4b8e00, 0xcc4b8eff, REGISTRY_APNIC }, // 204.75.142.0 - 204.75.142.255 { 0xcc4b8f00, 0xcc508eff, REGISTRY_ARIN }, // 204.75.143.0 - 204.80.142.255 { 0xcc508f00, 0xcc508fff, REGISTRY_LACNIC }, // 204.80.143.0 - 204.80.143.255 { 0xcc509000, 0xcc57a8ff, REGISTRY_ARIN }, // 204.80.144.0 - 204.87.168.255 { 0xcc57a900, 0xcc57a9ff, REGISTRY_LACNIC }, // 204.87.169.0 - 204.87.169.255 { 0xcc57aa00, 0xcc57b2ff, REGISTRY_ARIN }, // 204.87.170.0 - 204.87.178.255 { 0xcc57b300, 0xcc57b3ff, REGISTRY_AFRINIC }, // 204.87.179.0 - 204.87.179.255 { 0xcc57b400, 0xcc57ccff, REGISTRY_ARIN }, // 204.87.180.0 - 204.87.204.255 { 0xcc57cd00, 0xcc57cdff, REGISTRY_LACNIC }, // 204.87.205.0 - 204.87.205.255 { 0xcc57ce00, 0xcc59cdff, REGISTRY_ARIN }, // 204.87.206.0 - 204.89.205.255 { 0xcc59ce00, 0xcc59ceff, REGISTRY_LACNIC }, // 204.89.206.0 - 204.89.206.255 { 0xcc59cf00, 0xcc7c67ff, REGISTRY_ARIN }, // 204.89.207.0 - 204.124.103.255 { 0xcc7c6800, 0xcc7c6bff, REGISTRY_LACNIC }, // 204.124.104.0 - 204.124.107.255 { 0xcc7c6c00, 0xcc7e0bff, REGISTRY_ARIN }, // 204.124.108.0 - 204.126.11.255 { 0xcc7e0c00, 0xcc7e0dff, REGISTRY_LACNIC }, // 204.126.12.0 - 204.126.13.255 { 0xcc7e0e00, 0xcc7e7fff, REGISTRY_ARIN }, // 204.126.14.0 - 204.126.127.255 { 0xcc7e8000, 0xcc7e81ff, REGISTRY_LACNIC }, // 204.126.128.0 - 204.126.129.255 { 0xcc7e8200, 0xcc7e8bff, REGISTRY_ARIN }, // 204.126.130.0 - 204.126.139.255 { 0xcc7e8c00, 0xcc7e8dff, REGISTRY_LACNIC }, // 204.126.140.0 - 204.126.141.255 { 0xcc7e8e00, 0xcc9160ff, REGISTRY_ARIN }, // 204.126.142.0 - 204.145.96.255 { 0xcc916100, 0xcc9161ff, REGISTRY_APNIC }, // 204.145.97.0 - 204.145.97.255 { 0xcc916200, 0xcc91c8ff, REGISTRY_ARIN }, // 204.145.98.0 - 204.145.200.255 { 0xcc91c900, 0xcc91c9ff, REGISTRY_LACNIC }, // 204.145.201.0 - 204.145.201.255 { 0xcc91ca00, 0xcc980dff, REGISTRY_ARIN }, // 204.145.202.0 - 204.152.13.255 { 0xcc980e00, 0xcc980fff, REGISTRY_AFRINIC }, // 204.152.14.0 - 204.152.15.255 { 0xcc981000, 0xcc98dfff, REGISTRY_ARIN }, // 204.152.16.0 - 204.152.223.255 { 0xcc98e000, 0xcc98e7ff, REGISTRY_APNIC }, // 204.152.224.0 - 204.152.231.255 { 0xcc98e800, 0xcc9917ff, REGISTRY_ARIN }, // 204.152.232.0 - 204.153.23.255 { 0xcc991800, 0xcc9919ff, REGISTRY_LACNIC }, // 204.153.24.0 - 204.153.25.255 { 0xcc991a00, 0xcce129ff, REGISTRY_ARIN }, // 204.153.26.0 - 204.225.41.255 { 0xcce12c00, 0xcce1d9ff, REGISTRY_ARIN }, // 204.225.44.0 - 204.225.217.255 { 0xcce1da00, 0xcce1daff, REGISTRY_RIPENCC }, // 204.225.218.0 - 204.225.218.255 { 0xcce1db00, 0xcceb1fff, REGISTRY_ARIN }, // 204.225.219.0 - 204.235.31.255 { 0xcceb2000, 0xcceb2bff, REGISTRY_AFRINIC }, // 204.235.32.0 - 204.235.43.255 { 0xcceb2c00, 0xcd935fff, REGISTRY_ARIN }, // 204.235.44.0 - 205.147.95.255 { 0xcd936000, 0xcd936fff, REGISTRY_APNIC }, // 205.147.96.0 - 205.147.111.255 { 0xcd937000, 0xcd9f4eff, REGISTRY_ARIN }, // 205.147.112.0 - 205.159.78.255 { 0xcd9f4f00, 0xcd9f4fff, REGISTRY_AFRINIC }, // 205.159.79.0 - 205.159.79.255 { 0xcd9f5000, 0xcda6b0ff, REGISTRY_ARIN }, // 205.159.80.0 - 205.166.176.255 { 0xcda6b100, 0xcda6b1ff, REGISTRY_APNIC }, // 205.166.177.0 - 205.166.177.255 { 0xcda6b200, 0xcda6faff, REGISTRY_ARIN }, // 205.166.178.0 - 205.166.250.255 { 0xcda6fb00, 0xcda6fbff, REGISTRY_LACNIC }, // 205.166.251.0 - 205.166.251.255 { 0xcda6fc00, 0xcdc8ffff, REGISTRY_ARIN }, // 205.166.252.0 - 205.200.255.255 { 0xcdc90000, 0xcdc90fff, REGISTRY_APNIC }, // 205.201.0.0 - 205.201.15.255 { 0xcdc91000, 0xcdc936ff, REGISTRY_ARIN }, // 205.201.16.0 - 205.201.54.255 { 0xcdc93700, 0xcdc937ff, REGISTRY_RIPENCC }, // 205.201.55.0 - 205.201.55.255 { 0xcdc93800, 0xcdd352ff, REGISTRY_ARIN }, // 205.201.56.0 - 205.211.82.255 { 0xcdd35400, 0xcdfcffff, REGISTRY_ARIN }, // 205.211.84.0 - 205.252.255.255 { 0xcdfd0000, 0xcdfdffff, REGISTRY_APNIC }, // 205.253.0.0 - 205.253.255.255 { 0xcdfe0000, 0xce83bfff, REGISTRY_ARIN }, // 205.254.0.0 - 206.131.191.255 { 0xce83c000, 0xce83cfff, REGISTRY_APNIC }, // 206.131.192.0 - 206.131.207.255 { 0xce83d000, 0xcec31fff, REGISTRY_ARIN }, // 206.131.208.0 - 206.195.31.255 { 0xcec32000, 0xcec33fff, REGISTRY_RIPENCC }, // 206.195.32.0 - 206.195.63.255 { 0xcec34000, 0xcedd4fff, REGISTRY_ARIN }, // 206.195.64.0 - 206.221.79.255 { 0xcedd5000, 0xcedd5fff, REGISTRY_LACNIC }, // 206.221.80.0 - 206.221.95.255 { 0xcedd6000, 0xcedf7bff, REGISTRY_ARIN }, // 206.221.96.0 - 206.223.123.255 { 0xcedf7c00, 0xcedf7cff, REGISTRY_LACNIC }, // 206.223.124.0 - 206.223.124.255 { 0xcedf7d00, 0xcedf81ff, REGISTRY_ARIN }, // 206.223.125.0 - 206.223.129.255 { 0xcedf8200, 0xcedf82ff, REGISTRY_LACNIC }, // 206.223.130.0 - 206.223.130.255 { 0xcedf8300, 0xcedf87ff, REGISTRY_ARIN }, // 206.223.131.0 - 206.223.135.255 { 0xcedf8800, 0xcedf88ff, REGISTRY_AFRINIC }, // 206.223.136.0 - 206.223.136.255 { 0xcedf8900, 0xcee01fff, REGISTRY_ARIN }, // 206.223.137.0 - 206.224.31.255 { 0xcee02000, 0xcee03fff, REGISTRY_LACNIC }, // 206.224.32.0 - 206.224.63.255 { 0xcee04000, 0xcefcdfff, REGISTRY_ARIN }, // 206.224.64.0 - 206.252.223.255 { 0xcefce000, 0xcefcffff, REGISTRY_RIPENCC }, // 206.252.224.0 - 206.252.255.255 { 0xcefd0000, 0xcf593fff, REGISTRY_ARIN }, // 206.253.0.0 - 207.89.63.255 { 0xcf594000, 0xcf597fff, REGISTRY_RIPENCC }, // 207.89.64.0 - 207.89.127.255 { 0xcf598000, 0xcfbdb7ff, REGISTRY_ARIN }, // 207.89.128.0 - 207.189.183.255 { 0xcfbdb800, 0xcfbdbbff, REGISTRY_APNIC }, // 207.189.184.0 - 207.189.187.255 { 0xcfbdbc00, 0xcfbdbfff, REGISTRY_ARIN }, // 207.189.188.0 - 207.189.191.255 { 0xcfbdc000, 0xcfbdcfff, REGISTRY_RIPENCC }, // 207.189.192.0 - 207.189.207.255 { 0xcfbdd000, 0xcfbf9fff, REGISTRY_ARIN }, // 207.189.208.0 - 207.191.159.255 { 0xcfbfb000, 0xcff7ffff, REGISTRY_ARIN }, // 207.191.176.0 - 207.247.255.255 { 0xcff80000, 0xcff9ffff, REGISTRY_LACNIC }, // 207.248.0.0 - 207.249.255.255 { 0xcffa0000, 0xd042e7ff, REGISTRY_ARIN }, // 207.250.0.0 - 208.66.231.255 { 0xd042e800, 0xd042efff, REGISTRY_APNIC }, // 208.66.232.0 - 208.66.239.255 { 0xd042f000, 0xd047d3ff, REGISTRY_ARIN }, // 208.66.240.0 - 208.71.211.255 { 0xd047d400, 0xd047d7ff, REGISTRY_APNIC }, // 208.71.212.0 - 208.71.215.255 { 0xd047d800, 0xd049efff, REGISTRY_ARIN }, // 208.71.216.0 - 208.73.239.255 { 0xd049f400, 0xd05173ff, REGISTRY_ARIN }, // 208.73.244.0 - 208.81.115.255 { 0xd0517400, 0xd05177ff, REGISTRY_APNIC }, // 208.81.116.0 - 208.81.119.255 { 0xd0517800, 0xd05247ff, REGISTRY_ARIN }, // 208.81.120.0 - 208.82.71.255 { 0xd0524800, 0xd0524bff, REGISTRY_RIPENCC }, // 208.82.72.0 - 208.82.75.255 { 0xd0524c00, 0xd0559bff, REGISTRY_ARIN }, // 208.82.76.0 - 208.85.155.255 { 0xd0559c00, 0xd0559fff, REGISTRY_AFRINIC }, // 208.85.156.0 - 208.85.159.255 { 0xd055a000, 0xd057a5ff, REGISTRY_ARIN }, // 208.85.160.0 - 208.87.165.255 { 0xd057a600, 0xd057a7ff, REGISTRY_APNIC }, // 208.87.166.0 - 208.87.167.255 { 0xd057a800, 0xd10cffff, REGISTRY_ARIN }, // 208.87.168.0 - 209.12.255.255 { 0xd10d0000, 0xd10dffff, REGISTRY_LACNIC }, // 209.13.0.0 - 209.13.255.255 { 0xd10e0000, 0xd12abfff, REGISTRY_ARIN }, // 209.14.0.0 - 209.42.191.255 { 0xd12ac000, 0xd12affff, REGISTRY_RIPENCC }, // 209.42.192.0 - 209.42.255.255 { 0xd12b0000, 0xd12cffff, REGISTRY_ARIN }, // 209.43.0.0 - 209.44.255.255 { 0xd12d0000, 0xd12d7fff, REGISTRY_LACNIC }, // 209.45.0.0 - 209.45.127.255 { 0xd12d8000, 0xd13a9fff, REGISTRY_ARIN }, // 209.45.128.0 - 209.58.159.255 { 0xd13aa000, 0xd13abfff, REGISTRY_APNIC }, // 209.58.160.0 - 209.58.191.255 { 0xd13ac000, 0xd15ebfff, REGISTRY_ARIN }, // 209.58.192.0 - 209.94.191.255 { 0xd15ec000, 0xd15edfff, REGISTRY_LACNIC }, // 209.94.192.0 - 209.94.223.255 { 0xd15ee000, 0xd163dfff, REGISTRY_ARIN }, // 209.94.224.0 - 209.99.223.255 { 0xd163e000, 0xd163efff, REGISTRY_LACNIC }, // 209.99.224.0 - 209.99.239.255 { 0xd163f000, 0xd1968fff, REGISTRY_ARIN }, // 209.99.240.0 - 209.150.143.255 { 0xd1969000, 0xd1969fff, REGISTRY_APNIC }, // 209.150.144.0 - 209.150.159.255 { 0xd196a000, 0xd1caffff, REGISTRY_ARIN }, // 209.150.160.0 - 209.202.255.255 { 0xd1cb0000, 0xd1cb3fff, REGISTRY_AFRINIC }, // 209.203.0.0 - 209.203.63.255 { 0xd1cb4000, 0xd1cdffff, REGISTRY_ARIN }, // 209.203.64.0 - 209.205.255.255 { 0xd1ce0000, 0xd1ce1fff, REGISTRY_RIPENCC }, // 209.206.0.0 - 209.206.31.255 { 0xd1ce2000, 0xd1ce25ff, REGISTRY_ARIN }, // 209.206.32.0 - 209.206.37.255 { 0xd1ce2600, 0xd1ce27ff, REGISTRY_RIPENCC }, // 209.206.38.0 - 209.206.39.255 { 0xd1ce2800, 0xd1d45fff, REGISTRY_ARIN }, // 209.206.40.0 - 209.212.95.255 { 0xd1d46000, 0xd1d47fff, REGISTRY_AFRINIC }, // 209.212.96.0 - 209.212.127.255 { 0xd1d48000, 0xd1fbfbff, REGISTRY_ARIN }, // 209.212.128.0 - 209.251.251.255 { 0xd1fbfc00, 0xd1fbfdff, REGISTRY_RIPENCC }, // 209.251.252.0 - 209.251.253.255 { 0xd1fbfe00, 0xd1ffffff, REGISTRY_ARIN }, // 209.251.254.0 - 209.255.255.255 { 0xd2000000, 0xd24f37ff, REGISTRY_APNIC }, // 210.0.0.0 - 210.79.55.255 { 0xd24f4000, 0xd24f7fff, REGISTRY_APNIC }, // 210.79.64.0 - 210.79.127.255 { 0xd24fc000, 0xd2573fff, REGISTRY_APNIC }, // 210.79.192.0 - 210.87.63.255 { 0xd2578000, 0xd3ffffff, REGISTRY_APNIC }, // 210.87.128.0 - 211.255.255.255 { 0xd4000000, 0xd4007fff, REGISTRY_RIPENCC }, // 212.0.0.0 - 212.0.127.255 { 0xd4008000, 0xd4009fff, REGISTRY_AFRINIC }, // 212.0.128.0 - 212.0.159.255 { 0xd400a000, 0xd408f0ff, REGISTRY_RIPENCC }, // 212.0.160.0 - 212.8.240.255 { 0xd408f100, 0xd408f1ff, REGISTRY_ARIN }, // 212.8.241.0 - 212.8.241.255 { 0xd408f200, 0xd40cdfff, REGISTRY_RIPENCC }, // 212.8.242.0 - 212.12.223.255 { 0xd40ce000, 0xd40cffff, REGISTRY_AFRINIC }, // 212.12.224.0 - 212.12.255.255 { 0xd40d0000, 0xd4169fff, REGISTRY_RIPENCC }, // 212.13.0.0 - 212.22.159.255 { 0xd416a000, 0xd416bfff, REGISTRY_AFRINIC }, // 212.22.160.0 - 212.22.191.255 { 0xd416c000, 0xd427bfff, REGISTRY_RIPENCC }, // 212.22.192.0 - 212.39.191.255 { 0xd427c000, 0xd427dfff, REGISTRY_RIPENCC }, // 212.39.192.0 - 212.39.223.255 { 0xd427e000, 0xd4313fff, REGISTRY_RIPENCC }, // 212.39.224.0 - 212.49.63.255 { 0xd4314000, 0xd4315fff, REGISTRY_AFRINIC }, // 212.49.64.0 - 212.49.95.255 { 0xd4316000, 0xd4347fff, REGISTRY_RIPENCC }, // 212.49.96.0 - 212.52.127.255 { 0xd4348000, 0xd4349fff, REGISTRY_AFRINIC }, // 212.52.128.0 - 212.52.159.255 { 0xd434a000, 0xd43bffff, REGISTRY_RIPENCC }, // 212.52.160.0 - 212.59.255.255 { 0xd43c2000, 0xd43c3fff, REGISTRY_RIPENCC }, // 212.60.32.0 - 212.60.63.255 { 0xd43c4000, 0xd43c5fff, REGISTRY_AFRINIC }, // 212.60.64.0 - 212.60.95.255 { 0xd43c6000, 0xd4458fff, REGISTRY_RIPENCC }, // 212.60.96.0 - 212.69.143.255 { 0xd4459000, 0xd4459fff, REGISTRY_ARIN }, // 212.69.144.0 - 212.69.159.255 { 0xd445a000, 0xd450bfff, REGISTRY_RIPENCC }, // 212.69.160.0 - 212.80.191.255 { 0xd450e000, 0xd4511fff, REGISTRY_RIPENCC }, // 212.80.224.0 - 212.81.31.255 { 0xd4514000, 0xd455bfff, REGISTRY_RIPENCC }, // 212.81.64.0 - 212.85.191.255 { 0xd455c000, 0xd455dfff, REGISTRY_AFRINIC }, // 212.85.192.0 - 212.85.223.255 { 0xd455e000, 0xd457bfff, REGISTRY_RIPENCC }, // 212.85.224.0 - 212.87.191.255 { 0xd457e000, 0xd4585fff, REGISTRY_RIPENCC }, // 212.87.224.0 - 212.88.95.255 { 0xd4586000, 0xd4587fff, REGISTRY_AFRINIC }, // 212.88.96.0 - 212.88.127.255 { 0xd4588000, 0xd45a5fff, REGISTRY_RIPENCC }, // 212.88.128.0 - 212.90.95.255 { 0xd45a8000, 0xd45fffff, REGISTRY_RIPENCC }, // 212.90.128.0 - 212.95.255.255 { 0xd4600000, 0xd4601fff, REGISTRY_AFRINIC }, // 212.96.0.0 - 212.96.31.255 { 0xd4602000, 0xd4643fff, REGISTRY_RIPENCC }, // 212.96.32.0 - 212.100.63.255 { 0xd4644000, 0xd4645fff, REGISTRY_AFRINIC }, // 212.100.64.0 - 212.100.95.255 { 0xd4646000, 0xd4671fff, REGISTRY_RIPENCC }, // 212.100.96.0 - 212.103.31.255 { 0xd4674000, 0xd4679fff, REGISTRY_RIPENCC }, // 212.103.64.0 - 212.103.159.255 { 0xd467a000, 0xd467bfff, REGISTRY_AFRINIC }, // 212.103.160.0 - 212.103.191.255 { 0xd467c000, 0xd46affff, REGISTRY_RIPENCC }, // 212.103.192.0 - 212.106.255.255 { 0xd46b2000, 0xd4731fff, REGISTRY_RIPENCC }, // 212.107.32.0 - 212.115.31.255 { 0xd4734000, 0xd4735fff, REGISTRY_RIPENCC }, // 212.115.64.0 - 212.115.95.255 { 0xd4738000, 0xd4771fff, REGISTRY_RIPENCC }, // 212.115.128.0 - 212.119.31.255 { 0xd4774000, 0xd47adfff, REGISTRY_RIPENCC }, // 212.119.64.0 - 212.122.223.255 { 0xd47ae000, 0xd47affff, REGISTRY_AFRINIC }, // 212.122.224.0 - 212.122.255.255 { 0xd47b0000, 0xd4d8ffff, REGISTRY_RIPENCC }, // 212.123.0.0 - 212.216.255.255 { 0xd4d90000, 0xd4d97fff, REGISTRY_AFRINIC }, // 212.217.0.0 - 212.217.127.255 { 0xd4d98000, 0xd504ffff, REGISTRY_RIPENCC }, // 212.217.128.0 - 213.4.255.255 { 0xd5050000, 0xd5050fff, REGISTRY_RIPENCC }, // 213.5.0.0 - 213.5.15.255 { 0xd5051000, 0xd50513ff, REGISTRY_RIPENCC }, // 213.5.16.0 - 213.5.19.255 { 0xd5051400, 0xd50517ff, REGISTRY_RIPENCC }, // 213.5.20.0 - 213.5.23.255 { 0xd5051800, 0xd5051fff, REGISTRY_RIPENCC }, // 213.5.24.0 - 213.5.31.255 { 0xd5052000, 0xd505e7ff, REGISTRY_RIPENCC }, // 213.5.32.0 - 213.5.231.255 { 0xd505f000, 0xd505ffff, REGISTRY_RIPENCC }, // 213.5.240.0 - 213.5.255.255 { 0xd5060000, 0xd5373fff, REGISTRY_RIPENCC }, // 213.6.0.0 - 213.55.63.255 { 0xd5374000, 0xd5377fff, REGISTRY_AFRINIC }, // 213.55.64.0 - 213.55.127.255 { 0xd5378000, 0xd56bffff, REGISTRY_RIPENCC }, // 213.55.128.0 - 213.107.255.255 { 0xd56c0000, 0xd56c2fff, REGISTRY_RIPENCC }, // 213.108.0.0 - 213.108.47.255 { 0xd56c3800, 0xd56cbfff, REGISTRY_RIPENCC }, // 213.108.56.0 - 213.108.191.255 { 0xd56cc800, 0xd56cefff, REGISTRY_RIPENCC }, // 213.108.200.0 - 213.108.239.255 { 0xd56cf800, 0xd56d1fff, REGISTRY_RIPENCC }, // 213.108.248.0 - 213.109.31.255 { 0xd56d2000, 0xd56d2fff, REGISTRY_RIPENCC }, // 213.109.32.0 - 213.109.47.255 { 0xd56d3000, 0xd56d9fff, REGISTRY_RIPENCC }, // 213.109.48.0 - 213.109.159.255 { 0xd56dc000, 0xd56dcfff, REGISTRY_RIPENCC }, // 213.109.192.0 - 213.109.207.255 { 0xd56dd000, 0xd56ddfff, REGISTRY_RIPENCC }, // 213.109.208.0 - 213.109.223.255 { 0xd56de000, 0xd56defff, REGISTRY_RIPENCC }, // 213.109.224.0 - 213.109.239.255 { 0xd56df000, 0xd56dffff, REGISTRY_RIPENCC }, // 213.109.240.0 - 213.109.255.255 { 0xd56e0000, 0xd56fffff, REGISTRY_RIPENCC }, // 213.110.0.0 - 213.111.255.255 { 0xd5700000, 0xd5833fff, REGISTRY_RIPENCC }, // 213.112.0.0 - 213.131.63.255 { 0xd5834000, 0xd5835fff, REGISTRY_AFRINIC }, // 213.131.64.0 - 213.131.95.255 { 0xd5836000, 0xd5885fff, REGISTRY_RIPENCC }, // 213.131.96.0 - 213.136.95.255 { 0xd5886000, 0xd5887fff, REGISTRY_AFRINIC }, // 213.136.96.0 - 213.136.127.255 { 0xd5888000, 0xd58ad7ff, REGISTRY_RIPENCC }, // 213.136.128.0 - 213.138.215.255 { 0xd58adc00, 0xd58bbfff, REGISTRY_RIPENCC }, // 213.138.220.0 - 213.139.191.255 { 0xd58c0000, 0xd5933fff, REGISTRY_RIPENCC }, // 213.140.0.0 - 213.147.63.255 { 0xd5934000, 0xd5935fff, REGISTRY_AFRINIC }, // 213.147.64.0 - 213.147.95.255 { 0xd5936000, 0xd5965fff, REGISTRY_RIPENCC }, // 213.147.96.0 - 213.150.95.255 { 0xd5966000, 0xd5967fff, REGISTRY_AFRINIC }, // 213.150.96.0 - 213.150.127.255 { 0xd5968000, 0xd5969fff, REGISTRY_RIPENCC }, // 213.150.128.0 - 213.150.159.255 { 0xd596a000, 0xd596dfff, REGISTRY_AFRINIC }, // 213.150.160.0 - 213.150.223.255 { 0xd596e000, 0xd5983fff, REGISTRY_RIPENCC }, // 213.150.224.0 - 213.152.63.255 { 0xd5984000, 0xd5985fff, REGISTRY_AFRINIC }, // 213.152.64.0 - 213.152.95.255 { 0xd5986000, 0xd59a1fff, REGISTRY_RIPENCC }, // 213.152.96.0 - 213.154.31.255 { 0xd59a2000, 0xd59a5fff, REGISTRY_AFRINIC }, // 213.154.32.0 - 213.154.95.255 { 0xd59a6000, 0xd59e9fff, REGISTRY_RIPENCC }, // 213.154.96.0 - 213.158.159.255 { 0xd59ea000, 0xd59ebfff, REGISTRY_AFRINIC }, // 213.158.160.0 - 213.158.191.255 { 0xd59ec000, 0xd59f0dff, REGISTRY_RIPENCC }, // 213.158.192.0 - 213.159.13.255 { 0xd59f0e00, 0xd59f0fff, REGISTRY_ARIN }, // 213.159.14.0 - 213.159.15.255 { 0xd59f1000, 0xd5a29fff, REGISTRY_RIPENCC }, // 213.159.16.0 - 213.162.159.255 { 0xd5a2a000, 0xd5a2bfff, REGISTRY_RIPENCC }, // 213.162.160.0 - 213.162.191.255 { 0xd5a2c000, 0xd5a7dfff, REGISTRY_RIPENCC }, // 213.162.192.0 - 213.167.223.255 { 0xd5a7e400, 0xd5aabfff, REGISTRY_RIPENCC }, // 213.167.228.0 - 213.170.191.255 { 0xd5aae000, 0xd5ac7fff, REGISTRY_RIPENCC }, // 213.170.224.0 - 213.172.127.255 { 0xd5ac8000, 0xd5ac9fff, REGISTRY_AFRINIC }, // 213.172.128.0 - 213.172.159.255 { 0xd5aca000, 0xd5ad1fff, REGISTRY_RIPENCC }, // 213.172.160.0 - 213.173.31.255 { 0xd5ad4000, 0xd5b39fff, REGISTRY_RIPENCC }, // 213.173.64.0 - 213.179.159.255 { 0xd5b3a000, 0xd5b3bfff, REGISTRY_AFRINIC }, // 213.179.160.0 - 213.179.191.255 { 0xd5b3c000, 0xd5b5dfff, REGISTRY_RIPENCC }, // 213.179.192.0 - 213.181.223.255 { 0xd5b5e000, 0xd5b5ffff, REGISTRY_AFRINIC }, // 213.181.224.0 - 213.181.255.255 { 0xd5b60000, 0xd5b83fff, REGISTRY_RIPENCC }, // 213.182.0.0 - 213.184.63.255 { 0xd5b86000, 0xd5bdffff, REGISTRY_RIPENCC }, // 213.184.96.0 - 213.189.255.255 { 0xd5be2000, 0xd5c11fff, REGISTRY_RIPENCC }, // 213.190.32.0 - 213.193.31.255 { 0xd5c12000, 0xd5c13fff, REGISTRY_AFRINIC }, // 213.193.32.0 - 213.193.63.255 { 0xd5c14000, 0xd5d4bfff, REGISTRY_RIPENCC }, // 213.193.64.0 - 213.212.191.255 { 0xd5d4c000, 0xd5d4ffff, REGISTRY_AFRINIC }, // 213.212.192.0 - 213.212.255.255 { 0xd5d50000, 0xd5d8ffff, REGISTRY_RIPENCC }, // 213.213.0.0 - 213.216.255.255 { 0xd5d92000, 0xd5e23fff, REGISTRY_RIPENCC }, // 213.217.32.0 - 213.226.63.255 { 0xd5e28000, 0xd5e83fff, REGISTRY_RIPENCC }, // 213.226.128.0 - 213.232.63.255 { 0xd5e88000, 0xd5f6ffff, REGISTRY_RIPENCC }, // 213.232.128.0 - 213.246.255.255 { 0xd5f70000, 0xd5f71fff, REGISTRY_AFRINIC }, // 213.247.0.0 - 213.247.31.255 { 0xd5f72000, 0xd5ff7fff, REGISTRY_RIPENCC }, // 213.247.32.0 - 213.255.127.255 { 0xd5ff8000, 0xd5ff9fff, REGISTRY_AFRINIC }, // 213.255.128.0 - 213.255.159.255 { 0xd5ffa000, 0xd5ffffff, REGISTRY_RIPENCC }, // 213.255.160.0 - 213.255.255.255 { 0xd6000000, 0xd807ffff, REGISTRY_ARIN }, // 214.0.0.0 - 216.7.255.255 { 0xd8080000, 0xd8081fff, REGISTRY_APNIC }, // 216.8.0.0 - 216.8.31.255 { 0xd8082000, 0xd80aefff, REGISTRY_ARIN }, // 216.8.32.0 - 216.10.239.255 { 0xd80af000, 0xd80affff, REGISTRY_APNIC }, // 216.10.240.0 - 216.10.255.255 { 0xd80b0000, 0xd862cfff, REGISTRY_ARIN }, // 216.11.0.0 - 216.98.207.255 { 0xd862d000, 0xd862dfff, REGISTRY_LACNIC }, // 216.98.208.0 - 216.98.223.255 { 0xd862e000, 0xd863c5ff, REGISTRY_ARIN }, // 216.98.224.0 - 216.99.197.255 { 0xd863c600, 0xd863c6ff, REGISTRY_APNIC }, // 216.99.198.0 - 216.99.198.255 { 0xd863c700, 0xd863c8ff, REGISTRY_ARIN }, // 216.99.199.0 - 216.99.200.255 { 0xd863c900, 0xd863c9ff, REGISTRY_APNIC }, // 216.99.201.0 - 216.99.201.255 { 0xd863ca00, 0xd863cbff, REGISTRY_ARIN }, // 216.99.202.0 - 216.99.203.255 { 0xd863cc00, 0xd863ccff, REGISTRY_APNIC }, // 216.99.204.0 - 216.99.204.255 { 0xd863cd00, 0xd863ddff, REGISTRY_ARIN }, // 216.99.205.0 - 216.99.221.255 { 0xd863de00, 0xd863deff, REGISTRY_RIPENCC }, // 216.99.222.0 - 216.99.222.255 { 0xd863df00, 0xd897bfff, REGISTRY_ARIN }, // 216.99.223.0 - 216.151.191.255 { 0xd897c000, 0xd897cfff, REGISTRY_APNIC }, // 216.151.192.0 - 216.151.207.255 { 0xd897d000, 0xd8989fff, REGISTRY_ARIN }, // 216.151.208.0 - 216.152.159.255 { 0xd898a000, 0xd898afff, REGISTRY_LACNIC }, // 216.152.160.0 - 216.152.175.255 { 0xd898b000, 0xd89b3fff, REGISTRY_ARIN }, // 216.152.176.0 - 216.155.63.255 { 0xd89b4000, 0xd89b5fff, REGISTRY_LACNIC }, // 216.155.64.0 - 216.155.95.255 { 0xd89b6000, 0xd89e5fff, REGISTRY_ARIN }, // 216.155.96.0 - 216.158.95.255 { 0xd89e6000, 0xd89e6fff, REGISTRY_RIPENCC }, // 216.158.96.0 - 216.158.111.255 { 0xd89e7000, 0xd8ac3fff, REGISTRY_ARIN }, // 216.158.112.0 - 216.172.63.255 { 0xd8ac4000, 0xd8ac4fff, REGISTRY_RIPENCC }, // 216.172.64.0 - 216.172.79.255 { 0xd8ac5000, 0xd8e67fff, REGISTRY_ARIN }, // 216.172.80.0 - 216.230.127.255 { 0xd8e68000, 0xd8e69fff, REGISTRY_LACNIC }, // 216.230.128.0 - 216.230.159.255 { 0xd8e6a000, 0xd8ecafff, REGISTRY_ARIN }, // 216.230.160.0 - 216.236.175.255 { 0xd8ecb000, 0xd8ecbfff, REGISTRY_AFRINIC }, // 216.236.176.0 - 216.236.191.255 { 0xd8ecc000, 0xd8f0ffff, REGISTRY_ARIN }, // 216.236.192.0 - 216.240.255.255 { 0xd8f10000, 0xd8f11fff, REGISTRY_LACNIC }, // 216.241.0.0 - 216.241.31.255 { 0xd8f12000, 0xd8f17fff, REGISTRY_ARIN }, // 216.241.32.0 - 216.241.127.255 { 0xd8f18000, 0xd8f19fff, REGISTRY_RIPENCC }, // 216.241.128.0 - 216.241.159.255 { 0xd8f1a000, 0xd8f47fff, REGISTRY_ARIN }, // 216.241.160.0 - 216.244.127.255 { 0xd8f48000, 0xd8f4ffff, REGISTRY_LACNIC }, // 216.244.128.0 - 216.244.255.255 { 0xd8f50000, 0xd8fa5fff, REGISTRY_ARIN }, // 216.245.0.0 - 216.250.95.255 { 0xd8fa6000, 0xd8fa6fff, REGISTRY_APNIC }, // 216.250.96.0 - 216.250.111.255 { 0xd8fa7000, 0xd8ffffff, REGISTRY_ARIN }, // 216.250.112.0 - 216.255.255.255 { 0xd9000000, 0xd9086fff, REGISTRY_RIPENCC }, // 217.0.0.0 - 217.8.111.255 { 0xd9088000, 0xd9090fff, REGISTRY_RIPENCC }, // 217.8.128.0 - 217.9.15.255 { 0xd9092000, 0xd90e4fff, REGISTRY_RIPENCC }, // 217.9.32.0 - 217.14.79.255 { 0xd90e5000, 0xd90e5fff, REGISTRY_AFRINIC }, // 217.14.80.0 - 217.14.95.255 { 0xd90e6000, 0xd9122fff, REGISTRY_RIPENCC }, // 217.14.96.0 - 217.18.47.255 { 0xd9124000, 0xd914dfff, REGISTRY_RIPENCC }, // 217.18.64.0 - 217.20.223.255 { 0xd914e000, 0xd914efff, REGISTRY_AFRINIC }, // 217.20.224.0 - 217.20.239.255 { 0xd914f000, 0xd9156fff, REGISTRY_RIPENCC }, // 217.20.240.0 - 217.21.111.255 { 0xd9157000, 0xd9157fff, REGISTRY_AFRINIC }, // 217.21.112.0 - 217.21.127.255 { 0xd9158000, 0xd91aafff, REGISTRY_RIPENCC }, // 217.21.128.0 - 217.26.175.255 { 0xd91ac000, 0xd91d7fff, REGISTRY_RIPENCC }, // 217.26.192.0 - 217.29.127.255 { 0xd91d8000, 0xd91d8fff, REGISTRY_AFRINIC }, // 217.29.128.0 - 217.29.143.255 { 0xd91d9000, 0xd91dcfff, REGISTRY_RIPENCC }, // 217.29.144.0 - 217.29.207.255 { 0xd91dd000, 0xd91ddfff, REGISTRY_AFRINIC }, // 217.29.208.0 - 217.29.223.255 { 0xd91de000, 0xd91dffff, REGISTRY_RIPENCC }, // 217.29.224.0 - 217.29.255.255 { 0xd91e1000, 0xd933ffff, REGISTRY_RIPENCC }, // 217.30.16.0 - 217.51.255.255 { 0xd9340000, 0xd937ffff, REGISTRY_AFRINIC }, // 217.52.0.0 - 217.55.255.255 { 0xd9380000, 0xd9405fff, REGISTRY_RIPENCC }, // 217.56.0.0 - 217.64.95.255 { 0xd9406000, 0xd9406fff, REGISTRY_AFRINIC }, // 217.64.96.0 - 217.64.111.255 { 0xd9407000, 0xd9421fff, REGISTRY_RIPENCC }, // 217.64.112.0 - 217.66.31.255 { 0xd9422000, 0xd9423fff, REGISTRY_RIPENCC }, // 217.66.32.0 - 217.66.63.255 { 0xd9424000, 0xd9477fff, REGISTRY_RIPENCC }, // 217.66.64.0 - 217.71.127.255 { 0xd9478000, 0xd9479fff, REGISTRY_RIPENCC }, // 217.71.128.0 - 217.71.159.255 { 0xd947a000, 0xd94d3fff, REGISTRY_RIPENCC }, // 217.71.160.0 - 217.77.63.255 { 0xd94d4000, 0xd94d4fff, REGISTRY_AFRINIC }, // 217.77.64.0 - 217.77.79.255 { 0xd94d5000, 0xd94ddfff, REGISTRY_RIPENCC }, // 217.77.80.0 - 217.77.223.255 { 0xd94de000, 0xd94defff, REGISTRY_RIPENCC }, // 217.77.224.0 - 217.77.239.255 { 0xd94df000, 0xd94e3fff, REGISTRY_RIPENCC }, // 217.77.240.0 - 217.78.63.255 { 0xd94e4000, 0xd94e4fff, REGISTRY_AFRINIC }, // 217.78.64.0 - 217.78.79.255 { 0xd94e5000, 0xd974ffff, REGISTRY_RIPENCC }, // 217.78.80.0 - 217.116.255.255 { 0xd9750000, 0xd9750fff, REGISTRY_AFRINIC }, // 217.117.0.0 - 217.117.15.255 { 0xd9751000, 0xd98affff, REGISTRY_RIPENCC }, // 217.117.16.0 - 217.138.255.255 { 0xd98b0000, 0xd98bffff, REGISTRY_AFRINIC }, // 217.139.0.0 - 217.139.255.255 { 0xd98c0000, 0xd991dfff, REGISTRY_RIPENCC }, // 217.140.0.0 - 217.145.223.255 { 0xd991f000, 0xd992ffff, REGISTRY_RIPENCC }, // 217.145.240.0 - 217.146.255.255 { 0xd9931000, 0xd993b7ff, REGISTRY_RIPENCC }, // 217.147.16.0 - 217.147.183.255 { 0xd993b800, 0xd993bfff, REGISTRY_ARIN }, // 217.147.184.0 - 217.147.191.255 { 0xd993c000, 0xd9947fff, REGISTRY_RIPENCC }, // 217.147.192.0 - 217.148.127.255 { 0xd9949000, 0xd997bfff, REGISTRY_RIPENCC }, // 217.148.144.0 - 217.151.191.255 { 0xd997c000, 0xd997dfff, REGISTRY_RIPENCC }, // 217.151.192.0 - 217.151.223.255 { 0xd997e000, 0xd9aa8fff, REGISTRY_RIPENCC }, // 217.151.224.0 - 217.170.143.255 { 0xd9aa9000, 0xd9aa9fff, REGISTRY_AFRINIC }, // 217.170.144.0 - 217.170.159.255 { 0xd9aaa000, 0xd9adafff, REGISTRY_RIPENCC }, // 217.170.160.0 - 217.173.175.255 { 0xd9adb000, 0xd9adbfff, REGISTRY_RIPENCC }, // 217.173.176.0 - 217.173.191.255 { 0xd9adc000, 0xd9c38fff, REGISTRY_RIPENCC }, // 217.173.192.0 - 217.195.143.255 { 0xd9c3a000, 0xd9c54fff, REGISTRY_RIPENCC }, // 217.195.160.0 - 217.197.79.255 { 0xd9c55000, 0xd9c55fff, REGISTRY_RIPENCC }, // 217.197.80.0 - 217.197.95.255 { 0xd9c56000, 0xd9c59fff, REGISTRY_RIPENCC }, // 217.197.96.0 - 217.197.159.255 { 0xd9c5b000, 0xd9c78fff, REGISTRY_RIPENCC }, // 217.197.176.0 - 217.199.143.255 { 0xd9c79000, 0xd9c79fff, REGISTRY_AFRINIC }, // 217.199.144.0 - 217.199.159.255 { 0xd9c7a000, 0xd9ffffff, REGISTRY_RIPENCC }, // 217.199.160.0 - 217.255.255.255 { 0xda000000, 0xda6413ff, REGISTRY_APNIC }, // 218.0.0.0 - 218.100.19.255 { 0xda641500, 0xda6432ff, REGISTRY_APNIC }, // 218.100.21.0 - 218.100.50.255 { 0xda643400, 0xda643aff, REGISTRY_APNIC }, // 218.100.52.0 - 218.100.58.255 { 0xda643c00, 0xda6443ff, REGISTRY_APNIC }, // 218.100.60.0 - 218.100.67.255 { 0xda644500, 0xda6445ff, REGISTRY_APNIC }, // 218.100.69.0 - 218.100.69.255 { 0xda644700, 0xda644eff, REGISTRY_APNIC }, // 218.100.71.0 - 218.100.78.255 { 0xda645000, 0xda6455ff, REGISTRY_APNIC }, // 218.100.80.0 - 218.100.85.255 { 0xda645700, 0xdc986fff, REGISTRY_APNIC }, // 218.100.87.0 - 220.152.111.255 { 0xdc987800, 0xdf1a0fff, REGISTRY_APNIC }, // 220.152.120.0 - 223.26.15.255 { 0xdf1a2000, 0xdfffffff, REGISTRY_APNIC }, // 223.26.32.0 - 223.255.255.255 }; static const s_ipv4addr_assignment dbipv4addr_assignment_iana[] = { //first , last , registry { 0x00000000, 0x00ffffff, REGISTRY_IANA }, // 0.0.0.0 - 0.255.255.255 { 0x01000000, 0x01ffffff, REGISTRY_APNIC }, // 1.0.0.0 - 1.255.255.255 { 0x02000000, 0x02ffffff, REGISTRY_RIPENCC }, // 2.0.0.0 - 2.255.255.255 { 0x03000000, 0x03ffffff, REGISTRY_ARIN }, // 3.0.0.0 - 3.255.255.255 { 0x04000000, 0x04ffffff, REGISTRY_ARIN }, // 4.0.0.0 - 4.255.255.255 { 0x05000000, 0x05ffffff, REGISTRY_RIPENCC }, // 5.0.0.0 - 5.255.255.255 { 0x06000000, 0x06ffffff, REGISTRY_ARIN }, // 6.0.0.0 - 6.255.255.255 { 0x07000000, 0x07ffffff, REGISTRY_ARIN }, // 7.0.0.0 - 7.255.255.255 { 0x08000000, 0x08ffffff, REGISTRY_ARIN }, // 8.0.0.0 - 8.255.255.255 { 0x09000000, 0x09ffffff, REGISTRY_ARIN }, // 9.0.0.0 - 9.255.255.255 { 0x0a000000, 0x0affffff, REGISTRY_IANA }, // 10.0.0.0 - 10.255.255.255 { 0x0b000000, 0x0bffffff, REGISTRY_ARIN }, // 11.0.0.0 - 11.255.255.255 { 0x0c000000, 0x0cffffff, REGISTRY_ARIN }, // 12.0.0.0 - 12.255.255.255 { 0x0d000000, 0x0dffffff, REGISTRY_ARIN }, // 13.0.0.0 - 13.255.255.255 { 0x0e000000, 0x0effffff, REGISTRY_APNIC }, // 14.0.0.0 - 14.255.255.255 { 0x0f000000, 0x0fffffff, REGISTRY_ARIN }, // 15.0.0.0 - 15.255.255.255 { 0x10000000, 0x10ffffff, REGISTRY_ARIN }, // 16.0.0.0 - 16.255.255.255 { 0x11000000, 0x11ffffff, REGISTRY_ARIN }, // 17.0.0.0 - 17.255.255.255 { 0x12000000, 0x12ffffff, REGISTRY_ARIN }, // 18.0.0.0 - 18.255.255.255 { 0x13000000, 0x13ffffff, REGISTRY_ARIN }, // 19.0.0.0 - 19.255.255.255 { 0x14000000, 0x14ffffff, REGISTRY_ARIN }, // 20.0.0.0 - 20.255.255.255 { 0x15000000, 0x15ffffff, REGISTRY_ARIN }, // 21.0.0.0 - 21.255.255.255 { 0x16000000, 0x16ffffff, REGISTRY_ARIN }, // 22.0.0.0 - 22.255.255.255 { 0x17000000, 0x17ffffff, REGISTRY_ARIN }, // 23.0.0.0 - 23.255.255.255 { 0x18000000, 0x18ffffff, REGISTRY_ARIN }, // 24.0.0.0 - 24.255.255.255 { 0x19000000, 0x19ffffff, REGISTRY_RIPENCC }, // 25.0.0.0 - 25.255.255.255 { 0x1a000000, 0x1affffff, REGISTRY_ARIN }, // 26.0.0.0 - 26.255.255.255 { 0x1b000000, 0x1bffffff, REGISTRY_APNIC }, // 27.0.0.0 - 27.255.255.255 { 0x1c000000, 0x1cffffff, REGISTRY_ARIN }, // 28.0.0.0 - 28.255.255.255 { 0x1d000000, 0x1dffffff, REGISTRY_ARIN }, // 29.0.0.0 - 29.255.255.255 { 0x1e000000, 0x1effffff, REGISTRY_ARIN }, // 30.0.0.0 - 30.255.255.255 { 0x1f000000, 0x1fffffff, REGISTRY_RIPENCC }, // 31.0.0.0 - 31.255.255.255 { 0x20000000, 0x20ffffff, REGISTRY_ARIN }, // 32.0.0.0 - 32.255.255.255 { 0x21000000, 0x21ffffff, REGISTRY_ARIN }, // 33.0.0.0 - 33.255.255.255 { 0x22000000, 0x22ffffff, REGISTRY_ARIN }, // 34.0.0.0 - 34.255.255.255 { 0x23000000, 0x23ffffff, REGISTRY_ARIN }, // 35.0.0.0 - 35.255.255.255 { 0x24000000, 0x24ffffff, REGISTRY_APNIC }, // 36.0.0.0 - 36.255.255.255 { 0x25000000, 0x25ffffff, REGISTRY_RIPENCC }, // 37.0.0.0 - 37.255.255.255 { 0x26000000, 0x26ffffff, REGISTRY_ARIN }, // 38.0.0.0 - 38.255.255.255 { 0x27000000, 0x27ffffff, REGISTRY_APNIC }, // 39.0.0.0 - 39.255.255.255 { 0x28000000, 0x28ffffff, REGISTRY_ARIN }, // 40.0.0.0 - 40.255.255.255 { 0x29000000, 0x29ffffff, REGISTRY_AFRINIC }, // 41.0.0.0 - 41.255.255.255 { 0x2a000000, 0x2affffff, REGISTRY_APNIC }, // 42.0.0.0 - 42.255.255.255 { 0x2b000000, 0x2bffffff, REGISTRY_APNIC }, // 43.0.0.0 - 43.255.255.255 { 0x2c000000, 0x2cffffff, REGISTRY_ARIN }, // 44.0.0.0 - 44.255.255.255 { 0x2d000000, 0x2dffffff, REGISTRY_ARIN }, // 45.0.0.0 - 45.255.255.255 { 0x2e000000, 0x2effffff, REGISTRY_RIPENCC }, // 46.0.0.0 - 46.255.255.255 { 0x2f000000, 0x2fffffff, REGISTRY_ARIN }, // 47.0.0.0 - 47.255.255.255 { 0x30000000, 0x30ffffff, REGISTRY_ARIN }, // 48.0.0.0 - 48.255.255.255 { 0x31000000, 0x31ffffff, REGISTRY_APNIC }, // 49.0.0.0 - 49.255.255.255 { 0x32000000, 0x32ffffff, REGISTRY_ARIN }, // 50.0.0.0 - 50.255.255.255 { 0x33000000, 0x33ffffff, REGISTRY_RIPENCC }, // 51.0.0.0 - 51.255.255.255 { 0x34000000, 0x34ffffff, REGISTRY_ARIN }, // 52.0.0.0 - 52.255.255.255 { 0x35000000, 0x35ffffff, REGISTRY_RIPENCC }, // 53.0.0.0 - 53.255.255.255 { 0x36000000, 0x36ffffff, REGISTRY_ARIN }, // 54.0.0.0 - 54.255.255.255 { 0x37000000, 0x37ffffff, REGISTRY_ARIN }, // 55.0.0.0 - 55.255.255.255 { 0x38000000, 0x38ffffff, REGISTRY_ARIN }, // 56.0.0.0 - 56.255.255.255 { 0x39000000, 0x39ffffff, REGISTRY_RIPENCC }, // 57.0.0.0 - 57.255.255.255 { 0x3a000000, 0x3affffff, REGISTRY_APNIC }, // 58.0.0.0 - 58.255.255.255 { 0x3b000000, 0x3bffffff, REGISTRY_APNIC }, // 59.0.0.0 - 59.255.255.255 { 0x3c000000, 0x3cffffff, REGISTRY_APNIC }, // 60.0.0.0 - 60.255.255.255 { 0x3d000000, 0x3dffffff, REGISTRY_APNIC }, // 61.0.0.0 - 61.255.255.255 { 0x3e000000, 0x3effffff, REGISTRY_RIPENCC }, // 62.0.0.0 - 62.255.255.255 { 0x3f000000, 0x3fffffff, REGISTRY_ARIN }, // 63.0.0.0 - 63.255.255.255 { 0x40000000, 0x40ffffff, REGISTRY_ARIN }, // 64.0.0.0 - 64.255.255.255 { 0x41000000, 0x41ffffff, REGISTRY_ARIN }, // 65.0.0.0 - 65.255.255.255 { 0x42000000, 0x42ffffff, REGISTRY_ARIN }, // 66.0.0.0 - 66.255.255.255 { 0x43000000, 0x43ffffff, REGISTRY_ARIN }, // 67.0.0.0 - 67.255.255.255 { 0x44000000, 0x44ffffff, REGISTRY_ARIN }, // 68.0.0.0 - 68.255.255.255 { 0x45000000, 0x45ffffff, REGISTRY_ARIN }, // 69.0.0.0 - 69.255.255.255 { 0x46000000, 0x46ffffff, REGISTRY_ARIN }, // 70.0.0.0 - 70.255.255.255 { 0x47000000, 0x47ffffff, REGISTRY_ARIN }, // 71.0.0.0 - 71.255.255.255 { 0x48000000, 0x48ffffff, REGISTRY_ARIN }, // 72.0.0.0 - 72.255.255.255 { 0x49000000, 0x49ffffff, REGISTRY_ARIN }, // 73.0.0.0 - 73.255.255.255 { 0x4a000000, 0x4affffff, REGISTRY_ARIN }, // 74.0.0.0 - 74.255.255.255 { 0x4b000000, 0x4bffffff, REGISTRY_ARIN }, // 75.0.0.0 - 75.255.255.255 { 0x4c000000, 0x4cffffff, REGISTRY_ARIN }, // 76.0.0.0 - 76.255.255.255 { 0x4d000000, 0x4dffffff, REGISTRY_RIPENCC }, // 77.0.0.0 - 77.255.255.255 { 0x4e000000, 0x4effffff, REGISTRY_RIPENCC }, // 78.0.0.0 - 78.255.255.255 { 0x4f000000, 0x4fffffff, REGISTRY_RIPENCC }, // 79.0.0.0 - 79.255.255.255 { 0x50000000, 0x50ffffff, REGISTRY_RIPENCC }, // 80.0.0.0 - 80.255.255.255 { 0x51000000, 0x51ffffff, REGISTRY_RIPENCC }, // 81.0.0.0 - 81.255.255.255 { 0x52000000, 0x52ffffff, REGISTRY_RIPENCC }, // 82.0.0.0 - 82.255.255.255 { 0x53000000, 0x53ffffff, REGISTRY_RIPENCC }, // 83.0.0.0 - 83.255.255.255 { 0x54000000, 0x54ffffff, REGISTRY_RIPENCC }, // 84.0.0.0 - 84.255.255.255 { 0x55000000, 0x55ffffff, REGISTRY_RIPENCC }, // 85.0.0.0 - 85.255.255.255 { 0x56000000, 0x56ffffff, REGISTRY_RIPENCC }, // 86.0.0.0 - 86.255.255.255 { 0x57000000, 0x57ffffff, REGISTRY_RIPENCC }, // 87.0.0.0 - 87.255.255.255 { 0x58000000, 0x58ffffff, REGISTRY_RIPENCC }, // 88.0.0.0 - 88.255.255.255 { 0x59000000, 0x59ffffff, REGISTRY_RIPENCC }, // 89.0.0.0 - 89.255.255.255 { 0x5a000000, 0x5affffff, REGISTRY_RIPENCC }, // 90.0.0.0 - 90.255.255.255 { 0x5b000000, 0x5bffffff, REGISTRY_RIPENCC }, // 91.0.0.0 - 91.255.255.255 { 0x5c000000, 0x5cffffff, REGISTRY_RIPENCC }, // 92.0.0.0 - 92.255.255.255 { 0x5d000000, 0x5dffffff, REGISTRY_RIPENCC }, // 93.0.0.0 - 93.255.255.255 { 0x5e000000, 0x5effffff, REGISTRY_RIPENCC }, // 94.0.0.0 - 94.255.255.255 { 0x5f000000, 0x5fffffff, REGISTRY_RIPENCC }, // 95.0.0.0 - 95.255.255.255 { 0x60000000, 0x60ffffff, REGISTRY_ARIN }, // 96.0.0.0 - 96.255.255.255 { 0x61000000, 0x61ffffff, REGISTRY_ARIN }, // 97.0.0.0 - 97.255.255.255 { 0x62000000, 0x62ffffff, REGISTRY_ARIN }, // 98.0.0.0 - 98.255.255.255 { 0x63000000, 0x63ffffff, REGISTRY_ARIN }, // 99.0.0.0 - 99.255.255.255 { 0x64000000, 0x64ffffff, REGISTRY_ARIN }, // 100.0.0.0 - 100.255.255.255 { 0x65000000, 0x65ffffff, REGISTRY_APNIC }, // 101.0.0.0 - 101.255.255.255 { 0x66000000, 0x66ffffff, REGISTRY_AFRINIC }, // 102.0.0.0 - 102.255.255.255 { 0x67000000, 0x67ffffff, REGISTRY_APNIC }, // 103.0.0.0 - 103.255.255.255 { 0x68000000, 0x68ffffff, REGISTRY_ARIN }, // 104.0.0.0 - 104.255.255.255 { 0x69000000, 0x69ffffff, REGISTRY_AFRINIC }, // 105.0.0.0 - 105.255.255.255 { 0x6a000000, 0x6affffff, REGISTRY_APNIC }, // 106.0.0.0 - 106.255.255.255 { 0x6b000000, 0x6bffffff, REGISTRY_ARIN }, // 107.0.0.0 - 107.255.255.255 { 0x6c000000, 0x6cffffff, REGISTRY_ARIN }, // 108.0.0.0 - 108.255.255.255 { 0x6d000000, 0x6dffffff, REGISTRY_RIPENCC }, // 109.0.0.0 - 109.255.255.255 { 0x6e000000, 0x6effffff, REGISTRY_APNIC }, // 110.0.0.0 - 110.255.255.255 { 0x6f000000, 0x6fffffff, REGISTRY_APNIC }, // 111.0.0.0 - 111.255.255.255 { 0x70000000, 0x70ffffff, REGISTRY_APNIC }, // 112.0.0.0 - 112.255.255.255 { 0x71000000, 0x71ffffff, REGISTRY_APNIC }, // 113.0.0.0 - 113.255.255.255 { 0x72000000, 0x72ffffff, REGISTRY_APNIC }, // 114.0.0.0 - 114.255.255.255 { 0x73000000, 0x73ffffff, REGISTRY_APNIC }, // 115.0.0.0 - 115.255.255.255 { 0x74000000, 0x74ffffff, REGISTRY_APNIC }, // 116.0.0.0 - 116.255.255.255 { 0x75000000, 0x75ffffff, REGISTRY_APNIC }, // 117.0.0.0 - 117.255.255.255 { 0x76000000, 0x76ffffff, REGISTRY_APNIC }, // 118.0.0.0 - 118.255.255.255 { 0x77000000, 0x77ffffff, REGISTRY_APNIC }, // 119.0.0.0 - 119.255.255.255 { 0x78000000, 0x78ffffff, REGISTRY_APNIC }, // 120.0.0.0 - 120.255.255.255 { 0x79000000, 0x79ffffff, REGISTRY_APNIC }, // 121.0.0.0 - 121.255.255.255 { 0x7a000000, 0x7affffff, REGISTRY_APNIC }, // 122.0.0.0 - 122.255.255.255 { 0x7b000000, 0x7bffffff, REGISTRY_APNIC }, // 123.0.0.0 - 123.255.255.255 { 0x7c000000, 0x7cffffff, REGISTRY_APNIC }, // 124.0.0.0 - 124.255.255.255 { 0x7d000000, 0x7dffffff, REGISTRY_APNIC }, // 125.0.0.0 - 125.255.255.255 { 0x7e000000, 0x7effffff, REGISTRY_APNIC }, // 126.0.0.0 - 126.255.255.255 { 0x7f000000, 0x7fffffff, REGISTRY_IANA }, // 127.0.0.0 - 127.255.255.255 { 0x80000000, 0x80ffffff, REGISTRY_ARIN }, // 128.0.0.0 - 128.255.255.255 { 0x81000000, 0x81ffffff, REGISTRY_ARIN }, // 129.0.0.0 - 129.255.255.255 { 0x82000000, 0x82ffffff, REGISTRY_ARIN }, // 130.0.0.0 - 130.255.255.255 { 0x83000000, 0x83ffffff, REGISTRY_ARIN }, // 131.0.0.0 - 131.255.255.255 { 0x84000000, 0x84ffffff, REGISTRY_ARIN }, // 132.0.0.0 - 132.255.255.255 { 0x85000000, 0x85ffffff, REGISTRY_APNIC }, // 133.0.0.0 - 133.255.255.255 { 0x86000000, 0x86ffffff, REGISTRY_ARIN }, // 134.0.0.0 - 134.255.255.255 { 0x87000000, 0x87ffffff, REGISTRY_ARIN }, // 135.0.0.0 - 135.255.255.255 { 0x88000000, 0x88ffffff, REGISTRY_ARIN }, // 136.0.0.0 - 136.255.255.255 { 0x89000000, 0x89ffffff, REGISTRY_ARIN }, // 137.0.0.0 - 137.255.255.255 { 0x8a000000, 0x8affffff, REGISTRY_ARIN }, // 138.0.0.0 - 138.255.255.255 { 0x8b000000, 0x8bffffff, REGISTRY_ARIN }, // 139.0.0.0 - 139.255.255.255 { 0x8c000000, 0x8cffffff, REGISTRY_ARIN }, // 140.0.0.0 - 140.255.255.255 { 0x8d000000, 0x8dffffff, REGISTRY_RIPENCC }, // 141.0.0.0 - 141.255.255.255 { 0x8e000000, 0x8effffff, REGISTRY_ARIN }, // 142.0.0.0 - 142.255.255.255 { 0x8f000000, 0x8fffffff, REGISTRY_ARIN }, // 143.0.0.0 - 143.255.255.255 { 0x90000000, 0x90ffffff, REGISTRY_ARIN }, // 144.0.0.0 - 144.255.255.255 { 0x91000000, 0x91ffffff, REGISTRY_RIPENCC }, // 145.0.0.0 - 145.255.255.255 { 0x92000000, 0x92ffffff, REGISTRY_ARIN }, // 146.0.0.0 - 146.255.255.255 { 0x93000000, 0x93ffffff, REGISTRY_ARIN }, // 147.0.0.0 - 147.255.255.255 { 0x94000000, 0x94ffffff, REGISTRY_ARIN }, // 148.0.0.0 - 148.255.255.255 { 0x95000000, 0x95ffffff, REGISTRY_ARIN }, // 149.0.0.0 - 149.255.255.255 { 0x96000000, 0x96ffffff, REGISTRY_APNIC }, // 150.0.0.0 - 150.255.255.255 { 0x97000000, 0x97ffffff, REGISTRY_RIPENCC }, // 151.0.0.0 - 151.255.255.255 { 0x98000000, 0x98ffffff, REGISTRY_ARIN }, // 152.0.0.0 - 152.255.255.255 { 0x99000000, 0x99ffffff, REGISTRY_APNIC }, // 153.0.0.0 - 153.255.255.255 { 0x9a000000, 0x9affffff, REGISTRY_AFRINIC }, // 154.0.0.0 - 154.255.255.255 { 0x9b000000, 0x9bffffff, REGISTRY_ARIN }, // 155.0.0.0 - 155.255.255.255 { 0x9c000000, 0x9cffffff, REGISTRY_ARIN }, // 156.0.0.0 - 156.255.255.255 { 0x9d000000, 0x9dffffff, REGISTRY_ARIN }, // 157.0.0.0 - 157.255.255.255 { 0x9e000000, 0x9effffff, REGISTRY_ARIN }, // 158.0.0.0 - 158.255.255.255 { 0x9f000000, 0x9fffffff, REGISTRY_ARIN }, // 159.0.0.0 - 159.255.255.255 { 0xa0000000, 0xa0ffffff, REGISTRY_ARIN }, // 160.0.0.0 - 160.255.255.255 { 0xa1000000, 0xa1ffffff, REGISTRY_ARIN }, // 161.0.0.0 - 161.255.255.255 { 0xa2000000, 0xa2ffffff, REGISTRY_ARIN }, // 162.0.0.0 - 162.255.255.255 { 0xa3000000, 0xa3ffffff, REGISTRY_APNIC }, // 163.0.0.0 - 163.255.255.255 { 0xa4000000, 0xa4ffffff, REGISTRY_ARIN }, // 164.0.0.0 - 164.255.255.255 { 0xa5000000, 0xa5ffffff, REGISTRY_ARIN }, // 165.0.0.0 - 165.255.255.255 { 0xa6000000, 0xa6ffffff, REGISTRY_ARIN }, // 166.0.0.0 - 166.255.255.255 { 0xa7000000, 0xa7ffffff, REGISTRY_ARIN }, // 167.0.0.0 - 167.255.255.255 { 0xa8000000, 0xa8ffffff, REGISTRY_ARIN }, // 168.0.0.0 - 168.255.255.255 { 0xa9000000, 0xa9ffffff, REGISTRY_ARIN }, // 169.0.0.0 - 169.255.255.255 { 0xaa000000, 0xaaffffff, REGISTRY_ARIN }, // 170.0.0.0 - 170.255.255.255 { 0xab000000, 0xabffffff, REGISTRY_APNIC }, // 171.0.0.0 - 171.255.255.255 { 0xac000000, 0xacffffff, REGISTRY_ARIN }, // 172.0.0.0 - 172.255.255.255 { 0xad000000, 0xadffffff, REGISTRY_ARIN }, // 173.0.0.0 - 173.255.255.255 { 0xae000000, 0xaeffffff, REGISTRY_ARIN }, // 174.0.0.0 - 174.255.255.255 { 0xaf000000, 0xafffffff, REGISTRY_APNIC }, // 175.0.0.0 - 175.255.255.255 { 0xb0000000, 0xb0ffffff, REGISTRY_RIPENCC }, // 176.0.0.0 - 176.255.255.255 { 0xb1000000, 0xb1ffffff, REGISTRY_LACNIC }, // 177.0.0.0 - 177.255.255.255 { 0xb2000000, 0xb2ffffff, REGISTRY_RIPENCC }, // 178.0.0.0 - 178.255.255.255 { 0xb3000000, 0xb3ffffff, REGISTRY_LACNIC }, // 179.0.0.0 - 179.255.255.255 { 0xb4000000, 0xb4ffffff, REGISTRY_APNIC }, // 180.0.0.0 - 180.255.255.255 { 0xb5000000, 0xb5ffffff, REGISTRY_LACNIC }, // 181.0.0.0 - 181.255.255.255 { 0xb6000000, 0xb6ffffff, REGISTRY_APNIC }, // 182.0.0.0 - 182.255.255.255 { 0xb7000000, 0xb7ffffff, REGISTRY_APNIC }, // 183.0.0.0 - 183.255.255.255 { 0xb8000000, 0xb8ffffff, REGISTRY_ARIN }, // 184.0.0.0 - 184.255.255.255 { 0xb9000000, 0xb9ffffff, REGISTRY_RIPENCC }, // 185.0.0.0 - 185.255.255.255 { 0xba000000, 0xbaffffff, REGISTRY_LACNIC }, // 186.0.0.0 - 186.255.255.255 { 0xbb000000, 0xbbffffff, REGISTRY_LACNIC }, // 187.0.0.0 - 187.255.255.255 { 0xbc000000, 0xbcffffff, REGISTRY_RIPENCC }, // 188.0.0.0 - 188.255.255.255 { 0xbd000000, 0xbdffffff, REGISTRY_LACNIC }, // 189.0.0.0 - 189.255.255.255 { 0xbe000000, 0xbeffffff, REGISTRY_LACNIC }, // 190.0.0.0 - 190.255.255.255 { 0xbf000000, 0xbfffffff, REGISTRY_LACNIC }, // 191.0.0.0 - 191.255.255.255 { 0xc0000000, 0xc0ffffff, REGISTRY_ARIN }, // 192.0.0.0 - 192.255.255.255 { 0xc1000000, 0xc1ffffff, REGISTRY_RIPENCC }, // 193.0.0.0 - 193.255.255.255 { 0xc2000000, 0xc2ffffff, REGISTRY_RIPENCC }, // 194.0.0.0 - 194.255.255.255 { 0xc3000000, 0xc3ffffff, REGISTRY_RIPENCC }, // 195.0.0.0 - 195.255.255.255 { 0xc4000000, 0xc4ffffff, REGISTRY_AFRINIC }, // 196.0.0.0 - 196.255.255.255 { 0xc5000000, 0xc5ffffff, REGISTRY_AFRINIC }, // 197.0.0.0 - 197.255.255.255 { 0xc6000000, 0xc6ffffff, REGISTRY_ARIN }, // 198.0.0.0 - 198.255.255.255 { 0xc7000000, 0xc7ffffff, REGISTRY_ARIN }, // 199.0.0.0 - 199.255.255.255 { 0xc8000000, 0xc8ffffff, REGISTRY_LACNIC }, // 200.0.0.0 - 200.255.255.255 { 0xc9000000, 0xc9ffffff, REGISTRY_LACNIC }, // 201.0.0.0 - 201.255.255.255 { 0xca000000, 0xcaffffff, REGISTRY_APNIC }, // 202.0.0.0 - 202.255.255.255 { 0xcb000000, 0xcbffffff, REGISTRY_APNIC }, // 203.0.0.0 - 203.255.255.255 { 0xcc000000, 0xccffffff, REGISTRY_ARIN }, // 204.0.0.0 - 204.255.255.255 { 0xcd000000, 0xcdffffff, REGISTRY_ARIN }, // 205.0.0.0 - 205.255.255.255 { 0xce000000, 0xceffffff, REGISTRY_ARIN }, // 206.0.0.0 - 206.255.255.255 { 0xcf000000, 0xcfffffff, REGISTRY_ARIN }, // 207.0.0.0 - 207.255.255.255 { 0xd0000000, 0xd0ffffff, REGISTRY_ARIN }, // 208.0.0.0 - 208.255.255.255 { 0xd1000000, 0xd1ffffff, REGISTRY_ARIN }, // 209.0.0.0 - 209.255.255.255 { 0xd2000000, 0xd2ffffff, REGISTRY_APNIC }, // 210.0.0.0 - 210.255.255.255 { 0xd3000000, 0xd3ffffff, REGISTRY_APNIC }, // 211.0.0.0 - 211.255.255.255 { 0xd4000000, 0xd4ffffff, REGISTRY_RIPENCC }, // 212.0.0.0 - 212.255.255.255 { 0xd5000000, 0xd5ffffff, REGISTRY_RIPENCC }, // 213.0.0.0 - 213.255.255.255 { 0xd6000000, 0xd6ffffff, REGISTRY_ARIN }, // 214.0.0.0 - 214.255.255.255 { 0xd7000000, 0xd7ffffff, REGISTRY_ARIN }, // 215.0.0.0 - 215.255.255.255 { 0xd8000000, 0xd8ffffff, REGISTRY_ARIN }, // 216.0.0.0 - 216.255.255.255 { 0xd9000000, 0xd9ffffff, REGISTRY_RIPENCC }, // 217.0.0.0 - 217.255.255.255 { 0xda000000, 0xdaffffff, REGISTRY_APNIC }, // 218.0.0.0 - 218.255.255.255 { 0xdb000000, 0xdbffffff, REGISTRY_APNIC }, // 219.0.0.0 - 219.255.255.255 { 0xdc000000, 0xdcffffff, REGISTRY_APNIC }, // 220.0.0.0 - 220.255.255.255 { 0xdd000000, 0xddffffff, REGISTRY_APNIC }, // 221.0.0.0 - 221.255.255.255 { 0xde000000, 0xdeffffff, REGISTRY_APNIC }, // 222.0.0.0 - 222.255.255.255 { 0xdf000000, 0xdfffffff, REGISTRY_APNIC }, // 223.0.0.0 - 223.255.255.255 { 0xe0000000, 0xe0ffffff, REGISTRY_IANA }, // 224.0.0.0 - 224.255.255.255 { 0xe1000000, 0xe1ffffff, REGISTRY_IANA }, // 225.0.0.0 - 225.255.255.255 { 0xe2000000, 0xe2ffffff, REGISTRY_IANA }, // 226.0.0.0 - 226.255.255.255 { 0xe3000000, 0xe3ffffff, REGISTRY_IANA }, // 227.0.0.0 - 227.255.255.255 { 0xe4000000, 0xe4ffffff, REGISTRY_IANA }, // 228.0.0.0 - 228.255.255.255 { 0xe5000000, 0xe5ffffff, REGISTRY_IANA }, // 229.0.0.0 - 229.255.255.255 { 0xe6000000, 0xe6ffffff, REGISTRY_IANA }, // 230.0.0.0 - 230.255.255.255 { 0xe7000000, 0xe7ffffff, REGISTRY_IANA }, // 231.0.0.0 - 231.255.255.255 { 0xe8000000, 0xe8ffffff, REGISTRY_IANA }, // 232.0.0.0 - 232.255.255.255 { 0xe9000000, 0xe9ffffff, REGISTRY_IANA }, // 233.0.0.0 - 233.255.255.255 { 0xea000000, 0xeaffffff, REGISTRY_IANA }, // 234.0.0.0 - 234.255.255.255 { 0xeb000000, 0xebffffff, REGISTRY_IANA }, // 235.0.0.0 - 235.255.255.255 { 0xec000000, 0xecffffff, REGISTRY_IANA }, // 236.0.0.0 - 236.255.255.255 { 0xed000000, 0xedffffff, REGISTRY_IANA }, // 237.0.0.0 - 237.255.255.255 { 0xee000000, 0xeeffffff, REGISTRY_IANA }, // 238.0.0.0 - 238.255.255.255 { 0xef000000, 0xefffffff, REGISTRY_IANA }, // 239.0.0.0 - 239.255.255.255 { 0xf0000000, 0xf0ffffff, REGISTRY_IANA }, // 240.0.0.0 - 240.255.255.255 { 0xf1000000, 0xf1ffffff, REGISTRY_IANA }, // 241.0.0.0 - 241.255.255.255 { 0xf2000000, 0xf2ffffff, REGISTRY_IANA }, // 242.0.0.0 - 242.255.255.255 { 0xf3000000, 0xf3ffffff, REGISTRY_IANA }, // 243.0.0.0 - 243.255.255.255 { 0xf4000000, 0xf4ffffff, REGISTRY_IANA }, // 244.0.0.0 - 244.255.255.255 { 0xf5000000, 0xf5ffffff, REGISTRY_IANA }, // 245.0.0.0 - 245.255.255.255 { 0xf6000000, 0xf6ffffff, REGISTRY_IANA }, // 246.0.0.0 - 246.255.255.255 { 0xf7000000, 0xf7ffffff, REGISTRY_IANA }, // 247.0.0.0 - 247.255.255.255 { 0xf8000000, 0xf8ffffff, REGISTRY_IANA }, // 248.0.0.0 - 248.255.255.255 { 0xf9000000, 0xf9ffffff, REGISTRY_IANA }, // 249.0.0.0 - 249.255.255.255 { 0xfa000000, 0xfaffffff, REGISTRY_IANA }, // 250.0.0.0 - 250.255.255.255 { 0xfb000000, 0xfbffffff, REGISTRY_IANA }, // 251.0.0.0 - 251.255.255.255 { 0xfc000000, 0xfcffffff, REGISTRY_IANA }, // 252.0.0.0 - 252.255.255.255 { 0xfd000000, 0xfdffffff, REGISTRY_IANA }, // 253.0.0.0 - 253.255.255.255 { 0xfe000000, 0xfeffffff, REGISTRY_IANA }, // 254.0.0.0 - 254.255.255.255 { 0xff000000, 0xffffffff, REGISTRY_IANA }, // 255.0.0.0 - 255.255.255.255 }; static const s_ipv4addr_info dbipv4addr_info[] = { //first , last , registry { 0x99100000, 0x991000ff, "LISP#asp-xtr" }, // 153.16.0.0 - 153.16.0.255 { 0x99100080, 0x991000ff, "LISP#asp-xtr" }, // 153.16.0.128 - 153.16.0.255 { 0x99100100, 0x991001ff, "LISP#ntt-xtr" }, // 153.16.1.0 - 153.16.1.255 { 0x99100200, 0x991002ff, "LISP#bell-ca-xtr" }, // 153.16.2.0 - 153.16.2.255 { 0x99100300, 0x991003ff, "LISP#nyu-xtr" }, // 153.16.3.0 - 153.16.3.255 { 0x99100500, 0x991005ff, "LISP#cisco-it-xtr" }, // 153.16.5.0 - 153.16.5.255 { 0x99100700, 0x991007ff, "LISP#asp-n7k-xtr" }, // 153.16.7.0 - 153.16.7.255 { 0x99100800, 0x991008ff, "LISP#ucla-xtr" }, // 153.16.8.0 - 153.16.8.255 { 0x99100900, 0x9910090f, "LISP#fabio-new-mn" }, // 153.16.9.0 - 153.16.9.15 { 0x99100910, 0x9910091f, "LISP#nmaadara-xtr" }, // 153.16.9.16 - 153.16.9.31 { 0x99100920, 0x9910092f, "LISP#gbumgard-xtr" }, // 153.16.9.32 - 153.16.9.47 { 0x99100930, 0x9910093f, "LISP#chuljin-xtr" }, // 153.16.9.48 - 153.16.9.63 { 0x99100940, 0x9910094f, "LISP#akennedy-xtr" }, // 153.16.9.64 - 153.16.9.79 { 0x99100950, 0x9910095f, "LISP#jcolin-xtr" }, // 153.16.9.80 - 153.16.9.95 { 0x99100960, 0x9910096f, "LISP#rbonnell-xtr" }, // 153.16.9.96 - 153.16.9.111 { 0x99100970, 0x9910097f, "LISP#jalberti-xtr" }, // 153.16.9.112 - 153.16.9.127 { 0x99100980, 0x9910098f, "LISP#mmaurice-xtr" }, // 153.16.9.128 - 153.16.9.143 { 0x99100a00, 0x99100aff, "LISP#vaf-xtr" }, // 153.16.10.0 - 153.16.10.255 { 0x99100b00, 0x99100bff, "LISP#icox-xtr" }, // 153.16.11.0 - 153.16.11.255 { 0x99100c00, 0x99100c3f, "LISP#srin-jcd-dc1" }, // 153.16.12.0 - 153.16.12.63 { 0x99100c40, 0x99100c7f, "LISP#srin-jcd-dc2" }, // 153.16.12.64 - 153.16.12.127 { 0x99100cf0, 0x99100cf7, "LISP#srin-jcd-dc1" }, // 153.16.12.240 - 153.16.12.247 { 0x99100cf8, 0x99100cff, "LISP#srin-jcd-dc2" }, // 153.16.12.248 - 153.16.12.255 { 0x99100d00, 0x99100d0f, "LISP#snoble-xtr" }, // 153.16.13.0 - 153.16.13.15 { 0x99100d20, 0x99100d2f, "LISP#dalvarez-xtr" }, // 153.16.13.32 - 153.16.13.47 { 0x99100d40, 0x99100d4f, "LISP#wnellis-xtr" }, // 153.16.13.64 - 153.16.13.79 { 0x99100d50, 0x99100d5f, "LISP#srin-xtr" }, // 153.16.13.80 - 153.16.13.95 { 0x99100d60, 0x99100d6f, "LISP#amit-xtr" }, // 153.16.13.96 - 153.16.13.111 { 0x99100d80, 0x99100d8f, "LISP#stevenca-xtr" }, // 153.16.13.128 - 153.16.13.143 { 0x99100d90, 0x99100d9f, "LISP#jearango-xtr" }, // 153.16.13.144 - 153.16.13.159 { 0x99100da0, 0x99100daf, "LISP#sulrich-xtr" }, // 153.16.13.160 - 153.16.13.175 { 0x99100db0, 0x99100dbf, "LISP#manishee-xtr" }, // 153.16.13.176 - 153.16.13.191 { 0x99100dc0, 0x99100dcf, "LISP#aaronm-xtr" }, // 153.16.13.192 - 153.16.13.207 { 0x99100dd0, 0x99100ddf, "LISP#samuel-xtr" }, // 153.16.13.208 - 153.16.13.223 { 0x99100de0, 0x99100def, "LISP#wwt-xtr" }, // 153.16.13.224 - 153.16.13.239 { 0x99100e00, 0x99100e3f, "LISP#c819-LTE-xtr" }, // 153.16.14.0 - 153.16.14.63 { 0x99100f00, 0x99100fff, "LISP#facebook-xtr-1" }, // 153.16.15.0 - 153.16.15.255 { 0x99101000, 0x991010ff, "LISP#isc-pxtr" }, // 153.16.16.0 - 153.16.16.255 { 0x99101100, 0x9910110f, "LISP#vl-openwrt1-xtr" }, // 153.16.17.0 - 153.16.17.15 { 0x99101110, 0x9910111f, "LISP#gregg-xtr" }, // 153.16.17.16 - 153.16.17.31 { 0x99101130, 0x9910113f, "LISP#vl-openwrt2-xtr" }, // 153.16.17.48 - 153.16.17.63 { 0x99101140, 0x9910114f, "LISP#vl-openwrt3-xtr" }, // 153.16.17.64 - 153.16.17.79 { 0x99101150, 0x9910115f, "LISP#asr1knat64-xtr" }, // 153.16.17.80 - 153.16.17.95 { 0x99101160, 0x9910116f, "LISP#zhicheng-xtr" }, // 153.16.17.96 - 153.16.17.111 { 0x99101170, 0x9910117f, "LISP#nattrav-test-arin" }, // 153.16.17.112 - 153.16.17.127 { 0x99101180, 0x9910118f, "LISP#liguori-xtr" }, // 153.16.17.128 - 153.16.17.143 { 0x99101190, 0x9910119f, "LISP#djcalif-xtr" }, // 153.16.17.144 - 153.16.17.159 { 0x991011a0, 0x991011af, "LISP#dehrle1-xtr" }, // 153.16.17.160 - 153.16.17.175 { 0x991011b0, 0x991011bf, "LISP#dehrle2-xtr" }, // 153.16.17.176 - 153.16.17.191 { 0x991011c0, 0x991011cf, "LISP#divya-xtr" }, // 153.16.17.192 - 153.16.17.207 { 0x991011d0, 0x991011df, "LISP#jhennessy-xtr" }, // 153.16.17.208 - 153.16.17.223 { 0x991011e0, 0x991011ef, "LISP#martin-xtr" }, // 153.16.17.224 - 153.16.17.239 { 0x991011f0, 0x991011ff, "LISP#comfort-xtr" }, // 153.16.17.240 - 153.16.17.255 { 0x99101200, 0x9910120f, "LISP#robert-cdw-xtr" }, // 153.16.18.0 - 153.16.18.15 { 0x99101210, 0x9910121f, "LISP#lierop-xtr" }, // 153.16.18.16 - 153.16.18.31 { 0x99101220, 0x9910122f, "LISP#cmh-xtr" }, // 153.16.18.32 - 153.16.18.47 { 0x99101240, 0x9910124f, "LISP#tosterbe-xtr" }, // 153.16.18.64 - 153.16.18.79 { 0x99101250, 0x9910125f, "LISP#kecorbin-xtr" }, // 153.16.18.80 - 153.16.18.95 { 0x99101260, 0x9910126f, "LISP#dstsyst-xtr" }, // 153.16.18.96 - 153.16.18.111 { 0x99101280, 0x9910128f, "LISP#ufrj-xtr" }, // 153.16.18.128 - 153.16.18.143 { 0x99101290, 0x9910129f, "LISP#machilde-xtr" }, // 153.16.18.144 - 153.16.18.159 { 0x991012a0, 0x991012af, "LISP#jessica-xtr" }, // 153.16.18.160 - 153.16.18.175 { 0x991012b0, 0x991012bf, "LISP#archana-xtr" }, // 153.16.18.176 - 153.16.18.191 { 0x991012c0, 0x991012cf, "LISP#jadumars-xtr" }, // 153.16.18.192 - 153.16.18.207 { 0x991012d0, 0x991012df, "LISP#gorhughe-xtr" }, // 153.16.18.208 - 153.16.18.223 { 0x99101300, 0x991013ff, "LISP#darrel-xtr" }, // 153.16.19.0 - 153.16.19.255 { 0x99101400, 0x991014ff, "LISP#scwaller-xtr" }, // 153.16.20.0 - 153.16.20.255 { 0x991015d4, 0x991015d4, "LISP#antasson-mn" }, // 153.16.21.212 - 153.16.21.212 { 0x99101700, 0x9910170f, "LISP#linh-xtr" }, // 153.16.23.0 - 153.16.23.15 { 0x99101710, 0x9910171f, "LISP#sfu-bcnet-xtr" }, // 153.16.23.16 - 153.16.23.31 { 0x99101720, 0x9910172f, "LISP#dipsingh-xtr" }, // 153.16.23.32 - 153.16.23.47 { 0x99101730, 0x9910173f, "LISP#trevlac-xtr" }, // 153.16.23.48 - 153.16.23.63 { 0x99101740, 0x9910174f, "LISP#parna-lev-xtr" }, // 153.16.23.64 - 153.16.23.79 { 0x99101750, 0x9910175f, "LISP#rob-cdw-xtr" }, // 153.16.23.80 - 153.16.23.95 { 0x99101760, 0x9910176f, "LISP#scv-xtr" }, // 153.16.23.96 - 153.16.23.111 { 0x99101770, 0x9910177f, "LISP#muabid-xtr" }, // 153.16.23.112 - 153.16.23.127 { 0x99101780, 0x9910178f, "LISP#steve-apple-xtr" }, // 153.16.23.128 - 153.16.23.143 { 0x99101790, 0x9910179f, "LISP#kleinart-xtr" }, // 153.16.23.144 - 153.16.23.159 { 0x991017a0, 0x991017af, "LISP#chanu-xtr" }, // 153.16.23.160 - 153.16.23.175 { 0x991017b0, 0x991017bf, "LISP#mhaaksma-xtr" }, // 153.16.23.176 - 153.16.23.191 { 0x991017c0, 0x991017cf, "LISP#tellis-xtr" }, // 153.16.23.192 - 153.16.23.207 { 0x991017d0, 0x991017df, "LISP#jade-xtr" }, // 153.16.23.208 - 153.16.23.223 { 0x991017e0, 0x991017ef, "LISP#neno-xtr" }, // 153.16.23.224 - 153.16.23.239 { 0x991017f0, 0x991017ff, "LISP#elsen-xtr" }, // 153.16.23.240 - 153.16.23.255 { 0x99101800, 0x991018ff, "LISP#attpoc-xtr" }, // 153.16.24.0 - 153.16.24.255 { 0x99101900, 0x9910190f, "LISP#rymcdowe-xtr" }, // 153.16.25.0 - 153.16.25.15 { 0x99101910, 0x9910191f, "LISP#miles-xtr" }, // 153.16.25.16 - 153.16.25.31 { 0x99101920, 0x9910192f, "LISP#smith-xtr" }, // 153.16.25.32 - 153.16.25.47 { 0x99101930, 0x9910193f, "LISP#epulvino-xtr" }, // 153.16.25.48 - 153.16.25.63 { 0x99101940, 0x9910194f, "LISP#crhill-xtr" }, // 153.16.25.64 - 153.16.25.79 { 0x99101950, 0x9910195f, "LISP#smadley-xtr" }, // 153.16.25.80 - 153.16.25.95 { 0x99101960, 0x9910196f, "LISP#mbirkner-xtr" }, // 153.16.25.96 - 153.16.25.111 { 0x99101970, 0x9910197f, "LISP#mikea-xtr" }, // 153.16.25.112 - 153.16.25.127 { 0x99101980, 0x9910198f, "LISP#jemannin-xtr" }, // 153.16.25.128 - 153.16.25.143 { 0x99101990, 0x9910199f, "LISP#chcoutur-xtr" }, // 153.16.25.144 - 153.16.25.159 { 0x991019a0, 0x991019af, "LISP#bluethunder-xtr" }, // 153.16.25.160 - 153.16.25.175 { 0x991019b0, 0x991019bf, "LISP#marknguy-xtr" }, // 153.16.25.176 - 153.16.25.191 { 0x991019c0, 0x991019cf, "LISP#marcairn-xtr" }, // 153.16.25.192 - 153.16.25.207 { 0x991019d0, 0x991019df, "LISP#byzek-xtr" }, // 153.16.25.208 - 153.16.25.223 { 0x991019e0, 0x991019ef, "LISP#jason-xtr" }, // 153.16.25.224 - 153.16.25.239 { 0x991019f0, 0x991019ff, "LISP#groff-xtr" }, // 153.16.25.240 - 153.16.25.255 { 0x99101a00, 0x99101a0f, "LISP#mwhitley-xtr" }, // 153.16.26.0 - 153.16.26.15 { 0x99101a10, 0x99101a1f, "LISP#dlapiper-xtr" }, // 153.16.26.16 - 153.16.26.31 { 0x99101a20, 0x99101a2f, "LISP#manhoo-xtr" }, // 153.16.26.32 - 153.16.26.47 { 0x99101a30, 0x99101a3f, "LISP#georgy-xtr" }, // 153.16.26.48 - 153.16.26.63 { 0x99101a40, 0x99101a4f, "LISP#jhippen-xtr" }, // 153.16.26.64 - 153.16.26.79 { 0x99101a50, 0x99101a5f, "LISP#cbc-xtr" }, // 153.16.26.80 - 153.16.26.95 { 0x99101a60, 0x99101a6f, "LISP#garydla-xtr" }, // 153.16.26.96 - 153.16.26.111 { 0x99101a70, 0x99101a7f, "LISP#scalan-xtr" }, // 153.16.26.112 - 153.16.26.127 { 0x99101a80, 0x99101a8f, "LISP#donkdla-xtr" }, // 153.16.26.128 - 153.16.26.143 { 0x99101a90, 0x99101a9f, "LISP#umissouri-xtr" }, // 153.16.26.144 - 153.16.26.159 { 0x99101aa0, 0x99101aaf, "LISP#ge-tsg-xtr" }, // 153.16.26.160 - 153.16.26.175 { 0x99101ab0, 0x99101abf, "LISP#manjeet-xtr" }, // 153.16.26.176 - 153.16.26.191 { 0x99101ac0, 0x99101acf, "LISP#uvahs-xtr" }, // 153.16.26.192 - 153.16.26.207 { 0x99101ad0, 0x99101adf, "LISP#zavarce-xtr" }, // 153.16.26.208 - 153.16.26.223 { 0x99101ae0, 0x99101aef, "LISP#dudek-xtr" }, // 153.16.26.224 - 153.16.26.239 { 0x99101af0, 0x99101aff, "LISP#force3a-xtr" }, // 153.16.26.240 - 153.16.26.255 { 0x99101b00, 0x99101bff, "LISP#icann-xtr" }, // 153.16.27.0 - 153.16.27.255 { 0x99101c00, 0x99101cff, "LISP#attpoc-xtr-2" }, // 153.16.28.0 - 153.16.28.255 { 0x99101d00, 0x99101d0f, "LISP#jpcaron-xtr" }, // 153.16.29.0 - 153.16.29.15 { 0x99101d10, 0x99101d1f, "LISP#jamwheat-xtr" }, // 153.16.29.16 - 153.16.29.31 { 0x99101d20, 0x99101d2f, "LISP#netorian-xtr" }, // 153.16.29.32 - 153.16.29.47 { 0x99101d30, 0x99101d3f, "LISP#pogue-xtr" }, // 153.16.29.48 - 153.16.29.63 { 0x99101d40, 0x99101d4f, "LISP#msales-xtr" }, // 153.16.29.64 - 153.16.29.79 { 0x99101d50, 0x99101d5f, "LISP#spisati-xtr-2" }, // 153.16.29.80 - 153.16.29.95 { 0x99101d60, 0x99101d6f, "LISP#lprat-xtr" }, // 153.16.29.96 - 153.16.29.111 { 0x99101d70, 0x99101d7f, "LISP#triple-xtr" }, // 153.16.29.112 - 153.16.29.127 { 0x99101d80, 0x99101d8f, "LISP#columbia-xtr" }, // 153.16.29.128 - 153.16.29.143 { 0x99101d90, 0x99101d9f, "LISP#rtajvar-xtr" }, // 153.16.29.144 - 153.16.29.159 { 0x99101e00, 0x99101e0f, "LISP#google-xtr" }, // 153.16.30.0 - 153.16.30.15 { 0x99101e10, 0x99101e1f, "LISP#ineteng-xtr" }, // 153.16.30.16 - 153.16.30.31 { 0x99101e20, 0x99101e2f, "LISP#force3b-xtr" }, // 153.16.30.32 - 153.16.30.47 { 0x99101e30, 0x99101e3f, "LISP#force3-xtr" }, // 153.16.30.48 - 153.16.30.63 { 0x99101e40, 0x99101e4f, "LISP#wason-xtr" }, // 153.16.30.64 - 153.16.30.79 { 0x99101e50, 0x99101e5f, "LISP#c819-LTE-xtr" }, // 153.16.30.80 - 153.16.30.95 { 0x99101e60, 0x99101e6f, "LISP#schlutter-xtr" }, // 153.16.30.96 - 153.16.30.111 { 0x99101e70, 0x99101e7f, "LISP#bguldan-xtr" }, // 153.16.30.112 - 153.16.30.127 { 0x99101e80, 0x99101e8f, "LISP#naasief-xtr" }, // 153.16.30.128 - 153.16.30.143 { 0x99101e90, 0x99101e9f, "LISP#ciecior-xtr" }, // 153.16.30.144 - 153.16.30.159 { 0x99101ea0, 0x99101eaf, "LISP#coopergeneral-xtr" }, // 153.16.30.160 - 153.16.30.175 { 0x99101eb0, 0x99101ebf, "LISP#plixer-xtr" }, // 153.16.30.176 - 153.16.30.191 { 0x99101ec0, 0x99101ecf, "LISP#halifaxmediagroup-xtr" }, // 153.16.30.192 - 153.16.30.207 { 0x99101ed0, 0x99101edf, "LISP#ec2test-xtr" }, // 153.16.30.208 - 153.16.30.223 { 0x99101ee0, 0x99101eef, "LISP#perry-xtr" }, // 153.16.30.224 - 153.16.30.239 { 0x99101ef0, 0x99101eff, "LISP#fortinet-xtr" }, // 153.16.30.240 - 153.16.30.255 { 0x99101f10, 0x99101f1f, "LISP#chris-ge-xtr" }, // 153.16.31.16 - 153.16.31.31 { 0x99101f20, 0x99101f2f, "LISP#djustice-xtr" }, // 153.16.31.32 - 153.16.31.47 { 0x99101f30, 0x99101f3f, "LISP#apparatus-xtr" }, // 153.16.31.48 - 153.16.31.63 { 0x99101f40, 0x99101f4f, "LISP#cdw-xtr" }, // 153.16.31.64 - 153.16.31.79 { 0x99101f50, 0x99101f5f, "LISP#krunal-xtr" }, // 153.16.31.80 - 153.16.31.95 { 0x99101f60, 0x99101f6f, "LISP#gar-xtr" }, // 153.16.31.96 - 153.16.31.111 { 0x99101f70, 0x99101f7f, "LISP#jbert-xtr" }, // 153.16.31.112 - 153.16.31.127 { 0x99101f80, 0x99101f8f, "LISP#rajiva-xtr" }, // 153.16.31.128 - 153.16.31.143 { 0x99101f90, 0x99101f9f, "LISP#oneok-xtr" }, // 153.16.31.144 - 153.16.31.159 { 0x99101fa0, 0x99101faf, "LISP#sjury-xtr" }, // 153.16.31.160 - 153.16.31.175 { 0x99101fb0, 0x99101fbf, "LISP#dbuleza-xtr" }, // 153.16.31.176 - 153.16.31.191 { 0x99101fc0, 0x99101fcf, "LISP#tommille-xtr" }, // 153.16.31.192 - 153.16.31.207 { 0x99101fd0, 0x99101fdf, "LISP#uer3-xtr" }, // 153.16.31.208 - 153.16.31.223 { 0x99101fe0, 0x99101fef, "LISP#tdstelecom-xtr" }, // 153.16.31.224 - 153.16.31.239 { 0x99101ff0, 0x99101fff, "LISP#dustin-xtr" }, // 153.16.31.240 - 153.16.31.255 { 0x99102000, 0x9910200f, "LISP#thkernen-xtr" }, // 153.16.32.0 - 153.16.32.15 { 0x99102010, 0x9910201f, "LISP#jakab-xtr" }, // 153.16.32.16 - 153.16.32.31 { 0x99102020, 0x9910202f, "LISP#marc-xtr" }, // 153.16.32.32 - 153.16.32.47 { 0x99102030, 0x9910203f, "LISP#deutsche-bank-xtr" }, // 153.16.32.48 - 153.16.32.63 { 0x99102040, 0x9910204f, "LISP#gerd-cbc-xtr" }, // 153.16.32.64 - 153.16.32.79 { 0x99102050, 0x9910205f, "LISP#lbromirs-xtr" }, // 153.16.32.80 - 153.16.32.95 { 0x99102060, 0x9910206f, "LISP#dimitris-xtr" }, // 153.16.32.96 - 153.16.32.111 { 0x99102070, 0x9910207f, "LISP#65bit-xtr" }, // 153.16.32.112 - 153.16.32.127 { 0x99102080, 0x9910208f, "LISP#rolfs-xtr" }, // 153.16.32.128 - 153.16.32.143 { 0x99102090, 0x9910209f, "LISP#markus-xtr" }, // 153.16.32.144 - 153.16.32.159 { 0x991020a0, 0x991020af, "LISP#mkramoli-xtr" }, // 153.16.32.160 - 153.16.32.175 { 0x991020b0, 0x991020bf, "LISP#mironto-xtr" }, // 153.16.32.176 - 153.16.32.191 { 0x991020c0, 0x991020cf, "LISP#munich-arpt-xtr" }, // 153.16.32.192 - 153.16.32.207 { 0x991020d0, 0x991020df, "LISP#mitko-xtr" }, // 153.16.32.208 - 153.16.32.223 { 0x991020e0, 0x991020ef, "LISP#isarnet-xtr" }, // 153.16.32.224 - 153.16.32.239 { 0x991020f0, 0x991020ff, "LISP#experteach-xtr" }, // 153.16.32.240 - 153.16.32.255 { 0x99102100, 0x991021ff, "LISP#gerd-xtr" }, // 153.16.33.0 - 153.16.33.255 { 0x99102200, 0x991022ff, "LISP#luigi-xtr" }, // 153.16.34.0 - 153.16.34.255 { 0x99102300, 0x991023ff, "LISP#damien-xtr" }, // 153.16.35.0 - 153.16.35.255 { 0x99102400, 0x991024ff, "LISP#isarnet-xtr" }, // 153.16.36.0 - 153.16.36.255 { 0x99102500, 0x991025ff, "LISP#dino-xtr" }, // 153.16.37.0 - 153.16.37.255 { 0x99102600, 0x991026ff, "LISP#lip6-fr-xtr" }, // 153.16.38.0 - 153.16.38.255 { 0x99102680, 0x991026ff, "LISP#lip6-fr-xtr" }, // 153.16.38.128 - 153.16.38.255 { 0x99102700, 0x991027ff, "LISP#wolfgang-client-xtr" }, // 153.16.39.0 - 153.16.39.255 { 0x99102800, 0x991028ff, "LISP#simlo-xtr" }, // 153.16.40.0 - 153.16.40.255 { 0x99102900, 0x991029ff, "LISP#wolfgang-odd-xtr" }, // 153.16.41.0 - 153.16.41.255 { 0x99102a00, 0x99102aff, "LISP#wolfgang-even-xtr" }, // 153.16.42.0 - 153.16.42.255 { 0x99102b00, 0x99102b0f, "LISP#jesper-xtr" }, // 153.16.43.0 - 153.16.43.15 { 0x99102b10, 0x99102b1f, "LISP#isidor-xtr" }, // 153.16.43.16 - 153.16.43.31 { 0x99102b20, 0x99102b2f, "LISP#jobsnijders-home-xtr" }, // 153.16.43.32 - 153.16.43.47 { 0x99102b30, 0x99102b3f, "LISP#intouch-office-xtr" }, // 153.16.43.48 - 153.16.43.63 { 0x99102b40, 0x99102b7f, "LISP#intouch-dc1-xtr-1" }, // 153.16.43.64 - 153.16.43.127 { 0x99102b80, 0x99102bbf, "LISP#intouch-dc2-xtr-1" }, // 153.16.43.128 - 153.16.43.191 { 0x99102bf0, 0x99102bff, "LISP#pcharalampou-xtr" }, // 153.16.43.240 - 153.16.43.255 { 0x99102c00, 0x99102c0f, "LISP#tetaneutral-xtr" }, // 153.16.44.0 - 153.16.44.15 { 0x99102c10, 0x99102c1f, "LISP#korpo-tp-xtr" }, // 153.16.44.16 - 153.16.44.31 { 0x99102c20, 0x99102c2f, "LISP#mbosecki-xtr" }, // 153.16.44.32 - 153.16.44.47 { 0x99102c30, 0x99102c3f, "LISP#moreas-xtr" }, // 153.16.44.48 - 153.16.44.63 { 0x99102c40, 0x99102c4f, "LISP#planete-xtr" }, // 153.16.44.64 - 153.16.44.79 { 0x99102c50, 0x99102c5f, "LISP#giheron-xtr" }, // 153.16.44.80 - 153.16.44.95 { 0x99102c60, 0x99102c6f, "LISP#antoine-xtr" }, // 153.16.44.96 - 153.16.44.111 { 0x99102c70, 0x99102c7f, "LISP#uniroma-xtr" }, // 153.16.44.112 - 153.16.44.127 { 0x99102c80, 0x99102c8f, "LISP#jjstevens-xtr" }, // 153.16.44.128 - 153.16.44.143 { 0x99102c90, 0x99102c9f, "LISP#lukasm-xtr" }, // 153.16.44.144 - 153.16.44.159 { 0x99102ca0, 0x99102caf, "LISP#atle-xtr" }, // 153.16.44.160 - 153.16.44.175 { 0x99102cc0, 0x99102ccf, "LISP#geert-xtr" }, // 153.16.44.192 - 153.16.44.207 { 0x99102cd0, 0x99102cdf, "LISP#zilina-xtr" }, // 153.16.44.208 - 153.16.44.223 { 0x99102ce0, 0x99102cef, "LISP#chrisgray-xtr" }, // 153.16.44.224 - 153.16.44.239 { 0x99102d00, 0x99102d0f, "LISP#ch-marcel-xtr" }, // 153.16.45.0 - 153.16.45.15 { 0x99102d10, 0x99102d1f, "LISP#uaveiro-xtr" }, // 153.16.45.16 - 153.16.45.31 { 0x99102d20, 0x99102d2f, "LISP#caspary-xtr" }, // 153.16.45.32 - 153.16.45.47 { 0x99102d30, 0x99102d3f, "LISP#maxried-xtr" }, // 153.16.45.48 - 153.16.45.63 { 0x99102d40, 0x99102d4f, "LISP#yun-xtr" }, // 153.16.45.64 - 153.16.45.79 { 0x99102d50, 0x99102d5f, "LISP#tietze-xtr" }, // 153.16.45.80 - 153.16.45.95 { 0x99102d60, 0x99102d6f, "LISP#jkuhn-xtr" }, // 153.16.45.96 - 153.16.45.111 { 0x99102d70, 0x99102d7f, "LISP#a1-telekom-xtr" }, // 153.16.45.112 - 153.16.45.127 { 0x99102d80, 0x99102d8f, "LISP#renne-xtr" }, // 153.16.45.128 - 153.16.45.143 { 0x99102d90, 0x99102d9f, "LISP#mblokzij-pi-xtr" }, // 153.16.45.144 - 153.16.45.159 { 0x99102da0, 0x99102daf, "LISP#lueers-xtr" }, // 153.16.45.160 - 153.16.45.175 { 0x99102db0, 0x99102dbf, "LISP#hkoerth-xtr" }, // 153.16.45.176 - 153.16.45.191 { 0x99102dc0, 0x99102dcf, "LISP#nclark-xtr" }, // 153.16.45.192 - 153.16.45.207 { 0x99102dd0, 0x99102ddf, "LISP#teridion-xtr" }, // 153.16.45.208 - 153.16.45.223 { 0x99102de0, 0x99102def, "LISP#mgrabner-xtr" }, // 153.16.45.224 - 153.16.45.239 { 0x99102df0, 0x99102dff, "LISP#albring-xtr" }, // 153.16.45.240 - 153.16.45.255 { 0x99102e00, 0x99102eff, "LISP#mcenteme-xtr" }, // 153.16.46.0 - 153.16.46.255 { 0x99102f00, 0x99102f0f, "LISP#mblokzij-xtr" }, // 153.16.47.0 - 153.16.47.15 { 0x99102f10, 0x99102f1f, "LISP#ataf-xtr" }, // 153.16.47.16 - 153.16.47.31 { 0x99102f20, 0x99102f2f, "LISP#adittman-xtr" }, // 153.16.47.32 - 153.16.47.47 { 0x99102f30, 0x99102f3f, "LISP#runar-xtr" }, // 153.16.47.48 - 153.16.47.63 { 0x99102f40, 0x99102f4f, "LISP#iceland-xtr" }, // 153.16.47.64 - 153.16.47.79 { 0x99102f50, 0x99102f5f, "LISP#raabo-xtr" }, // 153.16.47.80 - 153.16.47.95 { 0x99102f60, 0x99102f6f, "LISP#alex-xtr" }, // 153.16.47.96 - 153.16.47.111 { 0x99102f70, 0x99102f7f, "LISP#francesco-xtr" }, // 153.16.47.112 - 153.16.47.127 { 0x99102f80, 0x99102f8f, "LISP#fraunhofer-igd-xtr" }, // 153.16.47.128 - 153.16.47.143 { 0x99102fa0, 0x99102fbf, "LISP#smirnov-xtr" }, // 153.16.47.160 - 153.16.47.191 { 0x99102fc0, 0x99102fcf, "LISP#cegal-xtr" }, // 153.16.47.192 - 153.16.47.207 { 0x99102fd0, 0x99102fdf, "LISP#gloudemans-xtr" }, // 153.16.47.208 - 153.16.47.223 { 0x99102fe0, 0x99102fef, "LISP#claes-xtr" }, // 153.16.47.224 - 153.16.47.239 { 0x99102ff0, 0x99102fff, "LISP#hu-uasu-xtr" }, // 153.16.47.240 - 153.16.47.255 { 0x99103000, 0x9910300f, "LISP#umurcia-1-xtr" }, // 153.16.48.0 - 153.16.48.15 { 0x99103010, 0x9910301f, "LISP#umurcia-2-xtr" }, // 153.16.48.16 - 153.16.48.31 { 0x99103020, 0x9910302f, "LISP#umurcia-3-xtr" }, // 153.16.48.32 - 153.16.48.47 { 0x99103030, 0x9910303f, "LISP#hauschild-xtr" }, // 153.16.48.48 - 153.16.48.63 { 0x99103040, 0x9910304f, "LISP#cat6k-demo-uk" }, // 153.16.48.64 - 153.16.48.79 { 0x99103050, 0x9910305f, "LISP#roel-xtr" }, // 153.16.48.80 - 153.16.48.95 { 0x99103060, 0x9910306f, "LISP#clemens-xtr" }, // 153.16.48.96 - 153.16.48.111 { 0x99103070, 0x9910307f, "LISP#fit-xtr" }, // 153.16.48.112 - 153.16.48.127 { 0x99103080, 0x9910308f, "LISP#level-it-xtr" }, // 153.16.48.128 - 153.16.48.143 { 0x99103090, 0x9910309f, "LISP#AVM01-xtr" }, // 153.16.48.144 - 153.16.48.159 { 0x991030a0, 0x991030af, "LISP#AVM02-xtr" }, // 153.16.48.160 - 153.16.48.175 { 0x991030b0, 0x991030bf, "LISP#AVM03-xtr" }, // 153.16.48.176 - 153.16.48.191 { 0x991030c0, 0x991030cf, "LISP#AVM04-xtr" }, // 153.16.48.192 - 153.16.48.207 { 0x991030d0, 0x991030df, "LISP#AVM05-xtr" }, // 153.16.48.208 - 153.16.48.223 { 0x991030e0, 0x991030ef, "LISP#AVM06-xtr" }, // 153.16.48.224 - 153.16.48.239 { 0x991030f0, 0x991030ff, "LISP#AVM07-xtr" }, // 153.16.48.240 - 153.16.48.255 { 0x99103100, 0x9910310f, "LISP#AVM08-xtr" }, // 153.16.49.0 - 153.16.49.15 { 0x99103110, 0x9910311f, "LISP#AVM09-xtr" }, // 153.16.49.16 - 153.16.49.31 { 0x99103120, 0x9910312f, "LISP#vz-niko-ch" }, // 153.16.49.32 - 153.16.49.47 { 0x99103130, 0x9910313f, "LISP#dipesh-xtr" }, // 153.16.49.48 - 153.16.49.63 { 0x99103140, 0x9910314f, "LISP#quenzer-xtr" }, // 153.16.49.64 - 153.16.49.79 { 0x99103150, 0x9910315f, "LISP#turnerhouse-xtr" }, // 153.16.49.80 - 153.16.49.95 { 0x99103160, 0x9910316f, "LISP#lhsystems-xtr" }, // 153.16.49.96 - 153.16.49.111 { 0x99103170, 0x9910317f, "LISP#coudron-xtr" }, // 153.16.49.112 - 153.16.49.127 { 0x99103180, 0x9910318f, "LISP#hubers-xtr" }, // 153.16.49.128 - 153.16.49.143 { 0x99103190, 0x9910319f, "LISP#woellhaf-xtr" }, // 153.16.49.144 - 153.16.49.159 { 0x991031a0, 0x991031af, "LISP#damjan-xtr" }, // 153.16.49.160 - 153.16.49.175 { 0x991031b0, 0x991031bf, "LISP#leander-xtr" }, // 153.16.49.176 - 153.16.49.191 { 0x991031c0, 0x991031cf, "LISP#nikolay-xtr" }, // 153.16.49.192 - 153.16.49.207 { 0x991031d0, 0x991031df, "LISP#moritz-xtr" }, // 153.16.49.208 - 153.16.49.223 { 0x991031e0, 0x991031ef, "LISP#skonecki-xtr" }, // 153.16.49.224 - 153.16.49.239 { 0x991031f0, 0x991031ff, "LISP#thoene-xtr" }, // 153.16.49.240 - 153.16.49.255 { 0x99103200, 0x9910320f, "LISP#lori-xtr" }, // 153.16.50.0 - 153.16.50.15 { 0x99103210, 0x9910321f, "LISP#reitz-xtr" }, // 153.16.50.16 - 153.16.50.31 { 0x99103220, 0x9910322f, "LISP#jerome-xtr" }, // 153.16.50.32 - 153.16.50.47 { 0x99103230, 0x9910323f, "LISP#netcloud-xtr" }, // 153.16.50.48 - 153.16.50.63 { 0x99103240, 0x9910324f, "LISP#dschulz-xtr" }, // 153.16.50.64 - 153.16.50.79 { 0x99103250, 0x9910325f, "LISP#atea-xtr" }, // 153.16.50.80 - 153.16.50.95 { 0x99103260, 0x9910326f, "LISP#atea2-xtr" }, // 153.16.50.96 - 153.16.50.111 { 0x99103270, 0x9910327f, "LISP#cschmidt-xtr" }, // 153.16.50.112 - 153.16.50.127 { 0x99103280, 0x9910328f, "LISP#eantc-xtr" }, // 153.16.50.128 - 153.16.50.143 { 0x99103290, 0x9910329f, "LISP#sleiweke-xtr" }, // 153.16.50.144 - 153.16.50.159 { 0x991032a0, 0x991032af, "LISP#marcel-xtr" }, // 153.16.50.160 - 153.16.50.175 { 0x991032b0, 0x991032bf, "LISP#goudswaard-xtr" }, // 153.16.50.176 - 153.16.50.191 { 0x991032c0, 0x991032cf, "LISP#axel-xtr" }, // 153.16.50.192 - 153.16.50.207 { 0x991032d0, 0x991032df, "LISP#trieb-xtr" }, // 153.16.50.208 - 153.16.50.223 { 0x991032e0, 0x991032ef, "LISP#strasser-xtr" }, // 153.16.50.224 - 153.16.50.239 { 0x991032f0, 0x991032ff, "LISP#haase-xtr" }, // 153.16.50.240 - 153.16.50.255 { 0x99103300, 0x9910330f, "LISP#hendrickx-xtr" }, // 153.16.51.0 - 153.16.51.15 { 0x99103310, 0x9910331f, "LISP#keronet-xtr" }, // 153.16.51.16 - 153.16.51.31 { 0x99103320, 0x9910332f, "LISP#sarton-xtr" }, // 153.16.51.32 - 153.16.51.47 { 0x99103330, 0x9910333f, "LISP#nattrav-test" }, // 153.16.51.48 - 153.16.51.63 { 0x99103340, 0x9910334f, "LISP#ermidoro-xtr" }, // 153.16.51.64 - 153.16.51.79 { 0x99103350, 0x9910335f, "LISP#scv-xtr" }, // 153.16.51.80 - 153.16.51.95 { 0x99103360, 0x9910336f, "LISP#rjm-xtr" }, // 153.16.51.96 - 153.16.51.111 { 0x99103370, 0x9910337f, "LISP#answanso-xtr" }, // 153.16.51.112 - 153.16.51.127 { 0x99103380, 0x9910338f, "LISP#strehhuber-xtr" }, // 153.16.51.128 - 153.16.51.143 { 0x99103390, 0x9910339f, "LISP#hintermayr-xtr" }, // 153.16.51.144 - 153.16.51.159 { 0x991033a0, 0x991033af, "LISP#gruber-xtr" }, // 153.16.51.160 - 153.16.51.175 { 0x991033b0, 0x991033bf, "LISP#boardrunner-xtr" }, // 153.16.51.176 - 153.16.51.191 { 0x991033c0, 0x991033cf, "LISP#adwin-xtr" }, // 153.16.51.192 - 153.16.51.207 { 0x991033d0, 0x991033df, "LISP#bartschnet-xtr" }, // 153.16.51.208 - 153.16.51.223 { 0x991033e0, 0x991033ef, "LISP#netgaroo-xtr" }, // 153.16.51.224 - 153.16.51.239 { 0x991033f0, 0x991033ff, "LISP#gensonline-xtr" }, // 153.16.51.240 - 153.16.51.255 { 0x99103400, 0x9910347f, "LISP#nuage-lisp-xtr" }, // 153.16.52.0 - 153.16.52.127 { 0x99103480, 0x9910348f, "LISP#kmartini-xtr" }, // 153.16.52.128 - 153.16.52.143 { 0x99103490, 0x9910349f, "LISP#hs-fulda-xtr" }, // 153.16.52.144 - 153.16.52.159 { 0x991034a0, 0x991034af, "LISP#datenschleuder-xtr" }, // 153.16.52.160 - 153.16.52.175 { 0x991034b0, 0x991034bf, "LISP#airmaxx-xtr" }, // 153.16.52.176 - 153.16.52.191 { 0x991034c0, 0x991034cf, "LISP#kewisch-xtr" }, // 153.16.52.192 - 153.16.52.207 { 0x991034d0, 0x991034df, "LISP#cybernet-xtr" }, // 153.16.52.208 - 153.16.52.223 { 0x991034e0, 0x991034ef, "LISP#krzbia-xtr" }, // 153.16.52.224 - 153.16.52.239 { 0x991034f0, 0x991034ff, "LISP#twarwick-xtr" }, // 153.16.52.240 - 153.16.52.255 { 0x99103500, 0x9910350f, "LISP#fuhge-xtr" }, // 153.16.53.0 - 153.16.53.15 { 0x99103510, 0x9910351f, "LISP#isah-xtr" }, // 153.16.53.16 - 153.16.53.31 { 0x99103520, 0x9910352f, "LISP#lovison-xtr" }, // 153.16.53.32 - 153.16.53.47 { 0x99103530, 0x9910353f, "LISP#jens-xtr" }, // 153.16.53.48 - 153.16.53.63 { 0x99103540, 0x9910354f, "LISP#naundorf-xtr" }, // 153.16.53.64 - 153.16.53.79 { 0x99103550, 0x9910355f, "LISP#leon-xtr" }, // 153.16.53.80 - 153.16.53.95 { 0x99103560, 0x9910356f, "LISP#orottler-xtr" }, // 153.16.53.96 - 153.16.53.111 { 0x99103570, 0x9910357f, "LISP#gschell-xtr" }, // 153.16.53.112 - 153.16.53.127 { 0x99103580, 0x9910358f, "LISP#x10103-xtr" }, // 153.16.53.128 - 153.16.53.143 { 0x99103590, 0x9910359f, "LISP#iname-xtr" }, // 153.16.53.144 - 153.16.53.159 { 0x991035a0, 0x991035af, "LISP#aflorio-cz-xtr" }, // 153.16.53.160 - 153.16.53.175 { 0x991035b0, 0x991035bf, "LISP#jps-networks-xtr" }, // 153.16.53.176 - 153.16.53.191 { 0x991035c0, 0x991035cf, "LISP#mamouni-xtr" }, // 153.16.53.192 - 153.16.53.207 { 0x991035d0, 0x991035df, "LISP#hakkarainen-xtr" }, // 153.16.53.208 - 153.16.53.223 { 0x991035e0, 0x991035ef, "LISP#posteo-xtr" }, // 153.16.53.224 - 153.16.53.239 { 0x991035f0, 0x991035ff, "LISP#pierson-xtr" }, // 153.16.53.240 - 153.16.53.255 { 0x99103600, 0x9910360f, "LISP#hulsmann-xtr" }, // 153.16.54.0 - 153.16.54.15 { 0x99103610, 0x9910361f, "LISP#mdavids-xtr" }, // 153.16.54.16 - 153.16.54.31 { 0x99103620, 0x9910362f, "LISP#erikbent-xtr" }, // 153.16.54.32 - 153.16.54.47 { 0x99103630, 0x9910363f, "LISP#polimi-xtr" }, // 153.16.54.48 - 153.16.54.63 { 0x99103640, 0x9910364f, "LISP#panix-xtr" }, // 153.16.54.64 - 153.16.54.79 { 0x99103650, 0x9910365f, "LISP#glindhart-xtr" }, // 153.16.54.80 - 153.16.54.95 { 0x99103660, 0x9910366f, "LISP#dimensiondata-xtr" }, // 153.16.54.96 - 153.16.54.111 { 0x99103670, 0x9910367f, "LISP#pcforce-xtr" }, // 153.16.54.112 - 153.16.54.127 { 0x99103680, 0x9910368f, "LISP#plotnicu-xtr" }, // 153.16.54.128 - 153.16.54.143 { 0x99103690, 0x9910369f, "LISP#zimperfeld-xtr" }, // 153.16.54.144 - 153.16.54.159 { 0x991036a0, 0x991036af, "LISP#aflorio-it-xtr" }, // 153.16.54.160 - 153.16.54.175 { 0x991036b0, 0x991036bf, "LISP#vanlid-xtr" }, // 153.16.54.176 - 153.16.54.191 { 0x991036c0, 0x991036cf, "LISP#kohlstedde-xtr" }, // 153.16.54.192 - 153.16.54.207 { 0x991036d0, 0x991036df, "LISP#wiegleb-xtr" }, // 153.16.54.208 - 153.16.54.223 { 0x991036e0, 0x991036ef, "LISP#dirks-xtr" }, // 153.16.54.224 - 153.16.54.239 { 0x991036f0, 0x991036ff, "LISP#cbursch-xtr" }, // 153.16.54.240 - 153.16.54.255 { 0x99103700, 0x9910370f, "LISP#vz-niko-ge" }, // 153.16.55.0 - 153.16.55.15 { 0x99103710, 0x9910371f, "LISP#vz-niko-de" }, // 153.16.55.16 - 153.16.55.31 { 0x99103720, 0x9910372f, "LISP#voos-xtr" }, // 153.16.55.32 - 153.16.55.47 { 0x99103730, 0x9910373f, "LISP#plominski-xtr" }, // 153.16.55.48 - 153.16.55.63 { 0x99103740, 0x9910374f, "LISP#eison-xtr" }, // 153.16.55.64 - 153.16.55.79 { 0x99103750, 0x9910375f, "LISP#a1-telekom2-xtr" }, // 153.16.55.80 - 153.16.55.95 { 0x99103770, 0x9910377f, "LISP#nord-west-xtr" }, // 153.16.55.112 - 153.16.55.127 { 0x99103790, 0x9910379f, "LISP#frank-xtr" }, // 153.16.55.144 - 153.16.55.159 { 0x991037b0, 0x991037bf, "LISP#uni-obuda-xtr" }, // 153.16.55.176 - 153.16.55.191 { 0x991037c0, 0x991037cf, "LISP#raiffeisen-hu-xtr" }, // 153.16.55.192 - 153.16.55.207 { 0x991037d0, 0x991037df, "LISP#dev252-xtr" }, // 153.16.55.208 - 153.16.55.223 { 0x991037e0, 0x991037ef, "LISP#smit-hague-xtr" }, // 153.16.55.224 - 153.16.55.239 { 0x991037f0, 0x991037ff, "LISP#gierschner-xtr" }, // 153.16.55.240 - 153.16.55.255 { 0x99103800, 0x9910380f, "LISP#lukasm2-xtr" }, // 153.16.56.0 - 153.16.56.15 { 0x99103810, 0x9910381f, "LISP#sacherer-xtr" }, // 153.16.56.16 - 153.16.56.31 { 0x99103820, 0x9910382f, "LISP#gunis-xtr" }, // 153.16.56.32 - 153.16.56.47 { 0x99103830, 0x9910383f, "LISP#hilger-xtr" }, // 153.16.56.48 - 153.16.56.63 { 0x99103840, 0x9910384f, "LISP#schad-xtr" }, // 153.16.56.64 - 153.16.56.79 { 0x99103850, 0x9910385f, "LISP#hagenhoff-xtr" }, // 153.16.56.80 - 153.16.56.95 { 0x99103870, 0x9910387f, "LISP#ibm-gr-xtr" }, // 153.16.56.112 - 153.16.56.127 { 0x99103890, 0x9910389f, "LISP#coldharbour-xtr" }, // 153.16.56.144 - 153.16.56.159 { 0x991038b0, 0x991038bf, "LISP#bach-xtr" }, // 153.16.56.176 - 153.16.56.191 { 0x991038c0, 0x991038cf, "LISP#jschmidle-xtr" }, // 153.16.56.192 - 153.16.56.207 { 0x991038d0, 0x991038df, "LISP#zilina2-xtr" }, // 153.16.56.208 - 153.16.56.223 { 0x991038e0, 0x991038ef, "LISP#dogscafe-xtr" }, // 153.16.56.224 - 153.16.56.239 { 0x991038f0, 0x991038ff, "LISP#mgliwka-xtr" }, // 153.16.56.240 - 153.16.56.255 { 0x99103900, 0x9910390f, "LISP#krunal-eu-xtr" }, // 153.16.57.0 - 153.16.57.15 { 0x99103910, 0x9910391f, "LISP#cstephens-xtr-1" }, // 153.16.57.16 - 153.16.57.31 { 0x99103920, 0x9910392f, "LISP#demierre-xtr" }, // 153.16.57.32 - 153.16.57.47 { 0x99103930, 0x9910393f, "LISP#somogyvari-xtr" }, // 153.16.57.48 - 153.16.57.63 { 0x99103940, 0x9910394f, "LISP#spisati-xtr" }, // 153.16.57.64 - 153.16.57.79 { 0x99103950, 0x9910395f, "LISP#tao-networks-xtr" }, // 153.16.57.80 - 153.16.57.95 { 0x99103960, 0x9910396f, "LISP#willekens-xtr" }, // 153.16.57.96 - 153.16.57.111 { 0x99103970, 0x9910397f, "LISP#jclayton-xtr" }, // 153.16.57.112 - 153.16.57.127 { 0x99103980, 0x9910398f, "LISP#niek-xtr" }, // 153.16.57.128 - 153.16.57.143 { 0x99103990, 0x9910399f, "LISP#mbar-xtr" }, // 153.16.57.144 - 153.16.57.159 { 0x991039b0, 0x991039bf, "LISP#ssanders-xtr" }, // 153.16.57.176 - 153.16.57.191 { 0x991039c0, 0x991039cf, "LISP#eahlers-xtr" }, // 153.16.57.192 - 153.16.57.207 { 0x991039d0, 0x991039df, "LISP#dknobloch-xtr" }, // 153.16.57.208 - 153.16.57.223 { 0x991039e0, 0x991039ef, "LISP#hschutt-xtr" }, // 153.16.57.224 - 153.16.57.239 { 0x991039f0, 0x991039ff, "LISP#lalber-xtr" }, // 153.16.57.240 - 153.16.57.255 { 0x99103a00, 0x99103a0f, "LISP#dwilmer-xtr" }, // 153.16.58.0 - 153.16.58.15 { 0x99103a10, 0x99103a1f, "LISP#sraisl-xtr" }, // 153.16.58.16 - 153.16.58.31 { 0x99103a20, 0x99103a2f, "LISP#mbernhardt-xtr" }, // 153.16.58.32 - 153.16.58.47 { 0x99103a30, 0x99103a3f, "LISP#jguther-xtr" }, // 153.16.58.48 - 153.16.58.63 { 0x99103a40, 0x99103a4f, "LISP#jguenther-xtr" }, // 153.16.58.64 - 153.16.58.79 { 0x99103a50, 0x99103a5f, "LISP#cglasmeyer-xtr" }, // 153.16.58.80 - 153.16.58.95 { 0x99103a60, 0x99103a6f, "LISP#rsiegel-xtr" }, // 153.16.58.96 - 153.16.58.111 { 0x99103a70, 0x99103a7f, "LISP#hbeck-xtr" }, // 153.16.58.112 - 153.16.58.127 { 0x99103a80, 0x99103a8f, "LISP#kwulff-xtr" }, // 153.16.58.128 - 153.16.58.143 { 0x99103a90, 0x99103a9f, "LISP#jpkoegeler-xtr" }, // 153.16.58.144 - 153.16.58.159 { 0x99103ab0, 0x99103abf, "LISP#clangbehn-xtr" }, // 153.16.58.176 - 153.16.58.191 { 0x99103ac0, 0x99103acf, "LISP#degger-xtr" }, // 153.16.58.192 - 153.16.58.207 { 0x99103ad0, 0x99103adf, "LISP#rmalbrecht-xtr" }, // 153.16.58.208 - 153.16.58.223 { 0x99103ae0, 0x99103aef, "LISP#cbretterhofer-xtr" }, // 153.16.58.224 - 153.16.58.239 { 0x99103af0, 0x99103aff, "LISP#gheinen-xtr" }, // 153.16.58.240 - 153.16.58.255 { 0x99103b00, 0x99103b0f, "LISP#twiederhold-xtr" }, // 153.16.59.0 - 153.16.59.15 { 0x99103b10, 0x99103b1f, "LISP#jbaumann-xtr" }, // 153.16.59.16 - 153.16.59.31 { 0x99103b20, 0x99103b2f, "LISP#sscheib-xtr" }, // 153.16.59.32 - 153.16.59.47 { 0x99103b30, 0x99103b3f, "LISP#tluttgert-xtr" }, // 153.16.59.48 - 153.16.59.63 { 0x99103b40, 0x99103b4f, "LISP#dkoppen-xtr" }, // 153.16.59.64 - 153.16.59.79 { 0x99103b50, 0x99103b5f, "LISP#theinz-xtr" }, // 153.16.59.80 - 153.16.59.95 { 0x99103b60, 0x99103b6f, "LISP#tsteen-xtr" }, // 153.16.59.96 - 153.16.59.111 { 0x99103b70, 0x99103b7f, "LISP#cheimanns-xtr" }, // 153.16.59.112 - 153.16.59.127 { 0x99103b80, 0x99103b8f, "LISP#sukiyakiproj-xtr" }, // 153.16.59.128 - 153.16.59.143 { 0x99103b90, 0x99103b9f, "LISP#tstempel-xtr" }, // 153.16.59.144 - 153.16.59.159 { 0x99103bb0, 0x99103bbf, "LISP#crothlander-xtr" }, // 153.16.59.176 - 153.16.59.191 { 0x99103bc0, 0x99103bcf, "LISP#isonmezglu-xtr" }, // 153.16.59.192 - 153.16.59.207 { 0x99103bd0, 0x99103bdf, "LISP#rlehmann-xtr" }, // 153.16.59.208 - 153.16.59.223 { 0x99103be0, 0x99103bef, "LISP#rbeie-xtr" }, // 153.16.59.224 - 153.16.59.239 { 0x99103bf0, 0x99103bff, "LISP#hosius-xtr" }, // 153.16.59.240 - 153.16.59.255 { 0x99103c00, 0x99103c0f, "LISP#hbuchholz-xtr" }, // 153.16.60.0 - 153.16.60.15 { 0x99103c10, 0x99103c1f, "LISP#bgeiger-xtr" }, // 153.16.60.16 - 153.16.60.31 { 0x99103c20, 0x99103c2f, "LISP#bbusch-xtr" }, // 153.16.60.32 - 153.16.60.47 { 0x99103c30, 0x99103c3f, "LISP#flyingcircus-xtr" }, // 153.16.60.48 - 153.16.60.63 { 0x99103c40, 0x99103c4f, "LISP#jfriedrich-xtr" }, // 153.16.60.64 - 153.16.60.79 { 0x99103c50, 0x99103c5f, "LISP#ddroop-xtr" }, // 153.16.60.80 - 153.16.60.95 { 0x99103c60, 0x99103c6f, "LISP#broth-xtr" }, // 153.16.60.96 - 153.16.60.111 { 0x99103c70, 0x99103c7f, "LISP#sbellstedt-xtr" }, // 153.16.60.112 - 153.16.60.127 { 0x99103c80, 0x99103c8f, "LISP#kjaschultowski-xtr" }, // 153.16.60.128 - 153.16.60.143 { 0x99103c90, 0x99103c9f, "LISP#mbuescher-xtr" }, // 153.16.60.144 - 153.16.60.159 { 0x99103cb0, 0x99103cbf, "LISP#wheinze-xtr" }, // 153.16.60.176 - 153.16.60.191 { 0x99103cc0, 0x99103ccf, "LISP#ekoncel-xtr" }, // 153.16.60.192 - 153.16.60.207 { 0x99103cd0, 0x99103cdf, "LISP#mklingspor-xtr" }, // 153.16.60.208 - 153.16.60.223 { 0x99103cd4, 0x99103cd7, "LISP#mklingspor-xtr" }, // 153.16.60.212 - 153.16.60.215 { 0x99103ce0, 0x99103cef, "LISP#gloss-xtr" }, // 153.16.60.224 - 153.16.60.239 { 0x99103cf0, 0x99103cff, "LISP#koandreasson-xtr" }, // 153.16.60.240 - 153.16.60.255 { 0x99103d00, 0x99103d0f, "LISP#hrenz-xtr" }, // 153.16.61.0 - 153.16.61.15 { 0x99103d10, 0x99103d1f, "LISP#uschledorn-xtr" }, // 153.16.61.16 - 153.16.61.31 { 0x99103d20, 0x99103d2f, "LISP#unitbv-xtr" }, // 153.16.61.32 - 153.16.61.47 { 0x99103d30, 0x99103d3f, "LISP#hketele-xtr" }, // 153.16.61.48 - 153.16.61.63 { 0x99103d40, 0x99103d4f, "LISP#gevgrafov-xtr" }, // 153.16.61.64 - 153.16.61.79 { 0x99103d50, 0x99103d5f, "LISP#jriechers-xtr" }, // 153.16.61.80 - 153.16.61.95 { 0x99103d60, 0x99103d6f, "LISP#ebent-xtr" }, // 153.16.61.96 - 153.16.61.111 { 0x99103d70, 0x99103d7f, "LISP#eadeva-xtr" }, // 153.16.61.112 - 153.16.61.127 { 0x99103d80, 0x99103d8f, "LISP#bwieder-xtr" }, // 153.16.61.128 - 153.16.61.143 { 0x99103d90, 0x99103d9f, "LISP#mmikulenas-xtr" }, // 153.16.61.144 - 153.16.61.159 { 0x99103db0, 0x99103dbf, "LISP#mgusek-xtr" }, // 153.16.61.176 - 153.16.61.191 { 0x99103dc0, 0x99103dcf, "LISP#logima-xtr" }, // 153.16.61.192 - 153.16.61.207 { 0x99103dd0, 0x99103ddf, "LISP#mmiller-xtr" }, // 153.16.61.208 - 153.16.61.223 { 0x99103de0, 0x99103def, "LISP#jschlingensiepen-xtr" }, // 153.16.61.224 - 153.16.61.239 { 0x99103df0, 0x99103dff, "LISP#gmassa-xtr" }, // 153.16.61.240 - 153.16.61.255 { 0x99103e00, 0x99103e0f, "LISP#freenet-xtr" }, // 153.16.62.0 - 153.16.62.15 { 0x99103e10, 0x99103e1f, "LISP#dietausendsassa-xtr" }, // 153.16.62.16 - 153.16.62.31 { 0x99103e20, 0x99103e2f, "LISP#niek_van_der_ven-xtr" }, // 153.16.62.32 - 153.16.62.47 { 0x99103e30, 0x99103e3f, "LISP#rspickers-xtr" }, // 153.16.62.48 - 153.16.62.63 { 0x99103f01, 0x99103f01, "LISP#lispmon-mn-u-1" }, // 153.16.63.1 - 153.16.63.1 { 0x99103f02, 0x99103f02, "LISP#lispmob-mn-u-2" }, // 153.16.63.2 - 153.16.63.2 { 0x99104000, 0x991040ff, "LISP#iij-xtr" }, // 153.16.64.0 - 153.16.64.255 { 0x99104100, 0x991041ff, "LISP#hughes-xtr" }, // 153.16.65.0 - 153.16.65.255 { 0x99104200, 0x9910420f, "LISP#ntt-com-xtr" }, // 153.16.66.0 - 153.16.66.15 { 0x99104210, 0x9910421f, "LISP#kddi-labs-xtr" }, // 153.16.66.16 - 153.16.66.31 { 0x99104220, 0x9910422f, "LISP#tata-xtr" }, // 153.16.66.32 - 153.16.66.47 { 0x99104230, 0x9910423f, "LISP#jiwang-xtr" }, // 153.16.66.48 - 153.16.66.63 { 0x99104240, 0x9910424f, "LISP#layim-xtr" }, // 153.16.66.64 - 153.16.66.79 { 0x99104250, 0x9910425f, "LISP#cfwong-xtr" }, // 153.16.66.80 - 153.16.66.95 { 0x99104260, 0x9910426f, "LISP#logicalis-xtr" }, // 153.16.66.96 - 153.16.66.111 { 0x99104270, 0x9910427f, "LISP#cht-xtr" }, // 153.16.66.112 - 153.16.66.127 { 0x99104280, 0x9910428f, "LISP#oasis-tech-xtr" }, // 153.16.66.128 - 153.16.66.143 { 0x99104290, 0x9910429f, "LISP#mingchow-xtr" }, // 153.16.66.144 - 153.16.66.159 { 0x991042a0, 0x991042af, "LISP#jiwang2-xtr" }, // 153.16.66.160 - 153.16.66.175 { 0x991042b0, 0x991042bf, "LISP#fnsc-xtr" }, // 153.16.66.176 - 153.16.66.191 { 0x991042c0, 0x991042cf, "LISP#matsumoto-xtr" }, // 153.16.66.192 - 153.16.66.207 { 0x991042d0, 0x991042df, "LISP#vhan-xtr" }, // 153.16.66.208 - 153.16.66.223 { 0x991042e0, 0x991042ef, "LISP#alphawest-xtr" }, // 153.16.66.224 - 153.16.66.239 { 0x991042f0, 0x991042ff, "LISP#mra4d-xtr" }, // 153.16.66.240 - 153.16.66.255 { 0x99104300, 0x991043ff, "LISP#apan-xtr" }, // 153.16.67.0 - 153.16.67.255 { 0x99104400, 0x991044ff, "LISP#wide-xtr" }, // 153.16.68.0 - 153.16.68.255 { 0x99104500, 0x991045ff, "LISP#nagoya-u-xtr" }, // 153.16.69.0 - 153.16.69.255 { 0x99104600, 0x9910460f, "LISP#yuyarin-xtr" }, // 153.16.70.0 - 153.16.70.15 { 0x99104610, 0x9910461f, "LISP#uet-vnu-xtr" }, // 153.16.70.16 - 153.16.70.31 { 0x99104620, 0x9910462f, "LISP#pccw-xtr" }, // 153.16.70.32 - 153.16.70.47 { 0x99104630, 0x9910463f, "LISP#fitac-xtr" }, // 153.16.70.48 - 153.16.70.63 { 0x99104640, 0x9910465f, "LISP#daniel-xtr-1" }, // 153.16.70.64 - 153.16.70.95 { 0x99104660, 0x9910466f, "LISP#daniel-xtr-2" }, // 153.16.70.96 - 153.16.70.111 { 0x99104670, 0x9910467f, "LISP#daniel-xtr-3" }, // 153.16.70.112 - 153.16.70.127 { 0x99104690, 0x9910469f, "LISP#pgear-xtr" }, // 153.16.70.144 - 153.16.70.159 { 0x991046a0, 0x991046af, "LISP#hongang-xtr" }, // 153.16.70.160 - 153.16.70.175 { 0x991046b0, 0x991046bf, "LISP#chaney-xtr" }, // 153.16.70.176 - 153.16.70.191 { 0x991046c0, 0x991046cf, "LISP#kozuka-xtr" }, // 153.16.70.192 - 153.16.70.207 { 0x991046d0, 0x991046df, "LISP#nattrav-test-apnic" }, // 153.16.70.208 - 153.16.70.223 { 0x991046f0, 0x991046ff, "LISP#ydpark-xtr" }, // 153.16.70.240 - 153.16.70.255 { 0x99104700, 0x9910470f, "LISP#farhadsh-xtr" }, // 153.16.71.0 - 153.16.71.15 { 0x99104710, 0x9910471f, "LISP#hawthorne-xtr" }, // 153.16.71.16 - 153.16.71.31 { 0x99104720, 0x9910472f, "LISP#hyunsoo-xtr" }, // 153.16.71.32 - 153.16.71.47 { 0x99104730, 0x9910473f, "LISP#ykenu-xtr" }, // 153.16.71.48 - 153.16.71.63 { 0x99104740, 0x9910474f, "LISP#gsik-xtr" }, // 153.16.71.64 - 153.16.71.79 { 0x99104750, 0x9910475f, "LISP#yshiin-xtr" }, // 153.16.71.80 - 153.16.71.95 { 0x99104760, 0x9910476f, "LISP#tao-networks2-xtr" }, // 153.16.71.96 - 153.16.71.111 { 0x99104770, 0x9910477f, "LISP#rdines-xtr" }, // 153.16.71.112 - 153.16.71.127 { 0x99104780, 0x9910478f, "LISP#tosterbe1-xtr" }, // 153.16.71.128 - 153.16.71.143 { 0x99104790, 0x9910479f, "LISP#jzhang-xtr" }, // 153.16.71.144 - 153.16.71.159 { 0x991048f0, 0x991048ff, "LISP#gs9591-xtr" }, // 153.16.72.240 - 153.16.72.255 { 0x99104a00, 0x99104aff, "LISP#layim2-xtr" }, // 153.16.74.0 - 153.16.74.255 { 0x99108000, 0x9910800f, "LISP#ufba-xtr" }, // 153.16.128.0 - 153.16.128.15 }; ipv6calc-1.0.0/databases/ipv6-assignment/000077500000000000000000000000001312366535500202115ustar00rootroot00000000000000ipv6calc-1.0.0/databases/ipv6-assignment/Makefile000066400000000000000000000025431312366535500216550ustar00rootroot00000000000000# Project : ipv6calc/databases/ipv6-assignment # File : Makefile # Version : $Id: d04e4985e34b9c8a85f181592ef5add572c5fe54 $ # Copyright : 2005-2017 by Peter Bieringer # Initial copy from ../ipv4-assignment/Makefile & adaption for IPv6 by Simon Arlott # # Information: # Makefile for ipv6-assignment all: test -f dbipv6addr_assignment.h || ${MAKE} update install: echo "Nothing to do" update: echo "Generate new header file, if necessary" ../../tools/ipv6calc-registries-check-run-create.sh -6 -H -C ../../tools/ipv6calc-create-registry-list-ipv6.pl force-update: echo "Generate new header file" ../../tools/ipv6calc-registries-check-run-create.sh -u -6 -H -C ../../tools/ipv6calc-create-registry-list-ipv6.pl db: echo "Generate new db files, if necessary" ../../tools/ipv6calc-registries-check-run-create.sh -6 -B -C ../../tools/ipv6calc-create-registry-list-ipv6.pl force-db: echo "Generate new db files" ../../tools/ipv6calc-registries-check-run-create.sh -u -6 -B -C ../../tools/ipv6calc-create-registry-list-ipv6.pl updateclean: echo "Delete header file" rm -f dbipv6addr_assignment.h echo "Delete DB files" rm -f ipv6calc-external-ipv6-registry.db ipv6calc-external-ipv6-countrycode.db distclean: echo "Nothing to do" autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/ipv6-assignment/README000066400000000000000000000001621312366535500210700ustar00rootroot00000000000000$Id: 3ece54777c1038c771dcc08d4dfc7011ced5a04c $ Use "make update" to create header file from registry data files ipv6calc-1.0.0/databases/ipv6-assignment/dbipv6addr_assignment.h000066400000000000000000001272311312366535500246450ustar00rootroot00000000000000/* * Project : ipv6calc * File : dbipv6_assignment.h * Version : $Id: 510bf42d9740b4d8f6b79c721e7316b1b2674e25 $ * Generated : 20170625-094748+0200 CEST * Data copyright: IANA ARIN RIPENCC APNIC LACNIC AFRINIC * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "databases/lib/libipv6calc_db_wrapper_BuiltIn.h" static const char* dbipv6addr_registry_status __attribute__ ((__unused__)) = "AFRINIC/20170625 APNIC/20170624 ARIN/20170625 IANA/20170104 LACNIC/20170623 LISP/20170625 RIPENCC/20170624"; static const time_t dbipv6addr_registry_unixtime __attribute__ ((__unused__)) = 1498376868; static const s_ipv6addr_assignment dbipv6addr_assignment[] = { //ipv6_00_31, ipv6_32_63, mask_00_31, mask_32_63, mask_length, registry { 0x20010000, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_IANA }, { 0x20010005, 0x00000000, 0xffffffff, 0x00000000, 32, REGISTRY_RIPENCC }, { 0x20010200, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_APNIC }, { 0x20010400, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_ARIN }, { 0x20010600, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x200107fa, 0x00000001, 0xffffffff, 0xffffffff, 64, REGISTRY_APNIC }, { 0x200107fa, 0x00000002, 0xffffffff, 0xffffffff, 64, REGISTRY_APNIC }, { 0x200107fa, 0x00000003, 0xffffffff, 0xffffffff, 64, REGISTRY_APNIC }, { 0x200107fa, 0x00010000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00020000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00030000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00040000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00050000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00060000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00070000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00080000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00090000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x000a0000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x000b0000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x000c0000, 0xffffffff, 0xfffe0000, 47, REGISTRY_APNIC }, { 0x200107fa, 0x000e0000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x000f0000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00100000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x200107fa, 0x00110000, 0xffffffff, 0xffff0000, 48, REGISTRY_APNIC }, { 0x20010800, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20010a00, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20010c00, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_APNIC }, { 0x20010e00, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_APNIC }, { 0x20011200, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_LACNIC }, { 0x20011400, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20011600, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20011800, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_ARIN }, { 0x20011a00, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20011c00, 0x00000000, 0xfffffc00, 0x00000000, 22, REGISTRY_RIPENCC }, { 0x20012000, 0x00000000, 0xfffff000, 0x00000000, 20, REGISTRY_RIPENCC }, { 0x20013000, 0x00000000, 0xfffff800, 0x00000000, 21, REGISTRY_RIPENCC }, { 0x20013800, 0x00000000, 0xfffffc00, 0x00000000, 22, REGISTRY_RIPENCC }, { 0x20013c00, 0x00000000, 0xfffffc00, 0x00000000, 22, REGISTRY_IANA }, { 0x20014000, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20014200, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_AFRINIC }, { 0x20014400, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_APNIC }, { 0x20014600, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20014800, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_ARIN }, { 0x20014a00, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20014c00, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_RIPENCC }, { 0x20015000, 0x00000000, 0xfffff000, 0x00000000, 20, REGISTRY_RIPENCC }, { 0x20018000, 0x00000000, 0xffffe000, 0x00000000, 19, REGISTRY_APNIC }, { 0x2001a000, 0x00000000, 0xfffff000, 0x00000000, 20, REGISTRY_APNIC }, { 0x2001b000, 0x00000000, 0xfffff000, 0x00000000, 20, REGISTRY_APNIC }, { 0x20020000, 0x00000000, 0xffff0000, 0x00000000, 16, REGISTRY_6TO4 }, { 0x20030000, 0x00000000, 0xffffc000, 0x00000000, 18, REGISTRY_RIPENCC }, { 0x24000000, 0x00000000, 0xfff00000, 0x00000000, 12, REGISTRY_APNIC }, { 0x26000000, 0x00000000, 0xfff00000, 0x00000000, 12, REGISTRY_ARIN }, { 0x26100000, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_ARIN }, { 0x26200000, 0x00000000, 0xfffffe00, 0x00000000, 23, REGISTRY_ARIN }, { 0x28000000, 0x00000000, 0xfff00000, 0x00000000, 12, REGISTRY_LACNIC }, { 0x2a000000, 0x00000000, 0xfff00000, 0x00000000, 12, REGISTRY_RIPENCC }, { 0x2c000000, 0x00000000, 0xfff00000, 0x00000000, 12, REGISTRY_AFRINIC }, { 0x2d000000, 0x00000000, 0xff000000, 0x00000000, 8, REGISTRY_IANA }, { 0x2e000000, 0x00000000, 0xfe000000, 0x00000000, 7, REGISTRY_IANA }, { 0x30000000, 0x00000000, 0xf0000000, 0x00000000, 4, REGISTRY_IANA }, { 0x3ffe0000, 0x00000000, 0xffff0000, 0x00000000, 16, REGISTRY_IANA }, { 0x5f000000, 0x00000000, 0xff000000, 0x00000000, 8, REGISTRY_IANA }, }; static const s_ipv6addr_info dbipv6addr_info[] = { //ipv6_00_31, ipv6_32_63, mask_00_31, mask_32_63, mask_length, info { 0x261000d0, 0x11000000, 0xffffffff, 0xffff0000, 48, "LISP#asp-xtr" }, { 0x261000d0, 0x11010000, 0xffffffff, 0xffff0000, 48, "LISP#ntt-xtr" }, { 0x261000d0, 0x11020000, 0xffffffff, 0xffff0000, 48, "LISP#bell-ca-xtr" }, { 0x261000d0, 0x11030000, 0xffffffff, 0xffff0000, 48, "LISP#nyu-xtr" }, { 0x261000d0, 0x11040000, 0xffffffff, 0xffff0000, 48, "LISP#epulvino-xtr" }, { 0x261000d0, 0x11050000, 0xffffffff, 0xffff0000, 48, "LISP#asp-n7k-xtr" }, { 0x261000d0, 0x11060000, 0xffffffff, 0xffff0000, 48, "LISP#rymcdowe-xtr" }, { 0x261000d0, 0x11070000, 0xffffffff, 0xffff0000, 48, "LISP#icann-xtr" }, { 0x261000d0, 0x11080000, 0xffffffff, 0xffff0000, 48, "LISP#genworth-xtr" }, { 0x261000d0, 0x110a0000, 0xffffffff, 0xffff0000, 48, "LISP#google-xtr" }, { 0x261000d0, 0x110b0000, 0xffffffff, 0xffff0000, 48, "LISP#manhoo-xtr" }, { 0x261000d0, 0x110c0000, 0xffffffff, 0xffff0000, 48, "LISP#cisco-it-xtr" }, { 0x261000d0, 0x110d0000, 0xffffffff, 0xffff0000, 48, "LISP#miles-xtr" }, { 0x261000d0, 0x110e0000, 0xffffffff, 0xffff0000, 48, "LISP#smith-xtr" }, { 0x261000d0, 0x110f0000, 0xffffffff, 0xffff0000, 48, "LISP#mikea-xtr" }, { 0x261000d0, 0x11100000, 0xffffffff, 0xffff0000, 48, "LISP#ge-tsg-xtr" }, { 0x261000d0, 0x11110000, 0xffffffff, 0xffff0000, 48, "LISP#crhill-xtr" }, { 0x261000d0, 0x11120000, 0xffffffff, 0xffff0000, 48, "LISP#smadley-xtr" }, { 0x261000d0, 0x11130000, 0xffffffff, 0xffff0000, 48, "LISP#mbirkner-xtr" }, { 0x261000d0, 0x11140000, 0xffffffff, 0xffff0000, 48, "LISP#attpoc-xtr" }, { 0x261000d0, 0x11150000, 0xffffffff, 0xffff0000, 48, "LISP#jemannin-xtr" }, { 0x261000d0, 0x11160000, 0xffffffff, 0xffff0000, 48, "LISP#chcoutur-xtr" }, { 0x261000d0, 0x11170000, 0xffffffff, 0xffff0000, 48, "LISP#bluethunder-xtr" }, { 0x261000d0, 0x11180000, 0xffffffff, 0xffff0000, 48, "LISP#marknguy-xtr" }, { 0x261000d0, 0x11190000, 0xffffffff, 0xffff0000, 48, "LISP#marcairn-xtr" }, { 0x261000d0, 0x111a0000, 0xffffffff, 0xffff0000, 48, "LISP#jason-xtr" }, { 0x261000d0, 0x111b0000, 0xffffffff, 0xffff0000, 48, "LISP#groff-xtr" }, { 0x261000d0, 0x111d0000, 0xffffffff, 0xffff0000, 48, "LISP#mwhitley-xtr" }, { 0x261000d0, 0x111e0000, 0xffffffff, 0xffff0000, 48, "LISP#attpoc-xtr-2" }, { 0x261000d0, 0x111f0000, 0xffffffff, 0xffff0000, 48, "LISP#dlapiper-xtr" }, { 0x261000d0, 0x11200000, 0xffffffff, 0xffff0000, 48, "LISP#manjeet-xtr" }, { 0x261000d0, 0x11210000, 0xffffffff, 0xffff0000, 48, "LISP#dudek-xtr" }, { 0x261000d0, 0x11220000, 0xffffffff, 0xffff0000, 48, "LISP#georgy-xtr" }, { 0x261000d0, 0x11230000, 0xffffffff, 0xffff0000, 48, "LISP#cbc-xtr" }, { 0x261000d0, 0x11240000, 0xffffffff, 0xffff0000, 48, "LISP#jhippen-xtr" }, { 0x261000d0, 0x11250000, 0xffffffff, 0xffff0000, 48, "LISP#garydla-xtr" }, { 0x261000d0, 0x11260000, 0xffffffff, 0xffff0000, 48, "LISP#scalan-xtr" }, { 0x261000d0, 0x11270000, 0xffffffff, 0xffff0000, 48, "LISP#donkdla-xtr" }, { 0x261000d0, 0x11280000, 0xffffffff, 0xffff0000, 48, "LISP#jamwheat-xtr" }, { 0x261000d0, 0x11290000, 0xffffffff, 0xffff0000, 48, "LISP#umissouri-xtr" }, { 0x261000d0, 0x112a0000, 0xffffffff, 0xffff0000, 48, "LISP#uvahs-xtr" }, { 0x261000d0, 0x112b0000, 0xffffffff, 0xffff0000, 48, "LISP#zavarce-xtr" }, { 0x261000d0, 0x112c0000, 0xffffffff, 0xffff0000, 48, "LISP#jansen-xtr" }, { 0x261000d0, 0x112d0000, 0xffffffff, 0xffff0000, 48, "LISP#netorian-xtr" }, { 0x261000d0, 0x112e0000, 0xffffffff, 0xffff0000, 48, "LISP#chris-ge-xtr" }, { 0x261000d0, 0x112f0000, 0xffffffff, 0xffff0000, 48, "LISP#ineteng-xtr" }, { 0x261000d0, 0x11300000, 0xffffffff, 0xffff0000, 48, "LISP#force3a-xtr" }, { 0x261000d0, 0x11310000, 0xffffffff, 0xffff0000, 48, "LISP#force3b-xtr" }, { 0x261000d0, 0x11320000, 0xffffffff, 0xffff0000, 48, "LISP#force3-xtr" }, { 0x261000d0, 0x11330000, 0xffffffff, 0xffff0000, 48, "LISP#wason-xtr" }, { 0x261000d0, 0x11340000, 0xffffffff, 0xffff0000, 48, "LISP#c819-LTE-xtr" }, { 0x261000d0, 0x11350000, 0xffffffff, 0xffff0000, 48, "LISP#schlutter-xtr" }, { 0x261000d0, 0x11360000, 0xffffffff, 0xffff0000, 48, "LISP#bguldan-xtr" }, { 0x261000d0, 0x11370000, 0xffffffff, 0xffff0000, 48, "LISP#naasief-xtr" }, { 0x261000d0, 0x11380000, 0xffffffff, 0xffff0000, 48, "LISP#ciecior-xtr" }, { 0x261000d0, 0x11390000, 0xffffffff, 0xffff0000, 48, "LISP#coopergeneral-xtr" }, { 0x261000d0, 0x113a0000, 0xffffffff, 0xffff0000, 48, "LISP#plixer-xtr" }, { 0x261000d0, 0x113b0000, 0xffffffff, 0xffff0000, 48, "LISP#halifaxmediagroup-xtr" }, { 0x261000d0, 0x113c0000, 0xffffffff, 0xffff0000, 48, "LISP#ec2test-xtr" }, { 0x261000d0, 0x113d0000, 0xffffffff, 0xffff0000, 48, "LISP#perry-xtr" }, { 0x261000d0, 0x113e0000, 0xffffffff, 0xffff0000, 48, "LISP#fortinet-xtr" }, { 0x261000d0, 0x113f0000, 0xffffffff, 0xffff0000, 48, "LISP#djustice-xtr" }, { 0x261000d0, 0x11400000, 0xffffffff, 0xffff0000, 48, "LISP#apparatus-xtr" }, { 0x261000d0, 0x11410000, 0xffffffff, 0xffff0000, 48, "LISP#cdw-xtr" }, { 0x261000d0, 0x11420000, 0xffffffff, 0xffff0000, 48, "LISP#krunal-xtr" }, { 0x261000d0, 0x11430000, 0xffffffff, 0xffff0000, 48, "LISP#gar-xtr" }, { 0x261000d0, 0x11440000, 0xffffffff, 0xffff0000, 48, "LISP#jbert-xtr" }, { 0x261000d0, 0x11450000, 0xffffffff, 0xffff0000, 48, "LISP#rajiva-xtr" }, { 0x261000d0, 0x11460000, 0xffffffff, 0xffff0000, 48, "LISP#oneok-xtr" }, { 0x261000d0, 0x11470000, 0xffffffff, 0xffff0000, 48, "LISP#sjury-xtr" }, { 0x261000d0, 0x11480000, 0xffffffff, 0xffff0000, 48, "LISP#dbuleza-xtr" }, { 0x261000d0, 0x11490000, 0xffffffff, 0xffff0000, 48, "LISP#tommille-xtr" }, { 0x261000d0, 0x114a0000, 0xffffffff, 0xffff0000, 48, "LISP#uer3-xtr" }, { 0x261000d0, 0x114b0000, 0xffffffff, 0xffff0000, 48, "LISP#tdstelecom-xtr" }, { 0x261000d0, 0x114c0000, 0xffffffff, 0xffff0000, 48, "LISP#dustin-xtr" }, { 0x261000d0, 0x114d0000, 0xffffffff, 0xffff0000, 48, "LISP#jpcaron-xtr" }, { 0x261000d0, 0x114e0000, 0xffffffff, 0xffff0000, 48, "LISP#pogue-xtr" }, { 0x261000d0, 0x114f0000, 0xffffffff, 0xffff0000, 48, "LISP#msales-xtr" }, { 0x261000d0, 0x11500000, 0xffffffff, 0xffff0000, 48, "LISP#spisati-xtr-2" }, { 0x261000d0, 0x11510000, 0xffffffff, 0xffff0000, 48, "LISP#lprat-xtr" }, { 0x261000d0, 0x11520000, 0xffffffff, 0xffff0000, 48, "LISP#triple-xtr" }, { 0x261000d0, 0x11530000, 0xffffffff, 0xffff0000, 48, "LISP#columbia-xtr" }, { 0x261000d0, 0x11540000, 0xffffffff, 0xffff0000, 48, "LISP#rtajvar-xtr" }, { 0x261000d0, 0x12020000, 0xffffffff, 0xffff0000, 48, "LISP#icox-xtr" }, { 0x261000d0, 0x12030000, 0xffffffff, 0xffff0000, 48, "LISP#gregg-xtr" }, { 0x261000d0, 0x12050000, 0xffffffff, 0xffff0000, 48, "LISP#snoble-xtr" }, { 0x261000d0, 0x12060000, 0xffffffff, 0xffff0000, 48, "LISP#dalvarez-xtr" }, { 0x261000d0, 0x12070000, 0xffffffff, 0xffff0000, 48, "LISP#ucla-xtr" }, { 0x261000d0, 0x12080000, 0xffffffff, 0xffff0000, 48, "LISP#asr1knat64-xtr" }, { 0x261000d0, 0x120a0000, 0xffffffff, 0xffff0000, 48, "LISP#tosterbe-xtr" }, { 0x261000d0, 0x120b0000, 0xffffffff, 0xffff0000, 48, "LISP#srin-xtr" }, { 0x261000d0, 0x120c0000, 0xffffffff, 0xffff0000, 48, "LISP#wwt-xtr" }, { 0x261000d0, 0x120d0000, 0xffffffff, 0xffff0000, 48, "LISP#qcom-corp-xtr" }, { 0x261000d0, 0x120f0000, 0xffffffff, 0xffff0000, 48, "LISP#wally-world-xtr" }, { 0x261000d0, 0x12110000, 0xffffffff, 0xffff0000, 48, "LISP#amit-xtr" }, { 0x261000d0, 0x12120000, 0xffffffff, 0xffff0000, 48, "LISP#srin-demo-xtr" }, { 0x261000d0, 0x12130000, 0xffffffff, 0xffff0000, 48, "LISP#stevenca-xtr" }, { 0x261000d0, 0x12140000, 0xffffffff, 0xffff0000, 48, "LISP#jearango-xtr" }, { 0x261000d0, 0x12150000, 0xffffffff, 0xffff0000, 48, "LISP#sulrich-xtr" }, { 0x261000d0, 0x12160000, 0xffffffff, 0xffff0000, 48, "LISP#manishee-xtr" }, { 0x261000d0, 0x12170000, 0xffffffff, 0xffff0000, 48, "LISP#aaronm-xtr" }, { 0x261000d0, 0x12180000, 0xffffffff, 0xffff0000, 48, "LISP#samuel-xtr" }, { 0x261000d0, 0x121a0000, 0xffffffff, 0xffff0000, 48, "LISP#fabio-new-mn" }, { 0x261000d0, 0x121b0000, 0xffffffff, 0xffff0000, 48, "LISP#nmaadara-xtr" }, { 0x261000d0, 0x121c0000, 0xffffffff, 0xffff0000, 48, "LISP#liguori-xtr" }, { 0x261000d0, 0x121d0000, 0xffffffff, 0xffff0000, 48, "LISP#kecorbin-xtr" }, { 0x261000d0, 0x121e0000, 0xffffffff, 0xffff0000, 48, "LISP#dstsyst-xtr" }, { 0x261000d0, 0x12200000, 0xffffffff, 0xffff0000, 48, "LISP#ufrj-xtr" }, { 0x261000d0, 0x12210000, 0xffffffff, 0xffff0000, 48, "LISP#machilde-xtr" }, { 0x261000d0, 0x12220000, 0xffffffff, 0xffff0000, 48, "LISP#jessica-xtr" }, { 0x261000d0, 0x12230000, 0xffffffff, 0xffff0000, 48, "LISP#archana-xtr" }, { 0x261000d0, 0x12240000, 0xffffffff, 0xffff0000, 48, "LISP#jadumars-xtr" }, { 0x261000d0, 0x12250000, 0xffffffff, 0xffff0000, 48, "LISP#gorhughe-xtr" }, { 0x261000d0, 0x12260000, 0xffffffff, 0xffff0000, 48, "LISP#gbumgard-xtr" }, { 0x261000d0, 0x12270000, 0xffffffff, 0xffff0000, 48, "LISP#chuljin-xtr" }, { 0x261000d0, 0x12280000, 0xffffffff, 0xffff0000, 48, "LISP#linh-xtr" }, { 0x261000d0, 0x12290000, 0xffffffff, 0xffff0000, 48, "LISP#sfu-bcnet-xtr" }, { 0x261000d0, 0x122a0000, 0xffffffff, 0xffff0000, 48, "LISP#dipsingh-xtr" }, { 0x261000d0, 0x122b0000, 0xffffffff, 0xffff0000, 48, "LISP#trevlac-xtr" }, { 0x261000d0, 0x122c0000, 0xffffffff, 0xffff0000, 48, "LISP#robert-cdw-xtr" }, { 0x261000d0, 0x122d0000, 0xffffffff, 0xffff0000, 48, "LISP#parna-lev-xtr" }, { 0x261000d0, 0x122e0000, 0xffffffff, 0xffff0000, 48, "LISP#rob-cdw-xtr" }, { 0x261000d0, 0x122f0000, 0xffffffff, 0xffff0000, 48, "LISP#scv-xtr" }, { 0x261000d0, 0x12300000, 0xffffffff, 0xffff0000, 48, "LISP#muabid-xtr" }, { 0x261000d0, 0x12310000, 0xffffffff, 0xffff0000, 48, "LISP#steve-apple-xtr" }, { 0x261000d0, 0x12320000, 0xffffffff, 0xffff0000, 48, "LISP#kleinart-xtr" }, { 0x261000d0, 0x12330000, 0xffffffff, 0xffff0000, 48, "LISP#akennedy-xtr" }, { 0x261000d0, 0x12340000, 0xffffffff, 0xffff0000, 48, "LISP#jcolin-xtr" }, { 0x261000d0, 0x12350000, 0xffffffff, 0xffff0000, 48, "LISP#rbonnell-xtr" }, { 0x261000d0, 0x12360000, 0xffffffff, 0xffff0000, 48, "LISP#jalberti-xtr" }, { 0x261000d0, 0x12370000, 0xffffffff, 0xffff0000, 48, "LISP#mmaurice-xtr" }, { 0x261000d0, 0x13020000, 0xffffffff, 0xffff0000, 48, "LISP#wnellis-xtr" }, { 0x261000d0, 0x13030000, 0xffffffff, 0xffff0000, 48, "LISP#darrel-xtr" }, { 0x261000d0, 0x13040000, 0xffffffff, 0xffff0000, 48, "LISP#vaf-xtr" }, { 0x261000d0, 0x13050000, 0xffffffff, 0xffff0000, 48, "LISP#vl-openwrt1-xtr" }, { 0x261000d0, 0x13060000, 0xffffffff, 0xffff0000, 48, "LISP#vl-openwrt2-xtr" }, { 0x261000d0, 0x13070000, 0xffffffff, 0xffff0000, 48, "LISP#vl-openwrt3-xtr" }, { 0x261000d0, 0x13080000, 0xffffffff, 0xffff0000, 48, "LISP#zhicheng-xtr" }, { 0x261000d0, 0x13090000, 0xffffffff, 0xffff0000, 48, "LISP#nattrav-test-arin" }, { 0x261000d0, 0x130a0000, 0xffffffff, 0xffff0000, 48, "LISP#djcalif-xtr" }, { 0x261000d0, 0x130b0000, 0xffffffff, 0xffff0000, 48, "LISP#dehrle1-xtr" }, { 0x261000d0, 0x130c0000, 0xffffffff, 0xffff0000, 48, "LISP#divya-xtr" }, { 0x261000d0, 0x130d0000, 0xffffffff, 0xffff0000, 48, "LISP#jhennessy-xtr" }, { 0x261000d0, 0x130e0000, 0xffffffff, 0xffff0000, 48, "LISP#martin-xtr" }, { 0x261000d0, 0x130f0000, 0xffffffff, 0xffff0000, 48, "LISP#dehrle2-xtr" }, { 0x261000d0, 0x13100000, 0xffffffff, 0xffff0000, 48, "LISP#chanu-xtr" }, { 0x261000d0, 0x13110000, 0xffffffff, 0xffff0000, 48, "LISP#lierop-xtr" }, { 0x261000d0, 0x13120000, 0xffffffff, 0xffff0000, 48, "LISP#cmh-xtr" }, { 0x261000d0, 0x13140000, 0xffffffff, 0xffff0000, 48, "LISP#mhaaksma-xtr" }, { 0x261000d0, 0x13150000, 0xffffffff, 0xffff0000, 48, "LISP#tellis-xtr" }, { 0x261000d0, 0x13160000, 0xffffffff, 0xffff0000, 48, "LISP#jade-xtr" }, { 0x261000d0, 0x13170000, 0xffffffff, 0xffff0000, 48, "LISP#neno-xtr" }, { 0x261000d0, 0x13180000, 0xffffffff, 0xffff0000, 48, "LISP#elsen-xtr" }, { 0x261000d0, 0x132a0000, 0xffffffff, 0xffff0000, 48, "LISP#comfort-xtr" }, { 0x261000d0, 0x21000000, 0xffffffff, 0xffff0000, 48, "LISP#thkernen-xtr" }, { 0x261000d0, 0x21010000, 0xffffffff, 0xffff0000, 48, "LISP#gerd-xtr" }, { 0x261000d0, 0x21020000, 0xffffffff, 0xffff0000, 48, "LISP#luigi-xtr" }, { 0x261000d0, 0x21030000, 0xffffffff, 0xffff0000, 48, "LISP#damien-xtr" }, { 0x261000d0, 0x21040000, 0xffffffff, 0xffff0000, 48, "LISP#jakab-xtr" }, { 0x261000d0, 0x21050000, 0xffffffff, 0xffff0000, 48, "LISP#dino-xtr" }, { 0x261000d0, 0x21060000, 0xffffffff, 0xffff0000, 48, "LISP#lbromirs-xtr" }, { 0x261000d0, 0x21070000, 0xffffffff, 0xffff0000, 48, "LISP#wolfgang-client-xtr" }, { 0x261000d0, 0x21080000, 0xffffffff, 0xffff0000, 48, "LISP#simlo-xtr" }, { 0x261000d0, 0x21090000, 0xffffffff, 0xffff0000, 48, "LISP#wolfgang-odd-xtr" }, { 0x261000d0, 0x210a0000, 0xffffffff, 0xffff0000, 48, "LISP#wolfgang-even-xtr" }, { 0x261000d0, 0x210b0000, 0xffffffff, 0xffff0000, 48, "LISP#jesper-xtr" }, { 0x261000d0, 0x210c0000, 0xffffffff, 0xffff0000, 48, "LISP#isidor-xtr" }, { 0x261000d0, 0x210d0000, 0xffffffff, 0xffff0000, 48, "LISP#jobsnijders-home-xtr" }, { 0x261000d0, 0x210e0000, 0xffffffff, 0xffff0000, 48, "LISP#intouch-office-xtr" }, { 0x261000d0, 0x210f0000, 0xffffffff, 0xffff0000, 48, "LISP#intouch-dc1-xtr-1" }, { 0x261000d0, 0x21100000, 0xffffffff, 0xffff0000, 48, "LISP#intouch-dc2-xtr-1" }, { 0x261000d0, 0x21110000, 0xffffffff, 0xffff0000, 48, "LISP#lukasm-xtr" }, { 0x261000d0, 0x21120000, 0xffffffff, 0xffff0000, 48, "LISP#marc-xtr" }, { 0x261000d0, 0x21130000, 0xffffffff, 0xffff0000, 48, "LISP#deutsche-bank-xtr" }, { 0x261000d0, 0x21140000, 0xffffffff, 0xffff0000, 48, "LISP#gerd-cbc-xtr" }, { 0x261000d0, 0x21150000, 0xffffffff, 0xffff0000, 48, "LISP#65bit-xtr" }, { 0x261000d0, 0x21160000, 0xffffffff, 0xffff0000, 48, "LISP#rolfs-xtr" }, { 0x261000d0, 0x21170000, 0xffffffff, 0xffff0000, 48, "LISP#dimitris-xtr" }, { 0x261000d0, 0x21180000, 0xffffffff, 0xffff0000, 48, "LISP#markus-xtr" }, { 0x261000d0, 0x21190000, 0xffffffff, 0xffff0000, 48, "LISP#mkramoli-xtr" }, { 0x261000d0, 0x211a0000, 0xffffffff, 0xffff0000, 48, "LISP#pcharalampou-xtr" }, { 0x261000d0, 0x211c0000, 0xffffffff, 0xffff0000, 48, "LISP#mironto-xtr" }, { 0x261000d0, 0x211d0000, 0xffffffff, 0xffff0000, 48, "LISP#munich-arpt-xtr" }, { 0x261000d0, 0x211e0000, 0xffffffff, 0xffff0000, 48, "LISP#mitko-xtr" }, { 0x261000d0, 0x211f0000, 0xffffffff, 0xffff0000, 48, "LISP#isarnet-xtr" }, { 0x261000d0, 0x21200000, 0xffffffff, 0xffff0000, 48, "LISP#tetaneutral-xtr" }, { 0x261000d0, 0x21210000, 0xffffffff, 0xffff0000, 48, "LISP#lip6-fr-xtr" }, { 0x261000d0, 0x21220000, 0xffffffff, 0xffff0000, 48, "LISP#korpo-tp-xtr" }, { 0x261000d0, 0x21230000, 0xffffffff, 0xffff0000, 48, "LISP#mbosecki-xtr" }, { 0x261000d0, 0x21240000, 0xffffffff, 0xffff0000, 48, "LISP#experteach-xtr" }, { 0x261000d0, 0x21250000, 0xffffffff, 0xffff0000, 48, "LISP#globalknowledge-xtr" }, { 0x261000d0, 0x21260000, 0xffffffff, 0xffff0000, 48, "LISP#moreas-xtr" }, { 0x261000d0, 0x21270000, 0xffffffff, 0xffff0000, 48, "LISP#bayer-xtr" }, { 0x261000d0, 0x21280000, 0xffffffff, 0xffff0000, 48, "LISP#giheron-xtr" }, { 0x261000d0, 0x21290000, 0xffffffff, 0xffff0000, 48, "LISP#antoine-xtr" }, { 0x261000d0, 0x212a0000, 0xffffffff, 0xffff0000, 48, "LISP#uniroma-xtr" }, { 0x261000d0, 0x212b0000, 0xffffffff, 0xffff0000, 48, "LISP#mcenteme-xtr" }, { 0x261000d0, 0x212c0000, 0xffffffff, 0xffff0000, 48, "LISP#jjstevens-xtr" }, { 0x261000d0, 0x212d0000, 0xffffffff, 0xffff0000, 48, "LISP#planete-xtr" }, { 0x261000d0, 0x212e0000, 0xffffffff, 0xffff0000, 48, "LISP#atle-xtr" }, { 0x261000d0, 0x21300000, 0xffffffff, 0xffff0000, 48, "LISP#geert-xtr" }, { 0x261000d0, 0x21310000, 0xffffffff, 0xffff0000, 48, "LISP#zilina-xtr" }, { 0x261000d0, 0x21320000, 0xffffffff, 0xffff0000, 48, "LISP#chrisgray-xtr" }, { 0x261000d0, 0x21340000, 0xffffffff, 0xffff0000, 48, "LISP#mblokzij-xtr" }, { 0x261000d0, 0x21350000, 0xffffffff, 0xffff0000, 48, "LISP#ataf-xtr" }, { 0x261000d0, 0x21360000, 0xffffffff, 0xffff0000, 48, "LISP#adittman-xtr" }, { 0x261000d0, 0x21370000, 0xffffffff, 0xffff0000, 48, "LISP#runar-xtr" }, { 0x261000d0, 0x21380000, 0xffffffff, 0xffff0000, 48, "LISP#iceland-xtr" }, { 0x261000d0, 0x21390000, 0xffffffff, 0xffff0000, 48, "LISP#raabo-xtr" }, { 0x261000d0, 0x213a0000, 0xffffffff, 0xffff0000, 48, "LISP#alex-xtr" }, { 0x261000d0, 0x213b0000, 0xffffffff, 0xffff0000, 48, "LISP#avm-gmbh1-xtr" }, { 0x261000d0, 0x213c0000, 0xffffffff, 0xffff0000, 48, "LISP#avm-gmbh2-xtr" }, { 0x261000d0, 0x213d0000, 0xffffffff, 0xffff0000, 48, "LISP#francesco-xtr" }, { 0x261000d0, 0x213e0000, 0xffffffff, 0xffff0000, 48, "LISP#fraunhofer-igd-xtr" }, { 0x261000d0, 0x21400000, 0xffffffff, 0xffff0000, 48, "LISP#smirnov-xtr" }, { 0x261000d0, 0x21410000, 0xffffffff, 0xffff0000, 48, "LISP#cegal-xtr" }, { 0x261000d0, 0x21420000, 0xffffffff, 0xffff0000, 48, "LISP#gloudemans-xtr" }, { 0x261000d0, 0x21430000, 0xffffffff, 0xffff0000, 48, "LISP#claes-xtr" }, { 0x261000d0, 0x21440000, 0xffffffff, 0xffff0000, 48, "LISP#hu-uasu-xtr" }, { 0x261000d0, 0x21450000, 0xffffffff, 0xffff0000, 48, "LISP#umurcia-1-xtr" }, { 0x261000d0, 0x21460000, 0xffffffff, 0xffff0000, 48, "LISP#umurcia-2-xtr" }, { 0x261000d0, 0x21470000, 0xffffffff, 0xffff0000, 48, "LISP#umurcia-3-xtr" }, { 0x261000d0, 0x21490000, 0xffffffff, 0xffff0000, 48, "LISP#hauschild-xtr" }, { 0x261000d0, 0x214a0000, 0xffffffff, 0xffff0000, 48, "LISP#cat6k-demo-uk" }, { 0x261000d0, 0x214b0000, 0xffffffff, 0xffff0000, 48, "LISP#roel-xtr" }, { 0x261000d0, 0x214c0000, 0xffffffff, 0xffff0000, 48, "LISP#clemens-xtr" }, { 0x261000d0, 0x214d0000, 0xffffffff, 0xffff0000, 48, "LISP#fit-xtr" }, { 0x261000d0, 0x214e0000, 0xffffffff, 0xffff0000, 48, "LISP#level-it-xtr" }, { 0x261000d0, 0x214f0000, 0xffffffff, 0xffff0000, 48, "LISP#AVM01-xtr" }, { 0x261000d0, 0x21500000, 0xffffffff, 0xffff0000, 48, "LISP#AVM02-xtr" }, { 0x261000d0, 0x21510000, 0xffffffff, 0xffff0000, 48, "LISP#AVM03-xtr" }, { 0x261000d0, 0x21520000, 0xffffffff, 0xffff0000, 48, "LISP#AVM04-xtr" }, { 0x261000d0, 0x21530000, 0xffffffff, 0xffff0000, 48, "LISP#AVM05-xtr" }, { 0x261000d0, 0x21540000, 0xffffffff, 0xffff0000, 48, "LISP#AVM06-xtr" }, { 0x261000d0, 0x21550000, 0xffffffff, 0xffff0000, 48, "LISP#AVM07-xtr" }, { 0x261000d0, 0x21560000, 0xffffffff, 0xffff0000, 48, "LISP#AVM08-xtr" }, { 0x261000d0, 0x21570000, 0xffffffff, 0xffff0000, 48, "LISP#AVM09-xtr" }, { 0x261000d0, 0x21580000, 0xffffffff, 0xffff0000, 48, "LISP#vz-niko-ch" }, { 0x261000d0, 0x21590000, 0xffffffff, 0xffff0000, 48, "LISP#dipesh-xtr" }, { 0x261000d0, 0x215a0000, 0xffffffff, 0xffff0000, 48, "LISP#quenzer-xtr" }, { 0x261000d0, 0x215b0000, 0xffffffff, 0xffff0000, 48, "LISP#turnerhouse-xtr" }, { 0x261000d0, 0x215c0000, 0xffffffff, 0xffff0000, 48, "LISP#lhsystems-xtr" }, { 0x261000d0, 0x215d0000, 0xffffffff, 0xffff0000, 48, "LISP#coudron-xtr" }, { 0x261000d0, 0x215e0000, 0xffffffff, 0xffff0000, 48, "LISP#hubers-xtr" }, { 0x261000d0, 0x215f0000, 0xffffffff, 0xffff0000, 48, "LISP#woellhaf-xtr" }, { 0x261000d0, 0x21600000, 0xffffffff, 0xffff0000, 48, "LISP#damjan-xtr" }, { 0x261000d0, 0x21610000, 0xffffffff, 0xffff0000, 48, "LISP#leander-xtr" }, { 0x261000d0, 0x21620000, 0xffffffff, 0xffff0000, 48, "LISP#nikolay-xtr" }, { 0x261000d0, 0x21630000, 0xffffffff, 0xffff0000, 48, "LISP#moritz-xtr" }, { 0x261000d0, 0x21640000, 0xffffffff, 0xffff0000, 48, "LISP#skonecki-xtr" }, { 0x261000d0, 0x21650000, 0xffffffff, 0xffff0000, 48, "LISP#thoene-xtr" }, { 0x261000d0, 0x21660000, 0xffffffff, 0xffff0000, 48, "LISP#lori-xtr" }, { 0x261000d0, 0x21670000, 0xffffffff, 0xffff0000, 48, "LISP#reitz-xtr" }, { 0x261000d0, 0x21680000, 0xffffffff, 0xffff0000, 48, "LISP#jerome-xtr" }, { 0x261000d0, 0x21690000, 0xffffffff, 0xffff0000, 48, "LISP#netcloud-xtr" }, { 0x261000d0, 0x216a0000, 0xffffffff, 0xffff0000, 48, "LISP#dschulz-xtr" }, { 0x261000d0, 0x216b0000, 0xffffffff, 0xffff0000, 48, "LISP#atea-xtr" }, { 0x261000d0, 0x216c0000, 0xffffffff, 0xffff0000, 48, "LISP#atea2-xtr" }, { 0x261000d0, 0x216d0000, 0xffffffff, 0xffff0000, 48, "LISP#cschmidt-xtr" }, { 0x261000d0, 0x216e0000, 0xffffffff, 0xffff0000, 48, "LISP#eantc-xtr" }, { 0x261000d0, 0x216f0000, 0xffffffff, 0xffff0000, 48, "LISP#sleiweke-xtr" }, { 0x261000d0, 0x21700000, 0xffffffff, 0xffff0000, 48, "LISP#marcel-xtr" }, { 0x261000d0, 0x21710000, 0xffffffff, 0xffff0000, 48, "LISP#goudswaard-xtr" }, { 0x261000d0, 0x21720000, 0xffffffff, 0xffff0000, 48, "LISP#axel-xtr" }, { 0x261000d0, 0x21730000, 0xffffffff, 0xffff0000, 48, "LISP#trieb-xtr" }, { 0x261000d0, 0x21740000, 0xffffffff, 0xffff0000, 48, "LISP#strasser-xtr" }, { 0x261000d0, 0x21750000, 0xffffffff, 0xffff0000, 48, "LISP#haase-xtr" }, { 0x261000d0, 0x21760000, 0xffffffff, 0xffff0000, 48, "LISP#hendrickx-xtr" }, { 0x261000d0, 0x21770000, 0xffffffff, 0xffff0000, 48, "LISP#keronet-xtr" }, { 0x261000d0, 0x21780000, 0xffffffff, 0xffff0000, 48, "LISP#sarton-xtr" }, { 0x261000d0, 0x21790000, 0xffffffff, 0xffff0000, 48, "LISP#nattrav-test" }, { 0x261000d0, 0x217a0000, 0xffffffff, 0xffff0000, 48, "LISP#ermidoro-xtr" }, { 0x261000d0, 0x217b0000, 0xffffffff, 0xffff0000, 48, "LISP#scv-xtr" }, { 0x261000d0, 0x217c0000, 0xffffffff, 0xffff0000, 48, "LISP#rjm-xtr" }, { 0x261000d0, 0x217d0000, 0xffffffff, 0xffff0000, 48, "LISP#answanso-xtr" }, { 0x261000d0, 0x217e0000, 0xffffffff, 0xffff0000, 48, "LISP#strehhuber-xtr" }, { 0x261000d0, 0x217f0000, 0xffffffff, 0xffff0000, 48, "LISP#hintermayr-xtr" }, { 0x261000d0, 0x21800000, 0xffffffff, 0xffff0000, 48, "LISP#gruber-xtr" }, { 0x261000d0, 0x21810000, 0xffffffff, 0xffff0000, 48, "LISP#boardrunner-xtr" }, { 0x261000d0, 0x21820000, 0xffffffff, 0xffff0000, 48, "LISP#adwin-xtr" }, { 0x261000d0, 0x21830000, 0xffffffff, 0xffff0000, 48, "LISP#bartschnet-xtr" }, { 0x261000d0, 0x21840000, 0xffffffff, 0xffff0000, 48, "LISP#netgaroo-xtr" }, { 0x261000d0, 0x21850000, 0xffffffff, 0xffff0000, 48, "LISP#gensonline-xtr" }, { 0x261000d0, 0x21860000, 0xffffffff, 0xffff0000, 48, "LISP#nuage-lisp-xtr" }, { 0x261000d0, 0x21870000, 0xffffffff, 0xffff0000, 48, "LISP#ch-marcel-xtr" }, { 0x261000d0, 0x21880000, 0xffffffff, 0xffff0000, 48, "LISP#uaveiro-xtr" }, { 0x261000d0, 0x21890000, 0xffffffff, 0xffff0000, 48, "LISP#caspary-xtr" }, { 0x261000d0, 0x218a0000, 0xffffffff, 0xffff0000, 48, "LISP#maxried-xtr" }, { 0x261000d0, 0x218b0000, 0xffffffff, 0xffff0000, 48, "LISP#yun-xtr" }, { 0x261000d0, 0x218c0000, 0xffffffff, 0xffff0000, 48, "LISP#tietze-xtr" }, { 0x261000d0, 0x218d0000, 0xffffffff, 0xffff0000, 48, "LISP#jkuhn-xtr" }, { 0x261000d0, 0x218e0000, 0xffffffff, 0xffff0000, 48, "LISP#a1-telekom-xtr" }, { 0x261000d0, 0x218f0000, 0xffffffff, 0xffff0000, 48, "LISP#renne-xtr" }, { 0x261000d0, 0x21900000, 0xffffffff, 0xffff0000, 48, "LISP#mblokzij-pi-xtr" }, { 0x261000d0, 0x21910000, 0xffffffff, 0xffff0000, 48, "LISP#lueers-xtr" }, { 0x261000d0, 0x21920000, 0xffffffff, 0xffff0000, 48, "LISP#hkoerth-xtr" }, { 0x261000d0, 0x21930000, 0xffffffff, 0xffff0000, 48, "LISP#nclark-xtr" }, { 0x261000d0, 0x21940000, 0xffffffff, 0xffff0000, 48, "LISP#teridion-xtr" }, { 0x261000d0, 0x21950000, 0xffffffff, 0xffff0000, 48, "LISP#mgrabner-xtr" }, { 0x261000d0, 0x21960000, 0xffffffff, 0xffff0000, 48, "LISP#albring-xtr" }, { 0x261000d0, 0x21970000, 0xffffffff, 0xffff0000, 48, "LISP#kmartini-xtr" }, { 0x261000d0, 0x21980000, 0xffffffff, 0xffff0000, 48, "LISP#hs-fulda-xtr" }, { 0x261000d0, 0x21990000, 0xffffffff, 0xffff0000, 48, "LISP#datenschleuder-xtr" }, { 0x261000d0, 0x219a0000, 0xffffffff, 0xffff0000, 48, "LISP#airmaxx-xtr" }, { 0x261000d0, 0x219b0000, 0xffffffff, 0xffff0000, 48, "LISP#kewisch-xtr" }, { 0x261000d0, 0x219c0000, 0xffffffff, 0xffff0000, 48, "LISP#cybernet-xtr" }, { 0x261000d0, 0x219d0000, 0xffffffff, 0xffff0000, 48, "LISP#krzbia-xtr" }, { 0x261000d0, 0x219e0000, 0xffffffff, 0xffff0000, 48, "LISP#twarwick-xtr" }, { 0x261000d0, 0x219f0000, 0xffffffff, 0xffff0000, 48, "LISP#fuhge-xtr" }, { 0x261000d0, 0x21a00000, 0xffffffff, 0xffff0000, 48, "LISP#isah-xtr" }, { 0x261000d0, 0x21a10000, 0xffffffff, 0xffff0000, 48, "LISP#lovison-xtr" }, { 0x261000d0, 0x21a10101, 0xffffffff, 0xffffffff, 64, "LISP#lovison-xtr" }, { 0x261000d0, 0x21a10103, 0xffffffff, 0xffffffff, 64, "LISP#lovison-xtr" }, { 0x261000d0, 0x21a20000, 0xffffffff, 0xffff0000, 48, "LISP#jens-xtr" }, { 0x261000d0, 0x21a30000, 0xffffffff, 0xffff0000, 48, "LISP#naundorf-xtr" }, { 0x261000d0, 0x21a40000, 0xffffffff, 0xffff0000, 48, "LISP#leon-xtr" }, { 0x261000d0, 0x21a50000, 0xffffffff, 0xffff0000, 48, "LISP#orottler-xtr" }, { 0x261000d0, 0x21a60000, 0xffffffff, 0xffff0000, 48, "LISP#gschell-xtr" }, { 0x261000d0, 0x21a70000, 0xffffffff, 0xffff0000, 48, "LISP#x10103-xtr" }, { 0x261000d0, 0x21a80000, 0xffffffff, 0xffff0000, 48, "LISP#jps-networks-xtr" }, { 0x261000d0, 0x21a90000, 0xffffffff, 0xffff0000, 48, "LISP#mamouni-xtr" }, { 0x261000d0, 0x21aa0000, 0xffffffff, 0xffff0000, 48, "LISP#hakkarainen-xtr" }, { 0x261000d0, 0x21ab0000, 0xffffffff, 0xffff0000, 48, "LISP#posteo-xtr" }, { 0x261000d0, 0x21ac0000, 0xffffffff, 0xffff0000, 48, "LISP#pierson-xtr" }, { 0x261000d0, 0x21ad0000, 0xffffffff, 0xffff0000, 48, "LISP#hulsmann-xtr" }, { 0x261000d0, 0x21ae0000, 0xffffffff, 0xffff0000, 48, "LISP#mdavids-xtr" }, { 0x261000d0, 0x21af0000, 0xffffffff, 0xffff0000, 48, "LISP#erikbent-xtr" }, { 0x261000d0, 0x21b00000, 0xffffffff, 0xffff0000, 48, "LISP#CiscoConnect-xtr" }, { 0x261000d0, 0x21b10000, 0xffffffff, 0xffff0000, 48, "LISP#polimi-xtr" }, { 0x261000d0, 0x21b20000, 0xffffffff, 0xffff0000, 48, "LISP#panix-xtr" }, { 0x261000d0, 0x21b30000, 0xffffffff, 0xffff0000, 48, "LISP#glindhart-xtr" }, { 0x261000d0, 0x21b40000, 0xffffffff, 0xffff0000, 48, "LISP#dimensiondata-xtr" }, { 0x261000d0, 0x21b50000, 0xffffffff, 0xffff0000, 48, "LISP#pcforce-xtr" }, { 0x261000d0, 0x21b60000, 0xffffffff, 0xffff0000, 48, "LISP#plotnicu-xtr" }, { 0x261000d0, 0x21b70000, 0xffffffff, 0xffff0000, 48, "LISP#zimperfeld-xtr" }, { 0x261000d0, 0x21b80000, 0xffffffff, 0xffff0000, 48, "LISP#vanlid-xtr" }, { 0x261000d0, 0x21b90000, 0xffffffff, 0xffff0000, 48, "LISP#kohlstedde-xtr" }, { 0x261000d0, 0x21ba0000, 0xffffffff, 0xffff0000, 48, "LISP#wiegleb-xtr" }, { 0x261000d0, 0x21bb0000, 0xffffffff, 0xffff0000, 48, "LISP#dirks-xtr" }, { 0x261000d0, 0x21bc0000, 0xffffffff, 0xffff0000, 48, "LISP#cbursch-xtr" }, { 0x261000d0, 0x21bd0000, 0xffffffff, 0xffff0000, 48, "LISP#aflorio-cz-xtr" }, { 0x261000d0, 0x21be0000, 0xffffffff, 0xffff0000, 48, "LISP#aflorio-it-xtr" }, { 0x261000d0, 0x21bf0000, 0xffffffff, 0xffff0000, 48, "LISP#vz-niko-ge" }, { 0x261000d0, 0x21c00000, 0xffffffff, 0xffff0000, 48, "LISP#vz-niko-de" }, { 0x261000d0, 0x21c10000, 0xffffffff, 0xffff0000, 48, "LISP#voos-xtr" }, { 0x261000d0, 0x21c20000, 0xffffffff, 0xffff0000, 48, "LISP#plominski-xtr" }, { 0x261000d0, 0x21c30000, 0xffffffff, 0xffff0000, 48, "LISP#eison-xtr" }, { 0x261000d0, 0x21c40000, 0xffffffff, 0xffff0000, 48, "LISP#a1-telekom2-xtr" }, { 0x261000d0, 0x21c50000, 0xffffffff, 0xffff0000, 48, "LISP#nord-west-xtr" }, { 0x261000d0, 0x21c60000, 0xffffffff, 0xffff0000, 48, "LISP#frank-xtr" }, { 0x261000d0, 0x21c70000, 0xffffffff, 0xffff0000, 48, "LISP#uni-obuda-xtr" }, { 0x261000d0, 0x21c80000, 0xffffffff, 0xffff0000, 48, "LISP#raiffeisen-hu-xtr" }, { 0x261000d0, 0x21c90000, 0xffffffff, 0xffff0000, 48, "LISP#dev252-xtr" }, { 0x261000d0, 0x21ca0000, 0xffffffff, 0xffff0000, 48, "LISP#smit-hague-xtr" }, { 0x261000d0, 0x21cb0000, 0xffffffff, 0xffff0000, 48, "LISP#gierschner-xtr" }, { 0x261000d0, 0x21cc0000, 0xffffffff, 0xffff0000, 48, "LISP#lukasm2-xtr" }, { 0x261000d0, 0x21cd0000, 0xffffffff, 0xffff0000, 48, "LISP#sacherer-xtr" }, { 0x261000d0, 0x21ce0000, 0xffffffff, 0xffff0000, 48, "LISP#gunis-xtr" }, { 0x261000d0, 0x21cf0000, 0xffffffff, 0xffff0000, 48, "LISP#hilger-xtr" }, { 0x261000d0, 0x21d00000, 0xffffffff, 0xffff0000, 48, "LISP#schad-xtr" }, { 0x261000d0, 0x21d10000, 0xffffffff, 0xffff0000, 48, "LISP#hagenhoff-xtr" }, { 0x261000d0, 0x21d20000, 0xffffffff, 0xffff0000, 48, "LISP#ibm-gr-xtr" }, { 0x261000d0, 0x21d30000, 0xffffffff, 0xffff0000, 48, "LISP#coldharbour-xtr" }, { 0x261000d0, 0x21d40000, 0xffffffff, 0xffff0000, 48, "LISP#bach-xtr" }, { 0x261000d0, 0x21d50000, 0xffffffff, 0xffff0000, 48, "LISP#jschmidle-xtr" }, { 0x261000d0, 0x21d60000, 0xffffffff, 0xffff0000, 48, "LISP#zilina2-xtr" }, { 0x261000d0, 0x21d70000, 0xffffffff, 0xffff0000, 48, "LISP#dogscafe-xtr" }, { 0x261000d0, 0x21d80000, 0xffffffff, 0xffff0000, 48, "LISP#mgliwka-xtr" }, { 0x261000d0, 0x21d90000, 0xffffffff, 0xffff0000, 48, "LISP#krunal-eu-xtr" }, { 0x261000d0, 0x21da0000, 0xffffffff, 0xffff0000, 48, "LISP#cstephens-xtr-1" }, { 0x261000d0, 0x21db0000, 0xffffffff, 0xffff0000, 48, "LISP#demierre-xtr" }, { 0x261000d0, 0x21dc0000, 0xffffffff, 0xffff0000, 48, "LISP#somogyvari-xtr" }, { 0x261000d0, 0x21dd0000, 0xffffffff, 0xffff0000, 48, "LISP#spisati-xtr" }, { 0x261000d0, 0x21de0000, 0xffffffff, 0xffff0000, 48, "LISP#tao-networks-xtr" }, { 0x261000d0, 0x21df0000, 0xffffffff, 0xffff0000, 48, "LISP#willekens-xtr" }, { 0x261000d0, 0x21e00000, 0xffffffff, 0xffff0000, 48, "LISP#jclayton-xtr" }, { 0x261000d0, 0x21e10000, 0xffffffff, 0xffff0000, 48, "LISP#niek-xtr" }, { 0x261000d0, 0x21e20000, 0xffffffff, 0xffff0000, 48, "LISP#mbar-xtr" }, { 0x261000d0, 0x21e30000, 0xffffffff, 0xffff0000, 48, "LISP#ssanders-xtr" }, { 0x261000d0, 0x21e40000, 0xffffffff, 0xffff0000, 48, "LISP#eahlers-xtr" }, { 0x261000d0, 0x21e50000, 0xffffffff, 0xffff0000, 48, "LISP#dknobloch-xtr" }, { 0x261000d0, 0x21e60000, 0xffffffff, 0xffff0000, 48, "LISP#hschutt-xtr" }, { 0x261000d0, 0x21e70000, 0xffffffff, 0xffff0000, 48, "LISP#lalber-xtr" }, { 0x261000d0, 0x21e80000, 0xffffffff, 0xffff0000, 48, "LISP#dwilmer-xtr" }, { 0x261000d0, 0x21e90000, 0xffffffff, 0xffff0000, 48, "LISP#sraisl-xtr" }, { 0x261000d0, 0x21ea0000, 0xffffffff, 0xffff0000, 48, "LISP#mbernhardt-xtr" }, { 0x261000d0, 0x21eb0000, 0xffffffff, 0xffff0000, 48, "LISP#jguther-xtr" }, { 0x261000d0, 0x21ec0000, 0xffffffff, 0xffff0000, 48, "LISP#jguenther-xtr" }, { 0x261000d0, 0x21ed0000, 0xffffffff, 0xffff0000, 48, "LISP#cglasmeyer-xtr" }, { 0x261000d0, 0x21ee0000, 0xffffffff, 0xffff0000, 48, "LISP#rsiegel-xtr" }, { 0x261000d0, 0x21ef0000, 0xffffffff, 0xffff0000, 48, "LISP#hbeck-xtr" }, { 0x261000d0, 0x21f10000, 0xffffffff, 0xffff0000, 48, "LISP#kwulff-xtr" }, { 0x261000d0, 0x21f20000, 0xffffffff, 0xffff0000, 48, "LISP#jpkoegeler-xtr" }, { 0x261000d0, 0x21f30000, 0xffffffff, 0xffff0000, 48, "LISP#clangbehn-xtr" }, { 0x261000d0, 0x21f40000, 0xffffffff, 0xffff0000, 48, "LISP#degger-xtr" }, { 0x261000d0, 0x21f50000, 0xffffffff, 0xffff0000, 48, "LISP#rmalbrecht-xtr" }, { 0x261000d0, 0x21f60000, 0xffffffff, 0xffff0000, 48, "LISP#cbretterhofer-xtr" }, { 0x261000d0, 0x21f70000, 0xffffffff, 0xffff0000, 48, "LISP#gheinen-xtr" }, { 0x261000d0, 0x21f80000, 0xffffffff, 0xffff0000, 48, "LISP#twiederhold-xtr" }, { 0x261000d0, 0x21f90000, 0xffffffff, 0xffff0000, 48, "LISP#jbaumann-xtr" }, { 0x261000d0, 0x21fa0000, 0xffffffff, 0xffff0000, 48, "LISP#sscheib-xtr" }, { 0x261000d0, 0x21fb0000, 0xffffffff, 0xffff0000, 48, "LISP#tluttgert-xtr" }, { 0x261000d0, 0x21fc0000, 0xffffffff, 0xffff0000, 48, "LISP#dkoppen-xtr" }, { 0x261000d0, 0x21fd0000, 0xffffffff, 0xffff0000, 48, "LISP#theinz-xtr" }, { 0x261000d0, 0x21fe0000, 0xffffffff, 0xffff0000, 48, "LISP#tsteen-xtr" }, { 0x261000d0, 0x22000000, 0xffffffff, 0xffff0000, 48, "LISP#cheimanns-xtr" }, { 0x261000d0, 0x22010000, 0xffffffff, 0xffff0000, 48, "LISP#sukiyakiproj-xtr" }, { 0x261000d0, 0x22020000, 0xffffffff, 0xffff0000, 48, "LISP#tstempel-xtr" }, { 0x261000d0, 0x22030000, 0xffffffff, 0xffff0000, 48, "LISP#crothlander-xtr" }, { 0x261000d0, 0x22040000, 0xffffffff, 0xffff0000, 48, "LISP#isonmezglu-xtr" }, { 0x261000d0, 0x22050000, 0xffffffff, 0xffff0000, 48, "LISP#rlehmann-xtr" }, { 0x261000d0, 0x22060000, 0xffffffff, 0xffff0000, 48, "LISP#rbeie-xtr" }, { 0x261000d0, 0x22070000, 0xffffffff, 0xffff0000, 48, "LISP#hosius-xtr" }, { 0x261000d0, 0x22080000, 0xffffffff, 0xffff0000, 48, "LISP#hbuchholz-xtr" }, { 0x261000d0, 0x22090000, 0xffffffff, 0xffff0000, 48, "LISP#bgeiger-xtr" }, { 0x261000d0, 0x220a0000, 0xffffffff, 0xffff0000, 48, "LISP#bbusch-xtr" }, { 0x261000d0, 0x220b0000, 0xffffffff, 0xffff0000, 48, "LISP#flyingcircus-xtr" }, { 0x261000d0, 0x220c0000, 0xffffffff, 0xffff0000, 48, "LISP#jfriedrich-xtr" }, { 0x261000d0, 0x220d0000, 0xffffffff, 0xffff0000, 48, "LISP#ddroop-xtr" }, { 0x261000d0, 0x220e0000, 0xffffffff, 0xffff0000, 48, "LISP#broth-xtr" }, { 0x261000d0, 0x220f0000, 0xffffffff, 0xffff0000, 48, "LISP#sbellstedt-xtr" }, { 0x261000d0, 0x22100000, 0xffffffff, 0xffff0000, 48, "LISP#kjaschultowski-xtr" }, { 0x261000d0, 0x22110000, 0xffffffff, 0xffff0000, 48, "LISP#mbuescher-xtr" }, { 0x261000d0, 0x22120000, 0xffffffff, 0xffff0000, 48, "LISP#wheinze-xtr" }, { 0x261000d0, 0x22130000, 0xffffffff, 0xffff0000, 48, "LISP#ekoncel-xtr" }, { 0x261000d0, 0x22140000, 0xffffffff, 0xffff0000, 48, "LISP#mklingspor-xtr" }, { 0x261000d0, 0x22150000, 0xffffffff, 0xffff0000, 48, "LISP#gloss-xtr" }, { 0x261000d0, 0x22160000, 0xffffffff, 0xffff0000, 48, "LISP#koandreasson-xtr" }, { 0x261000d0, 0x22170000, 0xffffffff, 0xffff0000, 48, "LISP#hrenz-xtr" }, { 0x261000d0, 0x22180000, 0xffffffff, 0xffff0000, 48, "LISP#uschledorn-xtr" }, { 0x261000d0, 0x22190000, 0xffffffff, 0xffff0000, 48, "LISP#unitbv-xtr" }, { 0x261000d0, 0x222a0000, 0xffffffff, 0xffff0000, 48, "LISP#hketele-xtr" }, { 0x261000d0, 0x222b0000, 0xffffffff, 0xffff0000, 48, "LISP#gevgrafov-xtr" }, { 0x261000d0, 0x222c0000, 0xffffffff, 0xffff0000, 48, "LISP#jriechers-xtr" }, { 0x261000d0, 0x222d0000, 0xffffffff, 0xffff0000, 48, "LISP#ebent-xtr" }, { 0x261000d0, 0x222e0000, 0xffffffff, 0xffff0000, 48, "LISP#eadeva-xtr" }, { 0x261000d0, 0x222f0000, 0xffffffff, 0xffff0000, 48, "LISP#bwieder-xtr" }, { 0x261000d0, 0x22300000, 0xffffffff, 0xffff0000, 48, "LISP#mmikulenas-xtr" }, { 0x261000d0, 0x22310000, 0xffffffff, 0xffff0000, 48, "LISP#mgusek-xtr" }, { 0x261000d0, 0x22320000, 0xffffffff, 0xffff0000, 48, "LISP#logima-xtr" }, { 0x261000d0, 0x22330000, 0xffffffff, 0xffff0000, 48, "LISP#mmiller-xtr" }, { 0x261000d0, 0x22340000, 0xffffffff, 0xffff0000, 48, "LISP#jschlingensiepen-xtr" }, { 0x261000d0, 0x22350000, 0xffffffff, 0xffff0000, 48, "LISP#gmassa-xtr" }, { 0x261000d0, 0x22360000, 0xffffffff, 0xffff0000, 48, "LISP#freenet-xtr" }, { 0x261000d0, 0x22370000, 0xffffffff, 0xffff0000, 48, "LISP#dietausendsassa-xtr" }, { 0x261000d0, 0x22380000, 0xffffffff, 0xffff0000, 48, "LISP#niek_van_der_ven-xtr" }, { 0x261000d0, 0x22390000, 0xffffffff, 0xffff0000, 48, "LISP#rspickers-xtr" }, { 0x261000d0, 0x31000000, 0xffffffff, 0xffff0000, 48, "LISP#iij-xtr" }, { 0x261000d0, 0x32000000, 0xffffffff, 0xffff0000, 48, "LISP#hughes-xtr" }, { 0x261000d0, 0x32010000, 0xffffffff, 0xffff0000, 48, "LISP#apan-xtr" }, { 0x261000d0, 0x32020000, 0xffffffff, 0xffff0000, 48, "LISP#kddi-labs-xtr" }, { 0x261000d0, 0x32030000, 0xffffffff, 0xffff0000, 48, "LISP#ntt-com-xtr" }, { 0x261000d0, 0x32040000, 0xffffffff, 0xffff0000, 48, "LISP#tata-xtr" }, { 0x261000d0, 0x32050000, 0xffffffff, 0xffff0000, 48, "LISP#jiwang-xtr" }, { 0x261000d0, 0x32060000, 0xffffffff, 0xffff0000, 48, "LISP#layim-xtr" }, { 0x261000d0, 0x32070000, 0xffffffff, 0xffff0000, 48, "LISP#cfwong-xtr" }, { 0x261000d0, 0x32080000, 0xffffffff, 0xffff0000, 48, "LISP#logicalis-xtr" }, { 0x261000d0, 0x32090000, 0xffffffff, 0xffff0000, 48, "LISP#cht-xtr" }, { 0x261000d0, 0x320a0000, 0xffffffff, 0xffff0000, 48, "LISP#oasis-tech-xtr" }, { 0x261000d0, 0x320b0000, 0xffffffff, 0xffff0000, 48, "LISP#wide-xtr" }, { 0x261000d0, 0x320c0000, 0xffffffff, 0xffff0000, 48, "LISP#mingchow-xtr" }, { 0x261000d0, 0x320d0000, 0xffffffff, 0xffff0000, 48, "LISP#jiwang2-xtr" }, { 0x261000d0, 0x320e0000, 0xffffffff, 0xffff0000, 48, "LISP#fnsc-xtr" }, { 0x261000d0, 0x320f0000, 0xffffffff, 0xffff0000, 48, "LISP#nagoya-u-xtr" }, { 0x261000d0, 0x32100000, 0xffffffff, 0xffff0000, 48, "LISP#yuyarin-xtr" }, { 0x261000d0, 0x32110000, 0xffffffff, 0xffff0000, 48, "LISP#matsumoto-xtr" }, { 0x261000d0, 0x32120000, 0xffffffff, 0xffff0000, 48, "LISP#vhan-xtr" }, { 0x261000d0, 0x32130000, 0xffffffff, 0xffff0000, 48, "LISP#alphawest-xtr" }, { 0x261000d0, 0x32140000, 0xffffffff, 0xffff0000, 48, "LISP#mra4d-xtr" }, { 0x261000d0, 0x32150000, 0xffffffff, 0xffff0000, 48, "LISP#uet-vnu-xtr" }, { 0x261000d0, 0x32160000, 0xffffffff, 0xffff0000, 48, "LISP#pgear-xtr" }, { 0x261000d0, 0x32170000, 0xffffffff, 0xffff0000, 48, "LISP#pccw-xtr" }, { 0x261000d0, 0x32180000, 0xffffffff, 0xffff0000, 48, "LISP#fitac-xtr" }, { 0x261000d0, 0x32190000, 0xffffffff, 0xffff0000, 48, "LISP#layim2-xtr" }, { 0x261000d0, 0x321a0000, 0xffffffff, 0xffff0000, 48, "LISP#daniel-xtr-1" }, { 0x261000d0, 0x321b0000, 0xffffffff, 0xffff0000, 48, "LISP#daniel-xtr-2" }, { 0x261000d0, 0x321c0000, 0xffffffff, 0xffff0000, 48, "LISP#daniel-xtr-3" }, { 0x261000d0, 0x321e0000, 0xffffffff, 0xffff0000, 48, "LISP#hongang-xtr" }, { 0x261000d0, 0x321f0000, 0xffffffff, 0xffff0000, 48, "LISP#chaney-xtr" }, { 0x261000d0, 0x32200000, 0xffffffff, 0xffff0000, 48, "LISP#kozuka-xtr" }, { 0x261000d0, 0x32210000, 0xffffffff, 0xffff0000, 48, "LISP#nattrav-test-apnic" }, { 0x261000d0, 0x32220000, 0xffffffff, 0xffff0000, 48, "LISP#ydpark-xtr" }, { 0x261000d0, 0x32230000, 0xffffffff, 0xffff0000, 48, "LISP#farhadsh-xtr" }, { 0x261000d0, 0x32240000, 0xffffffff, 0xffff0000, 48, "LISP#hawthorne-xtr" }, { 0x261000d0, 0x32250000, 0xffffffff, 0xffff0000, 48, "LISP#hyunsoo-xtr" }, { 0x261000d0, 0x32260000, 0xffffffff, 0xffff0000, 48, "LISP#ykenu-xtr" }, { 0x261000d0, 0x32270000, 0xffffffff, 0xffff0000, 48, "LISP#gsik-xtr" }, { 0x261000d0, 0x32280000, 0xffffffff, 0xffff0000, 48, "LISP#yshiin-xtr" }, { 0x261000d0, 0x32290000, 0xffffffff, 0xffff0000, 48, "LISP#tao-networks2-xtr" }, { 0x261000d0, 0x322a0000, 0xffffffff, 0xffff0000, 48, "LISP#rdines-xtr" }, { 0x261000d0, 0x322b0000, 0xffffffff, 0xffff0000, 48, "LISP#tosterbe1-xtr" }, { 0x261000d0, 0x322c0000, 0xffffffff, 0xffff0000, 48, "LISP#jzhang-xtr" }, { 0x261000d0, 0x323f0000, 0xffffffff, 0xffff0000, 48, "LISP#gs9591-xtr" }, { 0x261000d0, 0x50000000, 0xffffffff, 0xffff0000, 48, "LISP#ufba-xtr" }, { 0x261000d0, 0xface0000, 0xffffffff, 0xffff0000, 48, "LISP#facebook-xtr-2" }, }; ipv6calc-1.0.0/databases/lib/000077500000000000000000000000001312366535500157255ustar00rootroot00000000000000ipv6calc-1.0.0/databases/lib/Makefile.in000066400000000000000000000046171312366535500200020ustar00rootroot00000000000000# Project : ipv6calc # File : lib/Makefile # Version : $Id: cda6ec2e84badecf5d873f7f11c92bd1e7172b28 $ # Copyright : 2013-2013 by Peter Bieringer # # Information: # Makefile for ipv6calc database libraries # libdir = @libdir@ # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall CFLAGS += -D__EXTENSIONS__ -fPIC INCLUDES= -I../../lib -I../.. @GEOIP_INCLUDE_L2@ @IP2LOCATION_INCLUDE_L2@ SHARED_LIBRARY=@SHARED_LIBRARY@ ifeq ($(shell uname), Darwin) SO_NAME_FLAGS=-install_name else SO_NAME_FLAGS=-soname endif CC = @CC@ AR = ar RANLIB = @RANLIB@ OBJS = libipv6calc_db_wrapper.o \ libipv6calc_db_wrapper_GeoIP.o \ libipv6calc_db_wrapper_IP2Location.o \ libipv6calc_db_wrapper_DBIP.o \ libipv6calc_db_wrapper_External.o \ libipv6calc_db_wrapper_BuiltIn.o all: ${MAKE} libipv6calc_db_wrapper.a ${MAKE} libipv6calc_db_wrapper.so.@PACKAGE_VERSION@ .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) $(OBJS): libipv6calc_db_wrapper.h \ libipv6calc_db_wrapper_GeoIP.h \ libipv6calc_db_wrapper_IP2Location.h \ libipv6calc_db_wrapper_DBIP.h \ libipv6calc_db_wrapper_External.h \ libipv6calc_db_wrapper_BuiltIn.h \ ../../lib/libipv6calcdebug.h \ ../ieee-oui/dbieee_oui.h \ ../ieee-oui36/dbieee_oui36.h \ ../ieee-iab/dbieee_iab.h \ ../ipv4-assignment/dbipv4addr_assignment.h \ ../ipv6-assignment/dbipv6addr_assignment.h \ ../as-assignment/dbasn_assignment.h \ ../cc-assignment/db_cc_reg_assignment.h \ ../../config.h libipv6calc_db_wrapper.a: $(OBJS) echo "Create library" $(AR) r libipv6calc_db_wrapper.a $(OBJS) $(RANLIB) libipv6calc_db_wrapper.a libipv6calc_db_wrapper.so.@PACKAGE_VERSION@: $(OBJS) ifeq ($(SHARED_LIBRARY), yes) echo "Create shared library (.so)" $(CC) -o libipv6calc_db_wrapper.so.@PACKAGE_VERSION@ $(OBJS) $(CFLAGS) $(LDFLAGS) -shared -Wl,$(SO_NAME_FLAGS),libipv6calc_db_wrapper.so.@PACKAGE_VERSION@ else echo "Nothing to do (shared libary mode is not enabled)" endif distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f *.o *.a *.so *.so.* install: all ifeq ($(SHARED_LIBRARY), yes) echo "Install shared library" mkdir -p $(DESTDIR)$(libdir) install -m 755 libipv6calc_db_wrapper.so.@PACKAGE_VERSION@ $(DESTDIR)$(libdir) /sbin/ldconfig -n $(DESTDIR)$(libdir) else echo "Nothing to do (shared libary mode is not enabled)" endif test: ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper.c000066400000000000000000003332551312366535500225070ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper.c * Version : $Id: 228a3c6370c4975712a2f3198b494ea0755795c8 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * ipv6calc database wrapper (for decoupling databases from main binary) */ #include #include #include #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "ipv6calcoptions.h" #include "libipv6calc_db_wrapper.h" #include "libipv6calc_db_wrapper_GeoIP.h" #include "libipv6calc_db_wrapper_IP2Location.h" #include "libipv6calc_db_wrapper_DBIP.h" #include "libipv6calc_db_wrapper_External.h" #include "libipv6calc_db_wrapper_BuiltIn.h" #ifdef DOMAIN // fallback for IP2Location.h < 8.0.0 where "DOMAIN" is defined // code taken from https://stackoverflow.com/questions/994593/how-to-do-an-integer-log2-in-c static int uint64_log2(uint64_t n) { #define S(k) if (n >= (UINT64_C(1) << k)) { i += k; n >>= k; } int i = -(n == 0); S(32); S(16); S(8); S(4); S(2); S(1); return i; #undef S }; #else #include #define uint64_log2 log2 #endif static int wrapper_GeoIP_disable = 0; static int wrapper_IP2Location_disable = 0; static int wrapper_DBIP_disable = 0; static int wrapper_External_disable = 0; static int wrapper_BuiltIn_disable = 0; static int wrapper_GeoIP_status = 0; static int wrapper_IP2Location_status = 0; static int wrapper_DBIP_status = 0; static int wrapper_External_status = 0; static int wrapper_BuiltIn_status = 0; uint32_t wrapper_features = 0; uint32_t wrapper_features_by_source[IPV6CALC_DB_SOURCE_MAX + 1]; uint32_t wrapper_features_by_source_implemented[IPV6CALC_DB_SOURCE_MAX + 1]; int wrapper_features_selector[IPV6CALC_DB_FEATURE_NUM_MAX + 1][IPV6CALC_DB_PRIO_MAX]; unsigned int wrapper_source_priority_selector[IPV6CALC_DB_SOURCE_MAX + 1]; int wrapper_source_priority_selector_by_option = -1; // -1: uninitialized, 0: initialized, > 0: touched by option /* * function initialise the main wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_init(const char *prefix_string) { int result = 0, f, p, s, j; #if defined SUPPORT_GEOIP || defined SUPPORT_IP2LOCATION || defined SUPPORT_DBIP || defined SUPPORT_EXTERNAL || defined SUPPORT_BUILTIN int r; #endif s = strlen(prefix_string); // make compiler happy (avoid unused "...") DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); // clear feature selector for (f = IPV6CALC_DB_FEATURE_NUM_MIN; f <= IPV6CALC_DB_FEATURE_NUM_MAX; f++) { for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { wrapper_features_selector[f][p] = 0; }; }; for (s = 0; s <= IPV6CALC_DB_SOURCE_MAX; s++) { wrapper_features_by_source[s] = 0; }; // initialize priority selector if (wrapper_source_priority_selector_by_option < 0) { for (s = 0; s <= IPV6CALC_DB_SOURCE_MAX; s++) { wrapper_source_priority_selector[s] = 0; }; wrapper_source_priority_selector_by_option = 0; }; // initialize priority if (wrapper_source_priority_selector_by_option == 0) { // default for (s = IPV6CALC_DB_SOURCE_MIN; s <= IPV6CALC_DB_SOURCE_MAX; s++) { wrapper_source_priority_selector[s] = s; }; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization already given by option, fill missing ones: %d", wrapper_source_priority_selector_by_option); for (j = IPV6CALC_DB_SOURCE_MIN; j <= wrapper_source_priority_selector_by_option; j++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/defined by option entry %d: %s", j, libipv6calc_db_wrapper_get_data_source_name_by_number(wrapper_source_priority_selector[j])); }; // already touched by option, fill not mentioned ones for (j = 0; j < MAXENTRIES_ARRAY(data_sources); j++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/test source: %s", data_sources[j].shortname); for (s = IPV6CALC_DB_SOURCE_MIN; s <= wrapper_source_priority_selector_by_option; s++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/check: %s", libipv6calc_db_wrapper_get_data_source_name_by_number(wrapper_source_priority_selector[s])); if (wrapper_source_priority_selector[s] == data_sources[j].number) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/source already defined: %s", data_sources[j].shortname); // already set, skip break; }; }; if (s > wrapper_source_priority_selector_by_option) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/source missing, add: %s", data_sources[j].shortname); wrapper_source_priority_selector_by_option++; wrapper_source_priority_selector[wrapper_source_priority_selector_by_option] = data_sources[j].number; }; }; }; for (j = IPV6CALC_DB_SOURCE_MIN; j <= wrapper_source_priority_selector_by_option; j++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/defined by option entry %d: %s", j, libipv6calc_db_wrapper_get_data_source_name_by_number(wrapper_source_priority_selector[j])); }; if (wrapper_GeoIP_disable != 1) { #ifdef SUPPORT_GEOIP // Call GeoIP wrapper DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call libipv6calc_db_wrapper_GeoIP_wrapper_init"); r = libipv6calc_db_wrapper_GeoIP_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "GeoIP_wrapper_init result: %d wrapper_features=0x%08x", r, wrapper_features); if (r != 0) { #ifndef SUPPORT_GEOIP_DYN // only non-dynamic-load results in a problem result = 1; #endif } else { wrapper_GeoIP_status = 1; // ok }; } else { NONQUIETPRINT_WA("%sSupport for GeoIP disabled by option", prefix_string); #endif // SUPPORT_GEOIP }; if (wrapper_IP2Location_disable != 1) { #ifdef SUPPORT_IP2LOCATION // Call IP2Location wrapper DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call libipv6calc_db_wrapper_IP2Location_wrapper_init"); r = libipv6calc_db_wrapper_IP2Location_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "IP2Location_wrapper_init result: %d wrapper_features=0x%08x", r, wrapper_features); if (r != 0) { #ifndef SUPPORT_IP2LOCATION_DYN // only non-dynamic-load results in a problem result = 1; #endif } else { wrapper_IP2Location_status = 1; // ok }; } else { NONQUIETPRINT_WA("%sSupport for IP2Location disabled by option", prefix_string); #endif // SUPPORT_IP2LOCATION }; if (wrapper_DBIP_disable != 1) { #ifdef SUPPORT_DBIP // Call DBIP wrapper DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call libipv6calc_db_wrapper_DBIP_wrapper_init"); r = libipv6calc_db_wrapper_DBIP_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "DBIP_wrapper_init result: %d wrapper_features=0x%08x", r, wrapper_features); if (r != 0) { result = 1; } else { wrapper_DBIP_status = 1; // ok }; } else { NONQUIETPRINT_WA("%sSupport for db-ip.com disabled by option", prefix_string); #endif // SUPPORT_DBIP }; if (wrapper_External_disable != 1) { #ifdef SUPPORT_EXTERNAL // Call External wrapper DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call libipv6calc_db_wrapper_External_wrapper_init"); r = libipv6calc_db_wrapper_External_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "External_wrapper_init result: %d wrapper_features=0x%08x", r, wrapper_features); if (r != 0) { result = 1; } else { wrapper_External_status = 1; // ok }; } else { NONQUIETPRINT_WA("%sSupport for External disabled by option", prefix_string); #endif // SUPPORT_EXTERNAL }; if (wrapper_BuiltIn_disable != 1) { #ifdef SUPPORT_BUILTIN // Call BuiltIn wrapper DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call libipv6calc_db_wrapper_BuiltIn_wrapper_init"); r = libipv6calc_db_wrapper_BuiltIn_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "BuiltIn_wrapper_init result: %d wrapper_features=0x%08x", r, wrapper_features); if (r != 0) { result = 1; } else { wrapper_BuiltIn_status = 1; // ok }; #endif // SUPPORT_BUILTIN }; // select source for feature by standard priority (from last to first in list) DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "select source for feature by standard priority"); // run through feature numbers for (f = IPV6CALC_DB_FEATURE_NUM_MIN; f <= IPV6CALC_DB_FEATURE_NUM_MAX; f++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "check feature f=%d", f); // run through sources int sp; for (sp = IPV6CALC_DB_SOURCE_MIN; sp <= IPV6CALC_DB_SOURCE_MAX; sp++) { s = wrapper_source_priority_selector[sp]; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "check feature by source f=%d s=%d sp=%d", f, s, sp); if ((wrapper_features_by_source[s] & (1 << f)) != 0) { // supported, run through prio array for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { if (wrapper_features_selector[f][p] == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "select feature with source f=%d s=%d p=%d", f, s, p); wrapper_features_selector[f][p] = s; break; } else { #if defined SUPPORT_BUILTIN && defined SUPPORT_EXTERNAL // special handling for BuiltIn/External (no subsequent calls) if ((wrapper_BuiltIn_disable != 1) && (wrapper_External_disable != 1)) { // IPv4 -> Registry if (((1 << f) == IPV6CALC_DB_IPV4_TO_REGISTRY) && \ ( (s == IPV6CALC_DB_SOURCE_BUILTIN && (wrapper_features_selector[f][p] == IPV6CALC_DB_SOURCE_EXTERNAL)) \ || (s == IPV6CALC_DB_SOURCE_EXTERNAL && (wrapper_features_selector[f][p] == IPV6CALC_DB_SOURCE_BUILTIN)) )) { // BuiltIn & External have feature enabled and one of them is already selected for p=0 time_t db_unixtime_BuiltIn = libipv6calc_db_wrapper_BuiltIn_db_unixtime_by_feature(IPV6CALC_DB_IPV4_TO_REGISTRY); time_t db_unixtime_External = libipv6calc_db_wrapper_External_db_unixtime_by_feature(IPV6CALC_DB_IPV4_TO_REGISTRY); if ((db_unixtime_BuiltIn > 0) && (db_unixtime_External > 0)) { if (db_unixtime_BuiltIn < db_unixtime_External) { wrapper_features_selector[f][p] = IPV6CALC_DB_SOURCE_EXTERNAL; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "BuiltIn has older DB than External for IPV6CALC_DB_IPV4_TO_REGISTRY"); } else { wrapper_features_selector[f][p] = IPV6CALC_DB_SOURCE_BUILTIN; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "External has older DB than BuiltIn for IPV6CALC_DB_IPV4_TO_REGISTRY"); }; break; // no further extension of priority list }; }; // IPv6 -> Registry if (((1 << f) == IPV6CALC_DB_IPV6_TO_REGISTRY) && \ ( (s == IPV6CALC_DB_SOURCE_BUILTIN && (wrapper_features_selector[f][p] == IPV6CALC_DB_SOURCE_EXTERNAL)) \ || (s == IPV6CALC_DB_SOURCE_EXTERNAL && (wrapper_features_selector[f][p] == IPV6CALC_DB_SOURCE_BUILTIN)) )) { // BuiltIn & External have feature enabled and one of them is already selected for p=0 time_t db_unixtime_BuiltIn = libipv6calc_db_wrapper_BuiltIn_db_unixtime_by_feature(IPV6CALC_DB_IPV6_TO_REGISTRY); time_t db_unixtime_External = libipv6calc_db_wrapper_External_db_unixtime_by_feature(IPV6CALC_DB_IPV6_TO_REGISTRY); if ((db_unixtime_BuiltIn > 0) && (db_unixtime_External > 0)) { if (db_unixtime_BuiltIn < db_unixtime_External) { wrapper_features_selector[f][p] = IPV6CALC_DB_SOURCE_EXTERNAL; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "BuiltIn has older DB than External for IPV6CALC_DB_IPV6_TO_REGISTRY"); } else { wrapper_features_selector[f][p] = IPV6CALC_DB_SOURCE_BUILTIN; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "External has older DB than BuiltIn for IPV6CALC_DB_IPV6_TO_REGISTRY"); }; break; // no further extension of priority list }; }; }; #endif // SUPPORT_BUILTIN && SUPPORT_EXTERNAL }; }; }; }; }; #ifdef TEST #if defined SUPPORT_BUILTIN && defined SUPPORT_EXTERNAL // IPv4 -> Registry if ((wrapper_BuiltIn_status == 1) && (wrapper_External_status == 1)) { if (libipv6calc_db_wrapper_External_has_features(IPV6CALC_DB_IPV4_TO_REGISTRY) == 1 \ && libipv6calc_db_wrapper_BuiltIn_has_features(IPV6CALC_DB_IPV4_TO_REGISTRY) == 1) { // BuiltIn & External have feature enabled (both) time_t db_unixtime_BuiltIn = libipv6calc_db_wrapper_BuiltIn_db_unixtime_by_feature(IPV6CALC_DB_IPV4_TO_REGISTRY); time_t db_unixtime_External = libipv6calc_db_wrapper_External_db_unixtime_by_feature(IPV6CALC_DB_IPV4_TO_REGISTRY); if ((db_unixtime_BuiltIn > 0) && (db_unixtime_External > 0)) { if (db_unixtime_BuiltIn < db_unixtime_External) { wrapper_features_selector[IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGISTRY][0] = IPV6CALC_DB_SOURCE_EXTERNAL; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "BuiltIn has older DB than External for IPV6CALC_DB_IPV4_TO_REGISTRY, disable it further"); } else { wrapper_features_selector[IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGISTRY][0] = IPV6CALC_DB_SOURCE_BUILTIN; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "External has older DB than BuiltIn for IPV6CALC_DB_IPV4_TO_REGISTRY, disable it further"); }; }; }; }; #endif // SUPPORT_BUILTIN && SUPPORT_EXTERNAL #endif return(result); }; /* * function cleanup the main wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_cleanup(void) { int result = 0; #if defined SUPPORT_GEOIP || defined SUPPORT_IP2LOCATION || defined SUPPORT_DBIP || defined SUPPORT_EXTERNAL || defined SUPPORT_BUILTIN int r; #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); #ifdef SUPPORT_GEOIP // Call GeoIP wrapper r = libipv6calc_db_wrapper_GeoIP_wrapper_cleanup(); if (r != 0) { result = 1; }; #endif #ifdef SUPPORT_IP2LOCATION // Call IP2Location wrapper r = libipv6calc_db_wrapper_IP2Location_wrapper_cleanup(); if (r != 0) { result = 1; }; #endif #ifdef SUPPORT_DBIP // Call DBIP wrapper r = libipv6calc_db_wrapper_DBIP_wrapper_cleanup(); if (r != 0) { result = 1; }; #endif #ifdef SUPPORT_BUILTIN // Call BuiltIn wrapper r = libipv6calc_db_wrapper_BuiltIn_wrapper_cleanup(); if (r != 0) { result = 1; }; #endif return(result); }; /* function get info strings */ void libipv6calc_db_wrapper_info(char *string, const size_t size) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); #ifdef SUPPORT_GEOIP // Call GeoIP wrapper libipv6calc_db_wrapper_GeoIP_wrapper_info(string, size); #endif #ifdef SUPPORT_IP2LOCATION // Call IP2Location wrapper libipv6calc_db_wrapper_IP2Location_wrapper_info(string, size); #endif #ifdef SUPPORT_DBIP // Call DBIP wrapper libipv6calc_db_wrapper_BuiltIn_wrapper_info(string, size); #endif #ifdef SUPPORT_BUILTIN // Call BuiltIn wrapper libipv6calc_db_wrapper_BuiltIn_wrapper_info(string, size); #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: %s", string); return; }; /* function get feature string */ void libipv6calc_db_wrapper_features(char *string, const size_t size) { int i; char tempstring[NI_MAXHOST]; char *separator; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_db_features); i++) { if (wrapper_features & ipv6calc_db_features[i].number) { if (strlen(string) == 0) { separator = ""; } else { separator = " "; }; snprintf(tempstring, sizeof(tempstring), "%s%s%s", string, separator, ipv6calc_db_features[i].token); snprintf(string, size, "%s", tempstring); }; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Return"); return; }; /* function get capability string */ void libipv6calc_db_wrapper_capabilities(char *string, const size_t size) { #if defined SUPPORT_GEOIP || defined SUPPORT_IP2LOCATION || defined SUPPORT_DBIP || defined SUPPORT_EXTERNAL || defined SUPPORT_BUILTIN char tempstring[NI_MAXHOST]; #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); if (wrapper_GeoIP_disable != 1) { #ifdef SUPPORT_GEOIP #ifdef SUPPORT_GEOIP_DYN snprintf(tempstring, sizeof(tempstring), "%s%sGeoIP(dyn-load)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #else // SUPPORT_GEOIP_DYN #ifdef SUPPORT_GEOIP_STATIC snprintf(tempstring, sizeof(tempstring), "%s%sGeoIP(static)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #else // SUPPORT_GEOIP_STATIC snprintf(tempstring, sizeof(tempstring), "%s%sGeoIP(linked)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif // SUPPORT_GEOIP_STATIC #endif // SUPPORT_GEOIP_DYN #endif // SUPPORT_GEOIP }; if (wrapper_IP2Location_disable != 1) { #ifdef SUPPORT_IP2LOCATION #ifdef SUPPORT_IP2LOCATION_DYN snprintf(tempstring, sizeof(tempstring), "%s%sIP2Location(dyn-load)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #else // SUPPORT_IP2LOCATION_DYN #ifdef SUPPORT_IP2LOCATION_STATIC snprintf(tempstring, sizeof(tempstring), "%s%sIP2Location(static)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #else // SUPPORT_IP2LOCATION_STATIC snprintf(tempstring, sizeof(tempstring), "%s%sIP2Location(linked)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif // SUPPORT_IP2LOCATION_STATIC #endif //SUPPORT_IP2LOCATION_DYN #endif // SUPPORT_IP2LOCATION }; if (wrapper_DBIP_disable != 1) { #ifdef SUPPORT_DBIP snprintf(tempstring, sizeof(tempstring), "%s%sDBIP", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif }; if (wrapper_External_disable != 1) { #ifdef SUPPORT_EXTERNAL snprintf(tempstring, sizeof(tempstring), "%s%sExternal", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif }; if (wrapper_BuiltIn_disable != 1) { #ifdef SUPPORT_BUILTIN snprintf(tempstring, sizeof(tempstring), "%s%sDB_AS_REG(BuiltIn)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); snprintf(tempstring, sizeof(tempstring), "%s%sDB_CC_REG(BuiltIn)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #ifdef SUPPORT_DB_IPV4_REG snprintf(tempstring, sizeof(tempstring), "%s%sDB_IPV4_REG(BuiltIn)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif #ifdef SUPPORT_DB_IPV6_REG snprintf(tempstring, sizeof(tempstring), "%s%sDB_IPV6_REG(BuiltIn)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif #ifdef SUPPORT_DB_IEEE snprintf(tempstring, sizeof(tempstring), "%s%sDB_IEEE(BuiltIn)", string, strlen(string) > 0 ? " " : ""); snprintf(string, size, "%s", tempstring); #endif #endif // SUPPORT_BUILTIN }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Return"); return; }; /* function get source name by number * in: source number * out: source name */ const char *libipv6calc_db_wrapper_get_data_source_name_by_number(const unsigned int number) { int i; for (i = 0; i < MAXENTRIES_ARRAY(data_sources); i++) { if (data_sources[i].number == number) { return(data_sources[i].name); }; }; ERRORPRINT_WA("unsupported data_source number: %d (FIX CODE)\n", number); exit(1); }; /* function get feature index by number * in: feature number * out: index */ static int libipv6calc_db_wrapper_get_feature_index_by_feature(const uint32_t feature) { int i; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_db_features); i++) { if (ipv6calc_db_features[i].number == feature) { return(i); }; }; ERRORPRINT_WA("unsupported feature: %d (FIX CODE)\n", feature); exit(1); }; /* function print feature string help */ void libipv6calc_db_wrapper_features_help(void) { int i, s, first; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_db_features); i++) { fprintf(stderr, "%-22s%c %s", ipv6calc_db_features[i].token, (wrapper_features & ipv6calc_db_features[i].number) ? 'x' : 'o', ipv6calc_db_features[i].explanation); first = 1; for (s = IPV6CALC_DB_SOURCE_MIN; s <= IPV6CALC_DB_SOURCE_MAX; s++) { if ((wrapper_features_by_source_implemented[s] & ipv6calc_db_features[i].number) != 0) { fprintf(stderr, "%s%s", (first == 1) ? " (provided by " : ",", libipv6calc_db_wrapper_get_data_source_name_by_number(s)); first = 0; }; }; fprintf(stderr, "%s\n", (first == 1) ? "" : ")"); }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Return"); return; }; /* function print db info */ void libipv6calc_db_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { int f, p, f_index; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); fprintf(stderr, "%sDB features: 0x%08x\n\n", prefix_string, wrapper_features); #ifdef SUPPORT_GEOIP if (wrapper_GeoIP_disable != 1) { // Call GeoIP wrapper libipv6calc_db_wrapper_GeoIP_wrapper_print_db_info(level_verbose, prefix_string); } else { fprintf(stderr, "%sGeoIP support available but disabled by option\n", prefix_string); }; fprintf(stderr, "\n"); #endif #ifdef SUPPORT_IP2LOCATION if (wrapper_IP2Location_disable != 1) { // Call IP2Location wrapper libipv6calc_db_wrapper_IP2Location_wrapper_print_db_info(level_verbose, prefix_string); } else { fprintf(stderr, "%sIP2Location support available but disabled by option\n", prefix_string); }; fprintf(stderr, "\n"); #endif #ifdef SUPPORT_DBIP if (wrapper_DBIP_disable != 1) { // Call DBIP wrapper libipv6calc_db_wrapper_DBIP_wrapper_print_db_info(level_verbose, prefix_string); } else { fprintf(stderr, "%sdb-ip.com support available but disabled by option\n", prefix_string); }; fprintf(stderr, "\n"); #endif #ifdef SUPPORT_EXTERNAL if (wrapper_External_disable != 1) { // Call External wrapper libipv6calc_db_wrapper_External_wrapper_print_db_info(level_verbose, prefix_string); } else { fprintf(stderr, "%sExternal support available but disabled by option\n", prefix_string); }; fprintf(stderr, "\n"); #endif #ifdef SUPPORT_BUILTIN if (wrapper_BuiltIn_disable != 1) { // Call BuiltIn wrapper libipv6calc_db_wrapper_BuiltIn_wrapper_print_db_info(level_verbose, prefix_string); } else { fprintf(stderr, "%sBuiltIn support available but disabled by option\n", prefix_string); }; fprintf(stderr, "\n"); #endif // summary fprintf(stderr, "%sDatabase selection or priorization ('->': subsequential calls)\n", prefix_string); fprintf(stderr, "%sDatabase priorization %s: " , prefix_string , (wrapper_source_priority_selector_by_option > 0) ? "by option" : "default" ); int sp; for (sp = IPV6CALC_DB_SOURCE_MIN; sp <= IPV6CALC_DB_SOURCE_MAX; sp++) { fprintf(stderr, "%s%s" , (sp == IPV6CALC_DB_SOURCE_MIN) ? "" : "->" , libipv6calc_db_wrapper_get_data_source_name_by_number(wrapper_source_priority_selector[sp]) ); }; fprintf(stderr, "\n"); for (f = IPV6CALC_DB_FEATURE_NUM_MIN; f <= IPV6CALC_DB_FEATURE_NUM_MAX; f++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "f=%d", f); f_index = libipv6calc_db_wrapper_get_feature_index_by_feature(1 << f); fprintf(stderr, "%s%s (%s): ", prefix_string, ipv6calc_db_features[f_index].token, ipv6calc_db_features[f_index].explanation); if (wrapper_features_selector[f][0] == 0) { fprintf(stderr, "NO-DATABASE"); } else { for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { if (wrapper_features_selector[f][p] != 0) { fprintf(stderr, "%s%s", (p == 0) ? "" : "->", libipv6calc_db_wrapper_get_data_source_name_by_number(wrapper_features_selector[f][p])); }; }; }; fprintf(stderr, "\n"); }; fprintf(stderr, "\n"); DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Return"); return; }; /* function query for feature set * ret=-1: unknown * 0 : not matching * 1 : ok */ int libipv6calc_db_wrapper_has_features(uint32_t features) { int result = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called with feature value to test: 0x%08x", features); if ((wrapper_features & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Return with result: %d", result); return(result); }; /********************************************* * Option handling * return < 0: error *********************************************/ int libipv6calc_db_wrapper_options(const int opt, const char *optarg, const struct option longopts[]) { int result = -1; int s; // initialize priority selector if (wrapper_source_priority_selector_by_option < 0) { for (s = 0; s <= IPV6CALC_DB_SOURCE_MAX; s++) { wrapper_source_priority_selector[s] = 0; }; wrapper_source_priority_selector_by_option = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called with option: %08x", opt); switch(opt) { case DB_ip2location_disable: wrapper_IP2Location_disable = 1; result = 0; break; case DB_geoip_disable: wrapper_GeoIP_disable = 1; result = 0; break; case DB_dbip_disable: wrapper_DBIP_disable = 1; result = 0; break; case DB_external_disable: wrapper_External_disable = 1; result = 0; break; case DB_builtin_disable: wrapper_BuiltIn_disable = 1; result = 0; break; case DB_ip2location_lib: #ifdef SUPPORT_IP2LOCATION_DYN result = snprintf(ip2location_lib_file, sizeof(ip2location_lib_file), "%s", optarg); #else NONQUIETPRINT_WA("Support for IP2Location dyn-load not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_geoip_lib: #ifdef SUPPORT_GEOIP_DYN result = snprintf(geoip_lib_file, sizeof(geoip_lib_file), "%s", optarg); #else NONQUIETPRINT_WA("Support for GeoIP dyn-load not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_ip2location_dir: #ifdef SUPPORT_IP2LOCATION result = snprintf(ip2location_db_dir, sizeof(ip2location_db_dir), "%s", optarg); #else NONQUIETPRINT_WA("Support for IP2Location not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_geoip_dir: #ifdef SUPPORT_GEOIP result = snprintf(geoip_db_dir, sizeof(geoip_db_dir), "%s", optarg); #else NONQUIETPRINT_WA("Support for GeoIP not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_dbip_dir: #ifdef SUPPORT_DBIP result = snprintf(dbip_db_dir, sizeof(dbip_db_dir), "%s", optarg); #else NONQUIETPRINT_WA("Support for db-ip.com not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_dbip_only_type: #ifdef SUPPORT_DBIP if ((atoi(optarg) >= 1) && (atoi(optarg) <= DBIP_DB_MAX)) { dbip_db_only_type = atoi(optarg); } else { fprintf(stderr, " Argument of option 'db-dbip-only-type' is out or range (1-%d): %d\n", DBIP_DB_MAX, atoi(optarg)); exit(EXIT_FAILURE); }; #else NONQUIETPRINT_WA("Support for db-ip.com not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_dbip_comm_to_free_switch_min_delta_months: #ifdef SUPPORT_DBIP if ((atoi(optarg) >= 0) && (atoi(optarg) <= 99999)) { dbip_db_comm_to_free_switch_min_delta_months = atoi(optarg); } else { fprintf(stderr, " Argument of option 'db-dbip-comm-to-free-switch-min-delta-months' is out or range (0-99999): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; #else NONQUIETPRINT_WA("Support for db-ip.com not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_external_dir: #ifdef SUPPORT_EXTERNAL result = snprintf(external_db_dir, sizeof(external_db_dir), "%s", optarg); #else NONQUIETPRINT_WA("Support for external not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; /* obsolete options */ case DB_ip2location_ipv4: case DB_ip2location_ipv6: NONQUIETPRINT_WA("Obsolete option skipped: --%s , use instead: --%s ", ipv6calcoption_name(opt, longopts), ipv6calcoption_name(DB_ip2location_dir, longopts)); result = 0; break; case DB_geoip_ipv4: case DB_geoip_ipv6: NONQUIETPRINT_WA("Obsolete option skipped: --%s , use instead: --%s ", ipv6calcoption_name(opt, longopts), ipv6calcoption_name(DB_geoip_dir, longopts)); result = 0; break; case DB_ip2location_lite_to_sample_autoswitch_max_delta_months: #ifdef SUPPORT_IP2LOCATION if ((atoi(optarg) >= 0) && (atoi(optarg) <= 99999)) { ip2location_db_lite_to_sample_autoswitch_max_delta_months = atoi(optarg); } else { fprintf(stderr, " Argument of option 'db-ip2location-lite-to-sample-autoswitch-max-delta-months' is out or range (0-99999): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; #else NONQUIETPRINT_WA("Support for IP2Location not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_ip2location_comm_to_lite_switch_min_delta_months: #ifdef SUPPORT_IP2LOCATION if ((atoi(optarg) >= 0) && (atoi(optarg) <= 99999)) { ip2location_db_comm_to_lite_switch_min_delta_months = atoi(optarg); } else { fprintf(stderr, " Argument of option 'db-ip2location-comm-to-lite-switch-min-delta-months' is out or range (0-99999): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; #else NONQUIETPRINT_WA("Support for IP2Location not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_ip2location_only_type: #ifdef SUPPORT_IP2LOCATION if ((atoi(optarg) >= 1) && (atoi(optarg) <= IP2LOCATION_DB_MAX)) { ip2location_db_only_type = atoi(optarg); } else { fprintf(stderr, " Argument of option 'db-ip2location-only-type' is out or range (1-%d): %d\n", IP2LOCATION_DB_MAX, atoi(optarg)); exit(EXIT_FAILURE); }; #else NONQUIETPRINT_WA("Support for IP2Location not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_ip2location_allow_softlinks: #ifdef SUPPORT_IP2LOCATION ip2location_db_allow_softlinks = 1; #else NONQUIETPRINT_WA("Support for IP2Location not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); #endif result = 0; break; case DB_common_priorization: #if defined SUPPORT_EXTERNAL || defined SUPPORT_DBIP || defined SUPPORT_GEOIP || SUPPORT_IP2LOCATION DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Parse database priorization string: %s", optarg); char tempstring[NI_MAXHOST]; char *token, *cptr, **ptrptr; ptrptr = &cptr; int i, j; snprintf(tempstring, sizeof(tempstring), "%s", optarg); s = IPV6CALC_DB_SOURCE_MIN; token = strtok_r(tempstring, ":", ptrptr); while (token != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Parsing of token: %s", token); for (i = 0; i < MAXENTRIES_ARRAY(data_sources); i++) { if (strcasecmp(data_sources[i].shortname, token) == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Token found: %s (%d)", token, data_sources[i].number); break; }; }; if (i == MAXENTRIES_ARRAY(data_sources)) { ERRORPRINT_WA("Database priorization token not supported: %s", token); exit(EXIT_FAILURE); }; /* check for duplicate */ if (s > IPV6CALC_DB_SOURCE_MIN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Check for duplicate: %s", token); for (j = IPV6CALC_DB_SOURCE_MIN; j <= s; j++) { if (wrapper_source_priority_selector[j] == data_sources[i].number) { ERRORPRINT_WA("Database duplicate priorization token found: %s", token); exit(EXIT_FAILURE); }; }; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Set token on entry %d: %s", s, token); wrapper_source_priority_selector[s] = data_sources[i].number; wrapper_source_priority_selector_by_option = s; s++; /* get next token */ token = strtok_r(NULL, ":", ptrptr); }; for (j = IPV6CALC_DB_SOURCE_MIN; j <= wrapper_source_priority_selector_by_option; j++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Database priorization/defined by option entry %d: %s", j, libipv6calc_db_wrapper_get_data_source_name_by_number(wrapper_source_priority_selector[j])); }; #else NONQUIETPRINT_WA("Support for database priorization not compiled-in, skipping option: --%s", ipv6calcoption_name(opt, longopts)); s = strlen(optarg); // make compiler happy (avoid unused "...") #endif result = 0; break; }; if (result > 0) { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Return with result: %d", result); return(result); }; /********************************************* * Abstract functions *********************************************/ /* * get registry number by AS number */ int libipv6calc_db_wrapper_registry_num_by_as_num32(const uint32_t as_num32) { // currently only supported by BuiltIn return(libipv6calc_db_wrapper_BuiltIn_registry_num_by_as_num32(as_num32)); }; /* * get registry number by CC index */ int libipv6calc_db_wrapper_registry_num_by_cc_index(const uint16_t cc_index) { // currently only supported by BuiltIn return(libipv6calc_db_wrapper_BuiltIn_registry_num_by_cc_index(cc_index)); }; /* * get registry number by IP address */ int libipv6calc_db_wrapper_registry_num_by_ipaddr(const ipv6calc_ipaddr *ipaddrp) { ipv6calc_ipv4addr ipv4addr; ipv6calc_ipv6addr ipv6addr; if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { CONVERT_IPADDRP_IPV4ADDR(ipaddrp, ipv4addr) return(libipv6calc_db_wrapper_registry_num_by_ipv4addr(&ipv4addr)); } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { CONVERT_IPADDRP_IPV6ADDR(ipaddrp, ipv6addr) return(libipv6calc_db_wrapper_registry_num_by_ipv6addr(&ipv6addr)); } else { ERRORPRINT_WA("unsupported proto=%d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); }; }; /* * get registry string by IP address */ int libipv6calc_db_wrapper_registry_string_by_ipaddr(const ipv6calc_ipaddr *ipaddrp, char *resultstring, const size_t resultstring_length) { ipv6calc_ipv4addr ipv4addr; ipv6calc_ipv6addr ipv6addr; if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { CONVERT_IPADDRP_IPV4ADDR(ipaddrp, ipv4addr) return(libipv6calc_db_wrapper_registry_string_by_ipv4addr(&ipv4addr, resultstring, resultstring_length)); } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { CONVERT_IPADDRP_IPV6ADDR(ipaddrp, ipv6addr) return(libipv6calc_db_wrapper_registry_string_by_ipv6addr(&ipv6addr, resultstring, resultstring_length)); } else { ERRORPRINT_WA("unsupported proto=%d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); }; }; /* * get CountryCode in text form * in: ipaddrp, length * mod: string, data_source_ptr (if != NULL) * return: 0=ok */ int libipv6calc_db_wrapper_country_code_by_addr(char *string, const int length, const ipv6calc_ipaddr *ipaddrp, unsigned int *data_source_ptr) { unsigned int data_source = IPV6CALC_DB_SOURCE_UNKNOWN; int f = 0, p, result = -1; #if defined SUPPORT_GEOIP || defined SUPPORT_IP2LOCATION char tempstring[IPV6CALC_ADDR_STRING_MAX] = ""; char *result_char_ptr = NULL; #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); if (string == NULL) { ERRORPRINT_NA("given pointer 'string' is NULL (FIX CODE)"); exit(EXIT_FAILURE); }; if (length < 3) { ERRORPRINT_NA("given 'length' < 3 (FIX CODE)"); exit(EXIT_FAILURE); }; if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { f = IPV6CALC_DB_FEATURE_NUM_IPV4_TO_CC; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address: %08x", (unsigned int) ipaddrp->addr[0]); if ((ipaddrp->typeinfo1 & IPV4_ADDR_RESERVED) != 0) { // reserved IPv4 address has no country DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address: %08x is reserved (skip CountryCode lookup)", (unsigned int) ipaddrp->addr[0]); goto END_libipv6calc_db_wrapper; }; } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { f = IPV6CALC_DB_FEATURE_NUM_IPV6_TO_CC; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv6 address prefix (0-63): %08x%08x", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); if ((ipaddrp->typeinfo1 & IPV6_ADDR_RESERVED) != 0) { // reserved IPv4 address has no country DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv6 address prefix (0-63): %08x%08x is reserved (skip CountryCode lookup)", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); goto END_libipv6calc_db_wrapper; }; } else { ERRORPRINT_WA("unsupported proto=%d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); }; // run through priorities for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { #if defined SUPPORT_GEOIP || defined SUPPORT_IP2LOCATION switch(wrapper_features_selector[f][p]) { case IPV6CALC_DB_SOURCE_GEOIP: case IPV6CALC_DB_SOURCE_IP2LOCATION: // need IP address as string if (strlen(tempstring) == 0) { libipaddr_ipaddrstruct_to_string(ipaddrp, tempstring, sizeof(tempstring), 0); }; }; #endif switch(wrapper_features_selector[f][p]) { case 0: // last goto END_libipv6calc_db_wrapper; // ok break; case IPV6CALC_DB_SOURCE_GEOIP: if (wrapper_GeoIP_status == 1) { #ifdef SUPPORT_GEOIP DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Call now GeoIP with %s", tempstring); result_char_ptr = (char *) libipv6calc_db_wrapper_GeoIP_wrapper_country_code_by_addr(tempstring, ipaddrp->proto); if (result_char_ptr != NULL) { snprintf(string, length, "%s", result_char_ptr); result = 0; data_source = IPV6CALC_DB_SOURCE_GEOIP; goto END_libipv6calc_db_wrapper; // ok } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called GeoIP did not return a valid country_code"); }; #endif }; break; case IPV6CALC_DB_SOURCE_IP2LOCATION: if (wrapper_IP2Location_status == 1) { #ifdef SUPPORT_IP2LOCATION DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Call now IP2Location with %s", tempstring); result_char_ptr = libipv6calc_db_wrapper_IP2Location_wrapper_country_code_by_addr(tempstring, ipaddrp->proto); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called IP2Location returned: %s", result_char_ptr); if (result_char_ptr != NULL) { snprintf(string, length, "%s", result_char_ptr); result = 0; data_source = IPV6CALC_DB_SOURCE_IP2LOCATION; goto END_libipv6calc_db_wrapper; // ok } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called IP2Location did not return a valid country_code"); }; #endif }; break; case IPV6CALC_DB_SOURCE_DBIP: if (wrapper_DBIP_status == 1) { #ifdef SUPPORT_DBIP DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now DBIP"); int ret = libipv6calc_db_wrapper_DBIP_wrapper_country_code_by_addr(ipaddrp, string, length); if (ret == 0) { result = 0; data_source = IPV6CALC_DB_SOURCE_DBIP; goto END_libipv6calc_db_wrapper; // ok } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called db-ip.com did not return a valid country_code"); }; #endif }; break; case IPV6CALC_DB_SOURCE_EXTERNAL: if (wrapper_External_status == 1) { #ifdef SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now External"); int ret = libipv6calc_db_wrapper_External_country_code_by_addr(ipaddrp, string, length); if (ret == 0) { result = 0; data_source = IPV6CALC_DB_SOURCE_EXTERNAL; goto END_libipv6calc_db_wrapper; // ok } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called External did not return a valid country_code"); }; #endif }; break; default: goto END_libipv6calc_db_wrapper; // dummy goto in case no db is enabled break; }; }; END_libipv6calc_db_wrapper: if (result == 0) { if (data_source_ptr != NULL) { // set data_source if pointer not NULL *data_source_ptr = data_source; }; } else { // clear string snprintf(string, length, "%s", ""); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: %s (data_source=%d)", string, data_source); return(result); }; /* * get CountryCode in special internal form (index) [A-Z] (26) x [0-9A-Z] (36) */ uint16_t libipv6calc_db_wrapper_cc_index_by_addr(const ipv6calc_ipaddr *ipaddrp, unsigned int *data_source_ptr) { uint16_t index = COUNTRYCODE_INDEX_UNKNOWN; char cc_text[256] = ""; uint8_t c1, c2; int r; int cache_hit = 0; static ipv6calc_ipaddr ipaddr_cache_lastused; static uint16_t cc_index_lastused; static unsigned int data_source_lastused = IPV6CALC_DB_SOURCE_UNKNOWN; static int ipaddr_cache_lastused_valid = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x%08x%08x%08x proto=%d", ipaddrp->addr[0], ipaddrp->addr[1], ipaddrp->addr[2], ipaddrp->addr[3], ipaddrp->proto); if ((ipaddr_cache_lastused_valid == 1) && (ipaddr_cache_lastused.proto == ipaddrp->proto) && (ipaddr_cache_lastused.addr[0] == ipaddrp->addr[0]) && (ipaddr_cache_lastused.addr[1] == ipaddrp->addr[1]) && (ipaddr_cache_lastused.addr[2] == ipaddrp->addr[2]) && (ipaddr_cache_lastused.addr[3] == ipaddrp->addr[3]) ) { index = cc_index_lastused; // set only data_source from cache if caller request it if (data_source_ptr != NULL) { *data_source_ptr = data_source_lastused; }; cache_hit = 1; goto END_libipv6calc_db_wrapper_cached; } else { // retrieve always data_source for caching r = libipv6calc_db_wrapper_country_code_by_addr(cc_text, sizeof(cc_text), ipaddrp, &data_source_lastused); if (r != 0) { goto END_libipv6calc_db_wrapper_cached; // something wrong }; if (strlen(cc_text) == 2) { if (isalpha(cc_text[0]) && isalnum(cc_text[1])) { c1 = toupper(cc_text[0]); if (! (c1 >= 'A' && c1 <= 'Z')) { goto END_libipv6calc_db_wrapper_cached; // something wrong }; c1 -= 'A'; c2 = toupper(cc_text[1]); if (c2 >= '0' && c2 <= '9') { c2 -= '0'; } else if (c2 >= 'A' && c2 <= 'Z') { c2 -= 'A'; c2 += 10; } else { goto END_libipv6calc_db_wrapper_cached; // something wrong }; index = c1 + c2 * COUNTRYCODE_LETTER1_MAX; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "c1=%d c2=%d index=%d (0x%03x) -> test: %c%c", c1, c2, index, index, COUNTRYCODE_INDEX_TO_CHAR1(index), COUNTRYCODE_INDEX_TO_CHAR2(index)); if (index >= COUNTRYCODE_INDEX_MAX) { index = COUNTRYCODE_INDEX_UNKNOWN; // failsafe ERRORPRINT_WA("unexpected index (too high): %d", index); goto END_libipv6calc_db_wrapper_cached; // something wrong }; }; } else { ERRORPRINT_WA("returned cc_text has not 2 chars: %s", cc_text); goto END_libipv6calc_db_wrapper_cached; // something wrong }; // store in last used cache ipaddr_cache_lastused_valid = 1; cc_index_lastused = index; ipaddr_cache_lastused = *ipaddrp; }; END_libipv6calc_db_wrapper_cached: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: addr=%08x%08x%08x%08x cc_index=%d (0x%03x) %c%c%s", ipaddrp->addr[0], ipaddrp->addr[1], ipaddrp->addr[2], ipaddrp->addr[3], index, index, COUNTRYCODE_INDEX_TO_CHAR1(index), COUNTRYCODE_INDEX_TO_CHAR2(index), (cache_hit == 1 ? " (cached)" : "")); return(index); }; /* * get country code string by index */ int libipv6calc_db_wrapper_country_code_by_cc_index(char *string, const int length, const uint16_t cc_index) { int result = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called with cc_index=%d", cc_index); if (cc_index <= COUNTRYCODE_INDEX_LETTER_MAX) { snprintf(string, length, "%c%c", COUNTRYCODE_INDEX_TO_CHAR1(cc_index), COUNTRYCODE_INDEX_TO_CHAR2(cc_index)); } else if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { snprintf(string, length, "unknown"); } else if ((cc_index >= COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN) && (cc_index <= COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MAX)) { snprintf(string, length, "unknown"); } else { snprintf(string, length, "unsupported"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Return country code: %s", string); return(result); }; /* * get AS information in text form */ char *libipv6calc_db_wrapper_as_text_by_addr(const ipv6calc_ipaddr *ipaddrp) { char *result_char_ptr = NULL; #if defined SUPPORT_GEOIP char tempstring[IPV6CALC_ADDR_STRING_MAX] = ""; #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%04x%04x%04x%04x proto=%d", ipaddrp->addr[0], ipaddrp->addr[1], ipaddrp->addr[2], ipaddrp->addr[3], ipaddrp->proto); if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { if ((ipaddrp->typeinfo1 & IPV4_ADDR_RESERVED) != 0) { // reserved IPv4 address has no AS DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address: %08x is reserved (skip AS lookup)", (unsigned int) ipaddrp->addr[0]); goto END_libipv6calc_db_wrapper; }; } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { if ((ipaddrp->typeinfo1 & IPV6_ADDR_RESERVED) != 0) { // reserved IPv4 address has no AS DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv6 address prefix (0-63): %08x%08x is reserved (skip AS lookup)", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); goto END_libipv6calc_db_wrapper; }; } else { ERRORPRINT_WA("unsupported proto=%d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); }; if (wrapper_GeoIP_status == 1) { #ifdef SUPPORT_GEOIP // conversion sto string needed for GeoIP if (strlen(tempstring) == 0) { libipaddr_ipaddrstruct_to_string(ipaddrp, tempstring, sizeof(tempstring), 0); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Call now GeoIP with addr=%s proto=%d)", tempstring, ipaddrp->proto); result_char_ptr = libipv6calc_db_wrapper_GeoIP_wrapper_asnum_by_addr(tempstring, ipaddrp->proto); #endif }; END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: %s", result_char_ptr); return(result_char_ptr); }; /* * get AS 32-bit number */ uint32_t libipv6calc_db_wrapper_as_num32_by_addr(const ipv6calc_ipaddr *ipaddrp) { char *as_text; char as_number_string[11]; // max: 4294967295 = 10 digits + \0 uint32_t as_num32 = ASNUM_AS_UNKNOWN; // default int valid = 1; unsigned int s; int cache_hit = 0; static ipv6calc_ipaddr ipaddr_cache_lastused; static uint32_t as_num32_lastused; static int ipaddr_cache_lastused_valid = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x%08x%08x%08x proto=%d", ipaddrp->addr[0], ipaddrp->addr[1], ipaddrp->addr[2], ipaddrp->addr[3], ipaddrp->proto); if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { if ((ipaddrp->typeinfo1 & IPV4_ADDR_RESERVED) != 0) { // reserved IPv4 address has no AS DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address: %08x is reserved (skip AS lookup)", (unsigned int) ipaddrp->addr[0]); goto END_libipv6calc_db_wrapper; }; } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { if ((ipaddrp->typeinfo1 & IPV6_ADDR_RESERVED) != 0) { // reserved IPv4 address has no AS DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv6 address prefix (0-63): %08x%08x is reserved (skip AS lookup)", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); goto END_libipv6calc_db_wrapper; }; } else { ERRORPRINT_WA("unsupported proto=%d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); }; if ((ipaddr_cache_lastused_valid == 1) && (ipaddr_cache_lastused.proto == ipaddrp->proto) && (ipaddr_cache_lastused.addr[0] == ipaddrp->addr[0]) && (ipaddr_cache_lastused.addr[1] == ipaddrp->addr[1]) && (ipaddr_cache_lastused.addr[2] == ipaddrp->addr[2]) && (ipaddr_cache_lastused.addr[3] == ipaddrp->addr[3]) ) { as_num32 = as_num32_lastused; cache_hit = 1; } else { // TODO: switch mechanism depending on backend (GeoIP supports AS only by text representation) as_text = libipv6calc_db_wrapper_as_text_by_addr(ipaddrp); if ((as_text != NULL) && (strncmp(as_text, "AS", 2) == 0) && (strlen(as_text) > 2)) { // catch AS.... for (s = 0; s < (strlen(as_text) - 2); s++) { if ((as_text[s+2] == ' ') || (as_text[s+2] == '\0')) { break; } else if (isdigit(as_text[s+2])) { continue; } else { // something wrong valid = 0; break; }; }; if (s > 10) { // too many digits valid = 0; }; if (valid == 1) { snprintf(as_number_string, 11, "%s", as_text + 2); as_num32 = atol(as_number_string); }; }; // store in last used cache ipaddr_cache_lastused_valid = 1; as_num32_lastused = as_num32; ipaddr_cache_lastused = *ipaddrp; }; END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: addr=%08x%08x%08x%08x as_num32=%d (0x%08x)%s", ipaddrp->addr[0], ipaddrp->addr[1], ipaddrp->addr[2], ipaddrp->addr[3], as_num32, as_num32, (cache_hit == 1 ? " (cached)" : "")); return(as_num32); }; /* * get AS 16-bit number */ uint16_t libipv6calc_db_wrapper_as_num16_by_addr(const ipv6calc_ipaddr *ipaddrp) { uint16_t as_num16 = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x%08x%08x%08x proto=%d", ipaddrp->addr[0], ipaddrp->addr[1], ipaddrp->addr[2], ipaddrp->addr[3], ipaddrp->proto); // get 32-bit ASN uint32_t as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(ipaddrp); as_num16 = (uint16_t) (as_num32 < 65536 ? as_num32 : ASNUM_AS_TRANS); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: %d (0x%04x)", as_num16, as_num16); // return 16-bit ASN or AS_TRANS in case of > 16-bit return(as_num16); }; /* * compress AS 32-bit number to 17 bit */ uint32_t libipv6calc_db_wrapper_as_num32_comp17(const uint32_t as_num32) {; uint32_t as_num32_comp17 = 0; uint32_t as_num32_comp17_reg = 0; uint32_t as_num32_comp17_asn = 0; if (as_num32 <= 0xffff) { as_num32_comp17 = as_num32; } else { if ((as_num32 & 0x00070000) == (as_num32 & 0xfff70000)) { // 3 of 16 MSB bits active (which are at least in 2013 maped 1:1 to related registry) as_num32_comp17_reg = (as_num32 & 0x0007000) >> 3; } else { // map to unknown registry as_num32_comp17_reg = 0; }; if ((as_num32 & 0x0fff) == (as_num32 & 0xffff)) { // only 12 of 16 LSB bits active as_num32_comp17_asn = as_num32 & 0x0fff; } else { // more than 12 bits are in use, unspecified result, but keeping registry and set special flag as_num32_comp17_asn = 0x1000; }; // fill compressed value and set flag as_num32_comp17 = as_num32_comp17_reg | as_num32_comp17_asn | 0x00010000; }; return(as_num32_comp17); }; /* * Decompress AS 32-bit number from 17 bit */ uint32_t libipv6calc_db_wrapper_as_num32_decomp17(const uint32_t as_num32_comp17) {; uint32_t as_num32 = ASNUM_AS_UNKNOWN; if ((as_num32_comp17 & 0x00010000) == 0x00000000) { as_num32 = as_num32_comp17; } else { if ((as_num32_comp17 & 0xe000) == 0x0000) { as_num32 = ASNUM_AS_UNKNOWN; } else { as_num32 |= (as_num32_comp17 & 0xe000) << 3; if ((as_num32_comp17 & 0x1000) == 0x1000) { // keep only ASN registry } else { as_num32 |= (as_num32_comp17 & 0x0fff); }; }; }; return(as_num32); }; /* * Get IEEE vendor string * in: macaddrp * mod: resultstring * out: 0=found, 1=not found */ int libipv6calc_db_wrapper_ieee_vendor_string_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp) { int retval = 1; #ifdef SUPPORT_BUILTIN retval = libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_by_macaddr(resultstring, resultstring_length, macaddrp); #endif return (retval); }; /* * Get short IEEE vendor string * in: macaddrp * mod: resultstring * out: 0=found, 1=not found */ int libipv6calc_db_wrapper_ieee_vendor_string_short_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp) { int retval = 1; #ifdef SUPPORT_BUILTIN retval = libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_short_by_macaddr(resultstring, resultstring_length, macaddrp); #endif return (retval); }; /******************************************** * IPv4/IPv6 -> Registry lookup ********************************************/ /* * Get reserved IPv4 address information as string * ret: NULL: not reserved, !=NULL: pointer to string */ static const char *libipv6calc_db_wrapper_reserved_string_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp) { const char *info = NULL; uint32_t ipv4 = ipv4addr_getdword(ipv4addrp); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address: %08x", (unsigned int) ipv4); // see also: https://en.wikipedia.org/wiki/Reserved_IP_addresses if ((ipv4 & 0xff000000u) == 0x00000000u) { // 0.0.0.0/8 (RFC 1122) info = "reserved(RFC1122#3.2.1.3)"; } else if ((ipv4 & 0xff000000u) == 0x0a000000u) { // 10.0.0.0/8 (RFC 1918) info = "reserved(RFC1918#3)"; } else if ((ipv4 & 0xffc00000u) == 0x64400000u) { // 100.64.0.0/10 (RFC 6598) info = "reserved(RFC6598)"; } else if ((ipv4 & 0xff000000u) == 0x7f000000u) { // 127.0.0.0/8 (RFC 1122) info = "reserved(RFC1122#3.2.1.3)"; } else if ((ipv4 & 0xffff0000u) == 0xa9fe0000u) { // 169.254.0.0/16 (RFC 1918) info = "reserved(RFC3927#1)"; } else if ((ipv4 & 0xfff00000u) == 0xac100000u) { // 172.16.0.0/12 (RFC 1918) info = "reserved(RFC1918#3)"; } else if ((ipv4 & 0xffff0000u) == 0xc0a80000u) { // 192.168.0.0/16 (RFC 1918) info = "reserved(RFC1918#3)"; } else if ((ipv4 & 0xffffff00u) == 0xc0000000u) { // 192.0.0.0/24 (RFC 5736) info = "reserved(RFC5736#1)"; } else if ((ipv4 & 0xffffff00u) == 0xc0000200u) { // 192.0.2.0/24 (RFC 3330) info = "reserved(RFC5737#1)"; } else if ((ipv4 & 0xffffff00u) == 0xc0586300u) { // 192.88.99.0/24 (RFC 3068) info = "reserved(RFC3068#2.3)"; } else if ((ipv4 & 0xfffe0000u) == 0xc6120000u) { // 198.18.0.0/15 (RFC 2544) info = "reserved(RFC2544#C.2.2)"; } else if ((ipv4 & 0xffffff00u) == 0xc6336400u) { // 198.51.100.0/24 (RFC 5737) info = "reserved(RFC5737#3)"; } else if ((ipv4 & 0xffffff00u) == 0xcb007100u) { // 203.0.113.0/24 (RFC 5737) info = "reserved(RFC5737#3)"; } else if ((ipv4 & 0xf0000000u) == 0xe0000000u) { // 224.0.0.0/4 (RFC 3171) info = "reserved(RFC3171#2)"; } else if ((ipv4 & 0xffffffffu) == 0xffffffffu) { // 255.255.255.255/32 info = "reserved(RFC919#7)"; } else if ((ipv4 & 0xf0000000u) == 0xf0000000u) { // 240.0.0.0/4 (RFC 1112) info = "reserved(RFC1112#4)"; }; if (info == NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address is not reserved: %08x", (unsigned int) ipv4); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv4 address is reserved: %08x (%s)", (unsigned int) ipv4, info); }; return(info); }; /* * Get reserved IPv6 address information as string * ret: NULL: not reserved, !=NULL: pointer to string */ static const char *libipv6calc_db_wrapper_reserved_string_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp) { const char *info = NULL; uint32_t ipv6_00_31 = ipv6addr_getdword(ipv6addrp, 0); uint32_t ipv6_32_63 = ipv6addr_getdword(ipv6addrp, 1); uint32_t ipv6_64_95 = ipv6addr_getdword(ipv6addrp, 2); uint32_t ipv6_96_127 = ipv6addr_getdword(ipv6addrp, 3); uint16_t ipv6_00_15 = ipv6addr_getword(ipv6addrp, 0); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x%08x%08x%08x" , (unsigned int) ipv6_00_31 , (unsigned int) ipv6_32_63 , (unsigned int) ipv6_64_95 , (unsigned int) ipv6_96_127 ); // see also: https://en.wikipedia.org/wiki/Reserved_IP_addresses // if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0) && (ipv6_96_127 == 0)) { // :: (RFC 4291) info = "reserved(RFC4291#2.5.2)"; } else if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0) && (ipv6_96_127 == 1)) { // ::1 (RFC 4291) info = "reserved(RFC4291#2.5.3)"; } else if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0)) { // ::x.x.x.x (RFC 4291) info = "reserved(RFC4291#2.5.5.1)"; } else if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0x0000ffff)) { // ::ffff:x.x.x.x (RFC 4291) info = "reserved(RFC4291#2.5.5.2)"; } else if ((ipv6_00_31 == 0x01000000) && (ipv6_32_63 == 0)) { // 0100::0/64 (RFC 6666) info = "reserved(RFC6666)"; } else if (ipv6_00_31 == 0x20010000) { // 2001:0000::/32 (RFC 4380) info = "reserved(RFC4380#6)"; } else if ((ipv6_00_31 & 0xfffffff0) == 0x20010010) { // 2001:0010::/28 (RFC 4843) info = "reserved(RFC4843#2)"; } else if (ipv6_00_31 == 0x20010db8) { // 2001:0db8::/32 (RFC 3849) info = "reserved(RFC3849#4)"; } else if ((ipv6_00_15 & 0xffff) == 0x2002) { // 2002::/16 (RFC 3056) info = "reserved(RFC3056#2)"; } else if ((ipv6_00_15 & 0xfe00) == 0xfc00) { // fc00::/7 (RFC 4193) info = "reserved(RFC4193#3.1)"; } else if ((ipv6_00_15 & 0xffe0) == 0xfe80) { // fe80::/10 (RFC 4291) info = "reserved(RFC4291#2.5.6)"; } else if ((ipv6_00_15 & 0xffe0) == 0xfec0) { // fec0::/10 (RFC 4291) info = "reserved(RFC4291#2.5.7)"; } else if ((ipv6_00_15 & 0xff00) == 0xff00) { // ffxx::/8 (RFC 4291) info = "reserved(RFC4291#2.7)"; }; if (info == NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv6 address is not reserved: %08x%08x%08x%08x", (unsigned int) ipv6_00_31, (unsigned int) ipv6_32_63, (unsigned int) ipv6_64_95, (unsigned int) ipv6_96_127); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Given IPv6 address is reserved: %08x%08x%08x%08x (%s)", (unsigned int) ipv6_00_31, (unsigned int) ipv6_32_63, (unsigned int) ipv6_64_95, (unsigned int) ipv6_96_127, info); }; return(info); }; /* * get registry string of an IPv4 address * * in: ipv4addr = IPv4 address structure * out: *resultstring = Registry string * ret: 0: ok, 1: unknown, 2: reserved */ int libipv6calc_db_wrapper_registry_string_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length) { int retval = 1; int registry; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); const char *info = libipv6calc_db_wrapper_reserved_string_by_ipv4addr(ipv4addrp); if (info != NULL) { // is reserved snprintf(resultstring, resultstring_length, "%s", info); retval = 2; } else { registry = libipv6calc_db_wrapper_registry_num_by_ipv4addr(ipv4addrp); snprintf(resultstring, resultstring_length, "%s", libipv6calc_registry_string_by_num(registry)); if (registry != REGISTRY_UNKNOWN) { retval = 0; } else { retval = 1; }; }; return (retval); }; /* * get registry number of an IPv4 address * * in: ipv4addr = IPv4 address structure * out: registry number */ int libipv6calc_db_wrapper_registry_num_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp) { int retval = REGISTRY_UNKNOWN, p, f; int cache_hit = 0; static ipv6calc_ipv4addr cache_lu_ipv4addr; static uint32_t cache_lu_ipv4addr_registry_num; static int cache_lu_ipv4addr_valid = 0; #if defined SUPPORT_EXTERNAL ipv6calc_ipaddr ipaddr; #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x", ipv4addr_getdword(ipv4addrp)); if ((cache_lu_ipv4addr_valid == 1) && (memcmp(&cache_lu_ipv4addr.in_addr, &ipv4addrp->in_addr, sizeof(struct in_addr)) == 0) ) { retval= cache_lu_ipv4addr_registry_num; cache_hit = 1; goto END_libipv6calc_db_wrapper_cached; }; const char *info = libipv6calc_db_wrapper_reserved_string_by_ipv4addr(ipv4addrp); if (info != NULL) { retval = REGISTRY_RESERVED; goto END_libipv6calc_db_wrapper; }; f = IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGISTRY; // run through priorities for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { switch(wrapper_features_selector[f][p]) { case 0: // last goto END_libipv6calc_db_wrapper; // ok break; case IPV6CALC_DB_SOURCE_BUILTIN: if (wrapper_BuiltIn_status == 1) { #ifdef SUPPORT_BUILTIN DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now BuiltIn"); retval = libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv4addr(ipv4addrp); #endif }; break; case IPV6CALC_DB_SOURCE_EXTERNAL: if (wrapper_External_status == 1) { #ifdef SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now External"); CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr); retval = libipv6calc_db_wrapper_External_registry_num_by_addr(&ipaddr); #endif }; break; default: goto END_libipv6calc_db_wrapper; // dummy goto in case no db is enabled break; }; }; END_libipv6calc_db_wrapper: // store in last used cache cache_lu_ipv4addr_valid = 1; cache_lu_ipv4addr_registry_num = retval; cache_lu_ipv4addr.in_addr = ipv4addrp->in_addr; END_libipv6calc_db_wrapper_cached: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: addr=%08x reg=%d%s" , ipv4addr_getdword(ipv4addrp) , retval , (cache_hit == 1 ? " (cached)" : "") ); return (retval); }; /* * get registry string of an IPv6 address * * in: ipv6addr = IPv6 address structure * out: *resultstring = Registry string * ret: 0: ok, 1: unknown, 2: reserved */ int libipv6calc_db_wrapper_registry_string_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length) { int retval = 1; int registry; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Called"); const char *info = libipv6calc_db_wrapper_reserved_string_by_ipv6addr(ipv6addrp); if (info != NULL) { // is reserved snprintf(resultstring, resultstring_length, "%s", info); retval = 2; } else { registry = libipv6calc_db_wrapper_registry_num_by_ipv6addr(ipv6addrp); snprintf(resultstring, resultstring_length, "%s", libipv6calc_registry_string_by_num(registry)); if (registry != REGISTRY_UNKNOWN) { retval = 0; } else { retval = 1; }; }; return (retval); }; /* * get registry number of an IPv6 address * * in: ipv6addr = IPv6 address structure * out: assignment number (-1 = no result) */ int libipv6calc_db_wrapper_registry_num_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp) { int retval = REGISTRY_UNKNOWN, p, f; int cache_hit = 0; static ipv6calc_ipv6addr cache_lu_ipv6addr; static uint32_t cache_lu_ipv6addr_registry_num; static int cache_lu_ipv6addr_valid = 0; #if defined SUPPORT_EXTERNAL ipv6calc_ipaddr ipaddr; #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x%08x%08x%08x", ipv6addr_getdword(ipv6addrp, 0), ipv6addr_getdword(ipv6addrp, 1), ipv6addr_getdword(ipv6addrp, 2), ipv6addr_getdword(ipv6addrp, 3)); if ((cache_lu_ipv6addr_valid == 1) && (memcmp(&cache_lu_ipv6addr.in6_addr, &ipv6addrp->in6_addr, sizeof(struct in6_addr)) == 0) ) { retval= cache_lu_ipv6addr_registry_num; cache_hit = 1; goto END_libipv6calc_db_wrapper_cached; }; const char *info = libipv6calc_db_wrapper_reserved_string_by_ipv6addr(ipv6addrp); if (info != NULL) { retval = REGISTRY_RESERVED; goto END_libipv6calc_db_wrapper; }; if (ipv6addr_getword(ipv6addrp, 0) == 0x3ffe) { // special handling of 6BONE retval = REGISTRY_6BONE; goto END_libipv6calc_db_wrapper; }; f = IPV6CALC_DB_FEATURE_NUM_IPV6_TO_REGISTRY; // run through priorities for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { switch(wrapper_features_selector[f][p]) { case 0: // last goto END_libipv6calc_db_wrapper; // ok break; case IPV6CALC_DB_SOURCE_BUILTIN: if (wrapper_BuiltIn_status == 1) { #ifdef SUPPORT_BUILTIN DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now BuiltIn"); retval = libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv6addr(ipv6addrp); #endif }; break; case IPV6CALC_DB_SOURCE_EXTERNAL: if (wrapper_External_status == 1) { #ifdef SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now External"); CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); retval = libipv6calc_db_wrapper_External_registry_num_by_addr(&ipaddr); #endif }; break; default: goto END_libipv6calc_db_wrapper; // dummy goto in case no db is enabled break; }; }; END_libipv6calc_db_wrapper: // store in last used cache cache_lu_ipv6addr_valid = 1; cache_lu_ipv6addr_registry_num = retval; cache_lu_ipv6addr.in6_addr = ipv6addrp->in6_addr; END_libipv6calc_db_wrapper_cached: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Result: addr=%08x%08x%08x%08x reg=%d%s" , ipv6addr_getdword(ipv6addrp, 0) , ipv6addr_getdword(ipv6addrp, 1) , ipv6addr_getdword(ipv6addrp, 2) , ipv6addr_getdword(ipv6addrp, 3) , retval , (cache_hit == 1 ? " (cached)" : "") ); return (retval); }; /* * get info string of an IPv4 address * * in: ipv4addr = IPv4 address structure * out: *resultstring = Registry string * ret: 0: ok */ int libipv6calc_db_wrapper_info_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *string, const size_t string_len) { int retval = 1, f, p; #if defined SUPPORT_EXTERNAL ipv6calc_ipaddr ipaddr; #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x", ipv4addr_getdword(ipv4addrp)); f = IPV6CALC_DB_FEATURE_NUM_IPV4_TO_INFO; // run through priorities for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { switch(wrapper_features_selector[f][p]) { case 0: // last goto END_libipv6calc_db_wrapper; // ok break; case IPV6CALC_DB_SOURCE_BUILTIN: if (wrapper_BuiltIn_status == 1) { #ifdef SUPPORT_BUILTIN DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now BuiltIn"); retval = libipv6calc_db_wrapper_BuiltIn_info_by_ipv4addr(ipv4addrp, string, string_len); #endif }; break; case IPV6CALC_DB_SOURCE_EXTERNAL: if (wrapper_External_status == 1) { #ifdef SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now External"); CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr); retval = libipv6calc_db_wrapper_External_info_by_ipaddr(&ipaddr, string, string_len); #endif }; break; default: goto END_libipv6calc_db_wrapper; // dummy goto in case no db is enabled break; }; }; END_libipv6calc_db_wrapper: return (retval); }; /* * get info string of an IPv6 address * * in: ipv6addr = IPv6 address structure * out: *resultstring = Registry string * ret: 0: ok */ int libipv6calc_db_wrapper_info_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *string, const size_t string_len) { int retval = 1, p, f; #if defined SUPPORT_EXTERNAL ipv6calc_ipaddr ipaddr; #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: addr=%08x%08x%08x%08x", ipv6addr_getdword(ipv6addrp, 0), ipv6addr_getdword(ipv6addrp, 1), ipv6addr_getdword(ipv6addrp, 2), ipv6addr_getdword(ipv6addrp, 3)); f = IPV6CALC_DB_FEATURE_NUM_IPV6_TO_INFO; // run through priorities for (p = 0; p < IPV6CALC_DB_PRIO_MAX; p++) { switch(wrapper_features_selector[f][p]) { case 0: // last goto END_libipv6calc_db_wrapper; // ok break; case IPV6CALC_DB_SOURCE_BUILTIN: if (wrapper_BuiltIn_status == 1) { #ifdef SUPPORT_BUILTIN DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now BuiltIn"); retval = libipv6calc_db_wrapper_BuiltIn_info_by_ipv6addr(ipv6addrp, string, string_len); #endif }; break; case IPV6CALC_DB_SOURCE_EXTERNAL: if (wrapper_External_status == 1) { #ifdef SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Call now External"); CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); retval = libipv6calc_db_wrapper_External_info_by_ipaddr(&ipaddr, string, string_len); #endif }; break; default: goto END_libipv6calc_db_wrapper; // dummy goto in case no db is enabled break; }; }; END_libipv6calc_db_wrapper: return (retval); }; #ifdef HAVE_BERKELEY_DB_SUPPORT /******************************************** * some generic Berkeley DB helper functions ********************************************/ /* * get value of token from Berkeley DB * in : DB pointer, token, max length of value * out: value * ret: 0=ok -1=error */ int libipv6calc_db_wrapper_bdb_get_data_by_key(DB *dbp, char *token, char *value, const size_t value_size) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called: dbp=%p token=%s", dbp, token); DBT key, data; int ret; memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); key.data = token; key.size = strlen(token); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "try to get key.data=%p key.size=%d", key.data, key.size); if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) != 0) { dbp->err(dbp, ret, "DB->get token=%s", token); return(-1); }; snprintf(value, (data.size + 1) >= value_size ? value_size : data.size + 1, "%s", (char *) data.data); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Return: dbp=%p token=%s value=%s", dbp, token, value); return(0); }; /* * generic fetch of a Berkeley DB row */ int libipv6calc_db_wrapper_bdb_fetch_row( DB *db_ptr, // pointer to DB const uint8_t db_format, // DB format const long int row, // row number uint32_t *data_1_00_31_ptr, // data 1 (MSB in case of 64 bits) uint32_t *data_1_32_63_ptr, // data 1 (LSB in case of 64 bits) uint32_t *data_2_00_31_ptr, // data 2 (MSB in case of 64 bits) uint32_t *data_2_32_63_ptr, // data 2 (LSB in case of 64 bits) void *data_ptr // pointer to data ) { int retval = -1; const char *db_format_row[] = { "%u;%u;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x2 "%u;%u;%u;%u;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x4 "%x;%x;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 "%x;%x;%x;%x;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4 "%x;%x;%d;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x2 "%x;%x;%x;%x;%d;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x4 "0x%x;0x%x;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_PREF_32x2 "0x%x;0x%x;0x%x;0x%x;%[^%]", // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_PREF_32x4 }; const int db_format_values[] = { 3, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x2 5, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x4 3, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 5, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4 4, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x2 6, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x4 3, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_PREF_32x2 5, // IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_PREF_32x4 }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called db_ptr=%p, data_ptr=%p", db_ptr, data_ptr); if (MAXENTRIES_ARRAY(db_format_row) != MAXENTRIES_ARRAY(db_format_values)) { ERRORPRINT_NA("inconsistent array definition (FIX CODE)"); exit(EXIT_FAILURE); }; if (db_format >= MAXENTRIES_ARRAY(db_format_row)) { ERRORPRINT_WA("unsupported db_format (FIX CODE): %u", db_format); exit(EXIT_FAILURE); }; char datastring[NI_MAXHOST]; DBT key, data; db_recno_t recno = row; memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); key.data = &recno; key.size = sizeof(recno); int ret, value; // DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Try to get row"); ret = db_ptr->get(db_ptr, NULL, &key, &data, 0); // DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "get executed"); if (ret != 0) { db_ptr->err(db_ptr, ret, "DB->get"); goto END_libipv6calc_db_wrapper_bdb_fetch_row; }; // DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Got row"); snprintf(datastring, (data.size + 1) >= sizeof(datastring) ? sizeof(datastring) : data.size + 1, "%s", (char *) data.data); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "start parsing database row %u: %s (size=%d) data_ptr=%p values=%u format=%s", recno, datastring, data.size, data_ptr, db_format_values[db_format], db_format_row[db_format]); if (db_format_values[db_format] == 3) { ret = sscanf(datastring, db_format_row[db_format], data_1_00_31_ptr, data_2_00_31_ptr, (char *) data_ptr); *data_1_32_63_ptr = 0; *data_2_32_63_ptr = 0; } else if (db_format_values[db_format] == 4) { ret = sscanf(datastring, db_format_row[db_format], data_1_00_31_ptr, data_2_00_31_ptr, &value, (char *) data_ptr); *data_1_32_63_ptr = 0; *data_2_32_63_ptr = 0; } else if (db_format_values[db_format] == 5) { ret = sscanf(datastring, db_format_row[db_format], data_1_00_31_ptr, data_1_32_63_ptr, data_2_00_31_ptr, data_2_32_63_ptr, (char *) data_ptr); } else if (db_format_values[db_format] == 6) { ret = sscanf(datastring, db_format_row[db_format], data_1_00_31_ptr, data_1_32_63_ptr, data_2_00_31_ptr, data_2_32_63_ptr, &value, (char *) data_ptr); } else { ERRORPRINT_WA("unsupported db_format_values (FIX CODE): %u", db_format_values[db_format]); exit(EXIT_FAILURE); }; if (ret != db_format_values[db_format]) { ERRORPRINT_WA("row parsing error, corrupted database: %s (ret=%d format=%s expectedvalues=%d)", datastring, ret, db_format_row[db_format], db_format_values[db_format]); goto END_libipv6calc_db_wrapper_bdb_fetch_row; }; if ((db_format == IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x4) \ || (db_format == IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x4)) { retval = value; // for Longest Match } else { retval = 0; // ok }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "database row %lu parsed: data_1_00_31=%08x data_1_32_63=%08x data_2_00_31=%08x data_2_32_63=%08x value=%s)", row, *data_1_00_31_ptr, *data_1_32_63_ptr, *data_2_00_31_ptr, *data_2_32_63_ptr, (char *) data_ptr); END_libipv6calc_db_wrapper_bdb_fetch_row: return(retval); }; #endif // HAVE_BERKELEY_DB_SUPPORT /* * generic internal/external database lookup function * return: -1 : no lookup result * >= 0: matching row */ long int libipv6calc_db_wrapper_get_entry_generic( void *db_ptr, // pointer to database in case of IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, otherwise NULL const uint8_t data_ptr_type, // type of data_ptr const uint8_t data_key_type, // key type const uint8_t data_key_format, // key format const uint8_t data_key_length, // key length const uint8_t data_search_type, // search type const uint32_t data_num_rows, // number of rows const uint32_t lookup_key_00_31, // lookup key MSB const uint32_t lookup_key_32_63, // lookup key LSB void *data_ptr, // pointer to DB data in case of IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, otherwise NULL int (*get_array_row)() // function to get array row ) { int retval = -1; uint32_t value_first_00_31 = 0, value_last_00_31 = 0; uint32_t value_first_32_63 = 0, value_last_32_63 = 0; #ifdef HAVE_BERKELEY_DB_SUPPORT DB *dbp = NULL; #endif // HAVE_BERKELEY_DB_SUPPORT DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Called with data_ptr_type=%u data_key_type=%u data_key_format=%u, data_key_length=%u data_num_rows=%u lookup_key_00_31=%08lx lookup_key_32_63=%08lx db_ptr=%p, data_ptr=%p", data_ptr_type, data_key_type, data_key_format, data_key_length, data_num_rows, (long unsigned int) lookup_key_00_31, (long unsigned int) lookup_key_32_63, db_ptr, data_ptr ); if (data_num_rows < 1) { ERRORPRINT_WA("unsupported data_key_num_rows (FIX CODE): %u", data_num_rows); exit(EXIT_FAILURE); }; if (data_num_rows > INT32_MAX) { ERRORPRINT_WA("unsupported data_key_num_rows (FIX CODE): %u", data_num_rows); exit(EXIT_FAILURE); }; /* check data_ptr_type */ switch(data_ptr_type) { case IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY: if (get_array_row == NULL) { ERRORPRINT_NA("get_array_row function is unexpected NULL (FIX CODE)"); exit(EXIT_FAILURE); }; if (data_ptr != NULL) { ERRORPRINT_NA("data_ptr is unexpected NOT NULL - not supported on IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY (FIX CODE)"); exit(EXIT_FAILURE); }; break; #ifdef HAVE_BERKELEY_DB_SUPPORT case IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB: if (get_array_row != NULL) { ERRORPRINT_NA("get_array_row function is unexpected NOT NULL (FIX CODE)"); exit(EXIT_FAILURE); }; if (data_ptr == NULL) { ERRORPRINT_NA("data_ptr is unexpected NULL - not supported on IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB (FIX CODE)"); exit(EXIT_FAILURE); }; // supported dbp = (DB *) db_ptr; // map db_ptr to DB ptr break; #endif // HAVE_BERKELEY_DB_SUPPORT default: ERRORPRINT_WA("unsupported data_ptr_type (FIX CODE): %u", data_ptr_type); exit(EXIT_FAILURE); break; }; /* check data_key_length */ switch(data_key_length) { case 32: case 64: // supported break; default: ERRORPRINT_WA("unsupported data_key_length (FIX CODE): %d", data_key_length); exit(EXIT_FAILURE); }; /* check data search type */ switch(data_search_type) { case IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY: case IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST: // supported break; default: ERRORPRINT_WA("unsupported data_search_type (FIX CODE): %d", data_search_type); exit(EXIT_FAILURE); }; /* check data_key_type */ switch(data_key_type) { case IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST: case IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK: // supported break; default: ERRORPRINT_WA("unsupported data_key_type (FIX CODE): %u", data_key_type); exit(EXIT_FAILURE); }; long int i = -1; long int match = -1; int seqlongest = -1; long int i_min, i_max, i_old, i_old2; int search_binary_count = 0; int search_binary_count_max = (int) uint64_log2(data_num_rows) + 1; int ret = -1; i_min = 0; i_max = data_num_rows - 1; i_old = -1; i_old2 = -1; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data i = i_max / 2; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Start binary search over entries: data_num_rows=%u", data_num_rows); } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data i_old = i_max; i = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Start sequential search over entries: data_num_rows=%u", data_num_rows); }; while (i_old != i) { if ((i >= (int32_t) data_num_rows) || (i < 0)) { ERRORPRINT_WA("i out of range (FIX CODE): i=%ld data_num_rows=%u", i, data_num_rows); exit(EXIT_FAILURE); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Analyze entry i=%ld", i); if (data_ptr_type == IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) { ret = get_array_row(i, &value_first_00_31, &value_first_32_63, &value_last_00_31, &value_last_32_63); if (ret < 0) { ERRORPRINT_WA("can't retrieve keys from array for row: %lu", i); exit(EXIT_FAILURE); }; #ifdef HAVE_BERKELEY_DB_SUPPORT } else if (data_ptr_type == IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Try to get row from Berkeley DB dbp=%p row=%ld", dbp, i + 1); ret = libipv6calc_db_wrapper_bdb_fetch_row( dbp, // pointer to DB data_key_format, // DB format (long unsigned int) i + 1, // row number (BDB starts always with 1, so add offset) &value_first_00_31, // data 1 (MSB in case of 64 bits) &value_first_32_63, // data 1 (LSB in case of 64 bits) &value_last_00_31, // data 2 (MSB in case of 64 bits) &value_last_32_63, // data 2 (LSB in case of 64 bits) data_ptr // pointer to data ); if (ret < 0) { ERRORPRINT_WA("can't retrieve keys from data for row: %ld", i); exit(EXIT_FAILURE); }; #endif // HAVE_BERKELEY_DB_SUPPORT }; if (data_key_length == 32) { if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Test %08x range %08x - %08x i=%ld i_min=%ld i_max=%ld", (unsigned int) lookup_key_00_31, (unsigned int) value_first_00_31, (unsigned int) value_last_00_31, i, i_min, i_max); } else if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Test %08x base/mask %08x/%08x i=%ld i_min=%ld i_max=%ld", (unsigned int) lookup_key_00_31, (unsigned int) value_first_00_31, (unsigned int) value_last_00_31, i, i_min, i_max); }; } else if (data_key_length == 64) { if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Test %08x:%08x range %08x:%08x - %08x:%08x i=%ld i_min=%ld i_max=%ld", (unsigned int) lookup_key_00_31, (unsigned int) lookup_key_32_63, (unsigned int) value_first_00_31, (unsigned int) value_first_32_63, (unsigned int) value_last_00_31, (unsigned int) value_last_32_63, i, i_min, i_max); } else if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Test %08x:%08x base/mask %08x:%08x/%08x:%08x i=%ld i_min=%ld i_max=%ld", (unsigned int) lookup_key_00_31, (unsigned int) lookup_key_32_63, (unsigned int) value_first_00_31, (unsigned int) value_first_32_63, (unsigned int) value_last_00_31, (unsigned int) value_last_32_63, i, i_min, i_max); }; }; if (data_key_length == 32) { if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST) { if (lookup_key_00_31 < value_first_00_31) { // to high in array, jump down DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to high in array, jump down"); i_max = i; } else if (lookup_key_00_31 > value_last_00_31) { // to low in array, jump up DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to low in array, jump up"); i_min = i; } else { // hit match = i; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "matching"); break; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data if (ret > seqlongest) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, seqlongest old=%d new=%d", seqlongest, ret); seqlongest = ret; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, keep seqlongest=%d", seqlongest); }; }; }; } else if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK) { if ((lookup_key_00_31 & value_last_00_31) < value_first_00_31) { // to high in array, jump down DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to high in array, jump down"); i_max = i; } else if ((lookup_key_00_31 & value_last_00_31) > value_first_00_31) { // to low in array, jump up DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to low in array, jump up"); i_min = i; } else { // hit match = i; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data break; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data if (ret > seqlongest) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, seqlongest old=%d new=%d", seqlongest, ret); seqlongest = ret; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, keep seqlongest=%d", seqlongest); }; }; }; }; } else if (data_key_length == 64) { if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST) { if (lookup_key_00_31 < value_first_00_31) { if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { /* to high in array, jump down */ DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to high in array, jump down"); i_max = i; }; } else if (lookup_key_00_31 > value_last_00_31) { if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // to low in array, jump up DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to low in array, jump up"); i_min = i; }; } else if ((lookup_key_00_31 == value_first_00_31) && (lookup_key_32_63 < value_first_32_63)) { if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { /* to high in array, jump down */ DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to high in array, jump down"); i_max = i; }; } else if ((lookup_key_00_31 == value_last_00_31) && (lookup_key_32_63 > value_last_32_63)) { if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // to low in array, jump up DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to low in array, jump up"); i_min = i; }; } else { // hit match = i; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data break; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data if (ret > seqlongest) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, seqlongest old=%d new=%d", seqlongest, ret); seqlongest = ret; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, keep seqlongest=%d", seqlongest); }; }; }; } else if (data_key_type == IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK) { if ((lookup_key_00_31 & value_last_00_31) < value_first_00_31) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "(lookup_key_00_31 & value_last_00_31) < value_first_00_31"); if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { /* to high in array, jump down */ DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to high in array, jump down"); i_max = i; }; } else if ((lookup_key_00_31 & value_last_00_31) > value_first_00_31) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "(lookup_key_00_31 & value_last_00_31) > value_first_00_31"); if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // to low in array, jump up DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to low in array, jump up"); i_min = i; }; } else if (((lookup_key_00_31 & value_last_00_31) == value_first_00_31) && ((lookup_key_32_63 & value_last_32_63) < value_first_32_63)) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "(lookup_key_32_63 & value_last_32_63) < value_first_32_63"); if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { /* to high in array, jump down */ DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to high in array, jump down"); i_max = i; }; } else if (((lookup_key_00_31 & value_last_00_31) == value_first_00_31) && ((lookup_key_32_63 & value_last_32_63) > value_first_32_63)) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "(lookup_key_32_63 & value_last_32_63) > value_first_32_63"); if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // to low in array, jump up DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "to low in array, jump up"); i_min = i; }; } else { // hit match = i; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data break; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data if (ret > seqlongest) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, seqlongest old=%d new=%d", seqlongest, ret); seqlongest = ret; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "matching, keep seqlongest=%d", seqlongest); }; }; }; }; }; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data i_old2 = i_old; i_old = i; i = (i_max - i_min) / 2 + i_min; search_binary_count++; // jump to last entry in special way if needed, otherwise it's not reachable if ((i == i_old) && ((i + 1) == ((int32_t) data_num_rows - 1))) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "workaround for last entry activated"); i = i_max; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "count=%d/%d i_old2=%ld i_old=%ld i_min=%ld i_max=%ld i=%ld", search_binary_count, search_binary_count_max, i_old2, i_old, i_min, i_max, i); if (i_old2 == i) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "loop in binary search detected, no match found"); break; }; if (search_binary_count > search_binary_count_max) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "limit of binary search reached, no match found"); break; }; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data i++; }; }; if (match != -1) { retval = match; if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Entry matched: %ld", i); if (data_ptr_type == IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) { // currently nothing to do #ifdef HAVE_BERKELEY_DB_SUPPORT } else if (data_ptr_type == IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB) { // currently nothing to do #endif // HAVE_BERKELEY_DB_SUPPORT }; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Finally entry matched: %ld", match); if (data_ptr_type == IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) { // currently nothing to do #ifdef HAVE_BERKELEY_DB_SUPPORT } else if (data_ptr_type == IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB) { // fetch matching row DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Try to get row from Berkeley DB dbp=%p recno=%ld", dbp, match); ret = libipv6calc_db_wrapper_bdb_fetch_row( dbp, // pointer to DB data_key_format, // DB format match + 1, // row number &value_first_00_31, // data 1 (MSB in case of 64 bits) &value_first_32_63, // data 1 (LSB in case of 64 bits) &value_last_00_31, // data 2 (MSB in case of 64 bits) &value_last_32_63, // data 2 (LSB in case of 64 bits) data_ptr // pointer to data ); if (ret < 0) { ERRORPRINT_WA("can't retrieve keys from data for row: %lu", match); exit(EXIT_FAILURE); }; #endif // HAVE_BERKELEY_DB_SUPPORT }; }; if (data_ptr != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Finished with success result (DB): match=%ld", match); }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "Finished with NO SUCCESS result (DB)"); }; //END_libipv6calc_db_wrapper_get_entry_generic: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Return: %d", retval); return(retval); }; /*********** generic function **********************/ uint16_t libipv6calc_db_cc_to_index(const char *cc_text) { uint16_t index = COUNTRYCODE_INDEX_UNKNOWN; uint8_t c1, c2; if (cc_text == NULL) { ERRORPRINT_NA("input is NULL"); goto END_libipv6calc_db_cc_to_index; // something wrong }; if (strlen(cc_text) != 2) { ERRORPRINT_WA("input is not string with length 2: %s", cc_text); goto END_libipv6calc_db_cc_to_index; // something wrong }; if ((! isalpha(cc_text[0])) || (! isalnum(cc_text[1]))) { ERRORPRINT_WA("input is not valid country code: %s", cc_text); goto END_libipv6calc_db_cc_to_index; // something wrong }; c1 = toupper(cc_text[0]); if (! (c1 >= 'A' && c1 <= 'Z')) { ERRORPRINT_WA("input char 1 is not part of a valid country code: %s", cc_text); goto END_libipv6calc_db_cc_to_index; // something wrong }; c1 -= 'A'; c2 = toupper(cc_text[1]); if (c2 >= '0' && c2 <= '9') { c2 -= '0'; } else if (c2 >= 'A' && c2 <= 'Z') { c2 -= 'A'; c2 += 10; } else { ERRORPRINT_WA("input char 2 is not part of a valid country code: %s", cc_text); goto END_libipv6calc_db_cc_to_index; // something wrong }; index = c1 + c2 * COUNTRYCODE_LETTER1_MAX; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "c1=%d c2=%d index=%d (0x%03x) -> test: %c%c", c1, c2, index, index, COUNTRYCODE_INDEX_TO_CHAR1(index), COUNTRYCODE_INDEX_TO_CHAR2(index)); if (index >= COUNTRYCODE_INDEX_MAX) { index = COUNTRYCODE_INDEX_UNKNOWN; // failsafe ERRORPRINT_WA("unexpected index (too high): %d", index); }; END_libipv6calc_db_cc_to_index: return(index); }; /***********************************************************/ /*********** filter based on database **********************/ /***********************************************************/ /*********** DB CC **********************/ /* * parse filter DB CC * * in : *filter = filter structure * ret: 0:found 1:skip 2:problem */ int libipv6calc_db_cc_filter_parse(s_ipv6calc_filter_db_cc *filter, const char *token, const int negate_flag) { int result = 1, negate = negate_flag, offset = 0; const char *filter_token = "cc="; const char *prefixdot = "db."; uint16_t cc_index; if (token == NULL) { return (result); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "input: %s", token); if (token[0] == '^') { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "found negate prefix in token: %s", token); negate = 1; offset += 1; }; if (strncmp(token + offset, prefixdot, strlen(prefixdot)) == 0) { /* prefix with dot found */ offset += strlen(prefixdot); result = 2; /* token with prefix, result into problem if not found */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "token with prefix, suffix: %s", token + offset); } else { /* prefix dot is required */ // no match goto END_ipv6calc_db_cc_filter_parse; }; if (strncmp(token + offset, filter_token, strlen(filter_token)) == 0) { /* filter token found */ offset += strlen(filter_token); result = 2; /* filter token found */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "filter token found, suffix: %s", token + offset); } else { // no match goto END_ipv6calc_db_cc_filter_parse; }; if (strcmp(token + offset, "unknown") == 0) { cc_index = COUNTRYCODE_INDEX_UNKNOWN; } else { if (strlen(token + offset) != 2) { ERRORPRINT_WA("filter token 'cc=' requires 2 char country code: %s:", token + offset); goto END_ipv6calc_db_cc_filter_parse; }; cc_index = libipv6calc_db_cc_to_index(token + offset); if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { ERRORPRINT_WA("filter token 'cc=' requires a valid country code: %s:", token + offset); goto END_ipv6calc_db_cc_filter_parse; }; }; if (negate == 1) { if (filter->cc_may_not_have_max < IPV6CALC_FILTER_DB_CC_MAX) { filter->cc_may_not_have[filter->cc_may_not_have_max] = cc_index; filter->cc_may_not_have_max++; } else { ERRORPRINT_WA("filter token 'cc=' maxmimum reached for 'may not have': %d", filter->cc_may_not_have_max); goto END_ipv6calc_db_cc_filter_parse; }; } else { if (filter->cc_must_have_max < IPV6CALC_FILTER_DB_CC_MAX) { filter->cc_must_have[filter->cc_must_have_max] = cc_index; filter->cc_must_have_max++; } else { ERRORPRINT_WA("filter token 'cc=' maxmimum reached for 'must have': %d", filter->cc_must_have_max); goto END_ipv6calc_db_cc_filter_parse; }; }; filter->active = 1; result = 0; END_ipv6calc_db_cc_filter_parse: return (result); }; /* * check filter DB CC * * in : *filter = filter structure * ret: 0:found 1:problem */ int libipv6calc_db_cc_filter_check(const s_ipv6calc_filter_db_cc *filter, const int proto) { int result = 0, r; char cc[IPV6CALC_COUNTRYCODE_STRING_MAX]; DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper) char tempstring[NI_MAXHOST]; char tempstring2[NI_MAXHOST]; int i; if (filter->cc_must_have_max > 0) { tempstring2[0] = '\0'; for (i = 0; i < filter->cc_must_have_max; i++) { libipv6calc_db_wrapper_country_code_by_cc_index(cc, sizeof(cc), filter->cc_must_have[i]); snprintf(tempstring, sizeof(tempstring), "%s%s%s", tempstring2, (i > 0) ? " " : "", cc); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter 'must_have' : %s", tempstring2); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.cc filter 'must_have' : --"); }; if (filter->cc_may_not_have_max > 0) { tempstring2[0] = '\0'; for (i = 0; i < filter->cc_may_not_have_max; i++) { libipv6calc_db_wrapper_country_code_by_cc_index(cc, sizeof(cc), filter->cc_may_not_have[i]); snprintf(tempstring, sizeof(tempstring), "%s%s%s", tempstring2, (i > 0) ? " " : "", cc); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter 'may_not_have': %s", tempstring2); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.cc filter 'may_not_have': --"); }; DEBUGSECTION_END if (proto == IPV6CALC_PROTO_IPV4) { r = libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_CC); } else if (proto == IPV6CALC_PROTO_IPV6) { r = libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_CC); } else { ERRORPRINT_WA("unsupported proto (FIX CODE): %d", proto); result = 1; goto END_ipv6calc_db_cc_filter_check; }; if (r == 1) { // ok DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "database layer supports IPv%d->CountryCode", proto); } else { ERRORPRINT_WA("database layer don't support IPv%d->CountryCode", proto); result = 1; }; END_ipv6calc_db_cc_filter_check: return(result); }; /* * filter for CC * * in : cc_index = country code * in : *filter = filter structure * ret: 0=match 1=not match -1=neutral */ int libipv6calc_db_cc_filter(const uint16_t cc_index, const s_ipv6calc_filter_db_cc *filter) { int i, result = -1; char cc1[IPV6CALC_COUNTRYCODE_STRING_MAX], cc2[IPV6CALC_COUNTRYCODE_STRING_MAX]; libipv6calc_db_wrapper_country_code_by_cc_index(cc1, sizeof(cc1), cc_index); if (filter->cc_must_have_max > 0) { result = 1; for (i = 0; i < filter->cc_must_have_max; i++) { libipv6calc_db_wrapper_country_code_by_cc_index(cc2, sizeof(cc2), filter->cc_must_have[i]); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter: check %s against must-have: %s", cc1, cc2); if (cc_index == filter->cc_must_have[i]) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter: %s hits must-have: %s", cc1, cc2); // match MUST-HAVE result = 0; break; }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.cc filter: no must-have defined"); }; if (filter->cc_may_not_have_max > 0) { for (i = 0; i < filter->cc_may_not_have_max; i++) { libipv6calc_db_wrapper_country_code_by_cc_index(cc2, sizeof(cc2), filter->cc_may_not_have[i]); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter: check %s against may-not-have: %s", cc1, cc2); if (cc_index == filter->cc_may_not_have[i]) { // match MAY-NOT-HAVE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter: %s hits may-not-have: %s", cc1, cc2); result = 1; break; }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.cc filter: no may-not-have defined"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.cc filter final result: %d", result); return (result); }; /*********** DB ASN **********************/ /* * parse filter DB ASN * * in : *filter = filter structure * ret: 0:found 1:skip 2:problem */ int libipv6calc_db_asn_filter_parse(s_ipv6calc_filter_db_asn *filter, const char *token, const int negate_flag) { int result = 1, negate = negate_flag, offset = 0; const char *filter_token = "asn="; const char *prefixdot = "db."; uint32_t asn; if (token == NULL) { return (result); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "input: %s", token); if (token[0] == '^') { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "found negate prefix in token: %s", token); negate = 1; offset += 1; }; if (strncmp(token + offset, prefixdot, strlen(prefixdot)) == 0) { /* prefix with dot found */ offset += strlen(prefixdot); result = 2; /* token with prefix, result into problem if not found */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "token with prefix, suffix: %s", token + offset); } else { /* prefix dot is required */ // no match goto END_ipv6calc_db_asn_filter_parse; }; if (strncmp(token + offset, filter_token, strlen(filter_token)) == 0) { /* filter token found */ offset += strlen(filter_token); result = 2; /* filter token found */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "filter token found, suffix: %s", token + offset); } else { // no match goto END_ipv6calc_db_asn_filter_parse; }; if (strcmp(token + offset, "unknown") == 0) { asn = ASNUM_AS_UNKNOWN; } else { asn = (uint32_t) strtol(token + offset, NULL, 10); if (errno == ERANGE) { ERRORPRINT_WA("filter token 'asn=' requires a valid decimal number between 0 and %ul: %s:", (2^32) - 1, token + offset); goto END_ipv6calc_db_asn_filter_parse; }; }; if (negate == 1) { if (filter->asn_may_not_have_max < IPV6CALC_FILTER_DB_ASN_MAX) { filter->asn_may_not_have[filter->asn_may_not_have_max] = asn; filter->asn_may_not_have_max++; } else { ERRORPRINT_WA("filter token 'asn=' maxmimum reached for 'may not have': %d", filter->asn_may_not_have_max); goto END_ipv6calc_db_asn_filter_parse; }; } else { if (filter->asn_must_have_max < IPV6CALC_FILTER_DB_ASN_MAX) { filter->asn_must_have[filter->asn_must_have_max] = asn; filter->asn_must_have_max++; } else { ERRORPRINT_WA("filter token 'asn=' maxmimum reached for 'must have': %d", filter->asn_must_have_max); goto END_ipv6calc_db_asn_filter_parse; }; }; filter->active = 1; result = 0; END_ipv6calc_db_asn_filter_parse: return (result); }; /* * check filter DB ASN * * in : *filter = filter structure * ret: 0:found 1:problem */ int libipv6calc_db_asn_filter_check(const s_ipv6calc_filter_db_asn *filter, const int proto) { int result = 0, r; DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper) char tempstring[NI_MAXHOST]; char tempstring2[NI_MAXHOST]; int i; if (filter->asn_must_have_max > 0) { tempstring2[0] = '\0'; for (i = 0; i < filter->asn_must_have_max; i++) { snprintf(tempstring, sizeof(tempstring), "%s%s%u", tempstring2, (i > 0) ? " " : "", filter->asn_must_have[i]); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter 'must_have' : %s", tempstring2); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.asn filter 'must_have' : --"); }; if (filter->asn_may_not_have_max > 0) { tempstring2[0] = '\0'; for (i = 0; i < filter->asn_may_not_have_max; i++) { snprintf(tempstring, sizeof(tempstring), "%s%s%u", tempstring2, (i > 0) ? " " : "", filter->asn_may_not_have[i]); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter 'may_not_have': %s", tempstring2); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.asn filter 'may_not_have': --"); }; DEBUGSECTION_END if (proto == IPV6CALC_PROTO_IPV4) { r = libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS); } else if (proto == IPV6CALC_PROTO_IPV6) { r = libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_AS); } else { ERRORPRINT_WA("unsupported proto (FIX CODE): %d", proto); result = 1; goto END_ipv6calc_db_asn_filter_check; }; if (r == 1) { // ok DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "database layer supports IPv%d->ASN", proto); } else { ERRORPRINT_WA("database layer don't support IPv%d->ASN", proto); result = 1; }; END_ipv6calc_db_asn_filter_check: return(result); }; /* * filter ASN * * in : asn = ASN * in : *filter = filter structure * ret: 0=match 1=not match -1=neutral */ int libipv6calc_db_asn_filter(const uint32_t asn, const s_ipv6calc_filter_db_asn *filter) { int i, result = -1; if (filter->asn_must_have_max > 0) { result = 1; for (i = 0; i < filter->asn_must_have_max; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter: check %u against must-have: %u", asn, filter->asn_must_have[i]); if (asn == filter->asn_must_have[i]) { // match MUST-HAVE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter: %u hits must-have: %u", asn, filter->asn_must_have[i]); result = 0; }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.asn filter: no must-have defined"); }; if (filter->asn_may_not_have_max > 0) { for (i = 0; i < filter->asn_may_not_have_max; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter: check %u against must-have: %u", asn, filter->asn_may_not_have[i]); if (asn == filter->asn_may_not_have[i]) { // match MAY-NOT-HAVE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter: %u hits may-not-have: %u", asn, filter->asn_may_not_have[i]); result = 1; }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.asn filter: no may-not-have defined"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.asn filter final result: %d", result); return (result); }; /*********** DB Registry **********************/ /* * parse filter DB Registry * * in : *filter = filter structure * ret: 0:found 1:skip 2:problem */ int libipv6calc_db_registry_filter_parse(s_ipv6calc_filter_db_registry *filter, const char *token, const int negate_flag) { int result = 1, negate = negate_flag, offset = 0; const char *filter_token = "reg="; const char *prefixdot = "db."; int registry = 0, i; if (token == NULL) { return (result); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "input: %s", token); if (token[0] == '^') { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "found negate prefix in token: %s", token); negate = 1; offset += 1; }; if (strncmp(token + offset, prefixdot, strlen(prefixdot)) == 0) { /* prefix with dot found */ offset += strlen(prefixdot); result = 2; /* token with prefix, result into problem if not found */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "token with prefix, suffix: %s", token + offset); } else { /* prefix dot is required */ // no match goto END_ipv6calc_db_registry_filter_parse; }; if (strncmp(token + offset, filter_token, strlen(filter_token)) == 0) { /* filter token found */ offset += strlen(filter_token); result = 2; /* filter token found */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "filter token found, suffix: %s", token + offset); } else { // no match goto END_ipv6calc_db_registry_filter_parse; }; if (strcmp(token + offset, "unknown") == 0) { registry = REGISTRY_UNKNOWN; } else { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_registries); i++) { if (strcasecmp(token + offset, ipv6calc_registries[i].token) == 0) { registry = ipv6calc_registries[i].number; break; }; }; if (registry == 0) { ERRORPRINT_WA("filter token 'reg=' requires a valid registry token: %s:", token + offset); goto END_ipv6calc_db_registry_filter_parse; }; }; if (negate == 1) { if (filter->registry_may_not_have_max < IPV6CALC_FILTER_DB_REGISTRY_MAX) { filter->registry_may_not_have[filter->registry_may_not_have_max] = registry; filter->registry_may_not_have_max++; } else { ERRORPRINT_WA("filter token 'reg=' maxmimum reached for 'may not have': %d", filter->registry_may_not_have_max); goto END_ipv6calc_db_registry_filter_parse; }; } else { if (filter->registry_must_have_max < IPV6CALC_FILTER_DB_REGISTRY_MAX) { filter->registry_must_have[filter->registry_must_have_max] = registry; filter->registry_must_have_max++; } else { ERRORPRINT_WA("filter token 'reg=' maxmimum reached for 'must have': %d", filter->registry_must_have_max); goto END_ipv6calc_db_registry_filter_parse; }; }; filter->active = 1; result = 0; END_ipv6calc_db_registry_filter_parse: return (result); }; /* * check filter DB Registry * * in : *filter = filter structure * ret: 0:found 1:problem */ int libipv6calc_db_registry_filter_check(const s_ipv6calc_filter_db_registry *filter, const int proto) { int result = 0, r; DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper) char tempstring[NI_MAXHOST]; char tempstring2[NI_MAXHOST]; int i; if (filter->registry_must_have_max > 0) { tempstring2[0] = '\0'; for (i = 0; i < filter->registry_must_have_max; i++) { snprintf(tempstring, sizeof(tempstring), "%s%s%s", tempstring2, (i > 0) ? " " : "", libipv6calc_registry_string_by_num(filter->registry_must_have[i])); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.registry filter 'must_have' : %s", tempstring2); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.registry filter 'must_have' : --"); }; if (filter->registry_may_not_have_max > 0) { tempstring2[0] = '\0'; for (i = 0; i < filter->registry_may_not_have_max; i++) { snprintf(tempstring, sizeof(tempstring), "%s%s%s", tempstring2, (i > 0) ? " " : "", libipv6calc_registry_string_by_num(filter->registry_may_not_have[i])); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.registry filter 'may_not_have': %s", tempstring2); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.registry filter 'may_not_have': --"); }; DEBUGSECTION_END if (proto == IPV6CALC_PROTO_IPV4) { r = libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_REGISTRY); } else if (proto == IPV6CALC_PROTO_IPV6) { r = libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_REGISTRY); } else { ERRORPRINT_WA("unsupported proto (FIX CODE): %d", proto); result = 1; goto END_ipv6calc_db_registry_filter_check; }; if (r == 1) { // ok DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "database layer supports IPv%d->Registry", proto); } else { ERRORPRINT_WA("database layer don't support IPv%d->Registry", proto); result = 1; }; END_ipv6calc_db_registry_filter_check: return(result); }; /* * filter Registry * * in : registry = Registry * in : *filter = filter structure * ret: 0=match 1=not match -1=neutral */ int libipv6calc_db_registry_filter(const uint32_t registry, const s_ipv6calc_filter_db_registry *filter) { int i, result = -1; if (filter->registry_must_have_max > 0) { result = 1; for (i = 0; i < filter->registry_must_have_max; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.reg filter: check %s against must-have: %s", libipv6calc_registry_string_by_num(registry), libipv6calc_registry_string_by_num(filter->registry_must_have[i])); if (registry == filter->registry_must_have[i]) { // match MUST-HAVE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.reg filter: %s hits must-have: %s", libipv6calc_registry_string_by_num(registry), libipv6calc_registry_string_by_num(filter->registry_must_have[i])); result = 0; }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.registry filter: no must-have defined"); }; if (filter->registry_may_not_have_max > 0) { for (i = 0; i < filter->registry_may_not_have_max; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.reg filter: check %s against must-have: %s", libipv6calc_registry_string_by_num(registry), libipv6calc_registry_string_by_num(filter->registry_may_not_have[i])); if (registry == filter->registry_may_not_have[i]) { // match MAY-NOT-HAVE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.reg filter: %s hits may-not-have: %s", libipv6calc_registry_string_by_num(registry), libipv6calc_registry_string_by_num(filter->registry_may_not_have[i])); result = 1; }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "db.reg filter: no may-not-have defined"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "db.reg filter final result: %d", result); return (result); }; /* * return library version numeric */ uint32_t libipv6calc_db_lib_version_numeric(void) { return(IPV6CALC_PACKAGE_VERSION_NUMERIC); }; /* * return library version as string */ const char *libipv6calc_db_lib_version_string(void) { return(IPV6CALC_PACKAGE_VERSION_STRING); }; /* * return API version numeric */ uint32_t libipv6calc_db_api_version_numeric(void) { return(IPV6CALC_API_VERSION_NUMERIC); }; /* * return API version as string */ const char *libipv6calc_db_api_version_string(void) { return(IPV6CALC_API_VERSION_STRING); }; ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper.h000066400000000000000000000371751312366535500225160ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper.h * Version : $Id: 0f847284fb560c0a6eaaff36fbc71e0e467d5ab7 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper.c */ #ifdef HAVE_BERKELEY_DB_SUPPORT #include #endif // HAVE_BERKELEY_DB_SUPPORT #ifndef _libipv6calc_db_wrapper_h #define _libipv6calc_db_wrapper_h 1 #include "ipv6calctypes.h" #include "libmac.h" #include "libipv4addr.h" #include "libipv6addr.h" extern uint32_t wrapper_features; extern uint32_t wrapper_features_by_source[]; extern uint32_t wrapper_features_by_source_implemented[]; #define IPV6CALC_PROTO_IPV4 4 #define IPV6CALC_PROTO_IPV6 6 // define generic feature numbers #define IPV6CALC_DB_FEATURE_NUM_MIN 0 #define IPV6CALC_DB_FEATURE_NUM_AS_TO_REGISTRY 0 #define IPV6CALC_DB_FEATURE_NUM_CC_TO_REGISTRY 1 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGISTRY 2 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_REGISTRY 3 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_AS 4 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_AS 5 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_CC 6 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_CC 7 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_COUNTRY 8 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_COUNTRY 9 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_CITY 10 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_CITY 11 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGION 12 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_REGION 13 #define IPV6CALC_DB_FEATURE_NUM_IEEE_TO_INFO 14 #define IPV6CALC_DB_FEATURE_NUM_IPV4_TO_INFO 15 #define IPV6CALC_DB_FEATURE_NUM_IPV6_TO_INFO 16 #define IPV6CALC_DB_FEATURE_NUM_MAX IPV6CALC_DB_FEATURE_NUM_IPV6_TO_INFO // define generic features #define IPV6CALC_DB_AS_TO_REGISTRY (1 << IPV6CALC_DB_FEATURE_NUM_AS_TO_REGISTRY) #define IPV6CALC_DB_CC_TO_REGISTRY (1 << IPV6CALC_DB_FEATURE_NUM_CC_TO_REGISTRY) #define IPV6CALC_DB_IPV4_TO_REGISTRY (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGISTRY) #define IPV6CALC_DB_IPV6_TO_REGISTRY (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_REGISTRY) #define IPV6CALC_DB_IPV4_TO_AS (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_AS) #define IPV6CALC_DB_IPV6_TO_AS (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_AS) #define IPV6CALC_DB_IPV4_TO_CC (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_CC) #define IPV6CALC_DB_IPV6_TO_CC (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_CC) #define IPV6CALC_DB_IPV4_TO_COUNTRY (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_COUNTRY) #define IPV6CALC_DB_IPV6_TO_COUNTRY (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_COUNTRY) #define IPV6CALC_DB_IPV4_TO_CITY (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_CITY) #define IPV6CALC_DB_IPV6_TO_CITY (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_CITY) #define IPV6CALC_DB_IPV4_TO_REGION (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_REGION) #define IPV6CALC_DB_IPV6_TO_REGION (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_REGION) #define IPV6CALC_DB_IEEE_TO_INFO (1 << IPV6CALC_DB_FEATURE_NUM_IEEE_TO_INFO) #define IPV6CALC_DB_IPV4_TO_INFO (1 << IPV6CALC_DB_FEATURE_NUM_IPV4_TO_INFO) #define IPV6CALC_DB_IPV6_TO_INFO (1 << IPV6CALC_DB_FEATURE_NUM_IPV6_TO_INFO) // define database specific generic features #define IPV6CALC_DB_GEOIP_IPV4 0x01000000 #define IPV6CALC_DB_GEOIP_IPV6 0x02000000 #define IPV6CALC_DB_IP2LOCATION_IPV4 0x04000000 #define IPV6CALC_DB_IP2LOCATION_IPV6 0x08000000 #define IPV6CALC_DB_DBIP_IPV4 0x10000000 #define IPV6CALC_DB_DBIP_IPV6 0x20000000 #define IPV6CALC_DB_EXTERNAL_IPV4 0x40000000 #define IPV6CALC_DB_EXTERNAL_IPV6 0x80000000 static const s_formatoption ipv6calc_db_features[] = { { IPV6CALC_DB_GEOIP_IPV4 , "GeoIP" , "GeoIPv4 database"}, { IPV6CALC_DB_GEOIP_IPV6 , "GeoIPv6" , "GeoIPv6 database"}, { IPV6CALC_DB_IP2LOCATION_IPV4 , "IP2Location" , "IP2Location IPv4 database"}, { IPV6CALC_DB_IP2LOCATION_IPV6 , "IP2Location6" , "IP2Location IPv6 database"}, { IPV6CALC_DB_DBIP_IPV4 , "DBIPv4" , "db-ip.com IPv4 database"}, { IPV6CALC_DB_DBIP_IPV6 , "DBIPv6" , "db-ip.com IPv6 database"}, { IPV6CALC_DB_AS_TO_REGISTRY , "DB_AS_REG" , "AS-Number to Registry database"}, { IPV6CALC_DB_IPV4_TO_REGISTRY , "DB_IPV4_REG" , "IPv4 to Registry database"}, { IPV6CALC_DB_IPV6_TO_REGISTRY , "DB_IPV6_REG" , "IPv6 to Registry database"}, { IPV6CALC_DB_IPV4_TO_AS , "DB_IPV4_AS" , "IPv4 to AS database" }, { IPV6CALC_DB_IPV6_TO_AS , "DB_IPV6_AS" , "IPv6 to AS database" }, { IPV6CALC_DB_IPV4_TO_CC , "DB_IPV4_CC" , "IPv4 to CountryCode database" }, { IPV6CALC_DB_IPV6_TO_CC , "DB_IPV6_CC" , "IPv6 to CountryCode database" }, { IPV6CALC_DB_IPV4_TO_COUNTRY , "DB_IPV4_COUNTRY" , "IPv4 to Country database" }, { IPV6CALC_DB_IPV6_TO_COUNTRY , "DB_IPV6_COUNTRY" , "IPv6 to Country database" }, { IPV6CALC_DB_IPV4_TO_CITY , "DB_IPV4_CITY" , "IPv4 to City database" }, { IPV6CALC_DB_IPV6_TO_CITY , "DB_IPV6_CITY" , "IPv6 to City database" }, { IPV6CALC_DB_IPV4_TO_REGION , "DB_IPV4_REGION" , "IPv4 to Region database" }, { IPV6CALC_DB_IPV6_TO_REGION , "DB_IPV6_REGION" , "IPv6 to Region database" }, { IPV6CALC_DB_CC_TO_REGISTRY , "DB_CC_REG" , "CountryCode to Registry database" }, { IPV6CALC_DB_IEEE_TO_INFO , "DB_IEEE" , "IEEE/OUI/OUI36 Vendor database" }, { IPV6CALC_DB_IPV4_TO_INFO , "DB_IPV4_INFO" , "IPv4 additional information" }, { IPV6CALC_DB_IPV6_TO_INFO , "DB_IPV6_INFO" , "IPv6 additional information" }, }; // data sources #define IPV6CALC_DB_SOURCE_UNKNOWN 0 #define IPV6CALC_DB_SOURCE_MIN 1 #define IPV6CALC_DB_SOURCE_GEOIP 1 #define IPV6CALC_DB_SOURCE_IP2LOCATION 2 #define IPV6CALC_DB_SOURCE_DBIP 3 #define IPV6CALC_DB_SOURCE_EXTERNAL 4 #define IPV6CALC_DB_SOURCE_BUILTIN 5 #define IPV6CALC_DB_SOURCE_MAX 5 #define IPV6CALC_DB_PRIO_MAX IPV6CALC_DB_SOURCE_MAX typedef struct { const unsigned int number; const char *name; const char *shortname; } s_data_sources; static const s_data_sources data_sources[] = { { IPV6CALC_DB_SOURCE_GEOIP , "GeoIP" , "GeoIP" }, { IPV6CALC_DB_SOURCE_IP2LOCATION, "IP2Location", "IP2Location" }, { IPV6CALC_DB_SOURCE_DBIP , "db-ip.com" , "DBIP" }, { IPV6CALC_DB_SOURCE_EXTERNAL , "External" , "External" }, { IPV6CALC_DB_SOURCE_BUILTIN , "BuiltIn" , "BuiltIn" }, }; // database names and descriptions typedef struct { const unsigned int number; const char *filename; const char *description; const uint32_t features; } db_file_desc; typedef struct { const unsigned int number; const char *filename; const char *description; const uint32_t features; const uint32_t internal; } db_file_desc2; // define internal API versions #define IPV6CALC_DB_API_GEOIP 1 #define IPV6CALC_DB_API_IP2LOCATION 1 #define IPV6CALC_DB_API_DBIP 1 #define IPV6CALC_DB_API_IEEE 1 #define IPV6CALC_DB_API_REGISTRIES 1 #define IPV6CALC_DL_STATUS_OK 1 #define IPV6CALC_DL_STATUS_UNKNOWN 0 #define IPV6CALC_DL_STATUS_ERROR -1 // db-info macro #define IPV6CALC_DB_FEATURE_INFO(prefix, data_source) \ fprintf(stderr, "%s%s: features available/implemented: 0x%08x/0x%08x", \ prefix, \ libipv6calc_db_wrapper_get_data_source_name_by_number(data_source), \ wrapper_features_by_source[data_source], \ wrapper_features_by_source_implemented[data_source]); \ if (strlen(prefix) == 0) { \ int wrapper_features_by_source_bitcount = libipv6calc_bitcount_uint32_t(wrapper_features_by_source[data_source]); \ int wrapper_features_by_source_implemented_bitcount = libipv6calc_bitcount_uint32_t(wrapper_features_by_source_implemented[data_source]); \ if (wrapper_features_by_source_implemented_bitcount == 0) { \ fprintf(stderr, " (NONE)"); \ } else { \ fprintf(stderr, " (%d%%)", (wrapper_features_by_source_bitcount * 100) / wrapper_features_by_source_implemented_bitcount); \ }; \ }; \ fprintf(stderr, "\n"); // AS Number handling #define ASNUM_AS_UNKNOWN 0 #define ASNUM_AS_TRANS 23456 // special 16-bit AS number for compatibility // CountryCode handling #define COUNTRYCODE_LETTER1_MAX 26 // A-Z #define COUNTRYCODE_LETTER2_MAX 36 // 0-9A-Z #define COUNTRYCODE_INDEX_LETTER_MAX (COUNTRYCODE_LETTER1_MAX * COUNTRYCODE_LETTER2_MAX - 1) #define COUNTRYCODE_INDEX_MAX 1023 // 0x3ff #define COUNTRYCODE_INDEX_UNKNOWN 1022 // 0x3fe #define COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MAX (COUNTRYCODE_INDEX_UNKNOWN - 1) #define COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN (COUNTRYCODE_INDEX_UNKNOWN - 16) // macros for mapping index to chars #define COUNTRYCODE_INDEX_TO_CHAR1(index) ((index % COUNTRYCODE_LETTER1_MAX) + 'A') #define COUNTRYCODE_INDEX_TO_CHAR2(index) ((index / COUNTRYCODE_LETTER1_MAX) > 9) ? ((index / COUNTRYCODE_LETTER1_MAX) - 10 + 'A') : ((index / COUNTRYCODE_LETTER1_MAX) + '0') // generic database lookup function #define IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY 1 // array #ifdef HAVE_BERKELEY_DB_SUPPORT #define IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB 2 // Berkeley DB #endif // HAVE_BERKELEY_DB_SUPPORT // data storage type #define IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST 1 // key is first-last #define IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK 2 // key is base/mask // data search type #define IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY 1 // binary search #define IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST 2 // sequential longest match // Berkeley DB lookup function #ifdef HAVE_BERKELEY_DB_SUPPORT #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x2 0 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x4 1 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 2 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4 3 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x2 4 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x4 5 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_PREFIX_32x2 6 #define IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_PREFIX_32x4 7 // database info/data typedef struct { DB *db_info_ptr; DB *db_data_ptr; long int db_data_max; } s_db_info_data; #endif // HAVE_BERKELEY_DB_SUPPORT #define IPV6CALC_DB_LIB_VERSION_CHECK_EXIT(version_numeric, version_string) \ if (version_numeric != libipv6calc_db_lib_version_numeric()) { \ ERRORPRINT_WA("Database library version is not matching: has:%s required:%s", libipv6calc_db_lib_version_string(), version_string); \ exit(1); \ }; #endif // _libipv6calc_db_wrapper_h extern int libipv6calc_db_wrapper_init(const char *prefix_string); extern int libipv6calc_db_wrapper_cleanup(void); extern void libipv6calc_db_wrapper_info(char *string, const size_t size); extern void libipv6calc_db_wrapper_features(char *string, const size_t size); extern void libipv6calc_db_wrapper_capabilities(char *string, const size_t size); extern void libipv6calc_db_wrapper_features_help(void); extern void libipv6calc_db_wrapper_print_db_info(const int level_verbose, const char *prefix_string); extern int libipv6calc_db_wrapper_has_features(uint32_t features); extern int libipv6calc_db_wrapper_options(const int opt, const char *optarg, const struct option longopts[]); extern const char *libipv6calc_db_wrapper_get_data_source_name_by_number(const unsigned int number); /* functional wrappers */ // CountryCode Text/Number extern int libipv6calc_db_wrapper_country_code_by_addr(char *string, const int length, const ipv6calc_ipaddr *ipaddrp, unsigned int *data_source_ptr); extern int libipv6calc_db_wrapper_country_code_by_cc_index(char *string, const int length, const uint16_t cc_index); extern uint16_t libipv6calc_db_wrapper_cc_index_by_addr(const ipv6calc_ipaddr *ipaddrp, unsigned int *data_source_ptr); // Autonomous System Text/Number extern char *libipv6calc_db_wrapper_as_text_by_addr(const ipv6calc_ipaddr *ipaddrp); extern uint32_t libipv6calc_db_wrapper_as_num32_by_addr(const ipv6calc_ipaddr *ipaddrp); extern uint16_t libipv6calc_db_wrapper_as_num16_by_addr(const ipv6calc_ipaddr *ipaddrp); extern uint32_t libipv6calc_db_wrapper_as_num32_comp17(const uint32_t as_num32); extern uint32_t libipv6calc_db_wrapper_as_num32_decomp17(const uint32_t as_num32_comp17); // Registries extern int libipv6calc_db_wrapper_registry_num_by_as_num32(const uint32_t as_num32); extern int libipv6calc_db_wrapper_registry_num_by_cc_index(const uint16_t cc_index); extern int libipv6calc_db_wrapper_registry_num_by_ipaddr(const ipv6calc_ipaddr *ipaddrp); extern int libipv6calc_db_wrapper_registry_string_by_ipaddr(const ipv6calc_ipaddr *ipaddrp, char *resultstring, const size_t resultstring_length); // IEEE extern int libipv6calc_db_wrapper_ieee_vendor_string_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp); extern int libipv6calc_db_wrapper_ieee_vendor_string_short_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp); // IPv4 Registry extern int libipv6calc_db_wrapper_registry_string_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length); extern int libipv6calc_db_wrapper_registry_num_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp); extern int libipv6calc_db_wrapper_info_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *string, const size_t string_len); // IPv6 Registry extern int libipv6calc_db_wrapper_registry_string_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length); extern int libipv6calc_db_wrapper_registry_num_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp); extern int libipv6calc_db_wrapper_info_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *string, const size_t string_len); #ifdef HAVE_BERKELEY_DB_SUPPORT extern int libipv6calc_db_wrapper_bdb_get_data_by_key(DB *dbp, char *token, char *value, const size_t value_size); #endif // HAVE_BERKELEY_DB_SUPPORT // generic DB lookup extern long int libipv6calc_db_wrapper_get_entry_generic( void *db_ptr, // pointer to database in case of IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, otherwise NULL const uint8_t data_ptr_type, // type of data_ptr const uint8_t data_key_type, // key type const uint8_t data_key_format, // key format const uint8_t data_key_length, // key length const uint8_t data_search_type, // search type const uint32_t data_num_rows, // number of rows const uint32_t lookup_key_00_31, // lookup key MSB const uint32_t lookup_key_32_63, // lookup key LSB void *data_ptr, // pointer to DB data in case of IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, otherwise NULL int (*get_array_row)() // function to get array row ); /* filter powered by database */ extern int libipv6calc_db_cc_filter_parse(s_ipv6calc_filter_db_cc *filter, const char *token, const int negate_flag); extern int libipv6calc_db_cc_filter_check(const s_ipv6calc_filter_db_cc *filter, const int proto); extern int libipv6calc_db_cc_filter(const uint16_t cc_index, const s_ipv6calc_filter_db_cc *filter); extern int libipv6calc_db_asn_filter_parse(s_ipv6calc_filter_db_asn *filter, const char *token, const int negate_flag); extern int libipv6calc_db_asn_filter_check(const s_ipv6calc_filter_db_asn *filter, const int proto); extern int libipv6calc_db_asn_filter(const uint32_t asn, const s_ipv6calc_filter_db_asn *filter); extern int libipv6calc_db_registry_filter_parse(s_ipv6calc_filter_db_registry *filter, const char *token, const int negate_flag); extern int libipv6calc_db_registry_filter_check(const s_ipv6calc_filter_db_registry *filter, const int proto); extern int libipv6calc_db_registry_filter(const uint32_t registry, const s_ipv6calc_filter_db_registry *filter); extern uint32_t libipv6calc_db_lib_version_numeric(void); extern const char *libipv6calc_db_lib_version_string(void); extern uint32_t libipv6calc_db_api_version_numeric(void); extern const char *libipv6calc_db_api_version_string(void); ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_BuiltIn.c000066400000000000000000000746471312366535500241440ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_BuiltIn.c * Version : $Id: c9d6dc476e5101f49325c07446b74fbcecf7dce8 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * ipv6calc BuiltIn database wrapper * - decoupling databases from main binary */ #include #include #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc_db_wrapper.h" #include "libipv6calc_db_wrapper_BuiltIn.h" #include "libieee.h" #ifdef SUPPORT_BUILTIN static int builtin_asn = 0; static int builtin_cc_reg = 0; static int builtin_ipv4 = 0; static int builtin_ipv6 = 0; static int builtin_ieee = 0; // load all built-in databases #include "../as-assignment/dbasn_assignment.h" #include "../cc-assignment/db_cc_reg_assignment.h" #ifdef SUPPORT_DB_IPV4_REG #include "../ipv4-assignment/dbipv4addr_assignment.h" #endif #ifdef SUPPORT_DB_IPV6_REG #include "../ipv6-assignment/dbipv6addr_assignment.h" #endif #ifdef SUPPORT_DB_IEEE #include "../ieee-iab/dbieee_iab.h" #include "../ieee-oui/dbieee_oui.h" #include "../ieee-oui36/dbieee_oui36.h" #endif #endif /* database usage map */ #define BUILTIN_DB_MAX_BLOCKS_32 2 // 0-63 static uint32_t builtin_db_usage_map[BUILTIN_DB_MAX_BLOCKS_32]; #define BUILTIN_DB_USAGE_MAP_TAG(db) if (db < (32 * BUILTIN_DB_MAX_BLOCKS_32)) { \ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Tag usage for db: %d", db); \ builtin_db_usage_map[db / 32] |= 1 << (db % 32); \ } else { \ fprintf(stderr, "FIXME: unsupported db value (exceed limit): %d (%d)\n", db, 32 * BUILTIN_DB_MAX_BLOCKS_32 - 1); \ exit(1); \ }; char builtin_db_usage_string[NI_MAXHOST] = ""; /* * function initialise the BuiltIn wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_BuiltIn_wrapper_init(void) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called"); // add features to implemented wrapper_features_by_source_implemented[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_AS_TO_REGISTRY | IPV6CALC_DB_CC_TO_REGISTRY | IPV6CALC_DB_IPV4_TO_REGISTRY | IPV6CALC_DB_IPV6_TO_REGISTRY | IPV6CALC_DB_IEEE_TO_INFO | IPV6CALC_DB_IPV4_TO_INFO | IPV6CALC_DB_IPV6_TO_INFO; #ifdef SUPPORT_BUILTIN #ifdef SUPPORT_DB_AS_REG wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_AS_TO_REGISTRY; builtin_asn = 1; #endif #ifdef SUPPORT_DB_CC_REG wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_CC_TO_REGISTRY; builtin_cc_reg = 1; #endif #ifdef SUPPORT_DB_IPV4_REG wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_IPV4_TO_REGISTRY | IPV6CALC_DB_IPV4_TO_INFO; builtin_ipv4 = 1; #endif #ifdef SUPPORT_DB_IPV6_REG wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_IPV6_TO_REGISTRY | IPV6CALC_DB_IPV6_TO_INFO; builtin_ipv6 = 1; #endif #ifdef SUPPORT_DB_IEEE wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_IEEE_TO_INFO; builtin_ieee = 1; #endif wrapper_features |= wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN]; #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished"); return 0; }; /* * function cleanup the BuiltIn wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_BuiltIn_wrapper_cleanup(void) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called"); // currently nothing to do DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished"); return 0; }; /* * function info of BuiltIn wrapper * * in : ptr and size of string to be filled * out: modified string; */ void libipv6calc_db_wrapper_BuiltIn_wrapper_info(char* string, const size_t size) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called"); #ifdef SUPPORT_BUILTIN snprintf(string, size, "BuiltIn databases available: ASN_REG=%d IPV4_REG=%d IPV6_REG=%d IEEE=%d CC_REG=%d", builtin_asn, builtin_ipv4, builtin_ipv6, builtin_ieee, builtin_cc_reg); #else snprintf(string, size, "No BuiltIn databases support compiled-in"); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished"); return; }; /* * function print database info of BuiltIn wrapper * * in : (void) * out: (void) */ void libipv6calc_db_wrapper_BuiltIn_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { const char *prefix = "\0"; if (level_verbose == 0) { }; // make compiler happy (avoid unused "...") DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called"); if (prefix_string != NULL) { prefix = prefix_string; }; IPV6CALC_DB_FEATURE_INFO(prefix, IPV6CALC_DB_SOURCE_BUILTIN) #ifdef SUPPORT_BUILTIN #if defined SUPPORT_DB_IPV4_REG || defined SUPPORT_DB_IPV6_REG char tempstring[NI_MAXHOST]; #endif fprintf(stderr, "%sBuiltIn: info of available databases\n", prefix); #ifdef SUPPORT_DB_AS_REG if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] & IPV6CALC_DB_AS_TO_REGISTRY) { fprintf(stderr, "%sBuiltIn: %-5s: %s\n", prefix, "ASN", dbasn_registry_status); }; #endif #ifdef SUPPORT_DB_CC_REG if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] & IPV6CALC_DB_CC_TO_REGISTRY) { fprintf(stderr, "%sBuiltIn: %-5s: %s\n", prefix, "CC", db_cc_registry_status); }; #endif #ifdef SUPPORT_DB_IPV4_REG if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] & IPV6CALC_DB_IPV4_TO_REGISTRY) { strftime(tempstring, sizeof(tempstring), "%Y%m%d-%H%M%S UTC", gmtime(&dbipv4addr_registry_unixtime)); fprintf(stderr, "%sBuiltIn: %-5s: %s (created: %s)\n", prefix, "IPv4", dbipv4addr_registry_status, tempstring); }; #endif #ifdef SUPPORT_DB_IPV6_REG if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] & IPV6CALC_DB_IPV6_TO_REGISTRY) { strftime(tempstring, sizeof(tempstring), "%Y%m%d-%H%M%S UTC", gmtime(&dbipv6addr_registry_unixtime)); fprintf(stderr, "%sBuiltIn: %-5s: %s (created: %s)\n", prefix, "IPv6", dbipv6addr_registry_status, tempstring); }; #endif #ifdef SUPPORT_DB_IEEE if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] & IPV6CALC_DB_IEEE_TO_INFO) { fprintf(stderr, "%sBuiltIn: %-5s: %s %s %s\n", prefix, "IEEE", libieee_iab_status, libieee_oui_status, libieee_oui36_status); }; #endif #else fprintf(stderr, "%sNo BuiltIn support compiled-in\n", prefix); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished"); return; }; /* * wrapper: string regarding used database infos */ char *libipv6calc_db_wrapper_BuiltIn_wrapper_db_info_used(void) { int type, i; char tempstring[NI_MAXHOST]; char tempstring2[NI_MAXHOST]; char *info; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called"); for (i = 0; i < BUILTIN_DB_MAX_BLOCKS_32; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "builtin_db_usage_map[%d]=%08x", i, (unsigned int) builtin_db_usage_map[i]); }; for (type = 0; type < 32 * BUILTIN_DB_MAX_BLOCKS_32; type++) { if ((builtin_db_usage_map[type / 32] & (1 << (type % 32))) != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "DB type used: %d", type); info = NULL; switch(type) { #ifdef SUPPORT_DB_IPV4_REG case BUILTIN_DB_IPV4_REGISTRY: snprintf(tempstring2, sizeof(tempstring2), "IPv4-REG:%s", dbipv4addr_registry_status); info = tempstring2; break; #endif #ifdef SUPPORT_DB_IPV6_REG case BUILTIN_DB_IPV6_REGISTRY: snprintf(tempstring2, sizeof(tempstring2), "IPv6-REG:%s", dbipv6addr_registry_status); info = tempstring2; break; #endif #ifdef SUPPORT_DB_IEEE case BUILTIN_DB_IAB: snprintf(tempstring2, sizeof(tempstring2), "IEEE:%s", libieee_iab_status); info = tempstring2; break; case BUILTIN_DB_OUI: snprintf(tempstring2, sizeof(tempstring2), "IEEE:%s", libieee_oui_status); info = tempstring2; break; case BUILTIN_DB_OUI36: snprintf(tempstring2, sizeof(tempstring2), "IEEE:%s", libieee_oui36_status); info = tempstring2; break; #endif #ifdef SUPPORT_DB_AS_REG case BUILTIN_DB_AS_REG: snprintf(tempstring2, sizeof(tempstring2), "AS-REG:%s", dbasn_registry_status); info = tempstring2; break; #endif #ifdef SUPPORT_DB_CC_REG case BUILTIN_DB_CC_REG: snprintf(tempstring2, sizeof(tempstring2), "CC-REG:%s", db_cc_registry_status); info = tempstring2; break; #endif }; if (info == NULL) { continue; }; // NULL pointer returned if (strlen(info) == 0) { continue; }; // empty string returned DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "type=%d info=%s", type, info); if (strlen(builtin_db_usage_string) > 0) { if (strstr(builtin_db_usage_string, info) != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "type=%d info=%s (skip, already displayed)", type, info); continue; }; // string already included snprintf(tempstring, sizeof(tempstring), "%s / %s", builtin_db_usage_string, info); } else { snprintf(tempstring, sizeof(tempstring), "%s", info); }; snprintf(builtin_db_usage_string, sizeof(builtin_db_usage_string), "%s", tempstring); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "type=%d builtin_db_usage_string=%s", type, builtin_db_usage_string); }; }; return(builtin_db_usage_string); }; /********************************************* * Abstract functions * *******************************************/ /* query for available features * ret=-1: unknown * 0 : not matching * 1 : ok */ int libipv6calc_db_wrapper_BuiltIn_has_features(uint32_t features) { int result = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called with feature value to test: 0x%08x", features); if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Return with result: %d", result); return(result); }; /* query db_unixtime by feature * ret=-1: unknown * 0 : not matching * 1 : ok */ time_t libipv6calc_db_wrapper_BuiltIn_db_unixtime_by_feature(uint32_t feature) { time_t result = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called with feature value to get db_unixtime: 0x%08x", feature); if ((IPV6CALC_DB_IPV4_TO_REGISTRY & feature) == feature) { #ifdef SUPPORT_DB_IPV4_REG result = dbipv4addr_registry_unixtime; #endif } else if ((IPV6CALC_DB_IPV6_TO_REGISTRY & feature) == feature) { #ifdef SUPPORT_DB_IPV6_REG result = dbipv6addr_registry_unixtime; #endif }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Return for feature=0x%08x db_unixtime=%ld", feature, (long int) result); return(result); }; #ifdef SUPPORT_BUILTIN /******************************* * Wrapper functions for BuiltIn *******************************/ // get registry number by AS number int libipv6calc_db_wrapper_BuiltIn_registry_num_by_as_num32(const uint32_t as_num32) { int result = REGISTRY_UNKNOWN; int max = MAXENTRIES_ARRAY(dbasn_assignment); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called with as_num32=%d max=%d", as_num32, max); #ifdef SUPPORT_DB_AS_REG // binary search int i, r = -1; int i_min = 0; int i_max = max; int i_old = -1; i = max / 2; while (i_old != i) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Search for as_num32=%d max=%d i=%d start=%d stop=%d", as_num32, max, i, dbasn_assignment[i].asn_start, dbasn_assignment[i].asn_stop); if (as_num32 < dbasn_assignment[i].asn_start) { // to high in array, jump down i_max = i; } else if (as_num32 > dbasn_assignment[i].asn_stop) { // to low in array, jump up i_min = i; } else { // hit r = i; break; }; i_old = i; i = (i_max - i_min) / 2 + i_min; }; if (r != -1) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished with success result: %d", dbasn_assignment[r].registry); result = dbasn_assignment[r].registry; BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_AS_REG); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished without success"); }; #endif return(result); }; // get registry number by CC index int libipv6calc_db_wrapper_BuiltIn_registry_num_by_cc_index(const uint16_t cc_index) { int result = REGISTRY_UNKNOWN; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called with cc_index=%d", cc_index); if (cc_index > COUNTRYCODE_INDEX_MAX) { goto END_libipv6calc_db_wrapper; } else if (cc_index > MAXENTRIES_ARRAY(cc_index_reg_assignment)) { goto END_libipv6calc_db_wrapper; } else if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { result = REGISTRY_IANA; goto END_libipv6calc_db_wrapper; } else if ((cc_index >= COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN) && (cc_index <= COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MAX)) { result = cc_index - COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN; goto END_libipv6calc_db_wrapper; }; #ifdef SUPPORT_DB_CC_REG result = cc_index_reg_assignment[cc_index].registry; BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_CC_REG); #endif END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Return registry=%s (%d) (cc_index=%d)", libipv6calc_registry_string_by_num(result), result, cc_index); return(result); }; /* * Get IEEE vendor string * in: macaddrp * mod: resultstring * out: 0=found, 1=not found */ int libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp) { int retval = 1; #ifdef SUPPORT_DB_IEEE int i; uint32_t idval, subidval; #endif DEBUGPRINT_NA(DEBUG_libieee, "called"); /* catch special ones */ if ((macaddrp->addr[0] == 0xfc && macaddrp->addr[1] == 0xfc)) { /* Linux special OUI for ISDN-NET or PLIP interfaces */ snprintf(resultstring, resultstring_length, "Linux ISDN-NET/PLIP"); return (0); }; if ( (macaddrp->addr[0] & 0x01) != 0 ) { /* Multicast */ return (1); }; #ifdef SUPPORT_DB_IEEE idval = (macaddrp->addr[0] << 16) | (macaddrp->addr[1] << 8) | macaddrp->addr[2]; subidval = (macaddrp->addr[3] << 16) | (macaddrp->addr[4] << 8) | macaddrp->addr[5]; /* run through IAB list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_iab); i++) { if (libieee_iab[i].id == idval) { /* major id match */ if (libieee_iab[i].subid_begin <= subidval && libieee_iab[i].subid_end >= subidval) { snprintf(resultstring, resultstring_length, "%s", libieee_iab[i].string_owner); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IAB); return (0); }; }; }; /* run through OUI36 list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_oui36); i++) { if (libieee_oui36[i].id == idval) { /* major id match */ if (libieee_oui36[i].subid_begin <= subidval && libieee_oui36[i].subid_end >= subidval) { snprintf(resultstring, resultstring_length, "%s", libieee_oui36[i].string_owner); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_OUI36); return (0); }; }; }; /* run through OUI list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_oui); i++) { if (libieee_oui[i].id == idval) { /* match */ snprintf(resultstring, resultstring_length, "%s", libieee_oui[i].string_owner); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_OUI); return (0); }; }; #else snprintf(resultstring, resultstring_length, "(IEEE databases not compiled in)"); return (0); #endif /* not found */ retval = 1; return (retval); }; /* * Get short IEEE vendor string * in: macaddrp * mod: resultstring * out: 0=found, 1=not found */ int libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_short_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp) { int retval = 1; #ifdef SUPPORT_DB_IEEE int i; uint32_t idval, subidval; #endif DEBUGPRINT_NA(DEBUG_libieee, "called"); /* catch special ones */ if ((macaddrp->addr[0] == 0xfc && macaddrp->addr[1] == 0xfc)) { /* Linux special OUI for ISDN-NET or PLIP interfaces */ snprintf(resultstring, resultstring_length, "Linux-ISDN-NET+PLIP"); return (0); }; if ( (macaddrp->addr[0] & 0x01) != 0 ) { /* Multicast */ return (1); }; #ifdef SUPPORT_DB_IEEE idval = (macaddrp->addr[0] << 16) | (macaddrp->addr[1] << 8) | macaddrp->addr[2]; subidval = (macaddrp->addr[3] << 16) | (macaddrp->addr[4] << 8) | macaddrp->addr[5]; /* run through IAB list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_iab); i++) { if (libieee_iab[i].id == idval) { /* major id match */ if (libieee_iab[i].subid_begin <= subidval && libieee_iab[i].subid_end >= subidval) { snprintf(resultstring, resultstring_length, "%s", libieee_iab[i].shortstring_owner); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IAB); return (0); }; }; }; /* run through OUI36 list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_oui36); i++) { if (libieee_oui36[i].id == idval) { /* major id match */ if (libieee_oui36[i].subid_begin <= subidval && libieee_oui36[i].subid_end >= subidval) { snprintf(resultstring, resultstring_length, "%s", libieee_oui36[i].shortstring_owner); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_OUI36); return (0); }; }; }; /* run through OUI list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_oui); i++) { if (libieee_oui[i].id == idval) { /* match */ snprintf(resultstring, resultstring_length, "%s", libieee_oui[i].shortstring_owner); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_OUI); return (0); }; }; #else snprintf(resultstring, resultstring_length, "(IEEE databases not compiled in)"); return (0); #endif /* not found */ retval = 1; return (retval); }; #ifdef SUPPORT_DB_IPV4_REG /* * dbipv4addr_assignment / get row (callback function for retrieving value from array) */ int libipv6calc_db_wrapper_BuiltIn_get_row_dbipv4addr_assignment(const uint32_t row, uint32_t *key_first_00_31_ptr, uint32_t *key_first_32_63_ptr, uint32_t *key_last_00_31_ptr, uint32_t *key_last_32_63_ptr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called fetching row: %lu", (unsigned long int) row); if (row >= MAXENTRIES_ARRAY(dbipv4addr_assignment)) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "row out of range: %lu (maximum: %lu)", (unsigned long int) row, (unsigned long int) MAXENTRIES_ARRAY(dbipv4addr_assignment) - 1); return(1); }; *key_first_00_31_ptr = dbipv4addr_assignment[row].first; *key_last_00_31_ptr = dbipv4addr_assignment[row].last; *key_first_32_63_ptr = 0; *key_last_32_63_ptr = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Keys for row: %lu key_first_00_31_ptr=%08lx key_last_00_31_ptr=%08lxu", (unsigned long int) row, (unsigned long int) *key_first_00_31_ptr, (unsigned long int) *key_last_00_31_ptr ); return(0); }; /* * dbipv4addr_assignment_iana / get row (callback function for retrieving value from array) */ int libipv6calc_db_wrapper_BuiltIn_get_row_dbipv4addr_assignment_iana(const uint32_t row, uint32_t *key_first_00_31_ptr, uint32_t *key_first_32_63_ptr, uint32_t *key_last_00_31_ptr, uint32_t *key_last_32_63_ptr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called fetching row: %lu", (unsigned long int) row); if (row >= MAXENTRIES_ARRAY(dbipv4addr_assignment_iana)) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "row out of range: %lu (maximum: %lu)", (unsigned long int) row, (unsigned long int) MAXENTRIES_ARRAY(dbipv4addr_assignment_iana) - 1); return(1); }; *key_first_00_31_ptr = dbipv4addr_assignment_iana[row].first; *key_last_00_31_ptr = dbipv4addr_assignment_iana[row].last; *key_first_32_63_ptr = 0; *key_last_32_63_ptr = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Keys for row: %lu key_first_00_31_ptr=%08lx key_last_00_31_ptr=%08lxu", (unsigned long int) row, (unsigned long int) *key_first_00_31_ptr, (unsigned long int) *key_last_00_31_ptr ); return(0); }; /* * dbipv4addr_info / get row (callback function for retrieving value from array) */ int libipv6calc_db_wrapper_BuiltIn_get_row_dbipv4addr_info(const uint32_t row, uint32_t *key_first_00_31_ptr, uint32_t *key_first_32_63_ptr, uint32_t *key_last_00_31_ptr, uint32_t *key_last_32_63_ptr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called fetching row: %lu", (unsigned long int) row); if (row >= MAXENTRIES_ARRAY(dbipv4addr_info)) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "row out of range: %lu (maximum: %lu)", (unsigned long int) row, (unsigned long int) MAXENTRIES_ARRAY(dbipv4addr_info) - 1); return(1); }; *key_first_00_31_ptr = dbipv4addr_info[row].first; *key_last_00_31_ptr = dbipv4addr_info[row].last; *key_first_32_63_ptr = 0; *key_last_32_63_ptr = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Keys for row: %lu key_first_00_31_ptr=%08lx key_last_00_31_ptr=%08lxu", (unsigned long int) row, (unsigned long int) *key_first_00_31_ptr, (unsigned long int) *key_last_00_31_ptr ); return(0); }; #endif // SUPPORT_DB_IPV4_REG /* * get registry number of an IPv4 address * * in: ipv4addr = IPv4 address structure * out: assignment number (-1 = no result) */ int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp) { uint32_t ipv4 = ipv4addr_getdword(ipv4addrp); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Given IPv4 address: %08x", (unsigned int) ipv4); int result = IPV4_ADDR_REGISTRY_UNKNOWN; #ifdef SUPPORT_DB_IPV4_REG int match = -1; match = libipv6calc_db_wrapper_get_entry_generic( NULL, // pointer to data IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type 0, // key format (not relevant) 32, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type MAXENTRIES_ARRAY(dbipv4addr_assignment), // number of rows ipv4, // lookup key MSB 0, // lookup key LSB NULL, // data ptr (not used in IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) libipv6calc_db_wrapper_BuiltIn_get_row_dbipv4addr_assignment // function pointer ); if (match > -1) { result = dbipv4addr_assignment[match].registry; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished with success result (dbipv4addr_assignment): match=%d reg=%d", match, result); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IPV4_REGISTRY); }; if (result == IPV4_ADDR_REGISTRY_UNKNOWN) { // IANA fallback DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Nothing found in dbipv4addr_assignment, fallback now to dbipv4addr_assignment_iana"); match = libipv6calc_db_wrapper_get_entry_generic( NULL, // pointer to data IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type 0, // key format (not relevant) 32, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type MAXENTRIES_ARRAY(dbipv4addr_assignment_iana), // number of rows ipv4, // lookup key MSB 0, // lookup key LSB NULL, // data ptr (not used in IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) libipv6calc_db_wrapper_BuiltIn_get_row_dbipv4addr_assignment_iana // function pointer ); if (match > -1) { result = dbipv4addr_assignment_iana[match].registry; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished with success result (dbipv4addr_assignment_iana): match=%d reg=%d", match, result); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IPV4_REGISTRY); } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished without success"); }; }; #endif // SUPPORT_DB_IPV4_REG return(result); }; /* * get info of an IPv4 address * * in: ipv4addr = IPv4 address structure * in: char* and size to fill * out: 0 = found, -1 = no result */ int libipv6calc_db_wrapper_BuiltIn_info_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *string, const size_t string_len) { uint32_t ipv4 = ipv4addr_getdword(ipv4addrp); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Given IPv4 address: %08x", (unsigned int) ipv4); int result = -1; #ifdef SUPPORT_DB_IPV4_REG int match = -1; match = libipv6calc_db_wrapper_get_entry_generic( NULL, // pointer to data IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type 0, // key format (not relevant) 32, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type MAXENTRIES_ARRAY(dbipv4addr_info), // number of rows ipv4, // lookup key MSB 0, // lookup key LSB NULL, // data ptr (not used in IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) libipv6calc_db_wrapper_BuiltIn_get_row_dbipv4addr_info // function pointer ); if (match > -1) { snprintf(string, string_len, "%s", dbipv4addr_info[match].info); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished with success result (dbipv4addr_info): match=%d info=\"%s\"", match, string); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IPV4_REGISTRY); result = 0; }; #else // SUPPORT_DB_IPV4_REG snprintf(string, string_len, "%s", ""); #endif // SUPPORT_DB_IPV4_REG return(result); }; #ifdef SUPPORT_DB_IPV6_REG /* * dbipv6addr_assignment / get row (callback function for retrieving value from array) */ int libipv6calc_db_wrapper_BuiltIn_get_row_dbipv6addr_assignment(const uint32_t row, uint32_t *key_base_00_31_ptr, uint32_t *key_base_32_63_ptr, uint32_t *key_mask_00_31_ptr, uint32_t *key_mask_32_63_ptr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called fetching row: %lu", (unsigned long int) row); if (row >= MAXENTRIES_ARRAY(dbipv6addr_assignment)) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "row out of range: %lu (maximum: %lu)", (unsigned long int) row, (unsigned long int) MAXENTRIES_ARRAY(dbipv6addr_assignment) - 1); return(-1); }; *key_base_00_31_ptr = dbipv6addr_assignment[row].ipv6addr_00_31; *key_base_32_63_ptr = dbipv6addr_assignment[row].ipv6addr_32_63; *key_mask_00_31_ptr = dbipv6addr_assignment[row].ipv6mask_00_31; *key_mask_32_63_ptr = dbipv6addr_assignment[row].ipv6mask_32_63; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Keys for row: %lu key_base_00_31_ptr=%08lx key_base_32_63_ptr=%08lx key_mask_00_31_ptr=%08lxu key_mask_32_63_ptr=%08lxu seqlongest=%d", (unsigned long int) row, (unsigned long int) *key_base_00_31_ptr, (unsigned long int) *key_base_32_63_ptr, (unsigned long int) *key_mask_00_31_ptr, (unsigned long int) *key_mask_32_63_ptr, dbipv6addr_assignment[row].prefixlength ); return(dbipv6addr_assignment[row].prefixlength); }; /* * dbipv6addr_info / get row (callback function for retrieving value from array) */ int libipv6calc_db_wrapper_BuiltIn_get_row_dbipv6addr_info(const uint32_t row, uint32_t *key_base_00_31_ptr, uint32_t *key_base_32_63_ptr, uint32_t *key_mask_00_31_ptr, uint32_t *key_mask_32_63_ptr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Called fetching row: %lu", (unsigned long int) row); if (row >= MAXENTRIES_ARRAY(dbipv6addr_info)) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "row out of range: %lu (maximum: %lu)", (unsigned long int) row, (unsigned long int) MAXENTRIES_ARRAY(dbipv6addr_info) - 1); return(-1); }; *key_base_00_31_ptr = dbipv6addr_info[row].ipv6addr_00_31; *key_base_32_63_ptr = dbipv6addr_info[row].ipv6addr_32_63; *key_mask_00_31_ptr = dbipv6addr_info[row].ipv6mask_00_31; *key_mask_32_63_ptr = dbipv6addr_info[row].ipv6mask_32_63; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Keys for row: %lu key_base_00_31_ptr=%08lx key_base_32_63_ptr=%08lx key_mask_00_31_ptr=%08lxu key_mask_32_63_ptr=%08lxu seqlongest=%d", (unsigned long int) row, (unsigned long int) *key_base_00_31_ptr, (unsigned long int) *key_base_32_63_ptr, (unsigned long int) *key_mask_00_31_ptr, (unsigned long int) *key_mask_32_63_ptr, dbipv6addr_info[row].prefixlength ); return(dbipv6addr_info[row].prefixlength); }; #endif // SUPPORT_DB_IPV6_REG /* * get registry number of an IPv6 address * * in: ipv6addr = IPv6 address structure * out: assignment number (-1 = no result) */ int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp) { uint32_t ipv6_00_31 = ipv6addr_getdword(ipv6addrp, 0); uint32_t ipv6_32_63 = ipv6addr_getdword(ipv6addrp, 1); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Given ipv6 prefix: %08x%08x", (unsigned int) ipv6_00_31, (unsigned int) ipv6_32_63); if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6BONE) != 0) { return(IPV6_ADDR_REGISTRY_6BONE); }; int result = IPV6_ADDR_REGISTRY_UNKNOWN; #ifdef SUPPORT_DB_IPV6_REG int match = -1; match = libipv6calc_db_wrapper_get_entry_generic( NULL, // pointer to data IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK, // key type 0, // key format (not relevant) 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST, // search type MAXENTRIES_ARRAY(dbipv6addr_assignment), // number of rows ipv6_00_31, // lookup key MSB ipv6_32_63, // lookup key LSB NULL, // data ptr (not used in IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) libipv6calc_db_wrapper_BuiltIn_get_row_dbipv6addr_assignment // function pointer ); /* result */ if ( match > -1 ) { result = dbipv6addr_assignment[match].registry; BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IPV6_REGISTRY); }; #endif return(result); }; /* * get info of an IPv6 address * * in: ipv6addr = IPv6 address structure * in: char* and size to fill * out: 0 = found, -1 = no result */ int libipv6calc_db_wrapper_BuiltIn_info_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *string, const size_t string_len) { uint32_t ipv6_00_31 = ipv6addr_getdword(ipv6addrp, 0); uint32_t ipv6_32_63 = ipv6addr_getdword(ipv6addrp, 1); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Given ipv6 prefix: %08x%08x", (unsigned int) ipv6_00_31, (unsigned int) ipv6_32_63); int result = -1; #ifdef SUPPORT_DB_IPV6_REG int match = -1; match = libipv6calc_db_wrapper_get_entry_generic( NULL, // pointer to data IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK, // key type 0, // key format (not relevant) 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type MAXENTRIES_ARRAY(dbipv6addr_info), // number of rows ipv6_00_31, // lookup key MSB ipv6_32_63, // lookup key LSB NULL, // data ptr (not used in IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_ARRAY) libipv6calc_db_wrapper_BuiltIn_get_row_dbipv6addr_info // function pointer ); if (match > -1) { snprintf(string, string_len, "%s", dbipv6addr_info[match].info); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_BuiltIn, "Finished with success result (dbipv6addr_info): match=%d info=\"%s\"", match, string); BUILTIN_DB_USAGE_MAP_TAG(BUILTIN_DB_IPV6_REGISTRY); result = 0; }; #else // SUPPORT_DB_IPV6_REG snprintf(string, string_len, "%s", ""); #endif // SUPPORT_DB_IPV6_REG return(result); }; #endif // SUPPORT_BUILTIN ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_BuiltIn.h000066400000000000000000000071501312366535500241320ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_BuiltIn.h * Version : $Id: c2b46ff17ec7c082606017226a37aaf486cf15b2 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper_BuiltIn.c */ #include "ipv6calctypes.h" #include "libmac.h" #include "libipv4addr.h" #include "libipv6addr.h" #ifndef _libipv6calc_db_wrapper_BuiltIn_h #define _libipv6calc_db_wrapper_BuiltIn_h 1 // database types #define BUILTIN_DB_IPV4_REGISTRY 1 #define BUILTIN_DB_IPV6_REGISTRY 2 #define BUILTIN_DB_IAB 3 #define BUILTIN_DB_OUI 4 #define BUILTIN_DB_OUI36 5 #define BUILTIN_DB_CC_REG 6 #define BUILTIN_DB_AS_REG 7 #define BUILTIN_DB_MAX (7 + 1) // features extern uint32_t wrapper_features_BuiltIn; /* ASN->Registry assignment structure */ typedef struct { const uint32_t asn_start; const uint32_t asn_stop; const uint8_t registry; } s_asn_assignment; /* CC->Registry assignment structure */ typedef struct { const char cc[3]; const uint8_t registry; } s_cc_reg_assignment; typedef struct { const uint8_t registry; } s_cc_index_reg_assignment; /* IPv4 address assignment structure */ typedef struct { const uint32_t first; const uint32_t last; const uint8_t registry; } s_ipv4addr_assignment; /* IPv4 address info structure */ typedef struct { const uint32_t first; const uint32_t last; const char* info; } s_ipv4addr_info; /* IPv6 address assignment structure */ typedef struct { const uint32_t ipv6addr_00_31; const uint32_t ipv6addr_32_63; const uint32_t ipv6mask_00_31; const uint32_t ipv6mask_32_63; const uint8_t prefixlength; /* prefix length (0-128) 8 bit*/ const uint8_t registry; } s_ipv6addr_assignment; /* IPv6 address info structure */ typedef struct { const uint32_t ipv6addr_00_31; const uint32_t ipv6addr_32_63; const uint32_t ipv6mask_00_31; const uint32_t ipv6mask_32_63; const uint8_t prefixlength; /* prefix length (0-128) 8 bit*/ const char* info; } s_ipv6addr_info; #endif extern int libipv6calc_db_wrapper_BuiltIn_wrapper_init(void); extern int libipv6calc_db_wrapper_BuiltIn_wrapper_cleanup(void); extern void libipv6calc_db_wrapper_BuiltIn_wrapper_info(char *string, const size_t size); extern void libipv6calc_db_wrapper_BuiltIn_wrapper_print_db_info(const int level_verbose, const char *prefix_string); extern char *libipv6calc_db_wrapper_BuiltIn_wrapper_db_info_used(void); extern int libipv6calc_db_wrapper_BuiltIn_has_features(uint32_t features); extern time_t libipv6calc_db_wrapper_BuiltIn_db_unixtime_by_feature(uint32_t feature); extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_as_num32(const uint32_t as_num32); extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_cc_index(const uint16_t cc_index); // IEEE extern int libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp); extern int libipv6calc_db_wrapper_BuiltIn_ieee_vendor_string_short_by_macaddr(char *resultstring, const size_t resultstring_length, const ipv6calc_macaddr *macaddrp); // IPv4 Registry extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp); extern int libipv6calc_db_wrapper_BuiltIn_info_by_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, char *string, const size_t string_len); // IPv6 Registry extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp); extern int libipv6calc_db_wrapper_BuiltIn_info_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, char *string, const size_t string_len); ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_DBIP.c000066400000000000000000001230531312366535500232760ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_DBIP.c * Version : $Id: f03b0556996d598e512a79c2bc2a2453dacb2dfb $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * ipv6calc DB-IP.com database wrapper */ #include #include #include #include #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "libipv6calc_db_wrapper.h" #ifdef SUPPORT_DBIP #include #include "libipv6calc_db_wrapper_DBIP.h" char dbip_db_dir[NI_MAXHOST] = DBIP_DB; static const char* wrapper_dbip_info = "DBIP"; // DB used for resolution after automatic election, which is currently done by checking for DB files and the sequence in the header file static int dbip_db_country_v4 = 0; static int dbip_db_country_v6 = 0; static int dbip_db_region_city_v4 = 0; static int dbip_db_region_city_v6 = 0; typedef struct { unsigned int num; int dbtype; int dbym; } s_ipv6calc_dbip_db; #define DBIP_FREE 0 #define DBIP_COMM 1 #define DBIP_MAX 2 static s_ipv6calc_dbip_db dbip_db_country_v4_best[DBIP_MAX]; static s_ipv6calc_dbip_db dbip_db_country_v6_best[DBIP_MAX]; static s_ipv6calc_dbip_db dbip_db_region_city_v4_best[DBIP_MAX]; static s_ipv6calc_dbip_db dbip_db_region_city_v6_best[DBIP_MAX]; // select FREE database if COMM is older than given months int dbip_db_comm_to_free_switch_min_delta_months = 12; // select better database of same product (COMM/FREE) only if not older than given months int dbip_db_better_max_delta_months = 1; // select only a specific DBIP db type int dbip_db_only_type = 0; #define DBIP_UNPACK_YM(dbym) ((dbym > 0) ? ((dbym % 12) + 1 + ((dbym / 12) + 2000) * 100) : 0) /* database usage map */ #define DBIP_DB_MAX_BLOCKS_32 2 // 0-63 static uint32_t dbip_db_usage_map[DBIP_DB_MAX_BLOCKS_32]; #define DBIP_DB_USAGE_MAP_TAG(db) if (db < (32 * DBIP_DB_MAX_BLOCKS_32)) { \ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Tag usage for db: %d", db); \ dbip_db_usage_map[db / 32] |= 1 << (db % 32); \ } else { \ fprintf(stderr, "FIXME: unsupported db value (exceed limit): %d (%d)\n", db, 32 * DBIP_DB_MAX_BLOCKS_32 - 1); \ exit(1); \ }; char dbip_db_usage_string[NI_MAXHOST] = ""; // local cache static DB* db_ptr_cache[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc)]; static db_recno_t db_recno_max_cache[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc)]; // creation time of databases time_t wrapper_db_unixtime_DBIP[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc)]; // local prototyping static char *libipv6calc_db_wrapper_DBIP_dbfilename(const unsigned int type); static int libipv6calc_db_wrapper_DBIP_close(DB *dbp); /* * function initialise the DBIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_DBIP_wrapper_init(void) { int i, dbym, dbtype, ret, product; DB *dbp; char datastring[NI_MAXHOST]; char resultstring[NI_MAXHOST]; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Check for standard DBIP databases"); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "custom directory: %s", dbip_db_dir); /* check available databases for resolution */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { // add features to implemented wrapper_features_by_source_implemented[IPV6CALC_DB_SOURCE_DBIP] |= libipv6calc_db_wrapper_DBIP_db_file_desc[i].features; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "DBIP database test for availability: %s", libipv6calc_db_wrapper_DBIP_db_file_desc[i].filename); if (libipv6calc_db_wrapper_DBIP_db_avail(libipv6calc_db_wrapper_DBIP_db_file_desc[i].number) == 1) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "DBIP database available: %s", libipv6calc_db_wrapper_DBIP_db_file_desc[i].description); wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] |= libipv6calc_db_wrapper_DBIP_db_file_desc[i].features; } else { // db not available continue; }; // clean local cache db_ptr_cache[i] = NULL; db_recno_max_cache[i] = -1; dbp = libipv6calc_db_wrapper_DBIP_open_type(libipv6calc_db_wrapper_DBIP_db_file_desc[i].number | 0x10000, NULL); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Error opening DBIP by type"); continue; }; // get dbcreated_unixtime ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbcreated_unixtime", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbcreated_unixtime', unsupported db file"); continue; }; dbym = atoi(datastring) / (60*60*24*30); if (dbym == 0) { snprintf(resultstring, sizeof(resultstring), "%s", "'dbcreated_unixtime' is not proper, unsupported db file"); continue; }; // get dbtype ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbtype", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbtype', unsupported db file"); continue; }; dbtype = atoi(datastring); if ((dbip_db_only_type > 0) && (dbip_db_only_type != dbtype)) { // not selected continue; }; if ((libipv6calc_db_wrapper_DBIP_db_file_desc[i].internal & IPV6CALC_DB_DBIP_INTERNAL_FREE) != 0) { product = DBIP_FREE; } else { product = DBIP_COMM; }; #define DBIP_DB_SELECT_BETTER(best) \ if ( \ (best.num == 0) \ || ( \ (best.dbym > 0) \ && ((best.dbym - dbym) <= dbip_db_better_max_delta_months) \ ) \ ) { \ best.num = libipv6calc_db_wrapper_DBIP_db_file_desc[i].number; \ best.dbym = dbym; \ best.dbtype = dbtype; \ }; // note: databases are listed in sequence "less data" before "more data" if ((libipv6calc_db_wrapper_DBIP_db_file_desc[i].features & IPV6CALC_DB_IPV4_TO_CC) != 0) { DBIP_DB_SELECT_BETTER(dbip_db_country_v4_best[product]) }; if ((libipv6calc_db_wrapper_DBIP_db_file_desc[i].features & IPV6CALC_DB_IPV6_TO_CC) != 0) { DBIP_DB_SELECT_BETTER(dbip_db_country_v6_best[product]) }; if ((libipv6calc_db_wrapper_DBIP_db_file_desc[i].features & (IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CITY)) != 0) { DBIP_DB_SELECT_BETTER(dbip_db_region_city_v4_best[product]) }; if ((libipv6calc_db_wrapper_DBIP_db_file_desc[i].features & (IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CITY)) != 0) { DBIP_DB_SELECT_BETTER(dbip_db_region_city_v6_best[product]) }; wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] |= libipv6calc_db_wrapper_DBIP_db_file_desc[i].features; }; // select free instead of comm, if comm is outdated and free available if (dbip_db_comm_to_free_switch_min_delta_months > 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "DBIP database priority check (comm->free) after months: %d", dbip_db_comm_to_free_switch_min_delta_months); #define SELECT_FREE_INSTEAD_OF_COMM(free, comm, final) \ if ((free.num > 0) && (comm.num > 0)) { \ if (free.dbym - comm.dbym > dbip_db_comm_to_free_switch_min_delta_months) { \ final = free.num; \ }; \ }; SELECT_FREE_INSTEAD_OF_COMM(dbip_db_country_v4_best[DBIP_FREE], dbip_db_country_v4_best[DBIP_COMM], dbip_db_country_v4) SELECT_FREE_INSTEAD_OF_COMM(dbip_db_country_v6_best[DBIP_FREE], dbip_db_country_v6_best[DBIP_COMM], dbip_db_country_v6) SELECT_FREE_INSTEAD_OF_COMM(dbip_db_region_city_v4_best[DBIP_FREE], dbip_db_region_city_v4_best[DBIP_COMM], dbip_db_region_city_v4) SELECT_FREE_INSTEAD_OF_COMM(dbip_db_region_city_v6_best[DBIP_FREE], dbip_db_region_city_v6_best[DBIP_COMM], dbip_db_region_city_v6) }; #define FILL_EMPTY(product, final) \ if ((product.num > 0) && (final == 0)) { \ final = product.num; \ }; // fill empty ones with comm FILL_EMPTY(dbip_db_country_v4_best[DBIP_COMM], dbip_db_country_v4) FILL_EMPTY(dbip_db_country_v6_best[DBIP_COMM], dbip_db_country_v6) FILL_EMPTY(dbip_db_region_city_v4_best[DBIP_COMM], dbip_db_region_city_v4) FILL_EMPTY(dbip_db_region_city_v6_best[DBIP_COMM], dbip_db_region_city_v6) // fill empty ones with free FILL_EMPTY(dbip_db_country_v4_best[DBIP_FREE], dbip_db_country_v4) FILL_EMPTY(dbip_db_country_v6_best[DBIP_FREE], dbip_db_country_v6) FILL_EMPTY(dbip_db_region_city_v4_best[DBIP_FREE], dbip_db_region_city_v4) FILL_EMPTY(dbip_db_region_city_v6_best[DBIP_FREE], dbip_db_region_city_v6) /* close handles which are not necessary further on */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (db_ptr_cache[i] != NULL) { if ( (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == dbip_db_country_v4_best[DBIP_FREE].num) || (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == dbip_db_country_v4_best[DBIP_COMM].num) || (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == dbip_db_country_v6_best[DBIP_FREE].num) || (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == dbip_db_country_v6_best[DBIP_COMM].num) ) { // database is in use continue; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Close further unused DBIP: type=%d desc='%s'", libipv6calc_db_wrapper_DBIP_db_file_desc[i].number, libipv6calc_db_wrapper_DBIP_db_file_desc[i].description); libipv6calc_db_wrapper_DBIP_close(db_ptr_cache[i]); }; }; wrapper_features |= wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP]; return 0; }; /* * wrapper: DBIP_close */ static int libipv6calc_db_wrapper_DBIP_close(DB *dbp) { int i; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); if (dbp != NULL) { /* cleanup cache entry */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (db_ptr_cache[i] == dbp) { db_ptr_cache[i] = NULL; db_recno_max_cache[i] = -1; }; }; dbp->close(dbp, 0); }; return(0); }; /* * function cleanup the DBIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_DBIP_wrapper_cleanup(void) { int i; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); #ifdef SUPPORT_DBIP for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (db_ptr_cache[i] != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Close DBIP: type=%d desc='%s'", libipv6calc_db_wrapper_DBIP_db_file_desc[i].number, libipv6calc_db_wrapper_DBIP_db_file_desc[i].description); libipv6calc_db_wrapper_DBIP_close(db_ptr_cache[i]); }; }; #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished"); return 0; }; /* * function info of DBIP wrapper * * in : ptr and size of string to be filled * out: modified string; */ void libipv6calc_db_wrapper_DBIP_wrapper_info(char* string, const size_t size) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); #ifdef SUPPORT_DBIP snprintf(string, size, "DBIP available databases: Country4=%d Country6=%d City4=%d City6=%d", (wrapper_features & IPV6CALC_DB_IPV4_TO_CC) ? 1 : 0, (wrapper_features & IPV6CALC_DB_IPV6_TO_CC) ? 1 : 0, (wrapper_features & IPV6CALC_DB_IPV4_TO_CITY) ? 1 : 0, (wrapper_features & IPV6CALC_DB_IPV6_TO_CITY) ? 1 : 0); #else snprintf(string, size, "No DBIP support built-in"); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished"); return; }; /* * function print database info of DBIP wrapper * * in : (void) * out: (void) */ void libipv6calc_db_wrapper_DBIP_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { DB *dbp; int i, type, count = 0; const char *prefix = "\0"; if (prefix_string != NULL) { prefix = prefix_string; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); IPV6CALC_DB_FEATURE_INFO(prefix, IPV6CALC_DB_SOURCE_DBIP) #ifdef SUPPORT_DBIP fprintf(stderr, "%sDBIP: info of available databases in directory: %s\n", prefix, dbip_db_dir); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { type = libipv6calc_db_wrapper_DBIP_db_file_desc[i].number; if (libipv6calc_db_wrapper_DBIP_db_avail(type)) { // DBIP returned that database is available dbp = libipv6calc_db_wrapper_DBIP_open_type(type | 0x10000, NULL); if (dbp == NULL) { fprintf(stderr, "%sDBIP: %-30s: %-30s (CAN'T OPEN database information)\n", prefix, libipv6calc_db_wrapper_DBIP_db_file_desc[i].description, libipv6calc_db_wrapper_DBIP_dbfilename(type)); } else { fprintf(stderr, "%sDBIP: %-30s: %-30s (%s)\n", prefix, libipv6calc_db_wrapper_DBIP_db_file_desc[i].description, libipv6calc_db_wrapper_DBIP_db_file_desc[i].filename, libipv6calc_db_wrapper_DBIP_database_info(type)); libipv6calc_db_wrapper_DBIP_close(dbp); count++; }; } else { if (level_verbose == LEVEL_VERBOSE2) { fprintf(stderr, "%sDBIP: %-30s: %-30s (%s)\n", prefix, libipv6calc_db_wrapper_DBIP_db_file_desc[i].description, libipv6calc_db_wrapper_DBIP_dbfilename(type), strerror(errno)); }; continue; }; }; if (count == 0) { fprintf(stderr, "%sDBIP: NO available databases found in directory: %s\n", prefix, dbip_db_dir); } else { if (level_verbose >= LEVEL_VERBOSE2) { fprintf(stderr, "%sDBIP: detected best databases FREE Country4=%-3d DB%-2d %6d Country6=%-3d DB%-2d %6d City4=%-3d DB%-2d %6d City6=%-3d DB%-2d %6d\n" , prefix , dbip_db_country_v4_best[DBIP_FREE].num , dbip_db_country_v4_best[DBIP_FREE].dbtype , DBIP_UNPACK_YM(dbip_db_country_v4_best[DBIP_FREE].dbym) , dbip_db_country_v6_best[DBIP_FREE].num , dbip_db_country_v6_best[DBIP_FREE].dbtype , DBIP_UNPACK_YM(dbip_db_country_v6_best[DBIP_FREE].dbym) , dbip_db_region_city_v4_best[DBIP_FREE].num , dbip_db_region_city_v4_best[DBIP_FREE].dbtype , DBIP_UNPACK_YM(dbip_db_region_city_v4_best[DBIP_FREE].dbym) , dbip_db_region_city_v6_best[DBIP_FREE].num , dbip_db_region_city_v6_best[DBIP_FREE].dbtype , DBIP_UNPACK_YM(dbip_db_region_city_v6_best[DBIP_FREE].dbym) ); fprintf(stderr, "%sDBIP: detected best databases COMM Country4=%-3d DB%-2d %6d Country6=%-3d DB%-2d %6d City4=%-3d DB%-2d %6d City6=%-3d DB%-2d %6d\n" , prefix , dbip_db_country_v4_best[DBIP_COMM].num , dbip_db_country_v4_best[DBIP_COMM].dbtype , DBIP_UNPACK_YM(dbip_db_country_v4_best[DBIP_COMM].dbym) , dbip_db_country_v6_best[DBIP_COMM].num , dbip_db_country_v6_best[DBIP_COMM].dbtype , DBIP_UNPACK_YM(dbip_db_country_v6_best[DBIP_COMM].dbym) , dbip_db_region_city_v4_best[DBIP_COMM].num , dbip_db_region_city_v4_best[DBIP_COMM].dbtype , DBIP_UNPACK_YM(dbip_db_region_city_v4_best[DBIP_COMM].dbym) , dbip_db_region_city_v6_best[DBIP_COMM].num , dbip_db_region_city_v6_best[DBIP_COMM].dbtype , DBIP_UNPACK_YM(dbip_db_region_city_v6_best[DBIP_COMM].dbym) ); } else if (level_verbose >= LEVEL_VERBOSE) { fprintf(stderr, "%sDBIP: detected best databases FREE Country4=%-3d Country6=%-3d City4=%-3d City6=%-3d\n" , prefix , dbip_db_country_v4_best[DBIP_FREE].num , dbip_db_country_v6_best[DBIP_FREE].num , dbip_db_region_city_v4_best[DBIP_FREE].num , dbip_db_region_city_v6_best[DBIP_FREE].num ); fprintf(stderr, "%sDBIP: detected best databases COMM Country4=%-3d Country6=%-3d City4=%-3d City6=%-3d\n" , prefix , dbip_db_country_v4_best[DBIP_COMM].num , dbip_db_country_v6_best[DBIP_COMM].num , dbip_db_region_city_v4_best[DBIP_COMM].num , dbip_db_region_city_v6_best[DBIP_COMM].num ); }; if (level_verbose >= LEVEL_VERBOSE) { fprintf(stderr, "%sDBIP: selected best databases normal Country4=%-3d%s Country6=%-3d%s City4=%-3d%s City6=%-3d\n" , prefix , dbip_db_country_v4 , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , dbip_db_country_v6 , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , dbip_db_region_city_v4 , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , dbip_db_region_city_v6 ); if (dbip_db_comm_to_free_switch_min_delta_months > 0) { fprintf(stderr, "%sDBIP: selected best databases method: COMM older than %d months are deselected in case of FREE is available\n" , prefix , dbip_db_comm_to_free_switch_min_delta_months ); }; if (dbip_db_better_max_delta_months > 0) { fprintf(stderr, "%sDBIP: selected best databases method: COMM/FREE with more features are only selected in case not older than %d months of already found COMM/FREE\n" , prefix , dbip_db_better_max_delta_months ); }; if (dbip_db_only_type > 0) { fprintf(stderr, "%sDBIP: selected best databases method: by applying given DB type filter: %d\n" , prefix , dbip_db_only_type ); }; }; }; #else // SUPPORT_DBIP snfprintf(stderr, string, size, "%sNo DBIP support built-in", prefix); #endif // SUPPORT_DBIP DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished"); return; }; /* * wrapper: string regarding used database infos */ char *libipv6calc_db_wrapper_DBIP_wrapper_db_info_used(void) { int type, i; char tempstring[NI_MAXHOST]; char *info; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); for (i = 0; i < DBIP_DB_MAX_BLOCKS_32; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "dbip_db_usage_map[%d]=%08x", i, (unsigned int) dbip_db_usage_map[i]); }; for (type = 0; type < 32 * DBIP_DB_MAX_BLOCKS_32; type++) { if ((dbip_db_usage_map[type / 32] & (1 << (type % 32))) != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "DB type used: %d", type); info = libipv6calc_db_wrapper_DBIP_database_info(type); if (info == NULL) { continue; }; // NULL pointer returned if (strlen(info) == 0) { continue; }; // empty string returned DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "type=%d info=%s", type, info); if (strlen(dbip_db_usage_string) > 0) { if (strstr(dbip_db_usage_string, info) != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "type=%d info=%s (skip, already displayed)", type, info); continue; }; // string already included snprintf(tempstring, sizeof(tempstring), "%s / %s", dbip_db_usage_string, info); } else { snprintf(tempstring, sizeof(tempstring), "%s", info); }; snprintf(dbip_db_usage_string, sizeof(dbip_db_usage_string), "%s", tempstring); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "type=%d dbip_db_usage_string=%s", type, dbip_db_usage_string); }; }; return(dbip_db_usage_string); }; #ifdef SUPPORT_DBIP /******************************* * Wrapper extension functions for DBIP *******************************/ /* * wrapper extension: DBIP_dbfilename */ static char *libipv6calc_db_wrapper_DBIP_dbfilename(const unsigned int type) { static char tempstring[NI_MAXHOST]; int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called: %s type=%d", wrapper_dbip_info, type); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return(NULL); }; snprintf(tempstring, sizeof(tempstring), "%s/%s", dbip_db_dir, libipv6calc_db_wrapper_DBIP_db_file_desc[i].filename); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished: %s type=%d has filename=%s", wrapper_dbip_info, type, tempstring); return(tempstring); }; /* * wrapper extension: DBIP_dbdescription */ const char *libipv6calc_db_wrapper_DBIP_dbdescription(const unsigned int type) { int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called: %s type=%d", wrapper_dbip_info, type); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return("unknown"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished: %s type=%d has description=%s", wrapper_dbip_info, type, libipv6calc_db_wrapper_DBIP_db_file_desc[i].description); return(libipv6calc_db_wrapper_DBIP_db_file_desc[i].description); }; /* * wrapper extension: DBIP_db_avail * ret: 1=avail 0=not-avail */ int libipv6calc_db_wrapper_DBIP_db_avail(const unsigned int type) { char *filename; int r = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called: %s type=%d", wrapper_dbip_info, type); filename = libipv6calc_db_wrapper_DBIP_dbfilename(type); if (filename == NULL) { goto END_libipv6calc_db_wrapper; }; r = (access(filename, R_OK) == 0) ? 1:0; if (r == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished: %s type=%d (still unknown) (r=%d: %s)", wrapper_dbip_info, type, r, strerror(errno)); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Finished: %s type=%d (%s) (r=%d)", wrapper_dbip_info, type, filename, r); }; END_libipv6calc_db_wrapper: return(r); }; /* * wrapper extension: DBIP_open_type * input: * type (mandatory) * if | 0x10000 -> info is opened and ptr is not cached * db_recno_max_ptr (set if not NULL) */ DB *libipv6calc_db_wrapper_DBIP_open_type(const unsigned int type_flag, long int *db_recno_max_ptr) { DB *dbp = NULL; DBC *dbcp; DBT key, data; int type = (type_flag & 0xffff); int info_selector = ((type_flag & 0x10000) != 0) ? 1 : 0; char *filename; int entry = -1, i; int ret; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called: %s type=%d (%s)", wrapper_dbip_info, type, (info_selector == 0) ? "data" : "info"); // check for valid type for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == (type & 0xffff)) { entry = i; break; }; }; if (entry < 0) { return(NULL); }; if ((info_selector == 0) && (db_ptr_cache[entry] != NULL)) { // already open dbp = db_ptr_cache[entry]; if (db_recno_max_ptr != NULL) { *db_recno_max_ptr = db_recno_max_cache[entry]; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database already opened (cached) dbp=%p type=%d recno_max: %u", dbp, type, db_recno_max_cache[entry]); goto END_libipv6calc_db_wrapper; }; // retrieve filename filename = libipv6calc_db_wrapper_DBIP_dbfilename(type); if (filename == NULL) { return(NULL); }; if ((ret = db_create(&dbp, NULL, 0)) != 0) { if (ipv6calc_quiet == 0) { fprintf(stderr, "db_create: %s\n", db_strerror(ret)); }; return(NULL); }; if ((ret = dbp->open(dbp, NULL, filename, (info_selector == 0) ? "data" : "info", (info_selector == 0) ? DB_RECNO : DB_BTREE, DB_RDONLY, 0444)) != 0) { if (ipv6calc_quiet == 0) { fprintf(stderr, "db->open failed: %s (%s)\n", db_strerror(ret), filename); }; return(NULL); }; if (info_selector == 0) { // cache entry db_ptr_cache[entry] = dbp; // get amount of entries in database memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); /* Acquire a cursor for the database. */ if ((ret = dbp->cursor(dbp, NULL, &dbcp, 0)) != 0) { dbp->err(dbp, ret, "DB->cursor"); goto END_libipv6calc_db_wrapper_close_error; }; /* Walk through the database and print out the key/data pairs. */ if ((ret = dbcp->c_get(dbcp, &key, &data, DB_LAST)) != 0) { // dbp->err(dbp, ret, "DB->cursor/DB_LAST"); // do not print error message if db is empty goto END_libipv6calc_db_wrapper_close_error; }; /* Close the cursor. */ if ((ret = dbcp->c_close(dbcp)) != 0) { dbp->err(dbp, ret, "DBcursor->close"); goto END_libipv6calc_db_wrapper_close_error; }; db_recno_max_cache[entry] = *(db_recno_t *)key.data; if (db_recno_max_cache[entry] < 2) { goto END_libipv6calc_db_wrapper_close_error; }; if (db_recno_max_ptr != NULL) { *db_recno_max_ptr = db_recno_max_cache[entry]; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database successfully opened (fill-cache), dbp=%p type=%d recno_max=%u", dbp, type, db_recno_max_cache[entry]); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database successfully opened, dbp=%p type=%d (info)", dbp, type); }; // jump to "good end" goto END_libipv6calc_db_wrapper; END_libipv6calc_db_wrapper_close_error: DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "error opening database, close now"); libipv6calc_db_wrapper_DBIP_close(dbp); dbp = NULL; END_libipv6calc_db_wrapper: return(dbp); }; /******************************* * Wrapper functions for DBIP *******************************/ /* * wrapper: DBIP_database_info */ char *libipv6calc_db_wrapper_DBIP_database_info(const unsigned int type) { static char resultstring[NI_MAXHOST]; char datastring[NI_MAXHOST]; char tempstring[NI_MAXHOST]; DB *dbp; int ret, i, entry = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called: %s", wrapper_dbip_info); // check for valid type for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_DBIP_db_file_desc); i++) { if (libipv6calc_db_wrapper_DBIP_db_file_desc[i].number == (type & 0xffff)) { entry = i; break; }; }; if (entry < 0) { ERRORPRINT_WA("Invalid type (FIX CODE): %d", type); goto END_libipv6calc_db_wrapper; }; dbp = libipv6calc_db_wrapper_DBIP_open_type(type | 0x10000, NULL); if (dbp == NULL) { snprintf(resultstring, sizeof(resultstring), "%s", "(CAN'T OPEN database information)"); goto END_libipv6calc_db_wrapper; }; // get dbusage ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbusage", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbusage', unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; if (strcmp(datastring, "ipv6calc") != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "dbusage!=ipv6calc, unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database dbusage string: %s", datastring); // get dbdate ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbdate", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbdate', unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; char year[5]; strncpy(year, datastring, 4); year[4] = '\0'; snprintf(resultstring, sizeof(resultstring), "DBIP-%d/%s %s Copyright (c) %s db-ip.com All Rights Reserved" , type , datastring , (type <= 4) ? "FREE" : "COMM" , year ); // get dbcreated_unixtime ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbcreated_unixtime", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbcreated_unixtime', unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; wrapper_db_unixtime_DBIP[entry] = atoi(datastring); if (wrapper_db_unixtime_DBIP[entry] == 0) { snprintf(resultstring, sizeof(resultstring), "%s", "'dbcreated_unixtime' is not proper, unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "wrapper_db_unixtime_DBIP=%ld", (long int) wrapper_db_unixtime_DBIP[entry]); strftime(datastring, sizeof(datastring), "%Y%m%d-%H%M%S UTC", gmtime(&wrapper_db_unixtime_DBIP[entry])); snprintf(tempstring, sizeof(tempstring), "%s, created: %s", resultstring, datastring); snprintf(resultstring, sizeof(resultstring), "%s", tempstring); END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_DBIP_close(dbp); END_libipv6calc_db_wrapper: return(resultstring); }; /* * wrapper: DBIP_get_country_short */ char *libipv6calc_db_wrapper_DBIP_get_country_short(DB *dbp, char *ip) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called: %s ip=%s", wrapper_dbip_info, ip); // not implemented so far if (dbp == NULL) { }; // make compiler happy (avoid unused "...") //return(DBIP_get_country_short(loc, ip)); return(NULL); }; /********************************************* * Abstract functions * *******************************************/ /* function query for feature set * ret=-1: unknown * 0 : not matching * 1 : ok */ int libipv6calc_db_wrapper_DBIP_has_features(uint32_t features) { int result = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called with feature value to test: 0x%08x", features); if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Return with result: %d", result); return(result); }; /* country code */ int libipv6calc_db_wrapper_DBIP_wrapper_country_code_by_addr(const ipv6calc_ipaddr *ipaddrp, char *country, const size_t country_len) { int result = -1; DB *dbp; static char resultstring[NI_MAXHOST]; int DBIP_type = 0; long int recno_max; //DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called with addr=%s proto=%d", addr, proto); if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { DBIP_type = dbip_db_country_v4; if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] & IPV6CALC_DB_IPV4_TO_CC) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "No DBIP database supporting IPv4 country available"); goto END_libipv6calc_db_wrapper; }; } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { DBIP_type = dbip_db_country_v6; if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] & IPV6CALC_DB_IPV6_TO_CC) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "No DBIP database supporting IPv6 country available"); goto END_libipv6calc_db_wrapper; }; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Unsupported proto: %d", ipaddrp->proto); goto END_libipv6calc_db_wrapper; }; dbp = libipv6calc_db_wrapper_DBIP_open_type(DBIP_type, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Error opening DBIP by type"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "database opened type=%d recno_max=%ld", DBIP_type, recno_max); result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type (ipaddrp->proto == IPV6CALC_PROTO_IPV4) ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4, // key format (ipaddrp->proto == IPV6CALC_PROTO_IPV4) ? 32 : 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB ipaddrp->addr[1], // lookup key LSB resultstring, // data ptr NULL // function pointer ); if (result < 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "no match found"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "resultstring=%s", resultstring); char *token, *ptrptr; int token_count = 0; // split result string ptrptr = resultstring; token = strsep(&ptrptr, ";"); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database entry found %d: %s", token_count, token); if (token_count == 1) { /* country (is always 1st token) */ if (strlen(token) > 0) { snprintf(country, country_len, "%s", token); } else { snprintf(country, country_len, "%s", "-"); }; break; }; /* get next token */ token = strsep(&ptrptr, ";"); }; if (token_count != 1) { ERRORPRINT_WA("data has more entries than expected, corrupt database: %d", token_count); goto END_libipv6calc_db_wrapper_close; }; if (strlen(country) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "did not return a record for 'country'"); }; result = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "result entry=%d: country=%s", result, country); DBIP_DB_USAGE_MAP_TAG(DBIP_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_DBIP_close(dbp); END_libipv6calc_db_wrapper: return(result); }; /* city (& region) */ int libipv6calc_db_wrapper_DBIP_wrapper_city_by_addr(const ipv6calc_ipaddr *ipaddrp, char *city, const size_t city_len, char *region, const size_t region_len) { int result = -1; DB *dbp; static char resultstring[NI_MAXHOST]; int DBIP_type = 0; long int recno_max; int region_token = 2; // default int city_token = 3; // default //DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called with addr=%s proto=%d", addr, proto); if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { DBIP_type = dbip_db_region_city_v4; if ((DBIP_type == DBIP_DB_IPV4_LOCATION) || (DBIP_type == DBIP_DB_IPV4_FULL)) { city_token++; // location/full have district inbetween; }; if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] & IPV6CALC_DB_IPV4_TO_CITY) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "No DBIP database supporting IPv4 city/region available"); goto END_libipv6calc_db_wrapper; }; } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { DBIP_type = dbip_db_region_city_v6; if ((DBIP_type == DBIP_DB_IPV6_LOCATION) || (DBIP_type == DBIP_DB_IPV6_FULL)) { city_token++; // location/full have district inbetween; }; if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] & IPV6CALC_DB_IPV6_TO_CITY) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "No DBIP database supporting IPv6 city/region available"); goto END_libipv6calc_db_wrapper; }; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Unsupported proto: %d", ipaddrp->proto); goto END_libipv6calc_db_wrapper; }; dbp = libipv6calc_db_wrapper_DBIP_open_type(DBIP_type, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Error opening DBIP by type"); goto END_libipv6calc_db_wrapper; }; result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type (ipaddrp->proto == IPV6CALC_PROTO_IPV4) ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4, // key format (ipaddrp->proto == IPV6CALC_PROTO_IPV4) ? 32 : 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB ipaddrp->addr[1], // lookup key LSB resultstring, // data ptr NULL // function pointer ); if (result < 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "no match found"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "resultstring=%s", resultstring); char *token, *ptrptr; int token_count = 0; // split result string ptrptr = resultstring; token = strsep(&ptrptr, ";"); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database entry found %d: %s", token_count, token); if (token_count == region_token) { /* region */ if (strlen(token) > 0) { snprintf(region, region_len, "%s", token); } else { snprintf(region, region_len, "%s", "-"); }; } else if (token_count == city_token) { /* city */ if (strlen(token) > 0) { snprintf(city, city_len, "%s", token); } else { snprintf(city, city_len, "%s", "-"); }; break; }; /* get next token */ token = strsep(&ptrptr, ";"); }; if (token_count != city_token) { ERRORPRINT_WA("data has more entries than expected, corrupt database: %d", token_count); goto END_libipv6calc_db_wrapper_close; }; if (strlen(region) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "did not return a record for 'region'"); }; if (strlen(city) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "did not return a record for 'city'"); }; result = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "result entry=%d: city=%s region=%s", result, city, region); DBIP_DB_USAGE_MAP_TAG(DBIP_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_DBIP_close(dbp); END_libipv6calc_db_wrapper: return(result); }; /* all information */ int libipv6calc_db_wrapper_DBIP_all_by_addr(const ipv6calc_ipaddr *ipaddrp, DBIP_Record *recordp) { int result = -1; DB *dbp; static char resultstring[NI_MAXHOST]; int DBIP_type = 0; long int recno_max; // clear structure snprintf(recordp->country , DBIP_SIZE_COUNTRY , "%s", ""); snprintf(recordp->stateprov, DBIP_SIZE_STATEPROV, "%s", ""); snprintf(recordp->district , DBIP_SIZE_DISTRICT , "%s", ""); snprintf(recordp->city , DBIP_SIZE_CITY , "%s", ""); snprintf(recordp->zipcode , DBIP_SIZE_ZIPCODE , "%s", ""); recordp->latitude = 0; recordp->longitude = 0; recordp->geoname_id = 0; recordp->timezone_offset = 0; snprintf(recordp->timezone_name , DBIP_SIZE_TIMEZONE_NAME, "%s", ""); snprintf(recordp->isp_name , DBIP_SIZE_ISP_NAME , "%s", ""); snprintf(recordp->connection_type , DBIP_SIZE_CONN_TYPE , "%s", ""); snprintf(recordp->organization_name, DBIP_SIZE_ORG_NAME , "%s", ""); int t_country = 1, t_stateprov = 0, t_district = 0, t_city = 0, t_zipcode = 0, t_latitude = 0 , t_longitude = 0, t_geoname_id = 0, \ t_timezone_offset = 0, t_timezone_name = 0, t_isp_name = 0, t_connection_type = 0, t_organization_name = 0; if (ipaddrp->proto == IPV6CALC_PROTO_IPV4) { DBIP_type = dbip_db_region_city_v4; if (DBIP_type == 0) { // fallback DBIP_type = dbip_db_country_v4; }; } else if (ipaddrp->proto == IPV6CALC_PROTO_IPV6) { DBIP_type = dbip_db_region_city_v6; if (DBIP_type == 0) { // fallback DBIP_type = dbip_db_country_v6; }; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Unsupported proto: %d", ipaddrp->proto); goto END_libipv6calc_db_wrapper; }; // set token numbers // country : country // city : country,stateprov,city // location: country,stateprov,district,city,zipcode,latitude,longitude,geoname_id,timezone_offset,timezone_name // isp : country,isp_name,connection_type,organization_name // full : country,stateprov,district,city,zipcode,latitude,longitude,geoname_id,timezone_offset,timezone_name,isp_name,connection_type,organization_name DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "DBIP_type: %d", DBIP_type); if ((DBIP_type == DBIP_DB_IPV4_CITY) || (DBIP_type == DBIP_DB_IPV6_CITY)) { t_stateprov = 2; t_city = 3; } else if ((DBIP_type == DBIP_DB_IPV4_LOCATION) || (DBIP_type == DBIP_DB_IPV4_FULL) \ || (DBIP_type == DBIP_DB_IPV6_LOCATION) || (DBIP_type == DBIP_DB_IPV6_FULL) ) { t_stateprov = 2; t_district = 3; t_city = 4; t_zipcode = 5; t_latitude = 6; t_longitude = 7; t_geoname_id = 8; t_timezone_offset = 9; t_timezone_name = 10; if ((DBIP_type == DBIP_DB_IPV4_FULL) || (DBIP_type == DBIP_DB_IPV6_FULL)) { t_isp_name = 11; t_connection_type = 12; t_organization_name = 13; }; } else if ((DBIP_type == DBIP_DB_IPV4_ISP) || (DBIP_type == DBIP_DB_IPV6_ISP)) { t_isp_name = 2; t_connection_type = 3; t_organization_name = 4; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Unsupported DBIP_type: %d", DBIP_type); goto END_libipv6calc_db_wrapper; }; dbp = libipv6calc_db_wrapper_DBIP_open_type(DBIP_type, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Error opening DBIP by type"); goto END_libipv6calc_db_wrapper; }; result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type (ipaddrp->proto == IPV6CALC_PROTO_IPV4) ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4, // key format (ipaddrp->proto == IPV6CALC_PROTO_IPV4) ? 32 : 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB ipaddrp->addr[1], // lookup key LSB resultstring, // data ptr NULL // function pointer ); if (result < 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "no match found"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "resultstring=%s", resultstring); char *token, *ptrptr; int token_count = 0; // split result string ptrptr = resultstring; token = strsep(&ptrptr, ";"); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "Database entry found %d: %s", token_count, token); if (token_count == t_country) { // country snprintf(recordp->country , DBIP_SIZE_COUNTRY , "%s", token); } else if (token_count == t_stateprov) { snprintf(recordp->stateprov, DBIP_SIZE_STATEPROV, "%s", token); } else if (token_count == t_district) { snprintf(recordp->district , DBIP_SIZE_DISTRICT , "%s", token); } else if (token_count == t_city) { snprintf(recordp->city , DBIP_SIZE_CITY , "%s", token); } else if (token_count == t_zipcode) { snprintf(recordp->zipcode , DBIP_SIZE_ZIPCODE , "%s", token); } else if (token_count == t_latitude) { recordp->latitude = atof(token); } else if (token_count == t_longitude) { recordp->longitude = atof(token); } else if (token_count == t_geoname_id) { recordp->geoname_id = atol(token); } else if (token_count == t_timezone_offset) { recordp->timezone_offset = atof(token); } else if (token_count == t_timezone_name) { snprintf(recordp->timezone_name , DBIP_SIZE_TIMEZONE_NAME, "%s", token); } else if (token_count == t_isp_name) { snprintf(recordp->isp_name , DBIP_SIZE_ISP_NAME , "%s", token); } else if (token_count == t_connection_type) { snprintf(recordp->connection_type , DBIP_SIZE_CONN_TYPE , "%s", token); } else if (token_count == t_organization_name) { snprintf(recordp->organization_name, DBIP_SIZE_ORG_NAME , "%s", token); }; /* get next token */ token = strsep(&ptrptr, ";"); }; result = 0; DBIP_DB_USAGE_MAP_TAG(DBIP_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper: return(result); }; #endif #endif ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_DBIP.h000066400000000000000000000136011312366535500233000ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_DBIP.h * Version : $Id: dd146087d1b83a6be0bd278dd89657faa979ce14 $ * Copyright : 2014-2017 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper_DBIP.c */ #include "ipv6calctypes.h" #ifndef _libipv6calc_db_wrapper_DBIP_h #define _libipv6calc_db_wrapper_DBIP_h 1 // database types #define DBIP_DB_IPV4_COUNTRY 1 #define DBIP_DB_IPV6_COUNTRY 2 #define DBIP_DB_IPV4_CITY 3 #define DBIP_DB_IPV6_CITY 4 #define DBIP_DB_IPV4_ISP 5 // commercial #define DBIP_DB_IPV6_ISP 6 // commercial #define DBIP_DB_IPV4_LOCATION 7 // commercial #define DBIP_DB_IPV6_LOCATION 8 // commercial #define DBIP_DB_IPV4_FULL 9 // commercial #define DBIP_DB_IPV6_FULL 10 // commercial #define DBIP_DB_MAX DBIP_DB_IPV6_FULL #define IPV6CALC_DB_DBIP_INTERNAL_FREE 0x00000001 #define IPV6CALC_DB_DBIP_INTERNAL_COMM 0x00000002 /*@unused@*/ static const db_file_desc2 libipv6calc_db_wrapper_DBIP_db_file_desc[] = { // country { DBIP_DB_IPV4_COUNTRY , "ipv6calc-dbip-ipv4-country.db" , "IPv4 CountryCode (FREE)" , IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 , IPV6CALC_DB_DBIP_INTERNAL_FREE }, { DBIP_DB_IPV6_COUNTRY , "ipv6calc-dbip-ipv6-country.db" , "IPv6 CountryCode (FREE)" , IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 , IPV6CALC_DB_DBIP_INTERNAL_FREE }, // city { DBIP_DB_IPV4_CITY , "ipv6calc-dbip-ipv4-city.db" , "IPv4 City/Region/CountryCode (FREE)" , IPV6CALC_DB_IPV4_TO_CITY | IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 , IPV6CALC_DB_DBIP_INTERNAL_FREE }, { DBIP_DB_IPV6_CITY , "ipv6calc-dbip-ipv6-city.db" , "IPv6 City/Region/CountryCode (FREE)" , IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 , IPV6CALC_DB_DBIP_INTERNAL_FREE }, // isp { DBIP_DB_IPV4_ISP , "ipv6calc-dbip-ipv4-isp.db" , "IPv4 ISP (COMM)", IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 , IPV6CALC_DB_DBIP_INTERNAL_COMM }, { DBIP_DB_IPV6_ISP , "ipv6calc-dbip-ipv6-isp.db" , "IPv6 ISP (COMM)", IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 , IPV6CALC_DB_DBIP_INTERNAL_COMM }, // location { DBIP_DB_IPV4_LOCATION , "ipv6calc-dbip-ipv4-location.db" , "IPv4 Location (COMM)" , IPV6CALC_DB_IPV4_TO_CITY | IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 | IPV6CALC_DB_IPV4_TO_COUNTRY , IPV6CALC_DB_DBIP_INTERNAL_COMM }, { DBIP_DB_IPV6_LOCATION , "ipv6calc-dbip-ipv6-location.db" , "IPv6 Location (COMM)" , IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 | IPV6CALC_DB_IPV6_TO_COUNTRY , IPV6CALC_DB_DBIP_INTERNAL_COMM }, // full { DBIP_DB_IPV4_FULL , "ipv6calc-dbip-ipv4-full.db" , "IPv4 Location/ISP (COMM)" , IPV6CALC_DB_IPV4_TO_CITY | IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 | IPV6CALC_DB_IPV4_TO_COUNTRY , IPV6CALC_DB_DBIP_INTERNAL_COMM }, { DBIP_DB_IPV6_FULL , "ipv6calc-dbip-ipv6-full.db" , "IPv6 Location/ISP (COMM)" , IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 | IPV6CALC_DB_IPV6_TO_COUNTRY , IPV6CALC_DB_DBIP_INTERNAL_COMM }, }; // features extern uint32_t wrapper_features_DBIP; typedef struct { FILE *filehandle; uint8_t databasetype; uint8_t databasecolumn; uint8_t databaseday; uint8_t databasemonth; uint8_t databaseyear; uint32_t databasecount; uint32_t databaseaddr; uint32_t ipversion; } DBIP; // from https://db-ip.com/db/ #define DBIP_SIZE_COUNTRY 2+1 #define DBIP_SIZE_STATEPROV 80+1 #define DBIP_SIZE_DISTRICT 80+1 #define DBIP_SIZE_CITY 80+1 #define DBIP_SIZE_ZIPCODE 20+1 #define DBIP_SIZE_TIMEZONE_NAME 64+1 #define DBIP_SIZE_ISP_NAME 128+1 #define DBIP_SIZE_CONN_TYPE 8+1 #define DBIP_SIZE_ORG_NAME 128+1 typedef struct { char country[DBIP_SIZE_COUNTRY]; char stateprov[DBIP_SIZE_STATEPROV]; char district[DBIP_SIZE_CITY]; char city[DBIP_SIZE_CITY]; char zipcode[DBIP_SIZE_ZIPCODE]; float latitude; float longitude; uint32_t geoname_id; float timezone_offset; char timezone_name[DBIP_SIZE_TIMEZONE_NAME]; char isp_name[DBIP_SIZE_ISP_NAME]; char connection_type[DBIP_SIZE_CONN_TYPE]; char organization_name[DBIP_SIZE_ORG_NAME]; } DBIP_Record; #endif extern int libipv6calc_db_wrapper_DBIP_wrapper_init(void); extern int libipv6calc_db_wrapper_DBIP_wrapper_cleanup(void); extern void libipv6calc_db_wrapper_DBIP_wrapper_info(char* string, const size_t size); extern void libipv6calc_db_wrapper_DBIP_wrapper_print_db_info(const int level_verbose, const char *prefix_string); extern char *libipv6calc_db_wrapper_DBIP_wrapper_db_info_used(void); extern int libipv6calc_db_wrapper_DBIP_wrapper_country_code_by_addr(const ipv6calc_ipaddr *ipaddrp, char *country, const size_t country_len); extern int libipv6calc_db_wrapper_DBIP_wrapper_city_by_addr(const ipv6calc_ipaddr *ipaddrp, char *city, const size_t city_len, char *region, const size_t region_len); extern int libipv6calc_db_wrapper_DBIP_has_features(const uint32_t features); #ifdef SUPPORT_DBIP #include extern char dbip_db_dir[NI_MAXHOST]; extern int libipv6calc_db_wrapper_DBIP_db_avail(const unsigned int type); extern DB *libipv6calc_db_wrapper_DBIP_open_type(const unsigned int type_flag, long int *db_recno_max_ptr); extern const char *libipv6calc_db_wrapper_DBIP_dbdescription(const unsigned int type); extern char *libipv6calc_db_wrapper_DBIP_database_info(const unsigned int type); extern int dbip_db_comm_to_free_switch_min_delta_months; extern int dbip_db_only_type; extern int libipv6calc_db_wrapper_DBIP_all_by_addr(const ipv6calc_ipaddr *ipaddrp, DBIP_Record *recordp); #endif ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_External.c000066400000000000000000001135511312366535500243440ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_External.c * Version : $Id: af345ab59e25184f306f6a5821864e7f67214848 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * ipv6calc External (superseeding BuiltIn) database wrapper */ #include #include #include #include #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "libipv6calc_db_wrapper.h" #ifdef SUPPORT_EXTERNAL #include #include "libipv6calc_db_wrapper_External.h" char external_db_dir[NI_MAXHOST] = EXTERNAL_DB; static const char* wrapper_external_info = "External"; /* database usage map */ #define EXTERNAL_DB_MAX_BLOCKS_32 2 // 0-63 static uint32_t external_db_usage_map[EXTERNAL_DB_MAX_BLOCKS_32]; #define EXTERNAL_DB_USAGE_MAP_TAG(db) if (db < (32 * EXTERNAL_DB_MAX_BLOCKS_32)) { \ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Tag usage for db: %d", db); \ external_db_usage_map[db / 32] |= 1 << (db % 32); \ } else { \ fprintf(stderr, "FIXME: unsupported db value (exceed limit): %d (%d)\n", db, 32 * EXTERNAL_DB_MAX_BLOCKS_32 - 1); \ exit(1); \ }; char external_db_usage_string[NI_MAXHOST] = ""; // local cache #define IPV6CALC_DBD_SUBDB_MAX 3 static DB *db_ptr_cache[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc)][IPV6CALC_DBD_SUBDB_MAX]; static db_recno_t db_recno_max_cache[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc)][IPV6CALC_DBD_SUBDB_MAX]; // creation time of databases time_t wrapper_db_unixtime_External[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc)]; // local prototyping static char *libipv6calc_db_wrapper_External_dbfilename(unsigned int type); static char *libipv6calc_db_wrapper_External_database_info(unsigned int type); /* * function initialise the External wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_External_wrapper_init(void) { int i, j; char *result; DB *dbp; long int recno_max; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Called"); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Check for External databases in directory: %s", external_db_dir); /* check available databases for resolution */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { // clean local cache for (j = 0; j < IPV6CALC_DBD_SUBDB_MAX; j++) { db_ptr_cache[i][j] = NULL; db_recno_max_cache[i][j] = -1; }; wrapper_db_unixtime_External[i] = 0; // add features to implemented wrapper_features_by_source_implemented[IPV6CALC_DB_SOURCE_EXTERNAL] |= libipv6calc_db_wrapper_External_db_file_desc[i].features; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "External database test for availability: %s", libipv6calc_db_wrapper_External_db_file_desc[i].filename); if (libipv6calc_db_wrapper_External_db_avail(libipv6calc_db_wrapper_External_db_file_desc[i].number) != 1) { // no file found continue; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "External database available: %s type=%d", libipv6calc_db_wrapper_External_db_file_desc[i].description, libipv6calc_db_wrapper_External_db_file_desc[i].number); result = libipv6calc_db_wrapper_External_database_info(libipv6calc_db_wrapper_External_db_file_desc[i].number); if (strlen(result) == 0) { // no proper database continue; }; if (wrapper_db_unixtime_External[i] == 0) { // no proper database continue; }; // finally mark database features as available wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] |= libipv6calc_db_wrapper_External_db_file_desc[i].features; // more sophisticated check for "data-info" if (libipv6calc_db_wrapper_External_db_file_desc[i].number == EXTERNAL_DB_IPV4_REGISTRY) { dbp = libipv6calc_db_wrapper_External_open_type(EXTERNAL_DB_IPV4_REGISTRY | 0x40000, &recno_max); if (dbp == NULL) { // disable feature wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] &= ~IPV6CALC_DB_IPV4_TO_INFO; }; } else if (libipv6calc_db_wrapper_External_db_file_desc[i].number == EXTERNAL_DB_IPV6_REGISTRY) { dbp = libipv6calc_db_wrapper_External_open_type(EXTERNAL_DB_IPV6_REGISTRY | 0x40000, &recno_max); if (dbp == NULL) { // disable feature wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] &= ~IPV6CALC_DB_IPV6_TO_INFO; }; }; }; wrapper_features |= wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL]; return 0; }; /* * wrapper: External_close */ static int libipv6calc_db_wrapper_External_close(DB *dbp) { int i, j; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Called"); if (dbp != NULL) { /* cleanup cache entry */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { for (j = 0; j < IPV6CALC_DBD_SUBDB_MAX; j++) { if (db_ptr_cache[i][j] == dbp) { db_ptr_cache[i][j] = NULL; db_recno_max_cache[i][j] = -1; }; }; }; dbp->close(dbp, 0); }; return(0); }; /* * function cleanup the External wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_External_wrapper_cleanup(void) { int i, j; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Called"); #ifdef SUPPORT_EXTERNAL for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { if (db_ptr_cache[i] != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Close External: type=%d desc='%s'", libipv6calc_db_wrapper_External_db_file_desc[i].number, libipv6calc_db_wrapper_External_db_file_desc[i].description); for (j = 0; j < IPV6CALC_DBD_SUBDB_MAX; j++) { libipv6calc_db_wrapper_External_close(db_ptr_cache[i][j]); }; }; }; #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Finished"); return 0; }; /* * function info of External wrapper * * in : ptr and size of string to be filled * out: modified string; */ void libipv6calc_db_wrapper_External_wrapper_info(char* string, const size_t size) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Called"); #ifdef SUPPORT_EXTERNAL //snprintf(string, size, "External available databases: Country4=%d Country6=%d ASN4=%d ASN6=%d City4=%d City6=%d", (wrapper_features & IPV6CALC_DB_IPV4_TO_CC) ? 1 : 0, (wrapper_features & IPV6CALC_DB_IPV6_TO_CC) ? 1 : 0, external_asnum_v4, external_asnum_v6, external_city_v4, external_city_v6); snprintf(string, size, "External available databases: TODO"); #else snprintf(string, size, "No External support built-in"); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Finished"); return; }; /* * function print database info of External wrapper * * in : (void) * out: (void) */ void libipv6calc_db_wrapper_External_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { int i, type, count = 0; const char *prefix = "\0"; if (prefix_string != NULL) { prefix = prefix_string; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Called"); IPV6CALC_DB_FEATURE_INFO(prefix, IPV6CALC_DB_SOURCE_EXTERNAL) #ifdef SUPPORT_EXTERNAL printf("%sExternal: info of available databases in directory: %s\n", prefix, external_db_dir); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { type = libipv6calc_db_wrapper_External_db_file_desc[i].number; if (libipv6calc_db_wrapper_External_db_avail(type)) { printf("%sExternal: %-20s: %-40s (%s)\n", prefix, libipv6calc_db_wrapper_External_db_file_desc[i].description, libipv6calc_db_wrapper_External_db_file_desc[i].filename, libipv6calc_db_wrapper_External_database_info(type)); count++; } else { if (level_verbose == LEVEL_VERBOSE2) { printf("%sExternal: %-20s: %-40s (%s)\n", prefix, libipv6calc_db_wrapper_External_db_file_desc[i].description, libipv6calc_db_wrapper_External_dbfilename(type), strerror(errno)); }; continue; }; }; if (count == 0) { printf("%sExternal: NO available databases found in directory: %s\n", prefix, external_db_dir); }; #else // SUPPORT_EXTERNAL snprintf(string, size, "%sNo External support built-in", prefix); #endif // SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Finished"); return; }; /* * wrapper: string regarding used database infos */ char *libipv6calc_db_wrapper_External_wrapper_db_info_used(void) { int type, i; char tempstring[NI_MAXHOST]; char *info; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Called"); for (i = 0; i < EXTERNAL_DB_MAX_BLOCKS_32; i++) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "external_db_usage_map[%d]=%08x", i, (unsigned int) external_db_usage_map[i]); }; for (type = 0; type < 32 * EXTERNAL_DB_MAX_BLOCKS_32; type++) { if ((external_db_usage_map[type / 32] & (1 << (type % 32))) != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "DB type used: %d", type); info = libipv6calc_db_wrapper_External_database_info(type); if (info == NULL) { continue; }; // NULL pointer returned if (strlen(info) == 0) { continue; }; // empty string returned DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "type=%d info=%s", type, info); if (strlen(external_db_usage_string) > 0) { if (strstr(external_db_usage_string, info) != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "type=%d info=%s (skip, already displayed)", type, info); continue; }; // string already included snprintf(tempstring, sizeof(tempstring), "%s / %s", external_db_usage_string, info); } else { snprintf(tempstring, sizeof(tempstring), "%s", info); }; snprintf(external_db_usage_string, sizeof(external_db_usage_string), "%s", tempstring); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "type=%d external_db_usage_string=%s", type, external_db_usage_string); }; }; return(external_db_usage_string); }; #ifdef SUPPORT_EXTERNAL /******************************* * Wrapper extension functions for External *******************************/ /* * wrapper extension: External_dbfilename */ static char *libipv6calc_db_wrapper_External_dbfilename(unsigned int type) { static char tempstring[NI_MAXHOST]; int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called: %s type=%d", wrapper_external_info, type); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { if (libipv6calc_db_wrapper_External_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return(NULL); }; snprintf(tempstring, sizeof(tempstring), "%s/%s", external_db_dir, libipv6calc_db_wrapper_External_db_file_desc[i].filename); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Finished: %s type=%d has filename=%s", wrapper_external_info, type, tempstring); return(tempstring); }; /* * wrapper extension: External_dbdescription */ const char *libipv6calc_db_wrapper_External_dbdescription(const unsigned int type) { int entry = -1; unsigned int i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called: %s type=%d", wrapper_external_info, type); for (i = 0; i < sizeof(libipv6calc_db_wrapper_External_db_file_desc) / sizeof(libipv6calc_db_wrapper_External_db_file_desc[0]); i++) { if (libipv6calc_db_wrapper_External_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return("unknown"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Finished: %s type=%d has description=%s", wrapper_external_info, type, libipv6calc_db_wrapper_External_db_file_desc[i].description); return(libipv6calc_db_wrapper_External_db_file_desc[i].description); }; /* * wrapper extension: External_db_avail * ret: 1=avail 0=not-avail */ int libipv6calc_db_wrapper_External_db_avail(const unsigned int type) { char *filename; int r = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called: %s type=%d", wrapper_external_info, type); filename = libipv6calc_db_wrapper_External_dbfilename(type); if (filename == NULL) { goto END_libipv6calc_db_wrapper; }; r = (access(filename, R_OK) == 0) ? 1:0; if (r == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Finished: %s type=%d (still unknown) (r=%d: %s)", wrapper_external_info, type, r, strerror(errno)); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Finished: %s type=%d (%s) (r=%d)", wrapper_external_info, type, filename, r); }; END_libipv6calc_db_wrapper: return(r); }; /* * wrapper extension: External_open_type * input: * type (mandatory) * if | 0x10000 -> info is opened and ptr is not cached * if | 0x20000 -> data-iana is opened * if | 0x40000 -> data-info is opened * db_recno_max_ptr (set if not NULL) */ DB *libipv6calc_db_wrapper_External_open_type(const unsigned int type_flag, long int *db_recno_max_ptr) { DB *dbp = NULL; DBC *dbcp; DBT key, data; int type = (type_flag & 0xffff); int info_selector = ((type_flag & 0x10000) != 0) ? 1 : 0; int data_iana_selector = ((type_flag & 0x20000) != 0) ? 1 : 0; int data_info_selector = ((type_flag & 0x40000) != 0) ? 1 : 0; int subdb = 0; // data char *filename; int entry = -1, i; int ret; const char *type_text; if (info_selector != 0) { type_text = "info"; } else if (data_iana_selector != 0) { type_text = "data-iana"; subdb = 1; } else if (data_info_selector != 0) { type_text = "data-info"; subdb = 2; } else { type_text = "data"; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called: %s type=%d (%s)", wrapper_external_info, type, type_text); // check for valid type for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { if (libipv6calc_db_wrapper_External_db_file_desc[i].number == (type & 0xffff)) { entry = i; break; }; }; if (entry < 0) { return(NULL); }; if ((info_selector == 0) && (db_ptr_cache[entry][subdb] != NULL)) { // already open dbp = db_ptr_cache[entry][subdb]; if (db_recno_max_ptr != NULL) { *db_recno_max_ptr = db_recno_max_cache[entry][subdb]; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database already opened (cached) dbp=%p type=%d subdb=%d recno_max: %u", dbp, type, subdb, db_recno_max_cache[entry][subdb]); goto END_libipv6calc_db_wrapper; }; // retrieve filename filename = libipv6calc_db_wrapper_External_dbfilename(type); if (filename == NULL) { return(NULL); }; if (libipv6calc_db_wrapper_External_db_avail(type) != 1) { return(NULL); }; if ((ret = db_create(&dbp, NULL, 0)) != 0) { if (ipv6calc_quiet == 0) { fprintf(stderr, "db_create: %s\n", db_strerror(ret)); }; return(NULL); }; if ((ret = dbp->open(dbp, NULL, filename, type_text, (info_selector == 0) ? DB_RECNO : DB_BTREE, DB_RDONLY, 0444)) != 0) { if ((ipv6calc_quiet == 0) && (data_info_selector == 0)) { fprintf(stderr, "db->open failed: %s (%s) subdb=%s\n", db_strerror(ret), filename, type_text); }; return(NULL); }; if (info_selector == 0) { // cache entry db_ptr_cache[entry][subdb] = dbp; // get amount of entries in database memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); /* Acquire a cursor for the database. */ if ((ret = dbp->cursor(dbp, NULL, &dbcp, 0)) != 0) { dbp->err(dbp, ret, "DB->cursor"); goto END_libipv6calc_db_wrapper_close_error; }; /* Walk through the database and print out the key/data pairs. */ if ((ret = dbcp->c_get(dbcp, &key, &data, DB_LAST)) != 0) { dbp->err(dbp, ret, "DB->cursor/DB_LAST"); goto END_libipv6calc_db_wrapper_close_error; }; /* Close the cursor. */ if ((ret = dbcp->c_close(dbcp)) != 0) { dbp->err(dbp, ret, "DBcursor->close"); goto END_libipv6calc_db_wrapper_close_error; }; db_recno_max_cache[entry][subdb] = *(db_recno_t *)key.data; if (db_recno_max_cache[entry][subdb] < 2) { goto END_libipv6calc_db_wrapper_close_error; }; if (db_recno_max_ptr != NULL) { *db_recno_max_ptr = db_recno_max_cache[entry][subdb]; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database successfully opened (fill-cache), dbp=%p type=%d subdb=%d recno_max=%u", dbp, type, subdb, db_recno_max_cache[entry][subdb]); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database successfully opened, dbp=%p type=%d (info)", dbp, type); }; // jump to "good end" goto END_libipv6calc_db_wrapper; END_libipv6calc_db_wrapper_close_error: DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "error opening database, close now"); libipv6calc_db_wrapper_External_close(dbp); dbp = NULL; END_libipv6calc_db_wrapper: return(dbp); }; /******************************* * Wrapper functions for External *******************************/ /* * wrapper: External_database_info */ char *libipv6calc_db_wrapper_External_database_info(const unsigned int type) { static char resultstring[NI_MAXHOST] = ""; char datastring[NI_MAXHOST]; char tempstring[NI_MAXHOST]; int ret, i, entry = -1; DB *dbp; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called: %s", wrapper_external_info); // check for valid type for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { if (libipv6calc_db_wrapper_External_db_file_desc[i].number == (type & 0xffff)) { entry = i; break; }; }; if (entry < 0) { ERRORPRINT_WA("Invalid type (FIX CODE): %d", type); goto END_libipv6calc_db_wrapper; }; dbp = libipv6calc_db_wrapper_External_open_type(type | 0x10000, NULL); if (dbp == NULL) { snprintf(resultstring, sizeof(resultstring), "%s", "(CAN'T OPEN database information)"); goto END_libipv6calc_db_wrapper; }; // get dbusage ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbusage", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbusage', unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; if (strcmp(datastring, "ipv6calc") != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "dbusage!=ipv6calc, unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database dbusage string: %s", datastring); // get dbdate ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbdate", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbdate', unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; snprintf(resultstring, sizeof(resultstring), "EXTDB-%d/%s", type, datastring); // get dbcreated_unixtime ret = libipv6calc_db_wrapper_bdb_get_data_by_key(dbp, "dbcreated_unixtime", datastring, sizeof(datastring)); if (ret != 0) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve 'dbcreated_unixtime', unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; wrapper_db_unixtime_External[entry] = atoi(datastring); if (wrapper_db_unixtime_External[entry] == 0) { snprintf(resultstring, sizeof(resultstring), "%s", "'dbcreated_unixtime' is not proper, unsupported db file"); goto END_libipv6calc_db_wrapper_close; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "wrapper_db_unixtime_External=%ld", (long int) wrapper_db_unixtime_External[entry]); strftime(datastring, sizeof(datastring), "%Y%m%d-%H%M%S UTC", gmtime(&wrapper_db_unixtime_External[entry])); snprintf(tempstring, sizeof(tempstring), "%s, created: %s", resultstring, datastring); snprintf(resultstring, sizeof(resultstring), "%s", tempstring); END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_External_close(dbp); END_libipv6calc_db_wrapper: return(resultstring); }; /********************************************* * Abstract functions * *******************************************/ /* query for available features * ret=-1: unknown * 0 : not matching * 1 : ok */ int libipv6calc_db_wrapper_External_has_features(uint32_t features) { int result = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called with feature value to test: 0x%08x", features); if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Return with result: %d", result); return(result); }; /* query db_unixtime by feature * ret=-1: unknown * 0 : not matching * 1 : ok */ time_t libipv6calc_db_wrapper_External_db_unixtime_by_feature(uint32_t feature) { time_t result = 0; int i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called with feature value to get db_unixtime: 0x%08x", feature); // run through entries for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc); i++) { if ((libipv6calc_db_wrapper_External_db_file_desc[i].features & feature) == feature) { // found if (wrapper_db_unixtime_External[i] > result) { result = wrapper_db_unixtime_External[i]; }; }; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Return for feature=0x08x db_unixtime=%ld", (long int) result); return(result); }; /* registry by address */ int libipv6calc_db_wrapper_External_wrapper_registry_by_addr(const char *addr, const int proto) { int result = REGISTRY_UNKNOWN; int i; DB *dbp; static char resultstring[NI_MAXHOST]; char *data_ptr = ""; int External_type = 0; ipv6calc_ipv4addr ipv4addr; ipv6calc_ipv6addr ipv6addr; uint32_t ipv4 = 0, ipv6_00_31 = 0, ipv6_32_63 = 0; long int recno_max; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { External_type = EXTERNAL_DB_IPV4_REGISTRY; if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] & IPV6CALC_DB_IPV4_TO_REGISTRY) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "No external database supporting IPv4 registry available"); goto END_libipv6calc_db_wrapper; }; // convert char to structure result = addr_to_ipv4addrstruct(addr, resultstring, sizeof(resultstring), &ipv4addr); } else if (proto == 6) { External_type = EXTERNAL_DB_IPV6_REGISTRY; if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] & IPV6CALC_DB_IPV6_TO_REGISTRY) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "No external database supporting IPv6 registry available"); goto END_libipv6calc_db_wrapper; }; // convert char to structure result = addr_to_ipv6addrstruct(addr, resultstring, sizeof(resultstring), &ipv6addr); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Unsupported proto: %d", proto); goto END_libipv6calc_db_wrapper; }; if (result != 0) { ERRORPRINT_WA("error converting address string for proto %d: %s", proto, addr); goto END_libipv6calc_db_wrapper; }; dbp = libipv6calc_db_wrapper_External_open_type(External_type, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Error opening External by type"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "database opened type=%d recno_max=%ld", External_type, recno_max); if (proto == 4) { ipv4 = ipv4addr_getdword(&ipv4addr); } else if (proto == 6) { ipv6_00_31 = ipv6addr_getdword(&ipv6addr, 0); ipv6_32_63 = ipv6addr_getdword(&ipv6addr, 1); }; result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type (proto == 4) ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x2 : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_DEC_32x4, // key format (proto == 4) ? 32 : 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows (proto == 4) ? ipv4 : ipv6_00_31, // lookup key MSB (proto == 4) ? 0 : ipv6_32_63, // lookup key LSB resultstring, // data ptr NULL // function pointer ); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "resultstring=%s", resultstring); char datastring[NI_MAXHOST]; char *token, *cptr, **ptrptr; ptrptr = &cptr; int token_count = 0; snprintf(datastring, sizeof(datastring), "%s", data_ptr); // split result string token = strtok_r(resultstring, ";", ptrptr); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database entry found %d: %s", token_count, token); if (token_count == 1) { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_registries); i++) { if (strcmp(token, ipv6calc_registries[i].tokensimple) == 0) { result = ipv6calc_registries[i].number; break; }; }; }; /* get next token */ token = strtok_r(NULL, ";", ptrptr); }; if (token_count != 1) { ERRORPRINT_WA("data has more entries than expected, corrupt database: %d", token_count); goto END_libipv6calc_db_wrapper_close; }; if (result == REGISTRY_UNKNOWN) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "did not return a record for 'registry'"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "result registry=%d", result); EXTERNAL_DB_USAGE_MAP_TAG(External_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_External_close(dbp); END_libipv6calc_db_wrapper: return(result); }; /* * get registry number of an IPv4/IPv6 address * * in: ipaddr * out: assignment number (-1 = no result) */ int libipv6calc_db_wrapper_External_registry_num_by_addr(const ipv6calc_ipaddr *ipaddrp) { DB *dbp, *dbp_iana; long int recno_max; static char resultstring[NI_MAXHOST]; char *data_ptr = ""; int i, result; int retval = REGISTRY_UNKNOWN; int External_type; switch (ipaddrp->proto) { case IPV6CALC_PROTO_IPV4: External_type = EXTERNAL_DB_IPV4_REGISTRY; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Given IPv4 address: %08x", (unsigned int) ipaddrp->addr[0]); break; case IPV6CALC_PROTO_IPV6: External_type = EXTERNAL_DB_IPV6_REGISTRY; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Given IPv6 address prefix (0-63): %08x%08x", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); break; default: ERRORPRINT_WA("unsupported protocol: %d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); break; }; // data (standard) dbp = libipv6calc_db_wrapper_External_open_type(External_type, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Error opening External by type"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "database opened type=%d recno_max=%ld dbp=%p", External_type, recno_max, dbp); result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST \ : IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK, // key type (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 \ : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_WITH_VALUE_32x4 , // key format (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? 32 \ : 64, // key length (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY \ : IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? 0 \ : ipaddrp->addr[1], // lookup key LSB resultstring, // data ptr NULL // function pointer ); if (result >= 0 ) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "found match in database type=%d", External_type); goto END_libipv6calc_db_wrapper_match; }; if (ipaddrp->proto != IPV6CALC_PROTO_IPV4) { goto END_libipv6calc_db_wrapper; }; // data-iana (fallback for IPv4 only) DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "no found match in database type=%d, fallback to IANA data now for: %08x", External_type, ipaddrp->addr[0]); dbp_iana = libipv6calc_db_wrapper_External_open_type(External_type | 0x20000, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Error opening External by type"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "database opened type=%d (data-iana) recno_max=%ld", External_type, recno_max); result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp_iana, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST, // key type IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2, // key format 32, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB 0, // lookup key LSB resultstring, // data ptr NULL // function pointer ); libipv6calc_db_wrapper_External_close(dbp_iana); if (result >= 0 ) { goto END_libipv6calc_db_wrapper_match; }; goto END_libipv6calc_db_wrapper; END_libipv6calc_db_wrapper_match: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "resultstring=%s", resultstring); char datastring[NI_MAXHOST]; char *token, *cptr, **ptrptr; ptrptr = &cptr; int token_count = 0; snprintf(datastring, sizeof(datastring), "%s", data_ptr); // split result string token = strtok_r(resultstring, ";", ptrptr); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database entry found %d: %s", token_count, token); if (token_count == 1) { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_registries); i++) { if (strcmp(token, ipv6calc_registries[i].tokensimple) == 0) { retval = ipv6calc_registries[i].number; break; }; }; }; /* get next token */ token = strtok_r(NULL, ";", ptrptr); }; if (token_count != 1) { ERRORPRINT_WA("data has more entries than expected, corrupt database: %d", token_count); goto END_libipv6calc_db_wrapper_close; }; if (retval == REGISTRY_UNKNOWN) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "did not return a record for 'registry'"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "result registry=%d", retval); EXTERNAL_DB_USAGE_MAP_TAG(External_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_External_close(dbp); END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "retval=%d", retval); return(retval); }; /* * get country code of an IPv4/IPv6 address * * in: ipaddr * mod: country code * out: status of retrievment (0=success, -1=problem) */ int libipv6calc_db_wrapper_External_country_code_by_addr(const ipv6calc_ipaddr *ipaddrp, char *country, const size_t country_len) { DB *dbp; long int recno_max; static char resultstring[NI_MAXHOST]; char *data_ptr = ""; int result; int retval = -1; int External_type; switch (ipaddrp->proto) { case IPV6CALC_PROTO_IPV4: External_type = EXTERNAL_DB_IPV4_COUNTRYCODE; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Given IPv4 address: %08x", (unsigned int) ipaddrp->addr[0]); break; case IPV6CALC_PROTO_IPV6: External_type = EXTERNAL_DB_IPV6_COUNTRYCODE; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Given IPv6 address prefix (0-63): %08x%08x", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); break; default: ERRORPRINT_WA("unsupported protocol: %d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); break; }; // data (standard) dbp = libipv6calc_db_wrapper_External_open_type(External_type, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Error opening External by type"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "database opened type=%d recno_max=%ld dbp=%p", External_type, recno_max, dbp); result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST \ : IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK, // key type (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 \ : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4 , // key format (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? 32 \ : 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? 0 \ : ipaddrp->addr[1], // lookup key LSB resultstring, // data ptr NULL // function pointer ); if (result < 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "no match found"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "resultstring=%s", resultstring); char datastring[NI_MAXHOST]; char *token, *cptr, **ptrptr; ptrptr = &cptr; int token_count = 0; snprintf(datastring, sizeof(datastring), "%s", data_ptr); // split result string token = strtok_r(resultstring, ";", ptrptr); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database entry found %d: %s", token_count, token); if (token_count == 1) { /* country */ snprintf(country, country_len, "%s", token); }; /* get next token */ token = strtok_r(NULL, ";", ptrptr); }; if (token_count != 1) { ERRORPRINT_WA("data has more entries than expected, corrupt database: %d", token_count); goto END_libipv6calc_db_wrapper_close; }; if (strlen(country) != 2) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "did not return a record for 'CountryCode'"); goto END_libipv6calc_db_wrapper; }; retval = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "result CountryCode=%s", country); EXTERNAL_DB_USAGE_MAP_TAG(External_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_External_close(dbp); END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "retval=%d", retval); return(retval); }; /* * get info of an IPv4/IPv6 address * stored in REGISTRY db in dedicated table * * in: ipaddr * mod: string * out: 0=OK */ int libipv6calc_db_wrapper_External_info_by_ipaddr(const ipv6calc_ipaddr *ipaddrp, char *string, const size_t string_len) { DB *dbp; long int recno_max; static char resultstring[NI_MAXHOST]; char *data_ptr = ""; int result; int retval = -1; int External_type; switch (ipaddrp->proto) { case IPV6CALC_PROTO_IPV4: External_type = EXTERNAL_DB_IPV4_REGISTRY; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Given IPv4 address: %08x", (unsigned int) ipaddrp->addr[0]); break; case IPV6CALC_PROTO_IPV6: External_type = EXTERNAL_DB_IPV6_REGISTRY; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Given IPv6 address prefix (0-63): %08x%08x", (unsigned int) ipaddrp->addr[0], (unsigned int) ipaddrp->addr[1]); break; default: ERRORPRINT_WA("unsupported protocol: %d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); break; }; // data-info dbp = libipv6calc_db_wrapper_External_open_type(External_type | 0x40000, &recno_max); if (dbp == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "Error opening External by type"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "database opened type=%x recno_max=%ld dbp=%p", External_type | 0x40000, recno_max, dbp); result = libipv6calc_db_wrapper_get_entry_generic( (void *) dbp, // pointer to database IPV6CALC_DB_LOOKUP_DATA_PTR_TYPE_BDB, // type of data_ptr (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_FIRST_LAST \ : IPV6CALC_DB_LOOKUP_DATA_KEY_TYPE_BASE_MASK, // key type (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x2 \ : IPV6CALC_DB_LOOKUP_DATA_DBD_FORMAT_SEMICOLON_SEP_HEX_32x4 , // key format (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? 32 \ : 64, // key length IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY, // search type recno_max, // number of rows ipaddrp->addr[0], // lookup key MSB (ipaddrp->proto == IPV6CALC_PROTO_IPV4) \ ? 0 \ : ipaddrp->addr[1], // lookup key LSB resultstring, // data ptr NULL // function pointer ); if (result < 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "no match found"); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "resultstring=%s", resultstring); char datastring[NI_MAXHOST]; char *token, *cptr, **ptrptr; ptrptr = &cptr; int token_count = 0; snprintf(datastring, sizeof(datastring), "%s", data_ptr); // split result string token = strtok_r(resultstring, ";", ptrptr); while (token != NULL) { token_count++; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Database entry found %d: %s", token_count, token); if (token_count == 1) { /* info */ snprintf(string, string_len, "%s", token); }; /* get next token */ token = strtok_r(NULL, ";", ptrptr); }; if (token_count != 1) { ERRORPRINT_WA("data has more entries than expected, corrupt database: %d", token_count); goto END_libipv6calc_db_wrapper_close; }; if (strlen(string) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_External, "did not return a record for 'Info'"); goto END_libipv6calc_db_wrapper; }; retval = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "result Info=%s", string); EXTERNAL_DB_USAGE_MAP_TAG(External_type); goto END_libipv6calc_db_wrapper; // keep db open END_libipv6calc_db_wrapper_close: libipv6calc_db_wrapper_External_close(dbp); END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "retval=%d", retval); return(retval); }; #endif //SUPPORT_EXTERNAL #endif //SUPPORT_EXTERNAL ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_External.h000066400000000000000000000064401312366535500243470ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_External.h * Version : $Id: 861559974a816fed41c13ae902892eeecd93e353 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper_External.c */ #include "ipv6calctypes.h" #ifndef _libipv6calc_db_wrapper_External_h #define _libipv6calc_db_wrapper_External_h 1 // database types #define EXTERNAL_DB_IPV4_REGISTRY 1 #define EXTERNAL_DB_IPV6_REGISTRY 2 #define EXTERNAL_DB_IPV4_COUNTRYCODE 3 #define EXTERNAL_DB_IPV6_COUNTRYCODE 4 #define EXTERNAL_DB_MAX (4 + 1) static const db_file_desc libipv6calc_db_wrapper_External_db_file_desc[] = { { EXTERNAL_DB_IPV4_REGISTRY , "ipv6calc-external-ipv4-registry.db" , "IPv4 Registry" , IPV6CALC_DB_IPV4_TO_REGISTRY | IPV6CALC_DB_EXTERNAL_IPV4 | IPV6CALC_DB_IPV4_TO_INFO }, { EXTERNAL_DB_IPV6_REGISTRY , "ipv6calc-external-ipv6-registry.db" , "IPv6 Registry" , IPV6CALC_DB_IPV6_TO_REGISTRY | IPV6CALC_DB_EXTERNAL_IPV6 | IPV6CALC_DB_IPV6_TO_INFO }, { EXTERNAL_DB_IPV4_COUNTRYCODE, "ipv6calc-external-ipv4-countrycode.db" , "IPv4 CountryCode" , IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_EXTERNAL_IPV4 }, { EXTERNAL_DB_IPV6_COUNTRYCODE, "ipv6calc-external-ipv6-countrycode.db" , "IPv6 CountryCode" , IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_EXTERNAL_IPV6 }, }; // features extern uint32_t wrapper_features_External; // creation time of databases extern time_t wrapper_db_unixtime_External[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_External_db_file_desc)]; typedef struct { FILE *filehandle; uint8_t databasetype; uint8_t databasecolumn; uint8_t databaseday; uint8_t databasemonth; uint8_t databaseyear; uint32_t databasecount; uint32_t databaseaddr; uint32_t ipversion; } External; #endif extern int libipv6calc_db_wrapper_External_wrapper_init(void); extern int libipv6calc_db_wrapper_External_wrapper_cleanup(void); extern void libipv6calc_db_wrapper_External_wrapper_info(char* string, const size_t size); extern void libipv6calc_db_wrapper_External_wrapper_print_db_info(const int level_verbose, const char *prefix_string); extern char *libipv6calc_db_wrapper_External_wrapper_db_info_used(void); extern int libipv6calc_db_wrapper_External_has_features(uint32_t features); extern time_t libipv6calc_db_wrapper_External_db_unixtime_by_feature(uint32_t feature); #ifdef SUPPORT_EXTERNAL #include extern char external_db_dir[NI_MAXHOST]; extern int libipv6calc_db_wrapper_External_db_avail(const unsigned int type); extern DB *libipv6calc_db_wrapper_External_open_type(const unsigned int type, long int *db_recno_max_ptr); extern const char *libipv6calc_db_wrapper_External_dbdescription(const unsigned int type); // IPv4/v6 Registry Number extern int libipv6calc_db_wrapper_External_registry_num_by_addr(const ipv6calc_ipaddr *ipaddrp); // IPv4/v6 CountryCode extern int libipv6calc_db_wrapper_External_country_code_by_addr(const ipv6calc_ipaddr *ipaddrp, char *country, const size_t country_len); // IPv4/v6 Info extern int libipv6calc_db_wrapper_External_info_by_ipaddr(const ipv6calc_ipaddr *ipaddrp, char *string, const size_t string_len); #endif ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_GeoIP.c000066400000000000000000002227141312366535500235270ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_GeoIP.c * Version : $Id: 622fcf48e52d2d98eb773d94006adbdd51965968 $ * Copyright : 2013-2016 by Peter Bieringer * * Information: * ipv6calc GeoIP database wrapper * - decoupling databases from main binary * - optional support of dynamic library loading (based on config.h) */ #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6addr.h" #include "libipv6calc_db_wrapper.h" #ifdef SUPPORT_GEOIP #include "libipv6calc_db_wrapper_GeoIP.h" #define GEOIP_WORKAROUND_NUM_DB_TYPES 1 #ifdef SUPPORT_GEOIP_DYN #define GEOIP_WORKAROUND_NUM_DB_TYPES_MAX 32 #else #define GEOIP_WORKAROUND_NUM_DB_TYPES_MAX NUM_DB_TYPES #endif uint32_t lib_features_GeoIP = 0; char geoip_db_dir[NI_MAXHOST] = GEOIP_DB; #ifdef SUPPORT_GEOIP_DYN char geoip_lib_file[NI_MAXHOST] = GEOIP_DYN_LIB; static const char* wrapper_geoip_info = "dyn-load"; /* define status and dynamic load functions */ static int dl_status_GeoIP_open = IPV6CALC_DL_STATUS_UNKNOWN; typedef GeoIP *(*dl_GeoIP_open_t)(const char * filename, int flags); static union { dl_GeoIP_open_t func; void * obj; } dl_GeoIP_open; static int dl_status_GeoIP_open_type = IPV6CALC_DL_STATUS_UNKNOWN; typedef GeoIP *(*dl_GeoIP_open_type_t)(int type, int flags); static union { dl_GeoIP_open_type_t func; void * obj; } dl_GeoIP_open_type; static int dl_status_GeoIP_db_avail = IPV6CALC_DL_STATUS_UNKNOWN; typedef int (*dl_GeoIP_db_avail_t)(int type); static union { dl_GeoIP_db_avail_t func; void * obj; } dl_GeoIP_db_avail; static int dl_status_GeoIP_database_edition = IPV6CALC_DL_STATUS_UNKNOWN; typedef unsigned char (*dl_GeoIP_database_edition_t)(GeoIP* gi); static union { dl_GeoIP_database_edition_t func; void * obj; } dl_GeoIP_database_edition; static int dl_status_GeoIP_delete = IPV6CALC_DL_STATUS_UNKNOWN; typedef void (*dl_GeoIP_delete_t)(GeoIP* gi); static union { dl_GeoIP_delete_t func; void * obj; } dl_GeoIP_delete; static int dl_status_GeoIP_database_info = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_database_info_t)(GeoIP* gi); static union { dl_GeoIP_database_info_t func; void * obj; } dl_GeoIP_database_info; static int dl_status_GeoIP_country_code_by_addr = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_country_code_by_addr_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_country_code_by_addr_t func; void * obj; } dl_GeoIP_country_code_by_addr; static int dl_status_GeoIP_country_name_by_addr = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_country_name_by_addr_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_country_name_by_addr_t func; void * obj; } dl_GeoIP_country_name_by_addr; static int dl_status_GeoIP_name_by_addr = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_name_by_addr_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_name_by_addr_t func; void * obj; } dl_GeoIP_name_by_addr; static int dl_status_GeoIP_record_by_addr = IPV6CALC_DL_STATUS_UNKNOWN; typedef GeoIPRecord *(*dl_GeoIP_record_by_addr_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_record_by_addr_t func; void * obj; } dl_GeoIP_record_by_addr; static int dl_status_GeoIP_record_by_addr_v6 = IPV6CALC_DL_STATUS_UNKNOWN; typedef GeoIPRecord *(*dl_GeoIP_record_by_addr_v6_t)(GeoIP *gi, const char *addr); static union { dl_GeoIP_record_by_addr_v6_t func; void * obj; } dl_GeoIP_record_by_addr_v6; static int dl_status_GeoIPRecord_delete = IPV6CALC_DL_STATUS_UNKNOWN; typedef void (*dl_GeoIPRecord_delete_t)(GeoIPRecord *gir); static union { dl_GeoIPRecord_delete_t func; void * obj; } dl_GeoIPRecord_delete; static int dl_status_GeoIP_country_code_by_addr_v6 = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_country_code_by_addr_v6_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_country_code_by_addr_v6_t func; void * obj; } dl_GeoIP_country_code_by_addr_v6; static int dl_status_GeoIP_country_name_by_addr_v6 = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_country_name_by_addr_v6_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_country_name_by_addr_v6_t func; void * obj; } dl_GeoIP_country_name_by_addr_v6; static int dl_status_GeoIP_name_by_addr_v6 = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_name_by_addr_v6_t)(GeoIP* gi, const char *addr); static union { dl_GeoIP_name_by_addr_v6_t func; void * obj; } dl_GeoIP_name_by_addr_v6; static int dl_status_GeoIP_lib_version = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_lib_version_t)(void); static union { dl_GeoIP_lib_version_t func; void * obj; } dl_GeoIP_lib_version; static int dl_status_GeoIP_cleanup = IPV6CALC_DL_STATUS_UNKNOWN; typedef int (*dl_GeoIP_cleanup_t)(void); static union { dl_GeoIP_cleanup_t func; void * obj; } dl_GeoIP_cleanup; static int dl_status_GeoIP_setup_custom_directory = IPV6CALC_DL_STATUS_UNKNOWN; typedef void (*dl_GeoIP_setup_custom_director_t)(char *dir); static union { dl_GeoIP_setup_custom_director_t func; void * obj; } dl_GeoIP_setup_custom_directory; typedef const char **(dl_GeoIPDBDescription_t); static union { dl_GeoIPDBDescription_t val; void * obj; } dl_GeoIPDBDescription; static char ***dl_GeoIPDBFileName_ptr = NULL; /* prototyping of feature check dl_load */ static void libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_ipnum_v6 (void); static void libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_ipnum_v6 (void); static void libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_addr_v6 (void); static void libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_addr_v6 (void); static void libipv6calc_db_wrapper_dl_load_GeoIP_lib_version (void); #ifndef SUPPORT_GEOIP_IPV6_STRUCT // workaround in case of GeoIP.h is too old, but dynamic load should support IPv6 #include typedef struct in6_addr geoipv6_t; #endif // SUPPORT_GEOIP_IPV6_STRUCT static int dl_status_GeoIP_country_name_by_ipnum_v6 = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_country_name_by_ipnum_v6_t)(GeoIP* gi, geoipv6_t ipnum); static union { dl_GeoIP_country_name_by_ipnum_v6_t func; void * obj; } dl_GeoIP_country_name_by_ipnum_v6; static int dl_status_GeoIP_country_code_by_ipnum_v6 = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_GeoIP_country_code_by_ipnum_v6_t)(GeoIP* gi, geoipv6_t ipnum); static union { dl_GeoIP_country_code_by_ipnum_v6_t func; void * obj; } dl_GeoIP_country_code_by_ipnum_v6; #else // SUPPORT_GEOIP_DYN static const char* wrapper_geoip_info = "built-in"; #endif // SUPPORT_GEOIP_DYN static int geoip_country_v4 = 0; static int geoip_country_v6 = 0; static int geoip_asnum_v4 = 0; static int geoip_asnum_v6 = 0; static int geoip_city_v4 = 0; static int geoip_city_v6 = 0; static unsigned int geoip_num_db_types = 0; static void *dl_GeoIP_handle = NULL; char ***libipv6calc_db_wrapper_GeoIPDBFileName_ptr = NULL; const char **libipv6calc_db_wrapper_GeoIPDBDescription = NULL; /* database usage map */ #define GEOIP_DB_MAX_BLOCKS_32 2 // 0-63 static uint32_t geoip_db_usage_map[GEOIP_DB_MAX_BLOCKS_32]; #define GEOIP_DB_USAGE_MAP_TAG(db) if (db < (32 * GEOIP_DB_MAX_BLOCKS_32)) { \ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Tag usage for db: %d", db); \ geoip_db_usage_map[db / 32] |= 1 << (db % 32); \ } else { \ fprintf(stderr, "FIXME: unsupported db value (exceed limit): %d (%d)\n", db, 32 * GEOIP_DB_MAX_BLOCKS_32 - 1); \ exit(1); \ }; char geoip_db_usage_string[NI_MAXHOST] = ""; // local cache static GeoIP *db_ptr_cache[GEOIP_WORKAROUND_NUM_DB_TYPES_MAX]; /* * function initialise the GeoIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_GeoIP_wrapper_init(void) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); #ifdef SUPPORT_GEOIP_DYN char *error; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Load library: %s", geoip_lib_file); dlerror(); /* Clear any existing error */ dl_GeoIP_handle = dlopen(geoip_lib_file, RTLD_NOW | RTLD_LOCAL); if (dl_GeoIP_handle == NULL) { if ((strcmp(geoip_lib_file, GEOIP_DYN_LIB) != 0) || (ipv6calc_verbose > 0)) { NONQUIETPRINT_WA("GeoIP dynamic library load failed (disable support): %s", dlerror()) }; return(1); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Loaded library successful: %s", geoip_lib_file); libipv6calc_db_wrapper_GeoIP_cleanup(); /* GeoIPDBDescription */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", "GeoIPDBDescription"); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIPDBDescription.obj) = dlsym(dl_GeoIP_handle, "GeoIPDBDescription"); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); return(1); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", "GeoIPDBDescription"); libipv6calc_db_wrapper_GeoIPDBDescription = dl_GeoIPDBDescription.val; /* check for version */ libipv6calc_db_wrapper_dl_load_GeoIP_lib_version(); if (dl_status_GeoIP_lib_version == IPV6CALC_DL_STATUS_OK) { lib_features_GeoIP |= GEOIP_LIB_FEATURE_LIB_VERSION; }; /* check for IPv6 compat support */ libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_ipnum_v6(); if (dl_status_GeoIP_country_code_by_ipnum_v6 == IPV6CALC_DL_STATUS_OK) { lib_features_GeoIP |= GEOIP_LIB_FEATURE_IPV6_CC_BY_IPNUM; }; libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_ipnum_v6(); if (dl_status_GeoIP_country_name_by_ipnum_v6 == IPV6CALC_DL_STATUS_OK) { lib_features_GeoIP |= GEOIP_LIB_FEATURE_IPV6_CN_BY_IPNUM; }; /* check for IPv6 full support */ libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_addr_v6(); if (dl_status_GeoIP_country_code_by_addr_v6 == IPV6CALC_DL_STATUS_OK) { lib_features_GeoIP |= GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR; }; libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_addr_v6(); if (dl_status_GeoIP_country_name_by_addr_v6 == IPV6CALC_DL_STATUS_OK) { lib_features_GeoIP |= GEOIP_LIB_FEATURE_IPV6_CN_BY_ADDR; }; /* GeoIPDBFFileName */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", "GeoIPDBFileName"); dlerror(); /* Clear any existing error */ dl_GeoIPDBFileName_ptr = dlsym(dl_GeoIP_handle, "GeoIPDBFileName"); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); return(1); }; libipv6calc_db_wrapper_GeoIPDBFileName_ptr = dl_GeoIPDBFileName_ptr; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Assigned dlsym: %s", "GeoIPDBFileName"); #else // SUPPORT_GEOIP_DYN #ifdef SUPPORT_GEOIP_LIB_VERSION lib_features_GeoIP |= GEOIP_LIB_FEATURE_LIB_VERSION; #endif // SUPPORT_GEOIP_LIB_VERSION #if defined SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6 && defined SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6 lib_features_GeoIP |= (GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR | GEOIP_LIB_FEATURE_IPV6_CN_BY_ADDR); #else // SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6 && SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6 #ifdef SUPPORT_GEOIP_V6 lib_features_GeoIP |= (GEOIP_LIB_FEATURE_IPV6_CC_BY_IPNUM | GEOIP_LIB_FEATURE_IPV6_CN_BY_IPNUM); #endif // SUPPORT_GEOIP_V6 #endif // SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6 && SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6 libipv6calc_db_wrapper_GeoIPDBDescription = GeoIPDBDescription; libipv6calc_db_wrapper_GeoIPDBFileName_ptr = &GeoIPDBFileName; geoip_num_db_types = NUM_DB_TYPES; #endif // SUPPORT_GEOIP_DYN #ifdef GEOIP_WORKAROUND_NUM_DB_TYPES // workaround to determine NUM_DB_TYPES until GeoIP API provides a function DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Try to estimate minimum geoip_num_db_types (to avoid segfaults)"); if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_LIB_VERSION) != 0) { geoip_num_db_types = 31 + 1; // >= 1.4.7 } else if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CC_BY_IPNUM) != 0) { geoip_num_db_types = 12 + 1; // >= 1.4.5 } else { geoip_num_db_types = 11 + 1; // < 1.4.5 }; if (geoip_num_db_types > GEOIP_WORKAROUND_NUM_DB_TYPES_MAX) { geoip_num_db_types = GEOIP_WORKAROUND_NUM_DB_TYPES_MAX; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Estimation of minimum geoip_num_db_types: %d", geoip_num_db_types - 1); #else geoip_num_db_types = 0; // TODO: call function, once provided via GeoIP API #endif DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper_GeoIP) unsigned int i; if (geoip_num_db_types > 0) { for (i = 0; i < geoip_num_db_types; i++) { DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper_GeoIP_verbose) DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP_verbose, "GeoIP(verbose): GeoIPDBDescription Entry #%d: %s", i, libipv6calc_db_wrapper_GeoIPDBDescription[i]); DEBUGSECTION_ELSE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIPDBDescription Entry #%d: %s", i, libipv6calc_db_wrapper_GeoIPDBDescription[i]); DEBUGSECTION_END }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIPDBDescription Entries can't be displayed, number of entries can't be retrieved (missing support)"); }; DEBUGSECTION_END DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_setup_custom_directory"); libipv6calc_db_wrapper_GeoIP_setup_custom_directory(geoip_db_dir); DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Returned from libipv6calc_db_wrapper_GeoIP_setup_custom_directory"); #ifdef SUPPORT_GEOIP_DYN DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION)"); int r = libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION); // dummy call to trigger _GeoIP_setup_dbfilename DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Result of dummy GeoIP_db_avail call: %d", r); #else // SUPPORT_GEOIP_DYN #endif // SUPPORT_GEOIP_DYN DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP library features: 0x%04x", lib_features_GeoIP); if (libipv6calc_db_wrapper_GeoIPDBFileName_ptr == NULL) { fprintf(stderr, "%s/%s: libipv6calc_db_wrapper_GeoIPDBFileName_ptr == NULL (unexpected)\n", __FILE__, __func__); exit(1); }; // add features to implemented wrapper_features_by_source_implemented[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_GEOIP_IPV4 | IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_GEOIP_IPV6 | IPV6CALC_DB_IPV4_TO_AS | IPV6CALC_DB_IPV6_TO_AS | IPV6CALC_DB_IPV4_TO_CITY | IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV4_TO_COUNTRY | IPV6CALC_DB_IPV6_TO_COUNTRY; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Check for standard GeoIP databases"); /* check required databases for resolution */ if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_COUNTRY_EDITION available"); geoip_country_v4 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_GEOIP_IPV4 | IPV6CALC_DB_IPV4_TO_COUNTRY; }; #ifdef SUPPORT_GEOIP_V6 #if HAVE_DECL_GEOIP_COUNTRY_EDITION_V6 == 1 if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION_V6) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_COUNTRY_EDITION_V6 available"); geoip_country_v6 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_GEOIP_IPV6 | IPV6CALC_DB_IPV6_TO_COUNTRY; }; #endif #endif if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_ASNUM_EDITION) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_ASNUM_EDITION available"); geoip_asnum_v4 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_IPV4_TO_AS | IPV6CALC_DB_GEOIP_IPV4; }; if ((lib_features_GeoIP & (GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR | GEOIP_LIB_FEATURE_IPV6_CN_BY_ADDR)) != 0) { #if HAVE_DECL_GEOIP_ASNUM_EDITION_V6 == 1 DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP check for GEOIP_ASNUM_EDITION_V6 & GEOIP_CITY_EDITION_REV1_V6"); if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_ASNUM_EDITION_V6) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_ASNUM_EDITION_V6 available"); geoip_asnum_v6 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_IPV6_TO_AS | IPV6CALC_DB_GEOIP_IPV6; }; if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_CITY_EDITION_REV1_V6) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_CITY_EDITION_REV1_V6 available"); geoip_city_v6 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_GEOIP_IPV6 | IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV6_TO_REGION; }; #else DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP check skipped for GEOIP_ASNUM_EDITION_V6 & GEOIP_CITY_EDITION_REV1_V6"); #endif } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP library looks like missing features for GEOIP_ASNUM_EDITION_V6 & GEOIP_CITY_EDITION_REV1_V6"); }; if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_CITY_EDITION_REV1) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_CITY_EDITION_REV1 available"); geoip_city_v4 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_GEOIP_IPV4 | IPV6CALC_DB_IPV4_TO_CITY | IPV6CALC_DB_IPV4_TO_REGION; }; #ifdef SUPPORT_GEOIP_V6 #ifdef GEOIP_CITY_EDITION_REV1_V6 if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_CITY_EDITION_REV1_V6) == 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIP database GEOIP_CITY_EDITION_REV1_V6 available"); geoip_city_v4 = 1; wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] |= IPV6CALC_DB_GEOIP_IPV6 | IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV6_TO_REGION; }; #endif // GEOIP_CITY_EDITION_REV1_V6 #endif // SUPPORT_GEOIP_V6 wrapper_features |= wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP]; return 0; }; #ifdef SUPPORT_GEOIP /* * function GeoIP_close */ static int libipv6calc_db_wrapper_GeoIP_close(GeoIP *gi) { int i; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); if (gi != NULL) { /* cleanup cache entry */ for (i = 0; i < GEOIP_WORKAROUND_NUM_DB_TYPES_MAX; i++) { if (db_ptr_cache[i] == gi) { db_ptr_cache[i] = NULL; }; }; libipv6calc_db_wrapper_GeoIP_delete(gi); }; return(0); }; #endif // SUPPORT_GEOIP /* * function cleanup the GeoIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_GeoIP_wrapper_cleanup(void) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); #ifdef SUPPORT_GEOIP int i; for (i = 0; i < GEOIP_WORKAROUND_NUM_DB_TYPES_MAX; i++) { if (db_ptr_cache[i] != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Close GeoIP: type=%d", i); libipv6calc_db_wrapper_GeoIP_close(db_ptr_cache[i]); }; }; libipv6calc_db_wrapper_GeoIP_cleanup(); #endif dl_GeoIP_handle = NULL; // disable handle DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished"); return 0; }; /* * function info of GeoIP wrapper * * in : ptr and size of string to be filled * out: modified string; */ void libipv6calc_db_wrapper_GeoIP_wrapper_info(char* string, const size_t size) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); #ifdef SUPPORT_GEOIP snprintf(string, size, "GeoIP available databases: Country4=%d Country6=%d ASN4=%d ASN6=%d City4=%d City6=%d", geoip_country_v4, geoip_country_v6, geoip_asnum_v4, geoip_asnum_v6, geoip_city_v4, geoip_city_v6); #else snprintf(string, size, "No GeoIP support built-in"); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished"); return; }; /* * function print database info of GeoIP wrapper * * in : (void) * out: (void) */ void libipv6calc_db_wrapper_GeoIP_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { GeoIP *gi; int count = 0; unsigned int i; const char *prefix = "\0"; if (prefix_string != NULL) { prefix = prefix_string; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); IPV6CALC_DB_FEATURE_INFO(prefix, IPV6CALC_DB_SOURCE_GEOIP) #ifdef SUPPORT_GEOIP #ifdef SUPPORT_GEOIP_DYN if (dl_GeoIP_handle == NULL) { fprintf(stderr, "%sGeoIP: info of available databases in directory: %s LIBRARY-NOT-LOADED\n", prefix, geoip_db_dir); } else { #endif // SUPPORT_GEOIP_DYN fprintf(stderr, "%sGeoIP: info of available databases in directory: %s (max: %d)\n", prefix, geoip_db_dir, geoip_num_db_types - 1); for (i = 0; i < geoip_num_db_types; i++) { if (libipv6calc_db_wrapper_GeoIP_db_avail(i)) { // GeoIP returned that database is available gi = libipv6calc_db_wrapper_GeoIP_open_type(i, 0); if (gi == NULL) { if (i == GEOIP_CITY_EDITION_REV0) { continue; }; #if HAVE_DECL_GEOIP_LARGE_COUNTRY_EDITION == 1 if (i == GEOIP_LARGE_COUNTRY_EDITION) { continue; }; #endif #if HAVE_DECL_GEOIP_CITY_EDITION_REV0_V6 == 1 if (i == GEOIP_CITY_EDITION_REV0_V6) { continue; }; #endif #if HAVE_DECL_GEOIP_LARGE_COUNTRY_EDITION_V6 == 1 if (i == GEOIP_LARGE_COUNTRY_EDITION_V6) { continue; }; #endif if (level_verbose == LEVEL_VERBOSE2) { fprintf(stderr, "%sGeoIP: %-33s:[%2d] %-20s (CAN'T OPEN)\n", prefix, libipv6calc_db_wrapper_GeoIPDBDescription[i], i, rindex((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i], '/') + 1); }; } else { count++; fprintf(stderr, "%sGeoIP: %-33s:[%2d] %-20s (%s)\n", prefix, libipv6calc_db_wrapper_GeoIPDBDescription[i], i, rindex((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i], '/') + 1, libipv6calc_db_wrapper_GeoIP_database_info(gi)); }; } else { if (geoip_num_db_types > 0) { if ((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i] == NULL) { continue; }; if (level_verbose == LEVEL_VERBOSE2) { // fprintf(stderr, "%sGeoIP: %-33s: %-40s (MISSING FILE)\n", prefix, libipv6calc_db_wrapper_GeoIPDBDescription[i], (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i]); } else { continue; }; }; }; }; if ((geoip_num_db_types == 0) && (level_verbose == LEVEL_VERBOSE2)) { fprintf(stderr, "%sGeoIP: other possible databases can't be displayed, number of entries can't be retrieved (missing support)\n", prefix); }; #ifdef SUPPORT_GEOIP_DYN }; #endif if (count == 0) { fprintf(stderr, "%sGeoIP: No available databases found in directory: %s\n", prefix, geoip_db_dir); }; #else snfprintf(stderr, string, size, "%sNo GeoIP support built-in", prefix); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished"); return; }; #ifdef SUPPORT_GEOIP /******************************* * Wrapper functions for GeoIP *******************************/ /* * function cleanup the GeoIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_GeoIP_cleanup(void) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); int r = 1; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_cleanup"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_cleanup == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_cleanup.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_cleanup = IPV6CALC_DL_STATUS_ERROR; // fprintf(stderr, "%s\n", error); // >= 1.4.8 goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_cleanup = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_cleanup == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; r = (int) (*dl_GeoIP_cleanup.func)(); END_libipv6calc_db_wrapper: #else #ifdef SUPPORT_GEOIP_CLEANUP r = GeoIP_cleanup(); #else r = 0; #endif #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished"); return (r); }; /* * wrapper: GeoIP_lib_version */ const char *libipv6calc_db_wrapper_GeoIP_lib_version(void) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char *result_GeoIP_lib_version = "unknown"; char *error; if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_LIB_VERSION) != 0) { // see below } else if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CC_BY_IPNUM) != 0) { result_GeoIP_lib_version = "1.4.5/1.4.6"; } else { result_GeoIP_lib_version = "<=1.4.4"; }; if (dl_GeoIP_handle == NULL) { result_GeoIP_lib_version = "LIBRARY-NOT-LOADED"; } else { libipv6calc_db_wrapper_dl_load_GeoIP_lib_version(); if (dl_status_GeoIP_lib_version != IPV6CALC_DL_STATUS_OK) { goto END_libipv6calc_db_wrapper; }; dlerror(); /* Clear any existing error */ result_GeoIP_lib_version = (*dl_GeoIP_lib_version.func)(); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; }; END_libipv6calc_db_wrapper: return(result_GeoIP_lib_version); #else // SUPPORT_GEOIP_DYN #ifdef SUPPORT_GEOIP_LIB_VERSION return(GeoIP_lib_version()); #else return("unsupported(< 1.4.7)"); #endif #endif }; /* * wrapper: GeoIP_setup_custom_directory */ void libipv6calc_db_wrapper_GeoIP_setup_custom_directory(char *dir) { int r; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called"); #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_setup_custom_directory"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_setup_custom_directory == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_setup_custom_directory.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_setup_custom_directory = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s (unsupported too old library)\n", error); exit(1); // must have }; dl_status_GeoIP_setup_custom_directory = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_setup_custom_directory == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_cleanup"); libipv6calc_db_wrapper_GeoIP_cleanup(); // free old stuff DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Returned from libipv6calc_db_wrapper_GeoIP_cleanup"); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dl_GeoIP_setup_custom_directory: %s", dir); dlerror(); /* Clear any existing error */ (*dl_GeoIP_setup_custom_directory.func)(dir); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: #else // SUPPORT_GEOIP_DYN libipv6calc_db_wrapper_GeoIP_cleanup(); // free old stuff GeoIP_setup_custom_directory(dir); #endif // SUPPORT_GEOIP_DYN DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_db_avail (to trigger _GeoIP_setup_dbfilename) for db type: %d", GEOIP_COUNTRY_EDITION); r = libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION); // dummy call to trigger _GeoIP_setup_dbfilename DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Returned from libipv6calc_db_wrapper_GeoIP_db_avail with result: %d", r); DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper_GeoIP) DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "List now available GeoIPDBFilename Entries (max: %d)", geoip_num_db_types - 1); if (geoip_num_db_types > 0) { unsigned int i; for (i = 0; i < geoip_num_db_types; i++) { DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper_GeoIP_verbose) DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP_verbose, "GeoIP(verbose): GeoIPDBFileName Entry #%d: %s", i, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i]); DEBUGSECTION_ELSE DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIPDBFileName Entry #%d: %s", i, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i]); DEBUGSECTION_END }; } else { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "GeoIPDBDescription Entries can't be displayed, number of entries can't be retrieved (missing support)"); }; DEBUGSECTION_END DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished: %s with dir: %s", wrapper_geoip_info, dir); return; }; /* * wrapper: GeoIP_db_avail * ret: 1=avail 0=not-avail */ int libipv6calc_db_wrapper_GeoIP_db_avail(int type) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s type=%d (desc: %s)", wrapper_geoip_info, type, libipv6calc_db_wrapper_GeoIPDBDescription[type]); #ifdef SUPPORT_GEOIP_DYN int result_GeoIP_db_avail = 0; const char *dl_symbol = "GeoIP_db_avail"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_db_avail == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_db_avail.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_db_avail = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_db_avail = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_db_avail == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_db_avail = (*dl_GeoIP_db_avail.func)(type); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call to dl_GeoIP_db_avail results in: %d", result_GeoIP_db_avail); if (result_GeoIP_db_avail == 0) { goto END_libipv6calc_db_wrapper; }; dlerror(); /* Clear any existing error */ END_libipv6calc_db_wrapper: return(result_GeoIP_db_avail); #else DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call: GeoIP_db_avail type=%d", type); int r = GeoIP_db_avail(type); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Returned from GeoIP_db_avail result=%d", r); DEBUGSECTION_BEGIN(DEBUG_libipv6calc_db_wrapper_GeoIP) if ((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[type] == NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished: %s type=%d (still unknown) (r=%d)", wrapper_geoip_info, type, r); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Finished: %s type=%d (%s) (r=%d)", wrapper_geoip_info, type, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[type], r); }; DEBUGSECTION_END return(r); #endif }; /* * wrapper: GeoIP_open_type */ GeoIP *libipv6calc_db_wrapper_GeoIP_open_type(int type, int flags) { GeoIP *gi = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s type=%d (%s)", wrapper_geoip_info, type, libipv6calc_db_wrapper_GeoIPDBDescription[type]); if (libipv6calc_db_wrapper_GeoIP_db_avail(type) != 1) { return(NULL); }; if (db_ptr_cache[type] != NULL) { // already open gi = db_ptr_cache[type]; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Database already opened (cached) gi=%p type=%d", gi, type); goto END_libipv6calc_db_wrapper; }; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_open_type"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_open_type == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_open_type.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_open_type = IPV6CALC_DL_STATUS_ERROR; NONQUIETPRINT_WA("%s", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_open_type = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_open_type == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ gi = (*dl_GeoIP_open_type.func)(type, flags); if ((error = dlerror()) != NULL) { NONQUIETPRINT_WA("%s", error); goto END_libipv6calc_db_wrapper; }; #else if (flags == 0) { }; // make compiler happy (avoid unused "...") gi = GeoIP_open_type(type, GEOIP_STANDARD); #endif if (gi == NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Database can't be openend type=%d", type); goto END_libipv6calc_db_wrapper; }; // fill cache db_ptr_cache[type] = gi; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Database successfully opened (fill-cache), gi=%p type=%d", gi, type) END_libipv6calc_db_wrapper: return(gi); }; /* * wrapper: GeoIP_open */ GeoIP* libipv6calc_db_wrapper_GeoIP_open(const char * filename, int flags) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s filename=%s", wrapper_geoip_info, filename); #ifdef SUPPORT_GEOIP_DYN GeoIP *gi = NULL; const char *dl_symbol = "GeoIP_open"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_open == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_open.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_open = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_open = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_open == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ gi = (*dl_GeoIP_open.func)(filename, flags); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(gi); #else if (flags == 0) { }; // make compiler happy (avoid unused "...") return(GeoIP_open(filename, GEOIP_STANDARD)); #endif }; /* * wrapper: GeoIP_database_edition */ unsigned char libipv6calc_db_wrapper_GeoIP_database_edition (GeoIP* gi) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN unsigned char result_GeoIP_database_edition = '\0'; const char *dl_symbol = "GeoIP_database_edition"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_database_edition == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_database_edition.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_database_edition = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_database_edition = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_database_edition == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_database_edition = (*dl_GeoIP_database_edition.func)(gi); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_database_edition); #else return(GeoIP_database_edition(gi)); #endif }; /* * wrapper: GeoIP_database_info */ char *libipv6calc_db_wrapper_GeoIP_database_info(GeoIP *gi) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_database_info = NULL; const char *dl_symbol = "GeoIP_database_info"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_database_info == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_database_info.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_database_info = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_database_info = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_database_info == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_database_info = (*dl_GeoIP_database_info.func)(gi); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Result of GeoIP_database_info (dyn-load): %s", result_GeoIP_database_info); END_libipv6calc_db_wrapper: return(result_GeoIP_database_info); #else return(GeoIP_database_info(gi)); #endif }; /* * wrapper: string regarding used database infos */ char *libipv6calc_db_wrapper_GeoIP_wrapper_db_info_used(void) { int db; GeoIP *gi; char tempstring[NI_MAXHOST]; char *info; for (db = 0; db < 32 * GEOIP_DB_MAX_BLOCKS_32; db++) { if ((geoip_db_usage_map[db / 32] & (1 << (db % 32))) != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "DB used: %d", db); gi = libipv6calc_db_wrapper_GeoIP_open_type(db, 0); info = libipv6calc_db_wrapper_GeoIP_database_info(gi); if (info == NULL) { continue; }; // NULL pointer returned if (strlen(info) == 0) { continue; }; // empty string returned DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "DB info: %s", info); if (strlen(geoip_db_usage_string) > 0) { if (strstr(geoip_db_usage_string, info) != NULL) { continue; }; // string already included snprintf(tempstring, sizeof(tempstring), "%s / %s", geoip_db_usage_string, info); } else { snprintf(tempstring, sizeof(tempstring), "%s", info); }; snprintf(geoip_db_usage_string, sizeof(geoip_db_usage_string), "%s", tempstring); }; }; return(geoip_db_usage_string); }; /* * wrapper: GeoIP_delete */ void libipv6calc_db_wrapper_GeoIP_delete(GeoIP* gi) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); if (gi == NULL) { return; }; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_delete"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_delete == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_delete) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_delete = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_delete = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_delete == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ (*dl_GeoIP_delete.func)(gi); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: #else GeoIP_delete(gi); #endif return; }; /* * wrapper: GeoIP_country_code_by_addr */ const char* libipv6calc_db_wrapper_GeoIP_country_code_by_addr (GeoIP* gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_country_code_by_addr = NULL; const char *dl_symbol = "GeoIP_country_code_by_addr"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_country_code_by_addr == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_country_code_by_addr.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_country_code_by_addr = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_country_code_by_addr = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_country_code_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_country_code_by_addr = (*dl_GeoIP_country_code_by_addr.func)(gi, addr); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_country_code_by_addr); #else return(GeoIP_country_code_by_addr(gi, addr)); #endif }; /* * wrapper: GeoIP_country_name_by_addr */ const char* libipv6calc_db_wrapper_GeoIP_country_name_by_addr (GeoIP* gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_country_name_by_addr = NULL; const char *dl_symbol = "GeoIP_country_name_by_addr"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_country_name_by_addr == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_country_name_by_addr.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_country_name_by_addr = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_country_name_by_addr = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_country_name_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_country_name_by_addr = (*dl_GeoIP_country_name_by_addr.func)(gi, addr); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_country_name_by_addr); #else return(GeoIP_country_name_by_addr(gi, addr)); #endif }; /* * wrapper: GeoIP_record_by_addr */ GeoIPRecord *libipv6calc_db_wrapper_GeoIP_record_by_addr(GeoIP *gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN GeoIPRecord* result_GeoIP_record_by_addr = NULL; const char *dl_symbol = "GeoIP_record_by_addr"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_record_by_addr == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_record_by_addr.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_record_by_addr = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_record_by_addr = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_record_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_record_by_addr = (*dl_GeoIP_record_by_addr.func)(gi, addr); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_record_by_addr); #else return(GeoIP_record_by_addr(gi, addr)); #endif }; #ifdef SUPPORT_GEOIP_V6 /* * wrapper: GeoIP_record_by_addr_v6 */ GeoIPRecord *libipv6calc_db_wrapper_GeoIP_record_by_addr_v6(GeoIP *gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN GeoIPRecord* result_GeoIP_record_by_addr_v6 = NULL; const char *dl_symbol = "GeoIP_record_by_addr_v6"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_record_by_addr_v6 == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_record_by_addr_v6.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_record_by_addr_v6 = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_record_by_addr_v6 = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_record_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_record_by_addr_v6 = (*dl_GeoIP_record_by_addr_v6.func)(gi, addr); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_record_by_addr_v6); #else return(GeoIP_record_by_addr_v6(gi, addr)); #endif }; #endif /* * wrapper: GeoIPRecord_delete */ void libipv6calc_db_wrapper_GeoIPRecord_delete (GeoIPRecord *gir) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIPRecord_delete"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIPRecord_delete == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIPRecord_delete.obj) = dlsym(dl_GeoIP_handle, "GeoIPRecord_delete"); if ((error = dlerror()) != NULL) { dl_status_GeoIPRecord_delete = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIPRecord_delete = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIPRecord_delete == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ (*dl_GeoIPRecord_delete.func)(gir); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return; #else GeoIPRecord_delete(gir); #endif }; /* * wrapper: GeoIP_country_code_by_addr_v6 * return: NULL: no result */ const char *libipv6calc_db_wrapper_GeoIP_country_code_by_addr_v6(GeoIP *gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char *result_GeoIP_country_code_by_addr_v6 = NULL; libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_addr_v6(); if (dl_status_GeoIP_country_code_by_addr_v6 != IPV6CALC_DL_STATUS_OK) { goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dl_GeoIP_country_code_by_addr_v6.func"); result_GeoIP_country_code_by_addr_v6 = (*dl_GeoIP_country_code_by_addr_v6.func)(gi, addr); DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Returned from dl_GeoIP_country_code_by_addr_v6.func"); END_libipv6calc_db_wrapper: return(result_GeoIP_country_code_by_addr_v6); #else #ifdef SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6 return(GeoIP_country_code_by_addr_v6(gi, addr)); #else if (strlen(addr) == 0) { }; // make compiler happy (avoid unused "...") if (gi == NULL) { }; // make compiler happy (avoid unused "...") return(NULL); #endif #endif }; /* * wrapper: GeoIP_country_name_by_addr_v6 * return: NULL: no result */ const char *libipv6calc_db_wrapper_GeoIP_country_name_by_addr_v6(GeoIP *gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char *result_GeoIP_country_name_by_addr_v6 = NULL; libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_addr_v6(); if (dl_status_GeoIP_country_name_by_addr_v6 != IPV6CALC_DL_STATUS_OK) { goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call: dl_GeoIP_country_name_by_addr_v6.func"); result_GeoIP_country_name_by_addr_v6 = (*dl_GeoIP_country_name_by_addr_v6.func)(gi, addr); END_libipv6calc_db_wrapper: return(result_GeoIP_country_name_by_addr_v6); #else #ifdef SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6 return(GeoIP_country_name_by_addr_v6(gi, addr)); #else if (strlen(addr) == 0) { }; // make compiler happy (avoid unused "...") if (gi == NULL) { }; // make compiler happy (avoid unused "...") return(NULL); #endif #endif }; #ifdef SUPPORT_GEOIP_V6 /* * wrapper: GeoIP_country_name_by_ipnum_v6 */ const char * libipv6calc_db_wrapper_GeoIP_country_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info);; #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_country_name_by_ipnum_v6 = NULL; libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_ipnum_v6(); if (dl_status_GeoIP_country_name_by_ipnum_v6 != IPV6CALC_DL_STATUS_OK) { goto END_libipv6calc_db_wrapper; }; result_GeoIP_country_name_by_ipnum_v6 = (*dl_GeoIP_country_name_by_ipnum_v6.func)(gi, ipnum); END_libipv6calc_db_wrapper: return(result_GeoIP_country_name_by_ipnum_v6); #else return(GeoIP_country_name_by_ipnum_v6(gi, ipnum)); #endif }; /* * wrapper: GeoIP_country_code_by_ipnum_v6 */ const char * libipv6calc_db_wrapper_GeoIP_country_code_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info);; #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_country_code_by_ipnum_v6 = NULL; libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_ipnum_v6(); if (dl_status_GeoIP_country_code_by_ipnum_v6 != IPV6CALC_DL_STATUS_OK) { goto END_libipv6calc_db_wrapper; }; result_GeoIP_country_code_by_ipnum_v6 = (*dl_GeoIP_country_code_by_ipnum_v6.func)(gi, ipnum); END_libipv6calc_db_wrapper: return(result_GeoIP_country_code_by_ipnum_v6); #else return(GeoIP_country_code_by_ipnum_v6(gi, ipnum)); #endif }; #endif // SUPPORT_GEOIP_V6 /* * wrapper: GeoIP_name_by_addr */ char* libipv6calc_db_wrapper_GeoIP_name_by_addr (GeoIP* gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_name_by_addr = NULL; const char *dl_symbol = "GeoIP_name_by_addr"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_name_by_addr == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_name_by_addr.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_name_by_addr = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_name_by_addr = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_name_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_name_by_addr = (*dl_GeoIP_name_by_addr.func)(gi, addr); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_name_by_addr); #else return(GeoIP_name_by_addr(gi, addr)); #endif }; #ifdef SUPPORT_GEOIP_V6 /* * wrapper: GeoIP_name_by_addr_v6 */ char* libipv6calc_db_wrapper_GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called: %s", wrapper_geoip_info); #ifdef SUPPORT_GEOIP_DYN char* result_GeoIP_name_by_addr_v6 = NULL; const char *dl_symbol = "GeoIP_name_by_addr_v6"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_name_by_addr_v6 == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_name_by_addr_v6.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_name_by_addr_v6 = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_GeoIP_name_by_addr_v6 = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_name_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_GeoIP_name_by_addr_v6 = (*dl_GeoIP_name_by_addr_v6.func)(gi, addr); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_GeoIP_name_by_addr_v6); #else return(GeoIP_name_by_addr_v6(gi, addr)); #endif }; #endif // SUPPORT_GEOIP_V6 /******************************************************** * particular dynamic loader functions for feature checks * avoiding duplicate code ********************************************************/ #ifdef SUPPORT_GEOIP_DYN /* libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_ipnum_v6 */ static void libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_ipnum_v6(void) { const char *dl_symbol = "GeoIP_country_code_by_ipnum_v6"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper_dl_load; }; if (dl_status_GeoIP_country_code_by_ipnum_v6 == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_country_code_by_ipnum_v6.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_country_code_by_ipnum_v6 = IPV6CALC_DL_STATUS_ERROR; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_symbol GeoIP_country_code_by_ipnum_v6 not found"); // fprintf(stderr, "%s\n", error); // stay silent goto END_libipv6calc_db_wrapper_dl_load; }; dl_status_GeoIP_country_code_by_ipnum_v6 = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_country_code_by_ipnum_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper_dl_load; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; END_libipv6calc_db_wrapper_dl_load: return; }; /* libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_ipnum_v6 */ static void libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_ipnum_v6(void) { const char *dl_symbol = "GeoIP_country_name_by_ipnum_v6"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper_dl_load; }; if (dl_status_GeoIP_country_name_by_ipnum_v6 == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_country_name_by_ipnum_v6.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_country_name_by_ipnum_v6 = IPV6CALC_DL_STATUS_ERROR; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_symbol GeoIP_country_name_by_ipnum_v6 not found"); // fprintf(stderr, "%s\n", error); // stay silent goto END_libipv6calc_db_wrapper_dl_load; }; dl_status_GeoIP_country_name_by_ipnum_v6 = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_country_name_by_ipnum_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper_dl_load; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; END_libipv6calc_db_wrapper_dl_load: return; }; /* libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_addr_v6 */ static void libipv6calc_db_wrapper_dl_load_GeoIP_country_code_by_addr_v6(void) { const char *dl_symbol = "GeoIP_country_code_by_addr_v6"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper_dl_load; }; if (dl_status_GeoIP_country_code_by_addr_v6 == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_country_code_by_addr_v6.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_country_code_by_addr_v6 = IPV6CALC_DL_STATUS_ERROR; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_symbol GeoIP_country_code_by_addr_v6 not found"); // fprintf(stderr, "%s\n", error); // >= 1.4.8 goto END_libipv6calc_db_wrapper_dl_load; }; dl_status_GeoIP_country_code_by_addr_v6 = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_country_code_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper_dl_load; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; END_libipv6calc_db_wrapper_dl_load: return; }; /* libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_addr_v6 */ static void libipv6calc_db_wrapper_dl_load_GeoIP_country_name_by_addr_v6(void) { const char *dl_symbol = "GeoIP_country_name_by_addr_v6"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper_dl_load; }; if (dl_status_GeoIP_country_name_by_addr_v6 == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_country_name_by_addr_v6.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_country_name_by_addr_v6 = IPV6CALC_DL_STATUS_ERROR; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_symbol GeoIP_country_name_by_addr_v6 not found"); // fprintf(stderr, "%s\n", error); // >= 1.4.8 goto END_libipv6calc_db_wrapper_dl_load; }; dl_status_GeoIP_country_name_by_addr_v6 = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_country_name_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper_dl_load; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; END_libipv6calc_db_wrapper_dl_load: return; }; static void libipv6calc_db_wrapper_dl_load_GeoIP_lib_version (void) { const char *dl_symbol = "GeoIP_lib_version"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper_dl_load; }; if (dl_status_GeoIP_lib_version == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_GeoIP_lib_version.obj) = dlsym(dl_GeoIP_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_GeoIP_lib_version = IPV6CALC_DL_STATUS_ERROR; // fprintf(stderr, "%s\n", error); // be quiet, optional feature (>= 1.4.7) goto END_libipv6calc_db_wrapper_dl_load; }; dl_status_GeoIP_lib_version = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_lib_version == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper_dl_load; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; END_libipv6calc_db_wrapper_dl_load: return; }; #endif #endif // GEOIP /********************************************* * Abstract functions * *******************************************/ /* function query for feature set * ret=-1: unknown * 0 : not matching * 1 : ok */ int libipv6calc_db_wrapper_GeoIP_has_features(uint32_t features) { int result = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called with feature value to test: 0x%08x",features); if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Return with result: %d", result); return(result); }; /* country_code */ const char *libipv6calc_db_wrapper_GeoIP_wrapper_country_code_by_addr(const char *addr, const int proto) { GeoIP *gi; int GeoIP_type = 0; const char *GeoIP_result_ptr = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { GeoIP_type = GEOIP_COUNTRY_EDITION; #ifdef SUPPORT_GEOIP_V6 #if HAVE_DECL_GEOIP_COUNTRY_EDITION_V6 == 1 } else if (proto == 6) { GeoIP_type = GEOIP_COUNTRY_EDITION_V6; #endif #endif // SUPPORT_GEOIP_V6 } else { goto END_libipv6calc_db_wrapper; }; gi = libipv6calc_db_wrapper_GeoIP_open_type(GeoIP_type, 0); if (gi == NULL) { goto END_libipv6calc_db_wrapper; }; if (proto == 4) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_country_code_by_addr(gi, addr); #ifdef SUPPORT_GEOIP_V6 } else if (proto == 6) { if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR) != 0) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_country_code_by_addr_v6(gi, addr); } else if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CC_BY_IPNUM) != 0) { /* backward compatibility */ ipv6calc_ipv6addr ipv6addr; char tempstring[NI_MAXHOST] = ""; int result = 0; result = addr_to_ipv6addrstruct(addr, tempstring, sizeof(tempstring), &ipv6addr); if (result != 0) { goto END_libipv6calc_db_wrapper; }; GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_country_code_by_ipnum_v6(gi, ipv6addr.in6_addr); }; #endif // SUPPORT_GEOIP_V6 }; if (GeoIP_result_ptr == NULL) { goto END_libipv6calc_db_wrapper; }; if (strlen(GeoIP_result_ptr) > 2) { GeoIP_result_ptr = NULL; goto END_libipv6calc_db_wrapper; }; GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Result for addr=%s proto=%d: %s", addr, proto, GeoIP_result_ptr); return(GeoIP_result_ptr); }; /* country_name */ const char *libipv6calc_db_wrapper_GeoIP_wrapper_country_name_by_addr(const char *addr, const int proto) { GeoIP *gi; int GeoIP_type = 0; const char *GeoIP_result_ptr = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { GeoIP_type = GEOIP_COUNTRY_EDITION; #ifdef SUPPORT_GEOIP_V6 #if HAVE_DECL_GEOIP_COUNTRY_EDITION_V6 == 1 } else if (proto == 6) { GeoIP_type = GEOIP_COUNTRY_EDITION_V6; #endif #endif // SUPPORT_GEOIP_V6 } else { return (NULL); }; gi = libipv6calc_db_wrapper_GeoIP_open_type(GeoIP_type, 0); if (gi == NULL) { return (NULL); }; if (proto == 4) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_country_name_by_addr(gi, addr); #ifdef SUPPORT_GEOIP_V6 } else if (proto == 6) { if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CN_BY_ADDR) != 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_country_name_by_addr_v6"); GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_country_name_by_addr_v6(gi, addr); } else if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CN_BY_IPNUM) != 0) { /* backward compatibility */ ipv6calc_ipv6addr ipv6addr; char tempstring[NI_MAXHOST] = ""; int result = 0; result = addr_to_ipv6addrstruct(addr, tempstring, sizeof(tempstring), &ipv6addr); if (result != 0) { goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_country_name_by_ipnum"); GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_country_name_by_ipnum_v6(gi, ipv6addr.in6_addr); }; #endif // SUPPORT_GEOIP_V6 }; if (GeoIP_result_ptr == NULL) { goto END_libipv6calc_db_wrapper; }; if (strlen(GeoIP_result_ptr) == 0) { GeoIP_result_ptr = NULL; goto END_libipv6calc_db_wrapper; }; GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Result for addr=%s proto=%d: %s", addr, proto, GeoIP_result_ptr); return(GeoIP_result_ptr); }; /* asnum */ char *libipv6calc_db_wrapper_GeoIP_wrapper_asnum_by_addr(const char *addr, const int proto) { GeoIP *gi; int GeoIP_type = 0; char *GeoIP_result_ptr = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] & IPV6CALC_DB_IPV4_TO_AS) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Database/Support not available: GEOIP_ASNUM_EDITION"); goto END_libipv6calc_db_wrapper; }; #if HAVE_DECL_GEOIP_ASNUM_EDITION == 1 GeoIP_type = GEOIP_ASNUM_EDITION; #else goto END_libipv6calc_db_wrapper; #endif #ifdef SUPPORT_GEOIP_V6 } else if (proto == 6) { if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] & IPV6CALC_DB_IPV6_TO_AS) == 0) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Database/Support not available: GEOIP_ASNUM_EDITION_V6"); goto END_libipv6calc_db_wrapper; }; #if HAVE_DECL_GEOIP_ASNUM_EDITION_V6 == 1 GeoIP_type = GEOIP_ASNUM_EDITION_V6; #else goto END_libipv6calc_db_wrapper; #endif #endif // SUPPORT_GEOIP_V6 } else { goto END_libipv6calc_db_wrapper; }; gi = libipv6calc_db_wrapper_GeoIP_open_type(GeoIP_type, 0); if (gi == NULL) { goto END_libipv6calc_db_wrapper; }; if (proto == 4) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_name_by_addr(gi, addr); #ifdef SUPPORT_GEOIP_V6 } else if (proto == 6) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_name_by_addr_v6(gi, addr); #endif // SUPPORT_GEOIP_V6 }; if (GeoIP_result_ptr == NULL) { goto END_libipv6calc_db_wrapper; }; GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Result for addr=%s proto=%d: %s", addr, proto, GeoIP_result_ptr); return(GeoIP_result_ptr); }; /* record: city */ GeoIPRecord *libipv6calc_db_wrapper_GeoIP_wrapper_record_city_by_addr(const char *addr, const int proto) { GeoIP *gi; int GeoIP_type = 0; GeoIPRecord *GeoIP_result_ptr = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { GeoIP_type = GEOIP_CITY_EDITION_REV1; #ifdef SUPPORT_GEOIP_V6 } else if (proto == 6) { if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_LIB_VERSION) != 0) { #if HAVE_DECL_GEOIP_CITY_EDITION_REV1_V6 == 1 GeoIP_type = GEOIP_CITY_EDITION_REV1_V6; #else return (NULL); #endif }; #endif // SUPPORT_GEOIP_V6 } else { return (NULL); }; gi = libipv6calc_db_wrapper_GeoIP_open_type(GeoIP_type, 0); if (gi == NULL) { return (NULL); }; if (proto == 4) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_record_by_addr(gi, addr); #ifdef SUPPORT_GEOIP_V6 } else if (proto == 6) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_record_by_addr_v6(gi, addr); #endif // SUPPORT_GEOIP_V6 }; if (GeoIP_result_ptr == NULL) { goto END_libipv6calc_db_wrapper; }; GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); END_libipv6calc_db_wrapper: return(GeoIP_result_ptr); }; #endif ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_GeoIP.h000066400000000000000000000072261312366535500235330ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_GeoIP.h * Version : $Id: 586dd235b8dc97c3a691abb0cd4cfc15a0eea0de $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper_GeoIP.c */ #include "ipv6calctypes.h" #ifndef _libipv6calc_db_wrapper_GeoIP_h #define _libipv6calc_db_wrapper_GeoIP_h 1 #ifdef SUPPORT_GEOIP #include "GeoIP.h" #include "GeoIPCity.h" #endif #define GEOIP_LIB_FEATURE_IPv6 0x0001 #define GEOIP_LIB_FEATURE_LIB_VERSION 0x0002 #define GEOIP_LIB_FEATURE_IPV6_CC_BY_IPNUM 0x0100 #define GEOIP_LIB_FEATURE_IPV6_CN_BY_IPNUM 0x0200 #define GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR 0x0400 #define GEOIP_LIB_FEATURE_IPV6_CN_BY_ADDR 0x0800 // features extern uint32_t wrapper_features_GeoIP; extern uint32_t lib_features_GeoIP; #endif extern int libipv6calc_db_wrapper_GeoIP_wrapper_init(void); extern int libipv6calc_db_wrapper_GeoIP_wrapper_cleanup(void); extern const char *libipv6calc_db_wrapper_GeoIP_wrapper_country_code_by_addr(const char *addr, const int proto); extern const char *libipv6calc_db_wrapper_GeoIP_wrapper_country_name_by_addr(const char *addr, const int proto); extern char *libipv6calc_db_wrapper_GeoIP_wrapper_asnum_by_addr(const char *addr, const int proto); extern void libipv6calc_db_wrapper_GeoIP_wrapper_info(char* string, const size_t size); extern void libipv6calc_db_wrapper_GeoIP_wrapper_print_db_info(const int level_verbose, const char *prefix_string); extern char *libipv6calc_db_wrapper_GeoIP_wrapper_db_info_used(void); extern int libipv6calc_db_wrapper_GeoIP_has_features(uint32_t features); extern char geoip_lib_file[NI_MAXHOST]; extern char geoip_db_dir[NI_MAXHOST]; #ifdef SUPPORT_GEOIP extern GeoIP *libipv6calc_db_wrapper_GeoIP_open(const char * filename, int flags); extern GeoIP *libipv6calc_db_wrapper_GeoIP_open_type(int type, int flags); extern int libipv6calc_db_wrapper_GeoIP_db_avail(int type); extern int libipv6calc_db_wrapper_GeoIP_cleanup(void); extern unsigned char libipv6calc_db_wrapper_GeoIP_database_edition(GeoIP *gi); extern char *libipv6calc_db_wrapper_GeoIP_database_info(GeoIP *gi); extern void libipv6calc_db_wrapper_GeoIP_delete(GeoIP *gi); extern const char *libipv6calc_db_wrapper_GeoIP_country_code_by_addr(GeoIP *gi, const char *addr); extern const char *libipv6calc_db_wrapper_GeoIP_country_name_by_addr(GeoIP *gi, const char *addr); extern const char *libipv6calc_db_wrapper_GeoIP_country_name_by_addr(GeoIP *gi, const char *addr); extern GeoIPRecord *libipv6calc_db_wrapper_GeoIP_record_by_addr(GeoIP *gi, const char *addr); extern void libipv6calc_db_wrapper_GeoIPRecord_delete(GeoIPRecord *gir); extern const char *libipv6calc_db_wrapper_GeoIP_lib_version(void); extern const char *libipv6calc_db_wrapper_GeoIP_country_code_by_addr_v6(GeoIP *gi, const char *addr); extern const char *libipv6calc_db_wrapper_GeoIP_country_name_by_addr_v6(GeoIP *gi, const char *addr); #ifdef SUPPORT_GEOIP_V6 #if HAVE_DECL_GEOIP_COUNTRY_CODE_BY_IPNUM_V6 == 1 extern const char *libipv6calc_db_wrapper_GeoIP_country_code_by_ipnum_v6(GeoIP *gi, geoipv6_t ipnum); extern const char *libipv6calc_db_wrapper_GeoIP_country_name_by_ipnum_v6(GeoIP *gi, geoipv6_t ipnum); #endif #endif extern void libipv6calc_db_wrapper_GeoIP_setup_custom_directory(char *dir); extern const char **libipv6calc_db_wrapper_GeoIPDBDescription; extern char ***libipv6calc_db_wrapper_GeoIPDBFileName_ptr; extern GeoIPRecord *libipv6calc_db_wrapper_GeoIP_wrapper_record_city_by_addr(const char *addr, const int proto); #endif ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_IP2Location.c000066400000000000000000002267611312366535500246550ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_IP2Location.c * Version : $Id: a8178bc58f007ce9a7b6e2c3b0c8e3eade842dae $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * ipv6calc IP2Location database wrapper * - decoupling databases from main binary * - optional support of dynamic library loading (based on config.h) */ #include #include #include #include #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "libipv6calc_db_wrapper.h" #ifdef SUPPORT_IP2LOCATION #include "libipv6calc_db_wrapper_IP2Location.h" char ip2location_db_dir[NI_MAXHOST] = IP2LOCATION_DB; /* * API_VERSION is defined as a bareword in IP2Location.h, * we need this trick to stringify it. Blah. */ #define makestr(x) #x #define xmakestr(x) makestr(x) #define IP2LOCATION_API_VERSION xmakestr(API_VERSION) #ifdef SUPPORT_IP2LOCATION_DYN char ip2location_lib_file[NI_MAXHOST] = IP2LOCATION_DYN_LIB; static const char* wrapper_ip2location_info = "dyn-load"; static int wrapper_ip2location_ipv6_support = IP2LOCATION_IPV6_SUPPORT_UNKNOWN; // static int wrapper_ip2location_support = IP2LOCATION_SUPPORT_UNKNOWN; currently not used /* define status and dynamic load functions */ static int dl_status_IP2Location_open = IPV6CALC_DL_STATUS_UNKNOWN; typedef IP2Location *(*dl_IP2Location_open_t)(char *db); static union { dl_IP2Location_open_t func; void * obj; } dl_IP2Location_open; static int dl_status_IP2Location_close = IPV6CALC_DL_STATUS_UNKNOWN; typedef int (*dl_IP2Location_close_t)(IP2Location *loc); static union { dl_IP2Location_close_t func; void * obj; } dl_IP2Location_close; static int dl_status_IP2Location_get_country_short = IPV6CALC_DL_STATUS_UNKNOWN; typedef IP2LocationRecord *(*dl_IP2Location_get_country_short_t)(IP2Location *loc, char *ip); static union { dl_IP2Location_get_country_short_t func; void * obj; } dl_IP2Location_get_country_short; static int dl_status_IP2Location_get_country_long = IPV6CALC_DL_STATUS_UNKNOWN; typedef IP2LocationRecord *(*dl_IP2Location_get_country_long_t)(IP2Location *loc, char *ip); static union { dl_IP2Location_get_country_long_t func; void * obj; } dl_IP2Location_get_country_long; static int dl_status_IP2Location_get_all = IPV6CALC_DL_STATUS_UNKNOWN; typedef IP2LocationRecord *(*dl_IP2Location_get_all_t)(IP2Location *loc, char *ip); static union { dl_IP2Location_get_all_t func; void * obj; } dl_IP2Location_get_all; static int dl_status_IP2Location_free_record = IPV6CALC_DL_STATUS_UNKNOWN; typedef IP2LocationRecord *(*dl_IP2Location_free_record_t)(IP2LocationRecord *record); static union { dl_IP2Location_free_record_t func; void * obj; } dl_IP2Location_free_record; static int dl_status_IP2Location_api_version_num = IPV6CALC_DL_STATUS_UNKNOWN; typedef unsigned long int (*dl_IP2Location_api_version_num_t)(void); static union { dl_IP2Location_api_version_num_t func; void * obj; } dl_IP2Location_api_version_num; static int dl_status_IP2Location_api_version_string = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_IP2Location_api_version_string_t)(void); static union { dl_IP2Location_api_version_string_t func; void * obj; } dl_IP2Location_api_version_string; static int dl_status_IP2Location_lib_version_string = IPV6CALC_DL_STATUS_UNKNOWN; typedef char *(*dl_IP2Location_lib_version_string_t)(void); static union { dl_IP2Location_lib_version_string_t func; void * obj; } dl_IP2Location_lib_version_string; #else // SUPPORT_IP2LOCATION_DYN static const char* wrapper_ip2location_info = "built-in"; #ifdef SUPPORT_IP2LOCATION_V6 static int wrapper_ip2location_ipv6_support = IP2LOCATION_IPV6_SUPPORT_FULL; #else static int wrapper_ip2location_ipv6_support = IP2LOCATION_IPV6_SUPPORT_UNKNOWN; #endif #endif // SUPPORT_IP2LOCATION_DYN // DB used for resolution after automatic election, which is currently done by checking for DB files and the sequence in the header file static int ip2location_db_country_v4 = 0; static int ip2location_db_country_v6 = 0; static int ip2location_db_region_city_v4 = 0; static int ip2location_db_region_city_v6 = 0; typedef struct { unsigned int num; int dbtype; int dbym; } s_ipv6calc_ip2location_db; #define IP2L_SAMPLE 0 #define IP2L_LITE 1 #define IP2L_COMM 2 #define IP2L_MAX 3 static s_ipv6calc_ip2location_db ip2location_db_country_v4_best[IP2L_MAX]; static s_ipv6calc_ip2location_db ip2location_db_country_v6_best[IP2L_MAX]; static s_ipv6calc_ip2location_db ip2location_db_region_city_v4_best[IP2L_MAX]; static s_ipv6calc_ip2location_db ip2location_db_region_city_v6_best[IP2L_MAX]; static int ip2location_db_country_sample_v4_lite_autoswitch = 0; static int ip2location_db_country_sample_v6_lite_autoswitch = 0; static int ip2location_db_region_city_sample_v4_lite_autoswitch = 0; static int ip2location_db_region_city_sample_v6_lite_autoswitch = 0; // select automagically SAMPLE databases in case available and matching and not older than given months int ip2location_db_lite_to_sample_autoswitch_max_delta_months = 12; // select LITE database if COMM is older than given months int ip2location_db_comm_to_lite_switch_min_delta_months = 12; // select better database of same product (COMM/LITE/SAMPLE) only if not older than given months int ip2location_db_better_max_delta_months = 1; // select only a specific IP2Location db type int ip2location_db_only_type = 0; // allow soft links (usually skipped) int ip2location_db_allow_softlinks = 0; #define IP2L_PACK_YM(loc) (loc->databaseyear * 12 + (loc->databasemonth -1)) #define IP2L_UNPACK_YM(dbym) ((dbym > 0) ? ((dbym % 12) + 1 + ((dbym / 12) + 2000) * 100) : 0) #ifdef SUPPORT_IP2LOCATION_DYN static int ip2location_ipv6_compat = 0; static int ip2location_all_compat = 0; #else // SUPPORT_IP2LOCATION_DYN #ifdef SUPPORT_IP2LOCATION_ALL_COMPAT static int ip2location_all_compat = 1; #else // SUPPORT_IP2LOCATION_ALL_COMPAT static int ip2location_all_compat = 0; #endif // SUPPORT_IP2LOCATION_ALL_COMPAT #ifdef SUPPORT_IP2LOCATION_IPV6_COMPAT static int ip2location_ipv6_compat = 1; #else // SUPPORT_IP2LOCATION_IPV6_COMPAT static int ip2location_ipv6_compat = 0; #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT #endif // SUPPORT_IP2LOCATION_DYN static void *dl_IP2Location_handle = NULL; char ***libipv6calc_db_wrapper_IP2LocationDBFileName_ptr = NULL; const char **libipv6calc_db_wrapper_IP2LocationDBDescription = NULL; /* database usage map */ #define IP2LOCATION_DB_MAX_BLOCKS_32 4 // 0-127 static uint32_t ip2location_db_usage_map[IP2LOCATION_DB_MAX_BLOCKS_32]; #define IP2LOCATION_DB_USAGE_MAP_TAG(db) if (db < (32 * IP2LOCATION_DB_MAX_BLOCKS_32)) { \ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Tag usage for db: %d", db); \ ip2location_db_usage_map[db / 32] |= 1 << (db % 32); \ } else { \ fprintf(stderr, "FIXME: unsupported db value (exceed limit): %d (%d)\n", db, 32 * IP2LOCATION_DB_MAX_BLOCKS_32 - 1); \ exit(1); \ }; char ip2location_db_usage_string[NI_MAXHOST] = ""; // local cache static IP2Location *db_ptr_cache[MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc)]; // local prototyping static char *libipv6calc_db_wrapper_IP2Location_dbfilename(const unsigned int type); static int libipv6calc_db_wrapper_IP2Location_db_compatible(const unsigned int type); /* * function initialise the IP2Location wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_IP2Location_wrapper_init(void) { int i, dbym, product, dbtype, result; IP2Location *loc; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called"); #ifdef SUPPORT_IP2LOCATION_DYN char *error; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Load library: %s", ip2location_lib_file); dlerror(); /* Clear any existing error */ dl_IP2Location_handle = dlopen(ip2location_lib_file, RTLD_NOW | RTLD_LOCAL); if (dl_IP2Location_handle == NULL) { if ((strcmp(ip2location_lib_file, IP2LOCATION_DYN_LIB) != 0) || (ipv6calc_verbose > 0)) { NONQUIETPRINT_WA("IP2Location dynamic library load failed (disable support): %s", dlerror()); }; return(1); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Loaded library successful: %s", ip2location_lib_file); /* check for IP2Location_ipv6_to_no (API < 7.0.0) */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", "IP2Location_new_record"); dlerror(); /* Clear any existing error */ void *IP2Location_ipv6_to_no; *(void **) (&IP2Location_ipv6_to_no) = dlsym(dl_IP2Location_handle, "IP2Location_ipv6_to_no"); if ((error = dlerror()) != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Error on calling dlsym: %s (API >= 7.0.0): %s", "IP2Location_ipv6_to_no", error); } else { ip2location_ipv6_compat = 1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s (API < 7.0.0)", "IP2Location_ipv6_to_no"); }; /* check for IP2Location_get_usagetype (library < 6.0.0) */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", "IP2Location_get_usagetype"); dlerror(); /* Clear any existing error */ void *IP2Location_get_usagetype; *(void **) (&IP2Location_get_usagetype) = dlsym(dl_IP2Location_handle, "IP2Location_get_usagetype"); if ((error = dlerror()) != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Error on calling dlsym: %s (library < 6.0.0): %s", "IP2Location_get_usagetype", error); ip2location_all_compat = 1; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s (library >= 6.0.0)", "IP2Location_get_usagetype"); }; #else // SUPPORT_IP2LOCATION_DYN #endif // SUPPORT_IP2LOCATION_DYN DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Check for standard IP2Location databases"); /* check available databases for resolution */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { // add features to implemented wrapper_features_by_source_implemented[IPV6CALC_DB_SOURCE_IP2LOCATION] |= libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "IP2Location database test for availability: %s", libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename); result = libipv6calc_db_wrapper_IP2Location_db_avail(libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number); if ((result != 1) && (result != 3)) { // db not available continue; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "IP2Location database available: %s", libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description); if (libipv6calc_db_wrapper_IP2Location_db_compatible(libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number) != 0) { // incompatible database continue; }; loc = libipv6calc_db_wrapper_IP2Location_open_type(libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number); dbym = IP2L_PACK_YM(loc); dbtype = loc->databasetype; if ((ip2location_db_only_type > 0) && (ip2location_db_only_type != dbtype)) { // not selected continue; }; if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE) != 0) { product = IP2L_SAMPLE; } else if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE) != 0) { product = IP2L_LITE; } else { product = IP2L_COMM; }; #define IP2L_DB_SELECT_BETTER(best) \ if ( \ (best.num == 0) \ || ( \ (best.dbym > 0) \ && ((best.dbym - dbym) <= ip2location_db_better_max_delta_months) \ ) \ ) { \ best.num = libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number; \ best.dbym = dbym; \ best.dbtype = dbtype; \ }; // note: databases are listed in sequence "less data" before "more data" if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IPV4_TO_CC) != 0) { IP2L_DB_SELECT_BETTER(ip2location_db_country_v4_best[product]) }; if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IPV6_TO_CC) != 0) { IP2L_DB_SELECT_BETTER(ip2location_db_country_v6_best[product]) }; if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & (IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CITY)) != 0) { IP2L_DB_SELECT_BETTER(ip2location_db_region_city_v4_best[product]) }; if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & (IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CITY)) != 0) { IP2L_DB_SELECT_BETTER(ip2location_db_region_city_v6_best[product]) }; wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] |= libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features; }; // select databases for lite->sample autoswitch if (ip2location_db_lite_to_sample_autoswitch_max_delta_months > 0) { // select best sample db for autoswitch lite->sample #define SELECT_LITE_SAMPLE_AUTOSWITCH(sample, lite, autoswitch) \ if ((sample.num > 0) && (lite.num > 0)) { \ if (sample.dbtype > lite.dbtype) { \ if (lite.dbym - sample.dbym <= ip2location_db_lite_to_sample_autoswitch_max_delta_months) { \ autoswitch = sample.num; \ }; \ }; \ }; SELECT_LITE_SAMPLE_AUTOSWITCH(ip2location_db_country_v4_best[IP2L_SAMPLE], ip2location_db_country_v4_best[IP2L_LITE], ip2location_db_country_sample_v4_lite_autoswitch) SELECT_LITE_SAMPLE_AUTOSWITCH(ip2location_db_country_v6_best[IP2L_SAMPLE], ip2location_db_country_v6_best[IP2L_LITE], ip2location_db_country_sample_v6_lite_autoswitch) SELECT_LITE_SAMPLE_AUTOSWITCH(ip2location_db_region_city_v4_best[IP2L_SAMPLE], ip2location_db_region_city_v4_best[IP2L_LITE], ip2location_db_region_city_sample_v4_lite_autoswitch) SELECT_LITE_SAMPLE_AUTOSWITCH(ip2location_db_region_city_v6_best[IP2L_SAMPLE], ip2location_db_region_city_v6_best[IP2L_LITE], ip2location_db_region_city_sample_v6_lite_autoswitch) }; // select lite instead of comm, if comm is outdated and lite available if (ip2location_db_comm_to_lite_switch_min_delta_months > 0) { #define SELECT_LITE_INSTEAD_OF_COMM(lite, comm, final) \ if ((lite.num > 0) && (comm.num > 0)) { \ if (lite.dbym - comm.dbym > ip2location_db_comm_to_lite_switch_min_delta_months) { \ final = lite.num; \ }; \ }; SELECT_LITE_INSTEAD_OF_COMM(ip2location_db_country_v4_best[IP2L_LITE], ip2location_db_country_v4_best[IP2L_COMM], ip2location_db_country_v4) SELECT_LITE_INSTEAD_OF_COMM(ip2location_db_country_v6_best[IP2L_LITE], ip2location_db_country_v6_best[IP2L_COMM], ip2location_db_country_v6) SELECT_LITE_INSTEAD_OF_COMM(ip2location_db_region_city_v4_best[IP2L_LITE], ip2location_db_region_city_v4_best[IP2L_COMM], ip2location_db_region_city_v4) SELECT_LITE_INSTEAD_OF_COMM(ip2location_db_region_city_v6_best[IP2L_LITE], ip2location_db_region_city_v6_best[IP2L_COMM], ip2location_db_region_city_v6) }; #define FILL_EMPTY(product, final) \ if ((product.num > 0) && (final == 0)) { \ final = product.num; \ }; // fill empty ones with comm FILL_EMPTY(ip2location_db_country_v4_best[IP2L_COMM], ip2location_db_country_v4) FILL_EMPTY(ip2location_db_country_v6_best[IP2L_COMM], ip2location_db_country_v6) FILL_EMPTY(ip2location_db_region_city_v4_best[IP2L_COMM], ip2location_db_region_city_v4) FILL_EMPTY(ip2location_db_region_city_v6_best[IP2L_COMM], ip2location_db_region_city_v6) // fill empty ones with lite FILL_EMPTY(ip2location_db_country_v4_best[IP2L_LITE], ip2location_db_country_v4) FILL_EMPTY(ip2location_db_country_v6_best[IP2L_LITE], ip2location_db_country_v6) FILL_EMPTY(ip2location_db_region_city_v4_best[IP2L_LITE], ip2location_db_region_city_v4) FILL_EMPTY(ip2location_db_region_city_v6_best[IP2L_LITE], ip2location_db_region_city_v6) // fill empty ones with sample FILL_EMPTY(ip2location_db_country_v4_best[IP2L_SAMPLE], ip2location_db_country_v4) FILL_EMPTY(ip2location_db_country_v6_best[IP2L_SAMPLE], ip2location_db_country_v6) FILL_EMPTY(ip2location_db_region_city_v4_best[IP2L_SAMPLE], ip2location_db_region_city_v4) FILL_EMPTY(ip2location_db_region_city_v6_best[IP2L_SAMPLE], ip2location_db_region_city_v6) #ifdef SUPPORT_IP2LOCATION_DYN // nothing to set for the moment #else #if ! defined SUPPORT_IP2LOCATION_ALL_COMPAT || defined SUPPORT_IP2LOCATION_IPV6_COMPAT //IP2Location *loc; #ifndef SUPPORT_IP2LOCATION_ALL_COMPAT IP2LocationRecord *record; #endif if (ip2location_db_country_v4 > 0) { loc = libipv6calc_db_wrapper_IP2Location_open_type(ip2location_db_country_v4); if (loc != NULL) { #ifndef SUPPORT_IP2LOCATION_ALL_COMPAT // block libraries < 6.0.0 in case compiled with >= 6.0.0 record = IP2Location_get_usagetype(loc, "127.0.0.1"); if (record != NULL) { // dummy libipv6calc_db_wrapper_IP2Location_free_record(record); }; #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT #ifdef SUPPORT_IP2LOCATION_IPV6_COMPAT // block libraries >= 7.0.0 in case compiled with < 7.0.0 IP2Location_initialize(loc); #endif }; }; if (ip2location_db_country_v6 > 0) { loc = libipv6calc_db_wrapper_IP2Location_open_type(ip2location_db_country_v6); if (loc != NULL) { #ifndef SUPPORT_IP2LOCATION_ALL_COMPAT // block libraries < 6.0.0 in case compiled with >= 6.0.0 record = IP2Location_get_usagetype(loc, "::1"); if (record != NULL) { // dummy libipv6calc_db_wrapper_IP2Location_free_record(record); }; #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT #ifdef SUPPORT_IP2LOCATION_IPV6_COMPAT // block libraries >= 7.0.0 in case compiled with < 7.0.0 IP2Location_initialize(loc); #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT }; }; #endif #endif /* close handles which are not necessary further on */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (db_ptr_cache[i] != NULL) { if ( (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == ip2location_db_country_v4_best[IP2L_LITE].num) || (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == ip2location_db_country_v4_best[IP2L_COMM].num) || (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == ip2location_db_country_v4_best[IP2L_SAMPLE].num) || (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == ip2location_db_country_v6_best[IP2L_LITE].num) || (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == ip2location_db_country_v6_best[IP2L_COMM].num) || (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == ip2location_db_country_v6_best[IP2L_SAMPLE].num) ) { // database is in use continue; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Close further unused IP2Location: type=%d desc='%s'", libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description); libipv6calc_db_wrapper_IP2Location_close(db_ptr_cache[i]); }; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Version of linked library: %s / IPv6 support: %s / custom directory: %s", libipv6calc_db_wrapper_IP2Location_lib_version(), libipv6calc_db_wrapper_IP2Location_IPv6_support[wrapper_ip2location_ipv6_support].token, ip2location_db_dir); wrapper_features |= wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION]; return 0; }; /* * wrapper: IP2Location_close */ int libipv6calc_db_wrapper_IP2Location_close(IP2Location *loc) { int i; int result = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s", wrapper_ip2location_info); if (loc == NULL) { return(0); }; #ifdef SUPPORT_IP2LOCATION_DYN const char *dl_symbol = "IP2Location_close"; char *error; if (dl_IP2Location_handle == NULL) { fprintf(stderr, "dl_IP2Location handle not defined\n"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_close == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_close.obj) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_close = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_IP2Location_close = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_close == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result = (*dl_IP2Location_close.func)(loc); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); }; #else result = IP2Location_close(loc); #endif goto END_libipv6calc_db_wrapper; // dummy END_libipv6calc_db_wrapper: /* cleanup cache entry */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (db_ptr_cache[i] == loc) { db_ptr_cache[i] = NULL; }; }; return(result); }; /* * function info of IP2Location wrapper * * in : ptr and size of string to be filled * out: modified string; */ void libipv6calc_db_wrapper_IP2Location_wrapper_info(char* string, const size_t size) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called"); #ifdef SUPPORT_IP2LOCATION snprintf(string, size, "IP2Location available databases: Country4=%d Country6=%d ASN4=%d ASN6=%d City4=%d City6=%d" , (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & IPV6CALC_DB_IPV4_TO_CC) ? 1 : 0 , (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & IPV6CALC_DB_IPV6_TO_CC) ? 1 : 0 , (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & IPV6CALC_DB_IPV4_TO_AS) ? 1 : 0 , (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & IPV6CALC_DB_IPV6_TO_AS) ? 1 : 0 , (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & IPV6CALC_DB_IPV4_TO_CITY) ? 1 : 0 , (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & IPV6CALC_DB_IPV6_TO_CITY) ? 1 : 0 ); #else snprintf(string, size, "No IP2Location support built-in"); #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished"); return; }; /* * function print database info of IP2Location wrapper * * in : (void) * out: (void) */ void libipv6calc_db_wrapper_IP2Location_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { IP2Location *loc; int i, type, count = 0, r; const char *prefix = "\0"; if (prefix_string != NULL) { prefix = prefix_string; }; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called"); IPV6CALC_DB_FEATURE_INFO(prefix, IPV6CALC_DB_SOURCE_IP2LOCATION) #ifdef SUPPORT_IP2LOCATION fprintf(stderr, "%sIP2Location: info of available databases in directory: %s\n", prefix, ip2location_db_dir); fprintf(stderr, "%sIP2Location: Copyright (c) IP2Location All Rights Reserved\n", prefix); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { type = libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number; #ifdef SUPPORT_IP2LOCATION_DYN if (dl_IP2Location_handle == NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Check whether db file exists: %s", libipv6calc_db_wrapper_IP2Location_dbfilename(type)); if (access(libipv6calc_db_wrapper_IP2Location_dbfilename(type), R_OK) == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "DB file exists: %s", libipv6calc_db_wrapper_IP2Location_dbfilename(type)); fprintf(stderr, "%sIP2Location: %-27s: %-35s (LIBRARY-NOT-LOADED)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "DB file doesn't exist or can't open: %s (%s)", libipv6calc_db_wrapper_IP2Location_dbfilename(type), strerror(errno)); if (level_verbose == LEVEL_VERBOSE2) { fprintf(stderr, "%sIP2Location: %-29s: %-35s (%s)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename, strerror(errno)); }; }; } else { #endif // SUPPORT_IP2LOCATION_DYN r = libipv6calc_db_wrapper_IP2Location_db_avail(type); if (r == 2) { fprintf(stderr, "%sIP2Location: %s %-43s:[%3d] %-35s (SOFTLINK IS UNSUPPORTED)\n", prefix, ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) == (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) ? "IPvx" : (((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0) ? "IPv6" : "IPv4"), libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename); } else if ((r == 1) || (r == 3)) { // IP2Location returned that database is available loc = libipv6calc_db_wrapper_IP2Location_open_type(type); if (loc == NULL) { fprintf(stderr, "%sIP2Location: %s %-43s:[%3d] %-35s (CAN'T OPEN)\n", prefix, ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) == (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) ? "IPvx" : (((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0) ? "IPv6" : "IPv4"), libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename ); } else { fprintf(stderr, "%sIP2Location: %s %-43s:[%3d] %-35s (%s%s)\n", prefix, ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) == (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) ? "IPvx" : (((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0) ? "IPv6" : "IPv4"), libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename, libipv6calc_db_wrapper_IP2Location_database_info(loc, level_verbose, i, 0), (r == 3) ? " SOFTLINK" : "" ); libipv6calc_db_wrapper_IP2Location_close(loc); count++; }; } else { if (level_verbose == LEVEL_VERBOSE2) { fprintf(stderr, "%sIP2Location: %s %-43s:[%3d] %-35s (%s)\n", prefix, ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) == (IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IP2LOCATION_IPV4)) ? "IPvx" : (((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0) ? "IPv6" : "IPv4"), libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename, strerror(errno) ); }; continue; }; #ifdef SUPPORT_IP2LOCATION_DYN }; #endif // SUPPORT_IP2LOCATION_DYN }; if (count == 0) { fprintf(stderr, "%sIP2Location: NO available databases found in directory: %s\n", prefix, ip2location_db_dir); } else { if (level_verbose >= LEVEL_VERBOSE2) { fprintf(stderr, "%sIP2Location: detected best databases SAMPLE Country4=%-3d DB%-2d %6d Country6=%-3d DB%-2d %6d City4=%-3d DB%-2d %6d City6=%-3d DB%-2d %6d\n" , prefix , ip2location_db_country_v4_best[IP2L_SAMPLE].num , ip2location_db_country_v4_best[IP2L_SAMPLE].dbtype , IP2L_UNPACK_YM(ip2location_db_country_v4_best[IP2L_SAMPLE].dbym) , ip2location_db_country_v6_best[IP2L_SAMPLE].num , ip2location_db_country_v6_best[IP2L_SAMPLE].dbtype , IP2L_UNPACK_YM(ip2location_db_country_v6_best[IP2L_SAMPLE].dbym) , ip2location_db_region_city_v4_best[IP2L_SAMPLE].num , ip2location_db_region_city_v4_best[IP2L_SAMPLE].dbtype , IP2L_UNPACK_YM(ip2location_db_region_city_v4_best[IP2L_SAMPLE].dbym) , ip2location_db_region_city_v6_best[IP2L_SAMPLE].num , ip2location_db_region_city_v6_best[IP2L_SAMPLE].dbtype , IP2L_UNPACK_YM(ip2location_db_region_city_v6_best[IP2L_SAMPLE].dbym) ); fprintf(stderr, "%sIP2Location: detected best databases LITE Country4=%-3d DB%-2d %6d Country6=%-3d DB%-2d %6d City4=%-3d DB%-2d %6d City6=%-3d DB%-2d %6d\n" , prefix , ip2location_db_country_v4_best[IP2L_LITE].num , ip2location_db_country_v4_best[IP2L_LITE].dbtype , IP2L_UNPACK_YM(ip2location_db_country_v4_best[IP2L_LITE].dbym) , ip2location_db_country_v6_best[IP2L_LITE].num , ip2location_db_country_v6_best[IP2L_LITE].dbtype , IP2L_UNPACK_YM(ip2location_db_country_v6_best[IP2L_LITE].dbym) , ip2location_db_region_city_v4_best[IP2L_LITE].num , ip2location_db_region_city_v4_best[IP2L_LITE].dbtype , IP2L_UNPACK_YM(ip2location_db_region_city_v4_best[IP2L_LITE].dbym) , ip2location_db_region_city_v6_best[IP2L_LITE].num , ip2location_db_region_city_v6_best[IP2L_LITE].dbtype , IP2L_UNPACK_YM(ip2location_db_region_city_v6_best[IP2L_LITE].dbym) ); fprintf(stderr, "%sIP2Location: detected best databases COMM Country4=%-3d DB%-2d %6d Country6=%-3d DB%-2d %6d City4=%-3d DB%-2d %6d City6=%-3d DB%-2d %6d\n" , prefix , ip2location_db_country_v4_best[IP2L_COMM].num , ip2location_db_country_v4_best[IP2L_COMM].dbtype , IP2L_UNPACK_YM(ip2location_db_country_v4_best[IP2L_COMM].dbym) , ip2location_db_country_v6_best[IP2L_COMM].num , ip2location_db_country_v6_best[IP2L_COMM].dbtype , IP2L_UNPACK_YM(ip2location_db_country_v6_best[IP2L_COMM].dbym) , ip2location_db_region_city_v4_best[IP2L_COMM].num , ip2location_db_region_city_v4_best[IP2L_COMM].dbtype , IP2L_UNPACK_YM(ip2location_db_region_city_v4_best[IP2L_COMM].dbym) , ip2location_db_region_city_v6_best[IP2L_COMM].num , ip2location_db_region_city_v6_best[IP2L_COMM].dbtype , IP2L_UNPACK_YM(ip2location_db_region_city_v6_best[IP2L_COMM].dbym) ); } else if (level_verbose >= LEVEL_VERBOSE) { fprintf(stderr, "%sIP2Location: detected best databases SAMPLE Country4=%-3d Country6=%-3d City4=%-3d City6=%-3d\n" , prefix , ip2location_db_country_v4_best[IP2L_SAMPLE].num , ip2location_db_country_v6_best[IP2L_SAMPLE].num , ip2location_db_region_city_v4_best[IP2L_SAMPLE].num , ip2location_db_region_city_v6_best[IP2L_SAMPLE].num ); fprintf(stderr, "%sIP2Location: detected best databases LITE Country4=%-3d Country6=%-3d City4=%-3d City6=%-3d\n" , prefix , ip2location_db_country_v4_best[IP2L_LITE].num , ip2location_db_country_v6_best[IP2L_LITE].num , ip2location_db_region_city_v4_best[IP2L_LITE].num , ip2location_db_region_city_v6_best[IP2L_LITE].num ); fprintf(stderr, "%sIP2Location: detected best databases COMM Country4=%-3d Country6=%-3d City4=%-3d City6=%-3d\n" , prefix , ip2location_db_country_v4_best[IP2L_COMM].num , ip2location_db_country_v6_best[IP2L_COMM].num , ip2location_db_region_city_v4_best[IP2L_COMM].num , ip2location_db_region_city_v6_best[IP2L_COMM].num ); }; if (level_verbose >= LEVEL_VERBOSE) { if (ip2location_db_lite_to_sample_autoswitch_max_delta_months > 0) { fprintf(stderr, "%sIP2Location: selected best databases LI->SA* Country4=%-3d%s Country6=%-3d%s City4=%-3d%s City6=%-3d\n" , prefix , ip2location_db_country_sample_v4_lite_autoswitch , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , ip2location_db_country_sample_v6_lite_autoswitch , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , ip2location_db_region_city_sample_v4_lite_autoswitch , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , ip2location_db_region_city_sample_v6_lite_autoswitch ); }; fprintf(stderr, "%sIP2Location: selected best databases normal Country4=%-3d%s Country6=%-3d%s City4=%-3d%s City6=%-3d\n" , prefix , ip2location_db_country_v4 , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , ip2location_db_country_v6 , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , ip2location_db_region_city_v4 , (level_verbose >= LEVEL_VERBOSE2) ? " " : "" , ip2location_db_region_city_v6 ); if (ip2location_db_lite_to_sample_autoswitch_max_delta_months > 0) { fprintf(stderr, "%sIP2Location: selected best databases method: * = autoswitch from LITE to SAMPLE enabled in case not older than %d months and having more features\n" , prefix , ip2location_db_lite_to_sample_autoswitch_max_delta_months ); }; if (ip2location_db_comm_to_lite_switch_min_delta_months > 0) { fprintf(stderr, "%sIP2Location: selected best databases method: COMM older than %d months are deselected in case of LITE is available\n" , prefix , ip2location_db_comm_to_lite_switch_min_delta_months ); }; if (ip2location_db_better_max_delta_months > 0) { fprintf(stderr, "%sIP2Location: selected best databases method: COMM/LITE/SAMPLE with more features are only selected in case not older than %d months of already found COMM/LITE/SAMPLE\n" , prefix , ip2location_db_better_max_delta_months ); }; if (ip2location_db_only_type > 0) { fprintf(stderr, "%sIP2Location: selected best databases method: by applying given DB type filter: %d\n" , prefix , ip2location_db_only_type ); }; fprintf(stderr, "%sIP2Location: selected best databases method: softlinks: %s\n" , prefix , (ip2location_db_allow_softlinks == 0) ? "skipped-by-default" : "allowed-by-option" ); }; }; #else // SUPPORT_IP2LOCATION snfprintf(stderr, string, size, "%sNo IP2Location support built-in", prefix); #endif // SUPPORT_IP2LOCATION DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished"); return; }; /* * wrapper: string regarding used database infos */ char *libipv6calc_db_wrapper_IP2Location_wrapper_db_info_used(void) { unsigned int db; IP2Location *loc; char tempstring[NI_MAXHOST]; char *info; unsigned int db_lite_used = 0; for (db = 0; db < 32 * IP2LOCATION_DB_MAX_BLOCKS_32; db++) { if ((ip2location_db_usage_map[db / 32] & (1 << (db % 32))) != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "DB used: %d", db); loc = libipv6calc_db_wrapper_IP2Location_open_type(db); // workaround to get lite info int entry = -1, i; for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == db) { entry = i; break; }; }; if (entry < 0) { // should not happen continue; }; info = libipv6calc_db_wrapper_IP2Location_database_info(loc, 0, entry, 1); if (info == NULL) { continue; }; // NULL pointer returned if (strlen(info) == 0) { continue; }; // empty string returned if (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE) { db_lite_used = 1; }; if (strlen(ip2location_db_usage_string) > 0) { if (strstr(ip2location_db_usage_string, info) != NULL) { continue; }; // string already included snprintf(tempstring, sizeof(tempstring), "%s / %s", ip2location_db_usage_string, info); } else { snprintf(tempstring, sizeof(tempstring), "%s", info); }; snprintf(ip2location_db_usage_string, sizeof(ip2location_db_usage_string), "%s", tempstring); }; }; if (db_lite_used == 1) { snprintf(tempstring, sizeof(tempstring), "%s / This site or product includes IP2Location LITE data available from http://lite.ip2location.com", ip2location_db_usage_string); snprintf(ip2location_db_usage_string, sizeof(ip2location_db_usage_string), "%s", tempstring); }; return(ip2location_db_usage_string); }; #ifdef SUPPORT_IP2LOCATION /******************************* * Wrapper extension functions for IP2Location * because of missing support in library itself *******************************/ /* * wrapper extension: IP2Location_lib_version */ char *libipv6calc_db_wrapper_IP2Location_lib_version(void) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s", wrapper_ip2location_info); static char result_IP2Location_lib_version[256]; #ifdef SUPPORT_IP2LOCATION_DYN const char *dl_symbol = "IP2Location_api_version_string"; char *error; if (dl_IP2Location_handle == NULL) { snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "LIBRARY-NOT-LOADED"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_api_version_string == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_api_version_string.obj) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_api_version_string = IPV6CALC_DL_STATUS_ERROR; } else { dl_status_IP2Location_api_version_string = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); }; } else if (dl_status_IP2Location_api_version_string == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; const char *dl_symbol2 = "IP2Location_api_version_num"; if (dl_IP2Location_handle == NULL) { snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "LIBRARY-NOT-LOADED"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_api_version_num == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol2); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_api_version_num.obj) = dlsym(dl_IP2Location_handle, dl_symbol2); if ((error = dlerror()) != NULL) { dl_status_IP2Location_api_version_num = IPV6CALC_DL_STATUS_ERROR; } else { dl_status_IP2Location_api_version_num = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol2); }; } else if (dl_status_IP2Location_api_version_num == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol2); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol2); }; const char *dl_symbol3 = "IP2Location_lib_version_string"; if (dl_status_IP2Location_lib_version_string == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol3); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_lib_version_string.obj) = dlsym(dl_IP2Location_handle, dl_symbol3); if ((error = dlerror()) != NULL) { dl_status_IP2Location_lib_version_string = IPV6CALC_DL_STATUS_ERROR; } else { dl_status_IP2Location_lib_version_string = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol3); }; } else if (dl_status_IP2Location_lib_version_string == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol3); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol3); }; if (ip2location_ipv6_compat == 0) { if (dl_status_IP2Location_api_version_string == IPV6CALC_DL_STATUS_OK) { // take use of new (>= 7.0.1) function if (dl_status_IP2Location_lib_version_string == IPV6CALC_DL_STATUS_OK) { // take also use of new (>= 8.0.4) function snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "%s API=%s Major=%d", (*dl_IP2Location_lib_version_string.func)(), (*dl_IP2Location_api_version_string.func)(), libipv6calc_db_wrapper_IP2Location_library_version_major()); } else { snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "API=%s Major=%d", (*dl_IP2Location_api_version_string.func)(), libipv6calc_db_wrapper_IP2Location_library_version_major()); }; } else { // fallback snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "API>=7.0.0 Major=%d", libipv6calc_db_wrapper_IP2Location_library_version_major()); }; } else { snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "API<7.0.0 Major=%d", libipv6calc_db_wrapper_IP2Location_library_version_major()); }; #else #ifdef SUPPORT_IP2LOCATION_API_VERSION_STRING #ifdef SUPPORT_IP2LOCATION_LIB_VERSION_STRING // (>= 8.0.4) if (IP2Location_api_version_num() < 80004) { // IP2Location_lib_version_string unsupported in non-dynamic link mode (because older libs can be used by accident) snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "API=%s Major=%d", IP2Location_api_version_string(), libipv6calc_db_wrapper_IP2Location_library_version_major()); } else { snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "%s API=%s Major=%d", IP2Location_lib_version_string(), IP2Location_api_version_string(), libipv6calc_db_wrapper_IP2Location_library_version_major()); }; #else // SUPPORT_IP2LOCATION_LIB_VERSION_STRING snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "API=%s Major=%d", IP2Location_api_version_string(), libipv6calc_db_wrapper_IP2Location_library_version_major()); #endif // SUPPORT_IP2LOCATION_LIB_VERSION_STRING #else // SUPPORT_IP2LOCATION_API_VERSION_STRING snprintf(result_IP2Location_lib_version, sizeof(result_IP2Location_lib_version), "API=%s Major=%d", IP2LOCATION_API_VERSION, libipv6calc_db_wrapper_IP2Location_library_version_major()); #endif // SUPPORT_IP2LOCATION_API_VERSION_STRING #endif #ifdef SUPPORT_IP2LOCATION_DYN END_libipv6calc_db_wrapper: #endif return(result_IP2Location_lib_version); }; /* * wrapper extension: IP2Location_dbfilename */ static char *libipv6calc_db_wrapper_IP2Location_dbfilename(const unsigned int type) { static char tempstring[NI_MAXHOST]; int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s type=%d", wrapper_ip2location_info, type); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return(NULL); }; snprintf(tempstring, sizeof(tempstring), "%s/%s", ip2location_db_dir, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename); DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d has filename=%s", wrapper_ip2location_info, type, tempstring); return(tempstring); }; /* * wrapper extension: IP2Location_dbdescription */ const char *libipv6calc_db_wrapper_IP2Location_dbdescription(const unsigned int type) { int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s type=%d", wrapper_ip2location_info, type); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return("unknown"); }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d has description=%s", wrapper_ip2location_info, type, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description); return(libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description); }; /* * wrapper extension: IP2Location_db_avail * ret: 1=avail 0=not-avail 2=softlink (in case not allowed) 3=softlink (allowed) */ int libipv6calc_db_wrapper_IP2Location_db_avail(const unsigned int type) { char *filename; int r, result = 0; IP2Location *loc; struct stat st; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s type=%d", wrapper_ip2location_info, type); filename = libipv6calc_db_wrapper_IP2Location_dbfilename(type); if (filename == NULL) { goto END_libipv6calc_db_wrapper; }; if (access(filename, R_OK) != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d (not readable) (%s)", wrapper_ip2location_info, type, strerror(errno)); goto END_libipv6calc_db_wrapper; }; r = lstat(filename, &st); if (r != 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d (lstat problem) (r=%d)", wrapper_ip2location_info, type, r); goto END_libipv6calc_db_wrapper; }; if (S_ISLNK(st.st_mode)) { if (ip2location_db_allow_softlinks == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d (unsupported softlink)", wrapper_ip2location_info, type); result = 2; goto END_libipv6calc_db_wrapper; } else { result = 3; }; }; loc = libipv6calc_db_wrapper_IP2Location_open_type(type); if (loc == NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d (can't open)", wrapper_ip2location_info, type); } else { if (result == 0) { result = 1; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished: %s type=%d (%s) (r=%d)", wrapper_ip2location_info, type, filename, r); }; END_libipv6calc_db_wrapper: return(result); }; /* * wrapper extension: IP2Location_open_type */ IP2Location *libipv6calc_db_wrapper_IP2Location_open_type(const unsigned int type) { IP2Location *loc; char *filename; int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s type=%d", wrapper_ip2location_info, type); for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number == type) { entry = i; break; }; }; if (entry < 0) { return(NULL); }; if (db_ptr_cache[entry] != NULL) { // already open loc = db_ptr_cache[entry]; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Database already opened (cached) loc=%p type=%d", loc, type); goto END_libipv6calc_db_wrapper; } else { filename = libipv6calc_db_wrapper_IP2Location_dbfilename(type); if (filename == NULL) { return(NULL); }; loc = libipv6calc_db_wrapper_IP2Location_open(filename); if (loc == NULL) { goto END_libipv6calc_db_wrapper; }; db_ptr_cache[entry] = loc; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Database successfully opened (fill-cache), loc=%p type=%d", loc, type); }; END_libipv6calc_db_wrapper: return(loc); }; /******************************* * Wrapper functions for IP2Location *******************************/ /* * wrapper: IP2Location_open */ IP2Location *libipv6calc_db_wrapper_IP2Location_open(char *db) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s filename=%s", wrapper_ip2location_info, db); #ifdef SUPPORT_IP2LOCATION_DYN IP2Location *loc = NULL; const char *dl_symbol = "IP2Location_open"; char *error; if (dl_IP2Location_handle == NULL) { fprintf(stderr, "dl_IP2Location handle not defined\n"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_open == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_open.obj) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_open = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_IP2Location_open = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_open == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ loc = (*dl_IP2Location_open.func)(db); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(loc); #else return(IP2Location_open(db)); #endif }; /* * wrapper: IP2Location_database_info */ char *libipv6calc_db_wrapper_IP2Location_database_info(IP2Location *loc, const int level_verbose, const int entry, const int flag_copyright) { static char resultstring[NI_MAXHOST]; uint32_t ipsupport = 0; // unknown uint32_t entries_ipv4 = 0; uint32_t entries_ipv6 = 0; uint32_t features = libipv6calc_db_wrapper_IP2Location_db_file_desc[entry].features; uint32_t internal = libipv6calc_db_wrapper_IP2Location_db_file_desc[entry].internal; int type = libipv6calc_db_wrapper_IP2Location_db_file_desc[entry].number; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s", wrapper_ip2location_info); if (loc == NULL) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve database information"); } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "databasetype=%u ipversion=%u", loc->databasetype, loc->ipversion); if (level_verbose == LEVEL_VERBOSE2) { // catch API 4.0.0 -> 7.0.0 extension #ifdef SUPPORT_IP2LOCATION_DYN #ifdef SUPPORT_IP2LOCATION_IPV6_COMPAT // API < 7.0.0 if (loc->ipversion > 1) { // catch of changed API which reuses ipversion as ipv6databasecount entries_ipv4 = loc->ipversion; ipsupport |= 0x2; } else { if (internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) { entries_ipv6 = loc->databasecount; ipsupport |= 0x2; } else { entries_ipv4 = loc->databasecount; ipsupport |= 0x1; }; }; #else // SUPPORT_IP2LOCATION_IPV6_COMPAT // API >= 7.0.0 if (ip2location_ipv6_compat == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "databasetype=%u databasecount/ipv4databasecount=%u ipversion/ipv6databasecount=%u", loc->databasetype, loc->ipv4databasecount, loc->ipv6databasecount); // compiled with API >= 7.0.0, loaded library is >= 7.0.0 if (loc->ipv4databasecount > 2) { // IPv4 entries_ipv4 = loc->ipv4databasecount; ipsupport |= 0x1; }; if (loc->ipv6databasecount > 0) { // IPv6 ipsupport |= 0x2; if (loc->ipv6databasecount > 1) { entries_ipv6 = loc->ipv6databasecount; } else if (loc->ipversion == 1) { // catch of old DB file, ipv4databasecount is reused as databasecount entries_ipv6 = loc->ipv4databasecount; // clear IPv4 support ipsupport &= ~0x1; entries_ipv4 = 0; }; }; } else { // compiled with API >= 7.0.0, loaded library is < 7.0.0 if (loc->ipv4databasecount > 2) { // IPv4 entries_ipv4 = loc->ipv4databasecount; ipsupport |= 0x1; }; if (loc->ipv6databasecount > 0) { // catch of changed API which reuses ipversion as ipv6databasecount ipsupport |= 0x2; if (loc->ipv6databasecount > 1) { entries_ipv6 = loc->ipv6databasecount; } else if (loc->ipv6databasecount == 1) { // old behavior entries_ipv6 = loc->databasecount; ipsupport &= ~0x1; entries_ipv4 = 0; }; }; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "compiled with API >= 7.0.0, loaded library is >= 7.0.0: ipsupport=%u entries_ipv4=%u entries_ipv6=%u", ipsupport, entries_ipv4, entries_ipv6); #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT #else // SUPPORT_IP2LOCATION_DYN #ifdef SUPPORT_IP2LOCATION_IPV6_COMPAT // API < 7.0.0 if (loc->ipversion > 1) { // catch of changed API which reuses ipversion as ipv6databasecount entries_ipv6 = loc->ipversion; ipsupport |= 0x2; } else { entries_ipv4 = loc->databasecount; ipsupport |= 0x1; }; #else // SUPPORT_IP2LOCATION_IPV6_COMPAT // API >= 7.0.0 if (loc->ipv4databasecount > 2) { // IPv4 entries_ipv4 = loc->ipv4databasecount; ipsupport |= 0x1; }; if (loc->ipv6databasecount > 0) { // catch of changed API which reuses ipversion as ipv6databasecount ipsupport |= 0x2; if (loc->ipv6databasecount > 1) { entries_ipv6 = loc->ipv6databasecount; } else if (loc->ipv6databasecount == 1) { // old behavior entries_ipv6 = loc->databasecount; ipsupport &= ~0x1; entries_ipv4 = 0; }; }; #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT #endif // SUPPORT_IP2LOCATION_DYN if (flag_copyright != 0) { snprintf(resultstring, sizeof(resultstring), "IP2L-DB%d %s%s%04d%02d%02d Copyright (c) %04d IP2Location All Rights Reserved IPv4=%u IPv6=%u %s", loc->databasetype, (features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0 ? "IPv6 " : "IPv4 ", ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE) != 0 ? "LITE " : ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE) != 0 ? "SAMPLE " : (internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) != 0 ? "FREE " : "" )), loc->databaseyear + 2000, loc->databasemonth, loc->databaseday, loc->databaseyear + 2000, entries_ipv4, entries_ipv6, (libipv6calc_db_wrapper_IP2Location_db_compatible(type) != 0) ? " INCOMPATIBLE" : "" ); } else { snprintf(resultstring, sizeof(resultstring), "IP2L-DB%d %s%s%04d%02d%02d IPv4=%u IPv6=%u %s", loc->databasetype, (features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0 ? "IPv6 " : "IPv4 ", ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE) != 0 ? "LITE " : ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE) != 0 ? "SAMPLE " : (internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) != 0 ? "FREE " : "" )), loc->databaseyear + 2000, loc->databasemonth, loc->databaseday, entries_ipv4, entries_ipv6, (libipv6calc_db_wrapper_IP2Location_db_compatible(type) != 0) ? " INCOMPATIBLE" : "" ); }; } else { if (flag_copyright != 0) { snprintf(resultstring, sizeof(resultstring), "IP2L-DB%d %s%s%04d%02d%02d Copyright (c) %04d IP2Location All Rights Reserved%s", loc->databasetype, (features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0 ? "IPv6 " : "IPv4 ", ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE) != 0 ? "LITE " : ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE) != 0 ? "SAMPLE " : (internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) != 0 ? "FREE " : "" )), loc->databaseyear + 2000, loc->databasemonth, loc->databaseday, loc->databaseyear + 2000, (libipv6calc_db_wrapper_IP2Location_db_compatible(type) != 0) ? " INCOMPATIBLE" : "" ); } else { snprintf(resultstring, sizeof(resultstring), "IP2L-DB%d %s%s%04d%02d%02d%s", loc->databasetype, (features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0 ? "IPv6 " : "IPv4 ", ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE) != 0 ? "LITE " : ((internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE) != 0 ? "SAMPLE " : (internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) != 0 ? "FREE " : "" )), loc->databaseyear + 2000, loc->databasemonth, loc->databaseday, (libipv6calc_db_wrapper_IP2Location_db_compatible(type) != 0) ? " INCOMPATIBLE" : "" ); }; }; }; return(resultstring); }; /* * wrapper: IP2Location_free_record */ void libipv6calc_db_wrapper_IP2Location_free_record(IP2LocationRecord *record) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s", wrapper_ip2location_info); #ifdef SUPPORT_IP2LOCATION_DYN const char *dl_symbol = "IP2Location_free_record"; char *error; if (dl_IP2Location_handle == NULL) { fprintf(stderr, "dl_IP2Location handle not defined\n"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_free_record == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_free_record) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_free_record = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_IP2Location_free_record = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_free_record == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ (*dl_IP2Location_free_record.func)(record); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: #else IP2Location_free_record(record); #endif return; }; /* * wrapper: IP2Location_get_country_short */ IP2LocationRecord *libipv6calc_db_wrapper_IP2Location_get_country_short(IP2Location *loc, char *ip) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s ip=%s", wrapper_ip2location_info, ip); #ifdef SUPPORT_IP2LOCATION_DYN IP2LocationRecord *result_IP2Location_get_country_short = NULL; const char *dl_symbol = "IP2Location_get_country_short"; char *error; if (dl_IP2Location_handle == NULL) { fprintf(stderr, "dl_IP2Location handle not defined\n"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_get_country_long == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_get_country_short.obj) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_get_country_short = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_IP2Location_get_country_short = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_get_country_long == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_IP2Location_get_country_short = (*dl_IP2Location_get_country_short.func)(loc, ip); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_IP2Location_get_country_short); #else return(IP2Location_get_country_short(loc, ip)); #endif }; /* * wrapper: IP2Location_get_country_long */ IP2LocationRecord *libipv6calc_db_wrapper_IP2Location_get_country_long(IP2Location *loc, char *ip) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s ip=%s", wrapper_ip2location_info, ip); #ifdef SUPPORT_IP2LOCATION_DYN IP2LocationRecord *result_IP2Location_get_country_long = NULL; const char *dl_symbol = "IP2Location_get_country_long"; char *error; if (dl_IP2Location_handle == NULL) { fprintf(stderr, "dl_IP2Location handle not defined\n"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_get_country_long == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_get_country_long.obj) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_get_country_long = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_IP2Location_get_country_long = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_get_country_long == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_IP2Location_get_country_long = (*dl_IP2Location_get_country_long.func)(loc, ip); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result_IP2Location_get_country_long); #else return(IP2Location_get_country_long(loc, ip)); #endif }; /* * wrapper: IP2Location_get_all */ IP2LocationRecord *libipv6calc_db_wrapper_IP2Location_get_all(IP2Location *loc, char *ip) { IP2LocationRecord *result_IP2Location_get_all = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called: %s with ip=%s", wrapper_ip2location_info, ip); if (loc == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "loc==NULL, return NULL"); return(NULL); }; #ifdef SUPPORT_IP2LOCATION_DYN const char *dl_symbol = "IP2Location_get_all"; char *error; if (dl_IP2Location_handle == NULL) { fprintf(stderr, "dl_IP2Location handle not defined\n"); goto END_libipv6calc_db_wrapper; }; if (dl_status_IP2Location_get_all == IPV6CALC_DL_STATUS_UNKNOWN) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Call dlsym: %s", dl_symbol); dlerror(); /* Clear any existing error */ *(void **) (&dl_IP2Location_get_all.obj) = dlsym(dl_IP2Location_handle, dl_symbol); if ((error = dlerror()) != NULL) { dl_status_IP2Location_get_all = IPV6CALC_DL_STATUS_ERROR; fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; dl_status_IP2Location_get_all = IPV6CALC_DL_STATUS_OK; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_get_all == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Previous call of dlsym already successful: %s", dl_symbol); }; dlerror(); /* Clear any existing error */ result_IP2Location_get_all = (*dl_IP2Location_get_all.func)(loc, ip); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: #else result_IP2Location_get_all = IP2Location_get_all(loc, ip); #endif DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished IP2Location_get_all=%p", result_IP2Location_get_all); return(result_IP2Location_get_all); }; /********************************************* * Abstract functions * *******************************************/ /* function query for feature set * ret=-1: unknown * 0 : not matching * 1 : ok */ int libipv6calc_db_wrapper_IP2Location_has_features(uint32_t features) { int result = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called with feature value to test: 0x%08x", features); if ((wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Return with result: %d", result); return(result); }; /* country_code */ char *libipv6calc_db_wrapper_IP2Location_wrapper_country_code_by_addr(char *addr, const int proto) { IP2Location *loc; IP2LocationRecord *record; unsigned int IP2Location_type = 0; char *IP2Location_result_ptr = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { IP2Location_type = ip2location_db_country_v4; if ((ip2location_db_country_sample_v4_lite_autoswitch > 0) && (ip2location_db_country_v4_best[IP2L_COMM].num != IP2Location_type)) { // lite database selected, sample database available (supporting 0.0.0.0-99.255.255.255) if ((addr[1] == '.') || (addr[2] == '.')) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Overwrite IP2Location_type LITE %d with SAMPLE DB %d", IP2Location_type, ip2location_db_country_sample_v4_lite_autoswitch); IP2Location_type = ip2location_db_country_sample_v4_lite_autoswitch; }; }; } else if (proto == 6) { IP2Location_type = ip2location_db_country_v6; if ((ip2location_db_country_sample_v6_lite_autoswitch > 0) && (ip2location_db_country_v6_best[IP2L_COMM].num != IP2Location_type)) { // lite database selected, sample database available (supporting 2A04:0:0:0:0:0:0:0-2A04:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) if (strncmp(addr, "2a04", 4) == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Overwrite IP2Location_type LITE %d with SAMPLE DB %d", IP2Location_type, ip2location_db_country_sample_v6_lite_autoswitch); IP2Location_type = ip2location_db_country_sample_v6_lite_autoswitch; }; }; } else { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Unsupported proto: %d", proto); goto END_libipv6calc_db_wrapper; }; if (IP2Location_type == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "No IP2Location database selected for proto: %d", proto); goto END_libipv6calc_db_wrapper; }; loc = libipv6calc_db_wrapper_IP2Location_open_type(IP2Location_type); if (loc == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Error opening IP2Location by type"); goto END_libipv6calc_db_wrapper; }; #ifdef SUPPORT_IP2LOCATION_DYN // API >= 7.0.0 if (ip2location_ipv6_compat != 0) { if (loc->ipversion > 1) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Openend IP2Location type is not supported by the dynamic loaded library"); goto END_libipv6calc_db_wrapper; }; }; #endif record = libipv6calc_db_wrapper_IP2Location_get_country_short(loc, addr); if (record == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "did not return a record"); goto END_libipv6calc_db_wrapper; }; IP2Location_result_ptr = record->country_short; if (IP2Location_result_ptr == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "did not contain a country_short code"); goto END_libipv6calc_db_wrapper; }; if (strlen(IP2Location_result_ptr) > 2) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "did not return a proper country_short code (length > 2): %s", IP2Location_result_ptr); IP2Location_result_ptr = NULL; goto END_libipv6calc_db_wrapper; }; if ((strcmp(IP2Location_result_ptr, "-") == 0) || (strcmp(IP2Location_result_ptr, "??") == 0)) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "don't know country_short code: %s", IP2Location_result_ptr); IP2Location_result_ptr = NULL; goto END_libipv6calc_db_wrapper; }; IP2LOCATION_DB_USAGE_MAP_TAG(IP2Location_type); END_libipv6calc_db_wrapper: return(IP2Location_result_ptr); }; /* country_name */ char *libipv6calc_db_wrapper_IP2Location_wrapper_country_name_by_addr(char *addr, const int proto) { IP2Location *loc; IP2LocationRecord *record; unsigned int IP2Location_type = 0; char *IP2Location_result_ptr = NULL; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { IP2Location_type = ip2location_db_country_v4; if ((ip2location_db_country_sample_v4_lite_autoswitch > 0) && (ip2location_db_country_v4_best[IP2L_COMM].num != IP2Location_type)) { // lite database selected, sample database available (supporting 0.0.0.0-99.255.255.255) if ((addr[1] == '.') || (addr[2] == '.')) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Overwrite IP2Location_type LITE %d with SAMPLE DB %d", IP2Location_type, ip2location_db_country_sample_v4_lite_autoswitch); IP2Location_type = ip2location_db_country_sample_v4_lite_autoswitch; }; }; } else if (proto == 6) { IP2Location_type = ip2location_db_country_v6; if ((ip2location_db_country_sample_v6_lite_autoswitch > 0) && (ip2location_db_country_v6_best[IP2L_COMM].num != IP2Location_type)) { // lite database selected, sample database available (supporting 2A04:0:0:0:0:0:0:0-2A04:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) if (strncmp(addr, "2a04", 4) == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Overwrite IP2Location_type LITE %d with SAMPLE DB %d", IP2Location_type, ip2location_db_country_sample_v6_lite_autoswitch); IP2Location_type = ip2location_db_country_sample_v6_lite_autoswitch; }; }; } else { return (NULL); }; if (IP2Location_type == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "No IP2Location database selected for proto: %d", proto); goto END_libipv6calc_db_wrapper; }; loc = libipv6calc_db_wrapper_IP2Location_open_type(IP2Location_type); if (loc == NULL) { goto END_libipv6calc_db_wrapper; }; record = libipv6calc_db_wrapper_IP2Location_get_country_long(loc, addr); if (record == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "did not return a record"); goto END_libipv6calc_db_wrapper; }; IP2Location_result_ptr = record->country_long; if (IP2Location_result_ptr == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "did not return a country_long"); goto END_libipv6calc_db_wrapper; }; if (strcmp(IP2Location_result_ptr, "-") == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "don't know country_name: %s", IP2Location_result_ptr); IP2Location_result_ptr = NULL; goto END_libipv6calc_db_wrapper; }; IP2LOCATION_DB_USAGE_MAP_TAG(IP2Location_type); END_libipv6calc_db_wrapper: return(IP2Location_result_ptr); }; /* record: city */ IP2LocationRecord *libipv6calc_db_wrapper_IP2Location_wrapper_record_city_by_addr(char *addr, const int proto) { IP2Location *loc; IP2LocationRecord *record = NULL; int IP2Location_type = 0; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { IP2Location_type = ip2location_db_region_city_v4; if (ip2location_db_region_city_sample_v4_lite_autoswitch > 0) { // lite database selected, sample database available (supporting 2A04:0:0:0:0:0:0:0-2A04:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) if ((addr[1] == '.') || (addr[2] == '.')) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Overwrite IP2Location_type LITE %d with SAMPLE DB %d", IP2Location_type, ip2location_db_region_city_sample_v4_lite_autoswitch); IP2Location_type = ip2location_db_region_city_sample_v4_lite_autoswitch; }; }; } else if (proto == 6) { IP2Location_type = ip2location_db_region_city_v6; if (ip2location_db_region_city_sample_v6_lite_autoswitch > 0) { // lite database selected, sample database available (supporting 2A04:0:0:0:0:0:0:0-2A04:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) if (strncmp(addr, "2a04", 4) == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Overwrite IP2Location_type LITE %d with SAMPLE DB %d", IP2Location_type, ip2location_db_region_city_sample_v6_lite_autoswitch); IP2Location_type = ip2location_db_region_city_sample_v6_lite_autoswitch; }; }; } else { return (NULL); }; if (IP2Location_type == 0) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "No IP2Location database selected for proto: %d", proto); goto END_libipv6calc_db_wrapper; }; loc = libipv6calc_db_wrapper_IP2Location_open_type(IP2Location_type); if (loc == NULL) { goto END_libipv6calc_db_wrapper; }; record = libipv6calc_db_wrapper_IP2Location_get_all(loc, addr); if (record == NULL) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "did not return a record"); goto END_libipv6calc_db_wrapper; }; IP2LOCATION_DB_USAGE_MAP_TAG(IP2Location_type); END_libipv6calc_db_wrapper: return(record); }; #endif /* * major IP2Location library version * * in : (nothing) * out: major IP2Location library version, currently 4, 6, 7, 8 */ int libipv6calc_db_wrapper_IP2Location_library_version_major(void) { int result = 7; // default #ifdef SUPPORT_IP2LOCATION_DYN if (dl_status_IP2Location_api_version_num == IPV6CALC_DL_STATUS_OK) { result = (*dl_IP2Location_api_version_num.func)() / (100 * 100); } else { if (ip2location_all_compat != 0) { result = 4; } else if (ip2location_ipv6_compat != 0) { result = 6; }; }; #else // SUPPORT_IP2LOCATION_DYN #ifdef API_VERSION_MAJOR result = API_VERSION_MAJOR; #else // API_VERSION_MAJOR #ifdef SUPPORT_IP2LOCATION_ALL_COMPAT result = 4; #else // SUPPORT_IP2LOCATION_ALL_COMPAT #ifdef SUPPORT_IP2LOCATION_IPV6_COMPAT result = 6; #endif // SUPPORT_IP2LOCATION_IPV6_COMPAT #endif // SUPPORT_IP2LOCATION_ALL_COMPAT #endif // API_VERSION_MAJOR #endif // SUPPORT_IP2LOCATION_DYN return(result); }; /* * database to API and library compatibility * * in : database type * out: =0:compatible !=0:not compatible */ static int libipv6calc_db_wrapper_IP2Location_db_compatible(const unsigned int type) { int result = 0; int i; for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (type == libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number) { break; }; }; if (i == MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc)) { // not found return(1); }; if (ip2location_ipv6_compat == 0) { if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) != 0) { // blacklist old IPV6-COUNTRY-FREE.BIN in case of API >= 7.0.0 result = 1; }; }; if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].features & IPV6CALC_DB_IP2LOCATION_IPV6) != 0) { if (ip2location_ipv6_compat != 0) { if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE) == 0) { // blacklist all IPv6 DBs, except the old IPV6-COUNTRY-FREE.BIN result = 1; }; }; }; if ((libipv6calc_db_wrapper_IP2Location_db_file_desc[i].internal & IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6) != 0) { if (ip2location_all_compat != 0) { // blacklist DB21-24 in case of API=4.0.2 aka library < 6.0.0 result = 1; }; }; return(result); }; /* * return UsageType description related to the from database returned token * * in : UsageType token * out: UsageType description */ extern const char *libipv6calc_db_wrapper_IP2Location_UsageType_description(char *UsageType) { int i; for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_UsageType); i++) { if (strcmp(UsageType, libipv6calc_db_wrapper_IP2Location_UsageType[i].tokensimple) == 0) { return(libipv6calc_db_wrapper_IP2Location_UsageType[i].token); }; }; return(NULL); }; #endif // SUPPORT_IP2LOCATION /* * function cleanup the IP2Location wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_IP2Location_wrapper_cleanup(void) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Called"); #ifdef SUPPORT_IP2LOCATION int i; for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { if (db_ptr_cache[i] != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Close IP2Location: type=%d desc='%s'", libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description); libipv6calc_db_wrapper_IP2Location_close(db_ptr_cache[i]); }; }; dl_IP2Location_handle = NULL; // disable handle #endif DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_IP2Location, "Finished"); return 0; }; ipv6calc-1.0.0/databases/lib/libipv6calc_db_wrapper_IP2Location.h000066400000000000000000001020061312366535500246430ustar00rootroot00000000000000/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_IP2Location.h * Version : $Id: 2d795d250b536b9189edae6af77559f23f7c9fa4 $ * Copyright : 2013-2016 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper_IP2Location.c */ #include "ipv6calctypes.h" #ifndef _libipv6calc_db_wrapper_IP2Location_h #define _libipv6calc_db_wrapper_IP2Location_h 1 #ifdef SUPPORT_IP2LOCATION #include "IP2Location.h" #endif #define IP2LOCATION_SUPPORT_UNKNOWN 0 #define IP2LOCATION_SUPPORT_COMPAT 1 #define IP2LOCATION_SUPPORT_FULL 2 #define IP2LOCATION_SUPPORT_NOTEXISTS 3 #define IP2LOCATION_IPV6_SUPPORT_UNKNOWN 0 #define IP2LOCATION_IPV6_SUPPORT_COMPAT 1 #define IP2LOCATION_IPV6_SUPPORT_FULL 2 #define IP2LOCATION_IPV6_SUPPORT_NOTEXISTS 3 // database types #define IP2LOCATION_DB_MAX 24 /*** Commercial ***/ #define IP2LOCATION_IPV4_DB1 1 #define IP2LOCATION_IPV4_DB2 2 #define IP2LOCATION_IPV4_DB3 3 #define IP2LOCATION_IPV4_DB4 4 #define IP2LOCATION_IPV4_DB5 5 #define IP2LOCATION_IPV4_DB6 6 #define IP2LOCATION_IPV4_DB7 7 #define IP2LOCATION_IPV4_DB8 8 #define IP2LOCATION_IPV4_DB9 9 #define IP2LOCATION_IPV4_DB10 10 #define IP2LOCATION_IPV4_DB11 11 #define IP2LOCATION_IPV4_DB12 12 #define IP2LOCATION_IPV4_DB13 13 #define IP2LOCATION_IPV4_DB14 14 #define IP2LOCATION_IPV4_DB15 15 #define IP2LOCATION_IPV4_DB16 16 #define IP2LOCATION_IPV4_DB17 17 #define IP2LOCATION_IPV4_DB18 18 #define IP2LOCATION_IPV4_DB19 19 #define IP2LOCATION_IPV4_DB20 20 #define IP2LOCATION_IPV4_DB21 21 #define IP2LOCATION_IPV4_DB22 22 #define IP2LOCATION_IPV4_DB23 23 #define IP2LOCATION_IPV4_DB24 24 #define IP2LOCATION_IPV6_DB1 25 #define IP2LOCATION_IPV6_DB2 26 #define IP2LOCATION_IPV6_DB3 27 #define IP2LOCATION_IPV6_DB4 28 #define IP2LOCATION_IPV6_DB5 29 #define IP2LOCATION_IPV6_DB6 30 #define IP2LOCATION_IPV6_DB7 31 #define IP2LOCATION_IPV6_DB8 32 #define IP2LOCATION_IPV6_DB9 33 #define IP2LOCATION_IPV6_DB10 34 #define IP2LOCATION_IPV6_DB11 35 #define IP2LOCATION_IPV6_DB12 36 #define IP2LOCATION_IPV6_DB13 37 #define IP2LOCATION_IPV6_DB14 38 #define IP2LOCATION_IPV6_DB15 39 #define IP2LOCATION_IPV6_DB16 40 #define IP2LOCATION_IPV6_DB17 41 #define IP2LOCATION_IPV6_DB18 42 #define IP2LOCATION_IPV6_DB19 43 #define IP2LOCATION_IPV6_DB20 44 #define IP2LOCATION_IPV6_DB21 45 #define IP2LOCATION_IPV6_DB22 46 #define IP2LOCATION_IPV6_DB23 47 #define IP2LOCATION_IPV6_DB24 48 /* SAMPLE */ #define IP2LOCATION_IPV4_SAMPLE_DB1 49 #define IP2LOCATION_IPV4_SAMPLE_DB2 50 #define IP2LOCATION_IPV4_SAMPLE_DB3 51 #define IP2LOCATION_IPV4_SAMPLE_DB4 52 #define IP2LOCATION_IPV4_SAMPLE_DB5 53 #define IP2LOCATION_IPV4_SAMPLE_DB6 54 #define IP2LOCATION_IPV4_SAMPLE_DB7 55 #define IP2LOCATION_IPV4_SAMPLE_DB8 56 #define IP2LOCATION_IPV4_SAMPLE_DB9 57 #define IP2LOCATION_IPV4_SAMPLE_DB10 58 #define IP2LOCATION_IPV4_SAMPLE_DB11 59 #define IP2LOCATION_IPV4_SAMPLE_DB12 60 #define IP2LOCATION_IPV4_SAMPLE_DB13 61 #define IP2LOCATION_IPV4_SAMPLE_DB14 62 #define IP2LOCATION_IPV4_SAMPLE_DB15 63 #define IP2LOCATION_IPV4_SAMPLE_DB16 64 #define IP2LOCATION_IPV4_SAMPLE_DB17 65 #define IP2LOCATION_IPV4_SAMPLE_DB18 66 #define IP2LOCATION_IPV4_SAMPLE_DB19 67 #define IP2LOCATION_IPV4_SAMPLE_DB20 68 #define IP2LOCATION_IPV4_SAMPLE_DB21 69 #define IP2LOCATION_IPV4_SAMPLE_DB22 70 #define IP2LOCATION_IPV4_SAMPLE_DB23 71 #define IP2LOCATION_IPV4_SAMPLE_DB24 72 #define IP2LOCATION_IPV6_SAMPLE_DB1 73 #define IP2LOCATION_IPV6_SAMPLE_DB2 74 #define IP2LOCATION_IPV6_SAMPLE_DB3 75 #define IP2LOCATION_IPV6_SAMPLE_DB4 76 #define IP2LOCATION_IPV6_SAMPLE_DB5 77 #define IP2LOCATION_IPV6_SAMPLE_DB6 78 #define IP2LOCATION_IPV6_SAMPLE_DB7 79 #define IP2LOCATION_IPV6_SAMPLE_DB8 80 #define IP2LOCATION_IPV6_SAMPLE_DB9 81 #define IP2LOCATION_IPV6_SAMPLE_DB10 82 #define IP2LOCATION_IPV6_SAMPLE_DB11 83 #define IP2LOCATION_IPV6_SAMPLE_DB12 84 #define IP2LOCATION_IPV6_SAMPLE_DB13 85 #define IP2LOCATION_IPV6_SAMPLE_DB14 86 #define IP2LOCATION_IPV6_SAMPLE_DB15 87 #define IP2LOCATION_IPV6_SAMPLE_DB16 88 #define IP2LOCATION_IPV6_SAMPLE_DB17 89 #define IP2LOCATION_IPV6_SAMPLE_DB18 90 #define IP2LOCATION_IPV6_SAMPLE_DB19 91 #define IP2LOCATION_IPV6_SAMPLE_DB20 92 #define IP2LOCATION_IPV6_SAMPLE_DB21 93 #define IP2LOCATION_IPV6_SAMPLE_DB22 94 #define IP2LOCATION_IPV6_SAMPLE_DB23 95 #define IP2LOCATION_IPV6_SAMPLE_DB24 96 /* LITE */ #define IP2LOCATION_DB_IP_COUNTRY_LITE 100 #define IP2LOCATION_DB_IPV6_COUNTRY_LITE 101 #define IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LITE 102 #define IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LITE 103 #define IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LL_LITE 104 #define IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LL_LITE 105 #define IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LL_ZIP_LITE 106 #define IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LL_ZIP_LITE 107 #define IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LL_ZIP_TZ_LITE 108 #define IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LL_ZIP_TZ_LITE 109 /* FREE (old) */ #define IP2LOCATION_DB_IPV6_COUNTRY_FREE 120 // shortcuts #define IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY (IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_IPV4_TO_COUNTRY | IPV6CALC_DB_IP2LOCATION_IPV4) #define IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY (IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_IPV4_TO_COUNTRY | IPV6CALC_DB_IP2LOCATION_IPV4 | IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CITY) #define IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY (IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_IPV6_TO_COUNTRY | IPV6CALC_DB_IP2LOCATION_IPV6) #define IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY (IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_IPV6_TO_COUNTRY | IPV6CALC_DB_IP2LOCATION_IPV6 | IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CITY) #define IP2LOCATION_DB1 "Country" #define IP2LOCATION_DB2 "Country/ISP" #define IP2LOCATION_DB3 "Country/Region/City" #define IP2LOCATION_DB4 "Country/Region/City/ISP" #define IP2LOCATION_DB5 "Country/Region/City/LongitudeLattitude" #define IP2LOCATION_DB6 "Country/Region/City/LongLatt/ISP" #define IP2LOCATION_DB7 "Co/Re/Ci/ISP/Domain" #define IP2LOCATION_DB8 "Co/Re/Ci/LattLong/ISP/Domain" #define IP2LOCATION_DB9 "Co/Re/Ci/LattLong/ZIP" #define IP2LOCATION_DB10 "Co/Re/Ci/LattLong/ZIP/ISP/Domain" #define IP2LOCATION_DB11 "Co/Re/Ci/LattLong/ZIP/TZ" #define IP2LOCATION_DB12 "Co/Re/Ci/LaLo/ZI/TZ/IS/Domain" #define IP2LOCATION_DB13 "Co/Re/Ci/LaLo/TZ/NetSpeed" #define IP2LOCATION_DB14 "Co/Re/Ci/LaLo/ZI/TZ/ISP/Do/Netspeed" #define IP2LOCATION_DB15 "Co/Re/Ci/LaLo/ZIP/TZ/Area" #define IP2LOCATION_DB16 "Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Net/Area" #define IP2LOCATION_DB17 "Co/Re/Ci/LaLo/TZ/Net/Weather" #define IP2LOCATION_DB18 "Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/Weather" #define IP2LOCATION_DB19 "Co/Re/Ci/LaLo/ISP/Dom/Mobile" #define IP2LOCATION_DB20 "Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo" #define IP2LOCATION_DB21 "Co/Re/Ci/LaLo/ZI/TZ/Area/Elevation" #define IP2LOCATION_DB22 "Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El" #define IP2LOCATION_DB23 "Co/Re/Ci/LaLo/ISP/Dom/Mobile/Usagetype" #define IP2LOCATION_DB24 "Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El/Us" #define IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE 0x00000001 #define IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE 0x00000002 #define IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE 0x00000004 #define IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 0x00000008 /*@unused@*/ static const db_file_desc2 libipv6calc_db_wrapper_IP2Location_db_file_desc[] = { // sequence is important for automagic selection of the best /*****************/ /**** SAMPLES ****/ /*****************/ // SAMPLES IPv4 { IP2LOCATION_IPV4_SAMPLE_DB1, "IP-COUNTRY-SAMPLE.BIN", IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB2, "IP-COUNTRY-ISP-SAMPLE.BIN", IP2LOCATION_DB2, IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB3, "IP-COUNTRY-REGION-CITY-SAMPLE.BIN", IP2LOCATION_DB3, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB4, "IP-COUNTRY-REGION-CITY-ISP-SAMPLE.BIN", IP2LOCATION_DB4, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB5, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-SAMPLE.BIN", IP2LOCATION_DB5, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB6, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-SAMPLE.BIN", IP2LOCATION_DB6, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB7, "IP-COUNTRY-REGION-CITY-ISP-DOMAIN-SAMPLE.BIN", IP2LOCATION_DB7, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB8, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-SAMPLE.BIN", IP2LOCATION_DB8, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB9, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-SAMPLE.BIN", IP2LOCATION_DB9, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB10, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN-SAMPLE.BIN", IP2LOCATION_DB10, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB11, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-SAMPLE.BIN", IP2LOCATION_DB11, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB12, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-SAMPLE.BIN", IP2LOCATION_DB12, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB13, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-SAMPLE.BIN", IP2LOCATION_DB13, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB14, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-SAMPLE.BIN", IP2LOCATION_DB14, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB15, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-SAMPLE.BIN", IP2LOCATION_DB15, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB16, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-SAMPLE.BIN", IP2LOCATION_DB16, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB17, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER-SAMPLE.BIN", IP2LOCATION_DB17, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB18, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-SAMPLE.BIN", IP2LOCATION_DB18, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB19, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-SAMPLE.BIN", IP2LOCATION_DB19, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB20, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-SAMPLE.BIN", IP2LOCATION_DB20, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV4_SAMPLE_DB21, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION-SAMPLE.BIN", IP2LOCATION_DB21, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV4_SAMPLE_DB22, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-SAMPLE.BIN", IP2LOCATION_DB22, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV4_SAMPLE_DB23, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE-SAMPLE.BIN", IP2LOCATION_DB23, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV4_SAMPLE_DB24, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN", IP2LOCATION_DB24, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, // SAMPLES IPv6 { IP2LOCATION_IPV6_SAMPLE_DB1, "IPV6-COUNTRY.SAMPLE.BIN", IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB2, "IPV6-COUNTRY-ISP.SAMPLE.BIN", IP2LOCATION_DB2, IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB3, "IPV6-COUNTRY-REGION-CITY.SAMPLE.BIN", IP2LOCATION_DB3, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB4, "IPV6-COUNTRY-REGION-CITY-ISP.SAMPLE.BIN", IP2LOCATION_DB4, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB5, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE.SAMPLE.BIN", IP2LOCATION_DB5, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB6, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP.SAMPLE.BIN", IP2LOCATION_DB6, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB7, "IPV6-COUNTRY-REGION-CITY-ISP-DOMAIN.SAMPLE.BIN", IP2LOCATION_DB7, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB8, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN.SAMPLE.BIN", IP2LOCATION_DB8, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB9, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE.SAMPLE.BIN", IP2LOCATION_DB9, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB10, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN.SAMPLE.BIN", IP2LOCATION_DB10, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB11, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.SAMPLE.BIN", IP2LOCATION_DB11, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB12, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN.SAMPLE.BIN", IP2LOCATION_DB12, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB13, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED.SAMPLE.BIN", IP2LOCATION_DB13, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB14, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED.SAMPLE.BIN", IP2LOCATION_DB14, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB15, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE.SAMPLE.BIN", IP2LOCATION_DB15, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB16, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE.SAMPLE.BIN", IP2LOCATION_DB16, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB17, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER.SAMPLE.BIN", IP2LOCATION_DB17, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB18, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER.SAMPLE.BIN", IP2LOCATION_DB18, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB19, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE.SAMPLE.BIN", IP2LOCATION_DB19, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB20, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE.SAMPLE.BIN", IP2LOCATION_DB20, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE }, { IP2LOCATION_IPV6_SAMPLE_DB21, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION.SAMPLE.BIN", IP2LOCATION_DB21, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV6_SAMPLE_DB22, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION.SAMPLE.BIN", IP2LOCATION_DB22, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV6_SAMPLE_DB23, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE.SAMPLE.BIN", IP2LOCATION_DB23, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV6_SAMPLE_DB24, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE.SAMPLE.BIN", IP2LOCATION_DB24, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_SAMPLE | IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, /**************/ /**** LITE ****/ /**************/ // LITE IPv4 { IP2LOCATION_DB_IP_COUNTRY_LITE, "IP2LOCATION-LITE-DB1.BIN" , IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LITE, "IP2LOCATION-LITE-DB3.BIN", IP2LOCATION_DB3, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LL_LITE, "IP2LOCATION-LITE-DB5.BIN", IP2LOCATION_DB5, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LL_ZIP_LITE, "IP2LOCATION-LITE-DB9.BIN", IP2LOCATION_DB9, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IP_COUNTRY_REG_CIT_LL_ZIP_TZ_LITE, "IP2LOCATION-LITE-DB11.BIN", IP2LOCATION_DB11, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, // LITE IPv6 (having also IPv4 included) { IP2LOCATION_DB_IPV6_COUNTRY_LITE, "IP2LOCATION-LITE-DB1.IPV6.BIN", IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LITE, "IP2LOCATION-LITE-DB3.IPV6.BIN", IP2LOCATION_DB2, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LL_LITE, "IP2LOCATION-LITE-DB5.IPV6.BIN", IP2LOCATION_DB5, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LL_ZIP_LITE, "IP2LOCATION-LITE-DB9.IPV6.BIN", IP2LOCATION_DB9, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, { IP2LOCATION_DB_IPV6_COUNTRY_REG_CIT_LL_ZIP_TZ_LITE, "IP2LOCATION-LITE-DB11.IPV6.BIN", IP2LOCATION_DB11, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LITE }, /**************/ /* commercial */ /**************/ // Commercial IPv4 { IP2LOCATION_IPV4_DB1, "IP-COUNTRY.BIN", IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, 0 }, { IP2LOCATION_IPV4_DB2, "IP-COUNTRY-ISP.BIN", IP2LOCATION_DB2, IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, 0 }, { IP2LOCATION_IPV4_DB3, "IP-COUNTRY-REGION-CITY.BIN", IP2LOCATION_DB3, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB4, "IP-COUNTRY-REGION-CITY-ISP.BIN", IP2LOCATION_DB4, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB5, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE.BIN", IP2LOCATION_DB5, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB6, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP.BIN", IP2LOCATION_DB6, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB7, "IP-COUNTRY-REGION-CITY-ISP-DOMAIN.BIN", IP2LOCATION_DB7, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB8, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN.BIN", IP2LOCATION_DB8, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB9, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE.BIN", IP2LOCATION_DB9, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB10, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN.BIN", IP2LOCATION_DB10, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB11, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.BIN", IP2LOCATION_DB11, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB12, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN.BIN", IP2LOCATION_DB12, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB13, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED.BIN", IP2LOCATION_DB13, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB14, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED.BIN", IP2LOCATION_DB14, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB15, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE.BIN", IP2LOCATION_DB15, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB16, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE.BIN", IP2LOCATION_DB16, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB17, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER.BIN", IP2LOCATION_DB17, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB18, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER.BIN", IP2LOCATION_DB18, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB19, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE.BIN", IP2LOCATION_DB19, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB20, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE.BIN", IP2LOCATION_DB20, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV4_DB21, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION.BIN", IP2LOCATION_DB21, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV4_DB22, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION.BIN", IP2LOCATION_DB22, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV4_DB23, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE.BIN", IP2LOCATION_DB23, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV4_DB24, "IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE.BIN", IP2LOCATION_DB24, IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, // Commercial IPv6 (having also IPv4 included) { IP2LOCATION_IPV6_DB1, "IPV6-COUNTRY.BIN", IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, 0 }, { IP2LOCATION_IPV6_DB2, "IPV6-COUNTRY-ISP.BIN", IP2LOCATION_DB2, IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_COUNTRY, 0 }, { IP2LOCATION_IPV6_DB3, "IPV6-COUNTRY-REGION-CITY.BIN", IP2LOCATION_DB3, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB4, "IPV6-COUNTRY-REGION-CITY-ISP.BIN", IP2LOCATION_DB4, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB5, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE.BIN", IP2LOCATION_DB5, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB6, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP.BIN", IP2LOCATION_DB6, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB7, "IPV6-COUNTRY-REGION-CITY-ISP-DOMAIN.BIN", IP2LOCATION_DB7, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB8, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN.BIN", IP2LOCATION_DB8, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB9, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE.BIN", IP2LOCATION_DB9, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB10, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN.BIN", IP2LOCATION_DB10, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB11, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.BIN", IP2LOCATION_DB11, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB12, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN.BIN", IP2LOCATION_DB12, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB13, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED.BIN", IP2LOCATION_DB13, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB14, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED.BIN", IP2LOCATION_DB14, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB15, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE.BIN", IP2LOCATION_DB15, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB16, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE.BIN", IP2LOCATION_DB16, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB17, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER.BIN", IP2LOCATION_DB17, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB18, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER.BIN", IP2LOCATION_DB18, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB19, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE.BIN", IP2LOCATION_DB19, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB20, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE.BIN", IP2LOCATION_DB20, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, 0 }, { IP2LOCATION_IPV6_DB21, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION.BIN", IP2LOCATION_DB21, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV6_DB22, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION.BIN", IP2LOCATION_DB22, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV6_DB23, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE.BIN", IP2LOCATION_DB23, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, { IP2LOCATION_IPV6_DB24, "IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE.BIN", IP2LOCATION_DB24, IPV6CALC_DB_SC_IP2LOCATION_IPV6_CITY | IPV6CALC_DB_SC_IP2LOCATION_IPV4_CITY, IPV6CALC_DB_IP2LOCATION_INTERNAL_LIB_VERSION_6 }, /*****************/ /**** SPECIAL ****/ /*****************/ { IP2LOCATION_DB_IPV6_COUNTRY_FREE, "IPV6-COUNTRY-FREE.BIN", IP2LOCATION_DB1, IPV6CALC_DB_SC_IP2LOCATION_IPV6_COUNTRY, IPV6CALC_DB_IP2LOCATION_INTERNAL_FREE }, }; // features extern uint32_t wrapper_features_IP2Location; /* text representations */ /*@unused@*/ static const s_type libipv6calc_db_wrapper_IP2Location_support[] = { { IP2LOCATION_SUPPORT_UNKNOWN, "unknown" }, { IP2LOCATION_SUPPORT_COMPAT, "compat" }, { IP2LOCATION_SUPPORT_FULL, "full" }, { IP2LOCATION_SUPPORT_NOTEXISTS, "not-exists" }, }; /* text representations */ /*@unused@*/ static const s_type libipv6calc_db_wrapper_IP2Location_IPv6_support[] = { { IP2LOCATION_IPV6_SUPPORT_UNKNOWN, "unknown" }, { IP2LOCATION_IPV6_SUPPORT_COMPAT, "compat" }, { IP2LOCATION_IPV6_SUPPORT_FULL, "full" }, { IP2LOCATION_IPV6_SUPPORT_NOTEXISTS, "not-exists" }, }; /* IP2Location Usage Type explanation see also: http://www.ip2location.com/databases/db24-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile-elevation-usagetype */ static const s_type2 libipv6calc_db_wrapper_IP2Location_UsageType[] = { { 0, "Commercial" , "COM" }, { 1, "Organization" , "ORG" }, { 2, "Government" , "GOV" }, { 3, "Military" , "MIL" }, { 4, "University/College/School" , "EDU" }, { 5, "Library" , "LIB" }, { 6, "Content Delivery Network" , "CDN" }, { 7, "Fixed Line ISP" , "ISP" }, { 8, "Mobile ISP" , "MOB" }, { 9, "Data Center/Web Hosting/Transit", "DCH" }, { 10, "Search Engine Spider" , "SES" }, { 11, "Reserved" , "RSV" } }; #endif extern int libipv6calc_db_wrapper_IP2Location_wrapper_init(void); extern int libipv6calc_db_wrapper_IP2Location_wrapper_cleanup(void); extern const char *libipv6calc_db_wrapper_IP2Location_wrapper_asnum_by_addr (const char *addr, const int proto); extern void libipv6calc_db_wrapper_IP2Location_wrapper_info(char* string, const size_t size); extern void libipv6calc_db_wrapper_IP2Location_wrapper_print_db_info(const int level_verbose, const char *prefix_string); extern char *libipv6calc_db_wrapper_IP2Location_wrapper_db_info_used(void); extern char *libipv6calc_db_wrapper_IP2Location_wrapper_country_code_by_addr(char *addr, const int proto); extern char *libipv6calc_db_wrapper_IP2Location_wrapper_country_name_by_addr(char *addr, const int proto); extern int libipv6calc_db_wrapper_IP2Location_has_features(uint32_t features); extern int libipv6calc_db_wrapper_IP2Location_library_version_major(void); #ifdef SUPPORT_IP2LOCATION extern char ip2location_lib_file[NI_MAXHOST]; extern char ip2location_db_dir[NI_MAXHOST]; extern int libipv6calc_db_wrapper_IP2Location_db_avail(const unsigned int type); extern char *libipv6calc_db_wrapper_IP2Location_lib_version(void); extern IP2Location *libipv6calc_db_wrapper_IP2Location_open(char *db); extern IP2Location *libipv6calc_db_wrapper_IP2Location_open_type(const unsigned int type); extern int libipv6calc_db_wrapper_IP2Location_close(IP2Location *loc); extern IP2LocationRecord *libipv6calc_db_wrapper_IP2Location_get_all(IP2Location *loc, char *ip); void libipv6calc_db_wrapper_IP2Location_free_record(IP2LocationRecord *record); extern const char *libipv6calc_db_wrapper_IP2Location_dbdescription(const unsigned int type); extern char *libipv6calc_db_wrapper_IP2Location_database_info(IP2Location *loc, const int level_verbose, const int entry, const int flag_copyright); extern IP2LocationRecord *libipv6calc_db_wrapper_IP2Location_wrapper_record_city_by_addr(char *addr, const int proto); extern const char *libipv6calc_db_wrapper_IP2Location_UsageType_description(char *UsageType); extern int ip2location_db_lite_to_sample_autoswitch_max_delta_months; extern int ip2location_db_comm_to_lite_switch_min_delta_months; extern int ip2location_db_only_type; extern int ip2location_db_allow_softlinks; #endif ipv6calc-1.0.0/databases/registries/000077500000000000000000000000001312366535500173375ustar00rootroot00000000000000ipv6calc-1.0.0/databases/registries/Makefile000066400000000000000000000027341312366535500210050ustar00rootroot00000000000000# Project : ipv6calc/databases/registries # File : Makefile # Version : $Id: ee1416158e6869fb2131b77c205c5a09dfb64b9f $ # Copyright : 2002-2015 by Peter Bieringer # replaces parts of ../ipv4-assignment/Makefile # replaces parts of ../ipv6-assignment/Makefile # # Information: # Makefile for updating assignment data of registries all: ${MAKE} update install: echo "Nothing to do" download: echo "Download new version of files" ../../tools/ipv6calc-update-registries.sh update-only: echo "Create database files for IPv4" cd ../ipv4-assignment && ${MAKE} update echo "Create database files for IPv6" cd ../ipv6-assignment && ${MAKE} update echo "Create database files for ASN to Registry" cd ../as-assignment && ${MAKE} update echo "Create database files for CountryCode to Registry" cd ../cc-assignment && ${MAKE} update update: ${MAKE} download ${MAKE} update-only distclean: echo "Delete data files" if [ -d iana ]; then \ echo "Delete datafiles: iana"; \ rm -f iana/ipv6-unicast-address-assignments.xml iana/ipv4-address-space.xml iana/as-numbers.txt; \ fi if [ -d lisp ]; then \ echo "Delete datafiles: lisp"; \ rm -f lisp/site-db; \ fi for d in ripencc apnic arin lacnic afrinic; do \ if [ -d $${d} ]; then \ echo "Delete datafiles: $${d}"; \ rm -f $${d}/delegated-$${d}-*; \ fi; \ done autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-1.0.0/databases/registries/README000066400000000000000000000016711312366535500202240ustar00rootroot00000000000000$Id: 83c3a34c59fc42148bbfef4c667333ffd1bf393d $ IPv4/IPv6 assignment databases: http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xml ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest http://ftp.apnic.net/stats/apnic/delegated-apnic-latest ftp://lacnic.net/pub/stats/lacnic/delegated-lacnic-latest ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest LISP http://www.lisp4.net/lisp-site/site-db AS databases: https://www.iana.org/assignments/as-numbers/as-numbers.txt Because of unknown license issues, the database files aren't included in source tarball (cleanup by "make distclean"), but will be retrieved on "make update". See e.g.: ftp://ftp.apnic.net/apnic/stats/apnic/README.TXT Use "make update" to refresh data files ipv6calc-1.0.0/databases/tools/000077500000000000000000000000001312366535500163175ustar00rootroot00000000000000ipv6calc-1.0.0/databases/tools/create_ieee_headerfile.pl000077500000000000000000000127511312366535500232670ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc # File : create_ieee_headerfile.pl # Version : $Id: create_ieee_headerfile.pl,v 1.6 2015/09/05 06:25:03 ds6peter Exp $ # Copyright : 2002-2015 by Peter Bieringer # # Creates a header file out of IEEE files # # Virtual Machine prefixes from: # http://www.techrepublic.com/blog/networking/mac-address-scorecard-for-common-virtual-machine-platforms/538 use strict; use File::stat; use POSIX qw(strftime); use Getopt::Std; my $INFILE; my $OUTFILE; my $TYPE; my %opts; getopts ("di:o:t:", \%opts); if (! defined $opts{'i'}) { print "ERROR : missing input file (option -i)\n"; exit 1 }; $INFILE = $opts{'i'}; if (! defined $opts{'o'}) { print "ERROR : missing output file (option -o)\n"; exit 1 } $OUTFILE = $opts{'o'}; if (! defined $opts{'t'}) { print "ERROR : missing type (option -t)\n"; exit 1 }; $TYPE = $opts{'t'}; my $debug = $opts{'d'}; # set options according to type if ($TYPE eq "oui") { } elsif ($TYPE eq "oui36") { } elsif ($TYPE eq "iab") { } else { print "ERROR : unsupported type: " . $TYPE . "\n"; exit 1; }; my $flag_qemu = 0; print "Create file " . $OUTFILE . " from " . $INFILE . " of type " . $TYPE . "\n"; open(IN, "<$INFILE") || die "Cannot open infile: $INFILE"; open(OUT, ">$OUTFILE") || die "Cannot open outfile: $OUTFILE"; # Header my $now_string = localtime; print OUT qq|/* * Project : ipv6calc * File : $OUTFILE |; print OUT " * Version : \$Id"; print OUT ":\$\n"; print OUT qq| * Generated : $now_string * Data copyright: IEEE * * Information: * Additional header file for libipv6calc_db_wrapper_BuiltIn.c */ |; # print creation date my $sb = stat($INFILE); print OUT "\/\*\@unused\@\*\/ static const char* libieee_" . $TYPE . "_status __attribute__ ((__unused__)) = \"" . uc($TYPE) . "/" . strftime("%Y%m%d", localtime($sb->mtime)) . "\";\n"; # Structure print OUT qq| static const s_ieee_$TYPE libieee_${TYPE}[] = { |; # Data my %major_list; my $oui_major; my $oui_owner; my $oui_owner_short; my $oui_minor_begin; my $oui_minor_end; my $state = 0; my $i = 0; while () { my $line = $_; chomp $line; print "DEBUG : parse line: " . $line . "\n" if (defined $debug); # kill " $line =~ s/"//g; if ($line =~ /\(hex\)/ ) { print "DEBUG : found major entry line: " . $line . "\n" if (defined $debug); if ($state != 0) { die "Major problem during parsing (out of state)"; }; $i++; print STDERR $i . "\r"; # kill spaces $line =~ s/[ \t]+/ /g; # kill leading spaces $line =~ s/^ *//g; # kill trailing spaces $line =~ s/ *$//g; # kill \r $line =~ s/\r//g; #print $line . "\n"; my ($t1, $t2, $t3) = split / /, $line, 3; my ($a, $b, $c) = split /-/, $t1; # shorten OUI string my $oui = uc($t3); # replace '(' ')' '&' $oui =~ s/[\(\)\&\',]/ /ig; # remove unimportant information $oui =~ s/\bINC[\.]*\b//ig; $oui =~ s/\bLTD[\.]*\b//ig; $oui =~ s/\bLIMITED\b//ig; $oui =~ s/\bCO[\.]*\b//ig; $oui =~ s/\bCORP[\.]*\b//ig; $oui =~ s/\bCOMP[\.]\b//ig; $oui =~ s/\bGMBH\b//ig; $oui =~ s/\bCORPORATION\b//ig; $oui =~ s/\bS[\.]*A[\.]*\b//ig; $oui =~ s/\bAG\b/ELECTRONIC/ig; $oui =~ s/\bKG\b//ig; $oui =~ s/\bBV\b//ig; # Replace some text $oui =~ s/\b3 Com\b/3COM/ig; $oui =~ s/\b3Com Europe\b/3COM/ig; $oui =~ s/\bCOMMUNICATIONS\b/COMMUNICATION/ig; $oui =~ s/\bCORPOTATION\b/CORPORATION/ig; $oui =~ s/\bINTERNAIONAL\b/INTERNATIONAL/ig; # remove some unneeded text $oui =~ s/\bINTERNATIONAL\b//ig; $oui =~ s/\bTECHNOLOGY\b//ig; $oui =~ s/\bCOMPUTER\b//ig; $oui =~ s/\bSYSTEMS\b//ig; $oui =~ s/\bENTERPRISE\b//ig; $oui =~ s/\bCORPORATION\b//ig; $oui =~ s/\bELECTRONIC\b//ig; $oui =~ s/\bHF1-06\b//ig; # remove ',' '.' $oui =~ s/[,\.;]/ /ig; # remove leading and trailing spaces $oui =~ s/^\s+//ig; $oui =~ s/\s+$//ig; # convert spaces to '-' $oui =~ s/\s+/-/ig; # remove '"' $oui =~ s/"//ig; $t3 =~ s/"//ig; # kill leading spaces $t3 =~ s/^ *//g; # kill trailing spaces $t3 =~ s/ *$//g; # Some final cleanup $oui =~ s/-INT-L//ig; $oui =~ s/-B-V//ig; # remove trailling '-' $oui =~ s/-+$//ig; # translate umlauts $oui =~ s/Ä/AE/g; $oui =~ s/Ö/OE/g; $oui =~ s/Ü/UE/g; $oui =~ s/ä/AE/g; $oui =~ s/ö/OE/g; $oui =~ s/ü/UE/g; $oui =~ s/ß/SS/g; #print $oui . "\n"; $oui_major = "0x" . $a . $b . $c; $oui_owner = $t3; $oui_owner_short = $oui; if (! defined $major_list{$oui_major}) { $major_list{$oui_major} = 1; }; $state = 1; print "DEBUG : found entry: " . $oui_major . "\n" if (defined $debug); }; if ($line =~ /\(base 16\)/) { print "DEBUG : found minor entry line: " . $line . "\n" if (defined $debug); if ($state != 1) { die "Major problem during parsing (out of state)"; }; $i++; print STDERR $i . "\r"; # kill spaces $line =~ s/[ \t]+/ /g; # kill leading spaces $line =~ s/^ *//g; # kill trailing spaces $line =~ s/ *$//g; $line =~ /^([0-9A-Fa-f]+)-([0-9A-Fa-f]+) /; if (! defined $1 || ! defined $2) { die "Major problem during parsing (no begin or end)"; }; $oui_minor_begin = "0x" . $1; $oui_minor_end = "0x" . $2; $state = 2; }; if ($state == 2) { print OUT "\t{ " . $oui_major . ", " . $oui_minor_begin . ", " . $oui_minor_end . ", \"" . $oui_owner . "\", \"" . $oui_owner_short . "\" },\n"; $state = 0; }; }; print OUT qq| }; |; print "List of major OUIs\n"; for my $key (sort keys %major_list) { print $key . "\n"; }; print "Finished\n"; ipv6calc-1.0.0/databases/tools/ipv6calc-db-info.pl000077500000000000000000000036631312366535500217120ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc/databases/tools # File : ipv6calc-db-info.pl # Version : $Id: df2e4fb3a94733c99c77958e80ec7c79d0eb6151 $ # Copyright : 2017-2017 by Peter Bieringer # License : GNU GPL v2 # # Information: # Perl program which retrieves information from an ipv6calc database use strict; use warnings; use IPC::Open2; use Getopt::Std; use BerkeleyDB; use POSIX qw(strftime); my $progname = $0; my $debug = 0; sub help { print qq| Usage: $progname -s -s database file -h this online help |; exit 0; }; # parse options our ($opt_h, $opt_s); getopts('s:h') || help(); if (defined $opt_h) { help(); }; if (! defined $opt_s) { print "WARN : nothing to do (no database file given -s ...)\n"; exit 1; }; ## locations my $file_h; my $file = $opt_s; print "INFO : open db file: $file\n"; ## SubDB: info my %db_h; my @db_a; my $subdb; my $db_type; $subdb = "info"; $db_type = 'BerkeleyDB::Btree'; tie %db_h, $db_type, -Filename => $file, -Subname => $subdb || die "Cannot open file $file: $! $BerkeleyDB::Error\n"; for my $key (sort keys %db_h) { print "INFO : SubDB=$subdb key=$key value=" . $db_h{$key} . "\n"; }; untie %db_h; $subdb = "data"; $db_type = 'BerkeleyDB::Recno'; tie @db_a, $db_type, -Filename => $file, -Subname => $subdb || die "Cannot open file $file: $! $BerkeleyDB::Error\n"; print "INFO : SubDB=$subdb elements=" . scalar(@db_a) . "\n"; untie @db_a; $subdb = "data-iana"; $db_type = 'BerkeleyDB::Recno'; tie @db_a, $db_type, -Filename => $file, -Subname => $subdb || die "Cannot open file $file: $! $BerkeleyDB::Error\n"; print "INFO : SubDB=$subdb elements=" . scalar(@db_a) . "\n"; untie @db_a; $subdb = "data-info"; $db_type = 'BerkeleyDB::Recno'; tie @db_a, $db_type, -Filename => $file, -Subname => $subdb || die "Cannot open file $file: $! $BerkeleyDB::Error\n"; print "INFO : SubDB=$subdb elements=" . scalar(@db_a) . "\n"; untie @db_a; ipv6calc-1.0.0/databases/tools/test_db_lookup.sh000077500000000000000000000132401312366535500216730ustar00rootroot00000000000000#!/bin/bash # # Project : ipv6calc # File : test_db_lookup.sh # Version : $Id: 75a27655a3d46c34182bba32787db59497e4bf7e $ # Copyright : 2014-2014 by Peter Bieringer # # Test raw database entries against ipv6calc output (to check, whether BuiltIn databases are correctly aggregated) # # Execution only required after lookup code changes renice -n 19 -p $$ ionice -c idle -p $$ ipv6calc="../../ipv6calc/ipv6calc" test_ipv4_registry() { for registry in arin ripencc apnic afrinic lacnic; do case $registry in arin) registry_file="delegated-$registry-extended-latest" ;; *) registry_file="delegated-$registry-latest" ;; esac registry_file="../registries/$registry/$registry_file" if [ ! -f "$registry_file" ]; then echo "WARN : no registry database file: $registry_file (=> skip test)" continue fi num="`cat "$registry_file" | awk -F'|' '{ if (($3 == "ipv4") && ($2 != "*")) print $4; }' | wc -l`" echo "INFO : test registry: $registry ($registry_file) entries=$num" ipv6calc_output_expected="`echo "IPV4_REGISTRY=$registry" | tr a-z A-Z`" echo "DEBUG : expected output: $ipv6calc_output_expected" counter=0 interval=$[ $num / 100 + 1 ] if [ $interval -le 1 ]; then interval=$[ $num / 10 + 1 ] fi trigger=$interval cat "$registry_file" | awk -F'|' '{ if (($3 == "ipv4") && ($2 != "*")) print $4 " " $5; }' | while read ipv4 amount; do counter=$[ $counter + 1 ] last=$[ amount - 1 ] last_0=$[ last / 16777216 ] last=$[ last - $last_0 * 16777216 ] last_1=$[ last / 65536 ] last=$[ last - $last_1 * 65536 ] last_2=$[ last / 256 ] last_3=$[ last - $last_2 * 256 ] #echo "DEBUG : amount to add: $last_0 $last_1 $last_2 $last_3" ipv6_0="`echo "$ipv4" | awk -F. '{ print $1 }'`" ipv6_1="`echo "$ipv4" | awk -F. '{ print $2 }'`" ipv6_2="`echo "$ipv4" | awk -F. '{ print $3 }'`" ipv6_3="`echo "$ipv4" | awk -F. '{ print $4 }'`" # add ipv4 + amount - 1 to get last IPv4 address result_3=$[ $last_3 + ipv6_3 ] if [ $result_3 -gt 255 ]; then ipv6_2=$[ $ipv6_2 + 1 ] result_3=$[ $result_3 - 256 ] fi result_2=$[ $last_2 + ipv6_2 ] if [ $result_2 -gt 255 ]; then ipv6_1=$[ $ipv6_1 + 1 ] result_2=$[ $result_2 - 256 ] fi result_1=$[ $last_1 + ipv6_1 ] if [ $result_1 -gt 255 ]; then ipv6_0=$[ $ipv6_0 + 1 ] result_1=$[ $result_1 - 256 ] fi result_0=$[ $last_0 + ipv6_0 ] if [ $result_0 -gt 255 ]; then echo "ERROR : add engine overflow!" exit 1 fi ipv4_last="$result_0.$result_1.$result_2.$result_3" #echo "DEBUG : test registry=$registry ipv4=$ipv4 amount=$amount (ipv4_last=$ipv4_last) counter=$counter" for ip in $ipv4 $ipv4_last; do ipv6calc_output="`$ipv6calc -q -m -i $ip | grep "^IPV4_REGISTRY="`" if [ -z "$ipv6calc_output" ]; then echo "ERROR : ipv6calc output empty, no IPV4_REGISTRY line (registry=$registry ipv4=$ipv4)" exit 1 fi if [ "$ipv6calc_output" != "$ipv6calc_output_expected" ]; then echo "ERROR : output >$ipv6calc_output< not matching expected >$ipv6calc_output_expected< ($ip)" exit 1 fi done if [ $counter -eq $trigger ]; then percent=$[ $counter * 100 / $num ] echo "INFO : registry=$registry already tested: $counter/$num $percent% ($ipv4 - $ipv4_last)" trigger=$[ $trigger + $interval ] fi done || return 1 done || return 1 } test_asn_registry() { for registry in arin ripencc apnic afrinic lacnic; do case $registry in arin) registry_file="delegated-$registry-extended-latest" ;; *) registry_file="delegated-$registry-latest" ;; esac registry_file="../registries/$registry/$registry_file" if [ ! -f "$registry_file" ]; then echo "WARN : no registry database file: $registry_file (=> skip test)" continue fi num="`cat "$registry_file" | awk -F'|' '{ if (($3 == "asn") && ($2 != "*")) print $4; }' | wc -l`" echo "INFO : test registry: $registry ($registry_file) entries=$num" ipv6calc_output_expected="`echo "AS_NUM_REGISTRY=$registry" | tr a-z A-Z`" echo "DEBUG : expected output: $ipv6calc_output_expected" counter=0 interval=$[ $num / 100 + 1 ] if [ $interval -le 1 ]; then interval=$[ $num / 10 + 1 ] fi trigger=$interval cat "$registry_file" | awk -F'|' '{ if (($3 == "asn") && ($2 != "*")) print $4; }' | while read asn; do counter=$[ $counter + 1 ] #echo "DEBUG : test registry=$registry asn=$asn counter=$counter" ipv6calc_output="`$ipv6calc -q -m -I asn -i $asn | grep "^AS_NUM_REGISTRY="`" if [ -z "$ipv6calc_output" ]; then echo "ERROR : ipv6calc output empty, no AS_NUM_REGISTRY line (registry=$registry asn=$asn)" exit 1 fi if [ "$ipv6calc_output" != "$ipv6calc_output_expected" ]; then echo "ERROR : output >$ipv6calc_output< not matching expected >$ipv6calc_output_expected< ($asn)" #exit 1 fi if [ $counter -eq $trigger ]; then percent=$[ $counter * 100 / $num ] #echo "INFO : registry=$registry already tested: $counter/$num $percent% ($asn)" trigger=$[ $trigger + $interval ] fi done || return 1 done || return 1 } help() { echo "-a : test_asn_registry" echo "-4 : test_ipv4_registry" } if [ -z "$1" ]; then help exit 0 fi while getopts ":a4" opt; do case $opt in a) test_asn=1 ;; 4) test_ipv4=1 ;; \?|h) echo "Invalid option: -$OPTARG" >&2 help exit 0 ;; esac done shift $[ $OPTIND - 1 ] if [ "$test_asn" = "1" ]; then test_asn_registry || exit 1 fi if [ "$test_ipv4" = "1" ]; then test_ipv4_registry || exit 1 fi echo "INFO : all defined database tests successful" ipv6calc-1.0.0/doc/000077500000000000000000000000001312366535500137755ustar00rootroot00000000000000ipv6calc-1.0.0/doc/generate.sh000077500000000000000000000023641312366535500161330ustar00rootroot00000000000000#!/bin/sh # $Id: 19718dd1c7adc7391f458b78a0cd8d3894390420 $ # Requires: opensp #export SP_ENCODING=UTF-8 export SP_CHARSET_FIXED=yes if [ -z "$1" ]; then file_sgml="ipv6calc.sgml" else file_sgml="$1" fi echo "Used SGML file: $file_sgml" file_base="`basename $file_sgml .sgml`" file_html="${file_base}.html" file_dsl="./ldp.dsl" if [ ! -f "$file_dsl" ]; then echo "ERR: Missing DSL file: $file_dsl" exit 1 fi if [ ! -f $file_sgml ]; then echo "ERR: Missing SGML file, perhaps export DocBook of LyX won't work" exit 1 fi validate_sgml() { echo "INF: Validate SGML code '$file_sgml'" set -x onsgmls -s $file_sgml local result=$? set +x if [ $result -gt 0 ]; then echo "ERR: Validation results in errors!" return 1 else echo "INF: Validation was successfully" fi } create_html_singlepage() { echo "INF: Create HTML singlepage '$file_html'" set -x jade -t sgml -i html -V nochunks -d "${file_dsl}#html" $file_sgml >$file_html local retval=$? set +x if [ $retval -eq 0 ]; then if head -1 $file_html | grep -q DOCTYPE; then echo "INF: Create HTML singlepage - done" return 0 fi fi echo "ERR: Create HTML singlepage - an error occurs!" return $retval } ### Main validate_sgml || exit 1 create_html_singlepage || exit 1 ipv6calc-1.0.0/doc/ipv6calc.html000066400000000000000000003225371312366535500164060ustar00rootroot00000000000000 The ipv6calc Homepage

The ipv6calc Homepage

Peter Bieringer

pb at bieringer dot de

Revision History
Revision 7.02017-06-25Revised by: PB

1. General

ipv6calc is a small utility written in programming language C to manipulate (not only) IPv6 addresses and is able to do other tricky things. Intentions were convering a given IPv6 address into compressed format, convering a given IPv6 address into the same format like shown in /proc/net/if_inet6 and (because it was not difficulty) migrating the Perl program ip6_int into. Now only one utiltity is needed to do a lot.

This utility was also used in the past to extend features on network-functions-ipv6 library, used by initscripts-ipv6.

Note: this tool got also its freecode.com (former freshmeat, now also EOL) / ipv6calc page (but this is not maintained by the author)


1.1. Latest version

Latest version since last update of this page is 1.0.0


1.2. Included programs

  • “ipv6calc”: the main utility

  • “ipv6calcweb”: CGI wrapper for ipv6calc's address information output

  • “ipv6logconv”: log converter (IPv4/IPv6)

  • “ipv6loganon”: log anonymizer (IPv4/IPv6)

  • “ipv6logstats”: log statistic generator (IPv4/IPv6)

  • “mod_ipv6calc”: Apache module


1.3. Included databases

If not disabled during compiling of the tool, following databases are statically included, since version 0.95.0 internally mentioned as “BuiltIn”:

  • IEEE IAB, OUI, OUI-36 databases (for decoding vendor part of MAC/EUI-48/EUI-64)

  • IPv4 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv4 anonymization)

  • IPv6 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv6 anonymization)

  • ASN assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for IPv4/IPv6 anonymization)

  • LISP assignment database for supplying extra info


1.4. Possible external databases

If enabled during compiling the tool, following external (but local stored) databases can be used

  • GeoIP

    • IPv4 (since 0.61.0, released 2006)

    • IPv6 (since 0.90.0, released 2011, req. GeoIP >= 1.4.5)

    • release 0.99.0 is tested against GeoIP >= 1.4.4

  • IP2Location

    • IPv4 (since 0.60.0, released 2006)

    • IPv6 (since 0.70.0, released 2007, IP2Location LITE IPv6 Databases since 0.99.0, released 2015)

    • release 0.99.0 is tested against IP2Location >= 4.0.2

  • DB-IP.com (since 0.98.0, released 2015), based on local Berkeley DB files generated from downloaded CSV files

  • “External” (since 0.98.0, released 2015), based on local Berkeley DB files, generated from downloaded TXT/XML files (registries assignment databases). Supporting IPv4/IPv6 to Registries and IPv4/IPv6 to CountryCode. If newer, overruling the related included databases.

Since version 0.95.0 the tool can be compiled to use dynamically loading of library, means the binaries can be also used on systems where IP2Location or GeoIP libraries are not existing. On such system, the support is simply disabled then and some capabilities/features which requires the databases are disabled.

Since version 0.97.4 also fallback code for GeoIP and IP2Location is included in the source package, means that support of dynamically loading of library can be included during compilation without having related development sources on the system.


2. License

The program is published under the GNU GPL version 2.


3. Copyright

(C) 2001 - 2017 by Dr. Peter Bieringer


4. Author

The author of ipv6calc is


5. Where to get sources or binaries

5.1. Latest version of sources


5.2. Releases


5.2.2. as tar.gz (signed)

Since version 0.95.0 packages are signed with new GPG key, also available here: CODE-GPG-KEY-bieringer.de-2013 @ftp.bieringer.de or CODE-GPG-KEY-bieringer.de-2013 @ftp.deepspace6.net

Key fingerprint: AAB3 8CB7 97C7 50C7 78C6 08C6 DDEB 141D F738 0F61
uid: Peter Bieringer (Code Signing Key 2013) <code@bieringer.de>

A SPEC file is included, so you can build a RPM from tar.gz using

$ rpmbuild -ta path/to/ipv6calc-$version.tar.gz

In addition, conditional build options are available (see related configure options below):

--without geoip
--without ip2location
--without dbip
--without external
--without shared
--without mod_ipv6calc

5.2.3. as RPM

Currently only on rpmfind / ipv6calc, but there are plans to publish at least source RPMS on DeepSpace6 some day.


5.3. Ready to use packages for several operating systems:

5.3.1. Fedora Linux

Fedora 22 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default.

See also FedoraProject / Package / ipv6calc


5.3.2. Red Hat Enterprise Linux and clones

It's tested by the developer that creation of the RPM is working fine starting with RHEL 4.

CentOS 6/7 are also platforms for regression tests.


5.3.3. Gentoo/Funtoo

Package is maintained, nevertheless, Funtoo is used as platform for regression tests.


5.3.4. Ubuntu

Package is maintained, more information can be found at https://packages.ubuntu.com/ipv6calc


5.3.5. Debian GNU/Linux

Package is maintained, more information can be found at http://packages.debian.org/ipv6calc


5.3.6. openSUSE

Package is maintained, more information can be found at http://download.opensuse.org/repositories/home:/uebelhacker/


6. Configuring & Compiling

6.1. Configuring

Following “ipc6calc” related configure options are currently supported (note: disabling the internal databases reduces the size of the resulting binaries/shared library a lot):

--disable-dynamic-load  Disable dynamic load of libraries (default: enabled)

--disable-db-ieee       Disable build-in IEEE database (default: enabled)
--disable-db-ipv4       Disable build-in IPv4 database (default: enabled)
--disable-db-ipv6       Disable build-in IPv6 database (default: enabled)
--disable-db-as-registry Disable built-in AS-to-Registry database (default: enabled)
--disable-db-cc-registry Disable built-in CountryCode-to-Registry database (default: enabled) 

--enable-dbip           Enable db-ip.com support (default: disabled)
--enable-external       Enable external db support (default: disabled) 
--enable-ip2location    Enable IP2Location support (default: disabled)
--enable-geoip          Enable GeoIP support (default: disabled) 
--enable-mod_ipv6calc   Enable build of mod_ipv6calc for Apache (default: disabled) 

--with-ip2location-headers=DIR      IP2Location include files location
--with-ip2location-headers-fallback IP2Location include files from internal fallback location
                                     (only usable with dynamic load option) 
--with-ip2location-lib=FILE         IP2Location library location
--with-ip2location-static           Explicitly link IP2Location statically (default=no)
--with-ip2location-dynamic          Enable use of dynamic loading of IP2Location library (default=no)
--with-ip2location-db=DIR           Use specified IP2Location database directory, default: /usr/share/IP2Location
--with-ip2location-dyn-lib=NAME     Use specified IP2Location dynamic library, default: libIP2Location.so

--with-geoip-headers=DIR        GeoIP include files location
--with-geoip-headers-fallback   GeoIP include files from internal fallback location
                                 (only usable with dynamic load option) 
--with-geoip-lib=DIR            GeoIP library location
--with-geoip-static             Explicitly link GeoIP statically (default=no)
--with-geoip-dynamic            Enable use of dynamic loading of GeoIP library (default=no)
--with-geoip-db=DIR             Use specified GeoIP database directory, default: /usr/share/GeoIP
--with-geoip-dyn-lib=NAME       Use specified GeoIP dynamic library, default: libGeoIP.so.1
--with-geoip-ipv6-compat        Use IPv6 interface of GeoIP in compatibility mode (supporting 1.4.5) 

--with-dbip-db=DIR      Use specified db-ip.com database directory, default:
                          /usr/share/DBIP

--with-external-db=DIR  Use specified external database directory, default:
                          /usr/share/ipv6calc/db 

--with-apxs=NAME        name of the apxs executable (apxs) 

--enable-shared                 Enable shared library build (default: disabled)

--enable-bundled-getopt         Enable bundled getopt library (default: autoselected)
--enable-bundled-md5            Enable bundled MD5 library (default: autoselected)

6.2. Compiling

As usual, use

$ make

and run tests afterwards using

$ make test

or at least (e.g. if external databases are not available)

$ make test-minimal

6.3. Configuring & Compiling with Presets

A shell script is included which can configure and compile with standard presets (also used during regression tests):

$ ./autogen.sh -h
Supported options:
   -?|-h|--help        : this help
   -n|--no-make        : stop before running 'make'
   -a|--all            : enable GeoIP/IP2Location/db-ip.com/External/mod_ipv6calc support
   -g|--geoip          : enable GeoIP support
   --geoip-dyn|-G      : switch to dynamic library loading of GeoIP
   -i|--ip2location    : enable IP2Location support
   --ip2location-dyn|-I: switch to dynamic library loading of IP2Location
   -d|--dbip           : enable db-ip.com support
   -e|--external       : enable external database support 
   --disable-db-ieee   : disable built-in IEEE database
   --disable-db-ipv4   : disable built-in IPv4 database
   --disable-db-ipv6   : disable built-in IPv6 database
   --geoip-ipv6-compat : enable GeoIP IPv6 compatibility mode
   -S                  : enable shared library mode
   -no-static-build    : skip static build
   --no-test           : skip 'make test' 

7. Mailling Lists

7.1. ipv6calc-announce

Reason:

sending announcements of new versions

Traffic:

very low

Postings:

only moderators are allowed to post

Information:

DeepSpace6 / maillist ipv6calc-announce


7.2. ipv6calc

Reason:

discussions

Traffic:

low

Postings:

subscribers

Information:

DeepSpace6 / maillist ipv6calc


8. Bug Reports

You can send bug reports to the author himself or subscribe to maillist “ipv6calc” and send it to the list.


9. Features of ipv6calc

9.1. Description

The main program named “ipv6calc” is able to recognize many (not only) IPv6 address formats and depending on a selectable action (not required) a selectable output format can be specified. Also it has the capability to show detailed information of an IPv4/IPv6 address or anonymize it.


9.2. List of built-in features

Option “-v” shows built-in features, depending on configuration before compiling:

$ ipv6calc -v
ipv6calc: version 0.99.3 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE DB_IPV4_INFO DB_IPV6_INFO ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC 

Option “-v -v” (since 0.91.0) shows built-in features and capabilities in detail, depending on configuration before compiling:

$ ipv6calc -vv
ipv6calc: version 0.99.3.rc1 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE DB_IPV4_INFO DB_IPV6_INFO ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
Capabilities: GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG(BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(BuiltIn)
Internal main     library version: 0.99.3  API: 0.99.3  (built-in)
Internal database library version: 0.99.3  API: 0.99.3  (built-in)
Compiled: Feb 26 2017  11:04:37
GeoIP support enabled, compiled with IPv4 & IPv6 support
GeoIP dynamic library version (on this system): 1.6.9
GeoIP available databases: Country4=1 Country6=1 ASN4=1 ASN6=1 City4=1 City6=1
IP2Location support enabled, compiled with API version: 8.0.4, dynamically linked with version: 8.0.4 API=8.0.4 Major=8
IP2Location available databases: Country4=1 Country6=1 ASN4=0 ASN6=0 City4=1 City6=1
BuiltIn databases available: ASN_REG=1 IPV4_REG=1 IPV6_REG=1 IEEE=1 CC_REG=1
DB features: 0xff01ffff
GeoIP: features available/implemented: 0x03003ff0/0x03003ff0 (100%)
GeoIP: info of available databases in directory: /usr/share/GeoIP (max: 31)
GeoIP: GeoIP Country Edition            :[ 1] GeoIP.dat            (GEO-106FREE 20161004 Build 1 Copy)
GeoIP: GeoIP City Edition, Rev 1        :[ 2] GeoIPCity.dat        (GEO-533LITE 20161004 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Re)
GeoIP: GeoIP ASNum Edition              :[ 9] GeoIPASNum.dat       (GEO-117 20161002 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Re)
GeoIP: GeoIP Country V6 Edition         :[12] GeoIPv6.dat          (GEO-106FREE 20161004 Build 1 C)
GeoIP: GeoIP ASNum V6 Edition           :[21] GeoIPASNumv6.dat     (GEO-117 20160911 Build 1 Copyright (c) 2016 MaxMind Inc All Rights)
GeoIP: GeoIP City Edition V6, Rev 1     :[30] GeoIPCityv6.dat      (GEO-536LITE 20161004 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Reser)
IP2Location: features available/implemented: 0x0c003fc0/0x0c003fc0 (100%)
IP2Location: info of available databases in directory: /usr/share/IP2Location
IP2Location: Copyright (c) IP2Location All Rights Reserved
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo      :[ 68] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-SAMPLE.BIN (IP2L-DB20 IPv4 SAMPLE 20160604)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El/Us:[ 72] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN (IP2L-DB24 IPv4 SAMPLE 20160604)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo      :[ 92] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE.SAMPLE.BIN (IP2L-DB20 IPv6 SAMPLE 20160604)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El/Us:[ 96] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE.SAMPLE.BIN (IP2L-DB24 IPv6 SAMPLE 20160604)
IP2Location: IPv4 Country                                    :[100] IP2LOCATION-LITE-DB1.BIN            (IP2L-DB1 IPv4 LITE 20150329)
IP2Location: IPv4 Country/Region/City                        :[102] IP2LOCATION-LITE-DB3.BIN            (IP2L-DB3 IPv4 LITE 20150329)
IP2Location: IPv4 Country/Region/City/LongitudeLattitude     :[104] IP2LOCATION-LITE-DB5.BIN            (IP2L-DB5 IPv4 LITE 20150329)
IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP                      :[106] IP2LOCATION-LITE-DB9.BIN            (IP2L-DB9 IPv4 LITE 20150329)
IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP/TZ                   :[108] IP2LOCATION-LITE-DB11.BIN           (IP2L-DB11 IPv4 LITE 20150329)
IP2Location: IPvx Country                                    :[101] IP2LOCATION-LITE-DB1.IPV6.BIN       (IP2L-DB1 IPv6 LITE 20150329)
IP2Location: IPvx Country/ISP                                :[103] IP2LOCATION-LITE-DB3.IPV6.BIN       (IP2L-DB3 IPv6 LITE 20150329)
IP2Location: IPvx Country/Region/City/LongitudeLattitude     :[105] IP2LOCATION-LITE-DB5.IPV6.BIN       (IP2L-DB5 IPv6 LITE 20150329)
IP2Location: IPvx Co/Re/Ci/LattLong/ZIP                      :[107] IP2LOCATION-LITE-DB9.IPV6.BIN       (IP2L-DB9 IPv6 LITE 20150329)
IP2Location: IPvx Co/Re/Ci/LattLong/ZIP/TZ                   :[109] IP2LOCATION-LITE-DB11.IPV6.BIN      (IP2L-DB11 IPv6 LITE 20150329)
IP2Location: IPvx Country                                    :[ 25] IPV6-COUNTRY.BIN                    (IP2L-DB1 IPv6 20060918)
IP2Location: IPvx Co/Re/Ci/LattLong/ZIP/TZ                   :[ 35] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.BIN (IP2L-DB11 IPv6 20160928)
IP2Location: IPv6 Country                                    :[120] IPV6-COUNTRY-FREE.BIN               (IP2L-DB1 IPv6 FREE 20140723 INCOMPATIBLE)
IP2Location: detected best databases SAMPLE  Country4=72   Country6=96   City4=72   City6=96 
IP2Location: detected best databases LITE    Country4=109  Country6=109  City4=109  City6=109
IP2Location: detected best databases COMM    Country4=35   Country6=35   City4=35   City6=35 
IP2Location: selected best databases LI->SA* Country4=72   Country6=96   City4=72   City6=96 
IP2Location: selected best databases normal  Country4=35   Country6=35   City4=35   City6=35 
IP2Location: selected best databases method: * = autoswitch from LITE to SAMPLE enabled in case not older than 12 months and having more features
IP2Location: selected best databases method: COMM older than 12 months are deselected in case of LITE is available
IP2Location: selected best databases method: COMM/LITE/SAMPLE with more features are only selected in case not older than 1 months of already found COMM/LITE/SAMPLE
IP2Location: selected best databases method: softlinks: skipped-by-default
db-ip.com: features available/implemented: 0x30003fc0/0x30003fc0 (100%)
DBIP: info of available databases in directory: /usr/share/DBIP
DBIP: IPv4 CountryCode (FREE)       : ipv6calc-dbip-ipv4-country.db  (DBIP-1/20161001, created: 20161009-090609 UTC)
DBIP: IPv6 CountryCode (FREE)       : ipv6calc-dbip-ipv6-country.db  (DBIP-2/20161001, created: 20161009-090609 UTC)
DBIP: IPv4 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv4-city.db     (DBIP-3/20161001, created: 20161009-090650 UTC)
DBIP: IPv6 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv6-city.db     (DBIP-4/20161001, created: 20161009-090650 UTC)
DBIP: IPv4 Location/ISP (COMM)      : ipv6calc-dbip-ipv4-full.db     (DBIP-9/20170201, created: 20170221-183104 UTC)
DBIP: IPv6 Location/ISP (COMM)      : ipv6calc-dbip-ipv6-full.db     (DBIP-10/20170201, created: 20170221-183104 UTC)
DBIP: detected best databases FREE    Country4=3    Country6=4    City4=3    City6=4  
DBIP: detected best databases COMM    Country4=9    Country6=10   City4=9    City6=10 
DBIP: selected best databases normal  Country4=9    Country6=10   City4=9    City6=10 
DBIP: selected best databases method: COMM older than 12 months are deselected in case of FREE is available
DBIP: selected best databases method: COMM/FREE with more features are only selected in case not older than 1 months of already found COMM/FREE
External: features available/implemented: 0xc00000cc/0xc00180cc (75%)
External: info of available databases in directory: /usr/share/ipv6calc/db
External: IPv4 Registry       : ipv6calc-external-ipv4-registry.db       (EXTDB-1/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/20160929 RIPENCC/20160929, created: 20160930-164535 UTC)
External: IPv6 Registry       : ipv6calc-external-ipv6-registry.db       (EXTDB-2/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC)
External: IPv4 CountryCode    : ipv6calc-external-ipv4-countrycode.db    (EXTDB-3/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/20160929 RIPENCC/20160929, created: 20160930-164535 UTC)
External: IPv6 CountryCode    : ipv6calc-external-ipv6-countrycode.db    (EXTDB-4/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC)
BuiltIn: features available/implemented: 0x0001c00f/0x0001c00f (100%)
BuiltIn: info of available databases
BuiltIn: ASN  : IANA/20160908
BuiltIn: CC   : AFRINIC/20161224 APNIC/20161223 ARIN/20161224 LACNIC/20161223 RIPENCC/20161223
BuiltIn: IPv4 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20150810 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170224-184411 UTC)
BuiltIn: IPv6 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20170104 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170225-075038 UTC)
BuiltIn: IEEE : IAB/20161218 OUI/20161117 OUI36/20161218
Database selection or priorization ('->': subsequential calls)
Database priorization default: GeoIP->IP2Location->db-ip.com->External->BuiltIn
DB_AS_REG (AS-Number to Registry database): BuiltIn
DB_CC_REG (CountryCode to Registry database): BuiltIn
DB_IPV4_REG (IPv4 to Registry database): BuiltIn
DB_IPV6_REG (IPv6 to Registry database): BuiltIn
DB_IPV4_AS (IPv4 to AS database): GeoIP
DB_IPV6_AS (IPv6 to AS database): GeoIP
DB_IPV4_CC (IPv4 to CountryCode database): GeoIP->IP2Location->db-ip.com->External
DB_IPV6_CC (IPv6 to CountryCode database): GeoIP->IP2Location->db-ip.com->External
DB_IPV4_COUNTRY (IPv4 to Country database): GeoIP->IP2Location->db-ip.com
DB_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location->db-ip.com
DB_IPV4_CITY (IPv4 to City database): GeoIP->IP2Location->db-ip.com
DB_IPV6_CITY (IPv6 to City database): GeoIP->IP2Location->db-ip.com
DB_IPV4_REGION (IPv4 to Region database): GeoIP->IP2Location->db-ip.com
DB_IPV6_REGION (IPv6 to Region database): GeoIP->IP2Location->db-ip.com
DB_IEEE (IEEE/OUI/OUI36 Vendor database): BuiltIn
DB_IPV4_INFO (IPv4 additional information): BuiltIn
DB_IPV6_INFO (IPv6 additional information): BuiltIn

Option “-v -h” (since 0.97.4) shows explanation of feature tokens

$ ipv6calc -v -h
ipv6calc: version 0.99.3 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE DB_IPV4_INFO DB_IPV6_INFOANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC

Explanation of available(+)/possible(-) feature tokens
GeoIP                 + GeoIPv4 database (provided by GeoIP)
GeoIPv6               + GeoIPv6 database (provided by GeoIP)
IP2Location           + IP2Location IPv4 database (provided by IP2Location)
IP2Location6          + IP2Location IPv6 database (provided by IP2Location)
DBIPv4                + db-ip.com IPv4 database (provided by db-ip.com)
DBIPv6                + db-ip.com IPv6 database (provided by db-ip.com)
DB_AS_REG             + AS-Number to Registry database (provided by BuiltIn)
DB_IPV4_REG           + IPv4 to Registry database (provided by External,BuiltIn)
DB_IPV6_REG           + IPv6 to Registry database (provided by External,BuiltIn)
DB_IPV4_AS            + IPv4 to AS database (provided by GeoIP)
DB_IPV6_AS            + IPv6 to AS database (provided by GeoIP)
DB_IPV4_CC            + IPv4 to CountryCode database (provided by GeoIP,IP2Location,db-ip.com,External)
DB_IPV6_CC            + IPv6 to CountryCode database (provided by GeoIP,IP2Location,db-ip.com,External)
DB_IPV4_COUNTRY       + IPv4 to Country database (provided by GeoIP,IP2Location)
DB_IPV6_COUNTRY       + IPv6 to Country database (provided by GeoIP,IP2Location)
DB_IPV4_CITY          + IPv4 to City database (provided by GeoIP,IP2Location,db-ip.com)
DB_IPV6_CITY          + IPv6 to City database (provided by GeoIP,IP2Location,db-ip.com)
DB_IPV4_REGION        + IPv4 to Region database (provided by GeoIP,IP2Location,db-ip.com)
DB_IPV6_REGION        + IPv6 to Region database (provided by GeoIP,IP2Location,db-ip.com)
DB_CC_REG             + CountryCode to Registry database (provided by BuiltIn)
DB_IEEE               + IEEE/OUI/OUI36 Vendor database (provided by BuiltIn)
DB_IPV4_INFO          + IPv4 additional information (provided by External,BuiltIn)
DB_IPV6_INFO          + IPv6 additional information (provided by External,BuiltIn) 
ANON_ZEROISE          + Anonymization method 'zeroize'
ANON_ANONYMIZE        + Anonymization method 'anonymize'
ANON_KEEP-TYPE-ASN-CC + Anonymization method 'keep-type-asn-cc'

Note: since version 0.95.0 the internal layer for database usage was abstracted and each database “plugin” is initialized reporting then its supporting features in binary representation. This makes implementation of other external databases easier in the future. There are at least plans to create an overlay to built-in databases by publishing and use some “precompiled” newer databases replacing the need of recompilation for updated built-in databases.


9.3. Examples

9.3.1. Conversion

A simple example is the conversion of an IPv6 address to a DNS PTR query string:

$ ipv6calc --out revnibbles.arpa 2001:db8::1
No input type specified, try autodetection...found type: ipv6addr
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.

Like you see, input format was autodetected. And the given example can be extended because ipv6calc also understands netmask / prefix length values:

$ ipv6calc -q --out revnibbles.arpa 2001:db8::1/64
0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.

Also you've also learnt now that switch '-q' (quiet) suppresses informational messages. You can use this now to start a DNS PTR query using:

$ dig PTR `./ipv6calc -q --out revnibbles.arpa 2001:db8::1/64`

But ipv6calc can do many more for you! Next example shows you the extraction of the IPv4 address contained in a 6to4 IPv6 address:

$ ipv6calc -q --action conv6to4 --in ipv6 2002:c0a8:fb61::1 --out ipv4
192.168.251.97

This also works vice-versa:

$ ipv6calc -q --action conv6to4 --in ipv4 192.168.251.97 --out ipv6
2002:c0a8:fb61::

There are many more features already implemented, if you miss one, send a note.


9.3.2. Information

Depending on available databases output can vary.


9.3.2.1. Information about a simple IPv6 address:
$ ipv6calc -q -i 3ffe:ffff::210:a4ff:fe01:2345
Address type: unicast, 6bone, global-unicast, productive
Address type has SLA: 0000
Registry for address: reserved
Interface identifier: 0210:a4ff:fe01:2345
EUI-48/MAC address: 00:10:a4:01:23:45
MAC is a global unique one
MAC is an unicast one
OUI is: XIRCOM

9.3.2.2. Information about a Teredo IPv6 address:
$ ipv6calc -q -i 3ffe:831f:ce49:7601:8000:efff:af4a:86BF
Address type: unicast, 6bone, global-unicast, teredo
Country Code: IT
Registry for address: 6BONE
IPv4 address: 80.181.121.64 (TEREDO-CLIENT)
IPv4 address type: unicast, global
Autonomous System Information for [80.181.121.64]: AS3269 ASN-IBSNAZ
Country Code for [80.181.121.64]: IT 
...

9.3.2.3. Information about a LISP address
$ ipv6calc -q -i 153.16.26.80
IPv4 address: 153.16.26.80
IPv4 address type: unicast, global, lisp
...
IPv4 registry: ARIN(LISP#cbc-xtr) 
...

9.3.2.4. Machine readable output

There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, database related information can be displayed, if databases are located on the system and supported.

$ ipv6calc -q -i -m 2a01:238:423d:8800:85b3:9e6b:3019:8909  
IPV6=2a01:0238:423d:8800:85b3:9e6b:3019:8909
IPV6_ANON=a909:16fa:9091:a448:a909:4941:0000:0007
IPV6_TYPE=unicast,global-unicast,productive,iid-random,iid,iid-local
IPV6_COUNTRYCODE=DE
IPV6_COUNTRYCODE_SOURCE=GeoIP
IPV6_AS_NUM=6724
IPV6_AS_TEXT=AS6724 STRATO AG
IPV6_REGISTRY=RIPENCC
SLA=8800
IID=85b3:9e6b:3019:8909
EUI64_SCOPE=local-random
IP2LOCATION_COUNTRY_SHORT=DE
IP2LOCATION_COUNTRY_LONG=Germany
IP2LOCATION_REGION=Berlin
IP2LOCATION_CITY=Berlin
IP2LOCATION_LATITUDE=52.524368
IP2LOCATION_LONGITUDE=13.410530
IP2LOCATION_ZIPCODE=10178
IP2LOCATION_TIMEZONE=+01:00
GEOIP_AS_TEXT=AS6724 STRATO AG
GEOIP_COUNTRY_SHORT=DE
GEOIP_COUNTRY_LONG=Germany
GEOIP_LATITUDE=51.000000
GEOIP_LONGITUDE=9.000000
GEOIP_CONTINENTCODE=EU
DBIP_COUNTRY_SHORT=DE
DBIP_CITY=Berlin
DBIP_REGION=Berlin
EXTERNAL_COUNTRY_SHORT=DE
IP2LOCATION_DATABASE_INFO=IP2L-DB11 IPv6 LITE 20150329 Copyright (c) 2015 IP2Location All Rights Reserved / This site or product includes IP2Location LITE data available from http://lite.ip2location.com
GEOIP_DATABASE_INFO=GEO-106FREE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved / GEO-117 20150405 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved / GEO-536LITE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved
DBIP_DATABASE_INFO=DBIP-2/20150301, created: 20150304-183312 UTC / DBIP-4/20150301, created: 20150304-183330 UTC
EXTERNAL_DATABASE_INFO=EXTDB-4/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC
BUILTIN_DATABASE_INFO=IPv6-REG:AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20150324 LACNIC/20150417 RIPENCC/20150417
IPV6CALC_NAME=ipv6calc
IPV6CALC_VERSION=0.99.0
IPV6CALC_COPYRIGHT="(P) & (C) 2001-2015 by Peter Bieringer <pb (at) bieringer.de>"
IPV6CALC_OUTPUT_VERSION=10
IPV6CALC_SETTINGS_ANON="set=keep-type-asn-cc,mask-ipv6=56,mask-ipv4=24,mask-eui64=40,mask-mac=24,method=keep-type-asn-cc"
IPV6CALC_FEATURES="GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC"
IPV6CALC_CAPABILITIES="GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG(BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(BuiltIn)"
Special machine readable output options (>= 0.99.0)

9.3.2.4.1. Output filter by selecting a token (>= 0.99.0)

Using option --mrst <TOKEN> (Machine Readable Select Token) can be used to display only token

$ ipv6calc -q -i --mrst IPV6_TYPE 2a01:238:423d:8800:85b3:9e6b:3019:8909 
IPV6_TYPE=unicast,global-unicast,productive,iid-random,iid,iid-local

9.3.2.4.2. Output filter by matching token (>= 0.99.0)

Using option --mrmt <TOKEN> (Machine Readable Match Token) can be used to display only matching tokens

$ ipv6calc -q -i --mrmt IP2LOCATION 2a01:238:423d:8800:85b3:9e6b:3019:8909 
IP2LOCATION_COUNTRY_SHORT=DE
IP2LOCATION_COUNTRY_LONG=Germany
IP2LOCATION_REGION=Berlin
IP2LOCATION_CITY=Berlin
IP2LOCATION_LATITUDE=52.524368
IP2LOCATION_LONGITUDE=13.410530
IP2LOCATION_ZIPCODE=10178
IP2LOCATION_TIMEZONE=+01:00
IP2LOCATION_DATABASE_INFO="IP2L-DB11 IPv6 LITE 20150329 Copyright (c) 2015 IP2Location All Rights Reserved / This site or product includes IP2Location LITE data available from http://lite.ip2location.com"

9.3.2.4.3. Output filter by selecting a value of a token token (>= 0.99.0)

Using option --mrtvo <TOKEN> (Machine Readable Token Value Only) can be used to display only value of a token

$ ipv6calc -q -i --mrtvo IPV6_TYPE 2a01:238:423d:8800:85b3:9e6b:3019:8909 
unicast,global-unicast,productive,iid-random,iid,iid-local

9.3.2.4.4. Output adjustment by unconditional quoting of values (>= 0.99.0)

Using option --mrqva (Machine Readable Quote Values Always) can be used to quote values always

$ ipv6calc -q -i --mrqva --mrtvo IPV6_TYPE 2a01:238:423d:8800:85b3:9e6b:3019:8909 
"unicast,global-unicast,productive,iid-random,iid,iid-local"

9.3.2.4.5. Output adjustment by unconditional disabling quoted values (>= 0.99.0)

Using option --mrqvn (Machine Readable Quote Values Never) can be used to never quote values

$ ipv6calc -q -i --mrqvn --mrst IPV6_AS_TEXT 2a01:238:423d:8800:85b3:9e6b:3019:8909 
IPV6_AS_TEXT=AS6724 STRATO AG

9.3.2.4.6. Output adjustment by unconditional print token in case of empty value (>= 0.99.0)

Using option --mrstpq (Machine Readable Select Token Print Always) can be used to print always token/value regardless it's contained

$ ipv6calc -q -i --mrqva --mrstpa IPV4 2a01:238:423d:8800:85b3:9e6b:3019:8909 
IPV4=""
$ ipv6calc -q -i --mrqva --mrst IPV4 2a01:238:423d:8800:85b3:9e6b:3019:8909 
(no output)

9.3.3. Filter mode

“ipv6calc” can run in filter mode to be able to extract from a huge list of IPv4/IPv6 addresses ones which are interesting or ones which are not interesting (see printout of online help below).

Filter tokens are the ones which are listed on “TYPE” lines shown in “-m -i” information mode.

Example for searching for Teredo addresses:

$ cat ip.bieringer.de-log.201310 | awk '{ print $1 }' | sort | uniq | ipv6calc -A filter -E teredo
2001:0:9d38:90d7:34f7:1a26:8599:e079

For more information see below

Note: since version 0.95.0 '-A filter' is optional if option '-E <filter expression>' is given (autoselected action).


9.3.4. Test mode

Since 0.99.2 a test mode ('-A test', autoselected in case 'test_*' options are given) is implemented for address prefix or range

For more information see below


9.4. Option style

Since version 0.40 new-style option handling was introduced, using

  • --in <inputtype>

  • --out <outputtype>

  • --action <actiontype>

and many more conversions were added. A built-in check matrix should prevent misconversions.

Up to version 0.39, only old-style options (aka “shortcut” options). They are one-in-all options, specifying input/action/output in one token. Internally this options will be converted into new-style options.


9.5. Online help

Online help always shows the currently implemented features.


9.5.1. Main online help:

External database options only appear if compiled with related support.

$ ipv6calc -h
ipv6calc: version 0.99.0 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
(P) & (C) 2001-2015 by Peter Bieringer <pb (at) bieringer.de>

This program formats and calculates IPv6/IPv4/MAC addresses and can do many more tricky things

  [-d|--debug <debug value>] : debug value (bitwise like)
                                can also be set by IPV6CALC_DEBUG environment value
  [-v|--version [-v [-v]]]   : version information (2 optional detail levels)
  [-v|--version -h]          : explanation of feature tokens
  [-V|--verbose]             : be more verbose
  [-h|--help|-?]             : this online help

  [--disable-ip2location           ] : IP2Location support disabled
  [--db-ip2location-disable        ] : IP2Location support disabled
  [--db-ip2location-dir <directory>] : IP2Location database directory (default: /usr/share/IP2Location)
  [--db-ip2location-lib <file>     ] : IP2Location library file (default: libIP2Location.so)
  [--db-ip2location-only-type <TYPE>]: IP2Location database only selected type (1-24)
  [--db-ip2location-allow-softlinks] : IP2Location database softlinks allowed
  [--db-ip2location-lite-to-sample-autoswitch-max-delta-months <MONTHS>]:
     autoswitch from LITE to SAMPLE databases if possible and delta is not more than 12 months (0=disabled)
  [--db-ip2location-comm-to-lite-switch-min-delta-months <MONTHS>]:
     switch from COMM to LITE databases if possible and delta more than 12 months (0=disabled)

  [--disable-geoip                 ] : GeoIP support disabled
  [--db-geoip-disable              ] : GeoIP support disabled
  [--db-geoip-dir       <directory>] : GeoIP database directory (default: /usr/share/GeoIP)
  [--db-geoip-lib       <file>     ] : GeoIP library file (default: libGeoIP.so.1)

  [--disable-dbip                  ] : db-ip.com support disabled
  [--db-dbip-disable               ] : db-ip.com support disabled
  [--db-dbip-dir        <directory>] : db-ip.com database directory (default: /usr/share/DBIP)

  [--disable-external              ] : External support disabled
  [--db-external-disable           ] : External support disabled
  [--db-external-dir    <directory>] : External database directory (default: /usr/share/ipv6calc/db)

  [--disable-builtin               ] : BuiltIn support disabled
  [--db-builtin-disable            ] : BuiltIn support disabled

  [-q|--quiet]               : be more quiet (auto-enabled in pipe mode)
  [-f|--flush]               : flush each line in pipe mode

 Usage with new style options:
  [--in|-I <input type>]   : specify input  type
                             (default: autodetect)
  [--out|-O <output type>] : specify output type
                             (sometimes: autodetect)
  [--action|-A <action>]   : specify action
                             (default: format conversion, sometimes: autodetect)
  [<format option> ...] : specify format options
  <input data> [...]    : input data
  
 Available input  types:  [-m] -I|--in     -?|-h|--help
  Available output types:  [-m] -O|--out    -?|-h|--help
  Available action types:  [-m] -A|--action -?|-h|--help
 
 Other usage:
  --showinfo|-i [--machine_readable|-m] : show information about input data
  --showinfo|-i --mrqva                 : Machine Readable Quote Values Always
  --showinfo|-i --mrqvn                 : Machine Readable Quote Values Never
  --showinfo|-i --mrst <TOKEN>          : Machine Readable Select Token
  --showinfo|-i --mrstpa <TOKEN>        : Machine Readable Select Token Print Always
  --showinfo|-i --mrmt <TOKENPREFIX>    : Machine Readable Match Token Prefix
  --showinfo|-i --mrtvo <TOKEN>         : Machine Readable Token Value Only
  --showinfo|-i --show-tokens           : show available tokens (aka types) on '-m'
 
 Usage with shortcut options: <shortcut option> [<format option> ...] <input data>
  for more information and available format options use: <shortcut option> -?|-h|--help

 -r|--addr2ip6_int (-O revnibbles.int)
  -r|--addr_to_ip6int (-O revnibbles.int)
  -a|--addr2ip6_arpa (-O revnibbles.arpa)
  -a|--addr_to_ip6arpa (-O revnibbles.arpa)
  -b|--addr_to_bitstring (-O bitstring)
     --addr2compaddr (--printcompressed)
     --addr_to_compressed (--printcompressed)
     --addr2uncompaddr (--printuncompressed)
     --addr_to_uncompressed (--printuncompressed)
     --addr_to_base85 (-I ipv6addr -O base85)
     --base85_to_addr (-I base85 -O ipv6addr)
     --mac_to_eui64 (-I mac -O eui64)
     --addr2fulluncompaddr (--printfulluncompressed)
     --addr_to_fulluncompressed (--printfulluncompressed)
     --addr2if_inet6 (-I ipv6addr -O ifinet6)
     --addr_to_ifinet6 (-I ipv6addr -O ifinet6)
     --if_inet62addr (-I ifinet6 -O ipv6addr --printcompressed)
     --ifinet6_to_compressed (-I ifinet6 -O ipv6addr --printcompressed)
     --eui64_to_privacy (-I iid_token -O iid_token -A genprivacyiid)
     --ipv4_to_6to4addr (-I ipv4 -O ipv6addr -A conv6to4)

9.5.2. Database options

  • each internal/external database can be disabled by option

  • directory of database files can be given via related option

  • databases requiring external library the library file can be given in case of dynamic load and linking


9.5.2.1. IP2Location

IP2location database directory can contain a bunch of files, the best ones are selected automatically (since 0.99.0). “Best” can be controlled via two options:

  • --db-ip2location-lite-to-sample-autoswitch-max-delta-months <MONTHS>: switches from LITE to SAMPLE databases in case of

    • existing SAMPLE database

    • SAMPLE database not older than default/given MONTHS than the LITE database

    • IP address is in range of SAMPLE database (IPv4: 0.0.0.0-99.255.255.255, IPv6: 2a04::/16)

    • autoswitch can be disabled by using MONTHS=0

    • reason for implementation: show maximum possible IP2Location features

  • --db-ip2location-comm-to-lite-switch-min-delta-months <MONTHS>: switches from COMMercial to LITE databases in case of

    • existing LITE database

    • COMMercial database is default/given MONTHS older than the LITE database

    • switch can be disabled by using MONTHS=0

    • reason for implementation: avoid using old COMMercial databases

  • --db-ip2location-only-type <TYPE>: only selects databases of given type

    • reason for implementation: be able to select a specific database type

  • --db-ip2location-allow-softlinks: allow softlinked IP2Location database files

    • by default, softlinked database files are skipped, because it's hard to detect whether one is COMMercial, LITE or SAMPLE

use “ipv6calc -vv” or “ipv6calc -vvv” for verification, which databases are selected finally.


9.5.3. Input-type options

$ ipv6calc --in -?
ipv6calc: version 0.97.0 IP2Location GeoIP GeoIPv6 DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
(P) & (C) 2001-2014 by Peter Bieringer <pb (at) bieringer.de>

 Available input types:
  auto            : automatic detection
  revnibbles.int  : dot separated nibbles reverse, ending with ip6.int.
  revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa.
  bitstring       : bitstring labes, ending with ip6.arpa.
  ipv6addr        : IPv6 address
  ipv6literal     : IPv6 address in literal
  ipv4addr        : IPv4 address
  ipv4hex         : IPv4 in hexdecimal format
  ipv4revhex      : IPv4 in byte-reversed hexdecimal format
  mac             : MAC address (48 bits)
  eui64           : EUI-64 identifier (64 bits)
  base85          : Base-85 string
  ifinet6         : Like line in /proc/net/if_inet6
  iid+token       : Interface identifier and token
  ipv6logconv     : ipv6logconv (currently not supported)
  prefix+mac      : IPv6 prefix and a MAC address
  asn             : Autonomous System Number

9.5.4. Output-type options:

$ ipv6calc --out -?
ipv6calc: version 0.97.0 IP2Location GeoIP GeoIPv6 DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
(P) & (C) 2001-2014 by Peter Bieringer <pb (at) bieringer.de>

 Available output types:
  revnibbles.int  : dot separated nibbles reverse, ending with ip6.int.
  revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa.
  bitstring       : bitstring labes, ending with ip6.arpa.
  ipv6addr        : IPv6 address
  ipv4addr        : IPv4 address
  mac             : MAC address (48 bits)
  eui64           : EUI-64 identifier (64 bits)
  base85          : Base-85 string
  ifinet6         : Like line in /proc/net/if_inet6
  iid             : Interface identifier
  iid+token       : Interface identifier and token
  addrtype        : Address type
  ouitype         : OUI (IEEE) type
  ipv6addrtype    : IPv6 address type
  any             : any type (currently not supported)
  revipv4         : reverse IPv4, ending with in-addr.arpa
  ipv4hex         : IPv4 in hexdecimal format
  octal           : IP address in escaped octal format
  hex             : IP address in hexadecimal format
  ipv6literal     : IPv6 address in literal

 For examples and available format options use:
    -O|--out <type> --examples

9.5.5. Action-type options:

$ ipv6calc --action -?
ipv6calc: version 0.99.1 IP2Location GeoIP GeoIPv6 DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
(P) & (C) 2001-2015 by Peter Bieringer <pb (at) bieringer.de>

 Available action types:
  auto             : Automatic selection of action (default)
  geneui64         : Converts a MAC address to an EUI-64 address
  conv6to4         : Converts IPv4 address <-> 6to4 IPv6 address (prefix)
  convnat64        : Converts IPv4 address <-> NAT64 IPv6 address
  genprivacyiid    : Generates a privacy interface ID out of a given one (arg1) and a token (arg2)
  prefixmac2ipv6   : Generates an IPv6 address out of a prefix and a MAC address
  anonymize        : Anonymize IPv4/IPv6 address without loosing much information
  6rd_local_prefix : Calculate the 6rd prefix from given IPv6 prefix (& relay prefix) and IPv4
                      Options:
                       --6rd_prefix ... (required)
                       --6rd_relay_prefix ... (optional)
  6rd_extract_ipv4 : Extract from 6rd address the include IPv4 address
                      Options:
                       --6rd_prefixlength ... (required)
  filter           : Filter addresses related to filter options

9.5.6. Special action “filter”:

Special action “filter” can be used especially in pipe mode to filter IP addresses related to their type and since 0.99.0 also related to database results (CountryCode, ASN or Registry).

$ ipv6calc: version 0.99.2 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE
 Filter given addresses from stdin by filter expression, e.g.
  echo '2001:db8::1' | ipv6calc [-A filter] -E iid-local
  echo '2001:db8::1' | ipv6calc [-A filter] -E iid-local,global-unicast
  echo '2001:db8::1' | ipv6calc [-A filter] -E ^iid-random
 (note: since version 0.95.0 '-A filter' is autoselected if option '-E <filter expression>' is given)
 negation of filter expression with prefix: ^
  IPv6 address filter tokens:
   ipv6  unknown unicast multicast anycast loopback link-local site-local compat-v4 mapped reserved unique-local-unicast anonymized-iid anonymized-prefix 6to4 6bone global-unicast unspecified solicited-node productive 6to4-microsoft teredo orchid link-local-teredo nat64 iid-random iid iid-local iid-global iid-teredo iid-eui48 iid-eui64 iid-isatap iid-includes-ipv4
  IPv4 address filter tokens:
   ipv4  any unicast multicast anycast broadcast loopback unspecified unknown reserved zeroconf site-local anonymized global 6to4relay
  IPv4/v6 address filter tokens based on databases:
   [^][ipv4.|ipv6.]db.cc=<CC>|unknown (Country Code [2 chars])
   [^][ipv4.|ipv6.]db.asn=<ASN>|unknown (Autonomous System Number)
   [^][ipv4.|ipv6.]db.reg=<REGISTRY>
    Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown
  IPv4/v6 address filter tokens based on address/mask:
   [^]ipv4.addr=<IPV4-ADDRESS>[<PREFIX-LENGTH>]
   [^]ipv6.addr=<IPV6-ADDRESS>[<PREFIX-LENGTH>]
  IPv4/v6 address filter tokens based on address ranges (<=|<|>|>=):
   [^]ipv4.addr(<=|<|>|>=)<IPV4-ADDRESS>
   [^]ipv6.addr(<=|<|>|>=)<IPV6-ADDRESS>
   as alternative in case <|> creating problems also supported: =(le|lt|gt|ge)=:
   [^]ipv4.addr=(le|lt|gt|ge)=<IPV4-ADDRESS>
   [^]ipv6.addr=(le|lt|gt|ge)=<IPV6-ADDRESS>
  EUI-48/MAC address filter tokens:
    IMPLEMENTATION MISSING
  EUI-64 address filter tokens:
    IMPLEMENTATION MISSING

Example for some filter expressions:

$ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.cc=DE | wc -l
5068

$ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.cc=US | wc -l
305

$ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.reg=ARIN | wc -l
306

$ cat ip.bieringer.de-log.201504 | ipv6calc -E iid-random | wc -l
4806

$ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.cc=US,iid-random | wc -l
16

$ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E ipv6.db.cc=US,iid-random,ipv4.db.cc=US | wc -l
1842

$ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E db.asn=8767 | wc -l
2363
$ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E ipv6.db.asn=8767 | wc -l
1452
$ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E ipv4.db.asn=8767 | wc -l
911

Example for searching for addresses in a specific range (supported since 0.99.2):

$ cat ip.bieringer.de-log.201609 | awk '{ print $1 }' | sort | uniq | ipv6calc -E ipv6.addr=ge=2002::,ipv6.addr=lt=2003::
2002:2518:0:1:2:3:4:5
...
2002:d950:0:1:2:3:4:5

9.5.7. Special action “test”:

Special action “test” (since 0.99.2) can be used in command line or pipe mode (single address only) to test IP addresses related to a given prefix or range .

$ ./ipv6calc/ipv6calc -A test -h
ipv6calc: version 0.99.2 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE

 Test given address(es) against supported tests:
  --test_prefix <PREFIX>       : inside a prefix
  --test_gt|--test_ge <ADDRESS>: greater(/equal) than an address
  --test_lt|--test_le <ADDRESS>: less(/equal) than an address

 Test given address(es) from stdin, e.g.
  echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db8::/32
  echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db9::/32

 Single address test, return code: 0=inside/matching 1=outside/not-matching 2=uncomparable
  ipv6calc [-A test] --test_prefix 2001:db8::/32 2001:db8::1
  ipv6calc [-A test] --test_prefix 2001:db9::/32 2001:db8::1
  ipv6calc [-A test] --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1
  ipv6calc [-A test] --test_ge 2001:db9:: --test_le 2001:db9:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1
  ipv6calc [-A test] --test_ge 2001:db9:: --test_lt 2001:dba:: 2001:db8::1
  ipv6calc [-A test] --test_ge 2001:db8:: --test_lt 2001:db9:: 2001:db8::1

Example for command line mode:

$ ipv6calc --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1; echo $?
no input type specified, try autodetection...found type: ipv6addr
no output type specified, try autodetection...found type: ipv6addr
2001:db8::1   greater/equal than 2001:db8::  less/equal than 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
0

Example for command line mode (quiet):

$ ipv6calc -q --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1; echo $?
2001:db8::1   greater/equal than 2001:db8::  less/equal than 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
0

Example for pipe mode:

$ echo -e "1.2.3.4\n1.2.4.4" | ipv6calc --test_prefix 1.2.3.0/24
1.2.3.4   inside 1.2.3.0/24
1.2.4.4   NOT inside 1.2.3.0/24

10. Webserver log conversion helper program "ipv6logconv"

This program parses address tokens of a given webserver logfile and converts them to special strings, useful for statistics (e.g. created by using "analog").


10.1. Supported options

$ ipv6logconv -h
ipv6logconv: version 0.97.0 CONV_REG CONV_IEEE
(P) & (C) 2002-2014 by Peter Bieringer <pb (at) bieringer.de>
 General:
  [-d|--debug <debug value>] : debug value (bitwise like)
  [-q|--quiet] : be more quiet
  [-n|--nocache] : disable caching
  [-c|--cachelimit <value>] : set cache limit
                               default: 20
                               maximum: 200
 Output:
  [--out <output type>] : specify output type
   addrtype       : Address type
   ouitype        : OUI (IEEE) type
   ipv6addrtype   : IPv6 address type
   any            : any type
 Takes data from stdin, proceed it to stdout

10.2. Examples

A demonstration about which kind of statistics are possible to produce is shown at http://www.ipv6.bieringer.de/ (IPv6 only).


10.3. Usage

Example:

$ echo "2002:50b5:7940:0000:0000:0000:50b5:7940 - -" | ipv6logconv -q --out any
RIPENCC.6to4.global-unicast.ipv6-addr.addrtype.ipv6calc

See more examples inside the package.


11. Webserver log anonymization helper program "ipv6loganon"

On autoconfiguration, the interface part of an IPv6 address is based on the MAC address of the network interface card (NIC). This address is used for outgoing requests, if privacy option (RFC3041 / RFC4941) is not enabled. This results in many privacy related information on web- or mail-server log files. Administrators, which won't (be allowed to) store such information over time, but still do not want to loose information about address type distribution should use 'ipv6loganon' to anonymize their log files.

Since version 0.94.0 internally also IID anonymization is possible without loosing any information for “ipv6logstats”.

Since version 0.95.0 internally also prefix anonymization is possible without loosing any information for “ipv6logstats”.


11.1. Anonymization details

11.1.1. Method “zeroize”

The anonymizer would keep as much information as possible for IPv6 address types.

Client-side IID would be anonymized by

  • EUI-48 based: serial number would be zero'ed, keeping OID

  • EUI-64 based: serial number would be zero'ed, keeping OID

  • ISATAP: client IPv4 address would be anonymized by given IPv4 mask

  • TEREDO: client IPv4 address would be anonymized by given IPv4 mask, client port would be zero'ed

  • 6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 mask

  • local: whole IID would be zero'ed

Client-side SLA would be anonymized by

  • SLA would be zero'ed

Prefix would be anonymized by

  • 6to4: client IPv4 address would be anonymized by given IPv4 mask

Compat/Mapped IPv4 addresses would be anonymized by

  • IPv4 address would be anonymized by given IPv4 mask


11.1.2. Method “anonmize”

The anonymizer would keep as much information as possible for the IID of an IPv6 address.

Description from libipv6addr.h:

 * IID anonymization is done by replacing with related information (64-bit)
 * xxxx:xxxx:xxxx:xxxC  (C = 4-bit checksum)
 *
 * a9p9 4941 0000 000C  -> RFC 4941 anonymized privacy extension Interface ID
 *
 * a9p9 4291 4xxx xxxC  -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted OUI
 * a9p9 4291 5xxx xxxC  -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted mapped IAB/OUI-36
 * a9p9 4291 6xxx xxxC  -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted OUI
 * a9p9 4291 7xxx xxxC  -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted mapped IAB/OUI-36
 * a9p9 4291 8xxx xxxC  -> RFC 4291 embedded anonymized IPv4 address, xxx xxx = first 24 bit of included (anonymized) IPv4 address
 * a9p9 4291 c02d 5d1C  -> RFC 4291 Chapter 2.5.1 anonymized static Interface ID
 *
 * a9p9 5214 4xxx xxxC  -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (local scope)
 * a9p9 5214 5xxx xxxC  -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (global scope)
 * a9p9 5214 cxx0 000C  -> RFC 5214 anonymized ISATAP Interface ID, xx      = first  8 bit of included vendor ID (local scope)
 * a9p9 5214 dxx0 000C  -> RFC 5214 anonymized ISATAP Interface ID, xx      = first  8 bit of included vendor ID (global scope)
 * a9p9 5214 exxx xxxC  -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (local scope)
 * a9p9 5214 fxxx xxxC  -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (global scope)
 *
 * a9p9 4843 0000 000C  -> RFC 4843 anonymized ORCHID hash

Depending on given mask, the part of the prefix will be replaced:

 * SLA/NLA prefix part anonymization is done by replacing with pattern a909a909
 *   p = number of nibbles anonymized

11.1.3. Method “keep-type-asn-cc”

In addition to “anonymize” (of IID) this method anonymizes also the prefix of an IPv6 address or a whole IPv4 address by keeping ASN (Autonomous System Number, Country Code and Type).

Description from libipv6addr.h:

 * Prefix anonymization in case of method=kp: p=0x0f
 * a909:ccca:aaaa:aaaC  (C = 4-bit checksum)
 *                      ccc      -> 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936)
 *                                   0x3FD = LISP
 *                                   0x3FE = unknown country
 *                                   0x3FF - 16 + REGISTRY_6BONE && ASN=0 = 6bone 
 *                                   0x000-0x3A7: c1= c / 36, c2 = c % 36
 *                      aaaaaaaa -> 32-bit ASN

Description from libipv4addr.h:

 *  Global IPv4 addresses are anoymized by storing country code and AS number
 *   and using prefix of experimental range (240-255.x.y.z)
 *
 *  3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 
 *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 *  1 1 1 1
 * |p p p p|
 *  Prefix                
 *    0xF
 *
 * Pariy Bit (odd parity)
 *         |P|
 *
 * Mapping of Country Code
 *           |c c c c c c c c c c|
 *            10-bit Country Code mapping [A-Z]*[A-Z0-9] (936)
 *            0x3FF = unknown country
 *            0x000-0x3A7: c1= c / 36, c2 = c % 36
 *
 * Mapping of ASN <= 65535
 *                                0|a a a a a a a a a a a a a a a a|
 *                                    16-bit ASN
 *
 * Mapping of ASN >= 65536, ASN & 0xE000 == 0 (12-bit LSB is ok) 
 *                                1|r r r|0|l l l l l l l l l l l l|
 *                                           13-bit LSB of ASN
 *
 * Mapping of ASN >= 65536, ASN & 0xE000 != 0 (12-bit LSB overflow) => unspecified
 *                                1|r r r|1|0 0 0 0 0 0 0 0 0 0 0 0|
 *
 * Mapping of ASN registry for ASN >= 65536
 *                                  0 0 0 = "unknown ASN registry"
 *                                  0 1 0 = APNIC
 *                                  0 1 1 = RIPE
 *                                  1 0 0 = LACNIC
 *                                  1 0 1 = AFRINIC
 *                                  1 1 0 = ARIN
 * Mapping of LISP
 *                                1|r r r|1|1|0 0 0 0 0 0 0 0 0 0 0| 

11.2. Supported log file formats

Currently native supported log files:

  • Apache log file format, 1st token is IPv4 or IPv6 address

There are plans to support also mail server log files sometimes in the future, but because of different formats, this would be probably done by a Perl program which parses the log file and a (cached) 'ip6calc' call with action 'anonymize'.


11.3. Supported options

$ ipv6loganon -h
ipv6loganon: version 0.97.0 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
(P) & (C) 2007-2014 by Peter Bieringer <pb (at) bieringer.de>

This program anonymizes IPv4/IPv6 addresses in e.g. HTTP server log files

  [-d|--debug <debug value>] : debug value (bitwise like)
                                can also be set by IPV6CALC_DEBUG environment value
  [-v|--version [-v [-v]]]   : version information (2 optional verbose levels)
  [-h|--help|-?]             : this online help

  [--db-ip2location-disable        ] : IP2Location support disabled
  [--db-ip2location-dir <directory>] : IP2Location database directory (default: /usr/share/IP2Location)
  [--db-ip2location-lib <file>]      : IP2Location library file (default: libIP2Location.so)

  [--db-geoip-disable              ] : GeoIP support disabled
  [--db-geoip-dir       <directory>] : GeoIP database directory (default: /usr/share/GeoIP)
  [--db-geoip-lib       <file>]      : GeoIP library file (default: libGeoIP.so.1)

  [-w|--write]               : write output to file instead of stdout
  [-a|--append]              : append output to file instead of stdout
  [-f|--flush]               : flush output after each line
  [-V|--verbose]             : be verbose
  [-n|--nocache]             : disable caching
  [-c|--cachelimit <value>]  : set cache limit
                               default: 20
                               maximum: 200

  Shortcut for anonymization presets:
   --anonymize-standard (default)
   --anonymize-careful
   --anonymize-paranoid

  Supported methods [--anonymize-method METHOD]:
   anonymize : reliable anonymization, keep as much type information as possible
   zeroize   : simple zeroizing according to given masks, probably loose type information
   keep-type-asn-cc: special reliable anonymization, keep type & Autonomous System Number and CountryCode

  Available presets (shortcut names) [--anonymize-preset PRESET-NAME]:
   anonymize-standard   (as): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=anonymize
   anonymize-careful    (ac): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac=24 mask-autoadjust=yes method=anonymize
   anonymize-paranoid   (ap): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac=24 mask-autoadjust=no  method=anonymize
   zeroize-standard     (zs): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=zeroize
   zeroize-careful      (zc): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac=24 mask-autoadjust=yes method=zeroize
   zeroize-paranoid     (zp): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac=24 mask-autoadjust=no  method=zeroize
   keep-type-asn-cc     (kp): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=keep-type-asn-cc

  Custom control:
  --mask-ipv4  <bits>     : mask IPv4 address [0-32] (even if occurs in IPv6 address)
  --mask-ipv6  <bits>     : mask IPv6 prefix [0-64] (only applied to related address types)
  --mask-eui64 <bits>     : mask EUI-64 address or IPv6 interface identifier [0-64]
  --mask-mac   <bits>     : mask MAC address [0-48]
  --mask-autoadjust yes|no: autoadjust mask to keep type/vendor information regardless of less given mask

 Takes data from stdin, outputs the processed data to stdout (default)

11.4. Usage

11.4.1. Offline anonymization

$ cat /path/to/http_log | ./ipv6loganon >/path/to/http_log_anonymized

11.4.2. On-the-fly online anonymization for Apache Webserver

Note: since 0.91.1 also an module for Apache Webserver is available (see below) supporting anonymized logging

(Supported since 0.90.0)

Adjust or add (note: more than one CustomLog directive is supported by Apache) httpd.conf like following:

CustomLog "|/usr/local/bin/ipv6loganon -a -f /var/log/httpd/access_log" combined

In case of “cronolog” is used on the system, configure like this:

  • Apache version < 2.4:

CustomLog "|/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access.log-%Y%m%d" combined 

  • Apache version >= 2.4:

CustomLog "|$/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access.log-%Y%m%d" combined 

12. External database update helper scripts

The “tools” subdirectory contains helper scripts for updating external databases.


12.1. IP2Location

$ /usr/share/ipv6calc/tools/IP2Location-update.sh -h
Usage: IP2Location-update.sh [-D <dir>] [-n] [-s]
	-D <dir>	database destination directory (optional)
	-n		no action (dry-run)
	-s		skip already successfully downloaded files

	database directory: /usr/share/IP2Location (default: /usr/share/IP2Location)

	it honors externally defined environment value: IP2LOCATION_DAT_DIR

 this script will download data from ip2location.com
  into given/set database directory

 Sample databases:
  IP2LOCATION_DAT_FILES_SAMPLE=IPv4:20 IPv6:20 IPv4:24 IPv6:24

 Lite (free) databases:
  IP2LOCATION_DAT_FILES_LITE_FREE=IPv4:1 IPv6:1
 
 With authentication (requires login/password in /home/compile/.ip2location) and a valid subscription
  IP2LOCATION_DAT_FILES_LITE=
 
 Credentials must be defined in $HOME/.ip2location by
  login=IP2LOCATION-LOGIN
  password=IP2LOCATION-PASSWORD

 In addition settings from above can be overwritten by setting related variables

12.2. GeoIP

$ /usr/share/ipv6calc/tools/GeoIP-update.sh -h
Usage: GeoIP-update.sh [-D <dir>]
	-D <dir>	database directory (optional)

	database directory: /usr/share/GeoIP (default: /usr/share/GeoIP)

	it honors externally defined environment value: GEOIP_DAT_DIR

 this script will download data from geolite.maxmind.com (GeoIP)
 into given/set database directory

 GEOIP_DAT_URL_BASE=http://geolite.maxmind.com/download/geoip/database/
 GEOIP_DAT_FILES=GeoLiteCountry/GeoIP.dat.gz GeoIPv6.dat.gz GeoLiteCity.dat.gz GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz asnum/GeoIPASNum.dat.gz asnum/GeoIPASNumv6.dat.gz

12.3. DB-IP.com

$ /usr/share/ipv6calc/tools/DBIP-update.sh -h
Usage: DBIP-update.sh [-s] [-D <dir>]
	-s		skip download
	-D <dir>	database directory (optional)

	database directory: /usr/share/DBIP (default: /usr/share/DBIP)

 it honors externally defined environment value: DBIP_DAT_DIR

 this script (and its helper scripts) will download data from
 DB-IP.com (free versions) and generate Berkeley DB files for ipv6calc
 "DBIP" database support

 DBIP_DAT_URL_BASE=http://download.db-ip.com/free/
 DBIP_DAT_FILES=dbip-country-%Y-%m.csv.gz dbip-city-%Y-%m.csv.gz

12.4. External

$ /usr/share/ipv6calc/tools/ipv6calc-db-update.sh -h
Usage: ipv6calc-db-update.sh [-s] [-u] [-D <dir>]
	-s		skip download
	-u		unconditional update
	-D <dir>        database directory (optional)

	database directory: /usr/share/ipv6calc/db (default: /usr/share/ipv6calc/db)

	it honors externally defined environment value: IPV6CALC_DAT_DIR

	this script (and its helper scripts) will download data from
	registries and generate Berkeley DB files for ipv6calc
	"external" database support

13. Perl CGI wrapper program "ipv6calcweb.cgi"

Because calling C programs directly as CGI isn't really recommended (too much security troubles all the time), I wrote a small wrapper utility which calls "ipv6calc" to get information about client and server address for displaying on a web page.


13.1. Examples

A demonstration about which kind of output is possible to produce is shown at


14. Webserver log statistics helper program "ipv6logstats"

This program parses a given webserver logfile and count addresses, useful for time period statistics.

Since version 0.95.0 it has extended output, adding a date/time line and statistics by Country Code and ASN (if required databases are available).


14.1. Supported options

$ ./ipv6logstats -h
ipv6logstats: version 0.97.0 STAT_REG STAT_CC STAT_AS
(P) & (C) 2003-2014 by Peter Bieringer <pb (at) bieringer.de>

 Takes web server log data (or any other data which has IPv4/v6 address in first column)
   from stdin and print statistics table/list (depending on option) to stdout

  [-d|--debug <debug value>] : debug value (bitwise like)
                                can also be set by IPV6CALC_DEBUG environment value
  [-v|--version [-v [-v]]]   : version information (2 optional verbose levels)
  [-h|--help|-?]             : this online help

  [--db-ip2location-disable        ] : IP2Location support disabled
  [--db-ip2location-dir <directory>] : IP2Location database directory (default: /usr/share/IP2Location)
  [--db-ip2location-lib <file>]      : IP2Location library file (default: libIP2Location.so)

  [--db-geoip-disable              ] : GeoIP support disabled
  [--db-geoip-dir       <directory>] : GeoIP database directory (default: /usr/share/GeoIP)
  [--db-geoip-lib       <file>]      : GeoIP library file (default: libGeoIP.so.1)

  [-u|--unknown]             : print unknown IP addresses to stderr
  [-c|--columns]             : print statistics in columns (1)
  [-n|--noheader]            : don't print header in columns mode (1)
  [-o|--onlyheader]          : print only header in columns mode (1)
  [-p|--prefix <token>]      : print token as prefix (1)
  [-q|--quiet]               : be more quiet
  [-s|--simple]              : disable extended statistic (CountryCode/ASN)

 (1) unsupported for CountryCode & ASN statistics

14.2. Usage

There are a README and some helper scripts available in the package how to use this program and how to generate a graph using Gnuplot.


14.2.1. Line-by-line output

The example shows output version 3.0, which

$ zcat ip.bieringer.de-log.201*.gz | ipv6logstats

Header section, since output version 3.0 (>= 0.95.0) additional lines starting with '*3*' and '*DateTime' and '*UnixTime' included

*Version             3.0
*DateTime: 2013:11:03 08:57:01+0000 GMT
*UnixTime: 1383469021
*3*DB-Info: DB features: 0x0000133f
*3*DB-Info: GeoIP: features: 0x00000330
*3*DB-Info: GeoIP: info of available databases in directory: /usr/share/GeoIP (max: 31)
*3*DB-Info: GeoIP: GeoIP Country Edition            :[ 1] /usr/share/GeoIP/GeoIP.dat               (GEO-106FREE 20130903 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
*3*DB-Info: GeoIP: GeoIP ASNum Edition              :[ 9] /usr/share/GeoIP/GeoIPASNum.dat          (GEO-117 20130902 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
*3*DB-Info: GeoIP: GeoIP Country V6 Edition         :[12] /usr/share/GeoIP/GeoIPv6.dat             (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
*3*DB-Info: GeoIP: GeoIP Large Country Edition      :[17] /usr/share/GeoIP/GeoIP.dat               (GEO-106FREE 20130903 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
*3*DB-Info: GeoIP: GeoIP Large Country V6 Edition   :[18] /usr/share/GeoIP/GeoIPv6.dat             (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
*3*DB-Info: GeoIP: GeoIP ASNum V6 Edition           :[21] /usr/share/GeoIP/GeoIPASNumv6.dat        (GEO-117 20130306 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
*3*DB-Info: IP2Location: features: 0x00000300
*3*DB-Info: IP2Location: info of available databases in directory: /usr/share/IP2Location
*3*DB-Info: IP2Location: IPv4 Country               : /usr/share/IP2Location/IP-COUNTRY.BIN    (IP2L-DB20 20130411 Copyright (c) 2013 IP2Location All Rights Reserved)
*3*DB-Info: IP2Location: IPv6 Country               : /usr/share/IP2Location/IPV6-COUNTRY.BIN  (IP2L-DB1 20131025 Copyright (c) 2013 IP2Location All Rights Reserved)
*3*DB-Info: BuiltIn: features: 0x0000100f
*3*DB-Info: BuiltIn: info of available databases
*3*DB-Info: BuiltIn: ASN  : IANA/20130730
*3*DB-Info: BuiltIn: CC   : AFRINIC/20130806 APNIC/20130805 ARIN/20130805 LACNIC/20130805 RIPENCC/20130805
*3*DB-Info: BuiltIn: IPv4 : AFRINIC/20131014 APNIC/20131014 ARIN/20131014 IANA/20130520 LACNIC/20131014 RIPENCC/20131014
*3*DB-Info: BuiltIn: IPv6 : AFRINIC/20131015 APNIC/20131014 ARIN/20131014 IANA/20130215 LACNIC/20131014 RIPENCC/20131014
*3*DB-Info: BuiltIn: IEEE : IAB/20131015 OUI/20131015 OUI36/20131015

Simple statistics section

ALL                  108525
IPv4                 46233
IPv6                 62292
UNKNOWN              0
IPv4/APNIC           2397
IPv4/ARIN            3525
IPv4/RIPE            40198
IPv4/LACNIC          97
IPv4/UNKNOWN         16
IPv6/6bone           0
IPv6/IANA            0
IPv6/APNIC           129
IPv6/ARIN            839
IPv6/RIPE            61074
IPv6/LACNIC          0
IPv6/RESERVED        0
IPv6/UNKNOWN         0
IPv6/6to4/IANA       0
IPv6/6to4/APNIC      0
IPv6/6to4/ARIN       16
IPv6/6to4/RIPE       51
IPv6/6to4/LACNIC     0
IPv6/6to4/RESERVED   0
IPv6/6to4/UNKNOWN    0
IPv6/Teredo/IANA     0
IPv6/Teredo/APNIC    63
IPv6/Teredo/ARIN     0
IPv6/Teredo/RIPE     90
IPv6/Teredo/LACNIC   30
IPv6/Teredo/RESERVED 0
IPv6/Teredo/UNKNOWN  0
IPv6/NAT64/IANA      0
IPv6/NAT64/APNIC     0
IPv6/NAT64/ARIN      0
IPv6/NAT64/RIPE      0
IPv6/NAT64/LACNIC    0
IPv6/NAT64/RESERVED  0
IPv6/NAT64/UNKNOWN   0
IPv6/IID/Global      1436
IPv6/IID/Random      58198
IPv6/IID/Manual      2055
IPv6/IID/ISATAP      353
IPv6/IID/Unknown     0

External database supported output since output version 3.0 (>= 0.95.0)

  • Country Code / Proto

...
*3*CC-code-proto/DE/ALL   96450
*3*CC-code-proto/DE/IPv4  36486
*3*CC-code-proto/DE/IPv6  59964 
*3*CC-code-proto-list/DE  96450 36486 59964
...

  • Proto / Country Code (“ALL” line contains: ALL IPv4 IPv6)

...
*3*CC-proto-code/ALL/DE   96450
*3*CC-proto-code/IPv4/DE  36486
*3*CC-proto-code/IPv6/DE  59964
...
*3*CC-proto-code-list/ALL  108525 46483 62042

  • Autonomous System number / Proto

...
*3*AS-num-proto/8767/ALL   6054
*3*AS-num-proto/8767/IPv4  2705
*3*AS-num-proto/8767/IPv6  3349
*3*AS-num-proto-list/8767  6054 2705 3349
...

  • Proto / Autonomous System number (“ALL” line contains: ALL IPv4 IPv6)

...
*3*AS-proto-num/ALL/8767   6054
*3*AS-proto-num/IPv4/8767  2705
*3*AS-proto-num/IPv6/8767  3349
...
*3*AS-proto-num-list/ALL  108525 46483 62042

14.2.2. Column output

Column output does not support version 3 extension, only simple statistics with a header line:

$ zcat ip.bieringer.de-log.201*.gz | ipv6logstats -q -c 
 IPv4 IPv6 UNKNOWN IPv4/APNIC IPv4/ARIN IPv4/RIPE IPv4/LACNIC IPv4/UNKNOWN IPv6/6bone IPv6/IANA IPv6/APNIC IPv6/ARIN IPv6/RIPE IPv6/LACNIC IPv6/RESERVED IPv6/UNKNOWN IPv6/6to4/IANA IPv6/6to4/APNIC IPv6/6to4/ARIN IPv6/6to4/RIPE IPv6/6to4/LACNIC IPv6/6to4/RESERVED IPv6/6to4/UNKNOWN IPv6/Teredo/IANA IPv6/Teredo/APNIC IPv6/Teredo/ARIN IPv6/Teredo/RIPE IPv6/Teredo/LACNIC IPv6/Teredo/RESERVED IPv6/Teredo/UNKNOWN IPv6/NAT64/IANA IPv6/NAT64/APNIC IPv6/NAT64/ARIN IPv6/NAT64/RIPE IPv6/NAT64/LACNIC IPv6/NAT64/RESERVED IPv6/NAT64/UNKNOWN IPv6/IID/Global IPv6/IID/Random IPv6/IID/Manual IPv6/IID/ISATAP IPv6/IID/Unknown
 46233 62292 0 2397 3525 40198 97 16 0 0 129 839 61074 0 0 0 0 0 16 51 0 0 0 0 63 0 90 30 0 0 0 0 0 0 0 0 0 1436 58198 2055 353 0

An optional prefix token can be given (“-p <prefix>”) to create e.g. in a for-loop one line per month and put month in front of statistics, also the header line can be suppressed (“-n”).

$ zcat ip.bieringer.de-log.201*.gz | ipv6logstats -q -c -n -p ALL
ALL  46233 62292 0 2397 3525 40198 97 16 0 0 129 839 61074 0 0 0 0 0 16 51 0 0 0 0 63 0 90 30 0 0 0 0 0 0 0 0 0 1436 58198 2055 353 0 

14.3. Examples

A demonstration with real data is available at http://mirrors.bieringer.de/stats/timeline.html.


15. Apache web server module “mod_ipv6calc”

This Apache web server module (since version 0.99.1, released 2015) interfaces with internal ipv6calc library to support

  • Client IP address anonymization “on-the-fly”, exported to IPV6CALC_CLIENT_IP_ANON

    • depending on the configured anonymization method 3rd party database is required

  • Country code of client IP address, exported to IPV6CALC_CLIENT_COUNTRYCODE

    • requires 3rd party database: GeoIP or IP2Location or DB-IP.com

  • Autonomous System Number (ASN) of client IP address, exported to IPV6CALC_CLIENT_ASN

    • requires 3rd party database: GeoIP

  • Registry of client IP address, exported to IPV6CALC_CLIENT_REGISTRY

    • requires internal or “external” database

  • Configured IP address anonymization method, exported to IPV6CALC_ANON_METHOD


15.1. Installation

Install compiled Apache module “mod_ipv6calc” to Apache's module directory

Install included default configuration file “ipv6calc.conf” to Apache's config directory (usually conf.d)


15.2. Configuration

Enable in “ipv6calc.conf” loading of module

LoadModule ipv6calc_module modules/mod_ipv6calc.so

Enable module itself

ipv6calcEnable                         on

Adjust configuration settings, if needed (see examples in “ipv6calc.conf”)

Review predefined log format

LogFormat "%{IPV6CALC_CLIENT_IP_ANON}e \"%{IPV6CALC_CLIENT_COUNTRYCODE}e/%{IPV6CALC_CLIENT_ASN}e/%{IPV6CALC_CLIENT_REGISTRY}e/%{IPV6CALC_ANON_METHOD}e\" %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_anon

Enable custom log with anonymized information, using the predefined LogFormat

CustomLog logs/access_anon_log combined_anon

Restart Apache web server, check error_log for any issues


15.3. Result

The new log file contains anonymized requests like

252.176.92.172 "CN/23724/APNIC/keep-type-asn-cc" - [25/Jul/2015:13:20:25 +0200] "GET / HTTP/1.1" 200 3569 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"

a909:390a:909a:81d9:a909:4291:c02d:5d1d "CZ/43037/RIPENCC/keep-type-asn-cc" - [25/Jul/2015:12:59:00 +0200] "GET /robots.txt HTTP/1.1" 200 33 "-" "Mozilla/5.0 (compatible; SeznamBot/3.2; +http://fulltext.sblog.cz/)" 

15.4. Post-analysis in case of anonymization method “keep-type-asn-cc”

In case “keep-type-asn-cc” is configured and also working (required databases are available), related information of anonymized IP addresses can be retrieved using “ipv6calc” or “ipv6logstats”.

$ ipv6calc -q -m -i 252.176.92.172
IPV4=252.176.92.172
IPV4_TYPE=unicast,anonymized,global
IPV4_AS_NUM=23724
IPV4_COUNTRYCODE=CN
IPV4_REGISTRY=APNIC 
...

$ ipv6calc -q -m -i a909:390a:909a:81d9:a909:4291:c02d:5d1d
IPV6=a909:390a:909a:81d9:a909:4291:c02d:5d1d
IPV6_TYPE=unicast,anonymized-iid,anonymized-prefix,global-unicast,productive,iid,iid-local
IPV6_COUNTRYCODE=CZ
IPV6_AS_NUM=43037
IPV6_REGISTRY=RIPENCC
...

16. History

Major extensions/changes are listed here


16.1. 2017

  • add support for LISP detection

  • add support for non-free versions DB-IP.com databases

  • finally release 1.0.0 after 16 year of development


16.2. 2016

  • implement action 'test' and extend action 'filter' with support of address ranges (>= 0.99.2)


16.3. 2015

  • Introduce mod_ipv6calc for Apache web server (>= 0.99.1)

  • Add support for DB-IP.com databases (by generated Berkeley DB files) (>= 0.98.0)

  • Add support for “External” database files (generated Berkeley DB files), superseeding (if newer) built-in IPv4/IPv6->Registry and adding IPv4/IPv6->CountryCode support (>= 0.98.0)

  • Extend filter options with support of CountryCode, ASN or Registry (>= 0.99.0)

  • Add support for IP2Location LITE databases (>= 0.99.0), add configurable IP2Location database autoselection support


16.4. 2014

  • Shared library mode supported (reduces size of binaries)


16.5. 2013

  • Prefix and IID anonymization methods

  • Support of dynamic load of GeoIP and IP2Location libraries

  • Specifying dedicated GeoIP and IP2Location database files is now replaced by specifying dedicated database directories to make especially for GeoIP use of more database files.


16.6. 2011

  • ipv6calc/ipv6calcweb.cgi: enable included GeoIP support with IPv6 (usable with GeoIP >= 1.4.5)

  • ipv6calc: extend for 6rd support (--action 6rd_local_prefix --6rd_prefix <PREFIX> --6rd_relay_prefix <RELAY_PREFIX>)

  • ipv6calc: enable stdin support for bulk transformation

  • ipv6calc: add support for NAT64 address type

  • ipv6calc: add option “forceprefix <LENGTH>” to print prefix of an address without a given prefix length

  • ipv6loganon: extend for pipe usage (e.g. in Apache log file directive) and write/append to specified file

  • General: add configure options to disable built-in databases (reduce binary size a lot, e.g. for embedded devices)


16.8. 2001

  • Start of development

ipv6calc-1.0.0/doc/ipv6calc.lyx000066400000000000000000003767031312366535500162620ustar00rootroot00000000000000#LyX 2.2 created this file. For more info see http://www.lyx.org/ \lyxformat 508 \begin_document \begin_header \save_transient_properties true \origin unavailable \textclass docbook \use_default_options false \maintain_unincluded_children false \language english \language_package default \inputencoding auto \fontencoding global \font_roman "default" "default" \font_sans "default" "default" \font_typewriter "default" "default" \font_math "auto" "auto" \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 100 \font_tt_scale 100 100 \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry false \use_package amsmath 1 \use_package amssymb 1 \use_package cancel 1 \use_package esint 0 \use_package mathdots 1 \use_package mathtools 1 \use_package mhchem 1 \use_package stackrel 1 \use_package stmaryrd 1 \use_package undertilde 1 \cite_engine basic \cite_engine_type default \biblio_style plain \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \justification true \use_refstyle 0 \index Index \shortcut idx \color #008000 \end_index \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \paragraph_indentation default \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \end_header \begin_body \begin_layout Title The ipv6calc Homepage \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Plain Layout PeterBieringerpb at bieringer dot de \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Plain Layout \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Plain Layout 7.0 2017-06-25 PB< /authorinitials> \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status collapsed \begin_layout Plain Layout \end_layout \end_inset \end_layout \begin_layout Section General \end_layout \begin_layout Standard ipv6calc is a small utility written in programming language C to manipulate (not only) IPv6 addresses and is able to do other tricky things. Intentions were convering a given IPv6 address into compressed format, convering a given IPv6 address into the same format like shown in \shape italic /proc/net/if_inet6 \shape default and (because it was not difficulty) migrating the Perl program \shape italic ip6_int \shape default into. Now only one utiltity is needed to do a lot. \end_layout \begin_layout Standard This utility was also used in the past to extend features on network-functions-i pv6 library, used by initscripts-ipv6. \end_layout \begin_layout Standard Note: this tool got also its \begin_inset CommandInset href LatexCommand href name "freecode.com (former freshmeat, now also EOL) / ipv6calc" target "http://freecode.com/projects/ipv6calc/" \end_inset page (but this is not maintained by the author) \end_layout \begin_layout Subsection Latest version \end_layout \begin_layout Standard Latest version since last update of this page is 1.0.0 \end_layout \begin_layout Subsection Included programs \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset ipv6calc \begin_inset Quotes erd \end_inset : the main utility \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset ipv6calcweb \begin_inset Quotes erd \end_inset : CGI wrapper for ipv6calc's address information output \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset ipv6logconv \begin_inset Quotes erd \end_inset : log converter (IPv4/IPv6) \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset ipv6loganon \begin_inset Quotes erd \end_inset : log anonymizer (IPv4/IPv6) \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset ipv6logstats \begin_inset Quotes erd \end_inset : log statistic generator (IPv4/IPv6) \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset mod_ipv6calc \begin_inset Quotes erd \end_inset : Apache module \end_layout \begin_layout Subsection Included databases \end_layout \begin_layout Standard If not disabled during compiling of the tool, following databases are statically included, since version 0.95.0 internally mentioned as \begin_inset Quotes eld \end_inset BuiltIn \begin_inset Quotes erd \end_inset : \end_layout \begin_layout Itemize IEEE IAB, OUI, OUI-36 databases (for decoding vendor part of MAC/EUI-48/EUI-64) \end_layout \begin_layout Itemize IPv4 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv4 anonymization) \end_layout \begin_layout Itemize IPv6 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv6 anonymization) \end_layout \begin_layout Itemize ASN assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for IPv4/IPv6 anonymization) \end_layout \begin_layout Itemize LISP assignment database for supplying extra info \end_layout \begin_layout Subsection Possible external databases \end_layout \begin_layout Standard If enabled during compiling the tool, following external (but local stored) databases can be used \end_layout \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "GeoIP" target "http://www.maxmind.com/" \end_inset \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize IPv4 (since 0.61.0, released 2006) \end_layout \begin_layout Itemize IPv6 (since 0.90.0, released 2011, req. GeoIP >= 1.4.5) \end_layout \begin_layout Itemize release 0.99.0 is tested against GeoIP >= 1.4.4 \end_layout \end_deeper \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "IP2Location" target "http://www.ip2.location.com/" \end_inset \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize IPv4 (since 0.60.0, released 2006) \end_layout \begin_layout Itemize IPv6 (since 0.70.0, released 2007, \begin_inset CommandInset href LatexCommand href name "IP2Location LITE IPv6 Databases" target "http://lite.ip2location.com/" \end_inset since 0.99.0, released 2015) \end_layout \begin_layout Itemize release 0.99.0 is tested against IP2Location >= 4.0.2 \end_layout \end_deeper \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "DB-IP.com" target "http://www.db-ip.com/" \end_inset (since 0.98.0, released 2015), based on local Berkeley DB files generated from downloaded CSV files \end_layout \begin_layout Itemize \begin_inset Quotes eld \end_inset External \begin_inset Quotes erd \end_inset (since 0.98.0, released 2015), based on local Berkeley DB files, generated from downloaded TXT/XML files (registries assignment databases). Supporting IPv4/IPv6 to Registries and IPv4/IPv6 to CountryCode. If newer, overruling the related included databases. \end_layout \begin_layout Standard Since version 0.95.0 the tool can be compiled to use dynamically loading of library, means the binaries can be also used on systems where IP2Location or GeoIP libraries are not existing. On such system, the support is simply disabled then and some capabilities/featu res which requires the databases are disabled. \end_layout \begin_layout Standard Since version 0.97.4 also fallback code for GeoIP and IP2Location is included in the source package, means that support of dynamically loading of library can be included during compilation without having related development sources on the system. \end_layout \begin_layout Section License \end_layout \begin_layout Standard The program is published under the GNU GPL version 2. \end_layout \begin_layout Section Copyright \end_layout \begin_layout Standard (C) 2001 - 2017 by Dr. Peter Bieringer \end_layout \begin_layout Section Author \end_layout \begin_layout Standard The author of ipv6calc is \end_layout \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "Dr. Peter Bieringer" target "mailto:pb@bieringer.de" \end_inset with some minor contribution by others \end_layout \begin_layout Section Where to get sources or binaries \end_layout \begin_layout Subsection Latest version of sources \end_layout \begin_layout Itemize Via GitHub (since 2016-09-05) at \begin_inset CommandInset href LatexCommand href name "GitHub / ipv6calc" target "https://github.com/pbiering/ipv6calc" \end_inset \end_layout \begin_layout Subsection Releases \end_layout \begin_layout Subsubsection as tar.gz or zip \end_layout \begin_layout Itemize via HTTPS at \begin_inset CommandInset href LatexCommand href name "GitHub / ipv6calc / releases" target "https://github.com/pbiering/ipv6calc/releases" \end_inset \end_layout \begin_layout Subsubsection as tar.gz (signed) \end_layout \begin_layout Itemize Via FTP at \begin_inset CommandInset href LatexCommand href name "DeepSpace6" target "http://www.deepspace6.net/" \end_inset : \begin_inset CommandInset href LatexCommand href name "DeepSpace6 / anonymous FTP" target "ftp://ftp.deepspace6.net/pub/ds6/sources/ipv6calc/" \end_inset \end_layout \begin_layout Itemize Via FTP at \begin_inset CommandInset href LatexCommand href name "ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/" target "ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/" \end_inset \end_layout \begin_layout Standard Since version 0.95.0 packages are signed with new GPG key, also available here: \begin_inset CommandInset href LatexCommand href name "CODE-GPG-KEY-bieringer.de-2013 @ftp.bieringer.de" target "ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/CODE-GPG-KEY-bieringer.de-2013" \end_inset or \begin_inset CommandInset href LatexCommand href name "CODE-GPG-KEY-bieringer.de-2013 @ftp.deepspace6.net" target "ftp://ftp.deepspace6.net/pub/ds6/sources/ipv6calc/CODE-GPG-KEY-bieringer.de-2013" \end_inset \end_layout \begin_layout Code Key fingerprint: AAB3 8CB7 97C7 50C7 78C6 08C6 DDEB 141D F738 0F61 \end_layout \begin_layout Code uid: Peter Bieringer (Code Signing Key 2013) \end_layout \begin_layout Standard A SPEC file is included, so you can build a RPM from tar.gz using \end_layout \begin_layout Code $ rpmbuild -ta path/to/ipv6calc-$version.tar.gz \end_layout \begin_layout Standard In addition, conditional build options are available (see related configure options below): \end_layout \begin_layout Code --without geoip \end_layout \begin_layout Code --without ip2location \end_layout \begin_layout Code --without dbip \end_layout \begin_layout Code --without external \end_layout \begin_layout Code --without shared \end_layout \begin_layout Code --without mod_ipv6calc \end_layout \begin_layout Subsubsection as RPM \end_layout \begin_layout Standard Currently only on \begin_inset CommandInset href LatexCommand href name "rpmfind / ipv6calc" target "http://www.rpmfind.net/linux/rpm2html/search.php?query=ipv6calc" \end_inset , but there are plans to publish at least source RPMS on \begin_inset CommandInset href LatexCommand href name "DeepSpace6" target "http://www.deepspace6.net/" \end_inset some day. \end_layout \begin_layout Subsection Ready to use packages for several operating systems: \end_layout \begin_layout Subsubsection Fedora Linux \end_layout \begin_layout Standard Fedora 22 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default. \end_layout \begin_layout Standard See also \begin_inset CommandInset href LatexCommand href name "FedoraProject / Package / ipv6calc" target "https://admin.fedoraproject.org/pkgdb/package/ipv6calc/" \end_inset \end_layout \begin_layout Subsubsection Red Hat Enterprise Linux and clones \end_layout \begin_layout Standard It's tested by the developer that creation of the RPM is working fine starting with RHEL 4. \end_layout \begin_layout Itemize RHEL/CentOS 5 has the package included by default (but an rather old version) \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize RPMs of newer releases are available as test builds on koji, see related URL in announcements \begin_inset CommandInset href LatexCommand href name "ipv6calc-announce / list archive" target "https://lists.deepspace6.net/pipermail/ipv6calc-announce/" \end_inset \end_layout \end_deeper \begin_layout Itemize RHEL/CentOS 6/7: available since September 2014 on \begin_inset CommandInset href LatexCommand href name "FedoraProject / EPEL" target "https://fedoraproject.org/wiki/EPEL" \end_inset , see also \begin_inset CommandInset href LatexCommand href name "FedoraProject / Package / ipv6calc" target "https://admin.fedoraproject.org/pkgdb/package/ipv6calc/" \end_inset \end_layout \begin_layout Standard CentOS 6/7 are also platforms for regression tests. \end_layout \begin_layout Subsubsection Gentoo/Funtoo \end_layout \begin_layout Standard Package is maintained, nevertheless, Funtoo is used as platform for regression tests. \end_layout \begin_layout Subsubsection Ubuntu \end_layout \begin_layout Standard Package is maintained, more information can be found at \begin_inset CommandInset href LatexCommand href name "https://packages.ubuntu.com/ipv6calc" target "https://packages.ubuntu.com/ipv6calc" \end_inset \end_layout \begin_layout Subsubsection Debian GNU/Linux \end_layout \begin_layout Standard Package is maintained, more information can be found at \begin_inset CommandInset href LatexCommand href name "http://packages.debian.org/ipv6calc" target "http://packages.debian.org/ipv6calc" \end_inset \end_layout \begin_layout Subsubsection openSUSE \end_layout \begin_layout Standard Package is maintained, more information can be found at \begin_inset CommandInset href LatexCommand href name "http://download.opensuse.org/repositories/home:/uebelhacker/" target "http://download.opensuse.org/repositories/home:/uebelhacker/" \end_inset \end_layout \begin_layout Subsubsection NetBSD \end_layout \begin_layout Standard See here for more: \begin_inset CommandInset href LatexCommand href name "ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/ipv6calc/README.html" target "ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/ipv6calc/README.html" \end_inset \end_layout \begin_layout Subsubsection FreeBSD \end_layout \begin_layout Standard See here for more: \begin_inset CommandInset href LatexCommand href name "http://www.freshports.org/net-mgmt/ipv6calc/" target "http://www.freshports.org/net-mgmt/ipv6calc/" \end_inset ( \begin_inset CommandInset href LatexCommand href name "http://www.freebsd.org/cgi/query-pr.cgi?pr=34441" target "http://www.freebsd.org/cgi/query-pr.cgi?pr=34441" \end_inset ) \end_layout \begin_layout Subsubsection OpenBSD \end_layout \begin_layout Standard See here for more: \begin_inset CommandInset href LatexCommand href name "http://www.openbsd.org/cgi-bin/cvsweb/ports/net/ipv6calc/" target "http://www.openbsd.org/cgi-bin/cvsweb/ports/net/ipv6calc/" \end_inset \end_layout \begin_layout Section Configuring & Compiling \end_layout \begin_layout Subsection Configuring \end_layout \begin_layout Standard Following \begin_inset Quotes eld \end_inset ipc6calc \begin_inset Quotes erd \end_inset related configure options are currently supported (note: disabling the internal databases reduces the size of the resulting binaries/shared library a lot): \end_layout \begin_layout Code --disable-dynamic-load Disable dynamic load of libraries (default: enabled) \end_layout \begin_layout Code \end_layout \begin_layout Code --disable-db-ieee Disable build-in IEEE database (default: enabled) \end_layout \begin_layout Code --disable-db-ipv4 Disable build-in IPv4 database (default: enabled) \end_layout \begin_layout Code --disable-db-ipv6 Disable build-in IPv6 database (default: enabled) \end_layout \begin_layout Code --disable-db-as-registry Disable built-in AS-to-Registry database (default: enabled) \end_layout \begin_layout Code --disable-db-cc-registry Disable built-in CountryCode-to-Registry database (default: enabled) \end_layout \begin_layout Code \end_layout \begin_layout Code --enable-dbip Enable db-ip.com support (default: disabled) \end_layout \begin_layout Code --enable-external Enable external db support (default: disabled) \end_layout \begin_layout Code --enable-ip2location Enable IP2Location support (default: disabled) \end_layout \begin_layout Code --enable-geoip Enable GeoIP support (default: disabled) \end_layout \begin_layout Code --enable-mod_ipv6calc Enable build of mod_ipv6calc for Apache (default: disabled) \end_layout \begin_layout Code \end_layout \begin_layout Code --with-ip2location-headers=DIR IP2Location include files location \end_layout \begin_layout Code --with-ip2location-headers-fallback IP2Location include files from internal fallback location \end_layout \begin_layout Code (only usable with dynamic load option) \end_layout \begin_layout Code --with-ip2location-lib=FILE IP2Location library location \end_layout \begin_layout Code --with-ip2location-static Explicitly link IP2Location statically (default=no) \end_layout \begin_layout Code --with-ip2location-dynamic Enable use of dynamic loading of IP2Location library (default=no) \end_layout \begin_layout Code --with-ip2location-db=DIR Use specified IP2Location database directory , default: /usr/share/IP2Location \end_layout \begin_layout Code --with-ip2location-dyn-lib=NAME Use specified IP2Location dynamic library, default: libIP2Location.so \end_layout \begin_layout Code \end_layout \begin_layout Code --with-geoip-headers=DIR GeoIP include files location \end_layout \begin_layout Code --with-geoip-headers-fallback GeoIP include files from internal fallback location \end_layout \begin_layout Code (only usable with dynamic load option) \end_layout \begin_layout Code --with-geoip-lib=DIR GeoIP library location \end_layout \begin_layout Code --with-geoip-static Explicitly link GeoIP statically (default=no) \end_layout \begin_layout Code --with-geoip-dynamic Enable use of dynamic loading of GeoIP library (default=no) \end_layout \begin_layout Code --with-geoip-db=DIR Use specified GeoIP database directory, default: /usr/share/GeoIP \end_layout \begin_layout Code --with-geoip-dyn-lib=NAME Use specified GeoIP dynamic library, default: libGeoIP.so.1 \end_layout \begin_layout Code --with-geoip-ipv6-compat Use IPv6 interface of GeoIP in compatibility mode (supporting 1.4.5) \end_layout \begin_layout Code \end_layout \begin_layout Code --with-dbip-db=DIR Use specified db-ip.com database directory, default: \end_layout \begin_layout Code /usr/share/DBIP \end_layout \begin_layout Code \end_layout \begin_layout Code --with-external-db=DIR Use specified external database directory, default: \end_layout \begin_layout Code /usr/share/ipv6calc/db \end_layout \begin_layout Code \end_layout \begin_layout Code --with-apxs=NAME name of the apxs executable (apxs) \end_layout \begin_layout Code \end_layout \begin_layout Code --enable-shared Enable shared library build (default: disabled) \end_layout \begin_layout Code \end_layout \begin_layout Code --enable-bundled-getopt Enable bundled getopt library (default: autoselected) \end_layout \begin_layout Code --enable-bundled-md5 Enable bundled MD5 library (default: autoselecte d) \end_layout \begin_layout Subsection Compiling \end_layout \begin_layout Standard As usual, use \end_layout \begin_layout Code $ make \end_layout \begin_layout Standard and run tests afterwards using \end_layout \begin_layout Code $ make test \end_layout \begin_layout Standard or at least (e.g. if external databases are not available) \end_layout \begin_layout Code $ make test-minimal \end_layout \begin_layout Subsection Configuring & Compiling with Presets \end_layout \begin_layout Standard A shell script is included which can configure and compile with standard presets (also used during regression tests): \end_layout \begin_layout Code $ ./autogen.sh -h \end_layout \begin_layout Code Supported options: \end_layout \begin_layout Code -?|-h|--help : this help \end_layout \begin_layout Code -n|--no-make : stop before running 'make' \end_layout \begin_layout Code -a|--all : enable GeoIP/IP2Location/db-ip.com/External/mod_ipv6calc support \end_layout \begin_layout Code -g|--geoip : enable GeoIP support \end_layout \begin_layout Code --geoip-dyn|-G : switch to dynamic library loading of GeoIP \end_layout \begin_layout Code -i|--ip2location : enable IP2Location support \end_layout \begin_layout Code --ip2location-dyn|-I: switch to dynamic library loading of IP2Location \end_layout \begin_layout Code -d|--dbip : enable db-ip.com support \end_layout \begin_layout Code -e|--external : enable external database support \end_layout \begin_layout Code --disable-db-ieee : disable built-in IEEE database \end_layout \begin_layout Code --disable-db-ipv4 : disable built-in IPv4 database \end_layout \begin_layout Code --disable-db-ipv6 : disable built-in IPv6 database \end_layout \begin_layout Code --geoip-ipv6-compat : enable GeoIP IPv6 compatibility mode \end_layout \begin_layout Code -S : enable shared library mode \end_layout \begin_layout Code -no-static-build : skip static build \end_layout \begin_layout Code --no-test : skip 'make test' \end_layout \begin_layout Section Mailling Lists \end_layout \begin_layout Subsection ipv6calc-announce \end_layout \begin_layout Description Reason: sending announcements of new versions \end_layout \begin_layout Description Traffic: very low \end_layout \begin_layout Description Postings: only moderators are allowed to post \end_layout \begin_layout Description Information: \begin_inset CommandInset href LatexCommand href name "DeepSpace6 / maillist ipv6calc-announce" target "http://lists.deepspace6.net/listinfo/ipv6calc-announce" \end_inset \end_layout \begin_layout Subsection ipv6calc \end_layout \begin_layout Description Reason: discussions \end_layout \begin_layout Description Traffic: low \end_layout \begin_layout Description Postings: subscribers \end_layout \begin_layout Description Information: \begin_inset CommandInset href LatexCommand href name "DeepSpace6 / maillist ipv6calc" target "http://lists.deepspace6.net/listinfo/ipv6calc" \end_inset \end_layout \begin_layout Section Bug Reports \end_layout \begin_layout Standard You can send bug reports to the author himself or subscribe to maillist \begin_inset Quotes eld \end_inset ipv6calc \begin_inset Quotes erd \end_inset and send it to the list. \end_layout \begin_layout Section Features of ipv6calc \end_layout \begin_layout Subsection Description \end_layout \begin_layout Standard The main program named \begin_inset Quotes eld \end_inset ipv6calc \begin_inset Quotes erd \end_inset is able to recognize many (not only) IPv6 address formats and depending on a selectable action (not required) a selectable output format can be specified. Also it has the capability to show detailed information of an IPv4/IPv6 address or anonymize it. \end_layout \begin_layout Subsection List of built-in features \end_layout \begin_layout Standard Option \begin_inset Quotes eld \end_inset -v \begin_inset Quotes erd \end_inset shows built-in features, depending on configuration before compiling: \end_layout \begin_layout Code $ ipv6calc -v \end_layout \begin_layout Code ipv6calc: version 0.99.3 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE DB_IPV4_INFO DB_IPV6_INFO ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Standard Option \begin_inset Quotes eld \end_inset -v -v \begin_inset Quotes erd \end_inset (since 0.91.0) shows built-in features and capabilities in detail, depending on configuration before compiling: \end_layout \begin_layout Code $ ipv6calc -vv \end_layout \begin_layout Code ipv6calc: version 0.99.3.rc1 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_RE GION DB_IPV6_REGION DB_CC_REG DB_IEEE DB_IPV4_INFO DB_IPV6_INFO ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code Capabilities: GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG(BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(BuiltIn) \end_layout \begin_layout Code Internal main library version: 0.99.3 API: 0.99.3 (built-in) \end_layout \begin_layout Code Internal database library version: 0.99.3 API: 0.99.3 (built-in) \end_layout \begin_layout Code Compiled: Feb 26 2017 11:04:37 \end_layout \begin_layout Code GeoIP support enabled, compiled with IPv4 & IPv6 support \end_layout \begin_layout Code GeoIP dynamic library version (on this system): 1.6.9 \end_layout \begin_layout Code GeoIP available databases: Country4=1 Country6=1 ASN4=1 ASN6=1 City4=1 City6=1 \end_layout \begin_layout Code IP2Location support enabled, compiled with API version: 8.0.4, dynamically linked with version: 8.0.4 API=8.0.4 Major=8 \end_layout \begin_layout Code IP2Location available databases: Country4=1 Country6=1 ASN4=0 ASN6=0 City4=1 City6=1 \end_layout \begin_layout Code BuiltIn databases available: ASN_REG=1 IPV4_REG=1 IPV6_REG=1 IEEE=1 CC_REG=1 \end_layout \begin_layout Code DB features: 0xff01ffff \end_layout \begin_layout Code GeoIP: features available/implemented: 0x03003ff0/0x03003ff0 (100%) \end_layout \begin_layout Code GeoIP: info of available databases in directory: /usr/share/GeoIP (max: 31) \end_layout \begin_layout Code GeoIP: GeoIP Country Edition :[ 1] GeoIP.dat (GEO-106FREE 20161004 Build 1 Copy) \end_layout \begin_layout Code GeoIP: GeoIP City Edition, Rev 1 :[ 2] GeoIPCity.dat (GEO-533LITE 20161004 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Re) \end_layout \begin_layout Code GeoIP: GeoIP ASNum Edition :[ 9] GeoIPASNum.dat (GEO-117 20161002 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Re) \end_layout \begin_layout Code GeoIP: GeoIP Country V6 Edition :[12] GeoIPv6.dat (GEO-106FREE 20161004 Build 1 C) \end_layout \begin_layout Code GeoIP: GeoIP ASNum V6 Edition :[21] GeoIPASNumv6.dat (GEO-117 20160911 Build 1 Copyright (c) 2016 MaxMind Inc All Rights) \end_layout \begin_layout Code GeoIP: GeoIP City Edition V6, Rev 1 :[30] GeoIPCityv6.dat (GEO-536LITE 20161004 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Reser) \end_layout \begin_layout Code IP2Location: features available/implemented: 0x0c003fc0/0x0c003fc0 (100%) \end_layout \begin_layout Code IP2Location: info of available databases in directory: /usr/share/IP2Location \end_layout \begin_layout Code IP2Location: Copyright (c) IP2Location All Rights Reserved \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo :[ 68] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEAT HER-MOBILE-SAMPLE.BIN (IP2L-DB20 IPv4 SAMPLE 20160604) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El/Us:[ 72] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEAT HER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN (IP2L-DB24 IPv4 SAMPLE 20160604) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo :[ 92] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WE ATHER-MOBILE.SAMPLE.BIN (IP2L-DB20 IPv6 SAMPLE 20160604) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El/Us:[ 96] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WE ATHER-MOBILE-ELEVATION-USAGETYPE.SAMPLE.BIN (IP2L-DB24 IPv6 SAMPLE 20160604) \end_layout \begin_layout Code IP2Location: IPv4 Country :[100] IP2LOCATION- LITE-DB1.BIN (IP2L-DB1 IPv4 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPv4 Country/Region/City :[102] IP2LOCATION- LITE-DB3.BIN (IP2L-DB3 IPv4 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPv4 Country/Region/City/LongitudeLattitude :[104] IP2LOCATION- LITE-DB5.BIN (IP2L-DB5 IPv4 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP :[106] IP2LOCATION- LITE-DB9.BIN (IP2L-DB9 IPv4 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP/TZ :[108] IP2LOCATION- LITE-DB11.BIN (IP2L-DB11 IPv4 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPvx Country :[101] IP2LOCATION- LITE-DB1.IPV6.BIN (IP2L-DB1 IPv6 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPvx Country/ISP :[103] IP2LOCATION- LITE-DB3.IPV6.BIN (IP2L-DB3 IPv6 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPvx Country/Region/City/LongitudeLattitude :[105] IP2LOCATION- LITE-DB5.IPV6.BIN (IP2L-DB5 IPv6 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPvx Co/Re/Ci/LattLong/ZIP :[107] IP2LOCATION- LITE-DB9.IPV6.BIN (IP2L-DB9 IPv6 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPvx Co/Re/Ci/LattLong/ZIP/TZ :[109] IP2LOCATION- LITE-DB11.IPV6.BIN (IP2L-DB11 IPv6 LITE 20150329) \end_layout \begin_layout Code IP2Location: IPvx Country :[ 25] IPV6-COUNTRY. BIN (IP2L-DB1 IPv6 20060918) \end_layout \begin_layout Code IP2Location: IPvx Co/Re/Ci/LattLong/ZIP/TZ :[ 35] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.BIN (IP2L-DB11 IPv6 20160928) \end_layout \begin_layout Code IP2Location: IPv6 Country :[120] IPV6-COUNTRY -FREE.BIN (IP2L-DB1 IPv6 FREE 20140723 INCOMPATIBLE) \end_layout \begin_layout Code IP2Location: detected best databases SAMPLE Country4=72 Country6=96 City4=72 City6=96 \end_layout \begin_layout Code IP2Location: detected best databases LITE Country4=109 Country6=109 City4=109 City6=109 \end_layout \begin_layout Code IP2Location: detected best databases COMM Country4=35 Country6=35 City4=35 City6=35 \end_layout \begin_layout Code IP2Location: selected best databases LI->SA* Country4=72 Country6=96 City4=72 City6=96 \end_layout \begin_layout Code IP2Location: selected best databases normal Country4=35 Country6=35 City4=35 City6=35 \end_layout \begin_layout Code IP2Location: selected best databases method: * = autoswitch from LITE to SAMPLE enabled in case not older than 12 months and having more features \end_layout \begin_layout Code IP2Location: selected best databases method: COMM older than 12 months are deselected in case of LITE is available \end_layout \begin_layout Code IP2Location: selected best databases method: COMM/LITE/SAMPLE with more features are only selected in case not older than 1 months of already found COMM/LITE/SAMPLE \end_layout \begin_layout Code IP2Location: selected best databases method: softlinks: skipped-by-default \end_layout \begin_layout Code db-ip.com: features available/implemented: 0x30003fc0/0x30003fc0 (100%) \end_layout \begin_layout Code DBIP: info of available databases in directory: /usr/share/DBIP \end_layout \begin_layout Code DBIP: IPv4 CountryCode (FREE) : ipv6calc-dbip-ipv4-country.db (DBIP-1/2016 1001, created: 20161009-090609 UTC) \end_layout \begin_layout Code DBIP: IPv6 CountryCode (FREE) : ipv6calc-dbip-ipv6-country.db (DBIP-2/2016 1001, created: 20161009-090609 UTC) \end_layout \begin_layout Code DBIP: IPv4 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv4-city.db (DBIP-3/20161001, created: 20161009-090650 UTC) \end_layout \begin_layout Code DBIP: IPv6 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv6-city.db (DBIP-4/20161001, created: 20161009-090650 UTC) \end_layout \begin_layout Code DBIP: IPv4 Location/ISP (COMM) : ipv6calc-dbip-ipv4-full.db (DBIP-9/2017 0201, created: 20170221-183104 UTC) \end_layout \begin_layout Code DBIP: IPv6 Location/ISP (COMM) : ipv6calc-dbip-ipv6-full.db (DBIP-10/201 70201, created: 20170221-183104 UTC) \end_layout \begin_layout Code DBIP: detected best databases FREE Country4=3 Country6=4 City4=3 City6=4 \end_layout \begin_layout Code DBIP: detected best databases COMM Country4=9 Country6=10 City4=9 City6=10 \end_layout \begin_layout Code DBIP: selected best databases normal Country4=9 Country6=10 City4=9 City6=10 \end_layout \begin_layout Code DBIP: selected best databases method: COMM older than 12 months are deselected in case of FREE is available \end_layout \begin_layout Code DBIP: selected best databases method: COMM/FREE with more features are only selected in case not older than 1 months of already found COMM/FREE \end_layout \begin_layout Code External: features available/implemented: 0xc00000cc/0xc00180cc (75%) \end_layout \begin_layout Code External: info of available databases in directory: /usr/share/ipv6calc/db \end_layout \begin_layout Code External: IPv4 Registry : ipv6calc-external-ipv4-registry.db (EXTDB-1/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/201 60929 RIPENCC/20160929, created: 20160930-164535 UTC) \end_layout \begin_layout Code External: IPv6 Registry : ipv6calc-external-ipv6-registry.db (EXTDB-2/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC) \end_layout \begin_layout Code External: IPv4 CountryCode : ipv6calc-external-ipv4-countrycode.db (EXTDB-3/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/201 60929 RIPENCC/20160929, created: 20160930-164535 UTC) \end_layout \begin_layout Code External: IPv6 CountryCode : ipv6calc-external-ipv6-countrycode.db (EXTDB-4/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC) \end_layout \begin_layout Code BuiltIn: features available/implemented: 0x0001c00f/0x0001c00f (100%) \end_layout \begin_layout Code BuiltIn: info of available databases \end_layout \begin_layout Code BuiltIn: ASN : IANA/20160908 \end_layout \begin_layout Code BuiltIn: CC : AFRINIC/20161224 APNIC/20161223 ARIN/20161224 LACNIC/20161223 RIPENCC/20161223 \end_layout \begin_layout Code BuiltIn: IPv4 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20150810 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170224-184411 UTC) \end_layout \begin_layout Code BuiltIn: IPv6 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20170104 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170225-075038 UTC) \end_layout \begin_layout Code BuiltIn: IEEE : IAB/20161218 OUI/20161117 OUI36/20161218 \end_layout \begin_layout Code Database selection or priorization ('->': subsequential calls) \end_layout \begin_layout Code Database priorization default: GeoIP->IP2Location->db-ip.com->External->BuiltIn \end_layout \begin_layout Code DB_AS_REG (AS-Number to Registry database): BuiltIn \end_layout \begin_layout Code DB_CC_REG (CountryCode to Registry database): BuiltIn \end_layout \begin_layout Code DB_IPV4_REG (IPv4 to Registry database): BuiltIn \end_layout \begin_layout Code DB_IPV6_REG (IPv6 to Registry database): BuiltIn \end_layout \begin_layout Code DB_IPV4_AS (IPv4 to AS database): GeoIP \end_layout \begin_layout Code DB_IPV6_AS (IPv6 to AS database): GeoIP \end_layout \begin_layout Code DB_IPV4_CC (IPv4 to CountryCode database): GeoIP->IP2Location->db-ip.com->Externa l \end_layout \begin_layout Code DB_IPV6_CC (IPv6 to CountryCode database): GeoIP->IP2Location->db-ip.com->Externa l \end_layout \begin_layout Code DB_IPV4_COUNTRY (IPv4 to Country database): GeoIP->IP2Location->db-ip.com \end_layout \begin_layout Code DB_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location->db-ip.com \end_layout \begin_layout Code DB_IPV4_CITY (IPv4 to City database): GeoIP->IP2Location->db-ip.com \end_layout \begin_layout Code DB_IPV6_CITY (IPv6 to City database): GeoIP->IP2Location->db-ip.com \end_layout \begin_layout Code DB_IPV4_REGION (IPv4 to Region database): GeoIP->IP2Location->db-ip.com \end_layout \begin_layout Code DB_IPV6_REGION (IPv6 to Region database): GeoIP->IP2Location->db-ip.com \end_layout \begin_layout Code DB_IEEE (IEEE/OUI/OUI36 Vendor database): BuiltIn \end_layout \begin_layout Code DB_IPV4_INFO (IPv4 additional information): BuiltIn \end_layout \begin_layout Code DB_IPV6_INFO (IPv6 additional information): BuiltIn \end_layout \begin_layout Standard Option \begin_inset Quotes eld \end_inset -v -h \begin_inset Quotes erd \end_inset (since 0.97.4) shows explanation of feature tokens \end_layout \begin_layout Code $ ipv6calc -v -h \end_layout \begin_layout Code ipv6calc: version 0.99.3 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE DB_IPV4_INFO DB_IPV6_INFOANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code \end_layout \begin_layout Code Explanation of available(+)/possible(-) feature tokens \end_layout \begin_layout Code GeoIP + GeoIPv4 database (provided by GeoIP) \end_layout \begin_layout Code GeoIPv6 + GeoIPv6 database (provided by GeoIP) \end_layout \begin_layout Code IP2Location + IP2Location IPv4 database (provided by IP2Location) \end_layout \begin_layout Code IP2Location6 + IP2Location IPv6 database (provided by IP2Location) \end_layout \begin_layout Code DBIPv4 + db-ip.com IPv4 database (provided by db-ip.com) \end_layout \begin_layout Code DBIPv6 + db-ip.com IPv6 database (provided by db-ip.com) \end_layout \begin_layout Code DB_AS_REG + AS-Number to Registry database (provided by BuiltIn) \end_layout \begin_layout Code DB_IPV4_REG + IPv4 to Registry database (provided by External,BuiltIn) \end_layout \begin_layout Code DB_IPV6_REG + IPv6 to Registry database (provided by External,BuiltIn) \end_layout \begin_layout Code DB_IPV4_AS + IPv4 to AS database (provided by GeoIP) \end_layout \begin_layout Code DB_IPV6_AS + IPv6 to AS database (provided by GeoIP) \end_layout \begin_layout Code DB_IPV4_CC + IPv4 to CountryCode database (provided by GeoIP,IP2Locat ion,db-ip.com,External) \end_layout \begin_layout Code DB_IPV6_CC + IPv6 to CountryCode database (provided by GeoIP,IP2Locat ion,db-ip.com,External) \end_layout \begin_layout Code DB_IPV4_COUNTRY + IPv4 to Country database (provided by GeoIP,IP2Location) \end_layout \begin_layout Code DB_IPV6_COUNTRY + IPv6 to Country database (provided by GeoIP,IP2Location) \end_layout \begin_layout Code DB_IPV4_CITY + IPv4 to City database (provided by GeoIP,IP2Location,db- ip.com) \end_layout \begin_layout Code DB_IPV6_CITY + IPv6 to City database (provided by GeoIP,IP2Location,db- ip.com) \end_layout \begin_layout Code DB_IPV4_REGION + IPv4 to Region database (provided by GeoIP,IP2Location,d b-ip.com) \end_layout \begin_layout Code DB_IPV6_REGION + IPv6 to Region database (provided by GeoIP,IP2Location,d b-ip.com) \end_layout \begin_layout Code DB_CC_REG + CountryCode to Registry database (provided by BuiltIn) \end_layout \begin_layout Code DB_IEEE + IEEE/OUI/OUI36 Vendor database (provided by BuiltIn) \end_layout \begin_layout Code DB_IPV4_INFO + IPv4 additional information (provided by External,BuiltI n) \end_layout \begin_layout Code DB_IPV6_INFO + IPv6 additional information (provided by External,BuiltI n) \end_layout \begin_layout Code ANON_ZEROISE + Anonymization method 'zeroize' \end_layout \begin_layout Code ANON_ANONYMIZE + Anonymization method 'anonymize' \end_layout \begin_layout Code ANON_KEEP-TYPE-ASN-CC + Anonymization method 'keep-type-asn-cc' \end_layout \begin_layout Standard Note: since version 0.95.0 the internal layer for database usage was abstracted and each database \begin_inset Quotes eld \end_inset plugin \begin_inset Quotes erd \end_inset is initialized reporting then its supporting features in binary representation. This makes implementation of other external databases easier in the future. There are at least plans to create an overlay to built-in databases by publishing and use some \begin_inset Quotes eld \end_inset precompiled \begin_inset Quotes erd \end_inset newer databases replacing the need of recompilation for updated built-in databases. \end_layout \begin_layout Subsection Examples \end_layout \begin_layout Subsubsection Conversion \end_layout \begin_layout Standard A simple example is the conversion of an IPv6 address to a DNS PTR query string: \end_layout \begin_layout Code $ ipv6calc --out revnibbles.arpa 2001:db8::1 \end_layout \begin_layout Code No input type specified, try autodetection...found type: ipv6addr \end_layout \begin_layout Code 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. \end_layout \begin_layout Standard Like you see, input format was autodetected. And the given example can be extended because ipv6calc also understands netmask / prefix length values: \end_layout \begin_layout Code $ ipv6calc -q --out revnibbles.arpa 2001:db8::1/64 \end_layout \begin_layout Code 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. \end_layout \begin_layout Standard Also you've also learnt now that switch '-q' (quiet) suppresses informational messages. You can use this now to start a DNS PTR query using: \end_layout \begin_layout Code $ dig PTR `./ipv6calc -q --out revnibbles.arpa 2001:db8::1/64` \end_layout \begin_layout Standard But ipv6calc can do many more for you! Next example shows you the extraction of the IPv4 address contained in a 6to4 IPv6 address: \end_layout \begin_layout Code $ ipv6calc -q --action conv6to4 --in ipv6 2002:c0a8:fb61::1 --out ipv4 \end_layout \begin_layout Code 192.168.251.97 \end_layout \begin_layout Standard This also works vice-versa: \end_layout \begin_layout Code $ ipv6calc -q --action conv6to4 --in ipv4 192.168.251.97 --out ipv6 \end_layout \begin_layout Code 2002:c0a8:fb61:: \end_layout \begin_layout Standard There are many more features already implemented, if you miss one, send a note. \end_layout \begin_layout Subsubsection Information \end_layout \begin_layout Standard Depending on available databases output can vary. \end_layout \begin_layout Paragraph Information about a simple IPv6 address: \end_layout \begin_layout Code $ ipv6calc -q -i 3ffe:ffff::210:a4ff:fe01:2345 \end_layout \begin_layout Code Address type: unicast, 6bone, global-unicast, productive \end_layout \begin_layout Code Address type has SLA: 0000 \end_layout \begin_layout Code Registry for address: reserved \end_layout \begin_layout Code Interface identifier: 0210:a4ff:fe01:2345 \end_layout \begin_layout Code EUI-48/MAC address: 00:10:a4:01:23:45 \end_layout \begin_layout Code MAC is a global unique one \end_layout \begin_layout Code MAC is an unicast one \end_layout \begin_layout Code OUI is: XIRCOM \end_layout \begin_layout Paragraph Information about a Teredo IPv6 address: \end_layout \begin_layout Code $ ipv6calc -q -i 3ffe:831f:ce49:7601:8000:efff:af4a:86BF \end_layout \begin_layout Code Address type: unicast, 6bone, global-unicast, teredo \end_layout \begin_layout Code Country Code: IT \end_layout \begin_layout Code Registry for address: 6BONE \end_layout \begin_layout Code IPv4 address: 80.181.121.64 (TEREDO-CLIENT) \end_layout \begin_layout Code IPv4 address type: unicast, global \end_layout \begin_layout Code Autonomous System Information for [80.181.121.64]: AS3269 ASN-IBSNAZ \end_layout \begin_layout Code Country Code for [80.181.121.64]: IT \end_layout \begin_layout Code ... \end_layout \begin_layout Paragraph Information about a LISP address \end_layout \begin_layout Code $ ipv6calc -q -i 153.16.26.80 \end_layout \begin_layout Code IPv4 address: 153.16.26.80 \end_layout \begin_layout Code IPv4 address type: unicast, global, lisp \end_layout \begin_layout Code ... \end_layout \begin_layout Code IPv4 registry: ARIN(LISP#cbc-xtr) \end_layout \begin_layout Code ... \end_layout \begin_layout Paragraph Machine readable output \end_layout \begin_layout Standard There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, database related information can be displayed, if databases are located on the system and supported. \end_layout \begin_layout Code $ ipv6calc -q -i -m 2a01:238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code IPV6=2a01:0238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code IPV6_ANON=a909:16fa:9091:a448:a909:4941:0000:0007 \end_layout \begin_layout Code IPV6_TYPE=unicast,global-unicast,productive,iid-random,iid,iid-local \end_layout \begin_layout Code IPV6_COUNTRYCODE=DE \end_layout \begin_layout Code IPV6_COUNTRYCODE_SOURCE=GeoIP \end_layout \begin_layout Code IPV6_AS_NUM=6724 \end_layout \begin_layout Code IPV6_AS_TEXT=AS6724 STRATO AG \end_layout \begin_layout Code IPV6_REGISTRY=RIPENCC \end_layout \begin_layout Code SLA=8800 \end_layout \begin_layout Code IID=85b3:9e6b:3019:8909 \end_layout \begin_layout Code EUI64_SCOPE=local-random \end_layout \begin_layout Code IP2LOCATION_COUNTRY_SHORT=DE \end_layout \begin_layout Code IP2LOCATION_COUNTRY_LONG=Germany \end_layout \begin_layout Code IP2LOCATION_REGION=Berlin \end_layout \begin_layout Code IP2LOCATION_CITY=Berlin \end_layout \begin_layout Code IP2LOCATION_LATITUDE=52.524368 \end_layout \begin_layout Code IP2LOCATION_LONGITUDE=13.410530 \end_layout \begin_layout Code IP2LOCATION_ZIPCODE=10178 \end_layout \begin_layout Code IP2LOCATION_TIMEZONE=+01:00 \end_layout \begin_layout Code GEOIP_AS_TEXT=AS6724 STRATO AG \end_layout \begin_layout Code GEOIP_COUNTRY_SHORT=DE \end_layout \begin_layout Code GEOIP_COUNTRY_LONG=Germany \end_layout \begin_layout Code GEOIP_LATITUDE=51.000000 \end_layout \begin_layout Code GEOIP_LONGITUDE=9.000000 \end_layout \begin_layout Code GEOIP_CONTINENTCODE=EU \end_layout \begin_layout Code DBIP_COUNTRY_SHORT=DE \end_layout \begin_layout Code DBIP_CITY=Berlin \end_layout \begin_layout Code DBIP_REGION=Berlin \end_layout \begin_layout Code EXTERNAL_COUNTRY_SHORT=DE \end_layout \begin_layout Code IP2LOCATION_DATABASE_INFO=IP2L-DB11 IPv6 LITE 20150329 Copyright (c) 2015 IP2Location All Rights Reserved / This site or product includes IP2Location LITE data available from http://lite.ip2location.com \end_layout \begin_layout Code GEOIP_DATABASE_INFO=GEO-106FREE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved / GEO-117 20150405 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved / GEO-536LITE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved \end_layout \begin_layout Code DBIP_DATABASE_INFO=DBIP-2/20150301, created: 20150304-183312 UTC / DBIP-4/201503 01, created: 20150304-183330 UTC \end_layout \begin_layout Code EXTERNAL_DATABASE_INFO=EXTDB-4/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC \end_layout \begin_layout Code BUILTIN_DATABASE_INFO=IPv6-REG:AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20150324 LACNIC/20150417 RIPENCC/20150417 \end_layout \begin_layout Code IPV6CALC_NAME=ipv6calc \end_layout \begin_layout Code IPV6CALC_VERSION=0.99.0 \end_layout \begin_layout Code IPV6CALC_COPYRIGHT="(P) & (C) 2001-2015 by Peter Bieringer " \end_layout \begin_layout Code IPV6CALC_OUTPUT_VERSION=10 \end_layout \begin_layout Code IPV6CALC_SETTINGS_ANON="set=keep-type-asn-cc,mask-ipv6=56,mask-ipv4=24,mask-eui6 4=40,mask-mac=24,method=keep-type-asn-cc" \end_layout \begin_layout Code IPV6CALC_FEATURES="GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN -CC" \end_layout \begin_layout Code IPV6CALC_CAPABILITIES="GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG (BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(B uiltIn)" \end_layout \begin_layout Paragraph* Special machine readable output options (>= 0.99.0) \end_layout \begin_layout Subparagraph Output filter by selecting a token (>= 0.99.0) \end_layout \begin_layout Standard Using option --mrst (Machine Readable Select Token) can be used to display only token \end_layout \begin_layout Code $ ipv6calc -q -i --mrst IPV6_TYPE 2a01:238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code IPV6_TYPE=unicast,global-unicast,productive,iid-random,iid,iid-local \end_layout \begin_layout Subparagraph Output filter by matching token (>= 0.99.0) \end_layout \begin_layout Standard Using option --mrmt (Machine Readable Match Token) can be used to display only matching tokens \end_layout \begin_layout Code $ ipv6calc -q -i --mrmt IP2LOCATION 2a01:238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code IP2LOCATION_COUNTRY_SHORT=DE \end_layout \begin_layout Code IP2LOCATION_COUNTRY_LONG=Germany \end_layout \begin_layout Code IP2LOCATION_REGION=Berlin \end_layout \begin_layout Code IP2LOCATION_CITY=Berlin \end_layout \begin_layout Code IP2LOCATION_LATITUDE=52.524368 \end_layout \begin_layout Code IP2LOCATION_LONGITUDE=13.410530 \end_layout \begin_layout Code IP2LOCATION_ZIPCODE=10178 \end_layout \begin_layout Code IP2LOCATION_TIMEZONE=+01:00 \end_layout \begin_layout Code IP2LOCATION_DATABASE_INFO="IP2L-DB11 IPv6 LITE 20150329 Copyright (c) 2015 IP2Location All Rights Reserved / This site or product includes IP2Location LITE data available from http://lite.ip2location.com" \end_layout \begin_layout Subparagraph Output filter by selecting a value of a token token (>= 0.99.0) \end_layout \begin_layout Standard Using option --mrtvo (Machine Readable Token Value Only) can be used to display only value of a token \end_layout \begin_layout Code $ ipv6calc -q -i --mrtvo IPV6_TYPE 2a01:238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code unicast,global-unicast,productive,iid-random,iid,iid-local \end_layout \begin_layout Subparagraph Output adjustment by unconditional quoting of values (>= 0.99.0) \end_layout \begin_layout Standard Using option --mrqva (Machine Readable Quote Values Always) can be used to quote values always \end_layout \begin_layout Code $ ipv6calc -q -i --mrqva --mrtvo IPV6_TYPE 2a01:238:423d:8800:85b3:9e6b:3019:890 9 \end_layout \begin_layout Code "unicast,global-unicast,productive,iid-random,iid,iid-local" \end_layout \begin_layout Subparagraph Output adjustment by unconditional disabling quoted values (>= 0.99.0) \end_layout \begin_layout Standard Using option --mrqvn (Machine Readable Quote Values Never) can be used to never quote values \end_layout \begin_layout Code $ ipv6calc -q -i --mrqvn --mrst IPV6_AS_TEXT 2a01:238:423d:8800:85b3:9e6b:3019:8 909 \end_layout \begin_layout Code IPV6_AS_TEXT=AS6724 STRATO AG \end_layout \begin_layout Subparagraph Output adjustment by unconditional print token in case of empty value (>= 0.99.0) \end_layout \begin_layout Standard Using option --mrstpq (Machine Readable Select Token Print Always) can be used to print always token/value regardless it's contained \end_layout \begin_layout Code $ ipv6calc -q -i --mrqva --mrstpa IPV4 2a01:238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code IPV4="" \end_layout \begin_layout Code $ ipv6calc -q -i --mrqva --mrst IPV4 2a01:238:423d:8800:85b3:9e6b:3019:8909 \end_layout \begin_layout Code (no output) \end_layout \begin_layout Subsubsection Filter mode \end_layout \begin_layout Standard \begin_inset Quotes eld \end_inset ipv6calc \begin_inset Quotes erd \end_inset can run in filter mode to be able to extract from a huge list of IPv4/IPv6 addresses ones which are interesting or ones which are not interesting (see printout of online help below). \end_layout \begin_layout Standard Filter tokens are the ones which are listed on \begin_inset Quotes eld \end_inset TYPE \begin_inset Quotes erd \end_inset lines shown in \begin_inset Quotes eld \end_inset -m -i \begin_inset Quotes erd \end_inset information mode. \end_layout \begin_layout Standard Example for searching for Teredo addresses: \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201310 | awk '{ print $1 }' | sort | uniq | ipv6calc -A filter -E teredo \end_layout \begin_layout Code 2001:0:9d38:90d7:34f7:1a26:8599:e079 \end_layout \begin_layout Standard For more information see below \end_layout \begin_layout Standard Note: since version 0.95.0 '-A filter' is optional if option '-E ' is given (autoselected action). \end_layout \begin_layout Subsubsection Test mode \end_layout \begin_layout Standard Since 0.99.2 a test mode ('-A test', autoselected in case 'test_*' options are given) is implemented for address prefix or range \end_layout \begin_layout Standard For more information see below \end_layout \begin_layout Subsection Option style \end_layout \begin_layout Standard Since version 0.40 new-style option handling was introduced, using \end_layout \begin_layout Itemize --in \end_layout \begin_layout Itemize --out \end_layout \begin_layout Itemize --action \end_layout \begin_layout Standard and many more conversions were added. A built-in check matrix should prevent misconversions. \end_layout \begin_layout Standard Up to version 0.39, only old-style options (aka \begin_inset Quotes eld \end_inset shortcut \begin_inset Quotes erd \end_inset options). They are one-in-all options, specifying input/action/output in one token. Internally this options will be converted into new-style options. \end_layout \begin_layout Subsection Online help \end_layout \begin_layout Standard Online help always shows the currently implemented features. \end_layout \begin_layout Subsubsection Main online help: \end_layout \begin_layout Standard External database options only appear if compiled with related support. \end_layout \begin_layout Code $ ipv6calc -h \end_layout \begin_layout Code ipv6calc: version 0.99.0 GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN -CC \end_layout \begin_layout Code (P) & (C) 2001-2015 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code This program formats and calculates IPv6/IPv4/MAC addresses and can do many more tricky things \end_layout \begin_layout Code \end_layout \begin_layout Code [-d|--debug ] : debug value (bitwise like) \end_layout \begin_layout Code can also be set by IPV6CALC_DEBUG environment value \end_layout \begin_layout Code [-v|--version [-v [-v]]] : version information (2 optional detail levels) \end_layout \begin_layout Code [-v|--version -h] : explanation of feature tokens \end_layout \begin_layout Code [-V|--verbose] : be more verbose \end_layout \begin_layout Code [-h|--help|-?] : this online help \end_layout \begin_layout Code \end_layout \begin_layout Code [--disable-ip2location ] : IP2Location support disabled \end_layout \begin_layout Code [--db-ip2location-disable ] : IP2Location support disabled \end_layout \begin_layout Code [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) \end_layout \begin_layout Code [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) \end_layout \begin_layout Code [--db-ip2location-only-type ]: IP2Location database only selected type (1-24) \end_layout \begin_layout Code [--db-ip2location-allow-softlinks] : IP2Location database softlinks allowed \end_layout \begin_layout Code [--db-ip2location-lite-to-sample-autoswitch-max-delta-months ]: \end_layout \begin_layout Code autoswitch from LITE to SAMPLE databases if possible and delta is not more than 12 months (0=disabled) \end_layout \begin_layout Code [--db-ip2location-comm-to-lite-switch-min-delta-months ]: \end_layout \begin_layout Code switch from COMM to LITE databases if possible and delta more than 12 months (0=disabled) \end_layout \begin_layout Code \end_layout \begin_layout Code [--disable-geoip ] : GeoIP support disabled \end_layout \begin_layout Code [--db-geoip-disable ] : GeoIP support disabled \end_layout \begin_layout Code [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) \end_layout \begin_layout Code [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) \end_layout \begin_layout Code \end_layout \begin_layout Code [--disable-dbip ] : db-ip.com support disabled \end_layout \begin_layout Code [--db-dbip-disable ] : db-ip.com support disabled \end_layout \begin_layout Code [--db-dbip-dir ] : db-ip.com database directory (default: /usr/share/DBIP) \end_layout \begin_layout Code \end_layout \begin_layout Code [--disable-external ] : External support disabled \end_layout \begin_layout Code [--db-external-disable ] : External support disabled \end_layout \begin_layout Code [--db-external-dir ] : External database directory (default: /usr/share/ipv6calc/db) \end_layout \begin_layout Code \end_layout \begin_layout Code [--disable-builtin ] : BuiltIn support disabled \end_layout \begin_layout Code [--db-builtin-disable ] : BuiltIn support disabled \end_layout \begin_layout Code \end_layout \begin_layout Code [-q|--quiet] : be more quiet (auto-enabled in pipe mode) \end_layout \begin_layout Code [-f|--flush] : flush each line in pipe mode \end_layout \begin_layout Code \end_layout \begin_layout Code Usage with new style options: \end_layout \begin_layout Code [--in|-I ] : specify input type \end_layout \begin_layout Code (default: autodetect) \end_layout \begin_layout Code [--out|-O ] : specify output type \end_layout \begin_layout Code (sometimes: autodetect) \end_layout \begin_layout Code [--action|-A ] : specify action \end_layout \begin_layout Code (default: format conversion, sometimes: autodetect) \end_layout \begin_layout Code [ ...] : specify format options \end_layout \begin_layout Code [...] : input data \end_layout \begin_layout Code \end_layout \begin_layout Code Available input types: [-m] -I|--in -?|-h|--help \end_layout \begin_layout Code Available output types: [-m] -O|--out -?|-h|--help \end_layout \begin_layout Code Available action types: [-m] -A|--action -?|-h|--help \end_layout \begin_layout Code \end_layout \begin_layout Code Other usage: \end_layout \begin_layout Code --showinfo|-i [--machine_readable|-m] : show information about input data \end_layout \begin_layout Code --showinfo|-i --mrqva : Machine Readable Quote Values Always \end_layout \begin_layout Code --showinfo|-i --mrqvn : Machine Readable Quote Values Never \end_layout \begin_layout Code --showinfo|-i --mrst : Machine Readable Select Token \end_layout \begin_layout Code --showinfo|-i --mrstpa : Machine Readable Select Token Print Always \end_layout \begin_layout Code --showinfo|-i --mrmt : Machine Readable Match Token Prefix \end_layout \begin_layout Code --showinfo|-i --mrtvo : Machine Readable Token Value Only \end_layout \begin_layout Code --showinfo|-i --show-tokens : show available tokens (aka types) on '-m' \end_layout \begin_layout Code \end_layout \begin_layout Code Usage with shortcut options: [ ...] \end_layout \begin_layout Code for more information and available format options use: -?|-h|--help \end_layout \begin_layout Code \end_layout \begin_layout Code -r|--addr2ip6_int (-O revnibbles.int) \end_layout \begin_layout Code -r|--addr_to_ip6int (-O revnibbles.int) \end_layout \begin_layout Code -a|--addr2ip6_arpa (-O revnibbles.arpa) \end_layout \begin_layout Code -a|--addr_to_ip6arpa (-O revnibbles.arpa) \end_layout \begin_layout Code -b|--addr_to_bitstring (-O bitstring) \end_layout \begin_layout Code --addr2compaddr (--printcompressed) \end_layout \begin_layout Code --addr_to_compressed (--printcompressed) \end_layout \begin_layout Code --addr2uncompaddr (--printuncompressed) \end_layout \begin_layout Code --addr_to_uncompressed (--printuncompressed) \end_layout \begin_layout Code --addr_to_base85 (-I ipv6addr -O base85) \end_layout \begin_layout Code --base85_to_addr (-I base85 -O ipv6addr) \end_layout \begin_layout Code --mac_to_eui64 (-I mac -O eui64) \end_layout \begin_layout Code --addr2fulluncompaddr (--printfulluncompressed) \end_layout \begin_layout Code --addr_to_fulluncompressed (--printfulluncompressed) \end_layout \begin_layout Code --addr2if_inet6 (-I ipv6addr -O ifinet6) \end_layout \begin_layout Code --addr_to_ifinet6 (-I ipv6addr -O ifinet6) \end_layout \begin_layout Code --if_inet62addr (-I ifinet6 -O ipv6addr --printcompressed) \end_layout \begin_layout Code --ifinet6_to_compressed (-I ifinet6 -O ipv6addr --printcompressed) \end_layout \begin_layout Code --eui64_to_privacy (-I iid_token -O iid_token -A genprivacyiid) \end_layout \begin_layout Code --ipv4_to_6to4addr (-I ipv4 -O ipv6addr -A conv6to4) \end_layout \begin_layout Subsubsection Database options \end_layout \begin_layout Itemize each internal/external database can be disabled by option \end_layout \begin_layout Itemize directory of database files can be given via related option \end_layout \begin_layout Itemize databases requiring external library the library file can be given in case of dynamic load and linking \end_layout \begin_layout Paragraph IP2Location \end_layout \begin_layout Standard IP2location database directory can contain a bunch of files, the best ones are selected automatically (since 0.99.0). \begin_inset Quotes eld \end_inset Best \begin_inset Quotes erd \end_inset can be controlled via two options: \end_layout \begin_layout Itemize --db-ip2location-lite-to-sample-autoswitch-max-delta-months : switches from LITE to SAMPLE databases in case of \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize existing SAMPLE database \end_layout \begin_layout Itemize SAMPLE database not older than default/given MONTHS than the LITE database \end_layout \begin_layout Itemize IP address is in range of SAMPLE database (IPv4: 0.0.0.0-99.255.255.255, IPv6: 2a04::/16) \end_layout \begin_layout Itemize autoswitch can be disabled by using MONTHS=0 \end_layout \begin_layout Itemize reason for implementation: show maximum possible IP2Location features \end_layout \end_deeper \begin_layout Itemize --db-ip2location-comm-to-lite-switch-min-delta-months : switches from COMMercial to LITE databases in case of \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize existing LITE database \end_layout \begin_layout Itemize COMMercial database is default/given MONTHS older than the LITE database \end_layout \begin_layout Itemize switch can be disabled by using MONTHS=0 \end_layout \begin_layout Itemize reason for implementation: avoid using old COMMercial databases \end_layout \end_deeper \begin_layout Itemize --db-ip2location-only-type : only selects databases of given type \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize reason for implementation: be able to select a specific database type \end_layout \end_deeper \begin_layout Itemize --db-ip2location-allow-softlinks: allow softlinked IP2Location database files \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize by default, softlinked database files are skipped, because it's hard to detect whether one is COMMercial, LITE or SAMPLE \end_layout \end_deeper \begin_layout Code \end_layout \begin_layout Standard use \begin_inset Quotes eld \end_inset ipv6calc -vv \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset ipv6calc -vvv \begin_inset Quotes erd \end_inset for verification, which databases are selected finally. \end_layout \begin_layout Subsubsection Input-type options \end_layout \begin_layout Code $ ipv6calc --in -? \end_layout \begin_layout Code ipv6calc: version 0.97.0 IP2Location GeoIP GeoIPv6 DB_AS DB_IPV4 DB_IPV6 DB_IPV4_A S DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code (P) & (C) 2001-2014 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code Available input types: \end_layout \begin_layout Code auto : automatic detection \end_layout \begin_layout Code revnibbles.int : dot separated nibbles reverse, ending with ip6.int. \end_layout \begin_layout Code revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa. \end_layout \begin_layout Code bitstring : bitstring labes, ending with ip6.arpa. \end_layout \begin_layout Code ipv6addr : IPv6 address \end_layout \begin_layout Code ipv6literal : IPv6 address in literal \end_layout \begin_layout Code ipv4addr : IPv4 address \end_layout \begin_layout Code ipv4hex : IPv4 in hexdecimal format \end_layout \begin_layout Code ipv4revhex : IPv4 in byte-reversed hexdecimal format \end_layout \begin_layout Code mac : MAC address (48 bits) \end_layout \begin_layout Code eui64 : EUI-64 identifier (64 bits) \end_layout \begin_layout Code base85 : Base-85 string \end_layout \begin_layout Code ifinet6 : Like line in /proc/net/if_inet6 \end_layout \begin_layout Code iid+token : Interface identifier and token \end_layout \begin_layout Code ipv6logconv : ipv6logconv (currently not supported) \end_layout \begin_layout Code prefix+mac : IPv6 prefix and a MAC address \end_layout \begin_layout Code asn : Autonomous System Number \end_layout \begin_layout Subsubsection Output-type options: \end_layout \begin_layout Code $ ipv6calc --out -? \end_layout \begin_layout Code ipv6calc: version 0.97.0 IP2Location GeoIP GeoIPv6 DB_AS DB_IPV4 DB_IPV6 DB_IPV4_A S DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code (P) & (C) 2001-2014 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code Available output types: \end_layout \begin_layout Code revnibbles.int : dot separated nibbles reverse, ending with ip6.int. \end_layout \begin_layout Code revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa. \end_layout \begin_layout Code bitstring : bitstring labes, ending with ip6.arpa. \end_layout \begin_layout Code ipv6addr : IPv6 address \end_layout \begin_layout Code ipv4addr : IPv4 address \end_layout \begin_layout Code mac : MAC address (48 bits) \end_layout \begin_layout Code eui64 : EUI-64 identifier (64 bits) \end_layout \begin_layout Code base85 : Base-85 string \end_layout \begin_layout Code ifinet6 : Like line in /proc/net/if_inet6 \end_layout \begin_layout Code iid : Interface identifier \end_layout \begin_layout Code iid+token : Interface identifier and token \end_layout \begin_layout Code addrtype : Address type \end_layout \begin_layout Code ouitype : OUI (IEEE) type \end_layout \begin_layout Code ipv6addrtype : IPv6 address type \end_layout \begin_layout Code any : any type (currently not supported) \end_layout \begin_layout Code revipv4 : reverse IPv4, ending with in-addr.arpa \end_layout \begin_layout Code ipv4hex : IPv4 in hexdecimal format \end_layout \begin_layout Code octal : IP address in escaped octal format \end_layout \begin_layout Code hex : IP address in hexadecimal format \end_layout \begin_layout Code ipv6literal : IPv6 address in literal \end_layout \begin_layout Code \end_layout \begin_layout Code For examples and available format options use: \end_layout \begin_layout Code -O|--out --examples \end_layout \begin_layout Subsubsection Action-type options: \end_layout \begin_layout Code $ ipv6calc --action -? \end_layout \begin_layout Code ipv6calc: version 0.99.1 IP2Location GeoIP GeoIPv6 DB_AS DB_IPV4 DB_IPV6 DB_IPV4_A S DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code (P) & (C) 2001-2015 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code Available action types: \end_layout \begin_layout Code auto : Automatic selection of action (default) \end_layout \begin_layout Code geneui64 : Converts a MAC address to an EUI-64 address \end_layout \begin_layout Code conv6to4 : Converts IPv4 address <-> 6to4 IPv6 address (prefix) \end_layout \begin_layout Code convnat64 : Converts IPv4 address <-> NAT64 IPv6 address \end_layout \begin_layout Code genprivacyiid : Generates a privacy interface ID out of a given one (arg1) and a token (arg2) \end_layout \begin_layout Code prefixmac2ipv6 : Generates an IPv6 address out of a prefix and a MAC address \end_layout \begin_layout Code anonymize : Anonymize IPv4/IPv6 address without loosing much informatio n \end_layout \begin_layout Code 6rd_local_prefix : Calculate the 6rd prefix from given IPv6 prefix (& relay prefix) and IPv4 \end_layout \begin_layout Code Options: \end_layout \begin_layout Code --6rd_prefix ... (required) \end_layout \begin_layout Code --6rd_relay_prefix ... (optional) \end_layout \begin_layout Code 6rd_extract_ipv4 : Extract from 6rd address the include IPv4 address \end_layout \begin_layout Code Options: \end_layout \begin_layout Code --6rd_prefixlength ... (required) \end_layout \begin_layout Code filter : Filter addresses related to filter options \end_layout \begin_layout Subsubsection Special action \begin_inset Quotes eld \end_inset filter \begin_inset Quotes erd \end_inset : \end_layout \begin_layout Standard Special action \begin_inset Quotes eld \end_inset filter \begin_inset Quotes erd \end_inset can be used especially in pipe mode to filter IP addresses related to their type and since 0.99.0 also related to database results (CountryCode, ASN or Registry). \end_layout \begin_layout Code $ ipv6calc: version 0.99.2 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE \end_layout \begin_layout Code Filter given addresses from stdin by filter expression, e.g. \end_layout \begin_layout Code echo '2001:db8::1' | ipv6calc [-A filter] -E iid-local \end_layout \begin_layout Code echo '2001:db8::1' | ipv6calc [-A filter] -E iid-local,global-unicast \end_layout \begin_layout Code echo '2001:db8::1' | ipv6calc [-A filter] -E ^iid-random \end_layout \begin_layout Code (note: since version 0.95.0 '-A filter' is autoselected if option '-E ' is given) \end_layout \begin_layout Code negation of filter expression with prefix: ^ \end_layout \begin_layout Code IPv6 address filter tokens: \end_layout \begin_layout Code ipv6 unknown unicast multicast anycast loopback link-local site-local compat-v4 mapped reserved unique-local-unicast anonymized-iid anonymized-prefix 6to4 6bone global-unicast unspecified solicited-node productive 6to4-microsoft teredo orchid link-local-teredo nat64 iid-random iid iid-local iid-global iid-teredo iid-eui48 iid-eui64 iid-isatap iid-includes-ipv4 \end_layout \begin_layout Code IPv4 address filter tokens: \end_layout \begin_layout Code ipv4 any unicast multicast anycast broadcast loopback unspecified unknown reserved zeroconf site-local anonymized global 6to4relay \end_layout \begin_layout Code IPv4/v6 address filter tokens based on databases: \end_layout \begin_layout Code [^][ipv4.|ipv6.]db.cc=|unknown (Country Code [2 chars]) \end_layout \begin_layout Code [^][ipv4.|ipv6.]db.asn=|unknown (Autonomous System Number) \end_layout \begin_layout Code [^][ipv4.|ipv6.]db.reg= \end_layout \begin_layout Code Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown \end_layout \begin_layout Code IPv4/v6 address filter tokens based on address/mask: \end_layout \begin_layout Code [^]ipv4.addr=[] \end_layout \begin_layout Code [^]ipv6.addr=[] \end_layout \begin_layout Code IPv4/v6 address filter tokens based on address ranges (<=|<|>|>=): \end_layout \begin_layout Code [^]ipv4.addr(<=|<|>|>=) \end_layout \begin_layout Code [^]ipv6.addr(<=|<|>|>=) \end_layout \begin_layout Code as alternative in case <|> creating problems also supported: =(le|lt|gt|ge)=: \end_layout \begin_layout Code [^]ipv4.addr=(le|lt|gt|ge)= \end_layout \begin_layout Code [^]ipv6.addr=(le|lt|gt|ge)= \end_layout \begin_layout Code EUI-48/MAC address filter tokens: \end_layout \begin_layout Code IMPLEMENTATION MISSING \end_layout \begin_layout Code EUI-64 address filter tokens: \end_layout \begin_layout Code IMPLEMENTATION MISSING \end_layout \begin_layout Standard Example for some filter expressions: \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.cc=DE | wc -l \end_layout \begin_layout Code 5068 \end_layout \begin_layout Code \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.cc=US | wc -l \end_layout \begin_layout Code 305 \end_layout \begin_layout Code \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.reg=ARIN | wc -l \end_layout \begin_layout Code 306 \end_layout \begin_layout Code \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -E iid-random | wc -l \end_layout \begin_layout Code 4806 \end_layout \begin_layout Code \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -E ipv6.db.cc=US,iid-random | wc -l \end_layout \begin_layout Code 16 \end_layout \begin_layout Code \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E ipv6.db.cc=US,iid-random,ipv 4.db.cc=US | wc -l \end_layout \begin_layout Code 1842 \end_layout \begin_layout Code \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E db.asn=8767 | wc -l \end_layout \begin_layout Code 2363 \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E ipv6.db.asn=8767 | wc -l \end_layout \begin_layout Code 1452 \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201504 | ipv6calc -A filter -E ipv4.db.asn=8767 | wc -l \end_layout \begin_layout Code 911 \end_layout \begin_layout Standard Example for searching for addresses in a specific range (supported since 0.99.2): \end_layout \begin_layout Code $ cat ip.bieringer.de-log.201609 | awk '{ print $1 }' | sort | uniq | ipv6calc -E ipv6.addr=ge=2002::,ipv6.addr=lt=2003:: \end_layout \begin_layout Code 2002:2518:0:1:2:3:4:5 \end_layout \begin_layout Code ... \end_layout \begin_layout Code 2002:d950:0:1:2:3:4:5 \end_layout \begin_layout Subsubsection Special action \begin_inset Quotes eld \end_inset test \begin_inset Quotes erd \end_inset : \end_layout \begin_layout Standard Special action \begin_inset Quotes eld \end_inset test \begin_inset Quotes erd \end_inset (since 0.99.2) can be used in command line or pipe mode (single address only) to test IP addresses related to a given prefix or range . \end_layout \begin_layout Code $ ./ipv6calc/ipv6calc -A test -h \end_layout \begin_layout Code ipv6calc: version 0.99.2 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE \end_layout \begin_layout Code \end_layout \begin_layout Code Test given address(es) against supported tests: \end_layout \begin_layout Code --test_prefix : inside a prefix \end_layout \begin_layout Code --test_gt|--test_ge
: greater(/equal) than an address \end_layout \begin_layout Code --test_lt|--test_le
: less(/equal) than an address \end_layout \begin_layout Code \end_layout \begin_layout Code Test given address(es) from stdin, e.g. \end_layout \begin_layout Code echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db8::/32 \end_layout \begin_layout Code echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db9::/32 \end_layout \begin_layout Code \end_layout \begin_layout Code Single address test, return code: 0=inside/matching 1=outside/not-matching 2=uncomparable \end_layout \begin_layout Code ipv6calc [-A test] --test_prefix 2001:db8::/32 2001:db8::1 \end_layout \begin_layout Code ipv6calc [-A test] --test_prefix 2001:db9::/32 2001:db8::1 \end_layout \begin_layout Code ipv6calc [-A test] --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff :ffff:ffff 2001:db8::1 \end_layout \begin_layout Code ipv6calc [-A test] --test_ge 2001:db9:: --test_le 2001:db9:ffff:ffff:ffff:ffff :ffff:ffff 2001:db8::1 \end_layout \begin_layout Code ipv6calc [-A test] --test_ge 2001:db9:: --test_lt 2001:dba:: 2001:db8::1 \end_layout \begin_layout Code ipv6calc [-A test] --test_ge 2001:db8:: --test_lt 2001:db9:: 2001:db8::1 \end_layout \begin_layout Standard Example for command line mode: \end_layout \begin_layout Code $ ipv6calc --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1; echo $? \end_layout \begin_layout Code no input type specified, try autodetection...found type: ipv6addr \end_layout \begin_layout Code no output type specified, try autodetection...found type: ipv6addr \end_layout \begin_layout Code 2001:db8::1 greater/equal than 2001:db8:: less/equal than 2001:db8:ffff:ffff: ffff:ffff:ffff:ffff \end_layout \begin_layout Code 0 \end_layout \begin_layout Standard Example for command line mode (quiet): \end_layout \begin_layout Code $ ipv6calc -q --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:f fff 2001:db8::1; echo $? \end_layout \begin_layout Code 2001:db8::1 greater/equal than 2001:db8:: less/equal than 2001:db8:ffff:ffff: ffff:ffff:ffff:ffff \end_layout \begin_layout Code 0 \end_layout \begin_layout Standard Example for pipe mode: \end_layout \begin_layout Code $ echo -e "1.2.3.4 \backslash n1.2.4.4" | ipv6calc --test_prefix 1.2.3.0/24 \end_layout \begin_layout Code 1.2.3.4 inside 1.2.3.0/24 \end_layout \begin_layout Code 1.2.4.4 NOT inside 1.2.3.0/24 \end_layout \begin_layout Section Webserver log conversion helper program "ipv6logconv" \end_layout \begin_layout Standard This program parses address tokens of a given webserver logfile and converts them to special strings, useful for statistics (e.g. created by using "analog"). \end_layout \begin_layout Subsection Supported options \end_layout \begin_layout Code $ ipv6logconv -h \end_layout \begin_layout Code ipv6logconv: version 0.97.0 CONV_REG CONV_IEEE \end_layout \begin_layout Code (P) & (C) 2002-2014 by Peter Bieringer \end_layout \begin_layout Code General: \end_layout \begin_layout Code [-d|--debug ] : debug value (bitwise like) \end_layout \begin_layout Code [-q|--quiet] : be more quiet \end_layout \begin_layout Code [-n|--nocache] : disable caching \end_layout \begin_layout Code [-c|--cachelimit ] : set cache limit \end_layout \begin_layout Code default: 20 \end_layout \begin_layout Code maximum: 200 \end_layout \begin_layout Code Output: \end_layout \begin_layout Code [--out ] : specify output type \end_layout \begin_layout Code addrtype : Address type \end_layout \begin_layout Code ouitype : OUI (IEEE) type \end_layout \begin_layout Code ipv6addrtype : IPv6 address type \end_layout \begin_layout Code any : any type \end_layout \begin_layout Code Takes data from stdin, proceed it to stdout \end_layout \begin_layout Subsection Examples \end_layout \begin_layout Standard A demonstration about which kind of statistics are possible to produce is shown at \begin_inset CommandInset href LatexCommand href name "http://www.ipv6.bieringer.de/" target "http://www.ipv6.bieringer.de/" \end_inset (IPv6 only). \end_layout \begin_layout Subsection Usage \end_layout \begin_layout Standard Example: \end_layout \begin_layout Code $ echo "2002:50b5:7940:0000:0000:0000:50b5:7940 - -" | ipv6logconv -q --out any \end_layout \begin_layout Code RIPENCC.6to4.global-unicast.ipv6-addr.addrtype.ipv6calc \end_layout \begin_layout Standard See more examples inside the package. \end_layout \begin_layout Section Webserver log anonymization helper program "ipv6loganon" \end_layout \begin_layout Standard On autoconfiguration, the interface part of an IPv6 address is based on the MAC address of the network interface card (NIC). This address is used for outgoing requests, if privacy option (RFC3041 / RFC4941) is not enabled. This results in many privacy related information on web- or mail-server log files. Administrators, which won't (be allowed to) store such information over time, but still do not want to loose information about address type distributio n should use 'ipv6loganon' to anonymize their log files. \end_layout \begin_layout Standard Since version 0.94.0 internally also IID anonymization is possible without loosing any information for \begin_inset Quotes eld \end_inset ipv6logstats \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Standard Since version 0.95.0 internally also prefix anonymization is possible without loosing any information for \begin_inset Quotes eld \end_inset ipv6logstats \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Subsection Anonymization details \end_layout \begin_layout Subsubsection Method \begin_inset Quotes eld \end_inset zeroize \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard The anonymizer would keep as much information as possible for IPv6 address types. \end_layout \begin_layout Standard Client-side IID would be anonymized by \end_layout \begin_layout Itemize EUI-48 based: serial number would be zero'ed, keeping OID \end_layout \begin_layout Itemize EUI-64 based: serial number would be zero'ed, keeping OID \end_layout \begin_layout Itemize ISATAP: client IPv4 address would be anonymized by given IPv4 mask \end_layout \begin_layout Itemize TEREDO: client IPv4 address would be anonymized by given IPv4 mask, client port would be zero'ed \end_layout \begin_layout Itemize 6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 mask \end_layout \begin_layout Itemize local: whole IID would be zero'ed \end_layout \begin_layout Standard Client-side SLA would be anonymized by \end_layout \begin_layout Itemize SLA would be zero'ed \end_layout \begin_layout Standard Prefix would be anonymized by \end_layout \begin_layout Itemize 6to4: client IPv4 address would be anonymized by given IPv4 mask \end_layout \begin_layout Standard Compat/Mapped IPv4 addresses would be anonymized by \end_layout \begin_layout Itemize IPv4 address would be anonymized by given IPv4 mask \end_layout \begin_layout Subsubsection Method \begin_inset Quotes eld \end_inset anonmize \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard The anonymizer would keep as much information as possible for the IID of an IPv6 address. \end_layout \begin_layout Standard Description from libipv6addr.h: \end_layout \begin_layout Code * IID anonymization is done by replacing with related information (64-bit) \end_layout \begin_layout Code * xxxx:xxxx:xxxx:xxxC (C = 4-bit checksum) \end_layout \begin_layout Code * \end_layout \begin_layout Code * a9p9 4941 0000 000C -> RFC 4941 anonymized privacy extension Interface ID \end_layout \begin_layout Code * \end_layout \begin_layout Code * a9p9 4291 4xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted OUI \end_layout \begin_layout Code * a9p9 4291 5xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted mapped IAB/OUI-36 \end_layout \begin_layout Code * a9p9 4291 6xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted OUI \end_layout \begin_layout Code * a9p9 4291 7xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted mapped IAB/OUI-36 \end_layout \begin_layout Code * a9p9 4291 8xxx xxxC -> RFC 4291 embedded anonymized IPv4 address, xxx xxx = first 24 bit of included (anonymized) IPv4 address \end_layout \begin_layout Code * a9p9 4291 c02d 5d1C -> RFC 4291 Chapter 2.5.1 anonymized static Interface ID \end_layout \begin_layout Code * \end_layout \begin_layout Code * a9p9 5214 4xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (local scope) \end_layout \begin_layout Code * a9p9 5214 5xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (global scope) \end_layout \begin_layout Code * a9p9 5214 cxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (local scope) \end_layout \begin_layout Code * a9p9 5214 dxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (global scope) \end_layout \begin_layout Code * a9p9 5214 exxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (local scope) \end_layout \begin_layout Code * a9p9 5214 fxxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (global scope) \end_layout \begin_layout Code * \end_layout \begin_layout Code * a9p9 4843 0000 000C -> RFC 4843 anonymized ORCHID hash \end_layout \begin_layout Standard Depending on given mask, the part of the prefix will be replaced: \end_layout \begin_layout Code * SLA/NLA prefix part anonymization is done by replacing with pattern a909a909 \end_layout \begin_layout Code * p = number of nibbles anonymized \end_layout \begin_layout Subsubsection Method \begin_inset Quotes eld \end_inset keep-type-asn-cc \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard In addition to \begin_inset Quotes eld \end_inset anonymize \begin_inset Quotes erd \end_inset (of IID) this method anonymizes also the prefix of an IPv6 address or a whole IPv4 address by keeping ASN (Autonomous System Number, Country Code and Type). \end_layout \begin_layout Standard Description from libipv6addr.h: \end_layout \begin_layout Code * Prefix anonymization in case of method=kp: p=0x0f \end_layout \begin_layout Code * a909:ccca:aaaa:aaaC (C = 4-bit checksum) \end_layout \begin_layout Code * ccc -> 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) \end_layout \begin_layout Code * 0x3FD = LISP \end_layout \begin_layout Code * 0x3FE = unknown country \end_layout \begin_layout Code * 0x3FF - 16 + REGISTRY_6BONE && ASN=0 = 6bone \end_layout \begin_layout Code * 0x000-0x3A7: c1= c / 36, c2 = c % 36 \end_layout \begin_layout Code * aaaaaaaa -> 32-bit ASN \end_layout \begin_layout Standard Description from libipv4addr.h: \end_layout \begin_layout Code * Global IPv4 addresses are anoymized by storing country code and AS number \end_layout \begin_layout Code * and using prefix of experimental range (240-255.x.y.z) \end_layout \begin_layout Code * \end_layout \begin_layout Code * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 \end_layout \begin_layout Code * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 \end_layout \begin_layout Code * 1 1 1 1 \end_layout \begin_layout Code * |p p p p| \end_layout \begin_layout Code * Prefix \end_layout \begin_layout Code * 0xF \end_layout \begin_layout Code * \end_layout \begin_layout Code * Pariy Bit (odd parity) \end_layout \begin_layout Code * |P| \end_layout \begin_layout Code * \end_layout \begin_layout Code * Mapping of Country Code \end_layout \begin_layout Code * |c c c c c c c c c c| \end_layout \begin_layout Code * 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) \end_layout \begin_layout Code * 0x3FF = unknown country \end_layout \begin_layout Code * 0x000-0x3A7: c1= c / 36, c2 = c % 36 \end_layout \begin_layout Code * \end_layout \begin_layout Code * Mapping of ASN <= 65535 \end_layout \begin_layout Code * 0|a a a a a a a a a a a a a a a a| \end_layout \begin_layout Code * 16-bit ASN \end_layout \begin_layout Code * \end_layout \begin_layout Code * Mapping of ASN >= 65536, ASN & 0xE000 == 0 (12-bit LSB is ok) \end_layout \begin_layout Code * 1|r r r|0|l l l l l l l l l l l l| \end_layout \begin_layout Code * 13-bit LSB of ASN \end_layout \begin_layout Code * \end_layout \begin_layout Code * Mapping of ASN >= 65536, ASN & 0xE000 != 0 (12-bit LSB overflow) => unspecifi ed \end_layout \begin_layout Code * 1|r r r|1|0 0 0 0 0 0 0 0 0 0 0 0| \end_layout \begin_layout Code * \end_layout \begin_layout Code * Mapping of ASN registry for ASN >= 65536 \end_layout \begin_layout Code * 0 0 0 = "unknown ASN registry" \end_layout \begin_layout Code * 0 1 0 = APNIC \end_layout \begin_layout Code * 0 1 1 = RIPE \end_layout \begin_layout Code * 1 0 0 = LACNIC \end_layout \begin_layout Code * 1 0 1 = AFRINIC \end_layout \begin_layout Code * 1 1 0 = ARIN \end_layout \begin_layout Code * Mapping of LISP \end_layout \begin_layout Code * 1|r r r|1|1|0 0 0 0 0 0 0 0 0 0 0| \end_layout \begin_layout Subsection Supported log file formats \end_layout \begin_layout Standard Currently native supported log files: \end_layout \begin_layout Itemize Apache log file format, 1st token is IPv4 or IPv6 address \end_layout \begin_layout Standard There are plans to support also mail server log files sometimes in the future, but because of different formats, this would be probably done by a Perl program which parses the log file and a (cached) 'ip6calc' call with action 'anonymize'. \end_layout \begin_layout Subsection Supported options \end_layout \begin_layout Code $ ipv6loganon -h \end_layout \begin_layout Code ipv6loganon: version 0.97.0 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code (P) & (C) 2007-2014 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code This program anonymizes IPv4/IPv6 addresses in e.g. HTTP server log files \end_layout \begin_layout Code \end_layout \begin_layout Code [-d|--debug ] : debug value (bitwise like) \end_layout \begin_layout Code can also be set by IPV6CALC_DEBUG environment value \end_layout \begin_layout Code [-v|--version [-v [-v]]] : version information (2 optional verbose levels) \end_layout \begin_layout Code [-h|--help|-?] : this online help \end_layout \begin_layout Code \end_layout \begin_layout Code [--db-ip2location-disable ] : IP2Location support disabled \end_layout \begin_layout Code [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) \end_layout \begin_layout Code [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) \end_layout \begin_layout Code \end_layout \begin_layout Code [--db-geoip-disable ] : GeoIP support disabled \end_layout \begin_layout Code [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) \end_layout \begin_layout Code [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) \end_layout \begin_layout Code \end_layout \begin_layout Code [-w|--write] : write output to file instead of stdout \end_layout \begin_layout Code [-a|--append] : append output to file instead of stdout \end_layout \begin_layout Code [-f|--flush] : flush output after each line \end_layout \begin_layout Code [-V|--verbose] : be verbose \end_layout \begin_layout Code [-n|--nocache] : disable caching \end_layout \begin_layout Code [-c|--cachelimit ] : set cache limit \end_layout \begin_layout Code default: 20 \end_layout \begin_layout Code maximum: 200 \end_layout \begin_layout Code \end_layout \begin_layout Code Shortcut for anonymization presets: \end_layout \begin_layout Code --anonymize-standard (default) \end_layout \begin_layout Code --anonymize-careful \end_layout \begin_layout Code --anonymize-paranoid \end_layout \begin_layout Code \end_layout \begin_layout Code Supported methods [--anonymize-method METHOD]: \end_layout \begin_layout Code anonymize : reliable anonymization, keep as much type information as possible \end_layout \begin_layout Code zeroize : simple zeroizing according to given masks, probably loose type information \end_layout \begin_layout Code keep-type-asn-cc: special reliable anonymization, keep type & Autonomous System Number and CountryCode \end_layout \begin_layout Code \end_layout \begin_layout Code Available presets (shortcut names) [--anonymize-preset PRESET-NAME]: \end_layout \begin_layout Code anonymize-standard (as): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac= 24 mask-autoadjust=yes method=anonymize \end_layout \begin_layout Code anonymize-careful (ac): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac= 24 mask-autoadjust=yes method=anonymize \end_layout \begin_layout Code anonymize-paranoid (ap): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac= 24 mask-autoadjust=no method=anonymize \end_layout \begin_layout Code zeroize-standard (zs): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac= 24 mask-autoadjust=yes method=zeroize \end_layout \begin_layout Code zeroize-careful (zc): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac= 24 mask-autoadjust=yes method=zeroize \end_layout \begin_layout Code zeroize-paranoid (zp): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac= 24 mask-autoadjust=no method=zeroize \end_layout \begin_layout Code keep-type-asn-cc (kp): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac= 24 mask-autoadjust=yes method=keep-type-asn-cc \end_layout \begin_layout Code \end_layout \begin_layout Code Custom control: \end_layout \begin_layout Code --mask-ipv4 : mask IPv4 address [0-32] (even if occurs in IPv6 address) \end_layout \begin_layout Code --mask-ipv6 : mask IPv6 prefix [0-64] (only applied to related address types) \end_layout \begin_layout Code --mask-eui64 : mask EUI-64 address or IPv6 interface identifier [0-64] \end_layout \begin_layout Code --mask-mac : mask MAC address [0-48] \end_layout \begin_layout Code --mask-autoadjust yes|no: autoadjust mask to keep type/vendor information regardless of less given mask \end_layout \begin_layout Code \end_layout \begin_layout Code Takes data from stdin, outputs the processed data to stdout (default) \end_layout \begin_layout Subsection Usage \end_layout \begin_layout Subsubsection Offline anonymization \end_layout \begin_layout Code $ cat /path/to/http_log | ./ipv6loganon >/path/to/http_log_anonymized \end_layout \begin_layout Subsubsection On-the-fly online anonymization for Apache Webserver \end_layout \begin_layout Quotation Note: since 0.91.1 also an module for Apache Webserver is available (see below) supporting anonymized logging \end_layout \begin_layout Standard (Supported since 0.90.0) \end_layout \begin_layout Standard Adjust or add (note: more than one CustomLog directive is supported by Apache) httpd.conf like following: \end_layout \begin_layout Code CustomLog "|/usr/local/bin/ipv6loganon -a -f /var/log/httpd/access_log" combined \end_layout \begin_layout Standard In case of \begin_inset Quotes eld \end_inset cronolog \begin_inset Quotes erd \end_inset is used on the system, configure like this: \end_layout \begin_layout Itemize Apache version < 2.4: \end_layout \begin_layout Code CustomLog "|/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access.log -%Y%m%d" combined \end_layout \begin_layout Itemize Apache version >= 2.4: \end_layout \begin_layout Code CustomLog "|$/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access.lo g-%Y%m%d" combined \end_layout \begin_layout Section External database update helper scripts \end_layout \begin_layout Standard The \begin_inset Quotes eld \end_inset tools \begin_inset Quotes erd \end_inset subdirectory contains helper scripts for updating external databases. \end_layout \begin_layout Subsection IP2Location \end_layout \begin_layout Code $ /usr/share/ipv6calc/tools/IP2Location-update.sh -h \end_layout \begin_layout Code Usage: IP2Location-update.sh [-D ] [-n] [-s] \end_layout \begin_layout Code -D database destination directory (optional) \end_layout \begin_layout Code -n no action (dry-run) \end_layout \begin_layout Code -s skip already successfully downloaded files \end_layout \begin_layout Code \end_layout \begin_layout Code database directory: /usr/share/IP2Location (default: /usr/share/IP2Location) \end_layout \begin_layout Code \end_layout \begin_layout Code it honors externally defined environment value: IP2LOCATION_DAT_DIR \end_layout \begin_layout Code \end_layout \begin_layout Code this script will download data from ip2location.com \end_layout \begin_layout Code into given/set database directory \end_layout \begin_layout Code \end_layout \begin_layout Code Sample databases: \end_layout \begin_layout Code IP2LOCATION_DAT_FILES_SAMPLE=IPv4:20 IPv6:20 IPv4:24 IPv6:24 \end_layout \begin_layout Code \end_layout \begin_layout Code Lite (free) databases: \end_layout \begin_layout Code IP2LOCATION_DAT_FILES_LITE_FREE=IPv4:1 IPv6:1 \end_layout \begin_layout Code \end_layout \begin_layout Code With authentication (requires login/password in /home/compile/.ip2location) and a valid subscription \end_layout \begin_layout Code IP2LOCATION_DAT_FILES_LITE= \end_layout \begin_layout Code \end_layout \begin_layout Code Credentials must be defined in $HOME/.ip2location by \end_layout \begin_layout Code login=IP2LOCATION-LOGIN \end_layout \begin_layout Code password=IP2LOCATION-PASSWORD \end_layout \begin_layout Code \end_layout \begin_layout Code In addition settings from above can be overwritten by setting related variables \end_layout \begin_layout Subsection GeoIP \end_layout \begin_layout Code $ /usr/share/ipv6calc/tools/GeoIP-update.sh -h \end_layout \begin_layout Code Usage: GeoIP-update.sh [-D ] \end_layout \begin_layout Code -D database directory (optional) \end_layout \begin_layout Code \end_layout \begin_layout Code database directory: /usr/share/GeoIP (default: /usr/share/GeoIP) \end_layout \begin_layout Code \end_layout \begin_layout Code it honors externally defined environment value: GEOIP_DAT_DIR \end_layout \begin_layout Code \end_layout \begin_layout Code this script will download data from geolite.maxmind.com (GeoIP) \end_layout \begin_layout Code into given/set database directory \end_layout \begin_layout Code \end_layout \begin_layout Code GEOIP_DAT_URL_BASE=http://geolite.maxmind.com/download/geoip/database/ \end_layout \begin_layout Code GEOIP_DAT_FILES=GeoLiteCountry/GeoIP.dat.gz GeoIPv6.dat.gz GeoLiteCity.dat.gz GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz asnum/GeoIPASNum.dat.gz asnum/GeoIPASNumv6.d at.gz \end_layout \begin_layout Subsection DB-IP.com \end_layout \begin_layout Code $ /usr/share/ipv6calc/tools/DBIP-update.sh -h \end_layout \begin_layout Code Usage: DBIP-update.sh [-s] [-D ] \end_layout \begin_layout Code -s skip download \end_layout \begin_layout Code -D database directory (optional) \end_layout \begin_layout Code \end_layout \begin_layout Code database directory: /usr/share/DBIP (default: /usr/share/DBIP) \end_layout \begin_layout Code \end_layout \begin_layout Code it honors externally defined environment value: DBIP_DAT_DIR \end_layout \begin_layout Code \end_layout \begin_layout Code this script (and its helper scripts) will download data from \end_layout \begin_layout Code DB-IP.com (free versions) and generate Berkeley DB files for ipv6calc \end_layout \begin_layout Code "DBIP" database support \end_layout \begin_layout Code \end_layout \begin_layout Code DBIP_DAT_URL_BASE=http://download.db-ip.com/free/ \end_layout \begin_layout Code DBIP_DAT_FILES=dbip-country-%Y-%m.csv.gz dbip-city-%Y-%m.csv.gz \end_layout \begin_layout Subsection External \end_layout \begin_layout Code $ /usr/share/ipv6calc/tools/ipv6calc-db-update.sh -h \end_layout \begin_layout Code Usage: ipv6calc-db-update.sh [-s] [-u] [-D ] \end_layout \begin_layout Code -s skip download \end_layout \begin_layout Code -u unconditional update \end_layout \begin_layout Code -D database directory (optional) \end_layout \begin_layout Code \end_layout \begin_layout Code database directory: /usr/share/ipv6calc/db (default: /usr/share/ipv6calc/db) \end_layout \begin_layout Code \end_layout \begin_layout Code it honors externally defined environment value: IPV6CALC_DAT_DIR \end_layout \begin_layout Code \end_layout \begin_layout Code this script (and its helper scripts) will download data from \end_layout \begin_layout Code registries and generate Berkeley DB files for ipv6calc \end_layout \begin_layout Code "external" database support \end_layout \begin_layout Section Perl CGI wrapper program "ipv6calcweb.cgi" \end_layout \begin_layout Standard Because calling C programs directly as CGI isn't really recommended (too much security troubles all the time), I wrote a small wrapper utility which calls "ipv6calc" to get information about client and server address for displaying on a web page. \end_layout \begin_layout Subsection Examples \end_layout \begin_layout Standard A demonstration about which kind of output is possible to produce is shown at \end_layout \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "http://ip.bieringer.de/" target "http://ip.bieringer.de/" \end_inset (IPv4/IPv6) \end_layout \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "http://www.ipv6.bieringer.de/" target "http://www.ipv6.bieringer.de/" \end_inset (IPv6 only) \end_layout \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "http://mirrors.bieringer.de/" target "http://mirrors.bieringer.de/" \end_inset (IPv4/IPv6) \end_layout \begin_layout Itemize \begin_inset CommandInset href LatexCommand href name "http://www.sixxs.net/tools/ipv6calc/" target "http://www.sixxs.net/tools/ipv6calc/" \end_inset (IPv4/IPv6) \end_layout \begin_layout Section Webserver log statistics helper program "ipv6logstats" \end_layout \begin_layout Standard This program parses a given webserver logfile and count addresses, useful for time period statistics. \end_layout \begin_layout Standard Since version 0.95.0 it has extended output, adding a date/time line and statistic s by Country Code and ASN (if required databases are available). \end_layout \begin_layout Subsection Supported options \end_layout \begin_layout Code $ ./ipv6logstats -h \end_layout \begin_layout Code ipv6logstats: version 0.97.0 STAT_REG STAT_CC STAT_AS \end_layout \begin_layout Code (P) & (C) 2003-2014 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code Takes web server log data (or any other data which has IPv4/v6 address in first column) \end_layout \begin_layout Code from stdin and print statistics table/list (depending on option) to stdout \end_layout \begin_layout Code \end_layout \begin_layout Code [-d|--debug ] : debug value (bitwise like) \end_layout \begin_layout Code can also be set by IPV6CALC_DEBUG environment value \end_layout \begin_layout Code [-v|--version [-v [-v]]] : version information (2 optional verbose levels) \end_layout \begin_layout Code [-h|--help|-?] : this online help \end_layout \begin_layout Code \end_layout \begin_layout Code [--db-ip2location-disable ] : IP2Location support disabled \end_layout \begin_layout Code [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) \end_layout \begin_layout Code [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) \end_layout \begin_layout Code \end_layout \begin_layout Code [--db-geoip-disable ] : GeoIP support disabled \end_layout \begin_layout Code [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) \end_layout \begin_layout Code [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) \end_layout \begin_layout Code \end_layout \begin_layout Code [-u|--unknown] : print unknown IP addresses to stderr \end_layout \begin_layout Code [-c|--columns] : print statistics in columns (1) \end_layout \begin_layout Code [-n|--noheader] : don't print header in columns mode (1) \end_layout \begin_layout Code [-o|--onlyheader] : print only header in columns mode (1) \end_layout \begin_layout Code [-p|--prefix ] : print token as prefix (1) \end_layout \begin_layout Code [-q|--quiet] : be more quiet \end_layout \begin_layout Code [-s|--simple] : disable extended statistic (CountryCode/ASN) \end_layout \begin_layout Code \end_layout \begin_layout Code (1) unsupported for CountryCode & ASN statistics \end_layout \begin_layout Subsection Usage \end_layout \begin_layout Standard There are a README and some helper scripts available in the package how to use this program and how to generate a graph using Gnuplot. \end_layout \begin_layout Subsubsection Line-by-line output \end_layout \begin_layout Standard The example shows output version 3.0, which \end_layout \begin_layout Code $ zcat ip.bieringer.de-log.201*.gz | ipv6logstats \end_layout \begin_layout Standard Header section, since output version 3.0 (>= 0.95.0) additional lines starting with '*3*' and '*DateTime' and '*UnixTime' included \end_layout \begin_layout Code *Version 3.0 \end_layout \begin_layout Code *DateTime: 2013:11:03 08:57:01+0000 GMT \end_layout \begin_layout Code *UnixTime: 1383469021 \end_layout \begin_layout Code *3*DB-Info: DB features: 0x0000133f \end_layout \begin_layout Code *3*DB-Info: GeoIP: features: 0x00000330 \end_layout \begin_layout Code *3*DB-Info: GeoIP: info of available databases in directory: /usr/share/GeoIP (max: 31) \end_layout \begin_layout Code *3*DB-Info: GeoIP: GeoIP Country Edition :[ 1] /usr/share/GeoIP/GeoIP. dat (GEO-106FREE 20130903 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: GeoIP: GeoIP ASNum Edition :[ 9] /usr/share/GeoIP/GeoIP ASNum.dat (GEO-117 20130902 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: GeoIP: GeoIP Country V6 Edition :[12] /usr/share/GeoIP/GeoIP v6.dat (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: GeoIP: GeoIP Large Country Edition :[17] /usr/share/GeoIP/GeoIP. dat (GEO-106FREE 20130903 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: GeoIP: GeoIP Large Country V6 Edition :[18] /usr/share/GeoIP/GeoIP v6.dat (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: GeoIP: GeoIP ASNum V6 Edition :[21] /usr/share/GeoIP/GeoIP ASNumv6.dat (GEO-117 20130306 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: IP2Location: features: 0x00000300 \end_layout \begin_layout Code *3*DB-Info: IP2Location: info of available databases in directory: /usr/share/IP 2Location \end_layout \begin_layout Code *3*DB-Info: IP2Location: IPv4 Country : /usr/share/IP2Location/IP- COUNTRY.BIN (IP2L-DB20 20130411 Copyright (c) 2013 IP2Location All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: IP2Location: IPv6 Country : /usr/share/IP2Location/IPV 6-COUNTRY.BIN (IP2L-DB1 20131025 Copyright (c) 2013 IP2Location All Rights Reserved) \end_layout \begin_layout Code *3*DB-Info: BuiltIn: features: 0x0000100f \end_layout \begin_layout Code *3*DB-Info: BuiltIn: info of available databases \end_layout \begin_layout Code *3*DB-Info: BuiltIn: ASN : IANA/20130730 \end_layout \begin_layout Code *3*DB-Info: BuiltIn: CC : AFRINIC/20130806 APNIC/20130805 ARIN/20130805 LACNIC/20130805 RIPENCC/20130805 \end_layout \begin_layout Code *3*DB-Info: BuiltIn: IPv4 : AFRINIC/20131014 APNIC/20131014 ARIN/20131014 IANA/20130520 LACNIC/20131014 RIPENCC/20131014 \end_layout \begin_layout Code *3*DB-Info: BuiltIn: IPv6 : AFRINIC/20131015 APNIC/20131014 ARIN/20131014 IANA/20130215 LACNIC/20131014 RIPENCC/20131014 \end_layout \begin_layout Code *3*DB-Info: BuiltIn: IEEE : IAB/20131015 OUI/20131015 OUI36/20131015 \end_layout \begin_layout Standard Simple statistics section \end_layout \begin_layout Code ALL 108525 \end_layout \begin_layout Code IPv4 46233 \end_layout \begin_layout Code IPv6 62292 \end_layout \begin_layout Code UNKNOWN 0 \end_layout \begin_layout Code IPv4/APNIC 2397 \end_layout \begin_layout Code IPv4/ARIN 3525 \end_layout \begin_layout Code IPv4/RIPE 40198 \end_layout \begin_layout Code IPv4/LACNIC 97 \end_layout \begin_layout Code IPv4/UNKNOWN 16 \end_layout \begin_layout Code IPv6/6bone 0 \end_layout \begin_layout Code IPv6/IANA 0 \end_layout \begin_layout Code IPv6/APNIC 129 \end_layout \begin_layout Code IPv6/ARIN 839 \end_layout \begin_layout Code IPv6/RIPE 61074 \end_layout \begin_layout Code IPv6/LACNIC 0 \end_layout \begin_layout Code IPv6/RESERVED 0 \end_layout \begin_layout Code IPv6/UNKNOWN 0 \end_layout \begin_layout Code IPv6/6to4/IANA 0 \end_layout \begin_layout Code IPv6/6to4/APNIC 0 \end_layout \begin_layout Code IPv6/6to4/ARIN 16 \end_layout \begin_layout Code IPv6/6to4/RIPE 51 \end_layout \begin_layout Code IPv6/6to4/LACNIC 0 \end_layout \begin_layout Code IPv6/6to4/RESERVED 0 \end_layout \begin_layout Code IPv6/6to4/UNKNOWN 0 \end_layout \begin_layout Code IPv6/Teredo/IANA 0 \end_layout \begin_layout Code IPv6/Teredo/APNIC 63 \end_layout \begin_layout Code IPv6/Teredo/ARIN 0 \end_layout \begin_layout Code IPv6/Teredo/RIPE 90 \end_layout \begin_layout Code IPv6/Teredo/LACNIC 30 \end_layout \begin_layout Code IPv6/Teredo/RESERVED 0 \end_layout \begin_layout Code IPv6/Teredo/UNKNOWN 0 \end_layout \begin_layout Code IPv6/NAT64/IANA 0 \end_layout \begin_layout Code IPv6/NAT64/APNIC 0 \end_layout \begin_layout Code IPv6/NAT64/ARIN 0 \end_layout \begin_layout Code IPv6/NAT64/RIPE 0 \end_layout \begin_layout Code IPv6/NAT64/LACNIC 0 \end_layout \begin_layout Code IPv6/NAT64/RESERVED 0 \end_layout \begin_layout Code IPv6/NAT64/UNKNOWN 0 \end_layout \begin_layout Code IPv6/IID/Global 1436 \end_layout \begin_layout Code IPv6/IID/Random 58198 \end_layout \begin_layout Code IPv6/IID/Manual 2055 \end_layout \begin_layout Code IPv6/IID/ISATAP 353 \end_layout \begin_layout Code IPv6/IID/Unknown 0 \end_layout \begin_layout Standard External database supported output since output version 3.0 (>= 0.95.0) \end_layout \begin_layout Itemize Country Code / Proto \end_layout \begin_layout Code ... \end_layout \begin_layout Code *3*CC-code-proto/DE/ALL 96450 \end_layout \begin_layout Code *3*CC-code-proto/DE/IPv4 36486 \end_layout \begin_layout Code *3*CC-code-proto/DE/IPv6 59964 \end_layout \begin_layout Code *3*CC-code-proto-list/DE 96450 36486 59964 \end_layout \begin_layout Code ... \end_layout \begin_layout Itemize Proto / Country Code ( \begin_inset Quotes eld \end_inset ALL \begin_inset Quotes erd \end_inset line contains: ALL IPv4 IPv6) \end_layout \begin_layout Code ... \end_layout \begin_layout Code *3*CC-proto-code/ALL/DE 96450 \end_layout \begin_layout Code *3*CC-proto-code/IPv4/DE 36486 \end_layout \begin_layout Code *3*CC-proto-code/IPv6/DE 59964 \end_layout \begin_layout Code ... \end_layout \begin_layout Code *3*CC-proto-code-list/ALL 108525 46483 62042 \end_layout \begin_layout Itemize Autonomous System number / Proto \end_layout \begin_layout Code ... \end_layout \begin_layout Code *3*AS-num-proto/8767/ALL 6054 \end_layout \begin_layout Code *3*AS-num-proto/8767/IPv4 2705 \end_layout \begin_layout Code *3*AS-num-proto/8767/IPv6 3349 \end_layout \begin_layout Code *3*AS-num-proto-list/8767 6054 2705 3349 \end_layout \begin_layout Code ... \end_layout \begin_layout Itemize Proto / Autonomous System number ( \begin_inset Quotes eld \end_inset ALL \begin_inset Quotes erd \end_inset line contains: ALL IPv4 IPv6) \end_layout \begin_layout Code ... \end_layout \begin_layout Code *3*AS-proto-num/ALL/8767 6054 \end_layout \begin_layout Code *3*AS-proto-num/IPv4/8767 2705 \end_layout \begin_layout Code *3*AS-proto-num/IPv6/8767 3349 \end_layout \begin_layout Code ... \end_layout \begin_layout Code *3*AS-proto-num-list/ALL 108525 46483 62042 \end_layout \begin_layout Subsubsection Column output \end_layout \begin_layout Standard Column output does not support version 3 extension, only simple statistics with a header line: \end_layout \begin_layout Code $ zcat ip.bieringer.de-log.201*.gz | ipv6logstats -q -c \end_layout \begin_layout Code IPv4 IPv6 UNKNOWN IPv4/APNIC IPv4/ARIN IPv4/RIPE IPv4/LACNIC IPv4/UNKNOWN IPv6/6bone IPv6/IANA IPv6/APNIC IPv6/ARIN IPv6/RIPE IPv6/LACNIC IPv6/RESERVED IPv6/UNKNOWN IPv6/6to4/IANA IPv6/6to4/APNIC IPv6/6to4/ARIN IPv6/6to4/RIPE IPv6/6to4/LACNIC IPv6/6to4/RESERVED IPv6/6to4/UNKNOWN IPv6/Teredo/IANA IPv6/Teredo/APNIC IPv6/Teredo/ARIN IPv6/Teredo/RIPE IPv6/Teredo/LACNIC IPv6/Teredo/RESERVED IPv6/Teredo/UNKNOWN IPv6/NAT64/IANA IPv6/NAT64/APNIC IPv6/NAT64/ARIN IPv6/NAT64/RIPE IPv6/NAT64/LACNIC IPv6/NAT64/RESERVED IPv6/NAT6 4/UNKNOWN IPv6/IID/Global IPv6/IID/Random IPv6/IID/Manual IPv6/IID/ISATAP IPv6/IID/Unknown \end_layout \begin_layout Code 46233 62292 0 2397 3525 40198 97 16 0 0 129 839 61074 0 0 0 0 0 16 51 0 0 0 0 63 0 90 30 0 0 0 0 0 0 0 0 0 1436 58198 2055 353 0 \end_layout \begin_layout Standard An optional prefix token can be given ( \begin_inset Quotes eld \end_inset -p \begin_inset Quotes erd \end_inset ) to create e.g. in a for-loop one line per month and put month in front of statistics, also the header line can be suppressed ( \begin_inset Quotes eld \end_inset -n \begin_inset Quotes erd \end_inset ). \end_layout \begin_layout Code $ zcat ip.bieringer.de-log.201*.gz | ipv6logstats -q -c -n -p ALL \end_layout \begin_layout Code ALL 46233 62292 0 2397 3525 40198 97 16 0 0 129 839 61074 0 0 0 0 0 16 51 0 0 0 0 63 0 90 30 0 0 0 0 0 0 0 0 0 1436 58198 2055 353 0 \end_layout \begin_layout Subsection Examples \end_layout \begin_layout Standard A demonstration with real data is available at \begin_inset CommandInset href LatexCommand href name "http://mirrors.bieringer.de/stats/timeline.html" target "http://mirrors.bieringer.de/stats/timeline.html" \end_inset . \end_layout \begin_layout Section Apache web server module \begin_inset Quotes eld \end_inset mod_ipv6calc \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard This Apache web server module (since version 0.99.1, released 2015) interfaces with internal ipv6calc library to support \end_layout \begin_layout Itemize Client IP address anonymization \begin_inset Quotes eld \end_inset on-the-fly \begin_inset Quotes erd \end_inset , exported to IPV6CALC_CLIENT_IP_ANON \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize depending on the configured anonymization method 3rd party database is required \end_layout \end_deeper \begin_layout Itemize Country code of client IP address, exported to IPV6CALC_CLIENT_COUNTRYCODE \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize requires 3rd party database: GeoIP or IP2Location or DB-IP.com \end_layout \end_deeper \begin_layout Itemize Autonomous System Number (ASN) of client IP address, exported to IPV6CALC_CLIENT _ASN \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize requires 3rd party database: GeoIP \end_layout \end_deeper \begin_layout Itemize Registry of client IP address, exported to IPV6CALC_CLIENT_REGISTRY \begin_inset Separator latexpar \end_inset \end_layout \begin_deeper \begin_layout Itemize requires internal or \begin_inset Quotes eld \end_inset external \begin_inset Quotes erd \end_inset database \end_layout \end_deeper \begin_layout Itemize Configured IP address anonymization method, exported to IPV6CALC_ANON_METHOD \end_layout \begin_layout Subsection Installation \end_layout \begin_layout Standard Install compiled Apache module \begin_inset Quotes eld \end_inset mod_ipv6calc \begin_inset Quotes erd \end_inset to Apache's module directory \end_layout \begin_layout Standard Install included default configuration file \begin_inset Quotes eld \end_inset ipv6calc.conf \begin_inset Quotes erd \end_inset to Apache's config directory (usually conf.d) \end_layout \begin_layout Subsection Configuration \end_layout \begin_layout Standard Enable in \begin_inset Quotes eld \end_inset ipv6calc.conf \begin_inset Quotes erd \end_inset loading of module \end_layout \begin_layout Code LoadModule ipv6calc_module modules/mod_ipv6calc.so \end_layout \begin_layout Standard Enable module itself \end_layout \begin_layout Code ipv6calcEnable on \end_layout \begin_layout Standard Adjust configuration settings, if needed (see examples in \begin_inset Quotes eld \end_inset ipv6calc.conf \begin_inset Quotes erd \end_inset ) \end_layout \begin_layout Standard Review predefined log format \end_layout \begin_layout Code LogFormat "%{IPV6CALC_CLIENT_IP_ANON}e \backslash "%{IPV6CALC_CLIENT_COUNTRYCODE}e/%{IPV6CALC_CLIENT_ASN}e/%{IPV6CALC_CLIENT_REGIS TRY}e/%{IPV6CALC_ANON_METHOD}e \backslash " %u %t \backslash "%r \backslash " %>s %b \backslash "%{Referer}i \backslash " \backslash "%{User-Agent}i \backslash "" combined_anon \end_layout \begin_layout Standard Enable custom log with anonymized information, using the predefined LogFormat \end_layout \begin_layout Code CustomLog logs/access_anon_log combined_anon \end_layout \begin_layout Standard Restart Apache web server, check error_log for any issues \end_layout \begin_layout Subsection Result \end_layout \begin_layout Standard The new log file contains anonymized requests like \end_layout \begin_layout Code 252.176.92.172 "CN/23724/APNIC/keep-type-asn-cc" - [25/Jul/2015:13:20:25 +0200] "GET / HTTP/1.1" 200 3569 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://w ww.baidu.com/search/spider.html)" \end_layout \begin_layout Code \end_layout \begin_layout Code a909:390a:909a:81d9:a909:4291:c02d:5d1d "CZ/43037/RIPENCC/keep-type-asn-cc" - [25/Jul/2015:12:59:00 +0200] "GET /robots.txt HTTP/1.1" 200 33 "-" "Mozilla/5.0 (compatible; SeznamBot/3.2; +http://fulltext.sblog.cz/)" \end_layout \begin_layout Subsection Post-analysis in case of anonymization method \begin_inset Quotes eld \end_inset keep-type-asn-cc \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard In case \begin_inset Quotes eld \end_inset keep-type-asn-cc \begin_inset Quotes erd \end_inset is configured and also working (required databases are available), related information of anonymized IP addresses can be retrieved using \begin_inset Quotes eld \end_inset ipv6calc \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset ipv6logstats \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Code $ ipv6calc -q -m -i 252.176.92.172 \end_layout \begin_layout Code IPV4=252.176.92.172 \end_layout \begin_layout Code IPV4_TYPE=unicast,anonymized,global \end_layout \begin_layout Code IPV4_AS_NUM=23724 \end_layout \begin_layout Code IPV4_COUNTRYCODE=CN \end_layout \begin_layout Code IPV4_REGISTRY=APNIC \end_layout \begin_layout Code ... \end_layout \begin_layout Code \end_layout \begin_layout Code $ ipv6calc -q -m -i a909:390a:909a:81d9:a909:4291:c02d:5d1d \end_layout \begin_layout Code IPV6=a909:390a:909a:81d9:a909:4291:c02d:5d1d \end_layout \begin_layout Code IPV6_TYPE=unicast,anonymized-iid,anonymized-prefix,global-unicast,productive,iid ,iid-local \end_layout \begin_layout Code IPV6_COUNTRYCODE=CZ \end_layout \begin_layout Code IPV6_AS_NUM=43037 \end_layout \begin_layout Code IPV6_REGISTRY=RIPENCC \end_layout \begin_layout Code ... \end_layout \begin_layout Section History \end_layout \begin_layout Standard Major extensions/changes are listed here \end_layout \begin_layout Subsection 2017 \end_layout \begin_layout Itemize add support for LISP detection \end_layout \begin_layout Itemize add support for non-free versions \begin_inset CommandInset href LatexCommand href name "DB-IP.com" target "http://www.db-ip.com/" \end_inset databases \end_layout \begin_layout Itemize finally release 1.0.0 after 16 year of development \end_layout \begin_layout Subsection 2016 \end_layout \begin_layout Itemize implement action 'test' and extend action 'filter' with support of address ranges (>= 0.99.2) \end_layout \begin_layout Subsection 2015 \end_layout \begin_layout Itemize Introduce mod_ipv6calc for Apache web server (>= 0.99.1) \end_layout \begin_layout Itemize Add support for \begin_inset CommandInset href LatexCommand href name "DB-IP.com" target "http://www.db-ip.com/" \end_inset databases (by generated Berkeley DB files) (>= 0.98.0) \end_layout \begin_layout Itemize Add support for \begin_inset Quotes eld \end_inset External \begin_inset Quotes erd \end_inset database files (generated Berkeley DB files), superseeding (if newer) built-in IPv4/IPv6->Registry and adding IPv4/IPv6->CountryCode support (>= 0.98.0) \end_layout \begin_layout Itemize Extend filter options with support of CountryCode, ASN or Registry (>= 0.99.0) \end_layout \begin_layout Itemize Add support for \begin_inset CommandInset href LatexCommand href name "IP2Location LITE" target "http://lite.ip2location.com/" \end_inset databases (>= 0.99.0), add configurable IP2Location database autoselection support \end_layout \begin_layout Subsection 2014 \end_layout \begin_layout Itemize Shared library mode supported (reduces size of binaries) \end_layout \begin_layout Subsection 2013 \end_layout \begin_layout Itemize Prefix and IID anonymization methods \end_layout \begin_layout Itemize Support of dynamic load of GeoIP and IP2Location libraries \end_layout \begin_layout Itemize Specifying dedicated GeoIP and IP2Location database files is now replaced by specifying dedicated database directories to make especially for GeoIP use of more database files. \end_layout \begin_layout Subsection 2011 \end_layout \begin_layout Itemize ipv6calc/ipv6calcweb.cgi: enable included GeoIP support with IPv6 (usable with GeoIP >= 1.4.5) \end_layout \begin_layout Itemize ipv6calc: extend for 6rd support (--action 6rd_local_prefix --6rd_prefix --6rd_relay_prefix ) \end_layout \begin_layout Itemize ipv6calc: enable stdin support for bulk transformation \end_layout \begin_layout Itemize ipv6calc: add support for NAT64 address type \end_layout \begin_layout Itemize ipv6calc: add option \begin_inset Quotes eld \end_inset forceprefix \begin_inset Quotes erd \end_inset to print prefix of an address without a given prefix length \end_layout \begin_layout Itemize ipv6loganon: extend for pipe usage (e.g. in Apache log file directive) and write/append to specified file \end_layout \begin_layout Itemize General: add configure options to disable built-in databases (reduce binary size a lot, e.g. for embedded devices) \end_layout \begin_layout Subsection 2002-2010 \end_layout \begin_layout Standard See \begin_inset CommandInset href LatexCommand href name "ChangeLog@GitHub" target "https://raw.githubusercontent.com/pbiering/ipv6calc/master/ChangeLog" \end_inset for now \end_layout \begin_layout Subsection 2001 \end_layout \begin_layout Itemize Start of development \end_layout \end_body \end_document ipv6calc-1.0.0/doc/ipv6calc.sgml000066400000000000000000002636621312366535500164070ustar00rootroot00000000000000 ]>
The ipv6calc Homepage PeterBieringer
pb at bieringer dot de
7.0 2017-06-25 PB
General ipv6calc is a small utility written in programming language C to manipulate (not only) IPv6 addresses and is able to do other tricky things. Intentions were convering a given IPv6 address into compressed format, convering a given IPv6 address into the same format like shown in /proc/net/if_inet6 and (because it was not difficulty) migrating the Perl program ip6_int into. Now only one utiltity is needed to do a lot. This utility was also used in the past to extend features on network-functions-ipv6 library, used by initscripts-ipv6. Note: this tool got also its freecode.com (former freshmeat, now also EOL) / ipv6calc page (but this is not maintained by the author) Latest version Latest version since last update of this page is 1.0.0 Included programs “ipv6calc”: the main utility“ipv6calcweb”: CGI wrapper for ipv6calc's address information output“ipv6logconv”: log converter (IPv4/IPv6)“ipv6loganon”: log anonymizer (IPv4/IPv6)“ipv6logstats”: log statistic generator (IPv4/IPv6)“mod_ipv6calc”: Apache module Included databases If not disabled during compiling of the tool, following databases are statically included, since version 0.95.0 internally mentioned as “BuiltIn”: IEEE IAB, OUI, OUI-36 databases (for decoding vendor part of MAC/EUI-48/EUI-64)IPv4 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv4 anonymization)IPv6 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv6 anonymization)ASN assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for IPv4/IPv6 anonymization)LISP assignment database for supplying extra info Possible external databases If enabled during compiling the tool, following external (but local stored) databases can be used GeoIP IPv4 (since 0.61.0, released 2006)IPv6 (since 0.90.0, released 2011, req. GeoIP >= 1.4.5)release 0.99.0 is tested against GeoIP >= 1.4.4IP2Location IPv4 (since 0.60.0, released 2006)IPv6 (since 0.70.0, released 2007, IP2Location LITE IPv6 Databases since 0.99.0, released 2015)release 0.99.0 is tested against IP2Location >= 4.0.2DB-IP.com (since 0.98.0, released 2015), based on local Berkeley DB files generated from downloaded CSV files“External” (since 0.98.0, released 2015), based on local Berkeley DB files, generated from downloaded TXT/XML files (registries assignment databases). Supporting IPv4/IPv6 to Registries and IPv4/IPv6 to CountryCode. If newer, overruling the related included databases.Since version 0.95.0 the tool can be compiled to use dynamically loading of library, means the binaries can be also used on systems where IP2Location or GeoIP libraries are not existing. On such system, the support is simply disabled then and some capabilities/features which requires the databases are disabled. Since version 0.97.4 also fallback code for GeoIP and IP2Location is included in the source package, means that support of dynamically loading of library can be included during compilation without having related development sources on the system. License The program is published under the GNU GPL version 2. Copyright (C) 2001 - 2017 by Dr. Peter Bieringer Author The author of ipv6calc is Dr. Peter Bieringer with some minor contribution by others Where to get sources or binaries Latest version of sources Via GitHub (since 2016-09-05) at GitHub / ipv6calc Releases as tar.gz or zip via HTTPS at GitHub / ipv6calc / releases as tar.gz (signed) Via FTP at DeepSpace6: DeepSpace6 / anonymous FTPVia FTP at ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/Since version 0.95.0 packages are signed with new GPG key, also available here: CODE-GPG-KEY-bieringer.de-2013 @ftp.bieringer.de or CODE-GPG-KEY-bieringer.de-2013 @ftp.deepspace6.net ]]>A SPEC file is included, so you can build a RPM from tar.gz using In addition, conditional build options are available (see related configure options below): as RPM Currently only on rpmfind / ipv6calc, but there are plans to publish at least source RPMS on DeepSpace6 some day. Ready to use packages for several operating systems: Fedora Linux Fedora 22 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default. See also FedoraProject / Package / ipv6calc Red Hat Enterprise Linux and clones It's tested by the developer that creation of the RPM is working fine starting with RHEL 4. RHEL/CentOS 5 has the package included by default (but an rather old version) RPMs of newer releases are available as test builds on koji, see related URL in announcements ipv6calc-announce / list archiveRHEL/CentOS 6/7: available since September 2014 on FedoraProject / EPEL, see also FedoraProject / Package / ipv6calcCentOS 6/7 are also platforms for regression tests. Gentoo/Funtoo Package is maintained, nevertheless, Funtoo is used as platform for regression tests. Ubuntu Package is maintained, more information can be found at https://packages.ubuntu.com/ipv6calc Debian GNU/Linux Package is maintained, more information can be found at http://packages.debian.org/ipv6calc openSUSE Package is maintained, more information can be found at http://download.opensuse.org/repositories/home:/uebelhacker/ NetBSD See here for more: ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/ipv6calc/README.html FreeBSD See here for more: http://www.freshports.org/net-mgmt/ipv6calc/ (http://www.freebsd.org/cgi/query-pr.cgi?pr=34441) OpenBSD See here for more: http://www.openbsd.org/cgi-bin/cvsweb/ports/net/ipv6calc/ Configuring & Compiling Configuring Following “ipc6calc” related configure options are currently supported (note: disabling the internal databases reduces the size of the resulting binaries/shared library a lot): Compiling As usual, use and run tests afterwards using or at least (e.g. if external databases are not available) Configuring & Compiling with Presets A shell script is included which can configure and compile with standard presets (also used during regression tests): Mailling Lists ipv6calc-announce Reason:sending announcements of new versionsTraffic:very lowPostings:only moderators are allowed to postInformation:DeepSpace6 / maillist ipv6calc-announce ipv6calc Reason:discussionsTraffic:lowPostings:subscribersInformation:DeepSpace6 / maillist ipv6calc Bug Reports You can send bug reports to the author himself or subscribe to maillist “ipv6calc” and send it to the list. Features of ipv6calc Description The main program named “ipv6calc” is able to recognize many (not only) IPv6 address formats and depending on a selectable action (not required) a selectable output format can be specified. Also it has the capability to show detailed information of an IPv4/IPv6 address or anonymize it. List of built-in features Option “-v” shows built-in features, depending on configuration before compiling: Option “-v -v” (since 0.91.0) shows built-in features and capabilities in detail, depending on configuration before compiling: SA* Country4=72 Country6=96 City4=72 City6=96 IP2Location: selected best databases normal Country4=35 Country6=35 City4=35 City6=35 IP2Location: selected best databases method: * = autoswitch from LITE to SAMPLE enabled in case not older than 12 months and having more features IP2Location: selected best databases method: COMM older than 12 months are deselected in case of LITE is available IP2Location: selected best databases method: COMM/LITE/SAMPLE with more features are only selected in case not older than 1 months of already found COMM/LITE/SAMPLE IP2Location: selected best databases method: softlinks: skipped-by-default db-ip.com: features available/implemented: 0x30003fc0/0x30003fc0 (100%) DBIP: info of available databases in directory: /usr/share/DBIP DBIP: IPv4 CountryCode (FREE) : ipv6calc-dbip-ipv4-country.db (DBIP-1/20161001, created: 20161009-090609 UTC) DBIP: IPv6 CountryCode (FREE) : ipv6calc-dbip-ipv6-country.db (DBIP-2/20161001, created: 20161009-090609 UTC) DBIP: IPv4 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv4-city.db (DBIP-3/20161001, created: 20161009-090650 UTC) DBIP: IPv6 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv6-city.db (DBIP-4/20161001, created: 20161009-090650 UTC) DBIP: IPv4 Location/ISP (COMM) : ipv6calc-dbip-ipv4-full.db (DBIP-9/20170201, created: 20170221-183104 UTC) DBIP: IPv6 Location/ISP (COMM) : ipv6calc-dbip-ipv6-full.db (DBIP-10/20170201, created: 20170221-183104 UTC) DBIP: detected best databases FREE Country4=3 Country6=4 City4=3 City6=4 DBIP: detected best databases COMM Country4=9 Country6=10 City4=9 City6=10 DBIP: selected best databases normal Country4=9 Country6=10 City4=9 City6=10 DBIP: selected best databases method: COMM older than 12 months are deselected in case of FREE is available DBIP: selected best databases method: COMM/FREE with more features are only selected in case not older than 1 months of already found COMM/FREE External: features available/implemented: 0xc00000cc/0xc00180cc (75%) External: info of available databases in directory: /usr/share/ipv6calc/db External: IPv4 Registry : ipv6calc-external-ipv4-registry.db (EXTDB-1/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/20160929 RIPENCC/20160929, created: 20160930-164535 UTC) External: IPv6 Registry : ipv6calc-external-ipv6-registry.db (EXTDB-2/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC) External: IPv4 CountryCode : ipv6calc-external-ipv4-countrycode.db (EXTDB-3/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/20160929 RIPENCC/20160929, created: 20160930-164535 UTC) External: IPv6 CountryCode : ipv6calc-external-ipv6-countrycode.db (EXTDB-4/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC) BuiltIn: features available/implemented: 0x0001c00f/0x0001c00f (100%) BuiltIn: info of available databases BuiltIn: ASN : IANA/20160908 BuiltIn: CC : AFRINIC/20161224 APNIC/20161223 ARIN/20161224 LACNIC/20161223 RIPENCC/20161223 BuiltIn: IPv4 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20150810 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170224-184411 UTC) BuiltIn: IPv6 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20170104 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170225-075038 UTC) BuiltIn: IEEE : IAB/20161218 OUI/20161117 OUI36/20161218 Database selection or priorization ('->': subsequential calls) Database priorization default: GeoIP->IP2Location->db-ip.com->External->BuiltIn DB_AS_REG (AS-Number to Registry database): BuiltIn DB_CC_REG (CountryCode to Registry database): BuiltIn DB_IPV4_REG (IPv4 to Registry database): BuiltIn DB_IPV6_REG (IPv6 to Registry database): BuiltIn DB_IPV4_AS (IPv4 to AS database): GeoIP DB_IPV6_AS (IPv6 to AS database): GeoIP DB_IPV4_CC (IPv4 to CountryCode database): GeoIP->IP2Location->db-ip.com->External DB_IPV6_CC (IPv6 to CountryCode database): GeoIP->IP2Location->db-ip.com->External DB_IPV4_COUNTRY (IPv4 to Country database): GeoIP->IP2Location->db-ip.com DB_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location->db-ip.com DB_IPV4_CITY (IPv4 to City database): GeoIP->IP2Location->db-ip.com DB_IPV6_CITY (IPv6 to City database): GeoIP->IP2Location->db-ip.com DB_IPV4_REGION (IPv4 to Region database): GeoIP->IP2Location->db-ip.com DB_IPV6_REGION (IPv6 to Region database): GeoIP->IP2Location->db-ip.com DB_IEEE (IEEE/OUI/OUI36 Vendor database): BuiltIn DB_IPV4_INFO (IPv4 additional information): BuiltIn DB_IPV6_INFO (IPv6 additional information): BuiltIn ]]>Option “-v -h” (since 0.97.4) shows explanation of feature tokens Note: since version 0.95.0 the internal layer for database usage was abstracted and each database “plugin” is initialized reporting then its supporting features in binary representation. This makes implementation of other external databases easier in the future. There are at least plans to create an overlay to built-in databases by publishing and use some “precompiled” newer databases replacing the need of recompilation for updated built-in databases. Examples Conversion A simple example is the conversion of an IPv6 address to a DNS PTR query string: Like you see, input format was autodetected. And the given example can be extended because ipv6calc also understands netmask / prefix length values: Also you've also learnt now that switch '-q' (quiet) suppresses informational messages. You can use this now to start a DNS PTR query using: But ipv6calc can do many more for you! Next example shows you the extraction of the IPv4 address contained in a 6to4 IPv6 address: This also works vice-versa: There are many more features already implemented, if you miss one, send a note. Information Depending on available databases output can vary. Information about a simple IPv6 address: Information about a Teredo IPv6 address: Information about a LISP address Machine readable output There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, database related information can be displayed, if databases are located on the system and supported. " IPV6CALC_OUTPUT_VERSION=10 IPV6CALC_SETTINGS_ANON="set=keep-type-asn-cc,mask-ipv6=56,mask-ipv4=24,mask-eui64=40,mask-mac=24,method=keep-type-asn-cc" IPV6CALC_FEATURES="GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC" IPV6CALC_CAPABILITIES="GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG(BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(BuiltIn)" ]]>Special machine readable output options (>= 0.99.0) Output filter by selecting a token (>= 0.99.0) Using option --mrst <TOKEN> (Machine Readable Select Token) can be used to display only token Output filter by matching token (>= 0.99.0) Using option --mrmt <TOKEN> (Machine Readable Match Token) can be used to display only matching tokens Output filter by selecting a value of a token token (>= 0.99.0) Using option --mrtvo <TOKEN> (Machine Readable Token Value Only) can be used to display only value of a token Output adjustment by unconditional quoting of values (>= 0.99.0) Using option --mrqva (Machine Readable Quote Values Always) can be used to quote values always Output adjustment by unconditional disabling quoted values (>= 0.99.0) Using option --mrqvn (Machine Readable Quote Values Never) can be used to never quote values Output adjustment by unconditional print token in case of empty value (>= 0.99.0) Using option --mrstpq (Machine Readable Select Token Print Always) can be used to print always token/value regardless it's contained Filter mode “ipv6calc” can run in filter mode to be able to extract from a huge list of IPv4/IPv6 addresses ones which are interesting or ones which are not interesting (see printout of online help below). Filter tokens are the ones which are listed on “TYPE” lines shown in “-m -i” information mode. Example for searching for Teredo addresses: For more information see below Note: since version 0.95.0 '-A filter' is optional if option '-E <filter expression>' is given (autoselected action). Test mode Since 0.99.2 a test mode ('-A test', autoselected in case 'test_*' options are given) is implemented for address prefix or range For more information see below Option style Since version 0.40 new-style option handling was introduced, using --in <inputtype>--out <outputtype>--action <actiontype>and many more conversions were added. A built-in check matrix should prevent misconversions. Up to version 0.39, only old-style options (aka “shortcut” options). They are one-in-all options, specifying input/action/output in one token. Internally this options will be converted into new-style options. Online help Online help always shows the currently implemented features. Main online help: External database options only appear if compiled with related support. This program formats and calculates IPv6/IPv4/MAC addresses and can do many more tricky things [-d|--debug ] : debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value [-v|--version [-v [-v]]] : version information (2 optional detail levels) [-v|--version -h] : explanation of feature tokens [-V|--verbose] : be more verbose [-h|--help|-?] : this online help [--disable-ip2location ] : IP2Location support disabled [--db-ip2location-disable ] : IP2Location support disabled [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) [--db-ip2location-only-type ]: IP2Location database only selected type (1-24) [--db-ip2location-allow-softlinks] : IP2Location database softlinks allowed [--db-ip2location-lite-to-sample-autoswitch-max-delta-months ]: autoswitch from LITE to SAMPLE databases if possible and delta is not more than 12 months (0=disabled) [--db-ip2location-comm-to-lite-switch-min-delta-months ]: switch from COMM to LITE databases if possible and delta more than 12 months (0=disabled) [--disable-geoip ] : GeoIP support disabled [--db-geoip-disable ] : GeoIP support disabled [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) [--disable-dbip ] : db-ip.com support disabled [--db-dbip-disable ] : db-ip.com support disabled [--db-dbip-dir ] : db-ip.com database directory (default: /usr/share/DBIP) [--disable-external ] : External support disabled [--db-external-disable ] : External support disabled [--db-external-dir ] : External database directory (default: /usr/share/ipv6calc/db) [--disable-builtin ] : BuiltIn support disabled [--db-builtin-disable ] : BuiltIn support disabled [-q|--quiet] : be more quiet (auto-enabled in pipe mode) [-f|--flush] : flush each line in pipe mode Usage with new style options: [--in|-I ] : specify input type (default: autodetect) [--out|-O ] : specify output type (sometimes: autodetect) [--action|-A ] : specify action (default: format conversion, sometimes: autodetect) [ ...] : specify format options [...] : input data Available input types: [-m] -I|--in -?|-h|--help Available output types: [-m] -O|--out -?|-h|--help Available action types: [-m] -A|--action -?|-h|--help Other usage: --showinfo|-i [--machine_readable|-m] : show information about input data --showinfo|-i --mrqva : Machine Readable Quote Values Always --showinfo|-i --mrqvn : Machine Readable Quote Values Never --showinfo|-i --mrst : Machine Readable Select Token --showinfo|-i --mrstpa : Machine Readable Select Token Print Always --showinfo|-i --mrmt : Machine Readable Match Token Prefix --showinfo|-i --mrtvo : Machine Readable Token Value Only --showinfo|-i --show-tokens : show available tokens (aka types) on '-m' Usage with shortcut options: [ ...] for more information and available format options use: -?|-h|--help -r|--addr2ip6_int (-O revnibbles.int) -r|--addr_to_ip6int (-O revnibbles.int) -a|--addr2ip6_arpa (-O revnibbles.arpa) -a|--addr_to_ip6arpa (-O revnibbles.arpa) -b|--addr_to_bitstring (-O bitstring) --addr2compaddr (--printcompressed) --addr_to_compressed (--printcompressed) --addr2uncompaddr (--printuncompressed) --addr_to_uncompressed (--printuncompressed) --addr_to_base85 (-I ipv6addr -O base85) --base85_to_addr (-I base85 -O ipv6addr) --mac_to_eui64 (-I mac -O eui64) --addr2fulluncompaddr (--printfulluncompressed) --addr_to_fulluncompressed (--printfulluncompressed) --addr2if_inet6 (-I ipv6addr -O ifinet6) --addr_to_ifinet6 (-I ipv6addr -O ifinet6) --if_inet62addr (-I ifinet6 -O ipv6addr --printcompressed) --ifinet6_to_compressed (-I ifinet6 -O ipv6addr --printcompressed) --eui64_to_privacy (-I iid_token -O iid_token -A genprivacyiid) --ipv4_to_6to4addr (-I ipv4 -O ipv6addr -A conv6to4) ]]> Database options each internal/external database can be disabled by optiondirectory of database files can be given via related optiondatabases requiring external library the library file can be given in case of dynamic load and linking IP2Location IP2location database directory can contain a bunch of files, the best ones are selected automatically (since 0.99.0). “Best” can be controlled via two options: --db-ip2location-lite-to-sample-autoswitch-max-delta-months <MONTHS>: switches from LITE to SAMPLE databases in case of existing SAMPLE databaseSAMPLE database not older than default/given MONTHS than the LITE databaseIP address is in range of SAMPLE database (IPv4: 0.0.0.0-99.255.255.255, IPv6: 2a04::/16)autoswitch can be disabled by using MONTHS=0reason for implementation: show maximum possible IP2Location features--db-ip2location-comm-to-lite-switch-min-delta-months <MONTHS>: switches from COMMercial to LITE databases in case of existing LITE databaseCOMMercial database is default/given MONTHS older than the LITE databaseswitch can be disabled by using MONTHS=0reason for implementation: avoid using old COMMercial databases--db-ip2location-only-type <TYPE>: only selects databases of given type reason for implementation: be able to select a specific database type--db-ip2location-allow-softlinks: allow softlinked IP2Location database files by default, softlinked database files are skipped, because it's hard to detect whether one is COMMercial, LITE or SAMPLE use “ipv6calc -vv” or “ipv6calc -vvv” for verification, which databases are selected finally. Input-type options Available input types: auto : automatic detection revnibbles.int : dot separated nibbles reverse, ending with ip6.int. revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa. bitstring : bitstring labes, ending with ip6.arpa. ipv6addr : IPv6 address ipv6literal : IPv6 address in literal ipv4addr : IPv4 address ipv4hex : IPv4 in hexdecimal format ipv4revhex : IPv4 in byte-reversed hexdecimal format mac : MAC address (48 bits) eui64 : EUI-64 identifier (64 bits) base85 : Base-85 string ifinet6 : Like line in /proc/net/if_inet6 iid+token : Interface identifier and token ipv6logconv : ipv6logconv (currently not supported) prefix+mac : IPv6 prefix and a MAC address asn : Autonomous System Number ]]> Output-type options: Available output types: revnibbles.int : dot separated nibbles reverse, ending with ip6.int. revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa. bitstring : bitstring labes, ending with ip6.arpa. ipv6addr : IPv6 address ipv4addr : IPv4 address mac : MAC address (48 bits) eui64 : EUI-64 identifier (64 bits) base85 : Base-85 string ifinet6 : Like line in /proc/net/if_inet6 iid : Interface identifier iid+token : Interface identifier and token addrtype : Address type ouitype : OUI (IEEE) type ipv6addrtype : IPv6 address type any : any type (currently not supported) revipv4 : reverse IPv4, ending with in-addr.arpa ipv4hex : IPv4 in hexdecimal format octal : IP address in escaped octal format hex : IP address in hexadecimal format ipv6literal : IPv6 address in literal For examples and available format options use: -O|--out --examples ]]> Action-type options: Available action types: auto : Automatic selection of action (default) geneui64 : Converts a MAC address to an EUI-64 address conv6to4 : Converts IPv4 address <-> 6to4 IPv6 address (prefix) convnat64 : Converts IPv4 address <-> NAT64 IPv6 address genprivacyiid : Generates a privacy interface ID out of a given one (arg1) and a token (arg2) prefixmac2ipv6 : Generates an IPv6 address out of a prefix and a MAC address anonymize : Anonymize IPv4/IPv6 address without loosing much information 6rd_local_prefix : Calculate the 6rd prefix from given IPv6 prefix (& relay prefix) and IPv4 Options: --6rd_prefix ... (required) --6rd_relay_prefix ... (optional) 6rd_extract_ipv4 : Extract from 6rd address the include IPv4 address Options: --6rd_prefixlength ... (required) filter : Filter addresses related to filter options ]]> Special action “filter”: Special action “filter” can be used especially in pipe mode to filter IP addresses related to their type and since 0.99.0 also related to database results (CountryCode, ASN or Registry). ' is given) negation of filter expression with prefix: ^ IPv6 address filter tokens: ipv6 unknown unicast multicast anycast loopback link-local site-local compat-v4 mapped reserved unique-local-unicast anonymized-iid anonymized-prefix 6to4 6bone global-unicast unspecified solicited-node productive 6to4-microsoft teredo orchid link-local-teredo nat64 iid-random iid iid-local iid-global iid-teredo iid-eui48 iid-eui64 iid-isatap iid-includes-ipv4 IPv4 address filter tokens: ipv4 any unicast multicast anycast broadcast loopback unspecified unknown reserved zeroconf site-local anonymized global 6to4relay IPv4/v6 address filter tokens based on databases: [^][ipv4.|ipv6.]db.cc=|unknown (Country Code [2 chars]) [^][ipv4.|ipv6.]db.asn=|unknown (Autonomous System Number) [^][ipv4.|ipv6.]db.reg= Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown IPv4/v6 address filter tokens based on address/mask: [^]ipv4.addr=[] [^]ipv6.addr=[] IPv4/v6 address filter tokens based on address ranges (<=|<|>|>=): [^]ipv4.addr(<=|<|>|>=) [^]ipv6.addr(<=|<|>|>=) as alternative in case <|> creating problems also supported: =(le|lt|gt|ge)=: [^]ipv4.addr=(le|lt|gt|ge)= [^]ipv6.addr=(le|lt|gt|ge)= EUI-48/MAC address filter tokens: IMPLEMENTATION MISSING EUI-64 address filter tokens: IMPLEMENTATION MISSING ]]>Example for some filter expressions: Example for searching for addresses in a specific range (supported since 0.99.2): Special action “test”: Special action “test” (since 0.99.2) can be used in command line or pipe mode (single address only) to test IP addresses related to a given prefix or range . : inside a prefix --test_gt|--test_ge
: greater(/equal) than an address --test_lt|--test_le
: less(/equal) than an address Test given address(es) from stdin, e.g. echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db8::/32 echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db9::/32 Single address test, return code: 0=inside/matching 1=outside/not-matching 2=uncomparable ipv6calc [-A test] --test_prefix 2001:db8::/32 2001:db8::1 ipv6calc [-A test] --test_prefix 2001:db9::/32 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db9:: --test_le 2001:db9:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db9:: --test_lt 2001:dba:: 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db8:: --test_lt 2001:db9:: 2001:db8::1 ]]>Example for command line mode: Example for command line mode (quiet): Example for pipe mode: Webserver log conversion helper program "ipv6logconv" This program parses address tokens of a given webserver logfile and converts them to special strings, useful for statistics (e.g. created by using "analog"). Supported options General: [-d|--debug ] : debug value (bitwise like) [-q|--quiet] : be more quiet [-n|--nocache] : disable caching [-c|--cachelimit ] : set cache limit default: 20 maximum: 200 Output: [--out ] : specify output type addrtype : Address type ouitype : OUI (IEEE) type ipv6addrtype : IPv6 address type any : any type Takes data from stdin, proceed it to stdout ]]> Examples A demonstration about which kind of statistics are possible to produce is shown at http://www.ipv6.bieringer.de/ (IPv6 only). Usage Example: See more examples inside the package. Webserver log anonymization helper program "ipv6loganon" On autoconfiguration, the interface part of an IPv6 address is based on the MAC address of the network interface card (NIC). This address is used for outgoing requests, if privacy option (RFC3041 / RFC4941) is not enabled. This results in many privacy related information on web- or mail-server log files. Administrators, which won't (be allowed to) store such information over time, but still do not want to loose information about address type distribution should use 'ipv6loganon' to anonymize their log files. Since version 0.94.0 internally also IID anonymization is possible without loosing any information for “ipv6logstats”. Since version 0.95.0 internally also prefix anonymization is possible without loosing any information for “ipv6logstats”. Anonymization details Method “zeroize” The anonymizer would keep as much information as possible for IPv6 address types. Client-side IID would be anonymized by EUI-48 based: serial number would be zero'ed, keeping OIDEUI-64 based: serial number would be zero'ed, keeping OIDISATAP: client IPv4 address would be anonymized by given IPv4 maskTEREDO: client IPv4 address would be anonymized by given IPv4 mask, client port would be zero'ed6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 masklocal: whole IID would be zero'edClient-side SLA would be anonymized by SLA would be zero'edPrefix would be anonymized by 6to4: client IPv4 address would be anonymized by given IPv4 maskCompat/Mapped IPv4 addresses would be anonymized by IPv4 address would be anonymized by given IPv4 mask Method “anonmize” The anonymizer would keep as much information as possible for the IID of an IPv6 address. Description from libipv6addr.h: RFC 4941 anonymized privacy extension Interface ID * * a9p9 4291 4xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted OUI * a9p9 4291 5xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted mapped IAB/OUI-36 * a9p9 4291 6xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted OUI * a9p9 4291 7xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted mapped IAB/OUI-36 * a9p9 4291 8xxx xxxC -> RFC 4291 embedded anonymized IPv4 address, xxx xxx = first 24 bit of included (anonymized) IPv4 address * a9p9 4291 c02d 5d1C -> RFC 4291 Chapter 2.5.1 anonymized static Interface ID * * a9p9 5214 4xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (local scope) * a9p9 5214 5xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (global scope) * a9p9 5214 cxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (local scope) * a9p9 5214 dxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (global scope) * a9p9 5214 exxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (local scope) * a9p9 5214 fxxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (global scope) * * a9p9 4843 0000 000C -> RFC 4843 anonymized ORCHID hash ]]>Depending on given mask, the part of the prefix will be replaced: Method “keep-type-asn-cc” In addition to “anonymize” (of IID) this method anonymizes also the prefix of an IPv6 address or a whole IPv4 address by keeping ASN (Autonomous System Number, Country Code and Type). Description from libipv6addr.h: 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) * 0x3FD = LISP * 0x3FE = unknown country * 0x3FF - 16 + REGISTRY_6BONE && ASN=0 = 6bone * 0x000-0x3A7: c1= c / 36, c2 = c % 36 * aaaaaaaa -> 32-bit ASN ]]>Description from libipv4addr.h: = 65536, ASN & 0xE000 == 0 (12-bit LSB is ok) * 1|r r r|0|l l l l l l l l l l l l| * 13-bit LSB of ASN * * Mapping of ASN >= 65536, ASN & 0xE000 != 0 (12-bit LSB overflow) => unspecified * 1|r r r|1|0 0 0 0 0 0 0 0 0 0 0 0| * * Mapping of ASN registry for ASN >= 65536 * 0 0 0 = "unknown ASN registry" * 0 1 0 = APNIC * 0 1 1 = RIPE * 1 0 0 = LACNIC * 1 0 1 = AFRINIC * 1 1 0 = ARIN * Mapping of LISP * 1|r r r|1|1|0 0 0 0 0 0 0 0 0 0 0| ]]> Supported log file formats Currently native supported log files: Apache log file format, 1st token is IPv4 or IPv6 addressThere are plans to support also mail server log files sometimes in the future, but because of different formats, this would be probably done by a Perl program which parses the log file and a (cached) 'ip6calc' call with action 'anonymize'. Supported options This program anonymizes IPv4/IPv6 addresses in e.g. HTTP server log files [-d|--debug ] : debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value [-v|--version [-v [-v]]] : version information (2 optional verbose levels) [-h|--help|-?] : this online help [--db-ip2location-disable ] : IP2Location support disabled [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) [--db-geoip-disable ] : GeoIP support disabled [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) [-w|--write] : write output to file instead of stdout [-a|--append] : append output to file instead of stdout [-f|--flush] : flush output after each line [-V|--verbose] : be verbose [-n|--nocache] : disable caching [-c|--cachelimit ] : set cache limit default: 20 maximum: 200 Shortcut for anonymization presets: --anonymize-standard (default) --anonymize-careful --anonymize-paranoid Supported methods [--anonymize-method METHOD]: anonymize : reliable anonymization, keep as much type information as possible zeroize : simple zeroizing according to given masks, probably loose type information keep-type-asn-cc: special reliable anonymization, keep type & Autonomous System Number and CountryCode Available presets (shortcut names) [--anonymize-preset PRESET-NAME]: anonymize-standard (as): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=anonymize anonymize-careful (ac): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac=24 mask-autoadjust=yes method=anonymize anonymize-paranoid (ap): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac=24 mask-autoadjust=no method=anonymize zeroize-standard (zs): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=zeroize zeroize-careful (zc): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac=24 mask-autoadjust=yes method=zeroize zeroize-paranoid (zp): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac=24 mask-autoadjust=no method=zeroize keep-type-asn-cc (kp): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=keep-type-asn-cc Custom control: --mask-ipv4 : mask IPv4 address [0-32] (even if occurs in IPv6 address) --mask-ipv6 : mask IPv6 prefix [0-64] (only applied to related address types) --mask-eui64 : mask EUI-64 address or IPv6 interface identifier [0-64] --mask-mac : mask MAC address [0-48] --mask-autoadjust yes|no: autoadjust mask to keep type/vendor information regardless of less given mask Takes data from stdin, outputs the processed data to stdout (default) ]]> Usage Offline anonymization /path/to/http_log_anonymized ]]> On-the-fly online anonymization for Apache Webserver
Note: since 0.91.1 also an module for Apache Webserver is available (see below) supporting anonymized logging
(Supported since 0.90.0) Adjust or add (note: more than one CustomLog directive is supported by Apache) httpd.conf like following: In case of “cronolog” is used on the system, configure like this: Apache version < 2.4: Apache version >= 2.4:
External database update helper scripts The “tools” subdirectory contains helper scripts for updating external databases. IP2Location ] [-n] [-s] -D database destination directory (optional) -n no action (dry-run) -s skip already successfully downloaded files database directory: /usr/share/IP2Location (default: /usr/share/IP2Location) it honors externally defined environment value: IP2LOCATION_DAT_DIR this script will download data from ip2location.com into given/set database directory Sample databases: IP2LOCATION_DAT_FILES_SAMPLE=IPv4:20 IPv6:20 IPv4:24 IPv6:24 Lite (free) databases: IP2LOCATION_DAT_FILES_LITE_FREE=IPv4:1 IPv6:1 With authentication (requires login/password in /home/compile/.ip2location) and a valid subscription IP2LOCATION_DAT_FILES_LITE= Credentials must be defined in $HOME/.ip2location by login=IP2LOCATION-LOGIN password=IP2LOCATION-PASSWORD In addition settings from above can be overwritten by setting related variables ]]> GeoIP ] -D database directory (optional) database directory: /usr/share/GeoIP (default: /usr/share/GeoIP) it honors externally defined environment value: GEOIP_DAT_DIR this script will download data from geolite.maxmind.com (GeoIP) into given/set database directory GEOIP_DAT_URL_BASE=http://geolite.maxmind.com/download/geoip/database/ GEOIP_DAT_FILES=GeoLiteCountry/GeoIP.dat.gz GeoIPv6.dat.gz GeoLiteCity.dat.gz GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz asnum/GeoIPASNum.dat.gz asnum/GeoIPASNumv6.dat.gz ]]> DB-IP.com ] -s skip download -D database directory (optional) database directory: /usr/share/DBIP (default: /usr/share/DBIP) it honors externally defined environment value: DBIP_DAT_DIR this script (and its helper scripts) will download data from DB-IP.com (free versions) and generate Berkeley DB files for ipv6calc "DBIP" database support DBIP_DAT_URL_BASE=http://download.db-ip.com/free/ DBIP_DAT_FILES=dbip-country-%Y-%m.csv.gz dbip-city-%Y-%m.csv.gz ]]> External ] -s skip download -u unconditional update -D database directory (optional) database directory: /usr/share/ipv6calc/db (default: /usr/share/ipv6calc/db) it honors externally defined environment value: IPV6CALC_DAT_DIR this script (and its helper scripts) will download data from registries and generate Berkeley DB files for ipv6calc "external" database support ]]> Perl CGI wrapper program "ipv6calcweb.cgi" Because calling C programs directly as CGI isn't really recommended (too much security troubles all the time), I wrote a small wrapper utility which calls "ipv6calc" to get information about client and server address for displaying on a web page. Examples A demonstration about which kind of output is possible to produce is shown at http://ip.bieringer.de/ (IPv4/IPv6)http://www.ipv6.bieringer.de/ (IPv6 only)http://mirrors.bieringer.de/ (IPv4/IPv6)http://www.sixxs.net/tools/ipv6calc/ (IPv4/IPv6) Webserver log statistics helper program "ipv6logstats" This program parses a given webserver logfile and count addresses, useful for time period statistics. Since version 0.95.0 it has extended output, adding a date/time line and statistics by Country Code and ASN (if required databases are available). Supported options Takes web server log data (or any other data which has IPv4/v6 address in first column) from stdin and print statistics table/list (depending on option) to stdout [-d|--debug ] : debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value [-v|--version [-v [-v]]] : version information (2 optional verbose levels) [-h|--help|-?] : this online help [--db-ip2location-disable ] : IP2Location support disabled [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) [--db-geoip-disable ] : GeoIP support disabled [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) [-u|--unknown] : print unknown IP addresses to stderr [-c|--columns] : print statistics in columns (1) [-n|--noheader] : don't print header in columns mode (1) [-o|--onlyheader] : print only header in columns mode (1) [-p|--prefix ] : print token as prefix (1) [-q|--quiet] : be more quiet [-s|--simple] : disable extended statistic (CountryCode/ASN) (1) unsupported for CountryCode & ASN statistics ]]> Usage There are a README and some helper scripts available in the package how to use this program and how to generate a graph using Gnuplot. Line-by-line output The example shows output version 3.0, which Header section, since output version 3.0 (>= 0.95.0) additional lines starting with '*3*' and '*DateTime' and '*UnixTime' included Simple statistics section External database supported output since output version 3.0 (>= 0.95.0) Country Code / Proto Proto / Country Code (“ALL” line contains: ALL IPv4 IPv6) Autonomous System number / Proto Proto / Autonomous System number (“ALL” line contains: ALL IPv4 IPv6) Column output Column output does not support version 3 extension, only simple statistics with a header line: An optional prefix token can be given (“-p <prefix>”) to create e.g. in a for-loop one line per month and put month in front of statistics, also the header line can be suppressed (“-n”). Examples A demonstration with real data is available at http://mirrors.bieringer.de/stats/timeline.html. Apache web server module “mod_ipv6calc” This Apache web server module (since version 0.99.1, released 2015) interfaces with internal ipv6calc library to support Client IP address anonymization “on-the-fly”, exported to IPV6CALC_CLIENT_IP_ANON depending on the configured anonymization method 3rd party database is requiredCountry code of client IP address, exported to IPV6CALC_CLIENT_COUNTRYCODE requires 3rd party database: GeoIP or IP2Location or DB-IP.comAutonomous System Number (ASN) of client IP address, exported to IPV6CALC_CLIENT_ASN requires 3rd party database: GeoIPRegistry of client IP address, exported to IPV6CALC_CLIENT_REGISTRY requires internal or “external” databaseConfigured IP address anonymization method, exported to IPV6CALC_ANON_METHOD Installation Install compiled Apache module “mod_ipv6calc” to Apache's module directory Install included default configuration file “ipv6calc.conf” to Apache's config directory (usually conf.d) Configuration Enable in “ipv6calc.conf” loading of module Enable module itself Adjust configuration settings, if needed (see examples in “ipv6calc.conf”) Review predefined log format s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_anon ]]>Enable custom log with anonymized information, using the predefined LogFormat Restart Apache web server, check error_log for any issues Result The new log file contains anonymized requests like Post-analysis in case of anonymization method “keep-type-asn-cc” In case “keep-type-asn-cc” is configured and also working (required databases are available), related information of anonymized IP addresses can be retrieved using “ipv6calc” or “ipv6logstats”. History Major extensions/changes are listed here 2017 add support for LISP detectionadd support for non-free versions DB-IP.com databasesfinally release 1.0.0 after 16 year of development 2016 implement action 'test' and extend action 'filter' with support of address ranges (>= 0.99.2) 2015 Introduce mod_ipv6calc for Apache web server (>= 0.99.1)Add support for DB-IP.com databases (by generated Berkeley DB files) (>= 0.98.0)Add support for “External” database files (generated Berkeley DB files), superseeding (if newer) built-in IPv4/IPv6->Registry and adding IPv4/IPv6->CountryCode support (>= 0.98.0)Extend filter options with support of CountryCode, ASN or Registry (>= 0.99.0)Add support for IP2Location LITE databases (>= 0.99.0), add configurable IP2Location database autoselection support 2014 Shared library mode supported (reduces size of binaries) 2013 Prefix and IID anonymization methodsSupport of dynamic load of GeoIP and IP2Location librariesSpecifying dedicated GeoIP and IP2Location database files is now replaced by specifying dedicated database directories to make especially for GeoIP use of more database files. 2011 ipv6calc/ipv6calcweb.cgi: enable included GeoIP support with IPv6 (usable with GeoIP >= 1.4.5)ipv6calc: extend for 6rd support (--action 6rd_local_prefix --6rd_prefix <PREFIX> --6rd_relay_prefix <RELAY_PREFIX>)ipv6calc: enable stdin support for bulk transformationipv6calc: add support for NAT64 address typeipv6calc: add option “forceprefix <LENGTH>” to print prefix of an address without a given prefix lengthipv6loganon: extend for pipe usage (e.g. in Apache log file directive) and write/append to specified fileGeneral: add configure options to disable built-in databases (reduce binary size a lot, e.g. for embedded devices) 2002-2010 See ChangeLog@GitHub for now 2001 Start of development
ipv6calc-1.0.0/doc/ipv6calc.xml000066400000000000000000002635711312366535500162440ustar00rootroot00000000000000
The ipv6calc Homepage PeterBieringer
pb at bieringer dot de
7.0 2017-06-25 PB
General ipv6calc is a small utility written in programming language C to manipulate (not only) IPv6 addresses and is able to do other tricky things. Intentions were convering a given IPv6 address into compressed format, convering a given IPv6 address into the same format like shown in /proc/net/if_inet6 and (because it was not difficulty) migrating the Perl program ip6_int into. Now only one utiltity is needed to do a lot. This utility was also used in the past to extend features on network-functions-ipv6 library, used by initscripts-ipv6. Note: this tool got also its freecode.com (former freshmeat, now also EOL) / ipv6calc page (but this is not maintained by the author) Latest version Latest version since last update of this page is 1.0.0 Included programs “ipv6calc”: the main utility“ipv6calcweb”: CGI wrapper for ipv6calc's address information output“ipv6logconv”: log converter (IPv4/IPv6)“ipv6loganon”: log anonymizer (IPv4/IPv6)“ipv6logstats”: log statistic generator (IPv4/IPv6)“mod_ipv6calc”: Apache module Included databases If not disabled during compiling of the tool, following databases are statically included, since version 0.95.0 internally mentioned as “BuiltIn”: IEEE IAB, OUI, OUI-36 databases (for decoding vendor part of MAC/EUI-48/EUI-64)IPv4 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv4 anonymization)IPv6 assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for selecting proper registry in ipv6calcweb.cgi and IPv6 anonymization)ASN assignment databases from IANA, ARIN, RIPENCC, APNIC, LACNIC, AFRINIC (for IPv4/IPv6 anonymization)LISP assignment database for supplying extra info Possible external databases If enabled during compiling the tool, following external (but local stored) databases can be used GeoIP IPv4 (since 0.61.0, released 2006)IPv6 (since 0.90.0, released 2011, req. GeoIP >= 1.4.5)release 0.99.0 is tested against GeoIP >= 1.4.4IP2Location IPv4 (since 0.60.0, released 2006)IPv6 (since 0.70.0, released 2007, IP2Location LITE IPv6 Databases since 0.99.0, released 2015)release 0.99.0 is tested against IP2Location >= 4.0.2DB-IP.com (since 0.98.0, released 2015), based on local Berkeley DB files generated from downloaded CSV files“External” (since 0.98.0, released 2015), based on local Berkeley DB files, generated from downloaded TXT/XML files (registries assignment databases). Supporting IPv4/IPv6 to Registries and IPv4/IPv6 to CountryCode. If newer, overruling the related included databases.Since version 0.95.0 the tool can be compiled to use dynamically loading of library, means the binaries can be also used on systems where IP2Location or GeoIP libraries are not existing. On such system, the support is simply disabled then and some capabilities/features which requires the databases are disabled. Since version 0.97.4 also fallback code for GeoIP and IP2Location is included in the source package, means that support of dynamically loading of library can be included during compilation without having related development sources on the system. License The program is published under the GNU GPL version 2. Copyright (C) 2001 - 2017 by Dr. Peter Bieringer Author The author of ipv6calc is Dr. Peter Bieringer with some minor contribution by others Where to get sources or binaries Latest version of sources Via GitHub (since 2016-09-05) at GitHub / ipv6calc Releases as tar.gz or zip via HTTPS at GitHub / ipv6calc / releases as tar.gz (signed) Via FTP at DeepSpace6: DeepSpace6 / anonymous FTPVia FTP at ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/Since version 0.95.0 packages are signed with new GPG key, also available here: CODE-GPG-KEY-bieringer.de-2013 @ftp.bieringer.de or CODE-GPG-KEY-bieringer.de-2013 @ftp.deepspace6.net ]]>A SPEC file is included, so you can build a RPM from tar.gz using In addition, conditional build options are available (see related configure options below): as RPM Currently only on rpmfind / ipv6calc, but there are plans to publish at least source RPMS on DeepSpace6 some day. Ready to use packages for several operating systems: Fedora Linux Fedora 22 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default. See also FedoraProject / Package / ipv6calc Red Hat Enterprise Linux and clones It's tested by the developer that creation of the RPM is working fine starting with RHEL 4. RHEL/CentOS 5 has the package included by default (but an rather old version) RPMs of newer releases are available as test builds on koji, see related URL in announcements ipv6calc-announce / list archiveRHEL/CentOS 6/7: available since September 2014 on FedoraProject / EPEL, see also FedoraProject / Package / ipv6calcCentOS 6/7 are also platforms for regression tests. Gentoo/Funtoo Package is maintained, nevertheless, Funtoo is used as platform for regression tests. Ubuntu Package is maintained, more information can be found at https://packages.ubuntu.com/ipv6calc Debian GNU/Linux Package is maintained, more information can be found at http://packages.debian.org/ipv6calc openSUSE Package is maintained, more information can be found at http://download.opensuse.org/repositories/home:/uebelhacker/ NetBSD See here for more: ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/ipv6calc/README.html FreeBSD See here for more: http://www.freshports.org/net-mgmt/ipv6calc/ (http://www.freebsd.org/cgi/query-pr.cgi?pr=34441) OpenBSD See here for more: http://www.openbsd.org/cgi-bin/cvsweb/ports/net/ipv6calc/ Configuring & Compiling Configuring Following “ipc6calc” related configure options are currently supported (note: disabling the internal databases reduces the size of the resulting binaries/shared library a lot): Compiling As usual, use and run tests afterwards using or at least (e.g. if external databases are not available) Configuring & Compiling with Presets A shell script is included which can configure and compile with standard presets (also used during regression tests): Mailling Lists ipv6calc-announce Reason:sending announcements of new versionsTraffic:very lowPostings:only moderators are allowed to postInformation:DeepSpace6 / maillist ipv6calc-announce ipv6calc Reason:discussionsTraffic:lowPostings:subscribersInformation:DeepSpace6 / maillist ipv6calc Bug Reports You can send bug reports to the author himself or subscribe to maillist “ipv6calc” and send it to the list. Features of ipv6calc Description The main program named “ipv6calc” is able to recognize many (not only) IPv6 address formats and depending on a selectable action (not required) a selectable output format can be specified. Also it has the capability to show detailed information of an IPv4/IPv6 address or anonymize it. List of built-in features Option “-v” shows built-in features, depending on configuration before compiling: Option “-v -v” (since 0.91.0) shows built-in features and capabilities in detail, depending on configuration before compiling: SA* Country4=72 Country6=96 City4=72 City6=96 IP2Location: selected best databases normal Country4=35 Country6=35 City4=35 City6=35 IP2Location: selected best databases method: * = autoswitch from LITE to SAMPLE enabled in case not older than 12 months and having more features IP2Location: selected best databases method: COMM older than 12 months are deselected in case of LITE is available IP2Location: selected best databases method: COMM/LITE/SAMPLE with more features are only selected in case not older than 1 months of already found COMM/LITE/SAMPLE IP2Location: selected best databases method: softlinks: skipped-by-default db-ip.com: features available/implemented: 0x30003fc0/0x30003fc0 (100%) DBIP: info of available databases in directory: /usr/share/DBIP DBIP: IPv4 CountryCode (FREE) : ipv6calc-dbip-ipv4-country.db (DBIP-1/20161001, created: 20161009-090609 UTC) DBIP: IPv6 CountryCode (FREE) : ipv6calc-dbip-ipv6-country.db (DBIP-2/20161001, created: 20161009-090609 UTC) DBIP: IPv4 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv4-city.db (DBIP-3/20161001, created: 20161009-090650 UTC) DBIP: IPv6 City/Region/CountryCode (FREE): ipv6calc-dbip-ipv6-city.db (DBIP-4/20161001, created: 20161009-090650 UTC) DBIP: IPv4 Location/ISP (COMM) : ipv6calc-dbip-ipv4-full.db (DBIP-9/20170201, created: 20170221-183104 UTC) DBIP: IPv6 Location/ISP (COMM) : ipv6calc-dbip-ipv6-full.db (DBIP-10/20170201, created: 20170221-183104 UTC) DBIP: detected best databases FREE Country4=3 Country6=4 City4=3 City6=4 DBIP: detected best databases COMM Country4=9 Country6=10 City4=9 City6=10 DBIP: selected best databases normal Country4=9 Country6=10 City4=9 City6=10 DBIP: selected best databases method: COMM older than 12 months are deselected in case of FREE is available DBIP: selected best databases method: COMM/FREE with more features are only selected in case not older than 1 months of already found COMM/FREE External: features available/implemented: 0xc00000cc/0xc00180cc (75%) External: info of available databases in directory: /usr/share/ipv6calc/db External: IPv4 Registry : ipv6calc-external-ipv4-registry.db (EXTDB-1/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/20160929 RIPENCC/20160929, created: 20160930-164535 UTC) External: IPv6 Registry : ipv6calc-external-ipv6-registry.db (EXTDB-2/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC) External: IPv4 CountryCode : ipv6calc-external-ipv4-countrycode.db (EXTDB-3/AFRINIC/20160930 APNIC/20160930 ARIN/20160930 IANA/20150810 LACNIC/20160929 RIPENCC/20160929, created: 20160930-164535 UTC) External: IPv6 CountryCode : ipv6calc-external-ipv6-countrycode.db (EXTDB-4/AFRINIC/20160930 IANA/20160128, created: 20161001-051950 UTC) BuiltIn: features available/implemented: 0x0001c00f/0x0001c00f (100%) BuiltIn: info of available databases BuiltIn: ASN : IANA/20160908 BuiltIn: CC : AFRINIC/20161224 APNIC/20161223 ARIN/20161224 LACNIC/20161223 RIPENCC/20161223 BuiltIn: IPv4 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20150810 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170224-184411 UTC) BuiltIn: IPv6 : AFRINIC/20170223 APNIC/20170222 ARIN/20170222 IANA/20170104 LACNIC/20170222 LISP/20170223 RIPENCC/20170222 (created: 20170225-075038 UTC) BuiltIn: IEEE : IAB/20161218 OUI/20161117 OUI36/20161218 Database selection or priorization ('->': subsequential calls) Database priorization default: GeoIP->IP2Location->db-ip.com->External->BuiltIn DB_AS_REG (AS-Number to Registry database): BuiltIn DB_CC_REG (CountryCode to Registry database): BuiltIn DB_IPV4_REG (IPv4 to Registry database): BuiltIn DB_IPV6_REG (IPv6 to Registry database): BuiltIn DB_IPV4_AS (IPv4 to AS database): GeoIP DB_IPV6_AS (IPv6 to AS database): GeoIP DB_IPV4_CC (IPv4 to CountryCode database): GeoIP->IP2Location->db-ip.com->External DB_IPV6_CC (IPv6 to CountryCode database): GeoIP->IP2Location->db-ip.com->External DB_IPV4_COUNTRY (IPv4 to Country database): GeoIP->IP2Location->db-ip.com DB_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location->db-ip.com DB_IPV4_CITY (IPv4 to City database): GeoIP->IP2Location->db-ip.com DB_IPV6_CITY (IPv6 to City database): GeoIP->IP2Location->db-ip.com DB_IPV4_REGION (IPv4 to Region database): GeoIP->IP2Location->db-ip.com DB_IPV6_REGION (IPv6 to Region database): GeoIP->IP2Location->db-ip.com DB_IEEE (IEEE/OUI/OUI36 Vendor database): BuiltIn DB_IPV4_INFO (IPv4 additional information): BuiltIn DB_IPV6_INFO (IPv6 additional information): BuiltIn ]]>Option “-v -h” (since 0.97.4) shows explanation of feature tokens Note: since version 0.95.0 the internal layer for database usage was abstracted and each database “plugin” is initialized reporting then its supporting features in binary representation. This makes implementation of other external databases easier in the future. There are at least plans to create an overlay to built-in databases by publishing and use some “precompiled” newer databases replacing the need of recompilation for updated built-in databases. Examples Conversion A simple example is the conversion of an IPv6 address to a DNS PTR query string: Like you see, input format was autodetected. And the given example can be extended because ipv6calc also understands netmask / prefix length values: Also you've also learnt now that switch '-q' (quiet) suppresses informational messages. You can use this now to start a DNS PTR query using: But ipv6calc can do many more for you! Next example shows you the extraction of the IPv4 address contained in a 6to4 IPv6 address: This also works vice-versa: There are many more features already implemented, if you miss one, send a note. Information Depending on available databases output can vary. Information about a simple IPv6 address: Information about a Teredo IPv6 address: Information about a LISP address Machine readable output There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, database related information can be displayed, if databases are located on the system and supported. " IPV6CALC_OUTPUT_VERSION=10 IPV6CALC_SETTINGS_ANON="set=keep-type-asn-cc,mask-ipv6=56,mask-ipv4=24,mask-eui64=40,mask-mac=24,method=keep-type-asn-cc" IPV6CALC_FEATURES="GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC" IPV6CALC_CAPABILITIES="GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG(BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(BuiltIn)" ]]>Special machine readable output options (>= 0.99.0) Output filter by selecting a token (>= 0.99.0) Using option --mrst <TOKEN> (Machine Readable Select Token) can be used to display only token Output filter by matching token (>= 0.99.0) Using option --mrmt <TOKEN> (Machine Readable Match Token) can be used to display only matching tokens Output filter by selecting a value of a token token (>= 0.99.0) Using option --mrtvo <TOKEN> (Machine Readable Token Value Only) can be used to display only value of a token Output adjustment by unconditional quoting of values (>= 0.99.0) Using option --mrqva (Machine Readable Quote Values Always) can be used to quote values always Output adjustment by unconditional disabling quoted values (>= 0.99.0) Using option --mrqvn (Machine Readable Quote Values Never) can be used to never quote values Output adjustment by unconditional print token in case of empty value (>= 0.99.0) Using option --mrstpq (Machine Readable Select Token Print Always) can be used to print always token/value regardless it's contained Filter mode “ipv6calc” can run in filter mode to be able to extract from a huge list of IPv4/IPv6 addresses ones which are interesting or ones which are not interesting (see printout of online help below). Filter tokens are the ones which are listed on “TYPE” lines shown in “-m -i” information mode. Example for searching for Teredo addresses: For more information see below Note: since version 0.95.0 '-A filter' is optional if option '-E <filter expression>' is given (autoselected action). Test mode Since 0.99.2 a test mode ('-A test', autoselected in case 'test_*' options are given) is implemented for address prefix or range For more information see below Option style Since version 0.40 new-style option handling was introduced, using --in <inputtype>--out <outputtype>--action <actiontype>and many more conversions were added. A built-in check matrix should prevent misconversions. Up to version 0.39, only old-style options (aka “shortcut” options). They are one-in-all options, specifying input/action/output in one token. Internally this options will be converted into new-style options. Online help Online help always shows the currently implemented features. Main online help: External database options only appear if compiled with related support. This program formats and calculates IPv6/IPv4/MAC addresses and can do many more tricky things [-d|--debug ] : debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value [-v|--version [-v [-v]]] : version information (2 optional detail levels) [-v|--version -h] : explanation of feature tokens [-V|--verbose] : be more verbose [-h|--help|-?] : this online help [--disable-ip2location ] : IP2Location support disabled [--db-ip2location-disable ] : IP2Location support disabled [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) [--db-ip2location-only-type ]: IP2Location database only selected type (1-24) [--db-ip2location-allow-softlinks] : IP2Location database softlinks allowed [--db-ip2location-lite-to-sample-autoswitch-max-delta-months ]: autoswitch from LITE to SAMPLE databases if possible and delta is not more than 12 months (0=disabled) [--db-ip2location-comm-to-lite-switch-min-delta-months ]: switch from COMM to LITE databases if possible and delta more than 12 months (0=disabled) [--disable-geoip ] : GeoIP support disabled [--db-geoip-disable ] : GeoIP support disabled [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) [--disable-dbip ] : db-ip.com support disabled [--db-dbip-disable ] : db-ip.com support disabled [--db-dbip-dir ] : db-ip.com database directory (default: /usr/share/DBIP) [--disable-external ] : External support disabled [--db-external-disable ] : External support disabled [--db-external-dir ] : External database directory (default: /usr/share/ipv6calc/db) [--disable-builtin ] : BuiltIn support disabled [--db-builtin-disable ] : BuiltIn support disabled [-q|--quiet] : be more quiet (auto-enabled in pipe mode) [-f|--flush] : flush each line in pipe mode Usage with new style options: [--in|-I ] : specify input type (default: autodetect) [--out|-O ] : specify output type (sometimes: autodetect) [--action|-A ] : specify action (default: format conversion, sometimes: autodetect) [ ...] : specify format options [...] : input data Available input types: [-m] -I|--in -?|-h|--help Available output types: [-m] -O|--out -?|-h|--help Available action types: [-m] -A|--action -?|-h|--help Other usage: --showinfo|-i [--machine_readable|-m] : show information about input data --showinfo|-i --mrqva : Machine Readable Quote Values Always --showinfo|-i --mrqvn : Machine Readable Quote Values Never --showinfo|-i --mrst : Machine Readable Select Token --showinfo|-i --mrstpa : Machine Readable Select Token Print Always --showinfo|-i --mrmt : Machine Readable Match Token Prefix --showinfo|-i --mrtvo : Machine Readable Token Value Only --showinfo|-i --show-tokens : show available tokens (aka types) on '-m' Usage with shortcut options: [ ...] for more information and available format options use: -?|-h|--help -r|--addr2ip6_int (-O revnibbles.int) -r|--addr_to_ip6int (-O revnibbles.int) -a|--addr2ip6_arpa (-O revnibbles.arpa) -a|--addr_to_ip6arpa (-O revnibbles.arpa) -b|--addr_to_bitstring (-O bitstring) --addr2compaddr (--printcompressed) --addr_to_compressed (--printcompressed) --addr2uncompaddr (--printuncompressed) --addr_to_uncompressed (--printuncompressed) --addr_to_base85 (-I ipv6addr -O base85) --base85_to_addr (-I base85 -O ipv6addr) --mac_to_eui64 (-I mac -O eui64) --addr2fulluncompaddr (--printfulluncompressed) --addr_to_fulluncompressed (--printfulluncompressed) --addr2if_inet6 (-I ipv6addr -O ifinet6) --addr_to_ifinet6 (-I ipv6addr -O ifinet6) --if_inet62addr (-I ifinet6 -O ipv6addr --printcompressed) --ifinet6_to_compressed (-I ifinet6 -O ipv6addr --printcompressed) --eui64_to_privacy (-I iid_token -O iid_token -A genprivacyiid) --ipv4_to_6to4addr (-I ipv4 -O ipv6addr -A conv6to4) ]]> Database options each internal/external database can be disabled by optiondirectory of database files can be given via related optiondatabases requiring external library the library file can be given in case of dynamic load and linking IP2Location IP2location database directory can contain a bunch of files, the best ones are selected automatically (since 0.99.0). “Best” can be controlled via two options: --db-ip2location-lite-to-sample-autoswitch-max-delta-months <MONTHS>: switches from LITE to SAMPLE databases in case of existing SAMPLE databaseSAMPLE database not older than default/given MONTHS than the LITE databaseIP address is in range of SAMPLE database (IPv4: 0.0.0.0-99.255.255.255, IPv6: 2a04::/16)autoswitch can be disabled by using MONTHS=0reason for implementation: show maximum possible IP2Location features--db-ip2location-comm-to-lite-switch-min-delta-months <MONTHS>: switches from COMMercial to LITE databases in case of existing LITE databaseCOMMercial database is default/given MONTHS older than the LITE databaseswitch can be disabled by using MONTHS=0reason for implementation: avoid using old COMMercial databases--db-ip2location-only-type <TYPE>: only selects databases of given type reason for implementation: be able to select a specific database type--db-ip2location-allow-softlinks: allow softlinked IP2Location database files by default, softlinked database files are skipped, because it's hard to detect whether one is COMMercial, LITE or SAMPLE use “ipv6calc -vv” or “ipv6calc -vvv” for verification, which databases are selected finally. Input-type options Available input types: auto : automatic detection revnibbles.int : dot separated nibbles reverse, ending with ip6.int. revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa. bitstring : bitstring labes, ending with ip6.arpa. ipv6addr : IPv6 address ipv6literal : IPv6 address in literal ipv4addr : IPv4 address ipv4hex : IPv4 in hexdecimal format ipv4revhex : IPv4 in byte-reversed hexdecimal format mac : MAC address (48 bits) eui64 : EUI-64 identifier (64 bits) base85 : Base-85 string ifinet6 : Like line in /proc/net/if_inet6 iid+token : Interface identifier and token ipv6logconv : ipv6logconv (currently not supported) prefix+mac : IPv6 prefix and a MAC address asn : Autonomous System Number ]]> Output-type options: Available output types: revnibbles.int : dot separated nibbles reverse, ending with ip6.int. revnibbles.arpa : dot separated nibbles reverse, ending with ip6.arpa. bitstring : bitstring labes, ending with ip6.arpa. ipv6addr : IPv6 address ipv4addr : IPv4 address mac : MAC address (48 bits) eui64 : EUI-64 identifier (64 bits) base85 : Base-85 string ifinet6 : Like line in /proc/net/if_inet6 iid : Interface identifier iid+token : Interface identifier and token addrtype : Address type ouitype : OUI (IEEE) type ipv6addrtype : IPv6 address type any : any type (currently not supported) revipv4 : reverse IPv4, ending with in-addr.arpa ipv4hex : IPv4 in hexdecimal format octal : IP address in escaped octal format hex : IP address in hexadecimal format ipv6literal : IPv6 address in literal For examples and available format options use: -O|--out --examples ]]> Action-type options: Available action types: auto : Automatic selection of action (default) geneui64 : Converts a MAC address to an EUI-64 address conv6to4 : Converts IPv4 address <-> 6to4 IPv6 address (prefix) convnat64 : Converts IPv4 address <-> NAT64 IPv6 address genprivacyiid : Generates a privacy interface ID out of a given one (arg1) and a token (arg2) prefixmac2ipv6 : Generates an IPv6 address out of a prefix and a MAC address anonymize : Anonymize IPv4/IPv6 address without loosing much information 6rd_local_prefix : Calculate the 6rd prefix from given IPv6 prefix (& relay prefix) and IPv4 Options: --6rd_prefix ... (required) --6rd_relay_prefix ... (optional) 6rd_extract_ipv4 : Extract from 6rd address the include IPv4 address Options: --6rd_prefixlength ... (required) filter : Filter addresses related to filter options ]]> Special action “filter”: Special action “filter” can be used especially in pipe mode to filter IP addresses related to their type and since 0.99.0 also related to database results (CountryCode, ASN or Registry). ' is given) negation of filter expression with prefix: ^ IPv6 address filter tokens: ipv6 unknown unicast multicast anycast loopback link-local site-local compat-v4 mapped reserved unique-local-unicast anonymized-iid anonymized-prefix 6to4 6bone global-unicast unspecified solicited-node productive 6to4-microsoft teredo orchid link-local-teredo nat64 iid-random iid iid-local iid-global iid-teredo iid-eui48 iid-eui64 iid-isatap iid-includes-ipv4 IPv4 address filter tokens: ipv4 any unicast multicast anycast broadcast loopback unspecified unknown reserved zeroconf site-local anonymized global 6to4relay IPv4/v6 address filter tokens based on databases: [^][ipv4.|ipv6.]db.cc=|unknown (Country Code [2 chars]) [^][ipv4.|ipv6.]db.asn=|unknown (Autonomous System Number) [^][ipv4.|ipv6.]db.reg= Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown IPv4/v6 address filter tokens based on address/mask: [^]ipv4.addr=[] [^]ipv6.addr=[] IPv4/v6 address filter tokens based on address ranges (<=|<|>|>=): [^]ipv4.addr(<=|<|>|>=) [^]ipv6.addr(<=|<|>|>=) as alternative in case <|> creating problems also supported: =(le|lt|gt|ge)=: [^]ipv4.addr=(le|lt|gt|ge)= [^]ipv6.addr=(le|lt|gt|ge)= EUI-48/MAC address filter tokens: IMPLEMENTATION MISSING EUI-64 address filter tokens: IMPLEMENTATION MISSING ]]>Example for some filter expressions: Example for searching for addresses in a specific range (supported since 0.99.2): Special action “test”: Special action “test” (since 0.99.2) can be used in command line or pipe mode (single address only) to test IP addresses related to a given prefix or range . : inside a prefix --test_gt|--test_ge
: greater(/equal) than an address --test_lt|--test_le
: less(/equal) than an address Test given address(es) from stdin, e.g. echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db8::/32 echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db9::/32 Single address test, return code: 0=inside/matching 1=outside/not-matching 2=uncomparable ipv6calc [-A test] --test_prefix 2001:db8::/32 2001:db8::1 ipv6calc [-A test] --test_prefix 2001:db9::/32 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db9:: --test_le 2001:db9:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db9:: --test_lt 2001:dba:: 2001:db8::1 ipv6calc [-A test] --test_ge 2001:db8:: --test_lt 2001:db9:: 2001:db8::1 ]]>Example for command line mode: Example for command line mode (quiet): Example for pipe mode: Webserver log conversion helper program "ipv6logconv" This program parses address tokens of a given webserver logfile and converts them to special strings, useful for statistics (e.g. created by using "analog"). Supported options General: [-d|--debug ] : debug value (bitwise like) [-q|--quiet] : be more quiet [-n|--nocache] : disable caching [-c|--cachelimit ] : set cache limit default: 20 maximum: 200 Output: [--out ] : specify output type addrtype : Address type ouitype : OUI (IEEE) type ipv6addrtype : IPv6 address type any : any type Takes data from stdin, proceed it to stdout ]]> Examples A demonstration about which kind of statistics are possible to produce is shown at http://www.ipv6.bieringer.de/ (IPv6 only). Usage Example: See more examples inside the package. Webserver log anonymization helper program "ipv6loganon" On autoconfiguration, the interface part of an IPv6 address is based on the MAC address of the network interface card (NIC). This address is used for outgoing requests, if privacy option (RFC3041 / RFC4941) is not enabled. This results in many privacy related information on web- or mail-server log files. Administrators, which won't (be allowed to) store such information over time, but still do not want to loose information about address type distribution should use 'ipv6loganon' to anonymize their log files. Since version 0.94.0 internally also IID anonymization is possible without loosing any information for “ipv6logstats”. Since version 0.95.0 internally also prefix anonymization is possible without loosing any information for “ipv6logstats”. Anonymization details Method “zeroize” The anonymizer would keep as much information as possible for IPv6 address types. Client-side IID would be anonymized by EUI-48 based: serial number would be zero'ed, keeping OIDEUI-64 based: serial number would be zero'ed, keeping OIDISATAP: client IPv4 address would be anonymized by given IPv4 maskTEREDO: client IPv4 address would be anonymized by given IPv4 mask, client port would be zero'ed6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 masklocal: whole IID would be zero'edClient-side SLA would be anonymized by SLA would be zero'edPrefix would be anonymized by 6to4: client IPv4 address would be anonymized by given IPv4 maskCompat/Mapped IPv4 addresses would be anonymized by IPv4 address would be anonymized by given IPv4 mask Method “anonmize” The anonymizer would keep as much information as possible for the IID of an IPv6 address. Description from libipv6addr.h: RFC 4941 anonymized privacy extension Interface ID * * a9p9 4291 4xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted OUI * a9p9 4291 5xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted mapped IAB/OUI-36 * a9p9 4291 6xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted OUI * a9p9 4291 7xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted mapped IAB/OUI-36 * a9p9 4291 8xxx xxxC -> RFC 4291 embedded anonymized IPv4 address, xxx xxx = first 24 bit of included (anonymized) IPv4 address * a9p9 4291 c02d 5d1C -> RFC 4291 Chapter 2.5.1 anonymized static Interface ID * * a9p9 5214 4xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (local scope) * a9p9 5214 5xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (global scope) * a9p9 5214 cxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (local scope) * a9p9 5214 dxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (global scope) * a9p9 5214 exxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (local scope) * a9p9 5214 fxxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (global scope) * * a9p9 4843 0000 000C -> RFC 4843 anonymized ORCHID hash ]]>Depending on given mask, the part of the prefix will be replaced: Method “keep-type-asn-cc” In addition to “anonymize” (of IID) this method anonymizes also the prefix of an IPv6 address or a whole IPv4 address by keeping ASN (Autonomous System Number, Country Code and Type). Description from libipv6addr.h: 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) * 0x3FD = LISP * 0x3FE = unknown country * 0x3FF - 16 + REGISTRY_6BONE && ASN=0 = 6bone * 0x000-0x3A7: c1= c / 36, c2 = c % 36 * aaaaaaaa -> 32-bit ASN ]]>Description from libipv4addr.h: = 65536, ASN & 0xE000 == 0 (12-bit LSB is ok) * 1|r r r|0|l l l l l l l l l l l l| * 13-bit LSB of ASN * * Mapping of ASN >= 65536, ASN & 0xE000 != 0 (12-bit LSB overflow) => unspecified * 1|r r r|1|0 0 0 0 0 0 0 0 0 0 0 0| * * Mapping of ASN registry for ASN >= 65536 * 0 0 0 = "unknown ASN registry" * 0 1 0 = APNIC * 0 1 1 = RIPE * 1 0 0 = LACNIC * 1 0 1 = AFRINIC * 1 1 0 = ARIN * Mapping of LISP * 1|r r r|1|1|0 0 0 0 0 0 0 0 0 0 0| ]]> Supported log file formats Currently native supported log files: Apache log file format, 1st token is IPv4 or IPv6 addressThere are plans to support also mail server log files sometimes in the future, but because of different formats, this would be probably done by a Perl program which parses the log file and a (cached) 'ip6calc' call with action 'anonymize'. Supported options This program anonymizes IPv4/IPv6 addresses in e.g. HTTP server log files [-d|--debug ] : debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value [-v|--version [-v [-v]]] : version information (2 optional verbose levels) [-h|--help|-?] : this online help [--db-ip2location-disable ] : IP2Location support disabled [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) [--db-geoip-disable ] : GeoIP support disabled [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) [-w|--write] : write output to file instead of stdout [-a|--append] : append output to file instead of stdout [-f|--flush] : flush output after each line [-V|--verbose] : be verbose [-n|--nocache] : disable caching [-c|--cachelimit ] : set cache limit default: 20 maximum: 200 Shortcut for anonymization presets: --anonymize-standard (default) --anonymize-careful --anonymize-paranoid Supported methods [--anonymize-method METHOD]: anonymize : reliable anonymization, keep as much type information as possible zeroize : simple zeroizing according to given masks, probably loose type information keep-type-asn-cc: special reliable anonymization, keep type & Autonomous System Number and CountryCode Available presets (shortcut names) [--anonymize-preset PRESET-NAME]: anonymize-standard (as): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=anonymize anonymize-careful (ac): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac=24 mask-autoadjust=yes method=anonymize anonymize-paranoid (ap): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac=24 mask-autoadjust=no method=anonymize zeroize-standard (zs): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=zeroize zeroize-careful (zc): mask-ipv6= 48 mask-ipv4=20 mask-eui64=24 mask-mac=24 mask-autoadjust=yes method=zeroize zeroize-paranoid (zp): mask-ipv6= 40 mask-ipv4=16 mask-eui64= 0 mask-mac=24 mask-autoadjust=no method=zeroize keep-type-asn-cc (kp): mask-ipv6= 56 mask-ipv4=24 mask-eui64=40 mask-mac=24 mask-autoadjust=yes method=keep-type-asn-cc Custom control: --mask-ipv4 : mask IPv4 address [0-32] (even if occurs in IPv6 address) --mask-ipv6 : mask IPv6 prefix [0-64] (only applied to related address types) --mask-eui64 : mask EUI-64 address or IPv6 interface identifier [0-64] --mask-mac : mask MAC address [0-48] --mask-autoadjust yes|no: autoadjust mask to keep type/vendor information regardless of less given mask Takes data from stdin, outputs the processed data to stdout (default) ]]> Usage Offline anonymization /path/to/http_log_anonymized ]]> On-the-fly online anonymization for Apache Webserver
Note: since 0.91.1 also an module for Apache Webserver is available (see below) supporting anonymized logging
(Supported since 0.90.0) Adjust or add (note: more than one CustomLog directive is supported by Apache) httpd.conf like following: In case of “cronolog” is used on the system, configure like this: Apache version < 2.4: Apache version >= 2.4:
External database update helper scripts The “tools” subdirectory contains helper scripts for updating external databases. IP2Location ] [-n] [-s] -D database destination directory (optional) -n no action (dry-run) -s skip already successfully downloaded files database directory: /usr/share/IP2Location (default: /usr/share/IP2Location) it honors externally defined environment value: IP2LOCATION_DAT_DIR this script will download data from ip2location.com into given/set database directory Sample databases: IP2LOCATION_DAT_FILES_SAMPLE=IPv4:20 IPv6:20 IPv4:24 IPv6:24 Lite (free) databases: IP2LOCATION_DAT_FILES_LITE_FREE=IPv4:1 IPv6:1 With authentication (requires login/password in /home/compile/.ip2location) and a valid subscription IP2LOCATION_DAT_FILES_LITE= Credentials must be defined in $HOME/.ip2location by login=IP2LOCATION-LOGIN password=IP2LOCATION-PASSWORD In addition settings from above can be overwritten by setting related variables ]]> GeoIP ] -D database directory (optional) database directory: /usr/share/GeoIP (default: /usr/share/GeoIP) it honors externally defined environment value: GEOIP_DAT_DIR this script will download data from geolite.maxmind.com (GeoIP) into given/set database directory GEOIP_DAT_URL_BASE=http://geolite.maxmind.com/download/geoip/database/ GEOIP_DAT_FILES=GeoLiteCountry/GeoIP.dat.gz GeoIPv6.dat.gz GeoLiteCity.dat.gz GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz asnum/GeoIPASNum.dat.gz asnum/GeoIPASNumv6.dat.gz ]]> DB-IP.com ] -s skip download -D database directory (optional) database directory: /usr/share/DBIP (default: /usr/share/DBIP) it honors externally defined environment value: DBIP_DAT_DIR this script (and its helper scripts) will download data from DB-IP.com (free versions) and generate Berkeley DB files for ipv6calc "DBIP" database support DBIP_DAT_URL_BASE=http://download.db-ip.com/free/ DBIP_DAT_FILES=dbip-country-%Y-%m.csv.gz dbip-city-%Y-%m.csv.gz ]]> External ] -s skip download -u unconditional update -D database directory (optional) database directory: /usr/share/ipv6calc/db (default: /usr/share/ipv6calc/db) it honors externally defined environment value: IPV6CALC_DAT_DIR this script (and its helper scripts) will download data from registries and generate Berkeley DB files for ipv6calc "external" database support ]]> Perl CGI wrapper program "ipv6calcweb.cgi" Because calling C programs directly as CGI isn't really recommended (too much security troubles all the time), I wrote a small wrapper utility which calls "ipv6calc" to get information about client and server address for displaying on a web page. Examples A demonstration about which kind of output is possible to produce is shown at http://ip.bieringer.de/ (IPv4/IPv6)http://www.ipv6.bieringer.de/ (IPv6 only)http://mirrors.bieringer.de/ (IPv4/IPv6)http://www.sixxs.net/tools/ipv6calc/ (IPv4/IPv6) Webserver log statistics helper program "ipv6logstats" This program parses a given webserver logfile and count addresses, useful for time period statistics. Since version 0.95.0 it has extended output, adding a date/time line and statistics by Country Code and ASN (if required databases are available). Supported options Takes web server log data (or any other data which has IPv4/v6 address in first column) from stdin and print statistics table/list (depending on option) to stdout [-d|--debug ] : debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value [-v|--version [-v [-v]]] : version information (2 optional verbose levels) [-h|--help|-?] : this online help [--db-ip2location-disable ] : IP2Location support disabled [--db-ip2location-dir ] : IP2Location database directory (default: /usr/share/IP2Location) [--db-ip2location-lib ] : IP2Location library file (default: libIP2Location.so) [--db-geoip-disable ] : GeoIP support disabled [--db-geoip-dir ] : GeoIP database directory (default: /usr/share/GeoIP) [--db-geoip-lib ] : GeoIP library file (default: libGeoIP.so.1) [-u|--unknown] : print unknown IP addresses to stderr [-c|--columns] : print statistics in columns (1) [-n|--noheader] : don't print header in columns mode (1) [-o|--onlyheader] : print only header in columns mode (1) [-p|--prefix ] : print token as prefix (1) [-q|--quiet] : be more quiet [-s|--simple] : disable extended statistic (CountryCode/ASN) (1) unsupported for CountryCode & ASN statistics ]]> Usage There are a README and some helper scripts available in the package how to use this program and how to generate a graph using Gnuplot. Line-by-line output The example shows output version 3.0, which Header section, since output version 3.0 (>= 0.95.0) additional lines starting with '*3*' and '*DateTime' and '*UnixTime' included Simple statistics section External database supported output since output version 3.0 (>= 0.95.0) Country Code / Proto Proto / Country Code (“ALL” line contains: ALL IPv4 IPv6) Autonomous System number / Proto Proto / Autonomous System number (“ALL” line contains: ALL IPv4 IPv6) Column output Column output does not support version 3 extension, only simple statistics with a header line: An optional prefix token can be given (“-p <prefix>”) to create e.g. in a for-loop one line per month and put month in front of statistics, also the header line can be suppressed (“-n”). Examples A demonstration with real data is available at http://mirrors.bieringer.de/stats/timeline.html. Apache web server module “mod_ipv6calc” This Apache web server module (since version 0.99.1, released 2015) interfaces with internal ipv6calc library to support Client IP address anonymization “on-the-fly”, exported to IPV6CALC_CLIENT_IP_ANON depending on the configured anonymization method 3rd party database is requiredCountry code of client IP address, exported to IPV6CALC_CLIENT_COUNTRYCODE requires 3rd party database: GeoIP or IP2Location or DB-IP.comAutonomous System Number (ASN) of client IP address, exported to IPV6CALC_CLIENT_ASN requires 3rd party database: GeoIPRegistry of client IP address, exported to IPV6CALC_CLIENT_REGISTRY requires internal or “external” databaseConfigured IP address anonymization method, exported to IPV6CALC_ANON_METHOD Installation Install compiled Apache module “mod_ipv6calc” to Apache's module directory Install included default configuration file “ipv6calc.conf” to Apache's config directory (usually conf.d) Configuration Enable in “ipv6calc.conf” loading of module Enable module itself Adjust configuration settings, if needed (see examples in “ipv6calc.conf”) Review predefined log format s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_anon ]]>Enable custom log with anonymized information, using the predefined LogFormat Restart Apache web server, check error_log for any issues Result The new log file contains anonymized requests like Post-analysis in case of anonymization method “keep-type-asn-cc” In case “keep-type-asn-cc” is configured and also working (required databases are available), related information of anonymized IP addresses can be retrieved using “ipv6calc” or “ipv6logstats”. History Major extensions/changes are listed here 2017 add support for LISP detectionadd support for non-free versions DB-IP.com databasesfinally release 1.0.0 after 16 year of development 2016 implement action 'test' and extend action 'filter' with support of address ranges (>= 0.99.2) 2015 Introduce mod_ipv6calc for Apache web server (>= 0.99.1)Add support for DB-IP.com databases (by generated Berkeley DB files) (>= 0.98.0)Add support for “External” database files (generated Berkeley DB files), superseeding (if newer) built-in IPv4/IPv6->Registry and adding IPv4/IPv6->CountryCode support (>= 0.98.0)Extend filter options with support of CountryCode, ASN or Registry (>= 0.99.0)Add support for IP2Location LITE databases (>= 0.99.0), add configurable IP2Location database autoselection support 2014 Shared library mode supported (reduces size of binaries) 2013 Prefix and IID anonymization methodsSupport of dynamic load of GeoIP and IP2Location librariesSpecifying dedicated GeoIP and IP2Location database files is now replaced by specifying dedicated database directories to make especially for GeoIP use of more database files. 2011 ipv6calc/ipv6calcweb.cgi: enable included GeoIP support with IPv6 (usable with GeoIP >= 1.4.5)ipv6calc: extend for 6rd support (--action 6rd_local_prefix --6rd_prefix <PREFIX> --6rd_relay_prefix <RELAY_PREFIX>)ipv6calc: enable stdin support for bulk transformationipv6calc: add support for NAT64 address typeipv6calc: add option “forceprefix <LENGTH>” to print prefix of an address without a given prefix lengthipv6loganon: extend for pipe usage (e.g. in Apache log file directive) and write/append to specified fileGeneral: add configure options to disable built-in databases (reduce binary size a lot, e.g. for embedded devices) 2002-2010 See ChangeLog@GitHub for now 2001 Start of development
ipv6calc-1.0.0/doc/ldp.dsl000066400000000000000000000231531312366535500152640ustar00rootroot00000000000000 ]]> ]]> ]> ;; customize the print stylesheet (declare-characteristic preserve-sdata? ;; this is necessary because right now jadetex does not understand ;; symbolic entities, whereas things work well with numeric entities. "UNREGISTERED::James Clark//Characteristic::preserve-sdata?" #f) (define %generate-article-toc% ;; Should a Table of Contents be produced for Articles? #t) (define (toc-depth nd) 4) (define %generate-article-titlepage-on-separate-page% ;; Should the article title page be on a separate page? #t) (define %section-autolabel% ;; Are sections enumerated? #t) (define %footnote-ulinks% ;; Generate footnotes for ULinks? #f) (define %bop-footnotes% ;; Make "bottom-of-page" footnotes? #f) (define %body-start-indent% ;; Default indent of body text 0pi) (define %para-indent-firstpara% ;; First line start-indent for the first paragraph 0pt) (define %para-indent% ;; First line start-indent for paragraphs (other than the first) 0pt) (define %block-start-indent% ;; Extra start-indent for block-elements 0pt) (define formal-object-float ;; Do formal objects float? #t) (define %hyphenation% ;; Allow automatic hyphenation? #t) (define %admon-graphics% ;; Use graphics in admonitions? #f) (define %default-quadding% ;; Full justification. 'justify) (define (book-titlepage-verso-elements) ;;added publisher, releaseinfo to the default list (list (normalize "title") (normalize "subtitle") (normalize "corpauthor") (normalize "authorgroup") (normalize "author") (normalize "publisher") (normalize "releaseinfo") (normalize "editor") (normalize "edition") (normalize "pubdate") (normalize "copyright") (normalize "isbn") (normalize "abstract") (normalize "legalnotice") (normalize "revhistory"))) (declare-characteristic preserve-sdata? ;; this is necessary because right now jadetex does not understand ;; symbolic entities, whereas things work well with numeric entities. "UNREGISTERED::James Clark//Characteristic::preserve-sdata?" #f) (declare-flow-object-class element ;; for redhat "UNREGISTERED::James Clark//Flow Object Class::element") (define %html-pubid% ;; put the public identifier in each HTML file "-//W3C//DTD HTML 4.0 Transitional//EN") (define %generate-legalnotice-link% ;; put the legal notice in a separate file #t) (define %admon-graphics-path% ;; use graphics in admonitions, set their "../images/") (define %admon-graphics% #t) (define %funcsynopsis-decoration% ;; make funcsynopsis look pretty #t) (define %html-ext% ;; when producing HTML files, use this extension ".html") (define %generate-book-toc% ;; Should a Table of Contents be produced for books? #t) (define %generate-article-toc% ;; Should a Table of Contents be produced for articles? #t) (define %generate-part-toc% ;; Should a Table of Contents be produced for parts? #t) (define %generate-book-titlepage% ;; produce a title page for books #t) (define %generate-article-titlepage% ;; produce a title page for articles #t) (define (chunk-skip-first-element-list) ;; forces the Table of Contents on separate page '()) (define (list-element-list) ;; fixes bug in Table of Contents generation '()) (define %root-filename% ;; The filename of the root HTML document (e.g, "index"). "index") (define %shade-verbatim% ;; verbatim sections will be shaded if t(rue) #t) (define %use-id-as-filename% ;; Use ID attributes as name for component HTML files? #t) (define %graphic-extensions% ;; graphic extensions allowed '("gif" "png" "jpg" "jpeg" "tif" "tiff" "eps" "epsf" )) (define %graphic-default-extension% "gif") (define %section-autolabel% ;; For enumerated sections (1.1, 1.1.1, 1.2, etc.) #t) (define (toc-depth nd) ;; more depth (2 levels) to toc; instead of flat hierarchy 2) (element emphasis ;; make role=strong equate to bold for emphasis tag (if (equal? (attribute-string "role") "strong") (make element gi: "STRONG" (process-children)) (make element gi: "EM" (process-children)))) (define (book-titlepage-recto-elements) ;; elements on a book's titlepage (list (normalize "title") (normalize "subtitle") (normalize "graphic") (normalize "mediaobject") (normalize "corpauthor") (normalize "authorgroup") (normalize "author") (normalize "othercredit") (normalize "contrib") (normalize "edition") (normalize "releaseinfo") (normalize "publisher") (normalize "editor") (normalize "copyright") (normalize "pubdate") (normalize "revhistory") (normalize "abstract") (normalize "legalnotice"))) (define (article-titlepage-recto-elements) ;; elements on an article's titlepage (list (normalize "title") (normalize "subtitle") (normalize "authorgroup") (normalize "author") (normalize "othercredit") (normalize "releaseinfo") (normalize "copyright") (normalize "pubdate") (normalize "revhistory") (normalize "abstract") (normalize "legalnotice"))) (define (process-contrib #!optional (sosofo (process-children))) ;; print out with othercredit information; for translators, etc. (make sequence (make element gi: "SPAN" attributes: (list (list "CLASS" (gi))) (process-children)))) (define (process-othercredit #!optional (sosofo (process-children))) ;; print out othercredit information; for translators, etc. (let ((author-name (author-string)) (author-contrib (select-elements (children (current-node)) (normalize "contrib")))) (make element gi: "P" attributes: (list (list "CLASS" (gi))) (make element gi: "B" (literal author-name) (literal " - ")) (process-node-list author-contrib)))) (mode article-titlepage-recto-mode (element contrib (process-contrib)) (element othercredit (process-othercredit)) ) (mode book-titlepage-recto-mode (element contrib (process-contrib)) (element othercredit (process-othercredit)) ) (define (article-title nd) (let* ((artchild (children nd)) (artheader (select-elements artchild (normalize "artheader"))) (artinfo (select-elements artchild (normalize "articleinfo"))) (ahdr (if (node-list-empty? artheader) artinfo artheader)) (ahtitles (select-elements (children ahdr) (normalize "title"))) (artitles (select-elements artchild (normalize "title"))) (titles (if (node-list-empty? artitles) ahtitles artitles))) (if (node-list-empty? titles) "" (node-list-first titles)))) (mode subtitle-mode ;; do not print subtitle on subsequent pages (element subtitle (empty-sosofo))) ;; Redefinition of $verbatim-display$ ;; Origin: dbverb.dsl ;; Different foreground and background colors for verbatim elements ;; Author: Philippe Martin (feloy@free.fr) 2001-04-07 (define ($verbatim-display$ indent line-numbers?) (let ((verbatim-element (gi)) (content (make element gi: "PRE" attributes: (list (list "CLASS" (gi))) (if (or indent line-numbers?) ($verbatim-line-by-line$ indent line-numbers?) (process-children))))) (if %shade-verbatim% (make element gi: "TABLE" attributes: (shade-verbatim-attr-element verbatim-element) (make element gi: "TR" (make element gi: "TD" (make element gi: "FONT" attributes: (list (list "COLOR" (car (shade-verbatim-element-colors verbatim-element)))) content)))) content))) ;; ;; Customize this function ;; to change the foreground and background colors ;; of the different verbatim elements ;; Return (list "foreground color" "background color") ;; (define (shade-verbatim-element-colors element) (case element (("SYNOPSIS") (list "#000000" "#6495ED")) ;; ... ;; Add your verbatim elements here ;; ... (else (list "#000000" "#E0E0E0")))) (define (shade-verbatim-attr-element element) (list (list "BORDER" (cond ((equal? element (normalize "SCREEN")) "1") (else "0"))) (list "BGCOLOR" (car (cdr (shade-verbatim-element-colors element)))) (list "WIDTH" ($table-width$)))) ;; End of $verbatim-display$ redefinition ipv6calc-1.0.0/examples/000077500000000000000000000000001312366535500150465ustar00rootroot00000000000000ipv6calc-1.0.0/examples/analog/000077500000000000000000000000001312366535500163075ustar00rootroot00000000000000ipv6calc-1.0.0/examples/analog/analog-dist-combined.cfg000066400000000000000000000036671312366535500227640ustar00rootroot00000000000000# Example config file for analog creating some statistics # # Project : ipv6calc/ipv6logconv # File : analog-dist.cfg # Version : $Id: analog-dist-combined.cfg,v 1.1 2002/04/05 18:54:56 peter Exp $ # Copyright : none # Procuded : 2002 by Peter Bieringer # Debug #DEBUG on #SETTINGS on # Output file is set by commandline option # Log format LOGFORMAT combined LOGFORMAT (%S %f %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b) LOGFORMAT (%S %f %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b "%B") # Input: stdin LOGFILE - # Special domains file DOMAINSFILE ./ipv6calc.tab DESCFILE ./analog-ipv6calc-descriptions.txt DESCRIPTIONS on # Path to images IMAGEDIR /analog/images/ LOGO none PNGIMAGES ON # Hostname #HOSTNAME "your.host.com/address type statistics" BASEURL "http://your.host.com" LINKINCLUDE pages REFLINKINCLUDE * UNCOMPRESS *.gz,*.Z "gzip -cd" # No reports for MONTHLY off DAILY off HOURLY off FILETYPE off SIZE off STATUS off SEARCHWORD off REQCHART off DIRECTORY off FULLBROWSER off BROWSUM off OSREP off REQUEST off ORGANISATION off # Report statistic GENERAL off #HOSTALIAS *.addrtype.ipv6calc $1 HOSTALIAS *.ipv6calc $1 HOSTEXCLUDE reverse-lookup-successful.addrtype DOMAIN on DOMCOLS rR DOMCHART requests DOMSORTBY requests DOMFLOOR 0r SUBDOMFLOOR 0r SUBDOMSORTBY requests SUBDOMAIN *.*.*.*.* DOMCHARTEXPAND .addrtype ORGANISATION on ORGCHART requests ORGFLOOR 0r ORGSORTBY requests ORGCOLS rR SUBORG *.*.* ORGCHARTEXPAND .addrtype ## Hosts is used for IPv6 address type display HOST on HOSTCHART requests HOSTFLOOR 0r HOSTSORTBY requests HOSTCOLS rR # exclude not IPv6 hosts #HOSTEXCLUDE not-ipv6.ipv6addrtype.ipv6calc HOSTREPEXCLUDE reverse-lookup-successful.addrtype.ipv6calc ## User is used for OUI USER on # exclude special users USERREPEXCLUDE unresolvable.ouitype.ipv6calc USERREPEXCLUDE not-ipv6.ouitype.ipv6calc # Customize output GOTOS off RUNTIME off MARKCHAR = OUTPUT html ipv6calc-1.0.0/examples/analog/analog-dist.cfg000066400000000000000000000033661312366535500212020ustar00rootroot00000000000000# Example config file for analog creating some statistics # # Project : ipv6calc/ipv6logconv # File : analog-dist.cfg # Version : $Id: analog-dist.cfg,v 1.4 2002/03/17 10:14:06 peter Exp $ # Copyright : none # Procuded : 2002 by Peter Bieringer # Debug #DEBUG on #SETTINGS on # Output file is set by commandline option # Log format LOGFORMAT combined LOGFORMAT (%S %f %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b) LOGFORMAT (%S %f %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b "%B") # Input: stdin LOGFILE - # Special domains file DOMAINSFILE ./ipv6calc.tab # Path to images IMAGEDIR /analog/images/ LOGO none PNGIMAGES ON DESCRIPTIONS OFF # Hostname #HOSTNAME "your.host.com/address type statistics" BASEURL "http://your.host.com" LINKINCLUDE pages REFLINKINCLUDE * UNCOMPRESS *.gz,*.Z "gzip -cd" # No reports for MONTHLY off DAILY off HOURLY off FILETYPE off SIZE off STATUS off SEARCHWORD off REQCHART off DIRECTORY off FULLBROWSER off BROWSUM off OSREP off REQUEST off ORGANISATION off # Report statistic GENERAL off DOMAIN on DOMCOLS rR #DOMCHART requests DOMCHART off DOMSORTBY requests DOMFLOOR 0r SUBDOMAIN off SUBDOMAIN *.* SUBDOMFLOOR 0r SUBDOMSORTBY requests #SUBDOMAIN *.addrtype.ipv6calc #SUBDOMAIN *.ipv6addrtype.ipv6calc #SUBDOMAIN *.ouitype.ipv6calc #DOMCHARTEXPAND addrtype.ipv6calc,ipv6addrtype.ipv6calc,ouitype.ipv6calc ORGANISATION off ORGCHART requests ORGFLOOR 0r ORGSORTBY requests ORGCOLS rR SUBORG *.addrtype.ipv6calc SUBORG *.ipv6addrtype.ipv6calc SUBORG *.ouitype.ipv6calc ORGCHARTEXPAND addrtype.ipv6calc,ipv6addrtype.ipv6calc,ouitype.ipv6calc HOST on HOSTCHART requests HOSTFLOOR 0r HOSTSORTBY requests HOSTCOLS rR # Customize output GOTOS off RUNTIME off MARKCHAR = OUTPUT html ipv6calc-1.0.0/examples/analog/analog-ipv6calc-descriptions.txt000066400000000000000000000103501312366535500245210ustar00rootroot00000000000000# Report descriptions file for analog 5.22. # # This file contains descriptions of each report. Lines starting with a # hash (#) are comments. Otherwise, each report must take EXACTLY ONE LINE. # Yearly Report This report lists the activity in each year. # Quarterly Report This report lists the activity in each quarter. # Monthly Report This report lists the activity in each month. # Weekly Report This report lists the activity in each week. # Daily Report This report lists the activity in each day. # Hourly Report This report lists the activity in each hour. # Quarter-Hour Report This report lists the activity in each quarter-hour period. # Five-Minute Report This report lists the activity in each five-minute period. # Daily Summary This report lists the total activity for each day of the week, summed over all the weeks in the report. # Hourly Summary This report lists the total activity for each hour of the day, summed over all the days in the report. # Hour of the Week Summary This report lists the total activity for each hour of the week, summed over all the weeks in the report. # Quarter-Hour Summary This report lists the total activity for each quarter-hour period of the day, summed over all the days in the report. # Five-Minute Summary This report lists the total activity for each five-minute period of the day, summed over all the days in the report. # General Summary This report contains overall statistics. # Request Report This report lists the files on the site. # Redirection Report This report lists the files that caused requests to be redirected to another file. (Usually directories with the final slash missing, or CGI scripts that forced redirections.) # Failure Report This report lists the files that caused failures, for example files not found. # File Type Report This report lists the extensions of requested files. # Directory Report This report lists the directories from which files were requested. (The figures for each directory include all of its subdirectories.) # Host Report This report lists the registries of addresses of the computers which requested files. # Host Redirection Report This report lists the computers which were redirected to another file. # Host Failure Report This report lists the computers which encountered failed requests. # Domain Report This report lists the major address type of the computers which requested files. # Referrer Report This report lists the referrers (where people followed links from, or pages which included this site's images). # Referring Site Report This report lists which servers people followed links from. # Redirected Referrer Report This report lists the referrers that caused redirected requests. # Failed Referrer Report This report lists the referrers containing broken links to the site. # Browser Report This report lists the browsers used by visitors. # Virtual Host Report This report lists the activity on each of the virtual domains at the site. # Virtual Host Redirection Report This report lists the redirected requests to each of the virtual domains. # Virtual Host Failure Report This report lists the failed requests to each of the virtual domains. # User Report This report lists the OUI of the NICs of the computers which requested files. # User Redirection Report This report lists the users who were redirected to another file. # User Failure Report This report lists the users who encountered failed requests. # Organisation Report This report lists the minor address types of the computers which requested files. # Search Query Report This report lists which queries people used in search engines to find the site. # Search Word Report This report lists which words people used in search engines to find the site. # Internal Search Query Report This report lists which queries people used on scripts within the site. # Internal Search Word Report This report lists which words people used on scripts within the site. # Browser Summary This report lists the vendors of visitors' browsers. # Operating System Report This report lists the operating systems used by visitors. # File Size Report This report lists the sizes of files. # Status Code Report This report lists the HTTP status codes of all requests. # Processing Time Report This report lists the times taken to process successful requests. ipv6calc-1.0.0/examples/analog/ipv6calc.tab000066400000000000000000000004541312366535500205110ustar00rootroot00000000000000ipv6calc 4 Conversion powered by ipv6calc ipv4-addr 1 IPv4 address ipv6-addr 1 IPv6 address reverse-lookup-successful 1 Reverse lookup successful addrtype 4 Adress type ipv4-addr.addrtype 3 IPv4 address ipv6-addr.addrtype 3 IPv6 address reverse-lookup-successful.addrtype 1 Reverse lookup successful ipv6calc-1.0.0/examples/analog/run_analog.sh000077500000000000000000000032621312366535500207760ustar00rootroot00000000000000#!/bin/sh # # Simple shell script to create different types of statistics # # Example config file for analog creating some statistics # # Project : ipv6calc/ipv6logconv # File : run_analog.sh # Version : $Id: b2a6bf932ea87b64554d8958bbed743230defb95 $ # Copyright : none # Procuded : 2002 by Peter Bieringer umask 007 LOGFILE="../access_log" BIN_IPV6LOGCON="../../ipv6logconv/ipv6logconv" CONFIG_ANALOG="analog-dist.cfg" CONFIG_ANALOG_COMBINED="analog-dist-combined.cfg" DIR_BASE="." if [ ! -d "$DIR_BASE" ]; then echo "Missing base directory: $DIR_BASE" exit 2 fi if [ ! -r "$CONFIG_ANALOG" ]; then echo "Missing or unreadable analog config file: $CONFIG_ANALOG" exit 2 fi #set -x type="$1" case "$type" in "dedicated") ## dedicated files version # Create address type statistics echo "addrtype..." cat $LOGFILE | $BIN_IPV6LOGCON --out addrtype | analog +g$CONFIG_ANALOG +C'HOSTNAME Address_type_distribution' +O$DIR_BASE/distribution-addrtype/analog.html echo "ipv6addrtype..." # Create IPv6 address type statistics cat $LOGFILE | $BIN_IPV6LOGCON --out ipv6addrtype | analog +g$CONFIG_ANALOG +C'HOSTNAME IPv6_address_type_distribution' +O$DIR_BASE/distribution-ipv6addrtype/analog.html # Create OUI statistics echo "ouitype..." cat $LOGFILE | $BIN_IPV6LOGCON --out ouitype | analog +g$CONFIG_ANALOG +C'HOSTNAME OUI_type_distribution' +O$DIR_BASE/distribution-ouitype/analog.html ;; "combined") echo "Create statistics running 'analog'" cat $LOGFILE | $BIN_IPV6LOGCON --out any | analog +g$CONFIG_ANALOG_COMBINED +C'HOSTNAME combined' +O$DIR_BASE/distribution-combined/analog.html ;; *) echo "Usage: $0 dedicated|combined" esac ipv6calc-1.0.0/examples/apache/000077500000000000000000000000001312366535500162675ustar00rootroot00000000000000ipv6calc-1.0.0/examples/apache/ipv6loganon.conf000066400000000000000000000016321312366535500214020ustar00rootroot00000000000000### This additional Apache web server configuration enables additional logging ### with anonymized IPv4/IPv6 addresses # # $Id: ipv6loganon.conf,v 1.4 2013/11/02 17:05:11 ds6peter Exp $ # # Place this file in /etc/httpd/conf.d/ and enable log directives you want to use ## Default log with cronolog extension ## Works with Apache 2.0/2.2/2.4 #CustomLog "|/usr/sbin/cronolog /var/log/httpd/access.log-%Y%m%d" combined ## Anonymized log ## Works with Apache 2.0/2.2/2.4 #CustomLog "|/usr/bin/ipv6loganon -f -a /var/log/httpd/access-anon_log" combined ## Anonymized log with cronolog extension #CustomLog "|/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access-anon.log-%Y%m%d" combined = 2.4> #CustomLog "|$/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access-anon.log-%Y%m%d" combined ipv6calc-1.0.0/external-fallback/000077500000000000000000000000001312366535500166075ustar00rootroot00000000000000ipv6calc-1.0.0/external-fallback/GeoIP/000077500000000000000000000000001312366535500175525ustar00rootroot00000000000000ipv6calc-1.0.0/external-fallback/GeoIP/COPYING000066400000000000000000000637471312366535500206260ustar00rootroot00000000000000[ Note that while the core GeoIP library is licensed under the LGPL, the libGeoIPUpdate library depends on md5.c and types.h which are licensed under the GPL. ] GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ipv6calc-1.0.0/external-fallback/GeoIP/GeoIP.h000066400000000000000000000264471312366535500207030ustar00rootroot00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ /* GeoIP.h * * Copyright (C) 2006 MaxMind LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef GEOIP_H #define GEOIP_H #ifdef __cplusplus extern "C" { #endif #include #if !defined(_WIN32) #include #include #include #else /* !defined(_WIN32) */ #include #include #include #include #define snprintf _snprintf #define FILETIME_TO_USEC(ft) (((unsigned __int64) ft.dwHighDateTime << 32 | ft.dwLowDateTime) / 10) #endif /* !defined(_WIN32) */ #include #include #include #include /* for fstat */ #include /* for fstat */ #define SEGMENT_RECORD_LENGTH 3 #define LARGE_SEGMENT_RECORD_LENGTH 4 #define STANDARD_RECORD_LENGTH 3 #define ORG_RECORD_LENGTH 4 #define MAX_RECORD_LENGTH 4 #define NUM_DB_TYPES (33+1) /* 128 bit address in network order */ typedef struct in6_addr geoipv6_t; #define GEOIP_CHKBIT_V6(bit,ptr) (ptr[((127UL - bit) >> 3)] & (1UL << (~(127 - bit) & 7))) typedef struct GeoIPTag { FILE *GeoIPDatabase; char *file_path; unsigned char *cache; unsigned char *index_cache; unsigned int *databaseSegments; char databaseType; time_t mtime; int flags; off_t size; char record_length; int charset; /* 0 iso-8859-1 1 utf8 */ int record_iter; /* used in GeoIP_next_record */ int netmask; /* netmask of last lookup - set using depth in _GeoIP_seek_record */ time_t last_mtime_check; off_t dyn_seg_size; /* currently only used by the cityconfidence database */ unsigned int ext_flags; /* bit 0 teredo support enabled */ } GeoIP; typedef enum { GEOIP_TEREDO_BIT = 0 } GeoIPExtFlags; typedef enum { GEOIP_CHARSET_ISO_8859_1 = 0, GEOIP_CHARSET_UTF8 = 1 } GeoIPCharset; typedef struct GeoIPRegionTag { char country_code[3]; char region[3]; } GeoIPRegion; typedef enum { GEOIP_STANDARD = 0, GEOIP_MEMORY_CACHE = 1, GEOIP_CHECK_CACHE = 2, GEOIP_INDEX_CACHE = 4, GEOIP_MMAP_CACHE = 8, } GeoIPOptions; typedef enum { GEOIP_COUNTRY_EDITION = 1, GEOIP_REGION_EDITION_REV0 = 7, GEOIP_CITY_EDITION_REV0 = 6, GEOIP_ORG_EDITION = 5, GEOIP_ISP_EDITION = 4, GEOIP_CITY_EDITION_REV1 = 2, GEOIP_REGION_EDITION_REV1 = 3, GEOIP_PROXY_EDITION = 8, GEOIP_ASNUM_EDITION = 9, GEOIP_NETSPEED_EDITION = 10, GEOIP_DOMAIN_EDITION = 11, GEOIP_COUNTRY_EDITION_V6 = 12, GEOIP_LOCATIONA_EDITION = 13, GEOIP_ACCURACYRADIUS_EDITION = 14, GEOIP_CITYCONFIDENCE_EDITION = 15, GEOIP_CITYCONFIDENCEDIST_EDITION = 16, GEOIP_LARGE_COUNTRY_EDITION = 17, GEOIP_LARGE_COUNTRY_EDITION_V6 = 18, GEOIP_CITYCONFIDENCEDIST_ISP_ORG_EDITION = 19, /* unsued, but gaps are not allowed */ GEOIP_CCM_COUNTRY_EDITION =20, /* unsued, but gaps are not allowed */ GEOIP_ASNUM_EDITION_V6 = 21, GEOIP_ISP_EDITION_V6 = 22, GEOIP_ORG_EDITION_V6 = 23, GEOIP_DOMAIN_EDITION_V6 = 24, GEOIP_LOCATIONA_EDITION_V6 = 25, GEOIP_REGISTRAR_EDITION = 26, GEOIP_REGISTRAR_EDITION_V6 = 27, GEOIP_USERTYPE_EDITION = 28, GEOIP_USERTYPE_EDITION_V6 = 29, GEOIP_CITY_EDITION_REV1_V6 = 30, GEOIP_CITY_EDITION_REV0_V6 = 31, GEOIP_NETSPEED_EDITION_REV1 = 32, GEOIP_NETSPEED_EDITION_REV1_V6 = 33 } GeoIPDBTypes; typedef enum { GEOIP_ANON_PROXY = 1, GEOIP_HTTP_X_FORWARDED_FOR_PROXY = 2, GEOIP_HTTP_CLIENT_IP_PROXY = 3, } GeoIPProxyTypes; typedef enum { GEOIP_UNKNOWN_SPEED = 0, GEOIP_DIALUP_SPEED = 1, GEOIP_CABLEDSL_SPEED = 2, GEOIP_CORPORATE_SPEED = 3, } GeoIPNetspeedValues; extern char **GeoIPDBFileName; extern const char * GeoIPDBDescription[NUM_DB_TYPES]; extern const char *GeoIPCountryDBFileName; extern const char *GeoIPRegionDBFileName; extern const char *GeoIPCityDBFileName; extern const char *GeoIPOrgDBFileName; extern const char *GeoIPISPDBFileName; extern const char *GeoIPLocationADBFileName; extern const char *GeoIPAccuracyRadiusFileName; extern const char *GeoIPCityConfidenceFileName; /* Warning: do not use those arrays as doing so may break your * program with newer GeoIP versions */ extern const char GeoIP_country_code[254][3]; extern const char GeoIP_country_code3[254][4]; extern const char * GeoIP_country_name[254]; extern const char * GeoIP_utf8_country_name[254]; extern const char GeoIP_country_continent[254][3]; #ifdef DLL #define GEOIP_API __declspec(dllexport) #else #define GEOIP_API #endif /* DLL */ GEOIP_API void GeoIP_setup_custom_directory(char *dir); GEOIP_API GeoIP* GeoIP_open_type (int type, int flags); GEOIP_API GeoIP* GeoIP_new(int flags); GEOIP_API GeoIP* GeoIP_open(const char * filename, int flags); GEOIP_API int GeoIP_db_avail(int type); GEOIP_API void GeoIP_delete(GeoIP* gi); GEOIP_API const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr); GEOIP_API const char *GeoIP_country_code_by_name (GeoIP* gi, const char *host); GEOIP_API const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr); GEOIP_API const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *host); GEOIP_API const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr); GEOIP_API const char *GeoIP_country_name_by_name (GeoIP* gi, const char *host); GEOIP_API const char *GeoIP_country_name_by_ipnum (GeoIP* gi, unsigned long ipnum); GEOIP_API const char *GeoIP_country_code_by_ipnum (GeoIP* gi, unsigned long ipnum); GEOIP_API const char *GeoIP_country_code3_by_ipnum (GeoIP* gi, unsigned long ipnum); /* */ GEOIP_API const char *GeoIP_country_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GEOIP_API const char *GeoIP_country_code_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GEOIP_API const char *GeoIP_country_code3_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GEOIP_API const char *GeoIP_country_code_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API const char *GeoIP_country_code_by_name_v6 (GeoIP* gi, const char *host); GEOIP_API const char *GeoIP_country_code3_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API const char *GeoIP_country_code3_by_name_v6 (GeoIP* gi, const char *host); GEOIP_API const char *GeoIP_country_name_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API const char *GeoIP_country_name_by_name_v6 (GeoIP* gi, const char *host); /* Deprecated - for backwards compatibility only */ GEOIP_API int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr); GEOIP_API int GeoIP_country_id_by_name (GeoIP* gi, const char *host); GEOIP_API char *GeoIP_org_by_addr (GeoIP* gi, const char *addr); GEOIP_API char *GeoIP_org_by_name (GeoIP* gi, const char *host); GEOIP_API char *GeoIP_org_by_ipnum (GeoIP* gi, unsigned long ipnum); GEOIP_API char *GeoIP_org_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GEOIP_API char *GeoIP_org_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API char *GeoIP_org_by_name_v6 (GeoIP* gi, const char *name); /* End deprecated */ GEOIP_API int GeoIP_id_by_addr (GeoIP* gi, const char *addr); GEOIP_API int GeoIP_id_by_name (GeoIP* gi, const char *host); GEOIP_API int GeoIP_id_by_ipnum (GeoIP* gi, unsigned long ipnum); GEOIP_API int GeoIP_id_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API int GeoIP_id_by_name_v6 (GeoIP* gi, const char *host); GEOIP_API int GeoIP_id_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GEOIP_API GeoIPRegion * GeoIP_region_by_addr (GeoIP* gi, const char *addr); GEOIP_API GeoIPRegion * GeoIP_region_by_name (GeoIP* gi, const char *host); GEOIP_API GeoIPRegion * GeoIP_region_by_ipnum (GeoIP *gi, unsigned long ipnum); GEOIP_API GeoIPRegion * GeoIP_region_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API GeoIPRegion * GeoIP_region_by_name_v6 (GeoIP* gi, const char *host); GEOIP_API GeoIPRegion * GeoIP_region_by_ipnum_v6 (GeoIP *gi, geoipv6_t ipnum); /* Warning - don't call this after GeoIP_assign_region_by_inetaddr calls */ GEOIP_API void GeoIPRegion_delete (GeoIPRegion *gir); GEOIP_API void GeoIP_assign_region_by_inetaddr(GeoIP* gi, unsigned long inetaddr, GeoIPRegion *gir); GEOIP_API void GeoIP_assign_region_by_inetaddr_v6(GeoIP* gi, geoipv6_t inetaddr, GeoIPRegion *gir); /* Used to query GeoIP Organization, ISP and AS Number databases */ GEOIP_API char *GeoIP_name_by_ipnum (GeoIP* gi, unsigned long ipnum); GEOIP_API char *GeoIP_name_by_addr (GeoIP* gi, const char *addr); GEOIP_API char *GeoIP_name_by_name (GeoIP* gi, const char *host); GEOIP_API char *GeoIP_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GEOIP_API char *GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr); GEOIP_API char *GeoIP_name_by_name_v6 (GeoIP* gi, const char *name); /** return two letter country code */ GEOIP_API const char* GeoIP_code_by_id(int id); /** return three letter country code */ GEOIP_API const char* GeoIP_code3_by_id(int id); /** return full name of country in utf8 or iso-8859-1 */ GEOIP_API const char* GeoIP_country_name_by_id(GeoIP* gi, int id); /** return full name of country */ GEOIP_API const char* GeoIP_name_by_id(int id); /** return continent of country */ GEOIP_API const char* GeoIP_continent_by_id(int id); /** return id by country code **/ GEOIP_API int GeoIP_id_by_code(const char *country); /** return return number of known countries */ GEOIP_API unsigned GeoIP_num_countries(void); GEOIP_API char *GeoIP_database_info (GeoIP* gi); GEOIP_API unsigned char GeoIP_database_edition (GeoIP* gi); GEOIP_API int GeoIP_charset (GeoIP* gi); GEOIP_API int GeoIP_set_charset (GeoIP* gi, int charset); GEOIP_API int GeoIP_enable_teredo (GeoIP* gi, int true_false ); GEOIP_API int GeoIP_teredo (GeoIP* gi ); GEOIP_API int GeoIP_last_netmask (GeoIP* gi); GEOIP_API char **GeoIP_range_by_ip (GeoIP* gi, const char *addr); GEOIP_API void GeoIP_range_by_ip_delete(char **ptr); /* Convert region code to region name */ GEOIP_API const char * GeoIP_region_name_by_code(const char *country_code, const char *region_code); /* Get timezone from country and region code */ GEOIP_API const char * GeoIP_time_zone_by_country_and_region(const char *country_code, const char *region_code); /* some v4 helper functions as of 1.4.7 exported to the public API */ GEOIP_API unsigned long GeoIP_addr_to_num(const char *addr); GEOIP_API char * GeoIP_num_to_addr(unsigned long ipnum); /* Internal function -- convert iso to utf8; return a malloced utf8 string. */ char * _GeoIP_iso_8859_1__utf8(const char * iso); /* Cleans up memory used to hold file name paths. Returns 1 if successful; otherwise 0. * */ GEOIP_API int GeoIP_cleanup(void); /* Returns the library version in use. Helpful if your loading dynamically. */ GEOIP_API const char * GeoIP_lib_version(void); # #ifdef __cplusplus } #endif #endif /* GEOIP_H */ ipv6calc-1.0.0/external-fallback/GeoIP/GeoIPCity.h000066400000000000000000000046511312366535500215250ustar00rootroot00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ /* GeoIPCity.h * * Copyright (C) 2006 MaxMind LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef GEOIPCITY_H #define GEOIPCITY_H #include #ifdef __cplusplus extern "C" { #endif #define GEOIP_UNKNOWN_CONF ( 0x7f ) #define GEOIP_UNKNOWN_ACCURACY_RADIUS ( 0x3ff ) typedef struct GeoIPRecordTag { char *country_code; char *country_code3; char *country_name; char *region; char *city; char *postal_code; float latitude; float longitude; union { int metro_code; /* metro_code is a alias for dma_code */ int dma_code; }; int area_code; int charset; char *continent_code; /* confidence factor for Country/Region/City/Postal */ unsigned char country_conf, region_conf, city_conf, postal_conf; int accuracy_radius; } GeoIPRecord; GeoIPRecord * GeoIP_record_by_ipnum (GeoIP* gi, unsigned long ipnum); GeoIPRecord * GeoIP_record_by_addr (GeoIP* gi, const char *addr); GeoIPRecord * GeoIP_record_by_name (GeoIP* gi, const char *host); GeoIPRecord * GeoIP_record_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum); GeoIPRecord * GeoIP_record_by_addr_v6 (GeoIP* gi, const char *addr); GeoIPRecord * GeoIP_record_by_name_v6 (GeoIP* gi, const char *host); int GeoIP_record_id_by_addr (GeoIP* gi, const char *addr); int GeoIP_record_id_by_addr_v6 (GeoIP* gi, const char *addr); int GeoIP_init_record_iter (GeoIP* gi); /* returns 0 on success, 1 on failure */ int GeoIP_next_record (GeoIP* gi, GeoIPRecord **gir, int *record_iter); void GeoIPRecord_delete (GeoIPRecord *gir); /* NULL on failure otherwise a malloced string in utf8 */ /* char * GeoIP_iso_8859_1__utf8(const char *); */ #ifdef __cplusplus } #endif #endif /* GEOIPCITY_H */ ipv6calc-1.0.0/external-fallback/GeoIP/GeoIP_internal.h000066400000000000000000000010761312366535500225660ustar00rootroot00000000000000#ifndef GEOIP_INTERNAL_H #define GEOIP_INTERNAL_H #include "GeoIP.h" GEOIP_API unsigned int _GeoIP_seek_record (GeoIP *gi, unsigned long ipnum); GEOIP_API unsigned int _GeoIP_seek_record_v6 (GeoIP *gi, geoipv6_t ipnum); GEOIP_API geoipv6_t _GeoIP_addr_to_num_v6 (const char *addr); GEOIP_API unsigned long _GeoIP_lookupaddress (const char *host); GEOIP_API geoipv6_t _GeoIP_lookupaddress_v6 (const char *host); GEOIP_API int __GEOIP_V6_IS_NULL(geoipv6_t v6); GEOIP_API void _GeoIP_setup_dbfilename(); GEOIP_API char *_GeoIP_full_path_to(const char *file_name); #endif ipv6calc-1.0.0/external-fallback/GeoIP/VERSION-GeoIP000066400000000000000000000000061312366535500215570ustar00rootroot000000000000001.4.8 ipv6calc-1.0.0/external-fallback/IP2Location/000077500000000000000000000000001312366535500206725ustar00rootroot00000000000000ipv6calc-1.0.0/external-fallback/IP2Location/COPYING000077500000000000000000000167431312366535500217430ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ipv6calc-1.0.0/external-fallback/IP2Location/IP2Loc_DBInterface.h000077500000000000000000000034011312366535500242620ustar00rootroot00000000000000/* * IP2Location C library is distributed under LGPL version 3 * Copyright (c) 2013 IP2Location.com. support at ip2location dot com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not see . * */ #ifndef HAVE_IP2LOC_DBINTERFACE_H #define HAVE_IP2LOC_DBINTERFACE_H #ifdef __cplusplus extern "C" { #endif enum IP2Location_mem_type { IP2LOCATION_FILE_IO, IP2LOCATION_CACHE_MEMORY, IP2LOCATION_SHARED_MEMORY }; struct in6_addr_local { union { uint8_t addr8[16]; uint8_t addr16[8]; } u; }; /* All below function are private function IP2Location library */ struct in6_addr_local IP2Location_readIPv6Address(FILE *handle, uint32_t position); uint32_t IP2Location_read32(FILE *handle, uint32_t position); uint8_t IP2Location_read8(FILE *handle, uint32_t position); char *IP2Location_readStr(FILE *handle, uint32_t position); float IP2Location_readFloat(FILE *handle, uint32_t position); int32_t IP2Location_DB_set_file_io(); int32_t IP2Location_DB_set_memory_cache(FILE *filehandle); int32_t IP2Location_DB_set_shared_memory(FILE *filehandle); int32_t IP2Location_DB_close(FILE *filehandle); void IP2Location_DB_del_shm(); #ifdef __cplusplus } #endif #endif ipv6calc-1.0.0/external-fallback/IP2Location/IP2Location.h000077500000000000000000000141561312366535500231400ustar00rootroot00000000000000/* * IP2Location C library is distributed under LGPL version 3 * Copyright (c) 2013-2015 IP2Location.com. support at ip2location dot com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not see . */ #ifndef HAVE_IP2LOCATION_H #define HAVE_IP2LOCATION_H #ifdef __cplusplus extern "C" { #endif #include #include #if !defined(__APPLE__) #include #endif #ifdef WIN32 #define int16_t short #define int32_t int #define int64_t long long int #endif #ifndef WIN32 #include #else #ifndef uint8_t #define uint8_t unsigned char #endif #ifndef uint16_t #define uint16_t short #endif #ifndef int32_t #define int32_t int #endif #ifndef int64_t #define int64_t long long int #endif #ifndef uint32_t #ifndef WIN32 #define uint32_t int #else #define uint32_t unsigned int #endif #endif #endif #include "IP2Loc_DBInterface.h" /* API version changes only if functions are added (release) or changed (minor/major) */ #define API_VERSION 8.0.4 #define API_VERSION_MAJOR 8 #define API_VERSION_MINOR 0 #define API_VERSION_RELEASE 4 #define API_VERSION_NUMERIC (((API_VERSION_MAJOR * 100) + API_VERSION_MINOR) * 100 + API_VERSION_RELEASE) #define MAX_IPV4_RANGE 4294967295U #define MAX_IPV6_RANGE "340282366920938463463374607431768211455" #define IPV4 0 #define IPV6 1 #define COUNTRYSHORT 0x00001 #define COUNTRYLONG 0x00002 #define REGION 0x00004 #define CITY 0x00008 #define ISP 0x00010 #define LATITUDE 0x00020 #define LONGITUDE 0x00040 #define DOMAIN_ 0x00080 // DOMAIN is a math.h macro #define ZIPCODE 0x00100 #define TIMEZONE 0x00200 #define NETSPEED 0x00400 #define IDDCODE 0x00800 #define AREACODE 0x01000 #define WEATHERSTATIONCODE 0x02000 #define WEATHERSTATIONNAME 0x04000 #define MCC 0x08000 #define MNC 0x10000 #define MOBILEBRAND 0x20000 #define ELEVATION 0x40000 #define USAGETYPE 0x80000 #define ALL COUNTRYSHORT | COUNTRYLONG | REGION | CITY | ISP | LATITUDE | LONGITUDE | DOMAIN_ | ZIPCODE | TIMEZONE | NETSPEED | IDDCODE | AREACODE | WEATHERSTATIONCODE | WEATHERSTATIONNAME | MCC | MNC | MOBILEBRAND | ELEVATION | USAGETYPE #define DEFAULT 0x0001 #define NO_EMPTY_STRING 0x0002 #define NO_LEADING 0x0004 #define NO_TRAILING 0x0008 #define INVALID_IPV6_ADDRESS "INVALID IPV6 ADDRESS" #define INVALID_IPV4_ADDRESS "INVALID IPV4 ADDRESS" #define NOT_SUPPORTED "This parameter is unavailable for selected data file. Please upgrade the data file." typedef struct { FILE *filehandle; uint8_t databasetype; uint8_t databasecolumn; uint8_t databaseday; uint8_t databasemonth; uint8_t databaseyear; uint32_t databasecount; uint32_t databaseaddr; uint32_t ipversion; uint32_t ipv4databasecount; uint32_t ipv4databaseaddr; uint32_t ipv6databasecount; uint32_t ipv6databaseaddr; uint32_t ipv4indexbaseaddr; uint32_t ipv6indexbaseaddr; } IP2Location; typedef struct { char *country_short; char *country_long; char *region; char *city; char *isp; float latitude; float longitude; char *domain; char *zipcode; char *timezone; char *netspeed; char *iddcode; char *areacode; char *weatherstationcode; char *weatherstationname; char *mcc; char *mnc; char *mobilebrand; float elevation; char *usagetype; } IP2LocationRecord; /*################## # Public Functions ##################*/ IP2Location *IP2Location_open(char *db); int IP2Location_open_mem(IP2Location *loc, enum IP2Location_mem_type); uint32_t IP2Location_close(IP2Location *loc); IP2LocationRecord *IP2Location_get_country_short(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_country_long(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_region(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_city (IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_isp(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_latitude(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_longitude(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_domain(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_zipcode(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_timezone(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_netspeed(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_iddcode(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_areacode(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_weatherstationcode(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_weatherstationname(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_mcc(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_mnc(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_mobilebrand(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_elevation(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_usagetype(IP2Location *loc, char *ip); IP2LocationRecord *IP2Location_get_all(IP2Location *loc, char *ip); void IP2Location_free_record(IP2LocationRecord *record); void IP2Location_delete_shm(); unsigned long int IP2Location_api_version_num(void); char *IP2Location_api_version_string(void); char *IP2Location_lib_version_string(void); #ifdef __cplusplus } #endif #endif ipv6calc-1.0.0/external-fallback/IP2Location/LICENSE.LGPLv3000077500000000000000000000167431312366535500227230ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ipv6calc-1.0.0/external-fallback/IP2Location/VERSION-IP2Location000066400000000000000000000000061312366535500240170ustar00rootroot000000000000008.0.4 ipv6calc-1.0.0/getopt/000077500000000000000000000000001312366535500145325ustar00rootroot00000000000000ipv6calc-1.0.0/getopt/Makefile.in000066400000000000000000000006221312366535500165770ustar00rootroot00000000000000# Adapted for use with project 'ipv6calc' by Peter Bieringer # $Id: 25d44c1c2e190070435248edc87aedcd9057a144 $ CC = @CC@ all: getopt1.o getopt.o getopt1.o: getopt1.c ${CC} $(CFLAGS) -fPIC -o getopt1.o -c -s getopt1.c getopt.o: getopt.c ${CC} $(CFLAGS) -fPIC -o getopt.o -c -s getopt.c clean: rm -f *.o *.so.1 *.a distclean: ${MAKE} clean autoclean: ${MAKE} distclean ipv6calc-1.0.0/getopt/README000066400000000000000000000005571312366535500154210ustar00rootroot00000000000000$Id: 760357618b5563d0686cfd8e157c94e67432f2e9 $ getopt was added because of OpenBSD don't support this out-of-the box Credits to Vladimir Kotal for the patch Original code is located at ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/obrien/libgnugetopt-1.1.tar.gz and a local copy is at ../samplecode/getopt/ Peter Bieringer ipv6calc-1.0.0/getopt/getopt.c000066400000000000000000000727001312366535500162060ustar00rootroot00000000000000/* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu before changing it! Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO #define _NO_PROTO #endif #ifdef HAVE_CONFIG_H #include #endif #if !defined (__STDC__) || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ #include #include #endif /* GNU C library. */ #ifdef VMS #include #if HAVE_STRING_H - 0 #include #endif #endif #if defined (WIN32) && !defined (__CYGWIN32__) /* It's not Unix, really. See? Capital letters. */ #include #define getpid() GetCurrentProcessId() #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. When compiling libc, the _ macro is predefined. */ #ifdef HAVE_LIBINTL_H # include # define _(msgid) gettext (msgid) #else # define _(msgid) (msgid) #endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg = NULL; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ int __getopt_initialized = 0; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ #include #define my_index strchr #else /* Avoid depending on library functions or files whose names are inconsistent. */ char *getenv (); static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ #if !defined (__STDC__) || !__STDC__ /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); #endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; static int original_argc; static char *const *original_argv; extern pid_t __libc_pid; /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ static void __attribute__ ((unused)) store_args_and_env (int argc, char *const *argv) { /* XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ original_argc = argc; original_argv = argv; } text_set_element (__libc_subinit, store_args_and_env); # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined (__STDC__) && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #ifdef _LIBC /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len); memset (&new_str[nonoption_flags_max_len], '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined (__STDC__) && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #ifdef _LIBC if (posixly_correct == NULL && argc == original_argc && argv == original_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else { memcpy (__getopt_nonoption_flags, orig_str, len); memset (&__getopt_nonoption_flags[len], '\0', nonoption_flags_max_len - len); } } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #ifdef _LIBC #define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else #define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, _("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, _("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (opterr) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (opterr) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ ipv6calc-1.0.0/getopt/getopt.h000066400000000000000000000107161312366535500162120ustar00rootroot00000000000000/* Declarations for getopt. Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GETOPT_H #define _GETOPT_H 1 #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { #if defined (__STDC__) && __STDC__ const char *name; #else char *name; #endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 #if defined (__STDC__) && __STDC__ #ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int argc, char *const *argv, const char *shortopts); #else /* not __GNU_LIBRARY__ */ extern int getopt (); #endif /* __GNU_LIBRARY__ */ extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); #else /* not __STDC__ */ extern int getopt (); extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); #endif /* __STDC__ */ #ifdef __cplusplus } #endif #endif /* _GETOPT_H */ ipv6calc-1.0.0/getopt/getopt1.c000066400000000000000000000106461312366535500162700ustar00rootroot00000000000000/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "getopt.h" #if !defined (__STDC__) || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* Not ELIDE_CODE. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ ipv6calc-1.0.0/ipv6calc/000077500000000000000000000000001312366535500147375ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6calc/Makefile.in000066400000000000000000000053511312366535500170100ustar00rootroot00000000000000# Project : ipv6calc # File : ipv6calc/Makefile[.in] # Version : $Id: 0b4b174d3d485869f5881244d0dc9b968c2e4643 $ # Copyright : 2002-2014 by Peter Bieringer # # Information: # Makefile for ipv6calc # prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ # Compiler and Linker Options DEFAULT_CFLAGS ?= -O2 -Wall -g @CFLAGS_EXTRA@ INCLUDES= @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ @GEOIP_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @GEOIP_LIB_L1@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ LDFLAGS_EXTRA = @LDFLAGS_EXTRA@ LDFLAGS_EXTRA_STATIC = @LDFLAGS_EXTRA_STATIC@ OBJS = ipv6calc.o showinfo.o ipv6calchelp_local.o # splint SPLINT_OPT_OUTSIDE = -warnposix -nullassign -uniondef -compdef -usedef -formatconst -exportlocal #SPLINT_OPT_OUTSIDE = -uniondef +matchanyintegral --nullassign +ignoresigns -compdef -usedef -modobserver -formatconst -warnposix -exportlocal SPLINT_TODO_LATER = -unrecog -retvalint all: ipv6calc .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) $(OBJS): ipv6calc.h ipv6calchelp_local.h showinfo.h ipv6calcoptions_local.h ../config.h libipv6calc: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper: cd ../ && ${MAKE} lib-make ipv6calc: $(OBJS) libipv6calc libipv6calc_db_wrapper $(CC) -o ipv6calc $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm static: ipv6calc $(CC) -o ipv6calc-static $(OBJS) $(GETOBJS) $(LDFLAGS) $(LIBS) $(LDFLAGS_EXTRA) -lm $(LDFLAGS_EXTRA_STATIC) -static distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6calc ipv6calc-static *.o test: ipv6calc LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calc.sh || exit 1 LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calc_filter.sh || exit 1 LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calc_anonymization.sh || exit 1 LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_showinfo.sh || exit 1 test-minimal: ipv6calc LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calc.sh || exit 1 LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_showinfo.sh minimal || exit 1 test-ldlibpath: ipv6calc LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calc.sh || exit 1 LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calc_filter.sh || exit 1 LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calc_anonymization.sh || exit 1 LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_showinfo.sh || exit 1 codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: if [ ! -d $(DESTDIR)$(bindir) ]; then install -d -m 755 $(DESTDIR)$(bindir); fi install -m 755 ipv6calc $(DESTDIR)$(bindir) ipv6calc-1.0.0/ipv6calc/ipv6calc.c000066400000000000000000002122451312366535500166200ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calc/ipv6calc.c * Version : $Id: 2eb8ebcd4bae67ccfbd0cb10edab2d7e4ebc6cc7 $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Central program (main) * This program print out different formats of an given IP(v4/v6)/MAC address */ #include #include #include #include #include #include "config.h" #include "ipv6calc.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "ipv6calctypes.h" #include "ipv6calcoptions.h" #include "ipv6calcoptions_local.h" #include "ipv6calchelp.h" #include "ipv6calchelp_local.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "libmac.h" #include "libeui64.h" #include "showinfo.h" #include "librfc1884.h" #include "librfc1886.h" #include "librfc1924.h" #include "libifinet6.h" #include "librfc2874.h" #include "librfc3056.h" #include "librfc3041.h" #include "librfc5569.h" #include "librfc6052.h" #include "libeui64.h" #include "libieee.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "../databases/lib/libipv6calc_db_wrapper.h" #ifdef SUPPORT_IP2LOCATION #include "IP2Location.h" /* * * API_VERSION is defined as a bareword in IP2Location.h, * * we need this trick to stringify it. Blah. * */ #define makestr(x) #x #define xmakestr(x) makestr(x) #endif #ifdef SUPPORT_GEOIP #include "GeoIP.h" #endif long int ipv6calc_debug = 0; // ipv6calc_debug usage ok /* pipe support */ int input_is_pipe = 0; #define LINEBUFFER 16384 /* anonymization default values */ s_ipv6calc_anon_set ipv6calc_anon_set; /* features */ int feature_zeroize = 1; // always supported int feature_anon = 1; // always supported int feature_kp = 0; // will be checked later /* showinfo machine readable filter */ char showinfo_machine_readable_filter[32] = ""; int showinfo_machine_readable_filter_used = 0; /**************************************************/ /* main */ int main(int argc, char *argv[]) { /* check compatibility */ #ifdef SHARED_LIBRARY IPV6CALC_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) IPV6CALC_DB_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) #endif // SHARED_LIBRARY char resultstring[NI_MAXHOST] = ""; char resultstring2[NI_MAXHOST] = ""; char resultstring3[NI_MAXHOST] = ""; int retval = 1, i, j, lop, result; extern int optopt; uint32_t command = 0; int bit_start = 0, bit_end = 0, force_prefix = 0; char *input1 = NULL, *input2 = NULL; int inputc; int inputtype_given = 0, outputtype_given = 0, action_given = 0; int ipv6rd_prefixlength = -1; /* new option style storage */ uint32_t inputtype = FORMAT_undefined, inputtype2 = FORMAT_undefined; uint32_t outputtype = FORMAT_undefined; uint32_t action = ACTION_undefined; /* format options storage */ uint32_t formatoptions = 0; /* used structures */ ipv6calc_ipv6addr ipv6addr, ipv6addr2, ipv6addr3, ipv6addr4; ipv6calc_ipv4addr ipv4addr, ipv4addr2; ipv6calc_macaddr macaddr; ipv6calc_eui64addr eui64addr; /* arrays of structures and chars for "test" action */ #define ipv6calc_arrays (IPV6CALC_TEST_LIST_MAX + 1) ipv6calc_ipv6addr ipv6addr_a[ipv6calc_arrays]; ipv6calc_ipv4addr ipv4addr_a[ipv6calc_arrays]; char *input_a[ipv6calc_arrays]; int a; int result_a[ipv6calc_arrays]; /* used simple data */ uint32_t asn; int asn_valid = 0; /* filter structure */ s_ipv6calc_filter_master filter_master; libipv6calc_filter_clear(&filter_master); /* IID statistics */ s_iid_statistics iid_statistics; int iid_random_result; /* clear address structures */ ipv6addr_clearall(&ipv6addr); ipv6addr_clearall(&ipv6addr2); ipv6addr_clearall(&ipv6addr3); ipv6addr_clearall(&ipv6addr4); ipv4addr_clearall(&ipv4addr); ipv4addr_clearall(&ipv4addr2); mac_clearall(&macaddr); for (a = 0; a < ipv6calc_arrays; a++) { ipv6addr_clearall(&ipv6addr_a[a]); ipv4addr_clearall(&ipv4addr_a[a]); result_a[a] = -1; }; /* pipe mode */ char linebuffer[LINEBUFFER]; char token[LINEBUFFER]; char *charptr, *cptr, **ptrptr; ptrptr = &cptr; int linecounter = 0; int flush_mode = 0; /* options */ struct option longopts[IPV6CALC_MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; /* initialize debug value from environment for bootstrap debugging */ ipv6calc_debug_from_env(); // ipv6calc_debug usage ok /* add options */ ipv6calc_options_add_common_anon(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add_common_basic(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add(shortopts, sizeof(shortopts), longopts, &longopts_maxentries, ipv6calc_shortopts, ipv6calc_longopts, MAXENTRIES_ARRAY(ipv6calc_longopts)); /* default */ result = libipv6calc_anon_set_by_name(&ipv6calc_anon_set, ANONPRESET_DEFAULT); if (result != 0) { fprintf(stderr, "major problem, ipv6calc anonymization default preset not found: %s", ANONPRESET_DEFAULT); exit(EXIT_FAILURE); }; if (argc <= 1) { ipv6calc_printinfo(); exit(EXIT_FAILURE); }; /* Fetch the command-line arguments. */ DEBUGSECTION_BEGIN(DEBUG_ipv6calc_general) DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Start parsing options: shortopts=%s", shortopts); i = 0; while(longopts[i].name != NULL) { DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Long option: %s/%d/%08x", longopts[i].name, longopts[i].has_arg, longopts[i].val); i++; }; DEBUGSECTION_END /* initialize options from environment */ ipv6calc_common_options_from_env(longopts, &ipv6calc_anon_set); while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Parsing option: 0x%08x (%d: %s)", i, optind, argv[optind - 1]); if ((i == '?') && (strcmp(argv[optind - 1], "-?") != 0)) { exit(EXIT_FAILURE); }; if (i == ':') { exit(EXIT_FAILURE); }; /* catch "common basic" options */ result = ipv6calcoptions_common_basic(i, optarg, longopts); if (result == 0) { // found continue; }; /* catch "common anon" options */ result = ipv6calcoptions_common_anon(i, optarg, longopts, &ipv6calc_anon_set); if (result == 0) { // found continue; }; /* specific options */ DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Parsing option locally: 0x%08x", i); switch (i) { case -1: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "end of options"); break; case 'v': if ((command & CMD_printversion_verbose) != 0) { // 3rd time '-v' command |= CMD_printversion_verbose2; } else if ((command & CMD_printversion) != 0) { // 2nd time '-v' command |= CMD_printversion_verbose; } else { command |= CMD_printversion; }; break; case 'f': flush_mode = 1; break; case 'h': case '?': command |= CMD_printhelp; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "help option detected"); break; case 'L': fprintf(stderr, "Option is obsolete: -L\n"); break; case DB_ip2location_ipv4_default: fprintf(stderr, "Option is obsolete: --db-ip2location-ipv4-default\n"); break; case DB_ip2location_ipv6_default: fprintf(stderr, "Option is obsolete: --db-ip2location-ipv6-default\n"); break; case 'G': fprintf(stderr, "Option is obsolete: -G\n"); break; case DB_geoip_ipv4_default: fprintf(stderr, "Option is obsolete: --db-geoip-ipv4-default\n"); break; case DB_geoip_ipv6_default: fprintf(stderr, "Option is obsolete: --db-geoip-ipv6-default\n"); break; case CMD_printexamples: command = CMD_printexamples; break; /* backward compatibility/shortcut commands */ case 'r': case CMD_addr_to_ip6int: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_auto; outputtype = FORMAT_revnibbles_int; break; case 'a': case CMD_addr_to_ip6arpa: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_auto; outputtype = FORMAT_revnibbles_arpa; break; case 'b': case CMD_addr_to_bitstring: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv6addr; outputtype = FORMAT_bitstring; break; case CMD_addr_to_compressed: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv6addr; outputtype = FORMAT_ipv6addr; formatoptions |= FORMATOPTION_printcompressed; break; case CMD_addr_to_uncompressed: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv6addr; outputtype = FORMAT_ipv6addr; formatoptions |= FORMATOPTION_printuncompressed; break; case CMD_addr_to_base85: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv6addr; outputtype = FORMAT_base85; break; case CMD_base85_to_addr: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_base85; outputtype = FORMAT_ipv6addr; formatoptions |= FORMATOPTION_printuncompressed; break; case CMD_mac_to_eui64: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_mac; outputtype = FORMAT_eui64; action = ACTION_mac_to_eui64; break; case CMD_addr_to_fulluncompressed: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv6addr; outputtype = FORMAT_ipv6addr; formatoptions |= FORMATOPTION_printfulluncompressed; break; case CMD_addr_to_ifinet6: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv6addr; outputtype = FORMAT_ifinet6; break; case CMD_ifinet6_to_compressed: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ifinet6; outputtype = FORMAT_ipv6addr; formatoptions |= FORMATOPTION_printcompressed; break; case CMD_ipv4_to_6to4addr: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_ipv4addr; outputtype = FORMAT_ipv6addr; action = ACTION_ipv4_to_6to4addr; break; case CMD_eui64_to_privacy: if (inputtype != FORMAT_undefined || outputtype != FORMAT_undefined) { printhelp_doublecommands(); exit(EXIT_FAILURE); }; inputtype = FORMAT_iid_token; outputtype = FORMAT_iid_token; action = ACTION_iid_token_to_privacy; break; case 'i': case CMD_showinfo: command = CMD_showinfo; break; case CMD_showinfotypes: command = CMD_showinfotypes; break; case CMD_6rd_relay_prefix: retval = addr_to_ipv4addrstruct(optarg, resultstring, sizeof(resultstring), &ipv4addr2); break; case CMD_6rd_prefix: retval = addr_to_ipv6addrstruct(optarg, resultstring, sizeof(resultstring), &ipv6addr); break; case CMD_6rd_prefixlength: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "special option '6rd_prefixlength' selected"); if ((atoi(optarg) >= 1) && (atoi(optarg) <= 32)) { ipv6rd_prefixlength = atoi(optarg); } else { fprintf(stderr, " Argument of option '6rd_prefixlength' is out or range (1-32): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; break; /* test command */ case CMD_test_prefix: case CMD_test_ge: case CMD_test_gt: case CMD_test_le: case CMD_test_lt: switch (i) { case CMD_test_prefix: a = IPV6CALC_TEST_PREFIX; break; case CMD_test_gt: a = IPV6CALC_TEST_GT; break; case CMD_test_ge: a = IPV6CALC_TEST_GE; break; case CMD_test_lt: a = IPV6CALC_TEST_LT; break; case CMD_test_le: a = IPV6CALC_TEST_LE; break; }; const char *test_text = ""; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_longopts); i++) { if (ipv6calc_longopts[i].val == i) { test_text = ipv6calc_longopts[i].name; break; }; }; // retrieve text represtation DEBUGPRINT_WA(DEBUG_ipv6calc_general, "special option '%s' selected", test_text); // autodefine action action = ACTION_test; action_given = 1; inputtype2 = libipv6calc_autodetectinput(optarg); switch (inputtype2) { case FORMAT_ipv6addr: DEBUGPRINT_WA(DEBUG_ipv6calc_general, "special option '%s' has IPv6 address: %s", test_text, optarg); retval = addr_to_ipv6addrstruct(optarg, resultstring, sizeof(resultstring), &ipv6addr_a[a]); break; case FORMAT_ipv4addr: DEBUGPRINT_WA(DEBUG_ipv6calc_general, "special option '%s' has IPv4 address: %s", test_text, optarg); retval = addr_to_ipv4addrstruct(optarg, resultstring, sizeof(resultstring), &ipv4addr_a[a]); break; default: fprintf(stderr, "unsupported input type detected for '%s': %s\n", test_text, optarg); exit(EXIT_FAILURE); }; if (retval != 0) { fprintf(stderr, " Argument of option '%s' is not a valid IPv4/6 address: %s\n", test_text, optarg); exit(EXIT_FAILURE); }; // save pointer for later input_a[a] = optarg; break; /* format options */ case 'C': case FORMATOPTION_NUM_printcompressed + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printcompressed; break; case 'U': case FORMATOPTION_NUM_printuncompressed + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printuncompressed; break; case 'F': case FORMATOPTION_NUM_printfulluncompressed + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printfulluncompressed; break; case FORMATOPTION_NUM_printprefix + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printprefix; break; case FORMATOPTION_NUM_printsuffix + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printsuffix; break; case FORMATOPTION_NUM_maskprefix + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_maskprefix; break; case FORMATOPTION_NUM_masksuffix + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_masksuffix; break; case 'l': case FORMATOPTION_NUM_printlowercase + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printlowercase; break; case 'u': case FORMATOPTION_NUM_printuppercase + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printuppercase; break; case FORMATOPTION_NUM_forceprefix + FORMATOPTION_NUM_HEAD: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "format option 'forceprefix' selected"); if ((atoi(optarg) >= 1) && (atoi(optarg) <= 128)) { force_prefix = atoi(optarg); formatoptions |= FORMATOPTION_forceprefix; } else { fprintf(stderr, " Argument of option 'forceprefix' is out or range (1-128): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; break; case FORMATOPTION_NUM_printstart + FORMATOPTION_NUM_HEAD: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "format option 'printstart' selected"); if ((atoi(optarg) >= 1) && (atoi(optarg) <= 128)) { bit_start = atoi(optarg); formatoptions |= FORMATOPTION_printstart; } else { fprintf(stderr, " Argument of option 'printstart' is out or range (1-128): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; break; case FORMATOPTION_NUM_printend + FORMATOPTION_NUM_HEAD: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "format option 'printend' selected"); if ((atoi(optarg) >= 1) && (atoi(optarg) <= 128)) { bit_end = atoi(optarg); formatoptions |= FORMATOPTION_printend; } else { fprintf(stderr, " Argument of option 'printend' is out or range (1-128): %d\n", atoi(optarg)); exit(EXIT_FAILURE); }; break; case FORMATOPTION_NUM_mr_quote_always + FORMATOPTION_NUM_HEAD: formatoptions |= (FORMATOPTION_mr_quote_always | FORMATOPTION_machinereadable); break; case FORMATOPTION_NUM_mr_quote_never + FORMATOPTION_NUM_HEAD: formatoptions |= (FORMATOPTION_mr_quote_never | FORMATOPTION_machinereadable); break; case FORMATOPTION_NUM_mr_value_only + FORMATOPTION_NUM_HEAD: if (strlen(showinfo_machine_readable_filter) >= sizeof(showinfo_machine_readable_filter)) { fprintf(stderr, " Argument of option 'mrtvo' is too long: %s\n", optarg); exit(EXIT_FAILURE); }; snprintf(showinfo_machine_readable_filter, sizeof(showinfo_machine_readable_filter), "%s", optarg); formatoptions |= (FORMATOPTION_mr_select_token | FORMATOPTION_mr_value_only | FORMATOPTION_machinereadable); break; case FORMATOPTION_NUM_mr_select_token + FORMATOPTION_NUM_HEAD: if (strlen(showinfo_machine_readable_filter) >= sizeof(showinfo_machine_readable_filter)) { fprintf(stderr, " Argument of option 'mrst' is too long: %s\n", optarg); exit(EXIT_FAILURE); }; snprintf(showinfo_machine_readable_filter, sizeof(showinfo_machine_readable_filter), "%s", optarg); formatoptions |= (FORMATOPTION_mr_select_token | FORMATOPTION_machinereadable); break; case FORMATOPTION_NUM_mr_select_token_pa + FORMATOPTION_NUM_HEAD: if (strlen(showinfo_machine_readable_filter) >= sizeof(showinfo_machine_readable_filter)) { fprintf(stderr, " Argument of option 'mrstpa' is too long: %s\n", optarg); exit(EXIT_FAILURE); }; snprintf(showinfo_machine_readable_filter, sizeof(showinfo_machine_readable_filter), "%s", optarg); formatoptions |= (FORMATOPTION_mr_select_token | FORMATOPTION_mr_select_token_pa | FORMATOPTION_machinereadable); break; case FORMATOPTION_NUM_mr_match_token + FORMATOPTION_NUM_HEAD: if (strlen(showinfo_machine_readable_filter) >= sizeof(showinfo_machine_readable_filter)) { fprintf(stderr, " Argument of option 'mrmt' is too long: %s\n", optarg); exit(EXIT_FAILURE); }; snprintf(showinfo_machine_readable_filter, sizeof(showinfo_machine_readable_filter), "%s", optarg); formatoptions |= (FORMATOPTION_mr_match_token | FORMATOPTION_machinereadable); break; case 'm': case FORMATOPTION_NUM_machinereadable + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_machinereadable; break; case FORMATOPTION_NUM_quiet + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_quiet; break; case FORMATOPTION_NUM_printmirrored + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_printmirrored; break; case FORMATOPTION_NUM_print_iid_var + FORMATOPTION_NUM_HEAD: formatoptions |= FORMATOPTION_print_iid_var; formatoptions |= FORMATOPTION_printfulluncompressed; break; /* new options */ case 'I': case CMD_inputtype: DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Got input string: %s", optarg); if ((strcmp(optarg, "-?") == 0) || (strcmp(optarg, "-h") == 0) || (strcmp(optarg, "--help") == 0) ) { inputtype = FORMAT_auto; command = CMD_printhelp; break; }; inputtype = ipv6calctypes_checktype(optarg); if (inputtype == FORMAT_undefined) { fprintf(stderr, " Input option is unknown: %s\n", optarg); exit(EXIT_FAILURE); }; inputtype_given = 1; break; case 'O': case CMD_outputtype: DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Got output string: %s", optarg); if ((strcmp(optarg, "-?") == 0) || (strcmp(optarg, "-h") == 0) || (strcmp(optarg, "--help") == 0) ) { outputtype = FORMAT_auto; command = CMD_printhelp; break; }; outputtype = ipv6calctypes_checktype(optarg); if (outputtype == FORMAT_undefined) { fprintf(stderr, " Output option is unknown: %s\n", optarg); exit(EXIT_FAILURE); }; outputtype_given = 1; break; case 'A': case CMD_actiontype: DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Got action string: %s", optarg); if ((strcmp(optarg, "-?") == 0) || (strcmp(optarg, "-h") == 0) || (strcmp(optarg, "--help") == 0) ) { action = ACTION_auto; command = CMD_printhelp; break; }; action = ipv6calctypes_checkaction(optarg); if (action == ACTION_undefined) { fprintf(stderr, " Action option is unknown: %s\n", optarg); exit(EXIT_FAILURE); }; action_given = 1; break; case 'E': DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Got expression string: %s", optarg); if ((strcmp(optarg, "-?") == 0) || (strcmp(optarg, "-h") == 0) || (strcmp(optarg, "--help") == 0) ) { action = ACTION_filter; command = CMD_printhelp; break; }; result = libipv6calc_filter_parse(optarg, &filter_master); if (result != 0) { exit(EXIT_FAILURE); }; if (action == ACTION_undefined) { // autodefine action action = ACTION_filter; action_given = 1; }; break; default: fprintf(stderr, "Usage: (see '%s --command -?|-h|--help' for more help)\n", PROGRAM_NAME); ipv6calc_printhelp(longopts, ipv6calc_longopts_shortopts_map); exit(EXIT_FAILURE); }; }; argv += optind; argc -= optind; if (ipv6calc_quiet != 0) { formatoptions |= FORMATOPTION_quiet; }; /* initialise database wrapper */ result = libipv6calc_db_wrapper_init(""); if (result != 0) { exit(EXIT_FAILURE); }; /* check for KeepTypeAsnCC support */ if ((libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB) == 1) \ && (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB) == 1)) { feature_kp = 1; }; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Debug value:%08lx command:%08lx inputtype:%08lx outputtype:%08lx action:%08lx formatoptions:%08lx", (unsigned long) ipv6calc_debug, (unsigned long) command, (unsigned long) inputtype, (unsigned long) outputtype, (unsigned long) action, (unsigned long) formatoptions); // ipv6calc_debug usage ok /* do work depending on selection */ if ((command & CMD_printversion) != 0) { if ((command & CMD_printversion_verbose) != 0) { printversion_verbose(((command & CMD_printversion_verbose2) !=0) ? LEVEL_VERBOSE2 : LEVEL_VERBOSE); } else { printversion(); }; if ((command & CMD_printhelp) != 0) { printversion_help(); }; exit(EXIT_SUCCESS); }; /* print help handling */ if ((outputtype_given == 1) && (command & CMD_printhelp)) { command = CMD_printexamples; }; if (command & CMD_printhelp) { if ( (outputtype == FORMAT_undefined) && (inputtype == FORMAT_undefined) && (action == ACTION_undefined)) { ipv6calc_printhelp(longopts, ipv6calc_longopts_shortopts_map); exit(EXIT_FAILURE); } else if (outputtype == FORMAT_auto) { if (inputtype == FORMAT_undefined) { inputtype = FORMAT_auto; }; printhelp_outputtypes(inputtype, formatoptions); exit(EXIT_FAILURE); } else if (inputtype == FORMAT_auto) { if (outputtype == FORMAT_undefined) { printhelp_inputtypes(formatoptions); } else { printhelp_output_dispatcher(outputtype); }; exit(EXIT_FAILURE); } else if (action == ACTION_auto) { printhelp_actiontypes(formatoptions, ipv6calc_longopts); exit(EXIT_FAILURE); } else if (action != ACTION_undefined) { printhelp_action_dispatcher(action, 0); exit(EXIT_FAILURE); }; } else if (command == CMD_printexamples) { printhelp_output_dispatcher(outputtype); exit(EXIT_FAILURE); } else if (command == CMD_showinfotypes) { showinfo_availabletypes(); exit(EXIT_FAILURE); }; if (action == ACTION_anonymize) { /* check requirements */ if (libipv6calc_anon_supported(&ipv6calc_anon_set) == 0) { fprintf(stderr, "ipv6calc anonymization method not supported: %s\n", libipv6calc_anon_method_name(&ipv6calc_anon_set)); exit(EXIT_FAILURE); }; }; if (action == ACTION_filter) { if (libipv6calc_filter_check(&filter_master) != 0) { fprintf(stderr, "ipv6calc filter check causes a problem\n"); exit(EXIT_FAILURE); }; }; if (action == ACTION_test) { // check whether at least one test option is given result = 0; for (a = IPV6CALC_TEST_LIST_MIN; a <= IPV6CALC_TEST_LIST_MAX; a++) { if ((ipv4addr_a[a].flag_valid == 1) || (ipv6addr_a[a].flag_valid == 1)) { result = 1; }; }; if (result == 0) { fprintf(stderr, "ipv6calc action 'test' misses prefix or begin/end for testing\n"); exit(EXIT_FAILURE); }; }; if (argc > 0) { DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Got input: %s", argv[0]); } else { if (isatty (STDIN_FILENO)) { } else { input_is_pipe = 1; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Input is a pipe"); formatoptions |= FORMATOPTION_quiet; // force quiet mode }; }; /***** input type handling *****/ DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of input type handling"); /* check length of input */ if (argc > 0) { if (input_is_pipe == 1) { fprintf(stderr, "Additional input found in pipe mode\n"); exit(EXIT_FAILURE); }; for (i = 0; i < argc; i++) { if ( argv[i] != NULL ) { if ( strlen(argv[i]) >= NI_MAXHOST ) { /* that's not good for size limited buffers...*/ fprintf(stderr, "Argument %d is too long\n", i + 1); exit(EXIT_FAILURE); }; }; }; }; /* loop for pipe */ if (input_is_pipe == 1) { PIPE_input: /* read line from stdin */ charptr = fgets(linebuffer, LINEBUFFER, stdin); if (charptr == NULL) { /* end of input */ exit(retval); }; linecounter++; if (linecounter == 1) { DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Ok, proceeding stdin..."); }; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Line: %d", linecounter); if (strlen(linebuffer) >= NI_MAXHOST) { fprintf(stderr, "Line too long: %d\n", linecounter); exit(EXIT_FAILURE); }; if (strlen(linebuffer) == 0) { fprintf(stderr, "Line empty: %d\n", linecounter); goto PIPE_input; }; /* remove trailing \n */ if (linebuffer[strlen(linebuffer) - 1] == '\n') { linebuffer[strlen(linebuffer) - 1] = '\0'; }; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "stdin got line: '%s'", linebuffer); if (linebuffer[strlen(linebuffer) - 1] == '\n') { /* remove trailing \n */ linebuffer[strlen(linebuffer) - 1] = '\0'; }; /* look for first token */ charptr = strtok_r(linebuffer, " \t\n", ptrptr); if ( charptr == NULL ) { fprintf(stderr, "Line contains no token: %d\n", linecounter); goto PIPE_input; }; if ( strlen(charptr) >= LINEBUFFER) { fprintf(stderr, "Line too strange: %d\n", linecounter); goto PIPE_input; }; snprintf(token, sizeof(token), "%s", charptr); input1 = token; inputc = 1; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Token 1: '%s'", input1); /* check for second token */ if (*ptrptr[0] != '\0') { input2 = *ptrptr; inputc = 2; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Token 2: '%s'", input2); }; } else { inputc = argc; if (argc >= 1) { input1 = argv[0]; }; if (argc >= 2) { input2 = argv[1]; }; }; /* reset input type in case of action=filter and pipe mode */ if ((input_is_pipe == 1) && (action_given == 1) && ( (action == ACTION_filter) || (action == ACTION_test) ) ) { DEBUGPRINT_NA(DEBUG_ipv6calc_general, "reset input type for later autodetection"); inputtype = FORMAT_auto; if (action == ACTION_test) { DEBUGPRINT_NA(DEBUG_ipv6calc_general, "reset output type for later autodetection"); outputtype = FORMAT_auto; // clear flags ipv4addr.flag_valid = 0; ipv6addr.flag_valid = 0; }; }; /* autodetection */ if ((inputtype == FORMAT_undefined || inputtype == FORMAT_auto) && inputc > 0) { DEBUGPRINT_NA(DEBUG_ipv6calc_general, "call input type autodetection"); /* no input type specified or automatic selected */ if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "no input type specified, try autodetection..."); }; inputtype = libipv6calc_autodetectinput(input1); DEBUGPRINT_WA(DEBUG_ipv6calc_general, "call input type autodetection resulted in 0x%08x", inputtype); if ( inputtype != FORMAT_undefined ) { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatstrings); i++) { if (inputtype == ipv6calc_formatstrings[i].number) { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "found type: %s\n", ipv6calc_formatstrings[i].token); }; break; }; }; } else { fprintf(stderr, "no result!\n"); }; } else { DEBUGPRINT_NA(DEBUG_ipv6calc_general, "input type autodetection skipped"); }; /* auto set of output type*/ if (inputtype == FORMAT_revnibbles_int || inputtype == FORMAT_revnibbles_arpa || inputtype == FORMAT_ipv6literal) { if ( outputtype == FORMAT_undefined ) { outputtype = FORMAT_ipv6addr; }; }; /***** automatic action handling *****/ if (action == ACTION_undefined) { if ( (inputtype == FORMAT_mac && (input_is_pipe == 0 || inputtype_given == 1)) && (outputtype == FORMAT_eui64 && outputtype_given == 1) ) { action = ACTION_mac_to_eui64; } else if ( (inputtype == FORMAT_iid_token && (input_is_pipe == 0 || inputtype_given == 1)) && (outputtype == FORMAT_iid_token && outputtype_given == 1) ) { action = ACTION_iid_token_to_privacy; } else if ( inputtype == FORMAT_prefix_mac && (input_is_pipe == 0 || inputtype_given == 1)) { action = ACTION_prefix_mac_to_ipv6; if ( outputtype == FORMAT_undefined ) { outputtype = FORMAT_ipv6addr; }; }; }; if (input_is_pipe == 0 && action_given == 0) { if ( action != ACTION_undefined ) { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "No action type specified, try autodetection..."); }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_actionstrings); i++) { if (action == ipv6calc_actionstrings[i].number) { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "found type: %s\n", ipv6calc_actionstrings[i].token); }; break; }; }; }; }; /* check formatoptions for validity */ DEBUGPRINT_WA(DEBUG_ipv6calc_general, "check format option of output type: 0x%08lx", (unsigned long) outputtype); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_outputformatoptionmap); i++) { if (outputtype != ipv6calc_outputformatoptionmap[i][0]) { continue; }; if ( (ipv6calc_outputformatoptionmap[i][1] & (formatoptions & ~FORMATOPTION_quiet) ) == (formatoptions & ~FORMATOPTION_quiet ) ) { /* all options valid */ break; }; if ((input_is_pipe == 1) && ((formatoptions & FORMATOPTION_print_iid_var) == FORMATOPTION_print_iid_var)) { /* workaround */ continue; }; fprintf(stderr, " Unsupported format option(s):\n"); /* run through format options */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_formatoptionstrings); j++) { if ( (ipv6calc_formatoptionstrings[j].number & FORMATOPTION_quiet) != 0 ) { /* skip format option "quiet" on check */ continue; }; if ((((~ ipv6calc_outputformatoptionmap[i][1]) & formatoptions) & ipv6calc_formatoptionstrings[j].number) != 0) { fprintf(stderr, " %s: %s\n", ipv6calc_formatoptionstrings[j].token, ipv6calc_formatoptionstrings[j].explanation); }; }; exit(EXIT_FAILURE); }; /* proceed input depending on type */ retval = -1; /* default */ DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Process input (inputtype: 0x%08lx, count=%d)", (unsigned long) inputtype, inputc); switch (inputtype) { case FORMAT_ipv6addr: case FORMAT_ipv6literal: case FORMAT_ipv4addr: case FORMAT_ipv4hex: case FORMAT_ipv4revhex: case FORMAT_base85: case FORMAT_mac: case FORMAT_eui64: case FORMAT_ifinet6: case FORMAT_revnibbles_int: case FORMAT_revnibbles_arpa: case FORMAT_bitstring: if (inputc < 1) { printhelp_missinginputdata(); exit(EXIT_FAILURE); }; break; case FORMAT_iid: if (inputc == 2) { inputtype = FORMAT_iid_token; if (outputtype == FORMAT_undefined) { outputtype = FORMAT_iid_token; }; }; break; case FORMAT_iid_token: if (inputc < 2) { printhelp_missinginputdata(); exit(EXIT_FAILURE); }; if (outputtype == FORMAT_undefined) { outputtype = FORMAT_iid_token; }; break; case FORMAT_prefix_mac: if (inputc < 2) { printhelp_missinginputdata(); exit(EXIT_FAILURE); }; break; case FORMAT_asn: if (command != CMD_showinfo) { fprintf(stderr, " Input-type only supported for 'showinfo'\n"); exit(EXIT_FAILURE); }; break; case FORMAT_auto_noresult: default: fprintf(stderr, " Input-type isn't autodetected\n"); exit(EXIT_FAILURE); }; switch (inputtype) { case FORMAT_ipv6addr: retval = addr_to_ipv6addrstruct(input1, resultstring, sizeof(resultstring), &ipv6addr); argc--; break; case FORMAT_ipv6literal: retval = addrliteral_to_ipv6addrstruct(input1, resultstring, sizeof(resultstring), &ipv6addr); argc--; break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(input1, resultstring, sizeof(resultstring), &ipv4addr); argc--; break; case FORMAT_ipv4hex: retval = addrhex_to_ipv4addrstruct(input1, resultstring, sizeof(resultstring), &ipv4addr, 0); argc--; break; case FORMAT_ipv4revhex: retval = addrhex_to_ipv4addrstruct(input1, resultstring, sizeof(resultstring), &ipv4addr, 1); argc--; break; case FORMAT_base85: retval = base85_to_ipv6addrstruct(input1, resultstring, sizeof(resultstring), &ipv6addr); argc--; break; case FORMAT_mac: retval = mac_to_macaddrstruct(input1, resultstring, sizeof(resultstring), &macaddr); argc--; break; case FORMAT_eui64: retval = libeui64_addr_to_eui64addrstruct(input1, resultstring, sizeof(resultstring), &eui64addr); argc--; break; case FORMAT_ifinet6: if (inputc < 2) { retval = libifinet6_ifinet6_to_ipv6addrstruct(input1, resultstring, sizeof(resultstring), &ipv6addr); } else { retval = libifinet6_ifinet6_withprefixlength_to_ipv6addrstruct(input1, input2, resultstring, sizeof(resultstring), &ipv6addr); }; break; case FORMAT_iid_token: /* Get first interface identifier */ retval = identifier_to_ipv6addrstruct(input1, resultstring, sizeof(resultstring), &ipv6addr); if (retval != 0) { break; }; /* Get second token */ retval = tokenlsb64_to_ipv6addrstruct(input2, resultstring, sizeof(resultstring), &ipv6addr2); break; case FORMAT_prefix_mac: /* Get first: IPv6 prefix */ retval = addr_to_ipv6addrstruct(input1, resultstring, sizeof(resultstring), &ipv6addr); if (retval != 0) { break; }; /* Get second: MAC address */ retval = mac_to_macaddrstruct(input2, resultstring, sizeof(resultstring), &macaddr); break; case FORMAT_revnibbles_int: case FORMAT_revnibbles_arpa: retval = librfc1886_nibblestring_to_ipv6addrstruct(input1, &ipv6addr, resultstring, sizeof(resultstring)); argc--; break; case FORMAT_bitstring: retval = librfc2874_bitstring_to_ipv6addrstruct(input1, &ipv6addr, resultstring, sizeof(resultstring)); argc--; break; case FORMAT_asn: retval = sscanf(input1, "%d", &asn); if (retval == 0) { retval = -1; snprintf(resultstring, sizeof(resultstring), "error parsing ASN"); } else { DEBUGPRINT_WA(DEBUG_ipv6calc_general, "ASN parsed: %d", asn); asn_valid = 1; retval = 0; }; argc--; break; case FORMAT_auto_noresult: fprintf(stderr, " Input-type isn't autodetected\n"); exit(EXIT_FAILURE); default: fprintf(stderr, " Input-type isn't implemented\n"); exit(EXIT_FAILURE); }; if (retval != 0) { if (strlen(resultstring) > 0) fprintf(stderr, "%s\n", resultstring); exit(EXIT_FAILURE); }; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "End of input type handling"); /***** postprocessing input *****/ DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of postprocessing input"); if (ipv4addr.flag_valid == 1) { ipv4addr_settype(&ipv4addr, 1); /* Set typeinfo */ /* force prefix */ if ((formatoptions & (FORMATOPTION_forceprefix)) != 0) { ipv4addr.flag_prefixuse = 1; ipv4addr.prefixlength = force_prefix; }; }; if (ipv6addr.flag_valid == 1) { ipv6addr_settype(&ipv6addr, 1); /* Set typeinfo */ /* honor 6rd prefix length option */ if (ipv6rd_prefixlength > 0) { ipv6addr.typeinfo2 |= IPV6_ADDR_TYPE2_6RD; ipv6addr.prefix2length = ipv6rd_prefixlength; }; /* force prefix */ if ((formatoptions & (FORMATOPTION_forceprefix)) != 0) { ipv6addr.flag_prefixuse = 1; ipv6addr.prefixlength = force_prefix; }; /* mask bits */ if ((formatoptions & (FORMATOPTION_maskprefix | FORMATOPTION_masksuffix)) != 0) { if (ipv6addr.flag_prefixuse == 1) { if ((formatoptions & FORMATOPTION_maskprefix) != 0) { ipv6addrstruct_maskprefix(&ipv6addr); } else if ((formatoptions & FORMATOPTION_masksuffix) != 0) { ipv6addrstruct_masksuffix(&ipv6addr); }; } else { fprintf(stderr, " Error: mask option used without specifying a prefix length\n"); exit(EXIT_FAILURE); }; }; /* start bit */ if ((formatoptions & FORMATOPTION_printstart) != 0) { DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Set bit start to: %d", bit_start); ipv6addr.bit_start = (uint8_t) bit_start; ipv6addr.flag_startend_use = 1; } else { ipv6addr.bit_start = 1; }; /* end bit */ if ((formatoptions & FORMATOPTION_printend) != 0) { DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Set bit end to: %d", bit_end); ipv6addr.bit_end = (uint8_t) bit_end; ipv6addr.flag_startend_use = 1; } else { /* default */ ipv6addr.bit_end = 128; }; /* prefix+suffix */ if ((formatoptions & (FORMATOPTION_printprefix | FORMATOPTION_printsuffix)) != 0) { if ( ipv6addr.flag_prefixuse == 0 ) { fprintf(stderr, " Error: missing prefix length for printing prefix/suffix\n"); exit(EXIT_FAILURE); } else { if ( ipv6addr.flag_startend_use == 0 ) { /* only print[prefix|suffix] */ if ((formatoptions & FORMATOPTION_printprefix) != 0) { ipv6addr.bit_start = 1; ipv6addr.bit_end = ipv6addr.prefixlength; ipv6addr.flag_startend_use = 1; } else if ((formatoptions & FORMATOPTION_printsuffix) != 0) { ipv6addr.bit_start = ipv6addr.prefixlength + 1; ipv6addr.bit_end = 128; ipv6addr.flag_startend_use = 1; }; } else { /* mixed */ if ((formatoptions & FORMATOPTION_printprefix) != 0) { if ( ipv6addr.prefixlength < ipv6addr.bit_start ) { fprintf(stderr, " Error: prefix length '%u' lower than given start bit number '%u'\n", (unsigned int) ipv6addr.prefixlength, (unsigned int) ipv6addr.bit_start); exit(EXIT_FAILURE); } else if ( ipv6addr.prefixlength >= ipv6addr.bit_end ) { fprintf(stderr, " Error: prefix length '%u' higher than given end bit number '%u'\n", (unsigned int) ipv6addr.prefixlength, (unsigned int) ipv6addr.bit_end); exit(EXIT_FAILURE); } else { ipv6addr.bit_end = ipv6addr.prefixlength; }; } else if ((formatoptions & FORMATOPTION_printsuffix) != 0) { if ( ipv6addr.prefixlength >= ipv6addr.bit_end ) { fprintf(stderr, " Error: prefix length '%u' higher than or eqal to given end bit number '%u'\n", (unsigned int) ipv6addr.prefixlength, (unsigned int) ipv6addr.bit_end); exit(EXIT_FAILURE); } else if (ipv6addr.prefixlength >= ipv6addr.bit_start) { fprintf(stderr, " Error: prefix length '%u' higher than or equal to given start bit number '%u'\n", (unsigned int) ipv6addr.prefixlength, (unsigned int) ipv6addr.bit_start); exit(EXIT_FAILURE); } else { ipv6addr.bit_start = ipv6addr.prefixlength + 1; }; }; }; }; }; /* check start/end */ if ( ipv6addr.flag_startend_use == 1 ) { if ( ipv6addr.bit_start > ipv6addr.bit_end ) { fprintf(stderr, " Error: start bit bigger than end bit\n"); exit(EXIT_FAILURE); } else if ( ipv6addr.bit_start == ipv6addr.bit_end ) { fprintf(stderr, " Error: start bit equal to end bit\n"); exit(EXIT_FAILURE); }; }; }; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "result of 'inputtype': %d", retval); if (retval != 0) { fprintf(stderr, "%s\n", resultstring); exit(EXIT_FAILURE); }; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "End of postprocessing input"); /***** action *****/ DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of action"); /***** automatic output handling *****/ if ( outputtype == FORMAT_undefined ) { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "no output type specified, try autodetection..."); }; if ( (inputtype == FORMAT_ipv4addr) && ((action == ACTION_ipv4_to_6to4addr) || (action == ACTION_ipv4_to_nat64)) ) { outputtype = FORMAT_ipv6addr; } else if ( (inputtype == FORMAT_ipv6addr) && ((action == ACTION_ipv4_to_6to4addr) || (action == ACTION_ipv4_to_nat64)) ) { outputtype = FORMAT_ipv4addr; } else if ( (inputtype == FORMAT_mac) && (action == ACTION_mac_to_eui64) ) { outputtype = FORMAT_eui64; formatoptions |= FORMATOPTION_printfulluncompressed; } else if ( (inputtype == FORMAT_ipv6addr) && ( (action == ACTION_undefined) || (action == ACTION_anonymize) || (action == ACTION_test) ) ) { outputtype = FORMAT_ipv6addr; } else if ( (inputtype == FORMAT_ipv4addr) && ( (action == ACTION_anonymize) || (action == ACTION_test) ) ) { outputtype = FORMAT_ipv4addr; } else if ( ((inputtype == FORMAT_ipv4addr) || (inputtype == FORMAT_ipv4hex) || (inputtype == FORMAT_ipv4revhex)) && (action == ACTION_undefined || action == ACTION_anonymize) ) { outputtype = FORMAT_ipv4addr; } else if ( inputtype == FORMAT_mac ) { outputtype = FORMAT_mac; } else if ( inputtype == FORMAT_eui64 ) { outputtype = FORMAT_eui64; } else if ( (inputtype == FORMAT_bitstring) || (inputtype == FORMAT_base85) ) { outputtype = FORMAT_ipv6addr; } else if ( (inputtype == FORMAT_ipv4addr) && (action == ACTION_6rd_local_prefix) ) { outputtype = FORMAT_ipv6addr; } else if ( (inputtype == FORMAT_ipv6addr) && (action == ACTION_6rd_extract_ipv4) ) { outputtype = FORMAT_ipv4addr; }; if ( outputtype != FORMAT_undefined ) { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatstrings); i++) { if (outputtype == ipv6calc_formatstrings[i].number) { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "found type: %s\n", ipv6calc_formatstrings[i].token); }; break; }; }; } else { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "no result!\n"); }; }; }; if ( (outputtype & (FORMAT_revnibbles_int | FORMAT_revnibbles_arpa)) != 0 ) { /* workaround for reverse IPv4 */ if (ipv6addr.flag_valid == 0 && ipv4addr.flag_valid == 1) { outputtype = FORMAT_revipv4; }; }; /* clear resultstring */ snprintf(resultstring, sizeof(resultstring), "%s", ""); DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Process action (action: 0x%08lx)", (unsigned long) action); switch (action) { case ACTION_mac_to_eui64: if (macaddr.flag_valid != 1) { fprintf(stderr, "No valid MAC address given!\n"); exit(EXIT_FAILURE); }; retval = create_eui64_from_mac(&ipv6addr, &macaddr); break; case ACTION_ipv4_to_6to4addr: if (inputtype == FORMAT_ipv4addr && outputtype == FORMAT_ipv6addr) { /* IPv4 -> IPv6 */ if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; retval = librfc3056_ipv4addr_to_ipv6to4addr(&ipv6addr, &ipv4addr); } else if (inputtype == FORMAT_ipv6addr && outputtype == FORMAT_ipv4addr) { /* IPv6 -> IPv4 */ if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; retval = librfc3056_ipv6addr_to_ipv4addr(&ipv4addr, &ipv6addr, resultstring, sizeof(resultstring)); } else { fprintf(stderr, "Unsupported 6to4 conversion!\n"); exit(EXIT_FAILURE); }; break; case ACTION_ipv4_to_nat64: if (inputtype == FORMAT_ipv4addr && outputtype == FORMAT_ipv6addr) { /* IPv4 -> IPv6 */ if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; retval = librfc6052_ipv4addr_to_ipv6addr(&ipv6addr, &ipv4addr); } else if (inputtype == FORMAT_ipv6addr && outputtype == FORMAT_ipv4addr) { /* IPv6 -> IPv4 */ if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; retval = librfc6052_ipv6addr_to_ipv4addr(&ipv4addr, &ipv6addr, resultstring, sizeof(resultstring)); } else { fprintf(stderr, "Unsupported NAT64 conversion!\n"); exit(EXIT_FAILURE); }; break; case ACTION_anonymize: if ((inputtype == FORMAT_ipv4addr || inputtype == FORMAT_ipv4hex || inputtype == FORMAT_ipv4revhex) && outputtype == FORMAT_ipv4addr) { /* anonymize IPv4 address */ if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; libipv4addr_anonymize(&ipv4addr, ipv6calc_anon_set.mask_ipv4, ipv6calc_anon_set.method); } else if ((inputtype == FORMAT_ipv6addr || inputtype == FORMAT_bitstring || inputtype == FORMAT_revnibbles_int || inputtype == FORMAT_revnibbles_arpa || inputtype == FORMAT_base85 || inputtype == FORMAT_ipv6literal) && outputtype == FORMAT_ipv6addr) { /* anonymize IPv6 address */ if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; libipv6addr_anonymize(&ipv6addr, &ipv6calc_anon_set); } else if (inputtype == FORMAT_mac && outputtype == FORMAT_mac) { /* anonymize MAC address */ if (macaddr.flag_valid != 1) { fprintf(stderr, "No valid MAC address given!\n"); exit(EXIT_FAILURE); }; libmacaddr_anonymize(&macaddr, &ipv6calc_anon_set); } else if (inputtype == FORMAT_eui64 && outputtype == FORMAT_eui64) { /* anonymize EUI-64 address */ if (eui64addr.flag_valid != 1) { fprintf(stderr, "No valid EUI-64 address given!\n"); exit(EXIT_FAILURE); }; libeui64_anonymize(&eui64addr, &ipv6calc_anon_set); } else { fprintf(stderr, "Unsupported anonymization!\n"); exit(EXIT_FAILURE); }; break; case ACTION_iid_token_to_privacy: if (ipv6addr.flag_valid != 1 || ipv6addr2.flag_valid != 1) { fprintf(stderr, "No valid interface identifiers given!\n"); exit(EXIT_FAILURE); }; retval = librfc3041_calc(&ipv6addr, &ipv6addr2, &ipv6addr3, &ipv6addr4); ipv6addr_copy(&ipv6addr, &ipv6addr3); ipv6addr_copy(&ipv6addr2, &ipv6addr4); break; case ACTION_prefix_mac_to_ipv6: /* check IPv6 prefix */ if ( ipv6addr.flag_valid != 1 ) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; /* check MAC */ if (macaddr.flag_valid != 1) { fprintf(stderr, "No valid MAC address given!\n"); exit(EXIT_FAILURE); }; /* check for empty IID, otherwise display warning */ for ( i = 8; i <= 15; i++ ) { if (ipv6addr.in6_addr.s6_addr[i] != 0) { fprintf(stderr, "Warning: given prefix is not 0 in 64 LSBs!\n"); break; }; }; /* convert MAC to IID */ retval = create_eui64_from_mac(&ipv6addr2, &macaddr); /* put IID into address */ for ( i = 8; i <= 15; i++ ) { ipv6addr.in6_addr.s6_addr[i] = ipv6addr2.in6_addr.s6_addr[i]; }; break; case ACTION_6rd_local_prefix: /* check formats */ if ( outputtype != FORMAT_ipv6addr ) { fprintf(stderr, "output type incompatible (no IPv6 address)!\n"); exit(EXIT_FAILURE); }; if ( inputtype != FORMAT_ipv4addr ) { fprintf(stderr, "input type incompatible (no IPv4 address)!\n"); exit(EXIT_FAILURE); }; /* check IPv6 prefix */ if ( ipv6addr.flag_valid != 1 ) { fprintf(stderr, "No valid IPv6 address given as 6rd prefix!\n"); exit(EXIT_FAILURE); }; if ( !ipv6addr.flag_prefixuse ) { fprintf(stderr, "Specified IPv6 address has no prefix length!\n"); exit(EXIT_FAILURE); }; /* check IPv4 local ip */ if ( ipv4addr.flag_valid != 1 ) { fprintf(stderr, "No valid IPv4 address given as local IP!\n"); exit(EXIT_FAILURE); }; if ( ipv4addr.flag_prefixuse ) { fprintf(stderr, "No prefix length should be specified for the local IP!\n"); exit(EXIT_FAILURE); }; /* check IPv4 relay prefix */ if ( ipv4addr2.flag_valid == 1 ) { if ( !ipv4addr2.flag_prefixuse ) { fprintf(stderr, "Specified relay prefix IPv4 address has no prefix length!\n"); exit(EXIT_FAILURE); }; }; retval = librfc5569_calc_6rd_local_prefix(&ipv6addr, &ipv4addr2, &ipv4addr, resultstring, sizeof(resultstring)); break; case ACTION_6rd_extract_ipv4: /* check formats */ if ( outputtype != FORMAT_ipv4addr ) { fprintf(stderr, "output type incompatible (no IPv4 address)!\n"); exit(EXIT_FAILURE); }; if ( inputtype != FORMAT_ipv6addr ) { fprintf(stderr, "input type incompatible (no IPv6 address)!\n"); exit(EXIT_FAILURE); }; /* check IPv6 address */ if ( ipv6addr.flag_valid != 1 ) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; /* check IPv4 relay prefix */ if (ipv6rd_prefixlength < 1) { fprintf(stderr, "No IPv6 Rapid Deployment prefix length given!\n"); exit(EXIT_FAILURE); }; retval = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_PREFIX2_LENGTH); break; case ACTION_filter: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of action: filter"); outputtype = inputtype; result = 1; /* default, skip */ if (inputtype == FORMAT_ipv4addr) { /* call filter for IPv4 addresses */ result = ipv4addr_filter(&ipv4addr, &filter_master.filter_ipv4addr); } else if (inputtype == FORMAT_ipv6addr) { /* call filter for IPv6 addresses */ result = ipv6addr_filter(&ipv6addr, &filter_master.filter_ipv6addr); } else if (inputtype == FORMAT_mac) { /* call filter for MAC addresses */ result = macaddr_filter(&macaddr, &filter_master.filter_macaddr); } else { NONQUIETPRINT_WA("Action-type 'filter' isn't currently implemented for inputtype: %s", ipv6calctypes_format_string_by_type(inputtype)); }; if (result > 0) { /* skip everything */ DEBUGPRINT_WA(DEBUG_ipv6calc_general, "filter result SKIP (%d): '%s'", result, linebuffer); } else { snprintf(resultstring, sizeof(resultstring), "%s", linebuffer); }; goto RESULT_print; break; case ACTION_test: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of action: test"); outputtype = inputtype; if ((inputtype == FORMAT_ipv4addr || inputtype == FORMAT_ipv4hex || inputtype == FORMAT_ipv4revhex) && outputtype == FORMAT_ipv4addr) { /* test IPv4 address */ if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; } else if ((inputtype == FORMAT_ipv6addr || inputtype == FORMAT_bitstring || inputtype == FORMAT_revnibbles_int || inputtype == FORMAT_revnibbles_arpa || inputtype == FORMAT_base85 || inputtype == FORMAT_ipv6literal) && outputtype == FORMAT_ipv6addr) { /* test IPv6 address */ if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; } else { fprintf(stderr, "Unsupported input type for 'test_prefix'!\n"); exit(EXIT_FAILURE); }; retval = 0; i = 0; if (ipv4addr.flag_valid == 1) { // IPv4 address test if (ipv4addr_a[IPV6CALC_TEST_PREFIX].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_prefix' for IPv4: %s inside %s", input1, input_a[IPV6CALC_TEST_PREFIX]); // compare with honor prefix length result = ipv4addr_compare(&ipv4addr, &ipv4addr_a[IPV6CALC_TEST_PREFIX], 1); if (result == 0) { result_a[IPV6CALC_TEST_PREFIX] = 0; } else { result_a[IPV6CALC_TEST_PREFIX] = 1; }; }; if (ipv4addr_a[IPV6CALC_TEST_GT].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_gt' for IPv4: %s with %s", input1, input_a[IPV6CALC_TEST_GT]); // compare result = ipv4addr_compare(&ipv4addr, &ipv4addr_a[IPV6CALC_TEST_GT], 0); if (result > 0) { result_a[IPV6CALC_TEST_GT] = 0; } else { result_a[IPV6CALC_TEST_GT] = 1; }; }; if (ipv4addr_a[IPV6CALC_TEST_GE].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_ge' for IPv4: %s with %s", input1, input_a[IPV6CALC_TEST_GE]); // compare result = ipv4addr_compare(&ipv4addr, &ipv4addr_a[IPV6CALC_TEST_GE], 0); if (result >= 0) { result_a[IPV6CALC_TEST_GE] = 0; } else { result_a[IPV6CALC_TEST_GE] = 1; } }; if (ipv4addr_a[IPV6CALC_TEST_LT].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_lt' for IPv4: %s with %s", input1, input_a[IPV6CALC_TEST_LT]); // compare result = ipv4addr_compare(&ipv4addr, &ipv4addr_a[IPV6CALC_TEST_LT], 0); if (result < 0) { result_a[IPV6CALC_TEST_LT] = 0; } else { result_a[IPV6CALC_TEST_LT] = 1; }; }; if ((retval == 0) && (ipv4addr_a[IPV6CALC_TEST_LE].flag_valid == 1)) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_le' for IPv4: %s with %s", input1, input_a[IPV6CALC_TEST_LE]); // compare result = ipv4addr_compare(&ipv4addr, &ipv4addr_a[IPV6CALC_TEST_LE], 0); if (result <= 0) { result_a[IPV6CALC_TEST_LE] = 0; } else { result_a[IPV6CALC_TEST_LE] = 1; }; }; } else if (ipv6addr.flag_valid == 1) { // IPv6 address if (ipv6addr_a[IPV6CALC_TEST_PREFIX].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_prefix' for IPv6: %s inside %s", input1, input_a[IPV6CALC_TEST_PREFIX]); // compare with honor prefix length result = ipv6addr_compare(&ipv6addr, &ipv6addr_a[IPV6CALC_TEST_PREFIX], 1); if (result == 0) { result_a[IPV6CALC_TEST_PREFIX] = 0; } else { result_a[IPV6CALC_TEST_PREFIX] = 1; }; }; if (ipv6addr_a[IPV6CALC_TEST_GT].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_gt' for IPv6: %s with %s", input1, input_a[IPV6CALC_TEST_GT]); // compare result = ipv6addr_compare(&ipv6addr, &ipv6addr_a[IPV6CALC_TEST_GT], 0); if (result > 0) { result_a[IPV6CALC_TEST_GT] = 0; } else { result_a[IPV6CALC_TEST_GT] = 1; }; }; if (ipv6addr_a[IPV6CALC_TEST_GE].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_ge' for IPv6: %s with %s", input1, input_a[IPV6CALC_TEST_GE]); // compare result = ipv6addr_compare(&ipv6addr, &ipv6addr_a[IPV6CALC_TEST_GE], 0); if (result >= 0) { result_a[IPV6CALC_TEST_GE] = 0; } else { result_a[IPV6CALC_TEST_GE] = 1; }; }; if (ipv6addr_a[IPV6CALC_TEST_LT].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_lt' for IPv6: %s with %s", input1, input_a[IPV6CALC_TEST_LT]); // compare result = ipv6addr_compare(&ipv6addr, &ipv6addr_a[IPV6CALC_TEST_LT], 0); if (result < 0) { result_a[IPV6CALC_TEST_LT] = 0; } else { result_a[IPV6CALC_TEST_LT] = 1; }; }; if (ipv6addr_a[IPV6CALC_TEST_LE].flag_valid == 1) { i++; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_le' for IPv6: %s with %s", input1, input_a[IPV6CALC_TEST_LE]); // compare result = ipv6addr_compare(&ipv6addr, &ipv6addr_a[IPV6CALC_TEST_LE], 0); if (result <= 0) { result_a[IPV6CALC_TEST_LE] = 0; } else { result_a[IPV6CALC_TEST_LE] = 1; }; }; }; if (i == 0) { retval = 2; } else { snprintf(resultstring2, sizeof(resultstring2), "%s", ""); snprintf(resultstring3, sizeof(resultstring3), "%s", ""); // combine results for (a = IPV6CALC_TEST_LIST_MIN; a <= IPV6CALC_TEST_LIST_MAX; a++) { if (result_a[a] == 1) { retval = 1; }; // create result string if (result_a[a] >= 0) { switch (a) { case IPV6CALC_TEST_PREFIX: snprintf(resultstring2, sizeof(resultstring2), "%s %s %s", resultstring3, (result_a[a] == 0) ? "inside" : "NOT inside", input_a[a]); break; case IPV6CALC_TEST_GT: snprintf(resultstring2, sizeof(resultstring2), "%s %s %s", resultstring3, (result_a[a] == 0) ? "greater than" : "NOT greater than", input_a[a]); break; case IPV6CALC_TEST_GE: snprintf(resultstring2, sizeof(resultstring2), "%s %s %s", resultstring3, (result_a[a] == 0) ? "greater/equal than" : "NOT greater/equal than", input_a[a]); break; case IPV6CALC_TEST_LT: snprintf(resultstring2, sizeof(resultstring2), "%s %s %s", resultstring3, (result_a[a] == 0) ? "less than" : "NOT less than", input_a[a]); break; case IPV6CALC_TEST_LE: snprintf(resultstring2, sizeof(resultstring2), "%s %s %s", resultstring3, (result_a[a] == 0) ? "less/equal than" : "NOT less/equal than", input_a[a]); break; }; snprintf(resultstring3, sizeof(resultstring3), "%s", resultstring2); }; }; }; DEBUGPRINT_WA(DEBUG_ipv6calc_general, "'test_*' result: %x", retval); if (input_is_pipe == 1) { if (retval == 2) { snprintf(resultstring, sizeof(resultstring), "%s uncomparable", linebuffer); } else { snprintf(resultstring, sizeof(resultstring), "%s %s", linebuffer, resultstring3); }; } else { if ((formatoptions & FORMATOPTION_quiet) == 0) { if (retval == 2) { snprintf(resultstring, sizeof(resultstring), "%s uncomparable", input1); } else { snprintf(resultstring, sizeof(resultstring), "%s %s", input1, resultstring3); }; }; }; goto RESULT_print; break; case ACTION_undefined: /* no action selected */ break; default: fprintf(stderr, " Action-type isn't implemented\n"); exit(EXIT_FAILURE); /* break; */ }; if (retval != 0) { fprintf(stderr, "Problem occurs during action: %s\n", resultstring); exit(EXIT_FAILURE); }; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "End of action"); /***** output type *****/ DEBUGPRINT_WA(DEBUG_ipv6calc_general, "Process output (outputtype: 0x%08lx)", (unsigned long) outputtype); /* catch showinfo */ if (command == CMD_showinfo) { // change anonymization method depending on support if (feature_kp == 1) { result = libipv6calc_anon_set_by_name(&ipv6calc_anon_set, "keep-type-asn-cc"); if (result != 0) { // fallback result = libipv6calc_anon_set_by_name(&ipv6calc_anon_set, ANONPRESET_DEFAULT); }; }; if (ipv6addr.flag_valid == 1) { retval = showinfo_ipv6addr(&ipv6addr, formatoptions); } else if (ipv4addr.flag_valid == 1) { retval = showinfo_ipv4addr(&ipv4addr, formatoptions); } else if (macaddr.flag_valid == 1) { retval = showinfo_eui48(&macaddr, formatoptions); } else if (eui64addr.flag_valid == 1) { retval = showinfo_eui64(&eui64addr, formatoptions); } else if (asn_valid == 1) { retval = showinfo_asn(asn, formatoptions); } else { fprintf(stderr, "No valid or supported input address given!\n"); retval = 1; }; if (retval != 0) { fprintf(stderr, "Problem occurs during selection of showinfo\n"); exit(EXIT_FAILURE); }; goto RESULT_print; }; switch (outputtype) { case -1: /* old implementation */ break; case FORMAT_base85: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_base85"); if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; retval = ipv6addrstruct_to_base85(&ipv6addr, resultstring, sizeof(resultstring)); break; case FORMAT_bitstring: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_bitstring"); if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Call 'librfc2874_addr_to_bitstring'"); retval = librfc2874_addr_to_bitstring(&ipv6addr, resultstring, sizeof(resultstring), formatoptions); break; case FORMAT_octal: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_octal"); if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_octal(&ipv4addr, resultstring, sizeof(resultstring), formatoptions); } else if (ipv6addr.flag_valid == 1) { retval = libipv6addr_to_octal(&ipv6addr, resultstring, sizeof(resultstring), formatoptions); }; break; case FORMAT_hex: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_hex"); if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_hex(&ipv4addr, resultstring, sizeof(resultstring), formatoptions); } else if (ipv6addr.flag_valid == 1) { retval = libipv6addr_to_hex(&ipv6addr, resultstring, sizeof(resultstring), formatoptions); }; break; case FORMAT_ipv4hex: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_ipv4hex"); if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_hex(&ipv4addr, resultstring, sizeof(resultstring), formatoptions); }; break; case FORMAT_revnibbles_int: case FORMAT_revnibbles_arpa: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_revnibbles_int/arpa"); if (ipv6addr.flag_valid == 1) { switch (outputtype) { case FORMAT_revnibbles_int: retval = librfc1886_addr_to_nibblestring(&ipv6addr, resultstring, sizeof(resultstring), formatoptions, "ip6.int."); break; case FORMAT_revnibbles_arpa: retval = librfc1886_addr_to_nibblestring(&ipv6addr, resultstring, sizeof(resultstring), formatoptions, "ip6.arpa."); break; }; } else { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; break; case FORMAT_revipv4: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_revipv4"); if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_reversestring(&ipv4addr, resultstring, sizeof(resultstring), formatoptions); } else { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; break; case FORMAT_ifinet6: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_ifinet6"); if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; retval = libifinet6_ipv6addrstruct_to_ifinet6(&ipv6addr, resultstring, sizeof(resultstring)); break; case FORMAT_ipv6addr: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_ipv6addr"); if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; if ((formatoptions & (FORMATOPTION_printuncompressed | FORMATOPTION_printfulluncompressed | FORMATOPTION_printprefix | FORMATOPTION_printsuffix)) != 0) { retval = libipv6addr_ipv6addrstruct_to_uncompaddr(&ipv6addr, resultstring, sizeof(resultstring), formatoptions); } else { retval = librfc1884_ipv6addrstruct_to_compaddr(&ipv6addr, resultstring, sizeof(resultstring), formatoptions); }; if ((formatoptions & FORMATOPTION_print_iid_var) == FORMATOPTION_print_iid_var) { iid_random_result = ipv6addr_iidrandomdetection(&ipv6addr, &iid_statistics); sprintf(resultstring2, "%-40s R=%d h=%7.3f r=%7.3f db= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dbh= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d da= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dd= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dda= %d", resultstring, \ iid_random_result, iid_statistics.hexdigit, iid_statistics.lls_residual, \ iid_statistics.digit_blocks[0], iid_statistics.digit_blocks[1], iid_statistics.digit_blocks[2], iid_statistics.digit_blocks[3], iid_statistics.digit_blocks[4], iid_statistics.digit_blocks[5], iid_statistics.digit_blocks[6], iid_statistics.digit_blocks[7], iid_statistics.digit_blocks[8], iid_statistics.digit_blocks[9], iid_statistics.digit_blocks[10], iid_statistics.digit_blocks[11], iid_statistics.digit_blocks[12], iid_statistics.digit_blocks[13], iid_statistics.digit_blocks[14], iid_statistics.digit_blocks[15], \ iid_statistics.digit_blocks_hexdigit[0], iid_statistics.digit_blocks_hexdigit[1], iid_statistics.digit_blocks_hexdigit[2], iid_statistics.digit_blocks_hexdigit[3], iid_statistics.digit_blocks_hexdigit[4], iid_statistics.digit_blocks_hexdigit[5], iid_statistics.digit_blocks_hexdigit[6], iid_statistics.digit_blocks_hexdigit[7], iid_statistics.digit_blocks_hexdigit[8], iid_statistics.digit_blocks_hexdigit[9], iid_statistics.digit_blocks_hexdigit[10], iid_statistics.digit_blocks_hexdigit[11], iid_statistics.digit_blocks_hexdigit[12], iid_statistics.digit_blocks_hexdigit[13], iid_statistics.digit_blocks_hexdigit[14], iid_statistics.digit_blocks_hexdigit[15], \ iid_statistics.digit_amount[0], iid_statistics.digit_amount[1], iid_statistics.digit_amount[2], iid_statistics.digit_amount[3], iid_statistics.digit_amount[4], iid_statistics.digit_amount[5], iid_statistics.digit_amount[6], iid_statistics.digit_amount[7], iid_statistics.digit_amount[8], iid_statistics.digit_amount[9], iid_statistics.digit_amount[10], iid_statistics.digit_amount[11], iid_statistics.digit_amount[12], iid_statistics.digit_amount[13], iid_statistics.digit_amount[14], iid_statistics.digit_amount[15], \ iid_statistics.digit_delta[0], iid_statistics.digit_delta[1], iid_statistics.digit_delta[2], iid_statistics.digit_delta[3], iid_statistics.digit_delta[4], iid_statistics.digit_delta[5], iid_statistics.digit_delta[6], iid_statistics.digit_delta[7], iid_statistics.digit_delta[8], iid_statistics.digit_delta[9], iid_statistics.digit_delta[10], iid_statistics.digit_delta[11], iid_statistics.digit_delta[12], iid_statistics.digit_delta[13], iid_statistics.digit_delta[14], iid_statistics.digit_delta[15], \ iid_statistics.digit_delta[16], iid_statistics.digit_delta[17], iid_statistics.digit_delta[18], iid_statistics.digit_delta[19], iid_statistics.digit_delta[20], iid_statistics.digit_delta[21], iid_statistics.digit_delta[22], iid_statistics.digit_delta[23], iid_statistics.digit_delta[24], iid_statistics.digit_delta[25], iid_statistics.digit_delta[26], iid_statistics.digit_delta[27], iid_statistics.digit_delta[28], iid_statistics.digit_delta[29], iid_statistics.digit_delta[30], \ iid_statistics.digit_delta_amount ); sprintf(resultstring, "%s", resultstring2); }; break; case FORMAT_ipv6literal: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_ipv6literal"); if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; if ((formatoptions & (FORMATOPTION_printuncompressed | FORMATOPTION_printfulluncompressed)) != 0) { retval = libipv6addr_ipv6addrstruct_to_uncompaddr(&ipv6addr, resultstring, sizeof(resultstring), formatoptions | FORMATOPTION_literal); } else { retval = librfc1884_ipv6addrstruct_to_compaddr(&ipv6addr, resultstring, sizeof(resultstring), formatoptions | FORMATOPTION_literal); }; break; case FORMAT_ipv4addr: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_ipv4addr"); if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, resultstring, sizeof(resultstring), formatoptions); break; case FORMAT_eui64: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_eui64"); if (action == ACTION_mac_to_eui64) { if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid EUI-64 identifier given!\n"); exit(EXIT_FAILURE); }; if (ipv6addr.prefixlength != 64) { fprintf(stderr, "No valid EUI-64 identifier given!\n"); exit(EXIT_FAILURE); }; formatoptions |= FORMATOPTION_printsuffix; retval = libipv6addr_ipv6addrstruct_to_uncompaddr(&ipv6addr, resultstring, sizeof(resultstring), formatoptions); } else if (action == ACTION_anonymize) { retval = libeui64_eui64addrstruct_to_string(&eui64addr, resultstring, sizeof(resultstring), formatoptions); } else { fprintf(stderr, "Specify proper action or input for output format: eui64\n"); exit(EXIT_FAILURE); }; break; case FORMAT_mac: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_mac"); if (macaddr.flag_valid != 1) { fprintf(stderr, "No valid MAC address given!\n"); exit(EXIT_FAILURE); }; retval = macaddrstruct_to_string(&macaddr, resultstring, sizeof(resultstring), formatoptions); break; case FORMAT_iid_token: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Start of output handling for FORMAT_iid_token"); if (ipv6addr.flag_valid != 1 || ipv6addr2.flag_valid != 1) { fprintf(stderr, "No valid IPv6 addresses given!\n"); exit(EXIT_FAILURE); }; /* get interface identifier */ retval = libipv6addr_ipv6addrstruct_to_uncompaddr(&ipv6addr, resultstring2, sizeof(resultstring2), formatoptions | FORMATOPTION_printsuffix); if (retval != 0) { break; }; /* get token */ retval = libipv6addr_ipv6addrstruct_to_tokenlsb64(&ipv6addr2, resultstring3, sizeof(resultstring3), formatoptions); /* cat together */ snprintf(resultstring, sizeof(resultstring), "%s %s", resultstring2, resultstring3); break; default: fprintf(stderr, " Outputtype isn't implemented: %8lx\n", (unsigned long) outputtype); exit(EXIT_FAILURE); }; DEBUGPRINT_NA(DEBUG_ipv6calc_general, "End of output handling"); RESULT_print: DEBUGPRINT_NA(DEBUG_ipv6calc_general, "Print result"); /* print result */ if (strlen(resultstring) > 0) { if ( (retval == 0) || (action == ACTION_test) ) { fprintf(stdout, "%s\n", resultstring); } else { fprintf(stderr, "%s\n", resultstring); }; }; if (input_is_pipe == 1) { if (flush_mode == 1) { fflush(stdout); }; goto PIPE_input; }; libipv6calc_db_wrapper_cleanup(); exit(retval); }; ipv6calc-1.0.0/ipv6calc/ipv6calc.h000066400000000000000000000014211312366535500166150ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calc.h * Version : $Id: 6107c9e81352a59a191e3f256fdb98cd75750dd0 $ * Copyright : 2001-2016 by Peter Bieringer * * Information: * Main header file */ #ifndef _ipv6calc_h_ #define _ipv6calc_h_ /* global program related definitions */ #define PROGRAM_NAME "ipv6calc" #define PROGRAM_COPYRIGHT "(P) & (C) 2001-" COPYRIGHT_YEAR " by Peter Bieringer " //#define ANONPRESET_DEFAULT "keep-type-asn-cc" #define ANONPRESET_DEFAULT "anonymize-standard" #define DEBUG_ipv6calc_general 0x00000001l #endif extern int feature_zeroize; extern int feature_anon; extern int feature_kp; extern char showinfo_machine_readable_filter[]; extern int showinfo_machine_readable_filter_used; ipv6calc-1.0.0/ipv6calc/ipv6calchelp_local.c000066400000000000000000000116471312366535500206460ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6calc * File : ipv6calchelp_local.c * Version : $Id: d06e7613875a369e5c947cd756743275425c26d3 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * Help library */ #include #include #include #include #include "ipv6calc.h" #include "ipv6calctypes.h" #include "ipv6calcoptions.h" #include "ipv6calchelp.h" #include "config.h" #include "../databases/lib/libipv6calc_db_wrapper.h" // Note: part of help is still located at ../lib/ipv6calchelp.c /* display info */ void printversion(void) { char resultstring[NI_MAXHOST] = ""; libipv6calc_db_wrapper_features(resultstring, sizeof(resultstring)); fprintf(stderr, "%s: version %s", PROGRAM_NAME, PACKAGE_VERSION); fprintf(stderr, " %s", resultstring); if (feature_zeroize == 1) { fprintf(stderr, " ANON_ZEROISE"); }; if (feature_anon == 1) { fprintf(stderr, " ANON_ANONYMIZE"); }; if (feature_kp == 1) { fprintf(stderr, " ANON_KEEP-TYPE-ASN-CC"); }; fprintf(stderr, "\n"); }; void printversion_help(void) { char resultstring[NI_MAXHOST] = ""; libipv6calc_db_wrapper_features(resultstring, sizeof(resultstring)); fprintf(stderr, "\n"); fprintf(stderr, "Explanation of available(x)/possible(o) feature tokens\n"); libipv6calc_db_wrapper_features_help(); fprintf(stderr, "%-22s%c %s\n", "ANON_ZEROISE", (feature_zeroize == 1)? 'x' : 'o', "Anonymization method 'zeroize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_ANONYMIZE", (feature_anon == 1) ? 'x' : 'o', "Anonymization method 'anonymize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_KEEP-TYPE-ASN-CC", (feature_kp == 1) ? 'x' : 'o', "Anonymization method 'keep-type-asn-cc'"); fprintf(stderr, "\n"); }; void printversion_verbose(int level_verbose) { printversion(); fprintf(stderr, "\n"); ipv6calc_print_features_verbose(level_verbose); }; void printcopyright(void) { fprintf(stderr, "%s\n", PROGRAM_COPYRIGHT); }; void ipv6calc_printinfo(void) { printversion(); printcopyright(); fprintf(stderr, "This program formats and calculates IPv6 addresses and can do many more tricky things\n"); fprintf(stderr, "See '%s -?|-h|--help for online help\n", PROGRAM_NAME); fprintf(stderr, "See '%s -v|--version -?|-h|--help' for explanation of feature tokens\n", PROGRAM_NAME); fprintf(stderr, "See '%s -vv or -vvv for more internal version/feature information\n\n", PROGRAM_NAME); }; /* print global help */ void ipv6calc_printhelp(const struct option longopts[], const s_ipv6calc_longopts_shortopts_map longopts_shortopts_map[]) { printversion(); printcopyright(); fprintf(stderr, "\n"); fprintf(stderr, "This program formats and calculates IPv6/IPv4/MAC addresses and can do many more tricky things\n"); printhelp_common(IPV6CALC_HELP_ALL & (~(IPV6CALC_HELP_QUIET))); fprintf(stderr, " [-q|--quiet] : be more quiet (auto-enabled in pipe mode)\n"); fprintf(stderr, " [-f|--flush] : flush each line in pipe mode\n"); fprintf(stderr, "\n"); fprintf(stderr, " Usage with new style options:\n"); fprintf(stderr, " [--in|-I ] : specify input type\n"); fprintf(stderr, " (default: autodetect)\n"); fprintf(stderr, " [--out|-O ] : specify output type\n"); fprintf(stderr, " (sometimes: autodetect)\n"); fprintf(stderr, " [--action|-A ] : specify action\n"); fprintf(stderr, " (default: format conversion, sometimes: autodetect)\n"); fprintf(stderr, " [ ...] : specify format options\n"); fprintf(stderr, " [...] : input data\n"); fprintf(stderr, "\n"); fprintf(stderr, " Available input types: [-m] -I|--in -?|-h|--help\n"); fprintf(stderr, " Available output types: [-m] -O|--out -?|-h|--help\n"); fprintf(stderr, " Available action types: [-m] -A|--action -?|-h|--help\n"); fprintf(stderr, "\n"); fprintf(stderr, " Special filter action : -E -?|-h|--help\n"); fprintf(stderr, "\n"); fprintf(stderr, " Other usage:\n"); fprintf(stderr, " --showinfo|-i [--machine_readable|-m] : show information about input data\n"); fprintf(stderr, " --showinfo|-i --mrqva : Machine Readable Quote Values Always\n"); fprintf(stderr, " --showinfo|-i --mrqvn : Machine Readable Quote Values Never\n"); fprintf(stderr, " --showinfo|-i --mrst : Machine Readable Select Token\n"); fprintf(stderr, " --showinfo|-i --mrstpa : Machine Readable Select Token Print Always\n"); fprintf(stderr, " --showinfo|-i --mrmt : Machine Readable Match Token Prefix\n"); fprintf(stderr, " --showinfo|-i --mrtvo : Machine Readable Token Value Only\n"); fprintf(stderr, " --showinfo|-i --show-tokens : show available tokens (aka types) on '-m'\n"); printhelp_shortcut_options(longopts, longopts_shortopts_map); fprintf(stderr, "\n"); return; }; ipv6calc-1.0.0/ipv6calc/ipv6calchelp_local.h000066400000000000000000000010611312366535500206400ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6calc * File : ipv6calchelp_local.h * Version : $Id: 0a226f5fdb411a7997d0dabbbc7f1fec6b6d0749 $ * Copyright : 2013-2014 by Peter Bieringer * * Information: * Header file for ipv6calchelp_local.c */ extern void printversion(void); extern void printversion_help(void); extern void printversion_verbose(int level_verbose); extern void ipv6calc_printinfo(void); extern void ipv6calc_printhelp(const struct option longopts[], const s_ipv6calc_longopts_shortopts_map longopts_shortopts_map[]); ipv6calc-1.0.0/ipv6calc/ipv6calcoptions_local.h000066400000000000000000000157201312366535500214120ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6calc * File : ipv6calc/ipv6calcoptions.h * Version : $Id: ed9b3ee6ad4d3713da31b333475c00f0ddb01819 $ * Copyright : 2002-2016 by Peter Bieringer * * Information: * Header file containing options for ipv6calc */ #include #include #include "ipv6calctypes.h" #include "ipv6calccommands.h" #include "ipv6calcoptions.h" /* Options */ /* define short options */ /* * l = lower case * u = upper case * r = reverse nibble (ip6.int) * a = reverse nibble (ip6.arpa) * b = bitstring label * m = output machine readable * i = showinfo * f = flush (each line in pipe mode) * I * O * A * E expression for action=filter */ static char *ipv6calc_shortopts = "vh?rmabfiulUFCI:O:A:E:"; /* define long options */ static struct option ipv6calc_longopts[] = { {"version", 0, NULL, (int) 'v' }, /* additional help options */ {"help" , 0, NULL, (int) 'h'}, {"examples" , 0, NULL, CMD_printexamples }, {"printexamples" , 0, NULL, CMD_printexamples }, /* backward compatibility/shortcut commands */ {"addr2ip6_int" , 0, NULL, CMD_addr_to_ip6int }, {"addr_to_ip6int" , 0, NULL, CMD_addr_to_ip6int }, {"addr2ip6_arpa" , 0, NULL, CMD_addr_to_ip6arpa }, {"addr_to_ip6arpa" , 0, NULL, CMD_addr_to_ip6arpa }, {"addr_to_bitstring" , 0, NULL, CMD_addr_to_bitstring }, {"addr2compaddr" , 0, NULL, CMD_addr_to_compressed }, {"addr_to_compressed" , 0, NULL, CMD_addr_to_compressed }, {"addr2uncompaddr" , 0, NULL, CMD_addr_to_uncompressed }, {"addr_to_uncompressed" , 0, NULL, CMD_addr_to_uncompressed }, {"addr_to_base85" , 0, NULL, CMD_addr_to_base85 }, {"base85_to_addr" , 0, NULL, CMD_base85_to_addr }, {"mac_to_eui64" , 0, NULL, CMD_mac_to_eui64 }, { "addr2fulluncompaddr" , 0, NULL, CMD_addr_to_fulluncompressed }, { "addr_to_fulluncompressed", 0, NULL, CMD_addr_to_fulluncompressed }, { "addr2if_inet6" , 0, NULL, CMD_addr_to_ifinet6 }, { "addr_to_ifinet6" , 0, NULL, CMD_addr_to_ifinet6 }, { "if_inet62addr" , 0, NULL, CMD_ifinet6_to_compressed }, { "ifinet6_to_compressed" , 0, NULL, CMD_ifinet6_to_compressed }, { "eui64_to_privacy" , 0, NULL, CMD_eui64_to_privacy }, { "ipv4_to_6to4addr" , 0, NULL, CMD_ipv4_to_6to4addr }, { "showinfo" , 0, NULL, CMD_showinfo }, { "show_types" , 0, NULL, CMD_showinfotypes }, { "show-tokens" , 0, NULL, CMD_showinfotypes }, /* format options */ { "maskprefix" , 0, NULL, FORMATOPTION_NUM_maskprefix + FORMATOPTION_NUM_HEAD }, { "masksuffix" , 0, NULL, FORMATOPTION_NUM_masksuffix + FORMATOPTION_NUM_HEAD }, { "uppercase" , 0, NULL, FORMATOPTION_NUM_printuppercase + FORMATOPTION_NUM_HEAD }, { "lowercase" , 0, NULL, FORMATOPTION_NUM_printlowercase + FORMATOPTION_NUM_HEAD }, { "printstart" , 1, NULL, FORMATOPTION_NUM_printstart + FORMATOPTION_NUM_HEAD }, { "printend" , 1, NULL, FORMATOPTION_NUM_printend + FORMATOPTION_NUM_HEAD }, { "forceprefix" , 1, NULL, FORMATOPTION_NUM_forceprefix + FORMATOPTION_NUM_HEAD }, { "printprefix" , 0, NULL, FORMATOPTION_NUM_printprefix + FORMATOPTION_NUM_HEAD }, { "printsuffix" , 0, NULL, FORMATOPTION_NUM_printsuffix + FORMATOPTION_NUM_HEAD }, { "printcompressed" , 0, NULL, FORMATOPTION_NUM_printcompressed + FORMATOPTION_NUM_HEAD }, { "printuncompressed" , 0, NULL, FORMATOPTION_NUM_printuncompressed + FORMATOPTION_NUM_HEAD }, { "printfulluncompressed", 0, NULL, FORMATOPTION_NUM_printfulluncompressed + FORMATOPTION_NUM_HEAD }, { "machine_readable" , 0, NULL, FORMATOPTION_NUM_machinereadable + FORMATOPTION_NUM_HEAD }, // { "quiet" , 0, NULL, FORMATOPTION_NUM_quiet + FORMATOPTION_NUM_HEAD }, strange duplicate /* machine readable format/filter */ { "mrqva" , 0, NULL, FORMATOPTION_NUM_mr_quote_always + FORMATOPTION_NUM_HEAD }, { "mrqvn" , 0, NULL, FORMATOPTION_NUM_mr_quote_never + FORMATOPTION_NUM_HEAD }, { "mrtvo" , 1, NULL, FORMATOPTION_NUM_mr_value_only + FORMATOPTION_NUM_HEAD }, { "mrst" , 1, NULL, FORMATOPTION_NUM_mr_select_token + FORMATOPTION_NUM_HEAD }, { "mrstpa" , 1, NULL, FORMATOPTION_NUM_mr_select_token_pa + FORMATOPTION_NUM_HEAD }, { "mrmt" , 1, NULL, FORMATOPTION_NUM_mr_match_token + FORMATOPTION_NUM_HEAD }, { "printmirrored" , 0, NULL, FORMATOPTION_NUM_printmirrored + FORMATOPTION_NUM_HEAD }, { "print-iid-var" , 0, NULL, FORMATOPTION_NUM_print_iid_var + FORMATOPTION_NUM_HEAD }, /* new options */ { "in" , 1, NULL, CMD_inputtype }, { "out" , 1, NULL, CMD_outputtype }, { "action" , 1, NULL, CMD_actiontype }, /* 6rd_prefix options for action */ { "6rd_relay_prefix" , 1, NULL, CMD_6rd_relay_prefix }, { "6rd_prefix" , 1, NULL, CMD_6rd_prefix }, /* 6rd_prefix options for showinfo/action */ { "6rd_prefixlength" , 1, NULL, CMD_6rd_prefixlength }, /* test_* options action */ { "test_prefix" , 1, NULL, CMD_test_prefix }, { "test_ge" , 1, NULL, CMD_test_ge }, { "test_gt" , 1, NULL, CMD_test_gt }, { "test_le" , 1, NULL, CMD_test_le }, { "test_lt" , 1, NULL, CMD_test_lt }, }; /* map between short and long options */ static s_ipv6calc_longopts_shortopts_map ipv6calc_longopts_shortopts_map[] = { { 'r', CMD_addr_to_ip6int , "-O revnibbles.int" }, { 'a', CMD_addr_to_ip6arpa , "-O revnibbles.arpa" }, { 'b', CMD_addr_to_bitstring , "-O bitstring" }, { 'i', CMD_showinfo , NULL }, { 'l', FORMATOPTION_NUM_printlowercase + FORMATOPTION_NUM_HEAD , "--printlowercase" }, { 'u', FORMATOPTION_NUM_printuppercase + FORMATOPTION_NUM_HEAD , "--printuppercase" }, { 'C', FORMATOPTION_NUM_printcompressed + FORMATOPTION_NUM_HEAD, "--printcompressed" }, { 'F', FORMATOPTION_NUM_printfulluncompressed + FORMATOPTION_NUM_HEAD, "--printfulluncompressed" }, { 'I', CMD_inputtype , NULL }, { 'O', CMD_outputtype , NULL }, { 'A', CMD_actiontype , NULL }, { 'm', FORMATOPTION_NUM_machinereadable + FORMATOPTION_NUM_HEAD, NULL }, { '\0', CMD_addr_to_compressed , "--printcompressed" }, { '\0', CMD_addr_to_uncompressed , "--printuncompressed" }, { '\0', CMD_addr_to_fulluncompressed , "--printfulluncompressed" }, { '\0', CMD_addr_to_base85 , "-I ipv6addr -O base85" }, { '\0', CMD_base85_to_addr , "-I base85 -O ipv6addr" }, { '\0', CMD_mac_to_eui64 , "-I mac -O eui64" }, { '\0', CMD_addr_to_ifinet6 , "-I ipv6addr -O ifinet6" }, { '\0', CMD_ifinet6_to_compressed , "-I ifinet6 -O ipv6addr --printcompressed"}, { '\0', CMD_ipv4_to_6to4addr , "-I ipv4 -O ipv6addr -A conv6to4"}, { '\0', CMD_eui64_to_privacy , "-I iid_token -O iid_token -A genprivacyiid"}, { '\0', 0, NULL } // end marker }; ipv6calc-1.0.0/ipv6calc/showinfo.c000066400000000000000000002151351312366535500167460ustar00rootroot00000000000000/* * Project : ipv6calc * File : showinfo.c * Version : $Id: 5b5084bd6182191f9c395977f472355318aa05ef $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Function to show information about a given IPv6 address */ #include #include #include #include #include "ipv6calc.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "ipv6calctypes.h" #include "libipv6addr.h" #include "libipv4addr.h" #include "libipv6calc.h" #include "libieee.h" #include "libmac.h" #include "libeui64.h" #include "config.h" #include "showinfo.h" #include "../databases/lib/libipv6calc_db_wrapper.h" #include "../databases/lib/libipv6calc_db_wrapper_GeoIP.h" #include "../databases/lib/libipv6calc_db_wrapper_IP2Location.h" #include "../databases/lib/libipv6calc_db_wrapper_DBIP.h" #include "../databases/lib/libipv6calc_db_wrapper_External.h" #include "../databases/lib/libipv6calc_db_wrapper_BuiltIn.h" #ifdef SUPPORT_IP2LOCATION #include "IP2Location.h" /* * API_VERSION is defined as a bareword in IP2Location.h, * we need this trick to stringify it. Blah. */ #define makestr(x) #x #define xmakestr(x) makestr(x) #endif #ifdef SUPPORT_GEOIP #include "GeoIP.h" #include "GeoIPCity.h" #endif /* from anonymizer */ extern s_ipv6calc_anon_set ipv6calc_anon_set; /* * show available types on machine readable format */ void showinfo_availabletypes(void) { int i; fprintf(stderr, "\nAvailable tokens for machine-readable output (printed in one line):\n"); fprintf(stderr, " IPV6_TYPE=... : type of IPv6 address (commata separated)\n"); fprintf(stderr, " "); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { fprintf(stderr, " %s", ipv6calc_ipv6addrtypestrings[i].token); }; fprintf(stderr, "\n"); fprintf(stderr, " IPV6=... : given IPv6 address full uncompressed\n"); fprintf(stderr, " IPV6_ANON=... : given anonymized IPv6 address full uncompressed\n"); fprintf(stderr, " IPV6_REGISTRY=... : registry token of given IPv6 address\n"); fprintf(stderr, " IPV6_PREFIXLENGTH=ddd : given prefix length\n"); fprintf(stderr, " IPV6_AS_NUM=... : AS number of (anonymized) IPv6 address\n"); fprintf(stderr, " IPV6_COUNTRYCODE=... : Country Code of (anonymized) IPv6 address\n"); fprintf(stderr, " IPV6_COUNTRYCODE_SOURCE=... : Source of Country Code of IPv6 address\n"); fprintf(stderr, " IPV4=ddd.ddd.ddd.ddd : native IPv4 address\n"); fprintf(stderr, " IPV4_ANON=ddd.ddd.ddd.ddd : native anonymized IPv4 address\n"); fprintf(stderr, " IPV4_REGISTRY=... : registry token of native IPv4 address\n"); fprintf(stderr, " IPV4_PREFIXLENGTH=ddd : given prefix length of native IPv4 address\n"); fprintf(stderr, " IPV4[...]=ddd.ddd.ddd.ddd : included IPv4 address in IID or SLA (e.g. ISATAP, TEREDO, NAT64, 6to4)\n"); fprintf(stderr, " IPV4_ANON[...]=ddd.ddd.ddd.ddd: included anonymized IPv4 address in IID or SLA (e.g. ISATAP, TEREDO, NAT64, 6to4)\n"); fprintf(stderr, " IPV4_REGISTRY[...]=... : registry token of included IPv4 address\n"); fprintf(stderr, " IPV4_SOURCE[...]=... : source of IPv4 address\n"); fprintf(stderr, " IPV4_AS_NUM[...]=... : AS number of (anonymized) IPv4 address\n"); fprintf(stderr, " IPV4_COUNTRYCODE[...]=... : Country Code of (anonymized) IPv4 address\n"); fprintf(stderr, " IPV4_COUNTRYCODE_SOURCE[...]=...: Source of Country Code of (anonymized) IPv4 address\n"); fprintf(stderr, " ISATAP|TEREDO-SERVER|TEREDO-CLIENT|6TO4|LINK-LOCAL-IID\n"); fprintf(stderr, " SLA=xxxx : an included SLA\n"); fprintf(stderr, " IID=xxxx:xxxx:xxxx:xxxx : an included interface identifier\n"); fprintf(stderr, " EUI48=xx:xx:xx:xx:xx:xx : an included EUI-48 (MAC) identifier\n"); fprintf(stderr, " EUI48_SCOPE=local|global : scope of EUI-48 identifier\n"); fprintf(stderr, " EUI48_TYPE=... : type of EUI-48 identifier\n"); fprintf(stderr, " unicast|multicast|broadcast\n"); fprintf(stderr, " EUI64=xx:xx:xx:xx:xx:xx:xx:xx : an included EUI-64 identifier\n"); fprintf(stderr, " EUI64_SCOPE=local-*|global : scope of EUI-64 identifier\n"); fprintf(stderr, " OUI=\"...\" : OUI string, if available\n"); fprintf(stderr, " TEREDO_PORT_CLIENT=... : port of Teredo client (NAT outside)\n"); fprintf(stderr, " AS_NUM=... : Autonomous System Number\n"); fprintf(stderr, " AS_NUM_REGISTRY=... : Registry of AS number\n"); #ifdef SUPPORT_IP2LOCATION fprintf(stderr, " IP2LOCATION_COUNTRY_SHORT=... : Country code of IP address\n"); fprintf(stderr, " IP2LOCATION_COUNTRY_LONG=... : Country of IP address\n"); fprintf(stderr, " IP2LOCATION_REGION=... : Region of IP address\n"); fprintf(stderr, " IP2LOCATION_CITY=... : City of IP address\n"); fprintf(stderr, " IP2LOCATION_ISP=... : ISP of IP address\n"); fprintf(stderr, " IP2LOCATION_LATITUDE=... : Latitude of IP address\n"); fprintf(stderr, " IP2LOCATION_LONGITUDE=... : Longitude of IP address\n"); fprintf(stderr, " IP2LOCATION_DOMAIN=... : Domain of IP address\n"); fprintf(stderr, " IP2LOCATION_ZIPCODE=... : ZIP code of IP address\n"); fprintf(stderr, " IP2LOCATION_AREACODE=... : Area code of IP address\n"); fprintf(stderr, " IP2LOCATION_TIMEZONE=... : Time zone of IP address\n"); fprintf(stderr, " IP2LOCATION_NETSPEED=... : Net speed of IP address\n"); fprintf(stderr, " IP2LOCATION_IDDCODE=... : Internation Direct Dialing of IP address\n"); fprintf(stderr, " IP2LOCATION_WEATHERSTATIONCODE=...: Weather Station Code of IP address\n"); fprintf(stderr, " IP2LOCATION_WEATHERSTATIONNAME=...: Weather Station Name of IP address\n"); fprintf(stderr, " IP2LOCATION_USAGETYPE=... : Usage type of IP address\n"); fprintf(stderr, " IP2LOCATION_ELEVATION=... : Elevation of city of IP address\n"); fprintf(stderr, " IP2LOCATION_MOBILEBRAND=... : Mobile Brand of IP address\n"); fprintf(stderr, " IP2LOCATION_MNC=... : Mobile Network Code of IP address\n"); fprintf(stderr, " IP2LOCATION_MCC=... : Mobile Country Code of IP address\n"); fprintf(stderr, " IP2LOCATION_DATABASE_INFO=... : Information about the used databases\n"); #endif #ifdef SUPPORT_GEOIP fprintf(stderr, " GEOIP_COUNTRY_SHORT=... : Country code of IP address\n"); fprintf(stderr, " GEOIP_COUNTRY_LONG=... : Country of IP address\n"); fprintf(stderr, " GEOIP_REGION=... : Region of IP address\n"); fprintf(stderr, " GEOIP_CITY=... : City of IP address\n"); fprintf(stderr, " GEOIP_ZIPCODE=... : Zip code of IP address\n"); fprintf(stderr, " GEOIP_LATITUDE=... : Latitude of IP address\n"); fprintf(stderr, " GEOIP_LONGITUDE=... : Longitude of IP address\n"); fprintf(stderr, " GEOIP_AREACODE=... : Area code of IP address\n"); fprintf(stderr, " GEOIP_DMACODE=... : DMA/Metro code of IP address\n"); fprintf(stderr, " GEOIP_AS_TEXT=... : Autonomous System information\n"); fprintf(stderr, " GEOIP_DATABASE_INFO=... : Information about the used databases\n"); #endif #ifdef SUPPORT_DBIP fprintf(stderr, " DBIP_COUNTRY_SHORT=.. . : Country code of IP address\n"); fprintf(stderr, " DBIP_CITY=... : City of IP address\n"); fprintf(stderr, " DBIP_REGION=... : Region of IP address\n"); fprintf(stderr, " DBIP_DISTRICT=... : District of IP address\n"); fprintf(stderr, " DBIP_ZIPCODE=... : ZIP code of IP address\n"); fprintf(stderr, " DBIP_GEONAME_ID=... : GeoName ID of IP address\n"); fprintf(stderr, " DBIP_LATITUDE=... : Latitude of IP address\n"); fprintf(stderr, " DBIP_LONGITUDE=... : Longitude of IP address\n"); fprintf(stderr, " DBIP_TIMEZONE=... : Time zone of IP address\n"); fprintf(stderr, " DBIP_TIMEZONE_NAME=... : Time zone name of IP address\n"); fprintf(stderr, " DBIP_NETSPEED=... : Net speed of IP address\n"); fprintf(stderr, " DBIP_ISP=... : ISP of IP address\n"); fprintf(stderr, " DBIP_ORGNAME=... : Organization name of IP address\n"); fprintf(stderr, " DBIP_DATABASE_INFO=.. . : Information about the used databases\n"); #endif #ifdef SUPPORT_EXTERNAL fprintf(stderr, " EXTERNAL_COUNTRY_SHORT=.. . : Country code of IP address\n"); fprintf(stderr, " EXTERNAL_DATABASE_INFO=.. . : Information about the used databases\n"); #endif #ifdef SUPPORT_BUILTIN fprintf(stderr, " BUILTIN_DATABASE_INFO=.. . : Information about the used databases\n"); #endif fprintf(stderr, " IPV6CALC_NAME=name : Name of ipv6calc\n"); fprintf(stderr, " IPV6CALC_VERSION=x.y.z : Version of ipv6calc\n"); fprintf(stderr, " IPV6CALC_COPYRIGHT=\"...\" : Copyright string\n"); fprintf(stderr, " IPV6CALC_OUTPUT_VERSION=x : Version of output format\n"); fprintf(stderr, " IPV6CALC_FEATURES=\"...\" : Feature string of ipv6calc -v\n"); fprintf(stderr, " IPV6CALC_CAPABILITIES=\"...\" : Capability string of ipv6calc -v -v\n"); fprintf(stderr, " IPV6CALC_SETTINGS_ANON=\"...\" : Anonymizer settings\n"); fprintf(stderr, "\n"); fprintf(stderr, "Notes: quoting of values can be controlled via\n"); fprintf(stderr, " --mrqva (always) --mrqvn (never)\n"); fprintf(stderr, " specific token can be selected using --mrst \n"); fprintf(stderr, " even in case of no/empty output: --mrstpa \n"); fprintf(stderr, " matching tokens can be selected using --mrmt \n"); fprintf(stderr, " value of a specific token can be displayed using --mrtvo \n"); }; /* * print one information */ static void printout(const char *token, const char *value, const uint32_t formatoptions) { int quote = 0; if (formatoptions & FORMATOPTION_mr_select_token) { // skip not matching token (equal) if (strcmp(showinfo_machine_readable_filter, token) != 0) return; showinfo_machine_readable_filter_used = 1; }; if (formatoptions & FORMATOPTION_mr_match_token) { // skip not matching token (begin) if (strncmp(showinfo_machine_readable_filter, token, strlen(showinfo_machine_readable_filter)) != 0) return; }; /* automatic quoting disabled if (strstr(value, " ") != NULL) { quote = 1; }; */ if ((formatoptions & FORMATOPTION_mr_quote_default) != 0) { quote = 1; }; if ((formatoptions & FORMATOPTION_mr_quote_always) != 0) { quote = 1; }; if ((formatoptions & FORMATOPTION_mr_quote_never) != 0) { quote = 0; }; fprintf(stdout, "%s%s%s%s%s\n" , (formatoptions & FORMATOPTION_mr_value_only) ? "" : token , (formatoptions & FORMATOPTION_mr_value_only) ? "" : "=" , (quote == 1) ? "\"" : "" , value , (quote == 1) ? "\"" : "" ); }; static void printout2(const char *token, const char *additional, const char *value, const uint32_t formatoptions) { int quote = 0; if (formatoptions & FORMATOPTION_mr_select_token) { // skip in case additional is not empty if ((additional != NULL) && (strlen(additional) > 0)) return; // skip not matching token if (strcmp(showinfo_machine_readable_filter, token) != 0) return; showinfo_machine_readable_filter_used = 1; }; if (formatoptions & FORMATOPTION_mr_match_token) { // skip in case additional is not empty if ((additional != NULL) && (strlen(additional) > 0)) return; // skip not matching token (begin) if (strncmp(showinfo_machine_readable_filter, token, strlen(showinfo_machine_readable_filter)) != 0) return; }; /* automatic quoting disabled if (strstr(value, " ") != NULL) { quote = 1; }; */ if ((formatoptions & FORMATOPTION_mr_quote_default) != 0) { quote = 1; }; if (formatoptions & FORMATOPTION_mr_quote_always) { quote = 1; }; if (formatoptions & FORMATOPTION_mr_quote_never) { quote = 0; }; fprintf(stdout, "%s%s%s%s%s%s\n" , (formatoptions & FORMATOPTION_mr_value_only) ? "" : token , additional , (formatoptions & FORMATOPTION_mr_value_only) ? "" : "=" , (quote == 1) ? "\"" : "" , value , (quote == 1) ? "\"" : "" ); }; static void printfooter(const uint32_t formatoptions) { char tempstring[NI_MAXHOST] = ""; char tempstring2[NI_MAXHOST] = ""; if ((formatoptions & FORMATOPTION_mr_select_token_pa) && (showinfo_machine_readable_filter_used == 0)) { printout(showinfo_machine_readable_filter, "", formatoptions); }; #if defined SUPPORT_IP2LOCATION || defined SUPPORT_GEOIP || defined SUPPORT_DBIP || defined SUPPORT_EXTERNAL || defined SUPPORT_BUILTIN char *string; #endif #ifdef SUPPORT_IP2LOCATION string = libipv6calc_db_wrapper_IP2Location_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { printout("IP2LOCATION_DATABASE_INFO", string, formatoptions); } else { fprintf(stdout, "IP2Location database: %s\n", string); }; }; #endif #ifdef SUPPORT_GEOIP string = libipv6calc_db_wrapper_GeoIP_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { printout("GEOIP_DATABASE_INFO", string, formatoptions); } else { fprintf(stdout, "GeoIP database: %s\n", string); }; }; #endif #ifdef SUPPORT_DBIP string = libipv6calc_db_wrapper_DBIP_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { printout("DBIP_DATABASE_INFO", string, formatoptions); } else { fprintf(stdout, "DB-IP.com database: %s\n", string); }; }; #endif #ifdef SUPPORT_EXTERNAL string = libipv6calc_db_wrapper_External_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { printout("EXTERNAL_DATABASE_INFO", string, formatoptions); } else { fprintf(stdout, "External database: %s\n", string); }; }; #endif #ifdef SUPPORT_BUILTIN string = libipv6calc_db_wrapper_BuiltIn_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { printout("BUILTIN_DATABASE_INFO", string, formatoptions); } else { fprintf(stdout, "Built-In database: %s\n", string); }; }; #endif if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { printout("IPV6CALC_NAME" , PROGRAM_NAME, formatoptions); printout("IPV6CALC_VERSION" , PACKAGE_VERSION, formatoptions); printout("IPV6CALC_COPYRIGHT", PROGRAM_COPYRIGHT, formatoptions | FORMATOPTION_mr_quote_default); snprintf(tempstring, sizeof(tempstring), "%d", IPV6CALC_OUTPUT_VERSION); printout("IPV6CALC_OUTPUT_VERSION", tempstring, formatoptions); libipv6calc_anon_infostring(tempstring2, sizeof(tempstring2), &ipv6calc_anon_set); printout("IPV6CALC_SETTINGS_ANON", tempstring2, formatoptions | FORMATOPTION_mr_quote_default); /* features */ tempstring[0] = '\0'; /* clear tempstring */ libipv6calc_db_wrapper_features(tempstring, sizeof(tempstring)); if (feature_zeroize == 1) { snprintf(tempstring2, sizeof(tempstring2), "%s%sANON_ZEROISE", tempstring, strlen(tempstring) > 0 ? " " : ""); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; if (feature_anon == 1) { snprintf(tempstring2, sizeof(tempstring2), "%s%sANON_ANONYMIZE", tempstring, strlen(tempstring) > 0 ? " " : ""); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; if (feature_kp == 1) { snprintf(tempstring2, sizeof(tempstring2), "%s%sANON_KEEP-TYPE-ASN-CC", tempstring, strlen(tempstring) > 0 ? " " : ""); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; printout("IPV6CALC_FEATURES", tempstring, formatoptions | FORMATOPTION_mr_quote_default); /* capabilities */ tempstring[0] = '\0'; /* clear tempstring */ libipv6calc_db_wrapper_capabilities(tempstring, sizeof(tempstring)); printout("IPV6CALC_CAPABILITIES", tempstring, formatoptions | FORMATOPTION_mr_quote_default); }; }; #ifdef SUPPORT_IP2LOCATION /* print IP2Location information */ static void print_ip2location(char *addrstring, const uint32_t formatoptions, const char *additionalstring, int version) { DEBUGPRINT_NA(DEBUG_showinfo, "Called"); #define TEST_IP2LOCATION_AVAILABLE(v) ((v != NULL) && (strstr(v, "unavailable") == NULL) && (strstr(v, "demo database") == NULL) && (strstr(v, "This is demo") == NULL) && (strstr(v, "INVALID") == NULL) && (strstr(v, "-") == NULL)) #define HUMAN_READABLE_IP2LOCATION(name, value) \ if (strlen(additionalstring) > 0) { \ fprintf(stdout, "IP2Location reports for %s %s: %s\n", additionalstring, name, value); \ } else { \ fprintf(stdout, "IP2Location reports %s: %s\n", name, value); \ }; if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_IP2LOCATION] == 0) { DEBUGPRINT_NA(DEBUG_showinfo, "IP2Location support not active"); return; }; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable); char tempstring[NI_MAXHOST]; char *CountryCode = NULL, *CountryName = NULL; DEBUGPRINT_WA(DEBUG_showinfo, "Called addrstring=%s formatoptions=0x%08x additionalstring=%s version=%d", addrstring, formatoptions, additionalstring, version); CountryCode = libipv6calc_db_wrapper_IP2Location_wrapper_country_code_by_addr(addrstring, version); CountryName = libipv6calc_db_wrapper_IP2Location_wrapper_country_name_by_addr(addrstring, version); if (machinereadable != 0) { if (CountryCode != NULL) { printout2("IP2LOCATION_COUNTRY_SHORT", additionalstring, CountryCode, formatoptions); }; if (CountryName != NULL) { printout2("IP2LOCATION_COUNTRY_LONG", additionalstring, CountryName, formatoptions); }; } else { if (strlen(additionalstring) > 0) { fprintf(stdout, "IP2Location reports for %s country %s (%s)\n", additionalstring, (CountryName != NULL ? CountryName : "UNKNOWN"), (CountryCode != NULL ? CountryCode : "??")); } else { fprintf(stdout, "IP2Location country name and code: %s (%s)\n", (CountryName != NULL ? CountryName : "UNKNOWN"), (CountryCode != NULL ? CountryCode : "??")); }; }; IP2LocationRecord *record = libipv6calc_db_wrapper_IP2Location_wrapper_record_city_by_addr((char*) addrstring, version); if (record != NULL) { if (TEST_IP2LOCATION_AVAILABLE(record->region)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_REGION", additionalstring, record->region, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Region", record->region) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->city)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_CITY", additionalstring, record->city, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("City", record->city) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->isp)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_ISP", additionalstring, record->isp, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("ISP", record->isp) }; }; if (record->latitude != 0) { snprintf(tempstring, sizeof(tempstring), "%f", record->latitude); if ( machinereadable != 0 ) { printout2("IP2LOCATION_LATITUDE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Latitude", tempstring) }; }; if (record->longitude != 0) { snprintf(tempstring, sizeof(tempstring), "%f", record->longitude); if ( machinereadable != 0 ) { printout2("IP2LOCATION_LONGITUDE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Longitude", tempstring) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->domain)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_DOMAIN", additionalstring, record->domain, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Domain", record->domain) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->zipcode)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_ZIPCODE", additionalstring, record->zipcode, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("ZIP Code", record->zipcode) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->areacode)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_AREACODE", additionalstring, record->areacode, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("AREA Code", record->areacode) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->timezone)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_TIMEZONE", additionalstring, record->timezone, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Time Zone", record->timezone) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->netspeed)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_NETSPEED", additionalstring, record->netspeed, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Network Speed", record->netspeed) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->iddcode)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_IDDCODE", additionalstring, record->iddcode, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("IDD Code", record->iddcode) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->weatherstationcode)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_WEATHERSTATIONCODE", additionalstring, record->weatherstationcode, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Weather Station Code", record->weatherstationcode) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->weatherstationname)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_WEATHERSTATIONNAME", additionalstring, record->weatherstationname, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Weather Station Name", record->weatherstationname) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->mnc)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_MNC", additionalstring, record->mnc, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Mobile Network Code", record->mnc) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->mcc)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_MCC", additionalstring, record->mcc, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Mobile Country Code", record->mcc) }; }; if (TEST_IP2LOCATION_AVAILABLE(record->mobilebrand)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_MOBILEBRAND", additionalstring, record->mobilebrand, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Mobile Brand", record->mobilebrand) }; }; #ifndef SUPPORT_IP2LOCATION_ALL_COMPAT if (libipv6calc_db_wrapper_IP2Location_library_version_major() > 4) { if (TEST_IP2LOCATION_AVAILABLE(record->usagetype)) { if ( machinereadable != 0 ) { printout2("IP2LOCATION_USAGETYPE", additionalstring, record->usagetype, formatoptions); } else { // get description const char *desc = libipv6calc_db_wrapper_IP2Location_UsageType_description(record->usagetype); if (desc != NULL) { snprintf(tempstring, sizeof(tempstring), "%s (%s)", record->usagetype, desc); } else { snprintf(tempstring, sizeof(tempstring), "%s", record->usagetype); }; HUMAN_READABLE_IP2LOCATION("Usage Type", tempstring) }; }; if (record->elevation != 0) { snprintf(tempstring, sizeof(tempstring), "%f", record->elevation); if ( machinereadable != 0 ) { printout2("IP2LOCATION_ELEVATION", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_IP2LOCATION("Elevation", tempstring) }; }; }; #endif // SUPPORT_IP2LOCATION_ALL_COMPAT libipv6calc_db_wrapper_IP2Location_free_record(record); } else { DEBUGPRINT_WA(DEBUG_showinfo, "IP2Location returned no record for address: %s", addrstring); }; }; #endif #ifdef SUPPORT_GEOIP /* print GeoIP information */ static void print_geoip(const char *addrstring, const uint32_t formatoptions, const char *additionalstring, int version) { DEBUGPRINT_NA(DEBUG_showinfo, "Called"); #define HUMAN_READABLE_GEOIP(name, value) \ if (strlen(additionalstring) > 0) { \ fprintf(stdout, "GeoIP reports for %s %s: %s\n", additionalstring, name, value); \ } else { \ fprintf(stdout, "GeoIP reports %s: %s\n", name, value); \ }; if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_GEOIP] == 0) { DEBUGPRINT_NA(DEBUG_showinfo, "GeoIP support not active"); return; }; const char *returnedCountry = NULL; const char *returnedCountryName = NULL; char *as_text; GeoIPRecord *gir = NULL; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable); char tempstring[NI_MAXHOST] = ""; as_text = libipv6calc_db_wrapper_GeoIP_wrapper_asnum_by_addr(addrstring, version); if (as_text != NULL) { if ( machinereadable != 0 ) { printout2("GEOIP_AS_TEXT", additionalstring, as_text, formatoptions); }; }; returnedCountry = libipv6calc_db_wrapper_GeoIP_wrapper_country_code_by_addr(addrstring, version); returnedCountryName = libipv6calc_db_wrapper_GeoIP_wrapper_country_name_by_addr(addrstring, version); if (returnedCountry != NULL) { DEBUGPRINT_WA(DEBUG_showinfo, "GeoIP IPv%d country database result", version); if ( machinereadable != 0 ) { printout2("GEOIP_COUNTRY_SHORT", additionalstring, returnedCountry, formatoptions); if (returnedCountryName != NULL) { printout2("GEOIP_COUNTRY_LONG", additionalstring, returnedCountryName, formatoptions); } else { DEBUGPRINT_NA(DEBUG_showinfo, "returnedCountryName=NULL"); }; } else { if (returnedCountryName != NULL) { if (strlen(additionalstring) > 0) { fprintf(stdout, "GeoIP country name and code for %s: %s (%s)\n", additionalstring, returnedCountryName, returnedCountry); } else { fprintf(stdout, "GeoIP country name and code: %s (%s)\n", returnedCountryName, returnedCountry); }; } else { if (strlen(additionalstring) > 0) { fprintf(stdout, "GeoIP country code for %s: %s\n", additionalstring, returnedCountry); } else { fprintf(stdout, "GeoIP country code: %s\n", returnedCountry); }; }; }; }; gir = libipv6calc_db_wrapper_GeoIP_wrapper_record_city_by_addr(addrstring, version); if (gir != NULL) { DEBUGPRINT_WA(DEBUG_showinfo, "GeoIP IPv%d city database result", version); if (gir->region != NULL) { if ( machinereadable != 0 ) { printout2("GEOIP_REGION", additionalstring, gir->region, formatoptions); } else { HUMAN_READABLE_GEOIP("Region", gir->region) }; }; if (gir->city != NULL) { if ( machinereadable != 0 ) { printout2("GEOIP_CITY", additionalstring, gir->city, formatoptions); } else { HUMAN_READABLE_GEOIP("City", gir->city) }; }; if (gir->postal_code != NULL) { if ( machinereadable != 0 ) { printout2("GEOIP_ZIPCODE", additionalstring, gir->postal_code, formatoptions); } else { HUMAN_READABLE_GEOIP("ZIP Code", gir->postal_code) }; }; if (gir->latitude != 0) { snprintf(tempstring, sizeof(tempstring), "%f", gir->latitude); if ( machinereadable != 0 ) { printout2("GEOIP_LATITUDE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_GEOIP("Latitude", tempstring) }; }; if (gir->longitude != 0) { snprintf(tempstring, sizeof(tempstring), "%f", gir->longitude); if ( machinereadable != 0 ) { printout2("GEOIP_LONGITUDE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_GEOIP("Longitude", tempstring) }; }; if (gir->continent_code != NULL) { if ( machinereadable != 0 ) { printout2("GEOIP_CONTINENTCODE", additionalstring, gir->continent_code, formatoptions); } else { HUMAN_READABLE_GEOIP("Continent Code", gir->continent_code) }; }; if (gir->dma_code != 0) { snprintf(tempstring, sizeof(tempstring), "%d", gir->dma_code); if ( machinereadable != 0 ) { printout2("GEOIP_DMACODE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_GEOIP("DMA Code", tempstring) }; }; if (gir->area_code != 0) { snprintf(tempstring, sizeof(tempstring), "%d", gir->area_code); if ( machinereadable != 0 ) { printout2("GEOIP_AREACODE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_GEOIP("AREA Code", tempstring) }; }; libipv6calc_db_wrapper_GeoIPRecord_delete(gir); }; }; #endif #ifdef SUPPORT_DBIP /* print DBIP information */ static void print_dbip(const ipv6calc_ipaddr *ipaddrp, const uint32_t formatoptions, const char *additionalstring) { DEBUGPRINT_NA(DEBUG_showinfo, "Called"); #define TEST_DBIP_AVAILABLE(v) ((v != NULL) && (strlen(v) > 0)) #define HUMAN_READABLE_DBIP(name, value) \ if (strlen(additionalstring) > 0) { \ fprintf(stdout, "DB-IP.com reports for %s %s: %s\n", additionalstring, name, value); \ } else { \ fprintf(stdout, "DB-IP.com reports %s: %s\n", name, value); \ }; if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_DBIP] == 0) { DEBUGPRINT_NA(DEBUG_showinfo, "DBIP support not active"); return; }; int ret; DBIP_Record record; char tempstring[NI_MAXHOST]; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable); /* get all information */ ret = libipv6calc_db_wrapper_DBIP_all_by_addr(ipaddrp, &record); if (ret == 0) { if (TEST_DBIP_AVAILABLE(record.country)) { if ( machinereadable != 0 ) { printout2("DBIP_COUNTRY_SHORT", additionalstring, record.country, formatoptions); } else { HUMAN_READABLE_DBIP("Country Code", record.country) }; }; if (TEST_DBIP_AVAILABLE(record.stateprov)) { if ( machinereadable != 0 ) { printout2("DBIP_REGION", additionalstring, record.stateprov, formatoptions); } else { HUMAN_READABLE_DBIP("Region", record.stateprov) }; }; if (TEST_DBIP_AVAILABLE(record.district)) { if ( machinereadable != 0 ) { printout2("DBIP_DISTRICT", additionalstring, record.district, formatoptions); } else { HUMAN_READABLE_DBIP("District", record.district) }; }; if (TEST_DBIP_AVAILABLE(record.city)) { if ( machinereadable != 0 ) { printout2("DBIP_CITY", additionalstring, record.city, formatoptions); } else { HUMAN_READABLE_DBIP("City", record.city) }; }; if (TEST_DBIP_AVAILABLE(record.isp_name)) { if ( machinereadable != 0 ) { printout2("DBIP_ISP", additionalstring, record.isp_name, formatoptions); } else { HUMAN_READABLE_DBIP("ISP", record.isp_name) }; }; if (record.latitude != 0) { snprintf(tempstring, sizeof(tempstring), "%f", record.latitude); if ( machinereadable != 0 ) { printout2("DBIP_LATITUDE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_DBIP("Latitude", tempstring) }; }; if (record.longitude != 0) { snprintf(tempstring, sizeof(tempstring), "%f", record.longitude); if ( machinereadable != 0 ) { printout2("DBIP_LONGITUDE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_DBIP("Longitude", tempstring) }; }; if (TEST_DBIP_AVAILABLE(record.zipcode)) { if ( machinereadable != 0 ) { printout2("DBIP_ZIPCODE", additionalstring, record.zipcode, formatoptions); } else { HUMAN_READABLE_DBIP("ZIP Code", record.zipcode) }; }; if (TEST_DBIP_AVAILABLE(record.timezone_name)) { if ( machinereadable != 0 ) { printout2("DBIP_TIMEZONE_NAME", additionalstring, record.timezone_name, formatoptions); } else { HUMAN_READABLE_DBIP("Time Zone Name", record.timezone_name) }; // timezone_name set -> timezone_offset considered as valid // convert timezone offset into human readable value snprintf(tempstring, sizeof(tempstring), "%+03d:%02d", (int) record.timezone_offset, (int) ((record.timezone_offset - (int) record.timezone_offset) * 60)); if ( machinereadable != 0 ) { printout2("DBIP_TIMEZONE", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_DBIP("Time Zone", tempstring) }; }; if (TEST_DBIP_AVAILABLE(record.connection_type)) { if ( machinereadable != 0 ) { printout2("DBIP_NETSPEED", additionalstring, record.connection_type, formatoptions); } else { HUMAN_READABLE_DBIP("Network Speed", record.connection_type) }; }; if (record.geoname_id != 0) { snprintf(tempstring, sizeof(tempstring), "%d", record.geoname_id); if ( machinereadable != 0 ) { printout2("DBIP_GEONAME_ID", additionalstring, tempstring, formatoptions); } else { HUMAN_READABLE_DBIP("Geoname ID", tempstring) }; }; if (TEST_DBIP_AVAILABLE(record.organization_name)) { if ( machinereadable != 0 ) { printout2("DBIP_ORGNAME", additionalstring, record.organization_name, formatoptions); } else { HUMAN_READABLE_DBIP("Organization Name", record.organization_name) }; }; }; }; #endif #ifdef SUPPORT_EXTERNAL /* print External DB information */ static void print_external(const ipv6calc_ipaddr *ipaddrp, const uint32_t formatoptions, const char *additionalstring) { DEBUGPRINT_NA(DEBUG_showinfo, "Called"); if (wrapper_features_by_source[IPV6CALC_DB_SOURCE_EXTERNAL] == 0) { DEBUGPRINT_NA(DEBUG_showinfo, "External DB support not active"); return; }; int ret; char returnedCountry[256] = ""; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable); ret = libipv6calc_db_wrapper_External_country_code_by_addr(ipaddrp, returnedCountry, sizeof(returnedCountry)); if ((ret == 0) && (strlen(returnedCountry) > 0)) { DEBUGPRINT_WA(DEBUG_showinfo, "External IPv%d country database result", ipaddrp->proto); if ( machinereadable != 0 ) { printout2("EXTERNAL_COUNTRY_SHORT", additionalstring, returnedCountry, formatoptions); } else { if (strlen(additionalstring) > 0) { fprintf(stdout, "External DB country code for %s: %s\n", additionalstring, returnedCountry); } else { fprintf(stdout, "External DB country code: %s\n", returnedCountry); }; }; }; }; #endif /* print IPv4 address */ static void print_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, const uint32_t formatoptions, const char *string) { char tempstring[NI_MAXHOST] = "", tempstring2[NI_MAXHOST] = "", tempstring3[NI_MAXHOST] = "", helpstring[NI_MAXHOST] = ""; char tempipv4string[NI_MAXHOST] = ""; char embeddedipv4string[NI_MAXHOST] = ""; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable), as_num32 = ASNUM_AS_UNKNOWN; int retval, i, j, retval_anon = 1, r; ipv6calc_ipv4addr ipv4addr_anon, *ipv4addr_anon_ptr; uint16_t cc_index = COUNTRYCODE_INDEX_UNKNOWN; char *as_text = NULL; int registry; ipv6calc_ipaddr ipaddr; unsigned int data_source = IPV6CALC_DB_SOURCE_UNKNOWN; ipv4addr_anon_ptr = &ipv4addr_anon; if (ipv4addrp->flag_typeinfo == 0) { fprintf(stderr, "FATAL error, typeinfo not valid - FIX CODE of caller\n"); exit(2); }; retval = libipv4addr_ipv4addrstruct_to_string(ipv4addrp, tempipv4string, sizeof(tempipv4string), 0); if ( retval != 0 ) { fprintf(stderr, "Error converting IPv4 address: %s\n", tempipv4string); return; }; CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr); if ((formatoptions & FORMATOPTION_printembedded) != 0) { snprintf(embeddedipv4string, sizeof(embeddedipv4string), "[%s]", tempipv4string); }; ipv4addr_copy(ipv4addr_anon_ptr, ipv4addrp); /* copy structure */ if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { retval_anon = libipv4addr_anonymize(ipv4addr_anon_ptr, ipv6calc_anon_set.mask_ipv4, ipv6calc_anon_set.method); if (retval_anon == 0) { retval = libipv4addr_ipv4addrstruct_to_string(ipv4addr_anon_ptr, tempstring2, sizeof(tempstring2), 0); if ( retval != 0 ) { fprintf(stderr, "Error uncompressing IPv4 address: %s\n", tempstring2); retval = 1; retval_anon = 2; }; }; }; if (machinereadable != 0) { /* given source string */ if ((string != NULL) && (strlen(string) > 0)) { printout2("IPV4_SOURCE", embeddedipv4string, string, formatoptions); }; /* address */ printout2("IPV4", embeddedipv4string, tempipv4string, formatoptions); if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { if (retval_anon == 0 ) { /* anonymized address */ printout2("IPV4_ANON", embeddedipv4string, tempstring2, formatoptions); } else { // TODO: only show this on verbose (must be implemented) // snprintf(tempstring, sizeof(tempstring), "IPV4_ANON%s=(unsupported, too less DB features available)", embeddedipv4string); // printout(tempstring); }; }; if (ipv4addrp->flag_prefixuse == 1) { snprintf(tempstring, sizeof(tempstring), "%d", (int) ipv4addrp->prefixlength); printout2("IPV4_PREFIXLENGTH", embeddedipv4string, tempstring, formatoptions); }; j = 0; snprintf(tempstring, sizeof(tempstring), "%s", ""); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv4addrtypestrings); i++ ) { if ((ipv4addrp->typeinfo & ipv6calc_ipv4addrtypestrings[i].number) != 0) { if (j != 0) { snprintf(helpstring, sizeof(helpstring), "%s,", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring), "%s%s", tempstring, ipv6calc_ipv4addrtypestrings[i].token); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); j = 1; }; }; printout2("IPV4_TYPE", embeddedipv4string, tempstring, formatoptions); } else { if ((string != NULL) && (strlen(string) > 0)) { fprintf(stdout, "IPv4 address: %s (%s)\n", tempipv4string, string); } else { fprintf(stdout, "IPv4 address: %s\n", tempipv4string); }; fprintf(stdout, "IPv4 address type: "); j = 0; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv4addrtypestrings); i++ ) { if ((ipv4addrp->typeinfo & ipv6calc_ipv4addrtypestrings[i].number) != 0) { if ( j != 0 ) { fprintf(stdout, ", "); }; fprintf(stdout, "%s", ipv6calc_ipv4addrtypestrings[i].token); j = 1; }; }; fprintf(stdout, "\n"); }; if ((ipv4addrp->typeinfo & (IPV4_ADDR_GLOBAL)) != 0) { /* get AS Information */ as_num32 = libipv4addr_as_num32_by_addr(ipv4addrp); if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS) == 1) { as_text = libipv6calc_db_wrapper_as_text_by_addr(&ipaddr); }; }; if (as_num32 != ASNUM_AS_UNKNOWN) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring), "%d", as_num32); printout2("IPV4_AS_NUM", embeddedipv4string, tempstring, formatoptions); if (as_text != NULL) { printout2("IPV4_AS_TEXT", embeddedipv4string, as_text, formatoptions); }; } else { if (as_text != NULL) { if (strlen(embeddedipv4string) > 0) { fprintf(stdout, "Autonomous System Information for %s: %s\n", embeddedipv4string, as_text); } else { fprintf(stdout, "Autonomous System Information: %s\n", as_text); }; } else { if (strlen(embeddedipv4string) > 0) { fprintf(stdout, "Autonomous System Number (32-bit) for %s: %d\n", embeddedipv4string, as_num32); } else { fprintf(stdout, "Autonomous System Number (32-bit): %d\n", as_num32); }; }; }; } else { DEBUGPRINT_NA(DEBUG_showinfo, "Skip AS print: as_num32=ASNUM_AS_UNKNOWN"); }; /* get CountryCode Information */ cc_index = libipv4addr_cc_index_by_addr(ipv4addrp, &data_source); if (cc_index < COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN) { libipv6calc_db_wrapper_country_code_by_cc_index(tempstring2, sizeof(tempstring2), cc_index); if ( machinereadable != 0 ) { printout2("IPV4_COUNTRYCODE", embeddedipv4string, tempstring2, formatoptions); if (data_source != IPV6CALC_DB_SOURCE_UNKNOWN) { for (i = 0; i < MAXENTRIES_ARRAY(data_sources); i++ ) { if (data_source == data_sources[i].number) { printout2("IPV4_COUNTRYCODE_SOURCE" , embeddedipv4string, data_sources[i].name, formatoptions); break; }; }; }; } else { if (strlen(embeddedipv4string) > 0) { fprintf(stdout, "Country Code for %s: %s\n", embeddedipv4string, tempstring2); } else { fprintf(stdout, "Country Code: %s\n", tempstring2); }; }; } else { DEBUGPRINT_NA(DEBUG_showinfo, "Skip CountryCode print: cc_index>=COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN"); }; }; DEBUGPRINT_NA(DEBUG_showinfo, "get registry"); if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { registry = libipv4addr_registry_num_by_addr(ipv4addrp); snprintf(tempstring2, sizeof(tempstring2), "%s", libipv6calc_registry_string_by_num(registry)); } else { libipv6calc_db_wrapper_registry_string_by_ipv4addr(ipv4addrp, tempstring, sizeof(tempstring)); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); DEBUGPRINT_NA(DEBUG_showinfo, "try to get additional information"); r = libipv6calc_db_wrapper_info_by_ipv4addr(ipv4addrp, tempstring3, sizeof(tempstring3)); if (r == 0) { // info found, append to registry snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); snprintf(tempstring2, sizeof(tempstring2), "%s(%s)", tempstring, tempstring3); }; }; if (machinereadable != 0) { printout2("IPV4_REGISTRY", embeddedipv4string, tempstring2, formatoptions); } else { if (strlen(embeddedipv4string) > 0) { fprintf(stdout, "IPv4 registry for %s: %s\n", embeddedipv4string, tempstring2); } else { fprintf(stdout, "IPv4 registry: %s\n", tempstring2); }; }; if (((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) == 0) && ((ipv4addrp->typeinfo & IPV4_ADDR_GLOBAL) != 0)) { #ifdef SUPPORT_IP2LOCATION /* IP2Location information */ print_ip2location(tempipv4string, formatoptions, embeddedipv4string, 4); #endif #ifdef SUPPORT_GEOIP /* GeoIP information */ print_geoip(tempipv4string, formatoptions, embeddedipv4string, 4); #endif #ifdef SUPPORT_DBIP /* db-ip.com information */ print_dbip(&ipaddr, formatoptions, embeddedipv4string); #endif #ifdef SUPPORT_EXTERNAL /* External DB information */ print_external(&ipaddr, formatoptions, embeddedipv4string); #endif }; return; }; /* * print ASN information */ static void print_asn(const uint32_t asn, const uint32_t formatoptions) { char helpstring[NI_MAXHOST]; uint32_t machinereadable = ( formatoptions & FORMATOPTION_machinereadable); int registry; snprintf(helpstring, sizeof(helpstring), "%d", asn); if ( machinereadable != 0 ) { printout("AS_NUM", helpstring, formatoptions); } else { fprintf(stdout, "Autonomous System Number: %s\n", helpstring); }; registry = libipv6calc_db_wrapper_registry_num_by_as_num32(asn); if ( machinereadable != 0 ) { printout("AS_NUM_REGISTRY", libipv6calc_registry_string_by_num(registry), formatoptions); } else { fprintf(stdout, "Registry of Autonomous System Number: %s\n", libipv6calc_registry_string_by_num(registry)); }; return; }; /* * print EUI-48/MAC information */ static void print_eui48(const ipv6calc_macaddr *macaddrp, const uint32_t formatoptions) { char helpstring[NI_MAXHOST]; uint32_t machinereadable = ( formatoptions & FORMATOPTION_machinereadable); int i, result; ipv6calc_ipv4addr ipv4addr; /* EUI-48/MAC address */ snprintf(helpstring, sizeof(helpstring), "%02x:%02x:%02x:%02x:%02x:%02x", (unsigned int) macaddrp->addr[0], (unsigned int) macaddrp->addr[1], (unsigned int) macaddrp->addr[2], (unsigned int) macaddrp->addr[3], (unsigned int) macaddrp->addr[4], (unsigned int) macaddrp->addr[5]); if ( machinereadable != 0 ) { printout("EUI48", helpstring, formatoptions); } else { fprintf(stdout, "EUI-48/MAC address: %s\n", helpstring); }; /* scope */ if ( (macaddrp->addr[0] & 0x02) == 0 ) { if ( machinereadable != 0 ) { printout("EUI48_SCOPE", "global", formatoptions); } else { fprintf(stdout, "MAC is a global unique one\n"); }; } else { if ( machinereadable != 0 ) { printout("EUI48_SCOPE", "local", formatoptions); } else { fprintf(stdout, "MAC is a local one\n"); }; }; /* unicast/multicast/broadcast */ if ( (macaddrp->addr[0] & 0x01) == 0 ) { if ( machinereadable != 0 ) { printout("EUI48_TYPE", "unicast", formatoptions); } else { fprintf(stdout, "MAC is an unicast one\n"); }; } else { if ( (macaddrp->addr[0] == 0xff) && (macaddrp->addr[1] == 0xff) && (macaddrp->addr[2] == 0xff) && (macaddrp->addr[3] == 0xff) && (macaddrp->addr[4] == 0xff) && (macaddrp->addr[5] == 0xff) ) { if ( machinereadable != 0 ) { printout("EUI48_TYPE", "broadcast", formatoptions); } else { fprintf(stdout, "MAC is a broadcast one\n"); }; } else { if ( machinereadable != 0 ) { printout("EUI48_TYPE", "multicast", formatoptions); } else { fprintf(stdout, "MAC is a multicast one\n"); }; }; }; /* vendor string */ result = libipv6calc_db_wrapper_ieee_vendor_string_by_macaddr(helpstring, sizeof(helpstring), macaddrp); if (result == 0) { if ( machinereadable != 0 ) { printout("OUI", helpstring, formatoptions | FORMATOPTION_mr_quote_default); } else { fprintf(stdout, "OUI is: %s\n", helpstring); }; }; /* check for Linux ISDN-NET/PLIP */ if ( (macaddrp->addr[0] == 0xfc) && (macaddrp->addr[1] == 0xfc) ) { /* copy address */ for ( i = 0; i <= 3; i++ ) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) macaddrp->addr[i + 2]); }; ipv4addr_settype(&ipv4addr, 1); ipv4addr.flag_valid = 1; if ( machinereadable != 0 ) { /* no additional hint */ } else { fprintf(stdout, "Address type contains IPv4 address:\n"); }; print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "ISDN-NET/PLIP"); }; return; }; /* * print EUI-64 information */ static void print_eui64(const ipv6calc_eui64addr *eui64addrp, const uint32_t formatoptions) { char tempstring[NI_MAXHOST], helpstring[NI_MAXHOST]; uint32_t machinereadable = ( formatoptions & FORMATOPTION_machinereadable); int result, i; ipv6calc_macaddr macaddr; /* EUI-64 address */ snprintf(helpstring, sizeof(helpstring), "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", (unsigned int) eui64addrp->addr[0], (unsigned int) eui64addrp->addr[1], (unsigned int) eui64addrp->addr[2], (unsigned int) eui64addrp->addr[3], (unsigned int) eui64addrp->addr[4], (unsigned int) eui64addrp->addr[5], (unsigned int) eui64addrp->addr[6], (unsigned int) eui64addrp->addr[7]); if ( machinereadable != 0 ) { printout("EUI64", helpstring, formatoptions); } else { fprintf(stdout, "EUI-64 identifier: %s\n", helpstring); }; /* scope */ if ( (eui64addrp->addr[0] & 0x02) == 0 ) { if ( machinereadable != 0 ) { printout("EUI64_SCOPE", "global", formatoptions); } else { fprintf(stdout, "EUI-64 identifier is a global unique one\n"); }; } else { if ( machinereadable != 0 ) { printout("EUI64_SCOPE", "local", formatoptions); } else { fprintf(stdout, "EUI-64 identifier is a local one\n"); }; }; /* get vendor string */ for (i = 0; i < 6; i++) { macaddr.addr[i] = eui64addrp->addr[i]; }; result = libipv6calc_db_wrapper_ieee_vendor_string_by_macaddr(helpstring, sizeof(helpstring), &macaddr); if (result == 0) { if ( machinereadable != 0 ) { printout("OUI", helpstring, formatoptions | FORMATOPTION_mr_quote_default); } else { fprintf(stdout, "OUI is: %s\n", tempstring); }; }; return; }; /* * function shows information about a given IPv6 address * * in : *ipv6addrp = pointer to IPv6 address * ret: ==0: ok, !=0: error */ int showinfo_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp1, const uint32_t formatoptions) { int retval = 1, i, j, flag_prefixuse, registry, r, retval_anon = 1; char tempstring[NI_MAXHOST] = "", tempstring2[NI_MAXHOST] = "", tempstring3[NI_MAXHOST] = "", helpstring[NI_MAXHOST] = ""; char ipv6addrstring[NI_MAXHOST] = ""; ipv6calc_ipv6addr ipv6addr, ipv6addr_anon, *ipv6addrp, *ipv6addr_anon_ptr; ipv6calc_ipv4addr ipv4addr, ipv4addr2; ipv6calc_macaddr macaddr; ipv6calc_eui64addr eui64addr; uint16_t port; uint32_t machinereadable = ( formatoptions & FORMATOPTION_machinereadable); uint32_t payload, as_num32, cc_index; char *as_text = NULL; unsigned int data_source = IPV6CALC_DB_SOURCE_UNKNOWN; ipv6calc_ipaddr ipaddr; ipv6addr_anon_ptr = &ipv6addr_anon; ipv6addrp = &ipv6addr; ipv6addr_copy(ipv6addrp, ipv6addrp1); /* copy structure */ if (ipv6addrp->flag_typeinfo == 0) { fprintf(stderr, "FATAL error, typeinfo not valid - FIX CODE of caller\n"); exit(2); }; DEBUGPRINT_WA(DEBUG_showinfo, "typeinfo 0x%08x-0x%08x (from given address)", (unsigned int) ipv6addrp->typeinfo, (unsigned int) ipv6addrp->typeinfo2); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { DEBUGPRINT_WA(DEBUG_showinfo, "test1: %08x : %s", (unsigned int) ipv6calc_ipv6addrtypestrings[i].number, ipv6calc_ipv6addrtypestrings[i].token); }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addr_type2_strings); i++ ) { DEBUGPRINT_WA(DEBUG_showinfo, "test2: %08x : %s", (unsigned int) ipv6calc_ipv6addr_type2_strings[i].number, ipv6calc_ipv6addr_type2_strings[i].token); }; /* get full uncompressed IPv6 address */ flag_prefixuse = ipv6addrp->flag_prefixuse; ipv6addrp->flag_prefixuse = 0; retval = libipv6addr_ipv6addrstruct_to_uncompaddr(ipv6addrp, ipv6addrstring, sizeof(ipv6addrstring), FORMATOPTION_printfulluncompressed); if ( retval != 0 ) { fprintf(stderr, "Error uncompressing IPv6 address: %s\n", ipv6addrstring); retval = 1; goto END; }; ipv6addrp->flag_prefixuse = flag_prefixuse; CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); if ((ipv6addrp->typeinfo & (IPV6_ADDR_ANONYMIZED_PREFIX | IPV6_ADDR_ANONYMIZED_IID)) == 0 ) { ipv6addr_copy(ipv6addr_anon_ptr, ipv6addrp); /* copy structure */ retval_anon = libipv6addr_anonymize(ipv6addr_anon_ptr, &ipv6calc_anon_set); if (retval_anon == 0) { retval = libipv6addr_ipv6addrstruct_to_uncompaddr(ipv6addr_anon_ptr, tempstring2, sizeof(tempstring2), FORMATOPTION_printfulluncompressed); if ( retval != 0 ) { fprintf(stderr, "Error uncompressing IPv6 address: %s\n", tempstring2); retval = 1; retval_anon = 2; }; }; }; if ( machinereadable != 0 ) { printout("IPV6", ipv6addrstring, formatoptions); if ((ipv6addrp->typeinfo & (IPV6_ADDR_ANONYMIZED_PREFIX | IPV6_ADDR_ANONYMIZED_IID | IPV6_ADDR_LOOPBACK)) == 0 ) { if (retval_anon == 0) { printout("IPV6_ANON", tempstring2, formatoptions); } else { // TODO: only show this on verbose (must be implemented) // snprintf(tempstring, sizeof(tempstring), "IPV6_ANON=(unsupported, too less DB features available)"); }; }; if (ipv6addrp->flag_prefixuse == 1) { snprintf(tempstring, sizeof(tempstring), "%d", (int) ipv6addrp->prefixlength); printout("IPV6_PREFIXLENGTH", tempstring, formatoptions); }; j = 0; snprintf(tempstring, sizeof(tempstring), "%s", ""); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { if ((ipv6addrp->typeinfo & ipv6calc_ipv6addrtypestrings[i].number) != 0) { if (j != 0) { snprintf(helpstring, sizeof(helpstring), "%s,", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring), "%s%s", tempstring, ipv6calc_ipv6addrtypestrings[i].token); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); j = 1; }; }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addr_type2_strings); i++ ) { if ((ipv6addrp->typeinfo2 & ipv6calc_ipv6addr_type2_strings[i].number) != 0) { if (j != 0) { snprintf(helpstring, sizeof(helpstring), "%s,", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring), "%s%s", tempstring, ipv6calc_ipv6addr_type2_strings[i].token); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); j = 1; }; }; printout("IPV6_TYPE", tempstring, formatoptions); } else { fprintf(stdout, "Address type: "); j = 0; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { if ((ipv6addrp->typeinfo & ipv6calc_ipv6addrtypestrings[i].number) != 0) { if ( j != 0 ) { fprintf(stdout, ", "); }; fprintf(stdout, "%s", ipv6calc_ipv6addrtypestrings[i].token); j = 1; }; }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addr_type2_strings); i++ ) { if ((ipv6addrp->typeinfo2 & ipv6calc_ipv6addr_type2_strings[i].number) != 0) { if ( j != 0 ) { fprintf(stdout, ", "); }; fprintf(stdout, "%s", ipv6calc_ipv6addr_type2_strings[i].token); j = 1; }; }; fprintf(stdout, "\n"); }; if ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_AGU)) != 0) { /* CountryCode */ DEBUGPRINT_NA(DEBUG_showinfo, "get country code"); cc_index = libipv6addr_cc_index_by_addr(ipv6addrp, &data_source); if (cc_index > COUNTRYCODE_INDEX_MAX) { if ( machinereadable != 0 ) { fprintf(stderr, "Error getting CountryCode for IPv6 address\n"); }; } else { if (cc_index < COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN) { libipv6calc_db_wrapper_country_code_by_cc_index(tempstring2, sizeof(tempstring2),cc_index); if ( machinereadable != 0 ) { printout("IPV6_COUNTRYCODE" , tempstring2, formatoptions); if (data_source != IPV6CALC_DB_SOURCE_UNKNOWN) { for (i = 0; i < MAXENTRIES_ARRAY(data_sources); i++ ) { if (data_source == data_sources[i].number) { printout("IPV6_COUNTRYCODE_SOURCE" , data_sources[i].name, formatoptions); break; }; }; }; } else { fprintf(stdout, "Country Code: %s\n", tempstring2); }; } else { DEBUGPRINT_NA(DEBUG_showinfo, "Skip CountryCode print: cc_index>=COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN"); }; }; /* AS */ DEBUGPRINT_NA(DEBUG_showinfo, "get AS number/text"); if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) == 0) { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_AS) == 1) { as_text = libipv6calc_db_wrapper_as_text_by_addr(&ipaddr); }; }; as_num32 = libipv6addr_as_num32_by_addr(ipv6addrp); if ((as_num32 == 0) && (machinereadable == 0)) { // fprintf(stderr, "Error getting AS number from IPv6 address\n"); } else { if (as_num32 != ASNUM_AS_UNKNOWN) { if ( machinereadable != 0 ) { if (as_num32 == 0) { snprintf(tempstring, sizeof(tempstring), "(unknown)"); } else { snprintf(tempstring, sizeof(tempstring), "%d", as_num32); }; printout("IPV6_AS_NUM" ,tempstring, formatoptions); if (as_text != NULL) { printout("IPV6_AS_TEXT", as_text, formatoptions); }; } else { fprintf(stdout, "ASN for address: %d\n", as_num32); }; } else { DEBUGPRINT_NA(DEBUG_showinfo, "Skip AS print: as_num32=ASNUM_AS_UNKNOWN"); }; }; }; /* IPv6 Registry */ DEBUGPRINT_NA(DEBUG_showinfo, "get registry"); if (((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) \ && ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) == 0)) { registry = libipv6addr_registry_num_by_addr(ipv6addrp); snprintf(tempstring2, sizeof(tempstring2), "%s", libipv6calc_registry_string_by_num(registry)); } else { libipv6calc_db_wrapper_registry_string_by_ipv6addr(ipv6addrp, tempstring, sizeof(tempstring)); snprintf(tempstring2, sizeof(tempstring2), "%s", tempstring); DEBUGPRINT_NA(DEBUG_showinfo, "try to get additional information"); r = libipv6calc_db_wrapper_info_by_ipv6addr(ipv6addrp, tempstring3, sizeof(tempstring3)); if (r == 0) { // info found, append to registry snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); snprintf(tempstring2, sizeof(tempstring2), "%s(%s)", tempstring, tempstring3); }; }; if ( machinereadable != 0 ) { printout("IPV6_REGISTRY", tempstring2, formatoptions); } else { fprintf(stdout, "Registry for address: %s\n", tempstring2); }; /* 6to4 */ if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, helpstring, sizeof(helpstring), 0); if ( retval != 0 ) { fprintf(stderr, "Error converting IPv4 address to string\n"); retval = 1; goto END; }; if ( machinereadable != 0 ) { print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "6TO4"); } else { fprintf(stdout, "Address type is 6to4 and included IPv4 address is: %s\n", helpstring); }; /* get registry string */ retval = libipv6calc_db_wrapper_registry_string_by_ipv4addr(&ipv4addr, helpstring, sizeof(helpstring)); if ( machinereadable != 0 ) { } else { fprintf(stdout, "IPv4 registry of 6to4 address: %s\n", helpstring); }; }; }; /* Teredo */ if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_TEREDO) != 0) { /* extract Teredo client IPv4 address */ r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr2, IPV6_ADDR_SELECT_IPV4_TEREDO_SERVER); if (r == 0) { print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "TEREDO-CLIENT"); print_ipv4addr(&ipv4addr2, formatoptions | FORMATOPTION_printembedded, "TEREDO-SERVER"); retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr2, helpstring, sizeof(helpstring), 0); if ( retval != 0 ) { fprintf(stderr, "Error converting IPv4 address to string\n"); retval = 1; goto END; }; /* extract Teredo client UDP port */ port = (uint16_t) (((uint16_t) ipv6addr_getoctet(ipv6addrp, (unsigned int) 10) << 8 | (uint16_t) ipv6addr_getoctet(ipv6addrp, (unsigned int) 11)) ^ 0xffff); if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring), "%u", (unsigned int) port); printout("TEREDO_PORT_CLIENT", tempstring, formatoptions); } else { fprintf(stdout, "Address type is Teredo and included IPv4 server address is: %s and client port: %u\n", helpstring, (unsigned int) port); }; /* get registry string */ retval = libipv6calc_db_wrapper_registry_string_by_ipv4addr(&ipv4addr2, helpstring, sizeof(helpstring)); if ( machinereadable != 0 ) { } else { fprintf(stdout, "IPv4 registry of Teredo server address: %s\n", helpstring); }; }; }; }; /* 6rd */ if ((ipv6addrp->typeinfo2 & IPV6_ADDR_TYPE2_6RD) != 0) { DEBUGPRINT_WA(DEBUG_showinfo, "6rd found with prefix: %d", ipv6addrp->prefix2length); r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_PREFIX2_LENGTH); if (r == 0) { retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, helpstring, sizeof(helpstring), 0); if ( retval != 0 ) { fprintf(stderr, "Error converting IPv4 address to string\n"); retval = 1; goto END; }; if ( machinereadable != 0 ) { print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "6RD"); } else { fprintf(stdout, "Address type is IPv6 Rapid Deployment and included IPv4 address is: %s\n", helpstring); }; /* get registry string */ retval = libipv6calc_db_wrapper_registry_string_by_ipv4addr(&ipv4addr, helpstring, sizeof(helpstring)); if ( machinereadable != 0 ) { } else { fprintf(stdout, "IPv4 registry of IPv6 Rapid Deployment address: %s\n", helpstring); }; }; }; /* NAT64 */ if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_NAT64) != 0) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { if ( machinereadable != 0 ) { } else { fprintf(stdout, "IPv4 registry for NAT64 address: %s\n", helpstring); }; print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "NAT64"); }; }; /* SLA prefix included? */ if (((ipv6addrp->typeinfo & ( IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_ADDR_ULUA )) != 0) && ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_ORCHID | IPV6_ADDR_ANONYMIZED_PREFIX)) == 0)) { uint16_t sla = ipv6addr_getword(ipv6addrp, 3); uint16_t sla_mask = 0xffff; if ((ipv6addrp->typeinfo2 & IPV6_ADDR_TYPE2_6RD) != 0) { DEBUGPRINT_WA(DEBUG_showinfo, "6rd found with prefix: %d", ipv6addrp->prefix2length); // reduced SLA, mask value if ((ipv6addrp->prefix2length + 32) > 48) { // more than 48 bits used for 6RD prefix + included IPv4 address sla_mask = sla_mask >> (ipv6addrp->prefix2length - 16); }; sla &= sla_mask; }; if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring), "%04x", (unsigned int) sla); printout("SLA", tempstring, formatoptions); } else { fprintf(stdout, "Address type has SLA: %04x\n", (unsigned int) sla); }; }; /* Proper solicited node link-local multicast address? */ if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_SOLICITED_NODE) != 0) { if ((ipv6addrp->typeinfo & (IPV6_ADDR_LINKLOCAL & IPV6_ADDR_MULTICAST)) != 0) { /* address is ok */ } else { if ( machinereadable != 0 ) { } else { fprintf(stdout, "Address is not a proper 'solicited-node link-local multicast' address!\n"); retval = 1; goto END; }; }; }; /* Compat or mapped */ if ((ipv6addrp->typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { if ( machinereadable != 0 ) { } else { fprintf(stdout, "Address type is compat/mapped and include an IPv4 address\n"); }; print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "COMPAT/MAPPED"); }; }; /* Interface identifier included */ if ((((ipv6addrp->typeinfo & (IPV6_ADDR_LINKLOCAL | IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_ADDR_ULUA )) != 0) || ((ipv6addrp->typeinfo & (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) == (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE))) && ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_ORCHID)) == 0) ) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring), "%04x:%04x:%04x:%04x", (unsigned int) ipv6addr_getword(ipv6addrp, 4), (unsigned int) ipv6addr_getword(ipv6addrp, 5), (unsigned int) ipv6addr_getword(ipv6addrp, 6), (unsigned int) ipv6addr_getword(ipv6addrp, 7)); printout("IID", tempstring, formatoptions); } else { fprintf(stdout, "Interface identifier: %04x:%04x:%04x:%04x\n", (unsigned int) ipv6addr_getword(ipv6addrp, 4), (unsigned int) ipv6addr_getword(ipv6addrp, 5), (unsigned int) ipv6addr_getword(ipv6addrp, 6), (unsigned int) ipv6addr_getword(ipv6addrp, 7)); }; if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) == IPV6_ADDR_ANONYMIZED_IID) { if ( machinereadable != 0 ) { } else { fprintf(stdout, "Interface identifier is an anonymized one\n"); }; }; if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_EUI48) == IPV6_NEW_ADDR_IID_EUI48) { /* EUI-48 */ if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) == IPV6_ADDR_ANONYMIZED_IID) { payload = ipv6addr_get_payload_anonymized_iid(ipv6addrp, ipv6addrp->typeinfo) ^ 0x020000; if ((payload & 0x1000000) != 0) { libieee_unmap_oui_macaddr(&macaddr, payload); } else { macaddr.addr[0] = ((payload >> 16) & 0xff) ^ 0x02; macaddr.addr[1] = (payload >> 8) & 0xff; macaddr.addr[2] = (payload & 0xff); macaddr.addr[3] = 0; macaddr.addr[4] = 0; macaddr.addr[5] = 0; }; } else { macaddr.addr[0] = ipv6addr_getoctet(ipv6addrp, 8) ^ 0x02; macaddr.addr[1] = ipv6addr_getoctet(ipv6addrp, 9); macaddr.addr[2] = ipv6addr_getoctet(ipv6addrp, 10); macaddr.addr[3] = ipv6addr_getoctet(ipv6addrp, 13); macaddr.addr[4] = ipv6addr_getoctet(ipv6addrp, 14); macaddr.addr[5] = ipv6addr_getoctet(ipv6addrp, 15); }; print_eui48(&macaddr, formatoptions); } else { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_EUI64) == IPV6_NEW_ADDR_IID_EUI64) { /* EUI-64 */ if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) == IPV6_ADDR_ANONYMIZED_IID) { payload = ipv6addr_get_payload_anonymized_iid(ipv6addrp, ipv6addrp->typeinfo) ^ 0x020000; if ((payload & 0x1000000) != 0) { libieee_unmap_oui_eui64addr(&eui64addr, payload); } else { eui64addr.addr[0] = ((payload >> 16) & 0xff) ^ 0x02; eui64addr.addr[1] = (payload >> 8) & 0xff; eui64addr.addr[2] = (payload & 0xff); eui64addr.addr[3] = 0; eui64addr.addr[4] = 0; eui64addr.addr[5] = 0; eui64addr.addr[6] = 0; eui64addr.addr[7] = 0; }; } else { eui64addr.addr[0] = ipv6addr_getoctet(ipv6addrp, 8) ^ 0x02; eui64addr.addr[1] = ipv6addr_getoctet(ipv6addrp, 9); eui64addr.addr[2] = ipv6addr_getoctet(ipv6addrp, 10); eui64addr.addr[3] = ipv6addr_getoctet(ipv6addrp, 11); eui64addr.addr[4] = ipv6addr_getoctet(ipv6addrp, 12); eui64addr.addr[5] = ipv6addr_getoctet(ipv6addrp, 13); eui64addr.addr[6] = ipv6addr_getoctet(ipv6addrp, 14); eui64addr.addr[7] = ipv6addr_getoctet(ipv6addrp, 15); }; print_eui64(&eui64addr, formatoptions); } else { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_SOLICITED_NODE) != 0) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring), "??:??:??:??:??:%02x:%02x:%02x", (unsigned int) ipv6addr_getoctet(ipv6addrp, 13), (unsigned int) ipv6addr_getoctet(ipv6addrp, 14), (unsigned int) ipv6addr_getoctet(ipv6addrp, 15)); printout("EUI64", tempstring, formatoptions); } else { fprintf(stdout, "Generated from the extension identifier of an EUI-48 (MAC): ...:%02x:%02x:%02x\n", (unsigned int) ipv6addr_getoctet(ipv6addrp, 13), (unsigned int) ipv6addr_getoctet(ipv6addrp, 14), (unsigned int) ipv6addr_getoctet(ipv6addrp, 15)); }; } else if ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_IID_ISATAP | IPV6_NEW_ADDR_6TO4_MICROSOFT) ) != 0) { if ((ipv6addrp->typeinfo & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) { /* IPv4 address included */ if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) != 0) { payload = ipv6addr_get_payload_anonymized_iid(ipv6addrp, ipv6addrp->typeinfo); /* IPv4 */ ipv4addr_setoctet(&ipv4addr, 0, (payload >> 16) & 0xff); ipv4addr_setoctet(&ipv4addr, 1, (payload >> 8) & 0xff); ipv4addr_setoctet(&ipv4addr, 2, (payload ) & 0xff); ipv4addr_setoctet(&ipv4addr, 3, 0); } else { for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) (i + 12))); }; }; ipv4addr_settype(&ipv4addr, 1); ipv4addr.flag_valid = 1; if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_ISATAP) != 0 ) { print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "ISATAP"); } else { print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "6to4-microsoft"); }; } else if ((ipv6addr_getoctet(ipv6addrp, 11) == 0xff) && (ipv6addr_getoctet(ipv6addrp, 12) == 0xfe)) { /* Vendor ID included */ if ( machinereadable != 0 ) { } else { fprintf(stdout, "ISATAP vendor ID: 0x%02x%02x%02x\n", ipv6addr_getoctet(ipv6addrp, 13), ipv6addr_getoctet(ipv6addrp, 14), ipv6addr_getoctet(ipv6addrp, 15)); }; } else { /* Extension ID included */ if ( machinereadable != 0 ) { } else { fprintf(stdout, "ISATAP extension ID: 0x%02x%02x%02x%02x%02x\n", ipv6addr_getoctet(ipv6addrp, 11), ipv6addr_getoctet(ipv6addrp, 12), ipv6addr_getoctet(ipv6addrp, 13), ipv6addr_getoctet(ipv6addrp, 14), ipv6addr_getoctet(ipv6addrp, 15)); }; }; } else if ((((ipv6addrp->typeinfo & IPV6_ADDR_LINKLOCAL) != 0) && (ipv6addr_getdword(ipv6addrp, 2) == 0 && ipv6addr_getword(ipv6addrp, 6) != 0))) { /* fe80:: must have 0000:0000:xxxx:yyyy where xxxx > 0 */ if ( machinereadable != 0 ) { } else { fprintf(stdout, "Address type contains IPv4 address:\n"); }; for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) (i + 12))); }; ipv4addr_settype(&ipv4addr, 1); ipv4addr.flag_valid = 1; if ( machinereadable != 0 ) { // printout("IPV4_SOURCE=LINK-LOCAL-IID"); }; print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "LINK-LOCAL-IID"); } else { if ( machinereadable != 0 ) { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4_MICROSOFT) != 0) { printout("EUI64_SCOPE", "local-6to4-microsoft", formatoptions); } else if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0) { printout("EUI64_SCOPE", "local-random", formatoptions); } else { printout("EUI64_SCOPE", "local", formatoptions); }; } else { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4_MICROSOFT) != 0) { fprintf(stdout, "Interface identifier contain only IPv4 address from 6to4 prefix, usually seen on Microsoft OS\n"); } else if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0) { fprintf(stdout, "Interface identifier is probably generated by privacy extension\n"); } else { fprintf(stdout, "Interface identifier is probably manual set\n"); }; }; }; }; }; }; if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_ORCHID) != 0) { /* 'extract' hash */ ipv6addr_setword(ipv6addrp, 0, 0x0000); ipv6addr_setword(ipv6addrp, 1, ipv6addr_getword(ipv6addrp, 1) & 0x000F); retval = libipv6addr_to_hex(ipv6addrp, ipv6addrstring, sizeof(ipv6addrstring), 0); if ( machinereadable != 0 ) { } else { if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) != 0) { snprintf(tempstring, sizeof(tempstring), "n/a (previosly anonymized)"); } else { snprintf(tempstring, sizeof(tempstring), "%s", ipv6addrstring+7); }; fprintf(stdout, "ORCHID hash (100 bits): %s\n", tempstring); }; }; END: i = libipv6calc_db_wrapper_registry_num_by_ipv6addr(ipv6addrp); if ((i != IPV6_ADDR_REGISTRY_RESERVED) && (i != IPV6_ADDR_REGISTRY_6BONE)) { if (((ipv6addrp->typeinfo & IPV6_NEW_ADDR_AGU) != 0) && ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_ORCHID | IPV6_ADDR_ANONYMIZED_PREFIX)) == 0)) { #ifdef SUPPORT_IP2LOCATION /* IP2Location information */ print_ip2location(ipv6addrstring, formatoptions, "", 6); #endif #ifdef SUPPORT_GEOIP /* GeoIP information */ print_geoip(ipv6addrstring, formatoptions, "", 6); #endif #ifdef SUPPORT_DBIP /* db-ip.com information */ print_dbip(&ipaddr, formatoptions, ""); #endif #ifdef SUPPORT_EXTERNAL /* External DB information */ print_external(&ipaddr, formatoptions, ""); #endif }; }; printfooter(formatoptions); retval = 0; return (retval); }; /* * shows information about a given IPv4 address * * in : *ipv4addrp = pointer to IPv4 address * ret: ==0: ok, !=0: error */ int showinfo_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, const uint32_t formatoptions) { int retval = 1; print_ipv4addr(ipv4addrp, formatoptions, ""); printfooter(formatoptions); retval = 0; return (retval); }; /* * shows information about a given EUI-48 identifier * * in : *macaddrp = pointer to MAC address * ret: ==0: ok, !=0: error */ int showinfo_eui48(const ipv6calc_macaddr *macaddrp, const uint32_t formatoptions) { int retval = 1; print_eui48(macaddrp, formatoptions); printfooter(formatoptions); retval = 0; return (retval); }; /* * shows information about a given EUI-64 identifier * * in : *eui64addrp = pointer to EUI-64 address * ret: ==0: ok, !=0: error */ int showinfo_eui64(const ipv6calc_eui64addr *eui64addrp, const uint32_t formatoptions) { int retval = 1; print_eui64(eui64addrp, formatoptions); printfooter(formatoptions); retval = 0; return (retval); }; /* * shows information about a given ASN * * in : asn * ret: ==0: ok, !=0: error */ int showinfo_asn(const uint32_t asn, const uint32_t formatoptions) { int retval = 1; print_asn(asn, formatoptions); printfooter(formatoptions); retval = 0; return (retval); }; ipv6calc-1.0.0/ipv6calc/showinfo.h000066400000000000000000000047671312366535500167620ustar00rootroot00000000000000/* * Project : ipv6calc * File : showinfo.h * Version : $Id: 3f2cacf0d426ac039ea2674fca2958e2ad4dc36b $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Header file for showinfo.c */ #include "ipv6calc_inttypes.h" #include "libipv6addr.h" #include "libipv4addr.h" #include "libmac.h" #define DEBUG_showinfo 0x00000002l /* output version of machine readable format */ // 1: never defined, until 0.51 // 2: 0.60.0cvs to 0.60.1 // 3: 0.61.0cvs to 0.70.0 // 4: 0.71.0cvs to < 0.92.0 // - IP2LOCATION_DATABASE_INFO // + IP2LOCATION_DATABASE_INFO_IPV4 // + IP2LOCATION_DATABASE_INFO_IPV6 // 5: 0.92.0 to < 0.94.0 // + IPV6CALC_FEATURES (see ipv6calc -v) // 6: 0.94.0 to < 0.95.0 // TYPE renamed to IPV6_TYPE for alignment // + IPV6_ANON // + IPV4_ANON // + SETTINGS_ANON // 7: 0.95.0 to 0.97.3 // - GEOIP_DATABASE_INFO_IPV4 // - GEOIP_DATABASE_INFO_IPV6 // + GEOIP_DATABASE_INFO // - IP2LOCATION_DATABASE_INFO_IPV4 // - IP2LOCATION_INFO_IPV6 // + IP2LOCATION_DATABASE_INFO // 8: 0.97.4 // + IPV6CALC_CAPABILITIES // 9: 0.98.0 // + DBIP_COUNTRY_SHORT // + DBIP_CITY // + DBIP_DATABASE_INFO // + IPV4_COUNTRYCODE_SOURCE // + IPV6_COUNTRYCODE_SOURCE // + GEOP_AREACODE // + GEOP_DMACODE // + IP2LOCATION_AREACODE // + EXTERNAL_COUNTRY_SHORT // + EXTERNAL_DATABASE_INFO // + BUILTIN_DATABASE_INFO // 10: 0.99.0 to current // + IP2LOCATION_TIMEZONE // + IP2LOCATION_NETSPEED // + IP2LOCATION_WEATHERSTATIONNAME // + IP2LOCATION_WEATHERSTATIONCODE // + IP2LOCATION_ELEVATION // + IP2LOCATION_USAGETYPE // + IP2LOCATION_MOBILEBRAND // + IP2LOCATION_MNC // + IP2LOCATION_MCC // + IP2LOCATION_IDDCODE // 11: 0.99.2 to current // + DBIP_DISTRICT // + DBIP_ZIPCODE // + DBIP_GEONAME_ID // + DBIP_LATITUDE // + DBIP_LONGITUDE // + DBIP_TIMEZONE // + DBIP_TIMEZONE_NAME // + DBIP_NETSPEED // + DBIP_ISP // + DBIP_ORGNAME #define IPV6CALC_OUTPUT_VERSION 11 /* prototypes */ extern int showinfo_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp, const uint32_t formatoptions); extern int showinfo_ipv4addr(const ipv6calc_ipv4addr *ipv4addrp, const uint32_t formatoptions); extern int showinfo_eui48(const ipv6calc_macaddr *macaddrp, const uint32_t formatoptions); extern int showinfo_eui64(const ipv6calc_eui64addr *eui64addrp, const uint32_t formatoptions); extern int showinfo_asn(const uint32_t asn, const uint32_t formatoptions); extern void showinfo_availabletypes(void); ipv6calc-1.0.0/ipv6calc/test_ipv6calc.sh000077500000000000000000000637371312366535500200640ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc.sh # Version : $Id: 2b49d0565960d19f78b2627ea9ff52336077f198 $ # Copyright : 2001-2015 by Peter Bieringer # # Test patterns for ipv6calc conversions verbose=0 while getopts "Vh\?" opt; do case $opt in V) verbose=1 ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done if [ ! -x ./ipv6calc ]; then echo "Binary './ipv6calc' missing or not executable" exit 1 fi # Test Scenarios for autodetection "good case" source ./test_scenarios.sh testscenarios() { # Command Expected result (no space between "=" and result) cat <0wv%Yp --in ipv6 --out base85 1080:0:0:0:8:800:200c:417a =4)+k&C#VzJ4br>0wv%Yp --base85_to_addr 4)+k&C#VzJ4br>0wv%Yp =1080:0:0:0:8:800:200c:417a ## MAC to EUI-64 --mac_to_eui64 00:50:BF:06:B4:F5 =250:bfff:fe06:b4f5 --mac_to_eui64 00:0:F:6:4:5 =200:fff:fe06:405 --in mac --out eui64 00:0:F:6:4:5 =200:fff:fe06:405 --mac_to_eui64 0050BF-06B4F5 =250:bfff:fe06:b4f5 --mac_to_eui64 0050BF06B4F5 =250:bfff:fe06:b4f5 ## MAC to EUI-64 (autodetect mode, not supported in pipe mode) NOPIPETEST--out eui64 00:0:F:6:4:5 =200:fff:fe06:405 ## Interface identifier privacy conversion --eui64_to_privacy 0123:4567:89ab:cdef 0123456789abcdef =4462:bdea:8654:776d 486072ff7074945e --in iid+token --out iid+token 0123:4567:89ab:cdef 0123456789abcdef =4462:bdea:8654:776d 486072ff7074945e ## Bitstring --addr_to_bitstring 3ffe:ffff::1 =\\\\[x3ffeffff000000000000000000000001/128].ip6.arpa. --in ipv6 --out bitstring 3ffe:ffff::1 =\\\\[x3ffeffff000000000000000000000001/128].ip6.arpa. --addr_to_bitstring 3ffe:ffff::1/64 =\\\\[x3ffeffff000000000000000000000001/128].ip6.arpa. --addr_to_bitstring --printsuffix 3ffe:ffff::1/64 =\\\\[x0000000000000001/64] --addr_to_bitstring --printprefix 3ffe:ffff::1/64 =\\\\[x3ffeffff00000000/64].ip6.arpa. --addr_to_bitstring --printprefix --printstart 17 3ffe:ffff:0100:e100:0123:4567:89ab:cdef/64 =\\\\[xffff0100e100/48] --addr_to_bitstring --uppercase 3ffe:ffff::1 =\\\\[x3FFEFFFF000000000000000000000001/128].IP6.ARPA. --in bitstring --out ipv6 \\\\[x3FFEFFFF000000000000000000000001/64].IP6.ARPA. =3ffe:ffff::1/64 ## IPv4 -> IPv6 (6to4) --ipv4_to_6to4addr 11.12.13.14 =2002:b0c:d0e:: --in ipv4 --out ipv6 --action conv6to4 11.12.13.14 =2002:b0c:d0e:: --action conv6to4 192.0.2.1 =2002:c000:201:: ## IPv6 -> IPv4 (6to4) --in ipv6 --out ipv4 --action conv6to4 2002:102:304::1 =1.2.3.4 --action conv6to4 2002:c000:201:: =192.0.2.1 ## IPv4 -> IPv6 (NAT64) --action convnat64 192.0.2.1 =64:ff9b::c000:201 ## IPv6 -> IPv4 (NAT64) --action convnat64 64:ff9b::c000:201 =192.0.2.1 ## Prefix + MAC -> IPv6 --in prefix+mac fec0:0:0:1:: 01:23:45:67:89:01 =fec0::1:323:45ff:fe67:8901 ## IPv4 -> reverse --in ipv4addr --out revipv4 1.2.3.4 =4.3.2.1.in-addr.arpa. ## Information -i fe80::1 =* -i -m ff02::1 =* # Anonymization --action anonymize fe80:0000:0000:0000:0200:5efe:192.0.2.143 =fe80::a909:5214:5c00:21 --action anonymize fe80:0000:0000:0000:0000:5e01:2345:6789 =fe80::a909:5214:e012:3451 --action anonymize fe80:0000:0000:0000:0200:5e01:2345:6789 =fe80::a909:5214:f012:345f --action anonymize fe80:0000:0000:0000:0000:5eff:fe01:2345 =fe80::a909:5214:c010:1 --action anonymize 2001:0db8:0000:0000:81c0:0f3f:c807:1455 =2001:db8::9:a929:4941:0:c --action anonymize 3ffe:831f:ce49:7601:8000:efff:af4a:86BF =3ffe:831f:ce49:7601:8000:ffff:af4a:86ff --action anonymize --mask-ipv4 16 3ffe:831f:ce49:7601:8000:efff:af4a:86BF =3ffe:831f:ce49:7601:8000:ffff:af4a:ffff --action anonymize 192.0.2.1 =192.0.2.0 --action anonymize --mask-ipv4 16 192.0.2.1 =192.0.0.0 --action anonymize 2001:1a:392e:a450:2cd3:75e1:6098:8104 =2001:19:a909:a909:a999:4843::e --action anonymize 01:23:45:67:89:ab =01:23:45:00:00:00 --action anonymize --mask-mac 48 01:23:45:67:89:ab =01:23:45:67:89:ab --action anonymize --mask-mac 47 01:23:45:67:89:ab =01:23:45:67:89:aa --action anonymize --mask-mac 44 01:23:45:67:89:ab =01:23:45:67:89:a0 --action anonymize --mask-mac 41 01:23:45:67:89:a8 =01:23:45:67:89:80 --action anonymize --mask-mac 40 01:23:45:67:89:a8 =01:23:45:67:89:00 --action anonymize --mask-mac 8 ff:23:45:67:89:a8 =ff:00:00:00:00:00 --action anonymize --mask-mac 7 ff:23:45:67:89:a8 =fe:00:00:00:00:00 --action anonymize --mask-mac 1 ff:23:45:67:89:a8 =82:00:00:00:00:00 -A anonymize --anonymize-preset zeroize-paranoid 2001:db8:2280:6901:224:21ff:fe01:2345 =2001:db8:2200:: -A anonymize --anonymize-preset zeroize-careful 2001:db8:2280:6901:224:21ff:fe01:2345 =2001:db8:2280::224:21ff:fe00:0 -A anonymize --anonymize-preset zeroize-standard 2001:db8:2280:6901:224:21ff:fe01:2345 =2001:db8:2280:6900:224:21ff:fe00:0 -A anonymize --anonymize-preset anonymize-paranoid 2001:db8:2280:6901:224:21ff:fe01:2345 =2001:db8:2209:a909:a969:4291:4022:4213 -A anonymize --anonymize-preset anonymize-careful 2001:db8:2280:6901:224:21ff:fe01:2345 =2001:db8:2280:a909:a949:4291:4022:4219 -A anonymize --anonymize-preset anonymize-standard 2001:db8:2280:6901:224:21ff:fe01:2345 =2001:db8:2280:6909:a929:4291:4022:4217 # RFC 5952 4.2.1 --in ipv6addr --out ipv6addr 2001:db8:0:0:0:0:2:1 =2001:db8::2:1 # RFC 5952 4.2.2 --in ipv6addr --out ipv6addr 2001:db8:0:1:1:1:1:1 =2001:db8::1:1:1:1:1 # RFC 5952 4.2.3 --in ipv6addr --out ipv6addr 2001:0:0:1:0:0:0:1 =2001:0:0:1::1 --in ipv6addr --out ipv6addr 2001:db8:0:0:1:0:0:1 =2001:db8::1:0:0:1 # RFC 5952 4.2.4 --in ipv6addr --out ipv6addr 2001:DB8:0:0:1:0:0:1 =2001:db8::1:0:0:1 # 6rd --action 6rd_local_prefix --6rd_prefix 2607:fedc:ff40::/43 --6rd_relay_prefix 6.230.0.0/15 6.231.32.33 =2607:fedc:ff52:210::/60 --action 6rd_local_prefix --6rd_prefix 2001:0b4f::/28 192.0.2.1 =2001:b4c:0:2010::/60 --action 6rd_local_prefix --6rd_prefix 2001:0b4f::/29 192.0.2.1 =2001:b4e:0:1008::/61 --action 6rd_local_prefix --6rd_prefix 2001:0b4f::/30 192.0.2.1 =2001:b4f:0:804::/62 --action 6rd_local_prefix --6rd_prefix 2001:0b4f::/31 192.0.2.1 =2001:b4f:8000:402::/63 --action 6rd_local_prefix --6rd_prefix 2001:0b4f::/32 192.0.2.1 =2001:b4f:c000:201::/64 -A 6rd_extract_ipv4 --6rd_prefixlength 28 2001:b4c:0:2010::/60 =192.0.2.1 # IPv6 literal --in ipv6literal fe80--1.IPV6-LITERAL.NET =fe80::1 --in ipv6literal fe80--1.IPV6-liTERal.NET =fe80::1 --in ipv6literal fe80--218-8bff-fe17-a226s4.ipv6-literal.net =fe80::218:8bff:fe17:a226%4 --out ipv6literal -u --in ipv6addr 2001:db8::1 =2001-DB8--1.IPV6-LITERAL.NET --out ipv6literal -U --in ipv6addr 2001:db8::1 =2001-db8-0-0-0-0-0-1.ipv6-literal.net --out ipv6literal -F --in ipv6addr 2001:db8::1 =2001-0db8-0000-0000-0000-0000-0000-0001.ipv6-literal.net --out ipv6literal --in ipv6addr fe80::1%0 =fe80--1s0.ipv6-literal.net --out ipv6literal -F --in ipv6addr fe80::1%0 =fe80-0000-0000-0000-0000-0000-0000-0001s0.ipv6-literal.net --out ipv6addr -U --in ipv6addr fe80::1%eth0 =fe80:0:0:0:0:0:0:1%eth0 --out ipv6addr -F --in ipv6addr fe80::1%eth0 =fe80:0000:0000:0000:0000:0000:0000:0001%eth0 # hex -O hex 0123:4567:89ab:cdef:0000:1111:2222:3333 =0123456789abcdef0000111122223333 -O hex -u 0123:4567:89ab:cdef:0000:1111:2222:3333 =0123456789ABCDEF0000111122223333 -O hex --forceprefix 32 --printsuffix 0123:4567:89ab:cdef:0000:1111:2222:3333 =89abcdef0000111122223333 -O hex --forceprefix 32 --printprefix 0123:4567:89ab:cdef:0000:1111:2222:3333 =01234567 -O hex --forceprefix 64 --printsuffix 0123:4567:89ab:cdef:0000:1111:2222:3333 =0000111122223333 -O hex --forceprefix 64 --printprefix 0123:4567:89ab:cdef:0000:1111:2222:3333 =0123456789abcdef -O hex 1.2.3.4 =01020304 -O hex --forceprefix 8 --printsuffix 1.2.3.4 =020304 -O hex --forceprefix 8 --printprefix 1.2.3.4 =01 -O hex --forceprefix 16 --printsuffix 1.2.3.4 =0304 -O hex --forceprefix 16 --printprefix 1.2.3.4 =0102 -O hex --forceprefix 24 --printsuffix 1.2.3.4 =04 -O hex --forceprefix 24 --printprefix 1.2.3.4 =010203 -O hex -u 192.168.1.1 =C0A80101 END } # Test Scenarios for autodetection "bad case" testscenarios_auto_bad() { cat </dev/null retval=$? fi if [ $retval -ne 1 ]; then echo "ERROR : something wrong in option definition" exit 1 fi echo "INFO : $test successful" test="run 'ipv6calc' version test" echo "INFO : $test" if [ "$verbose" = "1" ]; then ./ipv6calc -vvv retval=$? else ./ipv6calc -vvv 2>/dev/null retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc -vvv'!" exit 1 fi echo "INFO : $test successful" test="run 'ipv6calc' version test in debug mode" echo "INFO : $test" if [ "$verbose" = "1" ]; then ./ipv6calc -vvv -d -1 retval=$? else ./ipv6calc -vvv -d -1 >/dev/null 2>&1 retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc -vvv -d -1'!" exit 1 fi echo "INFO : $test successful" test="run 'ipv6calc' version help test for feature tokens" echo "INFO : $test" if [ "$verbose" = "1" ]; then ./ipv6calc -v -h retval=$? else ./ipv6calc -v -h 2>/dev/null retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc -v -h'!" exit 1 fi echo "INFO : $test successful" test="test './ipv6calc -v'" echo "INFO : $test" output="`./ipv6calc -v 2>&1`" retval=$? if [ $retval -ne 0 ]; then echo "Error executing: ipv6calc -v: $output" exit 1 fi echo "INFO : $test successful" test="test './ipv6calc -v -v'" echo "INFO : $test" output="`./ipv6calc -v -v 2>&1`" retval=$? if [ $retval -ne 0 ]; then echo "Error executing: ipv6calc -v -v: $output" exit 1 fi echo "INFO : $test successful" test="run 'ipv6calc' function tests" echo "INFO : $test" testscenarios | sed 's/NOPIPETEST//' | while read line; do if [ -z "$line" ]; then # end continue fi # extract result command="`echo $line | awk -F= '{ print $1 }' | sed 's/ $//g'`" result="`echo $line | awk -F= '{ for (i=2; i <= NF; i++) printf "%s%s", $i, (i/dev/null retval=$? fi else info="INFO : test './ipv6calc -q --in $inputformat \"\"'" [ "$verbose" = "1" ] && echo "$info" if [ "$verbose" = "1" ]; then ./ipv6calc -q --in $inputformat "" retval=$? else ./ipv6calc -q --in $inputformat "" 2>/dev/null retval=$? fi fi if [ $retval -ne 1 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' input validation tests (too long input)" echo "INFO : $test" line="`perl -e 'print "x" x300'`" ./ipv6calc -m --in -? | while read inputformat; do if echo $inputformat | grep -q '+'; then info="INFO : test './ipv6calc -q --in $inputformat \"$line\" \"$line\"'" [ "$verbose" = "1" ] && echo "$info" if [ "$verbose" = "1" ]; then ./ipv6calc -q --in $inputformat "$line" "$line" retval=$? else ./ipv6calc -q --in $inputformat "$line" "$line" 2>/dev/null retval=$? fi else info="INFO : test './ipv6calc -q --in $inputformat \"$line\"'" [ "$verbose" = "1" ] && echo "$info" if [ "$verbose" = "1" ]; then ./ipv6calc -q --in $inputformat "$line" retval=$? else ./ipv6calc -q --in $inputformat "$line" 2>/dev/null retval=$? fi fi if [ $retval -ne 1 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' input validation tests (strange input)" echo "INFO : $test" ./ipv6calc -m --in -? | while read inputformat; do case $inputformat in hex|ifinet6) line="`perl -e 'print "x" x32'`" ;; *) line="`perl -e 'print "x" x11'`" ;; esac if echo $inputformat | grep -q '+'; then info="INFO : test './ipv6calc -q --in $inputformat \"$line\" \"$line\"'" [ "$verbose" = "1" ] && echo "$info" if [ "$verbose" = "1" ]; then ./ipv6calc -q --in $inputformat "$line" "$line" retval=$? else ./ipv6calc -q --in $inputformat "$line" "$line" 2>/dev/null retval=$? fi else info="INFO : test './ipv6calc -q --in $inputformat \"$line\"'" [ "$verbose" = "1" ] && echo "$info" if [ "$verbose" = "1" ]; then ./ipv6calc -q --in $inputformat "$line" retval=$? else ./ipv6calc -q --in $inputformat "$line" 2>/dev/null retval=$? fi fi if [ $retval -ne 1 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' input autodetection tests (good cases)" echo "INFO : $test" testscenarios_auto_good | while read input dummy; do info="INFO : test './ipv6calc -q \"$input\"'" [ "$verbose" = "1" ] && echo "$info" ./ipv6calc -q "$input" >/dev/null retval=$? if [ $retval -ne 0 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' input autodetection tests (bad cases)" echo "INFO : $test" testscenarios_auto_bad | while read input dummy; do info="INFO : test './ipv6calc -q \"$input\"'" [ "$verbose" = "1" ] && echo "$info" if [ "$verbose" = "1" ]; then ./ipv6calc -q "$input" retval=$? else ./ipv6calc -q "$input" >/dev/null 2>&1 retval=$? fi if [ $retval -eq 0 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc' ($retval)!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' input tests (good cases)" echo "INFO : $test" testscenarios_auto_good | while read input type; do info="INFO : test './ipv6calc --in $type -q \"$input\"'" [ "$verbose" = "1" ] && echo "$info" ./ipv6calc --in $type -q "$input" >/dev/null retval=$? if [ $retval -ne 0 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' pipe tests (1)" echo "INFO : $test" testscenarios_pipe | while IFS="," read input arguments result; do info="INFO : test 'echo $input | ./ipv6calc $arguments | grep \"^$result\$\"'" [ "$verbose" = "1" ] && echo "$info" output=$(echo -e $input | ./ipv6calc $arguments | grep "^$result\$") retval=$? [ "$verbose" = "1" ] && echo "$output" if [ $retval -ne 0 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc' ($retval)!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' pipe tests (2)" echo "INFO : $test" testscenarios | grep -v "^NOPIPETEST" | while read line; do # reuse original test cases # extract result command="`echo "$line" | awk -F= '{ print $1 }' | sed 's/ $//g'`" result="`echo "$line" | awk -F= '{ for (i=2; i <= NF; i++) printf "%s%s", $i, (i&2 stdin="`echo "$command" | awk '{ print $NF }'`" options="`echo "$command" | awk '{ for (i=1; i < NF; i++) printf "%s ", $i; }'`" case $command in *ifinet*) if echo "$stdin" | grep -q "^..$"; then stdin="`echo "$command" | awk '{ for (i=NF-1; i <= NF; i++) printf "%s ", $i; }'`" options="`echo "$command" | awk '{ for (i=1; i < NF-1; i++) printf "%s ", $i; }'`" fi ;; *eui64_to_privacy*|*iid+token*|*prefix+mac*) stdin="`echo "$command" | awk '{ for (i=NF-1; i <= NF; i++) printf "%s ", $i; }'`" options="`echo "$command" | awk '{ for (i=1; i < NF-1; i++) printf "%s ", $i; }'`" ;; esac info="INFO : test 'echo $stdin | ./ipv6calc $options | grep \"^$result\$\"'" [ "$verbose" = "1" ] && echo "$info" output="`echo -e $stdin | ./ipv6calc $options`" retval=$? if [ $retval -ne 0 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc' ($retval)!" exit 1 fi # Check result if [ "$result" != "*" ]; then if [ "$output" != "$result" ]; then [ "$verbose" = "1" ] || echo "$info" echo "Result '$output' doesn't match!" exit 1 fi fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' pipe mode input validation tests (too long input)" echo "INFO : $test" ./ipv6calc -m --in -? | while read inputformat; do if echo $inputformat | grep -q '+'; then info="INFO : test '8192*x 8192*x | ./ipv6calc -q --in $inputformat" [ "$verbose" = "1" ] && echo "$info" output=$(perl -e 'print "x" x8192 . " " . "y" x8192' | ./ipv6calc -q --in $inputformat 2>&1) retval=$? else info="INFO : test '8192*x | ./ipv6calc -q --in $inputformat" [ "$verbose" = "1" ] && echo "$info" output=$(perl -e 'print "x" x8192' | ./ipv6calc -q --in $inputformat 2>&1) retval=$? fi [ "$verbose" = "1" ] && echo "$output" if [ $retval -ne 0 -a $retval -ne 1 ]; then [ "$verbose" = "1" ] || echo "$info" echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" retval=$? if [ $retval -eq 0 ]; then echo "INFO : all tests were successfully done!" exit 0 else echo "ERROR : tests failed! (code $retval)" exit $retval fi ipv6calc-1.0.0/ipv6calc/test_ipv6calc_anonymization.sh000077500000000000000000000250061312366535500230260ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc_anonymization.sh # Version : $Id: 8f1a65b05f092ca7a13283e5c83b1de2f65a2815 $ # Copyright : 2013-2017 by Peter Bieringer # # Test ipv6calc anonymization verbose=0 while getopts "Vh\?" opt; do case $opt in V) verbose=1 ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done if [ ! -x ./ipv6calc ]; then echo "Binary './ipv6calc' missing or not executable" exit 1 fi # Test Scenarios source ./test_scenarios.sh test_list() { testscenarios_filter testscenarios_auto_good } run_anon_tests() { test="run 'ipv6calc' anonymization tests" echo "INFO : $test" test_list | while read input filter; do if [ -z "$input" ]; then continue fi [ "$verbose" = "1" ] && echo "INFO: test './ipv6calc -A anonymize' for: $input" output="`echo "$input" | ./ipv6calc -q -A anonymize`" retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc'!" exit 1 fi [ "$verbose" = "1" ] && echo "INFO : anonymized: $output" type_orig="`./ipv6calc -q -i "$input" -m | grep -a "^IPV._TYPE=" | sed 's/IPV._TYPE=//'`" type_anon="`./ipv6calc -q -i "$output" -m | grep -a "^IPV._TYPE=" | sed 's/IPV._TYPE=//'`" if [ -z "$type_orig" -a -z "$type_anon" ]; then # fallback EUI* type_orig="`./ipv6calc -q -i "$input" -m | grep -a "^EUI.._TYPE=" | sed 's/EUI.._TYPE=//'`" type_anon="`./ipv6calc -q -i "$output" -m | grep -a "^EUI.._TYPE=" | sed 's/EUI.._TYPE=//'`" fi if [ -z "$type_orig" ]; then echo "ERROR : something went wrong retrieving EUIxx/IPVx_TYPE for $input" exit 1 fi if [ -z "$type_anon" ]; then echo "ERROR : something went wrong retrieving EUIxx/IPVx_TYPE for $output" exit 1 fi type_anon_compare="${type_anon/anonymized,}" type_orig_compare="${type_orig/anonymized,}" type_anon_compare="${type_anon_compare/anonymized-iid,}" type_orig_compare="${type_orig_compare/anonymized-iid,}" type_anon_compare="${type_anon_compare/anonymized-prefix,}" type_orig_compare="${type_orig_compare/anonymized-prefix,}" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_TYPE orig: $type_orig_compare" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_TYPE anon: $type_anon_compare" # Check result if [ "$type_orig_compare" != "$type_anon_compare" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : IPVx_TYPE not equal for: $input (anonymized: $output)" echo "ERROR : IPVx_TYPE orig: $type_orig_compare" echo "ERROR : IPVx_TYPE anon: $type_anon_compare" exit 1 else [ "$verbose" = "1" ] && echo "INFO : result ok!" || true fi [ "$verbose" = "1" ] || echo -n "." done || return 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" } run_anon_options_tests() { test="run 'ipv6calc' anonymization option tests" echo "INFO : $test" testscenarios_anonymization_options | while IFS="=" read input result; do if [ -z "$input" ]; then continue fi command="./ipv6calc -q -A anonymize $input" result_real="`$command`" if [ $? -ne 0 ]; then echo "ERROR : command was not proper executed: $command" exit 1 fi if [ "$result" != "$result_real" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : result doesn't match on command: $command" echo "ERROR : result is : $result_real" echo "ERROR : result expected: $result" exit 1 else [ "$verbose" = "1" ] && echo "INFO : $command -> test ok" || true fi [ "$verbose" = "1" ] || echo -n "." done || return 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" } run_anon_options_kp_tests() { if ! ./ipv6calc -vv 2>&1| grep -q "Country4=1 Country6=1 ASN4=1 ASN6=1"; then echo "NOTICE: 'ipv6calc' has not required support for Country/ASN included, skip option kp tests" return 0 fi test="run 'ipv6calc' anonymization option kp tests" echo "INFO : $test" testscenarios_anonymization_options_kp | while IFS="=" read input result; do if [ -z "$input" ]; then continue fi command="./ipv6calc -q -A anonymize $input" output="`$command`" if [ $? -ne 0 ]; then echo "ERROR : command was not proper executed: $command" exit 1 fi if [ "$result" != "$output" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : result doesn't match on command: $command" echo "ERROR : result is : $output" echo "ERROR : result expected: $result" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || return 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run 'ipv6calc' anonymization option kp TYPE/REGISTRY/CC tests" echo "INFO : $test" testscenarios_kp | ./ipv6calc -q -E ipv4,ipv6 | while read input result; do if [ -z "$input" ]; then continue fi [ "$verbose" = "1" ] && echo "INFO : run test with: $input" output=$(./ipv6calc -q -A anonymize --anonymize-preset kp $input) if [ $? -ne 0 -o -z "$output" ]; then echo "ERROR : no proper result for input: $input" exit 1 fi type_orig="`./ipv6calc -m -i -q "$input" | grep -a "^IPV._TYPE=" | sed 's/IPV._TYPE=//'`" type_anon="`./ipv6calc -m -i -q "$output" | grep -a "^IPV._TYPE=" | sed 's/IPV._TYPE=//'`" if [ -z "$type_orig" ]; then echo "ERROR : something went wrong retrieving IPVx_TYPE for $input" exit 1 fi if [ -z "$type_anon" ]; then echo "ERROR : something went wrong retrieving IPVx_TYPE for $output" exit 1 fi type_anon_compare="${type_anon}" type_orig_compare="${type_orig}" #echo "DEBUG : IPVx_TYPE orig not reduced: $type_orig_compare" #echo "DEBUG : IPVx_TYPE anon not reduced: $type_anon_compare" type_anon_compare="$(echo "$type_anon_compare" | perl -p -e 's/(anonymized-prefix|anonymized-iid|anonymized)//g')" type_orig_compare="$(echo "$type_orig_compare" | perl -p -e 's/(anonymized-prefix|anonymized-iid|anonymized)//g')" type_anon_compare="$(echo "$type_anon_compare" | perl -p -e 's/,+/,/g')" type_orig_compare="$(echo "$type_orig_compare" | perl -p -e 's/,+/,/g')" type_anon_compare="$(echo "$type_anon_compare" | perl -p -e 's/(^,|,$)//g')" type_orig_compare="$(echo "$type_orig_compare" | perl -p -e 's/(^,|,$)//g')" if [ -z "$type_orig_compare" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : something went wrong reducing IPVx_TYPE for $input" exit 1 fi if [ -z "$type_anon_compare" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : something went wrong reducing IPVx_TYPE for $output" exit 1 fi [ "$verbose" = "1" ] && echo "DEBUG : IPVx orig: $input" [ "$verbose" = "1" ] && echo "DEBUG : IPVx anon: $output" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_TYPE orig: $type_orig_compare" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_TYPE anon: $type_anon_compare" # Check result if [ "$type_orig_compare" != "$type_anon_compare" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : IPVx_TYPE not equal for: $input (anonymized: $output)" echo "ERROR : IPVx_TYPE orig: $type_orig_compare" echo "ERROR : IPVx_TYPE anon: $type_anon_compare" exit 1 else [ "$verbose" = "1" ] && echo "Result ok!" || true fi # Registry reg_orig="`./ipv6calc -m -i -q "$input" | grep -a "^IPV._REGISTRY=" | sed 's/IPV._REGISTRY=//'`" if echo "$reg_orig" | grep -q LISP; then reg_orig=${reg_orig/(*} # cut lisp details fi reg_anon="`./ipv6calc -m -i -q "$output" | grep -a "^IPV._REGISTRY=" | sed 's/IPV._REGISTRY=//'`" if [ -z "$reg_orig" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : something went wrong retrieving IPVx_REGISTRY for $input" exit 1 fi if [ -z "$reg_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : something went wrong retrieving IPVx_REGISTRY for $output" exit 1 fi [ "$verbose" = "1" ] && echo "DEBUG : IPVx orig: $input" [ "$verbose" = "1" ] && echo "DEBUG : IPVx anon: $output" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_REGISTRY orig: $reg_orig" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_REGISTRY anon: $reg_anon" if [ -z "$reg_orig" -a -z "$reg_anon" ]; then # everything is ok, both have no registry true elif [ -z "$reg_orig" -a -n "$reg_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : something went wrong, anon has registry while orig hasn't" exit 1 elif [ -n "$reg_orig" -a -z "$reg_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : something went wrong, orig has registry while anon hasn't" exit 1 else # Check result if [ "$reg_orig" != "$reg_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : IPVx_REGISTRY not equal for: $input (anonymized: $output)" echo "ERROR : IPVx_REGISTRY orig: $reg_orig" echo "ERROR : IPVx_REGISTRY anon: $reg_anon" exit 1 else [ "$verbose" = "1" ] && echo "Result ok!" || true fi fi # Country Code (optional) cc_orig="`./ipv6calc -m -i -q "$input" | grep -a "^IPV._COUNTRYCODE=" | sed 's/IPV._COUNTRYCODE=//'`" cc_anon="`./ipv6calc -m -i -q "$output" | grep -a "^IPV._COUNTRYCODE=" | sed 's/IPV._COUNTRYCODE=//'`" [ "$verbose" = "1" ] && echo "DEBUG : IPVx orig: $input" [ "$verbose" = "1" ] && echo "DEBUG : IPVx anon: $output" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_COUNTRYCODE orig: $cc_orig" [ "$verbose" = "1" ] && echo "DEBUG : IPVx_COUNTRYCODE anon: $cc_anon" if [ -z "$cc_orig" -a -z "$cc_anon" ]; then # everything is ok, both have no CC true elif [ -z "$cc_orig" -a -n "$cc_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : IPVx_COUNTRYCODE not equal for: $input (anonymized: $output)" echo "ERROR : IPVx_COUNTRYCODE orig: $cc_orig" echo "ERROR : IPVx_COUNTRYCODE anon: $cc_anon" echo "ERROR : something went wrong, anon has country code while orig hasn't" exit 1 elif [ -n "$cc_orig" -a -z "$cc_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : IPVx_COUNTRYCODE not equal for: $input (anonymized: $output)" echo "ERROR : IPVx_COUNTRYCODE orig: $cc_orig" echo "ERROR : IPVx_COUNTRYCODE anon: $cc_anon" echo "ERROR : something went wrong, orig has country code while anon hasn't" exit 1 else # Check result if [ "$cc_orig" != "$cc_anon" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : IPVx_COUNTRYCODE not equal for: $input (anonymized: $output)" echo "ERROR : IPVx_COUNTRYCODE orig: $cc_orig" echo "ERROR : IPVx_COUNTRYCODE anon: $cc_anon" exit 1 else [ "$verbose" = "1" ] && echo "Result ok!" || true fi fi [ "$verbose" = "1" ] || echo -n "." done || return 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" } run_anon_options_tests || exit 1 run_anon_options_kp_tests || exit 1 run_anon_tests || exit 1 echo "INFO : all anonymization tests successful!" ipv6calc-1.0.0/ipv6calc/test_ipv6calc_filter.sh000077500000000000000000000067011312366535500214150ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc_filter.sh # Version : $Id: b352626c7c7b215f2a95a1c9cd47bb1a0acf26a5 $ # Copyright : 2012-2016 by Peter Bieringer # License : GPLv2 # # Test patterns for ipv6calc filter & test_prefix verbose=0 while getopts "Vh\?" opt; do case $opt in V) verbose=1 ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done if [ ! -x ./ipv6calc ]; then echo "Binary './ipv6calc' missing or not executable" exit 1 fi # Test Scenarios for autodetection "good case" source ./test_scenarios.sh test="run 'ipv6calc' filter tests..." echo "INFO : $test" testscenarios_filter | while read input filter_feature; do if [ -z "$input" -o -z "$filter_feature" ]; then # end continue fi filter=${filter_feature/\#*/} feature=${filter_feature/*\#/} [ "$feature" = "$filter_feature" ] && feature="" if [ -n "$feature" ]; then if ! ./ipv6calc -v 2>&1 | grep -qw "$feature"; then echo "NOTICE: skip './ipv6calc -A filter -E $filter' for: $input (missing feature: $feature)" continue fi fi [ "$verbose" = "1" ] && echo "INFO : test './ipv6calc -A filter -E $filter' for: $input" output="`echo "$input" | ./ipv6calc -A filter -E $filter`" retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc'!" exit 1 fi # Check result if [ -n "$output" ]; then if [ "$output" != "$input" ]; then echo "ERROR : result '$output' doesn't match '$input'!" exit 1 else [ "$verbose" = "1" ] && echo "INFO : result ok!" || true fi else echo "Result empty: echo $input | ./ipv6calc -A filter -E $filter" exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" # subsequent filter echo -e "1.2.3.4\n2001:db8::1" | ./ipv6calc -E iid-local >/dev/null if [ $? -ne 0 ]; then echo "ERROR : something is going wrong filtering sequence of IPv4->IPv6" exit 1 fi echo -e "2001:db8::1\n1.2.3.4" | ./ipv6calc -E iid-local >/dev/null if [ $? -ne 0 ]; then echo "ERROR : something is going wrong filtering sequence of IPv6->IPv4" exit 1 fi test="run 'ipv6calc' test_prefix tests..." echo "INFO : $test" # Pipe mode only echo -e "1.2.3.4" | ./ipv6calc -q --test_prefix 1.2.3.0/24 if [ $? -ne 0 ]; then echo "ERROR : something is going wrong with IPv4 test_prefix" exit 1 fi echo -e "1.2.3.4" | ./ipv6calc -q --test_prefix 1.2.4.0/24 if [ $? -ne 1 ]; then echo "ERROR : something is going wrong with IPv4 test_prefix" exit 1 fi echo -e "2001:db8::1" | ./ipv6calc -q --test_prefix 2001:db8::/32 if [ $? -ne 0 ]; then echo "ERROR : something is going wrong with IPv6 test_prefix" exit 1 fi echo -e "2001:db8::1" | ./ipv6calc -q --test_prefix 2001:db9::/32 if [ $? -ne 1 ]; then echo "ERROR : something is going wrong with IPv6 test_prefix" exit 1 fi echo -e "1.2.3.4" | ./ipv6calc -q --test_prefix 2001:db8::/32 if [ $? -ne 2 ]; then echo "ERROR : something is going wrong with IPv4 test_prefix" exit 1 fi echo -e "2001:db8::1" | ./ipv6calc -q --test_prefix 1.2.3.0/24 if [ $? -ne 2 ]; then echo "ERROR : something is going wrong with IPv6 test_prefix" exit 1 fi testscenario_action_test | while IFS="|" read result options comment; do ./ipv6calc -q $options rc=$? if [ $rc -ne $result ]; then echo "ERROR : something is going wrong with: $options (rc=$rc but should $result)" exit 1 fi done echo "INFO : $test successful" echo "INFO : all ipv6calc filter tests successful" exit 0 ipv6calc-1.0.0/ipv6calc/test_privacyiid_detection.sh000077500000000000000000000203601312366535500225370ustar00rootroot00000000000000#!/bin/bash # # Project : ipv6calc # File : test_privacyiid_detection.sh # Version : $Id: e5700f4ba2bc513a656e992b0f6d8d4bb23fef6b $ # Copyright : 2012-2012 by Peter Bieringer # # Test script for detection of a privacy IID if [ ! -x ./ipv6calc ]; then echo "Binary './ipv6calc' missing or not executable" exit 1 fi max=1000000 i=0 iid="0224:21ff:fe00:0001" token="0123456789abcdef" generate() { echo "INFO : generate IPv6 addresses with privacy IID: $max" >&2 while [ $i -lt $max ]; do iidtoken_new="`./ipv6calc -q -F -A genprivacyiid $iid $token`" if [ -z "$iidtoken_new" ]; then exit 1 fi iid="${iidtoken_new/ *}" token="${iidtoken_new/* }" #echo "$iid $token" ipv6="2001:0db8:0000:0000:$iid" echo "$ipv6" i=$[ $i + 1 ] done } analyze-hexvar() { f="$1" limit_low="$2" limit_high="$3" if [ -z "$limit_low" ]; then echo "ERROR : missing limit_low (arg2)" return 1 fi if [ -z "$limit_high" ]; then echo "ERROR : missing limit_high (arg3)" return 1 fi echo "INFO : analyze file (hex digit variance): $f" >&2 # hexvariance cat $f | ./ipv6calc --print-iid-var | awk -v limit_high=$limit_high -v limit_low=$limit_low '{ h = $4; if (h >= limit_low && h <= limit_high) { if (h > max || max == 0) { max = h; }; if (h < min || min == 0) { min = h; }; print $1 " " h " min=" min " max=" max; }; }' } analyze-digitblock() { f="$1" limit_low="$2" limit_high="$3" size="$4" if [ -z "$limit_low" ]; then echo "ERROR : missing limit_low (arg2)" return 1 fi if [ -z "$limit_high" ]; then echo "ERROR : missing limit_high (arg3)" return 1 fi if [ -z "$size" ]; then echo "ERROR : missing size (arg4)" return 1 fi echo "INFO : analyze file (digit blocks): $f" >&2 cat $f | ./ipv6calc --print-iid-var | awk -v limit_high=$limit_high -v limit_low=$limit_low -v size=$size '{ h = $8; split(h, db, ","); f = db[size]; if (f >= limit_low && f <= limit_high) { if (init != 1) { min = f; max = f; init = 1; }; if (f > max) { max = f; }; if (f < min) { min = f; }; print $1 " " h " " size " f:" f " min=" min " max=" max; }; }' } analyze-digitamount() { f="$1" limit_low="$2" limit_high="$3" digit="$4" if [ -z "$limit_low" ]; then echo "ERROR : missing limit_low (arg2)" return 1 fi if [ -z "$limit_high" ]; then echo "ERROR : missing limit_high (arg3)" return 1 fi if [ -z "$digit" ]; then echo "ERROR : missing digit (arg4)" return 1 fi echo "INFO : analyze file (digit amount): $f" >&2 cat $f | ./ipv6calc --print-iid-var | awk -v limit_high=$limit_high -v limit_low=$limit_low -v digit=$digit '{ h = $10; split(h, db, ","); if (digit == "-1") { # all flag = 1; for (i = 1; i <= 16; i++) { f = db[i]; if (f >= limit_low && f <= limit_high) { if (init != 1) { min = f; max = f; init = 1; }; if (f > max) { max = f; }; if (f < min) { min = f; }; } else { flag = 0; }; }; if (flag == 1) { print $1 " " h " " size " f:" f " min=" min " max=" max; }; } else { f = db[digit]; if (f >= limit_low && f <= limit_high) { if (init != 1) { min = f; max = f; init = 1; }; if (f > max) { max = f; }; if (f < min) { min = f; }; print $1 " " h " " size " f:" f " min=" min " max=" max; }; }; }' } analyze-digitdelta() { f="$1" limit_low="$2" limit_high="$3" digit="$4" if [ -z "$limit_low" ]; then echo "ERROR : missing limit_low (arg2)" return 1 fi if [ -z "$limit_high" ]; then echo "ERROR : missing limit_high (arg3)" return 1 fi if [ -z "$digit" ]; then echo "ERROR : missing digit (arg4)" return 1 fi echo "INFO : analyze file (digit delta): $f limit_low=$limit_low limit_high=$limit_high digit=$digit" >&2 cat $f | ./ipv6calc --print-iid-var | awk -v limit_high=$limit_high -v limit_low=$limit_low -v digit=$digit '{ h = $12; split(h, db, ","); if (digit == "-1" || digit == "-2") { # all flag = 1; for (i = 1; i <= 31; i++) { f = db[i]; if (f >= limit_low && f <= limit_high) { if (init != 1) { min = f; max = f; init = 1; }; if (f > max) { max = f; }; if (f < min) { min = f; }; if (digit == "-2") { flag = 0; }; } else { if (digit == "-1") { flag = 0; }; }; }; if ((digit == "-1" && flag == 1) || (digit == "-2" && flag == 0)) { print $1 " " h " " size " f:" f " min=" min " max=" max; }; } else { f = db[digit]; if (f >= limit_low && f <= limit_high) { if (init != 1) { min = f; max = f; init = 1; }; if (f > max) { max = f; }; if (f < min) { min = f; }; print $1 " " h " " size " f:" f " min=" min " max=" max; }; }; }' } analyze() { for f in $*; do # hexvariance echo "INFO : analyze file (hex digit variance): $f" >&2 cat $f | ./ipv6calc --print-iid-var | awk '{ h = $4; if (init != 1) { min = h; max = h; init = 1; }; if (h > max) { max = h; }; if (h < min) { min = h; }; print $1 " " h " min=" min " max=" max; }' | tail -1 # linear_least_square echo echo "INFO : analyze file (linear least square fit): $f" cat $f | ./ipv6calc --print-iid-var | awk '{ h = $6; if (init != 1) { min = h; max = h; init = 1; }; if (h > max) { max = h; }; if (h < min) { min = h; }; print $1 " " h " min=" min " max=" max; }' | tail -1 # digit blocks echo echo "INFO : analyze file (digit blocks): $f" cat $f | ./ipv6calc --print-iid-var | awk '{ h = $8; split(h, db, ","); for (i = 1; i <= 16; i++) { if (init[i] != 1) { min[i] = h; max[i] = h; init[i] = 1; }; if (db[i] > max[i]) { max[i] = db[i]; }; if (db[i] < min[i]) { min[i] = db[i]; }; if (db[i] > 0) { count[i]++; }; }; printf "%s ", $1; for (i = 1; i <= 16; i++) { printf "%d:%d/%d (%d) ", i, min[i], max[i], count[i]; }; printf "\n"; }' | tail -1 # digit amount echo echo "INFO : analyze file (digit amount): $f" cat $f | ./ipv6calc --print-iid-var | awk '{ h = $10; split(h, db, ","); for (i = 1; i <= 16; i++) { if (init[i] != 1) { min[i] = h; max[i] = h; init[i] = 1; }; if (db[i] > max[i]) { max[i] = db[i]; }; if (db[i] < min[i]) { min[i] = db[i]; }; if (max[i] > maxall || maxall == 0) { maxall = max[i]; }; if (db[i] > 0) { count[i]++; }; }; printf "%s ", $1; for (i = 1; i <= 16; i++) { printf "%d:%d/%d (%d) ", i-1, min[i], max[i], count[i]; }; printf "[maxall:%d]\n", maxall; }' | tail -1 # digit delta echo echo "INFO : analyze file (digit delta): $f" cat $f | ./ipv6calc --print-iid-var | awk '{ h = $12; split(h, db, ","); for (i = 1; i <= 31; i++) { if (init[i] != 1) { min[i] = h; max[i] = h; init[i] = 1; }; if (db[i] > max[i]) { max[i] = db[i]; }; if (db[i] < min[i]) { min[i] = db[i]; }; if (max[i] > maxall || maxall == 0) { maxall = max[i]; }; if (db[i] > 0) { count[i]++; }; }; printf "%s ", $1; for (i = 1; i <= 31; i++) { printf "%d:%d/%d (%d) ", i-1, min[i], max[i], count[i]; }; printf "[maxall:%d] ", maxall; #printf "Digit-Delta-Min: "; for (i = 1; i <= 31; i++) { printf "%2d", min[i]; if (i < 31) { printf ","; }; }; printf "|"; #printf "Digit-Delta-Max: "; for (i = 1; i <= 31; i++) { printf "%2d", max[i]; if (i < 31) { printf ","; }; }; printf "\n"; }' | tail -1 # digitdeltaamount echo echo "INFO : analyze file (digit delta amount): $f" >&2 cat $f | ./ipv6calc --print-iid-var | awk '{ h = $14; if (init != 1) { min = h; max = h; init = 1; }; if (h > max) { max = h; }; if (h < min) { min = h; }; print $1 " " h " min=" min " max=" max; }' | tail -1 done } case $1 in generate) generate exit 0 ;; analyze) analyze $2 $3 exit 0 ;; analyze-hexvar) analyze-hexvar $2 $3 $4 exit 0 ;; analyze-digitblock) analyze-digitblock $2 $3 $4 $5 exit 0 ;; analyze-digitamount) analyze-digitamount $2 $3 $4 $5 exit 0 ;; analyze-digitdelta) analyze-digitdelta $2 $3 $4 $5 exit 0 ;; *) echo "Usage: `basename $0` generate|analyze " exit 1 ;; esac ipv6calc-1.0.0/ipv6calc/test_scenarios.sh000077500000000000000000000610701312366535500203270ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : test_scenarios.sh # Version : $Id: bc24262d4c239d03597fa161bcc86fab08180ee1 $ # Copyright : 2001-2017 by Peter Bieringer # License : GPLv2 # # Test patterns for ipv6calc (functions only) # Test Scenarios for autodetection "good case" testscenarios_auto_good() { cat <0wv%Yp base85 # RFC 5952 2.x 2001:db8:0:0:1:0:0:1 ipv6addr 2001:0db8:0:0:1:0:0:1 ipv6addr 2001:db8::1:0:0:1 ipv6addr 2001:db8::0:1:0:0:1 ipv6addr 2001:0db8::1:0:0:1 ipv6addr 2001:db8:0:0:1::1 ipv6addr 2001:db8:0000:0:1::1 ipv6addr 2001:DB8:0:0:1::1 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:001 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:01 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd::1 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:0:1 ipv6addr 2001:db8:0:0:0::1 ipv6addr 2001:db8:0:0::1 ipv6addr 2001:db8:0::1 ipv6addr 2001:db8::1 ipv6addr 2001:db8::aaaa:0:0:1 ipv6addr 2001:db8:0:0:aaaa::1 ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:aaaa ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:AAAA ipv6addr 2001:db8:aaaa:bbbb:cccc:dddd:eeee:AaAa ipv6addr 64:ff9b::192.0.2.33 ipv6addr fe80::1%eth0 ipv6addr fe80--1.IPV6-LITERAL.NET ipv6literal 2001-db8-0-0-0-0-0-1.ipv6-literal.net ipv6literal 2001-0db8-0000-0000-0000-0000-0000-0001.ipv6-literal.net ipv6literal 2001-db8--1.ipv6-literal.net ipv6literal fe80--218-8bff-fe17-a226s4.ipv6-literal.net ipv6literal END } # Test Scenarios for reserved IPv4 addresses (RFC 5735) https://en.wikipedia.org/wiki/Reserved_IP_addresses testscenarios_ipv4_reserved() { cat < # # Test patterns for ipv6calc showinfo verbose=0 grepopt="-q" while getopts "Vh\?" opt; do case $opt in V) verbose=1 grepopt="" ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done source ./test_scenarios.sh getexamples() { cat </dev/null retval=$? fi if [ $retval -ne 0 ]; then [ "$verbose" = "1" ] || echo echo "ERROR : $comment: $address" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo || true [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" # Test reserved IPv4 addresses test="test IPv4 reserved" echo "INFO : $test" testscenarios_ipv4_reserved | while read address rfc rest; do [ "$verbose" = "1" ] && echo "INFO : test $rfc: $address" case $rfc in RFC*) if ! ./ipv6calc -q -i -m $address | grep ^IPV4_REGISTRY | grep $grepopt "$rfc"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result for $address (should: $rfc)" ./ipv6calc -q -i -m $address | grep ^IPV4_REGISTRY exit 1 fi ;; noRFC) if ./ipv6calc -q -i -m $address | grep ^IPV4_REGISTRY | grep $grepopt "RFC"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result for $address (should not contain RFC token)" ./ipv6calc -q -i -m $address | grep ^IPV4_REGISTRY exit 1 fi ;; esac [ "$verbose" = "1" ] && echo || true [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" # Test reserved IPv6 addresses test="test IPv6 reserved" echo "INFO : $test" testscenarios_ipv6_reserved | while read address rfc rest; do [ "$verbose" = "1" ] && echo "INFO : test $rfc: $address" case $rfc in RFC*) if ! ./ipv6calc -q -i -m $address | grep ^IPV6_REGISTRY | grep $grepopt "$rfc"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result (should: $rfc)" ./ipv6calc -q -i -m $address | grep ^IPV6_REGISTRY exit 1 fi ;; noRFC) if ./ipv6calc -q -i -m $address | grep ^IPV6_REGISTRY | grep $grepopt "RFC"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result (should not contain RFC token)" ./ipv6calc -q -i -m $address | grep ^IPV6_REGISTRY exit 1 fi ;; esac [ "$verbose" = "1" ] && echo || true [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" # Test showinfo output ipv6calc_has_db_ieee=0 if ./ipv6calc -v 2>&1 | grep -qw DB_IEEE; then ipv6calc_has_db_ieee=1 fi ipv6calc_has_db_ipv4=0 if ./ipv6calc -v 2>&1 | grep -qw DB_IPV4_REG; then ipv6calc_has_db_ipv4=1 fi ipv6calc_has_db_ipv6=0 if ./ipv6calc -v 2>&1 | grep -qw DB_IPV6_REG; then ipv6calc_has_db_ipv6=1 fi test="test showinfo" echo "INFO : $test" testscenarios_showinfo | while read address output_options; do # separate options from output output=${output_options/\|*/} options=${output_options/*\|/} [ "$options" = "$output" ] && options="" if echo "$output" | grep -q "^OUI="; then if [ $ipv6calc_has_db_ieee -ne 1 ]; then [ "$verbose" = "1" ] || echo echo "NOTICE: test $address for $output SKIPPED (no DB_IEEE compiled in)" continue fi fi if echo "$output" | grep -q "^IPV4_REGISTRY="; then if [ $ipv6calc_has_db_ipv4 -ne 1 ]; then [ "$verbose" = "1" ] || echo echo "NOTICE: test: $address for $output SKIPPED (no DB_IPV4_REG compiled in)" continue fi fi if echo "$output" | grep -q "^IPV6_REGISTRY="; then if [ $ipv6calc_has_db_ipv6 -ne 1 ]; then [ "$verbose" = "1" ] || echo echo "NOTICE: test: $address for $output SKIPPED (no DB_IPV6_REG compiled in)" continue fi fi output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" [ "$verbose" = "1" ] && echo "INFO: test: $address for $output ($options) (escaped: $output_escaped)" if ! ./ipv6calc $options -q -i -m $address | grep $grepopt "^$output_escaped$"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result for $address ($output_escaped)" ./ipv6calc $options -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo || true [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" if [ "$1" = "minimal" ]; then echo "NOTICE: GeoIP/IP2Location/DBIP tests skipped (option 'minimal' used)" exit 0 fi test="run GeoIP tests" if ./ipv6calc -q -v 2>&1 | grep -qw GeoIP; then echo "INFO : $test" getexamples_GeoIP | while read address; do [ "$verbose" = "1" ] && echo "INFO : run GeoIP showinfo on: $address" if ./ipv6calc -q -i -m $address | grep $grepopt ^GEOIP; then true else if echo "$address" | grep -q ":"; then if ./ipv6calc -q -v 2>&1 | grep -v -q "GeoIPv6"; then [ "$verbose" = "1" ] || echo echo "Expected result (missing GEOIP) because of missing IPv6 support in GeoIP)" true else [ "$verbose" = "1" ] || echo echo "Unexpected result (missing GEOIP): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi else [ "$verbose" = "1" ] || echo echo "Unexpected result (missing GEOIP): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run GeoIP showinfo tests" echo "INFO : $test" testscenarios_showinfo_geoip | while read address output requirement; do if echo "$output" | grep -q "^OUI="; then if [ $ipv6calc_has_db_ieee -ne 1 ]; then [ "$verbose" = "1" ] && echo "Test: $address for $output SKIPPED (no DB_IEEE compiled in)" continue fi fi if [ -n "$requirement" ]; then if ./ipv6calc -v 2>&1 | grep -q -w "$requirement"; then true else [ "$verbose" = "1" ] && echo "Test: $address for $output SKIPPED (no $requirement compiled in)" continue fi fi [ "$verbose" = "1" ] && echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" if ! ./ipv6calc -q -i -m $address | grep $grepopt "^$output_escaped$"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result for $address ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" else echo "NOTICE: $test SKIPPED" fi test="run IP2Location tests" if ./ipv6calc -q -v 2>&1 | grep -qw IP2Location; then echo "INFO : $test" getexamples_IP2Location | while read address; do [ "$verbose" = "1" ] && echo "Run IP2Location IPv4 showinfo on: $address" if ./ipv6calc -q -i -m $address | egrep -v '=This (record|parameter) ' | grep $grepopt ^IP2LOCATION; then true else [ "$verbose" = "1" ] || echo echo "Unexpected result (missing IP2LOCATION): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run IP2Location showinfo tests" echo "INFO : $test" testscenarios_showinfo_ip2location | while read address output; do if echo "$output" | grep -q "^OUI="; then if [ $ipv6calc_has_db_ieee -ne 1 ]; then [ "$verbose" = "1" ] && echo "Test: $address for $output SKIPPED (no DB_IEEE compiled in)" continue fi fi [ "$verbose" = "1" ] && echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" if ! ./ipv6calc -q -i -m $address | grep $grepopt "^$output_escaped$"; then echo "ERROR: unexpected result for address $address ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" if ./ipv6calc -q -v 2>&1 | grep -qw IP2Location6; then test="run IP2Location IPv6 tests" echo "INFO : $test" getexamples_IP2Location6 | while read address; do [ "$verbose" = "1" ] && echo "Run IP2Location IPv6 showinfo on: $address" if ./ipv6calc -q -i -m $address | egrep -v '=This (record|parameter) ' | grep $grepopt ^IP2LOCATION; then true else echo "Unexpected result (missing IP2LOCATION): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run IP2Location IPv6 showinfo tests" echo "INFO : $test" testscenarios_showinfo_ip2location6 | while read address output; do if echo "$output" | grep -q "^OUI="; then if [ $ipv6calc_has_db_ieee -ne 1 ]; then echo "Test: $address for $output SKIPPED (no DB_IEEE compiled in)" continue fi fi [ "$verbose" = "1" ] && echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" if ! ./ipv6calc -q -i -m $address | grep $grepopt "^$output_escaped$"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result for $address ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" fi else echo "NOTICE: $test SKIPPED" fi test="run db-ip.com IPv4 tests" if ./ipv6calc -q -v 2>&1 | grep -qw DBIPv4; then echo "INFO : $test" getexamples_DBIPv4 | while read address; do [ "$verbose" = "1" ] && echo "Run IP2Location showinfo on: $address" if ./ipv6calc -q -i -m $address | egrep -v '=This (record|parameter) ' | grep $grepopt ^DBIP; then true else [ "$verbose" = "1" ] || echo echo "Unexpected result (missing DBIP): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run db-ip.com IPv4 showinfo tests" echo "INFO : $test" testscenarios_showinfo_DBIPv4 | while read address output; do if echo "$output" | grep -q "^OUI="; then if [ $ipv6calc_has_db_ieee -ne 1 ]; then [ "$verbose" = "1" ] && echo "Test: $address for $output SKIPPED (no DB_IEEE compiled in)" continue fi fi [ "$verbose" = "1" ] && echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" if ! ./ipv6calc -q -i -m $address | grep $grepopt "^$output_escaped$"; then echo "ERROR: unexpected result ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" else echo "NOTICE: $test SKIPPED" fi test="run db-ip.com IPv6 tests" if ./ipv6calc -q -v 2>&1 | grep -qw DBIPv6; then echo "INFO : $test" getexamples_DBIPv6 | while read address; do [ "$verbose" = "1" ] && echo "Run IP2Location showinfo on: $address" if ./ipv6calc -q -i -m $address | egrep -v '=This (record|parameter) ' | grep $grepopt ^DBIP; then true else [ "$verbose" = "1" ] || echo echo "Unexpected result (missing DBIP): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" test="run db-ip.com IPv6 showinfo tests" echo "INFO : $test" testscenarios_showinfo_DBIPv6 | while read address output; do if echo "$output" | grep -q "^OUI="; then if [ $ipv6calc_has_db_ieee -ne 1 ]; then echo "Test: $address for $output SKIPPED (no DB_IEEE compiled in)" continue fi fi [ "$verbose" = "1" ] && echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" if ! ./ipv6calc -q -i -m $address | grep $grepopt "^$output_escaped$"; then [ "$verbose" = "1" ] || echo echo "ERROR: unexpected result ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" else echo "NOTICE: $test SKIPPED" fi test="run special anon tests" if ./ipv6calc -v 2>&1 | grep -qw "ANON_KEEP-TYPE-ASN-CC"; then echo "INFO : $test" testscenarios_showinfo_anonymized_info | while IFS=";" read input options token result; do [ "$verbose" = "1" ] && echo -n "INFO : test: $options $input for $result: " output="`./ipv6calc -q $options -m -i $input`" case $token in key-word|key-no-word) key="${result/=*/}" word="${result/*=/}" ;; esac case $token in match) if echo "$output" | grep -q "^$result$"; then [ "$verbose" = "1" ] && echo "OK" else echo " ERROR" echo "$output" exit 1 fi ;; key-word) if echo "$output" | grep "^$key=" | grep $grepopt -w "$word"; then [ "$verbose" = "1" ] && echo " OK" else exit 1 fi ;; key-no-word) if ! echo "$output" | grep "^$key=" | grep $grepopt -w "$word"; then [ "$verbose" = "1" ] && echo " OK" else exit 1 fi ;; esac [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" else echo "NOTICE: $test SKIPPED" fi ipv6calc-1.0.0/ipv6calcweb/000077500000000000000000000000001312366535500154355ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6calcweb/Makefile.in000066400000000000000000000032731312366535500175070ustar00rootroot00000000000000# Project : ipv6calc/ipv6calcweb # File : Makefile # Version : $Id: 34e7ce9128298ffc246a4f9d000e816631dc227b $ # Copyright : 2002-2014 by Peter Bieringer # # Information: # Makefile for ipv6calcweb # all: ipv6calcweb ipv6calcweb: ipv6calcweb.cgi.in ./create_ipv6calcweb-cgi.sh update: install: distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6calcweb.cgi test: ${MAKE} ipv6calcweb pushd ../ipv6calc; ${MAKE}; popd # Pseudo random selected LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calcweb.sh 2001:200:1:ea::1 || exit 1 # www.hp.com LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calcweb.sh 15.200.30.23 || exit 1 # Pseudo random LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calcweb.sh 3ffe:831f:ce49:7601:8000:efff:af4a:86BF || exit 1 # RFC LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calcweb.sh :: || exit 1 # Form mode LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6calcweb_form.sh || exit 1 test-minimal: ${MAKE} test test-ldlibpath: ${MAKE} ipv6calcweb pushd ../ipv6calc; ${MAKE}; popd # Pseudo random selected LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calcweb.sh 2001:200:1:ea::1 || exit 1 # www.hp.com LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calcweb.sh 15.200.30.23 || exit 1 # Pseudo random LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calcweb.sh 3ffe:831f:ce49:7601:8000:efff:af4a:86BF || exit 1 # RFC LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calcweb.sh :: || exit 1 # Form mode LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6calcweb_form.sh || exit 1 ipv6calc-1.0.0/ipv6calcweb/README000066400000000000000000000005271312366535500163210ustar00rootroot00000000000000$Id: 8fdcdd545ef495d23c1967b8d3beddb24df589cb $ Known sites using this wrapper script [last check on]: http://ipv6-info.internet2.edu/ [2003-11-22] http://www.sixxs.net/tools/ipv6calc/ [2003-11-22] http://www.ipv6.bieringer.de/ [2003-11-22] http://ipv6.aerasec.de/index2.html.de [2003-11-22] Please report additional URLs, if you find one ipv6calc-1.0.0/ipv6calcweb/USAGE000066400000000000000000000004321312366535500162230ustar00rootroot00000000000000$Id: 5d07e4869a5e65ea990f39c2e6db01b38937b9c0 $ File: ipv6calcweb/ipv6calcweb.cgi 1) Enable SSI on your web server 2) Copy file to /cgi-bin directory 3) Adjust file settings 4) Include the CGI script like in a SHTML page. ipv6calc-1.0.0/ipv6calcweb/create_ipv6calcweb-cgi.sh000077500000000000000000000022011312366535500222570ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/ipv6calcweb # File : create_ipv6calcweb.sh # Version : $Id: f28f2051a69a3e3cb5ca304d47567df89d9372e2 $ # Copyright : 2013-2013 by Peter Bieringer # # Information: # create ipv6calcweb.cgi from ipv6calcweb.cgi.in # # check if [ ! -f ../config.h ]; then echo "ERROR : missing header file: ../config.h" exit 1 fi # get placeholders v="`cat ../config.h | grep -w PACKAGE_VERSION | awk '{ print $3 }' | sed 's/"//g'`" c="`cat ../config.h | grep -w COPYRIGHT_YEAR | awk '{ print $3 }' | sed 's/"//g'`" if [ -z "$v" ]; then echo "ERROR : can't retrieve version from config.h" exit 1 fi if [ -z "$c" ]; then echo "ERROR : can't retrieve copyright year from config.h" exit 1 fi cp ipv6calcweb.cgi.in ipv6calcweb.cgi || exit 1 # replace placeholders perl -pi -e "s/\@PACKAGE_VERSION\@/$v/" ipv6calcweb.cgi || exit 1 perl -pi -e "s/\@COPYRIGHT_YEAR\@/$c/" ipv6calcweb.cgi || exit 1 if [ ! -x ipv6calcweb.cgi ]; then chmod u+x ipv6calcweb.cgi fi if [ -f ipv6calcweb.cgi ]; then touch ipv6calcweb.cgi -r ipv6calcweb.cgi.in fi echo "INFO : successfully created: ipv6calcweb.cgi" ipv6calc-1.0.0/ipv6calcweb/fix-cgi-in.sh000077500000000000000000000003461312366535500177310ustar00rootroot00000000000000#!/bin/bash perl -pi -e 's/^(my \$program_version).*$/\1 = "\@PACKAGE_VERSION\@";/' ipv6calcweb.cgi.in perl -pi -e 's/^(my \$program_copyright).*$/\1 = "(P) & (C) 2002-\@COPYRIGHT_YEAR\@ by Peter Bieringer";/' ipv6calcweb.cgi.in ipv6calc-1.0.0/ipv6calcweb/ipv6calcweb.cgi.in000077500000000000000000002177621312366535500207550ustar00rootroot00000000000000#!/usr/bin/perl -w -T # # Project : ipv6calc/ip6calcweb # File : ipv6calcweb.cgi # Version : $Id: e50732519e3e61678ed39a560bc0886926a62926 $ # Copyright : 2002-2017 by Peter Bieringer # License : GPL, but copyright always has to be displayed in output # # Simple Perl web interface and security wrapper # It's too dangerous to call the binary 'ipv6calc' directly... # # Todo: more functions by query string... ### Uses environment variables: ## Created by http server before invoking CGI: # REMOTE_ADDR : remote client address # REMOTE_HOST : remote client name (DNS resolved) # HTTP_USER_AGENT: user agent string # SERVER_ADDR : local server address # SERVER_NAME : local server name (by http server config) # SERVER_PROTOCOL: check for INCLUDED (called by SSI) # HTTP_X_FORWARDED_FOR: added by passing proxies (if not disabled on proxy) # HTTP_VIA : added by passing proxies (if not disabled on proxy) # QUERY_STRING : for language setting # Currently supported: # Always: # "lang=$lang" with $lang in @supported_languages # "format=$format" with $format in @supported_formats # Mode=mixed/form # "input=$input" # "token=$token" ## program controls by httpd's setenv # HTTP_IPV6CALCWEB_MODE : info (default), form (display a form for user input), mixed (both) # HTTP_IPV6CALCWEB_INFO_SERVER : 0 (default), 1 (show information about server) # HTTP_IPV6CALCWEB_DEBUG : 0 (default) # HTTP_IPV6CALCWEB_BIN_IPV6CALC : path to ipv6calc binary (optional) # HTTP_IPV6CALCWEB_DB_IP2LOCATION_DIR : IP2Location database directory (optional) # HTTP_IPV6CALCWEB_DB_IP2LOCATION_LIB : IP2Location library name (optional in dyn-load support) # HTTP_IPV6CALCWEB_DB_GEOIP_DIR : GeoIP database directory (optional) # HTTP_IPV6CALCWEB_DB_GEOIP_LIB : GeoIP library name (optional in dyn-load support) # HTTP_IPV6CALCWEB_DB_DBIP_DIR : db-ip.com database directory (optional) # HTTP_IPV6CALCWEB_DB_EXTERNAL_DIR : external database directory (optional) # HTTP_IPV6CALCWEB_OUTPUT_FORMAT : html (default if SERVER_PROTOCOL=INCLUDED), htmlfull (default), text, textkeyvalue # HTTP_IPV6CALCWEB_OUTPUT_FORMAT_HTML_DB: sequential (default), subcolumns ## special output format "textkeyvalue" # INFO__OUTPUTVERSION="1" : current output format version # (more to be documented) ## general use strict; use URI::Escape; use HTML::Entities; use POSIX; use warnings; ## Defines # Program information my $program_name = "ipv6calcweb.cgi"; my $program_copyright = "(P) & (C) 2002-@COPYRIGHT_YEAR@ by Peter Bieringer"; my $program_version = "@PACKAGE_VERSION@"; # required output version of ipv6calc (introduced in 0.60.0) my $program_required_ipv6calc_output_version = 2; ## Prototyping sub logging($$); ## defines for Anti-DoS (form or mixed mode only) my $tokenhash; my $tokenhash_verify; my $tokentime; my $tokenhash_found = 0; my $tokentime_found = 0; my $salt; my $time_range_valid = 300; # seconds my $time_range_min = 5; # seconds my $mask_remote_address = 0; # disabled (0), enabled (1) my $returncode = 0; my $mode_db_entries_in_subcolumns = 0; my $db_columns = 0; # currently only for internal use (TODO: make switchable by environment variables) my $disable_db_GeoIP = 0; my $disable_db_IP2Location = 0; my $disable_db_DBIP = 0; my $disable_db_External = 0; ## Debug value my $debug = 0; #$debug |= 0x02; #$debug |= 0x10; #$debug = 0xffff; #$debug = 0x01; # debug | 0x0001: print ipv6calc command # debug | 0x0002: print result of find_file to stderr # debug | 0x0004: print result of find_dir to stderr # debug | 0x0008: print environment handling to stderr # debug | 0x0010: print raw ipv6calc output # debug | 0x0020: db info parser # debug | 0x0040: print form input/token to stderr # debug | 0x0080: print environment to stderr # debug | 0x0100: print Anti-DoS token infos to stderr # debug | 0x1000: skip Anti-DoS sleep # debug | 0x2000: print lat/long URL infos to stderr # debug | 0x8000: print feature token hash if ( defined $ENV{'HTTP_IPV6CALCWEB_DEBUG'} ) { if ($ENV{'HTTP_IPV6CALCWEB_DEBUG'} =~ /^[0-9]+$/) { $debug = $ENV{'HTTP_IPV6CALCWEB_DEBUG'}; } elsif ($ENV{'HTTP_IPV6CALCWEB_DEBUG'} =~ /^0x[0-9a-f]+$/oi) { $debug = hex($ENV{'HTTP_IPV6CALCWEB_DEBUG'}); }; }; ## debug output if ($debug & 0x80) { foreach my $key (sort keys %ENV) { logging("DEBUG", "ENV: " . $key . "=" . $ENV{$key}); }; } ## Program mode my $mode = "info"; # default if ( defined $ENV{'HTTP_IPV6CALCWEB_MODE'} ) { if ($ENV{'HTTP_IPV6CALCWEB_MODE'} eq "form") { $mode = "form"; } elsif ($ENV{'HTTP_IPV6CALCWEB_MODE'} eq "mixed") { $mode = "mixed"; }; }; if ($mode eq "form" || $mode eq "mixed") { use Digest::SHA1; use Digest::MD5; }; # List of deefault location of files (first existing one would be choosen) my @list_bin_ipv6calc = ( "../ipv6calc/ipv6calc", "/usr/bin/ipv6calc", "/bin/ipv6calc", ); my @list_database_ip2location_dir = ( "/var/local/share/IP2Location", "/usr/share/IP2Location", ); my @list_database_geoip_dir = ( "/var/local/share/GeoIP", "/usr/share/GeoIP", ); my @list_database_dbip_dir = ( "/var/local/share/DBIP", "/usr/share/DBIP", ); my @list_database_external_dir = ( "/var/local/share/ipv6calc/db", "/usr/share/ipv6calc/db", ); sub find_file(@) { foreach my $file (@_) { if (-e $file) { logging("DEBUG", "find_file selected: $file") if ($debug & 0x02); return ($file); }; }; return undef; }; sub find_dir(@) { foreach my $dir (@_) { if (-d $dir) { logging("DEBUG", "find_dir selected: $dir") if ($debug & 0x04); return ($dir); }; }; return undef; }; # URLs my %urls = ( "IP2LOCATION" => "http://www.ip2location.com", "GEOIP" => "http://www.maxmind.com", "DBIP" => "http://www.db-ip.com", ); # Base URL for RFCs my $url_rfc = "https://tools.ietf.org/html/"; # Base URL for LISP my $url_lisp = "http://www.lisp4.net/lisp-site/"; # Base URL for GeoName service my $url_geoname_by_id = "http://api.geonames.org/get?geonameId=#GEONAME_ID#&username=demo"; # Base URL for Location Service my $url_openstreetmap_by_lat_lon = "http://www.openstreetmap.org/?mlat=#LATITUDE#&mlon=#LONGITUDE#&zoom=5"; # Whois server urls my %url_whoisservers = ( 'RIPENCC' => { 'ipv4' => "http://www.ripe.net/perl/whois?searchtext=", 'ipv6' => "http://www.ripe.net/perl/whois?searchtext=", }, 'ARIN' => { 'ipv4' => "http://whois.arin.net/rest/ip/", 'ipv6' => "http://whois.arin.net/rest/ip/", }, 'APNIC' => { 'ipv4' => "http://www.apnic.net/apnic-bin/whois.pl?searchtext=", 'ipv6' => "http://www.apnic.net/apnic-bin/whois.pl?searchtext=", }, 'LACNIC' => { 'ipv4' => "http://lacnic.net/cgi-bin/lacnic/whois?query=", 'ipv6' => "http://lacnic.net/cgi-bin/lacnic/whois?query=", }, 'AFRINIC' => { 'ipv4' => "http://www.afrinic.net/cgi-bin/whois?searchtext=", 'ipv6' => "http://www.afrinic.net/cgi-bin/whois?searchtext=", }, 'IANA' => { 'ipv4' => "", 'ipv6' => "", }, 'unknown' => { 'ipv4' => "", 'ipv6' => "", } ); #my $lang_default = "de"; my $lang_default = "en"; my $lang = $lang_default; ## Output format: text, html, htmlfull #my $outputformat = "text"; #my $outputformat = "html"; my $outputformat = "htmlfull"; # switched to "html", if called by SSI ## Output format for databases: sequential, subcolumns my $outputformat_html_db = "sequential"; # default ## Output type # full = with description # simple = without description my $outputtype = "full"; #my $outputtype = "simple"; ## Output format "textkeyvalue" version my $outputversion_textkeyvalue = "1"; ## Select output # skip server = 1 my $skip_server = 1; if ( defined $ENV{'HTTP_IPV6CALCWEB_INFO_SERVER'} ) { if ($ENV{'HTTP_IPV6CALCWEB_INFO_SERVER'} eq "1") { $skip_server = 0; }; }; ## Text # Language my @supported_languages = ( "de", "en"); # Format my @supported_formats = ( "text", "html", "textkeyvalue"); # Tokens to be formatted using my @format_tt = ( "EUI48", "EUI64", "IPV6", "IPV4", "SLA", "IID", "IPV4_6TO4", "IPV4_ANON", "IPV6_ANON", "HTTP_X_FORWARDED_FOR" ); my %text = ( 'EUI48' => { 'de' => "EUI-48 Identifizierungsnummer (MAC Adresse)", 'en' => "EUI-48 identifier (MAC address)", }, 'EUI48_SCOPE' => { 'de' => "EUI-48 Art", 'en' => "EUI-48 scope", }, 'EUI48_TYPE' => { 'de' => "EUI-48 Adresstyp", 'en' => "EUI-48 address type", }, 'EUI64' => { 'de' => "EUI-64 Identifizierungsnummer", 'en' => "EUI-64 identifier", }, 'EUI64_SCOPE' => { 'de' => "EUI-64 Art", 'en' => "EUI-64 scope", }, 'IPV6' => { 'de' => "IPv6 Adresse", 'en' => "IPv6 address", }, 'IPV6_ANON' => { 'de' => "Anonymisierte IPv6 Adresse", 'en' => "Anonymized IPv6 address", }, 'IPV6_COUNTRYCODE' => { 'de' => "Ländercode der IPv6 Adresse", 'en' => "Country Code of IPv6 address", }, 'IPV6_COUNTRYCODE_SOURCE' => { 'de' => "Quelle des Ländercode der IPv6 Adresse", 'en' => "Source of Country Code of IPv6 address", }, 'IPV6_AS_NUM' => { 'de' => "Autonomous System Nummer der IPv6 Adresse", 'en' => "Autonomous System Number of IPv6 address", }, 'IPV6_AS_TEXT' => { 'de' => "Autonomous System der IPv6 Adresse", 'en' => "Autonomous System of IPv6 address", }, 'IPV4' => { 'de' => "IPv4 Adresse", 'en' => "IPv4 address", }, 'IPV4_ANON' => { 'de' => "Anonymisierte IPv4 Adresse", 'en' => "Anonymized IPv4 address", }, 'IPV4_REGISTRY' => { 'de' => "Registry der IPv4 Adresse", 'en' => "Registry of IPv4 address", }, 'IPV6_REGISTRY' => { 'de' => "Registry der IPv6 Adresse", 'en' => "Registry of IPv6 address", }, 'IPV4_SOURCE' => { 'de' => "Quelle der IPv4 Adresse", 'en' => "Source of IPv4 address", }, 'IPV4_COUNTRYCODE' => { 'de' => "Ländercode der IPv4 Adresse", 'en' => "Country Code of IPv4 address", }, 'IPV4_COUNTRYCODE_SOURCE' => { 'de' => "Quelle des Ländercode der IPv4 Adresse", 'en' => "Source of Country Code of IPv4 address", }, 'IPV4_AS_NUM' => { 'de' => "Autonomous System Nummer der IPv4 Adresse", 'en' => "Autonomous System Number of IPv4 address", }, 'IPV4_AS_TEXT' => { 'de' => "Autonomous System der IPv4 Adresse", 'en' => "Autonomous System of IPv4 address", }, 'TEREDO_PORT_CLIENT' => { 'de' => "UDP-Port des Teredo Clients (nach NAT)", 'en' => "UDP port of Teredo client (outside NAT)", }, 'TEREDO_IPV4_SERVER' => { 'de' => "IPv4-Adresse des Teredo Servers", 'en' => "IPv4 address of Teredo Server", }, 'OUI' => { 'de' => "Hersteller-Identifizierung der Netzwerkarte", 'en' => "Vendor identification of network interface card", }, 'INPUT' => { 'de' => "Ihre Eingabe", 'en' => "Your input", }, 'REMOTE' => { 'de' => "Ihr Client", 'en' => "Your client", }, 'SERVER' => { 'de' => "Dieser Server", 'en' => "This server", }, 'SLA' => { 'de' => "Subnetz ID", 'en' => "Subnet ID", }, 'IIDSCOPE' => { 'de' => "Art der Interface-Identifierungsnummer", 'en' => "Scope of interface identifier", }, 'IID' => { 'de' => "Interface-Identifierungsnummer", 'en' => "Interface identifier", }, 'TYPE' => { 'de' => "Adresstyp", 'en' => "Address type", }, 'IPV6_TYPE' => { 'de' => "IPv6 Adresstyp", 'en' => "IPv6 Address type", }, 'IPV4_TYPE' => { 'de' => "IPv4 Adresstyp", 'en' => "IPv4 Address type", }, 'NAME' => { 'de' => "Reverse DNS Aufloesung", 'en' => "Reverse DNS resolution", }, 'RESULT' => { 'de' => "Ergebnis", 'en' => "Result", }, 'IPV6_PREFIXLENGTH' => { 'de' => "IPv6 Praefixlaenge", 'en' => "IPv6 prefix length", }, 'IPV4_PREFIXLENGTH' => { 'de' => "IPv4 Praefixlaenge", 'en' => "IPv4 prefix length", }, 'title' => { 'de' => "Adresstyp Information", 'en' => "Addresstype information", }, 'nodata' => { 'de' => "Keine Daten verfuegbar", 'en' => "No data availabe", }, 'generated' => { 'de' => "Generiert durch", 'en' => "Generated by", }, 'at' => { 'de' => "um", 'en' => "at", }, 'powered' => { 'de' => "Unterstuetzt durch", 'en' => "Powered by", }, 'entries' => { 'de' => "Eintraege", 'en' => "entries", }, 'database' => { 'de' => "Datenbank", 'en' => "database", }, 'version' => { 'de' => "Version", 'en' => "version", }, 'clear' => { 'de' => "loeschen", 'en' => "clear", }, 'cancel' => { 'de' => "abbrechen", 'en' => "cancel", }, 'Address' => { 'de' => "Adresse", 'en' => "Address", }, 'send' => { 'de' => "absenden", 'en' => "send", }, 'HTTP_USER_AGENT' => { 'de' => "Browseridentifikation", 'en' => "User agent identification", }, 'HTTP_X_FORWARDED_FOR' => { 'de' => "Client hinter Proxy", 'en' => "Client behind proxy", }, 'HTTP_VIA' => { 'de' => "Passierender Proxy", 'en' => "Passing proxy", }, 'PROXY' => { 'de' => "Passierender Proxy", 'en' => "Passing proxy", }, 'PROXY_INFO' => { 'de' => "Proxy Information", 'en' => "Proxy Information", }, 'IP2LOCATION_COUNTRY_SHORT' => { 'de' => "IP2Location Laenderkennung", 'en' => "IP2Location country code", }, 'IP2LOCATION_COUNTRY_LONG' => { 'de' => "IP2Location Land", 'en' => "IP2Location country", }, 'IP2LOCATION_REGION' => { 'de' => "IP2Location Region", 'en' => "IP2Location region", }, 'IP2LOCATION_CITY' => { 'de' => "IP2Location Stadt", 'en' => "IP2Location city", }, 'IP2LOCATION_ISP' => { 'de' => "IP2Location ISP", 'en' => "IP2Location ISP", }, 'IP2LOCATION_LATITUDE' => { 'de' => "IP2Location Breitengrad", 'en' => "IP2Location latitude", }, 'IP2LOCATION_LONGITUDE' => { 'de' => "IP2Location Laengengrad", 'en' => "IP2Location longitude", }, 'IP2LOCATION_DOMAIN' => { 'de' => "IP2Location Domain", 'en' => "IP2Location domain", }, 'IP2LOCATION_ZIPCODE' => { 'de' => "IP2Location Postleitzahl", 'en' => "IP2Location ZIP code", }, 'IP2LOCATION_AREACODE' => { 'de' => "IP2Location Area-Code", 'en' => "IP2Location Area Code", }, 'IP2LOCATION_TIMEZONE' => { 'de' => "IP2Location Zeitzone", 'en' => "IP2Location Time Zone", }, 'IP2LOCATION_NETSPEED' => { 'de' => "IP2Location Netzgeschwindigkeit", 'en' => "IP2Location Net Speed", }, 'IP2LOCATION_WEATHERSTATIONNAME' => { 'de' => "IP2Location Name der Wetterstation", 'en' => "IP2Location Weather Station Name", }, 'IP2LOCATION_WEATHERSTATIONCODE' => { 'de' => "IP2Location Code der Wetterstation", 'en' => "IP2Location Weather Station Code", }, 'IP2LOCATION_IDDCODE' => { 'de' => "IP2Location Landesvorwahl", 'en' => "IP2Location Internation Direct Dialing", }, 'IP2LOCATION_ELEVATION' => { 'de' => "IP2Location Hoehe ueber Meeresspiegel [m]", 'en' => "IP2Location High above Sealevel [m]", }, 'IP2LOCATION_USAGETYPE' => { 'de' => "IP2Location Art der Benutzung", 'en' => "IP2Location Usage Type Classification", }, 'IP2LOCATION_MOBILEBRAND' => { 'de' => "IP2Location Mobile Brand", 'en' => "IP2Location Mobile Brand", }, 'IP2LOCATION_MNC' => { 'de' => "IP2Location Mobile Network Code", 'en' => "IP2Location Mobile Network Code", }, 'IP2LOCATION_MCC' => { 'de' => "IP2Location Mobile Country Code", 'en' => "IP2Location Mobile Country Code", }, 'IP2LOCATION_DATABASE_INFO' => { 'de' => "IP2Location Datenbank-Information", 'en' => "IP2Location database information", }, 'IP2LOCATION_DATABASE_INFO_IPV4' => { 'de' => "IP2Location IPv4 Datenbank-Information", 'en' => "IP2Location IPv4 database information", }, 'IP2LOCATION_DATABASE_INFO_IPV6' => { 'de' => "IP2Location IPv6 Datenbank-Information", 'en' => "IP2Location IPv6 database information", }, 'GEOIP_COUNTRY_SHORT' => { 'de' => "GeoIP Laenderkennung", 'en' => "GeoIP country code", }, 'GEOIP_COUNTRY_LONG' => { 'de' => "GeoIP Land", 'en' => "GeoIP country", }, 'GEOIP_REGION' => { 'de' => "GeoIP Region", 'en' => "GeoIP region", }, 'GEOIP_CITY' => { 'de' => "GeoIP Stadt", 'en' => "GeoIP city", }, 'GEOIP_LATITUDE' => { 'de' => "GeoIP Breitengrad", 'en' => "GeoIP latitude", }, 'GEOIP_LONGITUDE' => { 'de' => "GeoIP Laengengrad", 'en' => "GeoIP longitude", }, 'GEOIP_ZIPCODE' => { 'de' => "GeoIP Postleitzahl", 'en' => "GeoIP ZIP code", }, 'GEOIP_DMACODE' => { 'de' => "GeoIP DMA Code", 'en' => "GeoIP DMA Code", }, 'GEOIP_AREACODE' => { 'de' => "GeoIP Area-Code", 'en' => "GeoIP Area Code", }, 'GEOIP_CONTINENTCODE' => { 'de' => "GeoIP Kontinent-Code", 'en' => "GeoIP Continent Code", }, 'GEOIP_DATABASE_INFO_IPV4' => { 'de' => "GeoIP IPv4 Datenbank-Information", 'en' => "GeoIP IPv4 database information", }, 'GEOIP_DATABASE_INFO_IPV6' => { 'de' => "GeoIP IPv6 Datenbank-Information", 'en' => "GeoIP IPv6 database information", }, 'GEOIP_DATABASE_INFO' => { 'de' => "GeoIP Datenbank-Information", 'en' => "GeoIP database information", }, 'GEOIP_AS_TEXT' => { 'de' => "Autonomous System der IP Adresse", 'en' => "Autonomous System of IP address", }, 'DBIP_COUNTRY_SHORT' => { 'de' => "db-ip.com Laenderkennung", 'en' => "db-ip.com country code", }, 'DBIP_REGION' => { 'de' => "db-ip.com Region", 'en' => "db-ip.com region", }, 'DBIP_CITY' => { 'de' => "db-ip.com Stadt", 'en' => "db-ip.com city", }, 'DBIP_DISTRICT' => { 'de' => "db-ip.com Bezirk", 'en' => "db-ip.com district", }, 'DBIP_DISTRICT' => { 'de' => "db-ip.com Bezirk", 'en' => "db-ip.com district", }, 'DBIP_ZIPCODE' => { 'de' => "db-ip.com Postleitzahl", 'en' => "db-ip.com ZIP code", }, 'DBIP_TIMEZONE' => { 'de' => "db-ip.com Zeitzone", 'en' => "db-ip.com Time Zone", }, 'DBIP_TIMEZONE_NAME' => { 'de' => "db-ip.com Zeitzonen Name", 'en' => "db-ip.com Time Zone Name", }, 'DBIP_NETSPEED' => { 'de' => "db-ip.com Netzgeschwindigkeit", 'en' => "db-ip.com Net Speed", }, 'DBIP_LATITUDE' => { 'de' => "db-ip.com Breitengrad", 'en' => "db-ip.com latitude", }, 'DBIP_LONGITUDE' => { 'de' => "db-ip.com Laengengrad", 'en' => "db-ip.com longitude", }, 'DBIP_ISP' => { 'de' => "db-ip.com ISP", 'en' => "db-ip.com ISP", }, 'DBIP_GEONAME_ID' => { 'de' => "db-ip.com GeoName ID", 'en' => "db-ip.com GeoName ID", }, 'DBIP_ORGNAME' => { 'de' => "db-ip.com Organisation", 'en' => "db-ip.com Organization", }, 'EXTERNAL_COUNTRY_SHORT' => { 'de' => "External DB Laenderkennung", 'en' => "External DB country code", }, 'EXTERNAL_DATABASE_INFO' => { 'de' => "External Datenbank-Information", 'en' => "External database information", }, 'BUILTIN_DATABASE_INFO' => { 'de' => "Eingebaute Datenbank-Information", 'en' => "BuiltIn database information", }, 'SETTINGS_ANON' => { 'de' => "Einstellungen der Anonymisierung", 'en' => "Anoymizer settings", }, 'COUNTRY_SHORT' => { 'de' => "Laenderkennung", 'en' => "Country Code", }, 'COUNTRY_LONG' => { 'de' => "Land", 'en' => "Country", }, 'REGION' => { 'de' => "Region", 'en' => "Region", }, 'DISTRICT' => { 'de' => "Bezirk", 'en' => "District", }, 'CITY' => { 'de' => "Stadt", 'en' => "City", }, 'ISP' => { 'de' => "ISP", 'en' => "ISP", }, 'LATITUDE' => { 'de' => "IP2Location Breitengrad", 'en' => "Latitude", }, 'LONGITUDE' => { 'de' => "Laengengrad", 'en' => "Longitude", }, 'DOMAIN' => { 'de' => "Domain", 'en' => "Domain", }, 'ZIPCODE' => { 'de' => "Postleitzahl", 'en' => "ZIP code", }, 'GEONAME_ID' => { 'de' => "GeoName ID", 'en' => "GeoName ID", }, 'ORGNAME' => { 'de' => "Organisation", 'en' => "Organization", }, 'AS_TEXT' => { 'de' => "Autonomous System der IP Adresse", 'en' => "Autonomous System of IP address", }, 'CONTINENTCODE' => { 'de' => "Kontinent-Code", 'en' => "Continent Code", }, 'AREACODE' => { 'de' => "Area-Code", 'en' => "Area Code", }, 'DMACODE' => { 'de' => "DMA-Code", 'en' => "DMA Code", }, 'TIMEZONE' => { 'de' => "Zeitzone", 'en' => "Time Zone", }, 'TIMEZONE_NAME' => { 'de' => "Zeitzonen Name", 'en' => "Time Zone Name", }, 'NETSPEED' => { 'de' => "Netzgeschwindigkeit", 'en' => "Net Speed", }, 'WEATHERSTATIONNAME' => { 'de' => "Name der Wetterstation", 'en' => "Weather Station Name", }, 'WEATHERSTATIONCODE' => { 'de' => "Code der Wetterstation", 'en' => "Weather Station Code", }, 'IDDCODE' => { 'de' => "Landesvorwahl", 'en' => "Internation Direct Dialing", }, 'ELEVATION' => { 'de' => "Hoehe ueber Meeresspiegel [m]", 'en' => "High above Sealevel [m]", }, 'USAGETYPE' => { 'de' => "Art der Benutzung", 'en' => "Usage Type Classification", }, 'MOBILEBRAND' => { 'de' => "Mobile Brand", 'en' => "Mobile Brand", }, 'MNC' => { 'de' => "Mobile Network Code", 'en' => "Mobile Network Code", }, 'MCC' => { 'de' => "Mobile Country Code", 'en' => "Mobile Country Code", }, ); # Location of binary my $bin_ipv6calc; if (defined $ENV{'HTTP_IPV6CALCWEB_BIN_IPV6CALC'}) { if ($ENV{'HTTP_IPV6CALCWEB_BIN_IPV6CALC'} =~ /^([[:alnum:]\.\-\/]+)$/o) { $bin_ipv6calc = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_BIN_IPV6CALC found, but not containing proper chars"); &print_error(); }; } else { $bin_ipv6calc = find_file(@list_bin_ipv6calc); }; my $options_ipv6calc = "-m -i -q"; ## Location of database files # IP2Location my $options_ipv6calc_ip2location = ""; my %db_info_ip2location; my $database_ip2location_dir; my $database_ip2location_lib; if (defined $ENV{'HTTP_IPV6CALCWEB_DB_IP2LOCATION_DIR'}) { if ($ENV{'HTTP_IPV6CALCWEB_DB_IP2LOCATION_DIR'} =~ /^([[:alnum:]\.\-\/]+)$/) { $database_ip2location_dir = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_DB_IP2LOCATION_DIR found, but not containing proper chars"); &print_error(); }; } else { $database_ip2location_dir = find_dir(@list_database_ip2location_dir); }; if (defined $ENV{'HTTP_IPV6CALCWEB_DB_IP2LOCATION_LIB'}) { if ($ENV{'HTTP_IPV6CALCWEB_DB_IP2LOCATION_LIB'} =~ /^([[:alnum:]\.\-\/]+)$/) { $database_ip2location_lib = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_DB_IP2LOCATION_LIB found, but not containing proper chars"); &print_error(); }; }; # GeoIP my $options_ipv6calc_geoip = ""; my %db_info_geoip; my $info_geoip_string; my $database_geoip_dir; my $database_geoip_lib; if (defined $ENV{'HTTP_IPV6CALCWEB_DB_GEOIP_DIR'}) { if ($ENV{'HTTP_IPV6CALCWEB_DB_GEOIP_DIR'} =~ /^([[:alnum:]\.\-\/]+)$/) { $database_geoip_dir = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_DB_GEOIP_DIR found, but not containing proper chars"); &print_error(); }; } else { $database_geoip_dir = find_dir(@list_database_geoip_dir); }; if (defined $ENV{'HTTP_IPV6CALCWEB_DB_GEOIP_LIB'}) { if ($ENV{'HTTP_IPV6CALCWEB_DB_GEOIP_LIB'} =~ /^([[:alnum:].-]+)$/) { $database_geoip_lib = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_DB_GEOIP_LIB found, but not containing proper chars"); &print_error(); }; }; # db-ip.com my $options_ipv6calc_dbip = ""; my %db_info_dbip; my $database_dbip_dir; my $info_dbip_string; if (defined $ENV{'HTTP_IPV6CALCWEB_DB_DBIP_DIR'}) { if ($ENV{'HTTP_IPV6CALCWEB_DB_DBIP_DIR'} =~ /^([[:alnum:]\.\-\/]+)$/) { $database_dbip_dir = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_DB_DBIP_DIR found, but not containing proper chars"); &print_error(); }; } else { $database_dbip_dir = find_dir(@list_database_dbip_dir); }; # External DB my $options_ipv6calc_external = ""; my %db_info_external; my $database_external_dir; my $info_external_string; if (defined $ENV{'HTTP_IPV6CALCWEB_DB_EXTERNAL_DIR'}) { if ($ENV{'HTTP_IPV6CALCWEB_DB_EXTERNAL_DIR'} =~ /^([[:alnum:]\.\-\/]+)$/) { $database_external_dir = $1; } else { logging("ERROR", "HTTP_IPV6CALCWEB_DB_EXTERNAL_DIR found, but not containing proper chars"); &print_error(); }; } else { $database_external_dir = find_dir(@list_database_external_dir); }; # BuiltIn DB my $options_ipv6calc_builtin = ""; my %db_info_builtin; my $database_builtin_dir; my $info_builtin_string; ## external database ipv6calc option handling # IP2Location if (defined $database_ip2location_dir) { $options_ipv6calc_ip2location .= " --db-ip2location-dir $database_ip2location_dir"; }; if (defined $database_ip2location_lib) { $options_ipv6calc_ip2location .= " --db-ip2location-lib $database_ip2location_lib"; }; # GeoIP if (defined $database_geoip_dir) { $options_ipv6calc_geoip .= " --db-geoip-dir $database_geoip_dir"; }; if (defined $database_geoip_lib) { $options_ipv6calc_geoip .= " --db-geoip-lib $database_geoip_lib"; }; # DBIP if (defined $database_dbip_dir) { $options_ipv6calc_dbip .= " --db-dbip-dir $database_dbip_dir"; }; # External DB if (defined $database_external_dir) { $options_ipv6calc_external .= " --db-external-dir $database_external_dir"; }; ###### Normally nothing to change here ## Cleanup environment # Please report, if more cleanup is needed on other systems # Hardwire path to well known if ( defined $ENV{'PATH'} ) { $ENV{'PATH'}="/bin:/usr/bin:/usr/local/bin"; }; # Clear shell environment if ( defined $ENV{'BASH_ENV'} ) { $ENV{'BASH_ENV'}=""; }; ## Fallbacks if (! defined $outputformat) { $outputformat = "text" }; if (! defined $outputtype) { $outputtype = "simple" }; if (! defined $lang_default) { $lang_default = "en"}; if (! defined $lang) { $lang = $lang_default}; ## Variables my $addr_remote; my $name_remote; my $user_agent; my $x_forwarded_for; my $via; my $addr_server; my $name_server; my @proxy_addresses; my @proxy_infos; my (%infoh_remote, @sort_remote); my (%infoh_server, @sort_server); my (%infoh_proxy, @sort_proxy); my (%infoh_input, @sort_input); my (%infoh_localhost4, @sort_localhost4); my $length_max_key = 0; my $length_max_description = 0; my $query_string; my $script_name; my $uri = ""; my $error; my $error_insert_input = 0; my $maxenvlength = 256; my $input; my $input_default; my $token; my @key_db_tokens; # default values my $ipv6calc_version = ""; my $ipv6calc_copyright = "(P) & (C) by Peter Bieringer"; my $ipv6calc_name = "ipv6calc"; my $ipv6calc_features = ""; my %ipv6calc_feature_hash; my $ipv6calc_capabilities = ""; my %ipv6calc_capability_hash; my $ipv6calc_settings = ""; my %ipv6calc_settings_hash; my $chr_quote = ""; # default ############### Functions ## Logging sub logging($$) { if (defined $_[0] && defined $_[1]) { printf STDERR "%s %-6s: %s\n", $program_name, $_[0], $_[1]; }; }; ## Split by " / " sub split_store($$) { my $p_hash = $_[0]; printf STDERR "DEBUG : need to split: %s\n", $_[1] if ($debug & 0x20); for my $entry (split / \/ /, $_[1]) { printf STDERR "DEBUG : split part: %s\n", $entry if ($debug & 0x20); $$p_hash{$entry} = 1; }; }; ## Error message sub print_error ($) { my $message = shift; if (defined $message) { printf STDERR $message . "\n"; }; goto("OUTPUT_BEGIN_ERROR"); }; ## Print conditional html sub print_tagoutput ($) { my $text = shift; if ( defined $text ) { if ($outputformat =~ /^html/o) { print $text; }; }; }; sub print_textonly ($) { my $text = shift; if ( defined $text ) { if ($outputformat =~ /^text/o) { print $text; }; }; }; ## Print one table part sub print_infohash ($$$;$) { my $phash = $_[0]; my $parray = $_[1]; my $colormode = $_[2]; my $counter = $_[3]; my %key_values_db_tokens; if (! defined $phash) { return; }; my ($flag_tt, $flag_whoisurl, $whois_registry, $whois_type); my $last_key_embedded = ""; my $count_key_embedded = 0; if ( ! defined \$phash ) { &print_tagoutput ( " \n" ); &print_tagoutput ( " " ); print $text{'nodata'}->{$lang}; &print_textonly ("\n"); &print_tagoutput ( "\n" ); &print_tagoutput ( "\n" ); return; }; for my $key (@$parray) { if ($key eq "IP2LOCATION_DATABASE_INFO") { split_store(\%db_info_ip2location, $$phash{$key}); # skipped, will be shown in footer next; }; if ($key eq "IP2LOCATION_DATABASE_INFO_IPV4") { split_store(\%db_info_ip2location, $$phash{$key}); # skipped, will be shown in footer next; }; if ($key eq "IP2LOCATION_DATABASE_INFO_IPV6") { split_store(\%db_info_ip2location, $$phash{$key}); # skipped, will be shown in footer next; }; if ($key eq "GEOIP_DATABASE_INFO") { $info_geoip_string = $$phash{$key}; # strip non-ascii chars $info_geoip_string =~ s/[\200-\377]//g; split_store(\%db_info_geoip, $info_geoip_string); # skipped, will be shown in footer next; }; if ($key eq "GEOIP_DATABASE_INFO_IPV4") { split_store(\%db_info_geoip, $info_geoip_string); # skipped, will be shown in footer next; }; if ($key eq "GEOIP_DATABASE_INFO_IPV6") { split_store(\%db_info_geoip, $info_geoip_string); # skipped, will be shown in footer next; }; if ($key eq "DBIP_DATABASE_INFO") { $info_dbip_string = $$phash{$key}; # strip non-ascii chars $info_dbip_string =~ s/[\200-\377]//g; split_store(\%db_info_dbip, $info_dbip_string); # skipped, will be shown in footer next; }; if ($key eq "EXTERNAL_DATABASE_INFO") { $info_external_string = $$phash{$key}; # strip non-ascii chars $info_external_string =~ s/[\200-\377]//g; split_store(\%db_info_external, $info_external_string); # skipped, will be shown in footer next; }; if ($key eq "BUILTIN_DATABASE_INFO") { $info_builtin_string = $$phash{$key}; # strip non-ascii chars $info_builtin_string =~ s/[\200-\377]//g; split_store(\%db_info_builtin, $info_builtin_string); # skipped, will be shown in footer next; }; # catch internal keys if ( $key =~ /^IPV6CALC_/ ) { # skipped, will be shown in footer next; }; $flag_tt = 0; $flag_whoisurl = 0; # extract lookup key $key =~ /^([^[]+)(\[[^]]*\])?$/; my $key_lookup = $1; my $key_embedded = ""; my $embedded_changed = 0; if (defined $2) { $key_embedded = $2; if ($last_key_embedded eq "") { $last_key_embedded = $key_embedded; $count_key_embedded++; $embedded_changed = 1; } elsif ( $last_key_embedded ne $key_embedded) { $last_key_embedded = $key_embedded; $count_key_embedded++; $embedded_changed = 1; }; if (($outputformat eq "html") || ($outputformat eq "htmlfull")) { if ($embedded_changed == 1) { if ($count_key_embedded & 1) { &print_tagoutput ( " \n" ); } else { &print_tagoutput ( " \n" ); }; my $entry = "Embedded IPv4 address " . $key_embedded . ""; $entry =~ s/[\[\]]//g; &print_tagoutput ( " " . $entry . "\n" ); &print_tagoutput ( " \n"); }; }; } else { $count_key_embedded = 0; $last_key_embedded = ""; }; if (grep(/^$key_lookup$/, @format_tt)) { $flag_tt = 1; }; if ($mode_db_entries_in_subcolumns == 1) { # suppress db based keys, store them in hash for later printout $key =~ /^([A-Z0-9]+)_(.*)$/o; if (grep(/^$1/i, @key_db_tokens)) { my $dbprovider = $1; my $subkey = $2; # check for embedded information $subkey =~ /^([^[]+)(\[[^]]*\])?$/; my $subkey_stripped = $1; my $embedded = $2; if (! defined $embedded) { $embedded = "default"; }; $key_values_db_tokens{$embedded}->{$subkey_stripped} = $dbprovider; next; }; }; # print key if ($count_key_embedded > 0) { if ($count_key_embedded & 1) { &print_tagoutput ( " \n" ); } else { &print_tagoutput ( " \n" ); }; } else { &print_tagoutput ( " \n" ); }; &print_tagoutput ( " " ); &print_tagoutput ( "" ) if ($count_key_embedded > 0); print uc($colormode) . "__" if ($outputformat eq "textkeyvalue"); # reduce duplicate information my $key_print = $key; $key_print =~ s/^($colormode)_//i if ($outputformat eq "textkeyvalue"); if ((($outputformat eq "html") || ($outputformat eq "htmlfull")) && ($key_embedded ne "")) { $key_print =~ /^([^[]+)(\[[^]]*\])?$/; $key_print = $1; }; # print url where available if ((($outputformat eq "html") || ($outputformat eq "htmlfull")) && ($key =~ /^([A-Z0-9]+)_(.+)$/o)) { if (defined $urls{$1}) { # add URL &print_tagoutput("" . $key_print . ""); } else { &print_tagoutput($key_print); }; } else { print $key_print; }; &print_textonly (' ' x ($length_max_key - length($key)) ) if ($outputformat ne "textkeyvalue"); &print_textonly (" | ") if ($outputformat ne "textkeyvalue"); &print_textonly ("[" . $counter . "]") if (($outputformat eq "textkeyvalue") && (defined $counter)); &print_textonly ("=") if ($outputformat eq "textkeyvalue"); &print_tagoutput ( "" ) if ($count_key_embedded > 0); &print_tagoutput ( "\n" ); # print description if ($outputtype ne "simple") { &print_tagoutput ( " " ); &print_tagoutput ( "" ) if ($count_key_embedded > 0); if (defined $text{$key_lookup}->{$lang}) { print $text{$key_lookup}->{$lang}; &print_textonly (' ' x ($length_max_description - length($text{$key_lookup}->{$lang})) ); } else { &print_textonly (' ' x ($length_max_description) ); }; &print_textonly (" | "); &print_tagoutput ( "" ) if ($count_key_embedded > 0); &print_tagoutput ( "\n" ); }; my $color = ""; if (defined $colormode) { # set color if ($key eq "EUI64_SCOPE" && $$phash{$key} eq "local-random") { $color = "lime"; } elsif ($key eq "EUI64_SCOPE" && $$phash{$key} eq "local") { $color = "cyan"; } elsif ($key eq "EUI48_SCOPE") { if ($$phash{$key} eq "global") { $color = "yellow"; }; } elsif ($key eq "IID" && defined $$phash{"EUI64_SCOPE"} && $$phash{"EUI64_SCOPE"} eq "local") { $color = "cyan"; } elsif ($key eq "IID" && defined $$phash{"EUI64_SCOPE"} && $$phash{"EUI64_SCOPE"} eq "local-random") { $color = "lime"; } elsif ($key eq "EUI64" && defined $$phash{"OUI"}) { $color = "yellow"; } elsif ($key eq "EUI48" && defined $$phash{"OUI"}) { $color = "yellow"; } elsif ($key eq "OUI") { $color = "yellow"; } else { }; }; # set background color if ($color ne "") { &print_tagoutput ( " " ); } else { &print_tagoutput ( " " ); }; if ($flag_tt) { &print_tagoutput ( "" ); }; if ($key_lookup eq "IPV4" || $key_lookup eq "IPV4_REGISTRY") { if ( defined $$phash{'IPV4_REGISTRY' . $key_embedded} ) { $whois_registry = $$phash{'IPV4_REGISTRY' . $key_embedded}; $whois_type = "ipv4"; $flag_whoisurl = 1; } else { # Temporary workaround $whois_registry = 'unknown'; $whois_type = "ipv4"; $flag_whoisurl = 1; }; } elsif ($key_lookup eq "IPV6" || $key_lookup eq "IPV6_REGISTRY") { if ( defined $$phash{'IPV6_REGISTRY' . $key_embedded} ) { $whois_registry = $$phash{'IPV6_REGISTRY' . $key_embedded}; $whois_type = "ipv6"; $flag_whoisurl = 1; }; }; my ($info, $rfc, $section, $url, $url2); if ( $flag_whoisurl == 1 ) { if ( $whois_registry =~ /^(.*)\(LISP(#.*)\)$/o ) { ($whois_registry, $section) = ($1, $2); if ($key_lookup =~ /^IPV(4|6)_REGISTRY/o) { $info = "LISP" . $section; $url2 = $url_lisp . $section; }; } elsif ( $whois_registry =~ /^reserved\((.*)\)$/o ) { ($rfc, $section) = split /#/, $1; $url = $url_rfc . lc($rfc); if (defined $section) { $url .= "#section-" . $section; }; &print_tagoutput ( "" ); }; if ( defined $url_whoisservers{$whois_registry}->{$whois_type} ) { if ( $url_whoisservers{$whois_registry}->{$whois_type} ne "" ) { if ($key_lookup =~ /^IPV(4|6)_REGISTRY/o) { my $ip; if ($whois_type eq "ipv4") { $ip = $$phash{'IPV4' . $key_embedded}; } elsif ($whois_type eq "ipv6") { $ip = $$phash{'IPV6' . $key_embedded}; }; if (defined $ip) { $url = $url_whoisservers{$whois_registry}->{$whois_type} . $ip; } else { # something strange happend $flag_whoisurl = 0; }; } else { $url = $url_whoisservers{$whois_registry}->{$whois_type} . $$phash{$key}; }; } else { $flag_whoisurl = 0; }; } else { if ($debug & 0x08) { print STDERR "whoisserver is not defined\n"; }; $flag_whoisurl = 0; }; }; if ($key =~ /GEONAME_ID/o) { $url = $url_geoname_by_id; $url =~ s/#GEONAME_ID#/$$phash{$key}/g; } elsif ($key =~ /(LATITUDE|LONGITUDE)/o) { my $combined_key; my $combined_valid = 0; $url = $url_openstreetmap_by_lat_lon; if ($key =~ /LATITUDE/o) { $url =~ s/#LATITUDE#/$$phash{$key}/g; $combined_valid++; $combined_key = $key; $combined_key =~ s/LATITUDE/LONGITUDE/o; if(defined $$phash{$combined_key}) { $url =~ s/#LONGITUDE#/$$phash{$combined_key}/g; $combined_valid++; }; } elsif ($key =~ /LONGITUDE/o) { $url =~ s/#LONGITUDE#/$$phash{$key}/g; $combined_valid++; $combined_key = $key; $combined_key =~ s/LONGITUDE/LATITUDE/o; if(defined $$phash{$combined_key}) { $url =~ s/#LATITUDE#/$$phash{$combined_key}/g; $combined_valid++; }; }; if ($combined_valid != 2) { $url = undef; }; }; &print_tagoutput ( "" ) if ($count_key_embedded > 0); if (defined $url && defined $url2) { &print_tagoutput ( "" ); print $whois_registry; &print_tagoutput ( "" ); print "("; &print_tagoutput ( "" ); print $info; &print_tagoutput ( "" ); print ")"; } elsif (defined $url) { &print_tagoutput ( "" ); print $chr_quote . $$phash{$key} . $chr_quote; &print_tagoutput ( "" ); } else { print $chr_quote . $$phash{$key} . $chr_quote; }; &print_tagoutput ( "" ) if ($count_key_embedded > 0); if ($flag_tt) { &print_tagoutput ( "" ); }; &print_tagoutput ( "\n" ); &print_tagoutput ( " \n" ); &print_textonly ("\n"); }; if ($mode_db_entries_in_subcolumns != 1) { # nothing more to do return; }; ## database subcolumns mode # print header my ($r, $g, $b); my $shift; # loop through all embedded for my $embedded (keys %key_values_db_tokens) { my $entry = " for $embedded"; $entry =~ s/[\[\]]//g; if ($embedded eq "default") { $entry = ""; }; ($r, $g, $b) = (240, 240, 255); &print_tagoutput ( " \n" ); &print_tagoutput ( " Information from databases$entry\n" ); for my $key (sort @key_db_tokens) { &print_tagoutput (" "); if (defined $urls{$key}) { # add URL &print_tagoutput("" . $key . ""); } else { &print_tagoutput($key); }; &print_tagoutput("\n"); $shift = $r; $r = $g; $g = $b; $b = $shift; }; &print_tagoutput ( " \n" ); for my $key_lookup (sort keys %{$key_values_db_tokens{$embedded}}) { &print_tagoutput ( " \n" ); &print_tagoutput ( " $key_lookup\n" ); my $key; if ($embedded eq "default") { $key = $key_lookup; } else { $key = $key_lookup . $embedded; }; # print description if ($outputtype ne "simple") { &print_tagoutput ( " " ); if (defined $text{$key_lookup}->{$lang}) { print $text{$key_lookup}->{$lang}; } else { }; &print_tagoutput ( "\n" ); }; # print value ($r, $g, $b) = (240, 240, 255); for my $db (sort @key_db_tokens) { &print_tagoutput ( " " ); my $key_result = $db . "_" . $key; if (defined $$phash{$key_result}) { my $flag = 0; my $url; if ($key_lookup =~ /GEONAME_ID/o) { $url = $url_geoname_by_id; $url =~ s/#GEONAME_ID#/$$phash{$key_result}/g; &print_tagoutput ( "" ); $flag = 1; } elsif ($key =~ /(LATITUDE|LONGITUDE)/o) { printf STDERR "DEBUG : found combination key master: %s\n", $key if ($debug & 0x2000); my $combined_key; my $combined_valid = 0; $url = $url_openstreetmap_by_lat_lon; if ($key_lookup =~ /LATITUDE/o) { $url =~ s/#LATITUDE#/$$phash{$key_result}/g; $combined_valid++; $combined_key = $key_result; $combined_key =~ s/LATITUDE/LONGITUDE/o; printf STDERR "DEBUG : search for combination key slave: %s\n", $combined_key if ($debug & 0x2000); if(defined $$phash{$combined_key}) { $url =~ s/#LONGITUDE#/$$phash{$combined_key}/g; $combined_valid++; }; } elsif ($key_lookup =~ /LONGITUDE/o) { $url =~ s/#LONGITUDE#/$$phash{$key_result}/g; $combined_valid++; $combined_key = $key_result; $combined_key =~ s/LONGITUDE/LATITUDE/o; if(defined $$phash{$combined_key}) { $url =~ s/#LATITUDE#/$$phash{$combined_key}/g; $combined_valid++; }; }; if ($combined_valid == 2) { &print_tagoutput ( "" ); $flag = 1; # workaround to close a tag below }; }; print $$phash{$key_result}; if ( $flag == 1 ) { &print_tagoutput ( "" ); }; } else { print "-"; }; &print_tagoutput ( "\n" ); $shift = $r; $r = $g; $g = $b; $b = $shift; }; &print_tagoutput ( " \n" ); &print_textonly ("\n"); }; }; }; ############### Anti-DoS functions sub salt_generate() { my $salt = ""; my $result; my $f; logging("DEBUG", "salt_generate/start") if ($debug & 0x0100); # first try to use system UUID if (-f "/etc/sysconfig/hw-uuid") { logging("DEBUG", "hardware uuid file found") if ($debug & 0x0100); $result = open(INPUT, "/etc/sysconfig/hw-uuid"); if (defined $result) { $salt = ; close(INPUT); chomp($salt); if (length($salt) > 0) { logging("DEBUG", "hardware uuid found: $salt") if ($debug & 0x0100); } else { logging("DEBUG", "hardware uuid found but contents is empty") if ($debug & 0x0100) }; } else { logging("NOTICE", "hardware uuid file exists, but can't open"); }; }; # local data if (length($salt) == 0) { if (defined $ENV{'HOSTNAME'}) { $salt = $ENV{'HOSTNAME'}; } elsif (defined $ENV{'SERVER_NAME'}) { $salt = $ENV{'SERVER_NAME'}; } else { $salt = "unknown-hosts"; }; for $f ("/etc/passwd", "/etc/hosts", "/etc/resolv.conf") { if (-f "$f") { if (length($salt) > 0) { $salt .= "-"; }; $salt .= sprintf("%x", (stat("$f"))[9]); }; }; logging("DEBUG", "local generated: $salt") if ($debug & 0x0100); }; logging("DEBUG", "salt_generate/salt: $salt") if ($debug & 0x0100); return($salt); } sub token_generate($$$) { my $remote = $_[2] || "127.0.0.1"; logging("DEBUG", "token_generate/salt : $_[0]") if ($debug & 0x0100); logging("DEBUG", "token_generate/time : $_[1]") if ($debug & 0x0100); logging("DEBUG", "token_generate/remote: $remote") if ($debug & 0x0100); if ($mask_remote_address == 1) { # mask remote information if ($_[2] =~ /^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)[0-9]{1,3}$/) { # IPv4 address, blank last 8 bits $remote = $1; } elsif ($_[2] =~ /^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)[0-9]{1,3}$/) { # IPv4 address, blank last 8 bits $remote = $1; }; if ($remote ne $_[2]) { logging("DEBUG", "token_generate/remote masked to: $remote") if ($debug & 0x0100); }; }; my $token = $_[0] . "#" . $_[1] . "#" . $remote; logging("DEBUG", "token: $token") if ($debug & 0x0100); my $token_sha1 = Digest::SHA1::sha1_hex($token); my $token_md5 = Digest::MD5::md5_hex($token); chomp $token_sha1; chomp $token_md5; logging("DEBUG", "token/md5 : $token_md5") if ($debug & 0x0100); logging("DEBUG", "token/sha1: $token_sha1") if ($debug & 0x0100); return($token_md5 . $token_sha1); }; #################### ############### Main #################### # Parse query string first if ( defined $ENV{'QUERY_STRING'} ) { # split query string foreach my $query_stringlet (split /[\?\&]/, $ENV{'QUERY_STRING'}) { if ($query_stringlet !~ /^([[:alnum:]]+)=([[:alnum:].\-:%+]+)$/ ) { logging("ERROR", "generic problem with data in query_stringlet"); &print_error(); next; }; my ($name, $value) = ($1, $2); if ($name eq "lang") { for my $langtest (@supported_languages) { if ($value eq $langtest) { $lang = $langtest; last; }; }; } elsif ($name eq "format") { for my $formattest (@supported_formats) { if ($value eq $formattest) { $outputformat = $formattest; last; }; }; } elsif ($name eq "input") { if (length($value) > $maxenvlength) { logging("ERROR", "problem with data in query_stringlet (input too long)"); &print_error(); next; }; $input = uri_unescape($value); $input =~ s/^[+\s]+//g; # remove leading whitespaces (Firefox codes space as '+') $input =~ s/[+\s]+$//g; # remove trailing whitespaces (Firefox codes space as '+') if ($input !~ /^([[:alnum:]\/\.\:-]+)$/) { logging("ERROR", "problem with data in query_stringlet (input has unexpected chars)"); &print_error(); }; logging("DEBUG", "QUERY_STRING contains: input=" . $input) if ($debug & 0x40); } elsif ($name eq "tokenhash") { if (length($value) > $maxenvlength) { logging("ERROR", "problem with data in query_stringlet (tokenhash too long)"); &print_error(); next; }; if (length($value) > 32 + 40) { logging("ERROR", "problem with tokenhash: " . length($value) . " chars, more than 72 chars"); &print_error(); next; }; if ($value !~ /^[[:xdigit:]]+$/) { logging("ERROR", "problem with data in query_stringlet (tokenhash has unexpected chars)"); &print_error(); next; }; $tokenhash = $value; $tokenhash_found = 1; logging("DEBUG", "QUERY_STRING contains: tokenhash=" . $tokenhash) if ($debug & 0x40); } elsif ($name eq "tokentime") { if (length($value) > $maxenvlength) { logging("ERROR", "problem with data in query_stringlet (tokentime too long)"); &print_error(); next; }; if (length($value) != 10) { logging("ERROR", "problem with tokentime: " . length($value) . " chars, not 10 chars"); &print_error(); next; }; if ($value !~ /^[[:digit:]]+$/) { logging("ERROR", "problem with data in query_stringlet (tokentime has unexpected chars)"); &print_error(); next; }; $tokentime = $value; $tokentime_found = 1; logging("DEBUG", "QUERY_STRING contains: tokentime=" . $tokentime) if ($debug & 0x40); }; }; }; ## Get variables if ( defined $ENV{'REMOTE_ADDR'} ) { logging("DEBUG", "found environment: REMOTE_ADDR") if ($debug & 0x80); $ENV{'REMOTE_ADDR'} =~ /^([[:xdigit:]\.\:]+)$/o; if ( ! defined $1 || (length($1) > $maxenvlength)) { logging("ERROR", "problem with data (REMOTE_ADDR)"); &print_error(); }; # validity checks if (length($ENV{'REMOTE_ADDR'}) < 2 || length($ENV{'REMOTE_ADDR'}) > 69) { logging("ERROR", "problem with REMOTE_ADDR: below 2 or more than 69 chars"); &print_error(); }; $addr_remote = $1; logging("DEBUG", "environment: REMOTE_ADDR=$1") if ($debug & 0x80); } else { $addr_remote = "127.0.0.1"; }; # verify token if ($tokenhash_found == 1 && $tokentime_found == 1) { logging("DEBUG", "verify tokens now") if ($debug & 0x100); $salt = salt_generate(); $tokenhash_verify = token_generate($salt, $tokentime, $addr_remote); if ($tokenhash_verify ne $tokenhash) { logging("ERROR", "tokenhash invalid"); &print_error(); }; logging("DEBUG", "tokenhash valid") if ($debug & 0x100); if ($tokentime > time()) { logging("ERROR", "tokentime in the future (totally strange!)"); &print_error(); }; my $delta = time() - $tokentime; if ($delta > $time_range_valid) { logging("ERROR", "tokentime expired"); $error = "session expired"; $error_insert_input = 1; &print_error(); }; if ($delta < $time_range_min) { logging("NOTICE", "tokentime usage too early, sleep seconds: " . ($time_range_min - $delta)); sleep ($time_range_min - ($delta % 5)) if (! ($debug & 0x1000)); } elsif (($delta % $time_range_min) < $time_range_min) { logging("NOTICE", "tokentime (re)usage not aligned to $time_range_min seconds, sleep seconds: " . ($time_range_min - ($delta % $time_range_min))); sleep ($time_range_min - ($delta % $time_range_min)) if (! ($debug & 0x1000)); } else { logging("DEBUG", "tokentime in range") if ($debug & 0x100); }; } elsif ($tokenhash_found == 0 && $tokentime_found == 0) { if ((defined $input) && ($mode eq "form" || $mode eq "mixed")) { logging("NOTICE", "form/mixed mode, input given, but tokenhash/tokentime missing, use value as default and sleep seconds: 5"); sleep (5) if (! ($debug & 0x1000)); $input_default = 1; # take this input as default }; } else { logging("ERROR", "strange error occurs (tokentime/tokenhash only partially found)"); &print_error(); } if ($mode eq "form" || $mode eq "mixed") { # generate new token $salt = salt_generate(); # generate token $tokentime = time(); $tokenhash = token_generate($salt, $tokentime, $addr_remote); logging("DEBUG", "TOKENHASH=$tokenhash TOKENTIME=$tokentime REMOTE_ADDR=$addr_remote") if ($debug & 0x0100); }; if ( defined $ENV{'REMOTE_HOST'} ) { $ENV{'REMOTE_HOST'} =~ /^([[:alnum:]\.\-_]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { logging("ERROR", "problem with data (REMOTE_HOST)"); &print_error(); }; $name_remote = $1; }; if ( defined $ENV{'HTTP_USER_AGENT'} ) { $ENV{'HTTP_USER_AGENT'} =~ /^([[:alnum:]\[\]\/\(\)\\\.\-+\;\: ]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { # not a problem, skip it } else { $user_agent = $1; }; }; if ( defined $ENV{'HTTP_X_FORWARDED_FOR'} ) { $ENV{'HTTP_X_FORWARDED_FOR'} =~ /^([[:alnum:]\[\]\/\(\)\\\.\-+\,\: ]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { # not a problem, skip it } else { $x_forwarded_for = $1; }; }; if ( defined $ENV{'HTTP_VIA'} ) { $ENV{'HTTP_VIA'} =~ /^([[:alnum:]\[\]\/\(\)\\\.\-+\;\,\: ]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { # not a problem, skip it } else { $via = $1; }; }; if ( defined $ENV{'SERVER_ADDR'} ) { $ENV{'SERVER_ADDR'} =~ /^([[:xdigit:]\.\:]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { logging("ERROR", "problem with data (SERVER_ADDR)"); &print_error(); }; $addr_server = $1; }; if ( defined $ENV{'SERVER_NAME'} ) { $ENV{'SERVER_NAME'} =~ /^([[:alnum:]\.\-\:_]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { logging("ERROR", "problem with data (SERVER_NAME)"); &print_error(); }; $name_server = $1; }; if ( defined $ENV{'SCRIPT_NAME'} ) { $ENV{'SCRIPT_NAME'} =~ /^([[:alnum:]\?\%\&=\.\-\:_\/]*)$/; if ( ! defined $1 || (length($1) > $maxenvlength)) { logging("ERROR", "problem with data (SCRIPT_NAME)"); &print_error(); }; $script_name = $1; } else { $script_name = ""; }; ## Check caller and select output format and mode if ( defined $ENV{'SERVER_PROTOCOL'} ) { if ( $ENV{'SERVER_PROTOCOL'} eq "INCLUDED" ) { $mode = "info"; # force info mode if ( $outputformat eq "htmlfull" ) { # Switch back to included html $outputformat = "html"; }; }; }; if ( defined $ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT'} ) { if ($ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT'} =~ /^(text|html|htmlfull|textkeyvalue)$/o) { $outputformat = $ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT'}; }; }; if ( defined $ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT_HTML_DB'} ) { if ($ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT_HTML_DB'} =~ /^(sequential|subcolumns)$/o) { $outputformat_html_db = $ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT_HTML_DB'}; }; }; if ($outputformat_html_db eq "subcolumns") { $mode_db_entries_in_subcolumns = 1; }; if ($outputformat eq "textkeyvalue") { $outputtype = "simple"; $chr_quote = "\""; }; if (($outputformat ne "html") && ($outputformat ne "htmlfull")) { # no html format, disable subcolumn mode $mode_db_entries_in_subcolumns = 0; }; ## Check for binary ipv6calc exists and is executable if (! defined $bin_ipv6calc) { logging("ERROR", "'bin_ipv6calc' not defined"); &print_error(); }; if ( length($bin_ipv6calc) == 0) { logging("ERROR", "'bin_ipv6calc' is empty"); &print_error(); }; if ( ! -f $bin_ipv6calc ) { logging("ERROR", "$bin_ipv6calc (bin_ipv6calc) does not exist as file"); &print_error(); }; if ( ! -x $bin_ipv6calc ) { logging("ERROR", "$bin_ipv6calc (bin_ipv6calc) not executable"); &print_error(); }; ## Get and fill information sub ipv6calc_exec($$$$) { my $addr = $_[0]; my $debug_tag = $_[1]; my $p_hash = $_[2]; my $p_array = $_[3]; if (! defined $addr) { logging("ERROR", "no input for ipv6calc (strange)"); return 1; }; logging("DEBUG", "execute: $bin_ipv6calc $options_ipv6calc $addr") if ($debug & 0x1); my @info = `$bin_ipv6calc $options_ipv6calc $addr 2>&1`; if ( $? != 0 ) { logging("ERROR", "ipv6calc did not proper return ($addr)"); return 1; }; print $debug_tag . "\n" if ($debug & 0x10); for my $line (@info) { print $line if ($debug & 0x10); my ( $key, $content ) = split /=/, $line, 2; if ( (! defined $key) || (! defined $content) ) { logging("ERROR", "ipv6calc output parsing problem ($addr)"); return 1; }; chomp $content; if ( $key =~ /^IP2LOCATION_/ ) { #$flag_ip2location_used = 1; if ( $content =~ /^This (parameter|record) is unavailable/o || length($content) == 0 || $content eq "-" || $content eq "??") { # $content = "n/a"; next; }; }; # remove quotes around contents $content =~ s/^\"//; $content =~ s/\"$//; # catch internal keys if ( $key =~ /^IPV6CALC_/ ) { if ( $key eq "IPV6CALC_COPYRIGHT" ) { $ipv6calc_copyright = $content; }; if ( $key eq "IPV6CALC_VERSION" ) { $ipv6calc_version = $content; }; if ( $key eq "IPV6CALC_NAME" ) { $ipv6calc_name = $content; }; if ( $key eq "IPV6CALC_FEATURES" ) { $ipv6calc_features = $content; foreach my $feature (split / /, $ipv6calc_features) { $ipv6calc_feature_hash{$feature} = 1; }; }; if ( $key eq "IPV6CALC_CAPABILITIES" ) { $ipv6calc_capabilities = $content; foreach my $capability (split / /, $ipv6calc_capabilities) { # remove brackets $capability =~ s/\([^)]*\)//g; $ipv6calc_capability_hash{$capability} = 1; }; }; if ( $key =~ /^IPV6CALC_SETTINGS_(.*)$/ ) { if (! defined $ipv6calc_settings_hash{$1}) { if (length($ipv6calc_settings) > 0) { $ipv6calc_settings .= " "; }; my $t = $1; $ipv6calc_settings_hash{$t} = $content; $ipv6calc_settings .= $t . ":" . $content; }; }; }; $$p_hash{$key} = $content; push @$p_array, $key; }; return 0; }; my $result; ## check HTTP_X_FORWARDED_FOR if (defined $x_forwarded_for) { my $addr_remote_temp = $addr_remote; # save exit proxy address my $x_forwarded_for_entries = 0; foreach my $address (split /, /, $x_forwarded_for) { if ($address !~ /^([[:xdigit:]\.\:]+)$/) { # silently skip next; }; if ($x_forwarded_for_entries == 0) { # first found entry is real client $addr_remote = $address; } else { # next proxy push @proxy_addresses, $address; }; $x_forwarded_for_entries++; }; if ($x_forwarded_for_entries > 0) { # addr_remote is exit proxy push @proxy_addresses, $addr_remote_temp; }; }; ## check HTTP_VIA if (defined $via) { foreach my $entry (split /,/, $via) { $entry =~ s/^ +//o; # remove leading spaces $entry =~ s/ +$//o; # remove trailing spaces push @proxy_infos, $entry; }; }; ## check proxy information if (scalar(@proxy_addresses) != scalar(@proxy_infos)) { # amount not matching, don't show information undef @proxy_infos; }; ## check features $result = ipv6calc_exec("127.0.0.1", "***feature***", \%infoh_localhost4, \@sort_localhost4); if ($debug & 0x8000) { foreach my $key (sort keys %ipv6calc_feature_hash) { printf "DEBUG : feature " . $key . "=" . $ipv6calc_feature_hash{$key} . "\n"; }; foreach my $key (sort keys %ipv6calc_capability_hash) { printf "DEBUG : capability " . $key . "=" . $ipv6calc_capability_hash{$key} . "\n"; }; }; if ($result != 0) { &print_error(); }; # add options depending of available capabilities (fallback: features) if (length($ipv6calc_capabilities) > 0) { if (defined $ipv6calc_capability_hash{"GeoIP"} && ($ipv6calc_capability_hash{"GeoIP"} == 1)) { if ($disable_db_GeoIP == 1) { $options_ipv6calc .= " --db-geoip-disable"; } else { $options_ipv6calc .= $options_ipv6calc_geoip; $db_columns++ if ($mode_db_entries_in_subcolumns == 1); push @key_db_tokens, "GEOIP"; }; }; if (defined $ipv6calc_capability_hash{"IP2Location"} && ($ipv6calc_capability_hash{"IP2Location"} == 1)) { if ($disable_db_IP2Location == 1) { $options_ipv6calc .= " --db-ip2location-disable"; } else { $options_ipv6calc .= $options_ipv6calc_ip2location; $db_columns++ if ($mode_db_entries_in_subcolumns == 1); push @key_db_tokens, "IP2LOCATION"; }; }; if (defined $ipv6calc_capability_hash{"DBIP"} && ($ipv6calc_capability_hash{"DBIP"} == 1)) { if ($disable_db_DBIP == 1) { $options_ipv6calc .= " --db-dbip-disable"; } else { $options_ipv6calc .= $options_ipv6calc_dbip; $db_columns++ if ($mode_db_entries_in_subcolumns == 1); push @key_db_tokens, "DBIP"; }; }; if (defined $ipv6calc_capability_hash{"External"} && ($ipv6calc_capability_hash{"External"} == 1)) { if ($disable_db_External == 1) { $options_ipv6calc .= " --db-external-disable"; } else { $options_ipv6calc .= $options_ipv6calc_external; $db_columns++ if ($mode_db_entries_in_subcolumns == 1); push @key_db_tokens, "EXTERNAL"; }; }; } else { # fallback for ipv6calc < 0.97.4 if (defined $ipv6calc_feature_hash{"GeoIP"} && ($ipv6calc_feature_hash{"GeoIP"} == "1")) { if ($disable_db_GeoIP == 1) { $options_ipv6calc .= " --db-geoip-disable"; } else { $options_ipv6calc .= $options_ipv6calc_geoip; $db_columns++ if ($mode_db_entries_in_subcolumns == 1); push @key_db_tokens, "GEOIP"; }; }; if (defined $ipv6calc_feature_hash{"IP2Location"} && ($ipv6calc_feature_hash{"IP2Location"} == "1")) { if ($disable_db_IP2Location == 1) { $options_ipv6calc .= " --db-ip2location-disable"; } else { $options_ipv6calc .= $options_ipv6calc_ip2location; $db_columns++ if ($mode_db_entries_in_subcolumns == 1); push @key_db_tokens, "IP2LOCATION"; }; }; }; if ($db_columns == 0) { # no databases, disable subcolumn mode $mode_db_entries_in_subcolumns = 0; } elsif ($db_columns > 0) { # one column is always available $db_columns--; }; ## remote if ( defined $addr_remote ) { $result = ipv6calc_exec($addr_remote, "***remote***", \%infoh_remote, \@sort_remote); if ($result != 0) { &print_error(); }; if (defined $name_remote) { if ($name_remote ne $addr_remote) { $infoh_remote{'NAME'} = $name_remote; push @sort_remote, 'NAME'; }; }; if (defined $user_agent) { $infoh_remote{'HTTP_USER_AGENT'} = $user_agent; push @sort_remote, 'HTTP_USER_AGENT'; }; # add x-forward-for information to client if not handled otherwise if ((defined $x_forwarded_for) && (scalar(@proxy_addresses) == 0)) { $infoh_remote{'HTTP_X_FORWARDED_FOR'} = $x_forwarded_for; push @sort_remote, 'HTTP_X_FORWARDED_FOR'; }; # add via information to client if not handled otherwise if ((defined $via) && (scalar(@proxy_infos) == 0)) { $infoh_remote{'HTTP_VIA'} = $via; push @sort_remote, 'HTTP_VIA'; }; }; ## server if ((defined $addr_server) && ($skip_server == 0)) { $result = ipv6calc_exec($addr_server, "***server***", \%infoh_server, \@sort_server); if ($result != 0) { &print_error(); }; if (defined $name_server) { if ($name_server ne $addr_server) { $infoh_server{'NAME'} = $name_server; push @sort_server, 'NAME'; }; }; }; ## input if ((defined $input) && ($mode eq "form" || $mode eq "mixed") && ($tokenhash_found == 1 && $tokentime_found == 1)) { $result = ipv6calc_exec($input, "***input***", \%infoh_input, \@sort_input); if ($result != 0) { $infoh_input{'RESULT'} = "(unrecognized input)"; push @sort_input, 'RESULT'; }; }; ## Print content if ($debug & 0x01) { print STDERR "REMOTE\n"; for my $key (keys %infoh_remote) { print STDERR " ". $key . "=" . $infoh_remote{$key} . "\n"; }; print STDERR "SERVER\n"; for my $key (keys %infoh_server) { print STDERR " " . $key . "=" . $infoh_server{$key} . "\n"; }; print STDERR "INPUT\n"; for my $key (keys %infoh_input) { print STDERR " " . $key . "=" . $infoh_input{$key} . "\n"; }; }; ## Calculate max lengths for my $key (keys %text) { if (length($key) + 17 > $length_max_key) { $length_max_key = length($key) + 17; }; if (length($text{$key}->{$lang}) > $length_max_description) { $length_max_description = length($text{$key}->{$lang}); }; }; goto("OUTPUT_BEGIN"); OUTPUT_BEGIN_ERROR: my $error_flag = 0; if (!defined $error) { $error = "$program_name: unexpected problem occurs"; $error_flag = 1; } else { $error = "$program_name: " . $error; }; $returncode = 1; # delay error output sleep (5) if (! ($debug & 0x1000)); OUTPUT_BEGIN: ## Print output # ## HTML header &print_tagoutput ("Content-type: text/html\n\n"); &print_textonly ("Content-type: text/plain\n\n"); if ($outputformat eq "htmlfull") { &print_tagoutput ( "\n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " " ); print $text{'title'}->{$lang}; &print_tagoutput ( "\n" ); # automatic redirect on errors if (defined $error && defined $ENV{'SCRIPT_NAME'} && $error_flag == 0) { if ($error_insert_input == 1) { $uri .= "input=" . uri_escape($input); }; if (defined $lang) { if (length($uri) > 0) { $uri .= "&"; }; $uri .= "lang=$lang"; }; if (length($uri) > 0) { $uri = "?" . $uri; }; &print_tagoutput ( " \n" ); }; &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); }; if (defined $error) { print $error . "\n"; if ($outputformat eq "htmlfull") { if (defined $error && defined $ENV{'SCRIPT_NAME'} && $error_flag == 0) { print " (redirected soon back)\n"; } else { print " (hit 'back' in browser)\n"; }; }; goto("OUTPUT_END"); }; &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); for (my $i = 0; $i < $db_columns + 1; $i++) { &print_tagoutput ( " \n" ); }; &print_tagoutput ( " \n" ); if ($mode eq "form" || $mode eq "mixed") { # sleep 500 ms select(undef, undef, undef, 0.5) if (! ($debug & 0x1000)); # Input &print_textonly ("\n"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); if (defined $input && !defined $input_default) { &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_input, \@sort_input, 'form'); }; }; if ($mode eq "info" || $mode eq "mixed") { &print_textonly("INFO__OUTPUTVERSION=\"" . $outputversion_textkeyvalue . "\"\n") if ($outputformat eq "textkeyvalue"); # Client &print_textonly ("\n") if ($outputformat ne "textkeyvalue"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_remote, \@sort_remote, 'client'); # Proxy if (scalar(@proxy_addresses) > 0) { &print_textonly ("\n"); &print_textonly("PROXY__COUNT=\"" . scalar(@proxy_addresses) . "\"\n") if ($outputformat eq "textkeyvalue"); }; my $proxy_count = 0; for my $address (@proxy_addresses) { $proxy_count++; undef %infoh_proxy; undef @sort_proxy; $result = ipv6calc_exec($address, "***proxy***", \%infoh_proxy, \@sort_proxy); if ($result != 0) { # silently skip next; } else { # add information from "via" header if (defined $proxy_infos[$proxy_count - 1]) { $infoh_proxy{'PROXY_INFO'} = $proxy_infos[$proxy_count - 1]; splice @sort_proxy, 0, 0, 'PROXY_INFO'; }; &print_textonly ("\n") if ($outputformat ne "textkeyvalue"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_proxy, \@sort_proxy, 'proxy', $proxy_count); }; }; if ((defined $addr_server) && ($skip_server == 0)) { # Server &print_textonly ("\n") if ($outputformat ne "textkeyvalue"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_server, \@sort_server, 'server'); }; }; ## create uri sub create_uri($) { my $string = $_[0]; $string =~ s#(http://[^ ]+)#$1#g; return($string); }; # Footer &print_textonly ("\n"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( "
\n" ); &print_tagoutput ( "
\n" ); if (!defined $input) { $input = "::1"; $input_default = 1; }; &print_tagoutput ( "

IPv4/IPv6/MAC/EUI-64 " . $text{'Address'}->{$lang} . ": \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " {$lang} . "\"> {$lang} . "\">\n" ); &print_tagoutput ( "

\n" ); &print_tagoutput ( "
\n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " {$lang} . "\">\n" ); &print_tagoutput ( "
\n" ); &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'INPUT'}->{$lang} . " " . $input; &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'REMOTE'}->{$lang} if ($outputformat ne "textkeyvalue"); &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'PROXY'}->{$lang} . " #" . $proxy_count if ($outputformat ne "textkeyvalue"); &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'SERVER'}->{$lang} if ($outputformat ne "textkeyvalue"); &print_textonly ("\n"); &print_tagoutput ( "
\n" ); my $datetime = POSIX::strftime("%Y-%m-%d %H:%M:%S", gmtime) . " UTC"; if ($outputformat =~ /^html/o) { print " " . $text{'generated'}->{$lang} . " " . encode_entities($program_name) . " " . encode_entities($program_version) . ", " . encode_entities($program_copyright) . " " . $text{'at'}->{$lang} . " " . $datetime . "\n"; print "
\n"; print " " . $text{'powered'}->{$lang} . " " . encode_entities($ipv6calc_name) . " " . encode_entities($ipv6calc_version) . ", " . encode_entities($ipv6calc_copyright); if (length($ipv6calc_features) > 0) { print " (features: " . $ipv6calc_features . ")"; }; if (length($ipv6calc_capabilities) > 0) { print " (capabilities: " . $ipv6calc_capabilities . ")"; }; if (length($ipv6calc_settings) > 0) { print " (settings: " . $ipv6calc_settings . ")"; }; print "\n"; if (scalar(keys %db_info_ip2location) > 0) { print "
\n"; print " " . $text{'powered'}->{$lang} . " IP2Location " . $text{'database'}->{$lang} . " " . create_uri(encode_entities(join(" / ", sort keys %db_info_ip2location))). "\n"; }; if (scalar(keys %db_info_geoip) > 0) { print "
\n"; print " " . $text{'powered'}->{$lang} . " MaxMind " . $text{'database'}->{$lang} . " " . encode_entities(join(" / ", sort keys %db_info_geoip)) . "\n"; }; if (scalar(keys %db_info_dbip) > 0) { print "
\n"; print " " . $text{'powered'}->{$lang} . " db-ip.com " . $text{'database'}->{$lang} . " " . encode_entities(join(" / ", sort keys %db_info_dbip)) . "\n"; }; if (scalar(keys %db_info_external) > 0) { print "
\n"; print " " . $text{'powered'}->{$lang} . " External " . $text{'database'}->{$lang} . " " . encode_entities(join(" / ", sort keys %db_info_external)) . "\n"; }; if (scalar(keys %db_info_builtin) > 0) { print "
\n"; print " " . $text{'powered'}->{$lang} . " BuiltIn " . $text{'database'}->{$lang} . " " . encode_entities(join(" / ", sort keys %db_info_builtin)) . "\n"; }; } else { # text output print "INFO__GENERATED=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'generated'}->{$lang} . " " . $program_name . " " . $program_version . ", " . $program_copyright . " " . $text{'at'}->{$lang} . " " . $datetime . $chr_quote . "\n"; print "INFO__POWEREDBY=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'powered'}->{$lang} . " " . $ipv6calc_name . " " . $ipv6calc_version . ", " . $ipv6calc_copyright . " (http://www.deepspace6.net/projects/ipv6calc.html)"; if (length($ipv6calc_features) > 0) { print " (features: " . $ipv6calc_features . ")"; }; if (length($ipv6calc_capabilities) > 0) { print " (capabilities: " . $ipv6calc_capabilities . ")"; }; if (length($ipv6calc_settings) > 0) { print " (settings: " . $ipv6calc_settings . ")"; }; print $chr_quote . "\n"; if (scalar(keys %db_info_ip2location) > 0) { print "INFO__POWEREDBY_IP2LOCATION=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_ip2location) . " (http://www.ip2location.com)" . $chr_quote . "\n"; }; if (scalar(keys %db_info_geoip) > 0) { print "INFO__POWEREDBY_GEOIP=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_geoip) . " (http://www.maxmind.com)" . $chr_quote . "\n"; }; if (scalar(keys %db_info_dbip) > 0) { print "INFO__POWEREDBY_DBIP=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_dbip) . " (http://www.db-ip.com)" . $chr_quote . "\n"; }; if (scalar(keys %db_info_external) > 0) { print "INFO__POWEREDBY_EXTERNAL=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_external) . $chr_quote . "\n"; }; if (scalar(keys %db_info_builtin) > 0) { print "INFO__POWEREDBY_BUILTIN=" if ($outputformat eq "textkeyvalue"); print $chr_quote . $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_builtin) . $chr_quote . "\n"; }; }; &print_tagoutput ( "
\n" ); OUTPUT_END: if ($outputformat eq "htmlfull") { &print_tagoutput ( " \n" ); &print_tagoutput ( "\n" ); }; exit ($returncode); ipv6calc-1.0.0/ipv6calcweb/ipv6calcweb.conf000066400000000000000000000032621312366535500205140ustar00rootroot00000000000000## Access control Order Deny,Allow # Allow from localhost Allow from 127.0.0.1 Allow from ::1 # Allow from all (enable this once you want to serve this as a public service #Allow from all # Final default Deny from all ## mode of CGI: info (default), form (display a form for user input), mixed (both) SetEnv HTTP_IPV6CALCWEB_MODE info ## server information included: 0 (default), 1 (show information about server) SetEnv HTTP_IPV6CALCWEB_INFO_SERVER 0 ## debug to error log, check ipv6calcweb.cgi debug section for more SetEnv HTTP_IPV6CALCWEB_DEBUG 0 ## default output format: html (default if SERVER_PROTOCOL=INCLUDED, aka called by ServerSideIncludes), htmlfull (default), text, textkeyvalue #SetEnv HTTP_IPV6CALCWEB_OUTPUT_FORMAT textkeyvalue ## switch HTML output format from sequential listing to subcolumns # SetEnv HTTP_IPV6CALCWEB_OUTPUT_FORMAT_HTML_DB subcolumns ## path to ipv6calc binary (optional) # SetEnv HTTP_IPV6CALCWEB_BIN_IPV6CALC /usr/bin/ipv6calc ## IP2Location database directory (optional) # SetEnv HTTP_IPV6CALCWEB_DB_IP2LOCATION_DIR /var/local/share/IP2Location ## IP2Location library file (optional in dyn-load support) # SetEnv HTTP_IPV6CALCWEB_DB_IP2LOCATION_LIB libIP2Location.so ## GeoIP database directory (optional) # SetEnv HTTP_IPV6CALCWEB_DB_GEOIP_DIR /var/local/share/GeoIP ## GeoIP library file (optional on dyn-load support) # SetEnv HTTP_IPV6CALCWEB_DB_GEOIP_LIB libGeoIP.so.1 ## DBIP database directory (optional) # SetEnv HTTP_IPV6CALCWEB_DB_DBIP_DIR /var/local/share/DBIP/ ## External database directory (optional) # SetEnv HTTP_IPV6CALCWEB_DB_EXTERNAL_DIR /var/local/share/ipv6calc/db/ ipv6calc-1.0.0/ipv6calcweb/test_ipv6calcweb.sh000077500000000000000000000072501312366535500212440ustar00rootroot00000000000000#!/bin/bash # # Project : ipv6calc/ipv6calcweb # File : test_ipv6calcweb.sh # Version : $Id: 664f076dd0193c9b492bb9b8120a0ee806a7f83c $ # Copyright : 2012-2014 by Peter Bieringer # # Information: # Test script for ipv6calcweb # while getopts "Vf:d" opt; do case $opt in f) opt_format="$OPTARG" ;; d) opt_debug=1 ;; V) verbose=1 ;; *) echo "$0 [-V] [-d] [-f ]" echo " -d debug" echo " -V verbose" echo " -f format option" exit 1 ;; esac done shift $[ $OPTIND - 1 ] if [ -z "$1" ]; then echo "Need IPv4/v6 address as argument #1" exit 1 fi if [ ! -f ipv6calcweb.cgi ]; then make || exit 1 fi if [ ! -x ipv6calcweb.cgi ]; then chmod u+x ipv6calcweb.cgi fi ## very basic output format tests test="run 'ipv6calc' very basic output format tests" echo "INFO : $test" for format in textkeyvalue text html htmlfull; do if [ -n "$opt_format" -a "$opt_format" != "$format" ]; then echo "NOTICE: skip format: $format" continue fi [ "$verbose" = "1" ] && echo "INFO : test format: $format" [ "$verbose" = "1" ] && echo "DEBUG : execute: HTTP_IPV6CALCWEB_DEBUG=0x1000 HTTP_IPV6CALCWEB_OUTPUT_FORMAT=\"$format\" ./ipv6calcweb.cgi" if [ "$opt_debug" = "1" ]; then HTTP_IPV6CALCWEB_DEBUG="0x1000" HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" ./ipv6calcweb.cgi rc=$? else if [ "$verbose" = "1" ]; then HTTP_IPV6CALCWEB_DEBUG="0x1000" HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" ./ipv6calcweb.cgi >/dev/null rc=$? else HTTP_IPV6CALCWEB_DEBUG="0x1000" HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" ./ipv6calcweb.cgi >/dev/null 2>/dev/null rc=$? fi fi if [ $rc -ne 0 ];then echo "ERROR : output format reports an error: $format" if [ "$opt_debug" != "1" ]; then HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" ./ipv6calcweb.cgi fi exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" ## more sophisticated checks REMOTE_ADDR="$1" REMOTE_HOST="client.domain.example" HTTP_USER_AGENT="test_ipv6calcweb" SERVER_ADDR="192.0.2.1" SERVER_NAME="server.domain.example" QUERY_STRING="$2" HTTP_IPV6CALCWEB_DEBUG="0x1000" HTTP_IPV6CALCWEB_INFO_SERVER="1" HTTP_X_FORWARDED_FOR="5.6.7.8, 9.10.11.12" HTTP_VIA="1.0 fred, 1.1 nowhere.com" export REMOTE_ADDR REMOTE_HOST HTTP_USER_AGENT SERVER_ADDR SERVER_NAME QUERY_STRING HTTP_IPV6CALCWEB_DEBUG HTTP_IPV6CALCWEB_INFO_SERVER HTTP_X_FORWARDED_FOR HTTP_VIA test="run 'ipv6calc' sophisticated tests" echo "INFO : $test" for format in textkeyvalue text html htmlfull; do if [ -n "$opt_format" -a "$opt_format" != "$format" ]; then echo "NOTICE: skip format: $format" continue fi HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" export HTTP_IPV6CALCWEB_OUTPUT_FORMAT if [ "$verbose" = "1" ]; then OUTPUT="`./ipv6calcweb.cgi`" result=$? else OUTPUT="`./ipv6calcweb.cgi 2>&1`" result=$? fi if [ "$opt_debug" = "1" ]; then echo "$OUTPUT" fi if [ $result -ne 0 ];then echo "ERROR : output format reports an error: $format" if [ "$opt_debug" != "1" ]; then echo "$OUTPUT" fi exit 1 fi [ "$verbose" = "1" ] || echo -n "." done || exit 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" #if [ $result -ne 0 ]; then # echo "TEST FAILED (exit code != 0)" # HTTP_IPV6CALCWEB_DEBUG="0xffff" # export HTTP_IPV6CALCWEB_DEBUG # ./ipv6calcweb.cgi # exit 1 #else # # check output # if echo "$OUTPUT" | egrep -q "(ERROR|problem)"; then # echo "TEST FAILED (ERROR|problem) occurs" # HTTP_IPV6CALCWEB_DEBUG="0xffff" # export HTTP_IPV6CALCWEB_DEBUG # ./ipv6calcweb.cgi # exit 1 # fi # if echo "$OUTPUT" | egrep -q "(reserved)"; then # [ "$verbose" = "1" ] || echo "$OUTPUT" # fi #fi ipv6calc-1.0.0/ipv6calcweb/test_ipv6calcweb_form.sh000077500000000000000000000053741312366535500222740ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/ipv6calcweb # File : test_ipv6calcweb_form.sh # Version : $Id: f7637d42752e6b6ac0e707564c5935e45fe52bf4 $ # Copyright : 2012-2015 by Peter Bieringer # # Information: # Test script for form mode of ipv6calcweb # verbose=0 while getopts "Vh\?" opt; do case $opt in V) verbose=1 ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done # Test Scenarios for autodetection "good case" source ../ipv6calc/test_scenarios.sh if [ ! -x ipv6calcweb.cgi ]; then echo "ERROR : run make" exit 1 fi REMOTE_ADDR="127.0.0.1" REMOTE_HOST="client.domain.example" HTTP_USER_AGENT="test_ipv6calcweb" SERVER_ADDR="192.0.2.1" SERVER_NAME="server.domain.example" HTTP_IPV6CALCWEB_MODE="form" HTTP_IPV6CALCWEB_DEBUG="0x1000" export REMOTE_ADDR REMOTE_HOST HTTP_USER_AGENT SERVER_ADDR SERVER_NAME QUERY_STRING HTTP_IPV6CALCWEB_MODE HTTP_IPV6CALCWEB_DEBUG # extract tokenhash & tokentime OUTPUT="`./ipv6calcweb.cgi`" result=$? if [ $result -ne 0 ]; then echo "TEST FAILED" exit 1 else # check output if echo "$OUTPUT" | egrep -q "(ERROR|problem)"; then echo "TEST FAILED" exit 1 fi fi tokenhash="`echo "$OUTPUT" | grep 'name="tokenhash"' | sed 's/.* name="tokenhash" value="\([0-9a-f]*\)" .*/\1/'`" tokentime="`echo "$OUTPUT" | grep 'name="tokentime"' | sed 's/.* name="tokentime" value="\([0-9]*\)" .*/\1/'`" if [ ${#tokenhash} -ne 72 ]; then echo "TEST FAILED (tokenhash extraction)" echo "$OUTPUT" exit 1 fi if [ ${#tokentime} -ne 10 ]; then echo "TEST FAILED (tokentime extraction)" echo "$OUTPUT" exit 1 fi [ "$verbose" = "1" ] && echo "DEBUG: extracted tokenhash: $tokenhash" [ "$verbose" = "1" ] && echo "DEBUG: extracted tokentime: $tokentime" test="run 'ipv6calcweb.cgi ' good tests" echo "INFO : $test" testscenarios_auto_good | grep -v "^#" | egrep -vw "(bitstring|base85)" | grep -v "%" | while read input type; do input_escaped="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$input")" QUERY_STRING="input=$input_escaped&tokenhash=$tokenhash&tokentime=$tokentime" [ "$verbose" = "1" ] && echo "Test: $input ($input_escaped) ($type)" [ "$verbose" = "1" ] && echo "QUERY_STRING=$QUERY_STRING" export REMOTE_ADDR REMOTE_HOST HTTP_USER_AGENT SERVER_ADDR SERVER_NAME QUERY_STRING HTTP_IPV6CALCWEB_MODE if [ "$verbose" = "1" ]; then OUTPUT="`./ipv6calcweb.cgi`" result=$? else OUTPUT=$(./ipv6calcweb.cgi 2>/dev/null) result=$? fi [ "$verbose" = "1" ] && echo "Result: $result" if [ $result -ne 0 ]; then echo "TEST FAILED" exit 1 else # check output if echo "$OUTPUT" | egrep -q "(ERROR|problem)"; then echo "TEST FAILED" exit 1 fi fi [ "$verbose" = "1" ] || echo -n "." done || exit $? [ "$verbose" = "1" ] || echo echo "INFO : $test successful" ipv6calc-1.0.0/ipv6loganon/000077500000000000000000000000001312366535500154725ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6loganon/Makefile.in000066400000000000000000000042021312366535500175350ustar00rootroot00000000000000# Project : ipv6calc/ipv6loganon # File : Makefile # Version : $Id: 9ae5cea332300f6a559eeef7e77b813e0513327b $ # Copyright : 2002-2014 by Peter Bieringer # # Information: # Makefile for ipv6loganon # prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall -g @CFLAGS_EXTRA@ CFLAGS += -D__EXTENSIONS__ INCLUDES= $(COPTS) @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ @GEOIP_INCLUDE_L1@ -I../ -I../lib/ LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @GEOIP_LIB_L1@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ LDFLAGS_EXTRA = @LDFLAGS_EXTRA@ OBJS = ipv6loganon.o ipv6loganonhelp.o # splint SPLINT_OPT_OUTSIDE = -uniondef +matchanyintegral --nullassign +ignoresigns -compdef -usedef -modobserver -formatconst -warnposix -exportlocal SPLINT_TODO_LATER = -unrecog -retvalint all: ipv6loganon .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) $(OBJS): ipv6loganonoptions.h ipv6loganonhelp.h ipv6loganon.h ../config.h ../lib/ipv6calccommands.h libipv6calc: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper: cd ../ && ${MAKE} lib-make ipv6loganon: $(OBJS) libipv6calc libipv6calc_db_wrapper $(CC) -o ipv6loganon $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm static: ipv6loganon $(CC) -o ipv6loganon-static $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm -static distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6loganon ipv6loganon-static *.o test: ipv6loganon LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6loganon.sh LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6loganon.sh bulk test-minimal: ${MAKE} test test-ldlibpath: ipv6loganon LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6loganon.sh LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6loganon.sh bulk codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6loganon $(DESTDIR)$(bindir) ipv6calc-1.0.0/ipv6loganon/README000066400000000000000000000055151312366535500163600ustar00rootroot00000000000000$Id: 47c0025f5952d76099a36c512804fbd4f0c183a9 $ ipv6loganon is a HTTP server log file anonymizer It expect a log line on stdin with an IPv4/IPv6 address as first token. This token would be anonymized according to given/default options. The anonymizer would keep as much information as possible for IPv6 address types. Client-side IID would be anonymized by - EUI-48 based: serial number would be zero'ed, keeping OID - EUI-64 based: serial number would be zero'ed, keeping OID - ISATAP: client IPv4 address would be anonymized by given IPv4 mask - TEREDO: client IPv4 address would be anonymized by given IPv4 mask client port would be zero'ed - 6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 mask - local: whole IID would be zero'ed Client-side SLA would be anonymized by - SLA would be zero'ed Prefix would be anonymized by - 6to4: client IPv4 address would be anonymized by given IPv4 mask Compat/Mapped IPv4 addresses would be anonymized by - IPv4 address would be anonymized by given IPv4 mask Afterwards, the modified address and the trailing line would be printed to stdout. Example: Original lines (stdin): 207.46.98.53 - - [01/Jan/2007:00:01:15 +0100] "GET /Linux+IPv6-HOWTO/x1112.html HTTP/1.0" 200 6162 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 253 6334 2002:52b6:6b01:1:216:17ff:fe01:2345 - - [10/Jan/2007:15:04:28 +0100] "GET /favicon.ico HTTP/1.1" 200 4710 "http://www.bieringer.de/linux/IPv6/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9-1.fc6 Firefox/1.5.0.9 pango-text" 413 5005 Modified lines (stdout): 207.46.98.0 - - [01/Jan/2007:00:01:15 +0100] "GET /Linux+IPv6-HOWTO/x1112.html HTTP/1.0" 200 6162 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 253 6334 2002:52b6:6b00:0:216:17ff:fe00:0 - - [10/Jan/2007:15:04:28 +0100] "GET /favicon.ico HTTP/1.1" 200 4710 "http://www.bieringer.de/linux/IPv6/" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9-1.fc6 Firefox/1.5.0.9 pango-text" 413 5005 Since version 0.90.0 also inline usage in Apache webserver is supported like: httpd.conf: # Default log CustomLog "/var/log/httpd/access_log" combined # Anonymized log (in addition, more than one directive is supported) CustomLog "|/usr/local/bin/ipv6loganon -a -f /var/log/httpd/access_log" combined in conjunction with cronolog: # Default log CustomLog "|/usr/sbin/cronolog /var/log/httpd/access.log-%Y%m%d" combined # Chained piped log (works with Apache 2.0/2.2) CustomLog "|/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access.log-%Y%m%d" combined # Chained piped log (works with Apache >= 2.4, see https://httpd.apache.org/docs/2.4/logs.html#piped) CustomLog "|$/usr/bin/ipv6loganon -f |/usr/sbin/cronolog /var/log/httpd/access.log-%Y%m%d" combined See also example file in ../examples/apache/ ipv6calc-1.0.0/ipv6loganon/ipv6loganon.c000066400000000000000000000357331312366535500201130ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6loganon.c * Version : $Id: ad0cb3ded29cf5c7ed33ffe4a0634cf8fa3ce5cc $ * Copyright : 2007-2017 by Peter Bieringer * * Information: * Dedicated program for logfile anonymization */ #include #include #include #include #include #include "ipv6loganon.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "ipv6calccommands.h" #include "ipv6calctypes.h" #include "ipv6loganonoptions.h" #include "ipv6calchelp.h" #include "ipv6loganonhelp.h" #include "ipv6calcoptions.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "libmac.h" #include "libeui64.h" #include "librfc1884.h" #include "librfc1886.h" #include "librfc1924.h" #include "libifinet6.h" #include "librfc2874.h" #include "librfc3056.h" #include "libeui64.h" #include "libieee.h" #include "../databases/lib/libipv6calc_db_wrapper.h" #define LINEBUFFER 16384 long int ipv6calc_debug = 0; // ipv6calc_debug usage ok int flag_nocache = 0; /* anonymization default values */ s_ipv6calc_anon_set ipv6calc_anon_set; int mask_ipv4; int mask_ipv6; int mask_iid; int mask_mac; /* features */ int feature_zeroize = 1; // always supported int feature_anon = 1; // always supported int feature_kp = 0; // will be checked later /* prototypes */ static int anonymizetoken(char *result, const size_t resultstring_length, const char *token); static void lineparser(); /* LRU cache */ #define CACHE_LRU_SIZE 200 static int cache_lru_max = 0; static int cache_lru_last = 0; int cache_lru_limit = 20; /* optimum */ static char cache_lru_key_token[CACHE_LRU_SIZE][NI_MAXHOST]; static char cache_lru_value[CACHE_LRU_SIZE][NI_MAXHOST]; static long int cache_lru_statistics[CACHE_LRU_SIZE]; char file_out[NI_MAXHOST] = ""; int file_out_flag = 0; int file_out_flush = 0; char file_out_mode[NI_MAXHOST] = ""; FILE *FILE_OUT; void printversion_verbose(const int level) { printversion(); fprintf(stderr, "\n"); ipv6calc_print_features_verbose(level); }; /**************************************************/ /* main */ int main(int argc,char *argv[]) { /* check compatibility */ #ifdef SHARED_LIBRARY IPV6CALC_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) IPV6CALC_DB_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) #endif // SHARED_LIBRARY int i, lop, result; uint32_t command = 0; /* options */ struct option longopts[IPV6CALC_MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; extern int optopt; ipv6calc_quiet = 1; //default for ipv6loganon /* initialize debug value from environment for bootstrap debugging */ ipv6calc_debug_from_env(); // ipv6calc_debug usage ok /* add options */ ipv6calc_options_add_common_anon(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add_common_basic(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add(shortopts, sizeof(shortopts), longopts, &longopts_maxentries, ipv6loganon_shortopts, ipv6loganon_longopts, MAXENTRIES_ARRAY(ipv6loganon_longopts)); /* default */ result = libipv6calc_anon_set_by_name(&ipv6calc_anon_set, "anonymize-standard"); if (result != 0) { fprintf(stderr, "major problem, ipv6calc anonymization default preset not found: anonymize-standard\n"); exit(EXIT_FAILURE); }; /* initialize options from environment */ ipv6calc_common_options_from_env(longopts, &ipv6calc_anon_set); /* Fetch the command-line arguments. */ while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Parsing option: 0x%08x (%d: %s)", i, optind, argv[optind - 1]); if ((i == '?') && (strcmp(argv[optind - 1], "-?") != 0)) { exit(EXIT_FAILURE); }; /* catch common options */ result = ipv6calcoptions_common_basic(i, optarg, longopts); if (result == 0) { // found continue; }; /* catch "common anon" options */ result = ipv6calcoptions_common_anon(i, optarg, longopts, &ipv6calc_anon_set); if (result == 0) { // found continue; }; switch (i) { case -1: break; case 'v': if ((command & CMD_printversion_verbose) != 0) { // 3rd time '-v' command |= CMD_printversion_verbose2; } else if ((command & CMD_printversion) != 0) { // 2nd time '-v' command |= CMD_printversion_verbose; } else { command |= CMD_printversion; }; break; case 'h': case '?': command |= CMD_printhelp; break; case 'f': file_out_flush = 1; break; case 'w': case 'a': if (strlen(optarg) < sizeof(file_out)) { snprintf(file_out, sizeof(file_out), "%s", optarg); file_out_flag = 1; } else { fprintf(stderr, " Output file too long: %s\n", optarg); exit(EXIT_FAILURE); }; switch (i) { case 'w': snprintf(file_out_mode, sizeof(file_out_mode), "%s", "w"); break; case 'a': snprintf(file_out_mode, sizeof(file_out_mode), "%s", "a"); break; }; break; case 'c': cache_lru_limit = atoi(optarg); if (cache_lru_limit > CACHE_LRU_SIZE) { cache_lru_limit = CACHE_LRU_SIZE; fprintf(stderr, " Cache limit too big, built-in limit: %d\n", cache_lru_limit); }; if (cache_lru_limit < 1) { cache_lru_limit = 1; fprintf(stderr, " Cache limit too small, take minimum: %d\n", cache_lru_limit); }; break; case 'n': flag_nocache = 1; break; default: ipv6loganon_printinfo(); exit(EXIT_FAILURE); break; }; }; argv += optind; argc -= optind; /* initialise database wrapper */ result = libipv6calc_db_wrapper_init(""); if (result != 0) { exit(EXIT_FAILURE); }; /* check for KeepTypeAsnCC support */ if ((libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB) == 1) \ && (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB) == 1)) { feature_kp = 1; }; /* do work depending on selection */ DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "command=0x%08x", command); if ((command & CMD_printversion) != 0) { if ((command & CMD_printversion_verbose) != 0) { printversion_verbose(((command & CMD_printversion_verbose2) !=0) ? LEVEL_VERBOSE2 : LEVEL_VERBOSE); } else { printversion(); }; if ((command & CMD_printhelp) != 0) { printversion_help(); }; exit(EXIT_SUCCESS); }; if ((command & CMD_printhelp) != 0) { ipv6loganon_printhelp(); exit(EXIT_FAILURE); }; /* check requirements */ if (libipv6calc_anon_supported(&ipv6calc_anon_set) == 0) { fprintf(stderr, "ipv6calc anonymization method not supported\n"); exit(EXIT_FAILURE); }; if (file_out_flag == 1) { DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Output file specified: %s", file_out); FILE_OUT = fopen(file_out, file_out_mode); if (! FILE_OUT) { fprintf(stderr, "Can't open Output file: %s\n", file_out); exit(EXIT_FAILURE); } else { DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Output file opened successfully in %s mode: %s", (strcmp(file_out_mode, "a") == 0) ? "append" : "write", file_out); file_out_flag = 2; }; }; lineparser(); if (file_out_flag == 2) { DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Output file is closed now: %s", file_out); fflush(FILE_OUT); fclose(FILE_OUT); } else { fflush(stdout); }; libipv6calc_db_wrapper_cleanup(); exit(EXIT_SUCCESS); }; /* * Line parser */ static void lineparser(void) { char linebuffer[LINEBUFFER]; char token[LINEBUFFER]; char resultstring[LINEBUFFER]; char *charptr, *cptr, **ptrptr; int linecounter = 0, retval, i; ptrptr = &cptr; if (ipv6calc_quiet == 0) { fprintf(stderr, "Expecting log lines on stdin\n"); }; while (1 == 1) { /* read line from stdin */ charptr = fgets(linebuffer, LINEBUFFER, stdin); if (charptr == NULL) { /* end of input */ break; }; linecounter++; if (linecounter == 1) { if (ipv6calc_quiet == 0) { fprintf(stderr, "Ok, proceeding stdin...\n"); }; }; DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Line number: %d", linecounter); if (strlen(linebuffer) >= LINEBUFFER) { fprintf(stderr, "Line too long: %d\n", linecounter); continue; }; if (strlen(linebuffer) == 0) { fprintf(stderr, "Line empty: %d\n", linecounter); continue; }; DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Got line: '%s'", linebuffer); /* look for first token */ charptr = strtok_r(linebuffer, " \t\n", ptrptr); if ( charptr == NULL ) { fprintf(stderr, "Line contains no token: %d\n", linecounter); continue; }; if ( strlen(charptr) >= LINEBUFFER) { fprintf(stderr, "Line too strange: %d\n", linecounter); continue; }; snprintf(token, sizeof(token), "%s", charptr); DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Token 1: '%s'", token); /* call anonymizer now */ retval = anonymizetoken(resultstring, sizeof(resultstring), charptr); if (retval != 0) { continue; }; /* print result and rest of line, if available */ if (*ptrptr[0] != '\0') { if (file_out_flag == 2) { fprintf(FILE_OUT, "%s %s", resultstring, *ptrptr); } else { printf("%s %s", resultstring, *ptrptr); }; } else { if (file_out_flag == 2) { fprintf(FILE_OUT, "%s\n", resultstring); } else { printf("%s\n", resultstring); }; }; if (file_out_flush == 1) { if (file_out_flag == 2) { fflush(FILE_OUT); } else { fflush(stdout); }; }; }; if (ipv6calc_quiet == 0) { fprintf(stderr, "...finished\n"); if (flag_nocache == 0) { fprintf(stderr, "Cache statistics:\n"); for (i = 0; i < cache_lru_limit; i++) { fprintf(stderr, "Cache distance: %3d hits: %8ld\n", i, cache_lru_statistics[i]); }; }; }; return; }; /* * Anonymize token */ static int anonymizetoken(char *resultstring, const size_t resultstring_length, const char *token) { uint32_t inputtype = FORMAT_undefined; int retval = 1, i; /* used structures */ ipv6calc_ipv6addr ipv6addr; ipv6calc_ipv4addr ipv4addr; ipv6calc_macaddr macaddr; ipv6calc_eui64addr eui64addr; DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Token: '%s'", token); /* clear resultstring */ resultstring[0] = '\0'; if (strlen(token) == 0) { return (1); }; /* use cache ? */ if (flag_nocache == 0 && cache_lru_max > 0) { /* check last seen one first */ DEBUGPRINT_WA(DEBUG_ipv6loganon_cache, "LRU cache: look for key=%s", token); if (strcmp(cache_lru_key_token[cache_lru_last - 1], token) == 0) { snprintf(resultstring, resultstring_length, "%s", cache_lru_value[cache_lru_last - 1]); cache_lru_statistics[0]++; DEBUGPRINT_WA(DEBUG_ipv6loganon_cache, "LRU cache: hit last line=%d key_token=%s value=%s", cache_lru_last - 1, token, resultstring); return (0); }; /* run backwards to first entry */ if (cache_lru_last > 1) { for (i = cache_lru_last - 1; i > 0; i--) { if (strcmp(cache_lru_key_token[i - 1], token) == 0) { snprintf(resultstring, resultstring_length, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_last - i]++; DEBUGPRINT_WA(DEBUG_ipv6loganon_cache, "LRU cache: hit line=%d key_token=%s value=%s", i - 1, token, resultstring); return (0); }; }; }; /* round robin */ if (cache_lru_last < cache_lru_max) { for (i = cache_lru_max; i > cache_lru_last; i--) { if (strcmp(cache_lru_key_token[i - 1], token) == 0) { snprintf(resultstring, resultstring_length, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_max - i + cache_lru_last]++; DEBUGPRINT_WA(DEBUG_ipv6loganon_cache, "LRU cache: hit line=%d key_token=%s value=%s", i - 1, token, resultstring); return (0); }; }; }; }; /* set addresses to invalid */ ipv6addr.flag_valid = 0; ipv4addr.flag_valid = 0; /* autodetection */ inputtype = libipv6calc_autodetectinput(token); DEBUGSECTION_BEGIN(DEBUG_ipv6loganon_general) if (inputtype != FORMAT_undefined) { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatstrings); i++) { if (inputtype == ipv6calc_formatstrings[i].number) { DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Found type: %s", ipv6calc_formatstrings[i].token); }; break; }; } else { DEBUGPRINT_NA(DEBUG_ipv6loganon_general, "Input type unknown"); return (1); }; DEBUGSECTION_END /* proceed input depending on type */ switch (inputtype) { case FORMAT_ipv6addr: retval = addr_to_ipv6addrstruct(token, resultstring, resultstring_length, &ipv6addr); break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(token, resultstring, resultstring_length, &ipv4addr); break; case FORMAT_eui64: retval = libeui64_addr_to_eui64addrstruct(token, resultstring, resultstring_length, &eui64addr); break; case FORMAT_macaddr: retval = addr_to_macaddrstruct(token, resultstring, resultstring_length, &macaddr); break; }; if (retval != 0) { fprintf(stderr, "Can't parse string: %s (%s)\n", token, resultstring); return 1; }; DEBUGPRINT_WA(DEBUG_ipv6loganon_general, "Token: '%s'", token); /***** postprocessing input *****/ DEBUGPRINT_NA(DEBUG_ipv6loganon_general, "Start of postprocessing input"); if (ipv6addr.flag_valid == 1) { /* anonymize IPv6 address according to settings */ libipv6addr_anonymize(&ipv6addr, &ipv6calc_anon_set); /* convert IPv6 address structure to string */ ipv6addrstruct_to_compaddr(&ipv6addr, resultstring, resultstring_length); } else if (ipv4addr.flag_valid == 1) { /* anonymize IPv4 address according to settings */ libipv4addr_anonymize(&ipv4addr, ipv6calc_anon_set.mask_ipv4, ipv6calc_anon_set.method); /* convert IPv4 address structure to string */ libipv4addr_ipv4addrstruct_to_string(&ipv4addr, resultstring, resultstring_length, 0); } else if (eui64addr.flag_valid == 1) { /* anonymize EUI-64C address according to settings */ libeui64_anonymize(&eui64addr, &ipv6calc_anon_set); /* convert EUI-64 address structure to string */ libeui64_eui64addrstruct_to_string(&eui64addr, resultstring, resultstring_length, 0); } else if (macaddr.flag_valid == 1) { /* anonymize MAC address according to settings */ libmacaddr_anonymize(&macaddr, &ipv6calc_anon_set); /* convert MAC address structure to string */ libmacaddr_macaddrstruct_to_string(&macaddr, resultstring, resultstring_length, 0); } else { /* probably reverse DNS resolving lookup string, do not touch */ snprintf(resultstring, resultstring_length, "%s", token); return (0); }; /* use cache ? */ if (flag_nocache == 0) { /* calculate pointer */ if (cache_lru_max < cache_lru_limit) { cache_lru_last++; cache_lru_max++; } else { if (cache_lru_last == cache_lru_limit) { cache_lru_last = 1; } else { cache_lru_last++; }; }; /* store key and value */ snprintf(cache_lru_key_token[cache_lru_last - 1], NI_MAXHOST, "%s", token); snprintf(cache_lru_value[cache_lru_last - 1], NI_MAXHOST, "%s", resultstring); DEBUGPRINT_WA(DEBUG_ipv6loganon_cache, "LRU cache: fill line=%d key_token=%s value=%s", cache_lru_last - 1, cache_lru_key_token[cache_lru_last - 1], cache_lru_value[cache_lru_last - 1]); }; return (0); }; ipv6calc-1.0.0/ipv6loganon/ipv6loganon.h000066400000000000000000000014041312366535500201040ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6loganon.h * Version : $Id: 7ca4baa79b02eaed839b93aff370aed73ae80300 $ * Copyright : 2007-2013 by Peter Bieringer * License : GNU GPL v2 * * Information: * Main header file */ /* global program related definitions */ #define PROGRAM_NAME "ipv6loganon" #define PROGRAM_COPYRIGHT "(P) & (C) 2007-" COPYRIGHT_YEAR " by Peter Bieringer " /* LRU cache maximum size */ #define CACHE_LRU_SIZE 200 #define DEBUG_ipv6loganon_general 0x00000001l #define DEBUG_ipv6loganon_cache 0x00000004l /* prototyping */ extern int cache_lru_limit; extern int mask_ipv4; extern int mask_iid; extern int feature_zeroize; extern int feature_anon; extern int feature_kp; ipv6calc-1.0.0/ipv6loganon/ipv6loganonhelp.c000066400000000000000000000053541312366535500207600ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6loganonhelp.c * Version : $Id: 3c2d4bae6d300cedf1aa801ef2eeb3571261b37a $ * Copyright : 2007-2013 by Peter Bieringer * License : GNU GPL v2 * * Information: * Help library */ #include #include #include #include "ipv6loganon.h" #include "ipv6calctypes.h" #include "ipv6calccommands.h" #include "ipv6calchelp.h" #include "config.h" /* display info */ void printversion(void) { fprintf(stderr, "%s: version %s", PROGRAM_NAME, PACKAGE_VERSION); if (feature_zeroize == 1) { fprintf(stderr, " ANON_ZEROISE"); }; if (feature_anon == 1) { fprintf(stderr, " ANON_ANONYMIZE"); }; if (feature_kp == 1) { fprintf(stderr, " ANON_KEEP-TYPE-ASN-CC"); }; fprintf(stderr, "\n"); }; void printversion_help(void) { fprintf(stderr, "\n"); fprintf(stderr, "Explanation of available(x)/possible(o) feature tokens\n"); fprintf(stderr, "%-22s%c %s\n", "ANON_ZEROISE", (feature_zeroize == 1)? 'x' : 'o', "Anonymization method 'zeroize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_ANONYMIZE", (feature_anon == 1) ? 'x' : 'o', "Anonymization method 'anonymize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_KEEP-TYPE-ASN-CC", (feature_kp == 1) ? 'x' : 'o', "Anonymization method 'keep-type-asn-cc'"); fprintf(stderr, "\n"); }; void printcopyright(void) { fprintf(stderr, "%s\n", PROGRAM_COPYRIGHT); }; void ipv6loganon_printinfo(void) { printversion(); printcopyright(); fprintf(stderr, "This program anonymizes IPv4/IPv6 addresses in HTTP server log files\n"); fprintf(stderr, "See '%s -?|-h|--help for online help\n", PROGRAM_NAME); }; /* print global help */ void ipv6loganon_printhelp(void) { printversion(); printcopyright(); fprintf(stderr, "\n"); fprintf(stderr, "This program anonymizes IPv4/IPv6 addresses in e.g. HTTP server log files\n"); printhelp_common(IPV6CALC_HELP_ALL); fprintf(stderr, " [-w|--write] : write output to file instead of stdout\n"); fprintf(stderr, " [-a|--append] : append output to file instead of stdout\n"); fprintf(stderr, " [-f|--flush] : flush output after each line\n"); fprintf(stderr, " [-V|--verbose] : be verbose\n"); fprintf(stderr, " [-n|--nocache] : disable caching\n"); fprintf(stderr, " [-c|--cachelimit ] : set cache limit\n"); fprintf(stderr, " default: %d\n", cache_lru_limit); fprintf(stderr, " maximum: %d\n", CACHE_LRU_SIZE); printhelp_action_dispatcher(ACTION_anonymize, 1); fprintf(stderr, "\n"); fprintf(stderr, " Takes data from stdin, outputs the processed data to stdout (default)\n"); fprintf(stderr, "\n"); fprintf(stderr, "\n"); return; }; ipv6calc-1.0.0/ipv6loganon/ipv6loganonhelp.h000066400000000000000000000006621312366535500207620ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6loganonhelp.h * Version : $Id: c2d605bf90a3a032553872c3918a3d6bd1a38ed1 $ * Copyright : 2007-2014 by Peter Bieringer * License : GNU GPL v2 * * Information: * Header file for ipv6loganonhelp.c */ extern void printversion(void); extern void printversion_help(void); extern void ipv6loganon_printinfo(void); extern void ipv6loganon_printhelp(void); ipv6calc-1.0.0/ipv6loganon/ipv6loganonoptions.h000066400000000000000000000016751312366535500215320ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6loganonoptions.h * Version : $Id: e0c9c7bb718671f28748aed60b1449e5b5490d72 $ * Copyright : 2007-2013 by Peter Bieringer * * Information: * Header file containing options for ipvloganon.c */ #include #include "ipv6calctypes.h" #ifndef _ipv6loganonoptions_h_ #define _ipv6loganonoptions_h_ /* Options */ /* define short options */ static char *ipv6loganon_shortopts = "vh?nc:w:a:f"; /* define long options */ static struct option ipv6loganon_longopts[] = { {"version", 0, NULL, (int) 'v' }, /* help options */ {"help" , 0, NULL, (int) 'h'}, /* special options */ {"nocache" , no_argument , 0, (int) 'n'}, {"flush" , no_argument , 0, (int) 'f'}, {"cachelimit", required_argument, 0, (int) 'c'}, {"write" , required_argument, 0, (int) 'w'}, {"append" , required_argument, 0, (int) 'a'}, }; #endif ipv6calc-1.0.0/ipv6loganon/test_ipv6loganon.sh000077500000000000000000000377161312366535500213500ustar00rootroot00000000000000#!/bin/bash # # Project : ipv6calc # File : test_ipv6loganon.sh # Version : $Id: bd4751f8c708e3e9e7da8a1f122fe57bb91efcfc $ # Copyright : 2007-2017 by Peter Bieringer # # Test program for "ipv6loganon" verbose=0 while getopts "Vh\?" opt; do case $opt in V) verbose=1 ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done if [ ! -x ./ipv6loganon ]; then echo "Binary './ipv6loganon' missing or not executable" exit 1 fi # Test proper option definitions echo "Test proper option definition" ./ipv6loganon -h >/dev/null if [ $? -ne 1 ]; then echo "ERROR : something wrong in option definition" exit 1 fi echo "Run 'ipv6loganon' version help test for feature tokens..." ./ipv6loganon -v -h retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon -v -h'!" exit 1 fi echo source ../ipv6calc/test_scenarios.sh testscenarios_standard() { # Address cat <&2 if [ "$1" != "bulk" ]; then test="run 'ipv6loganon' standard tests" echo "INFO : $test" testscenarios_standard | grep -v "^#" | while read line; do # extract result input="`echo $line | awk -F= '{ print $1 }' | sed 's/\W*$//g'`" result="`echo $line | awk -F= '{ print $2 }'`" if [ -z "$result" -o -z "$input" ]; then echo "Something is wrong in line '$line'" exit 1 fi [ "$verbose" = "1" ] && echo "IN : $input" [ "$verbose" = "1" ] && echo "CHECK : $result" # get result output="`echo "$input" | ./ipv6loganon -q`" retval=$? [ "$verbose" = "1" ] && echo "OUT : $output" if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon'!" [ "$verbose" = "1" ] || echo "IN : $input" [ "$verbose" = "1" ] || echo "CHECK : $result" [ "$verbose" = "1" ] || echo "OUT : $output" exit 1 fi # Check result if [ "$result" != "*" ]; then if [ "$output" != "$result" ]; then [ "$verbose" = "1" ] || echo "IN : $input" [ "$verbose" = "1" ] || echo "CHECK : $result" [ "$verbose" = "1" ] || echo "OUT : $output" echo "RESULT : fail" exit 1 fi fi [ "$verbose" = "1" ] && echo "RESULT : ok" [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done retval=$? [ "$verbose" = "1" ] || echo echo "INFO : $test successful" if [ $retval -eq 0 ]; then # special tests test="run 'ipv6loganon' special tests" echo "INFO : $test" testscenarios_special | grep -v "^#" | while read line; do # extract result input="`echo $line | awk -F= '{ print $1 }' | sed 's/\W*$//g'`" options="`echo $line | awk -F= '{ print $2 }'`" result="`echo $line | awk -F= '{ print $3 }'`" if [ -z "$result" -o -z "$input" -o -z "$options" ]; then echo "Something is wrong in line '$line'" exit 1 fi [ "$verbose" = "1" ] && echo "IN : $input" [ "$verbose" = "1" ] && echo "OPTIONS: $options" [ "$verbose" = "1" ] && echo "CHECK : $result" # get result output="`echo "$input" | ./ipv6loganon -q $options`" retval=$? [ "$verbose" = "1" ] && echo "OUT : $output" if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon'!" [ "$verbose" = "1" ] || echo "IN : $input" [ "$verbose" = "1" ] || echo "CHECK : $result" [ "$verbose" = "1" ] || echo "OUT : $output" exit 1 fi # Check result if [ "$result" != "*" ]; then if [ "$output" != "$result" ]; then [ "$verbose" = "1" ] || echo "IN : $input" [ "$verbose" = "1" ] || echo "CHECK : $result" [ "$verbose" = "1" ] || echo "OUT : $output" echo "RESULT : fail" exit 1 fi fi [ "$verbose" = "1" ] && echo "RESULT : ok" [ "$verbose" = "1" ] && echo [ "$verbose" = "1" ] || echo -n "." done retval=$? [ "$verbose" = "1" ] || echo echo "INFO : $test successful" fi echo else shift echo "Test with cache" testscenarios_cache | grep -v "^#" | ./ipv6loganon -V retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon'!" >&2 exit 1 fi echo "Test without cache" testscenarios_cache | grep -v "^#" | ./ipv6loganon -n retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon'!" >&2 exit 1 fi echo fi if [ $retval -ne 0 ]; then echo "ERROR : function tests failed" exit 1 fi run_loganon_reliability_tests() { if [ ! -x ../ipv6logstats/ipv6logstats ]; then echo "ERROR : missing binary: ../ipv6logstats/ipv6logstats (check build process)" return 1 fi if [ ! -x ../ipv6logconv/ipv6logconv ]; then echo "ERROR : missing binary: ../ipv6logconv/ipv6logconv (check build process)" return 1 fi if ! ../ipv6logstats/ipv6logstats -v | grep -qw STAT_REG; then echo "NOTICE: ipv6logstats misses basic database, skip tests" return 0 fi if ! ../ipv6logconv/ipv6logconv -v | grep -qw CONV_REG; then echo "NOTICE: ipv6logconv misses basic database, skip tests" return 0 fi local options="$*" if [ "$options" == "--anonymize-preset kp" ]; then list="`testscenarios_kp | ../ipv6calc/ipv6calc -E ipv4,ipv6`" else list="`testscenarios_standard | awk '{ print $1 }'`" fi if [ -z "$list" ]; then echo "ERROR : list empty in run_loganon_reliability_tests" return 1 fi list="$list `testscenarios_special | awk '{ print $1 }'`" sortlist="`echo "$list" | sort -u`" echo "INFO : run ipv6loganon/ipv6logstats reliability tests with options: $options" >&2 for entry in $sortlist; do echo "DEBUG : test: $entry" nonanonymized="`echo "$entry" | ../ipv6logstats/ipv6logstats -q | grep -v "Time:"`" anonymized="`echo "$entry" | ./ipv6loganon -q $options | ../ipv6logstats/ipv6logstats -q | grep -v "Time:"`" if [ -z "$nonanonymized" ]; then echo "ERROR : result empty: nonanonymized" return 1 fi if [ -z "$anonymized" ]; then echo "ERROR : result empty: anonymized" return 1 fi entry_anon="`echo "$entry" | ./ipv6loganon -q $options`" if [ "$nonanonymized" != "$anonymized" ]; then echo "ERROR : result not equal: $entry_anon" export anonymized export nonanonymized diff -u <(echo "$nonanonymized") <(echo "$anonymized") echo "ERROR : result not equal between anonymized and non-anonymized ipv6logstats: $entry <-> $entry_anon (options: $options)" return 1 fi done echo "INFO : run ipv6loganon/ipv6logconv reliability tests with options: $options" >&2 for entry in $sortlist; do echo "DEBUG : test: $entry" nonanonymized="`echo "$entry" | ../ipv6logconv/ipv6logconv -q --out any | grep -v "Time:"`" anonymized="`echo "$entry" | ./ipv6loganon -q $options | ../ipv6logconv/ipv6logconv -q --out any | grep -v "Time:"`" if [ -z "$nonanonymized" ]; then echo "ERROR : result empty: nonanonymized" return 1 fi if [ -z "$anonymized" ]; then echo "ERROR : result empty: anonymized" return 1 fi entry_anon="`echo "$entry" | ./ipv6loganon -q $options`" if [ "$nonanonymized" != "$anonymized" ]; then echo "ERROR : result not equal: $entry_anon" export anonymized export nonanonymized diff -u <(echo "$nonanonymized") <(echo "$anonymized") echo "ERROR : result not equal between anonymized and non-anonymized ipv6logconv: $entry_anon" return 1 fi done } run_loganon_options_tests() { test="run 'ipv6loganon' anonymization option tests" echo "INFO : $test" testscenarios_anonymization_options | while read line; do if [ -z "$line" ]; then continue fi options="`echo $line | awk '{ for ( i = 1; i < NF; i++) printf "%s ", $i }'`" input_result="`echo $line | awk '{ print $NF }'`" [ "$verbose" = "1" ] && echo "DEBUG : options=$options" [ "$verbose" = "1" ] && echo "DEBUG : input_result=$input_result" input=${input_result/=*/} result=${input_result/*=/} command="echo $input | ./ipv6loganon -q $options" result_real="`echo $input | ./ipv6loganon -q $options`" if [ $? -ne 0 ]; then echo "ERROR : command was not proper executed: $command" exit 1 fi if [ "$result" != "$result_real" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : result doesn't match on command: $command" echo "ERROR : result is : $result_real" echo "ERROR : result expected: $result" exit 1 else [ "$verbose" = "1" ] && echo "INFO : $command -> test ok" fi [ "$verbose" = "1" ] || echo -n "." done || return 1 [ "$verbose" = "1" ] || echo echo "INFO : $test successful" } run_loganon_options_kp_tests() { if ! ./ipv6loganon -vv 2>&1 | grep -q "Country4=1 Country6=1 ASN4=1 ASN6=1"; then echo "NOTICE 'ipv6calc' has not required support for Country/ASN included, skip option kp tests..." return 0 fi echo "Run 'ipv6loganon' anonymization option kp tests..." testscenarios_anonymization_options_kp | while read line; do if [ -z "$line" ]; then continue fi options="`echo $line | awk '{ for ( i = 1; i < NF; i++) printf "%s ", $i }'`" input_result="`echo $line | awk '{ print $NF }'`" echo "DEBUG : options=$options" echo "DEBUG : input_result=$input_result" input=${input_result/=*/} result=${input_result/*=/} command="echo $input | ./ipv6loganon -q $options" result_real="`echo $input | ./ipv6loganon -q $options`" if [ $? -ne 0 ]; then echo "ERROR : command was not proper executed: $command" exit 1 fi if [ "$result" != "$result_real" ]; then [ "$verbose" = "1" ] || echo echo "ERROR : result doesn't match on command: $command" echo "ERROR : result is : $result_real" echo "ERROR : result expected: $result" exit 1 else echo "INFO : $command -> test ok" fi done || return 1 run_loganon_reliability_tests "--anonymize-preset kp" if [ $? -ne 0 ]; then return 1 fi echo "INFO : test scenario with huge amount of addresses..." testscenario_hugelist ipv4 | ./ipv6loganon --anonymize-preset kp >/dev/null if [ $? -ne 0 ]; then echo "ERROR : exit code <> 0" exit 1 fi echo "INFO : test scenario with huge amount of addresses: OK" } #### Main run_loganon_reliability_tests if [ $? -ne 0 ]; then echo "ERROR : run_loganon_reliability_tests failed" exit 1 fi echo "INFO : run 'ipv6loganon' option tests..." >&2 # Test Scenarios source ../ipv6calc/test_scenarios.sh run_loganon_options_tests if [ $? -ne 0 ]; then echo "ERROR : run_loganon_options_tests failed" exit 1 fi run_loganon_options_kp_tests if [ $? -ne 0 ]; then echo "ERROR : run_loganon_options_kp_tests failed" exit 1 fi echo "All tests were successfully done!" >&2 exit 0 ipv6calc-1.0.0/ipv6logconv/000077500000000000000000000000001312366535500155045ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6logconv/Makefile.in000066400000000000000000000037251312366535500175600ustar00rootroot00000000000000# Project : ipv6calc/ipv6logconv # File : ipv6logconv/Makefile[.in] # Version : $Id: acf210d39e35cbfc38fac18aa19ae1822c269635 $ # Copyright : 2002-2014 by Peter Bieringer # # Information: # Makefile for ipv6logconv # prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall -g @CFLAGS_EXTRA@ CFLAGS += -D__EXTENSIONS__ INCLUDES= @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ @GEOIP_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @GEOIP_LIB_L1@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ LDFLAGS_EXTRA = @LDFLAGS_EXTRA@ OBJS = ipv6logconv.o ipv6logconvhelp.o # splint SPLINT_OPT_OUTSIDE = -uniondef +matchanyintegral --nullassign +ignoresigns -compdef -usedef -modobserver -formatconst -warnposix -exportlocal SPLINT_TODO_LATER = -unrecog -retvalint all: ipv6logconv .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) $(OBJS): ipv6logconvoptions.h ipv6logconvhelp.h ipv6logconv.h libipv6calc: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper: cd ../ && ${MAKE} lib-make ipv6logconv: $(OBJS) libipv6calc libipv6calc_db_wrapper $(CC) -o ipv6logconv $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm static: ipv6logconv $(CC) -o ipv6logconv-static $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm -static distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6logconv ipv6logconv-static *.o test: ipv6logconv LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6logconv.sh test-minimal: ${MAKE} test test-ldlibpath: ipv6logconv LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6logconv.sh codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6logconv $(DESTDIR)$(bindir) ipv6calc-1.0.0/ipv6logconv/ipv6logconv.c000066400000000000000000000562231312366535500201340ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6logconv.c * Version : $Id: 17c372190c0d3d2286f6b63e3dcda4fd1a2b1764 $ * Copyright : 2002-2017 by Peter Bieringer * * Information: * Dedicated program for logfile conversions */ #include #include #include #include #include #include "ipv6logconv.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "ipv6calccommands.h" #include "ipv6calctypes.h" #include "ipv6logconvoptions.h" #include "ipv6calchelp.h" #include "ipv6logconvhelp.h" #include "ipv6calcoptions.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "libmac.h" #include "librfc1884.h" #include "librfc1886.h" #include "librfc1924.h" #include "libifinet6.h" #include "librfc2874.h" #include "librfc3056.h" #include "libeui64.h" #include "libieee.h" #include "../databases/lib/libipv6calc_db_wrapper.h" #define LINEBUFFER 16384 long int ipv6calc_debug = 0; // ipv6calc_debug usage ok int flag_nocache = 0; /* supported output types: * ipv6addr * ipv4addr * addrtype : IPv4 | IPv6 */ /* prototypes */ static int converttoken(char *result, const size_t resultstring_length, const char *token, const long int outputtype, const int flag_skipunknown); static void lineparser(const long int outputtype); /* LRU cache */ #define CACHE_LRU_SIZE 200 static int cache_lru_max = 0; static int cache_lru_last = 0; static char cache_lru_key_token[CACHE_LRU_SIZE][NI_MAXHOST]; static long int cache_lru_key_outputtype[CACHE_LRU_SIZE]; static char cache_lru_value[CACHE_LRU_SIZE][NI_MAXHOST]; static long int cache_lru_statistics[CACHE_LRU_SIZE]; int feature_reg = 0; int feature_ieee = 0; /**************************************************/ /* main */ int main(int argc,char *argv[]) { /* check compatibility */ #ifdef SHARED_LIBRARY IPV6CALC_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) IPV6CALC_DB_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) #endif // SHARED_LIBRARY int i, lop, result; unsigned long int command = 0; cache_lru_limit = 20; /* optimum */ /* new option style storage */ uint32_t inputtype = FORMAT_undefined, outputtype = FORMAT_undefined; /* convert storage */ long int action = -1; /* options */ struct option longopts[IPV6CALC_MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; extern int optopt; /* check for UID */ if (getuid() == 0) { printversion(); fprintf(stderr, " DON'T RUN THIS PROGRAM AS root USER!\n"); fprintf(stderr, " This program uses insecure C string handling functions and is not full audited\n"); fprintf(stderr, " therefore parsing insecure and unchecked input like logfiles isn't a good choice\n"); exit(EXIT_FAILURE); }; /* initialize debug value from environment for bootstrap debugging */ ipv6calc_debug_from_env(); // ipv6calc_debug usage ok /* add options */ ipv6calc_options_add_common_basic(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add(shortopts, sizeof(shortopts), longopts, &longopts_maxentries, ipv6logconv_shortopts, ipv6logconv_longopts, MAXENTRIES_ARRAY(ipv6logconv_longopts)); if (argc <= 1) { ipv6logconv_printinfo(); exit(EXIT_FAILURE); }; /* initialize options from environment */ ipv6calc_common_options_from_env(longopts, NULL); /* Fetch the command-line arguments. */ while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { DEBUGPRINT_WA(DEBUG_ipv6logconv_general, "Parsing option: 0x%08x (%d: %s)", i, optind, argv[optind - 1]); if ((i == '?') && (strcmp(argv[optind - 1], "-?") != 0)) { exit(EXIT_FAILURE); }; /* catch common options */ result = ipv6calcoptions_common_basic(i, optarg, longopts); if (result == 0) { // found continue; }; switch (i) { case -1: break; case 'v': command |= CMD_printversion; break; case 'h': case '?': command |= CMD_printhelp; break; case 'c': cache_lru_limit = atoi(optarg); if (cache_lru_limit > CACHE_LRU_SIZE) { cache_lru_limit = CACHE_LRU_SIZE; fprintf(stderr, " Cache limit too big, built-in limit: %d\n", cache_lru_limit); }; if (cache_lru_limit < 1) { cache_lru_limit = 1; fprintf(stderr, " Cache limit too small, take minimum: %d\n", cache_lru_limit); }; break; case 'n': flag_nocache = 1; break; case CMD_outputtype: DEBUGPRINT_WA(DEBUG_ipv6logconv_general, "Got output string: %s", optarg); if ( (strcmp(optarg, "-?") == 0) || (strcmp(optarg, "-h") == 0) || (strcmp(optarg, "--help") == 0) ) { command = CMD_printexamples; break; }; outputtype = ipv6calctypes_checktype(optarg); if (outputtype == FORMAT_undefined) { fprintf(stderr, " Output option is unknown: %s\n", optarg); exit(EXIT_FAILURE); }; break; case CMD_printexamples: command = CMD_printexamples; break; default: fprintf(stderr, "Usage: (see '%s --command -?|-h|--help' for more help)\n", PROGRAM_NAME); ipv6logconv_printhelp(); break; }; }; argv += optind; argc -= optind; /* initialise database wrapper */ result = libipv6calc_db_wrapper_init(""); if (result != 0) { exit(EXIT_FAILURE); }; /* check for basic database support */ if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_REGISTRY | IPV6CALC_DB_IPV6_TO_REGISTRY | IPV6CALC_DB_CC_TO_REGISTRY) == 1) { feature_reg = 1; }; if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IEEE_TO_INFO) == 1) { feature_ieee = 1; }; /* do work depending on selection */ if ((command & CMD_printversion) != 0) { printversion(); if ((command & CMD_printhelp) != 0) { printversion_help(); }; exit(EXIT_SUCCESS); }; /* print help handling */ if (command & CMD_printhelp) { ipv6logconv_printhelp(); exit(EXIT_FAILURE); } else if (command == CMD_printexamples) { printhelp_output_dispatcher(outputtype); exit(EXIT_FAILURE); }; DEBUGPRINT_WA(DEBUG_ipv6logconv_general, "Debug value:%lx command:%lx inputtype:%lx outputtype:%lx action:%lx", (unsigned long) ipv6calc_debug, command, (unsigned long) inputtype, (unsigned long) outputtype, (unsigned long) action); // ipv6calc_debug usage ok if ((outputtype == FORMAT_any) && ((feature_reg == 0) || (feature_ieee == 0))) { fprintf(stderr, "Basic databases are missing for conversion and outputtype 'any'\n"); exit(EXIT_FAILURE); } else if ((outputtype == FORMAT_ouitype) && (feature_ieee == 0)) { fprintf(stderr, "Basic databases are missing for conversion and outputtype 'ouitype'\n"); exit(EXIT_FAILURE); } else if ((outputtype == FORMAT_addrtype) && (feature_reg == 0)) { fprintf(stderr, "Basic databases are missing for conversion and outputtype 'addrtype'\n"); exit(EXIT_FAILURE); }; /* call lineparser */ lineparser(outputtype); libipv6calc_db_wrapper_cleanup(); exit(EXIT_SUCCESS); }; /* * Line parser */ static void lineparser(const long int outputtype) { char linebuffer[LINEBUFFER]; char token[LINEBUFFER]; char resultstring[LINEBUFFER]; char *charptr, *cptr, **ptrptr; int linecounter = 0, retval, i; ptrptr = &cptr; if (ipv6calc_quiet == 0) { fprintf(stderr, "Expecting log lines on stdin\n"); }; while (1 == 1) { /* read line from stdin */ charptr = fgets(linebuffer, LINEBUFFER, stdin); if (charptr == NULL) { /* end of input */ break; }; linecounter++; if (linecounter == 1) { if (ipv6calc_quiet == 0) { fprintf(stderr, "Ok, proceeding stdin...\n"); }; }; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Line counter: %d", linecounter); if (strlen(linebuffer) >= LINEBUFFER) { fprintf(stderr, "Line too long: %d\n", linecounter); continue; }; if (strlen(linebuffer) == 0) { fprintf(stderr, "Line empty: %d\n", linecounter); continue; }; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Got line: '%s'", linebuffer); /* look for first token */ charptr = strtok_r(linebuffer, " \t\n", ptrptr); if ( charptr == NULL ) { fprintf(stderr, "Line contains no token: %d\n", linecounter); continue; }; if ( strlen(charptr) >= LINEBUFFER) { fprintf(stderr, "Line too strange: %d\n", linecounter); continue; }; snprintf(token, sizeof(token), "%s", charptr); DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Token 1: '%s'", token); /* call converter now */ if ( outputtype == FORMAT_any ) { retval = converttoken(resultstring, sizeof(resultstring), charptr, FORMAT_addrtype, 0); } else { retval = converttoken(resultstring, sizeof(resultstring), charptr, outputtype, 1); }; if (retval != 0) { continue; }; /* print result */ printf("%s", resultstring); if (outputtype == FORMAT_any) { DEBUGPRINT_NA(DEBUG_ipv6logconv_processing, "Format is 'any', so look for next tokens"); /* look for next token */ charptr = strtok_r(NULL, " \t\n", ptrptr); if ( charptr == NULL ) { fprintf(stderr, "Line contains no 2nd token: %d\n", linecounter); goto END_line; }; if ( strlen(charptr) >= LINEBUFFER) { fprintf(stderr, "Line too strange: %d\n", linecounter); goto END_line; }; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Token 2: '%s'", charptr); /* retval = converttoken(resultstring, token, FORMAT_addrtype, 0); printf(" %s", resultstring); */ /* skip this token */ printf(" %s", charptr); /* look for next token */ charptr = strtok_r(NULL, " \t\n", ptrptr); if ( charptr == NULL ) { fprintf(stderr, "Line contains no 3rd token: %d\n", linecounter); continue; }; if ( strlen(charptr) >= LINEBUFFER) { fprintf(stderr, "Line too strange: %d\n", linecounter); continue; }; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Token 3: '%s'", charptr); retval = converttoken(resultstring, sizeof(resultstring), token, FORMAT_ouitype, 0); /* print result */ printf(" %s", resultstring); }; END_line: if ((*ptrptr != NULL) && (strlen(*ptrptr) > 0)) { printf(" %s", *ptrptr); } else {; printf("\n"); }; }; if (ipv6calc_quiet == 0) { fprintf(stderr, "...finished\n"); if (flag_nocache == 0) { fprintf(stderr, "Cache statistics:\n"); for (i = 0; i < cache_lru_limit; i++) { fprintf(stderr, "Cache distance: %3d hits: %8ld\n", i, cache_lru_statistics[i]); }; }; }; return; }; /* * Convert token */ static int converttoken(char *resultstring, const size_t resultstring_length, const char *token, const long int outputtype, const int flag_skipunknown) { uint32_t inputtype = FORMAT_undefined; int retval = 1, i, registry; uint32_t typeinfo, typeinfo_test; char tempstring[NI_MAXHOST]; ipv6calc_macaddr macaddr; /* used structures */ ipv6calc_ipv6addr ipv6addr; ipv6calc_ipv4addr ipv4addr; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Token: '%s'", token); /* clear resultstring */ resultstring[0] = '\0'; if (strlen(token) == 0) { return (1); }; /* use cache ? */ if (flag_nocache == 0 && cache_lru_max > 0) { /* check last seen one first */ DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "LRU cache: look for key=%s", token); if (cache_lru_key_outputtype[cache_lru_last - 1] == outputtype) { if (strcmp(cache_lru_key_token[cache_lru_last - 1], token) == 0) { snprintf(resultstring, resultstring_length, "%s", cache_lru_value[cache_lru_last - 1]); cache_lru_statistics[0]++; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "LRU cache: hit last line=%d key_token=%s key_outputtype=%lx value=%s", cache_lru_last - 1, token, outputtype, resultstring); return (0); }; } else { /* run backwards to first entry */ if (cache_lru_last > 1) { for (i = cache_lru_last - 1; i > 0; i--) { if (cache_lru_key_outputtype[i - 1] == outputtype) { if (strcmp(cache_lru_key_token[i - 1], token) == 0) { snprintf(resultstring, resultstring_length, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_last - i]++; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "LRU cache: hit line=%d key_token=%s key_outputtype=%lx value=%s", i - 1, token, outputtype, resultstring); return (0); }; }; }; }; /* round robin */ if (cache_lru_last < cache_lru_max) { for (i = cache_lru_max; i > cache_lru_last; i--) { if (cache_lru_key_outputtype[i - 1] == outputtype) { if (strcmp(cache_lru_key_token[i - 1], token) == 0) { snprintf(resultstring, resultstring_length, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_max - i + cache_lru_last]++; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "LRU cache: hit line=%d key_token=%s key_outputtype=%lx value=%s", i - 1, token, outputtype, resultstring); return (0); }; }; }; }; }; }; /* set addresses to invalid */ ipv6addr.flag_valid = 0; ipv4addr.flag_valid = 0; /* autodetection */ inputtype = libipv6calc_autodetectinput(token); DEBUGSECTION_BEGIN(DEBUG_ipv6logconv_processing) if (inputtype != FORMAT_undefined) { for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatstrings); i++) { if (inputtype == ipv6calc_formatstrings[i].number) { DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Found type: %s", ipv6calc_formatstrings[i].token); }; break; }; } else { DEBUGPRINT_NA(DEBUG_ipv6logconv_processing, "Input type unknown"); return (1); }; DEBUGSECTION_END /* proceed input depending on type */ switch (inputtype) { case FORMAT_ipv6addr: retval = addr_to_ipv6addrstruct(token, resultstring, sizeof(resultstring), &ipv6addr); break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(token, resultstring, sizeof(resultstring), &ipv4addr); break; }; DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Token: '%s'", token); /***** postprocessing input *****/ DEBUGPRINT_NA(DEBUG_ipv6logconv_processing, "Start of postprocessing input"); switch (outputtype) { case FORMAT_addrtype: if (ipv6addr.flag_valid == 1) { DEBUGPRINT_NA(DEBUG_ipv6logconv_processing, "is IPv6 address"); snprintf(resultstring, resultstring_length, "ipv6-addr.addrtype.ipv6calc"); /* check for registry */ typeinfo = ipv6addr_gettype(&ipv6addr, NULL); /* scope of IPv6 address */ /* init retval */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++) { if ( ipv6calc_ipv6addrtypestrings[i].number == IPV6_ADDR_ANY ) { retval = i; break; }; }; typeinfo_test = typeinfo & (IPV6_NEW_ADDR_AGU | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_SITELOCAL | IPV6_ADDR_MAPPED | IPV6_ADDR_COMPATv4 | IPV6_ADDR_ULUA); if ( typeinfo_test != 0 ) { /* get string */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++) { if ( (typeinfo_test & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { retval = i; break; }; }; }; snprintf(tempstring, sizeof(tempstring), "%s.%s", ipv6calc_ipv6addrtypestrings[retval].token, resultstring); snprintf(resultstring, resultstring_length,"%s", tempstring); /* type of global IPv6 address */ /* init retval */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++) { if ( ipv6calc_ipv6addrtypestrings[i].number == IPV6_ADDR_ANY ) { retval = i; break; }; }; typeinfo_test = typeinfo & (IPV6_NEW_ADDR_6TO4 | IPV6_NEW_ADDR_6BONE | IPV6_NEW_ADDR_PRODUCTIVE); if ( typeinfo_test != 0 ) { if ((typeinfo & IPV6_NEW_ADDR_TEREDO) != 0) { snprintf(tempstring, sizeof(tempstring), "teredo.%s", resultstring); snprintf(resultstring, resultstring_length, "%s", tempstring); } else { /* get string */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++) { if ( (typeinfo_test & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { retval = i; break; }; }; snprintf(tempstring, sizeof(tempstring), "%s.%s", ipv6calc_ipv6addrtypestrings[retval].token, resultstring); snprintf(resultstring, resultstring_length, "%s", tempstring); }; }; /* registry of IPv6 address */ if ( ( (typeinfo & (IPV6_NEW_ADDR_6BONE | IPV6_NEW_ADDR_PRODUCTIVE) ) != 0) && ( (typeinfo & (IPV6_NEW_ADDR_TEREDO)) == 0)) { registry = libipv6addr_registry_num_by_addr(&ipv6addr); snprintf(tempstring, sizeof(tempstring), "%s.%s", libipv6calc_registry_string_by_num(registry), resultstring); snprintf(resultstring, resultstring_length, "%s", tempstring); } else if ( (typeinfo & (IPV6_NEW_ADDR_6TO4 | IPV6_ADDR_MAPPED | IPV6_ADDR_COMPATv4 | IPV6_NEW_ADDR_TEREDO)) != 0 ) { DEBUGPRINT_NA(DEBUG_ipv6logconv_processing, "IPv6 has IPv4 included"); /* fill IPv4 address */ if ( (typeinfo & (IPV6_ADDR_MAPPED | IPV6_ADDR_COMPATv4)) != 0 ) { for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, i, ipv6addr_getoctet(&ipv6addr, i + 12)); }; } else if ( (typeinfo & IPV6_NEW_ADDR_6TO4) != 0 ) { for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, i, ipv6addr_getoctet(&ipv6addr, i + 2)); }; } else if ( (typeinfo & IPV6_NEW_ADDR_TEREDO) != 0 ) { for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, i, ipv6addr_getoctet(&ipv6addr, i + 12) ^ 0xff); }; } else { /* normally never happen */ fprintf(stderr, "%s/%s: Error occurs at IPv6->IPv4 address extraction!\n", __FILE__, __func__); exit(EXIT_FAILURE); }; ipv4addr_settype(&ipv4addr, 1); /* Set typeinfo */ /* IPv4 registry */ registry = libipv4addr_registry_num_by_addr(&ipv4addr); snprintf(tempstring, sizeof(tempstring), "%s.%s", libipv6calc_registry_string_by_num(registry), resultstring); snprintf(resultstring, resultstring_length, "%s", tempstring); }; } else if (ipv4addr.flag_valid == 1) { snprintf(resultstring, resultstring_length, "ipv4-addr.addrtype.ipv6calc"); /* IPv4 registry */ registry = libipv4addr_registry_num_by_addr(&ipv4addr); snprintf(tempstring, sizeof(tempstring), "%s.%s", libipv6calc_registry_string_by_num(registry), resultstring); snprintf(resultstring, resultstring_length, "%s", tempstring); } else { snprintf(resultstring, resultstring_length, "reverse-lookup-successful.addrtype.ipv6calc"); }; break; case FORMAT_ouitype: if (ipv6addr.flag_valid != 1) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, resultstring_length, "not-ipv6.ouitype.ipv6calc"); return (0); }; }; typeinfo = ipv6addr_gettype(&ipv6addr, NULL); /* check whether address has a OUI ID */ if ( (( typeinfo & (IPV6_ADDR_LINKLOCAL | IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_NEW_ADDR_6BONE | IPV6_NEW_ADDR_6TO4 | IPV6_ADDR_ULUA)) == 0) && ((typeinfo & (IPV6_NEW_ADDR_TEREDO)) == 0) ) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, resultstring_length, "unresolvable.ouitype.ipv6calc"); return (0); }; }; if ((ipv6addr_getoctet(&ipv6addr, 8) & 0x02) != 0) { macaddr.addr[0] = ipv6addr_getoctet(&ipv6addr, 8) ^0x02; macaddr.addr[1] = ipv6addr_getoctet(&ipv6addr, 9); macaddr.addr[2] = ipv6addr_getoctet(&ipv6addr, 10); macaddr.addr[3] = ipv6addr_getoctet(&ipv6addr, 13); macaddr.addr[4] = ipv6addr_getoctet(&ipv6addr, 14); macaddr.addr[5] = ipv6addr_getoctet(&ipv6addr, 15); retval = libipv6calc_db_wrapper_ieee_vendor_string_short_by_macaddr(resultstring, sizeof(resultstring), &macaddr); if (retval != 0) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, resultstring_length, "unresolvable.ouitype.ipv6calc"); return (0); }; }; if (strlen(resultstring) == 0) { snprintf(resultstring, resultstring_length, "unknown.ouitype.ipv6calc"); } else { snprintf(tempstring, sizeof(tempstring), "%s.ouitype.ipv6calc", resultstring); snprintf(resultstring, resultstring_length, "%s", tempstring); }; } else { if ( (typeinfo & IPV6_NEW_ADDR_6TO4_MICROSOFT) != 0 ) { snprintf(resultstring, resultstring_length, "6to4-microsoft.ouitype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_IID_ISATAP) != 0 ) { snprintf(resultstring, resultstring_length, "ISATAP.ouitype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0 ) { snprintf(resultstring, resultstring_length, "local-scope-random.ouitype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_TEREDO) != 0 ) { snprintf(resultstring, resultstring_length, "local-scope-teredo.ouitype.ipv6calc"); } else { snprintf(resultstring, resultstring_length, "local-scope.ouitype.ipv6calc"); }; }; break; case FORMAT_ipv6addrtype: if (ipv6addr.flag_valid != 1) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, resultstring_length, "not-ipv6.ipv6addrtype.ipv6calc"); return (0); }; }; typeinfo = ipv6addr_gettype(&ipv6addr, NULL); if ( (typeinfo & IPV6_ADDR_LINKLOCAL) != 0 ) { snprintf(resultstring, resultstring_length, "link-local.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_SITELOCAL) != 0 ) { snprintf(resultstring, resultstring_length, "site-local.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_ULUA) != 0 ) { snprintf(resultstring, resultstring_length, "unique-local.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_TEREDO) != 0 ) { if ( (typeinfo & IPV6_NEW_ADDR_6BONE) != 0 ) { snprintf(resultstring, resultstring_length, "teredo.6bone-global.ipv6addrtype.ipv6calc"); } else { snprintf(resultstring, resultstring_length, "teredo.unknown-global.ipv6addrtype.ipv6calc"); }; } else if ( (typeinfo & IPV6_NEW_ADDR_6BONE) != 0 ) { snprintf(resultstring, resultstring_length, "6bone-global.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_6TO4) != 0 ) { snprintf(resultstring, resultstring_length, "6to4-global.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_PRODUCTIVE) != 0 ) { snprintf(resultstring, resultstring_length, "productive-global.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_MAPPED) != 0 ) { snprintf(resultstring, resultstring_length, "mapped-ipv4.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_COMPATv4) != 0 ) { snprintf(resultstring, resultstring_length, "compat-ipv4.ipv6addrtype.ipv6calc"); } else { snprintf(resultstring, resultstring_length, "unknown-ipv6.ipv6addrtype.ipv6calc"); }; break; default: fprintf(stderr, " Outputtype isn't implemented\n"); return (1); }; /* use cache ? */ if (flag_nocache == 0) { /* calculate pointer */ if (cache_lru_max < cache_lru_limit) { cache_lru_last++; cache_lru_max++; } else { if (cache_lru_last == cache_lru_limit) { cache_lru_last = 1; } else { cache_lru_last++; }; }; /* store key and value */ snprintf(cache_lru_key_token[cache_lru_last - 1], NI_MAXHOST - 1, "%s", token); cache_lru_key_outputtype[cache_lru_last - 1] = outputtype; snprintf(cache_lru_value[cache_lru_last - 1], NI_MAXHOST - 1, "%s", resultstring); DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "LRU cache: fill line=%d key_token=%s key_outputtype=%lx value=%s", cache_lru_last - 1, cache_lru_key_token[cache_lru_last - 1], cache_lru_key_outputtype[cache_lru_last - 1], cache_lru_value[cache_lru_last - 1]); }; return (0); }; ipv6calc-1.0.0/ipv6logconv/ipv6logconv.h000066400000000000000000000012661312366535500201360ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6logconv.h * Version : $Id: 946b042cdd3eeae2a64cef4ddc43a882f36ae76b $ * Copyright : 2002-2014 by Peter Bieringer * License : GNU GPL v2 * * Information: * Main header file */ /* global program related definitions */ #define PROGRAM_NAME "ipv6logconv" #define PROGRAM_COPYRIGHT "(P) & (C) 2002-" COPYRIGHT_YEAR " by Peter Bieringer " /* LRU cache maximum size */ #define CACHE_LRU_SIZE 200 #define DEBUG_ipv6logconv_general 0x00000001l #define DEBUG_ipv6logconv_processing 0x00000002l /* prototyping */ int cache_lru_limit; extern int feature_reg; extern int feature_ieee; ipv6calc-1.0.0/ipv6logconv/ipv6logconvhelp.c000066400000000000000000000055211312366535500210000ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6logconvhelp.c * Version : $Id: 19ece2b813c395919e5d0e540532f739a921c7cc $ * Copyright : 2002-2014 by Peter Bieringer * License : GNU GPL v2 * * Information: * Help library */ #include #include #include #include "ipv6logconv.h" #include "ipv6calctypes.h" #include "ipv6calccommands.h" #include "ipv6calchelp.h" #include "config.h" /* display info */ void printversion(void) { fprintf(stderr, "%s: version %s", PROGRAM_NAME, PACKAGE_VERSION); if (feature_reg == 1) { fprintf(stderr, " CONV_REG"); }; if (feature_ieee == 1) { fprintf(stderr, " CONV_IEEE"); }; fprintf(stderr, "\n"); }; void printversion_help(void) { fprintf(stderr, "\n"); fprintf(stderr, "Explanation of available(x)/possible(o) feature tokens\n"); fprintf(stderr, "%-22s%c %s\n", "CONV_REG", (feature_reg == 1)? 'x' : 'o', "Conversion of IPv4/IPv6 address to Registry tokens"); fprintf(stderr, "%-22s%c %s\n", "CONV_IEEE", (feature_ieee == 1) ? 'x' : 'o', "Conversion of included MAC/EUI-64 adress to IEEE (vendor) name"); fprintf(stderr, "\n"); }; void printcopyright(void) { fprintf(stderr, "%s\n", PROGRAM_COPYRIGHT); }; void ipv6logconv_printinfo(void) { printversion(); printcopyright(); fprintf(stderr, "This program converts IPv4/IPv6 addresses in HTTP server log files\n"); fprintf(stderr, "See '%s -?|-h|--help for online help\n", PROGRAM_NAME); }; /* print global help */ void ipv6logconv_printhelp(void) { printversion(); printcopyright(); fprintf(stderr, "\n"); fprintf(stderr, "This program converts IPv4/IPv6 addresses in HTTP server log files\n"); printhelp_common(IPV6CALC_HELP_BASIC); fprintf(stderr, " Performance options:\n"); fprintf(stderr, " [-n|--nocache] : disable caching\n"); fprintf(stderr, " [-c|--cachelimit ] : set cache limit\n"); fprintf(stderr, " default: %d\n", cache_lru_limit); fprintf(stderr, " maximum: %d\n", CACHE_LRU_SIZE); fprintf(stderr, " Output options:\n"); fprintf(stderr, " [--out ] : specify output type\n"); fprintf(stderr, " addrtype : Address type%s\n", (feature_reg == 0) ? " (NOT-SUPPORTED)" : ""); fprintf(stderr, " ouitype : OUI (IEEE) type%s\n", (feature_ieee == 0) ? " (NOT-SUPPORTED)" : ""); fprintf(stderr, " ipv6addrtype : IPv6 address type\n"); fprintf(stderr, " any : any type%s\n", ((feature_reg == 0) || (feature_ieee == 0)) ? " (NOT-SUPPORTED)" : ""); fprintf(stderr, "\n"); if ((feature_reg == 0) || (feature_ieee == 0)) { fprintf(stderr, " NOT-SUPPORTED means either database missing or support not compiled-in\n"); }; fprintf(stderr, "\n"); fprintf(stderr, " Takes data from stdin, proceed it to stdout\n"); fprintf(stderr, "\n"); return; }; ipv6calc-1.0.0/ipv6logconv/ipv6logconvhelp.h000066400000000000000000000006621312366535500210060ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6logconvhelp.h * Version : $Id: 4cb64f97e09c3a124629f7b1bbf61cf52732bb83 $ * Copyright : 2002-2014 by Peter Bieringer * License : GNU GPL v2 * * Information: * Header file for ipv6logconvhelp.c */ extern void printversion(void); extern void printversion_help(void); extern void ipv6logconv_printinfo(void); extern void ipv6logconv_printhelp(void); ipv6calc-1.0.0/ipv6logconv/ipv6logconvoptions.h000066400000000000000000000016661312366535500215560ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6logconvoptions.h * Version : $Id: 1c5b331c3db83c58e71f86efc8b742381e407e28 $ * Copyright : 2002-2007 by Peter Bieringer * * Information: * Header file containing options for ipvlogconv.c */ #include #include "ipv6calctypes.h" #ifndef _ipv6logconvoptions_h_ #define _ipv6logconvoptions_h_ /* Options */ /* define short options */ static char *ipv6logconv_shortopts = "vfh?nc:"; /* define long options */ static struct option ipv6logconv_longopts[] = { {"version", 0, NULL, (int) 'v' }, {"flush" , 0, NULL, (int) 'f' }, /* help options */ {"help" , 0, NULL, (int) 'h'}, {"examples" , 0, 0, CMD_printexamples }, {"printexamples", 0, 0, CMD_printexamples }, /* cache options */ {"nocache", 0, 0, (int) 'n'}, {"cachelimit", 0, 0, (int) 'c'}, /* options */ { "out" , 1, 0, CMD_outputtype }, }; #endif ipv6calc-1.0.0/ipv6logconv/test_ipv6logconv.sh000077500000000000000000000073231312366535500213630ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : test_ipv6logconv.sh # Version : $Id: ef78d6af4a4d9c65f7497beb6dd0d0af1c02f3c6 $ # Copyright : 2002-2014 by Peter Bieringer # # Test program for "ipv6logconv" if [ ! -x ./ipv6logconv ]; then echo "Binary './ipv6logconv' missing or not executable" exit 1 fi # Test proper option definitions echo "Test proper option definition" ./ipv6logconv -h >/dev/null if [ $? -ne 1 ]; then echo "ERROR : something wrong in option definition" exit 1 fi echo "Run 'ipv6logconv' version help test for feature tokens..." ./ipv6logconv -v -h retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logconv -v -h'!" exit 1 fi echo source ../ipv6calc/test_scenarios.sh testscenarios() { # Address cat <&2 if ./ipv6logconv -v | grep -w "CONV_REG" | grep -w "CONV_IEEE"; then true else echo "NOTICE : ipv6logconv tests skipped, at least one required database feature is missing" exit 0 fi if [ "$1" != "bulk" ]; then testscenarios | grep -v "^#" | while read line; do echo echo "INPUT: $line" echo "$line" | ./ipv6logconv --out any -q $* retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logconv'!" >&2 exit 1 fi done || exit 1 echo else shift echo "Test with cache" testscenarios_cache | grep -v "^#" | ./ipv6logconv --out any -q $* retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logconv'!" >&2 exit 1 fi echo "Test without cache" testscenarios_cache | grep -v "^#" | ./ipv6logconv --out any -q -n $* retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logconv'!" >&2 exit 1 fi echo fi echo "INFO : test scenario with huge amount of addresses..." testscenario_hugelist ipv4 | awk '{ print $1 " token2 token3" }' | ./ipv6logconv -q --out any -q >/dev/null if [ $? -ne 0 ]; then echo "ERROR : exit code <> 0" exit 1 fi echo "INFO : test scenario with huge amount of addresses: OK" if [ $? -eq 0 ]; then echo "All tests were successfully done!" >&2 fi ipv6calc-1.0.0/ipv6logstats/000077500000000000000000000000001312366535500156755ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6logstats/Makefile.in000066400000000000000000000037471312366535500177550ustar00rootroot00000000000000# Project : ipv6calc/ipv6logstats # File : Makefile # Version : $Id: 373d497d3966a6395d89bc964749358f59895a2d $ # Copyright : 2003-2014 by Peter Bieringer # # Information: # Makefile for ipv6logstats # prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall -g @CFLAGS_EXTRA@ CFLAGS += -D__EXTENSIONS__ INCLUDES= $(COPTS) @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ @GEOIP_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @GEOIP_LIB_L1@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ LDFLAGS_EXTRA = @LDFLAGS_EXTRA@ OBJS = ipv6logstats.o ipv6logstatshelp.o # splint SPLINT_OPT_OUTSIDE = -uniondef +matchanyintegral --nullassign +ignoresigns -compdef -usedef -modobserver -formatconst -warnposix -exportlocal SPLINT_TODO_LATER = -unrecog all: ipv6logstats .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) libipv6calc.a: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper.a: cd ../ && ${MAKE} lib-make $(OBJS): ipv6logstatsoptions.h ipv6logstatshelp.h ipv6logstats.h ipv6logstats: $(OBJS) libipv6calc.a libipv6calc_db_wrapper.a $(CC) -o ipv6logstats $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm static: ipv6logstats $(CC) -o ipv6logstats-static $(OBJS) $(GETOBJS) $(LDFLAGS) $(LDFLAGS_EXTRA) $(LIBS) -lm -static distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6logstats ipv6logstats-static *.o test: ipv6logstats LD_LIBRARY_PATH=@LD_LIBRARY_PATH@ ./test_ipv6logstats.sh test-minimal: ${MAKE} test test-ldlibpath: ipv6logstats LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_ipv6logstats.sh codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6logstats $(DESTDIR)$(bindir) ipv6calc-1.0.0/ipv6logstats/README000066400000000000000000000036501312366535500165610ustar00rootroot00000000000000$Id: d90211c29f0564423f66cca4b3f1308dcd1d2d5a $ Output format ============= Statistics in rows ------------------ *Version $MAJOR.$MINOR Statistics in columns --------------------- Last column contains output version number (since 4.0) prepended with '#' Changes ------- Output format version 4.0 extended with: - stat by rows: - new rows for AfriNIC - stat by columns: - new columns for AfriNIC - version number on end of line Output format version 3.0 extended with: - Database information *3*DB-Info: ... - one line per CountryCode and proto *3*CC-code-proto/$CC/ALL $ALL[$CC] *3*CC-code-proto/$CC/IPv4 $IPv4[$CC] *3*CC-code-proto/$CC/IPv6 $IPv6[$CC] - list per CountryCode *3*CC-code-proto-list/$CC $ALL[$CC] $IPv4[$CC] $IPv6[$CC] - one line per proto and CountryCode *3*CC-proto-code/ALL/$CC $ALL[$CC] *3*CC-proto-code/IPv4/$CC $IPv4[$CC] *3*CC-proto-code/IPv6/$CC $IPv6[$CC] - list per proto (summary) *3*CC-proto-code-list/ALL sum($ALL[$CC]) sum($IPv4[$CC]) sum($IPv6[$CC]) - one line per AS and proto: *3*ASN-num-proto/$AS/ALL $ALL[$AS] *3*ASN-num-proto/$AS/IPv4 $IPv4[$AS] *3*ASN-num-proto/$AS/IPv6 $IPv6[$AS] - list per AS *3*ASN-num-proto-list/$AS $ALL[$AS] $IPv4[$AS] $IPv6[$AS] - one line per proto and AS *3*ASN-proto-num/ALL/$AS $ALL[$AS] *3*ASN-proto-num/IPv4/$AS $IPv4[$AS] *3*ASN-proto-num/IPv6/$AS $IPv6[$AS] - list per proto (summary) *3*ASN-proto-num-list/ALL sum($ALL[$AS]) sum($IPv4[$AS]) sum($IPv6[$AS]) => "grep" your favorite lines, "*" can be matched with '^\*3\*' NOTE: country code "--" (unkown) is mapped to "00", there are also other special ones defined in GeoIP like A1, A2 and O1 (see GeoIP source code) NOTE: ASN "0" is "unknown" Output format in future versions will be introduced with *$MAJOR* External software: Gnuplot: Homepage: http://www.gnuplot.info/ Gnuplot is normally contained by Linux distribution GRI: Homepage: http://gri.sourceforge.net/ ipv6calc-1.0.0/ipv6logstats/collect_ipv6logstats.pl000077500000000000000000000041501312366535500224070ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc/logstats # File : collect_ipv6logstats.pl # Version : $Id: collect_ipv6logstats.pl,v 1.1 2003/11/22 15:02:44 peter Exp $ # Copyright : 2003 by Peter Bieringer # # Collect ipv6logstats data my $dir = "./examples-data"; my $file_pattern = "^data-[0-9]{6}.txt\$"; my %data; my @token_list = ("ALL", "IPv4", "IPv6"); ## Functions ## sub read_file($) { my $token; if ( ! -r $_[0] ) { die "Cannot read: " . $_[0]; }; open(FILE, $_[0]) || die "Cannot open file: " . $_[0]; print STDERR "INFO: Read content of file: " . $_[0] . "\n"; while () { chomp $_; my ($t, $v) = split / +/, $_; #print STDERR "DEBUG: found token: " . $t . "(" . $v . ")\n"; if ($t =~ /^\*/) { # special token/value pair if ($t eq "*Token") { $token = $v; next; }; } else { if (! defined $token) { die "Missing '*Token' in data file"; }; # values $data{$token}->{$t} = $v; }; }; close FILE; }; sub print_all_data() { # Print header print "#HEADER "; foreach my $token (sort keys %data) { foreach my $t (sort keys %{$data{$token}} ) { print $t . " "; }; print "\n"; last; }; # Print data foreach my $token (sort keys %data) { print $token . " "; foreach my $t (sort keys %{$data{$token}} ) { print $data{$token}->{$t} . " "; }; print "\n"; }; }; sub print_selected_data() { if (1 == 0) { # Print header print "#HEADER "; foreach my $token (sort keys %data) { foreach my $t (@token_list) { print $t . " "; }; print "\n"; last; }; }; # Print data foreach my $token (sort keys %data) { print $token . " "; foreach my $t (@token_list) { print $data{$token}->{$t} . " "; }; print "\n"; }; }; ## Main if ( ! -d $dir ) { die "Missing data directory: $dir"; }; opendir(DIR, $dir) || die "Cannot read directory: $dir"; my @files = grep { /$file_pattern/ } readdir(DIR); closedir DIR; print STDERR "INFO: number of files matching pattern '$file_pattern' found: " . $#files . "\n"; foreach my $file (@files) { read_file($dir . "/" . $file); }; print_selected_data(); ipv6calc-1.0.0/ipv6logstats/example_gnuplot.cmd000066400000000000000000000053431312366535500215720ustar00rootroot00000000000000# Project : ipv6calc/logstats # File : example_gnuplot.cmd # Version : $Id: example_gnuplot.cmd,v 1.6 2014/05/23 06:56:58 ds6peter Exp $ # Copyright : 2003-2014 by Peter Bieringer # # Command file for gnuplot # Usage: gnuplot example_gnuplot.cmd # # This scripts expect data in file "data" by default # # Don't forget to adjust file names # set output "..." : for output file # plot '...' : for input data file # # Tested with gnuplut versions # 4.6.3 # 4.0.0 set terminal png small set output "result.png" set title "Webserver access statistics" set xlabel "Date" set timefmt "%Y%m" set yrange [ 1 : ] set logscale y set xdata time set ylabel "Requests" set format x "%m/%Y" set grid set key left plot 'data' using 1:4 t 'IPv6' with linespoints, 'data' using 1:($2) t 'ALL' with linespoints reset set terminal png small set output "result-percent.png" set title "Webserver access statistics (relative)" set xlabel "Date" set timefmt "%Y%m" set yrange [ 0.01 : 100 ] set logscale y set xdata time set ylabel "Requests (Percent)" set format x "%m/%Y" set grid set key left plot 'data' using 1:($4 / $2 * 100) t 'IPv6' with linespoints, 'data' using 1:($3 / $2 * 100 ) t 'IPv4' with linespoints reset set terminal png small set output "result-iid.png" set title "Webserver access IPv6 IID statistics" set xlabel "Date" set timefmt "%Y%m" set yrange [ 0 : ] set xdata time set ylabel "IPv6 Requests" set format x "%m/%Y" set style fill solid set grid set key left plot \ 'data' using 1:($47 + $46 + $45 + $48) t 'IPv6 IID-manual' smooth sbezier with filledcurves x1, \ 'data' using 1:($46 + $45 + $48) t 'IPv6 IID-random' smooth sbezier with filledcurves x1, \ 'data' using 1:($45 + $48) t 'IPv6 IID-global' smooth sbezier with filledcurves x1, \ 'data' using 1:($48) t 'IPv6 IID-ISATAP' smooth sbezier with filledcurves x1 reset set terminal png small set output "result-ipv6-registries.png" set title "Webserver access IPv6 registries" set xlabel "Date" set timefmt "%Y%m" set yrange [ 0 : ] set xdata time set ylabel "IPv6 Requests" set format x "%m/%Y" set style fill solid set grid set key left plot \ 'data' using 1:($18 + $17 + $16 + $15 + $14 + $13 + $12) t 'AFRINIC' smooth sbezier with filledcurves x1, \ 'data' using 1:($17 + $16 + $15 + $14 + $13 + $12) t 'LACNIC' smooth sbezier with filledcurves x1, \ 'data' using 1:($16 + $15 + $14 + $13 + $12) t 'RIPE' smooth sbezier with filledcurves x1, \ 'data' using 1:($15 + $14 + $13 + $12) t 'ARIN' smooth sbezier with filledcurves x1, \ 'data' using 1:($14 + $13 + $12) t 'APNIC' smooth sbezier with filledcurves x1, \ 'data' using 1:($13 + $12) t 'IANA' smooth sbezier with filledcurves x1, \ 'data' using 1:($12) t '6bone' smooth sbezier with filledcurves x1 reset ipv6calc-1.0.0/ipv6logstats/example_ipv6logstats.sh000077500000000000000000000024001312366535500224100ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/logstats # File : example_ipv6logstats.sh # Version : $Id: 2764fee1b8880100bf3531b08355ef82f0c517c5 $ # Copyright : 2003-2014 by Peter Bieringer # # Example program for "ipv6logstats" # Print header line #./ipv6logstats -o -p "Date" # Find logfiles (here name in format hostname-log.%Y%m(.token)(.gz|bz2) dir="$1" bin="./ipv6logstats" if [ -z "$dir" ]; then dir="." fi if [ -n "$2" ]; then bin="$2" if [ ! -x "$bin" ]; then echo "Error: cannot execute: $bin" exit 1 fi fi cat_file() { for f in $*; do echo "Proceed file: $f" >&2 if echo "$f" | grep -q "\.gz$"; then zcat "$f" elif echo "$f" | grep -q "\.bz2$"; then bzcat "$f" else cat "$f" fi done } echo "Analyze Year/Month of files" >&2 find $dir -name '*-log.*' -type f | while read file; do #echo "Analyze Year/Month of file: $file" >&2 # Extract %Y%m yearmonth="`basename "$file" | sed 's/.*\.\([0-9]\{6\}\)\..*/\1/'`" if [ ${#yearmonth} -eq 6 ]; then echo $yearmonth fi done | sort -u | while read yearmonth; do # don't count mon and check_http (from Nagios) cat_file `find $dir -name "*-log.$yearmonth*" -type f` | egrep -v "(mon.d/http.monitor|check_http)" | $bin -c -q -n -p "$yearmonth" || exit 1 done ipv6calc-1.0.0/ipv6logstats/examples-data/000077500000000000000000000000001312366535500204225ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6logstats/examples-data/data-200301.txt000066400000000000000000000011541312366535500226200ustar00rootroot00000000000000*Version 1.1 *Token 200301 ALL 2641 IPv4 2585 IPv6 56 UNKNOWN 0 IPv4/APNIC 11 IPv4/ARIN 168 IPv4/RIPE 2394 IPv4/LACNIC 0 IPv4/UNKNOWN 12 IPv6/6bone 4 IPv6/IANA 0 IPv6/APNIC 0 IPv6/ARIN 0 IPv6/RIPE 0 IPv6/LACNIC 0 IPv6/RESERVED 0 IPv6/UNKNOWN 0 IPv6/6to4/IANA 0 IPv6/6to4/APNIC 0 IPv6/6to4/ARIN 0 IPv6/6to4/RIPE 52 IPv6/6to4/LACNIC 0 IPv6/6to4/RESERVED 0 IPv6/6to4/UNKNOWN 0 ipv6calc-1.0.0/ipv6logstats/examples-data/data-200302.txt000066400000000000000000000011541312366535500226210ustar00rootroot00000000000000*Version 1.1 *Token 200302 ALL 9194 IPv4 9163 IPv6 31 UNKNOWN 0 IPv4/APNIC 39 IPv4/ARIN 858 IPv4/RIPE 8240 IPv4/LACNIC 7 IPv4/UNKNOWN 19 IPv6/6bone 0 IPv6/IANA 0 IPv6/APNIC 0 IPv6/ARIN 6 IPv6/RIPE 5 IPv6/LACNIC 0 IPv6/RESERVED 0 IPv6/UNKNOWN 0 IPv6/6to4/IANA 0 IPv6/6to4/APNIC 0 IPv6/6to4/ARIN 0 IPv6/6to4/RIPE 20 IPv6/6to4/LACNIC 0 IPv6/6to4/RESERVED 0 IPv6/6to4/UNKNOWN 0 ipv6calc-1.0.0/ipv6logstats/examples-data/data-200303.txt000066400000000000000000000011621312366535500226210ustar00rootroot00000000000000*Version 1.1 *Token 200303 ALL 12345 IPv4 12334 IPv6 11 UNKNOWN 0 IPv4/APNIC 211 IPv4/ARIN 1691 IPv4/RIPE 10240 IPv4/LACNIC 63 IPv4/UNKNOWN 129 IPv6/6bone 3 IPv6/IANA 0 IPv6/APNIC 3 IPv6/ARIN 0 IPv6/RIPE 5 IPv6/LACNIC 0 IPv6/RESERVED 0 IPv6/UNKNOWN 0 IPv6/6to4/IANA 0 IPv6/6to4/APNIC 0 IPv6/6to4/ARIN 0 IPv6/6to4/RIPE 0 IPv6/6to4/LACNIC 0 IPv6/6to4/RESERVED 0 IPv6/6to4/UNKNOWN 0 ipv6calc-1.0.0/ipv6logstats/examples-data/data-200304.txt000066400000000000000000000011601312366535500226200ustar00rootroot00000000000000*Version 1.1 *Token 200304 ALL 11485 IPv4 11475 IPv6 10 UNKNOWN 0 IPv4/APNIC 285 IPv4/ARIN 1517 IPv4/RIPE 9515 IPv4/LACNIC 86 IPv4/UNKNOWN 72 IPv6/6bone 0 IPv6/IANA 0 IPv6/APNIC 0 IPv6/ARIN 2 IPv6/RIPE 6 IPv6/LACNIC 0 IPv6/RESERVED 0 IPv6/UNKNOWN 0 IPv6/6to4/IANA 0 IPv6/6to4/APNIC 0 IPv6/6to4/ARIN 0 IPv6/6to4/RIPE 2 IPv6/6to4/LACNIC 0 IPv6/6to4/RESERVED 0 IPv6/6to4/UNKNOWN 0 ipv6calc-1.0.0/ipv6logstats/examples-data/data-200305.txt000066400000000000000000000011631312366535500226240ustar00rootroot00000000000000*Version 1.1 *Token 200305 ALL 16390 IPv4 16370 IPv6 20 UNKNOWN 0 IPv4/APNIC 414 IPv4/ARIN 4621 IPv4/RIPE 11086 IPv4/LACNIC 80 IPv4/UNKNOWN 169 IPv6/6bone 0 IPv6/IANA 0 IPv6/APNIC 0 IPv6/ARIN 4 IPv6/RIPE 1 IPv6/LACNIC 0 IPv6/RESERVED 0 IPv6/UNKNOWN 0 IPv6/6to4/IANA 0 IPv6/6to4/APNIC 0 IPv6/6to4/ARIN 0 IPv6/6to4/RIPE 15 IPv6/6to4/LACNIC 0 IPv6/6to4/RESERVED 0 IPv6/6to4/UNKNOWN 0 ipv6calc-1.0.0/ipv6logstats/examples-data/data-200306.txt000066400000000000000000000012011312366535500226160ustar00rootroot00000000000000*Version 1.1 *Token 200306 ALL 30375 IPv4 28887 IPv6 1488 UNKNOWN 0 IPv4/APNIC 1193 IPv4/ARIN 10614 IPv4/RIPE 16104 IPv4/LACNIC 166 IPv4/UNKNOWN 810 IPv6/6bone 228 IPv6/IANA 0 IPv6/APNIC 10 IPv6/ARIN 43 IPv6/RIPE 744 IPv6/LACNIC 0 IPv6/RESERVED 3 IPv6/UNKNOWN 0 IPv6/6to4/IANA 0 IPv6/6to4/APNIC 6 IPv6/6to4/ARIN 110 IPv6/6to4/RIPE 344 IPv6/6to4/LACNIC 0 IPv6/6to4/RESERVED 0 IPv6/6to4/UNKNOWN 0 ipv6calc-1.0.0/ipv6logstats/examples-data/data-simple.txt000066400000000000000000000002101312366535500233540ustar00rootroot00000000000000200301 2641 2585 56 200302 9194 9163 31 200303 12345 12334 11 200304 11485 11475 10 200305 16390 16370 20 200306 30375 28887 1488 ipv6calc-1.0.0/ipv6logstats/examples-gri/000077500000000000000000000000001312366535500202725ustar00rootroot00000000000000ipv6calc-1.0.0/ipv6logstats/examples-gri/data-simple.gri000066400000000000000000000007341312366535500232010ustar00rootroot00000000000000set color black set x name "Year/Month" set y name "Requests" #set y type log #set y axis 1 1000000 draw title "Requests over Time" # Open file open examples-data/data-simple.txt # Read data (x=date, y=all) read columns x y set color red draw curve filled to 0 y draw label for last curve "IPv4+IPv6" # Draw axes set color black draw axes rewind # Read data (x=date, y=IPv6) read columns x * * y set color blue draw curve filled to 0 y draw label for last curve "IPv6" ipv6calc-1.0.0/ipv6logstats/ipv6logstats.c000066400000000000000000000645751312366535500205270ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6logstats * File : ipv6logstats.c * Version : $Id: 7cc0003f22901643231e0fdb7863f4e62c285436 $ * Copyright : 2003-2017 by Peter Bieringer * * Information: * Dedicated program for logfile statistics */ #include #include #include #include #include #include #include "config.h" #include "ipv6logstats.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "ipv6calccommands.h" #include "ipv6calctypes.h" #include "ipv6calcoptions.h" #include "ipv6logstatsoptions.h" #include "ipv6calchelp.h" #include "ipv6logstatshelp.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "libifinet6.h" #include "../databases/lib/libipv6calc_db_wrapper.h" #include "../databases/lib/libipv6calc_db_wrapper_GeoIP.h" #include "../databases/lib/libipv6calc_db_wrapper_IP2Location.h" #include "../databases/lib/libipv6calc_db_wrapper_DBIP.h" #include "../databases/lib/libipv6calc_db_wrapper_External.h" #include "../databases/lib/libipv6calc_db_wrapper_BuiltIn.h" #define LINEBUFFER 16384 long int ipv6calc_debug = 0; // ipv6calc_debug usage ok static int opt_unknown = 0; static int opt_simple = 0; static int opt_column_numbers = 0; static int opt_noheader = 0; static int opt_onlyheader = 0; static int opt_printdirection = 0; /* rows */ static char opt_token[NI_MAXHOST] = ""; char file_out[NI_MAXHOST] = ""; int file_out_flag = 0; FILE *FILE_OUT; int feature_cc = 0; int feature_as = 0; int feature_reg = 0; static stat_entries ipv6logstats_statentries[] = { { STATS_ALL , 0, "ALL" }, { STATS_IPV4 , 0, "IPv4" }, { STATS_IPV6 , 0, "IPv6" }, { STATS_UNKNOWN , 0, "UNKNOWN" }, { STATS_IPV4_APNIC , 0, "IPv4/APNIC" }, { STATS_IPV4_ARIN , 0, "IPv4/ARIN" }, { STATS_IPV4_RIPENCC , 0, "IPv4/RIPE" }, { STATS_IPV4_LACNIC , 0, "IPv4/LACNIC" }, { STATS_IPV4_AFRINIC , 0, "IPv4/AFRINIC" }, { STATS_IPV4_UNKNOWN , 0, "IPv4/UNKNOWN" }, { STATS_IPV6_6BONE , 0, "IPv6/6bone" }, { STATS_IPV6_IANA , 0, "IPv6/IANA" }, { STATS_IPV6_APNIC , 0, "IPv6/APNIC" }, { STATS_IPV6_ARIN , 0, "IPv6/ARIN" }, { STATS_IPV6_RIPENCC , 0, "IPv6/RIPE" }, { STATS_IPV6_LACNIC , 0, "IPv6/LACNIC" }, { STATS_IPV6_AFRINIC , 0, "IPv6/AFRINIC" }, { STATS_IPV6_RESERVED , 0, "IPv6/RESERVED" }, { STATS_IPV6_UNKNOWN , 0, "IPv6/UNKNOWN" }, { STATS_IPV6_6TO4_BASE + REGISTRY_IANA , 0, "IPv6/6to4/IANA" }, { STATS_IPV6_6TO4_BASE + REGISTRY_APNIC , 0, "IPv6/6to4/APNIC" }, { STATS_IPV6_6TO4_BASE + REGISTRY_ARIN , 0, "IPv6/6to4/ARIN" }, { STATS_IPV6_6TO4_BASE + REGISTRY_RIPENCC , 0, "IPv6/6to4/RIPE" }, { STATS_IPV6_6TO4_BASE + REGISTRY_LACNIC , 0, "IPv6/6to4/LACNIC" }, { STATS_IPV6_6TO4_BASE + REGISTRY_AFRINIC , 0, "IPv6/6to4/AFRINIC" }, { STATS_IPV6_6TO4_BASE + REGISTRY_RESERVED, 0, "IPv6/6to4/RESERVED" }, { STATS_IPV6_6TO4_BASE + REGISTRY_UNKNOWN , 0, "IPv6/6to4/UNKNOWN" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_IANA , 0, "IPv6/Teredo/IANA" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_APNIC , 0, "IPv6/Teredo/APNIC" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_ARIN , 0, "IPv6/Teredo/ARIN" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_RIPENCC , 0, "IPv6/Teredo/RIPE" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_LACNIC , 0, "IPv6/Teredo/LACNIC" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_AFRINIC , 0, "IPv6/Teredo/AFRINIC" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_RESERVED, 0, "IPv6/Teredo/RESERVED" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_UNKNOWN , 0, "IPv6/Teredo/UNKNOWN" }, { STATS_IPV6_NAT64_BASE + REGISTRY_IANA , 0, "IPv6/NAT64/IANA" }, { STATS_IPV6_NAT64_BASE + REGISTRY_APNIC , 0, "IPv6/NAT64/APNIC" }, { STATS_IPV6_NAT64_BASE + REGISTRY_ARIN , 0, "IPv6/NAT64/ARIN" }, { STATS_IPV6_NAT64_BASE + REGISTRY_RIPENCC , 0, "IPv6/NAT64/RIPE" }, { STATS_IPV6_NAT64_BASE + REGISTRY_LACNIC , 0, "IPv6/NAT64/LACNIC" }, { STATS_IPV6_NAT64_BASE + REGISTRY_AFRINIC , 0, "IPv6/NAT64/AFRINIC" }, { STATS_IPV6_NAT64_BASE + REGISTRY_RESERVED, 0, "IPv6/NAT64/RESERVED" }, { STATS_IPV6_NAT64_BASE + REGISTRY_UNKNOWN , 0, "IPv6/NAT64/UNKNOWN" }, { STATS_IPV6_IID_GLOBAL, 0, "IPv6/IID/Global" }, { STATS_IPV6_IID_RANDOM, 0, "IPv6/IID/Random" }, { STATS_IPV6_IID_MANUAL, 0, "IPv6/IID/Manual" }, { STATS_IPV6_IID_ISATAP, 0, "IPv6/IID/ISATAP" }, { STATS_IPV6_IID_MANUAL, 0, "IPv6/IID/Unknown" }, }; /* stat by Country Code */ static long unsigned int counter_country[COUNTRYCODE_INDEX_MAX]; static long unsigned int counter_country_ipv4[COUNTRYCODE_INDEX_MAX]; static long unsigned int counter_country_ipv6[COUNTRYCODE_INDEX_MAX]; static long unsigned int counter_country_A46, counter_country_IPV4, counter_country_IPV6; /* stat by ASN (only 16-bit ASN supported, 32-bit ASNs are mapped to 23456 "AS_TRANS" */ #define ASNUM_MAX 65536 static long unsigned int counter_asn[ASNUM_MAX]; static long unsigned int counter_asn_ipv4[ASNUM_MAX]; static long unsigned int counter_asn_ipv6[ASNUM_MAX]; /* prototypes */ static void lineparser(void); /**************************************************/ /* main */ int main(int argc,char *argv[]) { /* check compatibility */ #ifdef SHARED_LIBRARY IPV6CALC_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) IPV6CALC_DB_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) #endif // SHARED_LIBRARY int i, lop, result; unsigned long int command = 0; /* options */ struct option longopts[IPV6CALC_MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; extern int optopt; /* check for UID */ if (getuid() == 0) { printversion(); fprintf(stderr, " DON'T RUN THIS PROGRAM AS root USER!\n"); fprintf(stderr, " This program uses insecure C string handling functions and is not full audited\n"); fprintf(stderr, " therefore parsing insecure and unchecked input like logfiles isn't a good choice\n"); exit(EXIT_FAILURE); }; /* initialize debug value from environment for bootstrap debugging */ ipv6calc_debug_from_env(); // ipv6calc_debug usage ok /* add options */ ipv6calc_options_add_common_basic(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add(shortopts, sizeof(shortopts), longopts, &longopts_maxentries, ipv6logstats_shortopts, ipv6logstats_longopts, MAXENTRIES_ARRAY(ipv6logstats_longopts)); /* initialize options from environment */ ipv6calc_common_options_from_env(longopts, NULL); /* Fetch the command-line arguments. */ while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { DEBUGPRINT_WA(DEBUG_ipv6logstats_general, "Parsing option: 0x%08x (%d: %s)", i, optind, argv[optind - 1]); if ((i == '?') && (strcmp(argv[optind - 1], "-?") != 0)) { exit(EXIT_FAILURE); }; /* catch common options */ result = ipv6calcoptions_common_basic(i, optarg, longopts); if (result == 0) { // found continue; }; switch (i) { case -1: break; case 'v': if ((command & CMD_printversion_verbose) != 0) { // third time '-v' command |= CMD_printversion_verbose2; } else if ((command & CMD_printversion) != 0) { // second time '-v' command |= CMD_printversion_verbose; } else { command |= CMD_printversion; }; break; case 'h': case '?': command |= CMD_printhelp; break; case 'p': DEBUGPRINT_WA(DEBUG_ipv6logstats_general, "Given prefix token: %s (%d)", optarg, (int) strlen(optarg)); if (strlen(optarg) < sizeof(opt_token)) { snprintf(opt_token, sizeof(opt_token), "%s", optarg); } else { fprintf(stderr, " Prefix token too long: %s\n", optarg); exit(EXIT_FAILURE); }; break; case 'u': opt_unknown = 1; break; case 's': opt_simple = 1; break; case 'N': opt_column_numbers = 1; break; case 'n': opt_noheader = 1; opt_printdirection = 1; break; case 'o': opt_onlyheader = 1; opt_printdirection = 1; break; case 'c': opt_printdirection = 1; opt_simple = 1; // force simple mode in addition break; case 'w': if (strlen(optarg) < sizeof(file_out)) { snprintf(file_out, sizeof(file_out), "%s", optarg); file_out_flag = 1; } else { fprintf(stderr, " Output file name too long: %s\n", optarg); exit(EXIT_FAILURE); }; break; default: fprintf(stderr, "Usage: (see '%s --command -?|-h|--help' for more help)\n", PROGRAM_NAME); break; }; }; argv += optind; argc -= optind; /* initialise database wrapper */ result = libipv6calc_db_wrapper_init("*3*DB-Info: "); if (result != 0) { exit(EXIT_FAILURE); }; /* check for basic database support */ if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_REGISTRY| IPV6CALC_DB_IPV6_TO_REGISTRY | IPV6CALC_DB_CC_TO_REGISTRY) == 1) { feature_reg = 1; }; if (opt_simple != 1) { /* check for Country Code support */ if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_IPV6_TO_CC) == 1) { feature_cc = 1; }; /* check for ASN support */ if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS | IPV6CALC_DB_IPV6_TO_AS) == 1) { feature_as = 1; }; }; /* do work depending on selection */ if ((command & CMD_printversion) != 0) { if ((command & CMD_printversion_verbose) != 0) { printversion_verbose(((command & CMD_printversion_verbose2) !=0) ? LEVEL_VERBOSE2 : LEVEL_VERBOSE); } else { printversion(); }; if ((command & CMD_printhelp) != 0) { printversion_help(); }; exit(EXIT_SUCCESS); }; if (command & CMD_printhelp) { ipv6logstats_printhelp(); exit(EXIT_FAILURE); }; if (feature_reg == 0) { fprintf(stderr, "Basic databases are missing for creating statistic\n"); exit(EXIT_FAILURE); }; /* call lineparser */ lineparser(); libipv6calc_db_wrapper_cleanup(); exit(EXIT_SUCCESS); }; /* * Statistics structure handling */ static void stat_inc(int number) { int i; for (i = 0; i < MAXENTRIES_ARRAY(ipv6logstats_statentries); i++) { if (number == ipv6logstats_statentries[i].number) { ipv6logstats_statentries[i].counter++; break; }; }; }; /* * Country code statistics */ static void stat_inc_country_code(uint16_t country_code, const int proto) { int index = COUNTRYCODE_INDEX_UNKNOWN; if (country_code < COUNTRYCODE_INDEX_MAX) { index = country_code; } else { fprintf(stderr, "%s/%s: unexpected index (too high): %d\n", __FILE__, __func__, index); exit(1); }; DEBUGPRINT_WA(DEBUG_ipv6logstats_general, "Increment CountryCode index: %d (%d)", index, country_code); counter_country[index]++; counter_country_A46++; if (proto == 4) { counter_country_ipv4[index]++; counter_country_IPV4++; } else if (proto == 6) { counter_country_ipv6[index]++; counter_country_IPV6++; } else { fprintf(stderr, "%s/%s: unexpected unsupported proto: %d\n", __FILE__, __func__, proto); exit(1); }; }; /* * AS Number statistics */ static void stat_inc_asnum(const uint32_t as_num32, const int proto) { unsigned int index = ASNUM_AS_UNKNOWN; if (as_num32 < ASNUM_MAX) { // everything is fine index = as_num32; } else { // map to AS_TRANS for now index = ASNUM_AS_TRANS; }; DEBUGPRINT_WA(DEBUG_ipv6logstats_general, "Increment ASN index: %d (%d)", index, as_num32); counter_asn[index]++; if (proto == 4) { counter_asn_ipv4[index]++; } else if (proto == 6) { counter_asn_ipv6[index]++; }; }; /* * Line parser */ static void lineparser(void) { char linebuffer[LINEBUFFER]; char token[LINEBUFFER]; char resultstring[LINEBUFFER]; char *charptr, *cptr, **ptrptr; int linecounter = 0, retval, i, r; uint32_t inputtype = FORMAT_undefined; ipv6calc_ipv6addr ipv6addr; ipv6calc_ipv4addr ipv4addr; int registry, stat_registry_base; time_t timer; struct tm* tm_info; int index; uint16_t cc_index = COUNTRYCODE_INDEX_UNKNOWN; uint32_t as_num32 = ASNUM_AS_UNKNOWN; long unsigned int c_all, c_ipv4, c_ipv6; int column_offset = 1; // clear counters for (i = 0; i < COUNTRYCODE_INDEX_MAX; i++) { counter_country[i] = 0; counter_country_ipv4[i] = 0; counter_country_ipv6[i] = 0; }; ptrptr = &cptr; if (opt_onlyheader == 0) { if (ipv6calc_quiet == 0) { fprintf(stderr, "Expecting log lines on stdin\n"); }; }; while (opt_onlyheader == 0) { /* read line from stdin */ charptr = fgets(linebuffer, LINEBUFFER, stdin); if (charptr == NULL) { /* end of input */ break; }; linecounter++; stat_registry_base = 0; if (linecounter == 1) { if (ipv6calc_quiet == 0) { fprintf(stderr, "Ok, proceeding stdin...\n"); }; }; DEBUGPRINT_WA(DEBUG_ipv6logstats_processing, "Line counter: %d", linecounter); if (strlen(linebuffer) >= LINEBUFFER) { fprintf(stderr, "Line too long: %d\n", linecounter); continue; }; /* remove trailing \n */ if (linebuffer[strlen(linebuffer) - 1] == '\n') { linebuffer[strlen(linebuffer) - 1] = '\0'; }; if (strlen(linebuffer) == 0) { fprintf(stderr, "Line empty: %d\n", linecounter); continue; }; DEBUGPRINT_WA(DEBUG_ipv6logstats_processing, "Got line: '%s'", linebuffer); /* look for first token (should be IP address) */ charptr = strtok_r(linebuffer, " \t\n", ptrptr); if ( charptr == NULL ) { fprintf(stderr, "Line contains no token: %d\n", linecounter); continue; }; if ( strlen(charptr) >= LINEBUFFER) { fprintf(stderr, "Line too strange: %d\n", linecounter); continue; }; snprintf(token, sizeof(token), "%s", charptr); DEBUGPRINT_WA(DEBUG_ipv6logstats_processing, "Token 1: '%s'", token); stat_inc(STATS_ALL); /* get input type now */ inputtype = libipv6calc_autodetectinput(token); /* check for proper type */ if ((inputtype != FORMAT_ipv4addr) && (inputtype != FORMAT_ipv6addr)) { /* fprintf(stderr, "Token 1 (address) is not an IP address in line: %d\n", linecounter); */ stat_inc(STATS_UNKNOWN); continue; }; /* fill related structure */ switch (inputtype) { case FORMAT_ipv6addr: retval = addr_to_ipv6addrstruct(token, resultstring, sizeof(resultstring), &ipv6addr); break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(token, resultstring, sizeof(resultstring), &ipv4addr); break; default: retval = 0; break; }; if (retval != 0 ) { fprintf(stderr, "Problem during address parsing on line %d (skipped): %s\n", linecounter, resultstring); continue; }; /* catch compat/mapped */ switch (inputtype) { case FORMAT_ipv6addr: if ((ipv6addr.typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0) { /* extract IPv4 address */ r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r != 0) { continue; }; // remap inputtype = FORMAT_ipv4addr; // create text represenation r = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, token, sizeof(token), 0); }; break; default: // nothing to do break; }; /* get information and fill statistics */ switch (inputtype) { case FORMAT_ipv6addr: /* is IPv6 address */ stat_inc(STATS_IPV6); if ((ipv6addr.typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4) != 0) { /* has public IPv4 address included */ // get IPv4 address (in case of Teredo the client IP) r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r != 0) { continue; }; if (opt_simple != 1) { cc_index = libipv4addr_cc_index_by_addr(&ipv4addr, NULL); as_num32 = libipv4addr_as_num32_by_addr(&ipv4addr); if (feature_cc == 1) { stat_inc_country_code(cc_index, 4); }; if (feature_as == 1) { stat_inc_asnum(as_num32, 4); }; }; registry = libipv4addr_registry_num_by_addr(&ipv4addr); if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { stat_registry_base = STATS_IPV6_6TO4_BASE; } else if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_TEREDO) != 0) { stat_registry_base = STATS_IPV6_TEREDO_BASE; } else if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_NAT64) != 0) { stat_registry_base = STATS_IPV6_NAT64_BASE; }; if (stat_registry_base > 0) { switch (registry) { case IPV4_ADDR_REGISTRY_IANA: stat_inc(stat_registry_base + REGISTRY_IANA); break; case IPV4_ADDR_REGISTRY_APNIC: stat_inc(stat_registry_base + REGISTRY_APNIC); break; case IPV4_ADDR_REGISTRY_ARIN: stat_inc(stat_registry_base + REGISTRY_ARIN); break; case IPV4_ADDR_REGISTRY_RIPENCC: stat_inc(stat_registry_base + REGISTRY_RIPENCC); break; case IPV4_ADDR_REGISTRY_LACNIC: stat_inc(stat_registry_base + REGISTRY_LACNIC); break; case IPV4_ADDR_REGISTRY_AFRINIC: stat_inc(stat_registry_base + REGISTRY_AFRINIC); break; case IPV4_ADDR_REGISTRY_RESERVED: stat_inc(stat_registry_base + REGISTRY_RESERVED); break; default: stat_inc(stat_registry_base + REGISTRY_UNKNOWN); if (opt_unknown == 1) { fprintf(stderr, "Unknown address: %s\n", token); }; break; }; } else { if (opt_unknown == 1) { fprintf(stderr, "Unknown address: %s\n", token); }; }; } else { if (opt_simple != 1) { cc_index = libipv6addr_cc_index_by_addr(&ipv6addr, NULL); as_num32 = libipv6addr_as_num32_by_addr(&ipv6addr); if (feature_cc == 1) { /* country code */ stat_inc_country_code(cc_index, 6); }; if (feature_as == 1) { /* asnum */ stat_inc_asnum(as_num32, 6); }; }; registry = libipv6addr_registry_num_by_addr(&ipv6addr); switch (registry) { case IPV6_ADDR_REGISTRY_6BONE: stat_inc(STATS_IPV6_6BONE); break; case IPV6_ADDR_REGISTRY_IANA: stat_inc(STATS_IPV6_IANA); break; case IPV6_ADDR_REGISTRY_APNIC: stat_inc(STATS_IPV6_APNIC); break; case IPV6_ADDR_REGISTRY_ARIN: stat_inc(STATS_IPV6_ARIN); break; case IPV6_ADDR_REGISTRY_RIPENCC: stat_inc(STATS_IPV6_RIPENCC); break; case IPV6_ADDR_REGISTRY_LACNIC: stat_inc(STATS_IPV6_LACNIC); break; case IPV6_ADDR_REGISTRY_AFRINIC: stat_inc(STATS_IPV6_AFRINIC); break; case IPV6_ADDR_REGISTRY_RESERVED: stat_inc(STATS_IPV6_RESERVED); break; default: stat_inc(STATS_IPV6_UNKNOWN); if (opt_unknown == 1) { fprintf(stderr, "Unknown address: %s\n", token); }; break; }; if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_IID) == IPV6_NEW_ADDR_IID) { if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0) { stat_inc(STATS_IPV6_IID_RANDOM); } else if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_IID_ISATAP) != 0) { stat_inc(STATS_IPV6_IID_ISATAP); } else if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_IID_LOCAL) != 0) { stat_inc(STATS_IPV6_IID_MANUAL); } else if ((ipv6addr.typeinfo & IPV6_NEW_ADDR_IID_GLOBAL) != 0) { stat_inc(STATS_IPV6_IID_GLOBAL); } else { stat_inc(STATS_IPV6_IID_UNKNOWN); }; }; }; break; case FORMAT_ipv4addr: /* is IPv4 address */ stat_inc(STATS_IPV4); if (opt_simple != 1) { cc_index = libipv4addr_cc_index_by_addr(&ipv4addr, NULL); as_num32 = libipv4addr_as_num32_by_addr(&ipv4addr); stat_inc_country_code(cc_index, 4); stat_inc_asnum(as_num32, 4); }; registry = libipv4addr_registry_num_by_addr(&ipv4addr); switch (registry) { case IPV4_ADDR_REGISTRY_IANA: stat_inc(STATS_IPV4_IANA); break; case IPV4_ADDR_REGISTRY_APNIC: stat_inc(STATS_IPV4_APNIC); break; case IPV4_ADDR_REGISTRY_ARIN: stat_inc(STATS_IPV4_ARIN); break; case IPV4_ADDR_REGISTRY_RIPENCC: stat_inc(STATS_IPV4_RIPENCC); break; case IPV4_ADDR_REGISTRY_LACNIC: stat_inc(STATS_IPV4_LACNIC); break; case IPV4_ADDR_REGISTRY_AFRINIC: stat_inc(STATS_IPV4_AFRINIC); break; case IPV4_ADDR_REGISTRY_RESERVED: stat_inc(STATS_IPV4_RESERVED); break; default: stat_inc(STATS_IPV4_UNKNOWN); if (opt_unknown == 1) { fprintf(stderr, "Unknown address: %s\n", token); }; break; }; break; }; }; if (opt_onlyheader == 0) { if (ipv6calc_quiet == 0) { fprintf(stderr, "...finished\n"); }; }; /* print result */ if (opt_printdirection == 0) { /* print in rows */ /* print version number */ printf("%-20s %d.%d\n", "*Version", STATS_VERSION_MAJOR, STATS_VERSION_MINOR); time(&timer); tm_info = gmtime(&timer); strftime(resultstring, sizeof(resultstring), "%Y:%m:%d %H:%M:%S%z %Z", tm_info); printf("*DateTime: %s\n", resultstring); printf("*UnixTime: %ju\n", (uintmax_t) timer); libipv6calc_db_wrapper_print_db_info(0, "*3*DB-Info: "); /* print version number */ if (strlen(opt_token) > 0) { printf("%-20s %s\n", "*Token", opt_token); }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6logstats_statentries); i++) { printf("%-20s %lu\n", ipv6logstats_statentries[i].token, ipv6logstats_statentries[i].counter); }; if (feature_cc == 1) { /* country_code / proto */ for (index = 0; index < COUNTRYCODE_INDEX_MAX; index++) { if (counter_country[index] > 0) { DEBUGPRINT_WA(DEBUG_ipv6logstats_summary, "CC-Index: %d", index); libipv6calc_db_wrapper_country_code_by_cc_index(resultstring, sizeof(resultstring), index); printf("*3*CC-code-proto/%s/ALL %lu\n", resultstring, counter_country[index]); printf("*3*CC-code-proto/%s/IPv4 %lu\n", resultstring, counter_country_ipv4[index]); printf("*3*CC-code-proto/%s/IPv6 %lu\n", resultstring, counter_country_ipv6[index]); printf("*3*CC-code-proto-list/%s %lu %lu %lu\n", resultstring, counter_country[index], counter_country_ipv4[index], counter_country_ipv6[index]); }; }; /* proto / country_code */ c_all = 0; c_ipv4 = 0; c_ipv6 = 0; for (index = 0; index < COUNTRYCODE_INDEX_MAX; index++) { if (counter_country[index] > 0) { libipv6calc_db_wrapper_country_code_by_cc_index(resultstring, sizeof(resultstring), index); printf("*3*CC-proto-code/ALL/%s %lu\n", resultstring, counter_country[index]); c_all += counter_country[index]; }; }; for (index = 0; index < COUNTRYCODE_INDEX_MAX; index++) { if (counter_country_ipv4[index] > 0) { libipv6calc_db_wrapper_country_code_by_cc_index(resultstring, sizeof(resultstring), index); printf("*3*CC-proto-code/IPv4/%s %lu\n", resultstring, counter_country_ipv4[index]); c_ipv4 += counter_country_ipv4[index]; }; }; for (index = 0; index < COUNTRYCODE_INDEX_MAX; index++) { if (counter_country_ipv6[index] > 0) { libipv6calc_db_wrapper_country_code_by_cc_index(resultstring, sizeof(resultstring), index); printf("*3*CC-proto-code/IPv6/%s %lu\n", resultstring, counter_country_ipv6[index]); c_ipv6 += counter_country_ipv6[index]; }; }; if ((c_all + c_ipv4 + c_ipv6) > 0) { printf("*3*CC-proto-code-list/ALL %lu %lu %lu\n", c_all, c_ipv4, c_ipv6); }; }; if (feature_as == 1) { /* ASN number / proto */ for (index = 0; index < ASNUM_MAX; index++) { if (counter_asn[index] > 0) { printf("*3*AS-num-proto/%d/ALL %lu\n", index, counter_asn[index]); printf("*3*AS-num-proto/%d/IPv4 %lu\n", index, counter_asn_ipv4[index]); printf("*3*AS-num-proto/%d/IPv6 %lu\n", index, counter_asn_ipv6[index]); printf("*3*AS-num-proto-list/%d %lu %lu %lu\n", index, counter_asn[index], counter_asn_ipv4[index], counter_asn_ipv6[index]); }; }; /* ASN proto / number */ c_all = 0; c_ipv4 = 0; c_ipv6 = 0; for (index = 0; index < ASNUM_MAX; index++) { if (counter_asn[index] > 0) { printf("*3*AS-proto-num/ALL/%d %lu\n", index, counter_asn[index]); c_all += counter_asn[index]; }; }; for (index = 0; index < ASNUM_MAX; index++) { if (counter_asn_ipv4[index] > 0) { printf("*3*AS-proto-num/IPv4/%d %lu\n", index, counter_asn_ipv4[index]); c_ipv4 += counter_asn_ipv4[index]; }; }; for (index = 0; index < ASNUM_MAX; index++) { if (counter_asn_ipv6[index] > 0) { printf("*3*AS-proto-num/IPv6/%d %lu\n", index, counter_asn_ipv6[index]); c_ipv6 += counter_asn_ipv6[index]; }; }; if ((c_all + c_ipv4 + c_ipv6) > 0) { printf("*3*AS-proto-num-list/ALL %lu %lu %lu\n", c_all, c_ipv4, c_ipv6); }; }; } else { /* print in columns */ if (opt_noheader == 0) { if (strlen(opt_token) > 0) { column_offset++; if (opt_onlyheader == 0) { if (opt_column_numbers == 1) { printf("Token(1) "); } else { printf("Token "); } } else { printf("%s ", opt_token); }; }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6logstats_statentries); i++) { if (i > 0) { printf(" "); }; if (opt_column_numbers == 1) { printf("%s(%d)", ipv6logstats_statentries[i].token, i + column_offset); } else { printf("%s", ipv6logstats_statentries[i].token); }; }; printf(" #Version(%d.%d)\n", STATS_VERSION_MAJOR, STATS_VERSION_MINOR); }; if (opt_onlyheader == 0) { if (strlen(opt_token) > 0) { printf("%s ", opt_token); }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6logstats_statentries); i++) { if (i > 0) { printf(" "); }; printf("%lu", ipv6logstats_statentries[i].counter); }; printf(" #%d.%d\n", STATS_VERSION_MAJOR, STATS_VERSION_MINOR); }; }; if (opt_printdirection == 0) { /* print used database only in row mode */ #if defined SUPPORT_IP2LOCATION || defined SUPPORT_GEOIP || defined SUPPORT_DBIP || defined SUPPORT_EXTERNAL || defined SUPPORT_BUILTIN char *string; #endif #ifdef SUPPORT_IP2LOCATION string = libipv6calc_db_wrapper_IP2Location_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { printf("*3*DB-Used: %s\n", string); }; #endif #ifdef SUPPORT_GEOIP string = libipv6calc_db_wrapper_GeoIP_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { printf("*3*DB-Used: %s\n", string); }; #endif #ifdef SUPPORT_DBIP string = libipv6calc_db_wrapper_DBIP_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { printf("*3*DB-Used: %s\n", string); }; #endif #ifdef SUPPORT_EXTERNAL string = libipv6calc_db_wrapper_External_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { printf("*3*DB-Used: %s\n", string); }; #endif #ifdef SUPPORT_BUILTIN string = libipv6calc_db_wrapper_BuiltIn_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { printf("*3*DB-Used: %s\n", string); }; #endif }; return; }; ipv6calc-1.0.0/ipv6logstats/ipv6logstats.h000066400000000000000000000033551312366535500205210ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6logstats * File : ipv6logstats.h * Version : $Id: 892cd0cea68edf2308105c4e9de9f146e893363b $ * Copyright : 2003-2014 by Peter Bieringer * * Information: * Main header file */ /* global program related definitions */ #define PROGRAM_NAME "ipv6logstats" #define PROGRAM_COPYRIGHT "(P) & (C) 2003-" COPYRIGHT_YEAR " by Peter Bieringer " #define STATS_VERSION_MAJOR 4 #define STATS_VERSION_MINOR 0 #define STATS_ALL 0x00 #define STATS_IPV4 0x01 #define STATS_IPV6 0x02 #define STATS_UNKNOWN 0x03 #define STATS_IPV4_IANA 0x12 #define STATS_IPV4_APNIC 0x13 #define STATS_IPV4_ARIN 0x14 #define STATS_IPV4_RIPENCC 0x15 #define STATS_IPV4_LACNIC 0x16 #define STATS_IPV4_AFRINIC 0x17 #define STATS_IPV4_RESERVED 0x1e #define STATS_IPV4_UNKNOWN 0x1f #define STATS_IPV6_6BONE 0x21 #define STATS_IPV6_IANA 0x22 #define STATS_IPV6_APNIC 0x23 #define STATS_IPV6_ARIN 0x24 #define STATS_IPV6_RIPENCC 0x25 #define STATS_IPV6_LACNIC 0x26 #define STATS_IPV6_AFRINIC 0x27 #define STATS_IPV6_RESERVED 0x2e #define STATS_IPV6_UNKNOWN 0x2f #define STATS_IPV6_6TO4_BASE 0x30 #define STATS_IPV6_TEREDO_BASE 0x40 #define STATS_IPV6_NAT64_BASE 0x50 #define STATS_IPV6_IID_GLOBAL 0x100 #define STATS_IPV6_IID_MANUAL 0x101 #define STATS_IPV6_IID_RANDOM 0x102 #define STATS_IPV6_IID_ISATAP 0x103 #define STATS_IPV6_IID_UNKNOWN 0x10f #define DEBUG_ipv6logstats_general 0x00000001l #define DEBUG_ipv6logstats_summary 0x00000002l #define DEBUG_ipv6logstats_processing 0x00000004l /* labels statistic numbers */ typedef struct { const int number; long unsigned int counter; const char *token; } stat_entries; extern int feature_cc; extern int feature_as; extern int feature_reg; ipv6calc-1.0.0/ipv6logstats/ipv6logstatshelp.c000066400000000000000000000055501312366535500213640ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatshelp.c * Version : $Id: 628937beacecdad066d2aae53e9fbf83e65e0fbc $ * Copyright : 2003-2014 by Peter Bieringer * * Information: * Help library */ #include #include #include #include "ipv6logstats.h" #include "ipv6calctypes.h" #include "ipv6calccommands.h" #include "ipv6calchelp.h" #include "config.h" #include "../databases/lib/libipv6calc_db_wrapper.h" /* display info */ void printversion(void) { fprintf(stderr, "%s: version %s", PROGRAM_NAME, PACKAGE_VERSION); if (feature_reg == 1) { fprintf(stderr, " STAT_REG"); }; if (feature_cc == 1) { fprintf(stderr, " STAT_CC"); }; if (feature_as == 1) { fprintf(stderr, " STAT_AS"); }; fprintf(stderr, "\n"); }; void printversion_help(void) { fprintf(stderr, "\n"); fprintf(stderr, "Explanation of available(x)/possible(o) feature tokens\n"); fprintf(stderr, "%-22s%c %s\n", "STAT_REG", (feature_reg == 1)? 'x' : 'o', "Statistics by Registry"); fprintf(stderr, "%-22s%c %s\n", "STAT_CC", (feature_cc == 1) ? 'x' : 'o', "Statistics by CountryCode"); fprintf(stderr, "%-22s%c %s\n", "STAT_AS", (feature_as == 1) ? 'x' : 'o', "Statistics by Autonomous System Number"); fprintf(stderr, "\n"); }; void printversion_verbose(int level_verbose) { printversion(); fprintf(stderr, "\n"); ipv6calc_print_features_verbose(level_verbose); }; void printcopyright(void) { fprintf(stderr, "%s\n", PROGRAM_COPYRIGHT); }; void ipv6logstats_printinfo(void) { printversion(); printcopyright(); fprintf(stderr, "This program creates a statistics of client IPv4/IPv6 addresses from HTTP server log files\n"); fprintf(stderr, "See '%s -?|-h|--help for online help\n", PROGRAM_NAME); }; /* print global help */ void ipv6logstats_printhelp(void) { printversion(); printcopyright(); fprintf(stderr, "\n"); fprintf(stderr, " Takes web server log data (or any other data which has IPv4/v6 address in first column)\n"); fprintf(stderr, " from stdin and print statistics table/list (depending on option) to stdout\n"); printhelp_common(IPV6CALC_HELP_ALL); fprintf(stderr, " [-u|--unknown] : print unknown IP addresses to stderr\n"); fprintf(stderr, " [-c|--columns] : print statistics in columns (1)\n"); fprintf(stderr, " [-N|--column-numbers] : print column numbers\n"); fprintf(stderr, " [-n|--noheader] : don't print header in columns mode (1)\n"); fprintf(stderr, " [-o|--onlyheader] : print only header in columns mode (1)\n"); fprintf(stderr, " [-p|--prefix ] : print token as prefix (1)\n"); fprintf(stderr, " [-s|--simple] : disable extended statistic (CountryCode/ASN)\n"); fprintf(stderr, "\n"); fprintf(stderr, " (1) unsupported for CountryCode & ASN statistics\n"); fprintf(stderr, "\n"); return; }; ipv6calc-1.0.0/ipv6logstats/ipv6logstatshelp.h000066400000000000000000000007351312366535500213710ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatshelp.h * Version : $Id: e5208b2371848221be0dc17c6b06f70e8d70bedd $ * Copyright : 2003-2014 by Peter Bieringer * * Information: * Header file for ipv6logstatshelp.c */ extern void printversion(void); extern void printversion_help(void); extern void printversion_verbose(int level_verbose); extern void ipv6logstats_printinfo(void); extern void ipv6logstats_printhelp(void); ipv6calc-1.0.0/ipv6logstats/ipv6logstatsoptions.h000066400000000000000000000017121312366535500221300ustar00rootroot00000000000000/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatsoptions.h * Version : $Id: cd821f4c50a0ec89ead6be00c43a81cef97c37e5 $ * Copyright : 2003-2014 by Peter Bieringer * * Information: * Header file containing optios for ipvlogstats.c */ #include #include "ipv6calctypes.h" #ifndef _ipv6logstatsoptions_h_ #define _ipv6logstatsoptions_h_ /* Options */ /* define short options */ static char *ipv6logstats_shortopts = "vh?uNosncp:w:"; /* define long options */ static struct option ipv6logstats_longopts[] = { {"version", 0, 0, (int) 'v'}, /* help options */ {"help", 0, 0, (int) 'h'}, /* normal options */ {"unknown" , 0, 0, (int) 'u'}, {"columns" , 0, 0, (int) 'c'}, {"prefix" , 1, 0, (int) 'p'}, {"noheader" , 0, 0, (int) 'n'}, {"onlyheader" , 0, 0, (int) 'o'}, {"simple" , 0, 0, (int) 's'}, {"write" , 1, 0, (int) 'O'}, {"column-numbers", 1, 0, (int) 'N'}, }; #endif ipv6calc-1.0.0/ipv6logstats/test_ipv6logstats.sh000077500000000000000000000155671312366535500217560ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/logstats # File : test_ipv6logstats.sh # Version : $Id: 7718ad6d3008da93576d6fce2b46b1bff7b1b8e7 $ # Copyright : 2003-2015 by Peter Bieringer # # Test program for "ipv6logstats" verbose=0 while getopts "Vh\?" opt; do case $opt in V) verbose=1 ;; *) echo "$0 [-V]" echo " -V verbose" exit 1 ;; esac done if [ ! -x ./ipv6logstats ]; then echo "Binary './ipv6logstats' missing or not executable" exit 1 fi # Test proper option definitions echo "Test proper option definition" ./ipv6logstats -h >/dev/null if [ $? -ne 1 ]; then echo "ERROR : something wrong in option definition" exit 1 fi echo "Run 'ipv6logstat' version help test for feature tokens..." ./ipv6logstats -v -h retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats -v -h'!" exit 1 fi echo source ../ipv6calc/test_scenarios.sh testscenarios() { # Requests cat </dev/null retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats'!" exit 1 fi echo ## check basic support if ./ipv6logstats -v 2>&1| grep -qw "STAT_REG"; then true else echo "NOTICE: SKIP ipv6logstats tests because of missing feature STAT_REG" exit 0 fi ## main ## echo "Run 'ipv6logstats' function tests..." #testscenarios test="run 'ipv6logstats' test #1" echo "INFO : $test" if [ "$verbose" = "1" ]; then testscenarios | ./ipv6logstats -q retval=$? else testscenarios | ./ipv6logstats -q >/dev/null 2>&1 retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats'!" exit 1 fi echo "INFO : $test successful" #testscenarios (columns) test="run 'ipv6logstats' columns" echo "INFO : $test" if [ "$verbose" = "1" ]; then testscenarios | ./ipv6logstats -q -c retval=$? else testscenarios | ./ipv6logstats -q -c 2>/dev/null retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats'!" exit 1 fi echo "INFO : $test successful" #testscenarios version 3 test="run 'ipv6logstats' test #3" echo "INFO : $test" if ./ipv6logstats -v 2>&1 | grep -qw "STAT_CC"; then if [ "$verbose" = "1" ]; then testscenarios | ./ipv6logstats -q | grep -q '\*3\*CC-proto-code-list/ALL' retval=$? else testscenarios | ./ipv6logstats -q 2>/dev/null | grep -q '\*3\*CC-proto-code-list/ALL' retval=$? fi if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats' (version 3 test)" exit 1 fi echo "INFO : $test successful" else echo "Skip 'ipv6logstats' version 3 test (missing STAT_CC support)" fi # testscenarios matching if ./ipv6logstats -v 2>&1 | grep -qw "STAT_CC"; then feature_cc=1 fi if ./ipv6logstats -v 2>&1 | grep -qw "STAT_AS"; then feature_as=1 fi test="run 'ipv6logstats' match test" echo "INFO : $test" testscenarios_match | while read ip match; do [ "$verbose" = "1" ] && echo -n "INFO : test $ip for match $match: " if echo "$match" | grep -q "^AS"; then if [ "$feature_as" != "1" ]; then echo "SKIPPED (missing support)" continue fi fi if echo "$match" | grep -q "^CC"; then if [ "$feature_cc" != "1" ]; then echo "SKIPPED (missing support)" continue fi fi if [ "$verbose" = "1" ]; then echo "$ip" | ./ipv6logstats -q | grep -q "$match\W*1" result=$? else echo "$ip" | ./ipv6logstats -q 2>/dev/null | grep -q "$match\W*1" result=$? fi if [ $result -ne 0 ]; then echo "ERROR, unexpected result:" echo "$ip" | ./ipv6logstats -q | grep -v "DB-Info" exit 1 fi done || exit 1 echo "INFO : $test successful" echo "INFO : test scenario with huge amount of addresses..." if [ "$verbose" = "1" ]; then testscenario_hugelist ipv4 | ./ipv6logstats -q >/dev/null result=$? else testscenario_hugelist ipv4 | ./ipv6logstats -q >/dev/null 2>/dev/null result=$? fi if [ $result -ne 0 ]; then echo "ERROR : exit code != 0" exit 1 fi echo "INFO : test scenario with huge amount of addresses: OK" echo "All tests were successfully done!" ipv6calc-1.0.0/lib/000077500000000000000000000000001312366535500137765ustar00rootroot00000000000000ipv6calc-1.0.0/lib/Makefile.in000066400000000000000000000053421312366535500160470ustar00rootroot00000000000000# Project : ipv6calc # File : lib/Makefile # Version : $Id: 66a94b895b50ee83a6ff08087eea4638d8196b37 $ # Copyright : 2002-2014 by Peter Bieringer # # Information: # Makefile for ipv6calc libraries # libdir = @libdir@ # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall CFLAGS += -D__EXTENSIONS__ -fPIC INCLUDES= -I. -I../ -I../databases/lib/ @GETOPT_INCLUDE@ @MD5_INCLUDE@ @GEOIP_INCLUDE_L1@ @IP2LOCATION_INCLUDE_L1@ ifeq ($(shell uname), Darwin) SO_NAME_FLAGS=-install_name else SO_NAME_FLAGS=-soname endif SHARED_LIBRARY=@SHARED_LIBRARY@ CC = @CC@ AR = ar RANLIB = @RANLIB@ OBJS = libipv6calc.o \ libipv6addr.o \ libipv4addr.o \ libipaddr.o \ libieee.o \ libeui64.o \ libmac.o \ librfc1884.o \ librfc1886.o \ librfc1924.o \ librfc2874.o \ librfc3041.o \ librfc3056.o \ librfc5569.o \ librfc6052.o \ libifinet6.o \ ipv6calchelp.o \ ipv6calcoptions.o \ ipv6calctypes.o all: ${MAKE} libipv6calc.a ${MAKE} libipv6calc.so.@PACKAGE_VERSION@ .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) $(OBJS): libipv6calcdebug.h \ libipv6calc.h \ libipv6addr.h \ libipv4addr.h \ libipaddr.h \ libieee.h \ libeui64.h \ libmac.h \ librfc1884.h \ librfc1886.h \ librfc1924.h \ librfc2874.h \ librfc3041.h \ librfc3056.h \ librfc6052.h \ libifinet6.h \ ipv6calchelp.h \ ipv6calctypes.h \ ipv6calcoptions.h \ ipv6calcoptions_common.h \ ipv6calccommands.h \ ipv6calc_inttypes.h \ libipv6calc.a: $(OBJS) cd ../ && ${MAKE} db-ieee-oui-make cd ../ && ${MAKE} db-ipv4-assignment-make cd ../ && ${MAKE} db-ipv6-assignment-make echo "Create library (.a)" $(AR) r libipv6calc.a $(OBJS) $(RANLIB) libipv6calc.a libipv6calc.so.@PACKAGE_VERSION@: $(OBJS) ifeq ($(SHARED_LIBRARY), yes) cd ../ && ${MAKE} db-ieee-oui-make cd ../ && ${MAKE} db-ipv4-assignment-make cd ../ && ${MAKE} db-ipv6-assignment-make echo "Creates shared library (.so)" $(CC) -o libipv6calc.so.@PACKAGE_VERSION@ $(OBJS) $(CFLAGS) $(LDFLAGS) -shared -Wl,$(SO_NAME_FLAGS),libipv6calc.so.@PACKAGE_VERSION@ else echo "Nothing to do (shared libary mode is not enabled)" endif distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f *.o *.a *.so *.so.* install: all ifeq ($(SHARED_LIBRARY), yes) echo "Install shared library" mkdir -p $(DESTDIR)$(libdir) install -m 755 libipv6calc.so.@PACKAGE_VERSION@ $(DESTDIR)$(libdir) /sbin/ldconfig -n $(DESTDIR)$(libdir) else echo "Nothing to do (shared libary mode is not enabled)" endif test: ipv6calc-1.0.0/lib/ipv6calc_inttypes.h000066400000000000000000000013501312366535500176140ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calc_inttypes.h * Version : $Id: e22d7d8b2a44d96927e6bd9495bf93d738e4ce58 $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * Common header file to define inttypes like uint8_t and other basics */ #ifndef _ipv6calc_inttypes_h #define _ipv6calc_inttypes_h 1 #if defined(__linux__) /* Linux/glibc has no inttypes.h */ #include #else /* Should catch all *BSD, others, too */ #include #include #endif /* max string length */ #define NI_MAXHOST 1024 #define IPV6CALC_ADDR_STRING_MAX 256 #define IPV6CALC_SCOPEID_STRING_MAX 64 #define IPV6CALC_COUNTRYCODE_STRING_MAX 16 #endif // _ipv6calc_inttypes_h ipv6calc-1.0.0/lib/ipv6calccommands.h000066400000000000000000000070121312366535500174000ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calccommands.h * Version : $Id: bd22acf972eec0b0b995bb96cfc7ee9396c36e4c $ * Copyright : 2002-2017 by Peter Bieringer * License : GPLv2 * * Information: * Header file containing commands for ipv6calc */ #ifndef _ipv6calccommands_h_ #define _ipv6calccommands_h_ /* verbose levels */ #define LEVEL_VERBOSE 0x1 #define LEVEL_VERBOSE2 0x2 /* command values */ #define CMD_printhelp 0x0000001 #define CMD_printversion 0x0000002 #define CMD_printversion_verbose 0x0000020 #define CMD_printversion_verbose2 0x0000040 #define CMD_printexamples 0x0000004 #define CMD_printoldoptions 0x0000008 // EOL 2014-04-02 /* new style options */ #define CMD_inputtype 0x0200000 #define CMD_outputtype 0x0400000 #define CMD_actiontype 0x0800000 /* shortcut commands */ #define CMD_shortcut_start 0x0001010 #define CMD_addr_to_ip6int 0x0001010 #define CMD_addr_to_compressed 0x0001020 #define CMD_addr_to_uncompressed 0x0001030 #define CMD_addr_to_fulluncompressed 0x0001040 #define CMD_addr_to_ifinet6 0x0001050 #define CMD_addr_to_base85 0x0001060 #define CMD_addr_to_ip6arpa 0x0001070 #define CMD_addr_to_bitstring 0x0001080 #define CMD_ipv4_to_6to4addr 0x0001090 #define CMD_base85_to_addr 0x00010a0 #define CMD_mac_to_eui64 0x00010b0 #define CMD_eui64_to_privacy 0x00010c0 #define CMD_ifinet6_to_compressed 0x00010d0 #define CMD_shortcut_end 0x00010d0 #define CMD_showinfo 0x0010010 #define CMD_showinfotypes 0x0010020 /* database options (old) */ #define DB_ip2location_ipv4 0x0020010 #define DB_ip2location_ipv6 0x0020020 #define DB_ip2location_ipv4_default 0x0020030 #define DB_ip2location_ipv6_default 0x0020040 #define DB_geoip_ipv4 0x0021010 #define DB_geoip_ipv6 0x0021020 #define DB_geoip_ipv4_default 0x0002103 #define DB_geoip_ipv6_default 0x0002104 /* database options (new) */ #define DB_ip2location_disable 0x0020000 #define DB_ip2location_dir 0x0020050 #define DB_ip2location_lib 0x0020060 #define DB_ip2location_lite_to_sample_autoswitch_max_delta_months 0x0020100 #define DB_ip2location_comm_to_lite_switch_min_delta_months 0x0020110 #define DB_ip2location_only_type 0x0020120 #define DB_ip2location_allow_softlinks 0x0020130 #define DB_geoip_disable 0x0021000 #define DB_geoip_dir 0x0021050 #define DB_geoip_lib 0x0021060 #define DB_dbip_disable 0x0022000 #define DB_dbip_dir 0x0022050 #define DB_dbip_comm_to_free_switch_min_delta_months 0x0022110 #define DB_dbip_only_type 0x0022120 #define DB_external_disable 0x0023000 #define DB_external_dir 0x0023050 #define DB_builtin_disable 0x0024000 #define DB_common_priorization 0x002fff0 /* address anonymizer options */ #define CMD_ANON_PRESET_STANDARD 0x0030010 #define CMD_ANON_PRESET_CAREFUL 0x0030020 #define CMD_ANON_PRESET_PARANOID 0x0030030 #define CMD_ANON_METHOD_OPTION 0x00300e0 #define CMD_ANON_PRESET_OPTION 0x00300f0 #define CMD_ANON_MASK_IPV4 0x0030100 #define CMD_ANON_MASK_IPV6 0x0030110 #define CMD_ANON_MASK_EUI64 0x0030120 #define CMD_ANON_MASK_MAC 0x0030130 #define CMD_ANON_MASK_AUTOADJUST 0x0030180 #define CMD_ANON_MASK_IID 0x0030190 // deprecated /* 6rd options */ #define CMD_6rd_prefix 0x0040010 #define CMD_6rd_relay_prefix 0x0040020 #define CMD_6rd_prefixlength 0x0040030 /* address test options */ #define CMD_test_prefix 0x0050010 // prefix #define CMD_test_gt 0x0050020 // greater than #define CMD_test_ge 0x0050030 // greater equal #define CMD_test_lt 0x0050040 // less than #define CMD_test_le 0x0050050 // less equal #endif ipv6calc-1.0.0/lib/ipv6calchelp.c000066400000000000000000001115231312366535500165250ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calchelp.c * Version : $Id: 8a1f0237e76ce77f80f9b198e3f9f2eae6d584f5 $ * Copyright : 2002-2017 by Peter Bieringer * * Information: * Help library */ #include #include #include #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "ipv6calctypes.h" #include "ipv6calcoptions.h" #include "ipv6calchelp.h" #include "config.h" #include "libieee.h" #include "databases/lib/libipv6calc_db_wrapper.h" #include "databases/lib/libipv6calc_db_wrapper_GeoIP.h" #include "databases/lib/libipv6calc_db_wrapper_IP2Location.h" #include "databases/lib/libipv6calc_db_wrapper_DBIP.h" #include "databases/lib/libipv6calc_db_wrapper_BuiltIn.h" #include "databases/lib/libipv6calc_db_wrapper_External.h" #ifdef SUPPORT_IP2LOCATION /* * * API_VERSION is defined as a bareword in IP2Location.h, * * we need this trick to stringify it. Blah. * */ #define makestr(x) #x #define xmakestr(x) makestr(x) extern char* file_ip2location_ipv4; extern char* file_ip2location_ipv6; #endif /* to be defined in each application */ extern void printversion(void); extern void printcopyright(void); /* format option arguments */ void printhelp_print(void) { fprintf(stderr, " --printprefix : print only prefix of IPv6 address\n"); fprintf(stderr, " --printsuffix : print only suffix of IPv6 address\n"); }; void printhelp_mask(void) { fprintf(stderr, " --maskprefix : mask IPv6 address with prefix length (clears suffix bits)\n"); fprintf(stderr, " --masksuffix : mask IPv6 address with suffix length (clears prefix bits)\n"); }; void printhelp_case(void) { fprintf(stderr, " --uppercase|-u : print chars of IPv6 address in upper case\n"); fprintf(stderr, " --lowercase|-l : print chars of IPv6 address in lower case [default]\n"); }; void printhelp_printstartend(void) { fprintf(stderr, " --printstart <1-128> : print part of IPv6 address start from given number\n"); fprintf(stderr, " --printend <1-128> : print part of IPv6 address end at given number\n"); }; void printhelp_doublecommands(void) { printversion(); printcopyright(); fprintf(stderr, " Only one command may be specified!\n"); }; void printhelp_missinginputdata(void) { printversion(); printcopyright(); fprintf(stderr, " Missing or to few input data given!\n"); }; /* list of input types */ void printhelp_inputtypes(const uint32_t formatoptions) { int i, j; size_t maxlen = 0; char printformatstring[20]; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { printversion(); printcopyright(); }; /* look for longest type definition */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_formatstrings); j++) { if (strlen(ipv6calc_formatstrings[j].token) > maxlen) { maxlen = strlen(ipv6calc_formatstrings[j].token); }; }; if (maxlen > 999) { fprintf(stderr, " Something going wrong with array 'ipv6calc_formatstrings'!\n"); exit(EXIT_FAILURE); }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { snprintf(printformatstring, sizeof(printformatstring), " %%-%ds : %%s\n", (int) maxlen); } else { snprintf(printformatstring, sizeof(printformatstring), "%%-%ds\n", (int) maxlen); } DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Format string: %s", printformatstring); if ((formatoptions & FORMATOPTION_machinereadable) == 0) fprintf(stderr, "\n Available input types:\n"); /* run through matrix */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatmatrix); i++) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Row %d: %08x - %08x", i, (unsigned int) ipv6calc_formatmatrix[i][0], (unsigned int) ipv6calc_formatmatrix[i][1]); if (ipv6calc_formatmatrix[i][1] != 0) { /* available for input, look for name now */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_formatstrings); j++) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Format-Row %d: %08x - %s - %s", j, (unsigned int) ipv6calc_formatstrings[j].number, ipv6calc_formatstrings[j].token, ipv6calc_formatstrings[j].explanation); if (ipv6calc_formatstrings[j].number == ipv6calc_formatmatrix[i][0]) { if ((formatoptions & FORMATOPTION_machinereadable) == 0) { fprintf(stderr, printformatstring, ipv6calc_formatstrings[j].token, ipv6calc_formatstrings[j].explanation); } else { fprintf(stdout, printformatstring, ipv6calc_formatstrings[j].token); }; }; }; }; }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) fprintf(stderr, "\n"); }; /* list of output types */ void printhelp_outputtypes(const uint32_t inputtype, const uint32_t formatoptions) { int i, j; size_t maxlen = 0; char printformatstring[20]; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { printversion(); printcopyright(); }; /* look for longest type definition */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_formatstrings); j++) { if (strlen(ipv6calc_formatstrings[j].token) > maxlen) { maxlen = strlen(ipv6calc_formatstrings[j].token); }; }; if (maxlen > 999) { fprintf(stderr, " Something going wrong with array 'ipv6calc_formatstrings'!\n"); exit(EXIT_FAILURE); }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { snprintf(printformatstring, sizeof(printformatstring), " %%-%ds : %%s\n", (int) maxlen); } else { snprintf(printformatstring, sizeof(printformatstring), "%%-%ds\n", (int) maxlen); }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Format string: %s", printformatstring); if ((formatoptions & FORMATOPTION_machinereadable) == 0) { if ( (inputtype & ~ (FORMAT_auto | FORMAT_any) ) != 0 ) { fprintf(stderr, "\n Available output types filtered by input type:\n"); } else { fprintf(stderr, "\n Available output types:\n"); }; }; /* run through matrix */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_formatstrings); j++) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Format-Row %d: %08x - %s - %s", j, (unsigned int) ipv6calc_formatstrings[j].number, ipv6calc_formatstrings[j].token, ipv6calc_formatstrings[j].explanation); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatmatrix); i++) { if ( (inputtype & ~ (FORMAT_auto | FORMAT_any) ) != 0 ) { if (ipv6calc_formatmatrix[i][0] != inputtype) { /* skip */ continue; }; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Row %d: %08x - %08x", i, (unsigned int) ipv6calc_formatmatrix[i][0], (unsigned int) ipv6calc_formatmatrix[i][1]); if ((ipv6calc_formatmatrix[i][1] & ipv6calc_formatstrings[j].number) != 0) { /* available for output, look for name now */ if (strlen(ipv6calc_formatstrings[j].explanation) > 0) { fprintf(stderr, printformatstring, ipv6calc_formatstrings[j].token, ipv6calc_formatstrings[j].explanation); } else { fprintf(stdout, printformatstring, ipv6calc_formatstrings[j].token, "(empty)"); }; break; }; }; }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { fprintf(stderr, "\n For examples and available format options use:\n"); fprintf(stderr, " -O|--out --examples\n"); fprintf(stderr, "\n"); }; }; /* list of action types */ void printhelp_actiontypes(const uint32_t formatoptions, const struct option longopts[]) { int i, j, o, test, has_options; size_t maxlen = 0; char printformatstring[20], printformatstring2[20], printformatstring3[20]; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { printversion(); printcopyright(); }; /* look for longest type definition */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_actionstrings); j++) { if (strlen(ipv6calc_actionstrings[j].token) > maxlen) { maxlen = strlen(ipv6calc_actionstrings[j].token); }; }; if (maxlen > 999) { fprintf(stderr, " Something going wrong with array 'ipv6calc_actionstrings'!\n"); exit (EXIT_FAILURE); }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) { snprintf(printformatstring, sizeof(printformatstring), " %%-%ds : %%s\n", (int) maxlen); } else { snprintf(printformatstring, sizeof(printformatstring), "%%-%ds\n", (int) maxlen); }; snprintf(printformatstring2, sizeof(printformatstring2), " %%-%ds%%s\n", (int) maxlen + 4); snprintf(printformatstring3, sizeof(printformatstring3), " %%-%ds--%%s", (int) maxlen + 5); DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Action string: %s", printformatstring); if ((formatoptions & FORMATOPTION_machinereadable) == 0) fprintf(stderr, "\n Available action types:\n"); for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_actionstrings); j++) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Action-Row %d: %08x - %s - %s", j, (unsigned int) ipv6calc_actionstrings[j].number, ipv6calc_actionstrings[j].token, ipv6calc_actionstrings[j].explanation); if ((formatoptions & FORMATOPTION_machinereadable) == 0) { fprintf(stderr, printformatstring, ipv6calc_actionstrings[j].token, ipv6calc_actionstrings[j].explanation); test = 2; has_options = 0; while (test != 0) { if (test == 1) { fprintf(stderr, printformatstring2, "", "Options:"); }; /* search for defined options */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_actionoptionmap); i++) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Option %d", i) if (ipv6calc_actionstrings[j].number == ipv6calc_actionoptionmap[i][0]) { if (ipv6calc_actionoptionmap[i][1] == 0) { /* no options supported */ break; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Option value: %08x", (unsigned int) ipv6calc_actionoptionmap[i][1]); /* run through options */ o = 0; while(longopts[o].name != NULL) { if ((ipv6calc_actionoptionmap[i][1] == (uint32_t) longopts[o].val)) { has_options = 1; if (test == 1) { fprintf(stderr, printformatstring3, "", longopts[o].name); if (longopts[o].has_arg > 0) { fprintf(stderr, " ..."); }; if (ipv6calc_actionoptionmap[i][2] > 0) { fprintf(stderr, " (optional)"); } else { fprintf(stderr, " (required)"); }; fprintf(stderr, "\n"); }; }; o++; }; }; }; if (has_options == 0) { break; }; test--; }; } else { fprintf(stdout, printformatstring, ipv6calc_actionstrings[j].token); }; }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) fprintf(stderr, "\n"); }; /* print global common help */ void printhelp_common(const uint32_t help_features) { fprintf(stderr, "\n"); fprintf(stderr, " [-d|--debug ] : debug value (bitwise like)\n"); fprintf(stderr, " can also be set by IPV6CALC_DEBUG environment value\n"); fprintf(stderr, " [-v|--version [-v [-v]]] : version information (2 optional detail levels)\n"); fprintf(stderr, " [-v|--version -h] : explanation of feature tokens\n"); fprintf(stderr, " [-V|--verbose] : be more verbose\n"); fprintf(stderr, " [-h|--help|-?] : this online help\n"); if ((help_features & IPV6CALC_HELP_QUIET) != 0) { fprintf(stderr, " [-q|--quiet] : be more quiet\n"); }; if ((help_features & IPV6CALC_HELP_IP2LOCATION) != 0) { #ifdef SUPPORT_IP2LOCATION fprintf(stderr, "\n"); fprintf(stderr, " [--disable-ip2location ] : IP2Location support disabled\n"); fprintf(stderr, " [--db-ip2location-disable ] : IP2Location support disabled\n"); fprintf(stderr, " [--db-ip2location-dir ] : IP2Location database directory (default: %s)\n", ip2location_db_dir); #ifdef SUPPORT_IP2LOCATION_DYN fprintf(stderr, " [--db-ip2location-lib ] : IP2Location library file (default: %s)\n", ip2location_lib_file); #endif fprintf(stderr, " [--db-ip2location-only-type ]: IP2Location database only selected type (1-%d)\n", IP2LOCATION_DB_MAX); fprintf(stderr, " [--db-ip2location-allow-softlinks] : IP2Location database softlinks allowed\n"); fprintf(stderr, " by default they are ignored because it is hard to autodetect COMM/LITE/SAMPLE\n"); fprintf(stderr, " [--db-ip2location-lite-to-sample-autoswitch-max-delta-months ]:\n"); fprintf(stderr, " autoswitch from LITE to SAMPLE databases if possible and delta is not more than %d months (0=disabled)\n", ip2location_db_lite_to_sample_autoswitch_max_delta_months); fprintf(stderr, " [--db-ip2location-comm-to-lite-switch-min-delta-months ]:\n"); fprintf(stderr, " switch from COMM to LITE databases if possible and delta more than %d months (0=disabled)\n", ip2location_db_comm_to_lite_switch_min_delta_months); #endif }; if ((help_features & IPV6CALC_HELP_GEOIP) != 0) { #ifdef SUPPORT_GEOIP fprintf(stderr, "\n"); fprintf(stderr, " [--disable-geoip ] : GeoIP support disabled\n"); fprintf(stderr, " [--db-geoip-disable ] : GeoIP support disabled\n"); fprintf(stderr, " [--db-geoip-dir ] : GeoIP database directory (default: %s)\n", geoip_db_dir); #ifdef SUPPORT_GEOIP_DYN fprintf(stderr, " [--db-geoip-lib ] : GeoIP library file (default: %s)\n", geoip_lib_file); #endif #endif }; if ((help_features & IPV6CALC_HELP_DBIP) != 0) { #ifdef SUPPORT_DBIP fprintf(stderr, "\n"); fprintf(stderr, " [--disable-dbip ] : db-ip.com support disabled\n"); fprintf(stderr, " [--db-dbip-disable ] : db-ip.com support disabled\n"); fprintf(stderr, " [--db-dbip-dir ] : db-ip.com database directory (default: %s)\n", dbip_db_dir); fprintf(stderr, " [--db-dbip-only-type ] : db-ip.com database only selected type (1-%d)\n", DBIP_DB_MAX); fprintf(stderr, " [--db-dbip-comm-to-free-switch-min-delta-months ]:\n"); fprintf(stderr, " switch from COMM to FREE databases if possible and delta more than %d months (0=disabled)\n", dbip_db_comm_to_free_switch_min_delta_months); #endif }; if ((help_features & IPV6CALC_HELP_EXTERNAL) != 0) { #ifdef SUPPORT_EXTERNAL fprintf(stderr, "\n"); fprintf(stderr, " [--disable-external ] : External support disabled\n"); fprintf(stderr, " [--db-external-disable ] : External support disabled\n"); fprintf(stderr, " [--db-external-dir ] : External database directory (default: %s)\n", external_db_dir); #endif }; if ((help_features & IPV6CALC_HELP_BUILTIN) != 0) { #ifdef SUPPORT_BUILTIN fprintf(stderr, "\n"); fprintf(stderr, " [--disable-builtin ] : BuiltIn support disabled\n"); fprintf(stderr, " [--db-builtin-disable ] : BuiltIn support disabled\n"); #endif #if defined SUPPORT_EXTERNAL || defined SUPPORT_DBIP || defined SUPPORT_GEOIP || SUPPORT_IP2LOCATION fprintf(stderr, "\n"); fprintf(stderr, " [--db-priorization [:...]] : Database priorization order list (overwrites default)\n"); fprintf(stderr, " colon separated:"); int i; for (i = 0; i < MAXENTRIES_ARRAY(data_sources); i++) { fprintf(stderr, " %s", data_sources[i].shortname); }; fprintf(stderr, "\n"); #endif }; fprintf(stderr, "\n"); return; }; void printhelp_shortcut_options(const struct option longopts[], const s_ipv6calc_longopts_shortopts_map longopts_shortopts_map[]) { int i = 0; int j; char c; const char *info; fprintf(stderr, "\n"); fprintf(stderr, " Usage with shortcut options: [ ...] \n"); fprintf(stderr, " for more information and available format options use: -?|-h|--help\n"); fprintf(stderr, "\n"); while(longopts[i].name != NULL) { if (longopts[i].val >= CMD_shortcut_start && longopts[i].val <= CMD_shortcut_end) { c = '\0'; info = NULL; if (longopts_shortopts_map != NULL) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Search in longopts_shortopts_map for %08x", longopts[i].val); j = 0; while (longopts_shortopts_map[j].val > 0) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Check against longopts_shortopts_map entry %d:%08x", j, longopts_shortopts_map[j].val); if (longopts[i].val == longopts_shortopts_map[j].val) { c = longopts_shortopts_map[j].c; info = longopts_shortopts_map[j].info; break; }; j++; }; }; if (c != '\0') { fprintf(stderr, " -%c|--%s", c, longopts[i].name); } else { fprintf(stderr, " --%s", longopts[i].name); }; if (info != NULL) { fprintf(stderr, " (%s)", info); }; fprintf(stderr, "\n"); }; i++; }; fprintf(stderr, "\n"); return; }; /* print help for output type examples */ static void printhelp_output_base85(void) { fprintf(stderr, " Print a given IPv6 address in base85 format (RFC 1924), e.g.\n"); fprintf(stderr, " 1080:0:0:0:8:800:200c:417a -> 4)+k&C#VzJ4br>0wv%%Yp\n"); }; static void printhelp_output_bitstring(void) { fprintf(stderr, " Print a given IPv6 address as a bitstring label for use with DNS, e.g.\n"); fprintf(stderr, " 3ffe:ffff::1 -> \\[x3ffeffff000000000000000000000001/128].ip6.arpa.\n"); fprintf(stderr, " 3ffe:ffff::1/64 -> \\[x3ffeffff000000000000000000000001/64].ip6.arpa.\n"); fprintf(stderr, " --printsuffix 3ffe:ffff::1/64 -> \\[x0000000000000001/64]\n"); fprintf(stderr, " --printprefix 3ffe:ffff::1/64 -> \\[x3ffeffff00000000/64]\n"); }; static void printhelp_output_ipv6addr(void) { fprintf(stderr, " Print a given IPv6 address depending on format options:\n"); fprintf(stderr, " Uncompressed, e.g.\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1 -> 3ffe:ffff:100:f101:0:0:0:1\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1/64 -> 3ffe:ffff:100:f101:0:0:0:1/64\n"); fprintf(stderr, " Full uncompressed, e.g.\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1 -> 3ffe:ffff:0100:f101:0000:0000:0000:0001\n"); fprintf(stderr, " Compressed, e.g.\n"); fprintf(stderr, " 3ffe:ffff:0100:f101:0000:0000:0000:0001 -> 3ffe:ffff:100:f101::1\n"); }; static void printhelp_output_ipv6literal(void) { fprintf(stderr, " Print a given IPv6 address in literal format depending on format options:\n"); fprintf(stderr, " Uncompressed, e.g.\n"); fprintf(stderr, " 2001:db8::1 -> 2001-db8-0-0-0-0-0-1.ipv6-literal.net\n"); fprintf(stderr, " Full uncompressed, e.g.\n"); fprintf(stderr, " 2001:db8::1 -> 2001-0db8-0000-0000-0000-0000-0000-0001.ipv6-literal.net\n"); fprintf(stderr, " Compressed (default), e.g.\n"); fprintf(stderr, " 2001:db8::1 -> 2001-db8--1.ipv6-literal.net\n"); fprintf(stderr, " With Scope ID, e.g.\n"); fprintf(stderr, " fe80::1%%0 -> fe80--1s0.ipv6-literal.net\n"); }; static void printhelp_output_hex(void) { fprintf(stderr, " Print a given IPv4/v6 address in hex format depending on format options:\n"); fprintf(stderr, " without any format option, e.g.\n"); fprintf(stderr, " 0123:4567:89ab:cdef:0000:1111:2222:3333 -> 0123456789abcdef0000111122223333\n"); fprintf(stderr, " 1.2.3.4 -> 01020304\n"); }; static void printhelp_output_eui64(void) { fprintf(stderr, " Print a generated EUI-64 identifier, e.g.:\n"); fprintf(stderr, " 00:50:BF:06:B4:F5 -> 0250:bfff:fe06:b4f5\n"); }; static void printhelp_output_iid_token(void) { fprintf(stderr, " Print generated interface identifier and token, e.g.:\n"); fprintf(stderr, " -> 4462:bdea:8654:776d 486072ff7074945e\n"); }; static void printhelp_output_revnibble_int(void) { fprintf(stderr, " Print a given IPv6 address in dot separated reverse nibble format for use with DNS, e.g.\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1\n -> 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.1.f.0.0.1.0.0.0.4.0.e.f.f.3.ip6.int.\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1/64\n -> 1.0.1.f.0.0.1.0.0.0.4.0.e.f.f.3.ip6.int.\n"); }; static void printhelp_output_revnibble_arpa(void) { fprintf(stderr, " Print a given IPv6 address in dot separated reverse nibble format for use with DNS, e.g.\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1\n -> 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.1.f.0.0.1.0.0.0.4.0.e.f.f.3.ip6.arpa.\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1/64\n -> 1.0.1.f.0.0.1.0.0.0.4.0.e.f.f.3.ip6.arpa.\n"); }; static void printhelp_output_ifinet6void(void) { fprintf(stderr, " Print a given IPv6 address to same format shown in Linux /proc/net/if_inet6:\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1 -> 3ffeffff0100f1010000000000000001 00\n"); fprintf(stderr, " 3ffe:ffff:100:f101::1/64 -> 3ffeffff0100f1010000000000000001 00 40\n"); }; static void printhelp_output_ipv4addr(void) { fprintf(stderr, " Print an IPv4 address\n"); }; static void printhelp_output_revipv4(void) { fprintf(stderr, " Print an IPv4 address in reverse format for PTR/DNS\n"); fprintf(stderr, " 1.2.3.4 -> 4.3.2.1.in-addr.arpa\n"); }; static void printhelp_output_addrtype(void) { fprintf(stderr, " Print type of a given IPv4/IPv6 address:\n"); fprintf(stderr, " IPv4 address -> ipv4-addr.addrtype.ipv6calc\n"); fprintf(stderr, " IPv6 address -> ipv6-addr.addrtype.ipv6calc\n"); }; static void printhelp_output_ipv6addrtype(void) { fprintf(stderr, " Print type of a given IPv6 address:\n"); fprintf(stderr, " 3ffe::/16 -> 6bone-global.ipv6addrtype.ipv6calc\n"); fprintf(stderr, " 2002::/16 -> 6to4-global.ipv6addrtype.ipv6calc\n"); fprintf(stderr, " 2001::/16 -> productive-global.ipv6addrtype.ipv6calc\n"); fprintf(stderr, " fe80::/10 -> link-local.ipv6addrtype.ipv6calc\n"); fprintf(stderr, " fec0::/10 -> site-local.ipv6addrtype.ipv6calc\n"); fprintf(stderr, " ::ffff:0:0:0:0/96 -> mapped-ipv4.ipv6addrtype.ipv6calc\n"); fprintf(stderr, " ::0:0:0:0/96 -> compat-ipv4.ipv6addrtype.ipv6calc\n"); }; static void printhelp_output_ouitype(void) { fprintf(stderr, " Print OUI name of a given IPv6 address:\n"); fprintf(stderr, " IID local scope -> local-scoppe.ouitype.ipv6calc\n"); fprintf(stderr, " IID global scope -> vendorname.ouitype.ipv6calc\n"); }; static void printhelp_output_octal(void) { fprintf(stderr, " Print octal representation of a given IPv6 address:\n"); fprintf(stderr, " (useful for djbdns/tinydns)\n"); fprintf(stderr, " 3ffe:ffff::1 ->\n \\77\\376\\377\\377\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\1\n"); fprintf(stderr, " --printfulluncompressed 3ffe:ffff::1 ->\n \\077\\376\\377\\377\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\001\n"); }; void printhelp_output_dispatcher(const uint32_t outputtype) { int i, j; printversion(); fprintf(stderr, "\n"); switch (outputtype) { case FORMAT_base85: printhelp_output_base85(); break; case FORMAT_bitstring: printhelp_output_bitstring(); break; case FORMAT_ipv6addr: printhelp_output_ipv6addr(); break; case FORMAT_ipv6literal: printhelp_output_ipv6literal(); break; case FORMAT_eui64: printhelp_output_eui64(); break; case FORMAT_revnibbles_int: printhelp_output_revnibble_int(); break; case FORMAT_revnibbles_arpa: printhelp_output_revnibble_arpa(); break; case FORMAT_ifinet6: printhelp_output_ifinet6void(); break; case FORMAT_iid_token: printhelp_output_iid_token(); break; case FORMAT_ipv4addr: printhelp_output_ipv4addr(); break; case FORMAT_addrtype: printhelp_output_addrtype(); break; case FORMAT_ipv6addrtype: printhelp_output_ipv6addrtype(); break; case FORMAT_ouitype: printhelp_output_ouitype(); break; case FORMAT_revipv4: printhelp_output_revipv4(); break; case FORMAT_octal: printhelp_output_octal(); break; case FORMAT_hex: printhelp_output_hex(); break; default: fprintf(stderr, " Examples currently missing...!\n"); break; }; /* looking for outtype */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_outputformatoptionmap); i++) { if (outputtype == ipv6calc_outputformatoptionmap[i][0]) { if (ipv6calc_outputformatoptionmap[i][1] == 0) { fprintf(stderr, " No format options supported\n"); break; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Format value: %08x", (unsigned int) ipv6calc_outputformatoptionmap[i][1]); fprintf(stderr, "\n"); fprintf(stderr, " Available format options:\n"); /* run through format options */ for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_formatoptionstrings); j++) { if ((ipv6calc_outputformatoptionmap[i][1] & ipv6calc_formatoptionstrings[j].number) != 0) { fprintf(stderr, " %s: %s\n", ipv6calc_formatoptionstrings[j].token, ipv6calc_formatoptionstrings[j].explanation); }; }; break; }; }; fprintf(stderr, "\n"); }; /* help regarding action command */ /* in: embedded = 1 : do not show version and command */ void printhelp_action_dispatcher(const uint32_t action, const int embedded) { int i, j; char method_name[32]; if (embedded != 1) { printversion(); }; fprintf(stderr, "\n"); switch (action) { case ACTION_mac_to_eui64: fprintf(stderr, " help still missing - sorry.\n"); break; case ACTION_ipv4_to_6to4addr: fprintf(stderr, " Convert IPv4 to 6to4 prefix / extract IPv4 from 6to4 prefix\n"); fprintf(stderr, " ipv6calc -A conv6to4 192.0.2.1\n"); fprintf(stderr, " 2002:c000:201::\n"); fprintf(stderr, " ipv6calc -A conv6to4 2002:c000:201::\n"); fprintf(stderr, " 192.0.2.1\n"); break; case ACTION_ipv4_to_nat64: fprintf(stderr, " Convert IPv4 to NAT64 address / extract IPv4 from NAT64 address\n"); fprintf(stderr, " ipv6calc -A convnat64 192.0.2.1\n"); fprintf(stderr, " 64:ff9b::c000:201\n"); fprintf(stderr, " ipv6calc -A convnat64 64:ff9b::c000:201\n"); fprintf(stderr, " 192.0.2.1\n"); break; case ACTION_anonymize: if (embedded != 1) { fprintf(stderr, " Anonymize given address according to preset or custom values, e.g.\n"); fprintf(stderr, " ipv6calc -A anonymize 2001:db8:2280:6901:224:21ff:fe01:2345 --anonymize-preset zeroize-standard\n"); fprintf(stderr, " 2001:db8:2280:6900:224:21ff:fe00:0\n"); fprintf(stderr, " ipv6calc -A anonymize 2001:db8:2280:6901:224:21ff:fe01:2345 --anonymize-preset anonymize-standard\n"); fprintf(stderr, " 2001:db8:2280:6909:a929:4291:4022:4217\n"); fprintf(stderr, "\n"); }; fprintf(stderr, " Shortcut for anonymization presets:\n"); fprintf(stderr, " --anonymize-standard (default)\n"); fprintf(stderr, " --anonymize-careful\n"); fprintf(stderr, " --anonymize-paranoid\n"); fprintf(stderr, "\n"); fprintf(stderr, " Supported methods [--anonymize-method METHOD]:\n"); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_anon_methods); i++) { fprintf(stderr, " %-10s: %s\n", ipv6calc_anon_methods[i].name, ipv6calc_anon_methods[i].description); }; fprintf(stderr, "\n"); fprintf(stderr, " Available presets (shortcut names) [--anonymize-preset|ap PRESET-NAME]:\n"); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_anon_set_list); i++) { snprintf(method_name, sizeof(method_name), "%s", "unknown"); // default for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_anon_methods); j++) { if (ipv6calc_anon_methods[j].method == ipv6calc_anon_set_list[i].method) { snprintf(method_name, sizeof(method_name), "%s", ipv6calc_anon_methods[j].name); break; }; }; fprintf(stderr, " %-20s (%2s): mask-ipv6=%3d mask-ipv4=%2d mask-eui64=%2d mask-mac=%2d mask-autoadjust=%-3s method=%s\n", ipv6calc_anon_set_list[i].name, ipv6calc_anon_set_list[i].name_short, ipv6calc_anon_set_list[i].mask_ipv6, ipv6calc_anon_set_list[i].mask_ipv4, ipv6calc_anon_set_list[i].mask_eui64, ipv6calc_anon_set_list[i].mask_mac, (ipv6calc_anon_set_list[i].mask_autoadjust == 1) ? "yes" : "no", method_name); }; fprintf(stderr, "\n"); fprintf(stderr, " Custom control:\n"); fprintf(stderr, " --mask-ipv4 : mask IPv4 address [0-32] (even if occurs in IPv6 address)\n"); fprintf(stderr, " --mask-ipv6 : mask IPv6 prefix [0-64] (only applied to related address types)\n"); fprintf(stderr, " --mask-eui64 : mask EUI-64 address or IPv6 interface identifier [0-64]\n"); fprintf(stderr, " --mask-mac : mask MAC address [0-48]\n"); fprintf(stderr, " --mask-autoadjust yes|no: autoadjust mask to keep type/vendor information regardless of less given mask\n"); break; case ACTION_iid_token_to_privacy: fprintf(stderr, " help still missing - sorry.\n"); break; case ACTION_prefix_mac_to_ipv6: fprintf(stderr, " help still missing - sorry.\n"); break; case ACTION_6rd_local_prefix: fprintf(stderr, " help still missing - sorry.\n"); break; case ACTION_filter: fprintf(stderr, " Filter given addresses from stdin by filter expression, e.g.\n"); fprintf(stderr, " echo '2001:db8::1' | ipv6calc [-A filter] -E iid-local\n"); fprintf(stderr, " echo '2001:db8::1' | ipv6calc [-A filter] -E iid-local,global-unicast\n"); fprintf(stderr, " echo '2001:db8::1' | ipv6calc [-A filter] -E ^iid-random\n"); fprintf(stderr, "\n"); fprintf(stderr, " (note: since version 0.95.0 '-A filter' is autoselected if option '-E ' is given)\n"); fprintf(stderr, "\n"); fprintf(stderr, " negation of filter expression with prefix: ^\n"); fprintf(stderr, "\n"); fprintf(stderr, " IPv6 address filter tokens:\n"); fprintf(stderr, " ipv6 "); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { fprintf(stderr, " %s", ipv6calc_ipv6addrtypestrings[i].token); }; fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, " IPv4 address filter tokens:\n"); fprintf(stderr, " ipv4 "); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv4addrtypestrings); i++ ) { fprintf(stderr, " %s", ipv6calc_ipv4addrtypestrings[i].token); }; fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, " IPv4/v6 address filter tokens based on databases:\n"); fprintf(stderr, " [^][ipv4.|ipv6.]db.cc=|unknown (Country Code [2 chars])\n"); fprintf(stderr, " [^][ipv4.|ipv6.]db.asn=|unknown (Autonomous System Number)\n"); fprintf(stderr, " [^][ipv4.|ipv6.]db.reg=\n"); fprintf(stderr, " Registry tokens:"); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_registries); i++ ) { fprintf(stderr, " %s", ipv6calc_registries[i].token); }; fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, " IPv4/v6 address filter tokens based on address/mask:\n"); fprintf(stderr, " [^]ipv4.addr=[]\n"); fprintf(stderr, " [^]ipv6.addr=[]\n"); fprintf(stderr, "\n"); fprintf(stderr, " IPv4/v6 address filter tokens based on address ranges (<=|<|>|>=):\n"); fprintf(stderr, " [^]ipv4.addr(<=|<|>|>=)\n"); fprintf(stderr, " [^]ipv6.addr(<=|<|>|>=)\n"); fprintf(stderr, "\n"); fprintf(stderr, " as alternative in case <|> creating problems also supported: =(le|lt|gt|ge)=:\n"); fprintf(stderr, " [^]ipv4.addr=(le|lt|gt|ge)=\n"); fprintf(stderr, " [^]ipv6.addr=(le|lt|gt|ge)=\n"); fprintf(stderr, "\n"); fprintf(stderr, " EUI-48/MAC address filter tokens:\n"); fprintf(stderr, " "); fprintf(stderr, " IMPLEMENTATION MISSING"); fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, " EUI-64 address filter tokens:\n"); fprintf(stderr, " "); fprintf(stderr, " IMPLEMENTATION MISSING"); fprintf(stderr, "\n"); break; case ACTION_test: fprintf(stderr, " Test given address(es) against supported tests:\n"); fprintf(stderr, " --test_prefix : inside a prefix\n"); fprintf(stderr, " --test_gt|--test_ge
: greater(/equal) than an address\n"); fprintf(stderr, " --test_lt|--test_le
: less(/equal) than an address\n"); fprintf(stderr, "\n"); fprintf(stderr, " Test given address(es) from stdin, e.g.\n"); fprintf(stderr, " echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db8::/32\n"); fprintf(stderr, " echo '2001:db8::1' | ipv6calc [-A test] --test_prefix 2001:db9::/32\n"); fprintf(stderr, "\n"); fprintf(stderr, " Single address test, return code: 0=inside/matching 1=outside/not-matching 2=uncomparable\n"); fprintf(stderr, " ipv6calc [-A test] --test_prefix 2001:db8::/32 2001:db8::1\n"); fprintf(stderr, " ipv6calc [-A test] --test_prefix 2001:db9::/32 2001:db8::1\n"); fprintf(stderr, " ipv6calc [-A test] --test_ge 2001:db8:: --test_le 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1\n"); fprintf(stderr, " ipv6calc [-A test] --test_ge 2001:db9:: --test_le 2001:db9:ffff:ffff:ffff:ffff:ffff:ffff 2001:db8::1\n"); fprintf(stderr, " ipv6calc [-A test] --test_ge 2001:db9:: --test_lt 2001:dba:: 2001:db8::1\n"); fprintf(stderr, " ipv6calc [-A test] --test_ge 2001:db8:: --test_lt 2001:db9:: 2001:db8::1\n"); fprintf(stderr, "\n"); break; }; }; /*************************** * verbose feature information * *************************/ /* display features in verbose mode */ void ipv6calc_print_features_verbose(const int level_verbose) { char string[NI_MAXHOST] = ""; libipv6calc_db_wrapper_capabilities(string, sizeof(string)); fprintf(stderr, "Capabilities: %s\n\n", string); fprintf(stderr, "Internal main library version: %s API: %s (%s)\n" , libipv6calc_lib_version_string() , libipv6calc_api_version_string() #ifdef SHARED_LIBRARY , "shared" #else // SHARED_LIBRARY , "built-in" #endif // SHARED_LIBRARY ); fprintf(stderr, "Internal database library version: %s API: %s (%s)\n\n" , libipv6calc_db_lib_version_string() , libipv6calc_db_api_version_string() #ifdef SHARED_LIBRARY , "shared" #else // SHARED_LIBRARY , "built-in" #endif // SHARED_LIBRARY ); #if defined ENABLE_BUNDLED_MD5 || defined ENABLE_BUNDLED_GETOPT fprintf(stderr, "Bundled with:"); #ifdef ENABLE_BUNDLED_MD5 fprintf(stderr, " MD5"); #endif #ifdef ENABLE_BUNDLED_GETOPT fprintf(stderr, " GETOPT"); #endif fprintf(stderr, "\n\n"); #endif fprintf(stderr, "Compiled: %s %s\n\n", __DATE__, __TIME__); #ifdef SUPPORT_GEOIP #ifdef GEOIP_INCLUDE_VERSION fprintf(stderr, "GeoIP support enabled, compiled with include file version: %s\n", GEOIP_INCLUDE_VERSION); #endif #ifndef SUPPORT_GEOIP_DYN #ifdef SUPPORT_GEOIP_V6 #if defined (SUPPORT_GEOIP_COUNTRY_CODE_BY_ADDR_V6) && defined (SUPPORT_GEOIP_COUNTRY_NAME_BY_ADDR_V6) fprintf(stderr, "GeoIP support enabled, compiled with IPv4 & IPv6 support\n"); #else fprintf(stderr, "GeoIP support enabled, compiled with IPv4 & IPv6 support (in compatibility mode)\n"); #endif #else // SUPPORT_GEOIP_V6 fprintf(stderr, "GeoIP support enabled, compiled with IPv4 support only\n"); #endif // SUPPORT_GEOIP_V6 #ifdef SUPPORT_GEOIP_LIB_VERSION fprintf(stderr, "GeoIP dynamic library version (on this system): %s\n", libipv6calc_db_wrapper_GeoIP_lib_version()); #else fprintf(stderr, "GeoIP dynamic library version (on this system): compiled without detection\n"); #endif #else // SUPPORT_GEOIP_DYN #ifdef SUPPORT_GEOIP_V6 fprintf(stderr, "GeoIP support by dynamic library load, compiled with IPv4 & IPv6 support\n"); #else // SUPPORT_GEOIP_V6 fprintf(stderr, "GeoIP support by dynamic library load, compiled with IPv4 support only\n"); #endif // SUPPORT_GEOIP_V6 fprintf(stderr, "GeoIP configured dynamic library file and detected version: %s %s\n", geoip_lib_file, libipv6calc_db_wrapper_GeoIP_lib_version()); #endif // SUPPORT_GEOIP_DYN //TODO: list of GeoIP files #ifdef SUPPORT_GEOIP_V6 //TODO: list of GeoIP files #endif libipv6calc_db_wrapper_GeoIP_wrapper_info(string, sizeof(string)); fprintf(stderr, "%s\n\n", string); #else fprintf(stderr, "GeoIP support not compiled-in\n\n"); #endif #ifdef SUPPORT_IP2LOCATION #ifdef IP2LOCATION_INCLUDE_VERSION fprintf(stderr, "IP2Location support enabled, compiled with include file version: %s\n", IP2LOCATION_INCLUDE_VERSION); #endif #ifdef SUPPORT_IP2LOCATION_API_VERSION_STRING fprintf(stderr, "IP2Location support enabled, compiled with API version: %s, dynamically linked with version: %s\n", xmakestr(API_VERSION), libipv6calc_db_wrapper_IP2Location_lib_version()); #else // SUPPORT_IP2LOCATION_API_VERSION_STRING fprintf(stderr, "IP2Location support enabled, compiled with API version: %s (retrieving linked version not supported - older version)\n", xmakestr(API_VERSION)); #endif // SUPPORT_IP2LOCATION_API_VERSION_STRING #ifndef SUPPORT_IP2LOCATION_DYN #else fprintf(stderr, "IP2Location support by dynamic library load\n"); fprintf(stderr, "IP2Location configured dynamic library file and detected version: %s %s\n", ip2location_lib_file, libipv6calc_db_wrapper_IP2Location_lib_version()); #endif // TODO: show base directory /* if (file_ip2location_ipv4 != NULL && strlen(file_ip2location_ipv4) > 0) { fprintf(stderr, "IP2Location IPv4 default file: %s\n", file_ip2location_ipv4); } else { fprintf(stderr, "IP2Location IPv4 default file: not configured\n"); }; if (file_ip2location_ipv6 != NULL && strlen(file_ip2location_ipv6) > 0) { fprintf(stderr, "IP2Location IPv6 default file: %s\n", file_ip2location_ipv6); } else { fprintf(stderr, "IP2Location IPv6 default file: not configured\n"); }; */ libipv6calc_db_wrapper_IP2Location_wrapper_info(string, sizeof(string)); fprintf(stderr, "%s\n\n", string); #else fprintf(stderr, "IP2Location support not compiled-in\n\n"); #endif #ifdef SUPPORT_BUILTIN libipv6calc_db_wrapper_BuiltIn_wrapper_info(string, sizeof(string)); fprintf(stderr, "%s\n\n", string); #else fprintf(stderr, "BuiltIn support not compiled-in\n\n"); #endif libipv6calc_db_wrapper_print_db_info(level_verbose, ""); }; ipv6calc-1.0.0/lib/ipv6calchelp.h000066400000000000000000000033621312366535500165330ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calchelp.h * Version : $Id: 5f356e1014c8d64fd13b4f98b6d65c8224ba7b39 $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * Header file for ipv6calchelp.c */ #include "ipv6calc_inttypes.h" #include "ipv6calcoptions.h" #ifndef _ipv6calchelp_h #define _ipv6calchelp_h 1 #define IPV6CALC_HELP_GEOIP 0x0010 #define IPV6CALC_HELP_IP2LOCATION 0x0020 #define IPV6CALC_HELP_DBIP 0x0040 #define IPV6CALC_HELP_EXTERNAL 0x0080 #define IPV6CALC_HELP_BUILTIN 0x0100 #define IPV6CALC_HELP_ALL 0xffff #define IPV6CALC_HELP_BASIC 0x0000 #define IPV6CALC_HELP_QUIET 0x0001 #endif /* defined in each main program */ extern void printhelp_info(void); extern void printhelp_copyright(void); extern void printhelp_version(void); /* defined in ipv6calchelp.c */ /* extern void printhelp_print(void); */ /* extern void printhelp_mask(void); */ /* extern void printhelp_case(void); */ /* extern void printhelp_printstartend(void); */ extern void printhelp_doublecommands(void); extern void printhelp_missinginputdata(void); extern void printhelp_inputtypes(const uint32_t formatoptions); extern void printhelp_outputtypes(const uint32_t inputtype, const uint32_t formatoptions); extern void printhelp_actiontypes(const uint32_t formatoptions, const struct option longopts[]); extern void printhelp_common(const uint32_t help_features); extern void printhelp_shortcut_options(const struct option longopts[], const s_ipv6calc_longopts_shortopts_map longopts_shortopts_map[]); extern void printhelp_output_dispatcher(const uint32_t outputtype); extern void printhelp_action_dispatcher(const uint32_t action, const int embedded); extern void ipv6calc_print_features_verbose(const int level_vebose); ipv6calc-1.0.0/lib/ipv6calcoptions.c000066400000000000000000000405141312366535500172710ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calcoptions.c * Version : $Id: b141178519e764a5dbca4bbc11b69a75a201ea2b $ * Copyright : 2013-2016 by Peter Bieringer * * Information: * supporting common options */ #include #include #include #include "config.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "ipv6calcoptions.h" #include "ipv6calcoptions_common.h" #include "databases/lib/libipv6calc_db_wrapper.h" extern long int ipv6calc_debug; // ipv6calc_debug usage ok int ipv6calc_quiet = 0; int ipv6calc_verbose = 0; /* parse value */ static long int parse_dec_hex_val(const char *string) { long int value; if ((strlen(string) > 2) && ((strncmp(string, "0x", 2) == 0) || (strncmp(string, "0X", 2)) == 0)) { // convert hex if (sscanf(string + 2, "%lx", &value) == 0) { ipv6calc_debug = 0; // ipv6calc_debug usage ok ERRORPRINT_WA("can't parse value for debug option: %s", string); }; } else { // convert dec if (sscanf(string, "%ld", &value) == 0) { ipv6calc_debug = 0; // ipv6calc_debug usage ok ERRORPRINT_WA("can't parse value for debug option: %s", string); }; }; return(value); }; /* bootstrap debug option from environment */ void ipv6calc_debug_from_env(void) { char *ipv6calc_debug_env; long int ipv6calc_debug_val; ipv6calc_debug_env = getenv("IPV6CALC_DEBUG"); if (ipv6calc_debug_env != NULL) { ERRORPRINT_WA("IPV6CALC_DEBUG found in environment: %s", ipv6calc_debug_env); ipv6calc_debug_val = parse_dec_hex_val(ipv6calc_debug_env); if (ipv6calc_debug_val != 0) { ipv6calc_debug = ipv6calc_debug_val; // ipv6calc_debug usage ok ERRORPRINT_WA("IPV6CALC_DEBUG proper parsed: %08lx", ipv6calc_debug); // ipv6calc_debug usage ok }; }; }; /* * add given options * hard exit code in case of troubles: 2 */ void ipv6calc_options_add(char *shortopts_p, const int shortopts_maxlen, struct option longopts[], int *maxentries_p, const char *shortopts_custom, const struct option longopts_custom[], const int longopts_custom_entries) { int i, l; unsigned int j, k; char tempstring[NI_MAXHOST]; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Called: longopts_custom_entries=%d shortopts=%s", longopts_custom_entries, shortopts_p); if (*maxentries_p + longopts_custom_entries >= (IPV6CALC_MAXLONGOPTIONS - 1)) { fprintf(stderr, "FATAL error, can't add options - FIX CODE by increasing IPV6CALC_MAXLONGOPTIONS\n"); exit(2); }; for (i = 0; i < longopts_custom_entries; i++) { /* check for duplicates */ for (l = 0; l < *maxentries_p; l++) { if (strcmp(longopts[l].name, longopts_custom[i].name) == 0) { fprintf(stderr, "FATAL error, can't add options - DUPLICATE NAME FOUND: l=%d/%s i=%d/%s\n", l, longopts[l].name, i, longopts_custom[i].name); exit(2); }; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Add long option on position %d/%d: %s", *maxentries_p, i, longopts_custom[i].name); longopts[*maxentries_p] = longopts_custom[i]; (*maxentries_p)++; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Add short options: %s", shortopts_custom); /* check for duplicates */ if (strlen(shortopts_p) > 0) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Already given short options: %s", shortopts_p); for (j = 0; j < strlen(shortopts_p); j++) { for (k = 0; k < strlen(shortopts_custom); k++) { if (shortopts_custom[k] == ':') { continue; }; if (shortopts_p[j] == shortopts_custom[k]) { fprintf(stderr, "FATAL error, can't add short options - DUPLICATE CHAR FOUND: %c\n", shortopts_p[j]); exit(2); }; }; }; } else { DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Already given short options: (empty)"); }; snprintf(tempstring, sizeof(tempstring), "%s%s", shortopts_p, shortopts_custom); snprintf(shortopts_p, shortopts_maxlen, "%s", tempstring); DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Resulting short options: %s", shortopts_p); // end of options longopts[*maxentries_p].name = NULL; longopts[*maxentries_p].has_arg = 0; longopts[*maxentries_p].flag = NULL; longopts[*maxentries_p].val = 0; /* TODO: implement strlen checks */ DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Return"); return; }; /* * add given options "common basic" */ void ipv6calc_options_add_common_basic(char *shortopts_p, const int shortopts_maxlen, struct option longopts[], int *maxentries_p) { DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Called"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_common, ipv6calc_longopts_common, MAXENTRIES_ARRAY(ipv6calc_longopts_common)); #ifdef SUPPORT_IP2LOCATION DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "SUPPORT_IP2LOCATION"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_ip2location, ipv6calc_longopts_ip2location, MAXENTRIES_ARRAY(ipv6calc_longopts_ip2location)); #endif #ifdef SUPPORT_GEOIP DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "SUPPORT_GEOIP"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_geoip, ipv6calc_longopts_geoip, MAXENTRIES_ARRAY(ipv6calc_longopts_geoip)); #endif #ifdef SUPPORT_DBIP DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "SUPPORT_DBIP"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_dbip, ipv6calc_longopts_dbip, MAXENTRIES_ARRAY(ipv6calc_longopts_dbip)); #endif #ifdef SUPPORT_EXTERNAL DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "SUPPORT_EXTERNAL"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_external, ipv6calc_longopts_external, MAXENTRIES_ARRAY(ipv6calc_longopts_external)); #endif #ifdef SUPPORT_BUILTIN DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "SUPPORT_BUILTIN"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_builtin, ipv6calc_longopts_builtin, MAXENTRIES_ARRAY(ipv6calc_longopts_builtin)); #endif #if defined SUPPORT_EXTERNAL || defined SUPPORT_DBIP || defined SUPPORT_GEOIP || SUPPORT_IP2LOCATION DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "DB_COMMON"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_db_common, ipv6calc_longopts_db_common, MAXENTRIES_ARRAY(ipv6calc_longopts_db_common)); #endif DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Finished"); }; /* * add given options "common anon" */ void ipv6calc_options_add_common_anon(char *shortopts_p, const int shortopts_maxlen, struct option longopts[], int *maxentries_p) { DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Called"); ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_common_anon, ipv6calc_longopts_common_anon, MAXENTRIES_ARRAY(ipv6calc_longopts_common_anon)); DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Finished"); }; /* * call option handler "common basic" * return: 0: option found */ int ipv6calcoptions_common_basic(const int opt, const char *optarg, const struct option longopts[]) { int result = -1; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Called opt=0x%08x", opt); /* general options */ switch(opt) { case 'd': DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Found debug option with value: %s", optarg); ipv6calc_debug = parse_dec_hex_val(optarg); ERRORPRINT_WA("given debug value: %lx", ipv6calc_debug); result = 0; break; case 'q': DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Found quiet option"); ipv6calc_quiet = 1; result = 0; break; case 'V': DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Found verbose option"); ipv6calc_verbose++; ipv6calc_quiet = 0; result = 0; break; default: /* jump to other parsers */ DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Call sub-parser for opt=0x%08x", opt); result = libipv6calc_db_wrapper_options(opt, optarg, longopts); }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Return with result: %d", result); return(result); }; /* * call option handler "common anon" * return: 0: option found */ int ipv6calcoptions_common_anon(const int opt, const char *optarg, const struct option longopts[], s_ipv6calc_anon_set *ipv6calc_anon_set_p) { int result = -1, i; int mask_ipv4; int mask_ipv6; int mask_eui64; int mask_mac; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Called opt=0x%08x", opt); if (sizeof (*longopts) == 0) { }; // make compiler happy (avoid unused "...") /* general options */ switch(opt) { case CMD_ANON_MASK_AUTOADJUST: if (strcmp(optarg, "yes") == 0) { i = 1; } else if (strcmp(optarg, "no") == 0) { i = 0; } else { fprintf(stderr, " unsupported value for option 'mask-autoadjust', only yes|no is supported\n"); exit(EXIT_FAILURE); }; if (ipv6calc_anon_set_p->mask_autoadjust != i) { ipv6calc_anon_set_p->mask_autoadjust = i; snprintf(ipv6calc_anon_set_p->name, sizeof(ipv6calc_anon_set_p->name), "%s", "custom"); }; result = 0; break; case CMD_ANON_MASK_IID: case CMD_ANON_MASK_EUI64: if (opt == CMD_ANON_MASK_IID) { fprintf(stderr, " option 'mask-iid' is deprecated, please use 'mask-eui64'\n"); }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Found option: mask-eui=%s", optarg); mask_eui64 = atoi(optarg); if (mask_eui64 < 0 || mask_eui64 > 64) { fprintf(stderr, " value for option 'mask-eui64' out-of-range [0-64]\n"); exit(EXIT_FAILURE); }; if (ipv6calc_anon_set_p->mask_eui64 != mask_eui64) { ipv6calc_anon_set_p->mask_eui64 = mask_eui64; snprintf(ipv6calc_anon_set_p->name, sizeof(ipv6calc_anon_set_p->name), "%s", "custom"); }; result = 0; break; case CMD_ANON_MASK_IPV4: DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Found option: mask-ipv4=%s", optarg); mask_ipv4 = atoi(optarg); if (mask_ipv4 < 0 || mask_ipv4 > 32) { fprintf(stderr, " value for option 'mask-ipv4' out-of-range [0-32]\n"); exit(EXIT_FAILURE); }; if (ipv6calc_anon_set_p->mask_ipv4 != mask_ipv4) { ipv6calc_anon_set_p->mask_ipv4 = mask_ipv4; snprintf(ipv6calc_anon_set_p->name, sizeof(ipv6calc_anon_set_p->name), "%s", "custom"); }; result = 0; break; case CMD_ANON_MASK_IPV6: DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Found option: mask-ipv6=%s", optarg); mask_ipv6 = atoi(optarg); if (mask_ipv6 < 0 || mask_ipv6 > 64) { fprintf(stderr, " value for option 'mask-ipv6' out-of-range [0-64]\n"); exit(EXIT_FAILURE); }; if (ipv6calc_anon_set_p->mask_ipv6 != mask_ipv6) { ipv6calc_anon_set_p->mask_ipv6 = mask_ipv6; snprintf(ipv6calc_anon_set_p->name, sizeof(ipv6calc_anon_set_p->name), "%s", "custom"); }; result = 0; break; case CMD_ANON_MASK_MAC: mask_mac = atoi(optarg); if (mask_mac < 0 || mask_mac > 48) { fprintf(stderr, " value for option 'mask-mac' out-of-range [0-48]\n"); exit(EXIT_FAILURE); }; if (ipv6calc_anon_set_p->mask_mac != mask_mac) { ipv6calc_anon_set_p->mask_mac = mask_mac; snprintf(ipv6calc_anon_set_p->name, sizeof(ipv6calc_anon_set_p->name), "%s", "custom"); }; result = 0; break; case CMD_ANON_PRESET_STANDARD: result = libipv6calc_anon_set_by_name(ipv6calc_anon_set_p, "as"); if (result != 0) { fprintf(stderr, "ipv6calc anonymization preset not found: anonymize-standard\n"); exit(EXIT_FAILURE); }; break; case CMD_ANON_PRESET_CAREFUL: result = libipv6calc_anon_set_by_name(ipv6calc_anon_set_p, "ac"); if (result != 0) { fprintf(stderr, "ipv6calc anonymization preset not found: anonymize-careful\n"); exit(EXIT_FAILURE); }; result = 0; break; case CMD_ANON_PRESET_PARANOID: result = libipv6calc_anon_set_by_name(ipv6calc_anon_set_p, "ap"); if (result != 0) { fprintf(stderr, "ipv6calc anonymization preset not found: anonymize-paranoid\n"); exit(EXIT_FAILURE); }; result = 0; break; case CMD_ANON_PRESET_OPTION: result = libipv6calc_anon_set_by_name(ipv6calc_anon_set_p, optarg); if (result != 0) { fprintf(stderr, "ipv6calc anonymization preset not found: %s\n", optarg); exit(EXIT_FAILURE); }; result = 0; break; case CMD_ANON_METHOD_OPTION: for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_anon_methods); i++) { if (strcmp(ipv6calc_anon_methods[i].name, optarg) == 0) { ipv6calc_anon_set_p->method = ipv6calc_anon_methods[i].method; snprintf(ipv6calc_anon_set_p->name, sizeof(ipv6calc_anon_set_p->name), "%s", "custom"); break; }; }; if (i == MAXENTRIES_ARRAY(ipv6calc_anon_methods)) { fprintf(stderr, "anonymization method not supported: %s\n", optarg); exit(EXIT_FAILURE); }; result = 0; break; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Return with result: %d", result); return(result); }; /* get option name for an option * in : opt * ret: char* to string */ const char *ipv6calcoption_name(const int opt, const struct option longopts[]) { int i = 0; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Called opt=%d", opt); while (longopts[i].name != NULL) { if (opt == longopts[i].val) { return(longopts[i].name); }; i++; }; return("UNKNOWN"); }; /* get common options from environment */ void ipv6calc_common_options_from_env(const struct option longopts[], s_ipv6calc_anon_set *ipv6calc_anon_set_p) { int i, result; unsigned int s; char tempstring[NI_MAXHOST]; char *environment_value; i = 0; while(longopts[i].name != NULL) { // convert long option name to environment name snprintf(tempstring, sizeof(tempstring), "IPV6CALC_%s", longopts[i].name); for (s = 0; s < strlen(tempstring); s++) { switch(tempstring[s]) { case '-': tempstring[s] = '_'; break; default: tempstring[s] = toupper(tempstring[s]); break; }; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "Long option: %s/%d/%08x env=%s", longopts[i].name, longopts[i].has_arg, longopts[i].val, tempstring); environment_value = getenv(tempstring); if (environment_value != NULL) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "found in environment: %s=%s (%08x)", tempstring, environment_value, longopts[i].val); if (longopts[i].has_arg == 0) { if ( (strcasecmp(environment_value, "no") == 0) || (strcasecmp(environment_value, "off") == 0) || (strcasecmp(environment_value, "0") == 0) ) { goto NEXT_in_environment; // skip }; if ( (strcasecmp(environment_value, "yes") != 0) && (strcasecmp(environment_value, "on") != 0) && (strcasecmp(environment_value, "1") != 0) ) { fprintf(stderr, "value for environment can only be yes|on|1 or no|off|0: %s=%s\n", tempstring, environment_value); exit(EXIT_FAILURE); }; }; result = ipv6calcoptions_common_basic(longopts[i].val, environment_value, longopts); if (result == 0) { // found goto NEXT_in_environment; }; if (ipv6calc_anon_set_p != NULL) { result = ipv6calcoptions_common_anon(longopts[i].val, environment_value, longopts, ipv6calc_anon_set_p); if (result == 0) { // found goto NEXT_in_environment; }; }; }; NEXT_in_environment: i++; }; }; /* * set a particular (common) option by name/value * in : longopts, name, value, ipv6calc_anon_set_p * out: 0: found/set <>0: not found */ int ipv6calc_set_option(const struct option longopts[], const char *name, const char *value, s_ipv6calc_anon_set *ipv6calc_anon_set_p) { int i, result = -1; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "called with option: %s=%s", name, value); i = 0; while(longopts[i].name != NULL) { DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "check option: %s/%d/%08x", longopts[i].name, longopts[i].has_arg, longopts[i].val); if (strcmp(name, longopts[i].name) != 0) { // no match goto NEXT_option; }; DEBUGPRINT_WA(DEBUG_ipv6calcoptions, "found option: %s=%s (%08x)", longopts[i].name, value, longopts[i].val); if ((longopts[i].has_arg == 0) && (value != NULL)) { // check value of toggle if ( (strcasecmp(value, "no") == 0) || (strcasecmp(value, "off") == 0) || (strcasecmp(value, "0") == 0) ) { // skip break; }; if ( (strcasecmp(value, "yes") != 0) && (strcasecmp(value, "on") != 0) && (strcasecmp(value, "1") != 0) ) { fprintf(stderr, "value for option can only be yes|on|1 or no|off|0: %s=%s\n", longopts[i].name, value); exit(EXIT_FAILURE); }; }; result = ipv6calcoptions_common_basic(longopts[i].val, value, longopts); if (result == 0) { // found break; }; if (ipv6calc_anon_set_p != NULL) { result = ipv6calcoptions_common_anon(longopts[i].val, value, longopts, ipv6calc_anon_set_p); if (result == 0) { // found break; }; }; NEXT_option: i++; }; return(result); }; ipv6calc-1.0.0/lib/ipv6calcoptions.h000066400000000000000000000034211312366535500172720ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calcoptions.h * Version : $Id: 87f1ebcdec53e69bbfe1d4c921231fe415013a61 $ * Copyright : 2002-2015 by Peter Bieringer * * Information: * Header file containing options */ #include #include #include "ipv6calctypes.h" #include "ipv6calccommands.h" #ifndef _ipv6calcoptions_h_ #define _ipv6calcoptions_h_ #define IPV6CALC_MAXLONGOPTIONS 128 /* map between longopts and shortopts */ typedef struct { const char c; const int val; const char *info; } s_ipv6calc_longopts_shortopts_map; #endif extern int ipv6calc_quiet; extern void ipv6calc_debug_from_env(void); extern void ipv6calc_common_options_from_env(const struct option longopts[], s_ipv6calc_anon_set *ipv6calc_anon_set_p); extern int ipv6calc_set_option(const struct option longopts[], const char *name, const char *value, s_ipv6calc_anon_set *ipv6calc_anon_set_p); extern const char *ipv6calcoption_name(const int opt, const struct option longopts_p[]); extern int ipv6calcoptions_common_basic(const int opt, const char *optarg, const struct option longopts[]); extern int ipv6calcoptions_common_anon(const int opt, const char *optarg, const struct option longopts[], s_ipv6calc_anon_set *ipv6calc_anon_set_p); extern void ipv6calc_options_add(char *shortopts_p, const int shortopts_maxlen, struct option longopts[], int *maxentries_p, const char *shortopts_custom, const struct option longopts_custom[], const int longopts_custom_entries); extern void ipv6calc_options_add_common_anon(char *shortopts_p, const int shortopts_maxlen, struct option longopts[], int *maxentries_p); extern void ipv6calc_options_add_common_basic(char *shortopts_p, const int shortopts_maxlen, struct option longopts[], int *maxentries_p); ipv6calc-1.0.0/lib/ipv6calcoptions_common.h000066400000000000000000000122351312366535500206450ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calcoptions.h * Version : $Id: 805942e2702ccf9b1c08624644724b5839de4179 $ * Copyright : 2013-2017 by Peter Bieringer * * Information: * Header file containing options */ #include #include /* Options */ /* define short options * d = debug value */ /* define common short options */ static char *ipv6calc_shortopts_common = "d:qV"; /* define common long options */ static struct option ipv6calc_longopts_common[] = { {"debug" , 1, NULL, (int) 'd' }, {"quiet" , 0, NULL, (int) 'q' }, {"verbose", 0, NULL, (int) 'V' }, }; #ifdef SUPPORT_IP2LOCATION static char *ipv6calc_shortopts_ip2location = "L"; static struct option ipv6calc_longopts_ip2location[] = { /* database options (old) */ {"db-ip2location-ipv4" , 1, NULL, DB_ip2location_ipv4 }, {"db-ip2location-ipv6" , 1, NULL, DB_ip2location_ipv6 }, {"db-ip2location-default" , 0, NULL, (int) 'L' }, {"db-ip2location-ipv4-default" , 0, NULL, DB_geoip_ipv4_default }, {"db-ip2location-ipv6-default" , 0, NULL, DB_geoip_ipv6_default }, /* database options (new) */ {"disable-ip2location" , 0, NULL, DB_ip2location_disable }, {"db-ip2location-disable" , 0, NULL, DB_ip2location_disable }, {"db-ip2location-dir" , 1, NULL, DB_ip2location_dir }, /* database selection control */ {"db-ip2location-lite-to-sample-autoswitch-max-delta-months", 1, NULL, DB_ip2location_lite_to_sample_autoswitch_max_delta_months }, {"db-ip2location-comm-to-lite-switch-min-delta-months", 1, NULL, DB_ip2location_comm_to_lite_switch_min_delta_months }, {"db-ip2location-only-type", 1, NULL, DB_ip2location_only_type }, {"db-ip2location-allow-softlinks", 0, NULL, DB_ip2location_allow_softlinks }, #ifdef SUPPORT_IP2LOCATION_DYN {"db-ip2location-lib" , 1, NULL, DB_ip2location_lib }, #endif // SUPPORT_IP2LOCATION_DYN }; #endif // SUPPORT_IP2LOCATION #ifdef SUPPORT_GEOIP static char *ipv6calc_shortopts_geoip = "G"; static struct option ipv6calc_longopts_geoip[] = { /* database options (old) */ {"db-geoip" , 1, NULL, DB_geoip_ipv4 }, // backward compatibility {"db-geoip-ipv4" , 1, NULL, DB_geoip_ipv4 }, {"db-geoip-ipv6" , 1, NULL, DB_geoip_ipv6 }, {"db-geoip-default" , 0, NULL, (int) 'G' }, {"db-geoip-ipv4-default" , 0, NULL, DB_geoip_ipv4_default }, {"db-geoip-ipv6-default" , 0, NULL, DB_geoip_ipv6_default }, /* database options (new) */ {"disable-geoip" , 0, NULL, DB_geoip_disable }, {"db-geoip-disable" , 0, NULL, DB_geoip_disable }, {"db-geoip-dir" , 1, NULL, DB_geoip_dir }, #ifdef SUPPORT_GEOIP_DYN {"db-geoip-lib" , 1, NULL, DB_geoip_lib }, #endif // SUPPORT_GEOIP_DYN }; #endif // SUPPORT_GEOIP #ifdef SUPPORT_DBIP static char *ipv6calc_shortopts_dbip = ""; static struct option ipv6calc_longopts_dbip[] = { {"disable-dbip" , 0, NULL, DB_dbip_disable }, {"db-dbip-disable" , 0, NULL, DB_dbip_disable }, {"db-dbip-dir" , 1, NULL, DB_dbip_dir }, {"db-dbip-comm-to-free-switch-min-delta-months", 1, NULL, DB_dbip_comm_to_free_switch_min_delta_months }, {"db-dbip-only-type", 1, NULL, DB_dbip_only_type }, }; #endif // SUPPORT_DBIP #ifdef SUPPORT_EXTERNAL static char *ipv6calc_shortopts_external = ""; static struct option ipv6calc_longopts_external[] = { {"disable-external" , 0, NULL, DB_external_disable }, {"db-external-disable" , 0, NULL, DB_external_disable }, {"db-external-dir" , 1, NULL, DB_external_dir }, }; #endif // SUPPORT_EXTERNAL #ifdef SUPPORT_BUILTIN static char *ipv6calc_shortopts_builtin = ""; static struct option ipv6calc_longopts_builtin[] = { {"disable-builtin" , 0, NULL, DB_builtin_disable }, {"db-builtin-disable" , 0, NULL, DB_builtin_disable }, }; #endif // SUPPORT_BUILTIN #if defined SUPPORT_EXTERNAL || defined SUPPORT_DBIP || defined SUPPORT_GEOIP || SUPPORT_IP2LOCATION static char *ipv6calc_shortopts_db_common = ""; static struct option ipv6calc_longopts_db_common[] = { {"db-priorization" , 1, NULL, DB_common_priorization }, }; #endif /* define common anonymization short options */ static char *ipv6calc_shortopts_common_anon = ""; /* define common anonymization long options */ static struct option ipv6calc_longopts_common_anon[] = { { "anonymize-standard" , 0, NULL, CMD_ANON_PRESET_STANDARD }, { "anonymize-careful" , 0, NULL, CMD_ANON_PRESET_CAREFUL }, { "anonymize-paranoid" , 0, NULL, CMD_ANON_PRESET_PARANOID }, { "anonymize-preset" , 1, NULL, CMD_ANON_PRESET_OPTION }, { "ap" , 1, NULL, CMD_ANON_PRESET_OPTION }, { "anonymize-method" , 1, NULL, CMD_ANON_METHOD_OPTION }, { "mask-ipv4" , 1, NULL, CMD_ANON_MASK_IPV4 }, { "mask-ipv6" , 1, NULL, CMD_ANON_MASK_IPV6 }, { "mask-iid" , 1, NULL, CMD_ANON_MASK_IID }, { "mask-eui64" , 1, NULL, CMD_ANON_MASK_EUI64 }, { "mask-mac" , 1, NULL, CMD_ANON_MASK_MAC }, { "mask-autoadjust" , 1, NULL, CMD_ANON_MASK_AUTOADJUST }, }; ipv6calc-1.0.0/lib/ipv6calctypes.c000066400000000000000000000075101312366535500167410ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calctypes.c * Version : $Id: 4dbca5f9473e036d98904ff32c858d8072c76103 $ * Copyright : 2002-2015 by Peter Bieringer * * Information: * Format and type handling */ #include #include #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "ipv6calctypes.h" /* * check given type string * in : format string * ret: format type */ uint32_t ipv6calctypes_checktype(const char *string) { int i; uint32_t number = FORMAT_undefined; char tokenlist[100]; char *token, *cptr, **ptrptr; ptrptr = &cptr; DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Got string: %s", string); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatstrings); i++) { DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Compare against: %s", ipv6calc_formatstrings[i].token); /* check main token */ if (strcmp(string, ipv6calc_formatstrings[i].token) == 0) { number = ipv6calc_formatstrings[i].number; break; }; if (strlen(ipv6calc_formatstrings[i].aliases) == 0) { /* no aliases defined */ continue; }; DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Compare against aliases in string: %s", ipv6calc_formatstrings[i].aliases); snprintf(tokenlist, sizeof(tokenlist), "%s", ipv6calc_formatstrings[i].aliases); token = strtok_r(tokenlist, " ", ptrptr); while (token != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Compare against alias token: %s", token); /* compare alias */ if (strcmp(string, token) == 0) { number = ipv6calc_formatstrings[i].number; break; }; /* get next token */ token = strtok_r(NULL, " ", ptrptr); }; }; if ( number == FORMAT_undefined ) { DEBUGPRINT_NA(DEBUG_libipv6calctypes, "Found no proper string"); } else { DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Found format number: %08x", (unsigned int) number); }; return(number); }; /* * check given type string * in : action string * ret: action type */ uint32_t ipv6calctypes_checkaction(const char *string) { int i; uint32_t number = ACTION_undefined; char tokenlist[100]; char *token, *cptr, **ptrptr; ptrptr = &cptr; DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Got string: %s", string); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_actionstrings); i++) { DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Compare against: %s", ipv6calc_actionstrings[i].token); /* check main token */ if (strcmp(string, ipv6calc_actionstrings[i].token) == 0) { number = ipv6calc_actionstrings[i].number; break; }; if (strlen(ipv6calc_actionstrings[i].aliases) == 0) { /* no aliases defined */ continue; }; DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Compare against aliases in string: %s", ipv6calc_actionstrings[i].aliases); snprintf(tokenlist, sizeof(tokenlist), "%s", ipv6calc_formatstrings[i].aliases); token = strtok_r(tokenlist, " ", ptrptr); while (token != NULL) { DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Compare against alias token: %s", token); /* compare alias */ if (strcmp(string, token) == 0) { number = ipv6calc_actionstrings[i].number; break; }; /* get next token */ token = strtok_r(NULL, " ", ptrptr); }; }; if ( number == FORMAT_undefined ) { DEBUGPRINT_NA(DEBUG_libipv6calctypes, "Found no proper string"); } else { DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Found action number: %08x", (unsigned int) number); }; return(number); }; /* * return format string * in : format type * ret: format string */ const char *ipv6calctypes_format_string_by_type(const uint32_t format_type) { int i; const char *format_string = NULL; DEBUGPRINT_WA(DEBUG_libipv6calctypes, "Got type: %08x", format_type); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_formatstrings); i++) { if (ipv6calc_formatstrings[i].number == format_type) { format_string = ipv6calc_formatstrings[i].token; break; }; }; return(format_string); }; ipv6calc-1.0.0/lib/ipv6calctypes.h000066400000000000000000000507641312366535500167570ustar00rootroot00000000000000/* * Project : ipv6calc * File : ipv6calctypes.h * Version : $Id: 517ca7a4cbd8b456ff0e15ee831863f9ea4bb4ca $ * Copyright : 2002-2016 by Peter Bieringer * License : GPLv2 * * Information: * Header file for ipv6calctypes.c */ #include "ipv6calc_inttypes.h" #include "ipv6calccommands.h" #include /* defines */ #ifndef _ipv6calctypes_h_ #define _ipv6calctypes_h_ /* text representations for defines */ typedef struct { const int number; const char *token; } s_type; typedef struct { const int number; const char *token; const char *tokensimple; } s_type2; /* * Format handling matrix for new address option style */ /* Format number definitions, each possible format has one number */ #define FORMAT_NUM_HEAD 0x200 #define FORMAT_NUM_auto 0 #define FORMAT_NUM_revnibbles_int 1 #define FORMAT_NUM_revnibbles_arpa 2 #define FORMAT_NUM_bitstring 3 #define FORMAT_NUM_ipv6addr 4 #define FORMAT_NUM_ipv4addr 5 #define FORMAT_NUM_mac 6 #define FORMAT_NUM_eui64 7 #define FORMAT_NUM_base85 8 #define FORMAT_NUM_ifinet6 9 #define FORMAT_NUM_iid 10 #define FORMAT_NUM_iid_token 11 #define FORMAT_NUM_addrtype 12 #define FORMAT_NUM_ouitype 13 #define FORMAT_NUM_ipv6addrtype 14 #define FORMAT_NUM_ipv6logconv 15 #define FORMAT_NUM_any 16 #define FORMAT_NUM_prefix_mac 17 #define FORMAT_NUM_revipv4 18 #define FORMAT_NUM_ipv4hex 19 #define FORMAT_NUM_ipv4revhex 20 #define FORMAT_NUM_octal 21 #define FORMAT_NUM_hex 22 #define FORMAT_NUM_ipv6literal 23 #define FORMAT_NUM_ipv6rd 24 #define FORMAT_NUM_asn 29 #define FORMAT_NUM_auto_noresult 30 #define FORMAT_NUM_undefined 31 #define FORMAT_auto (uint32_t) 0x00000u #define FORMAT_revnibbles_int (uint32_t) (1 << FORMAT_NUM_revnibbles_int) #define FORMAT_revnibbles_arpa (uint32_t) (1 << FORMAT_NUM_revnibbles_arpa) #define FORMAT_bitstring (uint32_t) (1 << FORMAT_NUM_bitstring) #define FORMAT_ipv6addr (uint32_t) (1 << FORMAT_NUM_ipv6addr) #define FORMAT_ipv4addr (uint32_t) (1 << FORMAT_NUM_ipv4addr) #define FORMAT_mac (uint32_t) (1 << FORMAT_NUM_mac) #define FORMAT_macaddr (uint32_t) (1 << FORMAT_NUM_mac) // compatible syntax #define FORMAT_eui64 (uint32_t) (1 << FORMAT_NUM_eui64) #define FORMAT_base85 (uint32_t) (1 << FORMAT_NUM_base85) #define FORMAT_ifinet6 (uint32_t) (1 << FORMAT_NUM_ifinet6) #define FORMAT_iid (uint32_t) (1 << FORMAT_NUM_iid) #define FORMAT_iid_token (uint32_t) (1 << FORMAT_NUM_iid_token) #define FORMAT_addrtype (uint32_t) (1 << FORMAT_NUM_addrtype) #define FORMAT_ouitype (uint32_t) (1 << FORMAT_NUM_ouitype) #define FORMAT_ipv6addrtype (uint32_t) (1 << FORMAT_NUM_ipv6addrtype) #define FORMAT_ipv6logconv (uint32_t) (1 << FORMAT_NUM_ipv6logconv) #define FORMAT_any (uint32_t) (1 << FORMAT_NUM_any) #define FORMAT_prefix_mac (uint32_t) (1 << FORMAT_NUM_prefix_mac) #define FORMAT_revipv4 (uint32_t) (1 << FORMAT_NUM_revipv4) #define FORMAT_ipv4hex (uint32_t) (1 << FORMAT_NUM_ipv4hex) #define FORMAT_ipv4revhex (uint32_t) (1 << FORMAT_NUM_ipv4revhex) #define FORMAT_octal (uint32_t) (1 << FORMAT_NUM_octal) #define FORMAT_hex (uint32_t) (1 << FORMAT_NUM_hex) #define FORMAT_ipv6literal (uint32_t) (1 << FORMAT_NUM_ipv6literal) #define FORMAT_asn (uint32_t) (1 << FORMAT_NUM_asn) #define FORMAT_auto_noresult (uint32_t) (1 << FORMAT_NUM_auto_noresult) #define FORMAT_undefined (uint32_t) (1 << FORMAT_NUM_undefined) /* Primary label of format number, keeping also an explanation */ typedef struct { const uint32_t number; const char *token; const char *explanation; const char *aliases; } s_format; /*@unused@*/ static const s_format ipv6calc_formatstrings[] = { { FORMAT_auto , "auto" , "automatic detection", "" }, { FORMAT_revnibbles_int , "revnibbles.int" , "dot separated nibbles reverse, ending with ip6.int.", "" }, { FORMAT_revnibbles_arpa, "revnibbles.arpa", "dot separated nibbles reverse, ending with ip6.arpa.", "" }, { FORMAT_bitstring , "bitstring" , "bitstring labes, ending with ip6.arpa.", "" }, { FORMAT_ipv6addr , "ipv6addr" , "IPv6 address", "ipv6" }, { FORMAT_ipv4addr , "ipv4addr" , "IPv4 address", "ipv4" }, { FORMAT_mac , "mac" , "MAC address (48 bits)", "eui48" }, { FORMAT_eui64 , "eui64" , "EUI-64 identifier (64 bits)", "" }, { FORMAT_base85 , "base85" , "Base-85 string", "" }, { FORMAT_ifinet6 , "ifinet6" , "Like line in /proc/net/if_inet6", "" }, { FORMAT_iid , "iid" , "Interface identifier", "" }, { FORMAT_iid_token , "iid+token" , "Interface identifier and token", "" }, { FORMAT_addrtype , "addrtype" , "Address type", "" }, { FORMAT_ouitype , "ouitype" , "OUI (IEEE) type", "" }, { FORMAT_ipv6addrtype , "ipv6addrtype" , "IPv6 address type", "" }, { FORMAT_ipv6logconv , "ipv6logconv" , "ipv6logconv (currently not supported)", "" }, { FORMAT_any , "any" , "any type (currently not supported)", "" }, { FORMAT_revipv4 , "revipv4" , "reverse IPv4, ending with in-addr.arpa", "" }, { FORMAT_ipv4hex , "ipv4hex" , "IPv4 in hexdecimal format", "" }, { FORMAT_ipv4revhex , "ipv4revhex" , "IPv4 in byte-reversed hexdecimal format", "" }, { FORMAT_octal , "octal" , "IP address in escaped octal format", "" }, { FORMAT_hex , "hex" , "IP address in hexadecimal format", "" }, { FORMAT_ipv6literal , "ipv6literal" , "IPv6 address in literal", "" }, { FORMAT_prefix_mac , "prefix+mac" , "IPv6 prefix and a MAC address", "" }, { FORMAT_asn , "asn" , "Autonomous System Number", "" }, }; /* Format conversion matrix */ /*@unused@*/ static const uint32_t ipv6calc_formatmatrix[][2] = { { FORMAT_auto , 0x5ff }, { FORMAT_revnibbles_int , 0x5ff }, { FORMAT_revnibbles_arpa, 0x5ff }, { FORMAT_bitstring , 0x5ff }, { FORMAT_ipv6addr , FORMAT_revnibbles_int | FORMAT_revnibbles_arpa | FORMAT_bitstring | FORMAT_ipv6addr | FORMAT_base85 | FORMAT_ifinet6 | FORMAT_octal | FORMAT_ipv6literal | FORMAT_hex }, { FORMAT_ipv6literal , FORMAT_revnibbles_int | FORMAT_revnibbles_arpa | FORMAT_bitstring | FORMAT_ipv6addr | FORMAT_base85 | FORMAT_ifinet6 | FORMAT_octal | FORMAT_ipv6literal }, { FORMAT_ipv4addr , FORMAT_ipv4addr | FORMAT_ipv6addr | FORMAT_revipv4 | FORMAT_ipv4hex | FORMAT_hex }, { FORMAT_ipv4hex , FORMAT_ipv4addr | FORMAT_ipv6addr | FORMAT_revipv4 | FORMAT_ipv4hex | FORMAT_hex }, { FORMAT_ipv4revhex , FORMAT_ipv4addr | FORMAT_ipv6addr | FORMAT_revipv4 | FORMAT_ipv4hex }, { FORMAT_mac , FORMAT_eui64 }, { FORMAT_eui64 , FORMAT_eui64 }, { FORMAT_base85 , FORMAT_base85 | FORMAT_ipv6addr | FORMAT_revnibbles_int | FORMAT_revnibbles_arpa | FORMAT_bitstring | FORMAT_ifinet6 }, { FORMAT_ifinet6 , FORMAT_base85 | FORMAT_ipv6addr | FORMAT_revnibbles_int | FORMAT_revnibbles_arpa | FORMAT_bitstring | FORMAT_ifinet6 }, { FORMAT_iid_token , FORMAT_iid_token }, { FORMAT_ipv6logconv , FORMAT_ipv6addrtype | FORMAT_addrtype | FORMAT_ouitype | FORMAT_any }, { FORMAT_prefix_mac , FORMAT_revnibbles_int | FORMAT_revnibbles_arpa | FORMAT_bitstring | FORMAT_ipv6addr | FORMAT_base85 | FORMAT_ifinet6 }, { FORMAT_asn , FORMAT_auto_noresult }, }; /* Format options */ #define FORMATOPTION_NUM_HEAD 0x300 // offset #define FORMATOPTION_NUM_printlowercase 1 // 00000002 #define FORMATOPTION_NUM_printuppercase 2 // 00000004 #define FORMATOPTION_NUM_printprefix 3 // 00000008 #define FORMATOPTION_NUM_printsuffix 4 // 00000010 #define FORMATOPTION_NUM_maskprefix 5 // 00000020 #define FORMATOPTION_NUM_masksuffix 6 // 00000040 #define FORMATOPTION_NUM_printstart 7 // 00000080 #define FORMATOPTION_NUM_printend 8 // 00000100 #define FORMATOPTION_NUM_printcompressed 9 // 00000200 #define FORMATOPTION_NUM_printuncompressed 10 // 00000400 #define FORMATOPTION_NUM_printfulluncompressed 11 // 00000800 #define FORMATOPTION_NUM_machinereadable 12 // 00001000 #define FORMATOPTION_NUM_quiet 13 // 00002000 #define FORMATOPTION_NUM_printmirrored 14 // 00004000 #define FORMATOPTION_NUM_forceprefix 15 // 00008000 #define FORMATOPTION_NUM_literal 16 // 00010000 #define FORMATOPTION_NUM_print_iid_var 17 // 00020000 #define FORMATOPTION_NUM_no_prefixlength 18 // 00040000 #define FORMATOPTION_NUM_mr_quote_always 19 // 00080000 #define FORMATOPTION_NUM_mr_quote_never 20 // 00100000 #define FORMATOPTION_NUM_mr_value_only 21 // 00200000 #define FORMATOPTION_NUM_mr_select_token 22 // 00400000 #define FORMATOPTION_NUM_mr_select_token_pa 23 // 00800000 #define FORMATOPTION_NUM_mr_match_token 24 // 01000000 #define FORMATOPTION_NUM_mr_quote_default 25 // 02000000 flag for controlling old quote behavior < 0.99.0 #define FORMATOPTION_NUM_printembedded 31 // special #define FORMATOPTION_printlowercase (uint32_t) (1 << FORMATOPTION_NUM_printlowercase) #define FORMATOPTION_printuppercase (uint32_t) (1 << FORMATOPTION_NUM_printuppercase) #define FORMATOPTION_printprefix (uint32_t) (1 << FORMATOPTION_NUM_printprefix) #define FORMATOPTION_printsuffix (uint32_t) (1 << FORMATOPTION_NUM_printsuffix) #define FORMATOPTION_maskprefix (uint32_t) (1 << FORMATOPTION_NUM_maskprefix) #define FORMATOPTION_masksuffix (uint32_t) (1 << FORMATOPTION_NUM_masksuffix) #define FORMATOPTION_printstart (uint32_t) (1 << FORMATOPTION_NUM_printstart) #define FORMATOPTION_printend (uint32_t) (1 << FORMATOPTION_NUM_printend) #define FORMATOPTION_printcompressed (uint32_t) (1 << FORMATOPTION_NUM_printcompressed) #define FORMATOPTION_printuncompressed (uint32_t) (1 << FORMATOPTION_NUM_printuncompressed) #define FORMATOPTION_printfulluncompressed (uint32_t) (1 << FORMATOPTION_NUM_printfulluncompressed) #define FORMATOPTION_machinereadable (uint32_t) (1 << FORMATOPTION_NUM_machinereadable) #define FORMATOPTION_quiet (uint32_t) (1 << FORMATOPTION_NUM_quiet) #define FORMATOPTION_printmirrored (uint32_t) (1 << FORMATOPTION_NUM_printmirrored) #define FORMATOPTION_forceprefix (uint32_t) (1 << FORMATOPTION_NUM_forceprefix) #define FORMATOPTION_literal (uint32_t) (1 << FORMATOPTION_NUM_literal) #define FORMATOPTION_print_iid_var (uint32_t) (1 << FORMATOPTION_NUM_print_iid_var) #define FORMATOPTION_no_prefixlength (uint32_t) (1 << FORMATOPTION_NUM_no_prefixlength) #define FORMATOPTION_mr_quote_always (uint32_t) (1 << FORMATOPTION_NUM_mr_quote_always) #define FORMATOPTION_mr_quote_never (uint32_t) (1 << FORMATOPTION_NUM_mr_quote_never) #define FORMATOPTION_mr_value_only (uint32_t) (1 << FORMATOPTION_NUM_mr_value_only) #define FORMATOPTION_mr_select_token (uint32_t) (1 << FORMATOPTION_NUM_mr_select_token) #define FORMATOPTION_mr_select_token_pa (uint32_t) (1 << FORMATOPTION_NUM_mr_select_token_pa) #define FORMATOPTION_mr_match_token (uint32_t) (1 << FORMATOPTION_NUM_mr_match_token) #define FORMATOPTION_mr_quote_default (uint32_t) (1 << FORMATOPTION_NUM_mr_quote_default) // flag for controlling old quote behavior < 0.99.0 #define FORMATOPTION_printembedded (uint32_t) (1 << FORMATOPTION_NUM_printembedded) typedef struct { const uint32_t number; const char *token; const char *explanation; } s_formatoption; /*@unused@*/ static const s_formatoption ipv6calc_formatoptionstrings[] = { { FORMATOPTION_printlowercase , "--lowercase|-l" , "Print output in lower case" }, { FORMATOPTION_printuppercase , "--uppercase|-u" , "Print output in upper case" }, { FORMATOPTION_printprefix , "--printprefix" , "Print only prefix" }, { FORMATOPTION_printsuffix , "--printsuffix" , "Print only suffix" }, { FORMATOPTION_maskprefix , "--maskprefix" , "Mask prefix bits (suffix set to 0)" }, { FORMATOPTION_masksuffix , "--masksuffix" , "Mask suffix bits (prefix set to 0)" }, { FORMATOPTION_printstart , "--printstart " , "Printing starts at bit " }, { FORMATOPTION_printend , "--printend " , "Printing ends at bit " }, { FORMATOPTION_printcompressed , "--printcompressed|-C" , "Print in compressed format" }, { FORMATOPTION_printuncompressed , "--printuncompressed|-U" , "Print in uncompressed format" }, { FORMATOPTION_printfulluncompressed , "--printfulluncompressed|-F" , "Print in full uncompressed format" }, { FORMATOPTION_machinereadable , "--machinereadable|-m" , "Print output machine readable" }, { FORMATOPTION_quiet , "--quiet|-q" , "Be more quiet" }, { FORMATOPTION_printmirrored , "--printmirrored" , "Print output mirrored" }, { FORMATOPTION_forceprefix , "--forceprefix ", "Force prefix to " }, { FORMATOPTION_print_iid_var , "--print-iid-var" , "IPv6 address IID variance"}, { FORMATOPTION_no_prefixlength , "--no-prefixlength" , "Don't print prefix length if given on input"}, }; /* Possible format option map */ /*@unused@*/ static const uint32_t ipv6calc_outputformatoptionmap[][2] = { { FORMAT_revnibbles_int , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase | FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_maskprefix | FORMATOPTION_masksuffix | FORMATOPTION_printstart | FORMATOPTION_printend | FORMATOPTION_printmirrored }, { FORMAT_revnibbles_arpa, FORMATOPTION_printlowercase | FORMATOPTION_printuppercase | FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_maskprefix | FORMATOPTION_masksuffix | FORMATOPTION_printstart | FORMATOPTION_printend | FORMATOPTION_printmirrored }, { FORMAT_revipv4, FORMATOPTION_printlowercase | FORMATOPTION_printuppercase | FORMATOPTION_printmirrored }, { FORMAT_bitstring , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase | FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_maskprefix | FORMATOPTION_masksuffix | FORMATOPTION_printstart | FORMATOPTION_printend }, { FORMAT_ipv6addr , FORMATOPTION_machinereadable | FORMATOPTION_printlowercase | FORMATOPTION_printuppercase | FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_maskprefix | FORMATOPTION_masksuffix | FORMATOPTION_printcompressed | FORMATOPTION_printuncompressed | FORMATOPTION_printfulluncompressed | FORMATOPTION_forceprefix | FORMATOPTION_print_iid_var | FORMATOPTION_no_prefixlength}, { FORMAT_mac , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase }, { FORMAT_eui64 , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase }, { FORMAT_base85 , 0 }, { FORMAT_ifinet6 , 0 }, { FORMAT_ipv4addr , FORMATOPTION_machinereadable | FORMATOPTION_no_prefixlength }, { FORMAT_iid_token , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase }, { FORMAT_octal , FORMATOPTION_printfulluncompressed }, { FORMAT_ipv6literal , FORMATOPTION_machinereadable | FORMATOPTION_printlowercase | FORMATOPTION_printuppercase | FORMATOPTION_printcompressed | FORMATOPTION_printuncompressed | FORMATOPTION_printfulluncompressed }, { FORMAT_hex , FORMATOPTION_printuppercase | FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_forceprefix }, { FORMAT_prefix_mac , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase } }; /* Actions */ #define ACTION_NUM_auto 0 #define ACTION_NUM_mac_to_eui64 1 #define ACTION_NUM_ipv4_to_6to4addr 2 #define ACTION_NUM_iid_token_to_privacy 3 #define ACTION_NUM_prefix_mac_to_ipv6 4 #define ACTION_NUM_anonymize 5 #define ACTION_NUM_6rd_local_prefix 6 #define ACTION_NUM_6rd_extract_ipv4 7 #define ACTION_NUM_ipv4_to_nat64 8 #define ACTION_NUM_filter 15 #define ACTION_NUM_test 16 #define ACTION_NUM_undefined 31 #define ACTION_auto (uint32_t) 0x0 #define ACTION_mac_to_eui64 (uint32_t) (1 << ACTION_NUM_mac_to_eui64) #define ACTION_ipv4_to_6to4addr (uint32_t) (1 << ACTION_NUM_ipv4_to_6to4addr) #define ACTION_iid_token_to_privacy (uint32_t) (1 << ACTION_NUM_iid_token_to_privacy) #define ACTION_prefix_mac_to_ipv6 (uint32_t) (1 << ACTION_NUM_prefix_mac_to_ipv6) #define ACTION_anonymize (uint32_t) (1 << ACTION_NUM_anonymize) #define ACTION_6rd_local_prefix (uint32_t) (1 << ACTION_NUM_6rd_local_prefix) #define ACTION_6rd_extract_ipv4 (uint32_t) (1 << ACTION_NUM_6rd_extract_ipv4) #define ACTION_ipv4_to_nat64 (uint32_t) (1 << ACTION_NUM_ipv4_to_nat64) #define ACTION_filter (uint32_t) (1 << ACTION_NUM_filter) #define ACTION_test (uint32_t) (1 << ACTION_NUM_test) #define ACTION_undefined (uint32_t) (1 << ACTION_NUM_undefined) #define ANON_METHOD_ANONYMIZE 1 #define ANON_METHOD_ZEROIZE 2 #define ANON_METHOD_KEEPTYPEASNCC 3 typedef struct { const uint32_t number; const char *token; const char *explanation; const char *aliases; } s_action; /*@unused@*/ static const s_action ipv6calc_actionstrings[] = { { ACTION_auto , "auto" , "Automatic selection of action (default)", "" }, { ACTION_mac_to_eui64 , "geneui64" , "Converts a MAC address to an EUI-64 address", "" }, { ACTION_ipv4_to_6to4addr , "conv6to4" , "Converts IPv4 address <-> 6to4 IPv6 address (prefix)", "" }, { ACTION_ipv4_to_nat64 , "convnat64" , "Converts IPv4 address <-> NAT64 IPv6 address", "" }, { ACTION_iid_token_to_privacy , "genprivacyiid" , "Generates a privacy interface ID out of a given one (arg1) and a token (arg2)", "" }, { ACTION_prefix_mac_to_ipv6 , "prefixmac2ipv6" , "Generates an IPv6 address out of a prefix and a MAC address", "" }, { ACTION_anonymize , "anonymize" , "Anonymize IPv4/IPv6 address without loosing much information", "" }, { ACTION_6rd_local_prefix , "6rd_local_prefix", "Calculate the 6rd prefix from given IPv6 prefix (& relay prefix) and IPv4", "" }, { ACTION_6rd_extract_ipv4 , "6rd_extract_ipv4", "Extract from 6rd address the include IPv4 address", "" }, { ACTION_filter , "filter" , "Filter addresses related to filter options", "" }, { ACTION_test , "test" , "Test address against given prefix or address", "" }, }; /* Possible action option map (required) */ /*@unused@*/ static const uint32_t ipv6calc_actionoptionmap[][3] = { // action, command, 0=required, 1=optional { ACTION_auto , 0 , 0}, { ACTION_mac_to_eui64 , 0 , 0}, { ACTION_ipv4_to_6to4addr , 0 , 0}, { ACTION_ipv4_to_nat64 , 0 , 0}, { ACTION_iid_token_to_privacy , 0 , 0}, { ACTION_prefix_mac_to_ipv6 , 0 , 0}, { ACTION_anonymize , 0 , 0}, { ACTION_6rd_local_prefix , CMD_6rd_prefix, 0}, { ACTION_6rd_local_prefix , CMD_6rd_relay_prefix, 1 }, { ACTION_6rd_extract_ipv4 , CMD_6rd_prefixlength, 0}, { ACTION_test , CMD_test_prefix, 1}, { ACTION_test , CMD_test_gt, 1}, { ACTION_test , CMD_test_ge, 1}, { ACTION_test , CMD_test_lt, 1}, { ACTION_test , CMD_test_le, 1}, }; /* anonymization set */ typedef struct { char name[32]; char name_short[3]; int mask_ipv4; int mask_ipv6; int mask_eui64; int mask_mac; int mask_autoadjust; int method; // 1=anonymize, 2=zeroize, 3=keep type asn countrycode } s_ipv6calc_anon_set; /* anonymization methods */ typedef struct { const char name[32]; const int method; const char description[128]; } s_ipv6calc_anon_methods; /**** filter structures ****/ #define IPV6CALC_FILTER_DB_CC_MAX 16 #define IPV6CALC_FILTER_DB_ASN_MAX 16 #define IPV6CALC_FILTER_DB_REGISTRY_MAX 8 #define IPV6CALC_FILTER_IPV4ADDR 16 #define IPV6CALC_FILTER_IPV6ADDR 16 /* DB CC (CountryCode) filter structure */ typedef struct { int active; int cc_must_have_max; int cc_may_not_have_max; uint16_t cc_must_have[IPV6CALC_FILTER_DB_CC_MAX]; uint16_t cc_may_not_have[IPV6CALC_FILTER_DB_CC_MAX]; } s_ipv6calc_filter_db_cc; /* DB ASN (Autonomous System Number) filter structure */ typedef struct { int active; int asn_must_have_max; int asn_may_not_have_max; uint32_t asn_must_have[IPV6CALC_FILTER_DB_ASN_MAX]; uint32_t asn_may_not_have[IPV6CALC_FILTER_DB_ASN_MAX]; } s_ipv6calc_filter_db_asn; /* DB Registry filter structure */ typedef struct { int active; int registry_must_have_max; int registry_may_not_have_max; uint32_t registry_must_have[IPV6CALC_FILTER_DB_REGISTRY_MAX]; uint32_t registry_may_not_have[IPV6CALC_FILTER_DB_REGISTRY_MAX]; } s_ipv6calc_filter_db_registry; /* typeinfo filter structure */ typedef struct { int active; uint32_t typeinfo_must_have; uint32_t typeinfo_may_not_have; } s_ipv6calc_filter_typeinfo; #define IPV6CALC_TEST_PREFIX 1 #define IPV6CALC_TEST_GT 2 #define IPV6CALC_TEST_GE 3 #define IPV6CALC_TEST_LT 4 #define IPV6CALC_TEST_LE 5 #define IPV6CALC_TEST_LIST_MIN IPV6CALC_TEST_PREFIX #define IPV6CALC_TEST_LIST_MAX IPV6CALC_TEST_LE #endif // _ipv6calctypes_h_ /* prototypes */ extern uint32_t ipv6calctypes_checktype(const char *string); extern uint32_t ipv6calctypes_checkaction(const char *string); extern const char *ipv6calctypes_format_string_by_type(const uint32_t format_type); ipv6calc-1.0.0/lib/libeui64.c000066400000000000000000000220241312366535500155650ustar00rootroot00000000000000/* * Project : ipv6calc * File : libeui64.c * Version : $Id: 8da2aea99d8271214c7d7e488add759b83578be3 $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Function library EUI-64 identifier handling */ #include #include #include #include "libeui64.h" #include "libieee.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "libipv6addr.h" static char ChSet[] = "0123456789abcdefABCDEF:- "; /* function MAC address to EUI format * * in : macaddrp * out: ipv6addrp * ret: ==0: ok, !=0: error */ int create_eui64_from_mac(ipv6calc_ipv6addr *ipv6addrp, ipv6calc_macaddr *macaddrp) { int retval = 1; DEBUGPRINT_NA(DEBUG_libeui64, "called"); /* clear IPv6 structure */ ipv6addr_clear(ipv6addrp); /* create EUI-64 from MAC-48 */ ipv6addrp->in6_addr.s6_addr[ 8] = macaddrp->addr[0] ^ 0x02; ipv6addrp->in6_addr.s6_addr[ 9] = macaddrp->addr[1]; ipv6addrp->in6_addr.s6_addr[10] = macaddrp->addr[2]; ipv6addrp->in6_addr.s6_addr[11] = 0xff; ipv6addrp->in6_addr.s6_addr[12] = 0xfe; ipv6addrp->in6_addr.s6_addr[13] = macaddrp->addr[3]; ipv6addrp->in6_addr.s6_addr[14] = macaddrp->addr[4]; ipv6addrp->in6_addr.s6_addr[15] = macaddrp->addr[5]; ipv6addrp->prefixlength = 64; ipv6addrp->flag_prefixuse = 0; ipv6addrp->flag_valid = 1; retval = 0; return (retval); }; /* * stores the EUI-64 structure in a string * * in: eui64addr_p = EUI-64 address structure ptr * out: *resultstring = EUI-64 address string * ret: ==0: ok, !=0: error */ int libeui64_eui64addrstruct_to_string(const ipv6calc_eui64addr *eui64addr_p, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { char tempstring[NI_MAXHOST]; /* address */ snprintf(tempstring, sizeof(tempstring), "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", \ (unsigned int) eui64addr_p->addr[0], \ (unsigned int) eui64addr_p->addr[1], \ (unsigned int) eui64addr_p->addr[2], \ (unsigned int) eui64addr_p->addr[3], \ (unsigned int) eui64addr_p->addr[4], \ (unsigned int) eui64addr_p->addr[5], \ (unsigned int) eui64addr_p->addr[6], \ (unsigned int) eui64addr_p->addr[7]); if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { snprintf(resultstring, resultstring_length, "EUI64=%s", tempstring); } else { snprintf(resultstring, resultstring_length, "%s", tempstring); }; return(0); }; /* function 48-bit EUI-64 address to eui64addr_structure * * in : *addrstring = EUI-64 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int libeui64_addr_to_eui64addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_eui64addr *eui64addrp) { int retval = 1, result, i, ccolons = 0, cdashes = 0, cspaces = 0; size_t cnt; int temp[8]; DEBUGPRINT_NA(DEBUG_libeui64, "called"); /* check length */ if ( ( strlen(addrstring) < 15 ) || ( strlen(addrstring) > 23 ) ) { snprintf(resultstring, resultstring_length, "Error in given 64-bit EUI-64 address, has not 15 to 21 chars!"); retval = 1; return (retval); }; /* check for hex chars and ":"/"-"/" " only content */ cnt = strspn(addrstring, ChSet); if ( cnt < strlen(addrstring) ) { snprintf(resultstring, resultstring_length, "Error in given EUI-64 address, '%s' has illegal char on position %d (%c)!", addrstring, (int) cnt+1, addrstring[cnt]); retval = 1; return (retval); }; /* count ":" or "-" or " " must be 7 x "-" */ for (i = 0; i < (int) strlen(addrstring); i++) { if (addrstring[i] == ':') { ccolons++; } else if (addrstring[i] == '-') { cdashes++; } else if (addrstring[i] == ' ') { cspaces++; }; }; if ( ! ( (ccolons == 7 && cdashes == 0 && cspaces == 0) || (ccolons == 0 && cdashes == 5 && cspaces == 0) || (ccolons == 0 && cdashes == 0 && cspaces == 7) || (ccolons == 0 && cdashes == 0 && cspaces == 0 && strlen(addrstring) == 16)) ) { snprintf(resultstring, resultstring_length, "Error in given EUI-64 address, '%s' is not valid (number of colons/dashes/spaces is not 5 or number of dashes is not 1)!", addrstring); retval = 1; return (retval); }; /* scan address into array */ if ( ccolons == 7 ) { result = sscanf(addrstring, "%x:%x:%x:%x:%x:%x:%x:%x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7]); } else if ( cdashes == 7 ) { result = sscanf(addrstring, "%x-%x-%x-%x-%x-%x-%x-%x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7]); } else if ( cspaces == 7 ) { result = sscanf(addrstring, "%x %x %x %x %x %x %x %x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7]); } else if ( cdashes == 0 ) { result = sscanf(addrstring, "%2x%2x%2x%2x%2x%2x%2x%2x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7]); } else { snprintf(resultstring, resultstring_length, "Error in given EUI-64 address, unexpected failure on scanning '%s'!", addrstring); retval = 1; return (retval); }; if ( result != 8 ) { snprintf(resultstring, resultstring_length, "Error in given EUI-64 address, splitting of '%s' return %d items instead of 8!", addrstring, result); retval = 1; return (retval); }; /* check address words range */ for ( i = 0; i <= 7; i++ ) { if ( ( temp[i] < 0x0 ) || ( temp[i] > 0xff ) ) { snprintf(resultstring, resultstring_length, "Error in given EUI-64 address, '%s' is not valid on position %d!", addrstring, i); retval = 1; return (retval); }; }; /* copy address */ for ( i = 0; i <= 7; i++ ) { eui64addrp->addr[i] = (uint8_t) temp[i]; }; eui64addrp->flag_valid = 1; retval = 0; return (retval); }; /* * clear EUI-64 addr * * mod: *addrstring = EUI-64 address */ void libeui64_clear(ipv6calc_eui64addr *eui64addrp) { int i; DEBUGPRINT_NA(DEBUG_libeui64, "called"); for ( i = 0; i <= 7; i++ ) { eui64addrp->addr[i] = 0; }; return; }; /* * clear EUI64 addr_structure * * mod: *addrstring = EUI64 address */ void libeui64_clearall(ipv6calc_eui64addr *eui64addrp) { libeui64_clear(eui64addrp); DEBUGPRINT_NA(DEBUG_libeui64, "called"); /* Clear valid flag */ eui64addrp->flag_valid = 0; return; }; /* * anonymize EUI-64 addr * * mod: *addrstring = EUI-64 address */ void libeui64_anonymize(ipv6calc_eui64addr *eui64addrp, const s_ipv6calc_anon_set *ipv6calc_anon_set_p) { int mask = 0, i, j; uint8_t bit_ul = 0; DEBUGPRINT_WA(DEBUG_libeui64, "called: EUI-64=%08x%08x method=%d", EUI64_00_31(eui64addrp->addr), EUI64_32_63(eui64addrp->addr), ipv6calc_anon_set_p->method); // if (ipv6calc_anon_set_p->method == ANON_METHOD_ZEROIZE) { TODO: different implementations if (ipv6calc_anon_set_p->mask_autoadjust == 1) { DEBUGPRINT_NA(DEBUG_libeui64, "mask-autoadjust is set, autoselect proper mask"); if ((eui64addrp->addr[0] & 0x2) == 0) { // global address if ((eui64addrp->addr[3] == 0xff) && (eui64addrp->addr[4] == 0xfe)) { // expanded EUI-48 mask = 40; // 24 + 16 bits DEBUGPRINT_WA(DEBUG_libeui64, "EUI-64 is a expanded EUI-48, change mask: %d", mask); } else { mask = 24; }; if (libieee_check_oui36_iab(EUI64_00_23(eui64addrp->addr)) == 1) { // OUI-36/IAB mask += 12; // increase by 12 bits DEBUGPRINT_WA(DEBUG_libeui64, "EUI-64 contains OUI-36/IAB, change mask: %d", mask); }; DEBUGPRINT_WA(DEBUG_libeui64, "EUI-64 is a global one, source of mask: automagic: %d", mask); } else { // local address, honor mask_eui64 mask = ipv6calc_anon_set_p->mask_eui64; DEBUGPRINT_WA(DEBUG_libeui64, "EUI-64 is a local one, source of mask: mask-iid option: %d", mask); }; if (ipv6calc_anon_set_p->mask_eui64 > mask) { mask = ipv6calc_anon_set_p->mask_eui64; DEBUGPRINT_WA(DEBUG_libeui64, "specified mask is higher than autoselected one, change to specified: %d", mask); }; } else { DEBUGPRINT_WA(DEBUG_libeui64, "mask-autoadjust is not set, use always given mask: %d", mask); mask = ipv6calc_anon_set_p->mask_eui64; }; // save universal/local bit bit_ul = eui64addrp->addr[0] & 0x02; DEBUGPRINT_WA(DEBUG_libeui64, "zeroize EUI-64 with masked bits: %d (u/l=%s)", mask, (bit_ul == 2) ? "local" : "universal"); if (mask == 64) { // nothing to do } else if (mask > 0) { j = mask >> 3; for (i = 7; i >= 0; i--) { DEBUGPRINT_WA(DEBUG_libeui64, "zeroize EUI-64: mask=%02d i=%d j=%d", mask, i, j); if (j < i) { DEBUGPRINT_WA(DEBUG_libeui64, "zeroize EUI-64: byte %d", i); eui64addrp->addr[i] = 0x00; } else if (j == i) { DEBUGPRINT_WA(DEBUG_libeui64, "zeroize EUI-64: mask byte %d with %02x (offset: %d)", i, (0xff00 >> (mask % 0x8)) & 0xff, (mask % 0x8)); eui64addrp->addr[i] &= (0xff00 >> (mask % 0x8)) & 0xff; } else { DEBUGPRINT_NA(DEBUG_libeui64, "zeroize EUI-64: finished"); break; }; }; } else { libeui64_clear(eui64addrp); }; // restore universal/local bit eui64addrp->addr[0] = (eui64addrp->addr[0] & 0xfd) | bit_ul; // }; DEBUGPRINT_WA(DEBUG_libeui64, "anonymization finished, return: %08x%08x", EUI64_00_31(eui64addrp->addr), EUI64_32_63(eui64addrp->addr)); return; }; ipv6calc-1.0.0/lib/libeui64.h000066400000000000000000000027231312366535500155760ustar00rootroot00000000000000/* * Project : ipv6calc * File : libeui64.h * Version : $Id: 72841596a626de9b2cf984751a2655584f2deb8e $ * Copyright : 2001-2013 by Peter Bieringer * * Information: * Header file for libeu64.c */ #include "libipv6addr.h" #include "libmac.h" #ifndef _libeui64_h #define _libeui64_h typedef struct { uint8_t addr[8]; /* EUI-64 address in 8x 8 bit */ int flag_valid; /* address structure filled */ } ipv6calc_eui64addr; #define EUI64_00_23(x) ((x[0] << 16) | (x[1] << 8) | x[2]) #define EUI64_24_47(x) ((x[3] << 16) | (x[4] << 8) | x[5]) #define EUI64_48_63(x) ( (x[6] << 8) | x[7]) #define EUI64_00_31(x) ((x[0] << 24) | (x[1] << 16) | (x[2] << 8) | x[3]) #define EUI64_32_63(x) ((x[4] << 24) | (x[5] << 16) | (x[6] << 8) | x[7]) #endif /* prototypes */ extern int create_eui64_from_mac(ipv6calc_ipv6addr *ipv6addrp, ipv6calc_macaddr *macaddrp); extern int libeui64_addr_to_eui64addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_eui64addr *eui64addrp); extern void libeui64_clear(ipv6calc_eui64addr *eui64addrp); extern void libeui64_clearall(ipv6calc_eui64addr *eui64addrp); extern void libeui64_anonymize(ipv6calc_eui64addr *eui64addrp, const s_ipv6calc_anon_set *ipv6calc_anon_set_p); extern int libeui64_eui64addrstruct_to_string(const ipv6calc_eui64addr *eui64addr_p, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); ipv6calc-1.0.0/lib/libieee.c000066400000000000000000000120361312366535500155420ustar00rootroot00000000000000/* * Project : ipv6calc * File : libieee.c * Version : $Id: 28670f5b63390c9c3f979a4a29b5fcb1b580bfa1 $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * Function library for IEEE information */ #include #include #include "config.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "libieee.h" #include "libmac.h" #include "libeui64.h" #include "../databases/lib/libipv6calc_db_wrapper.h" /* * check for OUI-36/IAB * in: bits_00_23 * out: 0=not OUI-36/IAB, 1=is OUI-36/IAB */ int libieee_check_oui36_iab(const uint32_t bits_00_23) { int r = 0, i; DEBUGPRINT_WA(DEBUG_libieee, "called with bits_00_23=%06x", bits_00_23); /* run through map */ for (i = 0; i < MAXENTRIES_ARRAY(ieee_mapping); i++) { DEBUGPRINT_WA(DEBUG_libieee, "check against: %06x", ieee_mapping[i].bits_00_23); if (ieee_mapping[i].bits_00_23 == bits_00_23) { DEBUGPRINT_WA(DEBUG_libieee, "found entry in map: %06x", bits_00_23); r = 1; break; }; }; return(r); }; /* * map OUI-36/IAB * in: bits_00_23, bits_24_36 * out: mapping value */ uint32_t libieee_map_oui36_iab(const uint32_t bits_00_23, const uint32_t bits_24_36) { int i; uint32_t map_value = bits_00_23; DEBUGPRINT_WA(DEBUG_libieee, "called with bits_00_23=%06x bits_24_36=%03x", bits_00_23, bits_24_36); /* run through map */ for (i = 0; i < MAXENTRIES_ARRAY(ieee_mapping); i++) { DEBUGPRINT_WA(DEBUG_libieee, "check against: %06x", ieee_mapping[i].bits_00_23); if (ieee_mapping[i].bits_00_23 == bits_00_23) { // hit, set flag (0x1mmmvvv), mapping number (mmm) and 12 bit vendor code map_value = 0x1000000 | (bits_00_23 & 0xff0000) | (ieee_mapping[i].mapping << 12) | bits_24_36; DEBUGPRINT_WA(DEBUG_libieee, "found entry in map: %06x -> %08x", bits_00_23, map_value); break; }; }; return (map_value); }; /* * unmap OUI-36/IAB * in : mapping value * out: bits_00_23, bits_24_36 */ int libieee_unmap_oui36_iab(const uint32_t map_value, uint32_t *bits_00_23_p, uint32_t *bits_24_36_p) { int i; uint32_t map_index = (map_value & 0x00f000) >> 12; *bits_00_23_p = 0; *bits_24_36_p = 0; DEBUGPRINT_WA(DEBUG_libieee, "called with map_value=%08x", map_value); /* run through map */ for (i = 0; i < MAXENTRIES_ARRAY(ieee_mapping); i++) { if (ieee_mapping[i].mapping == map_index) { DEBUGPRINT_WA(DEBUG_libieee, "found entry in map: %06x", map_index); *bits_00_23_p = ieee_mapping[i].bits_00_23; *bits_24_36_p = map_value & 0xfff; DEBUGPRINT_WA(DEBUG_libieee, "mapped to bits_00_23=%06x bits_24_36=%03x", *bits_00_23_p, *bits_24_36_p); return (0); }; }; fprintf(stderr, "%s/%s: missing entry in map: %06x\n", __FILE__, __func__, map_index); return (1); }; /* * map IAB/OUI-36 * in: macaddrp * out: OUI (0x0......) or mapped IAB/OUI-36 (0x1mmm...) * mmm = map index */ uint32_t libieee_map_oui_macaddr(const ipv6calc_macaddr *macaddrp) { uint32_t oui, ven; oui = (macaddrp->addr[0] << 16) | (macaddrp->addr[1] << 8) | macaddrp->addr[2]; ven = (macaddrp->addr[3] << 4) | (macaddrp->addr[4] >> 4); DEBUGPRINT_WA(DEBUG_libieee, "called with OUI: %06x", oui); return (libieee_map_oui36_iab(oui, ven)); }; /* * map IAB/OUI-36 * in: eui64addrp * out: OUI (0x0......) or mapped IAB/OUI-36 (0x1mmm...) * mmm = map index */ uint32_t libieee_map_oui_eui64addr(const ipv6calc_eui64addr *eui64addrp) { uint32_t oui, ven; oui = (eui64addrp->addr[0] << 16) | (eui64addrp->addr[1] << 8) | eui64addrp->addr[2]; ven = (eui64addrp->addr[3] << 4) | (eui64addrp->addr[4] >> 4); DEBUGPRINT_WA(DEBUG_libieee, "called with OUI: %06x", oui); return (libieee_map_oui36_iab(oui, ven)); }; /* * unmap IAB/OUI-36 * in : OUI (0x0......) or mapped IAB/OUI-36 (0x1mmm...) * mmm = map index * mod: macaddrp (last bits zeroized) * out: result */ int libieee_unmap_oui_macaddr(ipv6calc_macaddr *macaddrp, uint32_t map_value) { uint32_t bits_00_23, bits_24_36; mac_clearall(macaddrp); DEBUGPRINT_NA(DEBUG_libieee, "called"); libieee_unmap_oui36_iab(map_value, &bits_00_23, &bits_24_36); macaddrp->addr[0] = (bits_00_23 & 0xff0000) >> 16; macaddrp->addr[1] = (bits_00_23 & 0x00ff00) >> 8; macaddrp->addr[2] = (bits_00_23 & 0x0000ff); macaddrp->addr[3] = (bits_24_36 & 0x000ff0) >> 4; macaddrp->addr[4] = (bits_24_36 & 0x00000f) << 4; macaddrp->flag_valid = 1; return (0); }; /* * unmap IAB/OUI-36 * in : OUI (0x0......) or mapped IAB/OUI-36 (0x1mmm...) * mmm = map index * mod: eui64addrp (last bits zeroized) * out: result */ int libieee_unmap_oui_eui64addr(ipv6calc_eui64addr *eui64addrp, uint32_t map_value) { uint32_t bits_00_23, bits_24_36; libeui64_clearall(eui64addrp); DEBUGPRINT_NA(DEBUG_libieee, "called"); libieee_unmap_oui36_iab(map_value, &bits_00_23, &bits_24_36); eui64addrp->addr[0] = (bits_00_23 & 0xff0000) >> 16; eui64addrp->addr[1] = (bits_00_23 & 0x00ff00) >> 8; eui64addrp->addr[2] = (bits_00_23 & 0x0000ff); eui64addrp->addr[3] = (bits_24_36 & 0x000ff0) >> 4; eui64addrp->addr[4] = (bits_24_36 & 0x00000f) << 4; eui64addrp->flag_valid = 1; return (0); }; ipv6calc-1.0.0/lib/libieee.h000066400000000000000000000027261312366535500155540ustar00rootroot00000000000000/* * Project : ipv6calc * File : libieee.h * Version : $Id: 5b1dbbf0408d8822f8431e292b3419d7fa51b1d4 $ * Copyright : 2002-2013 by Peter Bieringer * * Information: * Header file for libieee.c */ #include "ipv6calc_inttypes.h" #include "libmac.h" #include "libeui64.h" #ifndef _libieee_h #define _libieee_h /* Structure */ typedef struct { const uint32_t id; const char *string_owner; const char *shortstring_owner; } s_ieee_oui; typedef struct { const uint32_t id; const uint32_t subid_begin; const uint32_t subid_end; const char *string_owner; const char *shortstring_owner; } s_ieee_oui36; typedef struct { const uint32_t id; const uint32_t subid_begin; const uint32_t subid_end; const char *string_owner; const char *shortstring_owner; } s_ieee_iab; typedef struct { const uint32_t bits_00_23; const uint32_t mapping; } s_ieee_mapping; // internal map for IAB / OUI-36 lists /*@unused@*/ static const s_ieee_mapping ieee_mapping[] = { // IAB { 0x0050C2, 0x1 }, { 0x40D855, 0x2 }, // OUI36 { 0x001BC5, 0x9 } }; #endif extern uint32_t libieee_map_oui_macaddr(const ipv6calc_macaddr *macaddrp); extern uint32_t libieee_map_oui_eui64addr(const ipv6calc_eui64addr *eui64addrp); extern int libieee_unmap_oui_macaddr(ipv6calc_macaddr *macaddrp, uint32_t map_value); extern int libieee_unmap_oui_eui64addr(ipv6calc_eui64addr *eui64addrp, uint32_t map_value); extern int libieee_check_oui36_iab(const uint32_t bits_00_23); ipv6calc-1.0.0/lib/libifinet6.c000066400000000000000000000112371312366535500162010ustar00rootroot00000000000000/* * Project : ipv6calc * File : libifinet6.c * Version : $Id: cf5170a9c400981b3f98e159c9e4b57a958b6cee $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Function to converts a address string like shown in * Linux /proc/net/if_inet6 to IPv6 address structure * * some hints taken from ifconfig.c (net-tools) */ #include #include #include #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "libifinet6.h" /* * function formats an given Linux /proc/net/if_inet6 format to normal one * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int libifinet6_ifinet6_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1; char tempstring[NI_MAXHOST]; char addr6p[8][5]; DEBUGPRINT_WA(DEBUG_libifinet6, "Got input '%s'", addrstring); /* simple test */ if ( strlen(addrstring) != 32 ) { snprintf(resultstring, resultstring_length, "Error in given hex string, has not 32 chars!"); retval = 1; return (retval); }; /* scan address into array */ retval = sscanf(addrstring, "%4s%4s%4s%4s%4s%4s%4s%4s\n", addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7]); if ( retval != 8 ) { snprintf(resultstring, resultstring_length, "Error splitting string %s, got only %d items!", addrstring, retval); retval = 1; return (retval); }; /* print out into temp string */ snprintf(tempstring, sizeof(tempstring), "%s:%s:%s:%s:%s:%s:%s:%s", addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7]); DEBUGPRINT_WA(DEBUG_libifinet6, "Filled: %s", tempstring); /* fill structure */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, resultstring_length, ipv6addrp); return (retval); }; /* * function formats an given /proc/net/if_inet6 format to normal one with prefixlength * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int libifinet6_ifinet6_withprefixlength_to_ipv6addrstruct(const char *addrstring, const char *prefixlengthstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, result, tempint; char tempstring[NI_MAXHOST]; uint8_t prefixlength = 0; DEBUGPRINT_WA(DEBUG_libifinet6, "Got input addressstring: '%s', prefixlengthstring: '%s'", addrstring, prefixlengthstring); /* simple test on prefix length string*/ if ( strlen(prefixlengthstring) != 2 ) { snprintf(resultstring, resultstring_length, "Given prefixlength hex string '%s' has not 2 chars!", prefixlengthstring); retval = 1; return (retval); }; /* scan prefix length */ result = sscanf(prefixlengthstring, "%2x\n", &tempint); if ( result != 1 ) { snprintf(resultstring, resultstring_length, "error splitting string %s, got only %d items!", prefixlengthstring, result); retval = 1; return (retval); }; if ( (tempint < 0) || (tempint > 128) ) { snprintf(resultstring, resultstring_length, "decimal prefixlength '%d' out of range!", tempint); retval = 1; return (retval); }; prefixlength = (uint8_t) tempint; /* convert plain address */ result = libifinet6_ifinet6_to_ipv6addrstruct(addrstring, tempstring, sizeof(tempstring), ipv6addrp); if ( result != 0 ) { snprintf(resultstring, resultstring_length, "%s", tempstring); retval = 1; return (retval); }; /* set prefix length */ ipv6addrp->prefixlength = (uint8_t) prefixlength; ipv6addrp->flag_prefixuse = 1; DEBUGPRINT_WA(DEBUG_libifinet6, "Print: '%s'", resultstring); retval = 0; return (retval); }; /* * function formats an given IPv6 address to Linux /proc/net/if_inet6 format * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int libifinet6_ipv6addrstruct_to_ifinet6(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length) { int retval = 1; char tempstring[NI_MAXHOST]; /* print out array */ snprintf(tempstring, sizeof(tempstring), "%08x%08x%08x%08x %02x", (unsigned int) ipv6addr_getdword(ipv6addrp, 0), (unsigned int) ipv6addr_getdword(ipv6addrp, 1), (unsigned int) ipv6addr_getdword(ipv6addrp, 2), (unsigned int) ipv6addr_getdword(ipv6addrp, 3), (unsigned int) ipv6addrp->typeinfo & IPV6_ADDR_SCOPE_MASK); if ( (*ipv6addrp).flag_prefixuse == 1 ) { snprintf(resultstring, resultstring_length, "%s %02x", tempstring, (unsigned int) ipv6addrp->prefixlength); } else { snprintf(resultstring, resultstring_length, "%s", tempstring); }; DEBUGPRINT_WA(DEBUG_libifinet6, "print out: %s", resultstring); retval = 0; return (retval); }; ipv6calc-1.0.0/lib/libifinet6.h000066400000000000000000000014301312366535500162000ustar00rootroot00000000000000/* * Project : ipv6calc * File : libifinet6.h * Version : $Id: 00b7b95f1a6c90835db181557b65e3edf63a9c4e $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * Header file for libifinet6.c */ #include "libipv6addr.h" /* prototypes */ extern int libifinet6_ifinet6_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int libifinet6_ifinet6_withprefixlength_to_ipv6addrstruct(const char *addrstring, const char *prefixlengthstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int libifinet6_ipv6addrstruct_to_ifinet6(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length); ipv6calc-1.0.0/lib/libipaddr.c000066400000000000000000000046521312366535500161030ustar00rootroot00000000000000/* * Project : ipv6calc * File : libipaddr.c * Version : $Id: 88fd988adbd58f2a548f6fdd0364cd746c05e135 $ * Copyright : 2014-2015 by Peter Bieringer * * Information: * Function library for generic IPv4/6 address handling */ #include #include #include #include "config.h" #include "libipv6addr.h" #include "libipv4addr.h" #include "ipv6calctypes.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "librfc1884.h" /* * stores the ipaddr structure in an IPv4/6 string * * in: ipaddr = IPv4/6 address structure * out: *resultstring = IPv4/6 address (modified) * ret: ==0: ok, !=0: error */ int libipaddr_ipaddrstruct_to_string(const ipv6calc_ipaddr *ipaddrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; ipv6calc_ipv4addr ipv4addr; ipv6calc_ipv6addr ipv6addr; switch (ipaddrp->proto) { case IPV6CALC_PROTO_IPV4: ipv4addr_clearall(&ipv4addr); ipv4addr_setdword(&ipv4addr, ipaddrp->addr[0]); libipv4addr_ipv4addrstruct_to_string(&ipv4addr, resultstring, resultstring_length, formatoptions); break; case IPV6CALC_PROTO_IPV6: ipv6addr_clearall(&ipv6addr); ipv6addr_setdword(&ipv6addr, 0, ipaddrp->addr[0]); ipv6addr_setdword(&ipv6addr, 1, ipaddrp->addr[1]); ipv6addr_setdword(&ipv6addr, 2, ipaddrp->addr[2]); ipv6addr_setdword(&ipv6addr, 3, ipaddrp->addr[3]); if ((formatoptions & (FORMATOPTION_printuncompressed | FORMATOPTION_printfulluncompressed)) != 0) { libipv6addr_ipv6addrstruct_to_uncompaddr(&ipv6addr, resultstring, resultstring_length, formatoptions); } else { librfc1884_ipv6addrstruct_to_compaddr(&ipv6addr, resultstring, resultstring_length, formatoptions); }; break; default: ERRORPRINT_WA("unsupported proto=%d (FIX CODE)", ipaddrp->proto); exit(EXIT_FAILURE); break; }; DEBUGPRINT_WA(DEBUG_libipaddr, "result string: %s", resultstring); retval = 0; return (retval); }; /* * function clears the IPv6 structure * * mod: ipaddrp = pointer to IP address structure */ extern void libipaddr_clearall(ipv6calc_ipaddr *ipaddrp) { /* Clear IP address */ ipaddrp->addr[0] = 0; ipaddrp->addr[1] = 0; ipaddrp->addr[2] = 0; ipaddrp->addr[3] = 0; /* Clear IP address scope */ ipaddrp->scope = 0; /* Clear proto */ ipaddrp->proto = 0; /* Clear valid flag */ ipaddrp->flag_valid = 0; return; }; ipv6calc-1.0.0/lib/libipaddr.h000066400000000000000000000066651312366535500161160ustar00rootroot00000000000000/* * Project : ipv6calc * File : libipaddr.h * Version : $Id: f98da73ced7f20801671fa46ba0f2814501ce654 $ * Copyright : 2014-2017 by Peter Bieringer * * Information: * Header file for libipaddr.c */ #ifndef _libipaddr_h #define _libipaddr_h 1 /************** * Defines * ************/ /* IPv4/6 address storage structure */ typedef struct { uint32_t addr[4]; /* 4x 32-bit, IPv4: only addr[0] used, addr[1-3]=0 */ uint32_t scope; /* address typeinfo/scope */ uint8_t proto; /* protocol */ uint8_t flag_valid; /* address structure filled */ // uint8_t prefixlength; /* prefix length (0-128) 8 bit*/ TODO LATER // uint8_t flag_prefixuse; /* =1 prefix length in use */ TODO LATER uint32_t typeinfo1; /* typeinfo 1 */ uint32_t typeinfo2; /* typeinfo 2 */ } ipv6calc_ipaddr; /************** * Macros * ************/ /* ipv4addr ptr -> ipaddr */ #define CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr) \ ipaddr.typeinfo1 = (*ipv4addrp).typeinfo; \ ipaddr.typeinfo2 = (*ipv4addrp).typeinfo2; \ ipaddr.addr[0] = ipv4addr_getdword(ipv4addrp); \ ipaddr.addr[1] = 0; \ ipaddr.addr[2] = 0; \ ipaddr.addr[3] = 0; \ ipaddr.flag_valid = 1; \ ipaddr.proto = IPV6CALC_PROTO_IPV4; /* ipv4addr ptr -> ipaddr ptr */ #define CONVERT_IPV4ADDRP_IPADDRP(ipv4addrp, ipaddrp) \ ipaddrp->typeinfo1 = ipv4addrp->typeinfo; \ ipaddrp->typeinfo2 = ipv4addrp->typeinfo2; \ ipaddrp->addr[0] = ipv4addr_getdword(ipv4addrp); \ ipaddrp->addr[1] = 0; \ ipaddrp->addr[2] = 0; \ ipaddrp->addr[3] = 0; \ ipaddrp->flag_valid = 1; \ ipaddrp->proto = IPV6CALC_PROTO_IPV4; /* ipv6addr ptr -> ipaddr */ #define CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr) \ ipaddr.typeinfo1 = (*ipv6addrp).typeinfo; \ ipaddr.typeinfo2 = (*ipv6addrp).typeinfo2; \ ipaddr.addr[0] = ipv6addr_getdword(ipv6addrp, 0); \ ipaddr.addr[1] = ipv6addr_getdword(ipv6addrp, 1); \ ipaddr.addr[2] = ipv6addr_getdword(ipv6addrp, 2); \ ipaddr.addr[3] = ipv6addr_getdword(ipv6addrp, 3); \ ipaddr.flag_valid = 1; \ ipaddr.proto = IPV6CALC_PROTO_IPV6; /* ipv6addr ptr -> ipaddr ptr */ #define CONVERT_IPV6ADDRP_IPADDRP(ipv6addrp, ipaddrp) \ ipaddrp->typeinfo1 = ipv6addrp->typeinfo; \ ipaddrp->typeinfo2 = ipv6addrp->typeinfo2; \ ipaddrp->addr[0] = ipv6addr_getdword(ipv6addrp, 0); \ ipaddrp->addr[1] = ipv6addr_getdword(ipv6addrp, 1); \ ipaddrp->addr[2] = ipv6addr_getdword(ipv6addrp, 2); \ ipaddrp->addr[3] = ipv6addr_getdword(ipv6addrp, 3); \ ipaddrp->flag_valid = 1; \ ipaddrp->proto = IPV6CALC_PROTO_IPV6; /* ipaddr ptr -> ipv4addr */ #define CONVERT_IPADDRP_IPV4ADDR(ipaddrp, ipv4addr) \ ipv4addr_clearall(&ipv4addr); \ ipv4addr_setdword(&ipv4addr, ipaddrp->addr[0]); \ ipv4addr.typeinfo = ipaddrp->typeinfo1; \ ipv4addr.typeinfo2 = ipaddrp->typeinfo2; \ ipv4addr.flag_valid = 1; /* ipaddr ptr -> ipv6addr */ #define CONVERT_IPADDRP_IPV6ADDR(ipaddrp, ipv6addr) \ ipv6addr_clearall(&ipv6addr); \ ipv6addr_setdword(&ipv6addr, 0, ipaddrp->addr[0]); \ ipv6addr_setdword(&ipv6addr, 1, ipaddrp->addr[1]); \ ipv6addr_setdword(&ipv6addr, 2, ipaddrp->addr[2]); \ ipv6addr_setdword(&ipv6addr, 3, ipaddrp->addr[3]); \ ipv6addr.typeinfo = ipaddrp->typeinfo1; \ ipv6addr.typeinfo2 = ipaddrp->typeinfo2; \ ipv6addr.flag_valid = 1; #endif extern int libipaddr_ipaddrstruct_to_string(const ipv6calc_ipaddr *ipaddrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern void libipaddr_clearall(ipv6calc_ipaddr *ipaddrp); ipv6calc-1.0.0/lib/libipv4addr.c000066400000000000000000001366221312366535500163600ustar00rootroot00000000000000/* * Project : ipv6calc/lib * File : libipv4addr.c * Version : $Id: 777404b2dc6fbef4d32bc2be054dbc35fe0f38a3 $ * Copyright : 2002-2017 by Peter Bieringer except the parts taken from kernel source * License : GNU GPL v2 * * Information: * Function library for IPv4 address handling */ #include #include #include #include #include "config.h" #include "libipv4addr.h" #include "ipv6calctypes.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "../databases/lib/libipv6calc_db_wrapper.h" /* * function returns an octet of an IPv4 address * * in: ipv4addrp = pointer to IPv4 address structure * in: numoctet = number of octet (0 = MSB, 3 = LSB) * additional: calls exit on out of range */ uint8_t ipv4addr_getoctet(const ipv6calc_ipv4addr *ipv4addrp, const unsigned int numoctet) { uint8_t retval; if ( numoctet > 3 ) { ERRORPRINT_WA("given octet number '%u' is out of range!\n", numoctet); exit(EXIT_FAILURE); }; retval = (uint8_t) ( (ipv4addrp->in_addr.s_addr >> ( numoctet << 3)) & 0xff ); return (retval); }; /* * function returns a word of an IPv4 address * * in: ipv6addrp = pointer to IPv4 address structure * in: numword = number of word (0 = MSB, 1 = LSB) * additional: calls exit on out of range */ uint16_t ipv4addr_getword(const ipv6calc_ipv4addr *ipv4addrp, const unsigned int numword) { uint16_t retval; if ( numword > 1 ) { ERRORPRINT_WA("given word number '%u' is out of range!", numword); exit(EXIT_FAILURE); }; retval = (uint16_t) ( (ipv4addr_getoctet(ipv4addrp, (numword << 1)) << 8 ) | ipv4addr_getoctet(ipv4addrp, (numword << 1) + 1) ); return (retval); }; /* * function returns a dword of an IPv4 address * * in: ipv4addrp = pointer to IPv4 address structure * additional: calls exit on out of range */ uint32_t ipv4addr_getdword(const ipv6calc_ipv4addr *ipv4addrp) { uint32_t retval; retval = (uint32_t) ( (ipv4addr_getword(ipv4addrp, 0) << 16) | ipv4addr_getword(ipv4addrp, 1) ); return (retval); }; /* * function sets an octet of an IPv4 address * * mod: ipv4addrp = pointer to IPv4 address structure * in: numoctet = number of word (0 = MSB, 3 = LSB) * in: value = value to set * additional: calls exit on out of range */ void ipv4addr_setoctet(ipv6calc_ipv4addr *ipv4addrp, const unsigned int numoctet, const uint8_t value) { if ( numoctet > 3 ) { ERRORPRINT_WA("given octet number '%u' is out of range!", numoctet); exit(EXIT_FAILURE); }; ipv4addrp->in_addr.s_addr &= ~ (0xff << (numoctet << 3) ); ipv4addrp->in_addr.s_addr |= (value & 0xff) << (numoctet << 3); return; }; /* * function sets a word of an IPv4 address * * mod: ipv4addrp = pointer to IPv4 address structure * in: numword = number of word (0 = MSB, 1 = LSB) * in: value = value to set * additional: calls exit on out of range */ void ipv4addr_setword(ipv6calc_ipv4addr *ipv4addrp, const unsigned int numword, const uint16_t value) { unsigned int n; unsigned int v; if ( numword > 1 ) { ERRORPRINT_WA("given word number '%u' is out of range!", numword); exit(EXIT_FAILURE); }; n = numword << 1; v = (value & 0xff00) >> 8; DEBUGPRINT_WA(DEBUG_libipv4addr, "set octet %u: %02x (%u %04x)", n, v, numword, value); ipv4addr_setoctet(ipv4addrp, n, v); n = (numword << 1) + 1; v = value & 0xff; DEBUGPRINT_WA(DEBUG_libipv4addr, "set octet %u: %02x (%u %04x)", n, v, numword, value); ipv4addr_setoctet(ipv4addrp, n, v); return; }; /* * function sets a dword of an IPv4 address * * mod: ipv4addrp = pointer to IPv4 address structure * in: value = value to set * additional: calls exit on out of range */ void ipv4addr_setdword(ipv6calc_ipv4addr *ipv4addrp, const uint32_t value) { unsigned int n; unsigned int v; if ( value > 0xffffffffu ) { ERRORPRINT_WA("given value '%x' is out of range!", value); exit(EXIT_FAILURE); }; n = 0; v = (value & 0xffff0000u) >> 16; DEBUGPRINT_WA(DEBUG_libipv4addr, "set word %u: %04x (%08x)", n, v, value); ipv4addr_setword(ipv4addrp, n, v); n = 1; v = value & 0xffffu; DEBUGPRINT_WA(DEBUG_libipv4addr, "set word %u: %04x (%08x)", n, v, value); ipv4addr_setword(ipv4addrp, n, v); return; }; /* * function clears the IPv4 structure * * mod: ipv4addrp = pointer to IPv4 address structure */ void ipv4addr_clear(ipv6calc_ipv4addr *ipv4addrp) { ipv4addrp->in_addr.s_addr = 0; /* Clear valid flag */ ipv4addrp->flag_valid = 0; /* Clear test mode */ ipv4addrp->test_mode = 0; return; }; /* * function clears the IPv4 structure * * mod: ipv4addrp = pointer to IPv4 address structure */ void ipv4addr_clearall(ipv6calc_ipv4addr *ipv4addrp) { ipv4addr_clear(ipv4addrp); (*ipv4addrp).prefixlength = 0; (*ipv4addrp).flag_prefixuse = 0; return; }; /* * function copies the IPv4 structure * * in: ipv4addrp_src = pointer to IPv4 address structure * mod: ipv4addrp_dst = pointer to IPv4 address structure */ void ipv4addr_copy(ipv6calc_ipv4addr *ipv4addrp_dst, const ipv6calc_ipv4addr *ipv4addrp_src) { *(ipv4addrp_dst) = *(ipv4addrp_src); return; }; /* * function compares the IPv4 structure * * in: ipv4addrp1 = pointer to IPv4 address structure * in: ipv4addrp2 = pointer to IPv4 address structure * in: compare_flags: * 0=less than/equal/greater than * 1=honor prefix length of addr2 * returns: 0: addr2 equal with addr1, 1: addr1 > addr2, -1: addr1 < addr2 (compare_flags == 0) * returns: 0: addr1 equal with addr2 or covered by addr2/prefix (compare_flags == 1) */ int ipv4addr_compare(const ipv6calc_ipv4addr *ipv4addrp1, const ipv6calc_ipv4addr *ipv4addrp2, const uint16_t compare_flags) { uint32_t ipv4addr1 = ipv4addr_getdword(ipv4addrp1); uint32_t ipv4addr2 = ipv4addr_getdword(ipv4addrp2); DEBUGPRINT_WA(DEBUG_libipv4addr, "compare addr1 with addr2 0x%08x/%d 0x%08x/%d (compare flags: %08x)", ipv4addr1, ipv4addrp1->prefixlength, ipv4addr2, ipv4addrp2->prefixlength, compare_flags); if (compare_flags == 1) { // honors prefix of addr2 if (ipv4addrp2->flag_prefixuse == 1) { /* mask addr2 with prefix length of addr1 */ ipv4addr1 &= (0xffffffffu << ((unsigned int) 32 - ipv4addrp2->prefixlength)); /* mask addr1 with prefix length of addr1 */ ipv4addr2 &= (0xffffffffu << ((unsigned int) 32 - ipv4addrp2->prefixlength)); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "compare addr1 with addr2 0x%08x 0x%08x (after masking with prefix length of addr2)", ipv4addr1, ipv4addr2); if (ipv4addr1 != ipv4addr2) { return(1); }; } else if (compare_flags == 0) { if (ipv4addr1 > ipv4addr2) { return(1); } else if (ipv4addr1 < ipv4addr2) { return(-1); } else { }; }; return(0); }; /* * Set type of an IPv4 address * * in: ipv4addrp = pointer to IPv4 address structure * flag_reset = 1: redetect type */ void ipv4addr_settype(ipv6calc_ipv4addr *ipv4addrp, int flag_reset) { uint32_t typeinfo = 0, typeinfo2 = 0; if (flag_reset == 1) { ipv4addrp->flag_typeinfo = 0; }; if (ipv4addrp->flag_typeinfo == 0) { //typeinfo = ipv4addr_gettype(ipv4addrp, &typeinfo2); typeinfo = ipv4addr_gettype(ipv4addrp); ipv4addrp->typeinfo = typeinfo; ipv4addrp->typeinfo2 = typeinfo2; ipv4addrp->flag_typeinfo = 1; }; return; }; /* * function gets type of an IPv4 address */ uint32_t ipv4addr_gettype(const ipv6calc_ipv4addr *ipv4addrp) { uint32_t type = 0, c, p; uint32_t ipv4 = ipv4addr_getdword(ipv4addrp); int i; DEBUGPRINT_WA(DEBUG_libipv4addr, "Got IPv4 address: 0x%08x", ipv4); /* check for anonymized IPv4 address */ if ((ipv4 & 0xf0000000u) == 0xf0000000u) { DEBUGPRINT_NA(DEBUG_libipv4addr, "Check for anonymized IPv4 address"); // count payload bits c = 0; p = 0x00000001; for (i = 0; i < 27; i++) { if ((ipv4 & p) != 0) { c++; }; p <<= 1; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "Check for anonymized address, parity count c=%d", c); if (((c & 0x1) ^ 0x1) == ((ipv4 >> 27) & 0x1)) { // check country code (limited value) p = (ipv4 >> 17) & 0x3ff; if ((p <= COUNTRYCODE_INDEX_LETTER_MAX) || (p == COUNTRYCODE_INDEX_UNKNOWN) || ((p >= COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN) && (p <= COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MAX))) { DEBUGPRINT_NA(DEBUG_libipv4addr, "Address is an anonymized one"); type = IPV4_ADDR_ANONYMIZED | IPV4_ADDR_UNICAST| IPV4_ADDR_GLOBAL; if ((ipv4 & 0x11800) == 0x11800) { DEBUGPRINT_NA(DEBUG_libipv4addr, "Address is a LISP unicast one"); type |= IPV4_ADDR_LISP; }; goto END_ipv4addr_gettype; }; } else { DEBUGPRINT_NA(DEBUG_libipv4addr, "Address is not an detected anonymized one"); }; }; if (ipv4 == 0x00000000u) { type = IPV4_ADDR_UNSPECIFIED; } else if ((ipv4 & 0xff000000u) == 0x0a000000u) { // 10.0.0.0/8 (RFC 1918) type = IPV4_ADDR_UNICAST | IPV4_ADDR_SITELOCAL; } else if ((ipv4 & 0xffc00000u) == 0x64400000u) { // 100.64.0.0/10 (RFC 6598) type = IPV4_ADDR_UNICAST | IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xff000000u) == 0x7f000000u) { // 127.0.0.0/8 (RFC 1122) type = IPV4_ADDR_LOOPBACK; } else if ((ipv4 & 0xffff0000u) == 0xa9fe0000u) { // 169.254.0.0/16 (RFC 1918) type = IPV4_ADDR_UNICAST | IPV4_ADDR_ZEROCONF | IPV4_ADDR_SITELOCAL; } else if ((ipv4 & 0xfff00000u) == 0xac100000u) { // 172.16.0.0/12 (RFC 1918) type = IPV4_ADDR_UNICAST | IPV4_ADDR_SITELOCAL; } else if ((ipv4 & 0xffff0000u) == 0xc0a80000u) { // 192.168.0.0/16 (RFC 1918) type = IPV4_ADDR_UNICAST | IPV4_ADDR_SITELOCAL; } else if ((ipv4 & 0xffffff00u) == 0xc0000000u) { // 192.0.0.0/24 (RFC 5736) type = IPV4_ADDR_UNICAST | IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xffffff00u) == 0xc0000200u) { // 192.0.2.0/24 (RFC 3330) type = IPV4_ADDR_UNICAST | IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xffffff00u) == 0xc0586300u) { // 192.88.99.0/24 (RFC 3068) type = IPV4_ADDR_ANYCAST | IPV4_ADDR_6TO4RELAY; } else if ((ipv4 & 0xfffe0000u) == 0xc6120000u) { // 198.18.0.0/15 (RFC 2544) type = IPV4_ADDR_UNICAST | IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xffffff00u) == 0xc6336400u) { // 198.51.100.0/24 (RFC 5737) type = IPV4_ADDR_UNICAST | IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xffffff00u) == 0xcb007100u) { // 203.0.113.0/24 (RFC 5737) type = IPV4_ADDR_UNICAST | IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xffff0000u) == 0x99100000u) { // 153.16.0.0/16 (RFC6830) type = IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL | IPV4_ADDR_LISP; } else if ((ipv4 & 0xffffff00u) == 0xc169b700u) { // 193.105.183.0/24 (RFC6830) type = IPV4_ADDR_ANYCAST | IPV4_ADDR_GLOBAL | IPV4_ADDR_LISP | IPV4_ADDR_LISP_PETR; } else if ((ipv4 & 0xffffff00u) == 0x5bdcc900u) { // 91.220.201.0/24 (RFC6830) type = IPV4_ADDR_ANYCAST | IPV4_ADDR_GLOBAL | IPV4_ADDR_LISP | IPV4_ADDR_LISP_MAP_RESOLVER; } else if ((ipv4 & 0xf0000000u) == 0xe0000000u) { // 224.0.0.0/4 (RFC 3171) type = IPV4_ADDR_MULTICAST; } else if ((ipv4 & 0xffffffffu) == 0xffffffffu) { // 255.255.255.255/32 type = IPV4_ADDR_BROADCAST; } else if ((ipv4 & 0xff000000u) == 0x00000000u) { // 0.0.0.0/8 type = IPV4_ADDR_RESERVED; } else if ((ipv4 & 0xf0000000u) == 0xf0000000u) { // 240.0.0.0/4 (RFC 1112) type = IPV4_ADDR_RESERVED; } else { type = IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "return typeinfo: 0x%08x", type); END_ipv4addr_gettype: return(type); }; /* * function stores an IPv4 address string into a structure * * in : *addrstring = IPv4 address * out: *resultstring = error message * out: ipv4addrp = changed IPv4 address structure * ret: ==0: ok, !=0: error */ int addr_to_ipv4addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv4addr *ipv4addrp) { int retval = 1, result, i; unsigned int cpoints = 0, cdigits = 0; char *addronlystring, *cp; int expecteditems = 0; int compat[4]; char tempstring[NI_MAXHOST], *cptr, **ptrptr; uint32_t typeinfo; ptrptr = &cptr; resultstring[0] = '\0'; /* clear result string */ DEBUGPRINT_WA(DEBUG_libipv4addr, "Got input '%s'", addrstring); if ((strlen(addrstring) < 7) || (strlen(addrstring) > 18)) { /* min: 0.0.0.0 */ /* max: 123.123.123.123/32 */ snprintf(resultstring, resultstring_length, "Error in given dot notated IPv4 address, has not 7 to 18 chars!"); return (1); }; if (strlen(addrstring) >= sizeof(tempstring)) { ERRORPRINT_WA("Input too long: %s", addrstring); return (1); }; snprintf(tempstring, sizeof(tempstring), "%s", addrstring); ipv4addr_clearall(ipv4addrp); /* save prefix length first, if available */ addronlystring = strtok_r(tempstring, "/", ptrptr); if ( addronlystring == NULL ) { fprintf(stderr, "Strange input: %s\n", addrstring); return (1); }; cp = strtok_r(NULL, "/", ptrptr); if ( cp != NULL ) { i = atoi(cp); if (i < 0 || i > 32 ) { snprintf(resultstring, resultstring_length, "Illegal prefix length: '%s'", cp); retval = 1; return (retval); }; ipv4addrp->flag_prefixuse = 1; ipv4addrp->prefixlength = (uint8_t) i; DEBUGPRINT_WA(DEBUG_libipv4addr, "prefix length %u", (unsigned int) ipv4addrp->prefixlength); DEBUGPRINT_WA(DEBUG_libipv4addr, "flag_prefixuse %d", ipv4addrp->flag_prefixuse); }; /* count "." and digits */ for (i = 0; i < (int) strlen(addronlystring); i++) { if (addronlystring[i] == '.') { cpoints++; }; if (isdigit(addronlystring[i])) { cdigits++; }; }; /* check amount of ".", must be 3 */ if ( cpoints != 3 ) { snprintf(resultstring, resultstring_length, "Error in given IPv4 address, '%s' is not valid (only %d dots)!", addronlystring, cpoints); retval = 1; return (retval); }; /* amount of "." and digits must be length */ if (cdigits + cpoints != strlen(addronlystring)) { snprintf(resultstring, resultstring_length, "Error in given IPv4 address, '%s' is not valid (illegal chars)!", addronlystring); retval = 1; return (retval); }; /* clear variables */ for ( i = 0; i <= 3; i++ ) { compat[i] = 0; }; expecteditems = 4; result = sscanf(addronlystring, "%d.%d.%d.%d", &compat[0], &compat[1], &compat[2], &compat[3]); for ( i = 0; i <= 3; i++ ) { if ( ( compat[i] < 0 ) || ( compat[i] > 255 ) ) { snprintf(resultstring, resultstring_length, "Error in given IPv4 address, '%s' is not valid (%d on position %d)!", addronlystring, compat[i], i+1); retval = 1; return (retval); }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "reading into array, got items: %d", result); if ( result != expecteditems ) { snprintf(resultstring, resultstring_length, "Error in given IPv4 address, splitting of %s returns %d items instead of %d!", addronlystring, result, expecteditems); retval = 1; return (retval); }; /* copy into structure */ for ( i = 0; i <= 3; i++ ) { DEBUGPRINT_WA(DEBUG_libipv4addr, "Octett %d = %d", i, compat[i]); ipv4addr_setoctet(ipv4addrp, (unsigned int) i, (unsigned int) compat[i]); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "In structure %03u %03u %03u %03u", (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), (unsigned int) ipv4addr_getoctet(ipv4addrp, 3)); DEBUGPRINT_WA(DEBUG_libipv4addr, "In structure %8x", (unsigned int) ipv4addr_getdword(ipv4addrp)); typeinfo = ipv4addr_gettype(ipv4addrp); DEBUGPRINT_WA(DEBUG_libipv4addr, "Got typeinfo: 0x%08x", typeinfo); ipv4addrp->typeinfo = typeinfo; ipv4addrp->flag_valid = 1; retval = 0; return (retval); }; /* * function stores an IPv4 hexadecimal string into a structure * * in : *addrstring = IPv4 address in hex format * out: *resultstring = error message * out: ipv4addrp = changed IPv4 address structure * ret: ==0: ok, !=0: error */ int addrhex_to_ipv4addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv4addr *ipv4addrp, const int flag_reverse) { int retval = 1, result, i; char *addronlystring, *cp; int expecteditems = 0; int compat[4]; char tempstring[NI_MAXHOST], *cptr, **ptrptr; uint32_t typeinfo; ptrptr = &cptr; resultstring[0] = '\0'; /* clear result string */ DEBUGPRINT_WA(DEBUG_libipv4addr, "Got input '%s'", addrstring); if ((strlen(addrstring) < 7) || (strlen(addrstring) > 11)) { /* min: ffffffff */ /* max: ffffffff/32 */ snprintf(resultstring, resultstring_length, "Error in given hex notated IPv4 address, has not 7 to 11 chars!"); return (1); }; if (strlen(addrstring) >= sizeof(tempstring)) { ERRORPRINT_WA("Input too long: %s", addrstring); return (1); }; snprintf(tempstring, sizeof(tempstring), "%s", addrstring); ipv4addr_clearall(ipv4addrp); /* save prefix length first, if available */ addronlystring = strtok_r(tempstring, "/", ptrptr); cp = strtok_r(NULL, "/", ptrptr); if ( cp != NULL ) { i = atoi(cp); if (i < 0 || i > 32 ) { snprintf(resultstring, resultstring_length, "Error in given hex notated IPv4 address, illegal prefix length: '%s'", cp); retval = 1; return (retval); }; ipv4addrp->flag_prefixuse = 1; ipv4addrp->prefixlength = (uint8_t) i; DEBUGPRINT_WA(DEBUG_libipv4addr, "prefix length %u", (unsigned int) ipv4addrp->prefixlength); DEBUGPRINT_WA(DEBUG_libipv4addr, "flag_prefixuse %d", ipv4addrp->flag_prefixuse); }; /* check length 3 */ if ((flag_reverse == 0 && (strlen(addronlystring) < 7 || strlen(addronlystring) > 8)) || (flag_reverse != 0 && strlen(addronlystring) != 8)) { snprintf(resultstring, resultstring_length, "Error in given hex notated IPv4 address, '%s' is not valid (not proper length)!", addronlystring); retval = 1; return (retval); }; /* clear variables */ for ( i = 0; i <= 3; i++ ) { compat[i] = 0; }; expecteditems = 4; if (flag_reverse != 0) { result = sscanf(addronlystring, "%2x%2x%2x%2x", &compat[3], &compat[2], &compat[1], &compat[0]); } else { if (strlen(addronlystring) == 7) { result = sscanf(addronlystring, "%1x%2x%2x%2x", &compat[0], &compat[1], &compat[2], &compat[3]); } else { result = sscanf(addronlystring, "%2x%2x%2x%2x", &compat[0], &compat[1], &compat[2], &compat[3]); }; }; for ( i = 0; i <= 3; i++ ) { if ( ( compat[i] < 0 ) || ( compat[i] > 255 ) ) { snprintf(resultstring, resultstring_length, "Error in given hex notated IPv4 address, '%s' is not valid (%d on position %d)!", addronlystring, compat[i], i+1); retval = 1; return (retval); }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "reading into array, got items: %d", result); if ( result != expecteditems ) { snprintf(resultstring, resultstring_length, "Error in given hex notated IPv4 address, splitting '%s' returns %d items instead of %d!", addronlystring, result, expecteditems); retval = 1; return (retval); }; /* copy into structure */ for ( i = 0; i <= 3; i++ ) { DEBUGPRINT_WA(DEBUG_libipv4addr, "Octett %d = %d", i, compat[i]); ipv4addr_setoctet(ipv4addrp, (unsigned int) i, (unsigned int) compat[i]); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "In structure %03u %03u %03u %03u", (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), (unsigned int) ipv4addr_getoctet(ipv4addrp, 3)); DEBUGPRINT_WA(DEBUG_libipv4addr, "In structure %8x", (unsigned int) ipv4addr_getdword(ipv4addrp)); typeinfo = ipv4addr_gettype(ipv4addrp); DEBUGPRINT_WA(DEBUG_libipv4addr, "Got typeinfo: 0x%08x", typeinfo); ipv4addrp->typeinfo = typeinfo; ipv4addrp->flag_valid = 1; retval = 0; return (retval); }; /* * stores the ipv4addr structure in a string * * in: ipv4addr = IPv4 address structure * out: *resultstring = IPv4 address string * ret: ==0: ok, !=0: error */ int libipv4addr_ipv4addrstruct_to_string(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { char tempstring[NI_MAXHOST]; /* address */ snprintf(tempstring, sizeof(tempstring), "%u.%u.%u.%u", (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), (unsigned int) ipv4addr_getoctet(ipv4addrp, 3)); if ((formatoptions & FORMATOPTION_machinereadable) != 0) { snprintf(resultstring, resultstring_length, "IPV4=%s", tempstring); } else { if (ipv4addrp->flag_prefixuse == 1) { snprintf(resultstring, resultstring_length, "%s/%d", tempstring, ipv4addrp->prefixlength); } else { snprintf(resultstring, resultstring_length, "%s", tempstring); }; }; /* netmask/prefixlength */ if (ipv4addrp->flag_prefixuse == 1) { /* to be filled */ /* IPV4NETMASK= */ }; return(0); }; /* * converts IPv4addr_structure to a reverse decimal format string * * in : *ipv4addrp = IPv4 address structure * out: *resultstring = result * ret: ==0: ok, !=0: error */ int libipv4addr_to_reversestring(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; uint8_t octet; int bit_start, bit_end, nbit; char tempstring[NI_MAXHOST]; unsigned int noctet; if ( ((formatoptions & (FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_printstart | FORMATOPTION_printend)) == 0 ) && ((*ipv4addrp).flag_prefixuse != 0) ) { bit_start = 1; bit_end = (int) (*ipv4addrp).prefixlength; } else { bit_start = 1; bit_end = 32; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "start bit %d end bit %d", bit_start, bit_end); /* print out nibble format */ /* 31 is lowest bit, 0 is highest bit */ resultstring[0] = '\0'; for (nbit = bit_end - 1; nbit >= bit_start - 1; nbit = nbit - 8) { /* calculate octet (8 bit) */ noctet = ( ((unsigned int) nbit) & 0x78) >> 3; /* extract octet */ octet = ipv4addr_getoctet(ipv4addrp, noctet); DEBUGPRINT_WA(DEBUG_libipv4addr, "bit: %d = noctet: %u, value: %x", nbit, noctet, (unsigned int) octet); snprintf(tempstring, sizeof(tempstring), "%s%u", resultstring, (unsigned int) octet); snprintf(resultstring, resultstring_length, "%s.", tempstring); }; if (bit_start == 1) { snprintf(tempstring, sizeof(tempstring), "%sin-addr.arpa.", resultstring); }; snprintf(resultstring, resultstring_length, "%s", tempstring); if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; if ( (formatoptions & FORMATOPTION_printmirrored) != 0 ) { string_to_reverse_dotted(resultstring, resultstring_length); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "Print out: %s", resultstring); retval = 0; return (retval); }; /* * function prints an IPv4 address in native octal format * * in: ipv4addr = IPv4 address structure * formatoptions * out: *resultstring = IPv4 address (modified) * ret: ==0: ok, !=0: error */ int libipv4addr_to_octal(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; char tempstring[NI_MAXHOST]; if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring, sizeof(tempstring), "\\0%03o\\0%03o\\0%03o\\0%03o", (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 3) \ ); } else { snprintf(tempstring, sizeof(tempstring), "\\0%o\\0%o\\0%o\\0%o", (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 3) \ ); }; snprintf(resultstring, resultstring_length, "%s", tempstring); retval = 0; return (retval); }; /* * function prints an IPv4 address in native hex format * * in: ipv4addr = IPv4 address structure * formatoptions * out: *resultstring = IPv4 address (modified) * ret: ==0: ok, !=0: error */ int libipv4addr_to_hex(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { DEBUGPRINT_WA(DEBUG_libipv4addr, "called, formatoptions=0x%08x", formatoptions); int retval = 1; int i; unsigned int s; char tempstring[NI_MAXHOST]; snprintf(tempstring, sizeof(tempstring), "%02x%02x%02x%02x", (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), \ (unsigned int) ipv4addr_getoctet(ipv4addrp, 3) \ ); snprintf(resultstring, resultstring_length, "%s", tempstring); if ((formatoptions & FORMATOPTION_printprefix) && (ipv4addrp->flag_prefixuse == 1)) { // shorten string resultstring[ipv4addrp->prefixlength / 4] = '\0'; } else if ((formatoptions & FORMATOPTION_printsuffix) && (ipv4addrp->flag_prefixuse == 1)) { // move string for (i = 0; i < 8 - (ipv4addrp->prefixlength / 4); i++) { resultstring[i] = resultstring[i + (ipv4addrp->prefixlength / 4)]; }; resultstring[8 - (ipv4addrp->prefixlength / 4)] = '\0'; }; if (formatoptions & FORMATOPTION_printuppercase) { for (s = 0; s < strlen(resultstring); s++) { resultstring[s] = toupper(resultstring[s]); }; }; retval = 0; return (retval); }; /* * anonymize IPv4 address * * in : *ipv4addrp = IPv4 address structure * mask = number of bits of mask * method = 2:zeroize 1:map to CountryCode and AS * ret: 0:anonymization ok * 1:anonymization method not supported */ int libipv4addr_anonymize(ipv6calc_ipv4addr *ipv4addrp, unsigned int mask, const int method) { DEBUGPRINT_WA(DEBUG_libipv4addr, "called, method=%d mask=%d type=0x%08x", method, mask, ipv4addrp->typeinfo); /* anonymize IPv4 address according to settings */ uint32_t as_num32, as_num32_comp17, as_num32_decomp17, ipv4addr_anon, p; uint16_t cc_index, c; ipv6calc_ipaddr ipaddr; int i; ipv4addr_settype(ipv4addrp, 0); // set typeinfo if not already done if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "skip already anonymized address"); } else if ((ipv4addrp->typeinfo & IPV4_ADDR_BROADCAST) != 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "skip anonymize (broadcast address)"); } else if ((method != ANON_METHOD_KEEPTYPEASNCC) || ((ipv4addrp->typeinfo & (IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL)) != (IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL))) { // not ANON_METHOD_KEEPTYPEASNCC or not a global address if (((ipv4addrp->typeinfo & IPV4_ADDR_ANYCAST) != 0) && ((ipv4addrp->typeinfo & IPV4_ADDR_LISP) != 0)) { if (mask < 24) { mask = 24; // keeping address type }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Mask adjusted to: %d", mask); }; DEBUGPRINT_NA(DEBUG_libipv4addr, "anonymize by masking"); if (mask == 0) { /* clear IPv4 address: 0.0.0.0 */ ipv4addr_clear(ipv4addrp); ipv4addrp->flag_valid = 1; } else if (mask == 32) { /* nothing to do */ } else if (mask < 1 || mask > 31) { /* should not happen here */ fprintf(stderr, "%s/%s: 'mask' has an unexpected illegal value!\n", __FILE__, __func__); exit(EXIT_FAILURE); } else { /* quick mode */ if (mask == 24) { ipv4addr_setoctet(ipv4addrp, 3, 0u); } else if (mask == 16) { ipv4addr_setword(ipv4addrp, 1, 0u); } else if (mask == 8) { ipv4addr_setword(ipv4addrp, 1, 0u); ipv4addr_setoctet(ipv4addrp, 1, 0u); } else { /* mask IPv4 address */ ipv4addr_setdword(ipv4addrp, ipv4addr_getdword(ipv4addrp) & (0xffffffffu << ((unsigned int) 32 - mask))); }; }; } else { /* check for required database support */ if (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB) == 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "anonymization method not supported, db_wrapper reports too less features"); return(1); }; DEBUGPRINT_NA(DEBUG_libipv4addr, "anonymize by keep information"); CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr); if (((ipv4addrp->typeinfo & IPV4_ADDR_UNICAST) != 0) && ((ipv4addrp->typeinfo & IPV4_ADDR_LISP) != 0)) { as_num32_comp17 = 0x11800; as_num32_comp17 |= (libipv6calc_db_wrapper_registry_num_by_ipv4addr(ipv4addrp) & 0x7) << 12; as_num32_comp17 |= 0x000; // TODO: map LISP information into 11 LSB } else { // get AS number as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(&ipaddr); DEBUGPRINT_WA(DEBUG_libipv4addr, "result of AS number retrievement: 0x%08x (%d)", as_num32, as_num32); as_num32_comp17 = libipv6calc_db_wrapper_as_num32_comp17(as_num32); DEBUGPRINT_WA(DEBUG_libipv4addr, "result of AS number compression: 0x%05x", as_num32_comp17); as_num32_decomp17 = libipv6calc_db_wrapper_as_num32_decomp17(as_num32_comp17); DEBUGPRINT_WA(DEBUG_libipv4addr, "result of AS number decompression: 0x%08x (%d)", as_num32_decomp17, as_num32_decomp17); }; // get countrycode cc_index = libipv6calc_db_wrapper_cc_index_by_addr(&ipaddr, NULL); if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { // on unknown country, map registry value cc_index = COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN + libipv6calc_db_wrapper_registry_num_by_ipv4addr(ipv4addrp); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "result of CountryCode index retrievement: 0x%03x (%d)", cc_index, cc_index); // 0-3 ( 4 bits) : prefix 0xf0 // 4 ( 1 bit ) : parity bit (odd parity) // 5-14 (10 bits) : country code index // 15 ( 1 bits) : ASN flag // 16-31 (16 bits) : ASN16 or packed ASN32 // ipv4addr_anon = 0xf0000000 | ((cc_index << 17) & 0x07fe0000 ) | (as_num32_comp17 & 0x0001ffff); // create parity bits c = 0; p = 0x00000001; for (i = 0; i < 27; i++) { if ((ipv4addr_anon & p) != 0) { c++; }; p <<= 1; }; ipv4addr_anon |= ((c & 0x1) ^ 0x1) << 27; DEBUGPRINT_WA(DEBUG_libipv4addr, "result anonymized IPv4 address: 0x%08x, bitcounts=%d", ipv4addr_anon, c); ipv4addr_setdword(ipv4addrp, ipv4addr_anon); }; DEBUGPRINT_NA(DEBUG_libipv4addr, "return"); return(0); }; /* * get AS number of anonymized IPv4 address * * in : *ipv4addrp = IPv4 address structure * ret: AS number 16-bit */ uint32_t ipv4addr_anonymized_get_as_num32(const ipv6calc_ipv4addr *ipv4addrp) { if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { return(ASNUM_AS_UNKNOWN); } else if ((ipv4addrp->typeinfo & IPV4_ADDR_LISP) != 0) { // anonymized LISP can't save AS number return(ASNUM_AS_UNKNOWN); }; return(libipv6calc_db_wrapper_as_num32_decomp17(ipv4addr_getdword(ipv4addrp) & 0x1ffff)); }; /* * get CountryCode index of anonymized IPv4 address * * in : *ipv4addrp = IPv4 address structure * ret: CountryCode index */ uint16_t ipv4addr_anonymized_get_cc_index(const ipv6calc_ipv4addr *ipv4addrp) { if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { return(COUNTRYCODE_INDEX_UNKNOWN); }; return((ipv4addr_getword(ipv4addrp, 0) & 0x7fe) >>1); }; /* * clear filter IPv4 address * * in : *filter = filter structure */ void ipv4addr_filter_clear(s_ipv6calc_filter_ipv4addr *filter) { filter->active = 0; filter->filter_typeinfo.active = 0; filter->filter_typeinfo.typeinfo_must_have = 0; filter->filter_typeinfo.typeinfo_may_not_have = 0; libipv6calc_filter_clear_db_cc(&filter->filter_db_cc); libipv6calc_filter_clear_db_asn(&filter->filter_db_asn); libipv6calc_filter_clear_db_registry(&filter->filter_db_registry); filter->filter_addr.active = 0; filter->filter_addr.addr_must_have_max = 0; filter->filter_addr.addr_may_not_have_max = 0; return; }; /* * parse filter IPv4 address * * in : *filter = filter structure * ret: 0:found 1:skip 2:problem */ int ipv4addr_filter_parse(s_ipv6calc_filter_ipv4addr *filter, const char *token) { int i, result = 1, negate = 0, offset = 0, r; const char *prefix = "ipv4"; const char *prefixdot = "ipv4."; const char *prefixdbdot = "db."; const char *prefixaddreq = "addr="; const char *prefixaddreq_le = "addr<="; const char *prefixaddreq_lt = "addr<"; const char *prefixaddreq_ge = "addr>="; const char *prefixaddreq_gt = "addr>"; const char *prefixaddreq_le2 = "addr=le="; const char *prefixaddreq_lt2 = "addr=lt="; const char *prefixaddreq_ge2 = "addr=ge="; const char *prefixaddreq_gt2 = "addr=gt="; ipv6calc_ipv4addr ipv4addr; char resultstring[NI_MAXHOST]; int db = 0, addr = 0; int addr_test_method; if (token == NULL) { return (result); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "input: %s", token); if (token[0] == '^') { DEBUGPRINT_WA(DEBUG_libipv4addr, "found negate prefix in token: %s", token); negate = 1; offset += 1; }; // typeinfo if (strcmp(token + offset, prefix) == 0) { /* any */ if (negate == 1) { filter->filter_typeinfo.typeinfo_may_not_have = ~IPV4_ADDR_ANY; } else { filter->filter_typeinfo.typeinfo_must_have = IPV4_ADDR_ANY; }; filter->filter_typeinfo.active = 1; filter->active = 1; result = 0; goto END_ipv4addr_filter_parse; } else if (strncmp(token + offset, prefixdot, strlen(prefixdot)) == 0) { /* prefix with dot found */ offset += strlen(prefixdot); result = 2; /* token with prefix, result into problem if not found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "token with prefix, suffix: %s", token + offset); }; if (strncmp(token + offset, prefixaddreq_le, strlen(prefixaddreq_le)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr<=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_le); addr_test_method = IPV6CALC_TEST_LE; } else if (strncmp(token + offset, prefixaddreq_lt, strlen(prefixaddreq_lt)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr<' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_lt); addr_test_method = IPV6CALC_TEST_LT; } else if (strncmp(token + offset, prefixaddreq_ge, strlen(prefixaddreq_ge)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr>=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_ge); addr_test_method = IPV6CALC_TEST_GE; } else if (strncmp(token + offset, prefixaddreq_gt, strlen(prefixaddreq_gt)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr>' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_gt); addr_test_method = IPV6CALC_TEST_GT; } else if (strncmp(token + offset, prefixaddreq_le2, strlen(prefixaddreq_le2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr=le=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_le2); addr_test_method = IPV6CALC_TEST_LE; } else if (strncmp(token + offset, prefixaddreq_lt2, strlen(prefixaddreq_lt2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr=lt=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_lt2); addr_test_method = IPV6CALC_TEST_LT; } else if (strncmp(token + offset, prefixaddreq_ge2, strlen(prefixaddreq_ge2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr=ge=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_ge2); addr_test_method = IPV6CALC_TEST_GE; } else if (strncmp(token + offset, prefixaddreq_gt2, strlen(prefixaddreq_gt2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr=gt=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_gt2); addr_test_method = IPV6CALC_TEST_GT; } else if (strncmp(token + offset, prefixaddreq, strlen(prefixaddreq)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq); addr_test_method = IPV6CALC_TEST_PREFIX; } else if (strncmp(token + offset, prefixdbdot, strlen(prefixdbdot)) == 0) { /* prefixdb with dot found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'db.' prefix in token: %s", token); db = 1; } else if (strstr(token, ".") != NULL) { /* other prefix */ DEBUGPRINT_WA(DEBUG_libipv4addr, "prefix did not match: %s", token + offset); return(1); }; if ((db == 0) && (addr == 0)) { // typeinfo token for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv4addrtypestrings); i++ ) { DEBUGPRINT_WA(DEBUG_libipv4addr, "check token against: %s", ipv6calc_ipv4addrtypestrings[i].token); if (strcmp(ipv6calc_ipv4addrtypestrings[i].token, token + offset) == 0) { DEBUGPRINT_WA(DEBUG_libipv4addr, "token match: %s", ipv6calc_ipv4addrtypestrings[i].token); if (negate == 1) { filter->filter_typeinfo.typeinfo_may_not_have |= ipv6calc_ipv4addrtypestrings[i].number; } else { filter->filter_typeinfo.typeinfo_must_have |= ipv6calc_ipv4addrtypestrings[i].number; }; filter->filter_typeinfo.active = 1; filter->active = 1; result = 0; break; }; }; }; if (db == 1) { // DB CC filter r = libipv6calc_db_cc_filter_parse(&filter->filter_db_cc, token + offset, negate); if (r == 0) { result = 0; filter->active = 1; }; // DB ASN filter r = libipv6calc_db_asn_filter_parse(&filter->filter_db_asn, token + offset, negate); if (r == 0) { result = 0; filter->active = 1; }; // DB Registry filter r = libipv6calc_db_registry_filter_parse(&filter->filter_db_registry, token + offset, negate); if (r == 0) { result = 0; filter->active = 1; }; }; if (addr == 1) { DEBUGPRINT_WA(DEBUG_libipv4addr, "try to parse IPv4 address: %s", token + offset); r = addr_to_ipv4addrstruct(token + offset, resultstring, sizeof(resultstring), &ipv4addr); if (r == 0) { DEBUGPRINT_WA(DEBUG_libipv4addr, "successfully parsed IPv4 address: %s", token + offset); // store address test method ipv4addr.test_mode = addr_test_method; if (negate == 1) { if (filter->filter_addr.addr_may_not_have_max < IPV6CALC_FILTER_IPV4ADDR) { ipv4addr_copy(&filter->filter_addr.ipv4addr_may_not_have[filter->filter_addr.addr_may_not_have_max], &ipv4addr); filter->filter_addr.addr_may_not_have_max++; filter->filter_addr.active = 1; filter->active = 1; result = 0; } else { ERRORPRINT_WA("filter token 'addr=' maxmimum reached for 'may not have': %d", filter->filter_addr.addr_may_not_have_max); }; } else { if (filter->filter_addr.addr_must_have_max < IPV6CALC_FILTER_IPV4ADDR) { ipv4addr_copy(&filter->filter_addr.ipv4addr_must_have[filter->filter_addr.addr_must_have_max], &ipv4addr); filter->filter_addr.addr_must_have_max++; filter->filter_addr.active = 1; filter->active = 1; result = 0; } else { ERRORPRINT_WA("filter token 'addr=' maxmimum reached for 'must have': %d", filter->filter_addr.addr_must_have_max); }; }; }; }; if (result != 0) { DEBUGPRINT_WA(DEBUG_libipv4addr, "token not supported: %s",token); return (result); }; END_ipv4addr_filter_parse: return (result); }; /* * check filter IPv4 * * in : *filter = filter structure * ret: 0:ok 1:problem */ int ipv4addr_filter_check(const s_ipv6calc_filter_ipv4addr *filter) { int result = 0, r, i; char resultstring[NI_MAXHOST]; DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter general active : %d", filter->active); DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'typeinfo' active : %d", filter->filter_typeinfo.active); if (filter->filter_typeinfo.active > 0) { DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'typeinfo/must_have' : 0x%08x", filter->filter_typeinfo.typeinfo_must_have); DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'typeinfo/may_not_have': 0x%08x", filter->filter_typeinfo.typeinfo_may_not_have); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'addr' active : %d", filter->filter_addr.active); if (filter->filter_addr.active > 0) { if (filter->filter_addr.addr_must_have_max > 0) { for (i = 0; i < filter->filter_addr.addr_must_have_max; i++) { libipv4addr_ipv4addrstruct_to_string(&filter->filter_addr.ipv4addr_must_have[i], resultstring, sizeof(resultstring), 0); DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'addr/must_have' : %s", resultstring); }; }; if (filter->filter_addr.addr_may_not_have_max > 0) { for (i = 0; i < filter->filter_addr.addr_may_not_have_max; i++) { libipv4addr_ipv4addrstruct_to_string(&filter->filter_addr.ipv4addr_may_not_have[i], resultstring, sizeof(resultstring), 0); DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'addr/may_not_have' : %s", resultstring); }; }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'db.cc' active : %d", filter->filter_db_cc.active); if (filter->filter_db_cc.active > 0) { r = libipv6calc_db_cc_filter_check(&filter->filter_db_cc, IPV6CALC_PROTO_IPV4); if (r > 0) { result = 1; }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'db.asn' active : %d", filter->filter_db_asn.active); if (filter->filter_db_asn.active > 0) { r = libipv6calc_db_asn_filter_check(&filter->filter_db_asn, IPV6CALC_PROTO_IPV4); if (r > 0) { result = 1; }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "ipv4 filter 'db.registry' active : %d", filter->filter_db_registry.active); if (filter->filter_db_registry.active > 0) { r = libipv6calc_db_registry_filter_check(&filter->filter_db_registry, IPV6CALC_PROTO_IPV4); if (r > 0) { result = 1; }; }; //END_ipv4addr_filter_check: return (result); }; /* * filter IPv4 address * * in : *ipv4addrp = IPv4 address structure * in : *filter = filter structure * ret: 0=match 1=not match */ int ipv4addr_filter(const ipv6calc_ipv4addr *ipv4addrp, const s_ipv6calc_filter_ipv4addr *filter) { int result = 0, r, i, t; if (filter->active == 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "no filter active (SKIP)"); return (1); }; DEBUGPRINT_NA(DEBUG_libipv4addr, "start"); if (filter->filter_typeinfo.active > 0) { if (ipv4addrp->flag_typeinfo == 0) { fprintf(stderr, "FATAL error, typeinfo not valid - FIX CODE of caller\n"); exit(2); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "compare typeinfo against must_have: 0x%08x/0x%08x", ipv4addrp->typeinfo, filter->filter_typeinfo.typeinfo_must_have); if ((ipv4addrp->typeinfo & filter->filter_typeinfo.typeinfo_must_have) != filter->filter_typeinfo.typeinfo_must_have) { /* no match */ result = 1; } else { if ((ipv4addrp->typeinfo & filter->filter_typeinfo.typeinfo_may_not_have) != 0) { result = 1; }; }; }; if (filter->filter_addr.active > 0) { if (filter->filter_addr.addr_must_have_max > 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "compare against ipv4addr/must_have"); r = 1; for (i = 0; i < filter->filter_addr.addr_must_have_max; i++) { t = ipv4addr_compare(ipv4addrp, &filter->filter_addr.ipv4addr_must_have[i], (filter->filter_addr.ipv4addr_must_have[i].test_mode == IPV6CALC_TEST_PREFIX) ? 1 : 0); switch (filter->filter_addr.ipv4addr_must_have[i].test_mode) { case IPV6CALC_TEST_PREFIX: if (t != 0) { r = 0; }; break; case IPV6CALC_TEST_LE: if (t > 0) { r = 0; }; break; case IPV6CALC_TEST_LT: if (t >= 0) { r = 0; }; break; case IPV6CALC_TEST_GE: if (t < 0) { r = 0; }; break; case IPV6CALC_TEST_GT: if (t <= 0) { r = 0; }; break; default: ERRORPRINT_WA("unsupported test mode (FIX CODE): %d", filter->filter_addr.ipv4addr_must_have[i].test_mode); break; }; }; if (r == 0) { /* no match */ result = 1; }; }; if (filter->filter_addr.addr_may_not_have_max > 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "compare against ipv4addr/may_not_have"); r = 0; for (i = 0; i < filter->filter_addr.addr_may_not_have_max; i++) { t = ipv4addr_compare(ipv4addrp, &filter->filter_addr.ipv4addr_may_not_have[i], (filter->filter_addr.ipv4addr_may_not_have[i].test_mode == IPV6CALC_TEST_PREFIX) ? 1 : 0); switch (filter->filter_addr.ipv4addr_may_not_have[i].test_mode) { case IPV6CALC_TEST_PREFIX: if (t == 0) { r = 1; }; break; case IPV6CALC_TEST_LE: if (t <= 0) { r = 1; }; break; case IPV6CALC_TEST_LT: if (t < 0) { r = 1; }; break; case IPV6CALC_TEST_GE: if (t >= 0) { r = 1; }; break; case IPV6CALC_TEST_GT: if (t > 0) { r = 1; }; break; default: ERRORPRINT_WA("unsupported test mode (FIX CODE): %d", filter->filter_addr.ipv4addr_may_not_have[i].test_mode); break; }; }; if (r == 1) { /* match may_not_have*/ result = 1; }; }; }; if (filter->filter_db_cc.active > 0) { uint16_t cc_index = libipv4addr_cc_index_by_addr(ipv4addrp, NULL); if (libipv6calc_db_cc_filter(cc_index, &filter->filter_db_cc) > 0) { /* no match */ result = 1; }; }; if (filter->filter_db_asn.active > 0) { uint32_t asn = libipv4addr_as_num32_by_addr(ipv4addrp); if (filter->filter_db_asn.active > 0) { if (libipv6calc_db_asn_filter(asn, &filter->filter_db_asn) > 0) { /* no match */ result = 1; }; }; }; if (filter->filter_db_registry.active > 0) { int registry = libipv4addr_registry_num_by_addr(ipv4addrp); if (filter->filter_db_registry.active > 0) { if (libipv6calc_db_registry_filter(registry, &filter->filter_db_registry) > 0) { /* no match */ result = 1; }; }; }; return (result); }; /* * country code index of IPv4 address * * in : *ipv4addrp = IPv4 address structure * out: country code index */ uint16_t libipv4addr_cc_index_by_addr(const ipv6calc_ipv4addr *ipv4addrp, unsigned int *data_source_ptr) { uint16_t cc_index = COUNTRYCODE_INDEX_UNKNOWN; ipv6calc_ipaddr ipaddr; DEBUGPRINT_NA(DEBUG_libipv4addr, "start"); if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { cc_index = ipv4addr_anonymized_get_cc_index(ipv4addrp); } else if ((ipv4addrp->typeinfo & IPV4_ADDR_RESERVED) != 0) { cc_index = COUNTRYCODE_INDEX_UNKNOWN; } else if ((ipv4addrp->typeinfo & IPV4_ADDR_GLOBAL) == 0) { cc_index = COUNTRYCODE_INDEX_UNKNOWN; } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_CC) == 1) { CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr); cc_index = libipv6calc_db_wrapper_cc_index_by_addr(&ipaddr, data_source_ptr); }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "cc_index=%d (0x%03x)", cc_index, cc_index); return(cc_index); }; /* * 32-bit AS number of IPv4 address * * in : *ipv4addrp = IPv4 address structure * out: 32-bit AS number */ uint32_t libipv4addr_as_num32_by_addr(const ipv6calc_ipv4addr *ipv4addrp) { uint32_t as_num32 = ASNUM_AS_UNKNOWN; ipv6calc_ipaddr ipaddr; if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { as_num32 = ipv4addr_anonymized_get_as_num32(ipv4addrp); } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS) == 1) { CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr); as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(&ipaddr); }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "as_num32=%d (0x%08x)", as_num32, as_num32); return(as_num32); }; /* * registry number of IPv4 address * * in : *ipv4addrp = IPv4 address structure * out: registry number */ int libipv4addr_registry_num_by_addr(const ipv6calc_ipv4addr *ipv4addrp) { int registry = IPV4_ADDR_REGISTRY_UNKNOWN; uint32_t as_num32; uint16_t cc_index; if ((ipv4addrp->typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "IPv4 is anonymized, extract registry from anonymized data"); // ASN -> Registry // CC -> Registry /* retrieve registry via AS number from anonymized address (simple) */ as_num32 = libipv4addr_as_num32_by_addr(ipv4addrp); if (as_num32 != ASNUM_AS_UNKNOWN) { registry = libipv6calc_db_wrapper_registry_num_by_as_num32(as_num32); }; if ((as_num32 == ASNUM_AS_UNKNOWN) || (registry == IPV4_ADDR_REGISTRY_ARIN)) { /* retrieve registry via cc_index from anonymized address (simple, fallback) */ cc_index = libipv4addr_cc_index_by_addr(ipv4addrp, NULL); registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); }; } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_REGISTRY) == 1) { DEBUGPRINT_NA(DEBUG_libipv4addr, "Get registry from IPV6CALC_DB_IPV4_TO_REGISTRY"); registry = libipv6calc_db_wrapper_registry_num_by_ipv4addr(ipv4addrp); } else { DEBUGPRINT_NA(DEBUG_libipv4addr, "No support available for IPV6CALC_DB_IPV4_TO_REGISTRY"); }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "registry=%d (0x%x)", registry, registry); return(registry); }; ipv6calc-1.0.0/lib/libipv4addr.h000066400000000000000000000207101312366535500163530ustar00rootroot00000000000000/* * Project : ipv6calc/lib * File : libipv4addr.h * Version : $Id: a410901fcd25784ed8615b3b3116ec0e3139f53a $ * Copyright : 2002-2017 by Peter Bieringer except the parts taken from kernel source * License : GNU GPL v2 * * Information: * Header file for libipv4addr.c */ #include "ipv6calctypes.h" #include /* typedefs */ #ifndef _libipv4addr_h #define _libipv4addr_h 1 /* IPv4 address structure */ typedef struct { struct in_addr in_addr; /* in_addr structure */ uint8_t prefixlength; /* prefix length (0-32) 8 bit */ int flag_prefixuse; /* =1: prefix length in use (CIDR notation) */ uint32_t typeinfo; /* address typeinfo/scope */ uint32_t typeinfo2; /* address typeinfo/scope #2 */ int8_t flag_typeinfo; /* =1: valid typeinfo */ int8_t flag_valid; /* address structure filled */ uint8_t test_mode; /* test mode */ } ipv6calc_ipv4addr; /* IPv4 Address filter structure */ typedef struct { int active; int addr_must_have_max; int addr_may_not_have_max; ipv6calc_ipv4addr ipv4addr_must_have[IPV6CALC_FILTER_IPV4ADDR]; ipv6calc_ipv4addr ipv4addr_may_not_have[IPV6CALC_FILTER_IPV6ADDR]; } s_ipv6calc_filter_addr_ipv4; /* IPv4 filter structure */ typedef struct { int active; s_ipv6calc_filter_typeinfo filter_typeinfo; s_ipv6calc_filter_db_cc filter_db_cc; // Country Code filter s_ipv6calc_filter_db_asn filter_db_asn; // Autonomous System Number filter s_ipv6calc_filter_db_registry filter_db_registry; // Registry filter s_ipv6calc_filter_addr_ipv4 filter_addr; // IPv4 Address filter /* others may come next */ } s_ipv6calc_filter_ipv4addr; /* * IPv4 address type definitions */ #define IPV4_ADDR_ANY (uint32_t) 0x00000000U #define IPV4_ADDR_UNICAST (uint32_t) 0x00000001U #define IPV4_ADDR_MULTICAST (uint32_t) 0x00000002U #define IPV4_ADDR_ANYCAST (uint32_t) 0x00000004U #define IPV4_ADDR_BROADCAST (uint32_t) 0x00000008U #define IPV4_ADDR_LOOPBACK (uint32_t) 0x00000010U #define IPV4_ADDR_UNSPECIFIED (uint32_t) 0x00000020U #define IPV4_ADDR_ANONYMIZED (uint32_t) 0x00000100U #define IPV4_ADDR_GLOBAL (uint32_t) 0x00000200U #define IPV4_ADDR_UNKNOWN (uint32_t) 0x00000400U #define IPV4_ADDR_RESERVED (uint32_t) 0x00000800U #define IPV4_ADDR_ZEROCONF (uint32_t) 0x00001000U #define IPV4_ADDR_SITELOCAL (uint32_t) 0x00002000U #define IPV4_ADDR_6TO4RELAY (uint32_t) 0x01000000U #define IPV4_ADDR_LISP (uint32_t) 0x00010000U /* IPv6 LISP (RFC6830) */ #define IPV4_ADDR_LISP_PETR (uint32_t) 0x00020000U /* IPv6 LISP Proxy Egress Tunnel Routers (PETRY) Anycast */ #define IPV4_ADDR_LISP_MAP_RESOLVER (uint32_t) 0x00040000U /* IPv6 LISP Map Resolver Anycast */ /* text representation */ /*@unused@*/ static const s_type ipv6calc_ipv4addrtypestrings[] = { { IPV4_ADDR_ANY , "any" }, { IPV4_ADDR_UNICAST , "unicast" }, { IPV4_ADDR_MULTICAST , "multicast" }, { IPV4_ADDR_ANYCAST , "anycast" }, { IPV4_ADDR_BROADCAST , "broadcast" }, { IPV4_ADDR_LOOPBACK , "loopback" }, { IPV4_ADDR_UNSPECIFIED , "unspecified" }, { IPV4_ADDR_UNKNOWN , "unknown" }, { IPV4_ADDR_RESERVED , "reserved" }, { IPV4_ADDR_ZEROCONF , "zeroconf" }, { IPV4_ADDR_SITELOCAL , "site-local" }, { IPV4_ADDR_ANONYMIZED , "anonymized" }, { IPV4_ADDR_GLOBAL , "global" }, { IPV4_ADDR_6TO4RELAY , "6to4relay" }, { IPV4_ADDR_LISP , "lisp" }, { IPV4_ADDR_LISP_PETR , "lisp-proxyegresstunnelrouter-anycast" }, { IPV4_ADDR_LISP_MAP_RESOLVER , "lisp-mapresolver-anycast" }, }; /* Registries */ #define IPV4_ADDR_REGISTRY_IANA REGISTRY_IANA #define IPV4_ADDR_REGISTRY_APNIC REGISTRY_APNIC #define IPV4_ADDR_REGISTRY_ARIN REGISTRY_ARIN #define IPV4_ADDR_REGISTRY_RIPENCC REGISTRY_RIPENCC #define IPV4_ADDR_REGISTRY_LACNIC REGISTRY_LACNIC #define IPV4_ADDR_REGISTRY_AFRINIC REGISTRY_AFRINIC #define IPV4_ADDR_REGISTRY_RESERVED REGISTRY_RESERVED #define IPV4_ADDR_REGISTRY_UNKNOWN REGISTRY_UNKNOWN /* IPv4 address anonymization * Global IPv4 addresses are anonymized by storing country code and AS number * and using prefix of experimental range (240-255.x.y.z) * * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 * 1 1 1 1 * |p p p p| * Prefix * 0xF * * Parity Bit (odd parity) * |P| * * Mapping of Country Code * |c c c c c c c c c c| * 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) * 0x3FF = unknown country * 0x000-0x3A7: c1= c / 36, c2 = c % 36 * * Mapping of ASN <= 65535 * 0|a a a a a a a a a a a a a a a a| * 16-bit ASN * * Mapping of ASN >= 65536, ASN & 0xE000 == 0 (12-bit LSB is ok) * 1|r r r|0|l l l l l l l l l l l l| * 13-bit LSB of ASN * * Mapping of ASN >= 65536, ASN & 0xE000 != 0 (12-bit LSB overflow) => unspecified * 1|r r r|1|0 0 0 0 0 0 0 0 0 0 0 0| * * Mapping of ASN registry for ASN >= 65536 * 0 0 0 = "unknown ASN registry" * 0 1 0 = APNIC * 0 1 1 = RIPE * 1 0 0 = LACNIC * 1 0 1 = AFRINIC * 1 1 0 = ARIN * * Mapping of LISP * 1|r r r|1|1|0 0 0 0 0 0 0 0 0 0 0| */ #define ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB (IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_IPV4_TO_AS) #endif /* prototypes */ extern uint8_t ipv4addr_getoctet(const ipv6calc_ipv4addr *ipv4addrp, const unsigned int numoctet); extern uint16_t ipv4addr_getword(const ipv6calc_ipv4addr *ipv4addrp, const unsigned int numword); extern uint32_t ipv4addr_getdword(const ipv6calc_ipv4addr *ipv4addrp); extern void ipv4addr_setoctet(ipv6calc_ipv4addr *ipv4addrp, const unsigned int numoctet, const uint8_t value); extern void ipv4addr_setword(ipv6calc_ipv4addr *ipv4addrp, const unsigned int numword, const uint16_t value); extern void ipv4addr_setdword(ipv6calc_ipv4addr *ipv4addrp, const uint32_t value); extern void ipv4addr_clear(ipv6calc_ipv4addr *ipv4addrp); extern void ipv4addr_clearall(ipv6calc_ipv4addr *ipv4addrp); extern void ipv4addr_copy(ipv6calc_ipv4addr *ipv4addrp_dst, const ipv6calc_ipv4addr *ipv4addrp_src); extern int ipv4addr_compare(const ipv6calc_ipv4addr *ipv4addrp1, const ipv6calc_ipv4addr *ipv4addrp2, const uint16_t compare_flags); extern uint32_t ipv4addr_gettype(const ipv6calc_ipv4addr *ipv4addrp); extern void ipv4addr_settype(ipv6calc_ipv4addr *ipv4addrp, int flag_reset); extern int addr_to_ipv4addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv4addr *ipv4addrp); extern int addrhex_to_ipv4addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv4addr *ipv4addrp, const int flag_reverse); extern int libipv4addr_ipv4addrstruct_to_string(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv4addr_to_reversestring(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv4addr_to_octal(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv4addr_to_hex(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv4addr_anonymize(ipv6calc_ipv4addr *ipv4addrp, const unsigned int mask, const int method); extern uint32_t ipv4addr_anonymized_get_as_num32(const ipv6calc_ipv4addr *ipv4addrp); extern uint16_t ipv4addr_anonymized_get_cc_index(const ipv6calc_ipv4addr *ipv4addrp); extern int ipv4addr_filter(const ipv6calc_ipv4addr *ipv4addrp, const s_ipv6calc_filter_ipv4addr *filter); extern int ipv4addr_filter_parse(s_ipv6calc_filter_ipv4addr *filter, const char *token); extern int ipv4addr_filter_check(const s_ipv6calc_filter_ipv4addr *filter); extern void ipv4addr_filter_clear(s_ipv6calc_filter_ipv4addr *filter); extern uint16_t libipv4addr_cc_index_by_addr(const ipv6calc_ipv4addr *ipv4addrp, unsigned int *data_source_ptr); extern uint32_t libipv4addr_as_num32_by_addr(const ipv6calc_ipv4addr *ipv4addrp); extern int libipv4addr_registry_num_by_addr(const ipv6calc_ipv4addr *ipv4addrp); ipv6calc-1.0.0/lib/libipv6addr.c000066400000000000000000003467431312366535500163710ustar00rootroot00000000000000/* * Project : ipv6calc * File : libipv6addr.c * Version : $Id: b5729744817e9377198803ce00adc04661b296fa $ * Copyright : 2001-2017 by Peter Bieringer except the parts taken from kernel source * License : GNU GPL v2 * * Information: * Function library for IPv6 address handling */ #include #include #include #include #include #include "config.h" #include "libipv6addr.h" #include "librfc1884.h" #include "librfc3041.h" #include "libipv6addr.h" #include "libipv4addr.h" #include "ipv6calctypes.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "libieee.h" #include "libeui64.h" #include "../databases/lib/libipv6calc_db_wrapper.h" /* * function returns an octet of an IPv6 address * * in: ipv6addrp = pointer to IPv6 address structure * in: numoctet = number of octet (0 = MSB, 15 = LSB) * additional: calls exit on out of range */ uint8_t ipv6addr_getoctet(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numoctet) { uint8_t retval; if ( numoctet > 15 ) { ERRORPRINT_WA("given octet number '%u' is out of range!", numoctet); exit(EXIT_FAILURE); }; retval = ipv6addrp->in6_addr.s6_addr[numoctet]; return (retval); }; /* * function returns a word of an IPv6 address * * in: ipv6addrp = pointer to IPv6 address structure * in: numword = number of word (0 = MSB, 7 = LSB) * additional: calls exit on out of range */ uint16_t ipv6addr_getword(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numword) { uint16_t retval; if ( numword > 7 ) { ERRORPRINT_WA("given word number '%u' is out of range!", numword); exit(EXIT_FAILURE); }; retval = ( ipv6addrp->in6_addr.s6_addr[numword * 2] << 8 ) \ | ( ipv6addrp->in6_addr.s6_addr[numword * 2 + 1] ); return (retval); }; /* * function returns a dword of an IPv6 address * * in: ipv6addrp = pointer to IPv6 address structure * in: numdword = number of word (0 = MSB, 3 = LSB) * additional: calls exit on out of range */ uint32_t ipv6addr_getdword(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numdword) { uint32_t retval; if ( numdword > 3 ) { ERRORPRINT_WA("given dword number '%u' is out of range!", numdword); exit(EXIT_FAILURE); }; retval = ( ipv6addrp->in6_addr.s6_addr[numdword * 4] << 24 ) \ | ( ipv6addrp->in6_addr.s6_addr[numdword * 4 + 1] << 16 ) \ | ( ipv6addrp->in6_addr.s6_addr[numdword * 4 + 2] << 8 ) \ | ( ipv6addrp->in6_addr.s6_addr[numdword * 4 + 3] ); return (retval); }; /* * function sets an octet of an IPv6 address * * mod: ipv6addrp = pointer to IPv6 address structure * in: numoctet = number of word (0 = MSB, 15 = LSB) * in: value = value to set * additional: calls exit on out of range */ void ipv6addr_setoctet(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numoctet, const unsigned int value) { if ( numoctet > 15 ) { ERRORPRINT_WA("given octet number '%u' is out of range!", numoctet); exit(EXIT_FAILURE); }; if ( value > 0x0000000ff ) { ERRORPRINT_WA("given value '%x' is out of range!", value); exit(EXIT_FAILURE); }; ipv6addrp->in6_addr.s6_addr[numoctet] = (uint8_t) value; return; }; /* * function sets a word of an IPv6 address * * mod: ipv6addrp = pointer to IPv6 address structure * in: numword = number of word (0 = MSB, 7 = LSB) * in: value = value to set * additional: calls exit on out of range */ void ipv6addr_setword(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numword, const unsigned int value) { if ( numword > 7 ) { ERRORPRINT_WA("given word number '%u' is out of range!", numword); exit(EXIT_FAILURE); }; if ( value > 0x0000ffffu ) { ERRORPRINT_WA("given value '%x' is out of range!", value); exit(EXIT_FAILURE); }; ipv6addrp->in6_addr.s6_addr[numword * 2 ] = (uint8_t) ( ( value & 0x0000ff00 ) >> 8 ); ipv6addrp->in6_addr.s6_addr[numword * 2 + 1] = (uint8_t) ( ( value & 0x000000ff ) ); return; }; /* * function sets a dword of an IPv6 address * * mod: ipv6addrp = pointer to IPv6 address structure * in: numdword = number of word (0 = MSB, 3 = LSB) * in: value = value to set * additional: calls exit on out of range */ void ipv6addr_setdword(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numdword, const unsigned int value) { if ( numdword > 3 ) { ERRORPRINT_WA("given dword number '%u' is out of range!", numdword); exit(EXIT_FAILURE); }; if ( value > 0xffffffffu ) { ERRORPRINT_WA("given value '%x' is out of range!", value); exit(EXIT_FAILURE); }; ipv6addrp->in6_addr.s6_addr[numdword * 4 ] = (uint8_t) ( ( value & 0xff000000 ) >> 24 ); ipv6addrp->in6_addr.s6_addr[numdword * 4 + 1] = (uint8_t) ( ( value & 0x00ff0000 ) >> 16 ); ipv6addrp->in6_addr.s6_addr[numdword * 4 + 2] = (uint8_t) ( ( value & 0x0000ff00 ) >> 8 ); ipv6addrp->in6_addr.s6_addr[numdword * 4 + 3] = (uint8_t) ( ( value & 0x000000ff ) ); return; }; /* * function clears the IPv6 structure * * mod: ipv6addrp = pointer to IPv6 address structure */ void ipv6addr_clear(ipv6calc_ipv6addr *ipv6addrp) { int i; for (i = 0; i < MAXENTRIES_ARRAY(ipv6addrp->in6_addr.s6_addr); i++) { ipv6addrp->in6_addr.s6_addr[i] = 0; }; /* Clear IPv6 address scope */ ipv6addrp->typeinfo = 0; ipv6addrp->typeinfo2 = 0; ipv6addrp->flag_typeinfo = 0; /* Clear valid flag */ ipv6addrp->flag_valid = 0; /* Clear test mode */ ipv6addrp->test_mode = 0; return; }; /* * function clears the IPv6 structure * * mod: ipv6addrp = pointer to IPv6 address structure */ void ipv6addr_clearall(ipv6calc_ipv6addr *ipv6addrp) { ipv6addr_clear(ipv6addrp); /* Clear other field */ ipv6addrp->bit_start = 1; ipv6addrp->bit_end = 128; ipv6addrp->flag_startend_use = 0; ipv6addrp->flag_prefixuse = 0; ipv6addrp->prefixlength = 0; ipv6addrp->prefix2length = 0; ipv6addrp->flag_valid = 0; ipv6addrp->flag_scopeid = 0; return; }; /* * function copies the IPv6 structure * * in: ipv6addrp = pointer to IPv6 address structure * mod: ipv6addrp2 = pointer to IPv6 address structure */ void ipv6addr_copy(ipv6calc_ipv6addr *ipv6addrp_dst, const ipv6calc_ipv6addr *ipv6addrp_src) { *(ipv6addrp_dst) = *(ipv6addrp_src); return; }; /* * function compares the IPv6 structure * * in: ipv6addrp1 = pointer to IPv6 address structure * in: ipv6addrp2 = pointer to IPv6 address structure * in: compare_flags: * 0=less than/equal/greater than * 1=honor prefix length on addr2 * * returns: 0: addr1 equal with addr2, 1: addr1 > addr2, -1: addr1 < addr2 (compare_flags == 0) * returns: 0: addr1 equal with addr2 or covered by addr2/prefix (compare_flags == 1) */ int ipv6addr_compare(const ipv6calc_ipv6addr *ipv6addrp1, const ipv6calc_ipv6addr *ipv6addrp2, const uint16_t compare_flags) { int i; uint32_t mask; DEBUGPRINT_WA(DEBUG_libipv6addr, "compare addr1 with addr2 (compare flags: %08x)", compare_flags); if (compare_flags == 1) { for (i = 0; i < 4; i++) { if ((ipv6addrp2->flag_prefixuse == 0) || ((ipv6addrp2->flag_prefixuse == 1) && (ipv6addrp2->prefixlength >= (i + 1) * 32))) { DEBUGPRINT_WA(DEBUG_libipv6addr, "compare dword %i (prefixuse=%d): %08x <-> %08x", i, ipv6addrp2->flag_prefixuse, ipv6addr_getdword(ipv6addrp2, i), ipv6addr_getdword(ipv6addrp1, i)); /* compare 32 bits */ if (ipv6addr_getdword(ipv6addrp2, i) != ipv6addr_getdword(ipv6addrp1, i)) { return(1); }; } else if (ipv6addrp2->flag_prefixuse == 1) { mask = ~(0xffffffffu >> (ipv6addrp2->prefixlength - i * 32)); DEBUGPRINT_WA(DEBUG_libipv6addr, "compare dword %i with mask 0x%08x: %08x <-> %08x", i, mask, (ipv6addr_getdword(ipv6addrp2, i) & mask), (ipv6addr_getdword(ipv6addrp1, i) & mask)); if ((ipv6addr_getdword(ipv6addrp2, i) & mask) != (ipv6addr_getdword(ipv6addrp1, i) & mask)) { return(1); } else { return(0); }; }; }; } else if (compare_flags == 0) { for (i = 0; i < 4; i++) { if (ipv6addr_getdword(ipv6addrp1, i) > ipv6addr_getdword(ipv6addrp2, i)) { return(1); } else if (ipv6addr_getdword(ipv6addrp1, i) < ipv6addr_getdword(ipv6addrp2, i)) { return(-1); }; }; }; return(0); }; /* * create/verify checksum for anonymized qword * * in: ipv6addrp = pointer to IPv6 address structure * in: flag = ANON_CHECKSUM_FLAG_CREATE|ANON_CHECKSUM_FLAG_VERIFY * in: qword = qword (64-bit selection) * out: ANON_CHECKSUM_FLAG_CREATE: 4-bit checksum ANON_CHECKSUM_FLAG_VERIFY: 0:ok/1:not-ok * * using same calculation as for ISAN: ISO 7064, MOD 17,16 * http://www.pruefziffernberechnung.de/I/ISAN.shtml */ uint32_t ipv6addr_checksum_anonymized_qword(const ipv6calc_ipv6addr *ipv6addrp, const int flag, const int qword) { uint32_t dword[2]; uint32_t checksum = 0; int i, n, index, i_max = 16; unsigned int s; uint32_t a, b, c = 0; DEBUGPRINT_NA(DEBUG_libipv6addr, "Called"); dword[0] = ipv6addr_getdword(ipv6addrp, (qword << 1)); // 00-31 (8 nibbles) dword[1] = ipv6addr_getdword(ipv6addrp, (qword << 1) + 1); // 32-63 (8 nibbles, only 7 nibbles are used for calculation) if (flag == ANON_CHECKSUM_FLAG_CREATE) { i_max = 15; }; for (i = 1; i <= i_max; i++) { index = (i - 1) / 8; // 0-1 n = (i - 1) % 8; // 0-7 s = (7 - n) * 4; if (i == 1) { a = 16; // init } else { a = c * 2; }; b = (a % 17) + ((dword[index] & (0xf << s)) >> s); c = b % 16; DEBUGPRINT_WA(DEBUG_libipv6addr, "checksum calculation of qword: %08x %08x i=%02d a=%02d b=%02d c=%02d", (unsigned int) dword[0], (unsigned int) dword[1], i, a, b, c); }; if (flag == ANON_CHECKSUM_FLAG_VERIFY) { // return code depending on result if (c == 1) { DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum verification OK"); return(0); }; DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum verification FAILED"); return(1); }; /* find checksum xdigit */ a = c * 2; for (checksum = 0; checksum <= 0xf; checksum++) { if ( (((a % 17) + checksum) % 16) == 1) { break; }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "checksum of 64 bits: %08x %08x = %x", (unsigned int) dword[0], (unsigned int) dword[1], checksum); return(checksum); }; /* * set checksum for anonymized prefix * * mod: ipv6addrp = pointer to IPv6 address structure */ void ipv6addr_set_checksum_anonymized_prefix(ipv6calc_ipv6addr *ipv6addrp) { uint32_t checksum = ipv6addr_checksum_anonymized_qword(ipv6addrp, ANON_CHECKSUM_FLAG_CREATE, 0); /* checksum is stored in rightmost nibble */ ipv6addr_setoctet(ipv6addrp, 7, (ipv6addr_getoctet(ipv6addrp, 7) & 0xf0) | checksum); }; /* * verify checksum for anonymized prefix * * in: ipv6addrp = pointer to IPv6 address structure * out: 0=ok 1=not ok */ int ipv6addr_verify_checksum_anonymized_prefix(const ipv6calc_ipv6addr *ipv6addrp) { return (ipv6addr_checksum_anonymized_qword(ipv6addrp, ANON_CHECKSUM_FLAG_VERIFY, 0)); }; /* * set checksum for anonymized IID * * mod: ipv6addrp = pointer to IPv6 address structure */ void ipv6addr_set_checksum_anonymized_iid(ipv6calc_ipv6addr *ipv6addrp) { uint32_t checksum = ipv6addr_checksum_anonymized_qword(ipv6addrp, ANON_CHECKSUM_FLAG_CREATE, 1); /* checksum is stored in rightmost nibble */ ipv6addr_setoctet(ipv6addrp, 15, (ipv6addr_getoctet(ipv6addrp, 15) & 0xf0) | checksum); }; /* * verify checksum for anonymized IID * * in: ipv6addrp = pointer to IPv6 address structure * out: 0=ok 1=not ok */ int ipv6addr_verify_checksum_anonymized_iid(const ipv6calc_ipv6addr *ipv6addrp) { return (ipv6addr_checksum_anonymized_qword(ipv6addrp, ANON_CHECKSUM_FLAG_VERIFY, 1)); }; /* * fuzzy detection of IID is random generated (e.g. by privacy extension) * * in: ipv6addrp = pointer to IPv6 address structure * out: 0=probably random generated (e.g. by privacy extension), 1=manual set, -1=global, 2=unknown */ int ipv6addr_iidrandomdetection(const ipv6calc_ipv6addr *ipv6addrp, s_iid_statistics *iid_statisticsp) { uint32_t iid[2]; iid[0] = ipv6addr_getdword(ipv6addrp, 2); // 00-31 iid[1] = ipv6addr_getdword(ipv6addrp, 3); // 32-63 int result = 2; float m, e; int iid_digit[16]; // digit of IID int b, i, c, v; // debug DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "given IID: %08x%08x",(unsigned int) iid[0], (unsigned int) iid[1]); // blacklists if ((iid[0] & 0x02000000u) == 0x02000000u) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "universal/local bit set to: universal (no further random detection)"); result = -1; goto END_ipv6addr_iidrandomdetection; }; if (((iid[0] & 0x000000ffu) == 0x000000ffu) && ((iid[1] & 0xff000000u) == 0xfe000000u)) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "expanded EUI-48 (no further random detection)"); result = -1; goto END_ipv6addr_iidrandomdetection; }; // clear structure iid_statisticsp->hexdigit = 0; iid_statisticsp->lls_residual = 0; for (c = 0; c < 16; c++) { iid_statisticsp->digit_blocks[c] = 0; iid_statisticsp->digit_blocks_hexdigit[c] = 0; iid_statisticsp->digit_amount[c] = 0; }; for (c = 0; c < 31; c++) { iid_statisticsp->digit_delta[c] = 0; }; iid_statisticsp->digit_delta_amount = 0; /* create statistics */ for (b = 0; b < 16; b++) { v = (iid[b/8] & (0xf << ((7 - (b % 8)) * 4))) >> ((7 - (b % 8)) * 4); iid_digit[b] = v; DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "analyze nibble %2d: %x", b, v); iid_statisticsp->digit_amount[v]++; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_iidrandomdetection) != 0 ) { // ipv6calc_debug usage ok DEBUGPRINT_NA(DEBUG_libipv6addr, "distribution"); fprintf(stderr, "%s/%s: hex distribution: digit ", __FILE__, __func__); for (b = 0; b < 16; b++) { fprintf(stderr, "|%2x", b); }; fprintf(stderr, "|\n"); fprintf(stderr, "%s/%s: hex distribution: count ", __FILE__, __func__); for (b = 0; b < 16; b++) { fprintf(stderr, "|%2d", iid_statisticsp->digit_amount[b]); }; fprintf(stderr, "|\n"); }; /* calculate variances */ v = 0; /* calculate variance over hexdigits */ c = 0; float variance = 0.0; for (b = 0; b < 16; b++) { if (iid_statisticsp->digit_amount[b] == 0) { continue; }; c++; e = iid_statisticsp->digit_amount[b]; m = 1.0; /* compensate universal/local bit = 0 by shifting average */ if ((b & 0x02) == 0x02) { m -= 0.0625; } else { m += 0.0625; }; DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "hexdigit %x: amount=%.0f exp.avg.=%.4f", b, e, m); e = e - m; /* substract related average */ e = e * e; /* square */ variance += e; }; variance = sqrt(variance / c); DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "variance for hexdigits: %0.5f", variance); iid_statisticsp->hexdigit = variance; /* calculate linear least square fit to detect sequences */ float xm = 0, ym = 0, x2 = 0, xy = 0, a0, a1, r, r2 = 0; for (b = 0; b < 16; b++) { DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "linear least square calc: x=%0.5f y=%0.5f", (float) b, (float) iid_digit[b]); xm += (float) b; ym += (float) iid_digit[b]; xy += (float) b * (float) iid_digit[b]; x2 += (float) b * (float) b; }; xm /= 16.0; ym /= 16.0; DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "linear least square calc: xm=%0.5f ym=%0.5f", xm, ym); DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "linear least square calc: x2=%0.5f xy=%0.5f", x2, xy); a1 = (xy - 16 * xm * ym) / (x2 - 16 * xm * xm); a0 = ym - a1 * xm; for (b = 0; b < 16; b++) { r = a0 + a1 * (float) b - (float) iid_digit[b]; r2 += r * r; }; r = sqrt(r2); DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "linear least square result: a0=%0.5f a1=%0.5f r=%05f", a0, a1, r); iid_statisticsp->lls_residual = r; /* check for repeating digits (digit blocks) */ c = 0; i = iid_digit[0]; for (b = 1; b < 16; b++) { if (i == iid_digit[b]) { c++; } else { if (c > 0) { iid_statisticsp->digit_blocks_hexdigit[i]++; }; iid_statisticsp->digit_blocks[c]++; i = iid_digit[b]; c = 0; }; }; iid_statisticsp->digit_blocks[c]++; /* analyze delta of neighbor digits (digit delta) */ for (b = 1; b < 16; b++) { v = iid_digit[b] - iid_digit[b-1] + 15; if (iid_statisticsp->digit_delta[v] == 0) { // count, how many different digit deltas found iid_statisticsp->digit_delta_amount++; }; iid_statisticsp->digit_delta[v]++; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_iidrandomdetection) != 0 ) { // ipv6calc_debug usage ok fprintf(stderr, "%s/%s: digit blocks: ", __FILE__, __func__); for (c = 0; c < 16; c++) { fprintf(stderr, "%d:%d ", c+1, iid_statisticsp->digit_blocks[c]); }; fprintf(stderr, "\n"); fprintf(stderr, "%s/%s: hex distribution in blocks: digit ", __FILE__, __func__); for (b = 0; b < 16; b++) { fprintf(stderr, "|%2x", b); }; fprintf(stderr, "|\n"); fprintf(stderr, "%s/%s: hex distribution in blocks: count ", __FILE__, __func__); for (b = 0; b < 16; b++) { fprintf(stderr, "|%2d", iid_statisticsp->digit_blocks_hexdigit[b]); }; fprintf(stderr, "|\n"); }; /* check against limits */ if (iid_statisticsp->hexdigit < s_iid_statistics_ok_min.hexdigit || iid_statisticsp->hexdigit > s_iid_statistics_ok_max.hexdigit) { DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "min/max hexdigit variance limit reached: %f min=%f max=%f", iid_statisticsp->hexdigit, s_iid_statistics_ok_min.hexdigit, s_iid_statistics_ok_max.hexdigit); result = 1; goto END_ipv6addr_iidrandomdetection; } else if (iid_statisticsp->lls_residual < s_iid_statistics_ok_min.lls_residual || iid_statisticsp->lls_residual > s_iid_statistics_ok_max.lls_residual) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "min/max lls_residual limit reached"); result = 1; goto END_ipv6addr_iidrandomdetection; } else if (iid_statisticsp->digit_delta_amount < s_iid_statistics_ok_min.digit_delta_amount || iid_statisticsp->digit_delta_amount > s_iid_statistics_ok_max.digit_delta_amount) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "min/max digit_delta_amount reached"); result = 1; goto END_ipv6addr_iidrandomdetection; } else { for (c = 0; c < 16; c++) { // digit blocks if (iid_statisticsp->digit_blocks[c] < s_iid_statistics_ok_min.digit_blocks[c] || iid_statisticsp->digit_blocks[c] > s_iid_statistics_ok_max.digit_blocks[c]) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "min/max digit_blocks reached"); result = 1; goto END_ipv6addr_iidrandomdetection; }; // digit blocks hexdigits if (iid_statisticsp->digit_blocks_hexdigit[c] < s_iid_statistics_ok_min.digit_blocks_hexdigit[c] || iid_statisticsp->digit_blocks_hexdigit[c] > s_iid_statistics_ok_max.digit_blocks_hexdigit[c]) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "min/max digit_blocks_hexdigit reached"); result = 1; goto END_ipv6addr_iidrandomdetection; }; // digit amount if (iid_statisticsp->digit_amount[c] < s_iid_statistics_ok_min.digit_amount[c] || iid_statisticsp->digit_amount[c] > s_iid_statistics_ok_max.digit_amount[c]) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "min/max digit_amount reached"); result = 1; goto END_ipv6addr_iidrandomdetection; }; }; for (c = 0; c < 31; c++) { // digit delta if (iid_statisticsp->digit_delta[c] < s_iid_statistics_ok_min.digit_delta[c] || iid_statisticsp->digit_delta[c] > s_iid_statistics_ok_max.digit_delta[c]) { DEBUGPRINT_NA(DEBUG_libipv6addr_iidrandomdetection, "min/max digit_delta reached"); result = 1; goto END_ipv6addr_iidrandomdetection; }; }; }; result = 0; END_ipv6addr_iidrandomdetection: DEBUGPRINT_WA(DEBUG_libipv6addr_iidrandomdetection, "result=%d", result); return (result); }; /* * Set type of an IPv6 address * * in: ipv6addrp = pointer to IPv6 address structure * flag_reset = 1: redetect type */ void ipv6addr_settype(ipv6calc_ipv6addr *ipv6addrp, int flag_reset) { uint32_t typeinfo = 0, typeinfo2 = 0; if (flag_reset == 1) { ipv6addrp->flag_typeinfo = 0; }; if (ipv6addrp->flag_typeinfo == 0) { typeinfo = ipv6addr_gettype(ipv6addrp, &typeinfo2); ipv6addrp->typeinfo = typeinfo; ipv6addrp->typeinfo2 = typeinfo2; ipv6addrp->flag_typeinfo = 1; }; return; }; /* * Get type of an IPv6 address * * with credits to kernel and USAGI developer team * basic code was taken from "kernel/net/ipv6/addrconf.c" * * in: ipv6addrp = pointer to IPv6 address structure * typeinfo2 = pointer to typeinfo2 (optional) */ uint32_t ipv6addr_gettype(const ipv6calc_ipv6addr *ipv6addrp, uint32_t *typeinfo2p) { uint32_t type = 0, r, type2 = 0; uint32_t st, st1, st2, st3; s_iid_statistics variances; int p; uint32_t mask_0_15, mask_16_31; uint32_t as_num32, cc_index; int r1, r2; ipv6calc_ipv4addr ipv4addr; ipv6calc_ipv6addr ipv6addr; st = ipv6addr_getdword(ipv6addrp, 0); /* 32 MSB */ st1 = ipv6addr_getdword(ipv6addrp, 1); st2 = ipv6addr_getdword(ipv6addrp, 2); st3 = ipv6addr_getdword(ipv6addrp, 3); /* 32 LSB */ DEBUGPRINT_NA(DEBUG_libipv6addr, "Called"); if (typeinfo2p != NULL) { /* clear typeinfo2 if not a NULL pointer */ *typeinfo2p = type2; }; /* unspecified address */ if ( (st == 0) && (st1 == 0) && (st2 == 0) && (st3 == 0) ) { type |= IPV6_NEW_ADDR_UNSPECIFIED; goto END_ipv6addr_gettype; }; /* address space information */ if ((st & 0xFE000000u) == 0xFC000000u) { /* FC00::/7 -> Unique Local IPv6 Unicast Address */ type |= IPV6_ADDR_ULUA; }; if (st == 0x261000d0) { /* 2610:00d0::/32 -> LISP (RFC 6830) */ type2 |= IPV6_ADDR_TYPE2_LISP; }; if ((st == 0x2001067c) && ((st1 & 0xffff0000u) == 0x01980000u)) { /* 2001:67c:198::/48 -> LISP PETR (RFC 6830) */ type2 |= IPV6_ADDR_TYPE2_LISP | IPV6_ADDR_TYPE2_LISP_PETR; type |= IPV6_ADDR_ANYCAST; }; if ((st == 0x2001067c) && ((st1 & 0xffff0000u) == 0x00280000u)) { /* 2001:67c:28::/48 -> LISP Map Resolver (RFC 6830) */ type2 |= IPV6_ADDR_TYPE2_LISP | IPV6_ADDR_TYPE2_LISP_MAP_RESOLVER; type |= IPV6_ADDR_ANYCAST; }; if (st == 0x20010db8) { /* 2001:db8::/32 -> prefix for documentation (RFC 3849) */ type |= IPV6_ADDR_RESERVED; }; if (UNPACK_XMS(st, ANON_PREFIX_TOKEN_XOR, ANON_PREFIX_TOKEN_MASK, ANON_PREFIX_TOKEN_SHIFT) == ANON_PREFIX_TOKEN_VALUE) { // anonymized prefix ? DEBUGPRINT_WA(DEBUG_libipv6addr, " probably anonymized prefix found: %04x:%04x:%04x:%04x", U32_MSB16(st), U32_LSB16(st), U32_MSB16(st1), U32_LSB16(st1)); /* verify now checksum */ if (ipv6addr_verify_checksum_anonymized_prefix(ipv6addrp) == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum ok - anonymized prefix found"); type |= IPV6_NEW_ADDR_AGU | IPV6_ADDR_UNICAST | IPV6_ADDR_ANONYMIZED_PREFIX; r1 = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_CCINDEX, &cc_index); r2 = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_ASN32, &as_num32); if ((r1 == 0) && (r2 == 0) && (cc_index == COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN + REGISTRY_6BONE)) { type |= IPV6_NEW_ADDR_6BONE; } else if ((r1 == 0) && (r2 == 0) && (cc_index == 0x3fd)) { type |= IPV6_NEW_ADDR_PRODUCTIVE; type2 |= IPV6_ADDR_TYPE2_LISP; } else { type |= IPV6_NEW_ADDR_PRODUCTIVE; }; } else { DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum NOT ok - no anonymized prefix found"); }; }; /* address space information */ if ((st & 0xE0000000u) == 0x20000000u) { /* 2000::/3 -> global unicast */ type |= IPV6_NEW_ADDR_AGU; }; /* address space information */ if ((st & 0xFFFF0000u) == 0x3FFE0000u) { /* 3ffe::/16 -> experimental 6bone */ type |= IPV6_NEW_ADDR_6BONE; }; if ((st & 0xFFFF0000u) == 0x20020000u) { /* 2002::/16 -> 6to4 tunneling */ type |= IPV6_NEW_ADDR_6TO4; if ( (ipv6addr_getword(ipv6addrp, 3) == 0) && (ipv6addr_getword(ipv6addrp, 4) == 0) && (ipv6addr_getword(ipv6addrp, 5) == 0) && (ipv6addr_getword(ipv6addrp, 6) == ipv6addr_getword(ipv6addrp, 1)) && (ipv6addr_getword(ipv6addrp, 7) == ipv6addr_getword(ipv6addrp, 2)) ) { /* 2002::: -> usually Microsoft does this */ type |= IPV6_NEW_ADDR_6TO4_MICROSOFT; type |= IPV6_ADDR_IID_32_63_HAS_IPV4; }; }; if (st == (uint32_t) 0x3FFE831Fu || st == (uint32_t) 0x20010000u) { /* 3ffe:831f::/32 -> Teredo (6bone, older draft) */ /* 2001:0000::/32 -> Teredo (RFC 4380) */ type |= IPV6_NEW_ADDR_TEREDO; if (ipv6addr_getword(ipv6addrp, 5) == 0xffffu) { // port=0, done by anonymization type |= IPV6_ADDR_ANONYMIZED_IID; }; }; if ((st & 0xFFFFFFF0u) == 0x20010010u) { /* 2001:0010::/28 -> ORCHID (RFC 4843) */ type |= IPV6_NEW_ADDR_ORCHID; /* ORCHID has no IID, only a 100 bit encoded hash */ /* check for anonymized hash */ if ((st2 & ANON_TOKEN_MASK_00_31) == (ANON_TOKEN_VALUE_00_31 & ANON_TOKEN_MASK_00_31)) { DEBUGPRINT_NA(DEBUG_libipv6addr, "probably anonymized ORCHID found"); /* verify now checksum */ if (ipv6addr_verify_checksum_anonymized_iid(ipv6addrp) == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum ok - anonymized ORCHID found"); type |= IPV6_ADDR_ANONYMIZED_IID; } else { DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum NOT ok - no anonymized ORCHID found"); }; }; goto END_ipv6addr_gettype; }; if ((st == 0x0064ff9bu) && (st1 == 0) && (st2 == 0)) { /* 64:ff9b::/96 -> NAT64 (RFC 6052) */ type |= IPV6_NEW_ADDR_NAT64; }; if (((type & (IPV6_NEW_ADDR_6BONE | IPV6_NEW_ADDR_6TO4)) == 0) && ((st & 0xE0000000u) == 0x20000000u)) { /* 2000::/3 -> productive IPv6 address space */ /* except 3ffe::/16 (6BONE) and 2002::/16 (6TO4) */ type |= IPV6_NEW_ADDR_PRODUCTIVE; }; if ((st2 == (uint32_t) 0x00000001u) && (st3 & 0xFF000000u) == 0xFF000000u) { /* ..:0000:0001:ffxx:xxxx solicited node suffix */ type |= IPV6_NEW_ADDR_SOLICITED_NODE; }; if (((st2 & 0xFDFFFF00u) == (uint32_t) 0x00005E00u) && ((type & IPV6_NEW_ADDR_TEREDO) == 0)) { /* ISATAP (RFC 4214/5214), but not if TEREDO */ /* ..:0x00:5EFE:xx.xx.xx.xx ISATAP IID with private IPv4 address */ /* ..:0x00:5EFE:xx.xx.xx.xx ISATAP IID with public IPv4 address */ /* ..:0x00:5EFF:FExx:xxxx ISATAP IID with vendor ID */ /* ..:0x00:5Exx:xxxx:xxxx ISATAP IID with extension ID */ /* x & 0x2 == 0x2:global, x & 0x02 == 0:local */ type |= IPV6_NEW_ADDR_IID_ISATAP; if ((st2 & 0x02000000u) == 0x02000000u) { type |= IPV6_NEW_ADDR_IID_GLOBAL; } else { type |= IPV6_NEW_ADDR_IID_LOCAL; }; if ((st2 & 0x000000ffu) == 0x000000feu) { type |= IPV6_ADDR_IID_32_63_HAS_IPV4; }; }; /* multicast */ if ((st & 0xFF000000u) == 0xFF000000u) { type |= IPV6_ADDR_MULTICAST; switch((st & 0x00FF0000u)) { case (0x00010000u): type |= IPV6_ADDR_LOOPBACK; break; case (0x00020000u): type |= IPV6_ADDR_LINKLOCAL; break; case (0x00050000u): type |= IPV6_ADDR_SITELOCAL; break; }; goto END_ipv6addr_gettype; }; /* special */ if ((st | st1) == 0) { if (st2 == 0) { if (st3 == 0) { type |= IPV6_ADDR_ANY; goto END_ipv6addr_gettype; }; if (st3 == (uint32_t) 0x00000001u) { type |= IPV6_ADDR_LOOPBACK | IPV6_ADDR_UNICAST; goto END_ipv6addr_gettype; }; type |= IPV6_ADDR_COMPATv4 | IPV6_ADDR_UNICAST; } if (st2 == (uint32_t) 0x0000ffffu) type |= IPV6_ADDR_MAPPED; }; // check for included anonymized IPv4 address if ((type & (IPV6_ADDR_COMPATv4| IPV6_ADDR_MAPPED | IPV6_NEW_ADDR_NAT64 | IPV6_NEW_ADDR_6TO4)) != 0) { ipv6addr_copy(&ipv6addr, ipv6addrp); ipv6addr.typeinfo = type; // store what we already have r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { if ((ipv4addr.typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { if ((type & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) != 0) { type |= IPV6_ADDR_ANONYMIZED_PREFIX; }; if ((type & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_IID) != 0) { type |= IPV6_ADDR_ANONYMIZED_IID; }; }; }; } else if ((type & (IPV6_NEW_ADDR_TEREDO)) != 0) { // check client IP ipv6addr_copy(&ipv6addr, ipv6addrp); ipv6addr.typeinfo = type; // store what we already have r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { if ((ipv4addr.typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { type |= IPV6_ADDR_ANONYMIZED_IID; }; }; // check server IP ipv6addr_copy(&ipv6addr, ipv6addrp); ipv6addr.typeinfo = type; // store what we already have r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_TEREDO_SERVER); if (r == 0) { if ((ipv4addr.typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { type |= IPV6_ADDR_ANONYMIZED_PREFIX; }; }; }; /* Consider all addresses with the first three bits different of 000 and 111 as unicasts. also link-local,site-local,ULULA except LISP anycast */ if ((((st & 0xE0000000u) != 0x00000000u) && ((st & 0xE0000000u) != 0xE0000000u)) || ((st & 0xFC000000u) == 0xFC000000u)) { if ((type2 & (IPV6_ADDR_TYPE2_LISP_PETR | IPV6_ADDR_TYPE2_LISP_MAP_RESOLVER)) == 0) { type |= IPV6_ADDR_UNICAST; }; if ((type & IPV6_NEW_ADDR_TEREDO) != 0) { /* teredo has no IID */ goto END_ipv6addr_gettype; }; type |= IPV6_NEW_ADDR_IID; if ((st & 0xFFC00000u) == 0xFE800000u) { type |= IPV6_ADDR_LINKLOCAL; if ( ((st2 == 0x80005445u) && (st3 ==0x5245444fu)) \ || ((st2 == 0x0000FFFFu) && (st3 ==0xFFFFFFFDu)) \ ) { /* fe80::8000:5445:5245:444F : LSB string: "TEREDO" */ /* fe80::ffff:ffff:fffd */ type |= IPV6_NEW_ADDR_LINKLOCAL_TEREDO | IPV6_NEW_ADDR_IID_TEREDO; }; } else if ((st & 0xFFC00000u) == 0xFEC00000u) { type |= IPV6_ADDR_SITELOCAL; }; if ((type & IPV6_NEW_ADDR_IID) != 0) { /* check IID */ if ((st2 & 0x02000000u) == 0x02000000u) { type |= IPV6_NEW_ADDR_IID_GLOBAL; if ((type & IPV6_NEW_ADDR_IID_ISATAP) != 0) { /* ISATAP is handled above */ } else { if (((st2 & (uint32_t) 0x000000FFu) == (uint32_t) 0x000000FFu) && ((st3 & (uint32_t) 0xFE000000u) == (uint32_t) 0xFE000000u)) { type |= IPV6_NEW_ADDR_IID_EUI48; } else { type |= IPV6_NEW_ADDR_IID_EUI64; }; }; } else { if ((type & IPV6_NEW_ADDR_IID_ISATAP) != 0) { /* ISATAP is handled above */ } else if (((st2 & (uint32_t) 0x000000FFu) == (uint32_t) 0x000000FFu) && ((st3 & (uint32_t) 0xFE000000u) == (uint32_t) 0xFE000000u)) { /* EUI-48 local scope based */ type |= IPV6_NEW_ADDR_IID_EUI48 | IPV6_NEW_ADDR_IID_LOCAL; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "check for anonymized IID: %04x:%04x:%04x:%04x", U32_MSB16(st2), U32_LSB16(st2), U32_MSB16(st3), U32_LSB16(st3)); /* check for anonymized IID */ if ((st2 & ANON_TOKEN_MASK_00_31) == (ANON_TOKEN_VALUE_00_31 & ANON_TOKEN_MASK_00_31)) { DEBUGPRINT_NA(DEBUG_libipv6addr, "perhaps anonymized IID found (ANON token match)"); /* verify now checksum */ if (ipv6addr_verify_checksum_anonymized_iid(ipv6addrp) == 0) { p = UNPACK_XMS(st2, 0, ANON_IID_PREFIX_NIBBLES_MASK, ANON_IID_PREFIX_NIBBLES_SHIFT); DEBUGPRINT_WA(DEBUG_libipv6addr, "checksum ok - probably anonymized IID found, p=%d", p); if (p == 0) { // no additional check } else if (p == 0xf) { if ((type & IPV6_ADDR_ANONYMIZED_PREFIX) == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "no anonymized prefix found, but p=f -> no anonymized IID"); goto END_ANON_IID; }; } else { // check anonymized nibbles in prefix DEBUGPRINT_WA(DEBUG_libipv6addr, "check now for %d anonymized nibbles in prefix: %04x:%04x:%04x:%04x", p, U32_MSB16(st), U32_LSB16(st), U32_MSB16(st1), U32_LSB16(st1)); if (p >= 8) { mask_0_15 = 0xffffffff >> ((16 - p) * 4); mask_16_31 = 0xffffffff; } else { mask_0_15 = 0x0; mask_16_31 = 0xffffffff >> ((8 - p) * 4); }; // check 1st 32-bit block if ((st & mask_0_15) != ((ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16)) & mask_0_15)) { DEBUGPRINT_WA(DEBUG_libipv6addr, "anonymized parts of prefix doesn't match amount of given nibbles: 0-15=%08x mask=%08x", st, mask_0_15); goto END_ANON_IID; }; // check 2nd 32-bit block if ((st1 & mask_16_31) != ((ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16)) & mask_16_31)) { DEBUGPRINT_WA(DEBUG_libipv6addr, "anonymized parts of prefix doesn't match amount of given nibbles: 16-31=%08x mask=%08x", st1, mask_16_31); goto END_ANON_IID; }; DEBUGPRINT_NA(DEBUG_libipv6addr, "anonymized prefix verified"); }; if (((st2 & ANON_IID_RANDOM_MASK_00_31) == ANON_IID_RANDOM_VALUE_00_31) && ((st3 & ANON_IID_RANDOM_MASK_32_63) == ANON_IID_RANDOM_VALUE_32_63)) { type |= IPV6_NEW_ADDR_IID_RANDOM | IPV6_ADDR_ANONYMIZED_IID | IPV6_NEW_ADDR_IID_LOCAL; goto END_ipv6addr_gettype; } else if (((st2 & ANON_IID_STATIC_MASK_00_31) == ANON_IID_STATIC_VALUE_00_31) && ((st3 & ANON_IID_STATIC_MASK_32_63) == ANON_IID_STATIC_VALUE_32_63)) { type |= IPV6_NEW_ADDR_IID_LOCAL | IPV6_ADDR_ANONYMIZED_IID; goto END_ipv6addr_gettype; } else if (((st2 & ANON_IID_EUI48_MASK_00_31) == ANON_IID_EUI48_VALUE_00_31) && ((st3 & ANON_IID_EUI48_MASK_32_63) == ANON_IID_EUI48_VALUE_32_63)) { type |= IPV6_NEW_ADDR_IID_EUI48 | IPV6_ADDR_ANONYMIZED_IID; /* retrieve inverted local/global bit */ if ( (st3 & ANON_IID_EUIxx_SCOPE_MASK) == ANON_IID_EUIxx_SCOPE_GLOBAL) { type |= IPV6_NEW_ADDR_IID_GLOBAL; } else { type |= IPV6_NEW_ADDR_IID_LOCAL; }; goto END_ipv6addr_gettype; } else if (((st2 & ANON_IID_EUI64_MASK_00_31) == ANON_IID_EUI64_VALUE_00_31) && ((st3 & ANON_IID_EUI64_MASK_32_63) == ANON_IID_EUI64_VALUE_32_63)) { type |= IPV6_NEW_ADDR_IID_EUI64 | IPV6_ADDR_ANONYMIZED_IID; /* retrieve local/global bit */ if ( (st3 & ANON_IID_EUIxx_SCOPE_MASK) == ANON_IID_EUIxx_SCOPE_GLOBAL) { type |= IPV6_NEW_ADDR_IID_GLOBAL; } else { type |= IPV6_NEW_ADDR_IID_LOCAL; }; goto END_ipv6addr_gettype; } else if (((st2 & ANON_IID_IPV4_MASK_00_31) == ANON_IID_IPV4_VALUE_00_31) && ((st3 & ANON_IID_IPV4_MASK_32_63) == ANON_IID_IPV4_VALUE_32_63)) { type |= IPV6_ADDR_IID_32_63_HAS_IPV4 | IPV6_ADDR_ANONYMIZED_IID; if ((type & IPV6_NEW_ADDR_6TO4) != 0) { // anonymized 6to4 microsoft address type |= IPV6_NEW_ADDR_6TO4_MICROSOFT | IPV6_NEW_ADDR_IID_LOCAL; }; goto END_ipv6addr_gettype; } else if (((st2 & ANON_IID_ISATAP_MASK_00_31) == ANON_IID_ISATAP_VALUE_00_31)) { type |= IPV6_NEW_ADDR_IID_ISATAP | IPV6_ADDR_ANONYMIZED_IID; if ((st3 & ANON_IID_ISATAP_TYPE_MASK_32_63) == ANON_IID_ISATAP_TYPE_IPV4_VALUE_32_63) { type |= IPV6_ADDR_IID_32_63_HAS_IPV4; }; if (((st3 & ANON_IID_ISATAP_SCOPE_MASK) == ANON_IID_ISATAP_SCOPE_GLOBAL)) { type |= IPV6_NEW_ADDR_IID_GLOBAL; } else { type |= IPV6_NEW_ADDR_IID_LOCAL; }; goto END_ipv6addr_gettype; }; if ((ipv6calc_debug & DEBUG_libipv6addr_anonymization_unknown_break) != 0) { // ipv6calc_debug usage ok DEBUGPRINT_WA(DEBUG_libipv6addr_anonymization_unknown_break, "unhandled probably anonymized IID found, STOP because of debug level: %08x %08x", st2, st3); exit(1); } else { DEBUGPRINT_NA(DEBUG_libipv6addr, "unhandled probably anonymized IID found (this can really happen), proceed further on"); };; } else { DEBUGPRINT_NA(DEBUG_libipv6addr, "checksum WRONG - no anonymized IID found, proceed further on"); }; }; END_ANON_IID: type |= IPV6_NEW_ADDR_IID_LOCAL; if ((type & (IPV6_ADDR_IID_32_63_HAS_IPV4 | IPV6_NEW_ADDR_LINKLOCAL_TEREDO | IPV6_NEW_ADDR_IID_ISATAP | IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_SOLICITED_NODE)) == 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "call IID random detection, typeinfo=%08x", type); /* fuzzy detection of random IID (e.g. privacy extension) */ r = ipv6addr_iidrandomdetection(ipv6addrp, &variances); if (r == 0) { type |= IPV6_NEW_ADDR_IID_RANDOM; } else if (r == 2) { type |= IPV6_NEW_ADDR_IID_RANDOM | IPV6_ADDR_ANONYMIZED_IID; } else if (r == 3) { type |= IPV6_NEW_ADDR_IID_LOCAL | IPV6_ADDR_ANONYMIZED_IID; }; }; }; }; } else { type |= IPV6_ADDR_RESERVED; }; END_ipv6addr_gettype: if (typeinfo2p != NULL) { /* set typeinfo2 if not a NULL pointer */ *typeinfo2p = type2; }; return (type); }; /* * function stores an IPv6 literal address string into a structure * * in : *addrstring = IPv6 address * out: *resultstring = error message * out: ipv6addrp = changed IPv6 address structure * ret: ==0: ok, !=0: error */ int addrliteral_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1; unsigned int s; char tempstring[NI_MAXHOST], tempstring2[NI_MAXHOST], *cptr; const char *literalstring = ".ipv6-literal.net"; resultstring[0] = '\0'; /* clear result string */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Got input '%s'", addrstring); /* lowercase string */ for (s = 0; s <= strlen(addrstring); s++) { /* including trailing \0 */ tempstring2[s] = tolower(addrstring[s]); } /* search for literal string */ cptr = strstr(tempstring2, literalstring); DEBUGPRINT_WA(DEBUG_libipv6addr, "String lengths addrstring=%d strstr=%d literal=%d", (unsigned int) strlen(addrstring), (unsigned int) strlen(cptr), (unsigned int) strlen(literalstring)); if (cptr == NULL) { snprintf(resultstring, resultstring_length, "Error in given IPv6 literal address, has no 'ipv6-literal.net' included!"); return (1); }; if (strlen(cptr) != strlen(literalstring)) { snprintf(resultstring, resultstring_length, "Error in given IPv6 literal address, ends not with 'ipv6-literal.net'!"); return (1); }; /* copy without literal */ snprintf(tempstring, strlen(addrstring) - strlen(literalstring) + 1, "%s", addrstring); DEBUGPRINT_WA(DEBUG_libipv6addr, "String without literal suffix: %s", tempstring); /* replace - with : */ for (s = 0; s < strlen(tempstring); s++) { if (tempstring[s] == '-') { tempstring[s] = ':'; } else if (tempstring[s] == 's') { tempstring[s] = '%'; }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "String converted to non-literal format: %s", tempstring); /* call normal IPv6 parsing function */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, resultstring_length, ipv6addrp); return (retval); }; /* * function stores an IPv6 address string into a structure * * in : *addrstring = IPv6 address * out: *resultstring = error message * out: ipv6addrp = changed IPv6 address structure * ret: ==0: ok, !=0: error */ int addr_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, result, i, cpoints = 0, ccolons = 0, cxdigits = 0; char *addronlystring, *cp, tempstring[NI_MAXHOST], tempstring2[NI_MAXHOST], *cptr, **ptrptr; int expecteditems = 0; int temp[8]; unsigned int compat[4]; ptrptr = &cptr; resultstring[0] = '\0'; /* clear result string */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Got input '%s' (resultstring_length=%u)", addrstring, (unsigned int) resultstring_length); if (strlen(addrstring) < 2) { fprintf(stderr, "Error in given IPv6 address, has less than 2 chars!\n"); return (1); }; if (strlen(addrstring) >= sizeof(tempstring)) { fprintf(stderr, "Error in given IPv6 address, has too much chars: %s\n", addrstring); return (1); }; ipv6addr_clearall(ipv6addrp); snprintf(tempstring, sizeof(tempstring), "%s", addrstring); /* save prefix length first, if available */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Call strtok_r, searching for / in %s", tempstring); addronlystring = strtok_r(tempstring, "/", ptrptr); if ( addronlystring == NULL ) { fprintf(stderr, "Strange input: %s\n", addrstring); return (1); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Got address only string: %s", addronlystring); cp = strtok_r (NULL, "/", ptrptr); if ( cp != NULL ) { i = atoi(cp); if (i < 0 || i > 128 ) { snprintf(resultstring, resultstring_length, "Illegal prefix length: '%s'", cp); retval = 1; return (retval); }; ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) i; DEBUGPRINT_WA(DEBUG_libipv6addr, "prefix length %u", (unsigned int) ipv6addrp->prefixlength); DEBUGPRINT_WA(DEBUG_libipv6addr, "flag_prefixuse %d", ipv6addrp->flag_prefixuse); }; snprintf(tempstring2, sizeof(tempstring2), "%s", addronlystring); /* save scope ID, if available */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Call strtok_r, searching for %% in %s", tempstring2); addronlystring = strtok_r(tempstring2, "%%", ptrptr); if ( addronlystring == NULL ) { fprintf(stderr, "Strange input: %s\n", addronlystring); return (1); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Got address only string: %s", addronlystring); cp = strtok_r (NULL, "%", ptrptr); if ( cp != NULL ) { ipv6addrp->flag_scopeid = 1; snprintf(ipv6addrp->scopeid, sizeof(ipv6addrp->scopeid), "%s", cp); DEBUGPRINT_WA(DEBUG_libipv6addr, "scope ID : %s", ipv6addrp->scopeid); DEBUGPRINT_WA(DEBUG_libipv6addr, "flag_scopeid: %d", ipv6addrp->flag_scopeid); }; if ((strlen(addronlystring) < 2) || (strlen(addronlystring) > 45)) { /* min: :: */ /* max: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128 */ /* max: ffff:ffff:ffff:ffff:ffff:ffff:123.123.123.123 */ snprintf(resultstring, resultstring_length, "Error in given IPv6 address, has not 2 to 45 chars!"); return (1); }; /* uncompress string, if necessary */ if (strstr(addronlystring, "::") != NULL) { result = compaddr_to_uncompaddr(addronlystring, tempstring, sizeof(tempstring)); DEBUGPRINT_WA(DEBUG_libipv6addr, "Result of uncompressed string: '%s'", tempstring); if ( result != 0 ) { snprintf(resultstring, resultstring_length, "%s", tempstring); retval = 1; return (retval); }; } else { DEBUGPRINT_WA(DEBUG_libipv6addr, "Copy string: '%s'", addronlystring); snprintf(tempstring, sizeof(tempstring), "%s", addronlystring); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Check string: '%s'", tempstring); /* count ":", "." and xdigits */ for (i = 0; i < (int) strlen(tempstring); i++) { if (tempstring[i] == ':') { ccolons++; }; if (tempstring[i] == '.') { cpoints++; }; if (isxdigit(tempstring[i])) { cxdigits++; }; }; /* check amount of ":", must be 6 (compat) or 7 (other) */ if ( ! ( ( ( ccolons == 7 ) && ( cpoints == 0 ) ) || ( ( ccolons == 6 ) && ( cpoints == 3 ) ) ) ) { if (strstr(addronlystring, "::")) { snprintf(resultstring, resultstring_length, "Error in given address expanded to '%s' is not valid!", tempstring); } else { snprintf(resultstring, resultstring_length, "Error in given address '%s' is not valid!", addrstring); }; retval = 1; return (retval); }; /* amount of ":" + "." + xdigits must be length */ if (ccolons + cpoints + cxdigits != (int) strlen(tempstring)) { snprintf(resultstring, resultstring_length, "Error in given address '%s' is not valid!", tempstring); retval = 1; return (retval); }; /* clear variables */ for ( i = 0; i <= 3; i++ ) { compat[i] = 0; }; ipv6addr_clear(ipv6addrp); if ( ccolons == 6 ) { /* compatv4/mapped format */ expecteditems = 10; result = sscanf(tempstring, "%x:%x:%x:%x:%x:%x:%u.%u.%u.%u", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &compat[0], &compat[1], &compat[2], &compat[3]); /* check compat */ for ( i = 0; i <= 3; i++ ) { if ( compat[i] > 255 ) { snprintf(resultstring, resultstring_length, "Error in given compatv4/mapped IPv6 address, '%s' is not valid on position %d!", addrstring, i); retval = 1; return (retval); }; }; temp[6] = (int) (( compat[0] << 8 ) | compat[1]); temp[7] = (int) (( compat[2] << 8 ) | compat[3]); } else { /* normal format */ expecteditems = 8; result = sscanf(tempstring, "%x:%x:%x:%x:%x:%x:%x:%x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7]); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "reading into array, got items: %d", result); if ( result != expecteditems ) { snprintf(resultstring, resultstring_length, "Error in given IPv6 address, splitting of '%s' returns %d items instead of %d!", addronlystring, result, expecteditems); retval = 1; return (retval); }; /* check address words range */ for ( i = 0; i <= 7; i++ ) { if ( (temp[i] < 0) || (temp[i] > 0xffff) ) { snprintf(resultstring, resultstring_length, "Error in given IPv6 address, '%s' is not valid on position %d!", addronlystring, i); retval = 1; return (retval); }; }; /* copy into structure */ for ( i = 0; i <= 7; i++ ) { DEBUGPRINT_WA(DEBUG_libipv6addr, "Push word %u: %04x", (unsigned int) i, (unsigned int) temp[i]); ipv6addr_setword(ipv6addrp, (unsigned int) i, (unsigned int) temp[i]); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "In structure %08x %08x %08x %08x", (unsigned int) ipv6addr_getdword(ipv6addrp, 0), (unsigned int) ipv6addr_getdword(ipv6addrp, 1), (unsigned int) ipv6addr_getdword(ipv6addrp, 2), (unsigned int) ipv6addr_getdword(ipv6addrp, 3)); DEBUGPRINT_WA(DEBUG_libipv6addr, "In structure %04x %04x %04x %04x %04x %04x %04x %04x", (unsigned int) ipv6addr_getword(ipv6addrp, 0), (unsigned int) ipv6addr_getword(ipv6addrp, 1), (unsigned int) ipv6addr_getword(ipv6addrp, 2), (unsigned int) ipv6addr_getword(ipv6addrp, 3), (unsigned int) ipv6addr_getword(ipv6addrp, 4), (unsigned int) ipv6addr_getword(ipv6addrp, 5), (unsigned int) ipv6addr_getword(ipv6addrp, 6), (unsigned int) ipv6addr_getword(ipv6addrp, 7)); ipv6addr_settype(ipv6addrp, 1); DEBUGPRINT_WA(DEBUG_libipv6addr, "flag_prefixuse %d", ipv6addrp->flag_prefixuse); ipv6addrp->flag_valid = 1; retval = 0; return (retval); }; /* * stores the ipv6addr structure in an uncompressed IPv6 format string * * in: ipv6addr = IPv6 address structure * out: *resultstring = IPv6 address (modified) * ret: ==0: ok, !=0: error */ static int ipv6addrstruct_to_uncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; unsigned int s; char tempstring[NI_MAXHOST], temp2string[NI_MAXHOST]; /* print array */ if ( ((ipv6addrp->typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED | IPV6_ADDR_IID_32_63_HAS_IPV4)) != 0) && ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) == 0)) { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring, sizeof(tempstring), "%04x:%04x:%04x:%04x:%04x:%04x:%u.%u.%u.%u", \ (unsigned int) ipv6addr_getword(ipv6addrp, 0), \ (unsigned int) ipv6addr_getword(ipv6addrp, 1), \ (unsigned int) ipv6addr_getword(ipv6addrp, 2), \ (unsigned int) ipv6addr_getword(ipv6addrp, 3), \ (unsigned int) ipv6addr_getword(ipv6addrp, 4), \ (unsigned int) ipv6addr_getword(ipv6addrp, 5), \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); } else { snprintf(tempstring, sizeof(tempstring), "%x:%x:%x:%x:%x:%x:%u.%u.%u.%u", \ (unsigned int) ipv6addr_getword(ipv6addrp, 0), \ (unsigned int) ipv6addr_getword(ipv6addrp, 1), \ (unsigned int) ipv6addr_getword(ipv6addrp, 2), \ (unsigned int) ipv6addr_getword(ipv6addrp, 3), \ (unsigned int) ipv6addr_getword(ipv6addrp, 4), \ (unsigned int) ipv6addr_getword(ipv6addrp, 5), \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); }; } else { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring, sizeof(tempstring), "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x", \ (unsigned int) ipv6addr_getword(ipv6addrp, 0), \ (unsigned int) ipv6addr_getword(ipv6addrp, 1), \ (unsigned int) ipv6addr_getword(ipv6addrp, 2), \ (unsigned int) ipv6addr_getword(ipv6addrp, 3), \ (unsigned int) ipv6addr_getword(ipv6addrp, 4), \ (unsigned int) ipv6addr_getword(ipv6addrp, 5), \ (unsigned int) ipv6addr_getword(ipv6addrp, 6), \ (unsigned int) ipv6addr_getword(ipv6addrp, 7) \ ); } else { snprintf(tempstring, sizeof(tempstring), "%x:%x:%x:%x:%x:%x:%x:%x", \ (unsigned int) ipv6addr_getword(ipv6addrp, 0), \ (unsigned int) ipv6addr_getword(ipv6addrp, 1), \ (unsigned int) ipv6addr_getword(ipv6addrp, 2), \ (unsigned int) ipv6addr_getword(ipv6addrp, 3), \ (unsigned int) ipv6addr_getword(ipv6addrp, 4), \ (unsigned int) ipv6addr_getword(ipv6addrp, 5), \ (unsigned int) ipv6addr_getword(ipv6addrp, 6), \ (unsigned int) ipv6addr_getword(ipv6addrp, 7) \ ); }; }; if ((ipv6addrp->flag_prefixuse == 1) && ((formatoptions & (FORMATOPTION_literal | FORMATOPTION_no_prefixlength)) == 0)) { /* append prefix length */ snprintf(resultstring, resultstring_length, "%s/%u", tempstring, (unsigned int) ipv6addrp->prefixlength); } else { if ((formatoptions & FORMATOPTION_literal) != 0) { /* replace : by - */ for (s = 0; s < strlen(tempstring); s++) { if (tempstring[s] == ':') { tempstring[s] = '-'; }; }; if (ipv6addrp->flag_scopeid) { snprintf(resultstring, resultstring_length, "%ss%s.ipv6-literal.net", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, resultstring_length, "%s.ipv6-literal.net", tempstring); } } else { if (ipv6addrp->flag_scopeid) { snprintf(resultstring, resultstring_length, "%s%%%s", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, resultstring_length, "%s", tempstring); }; }; }; if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { snprintf(temp2string, sizeof(temp2string), "IPV6=%s", resultstring); snprintf(resultstring, resultstring_length, "%s", temp2string); }; retval = 0; return (retval); }; /* * stores the prefix of an ipv6addr structure in an uncompressed IPv6 format string * * in: ipv6addr = IPv6 address structure, formatoptions * out: *resultstring = IPv6 address (modified) * ret: ==0: ok, !=0: error */ static int ipv6addrstruct_to_uncompaddrprefix(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; unsigned int max, i; char tempstring1[NI_MAXHOST], tempstring2[NI_MAXHOST]; DEBUGPRINT_NA(DEBUG_libipv6addr, "called"); /* test for misuse */ if ( ((ipv6addrp->typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0 ) && (ipv6addrp->prefixlength > 96) ) { snprintf(resultstring, resultstring_length, "Error, cannot print prefix of a compatv4/mapped address with prefix length bigger than 96!"); retval = 1; return (retval); }; if ( ipv6addrp->prefixlength == 0 ) { snprintf(resultstring, resultstring_length, "Error, cannot print prefix of a address with prefix length 0!"); retval = 1; return (retval); }; max = ( (unsigned int) ipv6addrp->prefixlength - 1 ) / 16u; i = 0; tempstring1[0] = '\0'; while (i <= max ) { if ( i < max ) { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring2, sizeof(tempstring2), "%s%04x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2), "%s%x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; } else { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring2, sizeof(tempstring2), "%s%04x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2), "%s%x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; }; i++; snprintf(tempstring1, sizeof(tempstring1), "%s", tempstring2); }; snprintf(resultstring, resultstring_length, "%s", tempstring1); DEBUGPRINT_WA(DEBUG_libipv6addr, "result string: %s", resultstring); retval = 0; return (retval); }; /* * function stores the suffix of an ipv6addr structure in an uncompressed IPv6 format string * * in: ipv6addr = IPv6 address structure * out: *resultstring = IPv6 address (modified) * ret: ==0: ok, !=0: error */ static int ipv6addrstruct_to_uncompaddrsuffix(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; unsigned int max, i; char tempstring1[NI_MAXHOST], tempstring2[NI_MAXHOST]; DEBUGPRINT_NA(DEBUG_libipv6addr, "called"); /* test for misuse */ if ( ( (ipv6addrp->typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0) && ( ipv6addrp->prefixlength > 96 ) ) { snprintf(resultstring, resultstring_length, "Error, cannot print suffix of a compatv4/mapped address with prefix length bigger than 96!"); retval = 1; return (retval); }; if ( ipv6addrp->prefixlength == 128 ) { snprintf(resultstring, resultstring_length, "Error, cannot print suffix of a address with prefix length 128!"); retval = 1; return (retval); }; max = 7; i = (unsigned int) ipv6addrp->prefixlength / 16u; tempstring1[0] = '\0'; while (i <= max ) { if ( ( ( ipv6addrp->typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0 ) && ( i == 6 ) ) { snprintf(tempstring2, sizeof(tempstring2), "%s%u.%u.%u.%u", tempstring1, \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); i = max; } else if ( i < max ) { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring2, sizeof(tempstring2), "%s%04x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2), "%s%x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; } else { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring2, sizeof(tempstring2), "%s%04x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2), "%s%x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; }; i++; snprintf(tempstring1, sizeof(tempstring1), "%s", tempstring2); }; snprintf(resultstring, resultstring_length, "%s", tempstring1); DEBUGPRINT_WA(DEBUG_libipv6addr, "result string: %s", resultstring); retval = 0; return (retval); }; int libipv6addr_ipv6addrstruct_to_uncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; DEBUGPRINT_WA(DEBUG_libipv6addr, "get format option: %08x", (unsigned int) formatoptions); if ( (formatoptions & FORMATOPTION_printprefix) != 0 ) { retval = ipv6addrstruct_to_uncompaddrprefix(ipv6addrp, resultstring, resultstring_length, formatoptions); } else if ( (formatoptions & FORMATOPTION_printsuffix) != 0 ) { retval = ipv6addrstruct_to_uncompaddrsuffix(ipv6addrp, resultstring, resultstring_length, formatoptions); } else { retval = ipv6addrstruct_to_uncompaddr(ipv6addrp, resultstring, resultstring_length, formatoptions); }; if (retval == 0) { /* don't modify case on error messages */ if ( (formatoptions & FORMATOPTION_printlowercase) != 0 ) { /* nothing to do */ } else if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "result string: %s", resultstring); retval = 0; return (retval); }; /* * mask prefix bits (set suffix bits to 0) * * in: structure via reference * out: modified structure */ void ipv6addrstruct_maskprefix(ipv6calc_ipv6addr *ipv6addrp) { unsigned int nbit, nword; uint16_t mask, newword; int i; DEBUGPRINT_NA(DEBUG_libipv6addr, "called"); if (ipv6addrp->flag_prefixuse != 1) { /* hmm, no prefix specified. skip */ return; }; for (i = 127; i >= 0; i--) { nbit = (unsigned int) i; if (nbit >= (unsigned int) ipv6addrp->prefixlength) { /* set bit to zero */ /* calculate word (16 bit) - matches with addr6p[]*/ nword = (nbit & 0x70) >> 4; /* calculate mask */ mask = ((uint16_t) 0x8000u) >> (( ((uint16_t) nbit) & ((uint16_t) 0x0fu))); newword = ipv6addr_getword(ipv6addrp, nword) & (~ mask ); DEBUGPRINT_WA(DEBUG_libipv6addr, "bit: %u = nword: %u, mask: %04x, word: %04x newword: %04x", nbit, nword, (unsigned int) mask, (unsigned int) ipv6addr_getword(ipv6addrp, nword), (unsigned int) newword); ipv6addr_setword(ipv6addrp, nword, (unsigned int) newword); }; }; }; /* * mask suffix bits (set prefix bits to 0) * * in: structure via reference * out: modified structure */ void ipv6addrstruct_masksuffix(ipv6calc_ipv6addr *ipv6addrp) { unsigned int nbit, nword; uint16_t mask, newword; int i; DEBUGPRINT_NA(DEBUG_libipv6addr, "called"); if (ipv6addrp->flag_prefixuse != 1) { /* hmm, no prefix specified. skip */ return; }; for (i = 127; i >= 0; i--) { nbit = (unsigned int) i; if (nbit < (unsigned int) ipv6addrp->prefixlength) { /* set bit to zero */ /* calculate word (16 bit) - matches with addr6p[]*/ nword = (nbit & 0x70) >> 4; /* calculate mask */ mask = ((uint32_t) 0x8000u) >> (((uint32_t) nbit) & ((uint32_t) 0x0fu )); newword = ipv6addr_getword(ipv6addrp, nword) & (~ mask ); DEBUGPRINT_WA(DEBUG_libipv6addr, "%u = nword: %u, mask: %04x, word: %04x newword: %04x", nbit, nword, (unsigned int) mask, (unsigned int) ipv6addr_getword(ipv6addrp, nword), (unsigned int) newword); ipv6addr_setword(ipv6addrp, nword, (unsigned int) newword); }; }; }; /* * function stores an 16 char token into a structure * * in : *addrstring = 16 char token * out: *resultstring = error message * out: ipv6addr = IPv6 address structure * ret: ==0: ok, !=0: error */ int tokenlsb64_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, result; int temp[4]; char tempstring[NI_MAXHOST]; resultstring[0] = '\0'; /* clear result string */ DEBUGPRINT_WA(DEBUG_libipv6addr, "got input '%s'", addrstring); if ( strlen(addrstring) != 16 ) { snprintf(resultstring, resultstring_length, "Error in given token '%s' is not valid (length != 16)!", addrstring); retval = 1; return (retval); }; /* scan address into array */ result = sscanf(addrstring, "%04x%04x%04x%04x", &temp[0], &temp[1], &temp[2], &temp[3]); if ( result != 4 ) { snprintf(resultstring, resultstring_length, "Error splitting address '%s', got %d items instead of 4!", addrstring, result); retval = 1; return (retval); }; /* set prefix */ snprintf(tempstring, sizeof(tempstring), "0:0:0:0:%04x:%04x:%04x:%04x", \ (unsigned int) temp[0] ,\ (unsigned int) temp[1], \ (unsigned int) temp[2], \ (unsigned int) temp[3] \ ); /* store into structure */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, sizeof(resultstring), ipv6addrp); return (retval); }; /* * function stores an interface identifier into a structure * * in : *addrstring = interface identifier * out: *resultstring = error message * out: ipv6addr = IPv6 address structure * ret: ==0: ok, !=0: error */ int identifier_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, i, ccolons = 0; char tempstring[NI_MAXHOST]; resultstring[0] = '\0'; /* clear result string */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Got input '%s'", addrstring); if ((strlen(addrstring) < 2) || (strlen(addrstring) > 19)) { /* min: :: */ /* max: ffff:ffff:ffff:ffff */ snprintf(resultstring, resultstring_length, "Error in given identifier identifier, has not 2 to 19 chars!"); retval = 1; return (retval); }; /* count ":", must be 2 to 3 */ for (i = 0; i < (int) strlen(addrstring); i++) { if (addrstring[i] == ':') { ccolons++; }; }; if ((ccolons < 2) || (ccolons > 3)) { snprintf(resultstring, resultstring_length, "Error in given identifier '%s' is not valid!", addrstring); retval = 1; return (retval); }; /* set prefix */ snprintf(tempstring, sizeof(tempstring), "0:0:0:0:%s", addrstring); /* store into structure */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, sizeof(resultstring), ipv6addrp); DEBUGPRINT_WA(DEBUG_libipv6addr, "result string '%s'", resultstring); return (retval); }; /* * function stores the ipv6addr structure in an uncompressed IPv6 format string * * in: ipv6addr = IPv6 address structure * out: *resultstring = IPv6 address (modified) * ret: ==0: ok, !=0: error */ int libipv6addr_ipv6addrstruct_to_tokenlsb64(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, uint32_t formatoptions) { int retval = 1; /* print array */ snprintf(resultstring, resultstring_length, "%04x%04x%04x%04x", \ (unsigned int) ipv6addr_getword(ipv6addrp, 4), \ (unsigned int) ipv6addr_getword(ipv6addrp, 5), \ (unsigned int) ipv6addr_getword(ipv6addrp, 6), \ (unsigned int) ipv6addr_getword(ipv6addrp, 7) \ ); if ( (formatoptions & FORMATOPTION_printlowercase) != 0 ) { /* nothing to do */ } else if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "result string '%s'", resultstring); retval = 0; return (retval); }; /* * function prints an IPv6 address in native octal format * * in: ipv6addr = IPv6 address structure * formatoptions * out: *resultstring = IPv6 address (modified) * ret: ==0: ok, !=0: error */ int libipv6addr_to_octal(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; char tempstring[NI_MAXHOST]; if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring, sizeof(tempstring), "\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o\\0%03o", (unsigned int) ipv6addrp->in6_addr.s6_addr[0], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[1], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[2], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[3], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[4], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[5], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[6], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[7], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[8], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[9], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[10], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[11], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); } else { snprintf(tempstring, sizeof(tempstring), "\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o\\0%o", (unsigned int) ipv6addrp->in6_addr.s6_addr[0], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[1], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[2], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[3], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[4], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[5], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[6], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[7], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[8], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[9], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[10], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[11], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); }; snprintf(resultstring, resultstring_length, "%s", tempstring); retval = 0; return (retval); }; /* * function prints an IPv6 address in native hex format * * in: ipv6addr = IPv6 address structure * formatoptions * out: *resultstring = IPv6 address (modified) * ret: ==0: ok, !=0: error */ int libipv6addr_to_hex(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; int i; unsigned int s; char tempstring[NI_MAXHOST]; snprintf(tempstring, sizeof(tempstring), "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", (unsigned int) ipv6addrp->in6_addr.s6_addr[0], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[1], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[2], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[3], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[4], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[5], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[6], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[7], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[8], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[9], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[10], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[11], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); snprintf(resultstring, resultstring_length, "%s", tempstring); if ((formatoptions & FORMATOPTION_printprefix) && (ipv6addrp->flag_prefixuse == 1)) { // shorten string resultstring[ipv6addrp->prefixlength / 4] = '\0'; } else if ((formatoptions & FORMATOPTION_printsuffix) && (ipv6addrp->flag_prefixuse == 1)) { // move string for (i = 0; i < 32 - (ipv6addrp->prefixlength / 4); i++) { resultstring[i] = resultstring[i + (ipv6addrp->prefixlength / 4)]; }; resultstring[32 - (ipv6addrp->prefixlength / 4)] = '\0'; }; if (formatoptions & FORMATOPTION_printuppercase) { for (s = 0; s < strlen(resultstring); s++) { resultstring[s] = toupper(resultstring[s]); }; }; retval = 0; return (retval); }; /* * retrieve payload of anonymized prefix * * in: ipv6addrp = pointer to IPv6 address structure * payload_selector: payload which should be retrieved * result_ptr = pointer to a 32-bit result * out: 0 = OK, !=0: not ok */ int ipv6addr_get_payload_anonymized_prefix(const ipv6calc_ipv6addr *ipv6addrp, const int payload_selector, uint32_t *result_ptr) { uint32_t prefix[2], flags; prefix[0] = ipv6addr_getdword(ipv6addrp, 0); prefix[1] = ipv6addr_getdword(ipv6addrp, 1); DEBUGPRINT_WA(DEBUG_libipv6addr, "Get payload %d from %08x%08x", payload_selector, prefix[0], prefix[1]); // retrieve flags flags = UNPACK_XMS(prefix[ANON_PREFIX_FLAGS_DWORD], ANON_PREFIX_FLAGS_XOR, ANON_PREFIX_FLAGS_MASK, ANON_PREFIX_FLAGS_SHIFT); if (flags != 0) { // currently only flags=0 is supported return(1); }; if (payload_selector == ANON_PREFIX_PAYLOAD_CCINDEX) { *result_ptr = UNPACK_XMS(prefix[ANON_PREFIX_CCINDEX_DWORD], ANON_PREFIX_CCINDEX_XOR, ANON_PREFIX_CCINDEX_MASK, ANON_PREFIX_CCINDEX_SHIFT); }; if (payload_selector == ANON_PREFIX_PAYLOAD_ASN32) { *result_ptr = (UNPACK_XMS(prefix[ANON_PREFIX_ASN32_MSB_DWORD], ANON_PREFIX_ASN32_MSB_XOR, ANON_PREFIX_ASN32_MSB_MASK, ANON_PREFIX_ASN32_MSB_SHIFT) << ANON_PREFIX_ASN32_LSB_AMOUNT)| (UNPACK_XMS(prefix[ANON_PREFIX_ASN32_LSB_DWORD], ANON_PREFIX_ASN32_LSB_XOR, ANON_PREFIX_ASN32_LSB_MASK, ANON_PREFIX_ASN32_LSB_SHIFT)); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Extracted payload %d from %08x%08x: %08x", payload_selector, prefix[0], prefix[1], *result_ptr); return(0); }; /* * retrieve payload of anonymized IID * * in: ipv6addrp = pointer to IPv6 address structure * out: payload (max. 32 bit) */ uint32_t ipv6addr_get_payload_anonymized_iid(const ipv6calc_ipv6addr *ipv6addrp, const uint32_t typeinfo) { uint32_t iid[2]; uint32_t payload = 0; iid[0] = ipv6addr_getdword(ipv6addrp, 2); iid[1] = ipv6addr_getdword(ipv6addrp, 3); if ((typeinfo & IPV6_NEW_ADDR_IID_EUI48) != 0) { payload = (iid[1] >> ANON_IID_EUI48_PAYLOAD_SHIFT) & ((2 << ANON_IID_EUI48_PAYLOAD_LENGTH) - 1); } else if ((typeinfo & IPV6_NEW_ADDR_IID_EUI64) != 0) { payload = (iid[1] >> ANON_IID_EUI64_PAYLOAD_SHIFT) & ((2 << ANON_IID_EUI64_PAYLOAD_LENGTH) - 1); } else if ((typeinfo & (IPV6_NEW_ADDR_IID_ISATAP|IPV6_ADDR_IID_32_63_HAS_IPV4)) != 0) { payload = (iid[1] >> ANON_IID_ISATAP_PAYLOAD_SHIFT) & ((2 << ANON_IID_ISATAP_PAYLOAD_LENGTH) - 1); } else if ((typeinfo & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) { payload = (iid[1] >> ANON_IID_IPV4_PAYLOAD_SHIFT) & ((2 << ANON_IID_IPV4_PAYLOAD_LENGTH) - 1); }; return(payload); }; /* * anonymize IPv6 address * * in : *ipv6addrp = IPv6 address structure * *ipv6calc_anon_set = anonymization set structure * ret: 0:anonymization ok * 1:anonymization method not supported */ int libipv6addr_anonymize(ipv6calc_ipv6addr *ipv6addrp, const s_ipv6calc_anon_set *ipv6calc_anon_set) { /* anonymize IPv4 address according to settings */ uint32_t iid[2]; char tempstring[NI_MAXHOST]; char helpstring[NI_MAXHOST]; int i, j, r; int calculate_checksum = 0; int calculate_checksum_prefix = 0; int zeroize_prefix = 0; int zeroize_iid = 0; int anonymized_prefix_nibbles = 0; ipv6calc_macaddr macaddr; ipv6calc_eui64addr eui64addr; ipv6calc_ipv4addr ipv4addr; ipv6calc_ipaddr ipaddr; uint32_t map_value; uint16_t cc_index, flags; uint32_t as_num32, ipv6_prefix[2]; int mask_eui64 = ipv6calc_anon_set->mask_eui64; // int mask_mac = ipv6calc_anon_set->mask_mac; // currently not used int mask_ipv6 = ipv6calc_anon_set->mask_ipv6; int mask_ipv4 = ipv6calc_anon_set->mask_ipv4; int method = ipv6calc_anon_set->method; uint8_t bit_ul = 0; DEBUGPRINT_WA(DEBUG_libipv6addr, "Called: addr=%08x %08x %08x %08x", ipv6addr_getdword(ipv6addrp, 0), ipv6addr_getdword(ipv6addrp, 1), ipv6addr_getdword(ipv6addrp, 2), ipv6addr_getdword(ipv6addrp, 3)); ipv6addr_settype(ipv6addrp, 0); // set typeinfo if not already done if (method == ANON_METHOD_ZEROIZE) { zeroize_prefix = 1; }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { // ipv6calc_debug usage ok libipv6calc_anon_infostring(tempstring, sizeof(tempstring), ipv6calc_anon_set); DEBUGPRINT_WA(DEBUG_libipv6addr, "Anonymize IPv6 address flags: %s", tempstring); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { // ipv6calc_debug usage ok DEBUGPRINT_WA(DEBUG_libipv6addr, "IPv6 address flags: 0x%08x", ipv6addrp->typeinfo); j = 0; snprintf(tempstring, sizeof(tempstring), "TYPE="); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { if ((ipv6addrp->typeinfo & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { if (j != 0) { snprintf(helpstring, sizeof(helpstring), "%s,", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring), "%s%s", tempstring, ipv6calc_ipv6addrtypestrings[i].token); snprintf(tempstring, sizeof(tempstring), "%s", helpstring); j = 1; }; }; fprintf(stderr, "%s\n", tempstring); }; if ((ipv6addrp->typeinfo & (IPV6_ADDR_ANONYMIZED_IID | IPV6_ADDR_ANONYMIZED_PREFIX)) != 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "Already anonymized IPv6 address - skip"); return(0); }; if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { /* extract IPv4 address */ for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) 2 + i)); }; ipv4addr_settype(&ipv4addr, 1); /* Set typeinfo */ ipv4addr.flag_valid = 1; libipv4addr_anonymize(&ipv4addr, mask_ipv4, method); /* store back */ for (i = 0; i <= 3; i++) { ipv6addr_setoctet(ipv6addrp, (unsigned int) 2 + i, (unsigned int) ipv4addr_getoctet(&ipv4addr, (unsigned int) i)); }; }; if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_TEREDO) != 0) { /* extract Teredo client IPv4 address */ for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) 12 + i) ^ 0xff); }; ipv4addr_settype(&ipv4addr, 1); ipv4addr.flag_valid = 1; libipv4addr_anonymize(&ipv4addr, mask_ipv4, method); /* store back */ for (i = 0; i <= 3; i++) { ipv6addr_setoctet(ipv6addrp, (unsigned int) 12 + i, (unsigned int) ipv4addr_getoctet(&ipv4addr, (unsigned int) i) ^ 0xff); }; /* clear client port */ ipv6addr_setword(ipv6addrp, 5, 0 ^ 0xffff); }; if ((ipv6addrp->typeinfo & (IPV6_ADDR_MAPPED | IPV6_ADDR_COMPATv4 | IPV6_NEW_ADDR_NAT64)) != 0) { /* extract IPv4 address */ for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) 12 + i)); }; ipv4addr_settype(&ipv4addr, 1); ipv4addr.flag_valid = 1; libipv4addr_anonymize(&ipv4addr, mask_ipv4, method); /* store back */ for (i = 0; i <= 3; i++) { ipv6addr_setoctet(ipv6addrp, (unsigned int) 12 + i, (unsigned int) ipv4addr_getoctet(&ipv4addr, (unsigned int) i)); }; }; /* prefix handling */ if ( ((ipv6addrp->typeinfo & (IPV6_ADDR_SITELOCAL | IPV6_ADDR_ULUA | IPV6_NEW_ADDR_AGU)) != 0) && ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_ORCHID)) == 0) ) { /* prefix included */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Prefix: pref=%08x %08x", ipv6addr_getdword(ipv6addrp, 0), ipv6addr_getdword(ipv6addrp, 1)); if (((ipv6addrp->typeinfo & IPV6_NEW_ADDR_AGU) != 0) && ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_6TO4)) == 0) && (method == ANON_METHOD_KEEPTYPEASNCC)) { if (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB) == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "anonymization method not supported, db_wrapper reports too less features"); return(1); }; // check whether IPv6 address is anycast if (((ipv6addrp->typeinfo & IPV6_ADDR_ANYCAST) != 0) && ((ipv6addrp->typeinfo2 & IPV6_ADDR_TYPE2_LISP) != 0)) { DEBUGPRINT_NA(DEBUG_libipv6addr, "IPv6 is LISP anycast, skip prefix anonymization"); goto InterfaceIdentifier; }; // check whether IPv6 address is reserved r = libipv6calc_db_wrapper_registry_string_by_ipv6addr(ipv6addrp, helpstring, sizeof(helpstring)); if (r == 2) { DEBUGPRINT_NA(DEBUG_libipv6addr, "IPv6 registry of prefix contains reserved, skip anonymization"); goto InterfaceIdentifier; }; // switch to prefix anonymization if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6BONE) != 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "IPv6 is 6bone unicast, special prefix anonymization"); cc_index = COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN + IPV6_ADDR_REGISTRY_6BONE; as_num32 = 0; } else if ((ipv6addrp->typeinfo2 & IPV6_ADDR_TYPE2_LISP) != 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "IPv6 is LISP unicast, special prefix anonymization"); cc_index = 0x3fd; CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); as_num32 = libipv6calc_db_wrapper_cc_index_by_addr(&ipaddr, NULL) << 20; } else { CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); cc_index = libipv6calc_db_wrapper_cc_index_by_addr(&ipaddr, NULL); as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(&ipaddr); if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { // on unknown country, map registry value cc_index = COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN + libipv6calc_db_wrapper_registry_num_by_ipv6addr(ipv6addrp); }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "cc_index=%d (0x%03x) as_num32=%d (0x%08x)", cc_index, cc_index, as_num32, as_num32); flags = 0x0; ipv6_prefix[0] = 0; ipv6_prefix[1] = 0; // store prefix ipv6_prefix[ANON_PREFIX_TOKEN_DWORD] |= PACK_XMS(ANON_PREFIX_TOKEN_VALUE, ANON_PREFIX_TOKEN_XOR, ANON_PREFIX_TOKEN_MASK, ANON_PREFIX_TOKEN_SHIFT); // store cc_index ipv6_prefix[ANON_PREFIX_CCINDEX_DWORD] |= PACK_XMS(cc_index, ANON_PREFIX_CCINDEX_XOR, ANON_PREFIX_CCINDEX_MASK, ANON_PREFIX_CCINDEX_SHIFT); // store as_num32 ipv6_prefix[ANON_PREFIX_ASN32_MSB_DWORD] |= PACK_XMS(as_num32 >> ANON_PREFIX_ASN32_LSB_AMOUNT, ANON_PREFIX_ASN32_MSB_XOR, ANON_PREFIX_ASN32_MSB_MASK, ANON_PREFIX_ASN32_MSB_SHIFT); ipv6_prefix[ANON_PREFIX_ASN32_LSB_DWORD] |= PACK_XMS(as_num32 & ANON_PREFIX_ASN32_LSB_MASK, ANON_PREFIX_ASN32_LSB_XOR, ANON_PREFIX_ASN32_LSB_MASK, ANON_PREFIX_ASN32_LSB_SHIFT); // store flags ipv6_prefix[ANON_PREFIX_FLAGS_DWORD] |= PACK_XMS(flags, ANON_PREFIX_FLAGS_XOR, ANON_PREFIX_FLAGS_MASK, ANON_PREFIX_FLAGS_SHIFT); DEBUGPRINT_WA(DEBUG_libipv6addr, "anonmized prefix for method=%d: %08x%08x", method, ipv6_prefix[0], ipv6_prefix[1]); anonymized_prefix_nibbles = 0; ipv6addr_setdword(ipv6addrp, 0, ipv6_prefix[0]); ipv6addr_setdword(ipv6addrp, 1, ipv6_prefix[1]); calculate_checksum_prefix = 1; } else if (mask_ipv6 == 64) { /* nothing to do */ } else if (mask_ipv6 < 16 || mask_ipv6 > 64) { /* should not happen here */ fprintf(stderr, "%s/%s: 'mask_ipv6' has an unexpected illegal value: %d\n", __FILE__, __func__, mask_ipv6); exit(EXIT_FAILURE); } else { if (((ipv6addrp->typeinfo & IPV6_ADDR_ANYCAST) != 0) && ((ipv6addrp->typeinfo2 & IPV6_ADDR_TYPE2_LISP) != 0)) { if (mask_ipv6 < 48) { mask_ipv6 = 48; // keeping address type }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Mask adjusted to: %d", mask_ipv6); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Mask prefix with mask: %d", mask_ipv6); if (mask_ipv6 < 64 && mask_ipv6 > 32) { if (zeroize_prefix != 0) { ipv6addr_setdword(ipv6addrp, 1, ipv6addr_getdword(ipv6addrp, 1) & (0xffffffffu << ((unsigned int) 64 - mask_ipv6))); } else { ipv6addr_setdword(ipv6addrp, 1, (ipv6addr_getdword(ipv6addrp, 1) & (0xffffffffu << ((unsigned int) 64 - mask_ipv6))) | ((ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16)) & ((0xffffffffu >> ((unsigned int) mask_ipv6 - 32))))); anonymized_prefix_nibbles = (64 - mask_ipv6) / 4; }; } else if (mask_ipv6 == 32) { if (zeroize_prefix != 0) { ipv6addr_setdword(ipv6addrp, 1, 0u); } else { ipv6addr_setdword(ipv6addrp, 1, ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16)); anonymized_prefix_nibbles = 8; }; } else if (mask_ipv6 < 32 && mask_ipv6 >= 16) { if (zeroize_prefix != 0) { ipv6addr_setdword(ipv6addrp, 1, 0u); ipv6addr_setdword(ipv6addrp, 0, ipv6addr_getdword(ipv6addrp, 0) & (0xffffffffu << ((unsigned int) 32 - mask_ipv6))); } else { ipv6addr_setdword(ipv6addrp, 1, ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16)); ipv6addr_setdword(ipv6addrp, 0, (ipv6addr_getdword(ipv6addrp, 0) & (0xffffffffu << ((unsigned int) 32 - mask_ipv6))) | ((ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16)) & ((0xffffffffu >> ((unsigned int) mask_ipv6))))); anonymized_prefix_nibbles = (64 - mask_ipv6) / 4; }; }; }; /* restore prefix in special cases */ if ( ((ipv6addrp->typeinfo & IPV6_ADDR_SITELOCAL) != 0) && (mask_ipv6 < 10) ) { ipv6addr_setword(ipv6addrp, 0, ipv6addr_getword(ipv6addrp, 1) | 0xfec0u); } else if ( ((ipv6addrp->typeinfo & IPV6_ADDR_ULUA) != 0) && (mask_ipv6 < 7) ) { ipv6addr_setoctet(ipv6addrp, 0, ipv6addr_getoctet(ipv6addrp, 0) | 0xfdu); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Prefix: pref=%08x %08x (anonymized)", ipv6addr_getdword(ipv6addrp, 0), ipv6addr_getdword(ipv6addrp, 1)); }; InterfaceIdentifier: /* interface identifier handling */ if ( ( ((ipv6addrp->typeinfo & (IPV6_ADDR_LINKLOCAL | IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_ADDR_ULUA )) != 0) || ((ipv6addrp->typeinfo & (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) == (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) ) && ((ipv6addrp->typeinfo & (IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_ORCHID)) == 0) ) { /* Interface identifier included */ if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_EUI48) != 0) { /* EUI-48 */ DEBUGPRINT_NA(DEBUG_libipv6addr, "EUI-48 identifier found"); if (method == ANON_METHOD_ZEROIZE) { zeroize_iid = 1; } else { /* set anon interface ID, include shifted OUI bytes */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Anonymize IPv6 address: OUI=%02x:%02x:%02x", ipv6addr_getoctet(ipv6addrp, 8) & 0xfc, ipv6addr_getoctet(ipv6addrp, 9), ipv6addr_getoctet(ipv6addrp, 10)); mac_clearall(&macaddr); macaddr.addr[0] = ipv6addr_getoctet(ipv6addrp, 8) ^ 0x2; macaddr.addr[1] = ipv6addr_getoctet(ipv6addrp, 9); macaddr.addr[2] = ipv6addr_getoctet(ipv6addrp, 10); macaddr.addr[3] = ipv6addr_getoctet(ipv6addrp, 13); macaddr.addr[4] = ipv6addr_getoctet(ipv6addrp, 14); macaddr.addr[5] = ipv6addr_getoctet(ipv6addrp, 15); macaddr.flag_valid = 1; map_value = libieee_map_oui_macaddr(&macaddr) ^ 0x00020000; iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_EUI48_VALUE_00_31; iid[1] = ANON_IID_EUI48_VALUE_32_63 | ((map_value & 0x1ffffff) << ANON_IID_EUI48_PAYLOAD_SHIFT); ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); calculate_checksum = 1; }; } else { if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0 ) { if (method == ANON_METHOD_ZEROIZE) { /* mask ID according to mask_eui64 */ zeroize_iid = 1; } else { /* replace IID with special value */ iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_RANDOM_VALUE_00_31; iid[1] = ANON_IID_RANDOM_VALUE_32_63; ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); calculate_checksum = 1; }; } else if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_EUI64) == IPV6_NEW_ADDR_IID_EUI64) { /* Check for global EUI-64 */ if (method == ANON_METHOD_ZEROIZE) { /* mask ID according to mask_eui64 */ zeroize_iid = 1; } else { libeui64_clearall(&eui64addr); eui64addr.addr[0] = ipv6addr_getoctet(ipv6addrp, 8) ^ 0x2; eui64addr.addr[1] = ipv6addr_getoctet(ipv6addrp, 9); eui64addr.addr[2] = ipv6addr_getoctet(ipv6addrp, 10); eui64addr.addr[3] = ipv6addr_getoctet(ipv6addrp, 11); eui64addr.addr[4] = ipv6addr_getoctet(ipv6addrp, 12); eui64addr.addr[5] = ipv6addr_getoctet(ipv6addrp, 13); eui64addr.addr[6] = ipv6addr_getoctet(ipv6addrp, 14); eui64addr.addr[7] = ipv6addr_getoctet(ipv6addrp, 15); eui64addr.flag_valid = 1; map_value = libieee_map_oui_eui64addr(&eui64addr) ^ 0x00020000; iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_EUI64_VALUE_00_31; iid[1] = ANON_IID_EUI64_VALUE_32_63 | ((map_value & 0x1ffffff) << ANON_IID_EUI64_PAYLOAD_SHIFT); ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); calculate_checksum = 1; }; } else { if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_SOLICITED_NODE) != 0 ) { /* zero'ise unique ID */ ipv6addr_setoctet(ipv6addrp, 13, 0x0u); ipv6addr_setoctet(ipv6addrp, 14, 0x0u); ipv6addr_setoctet(ipv6addrp, 15, 0x0u); } else if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_ISATAP) != 0 ) { /* ISATAP address */ if ( (ipv6addrp->typeinfo & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0 ) { /* IPv4 address included */ for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) (i + 12))); }; libipv4addr_anonymize(&ipv4addr, mask_ipv4, method); DEBUGPRINT_WA(DEBUG_libipv6addr, "ISATAP includes IPv4 address: IPv4=%d.%d.%d.%d, anonymized: %d.%d.%d.%d", ipv6addr_getoctet(ipv6addrp, 12), ipv6addr_getoctet(ipv6addrp, 13), ipv6addr_getoctet(ipv6addrp, 14), ipv6addr_getoctet(ipv6addrp, 15), ipv4addr_getoctet(&ipv4addr, 0), ipv4addr_getoctet(&ipv4addr, 1), ipv4addr_getoctet(&ipv4addr, 2), ipv4addr_getoctet(&ipv4addr, 3)); /* store back */ for (i = 0; i <= 3; i++) { ipv6addr_setoctet(ipv6addrp, (unsigned int) 12 + i, (unsigned int) ipv4addr_getoctet(&ipv4addr, (unsigned int) i)); }; if (method == ANON_METHOD_ZEROIZE) { // nothing to do, IPv4 address already anonymized } else { iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_ISATAP_VALUE_00_31; iid[1] = (ipv6addr_getoctet(ipv6addrp, 12) << (ANON_IID_ISATAP_PAYLOAD_SHIFT + 16)) | (ipv6addr_getoctet(ipv6addrp, 13) << (ANON_IID_ISATAP_PAYLOAD_SHIFT + 8)) | (ipv6addr_getoctet(ipv6addrp, 14) << (ANON_IID_ISATAP_PAYLOAD_SHIFT)); iid[1] |= ANON_IID_ISATAP_TYPE_IPV4_VALUE_32_63; calculate_checksum = 1; }; } else if ((ipv6addr_getoctet(ipv6addrp, 11) == 0xff) && (ipv6addr_getoctet(ipv6addrp, 12) == 0xfe)) { /* vendor ID included */ if (method == ANON_METHOD_ZEROIZE) { /* zero'ise unique ID */ /* TODO: honor mask_eui64 */ ipv6addr_setoctet(ipv6addrp, 13, 0x0u); ipv6addr_setoctet(ipv6addrp, 14, 0x0u); ipv6addr_setoctet(ipv6addrp, 15, 0x0u); } else { iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_ISATAP_VALUE_00_31; iid[1] = (ipv6addr_getoctet(ipv6addrp, 13) << (ANON_IID_ISATAP_PAYLOAD_SHIFT + 16)); iid[1] |= ANON_IID_ISATAP_TYPE_VENDOR_VALUE_32_63; calculate_checksum = 1; }; } else { /* extension ID included */ if (method == ANON_METHOD_ZEROIZE) { /* mask ID according to mask_eui64 */ zeroize_iid = 1; } else { iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_ISATAP_VALUE_00_31; iid[1] = (ipv6addr_getoctet(ipv6addrp, 11) << (ANON_IID_ISATAP_PAYLOAD_SHIFT + 16)) | (ipv6addr_getoctet(ipv6addrp, 12) << (ANON_IID_ISATAP_PAYLOAD_SHIFT + 8)) | (ipv6addr_getoctet(ipv6addrp, 13) << (ANON_IID_ISATAP_PAYLOAD_SHIFT)); iid[1] |= ANON_IID_ISATAP_TYPE_EXTID_VALUE_32_63; calculate_checksum = 1; }; }; if (calculate_checksum == 1) { /* store local/global bit */ DEBUGPRINT_NA(DEBUG_libipv6addr, "ISATAP: store local/global bit"); if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_GLOBAL) != 0 ) { DEBUGPRINT_NA(DEBUG_libipv6addr, "ISATAP: store global bit"); iid[1] |= ANON_IID_ISATAP_SCOPE_GLOBAL; } else if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_IID_LOCAL) != 0 ) { DEBUGPRINT_NA(DEBUG_libipv6addr, "ISATAP: store local bit"); iid[1] |= ANON_IID_ISATAP_SCOPE_LOCAL; }; ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); }; } else if ( ( ( (ipv6addrp->typeinfo & IPV6_ADDR_LINKLOCAL) != 0) && (ipv6addr_getdword(ipv6addrp, 2) == 0 && ipv6addr_getword(ipv6addrp, 6) != 0)) ) { /* fe80:: must have 0000:0000:xxxx:yyyy where xxxx > 0 */ for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) (i + 12))); }; libipv4addr_anonymize(&ipv4addr, mask_ipv4, method); /* store back */ for (i = 0; i <= 3; i++) { ipv6addr_setoctet(ipv6addrp, (unsigned int) 12 + i, (unsigned int) ipv4addr_getoctet(&ipv4addr, (unsigned int) i)); }; } else { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4_MICROSOFT) != 0) { /* extract IPv4 address */ for (i = 0; i <= 3; i++) { ipv4addr_setoctet(&ipv4addr, (unsigned int) i, (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) (i + 12))); }; libipv4addr_anonymize(&ipv4addr, mask_ipv4, method); if (method == ANON_METHOD_ZEROIZE) { /* store back */ for (i = 0; i <= 3; i++) { ipv6addr_setoctet(ipv6addrp, (unsigned int) 12 + i, (unsigned int) ipv4addr_getoctet(&ipv4addr, (unsigned int) i)); }; } else { iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_IPV4_VALUE_00_31; iid[1] = ANON_IID_IPV4_VALUE_32_63 | (ipv4addr_getoctet(&ipv4addr, 0) << (ANON_IID_IPV4_PAYLOAD_SHIFT + 16)) | (ipv4addr_getoctet(&ipv4addr, 1) << (ANON_IID_IPV4_PAYLOAD_SHIFT + 8)) | (ipv4addr_getoctet(&ipv4addr, 2) << (ANON_IID_IPV4_PAYLOAD_SHIFT)); ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); calculate_checksum = 1; }; } else { /* Identifier has local scope */ if (method == ANON_METHOD_ZEROIZE) { /* mask ID according to mask_eui64 */ zeroize_iid = 1; } else { iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_IID_STATIC_VALUE_00_31; iid[1] = ANON_IID_STATIC_VALUE_32_63; ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); calculate_checksum = 1; }; }; }; }; }; }; /* ORCHID hash */ if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_ORCHID) != 0 ) { DEBUGPRINT_NA(DEBUG_libipv6addr, "ORCHID address found"); if (method == ANON_METHOD_ZEROIZE) { /* mask 100 LSBs */ ipv6addr_setword(ipv6addrp, 7, 0x0u); ipv6addr_setword(ipv6addrp, 6, 0x0u); ipv6addr_setword(ipv6addrp, 5, 0x0u); ipv6addr_setword(ipv6addrp, 4, 0x0u); } else { iid[0] = ANON_TOKEN_VALUE_00_31 | ANON_ORCHID_VALUE_00_31; iid[1] = ANON_ORCHID_VALUE_32_63; ipv6addr_setdword(ipv6addrp, 2, iid[0]); ipv6addr_setdword(ipv6addrp, 3, iid[1]); calculate_checksum = 1; }; if (zeroize_prefix != 0) { ipv6addr_setword(ipv6addrp, 3, 0x0u); ipv6addr_setword(ipv6addrp, 2, 0x0u); ipv6addr_setword(ipv6addrp, 1, ipv6addr_getword(ipv6addrp, 1) & 0xFFF0); } else { ipv6addr_setdword(ipv6addrp, 1, (ANON_TOKEN_VALUE_00_31 | (ANON_TOKEN_VALUE_00_31 >> 16))); ipv6addr_setword(ipv6addrp, 1, (ipv6addr_getword(ipv6addrp, 1) & 0xFFF0) | ((ANON_TOKEN_VALUE_00_31 >> 16) & 0xF)); anonymized_prefix_nibbles = (64 - 28) / 4; }; }; /* switch prefix anonymization if IID is not anonymizied in reliable way */ if (calculate_checksum == 0) { zeroize_prefix = 1; } else { ipv6addrp->typeinfo |= IPV6_ADDR_ANONYMIZED_IID; }; if (zeroize_iid == 1) { DEBUGPRINT_WA(DEBUG_libipv6addr, "Zeroize IID with mask: %d", mask_eui64); libeui64_clearall(&eui64addr); eui64addr.addr[0] = ipv6addr_getoctet(ipv6addrp, 8) ^ 0x2; eui64addr.addr[1] = ipv6addr_getoctet(ipv6addrp, 9); eui64addr.addr[2] = ipv6addr_getoctet(ipv6addrp, 10); eui64addr.addr[3] = ipv6addr_getoctet(ipv6addrp, 11); eui64addr.addr[4] = ipv6addr_getoctet(ipv6addrp, 12); eui64addr.addr[5] = ipv6addr_getoctet(ipv6addrp, 13); eui64addr.addr[6] = ipv6addr_getoctet(ipv6addrp, 14); eui64addr.addr[7] = ipv6addr_getoctet(ipv6addrp, 15); eui64addr.flag_valid = 1; bit_ul = eui64addr.addr[0] & 0x02; libeui64_anonymize(&eui64addr, ipv6calc_anon_set); // covers also EUI-48 if ((mask_eui64 < 7) && (ipv6calc_anon_set->mask_autoadjust == 0) && (bit_ul == 0x0)) { DEBUGPRINT_WA(DEBUG_libipv6addr, "mask_eui64 < 7 AND EUI-64 was %s AND mask_autoadjust not set, do not invert universal/local bit for IID (for backwards compatibility reason", (bit_ul == 2) ? "local" : "universal"); eui64addr.addr[0] |= 0x02; // will be inverted and therefore cleared next }; ipv6addr_setoctet(ipv6addrp, 8, eui64addr.addr[0] ^ 0x2); ipv6addr_setoctet(ipv6addrp, 9, eui64addr.addr[1]); ipv6addr_setoctet(ipv6addrp, 10, eui64addr.addr[2]); ipv6addr_setoctet(ipv6addrp, 11, eui64addr.addr[3]); ipv6addr_setoctet(ipv6addrp, 12, eui64addr.addr[4]); ipv6addr_setoctet(ipv6addrp, 13, eui64addr.addr[5]); ipv6addr_setoctet(ipv6addrp, 14, eui64addr.addr[6]); ipv6addr_setoctet(ipv6addrp, 15, eui64addr.addr[7]); }; // checksumming if (calculate_checksum == 1) { if (anonymized_prefix_nibbles > 0) { /* fill amount of nibbles into IID lead token */ DEBUGPRINT_WA(DEBUG_libipv6addr, "Store amount of anonymized nibbles to IID lead token: %d", anonymized_prefix_nibbles); ipv6addr_setoctet(ipv6addrp, 9, ipv6addr_getoctet(ipv6addrp, 9) | (anonymized_prefix_nibbles << 4)); }; ipv6addr_set_checksum_anonymized_iid(ipv6addrp); }; if (calculate_checksum_prefix == 1) { ipv6addr_set_checksum_anonymized_prefix(ipv6addrp); ipv6addrp->typeinfo |= IPV6_ADDR_ANONYMIZED_PREFIX; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Result: addr=%08x %08x %08x %08x (anonymized)", ipv6addr_getdword(ipv6addrp, 0), ipv6addr_getdword(ipv6addrp, 1), ipv6addr_getdword(ipv6addrp, 2), ipv6addr_getdword(ipv6addrp, 3)); return(0); }; /* * clear filter IPv6 address * * in : *filter = filter structure */ void ipv6addr_filter_clear(s_ipv6calc_filter_ipv6addr *filter) { filter->active = 0; filter->filter_typeinfo.active = 0; filter->filter_typeinfo.typeinfo_must_have = 0; filter->filter_typeinfo.typeinfo_may_not_have = 0; filter->filter_typeinfo2.typeinfo_must_have = 0; filter->filter_typeinfo2.typeinfo_may_not_have = 0; libipv6calc_filter_clear_db_cc(&filter->filter_db_cc); libipv6calc_filter_clear_db_asn(&filter->filter_db_asn); libipv6calc_filter_clear_db_registry(&filter->filter_db_registry); filter->filter_addr.active = 0; filter->filter_addr.addr_must_have_max = 0; filter->filter_addr.addr_may_not_have_max = 0; return; }; /* * parse filter IPv6 * * in : *filter = filter structure * ret: 0:found 1:skip 2:problem */ int ipv6addr_filter_parse(s_ipv6calc_filter_ipv6addr *filter, const char *token) { int i, result = 1, negate = 0, offset = 0, r; const char *prefix = "ipv6"; const char *prefixdot = "ipv6."; const char *prefixdbdot = "db."; const char *prefixaddreq = "addr="; const char *prefixaddreq_le = "addr<="; const char *prefixaddreq_lt = "addr<"; const char *prefixaddreq_ge = "addr>="; const char *prefixaddreq_gt = "addr>"; const char *prefixaddreq_le2 = "addr=le="; const char *prefixaddreq_lt2 = "addr=lt="; const char *prefixaddreq_ge2 = "addr=ge="; const char *prefixaddreq_gt2 = "addr=gt="; ipv6calc_ipv6addr ipv6addr; char resultstring[NI_MAXHOST]; int db = 0, addr = 0; int addr_test_method; if (token == NULL) { return (result); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "input: %s", token); if (token[0] == '^') { DEBUGPRINT_WA(DEBUG_libipv6addr, "found negate prefix in token: %s", token); negate = 1; offset += 1; }; // typeinfo if (strcmp(token + offset, prefix) == 0) { /* any */ if (negate == 1) { filter->filter_typeinfo.typeinfo_may_not_have = ~IPV6_ADDR_ANY; } else { filter->filter_typeinfo.typeinfo_must_have = IPV6_ADDR_ANY; }; filter->filter_typeinfo.active = 1; filter->active = 1; result = 0; goto END_ipv6addr_filter_parse; } else if (strncmp(token + offset, prefixdot, strlen(prefixdot)) == 0) { /* prefix with dot found */ offset += strlen(prefixdot); result = 2; /* token with prefix, result into problem if not found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "token with prefix, suffix: %s", token + offset); }; if (strncmp(token + offset, prefixaddreq_le, strlen(prefixaddreq_le)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr<=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_le); addr_test_method = IPV6CALC_TEST_LE; } else if (strncmp(token + offset, prefixaddreq_lt, strlen(prefixaddreq_lt)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr<' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_lt); addr_test_method = IPV6CALC_TEST_LT; } else if (strncmp(token + offset, prefixaddreq_ge, strlen(prefixaddreq_ge)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr>=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_ge); addr_test_method = IPV6CALC_TEST_GE; } else if (strncmp(token + offset, prefixaddreq_gt, strlen(prefixaddreq_gt)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr>' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_gt); addr_test_method = IPV6CALC_TEST_GT; } else if (strncmp(token + offset, prefixaddreq_le2, strlen(prefixaddreq_le2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr=le=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_le2); addr_test_method = IPV6CALC_TEST_LE; } else if (strncmp(token + offset, prefixaddreq_lt2, strlen(prefixaddreq_lt2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr=lt=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_lt2); addr_test_method = IPV6CALC_TEST_LT; } else if (strncmp(token + offset, prefixaddreq_ge2, strlen(prefixaddreq_ge2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr=ge=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_ge2); addr_test_method = IPV6CALC_TEST_GE; } else if (strncmp(token + offset, prefixaddreq_gt2, strlen(prefixaddreq_gt2)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr=gt=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq_gt2); addr_test_method = IPV6CALC_TEST_GT; } else if (strncmp(token + offset, prefixaddreq, strlen(prefixaddreq)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq); addr_test_method = IPV6CALC_TEST_PREFIX; } else if (strncmp(token + offset, prefixdbdot, strlen(prefixdbdot)) == 0) { /* prefixdb with dot found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'db.' prefix in token: %s", token); db = 1; } else if (strstr(token, ".") != NULL) { /* other prefix */ DEBUGPRINT_WA(DEBUG_libipv6addr, "prefix did not match: %s", token + offset); return(1); }; if ((db == 0) && (addr == 0)) { // typeinfo token for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { DEBUGPRINT_WA(DEBUG_libipv6addr, "check token against: %s", ipv6calc_ipv6addrtypestrings[i].token); if (strcmp(ipv6calc_ipv6addrtypestrings[i].token, token + offset) == 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "token match: %s", ipv6calc_ipv6addrtypestrings[i].token); if (negate == 1) { filter->filter_typeinfo.typeinfo_may_not_have |= ipv6calc_ipv6addrtypestrings[i].number; } else { filter->filter_typeinfo.typeinfo_must_have |= ipv6calc_ipv6addrtypestrings[i].number; }; filter->filter_typeinfo.active = 1; filter->active = 1; result = 0; break; }; }; // typeinfo2 token for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addr_type2_strings); i++ ) { DEBUGPRINT_WA(DEBUG_libipv6addr, "check token against: %s", ipv6calc_ipv6addr_type2_strings[i].token); if (strcmp(ipv6calc_ipv6addr_type2_strings[i].token, token + offset) == 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "token match: %s", ipv6calc_ipv6addr_type2_strings[i].token); if (negate == 1) { filter->filter_typeinfo2.typeinfo_may_not_have |= ipv6calc_ipv6addr_type2_strings[i].number; } else { filter->filter_typeinfo2.typeinfo_must_have |= ipv6calc_ipv6addr_type2_strings[i].number; }; filter->filter_typeinfo2.active = 1; filter->active = 1; result = 0; break; }; }; }; if (db == 1) { // DB CC filter r = libipv6calc_db_cc_filter_parse(&filter->filter_db_cc, token + offset, negate); if (r == 0) { result = 0; filter->active = 1; }; // DB ASN filter r = libipv6calc_db_asn_filter_parse(&filter->filter_db_asn, token + offset, negate); if (r == 0) { result = 0; filter->active = 1; }; // DB registry filter r = libipv6calc_db_registry_filter_parse(&filter->filter_db_registry, token + offset, negate); if (r == 0) { result = 0; filter->active = 1; }; }; if (addr == 1) { DEBUGPRINT_WA(DEBUG_libipv6addr, "try to parse IPv6 address: %s", token + offset); r = addr_to_ipv6addrstruct(token + offset, resultstring, sizeof(resultstring), &ipv6addr); if (r == 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "successfully parsed IPv6 address: %s", token + offset); // store address test method in 'flag_startend_use' ipv6addr.test_mode = addr_test_method; if (negate == 1) { if (filter->filter_addr.addr_may_not_have_max < IPV6CALC_FILTER_IPV6ADDR) { ipv6addr_copy(&filter->filter_addr.ipv6addr_may_not_have[filter->filter_addr.addr_may_not_have_max], &ipv6addr); filter->filter_addr.addr_may_not_have_max++; filter->filter_addr.active = 1; filter->active = 1; result = 0; } else { ERRORPRINT_WA("filter token 'addr=' maxmimum reached for 'may not have': %d", filter->filter_addr.addr_may_not_have_max); }; } else { if (filter->filter_addr.addr_must_have_max < IPV6CALC_FILTER_IPV6ADDR) { ipv6addr_copy(&filter->filter_addr.ipv6addr_must_have[filter->filter_addr.addr_must_have_max], &ipv6addr); filter->filter_addr.addr_must_have_max++; filter->filter_addr.active = 1; filter->active = 1; result = 0; } else { ERRORPRINT_WA("filter token 'addr=' maxmimum reached for 'must have': %d", filter->filter_addr.addr_must_have_max); }; }; }; }; if (result != 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "token not supported: %s", token); return (result); }; END_ipv6addr_filter_parse: return (result); }; /* * check filter IPv6 * * in : *filter = filter structure * ret: 0:ok 1:problem */ int ipv6addr_filter_check(const s_ipv6calc_filter_ipv6addr *filter) { int result = 0, r, i; char resultstring[NI_MAXHOST]; DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter general active : %d", filter->active); DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'typeinfo' active : %d", filter->filter_typeinfo.active); if (filter->filter_typeinfo.active > 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'typeinfo/must_have' : 0x%08x", filter->filter_typeinfo.typeinfo_must_have); DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'typeinfo/may_not_have' : 0x%08x", filter->filter_typeinfo.typeinfo_may_not_have); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'typeinfo2' active : %d", filter->filter_typeinfo2.active); if (filter->filter_typeinfo2.active > 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'typeinfo2/must_have' : 0x%08x", filter->filter_typeinfo2.typeinfo_must_have); DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'typeinfo2/may_not_have': 0x%08x", filter->filter_typeinfo2.typeinfo_may_not_have); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'addr' active : %d", filter->filter_addr.active); if (filter->filter_addr.active > 0) { if (filter->filter_addr.addr_must_have_max > 0) { for (i = 0; i < filter->filter_addr.addr_must_have_max; i++) { ipv6addrstruct_to_compaddr(&filter->filter_addr.ipv6addr_must_have[i], resultstring, sizeof(resultstring)); DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'addr/must_have' : %s", resultstring); }; }; if (filter->filter_addr.addr_may_not_have_max > 0) { for (i = 0; i < filter->filter_addr.addr_may_not_have_max; i++) { ipv6addrstruct_to_compaddr(&filter->filter_addr.ipv6addr_may_not_have[i], resultstring, sizeof(resultstring)); DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'addr/may_not_have' : %s", resultstring); }; }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'db.cc' active : %d", filter->filter_db_cc.active); if (filter->filter_db_cc.active > 0) { r = libipv6calc_db_cc_filter_check(&filter->filter_db_cc, IPV6CALC_PROTO_IPV6); if (r > 0) { result = 1; }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'db.asn' active : %d", filter->filter_db_asn.active); if (filter->filter_db_asn.active > 0) { r = libipv6calc_db_asn_filter_check(&filter->filter_db_asn, IPV6CALC_PROTO_IPV6); if (r > 0) { result = 1; }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "ipv6 filter 'db.registry' active : %d", filter->filter_db_registry.active); if (filter->filter_db_registry.active > 0) { r = libipv6calc_db_registry_filter_check(&filter->filter_db_registry, IPV6CALC_PROTO_IPV6); if (r > 0) { result = 1; }; }; //END_ipv6addr_filter_check: return (result); }; /* * filter IPv6 address * * in : *ipv6addrp = IPv6 address structure * in : *filter = filter structure * ret: 0=match 1=not match */ int ipv6addr_filter(const ipv6calc_ipv6addr *ipv6addrp, const s_ipv6calc_filter_ipv6addr *filter) { int result = 0, r, i, t; if (filter->active == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "No filter active (SKIP)"); return (1); }; DEBUGPRINT_NA(DEBUG_libipv6addr, "start"); if ((filter->filter_typeinfo.active > 0) || (filter->filter_typeinfo2.active > 0)) { if (ipv6addrp->flag_typeinfo == 0) { fprintf(stderr, "FATAL error, typeinfo not valid - FIX CODE of caller\n"); exit(2); }; }; if (filter->filter_typeinfo.active > 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "compare typeinfo against must_have: 0x%08x/0x%08x", ipv6addrp->typeinfo, filter->filter_typeinfo.typeinfo_must_have); if ((ipv6addrp->typeinfo & filter->filter_typeinfo.typeinfo_must_have) != filter->filter_typeinfo.typeinfo_must_have) { /* no match */ result = 1; } else { if ((ipv6addrp->typeinfo & filter->filter_typeinfo.typeinfo_may_not_have) != 0) { /* no match */ result = 1; }; }; }; if (filter->filter_typeinfo2.active > 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "compare typeinfo2 against must_have: 0x%08x/0x%08x", ipv6addrp->typeinfo2, filter->filter_typeinfo2.typeinfo_must_have); if ((ipv6addrp->typeinfo2 & filter->filter_typeinfo2.typeinfo_must_have) != filter->filter_typeinfo2.typeinfo_must_have) { /* no match */ result = 1; } else { if ((ipv6addrp->typeinfo & filter->filter_typeinfo2.typeinfo_may_not_have) != 0) { /* no match */ result = 1; }; }; }; if (filter->filter_addr.active > 0) { if (filter->filter_addr.addr_must_have_max > 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "compare against ipv6addr/must_have"); r = 1; for (i = 0; i < filter->filter_addr.addr_must_have_max; i++) { DEBUGPRINT_WA(DEBUG_libipv6addr, "compare against ipv6addr/must_have filter number: %d", i); t = ipv6addr_compare(ipv6addrp, &filter->filter_addr.ipv6addr_must_have[i], (filter->filter_addr.ipv6addr_must_have[i].test_mode == IPV6CALC_TEST_PREFIX) ? 1 : 0); switch (filter->filter_addr.ipv6addr_must_have[i].test_mode) { case IPV6CALC_TEST_PREFIX: if (t != 0) { r = 0; }; break; case IPV6CALC_TEST_LE: if (t > 0) { r = 0; }; break; case IPV6CALC_TEST_LT: if (t >= 0) { r = 0; }; break; case IPV6CALC_TEST_GE: if (t < 0) { r = 0; }; break; case IPV6CALC_TEST_GT: if (t <= 0) { r = 0; }; break; default: ERRORPRINT_WA("unsupported test mode (FIX CODE): %d", filter->filter_addr.ipv6addr_must_have[i].test_mode); break; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "compare against ipv6addr/must_have result filter number: %d r=%d", i, r); }; if (r == 0) { /* no match */ result = 1; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "compare against ipv6addr/must_have result: r=%d result=%d", r, result); }; if (filter->filter_addr.addr_may_not_have_max > 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "compare against ipv6addr/may_not_have"); r = 0; for (i = 0; i < filter->filter_addr.addr_may_not_have_max; i++) { DEBUGPRINT_WA(DEBUG_libipv6addr, "compare against ipv6addr/may_not_have filter number: %d", i); t = ipv6addr_compare(ipv6addrp, &filter->filter_addr.ipv6addr_may_not_have[i], (filter->filter_addr.ipv6addr_may_not_have[i].test_mode == IPV6CALC_TEST_PREFIX) ? 1 : 0); switch (filter->filter_addr.ipv6addr_may_not_have[i].test_mode) { case IPV6CALC_TEST_PREFIX: if (t == 0) { r = 1; }; break; case IPV6CALC_TEST_LE: if (t <= 0) { r = 1; }; break; case IPV6CALC_TEST_LT: if (t < 0) { r = 1; }; break; case IPV6CALC_TEST_GE: if (t >= 0) { r = 1; }; break; case IPV6CALC_TEST_GT: if (t > 0) { r = 1; }; break; default: ERRORPRINT_WA("unsupported test mode (FIX CODE): %d", filter->filter_addr.ipv6addr_must_have[i].test_mode); break; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "compare against ipv6addr/may_not_have result filter number: %d r=%d", i, r); }; if (r == 1) { /* match may_not_have*/ result = 1; }; }; }; if (filter->filter_db_cc.active > 0) { uint16_t cc_index = libipv6addr_cc_index_by_addr(ipv6addrp, NULL); if (libipv6calc_db_cc_filter(cc_index, &filter->filter_db_cc) > 0) { /* no match */ result = 1; }; }; if (filter->filter_db_asn.active > 0) { uint32_t asn = libipv6addr_as_num32_by_addr(ipv6addrp); if (libipv6calc_db_asn_filter(asn, &filter->filter_db_asn) > 0) { /* no match */ result = 1; }; }; if (filter->filter_db_registry.active > 0) { int registry = libipv6addr_registry_num_by_addr(ipv6addrp); if (libipv6calc_db_registry_filter(registry, &filter->filter_db_registry) > 0) { /* no match */ result = 1; }; }; return (result); }; /* get included IPv4 address from an IPv6 address */ /* in: IPv6 address pointer (ro) * selector: in case of Teredo (otherwise ignored): * IPV6_ADDR_SELECT_IPV4_DEFAULT (TEREDO_CLIENT) * IPV6_ADDR_SELECT_IPV4_TEREDO_SERVER * IPV6_ADDR_SELECT_IPV4_PREFIX2_LENGTH * mod: IPv4 address pointer (rw) * ret: 0=ok, !=0: no IPv4 adress included */ int libipv6addr_get_included_ipv4addr(const ipv6calc_ipv6addr *ipv6addrp, ipv6calc_ipv4addr *ipv4addrp, const int selector) { int result = -1; uint32_t typeinfo, typeinfo2; int begin = -1, shift = 0; int i; uint8_t xor = 0; typeinfo = ipv6addrp->typeinfo; typeinfo2 = ipv6addrp->typeinfo2; DEBUGPRINT_WA(DEBUG_libipv6addr, "Called with IPv6 address having typeinfo: 0x%08x-0x%08x", typeinfo, typeinfo2); if (selector == IPV6_ADDR_SELECT_IPV4_PREFIX2_LENGTH) { begin = ipv6addrp->prefix2length / 8; shift = ipv6addrp->prefix2length % 8; } else { if ((typeinfo & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED | IPV6_NEW_ADDR_NAT64)) != 0) { begin = 12; } else if ((typeinfo & IPV6_NEW_ADDR_TEREDO) != 0) { if (selector == IPV6_ADDR_SELECT_IPV4_DEFAULT) { // Teredo client begin = 12; xor = 0xff; } else if (selector == IPV6_ADDR_SELECT_IPV4_TEREDO_SERVER) { // Teredo server begin = 4; } else { fprintf(stderr, "libipv6addr_get_included_ipv4addr FAILED (unsupported value of selector: %d - FIX CALLING CODE)", selector); exit(1); }; } else if ((typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { begin = 2; }; }; if (begin > 0) { if (shift > 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "IPv6 address contains IPv4 address in octets %d-%d and shift %d", begin, begin+3, shift); } else { DEBUGPRINT_WA(DEBUG_libipv6addr, "IPv6 address contains IPv4 address in octets %d-%d", begin, begin+3); }; ipv4addr_clearall(ipv4addrp); if (shift > 0) { for (i = 0; i <= 4; i++) { int ipv6_p = ipv6addr_getoctet(ipv6addrp, i + begin); DEBUGPRINT_WA(DEBUG_libipv6addr, "IPv6[%d]=%02x", i + begin, ipv6_p); ipv6_p <<= shift; if (ipv6_p > 0xff) { if (i > 0) { // update higher octet ipv4addr_setoctet(ipv4addrp , (unsigned int) i - 1 , (unsigned int) (ipv4addr_getoctet(ipv4addrp, i - 1) | (ipv6_p >> 8)) ); }; }; if (i <= 3) { ipv4addr_setoctet(ipv4addrp , (unsigned int) i , (unsigned int) (ipv6_p & 0xff) ); }; }; } else { for (i = 0; i <= 3; i++) { ipv4addr_setoctet(ipv4addrp , (unsigned int) i , (unsigned int) ipv6addr_getoctet(ipv6addrp, (unsigned int) (i + begin)) ^ xor ); }; }; ipv4addr_settype(ipv4addrp, 1); ipv4addrp->flag_valid = 1; result = 0; }; if (result == -1) { // fprintf(stderr, "libipv6addr_get_included_ipv4addr FAILED (this should not happen)"); }; DEBUGPRINT_WA(DEBUG_libipv6addr, "Return with result: %d", result); return(result); }; /* * country code index of IPv6 address * * in : *ipv6addrp = IPv6 address structure * out: country code index */ uint16_t libipv6addr_cc_index_by_addr(const ipv6calc_ipv6addr *ipv6addrp, unsigned int *data_source_ptr) { uint32_t cc_index = COUNTRYCODE_INDEX_UNKNOWN; ipv6calc_ipv4addr ipv4addr; ipv6calc_ipaddr ipaddr; int retval; DEBUGPRINT_NA(DEBUG_libipv6addr, "start"); if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) { if ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) == 0) { if ((ipv6addrp->typeinfo2 & IPV6_ADDR_TYPE2_LISP) != 0) { retval = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_ASN32, &cc_index); cc_index >>= 20; } else { /* retrieve CountryCodeIndex from anonymization value */ retval = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_CCINDEX, &cc_index); if (retval != 0) { fprintf(stderr, "Error getting CountryCode index from anonymized IPv6 address\n"); goto END_libipv6addr_cc_index_by_addr; }; }; } else { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { retval = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (retval != 0) { fprintf(stderr, "Error getting included IPv4 address from anonymized IPv6 address\n"); goto END_libipv6addr_cc_index_by_addr; }; cc_index = libipv4addr_cc_index_by_addr(&ipv4addr, NULL); }; }; } else if (((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) != 0) && ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_IID) != 0)) { retval = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (retval != 0) { fprintf(stderr, "Error getting included IPv4 address from anonymized IPv6 address\n"); goto END_libipv6addr_cc_index_by_addr; }; cc_index = libipv4addr_cc_index_by_addr(&ipv4addr, data_source_ptr); } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_CC) == 1) { if ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_IID) != 0) { /* retrieve CountryCodeIndex from IPv4 address inside */ retval = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (retval != 0) { fprintf(stderr, "Error getting included IPv4 address from IPv6 address\n"); goto END_libipv6addr_cc_index_by_addr; }; cc_index = libipv4addr_cc_index_by_addr(&ipv4addr, data_source_ptr); } else if ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) != 0) { retval = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (retval != 0) { fprintf(stderr, "Error getting included IPv4 address from IPv6 address\n"); goto END_libipv6addr_cc_index_by_addr; }; cc_index = libipv4addr_cc_index_by_addr(&ipv4addr, data_source_ptr); } else if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6BONE) != 0) { cc_index = COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN + IPV6_ADDR_REGISTRY_6BONE; } else { CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); cc_index = libipv6calc_db_wrapper_cc_index_by_addr(&ipaddr, data_source_ptr); }; }; }; END_libipv6addr_cc_index_by_addr: DEBUGPRINT_WA(DEBUG_libipv6addr, "cc_index=%d (0x%03x)", cc_index, cc_index); return(cc_index); }; /* * 32-bit AS number of IPv6 address * * in : *ipv6addrp = IPv6 address structure * out: 32-bit AS number */ uint32_t libipv6addr_as_num32_by_addr(const ipv6calc_ipv6addr *ipv6addrp) { uint32_t as_num32 = ASNUM_AS_UNKNOWN; ipv6calc_ipv4addr ipv4addr; ipv6calc_ipaddr ipaddr; int retval; DEBUGPRINT_NA(DEBUG_libipv6addr, "start"); if ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) { if ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) == 0) { /* retrieve ASN from anonymization value */ retval = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_ASN32, &as_num32); if (retval != 0) { fprintf(stderr, "Error getting ASN32 from anonymized IPv6 address\n"); goto END_libipv6addr_as_num32_by_addr; }; } else { if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { retval = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (retval != 0) { fprintf(stderr, "Error getting included IPv4 address from anonymized IPv6 address\n"); goto END_libipv6addr_as_num32_by_addr; }; as_num32 = libipv4addr_as_num32_by_addr(&ipv4addr); }; }; } else if ((ipv6addrp->typeinfo & IPV6_NEW_ADDR_6BONE) != 0) { as_num32 = ASNUM_AS_UNKNOWN; goto END_libipv6addr_as_num32_by_addr; } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS) == 1) { CONVERT_IPV6ADDRP_IPADDR(ipv6addrp, ipaddr); as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(&ipaddr); }; }; END_libipv6addr_as_num32_by_addr: DEBUGPRINT_WA(DEBUG_libipv6addr, "as_num32=%d (0x%08x)", as_num32, as_num32); return(as_num32); }; /* * registry number of IPv6 address * * in : *ipv6addrp = IPv6 address structure * out: registry number */ int libipv6addr_registry_num_by_addr(const ipv6calc_ipv6addr *ipv6addrp) { int registry = IPV6_ADDR_REGISTRY_UNKNOWN; uint16_t cc_index; if (((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) \ && ((ipv6addrp->typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) == 0)) { /* retrieve registry via cc_index from anonymized address (simple) */ cc_index = libipv6addr_cc_index_by_addr(ipv6addrp, NULL); registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_REGISTRY) == 1) { registry = libipv6calc_db_wrapper_registry_num_by_ipv6addr(ipv6addrp); }; }; DEBUGPRINT_WA(DEBUG_libipv6addr, "registry=%d (0x%x)", registry, registry); return(registry); }; ipv6calc-1.0.0/lib/libipv6addr.h000066400000000000000000000507751312366535500163730ustar00rootroot00000000000000/* * Project : ipv6calc * File : libipv6addr.h * Version : $Id: 3f20ce854f6221680fd5023873bf0fdc48d50ec8 $ * Copyright : 2001-2017 by Peter Bieringer except the parts taken from kernel source * License : GNU GPL v2 * * Information: * Header file for libipv6addr.c */ #include "ipv6calctypes.h" #include #include /* typedefs & defines */ #ifndef _libipv6addr_h #define _libipv6addr_h 1 /* IPv6 anonymization */ /* * IID anonymization is done by replacing with related information (64-bit) * xxxx:xxxx:xxxx:xxxC (C = 4-bit checksum) * * a9p9 4941 0000 000C -> RFC 4941 anonymized privacy extension Interface ID * * a9p9 4291 4xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted OUI * a9p9 4291 5xxx xxxC -> RFC 4291 anonymized EUI-48 Interface ID, xxx xxx = converted mapped IAB/OUI-36 * a9p9 4291 6xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted OUI * a9p9 4291 7xxx xxxC -> RFC 4291 anonymized EUI-64 Interface ID, xxx xxx = converted mapped IAB/OUI-36 * a9p9 4291 8xxx xxxC -> RFC 4291 embedded anonymized IPv4 address, xxx xxx = first 24 bit of included (anonymized) IPv4 address * a9p9 4291 c02d 5d1C -> RFC 4291 Chapter 2.5.1 anonymized static Interface ID * * a9p9 5214 4xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (local scope) * a9p9 5214 5xxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included (anonymized) IPv4 address (global scope) * a9p9 5214 cxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (local scope) * a9p9 5214 dxx0 000C -> RFC 5214 anonymized ISATAP Interface ID, xx = first 8 bit of included vendor ID (global scope) * a9p9 5214 exxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (local scope) * a9p9 5214 fxxx xxxC -> RFC 5214 anonymized ISATAP Interface ID, xxx xxx = first 24 bit of included extension ID (global scope) * * a9p9 4843 0000 000C -> RFC 4843 anonymized ORCHID hash * * SLA/NLA prefix part anonymization is done by replacing with pattern a909a909 * p = number of nibbles anonymized in prefix * 0 : no nibble of prefix is anonymized * f : Prefix anonymization with method=kp * * Prefix anonymization in case of method=kp: p=0x0f, but skipped for * - LISP anycast * a909:ccca:aaaa:aaaC (C = 4-bit checksum) * ccc -> 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) * 0x3FD = LISP * 0x3FE = unknown country * 0x3FF - 16 + REGISTRY_6BONE && ASN=0 = 6bone * 0x000-0x3A7: c1= c / 36, c2 = c % 36 * aaaaaaaa -> 32-bit ASN */ #define ANON_TOKEN_VALUE_00_31 (uint32_t) 0xa9090000u #define ANON_TOKEN_MASK_00_31 (uint32_t) 0xff0f0000u #define ANON_IID_PREFIX_NIBBLES_MASK (uint32_t) 0x0000000fu #define ANON_IID_PREFIX_NIBBLES_SHIFT 20 #define ANON_CHECKSUM_MASK_32_63 (uint32_t) 0x0000000fu #define ANON_IID_RANDOM_VALUE_00_31 (uint32_t) 0x00004941u #define ANON_IID_RANDOM_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_IID_RANDOM_VALUE_32_63 (uint32_t) 0x00000000u #define ANON_IID_RANDOM_MASK_32_63 (uint32_t) 0xfffffff0u #define ANON_IID_STATIC_VALUE_00_31 (uint32_t) 0x00004291u #define ANON_IID_STATIC_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_IID_STATIC_VALUE_32_63 (uint32_t) 0xc02d5d10u #define ANON_IID_STATIC_MASK_32_63 (uint32_t) 0xfffffff0u #define ANON_ORCHID_VALUE_00_31 (uint32_t) 0x00004843u #define ANON_ORCHID_STATIC_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_ORCHID_VALUE_32_63 (uint32_t) 0x00000000u #define ANON_ORCHID_STATIC_MASK_32_63 (uint32_t) 0xfffffff0u #define ANON_IID_EUI48_VALUE_00_31 (uint32_t) 0x00004291u #define ANON_IID_EUI48_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_IID_EUI48_VALUE_32_63 (uint32_t) 0x40000000u #define ANON_IID_EUI48_MASK_32_63 (uint32_t) 0xe0000000u #define ANON_IID_EUI48_PAYLOAD_32_63 (uint32_t) 0x1ffffff0u #define ANON_IID_EUI48_PAYLOAD_SHIFT 4 #define ANON_IID_EUI48_PAYLOAD_LENGTH 24 #define ANON_IID_EUI64_VALUE_00_31 (uint32_t) 0x00004291u #define ANON_IID_EUI64_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_IID_EUI64_VALUE_32_63 (uint32_t) 0x60000000u #define ANON_IID_EUI64_MASK_32_63 (uint32_t) 0xe0000000u #define ANON_IID_EUI64_PAYLOAD_32_63 (uint32_t) 0x1ffffff0u #define ANON_IID_EUI64_PAYLOAD_SHIFT 4 #define ANON_IID_EUI64_PAYLOAD_LENGTH 24 #define ANON_IID_IPV4_VALUE_00_31 (uint32_t) 0x00004291u #define ANON_IID_IPV4_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_IID_IPV4_VALUE_32_63 (uint32_t) 0x80000000u #define ANON_IID_IPV4_MASK_32_63 (uint32_t) 0xf0000000u #define ANON_IID_IPV4_PAYLOAD_32_63 (uint32_t) 0x0ffffff0u #define ANON_IID_IPV4_PAYLOAD_SHIFT 4 #define ANON_IID_IPV4_PAYLOAD_LENGTH 24 #define ANON_IID_EUIxx_SCOPE_MASK (uint32_t) 0x00200000u #define ANON_IID_EUIxx_SCOPE_GLOBAL (uint32_t) 0x00200000u #define ANON_IID_EUIxx_SCOPE_LOCAL (uint32_t) 0x00000000u #define ANON_IID_ISATAP_VALUE_00_31 (uint32_t) 0x00005214u #define ANON_IID_ISATAP_MASK_00_31 (uint32_t) 0x0000ffffu #define ANON_IID_ISATAP_PAYLOAD_SHIFT 4 #define ANON_IID_ISATAP_PAYLOAD_LENGTH 24 #define ANON_IID_ISATAP_SCOPE_MASK (uint32_t) 0x10000000u #define ANON_IID_ISATAP_SCOPE_LOCAL (uint32_t) 0x00000000u #define ANON_IID_ISATAP_SCOPE_GLOBAL (uint32_t) 0x10000000u #define ANON_IID_ISATAP_TYPE_MASK_32_63 (uint32_t) 0xe0000000u #define ANON_IID_ISATAP_TYPE_IPV4_VALUE_32_63 (uint32_t) 0x40000000u #define ANON_IID_ISATAP_TYPE_IPV4_PAYLOAD_32_63 (uint32_t) 0x0ffffff0u #define ANON_IID_ISATAP_TYPE_VENDOR_VALUE_32_63 (uint32_t) 0xc0000000u #define ANON_IID_ISATAP_TYPE_VENDOR_PAYLOAD_32_63 (uint32_t) 0x0ff00000u #define ANON_IID_ISATAP_TYPE_EXTID_VALUE_32_63 (uint32_t) 0xe0000000u #define ANON_IID_ISATAP_TYPE_EXTID_PAYLOAD_32_63 (uint32_t) 0x0ffffff0u #define ANON_CHECKSUM_FLAG_CREATE 1 #define ANON_CHECKSUM_FLAG_VERIFY 2 // Prefix anonymization on method=kp #define ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB (IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_IPV6_TO_AS) #define ANON_PREFIX_CCINDEX_DWORD 0 #define ANON_PREFIX_CCINDEX_SHIFT 4 #define ANON_PREFIX_CCINDEX_MASK 0x3ff #define ANON_PREFIX_CCINDEX_XOR 0x0 #define ANON_PREFIX_ASN32_MSB_DWORD 0 #define ANON_PREFIX_ASN32_MSB_SHIFT 0 #define ANON_PREFIX_ASN32_MSB_AMOUNT 4 #define ANON_PREFIX_ASN32_MSB_MASK ((1 << ANON_PREFIX_ASN32_MSB_AMOUNT) - 1) #define ANON_PREFIX_ASN32_MSB_XOR 0x0000000a #define ANON_PREFIX_ASN32_LSB_DWORD 1 #define ANON_PREFIX_ASN32_LSB_SHIFT 4 #define ANON_PREFIX_ASN32_LSB_AMOUNT 28 #define ANON_PREFIX_ASN32_LSB_MASK ((1 << ANON_PREFIX_ASN32_LSB_AMOUNT) - 1) #define ANON_PREFIX_ASN32_LSB_XOR 0x09090000 #define ANON_PREFIX_FLAGS_DWORD 0 #define ANON_PREFIX_FLAGS_SHIFT 14 #define ANON_PREFIX_FLAGS_MASK 0x3 #define ANON_PREFIX_FLAGS_XOR 0x0 #define ANON_PREFIX_TOKEN_DWORD 0 #define ANON_PREFIX_TOKEN_SHIFT 16 #define ANON_PREFIX_TOKEN_MASK 0xffff #define ANON_PREFIX_TOKEN_XOR 0x0 #define ANON_PREFIX_TOKEN_VALUE 0xa909 // fix // Payload selector #define ANON_PREFIX_PAYLOAD_CCINDEX 1 #define ANON_PREFIX_PAYLOAD_ASN32 2 /* IPv6 address storage structure */ typedef struct { struct in6_addr in6_addr; /* in6_addr structure */ uint8_t prefixlength; /* prefix length (0-128) 8 bit */ int flag_prefixuse; /* =1: prefix length in use */ uint32_t typeinfo; /* address typeinfo/scope */ uint32_t typeinfo2; /* address typeinfo2 */ int8_t flag_typeinfo; /* =1: typeinfo valid */ uint8_t bit_start; /* start of bit */ uint8_t bit_end; /* end of bit */ int8_t flag_startend_use; /* =1: start or end of bit in use */ int8_t flag_valid; /* address structure filled */ char scopeid[IPV6CALC_SCOPEID_STRING_MAX]; /* scope ID value */ int8_t flag_scopeid; /* =1: scope ID value (above) set */ uint8_t prefix2length; /* prefix 2 length (0-128) 8 bit (usage depends on typeinfo/typeinfo2)*/ uint8_t test_mode; /* address test mode */ } ipv6calc_ipv6addr; /* IPv6 Address filter structure */ typedef struct { int active; int addr_must_have_max; int addr_may_not_have_max; ipv6calc_ipv6addr ipv6addr_must_have[IPV6CALC_FILTER_IPV4ADDR]; ipv6calc_ipv6addr ipv6addr_may_not_have[IPV6CALC_FILTER_IPV6ADDR]; } s_ipv6calc_filter_addr_ipv6; /* IPv6 filter structure */ typedef struct { int active; s_ipv6calc_filter_typeinfo filter_typeinfo; s_ipv6calc_filter_typeinfo filter_typeinfo2; s_ipv6calc_filter_db_cc filter_db_cc; // Country Code filter s_ipv6calc_filter_db_asn filter_db_asn; // Autonomous System Number filter s_ipv6calc_filter_db_registry filter_db_registry; // Registry filter s_ipv6calc_filter_addr_ipv6 filter_addr; // IPv6 Address filter /* others may come next */ } s_ipv6calc_filter_ipv6addr; /* IID statistics */ typedef struct { float hexdigit; float lls_residual; // lls: linear least square int digit_blocks[16]; // block length of same digit int digit_blocks_hexdigit[16];// hex digits used in blocks of same digit int digit_amount[16]; // amount of digits int digit_delta[31]; // delta of digits int digit_delta_amount; // amount of delta of digits } s_iid_statistics; /* IID random limits */ // this filter values detects 999.744 from 1.000.000 generated random (using privacy extension) IIDs (256 are not detected) /*@unused@*/ static const s_iid_statistics s_iid_statistics_ok_min = { 0.249, // fits to 100% of 1 million tested 6.275, // fits to 100% of 1 million tested { 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // fit to 100% of 1 million tested { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // fit to 100% of 1 million tested { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // default { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // default 6 // fit to 1 million }; /*@unused@*/ static const s_iid_statistics s_iid_statistics_ok_max = { 2.5, // fits to 1 million - 90 tested (100%: 4.016) 26.042, // fits to 100% of 1 million tested { 16, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // fit to 1 million - 3 tested { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, // TODO { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, // fit to 1 million - 38 tested { 3, 4, 3, 3, 4, 5, 4, 5, 5, 5, 6, 6, 6, 7, 7, 6, 6, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 3, 2}, // fit to 1 million 15 // fit to 1 million }; /* IPv6 address type definitions * with credits to kernel and USAGI developer team * basic information was taken from "kernel/include/net/ipv6.h" */ /* * Addr type * * type - unicast | multicast | anycast * scope - local | site | global * v4 - compat * v4mapped * any * loopback */ #define IPV6_ADDR_ANY (uint32_t) 0x00000000U #define IPV6_ADDR_UNICAST (uint32_t) 0x00000001U #define IPV6_ADDR_MULTICAST (uint32_t) 0x00000002U #define IPV6_ADDR_ANYCAST (uint32_t) 0x00000004U #define IPV6_ADDR_ANONYMIZED_PREFIX (uint32_t) 0x00000008U /* anonymized IPv6 address (prefix) */ #define IPV6_ADDR_LOOPBACK (uint32_t) 0x00000010U #define IPV6_ADDR_LINKLOCAL (uint32_t) 0x00000020U #define IPV6_ADDR_SITELOCAL (uint32_t) 0x00000040U #define IPV6_ADDR_COMPATv4 (uint32_t) 0x00000080U #define IPV6_ADDR_SCOPE_MASK (uint32_t) 0x000000f0U #define IPV6_NEW_ADDR_IID_TEREDO (uint32_t) 0x00000100U /* RFC xxxx */ #define IPV6_NEW_ADDR_IID_ISATAP (uint32_t) 0x00000200U /* RFC 5214 (ex 4214) */ #define IPV6_NEW_ADDR_IID_EUI48 (uint32_t) 0x00000400U #define IPV6_NEW_ADDR_IID_EUI64 (uint32_t) 0x00000800U #define IPV6_ADDR_MAPPED (uint32_t) 0x00001000U #define IPV6_ADDR_RESERVED (uint32_t) 0x00002000U /* reserved address space */ #define IPV6_ADDR_ULUA (uint32_t) 0x00004000U /* Unique Local Unicast Address */ #define IPV6_ADDR_ANONYMIZED_IID (uint32_t) 0x00008000U /* anonymized IPv6 address (IID) */ #define IPV6_NEW_ADDR_6TO4 (uint32_t) 0x00010000U #define IPV6_NEW_ADDR_6BONE (uint32_t) 0x00020000U #define IPV6_NEW_ADDR_AGU (uint32_t) 0x00040000U #define IPV6_NEW_ADDR_UNSPECIFIED (uint32_t) 0x00080000U #define IPV6_NEW_ADDR_SOLICITED_NODE (uint32_t) 0x00100000U #define IPV6_ADDR_IID_32_63_HAS_IPV4 (uint32_t) 0x00200000U #define IPV6_NEW_ADDR_PRODUCTIVE (uint32_t) 0x00400000U #define IPV6_NEW_ADDR_6TO4_MICROSOFT (uint32_t) 0x00800000U #define IPV6_NEW_ADDR_TEREDO (uint32_t) 0x01000000U #define IPV6_NEW_ADDR_ORCHID (uint32_t) 0x02000000U /* RFC 4843 */ #define IPV6_NEW_ADDR_LINKLOCAL_TEREDO (uint32_t) 0x04000000U #define IPV6_NEW_ADDR_NAT64 (uint32_t) 0x08000000U /* RFC 6052 */ #define IPV6_NEW_ADDR_IID_RANDOM (uint32_t) 0x10000000U /* possible RFC 4941 (ex 3041) */ #define IPV6_NEW_ADDR_IID (uint32_t) 0x20000000U /* IPv6 address with IID inside */ #define IPV6_NEW_ADDR_IID_LOCAL (uint32_t) 0x40000000U /* IPv6 address with local generated IID */ #define IPV6_NEW_ADDR_IID_GLOBAL (uint32_t) 0x80000000U /* IPv6 address with global IID */ #define IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX (IPV6_NEW_ADDR_6TO4 | IPV6_NEW_ADDR_TEREDO) #define IPV6_ADDR_HAS_PUBLIC_IPV4_IN_IID (IPV6_NEW_ADDR_NAT64 | IPV6_NEW_ADDR_TEREDO | IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED | IPV6_NEW_ADDR_6TO4_MICROSOFT) #define IPV6_ADDR_HAS_PUBLIC_IPV4 (IPV6_ADDR_HAS_PUBLIC_IPV4_IN_IID | IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) #define IPV6_ADDR_GLOBAL (IPV6_NEW_ADDR_PRODUCTIVE) // typeinfo2 #define IPV6_ADDR_TYPE2_6RD (uint32_t) 0x00000001U /* IPv6 Rapid Deployment address (RFC5569), not autodetectable (triggered by --6rd_prefixlength) */ #define IPV6_ADDR_TYPE2_LISP (uint32_t) 0x00010000U /* IPv6 LISP (RFC6830) */ #define IPV6_ADDR_TYPE2_LISP_PETR (uint32_t) 0x00020000U /* IPv6 LISP Proxy Egress Tunnel Routers (PETRY) Anycast */ #define IPV6_ADDR_TYPE2_LISP_MAP_RESOLVER (uint32_t) 0x00040000U /* IPv6 LISP Map Resolver Anycast */ // IPv4 address extractor selector #define IPV6_ADDR_SELECT_IPV4_DEFAULT 0 #define IPV6_ADDR_SELECT_IPV4_TEREDO_SERVER 1 #define IPV6_ADDR_SELECT_IPV4_PREFIX2_LENGTH 2 /* text representations */ /*@unused@*/ static const s_type ipv6calc_ipv6addrtypestrings[] = { { IPV6_ADDR_ANY , "unknown" }, { IPV6_ADDR_UNICAST , "unicast" }, { IPV6_ADDR_MULTICAST , "multicast" }, { IPV6_ADDR_ANYCAST , "anycast" }, { IPV6_ADDR_LOOPBACK , "loopback" }, { IPV6_ADDR_LINKLOCAL , "link-local" }, { IPV6_ADDR_SITELOCAL , "site-local" }, { IPV6_ADDR_COMPATv4 , "compat-v4" }, { IPV6_ADDR_MAPPED , "mapped" }, { IPV6_ADDR_RESERVED , "reserved" }, { IPV6_ADDR_ULUA , "unique-local-unicast" }, { IPV6_ADDR_ANONYMIZED_IID , "anonymized-iid" }, { IPV6_ADDR_ANONYMIZED_PREFIX , "anonymized-prefix" }, { IPV6_NEW_ADDR_6TO4 , "6to4" }, { IPV6_NEW_ADDR_6BONE , "6bone" }, { IPV6_NEW_ADDR_AGU , "global-unicast" }, { IPV6_NEW_ADDR_UNSPECIFIED , "unspecified" }, { IPV6_NEW_ADDR_SOLICITED_NODE , "solicited-node" }, { IPV6_NEW_ADDR_PRODUCTIVE , "productive" }, { IPV6_NEW_ADDR_6TO4_MICROSOFT , "6to4-microsoft" }, { IPV6_NEW_ADDR_TEREDO , "teredo" }, { IPV6_NEW_ADDR_ORCHID , "orchid" }, { IPV6_NEW_ADDR_LINKLOCAL_TEREDO, "link-local-teredo" }, { IPV6_NEW_ADDR_NAT64 , "nat64" }, { IPV6_NEW_ADDR_IID_RANDOM , "iid-random" }, { IPV6_NEW_ADDR_IID , "iid" }, { IPV6_NEW_ADDR_IID_LOCAL , "iid-local" }, { IPV6_NEW_ADDR_IID_GLOBAL , "iid-global" }, { IPV6_NEW_ADDR_IID_TEREDO , "iid-teredo" }, { IPV6_NEW_ADDR_IID_EUI48 , "iid-eui48" }, { IPV6_NEW_ADDR_IID_EUI64 , "iid-eui64" }, { IPV6_NEW_ADDR_IID_ISATAP , "iid-isatap" }, { IPV6_ADDR_IID_32_63_HAS_IPV4 , "iid-includes-ipv4" } }; /* text representations */ /*@unused@*/ static const s_type ipv6calc_ipv6addr_type2_strings[] = { { IPV6_ADDR_TYPE2_6RD , "6rd" }, { IPV6_ADDR_TYPE2_LISP , "lisp" }, { IPV6_ADDR_TYPE2_LISP_PETR , "lisp-proxyegresstunnelrouter-anycast" }, { IPV6_ADDR_TYPE2_LISP_MAP_RESOLVER , "lisp-mapresolver-anycast" }, }; /* Registries */ #include "libipv6calc.h" #define IPV6_ADDR_REGISTRY_6BONE REGISTRY_6BONE #define IPV6_ADDR_REGISTRY_IANA REGISTRY_IANA #define IPV6_ADDR_REGISTRY_APNIC REGISTRY_APNIC #define IPV6_ADDR_REGISTRY_ARIN REGISTRY_ARIN #define IPV6_ADDR_REGISTRY_RIPENCC REGISTRY_RIPENCC #define IPV6_ADDR_REGISTRY_LACNIC REGISTRY_LACNIC #define IPV6_ADDR_REGISTRY_AFRINIC REGISTRY_AFRINIC #define IPV6_ADDR_REGISTRY_RESERVED REGISTRY_RESERVED #define IPV6_ADDR_REGISTRY_UNKNOWN REGISTRY_UNKNOWN /*@unused@*/ static const s_type2 ipv6calc_ipv6addrregistry[] = { { IPV6_ADDR_REGISTRY_6BONE , "6BONE" , "6BONE" }, { IPV6_ADDR_REGISTRY_IANA , "IANA" , "IANA" }, { IPV6_ADDR_REGISTRY_APNIC , "APNIC" , "APNIC" }, { IPV6_ADDR_REGISTRY_ARIN , "ARIN" , "ARIN" }, { IPV6_ADDR_REGISTRY_RIPENCC , "RIPE NCC" , "RIPENCC" }, { IPV6_ADDR_REGISTRY_LACNIC , "LACNIC" , "LACNIC" }, { IPV6_ADDR_REGISTRY_AFRINIC , "AFRINIC" , "AFRINIC" }, { IPV6_ADDR_REGISTRY_RESERVED , "reserved" , "reserved" }, { IPV6_ADDR_REGISTRY_UNKNOWN , "unknown" , "unknown" } }; #endif /* prototypes */ extern uint8_t ipv6addr_getoctet(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numoctet); extern uint16_t ipv6addr_getword(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numword); extern uint32_t ipv6addr_getdword(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numdword); extern void ipv6addr_setoctet(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numoctet, unsigned int value); extern void ipv6addr_setword(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numword, unsigned int value); extern void ipv6addr_setdword(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numdword, unsigned int value); extern void ipv6addr_clear(ipv6calc_ipv6addr *ipv6addrp); extern void ipv6addr_clearall(ipv6calc_ipv6addr *ipv6addrp); extern void ipv6addr_copy(ipv6calc_ipv6addr *ipv6addrp_dst, const ipv6calc_ipv6addr *ipv6addrp_src); extern int ipv6addr_compare(const ipv6calc_ipv6addr *ipv6addrp1, const ipv6calc_ipv6addr *ipv6addrp2, const uint16_t compare_flags); extern uint32_t ipv6addr_gettype(const ipv6calc_ipv6addr *ipv6addrp, uint32_t *typeinfo2p); extern void ipv6addr_settype(ipv6calc_ipv6addr *ipv6addrp, int flag_reset); extern int addr_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int addrliteral_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_ipv6addrstruct_to_uncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv6addr_to_octal(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv6addr_to_hex(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern void ipv6addrstruct_maskprefix(ipv6calc_ipv6addr *ipv6addrp); extern void ipv6addrstruct_masksuffix(ipv6calc_ipv6addr *ipv6addrp); extern int identifier_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int tokenlsb64_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_ipv6addrstruct_to_tokenlsb64(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libipv6addr_anonymize(ipv6calc_ipv6addr *ipv6addrp, const s_ipv6calc_anon_set *ipv6calc_anon_set); extern uint32_t ipv6addr_get_payload_anonymized_iid(const ipv6calc_ipv6addr *ipv6addrp, const uint32_t typeinfo); extern int ipv6addr_get_payload_anonymized_prefix(const ipv6calc_ipv6addr *ipv6addrp, const int payload_selector, uint32_t *result_ptr); extern int ipv6addr_iidrandomdetection(const ipv6calc_ipv6addr *ipv6addrp, s_iid_statistics *variancesp); extern int ipv6addr_filter(const ipv6calc_ipv6addr *ipv6addrp, const s_ipv6calc_filter_ipv6addr *filter); extern int ipv6addr_filter_parse(s_ipv6calc_filter_ipv6addr *filter, const char *token); extern int ipv6addr_filter_check(const s_ipv6calc_filter_ipv6addr *filter); extern void ipv6addr_filter_clear(s_ipv6calc_filter_ipv6addr *filter); extern int libipv6addr_get_included_ipv4addr(const ipv6calc_ipv6addr *ipv6addrp, ipv6calc_ipv4addr *ipv4addrp, const int selector); extern uint16_t libipv6addr_cc_index_by_addr(const ipv6calc_ipv6addr *ipv6addrp, unsigned int *data_source_ptr); extern uint32_t libipv6addr_as_num32_by_addr(const ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_registry_num_by_addr(const ipv6calc_ipv6addr *ipv6addrp); ipv6calc-1.0.0/lib/libipv6calc.c000066400000000000000000000514401312366535500163440ustar00rootroot00000000000000/* * Project : ipv6calc/lib * File : libipv6calc.c * Version : $Id: 1b2f1a98507a5058a5c2ec774d4e9d3b031df990 $ * Copyright : 2001-2016 by Peter Bieringer * * Information: * Function library for some tools */ #include #include #include #include #include "config.h" #include "ipv6calctypes.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "librfc1924.h" #include "librfc2874.h" #include "librfc1886.h" #include "../databases/lib/libipv6calc_db_wrapper.h" /* * function converts chars in a string to upcase * in : pointer to a string */ void string_to_upcase(char *string) { int i; if (strlen(string) > 0) { for (i = 0; i < (int) strlen(string); i++) { string[i] = toupper(string[i]); }; }; return; }; /* * function converts chars in a string to lowcase * in : pointer to a string */ void string_to_lowcase(char *string) { int i; if (strlen(string) > 0) { for (i = 0; i < (int) strlen(string); i++) { string[i] = tolower(string[i]); }; }; return; }; /* * reverse string * in : pointer to a string */ void string_to_reverse(char *string) { int i; char helpchar; size_t length; length = strlen(string); if (length < 2) { /* nothing to do */ return; }; for (i = 0; i < ( (int) (length >> 1)); i++) { helpchar = string[i]; string[i] = string[length - i - 1]; string[length - i - 1] = helpchar; }; return; }; /* * dotted-reverse string * in : pointer to a string */ void string_to_reverse_dotted(char *string, const size_t string_length) { char resultstring[NI_MAXHOST], tempstring[NI_MAXHOST]; char *token, *cptr, **ptrptr; int flag_first = 1; ptrptr = &cptr; /* clear result string */ snprintf(resultstring, sizeof(resultstring), "%s", ""); /* check for starting dot */ if ( string[0] == '.' ) { snprintf(tempstring, sizeof(tempstring), "%s.", resultstring); snprintf(resultstring, sizeof(resultstring), "%s", tempstring); }; token = strtok_r(string, ".", ptrptr); while (token != NULL) { if (flag_first == 1) { snprintf(tempstring, sizeof(tempstring), "%s%s", token, resultstring); flag_first = 0; } else { snprintf(tempstring, sizeof(tempstring), "%s.%s", token, resultstring); }; snprintf(resultstring, sizeof(resultstring), "%s", tempstring); token = strtok_r(NULL, ".", ptrptr); }; if ( string[strlen(string) - 1] == '.' ) { snprintf(tempstring, sizeof(tempstring), ".%s", resultstring); snprintf(resultstring, sizeof(resultstring), "%s", tempstring); }; snprintf(string, string_length, ".%s", resultstring); return; }; /* * function converts chars in a string to upcase * in : pointer to a string * ret: format number */ uint32_t libipv6calc_autodetectinput(const char *string) { uint32_t type = FORMAT_auto_noresult; int i, j = 0, result; unsigned int numdots = 0, numcolons = 0, numdigits = 0, numxdigits = 0, numdashes = 0, numspaces = 0, numslashes = 0, numalnums = 0, numchar_s = 0, numpercents = 0, numcolonsdouble = 0, xdigitlen_max = 0, xdigitlen_min = 0, xdl; char resultstring[NI_MAXHOST]; size_t length; length = strlen(string); if (length == 0) { /* input is empty */ goto END_libipv6calc_autodetectinput; }; xdl = 0; for (i = 0; i < (int) length; i++) { if (string[i] == '.') { numdots++; }; if (string[i] == ':') { numcolons++; if (i < (int) length + 1) { /* check for double colons */ if (string[i+1] == ':') { numcolonsdouble++; numcolons++; i++; }; }; }; if (string[i] == '-') { numdashes++; }; if (string[i] == '/') { numslashes++; }; if (string[i] == ' ') { numspaces++; }; if (string[i] == '%') { numpercents++; }; if (string[i] == 's') { numchar_s++; }; if (isdigit((int) string[i])) { numdigits++; }; if (isxdigit((int) string[i])) { numxdigits++; xdl++; } else { if (xdigitlen_max == 0 && xdigitlen_min == 0) { // init xdigitlen_max = xdl; xdigitlen_min = xdl; }; if (xdl > xdigitlen_max) { xdigitlen_max = xdl; }; if (xdl < xdigitlen_min) { xdigitlen_min = xdl; }; xdl = 0; }; if (isalnum((int) string[i])) { numalnums++; }; }; DEBUGPRINT_NA(DEBUG_libipv6calc, "Autodetection source:"); DEBUGPRINT_WA(DEBUG_libipv6calc, " numdots :%d", numdots); DEBUGPRINT_WA(DEBUG_libipv6calc, " numcolons :%d", numcolons); DEBUGPRINT_WA(DEBUG_libipv6calc, " numcolonsdouble:%d", numcolonsdouble); DEBUGPRINT_WA(DEBUG_libipv6calc, " numdashes :%d", numdashes); DEBUGPRINT_WA(DEBUG_libipv6calc, " numspaces :%d", numspaces); DEBUGPRINT_WA(DEBUG_libipv6calc, " numslashes :%d", numslashes); DEBUGPRINT_WA(DEBUG_libipv6calc, " numdigits :%d", numdigits); DEBUGPRINT_WA(DEBUG_libipv6calc, " numxdigits :%d", numxdigits); DEBUGPRINT_WA(DEBUG_libipv6calc, " numalnums :%d", numalnums); DEBUGPRINT_WA(DEBUG_libipv6calc, " numpercents :%d", numpercents); DEBUGPRINT_WA(DEBUG_libipv6calc, " numchar_s :%d", numchar_s); DEBUGPRINT_WA(DEBUG_libipv6calc, " xdigit len max :%d", xdigitlen_max); DEBUGPRINT_WA(DEBUG_libipv6calc, " xdigit len min :%d", xdigitlen_min); DEBUGPRINT_WA(DEBUG_libipv6calc, " length :%d", (int) length); if ( length == 20 && numdots == 0 && numcolons == 0 ) { /* probably a base85 one */ DEBUGPRINT_NA(DEBUG_libipv6calc, " check FORMAT_base85"); result = librfc1924_formatcheck(string, resultstring, sizeof(resultstring)); if ( result == 0 ) { /* ok: base85 */ type = FORMAT_base85; goto END_libipv6calc_autodetectinput; } else DEBUGPRINT_WA(DEBUG_libipv6calc, " check FORMAT_base85 not successful, result: %s", resultstring); }; if (((length >= 7 && length <= 15 && numdots == 3 && numcolons == 0 && numdigits == numxdigits && numdigits >= 4 && numdigits <= 12 && numslashes == 0 ) || ((length >= 9 && length <= 18 && numdots == 3 && numcolons == 0 && numdigits == numxdigits && numdigits >= 5 && numdigits <= 14 && numslashes == 1))) && (numdots + numdigits + numslashes) == length) { /* IPv4: d{1-3}.d{1-3}.d{1-3}.d{1-3} or d{1-3}.d{1-3}.d{1-3}.d{1-3}/d{1-2} */ type = FORMAT_ipv4addr; goto END_libipv6calc_autodetectinput; }; if ( strncmp(string, "\\[", 2) == 0 ) { /* check for Bitstring label: \[x..../dd] */ DEBUGPRINT_NA(DEBUG_libipv6calc, " check FORMAT_bitstring"); result = librfc2874_formatcheck(string, resultstring, strlen(resultstring)); if ( result == 0 ) { /* ok: bitstring label */ type = FORMAT_bitstring; goto END_libipv6calc_autodetectinput; } else DEBUGPRINT_WA(DEBUG_libipv6calc, " check FORMAT_bitstring not successful, result: %s", resultstring); }; if (length == 32 && numxdigits == 32 && numdots == 0 && numcolons == 0) { /* ifinet6 xxxx..xxxx */ type = FORMAT_ifinet6; goto END_libipv6calc_autodetectinput; }; if (((length == 8 && numxdigits == 8) || (length == 7 && numxdigits == 7)) && numdots == 0 && numcolons == 0) { /* IPv4 hexadecimal: xxxxxxxx or xxxxxxx */ type = FORMAT_ipv4hex; goto END_libipv6calc_autodetectinput; }; if ((length >= 11 && length <= 17 && numxdigits >= 6 && numxdigits <= 12 && numdots == 0 && ( (numcolons == 5 && numdashes == 0 && numspaces == 0) || (numcolons == 0 && numdashes == 5 && numspaces == 0) || (numcolons == 0 && numdashes == 0 && numspaces == 5)) ) || (length == 13 && numcolons == 0 && numdashes == 1 && numspaces == 0 && numxdigits == 12) || (length == 12 && numcolons == 0 && numdashes == 0 && numspaces == 0 && numxdigits == 12) || (length == 14 && numdots == 2 && numxdigits ==12 && xdigitlen_min == 4 && xdigitlen_max == 4) ) { /* MAC 00:00:00:00:00:00 or 00-00-00-00-00-00 or "xx xx xx xx xx xx" or "xxxxxx-xxxxxx" or xxxxxxxxxxxx or xxxx.xxxx.xxxx */ if (length == 14 && numdots == 2 && numxdigits ==12 && xdigitlen_min == 4 && xdigitlen_max == 4) { // xxxx.xxxx.xxxx type = FORMAT_mac; DEBUGPRINT_NA(DEBUG_libipv6calc, "Autodetection found type: mac"); goto END_libipv6calc_autodetectinput; }; DEBUGPRINT_NA(DEBUG_libipv6calc, " check FORMAT_mac"); /* Check whether minimum 1 xdigit is between colons, dashes, spaces */ if (numcolons == 0 && numdashes == 1 && numspaces == 0 && numxdigits == 12) { /* Check xxxxxx-xxxxxx */ j = 0; for (i = 0; i < (int) length; i++) { if (isxdigit((int) string[i])) { j++; if ( j > 6 ) { /* more than 6 xdigits */ j = -1; break; }; continue; } else if (string[i] == '-' ) { if ( j == 0 ) { /* dash follow dash */ j = -1; break; }; j = 0; continue; }; /* normally not reached */ j = -1; break; }; } else if (numcolons == 0 && numdashes == 0 && numspaces == 0 && numxdigits == 12) { /* nothing more to check */ } else { j = 0; for (i = 0; i < (int) length; i++) { if (isxdigit((int) string[i])) { j++; if ( j > 2 ) { /* more than 2 xdigits */ j = -1; break; }; continue; } else if (string[i] == ':' || string[i] == '-' || string[i] == ' ') { if ( j == 0 ) { /* colon/dash/space follows colon/dash/space */ j = -1; break; }; j = 0; continue; }; /* normally not reached */ j = -1; break; }; }; /* end of if */ if ( j != -1 ) { type = FORMAT_mac; DEBUGPRINT_NA(DEBUG_libipv6calc, "Autodetection found type: mac"); goto END_libipv6calc_autodetectinput; }; }; if ((length >= 15 && length <= 23 && numxdigits >= 8 && numxdigits <= 16 && numdots == 0 && ( (numcolons == 7 && numdashes == 0 && numspaces == 0) || (numcolons == 0 && numdashes == 7 && numspaces == 0) || (numcolons == 0 && numdashes == 0 && numspaces == 7))) || (length == 16 && numcolons == 0 && numdashes == 0 && numspaces == 0 && numxdigits == 16)) { /* EUI-64 00:00:00:00:00:00:00:00 or 00-00-00-00-00-00-00-00 or "xx xx xx xx xx xx xx xx" or xxxxxxxxxxxxxxxx */ DEBUGPRINT_NA(DEBUG_libipv6calc, " check FORMAT_eui64"); if (numcolons == 0 && numdashes == 0 && numspaces == 0 && numxdigits == 16) { /* nothing more to check */ } else { j = 0; for (i = 0; i < (int) length; i++) { if (isxdigit((int) string[i])) { j++; if ( j > 2 ) { /* more than 2 xdigits */ j = -1; break; }; continue; } else if (string[i] == ':' || string[i] == '-' || string[i] == ' ') { if ( j == 0 ) { /* colon/dash/space follows colon/dash/space */ j = -1; break; }; j = 0; continue; }; /* normally not reached */ j = -1; break; }; }; /* end of if */ if ( j != -1 ) { type = FORMAT_eui64; DEBUGPRINT_NA(DEBUG_libipv6calc, "Autodetection found type: eui64"); goto END_libipv6calc_autodetectinput; }; }; if (numcolons == 0 && numdots > 0 && numslashes == 0 && numspaces == 0 && (numalnums + numdots) == length) { /* check for reverse nibble string */ DEBUGPRINT_NA(DEBUG_libipv6calc, " check FORMAT_revnibbels_int"); result = librfc1886_formatcheck(string, resultstring, sizeof(resultstring)); if ( result == 0 ) { /* ok: reverse nibble string */ type = FORMAT_revnibbles_int; goto END_libipv6calc_autodetectinput; } else DEBUGPRINT_WA(DEBUG_libipv6calc, " check FORMAT_revnibbels_int not successful, result: %s", resultstring); }; if ((numcolons == 3) && (numcolonsdouble == 0) && numdots == 0 && numslashes == 0 && numpercents == 0 && ((numcolons + numxdigits) == length)) { /* IID */ type = FORMAT_iid; goto END_libipv6calc_autodetectinput; }; if (numcolons != 0 && numdots <= 3 && numslashes <= 1 && ((numpercents == 0 && (numdots + numcolons + numxdigits + numslashes) == length) || (numpercents == 1 && (numdots + numcolons + numxdigits + numslashes + numpercents) <= length))) { /* hopefully an IPv6 address */ /* fe80::1 */ /* fe80::1%eth0 */ type = FORMAT_ipv6addr; goto END_libipv6calc_autodetectinput; }; if (numcolons == 0 && numdots == 2 && numslashes == 0 && numdashes >= 3 && ((numchar_s == 0 && (numdashes + numdots + numxdigits + 10) == length) || (numchar_s == 1 && (numdashes + numdots + numxdigits + numchar_s + 10) <= length))) { /* hopefully an IPv6 literal address (e.g. 2001-DB8--1.IPV6-LITERAL.NET) IPV6-LITERAL.NET has 10 chars which are not xdigit */ /* also supported with scope: fe80--218-8bff-fe17-a226s4.ipv6-literal.net */ type = FORMAT_ipv6literal; goto END_libipv6calc_autodetectinput; }; END_libipv6calc_autodetectinput: if (type != FORMAT_auto_noresult) { DEBUGPRINT_WA(DEBUG_libipv6calc, "Autodetection found type: 0x%08x", (unsigned int) type); } else { DEBUGPRINT_NA(DEBUG_libipv6calc, "Autodetection not successful"); }; return (type); }; /* * clear filter master structure * * in : *filter = filter structure */ void libipv6calc_filter_clear(s_ipv6calc_filter_master *filter_master) { ipv4addr_filter_clear(&filter_master->filter_ipv4addr); ipv6addr_filter_clear(&filter_master->filter_ipv6addr); macaddr_filter_clear(&filter_master->filter_macaddr); return; }; /* * clear filter sub structure db_cc * * in : *filter = filter structure */ void libipv6calc_filter_clear_db_cc(s_ipv6calc_filter_db_cc *filter_db_cc) { int i; filter_db_cc->active = 0; filter_db_cc->cc_must_have_max = 0; filter_db_cc->cc_may_not_have_max = 0; for (i = 0; i < IPV6CALC_FILTER_DB_CC_MAX; i++) { filter_db_cc->cc_must_have[i] = 0; filter_db_cc->cc_may_not_have[i] = 0; }; return; }; /* * clear filter sub structure db_asn * * in : *filter = filter structure */ void libipv6calc_filter_clear_db_asn(s_ipv6calc_filter_db_asn *filter_db_asn) { int i; filter_db_asn->active = 0; filter_db_asn->asn_must_have_max = 0; filter_db_asn->asn_may_not_have_max = 0; for (i = 0; i < IPV6CALC_FILTER_DB_ASN_MAX; i++) { filter_db_asn->asn_must_have[i] = 0; filter_db_asn->asn_may_not_have[i] = 0; }; return; }; /* * clear filter sub structure db_registry * * in : *filter = filter structure */ void libipv6calc_filter_clear_db_registry(s_ipv6calc_filter_db_registry *filter_db_registry) { int i; filter_db_registry->active = 0; filter_db_registry->registry_must_have_max = 0; filter_db_registry->registry_may_not_have_max = 0; for (i = 0; i < IPV6CALC_FILTER_DB_REGISTRY_MAX; i++) { filter_db_registry->registry_must_have[i] = 0; filter_db_registry->registry_may_not_have[i] = 0; }; return; }; /* * function parses ipv6calc filter expression * * in : pointer to a string * mod: master filter structure * ret: success */ int libipv6calc_filter_parse(const char *expression, s_ipv6calc_filter_master *filter_master) { char tempstring[NI_MAXHOST] = ""; char *charptr, *cptr, **ptrptr; ptrptr = &cptr; int r, token_used, result = 0; DEBUGPRINT_WA(DEBUG_libipv6calc, "called with: %s", expression); snprintf(tempstring, sizeof(tempstring), "%s", expression); /* split expression */ charptr = strtok_r(tempstring, ",", ptrptr); while (charptr != NULL) { token_used = 0; r = ipv4addr_filter_parse(&filter_master->filter_ipv4addr, charptr); if (r == 0) { token_used = 1; } else if (r == 2) { result = 1; ERRORPRINT_WA("Unrecognized filter token (ipv4.xxx): %s", charptr); }; r = ipv6addr_filter_parse(&filter_master->filter_ipv6addr, charptr); if (r == 0) { token_used = 1; } else if (r == 2) { result = 1; ERRORPRINT_WA("Unrecognized filter token (ipv6.xxx): %s", charptr); }; // r += macaddr_filter_parse(&filter_macaddr, charptr); // missing implementation /* overall check */ if ((token_used == 0) && (result != 1)) { result = 1; ERRORPRINT_WA("Unrecognized filter token (general): %s", charptr); }; charptr = strtok_r(NULL, ",", ptrptr); }; return (result); }; /* * function checks ipv6calc filter expression * * in: master filter structure * ret: success */ int libipv6calc_filter_check(s_ipv6calc_filter_master *filter_master) { int result = 0, r; DEBUGPRINT_NA(DEBUG_libipv6calc, "called"); r = ipv4addr_filter_check(&filter_master->filter_ipv4addr); if (r > 0) { result = 1; }; r = ipv6addr_filter_check(&filter_master->filter_ipv6addr); if (r > 0) { result = 1; }; if (result == 1) { ERRORPRINT_NA("filter check failed"); }; return (result); }; /* * return proper anonymization set by name * * in : *name = name of anonymization set * *ipv6calc_anon_set = pointer to anonymization set to be filled * return: 1=not found, 0=success */ int libipv6calc_anon_set_by_name(s_ipv6calc_anon_set *ipv6calc_anon_set, const char *name) { int i; if (strlen(name) == 0) { fprintf(stderr, "Name of anonymization set is empty\n"); return 1; }; DEBUGPRINT_WA(DEBUG_libipv6calc, "search for anonymization set with name: %s", name); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_anon_set_list); i++) { DEBUGPRINT_WA(DEBUG_libipv6calc, "compare name: %s ? %s", name, ipv6calc_anon_set_list[i].name); if ((strcmp(name, ipv6calc_anon_set_list[i].name) == 0) || (strcmp(name, ipv6calc_anon_set_list[i].name_short) == 0)) { DEBUGPRINT_WA(DEBUG_libipv6calc, "hit name: %s = %s", name, ipv6calc_anon_set_list[i].name); memcpy(ipv6calc_anon_set, &ipv6calc_anon_set_list[i], sizeof(s_ipv6calc_anon_set)); return 0; }; }; return 1; }; /* * get name of anonymization settings * * in : s_ipv6calc_anon_set = anonymization set * return: char * */ const char *libipv6calc_anon_method_name(const s_ipv6calc_anon_set *ipv6calc_anon_set) { int i; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_anon_methods); i++) { if (ipv6calc_anon_methods[i].method == ipv6calc_anon_set->method) { return(ipv6calc_anon_methods[i].name); break; }; }; return(NULL); }; /* * create string of anonymization settings * * in : *string = string to be filled * s_ipv6calc_anon_set = anonymization set * return: void */ void libipv6calc_anon_infostring(char *string, const int stringlength, const s_ipv6calc_anon_set *ipv6calc_anon_set) { const char *method_name = libipv6calc_anon_method_name(ipv6calc_anon_set); snprintf(string, stringlength, "set=%s,mask-ipv6=%d,mask-ipv4=%d,mask-eui64=%d,mask-mac=%d,method=%s", ipv6calc_anon_set->name, ipv6calc_anon_set->mask_ipv6, ipv6calc_anon_set->mask_ipv4, ipv6calc_anon_set->mask_eui64, ipv6calc_anon_set->mask_mac, (method_name == NULL ? "unknown" : method_name)); return; }; /* * check whether anonymization method is supported * * in : s_ipv6calc_anon_set = anonymization set * return: * 2: special check succeeded * 1: no special checks needed * 0: not supported */ int libipv6calc_anon_supported(const s_ipv6calc_anon_set *ipv6calc_anon_set) { /* check requirements */ if (ipv6calc_anon_set->method == ANON_METHOD_KEEPTYPEASNCC) { // check for support if (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB | ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB) == 1) { return(2); } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_CC) != 1) { fprintf(stderr, "ipv6calc anonymization method not supported, missing included/available database: IPv4->CountryCode (GeoIP)\n"); }; if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_CC) != 1) { fprintf(stderr, "ipv6calc anonymization method not supported, missing included/available database: IPv6->CountryCode (GeoIP)\n"); }; if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS) != 1) { fprintf(stderr, "ipv6calc anonymization method not supported, missing included/available database: IPv4->AutonomousSystemNumber (GeoIP)\n"); }; if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_AS) != 1) { fprintf(stderr, "ipv6calc anonymization method not supported, missing included/available database: IPv6->AutonomousSystemNumber (GeoIP)\n"); }; return(0); }; } else { return(1); }; }; /* * return pointer to registry name by number */ const char *libipv6calc_registry_string_by_num(const int registry) { int j = -1, i; DEBUGPRINT_WA(DEBUG_libipv6calc, "Called with registry=%d", registry); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_registries); i++ ) { if (ipv6calc_registries[i].number == registry) { j = i; break; }; }; if (j == -1) { fprintf(stderr, "ERROR - undefined registry number: %d (this should not happen)\n", registry); exit(1); }; return(ipv6calc_registries[j].token); }; /* * bit counter */ int libipv6calc_bitcount_uint32_t(const uint32_t value) { int i, count = 0; uint32_t mask = 0x1; for (i = 0; i < 32; i++) { if (value & mask) { count++; }; mask = mask << 1; }; return(count); }; /* * return library version numeric */ uint32_t libipv6calc_lib_version_numeric(void) { return(IPV6CALC_PACKAGE_VERSION_NUMERIC); }; /* * return library version as string */ const char *libipv6calc_lib_version_string(void) { return(IPV6CALC_PACKAGE_VERSION_STRING); }; /* * return API version numeric */ uint32_t libipv6calc_api_version_numeric(void) { return(IPV6CALC_API_VERSION_NUMERIC); }; /* * return API version as string */ const char *libipv6calc_api_version_string(void) { return(IPV6CALC_API_VERSION_STRING); }; ipv6calc-1.0.0/lib/libipv6calc.h000066400000000000000000000135421312366535500163520ustar00rootroot00000000000000/* * Project : ipv6calc * File : libipv6calc.h * Version : $Id: 6dd00f5e4ab504be67152f1a8d12345fe4f8672a $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Header file for libipv6calc.c */ #include "ipv6calc_inttypes.h" #include "ipv6calctypes.h" #include "libmac.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "libipaddr.h" #include "databases/lib/libipv6calc_db_wrapper.h" #include "ipv6calcoptions.h" #include "libipv6calcdebug.h" /* typedefs */ #ifndef _libipv6calc_h #define _libipv6calc_h 1 /* master filter structure */ typedef struct { s_ipv6calc_filter_ipv4addr filter_ipv4addr; s_ipv6calc_filter_ipv6addr filter_ipv6addr; s_ipv6calc_filter_macaddr filter_macaddr; } s_ipv6calc_filter_master; /*@unused@*/ static const s_ipv6calc_anon_set ipv6calc_anon_set_list[] = { // name short ip4 ip6 iid mac keep-oui method { "anonymize-standard" , "as" , 24, 56, 40, 24, 1 , ANON_METHOD_ANONYMIZE }, { "anonymize-careful" , "ac" , 20, 48, 24, 24, 1 , ANON_METHOD_ANONYMIZE }, { "anonymize-paranoid" , "ap" , 16, 40, 0, 24, 0 , ANON_METHOD_ANONYMIZE }, { "zeroize-standard" , "zs" , 24, 56, 40, 24, 1 , ANON_METHOD_ZEROIZE }, { "zeroize-careful" , "zc" , 20, 48, 24, 24, 1 , ANON_METHOD_ZEROIZE }, { "zeroize-paranoid" , "zp" , 16, 40, 0, 24, 0 , ANON_METHOD_ZEROIZE }, { "keep-type-asn-cc" , "kp" , 24, 56, 40, 24, 1 , ANON_METHOD_KEEPTYPEASNCC } }; /*@unused@*/ static const s_ipv6calc_anon_methods ipv6calc_anon_methods[] = { { "anonymize" , 1, "reliable anonymization, keep as much type information as possible" }, { "zeroize" , 2, "simple zeroizing according to given masks, probably loose type information" }, { "keep-type-asn-cc" , 3, "special reliable anonymization, keep type & Autonomous System Number and CountryCode" } }; /* Registries (main registries must below 8 for anonymization mapping) */ #define REGISTRY_APNIC 0x02 #define REGISTRY_RIPENCC 0x03 #define REGISTRY_LACNIC 0x04 #define REGISTRY_AFRINIC 0x05 #define REGISTRY_ARIN 0x06 #define REGISTRY_6BONE 0x08 #define REGISTRY_IANA 0x09 #define REGISTRY_6TO4 0x0c #define REGISTRY_RESERVED 0x0e #define REGISTRY_UNKNOWN 0x0f // new array (try to remove old arrays) /*@unused@*/ static const s_type2 ipv6calc_registries[] = { { REGISTRY_6BONE , "6BONE" , "REGISTRY_6BONE" }, { REGISTRY_IANA , "IANA" , "REGISTRY_IANA" }, { REGISTRY_APNIC , "APNIC" , "REGISTRY_APNIC" }, { REGISTRY_ARIN , "ARIN" , "REGISTRY_ARIN" }, { REGISTRY_RIPENCC , "RIPENCC" , "REGISTRY_RIPENCC" }, { REGISTRY_LACNIC , "LACNIC" , "REGISTRY_LACNIC" }, { REGISTRY_AFRINIC , "AFRINIC" , "REGISTRY_AFRINIC" }, { REGISTRY_6TO4 , "6TO4" , "REGISTRY_6TO4" }, { REGISTRY_RESERVED , "reserved" , "REGISTRY_RESERVED"}, { REGISTRY_UNKNOWN , "unknown" , "REGISTRY_UNKNOWN" } }; /* some generic defines */ #define IPV6CALC_PROTO_IPV4 4 #define IPV6CALC_PROTO_IPV6 6 /* some generic macros */ // pack value using xor/mask/shift #define PACK_XMS(v, x, m, s) ((((v) ^ (x)) & (m)) << (s)) // unpack value using xor/mask/shift #define UNPACK_XMS(p, x, m, s) ((((p) >> (s)) ^ (x)) & (m)) // return 16-bit MSB from 32-bit #define U32_MSB16(v) ((v >> 16) & 0xffff) // return 16-bit LSB from 32-bit #define U32_LSB16(v) (v & 0xffff) // max entries of a const array #define MAXENTRIES_ARRAY(a) (signed long) (sizeof(a) / sizeof(a[0])) /* non-quiet print with args */ #define NONQUIETPRINT_WA(t, ...) if (ipv6calc_quiet == 0) { fprintf(stderr, t "\n", __VA_ARGS__); }; /* non-quiet print no args */ #define NONQUIETPRINT_NA(t) if (ipv6calc_quiet == 0) { fprintf(stderr, t "\n"); }; #define IPV6CALC_LIB_VERSION_CHECK_EXIT(version_numeric, version_string) \ if (version_numeric != libipv6calc_lib_version_numeric()) { \ ERRORPRINT_WA("Library version is not matching: has:%s required:%s", libipv6calc_lib_version_string(), version_string); \ exit(1); \ }; #endif // _libipv6calc_h /* prototypes */ extern int ipv6calc_quiet; extern int ipv6calc_verbose; extern void string_to_upcase(char *string); extern void string_to_lowcase(char *string); extern void string_to_reverse(char *string); extern void string_to_reverse_dotted(char *string, const size_t string_length); extern uint32_t libipv6calc_autodetectinput(const char *string); extern int libipv6calc_filter_parse(const char *expression, s_ipv6calc_filter_master *filter_master); extern int libipv6calc_filter_check(s_ipv6calc_filter_master *filter_master); extern void libipv6calc_filter_clear(s_ipv6calc_filter_master *filter_master); extern void libipv6calc_filter_clear_db_cc(s_ipv6calc_filter_db_cc *filter_db_cc); extern void libipv6calc_filter_clear_db_asn(s_ipv6calc_filter_db_asn *filter_db_asn); extern void libipv6calc_filter_clear_db_registry(s_ipv6calc_filter_db_registry *filter_db_registry); extern int libipv6calc_anon_set_by_name(s_ipv6calc_anon_set *ipv6calc_anon_set, const char* name); extern void libipv6calc_anon_infostring(char* string, const int stringlength, const s_ipv6calc_anon_set *ipv6calc_anon_set); extern const char *libipv6calc_anon_method_name(const s_ipv6calc_anon_set *ipv6calc_anon_set); extern int libipv6calc_anon_supported(const s_ipv6calc_anon_set *ipv6calc_anon_set); extern const char *libipv6calc_registry_string_by_num(const int registry); extern int libipv6calc_bitcount_uint32_t(const uint32_t value); extern uint32_t libipv6calc_lib_version_numeric(void); extern const char *libipv6calc_lib_version_string(void); extern uint32_t libipv6calc_api_version_numeric(void); extern const char *libipv6calc_api_version_string(void); ipv6calc-1.0.0/lib/libipv6calcdebug.h000066400000000000000000000054371312366535500173650ustar00rootroot00000000000000/* * Project : ipv6calc/lib * File : libipv6calcdebug.h * Version : $Id: 2d0a952bb1dcfa81ca53caaa0f67868e4dceb88f $ * Copyright : 2002-2013 by Peter Bieringer * * Information: * Debug information */ #ifndef _libipv6calcdebug_h_ #define _libipv6calcdebug_h_ #define DEBUG_ipv6calc_ALL -1 //reserved for debug levels of dedicated binary 0x00000001l //reserved for debug levels of dedicated binary 0x00000002l //reserved for debug levels of dedicated binary 0x00000004l #define DEBUG_ipv6calcoptions 0x00000008l #define DEBUG_libipv6calc 0x00000010l #define DEBUG_libipv6addr 0x00000020l #define DEBUG_libipv4addr 0x00000040l #define DEBUG_libipv6calctypes 0x00000080l #define DEBUG_librfc3041 0x00000100l #define DEBUG_librfc1884 0x00000200l #define DEBUG_librfc2874 0x00000400l #define DEBUG_librfc1886 0x00000800l #define DEBUG_librfc3056 0x00001000l #define DEBUG_libifinet6 0x00002000l #define DEBUG_libieee 0x00004000l #define DEBUG_libeui64 0x00008000l #define DEBUG_libmac 0x00010000l #define DEBUG_libipaddr 0x00020000l #define DEBUG_libipv6calc_db_wrapper 0x00100000l #define DEBUG_libipv6calc_db_wrapper_GeoIP 0x00200000l #define DEBUG_libipv6calc_db_wrapper_IP2Location 0x00400000l #define DEBUG_libipv6calc_db_wrapper_GeoIP_verbose 0x00800000l #define DEBUG_libipv6addr_iidrandomdetection 0x01000000l #define DEBUG_libipv6addr_anonymization_unknown_break 0x02000000l #define DEBUG_libipv6calc_db_wrapper_DBIP 0x10000000l #define DEBUG_libipv6calc_db_wrapper_External 0x20000000l #define DEBUG_libipv6calc_db_wrapper_BuiltIn 0x40000000l /* debug print with args */ #define DEBUGPRINT_WA(d, t, ...) \ if ((ipv6calc_debug & (d)) != 0) { \ if (ipv6calc_debug == DEBUG_ipv6calc_ALL) { \ fprintf(stderr, "%s/%s:%d[0x%08lx]: " t "\n", __FILE__, __func__, __LINE__, d, __VA_ARGS__); \ } else { \ fprintf(stderr, "%s/%s:%d: " t "\n", __FILE__, __func__, __LINE__, __VA_ARGS__); \ }; \ }; /* debug print no args */ #define DEBUGPRINT_NA(d, t) \ if ((ipv6calc_debug & (d)) != 0) { \ if (ipv6calc_debug == DEBUG_ipv6calc_ALL) { \ fprintf(stderr, "%s/%s:%d[0x%08lx]: " t "\n", __FILE__, __func__, __LINE__, d); \ } else { \ fprintf(stderr, "%s/%s:%d: " t "\n", __FILE__, __func__, __LINE__); \ }; \ }; /* error print with args */ #define ERRORPRINT_WA(t, ...) \ fprintf(stderr, "%s/%s:%d: " t "\n", __FILE__, __func__, __LINE__, __VA_ARGS__); /* error print no args */ #define ERRORPRINT_NA(t) \ fprintf(stderr, "%s/%s:%d: " t "\n", __FILE__, __func__, __LINE__); /* begin/end of debug section */ #define DEBUGSECTION_BEGIN(d) if ((ipv6calc_debug & (d)) != 0) { #define DEBUGSECTION_ELSE } else { #define DEBUGSECTION_END }; #endif /* global debug value */ extern long int ipv6calc_debug; ipv6calc-1.0.0/lib/libmac.c000066400000000000000000000216541312366535500154010ustar00rootroot00000000000000/* * Project : ipv6calc * File : libmac.c * Version : $Id: 135622fbbe9ea93e7da6abdecbf555ab9b299679 $ * Copyright : 2001-2016 by Peter Bieringer * * Information: * Function library MAC address handling */ #include #include #include #include "libipv6calc.h" #include "libmac.h" #include "libieee.h" #include "ipv6calctypes.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" static char ChSet[] = "0123456789abcdefABCDEF:- ."; /* function 48-bit MAC address to MACaddr_structure * * in : *addrstring = MAC address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int mac_to_macaddrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_macaddr *macaddrp) { int retval = 1, result, i, ccolons = 0, cdashes = 0, cspaces = 0, cdots = 0; size_t cnt; int temp[6]; /* check length */ if ( ( strlen(addrstring) < 11 ) || ( strlen(addrstring) > 17 ) ) { snprintf(resultstring, resultstring_length, "Error in given 48-bit MAC address, has not 11 to 17 chars!"); retval = 1; return (retval); }; /* check for hex chars and ":"/"-"/" " only content */ cnt = strspn(addrstring, ChSet); if ( cnt < strlen(addrstring) ) { snprintf(resultstring, resultstring_length, "Illegal character in given MAC address '%s' on position %d (%c)!", addrstring, (int) cnt+1, addrstring[cnt]); retval = 1; return (retval); }; /* count ":" or "-" or " " or " " must be 5 or 1 x "-" */ for (i = 0; i < (int) strlen(addrstring); i++) { if (addrstring[i] == ':') { ccolons++; } else if (addrstring[i] == '-') { cdashes++; } else if (addrstring[i] == ' ') { cspaces++; } else if (addrstring[i] == '.') { cdots++; }; }; if ( ! ( (ccolons == 5 && cdashes == 0 && cspaces == 0 && cdots == 0) || (ccolons == 0 && cdashes == 5 && cspaces == 0 && cdots == 0) || (ccolons == 0 && cdashes == 0 && cspaces == 5 && cdots == 0) || (ccolons == 0 && cdashes == 0 && cspaces == 0 && cdots == 2) || (ccolons == 0 && cdashes == 1 && cspaces == 0 && strlen(addrstring) == 13 && cdots == 0) || (ccolons == 0 && cdashes == 0 && cspaces == 0 && strlen(addrstring) == 12 && cdots == 0)) ) { snprintf(resultstring, resultstring_length, "Error in given MAC address, '%s' is not valid (number of colons/dashes/spaces is not 5 or number of dashes is not 1)!", addrstring); retval = 1; return (retval); }; /* scan address into array */ if ( ccolons == 5 ) { result = sscanf(addrstring, "%x:%x:%x:%x:%x:%x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5]); } else if ( cdashes == 5 ) { result = sscanf(addrstring, "%x-%x-%x-%x-%x-%x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5]); } else if ( cdashes == 1 ) { result = sscanf(addrstring, "%2x%2x%2x-%2x%2x%2x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5]); } else if ( cspaces == 5 ) { result = sscanf(addrstring, "%x %x %x %x %x %x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5]); } else if ( cdots == 2 ) { result = sscanf(addrstring, "%2x%2x.%2x%2x.%2x%2x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5]); } else if ( cdashes == 0 ) { result = sscanf(addrstring, "%2x%2x%2x%2x%2x%2x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5]); } else { snprintf(resultstring, resultstring_length, "Error in given MAC address, unexpected failure on scanning '%s'!", addrstring); retval = 1; return (retval); }; if ( result != 6 ) { snprintf(resultstring, resultstring_length, "Error in given MAC address, splitting of '%s' returns %d items instead of 6!", addrstring, result); retval = 1; return (retval); }; /* check address words range */ for ( i = 0; i <= 5; i++ ) { if ( ( temp[i] < 0x0 ) || ( temp[i] > 0xff ) ) { snprintf(resultstring, resultstring_length, "Error in given MAC address, '%s' is not valid on position %d!", addrstring, i); retval = 1; return (retval); }; }; /* copy address */ for ( i = 0; i <= 5; i++ ) { macaddrp->addr[i] = (uint8_t) temp[i]; }; macaddrp->flag_valid = 1; retval = 0; return (retval); }; /* compatible name */ int addr_to_macaddrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_macaddr *macaddrp) { return (mac_to_macaddrstruct(addrstring, resultstring, resultstring_length, macaddrp)); }; /* * clear MACaddr * * mod: *addrstring = MAC address */ void mac_clear(ipv6calc_macaddr *macaddrp) { int i; for ( i = 0; i <= 5; i++ ) { macaddrp->addr[i] = 0; }; return; }; /* * clear MACaddr_structure * * mod: *addrstring = MAC address */ void mac_clearall(ipv6calc_macaddr *macaddrp) { mac_clear(macaddrp); /* Clear valid flag */ macaddrp->flag_valid = 0; return; }; /* * stores the macaddr structure in a string * * in: macaddr = MAC address structure * out: *resultstring = MAC address string * ret: ==0: ok, !=0: error */ int macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { char tempstring[NI_MAXHOST]; /* address */ snprintf(tempstring, sizeof(tempstring), "%02x:%02x:%02x:%02x:%02x:%02x", (unsigned int) macaddrp->addr[0], (unsigned int) macaddrp->addr[1], (unsigned int) macaddrp->addr[2], (unsigned int) macaddrp->addr[3], (unsigned int) macaddrp->addr[4], (unsigned int) macaddrp->addr[5]); if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { snprintf(resultstring, resultstring_length, "MAC=%s", tempstring); } else { snprintf(resultstring, resultstring_length, "%s", tempstring); }; return(0); }; /* compatible name */ int libmacaddr_macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { return (macaddrstruct_to_string(macaddrp, resultstring, resultstring_length, formatoptions)); }; /* * clear filter MAC address * * in : *filter = filter structure */ void macaddr_filter_clear(s_ipv6calc_filter_macaddr *filter) { filter->active = 0; filter->typeinfo_must_have = 0; return; }; /* * filter MAC address * * in : *macaddrp = MAC address structure * in : *filter = filter structure * ret: 0=match 1=not match */ int macaddr_filter(const ipv6calc_macaddr *macaddrp, const s_ipv6calc_filter_macaddr *filter) { // still missing implementation if (sizeof(filter) == 0) { }; // make compiler happy (avoid unused "...") if (sizeof(macaddrp) == 0) { }; // make compiler happy (avoid unused "...") return 1; }; /* * anonymize MAC address * * in : *macaddrp = MAC address structure * mask = number of bits of mask * ret: */ void libmacaddr_anonymize(ipv6calc_macaddr *macaddrp, const s_ipv6calc_anon_set *ipv6calc_anon_set_p) { int mask = 0, i, j; uint8_t bit_ul = 0; /* anonymize MAC address according to settings */ DEBUGPRINT_WA(DEBUG_libmac, "called: EUI-48=%06x%06x method=%d", EUI48_00_23(macaddrp->addr), EUI48_24_47(macaddrp->addr), ipv6calc_anon_set_p->method); if (ipv6calc_anon_set_p->mask_autoadjust == 1) { DEBUGPRINT_NA(DEBUG_libmac, "mask-autoadjust is set, autoselect proper mask"); if ((macaddrp->addr[0] & 0x2) == 0) { // global address mask = 24; if (libieee_check_oui36_iab(EUI48_00_23(macaddrp->addr)) == 1) { // OUI-36/IAB mask += 12; // increase by 12 bits }; DEBUGPRINT_WA(DEBUG_libmac, "EUI-48 is a global one, source of mask: automagic: %d", mask); } else { // local address, honor mask_mac mask = ipv6calc_anon_set_p->mask_mac; DEBUGPRINT_WA(DEBUG_libmac, "EUI-48 is a local one, source of mask: mask-iid option: %d", mask); }; if (ipv6calc_anon_set_p->mask_mac > mask) { mask = ipv6calc_anon_set_p->mask_mac; DEBUGPRINT_WA(DEBUG_libmac, "specified mask is higher than autoselected one, change to specified: %d", mask); }; } else { DEBUGPRINT_WA(DEBUG_libmac, "mask-autoadjust is not set, use always mask: %d", mask); mask = ipv6calc_anon_set_p->mask_mac; }; DEBUGPRINT_WA(DEBUG_libmac, "zeroize EUI-48 with masked bits: %d", mask); // save universal/local bit bit_ul = macaddrp->addr[0] & 0x02; if (mask == 48) { // nothing to do } else if (mask > 0) { j = mask >> 3; for (i = 5; i >= 0; i--) { DEBUGPRINT_WA(DEBUG_libmac, "zeroize EUI-48: mask=%02d i=%d j=%d", mask, i, j); if (j < i) { DEBUGPRINT_WA(DEBUG_libmac, "zeroize EUI-48: byte %d", i); macaddrp->addr[i] = 0x00; } else if (j == i) { DEBUGPRINT_WA(DEBUG_libmac, "zeroize EUI-48: mask byte %d with %02x (offset: %d)", i, (0xff00 >> (mask % 0x8)) & 0xff, (mask % 0x8)); macaddrp->addr[i] &= (0xff00 >> (mask % 0x8)) & 0xff; } else { DEBUGPRINT_NA(DEBUG_libmac, "zeroize EUI-48: finished"); break; }; }; } else { mac_clear(macaddrp); }; // restore universal/local bit macaddrp->addr[0] = (macaddrp->addr[0] & 0xfd) | bit_ul; DEBUGPRINT_WA(DEBUG_libmac, "anonymization finished, return: %06x%06x", EUI48_00_23(macaddrp->addr), EUI48_24_47(macaddrp->addr)); return; }; ipv6calc-1.0.0/lib/libmac.h000066400000000000000000000032441312366535500154010ustar00rootroot00000000000000/* * Project : ipv6calc * File : libmac.h * Version : $Id: c865560bac3eaca479657fc89ac1726299ee1959 $ * Copyright : 2001-2014 by Peter Bieringer * * Information: * Header file for libmac.c */ #include "ipv6calc_inttypes.h" #ifndef _libmac_h #define _libmac_h 1 /* typedefs */ typedef struct { uint8_t addr[6]; /* MAC address in 6x 8 bit */ int flag_valid; /* address structure filled */ } ipv6calc_macaddr; typedef struct { int active; uint32_t typeinfo_must_have; /* others coming next */ } s_ipv6calc_filter_macaddr; #define EUI48_00_23(x) ((x[0] << 16) | (x[1] << 8) | x[2]) #define EUI48_24_47(x) ((x[3] << 16) | (x[4] << 8) | x[5]) #endif /* prototypes */ extern int mac_to_macaddrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_macaddr *macaddrp); extern int addr_to_macaddrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_macaddr *macaddrp); // compatible name extern int macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int libmacaddr_macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); // compatible name extern void mac_clearall(ipv6calc_macaddr *macaddrp); extern int macaddr_filter(const ipv6calc_macaddr *macaddrp, const s_ipv6calc_filter_macaddr *filter); extern void macaddr_filter_clear(s_ipv6calc_filter_macaddr *filter); extern void libmacaddr_anonymize(ipv6calc_macaddr *macaddrp, const s_ipv6calc_anon_set *ipv6calc_anon_set_p); ipv6calc-1.0.0/lib/librfc1884.c000066400000000000000000000242431312366535500157350ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc1884.c * Version : $Id: e6cc6ce21ba466296307efb0363acdbabe070d62 $ * Copyright : 2001-2016 by Peter Bieringer * * Information: * Function library for conversions defined in RFC 1884 */ #include #include #include #include "libipv6calcdebug.h" #include "libipv6addr.h" #include "libipv6calc.h" #include "librfc1884.h" #include "ipv6calctypes.h" /* * function decompress a given IPv6 address (reverse RFC 1884) * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error * * Based on code in from 'ircd' */ int compaddr_to_uncompaddr(const char *addrstring, char *resultstring, const size_t resultstring_length) { int retval = 1, cnt; char *cp, *op, *strp; char tempstring[NI_MAXHOST]; DEBUGPRINT_WA(DEBUG_librfc1884, "got input: %s", addrstring); snprintf(tempstring, sizeof(tempstring), "%s", addrstring); strp = strstr(tempstring, "::"); if (strp) { DEBUGPRINT_NA(DEBUG_librfc1884, "found '::' in IPv6 address"); /* check for additional "::" occurance - not allowed! */ if (strstr(strp+1, "::")) { snprintf(resultstring, resultstring_length, "%s", "More than 1 block of 2 colons in address is not allowed!"); retval = 1; return (retval); }; cnt = 0; cp = tempstring; op = resultstring; while (*cp != '\0') { if (*cp == ':') cnt += 1; if (*cp++ == '.') { cnt += 1; break; }; }; cp = tempstring; while (*cp != '\0') { *op++ = *cp++; if (*(cp-1) == ':' && *cp == ':') { DEBUGPRINT_WA(DEBUG_librfc1884, "cnt: %d", cnt); if ((cp-1) == tempstring) { DEBUGPRINT_WA(DEBUG_librfc1884, "fill one '0:' (%d)", cnt); op--; *op++ = '0'; *op++ = ':'; }; if (cnt < 8) { DEBUGPRINT_WA(DEBUG_librfc1884, "fill one '0:' (%d)", cnt); *op++ = '0'; } else if (cnt == 8) { DEBUGPRINT_WA(DEBUG_librfc1884, "replace ':' by '0' (%d)", cnt); op--; }; while (cnt++ < 7) { DEBUGPRINT_WA(DEBUG_librfc1884, "fill one ':0' (%d)", cnt); *op++ = ':'; *op++ = '0'; }; }; }; if (*(op-1)==':') *op++ = '0'; *op = '\0'; DEBUGPRINT_WA(DEBUG_librfc1884, "result: %s", resultstring); } else { snprintf(resultstring, resultstring_length, "%s", addrstring); DEBUGPRINT_NA(DEBUG_librfc1884, "address is not in compressed format"); }; retval = 0; return (retval); }; /* * function IPv6addrstruct to compressed format (RFC 1884) * * compress the biggest '0' block, leading has precedence * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length) { int retval = -1; uint32_t formatoptions = FORMATOPTION_printlowercase; /* old style compatibility */ retval = librfc1884_ipv6addrstruct_to_compaddr(ipv6addrp, resultstring, resultstring_length, formatoptions); return (retval); }; int librfc1884_ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { char tempstring[NI_MAXHOST], temp2string[NI_MAXHOST]; int retval = 1; int zstart = -1, zend = -1, tstart = -1, tend = -1, i, w_max = 7; unsigned int s; DEBUGPRINT_WA(DEBUG_librfc1884, "typeinfo of IPv6 address: %08x", (unsigned int) ipv6addrp->typeinfo); if ( (ipv6addrp->typeinfo & IPV6_ADDR_COMPATv4) != 0 ) { /* compatv4 address */ DEBUGPRINT_NA(DEBUG_librfc1884, "IPV6_ADDR_COMPATv4 type - fast conversion"); snprintf(tempstring, sizeof(tempstring), "::%u.%u.%u.%u", (unsigned int) ipv6addrp->in6_addr.s6_addr[12], (unsigned int) ipv6addrp->in6_addr.s6_addr[13], (unsigned int) ipv6addrp->in6_addr.s6_addr[14], (unsigned int) ipv6addrp->in6_addr.s6_addr[15]); retval = 0; } else if ( (ipv6addrp->typeinfo & IPV6_ADDR_MAPPED) != 0 ) { /* mapped address */ DEBUGPRINT_NA(DEBUG_librfc1884, "IPV6_ADDR_MAPPED type - fast conversion"); snprintf(tempstring, sizeof(tempstring), "::%x:%u.%u.%u.%u", (unsigned int) ipv6addr_getword(ipv6addrp, 5), (unsigned int) ipv6addrp->in6_addr.s6_addr[12], (unsigned int) ipv6addrp->in6_addr.s6_addr[13], (unsigned int) ipv6addrp->in6_addr.s6_addr[14], (unsigned int) ipv6addrp->in6_addr.s6_addr[15]); retval = 0; } else if ( (ipv6addr_getdword(ipv6addrp, 0) == 0) && (ipv6addr_getdword(ipv6addrp, 1) == 0) && (ipv6addr_getdword(ipv6addrp, 2) == 0) && (ipv6addr_getdword(ipv6addrp, 3) == 0) ) { /* unspecified address */ DEBUGPRINT_NA(DEBUG_librfc1884, "unspecified address - fast conversion"); snprintf(tempstring, sizeof(tempstring), "::"); retval = 0; } else if ( (ipv6addr_getdword(ipv6addrp, 0) == 0) && (ipv6addr_getdword(ipv6addrp, 1) == 0) && (ipv6addr_getdword(ipv6addrp, 2) == 0) && (ipv6addr_getdword(ipv6addrp, 3) == 1) ) { /* loopback address */ DEBUGPRINT_NA(DEBUG_librfc1884, "loopback - fast conversion"); snprintf(tempstring, sizeof(tempstring), "::1"); retval = 0; } else { /* normal address */ if ( ((ipv6addrp->typeinfo & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) && ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) == 0)) { w_max = 5; }; DEBUGPRINT_NA(DEBUG_librfc1884, "normal address, detect '0' blocks now"); for ( i = 0; i <= w_max; i++ ) { if ( ipv6addr_getword(ipv6addrp, (unsigned int) i) == 0 ) { /* found a '0' */ DEBUGPRINT_WA(DEBUG_librfc1884, "Found '0' in word '%d'", i); if ( tstart == -1 ) { /* possible starting '0' block */ DEBUGPRINT_WA(DEBUG_librfc1884, "Found a possible '0' starting block at '%d'", i); tstart = i; }; } else { /* end of a '0' block */ DEBUGPRINT_WA(DEBUG_librfc1884, "Found non '0' in word '%d'", i); if ( tstart != -1 ) { tend = i - 1; if ( ( tend - tstart ) >= 0 ) { /* ok, a block with 1 or more '0' */ DEBUGPRINT_WA(DEBUG_librfc1884, "Found a '0' block from '%d' to '%d' with length '%d'", tstart, tend, tend - tstart + 1); if ( zstart < 0 ) { /* no other block before, init */ zstart = tstart; zend = tend; DEBUGPRINT_WA(DEBUG_librfc1884, "First found '0' block from '%d' to '%d' with length '%d'", zstart, zend, zend - zstart + 1); } else if ( ( zend - zstart ) < ( tend - tstart ) ) { /* ok, bigger block found */ zstart = tstart; zend = tend; DEBUGPRINT_WA(DEBUG_librfc1884, "Found bigger '0' block from '%d' to '%d' with length '%d'", zstart, zend, zend - zstart + 1); } else { DEBUGPRINT_NA(DEBUG_librfc1884, "This '0' block is not bigger than the last one - skip"); }; }; tstart = -1; tend = -1; }; }; }; /* cleanup */ if ( tstart >= 0 ) { tend = w_max; /* trailing '0' block */ if ( ( tend - tstart ) > 0 ) { /* ok, a block with 2 or more '0' */ if ( zstart < 0 ) { /* no other block before, init */ zstart = tstart; zend = tend; } else if ( ( zend - zstart ) < ( tend - tstart ) ) { /* ok, bigger block found */ zstart = tstart; zend = tend; }; }; }; if ( zstart != -1 ) { DEBUGPRINT_WA(DEBUG_librfc1884, "biggest '0' block is from word '%d' to '%d'", zstart, zend); } else { DEBUGPRINT_NA(DEBUG_librfc1884, "no '0' block found"); }; /* create string */ tempstring[0] = '\0'; for ( i = 0; i <= w_max; i++ ) { if ( i == zstart ) { DEBUGPRINT_WA(DEBUG_librfc1884, "start of '0' at '%d'", i); snprintf(temp2string, sizeof(temp2string), "%s:", tempstring); } else if ( i == 0 ) { DEBUGPRINT_WA(DEBUG_librfc1884, "normal start value at '%d' (%x)", i, (unsigned int) ipv6addr_getword(ipv6addrp, (unsigned int) i)); snprintf(temp2string, sizeof(temp2string), "%x", (unsigned int) ipv6addr_getword(ipv6addrp, (unsigned int) i)); } else if ( ( i > zend ) || ( i < zstart ) ) { snprintf(temp2string, sizeof(temp2string), "%s:%x", tempstring, (unsigned int) ipv6addr_getword(ipv6addrp, (unsigned int) i)); } else if ( ( i == 7 ) && ( zend == i )) { snprintf(temp2string, sizeof(temp2string), "%s:", tempstring); }; snprintf(tempstring, sizeof(tempstring), "%s", temp2string); }; if ( ((ipv6addrp->typeinfo & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) && ((ipv6addrp->typeinfo & IPV6_ADDR_ANONYMIZED_IID) == 0)) { /* append IPv4 address */ snprintf(temp2string, sizeof(temp2string), "%s:%u.%u.%u.%u", \ tempstring, \ (unsigned int) ipv6addrp->in6_addr.s6_addr[12], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[13], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[14], \ (unsigned int) ipv6addrp->in6_addr.s6_addr[15] \ ); snprintf(tempstring, sizeof(tempstring), "%s", temp2string); }; DEBUGPRINT_WA(DEBUG_librfc1884, "new method: '%s'", tempstring); retval = 0; }; if ( ( retval == 0 ) && ( ipv6addrp->flag_prefixuse == 1 ) && ((formatoptions & FORMATOPTION_literal) == 0) ) { snprintf(resultstring, resultstring_length, "%s/%u", tempstring, (unsigned int) ipv6addrp->prefixlength); } else { if ((formatoptions & FORMATOPTION_literal) != 0) { /* replace : by - */ for (s = 0; s < strlen(tempstring); s++) { if (tempstring[s] == ':') { tempstring[s] = '-'; }; }; if (ipv6addrp->flag_scopeid) { snprintf(resultstring, resultstring_length, "%ss%s.ipv6-literal.net", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, resultstring_length, "%s.ipv6-literal.net", tempstring); }; } else { if (ipv6addrp->flag_scopeid) { snprintf(resultstring, resultstring_length, "%s%%%s", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, resultstring_length, "%s", tempstring); }; }; }; if ( (formatoptions & FORMATOPTION_printlowercase) != 0 ) { /* nothing to do */ } else if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { snprintf(temp2string, sizeof(temp2string), "IPV6=%s", resultstring); snprintf(resultstring, resultstring_length, "%s", temp2string); }; DEBUGPRINT_WA(DEBUG_librfc1884, "Result: '%s'", resultstring); return (retval); }; ipv6calc-1.0.0/lib/librfc1884.h000066400000000000000000000013231312366535500157340ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc1884.h * Version : $Id: baed1a3e9fa2c3c484df4ede0635f1ca0d012b97 $ * Copyright : 2001-2014 by Peter Bieringer * * Information: * Header file for librfc1884.c */ #include "libipv6addr.h" /* prototypes */ extern int compaddr_to_uncompaddr(const char *addrstring, char *resultstring, const size_t resultstring_length); extern int librfc1884_ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addr, char *resultstring, const size_t resultstring_length); /* going obsolete */ ipv6calc-1.0.0/lib/librfc1886.c000066400000000000000000000256371312366535500157470ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc1886.c * Version : $Id: 74d9971e9ce84aa03a5e4522ac197b6077a8dbaf $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * RFC 1886 conform reverse nibble format string * * Function to format a given address to reverse nibble-by-nibble ip6.int|arpa format * * Intention from the Perl program "ip6_int" written by Keith Owens * some hints taken from ifconfig.c (net-tools) * * Credits to: * Keith Owens * net-tools authors */ #include #include #include #include #include "libipv6calcdebug.h" #include "ipv6calctypes.h" #include "libipv6addr.h" #include "libipv6calc.h" #include "librfc1886.h" /* * converts IPv6addr_structure to a reverse nibble format string * * in : *ipv6addrp = IPv6 address structure * out: *resultstring = result * ret: ==0: ok, !=0: error */ int librfc1886_addr_to_nibblestring(ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions, const char *domain) { int retval = 1; unsigned int nibble; int bit_start, bit_end, nbit; char tempstring[NI_MAXHOST]; unsigned int nnibble, noctet; DEBUGPRINT_WA(DEBUG_librfc1886, "flag_prefixuse %d", (*ipv6addrp).flag_prefixuse); /* 20100909: take care of prefix length before printing the nibbles, but break old behavior */ /* 20140331: mask prefix only in case of no printsuffix,printstart,printend */ if ((*ipv6addrp).flag_prefixuse != 0 && ((formatoptions & (FORMATOPTION_printsuffix | FORMATOPTION_printstart | FORMATOPTION_printend)) == 0)) { ipv6addrstruct_maskprefix(ipv6addrp); }; if ( ((formatoptions & (FORMATOPTION_printprefix | FORMATOPTION_printsuffix | FORMATOPTION_printstart | FORMATOPTION_printend)) == 0 ) && ((*ipv6addrp).flag_prefixuse != 0) ) { /* simulate old behavior */ bit_start = 1; bit_end = (int) (*ipv6addrp).prefixlength; DEBUGPRINT_NA(DEBUG_librfc1886, "simulate old behavior"); } else if ( (*ipv6addrp).flag_startend_use != 0 ) { /* check start and end */ if ( (((*ipv6addrp).bit_start - 1) & 0x03) != 0 ) { snprintf(resultstring, resultstring_length, "Start bit number '%u' is not supported because of non-unique representation (value-1 must be dividable by 4)", (unsigned int) (*ipv6addrp).bit_start); retval = 1; return (retval); }; if ( ((*ipv6addrp).bit_end & 0x03) != 0 ) { snprintf(resultstring, resultstring_length, "End bit number '%u' is not supported because of non-unique representation (value must be dividable by 4)", (unsigned int) (*ipv6addrp).bit_end); retval = 1; return (retval); }; bit_start = (int) (*ipv6addrp).bit_start; bit_end = (int) (*ipv6addrp).bit_end; } else { bit_start = 1; bit_end = 128; }; DEBUGPRINT_WA(DEBUG_librfc1886, "start bit %d end bit %d", bit_start, bit_end); /* print out nibble format */ /* 127 is lowest bit, 0 is highest bit */ resultstring[0] = '\0'; for (nbit = bit_end - 1; nbit >= bit_start - 1; nbit = nbit - 4) { /* calculate octet (8 bit) */ noctet = ( ((unsigned int) nbit) & 0x78) >> 3; /* calculate nibble */ nnibble = ( ((unsigned int) nbit) & 0x04) >> 2; /* extract nibble */ nibble = ( (*ipv6addrp).in6_addr.s6_addr[noctet] & ( 0xf << (unsigned int) (4 * (1 - nnibble)) ) ) >> (unsigned int) ( 4 * (1 - nnibble)); DEBUGPRINT_WA(DEBUG_librfc1886, "bit: %d = noctet: %u, nnibble: %u, octet: %02x, value: %x", nbit, noctet, nnibble, (unsigned int) (*ipv6addrp).in6_addr.s6_addr[noctet], nibble); snprintf(tempstring, sizeof(tempstring), "%s%x", resultstring, nibble); if ((nbit < bit_start) && (bit_start != 1)) { /* don't print trailing "." on middle part end */ snprintf(resultstring, resultstring_length, "%s", tempstring); } else { snprintf(resultstring, resultstring_length, "%s.", tempstring); }; }; if (bit_start == 1) { snprintf(tempstring, sizeof(tempstring), "%s%s", resultstring, domain); }; snprintf(resultstring, resultstring_length, "%s", tempstring); if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; if ( (formatoptions & FORMATOPTION_printmirrored) != 0 ) { string_to_reverse_dotted(resultstring, resultstring_length); }; DEBUGPRINT_WA(DEBUG_librfc1886, "Print out: %s", resultstring); retval = 0; return (retval); }; /* * function a reverse nibble format string into IPv6addr_structure * * in : inputstring * mod: *ipv6addrp = IPv6 address structure * ret: ==0: ok, !=0: error */ int librfc1886_nibblestring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length) { int retval = 1; char tempstring[NI_MAXHOST], *token, *cptr, **ptrptr; int flag_tld = 0, flag_nld = 0, tokencounter = 0; unsigned int noctet, nibblecounter = 0; int xdigit; if ((strlen(inputstring) < 4) || (strlen(inputstring) > 73)) { /* min: .int */ /* max: f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.ip6.arpa. */ snprintf(resultstring, resultstring_length, "Error in given nibble string, has not 4 to 73 chars!"); return (1); }; ptrptr = &cptr; /* clear output structure */ ipv6addr_clearall(ipv6addrp); /* reverse copy of string */ snprintf(tempstring, sizeof(tempstring), "%s", inputstring); string_to_lowcase(tempstring); /* check string */ retval = librfc1886_formatcheck(tempstring, resultstring, resultstring_length); if (retval != 0) { return (1); }; string_to_reverse(tempstring); DEBUGPRINT_WA(DEBUG_librfc1886, "reverse copied string: %s", tempstring); /* run through nibbles */ token = strtok_r(tempstring, ".", ptrptr); while(token != NULL) { if (strcmp(token, "apra") == 0) { if (flag_tld == 0) { flag_tld = 1; goto NEXT_token_nibblestring_to_ipv6addrstruct; } else { snprintf(resultstring, resultstring_length, "Top level domain 'arpa' is in wrong place"); return (1); }; }; if (strcmp(token, "tni") == 0) { if (flag_tld == 0) { flag_tld = 1; goto NEXT_token_nibblestring_to_ipv6addrstruct; } else { snprintf(resultstring, resultstring_length, "Top level domain 'int' is in wrong place"); return (1); }; }; if (tokencounter == 1 && flag_tld == 1 && flag_nld == 0) { if (strcmp(token, "6pi") == 0) { flag_nld = 1; goto NEXT_token_nibblestring_to_ipv6addrstruct; } else { snprintf(resultstring, resultstring_length, "Next level domain 'ip6' is in wrong place or missing"); return (1); }; }; /* now proceed nibbles */ if (strlen(token) > 1) { string_to_reverse(token); snprintf(resultstring, resultstring_length, "Nibble '%s' on dot position %d (from right side) is longer than one char", token, tokencounter + 1); return (1); }; if (! isxdigit((int) token[0])) { snprintf(resultstring, resultstring_length, "Nibble '%s' on dot position %d (from right side) is not a valid hexdigit", token, tokencounter + 1); return (1); }; retval = sscanf(token, "%x", &xdigit); if (retval != 1) { snprintf(resultstring, resultstring_length, "Nibble '%s' on dot position %d (from right side) cannot be parsed", token, tokencounter + 1); return (1); }; if ( xdigit < 0 || xdigit > 0xf ) { snprintf(resultstring, resultstring_length, "Nibble '%s' on dot position %d (from right side) is out of range", token, tokencounter + 1); return (1); }; noctet = nibblecounter >> 1; /* divided by 2 */ if (noctet > 15) { snprintf(resultstring, resultstring_length, "Too many nibbles"); return (1); }; if ( (nibblecounter & 0x01) != 0 ) { /* most significant bits */ (*ipv6addrp).in6_addr.s6_addr[noctet] = ((*ipv6addrp).in6_addr.s6_addr[noctet] & 0xf0) | xdigit; } else { /* least significant bits */ (*ipv6addrp).in6_addr.s6_addr[noctet] = ((*ipv6addrp).in6_addr.s6_addr[noctet] & 0x0f) | ((uint8_t) xdigit << 4); }; nibblecounter++; NEXT_token_nibblestring_to_ipv6addrstruct: token = strtok_r(NULL, ".", ptrptr); tokencounter++; }; ipv6addrp->flag_valid = 1; ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) nibblecounter << 2; retval = 0; return (retval); }; /* * checks for proper format of a nibble string * * in : string * ret: ==0: ok, !=0: error */ int librfc1886_formatcheck(const char *string, char *infostring, const size_t infostring_length) { int nibblecounter = 0, flag_tld = 0, flag_nld = 0, tokencounter = 0; char tempstring[NI_MAXHOST], *token, *cptr, **ptrptr; ptrptr = &cptr; infostring[0] = '\0'; /* clear string */ if (strlen(string) >= sizeof(tempstring)) { fprintf(stderr, "Input too long: %s\n", string); return (1); }; snprintf(tempstring, sizeof(tempstring), "%s", string); DEBUGPRINT_WA(DEBUG_librfc1886, "check %s", tempstring); string_to_reverse(tempstring); /* run through nibbles */ token = strtok_r(tempstring, ".", ptrptr); while(token != NULL) { DEBUGPRINT_WA(DEBUG_librfc1886, "check token: %s (tld: %d, nld: %d, tokencounter: %d)", token, flag_tld, flag_nld, tokencounter + 1); if (strcmp(token, "apra") == 0) { /* arpa (reverse) */ DEBUGPRINT_NA(DEBUG_librfc1886, "found: arpa"); if (flag_tld == 0 && tokencounter == 0) { DEBUGPRINT_NA(DEBUG_librfc1886, "found TLD: arpa"); flag_tld = 1; goto NEXT_librfc1886_formatcheck; } else { snprintf(infostring, infostring_length, "Top level domain 'arpa' is in wrong place"); return (1); }; }; if (strcmp(token, "tni") == 0) { /* int (reverse) */ DEBUGPRINT_NA(DEBUG_librfc1886, "found: int"); if (flag_tld == 0 && tokencounter == 0) { DEBUGPRINT_NA(DEBUG_librfc1886, "found TLD: int"); flag_tld = 1; goto NEXT_librfc1886_formatcheck; } else { snprintf(infostring, infostring_length, "Top level domain 'int' is in wrong place"); return (1); }; }; if (strcmp(token, "6pi") == 0) { /* ip6 (reverse) */ DEBUGPRINT_NA(DEBUG_librfc1886, "found: ip6"); if (tokencounter == 1 && flag_tld == 1 && flag_nld == 0) { DEBUGPRINT_NA(DEBUG_librfc1886, "found NLD: ip6"); flag_nld = 1; goto NEXT_librfc1886_formatcheck; } else { snprintf(infostring, infostring_length, "Next level domain 'ip6' is in wrong place or missing"); return (1); }; }; /* now proceed nibbles */ if (strlen(token) > 1) { string_to_reverse(token); snprintf(infostring, infostring_length, "Nibble '%s' on dot position %d (from right side) is longer than one char", token, tokencounter + 1); return (1); }; if (! isxdigit((int) token[0])) { snprintf(infostring, infostring_length, "Nibble '%s' on dot position %d (from right side) is not a valid hexdigit", token, tokencounter + 1); return (1); }; nibblecounter++; if (nibblecounter > 32) { snprintf(infostring, infostring_length, "Too many nibbles (more than 32)"); return (1); }; NEXT_librfc1886_formatcheck: token = strtok_r(NULL, ".", ptrptr); tokencounter++; }; DEBUGPRINT_WA(DEBUG_librfc1886, "check %s is ok", string); return (0); }; ipv6calc-1.0.0/lib/librfc1886.h000066400000000000000000000013401312366535500157350ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc1886.h * Version : $Id: 23af2e1ae2bdea37487a3986b65abebdc60b067a $ * Copyright : 2001-2014 by Peter Bieringer * * Information: * Header file for librfc1886.c */ #include "libipv6addr.h" /* prototypes */ extern int librfc1886_addr_to_nibblestring(ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions, const char *domain); extern int librfc1886_nibblestring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length); extern int librfc1886_formatcheck(const char *string, char *infostring, const size_t infostring_length); ipv6calc-1.0.0/lib/librfc1924.c000066400000000000000000000120421312366535500157220ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc1924.c * Version : $Id: 288cc1921031e011601609d286d5a7402acafbed $ * Copyright : 2001-2017 by Peter Bieringer * and 2006 by Niko Tyni * * Information: * Function library for conversions defined in RFC 1924 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 dated June, 1991. */ #include #include #include #include "libipv6calc.h" #include "libipv6addr.h" #include "librfc1924.h" /* * Base 85 (RFC 1924) encodings of IPv6 addresses */ static char librfc1924_charset[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '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', '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', '!', '#', '$', '%', '&', '(', ')', '*', '+', '-', ';', '<', '=', '>', '?', '@', '^', '_', '`', '{', '|', '}', '~', '\0' }; /* * to minimize work, we convert between base 85 and * base 65536 (2**16), as that's the biggest power of 2 * we can use and still stay within word size (32 bits) * * the conversions are done with the elemental 'long division' * algorithm, just with digits in strange bases */ void pk85(uint16_t *words, char *ret) { uint16_t buf[8]; /* working space */ uint32_t accu; int i,j; /* initialize the buffer */ for (i = 0; i < 8; i++) { buf[i] = words[i]; } /* do the division digit by digit */ for (i = 0; i < 20; i++) { accu = 0; for (j = 0; j < 8; j++) { accu = (accu << 16) + buf[j]; if (accu >= 85) { buf[j] = accu / 85; /* quotient */ accu = accu % 85; /* remainder */ } else { buf[j] = 0; } } /* reverse, as the least significant digit comes out first */ ret[19 - i] = librfc1924_charset[accu]; } ret[20] = '\0'; return; } void unpk85(char *b, uint16_t *ret) { uint32_t buf[20]; /* working space */ uint32_t accu; int i, j; /* initialize the buffer */ for (i = 0; i < 20; i++) { /* find the offset in the character table */ buf[i] = strchr(librfc1924_charset, b[i]) - librfc1924_charset; } /* do the division digit by digit */ for (i = 0; i < 8; i++) { accu = 0; for (j = 0; j < 20; j++) { accu = accu * 85 + buf[j]; if ((accu & 0xffff0000) != 0) { /* >= 2**16 */ buf[j] = accu >> 16; /* quotient */ accu = accu & 0xffff; /* remainder */ } else { buf[j] = 0; } } /* reverse, as the least significant digit comes out first */ ret[7 - i] = accu; } return; } /* * IPv6addr_structure to base85 format * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int ipv6addrstruct_to_base85(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length) { int retval = 1, i; uint16_t words[8]; char ret[21]; for (i=0; i < 8; i++) { words[i] = ipv6addr_getword(ipv6addrp, (unsigned int) i) ; }; /* convert */ pk85(words, ret); snprintf(resultstring, resultstring_length, "%s", ret); retval = 0; return (retval); }; /* function base85 format to IPv6addr_structure * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int base85_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, i; char tempstring[NI_MAXHOST]; uint16_t result[8]; retval = librfc1924_formatcheck(addrstring, resultstring, resultstring_length); if (retval != 0) { /* format check fails */ return (1); }; if (strlen(addrstring) >= sizeof(tempstring)) { fprintf(stderr, "Input too long: %s\n", addrstring); return (1); }; snprintf(tempstring, sizeof(tempstring), "%s", addrstring); unpk85(tempstring, result); /* Clear IPv6 address structure */ ipv6addr_clear(ipv6addrp); /* fill IPv6 address structure */ for (i = 0; i < 8; i++) { ipv6addr_setword(ipv6addrp, (unsigned int) i, (unsigned int) result[i]); }; ipv6addr_settype(ipv6addrp, 1); /* Set typeinfo */ ipv6addrp->flag_valid = 1; retval = 0; return (retval); }; /* * checks for proper format of a base85 string * * in : string * ret: ==0: ok, !=0: error */ int librfc1924_formatcheck(const char *string, char *infostring, const size_t infostring_length) { size_t length, cnt; /* clear result string */ infostring[0] = '\0'; length = strlen(string); /* check length */ if ( length != 20 ) { snprintf(infostring, infostring_length, "Error in given base85 formatted address, has not 20 chars!"); return (1); }; /* check for base85 chars only content */ cnt = strspn(string, librfc1924_charset); if ( cnt != 20 ) { snprintf(infostring, infostring_length, "Error in given base85 formatted address, illegal char on position %d (%c)!", (int) cnt + 1, string[cnt]); return (1); }; return (0); }; ipv6calc-1.0.0/lib/librfc1924.h000066400000000000000000000012331312366535500157270ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc1924.h * Version : $Id: e960f94c695627dc8f7448cdc1d32f6d99f4ada8 $ * Copyright : 2001-2014 by Peter Bieringer * * Information: * Header file for librfc1924.c */ #include "libipv6addr.h" /* prototypes */ extern int ipv6addrstruct_to_base85(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length); extern int base85_to_ipv6addrstruct(const char *addrstring, char *resultstring, const size_t resultstring_length, ipv6calc_ipv6addr *ipv6addrp); extern int librfc1924_formatcheck(const char *string, char *infostring, const size_t infostring_length); ipv6calc-1.0.0/lib/librfc2874.c000066400000000000000000000255411312366535500157370ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc2874.c * Version : $Id: 2d9d8ae1457e4be115ebfbc87cc1d6ca79f2abf5 $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * RFC 2874 conform addresses (A6/DNAME) bitstring labels */ #include #include #include #include #include "libipv6addr.h" #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "librfc2874.h" #include "ipv6calctypes.h" /* * converts IPv6addr_structure to a bitstring label * * in : *ipv6addrp = IPv6 address structure * out: *resultstring = result * ret: ==0: ok, !=0: error */ int librfc2874_addr_to_bitstring(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions) { int retval = 1; unsigned int nibble; unsigned int noctet, nbit, nnibble, prefixlength, bit_start, bit_end; char tempstring[NI_MAXHOST]; if ( (*ipv6addrp).flag_startend_use != 0 ) { /* check start and end */ if ( (((*ipv6addrp).bit_start - 1) & 0x03) != 0 ) { snprintf(resultstring, resultstring_length, "Start bit number '%u' not dividable by 4 aren't supported because of non unique representation", (unsigned int) (*ipv6addrp).bit_start); retval = 1; return (retval); }; if ( ((*ipv6addrp).bit_end & 0x03 ) != 0 ) { snprintf(resultstring, resultstring_length, "End bit number '%u' not dividable by 4 aren't supported because of non unique representation", (unsigned int) (*ipv6addrp).bit_end); retval = 1; return (retval); }; bit_start = (unsigned int) (*ipv6addrp).bit_start; bit_end = (unsigned int) (*ipv6addrp).bit_end; } else { bit_start = 1; bit_end = 128; }; DEBUGPRINT_WA(DEBUG_librfc2874, "print from start bit to end bit: %u - %u", bit_start, bit_end); /* print out hex string format */ /* 127 is lowest bit, 0 is highest bit */ resultstring[0] = '\0'; for (nbit = bit_start - 1; nbit <= bit_end - 1; nbit = nbit + 4) { /* calculate octet (8 bit) */ noctet = (nbit & 0x78) >> 3; /* calculate nibble */ nnibble = (nbit & 0x04) >> 2; /* extract nibble */ nibble = ( (*ipv6addrp).in6_addr.s6_addr[noctet] & ( 0xf << (unsigned int) (4 * (1 - nnibble)) ) ) >> (unsigned int) ( 4 * (1 - nnibble)); DEBUGPRINT_WA(DEBUG_librfc2874, "bit: %u= noctet: %u, nnibble: %u, octet: %02x, value: %x", nbit, noctet, nnibble, (unsigned int) (*ipv6addrp).in6_addr.s6_addr[noctet], nibble); snprintf(tempstring, sizeof(tempstring), "%s%x", resultstring, nibble); snprintf(resultstring, resultstring_length, "%s", tempstring); DEBUGPRINT_WA(DEBUG_librfc2874, "Result after step %u (temp): %s", nbit, tempstring); DEBUGPRINT_WA(DEBUG_librfc2874, "Result after step %u (resu): %s", nbit, resultstring); }; /* add begin and end of label */ if ( (*ipv6addrp).flag_startend_use != 0 ) { prefixlength = bit_end - bit_start + 1; } else { prefixlength = 128; }; DEBUGPRINT_WA(DEBUG_librfc2874, "Result after expanding: %s", tempstring); if ( bit_start != 1 ) { snprintf(tempstring, sizeof(tempstring), "%s/%u]", resultstring, prefixlength); } else { snprintf(tempstring, sizeof(tempstring), "%s/%u].ip6.arpa.", resultstring, prefixlength); }; if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(tempstring); }; snprintf(resultstring, resultstring_length, "\\[x%s", tempstring); DEBUGPRINT_WA(DEBUG_librfc2874, "Final result: %s", resultstring); retval = 0; return (retval); }; /* * converts a bitstring label into IPv6addr_structure * * in : inputstring * mod: *ipv6addrp = IPv6 address structure * ret: ==0: ok, !=0: error */ int librfc2874_bitstring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length) { int retval = 1; char tempstring[NI_MAXHOST], tempstring2[NI_MAXHOST]; unsigned int nibblecounter = 0; unsigned int noctet, startprefixlength, endprefixlength, index = 0, length, prefixlength; int xdigit; /* clear output structure */ ipv6addr_clearall(ipv6addrp); /* reverse copy of string */ snprintf(tempstring, sizeof(tempstring), "%s", inputstring); string_to_lowcase(tempstring); DEBUGPRINT_WA(DEBUG_librfc2874, "get string: %s", tempstring); length = (unsigned int) strlen(tempstring); /* check content */ retval = librfc2874_formatcheck(tempstring, resultstring, resultstring_length); if (retval != 0) { return (1); } DEBUGPRINT_WA(DEBUG_librfc2874, "format is ok: %s", tempstring); index = 3; /* start value */ while(isxdigit((int) tempstring[index])) { snprintf(tempstring2, sizeof(tempstring2), "%c", tempstring[index]); DEBUGPRINT_WA(DEBUG_librfc2874, "parse nibble: %s", tempstring2); /* now proceed nibbles */ retval = sscanf(tempstring2, "%x", &xdigit); if (retval != 1) { snprintf(resultstring, resultstring_length, "Error in given bitstring label, nibble '%s' at position %u cannot be parsed", tempstring2, index + 1); return (1); }; if (xdigit > 0xf) { snprintf(resultstring, resultstring_length, "Error in given bitstring label, nibble '%s' at dot position %u is out of range", tempstring2, index + 1); return (1); }; noctet = nibblecounter >> 1; /* divided by 2 */ if (noctet > 15) { snprintf(resultstring, resultstring_length, "Error in given bitstring label, too many nibbles"); return (1); }; if ( (nibblecounter & 0x01) != 0 ) { /* most significant bits */ (*ipv6addrp).in6_addr.s6_addr[noctet] = ((*ipv6addrp).in6_addr.s6_addr[noctet] & 0xf0) | xdigit; } else { /* least significant bits */ (*ipv6addrp).in6_addr.s6_addr[noctet] = ((*ipv6addrp).in6_addr.s6_addr[noctet] & 0x0f) | ((uint8_t) xdigit << 4); }; nibblecounter++; index++; if (index > length) { break; }; }; if (index > length) { snprintf(resultstring, resultstring_length, "Error in given bitstring label, unexpected end of string"); return (1); }; if (tempstring[index] == ']') { /* bitstring label closed */ ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) nibblecounter << 2; DEBUGPRINT_WA(DEBUG_librfc2874, "implicit prefix length: %d", ipv6addrp->prefixlength); goto END_bitstring_to_ipv6addrstruct; }; index++; if (index > length) { snprintf(resultstring, resultstring_length, "Error in given bitstring label, unexpected end of string"); return (1); }; /* proceed prefix length */ if (tempstring[index] == '/') { snprintf(resultstring, resultstring_length, "Error in given bitstring label, char '%c' not expected on position %u", tempstring[index], index + 1); return (1); }; index++; if (index > length) { snprintf(resultstring, resultstring_length, "Error in given bitstring address, unexpected end of string"); return (1); }; startprefixlength = index; endprefixlength = 0; while(isdigit((int) tempstring[index])) { index++; endprefixlength = index; if (index > length) { break; }; }; if (tempstring[index] == ']') { /* bitstring label closed */ if (endprefixlength == 0) { snprintf(resultstring, resultstring_length, "Invalid prefix length"); return (1); }; DEBUGPRINT_WA(DEBUG_librfc2874, "prefix length start=%d end=%d", startprefixlength, endprefixlength); snprintf(tempstring2, endprefixlength - startprefixlength + 2, "%s", tempstring + startprefixlength - 1); DEBUGPRINT_WA(DEBUG_librfc2874, "parse prefix length: %s", tempstring2); /* now proceed nibbles */ retval = sscanf(tempstring2, "%u", &prefixlength); if ( /*prefixlength < 0 || */ prefixlength > 128) { snprintf(resultstring, resultstring_length, "Error in given bitstring label, given prefix length '%u' is out of range", prefixlength); return (1); }; ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) prefixlength; DEBUGPRINT_WA(DEBUG_librfc2874, "explicit prefix length: %d", ipv6addrp->prefixlength); goto END_bitstring_to_ipv6addrstruct; }; snprintf(resultstring, resultstring_length, "Error in given bitstring label, char '%c' not expected on position %u", tempstring[index], index + 1); return (1); END_bitstring_to_ipv6addrstruct: ipv6addrp->flag_valid = 1; retval = 0; return (retval); }; /* * checks for proper format of a bitstring label * * in : string * ret: ==0: ok, !=0: error */ int librfc2874_formatcheck(const char *string, char *infostring, const size_t infostring_length) { unsigned int length, index = 0; unsigned int nibblecounter = 0, digitcounter = 0; infostring[0] = '\0'; /* clear string */ length = (unsigned int) strlen(string); /* check length */ if (length < 5) { snprintf(infostring, infostring_length, "Error in given bitstring label, has less than 5 chars!"); return (1); }; /* check start */ if (string[index] != '\\') { snprintf(infostring, infostring_length, "Error in given bitstring label, char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; if (string[index] != '[') { snprintf(infostring, infostring_length, "Error in given bitstring label, char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; if ( (char) tolower(string[index]) != 'x') { snprintf(infostring, infostring_length, "Error in given bitstring label, char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; /* check nibble string */ while(isxdigit((int) string[index])) { nibblecounter++; if (nibblecounter > 32) { snprintf(infostring, infostring_length, "Error in given bitstring label, more than 32 nibbles on position %u", index + 1); return (1); }; index++; if (index > length) { break; }; }; if (index >= length) { snprintf(infostring, infostring_length, "Error in given bitstring label, unexpected end of string (missing '/' or ']')"); return (1); }; if (string[index] == ']') { /* bitstring label closed */ return (0); }; /* proceed prefix length */ if (string[index] != '/') { snprintf(infostring, infostring_length, "Error in given bitstring label, char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; if (index >= length) { snprintf(infostring, infostring_length, "Error in given bitstring label, unexpected end of string (missing prefix length)"); return (1); }; /* check digit string */ while(isdigit((int) string[index])) { digitcounter++; if (digitcounter > 3) { snprintf(infostring, infostring_length, "Error in given bitstring label, more than 3 digits on position %u", index + 1); return (1); }; index++; if (index > length) { break; }; }; if (index >= length) { snprintf(infostring, infostring_length, "Error in given bitstring label, unexpected end of string (missing ']')"); return (1); }; if (string[index] == ']') { /* bitstring label closed */ return (0); }; snprintf(infostring, infostring_length, "Error in given bitstring label, char '%c' not expected on position %u", string[index], index + 1); return (1); }; ipv6calc-1.0.0/lib/librfc2874.h000066400000000000000000000013551312366535500157410ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc2874.h * Version : $Id: 1dd5589528908d8cf8fcdf1693bc25b5009f890e $ * Copyright : 2001-2014 by Peter Bieringer * * Information: * Header file for librfc2874.c */ #include "ipv6calc_inttypes.h" #include "libipv6addr.h" /* prototypes */ extern int librfc2874_addr_to_bitstring(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length, const uint32_t formatoptions); extern int librfc2874_bitstring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const size_t resultstring_length); extern int librfc2874_formatcheck(const char *string, char *infostring, const size_t infostring_length); ipv6calc-1.0.0/lib/librfc3041.c000066400000000000000000000054371312366535500157240ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc3041.c * Version : $Id: beb47f833eb9768701c3d37420df2a7c2edd18e4 $ * Copyright : 2001-2014 by Peter Bieringer * * Information: * Function library for host identifier privacy extension defined in RFC 3041 / RFC 4941 * * Credits to YOSHIFUJI Hideaki * for hints and sample code in Perl: * % perl -e '@a=(0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef); foreach (@a){ print pack("C",$_); } foreach (@a){ print pack("C",$_); }' | md5sum * 4662bdea8654776d486072ff7074945e */ #include #include #include #include "config.h" #ifdef ENABLE_BUNDLED_MD5 #include "../md5/md5.h" #else #include #endif #include "libipv6calc.h" #include "libipv6calcdebug.h" #include "librfc3041.h" #include "libipv6addr.h" /* function * * in : *addrstring = IPv6 address * out: *resultstring = result * ret: ==0: ok, !=0: error */ int librfc3041_calc(ipv6calc_ipv6addr *identifier, ipv6calc_ipv6addr *token, ipv6calc_ipv6addr *newidentifier, ipv6calc_ipv6addr *newtoken) { int retval = 1, i; char tempstring[NI_MAXHOST], tempstring2[NI_MAXHOST]; unsigned char digest[MD5_DIGEST_LENGTH]; #ifdef ENABLE_BUNDLED_MD5 struct md5_ctx md5hash; #else MD5_CTX md5hash; #endif DEBUGPRINT_WA(DEBUG_librfc3041, "Got identifier '%08x-%08x' and token '%08x-%08x'", (unsigned int) ipv6addr_getdword(identifier, 2), (unsigned int) ipv6addr_getdword(identifier, 3), (unsigned int) ipv6addr_getdword(token, 2), (unsigned int) ipv6addr_getdword(token, 3)); #ifdef ENABLE_BUNDLED_MD5 md5_init_ctx(&md5hash); #else MD5_Init(&md5hash); #endif #ifdef ENABLE_BUNDLED_MD5 md5_process_bytes(&identifier->in6_addr.s6_addr[8], 8, &md5hash); md5_process_bytes(&token->in6_addr.s6_addr[8], 8, &md5hash); #else MD5_Update(&md5hash, &identifier->in6_addr.s6_addr[8], 8); MD5_Update(&md5hash, &token->in6_addr.s6_addr[8], 8); #endif #ifdef ENABLE_BUNDLED_MD5 md5_finish_ctx(&md5hash, digest); #else MD5_Final(digest, &md5hash); #endif tempstring[0] = '\0'; for (i = 0; i < MD5_DIGEST_LENGTH; i++) { snprintf(tempstring2, sizeof(tempstring2), "%s%02x", tempstring, (int) digest[i]); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; DEBUGPRINT_WA(DEBUG_librfc3041, "MD5 hash '%s'", tempstring); ipv6addr_clear(newidentifier); ipv6addr_clear(newtoken); for (i = 0; i < 8; i++) { /* copy into */ newidentifier->in6_addr.s6_addr[i + 8] = (uint8_t) digest[i]; newtoken->in6_addr.s6_addr[i + 8] = (uint8_t) digest[i + 8]; }; newidentifier->flag_valid = 1; newidentifier->prefixlength = 64; newtoken->flag_valid = 1; /* clear universal/local bit */ ipv6addr_setoctet(newidentifier, 8, ipv6addr_getoctet(newidentifier, 8) & 0xfd); retval = 0; return (retval); }; ipv6calc-1.0.0/lib/librfc3041.h000066400000000000000000000011221312366535500157140ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc3041.h * Version : $Id: 8f101eebd13c61d4b33219211aa61dfb83cf89d0 $ * Copyright : 2001-2012 by Peter Bieringer * * Information: * Header file for librfc3041.c (RFC 3041 / RFC 4941) */ #include "libipv6addr.h" /* defines */ #ifndef MD5_DIGEST_LENGTH #define MD5_DIGEST_LENGTH 16 #endif #ifndef _librfc3041_h #define _librfc3041_h #endif /* prototypes */ extern int librfc3041_calc(ipv6calc_ipv6addr *identifier, ipv6calc_ipv6addr *token, ipv6calc_ipv6addr *newidentifier, ipv6calc_ipv6addr *newtoken); ipv6calc-1.0.0/lib/librfc3056.c000066400000000000000000000040641312366535500157250ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc3056.c * Version : $Id: 0305414a37fa1474ba5faf124eb4cb36349d83c9 $ * Copyright : 2001-2017 by Peter Bieringer * * Information: * Function library for conversions defined in RFC 3056 */ #include #include #include #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "librfc3056.h" /* * function converts an IPv4 address to an IPv6to4 one (RFC 3056) * * in : *ipv4addrp = IPv4 address * out: *ipv6addrp = IPv6 address * ret: ==0: ok, !=0: error */ int librfc3056_ipv4addr_to_ipv6to4addr(ipv6calc_ipv6addr *ipv6addrp, const ipv6calc_ipv4addr *ipv4addrp) { int retval = 1; unsigned int i; /* clear IPv6 structure */ ipv6addr_clear(ipv6addrp); /* set prefix */ ipv6addr_setword(ipv6addrp, 0, 0x2002); /* set IPv4 address */ for (i = 0; i <=3; i++) { ipv6addr_setoctet(ipv6addrp, i + 2, (unsigned int) ipv4addr_getoctet(ipv4addrp, i)); }; ipv6addrp->prefixlength = 48; ipv6addrp->flag_prefixuse = 0; ipv6addrp->flag_valid = 1; ipv6addr_settype(ipv6addrp, 1); /* Set typeinfo */ retval = 0; return (retval); }; /* * function converts an IPv6 address to an IPv4 one (reverse RFC 3056) * * in : *ipv6addrp = IPv6 address * out: *ipv4addrp = IPv4 address * ret: ==0: ok, !=0: error */ int librfc3056_ipv6addr_to_ipv4addr(ipv6calc_ipv4addr *ipv4addrp, const ipv6calc_ipv6addr *ipv6addrp, char* resultstring, const size_t resultstring_length) { int retval = 1; unsigned int i; /* check scope */ if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_6TO4) == 0 ) { snprintf(resultstring, resultstring_length, "IPv6 address is not a 6to4 one!"); return(retval); }; /* clear IPv4 structure */ ipv4addr_clear(ipv4addrp); /* set IPv4 address */ for (i = 0; i < 4; i++) { ipv4addr_setoctet(ipv4addrp, i, (unsigned int) ipv6addr_getoctet(ipv6addrp, i + 2)); }; ipv4addrp->prefixlength = 32; ipv4addrp->flag_prefixuse = 0; ipv4addrp->flag_valid = 1; ipv4addr_settype(ipv4addrp, 1); /* Set typeinfo */ retval = 0; return (retval); }; ipv6calc-1.0.0/lib/librfc3056.h000066400000000000000000000011021312366535500157200ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc3056.h * Version : $Id: c52b182df314365f10befd2f3fd4ece7430fcd59 $ * Copyright : 2002-2014 by Peter Bieringer * * Information: * Header file for librfc3056.c */ #include "libipv6addr.h" #include "libipv4addr.h" /* prototypes */ int librfc3056_ipv4addr_to_ipv6to4addr(ipv6calc_ipv6addr *ipv6addrp, const ipv6calc_ipv4addr *ipv4addrp); int librfc3056_ipv6addr_to_ipv4addr(ipv6calc_ipv4addr *ipv4addrp, const ipv6calc_ipv6addr *ipv6addrp, char* resultstring, const size_t resultstring_length); ipv6calc-1.0.0/lib/librfc5569.c000066400000000000000000000035771312366535500157500ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc5569.c * Version : $Id: 921acd4a4e44c6e0c59ed7da7960a566e23a8582 $ * Copyright : 2011 by Raphal Assnat * Extensions: 2014-2015 by Peter Bieringer * * * Information: * Function library for conversions defined in RFC 5569 */ #include #include "libipv4addr.h" #include "libipv6addr.h" #include "librfc5569.h" static void ipv6addr_to_bytes(const ipv6calc_ipv6addr *ipv6addrp, uint8_t bytes[16]) { int i; for (i=0; i<16; i++) { bytes[i] = ipv6addr_getoctet(ipv6addrp, i); }; }; static void ipv6addr_from_bytes(ipv6calc_ipv6addr *ipv6addrp, uint8_t bytes[16]) { int i; for (i=0; i<16; i++) { ipv6addr_setoctet(ipv6addrp, i, bytes[i]); }; }; int librfc5569_calc_6rd_local_prefix(ipv6calc_ipv6addr *sixrd_prefix, const ipv6calc_ipv4addr *sixrd_relay_prefix, const ipv6calc_ipv4addr *local_ip, char *resultstring, const size_t resultstring_length) { uint32_t local_ip_bits, j; uint8_t tmpaddr[16]; int i; int local_prefix_len; ipv6addrstruct_maskprefix(sixrd_prefix); if (sixrd_relay_prefix->flag_valid == 1) { local_prefix_len = sixrd_prefix->prefixlength + 32 - sixrd_relay_prefix->prefixlength; } else { local_prefix_len = sixrd_prefix->prefixlength + 32; }; if (local_prefix_len > 64) { snprintf(resultstring, resultstring_length, "Length of local prefix > 64: %d", local_prefix_len); return (1); } local_ip_bits = ipv4addr_getdword(local_ip); if (sixrd_relay_prefix->flag_valid == 1) { local_ip_bits <<= sixrd_relay_prefix->prefixlength; }; ipv6addr_to_bytes(sixrd_prefix, tmpaddr); for (j=0x80000000,i=sixrd_prefix->prefixlength; i>=1) { if (local_ip_bits & j) { tmpaddr[i>>3] |= 0x80 >> (i&0x7); }; }; ipv6addr_from_bytes(sixrd_prefix, tmpaddr); sixrd_prefix->prefixlength = local_prefix_len; return (0); }; ipv6calc-1.0.0/lib/librfc5569.h000066400000000000000000000010611312366535500157370ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc5569.h * Version : $Id: 184cece92773918edcb7852e1b4ec95541298751 $ * Copyright : 2011 by Raphal Assnat * Extensions: 2014-2014 by Peter Bieringer * * Information: * Header file for librfc5569.c */ #include "libipv6addr.h" #include "libipv4addr.h" int librfc5569_calc_6rd_local_prefix(ipv6calc_ipv6addr *sixrd_prefix, const ipv6calc_ipv4addr *relay_prefix, const ipv6calc_ipv4addr *local_ip, char *resultstring, const size_t resultstring_length); ipv6calc-1.0.0/lib/librfc6052.c000066400000000000000000000041241312366535500157210ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc6052.c * Version : $Id: 7b97c54dcdc9ad2e502f4336b32539d02bcca7e4 $ * Copyright : 2015-2017 by Peter Bieringer * * Information: * Function library for conversions defined in RFC 6052 */ #include #include #include #include "libipv6calcdebug.h" #include "libipv6calc.h" #include "librfc6052.h" /* * function converts an IPv4 address to an NAT64 IPv6 address (RFC 6052 / 2.1) * * in : *ipv4addrp = IPv4 address * out: *ipv6addrp = IPv6 address * ret: ==0: ok, !=0: error */ int librfc6052_ipv4addr_to_ipv6addr(ipv6calc_ipv6addr *ipv6addrp, const ipv6calc_ipv4addr *ipv4addrp) { int retval = 1; unsigned int i; /* clear IPv6 structure */ ipv6addr_clear(ipv6addrp); /* set prefix */ ipv6addr_setdword(ipv6addrp, 0, 0x0064ff9b); /* set IPv4 address */ for (i = 0; i <=3; i++) { ipv6addr_setoctet(ipv6addrp, i + 12, (unsigned int) ipv4addr_getoctet(ipv4addrp, i)); }; ipv6addrp->prefixlength = 96; ipv6addrp->flag_prefixuse = 0; ipv6addrp->flag_valid = 1; ipv6addr_settype(ipv6addrp, 1); /* Set typeinfo */ retval = 0; return (retval); }; /* * function extracts from a NAT64 address the IPv4 address (reverse RFC 6052 / 2.1) * * in : *ipv6addrp = IPv6 address * out: *ipv4addrp = IPv4 address * ret: ==0: ok, !=0: error */ int librfc6052_ipv6addr_to_ipv4addr(ipv6calc_ipv4addr *ipv4addrp, const ipv6calc_ipv6addr *ipv6addrp, char* resultstring, const size_t resultstring_length) { int retval = 1; unsigned int i; /* check scope */ if ( (ipv6addrp->typeinfo & IPV6_NEW_ADDR_NAT64) == 0 ) { snprintf(resultstring, resultstring_length, "IPv6 address is not a NAT64 one!"); return(retval); }; /* clear IPv4 structure */ ipv4addr_clear(ipv4addrp); /* set IPv4 address */ for (i = 0; i < 4; i++) { ipv4addr_setoctet(ipv4addrp, i, (unsigned int) ipv6addr_getoctet(ipv6addrp, i + 12)); }; ipv4addrp->prefixlength = 32; ipv4addrp->flag_prefixuse = 0; ipv4addrp->flag_valid = 1; ipv4addr_settype(ipv4addrp, 1); /* Set typeinfo */ retval = 0; return (retval); }; ipv6calc-1.0.0/lib/librfc6052.h000066400000000000000000000010771312366535500157320ustar00rootroot00000000000000/* * Project : ipv6calc * File : librfc6052.h * Version : $Id: 3b859b4f64198617c8f1342a6cdb39ef9212eb96 $ * Copyright : 2015-2015 by Peter Bieringer * * Information: * Header file for librfc6052.c */ #include "libipv6addr.h" #include "libipv4addr.h" /* prototypes */ int librfc6052_ipv4addr_to_ipv6addr(ipv6calc_ipv6addr *ipv6addrp, const ipv6calc_ipv4addr *ipv4addrp); int librfc6052_ipv6addr_to_ipv4addr(ipv6calc_ipv4addr *ipv4addrp, const ipv6calc_ipv6addr *ipv6addrp, char* resultstring, const size_t resultstring_length); ipv6calc-1.0.0/man/000077500000000000000000000000001312366535500140035ustar00rootroot00000000000000ipv6calc-1.0.0/man/Makefile.in000066400000000000000000000007501312366535500160520ustar00rootroot00000000000000# Project : ipv6calc # File : Makefile # Version : $Id: 6acff422108319c6871508bc73ad68f417bc7722 $ # Copyright : 2003-2008 by Peter Bieringer # # Information: # Makefile for man pages # datarootdir = @datarootdir@ mandir = @mandir@ all: man man: distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: test: install: mkdir -p $(DESTDIR)$(mandir)/man8 for f in *.8; do \ install -m 644 $$f $(DESTDIR)$(mandir)/man8; \ done ipv6calc-1.0.0/man/ipv6calc.8000066400000000000000000000104021312366535500156000ustar00rootroot00000000000000.TH "ipv6calc" "8" "0.99.0" "Peter Bieringer " "system administration" .SH "NAME" ipv6calc \- format and calculate IPv6/IPv4/MAC .SH "SYNOPSIS" ipv6calc [\fIOPTIONS\fP] [\fB\fR] .SH "DESCRIPTION" .PP This program formats and calculates IPv6/IPv4/MAC addresses and can do many more tricky things, e.g. includes a pipe filter capability. .SH "OPTIONS" If no data is presented as command-line arguments, data is read from standard input. .LP General options: .TP \fB[\-d|\-\-debug \fIDEBUGVALUE\fR\fB]\fR debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value .TP \fB[\-v|\-\-version [\-v [\-v]]]\fR version information (2 optional detail levels) .TP \fB[\-v|\-\-version \-h]\fR explanation of feature tokens .TP \fB[\-V|\-\-verbose]\fR be more verbose .TP \fB[\-h|\-\-help|\-?]\fR this online help .LP External database options (depending on compiled\-in suppport): .TP \fB[\-\-db\-ip2location\-disable]\fR IP2Location support disabled .TP \fB[\-\-db\-ip2location\-dir\fR \fIDIRECTORY\fR\fB]\fR IP2Location database directory (default: /usr/share/IP2Location) .TP \fB[\-\-db\-geoip\-disable]\fR GeoIP support disabled .TP \fB[\-\-db\-geoip\-dir\fR \fIDIRECTORY\fR\fB]\fR GeoIP database directory (default: /usr/share/GeoIP) .LP Special options: .TP \fB[\-q|\-\-quiet]\fR be more quiet (auto\-enabled in pipe mode) .TP \fB[\-f|\-\-flush]\fR flush each line in pipe mode .LP Usage with new style options: .TP \fB[\-\-in|\-I\fR \fIINPUT\-TYPE\fR\fB]\fR specify input type (default: autodetect) .TP \fB[\-\-out|\-O\fR \fIOUTPUT\-TYPE\fR\fB]\fR specify output type (sometimes: autodetect) .TP \fB[\-\-action|\-A\fR \fIACTION\fR\fB]\fR specify action (default: format conversion, sometimes: autodetect) .TP \fB[ ...]\fR specify format options .TP \fB [...]\fR input data .RS .TP Available input types: \fB[\-m] \-I|\-\-in \-?|\-h|\-\-help\fR .TP Available output types: \fB[\-m] \-O|\-\-out \-?|\-h|\-\-help\fR .TP Available action types: \fB[\-m] \-A|\-\-action \-?|\-h|\-\-help\fR .RE .LP Other usage: .TP \fB\-\-showinfo|\-i [\-\-machine_readable|\-m]\fR show information about input data .TP \fB\-\-showinfo|\-i \-\-show_types\fR show available types on '\-m' .LP Usage with shortcut options: [ ...] .sp For more information and available format options use: \-?|\-h|\-\-help .PP \fB\-r|\-\-addr2ip6_int\fR (\-O revnibbles.int) .PP \fB\-r|\-\-addr_to_ip6int\fR (\-O revnibbles.int) .PP \fB\-a|\-\-addr2ip6_arpa\fR (\-O revnibbles.arpa) .PP \fB\-a|\-\-addr_to_ip6arpa\fR (\-O revnibbles.arpa) .PP \fB\-b|\-\-addr_to_bitstring\fR (\-O bitstring) .PP \fB \-\-addr2compaddr\fR (\-\-printcompressed) .PP \fB \-\-addr_to_compressed\fR (\-\-printcompressed) .PP \fB \-\-addr2uncompaddr\fR (\-\-printuncompressed) .PP \fB \-\-addr_to_uncompressed\fR (\-\-printuncompressed) .PP \fB \-\-addr_to_base85\fR (\-I ipv6addr \-O base85) .PP \fB \-\-base85_to_addr\fR (\-I base85 \-O ipv6addr) .PP \fB \-\-mac_to_eui64\fR (\-I mac \-O eui64) .PP \fB \-\-addr2fulluncompaddr\fR (\-\-printfulluncompressed) .PP \fB \-\-addr_to_fulluncompressed\fR (\-\-printfulluncompressed) .PP \fB \-\-addr2if_inet6\fR (\-I ipv6addr \-O ifinet6) .PP \fB \-\-addr_to_ifinet6\fR (\-I ipv6addr \-O ifinet6) .PP \fB \-\-if_inet62addr\fR (\-I ifinet6 \-O ipv6addr \-\-printcompressed) .PP \fB \-\-ifinet6_to_compressed\fR (\-I ifinet6 \-O ipv6addr \-\-printcompressed) .PP \fB \-\-eui64_to_privacy\fR (\-I iid_token \-O iid_token \-A genprivacyiid) .PP \fB \-\-ipv4_to_6to4addr\fR (\-I ipv4 \-O ipv6addr \-A conv6to4) .LP See inline help or documentation for more. .SH "REPORTING BUGS" Report bugs to or to the authors. .br Homepage: http://www.deepspace6.net/projects/ipv6calc.html .SH "EXAMPLES" To run this program the standard way type: .LP ipv6calc \-\-showinfo \-i \-m ::1 .PP ipv6calc \-\-showinfo \-m 127.0.0.1 .PP ipv6calc \-\-showinfo \-\-show_types .PP ipv6calc \-\-ipv4_to_6to4addr 127.0.0.1 .PP ipv6calc \-\-addr_to_uncompressed ::1 .LP Usage of filters in pipe mode: .RS cat | ipv6calc \-E ipv6.db.cc=US,iid\-random .RE .SH "COPYRIGHT" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-1.0.0/man/ipv6loganon.8000066400000000000000000000151631312366535500163440ustar00rootroot00000000000000.TH "ipv6loganon" "8" "0.99.0" "Peter Bieringer " "system tools" .SH "NAME" ipv6loganon \- HTTP server log file anonymizer .SH "SYNOPSIS" cat /var/log/httpd/access_log | \fBipv6loganon\fR [\fIOPTIONS\fR] .SH "DESCRIPTION" This program anonymizes IPv4/IPv6 addresses in HTTP server log files Takes data from stdin, processes it to stdout. Depending on the anonymization method, address parts (prefix/interface identifier) are 1. simply \fBzeroized\fR by given masks. .PP 2. \fBanonymized\fR by zeroizing only required bits (partially depending on specified masks). .PP 3. anonymized by trying to keep for IPv4 and IPv6 addresses (\fBkeep\-type\-asn\-cc\fR) When zeroing only required bits (mode 2) the possibilities are .TP IID: .RS .TP EUI\-48/64: serial number would be zero'ed, keeping OID ISATAP: client IPv4 address would be anonymized by given IPv4 mask TEREDO: client IPv4 address would be anonymized by given IPv4 mask, client port would be zero'ed .TP 6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 mask .TP local: whole IID would be zero'ed (except if privacy extension was detected, then replaced by a special token) .RE .TP Prefix: IPv6 addresses including IPv4 address of client will be anonymized by the given IPv4 mask .PP When anonymizing with keep (mode 3) the relevant fields are: \fBtype\fR of address, Autonomous System Number (\fBASN\fR), and Country Code (\fBCC\fR) .PP This method requires an IPv4/IPv6 to Country Code and ASN resolution, provided by GeoIP .PP Big advantage: ipv6logstats(8) result should be the same as with raw data .PP Anonymized IPv4 addresses are from experimental range \fB240.0.0.0/8\fR .PP Anonymized IPv6 addresses are using (currently hijacked) prefix \fBa909::/16\fR .PP Anonymized IPv6 IID is starting with \fBa9x9\fR (x = anonymized nibbles of SLA) .SH "OPTIONS" .LP General options: .TP \fB[\-d|\-\-debug \fIDEBUGVALUE\fR\fB]\fR debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value .TP \fB[\-v|\-\-version [\-v [\-v]]]\fR version information (2 optional detail levels) .TP \fB[\-v|\-\-version \-h]\fR explanation of feature tokens .TP \fB[\-V|\-\-verbose]\fR be more verbose .TP \fB[\-h|\-\-help|\-?]\fR this online help .LP External database options (depending on compiled\-in suppport): .TP \fB[\-\-db\-ip2location\-disable]\fR IP2Location support disabled .TP \fB[\-\-db\-ip2location\-dir\fR \fIDIRECTORY\fR\fB]\fR IP2Location database directory (default: /usr/share/IP2Location) .TP \fB[\-\-db\-geoip\-disable]\fR GeoIP support disabled .TP \fB[\-\-db\-geoip\-dir\fR \fIDIRECTORY\fR\fB]\fR GeoIP database directory (default: /usr/share/GeoIP) .LP Input/output options: .TP \fB[\-w|\-\-write]\fR write output to file instead of stdout .TP \fB[\-a|\-\-append]\fR append output to file instead of stdout .TP \fB[\-f|\-\-flush]\fR flush output after each line .TP \fB[\-V|\-\-verbose]\fR be verbose .PP Performance options: .TP \fB[\-n|\-\-nocache]\fR disable caching .TP \fB[\-c|\-\-cachelimit \fIVALUE\fR\fB]\fR set cache limit. Default: \fB20\fR, maximum: \fB200\fR. .LP Processing options: .LP Shortcut for anonymization presets: .RS .IP \fB\-\-anonymize\-standard\fR (default) .IP \fB\-\-anonymize\-careful\fR .IP \fB\-\-anonymize\-paranoid\fR .RE .LP Supported methods \fB[\-\-anonymize\-method \fIMETHOD\fR\fB]\fR: .TP \fBanonymize\fR reliable anonymization, keep as much type information as possible .TP \fBzeroize\fR simple zeroizing according to given masks, probably loose type information .TP \fBkeep\-type\-asn\-cc\fR special reliable anonymization, keep type & Autonomous System Number and CountryCode. LP Available presets (shortcut names) [\-\-anonymize\-preset \fIPRESET\-NAME\fR]: .TP \fBanonymize\-standard\fR (\fBas\fR): mask\-ipv6= 56 mask\-ipv4=24 mask\-eui64=40 mask\-mac=24 mask\-autoadjust=yes method=anonymize .TP \fBanonymize\-careful\fR (\fBac\fR): mask\-ipv6= 48 mask\-ipv4=20 mask\-eui64=24 mask\-mac=24 mask\-autoadjust=yes method=anonymize .TP \fBanonymize\-paranoid\fR (\fBap\fR): mask\-ipv6= 40 mask\-ipv4=16 mask\-eui64= 0 mask\-mac=24 mask\-autoadjust=no method=anonymize .TP \fBzeroize\-standard\fR (\fBzs\fR): mask\-ipv6= 56 mask\-ipv4=24 mask\-eui64=40 mask\-mac=24 mask\-autoadjust=yes method=zeroize .TP \fBzeroize\-careful\fR (\fBzc\fR): mask\-ipv6= 48 mask\-ipv4=20 mask\-eui64=24 mask\-mac=24 mask\-autoadjust=yes method=zeroize .TP \fBzeroize\-paranoid\fR (\fBzp\fR): mask\-ipv6= 40 mask\-ipv4=16 mask\-eui64= 0 mask\-mac=24 mask\-autoadjust=no method=zeroize .TP \fBkeep\-type\-asn\-cc\fR (\fBkp\fR): mask\-ipv6= 56 mask\-ipv4=24 mask\-eui64=40 mask\-mac=24 mask\-autoadjust=yes method=keep\-type\-asn\-cc .LP Custom control: .TP \fB\-\-mask\-ipv4\fR \fIBITS\fR mask IPv4 address [0\-32] (even if occurs in IPv6 address) .TP \fB\-\-mask\-ipv6\fR \fIBITS\fR mask IPv6 prefix [0\-64] (only applied to related address types) .TP \fB\-\-mask\-eui64\fR \fIBITS\fR mask EUI\-64 address or IPv6 interface identifier [0\-64] .TP \fB\-\-mask\-mac\fR \fIBITS\fR mask MAC address [0\-48] .TP \fB\-\-mask\-autoadjust yes|no\fR autoadjust mask to keep type/vendor information regardless of less given mask .SH "EXAMPLES" Original lines (stdin): .PP 207.46.98.53 \- \- [01/Jan/2007:00:01:15 +0100] "GET /Linux+IPv6\-HOWTO/x1112.html HTTP/1.0" 200 6162 "\-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 253 6334 2002:52b6:6b01:1:216:17ff:fe01:2345 \- \- [10/Jan/2007:15:04:28 +0100] "GET /favicon.ico HTTP/1.1" 200 4710 "http://www.bieringer.de/linux/IPv6/" "Mozilla/5.0 (X11; U; Linux i686; en\-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9\-1.fc6 Firefox/1.5.0.9 pango\-text" 413 5005 .PP Modified lines (stdout): .PP 207.46.98.0 \- \- [01/Jan/2007:00:01:15 +0100] "GET /Linux+IPv6\-HOWTO/x1112.html HTTP/1.0" 200 6162 "\-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 253 6334 2002:52b6:6b00:0:216:17ff:fe00:0 \- \- [10/Jan/2007:15:04:28 +0100] "GET /favicon.ico HTTP/1.1" 200 4710 "http://www.bieringer.de/linux/IPv6/" "Mozilla/5.0 (X11; U; Linux i686; en\-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9\-1.fc6 Firefox/1.5.0.9 pango\-text" 413 5005 .LP Anonymization method: keep\-type\-asn\-cc .PP echo "1.2.3.4" | ./ipv6loganon \-\-anonymize\-preset keep\-type\-asn\-cc 246.24.59.65 .PP echo "2001:a60:1400:1201:221:70ff:fe01:2345" | ./ipv6loganon \-\-anonymize\-preset keep\-type\-asn\-cc a909:16fa:9092:23ff:a909:4291:4022:1708 .SH "SEE ALSO" ipv6calc(8), ipv6logstat(8) .SH "REPORTING BUGS" Report bugs to or to the authors. .PP Homepage: .UR http://www.deepspace6.net/projects/ipv6calc.html http://www.deepspace6.net/projects/ipv6calc.html .UE .SH "LICENSE" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-1.0.0/man/ipv6logconv.8000066400000000000000000000030011312366535500163420ustar00rootroot00000000000000.TH "ipv6logconv" "8" "0.99.0" "Peter Bieringer " "system tools" .SH "NAME" ipv6logconv \- HTTP server log file converter for statistics .SH "SYNOPSIS" cat /var/log/httpd/access_log | \fBipv6logconv\fR [\fIOPTIONS\fR] .SH "DESCRIPTION" This program converts IPv4/IPv6 addresses in HTTP server log files The converted output can be used to create statistics with analog Takes data from stdin, proceed it to stdout .SH "OPTIONS" .LP General options: .TP \fB[\-d|\-\-debug \fIDEBUGVALUE\fR\fB]\fR debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value .TP \fB[\-v|\-\-version [\-v [\-v]]]\fR version information (2 optional detail levels) .TP \fB[\-v|\-\-version \-h]\fR explanation of feature tokens .TP \fB[\-V|\-\-verbose]\fR be more verbose .TP \fB[\-h|\-\-help|\-?]\fR this online help .LP Performance options: .TP \fB[\-n|\-\-nocache]\fR disable caching .TP \fB[\-c|\-\-cachelimit \fIVALUE\fR\fB]\fR set cache limit; default: \fB20\fR, maximum: \fB200\fR. .LP Output options: .TP \fB[\-\-out \fIOUTPUTTYPE\fR\fB]\fR Specify output type: .RS .TP \fBaddrtype\fR Address type .TP \fBouitype\fR OUI (IEEE) type .TP \fBipv6addrtype\fR IPv6 address type .TP \fBany\fR any type .RE .SH "SEE ALSO" ipv6calc(8) .SH "REPORTING BUGS" Report bugs to or to the authors. .PP Homepage: .UR http://www.deepspace6.net/projects/ipv6calc.html http://www.deepspace6.net/projects/ipv6calc.html .UE .SH "LICENSE" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-1.0.0/man/ipv6logstats.8000066400000000000000000000074441312366535500165520ustar00rootroot00000000000000.TH "ipv6logstats" "8" "0.99.0" "Peter Bieringer " "system tools" .SH "Name" ipv6logstats \- Takes http log data from stdin and print a statistics table on output .SH "SYNOPSIS" cat /var/log/httpd/access_log | \fBipv6logstats\fR [\fIOPTIONS\fR] .SH "SYNTAX" ipv6logstats [logfile] .SH "DESCRIPTION" Takes web server log data (or any other data which has IPv4/v6 address in first column) from stdin and print statistics table/list (depending on option) to stdout .SH "OPTIONS" .LP General options: .TP \fB[\-d|\-\-debug \fIDEBUGVALUE\fR\fB]\fR debug value (bitwise like) can also be set by IPV6CALC_DEBUG environment value .TP \fB[\-v|\-\-version [\-v [\-v]]]\fR version information (2 optional detail levels) .TP \fB[\-v|\-\-version \-h]\fR explanation of feature tokens .TP \fB[\-V|\-\-verbose]\fR be more verbose .TP \fB[\-h|\-\-help|\-?]\fR this online help .TP \fB[\-q|\-\-quiet]\fR be more quiet .LP External database options (depending on compiled\-in suppport): .TP \fB[\-\-db\-ip2location\-disable]\fR IP2Location support disabled .TP \fB[\-\-db\-ip2location\-dir\fR \fIDIRECTORY\fR\fB]\fR IP2Location database directory (default: /usr/share/IP2Location) .TP \fB[\-\-db\-geoip\-disable]\fR GeoIP support disabled .TP \fB[\-\-db\-geoip\-dir\fR \fIDIRECTORY\fR\fB]\fR GeoIP database directory (default: /usr/share/GeoIP) .LP Special options: .TP \fB[\-u|\-\-unknown]\fR print unknown IP addresses to stderr .TP \fB[\-c|\-\-columns]\fR print statistics in columns (1) .TP \fB[\-N|\-\-column\-numbers]\fR print column numbers .TP \fB[\-n|\-\-noheader]\fR don't print header in columns mode (1) .TP \fB[\-o|\-\-onlyheader]\fR print only header in columns mode (1) .TP \fB[\-p|\-\-prefix\fR \fITOKEN\fR\fB]\fR print token as prefix (1) .TP \fB[\-s|\-\-simple]\fR disable extended statistic (CountryCode/ASN) .BR (1) unsupported for CountryCode & ASN statistics .SH "EXAMPLES" .LP Column mode: .LP echo "2001:a60:1400:1201:221:70ff:fe01:2345" | ./ipv6logstats \-c \-q .nf ALL IPv4 IPv6 UNKNOWN IPv4/APNIC IPv4/ARIN IPv4/RIPE IPv4/LACNIC IPv4/AFRINIC IPv4/UNKNOWN IPv6/6bone IPv6/IANA IPv6/APNIC IPv6/ARIN IPv6/RIPE IPv6/LACNIC IPv6/AFRINIC IPv6/RESERVED IPv6/UNKNOWN IPv6/6to4/IANA IPv6/6to4/APNIC IPv6/6to4/ARIN IPv6/6to4/RIPE IPv6/6to4/LACNIC IPv6/6to4/AFRINIC IPv6/6to4/RESERVED IPv6/6to4/UNKNOWN IPv6/Teredo/IANA IPv6/Teredo/APNIC IPv6/Teredo/ARIN IPv6/Teredo/RIPE IPv6/Teredo/LACNIC IPv6/Teredo/AFRINIC IPv6/Teredo/RESERVED IPv6/Teredo/UNKNOWN IPv6/NAT64/IANA IPv6/NAT64/APNIC IPv6/NAT64/ARIN IPv6/NAT64/RIPE IPv6/NAT64/LACNIC IPv6/NAT64/AFRINIC IPv6/NAT64/RESERVED IPv6/NAT64/UNKNOWN IPv6/IID/Global IPv6/IID/Random IPv6/IID/Manual IPv6/IID/ISATAP IPv6/IID/Unknown #Version(4.0) 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #4.0 .LP Row mode: .nf echo "2001:a60:1400:1201:221:70ff:fe01:2345" | ./ipv6logstats \-q *Version 4.0 *DateTime: 2014:07:23 19:59:56+0000 GMT *UnixTime: 1406145596 ALL 1 IPv4 0 IPv6 1 IPv6/RIPE 1 IPv6/IID/Global 1 *3*CC\-code\-proto/DE/ALL 1 *3*CC\-code\-proto/DE/IPv4 0 *3*CC\-code\-proto/DE/IPv6 1 *3*CC\-code\-proto\-list/DE 1 0 1 *3*CC\-proto\-code/ALL/DE 1 *3*CC\-proto\-code/IPv6/DE 1 *3*CC\-proto\-code\-list/ALL 1 0 1 *3*AS\-num\-proto/8767/ALL 1 *3*AS\-num\-proto/8767/IPv4 0 *3*AS\-num\-proto/8767/IPv6 1 *3*AS\-num\-proto\-list/8767 1 0 1 *3*AS\-proto\-num/ALL/8767 1 *3*AS\-proto\-num/IPv6/8767 1 *3*AS\-proto\-num\-list/ALL 1 0 1 .fi .SH "SEE ALSO" ipv6calc(8) .SH "REPORTING BUGS" Report bugs to or to the authors. .PP Homepage: .UR http://www.deepspace6.net/projects/ipv6calc.html http://www.deepspace6.net/projects/ipv6calc.html .UE .SH "COPYRIGHT" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-1.0.0/md5/000077500000000000000000000000001312366535500137155ustar00rootroot00000000000000ipv6calc-1.0.0/md5/Makefile.in000066400000000000000000000005221312366535500157610ustar00rootroot00000000000000# Adapted for use with project 'ipv6calc' by Peter Bieringer # $Id: 0aa310d9b2166b78d1115d2c43a506a7980e748e $ CC = @CC@ all: md5.o md5.o: md5.c ${CC} $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -I.. -fPIC -o md5.o -c -s md5.c clean: rm -f *.o *.so.1 *.a distclean: ${MAKE} clean autoclean: ${MAKE} distclean ipv6calc-1.0.0/md5/README000066400000000000000000000004471312366535500146020ustar00rootroot00000000000000$Id: 6f0ef27cb9c1057d26f8f0920aa46efc7991eed6 $ md5 was added because of replace the use of OpenSSL library for calculation (license issue) Original code is located at ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.1.3.tar.gz and a local copy is at ../samplecode/coreutils/ Peter Bieringer ipv6calc-1.0.0/md5/md5.c000066400000000000000000000301171312366535500145500ustar00rootroot00000000000000/* md5.c - Functions to compute MD5 message digest of files or memory blocks according to the definition of MD5 in RFC 1321 from April 1992. Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Ulrich Drepper , 1995. */ /* for ipv6calc, not needed code was removed */ #include "config.h" #include "md5.h" #include #include #include #ifdef _LIBC # include # if __BYTE_ORDER == __BIG_ENDIAN # define WORDS_BIGENDIAN 1 # endif /* We need to keep the namespace clean so define the MD5 function protected using leading __ . */ # define md5_init_ctx __md5_init_ctx # define md5_process_block __md5_process_block # define md5_process_bytes __md5_process_bytes # define md5_finish_ctx __md5_finish_ctx # define md5_read_ctx __md5_read_ctx # define md5_stream __md5_stream # define md5_buffer __md5_buffer #endif #ifdef WORDS_BIGENDIAN # define SWAP(n) \ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) #else # define SWAP(n) (n) #endif #define BLOCKSIZE 4096 /* Ensure that BLOCKSIZE is a multiple of 64. */ #if BLOCKSIZE % 64 != 0 /* FIXME-someday (soon?): use #error instead of this kludge. */ "invalid BLOCKSIZE" #endif /* This array contains the bytes used to pad the buffer to the next 64-byte boundary. (RFC 1321, 3.1: Step 1) */ static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ void md5_init_ctx (struct md5_ctx *ctx) { ctx->A = 0x67452301; ctx->B = 0xefcdab89; ctx->C = 0x98badcfe; ctx->D = 0x10325476; ctx->total[0] = ctx->total[1] = 0; ctx->buflen = 0; } /* Put result from CTX in first 16 bytes following RESBUF. The result must be in little endian byte order. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ #pragma GCC diagnostic ignored "-Wstrict-aliasing" void * md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) { ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A); ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B); ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C); ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D); return resbuf; } /* Process the remaining bytes in the internal buffer and the usual prolog according to the standard and write the result to RESBUF. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ void * md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) { /* Take yet unprocessed bytes into account. */ md5_uint32 bytes = ctx->buflen; size_t pad; /* Now count remaining bytes. */ ctx->total[0] += bytes; if (ctx->total[0] < bytes) ++ctx->total[1]; pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; memcpy (&ctx->buffer[bytes], fillbuf, pad); /* Put the 64-bit file length in *bits* at the end of the buffer. */ *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); /* Process last bytes. */ md5_process_block (ctx->buffer, bytes + pad + 8, ctx); return md5_read_ctx (ctx, resbuf); } /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. */ void * md5_buffer (const char *buffer, size_t len, void *resblock) { struct md5_ctx ctx; /* Initialize the computation context. */ md5_init_ctx (&ctx); /* Process whole buffer but last len % 64 bytes. */ md5_process_bytes (buffer, len, &ctx); /* Put result in desired memory area. */ return md5_finish_ctx (&ctx, resblock); } void md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx) { /* When we already have some bits in our internal buffer concatenate both inputs first. */ if (ctx->buflen != 0) { size_t left_over = ctx->buflen; size_t add = 128 - left_over > len ? len : 128 - left_over; memcpy (&ctx->buffer[left_over], buffer, add); ctx->buflen += add; if (ctx->buflen > 64) { md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx); ctx->buflen &= 63; /* The regions in the following copy operation cannot overlap. */ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], ctx->buflen); } buffer = (const char *) buffer + add; len -= add; } /* Process available complete blocks. */ if (len >= 64) { #if !_STRING_ARCH_unaligned /* To check alignment gcc has an appropriate operator. Other compilers don't. */ # if __GNUC__ >= 2 # define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0) # else # define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0) # endif if (UNALIGNED_P (buffer)) while (len > 64) { md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx); buffer = (const char *) buffer + 64; len -= 64; } else #endif { md5_process_block (buffer, len & ~63, ctx); buffer = (const char *) buffer + (len & ~63); len &= 63; } } /* Move remaining bytes in internal buffer. */ if (len > 0) { size_t left_over = ctx->buflen; memcpy (&ctx->buffer[left_over], buffer, len); left_over += len; if (left_over >= 64) { md5_process_block (ctx->buffer, 64, ctx); left_over -= 64; memcpy (ctx->buffer, &ctx->buffer[64], left_over); } ctx->buflen = left_over; } } /* These are the four functions used in the four steps of the MD5 algorithm and defined in the RFC 1321. The first function is a little bit optimized (as found in Colin Plumbs public domain implementation). */ /* #define FF(b, c, d) ((b & c) | (~b & d)) */ #define FF(b, c, d) (d ^ (b & (c ^ d))) #define FG(b, c, d) FF (d, b, c) #define FH(b, c, d) (b ^ c ^ d) #define FI(b, c, d) (c ^ (b | ~d)) /* Process LEN bytes of BUFFER, accumulating context into CTX. It is assumed that LEN % 64 == 0. */ void md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx) { md5_uint32 correct_words[16]; const md5_uint32 *words = buffer; size_t nwords = len / sizeof (md5_uint32); const md5_uint32 *endp = words + nwords; md5_uint32 A = ctx->A; md5_uint32 B = ctx->B; md5_uint32 C = ctx->C; md5_uint32 D = ctx->D; /* First increment the byte count. RFC 1321 specifies the possible length of the file up to 2^64 bits. Here we only compute the number of bytes. Do a double word increment. */ ctx->total[0] += len; if (ctx->total[0] < len) ++ctx->total[1]; /* Process all bytes in the buffer with 64 bytes in each round of the loop. */ while (words < endp) { md5_uint32 *cwp = correct_words; md5_uint32 A_save = A; md5_uint32 B_save = B; md5_uint32 C_save = C; md5_uint32 D_save = D; /* First round: using the given function, the context and a constant the next context is computed. Because the algorithms processing unit is a 32-bit word and it is determined to work on words in little endian byte order we perhaps have to change the byte order before the computation. To reduce the work for the next steps we store the swapped words in the array CORRECT_WORDS. */ #define OP(a, b, c, d, s, T) \ do \ { \ a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ ++words; \ a = rol (a, s); \ a += b; \ } \ while (0) /* Before we start, one word to the strange constants. They are defined in RFC 1321 as T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}' */ /* Round 1. */ OP (A, B, C, D, 7, 0xd76aa478); OP (D, A, B, C, 12, 0xe8c7b756); OP (C, D, A, B, 17, 0x242070db); OP (B, C, D, A, 22, 0xc1bdceee); OP (A, B, C, D, 7, 0xf57c0faf); OP (D, A, B, C, 12, 0x4787c62a); OP (C, D, A, B, 17, 0xa8304613); OP (B, C, D, A, 22, 0xfd469501); OP (A, B, C, D, 7, 0x698098d8); OP (D, A, B, C, 12, 0x8b44f7af); OP (C, D, A, B, 17, 0xffff5bb1); OP (B, C, D, A, 22, 0x895cd7be); OP (A, B, C, D, 7, 0x6b901122); OP (D, A, B, C, 12, 0xfd987193); OP (C, D, A, B, 17, 0xa679438e); OP (B, C, D, A, 22, 0x49b40821); /* For the second to fourth round we have the possibly swapped words in CORRECT_WORDS. Redefine the macro to take an additional first argument specifying the function to use. */ #undef OP #define OP(f, a, b, c, d, k, s, T) \ do \ { \ a += f (b, c, d) + correct_words[k] + T; \ a = rol (a, s); \ a += b; \ } \ while (0) /* Round 2. */ OP (FG, A, B, C, D, 1, 5, 0xf61e2562); OP (FG, D, A, B, C, 6, 9, 0xc040b340); OP (FG, C, D, A, B, 11, 14, 0x265e5a51); OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa); OP (FG, A, B, C, D, 5, 5, 0xd62f105d); OP (FG, D, A, B, C, 10, 9, 0x02441453); OP (FG, C, D, A, B, 15, 14, 0xd8a1e681); OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8); OP (FG, A, B, C, D, 9, 5, 0x21e1cde6); OP (FG, D, A, B, C, 14, 9, 0xc33707d6); OP (FG, C, D, A, B, 3, 14, 0xf4d50d87); OP (FG, B, C, D, A, 8, 20, 0x455a14ed); OP (FG, A, B, C, D, 13, 5, 0xa9e3e905); OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8); OP (FG, C, D, A, B, 7, 14, 0x676f02d9); OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a); /* Round 3. */ OP (FH, A, B, C, D, 5, 4, 0xfffa3942); OP (FH, D, A, B, C, 8, 11, 0x8771f681); OP (FH, C, D, A, B, 11, 16, 0x6d9d6122); OP (FH, B, C, D, A, 14, 23, 0xfde5380c); OP (FH, A, B, C, D, 1, 4, 0xa4beea44); OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9); OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60); OP (FH, B, C, D, A, 10, 23, 0xbebfbc70); OP (FH, A, B, C, D, 13, 4, 0x289b7ec6); OP (FH, D, A, B, C, 0, 11, 0xeaa127fa); OP (FH, C, D, A, B, 3, 16, 0xd4ef3085); OP (FH, B, C, D, A, 6, 23, 0x04881d05); OP (FH, A, B, C, D, 9, 4, 0xd9d4d039); OP (FH, D, A, B, C, 12, 11, 0xe6db99e5); OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8); OP (FH, B, C, D, A, 2, 23, 0xc4ac5665); /* Round 4. */ OP (FI, A, B, C, D, 0, 6, 0xf4292244); OP (FI, D, A, B, C, 7, 10, 0x432aff97); OP (FI, C, D, A, B, 14, 15, 0xab9423a7); OP (FI, B, C, D, A, 5, 21, 0xfc93a039); OP (FI, A, B, C, D, 12, 6, 0x655b59c3); OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92); OP (FI, C, D, A, B, 10, 15, 0xffeff47d); OP (FI, B, C, D, A, 1, 21, 0x85845dd1); OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f); OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0); OP (FI, C, D, A, B, 6, 15, 0xa3014314); OP (FI, B, C, D, A, 13, 21, 0x4e0811a1); OP (FI, A, B, C, D, 4, 6, 0xf7537e82); OP (FI, D, A, B, C, 11, 10, 0xbd3af235); OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb); OP (FI, B, C, D, A, 9, 21, 0xeb86d391); /* Add the starting values of the context. */ A += A_save; B += B_save; C += C_save; D += D_save; } /* Put checksum in context given as argument. */ ctx->A = A; ctx->B = B; ctx->C = C; ctx->D = D; } ipv6calc-1.0.0/md5/md5.h000066400000000000000000000106151312366535500145560ustar00rootroot00000000000000/* md5.h - Declaration of functions and data types used for MD5 sum computing library functions. Copyright (C) 1995, 1996, 1999, 2000, 2003 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _MD5_H #define _MD5_H 1 #include #include /* The following contortions are an attempt to use the C preprocessor to determine an unsigned integral type that is 32 bits wide. An alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but doing that would require that the configure script compile and *run* the resulting executable. Locally running cross-compiled executables is usually not possible. */ #ifdef _LIBC # include typedef uint32_t md5_uint32; typedef uintptr_t md5_uintptr; #else # define UINT_MAX_32_BITS 4294967295U # if UINT_MAX == UINT_MAX_32_BITS typedef unsigned int md5_uint32; # else # if USHRT_MAX == UINT_MAX_32_BITS typedef unsigned short md5_uint32; # else # if ULONG_MAX == UINT_MAX_32_BITS typedef unsigned long md5_uint32; # else /* The following line is intended to evoke an error. Using #error is not portable enough. */ "Cannot determine unsigned 32-bit data type." # endif # endif # endif /* We have to make a guess about the integer type equivalent in size to pointers which should always be correct. */ typedef unsigned long int md5_uintptr; #endif /* Structure to save state of computation between the single steps. */ struct md5_ctx { md5_uint32 A; md5_uint32 B; md5_uint32 C; md5_uint32 D; md5_uint32 total[2]; md5_uint32 buflen; char buffer[128]; }; /* * The following three functions are build up the low level used in * the functions `md5_stream' and `md5_buffer'. */ /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ extern void md5_init_ctx (struct md5_ctx *ctx); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is necessary that LEN is a multiple of 64!!! */ extern void md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is NOT required that LEN is a multiple of 64. */ extern void md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx); /* Process the remaining bytes in the buffer and put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF be correctly aligned for a 32 bits value. */ extern void *md5_finish_ctx (struct md5_ctx *ctx, void *resbuf); /* Put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ extern void *md5_read_ctx (const struct md5_ctx *ctx, void *resbuf); /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. */ extern void *md5_buffer (const char *buffer, size_t len, void *resblock); #define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) ) #endif ipv6calc-1.0.0/mod_ipv6calc/000077500000000000000000000000001312366535500155765ustar00rootroot00000000000000ipv6calc-1.0.0/mod_ipv6calc/Makefile.in000066400000000000000000000044401312366535500176450ustar00rootroot00000000000000# Project : ipv6calc # File : mod_ipv6calc/Makefile[.in] # Version : $Id: 0eb1bff44647e2edcbe0280c91efd3f1769eb0a6 $ # Copyright : 2015-2015 by Peter Bieringer # # Information: # Makefile for ipv6calc # LIBEXECDIR = @HTTPD_LIBEXECDIR@ SYSCONFDIR = @HTTPD_SYSCONFDIR@ APXS = @APXS@ # Compiler and Linker Options DEFAULT_CFLAGS ?= -O2 -Wall -g @CFLAGS_EXTRA@ INCLUDES= @MD5_INCLUDE@ @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE_L1@ @GEOIP_INCLUDE_L1@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IPV6CALC_LIB@ @IP2LOCATION_LIB_L1@ @GEOIP_LIB_L1@ -lm GETOBJS = @LIBOBJS@ LDFLAGS_EXTRA = @LDFLAGS_EXTRA_MOD_IPV6CALC@ # splint SPLINT_OPT_OUTSIDE = -warnposix -nullassign -uniondef -compdef -usedef -formatconst -exportlocal #SPLINT_OPT_OUTSIDE = -uniondef +matchanyintegral --nullassign +ignoresigns -compdef -usedef -modobserver -formatconst -warnposix -exportlocal SPLINT_TODO_LATER = -unrecog -retvalint all: mod_ipv6calc libipv6calc: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper: cd ../ && ${MAKE} lib-make mod_ipv6calc.la: mod_ipv6calc.slo $(SH_LINK) -rpath $(libexecdir) -module -avoid-version mod_ipv6calc.lo shared = mod_ipv6calc.la mod_ipv6calc: mod_ipv6calc.c ../lib/libipv6calc.h ../config.h libipv6calc libipv6calc_db_wrapper if test -z "$(APXS)"; then echo "no APXS found, can't build module"; exit 1; fi $(APXS) $(LIBS) $(INCLUDES) -c mod_ipv6calc.c $(LDFLAGS_EXTRA) static: distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f mod_ipv6calc.o mod_ipv6calc.lo mod_ipv6calc.slo mod_ipv6calc.la .libs/* test: mod_ipv6calc LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_mod_ipv6calc.sh -K LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):@LD_LIBRARY_PATH_BASIC@ ./test_mod_ipv6calc.sh -W test-minimal: mod_ipv6calc test-ldlibpath: mod_ipv6calc codecheck: ${MAKE} splint splint: splint *.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) $(DESTDIR)$(LIBEXECDIR): mkdir -p $@ $(DESTDIR)$(SYSCONFDIR): mkdir -p $@ install: mod_ipv6calc $(DESTDIR)$(LIBEXECDIR) $(DESTDIR)$(SYSCONFDIR) if test -z "$(APXS)"; then echo "no APXS found, can't install module"; exit 1; fi $(APXS) -i -S LIBEXECDIR=$(DESTDIR)$(LIBEXECDIR) -n 'mod_ipv6calc' mod_ipv6calc.la install -m 644 ipv6calc.conf $(DESTDIR)$(SYSCONFDIR) ipv6calc-1.0.0/mod_ipv6calc/README.mod_ipv6calc000066400000000000000000000050371312366535500210300ustar00rootroot00000000000000$Id: f2ca6fdf162e87fd4dba09028c4c7ccace7a1969 $ Apache module tested on - 2.2 (CentOS 5) - 2.4 (CentOS 7, Fedora 22) Installation - copy compiled module to Apache module directory Fedora/Enterprise Linux # cp .libs/mod_ipv6calc.so /etc/httpd/modules/ - copy default configuration to Apache configuration directory Fedora/Enterprise Linux # cp ipv6calc.conf /etc/httpd/conf.d/ - review config /etc/httpd/conf.d/ipv6calc.conf Restart Apache See summary after Apache startup in log for default/configured parameters, e.g. [Sat May 30 13:32:51.750441 2015] [ipv6calc:notice] [pid 10924] start ipv6calc database wrapper init [Sat May 30 13:32:51.754755 2015] [ipv6calc:notice] [pid 10924] features: GeoIP GeoIPv6 IP2Location IP2Location6 DBIPv4 DBIPv6 DB_AS_REG DB_IPV4_REG DB_IPV6_REG DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_IPV4_COUNTRY DB_IPV6_COUNTRY DB_IPV4_CITY DB_IPV6_CITY DB_IPV4_REGION DB_IPV6_REGION DB_CC_REG DB_IEEE [Sat May 30 13:32:51.754802 2015] [ipv6calc:notice] [pid 10924] capabilities: GeoIP(linked) IP2Location(linked) DBIP External DB_AS_REG(BuiltIn) DB_CC_REG(BuiltIn) DB_IPV4_REG(BuiltIn) DB_IPV6_REG(BuiltIn) DB_IEEE(BuiltIn) [Sat May 30 13:32:51.754810 2015] [ipv6calc:notice] [pid 10924] internal main library version: 0.99.1 API: 0.99.1 (built-in) [Sat May 30 13:32:51.754832 2015] [ipv6calc:notice] [pid 10924] internal database library version: 0.99.1 API: 0.99.1 (built-in) [Sat May 30 13:32:51.754839 2015] [ipv6calc:notice] [pid 10924] supported anonymization methods: ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC [Sat May 30 13:32:51.754845 2015] [ipv6calc:notice] [pid 10924] configured anonymization method: keep-type-asn-cc [Sat May 30 13:32:51.754851 2015] [ipv6calc:notice] [pid 10924] configured module actions: anonymize=ON countrycode=ON [Sat May 30 13:32:51.754866 2015] [ipv6calc:notice] [pid 10924] configured module debug level: 0x00000001 (1) [Sat May 30 13:32:51.754873 2015] [ipv6calc:notice] [pid 10924] module cache: ON (default) limit=40 (configured) statistics_interval=10 (configured) Anonymized log file according to example LogFormat looks then like: a909:16fa:9092:23ff:a909:4941::7 "DE" - [30/May/2015:18:14:59 +0200] "GET / HTTP/1.1" 403 4609 "-" "curl/7.40.0" a909:16fa:9092:23ff:a909:4941::7 "DE" - [30/May/2015:18:15:01 +0200] "GET / HTTP/1.1" 403 4609 "-" "curl/7.40.0" 127.0.0.0 "-" - [30/May/2015:18:15:02 +0200] "HEAD / HTTP/1.0" 403 - "-" "-" Troubleshooting: ipv6calc -vv shows proper database setup while Apache has issues => check/adjust SELinux (temporary set to permissive) ipv6calc-1.0.0/mod_ipv6calc/ipv6calc.conf000066400000000000000000000071521312366535500201610ustar00rootroot00000000000000# Project : ipv6calc/mod_ipv6calc # File : ipv6calc.conf # Version : $Id: ipv6calc.conf,v 1.9 2015/09/05 10:06:06 ds6peter Exp $ ## Information # Depending on module options and available databases following environment variables are set # IPV6CALC_CLIENT_IP_ANON anonymized IP address # IPV6CALC_CLIENT_COUNTRYCODE country code of IP address # IPV6CALC_CLIENT_ASN ASN of IP address # IPV6CALC_CLIENT_REGISTRY Registry of IP address # IPV6CALC_ANON_METHOD used anonymization method ## Activation # following steps are necessary to activate all the features, see also below # 1. enable loading of module # 2. enable module itself # 3. enable (additional) custom log directive ## enable this config option to activate the module (step 1) #LoadModule ipv6calc_module modules/mod_ipv6calc.so #### module options ## enable module (step 2) #ipv6calcEnable on ## do not activate fallbacks or stop (don't start Apache) if this module has an issue #ipv6calcNoFallback on ## set module debug level (see source code), understands hex and decimal # debug all #ipv6calcDebuglevel -1 # log effective database status to stderr #ipv6calcDebuglevel 0x0100 ## disable internal cache (default: ON) #ipv6calcCache off ## change cache limit (min,default/max see source code) #ipv6calcCacheLimit 40 ## log cache statistics after amount of requests #ipv6calcCacheStatisticsInterval 1000 ### module actions ## set IPV6CALC_CLIENT_IP_ANON ipv6calcActionAnonymize on ## set IPV6CALC_CLIENT_COUNTRYCODE ipv6calcActionCountrycode on ## set IPV6CALC_CLIENT_ASN ipv6calcActionAsn on ## set IPV6CALC_CLIENT_REGISTRY ipv6calcActionRegistry on #### options forwarded into ipv6calc libraries ## debugging #ipv6calcOption debug 0x8 ## general database configuration #ipv6calcOption db-external-disable yes #ipv6calcOption db-ip2location-disable yes #ipv6calcOption db-geoip-disable yes #ipv6calcOption db-dbip-disable yes ## database path configuration (see also ipv6calc -h|-vv) #ipv6calcOption db-external-dir /usr/share/ipv6calc/db #ipv6calcOption db-ip2location-dir /usr/share/IP2Location #ipv6calcOption db-geoip-dir /usr/share/GeoIP #ipv6calcOption db-dbip-dir /usr/share/DBIP ### anonymization settings, see also ### ipv6calc -A anonymize -h ## anonymization method: keep-type-asn-cc (requires ASN & CountryCode database) ipv6calcOption anonymize-preset keep-type-asn-cc ## anonymization method: zeroize (optional with custom values) #ipv6calcOption anonymize-method zeroize #ipv6calcOption mask-ipv4 16 #ipv6calcOption mask-ipv6 32 #ipv6calcOption mask-eui64 16 #ipv6calcOption mask-mac 16 #ipv6calcOption mask-autoadjust yes ## anonymization method: anonymize (optional with custom values) #ipv6calcOption anonymize-method anonymize #ipv6calcOption mask-ipv4 16 #ipv6calcOption mask-ipv6 32 #ipv6calcOption mask-eui64 16 #ipv6calcOption mask-mac 16 #ipv6calcOption mask-autoadjust yes #### log with anonymized client IP (instead of %a/%h) and country code/ASN/Registry/AnonymizationMethod (instead of %l) LogFormat "%{IPV6CALC_CLIENT_IP_ANON}e \"%{IPV6CALC_CLIENT_COUNTRYCODE}e/%{IPV6CALC_CLIENT_ASN}e/%{IPV6CALC_CLIENT_REGISTRY}e/%{IPV6CALC_ANON_METHOD}e\" %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_anon ## enable this config option to get an extra access log (step 3) #CustomLog logs/access_anon_log combined_anon ipv6calc-1.0.0/mod_ipv6calc/mod_ipv6calc.c000066400000000000000000001255441312366535500203230ustar00rootroot00000000000000/* * Project : ipv6calc/mod_ipv6calc * File : mod_ipv6calc.c * Version : $Id: acf112bb5e8087c921b19f4d87bc608aa5438cf9 $ * Copyright : 2015-2015 by Peter Bieringer * * Information: * ipv6calc Apache module * * Currently supporting: * - client IP address anonymization by setting environment IPV6CALC_CLIENT_IP_ANON * - client IP address country code retrievement by setting environment IPV6CALC_CLIENT_COUNTRYCODE * - client IP address ASN retrievement by setting environment IPV6CALC_CLIENT_ASN * - client IP address registry retrievement by setting environment IPV6CALC_CLIENT_REGISTRY * - anonymization method by setting IPV6CALC_ANON_METHOD * * mode_ipv6calc behavior can be controlled by config, e.g. * ipv6calcActionAnonymize on * ipv6calcActionCountrycode on * ipv6calcActionAsn on * ipv6calcActionRegistry on * ipv6calcCache off (default: on) * ipv6calcCacheLimit >= IPV6CALC_CACHE_LRI_LIMIT_MIN * ipv6calcCacheStatisticsInterval 0:disable * ipv6calcDebuglevel >0 (see defines below) * * ipv6calc behavior can be controlled by config, e.g * ipv6calcOption debug 0x8 * ipv6calcOption anonymize-preset keep-type-asn-cc * ipv6calcOption disable-external yes * ipv6calcOption disable-ip2location yes * ipv6calcOption mask-ipv4 16 * ipv6calcOption mask-ipv6 32 * * see also * ipv6calc -h * ipv6calc -A anonymize -h */ // Apache/APR related includes #include #include #include #include #include // ipv6calc related includes #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_URL #undef PACKAGE_VERSION #include "config.h" #include "libipv6calc.h" /* features */ int feature_zeroize = 1; // always supported int feature_anon = 1; // always supported int feature_kp = 0; // will be checked later /*************************** * Module copyright ***************************/ /* global program related definitions */ #define PROGRAM_NAME "mod_ipv6calc" #define PROGRAM_COPYRIGHT "(P) & (C) 2015-" COPYRIGHT_YEAR " by Peter Bieringer " /*************************** * Module debugging ***************************/ #define IPV6CALC_DEBUG_MAP_DEBUG_TO_NOTICE 0x0001 #define IPV6CALC_DEBUG_CACHE_LOOKUP 0x0010 #define IPV6CALC_DEBUG_CACHE_ENTRIES 0x0020 #define IPV6CALC_DEBUG_CACHE_STORE 0x0040 #define IPV6CALC_DEBUG_RETRIEVE_DATA 0x0080 #define IPV6CALC_DEBUG_SHOW_DB_INFO 0x0100 /*************************** * ipv6calc library debugging and option handling ***************************/ long int ipv6calc_debug = 0; // ipv6calc_debug usage (possible set via option) /* options (only used via the option parser) */ struct option longopts[IPV6CALC_MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; /*************************** * Prototyping ***************************/ static const char *set_ipv6calc_enable(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_no_fallback(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_cache(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_cache_limit(cmd_parms *cmd, void *dummy, const char *value, int arg); static const char *set_ipv6calc_cache_statistics_interval(cmd_parms *cmd, void *dummy, const char *value, int arg); static const char *set_ipv6calc_debuglevel(cmd_parms *cmd, void *dummy, const char *value, int arg); static const char *set_ipv6calc_action_anonymize(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_action_countrycode(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_action_asn(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_action_registry(cmd_parms *cmd, void *dummy, int arg); static const char *set_ipv6calc_option(cmd_parms *cmd, void *dummy, const char *name, const char *value, int arg); /*************************** * Cache (Last Recently Inserted) ***************************/ #define IPV6CALC_CACHE_LRI_SIZE 200 #define IPV6CALC_CACHE_LRI_LIMIT_MIN 20 static long int ipv6calc_cache_lri_checked[2] = {0, 0}; static int ipv6calc_cache_lri_max[2] = {0, 0}; static int ipv6calc_cache_lri_last[2] = {0, 0 }; static long int ipv6calc_cache_lri_statistics[2][IPV6CALC_CACHE_LRI_SIZE]; static char ipv6calc_cache_lri_value_anon[2][IPV6CALC_CACHE_LRI_SIZE][APRMAXHOSTLEN]; static char ipv6calc_cache_lri_value_cc[2][IPV6CALC_CACHE_LRI_SIZE][APRMAXHOSTLEN]; static char ipv6calc_cache_lri_value_asn[2][IPV6CALC_CACHE_LRI_SIZE][APRMAXHOSTLEN]; static char ipv6calc_cache_lri_value_registry[2][IPV6CALC_CACHE_LRI_SIZE][APRMAXHOSTLEN]; static struct in_addr ipv6calc_cache_lri_ipv4_token[IPV6CALC_CACHE_LRI_SIZE]; #if APR_HAVE_IPV6 static struct in6_addr ipv6calc_cache_lri_ipv6_token[IPV6CALC_CACHE_LRI_SIZE]; #endif /*************************** * Static values ***************************/ static const char *anon_method_name = "-"; /*************************** * Definitions ***************************/ /* define module name */ module AP_MODULE_DECLARE_DATA ipv6calc_module; /* define config structure */ typedef struct { int enabled; int no_fallback; int cache; int cache_limit; unsigned long int cache_statistics_interval; uint32_t debuglevel; int action_anonymize; int action_countrycode; int action_asn; int action_registry; int anon_set_default; s_ipv6calc_anon_set ipv6calc_anon_set; } ipv6calc_server_config; /* module options forwarded to ipv6calc during init */ typedef struct { char name[NI_MAXHOST]; char value[NI_MAXHOST]; } ipv6calc_option; #define mod_ipv6calc_options_max IPV6CALC_MAXLONGOPTIONS ipv6calc_option ipv6calc_option_list[mod_ipv6calc_options_max]; int ipv6calc_option_list_entries = 0; #define mod_ipv6calc_pi_IPV4 0 #define mod_ipv6calc_pi_IPV6 1 /* * Config options (ipv6calc_cmds) */ static const command_rec ipv6calc_cmds[] = { AP_INIT_FLAG("ipv6calcEnable", set_ipv6calc_enable, NULL, OR_FILEINFO, "Turn on mod_ipv6calc"), AP_INIT_FLAG("ipv6calcNoFallback", set_ipv6calc_no_fallback, NULL, OR_FILEINFO, "Do not fallback in case of issues with mod_ipv6calc"), AP_INIT_FLAG("ipv6calcCache", set_ipv6calc_cache, NULL, OR_FILEINFO, "Turn off mod_ipv6calc cache"), AP_INIT_TAKE1("ipv6calcCacheLimit", (const char *(*)()) set_ipv6calc_cache_limit, NULL, OR_FILEINFO, "mod_ipv6calc cache limit: "), AP_INIT_TAKE1("ipv6calcCacheStatisticsInterval", (const char *(*)()) set_ipv6calc_cache_statistics_interval, NULL, OR_FILEINFO, "mod_ipv6calc cache statistics interval: (0=disabled)"), AP_INIT_TAKE1("ipv6calcDebuglevel", (const char *(*)()) set_ipv6calc_debuglevel, NULL, OR_FILEINFO, "Debug level of module (binary or'ed): "), AP_INIT_FLAG("ipv6calcActionAnonymize", set_ipv6calc_action_anonymize, NULL, OR_FILEINFO, "Store anonymized IP address in IPV6CALC_CLIENT_IP_ANON"), AP_INIT_FLAG("ipv6calcActionCountrycode", set_ipv6calc_action_countrycode, NULL, OR_FILEINFO, "Store Country Code of IP address in IPV6CALC_CLIENT_COUNTRYCODE"), AP_INIT_FLAG("ipv6calcActionAsn", set_ipv6calc_action_asn, NULL, OR_FILEINFO, "Store ASN of IP address in IPV6CALC_CLIENT_COUNTRYCODE"), AP_INIT_FLAG("ipv6calcActionRegistry", set_ipv6calc_action_registry, NULL, OR_FILEINFO, "Store Registry of IP address in IPV6CALC_CLIENT_COUNTRYCODE"), AP_INIT_TAKE2("ipv6calcOption", (const char *(*)()) set_ipv6calc_option, NULL, OR_FILEINFO, "Define ipv6calc option: "), {NULL} }; /*************************** * Support functions ***************************/ static int ipv6calc_support_init(server_rec *s) { int i, result; static int ipv6calc_options_added = 0; ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(s->module_config, &ipv6calc_module); int mod_ipv6calc_APLOG_DEBUG = (config->debuglevel & IPV6CALC_DEBUG_MAP_DEBUG_TO_NOTICE) ? APLOG_NOTICE : APLOG_DEBUG; // check enabled if (config->enabled == 0) { ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "module is NOT enabled (check for 'ipv6calcEnable on')" ); return 0; }; ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "start ipv6calc initialization" ); /* add options */ if (ipv6calc_options_added == 0) { ipv6calc_options_add_common_anon(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_add_common_basic(shortopts, sizeof(shortopts), longopts, &longopts_maxentries); ipv6calc_options_added = 1; }; ipv6calc_quiet = 1; // be quiet by default /* initialize ipv6calc options from list retrieved via APR config parser */ ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "apply ipv6calc options" ); if (ipv6calc_option_list_entries > 0) { for (i = 0; i < ipv6calc_option_list_entries; i++) { result = ipv6calc_set_option(longopts, ipv6calc_option_list[i].name, ipv6calc_option_list[i].value, &config->ipv6calc_anon_set); if (result == 0) { ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "ipv6calc option %s: %s=%s" , "successfully set" , ipv6calc_option_list[i].name , ipv6calc_option_list[i].value ); } else { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, s , "ipv6calc option %s: %s=%s" , "NOT UNDERSTOOD" , ipv6calc_option_list[i].name , ipv6calc_option_list[i].value ); }; if ((result == 0) && ( (strcmp(ipv6calc_option_list[i].name, "anonymize-preset") == 0) || (strcmp(ipv6calc_option_list[i].name, "anonymize-method") == 0) ) ) { config->anon_set_default = 0; }; }; }; ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "start ipv6calc database wrapper initialization" ); result = libipv6calc_db_wrapper_init(""); if (result != 0) { config->enabled = 0; if (config->no_fallback) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, s , "database wrapper initialization failed (NO-FALLBACK activated, STOP NOW): %d" , result ); return(1); } else { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, s , "database wrapper initialization failed (disable module now): %d" , result ); return(0); }; } else { ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "ipv6calc database wrapper initialization finished" ); }; /* check for KeepTypeAsnCC support */ if ((libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB) == 1) \ && (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB) == 1)) { feature_kp = 1; }; return(0); }; /*************************** * Hooks functions ***************************/ /* * ipv6calc_cleanup */ static apr_status_t ipv6calc_cleanup(void *cfgdata) { // cleanup ipv6calc database wrapper libipv6calc_db_wrapper_cleanup(); return APR_SUCCESS; }; /* * ipv6calc_post_config */ static int ipv6calc_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { char string[NI_MAXHOST] = ""; int result; ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(s->module_config, &ipv6calc_module); int mod_ipv6calc_APLOG_DEBUG = (config->debuglevel & IPV6CALC_DEBUG_MAP_DEBUG_TO_NOTICE) ? APLOG_NOTICE : APLOG_DEBUG; // check enabled if (config->enabled == 0) { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "module is NOT enabled (check for 'ipv6calcEnable on')" ); return 0; }; #ifdef SHARED_LIBRARY IPV6CALC_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) IPV6CALC_DB_LIB_VERSION_CHECK_EXIT(IPV6CALC_PACKAGE_VERSION_NUMERIC, IPV6CALC_PACKAGE_VERSION_STRING) #endif // SHARED_LIBRARY ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "ipv6calc_post_config" ); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "internal main library version: %s API: %s (%s)" , libipv6calc_lib_version_string() , libipv6calc_api_version_string() #ifdef SHARED_LIBRARY , "shared" #else // SHARED_LIBRARY , "built-in" #endif // SHARED_LIBRARY ); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "internal database library version: %s API: %s (%s)" , libipv6calc_db_lib_version_string() , libipv6calc_db_api_version_string() #ifdef SHARED_LIBRARY , "shared" #else // SHARED_LIBRARY , "built-in" #endif // SHARED_LIBRARY ); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "%s module actions: anonymize=%s countrycode=%s asn=%s registry=%s" , ((config->action_anonymize + config->action_countrycode) == 0) ? "default" : "configured" , (config->action_anonymize > 0) ? "ON" : "OFF" , (config->action_countrycode > 0) ? "ON" : "OFF" , (config->action_asn > 0) ? "ON" : "OFF" , (config->action_registry > 0) ? "ON" : "OFF" ); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "%s module debug level: 0x%08x (%d)" , (config->debuglevel == 0) ? "default" : "configured" , config->debuglevel , config->debuglevel ); if (config->cache == 0) { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "module cache: OFF (configured)" ); } else { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "module cache: ON (default) limit=%d (%s) statistics_interval=%lu (%s)" , config->cache_limit , (config->cache_limit == IPV6CALC_CACHE_LRI_LIMIT_MIN) ? "default/minimum" : "configured" , config->cache_statistics_interval , (config->cache_statistics_interval == 0) ? "default" : "configured" ); }; result = ipv6calc_support_init(s); if (result != 0) { return(1); }; string[0] = '\0'; libipv6calc_db_wrapper_features(string, sizeof(string)); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "features: %s" , string ); string[0] = '\0'; libipv6calc_db_wrapper_capabilities(string, sizeof(string)); ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "capabilities: %s" , string ); if (config->debuglevel && IPV6CALC_DEBUG_SHOW_DB_INFO) { libipv6calc_db_wrapper_print_db_info(0, ""); }; ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "supported anonymization methods:%s%s%s" , (feature_zeroize == 1) ? " ANON_ZEROISE" : "" , (feature_anon == 1) ? " ANON_ANONYMIZE" : "" , (feature_kp == 1) ? " ANON_KEEP-TYPE-ASN-CC" : "" ); if (config->ipv6calc_anon_set.method != ANON_METHOD_KEEPTYPEASNCC) { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "%s anonymization method: %s mask_ipv4=%d mask_ipv6=%d mask_eui64=%d mask_mac=%d mask_autoadjust=%s" , (config->anon_set_default == 1) ? "default" : "configured" , libipv6calc_anon_method_name(&config->ipv6calc_anon_set) , config->ipv6calc_anon_set.mask_ipv4 , config->ipv6calc_anon_set.mask_ipv6 , config->ipv6calc_anon_set.mask_eui64 , config->ipv6calc_anon_set.mask_mac , (config->ipv6calc_anon_set.mask_autoadjust > 0) ? "yes" : "no" ); } else { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "%s anonymization method: %s%s" , (config->anon_set_default == 1) ? "default" : "configured" , libipv6calc_anon_method_name(&config->ipv6calc_anon_set) , ((feature_kp == 0) && (config->ipv6calc_anon_set.method == ANON_METHOD_KEEPTYPEASNCC)) ? " NOT-SUPPORTED" : "" ); if (feature_kp == 0) { if (config->no_fallback) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, s , "%s anonymization method: %s NOT-SUPPORTED, NO-FALLBACK activated - STOP NOW" , (config->anon_set_default == 1) ? "default" : "configured" , libipv6calc_anon_method_name(&config->ipv6calc_anon_set) ); return(1); }; // fallback libipv6calc_anon_set_by_name(&config->ipv6calc_anon_set, "as"); // anonymize standard ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s , "fallback anonymization method: %s mask_ipv4=%d mask_ipv6=%d mask_eui64=%d mask_mac=%d mask_autoadjust=%s" , libipv6calc_anon_method_name(&config->ipv6calc_anon_set) , config->ipv6calc_anon_set.mask_ipv4 , config->ipv6calc_anon_set.mask_ipv6 , config->ipv6calc_anon_set.mask_eui64 , config->ipv6calc_anon_set.mask_mac , (config->ipv6calc_anon_set.mask_autoadjust > 0) ? "yes" : "no" ); }; }; anon_method_name = libipv6calc_anon_method_name(&config->ipv6calc_anon_set); return(0); }; /* * ipv6calc_child_init */ static void ipv6calc_child_init(apr_pool_t *p, server_rec *s) { apr_pool_cleanup_register(p, NULL, ipv6calc_cleanup, ipv6calc_cleanup); ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(s->module_config, &ipv6calc_module); int mod_ipv6calc_APLOG_DEBUG = (config->debuglevel & IPV6CALC_DEBUG_MAP_DEBUG_TO_NOTICE) ? APLOG_NOTICE : APLOG_DEBUG; // check enabled if (config->enabled == 0) { ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "module is NOT enabled (check for 'ipv6calcEnable on')" ); return; }; ap_log_error(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, s , "ipv6calc_child_init" ); ipv6calc_support_init(s); /* check for KeepTypeAsnCC support */ if ((libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV4_REQ_DB) == 1) \ && (libipv6calc_db_wrapper_has_features(ANON_METHOD_KEEPTYPEASNCC_IPV6_REQ_DB) == 1)) { feature_kp = 1; }; if (config->ipv6calc_anon_set.method != ANON_METHOD_KEEPTYPEASNCC) { // nothing to do } else { if (feature_kp == 0) { // fallback libipv6calc_anon_set_by_name(&config->ipv6calc_anon_set, "as"); // anonymize standard }; }; return; }; /* * ipv6calc_post_read_request (ACTION CODE) */ static int ipv6calc_post_read_request(request_rec *r) { int i, hit; int pi; // proto index (0:IPv4, 1:IPv6 int p_mapped; // proto mapped (IPv6 in IPv4) int mod_ipv6calc_APLOG_DEBUG = APLOG_DEBUG; // Apache/APR related includes apr_sockaddr_t *client_addr_p; // structure defined in apr_network_io.h ipv6calc_server_config* config; // ipv6calc related ipv6calc_ipaddr ipaddr; ipv6calc_ipv4addr ipv4addr; #if APR_HAVE_IPV6 ipv6calc_ipv6addr ipv6addr; #endif // workflow related char client_addr_string_anonymized[APRMAXHOSTLEN]; char cc[APRMAXHOSTLEN]; char asn[APRMAXHOSTLEN]; char registry[APRMAXHOSTLEN]; unsigned int data_source; int result; // *** workflow // get config config = (ipv6calc_server_config*) ap_get_module_config(r->server->module_config, &ipv6calc_module); // check enabled if (config->enabled == 0) { return OK; }; if (config->debuglevel & IPV6CALC_DEBUG_MAP_DEBUG_TO_NOTICE) { mod_ipv6calc_APLOG_DEBUG = APLOG_NOTICE; }; // get client address (aka REMOTE_IP) #if (((AP_SERVER_MAJORVERSION_NUMBER == 2) && (AP_SERVER_MINORVERSION_NUMBER >= 4)) || (AP_SERVER_MAJORVERSION_NUMBER > 2)) client_addr_p = r->connection->client_addr; #else client_addr_p = r->connection->remote_addr; #endif ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP address: %s family: %d" #if (((AP_SERVER_MAJORVERSION_NUMBER == 2) && (AP_SERVER_MINORVERSION_NUMBER >= 4)) || (AP_SERVER_MAJORVERSION_NUMBER > 2)) , r->connection->client_ip #else , r->connection->remote_ip #endif , client_addr_p->family ); // convert address into ipv6calc structure libipaddr_clearall(&ipaddr); /* store address */ if (client_addr_p->family == APR_INET) { // IPv4 pi = mod_ipv6calc_pi_IPV4; p_mapped = 0; #if APR_HAVE_IPV6 } else if (client_addr_p->family == APR_INET6) { // IPv6 pi = mod_ipv6calc_pi_IPV6; // check for compat/mapped if ( client_addr_p->sa.sin6.sin6_addr.s6_addr32[0] == 0 && client_addr_p->sa.sin6.sin6_addr.s6_addr32[1] == 0 && client_addr_p->sa.sin6.sin6_addr.s6_addr32[2] == 0xffff0000 ) { pi = mod_ipv6calc_pi_IPV4; p_mapped = 1; } else { p_mapped = 0; }; #endif } else { // unsupported family, do nothing return OK; }; /* cache lookup */ if (config->cache == 1) { hit = -1; #if APR_HAVE_IPV6 #define IPV6CALC_COMPARE(entry) \ ( pi == mod_ipv6calc_pi_IPV4 \ && ( \ (p_mapped == 0 && ipv6calc_cache_lri_ipv4_token[entry].s_addr == client_addr_p->sa.sin.sin_addr.s_addr) \ || (p_mapped == 1 && ipv6calc_cache_lri_ipv4_token[entry].s_addr == client_addr_p->sa.sin6.sin6_addr.s6_addr32[3]) \ ) \ ) \ || ( pi == mod_ipv6calc_pi_IPV6 \ && ipv6calc_cache_lri_ipv6_token[entry].s6_addr32[3] == client_addr_p->sa.sin6.sin6_addr.s6_addr32[3] \ && ipv6calc_cache_lri_ipv6_token[entry].s6_addr32[2] == client_addr_p->sa.sin6.sin6_addr.s6_addr32[2] \ && ipv6calc_cache_lri_ipv6_token[entry].s6_addr32[1] == client_addr_p->sa.sin6.sin6_addr.s6_addr32[1] \ && ipv6calc_cache_lri_ipv6_token[entry].s6_addr32[0] == client_addr_p->sa.sin6.sin6_addr.s6_addr32[0] \ ) #else #define IPV6CALC_COMPARE(entry) \ ( pi == mod_ipv6calc_pi_IPV4 \ && ipv6calc_cache_lri_ipv4_token[entry].s_addr == client_addr_p->sa.sin.sin_addr.s_addr \ ) #endif if (ipv6calc_cache_lri_max[pi] > 0) { ipv6calc_cache_lri_checked[pi]++; if (config->debuglevel & IPV6CALC_DEBUG_CACHE_LOOKUP) { if (pi == mod_ipv6calc_pi_IPV4) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "IPv4 address to lookup in cache: %08x" , (p_mapped == 0) ? client_addr_p->sa.sin.sin_addr.s_addr : client_addr_p->sa.sin6.sin6_addr.s6_addr32[3] ); } else if (pi == mod_ipv6calc_pi_IPV6) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "IPv6 address to lookup in cache: %08x %08x %08x %08x" , client_addr_p->sa.sin6.sin6_addr.s6_addr32[0] , client_addr_p->sa.sin6.sin6_addr.s6_addr32[1] , client_addr_p->sa.sin6.sin6_addr.s6_addr32[2] , client_addr_p->sa.sin6.sin6_addr.s6_addr32[3] ); }; }; if (config->debuglevel & IPV6CALC_DEBUG_CACHE_ENTRIES) { for (i = 0; i < ipv6calc_cache_lri_max[pi]; i++) { if (pi == mod_ipv6calc_pi_IPV4) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "IPv4 address in cache %3d: %08x" , i , ipv6calc_cache_lri_ipv4_token[i].s_addr ); } else if (pi == mod_ipv6calc_pi_IPV6) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "IPv6 address in cache %3d: %08x %08x %08x %08x" , i , ipv6calc_cache_lri_ipv6_token[i].s6_addr32[0] , ipv6calc_cache_lri_ipv6_token[i].s6_addr32[1] , ipv6calc_cache_lri_ipv6_token[i].s6_addr32[2] , ipv6calc_cache_lri_ipv6_token[i].s6_addr32[3] ); }; }; }; if (config->debuglevel & IPV6CALC_DEBUG_CACHE_LOOKUP) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "check for IPv%s address in cache on last inserted entry: %d" , (pi == 0) ? "4" : "6" , ipv6calc_cache_lri_last[pi] - 1 ); }; /* check last seen one first */ if (IPV6CALC_COMPARE(ipv6calc_cache_lri_last[pi] - 1)) { ipv6calc_cache_lri_statistics[pi][0]++; hit = ipv6calc_cache_lri_last[pi] - 1; }; /* run backwards to first entry */ if ((hit < 0) && (ipv6calc_cache_lri_last[pi] > 1)) { if (config->debuglevel & IPV6CALC_DEBUG_CACHE_LOOKUP) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "check for IPv%s address in cache backwards to first entry" , (pi == 0) ? "4" : "6" ); }; for (i = ipv6calc_cache_lri_last[pi] - 1; i > 0; i--) { if (IPV6CALC_COMPARE(i - 1)) { ipv6calc_cache_lri_statistics[pi][ipv6calc_cache_lri_last[pi] - i]++; hit = i - 1; break; }; }; }; /* round robin */ if ((hit < 0) && (ipv6calc_cache_lri_last[pi] < ipv6calc_cache_lri_max[pi])) { if (config->debuglevel & IPV6CALC_DEBUG_CACHE_LOOKUP) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "check for IPv%s address in cache round robin from last entry" , (pi == 0) ? "4" : "6" ); }; for (i = ipv6calc_cache_lri_max[pi]; i > ipv6calc_cache_lri_last[pi]; i--) { if (IPV6CALC_COMPARE(i - 1)) { ipv6calc_cache_lri_statistics[pi][ipv6calc_cache_lri_max[pi] - i + ipv6calc_cache_lri_last[pi]]++; hit = i - 1; break; }; }; }; if (hit >= 0) { ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "retrieve data of IPv%s address from cache position: %d" , (pi == 0) ? "4" : "6" , hit ); if (config->action_countrycode == 1) { ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP country code (from cache): %s" , ipv6calc_cache_lri_value_cc[pi][hit] ); apr_table_set(r->subprocess_env , "IPV6CALC_CLIENT_COUNTRYCODE" , ipv6calc_cache_lri_value_cc[pi][hit] ); }; if (config->action_asn == 1) { ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP ASN (from cache): %s" , ipv6calc_cache_lri_value_asn[pi][hit] ); apr_table_set(r->subprocess_env , "IPV6CALC_CLIENT_ASN" , ipv6calc_cache_lri_value_asn[pi][hit] ); }; if (config->action_registry == 1) { ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP Registry (from cache): %s" , ipv6calc_cache_lri_value_registry[pi][hit] ); apr_table_set(r->subprocess_env , "IPV6CALC_CLIENT_REGISTRY" , ipv6calc_cache_lri_value_registry[pi][hit] ); }; if (config->action_anonymize == 1) { ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP address anonymized (from cache): %s" , ipv6calc_cache_lri_value_anon[pi][hit] ); apr_table_set(r->subprocess_env , "IPV6CALC_CLIENT_IP_ANON" , ipv6calc_cache_lri_value_anon[pi][hit] ); apr_table_set(r->subprocess_env, "IPV6CALC_ANON_METHOD", anon_method_name); }; return OK; }; // print cache statistics if ( config->cache_statistics_interval > 0 && ((ipv6calc_cache_lri_checked[pi] % config->cache_statistics_interval) == 0) ) { for (i = 0; i < config->cache_limit; i++) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "cache hit statistics for IPv%s: distance %3d: %lu / %lu (%2lu%%)" , (pi == 0) ? "4" : "6" , i , ipv6calc_cache_lri_statistics[pi][i] , ipv6calc_cache_lri_checked[pi] , (ipv6calc_cache_lri_statistics[pi][i] * 100) / ipv6calc_cache_lri_checked[pi] ); }; }; }; }; /* post cache lookup */ if (pi == mod_ipv6calc_pi_IPV4) { // IPv4 ipv4addr_clearall(&ipv4addr); if (p_mapped == 0) { ipv4addr.in_addr = client_addr_p->sa.sin.sin_addr; } else { ipv4addr.in_addr.s_addr = client_addr_p->sa.sin6.sin6_addr.s6_addr32[3]; }; ipv4addr_settype(&ipv4addr, 1); ipv4addr.flag_valid = 1; CONVERT_IPV4ADDRP_IPADDR(&ipv4addr, ipaddr); #if APR_HAVE_IPV6 } else if (pi == mod_ipv6calc_pi_IPV6) { // IPv6 ipv6addr_clearall(&ipv6addr); ipv6addr.in6_addr = client_addr_p->sa.sin6.sin6_addr; ipv6addr_settype(&ipv6addr, 1); ipv6addr.flag_valid = 1; CONVERT_IPV6ADDRP_IPADDR(&ipv6addr, ipaddr); #endif }; /* store address in cache */ if (config->cache == 1) { if (ipv6calc_cache_lri_max[pi] < config->cache_limit) { ipv6calc_cache_lri_last[pi]++; ipv6calc_cache_lri_max[pi]++; } else { if (ipv6calc_cache_lri_last[pi] == config->cache_limit) { ipv6calc_cache_lri_last[pi] = 1; } else { ipv6calc_cache_lri_last[pi]++; }; }; if (config->debuglevel & IPV6CALC_DEBUG_CACHE_STORE) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "store IPv%s address in cache on position: %d" , (pi == 0) ? "4" : "6" , ipv6calc_cache_lri_last[pi] - 1 ); }; if (pi == mod_ipv6calc_pi_IPV4) { // store token if (p_mapped == 0) { ipv6calc_cache_lri_ipv4_token[ipv6calc_cache_lri_last[pi] - 1] = client_addr_p->sa.sin.sin_addr; } else { ipv6calc_cache_lri_ipv4_token[ipv6calc_cache_lri_last[pi] - 1].s_addr = client_addr_p->sa.sin6.sin6_addr.s6_addr32[3]; }; #if APR_HAVE_IPV6 } else if (pi == mod_ipv6calc_pi_IPV6) { // store token ipv6calc_cache_lri_ipv6_token[ipv6calc_cache_lri_last[pi] - 1] = client_addr_p->sa.sin6.sin6_addr; #endif }; }; // retrieve data int result_cc = -1; int result_registry = -1; const char *data_source_string = "-"; uint32_t asn_num = 0; if ( (config->action_countrycode == 1) || (config->action_asn == 1) || (config->action_registry == 1) ) { int retrieve_cc = 0; int retrieve_asn = 0; int retrieve_registry = 0; if ((pi == mod_ipv6calc_pi_IPV6) && (ipv6addr.typeinfo & IPV6_ADDR_HAS_PUBLIC_IPV4)) { // extract IPv4 address and retrieve country code of that particular address result = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (result == 0) { if (ipv4addr.typeinfo & IPV4_ADDR_GLOBAL) { CONVERT_IPV4ADDRP_IPADDR(&ipv4addr, ipaddr); // retrieve country code only for global addresses retrieve_cc = 1; // retrieve ASN only for global addresses retrieve_asn = 1; }; retrieve_registry = 1; }; } else if ( ((pi == mod_ipv6calc_pi_IPV4) && (ipv4addr.typeinfo & IPV4_ADDR_GLOBAL)) || ((pi == mod_ipv6calc_pi_IPV6) && (ipv6addr.typeinfo & IPV6_ADDR_GLOBAL)) ) { // retrieve country code only for global addresses retrieve_cc = 1; // retrieve ASN only for global addresses retrieve_asn = 1; retrieve_registry = 1; } else { retrieve_registry = 1; }; if (config->debuglevel & IPV6CALC_DEBUG_RETRIEVE_DATA) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "potential data retrieve_cc=%d retrieve_asn=%d retrieve_registry=%d" , retrieve_cc , retrieve_asn , retrieve_registry ); }; // set country code of IP in environment if (config->action_countrycode == 1) { if (retrieve_cc != 0) { result_cc = libipv6calc_db_wrapper_country_code_by_addr(cc, sizeof(cc), &ipaddr, &data_source); if ((result_cc == 0) && (strlen(cc) > 0)) { data_source_string = libipv6calc_db_wrapper_get_data_source_name_by_number(data_source); } else { snprintf(cc, sizeof(cc), "%s", "-"); }; ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP address country code: %s (%s)" , cc , data_source_string ); } else { snprintf(cc, sizeof(cc), "%s", "-"); }; apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_COUNTRYCODE", cc); if (config->cache == 1) { // store value snprintf(ipv6calc_cache_lri_value_cc[pi][ipv6calc_cache_lri_last[pi] - 1], sizeof(ipv6calc_cache_lri_value_cc[pi][ipv6calc_cache_lri_last[pi] - 1]), "%s", cc); if (config->debuglevel & IPV6CALC_DEBUG_CACHE_STORE) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "store CountryCode of IPv%s address in cache on position: %d" , (pi == 0) ? "4" : "6" , ipv6calc_cache_lri_last[pi] - 1 ); }; }; }; // set ASN of IP in environment if (config->action_asn == 1) { if (retrieve_asn != 0) { asn_num = libipv6calc_db_wrapper_as_num32_by_addr(&ipaddr); snprintf(asn, sizeof(asn), "%u", asn_num); ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP address ASN: %s" , asn ); } else { snprintf(asn, sizeof(asn), "-"); }; apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_ASN", asn); if (config->cache == 1) { // store value snprintf(ipv6calc_cache_lri_value_asn[pi][ipv6calc_cache_lri_last[pi] - 1], sizeof(ipv6calc_cache_lri_value_asn[pi][ipv6calc_cache_lri_last[pi] - 1]), "%s", asn); if (config->debuglevel & IPV6CALC_DEBUG_CACHE_STORE) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "store ASN of IPv%s address in cache on position: %d" , (pi == 0) ? "4" : "6" , ipv6calc_cache_lri_last[pi] - 1 ); }; }; }; // set Registry of IP in environment if (config->action_registry == 1) { if (retrieve_registry != 0) { result_registry = libipv6calc_db_wrapper_registry_string_by_ipaddr(&ipaddr, registry, sizeof(registry)); if (((result_registry == 0) || (result_registry == 2)) && (strlen(registry) > 0)) { // everything ok } else { snprintf(registry, sizeof(registry), "%s", "-"); }; ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP address registry: %s" , registry ); } else { snprintf(registry, sizeof(registry), "%s", "-"); }; apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_REGISTRY", registry); if (config->cache == 1) { // store value snprintf(ipv6calc_cache_lri_value_registry[pi][ipv6calc_cache_lri_last[pi] - 1], sizeof(ipv6calc_cache_lri_value_asn[pi][ipv6calc_cache_lri_last[pi] - 1]), "%s", registry); if (config->debuglevel & IPV6CALC_DEBUG_CACHE_STORE) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "store Registry of IPv%s address in cache on position: %d" , (pi == 0) ? "4" : "6" , ipv6calc_cache_lri_last[pi] - 1 ); }; }; }; }; // set special value if not enabled if (config->action_countrycode == 0) { apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_COUNTRYCODE", "disabled"); }; if (config->action_asn == 0) { apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_ASN", "disabled"); }; if (config->action_registry == 0) { apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_REGISTRY", "disabled"); }; // set anonymized IP address in environment if (config->action_anonymize == 1) { if (pi == mod_ipv6calc_pi_IPV4) { libipv4addr_anonymize(&ipv4addr, config->ipv6calc_anon_set.mask_ipv4, config->ipv6calc_anon_set.method); CONVERT_IPV4ADDRP_IPADDR(&ipv4addr, ipaddr); #if APR_HAVE_IPV6 } else if (pi == mod_ipv6calc_pi_IPV6) { if ((ipv6addr.typeinfo & IPV6_ADDR_MAPPED) == IPV6_ADDR_MAPPED) { libipv4addr_anonymize(&ipv4addr, config->ipv6calc_anon_set.mask_ipv4, config->ipv6calc_anon_set.method); CONVERT_IPV4ADDRP_IPADDR(&ipv4addr, ipaddr); } else { libipv6addr_anonymize(&ipv6addr, &config->ipv6calc_anon_set); CONVERT_IPV6ADDRP_IPADDR(&ipv6addr, ipaddr); }; #endif }; // get address string result = libipaddr_ipaddrstruct_to_string(&ipaddr, client_addr_string_anonymized, sizeof(client_addr_string_anonymized), 0); char *result_anon_p; if (result == 0) { ap_log_rerror(APLOG_MARK, mod_ipv6calc_APLOG_DEBUG, 0, r , "client IP address anonymized: %s" , client_addr_string_anonymized ); apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_IP_ANON", client_addr_string_anonymized); result_anon_p = client_addr_string_anonymized; apr_table_set(r->subprocess_env, "IPV6CALC_ANON_METHOD", anon_method_name); } else { #if (((AP_SERVER_MAJORVERSION_NUMBER == 2) && (AP_SERVER_MINORVERSION_NUMBER >= 4)) || (AP_SERVER_MAJORVERSION_NUMBER > 2)) apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_IP_ANON", r->connection->client_ip); result_anon_p = r->connection->client_ip; #else apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_IP_ANON", r->connection->remote_ip); result_anon_p = r->connection->remote_ip; #endif }; if (config->cache == 1) { // store value snprintf(ipv6calc_cache_lri_value_anon[pi][ipv6calc_cache_lri_last[pi] - 1], sizeof(ipv6calc_cache_lri_value_anon[pi][ipv6calc_cache_lri_last[pi] - 1]), "%s", result_anon_p); if (config->debuglevel & IPV6CALC_DEBUG_CACHE_STORE) { ap_log_rerror(APLOG_MARK, APLOG_NOTICE, 0, r , "store anonymized IPv%s address in cache on position: %d" , (pi == 0) ? "4" : "6" , ipv6calc_cache_lri_last[pi] - 1 ); }; }; } else { apr_table_set(r->subprocess_env, "IPV6CALC_CLIENT_IP_ANON", "disabled"); apr_table_set(r->subprocess_env, "IPV6CALC_ANON_METHOD", "disabled"); }; return OK; }; /*************************** * Module config option handlers ***************************/ /* * set_ipv6calc_enable */ static const char *set_ipv6calc_enable(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->enabled = arg; return NULL; }; /* * set_ipv6calc_no_fallback */ static const char *set_ipv6calc_no_fallback(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->no_fallback = arg; return NULL; }; /* * set_ipv6calc_cache */ static const char *set_ipv6calc_cache(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->cache = arg; return NULL; }; /* * set_ipv6calc_cache_limit */ static const char *set_ipv6calc_cache_limit(cmd_parms *cmd, void *dummy, const char *value, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; if (atoi(value) < IPV6CALC_CACHE_LRI_LIMIT_MIN) { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server , "given cache limit below minimum (%d), skip: %s" , IPV6CALC_CACHE_LRI_LIMIT_MIN , value ); return NULL; }; if (atoi(value) > IPV6CALC_CACHE_LRI_SIZE) { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server , "given cache limit below maximum (%d), skip: %s" , IPV6CALC_CACHE_LRI_SIZE , value ); return NULL; }; ap_log_error(APLOG_MARK, APLOG_INFO, 0, cmd->server , "set cache limit: %s" , value ); config->cache_limit = atoi(value); return NULL; }; /* * set_ipv6calc_cache_statistics_interval */ static const char *set_ipv6calc_cache_statistics_interval(cmd_parms *cmd, void *dummy, const char *value, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; if (atoi(value) < 0) { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server , "given cache statistics interval below minimum (%d), skip: %s" , 0 , value ); return NULL; }; ap_log_error(APLOG_MARK, APLOG_INFO, 0, cmd->server , "set cache statistics interval: %s" , value ); config->cache_statistics_interval = atoi(value); return NULL; }; /* * set_ipv6calc_debuglevel */ static const char *set_ipv6calc_debuglevel(cmd_parms *cmd, void *dummy, const char *value, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; long int debuglevel = strtol(value, NULL, 0); if (debuglevel < -1 || debuglevel > 0xffff) { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server , "given debug level is out-of-range (-1|0-65535), skip: %s" , value ); } else { if (debuglevel == -1) { debuglevel = 0xffff; }; ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, cmd->server , "set module debug level: %s" , value ); }; config->debuglevel = (int) debuglevel; return NULL; }; /* * set_ipv6calc_countrycode */ static const char *set_ipv6calc_action_countrycode(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->action_countrycode = arg; return NULL; }; /* * set_ipv6calc_asn */ static const char *set_ipv6calc_action_asn(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->action_asn = arg; return NULL; }; /* * set_ipv6calc_registry */ static const char *set_ipv6calc_action_registry(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->action_registry = arg; return NULL; }; /* * set_ipv6calc_anonymize */ static const char *set_ipv6calc_action_anonymize(cmd_parms *cmd, void *dummy, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; config->action_anonymize = arg; return NULL; }; /* * set_ipv6calc_option * set generic ipv6calc option */ static const char *set_ipv6calc_option(cmd_parms *cmd, void *dummy, const char *name, const char *value, int arg) { ipv6calc_server_config *config = (ipv6calc_server_config*) ap_get_module_config(cmd->server->module_config, &ipv6calc_module); if (!config) { return NULL; }; ap_log_error(APLOG_MARK, APLOG_INFO, 0, cmd->server , "store ipv6calc config option for module initialization: %s=%s" , name , value ); if (ipv6calc_option_list_entries < mod_ipv6calc_options_max) { snprintf(ipv6calc_option_list[ipv6calc_option_list_entries].name, sizeof(ipv6calc_option_list[0].name), "%s", name); snprintf(ipv6calc_option_list[ipv6calc_option_list_entries].value, sizeof(ipv6calc_option_list[0].value), "%s", value); ipv6calc_option_list_entries++; } else { return "Too many ipv6calc options (limit reached)"; }; return NULL; }; /* * ipv6calc_create_svr_conf */ static void *ipv6calc_create_svr_conf(apr_pool_t* pool, server_rec* svr) { ipv6calc_server_config* svr_cfg = apr_pcalloc(pool, sizeof(ipv6calc_server_config)); svr_cfg->enabled = 0; svr_cfg->no_fallback = 0; // cache settings svr_cfg->cache = 1; // default: on svr_cfg->cache_limit = IPV6CALC_CACHE_LRI_LIMIT_MIN; /* optimum ?? */ svr_cfg->cache_statistics_interval = 0; // disabled svr_cfg->debuglevel = 0; svr_cfg->action_anonymize = 0; svr_cfg->action_countrycode = 0; libipv6calc_anon_set_by_name(&svr_cfg->ipv6calc_anon_set, "as"); // anonymize standard svr_cfg->anon_set_default = 1; return svr_cfg ; } /* * ipv6calc_register_hooks */ static void ipv6calc_register_hooks(apr_pool_t *p) { ap_hook_post_config(ipv6calc_post_config, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_child_init(ipv6calc_child_init, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_post_read_request(ipv6calc_post_read_request, NULL, NULL, APR_HOOK_MIDDLE); }; /* * mod_ipv6calc API hooks */ #if (((AP_SERVER_MAJORVERSION_NUMBER == 2) && (AP_SERVER_MINORVERSION_NUMBER >= 4)) || (AP_SERVER_MAJORVERSION_NUMBER > 2)) AP_DECLARE_MODULE(ipv6calc) = { #else module AP_MODULE_DECLARE_DATA ipv6calc_module = { #endif STANDARD20_MODULE_STUFF, NULL, /* create per-dir config structures */ NULL, /* merge per-dir config structures */ ipv6calc_create_svr_conf, /* create per-server config structures */ NULL, /* merge per-server config structures */ ipv6calc_cmds, /* table of config file commands */ ipv6calc_register_hooks /* register hooks */ }; /* * ipv6calc copyright (to satisfy dynamic library load) */ void printcopyright(void) { fprintf(stderr, "%s\n", PROGRAM_COPYRIGHT); }; /* * ipv6calc version (to satisfy dynamic library load) */ void printversion(void) { char resultstring[NI_MAXHOST] = ""; libipv6calc_db_wrapper_features(resultstring, sizeof(resultstring)); fprintf(stderr, "%s: version %s", PROGRAM_NAME, PACKAGE_VERSION); fprintf(stderr, " %s", resultstring); if (feature_zeroize == 1) { fprintf(stderr, " ANON_ZEROISE"); }; if (feature_anon == 1) { fprintf(stderr, " ANON_ANONYMIZE"); }; if (feature_kp == 1) { fprintf(stderr, " ANON_KEEP-TYPE-ASN-CC"); }; fprintf(stderr, "\n"); }; ipv6calc-1.0.0/mod_ipv6calc/test_mod_ipv6calc.sh000077500000000000000000000235171312366535500215520ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc # File : test_mod_ipv6calc.sh # Version : $Id: 2fd57e46c16d2e6bda3a19164d69682492522104 $ # Copyright : 2015-2017 by Peter Bieringer # # Test patterns for ipv6calc conversions verbose=0 for BIN_PS in /bin/ps /usr/bin/ps; do if [ -x "$BIN_PS" ]; then break fi done create_apache_root_and_start() { echo "INFO : create temporary base directory" dir_base=$(mktemp -d /tmp/mod_ipv6calc.XXXXX) if [ -z "$dir_base" ]; then echo "ERROR : can't create temporary directory" return 1 fi echo "INFO : temporary base directory created: $dir_base" for dir in $dir_base/conf $dir_base/var $dir_base/modules $dir_base/logs $dir_base/conf.d $dir_base/conf.modules.d; do echo "INFO : create directory: $dir" mkdir $dir if [ $? -ne 0 ]; then echo "ERROR : can't create directory: $dir" return 1 fi echo "INFO : directory created: $dir" done for file in /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic; do echo "INFO : copy file: $file -> $dir_base/conf" cp -p $file $dir_base/conf/ if [ $? -ne 0 ]; then echo "ERROR : can't copy file: $file" return 1 fi echo "INFO : file copied: $file -> $dir_base/conf" done echo "INFO : define listen port 8080 in $dir_base/conf/httpd.conf" perl -pi -e 's/^Listen/Listen 8080/g' $dir_base/conf/httpd.conf if [ $? -ne 0 ]; then echo "ERROR : can't define listen port: $dir_base/conf/httpd.conf" return 1 fi echo "INFO : change log level to debug $dir_base/conf/httpd.conf" perl -pi -e 's/^LogLevel .*/LogLevel debug/g' $dir_base/conf/httpd.conf if [ $? -ne 0 ]; then echo "ERROR : can't define LogLevel: $dir_base/conf/httpd.conf" return 1 fi echo "INFO : specify pid file in $dir_base/conf/httpd.conf" echo "PidFile $dir_base/var/httpd.pid" >>$dir_base/conf/httpd.conf if [ $? -ne 0 ]; then echo "ERROR : can't specify pid file: $dir_base/conf/httpd.conf" return 1 fi perl -pi -e 's/^ServerRoot.*$//g' $dir_base/conf/httpd.conf for file in 00-base.conf 00-mpm.conf; do cp /etc/httpd/conf.modules.d/$file $dir_base/conf.modules.d/ done # disable auth modules perl -pi -e 's/^LoadModule authn.*$//g' $dir_base/conf.modules.d/00-base.conf perl -pi -e 's/^LoadModule auth_digest_module.*$//g' $dir_base/conf.modules.d/00-base.conf cp /etc/httpd/modules/* $dir_base/modules/ # copy mod_ipv6calc cp .libs/mod_ipv6calc.so $dir_base/modules/ cp ipv6calc.conf $dir_base/conf.d/ ## adjust ipv6calc.conf settings # load module perl -pi -e 's/#(LoadModule.*)/$1/g' $dir_base/conf.d/ipv6calc.conf # enable module perl -pi -e 's/#(ipv6calcEnable).*/$1 on/g' $dir_base/conf.d/ipv6calc.conf # enable anonymized access logging perl -pi -e 's/#(CustomLog.*)/$1/g' $dir_base/conf.d/ipv6calc.conf if [ "$debug_module" = "1" ]; then # enable module debugging perl -pi -e 's/#(ipv6calcDebuglevel.*-1)/$1/g' $dir_base/conf.d/ipv6calc.conf fi if [ "$debug_library" = "1" ]; then # enable library debugging perl -pi -e 's/#(ipv6calcOption\s+debug).*/$1 -1/g' $dir_base/conf.d/ipv6calc.conf fi ## disable databases by option [ "$disable_geoip" = "1" ] && perl -pi -e 's/#(ipv6calcOption\s+db-geoip-disable\s+yes)$/$1/g' $dir_base/conf.d/ipv6calc.conf [ "$disable_ip2location" = "1" ] && perl -pi -e 's/#(ipv6calcOption\s+db-ip2location-disable\s+yes)$/$1/g' $dir_base/conf.d/ipv6calc.conf [ "$disable_dbip" = "1" ] && perl -pi -e 's/#(ipv6calcOption\s+db-dbip-disable\s+yes)$/$1/g' $dir_base/conf.d/ipv6calc.conf [ "$disable_external" = "1" ] && perl -pi -e 's/#(ipv6calcOption\s+db-external-disable\s+yes)$/$1/g' $dir_base/conf.d/ipv6calc.conf [ "$action_asn" = "0" ] && perl -pi -e 's/(ipv6calcActionAsn\s+).*$/$1 off/g' $dir_base/conf.d/ipv6calc.conf [ "$action_cc" = "0" ] && perl -pi -e 's/(ipv6calcActionCountrycode\s+).*$/$1 off/g' $dir_base/conf.d/ipv6calc.conf [ "$action_reg" = "0" ] && perl -pi -e 's/(ipv6calcActionRegistry\s+).*$/$1 off/g' $dir_base/conf.d/ipv6calc.conf [ "$action_anon" = "0" ] && perl -pi -e 's/(ipv6calcActionAnonymize\s+).*$/$1 off/g' $dir_base/conf.d/ipv6calc.conf echo "INFO : start httpd with ServerRoot $dir_base" /usr/sbin/httpd -X -e info -d $dir_base & if [ $? -eq 0 ]; then httpd_pid=$! echo "INFO : httpd started in background with pid=$httpd_pid" sleep 1 if $BIN_PS -p $httpd_pid --no-headers >/dev/null 2>&1; then echo "INFO : httpd started in background (wait 10 seconds for pid file now)" else echo "ERROR : httpd did not start in background (pid missing: $httpd_pid)" return 1 fi fi limit=10 i=0 while [ ! -f $dir_base/var/httpd.pid ]; do i=$[ $i + 1 ] if [ $i -gt 10 ]; then break fi sleep 1 done pid="$(cat "$dir_base/var/httpd.pid")" if [ -z "$pid" ]; then echo "ERROR : httpd PID file empty: $dir_base/var/httpd.pid" return 1 fi if ! $BIN_PS -p $pid --no-headers >/dev/null 2>&1; then echo "ERROR : httpd started with PID but no longer running: $pid" return 1 fi echo "INFO : httpd started with PID: $pid" if [ -f $dir_base/logs/error_log ]; then grep ipv6calc $dir_base/logs/error_log lines_error_log=$(cat "$dir_base/logs/error_log" | wc -l) fi if [ "$debug_lsof" = "1" ]; then echo "INFO : list of open files of pid: $pid" lsof -p $pid fi if [ "$debug_config" = "1" ]; then echo "INFO : list effective module config" grep -v "^\s*#" $dir_base/conf.d/ipv6calc.conf | grep -v "^\s*$" fi echo "NOTICE: base directory is : $dir_base" echo "NOTICE: ipv6calc module config: $dir_base/conf.d/ipv6calc.conf" echo "NOTICE: error log : $dir_base/logs/error_log" echo "NOTICE: access log : $dir_base/logs/access_log" echo "NOTICE: anonymized access log : $dir_base/logs/access_anon_log" } stop_apache() { if [ -z "$pid" -a -n "$dir_base" -a -f "$dir_base/var/httpd.pid" ]; then pid="$(cat "$dir_base/var/httpd.pid")" fi if [ -n "$pid" ]; then echo "NOTICE: kill started httpd with PID: $pid" kill $pid sleep 1 if $BIN_PS -p $pid --no-headers; then echo "WARN : process still running (kill now with -9)" kill -9 $pid fi else if ! $BIN_PS u -C httpd --no-headers | grep "/tmp/mod_ipv6calc"; then # nothing to do echo "INFO : no related httpd process found to kill" return 0 fi if [ ! -x /usr/bin/killall ]; then echo "ERROR : no httpd PID given, but no 'killall' available (provided by RPM: psmisc)" echo "ERROR : you have to kill process manually" else echo "WARN : no httpd PID given, use killall" /usr/bin/killall httpd fi sleep 1 if $BIN_PS u -C httpd --no-headers | grep "/tmp/mod_ipv6calc"; then echo "WARN : process still running (kill now with -9)" /usr/bin/killall -9 httpd fi fi } exec_request() { dst="$1" if [ -n "$repeat" ]; then max=$[ $repeat + 1 ] else max=1 fi count=0 while [ $count -lt $max ]; do echo "NOTICE: test: $1" # curl-7.29.0-19.el7.x86_64 is broken, -g required curl -g -s "http://$1:8080/" >/dev/null if [ $? -ne 0 ]; then echo "ERROR : curl request to $1:8080 failed" exit 1 fi echo "INFO : access log entry" tail -1 $dir_base/logs/access_log if [ -f "$dir_base/logs/access_anon_log" ]; then echo "INFO : anonymized access log entry" tail -1 $dir_base/logs/access_anon_log else echo "ERROR : anonymized access log missing" exit 1 fi echo "INFO : error log entry" tail -n +$[ $lines_error_log + 1 ] "$dir_base/logs/error_log" | grep "ipv6calc" # update number of lines lines_error_log=$(cat "$dir_base/logs/error_log" | wc -l) count=$[ $count + 1 ] done || return 1 return 0 } run_test_requests() { echo "NOTICE: run test requests" if [ -n "$address" ]; then if echo "$address" | grep -q ":"; then # IPv6 exec_request "[$address]" else # IPv4 exec_request "$address" fi else for ipv4 in $(/sbin/ip -o addr show |grep -w inet | grep -w global | grep -vw deprecated | awk '{ print $4 }' | awk -F/ '{ print $1 }'); do exec_request "$ipv4" || return 1 done # retrieve local IPv6 address for ipv6 in $(/sbin/ip -o addr show |grep -w inet6 | grep -w global | grep -vw deprecated | awk '{ print $4 }' | awk -F/ '{ print $1 }'); do exec_request "[$ipv6]" || return 1 done fi sleep 2 return 0 } #### Help help() { cat <] [-S|-K|-W] -S start -K stop (kill) -W run workflow -m enable debug module -l enable debug library -f list open files after start -c show effective module config options -g disable GeoIP -i disable IP2Location -d disable DBIP.com -e disable external databases -A disable action ASN -C disable action CountryCode -R disable action Registry -N disable action Anonymization -b disable autoretrievement of local IP, use given one instead -r repeat (1x) END } #### Options while getopts "rACRNca:fSKWb:mlgideh\?" opt; do case $opt in b) if [ -d "$OPTARG" ]; then dir_base=$OPTARG else echo "ERROR : given base directory doesn't exist: $dir_base" fi ;; m) debug_module=1 ;; l) debug_library=1 ;; f) debug_lsof=1 ;; c) debug_config=1 ;; g) disable_geoip=1 ;; i) disable_ip2location=1 ;; d) disable_dbip=1 ;; e) disable_external=1 ;; S) action="start" ;; K) action="kill" ;; a) address="$OPTARG" ;; W) action="workflow" ;; A) action_asn="0" ;; C) action_cc="0" ;; R) action_reg="0" ;; N) action_anon="0" ;; r) repeat=1 ;; h|\?) help exit 1 ;; *) echo "ERROR : unrecognized option: $opt" ;; esac done case $action in workflow) create_apache_root_and_start || exit 1 run_test_requests || exit 1 stop_apache || exit 1 ;; kill) stop_apache || exit 1 ;; start) create_apache_root_and_start || exit 1 ;; *) help exit 1 ;; esac ipv6calc-1.0.0/samplecode/000077500000000000000000000000001312366535500153445ustar00rootroot00000000000000ipv6calc-1.0.0/samplecode/addrconf.c000066400000000000000000001343251312366535500173000ustar00rootroot00000000000000/* $USAGI: addrconf.c,v 1.13 2001/01/18 18:42:25 yoshfuji Exp $ */ /* * IPv6 Address [auto]configuration * Linux INET6 implementation * * Authors: * Pedro Roque * * $**: addrconf.c,v 1.48.2.2 1999/12/14 10:32:53 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ /* * Changes: * * Janos Farkas : delete timer on ifdown * * Andi Kleen : kill doube kfree on module * unload. */ #include #include #include #include #include #include #include #include #ifdef CONFIG_IPV6_NODEINFO #include #endif #include #include #include #include #include #ifdef CONFIG_SYSCTL #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include /* Set to 3 to get tracing... */ #ifdef CONFIG_IPV6_ACONF_DEBUG #define ACONF_DEBUG 3 #else #define ACONF_DEBUG 2 #endif #if ACONF_DEBUG >= 3 #define ADBG(x) printk x #else #define ADBG(x) #endif /* /proc/net/snmp6, /proc/net/dev_snmp6/ things */ #ifdef CONFIG_PROC_FS extern struct proc_dir_entry *proc_net_devsnmp6; extern int afinet6_read_devsnmp(char *buffer, char **start, off_t offset, int length, int *eof, void *data); #endif #if HZ == 100 #define timeticks(_h) (_h) #else #define timeticks(_h) ((unsigned long)(((unsigned long long)(_h))*100/HZ)) #endif #ifdef CONFIG_SYSCTL static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf *p); static void addrconf_sysctl_unregister(struct ipv6_devconf *p); #endif /* * Configured unicast address list */ static struct inet6_ifaddr *inet6_addr_lst[IN6_ADDR_HSIZE]; /* * AF_INET6 device list */ static struct inet6_dev *inet6_dev_lst[IN6_ADDR_HSIZE]; static atomic_t addr_list_lock = ATOMIC_INIT(0); void addrconf_verify(unsigned long); static struct timer_list addr_chk_timer = { NULL, NULL, 0, 0, addrconf_verify }; /* These locks protect only against address deletions, but not against address adds or status updates. It is OK. The only race is when address is selected, which becomes invalid immediately after selection. It is harmless, because this address could be already invalid several usecs ago. Its important, that: 1. The result of inet6_add_addr() is used only inside lock or from bh_atomic context. 2. inet6_get_lladdr() is used only from bh protected context. 3. The result of ipv6_chk_addr() is not used outside of bh protected context. */ static __inline__ void addrconf_lock(void) { atomic_inc(&addr_list_lock); synchronize_bh(); } static __inline__ void addrconf_unlock(void) { atomic_dec(&addr_list_lock); } static int addrconf_ifdown(struct device *dev, int how); static void addrconf_dad_start(struct inet6_ifaddr *ifp); static void addrconf_dad_timer(unsigned long data); static void addrconf_dad_completed(struct inet6_ifaddr *ifp); static void addrconf_rs_timer(unsigned long data); static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa); struct ipv6_devconf ipv6_devconf = { 0, /* forwarding */ IPV6_DEFAULT_HOPLIMIT, /* hop limit */ IPV6_MIN_MTU, /* mtu */ 1, /* accept RAs */ 1, /* accept redirects */ 1, /* autoconfiguration */ 1, /* dad transmits */ MAX_RTR_SOLICITATIONS, /* router solicits */ RTR_SOLICITATION_INTERVAL, /* rtr solicit interval */ MAX_RTR_SOLICITATION_DELAY, /* rtr solicit delay */ #ifdef CONFIG_IPV6_NODEINFO 1, /* accept NIs */ #endif }; static struct ipv6_devconf ipv6_devconf_dflt = { 0, /* forwarding */ IPV6_DEFAULT_HOPLIMIT, /* hop limit */ IPV6_MIN_MTU, /* mtu */ 1, /* accept RAs */ 1, /* accept redirects */ 1, /* autoconfiguration */ 1, /* dad transmits */ MAX_RTR_SOLICITATIONS, /* router solicits */ RTR_SOLICITATION_INTERVAL, /* rtr solicit interval */ MAX_RTR_SOLICITATION_DELAY, /* rtr solicit delay */ #ifdef CONFIG_IPV6_NODEINFO 1, /* accept NIs */ #endif }; /* * from ip6_fib.c */ static __inline__ int inet6_addr_diff(void *token1, void *token2) { __u32 *a1 = token1; __u32 *a2 = token2; int addrlen = 4; int i; addrlen >>= 2; for (i = 0; i < addrlen; i++) { __u32 xb; xb = a1[i] ^ a2[i]; if (xb) { int j = 31; xb = ntohl(xb); while (test_bit(j, &xb) == 0) j--; return (i * 32 + 31 - j); } } return addrlen<<5; } int ipv6_addr_type(struct in6_addr *addr) { u32 st; st = addr->s6_addr32[0]; /* Consider all addresses with the first three bits different of 000 and 111 as unicasts. */ if ((st & __constant_htonl(0xE0000000)) != __constant_htonl(0x00000000) && (st & __constant_htonl(0xE0000000)) != __constant_htonl(0xE0000000)) return IPV6_ADDR_UNICAST; if ((st & __constant_htonl(0xFF000000)) == __constant_htonl(0xFF000000)) { int type = IPV6_ADDR_MULTICAST; switch((st & __constant_htonl(0x00FF0000))) { case __constant_htonl(0x00010000): type |= IPV6_ADDR_LOOPBACK; break; case __constant_htonl(0x00020000): type |= IPV6_ADDR_LINKLOCAL; break; case __constant_htonl(0x00050000): type |= IPV6_ADDR_SITELOCAL; break; }; return type; } if ((st & __constant_htonl(0xFFC00000)) == __constant_htonl(0xFE800000)) return (IPV6_ADDR_LINKLOCAL | IPV6_ADDR_UNICAST); if ((st & __constant_htonl(0xFFC00000)) == __constant_htonl(0xFEC00000)) return (IPV6_ADDR_SITELOCAL | IPV6_ADDR_UNICAST); if ((addr->s6_addr32[0] | addr->s6_addr32[1]) == 0) { if (addr->s6_addr32[2] == 0) { if (addr->in6_u.u6_addr32[3] == 0) return IPV6_ADDR_ANY; if (addr->s6_addr32[3] == __constant_htonl(0x00000001)) return (IPV6_ADDR_LOOPBACK | IPV6_ADDR_UNICAST); return (IPV6_ADDR_COMPATv4 | IPV6_ADDR_UNICAST); } if (addr->s6_addr32[2] == __constant_htonl(0x0000ffff)) return IPV6_ADDR_MAPPED; } return IPV6_ADDR_RESERVED; } static struct inet6_dev * ipv6_add_dev(struct device *dev) { struct inet6_dev *ndev, **bptr, *iter; int hash; if (dev->mtu < IPV6_MIN_MTU) return NULL; ndev = kmalloc(sizeof(struct inet6_dev), GFP_KERNEL); if (ndev) { char name[64]; memset(ndev, 0, sizeof(struct inet6_dev)); ndev->dev = dev; memcpy(&ndev->cnf, &ipv6_devconf_dflt, sizeof(ndev->cnf)); ndev->cnf.mtu6 = dev->mtu; ndev->cnf.sysctl = NULL; ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); if (ndev->nd_parms == NULL) { kfree(ndev); return NULL; } ipv6_statistics.Ip6LastChange = timeticks(jiffies); ndev->stats.ipv6.Ip6LastChange = timeticks(jiffies); #ifdef CONFIG_PROC_FS sprintf(name, "%d", dev->ifindex); ndev->stats.proc_dir_entry = create_proc_entry(name, 0, proc_net_devsnmp6); if (!ndev->stats.proc_dir_entry) printk(KERN_WARNING "addrconf_notify(): cannot create /proc/net/dev_snmp6/%s\n",name); ndev->stats.proc_dir_entry->read_proc = afinet6_read_devsnmp; ndev->stats.proc_dir_entry->data = ndev; #endif #ifdef CONFIG_SYSCTL neigh_sysctl_register(dev, ndev->nd_parms, NET_IPV6, NET_IPV6_NEIGH, "ipv6"); addrconf_sysctl_register(ndev, &ndev->cnf); #endif hash = ipv6_devindex_hash(dev->ifindex); bptr = &inet6_dev_lst[hash]; iter = *bptr; for (; iter; iter = iter->next) bptr = &iter->next; *bptr = ndev; } return ndev; } static struct inet6_dev * ipv6_find_idev(struct device *dev) { struct inet6_dev *idev; if ((idev = ipv6_get_idev(dev)) == NULL) { idev = ipv6_add_dev(dev); if (idev == NULL) return NULL; } return idev; } static void addrconf_forward_change(struct inet6_dev *idev) { int i; if (idev) return; for (i = 0; i < IN6_ADDR_HSIZE; i++) { for (idev = inet6_dev_lst[i]; idev; idev = idev->next) idev->cnf.forwarding = ipv6_devconf.forwarding; } } struct inet6_dev * ipv6_get_idev(struct device *dev) { struct inet6_dev *idev; int hash; hash = ipv6_devindex_hash(dev->ifindex); for (idev = inet6_dev_lst[hash]; idev; idev = idev->next) { if (idev->dev == dev) return idev; } return NULL; } static struct inet6_ifaddr * ipv6_add_addr(struct inet6_dev *idev, struct in6_addr *addr, int scope) { struct inet6_ifaddr *ifa; int hash; ifa = kmalloc(sizeof(struct inet6_ifaddr), GFP_ATOMIC); if (ifa == NULL) { ADBG(("ipv6_add_addr: malloc failed\n")); return NULL; } memset(ifa, 0, sizeof(struct inet6_ifaddr)); memcpy(&ifa->addr, addr, sizeof(struct in6_addr)); init_timer(&ifa->timer); ifa->timer.data = (unsigned long) ifa; ifa->scope = scope; ifa->idev = idev; /* Add to list. */ hash = ipv6_addr_hash(addr); ifa->lst_next = inet6_addr_lst[hash]; inet6_addr_lst[hash] = ifa; /* Add to inet6_dev unicast addr list. */ ifa->if_next = idev->addr_list; idev->addr_list = ifa; return ifa; } static void ipv6_del_addr(struct inet6_ifaddr *ifp) { struct inet6_ifaddr *iter, **back; int hash; if (atomic_read(&addr_list_lock)) { ifp->flags |= ADDR_INVALID; ipv6_ifa_notify(RTM_DELADDR, ifp); return; } hash = ipv6_addr_hash(&ifp->addr); iter = inet6_addr_lst[hash]; back = &inet6_addr_lst[hash]; for (; iter; iter = iter->lst_next) { if (iter == ifp) { *back = ifp->lst_next; synchronize_bh(); ifp->lst_next = NULL; break; } back = &(iter->lst_next); } iter = ifp->idev->addr_list; back = &ifp->idev->addr_list; for (; iter; iter = iter->if_next) { if (iter == ifp) { *back = ifp->if_next; synchronize_bh(); ifp->if_next = NULL; break; } back = &(iter->if_next); } ipv6_ifa_notify(RTM_DELADDR, ifp); kfree(ifp); } /* * Choose an apropriate source address * should do: * i) get an address with an apropriate scope * ii) see if there is a specific route for the destination and use * an address of the attached interface * iii) don't use deprecated addresses */ int ipv6_get_saddr(struct dst_entry *dst, struct in6_addr *daddr, struct in6_addr *saddr) { int scope; struct inet6_ifaddr *ifp = NULL; struct inet6_ifaddr *match = NULL; struct device *dev = NULL; struct rt6_info *rt; int deprecated = 1; int matchlen = 0; int err; int i; rt = (struct rt6_info *) dst; if (rt) dev = rt->rt6i_dev; addrconf_lock(); scope = ipv6_addr_scope(daddr); if (rt && (rt->rt6i_flags & RTF_ALLONLINK)) { /* * route for the "all destinations on link" rule * when no routers are present */ scope = IFA_LINK; } /* * known dev * search dev and walk through dev addresses */ if (dev) { struct inet6_dev *idev; int hash; if (dev->flags & IFF_LOOPBACK) scope = IFA_HOST; hash = ipv6_devindex_hash(dev->ifindex); for (idev = inet6_dev_lst[hash]; idev; idev=idev->next) { if (idev->dev == dev) { for (ifp=idev->addr_list; ifp; ifp=ifp->if_next) { if (ifp->scope == scope) { int newlen = inet6_addr_diff(daddr, &ifp->addr); if (newlen < matchlen) continue; if (!(ifp->flags & (ADDR_STATUS|DAD_STATUS))) { match = ifp; matchlen = newlen; deprecated = 0; continue; } if(!deprecated) continue; if (!(ifp->flags & (ADDR_INVALID|DAD_STATUS))) { match = ifp; matchlen = newlen; continue; } } } break; } } } if (match != NULL && !deprecated) goto out; if (scope == IFA_LINK) goto out; /* * dev == NULL or search failed for specified dev */ for (i=0; i < IN6_ADDR_HSIZE; i++) { for (ifp=inet6_addr_lst[i]; ifp; ifp=ifp->lst_next) { if (ifp->scope == scope) { int newlen = inet6_addr_diff(daddr, &ifp->addr); if (newlen < matchlen) continue; if (!(ifp->flags & (ADDR_STATUS|DAD_STATUS))) { match = ifp; matchlen = newlen; deprecated = 0; continue; } if (!deprecated) continue; if (!(ifp->flags & (ADDR_INVALID|DAD_STATUS))) { match = ifp; matchlen = newlen; continue; } } } } out: if (ifp == NULL) ifp = match; err = -ENETUNREACH; if (ifp) { memcpy(saddr, &ifp->addr, sizeof(struct in6_addr)); err = 0; } addrconf_unlock(); return err; } struct inet6_ifaddr * ipv6_get_lladdr(struct device *dev) { struct inet6_ifaddr *ifp = NULL; struct inet6_dev *idev; if ((idev = ipv6_get_idev(dev)) != NULL) { addrconf_lock(); for (ifp=idev->addr_list; ifp; ifp=ifp->if_next) { if (ifp->scope == IFA_LINK) break; } addrconf_unlock(); } return ifp; } /* * Retrieve the ifaddr struct from an v6 address * Called from ipv6_rcv to check if the address belongs * to the host. */ struct inet6_ifaddr * ipv6_chk_addr(struct in6_addr *addr, struct device *dev, int nd) { struct inet6_ifaddr * ifp; u8 hash; unsigned flags = 0; if (!nd) flags |= DAD_STATUS|ADDR_INVALID; addrconf_lock(); hash = ipv6_addr_hash(addr); for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) { if (ipv6_addr_cmp(&ifp->addr, addr) == 0 && !(ifp->flags&flags)) { if (dev == NULL || ifp->idev->dev == dev || !(ifp->scope&(IFA_LINK|IFA_HOST))) break; } } addrconf_unlock(); return ifp; } void addrconf_dad_failure(struct inet6_ifaddr *ifp) { printk(KERN_INFO "%s: duplicate address detected!\n", ifp->idev->dev->name); del_timer(&ifp->timer); ipv6_del_addr(ifp); } /* Join to solicited addr multicast group. */ static void addrconf_join_solict(struct device *dev, struct in6_addr *addr) { struct in6_addr maddr; if (dev->flags&(IFF_LOOPBACK|IFF_NOARP)) return; #ifndef CONFIG_IPV6_NO_PB addrconf_addr_solict_mult_old(addr, &maddr); ipv6_dev_mc_inc(dev, &maddr); #endif #ifdef CONFIG_IPV6_EUI64 addrconf_addr_solict_mult_new(addr, &maddr); ipv6_dev_mc_inc(dev, &maddr); #endif } static void addrconf_leave_solict(struct device *dev, struct in6_addr *addr) { struct in6_addr maddr; if (dev->flags&(IFF_LOOPBACK|IFF_NOARP)) return; #ifndef CONFIG_IPV6_NO_PB addrconf_addr_solict_mult_old(addr, &maddr); ipv6_dev_mc_dec(dev, &maddr); #endif #ifdef CONFIG_IPV6_EUI64 addrconf_addr_solict_mult_new(addr, &maddr); ipv6_dev_mc_dec(dev, &maddr); #endif } #ifdef CONFIG_IPV6_EUI64 static int ipv6_generate_eui64(u8 *eui, struct device *dev) { switch (dev->type) { case ARPHRD_ETHER: if (dev->addr_len != ETH_ALEN) return -1; memcpy(eui, dev->dev_addr, 3); memcpy(eui + 5, dev->dev_addr+3, 3); eui[3] = 0xFF; eui[4] = 0xFE; eui[0] ^= 2; return 0; } return -1; } static int ipv6_inherit_eui64(u8 *eui, struct inet6_dev *idev) { int err = -1; struct inet6_ifaddr *ifp; for (ifp=idev->addr_list; ifp; ifp=ifp->if_next) { if (ifp->scope == IFA_LINK && !(ifp->flags&(ADDR_STATUS|DAD_STATUS))) { memcpy(eui, ifp->addr.s6_addr+8, 8); err = 0; break; } } return err; } #endif /* * Add prefix route. */ static void addrconf_prefix_route(struct in6_addr *pfx, int plen, struct device *dev, unsigned long expires, unsigned flags) { struct in6_rtmsg rtmsg; memset(&rtmsg, 0, sizeof(rtmsg)); memcpy(&rtmsg.rtmsg_dst, pfx, sizeof(struct in6_addr)); rtmsg.rtmsg_dst_len = plen; rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; rtmsg.rtmsg_ifindex = dev->ifindex; rtmsg.rtmsg_info = expires; rtmsg.rtmsg_flags = RTF_UP|flags; rtmsg.rtmsg_type = RTMSG_NEWROUTE; /* Prevent useless cloning on PtP SIT. This thing is done here expecting that the whole class of non-broadcast devices need not cloning. */ if (dev->type == ARPHRD_SIT && (dev->flags&IFF_POINTOPOINT)) rtmsg.rtmsg_flags |= RTF_NONEXTHOP; ip6_route_add(&rtmsg); } /* Create "default" multicast route to the interface */ static void addrconf_add_mroute(struct device *dev) { struct in6_rtmsg rtmsg; memset(&rtmsg, 0, sizeof(rtmsg)); ipv6_addr_set(&rtmsg.rtmsg_dst, __constant_htonl(0xFF000000), 0, 0, 0); rtmsg.rtmsg_dst_len = 8; rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; rtmsg.rtmsg_ifindex = dev->ifindex; rtmsg.rtmsg_flags = RTF_UP|RTF_ADDRCONF; rtmsg.rtmsg_type = RTMSG_NEWROUTE; ip6_route_add(&rtmsg); } static void sit_route_add(struct device *dev) { struct in6_rtmsg rtmsg; memset(&rtmsg, 0, sizeof(rtmsg)); rtmsg.rtmsg_type = RTMSG_NEWROUTE; rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; /* prefix length - 96 bytes "::d.d.d.d" */ rtmsg.rtmsg_dst_len = 96; rtmsg.rtmsg_flags = RTF_UP|RTF_NONEXTHOP; rtmsg.rtmsg_ifindex = dev->ifindex; ip6_route_add(&rtmsg); } static void addrconf_add_lroute(struct device *dev) { struct in6_addr addr; ipv6_addr_set(&addr, __constant_htonl(0xFE800000), 0, 0, 0); addrconf_prefix_route(&addr, 10, dev, 0, RTF_ADDRCONF); } static struct inet6_dev *addrconf_add_dev(struct device *dev) { struct inet6_dev *idev; if ((idev = ipv6_find_idev(dev)) == NULL) return NULL; /* Add default multicast route */ addrconf_add_mroute(dev); /* Add link local route */ addrconf_add_lroute(dev); return idev; } void addrconf_prefix_rcv(struct device *dev, u8 *opt, int len) { struct prefix_info *pinfo; struct rt6_info *rt; __u32 valid_lft; __u32 prefered_lft; int addr_type; unsigned long rt_expires; struct inet6_dev *in6_dev = ipv6_get_idev(dev); if (in6_dev == NULL) { printk(KERN_DEBUG "addrconf: device %s not configured\n", dev->name); return; } pinfo = (struct prefix_info *) opt; if (len < sizeof(struct prefix_info)) { ADBG(("addrconf: prefix option too short\n")); return; } /* * Validation checks ([ADDRCONF], page 19) */ addr_type = ipv6_addr_type(&pinfo->prefix); if (addr_type & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL)) return; valid_lft = ntohl(pinfo->valid); prefered_lft = ntohl(pinfo->prefered); if (prefered_lft > valid_lft) { printk(KERN_WARNING "addrconf: prefix option has invalid lifetime\n"); return; } /* * Two things going on here: * 1) Add routes for on-link prefixes * 2) Configure prefixes with the auto flag set */ /* Avoid arithemtic overflow. Really, we could save rt_expires in seconds, likely valid_lft, but it would require division in fib gc, that it not good. */ if (valid_lft >= 0x7FFFFFFF/HZ) rt_expires = 0; else rt_expires = jiffies + valid_lft * HZ; rt = rt6_lookup(&pinfo->prefix, NULL, dev->ifindex, 1); if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) { if (rt->rt6i_flags&RTF_EXPIRES) { if (pinfo->onlink == 0 || valid_lft == 0) { ip6_del_rt(rt); } else { rt->rt6i_expires = rt_expires; } } } else if (pinfo->onlink && valid_lft) { addrconf_prefix_route(&pinfo->prefix, pinfo->prefix_len, dev, rt_expires, RTF_ADDRCONF|RTF_EXPIRES); } if (rt) dst_release(&rt->u.dst); /* Try to figure out our local address for this prefix */ if (pinfo->autoconf && in6_dev->cnf.autoconf) { struct inet6_ifaddr * ifp; struct in6_addr addr; int newif = 0; int plen; plen = pinfo->prefix_len >> 3; #ifdef CONFIG_IPV6_EUI64 if (pinfo->prefix_len == 64) { memcpy(&addr, &pinfo->prefix, 8); if (ipv6_generate_eui64(addr.s6_addr + 8, dev) && ipv6_inherit_eui64(addr.s6_addr + 8, in6_dev)) return; goto ok; } #endif #ifndef CONFIG_IPV6_NO_PB if (pinfo->prefix_len == ((sizeof(struct in6_addr) - dev->addr_len)<<3)) { memcpy(&addr, &pinfo->prefix, plen); memcpy(addr.s6_addr + plen, dev->dev_addr, dev->addr_len); goto ok; } #endif printk(KERN_DEBUG "IPv6 addrconf: prefix with wrong length %d\n", pinfo->prefix_len); return; ok: ifp = ipv6_chk_addr(&addr, dev, 1); if ((ifp == NULL || (ifp->flags&ADDR_INVALID)) && valid_lft) { if (ifp == NULL) ifp = ipv6_add_addr(in6_dev, &addr, addr_type & IPV6_ADDR_SCOPE_MASK); if (ifp == NULL) return; ifp->prefix_len = pinfo->prefix_len; addrconf_dad_start(ifp); newif = 1; } if (ifp && valid_lft == 0) { ipv6_del_addr(ifp); ifp = NULL; } if (ifp) { int event = 0; #ifdef CONFIG_IPV6_ACONF_MIN_VALID_LFT #define TWO_HOURS 7200 if (newif) goto lft_ok; if (valid_lft > TWO_HOURS || valid_lft > ifp->valid_lft) { goto lft_ok; } else if (ifp->valid_lft <= TWO_HOURS && valid_lft <= ifp->valid_lft) { ; } else { valid_lft = TWO_HOURS; if (valid_lft < prefered_lft) prefered_lft = valid_lft; goto lft_ok; } goto skip_lft; lft_ok: #endif ifp->valid_lft = valid_lft; ifp->prefered_lft = prefered_lft; ifp->tstamp = jiffies; if (ifp->flags & ADDR_INVALID) event = RTM_NEWADDR; ifp->flags &= ~(ADDR_DEPRECATED|ADDR_INVALID); ipv6_ifa_notify(event, ifp); #ifdef CONFIG_IPV6_ACONF_MIN_VALID_LFT skip_lft: #endif } } } /* * Set destination address. * Special case for SIT interfaces where we create a new "virtual" * device. */ int addrconf_set_dstaddr(void *arg) { struct in6_ifreq ireq; struct device *dev; int err = -EINVAL; rtnl_lock(); err = -EFAULT; if (copy_from_user(&ireq, arg, sizeof(struct in6_ifreq))) goto err_exit; dev = dev_get_by_index(ireq.ifr6_ifindex); err = -ENODEV; if (dev == NULL) goto err_exit; if (dev->type == ARPHRD_SIT) { struct ifreq ifr; mm_segment_t oldfs; struct ip_tunnel_parm p; err = -EADDRNOTAVAIL; if (!(ipv6_addr_type(&ireq.ifr6_addr) & IPV6_ADDR_COMPATv4)) goto err_exit; memset(&p, 0, sizeof(p)); p.iph.daddr = ireq.ifr6_addr.s6_addr32[3]; p.iph.saddr = 0; p.iph.version = 4; p.iph.ihl = 5; p.iph.protocol = IPPROTO_IPV6; p.iph.ttl = 64; ifr.ifr_ifru.ifru_data = (void*)&p; oldfs = get_fs(); set_fs(KERNEL_DS); err = dev->do_ioctl(dev, &ifr, SIOCADDTUNNEL); set_fs(oldfs); if (err == 0) { err = -ENOBUFS; if ((dev = dev_get(p.name)) == NULL) goto err_exit; err = dev_open(dev); } } err_exit: rtnl_unlock(); return err; } /* * Manual configuration of address on an interface */ static int inet6_addr_add(int ifindex, struct in6_addr *pfx, int plen) { struct inet6_ifaddr *ifp; struct inet6_dev *idev; struct device *dev; int scope; if ((dev = dev_get_by_index(ifindex)) == NULL) return -ENODEV; if (!(dev->flags&IFF_UP)) return -ENETDOWN; if ((idev = addrconf_add_dev(dev)) == NULL) return -ENOBUFS; scope = ipv6_addr_scope(pfx); addrconf_lock(); if ((ifp = ipv6_add_addr(idev, pfx, scope)) != NULL) { ifp->prefix_len = plen; ifp->flags |= ADDR_PERMANENT; addrconf_dad_start(ifp); addrconf_unlock(); return 0; } addrconf_unlock(); return -ENOBUFS; } static int inet6_addr_del(int ifindex, struct in6_addr *pfx, int plen) { struct inet6_ifaddr *ifp; struct inet6_dev *idev; struct device *dev; if ((dev = dev_get_by_index(ifindex)) == NULL) return -ENODEV; if ((idev = ipv6_get_idev(dev)) == NULL) return -ENXIO; start_bh_atomic(); for (ifp = idev->addr_list; ifp; ifp=ifp->if_next) { if (ifp->prefix_len == plen && (!memcmp(pfx, &ifp->addr, sizeof(struct in6_addr)))) { ipv6_del_addr(ifp); end_bh_atomic(); /* If the last address is deleted administratively, disable IPv6 on this interface. */ if (idev->addr_list == NULL) addrconf_ifdown(idev->dev, 1); return 0; } } end_bh_atomic(); return -EADDRNOTAVAIL; } int addrconf_add_ifaddr(void *arg) { struct in6_ifreq ireq; int err; if (!capable(CAP_NET_ADMIN)) return -EPERM; if (copy_from_user(&ireq, arg, sizeof(struct in6_ifreq))) return -EFAULT; rtnl_lock(); err = inet6_addr_add(ireq.ifr6_ifindex, &ireq.ifr6_addr, ireq.ifr6_prefixlen); rtnl_unlock(); return err; } int addrconf_del_ifaddr(void *arg) { struct in6_ifreq ireq; int err; if (!capable(CAP_NET_ADMIN)) return -EPERM; if (copy_from_user(&ireq, arg, sizeof(struct in6_ifreq))) return -EFAULT; rtnl_lock(); err = inet6_addr_del(ireq.ifr6_ifindex, &ireq.ifr6_addr, ireq.ifr6_prefixlen); rtnl_unlock(); return err; } static void sit_add_v4_addrs(struct inet6_dev *idev) { struct inet6_ifaddr * ifp; struct in6_addr addr; struct device *dev; int scope; memset(&addr, 0, sizeof(struct in6_addr)); memcpy(&addr.s6_addr32[3], idev->dev->dev_addr, 4); if (idev->dev->flags&IFF_POINTOPOINT) { addr.s6_addr32[0] = __constant_htonl(0xfe800000); scope = IFA_LINK; } else { scope = IPV6_ADDR_COMPATv4; } if (addr.s6_addr32[3]) { addrconf_lock(); ifp = ipv6_add_addr(idev, &addr, scope); if (ifp) { ifp->flags |= ADDR_PERMANENT; ifp->prefix_len = 128; ipv6_ifa_notify(RTM_NEWADDR, ifp); } addrconf_unlock(); return; } for (dev = dev_base; dev != NULL; dev = dev->next) { if (dev->ip_ptr && (dev->flags & IFF_UP)) { struct in_device * in_dev = dev->ip_ptr; struct in_ifaddr * ifa; int flag = scope; for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) { addr.s6_addr32[3] = ifa->ifa_local; if (ifa->ifa_scope == RT_SCOPE_LINK) continue; if (ifa->ifa_scope >= RT_SCOPE_HOST) { if (idev->dev->flags&IFF_POINTOPOINT) continue; flag |= IFA_HOST; } addrconf_lock(); ifp = ipv6_add_addr(idev, &addr, flag); if (ifp) { if (idev->dev->flags&IFF_POINTOPOINT) ifp->prefix_len = 10; else ifp->prefix_len = 96; ifp->flags |= ADDR_PERMANENT; ipv6_ifa_notify(RTM_NEWADDR, ifp); } addrconf_unlock(); } } } } static void init_loopback(struct device *dev) { struct in6_addr addr; struct inet6_dev *idev; struct inet6_ifaddr * ifp; /* ::1 */ memset(&addr, 0, sizeof(struct in6_addr)); addr.s6_addr[15] = 1; if ((idev = ipv6_find_idev(dev)) == NULL) { printk(KERN_DEBUG "init loopback: add_dev failed\n"); return; } ipv6_mc_up(idev); addrconf_lock(); ifp = ipv6_add_addr(idev, &addr, IFA_HOST); if (ifp) { ifp->flags |= ADDR_PERMANENT; ifp->prefix_len = 128; ipv6_ifa_notify(RTM_NEWADDR, ifp); } addrconf_unlock(); } static void addrconf_add_linklocal(struct inet6_dev *idev, struct in6_addr *addr) { struct inet6_ifaddr * ifp; addrconf_lock(); ifp = ipv6_add_addr(idev, addr, IFA_LINK); if (ifp) { ifp->flags = ADDR_PERMANENT; ifp->prefix_len = 10; addrconf_dad_start(ifp); } addrconf_unlock(); } static void addrconf_dev_config(struct device *dev) { struct in6_addr addr; struct inet6_dev * idev; if (dev->type != ARPHRD_ETHER) { /* Alas, we support only Ethernet autoconfiguration. */ return; } idev = addrconf_add_dev(dev); if (idev == NULL) return; ipv6_mc_up(idev); #ifdef CONFIG_IPV6_EUI64 memset(&addr, 0, sizeof(struct in6_addr)); addr.s6_addr[0] = 0xFE; addr.s6_addr[1] = 0x80; if (ipv6_generate_eui64(addr.s6_addr + 8, dev) == 0) addrconf_add_linklocal(idev, &addr); #endif #ifndef CONFIG_IPV6_NO_PB memset(&addr, 0, sizeof(struct in6_addr)); addr.s6_addr[0] = 0xFE; addr.s6_addr[1] = 0x80; memcpy(addr.s6_addr + (sizeof(struct in6_addr) - dev->addr_len), dev->dev_addr, dev->addr_len); addrconf_add_linklocal(idev, &addr); #endif } static void addrconf_sit_config(struct device *dev) { struct inet6_dev *idev; /* * Configure the tunnel with one of our IPv4 * addresses... we should configure all of * our v4 addrs in the tunnel */ if ((idev = ipv6_find_idev(dev)) == NULL) { printk(KERN_DEBUG "init sit: add_dev failed\n"); return; } ipv6_mc_up(idev); sit_add_v4_addrs(idev); if (dev->flags&IFF_POINTOPOINT) { addrconf_add_mroute(dev); addrconf_add_lroute(dev); } else sit_route_add(dev); } int addrconf_notify(struct notifier_block *this, unsigned long event, void * data) { struct device *dev; dev = (struct device *) data; switch(event) { case NETDEV_UP: { struct inet6_dev *idev = ipv6_get_idev(dev); switch(dev->type) { case ARPHRD_SIT: /* XXX idev = no katachini */ addrconf_sit_config(dev); break; case ARPHRD_LOOPBACK: /* XXX idev = no katachini */ init_loopback(dev); break; default: /* XXX idev = no katachini */ addrconf_dev_config(dev); break; }; if (idev) idev->stats.ipv6.Ip6LastChange = timeticks(jiffies); #ifdef CONFIG_IPV6_NODEINFO icmpv6_ni_join_nigroup_dev(dev); #endif #ifdef CONFIG_IPV6_NETLINK rt6_sndmsg(RTMSG_NEWDEVICE, NULL, NULL, NULL, dev, 0, 0, 0, 0); #endif break; } case NETDEV_CHANGEMTU: if (dev->mtu >= IPV6_MIN_MTU) { struct inet6_dev *idev; if ((idev = ipv6_get_idev(dev)) == NULL) break; idev->cnf.mtu6 = dev->mtu; rt6_mtu_change(dev, dev->mtu); break; } /* MTU falled under IPV6_MIN_MTU. Stop IPv6 on this interface. */ case NETDEV_DOWN: case NETDEV_UNREGISTER: /* * Remove all addresses from this interface. */ if (addrconf_ifdown(dev, event != NETDEV_DOWN) == 0) { struct inet6_dev *idev = ipv6_get_idev(dev); if (idev) idev->stats.ipv6.Ip6LastChange = timeticks(jiffies); #ifdef CONFIG_IPV6_NETLINK rt6_sndmsg(RTMSG_DELDEVICE, NULL, NULL, NULL, dev, 0, 0, 0, 0); #endif } break; case NETDEV_CHANGE: break; }; return NOTIFY_OK; } static int addrconf_ifdown(struct device *dev, int how) { struct inet6_dev *idev, **bidev; struct inet6_ifaddr *ifa, **bifa; int i, hash; rt6_ifdown(dev); neigh_ifdown(&nd_tbl, dev); idev = ipv6_get_idev(dev); if (idev == NULL) return -ENODEV; start_bh_atomic(); /* Discard address list */ idev->addr_list = NULL; /* * Clean addresses hash table */ for (i=0; i<16; i++) { bifa = &inet6_addr_lst[i]; while ((ifa = *bifa) != NULL) { if (ifa->idev == idev) { *bifa = ifa->lst_next; del_timer(&ifa->timer); ipv6_ifa_notify(RTM_DELADDR, ifa); kfree(ifa); continue; } bifa = &ifa->lst_next; } } /* Discard multicast list */ if (how == 1) ipv6_mc_destroy_dev(idev); else ipv6_mc_down(idev); /* Delete device from device hash table (if unregistered) */ if (how == 1) { char name[64]; hash = ipv6_devindex_hash(dev->ifindex); for (bidev = &inet6_dev_lst[hash]; (idev=*bidev) != NULL; bidev = &idev->next) { if (idev->dev == dev) { *bidev = idev->next; neigh_parms_release(&nd_tbl, idev->nd_parms); #ifdef CONFIG_PROC_FS sprintf(name, "%d", dev->ifindex); remove_proc_entry(name, proc_net_devsnmp6); #endif #ifdef CONFIG_SYSCTL addrconf_sysctl_unregister(&idev->cnf); #endif ipv6_statistics.Ip6LastChange = timeticks(jiffies); kfree(idev); break; } } } end_bh_atomic(); return 0; } static void addrconf_rs_timer(unsigned long data) { struct inet6_ifaddr *ifp; ifp = (struct inet6_ifaddr *) data; if (ifp->idev->cnf.forwarding) return; if (ifp->idev->if_flags & IF_RA_RCVD) { /* * Announcement received after solicitation * was sent */ return; } if (ifp->probes++ < ifp->idev->cnf.rtr_solicits) { struct in6_addr all_routers; ipv6_addr_all_routers(&all_routers); ndisc_send_rs(ifp->idev->dev, &ifp->addr, &all_routers); ifp->timer.function = addrconf_rs_timer; ifp->timer.expires = (jiffies + ifp->idev->cnf.rtr_solicit_interval); add_timer(&ifp->timer); } else { struct in6_rtmsg rtmsg; if (ifp->idev->if_flags & IF_RA_RCVD) { printk(KERN_DEBUG "%s: no IPv6 routers present\n", ifp->idev->dev->name); } memset(&rtmsg, 0, sizeof(struct in6_rtmsg)); rtmsg.rtmsg_type = RTMSG_NEWROUTE; rtmsg.rtmsg_metric = IP6_RT_PRIO_ADDRCONF; rtmsg.rtmsg_flags = (RTF_ALLONLINK | RTF_ADDRCONF | RTF_DEFAULT | RTF_UP); rtmsg.rtmsg_ifindex = ifp->idev->dev->ifindex; ip6_route_add(&rtmsg); } } /* * Duplicate Address Detection */ static void addrconf_dad_start(struct inet6_ifaddr *ifp) { struct device *dev; unsigned long rand_num; dev = ifp->idev->dev; addrconf_join_solict(dev, &ifp->addr); if (ifp->prefix_len != 128 && (ifp->flags&ADDR_PERMANENT)) addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev, 0, RTF_ADDRCONF); if (dev->flags&(IFF_NOARP|IFF_LOOPBACK)) { start_bh_atomic(); ifp->flags &= ~DAD_INCOMPLETE; addrconf_dad_completed(ifp); end_bh_atomic(); return; } net_srandom(ifp->addr.s6_addr32[3]); ifp->probes = ifp->idev->cnf.dad_transmits; ifp->flags |= DAD_INCOMPLETE; rand_num = net_random() % ifp->idev->cnf.rtr_solicit_delay; ifp->timer.function = addrconf_dad_timer; ifp->timer.expires = jiffies + rand_num; add_timer(&ifp->timer); } static void addrconf_dad_timer(unsigned long data) { struct inet6_ifaddr *ifp; struct in6_addr unspec; struct in6_addr mcaddr; ifp = (struct inet6_ifaddr *) data; if (ifp->probes == 0) { /* * DAD was successful */ ifp->flags &= ~DAD_INCOMPLETE; addrconf_dad_completed(ifp); return; } ifp->probes--; /* send a neighbour solicitation for our addr */ memset(&unspec, 0, sizeof(unspec)); #ifdef CONFIG_IPV6_EUI64 addrconf_addr_solict_mult_new(&ifp->addr, &mcaddr); ndisc_send_ns(ifp->idev->dev, NULL, &ifp->addr, &mcaddr, &unspec, 1); #endif #ifndef CONFIG_IPV6_NO_PB addrconf_addr_solict_mult_old(&ifp->addr, &mcaddr); ndisc_send_ns(ifp->idev->dev, NULL, &ifp->addr, &mcaddr, &unspec, 1); #endif ifp->timer.expires = jiffies + ifp->idev->nd_parms->retrans_time; add_timer(&ifp->timer); } static void addrconf_dad_completed(struct inet6_ifaddr *ifp) { struct device * dev = ifp->idev->dev; /* * Configure the address for reception. Now it is valid. */ ipv6_ifa_notify(RTM_NEWADDR, ifp); /* If added prefix is link local and forwarding is off, start sending router solicitations. */ if (ifp->idev->cnf.forwarding == 0 && (dev->flags&IFF_LOOPBACK) == 0 && (ipv6_addr_type(&ifp->addr) & IPV6_ADDR_LINKLOCAL)) { struct in6_addr all_routers; ipv6_addr_all_routers(&all_routers); /* * If a host as already performed a random delay * [...] as part of DAD [...] there is no need * to delay again before sending the first RS */ ndisc_send_rs(ifp->idev->dev, &ifp->addr, &all_routers); ifp->probes = 1; ifp->timer.function = addrconf_rs_timer; ifp->timer.expires = (jiffies + ifp->idev->cnf.rtr_solicit_interval); ifp->idev->if_flags |= IF_RS_SENT; add_timer(&ifp->timer); } } #ifdef CONFIG_PROC_FS static int iface_proc_info(char *buffer, char **start, off_t offset, int length, int dummy) { struct inet6_ifaddr *ifp; int i; int len = 0; off_t pos=0; off_t begin=0; addrconf_lock(); for (i=0; i < IN6_ADDR_HSIZE; i++) { for (ifp=inet6_addr_lst[i]; ifp; ifp=ifp->lst_next) { int j; for (j=0; j<16; j++) { sprintf(buffer + len, "%02x", ifp->addr.s6_addr[j]); len += 2; } len += sprintf(buffer + len, " %02x %02x %02x %02x %8s\n", ifp->idev->dev->ifindex, ifp->prefix_len, ifp->scope, ifp->flags, ifp->idev->dev->name); pos=begin+len; if(posoffset+length) goto done; } } done: addrconf_unlock(); *start=buffer+(offset-begin); len-=(offset-begin); if(len>length) len=length; if(len<0) len=0; return len; } struct proc_dir_entry iface_proc_entry = { 0, 8, "if_inet6", S_IFREG | S_IRUGO, 1, 0, 0, 0, NULL, &iface_proc_info }; #endif /* CONFIG_PROC_FS */ /* * Periodic address status verification */ void addrconf_verify(unsigned long foo) { struct inet6_ifaddr *ifp; unsigned long now = jiffies; int i; if (atomic_read(&addr_list_lock)) { addr_chk_timer.expires = jiffies + 1*HZ; add_timer(&addr_chk_timer); return; } for (i=0; i < IN6_ADDR_HSIZE; i++) { for (ifp=inet6_addr_lst[i]; ifp;) { if (ifp->flags & ADDR_INVALID) { struct inet6_ifaddr *bp = ifp; ifp= ifp->lst_next; ipv6_del_addr(bp); continue; } if (!(ifp->flags & ADDR_PERMANENT)) { struct inet6_ifaddr *bp; unsigned long age; age = (now - ifp->tstamp) / HZ; bp = ifp; ifp= ifp->lst_next; if (age > bp->valid_lft) ipv6_del_addr(bp); else if (age > bp->prefered_lft) { bp->flags |= ADDR_DEPRECATED; ipv6_ifa_notify(0, bp); } continue; } ifp = ifp->lst_next; } } addr_chk_timer.expires = jiffies + ADDR_CHECK_FREQUENCY; add_timer(&addr_chk_timer); } #ifdef CONFIG_RTNETLINK static int inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) { struct rtattr **rta = arg; struct ifaddrmsg *ifm = NLMSG_DATA(nlh); struct in6_addr *pfx; pfx = NULL; if (rta[IFA_ADDRESS-1]) { if (RTA_PAYLOAD(rta[IFA_ADDRESS-1]) < sizeof(*pfx)) return -EINVAL; pfx = RTA_DATA(rta[IFA_ADDRESS-1]); } if (rta[IFA_LOCAL-1]) { if (pfx && memcmp(pfx, RTA_DATA(rta[IFA_LOCAL-1]), sizeof(*pfx))) return -EINVAL; pfx = RTA_DATA(rta[IFA_LOCAL-1]); } if (pfx == NULL) return -EINVAL; return inet6_addr_del(ifm->ifa_index, pfx, ifm->ifa_prefixlen); } static int inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) { struct rtattr **rta = arg; struct ifaddrmsg *ifm = NLMSG_DATA(nlh); struct in6_addr *pfx; pfx = NULL; if (rta[IFA_ADDRESS-1]) { if (RTA_PAYLOAD(rta[IFA_ADDRESS-1]) < sizeof(*pfx)) return -EINVAL; pfx = RTA_DATA(rta[IFA_ADDRESS-1]); } if (rta[IFA_LOCAL-1]) { if (pfx && memcmp(pfx, RTA_DATA(rta[IFA_LOCAL-1]), sizeof(*pfx))) return -EINVAL; pfx = RTA_DATA(rta[IFA_LOCAL-1]); } if (pfx == NULL) return -EINVAL; return inet6_addr_add(ifm->ifa_index, pfx, ifm->ifa_prefixlen); } static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa, u32 pid, u32 seq, int event) { struct ifaddrmsg *ifm; struct nlmsghdr *nlh; struct ifa_cacheinfo ci; unsigned char *b = skb->tail; nlh = NLMSG_PUT(skb, pid, seq, event, sizeof(*ifm)); ifm = NLMSG_DATA(nlh); ifm->ifa_family = AF_INET6; ifm->ifa_prefixlen = ifa->prefix_len; ifm->ifa_flags = ifa->flags & ~ADDR_INVALID; ifm->ifa_scope = RT_SCOPE_UNIVERSE; if (ifa->scope&IFA_HOST) ifm->ifa_scope = RT_SCOPE_HOST; else if (ifa->scope&IFA_LINK) ifm->ifa_scope = RT_SCOPE_LINK; else if (ifa->scope&IFA_SITE) ifm->ifa_scope = RT_SCOPE_SITE; ifm->ifa_index = ifa->idev->dev->ifindex; RTA_PUT(skb, IFA_ADDRESS, 16, &ifa->addr); if (!(ifa->flags&IFA_F_PERMANENT)) { ci.ifa_prefered = ifa->prefered_lft; ci.ifa_valid = ifa->valid_lft; if (ci.ifa_prefered != 0xFFFFFFFF) { long tval = (jiffies - ifa->tstamp)/HZ; ci.ifa_prefered -= tval; if (ci.ifa_valid != 0xFFFFFFFF) ci.ifa_valid -= tval; } RTA_PUT(skb, IFA_CACHEINFO, sizeof(ci), &ci); } nlh->nlmsg_len = skb->tail - b; return skb->len; nlmsg_failure: rtattr_failure: skb_trim(skb, b - skb->data); return -1; } static int inet6_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) { int idx, ip_idx; int s_idx, s_ip_idx; struct inet6_ifaddr *ifa; s_idx = cb->args[0]; s_ip_idx = ip_idx = cb->args[1]; for (idx=0; idx < IN6_ADDR_HSIZE; idx++) { if (idx < s_idx) continue; if (idx > s_idx) s_ip_idx = 0; start_bh_atomic(); for (ifa=inet6_addr_lst[idx], ip_idx = 0; ifa; ifa = ifa->lst_next, ip_idx++) { if (ip_idx < s_ip_idx) continue; if (inet6_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).pid, cb->nlh->nlmsg_seq, RTM_NEWADDR) <= 0) { end_bh_atomic(); goto done; } } end_bh_atomic(); } done: cb->args[0] = idx; cb->args[1] = ip_idx; return skb->len; } static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) { struct sk_buff *skb; int size = NLMSG_SPACE(sizeof(struct ifaddrmsg)+128); skb = alloc_skb(size, GFP_ATOMIC); if (!skb) { netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFADDR, ENOBUFS); return; } if (inet6_fill_ifaddr(skb, ifa, 0, 0, event) < 0) { kfree_skb(skb); netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFADDR, EINVAL); return; } NETLINK_CB(skb).dst_groups = RTMGRP_IPV6_IFADDR; netlink_broadcast(rtnl, skb, 0, RTMGRP_IPV6_IFADDR, GFP_ATOMIC); } static struct rtnetlink_link inet6_rtnetlink_table[RTM_MAX-RTM_BASE+1] = { { NULL, NULL, }, { NULL, NULL, }, { NULL, NULL, }, { NULL, NULL, }, { inet6_rtm_newaddr, NULL, }, { inet6_rtm_deladdr, NULL, }, { NULL, inet6_dump_ifaddr, }, { NULL, NULL, }, { inet6_rtm_newroute, NULL, }, { inet6_rtm_delroute, NULL, }, { inet6_rtm_getroute, inet6_dump_fib, }, { NULL, NULL, }, }; #endif static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp) { #ifdef CONFIG_RTNETLINK inet6_ifa_notify(event ? : RTM_NEWADDR, ifp); #endif switch (event) { case RTM_NEWADDR: ip6_rt_addr_add(&ifp->addr, ifp->idev->dev); break; case RTM_DELADDR: start_bh_atomic(); addrconf_leave_solict(ifp->idev->dev, &ifp->addr); if (ipv6_chk_addr(&ifp->addr, ifp->idev->dev, 0) == NULL) ip6_rt_addr_del(&ifp->addr, ifp->idev->dev); end_bh_atomic(); break; } } #ifdef CONFIG_SYSCTL static int addrconf_sysctl_forward(ctl_table *ctl, int write, struct file * filp, void *buffer, size_t *lenp) { int *valp = ctl->data; int val = *valp; int ret; ret = proc_dointvec(ctl, write, filp, buffer, lenp); if (write && *valp != val && valp != &ipv6_devconf_dflt.forwarding) { struct inet6_dev *idev = NULL; if (valp != &ipv6_devconf.forwarding) { struct device *dev = dev_get_by_index(ctl->ctl_name); if (dev) idev = ipv6_get_idev(dev); if (idev == NULL) return ret; } else ipv6_devconf_dflt.forwarding = ipv6_devconf.forwarding; addrconf_forward_change(idev); #ifndef CONFIG_IPV6_EN_DFLT if (*valp) { printk(KERN_DEBUG "Purge default routes(0)\n"); start_bh_atomic(); rt6_purge_dflt_routers(0); end_bh_atomic(); } #else printk(KERN_DEBUG "IPv6 forwarding is enabled, But not purge default routes\n"); #endif } return ret; } static struct addrconf_sysctl_table { struct ctl_table_header *sysctl_header; #ifdef CONFIG_IPV6_NODEINFO ctl_table addrconf_vars[12]; #else ctl_table addrconf_vars[11]; #endif ctl_table addrconf_dev[2]; ctl_table addrconf_conf_dir[2]; ctl_table addrconf_proto_dir[2]; ctl_table addrconf_root_dir[2]; } addrconf_sysctl = { NULL, {{NET_IPV6_FORWARDING, "forwarding", &ipv6_devconf.forwarding, sizeof(int), 0644, NULL, &addrconf_sysctl_forward}, {NET_IPV6_HOP_LIMIT, "hop_limit", &ipv6_devconf.hop_limit, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_MTU, "mtu", &ipv6_devconf.mtu6, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_ACCEPT_RA, "accept_ra", &ipv6_devconf.accept_ra, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_ACCEPT_REDIRECTS, "accept_redirects", &ipv6_devconf.accept_redirects, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_AUTOCONF, "autoconf", &ipv6_devconf.autoconf, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_DAD_TRANSMITS, "dad_transmits", &ipv6_devconf.dad_transmits, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_RTR_SOLICITS, "router_solicitations", &ipv6_devconf.rtr_solicits, sizeof(int), 0644, NULL, &proc_dointvec}, {NET_IPV6_RTR_SOLICIT_INTERVAL, "router_solicitation_interval", &ipv6_devconf.rtr_solicit_interval, sizeof(int), 0644, NULL, &proc_dointvec_jiffies}, {NET_IPV6_RTR_SOLICIT_DELAY, "router_solicitation_delay", &ipv6_devconf.rtr_solicit_delay, sizeof(int), 0644, NULL, &proc_dointvec_jiffies}, #ifdef CONFIG_IPV6_NODEINFO {NET_IPV6_ACCEPT_NI, "accept_ni", &ipv6_devconf.accept_ni, sizeof(int), 0644, NULL, &proc_dointvec}, #endif {0}}, {{NET_PROTO_CONF_ALL, "all", NULL, 0, 0555, addrconf_sysctl.addrconf_vars},{0}}, {{NET_IPV6_CONF, "conf", NULL, 0, 0555, addrconf_sysctl.addrconf_dev},{0}}, {{NET_IPV6, "ipv6", NULL, 0, 0555, addrconf_sysctl.addrconf_conf_dir},{0}}, {{CTL_NET, "net", NULL, 0, 0555, addrconf_sysctl.addrconf_proto_dir},{0}} }; static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf *p) { int i; struct device *dev = idev ? idev->dev : NULL; struct addrconf_sysctl_table *t; t = kmalloc(sizeof(*t), GFP_KERNEL); if (t == NULL) return; memcpy(t, &addrconf_sysctl, sizeof(*t)); for (i=0; iaddrconf_vars)/sizeof(t->addrconf_vars[0])-1; i++) { t->addrconf_vars[i].data += (char*)p - (char*)&ipv6_devconf; t->addrconf_vars[i].de = NULL; } if (dev) { t->addrconf_dev[0].procname = dev->name; t->addrconf_dev[0].ctl_name = dev->ifindex; } else { t->addrconf_dev[0].procname = "default"; t->addrconf_dev[0].ctl_name = NET_PROTO_CONF_DEFAULT; } t->addrconf_dev[0].child = t->addrconf_vars; t->addrconf_dev[0].de = NULL; t->addrconf_conf_dir[0].child = t->addrconf_dev; t->addrconf_conf_dir[0].de = NULL; t->addrconf_proto_dir[0].child = t->addrconf_conf_dir; t->addrconf_proto_dir[0].de = NULL; t->addrconf_root_dir[0].child = t->addrconf_proto_dir; t->addrconf_root_dir[0].de = NULL; t->sysctl_header = register_sysctl_table(t->addrconf_root_dir, 0); if (t->sysctl_header == NULL) kfree(t); else p->sysctl = t; } static void addrconf_sysctl_unregister(struct ipv6_devconf *p) { if (p->sysctl) { struct addrconf_sysctl_table *t = p->sysctl; p->sysctl = NULL; unregister_sysctl_table(t->sysctl_header); kfree(t); } } #endif /* * Init / cleanup code */ __initfunc(void addrconf_init(void)) { #ifdef MODULE struct device *dev; /* This takes sense only during module load. */ for (dev = dev_base; dev; dev = dev->next) { if (!(dev->flags&IFF_UP)) continue; switch (dev->type) { case ARPHRD_LOOPBACK: init_loopback(dev); break; case ARPHRD_ETHER: addrconf_dev_config(dev); break; default: /* Ignore all other */ } } #endif #ifdef CONFIG_PROC_FS proc_net_register(&iface_proc_entry); #endif addr_chk_timer.expires = jiffies + ADDR_CHECK_FREQUENCY; add_timer(&addr_chk_timer); #ifdef CONFIG_RTNETLINK rtnetlink_links[PF_INET6] = inet6_rtnetlink_table; #endif #ifdef CONFIG_SYSCTL addrconf_sysctl.sysctl_header = register_sysctl_table(addrconf_sysctl.addrconf_root_dir, 0); addrconf_sysctl_register(NULL, &ipv6_devconf_dflt); #endif } #ifdef MODULE void addrconf_cleanup(void) { struct inet6_dev *idev; struct inet6_ifaddr *ifa; int i; #ifdef CONFIG_RTNETLINK rtnetlink_links[PF_INET6] = NULL; #endif #ifdef CONFIG_SYSCTL addrconf_sysctl_unregister(&ipv6_devconf_dflt); addrconf_sysctl_unregister(&ipv6_devconf); #endif del_timer(&addr_chk_timer); /* * clean dev list. */ for (i=0; i < IN6_ADDR_HSIZE; i++) { struct inet6_dev *next; for (idev = inet6_dev_lst[i]; idev; idev = next) { next = idev->next; addrconf_ifdown(idev->dev, 1); } } start_bh_atomic(); /* * clean addr_list */ for (i=0; i < IN6_ADDR_HSIZE; i++) { for (ifa=inet6_addr_lst[i]; ifa; ) { struct inet6_ifaddr *bifa; bifa = ifa; ifa = ifa->lst_next; printk(KERN_DEBUG "bug: IPv6 address leakage detected: ifa=%p\n", bifa); /* Do not free it; something is wrong. Now we can investigate it with debugger. */ } } end_bh_atomic(); #ifdef CONFIG_PROC_FS proc_net_unregister(iface_proc_entry.low_ino); #endif } #endif /* MODULE */ ipv6calc-1.0.0/samplecode/coreutils/000077500000000000000000000000001312366535500173555ustar00rootroot00000000000000ipv6calc-1.0.0/samplecode/coreutils/md5.c000066400000000000000000000332671312366535500202210ustar00rootroot00000000000000/* md5.c - Functions to compute MD5 message digest of files or memory blocks according to the definition of MD5 in RFC 1321 from April 1992. Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Ulrich Drepper , 1995. */ #ifdef HAVE_CONFIG_H # include #endif #include "md5.h" #include #include #include #include "unlocked-io.h" #ifdef _LIBC # include # if __BYTE_ORDER == __BIG_ENDIAN # define WORDS_BIGENDIAN 1 # endif /* We need to keep the namespace clean so define the MD5 function protected using leading __ . */ # define md5_init_ctx __md5_init_ctx # define md5_process_block __md5_process_block # define md5_process_bytes __md5_process_bytes # define md5_finish_ctx __md5_finish_ctx # define md5_read_ctx __md5_read_ctx # define md5_stream __md5_stream # define md5_buffer __md5_buffer #endif #ifdef WORDS_BIGENDIAN # define SWAP(n) \ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) #else # define SWAP(n) (n) #endif #define BLOCKSIZE 4096 /* Ensure that BLOCKSIZE is a multiple of 64. */ #if BLOCKSIZE % 64 != 0 /* FIXME-someday (soon?): use #error instead of this kludge. */ "invalid BLOCKSIZE" #endif /* This array contains the bytes used to pad the buffer to the next 64-byte boundary. (RFC 1321, 3.1: Step 1) */ static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ void md5_init_ctx (struct md5_ctx *ctx) { ctx->A = 0x67452301; ctx->B = 0xefcdab89; ctx->C = 0x98badcfe; ctx->D = 0x10325476; ctx->total[0] = ctx->total[1] = 0; ctx->buflen = 0; } /* Put result from CTX in first 16 bytes following RESBUF. The result must be in little endian byte order. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ void * md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) { ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A); ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B); ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C); ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D); return resbuf; } /* Process the remaining bytes in the internal buffer and the usual prolog according to the standard and write the result to RESBUF. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ void * md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) { /* Take yet unprocessed bytes into account. */ md5_uint32 bytes = ctx->buflen; size_t pad; /* Now count remaining bytes. */ ctx->total[0] += bytes; if (ctx->total[0] < bytes) ++ctx->total[1]; pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; memcpy (&ctx->buffer[bytes], fillbuf, pad); /* Put the 64-bit file length in *bits* at the end of the buffer. */ *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); /* Process last bytes. */ md5_process_block (ctx->buffer, bytes + pad + 8, ctx); return md5_read_ctx (ctx, resbuf); } /* Compute MD5 message digest for bytes read from STREAM. The resulting message digest number will be written into the 16 bytes beginning at RESBLOCK. */ int md5_stream (FILE *stream, void *resblock) { struct md5_ctx ctx; char buffer[BLOCKSIZE + 72]; size_t sum; /* Initialize the computation context. */ md5_init_ctx (&ctx); /* Iterate over full file contents. */ while (1) { /* We read the file in blocks of BLOCKSIZE bytes. One call of the computation function processes the whole buffer so that with the next round of the loop another block can be read. */ size_t n; sum = 0; /* Read block. Take care for partial reads. */ while (1) { n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream); sum += n; if (sum == BLOCKSIZE) break; if (n == 0) { /* Check for the error flag IFF N == 0, so that we don't exit the loop after a partial read due to e.g., EAGAIN or EWOULDBLOCK. */ if (ferror (stream)) return 1; goto process_partial_block; } /* We've read at least one byte, so ignore errors. But always check for EOF, since feof may be true even though N > 0. Otherwise, we could end up calling fread after EOF. */ if (feof (stream)) goto process_partial_block; } /* Process buffer with BLOCKSIZE bytes. Note that BLOCKSIZE % 64 == 0 */ md5_process_block (buffer, BLOCKSIZE, &ctx); } process_partial_block:; /* Process any remaining bytes. */ if (sum > 0) md5_process_bytes (buffer, sum, &ctx); /* Construct result in desired memory. */ md5_finish_ctx (&ctx, resblock); return 0; } /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. */ void * md5_buffer (const char *buffer, size_t len, void *resblock) { struct md5_ctx ctx; /* Initialize the computation context. */ md5_init_ctx (&ctx); /* Process whole buffer but last len % 64 bytes. */ md5_process_bytes (buffer, len, &ctx); /* Put result in desired memory area. */ return md5_finish_ctx (&ctx, resblock); } void md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx) { /* When we already have some bits in our internal buffer concatenate both inputs first. */ if (ctx->buflen != 0) { size_t left_over = ctx->buflen; size_t add = 128 - left_over > len ? len : 128 - left_over; memcpy (&ctx->buffer[left_over], buffer, add); ctx->buflen += add; if (ctx->buflen > 64) { md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx); ctx->buflen &= 63; /* The regions in the following copy operation cannot overlap. */ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], ctx->buflen); } buffer = (const char *) buffer + add; len -= add; } /* Process available complete blocks. */ if (len >= 64) { #if !_STRING_ARCH_unaligned /* To check alignment gcc has an appropriate operator. Other compilers don't. */ # if __GNUC__ >= 2 # define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0) # else # define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0) # endif if (UNALIGNED_P (buffer)) while (len > 64) { md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx); buffer = (const char *) buffer + 64; len -= 64; } else #endif { md5_process_block (buffer, len & ~63, ctx); buffer = (const char *) buffer + (len & ~63); len &= 63; } } /* Move remaining bytes in internal buffer. */ if (len > 0) { size_t left_over = ctx->buflen; memcpy (&ctx->buffer[left_over], buffer, len); left_over += len; if (left_over >= 64) { md5_process_block (ctx->buffer, 64, ctx); left_over -= 64; memcpy (ctx->buffer, &ctx->buffer[64], left_over); } ctx->buflen = left_over; } } /* These are the four functions used in the four steps of the MD5 algorithm and defined in the RFC 1321. The first function is a little bit optimized (as found in Colin Plumbs public domain implementation). */ /* #define FF(b, c, d) ((b & c) | (~b & d)) */ #define FF(b, c, d) (d ^ (b & (c ^ d))) #define FG(b, c, d) FF (d, b, c) #define FH(b, c, d) (b ^ c ^ d) #define FI(b, c, d) (c ^ (b | ~d)) /* Process LEN bytes of BUFFER, accumulating context into CTX. It is assumed that LEN % 64 == 0. */ void md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx) { md5_uint32 correct_words[16]; const md5_uint32 *words = buffer; size_t nwords = len / sizeof (md5_uint32); const md5_uint32 *endp = words + nwords; md5_uint32 A = ctx->A; md5_uint32 B = ctx->B; md5_uint32 C = ctx->C; md5_uint32 D = ctx->D; /* First increment the byte count. RFC 1321 specifies the possible length of the file up to 2^64 bits. Here we only compute the number of bytes. Do a double word increment. */ ctx->total[0] += len; if (ctx->total[0] < len) ++ctx->total[1]; /* Process all bytes in the buffer with 64 bytes in each round of the loop. */ while (words < endp) { md5_uint32 *cwp = correct_words; md5_uint32 A_save = A; md5_uint32 B_save = B; md5_uint32 C_save = C; md5_uint32 D_save = D; /* First round: using the given function, the context and a constant the next context is computed. Because the algorithms processing unit is a 32-bit word and it is determined to work on words in little endian byte order we perhaps have to change the byte order before the computation. To reduce the work for the next steps we store the swapped words in the array CORRECT_WORDS. */ #define OP(a, b, c, d, s, T) \ do \ { \ a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ ++words; \ a = rol (a, s); \ a += b; \ } \ while (0) /* Before we start, one word to the strange constants. They are defined in RFC 1321 as T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}' */ /* Round 1. */ OP (A, B, C, D, 7, 0xd76aa478); OP (D, A, B, C, 12, 0xe8c7b756); OP (C, D, A, B, 17, 0x242070db); OP (B, C, D, A, 22, 0xc1bdceee); OP (A, B, C, D, 7, 0xf57c0faf); OP (D, A, B, C, 12, 0x4787c62a); OP (C, D, A, B, 17, 0xa8304613); OP (B, C, D, A, 22, 0xfd469501); OP (A, B, C, D, 7, 0x698098d8); OP (D, A, B, C, 12, 0x8b44f7af); OP (C, D, A, B, 17, 0xffff5bb1); OP (B, C, D, A, 22, 0x895cd7be); OP (A, B, C, D, 7, 0x6b901122); OP (D, A, B, C, 12, 0xfd987193); OP (C, D, A, B, 17, 0xa679438e); OP (B, C, D, A, 22, 0x49b40821); /* For the second to fourth round we have the possibly swapped words in CORRECT_WORDS. Redefine the macro to take an additional first argument specifying the function to use. */ #undef OP #define OP(f, a, b, c, d, k, s, T) \ do \ { \ a += f (b, c, d) + correct_words[k] + T; \ a = rol (a, s); \ a += b; \ } \ while (0) /* Round 2. */ OP (FG, A, B, C, D, 1, 5, 0xf61e2562); OP (FG, D, A, B, C, 6, 9, 0xc040b340); OP (FG, C, D, A, B, 11, 14, 0x265e5a51); OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa); OP (FG, A, B, C, D, 5, 5, 0xd62f105d); OP (FG, D, A, B, C, 10, 9, 0x02441453); OP (FG, C, D, A, B, 15, 14, 0xd8a1e681); OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8); OP (FG, A, B, C, D, 9, 5, 0x21e1cde6); OP (FG, D, A, B, C, 14, 9, 0xc33707d6); OP (FG, C, D, A, B, 3, 14, 0xf4d50d87); OP (FG, B, C, D, A, 8, 20, 0x455a14ed); OP (FG, A, B, C, D, 13, 5, 0xa9e3e905); OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8); OP (FG, C, D, A, B, 7, 14, 0x676f02d9); OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a); /* Round 3. */ OP (FH, A, B, C, D, 5, 4, 0xfffa3942); OP (FH, D, A, B, C, 8, 11, 0x8771f681); OP (FH, C, D, A, B, 11, 16, 0x6d9d6122); OP (FH, B, C, D, A, 14, 23, 0xfde5380c); OP (FH, A, B, C, D, 1, 4, 0xa4beea44); OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9); OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60); OP (FH, B, C, D, A, 10, 23, 0xbebfbc70); OP (FH, A, B, C, D, 13, 4, 0x289b7ec6); OP (FH, D, A, B, C, 0, 11, 0xeaa127fa); OP (FH, C, D, A, B, 3, 16, 0xd4ef3085); OP (FH, B, C, D, A, 6, 23, 0x04881d05); OP (FH, A, B, C, D, 9, 4, 0xd9d4d039); OP (FH, D, A, B, C, 12, 11, 0xe6db99e5); OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8); OP (FH, B, C, D, A, 2, 23, 0xc4ac5665); /* Round 4. */ OP (FI, A, B, C, D, 0, 6, 0xf4292244); OP (FI, D, A, B, C, 7, 10, 0x432aff97); OP (FI, C, D, A, B, 14, 15, 0xab9423a7); OP (FI, B, C, D, A, 5, 21, 0xfc93a039); OP (FI, A, B, C, D, 12, 6, 0x655b59c3); OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92); OP (FI, C, D, A, B, 10, 15, 0xffeff47d); OP (FI, B, C, D, A, 1, 21, 0x85845dd1); OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f); OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0); OP (FI, C, D, A, B, 6, 15, 0xa3014314); OP (FI, B, C, D, A, 13, 21, 0x4e0811a1); OP (FI, A, B, C, D, 4, 6, 0xf7537e82); OP (FI, D, A, B, C, 11, 10, 0xbd3af235); OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb); OP (FI, B, C, D, A, 9, 21, 0xeb86d391); /* Add the starting values of the context. */ A += A_save; B += B_save; C += C_save; D += D_save; } /* Put checksum in context given as argument. */ ctx->A = A; ctx->B = B; ctx->C = C; ctx->D = D; } ipv6calc-1.0.0/samplecode/coreutils/md5.h000066400000000000000000000111461312366535500202160ustar00rootroot00000000000000/* md5.h - Declaration of functions and data types used for MD5 sum computing library functions. Copyright (C) 1995, 1996, 1999, 2000, 2003 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _MD5_H #define _MD5_H 1 #include #include /* The following contortions are an attempt to use the C preprocessor to determine an unsigned integral type that is 32 bits wide. An alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but doing that would require that the configure script compile and *run* the resulting executable. Locally running cross-compiled executables is usually not possible. */ #ifdef _LIBC # include typedef uint32_t md5_uint32; typedef uintptr_t md5_uintptr; #else # define UINT_MAX_32_BITS 4294967295U # if UINT_MAX == UINT_MAX_32_BITS typedef unsigned int md5_uint32; # else # if USHRT_MAX == UINT_MAX_32_BITS typedef unsigned short md5_uint32; # else # if ULONG_MAX == UINT_MAX_32_BITS typedef unsigned long md5_uint32; # else /* The following line is intended to evoke an error. Using #error is not portable enough. */ "Cannot determine unsigned 32-bit data type." # endif # endif # endif /* We have to make a guess about the integer type equivalent in size to pointers which should always be correct. */ typedef unsigned long int md5_uintptr; #endif /* Structure to save state of computation between the single steps. */ struct md5_ctx { md5_uint32 A; md5_uint32 B; md5_uint32 C; md5_uint32 D; md5_uint32 total[2]; md5_uint32 buflen; char buffer[128]; }; /* * The following three functions are build up the low level used in * the functions `md5_stream' and `md5_buffer'. */ /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ extern void md5_init_ctx (struct md5_ctx *ctx); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is necessary that LEN is a multiple of 64!!! */ extern void md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is NOT required that LEN is a multiple of 64. */ extern void md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx); /* Process the remaining bytes in the buffer and put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF be correctly aligned for a 32 bits value. */ extern void *md5_finish_ctx (struct md5_ctx *ctx, void *resbuf); /* Put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ extern void *md5_read_ctx (const struct md5_ctx *ctx, void *resbuf); /* Compute MD5 message digest for bytes read from STREAM. The resulting message digest number will be written into the 16 bytes beginning at RESBLOCK. */ extern int md5_stream (FILE *stream, void *resblock); /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. */ extern void *md5_buffer (const char *buffer, size_t len, void *resblock); #define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) ) #endif ipv6calc-1.0.0/samplecode/getopt/000077500000000000000000000000001312366535500166465ustar00rootroot00000000000000ipv6calc-1.0.0/samplecode/getopt/URL000066400000000000000000000001721312366535500172330ustar00rootroot00000000000000This original code is located at: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/obrien/libgnugetopt-1.1.tar.gz ipv6calc-1.0.0/samplecode/getopt/libgnugetopt-1.1.tar.gz000066400000000000000000000261351312366535500230040ustar00rootroot00000000000000cQ-7\WƶW1!RٵyB%ˣiVe<YNN{ό$ې+CYٳg$y:>E6*V绯GWJuזm}J=^,xye}+oe36E+UosW ~I / N\n?^]k+-kjJ ~x^(qdSUţeVјi'2{ieI{[>sWwI4Yu0J5%goM76U3*9 op&(a٘ˇ?bϔ{|5xJ^w,=WBw/K"Q,N Y^18nPKd=x$xlNl`c]̵VG٠=P/q8KFFcxgS_hiQ(Hl8?); 0+qqqV{bZsCԙVeyEsn¸511ʳ<2X&3DXy|6.MAfxp LTW:96v|Ѝtj .1솆7nWWi \A0[- /a+pwM# r8e,/4l:N `0NFwǯN{npk}᩾'y7Bkz{~{st^-vxwdoP=9|{pRHk&0A\$[}nExEB *~)pVJuUTӫtg'@E3.ixf?m|4{|$ V_F 8p3㤨(v_+>W-\AuV9x>D H~F%k'8Rޣ@iFT""' K,#TQqgb['OF_$໊]su}Ft Mdtu$lYSR`?&E\`lk'Z$<~T?8?=<8>(K=*y*TS>_pUi|V.6$XgqLoBg%f32rg|sTCpw][6Y5^,TmWrIf ,.:[}G1"B%U83Ikdvٵk(t`mQewfƉطq6[ ,0e4k-3-32!_Ј=rN^,-y_;'|@+m5oz\.wQ=u=]z{$a >V$SSu"JcvNb ])E26)ѿK#utDcj4q׵\?dNe!)|-?0 La/%n"81uQ8`؟R%҇/#$CL}PuKWqjAw{+xx}L"Ks#9-jl7.IMP~AF,$gDCtl?g"acC[%N8gଳX3^^mFGL۔ƒhH!q i-S!+ӚΓ$XGbN g08CksݤfY0)ǹ$07\ "(\#"J[|iٝQgwe%&.6F:%WlӖ3T5jnS,ǣ8TdஹGJW$Ě Jǐ =皺_$4bPMFf M< ?wu(9b:x;!2$wAsg12dvj%y7)78RA Ĝ,ѵ6 #1\ZkZ~,4tBQg{{#5g};)f2Powߜ+%$IsRڬn $g8:XO5P'_,"Ш0< b)6r I~v8 'vUŕ8ɴX!NaRx-cUC\.ƜjݳI׺X6Z-8YP(RM0/|‚ U"d9y+-A Dd[C {:Ϋ)P "&;N&ކUsu&|;E+ؒ#[ kuL :,'"XRŲ*ǡlD$Pi\9z$"RSoמ 0l2V09u/&J9h۷<%o]!jVۮ`'u?mLZYS֮yQfM/r]ww=PgqAٕCd߮k?ҵzɑ!hv^Sy6&m\u.z"1 ϱ'/XN ~^moOW|u+asx]䶔@K@Jr`F0\Ô<:33U1zP,%st@ns (˛#:rĻKH8gEvQ-"]~{1ǿ vo͋kqB({T'm{iLoe˲U"V!b}]7º, $E?T+?sX2}j]XK:3WVYU ꌜG%f!b&l'E mM!*ƐR]GZmT:b/Vvbĉ! cba"Nd1y5K8\ԼbQ(IG#.%a8Z;QfCSJfϕz8ɬ-'2WVT@w} D硹plFrzmr< ֓I3p cإ~4TDw2>9&İ{~^ylFݺǦC#F#!t?e<3|14oS)Zߗtm XB冕l,~~Jx8Dž'G+KkS{5f+G!A2ߢj*r}w"!sT{i?,?;>ջlqW G@6+ڝ{-,cwr$f6\%]'|#By-;|6zCMo~ܠbd$rw"`zՓrK<$K-\Y+)|U`]HXۻ߶$+hZ iפE\R4>6HhIDHT#~;ϝ].%`ryfU1P65t[/'̇n"5zDv_x8쑺]>8qt^l. X/gy$wr>utnp:qncЌ /a' |L]rDn0D,9C G7TU1 ,uFdĀ1Oo ab0(PzI.!ie1NKt(6b9[NٿbiQ[@0T U6 @P:1$THeqyxfa؝zVbڨ[tX$\; _]h."זRM6*,$Hx:t;ޯ v@Q[菚үyϽaֹ`s= T]aHM&0Պ0Y8B_Tfxa񏁖Q.Y@#r-g`(Xb $_%KOE,1ɗ@>N I^>xw?ׇ8~ eid$^Tfw<^Ȼ|C=~1s4%L z$߭dXfup%t$<[$s<]Z8ڪ(Uq(Kgo"*@]{ܘՈX_D e6z :'*EYC1G5dʉX>VeZy<\H-b_& 'Q/ H=1^En͐{eWŐ-JӒUh_3q'~,](~<+m6=[ǣw# 2RdZB b@ҍ\,"nտwhzvVpE>bVv+*:$ }=<\ӊ(x brz(6 !Ah$mcmb c6fX}e q^ٜ"*OA6=VYݑC;$E ҕ8[<# ! %%`Č1;=:0"xڵSN '`Fyُ4C\ViNrsak&&0´;G"G'˜ǒ0l 6esOɡ*! m#)SA9¥X ,=bDDA>!;Bw[OfkŜZEhq4KS&ϡMuHq)au{0<@FʀTr#v<DGi"ua y5QϸUc>G'>&:uke&w ]tWL4t+J-}0lQKޅp5"FNe%.9O %2[ ]ӪďtŅt>&H9T5QlpV1ynu^O[m Cu)_]$)1 u'r]]6K9 C@!'zTʋ甂ocZ4'jP\IlRQH*]7[KE9^+l A@.289(OJ@6"Sp u3k "/j0 q~R wtv>]槞¿C" +L7i7 >Ey t6H؅µPHlp^aj Hօ9peE&. 8sD&g xXr>ڥ~UWD 3)%N64)l 8 %qYzK&(g3#1Tд95U*zuQYU,iƠ ;_S, Pʩ3K |V"U18ç,x<2'r:vwk8ȎC(G-`d ƶp}SXTE+&M>l)0,ɝhil#zudݨa[B#Ue*opWqEx^'眒nB1O`SlJE3bxxcnHaX Rk}QJ{prO<fR]l~J+]4\@3vXDr,( jSY>nĽqĻvJJr9D ~.0J_N$|[ĥDuƉ-^؞ri1xn 4R .3{=쟆k^Ⱥ\ W3u3,8cd KYOpbLhv9Uq:}4Gi*_[(@?y2l#dOݨȬXEYOFC95lU: V8e@!Tvb-YIȲֺaJ^d]c. _<Ί@B{w0^ 4򩹫*Yo?~6) g-7sJm c?+D"Y@8`3q?n[up 2#mdn#: WIg& 餜p{v~Gm7[2XK[(Jxx@ӱtTL~L# $,1NlӠocy p; 5۹O@b}On;a`׌'iCT~󽰸Հ~2Rx @I0>`C\1Y[e^d5A2=:Z[m dVۮʫIaTM=o`)ըoՇn{L1bWoadGjKr7ݣ:csԝF5uKERCz6Tu%qƙanćl3=+/3e4QjjfqpyÐy$oCF0*Lmi2J}Q*qQGMg\!3b(1 hZ[ *B#Q-}W2?gdz `'p6lh !H m<1 s$ɫFv"6gkliYf*"5d !$NIB5jd$/=|W{,QH+r S/6i600 G!%~nzj0wjCb HMcQG;,XCI>gC;ll zdFDJ?H;ngf=d;$ ^$_~gX&HlS)%!^.2[r+7&Xd778װ(uN$]Î0۰f硅$m$Yˍ߮B&Íov͍Z|8 ,6Yhe6ld5nhhH ^U4v5$3ʾ8_Z#xQ="qK2)9b?Q!=F`گ ˤ}f᫓#Cx$ znV/gVL3I/NZTnXm,<`qnR{Z^D^9sH>c\ɓ'r31܇4ǟ5E_}E1!c< c")*N&bg'x<3hiDRCI 5M7\1ɾ"#rCL_KC ޯE8~|Rnr lI]Ɛa^@~w{}~Rӂ9lK81V7Vg YĂA1VpFU o0#S (ͨii]a<'衷d3[JsL]ξV~|,Ħ!tQoc OŖ#upQ*o#/k)Sm݀/,V'Wߟ_OѲzm>7݇߻w{Мw\""2ȝ4|`ey%%gmNyI.p:WwZ-< I\A>e S10nz Xi I{<|jxw{ѡwX1] Ȼ崗Z_N]-ipv6calc-1.0.0/samplecode/ip6_int000077500000000000000000000066271312366535500166550ustar00rootroot00000000000000#!/usr/bin/perl -w # # Convert valid IPv6 address to ip6.int PTR value. Convert valid # IPv4 address to in-addr.arpa PTR value. Anything not valid is # simply printed as is. Handles :: notation and embedded IPv4 # addresses. If the address is followed by /n, the PTR is # truncated to n bits. # # Examples: # nslookup -type=any `ip6_int 3ffe::203.34.97.6` looks up # 6.0.1.6.2.2.b.c.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.f.f.3.ip6.int # nslookup -type=any `ip6_int fe80::b432:e6ff/10` looks up # 2.e.f.ip6.int # nslookup -type=any `ip6_int ::127.0.0.1` looks up # 1.0.0.0.0.0.f.7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int # nslookup -type=any `ip6_int 127.0.0.1` looks up # 1.0.0.127.in-addr.arpa # nslookup -type=any `ip6_int 127.0.0.1/8` looks up # 127.in-addr.arpa # # Copyright 1997 Keith Owens . GPL. # require 5; use strict; use integer; my $v6; if ($#ARGV >= 0 && ($v6 = ($ARGV[0] =~ m;^([0-9a-fA-f:]+)(?::(\d+\.\d+\.\d+\.\d+))?(?:/(\d+))?$;)) || $ARGV[0] =~ m;^(\d+\.\d+\.\d+\.\d+)(?:/(\d+))?$;) { my $valid = 1; if ($v6) { my (@chunk) = split(/:/, $1, 99); my $mask = $3; if ($2) { my (@v4) = split(/\./, $2); $valid = ($v4[0] <= 255 && $v4[1] <= 255 && $v4[2] <= 255 && $v4[3] <= 255); if ($valid) { push(@chunk, sprintf("%x%02x", $v4[0], $v4[1])); push(@chunk, sprintf("%x%02x", $v4[2], $v4[3])); } } my $pattern = ""; if ($valid) { foreach (@chunk) { $pattern .= /^$/ ? 'b' : 'c'; } if ($pattern =~ /^bbc+$/) { @chunk = (0, 0, @chunk[2..$#chunk]); @chunk = (0, @chunk) while ($#chunk < 7); } elsif ($pattern =~ /^c+bb$/) { @chunk = (@chunk[0..$#chunk-2], 0, 0); push(@chunk, 0) while ($#chunk < 7); } elsif ($pattern =~ /^c+bc+$/) { my @left; push(@left, shift(@chunk)) while ($chunk[0] ne ""); shift(@chunk); push(@left, 0); push(@left, 0) while (($#left + $#chunk) < 6); @chunk = (@left, @chunk); } $valid = $#chunk == 7; } my $ip6int = "ip6.int"; my $i; if ($valid) { foreach (@chunk) { $i = hex($_); if ($i > 65535) { $valid = 0; } else { $ip6int = sprintf("%x.%x.%x.%x.", ($i) & 0xf, ($i >> 4) & 0xf, ($i >> 8) & 0xf, ($i >> 12) & 0xf) . $ip6int; } } } if ($valid && defined($mask)) { $valid = ($mask =~ /^\d+$/ && $mask <= 128); if ($valid) { $ip6int = substr($ip6int, int((128-$mask)/4)*2); if ($mask &= 3) { $i = hex(substr($ip6int, 0, 1)); $i >>= (4-$mask); substr($ip6int, 0, 1) = sprintf("%x", $i); } } } $ARGV[0] = $ip6int if ($valid); } else { # v4 my (@v4) = split(/\./, $1); my $mask = $2; $valid = ($v4[0] <= 255 && $v4[1] <= 255 && $v4[2] <= 255 && $v4[3] <= 255); my $v4 = hex(sprintf("%02X%02X%02X%02X", @v4)); if ($valid && defined($mask)) { $valid = ($mask =~ /^\d+$/ && $mask <= 32); if ($valid) { $v4 = $v4 & ((~0) << (32-$mask)); $v4[0] = ($v4 >> 24) & 255; $v4[1] = ($v4 >> 16) & 255; $v4[2] = ($v4 >> 8) & 255; $v4[3] = $v4 & 255; } } else { $mask = 32; } if ($valid) { my $i = 4 - int(($mask+7) / 8); pop(@v4) while ($i--); $ARGV[0] = join('.', reverse(@v4)); $ARGV[0] .= '.' if ($ARGV[0] ne ""); $ARGV[0] .= 'in-addr.arpa'; } } } print "@ARGV\n"; ipv6calc-1.0.0/samplecode/ipv6.h000066400000000000000000000211741312366535500164060ustar00rootroot00000000000000/* $USAGI: ipv6.h,v 1.4 2001/01/11 13:25:42 kunitake Exp $ */ /* * Linux INET6 implementation * * Authors: * Pedro Roque * * $**: ipv6.h,v 1.16 1999/04/22 10:07:27 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _NET_IPV6_H #define _NET_IPV6_H #include #include #include #include #define SIN6_LEN_RFC2133 24 /* * NextHeader field of IPv6 header */ #define NEXTHDR_HOP 0 /* Hop-by-hop option header. */ #define NEXTHDR_TCP 6 /* TCP segment. */ #define NEXTHDR_UDP 17 /* UDP message. */ #define NEXTHDR_IPV6 41 /* IPv6 in IPv6 */ #define NEXTHDR_ROUTING 43 /* Routing header. */ #define NEXTHDR_FRAGMENT 44 /* Fragmentation/reassembly header. */ #define NEXTHDR_ESP 50 /* Encapsulating security payload. */ #define NEXTHDR_AUTH 51 /* Authentication header. */ #define NEXTHDR_ICMP 58 /* ICMP for IPv6. */ #define NEXTHDR_NONE 59 /* No next header */ #define NEXTHDR_DEST 60 /* Destination options header. */ #define NEXTHDR_MAX 255 #define IPV6_DEFAULT_HOPLIMIT 64 #define IPV6_DEFAULT_MCASTHOPS 1 /* * Addr type * * type - unicast | multicast | anycast * scope - local | site | global * v4 - compat * v4mapped * any * loopback */ #define IPV6_ADDR_ANY 0x0000U #define IPV6_ADDR_UNICAST 0x0001U #define IPV6_ADDR_MULTICAST 0x0002U #define IPV6_ADDR_ANYCAST 0x0004U #define IPV6_ADDR_LOOPBACK 0x0010U #define IPV6_ADDR_LINKLOCAL 0x0020U #define IPV6_ADDR_SITELOCAL 0x0040U #define IPV6_ADDR_COMPATv4 0x0080U #define IPV6_ADDR_SCOPE_MASK 0x00f0U #define IPV6_ADDR_MAPPED 0x1000U #define IPV6_ADDR_RESERVED 0x2000U /* reserved address space */ /* * fragmentation header */ struct frag_hdr { unsigned char nexthdr; unsigned char reserved; unsigned short frag_off; __u32 identification; }; #ifdef __KERNEL__ #include extern struct ipv6_mib ipv6_statistics; #define IP6_INC_STATS(idev,field) ({if (idev) \ idev->stats.ipv6.field++; \ ipv6_statistics.field++;}) #define IP6_INC_STATS_BH(idev,field) IP6_INC_STATS(idev,field) #define IP6_INC_STATS_USER(idev,field) IP6_INC_STATS(idev,field) extern struct icmpv6_mib icmpv6_statistics; #define ICMP6_INC_STATS(idev,field) ({if (idev) \ idev->stats.icmpv6.field++; \ icmpv6_statistics.field++;}) #define ICMP6_INC_STATS_BH(idev,field) ICMP6_INC_STATS(idev,field) #define ICMP6_INC_STATS_USER(idev,field) ICMP6_INC_STATS(idev,field) extern struct udp_mib udp_stats_in6; #define UDP6_INC_STATS(field) (udp_stats_in6.field++) #define UDP6_INC_STATS_BH(field) (udp_stats_in6.field++) #define UDP6_INC_STATS_USER(field) (udp_stats_in6.field++) struct ip6_ra_chain { struct ip6_ra_chain *next; struct sock *sk; int sel; void (*destructor)(struct sock *); }; extern struct ip6_ra_chain *ip6_ra_chain; /* This structure is prepared by protocol, when parsing ancillary data and passed to IPv6. */ struct ipv6_txoptions { /* Length of this structure */ int tot_len; /* length of extension headers */ __u16 opt_flen; /* after fragment hdr */ __u16 opt_nflen; /* before fragment hdr */ struct ipv6_opt_hdr *hopopt; struct ipv6_opt_hdr *dst0opt; struct ipv6_rt_hdr *srcrt; /* Routing Header */ struct ipv6_opt_hdr *auth; struct ipv6_opt_hdr *dst1opt; /* Option buffer, as read by IPV6_PKTOPTIONS, starts here. */ }; struct ip6_flowlabel { struct ip6_flowlabel *next; u32 label; struct in6_addr dst; struct ipv6_txoptions *opt; atomic_t users; u32 linger; u8 share; u32 owner; unsigned long lastuse; unsigned long expires; }; #define IPV6_FLOWINFO_MASK __constant_htonl(0x0FFFFFFF) #define IPV6_FLOWLABEL_MASK __constant_htonl(0x000FFFFF) struct ipv6_fl_socklist { struct ipv6_fl_socklist *next; struct ip6_flowlabel *fl; }; extern struct ip6_flowlabel *fl6_sock_lookup(struct sock *sk, u32 label); extern struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions * opt_space, struct ip6_flowlabel * fl, struct ipv6_txoptions * fopt); extern void fl6_free_socklist(struct sock *sk); extern int ipv6_flowlabel_opt(struct sock *sk, char *optval, int optlen); extern void ip6_flowlabel_init(void); extern void ip6_flowlabel_cleanup(void); extern __inline__ void fl6_sock_release(struct ip6_flowlabel *fl) { if (fl) atomic_dec(&fl->users); } extern int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *)); extern int ip6_call_ra_chain(struct sk_buff *skb, int sel); extern u8 * ipv6_reassembly(struct sk_buff **skb, u8 *nhptr); extern u8 * ipv6_parse_hopopts(struct sk_buff *skb, u8 *nhptr); extern u8 * ipv6_parse_exthdrs(struct sk_buff **skb, u8 *nhptr); extern struct ipv6_txoptions * ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt); #define IPV6_FRAG_TIMEOUT (60*HZ) /* 60 seconds */ /* * Function prototype for build_xmit */ typedef int (*inet_getfrag_t) (const void *data, struct in6_addr *addr, char *, unsigned int, unsigned int); extern int ipv6_addr_type(struct in6_addr *addr); extern __inline__ int ipv6_addr_scope(struct in6_addr *addr) { return ipv6_addr_type(addr) & IPV6_ADDR_SCOPE_MASK; } extern __inline__ int ipv6_addr_cmp(struct in6_addr *a1, struct in6_addr *a2) { return memcmp((void *) a1, (void *) a2, sizeof(struct in6_addr)); } extern __inline__ void ipv6_addr_copy(struct in6_addr *a1, struct in6_addr *a2) { memcpy((void *) a1, (void *) a2, sizeof(struct in6_addr)); } #ifndef __HAVE_ARCH_ADDR_SET extern __inline__ void ipv6_addr_set(struct in6_addr *addr, __u32 w1, __u32 w2, __u32 w3, __u32 w4) { addr->s6_addr32[0] = w1; addr->s6_addr32[1] = w2; addr->s6_addr32[2] = w3; addr->s6_addr32[3] = w4; } #endif extern __inline__ int ipv6_addr_any(struct in6_addr *a) { return ((a->s6_addr32[0] | a->s6_addr32[1] | a->s6_addr32[2] | a->s6_addr32[3] ) == 0); } /* * Prototypes exported by ipv6 */ /* * rcv function (called from netdevice level) */ extern int ipv6_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt); /* * upper-layer output functions */ extern int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl, struct ipv6_txoptions *opt); extern int ip6_nd_hdr(struct sock *sk, struct sk_buff *skb, struct device *dev, struct in6_addr *saddr, struct in6_addr *daddr, int proto, int len); extern int ip6_build_xmit(struct sock *sk, inet_getfrag_t getfrag, const void *data, struct flowi *fl, unsigned length, struct ipv6_txoptions *opt, int hlimit, int flags); /* * skb processing functions */ extern int ip6_output(struct sk_buff *skb); extern int ip6_forward(struct sk_buff *skb); extern int ip6_input(struct sk_buff *skb); extern int ip6_mc_input(struct sk_buff *skb); /* * Extension header (options) processing */ extern u8 * ipv6_build_nfrag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptions *opt, struct in6_addr *daddr, u32 jumbolen); extern u8 * ipv6_build_frag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptions *opt); extern void ipv6_push_nfrag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt, u8 *proto, struct in6_addr **daddr_p); extern void ipv6_push_frag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt, u8 *proto); extern u8 * ipv6_skip_exthdr(struct ipv6_opt_hdr *hdr, u8 *nexthdrp, int len); extern struct ipv6_txoptions * ipv6_invert_rthdr(struct sock *sk, struct ipv6_rt_hdr *hdr); /* * socket options (ipv6_sockglue.c) */ extern int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval, int optlen); extern int ipv6_getsockopt(struct sock *sk, int level, int optname, char *optval, int *optlen); extern void ipv6_packet_init(void); extern void ipv6_netdev_notif_init(void); extern void ipv6_packet_cleanup(void); extern void ipv6_netdev_notif_cleanup(void); extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, u16 port, u32 info, u8 *payload); extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); #endif /* __KERNEL__ */ #endif /* _NET_IPV6_H */ ipv6calc-1.0.0/tools/000077500000000000000000000000001312366535500143705ustar00rootroot00000000000000ipv6calc-1.0.0/tools/DBIP-generate-db.pl000077500000000000000000000277001312366535500176270ustar00rootroot00000000000000#!/usr/bin/perl -W # # Perl converter for db-ip.com database files into ipv6calc proprietary Berkeley DB file # # Project : ipv6calc/DBIP # File : DBIP-generate-db.pl # Version : $Id: eeaa396bc045a167428c821a9088b488e5ff8a35 $ # Copyright : 2014-2017 by Peter Bieringer # License : GNU GPL version 2 # # Supported formats (https://db-ip.com/db/) # IP to Country (1000) # IP to City (1010) # IP to Location (1020) - UNTESTED # IP to ISP (1030) - UNTESTED # IP to Location + ISP (1040) use strict; use warnings; use Getopt::Std; use BerkeleyDB; use POSIX qw(strftime); use IO::Uncompress::Gunzip qw(gunzip $GunzipError); use Net::IP; use Text::CSV_PP; use Data::Dumper; my %opts; getopts ("s:qdAS:O:I:h?", \%opts); my $file_input; my $dir_output = "."; my $suffix = ""; my $suffix_orig; my $file_type = "cvs"; my $atomic = 0; my $line_start = 0; if (defined $opts{'h'} || defined $opts{'?'}) { print qq| Usage: PROGNAME -I [-O ] [-S ] [-A] Options: -I DB-IP.com CSV input file (support also csv.gz) -O optional output directory for DB files, default: . -S optional suffix -A atomic operation (generate .new and move on success) -d debug -s start from given line number (diagnostics) -q quiet |; exit 0; }; if (defined $opts{'I'}){ $file_input = $opts{'I'}; }; if (defined $opts{'O'}){ $dir_output = $opts{'O'}; }; if (defined $opts{'S'}){ $suffix = $opts{'S'}; }; if (defined $opts{'s'}){ $line_start = $opts{'s'}; }; $suffix_orig = $suffix; if (defined $opts{'A'}){ $suffix = $suffix . ".new"; $atomic = 1; }; if (! defined $file_input) { print "ERROR : no input file given (-I )\n"; exit 1; }; if (! -f $file_input) { print "ERROR : given input file doesn't exist: $file_input\n"; exit 1; }; if (! -d $dir_output) { print "ERROR : given output directory doesn't exist: $dir_output\n"; exit 1; }; my $type; my $date; my $type_string; if ($file_input !~ /^(.*\/)?dbip-(city|country|isp|location|full)-([0-9]{4})-([0-9]{2})(-(test|sample))?\.csv(\.gz)?$/o) { print "ERROR : input file name is not a valid dbip filename: $file_input\n"; exit 1; }; $date = $3 . $4 . "01"; $type_string = $2; if ($file_input =~ /\.gz$/o) { print "INFO : .gz suffix found on: $file_input\n" if (! defined $opts{'q'}); $file_type = "cvs.gz"; }; my $csv_fields_required = 0; if ($type_string eq "country") { $type = 1000; $csv_fields_required = 3; } elsif ($type_string eq "city") { $type = 1010; $csv_fields_required = 5; } elsif ($type_string eq "location") { # TODO verify string $type = 1020; $csv_fields_required = 12; } elsif ($type_string eq "isp") { # TODO verify string $type = 1030; $csv_fields_required = 6; } elsif ($type_string eq "full") { $type = 1040; $csv_fields_required = 15; } else { print "ERROR : unselected type (FIX CODE) for type_string: $type_string\n"; exit 1; }; print "INFO : input file: $file_input type=$type date=$date\n" if (! defined $opts{'q'}); if ($line_start > 0) { print "NOTICE: skip input lines (-s given) before line: $line_start\n"; }; my $filename_ipv4 = "$dir_output/ipv6calc-dbip-ipv4-$type_string.db" . $suffix; my $filename_ipv6 = "$dir_output/ipv6calc-dbip-ipv6-$type_string.db" . $suffix; my $filename_ipv4_orig = "$dir_output/ipv6calc-dbip-ipv4-$type_string.db" . $suffix_orig; my $filename_ipv6_orig = "$dir_output/ipv6calc-dbip-ipv6-$type_string.db" . $suffix_orig; my @a_ipv4; my @a_ipv6; if (-f $filename_ipv4) { unlink($filename_ipv4) || die "Can't delete old file: $filename_ipv4"; }; if (-f $filename_ipv6) { unlink($filename_ipv6) || die "Can't delete old db file: $filename_ipv6"; }; print "INFO : create db from input: IPv4=$filename_ipv4 IPv6=$filename_ipv6 INPUT=$file_input\n"; my $now_string = strftime "%Y%m%d-%H%M%S%z", gmtime; my %h_info4; my %h_info6; tie %h_info4, 'BerkeleyDB::Btree', -Filename => $filename_ipv4, -Subname => 'info', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $filename_ipv4: $! $BerkeleyDB::Error\n"; tie %h_info6, 'BerkeleyDB::Btree', -Filename => $filename_ipv6, -Subname => 'info', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $filename_ipv6: $! $BerkeleyDB::Error\n"; $h_info4{'dbusage'} = "ipv6calc"; $h_info4{'dbformat'} = "1"; # ';' separated values $h_info4{'dbdate'} = $date; $h_info4{'dbtype'} = $type + 4; $h_info4{'dbproto'} = '4'; $h_info4{'dbcreated'} = $now_string; $h_info4{'dbcreated_unixtime'} = time; $h_info6{'dbusage'} = "ipv6calc"; $h_info6{'dbformat'} = "1"; # ';' separated values $h_info6{'dbdate'} = $date; $h_info6{'dbtype'} = $type + 6; $h_info6{'dbproto'} = '6'; $h_info6{'dbcreated'} = $now_string; $h_info6{'dbcreated_unixtime'} = time; untie %h_info4; untie %h_info6; tie @a_ipv4, 'BerkeleyDB::Recno', -Filename => $filename_ipv4, -Subname => 'data', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $filename_ipv4: $! $BerkeleyDB::Error\n"; tie @a_ipv6, 'BerkeleyDB::Recno', -Filename => $filename_ipv6, -Subname => 'data', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $filename_ipv6: $! $BerkeleyDB::Error\n"; my $linecounter = 0; my $counter_ipv4 = 0; my $counter_ipv6 = 0; my $FILE; my $buffer; if ($file_type eq "cvs.gz") { print "INFO : create handle for gzip'ed file: $file_input\n" if (defined $opts{'d'}); $FILE = new IO::Uncompress::Gunzip $file_input or die "IO::Uncompress::Gunzip failed: $GunzipError\n"; } else { open($FILE, "<$file_input") || die "Can't open file: $file_input"; }; my %stats_city; my $csv = Text::CSV_PP->new({ binary => 1 }); while (<$FILE>) { my $line = $_; chomp $line; $linecounter++; if ((($linecounter % 100000) == 0) || (defined $opts{'d'})) { if (($line_start > 0) && ($linecounter < $line_start)) { print "INFO : (skip) linecounter=$linecounter: $line\n" if (! defined $opts{'q'}); } else { print "INFO : (progress) linecounter=$linecounter: $line\n" if (! defined $opts{'q'}); }; }; if (($line_start > 0) && ($linecounter == $line_start)) { print "NOTICE: (skip finished, start now parsing) linecounter=$linecounter: $line\n" if (! defined $opts{'q'}); }; if ($linecounter < $line_start) { next; }; # replace escaped quotes to avoid confusing CSV parser $line =~ s/\\\\\\"/'/g; # replace double (partially escaped) quotes to avoid confusing CSV parser $line =~ s/"\\"/"/g; $line =~ s/\\""/"/g; my $start; my $end; my $cc; my $city; my $region; my $district; my $zipcode; my $latitude; my $longitude; my $geoname_id; my $tz_offset; my $tz_name; my $isp_name; my $conn_type; my $orgname; my $status; my @entries; if ($type == 1000) { # country if ($line !~ /^"([0-9a-fA-F.:]*)","([0-9a-fA-F.:]*)","([A-Z]{0,2})"/o) { print "ERROR : unexpected line in file (line: $linecounter): $line\n"; exit 1; }; $start = $1; $end = $2; $cc = $3; } elsif ($type == 1010) { # city if ($line !~ /^"([0-9a-fA-F.:]*)","([0-9a-fA-F.:]*)","([A-Z]{0,2})","([^"]*)","([^"]*)"/o) { print "ERROR : unexpected line in file (line: $linecounter): $line\n"; exit 1; }; $start = $1; $end = $2; $cc = $3; $region= $4; $city = $5; if ((! defined $city) || ($city eq "")) { print "DEBUG: empty city found on linecounter=$linecounter\n" if (defined $opts{'d'}); $city = "-"; $stats_city{'empty-city'}++; }; if ((! defined $region) || ($region eq "")) { print "DEBUG: empty region found on linecounter=$linecounter\n" if (defined $opts{'d'}); $region = "-"; $stats_city{'empty-region'}++; }; } elsif ($type > 1010) { # full/isp/location if ($line !~ /^([0-9a-fA-F.:]*),([0-9a-fA-F.:]*),([A-Z]{0,2}),/o) { print "ERROR : unexpected line in file (line: $linecounter): $line\n"; exit 1; }; # convert line into array $status = $csv->parse($line); if ($status != 1) { print "ERROR : can't parse line in file (line: $linecounter): $line\n"; print "ERROR : CSV parser diagnostics: " . $csv->error_diag() . "\n"; exit 1; }; @entries = $csv->fields(); if ($linecounter == 1) { print "NOTICE: found number of entries per line: " . scalar(@entries) . "\n"; }; if (scalar(@entries) != $csv_fields_required) { print "ERROR : unexpected line in file, number of entries " . scalar(@entries) . " are not expected, not equal to $csv_fields_required (line: $linecounter): $line\n"; print Dumper(@entries); exit 1; }; my $f = 0; $start = $entries[$f++]; $end = $entries[$f++]; $cc = $entries[$f++]; # replace any semicolon in data with / to prevent separation issues for ($f = 0; $f < scalar(@entries); $f++) { $entries[$f] =~ s/;/\//g; }; } else { print "ERROR : unsupported type (FIX CODE) for parsing\n"; exit 1; }; if ((! defined $cc) || ($cc eq "")) { print "NOTICE: emtpy CC found on linecounter=$linecounter: $line\n" if (! defined $opts{'q'}); $cc = "--"; # unknown country }; my $start_value; my $end_value; my $start_value_0_15; my $start_value_16_31; my $end_value_0_15; my $end_value_16_31; my $data; if ($type == 1000) { $data = $cc; } elsif ($type == 1010) { $data = $cc . ";" . $region . ";" . $city; } elsif ($type > 1010) { shift @entries; shift @entries; $data = join(";", @entries); } else { print "ERROR : unsupported type (FIX CODE) for creating data string\n"; exit 1; }; if ($start =~ /^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/o) { $counter_ipv4++; # IPv4, short conversion $start_value = ($1 << 24) + ($2 << 16) + ($3 << 8) + $4; if ($end =~ /^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/o) { # IPv4, short conversion $end_value = ($1 << 24) + ($2 << 16) + ($3 << 8) + $4; } else { print "ERROR : can't parse IPv4 end while IPv4 start (line: $linecounter): $end\n"; exit 1; }; print "INFO : IPv4: $start " . sprintf("(%08x)", $start_value) . " $end " . sprintf("(%08x)", $end_value) . " $data\n" if (defined $opts{'d'}); push @a_ipv4, sprintf("%08x", $start_value) . ";" . sprintf("%08x", $end_value) . ";" . $data; } else { $counter_ipv6++; # IPv6 $start_value = Net::IP::ip_expand_address($start, 6); $end_value = Net::IP::ip_expand_address($end , 6); $start_value =~ s/://go; $end_value =~ s/://go; $start_value_0_15 = substr($start_value, 0, 8); # 1st 8 nibbles = 32 bits $start_value_16_31 = substr($start_value, 8, 8); # 1st 8 nibbles = 32 bits $end_value_0_15 = substr($end_value, 0, 8); # 1st 8 nibbiles = 32 bits $end_value_16_31 = substr($end_value, 8, 8); # 1st 8 nibbiles = 32 bits print "INFO : IPv6: $start " . sprintf("(%08x:%08x)", hex($start_value_0_15), hex($start_value_16_31)) . " $end " . sprintf("(%08x:%08x)", hex($end_value_0_15), hex($end_value_16_31)) . " $data\n" if (defined $opts{'d'}); push @a_ipv6, $start_value_0_15 . ";" . $start_value_16_31 . ";" . $end_value_0_15 . ";" . $end_value_16_31 . ";" . $data; }; }; if (! defined $opts{'q'}) { print "INFO : IPv4 lines: " . $counter_ipv4 . "\n"; print "INFO : IPv6 lines: " . $counter_ipv6 . "\n"; print "INFO : IPv4 array elements: " . scalar @a_ipv4 . "\n"; print "INFO : IPv6 array elements: " . scalar @a_ipv6 . "\n"; if (scalar(@a_ipv4) > 0) { print "INFO : IPv4 database first entry: " . $a_ipv4[0] . "\n"; print "INFO : IPv4 database last entry: " . $a_ipv4[-1] . "\n"; }; if (scalar(@a_ipv6) > 0) { print "INFO : IPv6 database first entry: " . $a_ipv6[0] . "\n"; print "INFO : IPv6 database last entry: " . $a_ipv6[-1] . "\n"; }; }; untie @a_ipv4; untie @a_ipv6; if ($atomic == "1") { rename $filename_ipv4, $filename_ipv4_orig; if ($? != 0) { print "ERROR : can't rename file to: $filename_ipv4_orig ($!) - delete: $filename_ipv4\n"; unlink $filename_ipv4; }; rename $filename_ipv6, $filename_ipv6_orig; if ($? != 0) { print "ERROR : can't rename file to: $filename_ipv6_orig ($!) - delete: $filename_ipv6\n"; unlink $filename_ipv6; }; }; ipv6calc-1.0.0/tools/DBIP-update.sh.in000077500000000000000000000062401312366535500173340ustar00rootroot00000000000000#!/bin/bash # # Simple shell script to update db-ip.com database files # # Project : ipv6calc/DBIP # File : DBIP-update.sh # Version : $Id: a87881eb13fd3f21a2651e0032aa1e22c12699a4 $ # Copyright : 2014-2015 by Peter Bieringer # License : GNU GPL version 2 DBIP_DAT_DIR_DEFAULT="@DBIP_DB@" [ -z "$DBIP_DAT_DIR" ] && DBIP_DAT_DIR="$DBIP_DAT_DIR_DEFAULT" DBIP_DAT_URL_BASE="http://download.db-ip.com/free/" DBIP_DAT_FILES="dbip-country-%Y-%m.csv.gz dbip-city-%Y-%m.csv.gz" DBIP_GENERATOR_LIST="./DBIP-generate-db.pl /usr/share/ipv6calc/tools/DBIP-generate-db.pl" help() { cat <] -s skip download -D database directory (optional) database directory: $DBIP_DAT_DIR (default: $DBIP_DAT_DIR_DEFAULT) it honors externally defined environment value: DBIP_DAT_DIR this script (and its helper scripts) will download data from DB-IP.com (free versions) and generate Berkeley DB files for ipv6calc "DBIP" database support DBIP_DAT_URL_BASE=$DBIP_DAT_URL_BASE DBIP_DAT_FILES=$DBIP_DAT_FILES END } while getopts "D:sh\?" opt; do case $opt in s) skip_download=1 ;; D) DBIP_DAT_DIR=$OPTARG ;; *) help exit 1 ;; esac done for entry in $DBIP_GENERATOR_LIST; do if [ -e "$entry" -a -x "$entry" ]; then generate_db="$entry" break fi done if [ -z "$generate_db" ]; then echo "ERROR : no DBIP database generator found from list: $DBIP_GENERATOR_LIST" exit 1 else echo "INFO : selected DBIP database generator: $generate_db" fi if [ ! -t 0 ]; then options_generate="-q" fi if [ ! -d "$DBIP_DAT_DIR" ]; then echo "ERROR : missing directory: $DBIP_DAT_DIR" exit 1 fi if [ ! -w "$DBIP_DAT_DIR" ]; then echo "ERROR : missing write permissions on directory: $DBIP_DAT_DIR" exit 1 fi # Download files download_result=1 if [ "$skip_download" != "1" ]; then for file in $DBIP_DAT_FILES; do # convert tokens year=$(date +%Y) month=$(date +%m) file=${file//%Y/$year} file=${file//%m/$month} file_dest="$DBIP_DAT_DIR/`basename "$file"`" echo "INFO : try to download file: $file ($file_dest)" wget -q -O "$file_dest" "$DBIP_DAT_URL_BASE$file" if [ $? -ne 0 ]; then echo "ERROR : download of file not successful: $file ($file_dest)" continue download_result=0 fi echo "INFO : download of file successful: $file ($file_dest)" done fi # create db files from downloaded files if [ "$download_result" = "1" ]; then for file in $DBIP_DAT_FILES; do time_begin=$(date '+%s') echo "INFO : begin $(date '+%Y%m%d-%H%M%S')" # convert tokens year=$(date +%Y) month=$(date +%m) file=${file//%Y/$year} file=${file//%m/$month} file_input="$DBIP_DAT_DIR/`basename "$file"`" nice -n 19 $generate_db $options_generate -I "$file_input" -O "$DBIP_DAT_DIR" -A result=$? echo "INFO : end $(date '+%Y%m%d-%H%M%S')" time_end=$(date '+%s') time_delta=$[ $time_end - $time_begin ] time_delta_min=$[ ($time_delta + 59) / 60 ] if [ $result -ne 0 ]; then echo "ERROR : processing of file was not successful" fi echo "INFO : processing time for $file: $time_delta sec ($time_delta_min min) (remove downloaded file now)" rm -f "$file_input" done fi ipv6calc-1.0.0/tools/GeoIP-update.sh.in000077500000000000000000000046201312366535500175610ustar00rootroot00000000000000#!/bin/bash # # Simple shell script to update GeoIP database files # # Project : ipv6calc/GeoIP # File : GeoIP-update.sh # Version : $Id: 06c282f199bee054aa8b8522d74a59f72e8c14a7 $ # Copyright : 2012-2013 by Peter Bieringer # License : GNU GPL version 2 GEOIP_DAT_DIR_DEFAULT="@GEOIP_DB@" [ -z "$GEOIP_DAT_DIR" ] && GEOIP_DAT_DIR="$GEOIP_DAT_DIR_DEFAULT" GEOIP_DAT_URL_BASE="http://geolite.maxmind.com/download/geoip/database/" GEOIP_DAT_FILES="GeoLiteCountry/GeoIP.dat.gz GeoIPv6.dat.gz GeoLiteCity.dat.gz GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz asnum/GeoIPASNum.dat.gz asnum/GeoIPASNumv6.dat.gz" help() { cat <] -D database directory (optional) database directory: $GEOIP_DAT_DIR (default: $GEOIP_DAT_DIR_DEFAULT) it honors externally defined environment value: GEOIP_DAT_DIR this script will download data from geolite.maxmind.com (GeoIP) into given/set database directory GEOIP_DAT_URL_BASE=$GEOIP_DAT_URL_BASE GEOIP_DAT_FILES=$GEOIP_DAT_FILES END } while getopts "D:h\?" opt; do case $opt in D) GEOIP_DAT_DIR=$OPTARG ;; *) help exit 1 ;; esac done if [ ! -d "$GEOIP_DAT_DIR" ]; then echo "ERROR : missing directory: $GEOIP_DAT_DIR" exit 1 fi if [ ! -w "$GEOIP_DAT_DIR" ]; then echo "ERROR : missing write permissions on directory: $GEOIP_DAT_DIR" exit 1 fi # Download and unpack files for file in $GEOIP_DAT_FILES; do file_basename="`basename "$file"`" file_basename_decomp="`basename "$file" .gz`" file_dest="$GEOIP_DAT_DIR/$file_basename" echo "INFO : try to download file: $file ($file_dest)" wget -q -O "$file_dest" "$GEOIP_DAT_URL_BASE$file" if [ $? -ne 0 ]; then echo "ERROR : download of file not successful: $file ($file_dest)" continue fi echo "INFO : download of file successful: $file ($file_dest)" gunzip -f "$file_dest" if [ $? -ne 0 ]; then echo "ERROR : unzip of file not successful: $file_dest" continue fi echo "INFO : unzip of file successful: $file_dest" # check for softlinks case "$file_basename_decomp" in GeoLiteCity.dat) softlinkdst="GeoIPCity.dat" ;; GeoLiteCityv6.dat) softlinkdst="GeoIPCityv6.dat" ;; *) softlinkdst="" esac if [ -n "$softlinkdst" -a ! -e "$GEOIP_DAT_DIR/$softlinkdst" ]; then echo "NOTICE: softlink missing, create: $softlinkdst" ln -s "$file_basename_decomp" "$GEOIP_DAT_DIR/$softlinkdst" fi done ipv6calc-1.0.0/tools/IP2Location-update.sh.in000077500000000000000000000162621312366535500207060ustar00rootroot00000000000000#!/bin/bash # # Simple shell script to update IP2Location database files # # For updating non-sample files, credentials are required: # provided by file $HOME/.ip2location # login=EMAIL # password=PASSWORD # # Project : ipv6calc/IP2Location # File : IP2Location-update.sh # Version : $Id: 83d6286a480af1003847ae42ee9c2b865b2388b6 $ # Copyright : 2012-2015 by Peter Bieringer # License : GNU GPL version 2 # 20150416: remove softlink support, no longer needed IP2LOCATION_CONFIG=${IP2LOCATION_CONFIG:-"$HOME/.ip2location"} IP2LOCATION_DAT_DIR_DEFAULT="@IP2LOCATION_DB@" [ -z "$IP2LOCATION_DAT_DIR" ] && IP2LOCATION_DAT_DIR="$IP2LOCATION_DAT_DIR_DEFAULT" IP2LOCATION_DAT_URL_BASE="http://www.ip2location.com/download?login=@LOGIN@&password=@PASSWORD@" IP2LOCATION_DAT_URL_BASE_SAMPLE="http://www.ip2location.com/downloads" IP2LOCATION_DAT_URL_BASE_LITE_FREE="http://download.ip2location.com/lite" # Format: Proto:DB-Number # free downloads IP2LOCATION_DAT_FILES_LITE_FREE=${IP2LOCATION_DAT_FILES_LITE_FREE:-"IPv4:1 IPv6:1"} # (free) subscription is required for LITE DB-Number > 1 IP2LOCATION_DAT_FILES_LITE=${IP2LOCATION_DAT_FILES_LITE:-"IPv4:11 IPv6:11"} # list of normal (purchased subscription required) IP2LOCATION_DAT_FILES="${IP2LOCATION_DAT_FILES}" # list of recommended SAMPLE IP2LOCATION_DAT_FILES_SAMPLE=${IP2LOCATION_DAT_FILES_SAMPLE:-"IPv4:20 IPv6:20 IPv4:24 IPv6:24"} help() { cat <] [-n] [-s] -D database destination directory (optional) -n no action (dry-run) -s skip already successfully downloaded files database directory: $IP2LOCATION_DAT_DIR (default: $IP2LOCATION_DAT_DIR_DEFAULT) it honors externally defined environment value: IP2LOCATION_DAT_DIR this script will download data from ip2location.com into given/set database directory Sample databases: IP2LOCATION_DAT_FILES_SAMPLE=$IP2LOCATION_DAT_FILES_SAMPLE Lite (free) databases: IP2LOCATION_DAT_FILES_LITE_FREE=$IP2LOCATION_DAT_FILES_LITE_FREE With authentication (requires login/password in $IP2LOCATION_CONFIG) and a valid subscription IP2LOCATION_DAT_FILES_LITE=$IP2LOCATION_DAT_FILES_LITE IP2LOCATION_DAT_FILES=$IP2LOCATION_DAT_FILES Credentials must be defined in \$HOME/.ip2location by login=IP2LOCATION-LOGIN password=IP2LOCATION-PASSWORD In addition settings from above can be overwritten by setting related variables END } # source credentials (must provide login= and password=) authenticated=1 if [ -f "$IP2LOCATION_CONFIG" ]; then source "$IP2LOCATION_CONFIG" for token in login password; do if [ -z "${!token}" ]; then echo "NOTICE: missing credential token in: $IP2LOCATION_CONFIG [$token=] (skip authenticated downloads)" authenticated=0 fi done if [ $authenticated -ne 0 ]; then # replace placeholders IP2LOCATION_DAT_URL_BASE=${IP2LOCATION_DAT_URL_BASE//@LOGIN@/$login} IP2LOCATION_DAT_URL_BASE=${IP2LOCATION_DAT_URL_BASE//@PASSWORD@/$password} fi else authenticated=0 fi if [ $authenticated -eq 0 ]; then echo "NOTICE: IP2Location credential file not found, clear IP2LOCATION_DAT_FILES" IP2LOCATION_DAT_FILES="" echo "NOTICE: IP2Location credential file not found, clear IP2LOCATION_DAT_FILES_LITE" IP2LOCATION_DAT_FILES_LITE="" fi # option parsing while getopts "fsnD:h\?" opt; do case $opt in D) IP2LOCATION_DAT_DIR=$OPTARG ;; n) NO_ACTION=1 ;; s) SKIP_OK=1 ;; *) help exit 1 ;; esac done # directory check if [ ! -d "$IP2LOCATION_DAT_DIR" ]; then echo "ERROR : missing directory: $IP2LOCATION_DAT_DIR (check option -D or set IP2LOCATION_DAT_DIR)" exit 1 fi if [ ! -w "$IP2LOCATION_DAT_DIR" ]; then echo "ERROR : missing write permissions on directory: $IP2LOCATION_DAT_DIR" exit 1 fi # Download and unpack non-sample files for list in IP2LOCATION_DAT_FILES_LITE IP2LOCATION_DAT_FILES IP2LOCATION_DAT_FILES_LITE_FREE IP2LOCATION_DAT_FILES_SAMPLE; do if [ -z "${!list}" ]; then echo "NOTICE: empty list, skip: $list" continue fi echo "INFO : download list $list: ${!list}" url_base="$IP2LOCATION_DAT_URL_BASE" case $list in *_LITE|*_LITE_FREE) code_suffix="LITEBIN" file_prefix="IP2LOCATION-LITE" case $list in *_LITE_FREE) url_base="$IP2LOCATION_DAT_URL_BASE_LITE_FREE" ;; esac ;; *_SAMPLE) url_base="$IP2LOCATION_DAT_URL_BASE_SAMPLE" ;; *) code_suffix="BIN" file_prefix="IP2LOCATION" ;; esac file_dest="$IP2LOCATION_DAT_DIR/$file" for token in ${!list}; do proto=${token/:*} number=${token/*:} case $list in *_SAMPLE) case $proto in IPv4) prototoken="" ;; IPv6) prototoken="6" ;; *) echo "ERROR : unsupported proto in token: $token" exit 1 ;; esac file="sample${prototoken}.bin.db${number}.zip" ;; *) case $proto in IPv4) code="DB${number}${code_suffix}" file="${file_prefix}-DB${number}.BIN.ZIP" ;; IPv6) code="DB${number}${code_suffix}IPV6" file="${file_prefix}-DB${number}.IPV6.BIN.ZIP" ;; *) echo "ERROR : unsupported proto in token: $token" exit 1 ;; esac ;; esac case $list in *_SAMPLE|*_LITE_FREE) url="$url_base/$file" ;; *) url="$url_base&productcode=$code" ;; esac file_dest="$IP2LOCATION_DAT_DIR/$file" if [ "$NO_ACTION" = "1" ]; then echo "NOTICE: download skipped by option: $uri ($file_dest)" continue fi if [ "$SKIP_OK" = "1" ]; then if file "$file_dest" | grep -q "Zip archive data"; then echo "NOTICE: download skipped by option because file already existing and is a ZIP file: $code ($file_dest)" file_unzip=$(unzip -l "$file_dest" '*.BIN' | grep "\.BIN$" | awk '{ print $NF }' | head -1) if [ -n "$file_unzip" ]; then if [ ! -f "$IP2LOCATION_DAT_DIR/$file_unzip" ]; then unzip -o -d "$IP2LOCATION_DAT_DIR" "$file_dest" '*.BIN' if [ $? -ne 0 ]; then echo "ERROR : unzip of file not successful: $file_dest" continue else echo "INFO : unzip of file successful: $file_dest" fi else echo "INFO : skip unzip because unzipped file already existing: $code ($file_dest)" fi fi continue fi fi echo "INFO : try to download URL: $url ($file_dest)" wget -q -O "$file_dest" "$url" result=$? if [ $result -ne 0 ]; then echo "ERROR : download of file not successful: $file_dest ($!)" continue fi echo "INFO : download of file successful: $file_dest" if [ ! -s "$file_dest" ]; then echo "ERROR : downloaded file has ZERO size: $file_dest" continue fi if ! file "$file_dest" | grep -q "Zip archive data"; then if file "$file_dest" | grep -q "ASCII text"; then echo "ERROR : downloaded file is not a ZIP archive: $file_dest ($(head -1 "$file_dest"))" else echo "ERROR : downloaded file is not a ZIP archive: $file_dest" fi continue fi unzip -o -d "$IP2LOCATION_DAT_DIR" "$file_dest" '*.BIN' if [ $? -ne 0 ]; then echo "ERROR : unzip of file not successful: $file_dest" continue fi echo "INFO : unzip of file successful: $file_dest (remove downloaded file now)" rm -f "$file_dest" done done # Adjust permissions if [ "$NO_ACTION" != "1" ]; then chmod 644 $IP2LOCATION_DAT_DIR/*.BIN fi ipv6calc-1.0.0/tools/Makefile.in000066400000000000000000000026331312366535500164410ustar00rootroot00000000000000# Project : ipv6calc/ipv6calc # File : Makefile[.in] # Version : $Id: 6f48bd774d6279dab7e3cc71037cc1ecca8d007c $ # Copyright : 2006-2015 by Peter Bieringer # # Information: # Makefile for various tools # prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ # Compiler and Linker Options DEFAULT_CFLAGS ?= -O2 -Wall -g INCLUDES= -I../getopt/ -I../ -I../lib/ GETOBJS = ../getopt/getopt.o ../getopt/getopt1.o CC = @CC@ OBJS = registry-assignment-to-list.o # splint SPLINT_OPT_OUTSIDE = -warnposix -nullassign -uniondef -compdef -usedef -formatconst -exportlocal #SPLINT_OPT_OUTSIDE = -uniondef +matchanyintegral --nullassign +ignoresigns -compdef -usedef -modobserver -formatconst -warnposix -exportlocal SPLINT_TODO_LATER = -unrecog -retvalint all: .c.o: $(CC) -c $< $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) $(OBJS): ../config.h libipv6calc.a: cd ../ && ${MAKE} lib-make distclean: ${MAKE} clean for f in *.sh; do if [ -f $$f.in ]; then rm -f $$f; fi; done autoclean: ${MAKE} distclean clean: rm -f *.o test: splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: if [ ! -d $(DESTDIR)$(datadir)/ipv6calc/tools ]; then install -d -m 755 $(DESTDIR)$(datadir)/ipv6calc/tools; fi for f in *.sh *.pl; do install -m 755 $$f $(DESTDIR)$(datadir)/ipv6calc/tools; done ipv6calc-1.0.0/tools/ipv6calc-create-registry-list-ipv4.pl000077500000000000000000000503431312366535500234040ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc/databases/ipv4-assignment # File : create-registry-list.pl # Version : $Id: 5a0c45a5ab75dd20e0ba2d9a3d73e881e17f8c96 $ # Copyright : 2002-2017 by Peter Bieringer # License : GNU GPL v2 # # Information: # Perl program which creates IPv4 address assignement header # Requires: # XML::Simple use strict; use warnings; use IPC::Open2; use XML::Simple; use Getopt::Std; use BerkeleyDB; use POSIX qw(strftime); my $progname = $0; my $debug = 0; #$debug |= 0x01; #$debug |= 0x02; #$debug |= 0x04; # assignments_iana #$debug |= 0x08; # assignments_iana #$debug |= 0x10; # assignments gap closing #$debug |= 0x100; # assignments LISP #$debug |= 0x1000; # TLD store sub help { print qq| Usage: $progname [-S ] [-D ] [-H] [-B [-A]] [-d ] -S source directory -D destination directory -H create header file(s) -B create Berkeley DB file(s) -A atomic operation (generate .new and move on success) -d debug level -h this online help |; exit 0; }; # parse options our ($opt_h, $opt_S, $opt_D, $opt_B, $opt_H, $opt_A, $opt_d); getopts('d:hS:D:BHA') || help(); if (defined $opt_h) { help(); }; if (defined $opt_d) { $debug = $opt_d; }; unless (defined $opt_H || defined $opt_B) { print "WARN : nothing to do (missing -H|-B)\n"; exit 1; }; ## locations my $file_dst_h; my $dir_src; my $dir_dst; my $global_file; my $lisp_file; my @files; ## source file handling if (defined $opt_S) { $dir_src = $opt_S; $dir_src .= "/" if ($dir_src !~ /\/$/o); $global_file = $dir_src . "ipv4-address-space.xml"; $lisp_file = $dir_src . "site-db"; @files = ( $dir_src . "delegated-arin-extended-latest", $dir_src . "delegated-ripencc-latest", $dir_src . "delegated-apnic-latest", $dir_src . "delegated-lacnic-latest", $dir_src . "delegated-afrinic-latest" ); } else { # default $dir_src = "../registries/"; $global_file = $dir_src . "iana/ipv4-address-space.xml"; $lisp_file = $dir_src . "lisp/site-db"; @files = ( $dir_src . "arin/delegated-arin-extended-latest", $dir_src . "ripencc/delegated-ripencc-latest", $dir_src . "apnic/delegated-apnic-latest", $dir_src . "lacnic/delegated-lacnic-latest", $dir_src . "afrinic/delegated-afrinic-latest" ); }; ## destination file handling if (defined $opt_D) { $dir_dst = $opt_D; } else { # default $dir_dst = "."; }; $file_dst_h = $dir_dst . "/dbipv4addr_assignment.h"; my $file_dst_db_reg = $dir_dst . "/ipv6calc-external-ipv4-registry.db"; my $file_dst_db_cc = $dir_dst . "/ipv6calc-external-ipv4-countrycode.db"; my $file_dst_db_reg_orig; my $file_dst_db_cc_orig; print "INFO : destination file for header: " . $file_dst_h . "\n" if (defined $opt_H); print "INFO : destination file for DB (Registry): " . $file_dst_db_reg . "\n" if (defined $opt_B); print "INFO : destination file for DB (CountryCode): " . $file_dst_db_cc . "\n" if (defined $opt_B); my %assignments; my %assignments_iana; my %assignments_info; my %ip_countrycode; my %date_created; # convert a dotted IPv4 address into 32-bit decimal sub ipv4_to_dec { my $ipv4 = shift || die "Missing IPv4 address"; my ($t1, $t2, $t3, $t4) = split /\./, $ipv4; my $dec = $t4 + 256 * ( $t3 + 256 * ( $t2 + 256 * $t1 )); return ($dec); }; # convert a 32-bit decimal to dotted IPv4 address sub dec_to_ipv4 { my $dec = shift; my $t1 = ($dec & 0xff000000) >> 24; my $t2 = ($dec & 0x00ff0000) >> 16; my $t3 = ($dec & 0x0000ff00) >> 8; my $t4 = ($dec & 0x000000ff); my $ipv4 = sprintf "%d.%d.%d.%d", $t1, $t2, $t3, $t4; return ($ipv4); }; # find start of ipv4 in %assignments_iana sub find_start_iana { my $ipv4 = shift || die "Missing IPv4 address"; for my $key (keys %assignments_iana) { if ($ipv4 < $key) { next; } elsif ($ipv4 >= ($key + $assignments_iana{$key}->{'distance'})) { next; } else { # match return ($key); }; }; return (undef); }; ## global IANA assignment, last resort fallback sub proceed_global { my $ipv4; my $length; my ($start, $distance); # Proceed first global IANA file print "INFO : proceed file (XML): " . $global_file . "\n"; my $xs = XML::Simple->new(); my $xd = $xs->XMLin($global_file) || die "Cannot open/parse file: $global_file"; for my $e1 ($xd->{'updated'}) { $e1 =~ s/-//go; $date_created{'IANA'} = $e1; print "DEBUG : found create date: " . $e1 . "\n"; last; }; for my $e1 ($xd->{'record'}) { for my $e2 (@$e1) { print $$e2{'prefix'} . ":" . $$e2{'designation'} . ":" . $$e2{'status'} . "\n" if ($debug); my ($block, $prefixlength) = split /\//, $$e2{'prefix'}; if ($block =~ /^[0-9]+$/) { $start = &ipv4_to_dec(int($block) . ".0.0.0"); } else { die "Currently unsupported block, fix code: " . $block; }; $distance = 2**(32 - int($prefixlength)); printf "data : start=%08x distance=%08x from prefx=%s\n", $start, $distance, $$e2{'prefix'} if ($debug & 0x04); my $reg; if (uc($$e2{'status'}) eq "RESERVED") { $reg = "IANA"; } else { $reg = uc($$e2{'designation'}); $reg =~ s/RIPE NCC/RIPENCC/g; $reg =~ s/(IANA) .*/$1/g; $reg =~ s/.* (RIPENCC)/$1/g; if ( ($reg ne "ARIN") && ($reg ne "APNIC") && ($reg ne "RIPENCC") && ($reg ne "IANA") && ($reg ne "LACNIC") && ($reg ne "AFRINIC")) { # fallback to whois entry if (defined $$e2{'whois'}) { $$e2{'whois'} =~ /^whois\.([a-z]+)\..*/; $reg = uc($1); if (! defined $reg) { die "Can't extract registry from whois entry: " . $$e2{'whois'}; }; if ($reg eq "RIPE") { $reg = "RIPENCC"; }; if ( ($reg ne "ARIN") && ($reg ne "APNIC") && ($reg ne "RIPENCC") && ($reg ne "IANA") && ($reg ne "LACNIC") && ($reg ne "AFRINIC")) { die "Unsupported registry extracted from whois entry: " . $reg; }; } else { print "Missing whois entry for: " . &dec_to_ipv4($start) . " (fallback to ARIN)\n"; $reg = "ARIN"; }; }; }; printf "store : reg=%-10s start=%08x distance=%08x\n", $reg, $start, $distance if ($debug & 0x08); $assignments_iana{$start}->{'registry'} = $reg; $assignments_iana{$start}->{'distance'} = $distance; }; }; }; ## LISP sub proceed_lisp { # 1: map-server # 2: site - site name # 3: instance # 4: eid - eid prefix # 5: registered - yes or no # 6: who - ip addr of who last registered, blank & -- mean none # 7: proxy - yes or no (or blank) # 8: ttl - in what ever format the map-server reports it # 9: nrloc - how many rlocs in field 10 # 10: rlocs - seperated by ';' and with (up|down) # 11: timestamp - when data was collected, in UTC # # Example: # cisco-sjc-mr-ms-1|akennedy-xtr|0|153.16.9.64/28|no||no||0||2017.0223.0600 # cisco-sjc-mr-ms-1|akennedy-xtr|0|2610:d0:1233::/48|no||no||0||2017.0223.0600 my $ipv4; my $length; my ($start, $distance); print "INFO : proceed LISP data file (TXT): " . $lisp_file . "\n"; open(my $FILE, "<", $lisp_file) || die "Cannot open file: $lisp_file"; my ($map, $site, $instance, $eid, $registered, $who, $proxy, $ttl, $nrloc, $rloc, $timestamp); my $reg = "LISP"; my $line; my $line_number = 0; while (<$FILE>) { $line = $_; $line_number++; chomp $line; printf "LISP read : $line\n" if ($debug & 0x100); ($map, $site, $instance, $eid, $registered, $who, $proxy, $ttl, $nrloc, $rloc, $timestamp) = split /\|/, $line; if ($line_number == 1) { $timestamp =~ /^([0-9]{4})\.([0-9]{4})/o; $date_created{$reg} = $1 . $2; }; if ($eid !~ /^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\/([0-9]{1,2})$/o) { # not IPv4 next; }; printf "LISP process: $line\n" if ($debug & 0x100); printf "LISP convert: IPv4=$1 mask=$2\n" if ($debug & 0x100); # convert IPv4 address to decimal my $start_reg = &ipv4_to_dec($1); my $distance_reg = 2 ** (32 - $2); printf "LISP check : IPv4=$1 mask=$2\n" if ($debug & 0x100); if ( (($start_reg & 0xffff0000) != 0x99100000) ) { # not in assigned LISP space printf "LISP skip : IPv4=$start_reg mask=$distance_reg\n" if ($debug & 0x100); next; }; printf "LISP store : reg=%-10s start=%08x distance=%08x\n", $reg, $start_reg, $distance_reg if ($debug & 0x100); $assignments_info{$start_reg}->{'distance'} = $distance_reg; $assignments_info{$start_reg}->{'registry'} = $reg; $assignments_info{$start_reg}->{'info'} = "LISP#" . $site; }; close($FILE); }; &proceed_global(); ## proceed files of each registry foreach my $file (@files) { print "INFO : proceed file: " . $file . "\n"; open(my $FILE, "<", $file) || die "Cannot open file: $file"; my $line; my $flag_proceeded; my $flag_found_date = 0; my $start_reg = -1; my $start_tld = -1; my $distance_reg; my $distance_tld; my $cc_store = undef; my ($reg, $cc, $token, $ipv4, $numbers, $date, $status, $other); while (<$FILE>) { $line = $_; chomp $line; # catch date line if ($line =~ /^2(\.[0-9])?\|([^\|]+)\|.*\|([0-9]{8})\|[^\|]*$/o) { $date_created{uc($2)} = $3; print "DEBUG : found create date: " . $3 . "\n"; $flag_found_date = 1; next; }; # skip not proper lines if ( ! ( $line =~ /\|ipv4\|/o ) ) { next; }; if ( $line =~ /\|\*\|/o ) { next; }; #print $line . "\n"; ($reg, $cc, $token, $ipv4, $numbers, $date, $status, $other) = split /\|/, $line; if ( $token ne "ipv4" ) { next; }; $reg = uc($reg); $reg =~ s/\wRIPE\w/RIPENCC/g; $cc = uc($cc); if ( $reg ne "ARIN" && $reg ne "APNIC" && $reg ne "RIPENCC" && $reg ne "IANA" && $reg ne "LACNIC" && $reg ne "AFRINIC") { print "Unsupported registry: " . $reg . "\n"; next; }; if ($reg eq "ARIN" ) { } elsif ($reg eq "APNIC" ) { } elsif ($reg eq "RIPENCC" ) { } elsif ($reg eq "IANA" ) { } elsif ($reg eq "LACNIC" ) { } elsif ($reg eq "AFRINIC" ) { } else { die "Unsupported registry: " . $reg; }; # convert IPv4 address to decimal my $ipv4_dec = &ipv4_to_dec($ipv4); printf "data : reg=%-10s ipv4 =%08x numbers=%08x\n", $reg, $ipv4_dec, $numbers if ($debug & 0x01); if ($start_reg == -1) { # set start & distance $start_reg = $ipv4_dec; $distance_reg = $numbers; printf "init : reg=%-10s start=%08x distance=%08x\n", $reg, $start_reg, $distance_reg if ($debug & 0x01); } elsif (($start_reg + $distance_reg) == $ipv4_dec) { # extend distance $distance_reg += $numbers; printf "extend: reg=%-10s start=%08x distance=%08x\n", $reg, $start_reg, $distance_reg if ($debug & 0x01); } else { printf "store : reg=%-10s start=%08x distance=%08x\n", $reg, $start_reg, $distance_reg if ($debug & 0x02); $assignments{$start_reg}->{'distance'} = $distance_reg; $assignments{$start_reg}->{'registry'} = $reg; # set new start $start_reg = $ipv4_dec; $distance_reg = $numbers; printf "init : reg=%-10s start=%08x distance=%08x\n", $reg, $start_reg, $distance_reg if ($debug & 0x01); }; ## IP -> TLD (CountryCode) if ($cc !~ /^[A-Z][A-Z]$/o) { # no valid TLD if ($start_tld != -1) { $ip_countrycode{$start_tld}->{'distance'} = $distance_tld; $ip_countrycode{$start_tld}->{'cc'} = $cc_store; printf "store : tld=%-10s start=%08x distance=%08x\n", $cc_store, $start_tld, $distance_tld if ($debug & 0x1000); }; $cc_store = undef; $start_tld = -1; next; }; printf "data : tld=%-10s ipv4 =%08x numbers=%08x\n", $cc, $ipv4_dec, $numbers if ($debug & 0x01); if ($start_tld == -1) { # set start & distance $start_tld = $ipv4_dec; $distance_tld = $numbers; $cc_store = $cc; printf "init : tld=%-10s start=%08x distance=%08x\n", $cc, $start_tld, $distance_tld if ($debug & 0x01); } elsif ((($start_tld + $distance_tld) == $ipv4_dec) && ($cc_store eq $cc)) { # extend distance $distance_tld += $numbers; printf "extend: tld=%-10s start=%08x distance=%08x\n", $cc, $start_tld, $distance_tld if ($debug & 0x01); } else { $ip_countrycode{$start_tld}->{'distance'} = $distance_tld; $ip_countrycode{$start_tld}->{'cc'} = $cc_store; printf "store : tld=%-10s start=%08x distance=%08x\n", $cc, $start_tld, $distance_tld if ($debug & 0x1000); # set new start $start_tld = $ipv4_dec; $distance_tld = $numbers; $cc_store = $cc; printf "init : tld=%-10s start=%08x distance=%08x\n", $cc, $start_tld, $distance_tld if ($debug & 0x01); }; }; close($FILE); if ($start_reg != -1) { # store last found entry $assignments{$start_reg}->{'distance'} = $distance_reg; $assignments{$start_reg}->{'registry'} = $reg; printf "store : reg=%-10s start=%08x distance=%08x\n", $reg, $start_reg, $distance_reg if ($debug & 0x02); }; if ($start_tld != -1) { # store last found entry $ip_countrycode{$start_tld}->{'distance'} = $distance_tld; $ip_countrycode{$start_tld}->{'cc'} = $cc; printf "store : tld=%-10s start=%08x distance=%08x\n", $cc, $start_tld, $distance_tld if ($debug & 0x02); }; if ($flag_found_date != 1) { die("no date line found, unsupported file format"); }; }; &proceed_lisp(); my $now_string = strftime "%Y%m%d-%H%M%S%z %Z", localtime; my $string = ""; for my $reg (sort keys %date_created) { if (length($string) > 0) { $string .= " "; }; $string .= $reg . "/" . $date_created{$reg}; }; ## Create header file IP->Registry if (defined $opt_H) { print "INFO : create outfile now: " . $file_dst_h . "\n"; open(my $OUT, ">", $file_dst_h) || die "Cannot open outfile: $file_dst_h"; # Header print $OUT qq|/* * Project : ipv6calc * File : dbipv4_assignment.h |; print $OUT " * Version : \$I"; print $OUT "d:\$\n"; print $OUT qq| * Generated : $now_string * Data copyright: RIPE NCC, APNIC, ARIN, LACNIC, AFRINIC, LISP * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "databases/lib/libipv6calc_db_wrapper_BuiltIn.h" |; # print creation dates print $OUT "static const char* dbipv4addr_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; print $OUT "static const time_t dbipv4addr_registry_unixtime __attribute__ ((__unused__)) = " . time . ";\n"; # Main data structure print $OUT qq| static const s_ipv4addr_assignment dbipv4addr_assignment[] = { |; printf $OUT "\t//first , last , registry \n"; foreach my $ipv4 (sort { $a <=> $b } keys %assignments) { my $distance = $assignments{$ipv4}->{'distance'}; my $registry = $assignments{$ipv4}->{'registry'}; printf $OUT "\t{ 0x%08x, 0x%08x, REGISTRY_%-10s }, // %-15s - %s\n", $ipv4, ($ipv4 + $distance - 1), $registry, &dec_to_ipv4($ipv4), &dec_to_ipv4($ipv4 + $distance - 1); }; print $OUT qq|}; |; ## IANA assignment print $OUT qq| static const s_ipv4addr_assignment dbipv4addr_assignment_iana[] = { |; printf $OUT "\t//first , last , registry \n"; foreach my $ipv4 (sort { $a <=> $b } keys %assignments_iana) { my $distance = $assignments_iana{$ipv4}->{'distance'}; my $registry = $assignments_iana{$ipv4}->{'registry'}; printf $OUT "\t{ 0x%08x, 0x%08x, REGISTRY_%-10s }, // %-15s - %s\n", $ipv4, ($ipv4 + $distance - 1), $registry, &dec_to_ipv4($ipv4), &dec_to_ipv4($ipv4 + $distance - 1); }; print $OUT "};\n"; ## INFO table print $OUT qq| static const s_ipv4addr_info dbipv4addr_info[] = { |; printf $OUT "\t//first , last , registry \n"; foreach my $ipv4 (sort { $a <=> $b } keys %assignments_info) { next if (! defined $assignments_info{$ipv4}->{'info'}); my $distance = $assignments_info{$ipv4}->{'distance'}; my $info = $assignments_info{$ipv4}->{'info'}; printf $OUT "\t{ 0x%08x, 0x%08x, %-30s }, // %-15s - %s\n", $ipv4, ($ipv4 + $distance - 1), "\"" . $info . "\"", &dec_to_ipv4($ipv4), &dec_to_ipv4($ipv4 + $distance - 1); }; print $OUT "};\n"; ## END print "INFO : finished creation of header file: " . $file_dst_h . "\n"; }; ## Create DB file if (defined $opt_B) { ## IPv4->Registry print "INFO : start creation of DB file IPv4->Registry: " . $file_dst_db_reg . "\n"; # external database my $type = "2024"; # External IPv4->Registry my $date = $string; if (defined $opt_A) { $file_dst_db_reg_orig = $file_dst_db_reg; $file_dst_db_reg .= ".new"; } else { if (-f $file_dst_db_reg) { unlink($file_dst_db_reg) || die "Can't delete old file: $file_dst_db_reg"; }; }; print "INFO : create db from input: IPv4=$file_dst_db_reg\n"; ## SubDB: info my %h_ipv4_info; tie %h_ipv4_info, 'BerkeleyDB::Btree', -Filename => $file_dst_db_reg, -Subname => 'info', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; $h_ipv4_info{'dbusage'} = "ipv6calc"; $h_ipv4_info{'dbformat'} = "1"; # ';' separated values $h_ipv4_info{'dbdate'} = $date; $h_ipv4_info{'dbtype'} = $type; $h_ipv4_info{'dbcreated'} = $now_string; $h_ipv4_info{'dbcreated_unixtime'} = time + 1; untie %h_ipv4_info; ## SubDB: data my @a_ipv4; tie @a_ipv4, 'BerkeleyDB::Recno', -Filename => $file_dst_db_reg, -Subname => 'data', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; foreach my $ipv4 (sort { $a <=> $b } keys %assignments) { my $distance = $assignments{$ipv4}->{'distance'}; my $registry = $assignments{$ipv4}->{'registry'}; push @a_ipv4, sprintf("%08x;%08x;%s",$ipv4, ($ipv4 + $distance - 1), "REGISTRY_" . $registry); }; untie @a_ipv4; ## SubDB: data-iana my @a_ipv4_iana; tie @a_ipv4_iana, 'BerkeleyDB::Recno', -Filename => $file_dst_db_reg, -Subname => 'data-iana', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; foreach my $ipv4 (sort { $a <=> $b } keys %assignments_iana) { my $distance = $assignments_iana{$ipv4}->{'distance'}; my $registry = $assignments_iana{$ipv4}->{'registry'}; push @a_ipv4_iana, sprintf("%08x;%08x;%s", $ipv4, ($ipv4 + $distance - 1), "REGISTRY_" . $registry); }; untie @a_ipv4_iana; ## SubDB: data-info my @a_ipv4_info; tie @a_ipv4_info, 'BerkeleyDB::Recno', -Filename => $file_dst_db_reg, -Subname => 'data-info', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; foreach my $ipv4 (sort { $a <=> $b } keys %assignments_info) { my $distance = $assignments_info{$ipv4}->{'distance'}; my $info = $assignments_info{$ipv4}->{'info'}; push @a_ipv4_info, sprintf("%08x;%08x;%s", $ipv4, ($ipv4 + $distance - 1), $info); }; untie @a_ipv4_info; print "INFO : db created from input IPv4->Registry: $file_dst_db_reg\n"; if (defined $opt_A) { rename $file_dst_db_reg, $file_dst_db_reg_orig; if ($? != 0) { print "ERROR : can't rename file to: $file_dst_db_reg_orig ($!) - delete: $file_dst_db_reg\n"; unlink $file_dst_db_reg; } else { print "INFO : successful rename file to: $file_dst_db_reg_orig\n"; }; }; #### IPv4->CountryCode print "INFO : start creation of DB file: IPv4->CountryCode: " . $file_dst_db_cc . "\n"; # external database $type = "2034"; # External IPv4->CountryCode $date = $string; $now_string = strftime "%Y%m%d-%H%M%S%z", gmtime; my $info = "dbusage=ipv6calc;dbformat=1;dbdate=$date;dbtype=" . $type . ";dbproto=4;dbcreated=$now_string"; if (defined $opt_A) { $file_dst_db_cc_orig = $file_dst_db_cc; $file_dst_db_cc .= ".new"; } else { if (-f $file_dst_db_cc) { unlink($file_dst_db_cc) || die "Can't delete old file: $file_dst_db_cc"; }; }; print "INFO : create db from input: IPv4=$file_dst_db_cc\n"; my %h_info; tie %h_info, 'BerkeleyDB::Btree', -Filename => $file_dst_db_cc, -Subname => 'info', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $file_dst_db_cc: $! $BerkeleyDB::Error\n"; $h_info{'dbusage'} = "ipv6calc"; $h_info{'dbformat'} = "1"; # ';' separated values $h_info{'dbdate'} = $date; $h_info{'dbtype'} = $type; $h_info{'dbcreated'} = $now_string; $h_info{'dbcreated_unixtime'} = time + 1; untie %h_info; my @a; tie @a, 'BerkeleyDB::Recno', -Filename => $file_dst_db_cc, -Subname => 'data', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_cc: $! $BerkeleyDB::Error\n"; foreach my $ipv4 (sort { $a <=> $b } keys %ip_countrycode) { my $distance = $ip_countrycode{$ipv4}->{'distance'}; my $cc = $ip_countrycode{$ipv4}->{'cc'}; push @a, sprintf("%08x;%08x;%s", $ipv4, ($ipv4 + $distance - 1), $cc); }; untie @a; print "INFO : DB file created from input IPv4->CountryCode: " . $file_dst_db_cc . "\n"; if (defined $opt_A) { rename $file_dst_db_cc, $file_dst_db_cc_orig; if ($? != 0) { print "ERROR : can't rename file to: $file_dst_db_cc_orig ($!) - delete: $file_dst_db_cc\n"; unlink $file_dst_db_cc; } else { print "INFO : successful rename file to: $file_dst_db_cc_orig\n"; }; }; }; ipv6calc-1.0.0/tools/ipv6calc-create-registry-list-ipv6.pl000077500000000000000000000472731312366535500234160ustar00rootroot00000000000000#!/usr/bin/perl -w # # Project : ipv6calc/databases/ipv6-assignment # File : create-registry-list.pl # Version : $Id: 9a46f014f6f3b92a799dd7c71cac664e6ab4e9e3 $ # Copyright : 2005 by Simon Arlott (initial implementation of global file only) # 2005-2017 by Peter Bieringer (further extensions) # License : GNU GPL v2 # # Information: # Perl program which creates IPv6 address assignement header # Uses code from ipv4-assignment use strict; use warnings; use Net::IP; use Math::BigInt; use XML::Simple; use Getopt::Std; use BerkeleyDB; use POSIX qw(strftime); my $progname = $0; my $debug = 0; # Debugging # $debug |= 0x0010; # 0x0010: proceed registry files # 0x0020: proceed global file # 0x0100: subnet mask generation #$debug |= 0x0040; # fill data #$debug |= 0x0200; # parse lines #$debug |= 0x0400; # store registry #$debug |= 0x100; # assignments LISP #$debug |= 0x4000; # store countrycode #$debug |= 0x0080; # skip optimizer sub help { print qq| Usage: $progname [-S ] [-D ] [-H] [-B [-A]] [-d ] -S source directory -D destination directory -H create header file(s) -B create Berkeley DB file(s) -A atomic operation (generate .new and move on success) -d debug level -h this online help |; exit 0; }; ## parse options our ($opt_h, $opt_S, $opt_D, $opt_B, $opt_H, $opt_A, $opt_d); getopts('d:hS:D:BHA') || help(); if (defined $opt_h) { help(); }; if (defined $opt_d) { $debug = $opt_d; }; unless (defined $opt_H || defined $opt_B) { print "WARN : nothing to do (missing -H|-B)\n"; exit 1; }; ## locations my $file_dst_h; my $dir_src; my $dir_dst; my $global_file; my $lisp_file; my @files; ## source file handling if (defined $opt_S) { $dir_src = $opt_S; $dir_src .= "/" if ($dir_src !~ /\/$/o); $global_file = $dir_src . "ipv6-unicast-address-assignments.xml"; $lisp_file = $dir_src . "site-db"; @files = ( $dir_src . "delegated-arin-extended-latest", $dir_src . "delegated-ripencc-latest", $dir_src . "delegated-apnic-latest", $dir_src . "delegated-lacnic-latest", $dir_src . "delegated-afrinic-latest" ); } else { # default $dir_src = "../registries/"; $global_file = $dir_src . "iana/ipv6-unicast-address-assignments.xml"; $lisp_file = $dir_src . "lisp/site-db"; @files = ( $dir_src . "arin/delegated-arin-extended-latest", $dir_src . "ripencc/delegated-ripencc-latest", $dir_src . "apnic/delegated-apnic-latest", $dir_src . "lacnic/delegated-lacnic-latest", $dir_src . "afrinic/delegated-afrinic-latest" ); }; ## destination file handling if (defined $opt_D) { $dir_dst = $opt_D; } else { # default $dir_dst = "."; }; $file_dst_h = $dir_dst . "/dbipv6addr_assignment.h"; my $file_dst_db_reg = $dir_dst . "/ipv6calc-external-ipv6-registry.db"; my $file_dst_db_cc = $dir_dst . "/ipv6calc-external-ipv6-countrycode.db"; my $file_dst_db_reg_orig; my $file_dst_db_cc_orig; print "INFO : destination file for header: " . $file_dst_h . "\n" if (defined $opt_H); print "INFO : destination file for DB (Registry): " . $file_dst_db_reg . "\n" if (defined $opt_B); print "INFO : destination file for DB (CountryCode): " . $file_dst_db_cc . "\n" if (defined $opt_B); ## Read data my (@arin, @apnic, @ripencc, @iana, @lacnic, @afrinic, @reserved, @s6to4, @s6bone); my @cc_array; my @info_array; my %date_created; # Generate subnet powers my %subnet_masks; print "DEBUG : generate subnet masks\n"; for (my $i = 0; $i <= 64; $i++) { my $mask; $mask = Math::BigInt->new("0xffffffffffffffff"); $mask->blsft(64 - $i); #$mask->bnot(); my $ip_ipv6_int = $mask->copy(); $ip_ipv6_int->brsft(32); $ip_ipv6_int->band("0xffffffff"); $subnet_masks{$i}->{'mask_00_31'} = sprintf("%08x", $ip_ipv6_int); $ip_ipv6_int = $mask->copy(); $ip_ipv6_int->band("0xffffffff"); $subnet_masks{$i}->{'mask_32_63'} = sprintf("%08x", $ip_ipv6_int); printf "Prefix length %3d: ", $i if ($debug & 0x100); printf " mask_00_31=" . $subnet_masks{$i}->{'mask_00_31'} . " mask_32_63=" . $subnet_masks{$i}->{'mask_32_63'} . "\n" if ($debug & 0x100); }; # Fill global assignement (IPv6 should be more hierarchical than IPv4) sub proceed_global { # Proceed first global IANA file print "INFO : proceed file (XML): " . $global_file . "\n"; my $xs = XML::Simple->new(); my $xd = $xs->XMLin($global_file) || die "Cannot open/parse file: $global_file"; for my $e1 ($xd->{'updated'}) { $e1 =~ s/-//go; $date_created{'IANA'} = $e1; print "DEBUG : found create date: " . $e1 . "\n"; last; }; for my $e1 ($xd->{'record'}) { for my $e2 (@$e1) { #print $$e2{'prefix'} . ":" . $$e2{'description'} . "\n"; my $ipv6 = $$e2{'prefix'}; my $reg = $$e2{'description'}; # Check for > /32 my ($addr, $length) = split /\//, $ipv6; if ($length > 32) { die "Currently unsupported prefix length (>32): $ipv6"; }; print "reg=" . $reg . " addr=$ipv6\n" if ($debug & 0x20); $reg = uc($reg); $reg =~ s/RIPE NCC/RIPENCC/g; #print $$e2{'prefix'} . ":" . $reg . "\n"; if ($reg eq "ARIN" ) { push @arin, $ipv6; } elsif ($reg eq "APNIC" ) { push @apnic, $ipv6; } elsif ($reg eq "RIPENCC" ) { push @ripencc, $ipv6; } elsif ($reg eq "IANA" ) { push @iana, $ipv6; } elsif ($reg eq "LACNIC" ) { push @lacnic, $ipv6; } elsif ($reg eq "AFRINIC" ) { push @afrinic, $ipv6; } elsif ($reg eq "RESERVED" ) { push @reserved, $ipv6; } elsif ($reg eq "6TO4" ) { push @s6to4, $ipv6; } elsif ($reg eq "6BONE" ) { push @s6bone, $ipv6; } else { die "Unsupported registry: " . $reg . "\n"; }; }; }; }; ## LISP sub proceed_lisp { # 1: map-server # 2: site - site name # 3: instance # 4: eid - eid prefix # 5: registered - yes or no # 6: who - ip addr of who last registered, blank & -- mean none # 7: proxy - yes or no (or blank) # 8: ttl - in what ever format the map-server reports it # 9: nrloc - how many rlocs in field 10 # 10: rlocs - seperated by ';' and with (up|down) # 11: timestamp - when data was collected, in UTC # # Example: # cisco-sjc-mr-ms-1|akennedy-xtr|0|153.16.9.64/28|no||no||0||2017.0223.0600 # cisco-sjc-mr-ms-1|akennedy-xtr|0|2610:d0:1233::/48|no||no||0||2017.0223.0600 my $ipv6; my $length; my ($start, $distance); print "INFO : proceed LISP data file (TXT): " . $lisp_file . "\n"; open(my $FILE, "<", $lisp_file) || die "Cannot open file: $lisp_file"; my ($map, $site, $instance, $eid, $registered, $who, $proxy, $ttl, $nrloc, $rloc, $timestamp); my $reg = "LISP"; my $line; my $line_number = 0; my $ipv6_check = "2610:d0::/32"; # assigned for LISP my $ip_ipv6_check = new Net::IP($ipv6_check) || die "Can't create IPv6 object from ipv6=$ipv6_check"; while (<$FILE>) { $line = $_; $line_number++; chomp $line; printf "LISP read : $line\n" if ($debug & 0x100); ($map, $site, $instance, $eid, $registered, $who, $proxy, $ttl, $nrloc, $rloc, $timestamp) = split /\|/, $line; if ($line_number == 1) { $timestamp =~ /^([0-9]{4})\.([0-9]{4})/o; $date_created{$reg} = $1 . $2; }; if ($eid !~ /^([0-9a-f:]+)\/([0-9]{1,3})$/o) { # not IPv6 printf "LISP skip !6: $line\n" if ($debug & 0x100); next; }; my $ipv6 = $1; my $prefixlen = $2; if ($prefixlen > 64) { # only prefix length <= 64 is supported by lookup table printf "LISP skip PL: $line\n" if ($debug & 0x100); next; }; printf "LISP process: $line\n" if ($debug & 0x100); printf "LISP convert: IPv6=$ipv6/$prefixlen\n" if ($debug & 0x100); # convert IPv6 address my $ip_ipv6 = new Net::IP($ipv6 . "/". $prefixlen) || die "Can't create IPv6 object from ipv6=$ipv6"; my $test = $ip_ipv6->overlaps($ip_ipv6_check); if ($test != $Net::IP::IP_A_IN_B_OVERLAP) { printf "LISP skip (!L): $line\n" if ($debug & 0x100); next; }; printf "LISP store : ipv6=%s info=%s\n", $ip_ipv6->ip() . "/" . $prefixlen, $site if ($debug & 0x100); push @info_array, $ip_ipv6->ip() . "/" . $prefixlen . "/" . "LISP#" . $site; }; close($FILE); }; ## Main &proceed_lisp(); &proceed_global(); foreach my $file (@files) { if ($debug & 0x100) { print "NOTICE: skip registry files\n"; next; }; print "INFO : proceed file: " . $file . "\n"; my $counter = 0; open(my $FILE, "<", $file) || die "Cannot open file: $file"; my $line; my %cache; my $flag_found_date = 0; my $version; while (<$FILE>) { $line = $_; chomp $line; $counter++; # catch date line if ($line =~ /^2(\.[0-9])?\|([^\|]+)\|.*\|([0-9]{8})\|[^\|]*$/o) { $date_created{uc($2)} = $3; print "DEBUG : found create date: " . $3 . "\n"; $flag_found_date = 1; next; }; # skip not proper lines if ( ! ( $line =~ /\|ipv6\|/o ) ) { next; }; if ( $line =~ /\|\*\|/o ) { next; }; print $line . "\n" if ($debug & 0x0200); my ($reg, $cc, $token, $ipv6, $prefixlen, $date, $status, $other) = split /\|/o, $line; if ( $token ne "ipv6" ) { next; }; $reg = uc($reg); $reg =~ s/\wRIPE\w/RIPENCC/og; $cc = uc($cc); # get registry array my $parray; if ($reg eq "ARIN" ) { $parray = \@arin; } elsif ($reg eq "APNIC" ) { $parray = \@apnic; } elsif ($reg eq "RIPENCC" ) { $parray = \@ripencc; } elsif ($reg eq "IANA" ) { $parray = \@iana; } elsif ($reg eq "LACNIC" ) { $parray = \@lacnic; } elsif ($reg eq "AFRINIC" ) { $parray = \@afrinic; } else { die "Unsupported registry: " . $reg; }; my $ip_ipv6 = new Net::IP($ipv6) || die "Can't create IPv6 object from ipv6=$ipv6"; # store in CountryCode array if ($cc =~ /^[A-Z][A-Z]$/o) { # Push into array print "store: cc=" . $cc . " ipv6=" . $ip_ipv6->ip() . "/" . $prefixlen . "\n" if ($debug & 0x4000); push @cc_array, $ip_ipv6->ip() . "/" . $prefixlen . "/" . $cc; }; ## Check registry assignment print "check: reg=" . $reg . " ipv6=" . $ipv6 . "/" . $prefixlen . "\n" if ($debug & 0x10); goto("Label_finished") if ($debug & 0x80); # Check for already included in range: my $flag = 0; my $ip_ipv6_check; my $test; Label_restart: for (my $i = 0; $i < scalar(@$parray); $i++) { my $ipv6_check = $$parray[$i]; print "check: check against ipv6=" . $ipv6_check if ($debug & 0x10); if (defined $cache{$ipv6_check}) { $ip_ipv6_check = $cache{$ipv6_check}; } else { $ip_ipv6_check = new Net::IP($ipv6_check) || die "Can't create IPv6 object from ipv6=$ipv6_check"; $cache{$ipv6_check} = $ip_ipv6_check; }; $test = $ip_ipv6->overlaps($ip_ipv6_check); if ($test == $Net::IP::IP_IDENTICAL) { print " IDENTICAL\n" if ($debug & 0x10); $flag = 1; last; } elsif ($test == $Net::IP::IP_A_IN_B_OVERLAP) { print " INCLUDED\n" if ($debug & 0x10); $flag = 1; last; } elsif ($test == $Net::IP::IP_B_IN_A_OVERLAP) { # check value is included in ipv6 range print " REMOVE\n" if ($debug & 0x10); goto("Label_restart"); } else { print " NO MATCH\n" if ($debug & 0x10); }; }; if ($flag == 1) { next; }; Label_finished: # Check for > /64 if ($prefixlen > 64) { die "Currently unsupported prefix length (>64): $ipv6/$prefixlen"; }; $ip_ipv6 = new Net::IP($ipv6); print "store: reg=" . $reg . " ipv6=" . $ip_ipv6->ip() . "/" . $prefixlen . "\n" if ($debug & 0x0400); # Push into array push @$parray, $ip_ipv6->ip() . "/" . $prefixlen; }; close($FILE); if ($flag_found_date != 1) { die("no date line found, unsupported file format"); }; }; # Create hash my %data; my %data_cc; my %data_info; sub fill_data { my $parray = shift || die "missing array pointer"; my $reg = shift || die "missing registry"; my $pdata = shift || die "missing hash pointer"; if ($reg eq "CC") { print "INFO : fill data for CountryCode assignment\n"; } elsif ($reg eq "INFO") { print "INFO : fill data for Info assignment\n"; } else { print "INFO : fill data for registry: $reg\n"; }; foreach my $entry (sort @$parray) { my ($ipv6, $length, $data); if ($reg eq "CC" || $reg eq "INFO") { ($ipv6, $length, $data) = split /\//o, $entry; } else { ($ipv6, $length) = split /\//o, $entry; $data = $reg; }; print " raw=$entry ipv6=$ipv6 length=$length data=$data" if ($debug & 0x40); my $ip_ipv6 = new Net::IP($ipv6 . "/" . $length); my $ip_ipv6_int = $ip_ipv6->intip(); my $ip_ipv6_int_32_63 = $ip_ipv6_int->copy(); # MSB 00-31 $ip_ipv6_int->brsft(96); my $ipv6_hex_00_31 = sprintf("%08x", $ip_ipv6_int); # MSB 32-63 $ip_ipv6_int_32_63->brsft(64); $ip_ipv6_int_32_63->band("0xffffffff"); my $ipv6_hex_32_63 = sprintf("%08x", $ip_ipv6_int_32_63); $$pdata{$ipv6}->{'ipv6_00_31'} = $ipv6_hex_00_31; $$pdata{$ipv6}->{'ipv6_32_63'} = $ipv6_hex_32_63; my $mask_00_31 = $subnet_masks{$ip_ipv6->prefixlen()}->{'mask_00_31'}; my $mask_32_63 = $subnet_masks{$ip_ipv6->prefixlen()}->{'mask_32_63'}; $$pdata{$ipv6}->{'mask_00_31'} = $mask_00_31; $$pdata{$ipv6}->{'mask_32_63'} = $mask_32_63; $$pdata{$ipv6}->{'mask_length'} = $length; $$pdata{$ipv6}->{'reg'} = $data; print " ipv6_hex_00_31=$ipv6_hex_00_31 ipv6_hex_32_63=$ipv6_hex_32_63 mask_00_31=$mask_00_31 mask_00_31=$mask_32_63 data=$data\n" if ($debug & 0x40); }; }; &fill_data(\@apnic , "APNIC" , \%data); &fill_data(\@ripencc, "RIPENCC", \%data); &fill_data(\@arin , "ARIN" , \%data); &fill_data(\@lacnic , "LACNIC" , \%data); &fill_data(\@afrinic, "AFRINIC", \%data); &fill_data(\@iana , "IANA" , \%data); &fill_data(\@s6to4 , "6TO4" , \%data); &fill_data(\@s6bone , "6BONE" , \%data); &fill_data(\@cc_array, "CC" , \%data_cc); &fill_data(\@info_array, "INFO" , \%data_info); my $now_string = strftime "%Y%m%d-%H%M%S%z %Z", localtime; my $string = ""; for my $reg (sort keys %date_created) { if (length($string) > 0) { $string .= " "; }; $string .= $reg . "/" . $date_created{$reg}; }; ## Create header file if (defined $opt_H) { print "INFO : create header file now: " . $file_dst_h . "\n"; open(my $OUT, ">", $file_dst_h) || die "Cannot open outfile: $file_dst_h"; # Header print $OUT qq|/* * Project : ipv6calc * File : dbipv6_assignment.h |; print $OUT " * Version : \$I"; print $OUT "d:\$\n"; print $OUT qq| * Generated : $now_string * Data copyright: IANA ARIN RIPENCC APNIC LACNIC AFRINIC * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "databases/lib/libipv6calc_db_wrapper_BuiltIn.h" |; # print creation dates print $OUT "static const char* dbipv6addr_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; print $OUT "static const time_t dbipv6addr_registry_unixtime __attribute__ ((__unused__)) = " . time . ";\n"; # Main data structure print $OUT qq| static const s_ipv6addr_assignment dbipv6addr_assignment[] = { |; printf $OUT "\t//%-10s, %-10s, %-10s, %-10s, %-s, %-10s\n", "ipv6_00_31", "ipv6_32_63", "mask_00_31", "mask_32_63", "mask_length", "registry"; foreach my $ipv6 (sort keys %data) { printf $OUT "\t{ 0x%s, 0x%s, 0x%s, 0x%s, %3d, REGISTRY_%-10s },\n", $data{$ipv6}->{'ipv6_00_31'}, $data{$ipv6}->{'ipv6_32_63'}, $data{$ipv6}->{'mask_00_31'}, $data{$ipv6}->{'mask_32_63'}, $data{$ipv6}->{'mask_length'}, $data{$ipv6}->{'reg'}; }; print $OUT "};\n"; # data-info structure print $OUT qq| static const s_ipv6addr_info dbipv6addr_info[] = { |; printf $OUT "\t//%-10s, %-10s, %-10s, %-10s, %-s, %-10s\n", "ipv6_00_31", "ipv6_32_63", "mask_00_31", "mask_32_63", "mask_length", "info"; foreach my $ipv6 (sort keys %data_info) { printf $OUT "\t{ 0x%s, 0x%s, 0x%s, 0x%s, %3d, \"%s\" },\n", $data_info{$ipv6}->{'ipv6_00_31'}, $data_info{$ipv6}->{'ipv6_32_63'}, $data_info{$ipv6}->{'mask_00_31'}, $data_info{$ipv6}->{'mask_32_63'}, $data_info{$ipv6}->{'mask_length'}, $data_info{$ipv6}->{'reg'}; }; print $OUT "};\n"; close($OUT); print "INFO : header file created from input: " . $file_dst_h . "\n"; }; ## Create DB file if (defined $opt_B) { #### IPv6->Registry print "INFO : start creation of DB file IPv6->Registry: " . $file_dst_db_reg . "\n"; # external database my $type = "2026"; # External IPv6->Registry my $date = $string; my $info = "dbusage=ipv6calc;dbformat=1;dbdate=$date;dbtype=" . $type . ";dbproto=6;dbcreated=$now_string"; if (defined $opt_A) { $file_dst_db_reg_orig = $file_dst_db_reg; $file_dst_db_reg .= ".new"; } else { if (-f $file_dst_db_reg) { unlink($file_dst_db_reg) || die "Can't delete old file: $file_dst_db_reg"; }; }; print "INFO : create db from input: IPv6=$file_dst_db_reg\n"; my %h_info; tie %h_info, 'BerkeleyDB::Btree', -Filename => $file_dst_db_reg, -Subname => 'info', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; $h_info{'dbusage'} = "ipv6calc"; $h_info{'dbformat'} = "1"; # ';' separated values $h_info{'dbdate'} = $date; $h_info{'dbtype'} = $type; $h_info{'dbcreated'} = $now_string; $h_info{'dbcreated_unixtime'} = time + 1; untie %h_info; my @a; ## SubDB: data tie @a, 'BerkeleyDB::Recno', -Filename => $file_dst_db_reg, -Subname => 'data', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; foreach my $ipv6 (sort keys %data) { push @a, sprintf("%s;%s;%s;%s;%d;REGISTRY_%s", $data{$ipv6}->{'ipv6_00_31'}, $data{$ipv6}->{'ipv6_32_63'}, $data{$ipv6}->{'mask_00_31'}, $data{$ipv6}->{'mask_32_63'}, $data{$ipv6}->{'mask_length'}, $data{$ipv6}->{'reg'}); }; untie @a; ## SubDB: data-info tie @a, 'BerkeleyDB::Recno', -Filename => $file_dst_db_reg, -Subname => 'data-info', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_reg: $! $BerkeleyDB::Error\n"; foreach my $ipv6 (sort keys %data_info) { push @a, sprintf("%s;%s;%s;%s;%s", $data_info{$ipv6}->{'ipv6_00_31'}, $data_info{$ipv6}->{'ipv6_32_63'}, $data_info{$ipv6}->{'mask_00_31'}, $data_info{$ipv6}->{'mask_32_63'}, $data_info{$ipv6}->{'reg'}); }; untie @a; print "INFO : DB created from input IPv6->Registry: " . $file_dst_db_reg . "\n"; if (defined $opt_A) { rename $file_dst_db_reg, $file_dst_db_reg_orig; if ($? != 0) { print "ERROR : can't rename file to: $file_dst_db_reg_orig ($!) - delete: $file_dst_db_reg\n"; unlink $file_dst_db_reg; } else { print "INFO : successful rename file to: $file_dst_db_reg_orig\n"; }; }; #### IPv6->CountryCode print "INFO : start creation of DB file IPv6->CountryCode: " . $file_dst_db_cc . "\n"; # external database $type = "2036"; # External IPv6->CountryCode $date = $string; $info = "dbusage=ipv6calc;dbformat=1;dbdate=$date;dbtype=" . $type . ";dbproto=6;dbcreated=$now_string"; if (defined $opt_A) { $file_dst_db_cc_orig = $file_dst_db_cc; $file_dst_db_cc .= ".new"; } else { if (-f $file_dst_db_cc) { unlink($file_dst_db_cc) || die "Can't delete old file: $file_dst_db_cc"; }; }; tie %h_info, 'BerkeleyDB::Btree', -Filename => $file_dst_db_cc, -Subname => 'info', -Flags => DB_CREATE, -Mode => 0644 || die "Cannot open file $file_dst_db_cc: $! $BerkeleyDB::Error\n"; $h_info{'dbusage'} = "ipv6calc"; $h_info{'dbformat'} = "1"; # ';' separated values $h_info{'dbdate'} = $date; $h_info{'dbtype'} = $type; $h_info{'dbcreated'} = $now_string; $h_info{'dbcreated_unixtime'} = time + 1; untie %h_info; ## SubDB: data tie @a, 'BerkeleyDB::Recno', -Filename => $file_dst_db_cc, -Subname => 'data', -Flags => DB_CREATE || die "Cannot open file $file_dst_db_cc: $! $BerkeleyDB::Error\n"; foreach my $ipv6 (sort keys %data_cc) { push @a, sprintf("%s;%s;%s;%s;%s", $data_cc{$ipv6}->{'ipv6_00_31'}, $data_cc{$ipv6}->{'ipv6_32_63'}, $data_cc{$ipv6}->{'mask_00_31'}, $data_cc{$ipv6}->{'mask_32_63'}, $data_cc{$ipv6}->{'reg'}); }; untie @a; print "INFO : DB file created from input IPv6->CountryCode: " . $file_dst_db_cc . "\n"; if (defined $opt_A) { rename $file_dst_db_cc, $file_dst_db_cc_orig; if ($? != 0) { print "ERROR : can't rename file to: $file_dst_db_cc_orig ($!) - delete: $file_dst_db_cc\n"; unlink $file_dst_db_cc; } else { print "INFO : successful rename file to: $file_dst_db_cc_orig\n"; }; }; }; ipv6calc-1.0.0/tools/ipv6calc-db-update.sh.in000077500000000000000000000111631312366535500207100ustar00rootroot00000000000000#!/bin/bash # # Simple shell script to update ipv6calc (external) database files # # Project : ipv6calc/databases # File : ipv6calc-db-update.sh # Version : $Id: 32209bd6554c8028309abf62e82d7086c582bb9c $ # Copyright : 2015-2015 by Peter Bieringer # License : GNU GPL version 2 IPV6CALC_DAT_DIR_DEFAULT="@EXTERNAL_DB@" [ -z "$IPV6CALC_DAT_DIR" ] && IPV6CALC_DAT_DIR="$IPV6CALC_DAT_DIR_DEFAULT" IPV6CALC_UPDATE_LIST="./ipv6calc-update-registries.sh /usr/share/ipv6calc/tools/ipv6calc-update-registries.sh" IPV6CALC_CHECK_LIST="./ipv6calc-registries-check-run-create.sh /usr/share/ipv6calc/tools/ipv6calc-registries-check-run-create.sh" IPV6CALC_CREATE_IPV4_LIST="./ipv6calc-create-registry-list-ipv4.pl /usr/share/ipv6calc/tools/ipv6calc-create-registry-list-ipv4.pl" IPV6CALC_CREATE_IPV6_LIST="./ipv6calc-create-registry-list-ipv6.pl /usr/share/ipv6calc/tools/ipv6calc-create-registry-list-ipv6.pl" help() { cat <] -s skip download -u unconditional update -D database directory (optional) database directory: $IPV6CALC_DAT_DIR (default: $IPV6CALC_DAT_DIR_DEFAULT) it honors externally defined environment value: IPV6CALC_DAT_DIR this script (and its helper scripts) will download data from registries and generate Berkeley DB files for ipv6calc "external" database support END } while getopts "Dush\?" opt; do case $opt in s) skip_download=1 ;; u) update=1 ;; D) IPV6CALC_DAT_DIR=$OPTARG ;; *) help exit 1 ;; esac done ## update registries for entry in $IPV6CALC_UPDATE_LIST; do if [ -e "$entry" -a -x "$entry" ]; then update_registries="$entry" break fi done if [ -z "$update_registries" ]; then echo "ERROR : no ipv6calc registry updater found from list: $IPV6CALC_UPDATE_LIST" exit 1 else echo "INFO : selected ipv6calc registries updater: $update_registries" fi ## check registries for entry in $IPV6CALC_CHECK_LIST; do if [ -e "$entry" -a -x "$entry" ]; then check_registries="$entry" break fi done if [ -z "$check_registries" ]; then echo "ERROR : no ipv6calc registry check found from list: $IPV6CALC_CHECK_LIST" exit 1 else echo "INFO : selected ipv6calc registries check: $check_registries" fi ## check create list for IPv4 for entry in $IPV6CALC_CREATE_IPV4_LIST; do if [ -e "$entry" -a -x "$entry" ]; then create_ipv4="$entry" break fi done if [ -z "$create_ipv4" ]; then echo "ERROR : no ipv6calc registries list creation for IPv4 found from list: $IPV6CALC_CREATE_IPV4_LIST" exit 1 else echo "INFO : selected ipv6calc registries list creation: $create_ipv4" fi ## check create list for IPv6 for entry in $IPV6CALC_CREATE_IPV6_LIST; do if [ -e "$entry" -a -x "$entry" ]; then create_ipv6="$entry" break fi done if [ -z "$create_ipv6" ]; then echo "ERROR : no ipv6calc registries list creation for IPv6 found from list: $IPV6CALC_CREATE_IPV6_LIST" exit 1 else echo "INFO : selected ipv6calc registries list creation: $create_ipv6" fi ## data directory if [ ! -d "$IPV6CALC_DAT_DIR" ]; then echo "ERROR : missing directory: $IPV6CALC_DAT_DIR" exit 1 fi if [ ! -w "$IPV6CALC_DAT_DIR" ]; then echo "ERROR : missing write permissions on directory: $IPV6CALC_DAT_DIR" exit 1 fi # db subdirectory if [ ! -e "$IPV6CALC_DAT_DIR" ]; then echo "NOTICE: missing db subdirectory (try to create now): $IPV6CALC_DAT_DIR" mkdir $IPV6CALC_DAT_DIR if [ $? -ne 0 ]; then echo "ERROR : can't create db subdirectory: $IPV6CALC_DAT_DIR ($!)" exit 1 fi elif [ ! -d "$IPV6CALC_DAT_DIR" ]; then echo "ERROR : existing, but not a directory: $IPV6CALC_DAT_DIR" exit 1 elif [ ! -w "$IPV6CALC_DAT_DIR" ]; then echo "ERROR : existing, but not a writable directory: $IPV6CALC_DAT_DIR" exit 1 fi ## update files from registries if [ "$skip_download" != "1" ]; then echo "INFO : updating files from registries now and store to: $IPV6CALC_DAT_DIR" $update_registries -D $IPV6CALC_DAT_DIR if [ $? -ne 0 ]; then echo "ERROR : update of files from registries resulted in a failure" exit 1 fi echo "INFO : update of files from registries finished in directory: $IPV6CALC_DAT_DIR" else echo "NOTICE: download of files from registries skipped by option" fi ## check files from registries [ "$update" = "1" ] && options="$options -u" for proto in 4 6; do echo "INFO : call now check registries files for proto: IPv${proto} srcdir=$IPV6CALC_DAT_DIR dstdir=$IPV6CALC_DAT_DIR" create_var="create_ipv${proto}" $check_registries -B -${proto} -C "${!create_var}" -S "$IPV6CALC_DAT_DIR" -D "$IPV6CALC_DAT_DIR" $options rc=$? if [ $rc -ne 0 ]; then echo "ERROR : problem occurs" exit 1 fi done exit 0 ipv6calc-1.0.0/tools/ipv6calc-registries-check-run-create.sh000077500000000000000000000063671312366535500237460ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/databases/ipv4-assignment # File : ipv6calc-registries-check-run-create.sh # Version : $Id: 571c71664aba913701eb7a4dae83d4f0c090e60a $ # Copyright : 2002-2017 by Peter Bieringer flag_update=0 help() { cat < [-u] [-S ] [-D ] -S destination directory -D source directory -u unconditional update -d debug level END } while getopts "d:uS:D:HB46C:h\?" opt; do case $opt in u) flag_update="1" ;; H) option="$opt" ;; B) option="$opt" ;; 4) proto="$opt" file_iana="ipv4-address-space.xml" ;; 6) proto="$opt" file_iana="ipv6-unicast-address-assignments.xml" ;; C) command=$OPTARG ;; S) src_dir=$OPTARG ;; D) dst_dir=$OPTARG ;; d) debug=$OPTARG ;; *) help exit 1 ;; esac done if [ -z "$command" ]; then echo "ERROR : option missing: -C " exit 1 fi case $option in H) file="dbipv${proto}addr_assignment.h" ;; B) file="ipv6calc-external-ipv${proto}-registry.db" file2="ipv6calc-external-ipv${proto}-countrycode.db" ;; esac if [ ! -x "$command" ]; then echo "ERROR : not found or not executable: $command" exit 1 fi if [ -n "$src_dir" ]; then search_dir="$src_dir/" if [ ! -d "$src_dir" ]; then echo "ERROR : source directory missing: $src_dir" exit 1 fi else search_dir="../registries/" if [ ! -d "$search_dir" ]; then echo "ERROR : default search directory missing: $search_dir" exit 1 fi fi dst_dir=${dst_dir:-.} if [ ! -d "$dst_dir" ]; then echo "ERROR : destination directory missing: $dst_dir" exit 1 fi file="$dst_dir/$file" file2="$dst_dir/$file2" echo "INFO : reference file: $file" echo "INFO : search directory: $search_dir" if [ -f "$file" ]; then IANA=`find $search_dir -type f -name "$file_iana" -newer "$file" | wc -l` ARIN=`find $search_dir -type f -name 'delegated-arin*' -newer "$file" | wc -l` APNIC=`find $search_dir -type f -name 'delegated-apnic*' -newer "$file" | wc -l` RIPENCC=`find $search_dir -type f -name 'delegated-ripencc*' -newer "$file" | wc -l` LACNIC=`find $search_dir -type f -name 'delegated-lacnic*' -newer "$file" | wc -l` AFRINIC=`find $search_dir -type f -name 'delegated-afrinic*' -newer "$file" | wc -l` LISP=`find $search_dir -type f -name 'site-db*' -newer "$file" | wc -l` echo "INFO : found newer than $file files: IANA=$IANA ARIN=$ARIN APNIC=$APNIC RIPENCC=$RIPENCC LACNIC=$LACNIC AFRINIC=$AFRINIC LISP=$LISP" if [ $IANA -gt 0 -o $ARIN -gt 0 -o $APNIC -gt 0 -o $RIPENCC -gt 0 -o $LACNIC -gt 0 -o $AFRINIC -gt 0 -o $LISP -gt 0 ]; then flag_update=1 elif [ -n "$file2" -a -f "$file2" ]; then # 2nd file given if [ "$file" -nt "$file2" ]; then echo "INFO : found newer than $file: $file2" flag_update=1 fi fi else flag_update=1 fi [ -n "$src_dir" ] && options="$options -S $src_dir" [ -n "$dst_dir" ] && options="$options -D $dst_dir" [ -n "$debug" ] && options="$options -d $debug" options="$options -$option -A" if [ $flag_update -eq 1 ]; then echo "INFO : call now create program with options: $options" nice -n 19 $command $options rc=$? else echo "NOTICE: nothing to do for proto IPv$proto" rc=0 fi exit $rc ipv6calc-1.0.0/tools/ipv6calc-update-registries.sh000077500000000000000000000071771312366535500221100ustar00rootroot00000000000000#!/bin/sh # # Project : ipv6calc/databases/registries # File : update-registries.sh # Version : $Id: 61e80e7d1d3113f482c11b24b8ab12c1953b5c27 $ # Copyright : 2002-2017 by Peter Bieringer # replaces ../ipv4-assignment/update-ipv4-assignment.sh # replaces ../ipv6-assignment/update-ipv6-assignment.sh # # Information: # Shell script to update registry data #set -x get_urls() { cat <] [-h|?] [-d] [-q] -D destination directory (default: internal sub-directories) -d dry-run/debug -q more quiet (default if called by cron) -R download only given registry: $(get_urls | awk '{ printf $1 " " }') -h|? this online help END } ## default dir_dst="" dry_run=0 ## parse options while getopts "\?hdqR:D:" opt; do case $opt in D) if [ -d "$OPTARG" ]; then dir_dst="$OPTARG" else echo "ERROR : given destination directory doesn't exist: $OPTARG" exit 1 fi ;; R) registry="$OPTARG" ;; d) dry_run=1 ;; q) quiet=1 ;; \?|h) help exit 1 ;; *) echo "Invalid option: -$OPTARG" >&2 exit 0 ;; esac done if [ ! -t 0 ]; then quiet=1 fi if [ "$quiet" = "1" ]; then wget_options="--no-verbose" fi if [ -z "$dir_dst" ]; then echo "INFO : download new version of files to defined sub-directories" else echo "INFO : download new version of files to: $dir_dst" fi get_urls | while read subdir url filename format flag; do if [ -n "$registry" -a "$registry" != "$subdir" ]; then echo "NOTICE: registry option specified, skip: $subdir" continue fi if [ -z "$dir_dst" ]; then echo "DEBUG : check for sub-directory: $subdir" if [ ! -d "$subdir" ]; then mkdir "$subdir" || exit 1 fi pushd "$subdir" || exit 1 else echo "DEBUG : change to download directory: $dir_dst" pushd "$dir_dst" >/dev/null || exit 1 fi if [ "$flag" = "out" ]; then [ $dry_run -ne 1 ] && wget $wget_options $url$filename -O $filename retval=$? else [ $dry_run -ne 1 ] && wget $wget_options $url$filename --timestamping --retr-symlinks retval=$? fi popd >/dev/null if [ $retval -ne 0 ]; then echo "ERROR : can't download: $filename ($url)" exit 1 else echo "INFO : successfully downloaded: $filename ($url)" fi if [ -z "$dir_dst" ]; then pushd "$subdir" >/dev/null || exit 1 else pushd "$dir_dst" >/dev/null || exit 1 fi case $format in 'txt'|'csv') # nothing to do ;; 'xml') # fix buggy encoding mod_time=$(stat -c %Y "$filename") perl -pi -e "s/^(.*encoding=')ASCII('.*)$/\1US-ASCII\2/" $filename || exit 1 touch -d "@$mod_time" "$filename" ;; 'bz2') # decompress mod_time=$(stat -c %Y "$filename") bzip2 -f -d -k $filename || exit 1 touch -d "@$mod_time" "$filename" ;; *) echo "ERROR: unsupported format: $format - fix code" exit 1 ;; esac popd >/dev/null done