ipv6calc-0.99.1/0000775000175100017510000000000012572537445012363 5ustar peterpeteripv6calc-0.99.1/config.h.in0000664000175100017510000002053112523053402014365 0ustar peterpeter/* 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_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 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 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-0.99.1/INSTALLING0000664000175100017510000001055012360463206013737 0ustar peterpeteripv6calc 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: INSTALLING,v 1.22 2014/07/13 10:59:18 ds6peter Exp $ ipv6calc-0.99.1/getopt/0000775000175100017510000000000012572537445013665 5ustar peterpeteripv6calc-0.99.1/getopt/getopt1.c0000664000175100017510000001064607435676734015432 0ustar peterpeter/* 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-0.99.1/getopt/README0000664000175100017510000000056107436762041014542 0ustar peterpeter$Id: README,v 1.2 2002/02/26 19:38:09 peter Exp $ 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-0.99.1/getopt/getopt.c0000664000175100017510000007270007435676733015347 0ustar peterpeter/* 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-0.99.1/getopt/getopt.h0000664000175100017510000001071607435676734015354 0ustar peterpeter/* 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-0.99.1/getopt/Makefile.in0000664000175100017510000000063111126661333015716 0ustar peterpeter# Adapted for use with project 'ipv6calc' by Peter Bieringer # $Id: Makefile.in,v 1.1 2008/12/31 12:17:31 peter Exp $ 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-0.99.1/ipv6logconv/0000775000175100017510000000000012572537445014637 5ustar peterpeteripv6calc-0.99.1/ipv6logconv/ipv6logconvoptions.h0000664000175100017510000000171112221636350020662 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconvoptions.h * Version : $Id: ipv6logconvoptions.h,v 1.7 2013/09/28 20:32:40 ds6peter Exp $ * 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-0.99.1/ipv6logconv/ipv6logconvhelp.c0000664000175100017510000000554212364014414020117 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconvhelp.c * Version : $Id: ipv6logconvhelp.c,v 1.11 2014/07/23 20:20:28 ds6peter Exp $ * 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(+)/possible(-) feature tokens\n"); fprintf(stderr, "%-22s%c %s\n", "CONV_REG", (feature_reg == 1)? '+' : '-', "Conversion of IPv4/IPv6 address to Registry tokens"); fprintf(stderr, "%-22s%c %s\n", "CONV_IEEE", (feature_ieee == 1) ? '+' : '-', "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-0.99.1/ipv6logconv/ipv6logconv.c0000664000175100017510000005606212531113054017245 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconv.c * Version : $Id: ipv6logconv.c,v 1.41 2015/05/26 15:50:04 ds6peter Exp $ * Copyright : 2002-2015 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", i); if ((i == '?') && (optopt != 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) { long int inputtype = -1; 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 >= 0) { 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); /* 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.scope = ipv4addr_gettype(&ipv4addr); /* 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); /* 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); 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-0.99.1/ipv6logconv/test_ipv6logconv.sh0000775000175100017510000000734612513652530020507 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6logconv.sh # Version : $Id: test_ipv6logconv.sh,v 1.13 2015/04/16 06:23:20 ds6peter Exp $ # 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-0.99.1/ipv6logconv/ipv6logconvhelp.h0000664000175100017510000000070212363377011020121 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconvhelp.h * Version : $Id: ipv6logconvhelp.h,v 1.3 2014/07/22 06:00:41 ds6peter Exp $ * 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-0.99.1/ipv6logconv/ipv6logconv.h0000664000175100017510000000130212326755737017263 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconv.h * Version : $Id: ipv6logconv.h,v 1.9 2014/04/26 16:16:31 ds6peter Exp $ * 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-0.99.1/ipv6logconv/Makefile.in0000664000175100017510000000374012355752356016707 0ustar peterpeter# Project : ipv6calc/ipv6logconv # File : ipv6logconv/Makefile[.in] # Version : $Id: Makefile.in,v 1.31 2014/07/05 10:35:26 ds6peter Exp $ # 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-0.99.1/README.BUILDING-DBIP0000664000175100017510000000105212400647415015136 0ustar peterpeterBUILDING 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 updates (looks like on monthly basis) download tool is also provided: DBIP-update.sh ipv6calc-0.99.1/doc/0000775000175100017510000000000012572537445013130 5ustar peterpeteripv6calc-0.99.1/doc/generate.sh0000775000175100017510000000237612231545453015257 0ustar peterpeter#!/bin/sh # $Id: generate.sh,v 1.7 2013/10/22 18:59:55 ds6peter Exp $ # 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-0.99.1/doc/ipv6calc.sgml0000664000175100017510000026673012572506150015526 0ustar peterpeter ]>
The ipv6calc Homepage PeterBieringer
pb at bieringer dot de
6.0 2015-07-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 freshmeat / ipv6calc page (not maintained by the author) Latest version Latest version since last update of this page is 0.99.1 (released > 2015-09-05) 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) 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) 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 - 2015 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 CVS at DeepSpace6: DeepSpace6 / CVS instructionsVia web interface to CVS at DeepSpace6: DeepSpace6 / CVS web interface Releases as tar.gz 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 21 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 on RHEL 4. RHEL/CentOS 5 has the package included by default (but an rather old version - there are plans to provide newer releases via EPEL, too)RHEL/CentOS 6/7: available since September 2014 on FedoraProject / EPEL EPELCentOS 5/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 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: http://www.netbsd.org/packages/net/ipv6calc/ FreeBSD See here for more: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/ipv6calc/ (http://www.freebsd.org/cgi/query-pr.cgi?pr=34441), http://www.freshports.org/net-mgmt/ipv6calc/ 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=109 Country6=109 City4=109 City6=109 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: 0x03003cc0/0x03003cc0 (100%) DBIP: info of available databases in directory: /usr/share/DBIP DBIP: IPv4 CountryCode : ipv6calc-dbip-ipv4-country.db (DBIP-1/20150301, created: 20150304-183312 UTC) DBIP: IPv6 CountryCode : ipv6calc-dbip-ipv6-country.db (DBIP-2/20150301, created: 20150304-183312 UTC) DBIP: IPv4 City/Region/CountryCode : ipv6calc-dbip-ipv4-city.db (DBIP-3/20150301, created: 20150304-183330 UTC) DBIP: IPv6 City/Region/CountryCode : ipv6calc-dbip-ipv6-city.db (DBIP-4/20150301, created: 20150304-183330 UTC) External: features available/implemented: 0x300000cc/0x300000cc (100%) External: info of available databases in directory: /usr/share/ipv6calc/db External: IPv4 Registry : ipv6calc-external-ipv4-registry.db (EXTDB-1/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170218 UTC) External: IPv6 Registry : ipv6calc-external-ipv6-registry.db (EXTDB-2/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC) External: IPv4 CountryCode : ipv6calc-external-ipv4-countrycode.db (EXTDB-3/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170219 UTC) External: IPv6 CountryCode : ipv6calc-external-ipv6-countrycode.db (EXTDB-4/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC) BuiltIn: features available/implemented: 0x0000400f/0x0000400f (100%) BuiltIn: info of available databases BuiltIn: ASN : IANA/20140905 BuiltIn: CC : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 LACNIC/20150417 RIPENCC/20150417 BuiltIn: IPv4 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20141014 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-061822 UTC) BuiltIn: IPv6 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20150324 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-062530 UTC) BuiltIn: IEEE : IAB/20150418 OUI/20150418 OUI36/20150418 Database selection or priorization ('->': subsequential calls) 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_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location 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 ]]>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: 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: Note: since version 0.95.0 '-A filter' is optional if option '-E <filter expression>' is given (autoselected action). 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 [numeric]) [^][ipv4.|ipv6.]db.reg= (Registry) Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown EUI-48/MAC address filter tokens: IMPLEMENTATION MISSING EUI-64 address filter tokens: IMPLEMENTATION MISSING ]]>Example for some filter expressions: 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) * 0x3FF = unknown country * 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 ]]> 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 2015 Introduce mod_ipv6calc for Apache web server (>= 0.99.1, released 2015)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) 2010 and older TODO
ipv6calc-0.99.1/doc/ipv6calc.lyx0000664000175100017510000040002012572506150015356 0ustar peterpeter#LyX 2.1 created this file. For more info see http://www.lyx.org/ \lyxformat 474 \begin_document \begin_header \textclass docbook \use_default_options false \maintain_unincluded_children false \language english \language_package default \inputencoding auto \fontencoding global \font_roman default \font_sans default \font_typewriter default \font_math auto \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 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 6.0 2015-07-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 "freshmeat / ipv6calc" target "http://freshmeat.net/projects/ipv6calc/" \end_inset page (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 0.99.1 (released > 2015-09-05) \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 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 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 \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 \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 - 2015 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 CVS at \begin_inset CommandInset href LatexCommand href name "DeepSpace6" target "http://www.deepspace6.net/" \end_inset : \begin_inset CommandInset href LatexCommand href name "DeepSpace6 / CVS instructions" target "http://www.deepspace6.net/sections/cvs.html" \end_inset \end_layout \begin_layout Itemize Via web interface to CVS at \begin_inset CommandInset href LatexCommand href name "DeepSpace6" target "http://www.deepspace6.net/" \end_inset : \begin_inset CommandInset href LatexCommand href name "DeepSpace6 / CVS web interface" target "http://cvs.deepspace6.net/view/ipv6calc/" \end_inset \end_layout \begin_layout Subsection Releases \end_layout \begin_layout Subsubsection as tar.gz \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 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 21 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 on RHEL 4. \end_layout \begin_layout Itemize RHEL/CentOS 5 has the package included by default (but an rather old version - there are plans to provide newer releases via EPEL, too) \end_layout \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 EPEL \end_layout \begin_layout Standard CentOS 5/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 \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 "http://www.netbsd.org/packages/net/ipv6calc/" target "http://www.netbsd.org/packages/net/ipv6calc/" \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.freebsd.org/cgi/cvsweb.cgi/ports/net/ipv6calc/" target "http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/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 ), \begin_inset CommandInset href LatexCommand href name "http://www.freshports.org/net-mgmt/ipv6calc/" target "http://www.freshports.org/net-mgmt/ipv6calc/" \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.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 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.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 \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 \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.5 \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 \end_layout \begin_layout Code IP2Location support enabled, compiled with API version: 7.0.1 \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 \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 \end_layout \begin_layout Code DB features: 0x33337fff \end_layout \begin_layout Code \end_layout \begin_layout Code GeoIP: features available/implemented: 0x00033ff0/0x00033ff0 (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 20150303 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP City Edition, Rev 1 :[ 2] GeoIPCity.dat (GEO-533LITE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP ASNum Edition :[ 9] GeoIPASNum.dat (GEO-117 20150405 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP Country V6 Edition :[12] GeoIPv6.dat (GEO-106FREE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP ASNum V6 Edition :[21] GeoIPASNumv6.dat (GEO-117 20150405 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP City Edition V6, Rev 1 :[30] GeoIPCityv6.dat (GEO-536LITE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code \end_layout \begin_layout Code IP2Location: features available/implemented: 0x00303fc0/0x00303fc0 (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 Country :[ 49] IP-COUNTRY-S AMPLE.BIN (IP2L-DB1 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Country/ISP :[ 50] IP-COUNTRY-I SP-SAMPLE.BIN (IP2L-DB2 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Country/Region/City :[ 51] IP-COUNTRY-R EGION-CITY-SAMPLE.BIN (IP2L-DB3 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Country/Region/City/ISP :[ 52] IP-COUNTRY-R EGION-CITY-ISP-SAMPLE.BIN (IP2L-DB4 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Country/Region/City/LongitudeLattitude :[ 53] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-SAMPLE.BIN (IP2L-DB5 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Country/Region/City/LongLatt/ISP :[ 54] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ISP-SAMPLE.BIN (IP2L-DB6 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/ISP/Domain :[ 55] IP-COUNTRY-R EGION-CITY-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB7 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LattLong/ISP/Domain :[ 56] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB8 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP :[ 57] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-SAMPLE.BIN (IP2L-DB9 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP/ISP/Domain :[ 58] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB10 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP/TZ :[ 59] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-SAMPLE.BIN (IP2L-DB11 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Domain :[ 60] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB12 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/TZ/NetSpeed :[ 61] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-SAMPLE.BIN (IP2L-DB13 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/ISP/Do/Netspeed :[ 62] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-SAMPLE.BIN (IP2L-DB14 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZIP/TZ/Area :[ 63] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-SAMPLE.BIN (IP2L-DB15 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Net/Area :[ 64] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-SAMP LE.BIN (IP2L-DB16 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/TZ/Net/Weather :[ 65] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER-SAMPLE.BIN (IP2L-DB17 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/Weather :[ 66] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEAT HER-SAMPLE.BIN (IP2L-DB18 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ISP/Dom/Mobile :[ 67] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-SAMPLE.BIN (IP2L-DB19 IPv4 SAMPLE 20141218) \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 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/Area/Elevation :[ 69] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION-SAMPLE.BIN (IP2L-DB21 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El :[ 70] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEAT HER-MOBILE-ELEVATION-SAMPLE.BIN (IP2L-DB22 IPv4 SAMPLE 20141218) \end_layout \begin_layout Code IP2Location: IPv4 Co/Re/Ci/LaLo/ISP/Dom/Mobile/Usagetype :[ 71] IP-COUNTRY-R EGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE-SAMPLE.BIN (IP2L-DB23 IPv4 SAMPLE 20141218) \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 20141218) \end_layout \begin_layout Code IP2Location: IPv6 Country :[ 73] IPV6-COUNTRY. SAMPLE.BIN (IP2L-DB1 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Country/ISP :[ 74] IPV6-COUNTRY -ISP.SAMPLE.BIN (IP2L-DB2 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Country/Region/City :[ 75] IPV6-COUNTRY -REGION-CITY.SAMPLE.BIN (IP2L-DB3 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Country/Region/City/ISP :[ 76] IPV6-COUNTRY -REGION-CITY-ISP.SAMPLE.BIN (IP2L-DB4 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Country/Region/City/LongitudeLattitude :[ 77] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE.SAMPLE.BIN (IP2L-DB5 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Country/Region/City/LongLatt/ISP :[ 78] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ISP.SAMPLE.BIN (IP2L-DB6 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/ISP/Domain :[ 79] IPV6-COUNTRY -REGION-CITY-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB7 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LattLong/ISP/Domain :[ 80] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB8 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LattLong/ZIP :[ 81] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE.SAMPLE.BIN (IP2L-DB9 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LattLong/ZIP/ISP/Domain :[ 82] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB10 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LattLong/ZIP/TZ :[ 83] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.SAMPLE.BIN (IP2L-DB11 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Domain :[ 84] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB12 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/TZ/NetSpeed :[ 85] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED.SAMPLE.BIN (IP2L-DB13 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/ISP/Do/Netspeed :[ 86] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED.SAMPLE.BIN (IP2L-DB14 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZIP/TZ/Area :[ 87] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE.SAMPLE.BIN (IP2L-DB15 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Net/Area :[ 88] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE.SAM PLE.BIN (IP2L-DB16 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/TZ/Net/Weather :[ 89] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER.SAMPLE.BIN (IP2L-DB17 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/Weather :[ 90] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WE ATHER.SAMPLE.BIN (IP2L-DB18 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ISP/Dom/Mobile :[ 91] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE.SAMPLE.BIN (IP2L-DB19 IPv6 SAMPLE 20140722) \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 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/Area/Elevation :[ 93] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION.SAMPLE.BIN (IP2L-DB21 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El :[ 94] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WE ATHER-MOBILE-ELEVATION.SAMPLE.BIN (IP2L-DB22 IPv6 SAMPLE 20140722) \end_layout \begin_layout Code IP2Location: IPv6 Co/Re/Ci/LaLo/ISP/Dom/Mobile/Usagetype :[ 95] IPV6-COUNTRY -REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE.SAMPLE.BIN (IP2L-DB23 IPv6 SAMPLE 20140722) \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 20140722) \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: IPv4 Country :[ 1] IP-COUNTRY.BI N (SOFTLINK IS UNSUPPORTED) \end_layout \begin_layout Code IP2Location: IPv6 Country :[ 25] IPV6-COUNTRY. BIN (IP2L-DB1 IPv6 20060918) \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=0 Country6=25 City4=0 City6=0 \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=109 Country6=109 City4=109 City6=109 \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 \end_layout \begin_layout Code db-ip.com: features available/implemented: 0x03003cc0/0x03003cc0 (100%) \end_layout \begin_layout Code DBIP: info of available databases in directory: /usr/share/DBIP \end_layout \begin_layout Code DBIP: IPv4 CountryCode : ipv6calc-dbip-ipv4-country.db (DBIP-1/2015 0301, created: 20150304-183312 UTC) \end_layout \begin_layout Code DBIP: IPv6 CountryCode : ipv6calc-dbip-ipv6-country.db (DBIP-2/2015 0301, created: 20150304-183312 UTC) \end_layout \begin_layout Code DBIP: IPv4 City/Region/CountryCode : ipv6calc-dbip-ipv4-city.db (DBIP-3/2015 0301, created: 20150304-183330 UTC) \end_layout \begin_layout Code DBIP: IPv6 City/Region/CountryCode : ipv6calc-dbip-ipv6-city.db (DBIP-4/2015 0301, created: 20150304-183330 UTC) \end_layout \begin_layout Code \end_layout \begin_layout Code External: features available/implemented: 0x300000cc/0x300000cc (100%) \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/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170218 UTC) \end_layout \begin_layout Code External: IPv6 Registry : ipv6calc-external-ipv6-registry.db (EXTDB-2/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC) \end_layout \begin_layout Code External: IPv4 CountryCode : ipv6calc-external-ipv4-countrycode.db (EXTDB-3/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170219 UTC) \end_layout \begin_layout Code External: IPv6 CountryCode : ipv6calc-external-ipv6-countrycode.db (EXTDB-4/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC) \end_layout \begin_layout Code \end_layout \begin_layout Code BuiltIn: features available/implemented: 0x0000400f/0x0000400f (100%) \end_layout \begin_layout Code BuiltIn: info of available databases \end_layout \begin_layout Code BuiltIn: ASN : IANA/20140905 \end_layout \begin_layout Code BuiltIn: CC : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 LACNIC/20150417 RIPENCC/20150417 \end_layout \begin_layout Code BuiltIn: IPv4 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20141014 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-061822 UTC) \end_layout \begin_layout Code BuiltIn: IPv6 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20150324 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-062530 UTC) \end_layout \begin_layout Code BuiltIn: IEEE : IAB/20150418 OUI/20150418 OUI36/20150418 \end_layout \begin_layout Code \end_layout \begin_layout Code Database selection or priorization ('->': subsequential calls) \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 \end_layout \begin_layout Code DB_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location \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 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/ipv6calc -v -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 \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 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, productive, teredo \end_layout \begin_layout Code IPv4 address: 80.181.121.64 \end_layout \begin_layout Code IPv4 registry[80.181.121.64]: RIPENCC \end_layout \begin_layout Code IPv4 address: 206.73.118.1 \end_layout \begin_layout Code IPv4 registry[206.73.118.1]: ARIN \end_layout \begin_layout Code Address type is Teredo and included IPv4 server address is: 80.181.121.64 and client port: 4096 \end_layout \begin_layout Code IPv4 registry for Teredo server address: ARIN \end_layout \begin_layout Code Registry for address: reserved \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 Note: since version 0.95.0 '-A filter' is optional if option '-E ' is given (autoselected action). \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 \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 \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 \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 \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 --action filter -h \end_layout \begin_layout Code ipv6calc: version 0.99.0 GeoIP GeoIPv6 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 \end_layout \begin_layout Code Filter given addresses from stdout 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 \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 \end_layout \begin_layout Code negation of filter expression with prefix: ^ \end_layout \begin_layout Code \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 \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 \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 [numeric]) \end_layout \begin_layout Code [^][ipv4.|ipv6.]db.reg= (Registry) \end_layout \begin_layout Code Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown \end_layout \begin_layout Code \end_layout \begin_layout Code EUI-48/MAC address filter tokens: \end_layout \begin_layout Code IMPLEMENTATION MISSING \end_layout \begin_layout Code \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 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 * 0x3FF = unknown country \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 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 \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 \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 \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 \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 2015 \end_layout \begin_layout Itemize Introduce mod_ipv6calc for Apache web server (>= 0.99.1, released 2015) \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 2010 and older \end_layout \begin_layout Standard TODO \end_layout \end_body \end_document ipv6calc-0.99.1/doc/ipv6calc.xml0000664000175100017510000026663212572506150015365 0ustar peterpeter
The ipv6calc Homepage PeterBieringer
pb at bieringer dot de
6.0 2015-07-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 freshmeat / ipv6calc page (not maintained by the author) Latest version Latest version since last update of this page is 0.99.1 (released > 2015-09-05) 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) 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) 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 - 2015 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 CVS at DeepSpace6: DeepSpace6 / CVS instructionsVia web interface to CVS at DeepSpace6: DeepSpace6 / CVS web interface Releases as tar.gz 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 21 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 on RHEL 4. RHEL/CentOS 5 has the package included by default (but an rather old version - there are plans to provide newer releases via EPEL, too)RHEL/CentOS 6/7: available since September 2014 on FedoraProject / EPEL EPELCentOS 5/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 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: http://www.netbsd.org/packages/net/ipv6calc/ FreeBSD See here for more: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/ipv6calc/ (http://www.freebsd.org/cgi/query-pr.cgi?pr=34441), http://www.freshports.org/net-mgmt/ipv6calc/ 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=109 Country6=109 City4=109 City6=109 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: 0x03003cc0/0x03003cc0 (100%) DBIP: info of available databases in directory: /usr/share/DBIP DBIP: IPv4 CountryCode : ipv6calc-dbip-ipv4-country.db (DBIP-1/20150301, created: 20150304-183312 UTC) DBIP: IPv6 CountryCode : ipv6calc-dbip-ipv6-country.db (DBIP-2/20150301, created: 20150304-183312 UTC) DBIP: IPv4 City/Region/CountryCode : ipv6calc-dbip-ipv4-city.db (DBIP-3/20150301, created: 20150304-183330 UTC) DBIP: IPv6 City/Region/CountryCode : ipv6calc-dbip-ipv6-city.db (DBIP-4/20150301, created: 20150304-183330 UTC) External: features available/implemented: 0x300000cc/0x300000cc (100%) External: info of available databases in directory: /usr/share/ipv6calc/db External: IPv4 Registry : ipv6calc-external-ipv4-registry.db (EXTDB-1/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170218 UTC) External: IPv6 Registry : ipv6calc-external-ipv6-registry.db (EXTDB-2/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC) External: IPv4 CountryCode : ipv6calc-external-ipv4-countrycode.db (EXTDB-3/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170219 UTC) External: IPv6 CountryCode : ipv6calc-external-ipv6-countrycode.db (EXTDB-4/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC) BuiltIn: features available/implemented: 0x0000400f/0x0000400f (100%) BuiltIn: info of available databases BuiltIn: ASN : IANA/20140905 BuiltIn: CC : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 LACNIC/20150417 RIPENCC/20150417 BuiltIn: IPv4 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20141014 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-061822 UTC) BuiltIn: IPv6 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20150324 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-062530 UTC) BuiltIn: IEEE : IAB/20150418 OUI/20150418 OUI36/20150418 Database selection or priorization ('->': subsequential calls) 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_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location 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 ]]>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: 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: Note: since version 0.95.0 '-A filter' is optional if option '-E <filter expression>' is given (autoselected action). 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 [numeric]) [^][ipv4.|ipv6.]db.reg= (Registry) Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown EUI-48/MAC address filter tokens: IMPLEMENTATION MISSING EUI-64 address filter tokens: IMPLEMENTATION MISSING ]]>Example for some filter expressions: 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) * 0x3FF = unknown country * 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 ]]> 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 2015 Introduce mod_ipv6calc for Apache web server (>= 0.99.1, released 2015)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) 2010 and older TODO
ipv6calc-0.99.1/doc/ipv6calc.html0000664000175100017510000032341112572506150015516 0ustar peterpeter The ipv6calc Homepage

The ipv6calc Homepage

Peter Bieringer

pb at bieringer dot de

Revision History
Revision 6.02015-07-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 freshmeat / ipv6calc page (not maintained by the author)


1.1. Latest version

Latest version since last update of this page is 0.99.1 (released > 2015-09-05)


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)


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)


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 - 2015 by Dr. Peter Bieringer


4. Author

The author of ipv6calc is


5. Where to get sources or binaries


5.2. Releases

5.2.1. as tar.gz

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

5.2.2. 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 21 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 on RHEL 4.

  • RHEL/CentOS 5 has the package included by default (but an rather old version - there are plans to provide newer releases via EPEL, too)

  • RHEL/CentOS 6/7: available since September 2014 on FedoraProject / EPEL EPEL

CentOS 5/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


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.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

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.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

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)

GeoIP support enabled, compiled with IPv4 & IPv6 support
GeoIP dynamic library version (on this system): 1.6.5
GeoIP available databases: Country4=1 Country6=1 ASN4=1 ASN6=1 City4=1 City6=1

IP2Location support enabled, compiled with API version: 7.0.1
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: 0x33337fff

GeoIP: features available/implemented: 0x00033ff0/0x00033ff0 (100%)
GeoIP: info of available databases in directory: /usr/share/GeoIP (max: 31)
GeoIP: GeoIP Country Edition            :[ 1] GeoIP.dat            (GEO-106FREE 20150303 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP City Edition, Rev 1        :[ 2] GeoIPCity.dat        (GEO-533LITE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP ASNum Edition              :[ 9] GeoIPASNum.dat       (GEO-117 20150405 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP Country V6 Edition         :[12] GeoIPv6.dat          (GEO-106FREE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP ASNum V6 Edition           :[21] GeoIPASNumv6.dat     (GEO-117 20150405 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP City Edition V6, Rev 1     :[30] GeoIPCityv6.dat      (GEO-536LITE 20150407 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved)

IP2Location: features available/implemented: 0x00303fc0/0x00303fc0 (100%)
IP2Location: info of available databases in directory: /usr/share/IP2Location
IP2Location: Copyright (c) IP2Location All Rights Reserved
IP2Location: IPv4 Country                                    :[ 49] IP-COUNTRY-SAMPLE.BIN               (IP2L-DB1 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Country/ISP                                :[ 50] IP-COUNTRY-ISP-SAMPLE.BIN           (IP2L-DB2 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Country/Region/City                        :[ 51] IP-COUNTRY-REGION-CITY-SAMPLE.BIN   (IP2L-DB3 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Country/Region/City/ISP                    :[ 52] IP-COUNTRY-REGION-CITY-ISP-SAMPLE.BIN (IP2L-DB4 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Country/Region/City/LongitudeLattitude     :[ 53] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-SAMPLE.BIN (IP2L-DB5 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Country/Region/City/LongLatt/ISP           :[ 54] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-SAMPLE.BIN (IP2L-DB6 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/ISP/Domain                        :[ 55] IP-COUNTRY-REGION-CITY-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB7 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LattLong/ISP/Domain               :[ 56] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB8 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP                      :[ 57] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-SAMPLE.BIN (IP2L-DB9 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP/ISP/Domain           :[ 58] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB10 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LattLong/ZIP/TZ                   :[ 59] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-SAMPLE.BIN (IP2L-DB11 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Domain              :[ 60] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-SAMPLE.BIN (IP2L-DB12 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/TZ/NetSpeed                  :[ 61] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-SAMPLE.BIN (IP2L-DB13 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/ISP/Do/Netspeed        :[ 62] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-SAMPLE.BIN (IP2L-DB14 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZIP/TZ/Area                  :[ 63] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-SAMPLE.BIN (IP2L-DB15 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Net/Area         :[ 64] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-SAMPLE.BIN (IP2L-DB16 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/TZ/Net/Weather               :[ 65] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER-SAMPLE.BIN (IP2L-DB17 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/Weather    :[ 66] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-SAMPLE.BIN (IP2L-DB18 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ISP/Dom/Mobile               :[ 67] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-SAMPLE.BIN (IP2L-DB19 IPv4 SAMPLE 20141218)
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 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/Area/Elevation         :[ 69] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION-SAMPLE.BIN (IP2L-DB21 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El   :[ 70] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-SAMPLE.BIN (IP2L-DB22 IPv4 SAMPLE 20141218)
IP2Location: IPv4 Co/Re/Ci/LaLo/ISP/Dom/Mobile/Usagetype     :[ 71] IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE-SAMPLE.BIN (IP2L-DB23 IPv4 SAMPLE 20141218)
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 20141218)
IP2Location: IPv6 Country                                    :[ 73] IPV6-COUNTRY.SAMPLE.BIN             (IP2L-DB1 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Country/ISP                                :[ 74] IPV6-COUNTRY-ISP.SAMPLE.BIN         (IP2L-DB2 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Country/Region/City                        :[ 75] IPV6-COUNTRY-REGION-CITY.SAMPLE.BIN (IP2L-DB3 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Country/Region/City/ISP                    :[ 76] IPV6-COUNTRY-REGION-CITY-ISP.SAMPLE.BIN (IP2L-DB4 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Country/Region/City/LongitudeLattitude     :[ 77] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE.SAMPLE.BIN (IP2L-DB5 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Country/Region/City/LongLatt/ISP           :[ 78] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP.SAMPLE.BIN (IP2L-DB6 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/ISP/Domain                        :[ 79] IPV6-COUNTRY-REGION-CITY-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB7 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LattLong/ISP/Domain               :[ 80] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB8 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LattLong/ZIP                      :[ 81] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE.SAMPLE.BIN (IP2L-DB9 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LattLong/ZIP/ISP/Domain           :[ 82] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB10 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LattLong/ZIP/TZ                   :[ 83] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE.SAMPLE.BIN (IP2L-DB11 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Domain              :[ 84] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN.SAMPLE.BIN (IP2L-DB12 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/TZ/NetSpeed                  :[ 85] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED.SAMPLE.BIN (IP2L-DB13 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/ISP/Do/Netspeed        :[ 86] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED.SAMPLE.BIN (IP2L-DB14 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZIP/TZ/Area                  :[ 87] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE.SAMPLE.BIN (IP2L-DB15 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Net/Area         :[ 88] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE.SAMPLE.BIN (IP2L-DB16 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/TZ/Net/Weather               :[ 89] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-TIMEZONE-NETSPEED-WEATHER.SAMPLE.BIN (IP2L-DB17 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/Weather    :[ 90] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER.SAMPLE.BIN (IP2L-DB18 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ISP/Dom/Mobile               :[ 91] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE.SAMPLE.BIN (IP2L-DB19 IPv6 SAMPLE 20140722)
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 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/Area/Elevation         :[ 93] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-AREACODE-ELEVATION.SAMPLE.BIN (IP2L-DB21 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ZI/TZ/IS/Do/Ne/Ar/We/Mo/El   :[ 94] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION.SAMPLE.BIN (IP2L-DB22 IPv6 SAMPLE 20140722)
IP2Location: IPv6 Co/Re/Ci/LaLo/ISP/Dom/Mobile/Usagetype     :[ 95] IPV6-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE-USAGETYPE.SAMPLE.BIN (IP2L-DB23 IPv6 SAMPLE 20140722)
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 20140722)
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: IPv4 Country                                    :[  1] IP-COUNTRY.BIN                      (SOFTLINK IS UNSUPPORTED) 
IP2Location: IPv6 Country                                    :[ 25] IPV6-COUNTRY.BIN                    (IP2L-DB1 IPv6 20060918)
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=0    Country6=25   City4=0    City6=0  
IP2Location: selected best databases LI->SA*Country4=72   Country6=96   City4=72   City6=96 
IP2Location: selected best databases normal Country4=109  Country6=109  City4=109  City6=109
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: 0x03003cc0/0x03003cc0 (100%)
DBIP: info of available databases in directory: /usr/share/DBIP
DBIP: IPv4 CountryCode              : ipv6calc-dbip-ipv4-country.db  (DBIP-1/20150301, created: 20150304-183312 UTC)
DBIP: IPv6 CountryCode              : ipv6calc-dbip-ipv6-country.db  (DBIP-2/20150301, created: 20150304-183312 UTC)
DBIP: IPv4 City/Region/CountryCode  : ipv6calc-dbip-ipv4-city.db     (DBIP-3/20150301, created: 20150304-183330 UTC)
DBIP: IPv6 City/Region/CountryCode  : ipv6calc-dbip-ipv6-city.db     (DBIP-4/20150301, created: 20150304-183330 UTC)

External: features available/implemented: 0x300000cc/0x300000cc (100%)
External: info of available databases in directory: /usr/share/ipv6calc/db
External: IPv4 Registry              : ipv6calc-external-ipv4-registry.db       (EXTDB-1/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170218 UTC)
External: IPv6 Registry              : ipv6calc-external-ipv6-registry.db       (EXTDB-2/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC)
External: IPv4 CountryCode           : ipv6calc-external-ipv4-countrycode.db    (EXTDB-3/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20141014 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170219 UTC)
External: IPv6 CountryCode           : ipv6calc-external-ipv6-countrycode.db    (EXTDB-4/AFRINIC/20150215 APNIC/20150213 ARIN/20150215 IANA/20140520 LACNIC/20150213 RIPENCC/20150214, created: 20150215-170924 UTC)

BuiltIn: features available/implemented: 0x0000400f/0x0000400f (100%)
BuiltIn: info of available databases
BuiltIn: ASN  : IANA/20140905
BuiltIn: CC   : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 LACNIC/20150417 RIPENCC/20150417
BuiltIn: IPv4 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20141014 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-061822 UTC)
BuiltIn: IPv6 : AFRINIC/20150418 APNIC/20150417 ARIN/20150418 IANA/20150324 LACNIC/20150417 RIPENCC/20150417 (created: 20150418-062530 UTC)
BuiltIn: IEEE : IAB/20150418 OUI/20150418 OUI36/20150418

Database selection or priorization ('->': subsequential calls)
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_IPV6_COUNTRY (IPv6 to Country database): GeoIP->IP2Location
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

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

$ ./ipv6calc/ipv6calc -v -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

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)
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, productive, teredo
IPv4 address: 80.181.121.64
IPv4 registry[80.181.121.64]: RIPENCC
IPv4 address: 206.73.118.1
IPv4 registry[206.73.118.1]: ARIN
Address type is Teredo and included IPv4 server address is: 80.181.121.64 and client port: 4096
IPv4 registry for Teredo server address: ARIN
Registry for address: reserved

9.3.2.3. 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.3.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.3.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.3.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.3.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.3.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.3.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

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


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 --action filter -h
ipv6calc: version 0.99.0 GeoIP GeoIPv6 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

 Filter given addresses from stdout 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 [numeric])
   [^][ipv4.|ipv6.]db.reg=<REGISTRY> (Registry)
    Registry tokens: 6BONE IANA APNIC ARIN RIPENCC LACNIC AFRINIC 6TO4 reserved unknown

  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

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)
 *                                   0x3FF = unknown country
 *                                   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

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. 2015

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

  • 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.2. 2014

  • Shared library mode supported (reduces size of binaries)


16.3. 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.4. 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)

ipv6calc-0.99.1/doc/ldp.dsl0000664000175100017510000002315311652735314014410 0ustar peterpeter ]]> ]]> ]> ;; 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-0.99.1/ChangeLog0000664000175100017510000016175112572504142014134 0ustar peterpeter/* * $Id: ChangeLog,v 1.411 2015/09/05 06:14:58 ds6peter Exp $ */ Info: PB = Peter Bieringer NT = Niko Tyni ESR = Eric S. Raymond PV = Peter Volkov AGP = Anthony G. Basile -------------------------------------------------------------------- 20150905/PB databases: update, fix ieee parser ignoring " 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-0.99.1/examples/0000775000175100017510000000000012572537445014201 5ustar peterpeteripv6calc-0.99.1/examples/apache/0000775000175100017510000000000012572537445015422 5ustar peterpeteripv6calc-0.99.1/examples/apache/ipv6loganon.conf0000664000175100017510000000163212235230307020514 0ustar peterpeter### 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-0.99.1/examples/analog/0000775000175100017510000000000012572537445015442 5ustar peterpeteripv6calc-0.99.1/examples/analog/analog-dist-combined.cfg0000664000175100017510000000366707453371400022104 0ustar peterpeter# 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-0.99.1/examples/analog/analog-ipv6calc-descriptions.txt0000664000175100017510000001035007453371400023641 0ustar peterpeter# 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-0.99.1/examples/analog/analog-dist.cfg0000664000175100017510000000336607445066156020334 0ustar peterpeter# 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-0.99.1/examples/analog/run_analog.sh0000775000175100017510000000327307453371400020120 0ustar peterpeter#!/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: run_analog.sh,v 1.5 2002/04/05 18:54:56 peter Exp $ # 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-0.99.1/examples/analog/ipv6calc.tab0000664000175100017510000000045407453371400017631 0ustar peterpeteripv6calc 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-0.99.1/README.BUILDING-GeoIP0000664000175100017510000000205012221536047015361 0ustar peterpeterBUILDING 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-0.99.1/ipv6calcweb/0000775000175100017510000000000012572537445014570 5ustar peterpeteripv6calc-0.99.1/ipv6calcweb/test_ipv6calcweb.sh0000775000175100017510000000727312547144772020403 0ustar peterpeter#!/bin/bash # # Project : ipv6calc/ipv6calcweb # File : test_ipv6calcweb.sh # Version : $Id: test_ipv6calcweb.sh,v 1.14 2015/07/08 06:58:02 ds6peter Exp $ # 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-0.99.1/ipv6calcweb/test_ipv6calcweb_form.sh0000775000175100017510000000542312547144772021421 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/ipv6calcweb # File : test_ipv6calcweb_form.sh # Version : $Id: test_ipv6calcweb_form.sh,v 1.4 2015/07/08 06:58:02 ds6peter Exp $ # 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-0.99.1/ipv6calcweb/ipv6calcweb.conf0000664000175100017510000000326212467316704017643 0ustar peterpeter## 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-0.99.1/ipv6calcweb/fix-cgi-in.sh0000775000175100017510000000034611673725432017060 0ustar peterpeter#!/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-0.99.1/ipv6calcweb/ipv6calcweb.cgi.in0000775000175100017510000020403012517504017020054 0ustar peterpeter#!/usr/bin/perl -w -T # # Project : ipv6calc/ip6calcweb # File : ipv6calcweb.cgi # Version : $Id: ipv6calcweb.cgi.in,v 1.86 2015/04/27 19:03:43 ds6peter Exp $ # Copyright : 2002-2015 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 | 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; }; # Base URL for RFCs my $url_rfc = "https://tools.ietf.org/html/"; # 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 DMACODE", 'en' => "GeoIP DMACODE", }, '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", }, '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", }, '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", }, '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", }, 'TIMEZONE' => { 'de' => "Zeitzone", 'en' => "Time Zone", }, '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 $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" ) { 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" ) { if ( defined $$phash{'IPV6_REGISTRY' . $key_embedded} ) { $whois_registry = $$phash{'IPV6_REGISTRY' . $key_embedded}; $whois_type = "ipv6"; $flag_whoisurl = 1; }; }; my ($rfc, $section, $url); if ( $flag_whoisurl == 1 ) { if ( $whois_registry =~ /^reserved\((.*)\)$/o ) { ($rfc, $section) = split /#/, $1; $url = $url_rfc . lc($rfc); if (defined $section) { $url .= "#section-" . $section; }; &print_tagoutput ( "" ); } elsif ( defined $url_whoisservers{$whois_registry}->{$whois_type} ) { if ( $url_whoisservers{$whois_registry}->{$whois_type} ne "" ) { &print_tagoutput ( "{$whois_type} . $$phash{$key} . "\">" ); } else { $flag_whoisurl = 0; }; } else { if ($debug & 0x08) { print STDERR "whoisserver is not defined\n"; }; $flag_whoisurl = 0; }; }; &print_tagoutput ( "" ) if ($count_key_embedded > 0); my $value = $$phash{$key}; print $chr_quote . $value . $chr_quote; &print_tagoutput ( "" ) if ($count_key_embedded > 0); if ( $flag_whoisurl == 1 ) { &print_tagoutput ( "" ); }; 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 ( " $key\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" ); }; ($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}) { print $$phash{$key_result}; } 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-0.99.1/ipv6calcweb/README0000664000175100017510000000053107757714575015461 0ustar peterpeter$Id: README,v 1.1 2003/11/22 17:14:37 peter Exp $ 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-0.99.1/ipv6calcweb/create_ipv6calcweb-cgi.sh0000775000175100017510000000223112227322027021376 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/ipv6calcweb # File : create_ipv6calcweb.sh # Version : $Id: create_ipv6calcweb-cgi.sh,v 1.3 2013/10/15 20:22:47 ds6peter Exp $ # 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-0.99.1/ipv6calcweb/USAGE0000664000175100017510000000043307757702464015363 0ustar peterpeter$Id: USAGE,v 1.3 2003/11/22 15:48:04 peter Exp $ 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-0.99.1/ipv6calcweb/Makefile.in0000664000175100017510000000330512354267703016631 0ustar peterpeter# Project : ipv6calc/ipv6calcweb # File : Makefile # Version : $Id: Makefile.in,v 1.4 2014/06/30 14:10:11 ds6peter Exp $ # 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-0.99.1/mod_ipv6calc/0000775000175100017510000000000012572537445014731 5ustar peterpeteripv6calc-0.99.1/mod_ipv6calc/README.mod_ipv6calc0000664000175100017510000000506112532366615020153 0ustar peterpeter$Id: README.mod_ipv6calc,v 1.4 2015/05/30 17:04:13 ds6peter Exp $ 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-0.99.1/mod_ipv6calc/ipv6calc.conf0000664000175100017510000000715212572537216017310 0ustar peterpeter# 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-0.99.1/mod_ipv6calc/mod_ipv6calc.c0000664000175100017510000012557712553632162017453 0ustar peterpeter/* * Project : ipv6calc/mod_ipv6calc * File : mod_ipv6calc.c * Version : $Id: mod_ipv6calc.c,v 1.26 2015/07/22 06:13:06 ds6peter Exp $ * 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.scope = ipv4addr_gettype(&ipv4addr); 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.scope = ipv6addr_gettype(&ipv6addr); 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.scope & 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.scope & 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.scope & IPV4_ADDR_GLOBAL)) || ((pi == mod_ipv6calc_pi_IPV6) && (ipv6addr.scope & 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.scope & 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-0.99.1/mod_ipv6calc/test_mod_ipv6calc.sh0000775000175100017510000002323312553632162020667 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_mod_ipv6calc.sh # Version : $Id: test_mod_ipv6calc.sh,v 1.14 2015/07/22 06:13:06 ds6peter Exp $ # Copyright : 2015-2015 by Peter Bieringer # # Test patterns for ipv6calc conversions verbose=0 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=$! sleep 1 if 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" 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 ! 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 ps -p $pid --no-headers; then echo "WARN : process still running (kill now with -9)" kill -9 $pid fi else if ! 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 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-0.99.1/mod_ipv6calc/Makefile.in0000664000175100017510000000445312553254377017003 0ustar peterpeter# Project : ipv6calc # File : mod_ipv6calc/Makefile[.in] # Version : $Id: Makefile.in,v 1.11 2015/07/20 20:24:31 ds6peter Exp $ # 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-0.99.1/samplecode/0000775000175100017510000000000012572537445014477 5ustar peterpeteripv6calc-0.99.1/samplecode/getopt/0000775000175100017510000000000012572537445016001 5ustar peterpeteripv6calc-0.99.1/samplecode/getopt/URL0000664000175100017510000000017207436762051016362 0ustar peterpeterThis original code is located at: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/obrien/libgnugetopt-1.1.tar.gz ipv6calc-0.99.1/samplecode/getopt/libgnugetopt-1.1.tar.gz0000664000175100017510000002613507436762051022133 0ustar peterpeter‹cQ-7ì\ëWÛĈĥïWĵî1!·RÙµy„€›ĉBÖ%Ë£iVÛe„<YòĠÈNNŝ÷ûÛ{ό$ېĥ+§çCñŠYšÙ³gż£$ñÙy:>×E6*šVçğŻüG­ĥ××ÖÔWJuÖזíżmú×}ÚJ=^ïĴ,Ż·××ñxye}ŭ+µöoÀeê36E˜+ġU˜öoî§sóW ô×~’Iŝż /ġ Nô\£Ón?^]½˙k+-˙×Úkâ˙j§ÓùJµż ·~ŝĉüĜx¨^íŸ(‘qÈüĤñ°Ñ“dSUĊ£e²V§Ñ˜şµi'·2{Ñieı˙ŝ¸½ŭIáï—{[ŻŽ>İĤısŬWÍwI4Yu0J5³é%goĝËM7šħèàíî6ġU3*•9 Ŭoóp&À”(ÑaşÙ˜Ë‡ê?bŭ§ıûùϔŝ{Ê|ı5îÖ˙’ŝŻ‘xĵ²Júżĵöĝ^˙˙ŠÏwĴ÷’,=W Bġw/K“Ó"żQ£,N £Y^1­8¸nòĝü˘P‹ÛK޳ñd=xò$x²l´ƒN°ħlĴĞÁĈ`c]½ÌµVGÙ ¸†=P/³qÚ‹8Kµ›F­Fc˙àxgS_h…i–ĈQ˜(“óHĞl Š‹8À?)ü; 0+×qq‡šqÛV{bÇZçsC€Ô™VıeyÁEĤÎĈçÍsôn·Â¸5Œ‹–Á1­1ʳó<Ò2ÂĜXŒğê&3DX³Ĝy|6.€MA´ûÄfŭxpƒ ìLçŒTĦóĦôW:Ġ96öv|–čtj´ ħ.Ŭ1Àò솆7n£WWiì \A0ñ[- Ë/†a˜+pw—€ÖM# ‹ràŒ–éĞ8e,/²4lí:N˘ ”`0N‚FŞwğÇŻNŽĠÖŝ{ġnëpk˙ĝ}—ùáİÒ'Ž’˜ĉy˜7 BÍÎáökŒßzğ·{üž~ı{ĵżst¤^Ş-ġvëxwûdoëP½=9|{p´ÓRêHk&Èô0ŭAĤ†\$[}n ”ôĠExEBéĝ …*‚Ü~ž)p„¤VÀJşuUĦTÓĞtgò'€@E3‰.ÌäixħÏf?ğm|4{|$ ż “ħV§_›FħÊö 8ŭÙpúÎ3ï†¤¨öÌĠ(Ċ˙ğĥv_˙û+> W-‡İä\AÊuVŝ9ĵxñĥ> D ‚Hċ³~FħÂ%½†k'8ó˙£ġ¨RŜ£@£iFT"á³ó’Ô"' “KŠò,#ŝ‘ĴTï¸Q­”ÄqĴÊgbŠ[ÎŞ'OŬÔF_$ĵËĝàğŠïñ]§Ùs÷uËûşċ}ŬòÏFt§’ MµĴ­dtރ£—ßu$Ïl‹ŬYSR`Ĵ?áÀ&çE\`Ñlk÷'µÒZĉ$<~T?8ĜÛ?è½=<8>(KċòœÒ=*y*òŝTäŭİÈûS‘>öžÊÊ_pÈàĴ³„ÊċUi£|½V.½6$‡ĦXáóİĵgĈqLoœBgú%££f32rg|sTŸüÁC´ÖòèĝpwÖŝ ][›š6‹Y5œ^€ŜíîŻ,³TméöûWürĊIfħ ġĊ,À.’:Š[}G1"B%U83IƒkdvÙµˆk÷—(˜Ŭçt`çmžQŻew§¤¨fĈ‰Ĝ·Ĝq´6[óÎ Û,0eëĴ4’¤íĞkĥ-Ê3ĥ‹°-3ŽŬ2µ!_ˆ=rN^°,›í-ÍyÜ_š;'ş|@È+żm5oz\ùĵĈ.·wĞQ=Ìu=è]˜›z‡{ş$a‡ ó>óĴVÂ$ğS™‚Sž™‚…u"JŸëcvNà bġ’ ëœ])E›2ž6ı›‘şô–)ÑżÎòK#utDıcj4q×µŻ\?ÉdN²ée‡!ö)Œ|•Ò-?˘0 Laë/%n"8û1ûušQé·8×`ĜŸRŝŸö%҇/é#Ú$úCL…}ßPà–¨ìçÜuŜK§WqžĥıjğAwÚ{+xx¸³}L"K÷Ŭs­ċ#Žƒ9ƒħ-Ġj„l7ž£².I˙ÌMP~AF,$gŝ‡‰ĠD°Cöİôtl?ĝ†g"acäŒC™Â[%N8ú²gœàĴ³X3^^ù›ö·Ğmġ”F÷ŭíżGLî´Û”™Ĉ’hHñ!¸Úq £i-™SöÂ!+ÓšĦΓ› $Ĥ°XĜ­ŻGbвÔNú´”ÚÍÑ g08Ck™sŬ¤…ÉfY0Ħ)­Çı$²07\ "(\#"J·Ü[Ç|iÔñٝQgwe%š• &Î.6F:%’Wl§™Ó–3ñşT5jÇÛn§SëĈ,Ç£8şT‘âdàıÜG̓J“W$Äšë ĦJǐ  Ĝ=‰°çšş_$ûÒöŻÂ4bPŠMÍFĝf ŸŞ·M< ˘Ğ?öáwœu(9”bġÇ:x;!2$w–´™AsgŞ–ĝ1²2‘dvúj%y7˘‘¸ÁÚôü)7ž8RAêÈĠ Ĝ,ѵ6î #1¸Í\›ZkßZ~,­Î4tBâïQìgñ˙{²{¸#ŜÁ5ágù}š;éú)f‘¸2Powߜïˆ+%Ó$˜Ġá‹ÜIİÖs„ÓRÚĴòn $gä8:’Xš¨ïOˆ5­P…Ï'è´ĉ_¨,ñ"¨0žÂ´œ<•Ù ’b)6Úr˘™ I˙~v8Ä 'ù˙é·üvUĊ•8É´‡X¤ !NaRx-cU­CħŒƒ\½Ó.ĈœjŬ³Iç׺X­™ë6âäZ¤-Ĵ¸8³¤ĦŒÖÁ·ê†È²ÑòYċì×P(ê¤ĜÉRìM0/|­ĥ‚˜ÈÇ ô‡U"Èd9yİĊ+ĥ-ïŜA¸ Dޤd³à[ĜC {:ÎĞ)P Ä"&…;NÀ&Ŝ†UŽsĊu&|è;E+âèĊĜ’#[ í²êkuL‰× :,½'"XÍÛë³RĊ²À‚îù¤*”ÇĦlĦŞDò”Ŝ„‰Ž$PĠiż\£É‘°Ëġ9‚z$Ĥ"ĉşRŞç£Soמ  ÷0l2Vċ09u/&J9£hÛ·ċšĦš†<%òo×]!áÓjVÉÛ`ƒĈ'ÏuħÙ?şmLZÂYSÖyÉQfâÉM/Êrê]wŭûw³Š=­ëPâgqAœŽ¸œÙ•Cdßúk?Òµzɑ!hv^S‚y6&„mˆ\u€.Ĝz‘ñ"1 Ïħ'/Xŭ›N ° ~^moOW|ÇuŜÈ+asx]äĥ”@›ßâK@ÈJ—úrÚ`œF˘Ò0µ\”<:3Òâ3†U1zP,¸%Íñsµtè¨@nßsĴ (òÊ˛#Ż:Ú÷rèñÄğŒıKH†8gEvQà-İ"]~û­{1Çż ÚvoñÂ͋kq²ïÄB(›îó{T'Ém‹Óà´{i—Loe²Ë²U"³˘V!bİ´}‡ŭĴ°]°7Âş, Â$E¨?ıT‡+?sŭÓċX„ë2†}Àj]X˙KĈ:¤à3ÑWVĵËYô„UÒ ÌïꌜGö%²f‘‡!b·&öòl'E“ ™ĵ‰mĈM€ò!*ĈÛR‰Ĥ]ŞGĜZm­µT³İòĦ™:bĦ/V§vÖbòÜÇĉ! cbÂÔa"–²NŝÂŝd˘š1yŠ×5K8\ŸçÔĵĝ³„bQ(IĵŒG#.%ž²ûéa8›ZÖ;Q¨fżC–SJŠfϕz™8ÉĴş-'2W—ïVT@w}ċ™Û D†çĦıÛÀp‚ĊŜlF­Ğrz˜Žŝħmür<Ŭ ֓÷ÊI3éžĊp ÔcĊéĜœ~ĥ˘Ş4‰ìĝüTöDŻw2>Ŭ9&ö†á‡İ{×~^ċñylFŬş…´ÇĤŞCÊ#F£¸ß#!t?ÄeÒ˙è§ÌĜ<3İ|ĉĝ1Û4oSÁ)ZߗtmÂĊġ XBÎċ†•µlË,…Ĉè~Ù~ħçJxİıê8ÏDž'‘ĝŠÔG‹+Kî¸kïÈSŬ{ŭ5fËŭ+òGÔè!Aêı2ߢċĵŸ‘jš*är}ŸàèŬÖÛ˙w„"Óò’ú!s†˜ŞT{iŽ?â,?;ç>ĠğölqŻW G@ú6ŭù+˙ڝš{çğÁ-Üïĥ,À€cwrŸ$˘fÚ6\ì%î˘]ŭĉ'î|#öüByĜ˙-Œĝ¤ùĝÌ;|6×z˙éêCMoá~Ü bd—$£r‹w"³òËò`zĠ“¸r£K<$KĞ-\Y+)˜ħ ÏĠ|ï„U™–`ï]HXÁè˙ÛğÖßĥ$ŝ™ú+h­¤Z ì¤iû£×¤E€\R4>‡6HhIħ…DHT#ġ˙~;ϝ].%ÛÉ÷ü`ÈärıÙÙyüfU1ÙÑPġ‰65tĴ[Ĵ/'½Ì‡n"š5zD”vÌĈ´_x8¸ŭ¸ì‘şß]’”>˙¨ñ8×qċt^žl–.½ÔÑ X™/gÒy$ówœÎËr>utnĥôp:äqn¸œÀcŒ‡ ö/a÷'îç ó|L™]är†ÜDnŽ0DÓ,9öÈğC GĦ7TU1ÄĜ İ·Ĵżĝ…ğ,†uËFdŜÊŬĀ1ıOo³‘ġ ša·Ĉ˜‰ b0(ÖÁPzÄI.Á!ù¤i°e˘ÓÎĜŜÖ1”NKt(6b§Ž9‚[NÙżŭb½ÄiQŜ[@İĞ0T ŒU6 ‰¨çÌ@‘Pġ££:1$T‹HżĊ’÷µeqy‡¸xfaĜ²zV¨bÂÚ¨•[t…ĵÖX$\™à;÷ĝ Ş_ĵċċ]hĉ.ĉÇñš–"זÓÒRŭĴí›M6ƒ*,$HÉóéx:t;ĥÔŜŻŬ úµƒvÈġ@Q÷[èšÒŻûyçϽaÖı›ù`sŬġ=â °T]aH¨M&ċ…0ĠŠ‘0„Y8Bá_˜ıTfxaà‹ñ–§áQž¸“.Y@²#rÈ€½ŠêÂŜ-Çg`(Xbħ $ÁÊ_ş%KOĉE,‹1ƒ˙…ɗ@>íN òIŝĝŞûħğËé^>·x›wŒİ?˜Ċîĉ“ׇò8~ eidşñˆ$^ŜTfw<Ġò^œÈğŝ›ŭ|C=~ùŠÇÊ1s4òÀ°àŝ%‡L z$ß­—dXf¨Œ…‰up„ƒ%tĴ$ÂùÁÎ<[şÑ$sğí<‡]ùğĤš‡½ZÖ<¸ĉDú7ĥϛ!ê-“&_ç튷÷/F€M7ÏräƒVĉĵO[I\²ùh!hħ<7à’óf`… dâĉ#q°ÉL}{l_à×ĥ"ö&Ħ.‰XúÑĝĈâ—5ġT½É¨FŞ`ĠċµD…­TQ>8ÚŞż(ƒUq(êéKÈìg½o"*@ìç]’°ƒğ{ܘ•èĠˆXì_D ˘e¸…ĉ6ô“ùzÈ ’Çéí:Ï'*ÓEYC1G5dáʉŻÚXò<²ÌS’5Täۑ­2'Ñĝ<SĜışp_{‹ĴJ÷ϕ6›ÓCÑà˙ħ÷„Î îŠZßQì¤ıcw×Ì -DbĦéìnú€ñŽ\ŻúxĝvDŽÚV5G…Ĝ[îòä—XbVş…Iö‹£È A>Ĉ>VeZÈñy‘< \½HÄ-bžü×_ġ&ž '³ñžQ/ H£=1Ĝ^‚EìúĈân½Íßó{eŭWĊ-ġöüÛ†JӒU¤h_3q'Ĵ~,]ê(~£<+mÛ6=›[Ç£í˜w#Ñ× ò2Rŭœ›dċ÷ZB…÷ bù@нҍ\äİ,á"nĠżżwhzv–VpE>ˆ—bVşvÉ+ç*:$ó }²=Â<§\ӊ(xñÛ ÁÀßbrz(Œ6̂šÖ Ù!Aĵíh$“mµcmb œc˘6€áfÍX}ġäe qĊ^îٜ"ß*ƒĠOA6=VYğ³Ŭ‘C;$E žÒ•›ĝîÉù8[ĵù“<# ! %%§`ȕ‘1Ä›;=‚Ê:á0"ĥŭx·ÚµœĉSNĤ '`Fy”Ôُ4Cނβ„\VúiNrƒŒĦsÜak&&0´;³çGË"G'˜ğǒž…0‹l 6e½›sOÉĦħ*!ÓÙó Ú m#)ÔˆŠSıAúñ…Ĝ9XÀ Û§,=bèƒDDA>!;ğˆŝB˔Š‘wĦ°´[OfškÑĊœZ¸ÂĈEhq4·KSç&ŬÏĦM´uHq)a•uÍè{0ŸŜ<@’ëF‡Ü´ċʀTr#òv·<³D™²öÌGÀiĦ"µu†úa yÌ5QϸĴĞUcŠÀ>àG'>Ğ&²:uke&w­ç ]t„WL–Œ4™—˜Ÿĉô´t+JĈ-}Ä0ġlâĦQKŜ…pŻâè°5"ŝF´Ne%Äâ.9ݲO €Á%2[Ù ó]ĠӪďŽt‰ßĊ…òö¨ƒtÂ>ñĊ&êH†9Tó5ûËQlĦÙpVä„1y•ġÌn…uż„ı·É^O[m„ Cu)_]™ô$)1ž ê‰ìÔïÀu'ı°r]]6ĥKü9 C@‡!ˆ­'zTʋ甂ñÍoäü•ħcÄZž€4‚'ûjĤPŒ£\IŸ‹<Ħ?TüDği ,S_Úïô4ôĞ´ğgtXò÷‰ Vĵú½I/ٕ T Ñüu1ZŝWEûċéï/OŜPóóoóg?ù˙–Ġ+&(G/ét|öĤ÷Â(Ñ3 Ş5Š˜Ò€2³q*E‹,_ġìâƒ[³è#6‹şeĥ–úתy/2ş3вµìİiÏxžbjl?&0 ŒZgıÌ àxÛĝúl¨8Á4PATž°½lÙÖĊRµŻûQH*]7‹Ž[KE¤œĠ9^²+³l Aà@éšô.×2Çĉï„89(£ŝOJŠç@6–"ŬS´ĉèpĜ u3Œk "/”Ŭj0 q€µ~Rë –·ÙwŽtÀvÈ>]„ޏĉ§ž½ÂżC" °™ +³LŽï‡7ċÚi7ĞÔ ı>Ey‰ġÇĠ tŒœ€6HöôĜ…µ°´ĜPêĉĉèHlÑÂp^޽ajàž Hօˆ˘9ŠpeìäE&ŸŻ.¤˜ 8sD&g †xäòöÉÖXr•ċ>Ú~¸‘ÉUäWDŠ 3)ü%ÒÍN6Ô4)£l 8êĊ Í%§—•qY†zKì&(äÜgÛ3#½†™Ĝ1ˆ‡à÷ŸTŠ´95Uĉ*Özğ€˜’uQYċĈU,iĈ  ´ë˜;Ëçâô_S,† œPÊݏÇùàÍ3İKƒ °ö|ìV‡ˆĥñŠ"U18²úá觅,x—Ŝ<—€2'r:vġŬçwœk8§´ÈŽˆÂCÚ(G€î”ü-°‡`dŜÉÖċ•ó £“Ĉĥ³p}èSX‘TÇEñûà+À&ŜM’>żàÈl)0,ùôɝh˜òöğġiħl#´Œ×zudŬ¨ĴÛaß[²ÓÎB#ôUôe*”opWqûÖEáÜxĠ^·'眒nB1O`¨äSÁlĴJÎEé3–óbxx–cêôŽÒnšHaXï ĤRöîkÔ}ĵ”Q”£J{pr´Oú<öfRñ]l~J+]4\ĉ@3vŭXDrġééä,éÚ(• j’SYá>ÜnĽqÄğvJƒJrÔ9ÌùDĦş ~.0šüÊJ°_ÀN$óĈ|[čĦÍDö›uĈ‰­¸-·^Ĝžri1x„¸óĊînĝÛ 4RÍ Ċ.Ü×Ŝ÷ƒ€3ä{=äé쟆÷ğk·^ÎÈş\öü šW3uäï3µ×Ÿ,8cĵd §ëKYĤ´ħOİ™ĉpb³Lhv9ÁŝUqà:Ô}4ċ‰Gi›*_—[(ğ@Ş?˜y2lĝ½#dOÛê•Ŭ¨éÈĴXE°Y£OFC95lU:– V8eì@Ö!ħ†ûT·vbœ-ĤY“‘€IȲžÊÖşëaJ‡^Àd]c. öĴ€Ù² _<Ί@ñB·Ħ{ŝêw0^“ 4òİıĞ„•*Yê‘o?ê‡ÙÖ~6éé)óˆ ¤g‰ê”-7sJmż ĤÍ÷cˆ?+DĊ"Y@Ïġ¤Â8…`3™q?néí[Á„çËup 2#mŠdn#: €äÈWêŞIg”& 餜™ùŽp{vı~Gó·mÙ7[´Ĵ2X‰ĉâK[èË(ñJxx@ÓħÁtTLÙ~L™‰# ı$¤èí“Ŭ,1¸ĞNòèĠlÓ ò”oc×Áy p;èäÇĝ÷ 5şÛıO“€™@b}Oñn;a`׌'êğiCTÊ~ûó½°¸Ġ€~ĈÓ2Àë†RxĴ ı@èŒóĊ÷IĤ0>À`C\1Y[e^d—ñ5•úŭAßò2=:ZÀ[Ĥm d÷ÈVı…ÛÊĞIaTMş=³o§·ı`)Ġ¨o´Ġ‡²n{L¤1béW†‹òÌÚÜÀoôad‰G†ôjKÂĊrä³´Û7Ŭ£İ:ÒcŸÍçïsԝF5‹uKE£¨RCz6âTuŠ%q‚Ĉ™à›¤Šanć—lœ3ú=+/ĝ3eš“4žéƒéQ£„jjŒġfqŒpÁöyçy–ĵò™$oC˘FžŽ0°*‹šLm˜úi2öJ}Q*šÍqĵÄQGM“Ĉg…Ĝ\!ßÜ3çb(1 …hĴÔZ[ñŒÈ *Bç#Q-}ÑW2­?Ïgdz `Ëïä'pî6lÉŻÜhÌ !H m<1ó s$ğÉĞF¸Áĉ‡v"6ĞÓgk„ŞliħY¤Àf‘î*·"­5³ÉÂd“İ ›É!$äƒNŝĴÖIB5ċ›Èjd†$/=½|WĊ{Áö,QĠġH+™r S/ž6İi6ż0¤0 G!ñ€ƒ%~ĠânzjÙ0wj¤CbÏ Hġż€ŜMÛcQG;,ÑŭŸXˆCI>gí­C;ll ĉz·dF—D‡¸£ÛJ”?ÎŬÄH;µnçgf=ÏdŞ­‡”ĉ;$ĥ –^$_~Êg€Xż& —ĈäÔéHÎlS‰)%ĉïÔĉ!^.2ßĝÌ[rè+7°°&Xħäd77âäÍ8Ù×°à°(uN$]Žô˜0Û°’ħÉf“çĦ…$Ïëm$ YˍßBŝ&oÌvĞ͍Z|›8Ê ,6YhĴÁe™6ÔlâdÛÌ5nÜhħÙh³ıŽŜħäH Ô^UÌ4vƒİ5Ġ$í3ÊżÈ8“_Ç<“ĠXfìĥĜf2µf|ĉ*ÚéIû³•˜ĥ­FŒÊ$ĤL×Ò¸cۄîIuĤѤ…‚ú4OlróŬnĜL˙oa¨£}kݸÙÈ]&QĠëĴ°zÛÄfëD­}‚Ĉy›q"‹ìÚĉ¤m˘Ş<²xë)ëU1„ÏĜ%oóż³Vˆ éĵQà*Î÷_§Ġ&|x7Ž>Ğ”Z#áxQ†‚=çì"qÖKÈ2Ž)9‹¸bÒÄ?Q›!=˜ğF`ÛÚŻ ²ŝôĉˤ}¨ŭf˘ŝĈáĞ“÷#ö£ĵCxÊí$ŝ œçĉ²ĴċÒä†znV/ôgVâ÷L3”ġëĵI×ô³/—òÚNZ£ÓTn½×XàÎá·ċÌ˙m,<úş`qžĜnR×ïċ{ZĦÜĉĈ^ÓĝD^Ïç9sH>c\ïɓ—'rî3œûò1܇Ġ4ċÈǟĈ5İE˜_}E1!c< ƒc")*†‚N&Œbg'xĵ<3hğ½iˆ£DRCI 5šœMÊ7²\1É"÷#ôùŒrCżáL_âÇòÓÁÓKC ŜŻEğ8ŒööïŜûŝŝ~|ĜRĦnr ëülċ†ĠIê]Ĉa²âÎ^ç@~îûŸwŭÏ{ŝç÷ŝç}˙ó˙ó˙ù£˙ù~RӂÛ9˘lKñÍê81VĠĈ7V˜gƒ Y•Ä‚Aò1VÀĦpF³Uŭ –Òo0™#‹Sƒ† (÷Ĵ žĊïúͨüişüi]ùaş<'‡èĦ·dï3[JÖsLġè]ÎV~|,ÄĤ!tQêî½oĉùñħc OÈĊ–üġ#uĦpı§á†×Q€ÖñÍ*o÷#ĉĞ/k)Smàĝ“ĝŬ€/Ħ¨,ĉV'ŝ†Wċüßߟüôĝ_OĈѲzm>˙7ÏïŬ‡óìßğûŭƒŭwŬ{÷îŝœ˙ûw\"²"2ȝ¸4|Ï`Ġey™%ò%gmĊÓNy­I.p:WŭçËÇwZ-<Ù I\Aĥĉ>eŒâċ˜Îî“Ü SÁ10nñá‹z Xi ÜI†{÷ï<|ĜĠj½xßwġÑ{ÑĦwèXıß1]à ÂÈğċ´—ôZ_ĵNšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıšĞıŝŸŻ˙]ŞÈ-Èipv6calc-0.99.1/samplecode/addrconf.c0000664000175100017510000013432507436532243016425 0ustar peterpeter/* $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-0.99.1/samplecode/ip6_int0000775000175100017510000000662707360065414015777 0ustar peterpeter#!/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-0.99.1/samplecode/coreutils/0000775000175100017510000000000012572537445016510 5ustar peterpeteripv6calc-0.99.1/samplecode/coreutils/md5.c0000664000175100017510000003326710140707675017345 0ustar peterpeter/* 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-0.99.1/samplecode/coreutils/md5.h0000664000175100017510000001114610140707675017342 0ustar peterpeter/* 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-0.99.1/samplecode/ipv6.h0000664000175100017510000002117407436532243015533 0ustar peterpeter/* $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-0.99.1/CREDITS0000664000175100017510000000410212366507757013404 0ustar peterpeterCredits to * 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 patch 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, 2014-02-02 ipv6calc-0.99.1/configure0000775000175100017510000066100212553254377014276 0ustar peterpeter#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for ipv6calc 0.99.1. # # 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='0.99.1' PACKAGE_STRING='ipv6calc 0.99.1' 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 0.99.1 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 0.99.1:";; 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 0.99.1 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 0.99.1, 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=2015 PACKAGE_VERSION_MAJOR=0 PACKAGE_VERSION_MINOR=99 PACKAGE_VERSION_BUGFIX=1 API_VERSION_MAJOR=0 API_VERSION_MINOR=99 API_VERSION_BUGFIX=1 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" 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_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 # 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 0.99.1, 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 0.99.1 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: *** 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-0.99.1/TODO0000664000175100017510000000202412522225317013034 0ustar peterpeter# Project: ipv6calc # File : TODO # Version: $Id: TODO,v 1.28 2015/05/05 20:40:47 ds6peter Exp $ TODO list ========= Next ---------- 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 cleanup: * finish splint 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. ipv6calc-0.99.1/databases/0000775000175100017510000000000012572537445014312 5ustar peterpeteripv6calc-0.99.1/databases/ipv6-assignment/0000775000175100017510000000000012572537445017344 5ustar peterpeteripv6calc-0.99.1/databases/ipv6-assignment/Makefile0000664000175100017510000000204712471561732021001 0ustar peterpeter# Project : ipv6calc/databases/ipv6-assignment # File : Makefile # Version : $Id: Makefile,v 1.8 2015/02/20 07:35:54 ds6peter Exp $ # Copyright : 2005-2015 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 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 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-0.99.1/databases/ipv6-assignment/dbipv6addr_assignment.h0000664000175100017510000001317312572502575023773 0ustar peterpeter/* * Project : ipv6calc * File : dbipv6_assignment.h * Version : $Id: dbipv6addr_assignment.h,v 1.72 2015/09/05 06:02:37 ds6peter Exp $ * Generated : 20150905-071000+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" /*@unused@*/ static const char* dbipv6addr_registry_status __attribute__ ((__unused__)) = "AFRINIC/20150904 APNIC/20150904 ARIN/20150904 IANA/20150810 LACNIC/20150904 RIPENCC/20150904"; /*@unused@*/ static const time_t dbipv6addr_registry_unixtime __attribute__ ((__unused__)) = 1441429800; 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 }, { 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 }, }; ipv6calc-0.99.1/databases/ipv6-assignment/README0000664000175100017510000000016510326777455020230 0ustar peterpeter$Id: README,v 1.2 2005/10/23 21:22:53 peter Exp $ Use "make update" to create header file from registry data files ipv6calc-0.99.1/databases/ipv4-assignment/0000775000175100017510000000000012572537445017342 5ustar peterpeteripv6calc-0.99.1/databases/ipv4-assignment/Makefile0000664000175100017510000000177412471561732021005 0ustar peterpeter# Project : ipv6calc/databases/ipv4-assignment # File : Makefile # Version : $Id: Makefile,v 1.23 2015/02/20 07:35:54 ds6peter Exp $ # Copyright : 2005-2015 by Peter Bieringer # # Information: # Makefile for ipv4-assignment all: test -f dbipv4addr_assignment.h || ${MAKE} update install: echo "Nothing to do" force-update: ${MAKE} updateclean ${MAKE} update 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 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 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-0.99.1/databases/ipv4-assignment/dbipv4addr_assignment.h0000664000175100017510000362172312572502575024000 0ustar peterpeter/* * Project : ipv6calc * File : dbipv4_assignment.h * Version : $Id: dbipv4addr_assignment.h,v 1.90 2015/09/05 06:02:37 ds6peter Exp $ * Generated : 20150905-070208+0200 CEST * Data copyright: RIPE NCC, APNIC, ARIN, LACNIC, AFRINIC * * Information: * Additional header file for databases/lib/libipv6calc_db_wrapper_BuiltIn.c */ #include "databases/lib/libipv6calc_db_wrapper_BuiltIn.h" /*@unused@*/ static const char* dbipv4addr_registry_status __attribute__ ((__unused__)) = "AFRINIC/20150904 APNIC/20150904 ARIN/20150904 IANA/20150810 LACNIC/20150904 RIPENCC/20150904"; /*@unused@*/ static const time_t dbipv4addr_registry_unixtime __attribute__ ((__unused__)) = 1441429328; 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, 0x052d1fff, REGISTRY_RIPENCC }, // 5.9.0.0 - 5.45.31.255 { 0x052d3000, 0x0564efff, REGISTRY_RIPENCC }, // 5.45.48.0 - 5.100.239.255 { 0x0564f800, 0x05853fff, REGISTRY_RIPENCC }, // 5.100.248.0 - 5.133.63.255 { 0x05858000, 0x05b3ffff, REGISTRY_RIPENCC }, // 5.133.128.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, 0x0dffffff, REGISTRY_ARIN }, // 11.0.0.0 - 13.255.255.255 { 0x0e000000, 0x0e0117ff, REGISTRY_APNIC }, // 14.0.0.0 - 14.1.23.255 { 0x0e012000, 0x0e015fff, REGISTRY_APNIC }, // 14.1.32.0 - 14.1.95.255 { 0x0e018000, 0x0e669fff, REGISTRY_APNIC }, // 14.1.128.0 - 14.102.159.255 { 0x0e66c000, 0x0ebfffff, REGISTRY_APNIC }, // 14.102.192.0 - 14.191.255.255 { 0x0ec02000, 0x0ec02fff, REGISTRY_APNIC }, // 14.192.32.0 - 14.192.47.255 { 0x0ec03c00, 0x0effffff, REGISTRY_APNIC }, // 14.192.60.0 - 14.255.255.255 { 0x0f000000, 0x1883ffff, REGISTRY_ARIN }, // 15.0.0.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, 0x1b007fff, REGISTRY_APNIC }, // 27.0.0.0 - 27.0.127.255 { 0x1b010000, 0x1b3207ff, REGISTRY_APNIC }, // 27.1.0.0 - 27.50.7.255 { 0x1b320c00, 0x1b3673ff, REGISTRY_APNIC }, // 27.50.12.0 - 27.54.115.255 { 0x1b367800, 0x1b368fff, REGISTRY_APNIC }, // 27.54.120.0 - 27.54.143.255 { 0x1b369800, 0x1b6057ff, REGISTRY_APNIC }, // 27.54.152.0 - 27.96.87.255 { 0x1b606000, 0x1b6403ff, REGISTRY_APNIC }, // 27.96.96.0 - 27.100.3.255 { 0x1b640800, 0x1b6417ff, REGISTRY_APNIC }, // 27.100.8.0 - 27.100.23.255 { 0x1b641c00, 0x1b6423ff, REGISTRY_APNIC }, // 27.100.28.0 - 27.100.35.255 { 0x1b642800, 0x1b6d7bff, REGISTRY_APNIC }, // 27.100.40.0 - 27.109.123.255 { 0x1b6d8000, 0x1b6f47ff, REGISTRY_APNIC }, // 27.109.128.0 - 27.111.71.255 { 0x1b6f4c00, 0x1b706fff, REGISTRY_APNIC }, // 27.111.76.0 - 27.112.111.255 { 0x1b707c00, 0x1b7427ff, REGISTRY_APNIC }, // 27.112.124.0 - 27.116.39.255 { 0x1b742c00, 0x1b7a3bff, REGISTRY_APNIC }, // 27.116.44.0 - 27.122.59.255 { 0x1b7a4000, 0x1b7bdfff, REGISTRY_APNIC }, // 27.122.64.0 - 27.123.223.255 { 0x1b7c0000, 0x1bffffff, REGISTRY_APNIC }, // 27.124.0.0 - 27.255.255.255 { 0x1c000000, 0x1effffff, REGISTRY_ARIN }, // 28.0.0.0 - 30.255.255.255 { 0x1f000000, 0x1f0db7ff, REGISTRY_RIPENCC }, // 31.0.0.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, 0x1f28bfff, REGISTRY_RIPENCC }, // 31.40.0.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, 0x1f8307ff, REGISTRY_RIPENCC }, // 31.128.0.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, 0x1faa5fff, REGISTRY_RIPENCC }, // 31.136.0.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, 0x1fd20fff, REGISTRY_RIPENCC }, // 31.172.232.0 - 31.210.15.255 { 0x1fd21800, 0x1fd28fff, REGISTRY_RIPENCC }, // 31.210.24.0 - 31.210.143.255 { 0x1fd29800, 0x1fd9f7ff, REGISTRY_RIPENCC }, // 31.210.152.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, 0x24feffff, REGISTRY_APNIC }, // 36.51.0.0 - 36.254.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, 0x252e8fff, REGISTRY_RIPENCC }, // 37.32.104.0 - 37.46.143.255 { 0x252e9800, 0x257ad7ff, REGISTRY_RIPENCC }, // 37.46.152.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, 0x258f7fff, REGISTRY_RIPENCC }, // 37.140.224.0 - 37.143.127.255 { 0x258f8800, 0x2594f7ff, REGISTRY_RIPENCC }, // 37.143.136.0 - 37.148.247.255 { 0x25950000, 0x25dd3fff, REGISTRY_RIPENCC }, // 37.149.0.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, 0x2948ffff, REGISTRY_AFRINIC }, // 41.63.0.0 - 41.72.255.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, 0x294c2fff, REGISTRY_AFRINIC }, // 41.75.32.0 - 41.76.47.255 { 0x294c3800, 0x294c9fff, REGISTRY_AFRINIC }, // 41.76.56.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, 0x294e83ff, REGISTRY_AFRINIC }, // 41.78.72.0 - 41.78.131.255 { 0x294e8800, 0x294e9fff, REGISTRY_AFRINIC }, // 41.78.136.0 - 41.78.159.255 { 0x294ea400, 0x294eb3ff, REGISTRY_AFRINIC }, // 41.78.164.0 - 41.78.179.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, 0x294f53ff, REGISTRY_AFRINIC }, // 41.79.4.0 - 41.79.83.255 { 0x294f5800, 0x294f8bff, REGISTRY_AFRINIC }, // 41.79.88.0 - 41.79.139.255 { 0x294f9000, 0x29571fff, REGISTRY_AFRINIC }, // 41.79.144.0 - 41.87.31.255 { 0x29574000, 0x29bd5fff, REGISTRY_AFRINIC }, // 41.87.64.0 - 41.189.95.255 { 0x29bda000, 0x29beefff, REGISTRY_AFRINIC }, // 41.189.160.0 - 41.190.239.255 { 0x29bef400, 0x29bf3fff, REGISTRY_AFRINIC }, // 41.190.244.0 - 41.191.63.255 { 0x29bf4400, 0x29bf5bff, REGISTRY_AFRINIC }, // 41.191.68.0 - 41.191.91.255 { 0x29bf6000, 0x29bf6bff, REGISTRY_AFRINIC }, // 41.191.96.0 - 41.191.107.255 { 0x29bf7400, 0x29cedfff, REGISTRY_AFRINIC }, // 41.191.116.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, 0x29d8afff, REGISTRY_AFRINIC }, // 41.212.0.0 - 41.216.175.255 { 0x29d8c000, 0x29d8efff, REGISTRY_AFRINIC }, // 41.216.192.0 - 41.216.239.255 { 0x29d98000, 0x29d9c3ff, REGISTRY_AFRINIC }, // 41.217.128.0 - 41.217.195.255 { 0x29d9c800, 0x29d9f7ff, REGISTRY_AFRINIC }, // 41.217.200.0 - 41.217.247.255 { 0x29da0000, 0x29dd6fff, REGISTRY_AFRINIC }, // 41.218.0.0 - 41.221.111.255 { 0x29dd8000, 0x29de4fff, REGISTRY_AFRINIC }, // 41.221.128.0 - 41.222.79.255 { 0x29de5800, 0x29de97ff, REGISTRY_AFRINIC }, // 41.222.88.0 - 41.222.151.255 { 0x29dea000, 0x29deffff, REGISTRY_AFRINIC }, // 41.222.160.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 { 0x29f60000, 0x29ffffff, REGISTRY_AFRINIC }, // 41.246.0.0 - 41.255.255.255 { 0x2a000000, 0x2be19bff, REGISTRY_APNIC }, // 42.0.0.0 - 43.225.155.255 { 0x2be1a000, 0x2be4a3ff, REGISTRY_APNIC }, // 43.225.160.0 - 43.228.163.255 { 0x2be4a800, 0x2be4f3ff, REGISTRY_APNIC }, // 43.228.168.0 - 43.228.243.255 { 0x2be4f800, 0x2be543ff, REGISTRY_APNIC }, // 43.228.248.0 - 43.229.67.255 { 0x2be54800, 0x2be5a3ff, REGISTRY_APNIC }, // 43.229.72.0 - 43.229.163.255 { 0x2be5a800, 0x2be7cbff, REGISTRY_APNIC }, // 43.229.168.0 - 43.231.203.255 { 0x2be7d000, 0x2bf283ff, REGISTRY_APNIC }, // 43.231.208.0 - 43.242.131.255 { 0x2bf28800, 0x2bf383ff, REGISTRY_APNIC }, // 43.242.136.0 - 43.243.131.255 { 0x2bf38800, 0x2bf577ff, REGISTRY_APNIC }, // 43.243.136.0 - 43.245.119.255 { 0x2bf57c00, 0x2bf5dbff, REGISTRY_APNIC }, // 43.245.124.0 - 43.245.219.255 { 0x2bf5e000, 0x2bfa4bff, REGISTRY_APNIC }, // 43.245.224.0 - 43.250.75.255 { 0x2bfa5000, 0x2bffffff, REGISTRY_APNIC }, // 43.250.80.0 - 43.255.255.255 { 0x2c000000, 0x2d03ffff, REGISTRY_ARIN }, // 44.0.0.0 - 45.3.255.255 { 0x2d100000, 0x2d3fffff, REGISTRY_ARIN }, // 45.16.0.0 - 45.63.255.255 { 0x2d400000, 0x2d410fff, REGISTRY_APNIC }, // 45.64.0.0 - 45.65.15.255 { 0x2d480000, 0x2d4fffff, REGISTRY_ARIN }, // 45.72.0.0 - 45.79.255.255 { 0x2d600000, 0x2d67ffff, REGISTRY_AFRINIC }, // 45.96.0.0 - 45.103.255.255 { 0x2d700000, 0x2d7003ff, REGISTRY_APNIC }, // 45.112.0.0 - 45.112.3.255 { 0x2d700800, 0x2d7203ff, REGISTRY_APNIC }, // 45.112.8.0 - 45.114.3.255 { 0x2d720800, 0x2d7eb3ff, REGISTRY_APNIC }, // 45.114.8.0 - 45.126.179.255 { 0x2dc00000, 0x2ddbffff, REGISTRY_AFRINIC }, // 45.192.0.0 - 45.219.255.255 { 0x2df00000, 0x2df7ffff, REGISTRY_AFRINIC }, // 45.240.0.0 - 45.247.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, 0x2e93ffff, REGISTRY_RIPENCC }, // 46.30.192.0 - 46.147.255.255 { 0x2e940000, 0x2e94efff, REGISTRY_RIPENCC }, // 46.148.0.0 - 46.148.239.255 { 0x2e94f000, 0x2e950fff, REGISTRY_RIPENCC }, // 46.148.240.0 - 46.149.15.255 { 0x2e951000, 0x2e971fff, REGISTRY_RIPENCC }, // 46.149.16.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, 0x2eabffff, REGISTRY_RIPENCC }, // 46.152.0.0 - 46.171.255.255 { 0x2eac0000, 0x2eadefff, REGISTRY_RIPENCC }, // 46.172.0.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, 0x2eafffff, REGISTRY_RIPENCC }, // 46.174.208.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, 0x2f5bffff, REGISTRY_ARIN }, // 47.0.0.0 - 47.91.255.255 { 0x2f5c0000, 0x2f7fffff, REGISTRY_APNIC }, // 47.92.0.0 - 47.127.255.255 { 0x2f800000, 0x30ffffff, REGISTRY_ARIN }, // 47.128.0.0 - 48.255.255.255 { 0x31000000, 0x310003ff, REGISTRY_APNIC }, // 49.0.0.0 - 49.0.3.255 { 0x31000800, 0x318003ff, REGISTRY_APNIC }, // 49.0.8.0 - 49.128.3.255 { 0x31800800, 0x319bffff, REGISTRY_APNIC }, // 49.128.8.0 - 49.155.255.255 { 0x319c0400, 0x319c13ff, REGISTRY_APNIC }, // 49.156.4.0 - 49.156.19.255 { 0x319c1800, 0x31ffffff, REGISTRY_APNIC }, // 49.156.24.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, 0x34ffffff, REGISTRY_ARIN }, // 52.0.0.0 - 52.255.255.255 { 0x35000000, 0x35ffffff, REGISTRY_RIPENCC }, // 53.0.0.0 - 53.255.255.255 { 0x36000000, 0x36ddffff, REGISTRY_ARIN }, // 54.0.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, 0x3a53ffff, REGISTRY_APNIC }, // 58.0.0.0 - 58.83.255.255 { 0x3a544000, 0x3b980fff, REGISTRY_APNIC }, // 58.84.64.0 - 59.152.15.255 { 0x3b985800, 0x3b986fff, REGISTRY_APNIC }, // 59.152.88.0 - 59.152.111.255 { 0x3b988000, 0x3b98ffff, REGISTRY_APNIC }, // 59.152.128.0 - 59.152.255.255 { 0x3b9a0000, 0x3d0ec7ff, REGISTRY_APNIC }, // 59.154.0.0 - 61.14.199.255 { 0x3d0f0000, 0x3dffffff, REGISTRY_APNIC }, // 61.15.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, 0x3e7ad7ff, REGISTRY_RIPENCC }, // 62.122.80.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, 0x3eb6afff, REGISTRY_RIPENCC }, // 62.182.102.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, 0x401c7fff, REGISTRY_ARIN }, // 63.0.0.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, 0x40396fff, REGISTRY_ARIN }, // 64.32.128.0 - 64.57.111.255 { 0x40397000, 0x40397fff, REGISTRY_AFRINIC }, // 64.57.112.0 - 64.57.127.255 { 0x40398000, 0x4207ffff, REGISTRY_ARIN }, // 64.57.128.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, 0x4260bfff, REGISTRY_ARIN }, // 66.60.64.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, 0x42da83ff, REGISTRY_ARIN }, // 66.128.48.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, 0x42fb7fff, REGISTRY_ARIN }, // 66.231.80.0 - 66.251.127.255 { 0x42fbc000, 0x453f3fff, REGISTRY_ARIN }, // 66.251.192.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, 0x4823fbff, REGISTRY_ARIN }, // 69.67.48.0 - 72.35.251.255 { 0x4823fc00, 0x4823fdff, REGISTRY_APNIC }, // 72.35.252.0 - 72.35.253.255 { 0x4823fe00, 0x482c0fff, REGISTRY_ARIN }, // 72.35.254.0 - 72.44.15.255 { 0x482c2000, 0x4a5b2fff, REGISTRY_ARIN }, // 72.44.32.0 - 74.91.47.255 { 0x4a5b4000, 0x4a764fff, REGISTRY_ARIN }, // 74.91.64.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, 0x4e1fffff, REGISTRY_RIPENCC }, // 78.31.0.0 - 78.31.255.255 { 0x4e200000, 0x4e292fff, REGISTRY_RIPENCC }, // 78.32.0.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, 0x5044dfff, REGISTRY_RIPENCC }, // 80.67.144.0 - 80.68.223.255 { 0x5044e000, 0x5044ffff, REGISTRY_RIPENCC }, // 80.68.224.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, 0x504e7fff, REGISTRY_RIPENCC }, // 80.75.192.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 { 0x50580400, 0x505807ff, REGISTRY_AFRINIC }, // 80.88.4.0 - 80.88.7.255 { 0x50580c00, 0x50580fff, REGISTRY_AFRINIC }, // 80.88.12.0 - 80.88.15.255 { 0x50581000, 0x505effff, REGISTRY_RIPENCC }, // 80.88.16.0 - 80.94.255.255 { 0x505f0000, 0x505f03ff, REGISTRY_AFRINIC }, // 80.95.0.0 - 80.95.3.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 { 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, 0x515bdfff, REGISTRY_RIPENCC }, // 81.88.16.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, 0x51a3ffff, REGISTRY_RIPENCC }, // 81.163.72.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 { 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, 0x538dffff, REGISTRY_RIPENCC }, // 83.136.152.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, 0x5396ffff, REGISTRY_RIPENCC }, // 83.144.0.0 - 83.150.255.255 { 0x53970000, 0x53973fff, REGISTRY_RIPENCC }, // 83.151.0.0 - 83.151.63.255 { 0x53974000, 0x53af7fff, REGISTRY_RIPENCC }, // 83.151.64.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, 0x53f27fff, REGISTRY_RIPENCC }, // 83.242.0.0 - 83.242.127.255 { 0x53f28000, 0x53f2ffff, REGISTRY_RIPENCC }, // 83.242.128.0 - 83.242.255.255 { 0x53f30000, 0x53f377ff, REGISTRY_RIPENCC }, // 83.243.0.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, 0x5426ffff, REGISTRY_RIPENCC }, // 84.38.112.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, 0x54c9ffff, REGISTRY_RIPENCC }, // 84.201.192.0 - 84.201.255.255 { 0x54ca0000, 0x54ccffff, REGISTRY_RIPENCC }, // 84.202.0.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, 0x551fdfff, REGISTRY_RIPENCC }, // 85.8.192.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, 0x5575dfff, REGISTRY_RIPENCC }, // 85.92.128.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, 0x55feffff, REGISTRY_RIPENCC }, // 85.203.0.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, 0x55ffffff, REGISTRY_RIPENCC }, // 85.255.128.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, 0x57654fff, REGISTRY_RIPENCC }, // 87.101.0.0 - 87.101.79.255 { 0x57656000, 0x57657fff, REGISTRY_RIPENCC }, // 87.101.96.0 - 87.101.127.255 { 0x57658000, 0x57eeffff, REGISTRY_RIPENCC }, // 87.101.128.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, 0x57eff7ff, REGISTRY_RIPENCC }, // 87.239.80.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, 0x59131fff, REGISTRY_RIPENCC }, // 88.198.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, 0x5917ffff, REGISTRY_RIPENCC }, // 89.22.128.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, 0x59c887ff, REGISTRY_RIPENCC }, // 89.190.160.0 - 89.200.135.255 { 0x59c88800, 0x59c897ff, REGISTRY_RIPENCC }, // 89.200.136.0 - 89.200.151.255 { 0x59c89800, 0x59c89fff, REGISTRY_RIPENCC }, // 89.200.152.0 - 89.200.159.255 { 0x59c8a000, 0x59c8ffff, REGISTRY_RIPENCC }, // 89.200.160.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, 0x5b59ffff, REGISTRY_RIPENCC }, // 89.207.184.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, 0x5b5affff, REGISTRY_RIPENCC }, // 91.90.88.0 - 91.90.255.255 { 0x5b5b0000, 0x5b6707ff, REGISTRY_RIPENCC }, // 91.91.0.0 - 91.103.7.255 { 0x5b671000, 0x5b678fff, REGISTRY_RIPENCC }, // 91.103.16.0 - 91.103.143.255 { 0x5b679800, 0x5b7affff, REGISTRY_RIPENCC }, // 91.103.152.0 - 91.122.255.255 { 0x5b7b0000, 0x5b7bffff, REGISTRY_RIPENCC }, // 91.123.0.0 - 91.123.255.255 { 0x5b7c0000, 0x5b8e7fff, REGISTRY_RIPENCC }, // 91.124.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, 0x5bbdd7ff, REGISTRY_RIPENCC }, // 91.189.192.0 - 91.189.215.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 { 0x5bc00800, 0x5bc017ff, REGISTRY_RIPENCC }, // 91.192.8.0 - 91.192.23.255 { 0x5bc01c00, 0x5bc069ff, REGISTRY_RIPENCC }, // 91.192.28.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, 0x5bc163ff, REGISTRY_RIPENCC }, // 91.193.64.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, 0x5bc1bfff, REGISTRY_RIPENCC }, // 91.193.156.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, 0x5bc20dff, REGISTRY_RIPENCC }, // 91.194.2.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, 0x5bc2efff, REGISTRY_RIPENCC }, // 91.194.216.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, 0x5bc427ff, REGISTRY_RIPENCC }, // 91.196.20.0 - 91.196.39.255 { 0x5bc42c00, 0x5bc43fff, REGISTRY_RIPENCC }, // 91.196.44.0 - 91.196.63.255 { 0x5bc44800, 0x5bc4b3ff, REGISTRY_RIPENCC }, // 91.196.72.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, 0x5bc577ff, REGISTRY_RIPENCC }, // 91.197.44.0 - 91.197.119.255 { 0x5bc57c00, 0x5bc5c7ff, REGISTRY_RIPENCC }, // 91.197.124.0 - 91.197.199.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, 0x5bc684ff, REGISTRY_RIPENCC }, // 91.198.116.0 - 91.198.132.255 { 0x5bc68500, 0x5bc685ff, REGISTRY_RIPENCC }, // 91.198.133.0 - 91.198.133.255 { 0x5bc68600, 0x5bc692ff, REGISTRY_RIPENCC }, // 91.198.134.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 { 0x5bc6ab00, 0x5bc6b8ff, REGISTRY_RIPENCC }, // 91.198.171.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, 0x5bc6d9ff, REGISTRY_RIPENCC }, // 91.198.211.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, 0x5bc6fdff, REGISTRY_RIPENCC }, // 91.198.231.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, 0x5bc756ff, REGISTRY_RIPENCC }, // 91.199.83.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, 0x5bc77aff, REGISTRY_RIPENCC }, // 91.199.103.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, 0x5bc7b7ff, REGISTRY_RIPENCC }, // 91.199.180.0 - 91.199.183.255 { 0x5bc7ba00, 0x5bc7c0ff, REGISTRY_RIPENCC }, // 91.199.186.0 - 91.199.192.255 { 0x5bc7c200, 0x5bc7d2ff, REGISTRY_RIPENCC }, // 91.199.194.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, 0x5bc883ff, REGISTRY_RIPENCC }, // 91.200.112.0 - 91.200.131.255 { 0x5bc88400, 0x5bc887ff, REGISTRY_RIPENCC }, // 91.200.132.0 - 91.200.135.255 { 0x5bc88800, 0x5bc893ff, REGISTRY_RIPENCC }, // 91.200.136.0 - 91.200.147.255 { 0x5bc89800, 0x5bc8afff, REGISTRY_RIPENCC }, // 91.200.152.0 - 91.200.175.255 { 0x5bc8b400, 0x5bc8bbff, REGISTRY_RIPENCC }, // 91.200.180.0 - 91.200.187.255 { 0x5bc8c000, 0x5bc8efff, REGISTRY_RIPENCC }, // 91.200.192.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, 0x5bc91bff, REGISTRY_RIPENCC }, // 91.201.24.0 - 91.201.27.255 { 0x5bc92400, 0x5bc93fff, REGISTRY_RIPENCC }, // 91.201.36.0 - 91.201.63.255 { 0x5bc94400, 0x5bc967ff, REGISTRY_RIPENCC }, // 91.201.68.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, 0x5bca1bff, REGISTRY_RIPENCC }, // 91.201.200.0 - 91.202.27.255 { 0x5bca2400, 0x5bcaabff, REGISTRY_RIPENCC }, // 91.202.36.0 - 91.202.171.255 { 0x5bcaac00, 0x5bcaafff, REGISTRY_RIPENCC }, // 91.202.172.0 - 91.202.175.255 { 0x5bcab000, 0x5bcaf3ff, REGISTRY_RIPENCC }, // 91.202.176.0 - 91.202.243.255 { 0x5bcafc00, 0x5bcb4bff, REGISTRY_RIPENCC }, // 91.202.252.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, 0x5bcbd3ff, REGISTRY_RIPENCC }, // 91.203.104.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, 0x5bcc0fff, REGISTRY_RIPENCC }, // 91.204.12.0 - 91.204.15.255 { 0x5bcc1000, 0x5bcc13ff, REGISTRY_RIPENCC }, // 91.204.16.0 - 91.204.19.255 { 0x5bcc1400, 0x5bcc17ff, REGISTRY_RIPENCC }, // 91.204.20.0 - 91.204.23.255 { 0x5bcc1800, 0x5bcc27ff, REGISTRY_RIPENCC }, // 91.204.24.0 - 91.204.39.255 { 0x5bcc3800, 0x5bccdbff, REGISTRY_RIPENCC }, // 91.204.56.0 - 91.204.219.255 { 0x5bcce400, 0x5bcd67ff, REGISTRY_RIPENCC }, // 91.204.228.0 - 91.205.103.255 { 0x5bcd7000, 0x5bcdabff, REGISTRY_RIPENCC }, // 91.205.112.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, 0x5bce25ff, REGISTRY_RIPENCC }, // 91.205.200.0 - 91.206.37.255 { 0x5bce2600, 0x5bce27ff, REGISTRY_RIPENCC }, // 91.206.38.0 - 91.206.39.255 { 0x5bce2800, 0x5bce43ff, REGISTRY_RIPENCC }, // 91.206.40.0 - 91.206.67.255 { 0x5bce4600, 0x5bce5bff, REGISTRY_RIPENCC }, // 91.206.70.0 - 91.206.91.255 { 0x5bce5e00, 0x5bce8dff, REGISTRY_RIPENCC }, // 91.206.94.0 - 91.206.141.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, 0x5bcf37ff, REGISTRY_RIPENCC }, // 91.207.14.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, 0x5bd00fff, REGISTRY_RIPENCC }, // 91.207.236.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, 0x5bd0a1ff, REGISTRY_RIPENCC }, // 91.208.138.0 - 91.208.161.255 { 0x5bd0a300, 0x5bd0c4ff, REGISTRY_RIPENCC }, // 91.208.163.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, 0x5bd10dff, REGISTRY_RIPENCC }, // 91.208.247.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, 0x5bd139ff, REGISTRY_RIPENCC }, // 91.209.49.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, 0x5bd172ff, REGISTRY_RIPENCC }, // 91.209.101.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, 0x5bd263ff, REGISTRY_RIPENCC }, // 91.210.60.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, 0x5bd3dfff, REGISTRY_RIPENCC }, // 91.211.200.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, 0x5bd428ff, REGISTRY_RIPENCC }, // 91.212.39.0 - 91.212.40.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, 0x5bd486ff, REGISTRY_RIPENCC }, // 91.212.108.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, 0x5bd498ff, REGISTRY_RIPENCC }, // 91.212.145.0 - 91.212.152.255 { 0x5bd49a00, 0x5bd4e1ff, REGISTRY_RIPENCC }, // 91.212.154.0 - 91.212.225.255 { 0x5bd4e300, 0x5bd4e6ff, REGISTRY_RIPENCC }, // 91.212.227.0 - 91.212.230.255 { 0x5bd4e800, 0x5bd4eeff, REGISTRY_RIPENCC }, // 91.212.232.0 - 91.212.238.255 { 0x5bd4ef00, 0x5bd4efff, REGISTRY_RIPENCC }, // 91.212.239.0 - 91.212.239.255 { 0x5bd4f000, 0x5bd4f5ff, REGISTRY_RIPENCC }, // 91.212.240.0 - 91.212.245.255 { 0x5bd4f700, 0x5bd522ff, REGISTRY_RIPENCC }, // 91.212.247.0 - 91.213.34.255 { 0x5bd52400, 0x5bd531ff, REGISTRY_RIPENCC }, // 91.213.36.0 - 91.213.49.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 { 0x5bd55e00, 0x5bd56eff, REGISTRY_RIPENCC }, // 91.213.94.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 { 0x5bd57900, 0x5bd589ff, REGISTRY_RIPENCC }, // 91.213.121.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, 0x5bd5adff, REGISTRY_RIPENCC }, // 91.213.152.0 - 91.213.173.255 { 0x5bd5af00, 0x5bd5d8ff, REGISTRY_RIPENCC }, // 91.213.175.0 - 91.213.216.255 { 0x5bd5da00, 0x5bd5deff, REGISTRY_RIPENCC }, // 91.213.218.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, 0x5bd61fff, REGISTRY_RIPENCC }, // 91.213.235.0 - 91.214.31.255 { 0x5bd62400, 0x5bd63fff, REGISTRY_RIPENCC }, // 91.214.36.0 - 91.214.63.255 { 0x5bd64400, 0x5bd65bff, REGISTRY_RIPENCC }, // 91.214.68.0 - 91.214.91.255 { 0x5bd66000, 0x5bd6d3ff, REGISTRY_RIPENCC }, // 91.214.96.0 - 91.214.211.255 { 0x5bd6d400, 0x5bd6d7ff, REGISTRY_RIPENCC }, // 91.214.212.0 - 91.214.215.255 { 0x5bd6d800, 0x5bd73fff, REGISTRY_RIPENCC }, // 91.214.216.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, 0x5bd879ff, REGISTRY_RIPENCC }, // 91.216.40.0 - 91.216.121.255 { 0x5bd87b00, 0x5bd8a8ff, REGISTRY_RIPENCC }, // 91.216.123.0 - 91.216.168.255 { 0x5bd8aa00, 0x5bd8bdff, REGISTRY_RIPENCC }, // 91.216.170.0 - 91.216.189.255 { 0x5bd8bf00, 0x5bd8f6ff, REGISTRY_RIPENCC }, // 91.216.191.0 - 91.216.246.255 { 0x5bd8f700, 0x5bd8f7ff, REGISTRY_RIPENCC }, // 91.216.247.0 - 91.216.247.255 { 0x5bd8f800, 0x5bd94fff, REGISTRY_RIPENCC }, // 91.216.248.0 - 91.217.79.255 { 0x5bd95200, 0x5bd98aff, REGISTRY_RIPENCC }, // 91.217.82.0 - 91.217.138.255 { 0x5bd98c00, 0x5bd9a6ff, REGISTRY_RIPENCC }, // 91.217.140.0 - 91.217.166.255 { 0x5bd9a800, 0x5bd9c7ff, REGISTRY_RIPENCC }, // 91.217.168.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, 0x5bdb0fff, REGISTRY_RIPENCC }, // 91.219.0.0 - 91.219.15.255 { 0x5bdb1000, 0x5bdb13ff, REGISTRY_RIPENCC }, // 91.219.16.0 - 91.219.19.255 { 0x5bdb1400, 0x5bdb5bff, REGISTRY_RIPENCC }, // 91.219.20.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, 0x5bdc46ff, REGISTRY_RIPENCC }, // 91.220.29.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, 0x5bdcafff, REGISTRY_RIPENCC }, // 91.220.127.0 - 91.220.175.255 { 0x5bdcb100, 0x5bdcb9ff, REGISTRY_RIPENCC }, // 91.220.177.0 - 91.220.185.255 { 0x5bdcbb00, 0x5bdcc9ff, REGISTRY_RIPENCC }, // 91.220.187.0 - 91.220.201.255 { 0x5bdccc00, 0x5bdce4ff, REGISTRY_RIPENCC }, // 91.220.204.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, 0x5bdd73ff, REGISTRY_RIPENCC }, // 91.221.94.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, 0x5bdf1bff, REGISTRY_RIPENCC }, // 91.221.248.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, 0x5bdf62ff, REGISTRY_RIPENCC }, // 91.223.76.0 - 91.223.98.255 { 0x5bdf6400, 0x5bdf74ff, REGISTRY_RIPENCC }, // 91.223.100.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, 0x5bdf9dff, REGISTRY_RIPENCC }, // 91.223.152.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, 0x5be027ff, REGISTRY_RIPENCC }, // 91.223.170.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, 0x5be10bff, REGISTRY_RIPENCC }, // 91.224.248.0 - 91.225.11.255 { 0x5be10c00, 0x5be10fff, REGISTRY_RIPENCC }, // 91.225.12.0 - 91.225.15.255 { 0x5be11000, 0x5be11fff, REGISTRY_RIPENCC }, // 91.225.16.0 - 91.225.31.255 { 0x5be12000, 0x5be123ff, REGISTRY_RIPENCC }, // 91.225.32.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, 0x5be233ff, REGISTRY_RIPENCC }, // 91.225.208.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, 0x5be2b7ff, REGISTRY_RIPENCC }, // 91.226.97.0 - 91.226.183.255 { 0x5be2b900, 0x5be2dcff, REGISTRY_RIPENCC }, // 91.226.185.0 - 91.226.220.255 { 0x5be2de00, 0x5be383ff, REGISTRY_RIPENCC }, // 91.226.222.0 - 91.227.131.255 { 0x5be38600, 0x5be388ff, REGISTRY_RIPENCC }, // 91.227.134.0 - 91.227.136.255 { 0x5be38a00, 0x5be3a9ff, REGISTRY_RIPENCC }, // 91.227.138.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, 0x5be47fff, REGISTRY_RIPENCC }, // 91.228.120.0 - 91.228.127.255 { 0x5be48000, 0x5be483ff, REGISTRY_RIPENCC }, // 91.228.128.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, 0x5be504ff, REGISTRY_RIPENCC }, // 91.228.232.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, 0x5be559ff, REGISTRY_RIPENCC }, // 91.229.57.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, 0x5be5e5ff, REGISTRY_RIPENCC }, // 91.229.183.0 - 91.229.229.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, 0x5be66eff, REGISTRY_RIPENCC }, // 91.230.28.0 - 91.230.110.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, 0x5be6b5ff, REGISTRY_RIPENCC }, // 91.230.148.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, 0x5bea77ff, REGISTRY_RIPENCC }, // 91.233.204.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, 0x5beb79ff, REGISTRY_RIPENCC }, // 91.235.6.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, 0x5bebf0ff, REGISTRY_RIPENCC }, // 91.235.168.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, 0x5bec4bff, REGISTRY_RIPENCC }, // 91.236.48.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, 0x5bec78ff, REGISTRY_RIPENCC }, // 91.236.116.0 - 91.236.120.255 { 0x5bec7a00, 0x5bececff, REGISTRY_RIPENCC }, // 91.236.122.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, 0x5bed5aff, REGISTRY_RIPENCC }, // 91.237.50.0 - 91.237.90.255 { 0x5bed5b00, 0x5bed5dff, REGISTRY_RIPENCC }, // 91.237.91.0 - 91.237.93.255 { 0x5bed5e00, 0x5bedc0ff, REGISTRY_RIPENCC }, // 91.237.94.0 - 91.237.192.255 { 0x5bedc100, 0x5bedc3ff, REGISTRY_RIPENCC }, // 91.237.193.0 - 91.237.195.255 { 0x5bedc400, 0x5bee11ff, REGISTRY_RIPENCC }, // 91.237.196.0 - 91.238.17.255 { 0x5bee1300, 0x5bee25ff, REGISTRY_RIPENCC }, // 91.238.19.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, 0x5beedcff, REGISTRY_RIPENCC }, // 91.238.94.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, 0x5bef19ff, REGISTRY_RIPENCC }, // 91.239.16.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, 0x5bef9cff, REGISTRY_RIPENCC }, // 91.239.131.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, 0x5bf013ff, REGISTRY_RIPENCC }, // 91.239.227.0 - 91.240.19.255 { 0x5bf01400, 0x5bf017ff, REGISTRY_RIPENCC }, // 91.240.20.0 - 91.240.23.255 { 0x5bf01800, 0x5bf058ff, REGISTRY_RIPENCC }, // 91.240.24.0 - 91.240.88.255 { 0x5bf05a00, 0x5bf099ff, REGISTRY_RIPENCC }, // 91.240.90.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, 0x5bf0aeff, REGISTRY_RIPENCC }, // 91.240.160.0 - 91.240.174.255 { 0x5bf0b000, 0x5bf15cff, REGISTRY_RIPENCC }, // 91.240.176.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, 0x5bf2daff, REGISTRY_RIPENCC }, // 91.242.52.0 - 91.242.218.255 { 0x5bf2dc00, 0x5bf557ff, REGISTRY_RIPENCC }, // 91.242.220.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, 0x5bf5dfff, REGISTRY_RIPENCC }, // 91.245.192.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, 0x5c3c1fff, REGISTRY_RIPENCC }, // 91.248.0.0 - 92.60.31.255 { 0x5c3c3000, 0x5c3e6fff, REGISTRY_RIPENCC }, // 92.60.48.0 - 92.62.111.255 { 0x5c3e8000, 0x5cf29fff, REGISTRY_RIPENCC }, // 92.62.128.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, 0x5d5a3fff, REGISTRY_RIPENCC }, // 92.249.128.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, 0x5dafffff, REGISTRY_RIPENCC }, // 93.175.0.0 - 93.175.255.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, 0x5e7d5fff, REGISTRY_RIPENCC }, // 94.124.104.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, 0x5e8f9fff, REGISTRY_RIPENCC }, // 94.142.184.0 - 94.143.159.255 { 0x5e8fa800, 0x5e99ffff, REGISTRY_RIPENCC }, // 94.143.168.0 - 94.153.255.255 { 0x5e9a0000, 0x5e9affff, REGISTRY_RIPENCC }, // 94.154.0.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, 0x5ec627ff, REGISTRY_RIPENCC }, // 94.159.0.0 - 94.198.39.255 { 0x5ec63000, 0x5ec75fff, REGISTRY_RIPENCC }, // 94.198.48.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, 0x5ee7cfff, REGISTRY_RIPENCC }, // 94.231.0.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, 0x5ee8efff, REGISTRY_RIPENCC }, // 94.232.160.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, 0x5fd6ffff, REGISTRY_RIPENCC }, // 95.174.72.0 - 95.214.255.255 { 0x5fd70000, 0x5fd72bff, REGISTRY_RIPENCC }, // 95.215.0.0 - 95.215.43.255 { 0x5fd72c00, 0x5fd72fff, REGISTRY_RIPENCC }, // 95.215.44.0 - 95.215.47.255 { 0x5fd73000, 0x5fd74fff, REGISTRY_RIPENCC }, // 95.215.48.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, 0x6009bfff, REGISTRY_APNIC }, // 96.9.128.0 - 96.9.191.255 { 0x6009c000, 0x643fffff, REGISTRY_ARIN }, // 96.9.192.0 - 100.63.255.255 { 0x64800000, 0x64ffffff, REGISTRY_ARIN }, // 100.128.0.0 - 100.255.255.255 { 0x65000000, 0x653207ff, REGISTRY_APNIC }, // 101.0.0.0 - 101.50.7.255 { 0x65321000, 0x65ffffff, REGISTRY_APNIC }, // 101.50.16.0 - 101.255.255.255 { 0x67000000, 0x6701dbff, REGISTRY_APNIC }, // 103.0.0.0 - 103.1.219.255 { 0x6701e000, 0x67031bff, REGISTRY_APNIC }, // 103.1.224.0 - 103.3.27.255 { 0x67032000, 0x670413ff, REGISTRY_APNIC }, // 103.3.32.0 - 103.4.19.255 { 0x67041c00, 0x6704dfff, REGISTRY_APNIC }, // 103.4.28.0 - 103.4.223.255 { 0x6704e400, 0x67054eff, REGISTRY_APNIC }, // 103.4.228.0 - 103.5.78.255 { 0x67055000, 0x670567ff, REGISTRY_APNIC }, // 103.5.80.0 - 103.5.103.255 { 0x67056900, 0x670569ff, REGISTRY_APNIC }, // 103.5.105.0 - 103.5.105.255 { 0x67056b00, 0x670597ff, REGISTRY_APNIC }, // 103.5.107.0 - 103.5.151.255 { 0x67059c00, 0x6705a7ff, REGISTRY_APNIC }, // 103.5.156.0 - 103.5.167.255 { 0x6705ac00, 0x6705bfff, REGISTRY_APNIC }, // 103.5.172.0 - 103.5.191.255 { 0x6705c400, 0x6705e5ff, REGISTRY_APNIC }, // 103.5.196.0 - 103.5.229.255 { 0x6705e800, 0x670602ff, REGISTRY_APNIC }, // 103.5.232.0 - 103.6.2.255 { 0x67060400, 0x670659ff, REGISTRY_APNIC }, // 103.6.4.0 - 103.6.89.255 { 0x67065c00, 0x670667ff, REGISTRY_APNIC }, // 103.6.92.0 - 103.6.103.255 { 0x67066900, 0x67066bff, REGISTRY_APNIC }, // 103.6.105.0 - 103.6.107.255 { 0x67067000, 0x670677ff, REGISTRY_APNIC }, // 103.6.112.0 - 103.6.119.255 { 0x67067c00, 0x6706e3ff, REGISTRY_APNIC }, // 103.6.124.0 - 103.6.227.255 { 0x6706e800, 0x670777ff, REGISTRY_APNIC }, // 103.6.232.0 - 103.7.119.255 { 0x67077c00, 0x67078bff, REGISTRY_APNIC }, // 103.7.124.0 - 103.7.139.255 { 0x67079000, 0x6707bdff, REGISTRY_APNIC }, // 103.7.144.0 - 103.7.189.255 { 0x6707c000, 0x6707ffff, REGISTRY_APNIC }, // 103.7.192.0 - 103.7.255.255 { 0x67080400, 0x670843ff, REGISTRY_APNIC }, // 103.8.4.0 - 103.8.67.255 { 0x67084800, 0x670878ff, REGISTRY_APNIC }, // 103.8.72.0 - 103.8.120.255 { 0x67087a00, 0x670913ff, REGISTRY_APNIC }, // 103.8.122.0 - 103.9.19.255 { 0x67091600, 0x670917ff, REGISTRY_APNIC }, // 103.9.22.0 - 103.9.23.255 { 0x67091c00, 0x67092fff, REGISTRY_APNIC }, // 103.9.28.0 - 103.9.47.255 { 0x67093200, 0x670932ff, REGISTRY_APNIC }, // 103.9.50.0 - 103.9.50.255 { 0x67093400, 0x67096aff, REGISTRY_APNIC }, // 103.9.52.0 - 103.9.106.255 { 0x67097000, 0x670983ff, REGISTRY_APNIC }, // 103.9.112.0 - 103.9.131.255 { 0x67098800, 0x67099bff, REGISTRY_APNIC }, // 103.9.136.0 - 103.9.155.255 { 0x6709a000, 0x6709afff, REGISTRY_APNIC }, // 103.9.160.0 - 103.9.175.255 { 0x6709b400, 0x6709b6ff, REGISTRY_APNIC }, // 103.9.180.0 - 103.9.182.255 { 0x6709b800, 0x6709bfff, REGISTRY_APNIC }, // 103.9.184.0 - 103.9.191.255 { 0x6709c400, 0x670a09ff, REGISTRY_APNIC }, // 103.9.196.0 - 103.10.9.255 { 0x670a0b00, 0x670a2bff, REGISTRY_APNIC }, // 103.10.11.0 - 103.10.43.255 { 0x670a3000, 0x670a6cff, REGISTRY_APNIC }, // 103.10.48.0 - 103.10.108.255 { 0x670a6e00, 0x670aabff, REGISTRY_APNIC }, // 103.10.110.0 - 103.10.171.255 { 0x670ab000, 0x670addff, REGISTRY_APNIC }, // 103.10.176.0 - 103.10.221.255 { 0x670adf00, 0x670aebff, REGISTRY_APNIC }, // 103.10.223.0 - 103.10.235.255 { 0x670af000, 0x670affff, REGISTRY_APNIC }, // 103.10.240.0 - 103.10.255.255 { 0x670b0400, 0x670b0fff, REGISTRY_APNIC }, // 103.11.4.0 - 103.11.15.255 { 0x670b1400, 0x670b14ff, REGISTRY_APNIC }, // 103.11.20.0 - 103.11.20.255 { 0x670b1600, 0x670b47ff, REGISTRY_APNIC }, // 103.11.22.0 - 103.11.71.255 { 0x670b4a00, 0x670ba7ff, REGISTRY_APNIC }, // 103.11.74.0 - 103.11.167.255 { 0x670bac00, 0x670bffff, REGISTRY_APNIC }, // 103.11.172.0 - 103.11.255.255 { 0x670c0100, 0x670c2fff, REGISTRY_APNIC }, // 103.12.1.0 - 103.12.47.255 { 0x670c3400, 0x670c4bff, REGISTRY_APNIC }, // 103.12.52.0 - 103.12.75.255 { 0x670c5000, 0x670c5bff, REGISTRY_APNIC }, // 103.12.80.0 - 103.12.91.255 { 0x670c6000, 0x670c9eff, REGISTRY_APNIC }, // 103.12.96.0 - 103.12.158.255 { 0x670ca000, 0x670cc3ff, REGISTRY_APNIC }, // 103.12.160.0 - 103.12.195.255 { 0x670cc800, 0x670cf5ff, REGISTRY_APNIC }, // 103.12.200.0 - 103.12.245.255 { 0x670cf800, 0x670cffff, REGISTRY_APNIC }, // 103.12.248.0 - 103.12.255.255 { 0x670d0200, 0x670d03ff, REGISTRY_APNIC }, // 103.13.2.0 - 103.13.3.255 { 0x670d0800, 0x670d0bff, REGISTRY_APNIC }, // 103.13.8.0 - 103.13.11.255 { 0x670d1000, 0x670d1fff, REGISTRY_APNIC }, // 103.13.16.0 - 103.13.31.255 { 0x670d2400, 0x670d47ff, REGISTRY_APNIC }, // 103.13.36.0 - 103.13.71.255 { 0x670d4b00, 0x670d67ff, REGISTRY_APNIC }, // 103.13.75.0 - 103.13.103.255 { 0x670d6c00, 0x670d6fff, REGISTRY_APNIC }, // 103.13.108.0 - 103.13.111.255 { 0x670d7400, 0x670d83ff, REGISTRY_APNIC }, // 103.13.116.0 - 103.13.131.255 { 0x670d8600, 0x670db7ff, REGISTRY_APNIC }, // 103.13.134.0 - 103.13.183.255 { 0x670dba00, 0x670ddbff, REGISTRY_APNIC }, // 103.13.186.0 - 103.13.219.255 { 0x670de000, 0x670dffff, REGISTRY_APNIC }, // 103.13.224.0 - 103.13.255.255 { 0x670e0100, 0x670e17ff, REGISTRY_APNIC }, // 103.14.1.0 - 103.14.23.255 { 0x670e1c00, 0x670e1fff, REGISTRY_APNIC }, // 103.14.28.0 - 103.14.31.255 { 0x670e2400, 0x670e49ff, REGISTRY_APNIC }, // 103.14.36.0 - 103.14.73.255 { 0x670e4c00, 0x670e4fff, REGISTRY_APNIC }, // 103.14.76.0 - 103.14.79.255 { 0x670e5400, 0x670e63ff, REGISTRY_APNIC }, // 103.14.84.0 - 103.14.99.255 { 0x670e6c00, 0x670ec3ff, REGISTRY_APNIC }, // 103.14.108.0 - 103.14.195.255 { 0x670ec800, 0x670f37ff, REGISTRY_APNIC }, // 103.14.200.0 - 103.15.55.255 { 0x670f3c00, 0x670f5bff, REGISTRY_APNIC }, // 103.15.60.0 - 103.15.91.255 { 0x670f6000, 0x670fe1ff, REGISTRY_APNIC }, // 103.15.96.0 - 103.15.225.255 { 0x670fe300, 0x670fe3ff, REGISTRY_APNIC }, // 103.15.227.0 - 103.15.227.255 { 0x670fe800, 0x670ffbff, REGISTRY_APNIC }, // 103.15.232.0 - 103.15.251.255 { 0x67100000, 0x671017ff, REGISTRY_APNIC }, // 103.16.0.0 - 103.16.23.255 { 0x67101a00, 0x67110bff, REGISTRY_APNIC }, // 103.16.26.0 - 103.17.11.255 { 0x67111000, 0x67113fff, REGISTRY_APNIC }, // 103.17.16.0 - 103.17.63.255 { 0x67114400, 0x67116dff, REGISTRY_APNIC }, // 103.17.68.0 - 103.17.109.255 { 0x67117000, 0x67117eff, REGISTRY_APNIC }, // 103.17.112.0 - 103.17.126.255 { 0x67118000, 0x671187ff, REGISTRY_APNIC }, // 103.17.128.0 - 103.17.135.255 { 0x67118c00, 0x6711f8ff, REGISTRY_APNIC }, // 103.17.140.0 - 103.17.248.255 { 0x6711fa00, 0x67122bff, REGISTRY_APNIC }, // 103.17.250.0 - 103.18.43.255 { 0x67123000, 0x67124bff, REGISTRY_APNIC }, // 103.18.48.0 - 103.18.75.255 { 0x67125400, 0x6712b3ff, REGISTRY_APNIC }, // 103.18.84.0 - 103.18.179.255 { 0x6712b800, 0x6712f7ff, REGISTRY_APNIC }, // 103.18.184.0 - 103.18.247.255 { 0x6712fc00, 0x6712ffff, REGISTRY_APNIC }, // 103.18.252.0 - 103.18.255.255 { 0x67130400, 0x671323ff, REGISTRY_APNIC }, // 103.19.4.0 - 103.19.35.255 { 0x67132500, 0x671326ff, REGISTRY_APNIC }, // 103.19.37.0 - 103.19.38.255 { 0x67132800, 0x6713daff, REGISTRY_APNIC }, // 103.19.40.0 - 103.19.218.255 { 0x6713dc00, 0x67142bff, REGISTRY_APNIC }, // 103.19.220.0 - 103.20.43.255 { 0x67143000, 0x671437ff, REGISTRY_APNIC }, // 103.20.48.0 - 103.20.55.255 { 0x67143900, 0x671439ff, REGISTRY_APNIC }, // 103.20.57.0 - 103.20.57.255 { 0x67143b00, 0x671443ff, REGISTRY_APNIC }, // 103.20.59.0 - 103.20.67.255 { 0x67144800, 0x671463ff, REGISTRY_APNIC }, // 103.20.72.0 - 103.20.99.255 { 0x67146800, 0x6714daff, REGISTRY_APNIC }, // 103.20.104.0 - 103.20.218.255 { 0x6714dc00, 0x671503ff, REGISTRY_APNIC }, // 103.20.220.0 - 103.21.3.255 { 0x67150c00, 0x6715bfff, REGISTRY_APNIC }, // 103.21.12.0 - 103.21.191.255 { 0x6715c100, 0x6715ebff, REGISTRY_APNIC }, // 103.21.193.0 - 103.21.235.255 { 0x6715f000, 0x67168bff, REGISTRY_APNIC }, // 103.21.240.0 - 103.22.139.255 { 0x67169000, 0x6716cbff, REGISTRY_APNIC }, // 103.22.144.0 - 103.22.203.255 { 0x6716d100, 0x6716d3ff, REGISTRY_APNIC }, // 103.22.209.0 - 103.22.211.255 { 0x6716d800, 0x6716f3ff, REGISTRY_APNIC }, // 103.22.216.0 - 103.22.243.255 { 0x6716f800, 0x67171eff, REGISTRY_APNIC }, // 103.22.248.0 - 103.23.30.255 { 0x67172000, 0x671746ff, REGISTRY_APNIC }, // 103.23.32.0 - 103.23.70.255 { 0x67174800, 0x671793ff, REGISTRY_APNIC }, // 103.23.72.0 - 103.23.147.255 { 0x67179600, 0x6717abff, REGISTRY_APNIC }, // 103.23.150.0 - 103.23.171.255 { 0x6717af00, 0x6717cbff, REGISTRY_APNIC }, // 103.23.175.0 - 103.23.203.255 { 0x6717d000, 0x6717d6ff, REGISTRY_APNIC }, // 103.23.208.0 - 103.23.214.255 { 0x6717d800, 0x671817ff, REGISTRY_APNIC }, // 103.23.216.0 - 103.24.23.255 { 0x67181c00, 0x671933ff, REGISTRY_APNIC }, // 103.24.28.0 - 103.25.51.255 { 0x67193500, 0x671972ff, REGISTRY_APNIC }, // 103.25.53.0 - 103.25.114.255 { 0x67197400, 0x671977ff, REGISTRY_APNIC }, // 103.25.116.0 - 103.25.119.255 { 0x67197c00, 0x67198fff, REGISTRY_APNIC }, // 103.25.124.0 - 103.25.143.255 { 0x67199400, 0x671a4bff, REGISTRY_APNIC }, // 103.25.148.0 - 103.26.75.255 { 0x671a5000, 0x671a73ff, REGISTRY_APNIC }, // 103.26.80.0 - 103.26.115.255 { 0x671a7800, 0x671a83ff, REGISTRY_APNIC }, // 103.26.120.0 - 103.26.131.255 { 0x671a8800, 0x671b2fff, REGISTRY_APNIC }, // 103.26.136.0 - 103.27.47.255 { 0x671b3400, 0x671b4bff, REGISTRY_APNIC }, // 103.27.52.0 - 103.27.75.255 { 0x671b5000, 0x671b8fff, REGISTRY_APNIC }, // 103.27.80.0 - 103.27.143.255 { 0x671b9400, 0x671bb7ff, REGISTRY_APNIC }, // 103.27.148.0 - 103.27.183.255 { 0x671bbc00, 0x671bd3ff, REGISTRY_APNIC }, // 103.27.188.0 - 103.27.211.255 { 0x671bd800, 0x671bfdff, REGISTRY_APNIC }, // 103.27.216.0 - 103.27.253.255 { 0x671bff00, 0x671c33ff, REGISTRY_APNIC }, // 103.27.255.0 - 103.28.51.255 { 0x671c3600, 0x671c43ff, REGISTRY_APNIC }, // 103.28.54.0 - 103.28.67.255 { 0x671c4800, 0x671cb7ff, REGISTRY_APNIC }, // 103.28.72.0 - 103.28.183.255 { 0x671cbc00, 0x671cd3ff, REGISTRY_APNIC }, // 103.28.188.0 - 103.28.211.255 { 0x671cd800, 0x671cf3ff, REGISTRY_APNIC }, // 103.28.216.0 - 103.28.243.255 { 0x671cf800, 0x671cffff, REGISTRY_APNIC }, // 103.28.248.0 - 103.28.255.255 { 0x671d0400, 0x671d29ff, REGISTRY_APNIC }, // 103.29.4.0 - 103.29.41.255 { 0x671d2b00, 0x671debff, REGISTRY_APNIC }, // 103.29.43.0 - 103.29.235.255 { 0x671df000, 0x671e3fff, REGISTRY_APNIC }, // 103.29.240.0 - 103.30.63.255 { 0x671e4400, 0x671e73ff, REGISTRY_APNIC }, // 103.30.68.0 - 103.30.115.255 { 0x671e7800, 0x671eafff, REGISTRY_APNIC }, // 103.30.120.0 - 103.30.175.255 { 0x671eb400, 0x671ec3ff, REGISTRY_APNIC }, // 103.30.180.0 - 103.30.195.255 { 0x671ec800, 0x671ed4ff, REGISTRY_APNIC }, // 103.30.200.0 - 103.30.212.255 { 0x671ed600, 0x671ed7ff, REGISTRY_APNIC }, // 103.30.214.0 - 103.30.215.255 { 0x671edc00, 0x671edfff, REGISTRY_APNIC }, // 103.30.220.0 - 103.30.223.255 { 0x671ee400, 0x671efbff, REGISTRY_APNIC }, // 103.30.228.0 - 103.30.251.255 { 0x671f0000, 0x671f1aff, REGISTRY_APNIC }, // 103.31.0.0 - 103.31.26.255 { 0x671f1c00, 0x671febff, REGISTRY_APNIC }, // 103.31.28.0 - 103.31.235.255 { 0x671ff000, 0x6725bbff, REGISTRY_APNIC }, // 103.31.240.0 - 103.37.187.255 { 0x6725c000, 0x672631ff, REGISTRY_APNIC }, // 103.37.192.0 - 103.38.49.255 { 0x67263400, 0x6735d3ff, REGISTRY_APNIC }, // 103.38.52.0 - 103.53.211.255 { 0x6735d800, 0x673b8bff, REGISTRY_APNIC }, // 103.53.216.0 - 103.59.139.255 { 0x673b9000, 0x673fffff, REGISTRY_APNIC }, // 103.59.144.0 - 103.63.255.255 { 0x67c00000, 0x67c25bff, REGISTRY_APNIC }, // 103.192.0.0 - 103.194.91.255 { 0x67c26000, 0x67c2b7ff, REGISTRY_APNIC }, // 103.194.96.0 - 103.194.183.255 { 0x67c2bc00, 0x67c32fff, REGISTRY_APNIC }, // 103.194.188.0 - 103.195.47.255 { 0x67e00400, 0x67e00fff, REGISTRY_APNIC }, // 103.224.4.0 - 103.224.15.255 { 0x67e01400, 0x67e16bff, REGISTRY_APNIC }, // 103.224.20.0 - 103.225.107.255 { 0x67e17000, 0x67e173ff, REGISTRY_APNIC }, // 103.225.112.0 - 103.225.115.255 { 0x67e17800, 0x67e300ff, REGISTRY_APNIC }, // 103.225.120.0 - 103.227.0.255 { 0x67e30200, 0x67e303ff, REGISTRY_APNIC }, // 103.227.2.0 - 103.227.3.255 { 0x67e30800, 0x67e35bff, REGISTRY_APNIC }, // 103.227.8.0 - 103.227.91.255 { 0x67e36000, 0x67e3b3ff, REGISTRY_APNIC }, // 103.227.96.0 - 103.227.179.255 { 0x67e3bc00, 0x67e407ff, REGISTRY_APNIC }, // 103.227.188.0 - 103.228.7.255 { 0x67e40c00, 0x67e453ff, REGISTRY_APNIC }, // 103.228.12.0 - 103.228.83.255 { 0x67e45800, 0x67e467ff, REGISTRY_APNIC }, // 103.228.88.0 - 103.228.103.255 { 0x67e46c00, 0x67e483ff, REGISTRY_APNIC }, // 103.228.108.0 - 103.228.131.255 { 0x67e48c00, 0x67e4a7ff, REGISTRY_APNIC }, // 103.228.140.0 - 103.228.167.255 { 0x67e4ac00, 0x67e4dfff, REGISTRY_APNIC }, // 103.228.172.0 - 103.228.223.255 { 0x67e4e400, 0x67e53bff, REGISTRY_APNIC }, // 103.228.228.0 - 103.229.59.255 { 0x67e54000, 0x67e543ff, REGISTRY_APNIC }, // 103.229.64.0 - 103.229.67.255 { 0x67e54800, 0x67e597ff, REGISTRY_APNIC }, // 103.229.72.0 - 103.229.151.255 { 0x67e59c00, 0x67e60bff, REGISTRY_APNIC }, // 103.229.156.0 - 103.230.11.255 { 0x67e61400, 0x67e643ff, REGISTRY_APNIC }, // 103.230.20.0 - 103.230.67.255 { 0x67e64800, 0x67e663ff, REGISTRY_APNIC }, // 103.230.72.0 - 103.230.99.255 { 0x67e66500, 0x67e673ff, REGISTRY_APNIC }, // 103.230.101.0 - 103.230.115.255 { 0x67e67800, 0x67e67bff, REGISTRY_APNIC }, // 103.230.120.0 - 103.230.123.255 { 0x67e68000, 0x67e68bff, REGISTRY_APNIC }, // 103.230.128.0 - 103.230.139.255 { 0x67e69000, 0x67e6a3ff, REGISTRY_APNIC }, // 103.230.144.0 - 103.230.163.255 { 0x67e6a600, 0x67e6abff, REGISTRY_APNIC }, // 103.230.166.0 - 103.230.171.255 { 0x67e6b000, 0x67e6cfff, REGISTRY_APNIC }, // 103.230.176.0 - 103.230.207.255 { 0x67e6d400, 0x67e733ff, REGISTRY_APNIC }, // 103.230.212.0 - 103.231.51.255 { 0x67e73800, 0x67e84bff, REGISTRY_APNIC }, // 103.231.56.0 - 103.232.75.255 { 0x67e85000, 0x67e867ff, REGISTRY_APNIC }, // 103.232.80.0 - 103.232.103.255 { 0x67e86c00, 0x67e88dff, REGISTRY_APNIC }, // 103.232.108.0 - 103.232.141.255 { 0x67e89000, 0x67e8a3ff, REGISTRY_APNIC }, // 103.232.144.0 - 103.232.163.255 { 0x67e8a800, 0x67e8bbff, REGISTRY_APNIC }, // 103.232.168.0 - 103.232.187.255 { 0x67e8c000, 0x67e8f7ff, REGISTRY_APNIC }, // 103.232.192.0 - 103.232.247.255 { 0x67e8fc00, 0x67e907ff, REGISTRY_APNIC }, // 103.232.252.0 - 103.233.7.255 { 0x67e90c00, 0x67e927ff, REGISTRY_APNIC }, // 103.233.12.0 - 103.233.39.255 { 0x67e92c00, 0x67e98bff, REGISTRY_APNIC }, // 103.233.44.0 - 103.233.139.255 { 0x67e98e00, 0x67e9c7ff, REGISTRY_APNIC }, // 103.233.142.0 - 103.233.199.255 { 0x67e9cc00, 0x67e9d3ff, REGISTRY_APNIC }, // 103.233.204.0 - 103.233.211.255 { 0x67e9d800, 0x67e9fbff, REGISTRY_APNIC }, // 103.233.216.0 - 103.233.251.255 { 0x67ea0000, 0x67ea07ff, REGISTRY_APNIC }, // 103.234.0.0 - 103.234.7.255 { 0x67ea0c00, 0x67ea1bff, REGISTRY_APNIC }, // 103.234.12.0 - 103.234.27.255 { 0x67ea2000, 0x67ea2bff, REGISTRY_APNIC }, // 103.234.32.0 - 103.234.43.255 { 0x67ea3000, 0x67ea47ff, REGISTRY_APNIC }, // 103.234.48.0 - 103.234.71.255 { 0x67ea4c00, 0x67eaa3ff, REGISTRY_APNIC }, // 103.234.76.0 - 103.234.163.255 { 0x67eaa800, 0x67eacfff, REGISTRY_APNIC }, // 103.234.168.0 - 103.234.207.255 { 0x67ead800, 0x67eb47ff, REGISTRY_APNIC }, // 103.234.216.0 - 103.235.71.255 { 0x67eb5000, 0x67eba3ff, REGISTRY_APNIC }, // 103.235.80.0 - 103.235.163.255 { 0x67eba800, 0x67ebd7ff, REGISTRY_APNIC }, // 103.235.168.0 - 103.235.215.255 { 0x67ebdc00, 0x67ecc9ff, REGISTRY_APNIC }, // 103.235.220.0 - 103.236.201.255 { 0x67eccb00, 0x67ed4bff, REGISTRY_APNIC }, // 103.236.203.0 - 103.237.75.255 { 0x67ed5000, 0x67efd4ff, REGISTRY_APNIC }, // 103.237.80.0 - 103.239.212.255 { 0x67efd600, 0x67f077ff, REGISTRY_APNIC }, // 103.239.214.0 - 103.240.119.255 { 0x67f07c00, 0x67f0bbff, REGISTRY_APNIC }, // 103.240.124.0 - 103.240.187.255 { 0x67f0c000, 0x67f14fff, REGISTRY_APNIC }, // 103.240.192.0 - 103.241.79.255 { 0x67f15400, 0x67f1d3ff, REGISTRY_APNIC }, // 103.241.84.0 - 103.241.211.255 { 0x67f1d800, 0x67f1e3ff, REGISTRY_APNIC }, // 103.241.216.0 - 103.241.227.255 { 0x67f1e800, 0x67f253ff, REGISTRY_APNIC }, // 103.241.232.0 - 103.242.83.255 { 0x67f25800, 0x67f287ff, REGISTRY_APNIC }, // 103.242.88.0 - 103.242.135.255 { 0x67f28c00, 0x67f303ff, REGISTRY_APNIC }, // 103.242.140.0 - 103.243.3.255 { 0x67f30800, 0x67f32fff, REGISTRY_APNIC }, // 103.243.8.0 - 103.243.47.255 { 0x67f33400, 0x67f37bff, REGISTRY_APNIC }, // 103.243.52.0 - 103.243.123.255 { 0x67f38000, 0x67f3bbff, REGISTRY_APNIC }, // 103.243.128.0 - 103.243.187.255 { 0x67f3c000, 0x67f403ff, REGISTRY_APNIC }, // 103.243.192.0 - 103.244.3.255 { 0x67f40800, 0x67f41fff, REGISTRY_APNIC }, // 103.244.8.0 - 103.244.31.255 { 0x67f42400, 0x67f46fff, REGISTRY_APNIC }, // 103.244.36.0 - 103.244.111.255 { 0x67f47800, 0x67f4bfff, REGISTRY_APNIC }, // 103.244.120.0 - 103.244.191.255 { 0x67f4c400, 0x67f50fff, REGISTRY_APNIC }, // 103.244.196.0 - 103.245.15.255 { 0x67f51400, 0x67f5afff, REGISTRY_APNIC }, // 103.245.20.0 - 103.245.175.255 { 0x67f5b100, 0x67f627ff, REGISTRY_APNIC }, // 103.245.177.0 - 103.246.39.255 { 0x67f62c00, 0x67f647ff, REGISTRY_APNIC }, // 103.246.44.0 - 103.246.71.255 { 0x67f64c00, 0x67f668ff, REGISTRY_APNIC }, // 103.246.76.0 - 103.246.104.255 { 0x67f66a00, 0x67f6abff, REGISTRY_APNIC }, // 103.246.106.0 - 103.246.171.255 { 0x67f6b000, 0x67f6baff, REGISTRY_APNIC }, // 103.246.176.0 - 103.246.186.255 { 0x67f6bc00, 0x67f6bfff, REGISTRY_APNIC }, // 103.246.188.0 - 103.246.191.255 { 0x67f6c400, 0x67f6d9ff, REGISTRY_APNIC }, // 103.246.196.0 - 103.246.217.255 { 0x67f6dc00, 0x67f703ff, REGISTRY_APNIC }, // 103.246.220.0 - 103.247.3.255 { 0x67f70800, 0x67f712ff, REGISTRY_APNIC }, // 103.247.8.0 - 103.247.18.255 { 0x67f71400, 0x67f723ff, REGISTRY_APNIC }, // 103.247.20.0 - 103.247.35.255 { 0x67f72600, 0x67f733ff, REGISTRY_APNIC }, // 103.247.38.0 - 103.247.51.255 { 0x67f73800, 0x67f7b3ff, REGISTRY_APNIC }, // 103.247.56.0 - 103.247.179.255 { 0x67f7b600, 0x67f833ff, REGISTRY_APNIC }, // 103.247.182.0 - 103.248.51.255 { 0x67f83800, 0x67f857ff, REGISTRY_APNIC }, // 103.248.56.0 - 103.248.87.255 { 0x67f85c00, 0x67f887ff, REGISTRY_APNIC }, // 103.248.92.0 - 103.248.135.255 { 0x67f88c00, 0x67f8b3ff, REGISTRY_APNIC }, // 103.248.140.0 - 103.248.179.255 { 0x67f8b800, 0x67f8c3ff, REGISTRY_APNIC }, // 103.248.184.0 - 103.248.195.255 { 0x67f8c800, 0x67f8c9ff, REGISTRY_APNIC }, // 103.248.200.0 - 103.248.201.255 { 0x67f8cc00, 0x67f8dbff, REGISTRY_APNIC }, // 103.248.204.0 - 103.248.219.255 { 0x67f8e000, 0x67f8f9ff, REGISTRY_APNIC }, // 103.248.224.0 - 103.248.249.255 { 0x67f8fb00, 0x67f907ff, REGISTRY_APNIC }, // 103.248.251.0 - 103.249.7.255 { 0x67f90c00, 0x67f967ff, REGISTRY_APNIC }, // 103.249.12.0 - 103.249.103.255 { 0x67f96c00, 0x67f983ff, REGISTRY_APNIC }, // 103.249.108.0 - 103.249.131.255 { 0x67f98800, 0x67f99bff, REGISTRY_APNIC }, // 103.249.136.0 - 103.249.155.255 { 0x67f9a000, 0x67f9d7ff, REGISTRY_APNIC }, // 103.249.160.0 - 103.249.215.255 { 0x67f9dc00, 0x67f9ffff, REGISTRY_APNIC }, // 103.249.220.0 - 103.249.255.255 { 0x67fa0800, 0x67fa23ff, REGISTRY_APNIC }, // 103.250.8.0 - 103.250.35.255 { 0x67fa2800, 0x67faafff, REGISTRY_APNIC }, // 103.250.40.0 - 103.250.175.255 { 0x67fab400, 0x67fadbff, REGISTRY_APNIC }, // 103.250.180.0 - 103.250.219.255 { 0x67fade00, 0x67fb33ff, REGISTRY_APNIC }, // 103.250.222.0 - 103.251.51.255 { 0x67fb3800, 0x67fb8bff, REGISTRY_APNIC }, // 103.251.56.0 - 103.251.139.255 { 0x67fb9000, 0x67fbbfff, REGISTRY_APNIC }, // 103.251.144.0 - 103.251.191.255 { 0x67fbc400, 0x67fbf3ff, REGISTRY_APNIC }, // 103.251.196.0 - 103.251.243.255 { 0x67fbf800, 0x67fc07ff, REGISTRY_APNIC }, // 103.251.248.0 - 103.252.7.255 { 0x67fc0a00, 0x67fc1fff, REGISTRY_APNIC }, // 103.252.10.0 - 103.252.31.255 { 0x67fc2400, 0x67fc33ff, REGISTRY_APNIC }, // 103.252.36.0 - 103.252.51.255 { 0x67fc3800, 0x67fc5fff, REGISTRY_APNIC }, // 103.252.56.0 - 103.252.95.255 { 0x67fc6400, 0x67fc73ff, REGISTRY_APNIC }, // 103.252.100.0 - 103.252.115.255 { 0x67fc7800, 0x67fc7fff, REGISTRY_APNIC }, // 103.252.120.0 - 103.252.127.255 { 0x67fc8400, 0x67fcafff, REGISTRY_APNIC }, // 103.252.132.0 - 103.252.175.255 { 0x67fcb400, 0x67fcc3ff, REGISTRY_APNIC }, // 103.252.180.0 - 103.252.195.255 { 0x67fcc800, 0x67fcdfff, REGISTRY_APNIC }, // 103.252.200.0 - 103.252.223.255 { 0x67fce400, 0x67fd2fff, REGISTRY_APNIC }, // 103.252.228.0 - 103.253.47.255 { 0x67fd3400, 0x67fd63ff, REGISTRY_APNIC }, // 103.253.52.0 - 103.253.99.255 { 0x67fd6800, 0x67fd7fff, REGISTRY_APNIC }, // 103.253.104.0 - 103.253.127.255 { 0x67fd8400, 0x67fda3ff, REGISTRY_APNIC }, // 103.253.132.0 - 103.253.163.255 { 0x67fda600, 0x67fdefff, REGISTRY_APNIC }, // 103.253.166.0 - 103.253.239.255 { 0x67fdf400, 0x67febfff, REGISTRY_APNIC }, // 103.253.244.0 - 103.254.191.255 { 0x67fec200, 0x67fec4ff, REGISTRY_APNIC }, // 103.254.194.0 - 103.254.196.255 { 0x67fec800, 0x67fef7ff, REGISTRY_APNIC }, // 103.254.200.0 - 103.254.247.255 { 0x67fefc00, 0x67ff37ff, REGISTRY_APNIC }, // 103.254.252.0 - 103.255.55.255 { 0x67ff3c00, 0x67ff83ff, REGISTRY_APNIC }, // 103.255.60.0 - 103.255.131.255 { 0x67ff8800, 0x67ffffff, REGISTRY_APNIC }, // 103.255.136.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, 0x6a001fff, REGISTRY_APNIC }, // 106.0.0.0 - 106.0.31.255 { 0x6a004000, 0x6affffff, REGISTRY_APNIC }, // 106.0.64.0 - 106.255.255.255 { 0x6b000000, 0x6cffffff, REGISTRY_ARIN }, // 107.0.0.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, 0x6d5f77ff, REGISTRY_RIPENCC }, // 109.94.0.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, 0x6dcf3fff, REGISTRY_RIPENCC }, // 109.207.0.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, 0x6e2227ff, REGISTRY_APNIC }, // 110.0.0.0 - 110.34.39.255 { 0x6e223000, 0x6e2bffff, REGISTRY_APNIC }, // 110.34.48.0 - 110.43.255.255 { 0x6e2c1000, 0x6e4c7fff, REGISTRY_APNIC }, // 110.44.16.0 - 110.76.127.255 { 0x6e4c8800, 0x6e5c3fff, REGISTRY_APNIC }, // 110.76.136.0 - 110.92.63.255 { 0x6e5c4800, 0x6f5cb7ff, REGISTRY_APNIC }, // 110.92.72.0 - 111.92.183.255 { 0x6f5cbc00, 0x6f5cf7ff, REGISTRY_APNIC }, // 111.92.188.0 - 111.92.247.255 { 0x6f5d0000, 0x6fdeffff, REGISTRY_APNIC }, // 111.93.0.0 - 111.222.255.255 { 0x6fdf2000, 0x6fdff3ff, REGISTRY_APNIC }, // 111.223.32.0 - 111.223.243.255 { 0x6fdff800, 0x6feb43ff, REGISTRY_APNIC }, // 111.223.248.0 - 111.235.67.255 { 0x6feb4800, 0x708cbbff, REGISTRY_APNIC }, // 111.235.72.0 - 112.140.187.255 { 0x708cc000, 0x71149bff, REGISTRY_APNIC }, // 112.140.192.0 - 113.20.155.255 { 0x7114a000, 0x7115e7ff, REGISTRY_APNIC }, // 113.20.160.0 - 113.21.231.255 { 0x7115f000, 0x7134dfff, REGISTRY_APNIC }, // 113.21.240.0 - 113.52.223.255 { 0x7134e800, 0x721ddfff, REGISTRY_APNIC }, // 113.52.232.0 - 114.29.223.255 { 0x721e0000, 0x721f3fff, REGISTRY_APNIC }, // 114.30.0.0 - 114.31.63.255 { 0x721f4800, 0x72860fff, REGISTRY_APNIC }, // 114.31.72.0 - 114.134.15.255 { 0x72862000, 0x728d4fff, REGISTRY_APNIC }, // 114.134.32.0 - 114.141.79.255 { 0x728d5800, 0x731f3fff, REGISTRY_APNIC }, // 114.141.88.0 - 115.31.63.255 { 0x731f5000, 0x732a1fff, REGISTRY_APNIC }, // 115.31.80.0 - 115.42.31.255 { 0x732a4000, 0x73a67fff, REGISTRY_APNIC }, // 115.42.64.0 - 115.166.127.255 { 0x73a69000, 0x73baffff, REGISTRY_APNIC }, // 115.166.144.0 - 115.186.255.255 { 0x73bb1000, 0x740c1fff, REGISTRY_APNIC }, // 115.187.16.0 - 116.12.31.255 { 0x740c2800, 0x7442afff, REGISTRY_APNIC }, // 116.12.40.0 - 116.66.175.255 { 0x7442c000, 0x744487ff, REGISTRY_APNIC }, // 116.66.192.0 - 116.68.135.255 { 0x74449000, 0x7444afff, REGISTRY_APNIC }, // 116.68.144.0 - 116.68.175.255 { 0x7444b800, 0x74c197ff, REGISTRY_APNIC }, // 116.68.184.0 - 116.193.151.255 { 0x74c19c00, 0x74c1a3ff, REGISTRY_APNIC }, // 116.193.156.0 - 116.193.163.255 { 0x74c1a800, 0x74c597ff, REGISTRY_APNIC }, // 116.193.168.0 - 116.197.151.255 { 0x74c5a800, 0x74c7c7ff, REGISTRY_APNIC }, // 116.197.168.0 - 116.199.199.255 { 0x74c7d000, 0x74cdffff, REGISTRY_APNIC }, // 116.199.208.0 - 116.205.255.255 { 0x74cf0000, 0x74d51fff, REGISTRY_APNIC }, // 116.207.0.0 - 116.213.31.255 { 0x74d53000, 0x74fe67ff, REGISTRY_APNIC }, // 116.213.48.0 - 116.254.103.255 { 0x74fe7000, 0x753527ff, REGISTRY_APNIC }, // 116.254.112.0 - 117.53.39.255 { 0x75353000, 0x75358fff, REGISTRY_APNIC }, // 117.53.48.0 - 117.53.143.255 { 0x75359800, 0x757837ff, REGISTRY_APNIC }, // 117.53.152.0 - 117.120.55.255 { 0x75784000, 0x76679fff, REGISTRY_APNIC }, // 117.120.64.0 - 118.103.159.255 { 0x7667c000, 0x766bafff, REGISTRY_APNIC }, // 118.103.192.0 - 118.107.175.255 { 0x766bb800, 0x772a1fff, REGISTRY_APNIC }, // 118.107.184.0 - 119.42.31.255 { 0x772a4000, 0x77a15fff, REGISTRY_APNIC }, // 119.42.64.0 - 119.161.95.255 { 0x77a16800, 0x77a177ff, REGISTRY_APNIC }, // 119.161.104.0 - 119.161.119.255 { 0x77a18000, 0x78880fff, REGISTRY_APNIC }, // 119.161.128.0 - 120.136.15.255 { 0x78881800, 0x7889ffff, REGISTRY_APNIC }, // 120.136.24.0 - 120.137.255.255 { 0x788a1000, 0x792e3fff, REGISTRY_APNIC }, // 120.138.16.0 - 121.46.63.255 { 0x792e8000, 0x7932a7ff, REGISTRY_APNIC }, // 121.46.128.0 - 121.50.167.255 { 0x7932b000, 0x79369fff, REGISTRY_APNIC }, // 121.50.176.0 - 121.54.159.255 { 0x7936a800, 0x7936b7ff, REGISTRY_APNIC }, // 121.54.168.0 - 121.54.183.255 { 0x7936c000, 0x7a805fff, REGISTRY_APNIC }, // 121.54.192.0 - 122.128.95.255 { 0x7a806800, 0x7ac827ff, REGISTRY_APNIC }, // 122.128.104.0 - 122.200.39.255 { 0x7ac83000, 0x7bf2bfff, REGISTRY_APNIC }, // 122.200.48.0 - 123.242.191.255 { 0x7bf2c800, 0x7bfe5fff, REGISTRY_APNIC }, // 123.242.200.0 - 123.254.95.255 { 0x7bfe6800, 0x7c28efff, REGISTRY_APNIC }, // 123.254.104.0 - 124.40.239.255 { 0x7c28f400, 0x7c42a7ff, REGISTRY_APNIC }, // 124.40.244.0 - 124.66.167.255 { 0x7c42b000, 0x7c6c0fff, REGISTRY_APNIC }, // 124.66.176.0 - 124.108.15.255 { 0x7c6c1800, 0x7c6d0fff, REGISTRY_APNIC }, // 124.108.24.0 - 124.109.15.255 { 0x7c6d1800, 0x7c9688ff, REGISTRY_APNIC }, // 124.109.24.0 - 124.150.136.255 { 0x7c968c00, 0x7dfe33ff, REGISTRY_APNIC }, // 124.150.140.0 - 125.254.51.255 { 0x7dfe3800, 0x7effffff, REGISTRY_APNIC }, // 125.254.56.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, 0x8026ffff, REGISTRY_ARIN }, // 128.17.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, 0x8040ffff, REGISTRY_ARIN }, // 128.46.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, 0x807bffff, REGISTRY_ARIN }, // 128.99.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, 0x80afffff, REGISTRY_ARIN }, // 128.143.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 { 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 { 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 { 0x812e0000, 0x8137ffff, REGISTRY_ARIN }, // 129.46.0.0 - 129.55.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, 0x8168ffff, REGISTRY_RIPENCC }, // 129.102.0.0 - 129.104.255.255 { 0x81690000, 0x8179ffff, REGISTRY_ARIN }, // 129.105.0.0 - 129.121.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, 0x817effff, REGISTRY_ARIN }, // 129.126.0.0 - 129.126.255.255 { 0x817f0000, 0x817fffff, REGISTRY_APNIC }, // 129.127.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 { 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, 0x81cd3fff, REGISTRY_AFRINIC }, // 129.205.0.0 - 129.205.63.255 { 0x81cd8000, 0x81cdffff, REGISTRY_AFRINIC }, // 129.205.128.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, 0x81d7ffff, REGISTRY_RIPENCC }, // 129.214.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_RIPENCC }, // 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, 0x825effff, REGISTRY_ARIN }, // 130.93.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 { 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_ARIN }, // 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, 0x84bbffff, REGISTRY_RIPENCC }, // 132.185.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, 0x8622ffff, REGISTRY_RIPENCC }, // 134.34.0.0 - 134.34.255.255 { 0x86230000, 0x8623ffff, REGISTRY_ARIN }, // 134.35.0.0 - 134.35.255.255 { 0x86240000, 0x8625ffff, REGISTRY_RIPENCC }, // 134.36.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, 0x86f4ffff, REGISTRY_ARIN }, // 134.240.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, 0x8754e7ff, REGISTRY_ARIN }, // 135.0.0.0 - 135.84.231.255 { 0x8754e800, 0x8754ffff, REGISTRY_APNIC }, // 135.84.232.0 - 135.84.255.255 { 0x87550000, 0x87c3ffff, REGISTRY_ARIN }, // 135.85.0.0 - 135.195.255.255 { 0x87c40000, 0x87c4ffff, REGISTRY_RIPENCC }, // 135.196.0.0 - 135.196.255.255 { 0x87c50000, 0x8893ffff, REGISTRY_ARIN }, // 135.197.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, 0x889effff, REGISTRY_RIPENCC }, // 136.155.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, 0x88f2ffff, REGISTRY_ARIN }, // 136.232.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 { 0x893c0000, 0x893effff, REGISTRY_RIPENCC }, // 137.60.0.0 - 137.62.255.255 { 0x893f0000, 0x893f7fff, REGISTRY_AFRINIC }, // 137.63.0.0 - 137.63.127.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_APNIC }, // 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, 0x8964ffff, REGISTRY_ARIN }, // 137.97.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 { 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 { 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, 0x89e0ffff, REGISTRY_RIPENCC }, // 137.221.24.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 { 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, 0x8a3bffff, REGISTRY_LACNIC }, // 138.59.0.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, 0x8a5effff, REGISTRY_LACNIC }, // 138.94.0.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, 0x8a63ffff, REGISTRY_LACNIC }, // 138.99.0.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, 0x8accffff, REGISTRY_LACNIC }, // 138.204.0.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, 0x8adb0bff, REGISTRY_LACNIC }, // 138.219.0.0 - 138.219.11.255 { 0x8adb1000, 0x8adb17ff, REGISTRY_LACNIC }, // 138.219.16.0 - 138.219.23.255 { 0x8adb1c00, 0x8adb37ff, REGISTRY_LACNIC }, // 138.219.28.0 - 138.219.55.255 { 0x8adb3c00, 0x8adb9bff, REGISTRY_LACNIC }, // 138.219.60.0 - 138.219.155.255 { 0x8adba000, 0x8adba7ff, REGISTRY_LACNIC }, // 138.219.160.0 - 138.219.167.255 { 0x8adbb000, 0x8adbe7ff, REGISTRY_LACNIC }, // 138.219.176.0 - 138.219.231.255 { 0x8adbec00, 0x8adbfbff, REGISTRY_LACNIC }, // 138.219.236.0 - 138.219.251.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, 0x8aff17ff, REGISTRY_LACNIC }, // 138.255.0.0 - 138.255.23.255 { 0x8aff1c00, 0x8aff4fff, REGISTRY_LACNIC }, // 138.255.28.0 - 138.255.79.255 { 0x8aff5400, 0x8aff57ff, REGISTRY_LACNIC }, // 138.255.84.0 - 138.255.87.255 { 0x8aff5c00, 0x8aff73ff, REGISTRY_LACNIC }, // 138.255.92.0 - 138.255.115.255 { 0x8aff7800, 0x8affa3ff, REGISTRY_LACNIC }, // 138.255.120.0 - 138.255.163.255 { 0x8affa800, 0x8affabff, REGISTRY_LACNIC }, // 138.255.168.0 - 138.255.171.255 { 0x8affb000, 0x8affb3ff, REGISTRY_LACNIC }, // 138.255.176.0 - 138.255.179.255 { 0x8affb800, 0x8affbbff, REGISTRY_LACNIC }, // 138.255.184.0 - 138.255.187.255 { 0x8affc000, 0x8affd3ff, REGISTRY_LACNIC }, // 138.255.192.0 - 138.255.211.255 { 0x8affd800, 0x8affdbff, REGISTRY_LACNIC }, // 138.255.216.0 - 138.255.219.255 { 0x8affe800, 0x8afff7ff, REGISTRY_LACNIC }, // 138.255.232.0 - 138.255.247.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 { 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, 0x8b19ffff, REGISTRY_RIPENCC }, // 139.10.0.0 - 139.25.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, 0x8b31ffff, REGISTRY_ARIN }, // 139.45.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, 0x8b8cffff, REGISTRY_ARIN }, // 139.135.0.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, 0x8ba7ffff, REGISTRY_ARIN }, // 139.167.0.0 - 139.167.255.255 { 0x8ba80000, 0x8ba8ffff, REGISTRY_APNIC }, // 139.168.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, 0x8ce6ffff, REGISTRY_ARIN }, // 140.225.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, 0x8d55ffff, REGISTRY_RIPENCC }, // 141.9.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, 0x8d81ffff, REGISTRY_ARIN }, // 141.121.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, 0x8dc1ffff, REGISTRY_ARIN }, // 141.193.0.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, 0x8de4ffff, REGISTRY_RIPENCC }, // 141.226.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, 0x8effffff, REGISTRY_ARIN }, // 142.0.0.0 - 142.255.255.255 { 0x8f000400, 0x8f000fff, REGISTRY_LACNIC }, // 143.0.4.0 - 143.0.15.255 { 0x8f001400, 0x8f0017ff, REGISTRY_LACNIC }, // 143.0.20.0 - 143.0.23.255 { 0x8f002800, 0x8f002bff, REGISTRY_LACNIC }, // 143.0.40.0 - 143.0.43.255 { 0x8f003000, 0x8f0033ff, REGISTRY_LACNIC }, // 143.0.48.0 - 143.0.51.255 { 0x8f005000, 0x8f0053ff, REGISTRY_LACNIC }, // 143.0.80.0 - 143.0.83.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 { 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 { 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 { 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 { 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 { 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, 0x90d0ffff, REGISTRY_ARIN }, // 144.207.0.0 - 144.208.255.255 { 0x90d10000, 0x90d1ffff, REGISTRY_RIPENCC }, // 144.209.0.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, 0x91e3ffff, REGISTRY_RIPENCC }, // 145.0.0.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, 0x91fcffff, REGISTRY_RIPENCC }, // 145.234.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, 0x9204ffff, REGISTRY_RIPENCC }, // 146.2.0.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, 0x9247ffff, REGISTRY_ARIN }, // 146.71.0.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, 0x9259ffff, REGISTRY_ARIN }, // 146.88.176.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, 0x92c41fff, REGISTRY_APNIC }, // 146.195.0.0 - 146.196.31.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, 0x92f6ffff, REGISTRY_ARIN }, // 146.235.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, 0x92feffff, REGISTRY_RIPENCC }, // 146.253.0.0 - 146.254.255.255 { 0x92ff0000, 0x92ff6fff, REGISTRY_RIPENCC }, // 146.255.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, 0x931bffff, REGISTRY_RIPENCC }, // 147.27.0.0 - 147.27.255.255 { 0x931c0000, 0x931cffff, REGISTRY_ARIN }, // 147.28.0.0 - 147.28.255.255 { 0x931d0000, 0x931dffff, REGISTRY_RIPENCC }, // 147.29.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, 0x9333ffff, REGISTRY_ARIN }, // 147.48.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, 0x9352ffff, REGISTRY_ARIN }, // 147.79.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, 0x935cffff, REGISTRY_ARIN }, // 147.92.0.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, 0x938dffff, REGISTRY_ARIN }, // 147.133.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, 0x94423fff, REGISTRY_ARIN }, // 148.61.0.0 - 148.66.63.255 { 0x94424000, 0x94427fff, REGISTRY_APNIC }, // 148.66.64.0 - 148.66.127.255 { 0x94428000, 0x9442ffff, REGISTRY_ARIN }, // 148.66.128.0 - 148.66.255.255 { 0x94430000, 0x9444ffff, REGISTRY_APNIC }, // 148.67.0.0 - 148.68.255.255 { 0x94450000, 0x944effff, REGISTRY_ARIN }, // 148.69.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, 0x9453ffff, REGISTRY_RIPENCC }, // 148.81.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, 0x94fdffff, REGISTRY_RIPENCC }, // 148.251.0.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, 0x953affff, REGISTRY_ARIN }, // 149.50.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, 0x957dffff, REGISTRY_ARIN }, // 149.63.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, 0x95f0ffff, REGISTRY_RIPENCC }, // 149.211.0.0 - 149.240.255.255 { 0x95f10000, 0x95f1ffff, REGISTRY_RIPENCC }, // 149.241.0.0 - 149.241.255.255 { 0x95f20000, 0x95f7ffff, REGISTRY_RIPENCC }, // 149.242.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, 0x966bffff, REGISTRY_APNIC }, // 150.107.0.0 - 150.107.255.255 { 0x966c0000, 0x9672ffff, REGISTRY_ARIN }, // 150.108.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, 0x9681ffff, REGISTRY_APNIC }, // 150.129.0.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, 0x9695ffff, REGISTRY_ARIN }, // 150.147.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, 0x96faffff, REGISTRY_ARIN }, // 150.245.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, 0x9700ffff, REGISTRY_RIPENCC }, // 151.0.0.0 - 151.0.255.255 { 0x97010000, 0x9762ffff, REGISTRY_RIPENCC }, // 151.1.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, 0x97b1ffff, REGISTRY_RIPENCC }, // 151.175.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, 0x97b7ffff, REGISTRY_RIPENCC }, // 151.182.0.0 - 151.183.255.255 { 0x97b80000, 0x97baffff, REGISTRY_ARIN }, // 151.184.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 { 0x97d82100, 0x97d822ff, REGISTRY_RIPENCC }, // 151.216.33.0 - 151.216.34.255 { 0x97d82400, 0x97d829ff, REGISTRY_RIPENCC }, // 151.216.36.0 - 151.216.41.255 { 0x97d84000, 0x97d87fff, REGISTRY_RIPENCC }, // 151.216.64.0 - 151.216.127.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, 0x9841ffff, REGISTRY_ARIN }, // 152.53.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, 0x9962ffff, REGISTRY_RIPENCC }, // 153.92.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, 0x9a00ffff, REGISTRY_AFRINIC }, // 154.0.0.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, 0x9a4137ff, REGISTRY_AFRINIC }, // 154.65.0.0 - 154.65.55.255 { 0x9a413c00, 0x9a425fff, REGISTRY_AFRINIC }, // 154.65.60.0 - 154.66.95.255 { 0x9a426400, 0x9a447fff, REGISTRY_AFRINIC }, // 154.66.100.0 - 154.68.127.255 { 0x9a44c000, 0x9a727fff, REGISTRY_AFRINIC }, // 154.68.192.0 - 154.114.127.255 { 0x9a730000, 0x9a737fff, REGISTRY_AFRINIC }, // 154.115.0.0 - 154.115.127.255 { 0x9a740000, 0x9a76e7ff, REGISTRY_AFRINIC }, // 154.116.0.0 - 154.118.231.255 { 0x9a76f000, 0x9a7bffff, REGISTRY_AFRINIC }, // 154.118.240.0 - 154.123.255.255 { 0x9a7e0000, 0x9a7fffff, REGISTRY_AFRINIC }, // 154.126.0.0 - 154.127.255.255 { 0x9b000000, 0x9b00ffff, REGISTRY_AFRINIC }, // 155.0.0.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, 0x9b0c7fff, REGISTRY_AFRINIC }, // 155.11.0.0 - 155.12.127.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 { 0x9b230200, 0x9b2321ff, REGISTRY_ARIN }, // 155.35.2.0 - 155.35.33.255 { 0x9b232400, 0x9b232dff, REGISTRY_ARIN }, // 155.35.36.0 - 155.35.45.255 { 0x9b233000, 0x9b23e7ff, REGISTRY_ARIN }, // 155.35.48.0 - 155.35.231.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 { 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 { 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 { 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, 0x9bfeffff, REGISTRY_ARIN }, // 155.254.0.0 - 155.254.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 { 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, 0x9c43ffff, REGISTRY_RIPENCC }, // 156.67.0.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 { 0x9c9c0000, 0x9cdfffff, REGISTRY_AFRINIC }, // 156.156.0.0 - 156.223.255.255 { 0x9d000000, 0x9d04ffff, REGISTRY_APNIC }, // 157.0.0.0 - 157.4.255.255 { 0x9d060000, 0x9d0effff, REGISTRY_APNIC }, // 157.6.0.0 - 157.14.255.255 { 0x9d100000, 0x9d14ffff, REGISTRY_APNIC }, // 157.16.0.0 - 157.20.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, 0x9d3cffff, REGISTRY_ARIN }, // 157.30.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, 0x9d50ffff, REGISTRY_APNIC }, // 157.63.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, 0x9d60ffff, REGISTRY_RIPENCC }, // 157.96.0.0 - 157.96.255.255 { 0x9d610000, 0x9d62ffff, REGISTRY_ARIN }, // 157.97.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, 0x9d76ffff, REGISTRY_APNIC }, // 157.101.0.0 - 157.118.255.255 { 0x9d780000, 0x9d78bfff, REGISTRY_APNIC }, // 157.120.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, 0x9da4ffff, REGISTRY_RIPENCC }, // 157.161.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, 0x9e8effff, REGISTRY_ARIN }, // 158.134.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, 0x9ee3ffff, REGISTRY_RIPENCC }, // 158.225.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, 0x9f1cffff, REGISTRY_ARIN }, // 159.26.0.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, 0x9f75ffff, REGISTRY_APNIC }, // 159.117.0.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 { 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 { 0xa0150000, 0xa018ffff, REGISTRY_APNIC }, // 160.21.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 { 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 { 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 { 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, 0xa076ffff, REGISTRY_AFRINIC }, // 160.115.0.0 - 160.118.255.255 { 0xa0790000, 0xa07cffff, REGISTRY_AFRINIC }, // 160.121.0.0 - 160.124.255.255 { 0xa07d0000, 0xa097ffff, REGISTRY_ARIN }, // 160.125.0.0 - 160.151.255.255 { 0xa0990000, 0xa099ffff, REGISTRY_ARIN }, // 160.153.0.0 - 160.153.255.255 { 0xa09c0000, 0xa0b3ffff, REGISTRY_AFRINIC }, // 160.156.0.0 - 160.179.255.255 { 0xa0b40000, 0xa0b4ffff, REGISTRY_RIPENCC }, // 160.180.0.0 - 160.180.255.255 { 0xa0b50000, 0xa0b5ffff, REGISTRY_AFRINIC }, // 160.181.0.0 - 160.181.255.255 { 0xa0b80000, 0xa0b8ffff, REGISTRY_AFRINIC }, // 160.184.0.0 - 160.184.255.255 { 0xa0b90000, 0xa0beffff, REGISTRY_APNIC }, // 160.185.0.0 - 160.190.255.255 { 0xa0c00000, 0xa0ca07ff, REGISTRY_APNIC }, // 160.192.0.0 - 160.202.7.255 { 0xa0cb0000, 0xa0ccffff, REGISTRY_APNIC }, // 160.203.0.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, 0xa0e27fff, REGISTRY_AFRINIC }, // 160.224.0.0 - 160.226.127.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 { 0xa0ee1400, 0xa0ee14ff, REGISTRY_APNIC }, // 160.238.20.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 { 0xa0ee6400, 0xa0ee64ff, REGISTRY_APNIC }, // 160.238.100.0 - 160.238.100.255 { 0xa0ef0000, 0xa0f1ffff, REGISTRY_APNIC }, // 160.239.0.0 - 160.241.255.255 { 0xa0f20000, 0xa0f2bfff, REGISTRY_AFRINIC }, // 160.242.0.0 - 160.242.191.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, 0xa124ffff, REGISTRY_ARIN }, // 161.31.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 { 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, 0xa19dffff, REGISTRY_ARIN }, // 161.153.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, 0xa1e9ffff, REGISTRY_ARIN }, // 161.230.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, 0xa1fbffff, REGISTRY_ARIN }, // 161.249.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 { 0xa20cdc00, 0xa20cdfff, REGISTRY_ARIN }, // 162.12.220.0 - 162.12.223.255 { 0xa20cec00, 0xa20cefff, REGISTRY_ARIN }, // 162.12.236.0 - 162.12.239.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, 0xa290ffff, REGISTRY_ARIN }, // 162.123.0.0 - 162.144.255.255 { 0xa2910000, 0xa293ffff, REGISTRY_APNIC }, // 162.145.0.0 - 162.147.255.255 { 0xa2940000, 0xa2ffffff, REGISTRY_ARIN }, // 162.148.0.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, 0xa33547ff, REGISTRY_APNIC }, // 163.53.0.0 - 163.53.71.255 { 0xa3354c00, 0xa335d3ff, REGISTRY_APNIC }, // 163.53.76.0 - 163.53.211.255 { 0xa335d800, 0xa338ffff, REGISTRY_APNIC }, // 163.53.216.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, 0xa3e2ffff, REGISTRY_APNIC }, // 163.217.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, 0xa422ffff, REGISTRY_RIPENCC }, // 164.16.0.0 - 164.34.255.255 { 0xa4230000, 0xa427ffff, REGISTRY_RIPENCC }, // 164.35.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, 0xa434ffff, REGISTRY_ARIN }, // 164.49.0.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 { 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 { 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 { 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 { 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 { 0xa5320000, 0xa53fffff, REGISTRY_AFRINIC }, // 165.50.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 { 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, 0xa554ffff, REGISTRY_APNIC }, // 165.84.0.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 { 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 { 0xa5630000, 0xa56503ff, REGISTRY_APNIC }, // 165.99.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, 0xa5c1ffff, REGISTRY_ARIN }, // 165.192.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 { 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 { 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, 0xa766ffff, REGISTRY_ARIN }, // 167.82.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, 0xa7a1ffff, REGISTRY_ARIN }, // 167.158.0.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, 0xa7dcdfff, REGISTRY_ARIN }, // 167.206.0.0 - 167.220.223.255 { 0xa7dce000, 0xa7dcffff, REGISTRY_APNIC }, // 167.220.224.0 - 167.220.255.255 { 0xa7dd0000, 0xa7f8ffff, REGISTRY_ARIN }, // 167.221.0.0 - 167.248.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 { 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 { 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 { 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 { 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 { 0xa8c60000, 0xa8c6ffff, REGISTRY_APNIC }, // 168.198.0.0 - 168.198.255.255 { 0xa8c70000, 0xa8ccffff, REGISTRY_ARIN }, // 168.199.0.0 - 168.204.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, 0xa8e2ffff, REGISTRY_LACNIC }, // 168.226.0.0 - 168.226.255.255 { 0xa8e50000, 0xa8e6ffff, REGISTRY_ARIN }, // 168.229.0.0 - 168.230.255.255 { 0xa8e70000, 0xa8e7ffff, REGISTRY_LACNIC }, // 168.231.0.0 - 168.231.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, 0xa8f7ffff, REGISTRY_ARIN }, // 168.244.0.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, 0xa99dffff, REGISTRY_ARIN }, // 169.141.0.0 - 169.157.255.255 { 0xa99e0000, 0xa99effff, REGISTRY_LACNIC }, // 169.158.0.0 - 169.158.255.255 { 0xa99f0000, 0xa99f7fff, REGISTRY_AFRINIC }, // 169.159.0.0 - 169.159.127.255 { 0xa99fc000, 0xa99fcfff, REGISTRY_AFRINIC }, // 169.159.192.0 - 169.159.207.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, 0xa9ef0fff, REGISTRY_AFRINIC }, // 169.239.0.0 - 169.239.15.255 { 0xa9ef0c00, 0xa9ef43ff, REGISTRY_AFRINIC }, // 169.239.12.0 - 169.239.67.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 { 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, 0xaa4dffff, REGISTRY_ARIN }, // 170.71.0.0 - 170.77.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 { 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 { 0xaae80000, 0xaae8ffff, REGISTRY_ARIN }, // 170.232.0.0 - 170.232.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 { 0xaaf00000, 0xaaf3ffff, REGISTRY_ARIN }, // 170.240.0.0 - 170.243.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 { 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, 0xab19deff, REGISTRY_RIPENCC }, // 171.16.0.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, 0xacbfffff, REGISTRY_ARIN }, // 172.32.0.0 - 172.191.255.255 { 0xacc00000, 0xacc7ffff, REGISTRY_APNIC }, // 172.192.0.0 - 172.199.255.255 { 0xacc80000, 0xae8a8fff, REGISTRY_ARIN }, // 172.200.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, 0xaf2db3ff, REGISTRY_APNIC }, // 175.0.0.0 - 175.45.179.255 { 0xaf2db800, 0xaf6a03ff, REGISTRY_APNIC }, // 175.45.184.0 - 175.106.3.255 { 0xaf6a0800, 0xaf6f6bff, REGISTRY_APNIC }, // 175.106.8.0 - 175.111.107.255 { 0xaf6f7000, 0xaf6f7fff, REGISTRY_APNIC }, // 175.111.112.0 - 175.111.127.255 { 0xaf6fc000, 0xaf9e5fff, REGISTRY_APNIC }, // 175.111.192.0 - 175.158.95.255 { 0xaf9e6800, 0xafb097ff, REGISTRY_APNIC }, // 175.158.104.0 - 175.176.151.255 { 0xafb0a000, 0xafb0afff, REGISTRY_APNIC }, // 175.176.160.0 - 175.176.175.255 { 0xafb0c000, 0xafffffff, REGISTRY_APNIC }, // 175.176.192.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, 0xb0605fff, REGISTRY_RIPENCC }, // 176.96.88.0 - 176.96.95.255 { 0xb0606000, 0xb060afff, REGISTRY_RIPENCC }, // 176.96.96.0 - 176.96.175.255 { 0xb060b000, 0xb060b7ff, REGISTRY_RIPENCC }, // 176.96.176.0 - 176.96.183.255 { 0xb060b800, 0xb0618fff, REGISTRY_RIPENCC }, // 176.96.184.0 - 176.97.143.255 { 0xb0619000, 0xb06197ff, REGISTRY_RIPENCC }, // 176.97.144.0 - 176.97.151.255 { 0xb0619800, 0xb0621fff, REGISTRY_RIPENCC }, // 176.97.152.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, 0xb06777ff, REGISTRY_RIPENCC }, // 176.102.128.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, 0xb0698fff, REGISTRY_RIPENCC }, // 176.103.248.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, 0xb06b3fff, REGISTRY_RIPENCC }, // 176.106.120.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, 0xb06e69ff, REGISTRY_RIPENCC }, // 176.108.232.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, 0xb073dfff, REGISTRY_RIPENCC }, // 176.114.112.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, 0xb0761fff, REGISTRY_RIPENCC }, // 176.117.60.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, 0xb10a47ff, REGISTRY_LACNIC }, // 177.8.144.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, 0xb1177fff, REGISTRY_LACNIC }, // 177.11.136.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, 0xb13577ff, REGISTRY_LACNIC }, // 177.39.12.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, 0xb148d7ff, REGISTRY_LACNIC }, // 177.71.0.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, 0xb154cbff, REGISTRY_LACNIC }, // 177.73.254.0 - 177.84.203.255 { 0xb154d000, 0xb155efff, REGISTRY_LACNIC }, // 177.84.208.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, 0xb17c9bff, REGISTRY_LACNIC }, // 177.87.88.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, 0xb1985fff, REGISTRY_LACNIC }, // 177.129.40.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, 0xb1ddb7ff, REGISTRY_LACNIC }, // 177.200.240.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, 0xb29f5fff, REGISTRY_RIPENCC }, // 178.159.16.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, 0xb2d857ff, REGISTRY_RIPENCC }, // 178.214.160.0 - 178.216.87.255 { 0xb2d85800, 0xb2d85fff, REGISTRY_RIPENCC }, // 178.216.88.0 - 178.216.95.255 { 0xb2d86000, 0xb2d927ff, REGISTRY_RIPENCC }, // 178.216.96.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, 0xb2daafff, REGISTRY_RIPENCC }, // 178.217.240.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, 0xb2ff6fff, REGISTRY_RIPENCC }, // 178.249.240.0 - 178.255.111.255 { 0xb2ff7800, 0xb2ffffff, REGISTRY_RIPENCC }, // 178.255.120.0 - 178.255.255.255 { 0xb3000000, 0xb30094ff, REGISTRY_LACNIC }, // 179.0.0.0 - 179.0.148.255 { 0xb3009600, 0xb32affff, REGISTRY_LACNIC }, // 179.0.150.0 - 179.42.255.255 { 0xb32b4000, 0xb333f7ff, REGISTRY_LACNIC }, // 179.43.64.0 - 179.51.247.255 { 0xb333fc00, 0xb33c7fff, REGISTRY_LACNIC }, // 179.51.252.0 - 179.60.127.255 { 0xb33c9000, 0xb3bf23ff, REGISTRY_LACNIC }, // 179.60.144.0 - 179.191.35.255 { 0xb3bf3000, 0xb3ffffff, REGISTRY_LACNIC }, // 179.191.48.0 - 179.255.255.255 { 0xb4000000, 0xb45e1fff, REGISTRY_APNIC }, // 180.0.0.0 - 180.94.31.255 { 0xb45e2400, 0xb45e77ff, REGISTRY_APNIC }, // 180.94.36.0 - 180.94.119.255 { 0xb45e8000, 0xb495dfff, REGISTRY_APNIC }, // 180.94.128.0 - 180.149.223.255 { 0xb495f000, 0xb4b26fff, REGISTRY_APNIC }, // 180.149.240.0 - 180.178.111.255 { 0xb4b27800, 0xb4d2d3ff, REGISTRY_APNIC }, // 180.178.120.0 - 180.210.211.255 { 0xb4d2d800, 0xb4d2dbff, REGISTRY_APNIC }, // 180.210.216.0 - 180.210.219.255 { 0xb4d2e000, 0xb4de77ff, REGISTRY_APNIC }, // 180.210.224.0 - 180.222.119.255 { 0xb4de8000, 0xb4e98fff, REGISTRY_APNIC }, // 180.222.128.0 - 180.233.143.255 { 0xb4e99800, 0xb4eb6fff, REGISTRY_APNIC }, // 180.233.152.0 - 180.235.111.255 { 0xb4eb8000, 0xb4eb87ff, REGISTRY_APNIC }, // 180.235.128.0 - 180.235.135.255 { 0xb4eb8c00, 0xb4ffffff, REGISTRY_APNIC }, // 180.235.140.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, 0xb6108fff, REGISTRY_APNIC }, // 182.0.0.0 - 182.16.143.255 { 0xb6109800, 0xb63243ff, REGISTRY_APNIC }, // 182.16.152.0 - 182.50.67.255 { 0xb6324800, 0xb6367fff, REGISTRY_APNIC }, // 182.50.72.0 - 182.54.127.255 { 0xb636a000, 0xb636f3ff, REGISTRY_APNIC }, // 182.54.160.0 - 182.54.243.255 { 0xb636f800, 0xb6a11fff, REGISTRY_APNIC }, // 182.54.248.0 - 182.161.31.255 { 0xb6a14000, 0xb6ed17ff, REGISTRY_APNIC }, // 182.161.64.0 - 182.237.23.255 { 0xb6ed2000, 0xb6ff1fff, REGISTRY_APNIC }, // 182.237.32.0 - 182.255.31.255 { 0xb6ff4000, 0xb74e9fff, REGISTRY_APNIC }, // 182.255.64.0 - 183.78.159.255 { 0xb74ea800, 0xb74eafff, REGISTRY_APNIC }, // 183.78.168.0 - 183.78.175.255 { 0xb74eb400, 0xb751abff, REGISTRY_APNIC }, // 183.78.180.0 - 183.81.171.255 { 0xb751b000, 0xb7ffffff, REGISTRY_APNIC }, // 183.81.176.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, 0xb90126ff, REGISTRY_RIPENCC }, // 185.1.0.0 - 185.1.38.255 { 0xb9012800, 0xb90131ff, REGISTRY_RIPENCC }, // 185.1.40.0 - 185.1.49.255 { 0xb9020000, 0xb90743ff, REGISTRY_RIPENCC }, // 185.2.0.0 - 185.7.67.255 { 0xb9074800, 0xb9085fff, REGISTRY_RIPENCC }, // 185.7.72.0 - 185.8.95.255 { 0xb9086400, 0xb90b77ff, REGISTRY_RIPENCC }, // 185.8.100.0 - 185.11.119.255 { 0xb90b7c00, 0xb90f23ff, REGISTRY_RIPENCC }, // 185.11.124.0 - 185.15.35.255 { 0xb90f2800, 0xb9115fff, REGISTRY_RIPENCC }, // 185.15.40.0 - 185.17.95.255 { 0xb9116400, 0xb913a7ff, REGISTRY_RIPENCC }, // 185.17.100.0 - 185.19.167.255 { 0xb913ac00, 0xb913d3ff, REGISTRY_RIPENCC }, // 185.19.172.0 - 185.19.211.255 { 0xb913d800, 0xb91b0bff, REGISTRY_RIPENCC }, // 185.19.216.0 - 185.27.11.255 { 0xb91b1000, 0xb91cb3ff, REGISTRY_RIPENCC }, // 185.27.16.0 - 185.28.179.255 { 0xb91cb800, 0xb928b3ff, REGISTRY_RIPENCC }, // 185.28.184.0 - 185.40.179.255 { 0xb928b800, 0xb928f3ff, REGISTRY_RIPENCC }, // 185.40.184.0 - 185.40.243.255 { 0xb928f800, 0xb92d6bff, REGISTRY_RIPENCC }, // 185.40.248.0 - 185.45.107.255 { 0xb92d7000, 0xb93297ff, REGISTRY_RIPENCC }, // 185.45.112.0 - 185.50.151.255 { 0xb9329c00, 0xb93437ff, REGISTRY_RIPENCC }, // 185.50.156.0 - 185.52.55.255 { 0xb9343c00, 0xb9379bff, REGISTRY_RIPENCC }, // 185.52.60.0 - 185.55.155.255 { 0xb937a000, 0xb93fefff, REGISTRY_RIPENCC }, // 185.55.160.0 - 185.63.239.255 { 0xb93ff400, 0xb9411fff, REGISTRY_RIPENCC }, // 185.63.244.0 - 185.65.31.255 { 0xb9412400, 0xb945cfff, REGISTRY_RIPENCC }, // 185.65.36.0 - 185.69.207.255 { 0xb945d400, 0xb94ab7ff, REGISTRY_RIPENCC }, // 185.69.212.0 - 185.74.183.255 { 0xb94abc00, 0xb96327ff, REGISTRY_RIPENCC }, // 185.74.188.0 - 185.99.39.255 { 0xb9632c00, 0xb97407ff, REGISTRY_RIPENCC }, // 185.99.44.0 - 185.116.7.255 { 0xba000000, 0xba008fff, REGISTRY_LACNIC }, // 186.0.0.0 - 186.0.143.255 { 0xba009800, 0xba02f7ff, REGISTRY_LACNIC }, // 186.0.152.0 - 186.2.247.255 { 0xba02fc00, 0xba415bff, REGISTRY_LACNIC }, // 186.2.252.0 - 186.65.91.255 { 0xba416000, 0xba4167ff, REGISTRY_LACNIC }, // 186.65.96.0 - 186.65.103.255 { 0xba416c00, 0xba94bfff, REGISTRY_LACNIC }, // 186.65.108.0 - 186.148.191.255 { 0xba94c800, 0xba94dfff, REGISTRY_LACNIC }, // 186.148.200.0 - 186.148.223.255 { 0xba94e800, 0xbad177ff, REGISTRY_LACNIC }, // 186.148.232.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, 0xbae987ff, REGISTRY_LACNIC }, // 186.232.108.0 - 186.233.135.255 { 0xbae98c00, 0xbaed5fff, REGISTRY_LACNIC }, // 186.233.140.0 - 186.237.95.255 { 0xbaed7000, 0xbafa3bff, REGISTRY_LACNIC }, // 186.237.112.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, 0xbb49afff, REGISTRY_LACNIC }, // 187.62.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, 0xbb789fff, REGISTRY_LACNIC }, // 187.103.208.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, 0xbc01ffff, REGISTRY_RIPENCC }, // 188.0.160.0 - 188.1.255.255 { 0xbc020000, 0xbc410fff, REGISTRY_RIPENCC }, // 188.2.0.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, 0xbcbdffff, REGISTRY_RIPENCC }, // 188.119.128.0 - 188.189.255.255 { 0xbcbe0000, 0xbcbe5fff, REGISTRY_RIPENCC }, // 188.190.0.0 - 188.190.95.255 { 0xbcbe8000, 0xbcbff7ff, REGISTRY_RIPENCC }, // 188.190.128.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, 0xbd0e6fff, REGISTRY_LACNIC }, // 189.0.0.0 - 189.14.111.255 { 0xbd0e8000, 0xbd247fff, REGISTRY_LACNIC }, // 189.14.128.0 - 189.36.127.255 { 0xbd249000, 0xbd2dafff, REGISTRY_LACNIC }, // 189.36.144.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, 0xbd541fff, REGISTRY_LACNIC }, // 189.51.48.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, 0xbe089fff, REGISTRY_LACNIC }, // 190.3.168.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, 0xbe6adfff, REGISTRY_LACNIC }, // 190.97.176.0 - 190.106.223.255 { 0xbe6af000, 0xbe6b9fff, REGISTRY_LACNIC }, // 190.106.240.0 - 190.107.159.255 { 0xbe6bb000, 0xbe6f5fff, REGISTRY_LACNIC }, // 190.107.176.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, 0xbe781fff, REGISTRY_LACNIC }, // 190.115.96.0 - 190.120.31.255 { 0xbe783000, 0xbe7cfbff, REGISTRY_LACNIC }, // 190.120.48.0 - 190.124.251.255 { 0xbe7d0000, 0xbfffffff, REGISTRY_LACNIC }, // 190.125.0.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, 0xc0089fff, REGISTRY_ARIN }, // 192.8.44.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 { 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, 0xc0107aff, REGISTRY_ARIN }, // 192.12.248.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, 0xc01f0dff, REGISTRY_ARIN }, // 192.28.124.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, 0xc021fdff, REGISTRY_ARIN }, // 192.33.232.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, 0xc02389ff, REGISTRY_ARIN }, // 192.35.109.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 { 0xc023cd00, 0xc023cfff, REGISTRY_RIPENCC }, // 192.35.205.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, 0xc036ddff, REGISTRY_RIPENCC }, // 192.54.141.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, 0xc0401bff, REGISTRY_ARIN }, // 192.58.219.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, 0xc043d0ff, REGISTRY_RIPENCC }, // 192.67.189.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, 0xc04ca2ff, REGISTRY_RIPENCC }, // 192.76.154.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 { 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, 0xc053e5ff, REGISTRY_RIPENCC }, // 192.83.229.0 - 192.83.229.255 { 0xc053e600, 0xc053e6ff, REGISTRY_ARIN }, // 192.83.230.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 { 0xc054db00, 0xc054dbff, REGISTRY_APNIC }, // 192.84.219.0 - 192.84.219.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, 0xc06575ff, REGISTRY_ARIN }, // 192.101.92.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, 0xc06728ff, REGISTRY_RIPENCC }, // 192.103.27.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 { 0xc06d0b00, 0xc06d0eff, REGISTRY_RIPENCC }, // 192.109.11.0 - 192.109.14.255 { 0xc06d1000, 0xc06d10ff, REGISTRY_RIPENCC }, // 192.109.16.0 - 192.109.16.255 { 0xc06d1200, 0xc06d24ff, REGISTRY_RIPENCC }, // 192.109.18.0 - 192.109.36.255 { 0xc06d2700, 0xc06d27ff, REGISTRY_RIPENCC }, // 192.109.39.0 - 192.109.39.255 { 0xc06d2900, 0xc06d2cff, REGISTRY_RIPENCC }, // 192.109.41.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, 0xc06d46ff, REGISTRY_RIPENCC }, // 192.109.48.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, 0xc06d74ff, REGISTRY_RIPENCC }, // 192.109.111.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, 0xc06dc3ff, REGISTRY_RIPENCC }, // 192.109.150.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, 0xc06dd1ff, REGISTRY_RIPENCC }, // 192.109.204.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, 0xc06defff, REGISTRY_RIPENCC }, // 192.109.236.0 - 192.109.239.255 { 0xc06df100, 0xc06df1ff, REGISTRY_RIPENCC }, // 192.109.241.0 - 192.109.241.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, 0xc0813dff, REGISTRY_RIPENCC }, // 192.129.1.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 { 0xc0875900, 0xc08759ff, REGISTRY_APNIC }, // 192.135.89.0 - 192.135.89.255 { 0xc0875c00, 0xc0875cff, REGISTRY_APNIC }, // 192.135.92.0 - 192.135.92.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 { 0xc0904a00, 0xc0904aff, REGISTRY_RIPENCC }, // 192.144.74.0 - 192.144.74.255 { 0xc0904c00, 0xc0904dff, REGISTRY_RIPENCC }, // 192.144.76.0 - 192.144.77.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 { 0xc0937200, 0xc09372ff, REGISTRY_APNIC }, // 192.147.114.0 - 192.147.114.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, 0xc09563ff, REGISTRY_ARIN }, // 192.149.80.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, 0xc0a06cff, REGISTRY_ARIN }, // 192.160.97.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, 0xc0a263ff, REGISTRY_RIPENCC }, // 192.162.0.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, 0xc0af2cff, REGISTRY_RIPENCC }, // 192.175.33.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 { 0xc0bc5500, 0xc0bc57ff, REGISTRY_APNIC }, // 192.188.85.0 - 192.188.87.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 { 0xc0cf0e00, 0xc0cf0eff, REGISTRY_RIPENCC }, // 192.207.14.0 - 192.207.14.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 { 0xc0e7ed00, 0xc0e7edff, REGISTRY_AFRINIC }, // 192.231.237.0 - 192.231.237.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, 0xc0fb26ff, REGISTRY_ARIN }, // 192.249.32.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, 0xc100afff, REGISTRY_RIPENCC }, // 193.0.32.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, 0xc108bfff, REGISTRY_RIPENCC }, // 193.8.188.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, 0xc108d6ff, REGISTRY_RIPENCC }, // 193.8.213.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, 0xc1091cff, REGISTRY_RIPENCC }, // 193.9.16.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, 0xc1109bff, REGISTRY_RIPENCC }, // 193.16.146.0 - 193.16.155.255 { 0xc1109d00, 0xc110d4ff, REGISTRY_RIPENCC }, // 193.16.157.0 - 193.16.212.255 { 0xc110d600, 0xc110dcff, REGISTRY_RIPENCC }, // 193.16.214.0 - 193.16.220.255 { 0xc110de00, 0xc110ebff, REGISTRY_RIPENCC }, // 193.16.222.0 - 193.16.235.255 { 0xc110ed00, 0xc110eeff, REGISTRY_RIPENCC }, // 193.16.237.0 - 193.16.238.255 { 0xc110f000, 0xc11102ff, REGISTRY_RIPENCC }, // 193.16.240.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, 0xc111b3ff, REGISTRY_RIPENCC }, // 193.17.178.0 - 193.17.179.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, 0xc111daff, REGISTRY_RIPENCC }, // 193.17.218.0 - 193.17.218.255 { 0xc111db00, 0xc111dbff, REGISTRY_RIPENCC }, // 193.17.219.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 { 0xc1177e00, 0xc1177eff, REGISTRY_RIPENCC }, // 193.23.126.0 - 193.23.126.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, 0xc11bdfff, REGISTRY_RIPENCC }, // 193.27.78.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, 0xc11c67ff, REGISTRY_RIPENCC }, // 193.28.94.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, 0xc11cb5ff, REGISTRY_RIPENCC }, // 193.28.149.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, 0xc11cecff, REGISTRY_RIPENCC }, // 193.28.224.0 - 193.28.236.255 { 0xc11cee00, 0xc11cfbff, REGISTRY_RIPENCC }, // 193.28.238.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, 0xc11d37ff, REGISTRY_RIPENCC }, // 193.29.48.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, 0xc1203aff, REGISTRY_RIPENCC }, // 193.32.58.0 - 193.32.58.255 { 0xc1203b00, 0xc12041ff, REGISTRY_RIPENCC }, // 193.32.59.0 - 193.32.65.255 { 0xc1204200, 0xc12043ff, REGISTRY_RIPENCC }, // 193.32.66.0 - 193.32.67.255 { 0xc1204400, 0xc12053ff, REGISTRY_RIPENCC }, // 193.32.68.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, 0xc12127ff, REGISTRY_RIPENCC }, // 193.33.8.0 - 193.33.39.255 { 0xc1212a00, 0xc1213fff, REGISTRY_RIPENCC }, // 193.33.42.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, 0xc12187ff, REGISTRY_RIPENCC }, // 193.33.132.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, 0xc1224bff, REGISTRY_RIPENCC }, // 193.33.254.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, 0xc1234fff, REGISTRY_RIPENCC }, // 193.35.32.0 - 193.35.79.255 { 0xc1236000, 0xc12364ff, REGISTRY_RIPENCC }, // 193.35.96.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 { 0xc1246000, 0xc1247fff, REGISTRY_RIPENCC }, // 193.36.96.0 - 193.36.127.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, 0xc12597ff, REGISTRY_RIPENCC }, // 193.37.112.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, 0xc12979ff, REGISTRY_RIPENCC }, // 193.41.116.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, 0xc12ad1ff, REGISTRY_RIPENCC }, // 193.42.150.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, 0xc12b86ff, REGISTRY_RIPENCC }, // 193.43.127.0 - 193.43.134.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 { 0xc12e4a00, 0xc12e4dff, REGISTRY_RIPENCC }, // 193.46.74.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, 0xc12ed2ff, REGISTRY_RIPENCC }, // 193.46.201.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, 0xc13522ff, REGISTRY_RIPENCC }, // 193.53.13.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, 0xc1357dff, REGISTRY_RIPENCC }, // 193.53.106.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, 0xc13a07ff, REGISTRY_RIPENCC }, // 193.58.7.0 - 193.58.7.255 { 0xc13a0800, 0xc13a23ff, REGISTRY_RIPENCC }, // 193.58.8.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, 0xc15de7ff, REGISTRY_RIPENCC }, // 193.93.84.0 - 193.93.231.255 { 0xc15dec00, 0xc15dffff, REGISTRY_RIPENCC }, // 193.93.236.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, 0xc1680bff, REGISTRY_RIPENCC }, // 193.104.0.0 - 193.104.11.255 { 0xc1680d00, 0xc16842ff, REGISTRY_RIPENCC }, // 193.104.13.0 - 193.104.66.255 { 0xc1684400, 0xc1685cff, REGISTRY_RIPENCC }, // 193.104.68.0 - 193.104.92.255 { 0xc1685e00, 0xc16898ff, REGISTRY_RIPENCC }, // 193.104.94.0 - 193.104.152.255 { 0xc1689a00, 0xc168afff, REGISTRY_RIPENCC }, // 193.104.154.0 - 193.104.175.255 { 0xc168b100, 0xc168d2ff, REGISTRY_RIPENCC }, // 193.104.177.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, 0xc16950ff, REGISTRY_RIPENCC }, // 193.105.32.0 - 193.105.80.255 { 0xc1695200, 0xc16953ff, REGISTRY_RIPENCC }, // 193.105.82.0 - 193.105.83.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, 0xc16978ff, REGISTRY_RIPENCC }, // 193.105.97.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, 0xc169d8ff, REGISTRY_RIPENCC }, // 193.105.163.0 - 193.105.216.255 { 0xc169da00, 0xc169f3ff, REGISTRY_RIPENCC }, // 193.105.218.0 - 193.105.243.255 { 0xc169f500, 0xc16a13ff, REGISTRY_RIPENCC }, // 193.105.245.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, 0xc16c13ff, REGISTRY_RIPENCC }, // 193.107.212.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, 0xc16c5fff, REGISTRY_RIPENCC }, // 193.108.48.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, 0xc16d3fff, REGISTRY_RIPENCC }, // 193.109.16.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, 0xc16dd4ff, REGISTRY_RIPENCC }, // 193.109.138.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, 0xc16e27ff, REGISTRY_RIPENCC }, // 193.110.4.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, 0xc16ec7ff, REGISTRY_RIPENCC }, // 193.110.159.0 - 193.110.199.255 { 0xc16ecc00, 0xc16f03ff, REGISTRY_RIPENCC }, // 193.110.204.0 - 193.111.3.255 { 0xc16f0600, 0xc16f1dff, REGISTRY_RIPENCC }, // 193.111.6.0 - 193.111.29.255 { 0xc16f2000, 0xc16f2cff, REGISTRY_RIPENCC }, // 193.111.32.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, 0xc16f59ff, REGISTRY_RIPENCC }, // 193.111.87.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, 0xc16fa7ff, REGISTRY_RIPENCC }, // 193.111.156.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, 0xc189ffff, REGISTRY_RIPENCC }, // 193.112.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, 0xc18a54ff, REGISTRY_RIPENCC }, // 193.138.82.0 - 193.138.84.255 { 0xc18a5600, 0xc18a6eff, REGISTRY_RIPENCC }, // 193.138.86.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, 0xc18f4aff, REGISTRY_RIPENCC }, // 193.143.73.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, 0xc18f5fff, REGISTRY_RIPENCC }, // 193.143.91.0 - 193.143.95.255 { 0xc18f6200, 0xc18f7aff, REGISTRY_RIPENCC }, // 193.143.98.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, 0xc194f3ff, REGISTRY_RIPENCC }, // 193.148.192.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, 0xc195ffff, REGISTRY_RIPENCC }, // 193.149.192.0 - 193.149.255.255 { 0xc1960000, 0xc196a7ff, REGISTRY_RIPENCC }, // 193.150.0.0 - 193.150.167.255 { 0xc196a900, 0xc196a9ff, REGISTRY_RIPENCC }, // 193.150.169.0 - 193.150.169.255 { 0xc196ac00, 0xc1973bff, REGISTRY_RIPENCC }, // 193.150.172.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, 0xc1a16fff, REGISTRY_RIPENCC }, // 193.161.30.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, 0xc1a47fff, REGISTRY_RIPENCC }, // 193.164.96.0 - 193.164.127.255 { 0xc1a48000, 0xc1a482ff, REGISTRY_RIPENCC }, // 193.164.128.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, 0xc1a82dff, REGISTRY_RIPENCC }, // 193.168.6.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 { 0xc1a88000, 0xc1a919ff, REGISTRY_RIPENCC }, // 193.168.128.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, 0xc1a9d9ff, REGISTRY_RIPENCC }, // 193.169.194.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, 0xc1a9ffff, REGISTRY_RIPENCC }, // 193.169.252.0 - 193.169.255.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, 0xc1b1a1ff, REGISTRY_RIPENCC }, // 193.177.136.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 { 0xc1b22b00, 0xc1b22bff, REGISTRY_RIPENCC }, // 193.178.43.0 - 193.178.43.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, 0xc1ba0aff, REGISTRY_RIPENCC }, // 193.186.0.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, 0xc1bd53ff, REGISTRY_RIPENCC }, // 193.189.76.0 - 193.189.83.255 { 0xc1bd5600, 0xc1bd59ff, REGISTRY_RIPENCC }, // 193.189.86.0 - 193.189.89.255 { 0xc1bd5c00, 0xc1bd75ff, REGISTRY_RIPENCC }, // 193.189.92.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 { 0xc1c00f40, 0xc1c00f7f, REGISTRY_RIPENCC }, // 193.192.15.64 - 193.192.15.127 { 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, 0xc1c1b5ff, REGISTRY_RIPENCC }, // 193.193.165.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, 0xc1c833ff, REGISTRY_RIPENCC }, // 193.200.28.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, 0xc1c8c1ff, REGISTRY_RIPENCC }, // 193.200.182.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, 0xc1c92dff, REGISTRY_RIPENCC }, // 193.201.39.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, 0xc1c9bfff, REGISTRY_RIPENCC }, // 193.201.159.128 - 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, 0xc1cb01ff, REGISTRY_RIPENCC }, // 193.202.113.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, 0xc1da76ff, REGISTRY_RIPENCC }, // 193.218.106.0 - 193.218.118.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, 0xc1da9bff, REGISTRY_RIPENCC }, // 193.218.124.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, 0xc1dacfff, REGISTRY_RIPENCC }, // 193.218.205.0 - 193.218.207.255 { 0xc1dad000, 0xc1daddff, REGISTRY_RIPENCC }, // 193.218.208.0 - 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, 0xc1db64ff, REGISTRY_RIPENCC }, // 193.219.96.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, 0xc1de3bff, REGISTRY_RIPENCC }, // 193.221.224.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, 0xc1de8dff, REGISTRY_RIPENCC }, // 193.222.112.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, 0xc1e490ff, REGISTRY_RIPENCC }, // 193.228.141.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, 0xc1e4ffff, REGISTRY_RIPENCC }, // 193.228.240.0 - 193.228.255.255 { 0xc1e50000, 0xc1edffff, REGISTRY_RIPENCC }, // 193.229.0.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, 0xc1ee77ff, REGISTRY_RIPENCC }, // 193.238.48.0 - 193.238.119.255 { 0xc1ee7c00, 0xc1eebfff, REGISTRY_RIPENCC }, // 193.238.124.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, 0xc1f269ff, REGISTRY_RIPENCC }, // 193.242.100.0 - 193.242.105.255 { 0xc1f26b00, 0xc1f26cff, REGISTRY_RIPENCC }, // 193.242.107.0 - 193.242.108.255 { 0xc1f26e00, 0xc1f2a3ff, REGISTRY_RIPENCC }, // 193.242.110.0 - 193.242.163.255 { 0xc1f2a400, 0xc1f2a5ff, REGISTRY_RIPENCC }, // 193.242.164.0 - 193.242.165.255 { 0xc1f2a600, 0xc1f385ff, REGISTRY_RIPENCC }, // 193.242.166.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, 0xc1f3ffff, REGISTRY_RIPENCC }, // 193.243.192.0 - 193.243.255.255 { 0xc1f40000, 0xc1f5ffff, REGISTRY_RIPENCC }, // 193.244.0.0 - 193.245.255.255 { 0xc1f60000, 0xc1fdffff, REGISTRY_RIPENCC }, // 193.246.0.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, 0xc1fecbff, REGISTRY_RIPENCC }, // 193.254.176.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, 0xc1feffff, REGISTRY_RIPENCC }, // 193.254.246.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, 0xc2008aff, REGISTRY_RIPENCC }, // 194.0.134.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, 0xc201d9ff, REGISTRY_RIPENCC }, // 194.1.188.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, 0xc203ffff, REGISTRY_RIPENCC }, // 194.2.0.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, 0xc2080bff, REGISTRY_RIPENCC }, // 194.8.0.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, 0xc2091fff, REGISTRY_RIPENCC }, // 194.9.20.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, 0xc209abff, REGISTRY_RIPENCC }, // 194.9.84.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, 0xc20b12ff, REGISTRY_RIPENCC }, // 194.11.0.0 - 194.11.18.255 { 0xc20b1400, 0xc20b18ff, REGISTRY_RIPENCC }, // 194.11.20.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, 0xc20bbbff, REGISTRY_RIPENCC }, // 194.11.156.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, 0xc20d42ff, REGISTRY_RIPENCC }, // 194.13.65.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, 0xc21cffff, REGISTRY_RIPENCC }, // 194.28.48.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, 0xc21d3fff, REGISTRY_RIPENCC }, // 194.29.56.0 - 194.29.63.255 { 0xc21d4000, 0xc21d7fff, REGISTRY_RIPENCC }, // 194.29.64.0 - 194.29.127.255 { 0xc21d8000, 0xc21ddfff, REGISTRY_RIPENCC }, // 194.29.128.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, 0xc21f33ff, REGISTRY_RIPENCC }, // 194.31.14.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 { 0xc21fdc00, 0xc21fddff, REGISTRY_RIPENCC }, // 194.31.220.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, 0xc220caff, REGISTRY_RIPENCC }, // 194.32.176.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, 0xc2210fff, REGISTRY_RIPENCC }, // 194.33.11.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, 0xc22762ff, REGISTRY_RIPENCC }, // 194.39.84.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, 0xc2279cff, REGISTRY_RIPENCC }, // 194.39.150.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 { 0xc228fe00, 0xc22900ff, REGISTRY_RIPENCC }, // 194.40.254.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, 0xc22abfff, REGISTRY_RIPENCC }, // 194.42.128.0 - 194.42.191.255 { 0xc22ac000, 0xc22adfff, REGISTRY_RIPENCC }, // 194.42.192.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, 0xc2326eff, REGISTRY_RIPENCC }, // 194.50.95.0 - 194.50.110.255 { 0xc2327000, 0xc232a9ff, REGISTRY_RIPENCC }, // 194.50.112.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, 0xc232bbff, REGISTRY_RIPENCC }, // 194.50.186.0 - 194.50.187.255 { 0xc232bd00, 0xc232bdff, REGISTRY_RIPENCC }, // 194.50.189.0 - 194.50.189.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 { 0xc232d500, 0xc232d7ff, REGISTRY_RIPENCC }, // 194.50.213.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, 0xc237a0ff, REGISTRY_RIPENCC }, // 194.55.158.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, 0xc237feff, REGISTRY_RIPENCC }, // 194.55.252.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 { 0xc23bdc00, 0xc23bddff, REGISTRY_RIPENCC }, // 194.59.220.0 - 194.59.221.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 { 0xc23c6000, 0xc23c83ff, REGISTRY_RIPENCC }, // 194.60.96.0 - 194.60.131.255 { 0xc23c8800, 0xc23cc3ff, REGISTRY_RIPENCC }, // 194.60.136.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, 0xc23cffff, REGISTRY_RIPENCC }, // 194.60.216.0 - 194.60.255.255 { 0xc23d2000, 0xc23d47ff, REGISTRY_RIPENCC }, // 194.61.32.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, 0xc23e67ff, REGISTRY_RIPENCC }, // 194.62.100.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, 0xc2455fff, REGISTRY_RIPENCC }, // 194.69.32.0 - 194.69.95.255 { 0xc2456000, 0xc2458fff, REGISTRY_RIPENCC }, // 194.69.96.0 - 194.69.143.255 { 0xc2459000, 0xc245bfff, REGISTRY_RIPENCC }, // 194.69.144.0 - 194.69.191.255 { 0xc245c000, 0xc245c7ff, REGISTRY_RIPENCC }, // 194.69.192.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, 0xc2589fff, REGISTRY_RIPENCC }, // 194.88.128.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, 0xc26338ff, REGISTRY_RIPENCC }, // 194.99.53.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, 0xc26ac9ff, REGISTRY_RIPENCC }, // 194.106.192.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, 0xc26b45ff, REGISTRY_RIPENCC }, // 194.107.0.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, 0xc26ec7ff, REGISTRY_RIPENCC }, // 194.110.192.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, 0xc271ddff, REGISTRY_RIPENCC }, // 194.113.216.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, 0xc27ceaff, REGISTRY_RIPENCC }, // 194.124.229.0 - 194.124.234.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, 0xc27ec1ff, REGISTRY_RIPENCC }, // 194.126.180.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, 0xc27eeeff, REGISTRY_RIPENCC }, // 194.126.234.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, 0xc27efaff, REGISTRY_RIPENCC }, // 194.126.246.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, 0xc289ffff, REGISTRY_RIPENCC }, // 194.128.0.0 - 194.137.255.255 { 0xc28a0000, 0xc28affff, REGISTRY_RIPENCC }, // 194.138.0.0 - 194.138.255.255 { 0xc28b0000, 0xc28cdfff, REGISTRY_RIPENCC }, // 194.139.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, 0xc2916fff, REGISTRY_RIPENCC }, // 194.145.32.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, 0xc291ffff, REGISTRY_RIPENCC }, // 194.145.214.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, 0xc292ffff, REGISTRY_RIPENCC }, // 194.146.224.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, 0xc29387ff, REGISTRY_RIPENCC }, // 194.147.132.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, 0xc295ffff, REGISTRY_RIPENCC }, // 194.149.224.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, 0xc2967bff, REGISTRY_RIPENCC }, // 194.150.96.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, 0xc296e9ff, REGISTRY_RIPENCC }, // 194.150.216.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, 0xc29998ff, REGISTRY_RIPENCC }, // 194.153.134.0 - 194.153.152.255 { 0xc2999980, 0xc2999aff, REGISTRY_RIPENCC }, // 194.153.153.128 - 194.153.154.255 { 0xc2999b80, 0xc2999cff, REGISTRY_RIPENCC }, // 194.153.155.128 - 194.153.156.255 { 0xc2999d40, 0xc2999d5f, REGISTRY_RIPENCC }, // 194.153.157.64 - 194.153.157.95 { 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, 0xc2b07dff, REGISTRY_RIPENCC }, // 194.176.124.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, 0xc2b4cdff, REGISTRY_RIPENCC }, // 194.180.198.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, 0xc2bb77ff, REGISTRY_RIPENCC }, // 194.187.40.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, 0xc2f22cff, REGISTRY_RIPENCC }, // 194.242.39.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 { 0xc2f23900, 0xc2f23fff, REGISTRY_RIPENCC }, // 194.242.57.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, 0xc2f627ff, REGISTRY_RIPENCC }, // 194.246.39.96 - 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, 0xc2f739ff, REGISTRY_RIPENCC }, // 194.246.104.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, 0xc302f1ff, REGISTRY_RIPENCC }, // 195.2.214.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, 0xc30adaff, REGISTRY_RIPENCC }, // 195.10.216.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, 0xc30d3fff, REGISTRY_RIPENCC }, // 195.13.48.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, 0xc30e17ff, REGISTRY_RIPENCC }, // 195.14.11.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, 0xc3141fff, REGISTRY_RIPENCC }, // 195.20.0.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, 0xc3148eff, REGISTRY_RIPENCC }, // 195.20.106.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, 0xc31a1fff, REGISTRY_RIPENCC }, // 195.26.10.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, 0xc31cbfff, REGISTRY_RIPENCC }, // 195.28.180.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, 0xc32adfff, REGISTRY_RIPENCC }, // 195.42.160.0 - 195.42.223.255 { 0xc32ae000, 0xc32ae7ff, REGISTRY_RIPENCC }, // 195.42.224.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, 0xc32b4fff, REGISTRY_RIPENCC }, // 195.43.32.0 - 195.43.79.255 { 0xc32b5200, 0xc32b5fff, REGISTRY_RIPENCC }, // 195.43.82.0 - 195.43.95.255 { 0xc32b6000, 0xc32b7fff, REGISTRY_RIPENCC }, // 195.43.96.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, 0xc331afff, REGISTRY_RIPENCC }, // 195.49.132.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, 0xc336bfff, REGISTRY_RIPENCC }, // 195.54.172.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, 0xc33c531f, REGISTRY_RIPENCC }, // 195.60.80.96 - 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, 0xc33cffff, REGISTRY_RIPENCC }, // 195.60.208.0 - 195.60.255.255 { 0xc33d0000, 0xc33dffff, REGISTRY_RIPENCC }, // 195.61.0.0 - 195.61.255.255 { 0xc33e0000, 0xc33e15ff, REGISTRY_RIPENCC }, // 195.62.0.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, 0xc341ffff, REGISTRY_RIPENCC }, // 195.64.192.0 - 195.65.255.255 { 0xc3420000, 0xc3421fff, REGISTRY_RIPENCC }, // 195.66.0.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, 0xc344dfff, REGISTRY_RIPENCC }, // 195.68.192.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, 0xc34a37ff, REGISTRY_RIPENCC }, // 195.74.40.0 - 195.74.55.255 { 0xc34a3800, 0xc34a3bff, REGISTRY_RIPENCC }, // 195.74.56.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, 0xc34e7fff, REGISTRY_RIPENCC }, // 195.78.58.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 { 0xc355c300, 0xc355c4ff, REGISTRY_RIPENCC }, // 195.85.195.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, 0xc35895ff, REGISTRY_RIPENCC }, // 195.88.106.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, 0xc358d1ff, REGISTRY_RIPENCC }, // 195.88.170.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, 0xc35d9fff, REGISTRY_RIPENCC }, // 195.93.128.0 - 195.93.159.255 { 0xc35da200, 0xc35dafff, REGISTRY_RIPENCC }, // 195.93.162.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, 0xc36e15ff, REGISTRY_RIPENCC }, // 195.110.4.0 - 195.110.21.255 { 0xc36e1800, 0xc36e3fff, REGISTRY_RIPENCC }, // 195.110.24.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, 0xc3721fff, REGISTRY_RIPENCC }, // 195.114.16.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, 0xc37273ff, REGISTRY_RIPENCC }, // 195.114.112.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, 0xc387f3ff, REGISTRY_RIPENCC }, // 195.135.192.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, 0xc389ffff, REGISTRY_RIPENCC }, // 195.137.206.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, 0xc38cdfff, REGISTRY_RIPENCC }, // 195.140.148.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, 0xc39559ff, REGISTRY_RIPENCC }, // 195.149.74.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, 0xc39576ff, REGISTRY_RIPENCC }, // 195.149.97.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, 0xc3a21fff, REGISTRY_RIPENCC }, // 195.162.8.0 - 195.162.31.255 { 0xc3a22000, 0xc3a23fff, REGISTRY_RIPENCC }, // 195.162.32.0 - 195.162.63.255 { 0xc3a24000, 0xc3a25fff, REGISTRY_RIPENCC }, // 195.162.64.0 - 195.162.95.255 { 0xc3a26000, 0xc3a6dfff, REGISTRY_RIPENCC }, // 195.162.96.0 - 195.166.223.255 { 0xc3a70000, 0xc3aa9fff, REGISTRY_RIPENCC }, // 195.167.0.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, 0xc3aabdff, REGISTRY_RIPENCC }, // 195.170.168.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, 0xc3b1e5ff, REGISTRY_RIPENCC }, // 195.177.196.0 - 195.177.229.255 { 0xc3b1e800, 0xc3b21fff, REGISTRY_RIPENCC }, // 195.177.232.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, 0xc3b624ff, REGISTRY_RIPENCC }, // 195.182.28.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, 0xc3bd47ff, REGISTRY_RIPENCC }, // 195.189.0.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, 0xc3bf35ff, REGISTRY_RIPENCC }, // 195.191.24.0 - 195.191.53.255 { 0xc3bf3800, 0xc3bf8bff, REGISTRY_RIPENCC }, // 195.191.56.0 - 195.191.139.255 { 0xc3bf8e00, 0xc3bfafff, REGISTRY_RIPENCC }, // 195.191.142.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, 0xc3bfffff, REGISTRY_RIPENCC }, // 195.191.208.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, 0xc3c8dcff, REGISTRY_RIPENCC }, // 195.200.216.0 - 195.200.220.255 { 0xc3c8de00, 0xc3c8fbff, REGISTRY_RIPENCC }, // 195.200.222.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, 0xc3ceffff, REGISTRY_RIPENCC }, // 195.206.236.0 - 195.206.255.255 { 0xc3cf0000, 0xc3d1ffff, REGISTRY_RIPENCC }, // 195.207.0.0 - 195.209.255.255 { 0xc3d20000, 0xc3d23fff, REGISTRY_RIPENCC }, // 195.210.0.0 - 195.210.63.255 { 0xc3d24000, 0xc3d2ffff, REGISTRY_RIPENCC }, // 195.210.64.0 - 195.210.255.255 { 0xc3d30000, 0xc3d3ffff, REGISTRY_RIPENCC }, // 195.211.0.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, 0xc3d6ffff, REGISTRY_RIPENCC }, // 195.214.216.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, 0xc3d8e9ff, REGISTRY_RIPENCC }, // 195.216.210.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, 0xc3e1b3ff, REGISTRY_RIPENCC }, // 195.225.68.0 - 195.225.179.255 { 0xc3e1b800, 0xc3e1dbff, REGISTRY_RIPENCC }, // 195.225.184.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, 0xc3e1f7ff, REGISTRY_RIPENCC }, // 195.225.232.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, 0xc3e2d6ff, REGISTRY_RIPENCC }, // 195.226.192.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, 0xc3e66aff, REGISTRY_RIPENCC }, // 195.230.96.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, 0xc3ea3dff, REGISTRY_RIPENCC }, // 195.234.0.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, 0xc3ea9eff, REGISTRY_RIPENCC }, // 195.234.157.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, 0xc3eef1ff, REGISTRY_RIPENCC }, // 195.238.232.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, 0xc3f263ff, REGISTRY_RIPENCC }, // 195.242.76.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 { 0xc3f2b200, 0xc3f2b5ff, REGISTRY_RIPENCC }, // 195.242.178.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, 0xc3f5e4ff, REGISTRY_RIPENCC }, // 195.245.208.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, 0xc3febfff, REGISTRY_RIPENCC }, // 195.254.156.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, 0xc40173ff, REGISTRY_AFRINIC }, // 196.1.115.0 - 196.1.115.255 { 0xc4017600, 0xc40185ff, REGISTRY_AFRINIC }, // 196.1.118.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 { 0xc401c000, 0xc401ffff, REGISTRY_AFRINIC }, // 196.1.192.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, 0xc40340ff, REGISTRY_AFRINIC }, // 196.3.57.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, 0xc40667ff, REGISTRY_AFRINIC }, // 196.6.1.0 - 196.6.103.255 { 0xc4067800, 0xc406afff, REGISTRY_AFRINIC }, // 196.6.120.0 - 196.6.175.255 { 0xc406b800, 0xc406d7ff, REGISTRY_AFRINIC }, // 196.6.184.0 - 196.6.215.255 { 0xc406dc00, 0xc406dfff, REGISTRY_AFRINIC }, // 196.6.220.0 - 196.6.223.255 { 0xc406ec00, 0xc409ffff, REGISTRY_AFRINIC }, // 196.6.236.0 - 196.9.255.255 { 0xc40a0100, 0xc40b3eff, REGISTRY_AFRINIC }, // 196.10.1.0 - 196.11.62.255 { 0xc40b4000, 0xc40b4fff, REGISTRY_AFRINIC }, // 196.11.64.0 - 196.11.79.255 { 0xc40b5800, 0xc40b66ff, REGISTRY_AFRINIC }, // 196.11.88.0 - 196.11.102.255 { 0xc40b6800, 0xc40b97ff, REGISTRY_AFRINIC }, // 196.11.104.0 - 196.11.151.255 { 0xc40ba000, 0xc40bafff, REGISTRY_AFRINIC }, // 196.11.160.0 - 196.11.175.255 { 0xc40bb800, 0xc40bffff, REGISTRY_AFRINIC }, // 196.11.184.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, 0xc40d6dff, REGISTRY_AFRINIC }, // 196.12.192.0 - 196.13.109.255 { 0xc40d7000, 0xc40dafff, REGISTRY_AFRINIC }, // 196.13.112.0 - 196.13.175.255 { 0xc40db800, 0xc40dc8ff, REGISTRY_AFRINIC }, // 196.13.184.0 - 196.13.200.255 { 0xc40dcc00, 0xc40f0fff, REGISTRY_AFRINIC }, // 196.13.204.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 { 0xc4201000, 0xc4201fff, REGISTRY_AFRINIC }, // 196.32.16.0 - 196.32.31.255 { 0xc4202000, 0xc4205fff, REGISTRY_LACNIC }, // 196.32.32.0 - 196.32.95.255 { 0xc4207000, 0xc4207fff, REGISTRY_AFRINIC }, // 196.32.112.0 - 196.32.127.255 { 0xc4208000, 0xc4209fff, REGISTRY_ARIN }, // 196.32.128.0 - 196.32.159.255 { 0xc420c000, 0xc420d7ff, REGISTRY_AFRINIC }, // 196.32.192.0 - 196.32.215.255 { 0xc420e000, 0xc420f7ff, REGISTRY_AFRINIC }, // 196.32.224.0 - 196.32.247.255 { 0xc4210000, 0xc427ffff, REGISTRY_AFRINIC }, // 196.33.0.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 { 0xc4287000, 0xc4293fff, REGISTRY_AFRINIC }, // 196.40.112.0 - 196.41.63.255 { 0xc4296000, 0xc429ffff, REGISTRY_AFRINIC }, // 196.41.96.0 - 196.41.255.255 { 0xc42a0000, 0xc42a3fff, REGISTRY_ARIN }, // 196.42.0.0 - 196.42.63.255 { 0xc42a4000, 0xc42c2fff, REGISTRY_AFRINIC }, // 196.42.64.0 - 196.44.47.255 { 0xc42c4000, 0xc42cffff, REGISTRY_AFRINIC }, // 196.44.64.0 - 196.44.255.255 { 0xc42d1000, 0xc43110ff, REGISTRY_AFRINIC }, // 196.45.16.0 - 196.49.16.255 { 0xc4320000, 0xc43200ff, REGISTRY_AFRINIC }, // 196.50.0.0 - 196.50.0.255 { 0xc4340000, 0xc43bffff, REGISTRY_AFRINIC }, // 196.52.0.0 - 196.59.255.255 { 0xc43e0000, 0xc43fffff, REGISTRY_AFRINIC }, // 196.62.0.0 - 196.63.255.255 { 0xc4c00000, 0xc4c02fff, REGISTRY_AFRINIC }, // 196.192.0.0 - 196.192.47.255 { 0xc4c04000, 0xc4c047ff, REGISTRY_AFRINIC }, // 196.192.64.0 - 196.192.71.255 { 0xc4c05000, 0xc4c053ff, REGISTRY_AFRINIC }, // 196.192.80.0 - 196.192.83.255 { 0xc4c06000, 0xc4c071ff, REGISTRY_AFRINIC }, // 196.192.96.0 - 196.192.113.255 { 0xc4c07c00, 0xc4c07cff, REGISTRY_AFRINIC }, // 196.192.124.0 - 196.192.124.255 { 0xc4c08c00, 0xc4c09fff, REGISTRY_AFRINIC }, // 196.192.140.0 - 196.192.159.255 { 0xc4c0c000, 0xc4c8dfff, REGISTRY_AFRINIC }, // 196.192.192.0 - 196.200.223.255 { 0xc4c8f000, 0xc4c8ffff, REGISTRY_AFRINIC }, // 196.200.240.0 - 196.200.255.255 { 0xc4c90100, 0xc4c903ff, REGISTRY_AFRINIC }, // 196.201.1.0 - 196.201.3.255 { 0xc4c90600, 0xc4c907ff, REGISTRY_AFRINIC }, // 196.201.6.0 - 196.201.7.255 { 0xc4c91000, 0xc4c95fff, REGISTRY_AFRINIC }, // 196.201.16.0 - 196.201.95.255 { 0xc4c98000, 0xc4c99fff, REGISTRY_AFRINIC }, // 196.201.128.0 - 196.201.159.255 { 0xc4c9c000, 0xc4c9e7ff, REGISTRY_AFRINIC }, // 196.201.192.0 - 196.201.231.255 { 0xc4c9f000, 0xc4c9f7ff, REGISTRY_AFRINIC }, // 196.201.240.0 - 196.201.247.255 { 0xc4ca0000, 0xc4ca9fff, REGISTRY_AFRINIC }, // 196.202.0.0 - 196.202.159.255 { 0xc4cac000, 0xc4cadfff, REGISTRY_AFRINIC }, // 196.202.192.0 - 196.202.223.255 { 0xc4cae800, 0xc4cf7fff, REGISTRY_AFRINIC }, // 196.202.232.0 - 196.207.127.255 { 0xc4cfc000, 0xc4d800ff, REGISTRY_AFRINIC }, // 196.207.192.0 - 196.216.0.255 { 0xc4d80100, 0xc4d801ff, REGISTRY_ARIN }, // 196.216.1.0 - 196.216.1.255 { 0xc4d80200, 0xc4d85fff, REGISTRY_AFRINIC }, // 196.216.2.0 - 196.216.95.255 { 0xc4d88000, 0xc4d8dfff, REGISTRY_AFRINIC }, // 196.216.128.0 - 196.216.223.255 { 0xc4d8e400, 0xc4d8f3ff, REGISTRY_AFRINIC }, // 196.216.228.0 - 196.216.243.255 { 0xc4d8f500, 0xc4d8fdff, REGISTRY_AFRINIC }, // 196.216.245.0 - 196.216.253.255 { 0xc4d8ff00, 0xc4dc9fff, REGISTRY_AFRINIC }, // 196.216.255.0 - 196.220.159.255 { 0xc4dcc000, 0xc4df1cff, REGISTRY_AFRINIC }, // 196.220.192.0 - 196.223.28.255 { 0xc4df1e00, 0xc4df2cff, REGISTRY_AFRINIC }, // 196.223.30.0 - 196.223.44.255 { 0xc4f00000, 0xc4f93fff, REGISTRY_AFRINIC }, // 196.240.0.0 - 196.249.63.255 { 0xc4fc0000, 0xc595abff, REGISTRY_AFRINIC }, // 196.252.0.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, 0xc59f4fff, REGISTRY_AFRINIC }, // 197.157.240.0 - 197.159.79.255 { 0xc59f6000, 0xc59fdfff, REGISTRY_AFRINIC }, // 197.159.96.0 - 197.159.223.255 { 0xc5a00000, 0xc5dc1fff, REGISTRY_AFRINIC }, // 197.160.0.0 - 197.220.31.255 { 0xc5dc4000, 0xc5e7efff, REGISTRY_AFRINIC }, // 197.220.64.0 - 197.231.239.255 { 0xc5e7f400, 0xc5eafbff, REGISTRY_AFRINIC }, // 197.231.244.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, 0xc5f3ffff, REGISTRY_AFRINIC }, // 197.241.0.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 { 0xc6117600, 0xc61176ff, REGISTRY_APNIC }, // 198.17.118.0 - 198.17.118.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, 0xc63600ff, REGISTRY_ARIN }, // 198.51.212.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, 0xc6380fff, REGISTRY_ARIN }, // 198.54.255.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, 0xc6854fff, REGISTRY_ARIN }, // 198.99.223.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, 0xc685e1ff, REGISTRY_ARIN }, // 198.133.141.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, 0xc6939fff, REGISTRY_ARIN }, // 198.143.0.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, 0xc6b8a0ff, REGISTRY_ARIN }, // 198.180.143.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, 0xc70917ff, REGISTRY_ARIN }, // 198.241.0.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, 0xc75b0fff, REGISTRY_ARIN }, // 199.54.0.0 - 199.91.15.255 { 0xc75b1000, 0xc75b1fff, REGISTRY_RIPENCC }, // 199.91.16.0 - 199.91.31.255 { 0xc75b2000, 0xc76765ff, REGISTRY_ARIN }, // 199.91.32.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, 0xc80171ff, REGISTRY_LACNIC }, // 200.0.224.0 - 200.1.113.255 { 0xc8017300, 0xc8017cff, REGISTRY_LACNIC }, // 200.1.115.0 - 200.1.124.255 { 0xc8017e00, 0xc8019fff, REGISTRY_LACNIC }, // 200.1.126.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, 0xc8090fff, REGISTRY_LACNIC }, // 200.6.96.0 - 200.9.15.255 { 0xc8092000, 0xc80951ff, REGISTRY_LACNIC }, // 200.9.32.0 - 200.9.81.255 { 0xc8095200, 0xc80953ff, REGISTRY_ARIN }, // 200.9.82.0 - 200.9.83.255 { 0xc8095400, 0xc8095bff, REGISTRY_LACNIC }, // 200.9.84.0 - 200.9.91.255 { 0xc8095e00, 0xc80965ff, REGISTRY_LACNIC }, // 200.9.94.0 - 200.9.101.255 { 0xc8096800, 0xc8096fff, REGISTRY_LACNIC }, // 200.9.104.0 - 200.9.111.255 { 0xc8097200, 0xc80972ff, REGISTRY_LACNIC }, // 200.9.114.0 - 200.9.114.255 { 0xc8097300, 0xc80973ff, REGISTRY_ARIN }, // 200.9.115.0 - 200.9.115.255 { 0xc8097400, 0xc80977ff, REGISTRY_LACNIC }, // 200.9.116.0 - 200.9.119.255 { 0xc8097a00, 0xc80981ff, REGISTRY_LACNIC }, // 200.9.122.0 - 200.9.129.255 { 0xc8098400, 0xc8098bff, REGISTRY_LACNIC }, // 200.9.132.0 - 200.9.139.255 { 0xc8098d00, 0xc80993ff, REGISTRY_LACNIC }, // 200.9.141.0 - 200.9.147.255 { 0xc8099500, 0xc80999ff, REGISTRY_LACNIC }, // 200.9.149.0 - 200.9.153.255 { 0xc8099d00, 0xc8099dff, REGISTRY_LACNIC }, // 200.9.157.0 - 200.9.157.255 { 0xc809a000, 0xc809a8ff, REGISTRY_LACNIC }, // 200.9.160.0 - 200.9.168.255 { 0xc809aa00, 0xc809adff, REGISTRY_LACNIC }, // 200.9.170.0 - 200.9.173.255 { 0xc809af00, 0xc809b4ff, REGISTRY_LACNIC }, // 200.9.175.0 - 200.9.180.255 { 0xc809b600, 0xc809b9ff, REGISTRY_LACNIC }, // 200.9.182.0 - 200.9.185.255 { 0xc809bb00, 0xc809c7ff, REGISTRY_LACNIC }, // 200.9.187.0 - 200.9.199.255 { 0xc809c900, 0xc809c9ff, REGISTRY_LACNIC }, // 200.9.201.0 - 200.9.201.255 { 0xc809cc00, 0xc809cdff, REGISTRY_LACNIC }, // 200.9.204.0 - 200.9.205.255 { 0xc809d000, 0xc809d5ff, REGISTRY_LACNIC }, // 200.9.208.0 - 200.9.213.255 { 0xc809d700, 0xc809dfff, REGISTRY_LACNIC }, // 200.9.215.0 - 200.9.223.255 { 0xc809e100, 0xc809e1ff, REGISTRY_LACNIC }, // 200.9.225.0 - 200.9.225.255 { 0xc809e300, 0xc809e4ff, REGISTRY_LACNIC }, // 200.9.227.0 - 200.9.228.255 { 0xc809e600, 0xc809e9ff, REGISTRY_LACNIC }, // 200.9.230.0 - 200.9.233.255 { 0xc809eb00, 0xc809f8ff, REGISTRY_LACNIC }, // 200.9.235.0 - 200.9.248.255 { 0xc809fd00, 0xc80a87ff, REGISTRY_LACNIC }, // 200.9.253.0 - 200.10.135.255 { 0xc80a8b00, 0xc80a8cff, REGISTRY_LACNIC }, // 200.10.139.0 - 200.10.140.255 { 0xc80a8e00, 0xc80a8fff, REGISTRY_LACNIC }, // 200.10.142.0 - 200.10.143.255 { 0xc80a9100, 0xc80a91ff, REGISTRY_LACNIC }, // 200.10.145.0 - 200.10.145.255 { 0xc80a9300, 0xc80a97ff, REGISTRY_LACNIC }, // 200.10.147.0 - 200.10.151.255 { 0xc80a9800, 0xc80a98ff, REGISTRY_ARIN }, // 200.10.152.0 - 200.10.152.255 { 0xc80a9b00, 0xc80a9bff, REGISTRY_ARIN }, // 200.10.155.0 - 200.10.155.255 { 0xc80a9f00, 0xc80a9fff, REGISTRY_LACNIC }, // 200.10.159.0 - 200.10.159.255 { 0xc80aa000, 0xc80aa0ff, REGISTRY_ARIN }, // 200.10.160.0 - 200.10.160.255 { 0xc80aa100, 0xc80aa2ff, REGISTRY_LACNIC }, // 200.10.161.0 - 200.10.162.255 { 0xc80aa500, 0xc80aa6ff, REGISTRY_ARIN }, // 200.10.165.0 - 200.10.166.255 { 0xc80aa700, 0xc80aacff, REGISTRY_LACNIC }, // 200.10.167.0 - 200.10.172.255 { 0xc80ab200, 0xc80ab3ff, REGISTRY_LACNIC }, // 200.10.178.0 - 200.10.179.255 { 0xc80ab600, 0xc80ab6ff, REGISTRY_LACNIC }, // 200.10.182.0 - 200.10.182.255 { 0xc80ab800, 0xc80ab8ff, REGISTRY_LACNIC }, // 200.10.184.0 - 200.10.184.255 { 0xc80aba00, 0xc80abaff, REGISTRY_LACNIC }, // 200.10.186.0 - 200.10.186.255 { 0xc80abc00, 0xc80abcff, REGISTRY_LACNIC }, // 200.10.188.0 - 200.10.188.255 { 0xc80abe00, 0xc80abeff, REGISTRY_LACNIC }, // 200.10.190.0 - 200.10.190.255 { 0xc80ac200, 0xc80acdff, REGISTRY_LACNIC }, // 200.10.194.0 - 200.10.205.255 { 0xc80acf00, 0xc80ad0ff, REGISTRY_LACNIC }, // 200.10.207.0 - 200.10.208.255 { 0xc80ad300, 0xc80ae2ff, REGISTRY_LACNIC }, // 200.10.211.0 - 200.10.226.255 { 0xc80ae400, 0xc80aeaff, REGISTRY_LACNIC }, // 200.10.228.0 - 200.10.234.255 { 0xc80aec00, 0xc80aeeff, REGISTRY_LACNIC }, // 200.10.236.0 - 200.10.238.255 { 0xc80af000, 0xc80af4ff, REGISTRY_LACNIC }, // 200.10.240.0 - 200.10.244.255 { 0xc80af600, 0xc80b20ff, REGISTRY_LACNIC }, // 200.10.246.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, 0xc80c82ff, REGISTRY_LACNIC }, // 200.11.128.0 - 200.12.130.255 { 0xc80c8400, 0xc80c8aff, REGISTRY_LACNIC }, // 200.12.132.0 - 200.12.138.255 { 0xc80c8c00, 0xc80c9cff, REGISTRY_LACNIC }, // 200.12.140.0 - 200.12.156.255 { 0xc80c9e00, 0xc80ca7ff, REGISTRY_LACNIC }, // 200.12.158.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, 0xc80e23ff, REGISTRY_LACNIC }, // 200.13.88.0 - 200.14.35.255 { 0xc80e2500, 0xc80e37ff, REGISTRY_LACNIC }, // 200.14.37.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, 0xc8171eff, REGISTRY_LACNIC }, // 200.16.89.0 - 200.23.30.255 { 0xc8172000, 0xc81740ff, REGISTRY_LACNIC }, // 200.23.32.0 - 200.23.64.255 { 0xc8174200, 0xc8174aff, REGISTRY_LACNIC }, // 200.23.66.0 - 200.23.74.255 { 0xc8174c00, 0xc81753ff, REGISTRY_LACNIC }, // 200.23.76.0 - 200.23.83.255 { 0xc8175500, 0xc81772ff, REGISTRY_LACNIC }, // 200.23.85.0 - 200.23.114.255 { 0xc8177500, 0xc81775ff, REGISTRY_LACNIC }, // 200.23.117.0 - 200.23.117.255 { 0xc8177800, 0xc8178bff, REGISTRY_LACNIC }, // 200.23.120.0 - 200.23.139.255 { 0xc8178d00, 0xc81793ff, REGISTRY_LACNIC }, // 200.23.141.0 - 200.23.147.255 { 0xc8179500, 0xc81797ff, REGISTRY_LACNIC }, // 200.23.149.0 - 200.23.151.255 { 0xc8179a00, 0xc817bcff, REGISTRY_LACNIC }, // 200.23.154.0 - 200.23.188.255 { 0xc817be00, 0xc817ccff, REGISTRY_LACNIC }, // 200.23.190.0 - 200.23.204.255 { 0xc817d000, 0xc817fdff, REGISTRY_LACNIC }, // 200.23.208.0 - 200.23.253.255 { 0xc8180000, 0xc81adfff, REGISTRY_LACNIC }, // 200.24.0.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, 0xc82132ff, REGISTRY_LACNIC }, // 200.30.64.0 - 200.33.50.255 { 0xc8213400, 0xc82150ff, REGISTRY_LACNIC }, // 200.33.52.0 - 200.33.80.255 { 0xc8215400, 0xc82154ff, REGISTRY_LACNIC }, // 200.33.84.0 - 200.33.84.255 { 0xc8215600, 0xc8215fff, REGISTRY_LACNIC }, // 200.33.86.0 - 200.33.95.255 { 0xc8216100, 0xc8216bff, REGISTRY_LACNIC }, // 200.33.97.0 - 200.33.107.255 { 0xc8216d00, 0xc82170ff, REGISTRY_LACNIC }, // 200.33.109.0 - 200.33.112.255 { 0xc8217200, 0xc82172ff, REGISTRY_LACNIC }, // 200.33.114.0 - 200.33.114.255 { 0xc8217400, 0xc82174ff, REGISTRY_LACNIC }, // 200.33.116.0 - 200.33.116.255 { 0xc8217600, 0xc8217cff, REGISTRY_LACNIC }, // 200.33.118.0 - 200.33.124.255 { 0xc8218000, 0xc821adff, REGISTRY_LACNIC }, // 200.33.128.0 - 200.33.173.255 { 0xc821b000, 0xc821caff, REGISTRY_LACNIC }, // 200.33.176.0 - 200.33.202.255 { 0xc821cc00, 0xc821cdff, REGISTRY_LACNIC }, // 200.33.204.0 - 200.33.205.255 { 0xc821cf00, 0xc821fcff, REGISTRY_LACNIC }, // 200.33.207.0 - 200.33.252.255 { 0xc821fe00, 0xc8228bff, REGISTRY_LACNIC }, // 200.33.254.0 - 200.34.139.255 { 0xc8228d00, 0xc822acff, REGISTRY_LACNIC }, // 200.34.141.0 - 200.34.172.255 { 0xc822ae00, 0xc822ccff, REGISTRY_LACNIC }, // 200.34.174.0 - 200.34.204.255 { 0xc822ce00, 0xc831ffff, REGISTRY_LACNIC }, // 200.34.206.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, 0xc87da7ff, REGISTRY_LACNIC }, // 200.124.176.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, 0xc8c069ff, REGISTRY_LACNIC }, // 200.187.112.0 - 200.192.105.255 { 0xc8c06c00, 0xc8d7efff, REGISTRY_LACNIC }, // 200.192.108.0 - 200.215.239.255 { 0xc8d80000, 0xc8db94ff, REGISTRY_LACNIC }, // 200.216.0.0 - 200.219.148.255 { 0xc8db9600, 0xc8e5f9ff, REGISTRY_LACNIC }, // 200.219.150.0 - 200.229.249.255 { 0xc8e5fc00, 0xc8e91fff, REGISTRY_LACNIC }, // 200.229.252.0 - 200.233.31.255 { 0xc8e92800, 0xc92e4fff, REGISTRY_LACNIC }, // 200.233.40.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, 0xc947bfff, REGISTRY_LACNIC }, // 201.71.32.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, 0xc9820fff, REGISTRY_LACNIC }, // 201.77.160.0 - 201.130.15.255 { 0xc9821400, 0xc98304ff, REGISTRY_LACNIC }, // 201.130.20.0 - 201.131.4.255 { 0xc9830600, 0xc9833fff, REGISTRY_LACNIC }, // 201.131.6.0 - 201.131.63.255 { 0xc9834100, 0xc98357ff, REGISTRY_LACNIC }, // 201.131.65.0 - 201.131.87.255 { 0xc9835a00, 0xc99e5fff, REGISTRY_LACNIC }, // 201.131.90.0 - 201.158.95.255 { 0xc99e6800, 0xc9b5ffff, REGISTRY_LACNIC }, // 201.158.104.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, 0xca005dff, REGISTRY_APNIC }, // 202.0.0.0 - 202.0.93.255 { 0xca005f00, 0xca0060ff, REGISTRY_APNIC }, // 202.0.95.0 - 202.0.96.255 { 0xca006200, 0xca0093ff, REGISTRY_APNIC }, // 202.0.98.0 - 202.0.147.255 { 0xca009500, 0xca0095ff, REGISTRY_APNIC }, // 202.0.149.0 - 202.0.149.255 { 0xca009700, 0xca0097ff, REGISTRY_APNIC }, // 202.0.151.0 - 202.0.151.255 { 0xca009a00, 0xca01dfff, REGISTRY_APNIC }, // 202.0.154.0 - 202.1.223.255 { 0xca01e800, 0xca0347ff, REGISTRY_APNIC }, // 202.1.232.0 - 202.3.71.255 { 0xca034a00, 0xca034aff, REGISTRY_APNIC }, // 202.3.74.0 - 202.3.74.255 { 0xca034d00, 0xca04a8ff, REGISTRY_APNIC }, // 202.3.77.0 - 202.4.168.255 { 0xca04aa00, 0xca04baff, REGISTRY_APNIC }, // 202.4.170.0 - 202.4.186.255 { 0xca04bc00, 0xca04bcff, REGISTRY_APNIC }, // 202.4.188.0 - 202.4.188.255 { 0xca04be00, 0xca050fff, REGISTRY_APNIC }, // 202.4.190.0 - 202.5.15.255 { 0xca052000, 0xca05cfff, REGISTRY_APNIC }, // 202.5.32.0 - 202.5.207.255 { 0xca05e000, 0xca064fff, REGISTRY_APNIC }, // 202.5.224.0 - 202.6.79.255 { 0xca065100, 0xca0675ff, REGISTRY_APNIC }, // 202.6.81.0 - 202.6.117.255 { 0xca067700, 0xca0733ff, REGISTRY_APNIC }, // 202.6.119.0 - 202.7.51.255 { 0xca073a00, 0xca073aff, REGISTRY_APNIC }, // 202.7.58.0 - 202.7.58.255 { 0xca073c00, 0xca0818ff, REGISTRY_APNIC }, // 202.7.60.0 - 202.8.24.255 { 0xca081a00, 0xca085fff, REGISTRY_APNIC }, // 202.8.26.0 - 202.8.95.255 { 0xca088000, 0xca0936ff, REGISTRY_APNIC }, // 202.8.128.0 - 202.9.54.255 { 0xca093800, 0xca093bff, REGISTRY_APNIC }, // 202.9.56.0 - 202.9.59.255 { 0xca094100, 0xca0943ff, REGISTRY_APNIC }, // 202.9.65.0 - 202.9.67.255 { 0xca094500, 0xca0958ff, REGISTRY_APNIC }, // 202.9.69.0 - 202.9.88.255 { 0xca095b00, 0xca096fff, REGISTRY_APNIC }, // 202.9.91.0 - 202.9.111.255 { 0xca098000, 0xca0a6fff, REGISTRY_APNIC }, // 202.9.128.0 - 202.10.111.255 { 0xca0a8000, 0xca0c4bff, REGISTRY_APNIC }, // 202.10.128.0 - 202.12.75.255 { 0xca0c5000, 0xca0c79ff, REGISTRY_APNIC }, // 202.12.80.0 - 202.12.121.255 { 0xca0c7d00, 0xca0cf2ff, REGISTRY_APNIC }, // 202.12.125.0 - 202.12.242.255 { 0xca0cf400, 0xca0e03ff, REGISTRY_APNIC }, // 202.12.244.0 - 202.14.3.255 { 0xca0e0800, 0xca0e77ff, REGISTRY_APNIC }, // 202.14.8.0 - 202.14.119.255 { 0xca0e7c00, 0xca0eabff, REGISTRY_APNIC }, // 202.14.124.0 - 202.14.171.255 { 0xca0eb000, 0xca0ebaff, REGISTRY_APNIC }, // 202.14.176.0 - 202.14.186.255 { 0xca0ebc00, 0xca0edfff, REGISTRY_APNIC }, // 202.14.188.0 - 202.14.223.255 { 0xca0ee100, 0xca1443ff, REGISTRY_APNIC }, // 202.14.225.0 - 202.20.67.255 { 0xca144500, 0xca147dff, REGISTRY_APNIC }, // 202.20.69.0 - 202.20.125.255 { 0xca147f00, 0xca1527ff, REGISTRY_APNIC }, // 202.20.127.0 - 202.21.39.255 { 0xca154000, 0xca1b0bff, REGISTRY_APNIC }, // 202.21.64.0 - 202.27.11.255 { 0xca1b0d00, 0xca1b0dff, REGISTRY_APNIC }, // 202.27.13.0 - 202.27.13.255 { 0xca1b0f00, 0xca1be4ff, REGISTRY_APNIC }, // 202.27.15.0 - 202.27.228.255 { 0xca1be800, 0xca2479ff, REGISTRY_APNIC }, // 202.27.232.0 - 202.36.121.255 { 0xca247c00, 0xca24e1ff, REGISTRY_APNIC }, // 202.36.124.0 - 202.36.225.255 { 0xca24e300, 0xca2533ff, REGISTRY_APNIC }, // 202.36.227.0 - 202.37.51.255 { 0xca253600, 0xca29c3ff, REGISTRY_APNIC }, // 202.37.54.0 - 202.41.195.255 { 0xca29cc00, 0xca2b5aff, REGISTRY_APNIC }, // 202.41.204.0 - 202.43.90.255 { 0xca2b5c00, 0xca2b77ff, REGISTRY_APNIC }, // 202.43.92.0 - 202.43.119.255 { 0xca2b8000, 0xca2c2fff, REGISTRY_APNIC }, // 202.43.128.0 - 202.44.47.255 { 0xca2c3400, 0xca2c60ff, REGISTRY_APNIC }, // 202.44.52.0 - 202.44.96.255 { 0xca2c6200, 0xca2d09ff, REGISTRY_APNIC }, // 202.44.98.0 - 202.45.9.255 { 0xca2d0c00, 0xca2f5fff, REGISTRY_APNIC }, // 202.45.12.0 - 202.47.95.255 { 0xca2f7000, 0xca2f7bff, REGISTRY_APNIC }, // 202.47.112.0 - 202.47.123.255 { 0xca2f7d00, 0xca3120ff, REGISTRY_APNIC }, // 202.47.125.0 - 202.49.32.255 { 0xca312200, 0xca33f7ff, REGISTRY_APNIC }, // 202.49.34.0 - 202.51.247.255 { 0xca33fc00, 0xca3420ff, REGISTRY_APNIC }, // 202.51.252.0 - 202.52.32.255 { 0xca342300, 0xca342eff, REGISTRY_APNIC }, // 202.52.35.0 - 202.52.46.255 { 0xca343000, 0xca348eff, REGISTRY_APNIC }, // 202.52.48.0 - 202.52.142.255 { 0xca349100, 0xca349cff, REGISTRY_APNIC }, // 202.52.145.0 - 202.52.156.255 { 0xca349e00, 0xca3585ff, REGISTRY_APNIC }, // 202.52.158.0 - 202.53.133.255 { 0xca358d00, 0xca358eff, REGISTRY_APNIC }, // 202.53.141.0 - 202.53.142.255 { 0xca35a000, 0xca39bfff, REGISTRY_APNIC }, // 202.53.160.0 - 202.57.191.255 { 0xca39dc00, 0xca3a67ff, REGISTRY_APNIC }, // 202.57.220.0 - 202.58.103.255 { 0xca3a7400, 0xca3ae8ff, REGISTRY_APNIC }, // 202.58.116.0 - 202.58.232.255 { 0xca3aea00, 0xca3af7ff, REGISTRY_APNIC }, // 202.58.234.0 - 202.58.247.255 { 0xca3b0000, 0xca3b00ff, REGISTRY_APNIC }, // 202.59.0.0 - 202.59.0.255 { 0xca3b0200, 0xca3befff, REGISTRY_APNIC }, // 202.59.2.0 - 202.59.239.255 { 0xca3bf100, 0xca3d3fff, REGISTRY_APNIC }, // 202.59.241.0 - 202.61.63.255 { 0xca3d6000, 0xca3d77ff, REGISTRY_APNIC }, // 202.61.96.0 - 202.61.119.255 { 0xca3d7a00, 0xca3d7aff, REGISTRY_APNIC }, // 202.61.122.0 - 202.61.122.255 { 0xca3d7c00, 0xca3d7eff, REGISTRY_APNIC }, // 202.61.124.0 - 202.61.126.255 { 0xca3d8000, 0xca3f4fff, REGISTRY_APNIC }, // 202.61.128.0 - 202.63.79.255 { 0xca3f5100, 0xca3ffcff, REGISTRY_APNIC }, // 202.63.81.0 - 202.63.252.255 { 0xca3ffe00, 0xca415fff, REGISTRY_APNIC }, // 202.63.254.0 - 202.65.95.255 { 0xca417000, 0xca429fff, REGISTRY_APNIC }, // 202.65.112.0 - 202.66.159.255 { 0xca42c000, 0xca471fff, REGISTRY_APNIC }, // 202.66.192.0 - 202.71.31.255 { 0xca473000, 0xca486fff, REGISTRY_APNIC }, // 202.71.48.0 - 202.72.111.255 { 0xca488000, 0xca48dfff, REGISTRY_APNIC }, // 202.72.128.0 - 202.72.223.255 { 0xca48e800, 0xca49efff, REGISTRY_APNIC }, // 202.72.232.0 - 202.73.239.255 { 0xca4a0000, 0xca4a23ff, REGISTRY_APNIC }, // 202.74.0.0 - 202.74.35.255 { 0xca4a2500, 0xca4a29ff, REGISTRY_APNIC }, // 202.74.37.0 - 202.74.41.255 { 0xca4a2b00, 0xca4a33ff, REGISTRY_APNIC }, // 202.74.43.0 - 202.74.51.255 { 0xca4a3500, 0xca4a36ff, REGISTRY_APNIC }, // 202.74.53.0 - 202.74.54.255 { 0xca4a3800, 0xca4ae7ff, REGISTRY_APNIC }, // 202.74.56.0 - 202.74.231.255 { 0xca4af000, 0xca51afff, REGISTRY_APNIC }, // 202.74.240.0 - 202.81.175.255 { 0xca51c000, 0xca5377ff, REGISTRY_APNIC }, // 202.81.192.0 - 202.83.119.255 { 0xca538000, 0xca5413ff, REGISTRY_APNIC }, // 202.83.128.0 - 202.84.19.255 { 0xca541700, 0xca581fff, REGISTRY_APNIC }, // 202.84.23.0 - 202.88.31.255 { 0xca583000, 0xca595fff, REGISTRY_APNIC }, // 202.88.48.0 - 202.89.95.255 { 0xca596400, 0xca596bff, REGISTRY_APNIC }, // 202.89.100.0 - 202.89.107.255 { 0xca597000, 0xca5976ff, REGISTRY_APNIC }, // 202.89.112.0 - 202.89.118.255 { 0xca597800, 0xca5a0fff, REGISTRY_APNIC }, // 202.89.120.0 - 202.90.15.255 { 0xca5a2000, 0xca5a24ff, REGISTRY_APNIC }, // 202.90.32.0 - 202.90.36.255 { 0xca5a2600, 0xca5a5fff, REGISTRY_APNIC }, // 202.90.38.0 - 202.90.95.255 { 0xca5a7000, 0xca5ac0ff, REGISTRY_APNIC }, // 202.90.112.0 - 202.90.192.255 { 0xca5ac200, 0xca5accff, REGISTRY_APNIC }, // 202.90.194.0 - 202.90.204.255 { 0xca5ace00, 0xca5afbff, REGISTRY_APNIC }, // 202.90.206.0 - 202.90.251.255 { 0xca5b0000, 0xca5dffff, REGISTRY_APNIC }, // 202.91.0.0 - 202.93.255.255 { 0xca5e2000, 0xca5e49ff, REGISTRY_APNIC }, // 202.94.32.0 - 202.94.73.255 { 0xca5e4b00, 0xca5e50ff, REGISTRY_APNIC }, // 202.94.75.0 - 202.94.80.255 { 0xca5e5200, 0xca5e59ff, REGISTRY_APNIC }, // 202.94.82.0 - 202.94.89.255 { 0xca5e5c00, 0xca7a85ff, REGISTRY_APNIC }, // 202.94.92.0 - 202.122.133.255 { 0xca7a8800, 0xca7affff, REGISTRY_APNIC }, // 202.122.136.0 - 202.122.255.255 { 0xca7b0000, 0xca7b1fff, REGISTRY_AFRINIC }, // 202.123.0.0 - 202.123.31.255 { 0xca7b2000, 0xca7b6fff, REGISTRY_APNIC }, // 202.123.32.0 - 202.123.111.255 { 0xca7b8000, 0xca7d6cff, REGISTRY_APNIC }, // 202.123.128.0 - 202.125.108.255 { 0xca7d6e00, 0xca81cfff, REGISTRY_APNIC }, // 202.125.110.0 - 202.129.207.255 { 0xca81d100, 0xca81d1ff, REGISTRY_APNIC }, // 202.129.209.0 - 202.129.209.255 { 0xca81d400, 0xca8226ff, REGISTRY_APNIC }, // 202.129.212.0 - 202.130.38.255 { 0xca822800, 0xca853fff, REGISTRY_APNIC }, // 202.130.40.0 - 202.133.63.255 { 0xca856000, 0xca85bfff, REGISTRY_APNIC }, // 202.133.96.0 - 202.133.191.255 { 0xca85e000, 0xca86cfff, REGISTRY_APNIC }, // 202.133.224.0 - 202.134.207.255 { 0xca86e000, 0xca883fff, REGISTRY_APNIC }, // 202.134.224.0 - 202.136.63.255 { 0xca886000, 0xca88f7ff, REGISTRY_APNIC }, // 202.136.96.0 - 202.136.247.255 { 0xca88fc00, 0xca8c7fff, REGISTRY_APNIC }, // 202.136.252.0 - 202.140.127.255 { 0xca8c8800, 0xca8c8bff, REGISTRY_APNIC }, // 202.140.136.0 - 202.140.139.255 { 0xca8ca000, 0xca8f5fff, REGISTRY_APNIC }, // 202.140.160.0 - 202.143.95.255 { 0xca8f7000, 0xca92b9ff, REGISTRY_APNIC }, // 202.143.112.0 - 202.146.185.255 { 0xca92bb00, 0xca942fff, REGISTRY_APNIC }, // 202.146.187.0 - 202.148.47.255 { 0xca944000, 0xca9720ff, REGISTRY_APNIC }, // 202.148.64.0 - 202.151.32.255 { 0xca972200, 0xca9903ff, REGISTRY_APNIC }, // 202.151.34.0 - 202.153.3.255 { 0xca990600, 0xca9906ff, REGISTRY_APNIC }, // 202.153.6.0 - 202.153.6.255 { 0xca990800, 0xca9ef1ff, REGISTRY_APNIC }, // 202.153.8.0 - 202.158.241.255 { 0xca9ef300, 0xca9ef7ff, REGISTRY_APNIC }, // 202.158.243.0 - 202.158.247.255 { 0xca9efc00, 0xcaa07fff, REGISTRY_APNIC }, // 202.158.252.0 - 202.160.127.255 { 0xcaa0a000, 0xcaa577ff, REGISTRY_APNIC }, // 202.160.160.0 - 202.165.119.255 { 0xcaa58000, 0xcaa84fff, REGISTRY_APNIC }, // 202.165.128.0 - 202.168.79.255 { 0xcaa85800, 0xcaa87fff, REGISTRY_APNIC }, // 202.168.88.0 - 202.168.127.255 { 0xcaa8a000, 0xcaaac7ff, REGISTRY_APNIC }, // 202.168.160.0 - 202.170.199.255 { 0xcaaad000, 0xcaabe7ff, REGISTRY_APNIC }, // 202.170.208.0 - 202.171.231.255 { 0xcaabe900, 0xcaac06ff, REGISTRY_APNIC }, // 202.171.233.0 - 202.172.6.255 { 0xcaac0800, 0xcaad05ff, REGISTRY_APNIC }, // 202.172.8.0 - 202.173.5.255 { 0xcaad0700, 0xcaad6fff, REGISTRY_APNIC }, // 202.173.7.0 - 202.173.111.255 { 0xcaad8000, 0xcaae7bff, REGISTRY_APNIC }, // 202.173.128.0 - 202.174.123.255 { 0xcaae8000, 0xcaafffff, REGISTRY_APNIC }, // 202.174.128.0 - 202.175.255.255 { 0xcab00800, 0xcab37fff, REGISTRY_APNIC }, // 202.176.8.0 - 202.179.127.255 { 0xcab3b000, 0xcab4ffff, REGISTRY_APNIC }, // 202.179.176.0 - 202.180.255.255 { 0xcab52000, 0xcb0070ff, REGISTRY_APNIC }, // 202.181.32.0 - 203.0.112.255 { 0xcb007200, 0xcb0383ff, REGISTRY_APNIC }, // 203.0.114.0 - 203.3.131.255 { 0xcb038500, 0xcb06cfff, REGISTRY_APNIC }, // 203.3.133.0 - 203.6.207.255 { 0xcb06d800, 0xcb0b40ff, REGISTRY_APNIC }, // 203.6.216.0 - 203.11.64.255 { 0xcb0b4200, 0xcb0b5aff, REGISTRY_APNIC }, // 203.11.66.0 - 203.11.90.255 { 0xcb0b5c00, 0xcb0c55ff, REGISTRY_APNIC }, // 203.11.92.0 - 203.12.85.255 { 0xcb0c5700, 0xcb0de6ff, REGISTRY_APNIC }, // 203.12.87.0 - 203.13.230.255 { 0xcb0de800, 0xcb100aff, REGISTRY_APNIC }, // 203.13.232.0 - 203.16.10.255 { 0xcb100c00, 0xcb103eff, REGISTRY_APNIC }, // 203.16.12.0 - 203.16.62.255 { 0xcb104000, 0xcb11bcff, REGISTRY_APNIC }, // 203.16.64.0 - 203.17.188.255 { 0xcb11be00, 0xcb11f8ff, REGISTRY_APNIC }, // 203.17.190.0 - 203.17.248.255 { 0xcb11fa00, 0xcb126eff, REGISTRY_APNIC }, // 203.17.250.0 - 203.18.110.255 { 0xcb127000, 0xcb129bff, REGISTRY_APNIC }, // 203.18.112.0 - 203.18.155.255 { 0xcb12a000, 0xcb1300ff, REGISTRY_APNIC }, // 203.18.160.0 - 203.19.0.255 { 0xcb130200, 0xcb1392ff, REGISTRY_APNIC }, // 203.19.2.0 - 203.19.146.255 { 0xcb139400, 0xcb13efff, REGISTRY_APNIC }, // 203.19.148.0 - 203.19.239.255 { 0xcb13f100, 0xcb1429ff, REGISTRY_APNIC }, // 203.19.241.0 - 203.20.41.255 { 0xcb142b00, 0xcb142bff, REGISTRY_APNIC }, // 203.20.43.0 - 203.20.43.255 { 0xcb142d00, 0xcb143eff, REGISTRY_APNIC }, // 203.20.45.0 - 203.20.62.255 { 0xcb144000, 0xcb1448ff, REGISTRY_APNIC }, // 203.20.64.0 - 203.20.72.255 { 0xcb144a00, 0xcb166bff, REGISTRY_APNIC }, // 203.20.74.0 - 203.22.107.255 { 0xcb166e00, 0xcb1700ff, REGISTRY_APNIC }, // 203.22.110.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, 0xcb1b21ff, REGISTRY_APNIC }, // 203.25.162.0 - 203.27.33.255 { 0xcb1b2300, 0xcb1c8eff, REGISTRY_APNIC }, // 203.27.35.0 - 203.28.142.255 { 0xcb1c9000, 0xcb1cfbff, REGISTRY_APNIC }, // 203.28.144.0 - 203.28.251.255 { 0xcb1cfe00, 0xcb1e7eff, REGISTRY_APNIC }, // 203.28.254.0 - 203.30.126.255 { 0xcb1e8000, 0xcb1edcff, REGISTRY_APNIC }, // 203.30.128.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, 0xcb2251ff, REGISTRY_APNIC }, // 203.32.189.0 - 203.34.81.255 { 0xcb225300, 0xcb227cff, REGISTRY_APNIC }, // 203.34.83.0 - 203.34.124.255 { 0xcb227e00, 0xcb2299ff, REGISTRY_APNIC }, // 203.34.126.0 - 203.34.153.255 { 0xcb229b00, 0xcb22edff, REGISTRY_APNIC }, // 203.34.155.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, 0xcb38e6ff, REGISTRY_APNIC }, // 203.55.69.0 - 203.56.230.255 { 0xcb38e800, 0xcb4ccfff, REGISTRY_APNIC }, // 203.56.232.0 - 203.76.207.255 { 0xcb4d0000, 0xcb4e7fff, REGISTRY_APNIC }, // 203.77.0.0 - 203.78.127.255 { 0xcb4ea000, 0xcb5080ff, REGISTRY_APNIC }, // 203.78.160.0 - 203.80.128.255 { 0xcb508200, 0xcb51efff, REGISTRY_APNIC }, // 203.80.130.0 - 203.81.239.255 { 0xcb51f800, 0xcb5217ff, REGISTRY_APNIC }, // 203.81.248.0 - 203.82.23.255 { 0xcb522000, 0xcb526fff, REGISTRY_APNIC }, // 203.82.32.0 - 203.82.111.255 { 0xcb528000, 0xcb52dfff, REGISTRY_APNIC }, // 203.82.128.0 - 203.82.223.255 { 0xcb52f000, 0xcb5307ff, REGISTRY_APNIC }, // 203.82.240.0 - 203.83.7.255 { 0xcb531000, 0xcb56f9ff, REGISTRY_APNIC }, // 203.83.16.0 - 203.86.249.255 { 0xcb56fb00, 0xcb585fff, REGISTRY_APNIC }, // 203.86.251.0 - 203.88.95.255 { 0xcb587000, 0xcb5984ff, REGISTRY_APNIC }, // 203.88.112.0 - 203.89.132.255 { 0xcb598600, 0xcb598fff, REGISTRY_APNIC }, // 203.89.134.0 - 203.89.143.255 { 0xcb599100, 0xcb5a0bff, REGISTRY_APNIC }, // 203.89.145.0 - 203.90.11.255 { 0xcb5a1000, 0xcb5c05ff, REGISTRY_APNIC }, // 203.90.16.0 - 203.92.5.255 { 0xcb5c0700, 0xcb5fbfff, REGISTRY_APNIC }, // 203.92.7.0 - 203.95.191.255 { 0xcb5fe000, 0xcb638bff, REGISTRY_APNIC }, // 203.95.224.0 - 203.99.139.255 { 0xcb638e00, 0xcb6439ff, REGISTRY_APNIC }, // 203.99.142.0 - 203.100.57.255 { 0xcb643b00, 0xcb643bff, REGISTRY_APNIC }, // 203.100.59.0 - 203.100.59.255 { 0xcb643d00, 0xcb6ffbff, REGISTRY_APNIC }, // 203.100.61.0 - 203.111.251.255 { 0xcb700000, 0xcb7243ff, REGISTRY_APNIC }, // 203.112.0.0 - 203.114.67.255 { 0xcb726000, 0xcb7b37ff, REGISTRY_APNIC }, // 203.114.96.0 - 203.123.55.255 { 0xcb7b3b00, 0xcb86f7ff, REGISTRY_APNIC }, // 203.123.59.0 - 203.134.247.255 { 0xcb86fa00, 0xcb8ed9ff, REGISTRY_APNIC }, // 203.134.250.0 - 203.142.217.255 { 0xcb8edc00, 0xcb9457ff, REGISTRY_APNIC }, // 203.142.220.0 - 203.148.87.255 { 0xcb945c00, 0xcb990fff, REGISTRY_APNIC }, // 203.148.92.0 - 203.153.15.255 { 0xcb991800, 0xcb993bff, REGISTRY_APNIC }, // 203.153.24.0 - 203.153.59.255 { 0xcb994000, 0xcb99cfff, REGISTRY_APNIC }, // 203.153.64.0 - 203.153.207.255 { 0xcb99d200, 0xcba02fff, REGISTRY_APNIC }, // 203.153.210.0 - 203.160.47.255 { 0xcba03800, 0xcba083ff, REGISTRY_APNIC }, // 203.160.56.0 - 203.160.131.255 { 0xcba08800, 0xcba1b2ff, REGISTRY_APNIC }, // 203.160.136.0 - 203.161.178.255 { 0xcba1b400, 0xcba1b6ff, REGISTRY_APNIC }, // 203.161.180.0 - 203.161.182.255 { 0xcba1ba00, 0xcba707ff, REGISTRY_APNIC }, // 203.161.186.0 - 203.167.7.255 { 0xcba72000, 0xcbaa57ff, REGISTRY_APNIC }, // 203.167.32.0 - 203.170.87.255 { 0xcbaa5a00, 0xcbabcfff, REGISTRY_APNIC }, // 203.170.90.0 - 203.171.207.255 { 0xcbabd100, 0xcbae05ff, REGISTRY_APNIC }, // 203.171.209.0 - 203.174.5.255 { 0xcbae0700, 0xcbaf07ff, REGISTRY_APNIC }, // 203.174.7.0 - 203.175.7.255 { 0xcbaf1000, 0xcbaf5fff, REGISTRY_APNIC }, // 203.175.16.0 - 203.175.95.255 { 0xcbaf7000, 0xcbb07bff, REGISTRY_APNIC }, // 203.175.112.0 - 203.176.123.255 { 0xcbb08000, 0xcbb9bbff, REGISTRY_APNIC }, // 203.176.128.0 - 203.185.187.255 { 0xcbb9be00, 0xcbbd73ff, REGISTRY_APNIC }, // 203.185.190.0 - 203.189.115.255 { 0xcbbd7800, 0xcbbde7ff, REGISTRY_APNIC }, // 203.189.120.0 - 203.189.231.255 { 0xcbbe0000, 0xcbbe1fff, REGISTRY_APNIC }, // 203.190.0.0 - 203.190.31.255 { 0xcbbe2400, 0xcbbed7ff, REGISTRY_APNIC }, // 203.190.36.0 - 203.190.215.255 { 0xcbbed900, 0xcbbf01ff, REGISTRY_APNIC }, // 203.190.217.0 - 203.191.1.255 { 0xcbbf0300, 0xcbbf04ff, REGISTRY_APNIC }, // 203.191.3.0 - 203.191.4.255 { 0xcbbf0600, 0xcbbf06ff, REGISTRY_APNIC }, // 203.191.6.0 - 203.191.6.255 { 0xcbbf0800, 0xcbbf37ff, REGISTRY_APNIC }, // 203.191.8.0 - 203.191.55.255 { 0xcbbf4000, 0xcbbf84ff, REGISTRY_APNIC }, // 203.191.64.0 - 203.191.132.255 { 0xcbbf8600, 0xcbc417ff, REGISTRY_APNIC }, // 203.191.134.0 - 203.196.23.255 { 0xcbc42000, 0xcbc9b4ff, REGISTRY_APNIC }, // 203.196.32.0 - 203.201.180.255 { 0xcbc9b700, 0xcbcae7ff, REGISTRY_APNIC }, // 203.201.183.0 - 203.202.231.255 { 0xcbcaea00, 0xcbcf3eff, REGISTRY_APNIC }, // 203.202.234.0 - 203.207.62.255 { 0xcbcf4000, 0xcbd41bff, REGISTRY_APNIC }, // 203.207.64.0 - 203.212.27.255 { 0xcbd42000, 0xcbd997ff, REGISTRY_APNIC }, // 203.212.32.0 - 203.217.151.255 { 0xcbd99c00, 0xcbd9a1ff, REGISTRY_APNIC }, // 203.217.156.0 - 203.217.161.255 { 0xcbd9a800, 0xcbffffff, REGISTRY_APNIC }, // 203.217.168.0 - 203.255.255.255 { 0xcc000000, 0xcc08cbff, REGISTRY_ARIN }, // 204.0.0.0 - 204.8.203.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, 0xcc301fff, REGISTRY_ARIN }, // 204.12.144.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, 0xcc91c8ff, REGISTRY_ARIN }, // 204.126.142.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, 0xcceb1fff, REGISTRY_ARIN }, // 204.225.44.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, 0xcdd352ff, REGISTRY_ARIN }, // 205.166.252.0 - 205.211.82.255 { 0xcdd35400, 0xce83bfff, REGISTRY_ARIN }, // 205.211.84.0 - 206.131.191.255 { 0xce83c000, 0xce83cfff, REGISTRY_APNIC }, // 206.131.192.0 - 206.131.207.255 { 0xce83d000, 0xcedd4fff, REGISTRY_ARIN }, // 206.131.208.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, 0xcf736fff, REGISTRY_ARIN }, // 206.224.64.0 - 207.115.111.255 { 0xcf738000, 0xcfbdb7ff, REGISTRY_ARIN }, // 207.115.128.0 - 207.189.183.255 { 0xcfbdb800, 0xcfbdbbff, REGISTRY_APNIC }, // 207.189.184.0 - 207.189.187.255 { 0xcfbdbc00, 0xcfbf9fff, REGISTRY_ARIN }, // 207.189.188.0 - 207.191.159.255 { 0xcfbfb000, 0xcff7ffff, REGISTRY_ARIN }, // 207.191.176.0 - 207.247.255.255 { 0xcff80000, 0xcff84fff, REGISTRY_LACNIC }, // 207.248.0.0 - 207.248.79.255 { 0xcff85200, 0xcff855ff, REGISTRY_LACNIC }, // 207.248.82.0 - 207.248.85.255 { 0xcff85800, 0xcff865ff, REGISTRY_LACNIC }, // 207.248.88.0 - 207.248.101.255 { 0xcff86800, 0xcff9ffff, REGISTRY_LACNIC }, // 207.248.104.0 - 207.249.255.255 { 0xcffa0000, 0xd049efff, REGISTRY_ARIN }, // 207.250.0.0 - 208.73.239.255 { 0xd049f400, 0xd0559bff, REGISTRY_ARIN }, // 208.73.244.0 - 208.85.155.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, 0xd12cffff, REGISTRY_ARIN }, // 209.14.0.0 - 209.44.255.255 { 0xd12d0000, 0xd12d7fff, REGISTRY_LACNIC }, // 209.45.0.0 - 209.45.127.255 { 0xd12d8000, 0xd15ebfff, REGISTRY_ARIN }, // 209.45.128.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, 0xd16b7fff, REGISTRY_ARIN }, // 209.99.240.0 - 209.107.127.255 { 0xd16bc000, 0xd1caffff, REGISTRY_ARIN }, // 209.107.192.0 - 209.202.255.255 { 0xd1cb0000, 0xd1cb3fff, REGISTRY_AFRINIC }, // 209.203.0.0 - 209.203.63.255 { 0xd1cb4000, 0xd1d45fff, REGISTRY_ARIN }, // 209.203.64.0 - 209.212.95.255 { 0xd1d46000, 0xd1d47fff, REGISTRY_AFRINIC }, // 209.212.96.0 - 209.212.127.255 { 0xd1d48000, 0xd1ffffff, REGISTRY_ARIN }, // 209.212.128.0 - 209.255.255.255 { 0xd2000000, 0xd20737ff, REGISTRY_APNIC }, // 210.0.0.0 - 210.7.55.255 { 0xd2074000, 0xd2103fff, REGISTRY_APNIC }, // 210.7.64.0 - 210.16.63.255 { 0xd2108000, 0xd24f7fff, REGISTRY_APNIC }, // 210.16.128.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, 0xd40cdfff, REGISTRY_RIPENCC }, // 212.0.160.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, 0xd450bfff, REGISTRY_RIPENCC }, // 212.60.96.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, 0xd505e7ff, REGISTRY_RIPENCC }, // 213.5.20.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, 0xd5933fff, REGISTRY_RIPENCC }, // 213.136.128.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, 0xd5a29fff, REGISTRY_RIPENCC }, // 213.158.192.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, 0xd5c11fff, REGISTRY_RIPENCC }, // 213.184.96.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, 0xd5f6ffff, REGISTRY_RIPENCC }, // 213.226.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 { 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, 0xd862cfff, REGISTRY_ARIN }, // 216.8.32.0 - 216.98.207.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, 0xd897bfff, REGISTRY_ARIN }, // 216.99.205.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, 0xd8e67fff, REGISTRY_ARIN }, // 216.155.96.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, 0xd8f47fff, REGISTRY_ARIN }, // 216.241.32.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 { 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, 0xd933ffff, REGISTRY_RIPENCC }, // 217.29.224.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, 0xd9947fff, REGISTRY_RIPENCC }, // 217.145.240.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, 0xd9c78fff, REGISTRY_RIPENCC }, // 217.197.96.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, 0xda6443ff, REGISTRY_APNIC }, // 218.100.52.0 - 218.100.67.255 { 0xda644500, 0xda6445ff, REGISTRY_APNIC }, // 218.100.69.0 - 218.100.69.255 { 0xda644700, 0xda6455ff, REGISTRY_APNIC }, // 218.100.71.0 - 218.100.85.255 { 0xda645700, 0xdab9f7ff, REGISTRY_APNIC }, // 218.100.87.0 - 218.185.247.255 { 0xdaba0000, 0xdb5a3fff, REGISTRY_APNIC }, // 218.186.0.0 - 219.90.63.255 { 0xdb5a5000, 0xdc9e7fff, REGISTRY_APNIC }, // 219.90.80.0 - 220.158.127.255 { 0xdc9f0000, 0xdcf77fff, REGISTRY_APNIC }, // 220.159.0.0 - 220.247.127.255 { 0xdcf78800, 0xdf19fbff, REGISTRY_APNIC }, // 220.247.136.0 - 223.25.251.255 { 0xdf1a0000, 0xdf1dcfff, REGISTRY_APNIC }, // 223.26.0.0 - 223.29.207.255 { 0xdf1de000, 0xdf1dfbff, REGISTRY_APNIC }, // 223.29.224.0 - 223.29.251.255 { 0xdf1e0000, 0xdf8207ff, REGISTRY_APNIC }, // 223.30.0.0 - 223.130.7.255 { 0xdf820c00, 0xdf820fff, REGISTRY_APNIC }, // 223.130.12.0 - 223.130.15.255 { 0xdf821400, 0xdf821bff, REGISTRY_APNIC }, // 223.130.20.0 - 223.130.27.255 { 0xdf822000, 0xdffff7ff, REGISTRY_APNIC }, // 223.130.32.0 - 223.255.247.255 { 0xdffffc00, 0xdfffffff, REGISTRY_APNIC }, // 223.255.252.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 }; ipv6calc-0.99.1/databases/ipv4-assignment/README0000664000175100017510000000016712303200714020200 0ustar peterpeter$Id: README,v 1.7 2014/02/25 20:49:16 ds6peter Exp $ Use "make update" to create header file from registry data files ipv6calc-0.99.1/databases/as-assignment/0000775000175100017510000000000012572537444017062 5ustar peterpeteripv6calc-0.99.1/databases/as-assignment/Makefile0000664000175100017510000000112212227003371020476 0ustar peterpeter# Project : ipv6calc/databases/cc-assignment # File : Makefile # Version : $Id: Makefile,v 1.1 2013/10/14 15:00:09 ds6peter Exp $ # 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-0.99.1/databases/as-assignment/dbasn_assignment.h0000664000175100017510000034025612572502575022561 0ustar peterpeter /* * Project : ipv6calc * File : dbasn_assignment.h * Version : $Id: dbasn_assignment.h,v 1.23 2015/09/05 06:02:37 ds6peter Exp $ * Generated : Sat Sep 5 07:10:00 2015 * 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/20150810"; 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 }, { 131072, 132095, REGISTRY_APNIC }, { 132096, 133119, REGISTRY_APNIC }, { 133120, 133631, REGISTRY_APNIC }, { 133632, 134556, REGISTRY_APNIC }, { 134557, 135580, 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 }, { 262144, 263167, REGISTRY_LACNIC }, { 263168, 263679, REGISTRY_LACNIC }, { 263680, 264604, REGISTRY_LACNIC }, { 264605, 265628, REGISTRY_LACNIC }, { 327680, 328703, REGISTRY_AFRINIC }, { 393216, 394239, REGISTRY_ARIN }, { 394240, 395164, REGISTRY_ARIN }, }; ipv6calc-0.99.1/databases/as-assignment/create-asn-registry-list.pl0000775000175100017510000000617112410504754024255 0ustar peterpeter#!/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-0.99.1/databases/as-assignment/check-run-create.sh0000775000175100017510000000224412470177530022534 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/cc-assignment # File : check-run-create.sh # Version : $Id: check-run-create.sh,v 1.2 2015/02/15 20:19:36 ds6peter Exp $ # 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-0.99.1/databases/registries/0000775000175100017510000000000012572537445016472 5ustar peterpeteripv6calc-0.99.1/databases/registries/Makefile0000664000175100017510000000254412470177531020130 0ustar peterpeter# Project : ipv6calc/databases/registries # File : Makefile # Version : $Id: Makefile,v 1.8 2015/02/15 20:19:37 ds6peter Exp $ # 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" cd iana && rm -f ipv6-unicast-address-assignments.xml ipv4-address-space.xml as-numbers.txt cd ripencc && rm -f delegated-ripencc-* cd apnic && rm -f delegated-apnic-* cd arin && rm -f delegated-arin-* cd lacnic && rm -f delegated-lacnic-* cd afrinic && rm -f delegated-afrinic-* autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-0.99.1/databases/registries/README0000664000175100017510000000162012302445420017327 0ustar peterpeter$Id: README,v 1.2 2014/02/23 19:25:04 ds6peter Exp $ 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 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-0.99.1/databases/cc-assignment/0000775000175100017510000000000012572537444017044 5ustar peterpeteripv6calc-0.99.1/databases/cc-assignment/Makefile0000664000175100017510000000121612226544026020472 0ustar peterpeter# Project : ipv6calc/databases/cc-assignment # File : Makefile # Version : $Id: Makefile,v 1.1 2013/10/13 16:19:34 ds6peter Exp $ # 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-0.99.1/databases/cc-assignment/create-cc-to-registry-list.pl0000775000175100017510000001025612410504754024462 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc/databases/cc-assignment # File : create-cc-to-registry-list.pl # Version : $Id: create-cc-to-registry-list.pl,v 1.5 2014/09/24 09:07:56 ds6peter Exp $ # Copyright : 2013-2014 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-0.99.1/databases/cc-assignment/db_cc_reg_assignment.h0000664000175100017510000013144412572502575023340 0ustar peterpeter /* * Project : ipv6calc * File : db_cc_reg_assignment.h * Version : $Id: db_cc_reg_assignment.h,v 1.23 2015/09/05 06:02:37 ds6peter Exp $ * Generated : Sat Sep 5 07:10:02 2015 * 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/20150904 APNIC/20150904 ARIN/20150904 LACNIC/20150904 RIPENCC/20150904"; 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 }, { "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_UNKNOWN }, // 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-0.99.1/databases/cc-assignment/check-run-create.sh0000775000175100017510000000225212470177531022516 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/cc-assignment # File : check-run-create.sh # Version : $Id: check-run-create.sh,v 1.2 2015/02/15 20:19:37 ds6peter Exp $ # 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-0.99.1/databases/ieee-oui/0000775000175100017510000000000012572537445016013 5ustar peterpeteripv6calc-0.99.1/databases/ieee-oui/dbieee_oui.h0000664000175100017510000453464512572506324020272 0ustar peterpeter/* * Project : ipv6calc * File : dbieee_oui.h * Version : $Id: dbieee_oui.h,v 1.100 2015/09/05 06:33:56 ds6peter Exp $ * Generated : Sat Sep 5 06:59:53 2015 * Data copyright: IEEE * * Information: * Additional header file for libieee.c */ /*@unused@*/ static const char* libieee_oui_status __attribute__ ((__unused__)) = "OUI/20150905"; static const s_ieee_oui libieee_oui[] = { { 0x0012F2, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x001BED, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x002438, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x84742A, "zte corporation", "ZTE" }, { 0xBC3AEA, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xE8BBA8, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x8C0EE3, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 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" }, { 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" }, { 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" }, { 0xB0ADAA, "Avaya Inc", "AVAYA" }, { 0x283152, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDCD2FC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x0012D2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x080028, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 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" }, { 0xF4B7E2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x083E8E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x485AB6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xCCA223, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE8088B, "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" }, { 0x902106, "BSkyB Ltd", "BSKYB" }, { 0x7C4CA5, "BSkyB Ltd", "BSKYB" }, { 0x681AB2, "zte corporation", "ZTE" }, { 0x001C25, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0016CF, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x4437E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x10CDAE, "Avaya Inc", "AVAYA" }, { 0x50CD22, "Avaya Inc", "AVAYA" }, { 0xFCA841, "Avaya Inc", "AVAYA" }, { 0x3CB15B, "Avaya Inc", "AVAYA" }, { 0xC8F406, "Avaya Inc", "AVAYA" }, { 0x2CF4C5, "Avaya Inc", "AVAYA" }, { 0x7038EE, "Avaya Inc", "AVAYA" }, { 0x60E701, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x8038BC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x6CECEB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x84EB18, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA0F6FD, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x209148, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD0B5C2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF8A45F, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x8CBEBE, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x640980, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x98FAE3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x185936, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x9C99A0, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x0003DD, "Comark Interactive Solutions", "COMARK-INTERACTIVE-SOLUTIONS" }, { 0x00107B, "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" }, { 0x005094, "Pace plc", "PACE-PLC" }, { 0xD0E54D, "Pace plc", "PACE-PLC" }, { 0xFC8E7E, "Pace plc", "PACE-PLC" }, { 0xB4F2E8, "Pace plc", "PACE-PLC" }, { 0x7085C6, "Pace plc", "PACE-PLC" }, { 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" }, { 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" }, { 0x0022CE, "Cisco SPVTG", "CISCO-SPVTG" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0xF02929, "Cisco Systems, Inc", "CISCO" }, { 0x00906D, "Cisco Systems, Inc", "CISCO" }, { 0x0090BF, "Cisco Systems, Inc", "CISCO" }, { 0x005080, "Cisco Systems, Inc", "CISCO" }, { 0x0090F2, "Cisco Systems, Inc", "CISCO" }, { 0x00173B, "Cisco Systems, Inc", "CISCO" }, { 0xD4F513, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 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" }, { 0xCC79CF, "Shenzhen RF-LINK Elec&Technology Co.Ltd", "SHENZHEN-RF-LINK-ELEC" }, { 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" }, { 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" }, { 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" }, { 0x68D93C, "Apple, Inc.", "APPLE" }, { 0x2CF0EE, "Apple, Inc.", "APPLE" }, { 0x60FEC5, "Apple, Inc.", "APPLE" }, { 0x00A040, "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" }, { 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" }, { 0x44D884, "Apple, Inc.", "APPLE" }, { 0xEC852F, "Apple, Inc.", "APPLE" }, { 0x286ABA, "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" }, { 0xA8474A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC4ADF1, "GOPEACE Inc.", "GOPEACE" }, { 0x58F496, "Source Chain", "SOURCE-CHAIN" }, { 0x80B709, "Viptela, Inc", "VIPTELA" }, { 0x0C1A10, "Acoustic Stream", "ACOUSTIC-STREAM" }, { 0xE4A387, "Control Solutions LLC", "CONTROL-SOLUTIONS-LLC" }, { 0xF4428F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD848EE, "Hangzhou Xueji Technology Co., Ltd.", "HANGZHOU-XUEJI" }, { 0x28FAA0, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xEC9BF3, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 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" }, { 0x88947E, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x88C242, "Poynt Co.", "POYNT" }, { 0xE8343E, "Beijing Infosec Technologies Co., LTD.", "BEIJING-INFOSEC-TECHNOLOGIES" }, { 0x088C2C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xDC82F6, "iPort", "IPORT" }, { 0xC49E41, "G24 Power Limited", "G24-POWER" }, { 0xE458B8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD03E5C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x94B10A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x141357, "ATP Electronics, Inc.", "ATP-ELECTRONICS" }, { 0xF44B2A, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x149182, "Belkin International Inc.", "BELKIN" }, { 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" }, { 0xFCC233, "Private", "PRIVATE" }, { 0x245BF0, "Liteon, Inc.", "LITEON" }, { 0xD445E8, "Jiangxi Hongpai Technology Co., Ltd.", "JIANGXI-HONGPAI" }, { 0x382DE8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x847973, "Shanghai Baud Data Communication Co.,Ltd.", "SHANGHAI-BAUD-DATA-COMMUNICATION" }, { 0xD087E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x205531, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x906F18, "Private", "PRIVATE" }, { 0xFC528D, "Technicolor CH USA Inc.", "TECHNICOLOR-CH-USA" }, { 0xC49FF3, "Mciao Technologies, Inc.", "MCIAO-TECHNOLOGIES" }, { 0x80739F, "KYOCERA Corporation", "KYOCERA" }, { 0x30E090, "Linctronix Ltd,", "LINCTRONIX" }, { 0x70BF3E, "Charles River Laboratories", "CHARLES-RIVER-LABORATORIES" }, { 0x645D92, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0xA8C87F, "Roqos, Inc.", "ROQOS" }, { 0xC025A2, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x7853F2, "ROXTON Ltd.", "ROXTON" }, { 0xC01173, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCE63F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB857D8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x384C90, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x080A4E, "Planet Bingo — 3rd Rock GamingÂ", "PLANET-BINGOÂ-—-3RD-ROCK-GAMINGÂ" }, { 0x3C8CF8, "TRENDnet, Inc.", "TRENDNET" }, { 0x78D6B2, "Toshiba", "TOSHIBA" }, { 0x3CA348, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xC04A09, "Zhejiang Everbright Communication Equip. Co,. Ltd", "ZHEJIANG-EVERBRIGHT-COMMUNICATION-EQUIP" }, { 0xF00D5C, "JinQianMao Technology Co.,Ltd.", "JINQIANMAO" }, { 0x2C081C, "OVH", "OVH" }, { 0xC8A9FC, "Goyoo Networks Inc.", "GOYOO-NETWORKS" }, { 0x1C497B, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x2CCF58, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x54FF82, "Davit Solution co.", "DAVIT-SOLUTION" }, { 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" }, { 0x441CA8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC4047B, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0xACBC32, "Apple, Inc.", "APPLE" }, { 0x94BBAE, "Husqvarna AB", "HUSQVARNA-AB" }, { 0xAC8995, "AzureWave Technology Inc.", "AZUREWAVE" }, { 0xF898B9, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD40AA9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF895C7, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0x3C3178, "Qolsys Inc.", "QOLSYS" }, { 0xF4573E, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x083A5C, "Junilab, Inc.", "JUNILAB" }, { 0xE8377A, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x4CAE31, "ShengHai Electronics (Shenzhen) Ltd", "SHENGHAI-ELECTRONICS-SHENZHEN" }, { 0xC80E14, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x88A2D7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD89A34, "Beijing SHENQI Technology Co., Ltd.", "BEIJING-SHENQI" }, { 0x5440AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1CADD1, "Bosung Electronics Co., Ltd.", "BOSUNG-ELECTRONICS" }, { 0x842E27, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50F0D3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84119E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x24E5AA, "Philips Oral Healthcare, Inc.", "PHILIPS-ORAL-HEALTHCARE" }, { 0x08ECA9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x082CB0, "Network Instruments", "NETWORK-INSTRUMENTS" }, { 0x1816C9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0AB54, "MITSUMI ELECTRIC CO.,LTD.", "MITSUMI-ELECTRIC" }, { 0x485073, "Microsoft Corporation", "MICROSOFT" }, { 0x3CA31A, "Oilfind International LLC", "OILFIND-LLC" }, { 0xE4F89C, "Intel Corporate", "INTEL-CORPORATE" }, { 0xACFD93, "Weifang GoerTek Electronics Co., Ltd.", "WEIFANG-GOERTEK-ELECTRONICS" }, { 0xA424DD, "Cambrionix Ltd", "CAMBRIONIX" }, { 0x5CDC96, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xAC562C, "LAVA INTERNATIONAL(H.K) LIMITED", "LAVA-H-K" }, { 0x88CBA5, "Suzhou Torchstar Intelligent Technology Co.,Ltd", "SUZHOU-TORCHSTAR-INTELLIGENT" }, { 0x4C3488, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA47B2C, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x184F32, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x20F41B, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x046169, "MEDIA GLOBAL LINKS CO., LTD.", "MEDIA-GLOBAL-LINKS" }, { 0x24693E, "innodisk Corporation", "INNODISK" }, { 0xE48D8C, "Routerboard.com", "ROUTERBOARD-COM" }, { 0xA434D9, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC0DC6A, "Qingdao Eastsoft Communication Technology Co.,LTD", "QINGDAO-EASTSOFT-COMMUNICATION" }, { 0x6459F8, "Vodafone Omnitel B.V.", "VODAFONE-OMNITEL" }, { 0x486EFB, "Davit System Technology Co., Ltd.", "DAVIT-SYSTEM" }, { 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" }, { 0xECEED8, "ZTLX Network Technology Co.,Ltd", "ZTLX-NETWORK" }, { 0xE04136, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x7CB25C, "Acacia Communications", "ACACIA-COMMUNICATION" }, { 0x78EB39, "Instituto Nacional de Tecnolog­a Industrial", "INSTITUTO-NACIONAL-DE-TECNOLOG­A-INDUSTRIAL" }, { 0x544E45, "Private", "PRIVATE" }, { 0x308D99, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x7CC95A, "EMC", "EMC" }, { 0x741F4A, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x3CCE15, "Mercedes-Benz USA, LLC", "MERCEDES-BENZ-USA-LLC" }, { 0x84DF19, "Chuango Security Technology Corporation", "CHUANGO-SECURITY" }, { 0x3C4711, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF0D657, "ECHOSENS", "ECHOSENS" }, { 0xFC8F90, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xACE010, "Liteon Technology Corporation", "LITEON" }, { 0xF85B9C, "SB SYSTEMS Co.,Ltd", "SB" }, { 0x7CA237, "King Slide Technology CO., LTD.", "KING-SLIDE" }, { 0xB0411D, "ITTIM Technologies", "ITTIM-TECHNOLOGIES" }, { 0xF8042E, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x244B03, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1CA532, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xF42981, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x643AB1, "SICHUAN TIANYI COMHEART TELECOMCO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOMCO" }, { 0x0C4885, "LG Electronics", "LG-ELECTRONICS" }, { 0x74E28C, "Microsoft Corporation", "MICROSOFT" }, { 0x94F19E, "HUIZHOU MAORONG INTELLIGENT TECHNOLOGY CO.,LTD", "HUIZHOU-MAORONG-INTELLIGENT" }, { 0xC4924C, "KEISOKUKI CENTER CO.,LTD.", "KEISOKUKI-CENTER" }, { 0x44A842, "Dell Inc.", "DELL" }, { 0xC48E8F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xB0E2E5, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 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" }, { 0x541473, "Wingtech Group (HongKong) Limited", "WINGTECH-GROUP-HONGKONG" }, { 0xC413E2, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x109836, "Dell Inc.", "DELL" }, { 0x988389, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x8C8B83, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x90A210, "United Telecoms Ltd", "UNITED-TELECOMS" }, { 0xF44713, "Leading Public Performance Co., Ltd.", "LEADING-PUBLIC-PERFORMANCE" }, { 0xD4522A, "TangoWiFi.com", "TANGOWIFI-COM" }, { 0xB0ECE1, "Private", "PRIVATE" }, { 0xAC9B0A, "Sony Corporation", "SONY" }, { 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" }, { 0xBCEC23, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS" }, { 0xBC6E64, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xE8162B, "IDEO Security Co., Ltd.", "IDEO-SECURITY" }, { 0x709F2D, "zte corporation", "ZTE" }, { 0x5C6B4F, "Private", "PRIVATE" }, { 0xECE2FD, "SKG Electric Group(Thailand) Co., Ltd.", "SKG-ELECTRIC-GROUP-THAILAND" }, { 0x18FF0F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x88E603, "Avotek corporation", "AVOTEK" }, { 0x340A22, "TOP-ACCESS ELECTRONICS CO LTD", "TOP-ACCESS-ELECTRONICS" }, { 0xB008BF, "Vital Connect, Inc.", "VITAL-CONNECT" }, { 0xC83FB4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE0B70A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7CF854, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x38C70A, "WiFiSong", "WIFISONG" }, { 0x60E6BC, "Sino-Telecom Technology Co.,Ltd.", "SINO-TELECOM" }, { 0x3CCB7C, "TCT mobile ltd", "TCT-MOBILE" }, { 0xF09FC2, "Ubiquiti Networks, Inc.", "UBIQUITI-NETWORKS" }, { 0x44D9E7, "Ubiquiti Networks, Inc.", "UBIQUITI-NETWORKS" }, { 0xE4F939, "Minxon Hotel Technology INC.", "MINXON-HOTEL" }, { 0x10D38A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC8A823, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x704E66, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x90E7C4, "HTC Corporation", "HTC" }, { 0xF81897, "2wire", "2WIRE" }, { 0x485415, "NET RULES TECNOLOGIA EIRELI", "NET-RULES-TECNOLOGIA-EIRELI" }, { 0x58A839, "Intel Corporate", "INTEL-CORPORATE" }, { 0x70C76F, "INNO S", "INNO-S" }, { 0xE887A3, "Loxley Public Company Limited", "LOXLEY-PUBLIC-COMPANY" }, { 0x64B853, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0xA87C01, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x8455A5, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x10FACE, "Reacheng Communication Technology Co.,Ltd", "REACHENG-COMMUNICATION" }, { 0xAC3A7A, "Roku", "ROKU" }, { 0xD8CB8A, "Micro-Star INTL CO., LTD.", "MICRO-STAR-INTL" }, { 0xA8D0E3, "Systech Electronics Ltd.", "SYSTECH-ELECTRONICS" }, { 0x1008B1, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x409B0D, "Shenzhen Yourf Kwan Industrial Co., Ltd", "SHENZHEN-YOURF-KWAN-INDUSTRIAL" }, { 0xC40880, "Shenzhen UTEPO Tech Co., Ltd.", "SHENZHEN-UTEPO-TECH" }, { 0x3464A9, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 0x586AB1, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 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" }, { 0x948E89, "INDUSTRIAS UNIDAS SA DE CV", "INDUSTRIAS-UNIDAS-DE-CV" }, { 0x34E6D7, "Dell Inc.", "DELL" }, { 0x74E6E2, "Dell Inc.", "DELL" }, { 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" }, { 0x4C48DA, "Beijing Autelan Technology Co.,Ltd", "BEIJING-AUTELAN" }, { 0x742EFC, "DirectPacket Research, Inc,", "DIRECTPACKET-RESEARCH" }, { 0x20C06D, "SHENZHEN SPACETEK TECHNOLOGY CO.,LTD", "SHENZHEN-SPACETEK" }, { 0xA42B8C, "Netgear Inc", "NETGEAR" }, { 0x3CB792, "Hitachi Maxell, Ltd., Optronics Division", "HITACHI-MAXELL-OPTRONICS-DIVISION" }, { 0x7491BD, "Four systems Co.,Ltd.", "FOUR" }, { 0x9405B6, "Liling FullRiver Electronics & Technology Ltd", "LILING-FULLRIVER-ELECTRONICS" }, { 0x382C4A, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xD83C69, "Tinno Mobile Technology Corp", "TINNO-MOBILE" }, { 0x74547D, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x8C0551, "Koubachi AG", "KOUBACHI" }, { 0xD88466, "Extreme Networks", "EXTREME-NETWORKS" }, { 0xF0B052, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x78719C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x6828F6, "Vubiq Networks, Inc.", "VUBIQ-NETWORKS" }, { 0xD40598, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD43266, "Fike Corporation", "FIKE" }, { 0x8463D6, "Microsoft Corporation", "MICROSOFT" }, { 0x78B3B9, "ShangHai sunup lighting CO.,LTD", "SHANGHAI-SUNUP-LIGHTING" }, { 0x44356F, "Neterix", "NETERIX" }, { 0x90179B, "Nanomegas", "NANOMEGAS" }, { 0x3077CB, "Maike Industry(Shenzhen)CO.,LTD", "MAIKE-INDUSTRY-SHENZHEN" }, { 0x88C9D0, "LG Electronics", "LG-ELECTRONICS" }, { 0xBC6B4D, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x3428F0, "ATN International Limited", "ATN" }, { 0x8CDCD4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xEC3C5A, "SHEN ZHEN HENG SHENG HUI DIGITAL TECHNOLOGY CO.,LTD", "SHEN-ZHEN-HENG-SHENG-HUI-DIGITAL" }, { 0x8486F3, "Greenvity Communications", "GREENVITY-COMMUNICATION" }, { 0x205CFA, "Yangzhou ChangLian Network Technology Co,ltd.", "YANGZHOU-CHANGLIAN-NETWORK" }, { 0x34B7FD, "Guangzhou Younghead Electronic Technology Co.,Ltd", "GUANGZHOU-YOUNGHEAD" }, { 0x384B76, "AIRTAME ApS", "AIRTAME-APS" }, { 0x1C5216, "DONGGUAN HELE ELECTRONICS CO., LTD", "DONGGUAN-HELE-ELECTRONICS" }, { 0x946269, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8C7F3B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x3808FD, "Silca Spa", "SILCA-SPA" }, { 0x7C2587, "chaowifi.com", "CHAOWIFI-COM" }, { 0x2012D5, "Scientech Materials Corporation", "SCIENTECH-MATERIALS" }, { 0x600292, "PEGATRON CORPORATION", "PEGATRON" }, { 0x2CFAA2, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xF0761C, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x18CF5E, "Liteon Technology Corporation", "LITEON" }, { 0xF42833, "MMPC Inc.", "MMPC" }, { 0x244F1D, "iRule LLC", "IRULE-LLC" }, { 0xBC9CC5, "Beijing Huafei Technology Co., Ltd.", "BEIJING-HUAFEI" }, { 0x505065, "TAKT Corporation", "TAKT" }, { 0xD00AAB, "Yokogawa Digital Computer Corporation", "YOKOGAWA-DIGITAL" }, { 0xA470D6, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x8C18D9, "Shenzhen RF Technology Co., Ltd", "SHENZHEN-RF" }, { 0x6099D1, "Vuzix / Lenovo", "VUZIX-/-LENOVO" }, { 0x38B1DB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x34F6D2, "Panasonic Taiwan Co.,Ltd.", "PANASONIC-TAIWAN" }, { 0xD48F33, "Microsoft Corporation", "MICROSOFT" }, { 0x3C5AB4, "Google", "GOOGLE" }, { 0xD84A87, "OI ELECTRIC CO.,LTD", "OI-ELECTRIC" }, { 0x1CA2B1, "ruwido austria gmbh", "RUWIDO-AUSTRIA" }, { 0x945493, "Rigado, LLC", "RIGADO-LLC" }, { 0x604826, "Newbridge Technologies Int. Ltd.", "NEWBRIDGE-TECHNOLOGIES-INT" }, { 0x24D13F, "MEXUS CO.,LTD", "MEXUS" }, { 0x3C46D8, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x6C0273, "Shenzhen Jin Yun Video Equipment Co., Ltd.", "SHENZHEN-JIN-YUN-VIDEO-EQUIPMENT" }, { 0x84183A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x30B5F1, "Aitexin Technology Co., Ltd", "AITEXIN" }, { 0x64D954, "TAICANG AND W ELECTRONICS CO LTD", "TAICANG-AND-W-ELECTRONICS" }, { 0x882950, "Dalian Netmoon Tech Develop Co.,Ltd", "DALIAN-NETMOON-TECH-DEVELOP" }, { 0x08CD9B, "samtec automotive electronics & software GmbH", "SAMTEC-AUTOMOTIVE-ELECTRONICS-SOFTWARE" }, { 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" }, { 0x806C1B, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xA4A4D3, "Bluebank Communication Technology Co.Ltd", "BLUEBANK-COMMUNICATION" }, { 0x74F413, "Maxwell Forest", "MAXWELL-FOREST" }, { 0xC44202, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34F0CA, "Shenzhen Linghangyuan Digital Technology Co.,Ltd.", "SHENZHEN-LINGHANGYUAN-DIGITAL" }, { 0xD059E4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C54CF, "LG Electronics", "LG-ELECTRONICS" }, { 0x4C26E7, "Welgate Co., Ltd.", "WELGATE" }, { 0x94D60E, "shenzhen yunmao information technologies co., ltd", "SHENZHEN-YUNMAO-INFORMATION-TECHNOLOGIES" }, { 0x7C6AC3, "GatesAir, Inc", "GATESAIR" }, { 0x2C39C1, "Ciena Corporation", "CIENA" }, { 0x6C2C06, "OOO NPP Systemotechnika-NN", "OOO-NPP-SYSTEMOTECHNIKA-NN" }, { 0x54EE75, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0x00ACE0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x202564, "PEGATRON CORPORATION", "PEGATRON" }, { 0xB0754D, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x6C198F, "D-Link International", "D-LINK" }, { 0x60C1CB, "Fujian Great Power PLC Equipment Co.,Ltd", "FUJIAN-GREAT-POWER-PLC-EQUIPMENT" }, { 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" }, { 0x504A6E, "NETGEAR INC.,", "NETGEAR" }, { 0x28E347, "Liteon Technology Corporation", "LITEON" }, { 0x30C750, "MIC Technology Group", "MIC-GROUP" }, { 0x442938, "NietZsche enterprise Co.Ltd.", "NIETZSCHE" }, { 0x4486C1, "Siemens Low Voltage & Products", "SIEMENS-LOW-VOLTAGE-PRODUCTS" }, { 0xC83168, "eZEX corporation", "EZEX" }, { 0x843838, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xF84A73, "EUMTECH CO., LTD", "EUMTECH" }, { 0xC4346B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x9C65B0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4411C2, "Telegartner Karl Gartner GmbH", "TELEGARTNER-KARL-GARTNER" }, { 0xB86CE8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x188331, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9451BF, "Hyundai ESG", "HYUNDAI-ESG" }, { 0x4C7F62, "Nokia Corporation", "NOKIA" }, { 0x841766, "Weifang GoerTek Electronics Co., Ltd", "WEIFANG-GOERTEK-ELECTRONICS" }, { 0xF03FF8, "R L Drake", "R-L-DRAKE" }, { 0xB0C554, "D-Link International", "D-LINK" }, { 0x54D163, "MAX-TECH,INC", "MAX-TECH" }, { 0x880F10, "Huami Information Technology Co.,Ltd.", "HUAMI-INFORMATION" }, { 0x24336C, "Private", "PRIVATE" }, { 0xC46BB4, "myIDkey", "MYIDKEY" }, { 0xECE512, "tado GmbH", "TADO" }, { 0x30918F, "Technicolor", "TECHNICOLOR" }, { 0x60812B, "Custom Control Concepts", "CUSTOM-CONTROL-CONCEPTS" }, { 0xFC4AE9, "Castlenet Technology Inc.", "CASTLENET" }, { 0xF86601, "Suzhou Chi-tek information technology Co., Ltd", "SUZHOU-CHI-TEK-INFORMATION" }, { 0xBC8D0E, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x18FB7B, "Dell Inc", "DELL" }, { 0x686E48, "Prophet Electronic Technology Corp.,Ltd", "PROPHET" }, { 0x30F7D7, "Thread Technology Co., Ltd", "THREAD" }, { 0xE0CBEE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE41218, "ShenZhen Rapoo Technology Co., Ltd.", "SHENZHEN-RAPOO" }, { 0x2C8A72, "HTC Corporation", "HTC" }, { 0xD039B3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x28FCF6, "Shenzhen Xin KingBrand enterprises Co.,Ltd", "SHENZHEN-XIN-KINGBRAND-ENTERPRISES" }, { 0x382DD1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD8E56D, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x3CCD5A, "Technische Alternative GmbH", "TECHNISCHE-ALTERNATIVE" }, { 0x34E42A, "Automatic Bar Controls Inc.", "AUTOMATIC-BAR-CONTROLS" }, { 0xB87CF2, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x20A787, "Bointec Taiwan Corporation Limited", "BOINTEC-TAIWAN" }, { 0x6CAAB3, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xA481EE, "Nokia Corporation", "NOKIA" }, { 0x54C80F, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xCC7498, "Filmetrics Inc.", "FILMETRICS" }, { 0x181BEB, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x7C6AB3, "IBC TECHNOLOGIES INC.", "IBC-TECHNOLOGIES" }, { 0x309BAD, "BBK Electronics Corp., Ltd.,", "BBK-ELECTRONICS" }, { 0x24C848, "mywerk system GmbH", "MYWERK-SYSTEM" }, { 0x805719, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0DF3A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C18AE, "Trend Electronics Co., Ltd.", "TREND-ELECTRONICS" }, { 0xE097F2, "Atomax Inc.", "ATOMAX" }, { 0x702C1F, "Wisol", "WISOL" }, { 0xA089E4, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 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" }, { 0x6C641A, "Penguin Computing", "PENGUIN-COMPUTING" }, { 0x1CEEE8, "Ilshin Elecom", "ILSHIN-ELECOM" }, { 0xECF4BB, "Dell Inc", "DELL" }, { 0xE036E3, "Stage One International Co., Ltd.", "STAGE-ONE" }, { 0x34DE34, "zte corporation", "ZTE" }, { 0xC4A81D, "D-Link International", "D-LINK" }, { 0x98FF6A, "OTEC(Shanghai)Technology Co.,Ltd.", "OTEC-SHANGHAI" }, { 0xAC6BAC, "Jenny Science AG", "JENNY-SCIENCE" }, { 0x0C54A5, "PEGATRON CORPORATION", "PEGATRON" }, { 0x3C36E4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 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" }, { 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" }, { 0xE48184, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xC4C0AE, "MIDORI ELECTRONIC CO., LTD.", "MIDORI" }, { 0x08FD0E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78A873, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x54880E, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x90837A, "General Electric Water & Process Technologies", "GENERAL-ELECTRIC-WATER-PROCESS-TECHNOLOGIES" }, { 0x24050F, "MTN Electronic Co. Ltd", "MTN" }, { 0x40B6B1, "SUNGSAM CO,.Ltd", "SUNGSAM" }, { 0x40F02F, "Liteon Technology Corporation", "LITEON" }, { 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" }, { 0xE8617E, "Liteon Technology Corporation", "LITEON" }, { 0xFC09F6, "GUANGDONG TONZE ELECTRIC CO.,LTD", "GUANGDONG-TONZE-ELECTRIC" }, { 0xE8B1FC, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD8FC93, "Intel Corporate", "INTEL-CORPORATE" }, { 0x687848, "Westunitis Co., Ltd.", "WESTUNITIS" }, { 0xA8B9B3, "ESSYS", "ESSYS" }, { 0x64B370, "PowerComm Solutions LLC", "POWERCOMM-SOLUTIONS-LLC" }, { 0xD86595, "Toy's Myth Inc.", "TOY-S-MYTH" }, { 0xC45006, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x40A8F0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD8DD5F, "BALMUDA Inc.", "BALMUDA" }, { 0x88D962, "Canopus Systems US LLC", "CANOPUS-US-LLC" }, { 0xC0F1C4, "Pacidal Corporation Ltd.", "PACIDAL" }, { 0xD858D7, "CZ.NIC, z.s.p.o.", "CZ-NIC-Z-S-P-O" }, { 0xBC307D, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x10B713, "Private", "PRIVATE" }, { 0xE8E770, "Warp9 Tech Design, Inc.", "WARP9-TECH-DESIGN" }, { 0x78CA5E, "ELNO", "ELNO" }, { 0x98FFD0, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x348AAE, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xA0D3C1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 0x8048A5, "SICHUAN TIANYI COMHEART TELECOM CO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOM" }, { 0x34466F, "HiTEM Engineering", "HITEM-ENGINEERING" }, { 0x50A054, "Actineon", "ACTINEON" }, { 0x48EE86, "UTStarcom (China) Co.,Ltd", "UTSTARCOM-CHINA" }, { 0x5056A8, "Jolla Ltd", "JOLLA" }, { 0xF0321A, "Mita-Teknik A/S", "MITA-TEKNIK-A/S" }, { 0x4CD7B6, "Helmer Scientific", "HELMER-SCIENTIFIC" }, { 0x688AB5, "EDP Servicos", "EDP-SERVICOS" }, { 0x2493CA, "Voxtronic Technology Computer-Systeme GmbH", "VOXTRONIC--SYSTEME" }, { 0x407A80, "Nokia Corporation", "NOKIA" }, { 0x908C44, "H.K ZONGMU TECHNOLOGY CO., LTD.", "H-K-ZONGMU" }, { 0x0C473D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0xF8DB88, "Dell Inc", "DELL" }, { 0x4C5E0C, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x9CF8DB, "shenzhen eyunmei technology co,.ltd", "SHENZHEN-EYUNMEI" }, { 0x644214, "Swisscom Energy Solutions AG", "SWISSCOM-ENERGY-SOLUTIONS" }, { 0x00E3B2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30D6C9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x107BEF, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x34A3BF, "Terewave. Inc.", "TEREWAVE" }, { 0xA4C7DE, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xE8D4E0, "Beijing BenyWave Technology Co., Ltd.", "BEIJING-BENYWAVE" }, { 0x54BEF7, "PEGATRON CORPORATION", "PEGATRON" }, { 0x3889DC, "Opticon Sensors Europe B.V.", "OPTICON-SENSORS-EUROPE" }, { 0x18622C, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xD09D0A, "LINKCOM", "LINKCOM" }, { 0xC81479, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x54FB58, "WISEWARE, Lda", "WISEWARE-LDA" }, { 0xA42940, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0xB00594, "Liteon Technology Corporation", "LITEON" }, { 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" }, { 0x5C36B8, "TCL King Electrical Appliances (Huizhou) Ltd.", "TCL-KING-ELECTRICAL-APPLIANCES-HUIZHOU" }, { 0x90F3B7, "Kirisun Communications Co., Ltd.", "KIRISUN-COMMUNICATION" }, { 0xDCAD9E, "GreenPriz", "GREENPRIZ" }, { 0xB4827B, "AKG Acoustics GmbH", "AKG-ACOUSTICS" }, { 0x3C18A0, "Luxshare Precision Industry Co.,Ltd.", "LUXSHARE-PRECISION-INDUSTRY" }, { 0x186472, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x4CB81C, "SAM Electronics GmbH", "SAM-ELECTRONICS" }, { 0x2C3731, "ShenZhen Yifang Digital Technology Co.,LTD", "SHENZHEN-YIFANG-DIGITAL" }, { 0x041A04, "WaveIP", "WAVEIP" }, { 0x94E98C, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 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" }, { 0x1C7B21, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xBC9680, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x9C2840, "Discovery Technology,LTD..", "DISCOVERY" }, { 0xF89FB8, "YAZAKI Energy System Corporation", "YAZAKI-ENERGY-SYSTEM" }, { 0x709E29, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0xE0B2F1, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0xF037A1, "Huike Electronics (SHENZHEN) CO., LTD.", "HUIKE-ELECTRONICS-SHENZHEN" }, { 0x6CD1B0, "WING SING ELECTRONICS HONG KONG LIMITED", "WING-SING-ELECTRONICS-HONG-KONG" }, { 0x544408, "Nokia Corporation", "NOKIA" }, { 0xA4F522, "CHOFU SEISAKUSHO CO.,LTD", "CHOFU-SEISAKUSHO" }, { 0x7CE56B, "ESEN Optoelectronics Technology Co.,Ltd.", "ESEN-OPTOELECTRONICS" }, { 0xD02C45, "littleBits Electronics, Inc.", "LITTLEBITS-ELECTRONICS" }, { 0x5027C7, "TECHNART Co.,Ltd", "TECHNART" }, { 0xDCFB02, "Buffalo Inc.", "BUFFALO" }, { 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" }, { 0x08EF3B, "MCS Logic Inc.", "MCS-LOGIC" }, { 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" }, { 0xF0728C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5C026A, "Applied Vision Corporation", "APPLIED-VISION" }, { 0xCC4703, "Intercon Systems Co., Ltd.", "INTERCON" }, { 0x5C3327, "Spazio Italia srl", "SPAZIO-ITALIA-SRL" }, { 0xBC8CCD, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xB0CE18, "Zhejiang shenghui lighting co.,Ltd", "ZHEJIANG-SHENGHUI-LIGHTING" }, { 0x18A99B, "Dell Inc", "DELL" }, { 0x503CC4, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x903EAB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x286D97, "SAMJIN Co., Ltd.", "SAMJIN" }, { 0xACE42E, "SK hynix", "SK-HYNIX" }, { 0x18AF61, "A, Inc", "A" }, { 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" }, { 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" }, { 0x84262B, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x8CCDA2, "ACTP, Inc.", "ACTP" }, { 0xCC720F, "Viscount Systems Inc.", "VISCOUNT" }, { 0x906717, "Alphion India Private Limited", "ALPHION-INDIA-PRIVATE" }, { 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" }, { 0x94350A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x88124E, "Qualcomm Atheros", "QUALCOMM-ATHEROS" }, { 0x681D64, "Sunwave Communications Co., Ltd", "SUNWAVE-COMMUNICATION" }, { 0x605718, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF4CD90, "Vispiron Rotec GmbH", "VISPIRON-ROTEC" }, { 0x400E85, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x98B039, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x806C8B, "KAESER KOMPRESSOREN AG", "KAESER-KOMPRESSOREN" }, { 0x048C03, "ThinPAD Technology (Shenzhen)CO.,LTD", "THINPAD-SHENZHEN" }, { 0x84E629, "Bluwan SA", "BLUWAN" }, { 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" }, { 0x14CFE2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x04DF69, "Car Connectivity Consortium", "CAR-CONNECTIVITY-CONSORTIUM" }, { 0x28DB81, "Shanghai Guao Electronic Technology Co., Ltd", "SHANGHAI-GUAO" }, { 0x9CB793, "Creatcomm Technology Inc.", "CREATCOMM" }, { 0xC4438F, "LG Electronics", "LG-ELECTRONICS" }, { 0xA0B100, "ShenZhen Cando Electronics Co.,Ltd", "SHENZHEN-CANDO-ELECTRONICS" }, { 0xC419EC, "Qualisys AB", "QUALISYS-AB" }, { 0xD4C9EF, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 0x980D2E, "HTC Corporation", "HTC" }, { 0x842F75, "Innokas Group", "INNOKAS-GROUP" }, { 0xD4BF7F, "UPVEL", "UPVEL" }, { 0x5061D6, "Indu-Sol GmbH", "INDU-SOL" }, { 0x68EC62, "YODO Technology Corp. Ltd.", "YODO" }, { 0xD8DA52, "APATOR S.A.", "APATOR" }, { 0x107A86, "U&U ENGINEERING INC.", "U-U-ENGINEERING" }, { 0xC0DA74, "Hangzhou Sunyard Technology Co., Ltd.", "HANGZHOU-SUNYARD" }, { 0x34A843, "KYOCERA Display Corporation", "KYOCERA-DISPLAY" }, { 0x6C5779, "Aclima, Inc.", "ACLIMA" }, { 0x40BD9E, "Physio-Control, Inc", "PHYSIO-CONTROL" }, { 0xF4F5A5, "Nokia corporation", "NOKIA" }, { 0xBC79AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x581CBD, "Affinegy", "AFFINEGY" }, { 0x649C81, "Qualcomm iSkoot, Inc.", "QUALCOMM-ISKOOT" }, { 0x04A151, "NETGEAR INC.,", "NETGEAR" }, { 0x34CD6D, "CommSky Technologies", "COMMSKY-TECHNOLOGIES" }, { 0xA45D36, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC47F51, "Inventek Systems", "INVENTEK" }, { 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" }, { 0x78ABBB, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x1078CE, "Hanvit SI, Inc.", "HANVIT-SI" }, { 0x349D90, "Heinzmann GmbH & CO. KG", "HEINZMANN" }, { 0xE438F2, "Advantage Controls", "ADVANTAGE-CONTROLS" }, { 0x24C9A1, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC8F386, "Shenzhen Xiaoniao Technology Co.,Ltd", "SHENZHEN-XIAONIAO" }, { 0xE8CE06, "SkyHawke Technologies, LLC.", "SKYHAWKE-TECHNOLOGIES-LLC" }, { 0xB0808C, "Laser Light Engines", "LASER-LIGHT-ENGINES" }, { 0x880355, "Arcadyan Technology Corp.", "ARCADYAN" }, { 0x40560C, "In Home Displays Ltd", "IN-HOME-DISPLAYS" }, { 0x041BBA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5C3C27, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC8D10B, "Nokia Corporation", "NOKIA" }, { 0x0086A0, "Private", "PRIVATE" }, { 0x5856E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x60FE1E, "China Palms Telecom.Ltd", "CHINA-PALMS-TELECOM" }, { 0x841E26, "KERNEL-I Co.,LTD", "KERNEL-I" }, { 0x10D542, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA0821F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE82AEA, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF07F0C, "Leopold Kostal GmbH &Co. KG", "LEOPOLD-KOSTAL" }, { 0x984FEE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5C22C4, "DAE EUN ELETRONICS CO., LTD", "DAE-EUN-ELETRONICS" }, { 0x9C9726, "Technicolor", "TECHNICOLOR" }, { 0x880905, "MTMCommunications", "MTMCOMMUNICATIONS" }, { 0xACDBDA, "Shenzhen Geniatech Inc, Ltd", "SHENZHEN-GENIATECH" }, { 0xA42C08, "Masterwork Automodules", "MASTERWORK-AUTOMODULES" }, { 0x60B185, "ATH system", "ATH-SYSTEM" }, { 0x504F94, "Loxone Electronics GmbH", "LOXONE-ELECTRONICS" }, { 0x88329B, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x8C078C, "FLOW DATA INC", "FLOW-DATA" }, { 0x745F00, "Samsung Semiconductor Inc.", "SAMSUNG-SEMICONDUCTOR" }, { 0xAC7BA1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x541FD5, "Advantage Electronics", "ADVANTAGE-ELECTRONICS" }, { 0x90FF79, "Metro Ethernet Forum", "METRO-ETHERNET-FORUM" }, { 0xE08177, "GreenBytes, Inc.", "GREENBYTES" }, { 0x7C7A91, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB88A60, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00EB2D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xF02329, "SHOWA DENKI CO.,LTD.", "SHOWA-DENKI" }, { 0x6499A0, "AG Elektronik AB", "ELEKTRONIK-AB" }, { 0xA80180, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x48F230, "Ubizcore Co.,LTD", "UBIZCORE" }, { 0xB0C95B, "Beijing Symtech CO.,LTD", "BEIJING-SYMTECH" }, { 0x881544, "Meraki, Inc.", "MERAKI" }, { 0xDCA989, "MACANDC", "MACANDC" }, { 0xC05E6F, "V. Stonkaus firma Kodinis Raktas", "V-STONKAUS-FIRMA-KODINIS-RAKTAS" }, { 0x080EA8, "Velex s.r.l.", "VELEX-S-R-L" }, { 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" }, { 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" }, { 0xC42628, "Airo Wireless", "AIRO-WIRELESS" }, { 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" }, { 0x3CC243, "Nokia Corporation", "NOKIA" }, { 0x44619C, "FONsystem co. ltd.", "FONSYSTEM" }, { 0xBCBAE1, "AREC Inc.", "AREC" }, { 0x18FA6F, "ISC applied systems corp", "ISC-APPLIED" }, { 0x907AF1, "SNUPI Technologies", "SNUPI-TECHNOLOGIES" }, { 0x08482C, "Raycore Taiwan Co., LTD.", "RAYCORE-TAIWAN" }, { 0xF4B381, "WindowMaster A/S", "WINDOWMASTER-A/S" }, { 0x74F102, "Beijing HCHCOM Technology Co., Ltd", "BEIJING-HCHCOM" }, { 0x6CD146, "Smartek d.o.o.", "SMARTEK-D-O-O" }, { 0xE0C2B7, "Masimo Corporation", "MASIMO" }, { 0x181725, "Cameo Communications, Inc.", "CAMEO-COMMUNICATION" }, { 0xE82E24, "Out of the Fog Research LLC", "OUT-OF-THE-FOG-RESEARCH-LLC" }, { 0x149448, "BLU CASTLE S.A.", "BLU-CASTLE" }, { 0x64B310, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x28C68E, "NETGEAR INC.,", "NETGEAR" }, { 0xC4E032, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0xACE97F, "IoT Tech Limited", "IOT-TECH" }, { 0x301518, "Ubiquitous Communication Co. ltd.", "UBIQUITOUS-COMMUNICATION" }, { 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" }, { 0x7C03D8, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x840B2D, "SAMSUNG ELECTRO-MECHANICS CO., LTD", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xC44567, "SAMBON PRECISON and ELECTRONICS", "SAMBON-PRECISON-AND-ELECTRONICS" }, { 0xE8718D, "Elsys Equipamentos Eletronicos Ltda", "ELSYS-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0xD0738E, "DONG OH PRECISION CO., LTD. ", "DONG-OH-PRECISION" }, { 0x3C83B5, "Advance Vision Electronics Co. Ltd.", "ADVANCE-VISION-ELECTRONICS" }, { 0x28A192, "GERP Solution", "GERP-SOLUTION" }, { 0x808287, "ATCOM Technology Co.Ltd.", "ATCOM" }, { 0xA08C15, "Gerhard D. Wempe KG", "GERHARD-D-WEMPE" }, { 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" }, { 0x140C76, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x30215B, "Shenzhen Ostar Display Electronic Co.,Ltd", "SHENZHEN-OSTAR-DISPLAY" }, { 0x6C3BE5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x08D42B, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xDC028E, "zte corporation", "ZTE" }, { 0xDCB058, "Bĵrkert Werke GmbH", "BĵRKERT-WERKE" }, { 0x641C67, "DIGIBRAS INDUSTRIA DO BRASILS/A", "DIGIBRAS-INDUSTRIA-DO-BRASILS/A" }, { 0x88D7BC, "DEP Company", "DEP-COMPANY" }, { 0xC8E1A7, "Vertu Corporation Limited", "VERTU" }, { 0xF49466, "CountMax, ltd", "COUNTMAX" }, { 0x4CAB33, "KST technology", "KST" }, { 0xA02195, "Samsung Electronics Digital Imaging", "SAMSUNG-ELECTRONICS-DIGITAL-IMAGING" }, { 0x8CE081, "zte corporation", "ZTE" }, { 0x485261, "SOREEL", "SOREEL" }, { 0x10FBF0, "KangSheng LTD.", "KANGSHENG" }, { 0x3C57BD, "Kessler Crane Inc.", "KESSLER-CRANE" }, { 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" }, { 0x900DCB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x207355, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2CE2A8, "DeviceDesign", "DEVICEDESIGN" }, { 0xB49DB4, "Axion Technologies Inc.", "AXION-TECHNOLOGIES" }, { 0xD8182B, "Conti Temic Microelectronic GmbH", "CONTI-TEMIC-MICROELECTRONIC" }, { 0x600F77, "SilverPlus, Inc", "SILVERPLUS" }, { 0x6851B7, "PowerCloud Systems, Inc.", "POWERCLOUD" }, { 0x0881F4, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xA44E2D, "Adaptive Wireless Solutions, LLC", "ADAPTIVE-WIRELESS-SOLUTIONS-LLC" }, { 0x3CC12C, "AES Corporation", "AES" }, { 0x0CCDFB, "EDIC Systems Inc.", "EDIC" }, { 0x3092F6, "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD", "SHANGHAI-SUNMON-COMMUNICATION-TECHNOGY" }, { 0x5CE0F6, "NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR", "NIC-BR--NUCLEO-DE-INFORMACAO-E-COORDENACAO-DO-PONTO-BR" }, { 0xB4DFFA, "Litemax Electronics Inc.", "LITEMAX-ELECTRONICS" }, { 0x48F8B3, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x681CA2, "Rosewill Inc.", "ROSEWILL" }, { 0x7C092B, "Bekey A/S", "BEKEY-A/S" }, { 0xE892A4, "LG Electronics", "LG-ELECTRONICS" }, { 0xD808F5, "Arcadia Networks Co. Ltd. ", "ARCADIA-NETWORKS" }, { 0xCCA462, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x84DF0C, "NET2GRID BV", "NET2GRID" }, { 0x1C52D6, "FLAT DISPLAY TECHNOLOGY CORPORATION", "FLAT-DISPLAY" }, { 0x40270B, "Mobileeco Co., Ltd", "MOBILEECO" }, { 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" }, { 0x00C2C6, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA08869, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00E666, "ARIMA Communications Corp.", "ARIMA-COMMUNICATION" }, { 0xF8E4FB, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x5887E2, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0x9C9C1D, "Starkey Labs Inc.", "STARKEY-LABS" }, { 0x90CC24, "Synaptics, Inc", "SYNAPTICS" }, { 0x182A7B, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xAC1702, "Fibar Group sp. z o.o.", "FIBAR-GROUP-SP-Z-O-O" }, { 0x18339D, "Cisco Systems, Inc", "CISCO" }, { 0x642216, "Shandong Taixin Electronic co.,Ltd", "SHANDONG-TAIXIN" }, { 0xDC85DE, "Azurewave Technologies., inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xD43D7E, "Micro-Star Int'l Co, Ltd", "MICRO-STAR" }, { 0x64517E, "LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.", "LONG-BEN-DONGGUAN" }, { 0xA816B2, "LG Electronics", "LG-ELECTRONICS" }, { 0x18E2C2, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x94CCB9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x0CDA41, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 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" }, { 0x70E24C, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x88615A, "Siano Mobile Silicon Ltd.", "SIANO-MOBILE-SILICON" }, { 0xF09CE9, "Aerohive Networks Inc", "AEROHIVE-NETWORKS" }, { 0x105F49, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x0418D6, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 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" }, { 0x60D1AA, "Vishal Telecommunications Pvt Ltd", "VISHAL-TELECOMMUNICATIONS-PVT" }, { 0xCCC104, "Applied Technical Systems", "APPLIED-TECHNICAL" }, { 0x28924A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x709BA5, "Shenzhen Y&D Electronics Co.,LTD.", "SHENZHEN-Y-D-ELECTRONICS" }, { 0xEC42F0, "ADL Embedded Solutions, Inc.", "ADL-EMBEDDED-SOLUTIONS" }, { 0x10BD18, "Cisco Systems, Inc", "CISCO" }, { 0x1C3477, "Innovation Wireless", "INNOVATION-WIRELESS" }, { 0x4423AA, "Farmage Co., Ltd.", "FARMAGE" }, { 0xA0EF84, "Seine Image Int'l Co., Ltd", "SEINE-IMAGE" }, { 0x64D814, "Cisco Systems, Inc", "CISCO" }, { 0x205476, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x6CE4CE, "Villiger Security Solutions AG", "VILLIGER-SECURITY-SOLUTIONS" }, { 0x30F33A, "+plugg srl", "+PLUGG-SRL" }, { 0x58CF4B, "Lufkin Industries", "LUFKIN-INDUSTRIES" }, { 0xC4393A, "SMC Networks Inc", "SMC-NETWORKS" }, { 0xC4017C, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x4C7897, "Arrowhead Alarm Products Ltd", "ARROWHEAD-ALARM-PRODUCTS" }, { 0xAC0A61, "Labor S.r.L.", "LABOR-S-R-L" }, { 0xB482C5, "Relay2, Inc.", "RELAY2" }, { 0x3407FB, "Ericsson AB", "ERICSSON-AB" }, { 0xAC7A42, "iConnectivity", "ICONNECTIVITY" }, { 0x5869F9, "Fusion Transactive Ltd.", "FUSION-TRANSACTIVE" }, { 0x9094E4, "D-Link International", "D-LINK" }, { 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" }, { 0xC4E7BE, "SCSpro Co.,Ltd", "SCSPRO" }, { 0x10604B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 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" }, { 0x847E40, "6278", "6278" }, { 0x78C5E5, "6278", "6278" }, { 0x80F62E, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xFC94E3, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0xC8AE9C, "Shanghai TYD Elecronic Technology Co. Ltd", "SHANGHAI-TYD-ELECRONIC" }, { 0xA44C11, "Cisco Systems, Inc", "CISCO" }, { 0x38E08E, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 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" }, { 0xA8D0E5, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xCCC50A, "SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD", "SHENZHEN-DAJIAHAO" }, { 0xD01AA7, "UniPrint", "UNIPRINT" }, { 0xB08E1A, "URadio Systems Co., Ltd", "URADIO" }, { 0x40605A, "Hawkeye Tech Co. Ltd", "HAWKEYE-TECH" }, { 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" }, { 0x28107B, "D-Link International", "D-LINK" }, { 0xA49005, "CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD", "CHINA-GREATWALL-SHENZHEN" }, { 0x3055ED, "Trex Network LLC", "TREX-NETWORK-LLC" }, { 0xD4A02A, "Cisco Systems, Inc", "CISCO" }, { 0x2C00F7, "XOS", "XOS" }, { 0x142DF5, "Amphitech", "AMPHITECH" }, { 0xC08ADE, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 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" }, { 0x1C62B8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x303926, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0x246511, "AVM GmbH", "AVM" }, { 0x745798, "TRUMPF Laser GmbH + Co. KG", "TRUMPF-LASER-+" }, { 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" }, { 0x08EDB9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x1C69A5, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x9CE10E, "NCTech Ltd", "NCTECH" }, { 0x20E564, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x90B134, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0xE0EF25, "Lintes Technology Co., Ltd.", "LINTES" }, { 0xCCEED9, "VAHLE DETO GmbH", "VAHLE-DETO" }, { 0x645EBE, "Yahoo! JAPAN", "YAHOO!-JAPAN" }, { 0x3C9F81, "Shenzhen CATIC Bit Communications Technology Co.,Ltd", "SHENZHEN-CATIC-BIT-COMMUNICATION" }, { 0x8CE748, "Private", "PRIVATE" }, { 0x5CF9DD, "Dell Inc", "DELL" }, { 0xE8F1B0, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 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" }, { 0x28F606, "Syes srl", "SYES-SRL" }, { 0xA0C3DE, "Triton Electronic Systems Ltd.", "TRITON" }, { 0xAC3FA4, "TAIYO YUDEN CO.,LTD", "TAIYO-YUDEN" }, { 0x0C130B, "Uniqoteq Ltd.", "UNIQOTEQ" }, { 0x14CF8D, "OHSUNG ELECTRONICS CO., LTD.", "OHSUNG-ELECTRONICS" }, { 0x808698, "Netronics Technologies Inc.", "NETRONICS-TECHNOLOGIES" }, { 0xC8F704, "Building Block Video", "BUILDING-BLOCK-VIDEO" }, { 0x608C2B, "Hanson Technology", "HANSON" }, { 0x606C66, "Intel Corporate", "INTEL-CORPORATE" }, { 0xEC1120, "FloDesign Wind Turbine Corporation", "FLODESIGN-WIND-TURBINE" }, { 0xB4B676, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD0F73B, "Helmut Mauell GmbH", "HELMUT-MAUELL" }, { 0xC4D987, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD878E5, "KUHN SA", "KUHN" }, { 0xC49300, "8Devices", "8DEVICES" }, { 0x4C3910, "Newtek Electronics co., Ltd.", "NEWTEK-ELECTRONICS" }, { 0x5866BA, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xE4FA1D, "PAD Peripheral Advanced Design Inc.", "PAD-PERIPHERAL-ADVANCED-DESIGN" }, { 0x4C9E80, "KYOKKO ELECTRIC Co., Ltd.", "KYOKKO-ELECTRIC" }, { 0x3C438E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x082E5F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB05CE5, "Nokia Corporation", "NOKIA" }, { 0x4813F3, "BBK Electronics Corp., Ltd.", "BBK-ELECTRONICS" }, { 0xCC6BF1, "Sound Masking Inc.", "SOUND-MASKING" }, { 0xB82CA0, "Honeywell HomMed", "HONEYWELL-HOMMED" }, { 0x94AE61, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x7CA61D, "MHL, LLC", "MHL-LLC" }, { 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" }, { 0x00FA3B, "CLOOS ELECTRONIC GMBH", "CLOOS" }, { 0x648788, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x28CD1C, "Espotel Oy", "ESPOTEL-OY" }, { 0xD824BD, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0xD494A1, "6278", "6278" }, { 0x90185E, "Apex Tool Group GmbH & Co OHG", "APEX-TOOL-GROUP-OHG" }, { 0x14825B, "Hefei Radio Communication Technology Co., Ltd", "HEFEI-RADIO-COMMUNICATION" }, { 0x1000FD, "LaonPeople", "LAONPEOPLE" }, { 0x603553, "Buwon Technology", "BUWON" }, { 0x5CCEAD, "CDYNE Corporation", "CDYNE" }, { 0x9CA3BA, "SAKURA Internet Inc.", "SAKURA-INTERNET" }, { 0x709756, "Happyelectronics Co.,Ltd", "HAPPYELECTRONICS" }, { 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" }, { 0xD4BED9, "Dell Inc", "DELL" }, { 0x94319B, "Alphatronics BV", "ALPHATRONICS" }, { 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" }, { 0x047D7B, "Quanta Computer Inc.", "QUANTA" }, { 0xD44B5E, "TAIYO YUDEN CO., LTD.", "TAIYO-YUDEN" }, { 0x40B7F3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x40BF17, "Digistar Telecom. SA", "DIGISTAR-TELECOM" }, { 0xE4AFA1, "HES-SO", "HES-SO" }, { 0xB40C25, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0xE86D52, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8CC8CD, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xC8AF40, "marco Systemanalyse und Entwicklung GmbH", "MARCO-SYSTEMANALYSE-UND-ENTWICKLUNG" }, { 0xA826D9, "HTC Corporation", "HTC" }, { 0xF03A55, "Omega Elektronik AS", "OMEGA-ELEKTRONIK-AS" }, { 0x24B88C, "Crenus Co.,Ltd.", "CRENUS" }, { 0x98BC57, "SVA TECHNOLOGIES CO.LTD", "SVA-TECHNOLOGIES" }, { 0x2CB05D, "Netgear", "NETGEAR" }, { 0x98FE03, "Ericsson - North America", "ERICSSON---NORTH-AMERICA" }, { 0xF0EEBB, "VIPAR GmbH", "VIPAR" }, { 0x54D0ED, "AXIM Communications", "AXIM-COMMUNICATION" }, { 0x7CE9D3, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xAC319D, "Shenzhen TG-NET Botone Technology Co.,Ltd.", "SHENZHEN-TG-NET-BOTONE" }, { 0x8C705A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x08D09F, "Cisco Systems, Inc", "CISCO" }, { 0xD0DFC7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C4E36, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8823FE, "TTTech Computertechnik AG", "TTTECH-COMPUTERTECHNIK" }, { 0x98AAD7, "BLUE WAVE NETWORKING CO LTD", "BLUE-WAVE-NETWORKING" }, { 0xA44B15, "Sun Cupid Technology (HK) LTD", "SUN-CUPID-HK" }, { 0x508ACB, "SHENZHEN MAXMADE TECHNOLOGY CO., LTD.", "SHENZHEN-MAXMADE" }, { 0xC83E99, "6278", "6278" }, { 0xF08BFE, "COSTEL.,CO.LTD", "COSTEL" }, { 0x5435DF, "Symeo GmbH", "SYMEO" }, { 0xF43D80, "FAG Industrial Services GmbH", "FAG-INDUSTRIAL-SERVICES" }, { 0xFC01CD, "FUNDACION TEKNIKER", "FUNDACION-TEKNIKER" }, { 0x88E7A6, "iKnowledge Integration Corp.", "IKNOWLEDGE-INTEGRATION" }, { 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" }, { 0x700514, "LG Electronics", "LG-ELECTRONICS" }, { 0x7C6B33, "Tenyu Tech Co. Ltd.", "TENYU-TECH" }, { 0xCCB8F1, "EAGLE KINGDOM TECHNOLOGIES LIMITED", "EAGLE-KINGDOM-TECHNOLOGIES" }, { 0xDC2E6A, "HCT. Co., Ltd.", "HCT" }, { 0xCC6DA0, "Roku, Inc.", "ROKU" }, { 0x4C32D9, "M Rutty Holdings Pty. Ltd.", "M-RUTTY-HOLDINGS-PTY" }, { 0x50A733, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x603FC5, "COX CO., LTD", "COX" }, { 0x58920D, "Kinetic Avionics Limited", "KINETIC-AVIONICS" }, { 0x84D32A, "IEEE 1905.1", "IEEE-1905-1" }, { 0x207600, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xF0A225, "Private", "PRIVATE" }, { 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" }, { 0x34BCA6, "Beijing Ding Qing Technology, Ltd.", "BEIJING-DING-QING" }, { 0xD4C1FC, "Nokia Corporation", "NOKIA" }, { 0x48DCFB, "Nokia Corporation", "NOKIA" }, { 0xD0DF9A, "Liteon Technology Corporation", "LITEON" }, { 0x0418B6, "Private", "PRIVATE" }, { 0x98E79A, "Foxconn(NanJing) Communication Co.,Ltd.", "FOXCONN-NANJING-COMMUNICATION" }, { 0x54F5B6, "ORIENTAL PACIFIC INTERNATIONAL LIMITED", "ORIENTAL-PACIFIC" }, { 0x742F68, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xD067E5, "Dell Inc", "DELL" }, { 0x34A55D, "TECHNOSOFT INTERNATIONAL SRL", "TECHNOSOFT-SRL" }, { 0x34255D, "Shenzhen Loadcom Technology Co.,Ltd", "SHENZHEN-LOADCOM" }, { 0x1897FF, "TechFaith Wireless Technology Limited", "TECHFAITH-WIRELESS" }, { 0x0CDFA4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C8E76, "taskit GmbH", "TASKIT" }, { 0xB4D8DE, "iota Computing, Inc.", "IOTA-COMPUTING" }, { 0x54CDA7, "Fujian Shenzhou Electronic Co.,Ltd", "FUJIAN-SHENZHOU" }, { 0xD4024A, "Delphian Systems LLC", "DELPHIAN-LLC" }, { 0x84248D, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x08FC52, "OpenXS BV", "OPENXS" }, { 0x205B5E, "Shenzhen Wonhe Technology Co., Ltd", "SHENZHEN-WONHE" }, { 0xE4D53D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x24E6BA, "JSC Zavod im. Kozitsky", "JSC-ZAVOD-IM-KOZITSKY" }, { 0x8C8A6E, "ESTUN AUTOMATION TECHNOLOY CO., LTD", "ESTUN-AUTOMATION-TECHNOLOY" }, { 0xE0ED1A, "vastriver Technology Co., Ltd", "VASTRIVER" }, { 0xC83B45, "JRI-Maxant", "JRI-MAXANT" }, { 0x685E6B, "PowerRay Co., Ltd.", "POWERRAY" }, { 0x24EC99, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x9463D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB8621F, "Cisco Systems, Inc", "CISCO" }, { 0x3CC99E, "Huiyang Technology Co., Ltd", "HUIYANG" }, { 0xC8A1BA, "Neul Ltd", "NEUL" }, { 0xAC02EF, "Comsis", "COMSIS" }, { 0xC43A9F, "Siconix Inc.", "SICONIX" }, { 0xD0C282, "Cisco Systems, Inc", "CISCO" }, { 0x449CB5, "Alcomp, Inc", "ALCOMP" }, { 0x3C2763, "SLE quality engineering GmbH & Co. KG", "SLE-QUALITY-ENGINEERING" }, { 0x9C8E99, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xA4DB2E, "Kingspan Environmental Ltd", "KINGSPAN-ENVIRONMENTAL" }, { 0xF44EFD, "Actions Semiconductor Co.,Ltd.(Cayman Islands)", "ACTIONS-SEMICONDUCTOR-CAYMAN-ISLANDS" }, { 0xA49981, "FuJian Elite Power Tech CO.,LTD.", "FUJIAN-ELITE-POWER-TECH" }, { 0xB83A7B, "Worldplay (Canada) Inc.", "WORLDPLAY-CANADA" }, { 0xF4B549, "Yeastar Technology Co., Ltd.", "YEASTAR" }, { 0x783F15, "EasySYNC Ltd.", "EASYSYNC" }, { 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" }, { 0x3CD92B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xC436DA, "Rusteletech Ltd.", "RUSTELETECH" }, { 0x00FC70, "Intrepid Control Systems, Inc.", "INTREPID-CONTROL" }, { 0xA4EE57, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0xD0AFB6, "Linktop Technology Co., LTD", "LINKTOP" }, { 0x444F5E, "Pan Studios Co.,Ltd.", "PAN-STUDIOS" }, { 0x0C3956, "Observator instruments", "OBSERVATOR-INSTRUMENTS" }, { 0xCC051B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x688470, "eSSys Co.,Ltd", "ESSYS" }, { 0x3CBDD8, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0xD4F0B4, "Napco Security Technologies", "NAPCO-SECURITY-TECHNOLOGIES" }, { 0x40B3FC, "Logital Co. Limited ", "LOGITAL" }, { 0xD05FCE, "Hitachi Data Systems", "HITACHI-DATA" }, { 0x8C82A8, "Insigma Technology Co.,Ltd", "INSIGMA" }, { 0x38FEC5, "Ellips B.V.", "ELLIPS" }, { 0x24C86E, "Chaney Instrument Co.", "CHANEY-INSTRUMENT" }, { 0xD4D898, "Korea CNO Tech Co., Ltd", "KOREA-CNO-TECH" }, { 0x04180F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0xC0F8DA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x28F358, "2C - Trifonov & Co", "2C---TRIFONOV" }, { 0x304C7E, "Panasonic Electric Works Automation Controls Techno Co.,Ltd.", "PANASONIC-ELECTRIC-WORKS-AUTOMATION-CONTROLS-TECHNO" }, { 0x640F28, "2wire", "2WIRE" }, { 0x64D1A3, "Sitecom Europe BV", "SITECOM-EUROPE" }, { 0x3831AC, "WEG", "WEG" }, { 0x2C7ECF, "Onzo Ltd", "ONZO" }, { 0x1C7EE5, "D-Link International", "D-LINK" }, { 0xD4A425, "SMAX Technology Co., Ltd.", "SMAX" }, { 0x98F8DB, "Marini Impianti Industriali s.r.l.", "MARINI-IMPIANTI-INDUSTRIALI-S-R-L" }, { 0x140708, "Private", "PRIVATE" }, { 0xBC8199, "BASIC Co.,Ltd.", "BASIC" }, { 0x000726, "Shenzhen Gongjin Electronics Co., Ltd.", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x24470E, "PentronicAB", "PENTRONICAB" }, { 0x10E3C7, "Seohwa Telecom", "SEOHWA-TELECOM" }, { 0x14144B, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0xE84040, "Cisco Systems, Inc", "CISCO" }, { 0x0C8112, "Private", "PRIVATE" }, { 0x3822D6, "H3C Technologies Co., Limited", "H3C-TECHNOLOGIES" }, { 0x7C7D41, "Jinmuyu Electronics Co., Ltd.", "JINMUYU-ELECTRONICS" }, { 0x4C1480, "NOREGON SYSTEMS, INC", "NOREGON" }, { 0x8C71F8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA07591, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2CD2E7, "Nokia Corporation", "NOKIA" }, { 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" }, { 0x5C6D20, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE02A82, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 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" }, { 0xB870F4, "COMPAL INFORMATION (KUNSHAN) CO., LTD. ", "COMPAL-INFORMATION-KUNSHAN" }, { 0x90004E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA41BC0, "Fastec Imaging Corporation", "FASTEC-IMAGING" }, { 0xE01F0A, "Xslent Energy Technologies. LLC", "XSLENT-ENERGY-TECHNOLOGIES-LLC" }, { 0xF40321, "BeNeXt B.V.", "BENEXT" }, { 0x7C6193, "HTC Corporation", "HTC" }, { 0x2872F0, "ATHENA", "ATHENA" }, { 0x9C807D, "SYSCABLE Korea Inc.", "SYSCABLE-KOREA" }, { 0x180B52, "Nanotron Technologies GmbH", "NANOTRON-TECHNOLOGIES" }, { 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" }, { 0xB499BA, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xA4856B, "Q Electronics Ltd", "Q-ELECTRONICS" }, { 0x84EA99, "Vieworks", "VIEWORKS" }, { 0xE0B9A5, "AzureWave", "AZUREWAVE" }, { 0xDCCBA8, "Explora Technologies Inc", "EXPLORA-TECHNOLOGIES" }, { 0x58EECE, "Icon Time Systems", "ICON-TIME" }, { 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" }, { 0xBC83A7, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LT", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS-LT" }, { 0x60A10A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60DA23, "Estech Co.,Ltd", "ESTECH" }, { 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" }, { 0x90D7EB, "6278", "6278" }, { 0x4CB9C8, "CONET CO., LTD.", "CONET" }, { 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" }, { 0x50AF73, "Shenzhen Bitland Information Technology Co., Ltd.", "SHENZHEN-BITLAND-INFORMATION" }, { 0xB4E0CD, "Fusion-io, Inc", "FUSION-IO" }, { 0x4C8093, "Intel Corporate", "INTEL-CORPORATE" }, { 0x488E42, "DIGALOG GmbH", "DIGALOG" }, { 0xAC7289, "Intel Corporate", "INTEL-CORPORATE" }, { 0x286046, "Lantech Communications Global, Inc.", "LANTECH-COMMUNICATION-GLOBAL" }, { 0xA424B3, "FlatFrog Laboratories AB", "FLATFROG-LABORATORIES-AB" }, { 0x00B033, "OAO Izhevskiy radiozavod", "OAO-IZHEVSKIY-RADIOZAVOD" }, { 0x707EDE, "NASTEC LTD.", "NASTEC" }, { 0xCCBE71, "OptiLogix BV", "OPTILOGIX" }, { 0xD8B12A, "Panasonic Mobile Communications Co., Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 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" }, { 0x90507B, "Advanced PANMOBIL Systems GmbH & Co. KG", "ADVANCED-PANMOBIL" }, { 0xFC0FE6, "Sony Computer Entertainment Inc. ", "SONY-ENTERTAINMENT" }, { 0xB8F934, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x94FEF4, "SAGEMCOM", "SAGEMCOM" }, { 0x84DB2F, "Sierra Wireless Inc", "SIERRA-WIRELESS" }, { 0xA45055, "busware.de", "BUSWARE-DE" }, { 0xB4CFDB, "Shenzhen Jiuzhou Electric Co.,LTD", "SHENZHEN-JIUZHOU-ELECTRIC" }, { 0xCC0CDA, "Miljovakt AS", "MILJOVAKT-AS" }, { 0xC01242, "Alpha Security Products", "ALPHA-SECURITY-PRODUCTS" }, { 0xE05B70, "Innovid, Co., Ltd.", "INNOVID" }, { 0xF87B7A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x043604, "Gyeyoung I&T", "GYEYOUNG-I-T" }, { 0x50CE75, "Measy Electronics Ltd", "MEASY-ELECTRONICS" }, { 0x34F968, "ATEK Products, LLC", "ATEK-PRODUCTS-LLC" }, { 0xD0D0FD, "Cisco Systems, Inc", "CISCO" }, { 0xE839DF, "Askey Computer", "ASKEY" }, { 0xE8BE81, "SAGEMCOM", "SAGEMCOM" }, { 0xA45C27, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x706417, "ORBIS TECNOLOGIA ELECTRICA S.A.", "ORBIS-TECNOLOGIA-ELECTRICA" }, { 0x64FC8C, "Zonar Systems", "ZONAR" }, { 0xEC2368, "IntelliVoice Co.,Ltd.", "INTELLIVOICE" }, { 0xB45253, "Seagate Technology", "SEAGATE" }, { 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" }, { 0xE81132, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x8CE7B3, "Sonardyne International Ltd", "SONARDYNE" }, { 0xF8D756, "Simm Tronic Limited ", "SIMM-TRONIC" }, { 0xE087B1, "Nata-Info Ltd.", "NATA-INFO" }, { 0xA088B4, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 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" }, { 0x347877, "O-NET Communications(Shenzhen) Limited", "O-NET-COMMUNICATION-SHENZHEN" }, { 0x70A191, "Trendsetter Medical, LLC", "TRENDSETTER-MEDICAL-LLC" }, { 0xC4CD45, "Beijing Boomsense Technology CO.,LTD.", "BEIJING-BOOMSENSE" }, { 0xD0BB80, "SHL Telemedicine International Ltd.", "SHL-TELEMEDICINE" }, { 0x1C83B0, "Linked IP GmbH", "LINKED-IP" }, { 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" }, { 0x6C23B9, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0xC46354, "U-Raku, Inc.", "U-RAKU" }, { 0x20FEDB, "M2M Solution S.A.S.", "M2M-SOLUTION-S" }, { 0x405FBE, "RIM", "RIM" }, { 0xF065DD, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x706582, "Suzhou Hanming Technologies Co., Ltd.", "SUZHOU-HANMING-TECHNOLOGIES" }, { 0x28C0DA, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xA49B13, "Burroughs Payment Systems, Inc.", "BURROUGHS-PAYMENT" }, { 0x58BC27, "Cisco Systems, Inc", "CISCO" }, { 0xBC0DA5, "6278", "6278" }, { 0x7C8EE4, "6278", "6278" }, { 0xC8CD72, "SAGEMCOM", "SAGEMCOM" }, { 0x34D2C4, "RENA GmbH Print Systeme", "RENA-PRINT-SYSTEME" }, { 0x1CC1DE, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x80A1D7, "Shanghai DareGlobal Technologies Co.,Ltd ", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0xC802A6, "Beijing Newmine Technology", "BEIJING-NEWMINE" }, { 0xC84C75, "Cisco Systems, Inc", "CISCO" }, { 0x68EBAE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x284C53, "Intune Networks", "INTUNE-NETWORKS" }, { 0x00B5D6, "Omnibit Inc.", "OMNIBIT" }, { 0xF893F3, "VOLANS", "VOLANS" }, { 0x1C7508, "COMPAL INFORMATION (KUNSHAN) CO., LTD. ", "COMPAL-INFORMATION-KUNSHAN" }, { 0x4C0F6E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0x1078D2, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 0xCC6B98, "Minetec Wireless Technologies", "MINETEC-WIRELESS-TECHNOLOGIES" }, { 0x94C7AF, "Raylios Technology", "RAYLIOS" }, { 0x6854F5, "enLighted Inc", "ENLIGHTED" }, { 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" }, { 0x78EC22, "Shanghai Qihui Telecom Technology Co., LTD", "SHANGHAI-QIHUI-TELECOM" }, { 0x6487D7, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x7C3E9D, "PATECH", "PATECH" }, { 0x4C60D5, "airPointe of New Hampshire", "AIRPOINTE-OF-NEW-HAMPSHIRE" }, { 0x58170C, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x48F8E1, "Alcatel Lucent WT", "ALCATEL-LUCENT-WT" }, { 0xB8616F, "Accton Wireless Broadband(AWB), Corp.", "ACCTON-WIRELESS-BROADBAND-AWB" }, { 0xD45297, "nSTREAMS Technologies, Inc.", "NSTREAMS-TECHNOLOGIES" }, { 0xF45595, "HENGBAO Corporation LTD.", "HENGBAO" }, { 0xAC44F2, "Revolabs Inc", "REVOLABS" }, { 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" }, { 0xF02408, "Talaris (Sweden) AB", "TALARIS-SWEDEN-AB" }, { 0xA06986, "Wellav Technologies Ltd", "WELLAV-TECHNOLOGIES" }, { 0xD8543A, "6278", "6278" }, { 0xF02FD8, "Bi2-Vision", "BI2-VISION" }, { 0xC86CB6, "Optcom Co., Ltd.", "OPTCOM" }, { 0x081FF3, "Cisco Systems, Inc", "CISCO" }, { 0x5CE286, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x80711F, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x1CBDB9, "D-LINK INTERNATIONAL PTE LIMITED", "D-LINK-PTE" }, { 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" }, { 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" }, { 0x9889ED, "Anadem Information Inc.", "ANADEM-INFORMATION" }, { 0x102D96, "Looxcie Inc.", "LOOXCIE" }, { 0x3037A6, "Cisco Systems, Inc", "CISCO" }, { 0xACEA6A, "GENIX INFOCOMM CO., LTD.", "GENIX-INFOCOMM" }, { 0x7C2064, "Alcatel Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x5C35DA, "There Corporation Oy", "THERE-OY" }, { 0x005218, "Wuxi Keboda Electron Co.Ltd", "WUXI-KEBODA-ELECTRON" }, { 0xC09134, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0xB0E39D, "CAT SYSTEM CO.,LTD.", "CAT-SYSTEM" }, { 0x78A6BD, "DAEYEON Control&Instrument Co,.Ltd", "DAEYEON-CONTROL-INSTRUMENT" }, { 0x481249, "Luxcom Technologies Inc.", "LUXCOM-TECHNOLOGIES" }, { 0xBC7737, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB43DB2, "Degreane Horizon", "DEGREANE-HORIZON" }, { 0xC4823F, "Fujian Newland Auto-ID Tech. Co,.Ltd.", "FUJIAN-NEWLAND-AUTO-ID-TECH" }, { 0xF4C795, "WEY Elektronik AG", "WEY-ELEKTRONIK" }, { 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" }, { 0xF07BCB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x08F2F4, "Net One Partners Co.,Ltd.", "NET-ONE-PARTNERS" }, { 0x68EFBD, "Cisco Systems, Inc", "CISCO" }, { 0x5CFF35, "Wistron Corporation", "WISTRON" }, { 0x183BD2, "BYD Precision Manufacture Company Ltd.", "BYD-PRECISION-MANUFACTURE-COMPANY" }, { 0x2CCD27, "Precor Inc", "PRECOR" }, { 0xC45976, "Fugoo Coorporation", "FUGOO-COORPORATION" }, { 0xC8979F, "Nokia Corporation", "NOKIA" }, { 0xB0C8AD, "People Power Company", "PEOPLE-POWER-COMPANY" }, { 0xA8F274, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xD49C28, "JayBird LLC", "JAYBIRD-LLC" }, { 0x907F61, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0xC8D2C1, "Jetlun (Shenzhen) Corporation", "JETLUN-SHENZHEN" }, { 0xF0BCC8, "MaxID (Pty) Ltd", "MAXID-PTY" }, { 0x1886AC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x406186, "MICRO-STAR INT'L CO.,LTD", "MICRO-STAR" }, { 0x74E537, "RADSPIN", "RADSPIN" }, { 0x58F67B, "Xia Men UnionCore Technology LTD.", "XIA-MEN-UNIONCORE" }, { 0xA02EF3, "United Integrated Services Co., Led.", "UNITED-INTEGRATED-SERVICES-LED" }, { 0xA8CE90, "CVC", "CVC" }, { 0xF4ACC1, "Cisco Systems, Inc", "CISCO" }, { 0x584CEE, "Digital One Technologies, Limited", "DIGITAL-ONE-TECHNOLOGIES" }, { 0xE064BB, "DigiView S.r.l.", "DIGIVIEW-S-R-L" }, { 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" }, { 0x60D0A9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x942E63, "Finsİcur", "FINSİCUR" }, { 0x64ED57, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x00270E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002708, "Nordiag ASA", "NORDIAG-ASA" }, { 0x002701, "INCOstartec GmbH", "INCOSTARTEC" }, { 0x002702, "SolarEdge Technologies", "SOLAREDGE-TECHNOLOGIES" }, { 0x2046F9, "Advanced Network Devices (dba:AND)", "ADVANCED-NETWORK-DEVICES-DBA:AND" }, { 0x988B5D, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x6CD68A, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0xA8E3EE, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x681FD8, "Advanced Telemetry", "ADVANCED-TELEMETRY" }, { 0x0C8230, "SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD", "SHENZHEN-MAGNUS-TECHNOLOGIES" }, { 0x049F81, "Netscout Systems, Inc.", "NETSCOUT" }, { 0x50934F, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x34EF8B, "NTT Communications Corporation", "NTT-COMMUNICATION" }, { 0x38E98C, "Reco S.p.A.", "RECO-S-P-A" }, { 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" }, { 0xA4BADB, "Dell Inc.", "DELL" }, { 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" }, { 0x4C63EB, "Application Solutions (Electronics and Vision) Ltd", "APPLICATION-SOLUTIONS-ELECTRONICS-AND-VISION" }, { 0x64168D, "Cisco Systems, Inc", "CISCO" }, { 0xC01E9B, "Pixavi AS", "PIXAVI-AS" }, { 0x24D2CC, "SmartDrive Systems Inc.", "SMARTDRIVE" }, { 0x7C6C8F, "AMS NEVE LTD", "AMS-NEVE" }, { 0xC4E17C, "U2S co.", "U2S" }, { 0x201257, "Most Lucky Trading Ltd", "MOST-LUCKY-TRADING" }, { 0x2021A5, "LG Electronics Inc", "LG-ELECTRONICS" }, { 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" }, { 0xF4CE46, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xAC867E, "Create New Technology (HK) Limited Company", "CREATE-NEW-HK-COMPANY" }, { 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" }, { 0xA8C222, "TM-Research Inc.", "TM-RESEARCH" }, { 0x50252B, "Nethra Imaging Incorporated", "NETHRA-IMAGING-INCORPORATED" }, { 0xA4DA3F, "Bionics Corp.", "BIONICS" }, { 0x9C4E8E, "ALT Systems Ltd", "ALT" }, { 0x2421AB, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0xD0E40B, "Wearable Inc.", "WEARABLE" }, { 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" }, { 0xC417FE, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7C08D9, "Shanghai B-Star Technology Co", "SHANGHAI-B-STAR" }, { 0x448E81, "VIG", "VIG" }, { 0x00258A, "Pole/Zero Corporation", "POLE/ZERO" }, { 0x002589, "Hills Industries Limited", "HILLS-INDUSTRIES" }, { 0x002584, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x002567, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x00256D, "Broadband Forum", "BROADBAND-FORUM" }, { 0x002613, "Engel Axil S.L.", "ENGEL-AXIL-S-L" }, { 0x00260D, "Mercury Systems, Inc.", "MERCURY" }, { 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" }, { 0x0025F1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0025EF, "I-TEC Co., Ltd.", "I-TEC" }, { 0x0025E9, "i-mate Development, Inc.", "I-MATE-DEVELOPMENT" }, { 0x0025DF, "Private", "PRIVATE" }, { 0x002645, "Circontrol S.A.", "CIRCONTROL" }, { 0x00263F, "LIOS Technology GmbH", "LIOS" }, { 0x002639, "T.M. Electronics, Inc.", "T-M-ELECTRONICS" }, { 0x002632, "Instrumentation Technologies d.d.", "INSTRUMENTATION-TECHNOLOGIES-D-D" }, { 0x00262D, "Wistron Corporation", "WISTRON" }, { 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" }, { 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" }, { 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" }, { 0x0025B4, "Cisco Systems, Inc", "CISCO" }, { 0x0025B9, "Cypress Solutions Inc", "CYPRESS-SOLUTIONS" }, { 0x0025B3, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0025AD, "Manufacturing Resources International", "MANUFACTURING-RESOURCES" }, { 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" }, { 0x0025D8, "KOREA MAINTENANCE", "KOREA-MAINTENANCE" }, { 0x0025D3, "AzureWave Technologies, Inc", "AZUREWAVE-TECHNOLOGIES" }, { 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" }, { 0x002677, "DEIF A/S", "DEIF-A/S" }, { 0x002671, "AUTOVISION Co., Ltd", "AUTOVISION" }, { 0x00266A, "ESSENSIUM NV", "ESSENSIUM-NV" }, { 0x002664, "Core System Japan", "CORE-SYSTEM-JAPAN" }, { 0x00265E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002658, "T-Platforms (Cyprus) Limited", "T-PLATFORMS-CYPRUS" }, { 0x002650, "2Wire", "2WIRE" }, { 0x0026FC, "AcSiP Technology Corp.", "ACSIP" }, { 0x0026FB, "AirDio Wireless, Inc.", "AIRDIO-WIRELESS" }, { 0x0026F5, "XRPLUS Inc.", "XRPLUS" }, { 0x0026EF, "Technology Advancement Group, Inc.", "ADVANCEMENT-GROUP" }, { 0x0026E9, "SP Corp", "SP" }, { 0x0026E2, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0x0026BD, "JTEC Card & Communication Co., Ltd.", "JTEC-CARD-COMMUNICATION" }, { 0x0026B9, "Dell Inc", "DELL" }, { 0x0026B3, "Thales Communications Inc", "THALES-COMMUNICATION" }, { 0x0026AD, "Arada Systems, Inc.", "ARADA" }, { 0x00246C, "ARUBA NETWORKS, INC.", "ARUBA-NETWORKS" }, { 0x002471, "Fusion MultiSystems dba Fusion-io", "FUSION-MULTISYSTEMS-DBA-FUSION-IO" }, { 0x002473, "3COM EUROPE LTD", "3COM" }, { 0x002465, "Elentec", "ELENTEC" }, { 0x002460, "Giaval Science Development Co. Ltd.", "GIAVAL-SCIENCE-DEVELOPMENT" }, { 0x00245B, "RAIDON TECHNOLOGY, INC.", "RAIDON" }, { 0x00244E, "RadChips, Inc.", "RADCHIPS" }, { 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" }, { 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" }, { 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" }, { 0x002501, "JSC Supertel", "JSC-SUPERTEL" }, { 0x0024FA, "Hilger u. Kern GMBH", "HILGER-U-KERN" }, { 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" }, { 0x0024A5, "Buffalo Inc.", "BUFFALO" }, { 0x0024A3, "Sonim Technologies Inc", "SONIM-TECHNOLOGIES" }, { 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" }, { 0x002447, "Kaztek Systems", "KAZTEK" }, { 0x002442, "Axona Limited", "AXONA" }, { 0x00243D, "Emerson Appliance Motors and Controls", "EMERSON-APPLIANCE-MOTORS-AND-CONTROLS" }, { 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" }, { 0x0024F3, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0024F5, "NDS Surgical Imaging", "NDS-SURGICAL-IMAGING" }, { 0x0024EE, "Wynmax Inc.", "WYNMAX" }, { 0x0024E7, "Plaster Networks", "PLASTER-NETWORKS" }, { 0x0024E2, "HASEGAWA ELECTRIC CO.,LTD.", "HASEGAWA-ELECTRIC" }, { 0x0024DB, "Alcohol Monitoring Systems", "ALCOHOL-MONITORING" }, { 0x0024D6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0024CF, "Inscape Data Corporation", "INSCAPE-DATA" }, { 0x0024D4, "FREEBOX SA", "FREEBOX" }, { 0x0024C8, "Broadband Solutions Group", "BROADBAND-SOLUTIONS-GROUP" }, { 0x002560, "Ibridge Networks & Communications Ltd.", "IBRIDGE-NETWORKS-COMMUNICATION" }, { 0x00255B, "CoachComm, LLC", "COACHCOMM-LLC" }, { 0x002554, "Pixel8 Networks", "PIXEL8-NETWORKS" }, { 0x00254D, "Singapore Technologies Electronics Limited", "SINGAPORE-TECHNOLOGIES-ELECTRONICS" }, { 0x00254E, "Vertex Wireless Co., Ltd.", "VERTEX-WIRELESS" }, { 0x002548, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x002528, "Daido Signal Co., Ltd.", "DAIDO-SIGNAL" }, { 0x002523, "OCP Inc.", "OCP" }, { 0x00251E, "ROTEL TECHNOLOGIES", "ROTEL-TECHNOLOGIES" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x0023AF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023AA, "HFR, Inc.", "HFR" }, { 0x0023A3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023A9, "Beijing Detianquan Electromechanical Equipment Co., Ltd", "BEIJING-DETIANQUAN-ELECTROMECHANICAL-EQUIPMENT" }, { 0x00239C, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x00239D, "Mapower Electronics Co., Ltd", "MAPOWER-ELECTRONICS" }, { 0x002397, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0x002392, "Proteus Industries Inc.", "PROTEUS-INDUSTRIES" }, { 0x00238D, "Techno Design Co., Ltd.", "TECHNO-DESIGN" }, { 0x002389, "HANGZHOU H3C Technologies Co., Ltd.", "HANGZHOU-H3C-TECHNOLOGIES" }, { 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" }, { 0x002316, "KISAN ELECTRONICS CO", "KISAN-ELECTRONICS" }, { 0x00230F, "Hirsch Electronics Corporation", "HIRSCH-ELECTRONICS" }, { 0x002308, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x00230A, "ARBURG GmbH & Co KG", "ARBURG" }, { 0x002309, "Janam Technologies LLC", "JANAM-TECHNOLOGIES-LLC" }, { 0x002303, "LITE-ON IT Corporation", "LITE-ON-IT" }, { 0x0022FC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00229A, "Lastar, Inc.", "LASTAR" }, { 0x002299, "SeaMicro Inc.", "SEAMICRO" }, { 0x002294, "Kyocera Corporation", "KYOCERA" }, { 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" }, { 0x002275, "Belkin International Inc.", "BELKIN" }, { 0x00227A, "Telecom Design", "TELECOM-DESIGN" }, { 0x00226B, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x002402, "Op-Tection GmbH", "OP-TECTION" }, { 0x0023FC, "Ultra Stereo Labs, Inc", "ULTRA-STEREO-LABS" }, { 0x0023F2, "TVLogic", "TVLOGIC" }, { 0x0023EE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023E8, "Demco Corp.", "DEMCO" }, { 0x0023E1, "Cavena Image Products AB", "CAVENA-IMAGE-PRODUCTS-AB" }, { 0x00235B, "Gulfstream", "GULFSTREAM" }, { 0x00234D, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00234E, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002348, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x002341, "Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR", "SIEMENS-AB-INFRASTRUCTURE-CITIES-BUILDING-TECHNOLOGIES-DIVISION-IC-BT-SSP-SP-BA-PR" }, { 0x00233C, "Alflex", "ALFLEX" }, { 0x00233B, "C-Matic Systems Ltd", "C-MATIC" }, { 0x002335, "Linkflex Co.,Ltd", "LINKFLEX" }, { 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" }, { 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" }, { 0x0022ED, "TSI Power Corporation", "TSI-POWER" }, { 0x0022F2, "SunPower Corp", "SUNPOWER" }, { 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" }, { 0x002205, "WeLink Solutions, Inc.", "WELINK-SOLUTIONS" }, { 0x002206, "Cyberdyne Inc.", "CYBERDYNE" }, { 0x0021FE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x002175, "Pacific Satellite International Ltd.", "PACIFIC-SATELLITE" }, { 0x00216F, "SymCom, Inc.", "SYMCOM" }, { 0x002170, "Dell Inc", "DELL" }, { 0x002169, "Prologix, LLC.", "PROLOGIX-LLC" }, { 0x002163, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x002162, "Nortel", "NORTEL" }, { 0x00215D, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002156, "Cisco Systems, Inc", "CISCO" }, { 0x0021A3, "Micromint", "MICROMINT" }, { 0x002199, "Vacon Plc", "VACON-PLC" }, { 0x00219E, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 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" }, { 0x00217C, "2Wire", "2WIRE" }, { 0x002261, "Frontier Silicon Ltd", "FRONTIER-SILICON" }, { 0x002266, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00225D, "Digicable Network India Pvt. Ltd.", "DIGICABLE-NETWORK-INDIA-PVT" }, { 0x00225C, "Multimedia & Communication Technology", "MULTIMEDIA-COMMUNICATION" }, { 0x002257, "3COM EUROPE LTD", "3COM" }, { 0x00224E, "SEEnergy Corp.", "SEENERGY" }, { 0x002247, "DAC ENGINEERING CO., LTD.", "DAC-ENGINEERING" }, { 0x00223D, "JumpGen Systems, LLC", "JUMPGEN-LLC" }, { 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" }, { 0x002150, "EYEVIEW ELECTRONICS", "EYEVIEW-ELECTRONICS" }, { 0x00214A, "Pixel Velocity, Inc", "PIXEL-VELOCITY" }, { 0x00210D, "SAMSIN INNOTEC", "SAMSIN-INNOTEC" }, { 0x002143, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002141, "RADLIVE", "RADLIVE" }, { 0x002137, "Bay Controls, LLC", "BAY-CONTROLS-LLC" }, { 0x00212D, "SCIMOLEX CORPORATION", "SCIMOLEX" }, { 0x002133, "Building B, Inc", "BUILDING-B" }, { 0x002237, "Shinhint Group", "SHINHINT-GROUP" }, { 0x002238, "LOGIPLUS", "LOGIPLUS" }, { 0x002231, "SMT&C Co., Ltd.", "SMT-C" }, { 0x00222B, "Nucomm, Inc.", "NUCOMM" }, { 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" }, { 0x002121, "VRmagic GmbH", "VRMAGIC" }, { 0x002126, "Shenzhen Torch Equipment Co., Ltd.", "SHENZHEN-TORCH-EQUIPMENT" }, { 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" }, { 0x001FEF, "SHINSEI INDUSTRIES CO.,LTD", "SHINSEI-INDUSTRIES" }, { 0x001FE8, "KURUSUGAWA Electronics Industry Inc,.", "KURUSUGAWA-ELECTRONICS-INDUSTRY" }, { 0x001FDC, "Mobile Safe Track Ltd", "MOBILE-SAFE-TRACK" }, { 0x001FE3, "LG Electronics", "LG-ELECTRONICS" }, { 0x001FD7, "TELERAD SA", "TELERAD" }, { 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" }, { 0x001F4E, "ConMed Linvatec", "CONMED-LINVATEC" }, { 0x001F53, "GEMAC Gesellschaft fĵr Mikroelektronikanwendung Chemnitz mbH", "GEMAC-GESELLSCHAFT-FĵR-MIKROELEKTRONIKANWENDUNG-CHEMNITZ-MBH" }, { 0x001F54, "Lorex Technology Inc.", "LOREX" }, { 0x001F47, "MCS Logic Inc.", "MCS-LOGIC" }, { 0x001F3E, "RP-Technik e.K.", "RP-TECHNIK-E-K" }, { 0x001F42, "Etherstack plc", "ETHERSTACK-PLC" }, { 0x001F41, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001F39, "Construcciones y Auxiliar de Ferrocarriles, S.A.", "CONSTRUCCIONES-Y-AUXILIAR-DE-FERROCARRILES" }, { 0x001F2B, "Orange Logic", "ORANGE-LOGIC" }, { 0x001F32, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001F2C, "Starbridge Networks", "STARBRIDGE-NETWORKS" }, { 0x001F26, "Cisco Systems, Inc", "CISCO" }, { 0x001F1F, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x001FAC, "Goodmill Systems Ltd", "GOODMILL" }, { 0x001FA7, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 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" }, { 0x001FCC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001FCB, "NIW Solutions", "NIW-SOLUTIONS" }, { 0x001FCD, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x001FD2, "COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD.", "COMMTECH-MACAO-COMMERCIAL-OFFSHORE" }, { 0x001FBF, "Fulhua Microelectronics Corp. Taiwan Branch", "FULHUA-MICROELECTRONICS-TAIWAN-BRANCH" }, { 0x001FBA, "BoYoung Tech. & Marketing, Inc.", "BOYOUNG-TECH-MARKETING" }, { 0x001FB3, "2Wire", "2WIRE" }, { 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" }, { 0x001E4F, "Dell Inc.", "DELL" }, { 0x001E4A, "Cisco Systems, Inc", "CISCO" }, { 0x001E45, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001E46, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E40, "Shanghai DareGlobal Technologies Co.,Ltd.", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x001F1A, "Prominvest", "PROMINVEST" }, { 0x001F19, "BEN-RI ELECTRONICA S.A.", "BEN-RI-ELECTRONICA" }, { 0x001F13, "S.& A.S. Ltd.", "S-A-S" }, { 0x001F0F, "Select Engineered Systems", "SELECT-ENGINEERED" }, { 0x001F09, "JASTEC CO., LTD.", "JASTEC" }, { 0x001EFD, "Microbit 2.0 AB", "MICROBIT-2-0-AB" }, { 0x001F02, "Pixelmetrix Corporation Pte Ltd", "PIXELMETRIX-PTE" }, { 0x001EF0, "Gigafin Networks", "GIGAFIN-NETWORKS" }, { 0x001EC6, "Obvius Holdings LLC", "OBVIUS-HOLDINGS-LLC" }, { 0x001EC1, "3COM EUROPE LTD", "3COM" }, { 0x001EBA, "High Density Devices AS", "HIGH-DENSITY-DEVICES-AS" }, { 0x001EB3, "Primex Wireless", "PRIMEX-WIRELESS" }, { 0x001EB4, "UNIFAT TECHNOLOGY LTD.", "UNIFAT" }, { 0x001EAE, "Continental Automotive Systems", "CONTINENTAL-AUTOMOTIVE" }, { 0x001EA3, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001EA8, "Datang Mobile Communications Equipment CO.,LTD", "DATANG-MOBILE-COMMUNICATION-EQUIPMENT" }, { 0x001E9C, "Fidustron INC", "FIDUSTRON" }, { 0x001E95, "SIGMALINK", "SIGMALINK" }, { 0x001E96, "Sepura Plc", "SEPURA-PLC" }, { 0x001E90, "Elitegroup Computer Systems Co", "ELITEGROUP" }, { 0x001E8B, "Infra Access Korea Co., Ltd.", "INFRA-ACCESS-KOREA" }, { 0x001E86, "MEL Co.,Ltd.", "MEL" }, { 0x001E7F, "CBM of America", "CBM-OF-AMERICA" }, { 0x001E7A, "Cisco Systems, Inc", "CISCO" }, { 0x001E79, "Cisco Systems, Inc", "CISCO" }, { 0x001E75, "LG Electronics", "LG-ELECTRONICS" }, { 0x001E6F, "Magna-Power Electronics, Inc.", "MAGNA-POWER-ELECTRONICS" }, { 0x001E70, "Cobham Defence Communications Ltd", "COBHAM-DEFENCE-COMMUNICATION" }, { 0x001E69, "Thomson Inc.", "THOMSON" }, { 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" }, { 0x001D2C, "Wavetrend Technologies (Pty) Limited", "WAVETREND-TECHNOLOGIES-PTY" }, { 0x001D20, "COMTREND CO.", "COMTREND" }, { 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" }, { 0x001D00, "Brivo Systems, LLC", "BRIVO-LLC" }, { 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" }, { 0x001CD7, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x001CD0, "Circleone Co.,Ltd.", "CIRCLEONE" }, { 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" }, { 0x001D56, "Kramer Electronics Ltd.", "KRAMER-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" }, { 0x001CC4, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x001DC8, "Navionics Research Inc., dba SCADAmetrics", "NAVIONICS-RESEARCH-DBA-SCADAMETRICS" }, { 0x001DCD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DC1, "Audinate Pty L", "AUDINATE-PTY-L" }, { 0x001DBC, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001DBB, "Dynamic System Electronics Corp.", "DYNAMIC-SYSTEM-ELECTRONICS" }, { 0x001DB5, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x001DAB, "SwissQual License AG", "SWISSQUAL-LICENSE" }, { 0x001DA4, "Hangzhou System Technology CO., LTD", "HANGZHOU-SYSTEM" }, { 0x001D9F, "MATT R.P.Traczynscy Sp.J.", "MATT-R-P-TRACZYNSCY-SP-J" }, { 0x001D98, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D92, "MICRO-STAR INT'L CO.,LTD.", "MICRO-STAR" }, { 0x001D91, "Digitize, Inc", "DIGITIZE" }, { 0x001D8C, "La Crosse Technology LTD", "LA-CROSSE" }, { 0x001E09, "ZEFATEK Co.,LTD", "ZEFATEK" }, { 0x001E04, "Hanson Research Corporation", "HANSON-RESEARCH" }, { 0x001DFD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x001DE0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001DE5, "Cisco Systems, Inc", "CISCO" }, { 0x001E39, "Comsys Communication Ltd.", "COMSYS-COMMUNICATION" }, { 0x001E34, "CryptoMetrics", "CRYPTOMETRICS" }, { 0x001E33, "Inventec Corporation", "INVENTEC" }, { 0x001E2D, "STIM", "STIM" }, { 0x001E26, "Digifriends Co. Ltd", "DIGIFRIENDS" }, { 0x001E21, "Qisda Co.", "QISDA" }, { 0x001E1A, "Best Source Taiwan Inc.", "BEST-SOURCE-TAIWAN" }, { 0x001E14, "Cisco Systems, Inc", "CISCO" }, { 0x001E0A, "Syba Tech Limited", "SYBA-TECH" }, { 0x001C68, "Anhui Sun Create Electronics Co., Ltd", "ANHUI-SUN-CREATE-ELECTRONICS" }, { 0x001C61, "Galaxy Microsystems LImited", "GALAXY-MICROSYSTEMS" }, { 0x001C55, "Shenzhen Kaifa Technology Co.", "SHENZHEN-KAIFA" }, { 0x001C5A, "Advanced Relay Corporation", "ADVANCED-RELAY" }, { 0x001C50, "TCL Technoly Electronics(Huizhou)Co.,Ltd", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 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" }, { 0x001BD5, "Cisco Systems, Inc", "CISCO" }, { 0x001BCE, "Measurement Devices Ltd", "MEASUREMENT-DEVICES" }, { 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" }, { 0x001BB1, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x001BB2, "Intellect International NV", "INTELLECT-NV" }, { 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" }, { 0x001AF1, "Embedded Artists AB", "EMBEDDED-ARTISTS-AB" }, { 0x001AF6, "Woven Systems, Inc.", "WOVEN" }, { 0x001AEC, "Keumbee Electronics Co.,Ltd.", "KEUMBEE-ELECTRONICS" }, { 0x001ADE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001AE0, "Mythology Tech Express Inc.", "MYTHOLOGY-TECH-EXPRESS" }, { 0x001AE5, "Mvox Technologies Inc.", "MVOX-TECHNOLOGIES" }, { 0x001C9B, "FEIG ELECTRONIC GmbH", "FEIG" }, { 0x001C94, "LI-COR Biosciences", "LI-COR-BIOSCIENCES" }, { 0x001C8E, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x001C8D, "Mesa Imaging", "MESA-IMAGING" }, { 0x001C88, "TRANSYSTEM INC.", "TRANSYSTEM" }, { 0x001C7E, "Toshiba", "TOSHIBA" }, { 0x001C83, "New Level Telecom Co., Ltd.", "NEW-LEVEL-TELECOM" }, { 0x001C7A, "Perfectone Netware Company Ltd", "PERFECTONE-NETWARE-COMPANY" }, { 0x001C79, "Cohesive Financial Technologies LLC", "COHESIVE-FINANCIAL-TECHNOLOGIES-LLC" }, { 0x001C7B, "Castlenet Technology Inc.", "CASTLENET" }, { 0x001C74, "Syswan Technologies Inc.", "SYSWAN-TECHNOLOGIES" }, { 0x001C6D, "KYOHRITSU ELECTRONIC INDUSTRY CO., LTD.", "KYOHRITSU-INDUSTRY" }, { 0x001C08, "Echo360, Inc.", "ECHO360" }, { 0x001C02, "Pano Logic", "PANO-LOGIC" }, { 0x001C01, "ABB Oy Drives", "ABB-OY-DRIVES" }, { 0x001C03, "Betty TV Technology AG", "BETTY-TV" }, { 0x001BF5, "Tellink Sistemas de Telecomunicaci³n S.L.", "TELLINK-SISTEMAS-DE-TELECOMUNICACI³N-S-L" }, { 0x001BEE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001BF0, "Value Platforms Limited", "VALUE-PLATFORMS" }, { 0x001BE8, "Ultratronik GmbH", "ULTRATRONIK" }, { 0x001BE1, "ViaLogy", "VIALOGY" }, { 0x001BDC, "Vencer Co., Ltd.", "VENCER" }, { 0x001B75, "Hypermedia Systems", "HYPERMEDIA" }, { 0x001B77, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001B70, "IRI Ubiteq, INC.", "IRI-UBITEQ" }, { 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" }, { 0x001B32, "QLogic Corporation", "QLOGIC" }, { 0x001B2B, "Cisco Systems, Inc", "CISCO" }, { 0x001B26, "RON-Telecom ZAO", "RON-TELECOM-ZAO" }, { 0x001B1C, "Coherent", "COHERENT" }, { 0x001B21, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001B1A, "e-trees Japan, Inc.", "E-TREES-JAPAN" }, { 0x001BA5, "MyungMin Systems, Inc.", "MYUNGMIN" }, { 0x001BA0, "Awox", "AWOX" }, { 0x001B99, "KS System GmbH", "KS-SYSTEM" }, { 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" }, { 0x001C31, "Mobile XP Technology Co., LTD", "MOBILE-XP" }, { 0x001C2C, "Synapse", "SYNAPSE" }, { 0x001C14, "VMware, Inc", "VMWARE" }, { 0x001C1B, "Hyperstone GmbH", "HYPERSTONE" }, { 0x001C0F, "Cisco Systems, Inc", "CISCO" }, { 0x001A11, "Google Inc.", "GOOGLE" }, { 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" }, { 0x0019F4, "Convergens Oy Ltd", "CONVERGENS-OY" }, { 0x0019ED, "Axesstel Inc.", "AXESSTEL" }, { 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" }, { 0x001A79, "TELECOMUNICATION TECHNOLOGIES LTD.", "TELECOMUNICATION-TECHNOLOGIES" }, { 0x001A99, "Smarty (HZ) Information Electronics Co., Ltd", "SMARTY-HZ-INFORMATION-ELECTRONICS" }, { 0x001A9B, "ADEC & Parter AG", "ADEC-PARTER" }, { 0x001AA0, "Dell Inc", "DELL" }, { 0x001A9A, "Skyworth Digital technology(shenzhen)co.ltd.", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x001A8A, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x001A8F, "Nortel", "NORTEL" }, { 0x0019E1, "Nortel", "NORTEL" }, { 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" }, { 0x001A3A, "Dongahelecomm", "DONGAHELECOMM" }, { 0x001A3F, "intelbras", "INTELBRAS" }, { 0x001A41, "INOCOVA Co.,Ltd", "INOCOVA" }, { 0x001A2E, "Ziova Coporation", "ZIOVA-COPORATION" }, { 0x001A33, "ASI Communications, Inc.", "ASI-COMMUNICATION" }, { 0x001A29, "Johnson Outdoors Marine Electronics, Inc", "JOHNSON-OUTDOORS-MARINE-ELECTRONICS" }, { 0x001A1D, "PChome Online Inc.", "PCHOME-ONLINE" }, { 0x001A24, "Galaxy Telecom Technologies Ltd", "GALAXY-TELECOM-TECHNOLOGIES" }, { 0x001A16, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001A18, "Advanced Simulation Technology inc.", "ADVANCED-SIMULATION" }, { 0x001981, "Vivox Inc", "VIVOX" }, { 0x001983, "CCT R&D Limited", "CCT-R-D" }, { 0x001988, "Wi2Wi, Inc", "WI2WI" }, { 0x001975, "Beijing Huisen networks technology Inc", "BEIJING-HUISEN-NETWORKS" }, { 0x00197C, "Riedel Communications GmbH", "RIEDEL-COMMUNICATION" }, { 0x001969, "Nortel", "NORTEL" }, { 0x001970, "Z-Com, Inc.", "Z-COM" }, { 0x001964, "Doorking Inc.", "DOORKING" }, { 0x00195F, "Valemount Networks Corporation", "VALEMOUNT-NETWORKS" }, { 0x0019A5, "RadarFind Corporation", "RADARFIND" }, { 0x0019AC, "GSP SYSTEMS Inc.", "GSP" }, { 0x0019B1, "Arrow7 Corporation", "ARROW7" }, { 0x001999, "Fujitsu Technology Solutions", "FUJITSU-SOLUTIONS" }, { 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" }, { 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" }, { 0x001AC6, "Micro Control Designs", "MICRO-CONTROL-DESIGNS" }, { 0x001ABC, "U4EA Technologies Ltd", "U4EA-TECHNOLOGIES" }, { 0x001AC1, "3Com Ltd", "3COM" }, { 0x001A61, "PacStar Corp.", "PACSTAR" }, { 0x001A66, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001A46, "Digital Multimedia Technology Co., Ltd", "DIGITAL-MULTIMEDIA" }, { 0x001A94, "Votronic GmbH", "VOTRONIC" }, { 0x001A7E, "LN Srithai Comm Ltd.", "LN-SRITHAI-COMM" }, { 0x001A83, "Pegasus Technologies Inc.", "PEGASUS-TECHNOLOGIES" }, { 0x001A74, "Procare International Co", "PROCARE" }, { 0x001A6D, "Cisco Systems, Inc", "CISCO" }, { 0x001A68, "Weltec Enterprise Co., Ltd.", "WELTEC" }, { 0x00184F, "8 Ways Technology Corp.", "8-WAYS" }, { 0x001854, "Argard Co., Ltd", "ARGARD" }, { 0x001856, "EyeFi, Inc", "EYEFI" }, { 0x001848, "Vecima Networks Inc.", "VECIMA-NETWORKS" }, { 0x00183C, "Encore Software Limited", "ENCORE-SOFTWARE" }, { 0x001841, "High Tech Computer Corp", "HIGH-TECH" }, { 0x001843, "Dawevision Ltd", "DAWEVISION" }, { 0x001804, "E-TEK DIGITAL TECHNOLOGY LIMITED", "E-TEK-DIGITAL" }, { 0x001807, "Fanstel Corp.", "FANSTEL" }, { 0x00180C, "Optelian Access Networks", "OPTELIAN-ACCESS-NETWORKS" }, { 0x0017F1, "Renu Electronics Pvt Ltd", "RENU-ELECTRONICS-PVT" }, { 0x0017F3, "Harris Corparation", "HARRIS-CORPARATION" }, { 0x0017F8, "Motech Industries Inc.", "MOTECH-INDUSTRIES" }, { 0x0017FF, "PLAYLINE Co.,Ltd.", "PLAYLINE" }, { 0x0017E5, "6278", "6278" }, { 0x0017EC, "6278", "6278" }, { 0x001953, "Chainleader Communications Corp.", "CHAINLEADER-COMMUNICATION" }, { 0x001958, "Bluetooth SIG, Inc.", "BLUETOOTH-SIG" }, { 0x00195A, "Jenaer Antriebstechnik GmbH", "JENAER-ANTRIEBSTECHNIK" }, { 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" }, { 0x00192C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001931, "Balluff GmbH", "BALLUFF" }, { 0x001826, "Cale Access AB", "CALE-ACCESS-AB" }, { 0x00182B, "Softier", "SOFTIER" }, { 0x001832, "6278", "6278" }, { 0x001837, "Universal ABIT Co., Ltd.", "UNIVERSAL-ABIT" }, { 0x001818, "Cisco Systems, Inc", "CISCO" }, { 0x00181A, "AVerMedia Information Inc.", "AVERMEDIA-INFORMATION" }, { 0x00181F, "Palmmicro Communications", "PALMMICRO-COMMUNICATION" }, { 0x001813, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0018F5, "Shenzhen Streaming Video Technology Company Limited", "SHENZHEN-STREAMING-VIDEO-COMPANY" }, { 0x0018F7, "Kameleon Technologies", "KAMELEON-TECHNOLOGIES" }, { 0x0018FC, "Altec Electronic AG", "ALTEC" }, { 0x0018F0, "JOYTOTO Co., Ltd.", "JOYTOTO" }, { 0x0018E9, "Numata Corporation", "NUMATA" }, { 0x0018E4, "YIGUANG", "YIGUANG" }, { 0x0018DD, "Silicondust Engineering Ltd", "SILICONDUST-ENGINEERING" }, { 0x0018D1, "Siemens Home & Office Comm. Devices", "SIEMENS-HOME-OFFICE-COMM-DEVICES" }, { 0x0018D6, "Swirlnet A/S", "SWIRLNET-A/S" }, { 0x0018D8, "ARCH METER Corporation", "ARCH-METER" }, { 0x0018C0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0018C7, "Real Time Automation", "REAL-TIME-AUTOMATION" }, { 0x0018CC, "AXIOHM SAS", "AXIOHM-SAS" }, { 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" }, { 0x001920, "KUME electric Co.,Ltd.", "KUME-ELECTRIC" }, { 0x001925, "Intelicis Corporation", "INTELICIS" }, { 0x00190D, "IEEE 1394c", "IEEE-1394C" }, { 0x001912, "Welcat Inc", "WELCAT" }, { 0x001914, "Winix Co., Ltd", "WINIX" }, { 0x001919, "ASTEL Inc.", "ASTEL" }, { 0x001901, "F1MEDIA", "F1MEDIA" }, { 0x001906, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x00188B, "Dell Inc", "DELL" }, { 0x00187D, "Armorlink shanghai Co. Ltd", "ARMORLINK-SHANGHAI" }, { 0x00187F, "ZODIANET", "ZODIANET" }, { 0x00186C, "Neonode AB", "NEONODE-AB" }, { 0x001871, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001878, "Mackware GmbH", "MACKWARE" }, { 0x001867, "Datalogic ADC", "DATALOGIC-ADC" }, { 0x00185B, "Network Chemistry, Inc", "NETWORK-CHEMISTRY" }, { 0x001862, "Seagate Technology", "SEAGATE" }, { 0x001710, "Casa Systems Inc.", "CASA" }, { 0x001715, "Qstik", "QSTIK" }, { 0x001717, "Leica Geosystems AG", "LEICA-GEOSYSTEMS" }, { 0x00170B, "Contela, Inc.", "CONTELA" }, { 0x001706, "Techfaith Wireless Communication Technology Limited.", "TECHFAITH-WIRELESS-COMMUNICATION" }, { 0x0016FA, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x0016FF, "Wamin Optocomm Mfg Corp", "WAMIN-OPTOCOMM-MFG" }, { 0x0016F3, "CAST Information Co., Ltd", "CAST-INFORMATION" }, { 0x0016EE, "Royaldigital Inc.", "ROYALDIGITAL" }, { 0x0016E7, "Dynamix Promotions Limited", "DYNAMIX-PROMOTIONS" }, { 0x0016EC, "Elitegroup Computer Systems Co., Ltd.", "ELITEGROUP" }, { 0x0016DB, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0016E0, "3Com Ltd", "3COM" }, { 0x0016D6, "TDA Tech Pty Ltd", "TDA-TECH-PTY" }, { 0x0016C3, "BA Systems Inc", "BA" }, { 0x0016CA, "Nortel", "NORTEL" }, { 0x0016D1, "ZAT a.s.", "ZAT-A-S" }, { 0x0016BE, "INFRANET, Inc.", "INFRANET" }, { 0x0016B7, "Seoul Commtech", "SEOUL-COMMTECH" }, { 0x0017D4, "Monsoon Multimedia, Inc", "MONSOON-MULTIMEDIA" }, { 0x0017D9, "AAI Corporation", "AAI" }, { 0x0017E0, "Cisco Systems, Inc", "CISCO" }, { 0x0017C8, "KYOCERA Document Solutions Inc.", "KYOCERA-DOCUMENT-SOLUTIONS" }, { 0x0017CA, "Qisda Corporation", "QISDA" }, { 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" }, { 0x0017B0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00179F, "Apricorn", "APRICORN" }, { 0x0017A4, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0017A9, "Sentivision", "SENTIVISION" }, { 0x00179A, "D-Link Corporation", "D-LINK" }, { 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" }, { 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" }, { 0x001682, "Pro Dex, Inc", "PRO-DEX" }, { 0x001687, "Chubb CSC-Vendor AP", "CHUBB-CSC-VENDOR-AP" }, { 0x00167B, "Haver&Boecker", "HAVER-BOECKER" }, { 0x00BAC0, "Biometric Access Company", "BIOMETRIC-ACCESS-COMPANY" }, { 0x001673, "Bury GmbH & Co. KG", "BURY" }, { 0x001676, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001671, "Symphox Information Co.", "SYMPHOX-INFORMATION" }, { 0x001665, "Cellon France", "CELLON-FRANCE" }, { 0x00166A, "TPS", "TPS" }, { 0x00165E, "Precision I/O", "PRECISION-I/O" }, { 0x0016B2, "DriveCam Inc", "DRIVECAM" }, { 0x0016AB, "Dansensor A/S", "DANSENSOR-A/S" }, { 0x0016B0, "VK Corporation", "VK" }, { 0x0016A6, "Dovado FZ-LLC", "DOVADO-FZ-LLC" }, { 0x00169A, "Quadrics Ltd", "QUADRICS" }, { 0x0016A1, "3Leaf Networks", "3LEAF-NETWORKS" }, { 0x001695, "AVC Technology (International) Limited", "AVC" }, { 0x001693, "PowerLink Technology Inc.", "POWERLINK" }, { 0x00168E, "Vimicro corporation", "VIMICRO" }, { 0x001751, "Online Corporation", "ONLINE" }, { 0x001753, "nFore Technology Inc.", "NFORE" }, { 0x001758, "ThruVision Ltd", "THRUVISION" }, { 0x001745, "INNOTZ CO., Ltd", "INNOTZ" }, { 0x00174C, "Millipore", "MILLIPORE" }, { 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" }, { 0x001723, "Summit Data Communications", "SUMMIT-DATA-COMMUNICATION" }, { 0x00171C, "NT MicroSystems, Inc.", "NT-MICROSYSTEMS" }, { 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" }, { 0x0014D8, "bio-logic SA", "BIO-LOGIC" }, { 0x0014D3, "SEPSA", "SEPSA" }, { 0x0014D2, "Kyuden Technosystems Corporation", "KYUDEN-TECHNOSYSTEMS" }, { 0x001577, "Allied Telesis", "ALLIED-TELESIS" }, { 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" }, { 0x0015D7, "Reti Corporation", "RETI" }, { 0x0015D5, "NICEVT", "NICEVT" }, { 0x0015D6, "OSLiNK Sp. z o.o.", "OSLINK-SP-Z-O-O" }, { 0x0015D0, "ARRIS International", "ARRIS" }, { 0x0015C4, "FLOVEL CO., LTD.", "FLOVEL" }, { 0x0015C9, "Gumstix, Inc", "GUMSTIX" }, { 0x0015BD, "Group 4 Technology Ltd", "GROUP-4" }, { 0x0015B6, "ShinMaywa Industries, Ltd.", "SHINMAYWA-INDUSTRIES" }, { 0x0015B1, "Ambient Corporation", "AMBIENT" }, { 0x0015AC, "Capelon AB", "CAPELON-AB" }, { 0x0015A7, "Robatech AG", "ROBATECH" }, { 0x0015A0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001599, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x00159B, "Nortel", "NORTEL" }, { 0x00159A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001594, "BIXOLON CO.,LTD", "BIXOLON" }, { 0x00158D, "Jennic Ltd", "JENNIC" }, { 0x001588, "Salutica Allied Solutions Sdn Bhd", "SALUTICA-ALLIED-SOLUTIONS-SDN-BHD" }, { 0x001581, "MAKUS Inc.", "MAKUS" }, { 0x001549, "Dixtal Biomedica Ind. Com. Ltda", "DIXTAL-BIOMEDICA-IND-COM-LTDA" }, { 0x00154C, "Saunders Electronics", "SAUNDERS-ELECTRONICS" }, { 0x00154A, "WANSHIH ELECTRONIC CO., LTD", "WANSHIH" }, { 0x001544, "coM.s.a.t. AG", "COM-T" }, { 0x00153D, "ELIM PRODUCT CO.", "ELIM-PRODUCT" }, { 0x001531, "KOCOM", "KOCOM" }, { 0x001538, "RFID, Inc.", "RFID" }, { 0x00152A, "Nokia GmbH", "NOKIA" }, { 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" }, { 0x001641, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x00163C, "Rebox B.V.", "REBOX" }, { 0x001635, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00162E, "Space Shuttle Hi-Tech Co., Ltd.", "SPACE-SHUTTLE-HI-TECH" }, { 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" }, { 0x0015E0, "Ericsson", "ERICSSON" }, { 0x0015DC, "KT&C Co., Ltd.", "KT-C" }, { 0x001629, "Nivus GmbH", "NIVUS" }, { 0x001622, "BBH SYSTEMS GMBH", "BBH" }, { 0x001616, "BROWAN COMMUNICATION INC.", "BROWAN-COMMUNICATION" }, { 0x00161B, "Micronet Corporation", "MICRONET" }, { 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" }, { 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" }, { 0x001326, "ECM Systems Ltd", "ECM" }, { 0x001325, "Cortina Systems Inc", "CORTINA" }, { 0x001321, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001413, "Trebing & Himstedt ProzeŸautomation GmbH & Co. KG", "TREBING-HIMSTEDT-PROZEŸAUTOMATION" }, { 0x001415, "Intec Automation inc.", "INTEC-AUTOMATION" }, { 0x001414, "Jumpnode Systems LLC.", "JUMPNODE-LLC" }, { 0x00140E, "Nortel", "NORTEL" }, { 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" }, { 0x0013E8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0013E2, "GeoVision Inc.", "GEOVISION" }, { 0x0013AE, "Radiance Technologies, Inc.", "RADIANCE-TECHNOLOGIES" }, { 0x0013A9, "Sony Corporation", "SONY" }, { 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" }, { 0x00138F, "Asiarock Incorporation", "ASIAROCK-INCORPORATION" }, { 0x001389, "Redes de Telefon­a M³vil S.A.", "REDES-DE-TELEFON­A-M³VIL" }, { 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" }, { 0x00135B, "PanelLink Cinema, LLC", "PANELLINK-CINEMA-LLC" }, { 0x001362, "ShinHeung Precision Co., Ltd.", "SHINHEUNG-PRECISION" }, { 0x001351, "Niles Audio Corporation", "NILES-AUDIO" }, { 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" }, { 0x001443, "Consultronics Europe Ltd", "CONSULTRONICS-EUROPE" }, { 0x00144A, "Taiwan Thick-Film Ind. Corp.", "TAIWAN-THICK-FILM-IND" }, { 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" }, { 0x0014CC, "Zetec, Inc.", "ZETEC" }, { 0x0014D1, "TRENDnet", "TRENDNET" }, { 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" }, { 0x00149C, "HF Company", "HF-COMPANY" }, { 0x0014A3, "Vitelec BV", "VITELEC" }, { 0x001497, "ZHIYUAN Eletronics co.,ltd.", "ZHIYUAN-ELETRONICS" }, { 0x001496, "Phonic Corp.", "PHONIC" }, { 0x001495, "2Wire, Inc.", "2WIRE" }, { 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" }, { 0x00146C, "Netgear Inc.", "NETGEAR" }, { 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" }, { 0x00144F, "Oracle Corporation ", "ORACLE" }, { 0x0011C9, "MTT Corporation", "MTT" }, { 0x0011B8, "Liebherr - Elektronik GmbH", "LIEBHERR---ELEKTRONIK" }, { 0x0011BF, "AESYS S.p.A.", "AESYS-S-P-A" }, { 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" }, { 0x00119F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 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" }, { 0x0011C4, "Terminales de Telecomunicacion Terrestre, S.L.", "TERMINALES-DE-TELECOMUNICACION-TERRESTRE-S-L" }, { 0x00131B, "BeCell Innovations Corp.", "BECELL-INNOVATIONS" }, { 0x001315, "SONY Computer Entertainment inc,", "SONY-ENTERTAINMENT" }, { 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" }, { 0x0012FB, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x001302, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0012F6, "MDK CO.,LTD.", "MDK" }, { 0x0012F1, "IFOTEC", "IFOTEC" }, { 0x001253, "AudioDev AB", "AUDIODEV-AB" }, { 0x001246, "T.O.M TECHNOLOGY INC..", "T-O-M" }, { 0x00124D, "Inducon BV", "INDUCON" }, { 0x00123A, "Posystech Inc., Co.", "POSYSTECH" }, { 0x001241, "a2i marketing center", "A2I-MARKETING-CENTER" }, { 0x001234, "Camille Bauer", "CAMILLE-BAUER" }, { 0x00122A, "VTech Telecommunications Ltd.", "VTECH-TELECOMMUNICATIONS" }, { 0x00122E, "Signal Technology - AISD", "SIGNAL---AISD" }, { 0x001233, "JRC TOKKI Co.,Ltd.", "JRC-TOKKI" }, { 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" }, { 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" }, { 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" }, { 0x0011F4, "woori-net", "WOORI-NET" }, { 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" }, { 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" }, { 0x000F6C, "ADDI-DATA GmbH", "ADDI-DATA" }, { 0x000F6B, "GateWare Communications GmbH", "GATEWARE-COMMUNICATION" }, { 0x001199, "2wcom Systems GmbH", "2WCOM" }, { 0x00118F, "EUTECH INSTRUMENTS PTE. LTD.", "EUTECH-INSTRUMENTS-PTE" }, { 0x001188, "Enterasys", "ENTERASYS" }, { 0x001183, "Datalogic ADC, Inc.", "DATALOGIC-ADC" }, { 0x00117C, "e-zy.net", "E-ZY-NET" }, { 0x001176, "Intellambda Systems, Inc.", "INTELLAMBDA" }, { 0x001175, "Intel Corporation", "INTEL" }, { 0x001110, "Maxanna Technology Co., Ltd.", "MAXANNA" }, { 0x001117, "CESNET", "CESNET" }, { 0x001104, "TELEXY", "TELEXY" }, { 0x00110B, "Franklin Technology Systems", "FRANKLIN" }, { 0x00110A, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x000FE9, "GW TECHNOLOGIES CO.,LTD.", "GW-TECHNOLOGIES" }, { 0x000FDD, "SORDIN AB", "SORDIN-AB" }, { 0x000FE2, "Hangzhou H3C Technologies Co., Ltd.", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x000FD6, "Sarotech Co., Ltd", "SAROTECH" }, { 0x002654, "3Com Corporation", "3COM" }, { 0x000FD0, "ASTRI", "ASTRI" }, { 0x000FCF, "DataWind Research", "DATAWIND-RESEARCH" }, { 0x000FC3, "PalmPalm Technology, Inc.", "PALMPALM" }, { 0x000FCA, "A-JIN TECHLINE CO, LTD", "A-JIN-TECHLINE" }, { 0x001144, "Assurance Technology Corp", "ASSURANCE" }, { 0x001143, "Dell Inc", "DELL" }, { 0x00113E, "JL Corporation", "JL" }, { 0x001131, "UNATECH. CO.,LTD", "UNATECH" }, { 0x001137, "AICHI ELECTRIC CO., LTD.", "AICHI-ELECTRIC" }, { 0x00112D, "iPulse Systems", "IPULSE" }, { 0x111111, "Private", "PRIVATE" }, { 0x001123, "Appointech, Inc.", "APPOINTECH" }, { 0x00111D, "Hectrix Limited", "HECTRIX" }, { 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" }, { 0x000FBD, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x000FBE, "e-w/you Inc.", "E-W/YOU" }, { 0x000FB7, "Cavium Networks", "CAVIUM-NETWORKS" }, { 0x000FA4, "Sprecher Automation GmbH", "SPRECHER-AUTOMATION" }, { 0x000FAB, "Kyushu Electronics Systems Inc.", "KYUSHU-ELECTRONICS" }, { 0x000FB0, "Compal Electronics,INC.", "COMPAL-ELECTRONICS" }, { 0x000F9D, "DisplayLink (UK) Ltd", "DISPLAYLINK-UK" }, { 0x000F98, "Avamax Co. Ltd.", "AVAMAX" }, { 0x000F33, "DUALi Inc.", "DUALI" }, { 0x000F2C, "Uplogix, Inc.", "UPLOGIX" }, { 0x000F26, "WorldAccxx LLC", "WORLDACCXX-LLC" }, { 0x000F20, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000F25, "AimValley B.V.", "AIMVALLEY" }, { 0x000F13, "Nisca corporation", "NISCA" }, { 0x000F14, "Mindray Co., Ltd.", "MINDRAY" }, { 0x000F19, "Boston Scientific", "BOSTON-SCIENTIFIC" }, { 0x000F0D, "Hunt Electronic Co., Ltd.", "HUNT" }, { 0x000F5F, "Nicety Technologies Inc. (NTS)", "NICETY-TECHNOLOGIES-NTS" }, { 0x000F59, "Phonak Communications AG", "PHONAK-COMMUNICATION" }, { 0x000F5A, "Peribit Networks", "PERIBIT-NETWORKS" }, { 0x000F53, "Solarflare Communications Inc", "SOLARFLARE-COMMUNICATION" }, { 0x000F47, "ROBOX SPA", "ROBOX-SPA" }, { 0x000F4C, "Elextech INC", "ELEXTECH" }, { 0x000F38, "Netstar", "NETSTAR" }, { 0x000F40, "Optical Internetworking Forum", "OPTICAL-INTERNETWORKING-FORUM" }, { 0x000DFF, "CHENMING MOLD INDUSTRY CORP.", "CHENMING-MOLD-INDUSTRY" }, { 0x000DF8, "ORGA Kartensysteme GmbH", "ORGA-KARTENSYSTEME" }, { 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" }, { 0x000F06, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000F01, "DIGITALKS INC", "DIGITALKS" }, { 0x000EFA, "Optoway Technology Incorporation", "OPTOWAY-INCORPORATION" }, { 0x000EF4, "Kasda Networks Inc", "KASDA-NETWORKS" }, { 0x000EF3, "Smarthome", "SMARTHOME" }, { 0x000EEE, "Muco Industrie BV", "MUCO-INDUSTRIE" }, { 0x000EE7, "AAC ELECTRONICS CORP.", "AAC-ELECTRONICS" }, { 0x000EE1, "ExtremeSpeed Inc.", "EXTREMESPEED" }, { 0x000EDB, "XiNCOM Corp.", "XINCOM" }, { 0x000EE2, "Custom Engineering", "CUSTOM-ENGINEERING" }, { 0x000EC9, "YOKO Technology Corp.", "YOKO" }, { 0x000ED0, "Privaris, Inc.", "PRIVARIS" }, { 0x000ED5, "COPAN Systems Inc.", "COPAN" }, { 0x000D9A, "INFOTEC LTD", "INFOTEC" }, { 0x000D8D, "Prosoft Technology, Inc", "PROSOFT" }, { 0x000D8E, "Koden Electronics Co., Ltd.", "KODEN-ELECTRONICS" }, { 0x000D87, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x000D84, "Makus Inc.", "MAKUS" }, { 0x000D83, "Sanmina-SCI Hungary Ltd.", "SANMINA-SCI-HUNGARY" }, { 0x000D76, "Hokuto Denshi Co,. Ltd.", "HOKUTO-DENSHI" }, { 0x000D7D, "Afco Systems", "AFCO" }, { 0x000D6A, "Redwood Technologies LTD", "REDWOOD-TECHNOLOGIES" }, { 0x000D71, "boca systems", "BOCA" }, { 0x000D5E, "NEC Personal Products", "NEC-PERSONAL-PRODUCTS" }, { 0x000D63, "DENT Instruments, Inc.", "DENT-INSTRUMENTS" }, { 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" }, { 0x000DC6, "DigiRose Technology Co., Ltd.", "DIGIROSE" }, { 0x000DC1, "SafeWeb Inc", "SAFEWEB" }, { 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" }, { 0x000DAA, "S.A.Tehnology co.,Ltd.", "TEHNOLOGY" }, { 0x000DA0, "NEDAP N.V.", "NEDAP-N-V" }, { 0x000D9F, "RF Micro Devices", "RF-MICRO-DEVICES" }, { 0x000ED7, "Cisco Systems, Inc", "CISCO" }, { 0x000EC4, "Iskra Transmission d.d.", "ISKRA-TRANSMISSION-D-D" }, { 0x000EC3, "Logic Controls, Inc.", "LOGIC-CONTROLS" }, { 0x000EB6, "Riverbed Technology, Inc.", "RIVERBED" }, { 0x000EBD, "Burdick, a Quinton Compny", "BURDICK-A-QUINTON-COMPNY" }, { 0x000EB1, "Newcotech,Ltd", "NEWCOTECH" }, { 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" }, { 0x000D64, "COMAG Handels AG", "COMAG-HANDELS" }, { 0x000D57, "Fujitsu I-Network Systems Limited.", "FUJITSU-I-NETWORK" }, { 0x000D4B, "Roku, LLC", "ROKU-LLC" }, { 0x000D52, "Comart system", "COMART-SYSTEM" }, { 0x000D51, "DIVR Systems, Inc.", "DIVR" }, { 0x000D47, "Collex", "COLLEX" }, { 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" }, { 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" }, { 0x000E58, "Sonos, Inc.", "SONOS" }, { 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" }, { 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" }, { 0x000E7F, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000E84, "Cisco Systems, Inc", "CISCO" }, { 0x000E78, "Amtelco", "AMTELCO" }, { 0x000BD2, "Remopro Technology Inc.", "REMOPRO" }, { 0x000BC6, "ISAC, Inc.", "ISAC" }, { 0x000BCB, "Fagor Automation , S. Coop", "FAGOR-AUTOMATION-S-COOP" }, { 0x000BCD, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000BBA, "Harmonic, Inc", "HARMONIC" }, { 0x000BBF, "Cisco Systems, Inc", "CISCO" }, { 0x000BB3, "RiT technologies Ltd.", "RIT-TECHNOLOGIES" }, { 0x000BA2, "Sumitomo Electric Networks, Inc", "SUMITOMO-ELECTRIC-NETWORKS" }, { 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" }, { 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" }, { 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" }, { 0x000BFA, "EXEMYS SRL", "EXEMYS-SRL" }, { 0x000C01, "Abatron AG", "ABATRON" }, { 0x000BF5, "Shanghai Sibo Telecom Technology Co.,Ltd", "SHANGHAI-SIBO-TELECOM" }, { 0x000BEE, "inc.jet, Incorporated", "JET-INCORPORATED" }, { 0x000BE2, "Lumenera Corporation", "LUMENERA" }, { 0x000BE7, "COMFLUX TECHNOLOGY INC.", "COMFLUX" }, { 0x000BD6, "Paxton Access Ltd", "PAXTON-ACCESS" }, { 0x000BDB, "Dell Inc", "DELL" }, { 0x000C73, "TELSON ELECTRONICS CO., LTD", "TELSON-ELECTRONICS" }, { 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" }, { 0x000B9D, "TwinMOS Technologies Inc.", "TWINMOS-TECHNOLOGIES" }, { 0x000B8A, "MITEQ Inc.", "MITEQ" }, { 0x000B7E, "SAGINOMIYA Seisakusho Inc.", "SAGINOMIYA-SEISAKUSHO" }, { 0x000B83, "DATAWATT B.V.", "DATAWATT" }, { 0x000B6B, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 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" }, { 0x000D2B, "Racal Instruments", "RACAL-INSTRUMENTS" }, { 0x000D24, "SENTEC E&E CO., LTD.", "SENTEC-E-E" }, { 0x000D18, "Mega-Trend Electronics CO., LTD.", "MEGA-TREND-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" }, { 0x000D0B, "Buffalo Inc.", "BUFFALO" }, { 0x000D05, "cybernet manufacturing inc.", "CYBERNET-MANUFACTURING" }, { 0x000CF9, "Xylem Water Solutions", "XYLEM-WATER-SOLUTIONS" }, { 0x000CFE, "Grand Electronic Co., Ltd", "GRAND" }, { 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" }, { 0x000CF2, "GAMESA E³lica", "GAMESA-E³LICA" }, { 0x000CE6, "Meru Networks Inc", "MERU-NETWORKS" }, { 0x000CEB, "CNMP Networks, Inc.", "CNMP-NETWORKS" }, { 0x000CE2, "Rolls-Royce", "ROLLS-ROYCE" }, { 0x000CEC, "Spectracom Corp.", "SPECTRACOM" }, { 0x000CD2, "Schaffner EMV AG", "SCHAFFNER-EMV" }, { 0x000CD7, "Nallatech Ltd", "NALLATECH" }, { 0x000CDE, "ABB STOTZ-KONTAKT GmbH", "ABB-STOTZ-KONTAKT" }, { 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" }, { 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" }, { 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" }, { 0x000A21, "Integra Telecom Co. Ltd", "INTEGRA-TELECOM" }, { 0x000A15, "Silicon Data, Inc", "SILICON-DATA" }, { 0x000A1A, "Imerge Ltd", "IMERGE" }, { 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" }, { 0x000B56, "Cybernetics", "CYBERNETICS" }, { 0x000B5B, "Rincon Research Corporation", "RINCON-RESEARCH" }, { 0x000B4E, "VertexRSI, General Dynamics SatCOM Technologies, Inc.", "VERTEXRSI-GENERAL-DYNAMICS-SATCOM-TECHNOLOGIES" }, { 0x000B53, "INITIUM Co., Ltd.", "INITIUM" }, { 0x000B42, "commax Co., Ltd.", "COMMAX" }, { 0x000B47, "Advanced Energy", "ADVANCED-ENERGY" }, { 0x000B34, "ShangHai Broadband Technologies CO.LTD", "SHANGHAI-BROADBAND-TECHNOLOGIES" }, { 0x000B36, "Productivity Systems, Inc.", "PRODUCTIVITY" }, { 0x000B3B, "devolo AG", "DEVOLO" }, { 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" }, { 0x000B15, "Platypus Technology", "PLATYPUS" }, { 0x000B10, "11wave Technonlogy Co.,Ltd", "11WAVE-TECHNONLOGY" }, { 0x000B09, "Ifoundry Systems Singapore", "IFOUNDRY-SINGAPORE" }, { 0x000B04, "Volktek Corporation", "VOLKTEK" }, { 0x000A6C, "Walchem Corporation", "WALCHEM" }, { 0x000A5B, "Power-One as", "POWER-ONE-AS" }, { 0x000A54, "Laguna Hills, Inc.", "LAGUNA-HILLS" }, { 0x000A59, "HW server", "HW-SERVER" }, { 0x000A4D, "Noritz Corporation", "NORITZ" }, { 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" }, { 0x0009E1, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x0009E2, "Sinbon Electronics Co., Ltd.", "SINBON-ELECTRONICS" }, { 0x0009DB, "eSpace", "ESPACE" }, { 0x0009C8, "SINAGAWA TSUSHIN KEISOU SERVICE", "SINAGAWA-TSUSHIN-KEISOU-SERVICE" }, { 0x0009CF, "iAd GmbH", "IAD" }, { 0x0009D4, "Transtech Networks", "TRANSTECH-NETWORKS" }, { 0x0009C0, "6WIND", "6WIND" }, { 0x0009BB, "MathStar, Inc.", "MATHSTAR" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x000AEB, "Shenzhen Tp-Link Technology Co; Ltd.", "SHENZHEN-TP-LINK" }, { 0x000AE4, "Wistron Corp.", "WISTRON" }, { 0x000AE6, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x000ADF, "Gennum Corporation", "GENNUM" }, { 0x000AD8, "IPCserv Technology Corp.", "IPCSERV" }, { 0x00098E, "ipcas GmbH", "IPCAS" }, { 0x000989, "VividLogic Inc.", "VIVIDLOGIC" }, { 0x00097C, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x08006B, "ACCEL TECHNOLOGIES INC.", "ACCEL-TECHNOLOGIES" }, { 0x000877, "Liebert-Hiross Spa", "LIEBERT-HIROSS-SPA" }, { 0x000871, "NORTHDATA Co., Ltd.", "NORTHDATA" }, { 0x000876, "SDSystem", "SDSYSTEM" }, { 0x00087D, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x000828, "Koei Engineering Ltd.", "KOEI-ENGINEERING" }, { 0x00081C, "@pos.com", "@POS-COM" }, { 0x000816, "Bluelon ApS", "BLUELON-APS" }, { 0x000815, "CATS Co., Ltd.", "CATS" }, { 0x00080E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000802, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x0008B0, "BKtel communications GmbH", "BKTEL-COMMUNICATION" }, { 0x0008AA, "KARAM", "KARAM" }, { 0x0008A4, "Cisco Systems, Inc", "CISCO" }, { 0x000898, "Gigabit Optics Corporation", "GIGABIT-OPTICS" }, { 0x00089D, "UHD-Elektronik", "UHD-ELEKTRONIK" }, { 0x000890, "AVILINKS SA", "AVILINKS" }, { 0x000889, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0x000883, "HEWLETT-PACKARD COMPANY", "HEWLETT-PACKARD-COMPANY" }, { 0x000884, "Index Braille AB", "INDEX-BRAILLE-AB" }, { 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" }, { 0x000796, "LSI Systems, Inc.", "LSI" }, { 0x000790, "Tri-M Technologies (s) Limited", "TRI-M-TECHNOLOGIES-S" }, { 0x00094B, "FillFactory NV", "FILLFACTORY-NV" }, { 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" }, { 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" }, { 0x0007C9, "Technol Seven Co., Ltd.", "TECHNOL-SEVEN" }, { 0x00047B, "Schlumberger", "SCHLUMBERGER" }, { 0x0007C3, "Thomson", "THOMSON" }, { 0x0007BD, "Radionet Ltd.", "RADIONET" }, { 0x0008E0, "ATO Technology Ltd.", "ATO" }, { 0x0008E5, "IDK Corporation", "IDK" }, { 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" }, { 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" }, { 0x000900, "TMT", "TMT" }, { 0x000907, "Chrysalis Development", "CHRYSALIS-DEVELOPMENT" }, { 0x0008F8, "UTC CCS", "UTC-CCS" }, { 0x0008F3, "WANY", "WANY" }, { 0x0008EC, "Optical Zonu Corporation", "OPTICAL-ZONU" }, { 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" }, { 0x000740, "Buffalo Inc.", "BUFFALO" }, { 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" }, { 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" }, { 0x00065B, "Dell Computer Corp.", "DELL" }, { 0x000642, "Genetel Systems Inc.", "GENETEL" }, { 0x00063E, "Opthos Inc.", "OPTHOS" }, { 0x000648, "Seedsware, Inc.", "SEEDSWARE" }, { 0x000638, "Sungjin C&C Co., Ltd.", "SUNGJIN-C-C" }, { 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" }, { 0x000784, "Cisco Systems, Inc", "CISCO" }, { 0x000789, "DONGWON SYSTEMS", "DONGWON" }, { 0x00078A, "Mentor Data System Inc.", "MENTOR-DATA-SYSTEM" }, { 0x000783, "SynCom Network, Inc.", "SYNCOM-NETWORK" }, { 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" }, { 0x000751, "m-u-t AG", "M-U-T" }, { 0x000750, "Cisco Systems, Inc", "CISCO" }, { 0x00070B, "Novabase SGPS, SA", "NOVABASE-SGPS" }, { 0x000710, "Adax, Inc.", "ADAX" }, { 0x0006F9, "Mitsui Zosen Systems Research Inc.", "MITSUI-ZOSEN-RESEARCH" }, { 0x000700, "Zettamedia Korea", "ZETTAMEDIA-KOREA" }, { 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" }, { 0x000682, "Convedia", "CONVEDIA" }, { 0x000681, "Goepel Electronic GmbH", "GOEPEL" }, { 0x000655, "Yipee, Inc.", "YIPEE" }, { 0x00D05F, "VALCOM, INC.", "VALCOM" }, { 0x000674, "Spectrum Control, Inc.", "SPECTRUM-CONTROL" }, { 0x000678, "Marantz Brand Company", "MARANTZ-BRAND-COMPANY" }, { 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" }, { 0x0006B1, "Sonicwall", "SONICWALL" }, { 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" }, { 0x0005D6, "L-3 Linkabit", "L-3-LINKABIT" }, { 0x0005C4, "Telect, Inc.", "TELECT" }, { 0x0005D0, "Solinet Systems", "SOLINET" }, { 0x0005CA, "Hitron Technology, Inc.", "HITRON" }, { 0x0005BD, "ROAX BV", "ROAX" }, { 0x00059D, "Daniel Computing Systems, Inc.", "DANIEL-COMPUTING" }, { 0x0005BE, "Kongsberg Seatex AS", "KONGSBERG-SEATEX-AS" }, { 0x0005C3, "Pacific Instruments, Inc.", "PACIFIC-INSTRUMENTS" }, { 0x0005AD, "Topspin Communications, Inc.", "TOPSPIN-COMMUNICATION" }, { 0x0005B1, "ASB Technology BV", "ASB" }, { 0x0005B7, "Arbor Technology Corp.", "ARBOR" }, { 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" }, { 0x000492, "Hive Internet, Ltd.", "HIVE-INTERNET" }, { 0x000485, "PicoLight", "PICOLIGHT" }, { 0x000475, "3 Com Corporation", "3COM" }, { 0x000468, "Vivity, Inc.", "VIVITY" }, { 0x00046F, "Digitel S/A Industria Eletronica", "DIGITEL-S/A-INDUSTRIA-ELETRONICA" }, { 0x000463, "Bosch Security Systems", "BOSCH-SECURITY" }, { 0x00045C, "Mobiwave Pte Ltd", "MOBIWAVE-PTE" }, { 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" }, { 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" }, { 0x000597, "Eagle Traffic Control Systems", "EAGLE-TRAFFIC-CONTROL" }, { 0x0005A3, "QEI, Inc.", "QEI" }, { 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" }, { 0x000574, "Cisco Systems, Inc", "CISCO" }, { 0x000567, "Etymonic Design, Inc.", "ETYMONIC-DESIGN" }, { 0x00056E, "National Enhance Technology, Inc.", "NATIONAL-ENHANCE" }, { 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" }, { 0x0004CB, "Tdsoft Communication, Ltd.", "TDSOFT-COMMUNICATION" }, { 0x0004BF, "VersaLogic Corp.", "VERSALOGIC" }, { 0x0004C5, "ASE Technologies, USA", "ASE-TECHNOLOGIES-USA" }, { 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" }, { 0x00048C, "Nayna Networks, Inc.", "NAYNA-NETWORKS" }, { 0x000491, "Technovision, Inc.", "TECHNOVISION" }, { 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" }, { 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" }, { 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" }, { 0x000446, "CYZENTECH Co., Ltd.", "CYZENTECH" }, { 0x00044B, "NVIDIA", "NVIDIA" }, { 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" }, { 0x00027D, "Cisco Systems, Inc", "CISCO" }, { 0x001095, "Thomson Inc.", "THOMSON" }, { 0x000278, "Samsung Electro-Mechanics Co., Ltd.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x00025A, "Catena Networks", "CATENA-NETWORKS" }, { 0x000271, "Zhone Technologies", "ZHONE-TECHNOLOGIES" }, { 0x00026A, "Cocess Telecom Co., Ltd.", "COCESS-TELECOM" }, { 0x00026C, "Philips CFT", "PHILIPS-CFT" }, { 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" }, { 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" }, { 0x0002C3, "Arelnet Ltd.", "ARELNET" }, { 0x0002BE, "Totsu Engineering, Inc.", "TOTSU-ENGINEERING" }, { 0x00023E, "Selta Telematica S.p.a", "SELTA-TELEMATICA-S-P-A" }, { 0x000245, "Lampus Co, Ltd.", "LAMPUS" }, { 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" }, { 0x000214, "DTVRO", "DTVRO" }, { 0x000210, "Fenecom", "FENECOM" }, { 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" }, { 0x00019E, "ESS Technology, Inc.", "ESS" }, { 0x0001A5, "Nextcomm, Inc.", "NEXTCOMM" }, { 0x000192, "Texas Digital Systems", "TEXAS-DIGITAL" }, { 0x000195, "Sena Technologies, Inc.", "SENA-TECHNOLOGIES" }, { 0x0001A1, "Mag-Tek, Inc.", "MAG-TEK" }, { 0x00017D, "ThermoQuest", "THERMOQUEST" }, { 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" }, { 0x000347, "Intel Corporation", "INTEL" }, { 0x000342, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 0x000307, "Secure Works, Inc.", "SECURE-WORKS" }, { 0x000300, "Barracuda Networks, Inc.", "BARRACUDA-NETWORKS" }, { 0x0002F8, "SEAKR Engineering, Inc.", "SEAKR-ENGINEERING" }, { 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" }, { 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" }, { 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" }, { 0x0001CD, "ARtem", "ARTEM" }, { 0x0001D2, "inXtron, Inc. ", "INXTRON" }, { 0x0001C9, "Cisco Systems, Inc", "CISCO" }, { 0x0001C7, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x000293, "Solid Data Systems", "SOLID-DATA" }, { 0x00028E, "Rapid 5 Networks, Inc.", "RAPID-5-NETWORKS" }, { 0x0001FA, "HOROSCAS", "HOROSCAS" }, { 0x000284, "AREVA T&D", "AREVA-T-D" }, { 0x003049, "BRYANT TECHNOLOGY, LTD.", "BRYANT" }, { 0x003041, "SAEJIN T & M CO., LTD.", "SAEJIN-T-M" }, { 0x00308C, "Quantum Corporation", "QUANTUM" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x000118, "EZ Digital Co., Ltd.", "EZ-DIGITAL" }, { 0x000124, "Acer Incorporated", "ACER-INCORPORATED" }, { 0x000101, "Private", "PRIVATE" }, { 0x00010D, "CORECO, INC.", "CORECO" }, { 0x000114, "KANDA TSUSHIN KOGYO CO., LTD.", "KANDA-TSUSHIN-KOGYO" }, { 0x0030C8, "GAD LINE, LTD.", "GAD-LINE" }, { 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" }, { 0x0030C1, "HEWLETT-PACKARD", "HEWLETT-PACKARD" }, { 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" }, { 0x000105, "Beckhoff Automation GmbH", "BECKHOFF-AUTOMATION" }, { 0x000111, "iDigm Inc.", "IDIGM" }, { 0x00029C, "3COM", "3COM" }, { 0x00B009, "Grass Valley, A Belden Brand", "GRASS-VALLEY-A-BELDEN-BRAND" }, { 0x00B094, "Alaris, Inc.", "ALARIS" }, { 0x00B0B3, "Xstreamis PLC", "XSTREAMIS-PLC" }, { 0x00B09D, "Point Grey Research Inc.", "POINT-GREY-RESEARCH" }, { 0x00B048, "Marconi Communications Inc.", "MARCONI-COMMUNICATION" }, { 0x00B0C7, "Tellabs Operations, Inc.", "TELLABS-OPERATIONS" }, { 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" }, { 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" }, { 0x00D081, "RTD Embedded Technologies, Inc.", "RTD-EMBEDDED-TECHNOLOGIES" }, { 0x00D055, "KATHREIN-WERKE KG", "KATHREIN-WERKE" }, { 0x00D095, "Alcatel-Lucent, Enterprise Business Group", "ALCATEL-LUCENT-BUSINESS-GROUP" }, { 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" }, { 0x00303B, "PowerCom Technology", "POWERCOM" }, { 0x0030BC, "Optronic AG", "OPTRONIC" }, { 0x003071, "Cisco Systems, Inc", "CISCO" }, { 0x00308A, "NICOTRA SISTEMI S.P.A", "NICOTRA-SISTEMI-S-P-A" }, { 0x00302C, "SYLANTRO SYSTEMS CORPORATION", "SYLANTRO" }, { 0x003006, "SUPERPOWER COMPUTER", "SUPERPOWER" }, { 0x003079, "CQOS, INC.", "CQOS" }, { 0x003067, "BIOSTAR MICROTECH INT'L CORP.", "BIOSTAR-MICROTECH" }, { 0x003059, "KONTRON COMPACT COMPUTERS AG", "KONTRON-COMPACT-COMPUTERS" }, { 0x0030B9, "ECTEL", "ECTEL" }, { 0x00303A, "MAATEL", "MAATEL" }, { 0x0030A3, "Cisco Systems, Inc", "CISCO" }, { 0x003097, "AB Regin", "AB-REGIN" }, { 0x0030EB, "TURBONET COMMUNICATIONS, INC.", "TURBONET-COMMUNICATION" }, { 0x003040, "Cisco Systems, Inc", "CISCO" }, { 0x003064, "ADLINK TECHNOLOGY, INC.", "ADLINK" }, { 0x000189, "Refraction Technology, Inc.", "REFRACTION" }, { 0x00308B, "Brix Networks", "BRIX-NETWORKS" }, { 0x00014F, "ADTRAN INC", "ADTRAN" }, { 0x00016D, "CarrierComm Inc.", "CARRIERCOMM" }, { 0x00015A, "Digital Video Broadcasting", "DIGITAL-VIDEO-BROADCASTING" }, { 0x000166, "TC GROUP A/S", "TC-GROUP-A/S" }, { 0x00015F, "DIGITAL DESIGN GmbH", "DIGITAL-DESIGN" }, { 0x00016A, "ALITEC", "ALITEC" }, { 0x000176, "Orient Silver Enterprises", "ORIENT-SILVER-ENTERPRISES" }, { 0x000158, "Electro Industries/Gauge Tech", "ELECTRO-INDUSTRIES/GAUGE-TECH" }, { 0x0050FD, "VISIONCOMM CO., LTD.", "VISIONCOMM" }, { 0x0050FE, "PCTVnet ASA", "PCTVNET-ASA" }, { 0x0050AB, "NALTEC, Inc.", "NALTEC" }, { 0x0050BF, "Metalligence Technology Corp.", "METALLIGENCE" }, { 0x005006, "TAC AB", "TAC-AB" }, { 0x0050BA, "D-LINK", "D-LINK" }, { 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" }, { 0x0050E3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x005018, "AMIT, Inc.", "AMIT" }, { 0x005059, "iBAHN", "IBAHN" }, { 0x00506A, "EDEVA, INC.", "EDEVA" }, { 0x00504F, "OLENCOM ELECTRONICS", "OLENCOM-ELECTRONICS" }, { 0x0050A0, "DELTA COMPUTER SYSTEMS, INC.", "DELTA" }, { 0x3C39E7, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x885D90, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x78C2C0, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xC88ED1, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x0050B2, "BRODEL GmbH", "BRODEL" }, { 0xE4956E, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x64FB81, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x0050C2, "IEEE REGISTRATION AUTHORITY - Please see IAB public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-IAB-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x141FBA, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xA44F29, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xA0BB3E, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x800A80, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 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" }, { 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" }, { 0x005012, "CBL - GMBH", "CBL" }, { 0x005072, "CORVIS CORPORATION", "CORVIS" }, { 0x0050E8, "NOMADIX INC.", "NOMADIX" }, { 0x0050F2, "MICROSOFT CORP.", "MICROSOFT" }, { 0x005081, "MURATA MACHINERY, LTD.", "MURATA-MACHINERY" }, { 0x0050CB, "JETTER", "JETTER" }, { 0x00500E, "CHROMATIS NETWORKS, INC.", "CHROMATIS-NETWORKS" }, { 0x0090DD, "MIHARU COMMUNICATIONS Inc", "MIHARU-COMMUNICATION" }, { 0x009094, "OSPREY TECHNOLOGIES, INC.", "OSPREY-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x00D027, "APPLIED AUTOMATION, INC.", "APPLIED-AUTOMATION" }, { 0x00D0F6, "Alcatel Canada", "ALCATEL-CANADA" }, { 0x00D0F1, "SEGA ENTERPRISES, LTD.", "SEGA-ENTERPRISES" }, { 0x00D009, "HSING TECH. ENTERPRISE CO. LTD", "HSING-TECH" }, { 0x00D080, "EXABYTE CORPORATION", "EXABYTE" }, { 0x00D084, "NEXCOMM SYSTEMS, INC.", "NEXCOMM" }, { 0x00D0B2, "XIOTECH CORPORATION", "XIOTECH" }, { 0x00D0E6, "IBOND INC.", "IBOND" }, { 0x00D099, "Elcard Wireless Systems Oy", "ELCARD-WIRELESS-OY" }, { 0x00D0E1, "AVIONITEK ISRAEL INC.", "AVIONITEK-ISRAEL" }, { 0x00D01B, "MIMAKI ENGINEERING CO., LTD.", "MIMAKI-ENGINEERING" }, { 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" }, { 0x005052, "TIARA NETWORKS, INC.", "TIARA-NETWORKS" }, { 0x005064, "CAE ELECTRONICS", "CAE-ELECTRONICS" }, { 0x0050B4, "SATCHWELL CONTROL SYSTEMS, LTD", "SATCHWELL-CONTROL" }, { 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" }, { 0x00502E, "CAMBEX CORPORATION", "CAMBEX" }, { 0x005070, "CHAINTECH COMPUTER CO., LTD.", "CHAINTECH" }, { 0x00D011, "PRISM VIDEO, INC.", "PRISM-VIDEO" }, { 0x00D09B, "SPECTEL LTD.", "SPECTEL" }, { 0x00D0AC, "GRAYSON WIRELESS", "GRAYSON-WIRELESS" }, { 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" }, { 0x0090B9, "BERAN INSTRUMENTS LTD.", "BERAN-INSTRUMENTS" }, { 0x00901A, "UNISPHERE SOLUTIONS", "UNISPHERE-SOLUTIONS" }, { 0x0090AE, "ITALTEL S.p.A.", "ITALTEL-S-P-A" }, { 0x009082, "FORCE INSTITUTE", "FORCE-INSTITUTE" }, { 0x00906A, "TURNSTONE SYSTEMS, INC.", "TURNSTONE" }, { 0x00903C, "ATLANTIC NETWORK SYSTEMS", "ATLANTIC-NETWORK" }, { 0x0090CE, "TETRA GmbH", "TETRA" }, { 0x0090E3, "AVEX ELECTRONICS INC.", "AVEX-ELECTRONICS" }, { 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" }, { 0x00E03F, "JATON CORPORATION", "JATON" }, { 0x00E0EB, "DIGICOM SYSTEMS, INCORPORATED", "DIGICOM-INCORPORATED" }, { 0x00E00E, "AVALON IMAGING SYSTEMS, INC.", "AVALON-IMAGING" }, { 0x00E0CD, "SAAB SENSIS CORPORATION", "SAAB-SENSIS" }, { 0x00E048, "SDL COMMUNICATIONS, INC.", "SDL-COMMUNICATION" }, { 0x00E0CB, "RESON, INC.", "RESON" }, { 0x00E083, "JATO TECHNOLOGIES, INC.", "JATO-TECHNOLOGIES" }, { 0x00E0FA, "TRL TECHNOLOGY, LTD.", "TRL" }, { 0x00E03D, "FOCON ELECTRONIC SYSTEMS A/S", "FOCON-A/S" }, { 0x00E02C, "AST COMPUTER", "AST" }, { 0x00E098, "AboCom Systems, Inc.", "ABOCOM" }, { 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" }, { 0x00E07B, "BAY NETWORKS", "BAY-NETWORKS" }, { 0x00E077, "WEBGEAR, INC.", "WEBGEAR" }, { 0x00E04E, "SANYO DENKI CO., LTD.", "SANYO-DENKI" }, { 0x00E0D2, "VERSANET COMMUNICATIONS, INC.", "VERSANET-COMMUNICATION" }, { 0x00E0DD, "ZENITH ELECTRONICS CORPORATION", "ZENITH-ELECTRONICS" }, { 0x00E02A, "TANDBERG TELEVISION AS", "TANDBERG-TELEVISION-AS" }, { 0x00E0D0, "NETSPEED, INC.", "NETSPEED" }, { 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" }, { 0x0001FE, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x009077, "ADVANCED FIBRE COMMUNICATIONS", "ADVANCED-FIBRE-COMMUNICATION" }, { 0x009027, "INTEL CORPORATION", "INTEL" }, { 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" }, { 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" }, { 0x0010E0, "Oracle Corporation ", "ORACLE" }, { 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" }, { 0x00E003, "NOKIA WIRELESS BUSINESS COMMUN", "NOKIA-WIRELESS-BUSINESS-COMMUN" }, { 0x00E0F3, "WebSprint Communications, Inc.", "WEBSPRINT-COMMUNICATION" }, { 0x00E013, "EASTERN ELECTRONIC CO., LTD.", "EASTERN" }, { 0x00E093, "ACKFIN NETWORKS", "ACKFIN-NETWORKS" }, { 0x00E0E3, "SK-ELEKTRONIK GMBH", "SK-ELEKTRONIK" }, { 0x00E066, "ProMax Systems, Inc.", "PROMAX" }, { 0x00E0FC, "HUAWEI TECHNOLOGIES CO., LTD.", "HUAWEI-TECHNOLOGIES" }, { 0x00E0DB, "ViaVideo Communications, Inc.", "VIAVIDEO-COMMUNICATION" }, { 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" }, { 0x0010E7, "BreezeCom", "BREEZECOM" }, { 0x001047, "ECHO ELETRIC CO. LTD.", "ECHO-ELETRIC" }, { 0x0090F0, "Harmonic Video Systems Ltd.", "HARMONIC-VIDEO" }, { 0x001063, "STARGUIDE DIGITAL NETWORKS", "STARGUIDE-DIGITAL-NETWORKS" }, { 0x0010A7, "UNEX TECHNOLOGY CORPORATION", "UNEX" }, { 0x001039, "Vectron Systems AG", "VECTRON" }, { 0x0010C3, "CSI-CONTROL SYSTEMS", "CSI-CONTROL" }, { 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" }, { 0x001050, "RION CO., LTD.", "RION" }, { 0x0010A4, "XIRCOM", "XIRCOM" }, { 0x0010B5, "ACCTON TECHNOLOGY CORPORATION", "ACCTON" }, { 0x00109C, "M-SYSTEM CO., LTD.", "M-SYSTEM" }, { 0x00107F, "CRESTRON ELECTRONICS, INC.", "CRESTRON-ELECTRONICS" }, { 0x00102C, "Lasat Networks A/S", "LASAT-NETWORKS-A/S" }, { 0x0010B7, "COYOTE TECHNOLOGIES, LLC", "COYOTE-TECHNOLOGIES-LLC" }, { 0x00100C, "ITO CO., LTD.", "ITO" }, { 0x0010D0, "WITCOM, LTD.", "WITCOM" }, { 0x001006, "Thales Contact Solutions Ltd.", "THALES-CONTACT-SOLUTIONS" }, { 0x001076, "EUREM GmbH", "EUREM" }, { 0x0010D6, "Exelis", "EXELIS" }, { 0x00103F, "TOLLGRADE COMMUNICATIONS, INC.", "TOLLGRADE-COMMUNICATION" }, { 0x001034, "GNP Computers", "GNP-COMPUTERS" }, { 0x00E05B, "WEST END SYSTEMS CORP.", "WEST-END" }, { 0x00E051, "TALX CORPORATION", "TALX" }, { 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" }, { 0x0060AA, "INTELLIGENT DEVICES INC. (IDI)", "INTELLIGENT-DEVICES-IDI" }, { 0x00605A, "CELCORE, INC.", "CELCORE" }, { 0x006065, "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH", "BERNECKER-RAINER-INDUSTRIE-ELEKTRONIC" }, { 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" }, { 0x00600F, "WESTELL, INC.", "WESTELL" }, { 0x0060E5, "FUJI AUTOMATION CO., LTD.", "FUJI-AUTOMATION" }, { 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" }, { 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" }, { 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" }, { 0x006013, "NETSTAL MASCHINEN AG", "NETSTAL-MASCHINEN" }, { 0x006022, "VICOM SYSTEMS, INC.", "VICOM" }, { 0x0060F4, "ADVANCED COMPUTER SOLUTIONS, Inc.", "ADVANCED-SOLUTIONS" }, { 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" }, { 0x00A0C9, "INTEL CORPORATION - HF1-06", "INTEL" }, { 0x00A052, "STANILITE ELECTRONICS PTY. LTD", "STANILITE-ELECTRONICS-PTY" }, { 0x00A0EA, "ETHERCOM CORP.", "ETHERCOM" }, { 0x00A0B8, "SYMBIOS LOGIC INC.", "SYMBIOS-LOGIC" }, { 0x00A02E, "BRAND COMMUNICATIONS, LTD.", "BRAND-COMMUNICATION" }, { 0x00A0E2, "Keisokugiken Corporation", "KEISOKUGIKEN" }, { 0x00A0C5, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x00A058, "GLORY, LTD.", "GLORY" }, { 0x00A02F, "PIRELLI CAVI", "PIRELLI-CAVI" }, { 0x00A048, "QUESTECH, LTD.", "QUESTECH" }, { 0x00A0C4, "CRISTIE ELECTRONICS LTD.", "CRISTIE-ELECTRONICS" }, { 0x006010, "NETWORK MACHINES, INC.", "NETWORK-MACHINES" }, { 0x006044, "LITTON/POLY-SCIENTIFIC", "LITTON/POLY-SCIENTIFIC" }, { 0x00609B, "ASTRO-MED, INC.", "ASTRO-MED" }, { 0x0060BE, "WEBTRONICS", "WEBTRONICS" }, { 0x006052, "PERIPHERALS ENTERPRISE CO., Ltd.", "PERIPHERALS" }, { 0x00A01D, "Red Lion Controls, LP", "RED-LION-CONTROLS-LP" }, { 0x00A071, "VIDEO LOTTERY TECHNOLOGIES,INC", "VIDEO-LOTTERY-TECHNOLOGIES" }, { 0x006011, "CRYSTAL SEMICONDUCTOR CORP.", "CRYSTAL-SEMICONDUCTOR" }, { 0x00600E, "WAVENET INTERNATIONAL, INC.", "WAVENET" }, { 0x0060C0, "Nera Networks AS", "NERA-NETWORKS-AS" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x00C043, "STRATACOM", "STRATACOM" }, { 0x00C0B3, "COMSTAT DATACOMM CORPORATION", "COMSTAT-DATACOMM" }, { 0x00C0B5, "CORPORATE NETWORK SYSTEMS,INC.", "CORPORATE-NETWORK" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x00201A, "MRV Communications, Inc.", "MRV-COMMUNICATION" }, { 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" }, { 0x0020F0, "UNIVERSAL MICROELECTRONICS CO.", "UNIVERSAL-MICROELECTRONICS" }, { 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" }, { 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" }, { 0x00403E, "RASTER OPS CORPORATION", "RASTER-OPS" }, { 0x0040AE, "DELTA CONTROLS, INC.", "DELTA-CONTROLS" }, { 0x0040C6, "FIBERNET RESEARCH, INC.", "FIBERNET-RESEARCH" }, { 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" }, { 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" }, { 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" }, { 0x00C007, "PINNACLE DATA SYSTEMS, INC.", "PINNACLE-DATA" }, { 0x00C0F8, "ABOUT COMPUTING INC.", "ABOUT-COMPUTING" }, { 0x00C06F, "KOMATSU LTD.", "KOMATSU" }, { 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" }, { 0x0080B9, "ARCHE TECHNOLIGIES INC.", "ARCHE-TECHNOLIGIES" }, { 0x0080A7, "Honeywell International Inc", "HONEYWELL" }, { 0x0040C8, "MILAN TECHNOLOGY CORPORATION", "MILAN" }, { 0x0040BC, "ALGORITHMICS LTD.", "ALGORITHMICS" }, { 0x00402F, "XLNT DESIGNS INC.", "XLNT-DESIGNS" }, { 0x00405D, "STAR-TEK, INC.", "STAR-TEK" }, { 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" }, { 0x00402A, "CANOGA-PERKINS", "CANOGA-PERKINS" }, { 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" }, { 0x0040DA, "TELSPEC LTD", "TELSPEC" }, { 0x004083, "TDA INDUSTRIA DE PRODUTOS", "TDA-INDUSTRIA-DE-PRODUTOS" }, { 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" }, { 0x0040EA, "PLAIN TREE SYSTEMS INC", "PLAIN-TREE" }, { 0x0040EF, "HYPERCOM, INC.", "HYPERCOM" }, { 0x004093, "PAXDATA NETWORKS LTD.", "PAXDATA-NETWORKS" }, { 0x0040EC, "MIKASA SYSTEM ENGINEERING", "MIKASA-SYSTEM-ENGINEERING" }, { 0x00405F, "AFE COMPUTERS LTD.", "AFE-COMPUTERS" }, { 0x004043, "Nokia Siemens Networks GmbH & Co. KG.", "NOKIA-SIEMENS-NETWORKS" }, { 0x0040F0, "MicroBrain,Inc.", "MICROBRAIN" }, { 0x0040A7, "ITAUTEC PHILCO S.A.", "ITAUTEC-PHILCO" }, { 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" }, { 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" }, { 0x080087, "XYPLEX", "XYPLEX" }, { 0x080084, "TOMEN ELECTRONICS CORP.", "TOMEN-ELECTRONICS" }, { 0x08007C, "VITALINK COMMUNICATIONS CORP.", "VITALINK-COMMUNICATION" }, { 0x080076, "PC LAN TECHNOLOGIES", "PC-LAN-TECHNOLOGIES" }, { 0x080072, "XEROX CORP UNIV GRANT PROGRAM", "XEROX-UNIV-GRANT-PROGRAM" }, { 0x080070, "MITSUBISHI ELECTRIC CORP.", "MITSUBISHI-ELECTRIC" }, { 0x080068, "RIDGE COMPUTERS", "RIDGE-COMPUTERS" }, { 0x080062, "General Dynamics", "GENERAL-DYNAMICS" }, { 0x0080CE, "BROADCAST TELEVISION SYSTEMS", "BROADCAST-TELEVISION" }, { 0x00801A, "BELL ATLANTIC", "BELL-ATLANTIC" }, { 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" }, { 0x00808C, "NetScout Systems, Inc.", "NETSCOUT" }, { 0x000052, "Intrusion.com, Inc.", "INTRUSION-COM" }, { 0x0000BD, "MITSUBISHI CABLE COMPANY", "MITSUBISHI-CABLE-COMPANY" }, { 0x000037, "OXFORD METRICS LIMITED", "OXFORD-METRICS" }, { 0x00003F, "SYNTREX, INC.", "SYNTREX" }, { 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" }, { 0x0000B1, "ALPHA MICROSYSTEMS INC.", "ALPHA-MICROSYSTEMS" }, { 0x0000C5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0000F8, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x080023, "Panasonic Communications Co., Ltd.", "PANASONIC-COMMUNICATION" }, { 0x080022, "NBI INC.", "NBI" }, { 0x080019, "GENERAL ELECTRIC CORPORATION", "GENERAL-ELECTRIC" }, { 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" }, { 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" }, { 0x000010, "SYTEK INC.", "SYTEK" }, { 0x0000D5, "MICROGNOSIS INTERNATIONAL", "MICROGNOSIS" }, { 0x00008B, "INFOTRON", "INFOTRON" }, { 0x0000BE, "THE NTI GROUP", "THE-NTI-GROUP" }, { 0x00004C, "NEC CORPORATION", "NEC" }, { 0x00003B, "i Controls, Inc.", "I-CONTROLS" }, { 0x0000FE, "ANNAPOLIS MICRO SYSTEMS", "ANNAPOLIS-MICRO" }, { 0x080057, "Evans & Sutherland", "EVANS-SUTHERLAND" }, { 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" }, { 0x080013, "Exxon", "EXXON" }, { 0x0000A6, "NETWORK GENERAL CORPORATION", "NETWORK-GENERAL" }, { 0x080014, "EXCELAN", "EXCELAN" }, { 0x00AA01, "INTEL CORPORATION", "INTEL" }, { 0x08000F, "MITEL CORPORATION", "MITEL" }, { 0x08000A, "NESTAR SYSTEMS INCORPORATED", "NESTAR-INCORPORATED" }, { 0x00DD00, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x0000D7, "DARTMOUTH COLLEGE", "DARTMOUTH-COLLEGE" }, { 0x08001C, "KDD-KOKUSAI DEBNSIN DENWA CO.", "KDD-KOKUSAI-DEBNSIN-DENWA" }, { 0x02AA3C, "OLIVETTI TELECOMM SPA (OLTECO)", "OLIVETTI-TELECOMM-SPA-OLTECO" }, { 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" }, { 0x08001D, "ABLE COMMUNICATIONS INC.", "ABLE-COMMUNICATION" }, { 0x00408E, "Tattile SRL ", "TATTILE-SRL" }, { 0x080065, "GENRAD INC.", "GENRAD" }, { 0x00800F, "STANDARD MICROSYSTEMS", "STANDARD-MICROSYSTEMS" }, { 0x02BB01, "OCTOTHORPE CORP.", "OCTOTHORPE" }, { 0x00DD06, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0B, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x000007, "XEROX CORPORATION", "XEROX" }, { 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" }, { 0x847778, "Cochlear Limited", "COCHLEAR" }, { 0x0453D5, "Sysorex Global Holdings", "SYSOREX-GLOBAL-HOLDINGS" }, { 0xBC4699, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xE005C5, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xCC4463, "Apple, Inc.", "APPLE" }, { 0x6C72E7, "Apple, Inc.", "APPLE" }, { 0x0C45BA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x74A78E, "zte corporation", "ZTE" }, { 0xD860B0, "bioMİrieux Italia S.p.A.", "BIOMİRIEUX-ITALIA-S-P-A" }, { 0x4CA161, "Rain Bird Corporation", "RAIN-BIRD" }, { 0x2C5BB8, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xB0AA36, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x784B87, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x28A183, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0xC4F57C, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x8C7CFF, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000CDB, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x006069, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xC87B5B, "zte corporation", "ZTE" }, { 0x98F537, "zte corporation", "ZTE" }, { 0x001E73, "zte corporation", "ZTE" }, { 0x0019C6, "zte corporation", "ZTE" }, { 0x0015EB, "zte corporation", "ZTE" }, { 0x00197E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5CF8A1, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x6021C0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x783E53, "BSkyB Ltd", "BSKYB" }, { 0xEC1127, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x247189, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x987BF3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x14F65A, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x0C1DAF, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x28E31F, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xF0B429, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 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" }, { 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" }, { 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" }, { 0x283CE4, "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" }, { 0xD4EA0E, "Avaya Inc", "AVAYA" }, { 0x7054F5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x08E84F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04BD70, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x18C58A, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x405FC2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x20CD39, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78DD08, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9CD21E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x8096CA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD07AB5, "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" }, { 0xB4475E, "Avaya Inc", "AVAYA" }, { 0x90FB5B, "Avaya Inc", "AVAYA" }, { 0xA051C6, "Avaya Inc", "AVAYA" }, { 0x24D921, "Avaya Inc", "AVAYA" }, { 0x848371, "Avaya Inc", "AVAYA" }, { 0x7052C5, "Avaya Inc", "AVAYA" }, { 0x001B4F, "Avaya Inc", "AVAYA" }, { 0xD8DDFD, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x544A16, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 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" }, { 0xA055DE, "Pace plc", "PACE-PLC" }, { 0x0026D9, "Pace plc", "PACE-PLC" }, { 0x00112F, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0011D8, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x00906F, "Cisco Systems, Inc", "CISCO" }, { 0x0090A6, "Cisco Systems, Inc", "CISCO" }, { 0x0090AB, "Cisco Systems, Inc", "CISCO" }, { 0x00900C, "Cisco Systems, Inc", "CISCO" }, { 0x001079, "Cisco Systems, Inc", "CISCO" }, { 0x00102F, "Cisco Systems, Inc", "CISCO" }, { 0x000E08, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 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" }, { 0xC8B5B7, "Apple, Inc.", "APPLE" }, { 0xA8BBCF, "Apple, Inc.", "APPLE" }, { 0x90B21F, "Apple, Inc.", "APPLE" }, { 0xB8E856, "Apple, Inc.", "APPLE" }, { 0x1499E2, "Apple, Inc.", "APPLE" }, { 0x6C4A39, "BITA", "BITA" }, { 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" }, { 0xC0F2FB, "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" }, { 0x64A3CB, "Apple, Inc.", "APPLE" }, { 0x44FB42, "Apple, Inc.", "APPLE" }, { 0xF41BA1, "Apple, Inc.", "APPLE" }, { 0x3CE072, "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" }, { 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" }, { 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" }, { 0x680927, "Apple, Inc.", "APPLE" }, { 0x60FACD, "Apple, Inc.", "APPLE" }, { 0x1CABA7, "Apple, Inc.", "APPLE" }, { 0x1CCDE5, "Shanghai Wind Technologies Co.,Ltd", "SHANGHAI-WIND-TECHNOLOGIES" }, { 0x20896F, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x4C8ECC, "SILKAN SA", "SILKAN" }, { 0x3CEF8C, "ZHEJIANG DAHUA TECHNOLOGY CO.,LTD.", "ZHEJIANG-DAHUA" }, { 0x64BC0C, "LG Electronics", "LG-ELECTRONICS" }, { 0x4054E4, "Wearsafe Labs Inc", "WEARSAFE-LABS" }, { 0x8CE2DA, "Circle Media Inc", "CIRCLE-MEDIA" }, { 0x4040A7, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0xE81363, "Comstock RD, Inc.", "COMSTOCK-RD" }, { 0x6C9354, "Yaojin Technology (Shenzhen) Co., LTD.", "YAOJIN-SHENZHEN" }, { 0x98F428, "zte corporation", "ZTE" }, { 0x7C5A67, "JNC Systems, Inc.", "JNC" }, { 0x5C4979, "AVM Audiovisuelles Marketing und Computersysteme GmbH", "AVM-AUDIOVISUELLES-MARKETING-UND-COMPUTERSYSTEME" }, { 0x58FC73, "Arria Live Media, Inc.", "ARRIA-LIVE-MEDIA" }, { 0x2C1BC8, "Hunan Topview Network System CO.,LTD", "HUNAN-TOPVIEW-NETWORK-SYSTEM" }, { 0x74D7CA, "Panasonic Corporation Automotive", "PANASONIC-AUTOMOTIVE" }, { 0x5CADCF, "Apple, Inc.", "APPLE" }, { 0x006D52, "Apple, Inc.", "APPLE" }, { 0x2CAE2B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3CBBFD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD4F4BE, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0xF0272D, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0xB88687, "Liteon Technology Corporation", "LITEON" }, { 0x68F956, "Objetivos y Servicio de Valor Aħadido", "OBJETIVOS-Y-SERVICIO-DE-VALOR-AħADIDO" }, { 0xC07CD1, "PEGATRON CORPORATION", "PEGATRON" }, { 0xD888CE, "RF Technology Pty Ltd", "RF-PTY" }, { 0x58B633, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xAC60B6, "Ericsson AB", "ERICSSON-AB" }, { 0xF4E926, "Tianjin Zanpu Technology Inc.", "TIANJIN-ZANPU" }, { 0xE8B4C8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18895B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD03742, "Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN-LT" }, { 0x405D82, "Netgear", "NETGEAR" }, { 0x04C23E, "HTC Corporation", "HTC" }, { 0x484520, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA039F7, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 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" }, { 0x246E96, "Dell Inc.", "DELL" }, { 0xEC1F72, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x2CFCE4, "CTEK Sweden AB", "CTEK-SWEDEN-AB" }, { 0xA8A795, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x10868C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7011AE, "Music Life LTD", "MUSIC-LIFE" }, { 0xECB870, "Beijing Heweinet Technology Co.,Ltd.", "BEIJING-HEWEINET" }, { 0x3095E3, "SHANGHAI SIMCOM LIMITED", "SHANGHAI-SIMCOM" }, { 0x401B5F, "Weifang GoerTek Electronics Co., Ltd.", "WEIFANG-GOERTEK-ELECTRONICS" }, { 0xBC307E, "Wistron Neweb Corp", "WISTRON-NEWEB" }, { 0xD48304, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x385F66, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x544E90, "Apple, Inc.", "APPLE" }, { 0x6C2779, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x28C87A, "Pace plc", "PACE-PLC" }, { 0xD494E8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x607EDD, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0xB078F0, "Beijing HuaqinWorld Technology Co.,Ltd.", "BEIJING-HUAQINWORLD" }, { 0x3029BE, "Shanghai MRDcom Co.,Ltd", "SHANGHAI-MRDCOM" }, { 0x54BE53, "zte corporation", "ZTE" }, { 0x588BF3, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xA01E0B, "MINIX Technology Limited", "MINIX" }, { 0x7C9122, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA013CB, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x20635F, "Abeeway", "ABEEWAY" }, { 0xE00370, "ShenZhen Continental Wireless Technology Co., Ltd.", "SHENZHEN-CONTINENTAL-WIRELESS" }, { 0x3089D3, "HONGKONG UCLOUDLINK NETWORK TECHNOLOGY LIMITED", "HONGKONG-UCLOUDLINK-NETWORK" }, { 0x4CB76D, "Novi Security", "NOVI-SECURITY" }, { 0xD0431E, "Dell Inc.", "DELL" }, { 0x445F8C, "Intercel Group Limited", "INTERCEL-GROUP" }, { 0x780CB8, "Intel Corporate", "INTEL-CORPORATE" }, { 0xDC5360, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA48D3B, "Vizio, Inc", "VIZIO" }, { 0x1005B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0C756C, "Anaren Microwave, Inc.", "ANAREN-MICROWAVE" }, { 0x1C4024, "Dell Inc", "DELL" }, { 0x5C5188, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x300D43, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 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" }, { 0xA8D828, "Bayer HealthCare", "BAYER-HEALTHCARE" }, { 0xCC37AB, "Edgecore Networks Corportation", "EDGECORE-NETWORKS-CORPORTATION" }, { 0xB46D83, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC620D, "Jabil Circuit (Wuxi) Co. LTD", "JABIL-CIRCUIT-WUXI" }, { 0x54CD10, "Panasonic Mobile Communications Co.,Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0xDC15DB, "Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd.", "GE-RUILI-INTELLIGENT-BEIJING" }, { 0x906CAC, "Fortinet, Inc.", "FORTINET" }, { 0x00323A, "so-logic", "SO-LOGIC" }, { 0xE4FAFD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE0DB10, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x546172, "ZODIAC AEROSPACE SAS", "ZODIAC-AEROSPACE-SAS" }, { 0x08952A, "Technicolor CH USA Inc", "TECHNICOLOR-CH-USA" }, { 0xE8508B, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x30F335, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE89120, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x1CB72C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x40B89A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x40B837, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x287610, "IgniteNet", "IGNITENET" }, { 0x68A378, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x746A3A, "Aperi Corporation", "APERI" }, { 0xA8D409, "USA 111 Inc", "USA-111" }, { 0x1844E6, "zte corporation", "ZTE" }, { 0xA4A1E4, "Innotube, Inc.", "INNOTUBE" }, { 0xF80D60, "CANON INC.", "CANON" }, { 0xE02CB2, "Lenovo Mobile Communication (Wuhan) Company Limited", "LENOVO-MOBILE-COMMUNICATION-WUHAN-COMPANY" }, { 0x70D931, "Cambridge Industries Group Co Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x546009, "Google Inc", "GOOGLE" }, { 0x88A25E, "juniper networks", "JUNIPER-NETWORKS" }, { 0x706879, "Saijo Denki International Co., Ltd.", "SAIJO-DENKI" }, { 0x343D98, "JinQianMao Technology Co.,Ltd.", "JINQIANMAO" }, { 0x204747, "Dell Inc.", "DELL" }, { 0x5804CB, "Tianjin Huisun Technology Co.,Ltd.", "TIANJIN-HUISUN" }, { 0xA47B85, "ULTIMEDIA Co Ltd,", "ULTIMEDIA" }, { 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" }, { 0x04C9D9, "EchoStar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0xE4CE70, "Health & Life co., Ltd.", "HEALTH-LIFE" }, { 0xEC5A86, "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN" }, { 0x802AA8, "Ubiquiti Networks, Inc.", "UBIQUITI-NETWORKS" }, { 0xF87AEF, "Rosonix Technology, Inc.", "ROSONIX" }, { 0x904506, "Tokyo Boeki Medisys Inc.", "TOKYO-BOEKI-MEDISYS" }, { 0x7403BD, "Buffalo Inc.", "BUFFALO" }, { 0x80A85D, "Osterhout Design Group", "OSTERHOUT-DESIGN-GROUP" }, { 0x605BB4, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x9C6C15, "Microsoft Corporation", "MICROSOFT" }, { 0xEC74BA, "Hirschmann Automation and Control GmbH", "HIRSCHMANN-AUTOMATION-AND-CONTROL" }, { 0x683C7D, "Magic Intelligence Technology Limited", "MAGIC-INTELLIGENCE" }, { 0xBC6010, "Qingdao Hisense Communications Co.,Ltd", "QINGDAO-HISENSE-COMMUNICATION" }, { 0xC43ABE, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x18B169, "Sonicwall", "SONICWALL" }, { 0xC0FFD4, "Netgear Inc", "NETGEAR" }, { 0xD4684D, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x1CC72D, "Shenzhen Huapu Digital CO.,Ltd", "SHENZHEN-HUAPU-DIGITAL" }, { 0x38D82F, "zte corporation", "ZTE" }, { 0xC8D779, "Qingdao Haier Telecom Co.ïĵŒLtd", "QINGDAO-HAIER-TELECOM-ïĵŒ" }, { 0xA0C562, "Pace plc", "PACE-PLC" }, { 0xE09971, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2CA2B4, "Fortify Technologies, LLC", "FORTIFY-TECHNOLOGIES-LLC" }, { 0x10E878, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x74C246, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x40A5EF, "Shenzhen Four Seas Global Link Network Technology Co., Ltd.", "SHENZHEN-FOUR-SEAS-GLOBAL-LINK-NETWORK" }, { 0x146B72, "Shenzhen Fortune Ship Technology Co., Ltd.", "SHENZHEN-FORTUNE-SHIP" }, { 0x7C5CF8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x44E9DD, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x7C7A53, "Phytrex Technology Corp.", "PHYTREX" }, { 0x84C3E8, "Vaillant GmbH", "VAILLANT" }, { 0xB88EC6, "Stateless Networks", "STATELESS-NETWORKS" }, { 0xD87495, "zte corporation", "ZTE" }, { 0x8C873B, "Leica Camera AG", "LEICA-CAMERA" }, { 0x28E476, "Pi-Coral", "PI-CORAL" }, { 0x8461A0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x9C685B, "Octonion SA", "OCTONION" }, { 0x4C7625, "Dell Inc.", "DELL" }, { 0xE874E6, "ADB BROADBAND ITALIA", "ADB-BROADBAND-ITALIA" }, { 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" }, { 0xC0BDD1, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x346895, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xB47356, "Hangzhou Treebear Networking Co., Ltd.", "HANGZHOU-TREEBEAR-NETWORKING" }, { 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" }, { 0x18A3E8, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x60128B, "CANON INC.", "CANON" }, { 0xECBAFE, "GIROPTIC", "GIROPTIC" }, { 0xE8447E, "Bitdefender SRL", "BITDEFENDER-SRL" }, { 0x64DB81, "Syszone Co., Ltd.", "SYSZONE" }, { 0xFC6FB7, "Pace plc", "PACE-PLC" }, { 0xC4BAA3, "Beijing Winicssec Technologies Co., Ltd.", "BEIJING-WINICSSEC-TECHNOLOGIES" }, { 0x74042B, "Lenovo Mobile Communication (Wuhan) Company Limited", "LENOVO-MOBILE-COMMUNICATION-WUHAN-COMPANY" }, { 0xC09879, "Acer Inc.", "ACER" }, { 0x803773, "Netgear Inc", "NETGEAR" }, { 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" }, { 0x64002D, "Powerlinq Co., LTD", "POWERLINQ" }, { 0xF4F1E1, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x486B2C, "BBK Electronics Corp., Ltd.,", "BBK-ELECTRONICS" }, { 0x101218, "Korins Inc.", "KORINS" }, { 0xEC0EC4, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xB04515, "mira fitness,LLC.", "MIRA-FITNESS-LLC" }, { 0x307512, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x68F06D, "ALONG INDUSTRIAL CO., LIMITED", "ALONG-INDUSTRIAL" }, { 0x54F876, "ABB AG", "ABB" }, { 0x4857DD, "Facebook", "FACEBOOK" }, { 0xD88D5C, "Elentec", "ELENTEC" }, { 0x4886E8, "Microsoft Corporation", "MICROSOFT" }, { 0xC05627, "Belkin International, Inc.", "BELKIN" }, { 0x78FC14, "B Communications Pty Ltd", "B-COMMUNICATION-PTY" }, { 0x88E161, "Art Beijing Science and Technology Development Co., Ltd.", "ART-BEIJING-SCIENCE-AND-DEVELOPMENT" }, { 0x3863BB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5C2ED2, "ABC(XiSheng) Electronics Co.,Ltd", "ABC-XISHENG-ELECTRONICS" }, { 0x64899A, "LG Electronics", "LG-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" }, { 0xB4A9FE, "GHIA Technology (Shenzhen) LTD", "GHIA-SHENZHEN" }, { 0xFCB4E6, "ASKEY COMPUTER CORP.", "ASKEY" }, { 0x700FC7, "SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD.", "SHENZHEN-IKINLOOP" }, { 0xEC8009, "NovaSparks", "NOVASPARKS" }, { 0x50ADD5, "Dynalec Corporation", "DYNALEC" }, { 0x28D98A, "Hangzhou Konke Technology Co.,Ltd.", "HANGZHOU-KONKE" }, { 0xBC4DFB, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x6C25B9, "BBK Electronics Corp., Ltd.,", "BBK-ELECTRONICS" }, { 0x7429AF, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD8FB11, "AXACORE", "AXACORE" }, { 0x3010B3, "Liteon Technology Corporation", "LITEON" }, { 0xC8D019, "Shanghai Tigercel Communication Technology Co.,Ltd", "SHANGHAI-TIGERCEL-COMMUNICATION" }, { 0x18A958, "PROVISION THAI CO., LTD.", "PROVISION-THAI" }, { 0x40E230, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x40EACE, "FOUNDER BROADBAND NETWORK SERVICE CO.,LTD", "FOUNDER-BROADBAND-NETWORK-SERVICE" }, { 0x10C67E, "SHENZHEN JUCHIN TECHNOLOGY CO., LTD", "SHENZHEN-JUCHIN" }, { 0xE83381, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C4937, "ASSMANN Electronic GmbH", "ASSMANN" }, { 0x44E137, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x10F681, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0x344DEA, "zte corporation", "ZTE" }, { 0x908C09, "Total Phase", "TOTAL-PHASE" }, { 0x1C7E51, "3bumen.com", "3BUMEN-COM" }, { 0xE41D2D, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0x60C798, "Verifone, Inc.", "VERIFONE" }, { 0x380E7B, "V.P.S. Thai Co., Ltd", "V-P-S-THAI" }, { 0x34E6AD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8870EF, "SC Professional Trading Co., Ltd.", "SC-PROFESSIONAL-TRADING" }, { 0xA49D49, "Ketra, Inc.", "KETRA" }, { 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" }, { 0x54DF00, "Ulterius Technologies, LLC", "ULTERIUS-TECHNOLOGIES-LLC" }, { 0x4CF2BF, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xE01D38, "Beijing HuaqinWorld Technology Co.,Ltd", "BEIJING-HUAQINWORLD" }, { 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" }, { 0x3431C4, "AVM GmbH", "AVM" }, { 0x08F728, "GLOBO Multimedia Sp. z o.o. Sp.k.", "GLOBO-MULTIMEDIA-SP-Z-O-O-SP-K" }, { 0x680571, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6C2F2C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60A8FE, "Nokia Solutions and Networks", "NOKIA-SOLUTIONS-AND-NETWORKS" }, { 0x70720D, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x84850A, "Hella Sonnen- und Wetterschutztechnik GmbH", "HELLA-SONNEN--UND-WETTERSCHUTZTECHNIK" }, { 0x6CC217, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x183009, "Woojin Industrial Systems Co., Ltd.", "WOOJIN-INDUSTRIAL" }, { 0x6081F9, "Helium Systems, Inc", "HELIUM" }, { 0x34C5D0, "Hagleitner Hygiene International GmbH", "HAGLEITNER-HYGIENE" }, { 0x74DBD1, "Ebay Inc", "EBAY" }, { 0xC891F9, "SAGEMCOM", "SAGEMCOM" }, { 0xDC537C, "Compal Broadband Networks, Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0xA00627, "NEXPA System", "NEXPA-SYSTEM" }, { 0x303335, "Boosty", "BOOSTY" }, { 0x6077E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x20934D, "Fujian Star-net Communication Co., Ltd", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x8401A7, "Greyware Automation Products, Inc", "GREYWARE-AUTOMATION-PRODUCTS" }, { 0x18D5B6, "SMG Holdings LLC", "SMG-HOLDINGS-LLC" }, { 0xC8FF77, "Dyson Limited", "DYSON" }, { 0xC03D46, "Shanghai Mochui Network Technology Co., Ltd", "SHANGHAI-MOCHUI-NETWORK" }, { 0x84930C, "InCoax Networks Europe AB", "INCOAX-NETWORKS-EUROPE-AB" }, { 0xD47B35, "NEO Monitors AS", "NEO-MONITORS-AS" }, { 0x102F6B, "Microsoft Corporation", "MICROSOFT" }, { 0xACB74F, "METEL s.r.o.", "METEL-S-R-O" }, { 0xCCF538, "3isysnetworks", "3ISYSNETWORKS" }, { 0x04DEDB, "Rockport Networks Inc", "ROCKPORT-NETWORKS" }, { 0xF87394, "NETGEAR INC.,", "NETGEAR" }, { 0xD80CCF, "C.G.V. S.A.S.", "C-G-V-S" }, { 0xB4EEB4, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x7CFE4E, "Shenzhen Safe vision Technology Co.,LTD", "SHENZHEN-SAFE-VISION" }, { 0xD8DECE, "ISUNG CO.,LTD", "ISUNG" }, { 0x2053CA, "Risk Technology Ltd", "RISK" }, { 0x142BD6, "Guangdong Appscomm Co.,Ltd", "GUANGDONG-APPSCOMM" }, { 0xC8BA94, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 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" }, { 0x60B617, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xA46032, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x205A00, "Coval", "COVAL" }, { 0x5056BF, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x0C2026, "noax Technologies AG", "NOAX-TECHNOLOGIES" }, { 0xA02BB8, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB025AA, "Private", "PRIVATE" }, { 0x54EF92, "Shenzhen Elink Technology Co., LTD", "SHENZHEN-ELINK" }, { 0x800E24, "ForgetBox", "FORGETBOX" }, { 0xFCE186, "A3M Co., LTD", "A3M" }, { 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" }, { 0x1C1B68, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5C254C, "Avire Global Pte Ltd", "AVIRE-GLOBAL-PTE" }, { 0x7C1A03, "8Locations Co., Ltd.", "8LOCATIONS" }, { 0x481842, "Shanghai Winaas Co. Equipment Co. Ltd.", "SHANGHAI-WINAAS-EQUIPMENT" }, { 0xE817FC, "NIFTY Corporation", "NIFTY" }, { 0xD09C30, "Foster Electric Company, Limited", "FOSTER-ELECTRIC-COMPANY" }, { 0x78FEE2, "Shanghai Diveo Technology Co., Ltd", "SHANGHAI-DIVEO" }, { 0x28C825, "DellKing Industrial Co., Ltd", "DELLKING-INDUSTRIAL" }, { 0x64E892, "Morio Denki Co., Ltd.", "MORIO-DENKI" }, { 0x086DF2, "Shenzhen MIMOWAVE Technology Co.,Ltd", "SHENZHEN-MIMOWAVE" }, { 0x64EB8C, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 0xD07E35, "Intel Corporate", "INTEL-CORPORATE" }, { 0x48D0CF, "Universal Electronics, Inc.", "UNIVERSAL-ELECTRONICS" }, { 0xF4B52F, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xAC3613, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xDCC793, "Nokia Corporation", "NOKIA" }, { 0x240A11, "TCT Mobile Limited", "TCT-MOBILE" }, { 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" }, { 0x08D833, "Shenzhen RF Technology Co,.Ltd", "SHENZHEN-RF" }, { 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" }, { 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" }, { 0x40F201, "SAGEMCOM", "SAGEMCOM" }, { 0xDCF110, "Nokia Corporation", "NOKIA" }, { 0xC4C9EC, "Gugaoo HK Limited", "GUGAOO-HK" }, { 0x2832C5, "Humax.co.,ltd", "HUMAX" }, { 0xF406A5, "Hangzhou Bianfeng Networking Technology Co., Ltd.", "HANGZHOU-BIANFENG-NETWORKING" }, { 0x4C3909, "HPL Electric & Power Private Limited", "HPL-ELECTRIC-POWER-PRIVATE" }, { 0x1027BE, "TVIP", "TVIP" }, { 0x2087AC, "AES motomation", "AES-MOTOMATION" }, { 0xB0DA00, "CERA ELECTRONIQUE", "CERA-ELECTRONIQUE" }, { 0x447098, "MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED", "MING-HONG-SHEN-ZHEN" }, { 0x54E2E0, "Pace plc", "PACE-PLC" }, { 0x00EEBD, "HTC Corporation", "HTC" }, { 0x48B5A7, "Glory Horse Industries Ltd.", "GLORY-HORSE-INDUSTRIES" }, { 0xC4E92F, "AB Sciex", "AB-SCIEX" }, { 0xA4E9A3, "Honest Technology Co., Ltd", "HONEST" }, { 0x9C216A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF862AA, "xn systems", "XN" }, { 0xA4059E, "STA Infinity LLP", "STA-INFINITY-LLP" }, { 0x6C15F9, "Nautronix Limited", "NAUTRONIX" }, { 0x94EB2C, "Google Inc.", "GOOGLE" }, { 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" }, { 0x24E271, "Qingdao Hisense Communications Co.,Ltd", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x70533F, "Alfa Instrumentos Eletronicos Ltda.", "ALFA-INSTRUMENTOS-ELETRONICOS-LTDA" }, { 0xFC1607, "Taian Technology(Wuxi) Co.,Ltd.", "TAIAN-WUXI" }, { 0xCC89FD, "Nokia Corporation", "NOKIA" }, { 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" }, { 0x88F7C7, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x04DB8A, "Suntech International Ltd.", "SUNTECH" }, { 0x606944, "A, Inc", "A" }, { 0x285767, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0xE498D6, "A, Inc", "A" }, { 0xB07908, "Cummings Engineering", "CUMMINGS-ENGINEERING" }, { 0xF8BC12, "Dell Inc", "DELL" }, { 0x04CB1D, "Traka plc", "TRAKA-PLC" }, { 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" }, { 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" }, { 0x443192, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x24A495, "Thales Canada Inc.", "THALES-CANADA" }, { 0x18AA45, "Fon Technology", "FON" }, { 0x0073E0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x549359, "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "SHENZHEN-TWOWING-TECHNOLOGIES" }, { 0xBC4486, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x284430, "GenesisTechnical Systems (UK) Ltd", "GENESISTECHNICAL-UK" }, { 0x9843DA, "INTERTECH", "INTERTECH" }, { 0x8056F2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00738D, "Tinno Mobile Technology Corp", "TINNO-MOBILE" }, { 0xE03F49, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x386C9B, "Ivy Biomedical", "IVY-BIOMEDICAL" }, { 0xA0F459, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0xE44C6C, "Shenzhen Guo Wei Electronic Co,. Ltd.", "SHENZHEN-GUO-WEI" }, { 0xFC15B4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x008B43, "RFTECH", "RFTECH" }, { 0x2C957F, "zte corporation", "ZTE" }, { 0x242642, "SHARP Corporation.", "SHARP" }, { 0x282246, "Beijing Sinoix Communication Co., LTD", "BEIJING-SINOIX-COMMUNICATION" }, { 0x083F76, "Intellian Technologies, Inc.", "INTELLIAN-TECHNOLOGIES" }, { 0x0CC47A, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0xD0634D, "Meiko Maschinenbau GmbH & Co. KG", "MEIKO-MASCHINENBAU-AMP" }, { 0x24DBED, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA47733, "Google", "GOOGLE" }, { 0x88C626, "Logitech - Ultimate Ears", "LOGITECH---ULTIMATE-EARS" }, { 0x889CA6, "BTB Korea INC", "BTB-KOREA" }, { 0xF025B7, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 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" }, { 0x380B40, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60BEB5, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xA47760, "Nokia Corporation", "NOKIA" }, { 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" }, { 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" }, { 0x306023, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xBC2BD7, "Revogi Innovation Co., Ltd.", "REVOGI-INNOVATION" }, { 0x3C404F, "Guangdong Pisen Electronics Co. Ltd.", "GUANGDONG-PISEN-ELECTRONICS" }, { 0xE440E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C9301, "PT. Prasimax Inovasi Teknologi", "PT-PRASIMAX-INOVASI-TEKNOLOGI" }, { 0x1CAF05, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xE492FB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x98CDB4, "Virident Systems, Inc.", "VIRIDENT" }, { 0x54E3B0, "JVL Industri Elektronik", "JVL-INDUSTRI-ELEKTRONIK" }, { 0x640B4A, "Digital Telecom Technology Limited", "DIGITAL-TELECOM" }, { 0x3413E8, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF81654, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF42012, "Cuciniale GmbH", "CUCINIALE" }, { 0x4C21D0, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x60699B, "isepos GmbH", "ISEPOS" }, { 0xB830A8, "Road-Track Telematics Development", "ROAD-TRACK-TELEMATICS-DEVELOPMENT" }, { 0xACD657, "Shaanxi Guolian Digital TV Technology Co., Ltd.", "SHAANXI-GUOLIAN-DIGITAL-TV" }, { 0x541B5D, "Techno-Innov", "TECHNO-INNOV" }, { 0x78CB33, "DHC Software Co.,Ltd", "DHC-SOFTWARE" }, { 0x507691, "Tekpea, Inc.", "TEKPEA" }, { 0xC421C8, "KYOCERA Corporation", "KYOCERA" }, { 0xEC2257, "JiangSu NanJing University Electronic Information Technology Co.,Ltd", "JIANGSU-NANJING-UNIVERSITY-INFORMATION" }, { 0xA4C0C7, "ShenZhen Hitom Communication Technology Co..LTD", "SHENZHEN-HITOM-COMMUNICATION" }, { 0x18104E, "CEDINT-UPM", "CEDINT-UPM" }, { 0x2C7B84, "OOO Petr Telegin", "OOO-PETR-TELEGIN" }, { 0x540536, "Vivago Oy", "VIVAGO-OY" }, { 0x2CE6CC, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xE0FAEC, "Platan sp. z o.o. sp. k.", "PLATAN-SP-Z-O-O-SP-K" }, { 0xF8B156, "Dell Inc", "DELL" }, { 0x24ECD6, "CSG Science & Technology Co.,Ltd.Hefei", "CSG-SCIENCE-HEFEI" }, { 0x102279, "ZeroDesktop, Inc.", "ZERODESKTOP" }, { 0x24F5AA, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0xD86960, "Steinsvik", "STEINSVIK" }, { 0x442AFF, "E3 Technology, Inc.", "E3" }, { 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" }, { 0x840F45, "Shanghai GMT Digital Technologies Co., Ltd", "SHANGHAI-GMT-DIGITAL-TECHNOLOGIES" }, { 0x58A2B5, "LG Electronics", "LG-ELECTRONICS" }, { 0xD8270C, "MaxTronic International Co., Ltd.", "MAXTRONIC" }, { 0xE80410, "Private", "PRIVATE" }, { 0x8C088B, "Remote Solution", "REMOTE-SOLUTION" }, { 0x70188B, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x3C77E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5CDD70, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 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" }, { 0x448A5B, "Micro-Star INT'L CO., LTD.", "MICRO-STAR" }, { 0x68193F, "Digital Airways", "DIGITAL-AIRWAYS" }, { 0x5CD61F, "Qardio, Inc", "QARDIO" }, { 0x14B126, "Industrial Software Co", "INDUSTRIAL-SOFTWARE" }, { 0x902083, "General Engine Management Systems Ltd.", "GENERAL-ENGINE-MANAGEMENT" }, { 0xE8611F, "Dawning Information Industry Co.,Ltd", "DAWNING-INFORMATION-INDUSTRY" }, { 0x0CA694, "Sunitec Enterprise Co.,Ltd", "SUNITEC" }, { 0x542160, "Resolution Products", "RESOLUTION-PRODUCTS" }, { 0x88462A, "Telechips Inc.", "TELECHIPS" }, { 0x3C8AB0, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xA897DC, "IBM", "IBM" }, { 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" }, { 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" }, { 0xC03580, "A&R TECH", "A-R-TECH" }, { 0x1446E4, "AVISTEL", "AVISTEL" }, { 0x907990, "Benchmark Electronics Romania SRL", "BENCHMARK-ELECTRONICS-ROMANIA-SRL" }, { 0x1800DB, "Fitbit Inc.", "FITBIT" }, { 0x50A715, "Aboundi, Inc.", "ABOUNDI" }, { 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" }, { 0x6854ED, "Alcatel-Lucent - Nuage", "ALCATEL-LUCENT---NUAGE" }, { 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" }, { 0xB8AE6E, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x70820E, "as electronics GmbH", "AS-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" }, { 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" }, { 0x54A619, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xC47DFE, "A.N. Solutions GmbH", "A-N-SOLUTIONS" }, { 0xC8B373, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x78FF57, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x7C0507, "PEGATRON CORPORATION", "PEGATRON" }, { 0xDC2BCA, "Zera GmbH", "ZERA" }, { 0x508D6F, "CHAHOO Limited", "CHAHOO" }, { 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" }, { 0x94CE2C, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0xE031D0, "SZ Telstar CO., LTD", "SZ-TELSTAR" }, { 0x70C6AC, "Bosch Automotive Aftermarket", "BOSCH-AUTOMOTIVE-AFTERMARKET" }, { 0xDCD52A, "Sunny Heart Limited", "SUNNY-HEART" }, { 0xC4C755, "Beijing HuaqinWorld Technology Co.,Ltd", "BEIJING-HUAQINWORLD" }, { 0x9C79AC, "Suntec Software(Shanghai) Co., Ltd.", "SUNTEC-SOFTWARE-SHANGHAI" }, { 0x4C9614, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x6488FF, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x74C99A, "Ericsson AB", "ERICSSON-AB" }, { 0x284FCE, "Liaoning Wontel Science and Technology Development Co.,Ltd.", "LIAONING-WONTEL-SCIENCE-AND-DEVELOPMENT" }, { 0x1449E0, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x0CC81F, "Summer Infant, Inc.", "SUMMER-INFANT" }, { 0xACB313, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x14ABF0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0C84DC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x341A4C, "SHENZHEN WEIBU ELECTRONICS CO.,LTD.", "SHENZHEN-WEIBU-ELECTRONICS" }, { 0x983B16, "AMPAK Technology Inc", "AMPAK" }, { 0x444A65, "Silverflare Ltd.", "SILVERFLARE" }, { 0x303EAD, "Sonavox Canada Inc", "SONAVOX-CANADA" }, { 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" }, { 0xA4FB8D, "Hangzhou Dunchong Technology Co.Ltd", "HANGZHOU-DUNCHONG" }, { 0x0075E1, "Ampt, LLC", "AMPT-LLC" }, { 0xCC04B4, "Select Comfort", "SELECT-COMFORT" }, { 0xA47ACF, "VIBICOM COMMUNICATIONS INC.", "VIBICOM-COMMUNICATION" }, { 0xCC3C3F, "SA.S.S. Datentechnik AG", "S-S-DATENTECHNIK" }, { 0x905692, "Autotalks Ltd.", "AUTOTALKS" }, { 0x8086F2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0C2AE7, "Beijing General Research Institute of Mining and Metallurgy", "BEIJING-GENERAL-RESEARCH-INSTITUTE-OF-MINING-AND-METALLURGY" }, { 0x4439C4, "Universal Global Scientific Industrial Co.,Ltd", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 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" }, { 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" }, { 0xB4AB2C, "MtM Technology Corporation", "MTM" }, { 0x74372F, "Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd", "TONGFANG-SHENZHEN-CLOUDCOMPUTING" }, { 0xBC51FE, "Swann communications Pty Ltd", "SWANN-COMMUNICATION-PTY" }, { 0xD831CF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x789ED0, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xD40FB2, "Applied Micro Electronics AME bv", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x74FE48, "ADVANTECH CO., LTD.", "ADVANTECH" }, { 0x7054D2, "PEGATRON CORPORATION", "PEGATRON" }, { 0xD8B02E, "Guangzhou Zonerich Business Machine Co., Ltd", "GUANGZHOU-ZONERICH-BUSINESS-MACHINE" }, { 0xEC2C49, "University of Tokyo", "UNIVERSITY-OF-TOKYO" }, { 0xCC5D57, "Information System Research Institute,Inc.", "INFORMATION-SYSTEM-RESEARCH-INSTITUTE" }, { 0xF05A09, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C37BF, "Cloudium Systems Ltd.", "CLOUDIUM" }, { 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" }, { 0xE8E875, "iS5 Communications Inc.", "IS5-COMMUNICATION" }, { 0x2C7B5A, "Milper Ltd", "MILPER" }, { 0x185AE8, "Zenotech.Co.,Ltd", "ZENOTECH" }, { 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" }, { 0x84C8B1, "Incognito Software Systems Inc.", "INCOGNITO-SOFTWARE" }, { 0x645A04, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0x5C89D4, "Beijing Banner Electric Co.,Ltd", "BEIJING-BANNER-ELECTRIC" }, { 0x503275, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x386793, "Asia Optical Co., Inc.", "ASIA-OPTICAL" }, { 0xBCD177, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 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" }, { 0x9C3178, "Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd", "FOSHAN-HUADIAN-INTELLIGENT-COMMUNICATION-TEACHNOLOGIES" }, { 0x48BE2D, "Symanitron", "SYMANITRON" }, { 0xCC3E5F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 0xE0AEED, "LOENK", "LOENK" }, { 0xD4EE07, "HIWIFI Co., Ltd.", "HIWIFI" }, { 0x908260, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0x7446A0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xFCAD0F, "QTS NETWORKS", "QTS-NETWORKS" }, { 0x984C04, "Zhangzhou Keneng Electrical Equipment Co Ltd", "ZHANGZHOU-KENENG-ELECTRICAL-EQUIPMENT" }, { 0xCC047C, "G-WAY Microwave", "G-WAY-MICROWAVE" }, { 0xF8DFA8, "zte corporation", "ZTE" }, { 0xACA430, "Peerless AV", "PEERLESS-AV" }, { 0xD052A8, "Physical Graph Corporation", "PHYSICAL-GRAPH" }, { 0xEC43F6, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x34F62D, "SHARP Corporation", "SHARP" }, { 0x8462A6, "EuroCB (Phils), Inc.", "EUROCB-PHILS" }, { 0x80FA5B, "CLEVO CO.", "CLEVO" }, { 0xD4CA6E, "u-blox AG", "U-BLOX" }, { 0xC488E5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28CC01, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC011A6, "Fort-Telecom ltd.", "FORT-TELECOM" }, { 0xC4EBE3, "RRCN SAS", "RRCN-SAS" }, { 0x4C1A95, "Novakon Co., Ltd.", "NOVAKON" }, { 0xC04A00, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x38E595, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xB86091, "Onnet Technologies and Innovations LLC", "ONNET-TECHNOLOGIES-AND-INNOVATIONS-LLC" }, { 0x201A06, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xB8DAF1, "Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH", "STRAHLENSCHUTZ--ENTWICKLUNGS--UND-AUSRUESTUNGSGESELLSCHAFT-MBH" }, { 0xD05162, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x1C11E1, "Wartsila Finland Oy", "WARTSILA-FINLAND-OY" }, { 0xACF1DF, "D-Link International", "D-LINK" }, { 0x50465D, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x74BFA1, "HYUNTECK", "HYUNTECK" }, { 0xA44E31, "Intel Corporate", "INTEL-CORPORATE" }, { 0xFCF528, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xF8AA8A, "Axview Technology (Shenzhen) Co.,Ltd", "AXVIEW-SHENZHEN" }, { 0x60F494, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5894CF, "Vertex Standard LMR, Inc.", "VERTEX-STANDARD-LMR" }, { 0x2C5AA3, "PROMATE ELECTRONIC CO.LTD", "PROMATE" }, { 0x20689D, "Liteon Technology Corporation", "LITEON" }, { 0x9852B1, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x1489FD, "Samsung Electronics", "SAMSUNG-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" }, { 0xF4472A, "Nanjing Rousing Sci. and Tech. Industrial Co., Ltd", "NANJING-ROUSING-SCI-AND-TECH-INDUSTRIAL" }, { 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" }, { 0x984CD3, "Mantis Deposition", "MANTIS-DEPOSITION" }, { 0x845181, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C4CDC, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0x10683F, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0x0CF893, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x004D32, "Andon Health Co.,Ltd.", "ANDON-HEALTH" }, { 0x8C04FF, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0xB4009C, "CableWorld Ltd.", "CABLEWORLD" }, { 0x04FE31, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34E0CF, "zte corporation", "ZTE" }, { 0x6C8814, "Intel Corporate", "INTEL-CORPORATE" }, { 0x801DAA, "Avaya Inc", "AVAYA" }, { 0xF88E85, "COMTREND CORPORATION", "COMTREND" }, { 0x6C40C6, "Nimbus Data Systems, Inc.", "NIMBUS-DATA" }, { 0x185253, "Pixord Corporation", "PIXORD" }, { 0x406F2A, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0xA41731, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xFCA9B0, "MIARTECH (SHANGHAI),INC.", "MIARTECH-SHANGHAI" }, { 0x80D733, "QSR Automations, Inc.", "QSR-AUTOMATIONS" }, { 0x8C3330, "EmFirst Co., Ltd.", "EMFIRST" }, { 0x8C0C90, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x08E5DA, "NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD. ", "NANJING-FUJITSU-PRODUCTS" }, { 0x5884E4, "IP500 Alliance e.V.", "IP500-ALLIANCE-E-V" }, { 0x5C4A26, "Enguity Technology Corp", "ENGUITY" }, { 0x289EDF, "Danfoss Turbocor Compressors, Inc", "DANFOSS-TURBOCOR-COMPRESSORS" }, { 0x803FD6, "bytes at work AG", "BYTES-AT-WORK" }, { 0x645FFF, "Nicolet Neuro", "NICOLET-NEURO" }, { 0x741E93, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xD07E28, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2829D9, "GlobalBeiMing technology (Beijing)Co. Ltd", "GLOBALBEIMING-BEIJING" }, { 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" }, { 0x5CD41B, "UCZOON Technology Co., LTD", "UCZOON" }, { 0x783CE3, "Kai-EE", "KAI-EE" }, { 0x0868EA, "EITO ELECTRONICS CO., LTD.", "EITO-ELECTRONICS" }, { 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" }, { 0x189A67, "CSE-Servelec Limited", "CSE-SERVELEC" }, { 0x38A5B6, "SHENZHEN MEGMEET ELECTRICAL CO.,LTD", "SHENZHEN-MEGMEET-ELECTRICAL" }, { 0xB46293, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x208984, "COMPAL INFORMATION (KUNSHAN) CO., LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0xE43FA2, "Wuxi DSP Technologies Inc.", "WUXI-DSP-TECHNOLOGIES" }, { 0x00FD4C, "NEVATEC", "NEVATEC" }, { 0xE01D3B, "Cambridge Industries(Group) Co.,Ltd", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xD8C691, "Hichan Technology Corp.", "HICHAN" }, { 0x8CFDF0, "QUALCOMM Incorporated", "QUALCOMM-INCORPORATED" }, { 0x7C02BC, "Hansung Electronics Co. LTD", "HANSUNG-ELECTRONICS" }, { 0x1848D8, "Fastback Networks", "FASTBACK-NETWORKS" }, { 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" }, { 0x647C34, "Ubee Interactive Corp.", "UBEE-INTERACTIVE" }, { 0x649FF7, "Kone OYj", "KONE-OYJ" }, { 0xB86B23, "Toshiba", "TOSHIBA" }, { 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" }, { 0x68B6FC, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x7C160D, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 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" }, { 0x241064, "Shenzhen Ecsino Tecnical Co. Ltd", "SHENZHEN-ECSINO-TECNICAL" }, { 0x10D1DC, "INSTAR Deutschland GmbH", "INSTAR-DEUTSCHLAND" }, { 0x844BF5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD8160A, "Nippon Electro-Sensory Devices", "NIPPON-ELECTRO-SENSORY-DEVICES" }, { 0x58696C, "Fujian Ruijie Networks co, ltd", "FUJIAN-RUIJIE-NETWORKS" }, { 0xF45433, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0xEC9327, "MEMMERT GmbH + Co. KG", "MEMMERT-+" }, { 0x1C43EC, "JAPAN CIRCUIT CO.,LTD", "JAPAN-CIRCUIT" }, { 0xBC28D6, "Rowley Associates Limited", "ROWLEY-ASSOCIATES" }, { 0xBC811F, "Ingate Systems", "INGATE" }, { 0xE09DB8, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 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" }, { 0xC819F7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x702393, "fos4X GmbH", "FOS4X" }, { 0xC4731E, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0xD8AFF1, "Panasonic Appliances Company", "PANASONIC-APPLIANCES-COMPANY" }, { 0x58ECE1, "Newport Corporation", "NEWPORT" }, { 0x14358B, "Mediabridge Products, LLC.", "MEDIABRIDGE-PRODUCTS-LLC" }, { 0x34996F, "VPI Engineering", "VPI-ENGINEERING" }, { 0xCCFE3C, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x446D57, "Liteon Technology Corporation", "LITEON" }, { 0x002AAF, "LARsys-Automation GmbH", "LARSYS-AUTOMATION" }, { 0x60F3DA, "Logic Way GmbH", "LOGIC-WAY" }, { 0xA06D09, "Intelcan Technosystems Inc.", "INTELCAN-TECHNOSYSTEMS" }, { 0x7845C4, "Dell Inc", "DELL" }, { 0x240917, "Devlin Electronics Limited", "DEVLIN-ELECTRONICS" }, { 0xDC37D2, "Hunan HKT Electronic Technology Co., Ltd", "HUNAN-HKT" }, { 0x048B42, "Skspruce Technology Limited", "SKSPRUCE" }, { 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" }, { 0xE006E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7CB03E, "OSRAM GmbH", "OSRAM" }, { 0x14B1C8, "InfiniWing, Inc.", "INFINIWING" }, { 0x80C16E, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 0xC84544, "Shanghai Enlogic Electric Technology Co., Ltd.", "SHANGHAI-ENLOGIC-ELECTRIC" }, { 0xB0EC71, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x38BF33, "NEC CASIO Mobile Communications", "NEC-CASIO-MOBILE-COMMUNICATION" }, { 0xA041A7, "NL Ministry of Defense", "NL-MINISTRY-OF-DEFENSE" }, { 0x342F6E, "Anywire corporation", "ANYWIRE" }, { 0xBC1401, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x68D925, "ProSys Development Services", "PROSYS-DEVELOPMENT-SERVICES" }, { 0xFCF8AE, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0xE86D6E, "Control & Display Systems Ltd t/a CDSRail", "CONTROL-DISPLAY-T/A-CDSRAIL" }, { 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" }, { 0xC43C3C, "CYBELEC SA", "CYBELEC" }, { 0x00D632, "GE Energy", "GE-ENERGY" }, { 0xC40ACB, "Cisco Systems, Inc", "CISCO" }, { 0x7463DF, "VTS GmbH", "VTS" }, { 0x502D1D, "Nokia Corporation", "NOKIA" }, { 0x70AAB2, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0xF8D0BD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCEA2B, "CityCom GmbH", "CITYCOM" }, { 0x944444, "LG Innotek", "LG-INNOTEK" }, { 0x18B591, "I-Storm", "I-STORM" }, { 0xE4C806, "Ceiec Electric Technology Inc.", "CEIEC-ELECTRIC" }, { 0xA45630, "Cisco Systems, Inc", "CISCO" }, { 0xE840F2, "PEGATRON CORPORATION", "PEGATRON" }, { 0x50053D, "CyWee Group Ltd", "CYWEE-GROUP" }, { 0x4C64D9, "Guangdong Leawin Group Co., Ltd", "GUANGDONG-LEAWIN-GROUP" }, { 0xD05785, "Pantech Co., Ltd.", "PANTECH" }, { 0x045C06, "Zmodo Technology Corporation", "ZMODO" }, { 0x504A5E, "Masimo Corporation", "MASIMO" }, { 0x4CC94F, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x2C2D48, "bct electronic GesmbH", "BCT-GESMBH" }, { 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" }, { 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" }, { 0x48D54C, "Jeda Networks", "JEDA-NETWORKS" }, { 0x3828EA, "Fujian Netcom Technology Co., LTD", "FUJIAN-NETCOM" }, { 0x2CEE26, "Petroleum Geo-Services", "PETROLEUM-GEO-SERVICES" }, { 0xDC3E51, "Solberg & Andersen AS", "SOLBERG-ANDERSEN-AS" }, { 0xB888E3, "COMPAL INFORMATION (KUNSHAN) CO., LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0x40F407, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xD8B90E, "Triple Domain Vision Co.,Ltd.", "TRIPLE-DOMAIN-VISION" }, { 0x589396, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xA05E6B, "MELPER Co., Ltd.", "MELPER" }, { 0x30B3A2, "Shenzhen Heguang Measurement & Control Technology Co.,Ltd", "SHENZHEN-HEGUANG-MEASUREMENT-CONTROL" }, { 0x4018B1, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x689C5E, "AcSiP Technology Corp.", "ACSIP" }, { 0x94DBC9, "Azurewave", "AZUREWAVE" }, { 0x3CCE73, "Cisco Systems, Inc", "CISCO" }, { 0xA47C14, "ChargeStorm AB", "CHARGESTORM-AB" }, { 0x8020AF, "Trade FIDES, a.s.", "TRADE-FIDES-A-S" }, { 0x50D274, "Steffes Corporation", "STEFFES" }, { 0xC0143D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x442B03, "Cisco Systems, Inc", "CISCO" }, { 0x781C5A, "SHARP Corporation", "SHARP" }, { 0xE4C6E6, "Mophie, LLC", "MOPHIE-LLC" }, { 0x3497FB, "ADVANCED RF TECHNOLOGIES INC", "ADVANCED-RF-TECHNOLOGIES" }, { 0xE4B021, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC46413, "Cisco Systems, Inc", "CISCO" }, { 0xFCC734, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 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" }, { 0x24C0B3, "RSF", "RSF" }, { 0xE00B28, "Inovonics", "INOVONICS" }, { 0x500B32, "Foxda Technology Industrial(ShenZhen)Co.,LTD", "FOXDA-INDUSTRIAL-SHENZHEN" }, { 0xE8039A, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x1C5C55, "PRIMA Cinema, Inc", "PRIMA-CINEMA" }, { 0x082522, "ADVANSEE", "ADVANSEE" }, { 0x4C2F9D, "ICM Controls", "ICM-CONTROLS" }, { 0xE467BA, "Danish Interpretation Systems A/S", "DANISH-INTERPRETATION-A/S" }, { 0x642737, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xBCFE8C, "Altronic, LLC", "ALTRONIC-LLC" }, { 0x24BBC1, "Absolute Analysis", "ABSOLUTE-ANALYSIS" }, { 0x7CDD11, "Chongqing MAS SCI&TECH.Co.,Ltd", "CHONGQING-MAS-SCI-TECH" }, { 0xC0AC54, "SAGEMCOM", "SAGEMCOM" }, { 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" }, { 0xE8DA96, "Zhuhai Tianrui Electrical Power Tech. Co., Ltd.", "ZHUHAI-TIANRUI-ELECTRICAL-POWER-TECH" }, { 0x6CA780, "Nokia Corporation", "NOKIA" }, { 0xE878A1, "BEOVIEW INTERCOM DOO", "BEOVIEW-INTERCOM-DOO" }, { 0x3057AC, "IRLAB LTD.", "IRLAB" }, { 0x9002A9, "ZHEJIANG DAHUA TECHNOLOGY CO.,LTD", "ZHEJIANG-DAHUA" }, { 0x28AF0A, "Sirius XM Radio Inc", "SIRIUS-XM-RADIO" }, { 0xC8AA21, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x20C8B3, "SHENZHEN BUL-TECH CO.,LTD.", "SHENZHEN-BUL-TECH" }, { 0x60D819, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x945103, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x58B0D4, "ZuniData Systems Inc.", "ZUNIDATA" }, { 0x64557F, "NSFOCUS Information Technology Co., Ltd.", "NSFOCUS-INFORMATION" }, { 0x406AAB, "RIM", "RIM" }, { 0x640E36, "TAZTAG", "TAZTAG" }, { 0x3C197D, "Ericsson AB", "ERICSSON-AB" }, { 0x7C4B78, "Red Sun Synthesis Pte Ltd", "RED-SUN-SYNTHESIS-PTE" }, { 0x188796, "HTC Corporation", "HTC" }, { 0xFC7516, "D-Link International", "D-LINK" }, { 0x28D1AF, "Nokia Corporation", "NOKIA" }, { 0x3482DE, "Kayo Technology, Inc.", "KAYO" }, { 0x68BC0C, "Cisco Systems, Inc", "CISCO" }, { 0x2C9EFC, "CANON INC.", "CANON" }, { 0x98C845, "PacketAccess", "PACKETACCESS" }, { 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" }, { 0xEC9A74, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC02973, "Audyssey Laboratories Inc.", "AUDYSSEY-LABORATORIES" }, { 0x2C4401, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30168D, "ProLon", "PROLON" }, { 0xB451F9, "NB Software", "NB-SOFTWARE" }, { 0x0CBF15, "Genetec", "GENETEC" }, { 0x988217, "Disruptive Ltd", "DISRUPTIVE" }, { 0x6CF37F, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x80FFA8, "UNIDIS", "UNIDIS" }, { 0x489BE2, "SCI Innovations Ltd", "SCI-INNOVATIONS" }, { 0xB0E50E, "NRG SYSTEMS INC", "NRG" }, { 0x4C5FD2, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x48F7F1, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xD453AF, "VIGO System S.A.", "VIGO-SYSTEM" }, { 0x1CE192, "Qisda Corporation", "QISDA" }, { 0xDC0EA1, "COMPAL INFORMATION (KUNSHAN) CO., LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0xC8F981, "Seneca s.r.l.", "SENECA-S-R-L" }, { 0x88E0F3, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x8C7712, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x703187, "ACX GmbH", "ACX" }, { 0x14307A, "Avermetrics", "AVERMETRICS" }, { 0xC8903E, "Pakton Technologies", "PAKTON-TECHNOLOGIES" }, { 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" }, { 0x0007AB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x101F74, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xD0176A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x2C8BF2, "Hitachi Metals America Ltd", "HITACHI-METALS-AMERICA" }, { 0xF4CAE5, "FREEBOX SA", "FREEBOX" }, { 0x8C7EB3, "Lytro, Inc.", "LYTRO" }, { 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" }, { 0x587675, "Beijing ECHO Technologies Co.,Ltd", "BEIJING-ECHO-TECHNOLOGIES" }, { 0x78EF4C, "Unetconvergence Co., Ltd.", "UNETCONVERGENCE" }, { 0x3CD16E, "Telepower Communication Co., Ltd", "TELEPOWER-COMMUNICATION" }, { 0x00077D, "Cisco Systems, Inc", "CISCO" }, { 0x3C6F45, "Fiberpro Inc.", "FIBERPRO" }, { 0x5C16C7, "Big Switch Networks", "BIG-SWITCH-NETWORKS" }, { 0xB4FC75, "SEMA Electronics(HK) CO.,LTD", "SEMA-ELECTRONICS-HK" }, { 0xB0BF99, "WIZITDONGDO", "WIZITDONGDO" }, { 0x147DB3, "JOA TELECOM.CO.,LTD", "JOA-TELECOM" }, { 0x78BEB6, "Enhanced Vision", "ENHANCED-VISION" }, { 0x589835, "Technicolor", "TECHNICOLOR" }, { 0x50D6D7, "Takahata Precision", "TAKAHATA-PRECISION" }, { 0xB4A5A9, "MODI GmbH", "MODI" }, { 0xD09B05, "Emtronix", "EMTRONIX" }, { 0x90E2BA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x04888C, "Eifelwerk Butler Systeme GmbH", "EIFELWERK-BUTLER-SYSTEME" }, { 0x1013EE, "Justec International Technology INC.", "JUSTEC" }, { 0x704642, "CHYNG HONG ELECTRONIC CO., LTD.", "CHYNG-HONG" }, { 0xECEA03, "DARFON LIGHTING CORP", "DARFON-LIGHTING" }, { 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" }, { 0x3C6200, "Samsung electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0xB0BDA1, "ZAKLAD ELEKTRONICZNY SIMS", "ZAKLAD-ELEKTRONICZNY-SIMS" }, { 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" }, { 0x7819F7, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x180373, "Dell Inc", "DELL" }, { 0xD89DB9, "eMegatech International Corp.", "EMEGATECH" }, { 0x405A9B, "ANOVO", "ANOVO" }, { 0xACCA54, "Telldus Technologies AB", "TELLDUS-TECHNOLOGIES-AB" }, { 0x04E662, "Acroname Inc.", "ACRONAME" }, { 0xF0BF97, "Sony Corporation", "SONY" }, { 0x00789E, "SAGEMCOM", "SAGEMCOM" }, { 0x447E95, "Alpha and Omega, Inc", "ALPHA-AND-OMEGA" }, { 0x50C971, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0xE8B748, "Cisco Systems, Inc", "CISCO" }, { 0xDC16A2, "Medtronic Diabetes", "MEDTRONIC-DIABETES" }, { 0x78CA04, "Nokia Corporation", "NOKIA" }, { 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" }, { 0x78D6F0, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xE8E732, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x386E21, "Wasion Group Ltd.", "WASION-GROUP" }, { 0x78DEE4, "6278", "6278" }, { 0xD8C99D, "EA DISPLAY LIMITED", "EA-DISPLAY" }, { 0xCCFC6D, "RIZ TRANSMITTERS", "RIZ-TRANSMITTERS" }, { 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" }, { 0xF081AF, "IRZ AUTOMATION TECHNOLOGIES LTD", "IRZ-AUTOMATION-TECHNOLOGIES" }, { 0x14EB33, "BSMediasoft Co., Ltd.", "BSMEDIASOFT" }, { 0xAC8674, "Open Mesh, Inc.", "OPEN-MESH" }, { 0x2C27D7, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x14A9E3, "MST CORPORATION", "MST" }, { 0xCC1EFF, "Metrological Group BV", "METROLOGICAL-GROUP" }, { 0x941673, "Point Core SARL", "POINT-CORE-SARL" }, { 0x6C5D63, "ShenZhen Rapoo Technology Co., Ltd.", "SHENZHEN-RAPOO" }, { 0x685D43, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC44AD0, "FIREFLIES SYSTEMS", "FIREFLIES" }, { 0x88E0A0, "Shenzhen VisionSTOR Technologies Co., Ltd", "SHENZHEN-VISIONSTOR-TECHNOLOGIES" }, { 0x6879ED, "SHARP Corporation", "SHARP" }, { 0x9CC0D2, "Conductix-Wampfler GmbH", "CONDUCTIX-WAMPFLER" }, { 0x408BF6, "Shenzhen TCL New Technology Co; Ltd.", "SHENZHEN-TCL-NEW" }, { 0x948D50, "Beamex Oy Ab", "BEAMEX-OY-AB" }, { 0x94E226, "D. ORtiz Consulting, LLC", "D-ORTIZ-CONSULTING-LLC" }, { 0x74A722, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0xD4D184, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x103711, "Simlink AS", "SIMLINK-AS" }, { 0x1C184A, "ShenZhen RicherLink Technologies Co.,LTD", "SHENZHEN-RICHERLINK-TECHNOLOGIES" }, { 0x2013E0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x98EC65, "Cosesy ApS", "COSESY-APS" }, { 0x900917, "Far-sighted mobile", "FAR-SIGHTED-MOBILE" }, { 0x88F077, "Cisco Systems, Inc", "CISCO" }, { 0x2C2172, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0xCC55AD, "RIM", "RIM" }, { 0xF0F7B3, "Phorm", "PHORM" }, { 0xE8757F, "FIRS Technologies(Shenzhen) Co., Ltd", "FIRS-TECHNOLOGIES-SHENZHEN" }, { 0x9433DD, "Taco Electronic Solutions, Inc.", "TACO-SOLUTIONS" }, { 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" }, { 0x1880F5, "Alcatel-Lucent Shanghai Bell Co., Ltd ", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x54FDBF, "Scheidt & Bachmann GmbH", "SCHEIDT-BACHMANN" }, { 0xB8E589, "Payter BV", "PAYTER" }, { 0xC89C1D, "Cisco Systems, Inc", "CISCO" }, { 0x503DE5, "Cisco Systems, Inc", "CISCO" }, { 0x801440, "Sunlit System Technology Corp", "SUNLIT-SYSTEM" }, { 0xEC9ECD, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x303955, "Shenzhen Jinhengjia Electronic Co., Ltd.", "SHENZHEN-JINHENGJIA" }, { 0x5C5EAB, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0xE4E0C5, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x7C6ADB, "SafeTone Technology Co.,Ltd", "SAFETONE" }, { 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" }, { 0xAC80D6, "Hexatronic AB", "HEXATRONIC-AB" }, { 0x9CF938, "AREVA NP GmbH", "AREVA-NP" }, { 0xE0D7BA, "6278", "6278" }, { 0x500E6D, "TrafficCast International", "TRAFFICCAST" }, { 0x1CFEA7, "IDentytech Solutins Ltd.", "IDENTYTECH-SOLUTINS" }, { 0x6052D0, "FACTS Engineering ", "FACTS-ENGINEERING" }, { 0x8C278A, "Vocollect Inc", "VOCOLLECT" }, { 0xFCAF6A, "Qulsar Inc", "QULSAR" }, { 0xECE555, "Hirschmann Automation", "HIRSCHMANN-AUTOMATION" }, { 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" }, { 0xD0B53D, "SEPRO ROBOTIQUE", "SEPRO-ROBOTIQUE" }, { 0xA0DE05, "JSC Irbis-T", "JSC-IRBIS-T" }, { 0x8895B9, "Unified Packet Systems Crop", "UNIFIED-PACKET-CROP" }, { 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" }, { 0xB8E779, "9Solutions Oy", "9SOLUTIONS-OY" }, { 0x4018D7, "Smartronix, Inc.", "SMARTRONIX" }, { 0x18922C, "Virtual Instruments", "VIRTUAL-INSTRUMENTS" }, { 0xF80F84, "Natural Security SAS", "NATURAL-SECURITY-SAS" }, { 0xFCA13E, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xBC4760, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x643150, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x2C9E5F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0xCCCE40, "Janteq Corp", "JANTEQ" }, { 0x8C4DEA, "Cerio Corporation", "CERIO" }, { 0xECFAAA, "The IMS Company", "THE-IMS-COMPANY" }, { 0xEC986C, "Lufft Mess- und Regeltechnik GmbH", "LUFFT-MESS--UND-REGELTECHNIK" }, { 0xB0518E, "Holl technology CO.Ltd.", "HOLL" }, { 0xB8FFFE, "6278", "6278" }, { 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" }, { 0xB4C44E, "VXL eTech Pvt Ltd", "VXL-ETECH-PVT" }, { 0xF0933A, "NxtConect", "NXTCONECT" }, { 0x8818AE, "Tamron Co., Ltd", "TAMRON" }, { 0x20D607, "Nokia Corporation", "NOKIA" }, { 0x58DB8D, "Fast Co., Ltd.", "FAST" }, { 0x18EF63, "Cisco Systems, Inc", "CISCO" }, { 0xE87AF3, "S5 Tech S.r.l.", "S5-TECH-S-R-L" }, { 0x40C7C9, "Naviit Inc.", "NAVIIT" }, { 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" }, { 0xC0CB38, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5CD998, "D-Link Corporation", "D-LINK" }, { 0xD46CDA, "CSM GmbH", "CSM" }, { 0x60EB69, "Quanta computer Inc.", "QUANTA" }, { 0xC4F464, "Spica international", "SPICA" }, { 0x74911A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x544A05, "wenglor sensoric gmbh", "WENGLOR-SENSORIC" }, { 0x5CCA32, "Theben AG", "THEBEN" }, { 0xF866F2, "Cisco Systems, Inc", "CISCO" }, { 0x7C55E7, "YSI, Inc.", "YSI" }, { 0xC02BFC, "iNES. applied informatics GmbH", "INES-APPLIED-INFORMATICS" }, { 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" }, { 0xD87988, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x4C8B55, "Grupo Digicon", "GRUPO-DIGICON" }, { 0x04A3F3, "Emicon", "EMICON" }, { 0x48FCB8, "Woodstream Corporation", "WOODSTREAM" }, { 0xAC34CB, "Shanhai GBCOM Communication Technology Co. Ltd", "SHANHAI-GBCOM-COMMUNICATION" }, { 0xC43DC7, "Netgear", "NETGEAR" }, { 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" }, { 0xB407F9, "SAMSUNG ELECTRO-MECHANICS", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x7CED8D, "Microsoft", "MICROSOFT" }, { 0xDCD0F7, "Bentek Systems Ltd.", "BENTEK" }, { 0xD0574C, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0xC0830A, "2Wire", "2WIRE" }, { 0xB8921D, "BG T&A", "BG-T-A" }, { 0x648099, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4454C0, "Thompson Aerospace", "THOMPSON-AEROSPACE" }, { 0xB4A4E3, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x20D906, "Iota, Inc.", "IOTA" }, { 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" }, { 0x80501B, "Nokia Corporation", "NOKIA" }, { 0xCCFCB1, "Wireless Technology, Inc.", "WIRELESS" }, { 0xCC5C75, "Weightech Com. Imp. Exp. Equip. Pesagem Ltda", "WEIGHTECH-COM-IMP-EXP-EQUIP-PESAGEM-LTDA" }, { 0x84C7A9, "C3PO S.A.", "C3PO" }, { 0x78A2A0, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x404022, "ZIV", "ZIV" }, { 0x70F395, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x74F726, "Neuron Robotics", "NEURON-ROBOTICS" }, { 0xECCD6D, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 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" }, { 0x10189E, "Elmo Motion Control", "ELMO-MOTION-CONTROL" }, { 0x8CA982, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0xA098ED, "Shandong Intelligent Optical Communication Development Co., Ltd.", "SHANDONG-INTELLIGENT-OPTICAL-COMMUNICATION-DEVELOPMENT" }, { 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" }, { 0x14A62C, "S.M. Dezac S.A.", "S-M-DEZAC" }, { 0xC80AA9, "Quanta Computer Inc.", "QUANTA" }, { 0xA8F470, "Fujian Newland Communication Science Technologies Co.,Ltd.", "FUJIAN-NEWLAND-COMMUNICATION-SCIENCE-TECHNOLOGIES" }, { 0xDC1D9F, "U & B tech", "U-B-TECH" }, { 0x402BA1, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x081651, "SHENZHEN SEA STAR TECHNOLOGY CO.,LTD", "SHENZHEN-SEA-STAR" }, { 0xDC49C9, "CASCO SIGNAL LTD", "CASCO-SIGNAL" }, { 0xE85B5B, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 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" }, { 0x34C69A, "Enecsys Ltd", "ENECSYS" }, { 0x502A8B, "Telekom Research and Development Sdn Bhd", "TELEKOM-RESEARCH-AND-DEVELOPMENT-SDN-BHD" }, { 0xF88DEF, "Tenebraex", "TENEBRAEX" }, { 0xEC43E6, "AWCER Ltd.", "AWCER" }, { 0xB8AC6F, "Dell Inc", "DELL" }, { 0xF0EC39, "Essec", "ESSEC" }, { 0x5849BA, "Chitai Electronic Corp.", "CHITAI" }, { 0x181714, "DAEWOOIS", "DAEWOOIS" }, { 0x80B289, "Forworld Electronics Ltd.", "FORWORLD-ELECTRONICS" }, { 0xBCD5B6, "d2d technologies", "D2D-TECHNOLOGIES" }, { 0x1C8F8A, "Phase Motion Control SpA", "PHASE-MOTION-CONTROL-SPA" }, { 0xA4B1EE, "H. ZANDER GmbH & Co. KG", "H-ZANDER" }, { 0x545FA9, "Teracom Limited", "TERACOM" }, { 0xECC882, "Cisco Systems, Inc", "CISCO" }, { 0xA0B9ED, "Skytap", "SKYTAP" }, { 0xFC4463, "Universal Audio, Inc", "UNIVERSAL-AUDIO" }, { 0xF06853, "Integrated Corporation", "INTEGRATED" }, { 0xB09134, "Taleo", "TALEO" }, { 0xA863DF, "DISPLAIRE CORPORATION", "DISPLAIRE" }, { 0x104369, "Soundmax Electronic Limited ", "SOUNDMAX" }, { 0xC06C0F, "Dobbs Stanford", "DOBBS-STANFORD" }, { 0xD0B33F, "SHENZHEN TINNO MOBILE TECHNOLOGY CO.,LTD.", "SHENZHEN-TINNO-MOBILE" }, { 0x502DF4, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x38E8DF, "b gmbh medien + datenbanken", "B-MEDIEN-+-DATENBANKEN" }, { 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" }, { 0xA4ED4E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x2C1984, "IDN Telecom, Inc.", "IDN-TELECOM" }, { 0x3863F6, "3NOD MULTIMEDIA(SHENZHEN)CO.,LTD", "3NOD-MULTIMEDIA-SHENZHEN" }, { 0x347E39, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xA87E33, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xDCE2AC, "Lumens Digital Optics Inc.", "LUMENS-DIGITAL-OPTICS" }, { 0x98D88C, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xC8873B, "Net Optics", "NET-OPTICS" }, { 0x6CBEE9, "Alcatel-Lucent-IPD", "ALCATEL-LUCENT-IPD" }, { 0xB0E97E, "Advanced Micro Peripherals", "ADVANCED-MICRO-PERIPHERALS" }, { 0xD44CA7, "Informtekhnika & Communication, LLC", "INFORMTEKHNIKA-COMMUNICATION-LLC" }, { 0x10880F, "Daruma Telecomunica§µes e InformĦtica S.A.", "DARUMA-TELECOMUNICA§µES-E-INFORMĦTICA" }, { 0x00271B, "Alec Sicherheitssysteme GmbH", "ALEC-SICHERHEITSSYSTEME" }, { 0x002718, "Suzhou NEW SEAUNION Video Technology Co.,Ltd", "SUZHOU-NEW-SEAUNION-VIDEO" }, { 0x002713, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x00270C, "Cisco Systems, Inc", "CISCO" }, { 0x00270B, "Adura Technologies", "ADURA-TECHNOLOGIES" }, { 0x002705, "Sectronic", "SECTRONIC" }, { 0x002706, "YOISYS", "YOISYS" }, { 0x40F52E, "Leica Microsystems (Schweiz) AG", "LEICA-MICROSYSTEMS-SCHWEIZ" }, { 0xC02250, "Private", "PRIVATE" }, { 0x1801E3, "Elektrobit Wireless Communications Ltd", "ELEKTROBIT-WIRELESS-COMMUNICATION" }, { 0x64BC11, "CombiQ AB", "COMBIQ-AB" }, { 0x4097D1, "BK Electronics cc", "BK-ELECTRONICS-CC" }, { 0x68AAD2, "DATECS LTD.,", "DATECS" }, { 0x688540, "IGI Mobile, Inc.", "IGI-MOBILE" }, { 0x6465C0, "Nuvon, Inc", "NUVON" }, { 0xF0DE71, "Shanghai EDO Technologies Co.,Ltd.", "SHANGHAI-EDO-TECHNOLOGIES" }, { 0xA00798, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x4025C2, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 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" }, { 0xB0C69A, "juniper networks", "JUNIPER-NETWORKS" }, { 0x0CD7C2, "Axium Technologies, Inc.", "AXIUM-TECHNOLOGIES" }, { 0x28FBD3, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0x7C1EB3, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x1C4BD6, "AzureWave", "AZUREWAVE" }, { 0x9C1874, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x146E0A, "Private", "PRIVATE" }, { 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" }, { 0x4001C6, "3COM EUROPE LTD", "3COM" }, { 0x608D17, "Sentrus Government Systems Division, Inc", "SENTRUS-GOVERNMENT-DIVISION" }, { 0x24BF74, "Private", "PRIVATE" }, { 0x80912A, "Lih Rong electronic Enterprise Co., Ltd.", "LIH-RONG" }, { 0x8038FD, "LeapFrog Enterprises, Inc.", "LEAPFROG-ENTERPRISES" }, { 0x7072CF, "EdgeCore Networks", "EDGECORE-NETWORKS" }, { 0xC8AACC, "Private", "PRIVATE" }, { 0x803B9A, "ghe-ces electronic ag", "GHE-CES" }, { 0x9CCD82, "CHENG UEI PRECISION INDUSTRY CO.,LTD", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0x008CFA, "Inventec Corporation", "INVENTEC" }, { 0x0CEF7C, "AnaCom Inc", "ANACOM" }, { 0x0026D3, "Zeno Information System", "ZENO-INFORMATION-SYSTEM" }, { 0x0026D4, "IRCA SpA", "IRCA-SPA" }, { 0x0026CD, "PurpleComm, Inc.", "PURPLECOMM" }, { 0x0026C7, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0026C1, "ARTRAY CO., LTD.", "ARTRAY" }, { 0x0026B6, "Askey Computer", "ASKEY" }, { 0x0026B5, "ICOMM Tele Ltd", "ICOMM-TELE" }, { 0x0026AF, "Duelco A/S", "DUELCO-A/S" }, { 0x0026AB, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0x0026FF, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x0026F9, "S.E.M. srl", "S-E-M-SRL" }, { 0x0026F3, "SMC Networks", "SMC-NETWORKS" }, { 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" }, { 0xE08FEC, "REPOTEC CO., LTD.", "REPOTEC" }, { 0x38229D, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0xD0D286, "Beckman Coulter K.K.", "BECKMAN-COULTER-K-K" }, { 0x1C0FCF, "Sypro Optics GmbH", "SYPRO-OPTICS" }, { 0x003D41, "Hatteland Computer AS", "HATTELAND-AS" }, { 0x087618, "ViE Technologies Sdn. Bhd.", "VIE-TECHNOLOGIES-SDN-BHD" }, { 0xA4AD00, "Ragsdale Technology", "RAGSDALE" }, { 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" }, { 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" }, { 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" }, { 0x002667, "CARECOM CO.,LTD.", "CARECOM" }, { 0x00265A, "D-Link Corporation", "D-LINK" }, { 0x002660, "Logiways", "LOGIWAYS" }, { 0x002656, "Sansonic Electronics USA", "SANSONIC-ELECTRONICS-USA" }, { 0x002653, "DaySequerra Corporation", "DAYSEQUERRA" }, { 0x002565, "Vizimax Inc.", "VIZIMAX" }, { 0x00255E, "Shanghai Dare Technologies Co.,Ltd.", "SHANGHAI-DARE-TECHNOLOGIES" }, { 0x002558, "MPEDIA", "MPEDIA" }, { 0x002557, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x002552, "VXI CORPORATION", "VXI" }, { 0x002546, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x00264D, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x00264C, "Shanghai DigiVision Technology Co., Ltd.", "SHANGHAI-DIGIVISION" }, { 0x002647, "WFE TECHNOLOGY CORP.", "WFE" }, { 0x002642, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00263B, "Onbnetech", "ONBNETECH" }, { 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" }, { 0x002622, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x00261C, "NEOVIA INC.", "NEOVIA" }, { 0x002615, "Teracom Limited", "TERACOM" }, { 0x002616, "Rosemount Inc.", "ROSEMOUNT" }, { 0x002610, "Apacewave Technologies", "APACEWAVE-TECHNOLOGIES" }, { 0x002609, "Phyllis Co., Ltd.", "PHYLLIS" }, { 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" }, { 0x0025E7, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0025E2, "Everspring Industry Co., Ltd.", "EVERSPRING-INDUSTRY" }, { 0x0025DD, "SUNNYTEK INFORMATION CO., LTD.", "SUNNYTEK-INFORMATION" }, { 0x0025D6, "The Kroger Co.", "THE-KROGER" }, { 0x0025CA, "LS Research, LLC", "LS-RESEARCH-LLC" }, { 0x0025CF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0025D0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0025C3, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002545, "Cisco Systems, Inc", "CISCO" }, { 0x00253C, "2Wire", "2WIRE" }, { 0x002535, "Minimax GmbH & Co KG", "MINIMAX" }, { 0x002532, "Digital Recorders", "DIGITAL-RECORDERS" }, { 0x00252B, "Stirling Energy Systems", "STIRLING-ENERGY" }, { 0x002526, "Genuine Technologies Co., Ltd.", "GENUINE-TECHNOLOGIES" }, { 0x002525, "CTERA Networks Ltd.", "CTERA-NETWORKS" }, { 0x002520, "SMA Railway Technology GmbH", "SMA-RAILWAY" }, { 0x0026A5, "MICROROBOT.CO.,LTD", "MICROROBOT" }, { 0x00269F, "Private", "PRIVATE" }, { 0x002699, "Cisco Systems, Inc", "CISCO" }, { 0x00268C, "StarLeaf Ltd.", "STARLEAF" }, { 0x002692, "Mitsubishi Electric Co.", "MITSUBISHI-ELECTRIC" }, { 0x002686, "Quantenna Communcations, Inc.", "QUANTENNA-COMMUNCATIONS" }, { 0x00247D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002482, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x002476, "TAP.tv", "TAP-TV" }, { 0x00246F, "Onda Communication spa", "ONDA-COMMUNICATION-SPA" }, { 0x00246A, "Solid Year Co., Ltd.", "SOLID-YEAR" }, { 0x002463, "Phybridge Inc", "PHYBRIDGE" }, { 0x002456, "2Wire", "2WIRE" }, { 0x002459, "ABB Automation products GmbH", "ABB-AUTOMATION-PRODUCTS" }, { 0x00245E, "Hivision Co.,ltd", "HIVISION" }, { 0x002451, "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" }, { 0x0023D7, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x0023C5, "Radiation Safety and Control Services Inc", "RADIATION-SAFETY-AND-CONTROL-SERVICES" }, { 0x0023C4, "Lux Lumen", "LUX-LUMEN" }, { 0x0024D1, "Thomson Inc.", "THOMSON" }, { 0x0024CA, "Tobii Technology AB", "TOBII-AB" }, { 0x0024C5, "Meridian Audio Limited", "MERIDIAN-AUDIO" }, { 0x0024BE, "Sony Corporation", "SONY" }, { 0x0024B9, "Wuhan Higheasy Electronic Technology Development Co.Ltd", "WUHAN-HIGHEASY-DEVELOPMENT" }, { 0x0024B4, "ESCATRONIC GmbH", "ESCATRONIC" }, { 0x0024AF, "EchoStar Technologies", "ECHOSTAR-TECHNOLOGIES" }, { 0x0024AD, "Adolf Thies Gmbh & Co. KG", "ADOLF-THIES" }, { 0x0024A8, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x0024A1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00249C, "Bimeng Comunication System Co. Ltd", "BIMENG-COMUNICATION-SYSTEM" }, { 0x002489, "Vodafone Omnitel N.V.", "VODAFONE-OMNITEL-N-V" }, { 0x00248E, "Infoware ZRt.", "INFOWARE-ZRT" }, { 0x002490, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x002495, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00247B, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0024F0, "Seanodes", "SEANODES" }, { 0x0024E9, "Samsung Electronics Co., Ltd., Storage System Division", "SAMSUNG-ELECTRONICS-STORAGE-SYSTEM-DIVISION" }, { 0x0024EB, "ClearPath Networks, Inc.", "CLEARPATH-NETWORKS" }, { 0x0024E4, "Withings", "WITHINGS" }, { 0x0024DD, "Centrak, Inc.", "CENTRAK" }, { 0x0024D8, "IlSung Precision", "ILSUNG-PRECISION" }, { 0x0024CC, "Fascinations Toys and Gifts, Inc.", "FASCINATIONS-TOYS-AND-GIFTS" }, { 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" }, { 0x0024FC, "QuoPin Co., Ltd.", "QUOPIN" }, { 0x0024FE, "AVM GmbH", "AVM" }, { 0x0024F7, "Cisco Systems, Inc", "CISCO" }, { 0x00244C, "Solartron Metrology Ltd", "SOLARTRON-METROLOGY" }, { 0x002445, "CommScope Canada Inc.", "COMMSCOPE-CANADA" }, { 0x00243F, "Storwize, Inc.", "STORWIZE" }, { 0x002440, "Halo Monitoring, Inc.", "HALO-MONITORING" }, { 0x00243B, "CSSI (S) Pte Ltd", "CSSI-S-PTE" }, { 0x002435, "WIDE CORPORATION", "WIDE" }, { 0x00242F, "Micron", "MICRON" }, { 0x00242B, "Hon Hai Precision Ind.Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00242C, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00241F, "DCT-Delta GmbH", "DCT-DELTA" }, { 0x00241E, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x0023FA, "RG Nets, Inc.", "RG-NETS" }, { 0x0023FF, "Beijing HTTC Technology Ltd.", "BEIJING-HTTC" }, { 0x0023F4, "Masternaut", "MASTERNAUT" }, { 0x0023EA, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x00239F, "Institut fĵr Prĵftechnik", "INSTITUT-FĵR-PRĵFTECHNIK" }, { 0x002399, "VD Division, Samsung Electronics Co.", "VD-DIVISION-SAMSUNG-ELECTRONICS" }, { 0x002393, "AJINEXTEK", "AJINEXTEK" }, { 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" }, { 0x002351, "2Wire", "2WIRE" }, { 0x00234A, "Private", "PRIVATE" }, { 0x002344, "Objective Interface Systems, Inc.", "OBJECTIVE-INTERFACE" }, { 0x002343, "TEM AG", "TEM" }, { 0x00233E, "Alcatel-Lucent-IPD", "ALCATEL-LUCENT-IPD" }, { 0x002337, "Global Star Solutions ULC", "GLOBAL-STAR-SOLUTIONS-ULC" }, { 0x00226D, "Shenzhen GIEC Electronics Co., Ltd.", "SHENZHEN-GIEC-ELECTRONICS" }, { 0x002263, "Koos Technical Services, Inc.", "KOOS-TECHNICAL-SERVICES" }, { 0x00225F, "Liteon Technology Corporation", "LITEON" }, { 0x002267, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002259, "Guangzhou New Postcom Equipment Co.,Ltd.", "GUANGZHOU-NEW-POSTCOM-EQUIPMENT" }, { 0x002253, "Entorian Technologies", "ENTORIAN-TECHNOLOGIES" }, { 0x002250, "Point Six Wireless, LLC", "POINT-SIX-WIRELESS-LLC" }, { 0x002249, "HOME MULTIENERGY SL", "HOME-MULTIENERGY-SL" }, { 0x0022FA, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x0022E4, "APASS TECHNOLOGY CO., LTD.", "APASS" }, { 0x0022DD, "Protecta Electronics Ltd", "PROTECTA-ELECTRONICS" }, { 0x0022D7, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0022D8, "Shenzhen GST Security and Safety Technology Limited", "SHENZHEN-GST-SECURITY-AND-SAFETY" }, { 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" }, { 0x00227F, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x002277, "NEC Australia Pty Ltd", "NEC-AUSTRALIA-PTY" }, { 0x00224A, "RAYLASE AG", "RAYLASE" }, { 0x002240, "Universal Telecom S/A", "UNIVERSAL-TELECOM-S/A" }, { 0x002233, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x00222D, "SMC Networks Inc.", "SMC-NETWORKS" }, { 0x00222E, "maintech GmbH", "MAINTECH" }, { 0x002221, "ITOH DENKI CO,LTD.", "ITOH-DENKI" }, { 0x00221B, "Morega Systems", "MOREGA" }, { 0x002220, "Mitac Technology Corp", "MITAC" }, { 0x002227, "uv-electronic GmbH", "UV" }, { 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" }, { 0x0022B6, "Superflow Technologies Group", "SUPERFLOW-TECHNOLOGIES-GROUP" }, { 0x0022B1, "Elbit Systems", "ELBIT" }, { 0x0022AA, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0022A4, "2Wire", "2WIRE" }, { 0x00238F, "NIDEC COPAL CORPORATION", "NIDEC-COPAL" }, { 0x00238B, "Quanta Computer Inc.", "QUANTA" }, { 0x002385, "ANTIPODE", "ANTIPODE" }, { 0x00237E, "ELSTER GMBH", "ELSTER" }, { 0x00237F, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x002379, "Union Business Machines Co. Ltd.", "UNION-BUSINESS-MACHINES" }, { 0x002376, "HTC Corporation", "HTC" }, { 0x002375, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002363, "Zhuhai RaySharp Technology Co., Ltd.", "ZHUHAI-RAYSHARP" }, { 0x002331, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00232B, "IRD A/S", "IRD-A/S" }, { 0x00231C, "Fourier Systems Ltd.", "FOURIER" }, { 0x00231B, "Danaher Motion - Kollmorgen", "DANAHER-MOTION---KOLLMORGEN" }, { 0x002313, "Qool Technologies Ltd.", "QOOL-TECHNOLOGIES" }, { 0x002314, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00230D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001FFF, "Respironics, Inc.", "RESPIRONICS" }, { 0x001FFE, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x002100, "GemTek Technology Co., Ltd.", "GEMTEK" }, { 0x001FFD, "Indigo Mobile Technologies Corp.", "INDIGO-MOBILE-TECHNOLOGIES" }, { 0x001FF8, "Siemens AG, Sector Industry, Drive Technologies, Motion Control Systems", "SIEMENS-SECTOR-INDUSTRY-DRIVE-TECHNOLOGIES-MOTION-CONTROL" }, { 0x001FF1, "Paradox Hellas S.A.", "PARADOX-HELLAS" }, { 0x001FEC, "Synapse ‰lectronique", "SYNAPSE-‰LECTRONIQUE" }, { 0x001FE5, "In-Circuit GmbH", "IN-CIRCUIT" }, { 0x001FDE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001FD9, "RSD Communications Ltd", "RSD-COMMUNICATION" }, { 0x001FD4, "4IPNET, INC.", "4IPNET" }, { 0x001FCF, "MSI Technology GmbH", "MSI" }, { 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" }, { 0x00215A, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x002154, "D-TACQ Solutions Ltd", "D-TACQ-SOLUTIONS" }, { 0x00214D, "Guangzhou Skytone Transmission Technology Com. Ltd.", "GUANGZHOU-SKYTONE-TRANSMISSION-COM" }, { 0x002147, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002148, "Kaco Solar Korea", "KACO-SOLAR-KOREA" }, { 0x00213F, "A-Team Technology Ltd.", "A-TEAM" }, { 0x002139, "Escherlogic Inc.", "ESCHERLOGIC" }, { 0x002134, "Brandywine Communications", "BRANDYWINE-COMMUNICATION" }, { 0x00212F, "Phoebe Micro Inc.", "PHOEBE-MICRO" }, { 0x0021DF, "Martin Christ GmbH", "MARTIN-CHRIST" }, { 0x0021D2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0021D8, "Cisco Systems, Inc", "CISCO" }, { 0x0021CC, "Flextronics International", "FLEXTRONICS" }, { 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" }, { 0x002214, "RINNAI KOREA", "RINNAI-KOREA" }, { 0x00220E, "Indigo Security Co., Ltd.", "INDIGO-SECURITY" }, { 0x002208, "Certicom Corp", "CERTICOM" }, { 0x002201, "Aksys Networks Inc", "AKSYS-NETWORKS" }, { 0x0021FC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021F7, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 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" }, { 0x001FA9, "Atlanta DTH, Inc.", "ATLANTA-DTH" }, { 0x001F9F, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x001F93, "Xiotech Corporation", "XIOTECH" }, { 0x001F98, "DAIICHI-DENTSU LTD.", "DAIICHI-DENTSU" }, { 0x001F8C, "CCS Inc.", "CCS" }, { 0x002129, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00212A, "Audiovox Corporation", "AUDIOVOX" }, { 0x002123, "Aerosat Avionics", "AEROSAT-AVIONICS" }, { 0x00211C, "Cisco Systems, Inc", "CISCO" }, { 0x002117, "Tellord", "TELLORD" }, { 0x002110, "Clearbox Systems", "CLEARBOX" }, { 0x002106, "RIM Testing Services", "RIM-TESTING-SERVICES" }, { 0x00217F, "Intraco Technology Pte Ltd", "INTRACO-PTE" }, { 0x00217A, "Sejin Electron, Inc.", "SEJIN-ELECTRON" }, { 0x002179, "IOGEAR, Inc.", "IOGEAR" }, { 0x002173, "Ion Torrent Systems, Inc.", "ION-TORRENT" }, { 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" }, { 0x0021AD, "Nordic ID Oy", "NORDIC-ID-OY" }, { 0x0021A6, "Videotec Spa", "VIDEOTEC-SPA" }, { 0x0021A0, "Cisco Systems, Inc", "CISCO" }, { 0x00219C, "Honeywld Technology Corp.", "HONEYWLD" }, { 0x002192, "Baoding Galaxy Electronic Technology Co.,Ltd", "BAODING-GALAXY" }, { 0x00218C, "TopControl GMBH", "TOPCONTROL" }, { 0x002186, "Universal Global Scientific Industrial Co., Ltd", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001F29, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001F23, "Interacoustics", "INTERACOUSTICS" }, { 0x001F24, "DIGITVIEW TECHNOLOGY CO., LTD.", "DIGITVIEW" }, { 0x001F1D, "Atlas Material Testing Technology LLC", "ATLAS-MATERIAL-TESTING-LLC" }, { 0x001F16, "Wistron Corporation", "WISTRON" }, { 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" }, { 0x001F58, "EMH Energiemesstechnik GmbH", "EMH-ENERGIEMESSTECHNIK" }, { 0x001F4C, "Roseman Engineering Ltd", "ROSEMAN-ENGINEERING" }, { 0x001F51, "HD Communications Corp", "HD-COMMUNICATION" }, { 0x001F4B, "Lineage Power", "LINEAGE-POWER" }, { 0x001F45, "Enterasys", "ENTERASYS" }, { 0x001F36, "Bellwin Information Co. Ltd.,", "BELLWIN-INFORMATION" }, { 0x001F3C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001F35, "AIR802 LLC", "AIR802-LLC" }, { 0x001F30, "Travelping", "TRAVELPING" }, { 0x001E6C, "Opaque Systems", "OPAQUE" }, { 0x001E67, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E60, "Digital Lighting Systems, Inc", "DIGITAL-LIGHTING" }, { 0x001E59, "Silicon Turnkey Express, LLC", "SILICON-TURNKEY-EXPRESS-LLC" }, { 0x001E5A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001F05, "iTAS Technology Corp.", "ITAS" }, { 0x001EF3, "From2", "FROM2" }, { 0x001EF8, "Emfinity Inc.", "EMFINITY" }, { 0x001EEC, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 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" }, { 0x001F8A, "Ellion Digital Inc.", "ELLION-DIGITAL" }, { 0x001F83, "Teleplan Technology Services Sdn Bhd", "TELEPLAN-SERVICES-SDN-BHD" }, { 0x001F7E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001F7A, "WiWide Inc.", "WIWIDE" }, { 0x001F70, "Botik Technologies LTD", "BOTIK-TECHNOLOGIES" }, { 0x001F75, "GiBahn Media", "GIBAHN-MEDIA" }, { 0x001F64, "Beijing Autelan Technology Inc.", "BEIJING-AUTELAN" }, { 0x001F6B, "LG Electronics", "LG-ELECTRONICS" }, { 0x001F5D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F5E, "Dyna Technology Co.,Ltd.", "DYNA" }, { 0x001E13, "Cisco Systems, Inc", "CISCO" }, { 0x001E0E, "MAXI VIEW HOLDINGS LIMITED", "MAXI-VIEW-HOLDINGS" }, { 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" }, { 0x001E99, "Vantanol Industrial Corporation", "VANTANOL-INDUSTRIAL" }, { 0x001E92, "JEULIN S.A.", "JEULIN" }, { 0x001E89, "CRFS Limited", "CRFS" }, { 0x001E7D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001E84, "Pika Technologies Inc.", "PIKA-TECHNOLOGIES" }, { 0x001E83, "LAN/MAN Standards Association (LMSC)", "LAN/MAN-STANDARDS-ASSOCIATION-LMSC" }, { 0x001ECF, "PHILIPS ELECTRONICS UK LTD", "PHILIPS-ELECTRONICS-UK" }, { 0x001ECA, "Nortel", "NORTEL" }, { 0x001EC9, "Dell Inc", "DELL" }, { 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-+" }, { 0x001E3E, "KMW Inc.", "KMW" }, { 0x001E37, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 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" }, { 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" }, { 0x001C63, "TRUEN", "TRUEN" }, { 0x001C57, "Cisco Systems, Inc", "CISCO" }, { 0x001C5E, "ASTON France", "ASTON-FRANCE" }, { 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" }, { 0x001D82, "GN A/S (GN Netcom A/S)", "GN-A/S-GN-NETCOM-A/S" }, { 0x001D7D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001D6B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 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" }, { 0x001D42, "Nortel", "NORTEL" }, { 0x001D3C, "Muscle Corporation", "MUSCLE" }, { 0x001CA3, "Terra", "TERRA" }, { 0x001CA5, "Zygo Corporation", "ZYGO" }, { 0x001CAA, "Bellon Pty Ltd", "BELLON-PTY" }, { 0x001C9D, "Liecthi AG", "LIECTHI" }, { 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" }, { 0x001D30, "YX Wireless S.A.", "YX-WIRELESS" }, { 0x001D35, "Viconics Electronics Inc.", "VICONICS-ELECTRONICS" }, { 0x001D2F, "QuantumVision Corporation", "QUANTUMVISION" }, { 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" }, { 0x001CDA, "Exegin Technologies Limited", "EXEGIN-TECHNOLOGIES" }, { 0x001CD4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x001CC1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001CC2, "Part II Research, Inc.", "PART-II-RESEARCH" }, { 0x001CBB, "MusicianLink", "MUSICIANLINK" }, { 0x001CB1, "Cisco Systems, Inc", "CISCO" }, { 0x001CB7, "USC DigiArk Corporation", "USC-DIGIARK" }, { 0x001DE3, "Intuicom", "INTUICOM" }, { 0x001DDD, "DAT H.K. LIMITED", "DAT-H-K" }, { 0x001DCA, "PAV Electronics Limited", "PAV-ELECTRONICS" }, { 0x001DD1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DC4, "AIOI Systems Co., Ltd.", "AIOI" }, { 0x001DC3, "RIKOR TV, Ltd", "RIKOR-TV" }, { 0x001DBE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DB1, "Crescendo Networks", "CRESCENDO-NETWORKS" }, { 0x001D03, "Design Solutions Inc.", "DESIGN-SOLUTIONS" }, { 0x001CFE, "Quartics Inc", "QUARTICS" }, { 0x001CFD, "Universal Electronics", "UNIVERSAL-ELECTRONICS" }, { 0x001CF7, "AudioScience", "AUDIOSCIENCE" }, { 0x001CF0, "D-Link Corporation", "D-LINK" }, { 0x001CEB, "Nortel", "NORTEL" }, { 0x001CE6, "INNES", "INNES" }, { 0x001CE1, "INDRA SISTEMAS, S.A.", "INDRA-SISTEMAS" }, { 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" }, { 0x001ADB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001AC8, "ISL (Instrumentation Scientifique de Laboratoire)", "ISL-INSTRUMENTATION-SCIENTIFIQUE-DE-LABORATOIRE" }, { 0x001ACF, "C.T. ELETTRONICA", "C-T-ELETTRONICA" }, { 0x001C46, "QTUM", "QTUM" }, { 0x001C4D, "Aplix IP Holdings Corporation", "APLIX-IP-HOLDINGS" }, { 0x001C3A, "Element Labs, Inc.", "ELEMENT-LABS" }, { 0x001C41, "scemtec Transponder Technology GmbH", "SCEMTEC-TRANSPONDER" }, { 0x001C34, "HUEY CHIAO INTERNATIONAL CO., LTD.", "HUEY-CHIAO" }, { 0x001C35, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001C33, "Sutron", "SUTRON" }, { 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" }, { 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" }, { 0x001B29, "Avantis.Co.,Ltd", "AVANTIS" }, { 0x001B23, "SimpleComTools", "SIMPLECOMTOOLS" }, { 0x001BDF, "Iskra Sistemi d.d.", "ISKRA-SISTEMI-D-D" }, { 0x001BD3, "Panasonic Corp. AVC Company", "PANASONIC-AVC-COMPANY" }, { 0x001BD8, "DVTel LTD", "DVTEL" }, { 0x001BCC, "KINGTEK CCTV ALLIANCE CO., LTD.", "KINGTEK-CCTV-ALLIANCE" }, { 0x001BC7, "StarVedia Technology Inc.", "STARVEDIA" }, { 0x001BC6, "Strato Rechenzentrum AG", "STRATO-RECHENZENTRUM" }, { 0x001BC5, "IEEE REGISTRATION AUTHORITY - Please see OUI36/MA-S public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-OUI36/MA-S-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x001BC0, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x001BBB, "RFTech Co.,Ltd", "RFTECH" }, { 0x001BB6, "Bird Electronic Corp.", "BIRD" }, { 0x001B7F, "TMN Technologies Telecomunicacoes Ltda", "TMN-TECHNOLOGIES-TELECOMUNICACOES-LTDA" }, { 0x001B81, "DATAQ Instruments, Inc.", "DATAQ-INSTRUMENTS" }, { 0x001B80, "LORD Corporation", "LORD" }, { 0x001B7A, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001B73, "DTL Broadcast Ltd", "DTL-BROADCAST" }, { 0x001B6E, "Anue Systems, Inc.", "ANUE" }, { 0x001B67, "Cisco Systems Inc", "CISCO" }, { 0x001B60, "NAVIGON AG", "NAVIGON" }, { 0x001B5B, "2Wire, Inc.", "2WIRE" }, { 0x001C11, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001C0A, "Shenzhen AEE Technology Co.,Ltd.", "SHENZHEN-AEE" }, { 0x001C05, "Nonin Medical Inc.", "NONIN-MEDICAL" }, { 0x001BFE, "Zavio Inc.", "ZAVIO" }, { 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" }, { 0x001B1E, "HART Communication Foundation", "HART-COMMUNICATION-FOUNDATION" }, { 0x001B12, "Apprion", "APPRION" }, { 0x001B17, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 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" }, { 0x001AF8, "Copley Controls Corporation", "COPLEY-CONTROLS" }, { 0x001AF3, "Samyoung Electronics", "SAMYOUNG-ELECTRONICS" }, { 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" }, { 0x001A9D, "Skipper Wireless, Inc.", "SKIPPER-WIRELESS" }, { 0x001AA2, "Cisco Systems, Inc", "CISCO" }, { 0x001BAA, "XenICs nv", "XENICS-NV" }, { 0x001BAF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001BA3, "Flexit Group GmbH", "FLEXIT-GROUP" }, { 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" }, { 0x001936, "STERLITE OPTICAL TECHNOLOGIES LIMITED", "STERLITE-OPTICAL-TECHNOLOGIES" }, { 0x00193B, "Wilibox Deliberant Group LLC", "WILIBOX-DELIBERANT-GROUP-LLC" }, { 0x00192F, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x001A20, "CMOTECH Co. Ltd.", "CMOTECH" }, { 0x001A22, "eQ-3 Entwicklung GmbH", "EQ-3-ENTWICKLUNG" }, { 0x001A1B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001966, "Asiarock Technology Limited", "ASIAROCK" }, { 0x00195C, "Innotech Corporation", "INNOTECH" }, { 0x001961, "Blaupunkt Embedded Systems GmbH", "BLAUPUNKT-EMBEDDED" }, { 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" }, { 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" }, { 0x001A80, "Sony Corporation", "SONY" }, { 0x001A85, "NV Michel Van de Wiele", "NV-MICHEL-VAN-DE-WIELE" }, { 0x001A87, "Canhold International Limited", "CANHOLD" }, { 0x001A86, "AdvancedIO Systems Inc", "ADVANCEDIO" }, { 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" }, { 0x001A44, "JWTrading Co., Ltd", "JWTRADING" }, { 0x001A49, "Micro Vision Co.,LTD", "MICRO-VISION" }, { 0x001991, "avinfo", "AVINFO" }, { 0x00198A, "Northrop Grumman Systems Corp.", "NORTHROP-GRUMMAN" }, { 0x00198C, "iXSea", "IXSEA" }, { 0x001985, "IT Watchdogs, Inc", "IT-WATCHDOGS" }, { 0x001977, "Aerohive Networks, Inc.", "AEROHIVE-NETWORKS" }, { 0x001979, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001972, "Plexus (Xiamen) Co.,ltd", "PLEXUS-XIAMEN" }, { 0x00196B, "Danpex Corporation", "DANPEX" }, { 0x0019B3, "Stanford Research Systems", "STANFORD-RESEARCH" }, { 0x0019B5, "Famar Fueguina S.A.", "FAMAR-FUEGUINA" }, { 0x0019BA, "Paradox Security Systems Ltd", "PARADOX-SECURITY" }, { 0x0019A2, "ORDYN TECHNOLOGIES", "ORDYN-TECHNOLOGIES" }, { 0x0019A7, "ITU-T", "ITU-T" }, { 0x0019AE, "Hopling Technologies b.v.", "HOPLING-TECHNOLOGIES" }, { 0x001996, "TurboChef Technologies Inc.", "TURBOCHEF-TECHNOLOGIES" }, { 0x00199B, "Diversified Technical Systems, Inc.", "DIVERSIFIED-TECHNICAL" }, { 0x0019F6, "Acconet (PTE) Ltd", "ACCONET-PTE" }, { 0x0019EA, "TeraMage Technologies Co., Ltd.", "TERAMAGE-TECHNOLOGIES" }, { 0x0019DE, "MOBITEK", "MOBITEK" }, { 0x0019CB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x0019D0, "Cathexis", "CATHEXIS" }, { 0x0019D2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0019D7, "FORTUNETEK CO., LTD", "FORTUNETEK" }, { 0x001A4B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x0017BA, "SEDO CO., LTD.", "SEDO" }, { 0x0017BF, "Coherent Research Limited", "COHERENT-RESEARCH" }, { 0x0017C1, "CM Precision Technology LTD.", "CM-PRECISION" }, { 0x0017B3, "Aftek Infosys Limited", "AFTEK-INFOSYS" }, { 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" }, { 0x001815, "GZ Technologies, Inc.", "GZ-TECHNOLOGIES" }, { 0x00181C, "Exterity Limited", "EXTERITY" }, { 0x001809, "CRESYN", "CRESYN" }, { 0x00180E, "Avega Systems", "AVEGA" }, { 0x001810, "IPTrade S.A.", "IPTRADE" }, { 0x001802, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x0017EF, "IBM Corp", "IBM" }, { 0x0017F6, "Pyramid Meriden Inc.", "PYRAMID-MERIDEN" }, { 0x0017FB, "FA", "FA" }, { 0x0017FD, "Amulet Hotkey", "AMULET-HOTKEY" }, { 0x0017E3, "6278", "6278" }, { 0x0017EA, "6278", "6278" }, { 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" }, { 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" }, { 0x0018B2, "ADEUNIS RF", "ADEUNIS-RF" }, { 0x0018B7, "D3 LED, LLC", "D3-LED-LLC" }, { 0x0018AB, "BEIJING LHWT MICROELECTRONICS INC.", "BEIJING-LHWT-MICROELECTRONICS" }, { 0x0018A4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0018A6, "Persistent Systems, LLC", "PERSISTENT-LLC" }, { 0x001895, "Hansun Technologies Inc.", "HANSUN-TECHNOLOGIES" }, { 0x00189A, "HANA Micron Inc.", "HANA-MICRON" }, { 0x00189F, "Lenntek Corporation", "LENNTEK" }, { 0x001887, "Metasystem SpA", "METASYSTEM-SPA" }, { 0x001889, "WinNet Solutions Limited", "WINNET-SOLUTIONS" }, { 0x00188E, "Ekahau, Inc.", "EKAHAU" }, { 0x0018DB, "EPL Technology Ltd", "EPL" }, { 0x0018E0, "ANAVEO", "ANAVEO" }, { 0x0018CF, "Baldor Electric Company", "BALDOR-ELECTRIC-COMPANY" }, { 0x0018D4, "Unified Display Interface SIG", "UNIFIED-DISPLAY-INTERFACE-SIG" }, { 0x0018C3, "CS Corporation", "CS" }, { 0x0018C5, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0018CA, "Viprinet GmbH", "VIPRINET" }, { 0x0018BE, "ANSA Corporation", "ANSA" }, { 0x0017D7, "ION Geophysical Corporation Inc.", "ION-GEOPHYSICAL" }, { 0x0017DC, "DAEMYUNG ZERO1", "DAEMYUNG-ZERO1" }, { 0x0017DE, "Advantage Six Ltd", "ADVANTAGE-SIX" }, { 0x0017CD, "CEC Wireless R&D Ltd.", "CEC-WIRELESS-R-D" }, { 0x0017D2, "THINLINX PTY LTD", "THINLINX-PTY" }, { 0x0017C6, "Cross Match Technologies Inc", "CROSS-MATCH-TECHNOLOGIES" }, { 0x00185D, "TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD.", "TAIGUEN-SHEN-ZHEN" }, { 0x001864, "Eaton Corporation", "EATON" }, { 0x001851, "SWsoft", "SWSOFT" }, { 0x001858, "TagMaster AB", "TAGMASTER-AB" }, { 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" }, { 0x00182F, "6278", "6278" }, { 0x001834, "6278", "6278" }, { 0x001821, "SINDORICOH", "SINDORICOH" }, { 0x00187B, "4NSYS Co. Ltd.", "4NSYS" }, { 0x001876, "WowWee Ltd.", "WOWWEE" }, { 0x00186A, "Global Link Digital Technology Co,.LTD", "GLOBAL-LINK-DIGITAL" }, { 0x00186F, "Setha Industria Eletronica LTDA", "SETHA-INDUSTRIA-ELETRONICA-LTDA" }, { 0x001869, "KINGJIM", "KINGJIM" }, { 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" }, { 0x001650, "Herley General Microwave Israel. ", "HERLEY-GENERAL-MICROWAVE-ISRAEL" }, { 0x001649, "SetOne GmbH", "SETONE" }, { 0x00163F, "CReTE SYSTEMS Inc.", "CRETE" }, { 0x001719, "Audiocodes USA, Inc", "AUDIOCODES-USA" }, { 0x00171E, "Theo Benning GmbH & Co. KG", "THEO-BENNING" }, { 0x001712, "ISCO International", "ISCO" }, { 0x00170D, "Dust Networks Inc.", "DUST-NETWORKS" }, { 0x001708, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0016FC, "TOHKEN CO.,LTD.", "TOHKEN" }, { 0x001701, "KDE, Inc.", "KDE" }, { 0x001703, "MOSDAN Internation Co.,Ltd", "MOSDAN-INTERNATION" }, { 0x0016F0, "Dell", "DELL" }, { 0x0016F5, "Dalian Golden Hualu Digital Technology Co.,Ltd", "DALIAN-GOLDEN-HUALU-DIGITAL" }, { 0x00178A, "DARTS TECHNOLOGIES CORP.", "DARTS-TECHNOLOGIES" }, { 0x00177E, "Meshcom Technologies Inc.", "MESHCOM-TECHNOLOGIES" }, { 0x001783, "6278", "6278" }, { 0x001785, "Sparr Electronics Ltd", "SPARR-ELECTRONICS" }, { 0x001772, "ASTRO Strobel Kommunikationssysteme GmbH", "ASTRO-STROBEL-KOMMUNIKATIONSSYSTEME" }, { 0x001777, "Obsidian Research Corporation", "OBSIDIAN-RESEARCH" }, { 0x00176E, "DUCATI SISTEMI", "DUCATI-SISTEMI" }, { 0x001743, "Deck Srl", "DECK-SRL" }, { 0x00173D, "Neology", "NEOLOGY" }, { 0x00173E, "LeucotronEquipamentos Ltda.", "LEUCOTRONEQUIPAMENTOS-LTDA" }, { 0x001738, "International Business Machines", "BUSINESS-MACHINES" }, { 0x00172C, "TAEJIN INFOTECH", "TAEJIN-INFOTECH" }, { 0x001725, "Liquid Computing", "LIQUID-COMPUTING" }, { 0x001720, "Image Sensing Systems, Inc.", "IMAGE-SENSING" }, { 0x001638, "TECOM Co., Ltd.", "TECOM" }, { 0x001633, "Oxford Diagnostics Ltd.", "OXFORD-DIAGNOSTICS" }, { 0x00162C, "Xanboo", "XANBOO" }, { 0x001625, "Impinj, Inc.", "IMPINJ" }, { 0x001627, "embedded-logic DESIGN AND MORE GmbH", "EMBEDDED-LOGIC-DESIGN-AND-MORE" }, { 0x001626, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001620, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001614, "Picosecond Pulse Labs", "PICOSECOND-PULSE-LABS" }, { 0x001619, "Lancelan Technologies S.L.", "LANCELAN-TECHNOLOGIES-S-L" }, { 0x00160F, "BADGER METER INC", "BADGER-METER" }, { 0x0016C0, "Semtech Corporation", "SEMTECH" }, { 0x0016B9, "ProCurve Networking", "PROCURVE-NETWORKING" }, { 0x0016B4, "Private", "PRIVATE" }, { 0x0016A8, "CWT CO., LTD.", "CWT" }, { 0x0016AD, "BT-Links Company Limited", "BT-LINKS-COMPANY" }, { 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" }, { 0x0016E9, "Tiba Medical Inc", "TIBA-MEDICAL" }, { 0x0016E4, "VANGUARD SECURITY ENGINEERING CORP.", "VANGUARD-SECURITY-ENGINEERING" }, { 0x0016DD, "Gigabeam Corporation", "GIGABEAM" }, { 0x0016E2, "American Fibertek, Inc.", "AMERICAN-FIBERTEK" }, { 0x0016D3, "Wistron Corporation", "WISTRON" }, { 0x0016D8, "Senea AB", "SENEA-AB" }, { 0x0016C5, "Shenzhen Xing Feng Industry Co.,Ltd", "SHENZHEN-XING-FENG-INDUSTRY" }, { 0x0016C7, "Cisco Systems, Inc", "CISCO" }, { 0x0016CC, "Xcute Mobile Corp.", "XCUTE-MOBILE" }, { 0x001769, "Cymphonix Corp", "CYMPHONIX" }, { 0x001762, "Solar Technology, Inc.", "SOLAR" }, { 0x00175D, "Dongseo system.", "DONGSEO-SYSTEM" }, { 0x00175B, "ACS Solutions Switzerland Ltd.", "ACS-SOLUTIONS-SWITZERLAND" }, { 0x001756, "Vinci Labs Oy", "VINCI-LABS-OY" }, { 0x00174F, "iCatch Inc.", "ICATCH" }, { 0x00174A, "SOCOMEC", "SOCOMEC" }, { 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" }, { 0x00166F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00155A, "DAINIPPON PHARMACEUTICAL CO., LTD.", "DAINIPPON-PHARMACEUTICAL" }, { 0x001554, "Atalum Wireless S.A.", "ATALUM-WIRELESS" }, { 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" }, { 0x00152F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015DA, "IRITEL A.D.", "IRITEL-A-D" }, { 0x0015DF, "Clivet S.p.A.", "CLIVET-S-P-A" }, { 0x0015D3, "Pantech&Curitel Communications, Inc.", "PANTECH-CURITEL-COMMUNICATION" }, { 0x0015CE, "ARRIS International", "ARRIS" }, { 0x0015C7, "Cisco Systems, Inc", "CISCO" }, { 0x0015C0, "DIGITAL TELEMEDIA CO.,LTD.", "DIGITAL-TELEMEDIA" }, { 0x0015BA, "iba AG", "IBA" }, { 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" }, { 0x001517, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001512, "Zurich University of Applied Sciences", "ZURICH-UNIVERSITY-OF-APPLIED-SCIENCES" }, { 0x00150B, "SAGE INFOTECH LTD.", "SAGE-INFOTECH" }, { 0x001506, "Neo Photonics", "NEO-PHOTONICS" }, { 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" }, { 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" }, { 0x00156D, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x001566, "A-First Technology Co., Ltd.", "A-FIRST" }, { 0x001561, "JJPlus Corporation", "JJPLUS" }, { 0x00149F, "System and Chips, Inc.", "SYSTEM-AND-CHIPS" }, { 0x0014A1, "Synchronous Communication Corp", "SYNCHRONOUS-COMMUNICATION" }, { 0x0014A0, "Accsense, Inc.", "ACCSENSE" }, { 0x00149A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 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" }, { 0x0015B3, "Caretech AB", "CARETECH-AB" }, { 0x0015A9, "KWANG WOO I&C CO.,LTD", "KWANG-WOO-I-C" }, { 0x0015A2, "ARRIS International", "ARRIS" }, { 0x00159D, "Tripp Lite ", "TRIPP-LITE" }, { 0x001591, "RLW Inc.", "RLW" }, { 0x001596, "ARRIS International", "ARRIS" }, { 0x00158A, "SURECOM Technology Corp.", "SURECOM" }, { 0x00158F, "NTT Advanced Technology Corporation", "NTT-ADVANCED" }, { 0x001590, "Hectronic GmbH", "HECTRONIC" }, { 0x001603, "COOLKSKY Co., LTD", "COOLKSKY" }, { 0x00160A, "SWEEX Europe BV", "SWEEX-EUROPE" }, { 0x0015FC, "Littelfuse Startco", "LITTELFUSE-STARTCO" }, { 0x0015F7, "Wintecronics Ltd.", "WINTECRONICS" }, { 0x0015F0, "EGO BV", "EGO" }, { 0x0015E9, "D-Link Corporation", "D-LINK" }, { 0x0015EA, "Tellumat (Pty) Ltd", "TELLUMAT-PTY" }, { 0x0015E4, "Zimmer Elektromedizin", "ZIMMER-ELEKTROMEDIZIN" }, { 0x0012EE, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 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" }, { 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" }, { 0x001440, "ATOMIC Corporation", "ATOMIC" }, { 0x001439, "Blonder Tongue Laboratories, Inc.", "BLONDER-TONGUE-LABORATORIES" }, { 0x001434, "Keri Systems, Inc", "KERI" }, { 0x00142D, "Toradex AG", "TORADEX" }, { 0x001426, "NL Technology", "NL" }, { 0x0013EF, "Kingjon Digital Technology Co.,Ltd", "KINGJON-DIGITAL" }, { 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" }, { 0x00138D, "Kinghold", "KINGHOLD" }, { 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" }, { 0x001371, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001365, "Nortel", "NORTEL" }, { 0x00136B, "E-TEC", "E-TEC" }, { 0x001359, "ProTelevision Technologies A/S", "PROTELEVISION-TECHNOLOGIES-A/S" }, { 0x00135E, "EAB/RWI/K", "EAB/RWI/K" }, { 0x0013BD, "HYMATOM SA", "HYMATOM" }, { 0x0013B8, "RyCo Electronic Systems Limited", "RYCO" }, { 0x0013AC, "Sunmyung Electronics Co., LTD", "SUNMYUNG-ELECTRONICS" }, { 0x0013B3, "Ecom Communications Technology Co., Ltd.", "ECOM-COMMUNICATION" }, { 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" }, { 0x00132D, "iWise Communications", "IWISE-COMMUNICATION" }, { 0x00131E, "Peiker acustic GmbH & Co. KG", "PEIKER-ACUSTIC" }, { 0x001323, "Cap Co., Ltd.", "CAP" }, { 0x001317, "GN Netcom as", "GN-NETCOM-AS" }, { 0x00130B, "Mextal B.V.", "MEXTAL" }, { 0x001312, "Amedia Networks Inc.", "AMEDIA-NETWORKS" }, { 0x001311, "ARRIS International", "ARRIS" }, { 0x0012F8, "WNI Resources, LLC", "WNI-RESOURCES-LLC" }, { 0x0012FF, "Lely Industries N.V.", "LELY-INDUSTRIES-N-V" }, { 0x001304, "Flaircomm Technologies Co. LTD", "FLAIRCOMM-TECHNOLOGIES" }, { 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" }, { 0x001334, "Arkados, Inc.", "ARKADOS" }, { 0x001328, "Westech Korea Inc.,", "WESTECH-KOREA" }, { 0x001421, "Total Wireless Technologies Pte. Ltd.", "TOTAL-WIRELESS-TECHNOLOGIES-PTE" }, { 0x00141C, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x00147C, "3Com Ltd", "3COM" }, { 0x001475, "Wiline Networks, Inc.", "WILINE-NETWORKS" }, { 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" }, { 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" }, { 0x0011A2, "Manufacturing Technology Inc", "MANUFACTURING" }, { 0x00119B, "Telesynergy Research Inc.", "TELESYNERGY-RESEARCH" }, { 0x001195, "D-Link Corporation", "D-LINK" }, { 0x00118C, "Missouri Department of Transportation", "MISSOURI-DEPARTMENT-OF-TRANSPORTATION" }, { 0x001191, "CTS-Clima Temperatur Systeme GmbH", "CTS-CLIMA-TEMPERATUR-SYSTEME" }, { 0x00118B, "Alcatel-Lucent, Enterprise Business Group", "ALCATEL-LUCENT-BUSINESS-GROUP" }, { 0x001196, "Actuality Systems, Inc.", "ACTUALITY" }, { 0x001185, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00117E, "Progeny, A division of Midmark Corp", "PROGENY-A-DIVISION-OF-MIDMARK" }, { 0x001179, "Singular Technology Co. Ltd.", "SINGULAR" }, { 0x001257, "LeapComm Communication Technologies Inc.", "LEAPCOMM-COMMUNICATION-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x00111A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0012C3, "WIT S.A.", "WIT" }, { 0x0012C8, "Perfect tech", "PERFECT-TECH" }, { 0x0012CF, "Accton Technology Corporation", "ACCTON" }, { 0x0012B9, "Fusion Digital Technology", "FUSION-DIGITAL" }, { 0x0012BE, "Astek Corporation", "ASTEK" }, { 0x0012AC, "ONTIMETEK INC.", "ONTIMETEK" }, { 0x0012AB, "WiLife, Inc.", "WILIFE" }, { 0x0012B2, "AVOLITES LTD.", "AVOLITES" }, { 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" }, { 0x0011AE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0011A8, "Quest Technologies", "QUEST-TECHNOLOGIES" }, { 0x0011A7, "Infilco Degremont Inc.", "INFILCO-DEGREMONT" }, { 0x0012A6, "Dolby Australia", "DOLBY-AUSTRALIA" }, { 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" }, { 0x001231, "Motion Control Systems, Inc.", "MOTION-CONTROL" }, { 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" }, { 0x0011FC, "HARTING Electric Gmbh & Co.KG", "HARTING-ELECTRIC" }, { 0x001280, "Cisco Systems, Inc", "CISCO" }, { 0x001279, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x001121, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 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" }, { 0x000FCD, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 0x000EEA, "Shadong Luneng Jicheng Electronics,Co.,Ltd", "SHADONG-LUNENG-JICHENG-ELECTRONICS" }, { 0x000EDD, "SHURE INCORPORATED", "SHURE-INCORPORATED" }, { 0x000EE4, "BOE TECHNOLOGY GROUP CO.,LTD", "BOE-GROUP" }, { 0x000FC1, "WAVE Corporation", "WAVE" }, { 0x000FC8, "Chantry Networks", "CHANTRY-NETWORKS" }, { 0x000FC7, "Dionica R&D Ltd.", "DIONICA-R-D" }, { 0x000FBA, "Tevebox AB", "TEVEBOX-AB" }, { 0x000FB5, "NETGEAR Inc", "NETGEAR" }, { 0x000FA7, "Raptor Networks Technology", "RAPTOR-NETWORKS" }, { 0x000FAE, "E2O Communications", "E2O-COMMUNICATION" }, { 0x000FA8, "Photometrics, Inc.", "PHOTOMETRICS" }, { 0x000F9A, "Synchrony, Inc.", "SYNCHRONY" }, { 0x000FA2, "2xWireless", "2XWIRELESS" }, { 0x000F9F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001147, "Secom-Industry co.LTD.", "SECOM-INDUSTRY" }, { 0x00114C, "caffeina applied research ltd.", "CAFFEINA-APPLIED-RESEARCH" }, { 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" }, { 0x000F68, "Vavic Network Technology, Inc.", "VAVIC-NETWORK" }, { 0x000F6F, "FTA Communication Technologies", "FTA-COMMUNICATION-TECHNOLOGIES" }, { 0x000F61, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x000F50, "StreamScale Limited", "STREAMSCALE" }, { 0x000F42, "Xalyo Systems", "XALYO" }, { 0x000F49, "Northover Solutions Limited", "NORTHOVER-SOLUTIONS" }, { 0x000F4F, "Cadmus Technology Ltd", "CADMUS" }, { 0x000F3D, "D-Link Corporation", "D-LINK" }, { 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" }, { 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" }, { 0x000EC0, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000EC7, "Motorola Korea", "MOTOROLA-KOREA" }, { 0x000EBB, "Everbee Networks", "EVERBEE-NETWORKS" }, { 0x000EB4, "GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD.", "GUANGZHOU-GAOKE-COMMUNICATION" }, { 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" }, { 0x000E7C, "Televes S.A.", "TELEVES" }, { 0x000E76, "GEMSOC INNOVISION INC.", "GEMSOC-INNOVISION" }, { 0x000E7B, "Toshiba", "TOSHIBA" }, { 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" }, { 0x000E62, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 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" }, { 0x000E82, "Commtech Wireless", "COMMTECH-WIRELESS" }, { 0x000E89, "CLEMATIC", "CLEMATIC" }, { 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" }, { 0x000D61, "Giga-Byte Technology Co., Ltd.", "GIGA-BYTE" }, { 0x000D5C, "Robert Bosch GmbH, VT-ATMO", "ROBERT-BOSCH-VT-ATMO" }, { 0x000D55, "SANYCOM Technology Co.,Ltd", "SANYCOM" }, { 0x000D49, "Triton Systems of Delaware, Inc.", "TRITON-OF-DELAWARE" }, { 0x000D4E, "NDR Co.,LTD.", "NDR" }, { 0x000D41, "Siemens AG ICM MP UC RD IT KLF1", "SIEMENS-ICM-MP-UC-RD-IT-KLF1" }, { 0x000D3A, "Microsoft Corp.", "MICROSOFT" }, { 0x000D03, "Matrics, Inc.", "MATRICS" }, { 0x000D08, "AboveCable, Inc.", "ABOVECABLE" }, { 0x000CFC, "S2io Technologies Corp", "S2IO-TECHNOLOGIES" }, { 0x000CF6, "Sitecom Europe BV", "SITECOM-EUROPE" }, { 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" }, { 0x000DCA, "Tait Electronics", "TAIT-ELECTRONICS" }, { 0x000DCF, "Cidra Corp.", "CIDRA" }, { 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" }, { 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" }, { 0x000D74, "Sand Network Systems, Inc.", "SAND-NETWORK" }, { 0x000D7B, "Consensys Computers Inc.", "CONSENSYS-COMPUTERS" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x000BF1, "LAP Laser Applikations", "LAP-LASER-APPLIKATIONS" }, { 0x000BDF, "Shenzhen RouterD Networks Limited", "SHENZHEN-ROUTERD-NETWORKS" }, { 0x000BE0, "SercoNet Ltd.", "SERCONET" }, { 0x000BE5, "HIMS International Corporation", "HIMS" }, { 0x000BDE, "TELDIX GmbH", "TELDIX" }, { 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" }, { 0x000B5D, "FUJITSU LIMITED", "FUJITSU" }, { 0x000B50, "Oxygnet", "OXYGNET" }, { 0x000B44, "Concord IDea Corp.", "CONCORD-IDEA" }, { 0x000B49, "RF-Link System Inc.", "RF-LINK-SYSTEM" }, { 0x000B4B, "VISIOWAVE SA", "VISIOWAVE" }, { 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" }, { 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" }, { 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" }, { 0x000BBD, "Connexionz Limited", "CONNEXIONZ" }, { 0x000BB8, "Kihoku Electronic Co.", "KIHOKU" }, { 0x000BAD, "PC-PoS Inc.", "PC-POS" }, { 0x000C4A, "Cygnus Microsystems (P) Limited", "CYGNUS-MICROSYSTEMS-P" }, { 0x000C43, "Ralink Technology, Corp.", "RALINK" }, { 0x000C45, "Animation Technologies Inc.", "ANIMATION-TECHNOLOGIES" }, { 0x000C29, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 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" }, { 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" }, { 0x000C75, "Oriental integrated electronics. LTD", "ORIENTAL-INTEGRATED-ELECTRONICS" }, { 0x000C77, "Life Racing Ltd", "LIFE-RACING" }, { 0x000C7C, "Internet Information Image Inc.", "INTERNET-INFORMATION-IMAGE" }, { 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" }, { 0x000CA3, "Rancho Technology, Inc.", "RANCHO" }, { 0x000CAA, "Cubic Transportation Systems Inc", "CUBIC-TRANSPORTATION" }, { 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" }, { 0x000B31, "Yantai ZhiYang Scientific and technology industry CO., LTD", "YANTAI-ZHIYANG-SCIENTIFIC-AND-INDUSTRY" }, { 0x000B38, "Knĵrr GmbH", "KNĵRR" }, { 0x000B3D, "CONTAL OK Ltd.", "CONTAL-OK" }, { 0x000B2A, "HOWTEL Co., Ltd.", "HOWTEL" }, { 0x000B2C, "Eiki Industrial Co. Ltd.", "EIKI-INDUSTRIAL" }, { 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" }, { 0x000CD4, "Positron Public Safety Systems inc.", "POSITRON-PUBLIC-SAFETY" }, { 0x000CCD, "IEC - TC57", "IEC---TC57" }, { 0x000CC8, "Xytronix Research & Design, Inc.", "XYTRONIX-RESEARCH-DESIGN" }, { 0x000CBB, "ISKRAEMECO", "ISKRAEMECO" }, { 0x000CB5, "Premier Technolgies, Inc", "PREMIER-TECHNOLGIES" }, { 0x000CBC, "Iscutum", "ISCUTUM" }, { 0x000CC1, "Cooper Industries Inc.", "COOPER-INDUSTRIES" }, { 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" }, { 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" }, { 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" }, { 0x000A57, "Hewlett-Packard Company - Standards", "HEWLETT-PACKARD-COMPANY---STANDARDS" }, { 0x000A4B, "DataPower Technology, Inc.", "DATAPOWER" }, { 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" }, { 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" }, { 0x0009D7, "DC Security Products", "DC-SECURITY-PRODUCTS" }, { 0x0009C5, "KINGENE Technology Corporation", "KINGENE" }, { 0x0009CA, "iMaxNetworks(Shenzhen)Limited.", "IMAXNETWORKS-SHENZHEN" }, { 0x0009D1, "SERANOA NETWORKS INC", "SERANOA-NETWORKS" }, { 0x0009BD, "Epygi Technologies, Ltd.", "EPYGI-TECHNOLOGIES" }, { 0x000956, "Network Systems Group, Ltd. (NSG)", "NETWORK-GROUP-NSG" }, { 0x00095B, "Netgear, Inc.", "NETGEAR" }, { 0x000955, "Young Generation International Corp.", "YOUNG-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" }, { 0x000992, "InterEpoch Technology,INC.", "INTEREPOCH" }, { 0x000997, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000991, "GE Fanuc Automation Manufacturing, Inc.", "GE-FANUC-AUTOMATION-MANUFACTURING" }, { 0x00098B, "Entropic Communications, Inc.", "ENTROPIC-COMMUNICATION" }, { 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" }, { 0x000965, "HyunJu Computer Co., Ltd.", "HYUNJU" }, { 0x00096C, "Imedia Semiconductor Corp.", "IMEDIA-SEMICONDUCTOR" }, { 0x000960, "YOZAN Inc.", "YOZAN" }, { 0x000B0B, "Corrent Corporation", "CORRENT" }, { 0x000B06, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 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" }, { 0x000AAB, "Toyota Technical Development Corporation", "TOYOTA-TECHNICAL-DEVELOPMENT" }, { 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" }, { 0x000A78, "OLITEC", "OLITEC" }, { 0x000A71, "Avrio Technologies, Inc", "AVRIO-TECHNOLOGIES" }, { 0x000A76, "Beida Jade Bird Huaguang Technology Co.,Ltd", "BEIDA-JADE-BIRD-HUAGUANG" }, { 0x0009B6, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 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" }, { 0x0008BF, "Aptus Elektronik AB", "APTUS-ELEKTRONIK-AB" }, { 0x0008B9, "KAON MEDIA Co., Ltd.", "KAON-MEDIA" }, { 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" }, { 0x00085A, "IntiGate Inc.", "INTIGATE" }, { 0x00081E, "Repeatit AB", "REPEATIT-AB" }, { 0x000824, "Nuance Document Imaging", "NUANCE-DOCUMENT-IMAGING" }, { 0x00082B, "Wooksung Electronics, Inc.", "WOOKSUNG-ELECTRONICS" }, { 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" }, { 0x000930, "AeroConcierge Inc.", "AEROCONCIERGE" }, { 0x000929, "Sanyo Industries (UK) Limited", "SANYO-INDUSTRIES-UK" }, { 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" }, { 0x0008FE, "UNIK C&C Co.,Ltd.", "UNIK-C-C" }, { 0x000903, "Panasas, Inc", "PANASAS" }, { 0x0008FA, "Karl E.Brinkmann GmbH", "KARL-E-BRINKMANN" }, { 0x0008EE, "Logic Product Development", "LOGIC-PRODUCT-DEVELOPMENT" }, { 0x0008F0, "Next Generation Systems, Inc.", "NEXT-GENERATION" }, { 0x0008F6, "Sumitomo Electric System Solutions Co., Ltd.", "SUMITOMO-ELECTRIC-SYSTEM-SOLUTIONS" }, { 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" }, { 0x0008C9, "TechniSat Digital GmbH", "TECHNISAT-DIGITAL" }, { 0x0008CA, "TwinHan Technology Co.,Ltd", "TWINHAN" }, { 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" }, { 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" }, { 0x0007E9, "Intel Corporation", "INTEL" }, { 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" }, { 0x0007D0, "Automat Engenharia de Automa§£o Ltda.", "AUTOMAT-ENGENHARIA-DE-AUTOMA§£O-LTDA" }, { 0x0007CD, "Kumoh Electronic Co, Ltd", "KUMOH" }, { 0x0007C7, "Synectics Systems Limited", "SYNECTICS" }, { 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" }, { 0x000767, "Yuxing Electronics Company Limited", "YUXING-ELECTRONICS-COMPANY" }, { 0x00075B, "Gibson Guitars", "GIBSON-GUITARS" }, { 0x000760, "TOMIS Information & Telecom Corp.", "TOMIS-INFORMATION-TELECOM" }, { 0x00047D, "Pelco", "PELCO" }, { 0x00047E, "Siqura B.V.", "SIQURA" }, { 0x0007BA, "UTStarcom, Inc.", "UTSTARCOM" }, { 0x0007C1, "Overture Networks, Inc.", "OVERTURE-NETWORKS" }, { 0x0007C0, "NetZerver Inc.", "NETZERVER" }, { 0x0007AE, "Britestream Networks, Inc.", "BRITESTREAM-NETWORKS" }, { 0x0007B4, "Cisco Systems, Inc", "CISCO" }, { 0x0007A6, "Home Automation, Inc.", "HOME-AUTOMATION" }, { 0x00079A, "Verint Systems Inc", "VERINT" }, { 0x0007A0, "e-Watch Inc.", "E-WATCH" }, { 0x000794, "Simple Devices, Inc.", "SIMPLE-DEVICES" }, { 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" }, { 0x0005B4, "Aceex Corporation", "ACEEX" }, { 0x00059F, "Yotta Networks, Inc.", "YOTTA-NETWORKS" }, { 0x0005A6, "Extron Electronics", "EXTRON-ELECTRONICS" }, { 0x00058D, "Lynx Photonic Networks, Inc.", "LYNX-PHOTONIC-NETWORKS" }, { 0x000587, "Locus, Incorporated", "LOCUS-INCORPORATED" }, { 0x000593, "Grammar Engine Inc.", "GRAMMAR-ENGINE" }, { 0x00057A, "Overture Networks", "OVERTURE-NETWORKS" }, { 0x000586, "Lucent Technologies", "LUCENT-TECHNOLOGIES" }, { 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" }, { 0x00065F, "ECI Telecom - NGTS Ltd.", "ECI-TELECOM---NGTS" }, { 0x000646, "ShenZhen XunBao Network Technology Co Ltd", "SHENZHEN-XUNBAO-NETWORK" }, { 0x000640, "White Rock Networks", "WHITE-ROCK-NETWORKS" }, { 0x00064C, "Invicta Networks, Inc.", "INVICTA-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" }, { 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" }, { 0x00061F, "Vision Components GmbH", "VISION-COMPONENTS" }, { 0xACDE48, "Private", "PRIVATE" }, { 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" }, { 0x0005FE, "Traficon N.V.", "TRAFICON-N-V" }, { 0x0005E6, "Egenera, Inc.", "EGENERA" }, { 0x0005F2, "Power R, Inc.", "POWER-R" }, { 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" }, { 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" }, { 0x0006EB, "Global Data", "GLOBAL-DATA" }, { 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" }, { 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" }, { 0x000686, "ZARDCOM Co., Ltd.", "ZARDCOM" }, { 0x00068B, "AirRunner Technologies, Inc.", "AIRRUNNER-TECHNOLOGIES" }, { 0x00067F, "Digeo, Inc.", "DIGEO" }, { 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" }, { 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" }, { 0x000422, "Gordon Kapes, Inc.", "GORDON-KAPES" }, { 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" }, { 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" }, { 0x000508, "Inetcam, Inc.", "INETCAM" }, { 0x0004FE, "Pelago Networks", "PELAGO-NETWORKS" }, { 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" }, { 0x0004DC, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0004E1, "Infinior Microsystems", "INFINIOR-MICROSYSTEMS" }, { 0x0004DB, "Tellus Group Corp.", "TELLUS-GROUP" }, { 0x0004E2, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x00049B, "Cisco Systems, Inc", "CISCO" }, { 0x00049C, "Surgient Networks, Inc.", "SURGIENT-NETWORKS" }, { 0x000496, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x00048F, "TD Systems Corporation", "TD" }, { 0x000488, "Eurotherm Controls", "EUROTHERM-CONTROLS" }, { 0x000482, "Medialogic Corp.", "MEDIALOGIC" }, { 0x000487, "Cogency Semiconductor, Inc.", "COGENCY-SEMICONDUCTOR" }, { 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" }, { 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" }, { 0x000349, "Vidicode Datacommunicatie B.V.", "VIDICODE-DATACOMMUNICATIE" }, { 0x000340, "Floware Wireless Systems, Ltd.", "FLOWARE-WIRELESS" }, { 0x008037, "Ericsson Group", "ERICSSON-GROUP" }, { 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" }, { 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" }, { 0x000458, "Fusion X Co., Ltd.", "FUSION-X" }, { 0x000452, "RocketLogix, Inc.", "ROCKETLOGIX" }, { 0x000442, "NACT", "NACT" }, { 0x00044C, "JENOPTIK", "JENOPTIK" }, { 0x000448, "Polaroid Corporation", "POLAROID" }, { 0x00043C, "SONOS Co., Ltd.", "SONOS" }, { 0x000441, "Half Dome Systems, Inc.", "HALF-DOME" }, { 0x000435, "Comptek International, Inc.", "COMPTEK" }, { 0x00042F, "International Communications Products, Inc.", "COMMUNICATION-PRODUCTS" }, { 0x000429, "Pixord Corporation", "PIXORD" }, { 0x0004D5, "Hitachi Information & Communication Engineering, Ltd.", "HITACHI-INFORMATION-COMMUNICATION-ENGINEERING" }, { 0x0004CF, "Seagate Technology", "SEAGATE" }, { 0x0004C9, "Micro Electron Co., Ltd.", "MICRO-ELECTRON" }, { 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" }, { 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" }, { 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" }, { 0x000231, "Ingersoll-Rand", "INGERSOLL-RAND" }, { 0x000236, "INIT GmbH", "INIT" }, { 0x00022A, "Asound Electronic", "ASOUND" }, { 0x00022D, "Agere Systems", "AGERE" }, { 0x000219, "Paralon Technologies", "PARALON-TECHNOLOGIES" }, { 0x00021D, "Data General Communication Ltd.", "DATA-GENERAL-COMMUNICATION" }, { 0x000222, "Chromisys, Inc.", "CHROMISYS" }, { 0x00017B, "Heidelberger Druckmaschinen AG", "HEIDELBERGER-DRUCKMASCHINEN" }, { 0x000182, "DICA TECHNOLOGIES AG", "DICA-TECHNOLOGIES" }, { 0x00018E, "Logitec Corporation", "LOGITEC" }, { 0x000194, "Capital Equipment Corporation", "CAPITAL-EQUIPMENT" }, { 0x00019B, "Kyoto Microcomputer Co., Ltd.", "KYOTO-MICROCOMPUTER" }, { 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" }, { 0x00016C, "FOXCONN", "FOXCONN" }, { 0x000173, "AMCC", "AMCC" }, { 0x00015C, "CADANT INC.", "CADANT" }, { 0x000163, "Cisco Systems, Inc", "CISCO" }, { 0x00016F, "Inkel Corp.", "INKEL" }, { 0x00010A, "CIS TECHNOLOGY INC.", "CIS" }, { 0x000290, "Woorigisool, Inc.", "WOORIGISOOL" }, { 0x000286, "Occam Networks", "OCCAM-NETWORKS" }, { 0x00028B, "VDSL Systems OY", "VDSL-OY" }, { 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" }, { 0x000155, "Promise Technology, Inc.", "PROMISE" }, { 0x000151, "Ensemble Communications", "ENSEMBLE-COMMUNICATION" }, { 0x000136, "CYBERTAN TECHNOLOGY, INC.", "CYBERTAN" }, { 0x000142, "Cisco Systems, Inc", "CISCO" }, { 0x000132, "Dranetz - BMI", "DRANETZ---BMI" }, { 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" }, { 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" }, { 0x0002A5, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00029A, "Storage Apps", "STORAGE-APPS" }, { 0x0002A0, "Flatstack Ltd.", "FLATSTACK" }, { 0x000295, "IP.Access Limited", "IP-ACCESS" }, { 0x000294, "Tokyo Sokushin Co., Ltd.", "TOKYO-SOKUSHIN" }, { 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" }, { 0x0001E2, "Ando Electric Corporation", "ANDO-ELECTRIC" }, { 0x0001EE, "Comtrol Europe, Ltd.", "COMTROL-EUROPE" }, { 0x0001F1, "Innovative Concepts, Inc.", "INNOVATIVE-CONCEPTS" }, { 0x0001DB, "Freecom Technologies GmbH", "FREECOM-TECHNOLOGIES" }, { 0x0001D6, "manroland AG", "MANROLAND" }, { 0x000302, "Charles Industries, Ltd.", "CHARLES-INDUSTRIES" }, { 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" }, { 0x000339, "Eurologic Systems, Ltd.", "EUROLOGIC" }, { 0x000332, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x000311, "Micro Technology Co., Ltd.", "MICRO" }, { 0x00030A, "Argus Technologies", "ARGUS-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" }, { 0x000186, "Uwe Disch", "UWE-DISCH" }, { 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" }, { 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" }, { 0x00D037, "Pace France", "PACE-FRANCE" }, { 0x00D010, "CONVERGENT NETWORKS, INC.", "CONVERGENT-NETWORKS" }, { 0x00D049, "IMPRESSTEK CO., LTD.", "IMPRESSTEK" }, { 0x00D035, "BEHAVIOR TECH. COMPUTER CORP.", "BEHAVIOR-TECH" }, { 0x00D04D, "DIV OF RESEARCH & STATISTICS", "DIV-OF-RESEARCH-STATISTICS" }, { 0x00D07C, "KOYO ELECTRONICS INC. CO.,LTD.", "KOYO-ELECTRONICS" }, { 0x00D02D, "ADEMCO", "ADEMCO" }, { 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" }, { 0x00D09F, "NOVTEK TEST SYSTEMS", "NOVTEK-TEST" }, { 0x00D03C, "Vieo, Inc.", "VIEO" }, { 0x00D07E, "KEYCORP LTD.", "KEYCORP" }, { 0x00D0EA, "NEXTONE COMMUNICATIONS, INC.", "NEXTONE-COMMUNICATION" }, { 0x00D020, "AIM SYSTEM, INC.", "AIM-SYSTEM" }, { 0x00D064, "MULTITEL", "MULTITEL" }, { 0x00D072, "BROADLOGIC", "BROADLOGIC" }, { 0x00D07D, "COSINE COMMUNICATIONS", "COSINE-COMMUNICATION" }, { 0x00D058, "Cisco Systems, Inc", "CISCO" }, { 0x00D0CA, "Intrinsyc Software International Inc.", "INTRINSYC-SOFTWARE" }, { 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" }, { 0x00D0A3, "VOCAL DATA, INC.", "VOCAL-DATA" }, { 0x00D0E0, "DOOIN ELECTRONICS CO.", "DOOIN-ELECTRONICS" }, { 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" }, { 0x0030F2, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x00D01F, "Senetas Security", "SENETAS-SECURITY" }, { 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" }, { 0x000107, "Leiser GmbH", "LEISER" }, { 0x00010E, "Bri-Link Technologies Co., Ltd", "BRI-LINK-TECHNOLOGIES" }, { 0x000103, "3COM CORPORATION", "3COM" }, { 0x000116, "Netspect Technologies, Inc.", "NETSPECT-TECHNOLOGIES" }, { 0x00062B, "INTRASERVER TECHNOLOGY", "INTRASERVER" }, { 0x00B06D, "Jones Futurex Inc.", "JONES-FUTUREX" }, { 0x0030C2, "COMONE", "COMONE" }, { 0x0030D3, "Agilent Technologies", "AGILENT-TECHNOLOGIES" }, { 0x003056, "Beck IPC GmbH", "BECK-IPC" }, { 0x0030D2, "WIN TECHNOLOGIES, CO., LTD.", "WIN-TECHNOLOGIES" }, { 0x003050, "Versa Technology", "VERSA" }, { 0x0030B8, "RiverDelta Networks", "RIVERDELTA-NETWORKS" }, { 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" }, { 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" }, { 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" }, { 0x0050CD, "DIGIANSWER A/S", "DIGIANSWER-A/S" }, { 0x0050C5, "ADS Technologies, Inc", "ADS-TECHNOLOGIES" }, { 0x005028, "AVAL COMMUNICATIONS", "AVAL-COMMUNICATION" }, { 0x00502F, "TollBridge Technologies, Inc.", "TOLLBRIDGE-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x00903A, "NIHON MEDIA TOOL INC.", "NIHON-MEDIA-TOOL" }, { 0x009069, "JUNIPER NETWORKS, INC.", "JUNIPER-NETWORKS" }, { 0x009055, "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION", "PARKER-HANNIFIN-COMPUMOTOR-DIVISION" }, { 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" }, { 0x0050E7, "PARADISE INNOVATIONS (ASIA)", "PARADISE-INNOVATIONS-ASIA" }, { 0x00505E, "DIGITEK MICROLOGIC S.A.", "DIGITEK-MICROLOGIC" }, { 0x00504A, "ELTECO A.S.", "ELTECO-A-S" }, { 0x0050B9, "XITRON TECHNOLOGIES, INC.", "XITRON-TECHNOLOGIES" }, { 0x0050F1, "Intel Corporation", "INTEL" }, { 0x00501B, "ABL CANADA, INC.", "ABL-CANADA" }, { 0x005058, "VegaStream Group Limted", "VEGASTREAM-GROUP-LIMTED" }, { 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" }, { 0x005056, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x00507A, "XPEED, INC.", "XPEED" }, { 0x005002, "OMNISEC AG", "OMNISEC" }, { 0x00508D, "ABIT COMPUTER CORPORATION", "ABIT" }, { 0x009034, "IMAGIC, INC.", "IMAGIC" }, { 0x009073, "GAIO TECHNOLOGY", "GAIO" }, { 0x009001, "NISHIMU ELECTRONICS INDUSTRIES CO., LTD.", "NISHIMU-ELECTRONICS-INDUSTRIES" }, { 0x0090C9, "DPAC Technologies", "DPAC-TECHNOLOGIES" }, { 0x0090E7, "HORSCH ELEKTRONIK AG", "HORSCH-ELEKTRONIK" }, { 0x0090FB, "PORTWELL, INC.", "PORTWELL" }, { 0x009070, "NEO NETWORKS, INC.", "NEO-NETWORKS" }, { 0x0090EF, "INTEGRIX, INC.", "INTEGRIX" }, { 0x0090B0, "VADEM", "VADEM" }, { 0x0090D1, "LEICHU ENTERPRISE CO., LTD.", "LEICHU" }, { 0x00908D, "VICKERS ELECTRONICS SYSTEMS", "VICKERS-ELECTRONICS" }, { 0x009042, "ECCS, Inc.", "ECCS" }, { 0x009051, "ULTIMATE TECHNOLOGY CORP.", "ULTIMATE" }, { 0x0090F9, "LEITCH", "LEITCH" }, { 0x0090FF, "TELLUS TECHNOLOGY INC.", "TELLUS" }, { 0x009018, "ITO ELECTRIC INDUSTRY CO, LTD.", "ITO-ELECTRIC-INDUSTRY" }, { 0x009016, "ZAC", "ZAC" }, { 0x009002, "ALLGON AB", "ALLGON-AB" }, { 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" }, { 0x00904D, "SPEC S.A.", "SPEC" }, { 0x009079, "ClearOne, Inc.", "CLEARONE" }, { 0x00908F, "AUDIO CODES LTD.", "AUDIO-CODES" }, { 0x0090D5, "EUPHONIX, INC.", "EUPHONIX" }, { 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" }, { 0x90C682, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x0055DA, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xA03E6B, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xDC4427, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x100723, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 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" }, { 0x0050D7, "TELSTRAT", "TELSTRAT" }, { 0x00909F, "DIGI-DATA CORPORATION", "DIGI-DATA" }, { 0x0090E4, "NEC AMERICA, INC.", "NEC-AMERICA" }, { 0x009013, "SAMSAN CORP.", "SAMSAN" }, { 0x0090CC, "Planex Communications", "PLANEX-COMMUNICATION" }, { 0x0090FA, "Emulex Corporation", "EMULEX" }, { 0x009004, "3COM EUROPE LTD.", "3COM" }, { 0x0090E1, "TELENA S.P.A.", "TELENA-S-P-A" }, { 0x00109D, "CLARINET SYSTEMS, INC.", "CLARINET" }, { 0x001085, "POLARIS COMMUNICATIONS, INC.", "POLARIS-COMMUNICATION" }, { 0x001044, "InnoLabs Corporation", "INNOLABS" }, { 0x001056, "SODICK CO., LTD.", "SODICK" }, { 0x001061, "HOSTLINK CORP.", "HOSTLINK" }, { 0x001099, "InnoMedia, Inc.", "INNOMEDIA" }, { 0x0010CD, "INTERFACE CONCEPT", "INTERFACE-CONCEPT" }, { 0x001093, "CMS COMPUTERS, LTD.", "CMS-COMPUTERS" }, { 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" }, { 0x001037, "CYQ've Technology Co., Ltd.", "CYQ-VE" }, { 0x0010CA, "Telco Systems, Inc. ", "TELCO" }, { 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" }, { 0x001009, "HORO QUARTZ", "HORO-QUARTZ" }, { 0x0010F8, "TEXIO TECHNOLOGY CORPORATION", "TEXIO" }, { 0x00104D, "SURTEC INDUSTRIES, INC.", "SURTEC-INDUSTRIES" }, { 0x08BBCC, "AK-NORD EDV VERTRIEBSGES. mbH", "AK-NORD-EDV-VERTRIEBSGES-MBH" }, { 0x00E0B3, "EtherWAN Systems, Inc.", "ETHERWAN" }, { 0x00E05D, "UNITEC CO., LTD.", "UNITEC" }, { 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" }, { 0x00E063, "CABLETRON - YAGO SYSTEMS, INC.", "CABLETRON---YAGO" }, { 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" }, { 0x00E0AA, "ELECTROSONIC LTD.", "ELECTROSONIC" }, { 0x00E085, "GLOBAL MAINTECH, INC.", "GLOBAL-MAINTECH" }, { 0x00E05A, "GALEA NETWORK SECURITY", "GALEA-NETWORK-SECURITY" }, { 0x00E022, "Analog Devices Inc.", "ANALOG-DEVICES" }, { 0x00E0E7, "RAYTHEON E-SYSTEMS, INC.", "RAYTHEON-E" }, { 0x00E00C, "MOTOROLA", "MOTOROLA" }, { 0x00E04A, "ZX Technologies, Inc", "ZX-TECHNOLOGIES" }, { 0x00E00A, "DIBA, INC.", "DIBA" }, { 0x00E0B9, "BYAS SYSTEMS", "BYAS" }, { 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" }, { 0x0010C9, "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO.", "MITSUBISHI-ELECTRONICS-LOGISTIC-SUPPORT" }, { 0x0010DD, "ENABLE SEMICONDUCTOR, INC.", "ENABLE-SEMICONDUCTOR" }, { 0x00E0AD, "EES TECHNOLOGY, LTD.", "EES" }, { 0x00E0B1, "Alcatel-Lucent, Enterprise Business Group", "ALCATEL-LUCENT-BUSINESS-GROUP" }, { 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" }, { 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" }, { 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" }, { 0x0010AE, "SHINKO ELECTRIC INDUSTRIES CO.", "SHINKO-ELECTRIC-INDUSTRIES" }, { 0x0010BA, "MARTINHO-DAVIS SYSTEMS, INC.", "MARTINHO-DAVIS" }, { 0x00107C, "P-COM, INC.", "P-COM" }, { 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" }, { 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" }, { 0x006037, "NXP Semiconductors", "NXP-SEMICONDUCTORS" }, { 0x0060BC, "KeunYoung Electronics & Communication Co., Ltd.", "KEUNYOUNG-ELECTRONICS-COMMUNICATION" }, { 0x0060FB, "PACKETEER, INC.", "PACKETEER" }, { 0x0060B8, "CORELIS Inc.", "CORELIS" }, { 0x0060FE, "LYNX SYSTEM DEVELOPERS, INC.", "LYNX-SYSTEM-DEVELOPERS" }, { 0x006001, "InnoSys, Inc.", "INNOSYS" }, { 0x00607D, "SENTIENT NETWORKS INC.", "SENTIENT-NETWORKS" }, { 0x00E06D, "COMPUWARE CORPORATION", "COMPUWARE" }, { 0x00E0E6, "INCAA DATACOM B.V.", "INCAA-DATACOM" }, { 0x00E074, "TIERNAN COMMUNICATIONS, INC.", "TIERNAN-COMMUNICATION" }, { 0x00E059, "CONTROLLED ENVIRONMENTS, LTD.", "CONTROLLED-ENVIRONMENTS" }, { 0x00E006, "SILICON INTEGRATED SYS. CORP.", "SILICON-INTEGRATED-SYS" }, { 0x00E0E0, "SI ELECTRONICS, LTD.", "SI-ELECTRONICS" }, { 0x00E00F, "SHANGHAI BAUD DATA", "SHANGHAI-BAUD-DATA" }, { 0x00E0D1, "TELSIS LIMITED", "TELSIS" }, { 0x00E005, "TECHNICAL CORP.", "TECHNICAL" }, { 0x00E072, "LYNK", "LYNK" }, { 0x00E0C1, "MEMOREX TELEX JAPAN, LTD.", "MEMOREX-TELEX-JAPAN" }, { 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" }, { 0x00A038, "EMAIL ELECTRONICS", "EMAIL-ELECTRONICS" }, { 0x00A0BE, "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP", "INTEGRATED-CIRCUIT-COMMUNICATION-GROUP" }, { 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" }, { 0x00A06F, "THE APPCON GROUP, INC.", "THE-APPCON-GROUP" }, { 0x00A08E, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x00A023, "APPLIED CREATIVE TECHNOLOGY, INC.", "APPLIED-CREATIVE" }, { 0x00A00F, "Broadband Technologies", "BROADBAND-TECHNOLOGIES" }, { 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" }, { 0x00A0CD, "DR. JOHANNES HEIDENHAIN GmbH", "DR-JOHANNES-HEIDENHAIN" }, { 0x00A0DA, "INTEGRATED SYSTEMS Technology, Inc.", "INTEGRATED" }, { 0x00A03C, "EG&G NUCLEAR INSTRUMENTS", "EG-G-NUCLEAR-INSTRUMENTS" }, { 0x00A000, "CENTILLION NETWORKS, INC.", "CENTILLION-NETWORKS" }, { 0x00A07B, "DAWN COMPUTER INCORPORATION", "DAWN-INCORPORATION" }, { 0x00A0DE, "YAMAHA CORPORATION", "YAMAHA" }, { 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" }, { 0x002034, "ROTEC INDUSTRIEAUTOMATION GMBH", "ROTEC-INDUSTRIEAUTOMATION" }, { 0x002040, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x00202F, "ZETA COMMUNICATIONS, LTD.", "ZETA-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" }, { 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" }, { 0x0060B2, "PROCESS CONTROL CORP.", "PROCESS-CONTROL" }, { 0x006004, "COMPUTADORES MODULARES SA", "COMPUTADORES-MODULARES" }, { 0x0060D6, "NovAtel Wireless Technologies Ltd.", "NOVATEL-WIRELESS-TECHNOLOGIES" }, { 0x006000, "XYCOM INC.", "XYCOM" }, { 0x00A019, "NEBULA CONSULTANTS, INC.", "NEBULA-CONSULTANTS" }, { 0x00A0ED, "Brooks Automation, Inc.", "BROOKS-AUTOMATION" }, { 0x00A0A9, "NAVTEL COMMUNICATIONS INC.", "NAVTEL-COMMUNICATION" }, { 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" }, { 0x00A032, "GES SINGAPORE PTE. LTD.", "GES-SINGAPORE-PTE" }, { 0x00A062, "AES PRODATA", "AES-PRODATA" }, { 0x00A0F4, "GE", "GE" }, { 0x00A008, "NETCORP", "NETCORP" }, { 0x00A01B, "PREMISYS COMMUNICATIONS, INC.", "PREMISYS-COMMUNICATION" }, { 0x00A04B, "TFL LAN INC.", "TFL-LAN" }, { 0x00A085, "Private", "PRIVATE" }, { 0x00A015, "WYLE", "WYLE" }, { 0x00A011, "MUTOH INDUSTRIES LTD.", "MUTOH-INDUSTRIES" }, { 0x00A0B6, "SANRITZ AUTOMATION CO., LTD.", "SANRITZ-AUTOMATION" }, { 0x00A0DD, "AZONIX CORPORATION", "AZONIX" }, { 0x0060DA, "Red Lion Controls, LP", "RED-LION-CONTROLS-LP" }, { 0x006042, "TKS (USA), INC.", "TKS-USA" }, { 0x006088, "WHITE MOUNTAIN DSP, INC.", "WHITE-MOUNTAIN-DSP" }, { 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" }, { 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" }, { 0x00C017, "Fluke Corporation", "FLUKE" }, { 0x00C086, "THE LYNK CORPORATION", "THE-LYNK" }, { 0x00C08D, "TRONIX PRODUCT DEVELOPMENT", "TRONIX-PRODUCT-DEVELOPMENT" }, { 0x00C0AB, "Telco Systems, Inc.", "TELCO" }, { 0x00C0A2, "INTERMEDIUM A/S", "INTERMEDIUM-A/S" }, { 0x00C070, "SECTRA SECURE-TRANSMISSION AB", "SECTRA-SECURE-TRANSMISSION-AB" }, { 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" }, { 0x004057, "LOCKHEED - SANDERS", "LOCKHEED---SANDERS" }, { 0x0040B7, "STEALTH COMPUTER SYSTEMS", "STEALTH" }, { 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" }, { 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" }, { 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" }, { 0x00C057, "MYCO ELECTRONICS", "MYCO-ELECTRONICS" }, { 0x00C0DF, "KYE Systems Corp.", "KYE" }, { 0x00C0F6, "CELAN TECHNOLOGY INC.", "CELAN" }, { 0x00C08F, "Panasonic Electric Works Co., Ltd.", "PANASONIC-ELECTRIC-WORKS" }, { 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" }, { 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" }, { 0x00C08B, "RISQ MODULAR SYSTEMS, INC.", "RISQ-MODULAR" }, { 0x00C0CD, "COMELTA, S.A.", "COMELTA" }, { 0x00C04B, "CREATIVE MICROSYSTEMS", "CREATIVE-MICROSYSTEMS" }, { 0x00C0A3, "DUAL ENTERPRISES CORPORATION", "DUAL-ENTERPRISES" }, { 0x00C095, "ZNYX", "ZNYX" }, { 0x0070B0, "M/A-COM INC. COMPANIES", "M/A-COM-COMPANIES" }, { 0x009D8E, "CARDIAC RECORDERS, INC.", "CARDIAC-RECORDERS" }, { 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" }, { 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" }, { 0x00406E, "COROLLARY, INC.", "COROLLARY" }, { 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" }, { 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" }, { 0x004049, "Roche Diagnostics International Ltd.", "ROCHE-DIAGNOSTICS" }, { 0x004029, "Compex", "COMPEX" }, { 0x008038, "DATA RESEARCH & APPLICATIONS", "DATA-RESEARCH-APPLICATIONS" }, { 0x008090, "MICROTEK INTERNATIONAL, INC.", "MICROTEK" }, { 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" }, { 0x0040FB, "CASCADE COMMUNICATIONS CORP.", "CASCADE-COMMUNICATION" }, { 0x0040CE, "NET-SOURCE, INC.", "NET-SOURCE" }, { 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, "TE Connectivity Ltd.", "TE-CONNECTIVITY" }, { 0x004080, "ATHENIX CORPORATION", "ATHENIX" }, { 0x0040BB, "GOLDSTAR CABLE CO., LTD.", "GOLDSTAR-CABLE" }, { 0x0040B1, "CODONICS INC.", "CODONICS" }, { 0x00402E, "PRECISION SOFTWARE, INC.", "PRECISION-SOFTWARE" }, { 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" }, { 0x00803C, "TVS ELECTRONICS LTD", "TVS-ELECTRONICS" }, { 0x008061, "LITTON SYSTEMS, INC.", "LITTON" }, { 0x00803E, "SYNERNETICS", "SYNERNETICS" }, { 0x00809A, "NOVUS NETWORKS LTD", "NOVUS-NETWORKS" }, { 0x0080B3, "AVAL DATA CORPORATION", "AVAL-DATA" }, { 0x0080A3, "Lantronix", "LANTRONIX" }, { 0x0080F7, "ZENITH ELECTRONICS", "ZENITH-ELECTRONICS" }, { 0x0080BF, "TAKAOKA ELECTRIC MFG. CO. LTD.", "TAKAOKA-ELECTRIC-MFG" }, { 0x0080F6, "SYNERGY MICROSYSTEMS", "SYNERGY-MICROSYSTEMS" }, { 0x00001F, "Telco Systems, Inc.", "TELCO" }, { 0x0000B4, "EDIMAX COMPUTER COMPANY", "EDIMAX-COMPANY" }, { 0x000058, "RACORE COMPUTER PRODUCTS INC.", "RACORE-PRODUCTS" }, { 0x000050, "RADISYS CORPORATION", "RADISYS" }, { 0x0080DD, "GMX INC/GIMIX", "GMX-/GIMIX" }, { 0x0080B7, "STELLAR COMPUTER", "STELLAR" }, { 0x008002, "SATELCOM (UK) LTD", "SATELCOM-UK" }, { 0x00805C, "AGILIS CORPORATION", "AGILIS" }, { 0x0080C7, "XIRCOM", "XIRCOM" }, { 0x0080E7, "LYNWOOD SCIENTIFIC DEV. LTD.", "LYNWOOD-SCIENTIFIC-DEV" }, { 0x008070, "COMPUTADORAS MICRON", "COMPUTADORAS-MICRON" }, { 0x00808F, "C. ITOH ELECTRONICS, INC.", "C-ITOH-ELECTRONICS" }, { 0x000091, "ANRITSU CORPORATION", "ANRITSU" }, { 0x004066, "Hitachi Metals, Ltd.", "HITACHI-METALS" }, { 0x004016, "ADC - Global Connectivity Solutions Division", "ADC---GLOBAL-CONNECTIVITY-SOLUTIONS-DIVISION" }, { 0x004026, "Buffalo Inc.", "BUFFALO" }, { 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" }, { 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" }, { 0x008082, "PEP MODULAR COMPUTERS GMBH", "PEP-MODULAR-COMPUTERS" }, { 0x008096, "HUMAN DESIGNED SYSTEMS, INC.", "HUMAN-DESIGNED" }, { 0x0080D5, "CADRE TECHNOLOGIES", "CADRE-TECHNOLOGIES" }, { 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" }, { 0x00006E, "ARTISOFT, INC.", "ARTISOFT" }, { 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" }, { 0x000031, "QPSX COMMUNICATIONS PTY LTD", "QPSX-COMMUNICATION-PTY" }, { 0x00006A, "COMPUTER CONSOLES INC.", "CONSOLES" }, { 0x0000C4, "WATERS DIV. OF MILLIPORE", "WATERS-DIV-OF-MILLIPORE" }, { 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" }, { 0x0000F9, "QUOTRON SYSTEMS INC.", "QUOTRON" }, { 0x0000BF, "SYMMETRIC COMPUTER SYSTEMS", "SYMMETRIC" }, { 0x000085, "CANON INC.", "CANON" }, { 0x0000CA, "ARRIS International", "ARRIS" }, { 0x000028, "PRODIGY SYSTEMS CORPORATION", "PRODIGY" }, { 0x000012, "INFORMATION TECHNOLOGY LIMITED", "INFORMATION" }, { 0x080025, "CONTROL DATA", "CONTROL-DATA" }, { 0x080020, "Oracle Corporation", "ORACLE" }, { 0x027001, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x080006, "SIEMENS AG", "SIEMENS" }, { 0x00AA00, "INTEL CORPORATION", "INTEL" }, { 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" }, { 0x00DD07, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00003E, "SIMPACT", "SIMPACT" }, { 0x080004, "CROMEMCO INCORPORATED", "CROMEMCO-INCORPORATED" }, { 0x000002, "XEROX CORPORATION", "XEROX" }, { 0x08008B, "PYRAMID TECHNOLOGY CORP.", "PYRAMID" }, { 0x080002, "BRIDGE COMMUNICATIONS INC.", "BRIDGE-COMMUNICATION" }, { 0x08003F, "FRED KOSCHARA ENTERPRISES", "FRED-KOSCHARA-ENTERPRISES" }, { 0x080061, "JAROGATE LTD.", "JAROGATE" }, { 0x08005D, "GOULD INC.", "GOULD" }, { 0x080051, "EXPERDATA", "EXPERDATA" }, { 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" }, { 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" }, { 0x000006, "XEROX CORPORATION", "XEROX" }, { 0x0001C8, "THOMAS CONRAD CORP.", "THOMAS-CONRAD" }, { 0x0001C8, "CONRAD CORP.", "CONRAD" }, { 0x02E6D3, "NIXDORF COMPUTER CORPORATION", "NIXDORF" }, { 0x0000BB, "TRI-DATA", "TRI-DATA" }, { 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" }, { 0x080085, "ELXSI", "ELXSI" }, { 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" }, { 0x000044, "CASTELLE CORPORATION", "CASTELLE" }, { 0x000027, "JAPAN RADIO COMPANY", "JAPAN-RADIO-COMPANY" }, { 0x0000E6, "APTOR PRODUITS DE COMM INDUST", "APTOR-PRODUITS-DE-COMM-INDUST" }, { 0x000084, "SUPERNET", "SUPERNET" }, { 0x0000FF, "CAMTEC ELECTRONICS LTD.", "CAMTEC-ELECTRONICS" }, { 0x00005F, "SUMITOMO ELECTRIC IND., LTD.", "SUMITOMO-ELECTRIC-IND" }, { 0x00007B, "RESEARCH MACHINES", "RESEARCH-MACHINES" }, { 0x000056, "DR. B. STRUCK", "DR-B-STRUCK" }, { 0x0452F3, "Apple, Inc.", "APPLE" }, { 0x241EEB, "Apple, Inc.", "APPLE" }, { 0xF431C3, "Apple, Inc.", "APPLE" }, { 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" }, { 0x6CE3B6, "Nera Telecommunciations Ltd", "NERA-TELECOMMUNCIATIONS" }, { 0x942CB3, "HUMAX Co., Ltd.", "HUMAX" }, { 0x8030DC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xCC78AB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA4D578, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xEC4D47, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x88CF98, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xAC2A0C, "CSR ZHUZHOU INSTITUTE CO.,LTD.", "CSR-ZHUZHOU-INSTITUTE" }, { 0x945330, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE422A5, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x1C994C, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xF02765, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x88308A, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x44A7CF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0013E0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xA81B5A, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x748EF8, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00E052, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000480, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x44322A, "Avaya Inc", "AVAYA" }, { 0xFC8399, "Avaya Inc", "AVAYA" }, { 0x00040D, "Avaya Inc", "AVAYA" }, { 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" }, { 0x000088, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x344B50, "zte corporation", "ZTE" }, { 0xFCC897, "zte corporation", "ZTE" }, { 0x9CD24B, "zte corporation", "ZTE" }, { 0xC864C7, "zte corporation", "ZTE" }, { 0xD0154A, "zte corporation", "ZTE" }, { 0x001FE2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001DD9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x308730, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x002568, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD47856, "Avaya Inc", "AVAYA" }, { 0xC057BC, "Avaya Inc", "AVAYA" }, { 0x38BB3C, "Avaya Inc", "AVAYA" }, { 0xE45D52, "Avaya Inc", "AVAYA" }, { 0xA4251B, "Avaya Inc", "AVAYA" }, { 0x6CA849, "Avaya Inc", "AVAYA" }, { 0x048A15, "Avaya Inc", "AVAYA" }, { 0x104780, "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" }, { 0x0016CE, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0014A4, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD02788, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x300ED5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x543530, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90489A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 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" }, { 0x0012D1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x70FF76, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB4994C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF48B32, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x20A783, "miControl GmbH", "MICONTROL" }, { 0x005053, "Cisco Systems, Inc", "CISCO" }, { 0x00500F, "Cisco Systems, Inc", "CISCO" }, { 0x0050A2, "Cisco Systems, Inc", "CISCO" }, { 0x0050F0, "Cisco Systems, Inc", "CISCO" }, { 0x000389, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x0CE0E4, "PLANTRONICS, INC.", "PLANTRONICS" }, { 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" }, { 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" }, { 0xC067AF, "Cisco Systems, Inc", "CISCO" }, { 0x64E950, "Cisco Systems, Inc", "CISCO" }, { 0x189C5D, "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" }, { 0x00E08F, "Cisco Systems, Inc", "CISCO" }, { 0x000EA6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0013D4, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002618, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x00248C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 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" }, { 0x507224, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD4970B, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 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" }, { 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" }, { 0x8C2DAA, "Apple, Inc.", "APPLE" }, { 0x444C0C, "Apple, Inc.", "APPLE" }, { 0x84FCFE, "Apple, Inc.", "APPLE" }, { 0xE48B7F, "Apple, Inc.", "APPLE" }, { 0x001BFB, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 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" }, { 0x28E7CF, "Apple, Inc.", "APPLE" }, { 0xD89E3F, "Apple, Inc.", "APPLE" }, { 0x040CCE, "Apple, Inc.", "APPLE" }, { 0xA4D1D2, "Apple, Inc.", "APPLE" }, { 0x406C8F, "Apple, Inc.", "APPLE" }, { 0x00C610, "Apple, Inc.", "APPLE" }, { 0x70DEE2, "Apple, Inc.", "APPLE" }, { 0x182032, "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" }, { 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" }, { 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" }, { 0xF81EDF, "Apple, Inc.", "APPLE" }, { 0x90840D, "Apple, Inc.", "APPLE" }, { 0xD8A25E, "Apple, Inc.", "APPLE" }, { 0xC8BCC8, "Apple, Inc.", "APPLE" }, { 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" }, { 0x80E86F, "Cisco Systems, Inc", "CISCO" }, { 0xE4AA5D, "Cisco Systems, Inc", "CISCO" }, { 0x7CFADF, "Apple, Inc.", "APPLE" }, { 0x101C0C, "Apple, Inc.", "APPLE" }, { 0x001124, "Apple, Inc.", "APPLE" }, { 0x5C969D, "Apple, Inc.", "APPLE" }, { 0xA8FAD8, "Apple, Inc.", "APPLE" }, { 0x949426, "Apple, Inc.", "APPLE" }, { 0xE0F5C6, "Apple, Inc.", "APPLE" }, { 0x28E14C, "Apple, Inc.", "APPLE" }, { 0x54E43A, "Apple, Inc.", "APPLE" }, { 0xC8E0EB, "Apple, Inc.", "APPLE" }, { 0xB8B2EB, "Googol Technology (HK) Limited", "GOOGOL-HK" }, { 0xC40049, "Kamama", "KAMAMA" }, { 0x50A9DE, "Smartcom - Bulgaria AD", "SMARTCOM---BULGARIA-AD" }, { 0x54AB3A, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x3C7873, "Airsonics", "AIRSONICS" }, { 0x3052CB, "Liteon Technology Corporation", "LITEON" }, { 0xDCFE07, "PEGATRON CORPORATION", "PEGATRON" }, { 0x84D47E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x8809AF, "Masimo Corp.", "MASIMO" }, { 0xE8DED6, "Intrising Networks, Inc.", "INTRISING-NETWORKS" }, { 0xA48431, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE03676, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x802994, "Technicolor CH USA", "TECHNICOLOR-CH-USA" }, { 0xD4B8FF, "Home Control Singapore Pte Ltd", "HOME-CONTROL-SINGAPORE-PTE" }, { 0xEC3EF7, "juniper networks", "JUNIPER-NETWORKS" }, { 0x90DFFB, "HOMERIDER SYSTEMS", "HOMERIDER" }, { 0x3C831E, "CKD Corporation", "CKD" }, { 0x381C23, "Hilan Technology CO.,LTD", "HILAN" }, { 0xAC6462, "zte corporation", "ZTE" }, { 0xC08488, "Finis Inc", "FINIS" }, { 0x68E8EB, "Linktel Technologies Co.,Ltd", "LINKTEL-TECHNOLOGIES" }, { 0x9457A5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x20C3A4, "RetailNext", "RETAILNEXT" }, { 0xFCF136, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C99E6, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x3CB72B, "PLUMgrid Inc", "PLUMGRID" }, { 0x243184, "SHARP Corporation", "SHARP" }, { 0x24DA9B, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x50DF95, "Lytx", "LYTX" }, { 0x584925, "E3 Enterprise", "E3" }, { 0x94F278, "Elma Electronic", "ELMA" }, { 0xE8BDD1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x307CB2, "ANOV FRANCE", "ANOV-FRANCE" }, { 0x90D8F3, "zte corporation", "ZTE" }, { 0xD84710, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0xC02DEE, "Cuff", "CUFF" }, { 0x54A3FA, "BQT Solutions (Australia)Pty Ltd", "BQT-SOLUTIONS-AUSTRALIA-PTY" }, { 0x30F772, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9023EC, "Availink, Inc.", "AVAILINK" }, { 0x7467F7, "Zebra Technologoes", "ZEBRA-TECHNOLOGOES" }, { 0x3891D5, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x0C8610, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x089B4B, "iKuai Networks", "IKUAI-NETWORKS" }, { 0x780541, "Queclink Wireless Solutions Co., Ltd", "QUECLINK-WIRELESS-SOLUTIONS" }, { 0xECDF3A, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xF40E22, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB844D9, "Apple, Inc.", "APPLE" }, { 0xDC2B2A, "Apple, Inc.", "APPLE" }, { 0x8C10D4, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0x203D66, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xB83A9D, "FIVE INTERACTIVE, LLC", "FIVE-INTERACTIVE-LLC" }, { 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" }, { 0xE45AA2, "vivo Mobile Communication Co., Ltd.", "VIVO-MOBILE-COMMUNICATION" }, { 0xC02567, "Nexxt Solutions", "NEXXT-SOLUTIONS" }, { 0xB46D35, "Dalian Seasky Automation Co;Ltd", "DALIAN-SEASKY-AUTOMATION" }, { 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" }, { 0x68EDA4, "Shenzhen Seavo Technology Co.,Ltd", "SHENZHEN-SEAVO" }, { 0xB899B0, "Cohere Technologies", "COHERE-TECHNOLOGIES" }, { 0x2CC5D3, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x80C5E6, "Microsoft Corporation", "MICROSOFT" }, { 0xD85DEF, "Busch-Jaeger Elektro GmbH", "BUSCH-JAEGER-ELEKTRO" }, { 0x506A03, "Netgear", "NETGEAR" }, { 0x10DF8B, "Shenzhen CareDear Communication Technology Co.,Ltd", "SHENZHEN-CAREDEAR-COMMUNICATION" }, { 0x00A784, "ITX security", "ITX-SECURITY" }, { 0x0CFE45, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x702A7D, "EpSpot AB", "EPSPOT-AB" }, { 0xB8B3DC, "DEREK (SHAOGUAN) LIMITED", "DEREK-SHAOGUAN" }, { 0x64006A, "Dell Inc.", "DELL" }, { 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" }, { 0xF4C613, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xD404CD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x347A60, "Pace plc", "PACE-PLC" }, { 0xC8348E, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC4EA1D, "Technicolor", "TECHNICOLOR" }, { 0x1432D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA4C138, "Telink Semiconductor (Taipei) Co. Ltd.", "TELINK-SEMICONDUCTOR-TAIPEI" }, { 0x683E34, "Meizu Technology Co., LTD", "MEIZU" }, { 0x48E244, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD8EFCD, "Nokia", "NOKIA" }, { 0xBC5FF6, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0xF4B8A7, "zte corporation", "ZTE" }, { 0x58F102, "BLU Products Inc.", "BLU-PRODUCTS" }, { 0xB869C2, "Sunitec Enterprise Co., Ltd.", "SUNITEC" }, { 0x2CC548, "IAdea Corporation", "IADEA" }, { 0x84DBFC, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xDCDB70, "Tonfunk Systementwicklung und Service GmbH", "TONFUNK-SYSTEMENTWICKLUNG-UND-SERVICE" }, { 0xC47D46, "FUJITSU LIMITED", "FUJITSU" }, { 0xEC0133, "TRINUS SYSTEMS INC.", "TRINUS" }, { 0x307C5E, "juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x3481F4, "SST Taiwan Ltd.", "SST-TAIWAN" }, { 0x20E407, "Spark srl", "SPARK-SRL" }, { 0x887384, "Toshiba", "TOSHIBA" }, { 0xCC4EEC, "HUMAX Co., Ltd.", "HUMAX" }, { 0x444CA8, "Arista Networks", "ARISTA-NETWORKS" }, { 0xA01B29, "SAGEMCOM", "SAGEMCOM" }, { 0x584704, "Shenzhen Webridge Technology Co.,Ltd", "SHENZHEN-WEBRIDGE" }, { 0x1C14B3, "Pinyon Technologies", "PINYON-TECHNOLOGIES" }, { 0xA0E4CB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x749CE3, "Art2Wave Canada Inc.", "ART2WAVE-CANADA" }, { 0xB856BD, "ITT LLC", "ITT-LLC" }, { 0x107873, "Shenzhen Jinkeyi Communication Co., Ltd.", "SHENZHEN-JINKEYI-COMMUNICATION" }, { 0x7CC709, "Shenzhen RF-LINK Elec&Technology.,Ltd", "SHENZHEN-RF-LINK-ELEC" }, { 0x3C8C40, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x0071C2, "PEGATRON CORPORATION", "PEGATRON" }, { 0x5065F3, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD45556, "Fiber Mountain Inc.", "FIBER-MOUNTAIN" }, { 0xF01E34, "ORICO Technologies Co., Ltd", "ORICO-TECHNOLOGIES" }, { 0xE458E7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8CBFA6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x74A063, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7840E4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9000DB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xC005C2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x48066A, "Tempered Networks, Inc.", "TEMPERED-NETWORKS" }, { 0x1CF03E, "Wearhaus Inc.", "WEARHAUS" }, { 0xBCF811, "Xiamen DNAKE Technology Co.,Ltd", "XIAMEN-DNAKE" }, { 0xA8827F, "CIBN Oriental Network(Beijing) CO.,Ltd", "CIBN-ORIENTAL-NETWORK-BEIJING" }, { 0x609C9F, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xB89ACD, "ELITE OPTOELECTRONIC(ASIA)CO.,LTD", "ELITE-OPTOELECTRONIC-ASIA" }, { 0x28C2DD, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x241C04, "SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD.", "SHENZHEN-JEHE-DEVELOPMENT" }, { 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" }, { 0xA0B437, "GENERAL DYNAMICS C4 SYSEMS", "GENERAL-DYNAMICS-C4-SYSEMS" }, { 0x900A39, "Wiio, Inc.", "WIIO" }, { 0xC4693E, "Turbulence Design Inc.", "TURBULENCE-DESIGN" }, { 0x1C8341, "Hefei Bitland Information Technology Co.Ltd", "HEFEI-BITLAND-INFORMATION" }, { 0x6C1E70, "Guangzhou YBDS IT Co.,Ltd", "GUANGZHOU-YBDS-IT" }, { 0xC8E130, "Milkyway Group Ltd", "MILKYWAY-GROUP" }, { 0xC808E9, "LG Electronics", "LG-ELECTRONICS" }, { 0x183A2D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x589B0B, "Shineway Technologies, Inc.", "SHINEWAY-TECHNOLOGIES" }, { 0xA89FBA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA48CDB, "Lenovo", "LENOVO" }, { 0x4062B6, "Tele system communication", "TELE-SYSTEM-COMMUNICATION" }, { 0x3C2C94, "ĉ­ċ·žċ·ĉœç§‘ĉŠ€ĉœ‰é™ċ…Ĵċ¸ïĵˆHangZhou Delan Technology Co.,Ltdïĵ‰", "ĉ­ċ·žċ·ĉœç§‘ĉŠ€ĉœ‰é™ċ…Ĵċ¸ïĵˆHANGZHOU-DELAN-ïĵ‰" }, { 0xF8CFC5, "Motorola Mobility LLC, a Lenovo Company", "MOTOROLA-MOBILITY-LLC-A-LENOVO-COMPANY" }, { 0x40A677, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x7C11CD, "QianTang Technology", "QIANTANG" }, { 0x0492EE, "iway AG", "IWAY" }, { 0x48A9D2, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0xF02A23, "Creative Next Design", "CREATIVE-NEXT-DESIGN" }, { 0x3CDFA9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8CF228, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x8833BE, "Ivenix, Inc.", "IVENIX" }, { 0x34CC28, "Nexpring Co. LTD.,", "NEXPRING" }, { 0x144146, "Honeywell (China) Co., LTD", "HONEYWELL-CHINA" }, { 0xF41563, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0xC035C5, "Prosoft Systems LTD", "PROSOFT" }, { 0x9068C3, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xF8B2F3, "GUANGZHOU BOSMA TECHNOLOGY CO.,LTD", "GUANGZHOU-BOSMA" }, { 0x9CD917, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xA81D16, "AzureWave Technologies, Inc", "AZUREWAVE-TECHNOLOGIES" }, { 0x8C9109, "Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd.", "TOYOSHIMA-ELECTRIC-TECHNOEOGY-SUZHOU" }, { 0x84A466, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x307350, "Inpeco SA", "INPECO" }, { 0xE8CC18, "D-Link International", "D-LINK" }, { 0xB09137, "ISis ImageStream Internet Solutions, Inc", "ISIS-IMAGESTREAM-INTERNET-SOLUTIONS" }, { 0x745C9F, "TCT mobile ltd.", "TCT-MOBILE" }, { 0x3C1E13, "HANGZHOU SUNRISE TECHNOLOGY CO., LTD", "HANGZHOU-SUNRISE" }, { 0xB4A828, "Shenzhen Concox Information Technology Co., Ltd", "SHENZHEN-CONCOX-INFORMATION" }, { 0x389496, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x0CB319, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x08EE8B, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0xE4F8EF, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x50F43C, "Leeo Inc", "LEEO" }, { 0x78ACBF, "Igneous Systems", "IGNEOUS" }, { 0x206274, "Microsoft Corporation", "MICROSOFT" }, { 0x5CCCFF, "Techroutes Network Pvt Ltd", "TECHROUTES-NETWORK-PVT" }, { 0xE8C74F, "Liteon Technology Corporation", "LITEON" }, { 0x844BB7, "Beijing Sankuai Online Technology Co.,Ltd", "BEIJING-SANKUAI-ONLINE" }, { 0x98F5A9, "OHSUNG ELECTRONICS CO.,LTD.", "OHSUNG-ELECTRONICS" }, { 0xD89341, "General Electric Global Research", "GENERAL-ELECTRIC-GLOBAL-RESEARCH" }, { 0xF4645D, "Toshiba", "TOSHIBA" }, { 0x30D587, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB04519, "TCT mobile ltd", "TCT-MOBILE" }, { 0xE0885D, "Technicolor CH USA Inc", "TECHNICOLOR-CH-USA" }, { 0x1436C6, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x04C09C, "Tellabs Inc.", "TELLABS" }, { 0xB43934, "Pen Generations, Inc.", "PEN-GENERATIONS" }, { 0xC03896, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xDCC622, "BUHEUNG SYSTEM", "BUHEUNG-SYSTEM" }, { 0x5C2BF5, "Vivint", "VIVINT" }, { 0x6C0B84, "Universal Global Scientific Industrial Co.,Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x600417, "POSBANK CO.,LTD", "POSBANK" }, { 0xA44AD3, "ST Electronics(Shanghai) Co.,Ltd", "ST-ELECTRONICS-SHANGHAI" }, { 0xACD1B8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x3C6A9D, "Dexatek Technology LTD.", "DEXATEK" }, { 0x14893E, "VIXTEL TECHNOLOGIES LIMTED", "VIXTEL-TECHNOLOGIES-LIMTED" }, { 0x60F189, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x74A34A, "ZIMI CORPORATION", "ZIMI" }, { 0x148F21, "Garmin International", "GARMIN" }, { 0x981DFA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C7D22, "Fuji Xerox Co., Ltd.", "FUJI-XEROX" }, { 0x2497ED, "Techvision Intelligent Technology Limited", "TECHVISION-INTELLIGENT" }, { 0x104E07, "Shanghai Genvision Industries Co.,Ltd", "SHANGHAI-GENVISION-INDUSTRIES" }, { 0x94B40F, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x2C337A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x844464, "ServerU Inc", "SERVERU" }, { 0x78312B, "zte corporation", "ZTE" }, { 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" }, { 0xBCD1D3, "Tinno Mobile Technology Corp", "TINNO-MOBILE" }, { 0xECB907, "CloudGenix Inc", "CLOUDGENIX" }, { 0xEC2280, "D-Link International", "D-LINK" }, { 0x5CF9F0, "Atomos Engineering P/L", "ATOMOS-ENGINEERING-P/L" }, { 0xB808CF, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF40669, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7CCCB8, "Intel Corporate", "INTEL-CORPORATE" }, { 0xFCDBB3, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xB8186F, "ORIENTAL MOTOR CO., LTD.", "ORIENTAL-MOTOR" }, { 0x1C9C26, "Zoovel Technologies", "ZOOVEL-TECHNOLOGIES" }, { 0x00D9D1, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 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" }, { 0xE00DB9, "Private", "PRIVATE" }, { 0xA41242, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x747548, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x4C2C83, "Zhejiang KaNong Network Technology Co.,Ltd.", "ZHEJIANG-KANONG-NETWORK" }, { 0xBCC342, "Panasonic System Networks Co., Ltd.", "PANASONIC-SYSTEM-NETWORKS" }, { 0xE89606, "testo Instruments (Shenzhen) Co., Ltd.", "TESTO-INSTRUMENTS-SHENZHEN" }, { 0xA4A1C2, "Ericsson AB (EAB)", "ERICSSON-AB-EAB" }, { 0xCC3F1D, "Intesis Software SL", "INTESIS-SOFTWARE-SL" }, { 0x902181, "Shanghai Huaqin Telecom Technology Co.,Ltd", "SHANGHAI-HUAQIN-TELECOM" }, { 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" }, { 0x989096, "Dell Inc", "DELL" }, { 0x84E058, "Pace plc", "PACE-PLC" }, { 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" }, { 0x108A1B, "RAONIX Inc.", "RAONIX" }, { 0x8CF813, "ORANGE POLSKA", "ORANGE-POLSKA" }, { 0xD084B0, "SAGEMCOM", "SAGEMCOM" }, { 0xB479A7, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xB8F317, "iSun Smasher Communications Private Limited", "ISUN-SMASHER-COMMUNICATION-PRIVATE" }, { 0x5C93A2, "Liteon Technology Corporation", "LITEON" }, { 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" }, { 0x1458D0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xE4C62B, "Airware", "AIRWARE" }, { 0x80F8EB, "RayTight", "RAYTIGHT" }, { 0xF409D8, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x2442BC, "Alinco,incorporated", "ALINCO-INCORPORATED" }, { 0x549F35, "Dell Inc.", "DELL" }, { 0xC401CE, "PRESITION (2000) CO., LTD.", "PRESITION-2000" }, { 0xD01242, "BIOS Corporation", "BIOS" }, { 0x6CBFB5, "Noon Technology Co., Ltd", "NOON" }, { 0x94AEE3, "Belden Hirschmann Industries (Suzhou) Ltd.", "BELDEN-HIRSCHMANN-INDUSTRIES-SUZHOU" }, { 0x44666E, "IP-LINE", "IP-LINE" }, { 0x705B2E, "M2Communication Inc.", "M2COMMUNICATION" }, { 0x0C8C8F, "Kamo Technology Limited", "KAMO" }, { 0x3CD9CE, "Eclipse WiFi", "ECLIPSE-WIFI" }, { 0xC80210, "LG Innotek", "LG-INNOTEK" }, { 0xFC1910, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x083D88, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50FEF2, "Sify Technologies Ltd", "SIFY-TECHNOLOGIES" }, { 0x54FA3E, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xF4FD2B, "ZOYI Company", "ZOYI-COMPANY" }, { 0xFCAA14, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xF4F5E8, "Google", "GOOGLE" }, { 0xB8EE65, "Liteon Technology Corporation", "LITEON" }, { 0x4C11BF, "ZHEJIANG DAHUA TECHNOLOGY CO.,LTD.", "ZHEJIANG-DAHUA" }, { 0xFCD5D9, "Shenzhen SDMC Technology Co., Ltd.", "SHENZHEN-SDMC" }, { 0x14B484, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x608F5C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD85DFB, "Private", "PRIVATE" }, { 0x7CC4EF, "Devialet", "DEVIALET" }, { 0xA8E539, "Moimstone Co.,Ltd", "MOIMSTONE" }, { 0x98F170, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x04C991, "Phistek INC.", "PHISTEK" }, { 0x581F67, "Open-m technology limited", "OPEN-M" }, { 0x4851B7, "Intel Corporate", "INTEL-CORPORATE" }, { 0xBC25F0, "3D Display Technologies Co., Ltd.", "3D-DISPLAY-TECHNOLOGIES" }, { 0x007532, "INID BV", "INID" }, { 0xDC38E1, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xA002DC, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 0x907EBA, "UTEK TECHNOLOGY (SHENZHEN) CO.,LTD", "UTEK-SHENZHEN" }, { 0x04E676, "AMPAK Technology Inc.", "AMPAK" }, { 0x488244, "Life Fitness / Div. of Brunswick", "LIFE-FITNESS-/-DIV-OF-BRUNSWICK" }, { 0xA8F7E0, "PLANET Technology Corporation", "PLANET" }, { 0x7CE524, "Quirky, Inc.", "QUIRKY" }, { 0x1883BF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x644FB0, "Hyunjin.com", "HYUNJIN-COM" }, { 0xACA31E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x5C2E59, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x646CB2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF884F2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6CB0CE, "NETGEAR", "NETGEAR" }, { 0x60E327, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xE4D332, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB82A72, "Dell Inc", "DELL" }, { 0xA0DA92, "Nanjing Glarun Atten Technology Co. Ltd.", "NANJING-GLARUN-ATTEN" }, { 0x784859, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x6828BA, "Dejai", "DEJAI" }, { 0x1088CE, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xFCF647, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x7CD30A, "INVENTEC Corporation", "INVENTEC" }, { 0x3481C4, "AVM GmbH", "AVM" }, { 0x885BDD, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xA47E39, "zte corporation", "ZTE" }, { 0x0C63FC, "Nanjing Signway Technology Co., Ltd", "NANJING-SIGNWAY" }, { 0xACA9A0, "Audioengine, Ltd.", "AUDIOENGINE" }, { 0xA8A668, "zte corporation", "ZTE" }, { 0xF015A0, "KyungDong One Co., Ltd.", "KYUNGDONG-ONE" }, { 0x4CA56D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xECF72B, "HD DIGITAL TECH CO., LTD.", "HD-DIGITAL-TECH" }, { 0xD8B6D6, "Blu Tether Limited", "BLU-TETHER" }, { 0x847207, "I&C Technology", "I-C" }, { 0x3C25D7, "Nokia Corporation", "NOKIA" }, { 0x1889DF, "CerebrEX Inc.", "CEREBREX" }, { 0x30A8DB, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0x48D18E, "Metis Communication Co.,Ltd", "METIS-COMMUNICATION" }, { 0xA49F85, "Lyve Minds, Inc", "LYVE-MINDS" }, { 0x2C9AA4, "NGI SpA", "NGI-SPA" }, { 0xB46698, "Zealabs srl", "ZEALABS-SRL" }, { 0x283B96, "Cool Control LTD", "COOL-CONTROL" }, { 0x80D433, "LzLabs GmbH", "LZLABS" }, { 0x687CC8, "Measurement Systems S. de R.L.", "MEASUREMENT-S-DE-R-L" }, { 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" }, { 0x684898, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C569D, "Imaging Solutions Group", "IMAGING-SOLUTIONS-GROUP" }, { 0xA43A69, "Vers Inc", "VERS" }, { 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" }, { 0x38A53C, "Veenstra Instruments", "VEENSTRA-INSTRUMENTS" }, { 0x5CFFFF, "Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd", "SHENZHEN-KEZHONGLONG-OPTOELECTRONIC" }, { 0xF0D3A7, "CobaltRay Co., Ltd", "COBALTRAY" }, { 0x20D390, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x847616, "Addat s.r.o.", "ADDAT-S-R-O" }, { 0xD46867, "Neoventus Design Group", "NEOVENTUS-DESIGN-GROUP" }, { 0x8C09F4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x68692E, "Zycoo Co.,Ltd", "ZYCOO" }, { 0xE4121D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x60FFDD, "C.E. ELECTRONICS, INC", "C-E-ELECTRONICS" }, { 0xCC856C, "SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD", "SHENZHEN-MDK-DIGITAL" }, { 0xFCBBA1, "Shenzhen Minicreate Technology Co.,Ltd", "SHENZHEN-MINICREATE" }, { 0x50B695, "Micropoint Biotechnologies,Inc.", "MICROPOINT-BIOTECHNOLOGIES" }, { 0xB48547, "Amptown System Company GmbH", "AMPTOWN-SYSTEM-COMPANY" }, { 0x38BF2F, "Espec Corp.", "ESPEC" }, { 0x182012, "Aztech Associates Inc.", "AZTECH-ASSOCIATES" }, { 0x34BE00, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x343111, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0CBD51, "TCT Mobile Limited", "TCT-MOBILE" }, { 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" }, { 0x88E8F8, "YONG TAI ELECTRONIC (DONGGUAN) LTD.", "YONG-TAI-DONGGUAN" }, { 0x2C073C, "DEVLINE LIMITED", "DEVLINE" }, { 0xF08261, "SAGEMCOM", "SAGEMCOM" }, { 0x60FE20, "2 Wire", "2-WIRE" }, { 0x7CE4AA, "Private", "PRIVATE" }, { 0x1820A6, "Sage Co., Ltd.", "SAGE" }, { 0xBCF61C, "Geomodeling Wuxi Technology Co. Ltd.", "GEOMODELING-WUXI" }, { 0x083F3E, "WSH GmbH", "WSH" }, { 0x5CC5D4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6C09D6, "Digiquest Electronics LTD", "DIGIQUEST-ELECTRONICS" }, { 0xF03A4B, "Bloombase, Inc.", "BLOOMBASE" }, { 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" }, { 0x6455B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF8F005, "Newport Media Inc.", "NEWPORT-MEDIA" }, { 0x98C0EB, "Global Regency Ltd", "GLOBAL-REGENCY" }, { 0xD4224E, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x28DEF6, "bioMerieux Inc.", "BIOMERIEUX" }, { 0x387B47, "AKELA, Inc.", "AKELA" }, { 0x7CCD11, "MS-Magnet", "MS-MAGNET" }, { 0x94FBB2, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xA01D48, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x4CE1BB, "Zhuhai HiFocus Technology Co., Ltd.", "ZHUHAI-HIFOCUS" }, { 0x8CDE99, "Comlab Inc.", "COMLAB" }, { 0x085AE0, "Recovision Technology Co., Ltd.", "RECOVISION" }, { 0xBCEE7B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x9C80DF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x8C3AE3, "LG Electronics", "LG-ELECTRONICS" }, { 0xFC09D8, "ACTEON Group", "ACTEON-GROUP" }, { 0x0C1262, "zte corporation", "ZTE" }, { 0xA875E2, "Aventura Technologies, Inc.", "AVENTURA-TECHNOLOGIES" }, { 0x94DF4E, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0xE0AEB2, "Bender GmbH & Co.KG", "BENDER-AMP" }, { 0xBC9889, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x2C553C, "Gainspeed, Inc.", "GAINSPEED" }, { 0xB43E3B, "Viableware, Inc", "VIABLEWARE" }, { 0xF854AF, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x7C0623, "Ultra Electronics, CIS", "ULTRA-ELECTRONICS-CIS" }, { 0xACCA8E, "ODA Technologies", "ODA-TECHNOLOGIES" }, { 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" }, { 0x84253F, "Silex Technology, Inc", "SILEX" }, { 0x907A0A, "Gebr. Bode GmbH & Co KG", "GEBR-BODE" }, { 0x306112, "PAV GmbH", "PAV" }, { 0xA0C6EC, "ShenZhen ANYK Technology Co.,LTD", "SHENZHEN-ANYK" }, { 0x9049FA, "Intel Corporation", "INTEL" }, { 0xECF35B, "Nokia Corporation", "NOKIA" }, { 0x845C93, "Chabrier Services", "CHABRIER-SERVICES" }, { 0xD44C9C, "Shenzhen YOOBAO Technology Co.Ltd", "SHENZHEN-YOOBAO" }, { 0x68E166, "Private", "PRIVATE" }, { 0x60FEF9, "Thomas & Betts", "THOMAS-BETTS" }, { 0xF8F1B6, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x48D224, "Liteon Technology Corporation", "LITEON" }, { 0x78FE41, "Socus networks", "SOCUS-NETWORKS" }, { 0x083571, "CASwell INC.", "CASWELL" }, { 0xDCF755, "SITRONIK", "SITRONIK" }, { 0xE42D02, "TCT Mobile Limited", "TCT-MOBILE" }, { 0xF4A294, "EAGLE WORLD DEVELOPMENT CO., LIMITED", "EAGLE-WORLD-DEVELOPMENT" }, { 0x947C3E, "Polewall Norge AS", "POLEWALL-NORGE-AS" }, { 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" }, { 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" }, { 0xFCB0C4, "Shanghai DareGlobal Technologies Co., Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x9CBB98, "Shen Zhen RND Electronic Co.,LTD", "SHEN-ZHEN-RND" }, { 0x345C40, "Cargt Holdings LLC", "CARGT-HOLDINGS-LLC" }, { 0x34885D, "Logitech Far East", "LOGITECH-FAR-EAST" }, { 0xB462AD, "raytest GmbH", "RAYTEST" }, { 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" }, { 0xA4DB30, "Liteon Technology Corporation", "LITEON" }, { 0x0C8910, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0xA0E5E9, "enimai Inc", "ENIMAI" }, { 0xA88D7B, "SunDroid Global limited.", "SUNDROID-GLOBAL" }, { 0xA4E4B8, "BlackBerry Limited", "BLACKBERRY" }, { 0x94C150, "2Wire Inc", "2WIRE" }, { 0xA03B1B, "Inspire Tech", "INSPIRE-TECH" }, { 0x3C6E63, "Mitron OY", "MITRON-OY" }, { 0x2464EF, "CYG SUNRI CO.,LTD.", "CYG-SUNRI" }, { 0x50B888, "wi2be Tecnologia S/A", "WI2BE-TECNOLOGIA-S/A" }, { 0xFC019E, "VIEVU", "VIEVU" }, { 0xA0481C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x34AA8B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF45F69, "Matsufu Electronics distribution Company", "MATSUFU-ELECTRONICS-DISTRIBUTION-COMPANY" }, { 0x2CCD69, "Aqavi.com", "AQAVI-COM" }, { 0x1C63B7, "OpenProducts 237 AB", "OPENPRODUCTS-237-AB" }, { 0x5CF938, "A, Inc", "A" }, { 0xA0A23C, "GPMS", "GPMS" }, { 0x708D09, "Nokia Corporation", "NOKIA" }, { 0xFCE1D9, "Stable Imaging Solutions LLC", "STABLE-IMAGING-SOLUTIONS-LLC" }, { 0x38B74D, "Fijowave Limited", "FIJOWAVE" }, { 0x00B78D, "Nanjing Shining Electric Automation Co., Ltd", "NANJING-SHINING-ELECTRIC-AUTOMATION" }, { 0x882364, "Watchnet DVR Inc", "WATCHNET-DVR" }, { 0xA05B21, "ENVINET GmbH", "ENVINET" }, { 0x50B8A2, "ImTech Technologies LLC,", "IMTECH-TECHNOLOGIES-LLC" }, { 0xA41566, "Wei Fang Goertek Electronics Co.,Ltd", "WEI-FANG-GOERTEK-ELECTRONICS" }, { 0xB04C05, "Fresenius Medical Care Deutschland GmbH", "FRESENIUS-MEDICAL-CARE-DEUTSCHLAND" }, { 0x083E0C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA0EC80, "zte corporation", "ZTE" }, { 0x9046B7, "Vadaro Pte Ltd", "VADARO-PTE" }, { 0x240A64, "AzureWaveTechnologies,Inc", "AZUREWAVETECHNOLOGIES" }, { 0x888964, "GSI Electronics Inc.", "GSI-ELECTRONICS" }, { 0x28B2BD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4C82CF, "Echostar Technologies", "ECHOSTAR-TECHNOLOGIES" }, { 0x9CA577, "Osorno Enterprises Inc.", "OSORNO-ENTERPRISES" }, { 0xC0C3B6, "Automatic Systems", "AUTOMATIC" }, { 0xA8294C, "Precision Optical Transceivers, Inc.", "PRECISION-OPTICAL-TRANSCEIVERS" }, { 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" }, { 0xD8D43C, "Sony Corporation", "SONY" }, { 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" }, { 0x6405BE, "NEW LIGHT LED", "NEW-LIGHT-LED" }, { 0xE03E4A, "Cavanagh Group International", "CAVANAGH-GROUP" }, { 0xD890E8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x24C696, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30766F, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0x4432C8, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x78521A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x68DB67, "Nantong Coship Electronics Co., Ltd", "NANTONG-COSHIP-ELECTRONICS" }, { 0xBCC6DB, "Nokia Corporation", "NOKIA" }, { 0xBC261D, "HONG KONG TECON TECHNOLOGY", "HONG-KONG-TECON" }, { 0x1C08C1, "Lg Innotek", "LG-INNOTEK" }, { 0x201D03, "Elatec GmbH", "ELATEC" }, { 0xC06C6D, "MagneMotion, Inc.", "MAGNEMOTION" }, { 0x74CA25, "Calxeda, Inc.", "CALXEDA" }, { 0x181EB0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCCBD35, "Steinel GmbH", "STEINEL" }, { 0x788DF7, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x6CECA1, "SHENZHEN CLOU ELECTRONICS CO. LTD.", "SHENZHEN-CLOU-ELECTRONICS" }, { 0xD862DB, "Eno Inc.", "ENO" }, { 0x0C0535, "Juniper Systems", "JUNIPER" }, { 0x18FE34, "Espressif Inc.", "ESPRESSIF" }, { 0xA8D236, "Lightware Visual Engineering", "LIGHTWARE-VISUAL-ENGINEERING" }, { 0x6C8686, "Technonia", "TECHNONIA" }, { 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" }, { 0xF0219D, "Cal-Comp Electronics & Communications Company Ltd.", "CAL-COMP-ELECTRONICS-COMMUNICATION-COMPANY" }, { 0xF8D7BF, "REV Ritter GmbH", "REV-RITTER" }, { 0xAC5D10, "Pace Americas", "PACE-AMERICAS" }, { 0x88F490, "Jetmobile Pte Ltd", "JETMOBILE-PTE" }, { 0xD0E782, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xE8A364, "Signal Path International / Peachtree Audio", "SIGNAL-PATH-/-PEACHTREE-AUDIO" }, { 0xD0D6CC, "Wintop", "WINTOP" }, { 0xC47DCC, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x702559, "CyberTAN Technology, Inc.", "CYBERTAN" }, { 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" }, { 0x30CDA7, "Samsung Electronics ITS, Printer division", "SAMSUNG-ELECTRONICS-ITS-PRINTER-DIVISION" }, { 0x104D77, "Innovative Computer Engineering", "INNOVATIVE-ENGINEERING" }, { 0x8851FB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x38B5BD, "E.G.O. Elektro-Ger", "E-G-O-ELEKTRO-GER" }, { 0xB85AF7, "Ouya, Inc", "OUYA" }, { 0xE0D9A2, "Hippih aps", "HIPPIH-APS" }, { 0xB0C4E7, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xF0F669, "Motion Analysis Corporation", "MOTION-ANALYSIS" }, { 0x40E730, "DEY Storage Systems, Inc.", "DEY-STORAGE" }, { 0xB0B448, "6278", "6278" }, { 0xF05DC8, "Duracell Powermat", "DURACELL-POWERMAT" }, { 0x2CD05A, "Liteon Technology Corporation", "LITEON" }, { 0x48F925, "Maestronic", "MAESTRONIC" }, { 0xA4EBD3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50F520, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC0885B, "SnD Tech Co., Ltd.", "SND-TECH" }, { 0x64C667, "Barnes&Noble", "BARNES-NOBLE" }, { 0x64535D, "Frauscher Sensortechnik", "FRAUSCHER-SENSORTECHNIK" }, { 0x105F06, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x841715, "GP Electronics (HK) Ltd.", "GP-ELECTRONICS-HK" }, { 0x087999, "AIM GmbH", "AIM" }, { 0x08373D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x1867B0, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x9CE635, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x9C1C12, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x380FE4, "Dedicated Network Partners Oy", "DEDICATED-NETWORK-PARTNERS-OY" }, { 0x847A88, "HTC Corporation", "HTC" }, { 0x0808C2, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x5461EA, "Zaplox AB", "ZAPLOX-AB" }, { 0x78324F, "Millennium Group, Inc.", "MILLENNIUM-GROUP" }, { 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" }, { 0x3C081E, "Beijing Yupont Electric Power Technology Co.,Ltd", "BEIJING-YUPONT-ELECTRIC-POWER" }, { 0xB4DD15, "ControlThings Oy Ab", "CONTROLTHINGS-OY-AB" }, { 0x7CA15D, "GN ReSound A/S", "GN-RESOUND-A/S" }, { 0x3C86A8, "Sangshin elecom .co,, LTD", "SANGSHIN-ELECOM" }, { 0x9C3AAF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFCDD55, "Shenzhen WeWins wireless Co.,Ltd", "SHENZHEN-WEWINS-WIRELESS" }, { 0x94EBCD, "Research In Motion Limited", "RESEARCH-IN-MOTION" }, { 0xCC0DEC, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x68B094, "INESA ELECTRON CO.,LTD", "INESA-ELECTRON" }, { 0xB461FF, "Lumigon A/S", "LUMIGON-A/S" }, { 0x78595E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9038DF, "Changzhou Tiannengbo System Co. Ltd.", "CHANGZHOU-TIANNENGBO-SYSTEM" }, { 0xCC593E, "TOUMAZ LTD", "TOUMAZ" }, { 0x4CBCA5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xAC8D14, "Smartrove Inc", "SMARTROVE" }, { 0x18673F, "Hanover Displays Limited", "HANOVER-DISPLAYS" }, { 0x8CCDE8, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xA00ABF, "Wieson Technologies Co., Ltd.", "WIESON-TECHNOLOGIES" }, { 0x2091D9, "I'M SPA", "I-M-SPA" }, { 0x744D79, "Arrive Systems Inc.", "ARRIVE" }, { 0xC83D97, "Nokia Corporation", "NOKIA" }, { 0x141BF0, "Intellimedia Systems Ltd", "INTELLIMEDIA" }, { 0x38192F, "Nokia Corporation", "NOKIA" }, { 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" }, { 0x100D7F, "NETGEAR INC.,", "NETGEAR" }, { 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" }, { 0x20D5BF, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0x6CD032, "LG Electronics", "LG-ELECTRONICS" }, { 0x1065CF, "IQSIM", "IQSIM" }, { 0xB877C3, "Decagon Devices, Inc.", "DECAGON-DEVICES" }, { 0x849DC5, "Centera Photonics Inc.", "CENTERA-PHOTONICS" }, { 0x18002D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xFC1F19, "SAMSUNG ELECTRO-MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 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" }, { 0xF8F082, "Orion Networks International, Inc", "ORION-NETWORKS" }, { 0xE8892C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x40B4F0, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x9059AF, "6278", "6278" }, { 0x0CC47E, "EUCAST Co., Ltd.", "EUCAST" }, { 0xCCE798, "My Social Stuff", "MY-SOCIAL-STUFF" }, { 0x50724D, "BEG Brueck Electronic GmbH", "BEG-BRUECK" }, { 0xB898B0, "Atlona Inc.", "ATLONA" }, { 0x1C66AA, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x04F8C2, "Flaircomm Microelectronics, Inc.", "FLAIRCOMM-MICROELECTRONICS" }, { 0x681729, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0C93FB, "BNS Solutions", "BNS-SOLUTIONS" }, { 0x3C0771, "Sony Corporation", "SONY" }, { 0xE45614, "Suttle Apparatus", "SUTTLE-APPARATUS" }, { 0xB0EE45, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x842BBC, "Modelleisenbahn GmbH", "MODELLEISENBAHN" }, { 0x5C514F, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC8CBB8, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB8B7D7, "2GIG Technologies", "2GIG-TECHNOLOGIES" }, { 0x1048B1, "Beijing Duokan Technology Limited", "BEIJING-DUOKAN" }, { 0xE83EFC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x580943, "Private", "PRIVATE" }, { 0x547FA8, "TELCO systems, s.r.o.", "TELCO-S-R-O" }, { 0x5474E6, "Webtech Wireless", "WEBTECH-WIRELESS" }, { 0x348446, "Ericsson AB", "ERICSSON-AB" }, { 0x00B56D, "David Electronics Co., LTD.", "DAVID-ELECTRONICS" }, { 0x90187C, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x68B43A, "WaterFurnace International, Inc.", "WATERFURNACE" }, { 0x581243, "AcSiP Technology Corp.", "ACSIP" }, { 0xF8D0AC, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x543968, "Edgewater Networks Inc", "EDGEWATER-NETWORKS" }, { 0xC041F6, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x985E1B, "ConversDigital Co., Ltd.", "CONVERSDIGITAL" }, { 0x9C0DAC, "Tymphany HK Limited", "TYMPHANY-HK" }, { 0x8CD3A2, "VisSim AS", "VISSIM-AS" }, { 0x74E543, "Liteon Technology Corporation", "LITEON" }, { 0x647657, "Innovative Security Designs", "INNOVATIVE-SECURITY-DESIGNS" }, { 0x2C625A, "Finest Security Systems Co., Ltd", "FINEST-SECURITY" }, { 0x2074CF, "Shenzhen Voxtech Co.,Ltd", "SHENZHEN-VOXTECH" }, { 0x34AF2C, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0xC8BE19, "D-Link International", "D-LINK" }, { 0xE856D6, "NCTech Ltd", "NCTECH" }, { 0xBCF685, "D-Link International", "D-LINK" }, { 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" }, { 0x843A4B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x08D40C, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC9403, "Envision Peripherals Inc", "ENVISION-PERIPHERALS" }, { 0xA865B2, "DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED", "DONGGUAN-YISHANG" }, { 0xE42F26, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xA4466B, "EOC Technology", "EOC" }, { 0x7C386C, "Real Time Logic", "REAL-TIME-LOGIC" }, { 0xD8AF3B, "Hangzhou Bigbright Integrated communications system Co.,Ltd", "HANGZHOU-BIGBRIGHT-INTEGRATED-COMMUNICATION-SYSTEM" }, { 0xE0C79D, "6278", "6278" }, { 0x78D34F, "Pace-O-Matic, Inc.", "PACE-O-MATIC" }, { 0xD857EF, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x784405, "FUJITU(HONG KONG) ELECTRONIC Co.,LTD.", "FUJITU-HONG-KONG" }, { 0xC03F2A, "Biscotti, Inc.", "BISCOTTI" }, { 0x5001BB, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xA40BED, "Carry Technology Co.,Ltd", "CARRY" }, { 0x0CD996, "Cisco Systems, Inc", "CISCO" }, { 0xD82DE1, "Tricascade Inc.", "TRICASCADE" }, { 0xC438D3, "TAGATEC CO.,LTD", "TAGATEC" }, { 0x781881, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x547398, "Toyo Electronics Corporation", "TOYO-ELECTRONICS" }, { 0x4C72B9, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE0AAB0, "GENERAL VISION ELECTRONICS CO. LTD.", "GENERAL-VISION-ELECTRONICS" }, { 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" }, { 0x089E01, "QUANTA COMPUTER INC.", "QUANTA" }, { 0xACD9D6, "tci GmbH", "TCI" }, { 0x7493A4, "Zebra Technologies Corp.", "ZEBRA-TECHNOLOGIES" }, { 0x58C38B, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x24A43C, "Ubiquiti Networks, INC", "UBIQUITI-NETWORKS" }, { 0xD41E35, "TOHO Electronics INC.", "TOHO-ELECTRONICS" }, { 0x700BC0, "Dewav Technology Company", "DEWAV-COMPANY" }, { 0x3CF392, "Virtualtek. Co. Ltd", "VIRTUALTEK" }, { 0x889676, "TTC MARCONI s.r.o.", "TTC-MARCONI-S-R-O" }, { 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" }, { 0x28987B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60B982, "RO.VE.R. Laboratories S.p.A.", "RO-VE-R-LABORATORIES-S-P-A" }, { 0xA4526F, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xB46238, "Exablox", "EXABLOX" }, { 0x40704A, "Power Idea Technology Limited", "POWER-IDEA" }, { 0xE899C4, "HTC Corporation", "HTC" }, { 0xF0FDA0, "Acurix Networks LP", "ACURIX-NETWORKS-LP" }, { 0x1C0B52, "EPICOM S.A", "EPICOM" }, { 0x747E2D, "Beijing Thomson CITIC Digital Technology Co. LTD.", "BEIJING-THOMSON-CITIC-DIGITAL" }, { 0xE80C75, "Syncbak, Inc.", "SYNCBAK" }, { 0xBC8B55, "NPP ELIKS America Inc. DBA T&M Atlantic", "NPP-ELIKS-AMERICA-DBA-T-M-ATLANTIC" }, { 0xD8EB97, "TRENDnet, Inc.", "TRENDNET" }, { 0x202598, "Teleview", "TELEVIEW" }, { 0x844915, "vArmour Networks, Inc.", "VARMOUR-NETWORKS" }, { 0xA04CC1, "Helixtech Corp.", "HELIXTECH" }, { 0x1CB243, "TDC A/S", "TDC-A/S" }, { 0xC86000, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x645299, "The Chamberlain Group, Inc", "THE-CHAMBERLAIN-GROUP" }, { 0xBC125E, "Beijing WisVideo INC.", "BEIJING-WISVIDEO" }, { 0x009C02, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xC80718, "TDSi", "TDSI" }, { 0xB0D09C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x48ED80, "daesung eltec", "DAESUNG-ELTEC" }, { 0xA086EC, "SAEHAN HITEC Co., Ltd", "SAEHAN-HITEC" }, { 0xBC4B79, "SensingTek", "SENSINGTEK" }, { 0x2818FD, "Aditya Infotech Ltd.", "ADITYA-INFOTECH" }, { 0x9003B7, "PARROT", "PARROT" }, { 0x50008C, "Hong Kong Telecommunications (HKT) Limited", "HONG-KONG-TELECOMMUNICATIONS-HKT" }, { 0xE42C56, "Lilee Systems, Ltd.", "LILEE" }, { 0x6CA96F, "TransPacket AS", "TRANSPACKET-AS" }, { 0xAC0142, "Uriel Technologies SIA", "URIEL-TECHNOLOGIES-SIA" }, { 0xA007B6, "Advanced Technical Support, Inc.", "ADVANCED-TECHNICAL-SUPPORT" }, { 0x542A9C, "LSY Defense, LLC.", "LSY-DEFENSE-LLC" }, { 0xD487D8, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x90CF7D, "Qingdao Hisense Electric Co.,Ltd.", "QINGDAO-HISENSE-ELECTRIC" }, { 0x48D7FF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0xF88FCA, "Google Fiber, Inc", "GOOGLE-FIBER" }, { 0xF47F35, "Cisco Systems, Inc", "CISCO" }, { 0xA0F419, "Nokia Corporation", "NOKIA" }, { 0x3CA9F4, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x5C0A5B, "SAMSUNG ELECTRO-MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x18D66A, "Inmarsat", "INMARSAT" }, { 0xCCB255, "D-Link International", "D-LINK" }, { 0xC85645, "Intermas France", "INTERMAS-FRANCE" }, { 0xAC162D, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x8C604F, "Cisco Systems, Inc", "CISCO" }, { 0x74FF7D, "Wren Sound Systems, LLC", "WREN-SOUND-LLC" }, { 0x380A94, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5846E1, "Baxter Healthcare", "BAXTER-HEALTHCARE" }, { 0x2CC260, "Ravello Systems", "RAVELLO" }, { 0x841B5E, "Netgear", "NETGEAR" }, { 0x30B216, "Hytec Geraetebau GmbH", "HYTEC-GERAETEBAU" }, { 0x34FC6F, "ALCEA", "ALCEA" }, { 0x2C36F8, "Cisco Systems, Inc", "CISCO" }, { 0xAC3D05, "Instorescreen Aisa", "INSTORESCREEN-AISA" }, { 0xF48E09, "Nokia Corporation", "NOKIA" }, { 0x882012, "LMI Technologies", "LMI-TECHNOLOGIES" }, { 0x800A06, "COMTEC co.,ltd", "COMTEC" }, { 0xC8F733, "Intel Corporate", "INTEL-CORPORATE" }, { 0x20FABB, "Cambridge Executive Limited", "CAMBRIDGE-EXECUTIVE" }, { 0x1C51B5, "Techaya LTD", "TECHAYA" }, { 0x80DB31, "Power Quotient International Co., Ltd.", "POWER-QUOTIENT" }, { 0xD8BF4C, "Victory Concept Electronics Limited", "VICTORY-CONCEPT-ELECTRONICS" }, { 0xC0DF77, "Conrad Electronic SE", "CONRAD-SE" }, { 0x08EA44, "Aerohive Networks, Inc.", "AEROHIVE-NETWORKS" }, { 0x44B382, "Kuang-chi Institute of Advanced Technology", "KUANG-CHI-INSTITUTE-OF-ADVANCED" }, { 0x344B3D, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xD80DE3, "FXI TECHNOLOGIES AS", "FXI-TECHNOLOGIES-AS" }, { 0x1CE165, "Marshal Corporation", "MARSHAL" }, { 0x0CC0C0, "MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO", "MAGNETI-MARELLI-SISTEMAS-ELECTRONICOS-MEXICO" }, { 0xA0B3CC, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xAC40EA, "C&T Solution Inc. ", "C-T-SOLUTION" }, { 0xC0B357, "Yoshiki Electronics Industry Ltd.", "YOSHIKI-ELECTRONICS-INDUSTRY" }, { 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" }, { 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" }, { 0x3C7DB1, "6278", "6278" }, { 0xFC946C, "UBIVELOX", "UBIVELOX" }, { 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" }, { 0xD4E33F, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xC87D77, "Shenzhen Kingtech Communication Equipment Co.,Ltd", "SHENZHEN-KINGTECH-COMMUNICATION-EQUIPMENT" }, { 0x10C6FC, "Garmin International", "GARMIN" }, { 0xA078BA, "Pantech Co., Ltd.", "PANTECH" }, { 0x20BBC6, "Jabil Circuit Hungary Ltd.", "JABIL-CIRCUIT-HUNGARY" }, { 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" }, { 0xB8E625, "2wire", "2WIRE" }, { 0x70704C, "Purple Communications, Inc", "PURPLE-COMMUNICATION" }, { 0xF47ACC, "SolidFire, Inc.", "SOLIDFIRE" }, { 0xD826B9, "Guangdong Coagent Electronics S &T Co., Ltd.", "GUANGDONG-COAGENT-ELECTRONICS-S-T" }, { 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" }, { 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" }, { 0xB06CBF, "3ality Digital Systems GmbH", "3ALITY-DIGITAL" }, { 0xDCA8CF, "New Spin Golf, LLC.", "NEW-SPIN-GOLF-LLC" }, { 0x34BA9A, "Asiatelco Technologies Co.", "ASIATELCO-TECHNOLOGIES" }, { 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" }, { 0x50CCF8, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xD0CF5E, "Energy Micro AS", "ENERGY-MICRO-AS" }, { 0x644D70, "dSPACE GmbH", "DSPACE" }, { 0x807693, "Newag SA", "NEWAG" }, { 0x2C002C, "UNOWHY", "UNOWHY" }, { 0x0481AE, "Clack Corporation", "CLACK" }, { 0xC09132, "Patriot Memory", "PATRIOT-MEMORY" }, { 0xE4115B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x505663, "6278", "6278" }, { 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" }, { 0x48C1AC, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x24BC82, "Dali Wireless, Inc.", "DALI-WIRELESS" }, { 0xF80CF3, "LG Electronics", "LG-ELECTRONICS" }, { 0xECF00E, "Abocom", "ABOCOM" }, { 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" }, { 0xD4AE52, "Dell Inc", "DELL" }, { 0x046D42, "Bryston Ltd.", "BRYSTON" }, { 0xE84E06, "EDUP INTERNATIONAL (HK) CO., LTD", "EDUP-HK" }, { 0xB4C799, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x70B921, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xC47B2F, "Beijing JoinHope Image Technology Ltd.", "BEIJING-JOINHOPE-IMAGE" }, { 0x44D832, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x18F650, "Multimedia Pacific Limited", "MULTIMEDIA-PACIFIC" }, { 0x704AAE, "Xstream Flow (Pty) Ltd", "XSTREAM-FLOW-PTY" }, { 0xD08CB5, "6278", "6278" }, { 0xB8B42E, "Gionee Communication Equipment Co,Ltd.ShenZhen", "GIONEE-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0xA84041, "Dragino Technology Co., Limited", "DRAGINO" }, { 0x686E23, "Wi3 Inc.", "WI3" }, { 0xDCF05D, "Letta Teknoloji", "LETTA-TEKNOLOJI" }, { 0xD05A0F, "I-BT DIGITAL CO.,LTD", "I-BT-DIGITAL" }, { 0x9439E5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90013B, "SAGEMCOM", "SAGEMCOM" }, { 0x7CDD20, "IOXOS Technologies S.A.", "IOXOS-TECHNOLOGIES" }, { 0x582EFE, "Lighting Science Group", "LIGHTING-SCIENCE-GROUP" }, { 0xD4507A, "CEIVA Logic, Inc", "CEIVA-LOGIC" }, { 0x184617, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x9CC7D1, "SHARP Corporation", "SHARP" }, { 0xAC9CE4, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 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" }, { 0x0C4C39, "Mitrastar Technology ", "MITRASTAR" }, { 0x644346, "GuangDong Quick Network Computer CO.,LTD", "GUANGDONG-QUICK-NETWORK" }, { 0xFCE892, "Hangzhou Lancable Technology Co.,Ltd", "HANGZHOU-LANCABLE" }, { 0x106F3F, "Buffalo Inc.", "BUFFALO" }, { 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" }, { 0xE01E07, "Anite Telecoms US. Inc", "ANITE-TELECOMS-US" }, { 0x64D989, "Cisco Systems, Inc", "CISCO" }, { 0x44D3CA, "Cisco Systems, Inc", "CISCO" }, { 0x84C9B2, "D-Link International", "D-LINK" }, { 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" }, { 0x3C26D5, "Sotera Wireless", "SOTERA-WIRELESS" }, { 0xFC2E2D, "Lorom Industrial Co.LTD.", "LOROM-INDUSTRIAL" }, { 0x6805CA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x980C82, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x48C862, "Simo Wireless,Inc.", "SIMO-WIRELESS" }, { 0x40984E, "6278", "6278" }, { 0xA0E9DB, "Ningbo FreeWings Technologies Co.,Ltd", "NINGBO-FREEWINGS-TECHNOLOGIES" }, { 0x9C7BD2, "NEOLAB Convergence", "NEOLAB-CONVERGENCE" }, { 0x900D66, "Digimore Electronics Co., Ltd", "DIGIMORE-ELECTRONICS" }, { 0x38DE60, "Mohlenhoff GmbH", "MOHLENHOFF" }, { 0x2839E7, "Preceno Technology Pte.Ltd.", "PRECENO-PTE" }, { 0x28D997, "Yuduan Mobile Co., Ltd.", "YUDUAN-MOBILE" }, { 0x40BA61, "Arima Communications Corp.", "ARIMA-COMMUNICATION" }, { 0x886B76, "CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD", "CHINA-HOPEFUL-GROUP-HOPEFUL-ELECTRIC" }, { 0xA0CF5B, "Cisco Systems, Inc", "CISCO" }, { 0x18C451, "Tucson Embedded Systems", "TUCSON-EMBEDDED" }, { 0xF4D9FB, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x584C19, "Chongqing Guohong Technology Development Company Limited", "CHONGQING-GUOHONG-DEVELOPMENT-COMPANY" }, { 0x8C5FDF, "Beijing Railway Signal Factory", "BEIJING-RAILWAY-SIGNAL-FACTORY" }, { 0x78E3B5, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0xC4242E, "Galvanic Applied Sciences Inc", "GALVANIC-APPLIED-SCIENCES" }, { 0x0CD292, "Intel Corporate", "INTEL-CORPORATE" }, { 0x040A83, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xB4AA4D, "Ensequence, Inc.", "ENSEQUENCE" }, { 0xB42A39, "ORBIT MERRET, spol. s r. o.", "ORBIT-MERRET-SPOL-S-R-O" }, { 0xB80B9D, "ROPEX Industrie-Elektronik GmbH", "ROPEX-INDUSTRIE-ELEKTRONIK" }, { 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" }, { 0x547F54, "INGENICO", "INGENICO" }, { 0xA8E018, "Nokia Corporation", "NOKIA" }, { 0x9C934E, "Xerox Corporation", "XEROX" }, { 0xE4DD79, "En-Vision America, Inc.", "EN-VISION-AMERICA" }, { 0x60190C, "RRAMAC", "RRAMAC" }, { 0x34A709, "Trevil srl", "TREVIL-SRL" }, { 0x204E7F, "Netgear", "NETGEAR" }, { 0xF80332, "Khomp", "KHOMP" }, { 0xC40F09, "Hermes electronic GmbH", "HERMES" }, { 0x908D1D, "GH Technologies", "GH-TECHNOLOGIES" }, { 0xCCB55A, "Fraunhofer ITWM", "FRAUNHOFER-ITWM" }, { 0x587521, "CJSC RTSoft", "CJSC-RTSOFT" }, { 0x7C6C39, "PIXSYS SRL", "PIXSYS-SRL" }, { 0x9C5D95, "VTC Electronics Corp.", "VTC-ELECTRONICS" }, { 0x0CF3EE, "EM Microelectronic", "EM-MICROELECTRONIC" }, { 0xF0C27C, "Mianyang Netop Telecom Equipment Co.,Ltd.", "MIANYANG-NETOP-TELECOM-EQUIPMENT" }, { 0xBC35E5, "Hydro Systems Company", "HYDRO-COMPANY" }, { 0x14D64D, "D-Link International", "D-LINK" }, { 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" }, { 0xC89CDC, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 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" }, { 0x44AAE8, "Nanotec Electronic GmbH & Co. KG", "NANOTEC" }, { 0xD8DF0D, "beroNet GmbH", "BERONET" }, { 0xD8C068, "Netgenetech.co.,ltd.", "NETGENETECH" }, { 0x3C9157, "Hangzhou Yulong Conmunication Co.,Ltd", "HANGZHOU-YULONG-CONMUNICATION" }, { 0x50E549, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xA8FCB7, "Consolidated Resource Imaging", "CONSOLIDATED-RESOURCE-IMAGING" }, { 0x6400F1, "Cisco Systems, Inc", "CISCO" }, { 0x04C5A4, "Cisco Systems, Inc", "CISCO" }, { 0x3CA72B, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0xFC2F40, "Calxeda, Inc.", "CALXEDA" }, { 0xEC55F9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xCC5D4E, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xD0EB9E, "Seowoo Inc.", "SEOWOO" }, { 0xDCD321, "HUMAX co.,tld", "HUMAX-TLD" }, { 0xBC99BC, "FonSee Technology Inc.", "FONSEE" }, { 0x986022, "EMW Co., Ltd.", "EMW" }, { 0x803457, "OT Systems Limited", "OT" }, { 0xB83D4E, "Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch", "SHENZHEN-CULTRAVIEW-DIGITAL-SHANGHAI-BRANCH" }, { 0x80B32A, "Alstom Grid", "ALSTOM-GRID" }, { 0xCCF3A5, "Chi Mei Communication Systems, Inc", "CHI-MEI-COMMUNICATION" }, { 0x143E60, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xA47AA4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x948FEE, "Hughes Telematics, Inc.", "HUGHES-TELEMATICS" }, { 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" }, { 0xDC05ED, "Nabtesco Corporation", "NABTESCO" }, { 0xFC8329, "Trei technics", "TREI-TECHNICS" }, { 0x94E848, "FYLDE MICRO LTD", "FYLDE-MICRO" }, { 0xAC5E8C, "Utillink", "UTILLINK" }, { 0x549B12, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xCC7EE7, "Panasonic AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x84DE3D, "Crystal Vision Ltd", "CRYSTAL-VISION" }, { 0xF87B8C, "Amped Wireless", "AMPED-WIRELESS" }, { 0x14FEB5, "Dell Inc", "DELL" }, { 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" }, { 0x1C1448, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x747818, "ServiceAssure", "SERVICEASSURE" }, { 0x200A5E, "Xiangshan Giant Eagle Technology Developing co.,LTD", "XIANGSHAN-GIANT-EAGLE-DEVELOPING" }, { 0x00BB8E, "HME Co., Ltd.", "HME" }, { 0xC0A26D, "Abbott Point of Care", "ABBOTT-POINT-OF-CARE" }, { 0x205B2A, "Private", "PRIVATE" }, { 0x707E43, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x649B24, "V Technology Co., Ltd.", "V" }, { 0x0475F5, "CSST", "CSST" }, { 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" }, { 0x8CDB25, "ESG Solutions", "ESG-SOLUTIONS" }, { 0x3C4A92, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x641A22, "Heliospectra AB", "HELIOSPECTRA-AB" }, { 0x841888, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x08B7EC, "Wireless Seismic", "WIRELESS-SEISMIC" }, { 0xE46449, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x30142D, "Piciorgros GmbH", "PICIORGROS" }, { 0x3017C8, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0xE441E6, "Ottec Technology GmbH", "OTTEC" }, { 0x10E2D5, "Qi Hardware Inc.", "QI-HARDWARE" }, { 0x7CDA84, "Dongnian Networks Inc.", "DONGNIAN-NETWORKS" }, { 0xA036FA, "Ettus Research LLC", "ETTUS-RESEARCH-LLC" }, { 0x3039F2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xA021B7, "Netgear", "NETGEAR" }, { 0xEC836C, "RM Tech Co., Ltd.", "RM-TECH" }, { 0xD01CBB, "Beijing Ctimes Digital Technology Co., Ltd.", "BEIJING-CTIMES-DIGITAL" }, { 0x9481A4, "Azuray Technologies", "AZURAY-TECHNOLOGIES" }, { 0xF8DB7F, "HTC Corporation", "HTC" }, { 0xBCE09D, "Eoslink", "EOSLINK" }, { 0x346F92, "White Rodgers Division", "WHITE-RODGERS-DIVISION" }, { 0xC0C520, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 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" }, { 0x984BE1, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xEC9233, "Eddyfi NDT Inc", "EDDYFI-NDT" }, { 0x745612, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xECE90B, "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH", "SISTEMA-SOLUCOES-ELETRONICAS-LTDA---EASYTECH" }, { 0xA08C9B, "Xtreme Technologies Corp", "XTREME-TECHNOLOGIES" }, { 0x607688, "Velodyne", "VELODYNE" }, { 0x980EE4, "Private", "PRIVATE" }, { 0xA4C0E1, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE828D5, "Cots Technology", "COTS" }, { 0x08D5C0, "Seers Technology Co., Ltd", "SEERS" }, { 0x8CB64F, "Cisco Systems, Inc", "CISCO" }, { 0x6C33A9, "Magicjack LP", "MAGICJACK-LP" }, { 0xBC71C1, "XTrillion, Inc.", "XTRILLION" }, { 0x0C469D, "MS Sedco", "MS-SEDCO" }, { 0xE0E8E8, "Olive Telecommunication Pvt. Ltd", "OLIVE-TELECOMMUNICATION-PVT" }, { 0x40FC89, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0C3C65, "Dome Imaging Inc", "DOME-IMAGING" }, { 0x942053, "Nokia Corporation", "NOKIA" }, { 0xD49C8E, "University of FUKUI", "UNIVERSITY-OF-FUKUI" }, { 0x3C8BFE, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x2CB0DF, "Soliton Technologies Pvt Ltd", "SOLITON-TECHNOLOGIES-PVT" }, { 0x5CF3FC, "IBM Corp", "IBM" }, { 0x18B430, "Nest Labs Inc.", "NEST-LABS" }, { 0xF8769B, "Neopis Co., Ltd.", "NEOPIS" }, { 0x08E672, "JEBSEE ELECTRONICS CO.,LTD.", "JEBSEE-ELECTRONICS" }, { 0xD0A311, "Neuberger Geb¤udeautomation GmbH", "NEUBERGER-GEB¤UDEAUTOMATION" }, { 0x3C5A37, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x0C8D98, "TOP EIGHT IND CORP", "TOP-EIGHT-IND" }, { 0x30493B, "Nanjing Z-Com Wireless Co.,Ltd", "NANJING-Z-COM-WIRELESS" }, { 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" }, { 0x88252C, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xDC4EDE, "SHINYEI TECHNOLOGY CO., LTD.", "SHINYEI" }, { 0x78C6BB, "Innovasic, Inc.", "INNOVASIC" }, { 0xC8A1B6, "Shenzhen Longway Technologies Co., Ltd", "SHENZHEN-LONGWAY-TECHNOLOGIES" }, { 0x641E81, "Dowslake Microsystems", "DOWSLAKE-MICROSYSTEMS" }, { 0x102EAF, "6278", "6278" }, { 0x88ACC1, "Generiton Co., Ltd. ", "GENERITON" }, { 0x58671A, "BARNES&NOBLE.COM", "BARNES-NOBLE-COM" }, { 0x700258, "01DB-METRAVIB", "01DB-METRAVIB" }, { 0xD4E8B2, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x20FDF1, "3COM EUROPE LTD", "3COM" }, { 0x389592, "Beijing Tendyron Corporation", "BEIJING-TENDYRON" }, { 0x705EAA, "Action Target, Inc.", "ACTION-TARGET" }, { 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" }, { 0xBCF2AF, "devolo AG", "DEVOLO" }, { 0x206A8A, "Wistron InfoComm Manufacturing(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-MANUFACTURING-KUNSHAN" }, { 0xF80F41, "Wistron InfoComm(ZhongShan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xDC7B94, "Cisco Systems, Inc", "CISCO" }, { 0x68234B, "Nihon Dengyo Kousaku", "NIHON-DENGYO-KOUSAKU" }, { 0x18422F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0xD48564, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xA4BE61, "EutroVision System, Inc.", "EUTROVISION-SYSTEM" }, { 0xE06290, "Jinan Jovision Science & Technology Co., Ltd.", "JINAN-JOVISION-SCIENCE" }, { 0x68DB96, "OPWILL Technologies CO .,LTD", "OPWILL-TECHNOLOGIES" }, { 0x00F860, "PT. Panggung Electric Citrabuana", "PT-PANGGUNG-ELECTRIC-CITRABUANA" }, { 0xFCEDB9, "Arrayent", "ARRAYENT" }, { 0x44ED57, "Longicorn, inc.", "LONGICORN" }, { 0x38521A, "Alcatel-Lucent 7705", "ALCATEL-LUCENT-7705" }, { 0x3C754A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x888B5D, "Storage Appliance Corporation ", "STORAGE-APPLIANCE" }, { 0xF0F842, "KEEBOX, Inc.", "KEEBOX" }, { 0x78A714, "Amphenol", "AMPHENOL" }, { 0xF0DEF1, "Wistron InfoComm (Kunshan)Co", "WISTRON-INFOCOMM-KUNSHAN" }, { 0xF450EB, "Telechips Inc", "TELECHIPS" }, { 0x988EDD, "TE Connectivity Limerick", "TE-CONNECTIVITY-LIMERICK" }, { 0x98FC11, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0xA40CC3, "Cisco Systems, Inc", "CISCO" }, { 0x34E0D7, "DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD", "DONGGUAN-QISHENG-ELECTRONICS-INDUSTRIAL" }, { 0x40520D, "Pico Technology", "PICO" }, { 0x8C7CB5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x543131, "Raster Vision Ltd", "RASTER-VISION" }, { 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" }, { 0xD43D67, "Carma Industries Inc.", "CARMA-INDUSTRIES" }, { 0x68B599, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00BD27, "Exar Corp.", "EXAR" }, { 0xC8A729, "SYStronics Co., Ltd.", "SYSTRONICS" }, { 0xDC2008, "ASD Electronics Ltd ", "ASD-ELECTRONICS" }, { 0xB4EED4, "6278", "6278" }, { 0xCC8CE3, "6278", "6278" }, { 0x088DC8, "Ryowa Electronics Co.,Ltd", "RYOWA-ELECTRONICS" }, { 0xD491AF, "Electroacustica General Iberica, S.A.", "ELECTROACUSTICA-GENERAL-IBERICA" }, { 0xD86BF7, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x78843C, "Sony Corporation", "SONY" }, { 0x1CDF0F, "Cisco Systems, Inc", "CISCO" }, { 0x34DF2A, "Fujikon Industrial Co.,Limited", "FUJIKON-INDUSTRIAL" }, { 0xC88447, "Beautiful Enterprise Co., Ltd", "BEAUTIFUL" }, { 0x90513F, "Elettronica Santerno SpA", "ELETTRONICA-SANTERNO-SPA" }, { 0x7CA29B, "D.SignT GmbH & Co. KG", "D-SIGNT" }, { 0x34AAEE, "Mikrovisatos Servisas UAB", "MIKROVISATOS-SERVISAS-UAB" }, { 0x7866AE, "ZTEC Instruments, Inc.", "ZTEC-INSTRUMENTS" }, { 0x24AF4A, "Alcatel-Lucent-IPD", "ALCATEL-LUCENT-IPD" }, { 0x78818F, "Server Racks Australia Pty Ltd", "SERVER-RACKS-AUSTRALIA-PTY" }, { 0xE0589E, "Laerdal Medical", "LAERDAL-MEDICAL" }, { 0x6C9CE9, "Nimble Storage", "NIMBLE-STORAGE" }, { 0x905446, "TES ELECTRONIC SOLUTIONS", "TES-SOLUTIONS" }, { 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" }, { 0xEC9B5B, "Nokia Corporation", "NOKIA" }, { 0x2872C5, "Smartmatic Corp", "SMARTMATIC" }, { 0xB8A3E0, "BenRui Technology Co.,Ltd", "BENRUI" }, { 0xB8F732, "Aryaka Networks Inc", "ARYAKA-NETWORKS" }, { 0x0CD502, "Westell", "WESTELL" }, { 0x70828E, "OleumTech Corporation", "OLEUMTECH" }, { 0xFCCF62, "IBM Corp", "IBM" }, { 0xB0E754, "2Wire", "2WIRE" }, { 0xD8E72B, "NetScout Systems, Inc.", "NETSCOUT" }, { 0x78E7D1, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xB09074, "Fulan Electronics Limited", "FULAN-ELECTRONICS" }, { 0x2CA835, "RIM", "RIM" }, { 0x3CE5A6, "Hangzhou H3C Technologies Co., Ltd.", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x94F692, "Geminico co.,Ltd.", "GEMINICO" }, { 0x8C736E, "FUJITSU LIMITED", "FUJITSU" }, { 0x30EFD1, "Alstom Strongwish (Shenzhen) Co., Ltd.", "ALSTOM-STRONGWISH-SHENZHEN" }, { 0x7C2CF3, "Secure Electrans Ltd", "SECURE-ELECTRANS" }, { 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" }, { 0xF445ED, "Portable Innovation Technology Ltd.", "PORTABLE-INNOVATION" }, { 0x6C32DE, "Indieon Technologies Pvt. Ltd.", "INDIEON-TECHNOLOGIES-PVT" }, { 0x40D40E, "Biodata Ltd", "BIODATA" }, { 0x7C051E, "RAFAEL LTD.", "RAFAEL" }, { 0x58570D, "Danfoss Solar Inverters", "DANFOSS-SOLAR-INVERTERS" }, { 0xE47CF9, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x0C826A, "Wuhan Huagong Genuine Optics Technology Co., Ltd", "WUHAN-HUAGONG-GENUINE-OPTICS" }, { 0x5C0E8B, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x38C7BA, "CS Services Co.,Ltd.", "CS-SERVICES" }, { 0x70D57E, "Scalar Corporation", "SCALAR" }, { 0x24A937, "PURE Storage", "PURE-STORAGE" }, { 0x348302, "iFORCOM Co., Ltd", "IFORCOM" }, { 0x28EF01, "Private", "PRIVATE" }, { 0xEC4476, "Cisco Systems, Inc", "CISCO" }, { 0x9CEBE8, "BizLink (Kunshan) Co.,Ltd", "BIZLINK-KUNSHAN" }, { 0xA01859, "Shenzhen Yidashi Electronics Co Ltd", "SHENZHEN-YIDASHI-ELECTRONICS" }, { 0x042234, "Wireless Standard Extensions", "WIRELESS-STANDARD-EXTENSIONS" }, { 0x7812B8, "ORANTEK LIMITED", "ORANTEK" }, { 0x44D63D, "Talari Networks", "TALARI-NETWORKS" }, { 0x74F06D, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 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" }, { 0x180C77, "Westinghouse Electric Company, LLC", "WESTINGHOUSE-ELECTRIC-COMPANY-LLC" }, { 0xACA016, "Cisco Systems, Inc", "CISCO" }, { 0x647BD4, "6278", "6278" }, { 0x78E400, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE4AD7D, "SCL Elements", "SCL-ELEMENTS" }, { 0x1C129D, "IEEE PES PSRC/SUB ", "IEEE-PES-PSRC/SUB" }, { 0xB40832, "TC Communications", "TC-COMMUNICATION" }, { 0xB42CBE, "Direct Payment Solutions Limited", "DIRECT-PAYMENT-SOLUTIONS" }, { 0xF47626, "Viltechmeda UAB ", "VILTECHMEDA-UAB" }, { 0xC03F0E, "Netgear", "NETGEAR" }, { 0x949C55, "Alta Data Technologies", "ALTA-DATA-TECHNOLOGIES" }, { 0x389F83, "OTN Systems N.V.", "OTN-N-V" }, { 0x8C541D, "LGE ", "LGE" }, { 0x601283, "Soluciones Tecnologicas para la Salud y el Bienestar SA", "SOLUCIONES-TECNOLOGICAS-PARA-LA-SALUD-Y-EL-BIENESTAR" }, { 0x003A9D, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0xC835B8, "Ericsson, EAB/RWI/K", "ERICSSON-EAB/RWI/K" }, { 0x304174, "ALTEC LANSING LLC", "ALTEC-LANSING-LLC" }, { 0x7830E1, "UltraClenz, LLC", "ULTRACLENZ-LLC" }, { 0xFCFBFB, "Cisco Systems, Inc", "CISCO" }, { 0x002720, "NEW-SOL COM", "NEW-SOL-COM" }, { 0x00271C, "MERCURY CORPORATION", "MERCURY" }, { 0x002712, "MaxVision LLC", "MAXVISION-LLC" }, { 0x00270F, "Envisionnovation Inc", "ENVISIONNOVATION" }, { 0x502A7E, "Smart electronic GmbH", "SMART" }, { 0xF0264C, "Dr. Sigrist AG", "DR-SIGRIST" }, { 0x3C1CBE, "JADAK LLC", "JADAK-LLC" }, { 0x506313, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA8995C, "aizo ag", "AIZO" }, { 0x4012E4, "Compass-EOS", "COMPASS-EOS" }, { 0xF8DC7A, "Variscite LTD", "VARISCITE" }, { 0x003A9C, "Cisco Systems, Inc", "CISCO" }, { 0xE8E776, "Shenzhen Kootion Technology Co., Ltd", "SHENZHEN-KOOTION" }, { 0xF852DF, "VNL Europe AB", "VNL-EUROPE-AB" }, { 0x1CF061, "SCAPS GmbH", "SCAPS" }, { 0xA893E6, "JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD", "JIANGXI-JINGGANGSHAN-CKING-COMMUNICATION" }, { 0x7825AD, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xE84ECE, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x701A04, "Liteon Tech Corp.", "LITEON-TECH" }, { 0x0CE709, "Fox Crypto B.V.", "FOX-CRYPTO" }, { 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" }, { 0x88ED1C, "Cudo Communication Co., Ltd.", "CUDO-COMMUNICATION" }, { 0xB05B1F, "THERMO FISHER SCIENTIFIC S.P.A.", "THERMO-FISHER-SCIENTIFIC-S-P-A" }, { 0x404A03, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x743256, "NT-ware Systemprg GmbH", "NT-WARE-SYSTEMPRG" }, { 0x003AAF, "BlueBit Ltd.", "BLUEBIT" }, { 0xE4FFDD, "ELECTRON INDIA", "ELECTRON-INDIA" }, { 0x6C8CDB, "Otus Technologies Ltd", "OTUS-TECHNOLOGIES" }, { 0xB4417A, "ShenZhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x401597, "Protect America, Inc.", "PROTECT-AMERICA" }, { 0x3C2DB7, "6278", "6278" }, { 0x60391F, "ABB Ltd", "ABB" }, { 0xA07332, "Cashmaster International Limited", "CASHMASTER" }, { 0x7C7BE4, "Z'SEDAI KENKYUSHO CORPORATION", "Z-SEDAI-KENKYUSHO" }, { 0xC0BAE6, "Application Solutions (Electronics and Vision) Ltd", "APPLICATION-SOLUTIONS-ELECTRONICS-AND-VISION" }, { 0x78929C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x20BFDB, "DVL", "DVL" }, { 0xC87E75, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x889821, "TERAON", "TERAON" }, { 0xCC5076, "Ocom Communications, Inc.", "OCOM-COMMUNICATION" }, { 0x705812, "Panasonic AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0xBC0543, "AVM GmbH", "AVM" }, { 0x5C338E, "Alpha Networkc Inc.", "ALPHA-NETWORKC" }, { 0x002709, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x0026E4, "CANAL OVERSEAS", "CANAL-OVERSEAS" }, { 0x0026B8, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 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" }, { 0x002688, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 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" }, { 0x0025F5, "DVS Korea, Co., Ltd", "DVS-KOREA" }, { 0x0025F0, "Suga Electronics Limited", "SUGA-ELECTRONICS" }, { 0x0026E3, "DTI", "DTI" }, { 0x0026DD, "Fival Science & Technology Co.,Ltd.", "FIVAL-SCIENCE" }, { 0x0026DE, "FDI MATELEC", "FDI-MATELEC" }, { 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" }, { 0x00265D, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x00262B, "Wongs Electronics Co. Ltd.", "WONGS-ELECTRONICS" }, { 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" }, { 0x00258B, "Mellanox Technologies Ltd", "MELLANOX-TECHNOLOGIES" }, { 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" }, { 0x002682, "GemTek Technology Co., Ltd.", "GEMTEK" }, { 0x00267C, "Metz-Werke GmbH & Co KG", "METZ-WERKE" }, { 0x002676, "COMMidt AS", "COMMIDT-AS" }, { 0x002675, "Aztech Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x00266F, "Coordiwise Technology Corp.", "COORDIWISE" }, { 0x002670, "Cinch Connectors", "CINCH-CONNECTORS" }, { 0x002669, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002663, "Shenzhen Huitaiwei Tech. Ltd, co.", "SHENZHEN-HUITAIWEI-TECH" }, { 0x00256F, "Dantherm Power", "DANTHERM-POWER" }, { 0x002562, "interbro Co. Ltd.", "INTERBRO" }, { 0x002561, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x00255C, "NEC Corporation", "NEC" }, { 0x002550, "Riverbed Technology", "RIVERBED" }, { 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" }, { 0x0025D4, "Fortress Technologies", "FORTRESS-TECHNOLOGIES" }, { 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" }, { 0x002493, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002498, "Cisco Systems, Inc", "CISCO" }, { 0x002485, "ConteXtream Ltd", "CONTEXTREAM" }, { 0x002409, "The Toro Company", "THE-TORO-COMPANY" }, { 0x002403, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002404, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0023F7, "Private", "PRIVATE" }, { 0x0023FD, "AFT Atlas Fahrzeugtechnik GmbH", "AFT-ATLAS-FAHRZEUGTECHNIK" }, { 0x0023F6, "Softwell Technology Co., Ltd.", "SOFTWELL" }, { 0x002555, "Visonic Technologies 1993 Ltd", "VISONIC-TECHNOLOGIES-1993" }, { 0x00254F, "ELETTROLAB Srl", "ELETTROLAB-SRL" }, { 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" }, { 0x0024F9, "Cisco Systems, Inc", "CISCO" }, { 0x0024F2, "Uniphone Telecommunication Co., Ltd.", "UNIPHONE-TELECOMMUNICATION" }, { 0x0024F4, "Kaminario Technologies Ltd.", "KAMINARIO-TECHNOLOGIES" }, { 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" }, { 0x00251D, "DSA Encore, LLC", "DSA-ENCORE-LLC" }, { 0x002518, "Power PLUS Communications AG", "POWER-PLUS-COMMUNICATION" }, { 0x002511, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 0x002513, "CXP DIGITAL BV", "CXP-DIGITAL" }, { 0x00250C, "Enertrac", "ENERTRAC" }, { 0x002505, "eks Engel GmbH & Co. KG", "EKS-ENGEL" }, { 0x00244F, "Asantron Technologies Ltd.", "ASANTRON-TECHNOLOGIES" }, { 0x002454, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x002448, "SpiderCloud Wireless, Inc", "SPIDERCLOUD-WIRELESS" }, { 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" }, { 0x002432, "Neostar Technology Co.,LTD", "NEOSTAR" }, { 0x002480, "Meteocontrol GmbH", "METEOCONTROL" }, { 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" }, { 0x002429, "MK MASTER INC.", "MK-MASTER" }, { 0x00241C, "FuGang Electronic (DG) Co.,Ltd", "FUGANG-DG" }, { 0x002423, "AzureWave Technologies (Shanghai) Inc.", "AZUREWAVE-TECHNOLOGIES-SHANGHAI" }, { 0x002428, "EnergyICT", "ENERGYICT" }, { 0x002416, "Any Use", "ANY-USE" }, { 0x002410, "NUETEQ Technology,Inc.", "NUETEQ" }, { 0x0024DA, "Innovar Systems Limited", "INNOVAR" }, { 0x0024CE, "Exeltech Inc", "EXELTECH" }, { 0x0024D3, "QUALICA Inc.", "QUALICA" }, { 0x0024C7, "Mobilarm Ltd", "MOBILARM" }, { 0x0024C1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024C2, "Asumo Co.,Ltd.", "ASUMO" }, { 0x0024BC, "HuRob Co.,Ltd", "HUROB" }, { 0x0024B7, "GridPoint, Inc.", "GRIDPOINT" }, { 0x0024B2, "Netgear", "NETGEAR" }, { 0x002340, "MiX Telematics", "MIX-TELEMATICS" }, { 0x00233A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002339, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x002334, "Cisco Systems, Inc", "CISCO" }, { 0x00232E, "Kedah Electronics Engineering, LLC", "KEDAH-ELECTRONICS-ENGINEERING-LLC" }, { 0x002329, "DDRdrive LLC", "DDRDRIVE-LLC" }, { 0x002326, "FUJITSU LIMITED", "FUJITSU" }, { 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" }, { 0x002396, "ANDES TECHNOLOGY CORPORATION", "ANDES" }, { 0x002395, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002391, "Maxian", "MAXIAN" }, { 0x00238C, "Private", "PRIVATE" }, { 0x002387, "ThinkFlood, Inc.", "THINKFLOOD" }, { 0x002381, "Lengda Technology(Xiamen) Co.,Ltd.", "LENGDA-XIAMEN" }, { 0x002382, "Lih Rong Electronic Enterprise Co., Ltd.", "LIH-RONG" }, { 0x00237B, "WHDI LLC", "WHDI-LLC" }, { 0x002372, "MORE STAR INDUSTRIAL GROUP LIMITED", "MORE-STAR-INDUSTRIAL-GROUP" }, { 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" }, { 0x00235A, "COMPAL INFORMATION (KUNSHAN) CO., Ltd.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x00235F, "Silicon Micro Sensors GmbH", "SILICON-MICRO-SENSORS" }, { 0x002353, "F E T Elettronica snc", "F-E-T-ELETTRONICA-SNC" }, { 0x002347, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x00234C, "KTC AB", "KTC-AB" }, { 0x002282, "8086 Consultancy", "8086-CONSULTANCY" }, { 0x00227C, "Woori SMT Co.,ltd", "WOORI-SMT" }, { 0x002279, "Nippon Conlux Co., Ltd.", "NIPPON-CONLUX" }, { 0x002273, "Techway", "TECHWAY" }, { 0x002274, "FamilyPhone AB", "FAMILYPHONE-AB" }, { 0x00226F, "3onedata Technology Co. Ltd.", "3ONEDATA" }, { 0x00226A, "Honeywell", "HONEYWELL" }, { 0x002260, "AFREEY Inc.", "AFREEY" }, { 0x002265, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002269, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00225B, "Teradici Corporation", "TERADICI" }, { 0x002256, "Cisco Systems, Inc", "CISCO" }, { 0x002255, "Cisco Systems, Inc", "CISCO" }, { 0x0022E1, "ZORT Labs, LLC.", "ZORT-LABS-LLC" }, { 0x0022E2, "WABTEC Transit Division", "WABTEC-TRANSIT-DIVISION" }, { 0x0022DB, "Translogic Corporation", "TRANSLOGIC" }, { 0x0022CF, "PLANEX Communications INC", "PLANEX-COMMUNICATION" }, { 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" }, { 0x0022B4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0022AE, "Mattel Inc.", "MATTEL" }, { 0x0022AD, "TELESIS TECHNOLOGIES, INC.", "TELESIS-TECHNOLOGIES" }, { 0x0022A8, "Ouman Oy", "OUMAN-OY" }, { 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" }, { 0x002310, "LNC Technology Co., Ltd.", "LNC" }, { 0x00230B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002304, "Cisco Systems, Inc", "CISCO" }, { 0x0022FD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0022F4, "AMPAK Technology, Inc.", "AMPAK" }, { 0x0022F3, "SHARP Corporation", "SHARP" }, { 0x0022EE, "Algo Communication Products Ltd", "ALGO-COMMUNICATION-PRODUCTS" }, { 0x0022E7, "WPS Parking Systems", "WPS-PARKING" }, { 0x0023F1, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0023ED, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023E7, "Hinke A/S", "HINKE-A/S" }, { 0x0023EC, "Algorithmix GmbH", "ALGORITHMIX" }, { 0x0023E0, "INO Therapeutics LLC", "INO-THERAPEUTICS-LLC" }, { 0x0023DA, "Industrial Computer Source (Deutschland)GmbH", "INDUSTRIAL-SOURCE-DEUTSCHLAND" }, { 0x0023C8, "TEAM-R", "TEAM-R" }, { 0x0023D4, "6278", "6278" }, { 0x0023C7, "AVSystem", "AVSYSTEM" }, { 0x0023C1, "Securitas Direct AB", "SECURITAS-DIRECT-AB" }, { 0x0023BB, "Schmitt Industries", "SCHMITT-INDUSTRIES" }, { 0x0023BA, "Chroma", "CHROMA" }, { 0x0023B5, "ORTANA LTD", "ORTANA" }, { 0x0023AE, "Dell Inc.", "DELL" }, { 0x0023A8, "Marshall Electronics", "MARSHALL-ELECTRONICS" }, { 0x0023A2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00239B, "Elster Solutions, LLC", "ELSTER-SOLUTIONS-LLC" }, { 0x0021F5, "Western Engravers Supply, Inc.", "WESTERN-ENGRAVERS-SUPPLY" }, { 0x0021EF, "Kapsys", "KAPSYS" }, { 0x0021EE, "Full Spectrum Inc.", "FULL-SPECTRUM" }, { 0x0021DC, "TECNOALARM S.r.l.", "TECNOALARM-S-R-L" }, { 0x0021E2, "Creative Electronic GmbH", "CREATIVE" }, { 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" }, { 0x002136, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x002119, "Samsung Electro-Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x002112, "WISCOM SYSTEM CO.,LTD", "WISCOM-SYSTEM" }, { 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" }, { 0x002183, "VATECH HYDRO", "VATECH-HYDRO" }, { 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" }, { 0x00216A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002164, "Special Design Bureau for Seismic Instrumentation", "SPECIAL-DESIGN-BUREAU-FOR-SEISMIC-INSTRUMENTATION" }, { 0x002109, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002108, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x00224D, "MITAC INTERNATIONAL CORP.", "MITAC" }, { 0x002252, "ZOLL Lifecor Corporation", "ZOLL-LIFECOR" }, { 0x002243, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x002246, "Evoc Intelligent Technology Co.,Ltd.", "EVOC-INTELLIGENT" }, { 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" }, { 0x001FDB, "Network Supply Corp.,", "NETWORK-SUPPLY" }, { 0x001FD1, "OPTEX CO.,LTD.", "OPTEX" }, { 0x001FCA, "Cisco Systems, Inc", "CISCO" }, { 0x001FC5, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001FBE, "Shenzhen Mopnet Industrial Co.,Ltd", "SHENZHEN-MOPNET-INDUSTRIAL" }, { 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" }, { 0x0021FB, "LG Electronics", "LG-ELECTRONICS" }, { 0x0021BD, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0021BC, "ZALA COMPUTER", "ZALA" }, { 0x0021B7, "Lexmark International Inc.", "LEXMARK" }, { 0x0021B0, "Tyco Telecommunications", "TYCO-TELECOMMUNICATIONS" }, { 0x0021AA, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021A4, "Dbii Networks", "DBII-NETWORKS" }, { 0x00219A, "Cambridge Visual Networks Ltd", "CAMBRIDGE-VISUAL-NETWORKS" }, { 0x002196, "Telsey S.p.A.", "TELSEY-S-P-A" }, { 0x001E47, "PT. Hariff Daya Tunggal Engineering", "PT-HARIFF-DAYA-TUNGGAL-ENGINEERING" }, { 0x001E41, "Microwave Communication & Component, Inc.", "MICROWAVE-COMMUNICATION-COMPONENT" }, { 0x001E3A, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001E35, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001E2E, "SIRTI S.p.A.", "SIRTI-S-P-A" }, { 0x001E27, "SBN TECH Co.,Ltd.", "SBN-TECH" }, { 0x001E28, "Lumexis Corporation", "LUMEXIS" }, { 0x001E22, "ARVOO Imaging Products BV", "ARVOO-IMAGING-PRODUCTS" }, { 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" }, { 0x001F95, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001EDC, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0x001EC0, "Microchip Technology Inc.", "MICROCHIP" }, { 0x001EBF, "Haas Automation Inc.", "HAAS-AUTOMATION" }, { 0x001EB9, "Sing Fai Technology Limited", "SING-FAI" }, { 0x001EB2, "LG innotek", "LG-INNOTEK" }, { 0x001EAD, "Wingtech Group Limited", "WINGTECH-GROUP" }, { 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" }, { 0x001E64, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x001E4B, "City Theatrical", "CITY-THEATRICAL" }, { 0x001F2E, "Triangle Research Int'l Pte Ltd", "TRIANGLE-RESEARCH-PTE" }, { 0x001F33, "Netgear Inc.", "NETGEAR" }, { 0x001F2D, "Electro-Optical Imaging, Inc.", "ELECTRO-OPTICAL-IMAGING" }, { 0x001F27, "Cisco Systems, Inc", "CISCO" }, { 0x001F20, "Logitech Europe SA", "LOGITECH-EUROPE" }, { 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" }, { 0x001EFC, "JSC MASSA-K", "JSC-MASSA-K" }, { 0x001F01, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x001EE2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x001F3F, "AVM GmbH", "AVM" }, { 0x001F43, "ENTES ELEKTRONIK", "ENTES-ELEKTRONIK" }, { 0x001F3A, "5572", "5572" }, { 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" }, { 0x001E8D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E8F, "CANON INC.", "CANON" }, { 0x001E87, "Realease Limited", "REALEASE" }, { 0x001E80, "Last Mile Ltd.", "LAST-MILE" }, { 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" }, { 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" }, { 0x001D25, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001D19, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x001D1A, "OvisLink S.A.", "OVISLINK" }, { 0x001D0D, "Sony Computer Entertainment inc.", "SONY-ENTERTAINMENT" }, { 0x001D14, "SPERADTONE INFORMATION TECHNOLOGY LIMITED", "SPERADTONE-INFORMATION" }, { 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" }, { 0x001E0B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001DFE, "Palm, Inc", "PALM" }, { 0x001DF9, "Cybiotronics (Far East) Limited", "CYBIOTRONICS-FAR-EAST" }, { 0x001DF2, "Netflix, Inc.", "NETFLIX" }, { 0x001DEB, "DINEC International", "DINEC" }, { 0x001DEC, "Marusys", "MARUSYS" }, { 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" }, { 0x001CCC, "Research In Motion Limited", "RESEARCH-IN-MOTION" }, { 0x001CCB, "Forth Corporation Public Company Limited", "FORTH-PUBLIC-COMPANY" }, { 0x001CBE, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001CC5, "3Com Ltd", "3COM" }, { 0x001CB9, "KWANG SUNG ELECTRONICS CO., LTD.", "KWANG-SUNG-ELECTRONICS" }, { 0x001D97, "Alertus Technologies LLC", "ALERTUS-TECHNOLOGIES-LLC" }, { 0x001D90, "EMCO Flow Systems", "EMCO-FLOW" }, { 0x001D8B, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x001D84, "Gateway, Inc.", "GATEWAY" }, { 0x001D67, "AMEC", "AMEC" }, { 0x001D6E, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D73, "Buffalo Inc.", "BUFFALO" }, { 0x001D7A, "Wideband Semiconductor, Inc.", "WIDEBAND-SEMICONDUCTOR" }, { 0x001D74, "Tianjin China-Silicon Microelectronics Co., Ltd.", "TIANJIN-CHINA-SILICON-MICROELECTRONICS" }, { 0x001CAF, "Plato Networks Inc.", "PLATO-NETWORKS" }, { 0x001CB4, "Iridium Satellite LLC", "IRIDIUM-SATELLITE-LLC" }, { 0x001CA8, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 0x001C9F, "Razorstream, LLC", "RAZORSTREAM-LLC" }, { 0x001C9A, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001C99, "Shunra Software Ltd.", "SHUNRA-SOFTWARE" }, { 0x001C8C, "DIAL TECHNOLOGY LTD.", "DIAL" }, { 0x001C93, "ExaDigm Inc", "EXADIGM" }, { 0x001C87, "Uriver Inc.", "URIVER" }, { 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" }, { 0x001DCC, "Hetra Secure Solutions", "HETRA-SECURE-SOLUTIONS" }, { 0x001DD3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DC0, "Enphase Energy", "ENPHASE-ENERGY" }, { 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" }, { 0x001D45, "Cisco Systems, Inc", "CISCO" }, { 0x001D08, "JIANGSU YINHE ELECTRONICS CO., LTD", "JIANGSU-YINHE-ELECTRONICS" }, { 0x001D07, "Shenzhen Sang Fei Consumer Communications Co.,Ltd", "SHENZHEN-SANG-FEI-CONSUMER-COMMUNICATION" }, { 0x001D01, "Neptune Digital", "NEPTUNE-DIGITAL" }, { 0x001CFA, "Alarm.com", "ALARM-COM" }, { 0x001CEE, "SHARP Corporation", "SHARP" }, { 0x001CF5, "Wiseblue Technology Limited", "WISEBLUE" }, { 0x001CE8, "Cummins Inc", "CUMMINS" }, { 0x001DB9, "Wellspring Wireless", "WELLSPRING-WIRELESS" }, { 0x001DBA, "Sony Corporation", "SONY" }, { 0x001DB4, "KUMHO ENG CO.,LTD", "KUMHO-ENG" }, { 0x001DAA, "DrayTek Corp.", "DRAYTEK" }, { 0x001DAF, "Nortel", "NORTEL" }, { 0x001D9E, "AXION TECHNOLOGIES", "AXION-TECHNOLOGIES" }, { 0x001DA3, "SabiOso", "SABIOSO" }, { 0x001D9D, "ARTJOY INTERNATIONAL LIMITED", "ARTJOY" }, { 0x001B89, "EMZA Visual Sense Ltd.", "EMZA-VISUAL-SENSE" }, { 0x001B8A, "2M Electronic A/S", "2M-A/S" }, { 0x001B84, "Scan Engineering Telecom", "SCAN-ENGINEERING-TELECOM" }, { 0x001B7D, "CXR Anderson Jacobson", "CXR-ANDERSON-JACOBSON" }, { 0x001B78, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001B71, "Telular Corp.", "TELULAR" }, { 0x001B6A, "Powerwave Technologies Sweden AB", "POWERWAVE-TECHNOLOGIES-SWEDEN-AB" }, { 0x001B65, "China Gridcom Co., Ltd", "CHINA-GRIDCOM" }, { 0x001BE9, "Broadcom Corporation", "BROADCOM" }, { 0x001BE2, "AhnLab,Inc.", "AHNLAB" }, { 0x001BDD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001B5E, "BPL Limited", "BPL" }, { 0x001B59, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001B57, "SEMINDIA SYSTEMS PRIVATE LIMITED", "SEMINDIA-PRIVATE" }, { 0x001B52, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001B46, "Blueone Technology Co.,Ltd", "BLUEONE" }, { 0x001B4B, "SANION Co., Ltd.", "SANION" }, { 0x001B3F, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x001B38, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x001B3A, "SIMS Corp.", "SIMS" }, { 0x001B33, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001B2C, "ATRON electronic GmbH", "ATRON" }, { 0x001B27, "Merlin CSI", "MERLIN-CSI" }, { 0x001B25, "Nortel", "NORTEL" }, { 0x001B20, "TPine Technology", "TPINE" }, { 0x001B19, "IEEE I&M Society TC9", "IEEE-I-M-SOCIETY-TC9" }, { 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" }, { 0x001C43, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001C4A, "AVM GmbH", "AVM" }, { 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" }, { 0x001BBE, "ICOP Digital", "ICOP-DIGITAL" }, { 0x001BB4, "Airvod Limited", "AIRVOD" }, { 0x001BB9, "Elitegroup Computer System Co.", "ELITEGROUP-SYSTEM" }, { 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" }, { 0x001C82, "Genew Technologies", "GENEW-TECHNOLOGIES" }, { 0x001C7D, "Excelpoint Manufacturing Pte Ltd", "EXCELPOINT-MANUFACTURING-PTE" }, { 0x001C73, "Arista Networks, Inc.", "ARISTA-NETWORKS" }, { 0x001C78, "WYPLAY SAS", "WYPLAY-SAS" }, { 0x001C6C, "Jabil Circuit (Guangzhou) Limited", "JABIL-CIRCUIT-GUANGZHOU" }, { 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" }, { 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" }, { 0x001AF5, "PENTAONE. CO., LTD.", "PENTAONE" }, { 0x001AFA, "Welch Allyn, Inc.", "WELCH-ALLYN" }, { 0x001AF0, "Alcatel - IPD", "ALCATEL---IPD" }, { 0x001AEB, "Allied Telesis K.K.", "ALLIED-TELESIS-K-K" }, { 0x001AE4, "Medicis Technologies Corporation", "MEDICIS-TECHNOLOGIES" }, { 0x001AE9, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001ADD, "PePWave Ltd", "PEPWAVE" }, { 0x001AD1, "FARGO CO., LTD.", "FARGO" }, { 0x001AD8, "AlsterAero GmbH", "ALSTERAERO" }, { 0x001998, "SATO CORPORATION", "SATO" }, { 0x00199D, "VIZIO, Inc.", "VIZIO" }, { 0x00198E, "Oticon A/S", "OTICON-A/S" }, { 0x001980, "Gridpoint Systems", "GRIDPOINT" }, { 0x001982, "SmarDTV", "SMARDTV" }, { 0x001987, "Panasonic Mobile Communications Co., Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0x001974, "AboCom Systems, Inc.", "ABOCOM" }, { 0x00197B, "Picotest Corp.", "PICOTEST" }, { 0x001A9F, "A-Link Ltd", "A-LINK" }, { 0x001AA6, "Telefunken Radio Communication Systems GmbH &CO.KG", "TELEFUNKEN-RADIO-COMMUNICATION" }, { 0x001A93, "ERCO Leuchten GmbH", "ERCO-LEUCHTEN" }, { 0x001A98, "Asotel Communication Limited Taiwan Branch", "ASOTEL-COMMUNICATION-TAIWAN-BRANCH" }, { 0x001A8E, "3Way Networks Ltd", "3WAY-NETWORKS" }, { 0x001A89, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001A7D, "cyber-blue(HK)Ltd", "CYBER-BLUE-HK" }, { 0x001A82, "PROBA Building Automation Co.,LTD", "PROBA-BUILDING-AUTOMATION" }, { 0x001A7C, "Hirschmann Multimedia B.V.", "HIRSCHMANN-MULTIMEDIA" }, { 0x001A73, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x001968, "Digital Video Networks(Shanghai) CO. LTD.", "DIGITAL-VIDEO-NETWORKS-SHANGHAI" }, { 0x00196D, "Raybit Systems Korea, Inc", "RAYBIT-KOREA" }, { 0x00196F, "SensoPart GmbH", "SENSOPART" }, { 0x001963, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x00195E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001952, "ACOGITO Co., Ltd", "ACOGITO" }, { 0x001957, "Saafnet Canada Inc.", "SAAFNET-CANADA" }, { 0x001946, "Cianet Industria e Comercio S/A", "CIANET-INDUSTRIA-E-COMERCIO-S/A" }, { 0x00194B, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 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" }, { 0x001AAD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001AAF, "BLUSENS TECHNOLOGY", "BLUSENS" }, { 0x001AB4, "FFEI Ltd.", "FFEI" }, { 0x001AA8, "Mamiya Digital Imaging Co., Ltd.", "MAMIYA-DIGITAL-IMAGING" }, { 0x0019C3, "Qualitrol", "QUALITROL" }, { 0x0019BE, "Altai Technologies Limited", "ALTAI-TECHNOLOGIES" }, { 0x0019BC, "ELECTRO CHANCE SRL", "ELECTRO-CHANCE-SRL" }, { 0x0019B7, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0019B0, "HanYang System", "HANYANG-SYSTEM" }, { 0x0019A4, "Austar Technology (hang zhou) Co.,Ltd", "AUSTAR-HANG-ZHOU" }, { 0x0019A9, "Cisco Systems, Inc", "CISCO" }, { 0x0019AB, "Raycom CO ., LTD", "RAYCOM" }, { 0x001993, "Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea", "CHANGSHU-SWITCHGEAR-MFG-FORMER-CHANGSHU-SWITCHGEA" }, { 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" }, { 0x0019D9, "Zeutschel GmbH", "ZEUTSCHEL" }, { 0x0019CD, "Chengdu ethercom information technology Ltd.", "CHENGDU-ETHERCOM-INFORMATION" }, { 0x0019D4, "ICX Technologies", "ICX-TECHNOLOGIES" }, { 0x0019C8, "AnyDATA Corporation", "ANYDATA" }, { 0x001A78, "ubtos", "UBTOS" }, { 0x001A7B, "Teleco, Inc.", "TELECO" }, { 0x001A71, "Diostech Co., Ltd.", "DIOSTECH" }, { 0x001A6C, "Cisco Systems, Inc", "CISCO" }, { 0x001A65, "Seluxit", "SELUXIT" }, { 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" }, { 0x001A1E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x001A17, "Teak Technologies, Inc.", "TEAK-TECHNOLOGIES" }, { 0x001A19, "Computer Engineering Limited", "ENGINEERING" }, { 0x001A12, "Essilor", "ESSILOR" }, { 0x001A0B, "BONA TECHNOLOGY INC.", "BONA" }, { 0x001A06, "OpVista, Inc.", "OPVISTA" }, { 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" }, { 0x001A2F, "Cisco Systems, Inc", "CISCO" }, { 0x001A34, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0x001A36, "Aipermon GmbH & Co. KG", "AIPERMON" }, { 0x001A25, "DELTA DORE", "DELTA-DORE" }, { 0x001A2A, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x001944, "Fossil Partners, L.P.", "FOSSIL-PARTNERS-L-P" }, { 0x00193F, "RDI technology(Shenzhen) Co.,LTD", "RDI-SHENZHEN" }, { 0x001933, "Strix Systems, Inc.", "STRIX" }, { 0x001938, "UMB Communications Co., Ltd.", "UMB-COMMUNICATION" }, { 0x00192D, "Nokia Corporation", "NOKIA" }, { 0x001921, "Elitegroup Computer System Co.", "ELITEGROUP-SYSTEM" }, { 0x001926, "BitsGen Co., Ltd.", "BITSGEN" }, { 0x001928, "Siemens AG, Transportation Systems", "SIEMENS-TRANSPORTATION" }, { 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" }, { 0x0017F4, "ZERON ALLIANCE", "ZERON-ALLIANCE" }, { 0x0017F9, "Forcom Sp. z o.o.", "FORCOM-SP-Z-O-O" }, { 0x001800, "UNIGRAND LTD", "UNIGRAND" }, { 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" }, { 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" }, { 0x0018B5, "Magna Carta", "MAGNA-CARTA" }, { 0x0018AE, "TVT CO.,LTD", "TVT" }, { 0x0018B0, "Nortel", "NORTEL" }, { 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" }, { 0x001885, "Avigilon Corporation", "AVIGILON" }, { 0x00188C, "Mobile Action Technology Inc.", "MOBILE-ACTION" }, { 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" }, { 0x0018E5, "Adhoco AG", "ADHOCO" }, { 0x0018DE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0018CD, "Erae Electronics Industry Co., Ltd", "ERAE-ELECTRONICS-INDUSTRY" }, { 0x0018D7, "Javad Navigation Systems Inc.", "JAVAD-NAVIGATION" }, { 0x0018D9, "Santosha Internatonal, Inc", "SANTOSHA-INTERNATONAL" }, { 0x0018D2, "High-Gain Antennas LLC", "HIGH-GAIN-ANTENNAS-LLC" }, { 0x0018C1, "Almitec InformĦtica e Comİrcio", "ALMITEC-INFORMĦTICA-E-COMİRCIO" }, { 0x0018C8, "ISONAS Inc.", "ISONAS" }, { 0x0018BC, "ZAO NVP Bolid", "ZAO-NVP-BOLID" }, { 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" }, { 0x001836, "Reliance Electric Limited", "RELIANCE-ELECTRIC" }, { 0x001825, "Private", "PRIVATE" }, { 0x00182A, "Taiwan Video & Monitor", "TAIWAN-VIDEO-MONITOR" }, { 0x001831, "6278", "6278" }, { 0x001823, "Delta Electronics, Inc.", "DELTA-ELECTRONICS" }, { 0x0017E6, "6278", "6278" }, { 0x0017E8, "6278", "6278" }, { 0x0017ED, "WooJooIT Ltd.", "WOOJOOIT" }, { 0x0017D5, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0017DA, "Spans Logic", "SPANS-LOGIC" }, { 0x0017E1, "DACOS Technologies Co., Ltd.", "DACOS-TECHNOLOGIES" }, { 0x0017C9, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0017CB, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x0017D0, "Opticom Communications, LLC", "OPTICOM-COMMUNICATION-LLC" }, { 0x0017C4, "Quanta Microsystems, INC.", "QUANTA-MICROSYSTEMS" }, { 0x00185A, "uControl, Inc.", "UCONTROL" }, { 0x00185F, "TAC Inc.", "TAC" }, { 0x001861, "Ooma, Inc.", "OOMA" }, { 0x001866, "Leutron Vision", "LEUTRON-VISION" }, { 0x001692, "Scientific-Atlanta, Inc.", "SCIENTIFIC-ATLANTA" }, { 0x001694, "Sennheiser Communications A/S", "SENNHEISER-COMMUNICATION-A/S" }, { 0x00168D, "KORWIN CO., Ltd.", "KORWIN" }, { 0x001686, "Karl Storz Imaging", "KARL-STORZ-IMAGING" }, { 0x00167F, "Bluebird Soft Inc.", "BLUEBIRD-SOFT" }, { 0x001681, "Vector Informatik GmbH", "VECTOR-INFORMATIK" }, { 0x00167A, "Skyworth Overseas Dvelopment Ltd.", "SKYWORTH-OVERSEAS-DVELOPMENT" }, { 0x001674, "EuroCB (Phils.), Inc.", "EUROCB-PHILS" }, { 0x00166B, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x00166D, "Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN-LT" }, { 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" }, { 0x0016BD, "ATI Industrial Automation", "ATI-INDUSTRIAL-AUTOMATION" }, { 0x0016C2, "Avtec Systems Inc", "AVTEC" }, { 0x0016BB, "Law-Chain Computer Technology Co Ltd", "LAW-CHAIN" }, { 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" }, { 0x001672, "Zenway enterprise ltd", "ZENWAY" }, { 0x00166C, "Samsung Electonics Digital Video System Division", "SAMSUNG-ELECTONICS-DIGITAL-VIDEO-SYSTEM-DIVISION" }, { 0x001666, "Quantier Communication Inc.", "QUANTIER-COMMUNICATION" }, { 0x00165F, "Fairmount Automation", "FAIRMOUNT-AUTOMATION" }, { 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" }, { 0x0016F9, "CETRTA POT, d.o.o., Kranj", "CETRTA-POT-D-O-O-KRANJ" }, { 0x0016F2, "Dmobile System Co., Ltd.", "DMOBILE-SYSTEM" }, { 0x0016F7, "L-3 Communications, Aviation Recorders", "L-3-COMMUNICATION-AVIATION-RECORDERS" }, { 0x0016EB, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0016E6, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 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" }, { 0x001722, "Hanazeder Electronic GmbH", "HANAZEDER" }, { 0x00171B, "Innovation Lab Corp.", "INNOVATION-LAB" }, { 0x001714, "BR Controls Nederland bv", "BR-CONTROLS-NEDERLAND" }, { 0x001716, "Qno Technology Inc.", "QNO" }, { 0x00170F, "Cisco Systems, Inc", "CISCO" }, { 0x001705, "Methode Electronics", "METHODE-ELECTRONICS" }, { 0x00170A, "INEW DIGITAL COMPANY", "INEW-DIGITAL-COMPANY" }, { 0x00179B, "Chant Sincere CO., LTD.", "CHANT-SINCERE" }, { 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" }, { 0x00174D, "DYNAMIC NETWORK FACTORY, INC.", "DYNAMIC-NETWORK-FACTORY" }, { 0x001741, "DEFIDEV", "DEFIDEV" }, { 0x001733, "SFR", "SFR" }, { 0x001735, "Private", "PRIVATE" }, { 0x00173A, "Reach Systems Inc.", "REACH" }, { 0x00172E, "FXC Inc.", "FXC" }, { 0x001727, "Thermo Ramsey Italia s.r.l.", "THERMO-RAMSEY-ITALIA-S-R-L" }, { 0x001760, "Naito Densei Machida MFG.CO.,LTD", "NAITO-DENSEI-MACHIDA-MFG" }, { 0x001765, "Nortel", "NORTEL" }, { 0x001767, "Earforce AS", "EARFORCE-AS" }, { 0x001759, "Cisco Systems, Inc", "CISCO" }, { 0x001754, "Arkino HiTOP Corporation Limited", "ARKINO-HITOP" }, { 0x001746, "Freedom9 Inc.", "FREEDOM9" }, { 0x001748, "Neokoros Brasil Ltda", "NEOKOROS-BRASIL-LTDA" }, { 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" }, { 0x001526, "Remote Technologies Inc", "REMOTE-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x001563, "Cisco Systems, Inc", "CISCO" }, { 0x00160D, "Be Here Corporation", "BE-HERE" }, { 0x001606, "Ideal Industries", "IDEAL-INDUSTRIES" }, { 0x0015FA, "Cisco Systems, Inc", "CISCO" }, { 0x001601, "Buffalo Inc.", "BUFFALO" }, { 0x0015F5, "Sustainable Energy Systems", "SUSTAINABLE-ENERGY" }, { 0x0015F4, "Eventide", "EVENTIDE" }, { 0x0015EE, "Omnex Control Systems", "OMNEX-CONTROL" }, { 0x0015F3, "PELTOR AB", "PELTOR-AB" }, { 0x001502, "BETA tech", "BETA-TECH" }, { 0x001509, "Plus Technology Co., Ltd", "PLUS" }, { 0x0014FD, "Thecus Technology Corp.", "THECUS" }, { 0x0014F6, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 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" }, { 0x0014E6, "AIM Infrarotmodule GmbH", "AIM-INFRAROTMODULE" }, { 0x00163D, "Tsinghua Tongfang Legend Silicon Tech. Co., Ltd.", "TSINGHUA-TONGFANG-LEGEND-SILICON-TECH" }, { 0x001636, "Quanta Computer Inc.", "QUANTA" }, { 0x001631, "Xteam", "XTEAM" }, { 0x00162F, "Geutebrĵck GmbH", "GEUTEBRĵCK" }, { 0x001630, "Vativ Technologies", "VATIV-TECHNOLOGIES" }, { 0x00162A, "Antik computers & communications s.r.o.", "ANTIK-COMPUTERS-COMMUNICATION-S-R-O" }, { 0x001623, "Interval Media", "INTERVAL-MEDIA" }, { 0x001617, "MSI", "MSI" }, { 0x00161E, "Woojinnet", "WOOJINNET" }, { 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" }, { 0x0014AB, "Senhai Electronic Technology Co., Ltd.", "SENHAI" }, { 0x0014B0, "Naeil Community", "NAEIL-COMMUNITY" }, { 0x00155C, "Dresser Wayne", "DRESSER-WAYNE" }, { 0x001557, "Olivetti", "OLIVETTI" }, { 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" }, { 0x001598, "Kolektor group", "KOLEKTOR-GROUP" }, { 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" }, { 0x0015D1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015C5, "Dell Inc", "DELL" }, { 0x001458, "HS Automatic ApS", "HS-AUTOMATIC-APS" }, { 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" }, { 0x00142F, "WildPackets", "WILDPACKETS" }, { 0x001479, "NEC Magnus Communications,Ltd.", "NEC-MAGNUS-COMMUNICATION" }, { 0x00147E, "InnerWireless", "INNERWIRELESS" }, { 0x001478, "ShenZhen TP-LINK Technologies Co., Ltd.", "SHENZHEN-TP-LINK-TECHNOLOGIES" }, { 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" }, { 0x0014B4, "General Dynamics United Kingdom Ltd", "GENERAL-DYNAMICS-UNITED-KINGDOM" }, { 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" }, { 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" }, { 0x001349, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x001343, "Matsushita Electronic Components (Europe) GmbH", "MATSUSHITA-COMPONENTS-EUROPE" }, { 0x00133D, "Micro Memory Curtiss Wright Co", "MICRO-MEMORY-CURTISS-WRIGHT" }, { 0x00132A, "Sitronics Telecom Solutions", "SITRONICS-TELECOM-SOLUTIONS" }, { 0x001331, "CellPoint Connect", "CELLPOINT-CONNECT" }, { 0x001336, "Tianjin 712 Communication Broadcasting co., ltd.", "TIANJIN-712-COMMUNICATION-BROADCASTING" }, { 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" }, { 0x001397, "Oracle Corporation ", "ORACLE" }, { 0x00139E, "Ciara Technologies Inc.", "CIARA-TECHNOLOGIES" }, { 0x00139D, "Marvell Hispana S.L.", "MARVELL-HISPANA-S-L" }, { 0x00142A, "Elitegroup Computer System Co., Ltd", "ELITEGROUP-SYSTEM" }, { 0x001423, "J-S Co. NEUROCOM", "J-S-NEUROCOM" }, { 0x001419, "SIDSA", "SIDSA" }, { 0x001412, "S-TEC electronics AG", "S-TEC-ELECTRONICS" }, { 0x00140D, "Nortel", "NORTEL" }, { 0x001404, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 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" }, { 0x001368, "Saab Danmark A/S", "SAAB-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" }, { 0x0013C7, "IONOS Co.,Ltd.", "IONOS" }, { 0x001324, "Schneider Electric Ultra Terminal", "SCHNEIDER-ELECTRIC-ULTRA-TERMINAL" }, { 0x001320, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x0011FF, "Digitro Tecnologia Ltda", "DIGITRO-TECNOLOGIA-LTDA" }, { 0x0011FA, "Rane Corporation", "RANE" }, { 0x0011F9, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0011F5, "ASKEY COMPUTER CORP.", "ASKEY" }, { 0x0011F0, "Wideful Limited", "WIDEFUL" }, { 0x0011EF, "Conitec Datensysteme GmbH", "CONITEC-DATENSYSTEME" }, { 0x0011E9, "STARNEX CO., LTD.", "STARNEX" }, { 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" }, { 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" }, { 0x001187, "Category Solutions, Inc", "CATEGORY-SOLUTIONS" }, { 0x001182, "IMI Norgren Ltd", "IMI-NORGREN" }, { 0x00122F, "Sanei Electric Inc.", "SANEI-ELECTRIC" }, { 0x001235, "Andrew Corporation", "ANDREW" }, { 0x00122B, "Virbiage Pty Ltd", "VIRBIAGE-PTY" }, { 0x001225, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00121E, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 0x001219, "Ahead Communication Systems Inc", "AHEAD-COMMUNICATION" }, { 0x001212, "PLUS Corporation", "PLUS" }, { 0x001206, "iQuest (NZ) Ltd", "IQUEST-NZ" }, { 0x00120B, "Chinasys Technologies Limited", "CHINASYS-TECHNOLOGIES" }, { 0x00120C, "CE-Infosys Pte Ltd", "CE-INFOSYS-PTE" }, { 0x001264, "daum electronic gmbh", "DAUM" }, { 0x00125A, "Microsoft Corporation", "MICROSOFT" }, { 0x00125F, "AWIND Inc.", "AWIND" }, { 0x001255, "NetEffect Incorporated", "NETEFFECT-INCORPORATED" }, { 0x00124E, "XAC AUTOMATION CORP.", "XAC-AUTOMATION" }, { 0x001247, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x001248, "EMC Corporation (Kashya)", "EMC-KASHYA" }, { 0x001242, "Millennial Net", "MILLENNIAL-NET" }, { 0x001236, "ConSentry Networks", "CONSENTRY-NETWORKS" }, { 0x00123B, "KeRo Systems ApS", "KERO-APS" }, { 0x0012FA, "THX LTD", "THX" }, { 0x001301, "IronGate S.L.", "IRONGATE-S-L" }, { 0x001307, "Paravirtual Corporation", "PARAVIRTUAL" }, { 0x0012F5, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0012F0, "Intel Corporate", "INTEL-CORPORATE" }, { 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-+" }, { 0x001283, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 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" }, { 0x0011AB, "TRUSTABLE TECHNOLOGY CO.,LTD.", "TRUSTABLE" }, { 0x0011B0, "Fortelink Inc.", "FORTELINK" }, { 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" }, { 0x00128A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x0012AF, "ELPRO Technologies", "ELPRO-TECHNOLOGIES" }, { 0x000F77, "DENTUM CO.,LTD", "DENTUM" }, { 0x000F71, "Sanmei Electronics Co.,Ltd", "SANMEI-ELECTRONICS" }, { 0x000F78, "Datacap Systems Inc", "DATACAP" }, { 0x000F6A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000F65, "icube Corp.", "ICUBE" }, { 0x000F5E, "Veo", "VEO" }, { 0x000F58, "Adder Technology Limited", "ADDER" }, { 0x000F52, "YORK Refrigeration, Marine & Controls", "YORK-REFRIGERATION-MARINE-CONTROLS" }, { 0x000F57, "CABLELOGIC Co., Ltd.", "CABLELOGIC" }, { 0x000F45, "Stretch, Inc.", "STRETCH" }, { 0x000F4B, "Oracle Corporation (possible Virtual Iron VM)", "ORACLE-VIRTUAL" }, { 0x000F46, "SINAR AG", "SINAR" }, { 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" }, { 0x000F1F, "Dell Inc", "DELL" }, { 0x000F24, "Cisco Systems, Inc", "CISCO" }, { 0x000F12, "Panasonic Europe Ltd.", "PANASONIC-EUROPE" }, { 0x000F11, "Prodrive B.V.", "PRODRIVE" }, { 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" }, { 0x000F7D, "Xirrus", "XIRRUS" }, { 0x000F84, "Astute Networks, Inc.", "ASTUTE-NETWORKS" }, { 0x000F18, "Industrial Control Systems", "INDUSTRIAL-CONTROL" }, { 0x000F0C, "SYNCHRONIC ENGINEERING", "SYNCHRONIC-ENGINEERING" }, { 0x000EFF, "Megasolution,Inc.", "MEGASOLUTION" }, { 0x000F00, "Legra Systems, Inc.", "LEGRA" }, { 0x000F05, "3B SYSTEM INC.", "3B-SYSTEM" }, { 0x000EF9, "REA Elektronik GmbH", "REA-ELEKTRONIK" }, { 0x000EF2, "Infinico Corporation", "INFINICO" }, { 0x000EED, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x000FD1, "Applied Wireless Identifications Group, Inc.", "APPLIED-WIRELESS-IDENTIFICATIONS-GROUP" }, { 0x000FD2, "EWA Technologies, Inc.", "EWA-TECHNOLOGIES" }, { 0x000FCB, "3Com Ltd", "3COM" }, { 0x000FC4, "NST co.,LTD.", "NST" }, { 0x000FBF, "DGT Sp. z o.o.", "DGT-SP-Z-O-O" }, { 0x000FB8, "CallURL Inc.", "CALLURL" }, { 0x000FB2, "Broadband Pacenet (India) Pvt. Ltd.", "BROADBAND-PACENET-INDIA-PVT" }, { 0x000FA5, "BWA Technology GmbH", "BWA" }, { 0x000FAC, "IEEE 802.11", "IEEE-802-11" }, { 0x000FB1, "Cognio Inc.", "COGNIO" }, { 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" }, { 0x001111, "Intel Corporation", "INTEL" }, { 0x001118, "BLX IC Design Corp., Ltd.", "BLX-IC-DESIGN" }, { 0x00110C, "Atmark Techno, Inc.", "ATMARK-TECHNO" }, { 0x001105, "Sunplus Technology Co., Ltd.", "SUNPLUS" }, { 0x000FF9, "Valcretec, Inc.", "VALCRETEC" }, { 0x000FFA, "Optinel Systems, Inc.", "OPTINEL" }, { 0x000FFF, "Control4", "CONTROL4" }, { 0x000FF1, "nex-G Systems Pte.Ltd", "NEX-G-PTE" }, { 0x000FF6, "Darfon Electronics Corp.", "DARFON-ELECTRONICS" }, { 0x000FE4, "Pantech Co.,Ltd", "PANTECH" }, { 0x000FEA, "Giga-Byte Technology Co.,LTD.", "GIGA-BYTE" }, { 0x000FDE, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x000FE3, "Damm Cellular Systems A/S", "DAMM-CELLULAR-A/S" }, { 0x000FD7, "Harman Music Group", "HARMAN-MUSIC-GROUP" }, { 0x001181, "InterEnergy Co.Ltd,", "INTERENERGY" }, { 0x00117B, "Bĵchi Labortechnik AG", "BĵCHI-LABORTECHNIK" }, { 0x001174, "Wibhu Technologies, Inc.", "WIBHU-TECHNOLOGIES" }, { 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" }, { 0x001158, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 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" }, { 0x000D8C, "Shanghai Wedone Digital Ltd. CO.", "SHANGHAI-WEDONE-DIGITAL" }, { 0x000D8B, "T&D Corporation", "T-D" }, { 0x000D92, "Arima Communication Corporation", "ARIMA-COMMUNICATION" }, { 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" }, { 0x000D38, "NISSIN INC.", "NISSIN" }, { 0x000D32, "DispenseSource, Inc.", "DISPENSESOURCE" }, { 0x000D31, "Compellent Technologies, Inc.", "COMPELLENT-TECHNOLOGIES" }, { 0x000D2C, "Patapsco Designs Ltd", "PATAPSCO-DESIGNS" }, { 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" }, { 0x000EAB, "Cray Inc", "CRAY" }, { 0x000EA5, "BLIP Systems", "BLIP" }, { 0x000E9F, "TEMIC SDS GmbH", "TEMIC-SDS" }, { 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" }, { 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" }, { 0x000DB2, "Ammasso, Inc.", "AMMASSO" }, { 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" }, { 0x000E03, "Emulex Corporation", "EMULEX" }, { 0x000DF1, "IONIX INC.", "IONIX" }, { 0x000DEB, "CompXs Limited", "COMPXS" }, { 0x000DF2, "Private", "PRIVATE" }, { 0x000DE4, "DIGINICS, Inc.", "DIGINICS" }, { 0x000DDF, "Japan Image & Network Inc.", "JAPAN-IMAGE-NETWORK" }, { 0x000DD2, "Simrad Optronics ASA", "SIMRAD-OPTRONICS-ASA" }, { 0x000E74, "Solar Telecom. Tech", "SOLAR-TELECOM-TECH" }, { 0x000E79, "Ample Communications Inc.", "AMPLE-COMMUNICATION" }, { 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" }, { 0x000E59, "SAGEM SA", "SAGEM" }, { 0x000E52, "Optium Corporation", "OPTIUM" }, { 0x000E46, "Niigata Seimitsu Co.,Ltd.", "NIIGATA-SEIMITSU" }, { 0x000E4D, "Numesa Inc.", "NUMESA" }, { 0x000D6B, "Mita-Teknik A/S", "MITA-TEKNIK-A/S" }, { 0x000D72, "2Wire, Inc", "2WIRE" }, { 0x000D65, "Cisco Systems, Inc", "CISCO" }, { 0x000D5F, "Minds Inc", "MINDS" }, { 0x000D66, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 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" }, { 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" }, { 0x000E40, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000E3F, "Soronti, Inc.", "SORONTI" }, { 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" }, { 0x000E1E, "QLogic Corporation", "QLOGIC" }, { 0x000E25, "Hannae Technology Co., Ltd", "HANNAE" }, { 0x000E18, "MyA Technology", "MYA" }, { 0x000E17, "Private", "PRIVATE" }, { 0x000E0E, "ESA elettronica S.P.A.", "ESA-ELETTRONICA-S-P-A" }, { 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" }, { 0x000CB2, "UNION co., ltd.", "UNION" }, { 0x000CB7, "Nanjing Huazhuo Electronics Co., Ltd.", "NANJING-HUAZHUO-ELECTRONICS" }, { 0x000CBE, "Innominate Security Technologies AG", "INNOMINATE-SECURITY-TECHNOLOGIES" }, { 0x000CC3, "BeWAN systems", "BEWAN" }, { 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" }, { 0x000C7E, "Tellium Incorporated", "TELLIUM-INCORPORATED" }, { 0x000C81, "Schneider Electric (Australia) ", "SCHNEIDER-ELECTRIC-AUSTRALIA" }, { 0x000B6F, "Media Streaming Networks Inc", "MEDIA-STREAMING-NETWORKS" }, { 0x000B76, "ET&T Technology Co. Ltd.", "ET-T" }, { 0x000B5E, "Audio Engineering Society Inc.", "AUDIO-ENGINEERING-SOCIETY" }, { 0x000B63, "Kaleidescape", "KALEIDESCAPE" }, { 0x000B6A, "Asiarock Incorporation", "ASIAROCK-INCORPORATION" }, { 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" }, { 0x000C86, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x000C4E, "Winbest Technology CO,LT", "WINBEST-LT" }, { 0x000C53, "Private", "PRIVATE" }, { 0x000BA5, "Quasar Cipta Mandiri, PT", "QUASAR-CIPTA-MANDIRI-PT" }, { 0x000BAA, "Aiphone co.,Ltd", "AIPHONE" }, { 0x000B9E, "Yasing Technology Corp.", "YASING" }, { 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" }, { 0x000C15, "CyberPower Systems, Inc.", "CYBERPOWER" }, { 0x000C09, "Hitachi IE Systems Co., Ltd", "HITACHI-IE" }, { 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" }, { 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" }, { 0x000CB1, "Salland Engineering (Europe) BV", "SALLAND-ENGINEERING-EUROPE" }, { 0x000BE9, "Actel Corporation", "ACTEL" }, { 0x000BD7, "DORMA Time + Access GmbH", "DORMA-TIME-+-ACCESS" }, { 0x000BDC, "AKCP", "AKCP" }, { 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" }, { 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" }, { 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" }, { 0x000967, "Tachyon, Inc", "TACHYON" }, { 0x00096E, "GIANT ELECTRONICS LTD.", "GIANT-ELECTRONICS" }, { 0x000AD9, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x000AC8, "ZPSYS CO.,LTD. (Planning&Management)", "ZPSYS-PLANNING-MANAGEMENT" }, { 0x000ACD, "Sunrich Technology Limited", "SUNRICH" }, { 0x000AD4, "CoreBell Systems Inc.", "COREBELL" }, { 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" }, { 0x0009BF, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0009C3, "NETAS", "NETAS" }, { 0x0009B9, "Action Imaging Solutions", "ACTION-IMAGING-SOLUTIONS" }, { 0x0009BA, "MAKU Informationstechik GmbH", "MAKU-INFORMATIONSTECHIK" }, { 0x0009B3, "MCM Systems Ltd", "MCM" }, { 0x0009AC, "LANVOICE", "LANVOICE" }, { 0x0009A7, "Bang & Olufsen A/S", "BANG-OLUFSEN-A/S" }, { 0x00099A, "ELMO COMPANY, LIMITED", "ELMO-COMPANY" }, { 0x0009A0, "Microtechno Corporation", "MICROTECHNO" }, { 0x000A8F, "Aska International Inc.", "ASKA" }, { 0x000A94, "ShangHai cellink CO., LTD", "SHANGHAI-CELLINK" }, { 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" }, { 0x0009F9, "ART JAPAN CO., LTD.", "ART-JAPAN" }, { 0x000A03, "ENDESA SERVICIOS, S.L.", "ENDESA-SERVICIOS-S-L" }, { 0x0009FC, "IPFLEX Inc.", "IPFLEX" }, { 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" }, { 0x000B33, "Vivato Technologies", "VIVATO-TECHNOLOGIES" }, { 0x000B3A, "QuStream Corporation", "QUSTREAM" }, { 0x000B3F, "Anthology Solutions Inc.", "ANTHOLOGY-SOLUTIONS" }, { 0x000B27, "Scion Corporation", "SCION" }, { 0x000B2E, "Cal-Comp Electronics (Thailand) Public Company Limited Taipe", "CAL-COMP-ELECTRONICS-THAILAND-PUBLIC-COMPANY-TAIPE" }, { 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" }, { 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" }, { 0x000A61, "Cellinx Systems Inc.", "CELLINX" }, { 0x000A68, "SolarFlare Communications, Inc.", "SOLARFLARE-COMMUNICATION" }, { 0x000A5C, "Carel s.p.a.", "CAREL-S-P-A" }, { 0x000A50, "REMOTEK CORPORATION", "REMOTEK" }, { 0x000A55, "MARKEM Corporation", "MARKEM" }, { 0x000A4E, "UNITEK Electronics INC.", "UNITEK-ELECTRONICS" }, { 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" }, { 0x000A42, "Cisco Systems, Inc", "CISCO" }, { 0x000A2F, "Artnix Inc.", "ARTNIX" }, { 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" }, { 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" }, { 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" }, { 0x000850, "Arizona Instrument Corp.", "ARIZONA-INSTRUMENT" }, { 0x000856, "Gamatronic Electronic Industries Ltd.", "GAMATRONIC-INDUSTRIES" }, { 0x000827, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 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" }, { 0x00092D, "HTC Corporation", "HTC" }, { 0x00092E, "B&Tech System Inc.", "B-TECH-SYSTEM" }, { 0x000927, "TOYOKEIKI CO.,LTD.", "TOYOKEIKI" }, { 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" }, { 0x000901, "Shenzhen Shixuntong Information & Technoligy Co", "SHENZHEN-SHIXUNTONG-INFORMATION-TECHNOLIGY" }, { 0x00088F, "ADVANCED DIGITAL TECHNOLOGY", "ADVANCED-DIGITAL" }, { 0x000894, "InnoVISION Multimedia Ltd.", "INNOVISION-MULTIMEDIA" }, { 0x000888, "OULLIM Information Technology Inc,.", "OULLIM-INFORMATION" }, { 0x000882, "SIGMA CORPORATION", "SIGMA" }, { 0x000875, "Acorp Electronics Corp.", "ACORP-ELECTRONICS" }, { 0x00087C, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x0007F9, "Sensaphone", "SENSAPHONE" }, { 0x0007EC, "Cisco Systems, Inc", "CISCO" }, { 0x0007F3, "Thinkengine Networks", "THINKENGINE-NETWORKS" }, { 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" }, { 0x0007CB, "Freebox SA", "FREEBOX" }, { 0x0007CA, "Creatix Polymedia Ges Fur Kommunikaitonssysteme", "CREATIX-POLYMEDIA-GES-FUR-KOMMUNIKAITONSSYSTEME" }, { 0x0008F9, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 0x0008FC, "Gigaphoton Inc.", "GIGAPHOTON" }, { 0x0008F4, "Bluetake Technology Co., Ltd.", "BLUETAKE" }, { 0x0008EB, "ROMWin Co.,Ltd.", "ROMWIN" }, { 0x0008DF, "Alistel Inc.", "ALISTEL" }, { 0x0008E4, "Envenergy Inc", "ENVENERGY" }, { 0x0008D8, "Dowkey Microwave", "DOWKEY-MICROWAVE" }, { 0x0008D2, "ZOOM Networks Inc.", "ZOOM-NETWORKS" }, { 0x0008CC, "Remotec, Inc.", "REMOTEC" }, { 0x0008D1, "KAREL INC.", "KAREL" }, { 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" }, { 0x00093A, "Molex Fiber Optics", "MOLEX-FIBER-OPTICS" }, { 0x000933, "Ophit Co.Ltd.", "OPHIT" }, { 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" }, { 0x0007C4, "JEAN Co. Ltd.", "JEAN" }, { 0x0007BE, "DataLogic SpA", "DATALOGIC-SPA" }, { 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" }, { 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" }, { 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" }, { 0x0006C8, "Sumitomo Metal Micro Devices, Inc.", "SUMITOMO-METAL-MICRO-DEVICES" }, { 0x000716, "J & S Marine Ltd.", "J-S-MARINE" }, { 0x00071B, "CDVI Americas Ltd", "CDVI-AMERICAS" }, { 0x000722, "The Nielsen Company", "THE-NIELSEN-COMPANY" }, { 0x00071C, "AT&T Fixed Wireless Services", "AT-T-FIXED-WIRELESS-SERVICES" }, { 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" }, { 0x0006F4, "Prime Electronics & Satellitics Inc.", "PRIME-ELECTRONICS-SATELLITICS" }, { 0x000705, "Endress & Hauser GmbH & Co", "ENDRESS-HAUSER" }, { 0x0006F8, "The Boeing Company", "THE-BOEING-COMPANY" }, { 0x0006FD, "Comjet Information Systems Corp.", "COMJET-INFORMATION" }, { 0x0006FF, "Sheba Systems Co., Ltd.", "SHEBA" }, { 0x000626, "MWE GmbH", "MWE" }, { 0x00061D, "MIP Telecom, Inc.", "MIP-TELECOM" }, { 0x000623, "MGE UPS Systems France", "MGE-UPS-FRANCE" }, { 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" }, { 0x0005EE, "Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR", "SIEMENS-AB-INFRASTRUCTURE-CITIES-BUILDING-TECHNOLOGIES-DIVISION-IC-BT-SSP-SP-BA-PR" }, { 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" }, { 0x00055A, "Power Dsine Ltd.", "POWER-DSINE" }, { 0x000650, "Tiburon Networks, Inc.", "TIBURON-NETWORKS" }, { 0x00065C, "Malachite Technologies, Inc.", "MALACHITE-TECHNOLOGIES" }, { 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" }, { 0x0006C3, "Schindler Elevator Ltd.", "SCHINDLER-ELEVATOR" }, { 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" }, { 0x0005B0, "Korea Computer Technology Co., Ltd.", "KOREA" }, { 0x0005B6, "INSYS Microelectronics GmbH", "INSYS-MICROELECTRONICS" }, { 0x00059C, "Kleinknecht GmbH, Ing. Bĵro", "KLEINKNECHT-ING-BĵRO" }, { 0x0005A2, "CELOX Networks", "CELOX-NETWORKS" }, { 0x0005AC, "Northern Digital, Inc.", "NORTHERN-DIGITAL" }, { 0x000589, "National Datacomputer", "NATIONAL-DATACOMPUTER" }, { 0x000595, "Alesis Corporation", "ALESIS" }, { 0x000596, "Genotech Co., Ltd.", "GENOTECH" }, { 0x00058F, "CLCsoft co.", "CLCSOFT" }, { 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" }, { 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" }, { 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" }, { 0x000379, "Proscend Communications, Inc.", "PROSCEND-COMMUNICATION" }, { 0x0002F0, "AME Optimedia Technology Co., Ltd.", "AME-OPTIMEDIA" }, { 0x0003E0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x0004D9, "Titan Electronics, Inc.", "TITAN-ELECTRONICS" }, { 0x0004D3, "Toyokeiki Co., Ltd.", "TOYOKEIKI" }, { 0x0004CC, "Peek Traffic B.V.", "PEEK-TRAFFIC" }, { 0x0004C0, "Cisco Systems, Inc", "CISCO" }, { 0x0004C6, "Yamaha Motor Co., Ltd.", "YAMAHA-MOTOR" }, { 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" }, { 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" }, { 0x000438, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000432, "Voyetra Turtle Beach, Inc.", "VOYETRA-TURTLE-BEACH" }, { 0x000437, "Powin Information Technology, Inc.", "POWIN-INFORMATION" }, { 0x00042B, "IT Access Co., Ltd.", "IT-ACCESS" }, { 0x00041F, "Sony Computer Entertainment, Inc.", "SONY-ENTERTAINMENT" }, { 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" }, { 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" }, { 0x0004E5, "Glonet Systems, Inc.", "GLONET" }, { 0x0004A0, "Verity Instruments, Inc.", "VERITY-INSTRUMENTS" }, { 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" }, { 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" }, { 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" }, { 0x00050C, "Network Photonics, Inc.", "NETWORK-PHOTONICS" }, { 0x000512, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x00020C, "Metro-Optix", "METRO-OPTIX" }, { 0x000213, "S.D.E.L.", "S-D-E-L" }, { 0x000218, "Advanced Scientific Corp", "ADVANCED-SCIENTIFIC" }, { 0x00020F, "AATR", "AATR" }, { 0x0001F4, "Enterasys Networks", "ENTERASYS-NETWORKS" }, { 0x0001F9, "TeraGlobal Communications Corp.", "TERAGLOBAL-COMMUNICATION" }, { 0x000200, "Net & Sys Co., Ltd.", "NET-SYS" }, { 0x0001FC, "Keyence Corporation", "KEYENCE" }, { 0x0001E7, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0001F3, "QPS, Inc.", "QPS" }, { 0x0001E4, "Sitera, Inc.", "SITERA" }, { 0x0001EB, "C-COM Corporation", "C-COM" }, { 0x0001F0, "Tridium, Inc.", "TRIDIUM" }, { 0x0001D4, "Leisure Time, Inc.", "LEISURE-TIME" }, { 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" }, { 0x00017C, "AG-E GmbH", "-E" }, { 0x000188, "LXCO Technologies ag", "LXCO-TECHNOLOGIES" }, { 0x000178, "MARGI Systems, Inc.", "MARGI" }, { 0x000184, "SIEB & MEYER AG", "SIEB-MEYER" }, { 0x00018B, "NetLinks Co., Ltd.", "NETLINKS" }, { 0x0030F5, "Wild Lab. Ltd.", "WILD-LAB" }, { 0x000160, "ELMEX Co., LTD.", "ELMEX" }, { 0x00015E, "BEST TECHNOLOGY CO., LTD.", "BEST" }, { 0x000175, "Radiant Communications Corp.", "RADIANT-COMMUNICATION" }, { 0x000162, "Cygnet Technologies, Inc.", "CYGNET-TECHNOLOGIES" }, { 0x000169, "Celestix Networks Pte Ltd.", "CELESTIX-NETWORKS-PTE" }, { 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" }, { 0x0002B3, "Intel Corporation", "INTEL" }, { 0x0002B6, "Acrosser Technology Co., Ltd.", "ACROSSER" }, { 0x0002AF, "TeleCruz Technology, Inc.", "TELECRUZ" }, { 0x0002AA, "PLcom Co., Ltd.", "PLCOM" }, { 0x0002A3, "ABB Switzerland Ltd, Power Systems", "ABB-SWITZERLAND-POWER" }, { 0x000298, "Broadframe Corporation", "BROADFRAME" }, { 0x000292, "Logic Innovations, Inc.", "LOGIC-INNOVATIONS" }, { 0x000371, "Acomz Networks Corp.", "ACOMZ-NETWORKS" }, { 0x00036D, "Runtop, Inc.", "RUNTOP" }, { 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" }, { 0x0002FC, "Cisco Systems, Inc", "CISCO" }, { 0x000301, "EXFO", "EXFO" }, { 0x0002F9, "MIMOS Berhad", "MIMOS-BERHAD" }, { 0x0002F5, "VIVE Synergies, Inc.", "VIVE-SYNERGIES" }, { 0x0002EE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0002EA, "Focus Enhancements", "FOCUS-ENHANCEMENTS" }, { 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" }, { 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" }, { 0x000269, "Nadatel Co., Ltd", "NADATEL" }, { 0x000265, "Virditech Co. Ltd.", "VIRDITECH" }, { 0x00025E, "High Technology Ltd", "HIGH" }, { 0x000261, "Tilgin AB", "TILGIN-AB" }, { 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" }, { 0x0030E9, "GMA COMMUNICATION MANUFACT'G", "GMA-COMMUNICATION-MANUFACT-G" }, { 0x003027, "KERBANGO, INC.", "KERBANGO" }, { 0x0030F6, "SECURELOGIX CORPORATION", "SECURELOGIX" }, { 0x00D04B, "LA CIE GROUP S.A.", "LA-CIE-GROUP" }, { 0x00D060, "Panasonic Europe Ltd.", "PANASONIC-EUROPE" }, { 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" }, { 0x00D086, "FOVEON, INC.", "FOVEON" }, { 0x00D05A, "SYMBIONICS, LTD.", "SYMBIONICS" }, { 0x00D01A, "URMET TLC S.P.A.", "URMET-TLC-S-P-A" }, { 0x00D0BD, "Silicon Image GmbH", "SILICON-IMAGE" }, { 0x00D0F3, "SOLARI DI UDINE SPA", "SOLARI-DI-UDINE-SPA" }, { 0x00D089, "DYNACOLOR, INC.", "DYNACOLOR" }, { 0x00D08D, "PHOENIX GROUP, INC.", "PHOENIX-GROUP" }, { 0x00D09C, "KAPADIA COMMUNICATIONS", "KAPADIA-COMMUNICATION" }, { 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" }, { 0x00B0CE, "TECHNOLOGY RESCUE", "RESCUE" }, { 0x00B080, "Mannesmann Ipulsys B.V.", "MANNESMANN-IPULSYS" }, { 0x00B09A, "Morrow Technologies Corp.", "MORROW-TECHNOLOGIES" }, { 0x00B091, "Transmeta Corp.", "TRANSMETA" }, { 0x0030BE, "City-Net Technology, Inc.", "CITY-NET" }, { 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" }, { 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" }, { 0x0030D8, "SITEK", "SITEK" }, { 0x003062, "IP Video Networks Inc", "IP-VIDEO-NETWORKS" }, { 0x003081, "ALTOS C&C", "ALTOS-C-C" }, { 0x00D0B7, "INTEL CORPORATION", "INTEL" }, { 0x000165, "AirSwitch Corporation", "AIRSWITCH" }, { 0x000171, "Allied Data Technologies", "ALLIED-DATA-TECHNOLOGIES" }, { 0x000159, "S1 Corporation", "S1" }, { 0x000157, "SYSWAVE CO., LTD", "SYSWAVE" }, { 0x000153, "ARCHTEK TELECOM CORPORATION", "ARCHTEK-TELECOM" }, { 0x00012C, "Aravox Technologies, Inc.", "ARAVOX-TECHNOLOGIES" }, { 0x000138, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0x000144, "EMC Corporation", "EMC" }, { 0x00014B, "Ennovate Networks, Inc.", "ENNOVATE-NETWORKS" }, { 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" }, { 0x0030C5, "CADENCE DESIGN SYSTEMS", "CADENCE-DESIGN" }, { 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" }, { 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" }, { 0x00D071, "ECHELON CORP.", "ECHELON" }, { 0x00D066, "WINTRISS ENGINEERING CORP.", "WINTRISS-ENGINEERING" }, { 0x00D06F, "KMC CONTROLS", "KMC-CONTROLS" }, { 0x0030F1, "Accton Technology Corp.", "ACCTON" }, { 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" }, { 0x003038, "XCP, INC.", "XCP" }, { 0x0050AF, "INTERGON, INC.", "INTERGON" }, { 0x0050EB, "ALPHA-TOP CORPORATION", "ALPHA-TOP" }, { 0x0050BC, "HAMMER STORAGE SOLUTIONS", "HAMMER-STORAGE-SOLUTIONS" }, { 0x2CD141, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x80E4DA, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xA43BFA, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xF40E11, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x549A11, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x2C6A6F, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x1CCAE3, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xCC1BE0, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xB8D812, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x1C21D1, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x7419F8, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xB437D1, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xBC3400, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x807B85, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x00902C, "DATA & CONTROL EQUIPMENT LTD.", "DATA-CONTROL-EQUIPMENT" }, { 0x009076, "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB", "FMT-AIRCRAFT-GATE-SUPPORT-AB" }, { 0x009049, "ENTRIDIA CORPORATION", "ENTRIDIA" }, { 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" }, { 0x0050B6, "GOOD WAY IND. CO., LTD.", "GOOD-WAY-IND" }, { 0x0050FF, "HAKKO ELECTRONICS CO., LTD.", "HAKKO-ELECTRONICS" }, { 0x0050DA, "3COM CORPORATION", "3COM" }, { 0x005032, "PICAZO COMMUNICATIONS, INC.", "PICAZO-COMMUNICATION" }, { 0x00508B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0050F9, "Sensormatic Electronics LLC", "SENSORMATIC-ELECTRONICS-LLC" }, { 0x0050F6, "PAN-INTERNATIONAL INDUSTRIAL CORP.", "PAN--INDUSTRIAL" }, { 0x005063, "OY COMSEL SYSTEM AB", "OY-COMSEL-SYSTEM-AB" }, { 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" }, { 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" }, { 0x00D062, "DIGIGRAM", "DIGIGRAM" }, { 0x00D0FE, "ASTRAL POINT", "ASTRAL-POINT" }, { 0x00D0DC, "MODULAR MINING SYSTEMS, INC.", "MODULAR-MINING" }, { 0x00D09E, "2WIRE, INC.", "2WIRE" }, { 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" }, { 0x00D0F2, "MONTEREY NETWORKS", "MONTEREY-NETWORKS" }, { 0x00D07B, "COMCAM INTERNATIONAL INC", "COMCAM" }, { 0x00D05D, "INTELLIWORXX, INC.", "INTELLIWORXX" }, { 0x00D04C, "EUROTEL TELECOM LTD.", "EUROTEL-TELECOM" }, { 0x00D00D, "MICROMERITICS INSTRUMENT", "MICROMERITICS-INSTRUMENT" }, { 0x009089, "SOFTCOM MICROSYSTEMS, INC.", "SOFTCOM-MICROSYSTEMS" }, { 0x0090C4, "JAVELIN SYSTEMS, INC.", "JAVELIN" }, { 0x009014, "ROTORK INSTRUMENTS, LTD.", "ROTORK-INSTRUMENTS" }, { 0x0090B5, "NIKON CORPORATION", "NIKON" }, { 0x00904B, "GemTek Technology Co., Ltd.", "GEMTEK" }, { 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" }, { 0x00506C, "Beijer Electronics Products AB", "BEIJER-ELECTRONICS-PRODUCTS-AB" }, { 0x0050A5, "CAPITOL BUSINESS SYSTEMS, LTD.", "CAPITOL-BUSINESS" }, { 0x0050FC, "EDIMAX TECHNOLOGY CO., LTD.", "EDIMAX" }, { 0x005000, "NEXO COMMUNICATIONS, INC.", "NEXO-COMMUNICATION" }, { 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" }, { 0x0050DE, "SIGNUM SYSTEMS CORP.", "SIGNUM" }, { 0x009043, "Tattile SRL ", "TATTILE-SRL" }, { 0x009017, "Zypcom, Inc", "ZYPCOM" }, { 0x00907B, "E-TECH, INC.", "E-TECH" }, { 0x00909D, "NovaTech Process Solutions, LLC", "NOVATECH-PROCESS-SOLUTIONS-LLC" }, { 0x009038, "FOUNTAIN TECHNOLOGIES, INC.", "FOUNTAIN-TECHNOLOGIES" }, { 0x0090D6, "CRYSTAL GROUP", "CRYSTAL-GROUP" }, { 0x009096, "ASKEY COMPUTER CORP.", "ASKEY" }, { 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" }, { 0x00902A, "COMMUNICATION DEVICES, INC.", "COMMUNICATION-DEVICES" }, { 0x0090CF, "NORTEL", "NORTEL" }, { 0x009098, "SBC DESIGNS, INC.", "SBC-DESIGNS" }, { 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" }, { 0x009058, "Ultra Electronics Ltd., Command and Control Systems", "ULTRA-ELECTRONICS-COMMAND-AND-CONTROL" }, { 0x00D0FD, "OPTIMA TELE.COM, INC.", "OPTIMA-TELE-COM" }, { 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" }, { 0x0050C7, "Private", "PRIVATE" }, { 0x0090BE, "IBC/INTEGRATED BUSINESS COMPUTERS", "IBC/INTEGRATED-BUSINESS-COMPUTERS" }, { 0x009062, "ICP VORTEX COMPUTERSYSTEME GmbH", "ICP-VORTEX-COMPUTERSYSTEME" }, { 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" }, { 0x001087, "Xstreamis PLC", "XSTREAMIS-PLC" }, { 0x00104E, "CEOLOGIC", "CEOLOGIC" }, { 0x0010ED, "SUNDANCE TECHNOLOGY, INC.", "SUNDANCE" }, { 0x001023, "Network Equipment Technologies", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x0010FB, "ZIDA TECHNOLOGIES LIMITED", "ZIDA-TECHNOLOGIES" }, { 0x0010AD, "SOFTRONICS USB, INC.", "SOFTRONICS-USB" }, { 0x0010D5, "IMASDE CANARIAS, S.A.", "IMASDE-CANARIAS" }, { 0x001067, "Ericsson", "ERICSSON" }, { 0x0010F1, "I-O CORPORATION", "I-O" }, { 0x001073, "TECHNOBOX, INC.", "TECHNOBOX" }, { 0x00107E, "BACHMANN ELECTRONIC GmbH", "BACHMANN" }, { 0x001016, "T.SQWARE", "T-SQWARE" }, { 0x0010C0, "ARMA, Inc.", "ARMA" }, { 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" }, { 0x0010C1, "OI ELECTRIC CO., LTD.", "OI-ELECTRIC" }, { 0x00103E, "NETSCHOOLS CORPORATION", "NETSCHOOLS" }, { 0x001049, "ShoreTel, Inc", "SHORETEL" }, { 0x00105E, "Spirent plc, Service Assurance Broadband", "SPIRENT-PLC-SERVICE-ASSURANCE-BROADBAND" }, { 0x0010E5, "SOLECTRON TEXAS", "SOLECTRON-TEXAS" }, { 0x00102A, "ZF MICROSYSTEMS, INC.", "ZF-MICROSYSTEMS" }, { 0x00107D, "AURORA COMMUNICATIONS, LTD.", "AURORA-COMMUNICATION" }, { 0x00101C, "OHM TECHNOLOGIES INTL, LLC", "OHM-TECHNOLOGIES-INTL-LLC" }, { 0x0010DB, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 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" }, { 0x001018, "BROADCOM CORPORATION", "BROADCOM" }, { 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" }, { 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" }, { 0x00E0CF, "INTEGRATED DEVICE TECHNOLOGY, INC.", "INTEGRATED-DEVICE" }, { 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" }, { 0x00E000, "FUJITSU LIMITED", "FUJITSU" }, { 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" }, { 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" }, { 0x00E06C, "Ultra Electronics Limited (AEP Networks)", "ULTRA-ELECTRONICS-AEP-NETWORKS" }, { 0x00E0CE, "ARN", "ARN" }, { 0x00E091, "LG ELECTRONICS, INC.", "LG-ELECTRONICS" }, { 0x00E05F, "e-Net, Inc.", "E-NET" }, { 0x00E02B, "EXTREME NETWORKS", "EXTREME-NETWORKS" }, { 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" }, { 0x0060BD, "HUBBELL-PULSECOM", "HUBBELL-PULSECOM" }, { 0x0010D8, "CALISTA", "CALISTA" }, { 0x001031, "OBJECTIVE COMMUNICATIONS, INC.", "OBJECTIVE-COMMUNICATION" }, { 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" }, { 0x00A06D, "MANNESMANN TALLY CORPORATION", "MANNESMANN-TALLY" }, { 0x00A056, "MICROPROSS", "MICROPROSS" }, { 0x00A051, "ANGIA COMMUNICATIONS. INC.", "ANGIA-COMMUNICATION" }, { 0x00A0A6, "M.I. SYSTEMS, K.K.", "M-I-K-K" }, { 0x00A0B0, "I-O DATA DEVICE, INC.", "I-O-DATA-DEVICE" }, { 0x00A05F, "BTG Electronics Design BV", "BTG-ELECTRONICS-DESIGN" }, { 0x00A094, "COMSAT CORPORATION", "COMSAT" }, { 0x00A010, "SYSLOGIC DATENTECHNIK AG", "SYSLOGIC-DATENTECHNIK" }, { 0x00A012, "Telco Systems, Inc.", "TELCO" }, { 0x00A063, "JRL SYSTEMS, INC.", "JRL" }, { 0x00A08F, "DESKNET SYSTEMS, INC.", "DESKNET" }, { 0x00A0CC, "LITE-ON COMMUNICATIONS, INC.", "LITE-ON-COMMUNICATION" }, { 0x00A090, "TimeStep Corporation", "TIMESTEP" }, { 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" }, { 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" }, { 0x00A08B, "ASTON ELECTRONIC DESIGNS LTD.", "ASTON-DESIGNS" }, { 0x00A06B, "DMS DORSCH MIKROSYSTEM GMBH", "DMS-DORSCH-MIKROSYSTEM" }, { 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" }, { 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" }, { 0x006074, "QSC AUDIO PRODUCTS", "QSC-AUDIO-PRODUCTS" }, { 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" }, { 0x006008, "3COM CORPORATION", "3COM" }, { 0x0060EF, "FLYTECH TECHNOLOGY CO., LTD.", "FLYTECH" }, { 0x00A0F7, "V.I COMPUTER CORP.", "V-I" }, { 0x00A09C, "Xyplex, Inc.", "XYPLEX" }, { 0x00A0A0, "COMPACT DATA, LTD.", "COMPACT-DATA" }, { 0x00A0A4, "MICROS SYSTEMS, INC.", "MICROS" }, { 0x00A024, "3COM CORPORATION", "3COM" }, { 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" }, { 0x00A0AA, "SPACELABS MEDICAL", "SPACELABS-MEDICAL" }, { 0x00A04F, "AMERITEC CORP.", "AMERITEC" }, { 0x00A073, "COM21, INC.", "COM21" }, { 0x00A084, "Dataplex Pty Ltd", "DATAPLEX-PTY" }, { 0x00A034, "AXEL", "AXEL" }, { 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" }, { 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" }, { 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" }, { 0x00C05D, "L&N TECHNOLOGIES", "L-N-TECHNOLOGIES" }, { 0x00C0E4, "SIEMENS BUILDING", "SIEMENS-BUILDING" }, { 0x00200C, "ADASTRA SYSTEMS CORP.", "ADASTRA" }, { 0x0020C4, "INET,INC.", "INET" }, { 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" }, { 0x00C09F, "QUANTA COMPUTER, INC.", "QUANTA" }, { 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" }, { 0x00C064, "GENERAL DATACOMM IND. INC.", "GENERAL-DATACOMM-IND" }, { 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" }, { 0x00C099, "YOSHIKI INDUSTRIAL CO.,LTD.", "YOSHIKI-INDUSTRIAL" }, { 0x00C0FC, "ELASTIC REALITY, INC.", "ELASTIC-REALITY" }, { 0x00C0D0, "RATOC SYSTEM INC.", "RATOC-SYSTEM" }, { 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" }, { 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" }, { 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" }, { 0x00404C, "HYPERTEC PTY LTD.", "HYPERTEC-PTY" }, { 0x00C0EE, "KYOCERA CORPORATION", "KYOCERA" }, { 0x00C0CB, "CONTROL TECHNOLOGY CORPORATION", "CONTROL" }, { 0x0020BB, "ZAX CORPORATION", "ZAX" }, { 0x00204D, "INOVIS GMBH", "INOVIS" }, { 0x002089, "T3PLUS NETWORKING, INC.", "T3PLUS-NETWORKING" }, { 0x00205F, "GAMMADATA COMPUTER GMBH", "GAMMADATA" }, { 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" }, { 0x002077, "KARDIOS SYSTEMS CORP.", "KARDIOS" }, { 0x002068, "ISDYNE", "ISDYNE" }, { 0x00202A, "N.V. DZINE", "N-V-DZINE" }, { 0x0020D6, "BREEZECOM", "BREEZECOM" }, { 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" }, { 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" }, { 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" }, { 0x002031, "Tattile SRL ", "TATTILE-SRL" }, { 0x0020DE, "JAPAN DIGITAL LABORAT'Y CO.LTD", "JAPAN-DIGITAL-LABORAT-Y" }, { 0x0020F7, "CYBERDATA CORPORATION", "CYBERDATA" }, { 0x000267, "NODE RUNNER, INC.", "NODE-RUNNER" }, { 0x002064, "PROTEC MICROSYSTEMS, INC.", "PROTEC-MICROSYSTEMS" }, { 0x002032, "ALCATEL TAISEL", "ALCATEL-TAISEL" }, { 0x00207F, "KYOEI SANGYO CO., LTD.", "KYOEI-SANGYO" }, { 0x0080A0, "EDISA HEWLETT PACKARD S/A", "EDISA-HEWLETT-PACKARD-S/A" }, { 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" }, { 0x008077, "BROTHER INDUSTRIES, LTD.", "BROTHER-INDUSTRIES" }, { 0x008028, "TRADPOST (HK) LTD", "TRADPOST-HK" }, { 0x0080B6, "THEMIS COMPUTER", "THEMIS" }, { 0x008058, "PRINTER SYSTEMS CORPORATION", "PRINTER" }, { 0x0080C0, "PENRIL DATACOMM", "PENRIL-DATACOMM" }, { 0x0080F5, "Quantel Ltd", "QUANTEL" }, { 0x0080DA, "Bruel & Kjaer Sound & Vibration Measurement A/S", "BRUEL-KJAER-SOUND-VIBRATION-MEASUREMENT-A/S" }, { 0x0080E5, "NetApp, Inc", "NETAPP" }, { 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" }, { 0x008030, "NEXUS ELECTRONICS", "NEXUS-ELECTRONICS" }, { 0x008022, "SCAN-OPTICS", "SCAN-OPTICS" }, { 0x000041, "ICE CORPORATION", "ICE" }, { 0x00001E, "TELSIST INDUSTRIA ELECTRONICA", "TELSIST-INDUSTRIA-ELECTRONICA" }, { 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" }, { 0x0080E1, "STMICROELECTRONICS", "STMICROELECTRONICS" }, { 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" }, { 0x00407A, "SOCIETE D'EXPLOITATION DU CNIT", "SOCIETE-D-EXPLOITATION-DU-CNIT" }, { 0x004089, "MEIDENSHA CORPORATION", "MEIDENSHA" }, { 0x00405A, "GOLDSTAR INFORMATION & COMM.", "GOLDSTAR-INFORMATION-COMM" }, { 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" }, { 0x00C09A, "PHOTONICS CORPORATION", "PHOTONICS" }, { 0x00C01A, "COROMETRICS MEDICAL SYSTEMS", "COROMETRICS-MEDICAL" }, { 0x00404B, "MAPLE COMPUTER SYSTEMS", "MAPLE" }, { 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" }, { 0x00C0E7, "FIBERDATA AB", "FIBERDATA-AB" }, { 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" }, { 0x004055, "METRONIX GMBH", "METRONIX" }, { 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" }, { 0x00800A, "JAPAN COMPUTER CORP.", "JAPAN" }, { 0x00806E, "NIPPON STEEL CORPORATION", "NIPPON-STEEL" }, { 0x008010, "COMMODORE INTERNATIONAL", "COMMODORE" }, { 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" }, { 0x004004, "ICM CO. LTD.", "ICM" }, { 0x004070, "INTERWARE CO., LTD.", "INTERWARE" }, { 0x008057, "ADSOFT, LTD.", "ADSOFT" }, { 0x00807A, "AITECH SYSTEMS LTD.", "AITECH" }, { 0x0080AA, "MAXPEED", "MAXPEED" }, { 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" }, { 0x004052, "STAR TECHNOLOGIES, INC.", "STAR-TECHNOLOGIES" }, { 0x000064, "Yokogawa Electric Corporation", "YOKOGAWA-ELECTRIC" }, { 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" }, { 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" }, { 0x080040, "FERRANTI COMPUTER SYS. LIMITED", "FERRANTI-SYS" }, { 0x08003B, "TORUS SYSTEMS LIMITED", "TORUS" }, { 0x080039, "SPIDER SYSTEMS LIMITED", "SPIDER" }, { 0x08003D, "CADNETIX CORPORATIONS", "CADNETIX-CORPORATIONS" }, { 0x080030, "NETWORK RESEARCH CORPORATION", "NETWORK-RESEARCH" }, { 0x02CF1C, "COMMUNICATION MACHINERY CORP.", "COMMUNICATION-MACHINERY" }, { 0x000005, "XEROX CORPORATION", "XEROX" }, { 0x0000AA, "XEROX CORPORATION", "XEROX" }, { 0x00DD0C, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x080046, "Sony Corporation", "SONY" }, { 0x00406B, "SYSGEN", "SYSGEN" }, { 0x080009, "HEWLETT PACKARD", "HEWLETT-PACKARD" }, { 0x000053, "COMPUCORP", "COMPUCORP" }, { 0x080001, "COMPUTERVISION CORPORATION", "COMPUTERVISION" }, { 0xAA0001, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x08004B, "Planning Research Corp.", "PLANNING-RESEARCH" }, { 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" }, { 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" }, { 0x080027, "Cadmus Computer Systems (possible VirtualBox VM)", "CADMUS-VIRTUAL" }, { 0x020701, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x080011, "TEKTRONIX INC.", "TEKTRONIX" }, { 0x00807B, "ARTEL COMMUNICATIONS CORP.", "ARTEL-COMMUNICATION" }, { 0x00802E, "CASTLE ROCK COMPUTING", "CASTLE-ROCK-COMPUTING" }, { 0x0080F9, "HEURIKON CORPORATION", "HEURIKON" }, { 0x008005, "CACTUS COMPUTER INC.", "CACTUS" }, { 0x008008, "DYNATECH COMPUTER SYSTEMS", "DYNATECH" }, { 0x0080FF, "SOC. DE TELEINFORMATIQUE RTC", "SOC-DE-TELEINFORMATIQUE-RTC" }, { 0x0000D0, "DEVELCON ELECTRONICS LTD.", "DEVELCON-ELECTRONICS" }, { 0x000093, "PROTEON INC.", "PROTEON" }, { 0x0000A0, "SANYO Electric Co., Ltd.", "SANYO-ELECTRIC" }, { 0x080082, "VERITAS SOFTWARE", "VERITAS-SOFTWARE" }, { 0x08007F, "CARNEGIE-MELLON UNIVERSITY", "CARNEGIE-MELLON-UNIVERSITY" }, { 0x08007B, "SANYO ELECTRIC CO. LTD.", "SANYO-ELECTRIC" }, { 0x080074, "CASIO COMPUTER CO. LTD.", "CASIO" }, { 0x00000E, "FUJITSU LIMITED", "FUJITSU" }, { 0x000070, "HCL LIMITED", "HCL" }, { 0x00008E, "SOLBOURNE COMPUTER, INC.", "SOLBOURNE" }, { 0x0000DC, "HAYES MICROCOMPUTER PRODUCTS", "HAYES-MICROCOMPUTER-PRODUCTS" }, { 0x000024, "CONNECT AS", "CONNECT-AS" }, { 0x000048, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0x000016, "DU PONT PIXEL SYSTEMS .", "DU-PONT-PIXEL" }, { 0x080003, "ADVANCED COMPUTER COMM.", "ADVANCED-COMM" }, { 0x00DD0F, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x000001, "XEROX CORPORATION", "XEROX" }, { 0x0270B3, "DATA RECALL LTD", "DATA-RECALL" }, { 0x00009B, "INFORMATION INTERNATIONAL, INC", "INFORMATION" }, { 0x080021, "3M COMPANY", "3M-COMPANY" }, { 0x00DD08, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x08000C, "MIKLYN DEVELOPMENT CO.", "MIKLYN-DEVELOPMENT" }, { 0x029D8E, "CARDIAC RECORDERS INC.", "CARDIAC-RECORDERS" }, { 0xAA0004, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x0000D8, "NOVELL, INC.", "NOVELL" }, { 0xDC330D, "Qingdao Haier Telecom Co.ïĵŒLtd", "QINGDAO-HAIER-TELECOM-ïĵŒ" }, { 0xE06066, "Sercomm Corporation", "SERCOMM" }, { 0x94B2CC, "PIONEER CORPORATION", "PIONEER" }, { 0x887F03, "Comper Technology Investment Limited", "COMPER-INVESTMENT" }, { 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" }, { 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" }, { 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" }, { 0x88C255, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x28565A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x40490F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7CB15D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x18686A, "zte corporation", "ZTE" }, { 0x58DC6D, "Exceptional Innovation, Inc.", "EXCEPTIONAL-INNOVATION" }, { 0x889471, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xCC4E24, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x50EB1A, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x0027F8, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000533, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x0060DF, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x4CAC0A, "zte corporation", "ZTE" }, { 0x10A5D0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xD4C9B2, "Quanergy Systems Inc", "QUANERGY" }, { 0xE4CE02, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x0026ED, "zte corporation", "ZTE" }, { 0x002293, "zte corporation", "ZTE" }, { 0x001C26, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00197D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90FBA6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x2002AF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0026E8, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xC03E0F, "BSkyB Ltd", "BSKYB" }, { 0x74D6EA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7CEC79, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE0E5CF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xACF7F3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x009EC8, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x7C1DD9, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xA086C6, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x584498, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 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" }, { 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" }, { 0x2008ED, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x509F27, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x688F84, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001AB6, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x142D27, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xECCB30, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x786A89, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD03972, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7C669D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78A504, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC4BE84, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD05FB8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA01290, "Avaya Inc", "AVAYA" }, { 0xF81547, "Avaya Inc", "AVAYA" }, { 0x506184, "Avaya Inc", "AVAYA" }, { 0xBCADAB, "Avaya Inc", "AVAYA" }, { 0xB4A95A, "Avaya Inc", "AVAYA" }, { 0x3C3A73, "Avaya Inc", "AVAYA" }, { 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" }, { 0xC83DFC, "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" }, { 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" }, { 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" }, { 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" }, { 0x3C0E23, "Cisco Systems, Inc", "CISCO" }, { 0x001CC3, "Pace plc", "PACE-PLC" }, { 0x14D4FE, "Pace plc", "PACE-PLC" }, { 0x70B14E, "Pace plc", "PACE-PLC" }, { 0x707630, "Pace plc", "PACE-PLC" }, { 0x7C6D62, "Apple, Inc.", "APPLE" }, { 0x40D32D, "Apple, Inc.", "APPLE" }, { 0xD83062, "Apple, Inc.", "APPLE" }, { 0xC42C03, "Apple, Inc.", "APPLE" }, { 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" }, { 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" }, { 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" }, { 0x70E422, "Cisco Systems, Inc", "CISCO" }, { 0x0050BD, "Cisco Systems, Inc", "CISCO" }, { 0x009086, "Cisco Systems, Inc", "CISCO" }, { 0x005054, "Cisco Systems, Inc", "CISCO" }, { 0x0050D1, "Cisco Systems, Inc", "CISCO" }, { 0x00500B, "Cisco Systems, Inc", "CISCO" }, { 0x005073, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0xDC4A3E, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 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" }, { 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" }, { 0x789F70, "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" }, { 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" }, { 0xA4C361, "Apple, Inc.", "APPLE" }, { 0xAC7F3E, "Apple, Inc.", "APPLE" }, { 0x280B5C, "Apple, Inc.", "APPLE" }, { 0xE8040B, "Apple, Inc.", "APPLE" }, { 0xB8C75D, "Apple, Inc.", "APPLE" }, { 0x403CFC, "Apple, Inc.", "APPLE" }, { 0x286AB8, "Apple, Inc.", "APPLE" }, { 0x7CC3A1, "Apple, Inc.", "APPLE" }, { 0x3CD0F8, "Apple, Inc.", "APPLE" }, { 0x98D6BB, "Apple, Inc.", "APPLE" }, { 0x5CE3B6, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x9C88AD, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xC8C2C6, "Shanghai Airm2m Communication Technology Co., Ltd", "SHANGHAI-AIRM2M-COMMUNICATION" }, { 0xCCE0C3, "Mangstor, Inc.", "MANGSTOR" }, { 0x84A423, "Sagemcom Broadband SAS", "SAGEMCOM-BROADBAND-SAS" }, { 0xD02544, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x6CEBB2, "Dongguan Sen DongLv Electronics Co.,Ltd", "DONGGUAN-SEN-DONGLV-ELECTRONICS" }, { 0xA03299, "Lenovo (Beijing) Co., Ltd.", "LENOVO-BEIJING" }, { 0x80656D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x48137E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE83A12, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x346987, "zte corporation", "ZTE" }, { 0x58685D, "Tempo Australia Pty Ltd", "TEMPO-AUSTRALIA-PTY" }, { 0xEC64E7, "MOCACARE Corporation", "MOCACARE" }, { 0xD07C2D, "Leie IOT technology Co., Ltd", "LEIE-IOT" }, { 0x40862E, "JDM MOBILE INTERNET SOLUTION CO., LTD.", "JDM-MOBILE-INTERNET-SOLUTION" }, { 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" }, { 0xEC388F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xBCD11F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC9C31, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x90C99B, "Recore Systems", "RECORE" }, { 0xCC20E8, "Apple, Inc.", "APPLE" }, { 0xE435C8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x38FF36, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xD47208, "Bragi GmbH", "BRAGI" }, { 0xB05ADA, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x489A42, "Technomate Ltd", "TECHNOMATE" }, { 0xB49D0B, "BQ", "BQ" }, { 0x80A589, "AzureWave Technologies, Inc.", "AZUREWAVE-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" }, { 0xB4AE2B, "Microsoft", "MICROSOFT" }, { 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" }, { 0xC08997, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFC2FEF, "UTT Technologies Co., Ltd.", "UTT-TECHNOLOGIES" }, { 0x2827BF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF05B7B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x98CB27, "Galore Networks Pvt. Ltd.", "GALORE-NETWORKS-PVT" }, { 0x30D32D, "devolo AG", "DEVOLO" }, { 0xCC794A, "BLU Products Inc.", "BLU-PRODUCTS" }, { 0x60FD56, "WOORISYSTEMS CO., Ltd", "WOORISYSTEMS" }, { 0x7CFE90, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0xA845CD, "Siselectron Technology LTD.", "SISELECTRON" }, { 0xACEE9E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0C193, "SKYBELL, INC", "SKYBELL" }, { 0x209BCD, "Apple, Inc.", "APPLE" }, { 0xF0B0E7, "Apple, Inc.", "APPLE" }, { 0xA09169, "LG Electronics", "LG-ELECTRONICS" }, { 0x5CB559, "CNEX Labs", "CNEX-LABS" }, { 0x5CCF7F, "Espressif Inc.", "ESPRESSIF" }, { 0x403DEC, "HUMAX Co., Ltd.", "HUMAX" }, { 0x380546, "Foctek Photonics, Inc.", "FOCTEK-PHOTONICS" }, { 0x80EB77, "Wistron Corporation", "WISTRON" }, { 0xB88981, "Chengdu InnoThings Technology Co., Ltd.", "CHENGDU-INNOTHINGS" }, { 0xDC7FA4, "2wire", "2WIRE" }, { 0x584822, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x6858C5, "ZF TRW Automotive", "ZF-TRW-AUTOMOTIVE" }, { 0x141877, "Dell Inc", "DELL" }, { 0x044169, "GoPro", "GOPRO" }, { 0xACC51B, "Zhuhai Pantum Electronics Co., Ltd.", "ZHUHAI-PANTUM-ELECTRONICS" }, { 0x4473D6, "Logitech", "LOGITECH" }, { 0xE80734, "Champion Optical Network Engineering, LLC", "CHAMPION-OPTICAL-NETWORK-ENGINEERING-LLC" }, { 0x1002B5, "Intel Corporate", "INTEL-CORPORATE" }, { 0x483974, "Proware Technologies Co., Ltd.", "PROWARE-TECHNOLOGIES" }, { 0xE855B4, "SAI Technology Inc.", "SAI" }, { 0x586356, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0x9CA69D, "Whaley Technology Co.Ltd", "WHALEY" }, { 0x342606, "CarePredict, Inc.", "CAREPREDICT" }, { 0x081FEB, "BinCube", "BINCUBE" }, { 0x785F4C, "Argox Information Co., Ltd.", "ARGOX-INFORMATION" }, { 0xE866C4, "Datawise Systems", "DATAWISE" }, { 0x5870C6, "Shanghai Xiaoyi Technology Co., Ltd.", "SHANGHAI-XIAOYI" }, { 0x54B80A, "D-Link International", "D-LINK" }, { 0xC412F5, "D-Link International", "D-LINK" }, { 0x5C4527, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x6CA100, "Intel Corporate", "INTEL-CORPORATE" }, { 0x44F436, "zte corporation", "ZTE" }, { 0x349B5B, "Maquet GmbH", "MAQUET" }, { 0x7CF90E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78BDBC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xAC5A14, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xEC60E0, "AVI-ON LABS", "AVI-ON-LABS" }, { 0x188EF9, "G2C Co. Ltd.", "G2C" }, { 0x5464D9, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x809FAB, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xD00492, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xF4E9D4, "QLogic Corporation", "QLOGIC" }, { 0x940937, "HUMAX Co., Ltd.", "HUMAX" }, { 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" }, { 0xE861BE, "Melec Inc.", "MELEC" }, { 0xD8ADDD, "Sonavation, Inc.", "SONAVATION" }, { 0xC09A71, "XIAMEN MEITU MOBILE TECHNOLOGY CO.LTD", "XIAMEN-MEITU-MOBILE" }, { 0x340B40, "MIOS ELETTRONICA SRL", "MIOS-ELETTRONICA-SRL" }, { 0xD854A2, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x944A0C, "Sercomm Corporation", "SERCOMM" }, { 0xD02516, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0xD05C7A, "Sartura d.o.o.", "SARTURA-D-O-O" }, { 0x145A83, "Logi-D inc", "LOGI-D" }, { 0x4CEEB0, "SHC Netzwerktechnik GmbH", "SHC-NETZWERKTECHNIK" }, { 0x583F54, "LG Electronics (Mobile Communications)", "LG-ELECTRONICS-MOBILE-COMMUNICATION" }, { 0xF0182B, "LG Chem", "LG-CHEM" }, { 0xCC5FBF, "Topwise 3G Communication Co., Ltd.", "TOPWISE-3G-COMMUNICATION" }, { 0xF40304, "Google", "GOOGLE" }, { 0x14DDA9, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x94659C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x485D36, "Verizon", "VERIZON" }, { 0xD04D2C, "Roku, Inc", "ROKU" }, { 0x14AEDB, "VTech Telecommunications Ltd.", "VTECH-TELECOMMUNICATIONS" }, { 0xEC4F82, "Calix Inc.", "CALIX" }, { 0xB8C3BF, "Henan Chengshi NetWork Technology Co.ïĵŒLtd", "HENAN-CHENGSHI-NETWORK-ïĵŒ" }, { 0x902E1C, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB4B265, "DAEHO I&T", "DAEHO-I-T" }, { 0x0037B7, "SAGEMCOM", "SAGEMCOM" }, { 0xF8BF09, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF4EB38, "SAGEM", "SAGEM" }, { 0xC0EE40, "Laird Technologies", "LAIRD-TECHNOLOGIES" }, { 0xBC0F64, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9C37F4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5CEB68, "Cheerstar Technology Co., Ltd", "CHEERSTAR" }, { 0xF46A92, "SHENZHEN FAST TECHNOLOGIES CO.,LTD", "SHENZHEN-FAST-TECHNOLOGIES" }, { 0x5CB901, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x34FCEF, "LG Electronics", "LG-ELECTRONICS" }, { 0x3CFDFE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x346C0F, "Pramod Telecom Pvt. Ltd", "PRAMOD-TELECOM-PVT" }, { 0x3C912B, "Vexata Inc", "VEXATA" }, { 0xF8C96C, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x48555F, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 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" }, { 0x3C1E04, "D-Link International", "D-LINK" }, { 0xE0FFF7, "Softiron Inc.", "SOFTIRON" }, { 0xD0BF9C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x6CB56B, "Humax.co.,ltd", "HUMAX" }, { 0x141AA3, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xDC60A1, "Teledyne DALSA Professional Imaging", "TELEDYNE-DALSA-PROFESSIONAL-IMAGING" }, { 0xEC8892, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x78E980, "RainUs Co.,Ltd", "RAINUS" }, { 0xBCE767, "Quanzhou TDX Electronics Co., Ltd", "QUANZHOU-TDX-ELECTRONICS" }, { 0x7C3CB6, "Shenzhen Homecare Technology Co.,Ltd.", "SHENZHEN-HOMECARE" }, { 0x6CA7FA, "YOUNGBO ENGINEERING INC.", "YOUNGBO-ENGINEERING" }, { 0xD0929E, "Microsoft Corporation", "MICROSOFT" }, { 0x4C09D4, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xF4032F, "Reduxio Systems", "REDUXIO" }, { 0x84CFBF, "Fairphone", "FAIRPHONE" }, { 0xAC9E17, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xACC73F, "VITSMO CO., LTD.", "VITSMO" }, { 0x505527, "LG Electronics", "LG-ELECTRONICS" }, { 0x104A7D, "Intel Corporate", "INTEL-CORPORATE" }, { 0xBC54F9, "Drogoo Technology Co., Ltd.", "DROGOO" }, { 0x349E34, "Evervictory Electronic Co.Ltd", "EVERVICTORY" }, { 0xA0C2DE, "Costar Video Systems", "COSTAR-VIDEO" }, { 0xD40B1A, "HTC Corporation", "HTC" }, { 0x3809A4, "Firefly Integrations", "FIREFLY-INTEGRATIONS" }, { 0x00A509, "WigWag Inc.", "WIGWAG" }, { 0x18BDAD, "L-TECH CORPORATION", "L-TECH" }, { 0x04BD88, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x44D244, "Seiko Epson Corporation", "SEIKO-EPSON" }, { 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" }, { 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" }, { 0xB0C559, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB4EF39, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94E2FD, "Boge Kompressoren OTTO Boge GmbH & Co. KG", "BOGE-KOMPRESSOREN-OTTO-BOGE" }, { 0xA4C494, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE4695A, "Dictum Health, Inc.", "DICTUM-HEALTH" }, { 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" }, { 0x68B983, "b-plus GmbH", "B-PLUS" }, { 0x68F0BC, "Shenzhen LiWiFi Technology Co., Ltd", "SHENZHEN-LIWIFI" }, { 0xBCD165, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x4CA928, "Insensi", "INSENSI" }, { 0x44F477, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x2884FA, "SHARP Corporation", "SHARP" }, { 0xBC52B4, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xC81B6B, "Innova Security", "INNOVA-SECURITY" }, { 0x5C966A, "RTNET", "RTNET" }, { 0x383BC8, "2wire", "2WIRE" }, { 0x2C5089, "Shenzhen Kaixuan Visual Technology Co.,Limited", "SHENZHEN-KAIXUAN-VISUAL" }, { 0x3438AF, "Inlab Software GmbH", "INLAB-SOFTWARE" }, { 0xF01C2D, "juniper networks", "JUNIPER-NETWORKS" }, { 0x74BADB, "Longconn Electornics(shenzhen)Co.,Ltd", "LONGCONN-ELECTORNICS-SHENZHEN" }, { 0x4C7403, "BQ", "BQ" }, { 0x5876C5, "DIGI I'S LTD", "DIGI-I-S" }, { 0xE8ED05, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xB84FD5, "Microsoft Corporation", "MICROSOFT" }, { 0x587BE9, "AirPro Technology India Pvt. Ltd", "AIRPRO-INDIA-PVT" }, { 0xA86405, "nimbus 9, Inc", "NIMBUS-9" }, { 0x181E78, "SAGEMCOM", "SAGEMCOM" }, { 0x7076FF, "KERLINK", "KERLINK" }, { 0xBC74D7, "HangZhou JuRu Technology CO.,LTD", "HANGZHOU-JURU" }, { 0xE88E60, "NSD Corporation", "NSD" }, { 0x545146, "AMG Systems Ltd.", "AMG" }, { 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" }, { 0xA89DD2, "Shanghai DareGlobal Technologies Co., Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0xEC13B2, "Netonix", "NETONIX" }, { 0xD46132, "Pro Concept Manufacturer Co.,Ltd.", "PRO-CONCEPT-MANUFACTURER" }, { 0x54A050, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xD897BA, "PEGATRON CORPORATION", "PEGATRON" }, { 0x049B9C, "Eadingcore Intelligent Technology Co., Ltd.", "EADINGCORE-INTELLIGENT" }, { 0x842690, "BEIJING THOUGHT SCIENCE CO.,LTD.", "BEIJING-THOUGHT-SCIENCE" }, { 0xA0B4A5, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0xC4576E, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0xFC1D84, "Autobase", "AUTOBASE" }, { 0x4CE933, "RailComm, LLC", "RAILCOMM-LLC" }, { 0x6050C1, "Kinetek Sports", "KINETEK-SPORTS" }, { 0xCCE17F, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xC8E7D8, "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "SHENZHEN-MERCURY-COMMUNICATION-TECHNOLOGIES" }, { 0x00A2F5, "Guangzhou Yuanyun Network Technology Co.,Ltd", "GUANGZHOU-YUANYUN-NETWORK" }, { 0x70FC8C, "OneAccess SA", "ONEACCESS" }, { 0x2C600C, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x902CC7, "C-MAX Asia Limited", "C-MAX-ASIA" }, { 0xB8AEED, "Elitegroup Computer Systems Co., Ltd.", "ELITEGROUP" }, { 0x1C965A, "Weifang goertek Electronics CO.,LTD", "WEIFANG-GOERTEK-ELECTRONICS" }, { 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" }, { 0x003560, "Rosen Aviation", "ROSEN-AVIATION" }, { 0xEC59E7, "Microsoft Corporation", "MICROSOFT" }, { 0x08EFAB, "SAYME WIRELESS SENSOR NETWORK", "SAYME-WIRELESS-SENSOR-NETWORK" }, { 0x1422DB, "eero inc.", "EERO" }, { 0x0C413E, "Microsoft Corporation", "MICROSOFT" }, { 0x007E56, "China Dragon Technology Limited", "CHINA-DRAGON" }, { 0x086266, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x5CB6CC, "NovaComm Technologies Inc.", "NOVACOMM-TECHNOLOGIES" }, { 0x34BB26, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xB4AE6F, "Circle Reliance, Inc DBA Cranberry Networks", "CIRCLE-RELIANCE-DBA-CRANBERRY-NETWORKS" }, { 0x14A364, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB89919, "7signal Solutions, Inc", "7SIGNAL-SOLUTIONS" }, { 0x90DA6A, "FOCUS H&S Co., Ltd.", "FOCUS-H-S" }, { 0xA45DA1, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xACA213, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x90B686, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x80D21D, "AzureWave Technologies, Inc", "AZUREWAVE-TECHNOLOGIES" }, { 0x4C6E6E, "Comnect Technology CO.,LTD", "COMNECT" }, { 0xF4DD9E, "GoPro", "GOPRO" }, { 0x40786A, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xD82522, "Pace plc", "PACE-PLC" }, { 0x987E46, "Emizon Networks Limited", "EMIZON-NETWORKS" }, { 0x8432EA, "ANHUI WANZTEN P&T CO., LTD", "ANHUI-WANZTEN-P-T" }, { 0xE47FB2, "FUJITSU LIMITED", "FUJITSU" }, { 0x38262B, "UTran Technology", "UTRAN" }, { 0x20ED74, "Ability enterprise co.,Ltd.", "ABILITY" }, { 0x48D855, "Telvent", "TELVENT" }, { 0x284ED7, "OutSmart Power Systems, Inc.", "OUTSMART-POWER" }, { 0x90C792, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5C5BC2, "YIK Corporation", "YIK" }, { 0x184A6F, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x789684, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xEC8A4C, "zte corporation", "ZTE" }, { 0x3CA10D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x206E9C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x14C126, "Nokia Corporation", "NOKIA" }, { 0xA012DB, "TABUCHI ELECTRIC CO.,LTD", "TABUCHI-ELECTRIC" }, { 0xB8BF83, "Intel Corporate", "INTEL-CORPORATE" }, { 0x340AFF, "Qingdao Hisense Communications Co.,Ltd", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x8014A8, "Guangzhou V-SOLUTION Electronic Technology Co., Ltd.", "GUANGZHOU-V-SOLUTION" }, { 0x908C63, "GZ Weedong Networks Technology Co. , Ltd", "GZ-WEEDONG-NETWORKS" }, { 0xC056E3, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xB49EAC, "Imagik Int'l Corp", "IMAGIK" }, { 0x80AD67, "Kasda Networks Inc", "KASDA-NETWORKS" }, { 0x9CAD97, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x30595B, "streamnow AG", "STREAMNOW" }, { 0xB8AD3E, "BLUECOM", "BLUECOM" }, { 0xB083FE, "Dell Inc", "DELL" }, { 0x10C37B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 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" }, { 0x60512C, "TCT mobile limited", "TCT-MOBILE" }, { 0x4CBC42, "Shenzhen Hangsheng Electronics Co.,Ltd.", "SHENZHEN-HANGSHENG-ELECTRONICS" }, { 0x645106, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x982F3C, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x7824AF, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0CAC05, "Unitend Technologies Inc.", "UNITEND-TECHNOLOGIES" }, { 0xB4B859, "Texa Spa", "TEXA-SPA" }, { 0xA81374, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0xB4CEF6, "HTC Corporation", "HTC" }, { 0x4C83DE, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xC8E42F, "Technical Research Design and Development", "TECHNICAL-RESEARCH-DESIGN-AND-DEVELOPMENT" }, { 0xFC2325, "EosTek (Shenzhen) Co., Ltd.", "EOSTEK-SHENZHEN" }, { 0x485929, "LG Electronics", "LG-ELECTRONICS" }, { 0xA43D78, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xCC07E4, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 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" }, { 0x3CCD93, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 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" }, { 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" }, { 0xCCA0E5, "DZG Metering GmbH", "DZG-METERING" }, { 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" }, { 0x90F1AA, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xE8EF89, "OPMEX Tech.", "OPMEX-TECH" }, { 0xF4C447, "Coagent International Enterprise Limited", "COAGENT" }, { 0x288023, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x08DF1F, "Bose Corporation", "BOSE" }, { 0x542AA2, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x58238C, "Technicolor CH USA", "TECHNICOLOR-CH-USA" }, { 0x84948C, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x6CFAA7, "AMPAK Technology Inc.", "AMPAK" }, { 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" }, { 0xCCC3EA, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x986B3D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x70F96D, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x3059B7, "Microsoft", "MICROSOFT" }, { 0x80414E, "BBK Electronics Corp., Ltd.,", "BBK-ELECTRONICS" }, { 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" }, { 0xA49A58, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8059FD, "Noviga", "NOVIGA" }, { 0x18FF2E, "Shenzhen Rui Ying Da Technology Co., Ltd", "SHENZHEN-RUI-YING-DA" }, { 0x1CAB01, "Innovolt", "INNOVOLT" }, { 0x68856A, "OuterLink Corporation", "OUTERLINK" }, { 0x88A73C, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0x3417EB, "Dell Inc", "DELL" }, { 0x30F42F, "ESP", "ESP" }, { 0xC816BD, "HISENSE ELECTRIC CO.,LTD.", "HISENSE-ELECTRIC" }, { 0x746A8F, "VS Vision Systems GmbH", "VS-VISION" }, { 0xB068B6, "Hangzhou OYE Technology Co. Ltd", "HANGZHOU-OYE" }, { 0x9C65F9, "AcSiP Technology Corp.", "ACSIP" }, { 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" }, { 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" }, { 0x3CD4D6, "WirelessWERX, Inc", "WIRELESSWERX" }, { 0x208986, "zte corporation", "ZTE" }, { 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" }, { 0xCC65AD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0xF4068D, "devolo AG", "DEVOLO" }, { 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" }, { 0x9401C2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xC03FD5, "Elitegroup Computer Systems Co., LTD", "ELITEGROUP" }, { 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" }, { 0x2C5D93, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x901ACA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x9CA9E4, "zte corporation", "ZTE" }, { 0xE47723, "zte corporation", "ZTE" }, { 0xC098E5, "University of Michigan", "UNIVERSITY-OF-MICHIGAN" }, { 0xB8DF6B, "SpotCam Co., Ltd.", "SPOTCAM" }, { 0x50C006, "Carmanah Signs", "CARMANAH-SIGNS" }, { 0xC40415, "NETGEAR INC.,", "NETGEAR" }, { 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" }, { 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" }, { 0x487604, "Private", "PRIVATE" }, { 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" }, { 0x54271E, "AzureWave Technonloies, Inc.", "AZUREWAVE-TECHNONLOIES" }, { 0xE8EA6A, "StarTech.com", "STARTECH-COM" }, { 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" }, { 0x7CB733, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x705957, "Medallion Instrumentation Systems", "MEDALLION-INSTRUMENTATION" }, { 0x6C8366, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x10AE60, "Private", "PRIVATE" }, { 0x1CC11A, "Wavetronix", "WAVETRONIX" }, { 0x90028A, "Shenzhen Shidean Legrand Electronic Products Co.,Ltd", "SHENZHEN-SHIDEAN-LEGRAND-PRODUCTS" }, { 0x4C3C16, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x90356E, "Vodafone Omnitel N.V.", "VODAFONE-OMNITEL-N-V" }, { 0x3CCA87, "Iders Incorporated", "IDERS-INCORPORATED" }, { 0x08CA45, "Toyou Feiji Electronics Co., Ltd.", "TOYOU-FEIJI-ELECTRONICS" }, { 0xC4E984, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x48FEEA, "HOMA B.V.", "HOMA" }, { 0x10DDF4, "Maxway Electronics CO.,LTD", "MAXWAY-ELECTRONICS" }, { 0x080371, "KRG CORPORATE", "KRG-CORPORATE" }, { 0xB43A28, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xACC595, "Graphite Systems", "GRAPHITE" }, { 0xB0D7C5, "Logipix Ltd", "LOGIPIX" }, { 0x9CE7BD, "Winduskorea co., Ltd", "WINDUSKOREA" }, { 0x3842A6, "Ingenieurbuero Stahlkopf", "INGENIEURBUERO-STAHLKOPF" }, { 0xA0BF50, "S.C. ADD-PRODUCTION S.R.L.", "S-C-ADD-PRODUCTION-S-R-L" }, { 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" }, { 0xF0842F, "ADB BROADBAND ITALIA", "ADB-BROADBAND-ITALIA" }, { 0xEC3E09, "PERFORMANCE DESIGNED PRODUCTS, LLC", "PERFORMANCE-DESIGNED-PRODUCTS-LLC" }, { 0x3C6104, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xEC219F, "VidaBox LLC", "VIDABOX-LLC" }, { 0x4C14A3, "TCL Technoly Electronics (Huizhou) Co., Ltd.", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0x98D331, "Shenzhen Bolutek Technology Co.,Ltd.", "SHENZHEN-BOLUTEK" }, { 0x587A4D, "Stonesoft Corporation", "STONESOFT" }, { 0xE89218, "Arcontia International AB", "ARCONTIA-AB" }, { 0x58F387, "HCCP", "HCCP" }, { 0x681590, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xB0793C, "Revolv Inc", "REVOLV" }, { 0x94D771, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x20C6EB, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x700FEC, "Poindus Systems Corp.", "POINDUS" }, { 0xC0C687, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x142BD2, "Armtel Ltd.", "ARMTEL" }, { 0xD4AD2D, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xF845AD, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0x346178, "The Boeing Company", "THE-BOEING-COMPANY" }, { 0x187ED5, "shenzhen kaism technology Co. Ltd", "SHENZHEN-KAISM" }, { 0x8844F6, "Nokia Corporation", "NOKIA" }, { 0x841B38, "Shenzhen Excelsecu Data Technology Co.,Ltd", "SHENZHEN-EXCELSECU-DATA" }, { 0xEC2AF0, "Ypsomed AG", "YPSOMED" }, { 0x044F8B, "Adapteva, Inc.", "ADAPTEVA" }, { 0x88576D, "XTA Electronics Ltd", "XTA-ELECTRONICS" }, { 0x9CB654, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xF83D4E, "Softlink Automation System Co., Ltd", "SOFTLINK-AUTOMATION-SYSTEM" }, { 0xFCD817, "Beijing Hesun Technologies Co.Ltd.", "BEIJING-HESUN-TECHNOLOGIES" }, { 0x909F43, "Accutron Instruments Inc.", "ACCUTRON-INSTRUMENTS" }, { 0xC42795, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x742B62, "FUJITSU LIMITED", "FUJITSU" }, { 0xA0143D, "PARROT SA", "PARROT" }, { 0x58BDF9, "Sigrand", "SIGRAND" }, { 0x344F3F, "IO-Power Technology Co., Ltd.", "IO-POWER" }, { 0x3C1A57, "Cardiopulmonary Corp", "CARDIOPULMONARY" }, { 0xC40938, "Fujian Star-net Communication Co., Ltd", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x6CF97C, "Nanoptix Inc.", "NANOPTIX" }, { 0x08BD43, "NETGEAR INC.,", "NETGEAR" }, { 0xD022BE, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x6CADF8, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x20CEC4, "Peraso Technologies", "PERASO-TECHNOLOGIES" }, { 0x04848A, "7INOVA TECHNOLOGY LIMITED", "7INOVA" }, { 0x205721, "Salix Technology CO., Ltd.", "SALIX" }, { 0x704CED, "TMRG, Inc.", "TMRG" }, { 0xE8516E, "TSMART Inc.", "TSMART" }, { 0xC034B4, "Gigastone Corporation", "GIGASTONE" }, { 0x587E61, "Hisense Electric Co., Ltd", "HISENSE-ELECTRIC" }, { 0x74ADB7, "China Mobile Group Device Co.,Ltd.", "CHINA-MOBILE-GROUP-DEVICE" }, { 0x4C55CC, "ACKme Networks Pty Ltd", "ACKME-NETWORKS-PTY" }, { 0x9C1465, "Edata Elektronik San. ve Tic. A.Ċž.", "EDATA-ELEKTRONIK-SAN-VE-TIC-A-Ċž" }, { 0x489D24, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0xC45444, "QUANTA COMPUTER INC.", "QUANTA" }, { 0xA067BE, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x7C1AFC, "Dalian Co-Edifice Video Technology Co., Ltd", "DALIAN--EDIFICE-VIDEO" }, { 0xB887A8, "Step Ahead Innovations Inc.", "STEP-AHEAD-INNOVATIONS" }, { 0x0896D7, "AVM GmbH", "AVM" }, { 0x140D4F, "Flextronics International", "FLEXTRONICS" }, { 0xB847C6, "SanJet Technology Corp.", "SANJET" }, { 0xCC3540, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x4CDF3D, "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD", "TEAM-ENGINEERS-ADVANCE-TECHNOLOGIES-INDIA-PVT" }, { 0xB85E7B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x70F176, "Data Modul AG", "DATA-MODUL" }, { 0xC462EA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xDC6F00, "Livescribe, Inc.", "LIVESCRIBE" }, { 0xD0737F, "Mini-Circuits", "MINI-CIRCUITS" }, { 0xB4527D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x34BF90, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xD467E7, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x604A1C, "SUYIN Corporation", "SUYIN" }, { 0xE063E5, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x3423BA, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 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" }, { 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" }, { 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" }, { 0xD0D412, "ADB BROADBAND ITALIA", "ADB-BROADBAND-ITALIA" }, { 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" }, { 0x24FD52, "Liteon Technology Corporation", "LITEON" }, { 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" }, { 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" }, { 0x883314, "6278", "6278" }, { 0xF084C9, "zte corporation", "ZTE" }, { 0x84DD20, "6278", "6278" }, { 0xE894F6, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x94ACCA, "trivum technologies GmbH", "TRIVUM-TECHNOLOGIES" }, { 0x7CD844, "Enmotus Inc", "ENMOTUS" }, { 0x40B0FA, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0x24EA40, "Systeme Helmholz GmbH", "SYSTEME-HELMHOLZ" }, { 0x60601F, "SZ DJI TECHNOLOGY CO.,LTD", "SZ-DJI" }, { 0xE0C6B3, "MilDef AB", "MILDEF-AB" }, { 0xFC58FA, "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.", "SHEN-ZHEN-SHI-XIN-ZHONG-XIN" }, { 0xFCDB96, "ENERVALLEY CO., LTD", "ENERVALLEY" }, { 0x74258A, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x78D5B5, "NAVIELEKTRO KY", "NAVIELEKTRO-KY" }, { 0xE067B3, "C-Data Technology Co., Ltd", "C-DATA" }, { 0xCC33BB, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x58E02C, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0xE481B3, "Shenzhen ACT Industrial Co.,Ltd.", "SHENZHEN-ACT-INDUSTRIAL" }, { 0xBC8556, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0xF06BCA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFC8B97, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x8C7716, "LONGCHEER TELECOMMUNICATION LIMITED", "LONGCHEER-TELECOMMUNICATION" }, { 0xB81619, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xC8EEA6, "Shenzhen SHX Technology Co., Ltd", "SHENZHEN-SHX" }, { 0x2C59E5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD49524, "Clover Network, Inc.", "CLOVER-NETWORK" }, { 0xDC825B, "JANUS, spol. s r.o.", "JANUS-SPOL-S-R-O" }, { 0x4494FC, "NETGEAR INC.,", "NETGEAR" }, { 0xB08807, "Strata Worldwide", "STRATA-WORLDWIDE" }, { 0x9893CC, "LG Electronics Inc.", "LG-ELECTRONICS" }, { 0x74D02B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xA4E0E6, "FILIZOLA S.A. PESAGEM E AUTOMACAO", "FILIZOLA-PESAGEM-E-AUTOMACAO" }, { 0x60E00E, "SHINSEI ELECTRONICS CO LTD", "SHINSEI-ELECTRONICS" }, { 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" }, { 0x4C79BA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x381766, "PROMZAKAZ LTD.", "PROMZAKAZ" }, { 0x204C6D, "Hugo Brennenstuhl Gmbh & Co. KG.", "HUGO-BRENNENSTUHL" }, { 0x58EB14, "Proteus Digital Health", "PROTEUS-DIGITAL-HEALTH" }, { 0x081DFB, "Shanghai Mexon Communication Technology Co.,Ltd", "SHANGHAI-MEXON-COMMUNICATION" }, { 0xD0CDE1, "Scientech Electronics", "SCIENTECH-ELECTRONICS" }, { 0xA84481, "Nokia Corporation", "NOKIA" }, { 0x98D6F7, "LG Electronics", "LG-ELECTRONICS" }, { 0x94756E, "QinetiQ North America", "QINETIQ-NORTH-AMERICA" }, { 0x543D37, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x905F2E, "TCT Mobile Limited", "TCT-MOBILE" }, { 0xC0B339, "Comigo Ltd.", "COMIGO" }, { 0xDCC0DB, "Shenzhen Kaiboer Technology Co., Ltd.", "SHENZHEN-KAIBOER" }, { 0xC8D3A3, "D-Link International", "D-LINK" }, { 0x7076DD, "Oxyguard International A/S", "OXYGUARD-A/S" }, { 0xE89AFF, "Fujian Landi Commercial Equipment Co.,Ltd", "FUJIAN-LANDI-COMMERCIAL-EQUIPMENT" }, { 0xE4EEFD, "MR&D Manufacturing", "MR-D-MANUFACTURING" }, { 0x9CD36D, "NETGEAR INC.,", "NETGEAR" }, { 0x105CBF, "DuroByte Inc", "DUROBYTE" }, { 0x30C82A, "Wi-Next s.r.l.", "WI-NEXT-S-R-L" }, { 0x88A3CC, "Amatis Controls", "AMATIS-CONTROLS" }, { 0xEC89F5, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x008C54, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x0C5521, "Axiros GmbH", "AXIROS" }, { 0xA4D856, "Gimbal, Inc", "GIMBAL" }, { 0x4419B6, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0x2C26C5, "zte corporation", "ZTE" }, { 0xBC629F, "Telenet Systems P. Ltd.", "TELENET-P" }, { 0xF47B5E, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0xB47F5E, "Foresight Manufacture (S) Pte Ltd", "FORESIGHT-MANUFACTURE-S-PTE" }, { 0x785517, "SankyuElectronics", "SANKYUELECTRONICS" }, { 0x848E96, "Embertec Pty Ltd", "EMBERTEC-PTY" }, { 0xA80600, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCC3A61, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x18DC56, "Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN-LT" }, { 0x50ABBF, "Hoseo Telecom", "HOSEO-TELECOM" }, { 0xF4C6D7, "blackned GmbH", "BLACKNED" }, { 0x68A40E, "BSH Bosch and Siemens Home Appliances GmbH", "BSH-BOSCH-AND-SIEMENS-HOME-APPLIANCES" }, { 0x5CD2E4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4CCA53, "Skyera, Inc.", "SKYERA" }, { 0xA00363, "Robert Bosch Healthcare GmbH", "ROBERT-BOSCH-HEALTHCARE" }, { 0x4C8FA5, "Jastec", "JASTEC" }, { 0x54E032, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x849CA6, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xC4EDBA, "6278", "6278" }, { 0x34B1F7, "6278", "6278" }, { 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" }, { 0x28CBEB, "One", "ONE" }, { 0x18E8DD, "MODULETEK", "MODULETEK" }, { 0x2C282D, "BBK COMMUNICATIAO TECHNOLOGY CO.,LTD.", "BBK-COMMUNICATIAO" }, { 0x74867A, "Dell Inc", "DELL" }, { 0x4CCC34, "Motorola Solutions Inc.", "MOTOROLA-SOLUTIONS" }, { 0xF82FA8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x882E5A, "storONE", "STORONE" }, { 0xD429EA, "Zimory GmbH", "ZIMORY" }, { 0x4C2578, "Nokia Corporation", "NOKIA" }, { 0xC80E95, "OmniLync Inc.", "OMNILYNC" }, { 0x08EB74, "Humax", "HUMAX" }, { 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" }, { 0xF80BBE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF0F644, "Whitesky Science & Technology Co.,Ltd.", "WHITESKY-SCIENCE" }, { 0x30D357, "Logosol, Inc.", "LOGOSOL" }, { 0x38EAA7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x14F42A, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x2016D8, "Liteon Technology Corporation", "LITEON" }, { 0x2C441B, "Spectrum Medical Limited", "SPECTRUM-MEDICAL" }, { 0x1C5A6B, "Philips Electronics Nederland BV", "PHILIPS-ELECTRONICS-NEDERLAND" }, { 0xA875D6, "FreeTek International Co., Ltd.", "FREETEK" }, { 0x10A743, "SK Mtek Limited", "SK-MTEK" }, { 0xE4A7FD, "Cellco Partnership", "CELLCO-PARTNERSHIP" }, { 0x6CF373, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB85810, "NUMERA, INC.", "NUMERA" }, { 0x2CAB25, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xAC6E1A, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xDC4517, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x507E5D, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x9886B1, "Flyaudio corporation (China)", "FLYAUDIO-CHINA" }, { 0x28B3AB, "Genmark Automation", "GENMARK-AUTOMATION" }, { 0xA0E534, "Stratec Biomedical AG", "STRATEC-BIOMEDICAL" }, { 0x2891D0, "Stage Tec Entwicklungsgesellschaft fĵr professionelle Audiotechnik mbH", "STAGE-TEC-ENTWICKLUNGSGESELLSCHAFT-FĵR-PROFESSIONELLE-AUDIOTECHNIK-MBH" }, { 0xA854B2, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x98291D, "Jaguar de Mexico, SA de CV", "JAGUAR-DE-MEXICO-DE-CV" }, { 0x10F49A, "T3 Innovation", "T3-INNOVATION" }, { 0x1C5A3E, "Samsung Eletronics Co., Ltd (Visual Display Divison)", "SAMSUNG-ELETRONICS-VISUAL-DISPLAY-DIVISON" }, { 0x5865E6, "INFOMARK CO., LTD.", "INFOMARK" }, { 0xBC20A4, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x68AF13, "Futura Mobility", "FUTURA-MOBILITY" }, { 0x90CF6F, "Dlogixs Co Ltd", "DLOGIXS" }, { 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" }, { 0x90B11C, "Dell Inc.", "DELL" }, { 0x5C571A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x78AB60, "ABB Australia", "ABB-AUSTRALIA" }, { 0x24F2DD, "Radiant Zemax LLC", "RADIANT-ZEMAX-LLC" }, { 0x0C1420, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x7427EA, "Elitegroup Computer Systems Co., Ltd.", "ELITEGROUP" }, { 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" }, { 0x683B1E, "Countwise LTD", "COUNTWISE" }, { 0x388EE7, "Fanhattan LLC", "FANHATTAN-LLC" }, { 0x145BD1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 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" }, { 0x702526, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x9C6650, "Glodio Technolies Co.,Ltd Tianjin Branch", "GLODIO-TECHNOLIES-TIANJIN-BRANCH" }, { 0x503955, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xF04F7C, "Private", "PRIVATE" }, { 0x8C3C4A, "NAKAYO TELECOMMUNICATIONS,INC.", "NAKAYO-TELECOMMUNICATIONS" }, { 0x18863A, "DIGITAL ART SYSTEM", "DIGITAL-ART-SYSTEM" }, { 0x20E52A, "NETGEAR INC.,", "NETGEAR" }, { 0x34D7B4, "Tributary Systems, Inc.", "TRIBUTARY" }, { 0xF4B72A, "TIME INTERCONNECT LTD", "TIME-INTERCONNECT" }, { 0xF40F9B, "WAVELINK", "WAVELINK" }, { 0x144319, "Creative&Link Technology Limited", "CREATIVE-LINK" }, { 0xB82410, "Magneti Marelli Slovakia s.r.o.", "MAGNETI-MARELLI-SLOVAKIA-S-R-O" }, { 0xD86CE9, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xA8EF26, "Tritonwave", "TRITONWAVE" }, { 0xF0D3E7, "Sensometrix SA", "SENSOMETRIX" }, { 0x789F87, "Siemens AG I IA PP PRM", "SIEMENS-I-IA-PP-PRM" }, { 0x7C0A50, "J-MEX Inc.", "J-MEX" }, { 0x40F2E9, "IBM", "IBM" }, { 0x74458A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xD4136F, "Asia Pacific Brands", "ASIA-PACIFIC-BRANDS" }, { 0xB077AC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x9C2A70, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA0A130, "DLI Taiwan Branch office", "DLI-TAIWAN-BRANCH-OFFICE" }, { 0x38BC1A, "Meizu technology co.,ltd", "MEIZU" }, { 0xECE915, "STI Ltd", "STI" }, { 0xA81FAF, "KRYPTON POLSKA", "KRYPTON-POLSKA" }, { 0x087BAA, "SVYAZKOMPLEKTSERVICE, LLC", "SVYAZKOMPLEKTSERVICE-LLC" }, { 0xB07994, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x6C9AC9, "Valentine Research, Inc.", "VALENTINE-RESEARCH" }, { 0x289A4B, "SteelSeries ApS", "STEELSERIES-APS" }, { 0xB046FC, "MitraStar Technology Corp.", "MITRASTAR" }, { 0x0CC66A, "Nokia Corporation", "NOKIA" }, { 0x3078C2, "Innowireless, Co. Ltd.", "INNOWIRELESS" }, { 0xC8A030, "6278", "6278" }, { 0x58986F, "Revolution Display", "REVOLUTION-DISPLAY" }, { 0xB8C68E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFC52CE, "Control iD", "CONTROL-ID" }, { 0xE804F3, "Throughtek Co., Ltd.", "THROUGHTEK" }, { 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" }, { 0x3C970E, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 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" }, { 0x04C1B9, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 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" }, { 0x443839, "Cumulus Networks, inc", "CUMULUS-NETWORKS" }, { 0x20F002, "MTData Developments Pty. Ltd.", "MTDATA-DEVELOPMENTS-PTY" }, { 0x008EF2, "NETGEAR INC.,", "NETGEAR" }, { 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" }, { 0x04CE14, "Wilocity LTD.", "WILOCITY" }, { 0x802AFA, "Germaneers GmbH", "GERMANEERS" }, { 0xD867D9, "Cisco Systems, Inc", "CISCO" }, { 0x1C8464, "FORMOSA WIRELESS COMMUNICATION CORP.", "FORMOSA-WIRELESS-COMMUNICATION" }, { 0xB4218A, "Dog Hunter LLC", "DOG-HUNTER-LLC" }, { 0x3C81D8, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 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" }, { 0x386BBB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xDC309C, "Heyrex Limited", "HEYREX" }, { 0xE81324, "GuangZhou Bonsoninfo System CO.,LTD", "GUANGZHOU-BONSONINFO-SYSTEM" }, { 0x0036F8, "Conti Temic microelectronic GmbH", "CONTI-TEMIC-MICROELECTRONIC" }, { 0xC02C7A, "Shen Zhen Horn audio Co., Ltd. ", "SHEN-ZHEN-HORN-AUDIO" }, { 0x2CE412, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xB058C4, "Broadcast Microwave Services, Inc", "BROADCAST-MICROWAVE-SERVICES" }, { 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" }, { 0x183919, "Unicoi Systems", "UNICOI" }, { 0xA4B1E9, "Technicolor", "TECHNICOLOR" }, { 0x30AEF6, "Radio Mobile Access", "RADIO-MOBILE-ACCESS" }, { 0x58343B, "Glovast Technology Ltd.", "GLOVAST" }, { 0x7CFE28, "Salutron Inc.", "SALUTRON" }, { 0x109FA9, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0C715D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC0A364, "3D Systems Massachusetts", "3D-MASSACHUSETTS" }, { 0x98A7B0, "MCST ZAO", "MCST-ZAO" }, { 0x88DC96, "SENAO Networks, Inc.", "SENAO-NETWORKS" }, { 0x4C0B3A, "TCT Mobile Limited", "TCT-MOBILE" }, { 0xC455C2, "Bach-Simpson", "BACH-SIMPSON" }, { 0xECA29B, "Kemppi Oy", "KEMPPI-OY" }, { 0xB40E96, "HERAN ", "HERAN" }, { 0xBC851F, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 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" }, { 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" }, { 0x34BB1F, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x44E8A5, "Myreka Technologies Sdn. Bhd.", "MYREKA-TECHNOLOGIES-SDN-BHD" }, { 0x146A0B, "Cypress Electronics Limited", "CYPRESS-ELECTRONICS" }, { 0xB0750C, "QA Cafe", "QA-CAFE" }, { 0xB4E1EB, "Private", "PRIVATE" }, { 0xFC2A54, "Connected Data, Inc.", "CONNECTED-DATA" }, { 0x183F47, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x209BA5, "JIAXING GLEAD Electronics Co.,Ltd", "JIAXING-GLEAD-ELECTRONICS" }, { 0xFC5090, "SIMEX Sp. z o.o.", "SIMEX-SP-Z-O-O" }, { 0x287184, "Spire Payments", "SPIRE-PAYMENTS" }, { 0x1CB094, "HTC Corporation", "HTC" }, { 0x1CC63C, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x6C8336, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x681605, "Systems And Electronic Development FZCO", "AND-DEVELOPMENT-FZCO" }, { 0x04F17D, "Tarana Wireless", "TARANA-WIRELESS" }, { 0xA0DC04, "Becker-Antriebe GmbH", "BECKER-ANTRIEBE" }, { 0xB85510, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0x8CC121, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x2CBE97, "Ingenieurbuero Bickele und Buehler GmbH", "INGENIEURBUERO-BICKELE-UND-BUEHLER" }, { 0x045A95, "Nokia Corporation", "NOKIA" }, { 0xB826D4, "Furukawa Industrial S.A. Produtos Elİtricos", "FURUKAWA-INDUSTRIAL-PRODUTOS-ELİTRICOS" }, { 0x14E4EC, "mLogic LLC", "MLOGIC-LLC" }, { 0xFC0A81, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 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" }, { 0xC0D962, "Askey Computer Corp.", "ASKEY" }, { 0xA8776F, "Zonoff", "ZONOFF" }, { 0xFC4DD4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xAC1461, "ATAW Co., Ltd.", "ATAW" }, { 0x9C0298, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x286094, "CAPELEC", "CAPELEC" }, { 0x60E956, "Ayla Networks, Inc", "AYLA-NETWORKS" }, { 0xF83553, "Magenta Research Ltd.", "MAGENTA-RESEARCH" }, { 0xDC3C2E, "Manufacturing System Insights, Inc.", "MANUFACTURING-SYSTEM-INSIGHTS" }, { 0x40BC8B, "itelio GmbH", "ITELIO" }, { 0x5891CF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x606720, "Intel Corporate", "INTEL-CORPORATE" }, { 0x903AA0, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x88C36E, "Beijing Ereneben lnformation Technology Limited", "BEIJING-ERENEBEN-LNFORMATION" }, { 0x68ED43, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x902B34, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x48E1AF, "Vity", "VITY" }, { 0x84A6C8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x24B6FD, "Dell Inc", "DELL" }, { 0x9CB70D, "Liteon Technology Corporation", "LITEON" }, { 0x245FDF, "KYOCERA Corporation", "KYOCERA" }, { 0xC0A0DE, "Multi Touch Oy", "MULTI-TOUCH-OY" }, { 0x943AF0, "Nokia Corporation", "NOKIA" }, { 0x4844F7, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x3CA315, "Bless Information & Communications Co., Ltd", "BLESS-INFORMATION-COMMUNICATION" }, { 0xF8DB4C, "PNY Technologies, INC.", "PNY-TECHNOLOGIES" }, { 0xF83094, "Alcatel-Lucent Telecom Limited", "ALCATEL-LUCENT-TELECOM" }, { 0xE01C41, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x2817CE, "Omnisense Ltd", "OMNISENSE" }, { 0x28E608, "Tokheim", "TOKHEIM" }, { 0xE477D4, "Minrray Industry Co.,Ltd ", "MINRRAY-INDUSTRY" }, { 0xA4B980, "Parking BOXX Inc.", "PARKING-BOXX" }, { 0x002D76, "TITECH GmbH", "TITECH" }, { 0xDC7144, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x78A183, "Advidia", "ADVIDIA" }, { 0xF85063, "Verathon", "VERATHON" }, { 0x400E67, "Tremol Ltd.", "TREMOL" }, { 0x901B0E, "Fujitsu Technology Solutions GmbH", "FUJITSU-SOLUTIONS" }, { 0x5C6F4F, "S.A. SISTEL", "SISTEL" }, { 0x6036DD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA090DE, "VEEDIMS,LLC", "VEEDIMS-LLC" }, { 0xF008F1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCCF8F0, "Xi'an HISU Multimedia Technology Co.,Ltd.", "XI-AN-HISU-MULTIMEDIA" }, { 0x30F9ED, "Sony Corporation", "SONY" }, { 0x28C718, "Altierre", "ALTIERRE" }, { 0x441EA1, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x2046A1, "VECOW Co., Ltd", "VECOW" }, { 0x8C271D, "QuantHouse", "QUANTHOUSE" }, { 0x9C8BF1, "The Warehouse Limited", "THE-WAREHOUSE" }, { 0x147DC5, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0xC4CAD9, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 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" }, { 0x744401, "Netgear", "NETGEAR" }, { 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" }, { 0x280DFC, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 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" }, { 0xD8052E, "Skyviia Corporation", "SKYVIIA" }, { 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" }, { 0x4CEB42, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB8A386, "D-Link International", "D-LINK" }, { 0x4833DD, "ZENNIO AVANCE Y TECNOLOGIA, S.L.", "ZENNIO-AVANCE-Y-TECNOLOGIA-S-L" }, { 0xD4D748, "Cisco Systems, Inc", "CISCO" }, { 0x78FE3D, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x9CCAD9, "Nokia Corporation", "NOKIA" }, { 0xF8313E, "endeavour GmbH", "ENDEAVOUR" }, { 0x10FC54, "Shany Electronic Co., Ltd. ", "SHANY" }, { 0xD4CA6D, "Routerboard.com", "ROUTERBOARD-COM" }, { 0xD8E743, "Wush, Inc", "WUSH" }, { 0x8CDE52, "ISSC Technologies Corp.", "ISSC-TECHNOLOGIES" }, { 0xA0F3E4, "Alcatel Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x908FCF, "UNO System Co., Ltd", "UNO-SYSTEM" }, { 0x903CAE, "Yunnan KSEC Digital Technology Co.,Ltd.", "YUNNAN-KSEC-DIGITAL" }, { 0x08A95A, "AzureWave", "AZUREWAVE" }, { 0xE83935, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x000831, "Cisco Systems, Inc", "CISCO" }, { 0xF0620D, "Shenzhen Egreat Tech Corp.,Ltd", "SHENZHEN-EGREAT-TECH" }, { 0x843611, "hyungseul publishing networks", "HYUNGSEUL-PUBLISHING-NETWORKS" }, { 0xDC9FDB, "Ubiquiti Networks, Inc.", "UBIQUITI-NETWORKS" }, { 0xB8FD32, "Zhejiang ROICX Microelectronics", "ZHEJIANG-ROICX-MICROELECTRONICS" }, { 0x307ECB, "SFR", "SFR" }, { 0xD0542D, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 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" }, { 0x94D723, "Shanghai DareGlobal Technologies Co., Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0xECE744, "Omntec mfg. inc", "OMNTEC-MFG" }, { 0x708105, "Cisco Systems, Inc", "CISCO" }, { 0xF8C001, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x00082F, "Cisco Systems, Inc", "CISCO" }, { 0x542018, "Tely Labs", "TELY-LABS" }, { 0x581FEF, "Tuttnaer LTD", "TUTTNAER" }, { 0x58BDA3, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xCC9093, "Hansong Tehnologies", "HANSONG-TEHNOLOGIES" }, { 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" }, { 0x44DC91, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0xF0DEB9, "ShangHai Y&Y Electronics Co., Ltd", "SHANGHAI-Y-Y-ELECTRONICS" }, { 0xAC54EC, "IEEE P1823 Standards Working Group", "IEEE-P1823-STANDARDS-WORKING-GROUP" }, { 0xB820E7, "Guangzhou Horizontal Information & Network Integration Co. Ltd", "GUANGZHOU-HORIZONTAL-INFORMATION-NETWORK-INTEGRATION" }, { 0x842B50, "Huria Co.,Ltd.", "HURIA" }, { 0x98588A, "SYSGRATION Ltd.", "SYSGRATION" }, { 0x0C5A19, "Axtion Sdn Bhd", "AXTION-SDN-BHD" }, { 0x606BBD, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0xA00CA1, "SKTB SKiT", "SKTB-SKIT" }, { 0xE09579, "ORTHOsoft inc, d/b/a Zimmer CAS", "ORTHOSOFT-D/B/A-ZIMMER-CAS" }, { 0xD0C1B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD4D249, "Power Ethernet", "POWER-ETHERNET" }, { 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" }, { 0x94DB49, "SITCORP", "SITCORP" }, { 0x30144A, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x8CD17B, "CG Mobile", "CG-MOBILE" }, { 0x144978, "Digital Control Incorporated", "DIGITAL-CONTROL-INCORPORATED" }, { 0xFC8FC4, "Intelligent Technology Inc.", "INTELLIGENT" }, { 0xF04A2B, "PYRAMID Computer GmbH", "PYRAMID" }, { 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" }, { 0xA0369F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7CF429, "NUUO Inc. ", "NUUO" }, { 0xB8CDA7, "Maxeler Technologies Ltd.", "MAXELER-TECHNOLOGIES" }, { 0xF49461, "NexGen Storage", "NEXGEN-STORAGE" }, { 0x402CF4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x8CB864, "AcSiP Technology Corp.", "ACSIP" }, { 0x804731, "Packet Design, Inc.", "PACKET-DESIGN" }, { 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" }, { 0xD8B377, "HTC Corporation", "HTC" }, { 0x5835D9, "Cisco Systems, Inc", "CISCO" }, { 0x807A7F, "ABB Genway Xiamen Electrical Equipment CO., LTD", "ABB-GENWAY-XIAMEN-ELECTRICAL-EQUIPMENT" }, { 0x1C4593, "6278", "6278" }, { 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" }, { 0x843F4E, "Tri-Tech Manufacturing, Inc.", "TRI-TECH-MANUFACTURING" }, { 0xC83232, "Hunting Innova", "HUNTING-INNOVA" }, { 0x6CC1D2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD059C3, "CeraMicro Technology Corporation", "CERAMICRO" }, { 0x28162E, "2wire", "2WIRE" }, { 0xEC9681, "2276427 Ontario Inc", "2276427-ONTARIO" }, { 0xB8288B, "Parker Hannifin Manufacturing (UK) Ltd", "PARKER-HANNIFIN-MANUFACTURING-UK" }, { 0x944696, "BaudTec Corporation", "BAUDTEC" }, { 0x90342B, "Gatekeeper Systems, Inc.", "GATEKEEPER" }, { 0x10768A, "EoCell", "EOCELL" }, { 0x044665, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 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" }, { 0x18AD4D, "Polostar Technology Corporation", "POLOSTAR" }, { 0x4CA74B, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x549478, "Silvershore Technology Partners", "SILVERSHORE-PARTNERS" }, { 0x5C6B32, "6278", "6278" }, { 0x848F69, "Dell Inc.", "DELL" }, { 0x802E14, "azeti Networks AG", "AZETI-NETWORKS" }, { 0xE8944C, "Cogent Healthcare Systems Ltd", "COGENT-HEALTHCARE" }, { 0x68F895, "Redflow Limited", "REDFLOW" }, { 0xD0131E, "Sunrex Technology Corp", "SUNREX" }, { 0x9C417C, "Hame Technology Co., Limited ", "HAME" }, { 0xBC15A6, "Taiwan Jantek Electronics,Ltd.", "TAIWAN-JANTEK-ELECTRONICS" }, { 0x241A8C, "Squarehead Technology AS", "SQUAREHEAD-AS" }, { 0x1083D2, "Microseven Systems, LLC", "MICROSEVEN-LLC" }, { 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" }, { 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" }, { 0x20D5AB, "Korea Infocom Co.,Ltd.", "KOREA-INFOCOM" }, { 0xF05849, "CareView Communications", "CAREVIEW-COMMUNICATION" }, { 0xE06995, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE0469A, "Netgear", "NETGEAR" }, { 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" }, { 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" }, { 0xC86C87, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xE00C7F, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE0CA94, "Askey Computer", "ASKEY" }, { 0xB4B88D, "Thuh Company", "THUH-COMPANY" }, { 0x60F59C, "CRU-Dataport", "CRU-DATAPORT" }, { 0xC4108A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 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" }, { 0xE42FF6, "Unicore communication Inc.", "UNICORE-COMMUNICATION" }, { 0x3859F9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0x94D93C, "ENELPS", "ENELPS" }, { 0xDC9B1E, "Intercom, Inc.", "INTERCOM" }, { 0x5C7757, "Haivision Network Video", "HAIVISION-NETWORK-VIDEO" }, { 0x3816D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE8B4AE, "Shenzhen C&D Electronics Co.,Ltd", "SHENZHEN-C-D-ELECTRONICS" }, { 0xC45600, "Galleon Embedded Computing", "GALLEON-EMBEDDED-COMPUTING" }, { 0x74D0DC, "ERICSSON AB", "ERICSSON-AB" }, { 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" }, { 0x38D135, "EasyIO Corporation Sdn. Bhd.", "EASYIO-SDN-BHD" }, { 0x184E94, "MESSOA TECHNOLOGIES INC.", "MESSOA-TECHNOLOGIES" }, { 0xC02506, "AVM GmbH", "AVM" }, { 0xA8922C, "LG Electronics", "LG-ELECTRONICS" }, { 0xDC07C1, "HangZhou QiYang Technology Co.,Ltd.", "HANGZHOU-QIYANG" }, { 0x78471D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3872C0, "COMTREND", "COMTREND" }, { 0xF81037, "Atopia Systems, LP", "ATOPIA-LP" }, { 0x64F987, "Avvasi Inc.", "AVVASI" }, { 0x3C7437, "RIM", "RIM" }, { 0x04209A, "Panasonic AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x3C672C, "Sciovid Inc.", "SCIOVID" }, { 0x18D071, "DASAN CO., LTD.", "DASAN" }, { 0x90B8D0, "Joyent, Inc.", "JOYENT" }, { 0x909060, "RSI VIDEO TECHNOLOGIES", "RSI-VIDEO-TECHNOLOGIES" }, { 0x6C504D, "Cisco Systems, Inc", "CISCO" }, { 0x74F612, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x5067F0, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x643409, "BITwave Pte Ltd", "BITWAVE-PTE" }, { 0xD8952F, "6278", "6278" }, { 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" }, { 0xA00BBA, "SAMSUNG ELECTRO-MECHANICS", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x14EE9D, "AirNav Systems LLC", "AIRNAV-LLC" }, { 0x48174C, "MicroPower technologies", "MICROPOWER-TECHNOLOGIES" }, { 0xCC9E00, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xD8FE8F, "IDFone Co., Ltd.", "IDFONE" }, { 0x0006F6, "Cisco Systems, Inc", "CISCO" }, { 0x68DCE8, "PacketStorm Communications", "PACKETSTORM-COMMUNICATION" }, { 0x78223D, "Affirmed Networks", "AFFIRMED-NETWORKS" }, { 0x60C980, "Trymus", "TRYMUS" }, { 0x94CDAC, "Creowave Oy", "CREOWAVE-OY" }, { 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" }, { 0x6C2E85, "SAGEMCOM", "SAGEMCOM" }, { 0x78ACC0, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x204AAA, "Hanscan Spain S.A.", "HANSCAN-SPAIN" }, { 0xF02572, "Cisco Systems, Inc", "CISCO" }, { 0x8091C0, "AgileMesh, Inc.", "AGILEMESH" }, { 0xF05D89, "Dycon Limited", "DYCON" }, { 0xAC02CF, "RW Tecnologia Industria e Comercio Ltda", "RW-TECNOLOGIA-INDUSTRIA-E-COMERCIO-LTDA" }, { 0xA0B662, "Acutvista Innovation Co., Ltd.", "ACUTVISTA-INNOVATION" }, { 0x9067B5, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x989449, "Skyworth Wireless Technology Ltd.", "SKYWORTH-WIRELESS" }, { 0xC8DF7C, "Nokia Corporation", "NOKIA" }, { 0xF8C678, "Carefusion", "CAREFUSION" }, { 0xFC3598, "Favite Inc.", "FAVITE" }, { 0xF8F014, "RackWare Inc.", "RACKWARE" }, { 0x889FFA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE41C4B, "V2 TECHNOLOGY, INC.", "V2" }, { 0xF0F002, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE0143E, "Modoosis Inc.", "MODOOSIS" }, { 0x5C6984, "NUVICO", "NUVICO" }, { 0xACAB8D, "Lyngso Marine A/S", "LYNGSO-MARINE-A/S" }, { 0x181456, "Nokia Corporation", "NOKIA" }, { 0xE8995A, "PiiGAB, Processinformation i Goteborg AB", "PIIGAB-PROCESSINFORMATION-I-GOTEBORG-AB" }, { 0x18F46A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x380197, "TSST Global,Inc", "TSST-GLOBAL" }, { 0xB40142, "GCI Science & Technology Co.,LTD", "GCI-SCIENCE" }, { 0x846EB1, "Park Assist LLC", "PARK-ASSIST-LLC" }, { 0x64DC01, "Static Systems Group PLC", "STATIC-GROUP-PLC" }, { 0x90A4DE, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x1CF5E7, "Turtle Industry Co., Ltd.", "TURTLE-INDUSTRY" }, { 0x9C4A7B, "Nokia Corporation", "NOKIA" }, { 0x2C8065, "HARTING Inc. of North America", "HARTING-OF-NORTH-AMERICA" }, { 0x80C6AB, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x74E7C6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD4E32C, "S. Siedle & Sohne", "S-SIEDLE-SOHNE" }, { 0x081196, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x5C260A, "Dell Inc.", "DELL" }, { 0x64317E, "Dexin Corporation", "DEXIN" }, { 0xE4EC10, "Nokia Corporation", "NOKIA" }, { 0x00D38D, "Hotel Technology Next Generation", "HOTEL-NEXT-GENERATION" }, { 0x3C6278, "SHENZHEN JETNET TECHNOLOGY CO.,LTD.", "SHENZHEN-JETNET" }, { 0xB88E3A, "Infinite Technologies JLT", "INFINITE-TECHNOLOGIES-JLT" }, { 0x74BE08, "ATEK Products, LLC", "ATEK-PRODUCTS-LLC" }, { 0xD82986, "Best Wish Technology LTD", "BEST-WISH" }, { 0xC03B8F, "Minicom Digital Signage", "MINICOM-DIGITAL-SIGNAGE" }, { 0xD48890, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA4218A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x6C0460, "RBH Access Technologies Inc.", "RBH-ACCESS-TECHNOLOGIES" }, { 0x5C864A, "Secret Labs LLC", "SECRET-LABS-LLC" }, { 0xB8BA72, "Cynove", "CYNOVE" }, { 0x443D21, "Nuvolt", "NUVOLT" }, { 0x749050, "Renesas Electronics Corporation", "RENESAS-ELECTRONICS" }, { 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" }, { 0xC44619, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA4561B, "MCOT Corporation", "MCOT" }, { 0x80EE73, "Shuttle Inc.", "SHUTTLE" }, { 0xC0D044, "SAGEMCOM", "SAGEMCOM" }, { 0x44A689, "PROMAX ELECTRONICA SA", "PROMAX-ELECTRONICA" }, { 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" }, { 0x1C659D, "Liteon Technology Corporation", "LITEON" }, { 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" }, { 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" }, { 0x380DD4, "Primax Electronics LTD.", "PRIMAX-ELECTRONICS" }, { 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" }, { 0x100D32, "Embedian, Inc.", "EMBEDIAN" }, { 0xF4DCDA, "Zhuhai Jiahe Communication Technology Co., limited", "ZHUHAI-JIAHE-COMMUNICATION" }, { 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" }, { 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" }, { 0x88532E, "Intel Corporate", "INTEL-CORPORATE" }, { 0xD84606, "Silicon Valley Global Marketing", "SILICON-VALLEY-GLOBAL-MARKETING" }, { 0x5CAC4C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x689234, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xD0E347, "Yoga", "YOGA" }, { 0x84A991, "Cyber Trans Japan Co.,Ltd.", "CYBER-TRANS-JAPAN" }, { 0xC00D7E, "Additech, Inc.", "ADDITECH" }, { 0x68784C, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 0x3CEA4F, "2wire", "2WIRE" }, { 0xAC9B84, "Smak Tecnologia e Automacao", "SMAK-TECNOLOGIA-E-AUTOMACAO" }, { 0x50C58D, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x4C022E, "CMR KOREA CO., LTD", "CMR-KOREA" }, { 0x24A42C, "KOUKAAM a.s.", "KOUKAAM-A-S" }, { 0xE091F5, "Netgear", "NETGEAR" }, { 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" }, { 0x8C56C5, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xCCB888, "AnB Securite s.a.", "ANB-SECURITE" }, { 0xCC2218, "InnoDigital Co., Ltd.", "INNODIGITAL" }, { 0x18C086, "Broadcom Corporation", "BROADCOM" }, { 0xB86491, "CK Telecom Ltd", "CK-TELECOM" }, { 0x80C862, "Openpeak, Inc", "OPENPEAK" }, { 0xE43593, "Hangzhou GoTo technology Co.Ltd", "HANGZHOU-GOTO" }, { 0xE0BC43, "C2 Microsystems, Inc.", "C2-MICROSYSTEMS" }, { 0x8081A5, "TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd", "TONGQING-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 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" }, { 0x409558, "Aisino Corporation", "AISINO" }, { 0xACE348, "MadgeTech, Inc", "MADGETECH" }, { 0x687F74, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0xF40B93, "Research In Motion", "RESEARCH-IN-MOTION" }, { 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" }, { 0xF4FC32, "6278", "6278" }, { 0x2C9127, "Eintechno Corporation", "EINTECHNO" }, { 0xC09C92, "COBY", "COBY" }, { 0x649C8E, "6278", "6278" }, { 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" }, { 0x7071BC, "PEGATRON CORPORATION", "PEGATRON" }, { 0x7884EE, "INDRA ESPACIO S.A.", "INDRA-ESPACIO" }, { 0x2C3F3E, "Alge-Timing GmbH", "ALGE-TIMING" }, { 0xECE09B, "Samsung electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0xC0CFA3, "Creative Electronics & Software, Inc.", "CREATIVE-ELECTRONICS-SOFTWARE" }, { 0x844823, "WOXTER TECHNOLOGY Co. Ltd", "WOXTER" }, { 0xD4823E, "Argosy Technologies, Ltd.", "ARGOSY-TECHNOLOGIES" }, { 0xD0F0DB, "Ericsson", "ERICSSON" }, { 0x34C3AC, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xEC8EAD, "DLX", "DLX" }, { 0xECDE3D, "Lamprey Networks, Inc.", "LAMPREY-NETWORKS" }, { 0x04FE7F, "Cisco Systems, Inc", "CISCO" }, { 0xE8056D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xA87B39, "Nokia Corporation", "NOKIA" }, { 0x00D11C, "ACETEL", "ACETEL" }, { 0x1056CA, "Peplink International Ltd.", "PEPLINK" }, { 0xE83A97, "OCZ Technology Group", "OCZ-GROUP" }, { 0x904716, "RORZE CORPORATION", "RORZE" }, { 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" }, { 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" }, { 0xD8D385, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 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" }, { 0x70F1A1, "Liteon Technology Corporation", "LITEON" }, { 0x38E7D8, "HTC Corporation", "HTC" }, { 0xE02636, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x4CC602, "Radios, Inc.", "RADIOS" }, { 0x3C05AB, "Product Creation Studio", "PRODUCT-CREATION-STUDIO" }, { 0x547FEE, "Cisco Systems, Inc", "CISCO" }, { 0x3C39C3, "JW Electronics Co., Ltd.", "JW-ELECTRONICS" }, { 0x44568D, "PNC Technologies Co., Ltd.", "PNC-TECHNOLOGIES" }, { 0xACD180, "Crexendo Business Solutions, Inc.", "CREXENDO-BUSINESS-SOLUTIONS" }, { 0x18A905, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xAC8317, "Shenzhen Furtunetel Communication Co., Ltd", "SHENZHEN-FURTUNETEL-COMMUNICATION" }, { 0x6416F0, "Shehzhen Huawei Communication Technologies Co., Ltd.", "SHEHZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0xE80B13, "Akib Systems Taiwan, INC", "AKIB-TAIWAN" }, { 0x44C9A2, "Greenwald Industries", "GREENWALD-INDUSTRIES" }, { 0x4456B7, "Spawn Labs, Inc", "SPAWN-LABS" }, { 0x0C6076, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0CEEE6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA09805, "OpenVox Communication Co Ltd", "OPENVOX-COMMUNICATION" }, { 0x502DA2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9CB206, "PROCENTEC", "PROCENTEC" }, { 0x646E6C, "Radio Datacom LLC", "RADIO-DATACOM-LLC" }, { 0x44F459, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xE4751E, "Getinge Sterilization AB", "GETINGE-STERILIZATION-AB" }, { 0xD03761, "6278", "6278" }, { 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" }, { 0x2C8158, "Hon Hai Precision Ind. Co.,Ltd", "HON-HAI-PRECISION-IND" }, { 0x78192E, "NASCENT Technology", "NASCENT" }, { 0x2C0623, "Win Leader Inc.", "WIN-LEADER" }, { 0xC82E94, "Halfa Enterprise Co., Ltd.", "HALFA" }, { 0x0C2755, "Valuable Techologies Limited", "VALUABLE-TECHOLOGIES" }, { 0x849000, "Arnold & Richter Cine Technik", "ARNOLD-RICHTER-CINE-TECHNIK" }, { 0xC87248, "Aplicom Oy", "APLICOM-OY" }, { 0x6C0E0D, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0xEC3091, "Cisco Systems, Inc", "CISCO" }, { 0x3032D4, "Hanilstm Co., Ltd.", "HANILSTM" }, { 0xA09A5A, "Time Domain", "TIME-DOMAIN" }, { 0x64A837, "Juni Korea Co., Ltd", "JUNI-KOREA" }, { 0xB4B5AF, "Minsung Electronics", "MINSUNG-ELECTRONICS" }, { 0x044FAA, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x74D850, "Evrisko Systems", "EVRISKO" }, { 0x1CAFF7, "D-LINK INTERNATIONAL PTE LIMITED", "D-LINK-PTE" }, { 0x6CAC60, "Venetex Corp", "VENETEX" }, { 0xDC0265, "Meditech Kft", "MEDITECH-KFT" }, { 0x986DC8, "TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION", "TOSHIBA-MITSUBISHI-ELECTRIC-INDUSTRIAL" }, { 0x68A1B7, "Honghao Mingchuan Technology (Beijing) CO.,Ltd.", "HONGHAO-MINGCHUAN-BEIJING" }, { 0x7CCFCF, "Shanghai SEARI Intelligent System Co., Ltd", "SHANGHAI-SEARI-INTELLIGENT-SYSTEM" }, { 0x0026AE, "Wireless Measurement Ltd", "WIRELESS-MEASUREMENT" }, { 0x0026AA, "Kenmec Mechanical Engineering Co., Ltd.", "KENMEC-MECHANICAL-ENGINEERING" }, { 0x0026A4, "Novus Produtos Eletronicos Ltda", "NOVUS-PRODUTOS-ELETRONICOS-LTDA" }, { 0x00269E, "Quanta Computer Inc", "QUANTA" }, { 0x002697, "Cheetah Technologies, L.P.", "CHEETAH-TECHNOLOGIES-L-P" }, { 0x002698, "Cisco Systems, Inc", "CISCO" }, { 0x00269D, "M2Mnet Co., Ltd.", "M2MNET" }, { 0x00268B, "Guangzhou Escene Computer Technology Limited", "GUANGZHOU-ESCENE" }, { 0x002691, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x002685, "Digital Innovation", "DIGITAL-INNOVATION" }, { 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" }, { 0x0026C2, "SCDI Co. LTD", "SCDI" }, { 0x0026BC, "General Jack Technology Ltd.", "GENERAL-JACK" }, { 0x0026BA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0026B4, "Ford Motor Company", "FORD-MOTOR-COMPANY" }, { 0x002700, "Shenzhen Siglent Technology Co., Ltd.", "SHENZHEN-SIGLENT" }, { 0x0026FA, "BandRich Inc.", "BANDRICH" }, { 0x0026F4, "Nesslab", "NESSLAB" }, { 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" }, { 0x00271D, "Comba Telecom Systems (China) Ltd.", "COMBA-TELECOM-CHINA" }, { 0x002721, "Shenzhen Baoan Fenda Industrial Co., Ltd", "SHENZHEN-BAOAN-FENDA-INDUSTRIAL" }, { 0x002711, "LanPro Inc", "LANPRO" }, { 0x00270D, "Cisco Systems, Inc", "CISCO" }, { 0x002707, "Lift Complex DS, JSC", "LIFT-COMPLEX-DS-JSC" }, { 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" }, { 0x0025A5, "Walnut Media Network", "WALNUT-MEDIA-NETWORK" }, { 0x0025A0, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00259F, "TechnoDigital Technologies GmbH", "TECHNODIGITAL-TECHNOLOGIES" }, { 0x002599, "Hedon e.d. B.V.", "HEDON-E-D" }, { 0x00267E, "Parrot SA", "PARROT" }, { 0x002678, "Logic Instrument SA", "LOGIC-INSTRUMENT" }, { 0x002672, "AAMP of America", "AAMP-OF-AMERICA" }, { 0x00266C, "Inventec", "INVENTEC" }, { 0x00266B, "SHINE UNION ENTERPRISE LIMITED", "SHINE-UNION" }, { 0x002666, "EFM Networks", "EFM-NETWORKS" }, { 0x002665, "ProtectedLogic Corporation", "PROTECTEDLOGIC" }, { 0x00265F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002659, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002655, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x002651, "Cisco Systems, Inc", "CISCO" }, { 0x002652, "Cisco Systems, Inc", "CISCO" }, { 0x00261B, "LAUREL BANK MACHINES CO., LTD.", "LAUREL-BANK-MACHINES" }, { 0x002614, "KTNF", "KTNF" }, { 0x00260E, "Ablaze Systems, LLC", "ABLAZE-LLC" }, { 0x00260F, "Linn Products Ltd", "LINN-PRODUCTS" }, { 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" }, { 0x0025F2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0025E8, "Idaho Technology", "IDAHO" }, { 0x002646, "SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED", "SHENYANG-TONGFANG-MULTIMEDIA-COMPANY" }, { 0x002640, "Baustem Broadband Technologies, Ltd.", "BAUSTEM-BROADBAND-TECHNOLOGIES" }, { 0x002641, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x002547, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x002527, "Bitrode Corp.", "BITRODE" }, { 0x002524, "Lightcomm Technology Co., Ltd", "LIGHTCOMM" }, { 0x00251F, "ZYNUS VISION INC.", "ZYNUS-VISION" }, { 0x0025E3, "Hanshinit Inc.", "HANSHINIT" }, { 0x0025DE, "Probits Co., LTD.", "PROBITS" }, { 0x0025D7, "CEDO", "CEDO" }, { 0x0025D2, "InpegVision Co., Ltd", "INPEGVISION" }, { 0x0025D1, "Eastern Asia Technology Limited", "EASTERN-ASIA" }, { 0x0025CB, "Reiner SCT", "REINER-SCT" }, { 0x0025C4, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x002592, "Guangzhou Shirui Electronic Co., Ltd", "GUANGZHOU-SHIRUI" }, { 0x00258D, "Haier", "HAIER" }, { 0x002588, "Genie Industries, Inc.", "GENIE-INDUSTRIES" }, { 0x002583, "Cisco Systems, Inc", "CISCO" }, { 0x002579, "J & F Labs", "J-F-LABS" }, { 0x00257E, "NEW POS Technology Limited", "NEW-POS" }, { 0x002572, "Nemo-Q International AB", "NEMO-Q-AB" }, { 0x002566, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00256B, "ATENIX E.E. s.r.l.", "ATENIX-E-E-S-R-L" }, { 0x00256C, "Azimut Production Association JSC", "AZIMUT-PRODUCTION-ASSOCIATION-JSC" }, { 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" }, { 0x002502, "NaturalPoint", "NATURALPOINT" }, { 0x0024FB, "Private", "PRIVATE" }, { 0x0024F6, "MIYOSHI ELECTRONICS CORPORATION", "MIYOSHI-ELECTRONICS" }, { 0x00255F, "SenTec AG", "SENTEC" }, { 0x00255A, "Tantalus Systems Corp.", "TANTALUS" }, { 0x002559, "Syphan Technologies Ltd", "SYPHAN-TECHNOLOGIES" }, { 0x002553, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x00254C, "Videon Central, Inc.", "VIDEON-CENTRAL" }, { 0x002446, "MMB Research Inc.", "MMB-RESEARCH" }, { 0x002441, "Wanzl Metallwarenfabrik GmbH", "WANZL-METALLWARENFABRIK" }, { 0x002437, "Motorola - BSG", "MOTOROLA---BSG" }, { 0x00243C, "S.A.A.A.", "A-A" }, { 0x002430, "Ruby Tech Corp.", "RUBY-TECH" }, { 0x0024EF, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0024EA, "iris-GmbH infrared & intelligent sensors", "IRIS--INFRARED-INTELLIGENT-SENSORS" }, { 0x0024E8, "Dell Inc.", "DELL" }, { 0x0024E3, "CAO Group", "CAO-GROUP" }, { 0x0024DC, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x0024D7, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0024D5, "Winward Industrial Limited", "WINWARD-INDUSTRIAL" }, { 0x0024D0, "Shenzhen SOGOOD Industry CO.,LTD.", "SHENZHEN-SOGOOD-INDUSTRY" }, { 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" }, { 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" }, { 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" }, { 0x002491, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x002496, "Ginzinger electronic systems", "GINZINGER" }, { 0x00247E, "Universal Global Scientific Industrial Co., Ltd", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x002483, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0x00239E, "Jiangsu Lemote Technology Corporation Limited", "JIANGSU-LEMOTE" }, { 0x002398, "Vutlan sro", "VUTLAN-SRO" }, { 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" }, { 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" }, { 0x0023D6, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x0023C3, "LogMeIn, Inc.", "LOGMEIN" }, { 0x002401, "D-Link Corporation", "D-LINK" }, { 0x002400, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0023FB, "IP Datatel, LLC.", "IP-DATATEL-LLC" }, { 0x0023F3, "Glocom, Inc.", "GLOCOM" }, { 0x0023EF, "Zuend Systemtechnik AG", "ZUEND-SYSTEMTECHNIK" }, { 0x0023E9, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x0024C9, "Broadband Solutions Group", "BROADBAND-SOLUTIONS-GROUP" }, { 0x0024C4, "Cisco Systems, Inc", "CISCO" }, { 0x0024BF, "CIAT", "CIAT" }, { 0x0024BA, "6278", "6278" }, { 0x0024B5, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0024B0, "ESAB AB", "ESAB-AB" }, { 0x0024A9, "Ag Leader Technology", "LEADER" }, { 0x00238E, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x00238A, "Ciena Corporation", "CIENA" }, { 0x002384, "GGH Engineering s.r.l.", "GGH-ENGINEERING-S-R-L" }, { 0x00237D, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x002374, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002368, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x00236F, "DAQ System", "DAQ-SYSTEM" }, { 0x002307, "FUTURE INNOVATION TECH CO.,LTD", "FUTURE-INNOVATION-TECH" }, { 0x0022FB, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002302, "Cobalt Digital, Inc.", "COBALT-DIGITAL" }, { 0x0022EB, "Data Respons A/S", "DATA-RESPONS-A/S" }, { 0x0022EC, "IDEALBT TECHNOLOGY CORPORATION", "IDEALBT" }, { 0x0022F1, "Private", "PRIVATE" }, { 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" }, { 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" }, { 0x0022A5, "6278", "6278" }, { 0x002219, "Dell Inc", "DELL" }, { 0x00221A, "Audio Precision", "AUDIO-PRECISION" }, { 0x002213, "PCI CORPORATION", "PCI" }, { 0x00220D, "Cisco Systems, Inc", "CISCO" }, { 0x00220C, "Cisco Systems, Inc", "CISCO" }, { 0x002207, "Inteno Broadband Technology AB", "INTENO-BROADBAND-AB" }, { 0x002202, "Excito Elektronik i Skne AB", "EXCITO-ELEKTRONIK-I-SKNE-AB" }, { 0x0021FD, "DSTA S.L.", "DSTA-S-L" }, { 0x0021F9, "WIRECOM Technologies", "WIRECOM-TECHNOLOGIES" }, { 0x0021F8, "Enseo, Inc.", "ENSEO" }, { 0x0021F3, "Si14 SpA", "SI14-SPA" }, { 0x0021EC, "Solutronic GmbH", "SOLUTRONIC" }, { 0x0021E6, "Starlight Video Limited", "STARLIGHT-VIDEO" }, { 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" }, { 0x002342, "Coffee Equipment Company", "COFFEE-EQUIPMENT-COMPANY" }, { 0x002336, "METEL s.r.o.", "METEL-S-R-O" }, { 0x00233D, "Novero holding B.V.", "NOVERO-HOLDING" }, { 0x002248, "Microsoft Corporation", "MICROSOFT" }, { 0x00223F, "NETGEAR Inc.", "NETGEAR" }, { 0x00223E, "IRTrans GmbH", "IRTRANS" }, { 0x002239, "Indiana Life Sciences Incorporated", "INDIANA-LIFE-SCIENCES-INCORPORATED" }, { 0x002232, "Design Design Technology Ltd", "DESIGN-DESIGN" }, { 0x00222C, "Ceton Corp", "CETON" }, { 0x002226, "Avaak, Inc.", "AVAAK" }, { 0x00221F, "eSang Technologies Co., Ltd.", "ESANG-TECHNOLOGIES" }, { 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" }, { 0x002315, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00230E, "Gorba AG", "GORBA" }, { 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" }, { 0x002244, "Chengdu Linkon Communications Device Co., Ltd", "CHENGDU-LINKON-COMMUNICATION-DEVICE" }, { 0x00224F, "Byzoro Networks Ltd.", "BYZORO-NETWORKS" }, { 0x00229F, "Sensys Traffic AB", "SENSYS-TRAFFIC-AB" }, { 0x002298, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 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" }, { 0x002181, "Si2 Microsystems Limited", "SI2-MICROSYSTEMS" }, { 0x002180, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00217B, "Bastec AB", "BASTEC-AB" }, { 0x002174, "AvaLAN Wireless", "AVALAN-WIRELESS" }, { 0x00216E, "Function ATI (Huizhou) Telecommunications Co., Ltd.", "FUNCTION-ATI-HUIZHOU-TELECOMMUNICATIONS" }, { 0x002168, "iVeia, LLC", "IVEIA-LLC" }, { 0x002161, "Yournet Inc.", "YOURNET" }, { 0x00215C, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x001F9E, "Cisco Systems, Inc", "CISCO" }, { 0x001F92, "VideoIQ, Inc.", "VIDEOIQ" }, { 0x001F97, "BERTANA srl", "BERTANA-SRL" }, { 0x001F8B, "Cache IQ", "CACHE-IQ" }, { 0x001FFC, "Riccius+Sohn GmbH", "RICCIUS+SOHN" }, { 0x001FF7, "Nakajima All Precision Co., Ltd.", "NAKAJIMA-ALL-PRECISION" }, { 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" }, { 0x001FE4, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x001FDD, "GDI LLC", "GDI-LLC" }, { 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" }, { 0x002105, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x00215B, "Inotive", "INOTIVE" }, { 0x002155, "Cisco Systems, Inc", "CISCO" }, { 0x00214E, "GS Yuasa Power Supply Ltd.", "GS-YUASA-POWER-SUPPLY" }, { 0x002149, "China Daheng Group ,Inc.", "CHINA-DAHENG-GROUP" }, { 0x002142, "Advanced Control Systems doo", "ADVANCED-CONTROL-DOO" }, { 0x002140, "EN Technologies Inc.", "EN-TECHNOLOGIES" }, { 0x002138, "Cepheid", "CEPHEID" }, { 0x00212E, "dresden-elektronik", "DRESDEN-ELEKTRONIK" }, { 0x001FD8, "A-TRUST COMPUTER CORPORATION", "A-TRUST" }, { 0x001FD3, "RIVA Networks Inc.", "RIVA-NETWORKS" }, { 0x001FCE, "QTECH LLC", "QTECH-LLC" }, { 0x001FC7, "Casio Hitachi Mobile Comunications Co., Ltd.", "CASIO-HITACHI-MOBILE-COMUNICATIONS" }, { 0x001FC0, "Control Express Finland Oy", "CONTROL-EXPRESS-FINLAND-OY" }, { 0x001FBB, "Xenatech Co.,LTD", "XENATECH" }, { 0x001FB4, "SmartShare Systems", "SMARTSHARE" }, { 0x0021B4, "APRO MEDIA CO., LTD", "APRO-MEDIA" }, { 0x0021AE, "ALCATEL-LUCENT FRANCE - WTD", "ALCATEL-LUCENT-FRANCE---WTD" }, { 0x0021A7, "Hantle System Co., Ltd.", "HANTLE-SYSTEM" }, { 0x0021A2, "EKE-Electronics Ltd.", "EKE-ELECTRONICS" }, { 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" }, { 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" }, { 0x0021BA, "6278", "6278" }, { 0x001F84, "Gigle Semiconductor", "GIGLE-SEMICONDUCTOR" }, { 0x001F7F, "Phabrix Limited", "PHABRIX" }, { 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" }, { 0x001F46, "Nortel", "NORTEL" }, { 0x001F40, "Speakercraft Inc.", "SPEAKERCRAFT" }, { 0x001F38, "POSITRON", "POSITRON" }, { 0x001F3D, "Qbit GmbH", "QBIT" }, { 0x001F37, "Genesis I&C", "GENESIS-I-C" }, { 0x001F2A, "ACCM", "ACCM" }, { 0x001F31, "Radiocomp", "RADIOCOMP" }, { 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" }, { 0x001E25, "Intek Digital Inc", "INTEK-DIGITAL" }, { 0x001E19, "GTRI", "GTRI" }, { 0x001E1F, "Nortel", "NORTEL" }, { 0x001E6D, "IT R&D Center", "IT-R-D-CENTER" }, { 0x001E6E, "Shenzhen First Mile Communications Ltd", "SHENZHEN-FIRST-MILE-COMMUNICATION" }, { 0x001E68, "Quanta Computer", "QUANTA" }, { 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" }, { 0x001EF2, "Micro Motion Inc", "MICRO-MOTION" }, { 0x001EF7, "Cisco Systems, Inc", "CISCO" }, { 0x001EF1, "Servimat", "SERVIMAT" }, { 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" }, { 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" }, { 0x001E7E, "Nortel", "NORTEL" }, { 0x001E78, "Owitek Technology Ltd.,", "OWITEK" }, { 0x001E74, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001DDC, "HangZhou DeChangLong Tech&Info Co.,Ltd", "HANGZHOU-DECHANGLONG-TECH-INFO" }, { 0x001DE1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001DE4, "Visioneered Image Systems", "VISIONEERED-IMAGE" }, { 0x001DE2, "Radionor Communications", "RADIONOR-COMMUNICATION" }, { 0x001DC9, "GainSpan Corp.", "GAINSPAN" }, { 0x001DD0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DC2, "XORTEC OY", "XORTEC-OY" }, { 0x001DBD, "Versamed Inc.", "VERSAMED" }, { 0x001E0F, "Briot International", "BRIOT" }, { 0x001E08, "Centec Networks Inc", "CENTEC-NETWORKS" }, { 0x001E03, "LiComm Co., Ltd.", "LICOMM" }, { 0x001DFC, "KSIC", "KSIC" }, { 0x001DF5, "Sunshine Co,LTD", "SUNSHINE" }, { 0x001DF6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001DF0, "Vidient Systems, Inc.", "VIDIENT" }, { 0x001DE9, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001ECE, "BISA Technologies (Hong Kong) Limited", "BISA-TECHNOLOGIES-HONG-KONG" }, { 0x001EC8, "Rapid Mobile (Pty) Ltd", "RAPID-MOBILE-PTY" }, { 0x001EC7, "2Wire, Inc.", "2WIRE" }, { 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" }, { 0x001EA4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001EA9, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001EAA, "E-Senza Technologies GmbH", "E-SENZA-TECHNOLOGIES" }, { 0x001E9D, "Recall Technologies, Inc.", "RECALL-TECHNOLOGIES" }, { 0x001F25, "MBS GmbH", "MBS" }, { 0x001F1E, "Astec Technology Co., Ltd", "ASTEC" }, { 0x001F17, "IDX Company, Ltd.", "IDX-COMPANY" }, { 0x001F18, "Hakusan.Mfg.Co,.Ltd", "HAKUSAN-MFG" }, { 0x001F12, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x001F0A, "Nortel", "NORTEL" }, { 0x001EFE, "LEVEL s.r.o.", "LEVEL-S-R-O" }, { 0x001F03, "NUM AG", "NUM" }, { 0x001F04, "Granch Ltd.", "GRANCH" }, { 0x001D04, "Zipit Wireless, Inc.", "ZIPIT-WIRELESS" }, { 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" }, { 0x001C4C, "Petrotest Instruments", "PETROTEST-INSTRUMENTS" }, { 0x001C39, "S Netsystems Inc.", "S-NETSYSTEMS" }, { 0x001C40, "VDG-Security bv", "VDG-SECURITY" }, { 0x001C32, "Telian Corporation", "TELIAN" }, { 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" }, { 0x001C17, "Nortel", "NORTEL" }, { 0x001C16, "ThyssenKrupp Elevator", "THYSSENKRUPP-ELEVATOR" }, { 0x001CA2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x001CA6, "Win4NET", "WIN4NET" }, { 0x001CAB, "Meyer Sound Laboratories, Inc.", "MEYER-SOUND-LABORATORIES" }, { 0x001CAC, "Qniq Technology Corp.", "QNIQ" }, { 0x001CA1, "AKAMAI TECHNOLOGIES, INC.", "AKAMAI-TECHNOLOGIES" }, { 0x001C9C, "Nortel", "NORTEL" }, { 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" }, { 0x001CDB, "CARPOINT CO.,LTD", "CARPOINT" }, { 0x001CD6, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001CD5, "ZeeVee, Inc.", "ZEEVEE" }, { 0x001CCF, "LIMETEK", "LIMETEK" }, { 0x001CC8, "INDUSTRONIC Industrie-Electronic GmbH & Co. KG", "INDUSTRONIC-INDUSTRIE" }, { 0x001CBC, "CastGrabber, LLC", "CASTGRABBER-LLC" }, { 0x001CB2, "BPT SPA", "BPT-SPA" }, { 0x001C6E, "Newbury Networks, Inc.", "NEWBURY-NETWORKS" }, { 0x001C69, "Packet Vision Ltd", "PACKET-VISION" }, { 0x001C62, "LG Electronics Inc", "LG-ELECTRONICS" }, { 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" }, { 0x001D8D, "Raytek GmbH", "RAYTEK" }, { 0x001D86, "Shinwa Industries(China) Ltd.", "SHINWA-INDUSTRIES-CHINA" }, { 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" }, { 0x001D6A, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x001D64, "Adam Communications Systems Int Ltd", "ADAM-COMMUNICATION-INT" }, { 0x001DB6, "BestComm Networks, Inc.", "BESTCOMM-NETWORKS" }, { 0x001DB0, "FuJian HengTong Information Technology Co.,Ltd", "FUJIAN-HENGTONG-INFORMATION" }, { 0x001DAC, "Gigamon Systems LLC", "GIGAMON-LLC" }, { 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" }, { 0x001D2D, "Pylone, Inc.", "PYLONE" }, { 0x001D2E, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001D28, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0x001D5D, "Control Dynamics Pty. Ltd.", "CONTROL-DYNAMICS-PTY" }, { 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" }, { 0x001D3B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D34, "SYRIS Technology Corp", "SYRIS" }, { 0x001B1B, "Siemens AG,", "SIEMENS" }, { 0x001B1D, "Phoenix International Co., Ltd", "PHOENIX" }, { 0x001B22, "Palit Microsystems ( H.K.) Ltd.", "PALIT-MICROSYSTEMS-H-K" }, { 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" }, { 0x001AFC, "ModusLink Corporation", "MODUSLINK" }, { 0x001AF2, "Dynavisions Schweiz AG", "DYNAVISIONS-SCHWEIZ" }, { 0x001B82, "Taiwan Semiconductor Co., Ltd.", "TAIWAN-SEMICONDUCTOR" }, { 0x001B7B, "The Tintometer Ltd", "THE-TINTOMETER" }, { 0x001B74, "MiraLink Corporation", "MIRALINK" }, { 0x001B6F, "Teletrak Ltd", "TELETRAK" }, { 0x001B68, "Modnnet Co., Ltd", "MODNNET" }, { 0x001B62, "JHT Optoelectronics Co.,Ltd.", "JHT-OPTOELECTRONICS" }, { 0x001B61, "Digital Acoustics, LLC", "DIGITAL-ACOUSTICS-LLC" }, { 0x001B5C, "Azuretec Co., Ltd.", "AZURETEC" }, { 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" }, { 0x001A9C, "RightHand Technologies, Inc.", "RIGHTHAND-TECHNOLOGIES" }, { 0x001AA1, "Cisco Systems, Inc", "CISCO" }, { 0x001A8B, "CHUNIL ELECTRIC IND., CO.", "CHUNIL-ELECTRIC-IND" }, { 0x001A95, "Hisense Mobile Communications Technoligy Co.,Ltd.", "HISENSE-MOBILE-COMMUNICATION-TECHNOLIGY" }, { 0x001A7F, "GCI Science&Technology Co.,Ltd.", "GCI-SCIENCE" }, { 0x001A84, "V One Multimedia Pte Ltd", "V-ONE-MULTIMEDIA-PTE" }, { 0x001A75, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 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" }, { 0x001B2F, "NETGEAR Inc.", "NETGEAR" }, { 0x001B31, "Neural Image. Co. Ltd.", "NEURAL-IMAGE" }, { 0x001B2A, "Cisco Systems, Inc", "CISCO" }, { 0x001BAB, "Telchemy, Incorporated", "TELCHEMY-INCORPORATED" }, { 0x001BB0, "BHARAT ELECTRONICS", "BHARAT-ELECTRONICS" }, { 0x001BA4, "S.A.E Afikim", "E-AFIKIM" }, { 0x001B9F, "Calyptech Pty Ltd", "CALYPTECH-PTY" }, { 0x001B9E, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x001B98, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x001B9D, "Novus Security Sp. z o.o.", "NOVUS-SECURITY-SP-Z-O-O" }, { 0x001B8C, "JMicron Technology Corp.", "JMICRON" }, { 0x001B91, "EFKON AG", "EFKON" }, { 0x001B87, "Deepsound Tech. Co., Ltd", "DEEPSOUND-TECH" }, { 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" }, { 0x001AAA, "Analogic Corp.", "ANALOGIC" }, { 0x001C10, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001C09, "SAE Electronic Co.,Ltd.", "SAE" }, { 0x001C04, "Airgain, Inc.", "AIRGAIN" }, { 0x001BFD, "Dignsys Inc.", "DIGNSYS" }, { 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" }, { 0x001BDA, "UTStarcom Inc", "UTSTARCOM" }, { 0x001BD4, "Cisco Systems, Inc", "CISCO" }, { 0x001BCD, "DAVISCOMMS (S) PTE LTD", "DAVISCOMMS-S-PTE" }, { 0x001BC8, "MIURA CO.,LTD", "MIURA" }, { 0x001BC1, "HOLUX Technology, Inc.", "HOLUX" }, { 0x001BB7, "Alta Heights Technology Corp.", "ALTA-HEIGHTS" }, { 0x001935, "DUERR DENTAL AG", "DUERR-DENTAL" }, { 0x00193A, "OESOLUTIONS", "OESOLUTIONS" }, { 0x00193C, "HighPoint Technologies Incorporated", "HIGHPOINT-TECHNOLOGIES-INCORPORATED" }, { 0x00192B, "Aclara RF Systems Inc.", "ACLARA-RF" }, { 0x001930, "Cisco Systems, Inc", "CISCO" }, { 0x00191D, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00191F, "Microlink communications Inc.", "MICROLINK-COMMUNICATION" }, { 0x001924, "LBNL Engineering", "LBNL-ENGINEERING" }, { 0x0019F5, "Imagination Technologies Ltd", "IMAGINATION-TECHNOLOGIES" }, { 0x0019EE, "CARLO GAVAZZI CONTROLS SPA-Controls Division", "CARLO-GAVAZZI-CONTROLS-SPA-CONTROLS-DIVISION" }, { 0x0019F0, "UNIONMAN TECHNOLOGY CO.,LTD", "UNIONMAN" }, { 0x0019E2, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x0019C5, "SONY Computer Entertainment inc,", "SONY-ENTERTAINMENT" }, { 0x0019C0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001A1C, "GT&T Engineering Pte Ltd", "GT-T-ENGINEERING-PTE" }, { 0x001A21, "Indac B.V.", "INDAC" }, { 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" }, { 0x0019FD, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x0018E8, "Hacetron Corporation", "HACETRON" }, { 0x0018EF, "Escape Communications, Inc.", "ESCAPE-COMMUNICATION" }, { 0x0018E3, "Visualgate Systems, Inc.", "VISUALGATE" }, { 0x001990, "ELM DATA Co., Ltd.", "ELM-DATA" }, { 0x001989, "Sonitrol Corporation", "SONITROL" }, { 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" }, { 0x001A45, "GN Netcom as", "GN-NETCOM-AS" }, { 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" }, { 0x001A39, "Merten GmbH&CoKG", "MERTEN-COKG" }, { 0x001A28, "ASWT Co., LTD. Taiwan Branch H.K.", "ASWT-TAIWAN-BRANCH-H-K" }, { 0x0019B4, "Intellio Ltd", "INTELLIO" }, { 0x0019B9, "Dell Inc.", "DELL" }, { 0x0019A1, "LG INFORMATION & COMM.", "LG-INFORMATION-COMM" }, { 0x0019A6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001965, "YuHua TelTech (ShangHai) Co., Ltd.", "YUHUA-TELTECH-SHANGHAI" }, { 0x00195B, "D-Link Corporation", "D-LINK" }, { 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" }, { 0x001819, "Cisco Systems, Inc", "CISCO" }, { 0x00181B, "TaiJin Metal Co., Ltd.", "TAIJIN-METAL" }, { 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" }, { 0x0017E4, "6278", "6278" }, { 0x0017EB, "6278", "6278" }, { 0x00178B, "Teledyne Technologies Incorporated", "TELEDYNE-TECHNOLOGIES-INCORPORATED" }, { 0x00177F, "Worldsmart Retech", "WORLDSMART-RETECH" }, { 0x001786, "wisembed", "WISEMBED" }, { 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" }, { 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" }, { 0x00182E, "XStreamHD, LLC", "XSTREAMHD-LLC" }, { 0x001833, "6278", "6278" }, { 0x001814, "Mitutoyo Corporation", "MITUTOYO" }, { 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" }, { 0x0018A0, "Cierma Ascenseurs", "CIERMA-ASCENSEURS" }, { 0x001883, "FORMOSA21 INC.", "FORMOSA21" }, { 0x00188A, "Infinova LLC", "INFINOVA-LLC" }, { 0x00188F, "Montgomery Technology, Inc.", "MONTGOMERY" }, { 0x0017BB, "Syrinx Industrial Electronics", "SYRINX-INDUSTRIAL-ELECTRONICS" }, { 0x0017B4, "Remote Security Systems, LLC", "REMOTE-SECURITY-LLC" }, { 0x0017B6, "Aquantia", "AQUANTIA" }, { 0x0017AF, "Enermet", "ENERMET" }, { 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" }, { 0x0018DC, "Prostar Co., Ltd.", "PROSTAR" }, { 0x0018E1, "Verkerk Service Systemen", "VERKERK-SERVICE-SYSTEMEN" }, { 0x0018D0, "AtRoad, A Trimble Company", "ATROAD-A-TRIMBLE-COMPANY" }, { 0x0018D5, "REIGNCOM", "REIGNCOM" }, { 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" }, { 0x0017D8, "Magnum Semiconductor, Inc.", "MAGNUM-SEMICONDUCTOR" }, { 0x0017DD, "Clipsal Australia", "CLIPSAL-AUSTRALIA" }, { 0x0017DF, "Cisco Systems, Inc", "CISCO" }, { 0x0017C7, "MARA Systems Consulting AB", "MARA-CONSULTING-AB" }, { 0x0017CE, "Screen Service Spa", "SCREEN-SERVICE-SPA" }, { 0x0017D3, "Etymotic Research, Inc.", "ETYMOTIC-RESEARCH" }, { 0x0017C2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x00185C, "EDS Lab Pte Ltd", "EDS-LAB-PTE" }, { 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" }, { 0x00187C, "INTERCROSS, LLC", "INTERCROSS-LLC" }, { 0x00187E, "RGB Spectrum", "RGB-SPECTRUM" }, { 0x00186B, "Sambu Communics CO., LTD.", "SAMBU-COMMUNICS" }, { 0x001870, "E28 Shanghai Limited", "E28-SHANGHAI" }, { 0x001877, "Amplex A/S", "AMPLEX-A/S" }, { 0x001664, "Prod-El SpA", "PROD-EL-SPA" }, { 0x001669, "MRV Communication (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x00165D, "AirDefense, Inc.", "AIRDEFENSE" }, { 0x001656, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001651, "Exeo Systems", "EXEO" }, { 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" }, { 0x001639, "UBIQUAM Co.,Ltd", "UBIQUAM" }, { 0x001744, "Araneo Ltd.", "ARANEO" }, { 0x00174B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00173C, "Extreme Engineering Solutions", "EXTREME-ENGINEERING-SOLUTIONS" }, { 0x00173F, "Belkin Corporation", "BELKIN" }, { 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" }, { 0x0016BF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0016B8, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0016B3, "Photonicbridges (China) Co., Ltd.", "PHOTONICBRIDGES-CHINA" }, { 0x0016AC, "Toho Technology Corp.", "TOHO" }, { 0x0016B1, "KBS", "KBS" }, { 0x0016A7, "AWETA G&P", "AWETA-G-P" }, { 0x00169B, "Alstom Transport", "ALSTOM-TRANSPORT" }, { 0x0016A2, "CentraLite Systems, Inc.", "CENTRALITE" }, { 0x001696, "QDI Technology (H.K.) Limited", "QDI-H-K" }, { 0x00168F, "GN Netcom as", "GN-NETCOM-AS" }, { 0x001688, "ServerEngines LLC", "SERVERENGINES-LLC" }, { 0x00168A, "id-Confirm Inc", "ID-CONFIRM" }, { 0x001683, "WEBIO International Co.,.Ltd.", "WEBIO" }, { 0x00167C, "iRex Technologies BV", "IREX-TECHNOLOGIES" }, { 0x001677, "Bihl + Wiedemann GmbH", "BIHL-+-WIEDEMANN" }, { 0x001670, "SKNET Corporation", "SKNET" }, { 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" }, { 0x0016FB, "SHENZHEN MTC CO.,LTD.", "SHENZHEN-MTC" }, { 0x001700, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001702, "Osung Midicom Co., Ltd", "OSUNG-MIDICOM" }, { 0x0016EF, "Koko Fitness, Inc.", "KOKO-FITNESS" }, { 0x0016F4, "Eidicom Co., Ltd.", "EIDICOM" }, { 0x00163A, "YVES TECHNOLOGY CO., LTD.", "YVES" }, { 0x001634, "Mathtech, Inc.", "MATHTECH" }, { 0x00162D, "STNet Co., Ltd.", "STNET" }, { 0x001628, "Ultra Electronics Manufacturing and Card Systems", "ULTRA-ELECTRONICS-MANUFACTURING-AND-CARD" }, { 0x001621, "Colorado Vnet", "COLORADO-VNET" }, { 0x001615, "Nittan Company, Limited", "NITTAN-COMPANY" }, { 0x00161A, "Dametric AB", "DAMETRIC-AB" }, { 0x00160B, "TVWorks LLC", "TVWORKS-LLC" }, { 0x001610, "Carina Technology", "CARINA" }, { 0x001604, "Sigpro", "SIGPRO" }, { 0x0015FE, "SCHILLING ROBOTICS LLC", "SCHILLING-ROBOTICS-LLC" }, { 0x0015FD, "Complete Media Systems", "COMPLETE-MEDIA" }, { 0x0015FF, "Novatel Wireless, Inc.", "NOVATEL-WIRELESS" }, { 0x0015F8, "Kingtronics Industrial Co. Ltd.", "KINGTRONICS-INDUSTRIAL" }, { 0x0015EC, "Boca Devices LLC", "BOCA-DEVICES-LLC" }, { 0x0015F1, "KYLINK Communications Corp.", "KYLINK-COMMUNICATION" }, { 0x0016E8, "Sigma Designs, Inc.", "SIGMA-DESIGNS" }, { 0x0016ED, "Digital Safety Technologies, Inc", "DIGITAL-SAFETY-TECHNOLOGIES" }, { 0x0016DC, "ARCHOS", "ARCHOS" }, { 0x0016E1, "SiliconStor, Inc.", "SILICONSTOR" }, { 0x0016D7, "Sunways AG", "SUNWAYS" }, { 0x0016C4, "SiRF Technology, Inc.", "SIRF" }, { 0x0016C6, "North Atlantic Industries", "NORTH-ATLANTIC-INDUSTRIES" }, { 0x0016D2, "Caspian", "CASPIAN" }, { 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" }, { 0x0014D7, "Datastore Technology Corp", "DATASTORE" }, { 0x0014CB, "LifeSync Corporation", "LIFESYNC" }, { 0x0014D0, "BTI Systems Inc.", "BTI" }, { 0x0014BF, "18247", "18247" }, { 0x0014C4, "Vitelcom Mobile Technology", "VITELCOM-MOBILE" }, { 0x0014BE, "Wink communication technology CO.LTD", "WINK-COMMUNICATION" }, { 0x0014B8, "Hill-Rom", "HILL-ROM" }, { 0x0014BD, "incNETWORKS, Inc", "INCNETWORKS" }, { 0x0014AE, "Wizlogics Co., Ltd.", "WIZLOGICS" }, { 0x0014B3, "CoreStar International Corp", "CORESTAR" }, { 0x0014A7, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00149B, "Nokota Communications, LLC", "NOKOTA-COMMUNICATION-LLC" }, { 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" }, { 0x001589, "D-MAX Technology Co.,Ltd", "D-MAX" }, { 0x00157D, "POSDATA CO., LTD.", "POSDATA" }, { 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" }, { 0x001560, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00147B, "Iteris, Inc.", "ITERIS" }, { 0x001474, "K40 Electronics", "K40-ELECTRONICS" }, { 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" }, { 0x0015B7, "Toshiba", "TOSHIBA" }, { 0x0015B9, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0015B8, "Tahoe", "TAHOE" }, { 0x0015B2, "Advanced Industrial Computer, Inc.", "ADVANCED-INDUSTRIAL" }, { 0x0015AE, "kyung il", "KYUNG-IL" }, { 0x0015AD, "Accedian Networks", "ACCEDIAN-NETWORKS" }, { 0x0015A8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001559, "Securaplane Technologies, Inc.", "SECURAPLANE-TECHNOLOGIES" }, { 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" }, { 0x001529, "N3 Corporation", "N3" }, { 0x001507, "Renaissance Learning Inc", "RENAISSANCE-LEARNING" }, { 0x001500, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x0014E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0014ED, "Airak, Inc.", "AIRAK" }, { 0x0014DE, "Sage Instruments Inc.", "SAGE-INSTRUMENTS" }, { 0x0014E3, "mm-lab GmbH", "MM-LAB" }, { 0x0015E5, "Cheertek Inc.", "CHEERTEK" }, { 0x0015DB, "Canesta Inc.", "CANESTA" }, { 0x0015D4, "Emitor AB", "EMITOR-AB" }, { 0x0015CF, "ARRIS International", "ARRIS" }, { 0x0015C8, "FlexiPanel Ltd", "FLEXIPANEL" }, { 0x0015C3, "Ruf Telematik AG", "RUF-TELEMATIK" }, { 0x0015C1, "SONY Computer Entertainment inc,", "SONY-ENTERTAINMENT" }, { 0x0015C2, "3M Germany", "3M-GERMANY" }, { 0x0015BE, "Iqua Ltd.", "IQUA" }, { 0x001530, "EMC Corporation", "EMC" }, { 0x001524, "Numatics, Inc.", "NUMATICS" }, { 0x00151D, "M2I CORPORATION", "M2I" }, { 0x001513, "EFS sas", "EFS-SAS" }, { 0x00150C, "AVM GmbH", "AVM" }, { 0x001455, "Coder Electronics Corporation", "CODER-ELECTRONICS" }, { 0x001444, "Grundfos Holding", "GRUNDFOS-HOLDING" }, { 0x00144B, "Hifn, Inc.", "HIFN" }, { 0x00143F, "Hotway Technology Corporation", "HOTWAY" }, { 0x001438, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 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" }, { 0x00130A, "Nortel", "NORTEL" }, { 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" }, { 0x0013BA, "ReadyLinks Inc", "READYLINKS" }, { 0x0013BE, "Virtual Conexions", "VIRTUAL-CONEXIONS" }, { 0x0013B9, "BM SPA", "BM-SPA" }, { 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" }, { 0x00141B, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x00135A, "Project T&E Limited", "PROJECT-T-E" }, { 0x00135F, "Cisco Systems, Inc", "CISCO" }, { 0x001360, "Cisco Systems, Inc", "CISCO" }, { 0x001352, "Naztec, Inc.", "NAZTEC" }, { 0x001346, "D-Link Corporation", "D-LINK" }, { 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" }, { 0x001333, "BaudTec Corporation", "BAUDTEC" }, { 0x001339, "CCV Deutschland GmbH", "CCV-DEUTSCHLAND" }, { 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" }, { 0x0013EE, "JBX Designs Inc.", "JBX-DESIGNS" }, { 0x0013ED, "PSIA", "PSIA" }, { 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" }, { 0x0013CA, "Pico Digital", "PICO-DIGITAL" }, { 0x0013D1, "KIRK telecom A/S", "KIRK-TELECOM-A/S" }, { 0x0013C3, "Cisco Systems, Inc", "CISCO" }, { 0x0013C4, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 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" }, { 0x001372, "Dell Inc", "DELL" }, { 0x001366, "Neturity Technologies Inc.", "NETURITY-TECHNOLOGIES" }, { 0x00114B, "Francotyp-Postalia GmbH", "FRANCOTYP-POSTALIA" }, { 0x001145, "ValuePoint Networks", "VALUEPOINT-NETWORKS" }, { 0x00113F, "Alcatel DI", "ALCATEL-DI" }, { 0x001138, "TAISHIN CO., LTD.", "TAISHIN" }, { 0x001133, "Siemens Austria SIMEA", "SIEMENS-AUSTRIA-SIMEA" }, { 0x001132, "Synology Incorporated", "SYNOLOGY-INCORPORATED" }, { 0x001129, "Paradise Datacom Ltd.", "PARADISE-DATACOM" }, { 0x00112E, "CEICOM", "CEICOM" }, { 0x001128, "Streamit", "STREAMIT" }, { 0x0011D4, "NetEnrich, Inc", "NETENRICH" }, { 0x0011D9, "TiVo", "TIVO" }, { 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" }, { 0x00125C, "Green Hills Software, Inc.", "GREEN-HILLS-SOFTWARE" }, { 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" }, { 0x00123F, "Dell Inc", "DELL" }, { 0x00122D, "SiNett Corporation", "SINETT" }, { 0x001232, "LeWiz Communications Inc.", "LEWIZ-COMMUNICATION" }, { 0x001223, "Pixim", "PIXIM" }, { 0x001228, "Data Ltd.", "DATA" }, { 0x00121C, "PARROT S.A.", "PARROT" }, { 0x001210, "WideRay Corp", "WIDERAY" }, { 0x001215, "iStor Networks, Inc.", "ISTOR-NETWORKS" }, { 0x001216, "ICP Internet Communication Payment AG", "ICP-INTERNET-COMMUNICATION-PAYMENT" }, { 0x001204, "u10 Networks, Inc.", "U10-NETWORKS" }, { 0x001209, "Fastrax Ltd", "FASTRAX" }, { 0x0011FD, "KORG INC.", "KORG" }, { 0x001203, "ActivNetworks", "ACTIVNETWORKS" }, { 0x0012A5, "Stargen, Inc.", "STARGEN" }, { 0x0012AA, "IEE, Inc.", "IEE" }, { 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" }, { 0x001288, "2Wire, Inc", "2WIRE" }, { 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" }, { 0x001171, "DEXTER Communications, Inc.", "DEXTER-COMMUNICATION" }, { 0x001165, "Znyx Networks", "ZNYX-NETWORKS" }, { 0x00116A, "Domo Ltd", "DOMO" }, { 0x001160, "ARTDIO Company Co., LTD", "ARTDIO-COMPANY" }, { 0x001154, "Webpro Technologies Inc.", "WEBPRO-TECHNOLOGIES" }, { 0x00115B, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x00127C, "SWEGON AB", "SWEGON-AB" }, { 0x001281, "March Networks S.p.A.", "MARCH-NETWORKS-S-P-A" }, { 0x00127B, "VIA Networking Technologies, Inc.", "VIA-NETWORKING-TECHNOLOGIES" }, { 0x001275, "Sentilla Corporation", "SENTILLA" }, { 0x00126E, "Seidel Elektronik GmbH Nfg.KG", "SEIDEL-ELEKTRONIK-NFG" }, { 0x001269, "Value Electronics", "VALUE-ELECTRONICS" }, { 0x001262, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 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" }, { 0x000EE8, "zioncom", "ZIONCOM" }, { 0x000EEF, "Private", "PRIVATE" }, { 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" }, { 0x000E8A, "Avara Technologies Pty. Ltd.", "AVARA-TECHNOLOGIES-PTY" }, { 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" }, { 0x000EBC, "Paragon Fidelity GmbH", "PARAGON-FIDELITY" }, { 0x000EB0, "Solutions Radio BV", "SOLUTIONS-RADIO" }, { 0x000EB5, "Ecastle Electronics Co., Ltd.", "ECASTLE-ELECTRONICS" }, { 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" }, { 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" }, { 0x000F4E, "Cellink", "CELLINK" }, { 0x000F41, "Zipher Ltd", "ZIPHER" }, { 0x000F48, "Polypix Inc.", "POLYPIX" }, { 0x000FC2, "Uniwell Corporation", "UNIWELL" }, { 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" }, { 0x000FA3, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x000F92, "Microhard Systems Inc.", "MICROHARD" }, { 0x000F99, "APAC opto Electronics Inc.", "APAC-OPTO-ELECTRONICS" }, { 0x000F8D, "FAST TV-Server AG", "FAST-TV-SERVER" }, { 0x000F86, "Research In Motion Limited", "RESEARCH-IN-MOTION" }, { 0x000F80, "Trinity Security Systems,Inc.", "TRINITY-SECURITY" }, { 0x000F7F, "UBSTORAGE Co.,Ltd.", "UBSTORAGE" }, { 0x000FFD, "Glorytek Network Inc.", "GLORYTEK-NETWORK" }, { 0x000FEE, "XTec, Incorporated", "XTEC-INCORPORATED" }, { 0x000FF4, "Guntermann & Drunck GmbH", "GUNTERMANN-DRUNCK" }, { 0x000FE8, "Lobos, Inc.", "LOBOS" }, { 0x000FED, "Anam Electronics Co., Ltd", "ANAM-ELECTRONICS" }, { 0x000FDB, "Westell Technologies", "WESTELL-TECHNOLOGIES" }, { 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" }, { 0x00111B, "Targa Systems Div L-3 Communications Canada", "TARGA-DIV-L-3-COMMUNICATION-CANADA" }, { 0x001122, "CIMSYS Inc", "CIMSYS" }, { 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" }, { 0x000DD5, "O'RITE TECHNOLOGY CO.,LTD", "O-RITE" }, { 0x000DDA, "ALLIED TELESIS K.K.", "ALLIED-TELESIS-K-K" }, { 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" }, { 0x000DB6, "Broadcom Corporation", "BROADCOM" }, { 0x000DAF, "Plexus Corp (UK) Ltd", "PLEXUS-UK" }, { 0x000DAB, "Parker Hannifin GmbH Electromechanical Division Europe", "PARKER-HANNIFIN-ELECTROMECHANICAL-DIVISION-EUROPE" }, { 0x000D6F, "Ember Corporation", "EMBER" }, { 0x000D69, "TMT&D Corporation", "TMT-D" }, { 0x000D70, "Datamax Corporation", "DATAMAX" }, { 0x000D62, "Funkwerk Dabendorf GmbH", "FUNKWERK-DABENDORF" }, { 0x000D5D, "Raritan Computer, Inc", "RARITAN" }, { 0x000D56, "Dell Inc", "DELL" }, { 0x000D50, "Galazar Networks", "GALAZAR-NETWORKS" }, { 0x000D4A, "Steag ETA-Optik", "STEAG-ETA-OPTIK" }, { 0x000D4F, "Kenwood Corporation", "KENWOOD" }, { 0x000D46, "Parker SSD Drives", "PARKER-SSD-DRIVES" }, { 0x000D42, "Newbest Development Limited", "NEWBEST-DEVELOPMENT" }, { 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" }, { 0x000D88, "D-Link Corporation", "D-LINK" }, { 0x000D82, "PHS srl", "PHS-SRL" }, { 0x000D81, "Pepperl+Fuchs GmbH", "PEPPERL+FUCHS" }, { 0x000D75, "Kobian Pte Ltd - Taiwan Branch", "KOBIAN-PTE---TAIWAN-BRANCH" }, { 0x000D7C, "Codian Ltd", "CODIAN" }, { 0x000D3C, "i.Tech Dynamic Ltd", "I-TECH-DYNAMIC" }, { 0x000D36, "Wu Han Routon Electronic Co., Ltd", "WU-HAN-ROUTON" }, { 0x000D3B, "Microelectronics Technology Inc.", "MICROELECTRONICS" }, { 0x000D2F, "AIN Comm.Tech.Co., LTD", "AIN-COMM-TECH" }, { 0x000D2A, "Scanmatic AS", "SCANMATIC-AS" }, { 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" }, { 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" }, { 0x000E5C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000E57, "Iworld Networking, Inc.", "IWORLD-NETWORKING" }, { 0x000E50, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x000D09, "Yuehua(Zhuhai) Electronic CO. LTD", "YUEHUA-ZHUHAI" }, { 0x000D10, "Embedtronics Oy", "EMBEDTRONICS-OY" }, { 0x000D04, "Foxboro Eckardt Development GmbH", "FOXBORO-ECKARDT-DEVELOPMENT" }, { 0x000CF7, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000CF8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000CFD, "Hyundai ImageQuest Co.,Ltd.", "HYUNDAI-IMAGEQUEST" }, { 0x000CF1, "Intel Corporation", "INTEL" }, { 0x000CE5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000CEA, "aphona Kommunikationssysteme", "APHONA-KOMMUNIKATIONSSYSTEME" }, { 0x000CD9, "Itcare Co., Ltd", "ITCARE" }, { 0x000CD3, "Prettl Elektronik Radeberg GmbH", "PRETTL-ELEKTRONIK-RADEBERG" }, { 0x000CDA, "FreeHand Systems, Inc.", "FREEHAND" }, { 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" }, { 0x000E3A, "Cirrus Logic", "CIRRUS-LOGIC" }, { 0x000E33, "Shuko Electronics Co.,Ltd", "SHUKO-ELECTRONICS" }, { 0x000E2D, "Hyundai Digital Technology Co.,Ltd.", "HYUNDAI-DIGITAL" }, { 0x000E2E, "EDIMAX TECHNOLOGY CO., LTD.", "EDIMAX" }, { 0x000E20, "ACCESS Systems Americas, Inc.", "ACCESS-AMERICAS" }, { 0x000E27, "Crere Networks, Inc.", "CRERE-NETWORKS" }, { 0x000E14, "Visionary Solutions, Inc.", "VISIONARY-SOLUTIONS" }, { 0x000E1B, "IAV GmbH", "IAV" }, { 0x000E07, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x000E0C, "Intel Corporation", "INTEL" }, { 0x000DFA, "Micro Control Systems Ltd.", "MICRO-CONTROL" }, { 0x000E00, "Atrie", "ATRIE" }, { 0x000DF4, "Watertek Co.", "WATERTEK" }, { 0x000DF9, "NDS Limited", "NDS" }, { 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" }, { 0x000CDF, "PULNiX America, Inc", "PULNIX-AMERICA" }, { 0x000CC7, "Intelligent Computer Solutions Inc.", "INTELLIGENT-SOLUTIONS" }, { 0x000CCC, "Aeroscout Ltd.", "AEROSCOUT" }, { 0x000CBA, "Jamex, Inc.", "JAMEX" }, { 0x000CB4, "AutoCell Laboratories, Inc.", "AUTOCELL-LABORATORIES" }, { 0x000CB9, "LEA", "LEA" }, { 0x000CC0, "Genera Oy", "GENERA-OY" }, { 0x000C34, "Vixen Co., Ltd.", "VIXEN" }, { 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" }, { 0x000BED, "ELM Inc.", "ELM" }, { 0x000BF2, "Chih-Kan Technology Co., Ltd.", "CHIH-KAN" }, { 0x000C49, "Dangaard Telecom RTC Division A/S", "DANGAARD-TELECOM-RTC-DIVISION-A/S" }, { 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" }, { 0x000C74, "RIVERTEC CORPORATION", "RIVERTEC" }, { 0x000C76, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x000C7B, "ALPHA PROJECT Co.,Ltd.", "ALPHA-PROJECT" }, { 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" }, { 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" }, { 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" }, { 0x000BA1, "SYSCOM Ltd.", "SYSCOM" }, { 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" }, { 0x000B85, "Cisco Systems, Inc", "CISCO" }, { 0x000B7F, "Align Engineering LLC", "ALIGN-ENGINEERING-LLC" }, { 0x000B84, "BODET", "BODET" }, { 0x000B86, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x000B6C, "Sychip Inc.", "SYCHIP" }, { 0x000B73, "Kodeos Communications", "KODEOS-COMMUNICATION" }, { 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" }, { 0x000B1D, "LayerZero Power Systems, Inc.", "LAYERZERO-POWER" }, { 0x000B24, "AirLogic", "AIRLOGIC" }, { 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" }, { 0x000AF7, "Broadcom Corp.", "BROADCOM" }, { 0x000AE3, "YANG MEI TECHNOLOGY CO., LTD", "YANG-MEI" }, { 0x000AEA, "ADAM ELEKTRONIK LTD. ĊžTI", "ADAM-ELEKTRONIK-ĊžTI" }, { 0x000ADE, "Happy Communication Co., Ltd.", "HAPPY-COMMUNICATION" }, { 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" }, { 0x000BCA, "DATAVAN International Corporation", "DATAVAN" }, { 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" }, { 0x000B78, "TAIFATECH INC.", "TAIFATECH" }, { 0x000B60, "Cisco Systems, Inc", "CISCO" }, { 0x000B65, "Sy.A.C. srl", "SY-A-C-SRL" }, { 0x000B57, "Silicon Laboratories", "SILICON-LABORATORIES" }, { 0x000B5C, "Newtech Co.,Ltd", "NEWTECH" }, { 0x000B4F, "Verifone, INC.", "VERIFONE" }, { 0x000B43, "Microscan Systems, Inc.", "MICROSCAN" }, { 0x000B48, "sofrel", "SOFREL" }, { 0x000B4A, "Visimetrics (UK) Ltd", "VISIMETRICS-UK" }, { 0x0009C1, "PROCES-DATA A/S", "PROCES-DATA-A/S" }, { 0x0009C4, "Medicore Co., Ltd", "MEDICORE" }, { 0x0009BC, "Digital Safety Technologies, Inc", "DIGITAL-SAFETY-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x000A47, "Allied Vision Technologies", "ALLIED-VISION-TECHNOLOGIES" }, { 0x000A39, "LoPA Information Technology", "LOPA-INFORMATION" }, { 0x000A40, "Crown Audio -- Harmanm International", "CROWN-AUDIO----HARMANM" }, { 0x000A45, "Audio-Technica Corp.", "AUDIO-TECHNICA" }, { 0x000A34, "Identicard Systems Incorporated", "IDENTICARD-INCORPORATED" }, { 0x000957, "Supercaller, Inc.", "SUPERCALLER" }, { 0x00095C, "Philips Medical Systems - Cardiac and Monitoring Systems (CM", "PHILIPS-MEDICAL---CARDIAC-AND-MONITORING-CM" }, { 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" }, { 0x000938, "Allot Communications", "ALLOT-COMMUNICATION" }, { 0x000931, "Future Internet, Inc.", "FUTURE-INTERNET" }, { 0x000990, "ACKSYS Communications & systems", "ACKSYS-COMMUNICATION" }, { 0x000996, "RDI", "RDI" }, { 0x00098F, "Cetacean Networks", "CETACEAN-NETWORKS" }, { 0x00098A, "EqualLogic Inc", "EQUALLOGIC" }, { 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" }, { 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" }, { 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" }, { 0x00092A, "MYTECS Co.,Ltd.", "MYTECS" }, { 0x00091E, "Firstech Technology Corp.", "FIRSTECH" }, { 0x000925, "VSN Systemen BV", "VSN-SYSTEMEN" }, { 0x000918, "SAMSUNG TECHWIN CO.,LTD", "SAMSUNG-TECHWIN" }, { 0x000912, "Cisco Systems, Inc", "CISCO" }, { 0x000917, "WEM Technology Inc", "WEM" }, { 0x00090B, "MTL Instruments PLC", "MTL-INSTRUMENTS-PLC" }, { 0x000905, "iTEC Technologies Ltd.", "ITEC-TECHNOLOGIES" }, { 0x0008FF, "Trilogy Communications Ltd", "TRILOGY-COMMUNICATION" }, { 0x000906, "Esteem Networks", "ESTEEM-NETWORKS" }, { 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" }, { 0x000A77, "Bluewire Technologies LLC", "BLUEWIRE-TECHNOLOGIES-LLC" }, { 0x000A79, "corega K.K", "COREGA-K-K" }, { 0x000A2D, "Cabot Communications Limited", "CABOT-COMMUNICATION" }, { 0x000A22, "Amperion Inc", "AMPERION" }, { 0x000A16, "Lassen Research", "LASSEN-RESEARCH" }, { 0x000A1B, "Stream Labs", "STREAM-LABS" }, { 0x000A05, "Widax Corp.", "WIDAX" }, { 0x000A08, "ALPINE ELECTRONICS, INC.", "ALPINE-ELECTRONICS" }, { 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" }, { 0x0008FB, "SonoSite, Inc.", "SONOSITE" }, { 0x0008F1, "Voltaire", "VOLTAIRE" }, { 0x0008F2, "C&S Technology", "C-S" }, { 0x0008F7, "Hitachi Ltd, Semiconductor & Integrated Circuits Gr", "HITACHI-SEMICONDUCTOR-INTEGRATED-CIRCUITS-GR" }, { 0x0008E8, "Excel Master Ltd.", "EXCEL-MASTER" }, { 0x0008ED, "ST&T Instrument Corp.", "ST-T-INSTRUMENT" }, { 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" }, { 0x000718, "iCanTek Co., Ltd.", "ICANTEK" }, { 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" }, { 0x0008C4, "Hikari Co.,Ltd.", "HIKARI" }, { 0x0008BE, "XENPAK MSA Group", "XENPAK-MSA-GROUP" }, { 0x0008B8, "E.F. Johnson", "E-F-JOHNSON" }, { 0x0008B1, "ProQuent Systems", "PROQUENT" }, { 0x0008AB, "EnerLinx.com, Inc.", "ENERLINX-COM" }, { 0x0008AC, "Eltromat GmbH", "ELTROMAT" }, { 0x0008A5, "Peninsula Systems Inc.", "PENINSULA" }, { 0x00089F, "EFM Networks", "EFM-NETWORKS" }, { 0x000899, "Netbind, Inc.", "NETBIND" }, { 0x00089E, "Beijing Enter-Net co.LTD", "BEIJING-ENTER-NET" }, { 0x000895, "DIRC Technologie GmbH & Co.KG", "DIRC-TECHNOLOGIE" }, { 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" }, { 0x00080D, "Toshiba", "TOSHIBA" }, { 0x000806, "Raonet Systems, Inc.", "RAONET" }, { 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" }, { 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" }, { 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" }, { 0x00079B, "Aurora Networks", "AURORA-NETWORKS" }, { 0x000795, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x00078F, "Emkay Innovative Products", "EMKAY-INNOVATIVE-PRODUCTS" }, { 0x000788, "Clipcomm, Inc.", "CLIPCOMM" }, { 0x000782, "Oracle Corporation ", "ORACLE" }, { 0x000779, "Sungil Telecom Co., Ltd.", "SUNGIL-TELECOM" }, { 0x000778, "GERSTEL GmbH & Co. KG", "GERSTEL" }, { 0x000772, "Alcatel Shanghai Bell Co., Ltd.", "ALCATEL-SHANGHAI-BELL" }, { 0x00076C, "Daehanet, Inc.", "DAEHANET" }, { 0x000768, "Danfoss A/S", "DANFOSS-A/S" }, { 0x00075C, "Eastman Kodak Company", "EASTMAN-KODAK-COMPANY" }, { 0x000761, "Logitech Europe SA", "LOGITECH-EUROPE" }, { 0x000762, "Group Sense Limited", "GROUP-SENSE" }, { 0x0007F6, "Qqest Software Systems", "QQEST-SOFTWARE" }, { 0x0007FD, "LANergy Ltd.", "LANERGY" }, { 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" }, { 0x0007D1, "Spectrum Signal Processing Inc.", "SPECTRUM-SIGNAL-PROCESSING" }, { 0x0007CE, "Cabletime Limited", "CABLETIME" }, { 0x0007C8, "Brain21, Inc.", "BRAIN21" }, { 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" }, { 0x0005E4, "Red Lion Controls Inc.", "RED-LION-CONTROLS" }, { 0x0005EB, "Blue Ridge Networks, Inc.", "BLUE-RIDGE-NETWORKS" }, { 0x0005F7, "Analog Devices, Inc.", "ANALOG-DEVICES" }, { 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" }, { 0x0005CB, "ROIS Technologies, Inc.", "ROIS-TECHNOLOGIES" }, { 0x0005D2, "DAP Technologies", "DAP-TECHNOLOGIES" }, { 0x0005B8, "Electronic Design Associates, Inc.", "DESIGN-ASSOCIATES" }, { 0x0005BF, "JustEzy Technology, Inc.", "JUSTEZY" }, { 0x0006EA, "ELZET80 Mikrocomputer GmbH&Co. KG", "ELZET80-MIKROCOMPUTER" }, { 0x0006E9, "Intime Corp.", "INTIME" }, { 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" }, { 0x000647, "Etrali S.A.", "ETRALI" }, { 0x0006D2, "Tundra Semiconductor Corp.", "TUNDRA-SEMICONDUCTOR" }, { 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" }, { 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" }, { 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" }, { 0x000641, "ITCN", "ITCN" }, { 0x00063D, "Microwave Data Systems Inc.", "MICROWAVE-DATA" }, { 0x000631, "Calix", "CALIX" }, { 0x000630, "Adtranz Sweden", "ADTRANZ-SWEDEN" }, { 0x000637, "Toptrend-Meta Information (ShenZhen) Inc.", "TOPTREND-META-INFORMATION-SHENZHEN" }, { 0x00057F, "Acqis Technology", "ACQIS" }, { 0x000579, "Universal Control Solution Corp.", "UNIVERSAL-CONTROL-SOLUTION" }, { 0x000585, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 0x000575, "CDS-Electronics BV", "CDS-ELECTRONICS" }, { 0x00056F, "Innomedia Technologies Pvt. Ltd.", "INNOMEDIA-TECHNOLOGIES-PVT" }, { 0x000569, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x000568, "Piltofish Networks AB", "PILTOFISH-NETWORKS-AB" }, { 0x000562, "Digital View Limited", "DIGITAL-VIEW" }, { 0x00055C, "Kowa Company, Ltd.", "KOWA-COMPANY" }, { 0x000556, "360 Systems", "360" }, { 0x00054F, "Private", "PRIVATE" }, { 0x000550, "Vcomms Connect Limited", "VCOMMS-CONNECT" }, { 0x000545, "Internet Photonics", "INTERNET-PHOTONICS" }, { 0x00053F, "VisionTek, Inc.", "VISIONTEK" }, { 0x000546, "KDDI Network & Solultions Inc.", "KDDI-NETWORK-SOLULTIONS" }, { 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" }, { 0x00068D, "SEPATON, Inc.", "SEPATON" }, { 0x000687, "Omnitron Systems Technology, Inc.", "OMNITRON" }, { 0x000680, "Card Access, Inc.", "CARD-ACCESS" }, { 0x000677, "SICK AG", "SICK" }, { 0x000673, "TKH Security Solutions USA", "TKH-SECURITY-SOLUTIONS-USA" }, { 0x000666, "Roving Networks", "ROVING-NETWORKS" }, { 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" }, { 0x00058B, "IPmental, Inc.", "IPMENTAL" }, { 0x000592, "Pultek Corp.", "PULTEK" }, { 0x00058C, "Opentech Inc.", "OPENTECH" }, { 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" }, { 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" }, { 0x0003C1, "Packet Dynamics Ltd", "PACKET-DYNAMICS" }, { 0x0003BD, "OmniCluster Technologies, Inc.", "OMNICLUSTER-TECHNOLOGIES" }, { 0x0003B8, "NetKit Solutions, LLC", "NETKIT-SOLUTIONS-LLC" }, { 0x0003B6, "QSI Corporation", "QSI" }, { 0x000509, "AVOC Nishimura Ltd.", "AVOC-NISHIMURA" }, { 0x000503, "ICONAG", "ICONAG" }, { 0x00050A, "ICS Spa", "ICS-SPA" }, { 0x0004FF, "Acronet Co., Ltd.", "ACRONET" }, { 0x000500, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x0004E3, "Accton Technology Corp.", "ACCTON" }, { 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" }, { 0x000358, "Hanyang Digitech Co., Ltd.", "HANYANG-DIGITECH" }, { 0x00034D, "Chiaro Networks, Ltd.", "CHIARO-NETWORKS" }, { 0x000341, "Axon Digital Design", "AXON-DIGITAL-DESIGN" }, { 0x00033E, "Tateyama System Laboratory Co., Ltd.", "TATEYAMA-SYSTEM-LABORATORY" }, { 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" }, { 0x0004BD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x0004A3, "Microchip Technology, Inc.", "MICROCHIP" }, { 0x0003B2, "Radware", "RADWARE" }, { 0x000457, "Universal Access Technology, Inc.", "UNIVERSAL-ACCESS" }, { 0x000451, "Medrad, Inc.", "MEDRAD" }, { 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" }, { 0x000333, "Digitel Co., Ltd.", "DIGITEL" }, { 0x00033A, "Silicon Wave, Inc.", "SILICON-WAVE" }, { 0x00032B, "GAI Datenfunksysteme GmbH", "GAI-DATENFUNKSYSTEME" }, { 0x00032E, "Scope Information Management, Ltd.", "SCOPE-INFORMATION-MANAGEMENT" }, { 0x000327, "ACT'L", "ACT-L" }, { 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" }, { 0x000306, "Fusion In Tech Co., Ltd.", "FUSION-IN-TECH" }, { 0x00049D, "Ipanema Technologies", "IPANEMA-TECHNOLOGIES" }, { 0x000497, "MacroSystem Digital Video AG", "MACROSYSTEM-DIGITAL-VIDEO" }, { 0x000490, "Optical Access", "OPTICAL-ACCESS" }, { 0x00048B, "Poscon Corporation", "POSCON" }, { 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" }, { 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" }, { 0x00037E, "PORTech Communications, Inc.", "PORTECH-COMMUNICATION" }, { 0x000383, "Metera Networks, Inc.", "METERA-NETWORKS" }, { 0x000377, "Gigabit Wireless", "GIGABIT-WIRELESS" }, { 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" }, { 0x0003FA, "TiMetra Networks", "TIMETRA-NETWORKS" }, { 0x0003F5, "Chip2Chip", "CHIP2CHIP" }, { 0x0003EE, "MKNet Corporation", "MKNET" }, { 0x0003E8, "Wavelength Digital Limited", "WAVELENGTH-DIGITAL" }, { 0x00020E, "ECI Telecom, Ltd", "ECI-TELECOM" }, { 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" }, { 0x0001E6, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0001ED, "SETA Corp.", "SETA" }, { 0x0001E9, "Litton Marine Systems B.V.", "LITTON-MARINE" }, { 0x0001DA, "WINCOMM Corporation", "WINCOMM" }, { 0x0001E1, "Kinpo Electronics, Inc.", "KINPO-ELECTRONICS" }, { 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" }, { 0x000181, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00018D, "AudeSi Technologies", "AUDESI-TECHNOLOGIES" }, { 0x000193, "Hanbyul Telecom Co., Ltd.", "HANBYUL-TELECOM" }, { 0x00019A, "LEUNIG GmbH", "LEUNIG" }, { 0x000102, "3COM CORPORATION", "3COM" }, { 0x000109, "Nagano Japan Radio Co., Ltd.", "NAGANO-JAPAN-RADIO" }, { 0x000115, "EXTRATECH CORPORATION", "EXTRATECH" }, { 0x081443, "UNIBRAIN S.A.", "UNIBRAIN" }, { 0x00B0F5, "NetWorth Technologies, Inc.", "NETWORTH-TECHNOLOGIES" }, { 0x00B019, "UTC CCS", "UTC-CCS" }, { 0x00B02A, "ORSYS GmbH", "ORSYS" }, { 0x00B0AE, "Symmetricom", "SYMMETRICOM" }, { 0x00B0DB, "Nextcell, Inc.", "NEXTCELL" }, { 0x00B08E, "Cisco Systems, Inc", "CISCO" }, { 0x00B01C, "Westport Technologies", "WESTPORT-TECHNOLOGIES" }, { 0x00B0D0, "Dell Computer Corp.", "DELL" }, { 0x00B02D, "ViaGate Technologies, Inc.", "VIAGATE-TECHNOLOGIES" }, { 0x00B03B, "HiQ Networks", "HIQ-NETWORKS" }, { 0x0030A9, "Netiverse, Inc.", "NETIVERSE" }, { 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" }, { 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" }, { 0x000196, "Cisco Systems, Inc", "CISCO" }, { 0x0001A2, "Logical Co., Ltd.", "LOGICAL" }, { 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" }, { 0x00015B, "ITALTEL S.p.A/RF-UP-I", "ITALTEL-S-P-A/RF-UP-I" }, { 0x000167, "HIOKI E.E. CORPORATION", "HIOKI-E-E" }, { 0x00016E, "Conklin Corporation", "CONKLIN" }, { 0x000087, "HITACHI, LTD.", "HITACHI" }, { 0x000252, "Carrier Corporation", "CARRIER" }, { 0x00024B, "Cisco Systems, Inc", "CISCO" }, { 0x00023F, "Compal Electronics, Inc.", "COMPAL-ELECTRONICS" }, { 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" }, { 0x000229, "Adtec Corporation", "ADTEC" }, { 0x000230, "Intersoft Electronics", "INTERSOFT-ELECTRONICS" }, { 0x000225, "One Stop Systems", "ONE-STOP" }, { 0x00021C, "Network Elements, Inc.", "NETWORK-ELEMENTS" }, { 0x000221, "DSP Application, Ltd.", "DSP-APPLICATION" }, { 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" }, { 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" }, { 0x0002C9, "Mellanox Technologies", "MELLANOX-TECHNOLOGIES" }, { 0x0002CE, "FoxJet, Inc.", "FOXJET" }, { 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" }, { 0x003048, "Supermicro Computer, Inc.", "SUPERMICRO" }, { 0x003078, "Cisco Systems, Inc", "CISCO" }, { 0x003003, "Phasys Ltd.", "PHASYS" }, { 0x0030D5, "DResearch GmbH", "DRESEARCH" }, { 0x003095, "Procomp Informatics, Ltd.", "PROCOMP-INFORMATICS" }, { 0x0030CE, "Zaffire", "ZAFFIRE" }, { 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" }, { 0x00D047, "XN TECHNOLOGIES", "XN-TECHNOLOGIES" }, { 0x00D018, "QWES. COM, INC.", "QWES-COM" }, { 0x00D048, "ECTON, INC.", "ECTON" }, { 0x00D02F, "VLSI TECHNOLOGY INC.", "VLSI" }, { 0x00D028, "Harmonic, Inc", "HARMONIC" }, { 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" }, { 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" }, { 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" }, { 0x0030CF, "TWO TECHNOLOGIES, INC.", "TWO-TECHNOLOGIES" }, { 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" }, { 0x0030A1, "WEBGATE Inc.", "WEBGATE" }, { 0x00303D, "IVA CORPORATION", "IVA" }, { 0x0030C3, "FLUECKIGER ELEKTRONIK AG", "FLUECKIGER-ELEKTRONIK" }, { 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" }, { 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" }, { 0x003005, "Fujitsu Siemens Computers", "FUJITSU-SIEMENS-COMPUTERS" }, { 0x00304E, "BUSTEC PRODUCTION LTD.", "BUSTEC-PRODUCTION" }, { 0x0030E0, "OXFORD SEMICONDUCTOR LTD.", "OXFORD-SEMICONDUCTOR" }, { 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" }, { 0x00D06A, "LINKUP SYSTEMS CORPORATION", "LINKUP" }, { 0x00D065, "TOKO ELECTRIC", "TOKO-ELECTRIC" }, { 0x00D08F, "ARDENT TECHNOLOGIES, INC.", "ARDENT-TECHNOLOGIES" }, { 0x00D0C9, "ADVANTECH CO., LTD.", "ADVANTECH" }, { 0x00D0E7, "VCON TELECOMMUNICATION LTD.", "VCON-TELECOMMUNICATION" }, { 0x00D087, "MICROFIRST INC.", "MICROFIRST" }, { 0x00D008, "MACTELL CORPORATION", "MACTELL" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x005039, "MARINER NETWORKS", "MARINER-NETWORKS" }, { 0x00505A, "NETWORK ALCHEMY, INC.", "NETWORK-ALCHEMY" }, { 0x005071, "AIWA CO., LTD.", "AIWA" }, { 0xB01F81, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x58FCDB, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x7C70BC, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x2C265F, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x74E14A, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xF80278, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xD02212, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x009071, "Applied Innovation Inc.", "APPLIED-INNOVATION" }, { 0x00502D, "ACCEL, INC.", "ACCEL" }, { 0x0050B8, "INOVA COMPUTERS GMBH & CO. KG", "INOVA-COMPUTERS" }, { 0x00503A, "DATONG ELECTRONICS LTD.", "DATONG-ELECTRONICS" }, { 0x00508E, "OPTIMATION, INC.", "OPTIMATION" }, { 0x005051, "IWATSU ELECTRIC CO., LTD.", "IWATSU-ELECTRIC" }, { 0x0050BB, "CMS TECHNOLOGIES", "CMS-TECHNOLOGIES" }, { 0x0050BE, "FAST MULTIMEDIA AG", "FAST-MULTIMEDIA" }, { 0x005016, "SST/WOODHEAD INDUSTRIES", "SST/WOODHEAD-INDUSTRIES" }, { 0x0050AD, "CommUnique Wireless Corp.", "COMMUNIQUE-WIRELESS" }, { 0x005003, "Xrite Inc", "XRITE" }, { 0x005023, "PG DESIGN ELECTRONICS, INC.", "PG-DESIGN-ELECTRONICS" }, { 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" }, { 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" }, { 0x001083, "HEWLETT-PACKARD COMPANY", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x00508C, "RSI SYSTEMS", "RSI" }, { 0x0090ED, "CENTRAL SYSTEM RESEARCH CO., LTD.", "CENTRAL-SYSTEM-RESEARCH" }, { 0x00901B, "DIGITAL CONTROLS", "DIGITAL-CONTROLS" }, { 0x00905C, "EDMI", "EDMI" }, { 0x0090D2, "ARTEL VIDEO SYSTEMS", "ARTEL-VIDEO" }, { 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" }, { 0x009041, "APPLIED DIGITAL ACCESS", "APPLIED-DIGITAL-ACCESS" }, { 0x009063, "COHERENT COMMUNICATIONS SYSTEMS CORPORATION", "COHERENT-COMMUNICATION" }, { 0x0050B5, "FICHET-BAUCHE", "FICHET-BAUCHE" }, { 0x0050B0, "TECHNOLOGY ATLANTA CORPORATION", "ATLANTA" }, { 0x00504E, "SIERRA MONITOR CORP.", "SIERRA-MONITOR" }, { 0x00504D, "Tokyo Electron Device Limited", "TOKYO-ELECTRON-DEVICE" }, { 0x00507F, "DrayTek Corp.", "DRAYTEK" }, { 0x0050F7, "VENTURE MANUFACTURING (SINGAPORE) LTD.", "VENTURE-MANUFACTURING-SINGAPORE" }, { 0x005029, "1394 PRINTER WORKING GROUP", "1394-PRINTER-WORKING-GROUP" }, { 0x009031, "MYSTICOM, LTD.", "MYSTICOM" }, { 0x00901F, "ADTEC PRODUCTIONS, INC.", "ADTEC-PRODUCTIONS" }, { 0x009081, "ALOHA NETWORKS, INC.", "ALOHA-NETWORKS" }, { 0x0090B3, "AGRANAT SYSTEMS", "AGRANAT" }, { 0x0090A4, "ALTIGA NETWORKS", "ALTIGA-NETWORKS" }, { 0x00906C, "Sartorius Hamburg GmbH", "SARTORIUS-HAMBURG" }, { 0x0060FC, "CONSERVATION THROUGH INNOVATION LTD.", "CONSERVATION-THROUGH-INNOVATION" }, { 0x0060D4, "ELDAT COMMUNICATION LTD.", "ELDAT-COMMUNICATION" }, { 0x006085, "Storage Concepts", "STORAGE-CONCEPTS" }, { 0x0060D3, "AT&T", "AT-T" }, { 0x006018, "STELLAR ONE CORPORATION", "STELLAR-ONE" }, { 0x00602B, "PEAK AUDIO", "PEAK-AUDIO" }, { 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" }, { 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" }, { 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" }, { 0x001097, "WinNet Metropolitan Communications Systems, Inc.", "WINNET-METROPOLITAN-COMMUNICATION" }, { 0x00106F, "TRENTON TECHNOLOGY INC.", "TRENTON" }, { 0x0010C6, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x00104F, "Oracle Corporation ", "ORACLE" }, { 0x0010DA, "Kollmorgen Corp", "KOLLMORGEN" }, { 0x0010DF, "RISE COMPUTER INC.", "RISE" }, { 0x00109E, "AWARE, INC.", "AWARE" }, { 0x001072, "GVN TECHNOLOGIES, INC.", "GVN-TECHNOLOGIES" }, { 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" }, { 0x00E032, "MISYS FINANCIAL SYSTEMS, LTD.", "MISYS-FINANCIAL" }, { 0x00E06F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x00E019, "ING. GIORDANO ELETTRONICA", "ING-GIORDANO-ELETTRONICA" }, { 0x00E0D7, "SUNSHINE ELECTRONICS, INC.", "SUNSHINE-ELECTRONICS" }, { 0x00E0DA, "Alcatel North America ESD", "ALCATEL-NORTH-AMERICA-ESD" }, { 0x00E068, "MERRIMAC SYSTEMS INC.", "MERRIMAC" }, { 0x00E01D, "WebTV NETWORKS, INC.", "WEBTV-NETWORKS" }, { 0x00E01F, "AVIDIA Systems, Inc.", "AVIDIA" }, { 0x00E056, "HOLONTECH CORPORATION", "HOLONTECH" }, { 0x00E0C9, "AutomatedLogic Corporation", "AUTOMATEDLOGIC" }, { 0x00E0BA, "BERGHOF AUTOMATIONSTECHNIK GmbH", "BERGHOF-AUTOMATIONSTECHNIK" }, { 0x00E030, "MELITA INTERNATIONAL CORP.", "MELITA" }, { 0x00E0B2, "TELMAX COMMUNICATIONS CORP.", "TELMAX-COMMUNICATION" }, { 0x00E0EF, "DIONEX", "DIONEX" }, { 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" }, { 0x00E08B, "QLogic Corp.", "QLOGIC" }, { 0x0060D5, "MIYACHI TECHNOS CORP.", "MIYACHI-TECHNOS" }, { 0x006099, "SBE, Inc.", "SBE" }, { 0x0060FD, "NetICs, Inc.", "NETICS" }, { 0x0060B5, "KEBA GmbH", "KEBA" }, { 0x006027, "Superior Modular Products", "SUPERIOR-MODULAR-PRODUCTS" }, { 0x0060DC, "Toyo Network Systems & System Integration Co. LTD", "TOYO-NETWORK-SYSTEM-INTEGRATION" }, { 0x0060C1, "WaveSpan Corporation", "WAVESPAN" }, { 0x006041, "Yokogawa Electric Corporation", "YOKOGAWA-ELECTRIC" }, { 0x006005, "FEEDBACK DATA LTD.", "FEEDBACK-DATA" }, { 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" }, { 0x00E0BD, "INTERFACE SYSTEMS, INC.", "INTERFACE" }, { 0x00E071, "EPIS MICROCOMPUTER", "EPIS-MICROCOMPUTER" }, { 0x00E0A6, "TELOGY NETWORKS, INC.", "TELOGY-NETWORKS" }, { 0x00E026, "Redlake MASD LLC", "REDLAKE-MASD-LLC" }, { 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" }, { 0x00101D, "WINBOND ELECTRONICS CORP.", "WINBOND-ELECTRONICS" }, { 0x00105F, "ZODIAC DATA SYSTEMS", "ZODIAC-DATA" }, { 0x0010CB, "FACIT K.K.", "FACIT-K-K" }, { 0x00108C, "FUJITSU TELECOMMUNICATIONS EUROPE, LTD.", "FUJITSU-TELECOMMUNICATIONS-EUROPE" }, { 0x00607B, "FORE SYSTEMS, INC.", "FORE" }, { 0x00609C, "Perkin-Elmer Incorporated", "PERKIN-ELMER-INCORPORATED" }, { 0x006007, "ACRES GAMING, INC.", "ACRES-GAMING" }, { 0x006035, "DALLAS SEMICONDUCTOR, INC.", "DALLAS-SEMICONDUCTOR" }, { 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" }, { 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" }, { 0x002049, "COMTRON, INC.", "COMTRON" }, { 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" }, { 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" }, { 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" }, { 0x00A00E, "VISUAL NETWORKS, INC.", "VISUAL-NETWORKS" }, { 0x00A088, "ESSENTIAL COMMUNICATIONS", "ESSENTIAL-COMMUNICATION" }, { 0x00A0FA, "Marconi Communication GmbH", "MARCONI-COMMUNICATION" }, { 0x00A014, "CSIR", "CSIR" }, { 0x00A045, "PHOENIX CONTACT GMBH & CO.", "PHOENIX-CONTACT" }, { 0x00A064, "KVB/ANALECT", "KVB/ANALECT" }, { 0x00A07F, "GSM-SYNTEL, LTD.", "GSM-SYNTEL" }, { 0x00A03E, "ATM FORUM", "ATM-FORUM" }, { 0x00A050, "CYPRESS SEMICONDUCTOR", "CYPRESS-SEMICONDUCTOR" }, { 0x00A098, "NetApp", "NETAPP" }, { 0x00A021, "General Dynamics", "GENERAL-DYNAMICS" }, { 0x00A0A8, "RENEX CORPORATION", "RENEX" }, { 0x0060DD, "MYRICOM, INC.", "MYRICOM" }, { 0x006092, "MICRO/SYS, INC.", "MICRO/SYS" }, { 0x006080, "MICROTRONIX DATACOM LTD.", "MICROTRONIX-DATACOM" }, { 0x0060BB, "CABLETRON - NETLINK, INC.", "CABLETRON---NETLINK" }, { 0x006068, "Dialogic Corporation", "DIALOGIC" }, { 0x0060DB, "NTP ELEKTRONIK A/S", "NTP-ELEKTRONIK-A/S" }, { 0x006078, "POWER MEASUREMENT LTD.", "POWER-MEASUREMENT" }, { 0x00600D, "Digital Logic GmbH", "DIGITAL-LOGIC" }, { 0x00608A, "CITADEL COMPUTER", "CITADEL" }, { 0x00604C, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x00A05D, "CS COMPUTER SYSTEME GmbH", "CS-SYSTEME" }, { 0x00A0BD, "I-TECH CORP.", "I-TECH" }, { 0x00A0B9, "EAGLE TECHNOLOGY, INC.", "EAGLE" }, { 0x00A069, "Symmetricom, Inc.", "SYMMETRICOM" }, { 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" }, { 0x0020E5, "APEX DATA, INC.", "APEX-DATA" }, { 0x00207D, "ADVANCED COMPUTER APPLICATIONS", "ADVANCED-APPLICATIONS" }, { 0x0020D4, "CABLETRON - ZEITTNET INC.", "CABLETRON---ZEITTNET" }, { 0x0020D0, "VERSALYNX CORPORATION", "VERSALYNX" }, { 0x00A0A2, "DIGICOM S.P.A.", "DIGICOM-S-P-A" }, { 0x00A09B, "QPSX COMMUNICATIONS, LTD.", "QPSX-COMMUNICATION" }, { 0x00A054, "Private", "PRIVATE" }, { 0x00A030, "CAPTOR NV/SA", "CAPTOR-NV/" }, { 0x00A0B1, "FIRST VIRTUAL CORPORATION", "FIRST-VIRTUAL" }, { 0x0020E0, "Actiontec Electronics, Inc.", "ACTIONTEC-ELECTRONICS" }, { 0x0020CB, "PRETEC ELECTRONICS CORP.", "PRETEC-ELECTRONICS" }, { 0x0020AB, "MICRO INDUSTRIES CORP.", "MICRO-INDUSTRIES" }, { 0x00202D, "TAIYO CORPORATION", "TAIYO" }, { 0x00A04E, "VOELKER TECHNOLOGIES, INC.", "VOELKER-TECHNOLOGIES" }, { 0x00A07A, "ADVANCED PERIPHERALS TECHNOLOGIES, INC.", "ADVANCED-PERIPHERALS-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" }, { 0x00A016, "MICROPOLIS CORP.", "MICROPOLIS" }, { 0x00A01C, "NASCENT NETWORKS CORPORATION", "NASCENT-NETWORKS" }, { 0x0060E1, "ORCKIT COMMUNICATIONS LTD.", "ORCKIT-COMMUNICATION" }, { 0x006062, "TELESYNC, INC.", "TELESYNC" }, { 0x006038, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x006095, "ACCU-TIME SYSTEMS, INC.", "ACCU-TIME" }, { 0x00606F, "CLARION CORPORATION OF AMERICA", "CLARION-OF-AMERICA" }, { 0x0060ED, "RICARDO TEST AUTOMATION LTD.", "RICARDO-TEST-AUTOMATION" }, { 0x0060F6, "NEXTEST COMMUNICATIONS PRODUCTS, INC.", "NEXTEST-COMMUNICATION-PRODUCTS" }, { 0x00A0E7, "CENTRAL DATA CORPORATION", "CENTRAL-DATA" }, { 0x00A068, "BHP LIMITED", "BHP" }, { 0x00A0B3, "ZYKRONIX", "ZYKRONIX" }, { 0x00A06E, "AUSTRON, INC.", "AUSTRON" }, { 0x00A0BB, "HILAN GMBH", "HILAN" }, { 0x00A0C8, "ADTRAN INC.", "ADTRAN" }, { 0x00A017, "J B M CORPORATION", "J-B-M" }, { 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" }, { 0x00C050, "TOYO DENKI SEIZO K.K.", "TOYO-DENKI-SEIZO-K-K" }, { 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" }, { 0x1100AA, "Private", "PRIVATE" }, { 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" }, { 0x0040BE, "BOEING DEFENSE & SPACE", "BOEING-DEFENSE-SPACE" }, { 0x002011, "CANOPUS CO., LTD.", "CANOPUS" }, { 0x00C00B, "NORCONTROL A.S.", "NORCONTROL-A-S" }, { 0x00C0C0, "SHORE MICROSYSTEMS, INC.", "SHORE-MICROSYSTEMS" }, { 0x00C00C, "RELIA TECHNOLGIES", "RELIA-TECHNOLGIES" }, { 0x00C014, "TELEMATICS CALABASAS INT'L,INC", "TELEMATICS-CALABASAS" }, { 0x00C045, "ISOLATION SYSTEMS, LTD.", "ISOLATION" }, { 0x00C000, "LANOPTICS, LTD.", "LANOPTICS" }, { 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" }, { 0x00205B, "Kentrox, LLC", "KENTROX-LLC" }, { 0x00C0BF, "TECHNOLOGY CONCEPTS, LTD.", "CONCEPTS" }, { 0x00C0C9, "ELSAG BAILEY PROCESS", "ELSAG-BAILEY-PROCESS" }, { 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" }, { 0x00C092, "MENNEN MEDICAL INC.", "MENNEN-MEDICAL" }, { 0x00C06C, "SVEC COMPUTER CORP.", "SVEC" }, { 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" }, { 0x00C054, "NETWORK PERIPHERALS, LTD.", "NETWORK-PERIPHERALS" }, { 0x00C0D5, "Werbeagentur Jĵrgen Siebert", "WERBEAGENTUR-JĵRGEN-SIEBERT" }, { 0x00C044, "EMCOM CORPORATION", "EMCOM" }, { 0x00C0ED, "US ARMY ELECTRONIC", "US-ARMY" }, { 0x00C0F0, "KINGSTON TECHNOLOGY CORP.", "KINGSTON" }, { 0x00C0D1, "COMTREE TECHNOLOGY CORPORATION", "COMTREE" }, { 0x00C0D2, "SYNTELLECT, INC.", "SYNTELLECT" }, { 0x00C0FB, "ADVANCED TECHNOLOGY LABS", "ADVANCED-LABS" }, { 0x002030, "ANALOG & DIGITAL SYSTEMS", "ANALOG-DIGITAL" }, { 0x0020A8, "SAST TECHNOLOGY CORP.", "SAST" }, { 0x002066, "GENERAL MAGIC, INC.", "GENERAL-MAGIC" }, { 0x002036, "BMC SOFTWARE", "BMC-SOFTWARE" }, { 0x002067, "Private", "PRIVATE" }, { 0x00AA3C, "OLIVETTI TELECOM SPA (OLTECO)", "OLIVETTI-TELECOM-SPA-OLTECO" }, { 0x00C079, "FONSYS CO.,LTD.", "FONSYS" }, { 0x00C02E, "NETWIZ", "NETWIZ" }, { 0x00C05B, "NETWORKS NORTHWEST, INC.", "NETWORKS-NORTHWEST" }, { 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" }, { 0x0040AA, "Metso Automation", "METSO-AUTOMATION" }, { 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" }, { 0x0040EE, "OPTIMEM", "OPTIMEM" }, { 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" }, { 0x008025, "STOLLMANN GMBH", "STOLLMANN" }, { 0x008033, "EMS Aviation, Inc.", "EMS-AVIATION" }, { 0x0080C2, "IEEE 802.1 COMMITTEE", "IEEE-802-1-COMMITTEE" }, { 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" }, { 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" }, { 0x0080EC, "SUPERCOMPUTING SOLUTIONS, INC.", "SUPERCOMPUTING-SOLUTIONS" }, { 0x0080A4, "LIBERTY ELECTRONICS", "LIBERTY-ELECTRONICS" }, { 0x008073, "DWB ASSOCIATES", "DWB-ASSOCIATES" }, { 0x00802B, "INTEGRATED MARKETING CO", "INTEGRATED-MARKETING" }, { 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" }, { 0x00403B, "SYNERJET INTERNATIONAL CORP.", "SYNERJET" }, { 0x0040AB, "ROLAND DG CORPORATION", "ROLAND-DG" }, { 0x0040D5, "Sartorius Mechatronics T&H GmbH ", "SARTORIUS-MECHATRONICS-T-H" }, { 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" }, { 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" }, { 0x00801B, "KODIAK TECHNOLOGY", "KODIAK" }, { 0x0080CC, "MICROWAVE BYPASS SYSTEMS", "MICROWAVE-BYPASS" }, { 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" }, { 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" }, { 0x0080DB, "GRAPHON CORPORATION", "GRAPHON" }, { 0x000075, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000039, "TOSHIBA CORPORATION", "TOSHIBA" }, { 0x0000CB, "COMPU-SHACK ELECTRONIC GMBH", "COMPU-SHACK" }, { 0x0000F4, "Allied Telesis", "ALLIED-TELESIS" }, { 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" }, { 0x0080BE, "ARIES RESEARCH", "ARIES-RESEARCH" }, { 0x008027, "ADAPTIVE SYSTEMS, INC.", "ADAPTIVE" }, { 0x0080E2, "T.D.I. CO., LTD.", "T-D-I" }, { 0x0080CD, "MICRONICS COMPUTER, INC.", "MICRONICS" }, { 0x008083, "AMDAHL", "AMDAHL" }, { 0x008003, "HYTEC ELECTRONICS LTD.", "HYTEC-ELECTRONICS" }, { 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" }, { 0x00001D, "CABLETRON SYSTEMS, INC.", "CABLETRON" }, { 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" }, { 0x080079, "THE DROID WORKS", "THE-DROID-WORKS" }, { 0x080077, "TSL COMMUNICATIONS LTD.", "TSL-COMMUNICATION" }, { 0x080071, "MATRA (DSIE)", "MATRA-DSIE" }, { 0x08006A, "ATT BELL LABORATORIES", "ATT-BELL-LABORATORIES" }, { 0x080064, "Sitasys AG", "SITASYS" }, { 0x08008A, "PerfTech, Inc.", "PERFTECH" }, { 0x080030, "ROYAL MELBOURNE INST OF TECH", "ROYAL-MELBOURNE-INST-OF-TECH" }, { 0x080090, "SONOMA SYSTEMS", "SONOMA" }, { 0x00DD04, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD09, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x080066, "AGFA CORPORATION", "AGFA" }, { 0x08001A, "TIARA/ 10NET", "TIARA/-10NET" }, { 0x08000B, "UNISYS CORPORATION", "UNISYS" }, { 0x080017, "NATIONAL SEMICONDUCTOR", "NATIONAL-SEMICONDUCTOR" }, { 0x00DD0D, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x0000CF, "HAYES MICROCOMPUTER PRODUCTS", "HAYES-MICROCOMPUTER-PRODUCTS" }, { 0x0000A4, "ACORN COMPUTERS LIMITED", "ACORN-COMPUTERS" }, { 0x000018, "WEBSTER COMPUTER CORPORATION", "WEBSTER" }, { 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" }, { 0x000029, "IMC NETWORKS CORP.", "IMC-NETWORKS" }, { 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" }, { 0x0000F0, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x000021, "SUREMAN COMP. & COMMUN. CORP.", "SUREMAN-COMP-COMMUN" }, { 0x00004D, "DCI CORPORATION", "DCI" }, { 0x00006F, "Madge Ltd.", "MADGE" }, { 0x00005A, "SysKonnect GmbH", "SYSKONNECT" }, { 0x0000C9, "Emulex Corporation", "EMULEX" }, { 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" }, { 0x0000B9, "MCDONNELL DOUGLAS COMPUTER SYS", "MCDONNELL-DOUGLAS-SYS" }, { 0x00002D, "CHROMATICS INC", "CHROMATICS" }, { 0x00004A, "ADC CODENOLL TECHNOLOGY CORP.", "ADC-CODENOLL" }, { 0x080024, "10NET COMMUNICATIONS/DCA", "10NET-COMMUNICATION/DCA" }, { 0x08001E, "APOLLO COMPUTER INC.", "APOLLO" }, { 0x08001B, "EMC Corporation", "EMC" }, { 0x080005, "SYMBOLICS INC.", "SYMBOLICS" }, { 0x000000, "XEROX CORPORATION", "XEROX" }, { 0xAA0002, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x00AA02, "INTEL CORPORATION", "INTEL" }, { 0x0040D6, "LOCAMATION B.V.", "LOCAMATION" }, { 0x800010, "ATT BELL LABORATORIES", "ATT-BELL-LABORATORIES" }, { 0x08000E, "NCR CORPORATION", "NCR" }, { 0x080008, "BOLT BERANEK AND NEWMAN INC.", "BOLT-BERANEK-AND-NEWMAN" }, { 0xAA0003, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x000004, "XEROX CORPORATION", "XEROX" }, { 0x000009, "XEROX CORPORATION", "XEROX" }, { 0x00003D, "UNISYS", "UNISYS" }, { 0xD81FCC, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xEC5F23, "Kimascend Electronics and Technology Ltd.", "KIMASCEND-ELECTRONICS-AND" }, { 0x140467, "SNK Technologies Co.,Ltd.", "SNK-TECHNOLOGIES" }, { 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" }, { 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" }, { 0xA4D18C, "Apple, Inc.", "APPLE" }, { 0xCC25EF, "Apple, Inc.", "APPLE" }, { 0x002127, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x44B32D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xFCD733, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF0F336, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xE84DD0, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 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" }, { 0xC44044, "RackTop Systems Inc.", "RACKTOP" }, { 0x0014C9, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00010F, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x080088, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00051E, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x384608, "zte corporation", "ZTE" }, { 0xB4B362, "zte corporation", "ZTE" }, { 0xB075D5, "zte corporation", "ZTE" }, { 0x08181A, "zte corporation", "ZTE" }, { 0x002512, "zte corporation", "ZTE" }, { 0x002268, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9471AC, "TCT mobile ltd", "TCT-MOBILE" }, { 0xA09347, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x904CE5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xCCAF78, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x1C666D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x785968, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x2C088C, "HUMAX Co., Ltd.", "HUMAX" }, { 0xD42C0F, "Pace plc", "PACE-PLC" }, { 0x40F308, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x5CDAD4, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x64B473, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x7451BA, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x3480B3, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 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" }, { 0xF80D43, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF866D1, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0071CC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0x94049C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x001237, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x948854, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA863F2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD0FF50, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x20C38F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA0E6F8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x5C313E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF4B85E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 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" }, { 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" }, { 0x105172, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9017AC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x68C90B, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xEC24B8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x689E19, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC46AB7, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x68DFDD, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0xB4B017, "Avaya Inc", "AVAYA" }, { 0x581626, "Avaya Inc", "AVAYA" }, { 0xCCF954, "Avaya Inc", "AVAYA" }, { 0x703018, "Avaya Inc", "AVAYA" }, { 0xB0A37E, "Qingdao Haier Telecom Co.ïĵŒLtd", "QINGDAO-HAIER-TELECOM-ïĵŒ" }, { 0x70A8E3, "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" }, { 0x000E6D, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0019FB, "BSkyB Ltd", "BSKYB" }, { 0x3475C7, "Avaya Inc", "AVAYA" }, { 0x6CFA58, "Avaya Inc", "AVAYA" }, { 0x64A7DD, "Avaya Inc", "AVAYA" }, { 0x646A52, "Avaya Inc", "AVAYA" }, { 0xF873A2, "Avaya Inc", "AVAYA" }, { 0x64C354, "Avaya Inc", "AVAYA" }, { 0xDCEB94, "Cisco Systems, Inc", "CISCO" }, { 0x5C838F, "Cisco Systems, Inc", "CISCO" }, { 0xAC7E8A, "Cisco Systems, Inc", "CISCO" }, { 0x382056, "Cisco Systems, Inc", "CISCO" }, { 0x28CFE9, "Apple, Inc.", "APPLE" }, { 0xE425E7, "Apple, Inc.", "APPLE" }, { 0x080007, "Apple, Inc.", "APPLE" }, { 0x001BD7, "Cisco SPVTG", "CISCO-SPVTG" }, { 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" }, { 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" }, { 0x1C6E4C, "Logistic Service & Engineering Co.,Ltd", "LOGISTIC-SERVICE-ENGINEERING" }, { 0x00101F, "Cisco Systems, Inc", "CISCO" }, { 0x001054, "Cisco Systems, Inc", "CISCO" }, { 0x1C872C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xC4143C, "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" }, { 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" }, { 0x78DA6E, "Cisco Systems, Inc", "CISCO" }, { 0x24E9B3, "Cisco Systems, Inc", "CISCO" }, { 0x1C1D86, "Cisco Systems, Inc", "CISCO" }, { 0xE0B7B1, "Pace plc", "PACE-PLC" }, { 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" }, { 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" }, { 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" }, { 0x5C5948, "Apple, Inc.", "APPLE" }, { 0x78CA39, "Apple, Inc.", "APPLE" }, { 0x18E7F4, "Apple, Inc.", "APPLE" }, { 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" }, { 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" }, { 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" }, { 0xE4C63D, "Apple, Inc.", "APPLE" }, { 0x843835, "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" }, { 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" }, { 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" }, { 0x7073CB, "Apple, Inc.", "APPLE" }, { 0x9C207B, "Apple, Inc.", "APPLE" }, { 0x842999, "Apple, Inc.", "APPLE" }, { 0x74E2F5, "Apple, Inc.", "APPLE" }, { 0x20C9D0, "Apple, Inc.", "APPLE" }, { 0x646A74, "AUTH-SERVERS, LLC", "AUTH-SERVERS-LLC" }, { 0x00CB00, "Private", "PRIVATE" }, { 0x34C9F0, "LM Technologies Ltd", "LM-TECHNOLOGIES" }, { 0xE034E4, "Feit Electric Company, Inc.", "FEIT-ELECTRIC-COMPANY" }, { 0x681401, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x98E848, "Axiim", "AXIIM" }, { 0x544B8C, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xC4EF70, "Home Skinovations", "HOME-SKINOVATIONS" }, { 0xDCEF09, "Netgear", "NETGEAR" }, { 0xB813E9, "Trace Live Network", "TRACE-LIVE-NETWORK" }, { 0x746F19, "ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD.", "ICARVISIONS-SHENZHEN" }, { 0x7C7176, "Wuxi iData Technology Company Ltd.", "WUXI-IDATA-COMPANY" }, { 0x84D6D0, "Amazon Technologies Inc.", "AMAZON-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x20D160, "Private", "PRIVATE" }, { 0x382187, "Midea Group Co., Ltd.", "MIDEA-GROUP" }, { 0xAC1FD7, "Real Vision Technology Co.,Ltd.", "REAL-VISION" }, { 0xA8D3F7, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0xA4DEC9, "QLove Mobile Intelligence Information Technology (W.H.) Co. Ltd.", "QLOVE-MOBILE-INTELLIGENCE-INFORMATION-W-H" }, { 0xC8A2CE, "Oasis Media Systems LLC", "OASIS-MEDIA-LLC" }, { 0x1402EC, "Hewlett Packard Enterprise", "HEWLETT-PACKARD" }, { 0x707938, "Wuxi Zhanrui Electronic Technology Co.,LTD", "WUXI-ZHANRUI" }, { 0x988744, "Wuxi Hongda Science and Technology Co.,LTD", "WUXI-HONGDA-SCIENCE-AND" }, { 0xC869CD, "Apple, Inc.", "APPLE" }, { 0x50C8E5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC6C21, "Apple, Inc.", "APPLE" }, { 0xD8C4E9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C54B9, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 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" }, { 0x305A3A, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xA87285, "IDT, INC.", "IDT" }, { 0x38D40B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3C7A8A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x080581, "Roku, Inc", "ROKU" }, { 0xA4A6A9, "Private", "PRIVATE" }, { 0x0469F8, "Apple, Inc.", "APPLE" }, { 0x9C7A03, "Ciena Corporation", "CIENA" }, { 0xF41535, "SPON Communication Technology Co.,Ltd", "SPON-COMMUNICATION" }, { 0x10CC1B, "Liverock technologies,INC", "LIVEROCK-TECHNOLOGIES" }, { 0x48B620, "ROLI Ltd.", "ROLI" }, { 0x541E56, "juniper networks", "JUNIPER-NETWORKS" }, { 0xE498D1, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0x380AAB, "Formlabs", "FORMLABS" }, { 0xE0553D, "Cisco Meraki", "CISCO-MERAKI" }, { 0x0894EF, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x304487, "Hefei Radio Communication Technology Co., Ltd", "HEFEI-RADIO-COMMUNICATION" }, { 0x380195, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xE41A2C, "ZPE Systems, Inc.", "ZPE" }, { 0xA815D6, "Shenzhen Meione Technology CO., LTD", "SHENZHEN-MEIONE" }, { 0x40E3D6, "Aruba Networks", "ARUBA-NETWORKS" }, { 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" }, { 0xB047BF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7C0BC6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x041E7A, "DSPWorks", "DSPWORKS" }, { 0x340CED, "Moduel AB", "MODUEL-AB" }, { 0x507B9D, "LCFC(HeFei) Electronics Technology co., ltd", "LCFC-HEFEI-ELECTRONICS" }, { 0x6C7220, "D-Link International", "D-LINK" }, { 0x38B725, "Wistron Infocomm (Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xACEC80, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x80EA23, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x4CC681, "Shenzhen Aisat Electronic Co., Ltd.", "SHENZHEN-AISAT" }, { 0x28B9D9, "Radisys Corporation", "RADISYS" }, { 0x185E0F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9C8DD3, "Leonton Technologies", "LEONTON-TECHNOLOGIES" }, { 0x246C8A, "YUKAI Engineering", "YUKAI-ENGINEERING" }, { 0x2C233A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 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" }, { 0x143EBF, "zte corporation", "ZTE" }, { 0x5820B1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x788E33, "Jiangsu SEUIC Technology Co.,Ltd", "JIANGSU-SEUIC" }, { 0x94D859, "TCT mobile ltd", "TCT-MOBILE" }, { 0xE01AEA, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 0xA0F895, "Tinno Mobile Technology Corp", "TINNO-MOBILE" }, { 0x949F3E, "Sonos, Inc.", "SONOS" }, { 0x747336, "MICRODIGTAL Inc", "MICRODIGTAL" }, { 0x0CE725, "Microsoft Corporation", "MICROSOFT" }, { 0x08D0B7, "HISENSE ELECTRIC CO.,LTD.", "HISENSE-ELECTRIC" }, { 0xA04FD4, "ADB BROADBAND ITALIA", "ADB-BROADBAND-ITALIA" }, { 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" }, { 0x601970, "HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD.", "HUIZHOU-QIAOXING-ELECTRONICS" }, { 0x887033, "Hangzhou Silan Microelectronic Inc", "HANGZHOU-SILAN-MICROELECTRONIC" }, { 0x8C7967, "zte corporation", "ZTE" }, { 0xD083D4, "XTel ApS", "XTEL-APS" }, { 0x78F944, "Private", "PRIVATE" }, { 0x74852A, "PEGATRON CORPORATION", "PEGATRON" }, { 0x149A10, "Microsoft Corporation", "MICROSOFT" }, { 0xC42F90, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0xFC9AFA, "Motus Global Inc.", "MOTUS-GLOBAL" }, { 0xD00ED9, "TAICANG T AND W ELECTRONICS CO LTD", "TAICANG-T-AND-W-ELECTRONICS" }, { 0x3CA82A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5CB43E, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xFCE1FB, "Array Networks", "ARRAY-NETWORKS" }, { 0xB8B81E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x54E140, "INGENICO", "INGENICO" }, { 0xD4F9A1, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x9CB6D0, "Rivet Networks", "RIVET-NETWORKS" }, { 0xD0C0BF, "Actions Microelectronics Co., Ltd", "ACTIONS-MICROELECTRONICS" }, { 0x94F665, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x707781, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 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" }, { 0x606DC7, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x185D9A, "BobjGear LLC", "BOBJGEAR-LLC" }, { 0x480FCF, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x884157, "Shenzhen Atsmart Technology Co.,Ltd.", "SHENZHEN-ATSMART" }, { 0x3CDA2A, "zte corporation", "ZTE" }, { 0x804E81, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x14157C, "TOKYO COSMOS ELECTRIC CO.,LTD.", "TOKYO-COSMOS-ELECTRIC" }, { 0x408D5C, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x6CE01E, "Modcam AB", "MODCAM-AB" }, { 0xD09DAB, "TCT mobile ltd", "TCT-MOBILE" }, { 0xE8F2E3, "Starcor Beijing Co.,Limited", "STARCOR-BEIJING" }, { 0x5465DE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xD4D7A9, "Shanghai Kaixiang Info Tech LTD", "SHANGHAI-KAIXIANG-INFO-TECH" }, { 0x1CC586, "Absolute Acoustics", "ABSOLUTE-ACOUSTICS" }, { 0xE076D0, "AMPAK Technology, Inc.", "AMPAK" }, { 0xC49A02, "LG Electronics (Mobile Communicaitons)", "LG-ELECTRONICS-MOBILE-COMMUNICAITONS" }, { 0x24B0A9, "Shanghai Mobiletek Communication Ltd.", "SHANGHAI-MOBILETEK-COMMUNICATION" }, { 0x64167F, "Polycom", "POLYCOM" }, { 0x54E2C8, "Dongguan Aoyuan Electronics Technology Co., Ltd", "DONGGUAN-AOYUAN-ELECTRONICS" }, { 0xD048F3, "DATTUS Inc", "DATTUS" }, { 0xCC19A8, "PT Inova§£o e Sistemas SA", "PT-INOVA§£O-E-SISTEMAS" }, { 0x6C4418, "Zappware", "ZAPPWARE" }, { 0x44962B, "Aidon Oy", "AIDON-OY" }, { 0xBCEB5F, "Fujian Beifeng Telecom Technology Co., Ltd.", "FUJIAN-BEIFENG-TELECOM" }, { 0x800B51, "Chengdu XGimi Technology Co.,Ltd", "CHENGDU-XGIMI" }, { 0x00FC8D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x5CF7C3, "SYNTECH (HK) TECHNOLOGY LIMITED", "SYNTECH-HK" }, { 0xACD074, "Espressif Inc.", "ESPRESSIF" }, { 0x3CC2E1, "XINHUA CONTROL ENGINEERING CO.,LTD", "XINHUA-CONTROL-ENGINEERING" }, { 0x7C534A, "Metamako", "METAMAKO" }, { 0x40D28A, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x6C2E72, "B&B EXPORTING LIMITED", "B-B-EXPORTING" }, { 0x98EECB, "Wistron InfoComm(ZhongShan)Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xFC3288, "CELOT Wireless Co., Ltd", "CELOT-WIRELESS" }, { 0xFCB698, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xBCB308, "HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED", "HONGKONG-RAGENTEK-COMMUNICATION" }, { 0x445ECD, "Razer Inc", "RAZER" }, { 0xC0335E, "Microsoft", "MICROSOFT" }, { 0xACCAAB, "Virtual Electric Inc", "VIRTUAL-ELECTRIC" }, { 0x241B44, "Hangzhou Tuners Electronics Co., Ltd", "HANGZHOU-TUNERS-ELECTRONICS" }, { 0xB0E03C, "TCT mobile ltd", "TCT-MOBILE" }, { 0x90C35F, "Nanjing Jiahao Technology Co., Ltd.", "NANJING-JIAHAO" }, { 0xBC1485, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9CD35B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60AF6D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB85A73, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC4366C, "LG Innotek", "LG-INNOTEK" }, { 0xD85DE2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x60D9A0, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x5C3B35, "Gehirn Inc.", "GEHIRN" }, { 0x34873D, "Quectel Wireless Solution Co.,Ltd.", "QUECTEL-WIRELESS-SOLUTION" }, { 0xECB1D7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x186882, "Beward R&D Co., Ltd.", "BEWARD-R-D" }, { 0xFC3D93, "LONGCHEER TELECOMMUNICATION LIMITED", "LONGCHEER-TELECOMMUNICATION" }, { 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" }, { 0x94A1A2, "AMPAK Technology Inc.", "AMPAK" }, { 0xFCAFAC, "Socionext Inc.", "SOCIONEXT" }, { 0xF8C397, "NZXT Corp. Ltd.", "NZXT" }, { 0x247656, "Shanghai Net Miles Fiber Optics Technology Co., LTD.", "SHANGHAI-NET-MILES-FIBER-OPTICS" }, { 0xA06391, "Netgear Inc.", "NETGEAR" }, { 0xA0ADA1, "JMR Electronics, Inc", "JMR-ELECTRONICS" }, { 0xD05349, "Liteon Technology Co., Ltd.", "LITEON" }, { 0x2028BC, "Visionscape Co,. Ltd.", "VISIONSCAPE" }, { 0xB8F080, "SPS, INC.", "SPS" }, { 0x4CD08A, "HUMAX.CO.,LTD", "HUMAX" }, { 0x7858F3, "Vachen Co.,Ltd", "VACHEN" }, { 0xCCA4AF, "Shenzhen Sowell Technology Co., LTD", "SHENZHEN-SOWELL" }, { 0xB0C287, "Technicolor CH USA Inc", "TECHNICOLOR-CH-USA" }, { 0x84F129, "Metrascale Inc.", "METRASCALE" }, { 0x9C3066, "RWE Effizienz GmbH", "RWE-EFFIZIENZ" }, { 0xFCA22A, "PT. Callysta Multi Engineering", "PT-CALLYSTA-MULTI-ENGINEERING" }, { 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" }, { 0x5CE0C5, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF0FE6B, "Shanghai High-Flying Electronics Technology Co., Ltd", "SHANGHAI-HIGH-FLYING-ELECTRONICS" }, { 0xFCDC4A, "G-Wearables Corp.", "G-WEARABLES" }, { 0xF42C56, "SENOR TECH CO LTD", "SENOR-TECH" }, { 0x50502A, "Egardia", "EGARDIA" }, { 0x806AB0, "Tinno Mobile Technology Corp", "TINNO-MOBILE" }, { 0x5C8A38, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x48EE0C, "D-Link International", "D-LINK" }, { 0x883B8B, "Cheering Connection Co. Ltd.", "CHEERING-CONNECTION" }, { 0x6CCA08, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x749637, "Todaair Electronic Co., Ltd", "TODAAIR" }, { 0x2031EB, "HDSN", "HDSN" }, { 0x18F145, "NetComm Wireless Limited", "NETCOMM-WIRELESS" }, { 0x4CA515, "Baikal Electronics JSC", "BAIKAL-ELECTRONICS-JSC" }, { 0x9CE230, "JULONG CO,.LTD.", "JULONG" }, { 0x80F503, "Pace plc", "PACE-PLC" }, { 0x94D417, "GPI KOREA INC.", "GPI-KOREA" }, { 0xD855A3, "zte corporation", "ZTE" }, { 0x244B81, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x70DA9C, "TECSEN", "TECSEN" }, { 0x6CF5E8, "Mooredoll Inc.", "MOOREDOLL" }, { 0x587FB7, "SONAR INDUSTRIAL CO., LTD.", "SONAR-INDUSTRIAL" }, { 0xE42354, "SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD", "SHENZHEN-FUZHI-SOFTWARE" }, { 0x207693, "Lenovo (Beijing) Limited.", "LENOVO-BEIJING" }, { 0x70FF5C, "Cheerzing Communication(Xiamen)Technology Co.,Ltd", "CHEERZING-COMMUNICATION-XIAMEN" }, { 0xE0107F, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x08115E, "Bitel Co., Ltd.", "BITEL" }, { 0x44CE7D, "SFR", "SFR" }, { 0x0881BC, "HongKong Ipro Technology Co., Limited", "HONGKONG-IPRO" }, { 0x4C16F1, "zte corporation", "ZTE" }, { 0x54E4BD, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 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" }, { 0x88708C, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xF03D29, "Actility", "ACTILITY" }, { 0xACFDCE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x909F33, "EFM Networks", "EFM-NETWORKS" }, { 0x54FFCF, "Mopria Alliance", "MOPRIA-ALLIANCE" }, { 0x344DF7, "LG Electronics", "LG-ELECTRONICS" }, { 0x005A39, "SHENZHEN FAST TECHNOLOGIES CO., LTD.", "SHENZHEN-FAST-TECHNOLOGIES" }, { 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" }, { 0x5C8FE0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x104B46, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 0xC4BD6A, "SKF GmbH", "SKF" }, { 0x14488B, "Shenzhen Doov Technology Co.,Ltd", "SHENZHEN-DOOV" }, { 0x70BAEF, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xCC03FA, "Technicolor CH USA", "TECHNICOLOR-CH-USA" }, { 0x603696, "The Sapling Company", "THE-SAPLING-COMPANY" }, { 0x54098D, "deister electronic GmbH", "DEISTER" }, { 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" }, { 0x00F46F, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x446D6C, "Samsung Elec Co.,Ltd", "SAMSUNG-ELEC" }, { 0x849681, "Cathay Communication Co.,Ltd", "CATHAY-COMMUNICATION" }, { 0x50294D, "NANJING IOT SENSOR TECHNOLOGY CO,LTD", "NANJING-IOT-SENSOR" }, { 0x90EF68, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 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" }, { 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" }, { 0x4C0BBE, "Microsoft", "MICROSOFT" }, { 0x08EB29, "Jiangsu Huitong Group Co.,Ltd.", "JIANGSU-HUITONG-GROUP" }, { 0xD88039, "Microchip Technology Inc.", "MICROCHIP" }, { 0xBCEAFA, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xE48C0F, "Discovery Insure", "DISCOVERY-INSURE" }, { 0xA0A3E2, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xE03E44, "Broadcom Corporation", "BROADCOM" }, { 0x2C010B, "NASCENT Technology, LLC - RemKon", "NASCENT-LLC---REMKON" }, { 0xD4EC86, "LinkedHope Intelligent Technologies Co., Ltd", "LINKEDHOPE-INTELLIGENT-TECHNOLOGIES" }, { 0x20A99B, "Microsoft Corporation", "MICROSOFT" }, { 0x6C7660, "KYOCERA Corporation", "KYOCERA" }, { 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" }, { 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" }, { 0xF4F26D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x5C1515, "ADVAN", "ADVAN" }, { 0xFCFFAA, "IEEE REGISTRATION AUTHORITY - Please see MAL public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAL-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xD0A0D6, "Chengdu TD Tech Ltd.", "CHENGDU-TD-TECH" }, { 0x480C49, "NAKAYO TELECOMMUNICATIONS,INC", "NAKAYO-TELECOMMUNICATIONS" }, { 0x5CB8CB, "Allis Communications", "ALLIS-COMMUNICATION" }, { 0x4C9EFF, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xC44BD1, "Wallys Communications Teachnologies Co.,Ltd.", "WALLYS-COMMUNICATION-TEACHNOLOGIES" }, { 0xE85D6B, "Luminate Wireless", "LUMINATE-WIRELESS" }, { 0x8C3357, "HiteVision Digital Media Technology Co.,Ltd.", "HITEVISION-DIGITAL-MEDIA" }, { 0x64649B, "juniper networks", "JUNIPER-NETWORKS" }, { 0x506787, "iTellus", "ITELLUS" }, { 0xF4D261, "SEMOCON Co., Ltd", "SEMOCON" }, { 0xB009D3, "Avizia", "AVIZIA" }, { 0x340286, "Intel Corporate", "INTEL-CORPORATE" }, { 0xCC3D82, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB01041, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x109266, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8CBF9D, "Shanghai Xinyou Information Technology Ltd. Co.", "SHANGHAI-XINYOU-INFORMATION" }, { 0xD49398, "Nokia Corporation", "NOKIA" }, { 0x300D2A, "Zhejiang Wellcom Technology Co.,Ltd.", "ZHEJIANG-WELLCOM" }, { 0xE8FCAF, "NETGEAR INC.,", "NETGEAR" }, { 0xC4084A, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x30C7AE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18227E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x481A84, "Pointer Telocation Ltd", "POINTER-TELOCATION" }, { 0xE4F4C6, "NETGEAR", "NETGEAR" }, { 0xDC663A, "Apacer Technology Inc.", "APACER" }, { 0x3CAA3F, "iKey, Ltd.", "IKEY" }, { 0x0C383E, "Fanvil Technology Co., Ltd.", "FANVIL" }, { 0x60CDA9, "Abloomy", "ABLOOMY" }, { 0xB40B44, "Smartisan Technology Co., Ltd.", "SMARTISAN" }, { 0xBCCAB5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x103047, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x801934, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8496D8, "Pace plc", "PACE-PLC" }, { 0x1430C6, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x9C93E4, "Private", "PRIVATE" }, { 0x64EAC5, "SiboTech Automation Co., Ltd.", "SIBOTECH-AUTOMATION" }, { 0x74DA38, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0xB0A737, "Roku, Inc.", "ROKU" }, { 0xD05AF1, "Shenzhen Pulier Tech CO.,Ltd", "SHENZHEN-PULIER-TECH" }, { 0xB06971, "DEI Sales, Inc.", "DEI-SALES" }, { 0x58493B, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x580528, "LABRIS NETWORKS", "LABRIS-NETWORKS" }, { 0x28656B, "Keystone Microtech Corporation", "KEYSTONE-MICROTECH" }, { 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" }, { 0x70305D, "Ubiquoss Inc", "UBIQUOSS" }, { 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" }, { 0x5CF4AB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xCCE1D5, "Buffalo Inc.", "BUFFALO" }, { 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" }, { 0xF08CFB, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x848DC7, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x085DDD, "Mercury Corporation", "MERCURY" }, { 0x88B1E1, "AirTight Networks, Inc.", "AIRTIGHT-NETWORKS" }, { 0x98349D, "Krauss Maffei Technologies GmbH", "KRAUSS-MAFFEI-TECHNOLOGIES" }, { 0x18CC23, "Philio Technology Corporation", "PHILIO" }, { 0x648D9E, "IVT Electronic Co.,Ltd", "IVT" }, { 0x84B59C, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x400107, "Arista Corp", "ARISTA" }, { 0x842615, "ADB BROADBAND ITALIA", "ADB-BROADBAND-ITALIA" }, { 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" }, { 0x749C52, "Huizhou Desay SV Automotive Co., Ltd.", "HUIZHOU-DESAY-SV-AUTOMOTIVE" }, { 0xC0F79D, "Powercode", "POWERCODE" }, { 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" }, { 0xFCF8B7, "TRONTEQ Electronic", "TRONTEQ" }, { 0x589CFC, "FreeBSD Foundation", "FREEBSD-FOUNDATION" }, { 0x602103, "STCUBE.INC", "STCUBE" }, { 0xFCF152, "Sony Corporation", "SONY" }, { 0xA0FC6E, "Telegrafia a.s.", "TELEGRAFIA-A-S" }, { 0x44D4E0, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xF8A9D0, "LG Electronics", "LG-ELECTRONICS" }, { 0x289AFA, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x200CC8, "NETGEAR INC.,", "NETGEAR" }, { 0xD42F23, "Akenori PTE Ltd", "AKENORI-PTE" }, { 0xF8E079, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x286336, "Siemens AG - Industrial Automation - EWA", "SIEMENS---INDUSTRIAL-AUTOMATION---EWA" }, { 0x38F098, "Vapor Stone Rail Systems", "VAPOR-STONE-RAIL" }, { 0xCCFA00, "LG Electronics", "LG-ELECTRONICS" }, { 0xCC95D7, "Vizio, Inc", "VIZIO" }, { 0x34DE1A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3C0C48, "Servergy, Inc.", "SERVERGY" }, { 0x68D247, "Portalis LC", "PORTALIS-LC" }, { 0xFC27A2, "TRANS ELECTRIC CO., LTD.", "TRANS-ELECTRIC" }, { 0x14C089, "DUNE HD LTD", "DUNE-HD" }, { 0x288A1C, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xDCCEBC, "Shenzhen JSR Technology Co.,Ltd.", "SHENZHEN-JSR" }, { 0x9486D4, "Surveillance Pro Corporation", "SURVEILLANCE-PRO" }, { 0xF89550, "Proton Products Chengdu Ltd", "PROTON-PRODUCTS-CHENGDU" }, { 0x943BB1, "KAONMEDIA", "KAONMEDIA" }, { 0x447BC4, "DualShine Technology(SZ)Co.,Ltd", "DUALSHINE-SZ" }, { 0x542F89, "Euclid Laboratories, Inc.", "EUCLID-LABORATORIES" }, { 0xDC3EF8, "Nokia Corporation", "NOKIA" }, { 0xF08A28, "JIANGSU HENGSION ELECTRONIC S and T CO.,LTD", "JIANGSU-HENGSION-S-AND-T" }, { 0xA8574E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x90DFB7, "s.m.s smart microwave sensors GmbH", "S-M-S-SMART-MICROWAVE-SENSORS" }, { 0x5850AB, "TLS Corporation", "TLS" }, { 0xB843E4, "Vlatacom", "VLATACOM" }, { 0x8425A4, "Tariox Limited", "TARIOX" }, { 0xE07F53, "TECHBOARD SRL", "TECHBOARD-SRL" }, { 0x4C0DEE, "JABIL CIRCUIT (SHANGHAI) LTD.", "JABIL-CIRCUIT-SHANGHAI" }, { 0x044E06, "Ericsson AB", "ERICSSON-AB" }, { 0xA07771, "Vialis BV", "VIALIS" }, { 0xD0BD01, "DS International", "DS" }, { 0xC0C569, "SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD", "SHANGHAI-LYNUC-CNC" }, { 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" }, { 0x301966, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCC07AB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE84E84, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x74A4B5, "Powerleader Science and Technology Co. Ltd.", "POWERLEADER-SCIENCE-AND" }, { 0xBC4100, "CODACO ELECTRONIC s.r.o.", "CODACO-S-R-O" }, { 0x58B961, "SOLEM Electronique", "SOLEM-ELECTRONIQUE" }, { 0x8841FC, "AirTies Wireless Netowrks", "AIRTIES-WIRELESS-NETOWRKS" }, { 0xDC0575, "SIEMENS ENERGY AUTOMATION", "SIEMENS-ENERGY-AUTOMATION" }, { 0x94877C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x342387, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5C1193, "Seal One AG", "SEAL-ONE" }, { 0xB4527E, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x407009, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCCFB65, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x50E14A, "Private", "PRIVATE" }, { 0x68FCB3, "Next Level Security Systems, Inc.", "NEXT-LEVEL-SECURITY" }, { 0x70305E, "Nanjing Zhongke Menglian Information Technology Co.,LTD", "NANJING-ZHONGKE-MENGLIAN-INFORMATION" }, { 0x6C98EB, "Ocedo GmbH", "OCEDO" }, { 0x200E95, "IEC – TC9 WG43", "IEC-–-TC9-WG43" }, { 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" }, { 0x508569, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x9C44A6, "SwiftTest, Inc.", "SWIFTTEST" }, { 0x9C8888, "Simac Techniek NV", "SIMAC-TECHNIEK-NV" }, { 0x180C14, "iSonea Limited", "ISONEA" }, { 0x8CAE89, "Y-cam Solutions Ltd", "Y-CAM-SOLUTIONS" }, { 0x7CCD3C, "Guangzhou Juzing Technology Co., Ltd", "GUANGZHOU-JUZING" }, { 0x10B26B, "base Co.,Ltd.", "BASE" }, { 0x084027, "Gridstore Inc.", "GRIDSTORE" }, { 0x600347, "Billion Electric Co. Ltd.", "BILLION-ELECTRIC" }, { 0x7C2048, "KoamTac", "KOAMTAC" }, { 0xBCF5AC, "LG Electronics", "LG-ELECTRONICS" }, { 0x705986, "OOO TTV", "OOO-TTV" }, { 0x64BABD, "SDJ Technologies, Inc.", "SDJ-TECHNOLOGIES" }, { 0x889166, "Viewcooper Corp.", "VIEWCOOPER" }, { 0x103378, "FLECTRON Co., LTD", "FLECTRON" }, { 0x44C4A9, "Opticom Communication, LLC", "OPTICOM-COMMUNICATION-LLC" }, { 0x6C3C53, "SoundHawk Corp", "SOUNDHAWK" }, { 0x44C56F, "NGN Easy Satfinder (Tianjin) Electronic Co., Ltd", "NGN-EASY-SATFINDER-TIANJIN" }, { 0x2C5A05, "Nokia Corporation", "NOKIA" }, { 0x848336, "Newrun", "NEWRUN" }, { 0x100E7E, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xEC71DB, "Shenzhen Baichuan Digital Technology Co., Ltd.", "SHENZHEN-BAICHUAN-DIGITAL" }, { 0xB8266C, "ANOV France", "ANOV-FRANCE" }, { 0x50FC9F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC85663, "Sunflex Europe GmbH", "SUNFLEX-EUROPE" }, { 0x88FED6, "ShangHai WangYong Software Co., Ltd.", "SHANGHAI-WANGYONG-SOFTWARE" }, { 0x1C7839, "Shenzhen Tencent Computer System Co., Ltd.", "SHENZHEN-TENCENT-SYSTEM" }, { 0xA0A8CD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x303A64, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB0FEBD, "Private", "PRIVATE" }, { 0x509871, "Inventum Technologies Private Limited", "INVENTUM-TECHNOLOGIES-PRIVATE" }, { 0x384233, "Wildeboer Bauteile GmbH", "WILDEBOER-BAUTEILE" }, { 0x9440A2, "Anywave Communication Technologies, Inc.", "ANYWAVE-COMMUNICATION-TECHNOLOGIES" }, { 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" }, { 0xC81F66, "Dell Inc", "DELL" }, { 0x2CCC15, "Nokia Corporation", "NOKIA" }, { 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" }, { 0xF0921C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC0A39E, "EarthCam, Inc.", "EARTHCAM" }, { 0x088E4F, "SF Software Solutions", "SF-SOFTWARE-SOLUTIONS" }, { 0xE8EADA, "Denkovi Assembly Electroncs LTD", "DENKOVI-ASSEMBLY-ELECTRONCS" }, { 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" }, { 0x284D92, "Luminator", "LUMINATOR" }, { 0x1C4BB9, "SMG ENTERPRISE, LLC", "SMG-LLC" }, { 0x0C5CD8, "DOLI Elektronik GmbH", "DOLI-ELEKTRONIK" }, { 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" }, { 0x6CB7F4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC06599, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x182666, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 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" }, { 0x28285D, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x103B59, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x746630, "T:mi Ytti", "T:MI-YTTI" }, { 0x70E284, "Wistron InfoComm(Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x446755, "Orbit Irrigation", "ORBIT-IRRIGATION" }, { 0x789F4C, "HOERBIGER Elektronik GmbH", "HOERBIGER-ELEKTRONIK" }, { 0x98F8C1, "IDT Technology Limited", "IDT" }, { 0x1CA770, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LT", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS-LT" }, { 0xF47A4E, "Woojeon&Handan", "WOOJEON-HANDAN" }, { 0x7CB77B, "Paradigm Electronics Inc", "PARADIGM-ELECTRONICS" }, { 0x28A241, "exlar corp", "EXLAR" }, { 0x9876B6, "Adafruit", "ADAFRUIT" }, { 0x28BAB5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x985D46, "PeopleNet Communication", "PEOPLENET-COMMUNICATION" }, { 0x2C5FF3, "Pertronic Industries", "PERTRONIC-INDUSTRIES" }, { 0xE0AF4B, "Pluribus Networks, Inc.", "PLURIBUS-NETWORKS" }, { 0x940BD5, "Himax Technologies, Inc", "HIMAX-TECHNOLOGIES" }, { 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" }, { 0xE432CB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF01FAF, "Dell Inc", "DELL" }, { 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" }, { 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" }, { 0xE0DCA0, "Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch", "SIEMENS-ELECTRICAL-APPARATUS-SUZHOU-CHENGDU-BRANCH" }, { 0x90DA4E, "AVANU", "AVANU" }, { 0x7038B4, "Low Tech Solutions", "LOW-TECH-SOLUTIONS" }, { 0xAC1826, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0xD40129, "Broadcom Corporation", "BROADCOM" }, { 0x4C804F, "Armstrong Monitoring Corp", "ARMSTRONG-MONITORING" }, { 0x901D27, "zte corporation", "ZTE" }, { 0x7CD762, "Freestyle Technology Pty Ltd", "FREESTYLE-PTY" }, { 0x1CBA8C, "6278", "6278" }, { 0xD073D5, "LIFI LABS MANAGEMENT PTY LTD", "LIFI-LABS-MANAGEMENT-PTY" }, { 0xB8C46F, "PRIMMCON INDUSTRIES INC", "PRIMMCON-INDUSTRIES" }, { 0x78542E, "D-Link International", "D-LINK" }, { 0x1C3E84, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9CE6E7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x70E027, "HONGYU COMMUNICATION TECHNOLOGY LIMITED", "HONGYU-COMMUNICATION" }, { 0xE880D8, "GNTEK Electronics Co.,Ltd.", "GNTEK-ELECTRONICS" }, { 0x889B39, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x141330, "Anakreon UK LLP", "ANAKREON-UK-LLP" }, { 0x0CF405, "Beijing Signalway Technologies Co.,Ltd", "BEIJING-SIGNALWAY-TECHNOLOGIES" }, { 0x384FF0, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x5CF6DC, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0xBC72B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78F7BE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C76CA, "Terasic Technologies Inc.", "TERASIC-TECHNOLOGIES" }, { 0x0C1105, "Ringslink (Xiamen) Network Communication Technologies Co., Ltd", "RINGSLINK-XIAMEN-NETWORK-COMMUNICATION-TECHNOLOGIES" }, { 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" }, { 0x1077B1, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0x4C55B8, "Turkcell Teknoloji", "TURKCELL-TEKNOLOJI" }, { 0x2C44FD, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x088039, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x2C72C3, "Soundmatters", "SOUNDMATTERS" }, { 0x84E4D9, "Shenzhen NEED technology Ltd.", "SHENZHEN-NEED" }, { 0xC44838, "Satcom Direct, Inc.", "SATCOM-DIRECT" }, { 0x505AC6, "GUANGDONG SUPER TELECOM CO.,LTD.", "GUANGDONG-SUPER-TELECOM" }, { 0x38A86B, "Orga BV", "ORGA" }, { 0xC89346, "MXCHIP Company Limited", "MXCHIP-COMPANY" }, { 0xF0F260, "Mobitec AB", "MOBITEC-AB" }, { 0x1423D7, "EUTRONIX CO., LTD.", "EUTRONIX" }, { 0x30055C, "Brother industries, LTD.", "BROTHER-INDUSTRIES" }, { 0x08FC88, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x781FDB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C3996, "SAGEMCOM", "SAGEMCOM" }, { 0x0C8268, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB01743, "EDISON GLOBAL CIRCUITS LLC", "EDISON-GLOBAL-CIRCUITS-LLC" }, { 0x40C4D6, "ChongQing Camyu Technology Development Co.,Ltd.", "CHONGQING-CAMYU-DEVELOPMENT" }, { 0xB8763F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x384369, "Patrol Products Consortium LLC", "PATROL-PRODUCTS-CONSORTIUM-LLC" }, { 0xD08B7E, "Passif Semiconductor", "PASSIF-SEMICONDUCTOR" }, { 0x6886E7, "Orbotix, Inc.", "ORBOTIX" }, { 0x547975, "Nokia Corporation", "NOKIA" }, { 0xE0CEC3, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x5C43D2, "HAZEMEYER", "HAZEMEYER" }, { 0xD819CE, "Telesquare", "TELESQUARE" }, { 0xD809C3, "Cercacor Labs", "CERCACOR-LABS" }, { 0x50A4C8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C9811, "Guangzhou Sunrise Electronics Development Co., Ltd", "GUANGZHOU-SUNRISE-ELECTRONICS-DEVELOPMENT" }, { 0xA0FE91, "AVAT Automation GmbH", "AVAT-AUTOMATION" }, { 0xD89D67, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x5809E5, "Kivic Inc.", "KIVIC" }, { 0x649968, "Elentec", "ELENTEC" }, { 0x74ECF1, "Acumen", "ACUMEN" }, { 0x647791, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD4BF2D, "SE Controls Asia Pacific Ltd", "SE-CONTROLS-ASIA-PACIFIC" }, { 0xC45DD8, "HDMI Forum", "HDMI-FORUM" }, { 0xC44EAC, "Shenzhen Shiningworth Technology Co., Ltd.", "SHENZHEN-SHININGWORTH" }, { 0x44334C, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x00BB3A, "Private", "PRIVATE" }, { 0x84ED33, "BBMC Co.,Ltd", "BBMC" }, { 0xB8CA3A, "Dell Inc", "DELL" }, { 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" }, { 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" }, { 0x5CA39D, "SAMSUNG ELECTRO-MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x0C191F, "Inform Electronik", "INFORM-ELECTRONIK" }, { 0x080FFA, "KSP INC.", "KSP" }, { 0xECFC55, "A. Eberle GmbH & Co. KG", "A-EBERLE" }, { 0x0C8CDC, "Suunto Oy", "SUUNTO-OY" }, { 0xF8EDA5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x20B5C6, "Mimosa Networks", "MIMOSA-NETWORKS" }, { 0xAC3CB4, "Nilan A/S", "NILAN-A/S" }, { 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" }, { 0x6002B4, "Wistron NeWeb Corp.", "WISTRON-NEWEB" }, { 0xE4C146, "Objetivos y Servicios de Valor A", "OBJETIVOS-Y-SERVICIOS-DE-VALOR-A" }, { 0x3CFB96, "Emcraft Systems LLC", "EMCRAFT-LLC" }, { 0xE0757D, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x3C94D5, "Juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0xC458C2, "Shenzhen TATFOOK Technology Co., Ltd.", "SHENZHEN-TATFOOK" }, { 0x44184F, "Fitview", "FITVIEW" }, { 0x8C76C1, "Goden Tech Limited", "GODEN-TECH" }, { 0xDC2A14, "Shanghai Longjing Technology Co.", "SHANGHAI-LONGJING" }, { 0x94C962, "Teseq AG", "TESEQ" }, { 0xCC2D8C, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x00C14F, "DDL Co,.ltd.", "DDL" }, { 0xE09D31, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5CE0CA, "FeiTian United (Beijing) System Technology Co., Ltd.", "FEITIAN-UNITED-BEIJING-SYSTEM" }, { 0x6C2995, "Intel Corporate", "INTEL-CORPORATE" }, { 0x24DEC6, "Aruba Networks", "ARUBA-NETWORKS" }, { 0xF0ACA4, "HBC-radiomatic", "HBC-RADIOMATIC" }, { 0xB83E59, "Roku, Inc", "ROKU" }, { 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" }, { 0x18D949, "Qvis Labs, LLC", "QVIS-LABS-LLC" }, { 0x646223, "Cellient Co., Ltd.", "CELLIENT" }, { 0xA41F72, "Dell Inc.", "DELL" }, { 0xBCCFCC, "HTC Corporation", "HTC" }, { 0x843497, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x9C8D1A, "INTEG process group inc", "INTEG-PROCESS-GROUP" }, { 0x742D0A, "Norfolk Elektronik AG", "NORFOLK-ELEKTRONIK" }, { 0x480362, "DESAY ELECTRONICS(HUIZHOU)CO.,LTD", "DESAY-ELECTRONICS-HUIZHOU" }, { 0x6C71D9, "AzureWave Technologies, Inc", "AZUREWAVE-TECHNOLOGIES" }, { 0xB0358D, "Nokia Corporation", "NOKIA" }, { 0x0CF361, "Java Information", "JAVA-INFORMATION" }, { 0x34BDFA, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x70F927, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xA8AD3D, "Alcatel-Lucent Shanghai Bell Co., Ltd ", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xC4AD21, "MEDIAEDGE Corporation", "MEDIAEDGE" }, { 0xB0C745, "Buffalo Inc.", "BUFFALO" }, { 0xDCBF90, "HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD.", "HUIZHOU-QIAOXING-TELECOMMUNICATION-INDUSTRY" }, { 0x6815D3, "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A.", "ZAKLADY-ELEKTRONIKI-I-MECHANIKI-PRECYZYJNEJ-R-G" }, { 0x50B7C3, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 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" }, { 0xBC6A29, "6278", "6278" }, { 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" }, { 0x74888B, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xE0F5CA, "CHENG UEI PRECISION INDUSTRY CO.,LTD.", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0x9C5D12, "Aerohive Networks Inc", "AEROHIVE-NETWORKS" }, { 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" }, { 0xC8DE51, "Integra Networks, Inc.", "INTEGRA-NETWORKS" }, { 0x749DDC, "2wire", "2WIRE" }, { 0x5CE8EB, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x901EDD, "GREAT COMPUTER CORPORATION", "GREAT" }, { 0x2C6289, "Regenersis (Glenrothes) Ltd", "REGENERSIS-GLENROTHES" }, { 0xC0AA68, "OSASI Technos Inc.", "OSASI-TECHNOS" }, { 0xB829F7, "Blaster Tech", "BLASTER-TECH" }, { 0xF45214, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0xEC4993, "Qihan Technology Co., Ltd ", "QIHAN" }, { 0xB0ACFA, "FUJITSU LIMITED", "FUJITSU" }, { 0x1C959F, "Veethree Electronics And Marine LLC", "VEETHREE-ELECTRONICS-AND-MARINE-LLC" }, { 0xE86D54, "Digit Mobile Inc", "DIGIT-MOBILE" }, { 0x9857D3, "HON HAI-CCPBG PRECISION IND.CO.,LTD.", "HON-HAI-CCPBG-PRECISION-IND" }, { 0x689423, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0x38AA3C, "SAMSUNG ELECTRO-MECHANICS", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x049F06, "Smobile Co., Ltd.", "SMOBILE" }, { 0xECD950, "IRT SA", "IRT" }, { 0x8CEEC6, "Precepscion Pty. Ltd.", "PRECEPSCION-PTY" }, { 0x74273C, "ChangYang Technology (Nanjing) Co., LTD", "CHANGYANG-NANJING" }, { 0x087CBE, "Quintic Corp.", "QUINTIC" }, { 0xA830AD, "Wei Fang Goertek Electronics Co.,Ltd", "WEI-FANG-GOERTEK-ELECTRONICS" }, { 0x8007A2, "Esson Technology Inc.", "ESSON" }, { 0x2C3557, "ELLIY Power CO..Ltd", "ELLIY-POWER" }, { 0x6C5A34, "Shenzhen Haitianxiong Electronic Co., Ltd.", "SHENZHEN-HAITIANXIONG" }, { 0x485A3F, "WISOL", "WISOL" }, { 0xDC3A5E, "Roku, Inc", "ROKU" }, { 0x70F1E5, "Xetawave LLC", "XETAWAVE-LLC" }, { 0xC05E79, "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD", "SHENZHEN-HUAXUN-ARK-TECHNOLOGIES" }, { 0xA4934C, "Cisco Systems, Inc", "CISCO" }, { 0x5CE2F4, "AcSiP Technology Corp.", "ACSIP" }, { 0xE85484, "NEO Information Systems Co., Ltd.", "NEO-INFORMATION" }, { 0x206432, "SAMSUNG ELECTRO MECHANICS CO.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x74AE76, "iNovo Broadband, Inc.", "INOVO-BROADBAND" }, { 0x60B933, "Deutron Electronics Corp.", "DEUTRON-ELECTRONICS" }, { 0x38EE9D, "Anedo Ltd.", "ANEDO" }, { 0xC80E77, "Le Shi Zhi Xin Electronic Technology (Tianjin) Co.,Ltd ", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0x80CEB1, "Theissen Training Systems GmbH", "THEISSEN-TRAINING" }, { 0x9C611D, "Omni-ID USA, Inc.", "OMNI-ID-USA" }, { 0x78BEBD, "STULZ GmbH", "STULZ" }, { 0x24BE05, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB4B52F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB0B2DC, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x348137, "UNICARD SA", "UNICARD" }, { 0x64F242, "Gerdes Aktiengesellschaft", "GERDES-AKTIENGESELLSCHAFT" }, { 0x60F281, "TRANWO TECHNOLOGY CO., LTD.", "TRANWO" }, { 0xB0E892, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 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" }, { 0x3C9174, "ALONG COMMUNICATION TECHNOLOGY", "ALONG-COMMUNICATION" }, { 0xB8E937, "Sonos, Inc.", "SONOS" }, { 0x98262A, "Applied Research Associates, Inc", "APPLIED-RESEARCH-ASSOCIATES" }, { 0xE8D0FA, "MKS Instruments Deutschland GmbH", "MKS-INSTRUMENTS-DEUTSCHLAND" }, { 0xB0D2F5, "Vello Systems, Inc.", "VELLO" }, { 0xC89F42, "VDII Innovation AB", "VDII-INNOVATION-AB" }, { 0xAC4BC8, "Juniper networks", "JUNIPER-NETWORKS" }, { 0xA41875, "Cisco Systems, Inc", "CISCO" }, { 0x640E94, "Pluribus Networks, Inc.", "PLURIBUS-NETWORKS" }, { 0x6CE983, "Gastron Co., LTD.", "GASTRON" }, { 0x0CB4EF, "Digience Co.,Ltd.", "DIGIENCE" }, { 0x4016FA, "EKM Metering", "EKM-METERING" }, { 0x3C363D, "Nokia Corporation", "NOKIA" }, { 0x80000B, "Intel Corporate", "INTEL-CORPORATE" }, { 0xBC0200, "Stewart Audio", "STEWART-AUDIO" }, { 0x1C973D, "PRICOM Design", "PRICOM-DESIGN" }, { 0x8018A7, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0x94CA0F, "Honeywell Analytics", "HONEYWELL-ANALYTICS" }, { 0x0C8BFD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x848D84, "Rajant Corporation", "RAJANT" }, { 0xD8337F, "Office FA.com Co.,Ltd.", "OFFICE-FA-COM" }, { 0x7CEF8A, "Inhon International Ltd.", "INHON" }, { 0x20C1AF, "i Wit Digital Co., Limited", "I-WIT-DIGITAL" }, { 0xD88A3B, "UNIT-EM", "UNIT-EM" }, { 0xBCD940, "ASR Co,.Ltd.", "ASR" }, { 0x00E8AB, "Meggitt Training Systems, Inc.", "MEGGITT-TRAINING" }, { 0xB0A86E, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x18421D, "Private", "PRIVATE" }, { 0x78617C, "MITSUMI ELECTRIC CO.,LTD ", "MITSUMI-ELECTRIC" }, { 0xC401B1, "SeekTech INC", "SEEKTECH" }, { 0x8096B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x1C5FFF, "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch", "BEIJING-ERENEBEN-INFORMATION-SHENZHEN-BRANCH" }, { 0xC0C946, "MITSUYA LABORATORIES INC.", "MITSUYA-LABORATORIES" }, { 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" }, { 0xD806D1, "Honeywell Fire System (Shanghai) Co,. Ltd.", "HONEYWELL-FIRE-SYSTEM-SHANGHAI" }, { 0xE0DB55, "Dell Inc", "DELL" }, { 0x9CC7A6, "AVM GmbH", "AVM" }, { 0xB8D9CE, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x687251, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x8C6AE4, "Viogem Limited", "VIOGEM" }, { 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" }, { 0x3C3888, "ConnectQuest, llc", "CONNECTQUEST-LLC" }, { 0xACC2EC, "CLT INT'L IND. CORP.", "CLT-IND" }, { 0x7CBFB1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x702F4B, "PolyVision Inc.", "POLYVISION" }, { 0x741489, "SRT Wireless", "SRT-WIRELESS" }, { 0xD0DB32, "Nokia Corporation", "NOKIA" }, { 0x609084, "DSSD Inc", "DSSD" }, { 0xA4E731, "Nokia Corporation", "NOKIA" }, { 0x0808EA, "AMSC", "AMSC" }, { 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" }, { 0x34AA99, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x506028, "Xirrus Inc.", "XIRRUS" }, { 0x10A932, "Beijing Cyber Cloud Technology Co. ,Ltd.", "BEIJING-CYBER-CLOUD" }, { 0xE0CB1D, "Private", "PRIVATE" }, { 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" }, { 0xF0D14F, "LINEAR LLC", "LINEAR-LLC" }, { 0xAC3D75, "HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD.", "HANGZHOU-ZHIWAY-TECHNOLOGIES" }, { 0xE0F9BE, "Cloudena Corp.", "CLOUDENA" }, { 0x3CC1F6, "Melange Systems Pvt. Ltd.", "MELANGE-PVT" }, { 0x54E63F, "ShenZhen LingKeWeiEr Technology Co., Ltd.", "SHENZHEN-LINGKEWEIER" }, { 0x4C60DE, "Netgear", "NETGEAR" }, { 0x006B9E, "VIZIO Inc", "VIZIO" }, { 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" }, { 0x5CC6D0, "Skyworth Digital technology(shenzhen)co.ltd.", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0xE09467, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00DBDF, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x08BE09, "Astrol Electronic AG", "ASTROL" }, { 0xD8B8F6, "Nantworks", "NANTWORKS" }, { 0x6044F5, "Easy Digital Ltd.", "EASY-DIGITAL" }, { 0xAC51EE, "Cambridge Communication Systems Ltd", "CAMBRIDGE-COMMUNICATION" }, { 0x00AA70, "LG Electronics", "LG-ELECTRONICS" }, { 0x10E4AF, "APR, LLC", "APR-LLC" }, { 0xE03005, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xB0BD6D, "Echostreams Innovative Solutions", "ECHOSTREAMS-INNOVATIVE-SOLUTIONS" }, { 0xF0E77E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xACF0B2, "Becker Electronics Taiwan Ltd.", "BECKER-ELECTRONICS-TAIWAN" }, { 0x3C4E47, "Etronic A/S", "ETRONIC-A/S" }, { 0xC8F9F9, "Cisco Systems, Inc", "CISCO" }, { 0xF0F755, "Cisco Systems, Inc", "CISCO" }, { 0x10F96F, "LG Electronics", "LG-ELECTRONICS" }, { 0xB01C91, "Elim Co", "ELIM" }, { 0x0CA2F4, "Chameleon Technology (UK) Limited", "CHAMELEON-UK" }, { 0xECA86B, "ELITEGROUP COMPUTER SYSTEMS CO., LTD.", "ELITEGROUP" }, { 0x846AED, "Wireless Tsukamoto.,co.LTD", "WIRELESS-TSUKAMOTO" }, { 0xD8E952, "KEOPSYS", "KEOPSYS" }, { 0x3CB9A6, "Belden Deutschland GmbH", "BELDEN-DEUTSCHLAND" }, { 0xC01885, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0xF00786, "Shandong Bittel Electronics Co., Ltd", "SHANDONG-BITTEL-ELECTRONICS" }, { 0x885C47, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x1CB17F, "NEC Platforms, Ltd.", "NEC-PLATFORMS" }, { 0x942E17, "Schneider Electric Canada Inc", "SCHNEIDER-ELECTRIC-CANADA" }, { 0x90C115, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0xB89674, "AllDSP GmbH & Co. KG", "ALLDSP" }, { 0x6CA682, "EDAM information & communications", "EDAM-INFORMATION-COMMUNICATION" }, { 0xE03C5B, "SHENZHEN JIAXINJIE ELECTRON CO.,LTD", "SHENZHEN-JIAXINJIE-ELECTRON" }, { 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" }, { 0x8425DB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF01C13, "LG Electronics", "LG-ELECTRONICS" }, { 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" }, { 0xDC0B1A, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xDC1EA3, "Accensus LLC", "ACCENSUS-LLC" }, { 0xA40130, "ABIsystems Co., LTD", "ABISYSTEMS" }, { 0x68F125, "Data Controls Inc.", "DATA-CONTROLS" }, { 0xBC764E, "Rackspace US, Inc.", "RACKSPACE-US" }, { 0xC4EEAE, "VSS Monitoring", "VSS-MONITORING" }, { 0x2437EF, "EMC Electronic Media Communication SA", "EMC-MEDIA-COMMUNICATION" }, { 0xCCF9E8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBCB1F3, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xB80305, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x2C10C1, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 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" }, { 0x04E451, "6278", "6278" }, { 0xB8BB6D, "ENERES Co.,Ltd.", "ENERES" }, { 0x8400D2, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x645DD7, "Shenzhen Lifesense Medical Electronics Co., Ltd. ", "SHENZHEN-LIFESENSE-MEDICAL-ELECTRONICS" }, { 0xD4F63F, "IEA S.R.L.", "IEA-S-R-L" }, { 0x4C0289, "LEX COMPUTECH CO., LTD", "LEX-COMPUTECH" }, { 0x2C768A, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xC0E54E, "DENX Computer Systems GmbH", "DENX" }, { 0x386077, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE435FB, "Sabre Technology (Hull) Ltd", "SABRE-HULL" }, { 0x4C17EB, "SAGEMCOM", "SAGEMCOM" }, { 0xCC501C, "KVH Industries, Inc.", "KVH-INDUSTRIES" }, { 0xAC6FD9, "Valueplus Inc.", "VALUEPLUS" }, { 0xA4E391, "DENY FONTAINE", "DENY-FONTAINE" }, { 0x24B657, "Cisco Systems, Inc", "CISCO" }, { 0x940B2D, "NetView Technologies(Shenzhen) Co., Ltd", "NETVIEW-TECHNOLOGIES-SHENZHEN" }, { 0x5CB524, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0xD00790, "6278", "6278" }, { 0xD89760, "C2 Development, Inc.", "C2-DEVELOPMENT" }, { 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" }, { 0xC8A620, "Nebula, Inc", "NEBULA" }, { 0x989080, "Linkpower Network System Inc Ltd.", "LINKPOWER-NETWORK-SYSTEM" }, { 0x0064A6, "Maquet CardioVascular", "MAQUET-CARDIOVASCULAR" }, { 0x9CF67D, "Ricardo Prague, s.r.o.", "RICARDO-PRAGUE-S-R-O" }, { 0xA0E201, "AVTrace Ltd.(China)", "AVTRACE-CHINA" }, { 0x38ECE4, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x74DE2B, "Liteon Technology Corporation", "LITEON" }, { 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" }, { 0x146308, "JABIL CIRCUIT (SHANGHAI) LTD.", "JABIL-CIRCUIT-SHANGHAI" }, { 0x28BE9B, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x04A82A, "Nokia Corporation", "NOKIA" }, { 0x7C4C58, "Scale Computing, Inc.", "SCALE-COMPUTING" }, { 0x743170, "Arcadyan Technology Corporation", "ARCADYAN" }, { 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" }, { 0x706F81, "Private", "PRIVATE" }, { 0x9CDF03, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 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" }, { 0xDC175A, "Hitachi High-Technologies Corporation", "HITACHI-HIGH-TECHNOLOGIES" }, { 0x9034FC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0x2C4138, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0xB0F1BC, "Dhemax Ingenieros Ltda", "DHEMAX-INGENIEROS-LTDA" }, { 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" }, { 0xA4B36A, "JSC SDO Chromatec", "JSC-SDO-CHROMATEC" }, { 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" }, { 0x984B4A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x703AD8, "Shenzhen Afoundry Electronic Co., Ltd", "SHENZHEN-AFOUNDRY" }, { 0x4C98EF, "Zeo", "ZEO" }, { 0xDCA6BD, "Beijing Lanbo Technology Co., Ltd.", "BEIJING-LANBO" }, { 0x905F8D, "modas GmbH", "MODAS" }, { 0xE0C922, "Jireh Energy Tech., Ltd.", "JIREH-ENERGY-TECH" }, { 0x28401A, "C8 MediSensors, Inc.", "C8-MEDISENSORS" }, { 0xD0667B, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x58E808, "AUTONICS CORPORATION", "AUTONICS" }, { 0xB8C716, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x8058C5, "NovaTec Kommunikationstechnik GmbH", "NOVATEC-KOMMUNIKATIONSTECHNIK" }, { 0x3C096D, "Powerhouse Dynamics", "POWERHOUSE-DYNAMICS" }, { 0xC48508, "Intel Corporate", "INTEL-CORPORATE" }, { 0xCCD9E9, "SCR Engineers Ltd.", "SCR-ENGINEERS" }, { 0xF0DB30, "Yottabyte", "YOTTABYTE" }, { 0x9C31B6, "Kulite Semiconductor Products Inc", "KULITE-SEMICONDUCTOR-PRODUCTS" }, { 0xDC3C84, "Ticom Geomatics, Inc.", "TICOM-GEOMATICS" }, { 0xE8CC32, "Micronet LTD", "MICRONET" }, { 0x9C6ABE, "QEES ApS.", "QEES-APS" }, { 0xBC3E13, "Accordance Systems Inc.", "ACCORDANCE" }, { 0x0455CA, "BriView (Xiamen) Corp.", "BRIVIEW-XIAMEN" }, { 0xD45D42, "Nokia Corporation", "NOKIA" }, { 0x7C4FB5, "Arcadyan Technology Corporation", "ARCADYAN" }, { 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" }, { 0x182861, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 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" }, { 0x9C645E, "Harman Consumer Group", "HARMAN-CONSUMER-GROUP" }, { 0x78CD8E, "SMC Networks Inc", "SMC-NETWORKS" }, { 0x5C9AD8, "FUJITSU LIMITED", "FUJITSU" }, { 0x144C1A, "Max Communication GmbH", "MAX-COMMUNICATION" }, { 0xFCE557, "Nokia Corporation", "NOKIA" }, { 0xF0AE51, "Xi3 Corp", "XI3" }, { 0x8C6422, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 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" }, { 0xCC52AF, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x6C81FE, "Mitsuba Corporation", "MITSUBA" }, { 0xE8F928, "RFTECH SRL", "RFTECH-SRL" }, { 0x48D8FE, "ClarIDy Solutions, Inc.", "CLARIDY-SOLUTIONS" }, { 0x08863B, "Belkin International, Inc.", "BELKIN" }, { 0xD44F80, "Kemper Digital GmbH", "KEMPER-DIGITAL" }, { 0x34684A, "Teraworks Co., Ltd.", "TERAWORKS" }, { 0x68A3C4, "Liteon Technology Corporation", "LITEON" }, { 0x0CC6AC, "DAGS", "DAGS" }, { 0xD82A7E, "Nokia Corporation", "NOKIA" }, { 0x5CBD9E, "HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED", "HONGKONG-MIRACLE-EAGLE-GROUP" }, { 0xA81B18, "XTS CORP", "XTS" }, { 0x04E2F8, "AEP Ticketing solutions srl", "AEP-TICKETING-SOLUTIONS-SRL" }, { 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" }, { 0x30EB25, "INTEK DIGITAL", "INTEK-DIGITAL" }, { 0x743889, "ANNAX Anzeigesysteme GmbH", "ANNAX-ANZEIGESYSTEME" }, { 0xE89A8F, "Quanta Computer Inc.", "QUANTA" }, { 0x7C034C, "SAGEMCOM", "SAGEMCOM" }, { 0x985945, "6278", "6278" }, { 0x647FDA, "TEKTELIC Communications Inc.", "TEKTELIC-COMMUNICATION" }, { 0x609E64, "Vivonic GmbH", "VIVONIC" }, { 0x906EBB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x308CFB, "Dropcam", "DROPCAM" }, { 0xB8AF67, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x44C15C, "6278", "6278" }, { 0x64A769, "HTC Corporation", "HTC" }, { 0xCCF841, "Lumewave", "LUMEWAVE" }, { 0x1CE2CC, "6278", "6278" }, { 0x701404, "Limited Liability Company", "LIABILITY-COMPANY" }, { 0x1C35F1, "NEW Lift Neue Elektronische Wege Steuerungsbau GmbH", "NEW-LIFT-NEUE-ELEKTRONISCHE-WEGE-STEUERUNGSBAU" }, { 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" }, { 0xCC7D37, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF8EA0A, "Dipl.-Math. Michael Rauch", "DIPL--MATH-MICHAEL-RAUCH" }, { 0x100BA9, "Intel Corporate", "INTEL-CORPORATE" }, { 0x809B20, "Intel Corporate", "INTEL-CORPORATE" }, { 0xBC5FF4, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 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" }, { 0x74CD0C, "Smith Myers Communications Ltd.", "SMITH-MYERS-COMMUNICATION" }, { 0xB8EE79, "YWire Technologies, Inc.", "YWIRE-TECHNOLOGIES" }, { 0x7076F0, "LevelOne Communications (India) Private Limited", "LEVELONE-COMMUNICATION-INDIA-PRIVATE" }, { 0x40C245, "Shenzhen Hexicom Technology Co., Ltd.", "SHENZHEN-HEXICOM" }, { 0xBC305B, "Dell Inc.", "DELL" }, { 0x48C8B6, "SysTec GmbH", "SYSTEC" }, { 0x303855, "Nokia Corporation", "NOKIA" }, { 0x9C4563, "DIMEP Sistemas", "DIMEP-SISTEMAS" }, { 0xE42771, "Smartlabs", "SMARTLABS" }, { 0xC4EEF5, "Oclaro, Inc.", "OCLARO" }, { 0xCC09C8, "IMAQLIQ LTD", "IMAQLIQ" }, { 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" }, { 0xD8C7C8, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x34A183, "AWare, Inc", "AWARE" }, { 0x740ABC, "JSJS Designs (Europe) Limited", "JSJS-DESIGNS-EUROPE" }, { 0xE8E0B7, "Toshiba", "TOSHIBA" }, { 0x588D09, "Cisco Systems, Inc", "CISCO" }, { 0x90610C, "Fida International (S) Pte Ltd", "FIDA-S-PTE" }, { 0x3C5F01, "Synerchip Co., Ltd.", "SYNERCHIP" }, { 0x708B78, "citygrow technology co., ltd", "CITYGROW" }, { 0xB0B32B, "Slican Sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x5842E4, "Sigma International General Medical Apparatus, LLC.", "SIGMA-GENERAL-MEDICAL-APPARATUS-LLC" }, { 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" }, { 0x74E50B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x183DA2, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC8112, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x101DC0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF49F54, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x6063FD, "Transcend Communication Beijing Co.,Ltd.", "TRANSCEND-COMMUNICATION-BEIJING" }, { 0x485D60, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xE08A7E, "Exponent", "EXPONENT" }, { 0x80C6CA, "Endian s.r.l.", "ENDIAN-S-R-L" }, { 0xF8B599, "Guangzhou CHNAVS Digital Technology Co.,Ltd", "GUANGZHOU-CHNAVS-DIGITAL" }, { 0x7C3920, "SSOMA SECURITY", "SSOMA-SECURITY" }, { 0x448500, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB44CC2, "NR ELECTRIC CO., LTD", "NR-ELECTRIC" }, { 0x084EBF, "Broad Net Mux Corporation", "BROAD-NET-MUX" }, { 0x18ABF5, "Ultra Electronics - Electrics", "ULTRA-ELECTRONICS---ELECTRICS" }, { 0x48CB6E, "Cello Electronics (UK) Ltd", "CELLO-ELECTRONICS-UK" }, { 0xEC3BF0, "NovelSat", "NOVELSAT" }, { 0xA86A6F, "RIM", "RIM" }, { 0x782BCB, "Dell Inc", "DELL" }, { 0x006DFB, "Vutrix (UK) Ltd", "VUTRIX-UK" }, { 0x4022ED, "Digital Projection Ltd", "DIGITAL-PROJECTION" }, { 0x0CA402, "Alcatel Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x0817F4, "IBM Corp", "IBM" }, { 0xC4D489, "JiangSu Joyque Information Industry Co.,Ltd", "JIANGSU-JOYQUE-INFORMATION-INDUSTRY" }, { 0x1C7C11, "EID ", "EID" }, { 0xF43E61, "Shenzhen Gongjin Electronics Co., Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 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" }, { 0x247703, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6CA906, "Telefield Ltd", "TELEFIELD" }, { 0x3C02B1, "Creation Technologies LP", "CREATION-TECHNOLOGIES-LP" }, { 0xE46C21, "messMa GmbH", "MESSMA" }, { 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" }, { 0x902155, "HTC Corporation", "HTC" }, { 0x507D02, "BIODIT", "BIODIT" }, { 0xF44227, "S & S Research Inc.", "S-S-RESEARCH" }, { 0xD4CBAF, "Nokia Corporation", "NOKIA" }, { 0x0470BC, "Globalstar Inc.", "GLOBALSTAR" }, { 0xE05FB9, "Cisco Systems, Inc", "CISCO" }, { 0x081735, "Cisco Systems, Inc", "CISCO" }, { 0x982CBE, "2Wire", "2WIRE" }, { 0x20FECD, "System In Frontier Inc.", "SYSTEM-IN-FRONTIER" }, { 0x94D019, "Cydle Corp.", "CYDLE" }, { 0x9C220E, "TASCAN Service GmbH", "TASCAN-SERVICE" }, { 0x2CA157, "acromate, Inc.", "ACROMATE" }, { 0x70DDA1, "Tellabs", "TELLABS" }, { 0xF455E0, "Niceway CNC Technology Co.,Ltd.Hunan Province", "NICEWAY-CNC-HUNAN-PROVINCE" }, { 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" }, { 0xE48399, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8C90D3, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0xF07D68, "D-Link Corporation", "D-LINK" }, { 0x4013D9, "Global ES", "GLOBAL-ES" }, { 0xF4DC4D, "Beijing CCD Digital Technology Co., Ltd", "BEIJING-CCD-DIGITAL" }, { 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" }, { 0xC848F5, "MEDISON Xray Co., Ltd", "MEDISON-XRAY" }, { 0x1C17D3, "Cisco Systems, Inc", "CISCO" }, { 0xE8E5D6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4CE676, "Buffalo Inc.", "BUFFALO" }, { 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" }, { 0x88AE1D, "COMPAL INFORMATION(KUNSHAN)CO.,LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0xF0BDF1, "Sipod Inc.", "SIPOD" }, { 0x288915, "CashGuard Sverige AB", "CASHGUARD-SVERIGE-AB" }, { 0x180675, "DILAX Intelcom GmbH", "DILAX-INTELCOM" }, { 0x40618E, "Stella-Green Co", "STELLA-GREEN" }, { 0x9C4E20, "Cisco Systems, Inc", "CISCO" }, { 0x408493, "Clavister AB", "CLAVISTER-AB" }, { 0x342109, "Jensen Scandinavia AS", "JENSEN-SCANDINAVIA-AS" }, { 0x08FAE0, "Fohhn Audio AG", "FOHHN-AUDIO" }, { 0xB439D6, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 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" }, { 0x1C3A4F, "AccuSpec Electronics, LLC", "ACCUSPEC-ELECTRONICS-LLC" }, { 0x58E747, "Deltanet AG", "DELTANET" }, { 0xD87533, "Nokia Corporation", "NOKIA" }, { 0xECFE7E, "BlueRadios, Inc.", "BLUERADIOS" }, { 0x842B2B, "Dell Inc.", "DELL" }, { 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" }, { 0xF04DA2, "Dell Inc.", "DELL" }, { 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" }, { 0x5C353B, "Compal Broadband Networks Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0xA4B2A7, "Adaxys Solutions AG", "ADAXYS-SOLUTIONS" }, { 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" }, { 0xAC4FFC, "SVS-VISTEK GmbH", "SVS-VISTEK" }, { 0xFC7CE7, "FCI USA LLC", "FCI-USA-LLC" }, { 0x145412, "Entis Co., Ltd.", "ENTIS" }, { 0xA04E04, "Nokia Corporation", "NOKIA" }, { 0x807D1B, "Neosystem Co. Ltd.", "NEOSYSTEM" }, { 0x6CDC6A, "Promethean Limited", "PROMETHEAN" }, { 0x9055AE, "Ericsson, EAB/RWI/K", "ERICSSON-EAB/RWI/K" }, { 0x58946B, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x444E1A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x009363, "Uni-Link Technology Co., Ltd.", "UNI-LINK" }, { 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" }, { 0x0C17F1, "TELECSYS", "TELECSYS" }, { 0x5492BE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C6BF5, "juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x4487FC, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 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" }, { 0xAC6706, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 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" }, { 0x44A42D, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x204E6B, "Axxana(israel) ltd", "AXXANA-ISRAEL" }, { 0x50F003, "Open Stack, Inc.", "OPEN-STACK" }, { 0xDCA971, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0xE89D87, "Toshiba", "TOSHIBA" }, { 0x784476, "Zioncom technology co.,ltd", "ZIONCOM" }, { 0x9CAFCA, "Cisco Systems, Inc", "CISCO" }, { 0x34CE94, "Parsec (Pty) Ltd", "PARSEC-PTY" }, { 0xACE9AA, "Hay Systems Ltd", "HAY" }, { 0x082AD0, "SRD Innovations Inc.", "SRD-INNOVATIONS" }, { 0xE0E751, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x74F07D, "BnCOM Co.,Ltd", "BNCOM" }, { 0x00BD3A, "Nokia Corporation", "NOKIA" }, { 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" }, { 0xFCFAF7, "Shanghai Baud Data Communication Co.,Ltd.", "SHANGHAI-BAUD-DATA-COMMUNICATION" }, { 0x003CC5, "WONWOO Engineering Co., Ltd", "WONWOO-ENGINEERING" }, { 0xE85E53, "Infratec Datentechnik GmbH", "INFRATEC-DATENTECHNIK" }, { 0x64DB18, "OpenPattern", "OPENPATTERN" }, { 0x580556, "Elettronica GF S.r.L.", "ELETTRONICA-GF-S-R-L" }, { 0x88B627, "Gembird Europe BV", "GEMBIRD-EUROPE" }, { 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" }, { 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" }, { 0xD41F0C, "JAI Oy", "JAI-OY" }, { 0x30469A, "Netgear", "NETGEAR" }, { 0x3C4C69, "Infinity System S.L.", "INFINITY-SYSTEM-S-L" }, { 0x44E49A, "OMNITRONICS PTY LTD", "OMNITRONICS-PTY" }, { 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" }, { 0x48EB30, "ETERNA TECHNOLOGY, INC.", "ETERNA" }, { 0xC0E422, "6278", "6278" }, { 0x6C0F6A, "JDC Tech Co., Ltd.", "JDC-TECH" }, { 0x6CF049, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0xD4C766, "Acentic GmbH", "ACENTIC" }, { 0x00271E, "Xagyl Communications", "XAGYL-COMMUNICATION" }, { 0x002722, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x002716, "Adachi-Syokai Co., Ltd.", "ADACHI-SYOKAI" }, { 0x002715, "Rebound Telecom. Co., Ltd", "REBOUND-TELECOM" }, { 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" }, { 0x64D4DA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x40ECF8, "Siemens AG", "SIEMENS" }, { 0xF04BF2, "JTECH Communications, Inc.", "JTECH-COMMUNICATION" }, { 0xA8CB95, "EAST BEST CO., LTD.", "EAST-BEST" }, { 0x40A6A4, "PassivSystems Ltd", "PASSIVSYSTEMS" }, { 0x903D6B, "Zicon Technology Corp.", "ZICON" }, { 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" }, { 0x002674, "Electronic Solutions, Inc.", "SOLUTIONS" }, { 0x00266E, "Nissho-denki Co.,LTD.", "NISSHO-DENKI" }, { 0x7C3BD5, "Imago Group", "IMAGO-GROUP" }, { 0x34EF44, "2Wire", "2WIRE" }, { 0xB894D2, "Retail Innovation HTT AB", "RETAIL-INNOVATION-HTT-AB" }, { 0xDCE71C, "AUG Elektronik GmbH", "AUG-ELEKTRONIK" }, { 0x88A5BD, "QPCOM INC.", "QPCOM" }, { 0x944452, "Belkin International Inc.", "BELKIN" }, { 0xDC3350, "TechSAT GmbH", "TECHSAT" }, { 0x64680C, "COMTREND", "COMTREND" }, { 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" }, { 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" }, { 0x0026A0, "moblic", "MOBLIC" }, { 0x00269A, "Carina System Co., Ltd.", "CARINA-SYSTEM" }, { 0x002710, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00270A, "IEE S.A.", "IEE" }, { 0x002704, "Accelerated Concepts, Inc", "ACCELERATED-CONCEPTS" }, { 0x0026FE, "MKD Technology Inc.", "MKD" }, { 0x0026F8, "Golden Highway Industry Development Co., Ltd.", "GOLDEN-HIGHWAY-INDUSTRY-DEVELOPMENT" }, { 0x0026F2, "Netgear", "NETGEAR" }, { 0x0026F7, "Infosys Technologies Ltd.", "INFOSYS-TECHNOLOGIES" }, { 0x0026F1, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 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" }, { 0x0026CC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0026C6, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x24828A, "Prowave Technologies Ltd.", "PROWAVE-TECHNOLOGIES" }, { 0x002668, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002662, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x00265B, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x00265C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002661, "Irumtek Co., Ltd.", "IRUMTEK" }, { 0x002657, "OOO NPP EKRA", "OOO-NPP-EKRA" }, { 0x00264E, "Rail & Road Protec GmbH", "RAIL-ROAD-PROTEC" }, { 0x00263C, "Bachmann Technology GmbH & Co. KG", "BACHMANN" }, { 0x002637, "Samsung Electro-Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x002636, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002604, "Audio Processing Technology Ltd", "AUDIO-PROCESSING" }, { 0x0025F4, "KoCo Connector AG", "KOCO-CONNECTOR" }, { 0x0025EB, "Reutech Radar Systems (PTY) Ltd", "REUTECH-RADAR-PTY" }, { 0x0025E6, "Belgian Monitoring Systems bvba", "BELGIAN-MONITORING-BVBA" }, { 0x0025E5, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x0025E1, "SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD", "SHANGHAI-SEEYOO" }, { 0x0025DC, "Sumitomo Electric Networks, Inc", "SUMITOMO-ELECTRIC-NETWORKS" }, { 0x0025DB, "ATI Electronics(Shenzhen) Co., LTD", "ATI-ELECTRONICS-SHENZHEN" }, { 0x0025D5, "Robonica (Pty) Ltd", "ROBONICA-PTY" }, { 0x0025C9, "SHENZHEN HUAPU DIGITAL CO., LTD", "SHENZHEN-HUAPU-DIGITAL" }, { 0x002556, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 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" }, { 0x00253A, "CEVA, Ltd.", "CEVA" }, { 0x002531, "Cloud Engines, Inc.", "CLOUD-ENGINES" }, { 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" }, { 0x002569, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x002564, "Dell Inc.", "DELL" }, { 0x002563, "Luxtera Inc", "LUXTERA" }, { 0x00255D, "Morningstar Corporation", "MORNINGSTAR" }, { 0x002504, "Valiant Communications Limited", "VALIANT-COMMUNICATION" }, { 0x0024FF, "QLogic Corporation", "QLOGIC" }, { 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" }, { 0x0024E5, "Seer Technology, Inc", "SEER" }, { 0x0025A9, "Shanghai Embedway Information Technologies Co.,Ltd", "SHANGHAI-EMBEDWAY-INFORMATION-TECHNOLOGIES" }, { 0x0025A3, "Trimax Wireless, Inc.", "TRIMAX-WIRELESS" }, { 0x00259C, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x002597, "Kalki Communication Technologies", "KALKI-COMMUNICATION-TECHNOLOGIES" }, { 0x002590, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x002580, "Equipson S.A.", "EQUIPSON" }, { 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" }, { 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" }, { 0x00250B, "CENTROFACTOR INC", "CENTROFACTOR" }, { 0x0025CE, "InnerSpace", "INNERSPACE" }, { 0x0025C2, "RingBell Co.,Ltd.", "RINGBELL" }, { 0x0025BB, "INNERINT Co., Ltd.", "INNERINT" }, { 0x0025B6, "Telecom FM", "TELECOM-FM" }, { 0x0025AF, "COMFILE Technology", "COMFILE" }, { 0x0025AA, "Beijing Soul Technology Co.,Ltd.", "BEIJING-SOUL" }, { 0x00243A, "Ludl Electronic Products", "LUDL-PRODUCTS" }, { 0x002434, "Lectrosonics, Inc.", "LECTROSONICS" }, { 0x00242E, "Datastrip Inc.", "DATASTRIP" }, { 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" }, { 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" }, { 0x0024A0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00249B, "Action Star Enterprise Co., Ltd.", "ACTION-STAR" }, { 0x002488, "Centre For Development Of Telematics", "CENTRE-FOR-DEVELOPMENT-OF-TELEMATICS" }, { 0x00248D, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x002494, "Shenzhen Baoxin Tech CO., Ltd.", "SHENZHEN-BAOXIN-TECH" }, { 0x002499, "Aquila Technologies", "AQUILA-TECHNOLOGIES" }, { 0x00247C, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002481, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 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" }, { 0x0024D2, "Askey Computer", "ASKEY" }, { 0x0024C6, "Hager Electro SAS", "HAGER-ELECTRO-SAS" }, { 0x0024B8, "free alliance sdn bhd", "FREE-ALLIANCE-SDN-BHD" }, { 0x0024BD, "Hainzl Industriesysteme GmbH", "HAINZL-INDUSTRIESYSTEME" }, { 0x0023D3, "AirLink WiFi Networking Corp.", "AIRLINK-WIFI-NETWORKING" }, { 0x0023D8, "Ball-It Oy", "BALL-IT-OY" }, { 0x0023CC, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0023C6, "SMC Corporation", "SMC" }, { 0x0023C0, "Broadway Networks", "BROADWAY-NETWORKS" }, { 0x0023B9, "EADS Deutschland GmbH", "EADS-DEUTSCHLAND" }, { 0x0023B3, "Lyyn AB", "LYYN-AB" }, { 0x0023B4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0023AD, "Xmark Corporation", "XMARK" }, { 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" }, { 0x002444, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x002380, "Nanoteq", "NANOTEQ" }, { 0x0023F5, "WILO SE", "WILO-SE" }, { 0x0023F8, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 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" }, { 0x00240B, "Virtual Computer Inc.", "VIRTUAL" }, { 0x00240A, "US Beverage Net", "US-BEVERAGE-NET" }, { 0x002405, "Dilog Nordic AB", "DILOG-NORDIC-AB" }, { 0x00225A, "Garde Security AB", "GARDE-SECURITY-AB" }, { 0x002254, "Bigelow Aerospace", "BIGELOW-AEROSPACE" }, { 0x00224C, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x002235, "Strukton Systems bv", "STRUKTON" }, { 0x00227E, "Chengdu 30Kaitian Communication Industry Co.Ltd", "CHENGDU-30KAITIAN-COMMUNICATION-INDUSTRY" }, { 0x002283, "juniper networks", "JUNIPER-NETWORKS" }, { 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" }, { 0x002264, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0022BC, "JDSU France SAS", "JDSU-FRANCE-SAS" }, { 0x0022B5, "NOVITA", "NOVITA" }, { 0x0022B0, "D-Link Corporation", "D-LINK" }, { 0x0022A9, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x0022AF, "Safety Vision", "SAFETY-VISION" }, { 0x0022A2, "Xtramus Technologies", "XTRAMUS-TECHNOLOGIES" }, { 0x00229D, "PYUNG-HWA IND.CO.,LTD", "PYUNG-HWA-IND" }, { 0x00228F, "CNRS", "CNRS" }, { 0x002296, "LinoWave Corporation", "LINOWAVE" }, { 0x002290, "Cisco Systems, Inc", "CISCO" }, { 0x00228A, "Teratronik elektronische systeme gmbh", "TERATRONIK-ELEKTRONISCHE-SYSTEME" }, { 0x002352, "DATASENSOR S.p.A.", "DATASENSOR-S-P-A" }, { 0x00234B, "Inyuan Technology Inc.", "INYUAN" }, { 0x002345, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 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" }, { 0x002327, "Shouyo Electronics CO., LTD", "SHOUYO-ELECTRONICS" }, { 0x002323, "Zylin AS", "ZYLIN-AS" }, { 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" }, { 0x002210, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002209, "Omron Healthcare Co., Ltd", "OMRON-HEALTHCARE" }, { 0x002203, "Glensound Electronics Ltd", "GLENSOUND-ELECTRONICS" }, { 0x00231A, "ITF Co., Ltd.", "ITF" }, { 0x002318, "Toshiba", "TOSHIBA" }, { 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" }, { 0x0022F5, "Advanced Realtime Tracking GmbH", "ADVANCED-REALTIME-TRACKING" }, { 0x0022EF, "iWDL Technologies", "IWDL-TECHNOLOGIES" }, { 0x00237A, "RIM", "RIM" }, { 0x002377, "Isotek Electronics Ltd", "ISOTEK-ELECTRONICS" }, { 0x002378, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x002371, "SOAM Systel", "SOAM-SYSTEL" }, { 0x002365, "ELKA-Elektronik GmbH", "ELKA-ELEKTRONIK" }, { 0x00236A, "SmartRG Inc", "SMARTRG" }, { 0x00235E, "Cisco Systems, Inc", "CISCO" }, { 0x002358, "SYSTEL SA", "SYSTEL" }, { 0x002357, "Pitronot Technologies and Engineering P.T.E. Ltd.", "PITRONOT-TECHNOLOGIES-AND-ENGINEERING-P-T-E" }, { 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" }, { 0x0021D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0021D0, "Global Display Solutions Spa", "GLOBAL-DISPLAY-SOLUTIONS-SPA" }, { 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" }, { 0x0022C1, "Active Storage Inc.", "ACTIVE-STORAGE" }, { 0x0022C2, "Proview Eletr´nica do Brasil LTDA", "PROVIEW-ELETR´NICA-DO-BRASIL-LTDA" }, { 0x00216B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002166, "NovAtel Inc.", "NOVATEL" }, { 0x002165, "Presstek Inc.", "PRESSTEK" }, { 0x00215F, "IHSE GmbH", "IHSE" }, { 0x002153, "SeaMicro Inc.", "SEAMICRO" }, { 0x002158, "Style Flying Technology Co.", "STYLE-FLYING" }, { 0x002159, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x00214C, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x002146, "Sanmina-SCI", "SANMINA-SCI" }, { 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" }, { 0x001F5C, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F57, "Phonik Innovation Co.,LTD", "PHONIK-INNOVATION" }, { 0x001F50, "Swissdis AG", "SWISSDIS" }, { 0x001F49, "Manhattan TV Ltd", "MANHATTAN-TV" }, { 0x001F4A, "Albentia Systems S.A.", "ALBENTIA" }, { 0x001F44, "GE Transportation Systems", "GE-TRANSPORTATION" }, { 0x00219B, "Dell Inc", "DELL" }, { 0x00219F, "SATEL OY", "SATEL-OY" }, { 0x002197, "ELITEGROUP COMPUTER SYSTEM", "ELITEGROUP-SYSTEM" }, { 0x002191, "D-Link Corporation", "D-LINK" }, { 0x00218A, "Electronic Design and Manufacturing Company", "DESIGN-AND-MANUFACTURING-COMPANY" }, { 0x00218B, "Wescon Technology, Inc.", "WESCON" }, { 0x002185, "MICRO-STAR INT'L CO.,LTD.", "MICRO-STAR" }, { 0x00217E, "Telit Communication s.p.a", "TELIT-COMMUNICATION-S-P-A" }, { 0x002178, "Matuschek Messtechnik GmbH", "MATUSCHEK-MESSTECHNIK" }, { 0x002172, "Seoultek Valley", "SEOULTEK-VALLEY" }, { 0x001FA0, "A10 Networks", "A10-NETWORKS" }, { 0x001F9A, "Nortel Networks", "NORTEL-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" }, { 0x001F82, "Cal-Comp Electronics & Communications Co., Ltd", "CAL-COMP-ELECTRONICS-COMMUNICATION" }, { 0x001F7B, "TechNexion Ltd.", "TECHNEXION" }, { 0x001F7D, "embedded wireless GmbH", "EMBEDDED-WIRELESS" }, { 0x001F7C, "Witelcom AS", "WITELCOM-AS" }, { 0x001F79, "Lodam Electronics A/S", "LODAM-ELECTRONICS-A/S" }, { 0x001FF2, "VIA Technologies, Inc.", "VIA-TECHNOLOGIES" }, { 0x001FED, "Tecan Systems Inc.", "TECAN" }, { 0x001FE6, "Alphion Corporation", "ALPHION" }, { 0x001FE0, "EdgeVelocity Corp", "EDGEVELOCITY" }, { 0x001FDF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001FDA, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 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" }, { 0x00212B, "MSA Auer", "MSA-AUER" }, { 0x00211E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x001FF9, "Advanced Knowledge Associates", "ADVANCED-KNOWLEDGE-ASSOCIATES" }, { 0x0021CB, "SMS TECNOLOGIA ELETRONICA LTDA", "SMS-TECNOLOGIA-ELETRONICA-LTDA" }, { 0x0021C4, "Consilium AB", "CONSILIUM-AB" }, { 0x0021B8, "Inphi Corporation", "INPHI" }, { 0x0021B1, "DIGITAL SOLUTIONS LTD", "DIGITAL-SOLUTIONS" }, { 0x0021AC, "Infrared Integrated Systems Ltd", "INFRARED-INTEGRATED" }, { 0x0021AB, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021A5, "ERLPhase Power Technologies Ltd.", "ERLPHASE-POWER-TECHNOLOGIES" }, { 0x001FC4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001FBD, "Kyocera Wireless Corp.", "KYOCERA-WIRELESS" }, { 0x001FB1, "Cybertech Inc.", "CYBERTECH" }, { 0x001FB6, "Chi Lin Technology Co., Ltd.", "CHI-LIN" }, { 0x001FAA, "Taseon, Inc.", "TASEON" }, { 0x001FA5, "Blue-White Industries", "BLUE-WHITE-INDUSTRIES" }, { 0x001FA4, "ShenZhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x001F10, "TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA", "TOLEDO-DO-BRASIL-INDUSTRIA-DE-BALANCAS-LTDA" }, { 0x001F0C, "Intelligent Digital Services GmbH", "INTELLIGENT-DIGITAL-SERVICES" }, { 0x001F00, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F07, "AZTEQ Mobile", "AZTEQ-MOBILE" }, { 0x001EF4, "L-3 Communications Display Systems", "L-3-COMMUNICATION-DISPLAY" }, { 0x001EF9, "Pascom Kommunikations systeme GmbH.", "PASCOM-KOMMUNIKATIONS-SYSTEME" }, { 0x001EFA, "PROTEI Ltd.", "PROTEI" }, { 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" }, { 0x001DD2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DC6, "SNR Inc.", "SNR" }, { 0x001E29, "Hypertherm Inc", "HYPERTHERM" }, { 0x001E2A, "Netgear Inc.", "NETGEAR" }, { 0x001E23, "Electronic Educational Devices, Inc", "EDUCATIONAL-DEVICES" }, { 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" }, { 0x001E82, "SanDisk Corporation", "SANDISK" }, { 0x001E81, "CNB Technology Inc.", "CNB" }, { 0x001E7C, "Taiwick Limited", "TAIWICK" }, { 0x001E77, "Air2App", "AIR2APP" }, { 0x001E6B, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x001E72, "PCS", "PCS" }, { 0x001E66, "RESOL Elektronische Regelungen GmbH", "RESOL-ELEKTRONISCHE-REGELUNGEN" }, { 0x001E65, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E5F, "KwikByte, LLC", "KWIKBYTE-LLC" }, { 0x001E58, "D-Link Corporation", "D-LINK" }, { 0x001EE8, "Mytek", "MYTEK" }, { 0x001EED, "Adventiq Ltd.", "ADVENTIQ" }, { 0x001EE7, "Epic Systems Inc", "EPIC" }, { 0x001EE1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001ED7, "H-Stream Wireless, Inc.", "H-STREAM-WIRELESS" }, { 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" }, { 0x001F3B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001F2F, "Berker GmbH & Co. KG", "BERKER" }, { 0x001F34, "Lung Hwa Electronics Co., Ltd.", "LUNG-HWA-ELECTRONICS" }, { 0x001F28, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 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" }, { 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" }, { 0x001E9A, "HAMILTON Bonaduz AG", "HAMILTON-BONADUZ" }, { 0x001E93, "CiriTech Systems Inc", "CIRITECH" }, { 0x001E8E, "Hunkeler AG", "HUNKELER" }, { 0x001E88, "ANDOR SYSTEM SUPPORT CO., LTD.", "ANDOR-SYSTEM-SUPPORT" }, { 0x001DC5, "Beijing Jiaxun Feihong Electricial Co., Ltd.", "BEIJING-JIAXUN-FEIHONG-ELECTRICIAL" }, { 0x001DBF, "Radiient Technologies, Inc.", "RADIIENT-TECHNOLOGIES" }, { 0x001DB8, "Intoto Inc.", "INTOTO" }, { 0x001DB3, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001DAE, "CHANG TSENG TECHNOLOGY CO., LTD", "CHANG-TSENG" }, { 0x001DA9, "Castles Technology, Co., LTD", "CASTLES" }, { 0x001E53, "Further Tech Co., LTD", "FURTHER-TECH" }, { 0x001E4C, "5572", "5572" }, { 0x001E42, "Teltonika", "TELTONIKA" }, { 0x001E3C, "Lyngbox Media AB", "LYNGBOX-MEDIA-AB" }, { 0x001E3B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001E2F, "DiMoto Pty Ltd", "DIMOTO-PTY" }, { 0x001E36, "IPTE", "IPTE" }, { 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" }, { 0x001D66, "Hyundai Telecom", "HYUNDAI-TELECOM" }, { 0x001D6D, "Confidant International LLC", "CONFIDANT-LLC" }, { 0x001D72, "Wistron Corporation", "WISTRON" }, { 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" }, { 0x001D09, "Dell Inc", "DELL" }, { 0x001D02, "Cybertech Telecom Development", "CYBERTECH-TELECOM-DEVELOPMENT" }, { 0x001CF6, "Cisco Systems, Inc", "CISCO" }, { 0x001CFB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001CFC, "Suminet Communication Technologies (Shanghai) Co., Ltd.", "SUMINET-COMMUNICATION-TECHNOLOGIES-SHANGHAI" }, { 0x001CEF, "Primax Electronics LTD", "PRIMAX-ELECTRONICS" }, { 0x001D49, "Innovation Wireless Inc.", "INNOVATION-WIRELESS" }, { 0x001D44, "KROHNE Messtechnik GmbH", "KROHNE-MESSTECHNIK" }, { 0x001D3D, "Avidyne Corporation", "AVIDYNE" }, { 0x001D43, "Shenzhen G-link Digital Technology Co., Ltd.", "SHENZHEN-G-LINK-DIGITAL" }, { 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" }, { 0x001CEA, "Scientific-Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x001CE9, "Galaxy Technology Limited", "GALAXY" }, { 0x001CE5, "MBS Electronic Systems GmbH", "MBS" }, { 0x001CE0, "DASAN TPS", "DASAN-TPS" }, { 0x001CDF, "Belkin International Inc.", "BELKIN" }, { 0x001CD9, "GlobalTop Technology Inc.", "GLOBALTOP" }, { 0x001CD2, "King Champion (Hong Kong) Limited", "KING-CHAMPION-HONG-KONG" }, { 0x001CCD, "Alektrona Corporation", "ALEKTRONA" }, { 0x001CC6, "ProStor Systems", "PROSTOR" }, { 0x001CBF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001CC0, "Intel Corporate", "INTEL-CORPORATE" }, { 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" }, { 0x001CA4, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x001CA9, "Audiomatica Srl", "AUDIOMATICA-SRL" }, { 0x001C9E, "Dualtech IT AB", "DUALTECH-IT-AB" }, { 0x001C97, "Enzytek Technology Inc.,", "ENZYTEK" }, { 0x001C98, "LUCKY TECHNOLOGY (HK) COMPANY LIMITED", "LUCKY-HK-COMPANY" }, { 0x001C92, "Tervela", "TERVELA" }, { 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" }, { 0x001C36, "iNEWiT NV", "INEWIT-NV" }, { 0x001C2F, "Pfister GmbH", "PFISTER" }, { 0x001C28, "Sphairon Technologies GmbH ", "SPHAIRON-TECHNOLOGIES" }, { 0x001C23, "Dell Inc", "DELL" }, { 0x001C1E, "emtrion GmbH", "EMTRION" }, { 0x001C19, "secunet Security Networks AG", "SECUNET-SECURITY-NETWORKS" }, { 0x001C12, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001C0B, "SmartAnt Telecom", "SMARTANT-TELECOM" }, { 0x001C0D, "G-Technology, Inc.", "G" }, { 0x001C0C, "TANITA Corporation", "TANITA" }, { 0x001C06, "Siemens Numerical Control Ltd., Nanjing", "SIEMENS-NUMERICAL-CONTROL-NANJING" }, { 0x001BFF, "Millennia Media inc.", "MILLENNIA-MEDIA" }, { 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" }, { 0x001C6B, "COVAX Co. Ltd", "COVAX" }, { 0x001C64, "Landis+Gyr", "LANDIS+GYR" }, { 0x001C5F, "Winland Electronics, Inc.", "WINLAND-ELECTRONICS" }, { 0x001D79, "SIGNAMAX LLC", "SIGNAMAX-LLC" }, { 0x001D5F, "OverSpeed SARL", "OVERSPEED-SARL" }, { 0x001D5A, "2Wire Inc.", "2WIRE" }, { 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" }, { 0x001AD0, "Albis Technologies AG", "ALBIS-TECHNOLOGIES" }, { 0x001AD5, "KMC CHAIN INDUSTRIAL CO., LTD.", "KMC-CHAIN-INDUSTRIAL" }, { 0x001AD7, "Christie Digital Systems, Inc.", "CHRISTIE-DIGITAL" }, { 0x001ADC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001AC9, "SUZUKEN CO.,LTD", "SUZUKEN" }, { 0x001AC4, "2Wire, Inc", "2WIRE" }, { 0x001ABA, "Caton Overseas Limited", "CATON-OVERSEAS" }, { 0x001ABF, "TRUMPF Laser Marking Systems AG", "TRUMPF-LASER-MARKING" }, { 0x001A88, "Venergy,Co,Ltd", "VENERGY" }, { 0x001A77, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A7A, "Lismore Instruments Limited", "LISMORE-INSTRUMENTS" }, { 0x001A70, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001A72, "Mosart Semiconductor Corp.", "MOSART-SEMICONDUCTOR" }, { 0x001A6B, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001A64, "IBM Corp", "IBM" }, { 0x001A56, "ViewTel Co,. Ltd.", "VIEWTEL" }, { 0x001A5B, "NetCare Service Co., Ltd.", "NETCARE-SERVICE" }, { 0x001A5F, "KitWorks.fi Ltd.", "KITWORKS-FI" }, { 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" }, { 0x001A81, "Zelax", "ZELAX" }, { 0x001BFA, "G.i.N. mbH", "G-I-N-MBH" }, { 0x001BF3, "TRANSRADIO SenderSysteme Berlin AG", "TRANSRADIO-SENDERSYSTEME-BERLIN" }, { 0x001BEA, "Nintendo Co., Ltd.", "NINTENDO" }, { 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" }, { 0x001BCB, "PEMPEK SYSTEMS PTY LTD", "PEMPEK-PTY" }, { 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" }, { 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" }, { 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" }, { 0x001B24, "Quanta Computer Inc.", "QUANTA" }, { 0x001B1F, "DELTA - Danish Electronics, Light & Acoustics", "DELTA---DANISH-ELECTRONICS-LIGHT-ACOUSTICS" }, { 0x001B18, "Tsuken Electric Ind. Co.,Ltd", "TSUKEN-ELECTRIC-IND" }, { 0x001B11, "D-Link Corporation", "D-LINK" }, { 0x001B13, "Icron Technologies Corporation", "ICRON-TECHNOLOGIES" }, { 0x001B0C, "Cisco Systems, Inc", "CISCO" }, { 0x001B05, "YMC AG", "YMC" }, { 0x001BC4, "Ultratec, Inc.", "ULTRATEC" }, { 0x001BBF, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001BBA, "Nortel", "NORTEL" }, { 0x001BB5, "ZF Electronics GmbH", "ZF-ELECTRONICS" }, { 0x001BAE, "Micro Control Systems, Inc", "MICRO-CONTROL" }, { 0x001BA9, "BROTHER INDUSTRIES, LTD.", "BROTHER-INDUSTRIES" }, { 0x001BA8, "UBI&MOBI,.Inc", "UBI-MOBI" }, { 0x001BA7, "Lorica Solutions", "LORICA-SOLUTIONS" }, { 0x001BA2, "IDS Imaging Development Systems GmbH", "IDS-IMAGING-DEVELOPMENT" }, { 0x001B00, "Neopost Technologies", "NEOPOST-TECHNOLOGIES" }, { 0x001AF4, "Handreamnet", "HANDREAMNET" }, { 0x001AF9, "AeroVIronment (AV Inc)", "AEROVIRONMENT-AV" }, { 0x001AEF, "Loopcomm Technology, Inc.", "LOOPCOMM" }, { 0x001AE3, "Cisco Systems, Inc", "CISCO" }, { 0x001AE8, "Unify GmbH and Co KG", "UNIFY-AND" }, { 0x001AEA, "Radio Terminal Systems Pty Ltd", "RADIO-TERMINAL-PTY" }, { 0x001A07, "Arecont Vision", "ARECONT-VISION" }, { 0x001A00, "MATRIX INC.", "MATRIX" }, { 0x0019F2, "Teradyne K.K.", "TERADYNE-K-K" }, { 0x0019F7, "Onset Computer Corporation", "ONSET" }, { 0x0019E4, "2Wire, Inc", "2WIRE" }, { 0x0019E6, "TOYO MEDIC CO.,LTD.", "TOYO-MEDIC" }, { 0x0019EB, "Pyronix Ltd", "PYRONIX" }, { 0x0019DF, "Thomson Inc.", "THOMSON" }, { 0x0019CC, "RCG (HK) Ltd", "RCG-HK" }, { 0x0019D1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0019D3, "TRAK Microwave", "TRAK-MICROWAVE" }, { 0x0019D8, "MAXFOR", "MAXFOR" }, { 0x0019C2, "Equustek Solutions, Inc.", "EQUUSTEK-SOLUTIONS" }, { 0x0019C7, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x0019B6, "Euro Emme s.r.l.", "EURO-EMME-S-R-L" }, { 0x0019BB, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0019AF, "Rigol Technologies, Inc.", "RIGOL-TECHNOLOGIES" }, { 0x0019A3, "asteel electronique atlantique", "ASTEEL-ELECTRONIQUE-ATLANTIQUE" }, { 0x0019A8, "WiQuest Communications", "WIQUEST-COMMUNICATION" }, { 0x0019AA, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 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" }, { 0x0018DA, "AMBER wireless GmbH", "AMBER-WIRELESS" }, { 0x0018DF, "The Morey Corporation", "THE-MOREY" }, { 0x0018CE, "Dreamtech Co., Ltd", "DREAMTECH" }, { 0x0018D3, "TEAMCAST", "TEAMCAST" }, { 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" }, { 0x001903, "Bigfoot Networks Inc", "BIGFOOT-NETWORKS" }, { 0x0018F9, "VVOND, Inc.", "VVOND" }, { 0x0018FE, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001992, "ADTRAN INC.", "ADTRAN" }, { 0x001997, "Soft Device Sdn Bhd", "SOFT-DEVICE-SDN-BHD" }, { 0x00199C, "CTRING", "CTRING" }, { 0x00198B, "Novera Optics Korea, Inc.", "NOVERA-OPTICS-KOREA" }, { 0x00198D, "Ocean Optics, Inc.", "OCEAN-OPTICS" }, { 0x00197F, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x001986, "Cheng Hongjian", "CHENG-HONGJIAN" }, { 0x001973, "Zeugma Systems", "ZEUGMA" }, { 0x00197A, "MAZeT GmbH", "MAZET" }, { 0x00194F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00194A, "TESTO AG", "TESTO" }, { 0x00193E, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x001943, "Belden", "BELDEN" }, { 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" }, { 0x001967, "TELDAT Sp.J.", "TELDAT-SP-J" }, { 0x00196C, "ETROVISION TECHNOLOGY", "ETROVISION" }, { 0x00196E, "Metacom (Pty) Ltd.", "METACOM-PTY" }, { 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" }, { 0x001A4F, "AVM GmbH", "AVM" }, { 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" }, { 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" }, { 0x00188D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001881, "Buyang Electronics Industrial Co., Ltd", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0017F5, "LIG NEOPTEK", "LIG-NEOPTEK" }, { 0x0017FA, "Microsoft Corporation", "MICROSOFT" }, { 0x0017FC, "Suprema Inc.", "SUPREMA" }, { 0x0017E7, "6278", "6278" }, { 0x0017E9, "6278", "6278" }, { 0x0017EE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0017D6, "Bluechips Microhouse Co.,Ltd.", "BLUECHIPS-MICROHOUSE" }, { 0x0017DB, "CANKO TECHNOLOGIES INC.", "CANKO-TECHNOLOGIES" }, { 0x0017E2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0017CC, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x0017D1, "Nortel", "NORTEL" }, { 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" }, { 0x00177D, "IDT International Limited", "IDT" }, { 0x001782, "LoBenn Inc.", "LOBENN" }, { 0x001784, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001789, "Zenitron Corporation", "ZENITRON" }, { 0x0017C5, "SonicWALL", "SONICWALL" }, { 0x0017B9, "Gambro Lundia AB", "GAMBRO-LUNDIA-AB" }, { 0x0017BE, "Tratec Telecom B.V.", "TRATEC-TELECOM" }, { 0x0017C0, "PureTech Systems, Inc.", "PURETECH" }, { 0x0017B2, "SK Telesys", "SK-TELESYS" }, { 0x0017AB, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0017AD, "AceNet Corporation", "ACENET" }, { 0x0017A6, "YOSIN ELECTRONICS CO., LTD.", "YOSIN-ELECTRONICS" }, { 0x001852, "StorLink Semiconductors, Inc.", "STORLINK-SEMICONDUCTORS" }, { 0x001859, "Strawberry Linux Co.,Ltd.", "STRAWBERRY-LINUX" }, { 0x00184B, "Las Vegas Gaming, Inc.", "LAS-VEGAS-GAMING" }, { 0x00184D, "Netgear Inc.", "NETGEAR" }, { 0x001846, "Crypto S.A.", "CRYPTO" }, { 0x00183A, "Westell Technologies", "WESTELL-TECHNOLOGIES" }, { 0x00183F, "2Wire, Inc", "2WIRE" }, { 0x001835, "Thoratec / ITC", "THORATEC-/-ITC" }, { 0x001829, "Gatsometer", "GATSOMETER" }, { 0x001830, "6278", "6278" }, { 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" }, { 0x001755, "GE Security", "GE-SECURITY" }, { 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" }, { 0x0018AF, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0018A3, "ZIPPY TECHNOLOGY CORP.", "ZIPPY" }, { 0x0018AA, "Protec Fire Detection plc", "PROTEC-FIRE-DETECTION-PLC" }, { 0x00186E, "3Com Ltd", "3COM" }, { 0x001873, "Cisco Systems, Inc", "CISCO" }, { 0x001875, "AnaCise Testnology Pte Ltd", "ANACISE-TESTNOLOGY-PTE" }, { 0x00187A, "Wiremold", "WIREMOLD" }, { 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" }, { 0x001824, "Kimaldi Electronics, S.L.", "KIMALDI-ELECTRONICS-S-L" }, { 0x001822, "CEC TELECOM CO.,LTD.", "CEC-TELECOM" }, { 0x001816, "Ubixon Co., Ltd.", "UBIXON" }, { 0x00181D, "ASIA ELECTRONICS CO.,LTD", "ASIA-ELECTRONICS" }, { 0x001811, "Neuros Technology International, LLC.", "NEUROS-LLC" }, { 0x00180A, "Meraki, Inc.", "MERAKI" }, { 0x00180F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001801, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 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" }, { 0x0016BC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0016B5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00174E, "Parama-tech Co.,Ltd.", "PARAMA-TECH" }, { 0x001747, "Trimble", "TRIMBLE" }, { 0x001749, "HYUNDAE YONG-O-SA CO.,LTD", "HYUNDAE-YONG-O" }, { 0x001742, "FUJITSU LIMITED", "FUJITSU" }, { 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" }, { 0x001675, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001679, "eOn Communications", "EON-COMMUNICATION" }, { 0x00166E, "Arbitron Inc.", "ARBITRON" }, { 0x001667, "A-TEC Subsystem INC.", "A-TEC-SUBSYSTEM" }, { 0x001660, "Nortel", "NORTEL" }, { 0x00165B, "Grip Audio", "GRIP-AUDIO" }, { 0x001654, "Flex-P Industries Sdn. Bhd.", "FLEX-P-INDUSTRIES-SDN-BHD" }, { 0x00164F, "World Ethnic Broadcastin Inc.", "WORLD-ETHNIC-BROADCASTIN" }, { 0x00164E, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001704, "Shinco Electronics Group Co.,Ltd", "SHINCO-ELECTRONICS-GROUP" }, { 0x001709, "Exalt Communications", "EXALT-COMMUNICATION" }, { 0x0016FD, "Jaty Electronics", "JATY-ELECTRONICS" }, { 0x0016F1, "OmniSense, LLC", "OMNISENSE-LLC" }, { 0x0016F6, "Video Products Group", "VIDEO-PRODUCTS-GROUP" }, { 0x0016F8, "AVIQTECH TECHNOLOGY CO., LTD.", "AVIQTECH" }, { 0x0016EA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0016E3, "ASKEY COMPUTER CORP.", "ASKEY" }, { 0x0016E5, "FORDLEY DEVELOPMENT LIMITED", "FORDLEY-DEVELOPMENT" }, { 0x0016DE, "FAST Inc", "FAST" }, { 0x00164D, "Alcatel North America IP Division", "ALCATEL-NORTH-AMERICA-IP-DIVISION" }, { 0x001648, "SSD Company Limited", "SSD-COMPANY" }, { 0x001643, "Sunhillo Corporation", "SUNHILLO" }, { 0x00163E, "Xensource, Inc. (possible Xen VM)", "XENSOURCE-VIRTUAL" }, { 0x001637, "CITEL SpA", "CITEL-SPA" }, { 0x001632, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x00162B, "Togami Electric Mfg.co.,Ltd.", "TOGAMI-ELECTRIC-MFG" }, { 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" }, { 0x0015FB, "setex schermuly textile computer gmbh", "SETEX-SCHERMULY-TEXTILE" }, { 0x001602, "CEYON TECHNOLOGY CO.,LTD.", "CEYON" }, { 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" }, { 0x00167E, "DIBOSS.CO.,LTD", "DIBOSS" }, { 0x001680, "Bally Gaming + Systems", "BALLY-GAMING-+" }, { 0x001726, "m2c Electronic Technology Ltd.", "M2C" }, { 0x001721, "FITRE S.p.A.", "FITRE-S-P-A" }, { 0x00171A, "Winegard Company", "WINEGARD-COMPANY" }, { 0x00171F, "IMV Corporation", "IMV" }, { 0x001713, "Tiger NetCom", "TIGER-NETCOM" }, { 0x00170E, "Cisco Systems, Inc", "CISCO" }, { 0x0015F6, "SCIENCE AND ENGINEERING SERVICES, INC.", "SCIENCE-AND-ENGINEERING-SERVICES" }, { 0x0015EF, "NEC TOKIN Corporation", "NEC-TOKIN" }, { 0x0015E8, "Nortel", "NORTEL" }, { 0x0015E3, "Dream Technologies Corporation", "DREAM-TECHNOLOGIES" }, { 0x0015D9, "PKC Electronics Oy", "PKC-ELECTRONICS-OY" }, { 0x0015DE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0015D2, "Xantech Corporation", "XANTECH" }, { 0x0015CC, "UQUEST, LTD.", "UQUEST" }, { 0x001464, "Cryptosoft", "CRYPTOSOFT" }, { 0x00145E, "IBM Corp", "IBM" }, { 0x001457, "T-VIPS AS", "T-VIPS-AS" }, { 0x001452, "CALCULEX,INC.", "CALCULEX" }, { 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" }, { 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" }, { 0x0015BF, "technicob", "TECHNICOB" }, { 0x0015B4, "Polymap Wireless LLC", "POLYMAP-WIRELESS-LLC" }, { 0x0015AF, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x0015AA, "Rextechnik International Co.,", "REXTECHNIK" }, { 0x0015A5, "DCI Co., Ltd.", "DCI" }, { 0x00159E, "Mad Catz Interactive Inc", "MAD-CATZ-INTERACTIVE" }, { 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" }, { 0x0014A5, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 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" }, { 0x00148C, "Fortress Technologies", "FORTRESS-TECHNOLOGIES" }, { 0x0014EB, "AwarePoint Corporation", "AWAREPOINT" }, { 0x0014E1, "Data Display AG", "DATA-DISPLAY" }, { 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" }, { 0x0014C2, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0014C7, "Nortel", "NORTEL" }, { 0x00153F, "Alcatel Alenia Space Italia", "ALCATEL-ALENIA-SPACE-ITALIA" }, { 0x001541, "StrataLight Communications, Inc.", "STRATALIGHT-COMMUNICATION" }, { 0x00153A, "Shenzhen Syscan Technology Co.,Ltd.", "SHENZHEN-SYSCAN" }, { 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" }, { 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" }, { 0x0015A3, "ARRIS International", "ARRIS" }, { 0x0015A4, "ARRIS International", "ARRIS" }, { 0x001597, "AETA AUDIO SYSTEMS", "AETA-AUDIO" }, { 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" }, { 0x00155B, "Sampo Corporation", "SAMPO" }, { 0x001556, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x00154F, "one RF Technology", "ONE-RF" }, { 0x001546, "ITG Worldwide Sdn Bhd", "ITG-WORLDWIDE-SDN-BHD" }, { 0x001540, "Nortel", "NORTEL" }, { 0x001486, "Echo Digital Audio Corporation", "ECHO-DIGITAL-AUDIO" }, { 0x00147D, "Aeon Digital International", "AEON-DIGITAL" }, { 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" }, { 0x001329, "VSST Co., LTD", "VSST" }, { 0x001330, "EURO PROTECTION SURVEILLANCE", "EURO-PROTECTION-SURVEILLANCE" }, { 0x001335, "VS Industry Berhad", "VS-INDUSTRY-BERHAD" }, { 0x00132F, "Interactek", "INTERACTEK" }, { 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" }, { 0x001364, "Paradigm Technology Inc..", "PARADIGM" }, { 0x001369, "Honda Electron Co., LED.", "HONDA-ELECTRON-LED" }, { 0x00136A, "Hach Lange Sarl", "HACH-LANGE-SARL" }, { 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" }, { 0x0012E3, "Agat-RT, Ltd.", "AGAT-RT" }, { 0x0012DC, "SunCorp Industrial Limited", "SUNCORP-INDUSTRIAL" }, { 0x0012D7, "Invento Networks, Inc.", "INVENTO-NETWORKS" }, { 0x0012C4, "Viseon, Inc.", "VISEON" }, { 0x0012C9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0012D0, "Gossen-Metrawatt-GmbH", "GOSSEN-METRAWATT" }, { 0x0012CA, "Mechatronic Brick Aps", "MECHATRONIC-BRICK-APS" }, { 0x0012BA, "FSI Systems, Inc.", "FSI" }, { 0x0012BF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x0013CD, "MTI co. LTD", "MTI" }, { 0x0013CE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0013D3, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0013C8, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 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" }, { 0x0012AE, "HLS HARD-LINE Solutions Inc.", "HLS-HARD-LINE-SOLUTIONS" }, { 0x0012B3, "Advance Wireless Technology Corp.", "ADVANCE-WIRELESS" }, { 0x0012AD, "IDS GmbH", "IDS" }, { 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" }, { 0x00139F, "Electronics Design Services, Co., Ltd.", "ELECTRONICS-DESIGN-SERVICES" }, { 0x001398, "TrafficSim Co.,Ltd", "TRAFFICSIM" }, { 0x001392, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x00138C, "Kumyoung.Co.Ltd", "KUMYOUNG" }, { 0x001391, "OUEN CO.,LTD.", "OUEN" }, { 0x001377, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x00137C, "Kaicom co., Ltd.", "KAICOM" }, { 0x001383, "Application Technologies and Engineering Research Laboratory", "APPLICATION-TECHNOLOGIES-AND-ENGINEERING-RESEARCH-LABORATORY" }, { 0x001370, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 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" }, { 0x004501, "Versus Technology, Inc.", "VERSUS" }, { 0x001403, "Renasis, LLC", "RENASIS-LLC" }, { 0x0013FC, "SiCortex, Inc", "SICORTEX" }, { 0x0013F5, "Akimbi Systems", "AKIMBI" }, { 0x0013F6, "Cintech", "CINTECH" }, { 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" }, { 0x00142E, "77 Elektronika Kft.", "77-ELEKTRONIKA-KFT" }, { 0x001435, "CityCom Corp.", "CITYCOM" }, { 0x001429, "V Center Technologies Co., Ltd.", "V-CENTER-TECHNOLOGIES" }, { 0x001428, "Vocollect, Inc", "VOCOLLECT" }, { 0x001427, "JazzMutant", "JAZZMUTANT" }, { 0x00141E, "P.A. Semi, Inc.", "P-A-SEMI" }, { 0x001422, "Dell Inc", "DELL" }, { 0x00141D, "LTi DRIVES GmbH", "LTI-DRIVES" }, { 0x001418, "C4Line", "C4LINE" }, { 0x001411, "Deutschmann Automation GmbH & Co. KG", "DEUTSCHMANN-AUTOMATION" }, { 0x0011AA, "Uniclass Technology, Co., LTD", "UNICLASS" }, { 0x0011AF, "Medialink-i,Inc", "MEDIALINK-I" }, { 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" }, { 0x00126C, "Visonic Ltd.", "VISONIC" }, { 0x001273, "Stoke Inc", "STOKE" }, { 0x001266, "Swisscom Hospitality Services SA", "SWISSCOM-HOSPITALITY-SERVICES" }, { 0x001265, "Enerdyne Technologies, Inc.", "ENERDYNE-TECHNOLOGIES" }, { 0x00125B, "KAIMEI ELECTRONI", "KAIMEI-ELECTRONI" }, { 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" }, { 0x00128B, "Sensory Networks Inc", "SENSORY-NETWORKS" }, { 0x001285, "Gizmondo Europe Ltd", "GIZMONDO-EUROPE" }, { 0x001286, "ENDEVCO CORP", "ENDEVCO" }, { 0x00127F, "Cisco Systems, Inc", "CISCO" }, { 0x001278, "International Bar Code", "BAR-CODE" }, { 0x001213, "Metrohm AG", "METROHM" }, { 0x00120D, "Advanced Telecommunication Technologies, Inc.", "ADVANCED-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x001207, "Head Strong International Limited", "HEAD-STRONG" }, { 0x00120E, "AboCom", "ABOCOM" }, { 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" }, { 0x001135, "Grandeye Ltd", "GRANDEYE" }, { 0x001126, "Venstar Inc.", "VENSTAR" }, { 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" }, { 0x001186, "Prime Systems, Inc.", "PRIME" }, { 0x00117F, "Neotune Information Technology Corporation,.LTD", "NEOTUNE-INFORMATION" }, { 0x001180, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00117A, "Singim International Corp.", "SINGIM" }, { 0x00116E, "PePLink Ltd.", "PEPLINK" }, { 0x001173, "SMART Storage Systems", "SMART-STORAGE" }, { 0x001167, "Integrated System Solution Corp.", "INTEGRATED-SYSTEM-SOLUTION" }, { 0x0011DE, "EURILOGIC", "EURILOGIC" }, { 0x0011E3, "Thomson, Inc.", "THOMSON" }, { 0x0011E4, "Danelec Electronics A/S", "DANELEC-ELECTRONICS-A/S" }, { 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" }, { 0x0011B6, "Open Systems International", "OPEN" }, { 0x0011BB, "Cisco Systems, Inc", "CISCO" }, { 0x0011BC, "Cisco Systems, Inc", "CISCO" }, { 0x001243, "Cisco Systems, Inc", "CISCO" }, { 0x00123C, "Second Rule LLC", "SECOND-RULE-LLC" }, { 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" }, { 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" }, { 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" }, { 0x000EB9, "HASHIMOTO Electronics Industry Co.,Ltd.", "HASHIMOTO-ELECTRONICS-INDUSTRY" }, { 0x000EBA, "HANMI SEMICONDUCTOR CO., LTD.", "HANMI-SEMICONDUCTOR" }, { 0x000EB3, "Hewlett-Packard", "HEWLETT-PACKARD" }, { 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" }, { 0x000E8D, "Systems in Progress Holding GmbH", "IN-PROGRESS-HOLDING" }, { 0x000E94, "Maas International BV", "MAAS" }, { 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" }, { 0x000EFE, "EndRun Technologies LLC", "ENDRUN-TECHNOLOGIES-LLC" }, { 0x000EF8, "SBC ASI", "SBC-ASI" }, { 0x000EFD, "FUJINON CORPORATION", "FUJINON" }, { 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" }, { 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" }, { 0x001101, "CET Technologies Pte Ltd", "CET-TECHNOLOGIES-PTE" }, { 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" }, { 0x000F23, "Cisco Systems, Inc", "CISCO" }, { 0x000F1D, "Cosmo Techs Co., Ltd.", "COSMO-TECHS" }, { 0x000F10, "RDM Corporation", "RDM" }, { 0x000F17, "Insta Elektro GmbH", "INSTA-ELEKTRO" }, { 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" }, { 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" }, { 0x000E61, "MICROTROL LIMITED", "MICROTROL" }, { 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" }, { 0x000FCC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000FC0, "DELCOMp", "DELCOMP" }, { 0x000FB4, "Timespace Technology", "TIMESPACE" }, { 0x000FB9, "Adaptive Instruments", "ADAPTIVE-INSTRUMENTS" }, { 0x000CB0, "Star Semiconductor Corporation", "STAR-SEMICONDUCTOR" }, { 0x000CAF, "TRI TERM CO.,LTD.", "TRI-TERM" }, { 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" }, { 0x000CA4, "Prompttec Product Management GmbH", "PROMPTTEC-PRODUCT-MANAGEMENT" }, { 0x000CAB, "COMMEND International", "COMMEND" }, { 0x000C98, "LETEK Communications Inc.", "LETEK-COMMUNICATION" }, { 0x000C9D, "UbeeAirWalk, Inc.", "UBEEAIRWALK" }, { 0x000C9F, "NKE Corporation", "NKE" }, { 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" }, { 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" }, { 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" }, { 0x000D21, "WISCORE Inc.", "WISCORE" }, { 0x000D26, "Primagraphics Limited", "PRIMAGRAPHICS" }, { 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" }, { 0x000CFB, "Korea Network Systems", "KOREA-NETWORK" }, { 0x000CEF, "Open Networks Engineering Ltd", "OPEN-NETWORKS-ENGINEERING" }, { 0x000CF4, "AKATSUKI ELECTRIC MFG.CO.,LTD.", "AKATSUKI-ELECTRIC-MFG" }, { 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" }, { 0x000D67, "Ericsson", "ERICSSON" }, { 0x000D59, "Amity Systems, Inc.", "AMITY" }, { 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" }, { 0x000D9D, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 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" }, { 0x000E35, "Intel Corp", "INTEL" }, { 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" }, { 0x000DF6, "Technology Thesaurus Corp.", "THESAURUS" }, { 0x000DFD, "Huges Hi-Tech Inc.,", "HUGES-HI-TECH" }, { 0x000E02, "Advantech AMT Inc.", "ADVANTECH-AMT" }, { 0x000DF0, "QCOM TECHNOLOGY INC.", "QCOM" }, { 0x000DEF, "Soc. Coop. Bilanciai", "SOC-COOP-BILANCIAI" }, { 0x000DEA, "Kingtel Telecommunication Corp.", "KINGTEL-TELECOMMUNICATION" }, { 0x000CE8, "GuangZhou AnJuBao Co., Ltd", "GUANGZHOU-ANJUBAO" }, { 0x000CE1, "The Open Group", "THE-OPEN-GROUP" }, { 0x000CCF, "Cisco Systems, Inc", "CISCO" }, { 0x000CD0, "Symetrix", "SYMETRIX" }, { 0x000CD5, "Passave Inc.", "PASSAVE" }, { 0x000CDC, "BECS Technology, Inc", "BECS" }, { 0x000CC9, "ILWOO DATA & TECHNOLOGY CO.,LTD", "ILWOO-DATA" }, { 0x000BC3, "Multiplex, Inc.", "MULTIPLEX" }, { 0x000BC1, "Bay Microsystems, Inc.", "BAY-MICROSYSTEMS" }, { 0x000BBC, "En Garde Systems, Inc.", "EN-GARDE" }, { 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" }, { 0x000B88, "Vidisco ltd.", "VIDISCO" }, { 0x000B8D, "Avvio Networks", "AVVIO-NETWORKS" }, { 0x000C8C, "KODICOM CO.,LTD.", "KODICOM" }, { 0x000C91, "Riverhead Networks Inc.", "RIVERHEAD-NETWORKS" }, { 0x000C80, "Opelcomm Inc.", "OPELCOMM" }, { 0x000C85, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 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" }, { 0x0091D6, "Crystal Group, Inc.", "CRYSTAL-GROUP" }, { 0x000B62, "ib-mohnen KG", "IB-MOHNEN" }, { 0x000B69, "Franke Finland Oy", "FRANKE-FINLAND-OY" }, { 0x000B59, "ScriptPro, LLC", "SCRIPTPRO-LLC" }, { 0x000B54, "BiTMICRO Networks, Inc.", "BITMICRO-NETWORKS" }, { 0x000B51, "Micetek International Inc.", "MICETEK" }, { 0x000C2C, "Enwiser Inc.", "ENWISER" }, { 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" }, { 0x000C03, "HDMI Licensing, LLC", "HDMI-LICENSING-LLC" }, { 0x000AED, "HARTING Systems GmbH & Co KG", "HARTING" }, { 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" }, { 0x000ABB, "Taiwan Secom Co,. Ltd", "TAIWAN-SECOM" }, { 0x000AC2, "FiberHome Telecommunication Technologies CO.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x000AC7, "Unication Group", "UNICATION-GROUP" }, { 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" }, { 0x000B1A, "Industrial Defender, Inc.", "INDUSTRIAL-DEFENDER" }, { 0x000B1F, "I CON Computer Co.", "I-CON" }, { 0x000B13, "ZETRON INC", "ZETRON" }, { 0x000B0E, "Trapeze Networks", "TRAPEZE-NETWORKS" }, { 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" }, { 0x000AF4, "Cisco Systems, Inc", "CISCO" }, { 0x000B40, "Oclaro", "OCLARO" }, { 0x000B45, "Cisco Systems, Inc", "CISCO" }, { 0x000B4C, "Clarion (M) Sdn Bhd", "CLARION-M-SDN-BHD" }, { 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" }, { 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" }, { 0x000BC8, "AirFlow Networks", "AIRFLOW-NETWORKS" }, { 0x000BCF, "AGFA NDT INC.", "AGFA-NDT" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x000A4F, "Brain Boxes Limited", "BRAIN-BOXES" }, { 0x000A51, "GyroSignal Technology Co., Ltd.", "GYROSIGNAL" }, { 0x000A56, "HITACHI Maxell Ltd.", "HITACHI-MAXELL" }, { 0x000A4A, "Targa Systems Ltd.", "TARGA" }, { 0x000941, "Allied Telesis K.K.", "ALLIED-TELESIS-K-K" }, { 0x00093B, "HYUNDAI NETWORKS INC.", "HYUNDAI-NETWORKS" }, { 0x000934, "Dream-Multimedia-Tv GmbH", "DREAM-MULTIMEDIA-TV" }, { 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" }, { 0x0009F8, "UNIMO TECHNOLOGY CO., LTD.", "UNIMO" }, { 0x000A02, "ANNSO CO., LTD.", "ANNSO" }, { 0x0009FB, "Philips Patient Monitoring", "PHILIPS-PATIENT-MONITORING" }, { 0x0009EB, "HuMANDATA LTD.", "HUMANDATA" }, { 0x0009F1, "Yamaki Electric Corporation", "YAMAKI-ELECTRIC" }, { 0x0009EC, "Daktronics, Inc.", "DAKTRONICS" }, { 0x0009E5, "Hottinger Baldwin Messtechnik GmbH", "HOTTINGER-BALDWIN-MESSTECHNIK" }, { 0x0009D9, "Neoscale Systems, Inc", "NEOSCALE" }, { 0x0009DE, "Samjin Information & Communications Co., Ltd.", "SAMJIN-INFORMATION-COMMUNICATION" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x0009B8, "Entise Systems", "ENTISE" }, { 0x0009B7, "Cisco Systems, Inc", "CISCO" }, { 0x0009B2, "L&F Inc.", "L-F" }, { 0x00090F, "Fortinet Inc.", "FORTINET" }, { 0x000909, "Telenor Connect A/S", "TELENOR-CONNECT-A/S" }, { 0x000902, "Redline Communications Inc.", "REDLINE-COMMUNICATION" }, { 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" }, { 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" }, { 0x00086E, "Hyglo AB", "HYGLO-AB" }, { 0x000868, "PurOptix", "PUROPTIX" }, { 0x000861, "SoftEnergy Co., Ltd.", "SOFTENERGY" }, { 0x00084F, "Qualstar Corporation", "QUALSTAR" }, { 0x00085B, "Hanbit Electronics Co., Ltd.", "HANBIT-ELECTRONICS" }, { 0x00084E, "DivergeNet, Inc.", "DIVERGENET" }, { 0x000855, "NASA-Goddard Space Flight Center", "NASA-GODDARD-SPACE-FLIGHT-CENTER" }, { 0x00085C, "Shanghai Dare Technologies Co. Ltd.", "SHANGHAI-DARE-TECHNOLOGIES" }, { 0x00081F, "Pou Yuen Tech Corp. Ltd.", "POU-YUEN-TECH" }, { 0x000826, "Colorado Med Tech", "COLORADO-MED-TECH" }, { 0x00082C, "Homag AG", "HOMAG" }, { 0x000820, "Cisco Systems, Inc", "CISCO" }, { 0x000825, "Acme Packet", "ACME-PACKET" }, { 0x0008A2, "ADI Engineering, Inc.", "ADI-ENGINEERING" }, { 0x0008A1, "CNet Technology Inc.", "CNET" }, { 0x00089B, "ICP Electronics Inc.", "ICP-ELECTRONICS" }, { 0x00088D, "Sigma-Links Inc.", "SIGMA-LINKS" }, { 0x00088E, "Nihon Computer Co., Ltd.", "NIHON" }, { 0x000893, "LE INFORMATION COMMUNICATION INC.", "LE-INFORMATION-COMMUNICATION" }, { 0x000897, "Quake Technologies", "QUAKE-TECHNOLOGIES" }, { 0x000887, "Maschinenfabrik Reinhausen GmbH", "MASCHINENFABRIK-REINHAUSEN" }, { 0x000881, "DIGITAL HANDS CO.,LTD.", "DIGITAL-HANDS" }, { 0x02C08C, "3COM CORPORATION", "3COM" }, { 0x000874, "Dell Computer Corp.", "DELL" }, { 0x00087B, "RTX Telecom A/S", "RTX-TELECOM-A/S" }, { 0x000880, "BroadTel Canada Communications inc.", "BROADTEL-CANADA-COMMUNICATION" }, { 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" }, { 0x0007ED, "Altera Corporation", "ALTERA" }, { 0x0007F4, "Eletex Co., Ltd.", "ELETEX" }, { 0x0007E1, "WIS Communications Co. Ltd.", "WIS-COMMUNICATION" }, { 0x0007DB, "Kirana Networks, Inc.", "KIRANA-NETWORKS" }, { 0x0007D4, "Zhejiang Yutong Network Communication Co Ltd.", "ZHEJIANG-YUTONG-NETWORK-COMMUNICATION" }, { 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" }, { 0x0008BA, "Erskine Systems Ltd", "ERSKINE" }, { 0x0008B4, "SYSPOL", "SYSPOL" }, { 0x0008AE, "PacketFront Network Products AB", "PACKETFRONT-NETWORK-PRODUCTS-AB" }, { 0x0008A7, "iLogic Inc.", "ILOGIC" }, { 0x000780, "Bluegiga Technologies OY", "BLUEGIGA-TECHNOLOGIES-OY" }, { 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" }, { 0x0006F2, "Platys Communications", "PLATYS-COMMUNICATION" }, { 0x0006FC, "Fnet Co., Ltd.", "FNET" }, { 0x0006FE, "Ambrado, Inc", "AMBRADO" }, { 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" }, { 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" }, { 0x0007B3, "Cisco Systems, Inc", "CISCO" }, { 0x000737, "Soriya Co. Ltd.", "SORIYA" }, { 0x00073E, "China Great-Wall Computer Shenzhen Co., Ltd.", "CHINA-GREAT-WALL-SHENZHEN" }, { 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" }, { 0x0006CA, "American Computer & Digital Components, Inc. (ACDC)", "AMERICAN-DIGITAL-COMPONENTS-ACDC" }, { 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" }, { 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" }, { 0x000612, "Accusys, Inc.", "ACCUSYS" }, { 0x000609, "Crossport Systems", "CROSSPORT" }, { 0x00058E, "Flextronics International GmbH & Co. Nfg. KG", "FLEXTRONICS-NFG" }, { 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" }, { 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" }, { 0x00060F, "Narad Networks Inc", "NARAD-NETWORKS" }, { 0x000602, "Cirkitech Electronics Co.", "CIRKITECH-ELECTRONICS" }, { 0x000600, "Toshiba Teli Corporation", "TOSHIBA-TELI" }, { 0x0005ED, "Technikum Joanneum GmbH", "TECHNIKUM-JOANNEUM" }, { 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" }, { 0x0005CD, "Denon, Ltd.", "DENON" }, { 0x0005D4, "FutureSmart Networks, Inc.", "FUTURESMART-NETWORKS" }, { 0x000517, "Shellcomm, Inc.", "SHELLCOMM" }, { 0x000513, "VTLinx Multimedia Systems, Inc.", "VTLINX-MULTIMEDIA" }, { 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" }, { 0x0004EA, "HEWLETT-PACKARD COMPANY", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x0005B5, "Broadcom Technologies", "BROADCOM-TECHNOLOGIES" }, { 0x00059B, "Cisco Systems, Inc", "CISCO" }, { 0x0005A7, "Hyperchip, Inc.", "HYPERCHIP" }, { 0x00059A, "Cisco Systems, Inc", "CISCO" }, { 0x0005A1, "Zenocom", "ZENOCOM" }, { 0x0005AB, "Cyber Fone, Inc.", "CYBER-FONE" }, { 0x000588, "Sensoria Corp.", "SENSORIA" }, { 0x000594, "IXXAT Automation GmbH", "IXXAT-AUTOMATION" }, { 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" }, { 0x00065E, "Photuris, Inc.", "PHOTURIS" }, { 0x000645, "Meisei Electric Co. Ltd.", "MEISEI-ELECTRIC" }, { 0x000644, "neix,Inc", "NEIX" }, { 0x00064B, "Alexon Co., Ltd.", "ALEXON" }, { 0x0006A7, "Primarion", "PRIMARION" }, { 0x000657, "Market Central, Inc.", "MARKET-CENTRAL" }, { 0x000697, "R & D Center", "R-D-CENTER" }, { 0x000691, "PT Inovacao", "PT-INOVACAO" }, { 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" }, { 0x000431, "GlobalStreams, Inc.", "GLOBALSTREAMS" }, { 0x000436, "ELANsat Technologies, Inc.", "ELANSAT-TECHNOLOGIES" }, { 0x000430, "Netgem", "NETGEM" }, { 0x00042A, "Wireless Networks, Inc.", "WIRELESS-NETWORKS" }, { 0x000423, "Intel Corporation", "INTEL" }, { 0x000424, "TMC s.r.l.", "TMC-S-R-L" }, { 0x00041B, "Bridgeworks Ltd.", "BRIDGEWORKS" }, { 0x00041E, "Shikoku Instrumentation Co., Ltd.", "SHIKOKU-INSTRUMENTATION" }, { 0x000415, "Rasteme Systems Co., Ltd.", "RASTEME" }, { 0x00040E, "AVM GmbH", "AVM" }, { 0x000408, "Sanko Electronics Co., Ltd.", "SANKO-ELECTRONICS" }, { 0x000409, "Cratos Networks", "CRATOS-NETWORKS" }, { 0x000402, "Nexsan Technologies, Ltd.", "NEXSAN-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x0003D3, "Internet Energy Systems, Inc.", "INTERNET-ENERGY" }, { 0x0003CE, "ETEN Technologies, Inc.", "ETEN-TECHNOLOGIES" }, { 0x0003CB, "Nippon Systems Development Co., Ltd.", "NIPPON-DEVELOPMENT" }, { 0x0004BB, "Bardac Corporation", "BARDAC" }, { 0x0004B5, "Equitrac Corporation", "EQUITRAC" }, { 0x0004A7, "FabiaTech Corporation", "FABIATECH" }, { 0x0004A1, "Pathway Connectivity", "PATHWAY-CONNECTIVITY" }, { 0x00049A, "Cisco Systems, Inc", "CISCO" }, { 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" }, { 0x0004DA, "Relax Technology, Inc.", "RELAX" }, { 0x008087, "OKI ELECTRIC INDUSTRY CO., LTD", "OKI-ELECTRIC-INDUSTRY" }, { 0x0004E0, "Procket Networks", "PROCKET-NETWORKS" }, { 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" }, { 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" }, { 0x00039D, "Qisda Corporation", "QISDA" }, { 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" }, { 0x00035B, "BridgeWave Communications", "BRIDGEWAVE-COMMUNICATION" }, { 0x000356, "Wincor Nixdorf International GmbH", "WINCOR-NIXDORF" }, { 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" }, { 0x000453, "YottaYotta, Inc.", "YOTTAYOTTA" }, { 0x00044D, "Cisco Systems, Inc", "CISCO" }, { 0x000449, "Mapletree Networks", "MAPLETREE-NETWORKS" }, { 0x000443, "Agilent Technologies, Inc.", "AGILENT-TECHNOLOGIES" }, { 0x00043D, "INDEL AG", "INDEL" }, { 0x00034B, "Nortel Networks", "NORTEL-NETWORKS" }, { 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" }, { 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" }, { 0x000276, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x00026F, "Senao International Co., Ltd.", "SENAO" }, { 0x000264, "AudioRamp.com", "AUDIORAMP-COM" }, { 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" }, { 0x000177, "EDSL", "EDSL" }, { 0x000161, "Meta Machine Technology", "META-MACHINE" }, { 0x000168, "VITANA CORPORATION", "VITANA" }, { 0x000174, "CyberOptics Corporation", "CYBEROPTICS" }, { 0x000170, "ESE Embedded System Engineer'g", "ESE-EMBEDDED-SYSTEM-ENGINEER-G" }, { 0x00015D, "Oracle Corporation ", "ORACLE" }, { 0x000164, "Cisco Systems, Inc", "CISCO" }, { 0x000152, "CHROMATEK INC.", "CHROMATEK" }, { 0x000156, "FIREWIREDIRECT.COM, INC.", "FIREWIREDIRECT-COM" }, { 0x000133, "KYOWA Electronic Instruments C", "KYOWA-INSTRUMENTS-C" }, { 0x00013F, "Neighbor World Co., Ltd.", "NEIGHBOR-WORLD" }, { 0x000146, "Tesco Controls, Inc.", "TESCO-CONTROLS" }, { 0x00012A, "Telematica Sistems Inteligente", "TELEMATICA-SISTEMS-INTELIGENTE" }, { 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" }, { 0x0001D3, "PAXCOMM, Inc.", "PAXCOMM" }, { 0x0001DF, "ISDN Communications, Ltd.", "ISDN-COMMUNICATION" }, { 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" }, { 0x000232, "Avision, Inc.", "AVISION" }, { 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" }, { 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" }, { 0x0030ED, "Expert Magnetics Corp.", "EXPERT-MAGNETICS" }, { 0x0030F9, "Sollae Systems Co., Ltd.", "SOLLAE" }, { 0x0030E8, "ENSIM CORP.", "ENSIM" }, { 0x000130, "Extreme Networks", "EXTREME-NETWORKS" }, { 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" }, { 0x000117, "CANAL +", "CANAL-+" }, { 0x00B0EE, "Ajile Systems, Inc.", "AJILE" }, { 0x00B0E7, "British Federal Ltd.", "BRITISH-FEDERAL" }, { 0x0001AE, "Trex Enterprises", "TREX-ENTERPRISES" }, { 0x0001AA, "Airspan Communications, Ltd.", "AIRSPAN-COMMUNICATION" }, { 0x000198, "Darim Vision", "DARIM-VISION" }, { 0x000180, "AOpen, Inc.", "AOPEN" }, { 0x000187, "I2SE GmbH", "I2SE" }, { 0x000183, "ANITE TELECOMS", "ANITE-TELECOMS" }, { 0x00018F, "Kenetec, Inc.", "KENETEC" }, { 0x000190, "SMK-M", "SMK-M" }, { 0x00019C, "JDS Uniphase Inc.", "JDS-UNIPHASE" }, { 0x00014A, "Sony Corporation", "SONY" }, { 0x00306C, "Hitex Holding GmbH", "HITEX-HOLDING" }, { 0x0002DF, "Net Com Systems, Inc.", "NET-COM" }, { 0x0002D8, "BRECIS Communications Corporation", "BRECIS-COMMUNICATION" }, { 0x0002D3, "NetBotz, Inc.", "NETBOTZ" }, { 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" }, { 0x00D0A2, "INTEGRATED DEVICE", "INTEGRATED-DEVICE" }, { 0x00D091, "SMARTSAN SYSTEMS, INC.", "SMARTSAN" }, { 0x00D0D4, "V-BITS, INC.", "V-BITS" }, { 0x00D0AE, "ORESIS COMMUNICATIONS, INC.", "ORESIS-COMMUNICATION" }, { 0x00D041, "AMIGO TECHNOLOGY CO., LTD.", "AMIGO" }, { 0x00D0D1, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x00D0A1, "OSKAR VIERLING GMBH + CO. KG", "OSKAR-VIERLING-+" }, { 0x00D00B, "RHK TECHNOLOGY, INC.", "RHK" }, { 0x00D04E, "LOGIBAG", "LOGIBAG" }, { 0x00D02C, "CAMPBELL SCIENTIFIC, INC.", "CAMPBELL-SCIENTIFIC" }, { 0x00D0A0, "MIPS DENMARK", "MIPS-DENMARK" }, { 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" }, { 0x00309A, "ASTRO TERRA CORP.", "ASTRO-TERRA" }, { 0x00300C, "CONGRUENCY, LTD.", "CONGRUENCY" }, { 0x00306E, "HEWLETT PACKARD", "HEWLETT-PACKARD" }, { 0x0030DF, "KB/TEL TELECOMUNICACIONES", "KB/TEL-TELECOMUNICACIONES" }, { 0x0030FD, "INTEGRATED SYSTEMS DESIGN", "INTEGRATED-DESIGN" }, { 0x003023, "COGENT COMPUTER SYSTEMS, INC.", "COGENT" }, { 0x00307D, "GRE AMERICA, INC.", "GRE-AMERICA" }, { 0x0030D1, "INOVA CORPORATION", "INOVA" }, { 0x003032, "MagicRam, Inc.", "MAGICRAM" }, { 0x00305A, "TELGEN CORPORATION", "TELGEN" }, { 0x003069, "IMPACCT TECHNOLOGY CORP.", "IMPACCT" }, { 0x0030EC, "BORGARDT", "BORGARDT" }, { 0x0001A7, "UNEX TECHNOLOGY CORPORATION", "UNEX" }, { 0x00D0B5, "IPricot formerly DotCom", "IPRICOT-FORMERLY-DOTCOM" }, { 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" }, { 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" }, { 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" }, { 0x0030B4, "INTERSIL CORP.", "INTERSIL" }, { 0x0030DA, "COMTREND CO.", "COMTREND" }, { 0x00300A, "AZTECH Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x00308E, "CROSS MATCH TECHNOLOGIES, INC.", "CROSS-MATCH-TECHNOLOGIES" }, { 0x0030D0, "Tellabs", "TELLABS" }, { 0x0030A5, "ACTIVE POWER", "ACTIVE-POWER" }, { 0x0030FF, "DATAFAB SYSTEMS, INC.", "DATAFAB" }, { 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" }, { 0x00D070, "LONG WELL ELECTRONICS CORP.", "LONG-WELL-ELECTRONICS" }, { 0x00D061, "TREMON ENTERPRISES CO., LTD.", "TREMON-ENTERPRISES" }, { 0x00D0C4, "TERATECH CORPORATION", "TERATECH" }, { 0x00D0A4, "ALANTRO COMMUNICATIONS", "ALANTRO-COMMUNICATION" }, { 0x00D088, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 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" }, { 0x00D0EC, "NAKAYO TELECOMMUNICATIONS, INC", "NAKAYO-TELECOMMUNICATIONS" }, { 0x00D0C5, "COMPUTATIONAL SYSTEMS, INC.", "COMPUTATIONAL" }, { 0x003016, "ISHIDA CO., LTD.", "ISHIDA" }, { 0x00302A, "SOUTHERN INFORMATION", "SOUTHERN-INFORMATION" }, { 0x0030DC, "RIGHTECH CORPORATION", "RIGHTECH" }, { 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" }, { 0x00D0F9, "ACUTE COMMUNICATIONS CORP.", "ACUTE-COMMUNICATION" }, { 0x00D063, "Cisco Systems, Inc", "CISCO" }, { 0x00D069, "TECHNOLOGIC SYSTEMS", "TECHNOLOGIC" }, { 0x00D001, "VST TECHNOLOGIES, INC.", "VST-TECHNOLOGIES" }, { 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" }, { 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" }, { 0x0090A2, "CYBERTAN TECHNOLOGY, INC.", "CYBERTAN" }, { 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" }, { 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" }, { 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" }, { 0x009050, "TELESTE OY", "TELESTE-OY" }, { 0x009029, "CRYPTO AG", "CRYPTO" }, { 0x00904A, "CONCUR SYSTEM TECHNOLOGIES", "CONCUR-SYSTEM-TECHNOLOGIES" }, { 0x009061, "PACIFIC RESEARCH & ENGINEERING CORPORATION", "PACIFIC-RESEARCH-ENGINEERING" }, { 0x0090A9, "WESTERN DIGITAL", "WESTERN-DIGITAL" }, { 0x009072, "SIMRAD AS", "SIMRAD-AS" }, { 0x009006, "HAMAMATSU PHOTONICS K.K.", "HAMAMATSU-PHOTONICS-K-K" }, { 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" }, { 0x009007, "DOMEX TECHNOLOGY CORP.", "DOMEX" }, { 0x009048, "ZEAL CORPORATION", "ZEAL" }, { 0x0090E6, "ALi Corporation", "ALI" }, { 0x0090F5, "CLEVO CO.", "CLEVO" }, { 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" }, { 0x00904C, "Epigram, Inc.", "EPIGRAM" }, { 0x009000, "DIAMOND MULTIMEDIA", "DIAMOND-MULTIMEDIA" }, { 0x009025, "BAE Systems Australia (Electronic Systems) Pty Ltd", "BAE-AUSTRALIA-PTY" }, { 0x28FD80, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xB0C5CA, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xE81863, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x70B3D5, "IEEE REGISTRATION AUTHORITY - Please see OUI36 public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-OUI36-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x0CEFAF, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x74F8DB, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x40D855, "IEEE REGISTRATION AUTHORITY - Please see IAB public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-IAB-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 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" }, { 0x00901D, "PEC (NZ) LTD.", "PEC-NZ" }, { 0x00902D, "DATA ELECTRONICS (AUST.) PTY, LTD.", "DATA-ELECTRONICS-AUST-PTY" }, { 0x005041, "Coretronic Corporation", "CORETRONIC" }, { 0x0050D2, "CMC Electronics Inc", "CMC-ELECTRONICS" }, { 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" }, { 0x0050FA, "OXTEL, LTD.", "OXTEL" }, { 0x005086, "TELKOM SA, LTD.", "TELKOM" }, { 0x0050E1, "NS TECH ELECTRONICS SDN BHD", "NS-TECH-ELECTRONICS-SDN-BHD" }, { 0x005079, "Private", "PRIVATE" }, { 0x005013, "Chaparral Network Storage", "CHAPARRAL-NETWORK-STORAGE" }, { 0x0008C7, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 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" }, { 0x009020, "PHILIPS ANALYTICAL X-RAY B.V.", "PHILIPS-ANALYTICAL-X-RAY" }, { 0x009065, "FINISAR CORPORATION", "FINISAR" }, { 0x00909C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001035, "ELITEGROUP COMPUTER SYSTEMS CO., LTD", "ELITEGROUP" }, { 0x001053, "COMPUTER TECHNOLOGY CORP.", "" }, { 0x00102B, "UMAX DATA SYSTEMS, INC.", "UMAX-DATA" }, { 0x0010A3, "OMNITRONIX, INC.", "OMNITRONIX" }, { 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" }, { 0x001028, "COMPUTER TECHNICA, INC.", "TECHNICA" }, { 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" }, { 0xD07650, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0xBC6641, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x9802D8, "IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-MAM-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 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" }, { 0x001015, "OOmon Inc.", "OOMON" }, { 0x001088, "AMERICAN NETWORKS INC.", "AMERICAN-NETWORKS" }, { 0x00E0F5, "TELES AG", "TELES" }, { 0x00E070, "DH TECHNOLOGY", "DH" }, { 0x00E0B5, "ARDENT COMMUNICATIONS CORP.", "ARDENT-COMMUNICATION" }, { 0x00E073, "NATIONAL AMUSEMENT NETWORK, INC.", "NATIONAL-AMUSEMENT-NETWORK" }, { 0x00E09E, "QUANTUM CORPORATION", "QUANTUM" }, { 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" }, { 0x00E011, "Uniden Corporation", "UNIDEN" }, { 0x00E021, "FREEGATE CORP.", "FREEGATE" }, { 0x00E0D5, "Emulex Corporation", "EMULEX" }, { 0x00E0AB, "DIMAT S.A.", "DIMAT" }, { 0x00E0B6, "Entrada Networks", "ENTRADA-NETWORKS" }, { 0x00E0EC, "CELESTICA INC.", "CELESTICA" }, { 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" }, { 0x00601A, "KEITHLEY INSTRUMENTS", "KEITHLEY-INSTRUMENTS" }, { 0x0060AF, "PACIFIC MICRO DATA, INC.", "PACIFIC-MICRO-DATA" }, { 0x00601F, "STALLION TECHNOLOGIES", "STALLION-TECHNOLOGIES" }, { 0x0060B1, "INPUT/OUTPUT, INC.", "INPUT/OUTPUT" }, { 0x00608F, "TEKRAM TECHNOLOGY CO., LTD.", "TEKRAM" }, { 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" }, { 0x00E03A, "CABLETRON SYSTEMS, INC.", "CABLETRON" }, { 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" }, { 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" }, { 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" }, { 0x0060A1, "VPNet, Inc.", "VPNET" }, { 0x00605F, "NIPPON UNISOFT CORPORATION", "NIPPON-UNISOFT" }, { 0x0060C9, "ControlNet, Inc.", "CONTROLNET" }, { 0x006021, "DSC CORPORATION", "DSC" }, { 0x00601D, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x000800, "MULTITECH SYSTEMS, INC.", "MULTITECH" }, { 0x0060C7, "AMATI COMMUNICATIONS CORP.", "AMATI-COMMUNICATION" }, { 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" }, { 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" }, { 0x00E0CA, "BEST DATA PRODUCTS", "BEST-DATA-PRODUCTS" }, { 0x00E097, "CARRIER ACCESS CORPORATION", "CARRIER-ACCESS" }, { 0x00E09F, "PIXEL VISION", "PIXEL-VISION" }, { 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" }, { 0x001008, "VIENNA SYSTEMS CORPORATION", "VIENNA" }, { 0x0010CC, "CLP COMPUTER LOGISTIK PLANUNG GmbH", "CLP-LOGISTIK-PLANUNG" }, { 0x0010E3, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00109B, "Emulex Corporation", "EMULEX" }, { 0x001094, "Performance Analysis Broadband, Spirent plc", "PERFORMANCE-ANALYSIS-BROADBAND-SPIRENT-PLC" }, { 0x0010BB, "DATA & INFORMATION TECHNOLOGY", "DATA-INFORMATION" }, { 0x006032, "I-CUBE, INC.", "I-CUBE" }, { 0x006060, "Data Innovations North America", "DATA-INNOVATIONS-NORTH-AMERICA" }, { 0x0060FA, "EDUCATIONAL TECHNOLOGY RESOURCES, INC.", "EDUCATIONAL-RESOURCES" }, { 0x000288, "GLOBAL VILLAGE COMMUNICATION", "GLOBAL-VILLAGE-COMMUNICATION" }, { 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" }, { 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" }, { 0x0020FD, "ITV TECHNOLOGIES, INC.", "ITV-TECHNOLOGIES" }, { 0x002091, "J125, NATIONAL SECURITY AGENCY", "J125-NATIONAL-SECURITY-AGENCY" }, { 0x00200D, "CARL ZEISS", "CARL-ZEISS" }, { 0x002054, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x0020A7, "PAIRGAIN TECHNOLOGIES, INC.", "PAIRGAIN-TECHNOLOGIES" }, { 0x00207B, "Intel Corporation", "INTEL" }, { 0x0020DA, "Alcatel North America ESD", "ALCATEL-NORTH-AMERICA-ESD" }, { 0x0020F2, "Oracle Corporation ", "ORACLE" }, { 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" }, { 0x0060C5, "ANCOT CORP.", "ANCOT" }, { 0x0060B0, "HEWLETT-PACKARD CO.", "HEWLETT-PACKARD" }, { 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" }, { 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" }, { 0x00A096, "MITSUMI ELECTRIC CO., LTD.", "MITSUMI-ELECTRIC" }, { 0x00A006, "IMAGE DATA PROCESSING SYSTEM GROUP", "IMAGE-DATA-PROCESSING-SYSTEM-GROUP" }, { 0x00A0DC, "O.N. ELECTRONIC CO., LTD.", "O-N" }, { 0x00A013, "TELTREND LTD.", "TELTREND" }, { 0x00A074, "PERCEPTION TECHNOLOGY", "PERCEPTION" }, { 0x00A06A, "Verilink Corporation", "VERILINK" }, { 0x00A070, "COASTCOM", "COASTCOM" }, { 0x00A079, "ALPS ELECTRIC (USA), INC.", "ALPS-ELECTRIC-USA" }, { 0x00A0EB, "Encore Networks, Inc.", "ENCORE-NETWORKS" }, { 0x00A0C1, "ORTIVUS MEDICAL AB", "ORTIVUS-MEDICAL-AB" }, { 0x00A07D, "SEEQ TECHNOLOGY, INC.", "SEEQ" }, { 0x00A0C6, "QUALCOMM INCORPORATED", "QUALCOMM-INCORPORATED" }, { 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" }, { 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" }, { 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" }, { 0x00208F, "ECI TELECOM LTD.", "ECI-TELECOM" }, { 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" }, { 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" }, { 0x00A0F8, "Zebra Technologies Inc", "ZEBRA-TECHNOLOGIES" }, { 0x00A025, "REDCOM LABS INC.", "REDCOM-LABS" }, { 0x00A0D4, "RADIOLAN, INC.", "RADIOLAN" }, { 0x00A08A, "BROOKTROUT TECHNOLOGY, INC.", "BROOKTROUT" }, { 0x00A08C, "MultiMedia LANs, Inc.", "MULTIMEDIA-LANS" }, { 0x00A0CA, "FUJITSU DENSO LTD.", "FUJITSU-DENSO" }, { 0x00A029, "COULTER CORPORATION", "COULTER" }, { 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" }, { 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" }, { 0x00409F, "Telco Systems, Inc. ", "TELCO" }, { 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" }, { 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" }, { 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" }, { 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" }, { 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" }, { 0x0020E8, "DATATREK CORPORATION", "DATATREK" }, { 0x00204F, "DEUTSCHE AEROSPACE AG", "DEUTSCHE-AEROSPACE" }, { 0x002088, "GLOBAL VILLAGE COMMUNICATION", "GLOBAL-VILLAGE-COMMUNICATION" }, { 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" }, { 0x002093, "LANDINGS TECHNOLOGY CORP.", "LANDINGS" }, { 0x00402C, "ISIS DISTRIBUTED SYSTEMS, INC.", "ISIS-DISTRIBUTED" }, { 0x00C03D, "WIESEMANN & THEIS GMBH", "WIESEMANN-THEIS" }, { 0x00C026, "LANS TECHNOLOGY CO., LTD.", "LANS" }, { 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" }, { 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" }, { 0x00C0B9, "FUNK SOFTWARE, INC.", "FUNK-SOFTWARE" }, { 0x00C065, "SCOPE COMMUNICATIONS, INC.", "SCOPE-COMMUNICATION" }, { 0x00C018, "LANART CORPORATION", "LANART" }, { 0x00C0FF, "DOT HILL SYSTEMS CORPORATION", "DOT-HILL" }, { 0x00CF1C, "COMMUNICATION MACHINERY CORP.", "COMMUNICATION-MACHINERY" }, { 0x00C07D, "RISC DEVELOPMENTS LTD.", "RISC-DEVELOPMENTS" }, { 0x00C01E, "LA FRANCAISE DES JEUX", "LA-FRANCAISE-DES-JEUX" }, { 0x00C084, "DATA LINK CORP. LTD.", "DATA-LINK" }, { 0x00C016, "ELECTRONIC THEATRE CONTROLS", "THEATRE-CONTROLS" }, { 0x00C096, "TAMURA CORPORATION", "TAMURA" }, { 0x00C04F, "DELL COMPUTER CORPORATION", "DELL" }, { 0x00C035, "QUINTAR COMPANY", "QUINTAR-COMPANY" }, { 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" }, { 0x002056, "NEOPRODUCTS", "NEOPRODUCTS" }, { 0x0020A6, "Proxim Wireless", "PROXIM-WIRELESS" }, { 0x00C073, "XEDIA CORPORATION", "XEDIA" }, { 0x00C0D4, "AXON NETWORKS, INC.", "AXON-NETWORKS" }, { 0x00C0E5, "GESPAC, S.A.", "GESPAC" }, { 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" }, { 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" }, { 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" }, { 0x00805F, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00801E, "XINETRON, INC.", "XINETRON" }, { 0x00804A, "PRO-LOG", "PRO-LOG" }, { 0x008059, "STANLEY ELECTRIC CO., LTD", "STANLEY-ELECTRIC" }, { 0x00806B, "SCHMID TELECOMMUNICATION", "SCHMID-TELECOMMUNICATION" }, { 0x0080B8, "B.U.G. MORISEIKI, INCORPORATED", "B-U-G-MORISEIKI-INCORPORATED" }, { 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" }, { 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" }, { 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" }, { 0x0080D2, "SHINNIHONDENKO CO., LTD.", "SHINNIHONDENKO" }, { 0x0080DF, "ADC CODENOLL TECHNOLOGY CORP.", "ADC-CODENOLL" }, { 0x008071, "SAI TECHNOLOGY", "SAI" }, { 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" }, { 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" }, { 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" }, { 0x00809F, "ALE International", "ALE" }, { 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" }, { 0x0080E8, "CUMULUS CORPORATIION", "CUMULUS-CORPORATIION" }, { 0x0000CD, "Allied Telesis Labs Ltd", "ALLIED-TELESIS-LABS" }, { 0x0000A5, "Tattile SRL ", "TATTILE-SRL" }, { 0x000036, "ATARI CORPORATION", "ATARI" }, { 0x0080BD, "THE FURUKAWA ELECTRIC CO., LTD", "THE-FURUKAWA-ELECTRIC" }, { 0x0080A8, "VITACOM CORPORATION", "VITACOM" }, { 0x0080FB, "BVM LIMITED", "BVM" }, { 0x008042, "Artesyn Embedded Technologies", "ARTESYN-EMBEDDED-TECHNOLOGIES" }, { 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" }, { 0x00805B, "CONDOR SYSTEMS, INC.", "CONDOR" }, { 0x00801C, "NEWPORT SYSTEMS SOLUTIONS", "NEWPORT-SOLUTIONS" }, { 0x0080C6, "NATIONAL DATACOMM CORPORATION", "NATIONAL-DATACOMM" }, { 0x0080FA, "RWT GMBH", "RWT" }, { 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" }, { 0x080055, "STANFORD TELECOMM. INC.", "STANFORD-TELECOMM" }, { 0x080048, "EUROTHERM GAUGING SYSTEMS", "EUROTHERM-GAUGING" }, { 0x080049, "UNIVATION", "UNIVATION" }, { 0x0270B0, "M/A-COM INC. COMPANIES", "M/A-COM-COMPANIES" }, { 0xAA0000, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x00000B, "MATRIX CORPORATION", "MATRIX" }, { 0x080042, "JAPAN MACNICS CORP.", "JAPAN-MACNICS" }, { 0x08000D, "INTERNATIONAL COMPUTERS LTD.", "COMPUTERS" }, { 0x026086, "LOGIC REPLACEMENT TECH. LTD.", "LOGIC-REPLACEMENT-TECH" }, { 0x00DD05, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0A, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00BBF0, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x0080E9, "Madge Ltd.", "MADGE" }, { 0x000003, "XEROX CORPORATION", "XEROX" }, { 0x000008, "XEROX CORPORATION", "XEROX" }, { 0x00DD02, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 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" }, { 0x0000DE, "CETIA", "CETIA" }, { 0x00004B, "ICL DATA OY", "ICL-DATA-OY" }, { 0x000013, "CAMEX", "CAMEX" }, { 0x000095, "SONY TEKTRONIX CORP.", "SONY-TEKTRONIX" }, { 0x0000AE, "DASSAULT ELECTRONIQUE", "DASSAULT-ELECTRONIQUE" }, { 0x0000DD, "TCL INCORPORATED", "TCL-INCORPORATED" }, { 0x0000D9, "NIPPON TELEGRAPH & TELEPHONE", "NIPPON-TELEGRAPH-TELEPHONE" }, { 0x000046, "OLIVETTI NORTH AMERICA", "OLIVETTI-NORTH-AMERICA" }, { 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" }, { 0x08008F, "CHIPCOM CORPORATION", "CHIPCOM" }, { 0x080081, "ASTECH INC.", "ASTECH" }, { 0x000017, "Oracle", "ORACLE" }, { 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" }, { 0x00001B, "NOVELL INC.", "NOVELL" }, { 0x000071, "ADRA SYSTEMS INC.", "ADRA" }, { 0x00006C, "Private", "PRIVATE" }, { 0xD837BE, "Shanghai Gongjing Telecom Technology Co,LTD", "SHANGHAI-GONGJING-TELECOM" }, { 0x080030, "CERN", "CERN" }, { 0x00DD01, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x741BB2, "Apple, Inc.", "APPLE" }, { 0x8CAB8E, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0x002586, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF8D111, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA4516F, "Microsoft Mobile Oy", "MICROSOFT-MOBILE-OY" }, { 0xFC64BA, "Xiaomi Communications Co Ltd", "XIAOMI-COMMUNICATION" }, { 0x246081, "razberi technologies", "RAZBERI-TECHNOLOGIES" }, { 0xEC26CA, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x001FE1, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF4EC38, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x20DCE6, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x9060F1, "Apple, Inc.", "APPLE" }, { 0x20906F, "Shenzhen Tencent Computer System Co., Ltd.", "SHENZHEN-TENCENT-SYSTEM" }, { 0x542758, "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.", "MOTOROLA-WUHAN-MOBILITY-TECHNOLOGIES-COMMUNICATION" }, { 0x4482E5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x90CDB6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7C7D3D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB0F1A3, "Fengfan (BeiJing) Technology Co., Ltd. ", "FENGFAN-BEIJING" }, { 0x525400, "possible QEMU VM", "QEMU-VIRTUAL" }, }; ipv6calc-0.99.1/databases/ieee-oui/create_ieee_oui_headerfile.pl0000775000175100017510000001133112441661666023626 0ustar peterpeter#!/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-0.99.1/databases/ieee-oui/Makefile0000664000175100017510000000135411111067622017435 0ustar peterpeter# Project : ipv6calc/databases/ieee-oui # File : Makefile # Version : $Id: Makefile,v 1.12 2008/11/19 19:57:06 peter Exp $ # 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-0.99.1/databases/ieee-oui/README0000664000175100017510000000024510140701160016644 0ustar peterpeter$Id: README,v 1.2 2004/10/30 12:00:48 peter Exp $ OUI database: URL: http://standards.ieee.org/regauth/oui/oui.txt File will be retrieved on-the-fly during "make" ipv6calc-0.99.1/databases/tools/0000775000175100017510000000000012572537445015452 5ustar peterpeteripv6calc-0.99.1/databases/tools/test_db_lookup.sh0000775000175100017510000001326012303200716021004 0ustar peterpeter#!/bin/bash # # Project : ipv6calc # File : test_db_lookup.sh # Version : $Id: test_db_lookup.sh,v 1.4 2014/02/25 20:49:18 ds6peter Exp $ # 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-0.99.1/databases/tools/create_ieee_headerfile.pl0000775000175100017510000001275112572505277022420 0ustar peterpeter#!/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-0.99.1/databases/ieee-iab/0000775000175100017510000000000012572537444015751 5ustar peterpeteripv6calc-0.99.1/databases/ieee-iab/Makefile0000664000175100017510000000146212131072575017402 0ustar peterpeter# Project : ipv6calc/databases/ieee-iab # File : Makefile # Version : $Id: Makefile,v 1.5 2013/04/09 20:09:33 ds6peter Exp $ # 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-0.99.1/databases/ieee-iab/dbieee_iab.h0000664000175100017510000126360412572505277020165 0ustar peterpeter/* * Project : ipv6calc * File : dbieee_iab.h * Version : $Id: dbieee_iab.h,v 1.85 2015/09/05 06:25:03 ds6peter Exp $ * Generated : Sat Sep 5 08:24:43 2015 * Data copyright: IEEE * * Information: * Additional header file for libipv6calc_db_wrapper_BuiltIn.c */ /*@unused@*/ static const char* libieee_iab_status __attribute__ ((__unused__)) = "IAB/20150826"; static const s_ieee_iab libieee_iab[] = { { 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, 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, 0xEE6000, 0xEE6FFF, "Narinet, Inc.", "NARINET" }, { 0x40D855, 0x1E3000, 0x1E3FFF, "Mega Electronics Ltd", "MEGA-ELECTRONICS" }, { 0x40D855, 0x1C4000, 0x1C4FFF, "QED Advanced Systems Limited", "QED-ADVANCED" }, { 0x40D855, 0x1BF000, 0x1BFFFF, "shanghai mingding information tech co.Ltd", "SHANGHAI-MINGDING-INFORMATION-TECH" }, { 0x40D855, 0x16A000, 0x16AFFF, "Aplex Technology Inc.", "APLEX" }, { 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, 0x198000, 0x198FFF, "devboards GmbH", "DEVBOARDS" }, { 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, 0x1A3000, 0x1A3FFF, "Noritake Itron Corporation", "NORITAKE-ITRON" }, { 0x40D855, 0x1A5000, 0x1A5FFF, "DemoPad", "DEMOPAD" }, { 0x40D855, 0x1A4000, 0x1A4FFF, "cibite AG", "CIBITE" }, { 0x40D855, 0x177000, 0x177FFF, "TRI Engineering co.,ltd.", "TRI-ENGINEERING" }, { 0x40D855, 0x174000, 0x174FFF, "EcoGuard AB", "ECOGUARD-AB" }, { 0x40D855, 0x1B7000, 0x1B7FFF, "TEWS Elektronik GmbH & Co. KG", "TEWS-ELEKTRONIK" }, { 0x40D855, 0x17E000, 0x17EFFF, "TOKHATEC", "TOKHATEC" }, { 0x40D855, 0x181000, 0x181FFF, "eROCCA", "EROCCA" }, { 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, 0x153000, 0x153FFF, "BlinkPipe Ltd", "BLINKPIPE" }, { 0x40D855, 0x149000, 0x149FFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x40D855, 0x14B000, 0x14BFFF, "Vocality International", "VOCALITY" }, { 0x40D855, 0x14A000, 0x14AFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x146000, 0x146FFF, "Pleiger Elektronik GmbH and Co. KG", "PLEIGER-ELEKTRONIK-AND" }, { 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, 0x131000, 0x131FFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x15B000, 0x15BFFF, "SQF Spezialelektronik GmbH", "SQF-SPEZIALELEKTRONIK" }, { 0x40D855, 0x158000, 0x158FFF, "Exibea AB", "EXIBEA-AB" }, { 0x40D855, 0x134000, 0x134FFF, "digitech GmbH & Co. KG", "DIGITECH-AMP" }, { 0x40D855, 0x12A000, 0x12AFFF, "Jadpod Communication Company Limited", "JADPOD-COMMUNICATION-COMPANY" }, { 0x40D855, 0x11A000, 0x11AFFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x110000, 0x110FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x0F7000, 0x0F7FFF, "Comline Elektronik Elektrotechnik GmbH", "COMLINE-ELEKTRONIK-ELEKTROTECHNIK" }, { 0x40D855, 0x10B000, 0x10BFFF, "So-Cool Corporation.", "SO-COOL" }, { 0x40D855, 0x101000, 0x101FFF, "e.p.g. Elettronica Srl", "E-P-G-ELETTRONICA-SRL" }, { 0x40D855, 0x0D4000, 0x0D4FFF, "Mitsubishi Heavy Industries, Ltd.", "MITSUBISHI-HEAVY-INDUSTRIES" }, { 0x40D855, 0x0CC000, 0x0CCFFF, "ATEME", "ATEME" }, { 0x40D855, 0x0BF000, 0x0BFFFF, "Shenzhen SETEC Power Co.,Ltd", "SHENZHEN-SETEC-POWER" }, { 0x40D855, 0x0BD000, 0x0BDFFF, "iCOGNIZE GmbH", "ICOGNIZE" }, { 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, 0x0F4000, 0x0F4FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x40D855, 0x0EE000, 0x0EEFFF, "Siegmar Zander HuSWare", "SIEGMAR-ZANDER-HUSWARE" }, { 0x40D855, 0x0EB000, 0x0EBFFF, "WANTECH Networks", "WANTECH-NETWORKS" }, { 0x40D855, 0x0B0000, 0x0B0FFF, "Micrologic", "MICROLOGIC" }, { 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, 0x0DE000, 0x0DEFFF, "VPG", "VPG" }, { 0x40D855, 0x099000, 0x099FFF, "idcell co.ltd", "IDCELL" }, { 0x40D855, 0x08F000, 0x08FFFF, "Excelitas", "EXCELITAS" }, { 0x40D855, 0x0E1000, 0x0E1FFF, "STV Electronic GmbH", "STV" }, { 0x40D855, 0x0A9000, 0x0A9FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x40D855, 0x0A3000, 0x0A3FFF, "Telefrank GmbH", "TELEFRANK" }, { 0x40D855, 0x09C000, 0x09CFFF, "Keyware Solutions Inc.", "KEYWARE-SOLUTIONS" }, { 0x40D855, 0x0C9000, 0x0C9FFF, "QUANTAFLOW", "QUANTAFLOW" }, { 0x40D855, 0x0C2000, 0x0C2FFF, "SC Techswarm SRL", "SC-TECHSWARM-SRL" }, { 0x40D855, 0x068000, 0x068FFF, "Oki Seatec Co., Ltd.", "OKI-SEATEC" }, { 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, 0x04F000, 0x04FFFF, "Haein S&S Co., Ltd", "HAEIN-S-S" }, { 0x40D855, 0x07D000, 0x07DFFF, "Wuxi SiNeng New Energy Co., Ltd.", "WUXI-SINENG-NEW-ENERGY" }, { 0x40D855, 0x07A000, 0x07AFFF, "4embedded", "4EMBEDDED" }, { 0x40D855, 0x04C000, 0x04CFFF, "Serveron Corporation", "SERVERON" }, { 0x40D855, 0x046000, 0x046FFF, "Circuitlink Pty Ltd", "CIRCUITLINK-PTY" }, { 0x40D855, 0x042000, 0x042FFF, "Mango Communicaitons Inc.", "MANGO-COMMUNICAITONS" }, { 0x40D855, 0x03F000, 0x03FFFF, "UniSVR Global Information Technology Corp.", "UNISVR-GLOBAL-INFORMATION" }, { 0x40D855, 0x035000, 0x035FFF, "Mesotech International, Inc.", "MESOTECH" }, { 0x40D855, 0x087000, 0x087FFF, "Bestel China", "BESTEL-CHINA" }, { 0x40D855, 0x084000, 0x084FFF, "Papendorf Software Engineering GmbH", "PAPENDORF-SOFTWARE-ENGINEERING" }, { 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" }, { 0x40D855, 0x05B000, 0x05BFFF, "Data Flow Systems, Inc.", "DATA-FLOW" }, { 0x40D855, 0x05A000, 0x05AFFF, "Ultra Electronics Flightline Systems", "ULTRA-ELECTRONICS-FLIGHTLINE" }, { 0x40D855, 0x070000, 0x070FFF, "JSC Electrical Equipment Factory", "JSC-ELECTRICAL-EQUIPMENT-FACTORY" }, { 0x40D855, 0x065000, 0x065FFF, "Parallel Wireless", "PARALLEL-WIRELESS" }, { 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, 0xFF7000, 0xFF7FFF, "Human Intech", "HUMAN-INTECH" }, { 0x0050C2, 0xFF8000, 0xFF8FFF, "KST technology", "KST" }, { 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" }, { 0x0050C2, 0xFC5000, 0xFC5FFF, "Sakura Seiki Co.,Ltd.", "SAKURA-SEIKI" }, { 0x0050C2, 0xFC6000, 0xFC6FFF, "Critical Link", "CRITICAL-LINK" }, { 0x40D855, 0x009000, 0x009FFF, "ClearSite Communications Inc.", "CLEARSITE-COMMUNICATION" }, { 0x40D855, 0x001000, 0x001FFF, "Vemotion", "VEMOTION" }, { 0x40D855, 0x000000, 0x000FFF, "XRONOS.INC", "XRONOS" }, { 0x40D855, 0x02B000, 0x02BFFF, "Nomatronics", "NOMATRONICS" }, { 0x40D855, 0x023000, 0x023FFF, "Shanghai o-solution electronics & Technology Co., Ltd.", "SHANGHAI-O-SOLUTION-ELECTRONICS" }, { 0x0050C2, 0xFE3000, 0xFE3FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xFDA000, 0xFDAFFF, "ELAN SYSTEMS", "ELAN" }, { 0x0050C2, 0xFD9000, 0xFD9FFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 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, 0xF9B000, 0xF9BFFF, "NEWELL TECHNOLOGIES LIMITED", "NEWELL-TECHNOLOGIES" }, { 0x0050C2, 0xF99000, 0xF99FFF, "Dr. Neumann elektronik GmbH", "DR-NEUMANN-ELEKTRONIK" }, { 0x0050C2, 0xF9A000, 0xF9AFFF, "Telvent", "TELVENT" }, { 0x0050C2, 0xF90000, 0xF90FFF, "SecureTech Systems, Inc.", "SECURETECH" }, { 0x0050C2, 0xF7D000, 0xF7DFFF, "D-Hike Electroncs Technology Co.,Ltd", "D-HIKE-ELECTRONCS" }, { 0x0050C2, 0xF7C000, 0xF7CFFF, "Atonometrics, Inc.", "ATONOMETRICS" }, { 0x0050C2, 0xFA2000, 0xFA2FFF, "Power-One", "POWER-ONE" }, { 0x0050C2, 0xFA5000, 0xFA5FFF, "Intuitive Surgical, Inc.", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0xFA7000, 0xFA7FFF, "Exelis Inc.", "EXELIS" }, { 0x0050C2, 0xFA8000, 0xFA8FFF, "Yash SiQure Technologies India Pvt. Ltd.", "YASH-SIQURE-TECHNOLOGIES-INDIA-PVT" }, { 0x0050C2, 0xFA1000, 0xFA1FFF, "N-Hands GmbH und Co KG", "N-HANDS-UND" }, { 0x0050C2, 0xF91000, 0xF91FFF, "RE2 Inc", "RE2" }, { 0x0050C2, 0xF8F000, 0xF8FFFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0xF87000, 0xF87FFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x0050C2, 0xF86000, 0xF86FFF, "Audio Power Labs", "AUDIO-POWER-LABS" }, { 0x0050C2, 0xF5F000, 0xF5FFFF, "BORYEU TECHNOLOGY CO.,LTD", "BORYEU" }, { 0x0050C2, 0xF5E000, 0xF5EFFF, "Y-cam Solutions Ltd", "Y-CAM-SOLUTIONS" }, { 0x0050C2, 0xFB2000, 0xFB2FFF, "Preston Industries dba PolyScience", "PRESTON-INDUSTRIES-DBA-POLYSCIENCE" }, { 0x0050C2, 0xFBC000, 0xFBCFFF, "Leroy Somer", "LEROY-SOMER" }, { 0x0050C2, 0xFBB000, 0xFBBFFF, "ACIDA GmbH", "ACIDA" }, { 0x0050C2, 0xFB1000, 0xFB1FFF, "MATELEX", "MATELEX" }, { 0x0050C2, 0xF19000, 0xF19FFF, "Netlink Bilisim Sistemleri San. ve Tic. Ltd. Sti.", "NETLINK-BILISIM-SISTEMLERI-SAN-VE-TIC-STI" }, { 0x0050C2, 0xF54000, 0xF54FFF, "Hella Gutmann Solutions GmbH", "HELLA-GUTMANN-SOLUTIONS" }, { 0x0050C2, 0xF4A000, 0xF4AFFF, "Z-App Systems, Inc.", "Z-APP" }, { 0x0050C2, 0xF4B000, 0xF4BFFF, "Supranet", "SUPRANET" }, { 0x0050C2, 0xEE7000, 0xEE7FFF, "syes srl", "SYES-SRL" }, { 0x0050C2, 0xF2D000, 0xF2DFFF, "Robert Bosch Healthcare Systems, Inc.", "ROBERT-BOSCH-HEALTHCARE" }, { 0x0050C2, 0xEFB000, 0xEFBFFF, "Norbit ODM AS", "NORBIT-ODM-AS" }, { 0x0050C2, 0xEF1000, 0xEF1FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF40000, 0xF40FFF, "iBWorld co.,ltd.", "IBWORLD" }, { 0x0050C2, 0xF3E000, 0xF3EFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x0050C2, 0xF3F000, 0xF3FFFF, "DENSEI COMMUNICATION Inc.", "DENSEI-COMMUNICATION" }, { 0x0050C2, 0xF37000, 0xF37FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xF23000, 0xF23FFF, "Electro-Motive Diesel", "ELECTRO-MOTIVE-DIESEL" }, { 0x0050C2, 0xF55000, 0xF55FFF, "Honeywell International Inc.", "HONEYWELL" }, { 0x0050C2, 0xF0F000, 0xF0FFFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x0050C2, 0xF05000, 0xF05FFF, "ESI Ventures", "ESI-VENTURES" }, { 0x0050C2, 0xEC0000, 0xEC0FFF, "UgMO Technologies", "UGMO-TECHNOLOGIES" }, { 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, 0xECA000, 0xECAFFF, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x0050C2, 0xE98000, 0xE98FFF, "i3 International Inc.", "I3" }, { 0x0050C2, 0xE8E000, 0xE8EFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xEAC000, 0xEACFFF, "Alias ip", "ALIAS-IP" }, { 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, 0xEA2000, 0xEA2FFF, "ThinkRF Corp", "THINKRF" }, { 0x0050C2, 0xEB6000, 0xEB6FFF, "Monsoon Solutions, Inc.", "MONSOON-SOLUTIONS" }, { 0x0050C2, 0xE3C000, 0xE3CFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xE5A000, 0xE5AFFF, "FUTEC INC.", "FUTEC" }, { 0x0050C2, 0xE1E000, 0xE1EFFF, "Lo-Q plc", "LO-Q-PLC" }, { 0x0050C2, 0xE50000, 0xE50FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xE46000, 0xE46FFF, "Industrea Mining Technology", "INDUSTREA-MINING" }, { 0x0050C2, 0xE32000, 0xE32FFF, "Oshoksh Corporation", "OSHOKSH" }, { 0x0050C2, 0xE6E000, 0xE6EFFF, "Power-One Italia S.p.A", "POWER-ONE-ITALIA-S-P-A" }, { 0x0050C2, 0xE64000, 0xE64FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x0050C2, 0xE28000, 0xE28FFF, "Teplovodokhran", "TEPLOVODOKHRAN" }, { 0x0050C2, 0xDD6000, 0xDD6FFF, "Transas Marine International AB", "TRANSAS-MARINE-AB" }, { 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, 0xDC5000, 0xDC5FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xDE3000, 0xDE3FFF, "Breakaway Systems LLC", "BREAKAWAY-LLC" }, { 0x0050C2, 0xDE0000, 0xDE0FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x0050C2, 0xDE1000, 0xDE1FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xDD9000, 0xDD9FFF, "Metraware", "METRAWARE" }, { 0x0050C2, 0xDED000, 0xDEDFFF, "Lee Laser", "LEE-LASER" }, { 0x0050C2, 0xDEB000, 0xDEBFFF, "Ruwisch & Kollegen GmbH", "RUWISCH-KOLLEGEN" }, { 0x0050C2, 0xE14000, 0xE14FFF, "Calixto Systems Pvt Ltd", "CALIXTO-PVT" }, { 0x0050C2, 0xDEA000, 0xDEAFFF, "Cerner Corporation", "CERNER" }, { 0x0050C2, 0xE13000, 0xE13FFF, "Automation Assist Japan Company", "AUTOMATION-ASSIST-JAPAN-COMPANY" }, { 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, 0xD55000, 0xD55FFF, "Sterna Security", "STERNA-SECURITY" }, { 0x0050C2, 0xD7D000, 0xD7DFFF, "Voltech Instruments", "VOLTECH-INSTRUMENTS" }, { 0x0050C2, 0xD73000, 0xD73FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD91000, 0xD91FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0xDAD000, 0xDADFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xDAE000, 0xDAEFFF, "Spang Power Electronics", "SPANG-POWER-ELECTRONICS" }, { 0x0050C2, 0xDA5000, 0xDA5FFF, "megatec electronic GmbH", "MEGATEC" }, { 0x0050C2, 0xD87000, 0xD87FFF, "Electrolight Shivuk (1994) Ltd.", "ELECTROLIGHT-SHIVUK-1994" }, { 0x0050C2, 0xDB8000, 0xDB8FFF, "Comsat VertriebsgmbH", "COMSAT-VERTRIEBSGMBH" }, { 0x0050C2, 0xDB1000, 0xDB1FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xD69000, 0xD69FFF, "GHL Systems Bhd", "GHL-BHD" }, { 0x0050C2, 0xD5F000, 0xD5FFFF, "Embedded Solution Co., Ltd.", "EMBEDDED-SOLUTION" }, { 0x0050C2, 0xD9B000, 0xD9BFFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0xCFC000, 0xCFCFFF, "Tritium Pty Ltd", "TRITIUM-PTY" }, { 0x0050C2, 0xCFD000, 0xCFDFFF, "AIRFOLC,INC.", "AIRFOLC" }, { 0x0050C2, 0xCFA000, 0xCFAFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xCF9000, 0xCF9FFF, "Elbit Systems of America", "ELBIT-OF-AMERICA" }, { 0x0050C2, 0xD04000, 0xD04FFF, "Tehama Wireless", "TEHAMA-WIRELESS" }, { 0x0050C2, 0xD03000, 0xD03FFF, "Peekel Instruments B.V.", "PEEKEL-INSTRUMENTS" }, { 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, 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, 0xD4B000, 0xD4BFFF, "Indra Australia", "INDRA-AUSTRALIA" }, { 0x0050C2, 0xD4A000, 0xD4AFFF, "ATH system", "ATH-SYSTEM" }, { 0x0050C2, 0xCE4000, 0xCE4FFF, "TEKTRONIK", "TEKTRONIK" }, { 0x0050C2, 0xCD8000, 0xCD8FFF, "IT-IS International Ltd.", "IT-IS" }, { 0x0050C2, 0xC9D000, 0xC9DFFF, "Radius Sweden AB", "RADIUS-SWEDEN-AB" }, { 0x0050C2, 0xC9C000, 0xC9CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 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, 0xC3A000, 0xC3AFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xC39000, 0xC39FFF, "SECAD SA", "SECAD" }, { 0x0050C2, 0xC88000, 0xC88FFF, "CSI Controles e Sistemas Industriais Ltda.", "CSI-CONTROLES-E-SISTEMAS-INDUSTRIAIS-LTDA" }, { 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, 0xCA6000, 0xCA6FFF, "Vidisys GmbH", "VIDISYS" }, { 0x0050C2, 0xCA7000, 0xCA7FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x0050C2, 0xCC4000, 0xCC4FFF, "General Dynamics C4S", "GENERAL-DYNAMICS-C4S" }, { 0x0050C2, 0xCC5000, 0xCC5FFF, "Tecnovum AG", "TECNOVUM" }, { 0x0050C2, 0xCBB000, 0xCBBFFF, "Coptonix GmbH", "COPTONIX" }, { 0x0050C2, 0xCBA000, 0xCBAFFF, "DELTA TAU DATA SYSTEMS", "DELTA-TAU-DATA" }, { 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, 0xC51000, 0xC51FFF, "InForce Computing, Inc.", "INFORCE-COMPUTING" }, { 0x0050C2, 0xC4E000, 0xC4EFFF, "Elaso AG", "ELASO" }, { 0x0050C2, 0xC6B000, 0xC6BFFF, "SiGarden Sp z o.o.", "SIGARDEN-SP-Z-O-O" }, { 0x0050C2, 0xC6C000, 0xC6CFFF, "DORLET S.A.", "DORLET" }, { 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, 0xC93000, 0xC93FFF, "SENSAIR Pty Ltd", "SENSAIR-PTY" }, { 0x0050C2, 0xC92000, 0xC92FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xC89000, 0xC89FFF, "Creative Micro Design", "CREATIVE-MICRO-DESIGN" }, { 0x0050C2, 0xCB0000, 0xCB0FFF, "Konsmetal S.A.", "KONSMETAL" }, { 0x0050C2, 0xCB1000, 0xCB1FFF, "ZK Celltest Inc", "ZK-CELLTEST" }, { 0x0050C2, 0xC23000, 0xC23FFF, "Vidicon LLC", "VIDICON-LLC" }, { 0x0050C2, 0xC22000, 0xC22FFF, "Audient Ltd", "AUDIENT" }, { 0x0050C2, 0xC18000, 0xC18FFF, "Linuxstamp Designs, LLC", "LINUXSTAMP-DESIGNS-LLC" }, { 0x0050C2, 0xBF1000, 0xBF1FFF, "Amatic Industries GmbH", "AMATIC-INDUSTRIES" }, { 0x0050C2, 0xBF2000, 0xBF2FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xBE7000, 0xBE7FFF, "Genetec Inc.", "GENETEC" }, { 0x0050C2, 0xBE8000, 0xBE8FFF, "VEHICLE TESTING EQUIPMENT, S.L.", "VEHICLE-TESTING-EQUIPMENT-S-L" }, { 0x0050C2, 0xBFC000, 0xBFCFFF, "Altronix Corporation", "ALTRONIX" }, { 0x0050C2, 0xBFB000, 0xBFBFFF, "ECS Srl", "ECS-SRL" }, { 0x0050C2, 0xC2D000, 0xC2DFFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 0x0050C2, 0xC2C000, 0xC2CFFF, "bach-messtechnik gmbh", "BACH-MESSTECHNIK" }, { 0x0050C2, 0xBDE000, 0xBDEFFF, "Evo-Teh d.o.o.", "EVO-TEH-D-O-O" }, { 0x0050C2, 0xC0F000, 0xC0FFFF, "DYCEC, S.A.", "DYCEC" }, { 0x0050C2, 0xC10000, 0xC10FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xC06000, 0xC06FFF, "ANALOG WAY", "ANALOG-WAY" }, { 0x0050C2, 0xC05000, 0xC05FFF, "Doppler Systems LLC", "DOPPLER-LLC" }, { 0x0050C2, 0xA7F000, 0xA7FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA7E000, 0xA7EFFF, "Independent Project Engineering Ltd", "INDEPENDENT-PROJECT-ENGINEERING" }, { 0x0050C2, 0xA75000, 0xA75FFF, "JTL Systems Ltd.", "JTL" }, { 0x0050C2, 0xA74000, 0xA74FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xA6A000, 0xA6AFFF, "Infocrossing", "INFOCROSSING" }, { 0x0050C2, 0xA6B000, 0xA6BFFF, "Explorer Inc.", "EXPLORER" }, { 0x0050C2, 0xA60000, 0xA60FFF, "Arrow Central Europe GmbH - Division Spoerle", "ARROW-CENTRAL-EUROPE---DIVISION-SPOERLE" }, { 0x0050C2, 0xA61000, 0xA61FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xAA6000, 0xAA6FFF, "Bassett Electronic Systems ltd", "BASSETT" }, { 0x0050C2, 0xA9C000, 0xA9CFFF, "Ebersp¤cher Electronics GmbH & Co. KG", "EBERSPAECHER-ELECTRONICS" }, { 0x0050C2, 0xABA000, 0xABAFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xAB0000, 0xAB0FFF, "FRAKO Kondensatoren- und Anlagenbau GmbH", "FRAKO-KONDENSATOREN--UND-ANLAGENBAU" }, { 0x0050C2, 0xA92000, 0xA92FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xACE000, 0xACEFFF, "ChronoLogic Pty. Ltd.", "CHRONOLOGIC-PTY" }, { 0x0050C2, 0xAC4000, 0xAC4FFF, "Orion Technologies, Incorporated", "ORION-TECHNOLOGIES-INCORPORATED" }, { 0x0050C2, 0xAE2000, 0xAE2FFF, "Power Medical Interventions", "POWER-MEDICAL-INTERVENTIONS" }, { 0x0050C2, 0xAD8000, 0xAD8FFF, "Incyma", "INCYMA" }, { 0x0050C2, 0x9DF000, 0x9DFFFF, "CODEC Co., Ltd.", "CODEC" }, { 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, 0x9CF000, 0x9CFFFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 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, 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, 0x9B1000, 0x9B1FFF, "Bon Hora GmbH", "BON-HORA" }, { 0x0050C2, 0x9AF000, 0x9AFFFF, "KRESS-NET Krzysztof Rutecki", "KRESS-NET-KRZYSZTOF-RUTECKI" }, { 0x0050C2, 0x9AE000, 0x9AEFFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0x9A9000, 0x9A9FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 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, 0x9C6000, 0x9C6FFF, "Protronic GmbH", "PROTRONIC" }, { 0x0050C2, 0x9C5000, 0x9C5FFF, "Scansonic MI GmbH", "SCANSONIC-MI" }, { 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, 0xA3D000, 0xA3DFFF, "OWANDY", "OWANDY" }, { 0x0050C2, 0xA38000, 0xA38FFF, "Tred Displays", "TRED-DISPLAYS" }, { 0x0050C2, 0xA39000, 0xA39FFF, "Industrial Data Products Ltd", "INDUSTRIAL-DATA-PRODUCTS" }, { 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, 0x99E000, 0x99EFFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x0050C2, 0x99A000, 0x99AFFF, "Miromico AG", "MIROMICO" }, { 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, 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, 0xA24000, 0xA24FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xA1F000, 0xA1FFFF, "Flight Data Systems Pty Ltd", "FLIGHT-DATA-PTY" }, { 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, 0xA56000, 0xA56FFF, "ReaMetrix, Inc.", "REAMETRIX" }, { 0x0050C2, 0xA57000, 0xA57FFF, "Juice Technologies, LLC", "JUICE-TECHNOLOGIES-LLC" }, { 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, 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, 0x901000, 0x901FFF, "Research Applications Incorp", "RESEARCH-APPLICATIONS-INCORP" }, { 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, 0x936000, 0x936FFF, "Margaritis Engineering", "MARGARITIS-ENGINEERING" }, { 0x0050C2, 0x937000, 0x937FFF, "BigBear", "BIGBEAR" }, { 0x0050C2, 0x92C000, 0x92CFFF, "Exatrol Corporation", "EXATROL" }, { 0x0050C2, 0x92D000, 0x92DFFF, "APProSoftware.com", "APPROSOFTWARE-COM" }, { 0x0050C2, 0x967000, 0x967FFF, "Watthour Engineering Co., Inc.", "WATTHOUR-ENGINEERING" }, { 0x0050C2, 0x968000, 0x968FFF, "BuLogics, Inc.", "BULOGICS" }, { 0x0050C2, 0x923000, 0x923FFF, "Amicus Wireless", "AMICUS-WIRELESS" }, { 0x0050C2, 0x922000, 0x922FFF, "Metrum Sweden AB", "METRUM-SWEDEN-AB" }, { 0x0050C2, 0x918000, 0x918FFF, "Design Lightning Corp", "DESIGN-LIGHTNING" }, { 0x0050C2, 0x919000, 0x919FFF, "AHV Systems, Inc.", "AHV" }, { 0x0050C2, 0x98B000, 0x98BFFF, "TI2000 TECNOLOGIA INFORMATICA 2000", "TI2000-TECNOLOGIA-INFORMATICA-2000" }, { 0x0050C2, 0x98A000, 0x98AFFF, "MEV Limited", "MEV" }, { 0x0050C2, 0x97B000, 0x97BFFF, "SMARTQUANTUM SA", "SMARTQUANTUM" }, { 0x0050C2, 0x972000, 0x972FFF, "Switch Science (Panini Keikaku)", "SWITCH-SCIENCE-PANINI-KEIKAKU" }, { 0x0050C2, 0x971000, 0x971FFF, "IPITEK", "IPITEK" }, { 0x0050C2, 0x90E000, 0x90EFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x90F000, 0x90FFFF, "INTEGRA Biosciences AG", "INTEGRA-BIOSCIENCES" }, { 0x0050C2, 0x952000, 0x952FFF, "Tech Fass s.r.o.", "TECH-FASS-S-R-O" }, { 0x0050C2, 0x851000, 0x851FFF, "SPJ Embedded Technologies Pvt. Ltd.", "SPJ-EMBEDDED-TECHNOLOGIES-PVT" }, { 0x0050C2, 0x852000, 0x852FFF, "eInfochips Ltd.", "EINFOCHIPS" }, { 0x0050C2, 0x862000, 0x862FFF, "Elsys AG", "ELSYS" }, { 0x0050C2, 0x863000, 0x863FFF, "Advanced Technology Solutions", "ADVANCED-SOLUTIONS" }, { 0x0050C2, 0x85C000, 0x85CFFF, "B S E", "B-S-E" }, { 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, 0x8D0000, 0x8D0FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x8C6000, 0x8C6FFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 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, 0x8EE000, 0x8EEFFF, "PCSC", "PCSC" }, { 0x0050C2, 0x8E4000, 0x8E4FFF, "MaCaPS International Limited", "MACAPS" }, { 0x0050C2, 0x8DA000, 0x8DAFFF, "DOCUTEMP, INC", "DOCUTEMP" }, { 0x0050C2, 0x8A8000, 0x8A8FFF, "ALTEK ELECTRONICS", "ALTEK-ELECTRONICS" }, { 0x0050C2, 0x89E000, 0x89EFFF, "Broadcast Electronics", "BROADCAST-ELECTRONICS" }, { 0x0050C2, 0x8BC000, 0x8BCFFF, "Honeywell Sensotec", "HONEYWELL-SENSOTEC" }, { 0x0050C2, 0x8B2000, 0x8B2FFF, "SERVAIND SA.", "SERVAIND" }, { 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, 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, 0x7BB000, 0x7BBFFF, "InRay Solutions Ltd.", "INRAY-SOLUTIONS" }, { 0x0050C2, 0x7BC000, 0x7BCFFF, "EIDOS SPA", "EIDOS-SPA" }, { 0x0050C2, 0x7B1000, 0x7B1FFF, "ATEME", "ATEME" }, { 0x0050C2, 0x7B2000, 0x7B2FFF, "A.D.I Video technologies", "A-D-I-VIDEO-TECHNOLOGIES" }, { 0x0050C2, 0x7CD000, 0x7CDFFF, "Precision MicroControl Corporation", "PRECISION-MICROCONTROL" }, { 0x0050C2, 0x7CE000, 0x7CEFFF, "Aircell", "AIRCELL" }, { 0x0050C2, 0x7C6000, 0x7C6FFF, "Lyngdorf Audio Aps", "LYNGDORF-AUDIO-APS" }, { 0x0050C2, 0x7C5000, 0x7C5FFF, "Venture Research Inc.", "VENTURE-RESEARCH" }, { 0x0050C2, 0x814000, 0x814FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0x813000, 0x813FFF, "Intelleflex Corporation", "INTELLEFLEX" }, { 0x0050C2, 0x80A000, 0x80AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x809000, 0x809FFF, "Varma Electronics Oy", "VARMA-ELECTRONICS-OY" }, { 0x0050C2, 0x81E000, 0x81EFFF, "Channelot Ltd.", "CHANNELOT" }, { 0x0050C2, 0x81D000, 0x81DFFF, "IT SALUX CO., LTD.", "IT-SALUX" }, { 0x0050C2, 0x847000, 0x847FFF, "Lars Morich Kommunikationstechnik GmbH", "LARS-MORICH-KOMMUNIKATIONSTECHNIK" }, { 0x0050C2, 0x848000, 0x848FFF, "DASA ROBOT Co., Ltd.", "DASA-ROBOT" }, { 0x0050C2, 0x83A000, 0x83AFFF, "Syr-Tec Engineering & Marketing", "SYR-TEC-ENGINEERING-MARKETING" }, { 0x0050C2, 0x83B000, 0x83BFFF, "O. Bay AG", "O-BAY" }, { 0x0050C2, 0x7D5000, 0x7D5FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0x74C000, 0x74CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x74B000, 0x74BFFF, "STAR-Dundee Ltd", "STAR-DUNDEE" }, { 0x0050C2, 0x72E000, 0x72EFFF, "SNCF EIM PAYS DE LOIRE", "SNCF-EIM-PAYS-DE-LOIRE" }, { 0x0050C2, 0x72D000, 0x72DFFF, "Physical Acoustics Corporation", "PHYSICAL-ACOUSTICS" }, { 0x0050C2, 0x723000, 0x723FFF, "Power Electronics", "POWER-ELECTRONICS" }, { 0x0050C2, 0x724000, 0x724FFF, "HSC-Regelungstechnik GmbH", "HSC-REGELUNGSTECHNIK" }, { 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, 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, 0x756000, 0x756FFF, "Chesapeake Sciences Corp", "CHESAPEAKE-SCIENCES" }, { 0x0050C2, 0x755000, 0x755FFF, "Teletek Electronics", "TELETEK-ELECTRONICS" }, { 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, 0x7A8000, 0x7A8FFF, "Integrated Design Tools, Inc.", "INTEGRATED-DESIGN-TOOLS" }, { 0x0050C2, 0x7A7000, 0x7A7FFF, "Guidance Navigation Limited", "GUIDANCE-NAVIGATION" }, { 0x0050C2, 0x79E000, 0x79EFFF, "Benshaw Canada Controls, Inc.", "BENSHAW-CANADA-CONTROLS" }, { 0x0050C2, 0x79D000, 0x79DFFF, "MiraTrek", "MIRATREK" }, { 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, 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, 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, 0x683000, 0x683FFF, "MEGGITT Safety System", "MEGGITT-SAFETY-SYSTEM" }, { 0x0050C2, 0x682000, 0x682FFF, "Commet AB", "COMMET-AB" }, { 0x0050C2, 0x679000, 0x679FFF, "Industrial Vacuum Systems", "INDUSTRIAL-VACUUM" }, { 0x0050C2, 0x6FA000, 0x6FAFFF, "DCN", "DCN" }, { 0x0050C2, 0x6D2000, 0x6D2FFF, "Lumistar Incorporated", "LUMISTAR-INCORPORATED" }, { 0x0050C2, 0x6C8000, 0x6C8FFF, "B&S MEDIA Co., LTD.", "B-S-MEDIA" }, { 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, 0x678000, 0x678FFF, "IHM", "IHM" }, { 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, 0x620000, 0x620FFF, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x0050C2, 0x61F000, 0x61FFFF, "Imagine Communications", "IMAGINE-COMMUNICATION" }, { 0x0050C2, 0x615000, 0x615FFF, "Axis Electronics", "AXIS-ELECTRONICS" }, { 0x0050C2, 0x616000, 0x616FFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0x646000, 0x646FFF, "TRUTOUCH TECHNOLOGIES INC", "TRUTOUCH-TECHNOLOGIES" }, { 0x0050C2, 0x63C000, 0x63CFFF, "dPict Imaging, Inc.", "DPICT-IMAGING" }, { 0x0050C2, 0x634000, 0x634FFF, "Sohon Inc", "SOHON" }, { 0x0050C2, 0x602000, 0x602FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x5F7000, 0x5F7FFF, "Metrologic Group", "METROLOGIC-GROUP" }, { 0x0050C2, 0x5F8000, 0x5F8FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 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, 0x60B000, 0x60BFFF, "Shanghai QianJin Electronic Equipment Co. Ltd.", "SHANGHAI-QIANJIN-EQUIPMENT" }, { 0x0050C2, 0x60C000, 0x60CFFF, "IDENTIC AB", "IDENTIC-AB" }, { 0x0050C2, 0x601000, 0x601FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x66E000, 0x66EFFF, "Linear Systems Ltd.", "LINEAR" }, { 0x0050C2, 0x66F000, 0x66FFFF, "Nilan A/S", "NILAN-A/S" }, { 0x0050C2, 0x650000, 0x650FFF, "Liquid Breaker, LLC", "LIQUID-BREAKER-LLC" }, { 0x0050C2, 0x651000, 0x651FFF, "STAER SPA", "STAER-SPA" }, { 0x0050C2, 0x647000, 0x647FFF, "R&D Technology Solutionz Limited", "R-D-SOLUTIONZ" }, { 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, 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, 0x5B4000, 0x5B4FFF, "Terrascience Systems Ltd.", "TERRASCIENCE" }, { 0x0050C2, 0x5B2000, 0x5B2FFF, "Syntronic AB", "SYNTRONIC-AB" }, { 0x0050C2, 0x5B3000, 0x5B3FFF, "HITECOM System", "HITECOM-SYSTEM" }, { 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, 0x57E000, 0x57EFFF, "Digital Way", "DIGITAL-WAY" }, { 0x0050C2, 0x56B000, 0x56BFFF, "Dataton Utvecklings AB", "DATATON-UTVECKLINGS-AB" }, { 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, 0x5BD000, 0x5BDFFF, "Nomus Comm-Systems", "NOMUS-COMM" }, { 0x0050C2, 0x5B7000, 0x5B7FFF, "AVerMedia Technologies, Inc.", "AVERMEDIA-TECHNOLOGIES" }, { 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, 0x5EE000, 0x5EEFFF, "Condre Corporation", "CONDRE" }, { 0x0050C2, 0x5EF000, 0x5EFFFF, "pikkerton GmbH", "PIKKERTON" }, { 0x0050C2, 0x5ED000, 0x5EDFFF, "AQUAROTTER A FRANKE COMPANY", "AQUAROTTER-A-FRANKE-COMPANY" }, { 0x0050C2, 0x592000, 0x592FFF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0050C2, 0x588000, 0x588FFF, "Federal Electronics", "FEDERAL-ELECTRONICS" }, { 0x0050C2, 0x59C000, 0x59CFFF, "DELSAT GROUP S.A.", "DELSAT-GROUP" }, { 0x0050C2, 0x4E6000, 0x4E6FFF, "Photonic Bridges Inc.", "PHOTONIC-BRIDGES" }, { 0x0050C2, 0x4E7000, 0x4E7FFF, "Computerized Elevator Contol", "COMPUTERIZED-ELEVATOR-CONTOL" }, { 0x0050C2, 0x50E000, 0x50EFFF, "Fibresavers Corporation", "FIBRESAVERS" }, { 0x0050C2, 0x504000, 0x504FFF, "Aphex Systems Ltd.", "APHEX" }, { 0x0050C2, 0x505000, 0x505FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x4FB000, 0x4FBFFF, "BES Technology Group", "BES-GROUP" }, { 0x0050C2, 0x50F000, 0x50FFFF, "Polystar Instruments AB", "POLYSTAR-INSTRUMENTS-AB" }, { 0x0050C2, 0x56A000, 0x56AFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x561000, 0x561FFF, "Seitec Elektronik GmbH", "SEITEC-ELEKTRONIK" }, { 0x0050C2, 0x4FA000, 0x4FAFFF, "Cambridge Technology, Inc.", "CAMBRIDGE" }, { 0x0050C2, 0x4F1000, 0x4F1FFF, "Packet Island Inc.", "PACKET-ISLAND" }, { 0x0050C2, 0x4F0000, 0x4F0FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 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, 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, 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, 0x4AB000, 0x4ABFFF, "JVF Communications Ltd", "JVF-COMMUNICATION" }, { 0x0050C2, 0x454000, 0x454FFF, "Brivo Systems, LLC", "BRIVO-LLC" }, { 0x0050C2, 0x455000, 0x455FFF, "Aircell", "AIRCELL" }, { 0x0050C2, 0x4A1000, 0x4A1FFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 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, 0x43B000, 0x43BFFF, "A3IP", "A3IP" }, { 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, 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, 0x3B3000, 0x3B3FFF, "Media Lab., Inc.", "MEDIA-LAB" }, { 0x0050C2, 0x3B4000, 0x3B4FFF, "Contr´le Analytique inc.", "CONTR´LE-ANALYTIQUE" }, { 0x0050C2, 0x3DA000, 0x3DAFFF, "M5 Data Limited", "M5-DATA" }, { 0x0050C2, 0x3C0000, 0x3C0FFF, "EDA Industries Srl", "EDA-INDUSTRIES-SRL" }, { 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, 0x3CA000, 0x3CAFFF, "ABB Inc.", "ABB" }, { 0x0050C2, 0x3C4000, 0x3C4FFF, "Sypris Electronics", "SYPRIS-ELECTRONICS" }, { 0x0050C2, 0x424000, 0x424FFF, "Metrolab Technology SA", "METROLAB" }, { 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, 0x410000, 0x410FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0x413000, 0x413FFF, "Goodrich", "GOODRICH" }, { 0x0050C2, 0x409000, 0x409FFF, "KTEC LTD", "KTEC" }, { 0x0050C2, 0x42D000, 0x42DFFF, "Argo-Tech", "ARGO-TECH" }, { 0x0050C2, 0x42C000, 0x42CFFF, "Trapeze ITS U.S.A., LLC", "TRAPEZE-ITS-U-LLC" }, { 0x0050C2, 0x427000, 0x427FFF, "Scheidt & Bachmann GmbH", "SCHEIDT-BACHMANN" }, { 0x0050C2, 0x423000, 0x423FFF, "Power-One Inc.", "POWER-ONE" }, { 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, 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, 0x39C000, 0x39CFFF, "TIYODA MFG CO.,LTD.", "TIYODA-MFG" }, { 0x0050C2, 0x398000, 0x398FFF, "InHand Electronics, Inc.", "INHAND-ELECTRONICS" }, { 0x0050C2, 0x399000, 0x399FFF, "Advanced Micro Controls Inc.", "ADVANCED-MICRO-CONTROLS" }, { 0x0050C2, 0x392000, 0x392FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x313000, 0x313FFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x350000, 0x350FFF, "Kinesys Projects Limited", "KINESYS-PROJECTS" }, { 0x0050C2, 0x351000, 0x351FFF, "Finesystem Co., Ltd", "FINESYSTEM" }, { 0x0050C2, 0x346000, 0x346FFF, "biokeysystem", "BIOKEYSYSTEM" }, { 0x0050C2, 0x347000, 0x347FFF, "Row Seven Ltd", "ROW-SEVEN" }, { 0x0050C2, 0x38F000, 0x38FFFF, "TTC Telecom", "TTC-TELECOM" }, { 0x0050C2, 0x38E000, 0x38EFFF, "Nordic Alarm AB", "NORDIC-ALARM-AB" }, { 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, 0x380000, 0x380FFF, "EKE-Electronics Ltd.", "EKE-ELECTRONICS" }, { 0x0050C2, 0x381000, 0x381FFF, "Realtime Engineering AG", "REALTIME-ENGINEERING" }, { 0x0050C2, 0x33D000, 0x33DFFF, "General Dynamics Decision Systems", "GENERAL-DYNAMICS-DECISION" }, { 0x0050C2, 0x33A000, 0x33AFFF, "United Telecoms Ltd", "UNITED-TELECOMS" }, { 0x0050C2, 0x33C000, 0x33CFFF, "SkipJam", "SKIPJAM" }, { 0x0050C2, 0x330000, 0x330FFF, "Sicon S.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x378000, 0x378FFF, "Daintree Networks Inc", "DAINTREE-NETWORKS" }, { 0x0050C2, 0x379000, 0x379FFF, "Control LAN S.A.", "CONTROL-LAN" }, { 0x0050C2, 0x36C000, 0x36CFFF, "RISCO Group", "RISCO-GROUP" }, { 0x0050C2, 0x362000, 0x362FFF, "AZD Praha s.r.o.", "AZD-PRAHA-S-R-O" }, { 0x0050C2, 0x358000, 0x358FFF, "ALCEA", "ALCEA" }, { 0x0050C2, 0x326000, 0x326FFF, "Navionics S.p.A.", "NAVIONICS-S-P-A" }, { 0x0050C2, 0x024000, 0x024FFF, "IPITEK", "IPITEK" }, { 0x0050C2, 0x204000, 0x204FFF, "Algodue Elettronica srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x0050C2, 0x1FA000, 0x1FAFFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0x1F2000, 0x1F2FFF, "Tattile srl", "TATTILE-SRL" }, { 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, 0x1EA000, 0x1EAFFF, "DAVE S.r.L.", "DAVE-S-R-L" }, { 0x0050C2, 0x1EC000, 0x1ECFFF, "COSMO co.,ltd.", "COSMO" }, { 0x0050C2, 0x20E000, 0x20EFFF, "PYRAMID Computer Systeme GmbH", "PYRAMID-SYSTEME" }, { 0x0050C2, 0x240000, 0x240FFF, "Geoquip Ltd", "GEOQUIP" }, { 0x0050C2, 0x222000, 0x222FFF, "imo-elektronik GmbH", "IMO-ELEKTRONIK" }, { 0x0050C2, 0x218000, 0x218FFF, "Nansen S. A. - Instrumentos de Precis£o", "NANSEN-S-A---INSTRUMENTOS-DE-PRECIS£O" }, { 0x0050C2, 0x24A000, 0x24AFFF, "CDS Rail", "CDS-RAIL" }, { 0x0050C2, 0x236000, 0x236FFF, "JLCooper Electronics", "JLCOOPER-ELECTRONICS" }, { 0x0050C2, 0x22C000, 0x22CFFF, "Intrinsity", "INTRINSITY" }, { 0x0050C2, 0x1DC000, 0x1DCFFF, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0050C2, 0x1DD000, 0x1DDFFF, "Peiker acustic GmbH & Co. KG", "PEIKER-ACUSTIC" }, { 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, 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, 0x18C000, 0x18CFFF, "Technodrive srl", "TECHNODRIVE-SRL" }, { 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, 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, 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, 0x1D2000, 0x1D2FFF, "Shenyang Internet Technology Inc", "SHENYANG-INTERNET" }, { 0x0050C2, 0x1D3000, 0x1D3FFF, "Synopsys", "SYNOPSYS" }, { 0x0050C2, 0x191000, 0x191FFF, "Partner Voxstream A/S", "PARTNER-VOXSTREAM-A/S" }, { 0x0050C2, 0x17D000, 0x17DFFF, "Cognex Corporation", "COGNEX" }, { 0x0050C2, 0x179000, 0x179FFF, "Verifiber LLC", "VERIFIBER-LLC" }, { 0x0050C2, 0x17A000, 0x17AFFF, "WOLF Industrial Systems Inc.", "WOLF-INDUSTRIAL" }, { 0x0050C2, 0x174000, 0x174FFF, "N&P Technologies", "N-P-TECHNOLOGIES" }, { 0x0050C2, 0x173000, 0x173FFF, "DeMeTec GmbH", "DEMETEC" }, { 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, 0x163000, 0x163FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x145000, 0x145FFF, "ELC Lighting", "ELC-LIGHTING" }, { 0x0050C2, 0x13B000, 0x13BFFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x0050C2, 0x14F000, 0x14FFFF, "Telephonics Corp.", "TELEPHONICS" }, { 0x0050C2, 0x110000, 0x110FFF, "QuesCom", "QUESCOM" }, { 0x0050C2, 0x111000, 0x111FFF, "Endusis Limited", "ENDUSIS" }, { 0x0050C2, 0x0EB000, 0x0EBFFF, "iREZ Technologies LLC", "IREZ-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x0EF000, 0x0EFFFF, "Movaz Networks, Inc.", "MOVAZ-NETWORKS" }, { 0x0050C2, 0x11B000, 0x11BFFF, "Digital Vision AB", "DIGITAL-VISION-AB" }, { 0x0050C2, 0x11A000, 0x11AFFF, "Teamaxess Ticketing GmbH", "TEAMAXESS-TICKETING" }, { 0x0050C2, 0x109000, 0x109FFF, "ITK Dr. Kassen GmbH", "ITK-DR-KASSEN" }, { 0x0050C2, 0x0FF000, 0x0FFFFF, "IPAXS Corporation", "IPAXS" }, { 0x0050C2, 0x127000, 0x127FFF, "TPA Traffic & Parking Automation BV", "TPA-TRAFFIC-PARKING-AUTOMATION" }, { 0x0050C2, 0x124000, 0x124FFF, "Tokai Soft Corporation", "TOKAI-SOFT" }, { 0x0050C2, 0x09C000, 0x09CFFF, "RF Applications, Inc.", "RF-APPLICATIONS" }, { 0x0050C2, 0x0CC000, 0x0CCFFF, "AlphaMedia Co., Ltd", "ALPHAMEDIA" }, { 0x0050C2, 0x0CD000, 0x0CDFFF, "LINET OY", "LINET-OY" }, { 0x0050C2, 0x0E1000, 0x0E1FFF, "Inspiration Technology P/L", "INSPIRATION-P/L" }, { 0x0050C2, 0x0C4000, 0x0C4FFF, "InterEpoch Technology, Inc.", "INTEREPOCH" }, { 0x0050C2, 0x0C5000, 0x0C5FFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x0D7000, 0x0D7FFF, "Summit Avionics, Inc.", "SUMMIT-AVIONICS" }, { 0x0050C2, 0x079000, 0x079FFF, "Flextel S.p.A", "FLEXTEL-S-P-A" }, { 0x0050C2, 0x078000, 0x078FFF, "Reselec AG", "RESELEC" }, { 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, 0x0A0000, 0x0A0FFF, "CYNAPS", "CYNAPS" }, { 0x0050C2, 0x09F000, 0x09FFFF, "MetaWave Vedeo Systems", "METAWAVE-VEDEO" }, { 0x0050C2, 0x099000, 0x099FFF, "Case Information & Communications", "CASE-INFORMATION-COMMUNICATION" }, { 0x0050C2, 0x055000, 0x055FFF, "San Castle Technologies, Inc.", "SAN-CASTLE-TECHNOLOGIES" }, { 0x0050C2, 0x05B000, 0x05BFFF, "Radiometer Medical A/S", "RADIOMETER-MEDICAL-A/S" }, { 0x0050C2, 0x04F000, 0x04FFFF, "Luma Corporation", "LUMA" }, { 0x0050C2, 0x04B000, 0x04BFFF, "Tecstar Demo Systems Division", "TECSTAR-DEMO-DIVISION" }, { 0x0050C2, 0x05E000, 0x05EFFF, "DIVA Systems", "DIVA" }, { 0x0050C2, 0x0BF000, 0x0BFFFF, "Private", "PRIVATE" }, { 0x0050C2, 0x05C000, 0x05CFFF, "Nortel Networks PLC (UK)", "NORTEL-NETWORKS-PLC-UK" }, { 0x0050C2, 0x03E000, 0x03EFFF, "MSU UK Ltd", "MSU-UK" }, { 0x0050C2, 0x03F000, 0x03FFFF, "Celotek Corp", "CELOTEK" }, { 0x0050C2, 0x038000, 0x038FFF, "Etheira Technologies", "ETHEIRA-TECHNOLOGIES" }, { 0x0050C2, 0x039000, 0x039FFF, "Apex Signal Corp", "APEX-SIGNAL" }, { 0x0050C2, 0x069000, 0x069FFF, "EC Elettronica S.R.L.", "EC-ELETTRONICA-S-R-L" }, { 0x0050C2, 0x072000, 0x072FFF, "Neuberger Gebaeudeautomation GmbH & Co.", "NEUBERGER-GEBAEUDEAUTOMATION" }, { 0x0050C2, 0x071000, 0x071FFF, "NetVision Telecom", "NETVISION-TELECOM" }, { 0x0050C2, 0x011000, 0x011FFF, "Bihl + Wiedemann GmbH", "BIHL-+-WIEDEMANN" }, { 0x0050C2, 0x010000, 0x010FFF, "Moisture Systems", "MOISTURE" }, { 0x0050C2, 0x031000, 0x031FFF, "Eloquence Ltd", "ELOQUENCE" }, { 0x0050C2, 0x032000, 0x032FFF, "MotionIO", "MOTIONIO" }, { 0x0050C2, 0x02F000, 0x02FFFF, "Sinetica Corp", "SINETICA" }, { 0x0050C2, 0x02E000, 0x02EFFF, "Turtle Mountain Corp", "TURTLE-MOUNTAIN" }, { 0x0050C2, 0x027000, 0x027FFF, "Industrial Control Links", "INDUSTRIAL-CONTROL-LINKS" }, { 0x0050C2, 0x028000, 0x028FFF, "The Frensch Corporation (Pty) Ltd.", "THE-FRENSCH-PTY" }, { 0x0050C2, 0x01E000, 0x01EFFF, "CallTech International Limited", "CALLTECH" }, { 0x0050C2, 0x01D000, 0x01DFFF, "Princeton Gamma Tech", "PRINCETON-GAMMA-TECH" }, { 0x0050C2, 0x01B000, 0x01BFFF, "Cross Products Ltd.", "CROSS-PRODUCTS" }, { 0x0050C2, 0x01A000, 0x01AFFF, "Skylake Talix", "SKYLAKE-TALIX" }, { 0x0050C2, 0x025000, 0x025FFF, "Teracom Telematica Ltda.", "TERACOM-TELEMATICA-LTDA" }, { 0x40D855, 0x1DB000, 0x1DBFFF, "NIPPON TECHNO LAB.,INC,", "NIPPON-TECHNO-LAB" }, { 0x40D855, 0x1D9000, 0x1D9FFF, "Commercial Wireless Systems International LLC.", "COMMERCIAL-WIRELESS-LLC" }, { 0x40D855, 0x1BC000, 0x1BCFFF, "KbDevice,Inc.", "KBDEVICE" }, { 0x40D855, 0x1BA000, 0x1BAFFF, "Creative Lighting And Sound Systems Pty Ltd", "CREATIVE-LIGHTING-AND-SOUND-PTY" }, { 0x40D855, 0x1B4000, 0x1B4FFF, "Inforce Computing Inc.", "INFORCE-COMPUTING" }, { 0x40D855, 0x1B2000, 0x1B2FFF, "AGE A. Gilg Elektronik", "AGE-A-GILG-ELEKTRONIK" }, { 0x40D855, 0x1C7000, 0x1C7FFF, "Wexiodisk AB", "WEXIODISK-AB" }, { 0x40D855, 0x1CE000, 0x1CEFFF, "Peter Huber", "PETER-HUBER" }, { 0x40D855, 0x1C9000, 0x1C9FFF, "Andy-L Ltd.", "ANDY-L" }, { 0x40D855, 0x160000, 0x160FFF, "Thermo Fisher Sceintific", "THERMO-FISHER-SCEINTIFIC" }, { 0x40D855, 0x162000, 0x162FFF, "LUNA-NEXUS", "LUNA-NEXUS" }, { 0x40D855, 0x195000, 0x195FFF, "TONNA ELECTRONIQUE", "TONNA-ELECTRONIQUE" }, { 0x40D855, 0x192000, 0x192FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x193000, 0x193FFF, "FORZA SILICON CORP.", "FORZA-SILICON" }, { 0x40D855, 0x1A7000, 0x1A7FFF, "ENTEC Electric & Electronic CO., LTD", "ENTEC-ELECTRIC" }, { 0x40D855, 0x1A8000, 0x1A8FFF, "Multiobrabotka", "MULTIOBRABOTKA" }, { 0x40D855, 0x16F000, 0x16FFFF, "BrightLeaf Power", "BRIGHTLEAF-POWER" }, { 0x40D855, 0x16D000, 0x16DFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x17A000, 0x17AFFF, "ARGUS-SPECTRUM", "ARGUS-SPECTRUM" }, { 0x40D855, 0x179000, 0x179FFF, "Servo-Robot Inc.", "SERVO-ROBOT" }, { 0x40D855, 0x19D000, 0x19DFFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x19B000, 0x19BFFF, "Northern Star Technologies", "NORTHERN-STAR-TECHNOLOGIES" }, { 0x40D855, 0x188000, 0x188FFF, "Array Corporation", "ARRAY" }, { 0x40D855, 0x184000, 0x184FFF, "Satkirit Ltd", "SATKIRIT" }, { 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, 0x0F1000, 0x0F1FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x40D855, 0x156000, 0x156FFF, "Emphysys, Inc.", "EMPHYSYS" }, { 0x40D855, 0x155000, 0x155FFF, "Telefrang AB", "TELEFRANG-AB" }, { 0x40D855, 0x150000, 0x150FFF, "SHIKINO HIGH-TECH", "SHIKINO-HIGH-TECH" }, { 0x40D855, 0x14D000, 0x14DFFF, "SOMFY SAS", "SOMFY-SAS" }, { 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, 0x120000, 0x120FFF, "ObjectFab GmbH", "OBJECTFAB" }, { 0x40D855, 0x115000, 0x115FFF, "MESA Electronic GmbH", "MESA" }, { 0x40D855, 0x113000, 0x113FFF, "Testbook Ltd", "TESTBOOK" }, { 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, 0x12E000, 0x12EFFF, "Canfield Scientific, Inc.", "CANFIELD-SCIENTIFIC" }, { 0x40D855, 0x14E000, 0x14EFFF, "Marposs S.p.A", "MARPOSS-S-P-A" }, { 0x40D855, 0x08A000, 0x08AFFF, "Leder Elektronik Design", "LEDER-ELEKTRONIK-DESIGN" }, { 0x40D855, 0x09F000, 0x09FFFF, "Bascules Robbe nv", "BASCULES-ROBBE-NV" }, { 0x40D855, 0x0A0000, 0x0A0FFF, "Quantronix, Inc.", "QUANTRONIX" }, { 0x40D855, 0x096000, 0x096FFF, "Comtel Electronics GmbH", "COMTEL-ELECTRONICS" }, { 0x40D855, 0x094000, 0x094FFF, "Nomad Digital Limited", "NOMAD-DIGITAL" }, { 0x40D855, 0x092000, 0x092FFF, "Wasserbauer GmbH", "WASSERBAUER" }, { 0x40D855, 0x0C7000, 0x0C7FFF, "insensiv GmbH", "INSENSIV" }, { 0x40D855, 0x0C5000, 0x0C5FFF, "M.M. Elektrolab", "M-M-ELEKTROLAB" }, { 0x40D855, 0x0C4000, 0x0C4FFF, "Inspired Systems", "INSPIRED" }, { 0x40D855, 0x0B8000, 0x0B8FFF, "Ferlin Trading BV", "FERLIN-TRADING" }, { 0x40D855, 0x0BA000, 0x0BAFFF, "PCH Engineering A/S", "PCH-ENGINEERING-A/S" }, { 0x40D855, 0x0AB000, 0x0ABFFF, "Enel doo Belgrade", "ENEL-DOO-BELGRADE" }, { 0x40D855, 0x0A1000, 0x0A1FFF, "ADVALY SYSTEM Inc.", "ADVALY-SYSTEM" }, { 0x40D855, 0x0C8000, 0x0C8FFF, "Mettler Toledo Hispeed", "METTLER-TOLEDO-HISPEED" }, { 0x40D855, 0x0D7000, 0x0D7FFF, "Avant Technologies,Inc", "AVANT-TECHNOLOGIES" }, { 0x40D855, 0x0D1000, 0x0D1FFF, "Cantada Inc", "CANTADA" }, { 0x40D855, 0x0CF000, 0x0CFFFF, "Clark-MXR, Inc.", "CLARK-MXR" }, { 0x40D855, 0x0DA000, 0x0DAFFF, "Devialet SA", "DEVIALET" }, { 0x40D855, 0x0D9000, 0x0D9FFF, "YUKO ELECTRIC CO.,LTD", "YUKO-ELECTRIC" }, { 0x40D855, 0x0E8000, 0x0E8FFF, "HEITEC AG", "HEITEC" }, { 0x40D855, 0x0E4000, 0x0E4FFF, "ARAGO SYSTEMS", "ARAGO" }, { 0x40D855, 0x0AD000, 0x0ADFFF, "Space Micro", "SPACE-MICRO" }, { 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, 0x080000, 0x080FFF, "Honeywell", "HONEYWELL" }, { 0x40D855, 0x07F000, 0x07FFFF, "Wheatstone Corporation", "WHEATSTONE" }, { 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, 0x075000, 0x075FFF, "Teraflops", "TERAFLOPS" }, { 0x40D855, 0x073000, 0x073FFF, "Diamond Technologies, Inc", "DIAMOND-TECHNOLOGIES" }, { 0x40D855, 0x045000, 0x045FFF, "Genadsystem", "GENADSYSTEM" }, { 0x40D855, 0x047000, 0x047FFF, "Dos&Donts SRL", "DOS-DONTS-SRL" }, { 0x40D855, 0x049000, 0x049FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x40D855, 0x060000, 0x060FFF, "Aplex Technology Inc.", "APLEX" }, { 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" }, { 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" }, { 0x0050C2, 0xFD8000, 0xFD8FFF, "Ease Inc.", "EASE" }, { 0x0050C2, 0xFD1000, 0xFD1FFF, "Enyx SA", "ENYX" }, { 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" }, { 0x40D855, 0x00C000, 0x00CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x00A000, 0x00AFFF, "Sarana Sistem Mikro", "SARANA-SISTEM-MIKRO" }, { 0x0050C2, 0xFCE000, 0xFCEFFF, "KOYO ELECTRIC", "KOYO-ELECTRIC" }, { 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" }, { 0x0050C2, 0xFE2000, 0xFE2FFF, "Pulsotronic Anlagentechnik GmbH", "PULSOTRONIC-ANLAGENTECHNIK" }, { 0x0050C2, 0xFC7000, 0xFC7FFF, "SERCOM Regeltechniek", "SERCOM-REGELTECHNIEK" }, { 0x0050C2, 0xFC4000, 0xFC4FFF, "Kyowadensi", "KYOWADENSI" }, { 0x0050C2, 0xFBD000, 0xFBDFFF, "FHF Funke+Huster Fernsig GmbH", "FHF-FUNKE+HUSTER-FERNSIG" }, { 0x0050C2, 0xFDB000, 0xFDBFFF, "The Security Center Inc", "THE-SECURITY-CENTER" }, { 0x0050C2, 0xFA9000, 0xFA9FFF, "Hijet Print d.o.o.", "HIJET-PRINT-D-O-O" }, { 0x0050C2, 0xFA3000, 0xFA3FFF, "Xemex NV", "XEMEX-NV" }, { 0x0050C2, 0xF84000, 0xF84FFF, "Dynon Instruments", "DYNON-INSTRUMENTS" }, { 0x0050C2, 0xF8E000, 0xF8EFFF, "GPO", "GPO" }, { 0x0050C2, 0xF85000, 0xF85FFF, "Enetics, Inc.", "ENETICS" }, { 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, 0xF67000, 0xF67FFF, "Celestial Audio", "CELESTIAL-AUDIO" }, { 0x0050C2, 0xFA0000, 0xFA0FFF, "Amplus Communication Pte Ltd", "AMPLUS-COMMUNICATION-PTE" }, { 0x0050C2, 0xF98000, 0xF98FFF, "Infotech North America", "INFOTECH-NORTH-AMERICA" }, { 0x0050C2, 0xFB0000, 0xFB0FFF, "Tateishi Kobisha Co.LTD", "TATEISHI-KOBISHA" }, { 0x0050C2, 0xF5D000, 0xF5DFFF, "SMARTB TECHNOLOGIES", "SMARTB-TECHNOLOGIES" }, { 0x0050C2, 0xFBA000, 0xFBAFFF, "Elbit Systems of America", "ELBIT-OF-AMERICA" }, { 0x0050C2, 0xFB3000, 0xFB3FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xEFA000, 0xEFAFFF, "Predictive Sensor Technology", "PREDICTIVE-SENSOR" }, { 0x0050C2, 0xEF2000, 0xEF2FFF, "Specialty Microwave Corp", "SPECIALTY-MICROWAVE" }, { 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, 0xEDE000, 0xEDEFFF, "Smart Grid Networks", "SMART-GRID-NETWORKS" }, { 0x0050C2, 0xF36000, 0xF36FFF, "Visitech AS", "VISITECH-AS" }, { 0x0050C2, 0xF35000, 0xF35FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xF2C000, 0xF2CFFF, "Terratel Technology s.r.o.", "TERRATEL-S-R-O" }, { 0x0050C2, 0xF2E000, 0xF2EFFF, "H&L Instruments, LLC", "H-L-INSTRUMENTS-LLC" }, { 0x0050C2, 0xF10000, 0xF10FFF, "Wincor Nixdorf Sp. z o.o.", "WINCOR-NIXDORF-SP-Z-O-O" }, { 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, 0xEFC000, 0xEFCFFF, "Private", "PRIVATE" }, { 0x0050C2, 0xF49000, 0xF49FFF, "Green Instruments A/S", "GREEN-INSTRUMENTS-A/S" }, { 0x0050C2, 0xF41000, 0xF41FFF, "FairyDevices Inc.", "FAIRYDEVICES" }, { 0x0050C2, 0xF3D000, 0xF3DFFF, "Project service S.a.s", "PROJECT-SERVICE-S" }, { 0x0050C2, 0xF24000, 0xF24FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xF53000, 0xF53FFF, "BAYCOM OPTO-ELECTRONICS TECHNOLOGY CO.,LTD.", "BAYCOM-OPTO-ELECTRONICS" }, { 0x0050C2, 0xF22000, 0xF22FFF, "Harland Simon plc", "HARLAND-SIMON-PLC" }, { 0x0050C2, 0xF1A000, 0xF1AFFF, "Aqua Management", "AQUA-MANAGEMENT" }, { 0x0050C2, 0xF18000, 0xF18FFF, "Vitec Multimedia", "VITEC-MULTIMEDIA" }, { 0x0050C2, 0xECB000, 0xECBFFF, "FAL Corp", "FAL" }, { 0x0050C2, 0xEC9000, 0xEC9FFF, "Amsterdam Scientific Instruments BV", "AMSTERDAM-SCIENTIFIC-INSTRUMENTS" }, { 0x0050C2, 0xEA3000, 0xEA3FFF, "Subsea Systems, Inc.", "SUBSEA" }, { 0x0050C2, 0xEA1000, 0xEA1FFF, "TEX COMPUTER SRL", "TEX-SRL" }, { 0x0050C2, 0xEDA000, 0xEDAFFF, "Joint Stock Company Svyaz Inginiring M", "JOINT-STOCK-COMPANY-SVYAZ-INGINIRING-M" }, { 0x0050C2, 0xED3000, 0xED3FFF, "ECO MONITORING UTILITY SYSTEMS LTD", "ECO-MONITORING-UTILITY" }, { 0x0050C2, 0xE99000, 0xE99FFF, "UV Networks, Inc.", "UV-NETWORKS" }, { 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, 0xE7B000, 0xE7BFFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x0050C2, 0xE78000, 0xE78FFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0xE85000, 0xE85FFF, "Cosmo Life Co.,Ltd", "COSMO-LIFE" }, { 0x0050C2, 0xE83000, 0xE83FFF, "Witree Co.,Ltd", "WITREE" }, { 0x0050C2, 0xEAB000, 0xEABFFF, "Warp9 Tech Design, Inc.", "WARP9-TECH-DESIGN" }, { 0x0050C2, 0xEAD000, 0xEADFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xEC1000, 0xEC1FFF, "ANT Group s.r.l", "ANT-GROUP-S-R-L" }, { 0x0050C2, 0xEBF000, 0xEBFFFF, "CIVOLUTION", "CIVOLUTION" }, { 0x0050C2, 0xEB5000, 0xEB5FFF, "Covidence A/S", "COVIDENCE-A/S" }, { 0x0050C2, 0xEB7000, 0xEB7FFF, "Saab AB", "SAAB-AB" }, { 0x0050C2, 0xE6D000, 0xE6DFFF, "Allerta Inc", "ALLERTA" }, { 0x0050C2, 0xE31000, 0xE31FFF, "ENSIS Co., Ltd.", "ENSIS" }, { 0x0050C2, 0xE1D000, 0xE1DFFF, "Holdline Tecnologia e Sistemas Ltda", "HOLDLINE-TECNOLOGIA-E-SISTEMAS-LTDA" }, { 0x0050C2, 0xE59000, 0xE59FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE63000, 0xE63FFF, "Prima sistemi", "PRIMA-SISTEMI" }, { 0x0050C2, 0xE4F000, 0xE4FFFF, "Wine Technology Marlborough", "WINE-MARLBOROUGH" }, { 0x0050C2, 0xE27000, 0xE27FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x0050C2, 0xE45000, 0xE45FFF, "Stichting Sunrise", "STICHTING-SUNRISE" }, { 0x0050C2, 0xE3B000, 0xE3BFFF, "Nanosolution Inc.", "NANOSOLUTION" }, { 0x0050C2, 0xDE9000, 0xDE9FFF, "Dacom West GmbH", "DACOM-WEST" }, { 0x0050C2, 0xDC4000, 0xDC4FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xDC1000, 0xDC1FFF, "Acrux Technology Limited", "ACRUX" }, { 0x0050C2, 0xDE2000, 0xDE2FFF, "SEQUTEC INC", "SEQUTEC" }, { 0x0050C2, 0xDDF000, 0xDDFFFF, "Device GmbH", "DEVICE" }, { 0x0050C2, 0xE00000, 0xE00FFF, "Aplex Technology Inc.", "APLEX" }, { 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, 0xDCB000, 0xDCBFFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xDEC000, 0xDECFFF, "VendNovation LLC", "VENDNOVATION-LLC" }, { 0x0050C2, 0xE0A000, 0xE0AFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xE02000, 0xE02FFF, "Cleverscope", "CLEVERSCOPE" }, { 0x0050C2, 0xE12000, 0xE12FFF, "Kago Electronics BV", "KAGO-ELECTRONICS" }, { 0x0050C2, 0xE11000, 0xE11FFF, "RadioMobile Inc", "RADIOMOBILE" }, { 0x0050C2, 0xDF8000, 0xDF8FFF, "Tommotek (WA) Pty Ltd.", "TOMMOTEK-WA-PTY" }, { 0x0050C2, 0xDF6000, 0xDF6FFF, "HINO ENGINEERING, INC", "HINO-ENGINEERING" }, { 0x0050C2, 0xDAC000, 0xDACFFF, "RFL Electronics", "RFL-ELECTRONICS" }, { 0x0050C2, 0xDB0000, 0xDB0FFF, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x0050C2, 0xDAF000, 0xDAFFFF, "eumig industrie-tv GmbH", "EUMIG-INDUSTRIE-TV" }, { 0x0050C2, 0xDAB000, 0xDABFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xDA7000, 0xDA7FFF, "Capton", "CAPTON" }, { 0x0050C2, 0xD7F000, 0xD7FFFF, "HMI Technologies", "HMI-TECHNOLOGIES" }, { 0x0050C2, 0xD7C000, 0xD7CFFF, "Microcubs Systems Pvt Ltd", "MICROCUBS-PVT" }, { 0x0050C2, 0xD75000, 0xD75FFF, "Collectric AB", "COLLECTRIC-AB" }, { 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, 0xD89000, 0xD89FFF, "Visual Telecommunication Network, Inc", "VISUAL-TELECOMMUNICATION-NETWORK" }, { 0x0050C2, 0xD86000, 0xD86FFF, "ECOMM ERA", "ECOMM-ERA" }, { 0x0050C2, 0xDBA000, 0xDBAFFF, "M.P. Electronics", "M-P-ELECTRONICS" }, { 0x0050C2, 0xDB7000, 0xDB7FFF, "SOREL GmbH Mikroelektronik", "SOREL-MIKROELEKTRONIK" }, { 0x0050C2, 0xDA4000, 0xDA4FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xD9D000, 0xD9DFFF, "Mistral Solutions Pvt. Ltd", "MISTRAL-SOLUTIONS-PVT" }, { 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, 0xD9A000, 0xD9AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD93000, 0xD93FFF, "Axlon AB", "AXLON-AB" }, { 0x0050C2, 0xD90000, 0xD90FFF, "Dumps Electronic", "DUMPS" }, { 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, 0xCCC000, 0xCCCFFF, "Smartech-technology", "SMARTECH" }, { 0x0050C2, 0xCC9000, 0xCC9FFF, "Promess GmbH", "PROMESS" }, { 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, 0xD0F000, 0xD0FFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 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, 0xD2D000, 0xD2DFFF, "Cadi Scientific Pte Ltd", "CADI-SCIENTIFIC-PTE" }, { 0x0050C2, 0xD23000, 0xD23FFF, "Bluestone Technology GmbH", "BLUESTONE" }, { 0x0050C2, 0xD37000, 0xD37FFF, "LJT & Associates, Inc.", "LJT-ASSOCIATES" }, { 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, 0xCDA000, 0xCDAFFF, "taskit GmbH", "TASKIT" }, { 0x0050C2, 0xD19000, 0xD19FFF, "Applied Medical Technologies, Inc DBA AirClean Systems", "APPLIED-MEDICAL-TECHNOLOGIES-DBA-AIRCLEAN" }, { 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, 0xCA5000, 0xCA5FFF, "YOKOWO CO.,LTD", "YOKOWO" }, { 0x0050C2, 0xCA1000, 0xCA1FFF, "Wayne Kerr Electronics", "WAYNE-KERR-ELECTRONICS" }, { 0x0050C2, 0xC9E000, 0xC9EFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xC9B000, 0xC9BFFF, "Sm electronic co.", "SM" }, { 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, 0xC52000, 0xC52FFF, "Smartfield, Inc.", "SMARTFIELD" }, { 0x0050C2, 0xC4F000, 0xC4FFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 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, 0xC66000, 0xC66FFF, "KS Beschallungstechnik GmbH", "KS-BESCHALLUNGSTECHNIK" }, { 0x0050C2, 0xC63000, 0xC63FFF, "Potter Electric Signal Company", "POTTER-ELECTRIC-SIGNAL-COMPANY" }, { 0x0050C2, 0xC60000, 0xC60FFF, "Integration Technologies Limited", "INTEGRATION-TECHNOLOGIES" }, { 0x0050C2, 0xCB9000, 0xCB9FFF, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0x0050C2, 0xCB8000, 0xCB8FFF, "Raith GmbH", "RAITH" }, { 0x0050C2, 0xCB5000, 0xCB5FFF, "Private", "PRIVATE" }, { 0x0050C2, 0xCB2000, 0xCB2FFF, "Moravian Instruments", "MORAVIAN-INSTRUMENTS" }, { 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, 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, 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, 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, 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, 0xBBE000, 0xBBEFFF, "Onlinepizza Norden AB", "ONLINEPIZZA-NORDEN-AB" }, { 0x0050C2, 0xBB8000, 0xBB8FFF, "MoeTronix", "MOETRONIX" }, { 0x0050C2, 0xBD2000, 0xBD2FFF, "Percello Ltd.", "PERCELLO" }, { 0x0050C2, 0xBC8000, 0xBC8FFF, "AGWTech Ltd", "AGWTECH" }, { 0x0050C2, 0xC14000, 0xC14FFF, "Spectronix Corporation", "SPECTRONIX" }, { 0x0050C2, 0xC11000, 0xC11FFF, "ART Antriebs- und Regeltechnik GmbH", "ART-ANTRIEBS--UND-REGELTECHNIK" }, { 0x0050C2, 0xC0E000, 0xC0EFFF, "AVItronic GmbH", "AVITRONIC" }, { 0x0050C2, 0xC0A000, 0xC0AFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xC07000, 0xC07FFF, "CIO Informatique Industrielle", "CIO-INFORMATIQUE-INDUSTRIELLE" }, { 0x0050C2, 0xBF6000, 0xBF6FFF, "NOLAM EMBEDDED SYSTEMS", "NOLAM-EMBEDDED" }, { 0x0050C2, 0xBF3000, 0xBF3FFF, "Wanco Inc.", "WANCO" }, { 0x0050C2, 0xBF0000, 0xBF0FFF, "AIM", "AIM" }, { 0x0050C2, 0xBE9000, 0xBE9FFF, "ZUCCHETTI SPA", "ZUCCHETTI-SPA" }, { 0x0050C2, 0xBEC000, 0xBECFFF, "DRS Laruel Technologies", "DRS-LARUEL-TECHNOLOGIES" }, { 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, 0xC04000, 0xC04FFF, "SoGEME", "SOGEME" }, { 0x0050C2, 0xBFD000, 0xBFDFFF, "Ernemann Cine Tec GmbH", "ERNEMANN-CINE-TEC" }, { 0x0050C2, 0xC00000, 0xC00FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xBFA000, 0xBFAFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xC24000, 0xC24FFF, "Qualnetics Corporation", "QUALNETICS" }, { 0x0050C2, 0xC19000, 0xC19FFF, "Ibercomp SA", "IBERCOMP" }, { 0x0050C2, 0xB0A000, 0xB0AFFF, "Indutherm Giesstechnologie GmbH", "INDUTHERM-GIESSTECHNOLOGIE" }, { 0x0050C2, 0xB46000, 0xB46FFF, "Mobileye", "MOBILEYE" }, { 0x0050C2, 0xB28000, 0xB28FFF, "Micromax Pty. Ltd.", "MICROMAX-PTY" }, { 0x0050C2, 0xB1E000, 0xB1EFFF, "Abbott Medical Optics", "ABBOTT-MEDICAL-OPTICS" }, { 0x0050C2, 0xB3C000, 0xB3CFFF, "JanasCard", "JANASCARD" }, { 0x0050C2, 0xB32000, 0xB32FFF, "Byres Security Inc", "BYRES-SECURITY" }, { 0x0050C2, 0xB14000, 0xB14FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xB00000, 0xB00FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 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, 0xA6F000, 0xA6FFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xA6C000, 0xA6CFFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x0050C2, 0xA65000, 0xA65FFF, "Mark-O-Print GmbH", "MARK-O-PRINT" }, { 0x0050C2, 0xA62000, 0xA62FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0xA5B000, 0xA5BFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA5C000, 0xA5CFFF, "JSC Component-ASU", "JSC-COMPONENT-ASU" }, { 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, 0xA58000, 0xA58FFF, "EPL", "EPL" }, { 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, 0xA47000, 0xA47FFF, "PRIMETECH ENGINEERING CORP.", "PRIMETECH-ENGINEERING" }, { 0x0050C2, 0xA48000, 0xA48FFF, "Thales Optronics Limited", "THALES-OPTRONICS" }, { 0x0050C2, 0xAE3000, 0xAE3FFF, "PSD", "PSD" }, { 0x0050C2, 0xAD9000, 0xAD9FFF, "elettrondata srl", "ELETTRONDATA-SRL" }, { 0x0050C2, 0xABB000, 0xABBFFF, "Volantic AB", "VOLANTIC-AB" }, { 0x0050C2, 0xAB1000, 0xAB1FFF, "Bitmanufaktur GmbH", "BITMANUFAKTUR" }, { 0x0050C2, 0xACF000, 0xACFFFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0xAC5000, 0xAC5FFF, "E-Motion System, Inc.", "E-MOTION-SYSTEM" }, { 0x0050C2, 0xAA7000, 0xAA7FFF, "Endeas Oy", "ENDEAS-OY" }, { 0x0050C2, 0xAF6000, 0xAF6FFF, "Energid", "ENERGID" }, { 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, 0x9D1000, 0x9D1FFF, "Bladelius Design Group AB", "BLADELIUS-DESIGN-GROUP-AB" }, { 0x0050C2, 0x9B4000, 0x9B4FFF, "EUKREA ELECTROMATIQUE SARL", "EUKREA-ELECTROMATIQUE-SARL" }, { 0x0050C2, 0x9B0000, 0x9B0FFF, "Ebru GmbH", "EBRU" }, { 0x0050C2, 0x9AD000, 0x9ADFFF, "Chronos Technology Ltd.", "CHRONOS" }, { 0x0050C2, 0x9AA000, 0x9AAFFF, "TEKO TELECOM SpA", "TEKO-TELECOM-SPA" }, { 0x0050C2, 0x9A6000, 0x9A6FFF, "Metodo2", "METODO2" }, { 0x0050C2, 0xA10000, 0xA10FFF, "Essential Design & Integration P/L", "ESSENTIAL-DESIGN-INTEGRATION-P/L" }, { 0x0050C2, 0xA0C000, 0xA0CFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA0D000, 0xA0DFFF, "CHARLYROBOT", "CHARLYROBOT" }, { 0x0050C2, 0xA09000, 0xA09FFF, "Innovative American Technology", "INNOVATIVE-AMERICAN" }, { 0x0050C2, 0xA06000, 0xA06FFF, "Cloos Schweisstechnik GmbH", "CLOOS-SCHWEISSTECHNIK" }, { 0x0050C2, 0xA03000, 0xA03FFF, "EEG Enterprises Inc", "EEG-ENTERPRISES" }, { 0x0050C2, 0x9FF000, 0x9FFFFF, "Humphrey Products", "HUMPHREY-PRODUCTS" }, { 0x0050C2, 0x9F9000, 0x9F9FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x9A0000, 0x9A0FFF, "Trs Systems, Inc.", "TRS" }, { 0x0050C2, 0x99C000, 0x99CFFF, "CaTs3 Limited", "CATS3" }, { 0x0050C2, 0x9A3000, 0x9A3FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 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, 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, 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, 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, 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, 0x9FC000, 0x9FCFFF, "ECTEC INC.", "ECTEC" }, { 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, 0x98C000, 0x98CFFF, "MGM-Devices Oy", "MGM-DEVICES-OY" }, { 0x0050C2, 0x989000, 0x989FFF, "Psigenics Corporation", "PSIGENICS" }, { 0x0050C2, 0x988000, 0x988FFF, "Pantel International", "PANTEL" }, { 0x0050C2, 0xA3E000, 0xA3EFFF, "DUEVI SNC DI MORA E SANTESE", "DUEVI-SNC-DI-MORA-E-SANTESE" }, { 0x0050C2, 0xA3A000, 0xA3AFFF, "Telecor Inc.", "TELECOR" }, { 0x0050C2, 0xA34000, 0xA34FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0xA30000, 0xA30FFF, "D-TA Systems", "D-TA" }, { 0x0050C2, 0xA2A000, 0xA2AFFF, "Custom Control Concepts", "CUSTOM-CONTROL-CONCEPTS" }, { 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, 0x91E000, 0x91EFFF, "Automation Tec", "AUTOMATION-TEC" }, { 0x0050C2, 0x917000, 0x917FFF, "CIRTEM", "CIRTEM" }, { 0x0050C2, 0x91A000, 0x91AFFF, "Xtone Networks", "XTONE-NETWORKS" }, { 0x0050C2, 0x7F4000, 0x7F4FFF, "Wireless Cables Inc", "WIRELESS-CABLES" }, { 0x0050C2, 0x945000, 0x945FFF, "Ex-i Flow Measurement Ltd.", "EX-I-FLOW-MEASUREMENT" }, { 0x0050C2, 0x942000, 0x942FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x93F000, 0x93FFFF, "TSB Solutions Inc.", "TSB-SOLUTIONS" }, { 0x0050C2, 0x93C000, 0x93CFFF, "FractureCode Corporation", "FRACTURECODE" }, { 0x0050C2, 0x969000, 0x969FFF, "Gehrke Kommunikationssysteme GmbH", "GEHRKE-KOMMUNIKATIONSSYSTEME" }, { 0x0050C2, 0x966000, 0x966FFF, "PCM Industries", "PCM-INDUSTRIES" }, { 0x0050C2, 0x914000, 0x914FFF, "IO-Connect", "IO-CONNECT" }, { 0x0050C2, 0x910000, 0x910FFF, "Autotank AB", "AUTOTANK-AB" }, { 0x0050C2, 0x90D000, 0x90DFFF, "EVK DI Kerschhaggl GmbH", "EVK-DI-KERSCHHAGGL" }, { 0x0050C2, 0x90A000, 0x90AFFF, "Board Level Limited", "BOARD-LEVEL" }, { 0x0050C2, 0x906000, 0x906FFF, "Gidel", "GIDEL" }, { 0x0050C2, 0x953000, 0x953FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x940000, 0x940FFF, "Phitek Systems Ltd.", "PHITEK" }, { 0x0050C2, 0x8EF000, 0x8EFFFF, "Technologies Sensio Inc", "TECHNOLOGIES-SENSIO" }, { 0x0050C2, 0x8FE000, 0x8FEFFF, "Cross Country Systems AB", "CROSS-COUNTRY-AB" }, { 0x0050C2, 0x8FB000, 0x8FBFFF, "Alfred Kuhse GmbH", "ALFRED-KUHSE" }, { 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, 0x84D000, 0x84DFFF, "BMTI", "BMTI" }, { 0x0050C2, 0x849000, 0x849FFF, "Design Analysis Associates, Inc.", "DESIGN-ANALYSIS-ASSOCIATES" }, { 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, 0x864000, 0x864FFF, "ATG Automatisierungstechnik GERA GmbH", "ATG-AUTOMATISIERUNGSTECHNIK-GERA" }, { 0x0050C2, 0x85D000, 0x85DFFF, "Ing. Knauseder Mechatronik GmbH", "ING-KNAUSEDER-MECHATRONIK" }, { 0x0050C2, 0x85A000, 0x85AFFF, "ART Spa", "ART-SPA" }, { 0x0050C2, 0x857000, 0x857FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x853000, 0x853FFF, "Ettus Research LLC", "ETTUS-RESEARCH-LLC" }, { 0x0050C2, 0x850000, 0x850FFF, "K.K. Rocky", "K-K-ROCKY" }, { 0x0050C2, 0x8E5000, 0x8E5FFF, "Berthel GmbH", "BERTHEL" }, { 0x0050C2, 0x8DB000, 0x8DBFFF, "DCOM Network Technology (Pty) Ltd", "DCOM-NETWORK-PTY" }, { 0x0050C2, 0x8D1000, 0x8D1FFF, "Bachmann Monitoring GmbH", "BACHMANN-MONITORING" }, { 0x0050C2, 0x882000, 0x882FFF, "WARECUBE,INC.", "WARECUBE" }, { 0x0050C2, 0x878000, 0x878FFF, "Acoustic Research Laboratories Pty Ltd", "ACOUSTIC-RESEARCH-LABORATORIES-PTY" }, { 0x0050C2, 0x86E000, 0x86EFFF, "HANYANG ELECTRIC CP., LTD", "HANYANG-ELECTRIC-CP" }, { 0x0050C2, 0x89B000, 0x89BFFF, "Sensata Technologies, Inc.", "SENSATA-TECHNOLOGIES" }, { 0x0050C2, 0x894000, 0x894FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x88C000, 0x88CFFF, "Z-App Systems", "Z-APP" }, { 0x0050C2, 0x8BD000, 0x8BDFFF, "Matrix Switch Corporation", "MATRIX-SWITCH" }, { 0x0050C2, 0x8B3000, 0x8B3FFF, "VTQ Videtronik GmbH", "VTQ-VIDETRONIK" }, { 0x0050C2, 0x8C7000, 0x8C7FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x8A9000, 0x8A9FFF, "Intelligent Security Systems", "INTELLIGENT-SECURITY" }, { 0x0050C2, 0x89F000, 0x89FFFF, "Datalink Technologies Gateways Inc.", "DATALINK-TECHNOLOGIES-GATEWAYS" }, { 0x0050C2, 0x7A9000, 0x7A9FFF, "Delta Tau Data Systems, Inc", "DELTA-TAU-DATA" }, { 0x0050C2, 0x7A6000, 0x7A6FFF, "ASIANA IDT", "ASIANA-IDT" }, { 0x0050C2, 0x7A3000, 0x7A3FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x79F000, 0x79FFFF, "ZAO NPC", "ZAO-NPC" }, { 0x0050C2, 0x79C000, 0x79CFFF, "Vital Systems Inc", "VITAL" }, { 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, 0x829000, 0x829FFF, "Intellectronika", "INTELLECTRONIKA" }, { 0x0050C2, 0x826000, 0x826FFF, "HEWI Heinrich Wilke GmbH", "HEWI-HEINRICH-WILKE" }, { 0x0050C2, 0x81F000, 0x81FFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x81C000, 0x81CFFF, "Telcom", "TELCOM" }, { 0x0050C2, 0x801000, 0x801FFF, "JANUS srl", "JANUS-SRL" }, { 0x0050C2, 0x7FE000, 0x7FEFFF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0050C2, 0x7F7000, 0x7F7FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x831000, 0x831FFF, "St Jude Medical, Inc.", "ST-JUDE-MEDICAL" }, { 0x0050C2, 0x7EA000, 0x7EAFFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x7E0000, 0x7E0FFF, "C&D Technologies, Inc", "C-D-TECHNOLOGIES" }, { 0x0050C2, 0x815000, 0x815FFF, "microC Design SRL", "MICROC-DESIGN-SRL" }, { 0x0050C2, 0x812000, 0x812FFF, "Femto SA", "FEMTO" }, { 0x0050C2, 0x80B000, 0x80BFFF, "Open Video, Inc.", "OPEN-VIDEO" }, { 0x0050C2, 0x808000, 0x808FFF, "ITB CompuPhase", "ITB-COMPUPHASE" }, { 0x0050C2, 0x75E000, 0x75EFFF, "Sky-Skan, Incorporated", "SKY-SKAN-INCORPORATED" }, { 0x0050C2, 0x757000, 0x757FFF, "E S P Technologies Ltd", "E-S-P-TECHNOLOGIES" }, { 0x0050C2, 0x754000, 0x754FFF, "Abeo Corporation", "ABEO" }, { 0x0050C2, 0x769000, 0x769FFF, "BES GmbH", "BES" }, { 0x0050C2, 0x761000, 0x761FFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x0050C2, 0x722000, 0x722FFF, "Centric TSolve BV", "CENTRIC-TSOLVE" }, { 0x0050C2, 0x718000, 0x718FFF, "illunis LLC", "ILLUNIS-LLC" }, { 0x0050C2, 0x799000, 0x799FFF, "AAVD", "AAVD" }, { 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, 0x70E000, 0x70EFFF, "AUDICO SYSTEMS OY", "AUDICO-OY" }, { 0x0050C2, 0x70A000, 0x70AFFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x736000, 0x736FFF, "Nika Ltd", "NIKA" }, { 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, 0x743000, 0x743FFF, "Elektro-Top 3000 Ltd.", "ELEKTRO-TOP-3000" }, { 0x0050C2, 0x740000, 0x740FFF, "McQuay China", "MCQUAY-CHINA" }, { 0x0050C2, 0x739000, 0x739FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x785000, 0x785FFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0x77E000, 0x77EFFF, "Cominfo Inc.", "COMINFO" }, { 0x0050C2, 0x774000, 0x774FFF, "GeoSIG Ltd.", "GEOSIG" }, { 0x0050C2, 0x74D000, 0x74DFFF, "Beceem Communications, Inc.", "BECEEM-COMMUNICATION" }, { 0x0050C2, 0x74A000, 0x74AFFF, "MONITOR ELECTRONICS LTD", "MONITOR-ELECTRONICS" }, { 0x0050C2, 0x6D3000, 0x6D3FFF, "DigiSensory technologies Pty Ltd", "DIGISENSORY-TECHNOLOGIES-PTY" }, { 0x0050C2, 0x6B5000, 0x6B5FFF, "TRIUMF", "TRIUMF" }, { 0x0050C2, 0x6AB000, 0x6ABFFF, "Softwareentwicklung", "SOFTWAREENTWICKLUNG" }, { 0x0050C2, 0x6A0000, 0x6A0FFF, "GFP Lab S.r.l.", "GFP-LAB-S-R-L" }, { 0x0050C2, 0x6F1000, 0x6F1FFF, "ITS Telecom", "ITS-TELECOM" }, { 0x0050C2, 0x6E7000, 0x6E7FFF, "Axis Network Technology", "AXIS-NETWORK" }, { 0x0050C2, 0x6DD000, 0x6DDFFF, "Zmicro Systems Inc", "ZMICRO" }, { 0x0050C2, 0x6C9000, 0x6C9FFF, "NETAMI", "NETAMI" }, { 0x0050C2, 0x6BF000, 0x6BFFFF, "Optoplan as", "OPTOPLAN-AS" }, { 0x0050C2, 0x67A000, 0x67AFFF, "CC Systems AB", "CC-AB" }, { 0x0050C2, 0x6FB000, 0x6FBFFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0x68E000, 0x68EFFF, "SELCO", "SELCO" }, { 0x0050C2, 0x684000, 0x684FFF, "REASON Tecnologia S.A.", "REASON-TECNOLOGIA" }, { 0x0050C2, 0x698000, 0x698FFF, "Navtech Radar Ltd", "NAVTECH-RADAR" }, { 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, 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, 0x614000, 0x614FFF, "Proserv", "PROSERV" }, { 0x0050C2, 0x611000, 0x611FFF, "Brookhaven National Laboratory", "BROOKHAVEN-NATIONAL-LABORATORY" }, { 0x0050C2, 0x60E000, 0x60EFFF, "Automation and Control Technology, Inc.", "AUTOMATION-AND-CONTROL" }, { 0x0050C2, 0x60D000, 0x60DFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x60A000, 0x60AFFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x5F6000, 0x5F6FFF, "CAMBRIDGE CONSULTANTS LTD", "CAMBRIDGE-CONSULTANTS" }, { 0x0050C2, 0x5F3000, 0x5F3FFF, "POSNET Polska S.A.", "POSNET-POLSKA" }, { 0x0050C2, 0x5F0000, 0x5F0FFF, "DIAS Infrared GmbH", "DIAS-INFRARED" }, { 0x0050C2, 0x607000, 0x607FFF, "Telecom FM", "TELECOM-FM" }, { 0x0050C2, 0x603000, 0x603FFF, "Cerus Corp", "CERUS" }, { 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, 0x648000, 0x648FFF, "Fidelity Comtech, Inc.", "FIDELITY-COMTECH" }, { 0x0050C2, 0x63D000, 0x63DFFF, "IDERs Inc", "IDERS" }, { 0x0050C2, 0x639000, 0x639FFF, "Qstreams Networks Inc.", "QSTREAMS-NETWORKS" }, { 0x0050C2, 0x666000, 0x666FFF, "Xworks NZ Limited", "XWORKS-NZ" }, { 0x0050C2, 0x65C000, 0x65CFFF, "VTZ d.o.o.", "VTZ-D-O-O" }, { 0x0050C2, 0x652000, 0x652FFF, "Wideco Sweden AB", "WIDECO-SWEDEN-AB" }, { 0x0050C2, 0x670000, 0x670FFF, "Naim Audio", "NAIM-AUDIO" }, { 0x0050C2, 0x5D2000, 0x5D2FFF, "DA-Design Oy", "DA-DESIGN-OY" }, { 0x0050C2, 0x5CF000, 0x5CFFFF, "Innomed Medical Inc", "INNOMED-MEDICAL" }, { 0x0050C2, 0x5CC000, 0x5CCFFF, "ENSEO", "ENSEO" }, { 0x0050C2, 0x5C8000, 0x5C8FFF, "Georgia Tech Research Institute", "GEORGIA-TECH-RESEARCH-INSTITUTE" }, { 0x0050C2, 0x5C9000, 0x5C9FFF, "Shenzhen Quanlong Technique Co.Ltd", "SHENZHEN-QUANLONG-TECHNIQUE" }, { 0x0050C2, 0x5B5000, 0x5B5FFF, "RAFAEL", "RAFAEL" }, { 0x0050C2, 0x5B1000, 0x5B1FFF, "Rosta Ltd", "ROSTA" }, { 0x0050C2, 0x5AB000, 0x5ABFFF, "Eaton Corporation Electrical Group Data Center Solutions - Pulizzi", "EATON-ELECTRICAL-GROUP-DATA-CENTER-SOLUTIONS---PULIZZI" }, { 0x0050C2, 0x5AE000, 0x5AEFFF, "CPS EUROPE B.V.", "CPS-EUROPE" }, { 0x0050C2, 0x5A7000, 0x5A7FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x5A4000, 0x5A4FFF, "Federal State Unitary Enterprise Experimental Factory for Sc", "FEDERAL-STATE-UNITARY-EXPERIMENTAL-FACTORY-FOR-SC" }, { 0x0050C2, 0x59D000, 0x59DFFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x594000, 0x594FFF, "Pixel Velocity, Inc.", "PIXEL-VELOCITY" }, { 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, 0x570000, 0x570FFF, "Ellex Medical Pty Ltd", "ELLEX-MEDICAL-PTY" }, { 0x0050C2, 0x5C2000, 0x5C2FFF, "Intuitive Surgical", "INTUITIVE-SURGICAL" }, { 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, 0x593000, 0x593FFF, "Broadlight", "BROADLIGHT" }, { 0x0050C2, 0x589000, 0x589FFF, "HORIBA MEDICAL", "HORIBA-MEDICAL" }, { 0x0050C2, 0x58A000, 0x58AFFF, "Dixell S.p.a.", "DIXELL-S-P-A" }, { 0x0050C2, 0x56C000, 0x56CFFF, "Targeted Technologies, LLC", "TARGETED-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x566000, 0x566FFF, "ubinetsys.co..ltd", "UBINETSYS" }, { 0x0050C2, 0x562000, 0x562FFF, "C21 Systems Limited", "C21" }, { 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, 0x5EC000, 0x5ECFFF, "ASiS Technologies Pte Ltd", "ASIS-TECHNOLOGIES-PTE" }, { 0x0050C2, 0x5E9000, 0x5E9FFF, "Micro Technology Services Inc.", "MICRO-SERVICES" }, { 0x0050C2, 0x5E6000, 0x5E6FFF, "Musatel", "MUSATEL" }, { 0x0050C2, 0x5E2000, 0x5E2FFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x0050C2, 0x5DF000, 0x5DFFFF, "Gnutek Ltd.", "GNUTEK" }, { 0x0050C2, 0x524000, 0x524FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 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, 0x4EC000, 0x4ECFFF, "Thales Defence and Security Systems GmbH", "THALES-DEFENCE-AND-SECURITY" }, { 0x0050C2, 0x4E5000, 0x4E5FFF, "Sedo Systems Ltd", "SEDO" }, { 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, 0x4F9000, 0x4F9FFF, "RTDS Technologies Inc.", "RTDS-TECHNOLOGIES" }, { 0x0050C2, 0x080000, 0x080FFF, "AIM", "AIM" }, { 0x0050C2, 0x4F6000, 0x4F6FFF, "REAL D", "REAL-D" }, { 0x0050C2, 0x4EF000, 0x4EFFFF, "Creative Retail Entertainment", "CREATIVE-RETAIL-ENTERTAINMENT" }, { 0x0050C2, 0x51A000, 0x51AFFF, "SpeasTech, Inc.", "SPEASTECH" }, { 0x0050C2, 0x484000, 0x484FFF, "Kooltech LLC", "KOOLTECH-LLC" }, { 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, 0x45C000, 0x45CFFF, "Deister Electronic GmbH", "DEISTER" }, { 0x0050C2, 0x459000, 0x459FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 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, 0x46A000, 0x46AFFF, "ISE GmbH", "ISE" }, { 0x0050C2, 0x466000, 0x466FFF, "LONAP Limited", "LONAP" }, { 0x0050C2, 0x463000, 0x463FFF, "Codem Systems, Inc.", "CODEM" }, { 0x0050C2, 0x460000, 0x460FFF, "Vitelnet", "VITELNET" }, { 0x0050C2, 0x44A000, 0x44AFFF, "ELETTRONICA SANTERNO SPA", "ELETTRONICA-SANTERNO-SPA" }, { 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, 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, 0x47A000, 0x47AFFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x470000, 0x470FFF, "Cybectec inc.", "CYBECTEC" }, { 0x0050C2, 0x46D000, 0x46DFFF, "Paul Scherrer Institut (PSI)", "PAUL-SCHERRER-INSTITUT-PSI" }, { 0x0050C2, 0x498000, 0x498FFF, "Quartet Technology, Inc.", "QUARTET" }, { 0x0050C2, 0x48E000, 0x48EFFF, "Teledyne Tekmar", "TELEDYNE-TEKMAR" }, { 0x0050C2, 0x3AB000, 0x3ABFFF, "taskit Rechnertechnik GmbH", "TASKIT-RECHNERTECHNIK" }, { 0x0050C2, 0x3A4000, 0x3A4FFF, "Silvertree Engineering Ltd", "SILVERTREE-ENGINEERING" }, { 0x0050C2, 0x3A7000, 0x3A7FFF, "Elektrotechnik & Elektronik Oltmann GmbH", "ELEKTROTECHNIK-ELEKTRONIK-OLTMANN" }, { 0x0050C2, 0x3A1000, 0x3A1FFF, "Samsoft", "SAMSOFT" }, { 0x0050C2, 0x422000, 0x422FFF, "ads-tec GmbH", "ADS-TEC" }, { 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, 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, 0x3F0000, 0x3F0FFF, "megatec electronic GmbH", "MEGATEC" }, { 0x0050C2, 0x3EC000, 0x3ECFFF, "Teneros", "TENEROS" }, { 0x0050C2, 0x3E4000, 0x3E4FFF, "CUE, a.s.", "CUE-A-S" }, { 0x0050C2, 0x3E5000, 0x3E5FFF, "Vacon Plc", "VACON-PLC" }, { 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, 0x3CC000, 0x3CCFFF, "LINKWELL TELESYSTEMS PRIVATE LIMITED", "LINKWELL-TELESYSTEMS-PRIVATE" }, { 0x0050C2, 0x3C9000, 0x3C9FFF, "Dilax Intelcom AG", "DILAX-INTELCOM" }, { 0x0050C2, 0x3C5000, 0x3C5FFF, "Silicon Optix Canada Inc.", "SILICON-OPTIX-CANADA" }, { 0x0050C2, 0x43C000, 0x43CFFF, "Ducommun LaBarge Technologies, Inc", "DUCOMMUN-LABARGE-TECHNOLOGIES" }, { 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, 0x3C2000, 0x3C2FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0x3BF000, 0x3BFFFF, "Audio Processing Technology Ltd", "AUDIO-PROCESSING" }, { 0x0050C2, 0x3BC000, 0x3BCFFF, "Tyzx, Inc.", "TYZX" }, { 0x0050C2, 0x3B5000, 0x3B5FFF, "NEC TOKIN Corporation", "NEC-TOKIN" }, { 0x0050C2, 0x3B2000, 0x3B2FFF, "Tennessee Valley Authority", "TENNESSEE-VALLEY-AUTHORITY" }, { 0x0050C2, 0x42F000, 0x42FFFF, "Win4NET", "WIN4NET" }, { 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, 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, 0x393000, 0x393FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 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, 0x352000, 0x352FFF, "LUCEO", "LUCEO" }, { 0x0050C2, 0x34F000, 0x34FFFF, "North Pole Engineering, Inc.", "NORTH-POLE-ENGINEERING" }, { 0x0050C2, 0x34B000, 0x34BFFF, "Ecutel Systems, Inc.", "ECUTEL" }, { 0x0050C2, 0x345000, 0x345FFF, "ACT", "ACT" }, { 0x0050C2, 0x348000, 0x348FFF, "KoolSpan, Inc.", "KOOLSPAN" }, { 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, 0x363000, 0x363FFF, "Septentrio nv/sa", "SEPTENTRIO-NV/" }, { 0x0050C2, 0x359000, 0x359FFF, "Kramer Electronics Ltd.", "KRAMER-ELECTRONICS" }, { 0x0050C2, 0x327000, 0x327FFF, "Dornier GmbH", "DORNIER" }, { 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, 0x2AE000, 0x2AEFFF, "Quest Retail Technology Pty Ltd", "QUEST-RETAIL-PTY" }, { 0x0050C2, 0x2A4000, 0x2A4FFF, "Xipher Embedded Networking", "XIPHER-EMBEDDED-NETWORKING" }, { 0x0050C2, 0x268000, 0x268FFF, "Parabit Systems", "PARABIT" }, { 0x0050C2, 0x29A000, 0x29AFFF, "Packet Techniques Inc.", "PACKET-TECHNIQUES" }, { 0x0050C2, 0x27C000, 0x27CFFF, "Danlaw Inc", "DANLAW" }, { 0x0050C2, 0x272000, 0x272FFF, "Verex Technology", "VEREX" }, { 0x0050C2, 0x290000, 0x290FFF, "EBNEURO SPA", "EBNEURO-SPA" }, { 0x0050C2, 0x286000, 0x286FFF, "ATEME", "ATEME" }, { 0x0050C2, 0x205000, 0x205FFF, "SystIng", "SYSTING" }, { 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, 0x1EF000, 0x1EFFFF, "M2 Technology Pty Ltd", "M2-PTY" }, { 0x0050C2, 0x1F0000, 0x1F0FFF, "EXI Wireless Systems Inc.", "EXI-WIRELESS" }, { 0x0050C2, 0x1EB000, 0x1EBFFF, "Data Respons A/S", "DATA-RESPONS-A/S" }, { 0x0050C2, 0x1E8000, 0x1E8FFF, "Metrotech", "METROTECH" }, { 0x0050C2, 0x1E1000, 0x1E1FFF, "Automaatiotekniikka Seppo Saari Oy", "AUTOMAATIOTEKNIIKKA-SEPPO-SAARI-OY" }, { 0x0050C2, 0x1DE000, 0x1DEFFF, "ReliOn Inc.", "RELION" }, { 0x0050C2, 0x241000, 0x241FFF, "Contronics Automacao Ltda", "CONTRONICS-AUTOMACAO-LTDA" }, { 0x0050C2, 0x237000, 0x237FFF, "Tandata Systems Ltd", "TANDATA" }, { 0x0050C2, 0x22D000, 0x22DFFF, "asetek Inc.", "ASETEK" }, { 0x0050C2, 0x223000, 0x223FFF, "visicontrol GmbH", "VISICONTROL" }, { 0x0050C2, 0x219000, 0x219FFF, "Aeroflex GmbH", "AEROFLEX" }, { 0x0050C2, 0x20F000, 0x20FFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x209000, 0x209FFF, "LK Ltd", "LK" }, { 0x0050C2, 0x24B000, 0x24BFFF, "Azimuth Systems, Inc.", "AZIMUTH" }, { 0x0050C2, 0x25E000, 0x25EFFF, "MITE Hradec Kralove, s.r.o.", "MITE-HRADEC-KRALOVE-S-R-O" }, { 0x0050C2, 0x188000, 0x188FFF, "dresden-elektronik", "DRESDEN-ELEKTRONIK" }, { 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, 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, 0x1C3000, 0x1C3FFF, "TT electronic manufacturing services ltd", "TT-MANUFACTURING-SERVICES" }, { 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, 0x1C4000, 0x1C4FFF, "Palm Solutions Group", "PALM-SOLUTIONS-GROUP" }, { 0x0050C2, 0x1BA000, 0x1BAFFF, "INTERZEAG AG", "INTERZEAG" }, { 0x0050C2, 0x1B6000, 0x1B6FFF, "DTS, Inc.", "DTS" }, { 0x0050C2, 0x1B0000, 0x1B0FFF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0x0050C2, 0x1AC000, 0x1ACFFF, "Beckmann+Egle GmbH", "BECKMANN+EGLE" }, { 0x0050C2, 0x17B000, 0x17BFFF, "Broadstorm Telecom", "BROADSTORM-TELECOM" }, { 0x0050C2, 0x178000, 0x178FFF, "Partner Voxstream A/S", "PARTNER-VOXSTREAM-A/S" }, { 0x0050C2, 0x175000, 0x175FFF, "Sei S.p.A.", "SEI-S-P-A" }, { 0x0050C2, 0x171000, 0x171FFF, "Quantronix, Inc.", "QUANTRONIX" }, { 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, 0x19C000, 0x19CFFF, "Artec Design", "ARTEC-DESIGN" }, { 0x0050C2, 0x198000, 0x198FFF, "PotsTek, Inc", "POTSTEK" }, { 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, 0x00B000, 0x00BFFF, "IO Limited", "IO" }, { 0x0050C2, 0x015000, 0x015FFF, "Leroy Automatique Industrielle", "LEROY-AUTOMATIQUE-INDUSTRIELLE" }, { 0x0050C2, 0x162000, 0x162FFF, "Teseda Corporation", "TESEDA" }, { 0x0050C2, 0x15B000, 0x15BFFF, "Dune Networks", "DUNE-NETWORKS" }, { 0x0050C2, 0x151000, 0x151FFF, "Redux Communications Ltd.", "REDUX-COMMUNICATION" }, { 0x0050C2, 0x144000, 0x144FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x147000, 0x147FFF, "UniSUR", "UNISUR" }, { 0x0050C2, 0x13A000, 0x13AFFF, "Tex Computer SRL", "TEX-SRL" }, { 0x0050C2, 0x13D000, 0x13DFFF, "Formula One Management Ltd.", "FORMULA-ONE-MANAGEMENT" }, { 0x0050C2, 0x165000, 0x165FFF, "IPCAST", "IPCAST" }, { 0x0050C2, 0x133000, 0x133FFF, "ChipWrights, Inc.", "CHIPWRIGHTS" }, { 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, 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, 0x126000, 0x126FFF, "Marvell Hispana S.L.", "MARVELL-HISPANA-S-L" }, { 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, 0x0E0000, 0x0E0FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0x0B2000, 0x0B2FFF, "R F Micro Devices", "R-F-MICRO-DEVICES" }, { 0x0050C2, 0x0AF000, 0x0AFFFF, "Latus Lightworks, Inc.", "LATUS-LIGHTWORKS" }, { 0x0050C2, 0x0C2000, 0x0C2FFF, "Alchemy Semiconductor, Inc.", "ALCHEMY-SEMICONDUCTOR" }, { 0x0050C2, 0x0C6000, 0x0C6FFF, "Advanced Medical Information Technologies, Inc.", "ADVANCED-MEDICAL-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x0AB000, 0x0ABFFF, "Fastware.Net, LLC", "FASTWARE-NET-LLC" }, { 0x0050C2, 0x0A7000, 0x0A7FFF, "WaterCove Networks", "WATERCOVE-NETWORKS" }, { 0x0050C2, 0x0CB000, 0x0CBFFF, "STUDIEL", "STUDIEL" }, { 0x0050C2, 0x0D6000, 0x0D6FFF, "Inco Startec GmbH", "INCO-STARTEC" }, { 0x0050C2, 0x0B9000, 0x0B9FFF, "Helmut Mauell GmbH", "HELMUT-MAUELL" }, { 0x0050C2, 0x0BC000, 0x0BCFFF, "Infolink Software AG", "INFOLINK-SOFTWARE" }, { 0x0050C2, 0x077000, 0x077FFF, "Saco Smartvision Inc.", "SACO-SMARTVISION" }, { 0x0050C2, 0x070000, 0x070FFF, "Katchall Technologies Group", "KATCHALL-TECHNOLOGIES-GROUP" }, { 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, 0x0A1000, 0x0A1FFF, "Visable Genetics, Inc.", "VISABLE-GENETICS" }, { 0x0050C2, 0x09D000, 0x09DFFF, "ZELPOS", "ZELPOS" }, { 0x0050C2, 0x09B000, 0x09BFFF, "Seffle Instrument AB", "SEFFLE-INSTRUMENT-AB" }, { 0x0050C2, 0x087000, 0x087FFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 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, 0x040000, 0x040FFF, "MiSPO Co., Ltd.", "MISPO" }, { 0x0050C2, 0x03D000, 0x03DFFF, "ISDN Gateway Technology AG", "ISDN-GATEWAY" }, { 0x0050C2, 0x03B000, 0x03BFFF, "VNR Electronique SA", "VNR-ELECTRONIQUE" }, { 0x0050C2, 0x03A000, 0x03AFFF, "PLLB Elettronica SPA", "PLLB-ELETTRONICA-SPA" }, { 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, 0x054000, 0x054FFF, "Optionexist Limited", "OPTIONEXIST" }, { 0x0050C2, 0x04E000, 0x04EFFF, "Industrial Electronic Engineers, Inc.", "INDUSTRIAL-ENGINEERS" }, { 0x0050C2, 0x050000, 0x050FFF, "Dataprobe, Inc.", "DATAPROBE" }, { 0x0050C2, 0x033000, 0x033FFF, "Doble Engineering Company", "DOBLE-ENGINEERING-COMPANY" }, { 0x0050C2, 0x05D000, 0x05DFFF, "Ignitus Communications, LLC", "IGNITUS-COMMUNICATION-LLC" }, { 0x0050C2, 0x068000, 0x068FFF, "Seabridge", "SEABRIDGE" }, { 0x0050C2, 0x04A000, 0x04AFFF, "Telecom Analysis Systems, LP", "TELECOM-ANALYSIS-LP" }, { 0x0050C2, 0x01F000, 0x01FFFF, "KBS Industrieelektronik GmbH", "KBS-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0x01C000, 0x01CFFF, "Tadiran Scopus", "TADIRAN-SCOPUS" }, { 0x0050C2, 0x006000, 0x006FFF, "Project Management Enterprises, Inc.", "PROJECT-MANAGEMENT-ENTERPRISES" }, { 0x0050C2, 0x029000, 0x029FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0x026000, 0x026FFF, "Abatis Systems Corp.", "ABATIS" }, { 0x0050C2, 0x030000, 0x030FFF, "Lockheed Martin Tactical Defense Systems Eagan", "LOCKHEED-MARTIN-TACTICAL-DEFENSE-EAGAN" }, { 0x0050C2, 0x012000, 0x012FFF, "Floware System Solutions Ltd.", "FLOWARE-SYSTEM-SOLUTIONS" }, { 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, 0x1E1000, 0x1E1FFF, "AD QUALITE", "AD-QUALITE" }, { 0x40D855, 0x1DF000, 0x1DFFFF, "Chengdu Meihuan Technology Co.,Ltd", "CHENGDU-MEIHUAN" }, { 0x40D855, 0x1C1000, 0x1C1FFF, "Triamec Motion AG", "TRIAMEC-MOTION" }, { 0x40D855, 0x1C0000, 0x1C0FFF, "NPB Automation AB", "NPB-AUTOMATION-AB" }, { 0x40D855, 0x1B8000, 0x1B8FFF, "Orion Systems, Inc", "ORION" }, { 0x40D855, 0x19A000, 0x19AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x40D855, 0x199000, 0x199FFF, "PRESSOL Schmiergeraete GmbH", "PRESSOL-SCHMIERGERAETE" }, { 0x40D855, 0x197000, 0x197FFF, "Berg Cloud Limited", "BERG-CLOUD" }, { 0x40D855, 0x173000, 0x173FFF, "Contec Steuerungstechnik & Automation GmbH", "CONTEC-STEUERUNGSTECHNIK-AUTOMATION" }, { 0x40D855, 0x175000, 0x175FFF, "AHB Systeme GmbH", "AHB-SYSTEME" }, { 0x40D855, 0x1A2000, 0x1A2FFF, "HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.", "HIPODROMO-DE-AGUA-CALIENTE-DE-C-V" }, { 0x40D855, 0x1B0000, 0x1B0FFF, "Shin-ei Electronic Measuring Co.,Ltd.", "SHIN-EI-MEASURING" }, { 0x40D855, 0x1AC000, 0x1ACFFF, "ELAN SYSTEMS", "ELAN" }, { 0x40D855, 0x168000, 0x168FFF, "OPASCA Systems GmbH", "OPASCA" }, { 0x40D855, 0x167000, 0x167FFF, "Assembly Contracts Ltd", "ASSEMBLY-CONTRACTS" }, { 0x40D855, 0x169000, 0x169FFF, "Photop Koncent", "PHOTOP-KONCENT" }, { 0x40D855, 0x180000, 0x180FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x40D855, 0x19F000, 0x19FFFF, "Patria Aviation Oy", "PATRIA-AVIATION-OY" }, { 0x40D855, 0x1A1000, 0x1A1FFF, "KRONOTECH SRL", "KRONOTECH-SRL" }, { 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, 0x182000, 0x182FFF, "Georg Neumann GmbH", "GEORG-NEUMANN" }, { 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, 0x133000, 0x133FFF, "Tattile srl", "TATTILE-SRL" }, { 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, 0x102000, 0x102FFF, "Power Electronics", "POWER-ELECTRONICS" }, { 0x40D855, 0x100000, 0x100FFF, "TASK SISTEMAS DE COMPUTACAO S.A.", "TASK-SISTEMAS-DE-COMPUTACAO" }, { 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, 0x15A000, 0x15AFFF, "DORLET S.A.U", "DORLET-U" }, { 0x40D855, 0x126000, 0x126FFF, "TTI LTD", "TTI" }, { 0x40D855, 0x119000, 0x119FFF, "OOO Group of Industrial Technologies", "OOO-GROUP-OF-INDUSTRIAL-TECHNOLOGIES" }, { 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, 0x152000, 0x152FFF, "Home Automation Europe", "HOME-AUTOMATION-EUROPE" }, { 0x40D855, 0x147000, 0x147FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x148000, 0x148FFF, "SEIKO TIME SYSTEMS INC.", "SEIKO-TIME" }, { 0x40D855, 0x098000, 0x098FFF, "Dave Srl", "DAVE-SRL" }, { 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, 0x0E2000, 0x0E2FFF, "Keocko International", "KEOCKO" }, { 0x40D855, 0x0E0000, 0x0E0FFF, "Richter", "RICHTER" }, { 0x40D855, 0x0DF000, 0x0DFFFF, "Xadi Inc", "XADI" }, { 0x40D855, 0x0A7000, 0x0A7FFF, "First Design System Inc.", "FIRST-DESIGN-SYSTEM" }, { 0x40D855, 0x0D5000, 0x0D5FFF, "Shimizu Electric Co., Ltd.", "SHIMIZU-ELECTRIC" }, { 0x40D855, 0x0A5000, 0x0A5FFF, "WooshCom Corporation", "WOOSHCOM" }, { 0x40D855, 0x09B000, 0x09BFFF, "Tokyo Denki Gijutsu Kogyo", "TOKYO-DENKI-GIJUTSU-KOGYO" }, { 0x40D855, 0x09A000, 0x09AFFF, "CoherentPlus Sdn Bhd", "COHERENTPLUS-SDN-BHD" }, { 0x40D855, 0x0EC000, 0x0ECFFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x40D855, 0x0ED000, 0x0EDFFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x40D855, 0x0EA000, 0x0EAFFF, "A-Z-E", "A-Z-E" }, { 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, 0x0B2000, 0x0B2FFF, "Ever Trend Technology Development Limited", "EVER-TREND-DEVELOPMENT" }, { 0x40D855, 0x0C0000, 0x0C0FFF, "ACT", "ACT" }, { 0x40D855, 0x04D000, 0x04DFFF, "MACHINEPERFORMANCE ApS", "MACHINEPERFORMANCE-APS" }, { 0x40D855, 0x07B000, 0x07BFFF, "IPS Technology Limited", "IPS" }, { 0x40D855, 0x079000, 0x079FFF, "DelfiSolutions A/S", "DELFISOLUTIONS-A/S" }, { 0x40D855, 0x058000, 0x058FFF, "Energy Team S.p.A.", "ENERGY-TEAM-S-P-A" }, { 0x40D855, 0x029000, 0x029FFF, "Depro Electronique", "DEPRO-ELECTRONIQUE" }, { 0x40D855, 0x021000, 0x021FFF, "SMT D.O.O.", "SMT-D-O-O" }, { 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, 0x036000, 0x036FFF, "Schweers informationstechnologie GmbH", "SCHWEERS-INFORMATIONSTECHNOLOGIE" }, { 0x40D855, 0x034000, 0x034FFF, "Dacom West GmbH", "DACOM-WEST" }, { 0x40D855, 0x066000, 0x066FFF, "TeraTron GmbH", "TERATRON" }, { 0x40D855, 0x086000, 0x086FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x40D855, 0x06F000, 0x06FFFF, "DORLET SA", "DORLET" }, { 0x0050C2, 0xFFE000, 0xFFEFFF, "Sensata Technologies", "SENSATA-TECHNOLOGIES" }, { 0x0050C2, 0xFFB000, 0xFFBFFF, "SEFRAM", "SEFRAM" }, { 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" }, { 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, 0xFC3000, 0xFC3FFF, "HSDC Sp. z o.o.", "HSDC-SP-Z-O-O" }, { 0x0050C2, 0xFD3000, 0xFD3FFF, "Aster Electric Co.,Ltd.", "ASTER-ELECTRIC" }, { 0x0050C2, 0xFCD000, 0xFCDFFF, "Jinyoung Contech", "JINYOUNG-CONTECH" }, { 0x0050C2, 0xFC9000, 0xFC9FFF, "Mehta Tech, Inc.", "MEHTA-TECH" }, { 0x0050C2, 0xFBF000, 0xFBFFFF, "MYLOGIC", "MYLOGIC" }, { 0x0050C2, 0xFB9000, 0xFB9FFF, "Coral Telecom Ltd", "CORAL-TELECOM" }, { 0x0050C2, 0xFB5000, 0xFB5FFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x0050C2, 0xFF4000, 0xFF4FFF, "Burk Technology", "BURK" }, { 0x0050C2, 0xFF1000, 0xFF1FFF, "DiTEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0xFEB000, 0xFEBFFF, "Axible Technologies", "AXIBLE-TECHNOLOGIES" }, { 0x0050C2, 0xFE7000, 0xFE7FFF, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 0x0050C2, 0xFE1000, 0xFE1FFF, "dotOcean", "DOTOCEAN" }, { 0x0050C2, 0xFDD000, 0xFDDFFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0xFD7000, 0xFD7FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xFFF000, 0xFFFFFF, "MSR-Solutions GmbH", "MSR-SOLUTIONS" }, { 0x40D855, 0x002000, 0x002FFF, "Hangzhou Chenxiao Technologies Co. Ltd.", "HANGZHOU-CHENXIAO-TECHNOLOGIES" }, { 0x0050C2, 0xF96000, 0xF96FFF, "JLCooper Electronics", "JLCOOPER-ELECTRONICS" }, { 0x0050C2, 0xF93000, 0xF93FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xF64000, 0xF64FFF, "Chrisso Technologies LLC", "CHRISSO-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xF61000, 0xF61FFF, "Brauch Elektronik GmbH&Co.KG", "BRAUCH-ELEKTRONIK" }, { 0x0050C2, 0xF8C000, 0xF8CFFF, "UBSTechnology Co., Ltd", "UBSTECHNOLOGY" }, { 0x0050C2, 0xF89000, 0xF89FFF, "CSA Engineering AG", "CSA-ENGINEERING" }, { 0x0050C2, 0xF82000, 0xF82FFF, "Sincair Systems International", "SINCAIR" }, { 0x0050C2, 0xFAB000, 0xFABFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xFAC000, 0xFACFFF, "ADETEL GROUP", "ADETEL-GROUP" }, { 0x0050C2, 0xF5A000, 0xF5AFFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x0050C2, 0xF57000, 0xF57FFF, "Reach Technologies Inc.", "REACH-TECHNOLOGIES" }, { 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, 0xF9E000, 0xF9EFFF, "Matsusada Precision Inc.", "MATSUSADA-PRECISION" }, { 0x0050C2, 0xF6E000, 0xF6EFFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0xF6B000, 0xF6BFFF, "Algodue Elettronica Srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x0050C2, 0xFAF000, 0xFAFFFF, "Vremya-CH JSC", "VREMYA-CH-JSC" }, { 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, 0xEEE000, 0xEEEFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xF33000, 0xF33FFF, "Applied Micro Electronics AME BV", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0xF30000, 0xF30FFF, "Miris AB", "MIRIS-AB" }, { 0x0050C2, 0xF29000, 0xF29FFF, "RADYNE CORPORATION", "RADYNE" }, { 0x0050C2, 0xED8000, 0xED8FFF, "AVocation Systems, Inc.", "AVOCATION" }, { 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, 0xF26000, 0xF26FFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0xF1F000, 0xF1FFFF, "Verified Energy, LLC.", "VERIFIED-ENERGY-LLC" }, { 0x0050C2, 0xF1C000, 0xF1CFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 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, 0xF50000, 0xF50FFF, "Moritex Corporation", "MORITEX" }, { 0x0050C2, 0xF4D000, 0xF4DFFF, "KNOWHOW INFOCOM INC.", "KNOWHOW-INFOCOM" }, { 0x0050C2, 0xF08000, 0xF08FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF02000, 0xF02FFF, "BMR", "BMR" }, { 0x0050C2, 0xF01000, 0xF01FFF, "Mango DSP, Inc", "MANGO-DSP" }, { 0x0050C2, 0xEFE000, 0xEFEFFF, "PLR Information Systems Ltd.", "PLR-INFORMATION" }, { 0x0050C2, 0xEEA000, 0xEEAFFF, "Positioneering Limited", "POSITIONEERING" }, { 0x0050C2, 0xEE4000, 0xEE4FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xEE0000, 0xEE0FFF, "osf Hansjuergen Meier GmbH & Co. KG", "OSF-HANSJUERGEN-MEIER" }, { 0x0050C2, 0xEC7000, 0xEC7FFF, "LIQUID ROBOTICS, INC", "LIQUID-ROBOTICS" }, { 0x0050C2, 0xEC6000, 0xEC6FFF, "INFRONICS SYSTEMS LIMITED", "INFRONICS" }, { 0x0050C2, 0xEC3000, 0xEC3FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xEBD000, 0xEBDFFF, "Droplet Measurement Technologies", "DROPLET-MEASUREMENT-TECHNOLOGIES" }, { 0x0050C2, 0xE9F000, 0xE9FFFF, "DataSoft Corporation", "DATASOFT" }, { 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, 0xE8B000, 0xE8BFFF, "RPA Electronic Solutions, Inc.", "RPA-SOLUTIONS" }, { 0x0050C2, 0xE87000, 0xE87FFF, "Lamson Safes & Security", "LAMSON-SAFES-SECURITY" }, { 0x0050C2, 0xEB9000, 0xEB9FFF, "ALPHA-MOS", "ALPHA-MOS" }, { 0x0050C2, 0xEB3000, 0xEB3FFF, "AR RF/Microwave Instrumentation", "AR-RF/MICROWAVE-INSTRUMENTATION" }, { 0x0050C2, 0xEAF000, 0xEAFFFF, "Aircell", "AIRCELL" }, { 0x0050C2, 0xEA9000, 0xEA9FFF, "METTLER-TOLEDO HI-SPEED", "METTLER-TOLEDO-HI-SPEED" }, { 0x0050C2, 0xEA5000, 0xEA5FFF, "Aerodata AG", "AERODATA" }, { 0x0050C2, 0xE81000, 0xE81FFF, "Adaptive Technologies, Inc.", "ADAPTIVE-TECHNOLOGIES" }, { 0x0050C2, 0xE7D000, 0xE7DFFF, "AEL Microsystems Limited", "AEL-MICROSYSTEMS" }, { 0x0050C2, 0xE7E000, 0xE7EFFF, "Swareflex GmbH", "SWAREFLEX" }, { 0x0050C2, 0xED5000, 0xED5FFF, "RFL Electronics Inc.", "RFL-ELECTRONICS" }, { 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, 0xE75000, 0xE75FFF, "FSM AG", "FSM" }, { 0x0050C2, 0xE6A000, 0xE6AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xE67000, 0xE67FFF, "Critical Link, LLC", "CRITICAL-LINK-LLC" }, { 0x0050C2, 0xE2B000, 0xE2BFFF, "Plant Integrity Limited", "PLANT-INTEGRITY" }, { 0x0050C2, 0xE4C000, 0xE4CFFF, "Applied Micro Electronics AME BV", "APPLIED-MICRO-ELECTRONICS-AME" }, { 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, 0xE39000, 0xE39FFF, "Telemetrics Inc.", "TELEMETRICS" }, { 0x0050C2, 0xE35000, 0xE35FFF, "Omnica Corporation", "OMNICA" }, { 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, 0xE17000, 0xE17FFF, "Gall Tankdatensysteme GmbH", "GALL-TANKDATENSYSTEME" }, { 0x0050C2, 0xE0F000, 0xE0FFFF, "Trentino Systems", "TRENTINO" }, { 0x0050C2, 0xE1B000, 0xE1BFFF, "Embedded Labs", "EMBEDDED-LABS" }, { 0x0050C2, 0xE60000, 0xE60FFF, "TAIYO SEIKI CO.,LTD.", "TAIYO-SEIKI" }, { 0x0050C2, 0xE61000, 0xE61FFF, "Detech Electronics ApS", "DETECH-ELECTRONICS-APS" }, { 0x0050C2, 0xE5D000, 0xE5DFFF, "T8 Ltd", "T8" }, { 0x0050C2, 0xE25000, 0xE25FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xE21000, 0xE21FFF, "Norwia AS", "NORWIA-AS" }, { 0x0050C2, 0xE2F000, 0xE2FFFF, "Beam Ltd", "BEAM" }, { 0x0050C2, 0xDFE000, 0xDFEFFF, "Xitek Design Limited", "XITEK-DESIGN" }, { 0x0050C2, 0xDFA000, 0xDFAFFF, "MAC Valves, Inc.", "MAC-VALVES" }, { 0x0050C2, 0xDBF000, 0xDBFFFF, "One-Nemoto Engineering Corporation", "ONE-NEMOTO-ENGINEERING" }, { 0x0050C2, 0xDF7000, 0xDF7FFF, "Combilent", "COMBILENT" }, { 0x0050C2, 0xDF4000, 0xDF4FFF, "Potter Electric Signal", "POTTER-ELECTRIC-SIGNAL" }, { 0x0050C2, 0xDF0000, 0xDF0FFF, "Koncar Electrical Engineering Institute", "KONCAR-ELECTRICAL-ENGINEERING-INSTITUTE" }, { 0x0050C2, 0xDDC000, 0xDDCFFF, "Vision & Control GmbH", "VISION-CONTROL" }, { 0x0050C2, 0xDDD000, 0xDDDFFF, "A&A GENERAL SRL", "A-A-GENERAL-SRL" }, { 0x0050C2, 0xDD3000, 0xDD3FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE01000, 0xE01FFF, "Tyco Traffic & Transportation", "TYCO-TRAFFIC-TRANSPORTATION" }, { 0x0050C2, 0xDE6000, 0xDE6FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xDE7000, 0xDE7FFF, "Elan Systems", "ELAN" }, { 0x0050C2, 0xE0C000, 0xE0CFFF, "YOUHO ELECTRIC IND.,LTD.", "YOUHO-ELECTRIC-IND" }, { 0x0050C2, 0xE0B000, 0xE0BFFF, "Seartech", "SEARTECH" }, { 0x0050C2, 0xE08000, 0xE08FFF, "KST Technology", "KST" }, { 0x0050C2, 0xE04000, 0xE04FFF, "Sec.Eng Systems Pty Ltd", "SEC-ENG-PTY" }, { 0x0050C2, 0xDC9000, 0xDC9FFF, "KinotonGmbH", "KINOTONGMBH" }, { 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, 0xD84000, 0xD84FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 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, 0xDA9000, 0xDA9FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0xDA2000, 0xDA2FFF, "metraTec GmbH", "METRATEC" }, { 0x0050C2, 0xDA1000, 0xDA1FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0xD46000, 0xD46FFF, "Thales Nederland BV", "THALES-NEDERLAND" }, { 0x0050C2, 0xD42000, 0xD42FFF, "Hagenuk KMT GmbH", "HAGENUK-KMT" }, { 0x0050C2, 0xD3F000, 0xD3FFFF, "CSS, LLC", "CSS-LLC" }, { 0x0050C2, 0xD3B000, 0xD3BFFF, "Gitsn Inc.", "GITSN" }, { 0x0050C2, 0xD66000, 0xD66FFF, "Uvax Concepts", "UVAX-CONCEPTS" }, { 0x0050C2, 0xD62000, 0xD62FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xD5C000, 0xD5CFFF, "Ibetor S.L.", "IBETOR-S-L" }, { 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, 0xD9E000, 0xD9EFFF, "Vocality International", "VOCALITY" }, { 0x0050C2, 0xD98000, 0xD98FFF, "Rong Shun Xuan Corp.", "RONG-SHUN-XUAN" }, { 0x0050C2, 0xDB5000, 0xDB5FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xCF6000, 0xCF6FFF, "Epec Oy", "EPEC-OY" }, { 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, 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, 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, 0xD1A000, 0xD1AFFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x0050C2, 0xCDF000, 0xCDFFFF, "CoreEL TEchnologies (I) Pvt Ltd", "COREEL-TECHNOLOGIES-I-PVT" }, { 0x0050C2, 0xCE0000, 0xCE0FFF, "Industrial Control Links, Inc.", "INDUSTRIAL-CONTROL-LINKS" }, { 0x0050C2, 0xCDC000, 0xCDCFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xD38000, 0xD38FFF, "Kyowa Electronics Co.,Ltd.", "KYOWA-ELECTRONICS" }, { 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, 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, 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, 0xCEC000, 0xCECFFF, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 0x0050C2, 0xC8C000, 0xC8CFFF, "Lanmark Controls Inc.", "LANMARK-CONTROLS" }, { 0x0050C2, 0xC81000, 0xC81FFF, "Odyssee Systemes SAS", "ODYSSEE-SYSTEMES-SAS" }, { 0x0050C2, 0xCAA000, 0xCAAFFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xCA3000, 0xCA3FFF, "CT Company", "CT-COMPANY" }, { 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, 0xCB4000, 0xCB4FFF, "GEA Farm Technologies GmbH", "GEA-FARM-TECHNOLOGIES" }, { 0x0050C2, 0xCAD000, 0xCADFFF, "Pacific Coast Engineering", "PACIFIC-COAST-ENGINEERING" }, { 0x0050C2, 0xCA0000, 0xCA0FFF, "Kiefer technic GmbH", "KIEFER-TECHNIC" }, { 0x0050C2, 0xC99000, 0xC99FFF, "HJPC Corporation dba Pactron", "HJPC-DBA-PACTRON" }, { 0x0050C2, 0xC96000, 0xC96FFF, "CyberCraft", "CYBERCRAFT" }, { 0x0050C2, 0xC40000, 0xC40FFF, "BAE Systems Bofors AB", "BAE-BOFORS-AB" }, { 0x0050C2, 0xC36000, 0xC36FFF, "SET GmbH", "SET" }, { 0x0050C2, 0xC54000, 0xC54FFF, "HPC Platform", "HPC-PLATFORM" }, { 0x0050C2, 0xC4A000, 0xC4AFFF, "Herrick Technology Laboratories, Inc.", "HERRICK-LABORATORIES" }, { 0x0050C2, 0xCBE000, 0xCBEFFF, "CODE BLUE CORPORATION", "CODE-BLUE" }, { 0x0050C2, 0xCC1000, 0xCC1FFF, "Level 3 Communications", "LEVEL-3-COMMUNICATION" }, { 0x0050C2, 0xCB7000, 0xCB7FFF, "inotech GmbH", "INOTECH" }, { 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, 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, 0xBF5000, 0xBF5FFF, "AILES ELECTRONICS CO., LTD.", "AILES-ELECTRONICS" }, { 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, 0xB8A000, 0xB8AFFF, "MicroPoise", "MICROPOISE" }, { 0x0050C2, 0xB86000, 0xB86FFF, "ASTO", "ASTO" }, { 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, 0xBE4000, 0xBE4FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xBE5000, 0xBE5FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xBE1000, 0xBE1FFF, "Tattile srl", "TATTILE-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, 0xC20000, 0xC20FFF, "SRC Computers, LLC", "SRC-COMPUTERS-LLC" }, { 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, 0xC0C000, 0xC0CFFF, "Altierre", "ALTIERRE" }, { 0x0050C2, 0xC02000, 0xC02FFF, "Hanning Elektro-Werke GmbH & Co. KG", "HANNING-ELEKTRO-WERKE" }, { 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, 0xB13000, 0xB13FFF, "Measy Electronics Co., Ltd.", "MEASY-ELECTRONICS" }, { 0x0050C2, 0xB0F000, 0xB0FFFF, "NARA Controls Inc.", "NARA-CONTROLS" }, { 0x0050C2, 0xB0C000, 0xB0CFFF, "SMARTB TECHNOLOGIES", "SMARTB-TECHNOLOGIES" }, { 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, 0xB41000, 0xB41FFF, "Tata Power Company, Strategic Electronics Division", "TATA-POWER-COMPANY-STRATEGIC-ELECTRONICS-DIVISION" }, { 0x0050C2, 0xB3E000, 0xB3EFFF, "Sage Consultants", "SAGE-CONSULTANTS" }, { 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, 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, 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, 0xB3B000, 0xB3BFFF, "Sportvision Inc.", "SPORTVISION" }, { 0x0050C2, 0xB37000, 0xB37FFF, "IAdea Corporation", "IADEA" }, { 0x0050C2, 0xB34000, 0xB34FFF, "Meisol co.,ltd", "MEISOL" }, { 0x0050C2, 0xB31000, 0xB31FFF, "Shop Safe AG", "SHOP-SAFE" }, { 0x0050C2, 0xB2D000, 0xB2DFFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x0050C2, 0xB2A000, 0xB2AFFF, "Trench Austria GmbH", "TRENCH-AUSTRIA" }, { 0x0050C2, 0xB27000, 0xB27FFF, "ATEME", "ATEME" }, { 0x0050C2, 0xB02000, 0xB02FFF, "MASTER CO LTD", "MASTER" }, { 0x0050C2, 0xAFC000, 0xAFCFFF, "Odus Technologies SA", "ODUS-TECHNOLOGIES" }, { 0x0050C2, 0xAFF000, 0xAFFFFF, "XoByte LLC", "XOBYTE-LLC" }, { 0x0050C2, 0xAFB000, 0xAFBFFF, "Vocality International Ltd", "VOCALITY" }, { 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, 0xB83000, 0xB83FFF, "Advanced Storage Concepts, Inc.", "ADVANCED-STORAGE-CONCEPTS" }, { 0x0050C2, 0xB80000, 0xB80FFF, "iScreen LLC", "ISCREEN-LLC" }, { 0x0050C2, 0xB7C000, 0xB7CFFF, "Bettini srl", "BETTINI-SRL" }, { 0x0050C2, 0xB79000, 0xB79FFF, "MITSUYA LABORATORIES INC.", "MITSUYA-LABORATORIES" }, { 0x0050C2, 0xB76000, 0xB76FFF, "ITF Frĥschl GmbH", "ITF-FROESCHL" }, { 0x0050C2, 0xB5E000, 0xB5EFFF, "Palgiken Co.,Ltd.", "PALGIKEN" }, { 0x0050C2, 0xB5B000, 0xB5BFFF, "Timberline Mfg Company", "TIMBERLINE-MFG-COMPANY" }, { 0x0050C2, 0xB58000, 0xB58FFF, "Real D", "REAL-D" }, { 0x0050C2, 0xB53000, 0xB53FFF, "Prodco", "PRODCO" }, { 0x0050C2, 0xB50000, 0xB50FFF, "SELCO", "SELCO" }, { 0x0050C2, 0xB4E000, 0xB4EFFF, "AixControl GmbH", "AIXCONTROL" }, { 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, 0xA8F000, 0xA8FFFF, "Quantum3D, Inc.", "QUANTUM3D" }, { 0x0050C2, 0xA8A000, 0xA8AFFF, "Audio Engineering Ltd.", "AUDIO-ENGINEERING" }, { 0x0050C2, 0xA86000, 0xA86FFF, "LIMAB AB", "LIMAB-AB" }, { 0x0050C2, 0xA82000, 0xA82FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xA85000, 0xA85FFF, "JOYSYSTEM", "JOYSYSTEM" }, { 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, 0xA7C000, 0xA7CFFF, "Pneu-Logic Corporation", "PNEU-LOGIC" }, { 0x0050C2, 0xA78000, 0xA78FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x0050C2, 0xA72000, 0xA72FFF, "Gamber-Johnson LLC.", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0xA6E000, 0xA6EFFF, "Screen Technics Pty Limited", "SCREEN-TECHNICS-PTY" }, { 0x0050C2, 0xACB000, 0xACBFFF, "U-CARE INC.", "U-CARE" }, { 0x0050C2, 0xACA000, 0xACAFFF, "Soft & Control Technology s.r.o.", "SOFT-CONTROL-S-R-O" }, { 0x0050C2, 0xAC7000, 0xAC7FFF, "WaveIP", "WAVEIP" }, { 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, 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, 0xA5A000, 0xA5AFFF, "ITAS A/S", "ITAS-A/S" }, { 0x0050C2, 0xA54000, 0xA54FFF, "Diamond Point International (Europe) Ltd", "DIAMOND-POINT-EUROPE" }, { 0x0050C2, 0xAA3000, 0xAA3FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xA9F000, 0xA9FFFF, "YellowSoft Co., Ltd.", "YELLOWSOFT" }, { 0x0050C2, 0xA99000, 0xA99FFF, "Haivision Systems Inc", "HAIVISION" }, { 0x0050C2, 0xA95000, 0xA95FFF, "INNOVACIONES Microelectr³nicas SL (AnaFocus)", "INNOVACIONES-MICROELECTR³NICAS-SL-ANAFOCUS" }, { 0x0050C2, 0xADE000, 0xADEFFF, "Neoptix Inc.", "NEOPTIX" }, { 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, 0xA50000, 0xA50FFF, "i-RED Infrarot Systeme GmbH", "I-RED-INFRAROT-SYSTEME" }, { 0x0050C2, 0xA4A000, 0xA4AFFF, "DITRON S.r.l.", "DITRON-S-R-L" }, { 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, 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, 0xA19000, 0xA19FFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0xA0F000, 0xA0FFFF, "Visualware Inc", "VISUALWARE" }, { 0x0050C2, 0x9D3000, 0x9D3FFF, "Telemetrie Elektronik GmbH", "TELEMETRIE-ELEKTRONIK" }, { 0x0050C2, 0x9C9000, 0x9C9FFF, "LUMINEX Lighting Control Equipment", "LUMINEX-LIGHTING-CONTROL-EQUIPMENT" }, { 0x0050C2, 0x9C4000, 0x9C4FFF, "Vitel Net", "VITEL-NET" }, { 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, 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, 0x9E7000, 0x9E7FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x9DD000, 0x9DDFFF, "Institut Dr. Foerster", "INSTITUT-DR-FOERSTER" }, { 0x0050C2, 0x986000, 0x986FFF, "DSCI", "DSCI" }, { 0x0050C2, 0x8F9000, 0x8F9FFF, "Honeywell International", "HONEYWELL" }, { 0x0050C2, 0x8F4000, 0x8F4FFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0x8F1000, 0x8F1FFF, "Detection Technologies Ltd.", "DETECTION-TECHNOLOGIES" }, { 0x0050C2, 0x930000, 0x930FFF, "NETA Elektronik AS", "NETA-ELEKTRONIK-AS" }, { 0x0050C2, 0x926000, 0x926FFF, "DITEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 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, 0x955000, 0x955FFF, "Roessmann Engineering", "ROESSMANN-ENGINEERING" }, { 0x0050C2, 0x96F000, 0x96FFFF, "Varec Inc.", "VAREC" }, { 0x0050C2, 0x96B000, 0x96BFFF, "Electronic Media Services Ltd", "MEDIA-SERVICES" }, { 0x0050C2, 0x965000, 0x965FFF, "Emitech Corporation", "EMITECH" }, { 0x0050C2, 0x91C000, 0x91CFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x912000, 0x912FFF, "ASSET InterTech, Inc.", "ASSET-INTERTECH" }, { 0x0050C2, 0x909000, 0x909FFF, "Elisra Electronic Systems", "ELISRA" }, { 0x0050C2, 0x908000, 0x908FFF, "Codex Digital Ltd", "CODEX-DIGITAL" }, { 0x0050C2, 0x904000, 0x904FFF, "R2Sonic, LLC", "R2SONIC-LLC" }, { 0x0050C2, 0x900000, 0x900FFF, "Magor Communications Corp", "MAGOR-COMMUNICATION" }, { 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, 0x8EA000, 0x8EAFFF, "ATEME", "ATEME" }, { 0x0050C2, 0x8E7000, 0x8E7FFF, "MKT Systemtechnik", "MKT-SYSTEMTECHNIK" }, { 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, 0x860000, 0x860FFF, "Eutron S.p.A.", "EUTRON-S-P-A" }, { 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, 0x888000, 0x888FFF, "IADEA CORPORATION", "IADEA" }, { 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, 0x855000, 0x855FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x856000, 0x856FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0x84C000, 0x84CFFF, "Performance Motion Devices", "PERFORMANCE-MOTION-DEVICES" }, { 0x0050C2, 0x84E000, 0x84EFFF, "DRACO SYSTEMS", "DRACO" }, { 0x0050C2, 0x84B000, 0x84BFFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 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, 0x8B8000, 0x8B8FFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x844000, 0x844FFF, "Prodigy Electronics Limited", "PRODIGY-ELECTRONICS" }, { 0x0050C2, 0x842000, 0x842FFF, "Quantum Controls BV", "QUANTUM-CONTROLS" }, { 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, 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, 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, 0x8CC000, 0x8CCFFF, "LyconSys GmbH & Co.KG", "LYCONSYS" }, { 0x0050C2, 0x8A4000, 0x8A4FFF, "BALOGH T.A.G Corporation", "BALOGH-T-A-G" }, { 0x0050C2, 0x8A5000, 0x8A5FFF, "Mocon, Inc.", "MOCON" }, { 0x0050C2, 0x8A1000, 0x8A1FFF, "Intune Networks Limited", "INTUNE-NETWORKS" }, { 0x0050C2, 0x899000, 0x899FFF, "Inico Technologies Ltd.", "INICO-TECHNOLOGIES" }, { 0x0050C2, 0x896000, 0x896FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0x858000, 0x858FFF, "Wireless Acquisition LLC", "WIRELESS-ACQUISITION-LLC" }, { 0x0050C2, 0x7A1000, 0x7A1FFF, "Field Design Service", "FIELD-DESIGN-SERVICE" }, { 0x0050C2, 0x7A2000, 0x7A2FFF, "RaySat Israel LTD", "RAYSAT-ISRAEL" }, { 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, 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, 0x7E9000, 0x7E9FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x7E6000, 0x7E6FFF, "Empirix Italy S.p.A.", "EMPIRIX-ITALY-S-P-A" }, { 0x0050C2, 0x7E2000, 0x7E2FFF, "DIGITROL LTD", "DIGITROL" }, { 0x0050C2, 0x7DF000, 0x7DFFFF, "Private", "PRIVATE" }, { 0x0050C2, 0x7DC000, 0x7DCFFF, "aiXtrusion GmbH", "AIXTRUSION" }, { 0x0050C2, 0x7B5000, 0x7B5FFF, "DIT-MCO International", "DIT-MCO" }, { 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, 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, 0x7C9000, 0x7C9FFF, "Bluebell Opticom Limited", "BLUEBELL-OPTICOM" }, { 0x0050C2, 0x82F000, 0x82FFFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x0050C2, 0x82B000, 0x82BFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x825000, 0x825FFF, "Funkwerk Information Technologies Karlsfeld GmbH", "FUNKWERK-INFORMATION-TECHNOLOGIES-KARLSFELD" }, { 0x0050C2, 0x811000, 0x811FFF, "Open System Solutions Limited", "OPEN-SYSTEM-SOLUTIONS" }, { 0x0050C2, 0x80D000, 0x80DFFF, "Acube Systems s.r.l.", "ACUBE-S-R-L" }, { 0x0050C2, 0x807000, 0x807FFF, "TECHNOMARK", "TECHNOMARK" }, { 0x0050C2, 0x803000, 0x803FFF, "dB Broadcast Limited", "DB-BROADCAST" }, { 0x0050C2, 0x7FD000, 0x7FDFFF, "Adeneo", "ADENEO" }, { 0x0050C2, 0x7C2000, 0x7C2FFF, "DSR Information Technologies Ltd.", "DSR-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x7BF000, 0x7BFFFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x0050C2, 0x7B8000, 0x7B8FFF, "Design 2000 Pty Ltd", "DESIGN-2000-PTY" }, { 0x0050C2, 0x821000, 0x821FFF, "MISCO Refractometer", "MISCO-REFRACTOMETER" }, { 0x0050C2, 0x81B000, 0x81BFFF, "Brain Tech Co., Ltd", "BRAIN-TECH" }, { 0x0050C2, 0x817000, 0x817FFF, "Odin TeleSystems Inc", "ODIN-TELESYSTEMS" }, { 0x0050C2, 0x71A000, 0x71AFFF, "Logus Broadband Wireless Solutions Inc.", "LOGUS-BROADBAND-WIRELESS-SOLUTIONS" }, { 0x0050C2, 0x717000, 0x717FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0x714000, 0x714FFF, "T.E.AM., S. A.", "T-E-AM-S-A" }, { 0x0050C2, 0x70D000, 0x70DFFF, "ela-soft GmbH & Co. KG", "ELA-SOFT" }, { 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, 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, 0x759000, 0x759FFF, "Sequentric Energy Systems, LLC", "SEQUENTRIC-ENERGY-LLC" }, { 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, 0x710000, 0x710FFF, "Wharton Electronics Ltd", "WHARTON-ELECTRONICS" }, { 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, 0x73B000, 0x73BFFF, "On Air Networks", "ON-AIR-NETWORKS" }, { 0x0050C2, 0x735000, 0x735FFF, "Ant Lamp, Inc", "ANT-LAMP" }, { 0x0050C2, 0x731000, 0x731FFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 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, 0x763000, 0x763FFF, "XtendWave", "XTENDWAVE" }, { 0x0050C2, 0x75D000, 0x75DFFF, "Fluid Analytics, Inc.", "FLUID-ANALYTICS" }, { 0x0050C2, 0x6B8000, 0x6B8FFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0x6BB000, 0x6BBFFF, "Ele.Mag S.r.l.", "ELE-MAG-S-R-L" }, { 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, 0x6B1000, 0x6B1FFF, "Burk Technology", "BURK" }, { 0x0050C2, 0x6A7000, 0x6A7FFF, "Hoer GmbH & Co. Industrie-Electronic KG", "HOER-INDUSTRIE" }, { 0x0050C2, 0x6A5000, 0x6A5FFF, "FHF Funke+Huster Fernsig GmbH", "FHF-FUNKE+HUSTER-FERNSIG" }, { 0x0050C2, 0x6A2000, 0x6A2FFF, "Cadi Scientific Pte Ltd", "CADI-SCIENTIFIC-PTE" }, { 0x0050C2, 0x69E000, 0x69EFFF, "Ideus AB", "IDEUS-AB" }, { 0x0050C2, 0x6CF000, 0x6CFFFF, "Microway", "MICROWAY" }, { 0x0050C2, 0x6D5000, 0x6D5FFF, "Becker Electronics GmbH", "BECKER-ELECTRONICS" }, { 0x0050C2, 0x6CB000, 0x6CBFFF, "Stream Processors", "STREAM-PROCESSORS" }, { 0x0050C2, 0x6C5000, 0x6C5FFF, "Oerlikon Contraves AG", "OERLIKON-CONTRAVES" }, { 0x0050C2, 0x6C1000, 0x6C1FFF, "RADIUS Sweden AB", "RADIUS-SWEDEN-AB" }, { 0x0050C2, 0x6F7000, 0x6F7FFF, "infoplan Gesellschaftfĵr Informationssysteme mbH", "INFOPLAN-GESELLSCHAFTFUER-INFORMATIONSSYSTEME-MBH" }, { 0x0050C2, 0x6F3000, 0x6F3FFF, "E3Switch LLC", "E3SWITCH-LLC" }, { 0x0050C2, 0x69A000, 0x69AFFF, "StoreTech Limited", "STORETECH" }, { 0x0050C2, 0x694000, 0x694FFF, "Initel srl", "INITEL-SRL" }, { 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, 0x6ED000, 0x6EDFFF, "Sechan Electronics, Inc.", "SECHAN-ELECTRONICS" }, { 0x0050C2, 0x6E9000, 0x6E9FFF, "Bando electronic communication Co.Lltd", "BANDO-COMMUNICATION-LLTD" }, { 0x0050C2, 0x6E3000, 0x6E3FFF, "Miros AS", "MIROS-AS" }, { 0x0050C2, 0x680000, 0x680FFF, "Honey Network Research Limited", "HONEY-NETWORK-RESEARCH" }, { 0x0050C2, 0x67D000, 0x67DFFF, "ESA Messtechnik GmbH", "ESA-MESSTECHNIK" }, { 0x0050C2, 0x67C000, 0x67CFFF, "Aircell", "AIRCELL" }, { 0x0050C2, 0x676000, 0x676FFF, "EDS", "EDS" }, { 0x0050C2, 0x6DF000, 0x6DFFFF, "QR Sciences Ltd", "QR-SCIENCES" }, { 0x0050C2, 0x6D9000, 0x6D9FFF, "Ajeco Oy", "AJECO-OY" }, { 0x0050C2, 0x673000, 0x673FFF, "Ferrari electronic AG", "FERRARI" }, { 0x0050C2, 0x672000, 0x672FFF, "DDS Elettronica srl", "DDS-ELETTRONICA-SRL" }, { 0x0050C2, 0x62E000, 0x62EFFF, "TDM Ingİnierie", "TDM-INGİNIERIE" }, { 0x0050C2, 0x62D000, 0x62DFFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x627000, 0x627FFF, "JungleSystem Co., Ltd.", "JUNGLESYSTEM" }, { 0x0050C2, 0x624000, 0x624FFF, "Comtest Networks", "COMTEST-NETWORKS" }, { 0x0050C2, 0x64E000, 0x64EFFF, "Northern Power", "NORTHERN-POWER" }, { 0x0050C2, 0x64B000, 0x64BFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x644000, 0x644FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x5FC000, 0x5FCFFF, "FilmLight Limited", "FILMLIGHT" }, { 0x0050C2, 0x5FF000, 0x5FFFFF, "Gazelle Monitoring Systems", "GAZELLE-MONITORING" }, { 0x0050C2, 0x5F5000, 0x5F5FFF, "Genesis inc", "GENESIS" }, { 0x0050C2, 0x63F000, 0x63FFFF, "Speech Technology Center, Ltd.", "SPEECH-CENTER" }, { 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, 0x610000, 0x610FFF, "FDT Manufacturing, LLC", "FDT-MANUFACTURING-LLC" }, { 0x0050C2, 0x609000, 0x609FFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0x606000, 0x606FFF, "Shenzhen Huazhong Technology Inc", "SHENZHEN-HUAZHONG" }, { 0x0050C2, 0x5F2000, 0x5F2FFF, "ESEM Grĵnau GmbH & Co. KG", "ESEM-GRUENAU" }, { 0x0050C2, 0x5EB000, 0x5EBFFF, "Garper Telecomunicaciones, S.L.", "GARPER-TELECOMUNICACIONES-S-L" }, { 0x0050C2, 0x5E8000, 0x5E8FFF, "Info-Chip Communications Ltd.", "INFO-CHIP-COMMUNICATION" }, { 0x0050C2, 0x61A000, 0x61AFFF, "Communication Components Inc.", "COMMUNICATION-COMPONENTS" }, { 0x0050C2, 0x61D000, 0x61DFFF, "Sutus Inc", "SUTUS" }, { 0x0050C2, 0x613000, 0x613FFF, "TATTILE SRL", "TATTILE-SRL" }, { 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, 0x655000, 0x655FFF, "Physik Instrumente (PI) GmbH&Co.KG", "PHYSIK-INSTRUMENTE-PI" }, { 0x0050C2, 0x658000, 0x658FFF, "OpenPKG GmbH", "OPENPKG" }, { 0x0050C2, 0x5A0000, 0x5A0FFF, "Rudolph Technologies, Inc.", "RUDOLPH-TECHNOLOGIES" }, { 0x0050C2, 0x568000, 0x568FFF, "GeoFocus, LLC", "GEOFOCUS-LLC" }, { 0x0050C2, 0x565000, 0x565FFF, "WORKPOWER TECNOLOGIA ELETRONICA LTDA-EPP", "WORKPOWER-TECNOLOGIA-ELETRONICA-LTDA-EPP" }, { 0x0050C2, 0x55E000, 0x55EFFF, "HANZAS ELEKTRONIKA, SIA", "HANZAS-ELEKTRONIKA-SIA" }, { 0x0050C2, 0x55B000, 0x55BFFF, "MATRIX TELECOM PVT. LTD.", "MATRIX-TELECOM-PVT" }, { 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, 0x58C000, 0x58CFFF, "Lattice Semiconductor Corp. (LPA)", "LATTICE-SEMICONDUCTOR-LPA" }, { 0x0050C2, 0x585000, 0x585FFF, "Wireless Cables Inc", "WIRELESS-CABLES" }, { 0x0050C2, 0x582000, 0x582FFF, "AllSun A/S", "ALLSUN-A/S" }, { 0x0050C2, 0x57B000, 0x57BFFF, "ptswitch", "PTSWITCH" }, { 0x0050C2, 0x596000, 0x596FFF, "SPANSION", "SPANSION" }, { 0x0050C2, 0x599000, 0x599FFF, "Fen Technology Limited", "FEN" }, { 0x0050C2, 0x58F000, 0x58FFFF, "XoIP Systems Pty Ltd", "XOIP-PTY" }, { 0x0050C2, 0x5E1000, 0x5E1FFF, "Ittiam Systems (P) Ltd", "ITTIAM-P" }, { 0x0050C2, 0x5DC000, 0x5DCFFF, "RM Michaelides Software & Elektronik GmbH", "RM-MICHAELIDES-SOFTWARE-ELEKTRONIK" }, { 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, 0x530000, 0x530FFF, "Innovation, Institute, Inc", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x52C000, 0x52CFFF, "VITEC MULTIMEDIA", "VITEC-MULTIMEDIA" }, { 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, 0x54D000, 0x54DFFF, "Silent System", "SILENT-SYSTEM" }, { 0x0050C2, 0x54E000, 0x54EFFF, "Convergent Design", "CONVERGENT-DESIGN" }, { 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, 0x51F000, 0x51FFFF, "Traquair Data Systems, Inc.", "TRAQUAIR-DATA" }, { 0x0050C2, 0x51C000, 0x51CFFF, "TOA Systems", "TOA" }, { 0x0050C2, 0x54A000, 0x54AFFF, "IPTC Tech. Comm. AB", "IPTC-TECH-COMM-AB" }, { 0x0050C2, 0x547000, 0x547FFF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 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, 0x4F4000, 0x4F4FFF, "O2RUN", "O2RUN" }, { 0x0050C2, 0x4F3000, 0x4F3FFF, "Autronica Fire & Security", "AUTRONICA-FIRE-SECURITY" }, { 0x0050C2, 0x4ED000, 0x4EDFFF, "Lab X Technologies, LLC", "LAB-X-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x4EA000, 0x4EAFFF, "PMC", "PMC" }, { 0x0050C2, 0x518000, 0x518FFF, "Christ Elektronik GmbH", "CHRIST-ELEKTRONIK" }, { 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, 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, 0x4F7000, 0x4F7FFF, "WaveIP Ltd.", "WAVEIP" }, { 0x0050C2, 0x4E3000, 0x4E3FFF, "Romteck Pty Ltd", "ROMTECK-PTY" }, { 0x0050C2, 0x4E0000, 0x4E0FFF, "Telematrix", "TELEMATRIX" }, { 0x0050C2, 0x4D9000, 0x4D9FFF, "GE Security Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x4D6000, 0x4D6FFF, "Ingenieurbĵro Schober", "INGENIEURBUERO-SCHOBER" }, { 0x0050C2, 0x4CC000, 0x4CCFFF, "ImpediMed Limited", "IMPEDIMED" }, { 0x0050C2, 0x4A5000, 0x4A5FFF, "Teledyne Monitor Labs", "TELEDYNE-MONITOR-LABS" }, { 0x0050C2, 0x49E000, 0x49EFFF, "Armorlink CO .Ltd", "ARMORLINK" }, { 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, 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, 0x4CF000, 0x4CFFFF, "Ziehl-Abegg AG", "ZIEHL-ABEGG" }, { 0x0050C2, 0x4C2000, 0x4C2FFF, "Elbit Systems", "ELBIT" }, { 0x0050C2, 0x4C5000, 0x4C5FFF, "eXray Broadband Inc.", "EXRAY-BROADBAND" }, { 0x0050C2, 0x4B8000, 0x4B8FFF, "Shenzhen Hongdian Technologies.,Ltd", "SHENZHEN-HONGDIAN-TECHNOLOGIES" }, { 0x0050C2, 0x4BB000, 0x4BBFFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x0050C2, 0x4B1000, 0x4B1FFF, "Nsfocus Information Technology Co.,Ltd", "NSFOCUS-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, 0x451000, 0x451FFF, "HAMEG GmbH", "HAMEG" }, { 0x0050C2, 0x44D000, 0x44DFFF, "Electro-Matic Products, Inc.", "ELECTRO-MATIC-PRODUCTS" }, { 0x0050C2, 0x473000, 0x473FFF, "Sensus Metering Systems Israel", "SENSUS-METERING-ISRAEL" }, { 0x0050C2, 0x46F000, 0x46FFFF, "Neuroware", "NEUROWARE" }, { 0x0050C2, 0x46C000, 0x46CFFF, "CAMCO GmbH", "CAMCO" }, { 0x0050C2, 0x4AC000, 0x4ACFFF, "Doramu Co.,Ltd.", "DORAMU" }, { 0x0050C2, 0x4A8000, 0x4A8FFF, "CYJAYA Korea", "CYJAYA-KOREA" }, { 0x0050C2, 0x465000, 0x465FFF, "PDTS GmbH", "PDTS" }, { 0x0050C2, 0x462000, 0x462FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0x45B000, 0x45BFFF, "Matra Electronique", "MATRA-ELECTRONIQUE" }, { 0x0050C2, 0x458000, 0x458FFF, "HRZ data GmbH", "HRZ-DATA" }, { 0x0050C2, 0x3AD000, 0x3ADFFF, "Spirent Communications (Scotland) Limited", "SPIRENT-COMMUNICATION-SCOTLAND" }, { 0x0050C2, 0x3A9000, 0x3A9FFF, "Westronic Systems Inc.", "WESTRONIC" }, { 0x0050C2, 0x39F000, 0x39FFFF, "Isensix", "ISENSIX" }, { 0x0050C2, 0x3BA000, 0x3BAFFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x3B7000, 0x3B7FFF, "Mindspeed Technologies", "MINDSPEED-TECHNOLOGIES" }, { 0x0050C2, 0x3B0000, 0x3B0FFF, "Microtarget Tecnologia Digital Ltda.", "MICROTARGET-TECNOLOGIA-DIGITAL-LTDA" }, { 0x0050C2, 0x3EA000, 0x3EAFFF, "Alro Information Systems SA", "ALRO-INFORMATION" }, { 0x0050C2, 0x3E7000, 0x3E7FFF, "Revolution Education Ltd", "REVOLUTION-EDUCATION" }, { 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, 0x395000, 0x395FFF, "vidisys gmbh", "VIDISYS" }, { 0x0050C2, 0x38B000, 0x38BFFF, "InterBridge,Inc.", "INTERBRIDGE" }, { 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, 0x329000, 0x329FFF, "Imax", "IMAX" }, { 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, 0x2F5000, 0x2F5FFF, "ADChips", "ADCHIPS" }, { 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, 0x387000, 0x387FFF, "Inoteska s.r.o.", "INOTESKA-S-R-O" }, { 0x0050C2, 0x37F000, 0x37FFFF, "Foresearch", "FORESEARCH" }, { 0x0050C2, 0x37C000, 0x37CFFF, "MODIA SYSTEMS Co., Ltd", "MODIA" }, { 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, 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, 0x354000, 0x354FFF, "Advanced IP Communications", "ADVANCED-IP-COMMUNICATION" }, { 0x0050C2, 0x34A000, 0x34AFFF, "NIE Corporation", "NIE" }, { 0x0050C2, 0x340000, 0x340FFF, "Virtu", "VIRTU" }, { 0x0050C2, 0x375000, 0x375FFF, "TIR Systems Ltd.", "TIR" }, { 0x0050C2, 0x372000, 0x372FFF, "ELV Elektronik AG", "ELV-ELEKTRONIK" }, { 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, 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, 0x26E000, 0x26EFFF, "ZP Engineering srl", "ZP-ENGINEERING-SRL" }, { 0x0050C2, 0x26D000, 0x26DFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x2C6000, 0x2C6FFF, "Initial Electronic Security Systems", "INITIAL-SECURITY" }, { 0x0050C2, 0x2C3000, 0x2C3FFF, "Digital SP Ltd", "DIGITAL-SP" }, { 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, 0x2B7000, 0x2B7FFF, "Rafi GmbH & Co. KG", "RAFI" }, { 0x0050C2, 0x2B0000, 0x2B0FFF, "Telda Electronics", "TELDA-ELECTRONICS" }, { 0x0050C2, 0x2B3000, 0x2B3FFF, "Embedded Systems Design", "EMBEDDED-DESIGN" }, { 0x0050C2, 0x292000, 0x292FFF, "AMIRIX Systems", "AMIRIX" }, { 0x0050C2, 0x28F000, 0x28FFFF, "Spellman High Voltage Electronics Corp", "SPELLMAN-HIGH-VOLTAGE-ELECTRONICS" }, { 0x0050C2, 0x28B000, 0x28BFFF, "Orion Technologies, Incorporated", "ORION-TECHNOLOGIES-INCORPORATED" }, { 0x0050C2, 0x288000, 0x288FFF, "RPM Systems Corporation", "RPM" }, { 0x0050C2, 0x285000, 0x285FFF, "Littwin GmbH & Co KG", "LITTWIN" }, { 0x0050C2, 0x281000, 0x281FFF, "CabTronix GmbH", "CABTRONIX" }, { 0x0050C2, 0x282000, 0x282FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0x27E000, 0x27EFFF, "AnaLogic Computers Ltd.", "ANALOGIC-COMPUTERS" }, { 0x0050C2, 0x278000, 0x278FFF, "Replicom Ltd.", "REPLICOM" }, { 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, 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, 0x2DE000, 0x2DEFFF, "Research Applications", "RESEARCH-APPLICATIONS" }, { 0x0050C2, 0x2E1000, 0x2E1FFF, "Access IS", "ACCESS-IS" }, { 0x0050C2, 0x2DA000, 0x2DAFFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x0050C2, 0x2D7000, 0x2D7FFF, "Neo Electronics Ltd", "NEO-ELECTRONICS" }, { 0x0050C2, 0x26A000, 0x26AFFF, "FG SYNERYS", "FG-SYNERYS" }, { 0x0050C2, 0x267000, 0x267FFF, "Allen Martin Conservation Ltd", "ALLEN-MARTIN-CONSERVATION" }, { 0x0050C2, 0x264000, 0x264FFF, "Confidence Direct Ltd", "CONFIDENCE-DIRECT" }, { 0x0050C2, 0x25A000, 0x25AFFF, "Zendex Corporation", "ZENDEX" }, { 0x0050C2, 0x260000, 0x260FFF, "BIOTAGE", "BIOTAGE" }, { 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, 0x21B000, 0x21BFFF, "General Dynamics Decision Systems", "GENERAL-DYNAMICS-DECISION" }, { 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, 0x20B000, 0x20BFFF, "Rafael", "RAFAEL" }, { 0x0050C2, 0x207000, 0x207FFF, "Solectron Ind.Com.Servs.Exportadora do Brasil Ltda.", "SOLECTRON-IND-COM-SERVS-EXPORTADORA-DO-BRASIL-LTDA" }, { 0x0050C2, 0x25D000, 0x25DFFF, "RDTECH", "RDTECH" }, { 0x0050C2, 0x258000, 0x258FFF, "Spacesaver Corporation", "SPACESAVER" }, { 0x0050C2, 0x255000, 0x255FFF, "STMicroelectronics (R&D) Ltd", "STMICROELECTRONICS-R-D" }, { 0x0050C2, 0x24D000, 0x24DFFF, "METTLER-TOLEDO HI-SPEED", "METTLER-TOLEDO-HI-SPEED" }, { 0x0050C2, 0x250000, 0x250FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x22F000, 0x22FFFF, "HTEC Limited", "HTEC" }, { 0x0050C2, 0x225000, 0x225FFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x229000, 0x229FFF, "eko systems inc.", "EKO" }, { 0x0050C2, 0x243000, 0x243FFF, "RGB Spectrum", "RGB-SPECTRUM" }, { 0x0050C2, 0x246000, 0x246FFF, "Hardmeier", "HARDMEIER" }, { 0x0050C2, 0x247000, 0x247FFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-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, 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, 0x1E4000, 0x1E4FFF, "Soronti, Inc.", "SORONTI" }, { 0x0050C2, 0x1E0000, 0x1E0FFF, "Cognex Corporation", "COGNEX" }, { 0x0050C2, 0x1AE000, 0x1AEFFF, "Home Director, Inc", "HOME-DIRECTOR" }, { 0x0050C2, 0x1B2000, 0x1B2FFF, "SIGOS Systemintegration GmbH", "SIGOS-SYSTEMINTEGRATION" }, { 0x0050C2, 0x1A8000, 0x1A8FFF, "ANOVA BROADBAND", "ANOVA-BROADBAND" }, { 0x0050C2, 0x1CC000, 0x1CCFFF, "WaveIP ltd.", "WAVEIP" }, { 0x0050C2, 0x1C6000, 0x1C6FFF, "Remco Italia Spa", "REMCO-ITALIA-SPA" }, { 0x0050C2, 0x1C2000, 0x1C2FFF, "Weltronics Corp.", "WELTRONICS" }, { 0x0050C2, 0x1BC000, 0x1BCFFF, "DINEC International", "DINEC" }, { 0x0050C2, 0x19A000, 0x19AFFF, "AZIO TECHNOLOGY CO.", "AZIO" }, { 0x0050C2, 0x194000, 0x194FFF, "COMINFO", "COMINFO" }, { 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, 0x18B000, 0x18BFFF, "Teradyne Inc.", "TERADYNE" }, { 0x0050C2, 0x18F000, 0x18FFFF, "MATSUI MFG CO.,LTD", "MATSUI-MFG" }, { 0x0050C2, 0x1A4000, 0x1A4FFF, "Protech Optronics Co. Ltd.", "PROTECH-OPTRONICS" }, { 0x0050C2, 0x19E000, 0x19EFFF, "Paltronics, Inc.", "PALTRONICS" }, { 0x0050C2, 0x1B8000, 0x1B8FFF, "Electronic Systems Development", "DEVELOPMENT" }, { 0x0050C2, 0x177000, 0x177FFF, "Unicoi Systems", "UNICOI" }, { 0x0050C2, 0x181000, 0x181FFF, "Task 84 Spa", "TASK-84-SPA" }, { 0x0050C2, 0x16F000, 0x16FFFF, "Dickson Technologies", "DICKSON-TECHNOLOGIES" }, { 0x0050C2, 0x060000, 0x060FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x018000, 0x018FFF, "CAD-UL GmbH", "CAD-UL" }, { 0x0050C2, 0x16A000, 0x16AFFF, "Time Domain", "TIME-DOMAIN" }, { 0x0050C2, 0x001000, 0x001FFF, "JMBS Developpements", "JMBS-DEVELOPPEMENTS" }, { 0x0050C2, 0x002000, 0x002FFF, "Integrated Automation Solutions", "INTEGRATED-AUTOMATION-SOLUTIONS" }, { 0x0050C2, 0x00E000, 0x00EFFF, "TTTech", "TTTECH" }, { 0x0050C2, 0x064000, 0x064FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x160000, 0x160FFF, "TTI - Telecom International Ltd.", "TTI---TELECOM" }, { 0x0050C2, 0x15D000, 0x15DFFF, "Cepheid", "CEPHEID" }, { 0x0050C2, 0x167000, 0x167FFF, "Precision Filters, Inc.", "PRECISION-FILTERS" }, { 0x0050C2, 0x149000, 0x149FFF, "Haag-Streit AG", "HAAG-STREIT" }, { 0x0050C2, 0x135000, 0x135FFF, "ELAD SRL", "ELAD-SRL" }, { 0x0050C2, 0x130000, 0x130FFF, "U.S. Traffic Corporation", "U-S-TRAFFIC" }, { 0x0050C2, 0x138000, 0x138FFF, "Delphin Technology AG", "DELPHIN" }, { 0x0050C2, 0x13F000, 0x13FFFF, "Sentito Networks", "SENTITO-NETWORKS" }, { 0x0050C2, 0x156000, 0x156FFF, "CommServ Solutions Inc.", "COMMSERV-SOLUTIONS" }, { 0x0050C2, 0x14C000, 0x14CFFF, "Optibase Ltd.", "OPTIBASE" }, { 0x0050C2, 0x153000, 0x153FFF, "Advanced Devices SpA", "ADVANCED-DEVICES-SPA" }, { 0x0050C2, 0x142000, 0x142FFF, "Instrumeter A/S", "INSTRUMETER-A/S" }, { 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, 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, 0x117000, 0x117FFF, "Wintegra Ltd.", "WINTEGRA" }, { 0x0050C2, 0x0F9000, 0x0F9FFF, "Raven Industries", "RAVEN-INDUSTRIES" }, { 0x0050C2, 0x0F5000, 0x0F5FFF, "Spectra Technologies Holding Co., Ltd.", "SPECTRA-TECHNOLOGIES-HOLDING" }, { 0x0050C2, 0x0E5000, 0x0E5FFF, "Clearwater Networks", "CLEARWATER-NETWORKS" }, { 0x0050C2, 0x10D000, 0x10DFFF, "Implementa GmbH", "IMPLEMENTA" }, { 0x0050C2, 0x12D000, 0x12DFFF, "Megisto Systems, Inc.", "MEGISTO" }, { 0x0050C2, 0x129000, 0x129FFF, "TTPCom Ltd.", "TTPCOM" }, { 0x0050C2, 0x121000, 0x121FFF, "COE Limited", "COE" }, { 0x0050C2, 0x0D1000, 0x0D1FFF, "Renaissance Networking, Inc.", "RENAISSANCE-NETWORKING" }, { 0x0050C2, 0x0A3000, 0x0A3FFF, "BaSyTec GmbH", "BASYTEC" }, { 0x0050C2, 0x0B4000, 0x0B4FFF, "Wavefly Corporation", "WAVEFLY" }, { 0x0050C2, 0x0B0000, 0x0B0FFF, "LMI Technologies, Inc.", "LMI-TECHNOLOGIES" }, { 0x0050C2, 0x0AD000, 0x0ADFFF, "BMC Messsysteme GmbH", "BMC-MESSSYSTEME" }, { 0x0050C2, 0x0D4000, 0x0D4FFF, "Palm, Inc.", "PALM" }, { 0x0050C2, 0x0CF000, 0x0CFFFF, "PCSC", "PCSC" }, { 0x0050C2, 0x0C9000, 0x0C9FFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x0C1000, 0x0C1FFF, "Casabyte", "CASABYTE" }, { 0x0050C2, 0x0BE000, 0x0BEFFF, "Stella Electronics & Tagging", "STELLA-ELECTRONICS-TAGGING" }, { 0x0050C2, 0x0BA000, 0x0BAFFF, "Pro-Active", "PRO-ACTIVE" }, { 0x0050C2, 0x0B7000, 0x0B7FFF, "RYMIC", "RYMIC" }, { 0x0050C2, 0x0DE000, 0x0DEFFF, "Frederick Engineering", "FREDERICK-ENGINEERING" }, { 0x0050C2, 0x0DB000, 0x0DBFFF, "Cyberex", "CYBEREX" }, { 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, 0x073000, 0x073FFF, "Alstom Signalling Ltd.", "ALSTOM-SIGNALLING" }, { 0x0050C2, 0x06E000, 0x06EFFF, "Avtron Manufacturing Inc.", "AVTRON-MANUFACTURING" }, { 0x0050C2, 0x08C000, 0x08CFFF, "IP Unity", "IP-UNITY" }, { 0x0050C2, 0x089000, 0x089FFF, "Fenwal Italia S.P.A.", "FENWAL-ITALIA-S-P-A" }, { 0x0050C2, 0x088000, 0x088FFF, "TELINC Corporation", "TELINC" }, { 0x0050C2, 0x085000, 0x085FFF, "Crossport Systems", "CROSSPORT" }, { 0x0050C2, 0x07E000, 0x07EFFF, "JL-teknik", "JL-TEKNIK" }, { 0x0050C2, 0x082000, 0x082FFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x07F000, 0x07FFFF, "Dunti Corporation", "DUNTI" }, { 0x0050C2, 0x057000, 0x057FFF, "Lite F GmBH", "LITE-F" }, { 0x0050C2, 0x052000, 0x052FFF, "Mayo Foundation", "MAYO-FOUNDATION" }, { 0x0050C2, 0x065000, 0x065FFF, "Clever Devices, Ltd.", "CLEVER-DEVICES" }, { 0x0050C2, 0x05F000, 0x05FFFF, "Malden Electronics Ltd", "MALDEN-ELECTRONICS" }, { 0x0050C2, 0x036000, 0x036FFF, "Arcturus Networks Inc.", "ARCTURUS-NETWORKS" }, { 0x0050C2, 0x042000, 0x042FFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0x06B000, 0x06BFFF, "NCast Corporation", "NCAST" }, { 0x0050C2, 0x045000, 0x045FFF, "Chase Manhattan Bank", "CHASE-MANHATTAN-BANK" }, { 0x0050C2, 0x048000, 0x048FFF, "Cybectec Inc.", "CYBECTEC" }, { 0x0050C2, 0x035000, 0x035FFF, "Alliant Techsystems, Inc.", "ALLIANT-TECHSYSTEMS" }, { 0x0050C2, 0x022000, 0x022FFF, "Ashling Microsystems Ltd.", "ASHLING-MICROSYSTEMS" }, { 0x0050C2, 0x021000, 0x021FFF, "DRS Technologies Canada Co.", "DRS-TECHNOLOGIES-CANADA" }, { 0x0050C2, 0x008000, 0x008FFF, "Portable Add-Ons", "PORTABLE-ADD-ONS" }, { 0x0050C2, 0x005000, 0x005FFF, "GD California, Inc.", "GD-CALIFORNIA" }, { 0x0050C2, 0x02C000, 0x02CFFF, "Narrowband Telecommunications", "NARROWBAND-TELECOMMUNICATIONS" }, { 0x0050C2, 0x02B000, 0x02BFFF, "Nova Engineering Inc.", "NOVA-ENGINEERING" }, { 0x40D855, 0x1BE000, 0x1BEFFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x40D855, 0x1BB000, 0x1BBFFF, "Micromega Dynamics SA", "MICROMEGA-DYNAMICS" }, { 0x40D855, 0x1E4000, 0x1E4FFF, "STEK Ltd", "STEK" }, { 0x40D855, 0x1DD000, 0x1DDFFF, "BaOpt Benelux bv", "BAOPT-BENELUX" }, { 0x40D855, 0x1B6000, 0x1B6FFF, "Magic Systems", "MAGIC" }, { 0x40D855, 0x1B3000, 0x1B3FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x40D855, 0x1C8000, 0x1C8FFF, "Sensata Technologies", "SENSATA-TECHNOLOGIES" }, { 0x40D855, 0x1C5000, 0x1C5FFF, "Private", "PRIVATE" }, { 0x40D855, 0x1DA000, 0x1DAFFF, "Energy Technology and Control Ltd.", "ENERGY-AND-CONTROL" }, { 0x40D855, 0x1D0000, 0x1D0FFF, "Webeasy BV", "WEBEASY" }, { 0x40D855, 0x17D000, 0x17DFFF, "Kiwigrid GmbH", "KIWIGRID" }, { 0x40D855, 0x17C000, 0x17CFFF, "Critical Link", "CRITICAL-LINK" }, { 0x40D855, 0x17B000, 0x17BFFF, "LUCEO", "LUCEO" }, { 0x40D855, 0x191000, 0x191FFF, "Soukai Electric", "SOUKAI-ELECTRIC" }, { 0x40D855, 0x18F000, 0x18FFFF, "Beat Sensing co. , ltd.", "BEAT-SENSING" }, { 0x40D855, 0x18A000, 0x18AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x185000, 0x185FFF, "Standard Change Makers", "STANDARD-CHANGE-MAKERS" }, { 0x40D855, 0x187000, 0x187FFF, "CDEX Corp.", "CDEX" }, { 0x40D855, 0x186000, 0x186FFF, "KST technology", "KST" }, { 0x40D855, 0x178000, 0x178FFF, "REDER Domotic GmbH", "REDER-DOMOTIC" }, { 0x40D855, 0x172000, 0x172FFF, "YAWATA ELECTRIC INDUSTRIAL CO.,LTD.", "YAWATA-ELECTRIC-INDUSTRIAL" }, { 0x40D855, 0x171000, 0x171FFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x16E000, 0x16EFFF, "Secuinfo Co.Ltd", "SECUINFO" }, { 0x40D855, 0x157000, 0x157FFF, "Hitachi Power Solutions Co., Ltd.", "HITACHI-POWER-SOLUTIONS" }, { 0x40D855, 0x164000, 0x164FFF, "NFT Automatisierungssysteme GmbH", "NFT-AUTOMATISIERUNGSSYSTEME" }, { 0x40D855, 0x161000, 0x161FFF, "Solidscape Inc", "SOLIDSCAPE" }, { 0x40D855, 0x19C000, 0x19CFFF, "Parris Service Corporation", "PARRIS-SERVICE" }, { 0x40D855, 0x194000, 0x194FFF, "RF Code", "RF-CODE" }, { 0x40D855, 0x1A9000, 0x1A9FFF, "Lubino s.r.o.", "LUBINO-S-R-O" }, { 0x40D855, 0x1A6000, 0x1A6FFF, "RB-LINK Wireless", "RB-LINK-WIRELESS" }, { 0x40D855, 0x16B000, 0x16BFFF, "TECHWAY", "TECHWAY" }, { 0x40D855, 0x12D000, 0x12DFFF, "Biotage Sweden AB", "BIOTAGE-SWEDEN-AB" }, { 0x40D855, 0x12C000, 0x12CFFF, "NSP Europe Ltd", "NSP-EUROPE" }, { 0x40D855, 0x12B000, 0x12BFFF, "Mango DSP, Inc.", "MANGO-DSP" }, { 0x40D855, 0x138000, 0x138FFF, "Calon Associates Limited", "CALON-ASSOCIATES" }, { 0x40D855, 0x130000, 0x130FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x40D855, 0x145000, 0x145FFF, "Weber Marking Systems GmbH", "WEBER-MARKING" }, { 0x40D855, 0x142000, 0x142FFF, "Tetracore, Inc.", "TETRACORE" }, { 0x40D855, 0x123000, 0x123FFF, "ZAO NPC Kompjuternie Technologii", "ZAO-NPC-KOMPJUTERNIE-TECHNOLOGII" }, { 0x40D855, 0x122000, 0x122FFF, "ATX Networks Ltd.", "ATX-NETWORKS" }, { 0x40D855, 0x11E000, 0x11EFFF, "CEMSI, Inc.", "CEMSI" }, { 0x40D855, 0x121000, 0x121FFF, "shanghai Anjian Information technology co. , ltd.", "SHANGHAI-ANJIAN-INFORMATION" }, { 0x40D855, 0x107000, 0x107FFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x40D855, 0x10E000, 0x10EFFF, "HKS-Prozesstechnik GmbH", "HKS-PROZESSTECHNIK" }, { 0x40D855, 0x0FD000, 0x0FDFFF, "MONOGRAM technologies ltd", "MONOGRAM-TECHNOLOGIES" }, { 0x40D855, 0x117000, 0x117FFF, "RCS Energy Management Limited", "RCS-ENERGY-MANAGEMENT" }, { 0x40D855, 0x118000, 0x118FFF, "University of Nebraska -- Lincoln", "UNIVERSITY-OF-NEBRASKA----LINCOLN" }, { 0x40D855, 0x114000, 0x114FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x111000, 0x111FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x10A000, 0x10AFFF, "DAVIS DERBY LIMITED", "DAVIS-DERBY" }, { 0x40D855, 0x0EF000, 0x0EFFFF, "GeneSys Elektronik GmbH", "GENESYS-ELEKTRONIK" }, { 0x40D855, 0x0E7000, 0x0E7FFF, "LIGHTSTAR", "LIGHTSTAR" }, { 0x40D855, 0x0E6000, 0x0E6FFF, "Kyoritsu Electric Corp.", "KYORITSU-ELECTRIC" }, { 0x40D855, 0x14C000, 0x14CFFF, "PLT", "PLT" }, { 0x40D855, 0x14F000, 0x14FFFF, "TDS Software Solutions Pty Ltd", "TDS-SOFTWARE-SOLUTIONS-PTY" }, { 0x40D855, 0x0F3000, 0x0F3FFF, "ECON Systems Inc.", "ECON" }, { 0x40D855, 0x0C6000, 0x0C6FFF, "comtime GmbH", "COMTIME" }, { 0x40D855, 0x0C3000, 0x0C3FFF, "APG CASH DRAWER", "APG-CASH-DRAWER" }, { 0x40D855, 0x0BC000, 0x0BCFFF, "Aplex Technology Inc.", "APLEX" }, { 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, 0x0A2000, 0x0A2FFF, "Xemex NV", "XEMEX-NV" }, { 0x40D855, 0x09D000, 0x09DFFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x0AC000, 0x0ACFFF, "Fraunhofer HHI", "FRAUNHOFER-HHI" }, { 0x40D855, 0x083000, 0x083FFF, "DELOPT", "DELOPT" }, { 0x40D855, 0x082000, 0x082FFF, "ard sa", "ARD" }, { 0x40D855, 0x081000, 0x081FFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x0DB000, 0x0DBFFF, "Top Connect OU", "TOP-CONNECT-OU" }, { 0x40D855, 0x0DC000, 0x0DCFFF, "NVS Technologies Inc", "NVS-TECHNOLOGIES" }, { 0x40D855, 0x0D8000, 0x0D8FFF, "NEXT! s.c. S.Piela B.Dryja", "NEXT!-S-C-S-PIELA-B-DRYJA" }, { 0x40D855, 0x0D0000, 0x0D0FFF, "Icraft Oy", "ICRAFT-OY" }, { 0x40D855, 0x0E5000, 0x0E5FFF, "Triton Electronics LTD", "TRITON-ELECTRONICS" }, { 0x40D855, 0x0DD000, 0x0DDFFF, "Embed Limited", "EMBED" }, { 0x40D855, 0x093000, 0x093FFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x40D855, 0x08B000, 0x08BFFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x40D855, 0x062000, 0x062FFF, "Tech Source Inc", "TECH-SOURCE" }, { 0x40D855, 0x05F000, 0x05FFFF, "EPSa GmbH", "EPSA" }, { 0x40D855, 0x05C000, 0x05CFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x02F000, 0x02FFFF, "Adva Technologies", "ADVA-TECHNOLOGIES" }, { 0x40D855, 0x06C000, 0x06CFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x40D855, 0x069000, 0x069FFF, "Smartcom-Bulgaria AD", "SMARTCOM-BULGARIA-AD" }, { 0x40D855, 0x048000, 0x048FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x043000, 0x043FFF, "SchulerControl GmbH", "SCHULERCONTROL" }, { 0x40D855, 0x03E000, 0x03EFFF, "Vishay Celtron Technologies, Inc.", "VISHAY-CELTRON-TECHNOLOGIES" }, { 0x40D855, 0x039000, 0x039FFF, "CI Systems Ltd", "CI" }, { 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, 0x02C000, 0x02CFFF, "InventLab s.c.", "INVENTLAB-S-C" }, { 0x40D855, 0x027000, 0x027FFF, "GRUPO EPELSA S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x024000, 0x024FFF, "Electrical Geodesics Incorporated", "ELECTRICAL-GEODESICS-INCORPORATED" }, { 0x40D855, 0x01A000, 0x01AFFF, "MEGGITT DEFENSE SYSTEMS INC.", "MEGGITT-DEFENSE" }, { 0x40D855, 0x01D000, 0x01DFFF, "Scharco Elektronik GmbH", "SCHARCO-ELEKTRONIK" }, { 0x40D855, 0x07E000, 0x07EFFF, "TESCOM CORPORATION", "TESCOM" }, { 0x40D855, 0x078000, 0x078FFF, "NACHI-FUJIKOSHI CORP", "NACHI-FUJIKOSHI" }, { 0x40D855, 0x077000, 0x077FFF, "TOEC TECHNOLOGY CO.,LTD", "TOEC" }, { 0x40D855, 0x074000, 0x074FFF, "Sphere Medical Ltd", "SPHERE-MEDICAL" }, { 0x40D855, 0x071000, 0x071FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x40D855, 0x01E000, 0x01EFFF, "A2S", "A2S" }, { 0x40D855, 0x017000, 0x017FFF, "Franke Aquarotter GmbH", "FRANKE-AQUAROTTER" }, { 0x0050C2, 0xFC2000, 0xFC2FFF, "ELTA", "ELTA" }, { 0x0050C2, 0xFC1000, 0xFC1FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 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, 0xFD4000, 0xFD4FFF, "Insitu, Inc.", "INSITU" }, { 0x0050C2, 0xFF3000, 0xFF3FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x0050C2, 0xFF2000, 0xFF2FFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0xFE8000, 0xFE8FFF, "Mango DSP, Inc.", "MANGO-DSP" }, { 0x0050C2, 0xFE9000, 0xFE9FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0xFEA000, 0xFEAFFF, "Brunel GmbH Section Communications", "BRUNEL-SECTION-COMMUNICATION" }, { 0x0050C2, 0xFFC000, 0xFFCFFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0xFFD000, 0xFFDFFF, "Touchless Biometric Systems AG", "TOUCHLESS-BIOMETRIC" }, { 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, 0xFAE000, 0xFAEFFF, "ATI Automa§£o Telecomunica§µes e InformĦtica Ltda", "ATI-AUTOMA§£O-TELECOMUNICA§µES-E-INFORMĦTICA-LTDA" }, { 0x0050C2, 0xFCB000, 0xFCBFFF, "Propagation Systems Limited", "PROPAGATION" }, { 0x0050C2, 0xFCC000, 0xFCCFFF, "Soudronic AG", "SOUDRONIC" }, { 0x0050C2, 0xFCA000, 0xFCAFFF, "Telemisis Ltd", "TELEMISIS" }, { 0x0050C2, 0xFE0000, 0xFE0FFF, "Azurtest", "AZURTEST" }, { 0x0050C2, 0xFC0000, 0xFC0FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xFB7000, 0xFB7FFF, "Pounce Consulting", "POUNCE-CONSULTING" }, { 0x0050C2, 0xFB8000, 0xFB8FFF, "TECHNO CO.,LTD.", "TECHNO" }, { 0x0050C2, 0xFB6000, 0xFB6FFF, "ARGUS-SPECTRUM", "ARGUS-SPECTRUM" }, { 0x0050C2, 0xF6D000, 0xF6DFFF, "Pro Design Electronic GmbH", "PRO-DESIGN" }, { 0x0050C2, 0xF6C000, 0xF6CFFF, "Pro Design Electronic GmbH", "PRO-DESIGN" }, { 0x0050C2, 0xF59000, 0xF59FFF, "G3 Technologies", "G3-TECHNOLOGIES" }, { 0x0050C2, 0xF58000, 0xF58FFF, "IEEE-SA", "IEEE" }, { 0x0050C2, 0xF80000, 0xF80FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 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, 0xF8A000, 0xF8AFFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xF8B000, 0xF8BFFF, "comlet Verteilte Systeme GmbH", "COMLET-VERTEILTE-SYSTEME" }, { 0x0050C2, 0xFA6000, 0xFA6FFF, "Hilkom digital GmbH", "HILKOM-DIGITAL" }, { 0x0050C2, 0xF9D000, 0xF9DFFF, "JSC Kaluga Teletypes Manufacturing Plant", "JSC-KALUGA-TELETYPES-MANUFACTURING-PLANT" }, { 0x0050C2, 0xF9C000, 0xF9CFFF, "R&D KOMETEH", "R-D-KOMETEH" }, { 0x0050C2, 0xF4F000, 0xF4FFFF, "BAP Precision Ltd.", "BAP-PRECISION" }, { 0x0050C2, 0xF4E000, 0xF4EFFF, "Heinzinger electronic GmbH", "HEINZINGER" }, { 0x0050C2, 0xF63000, 0xF63FFF, "Triax A/S", "TRIAX-A/S" }, { 0x0050C2, 0xF62000, 0xF62FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xF94000, 0xF94FFF, "Digital Barriers", "DIGITAL-BARRIERS" }, { 0x0050C2, 0xF95000, 0xF95FFF, "TTi LTD (Thurlby Thandar Instruments LTD)", "TTI-THURLBY-THANDAR-INSTRUMENTS" }, { 0x0050C2, 0xFAD000, 0xFADFFF, "Finishing Brands", "FINISHING-BRANDS" }, { 0x0050C2, 0xEF5000, 0xEF5FFF, "Human Network Labs, Inc.", "HUMAN-NETWORK-LABS" }, { 0x0050C2, 0xEF6000, 0xEF6FFF, "Netline Communication Technologies", "NETLINE-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0xEED000, 0xEEDFFF, "Future Design Controls, Inc", "FUTURE-DESIGN-CONTROLS" }, { 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, 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, 0xED7000, 0xED7FFF, "FBT Elettronica spa", "FBT-ELETTRONICA-SPA" }, { 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, 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, 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, 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, 0xF1D000, 0xF1DFFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0xF14000, 0xF14FFF, "VISION SYSTEMS AERONAUTIC", "VISION-AERONAUTIC" }, { 0x0050C2, 0xF13000, 0xF13FFF, "Packet Plus, Inc.", "PACKET-PLUS" }, { 0x0050C2, 0xF32000, 0xF32FFF, "Net4Things", "NET4THINGS" }, { 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, 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, 0xEA8000, 0xEA8FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0xEA7000, 0xEA7FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xEA6000, 0xEA6FFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xE69000, 0xE69FFF, "Netmaker", "NETMAKER" }, { 0x0050C2, 0xE68000, 0xE68FFF, "Kyoritsu Electric Corporation", "KYORITSU-ELECTRIC" }, { 0x0050C2, 0xE89000, 0xE89FFF, "PROTEQSEN", "PROTEQSEN" }, { 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, 0xE70000, 0xE70FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0xE93000, 0xE93FFF, "Perceptive Pixel Inc.", "PERCEPTIVE-PIXEL" }, { 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, 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, 0xE5F000, 0xE5FFFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x0050C2, 0xE5E000, 0xE5EFFF, "OREP", "OREP" }, { 0x0050C2, 0xE55000, 0xE55FFF, "TTi Ltd", "TTI" }, { 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, 0xE4A000, 0xE4AFFF, "GHL Systems Bhd", "GHL-BHD" }, { 0x0050C2, 0xE4B000, 0xE4BFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE40000, 0xE40FFF, "Ecrin Systems", "ECRIN" }, { 0x0050C2, 0xE41000, 0xE41FFF, "Higeco S.r.l.", "HIGECO-S-R-L" }, { 0x0050C2, 0xE42000, 0xE42FFF, "Wings for Media SL", "WINGS-FOR-MEDIA-SL" }, { 0x0050C2, 0xE1A000, 0xE1AFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xE18000, 0xE18FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xE19000, 0xE19FFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x0050C2, 0xE54000, 0xE54FFF, "Arcos Technologies LTD", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xE0D000, 0xE0DFFF, "Unixmedia Srl", "UNIXMEDIA-SRL" }, { 0x0050C2, 0xE0E000, 0xE0EFFF, "PMAC JAPAN", "PMAC-JAPAN" }, { 0x0050C2, 0xE07000, 0xE07FFF, "Protagon Process Technologies GmbH", "PROTAGON-PROCESS-TECHNOLOGIES" }, { 0x0050C2, 0xE06000, 0xE06FFF, "Ebner Electronic GmbH", "EBNER" }, { 0x0050C2, 0xE05000, 0xE05FFF, "NOCOSIUM", "NOCOSIUM" }, { 0x0050C2, 0xE2D000, 0xE2DFFF, "Funkwerk IT Karlsfeld GmbH", "FUNKWERK-IT-KARLSFELD" }, { 0x0050C2, 0xE2E000, 0xE2EFFF, "DS! Ingenieurbuero", "DS!-INGENIEURBUERO" }, { 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, 0xE23000, 0xE23FFF, "VITEC", "VITEC" }, { 0x0050C2, 0xE24000, 0xE24FFF, "DiTEST Fahrzeugdiagnose GmbH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0xE22000, 0xE22FFF, "Michael Riedel Transformatorenbau GmbH", "MICHAEL-RIEDEL-TRANSFORMATORENBAU" }, { 0x0050C2, 0xE2C000, 0xE2CFFF, "EN ElectronicNetwork Hamburg GmbH", "EN-ELECTRONICNETWORK-HAMBURG" }, { 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, 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, 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, 0xD95000, 0xD95FFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xD96000, 0xD96FFF, "CONTEC GmbH", "CONTEC" }, { 0x0050C2, 0xD97000, 0xD97FFF, "ERS electronic GmbH", "ERS" }, { 0x0050C2, 0xD8D000, 0xD8DFFF, "CS-Instruments", "CS-INSTRUMENTS" }, { 0x0050C2, 0xD8B000, 0xD8BFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xD8C000, 0xD8CFFF, "iRphotonics", "IRPHOTONICS" }, { 0x0050C2, 0xD5A000, 0xD5AFFF, "Embedded Monitoring Systems Ltd.", "EMBEDDED-MONITORING" }, { 0x0050C2, 0xD51000, 0xD51FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x0050C2, 0xD50000, 0xD50FFF, "Solbrig Electronics, Inc.", "SOLBRIG-ELECTRONICS" }, { 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, 0xD77000, 0xD77FFF, "Fr.SauterAG", "FR-SAUTERAG" }, { 0x0050C2, 0xD78000, 0xD78FFF, "P4Q Electronics", "P4Q-ELECTRONICS" }, { 0x0050C2, 0xD79000, 0xD79FFF, "DSI RF Systems, Inc.", "DSI-RF" }, { 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, 0xD45000, 0xD45FFF, "Technagon GmbH", "TECHNAGON" }, { 0x0050C2, 0xD44000, 0xD44FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD3E000, 0xD3EFFF, "Synatec Electronic GmbH", "SYNATEC" }, { 0x0050C2, 0xD3C000, 0xD3CFFF, "ASSYSTEM France", "ASSYSTEM-FRANCE" }, { 0x0050C2, 0xD3D000, 0xD3DFFF, "Tellabs Operations Inc.", "TELLABS-OPERATIONS" }, { 0x0050C2, 0xD82000, 0xD82FFF, "Audio Authority Corp", "AUDIO-AUTHORITY" }, { 0x0050C2, 0xD83000, 0xD83FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0xD81000, 0xD81FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xD63000, 0xD63FFF, "DATAREGIS S.A.", "DATAREGIS" }, { 0x0050C2, 0xD64000, 0xD64FFF, "TV1 GmbH", "TV1" }, { 0x0050C2, 0xD65000, 0xD65FFF, "TX Technology Corp", "TX" }, { 0x0050C2, 0xD5B000, 0xD5BFFF, "Infinition Inc.", "INFINITION" }, { 0x0050C2, 0xDA8000, 0xDA8FFF, "Sine Systems, Inc.", "SINE" }, { 0x0050C2, 0xDA0000, 0xDA0FFF, "Precision Remotes", "PRECISION-REMOTES" }, { 0x0050C2, 0xD9F000, 0xD9FFFF, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x0050C2, 0xCF5000, 0xCF5FFF, "Aircell", "AIRCELL" }, { 0x0050C2, 0xCF4000, 0xCF4FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xD1F000, 0xD1FFFF, "Olympus NDT Canada Inc.", "OLYMPUS-NDT-CANADA" }, { 0x0050C2, 0xD20000, 0xD20FFF, "7+ Kft", "7+-KFT" }, { 0x0050C2, 0xD0B000, 0xD0BFFF, "CODACO ELECTRONIC s.r.o.", "CODACO-S-R-O" }, { 0x0050C2, 0xCFF000, 0xCFFFFF, "Infrasafe, Inc.", "INFRASAFE" }, { 0x0050C2, 0xCFE000, 0xCFEFFF, "Techleader", "TECHLEADER" }, { 0x0050C2, 0xD15000, 0xD15FFF, "MSR-Office GmbH", "MSR-OFFICE" }, { 0x0050C2, 0xD16000, 0xD16FFF, "Imricor Medical Systems, Inc.", "IMRICOR-MEDICAL" }, { 0x0050C2, 0xD0C000, 0xD0CFFF, "JVL Industri Elektronik", "JVL-INDUSTRI-ELEKTRONIK" }, { 0x0050C2, 0xCEA000, 0xCEAFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xCEB000, 0xCEBFFF, "Toyon Research Corporation", "TOYON-RESEARCH" }, { 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, 0xC31000, 0xC31FFF, "4D Technology Corporation", "4D" }, { 0x0050C2, 0xC2B000, 0xC2BFFF, "Z-App Systems, Inc.", "Z-APP" }, { 0x0050C2, 0xC27000, 0xC27FFF, "Qtechnology A/S", "QTECHNOLOGY-A/S" }, { 0x0050C2, 0xC82000, 0xC82FFF, "Kyosha Industries", "KYOSHA-INDUSTRIES" }, { 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, 0xBC2000, 0xBC2FFF, "XSLENT Energy Technologies LLC", "XSLENT-ENERGY-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xBBC000, 0xBBCFFF, "ImpactSystems", "IMPACTSYSTEMS" }, { 0x0050C2, 0xBC1000, 0xBC1FFF, "Sentec Ltd", "SENTEC" }, { 0x0050C2, 0xB7E000, 0xB7EFFF, "NARETRENDS", "NARETRENDS" }, { 0x0050C2, 0xB7F000, 0xB7FFFF, "Enatel", "ENATEL" }, { 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, 0xB91000, 0xB91FFF, "Finnet-Service Ltd.", "FINNET-SERVICE" }, { 0x0050C2, 0xB92000, 0xB92FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 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, 0xC0D000, 0xC0DFFF, "Fr. SauterAG", "FR-SAUTERAG" }, { 0x0050C2, 0xC03000, 0xC03FFF, "Volumatic Limited.", "VOLUMATIC" }, { 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, 0xBA6000, 0xBA6FFF, "Jomitek", "JOMITEK" }, { 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, 0xBD0000, 0xBD0FFF, "EDC wifi", "EDC-WIFI" }, { 0x0050C2, 0xBCE000, 0xBCEFFF, "TV Portal Co., Ltd.", "TV-PORTAL" }, { 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, 0xB9C000, 0xB9CFFF, "Dave srl", "DAVE-SRL" }, { 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, 0xB25000, 0xB25FFF, "Triax A/S", "TRIAX-A/S" }, { 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, 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, 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, 0xB51000, 0xB51FFF, "Aeroflex GmbH", "AEROFLEX" }, { 0x0050C2, 0xB4D000, 0xB4DFFF, "Troll Systems Corporation", "TROLL" }, { 0x0050C2, 0xB71000, 0xB71FFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 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, 0xB4C000, 0xB4CFFF, "ElectroCom", "ELECTROCOM" }, { 0x0050C2, 0xB49000, 0xB49FFF, "Aplex Technology Inc.", "APLEX" }, { 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, 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, 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, 0xB30000, 0xB30FFF, "Applied Micro Electronics AME BV", "APPLIED-MICRO-ELECTRONICS-AME" }, { 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, 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, 0xAF3000, 0xAF3FFF, "Palomar Products, Inc.", "PALOMAR-PRODUCTS" }, { 0x0050C2, 0xB08000, 0xB08FFF, "Goerlitz AG", "GOERLITZ" }, { 0x0050C2, 0xB07000, 0xB07FFF, "FARECO", "FARECO" }, { 0x0050C2, 0xB04000, 0xB04FFF, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x0050C2, 0xB03000, 0xB03FFF, "Spider Tecnologia Ind. e Com. Ltda.", "SPIDER-TECNOLOGIA-IND-E-COM-LTDA" }, { 0x0050C2, 0xA90000, 0xA90FFF, "S.two Corporation", "S-TWO" }, { 0x0050C2, 0xA8C000, 0xA8CFFF, "Redwire, LLC", "REDWIRE-LLC" }, { 0x0050C2, 0xA8B000, 0xA8BFFF, "Navicron Oy", "NAVICRON-OY" }, { 0x0050C2, 0xA87000, 0xA87FFF, "Littlemore Scientific", "LITTLEMORE-SCIENTIFIC" }, { 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, 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, 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, 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, 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, 0xA69000, 0xA69FFF, "Advanced Integrated Systems", "ADVANCED-INTEGRATED" }, { 0x0050C2, 0xA5F000, 0xA5FFFF, "Alga Microwave Inc", "ALGA-MICROWAVE" }, { 0x0050C2, 0xA55000, 0xA55FFF, "Arrowvale Electronics", "ARROWVALE-ELECTRONICS" }, { 0x0050C2, 0xA7D000, 0xA7DFFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0xA73000, 0xA73FFF, "KYOEI ENGINEERING Co.,Ltd.", "KYOEI-ENGINEERING" }, { 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, 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, 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, 0x96C000, 0x96CFFF, "Aqua Cooler Pty Ltd", "AQUA-COOLER-PTY" }, { 0x0050C2, 0x962000, 0x962FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x961000, 0x961FFF, "Picsolve International Limited", "PICSOLVE" }, { 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, 0x8E8000, 0x8E8FFF, "Friedrich Kuhnt GmbH", "FRIEDRICH-KUHNT" }, { 0x0050C2, 0x8E2000, 0x8E2FFF, "Wireless Cables Inc", "WIRELESS-CABLES" }, { 0x0050C2, 0x8E3000, 0x8E3FFF, "bioMİrieux Italia S.p.A.", "BIOMİRIEUX-ITALIA-S-P-A" }, { 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, 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, 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, 0x94C000, 0x94CFFF, "TEMIX", "TEMIX" }, { 0x0050C2, 0x948000, 0x948FFF, "ELECTRONIA", "ELECTRONIA" }, { 0x0050C2, 0x949000, 0x949FFF, "taskit GmbH", "TASKIT" }, { 0x0050C2, 0x91D000, 0x91DFFF, "Rosendahl Studiotechnik GmbH", "ROSENDAHL-STUDIOTECHNIK" }, { 0x0050C2, 0x913000, 0x913FFF, "Selex Ex Ltd", "SELEX-EX" }, { 0x0050C2, 0x95F000, 0x95FFFF, "METRONIC APARATURA KONTROLNO - POMIAROWA", "METRONIC-APARATURA-KONTROLNO---POMIAROWA" }, { 0x0050C2, 0x95E000, 0x95EFFF, "BEEcube Inc.", "BEECUBE" }, { 0x0050C2, 0x95B000, 0x95BFFF, "AS Solar GmbH", "AS-SOLAR" }, { 0x0050C2, 0x95A000, 0x95AFFF, "TechnoAP", "TECHNOAP" }, { 0x0050C2, 0x959000, 0x959FFF, "DECTRIS Ltd.", "DECTRIS" }, { 0x0050C2, 0x956000, 0x956FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x957000, 0x957FFF, "STRATEC Control Systems", "STRATEC-CONTROL" }, { 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, 0x93B000, 0x93BFFF, "Reliatronics Inc.", "RELIATRONICS" }, { 0x0050C2, 0x931000, 0x931FFF, "Korea Telecom Internet Solutions (KTIS)", "KOREA-TELECOM-INTERNET-SOLUTIONS-KTIS" }, { 0x0050C2, 0x8F7000, 0x8F7FFF, "TGE Co., Ltd.", "TGE" }, { 0x0050C2, 0x902000, 0x902FFF, "China Railway Signal & Communication Corp.", "CHINA-RAILWAY-SIGNAL-COMMUNICATION" }, { 0x0050C2, 0x903000, 0x903FFF, "EcoAxis Systems Pvt. Ltd.", "ECOAXIS-PVT" }, { 0x0050C2, 0x927000, 0x927FFF, "ATIS group s.r.o.", "ATIS-GROUP-S-R-O" }, { 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, 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, 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, 0x868000, 0x868FFF, "Aethon, Inc.", "AETHON" }, { 0x0050C2, 0x867000, 0x867FFF, "Syntronics", "SYNTRONICS" }, { 0x0050C2, 0x8CA000, 0x8CAFFF, "Altair semiconductor Ltd", "ALTAIR-SEMICONDUCTOR" }, { 0x0050C2, 0x8C5000, 0x8C5FFF, "Vortex Engineering pvt ltd", "VORTEX-ENGINEERING-PVT" }, { 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, 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, 0x886000, 0x886FFF, "Transas Scandinavia AB", "TRANSAS-SCANDINAVIA-AB" }, { 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, 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, 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, 0x839000, 0x839FFF, "IMS Rĥntgensysteme GmbH", "IMS-ROENTGENSYSTEME" }, { 0x0050C2, 0x834000, 0x834FFF, "ANTEK GmbH", "ANTEK" }, { 0x0050C2, 0x835000, 0x835FFF, "Communications Laboratories Inc", "COMMUNICATION-LABORATORIES" }, { 0x0050C2, 0x85F000, 0x85FFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 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, 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, 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, 0x80E000, 0x80EFFF, "Bruno International Ltd.", "BRUNO" }, { 0x0050C2, 0x80F000, 0x80FFFF, "Selekron Microcontrol s.l.", "SELEKRON-MICROCONTROL-S-L" }, { 0x0050C2, 0x805000, 0x805FFF, "MultimediaLED", "MULTIMEDIALED" }, { 0x0050C2, 0x804000, 0x804FFF, "SoftSwitching Technologies", "SOFTSWITCHING-TECHNOLOGIES" }, { 0x0050C2, 0x7C0000, 0x7C0FFF, "European Industrial Electronics B.V.", "EUROPEAN-INDUSTRIAL-ELECTRONICS" }, { 0x0050C2, 0x7B6000, 0x7B6FFF, "Alstom (Schweiz) AG", "ALSTOM-SCHWEIZ" }, { 0x0050C2, 0x819000, 0x819FFF, "Cabinplant A/S", "CABINPLANT-A/S" }, { 0x0050C2, 0x818000, 0x818FFF, "Wireless Value BV", "WIRELESS-VALUE" }, { 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, 0x782000, 0x782FFF, "Phytec Mestechnik GmbH", "PHYTEC-MESTECHNIK" }, { 0x0050C2, 0x779000, 0x779FFF, "Coral Telecom Ltd", "CORAL-TELECOM" }, { 0x0050C2, 0x77B000, 0x77BFFF, "Itibia Technologies, Inc.", "ITIBIA-TECHNOLOGIES" }, { 0x0050C2, 0x777000, 0x777FFF, "Euro Display Srl", "EURO-DISPLAY-SRL" }, { 0x0050C2, 0x778000, 0x778FFF, "SunGard Vivista", "SUNGARD-VIVISTA" }, { 0x0050C2, 0x771000, 0x771FFF, "ZigBee Alliance", "ZIGBEE-ALLIANCE" }, { 0x0050C2, 0x76D000, 0x76DFFF, "Mobilisme", "MOBILISME" }, { 0x0050C2, 0x76C000, 0x76CFFF, "EFG CZ spol. s r.o.", "EFG-CZ-SPOL-S-R-O" }, { 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, 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, 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, 0x73D000, 0x73DFFF, "cryptiris", "CRYPTIRIS" }, { 0x0050C2, 0x73C000, 0x73CFFF, "Simicon", "SIMICON" }, { 0x0050C2, 0x733000, 0x733FFF, "Cimetrics Research Pty Ltd", "CIMETRICS-RESEARCH-PTY" }, { 0x0050C2, 0x732000, 0x732FFF, "Schlumberger K.K.", "SCHLUMBERGER-K-K" }, { 0x0050C2, 0x751000, 0x751FFF, "e&s Engineering & Software GmbH", "E-S-ENGINEERING-SOFTWARE" }, { 0x0050C2, 0x750000, 0x750FFF, "Brightlights Intellectual Property Ltd", "BRIGHTLIGHTS-INTELLECTUAL-PROPERTY" }, { 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, 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, 0x746000, 0x746FFF, "Realtronix Company", "REALTRONIX-COMPANY" }, { 0x0050C2, 0x747000, 0x747FFF, "CDSA Dam Neck", "CDSA-DAM-NECK" }, { 0x0050C2, 0x729000, 0x729FFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0x71F000, 0x71FFFF, "ASC telecom AG", "ASC-TELECOM" }, { 0x0050C2, 0x71D000, 0x71DFFF, "MG s.r.l.", "MG-S-R-L" }, { 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, 0x6C6000, 0x6C6FFF, "MedAvant Healthcare Solutions", "MEDAVANT-HEALTHCARE-SOLUTIONS" }, { 0x0050C2, 0x6C7000, 0x6C7FFF, "QuickCircuit Ltd.", "QUICKCIRCUIT" }, { 0x0050C2, 0x6BD000, 0x6BDFFF, "Mitron Oy", "MITRON-OY" }, { 0x0050C2, 0x6C2000, 0x6C2FFF, "HoseoTelnet Inc...", "HOSEOTELNET" }, { 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, 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, 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, 0x6B2000, 0x6B2FFF, "Edgeware AB", "EDGEWARE-AB" }, { 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, 0x66A000, 0x66AFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0x663000, 0x663FFF, "COE Limited", "COE" }, { 0x0050C2, 0x687000, 0x687FFF, "Access Specialties, Inc", "ACCESS-SPECIALTIES" }, { 0x0050C2, 0x681000, 0x681FFF, "Owasys Advanced Wireless Devices", "OWASYS-ADVANCED-WIRELESS-DEVICES" }, { 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, 0x66D000, 0x66DFFF, "DIGITEK S.p.A.", "DIGITEK-S-P-A" }, { 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, 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, 0x64C000, 0x64CFFF, "CIS Corporation", "CIS" }, { 0x0050C2, 0x64F000, 0x64FFFF, "MA Lighting Technology GmbH", "MA-LIGHTING" }, { 0x0050C2, 0x645000, 0x645FFF, "The Software Group Limited", "THE-SOFTWARE-GROUP" }, { 0x0050C2, 0x5DE000, 0x5DEFFF, "Magal Senstar Inc.", "MAGAL-SENSTAR" }, { 0x0050C2, 0x5DD000, 0x5DDFFF, "SomerData ltd", "SOMERDATA" }, { 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, 0x58D000, 0x58DFFF, "ZAO", "ZAO" }, { 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, 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, 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, 0x577000, 0x577FFF, "Advanced Software Technologies", "ADVANCED-SOFTWARE-TECHNOLOGIES" }, { 0x0050C2, 0x578000, 0x578FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x573000, 0x573FFF, "DATAMICRO Co., Ltd.", "DATAMICRO" }, { 0x0050C2, 0x569000, 0x569FFF, "Twinwin Technplogy Co.,Ltd.", "TWINWIN-TECHNPLOGY" }, { 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, 0x5A1000, 0x5A1FFF, "Vestfold Butikkdata AS", "VESTFOLD-BUTIKKDATA-AS" }, { 0x0050C2, 0x527000, 0x527FFF, "IRTrans", "IRTRANS" }, { 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, 0x51E000, 0x51EFFF, "Alcon Technologies", "ALCON-TECHNOLOGIES" }, { 0x0050C2, 0x548000, 0x548FFF, "I.T.W. Betaprint", "I-T-W-BETAPRINT" }, { 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, 0x53F000, 0x53FFFF, "Ellips B.V.", "ELLIPS" }, { 0x0050C2, 0x53B000, 0x53BFFF, "Teleks Co. Ltd.", "TELEKS" }, { 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, 0x531000, 0x531FFF, "Orion Technologies, Incorporated", "ORION-TECHNOLOGIES-INCORPORATED" }, { 0x0050C2, 0x52B000, 0x52BFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x52A000, 0x52AFFF, "OMNITRONICS PTY LTD", "OMNITRONICS-PTY" }, { 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, 0x511000, 0x511FFF, "Tecna Srl", "TECNA-SRL" }, { 0x0050C2, 0x512000, 0x512FFF, "Linear Acoustic, Inc", "LINEAR-ACOUSTIC" }, { 0x0050C2, 0x4E8000, 0x4E8FFF, "SATEL sp. z o.o.", "SATEL-SP-Z-O-O" }, { 0x0050C2, 0x4DF000, 0x4DFFFF, "Thermo Electron", "THERMO-ELECTRON" }, { 0x0050C2, 0x4DE000, 0x4DEFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0x506000, 0x506FFF, "7+ Kft", "7+-KFT" }, { 0x0050C2, 0x4FC000, 0x4FCFFF, "Hwayoung RF Solution Inc", "HWAYOUNG-RF-SOLUTION" }, { 0x0050C2, 0x4F2000, 0x4F2FFF, "Tantronic AG", "TANTRONIC" }, { 0x0050C2, 0x4E9000, 0x4E9FFF, "Seachange international", "SEACHANGE" }, { 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, 0x4B7000, 0x4B7FFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x4B6000, 0x4B6FFF, "General Resources Co., LTD.", "GENERAL-RESOURCES" }, { 0x0050C2, 0x4D5000, 0x4D5FFF, "SEBA Design Pty Ltd", "SEBA-DESIGN-PTY" }, { 0x0050C2, 0x4D4000, 0x4D4FFF, "Herholdt Controls srl", "HERHOLDT-CONTROLS-SRL" }, { 0x0050C2, 0x4CB000, 0x4CBFFF, "Verint Systems Ltd", "VERINT" }, { 0x0050C2, 0x481000, 0x481FFF, "Computer Sciences Corp", "SCIENCES" }, { 0x0050C2, 0x482000, 0x482FFF, "PRIAMUS SYSTEM TECHNOLOGIES AG", "PRIAMUS-SYSTEM-TECHNOLOGIES" }, { 0x0050C2, 0x47F000, 0x47FFFF, "BRIT Inc.", "BRIT" }, { 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, 0x496000, 0x496FFF, "Acutelogic Corporation", "ACUTELOGIC" }, { 0x0050C2, 0x493000, 0x493FFF, "Artis GmbH", "ARTIS" }, { 0x0050C2, 0x495000, 0x495FFF, "VAZA Elektronik AB", "VAZA-ELEKTRONIK-AB" }, { 0x0050C2, 0x492000, 0x492FFF, "TRAFSYS AS", "TRAFSYS-AS" }, { 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, 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, 0x49C000, 0x49CFFF, "Envisacor Technologies Inc.", "ENVISACOR-TECHNOLOGIES" }, { 0x0050C2, 0x49D000, 0x49DFFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0x474000, 0x474FFF, "Venue 1, Inc.", "VENUE-1" }, { 0x0050C2, 0x4A7000, 0x4A7FFF, "iseg Spezialelektronik GmbH", "ISEG-SPEZIALELEKTRONIK" }, { 0x0050C2, 0x44E000, 0x44EFFF, "QQ Technology,Inc", "QQ" }, { 0x0050C2, 0x394000, 0x394FFF, "Embedit A/S", "EMBEDIT-A/S" }, { 0x0050C2, 0x3E8000, 0x3E8FFF, "Conformative Systems, Inc.", "CONFORMATIVE" }, { 0x0050C2, 0x3E9000, 0x3E9FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x3E3000, 0x3E3FFF, "CSIRO - Division of Exploration and Mining", "CSIRO---DIVISION-OF-EXPLORATION-AND-MINING" }, { 0x0050C2, 0x3E0000, 0x3E0FFF, "Oy Stinghorn Ltd", "OY-STINGHORN" }, { 0x0050C2, 0x3D9000, 0x3D9FFF, "Bavaria Digital Technik GmbH", "BAVARIA-DIGITAL-TECHNIK" }, { 0x0050C2, 0x3BB000, 0x3BBFFF, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 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, 0x38A000, 0x38AFFF, "Embedtronics Enterprise", "EMBEDTRONICS" }, { 0x0050C2, 0x2F6000, 0x2F6FFF, "Clifford Chance LLP", "CLIFFORD-CHANCE-LLP" }, { 0x0050C2, 0x2F0000, 0x2F0FFF, "LECO Corporation", "LECO" }, { 0x0050C2, 0x2F1000, 0x2F1FFF, "Geometrics, Inc.", "GEOMETRICS" }, { 0x0050C2, 0x2EF000, 0x2EFFFF, "Profline B.V.", "PROFLINE" }, { 0x0050C2, 0x2EC000, 0x2ECFFF, "CHENGDU BOOK DIGITAL CO., LTD", "CHENGDU-BOOK-DIGITAL" }, { 0x0050C2, 0x2ED000, 0x2EDFFF, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 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, 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, 0x360000, 0x360FFF, "Digital Receiver Technology, Inc.", "DIGITAL-RECEIVER" }, { 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, 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, 0x32F000, 0x32FFFF, "PULTRONICS", "PULTRONICS" }, { 0x0050C2, 0x32A000, 0x32AFFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x32B000, 0x32BFFF, "Digital Multimedia Technologies Spa", "DIGITAL-MULTIMEDIA-TECHNOLOGIES-SPA" }, { 0x0050C2, 0x301000, 0x301FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x303000, 0x303FFF, "CI Systems Ltd.", "CI" }, { 0x0050C2, 0x300000, 0x300FFF, "Soredex Instrumentarium Oyj", "SOREDEX-INSTRUMENTARIUM-OYJ" }, { 0x0050C2, 0x2F7000, 0x2F7FFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x0050C2, 0x2F9000, 0x2F9FFF, "Digilent Inc.", "DIGILENT" }, { 0x0050C2, 0x2FA000, 0x2FAFFF, "Tornado Modular Systems, Ltd", "TORNADO-MODULAR" }, { 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, 0x30A000, 0x30AFFF, "Innings Telecom Inc.", "INNINGS-TELECOM" }, { 0x0050C2, 0x304000, 0x304FFF, "COMERSON S.r.l.", "COMERSON-S-R-L" }, { 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, 0x325000, 0x325FFF, "Federal Aviation Administration", "FEDERAL-AVIATION-ADMINISTRATION" }, { 0x0050C2, 0x324000, 0x324FFF, "ODIXION", "ODIXION" }, { 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, 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, 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, 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, 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, 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, 0x24E000, 0x24EFFF, "Scharff Weisberg Systems Integration Inc", "SCHARFF-WEISBERG-INTEGRATION" }, { 0x0050C2, 0x2C5000, 0x2C5FFF, "Elman srl", "ELMAN-SRL" }, { 0x0050C2, 0x2BE000, 0x2BEFFF, "Lipowsky Industrie-Elektronik GmbH", "LIPOWSKY-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0x2BF000, 0x2BFFFF, "PERAX", "PERAX" }, { 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, 0x2A7000, 0x2A7FFF, "Micro System Architecturing srl", "MICRO-SYSTEM-ARCHITECTURING-SRL" }, { 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, 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, 0x26C000, 0x26CFFF, "Crystal Vision Ltd", "CRYSTAL-VISION" }, { 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, 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, 0x21C000, 0x21CFFF, "Fracarro Radioindustrie SPA", "FRACARRO-RADIOINDUSTRIE-SPA" }, { 0x0050C2, 0x216000, 0x216FFF, "Level Control Systems", "LEVEL-CONTROL" }, { 0x0050C2, 0x217000, 0x217FFF, "Linn Products Ltd", "LINN-PRODUCTS" }, { 0x0050C2, 0x20D000, 0x20DFFF, "Varisys Ltd", "VARISYS" }, { 0x0050C2, 0x212000, 0x212FFF, "4Links Limited", "4LINKS" }, { 0x0050C2, 0x23F000, 0x23FFFF, "Halliburton - NUMAR", "HALLIBURTON---NUMAR" }, { 0x0050C2, 0x230000, 0x230FFF, "AutoTOOLS group Co. Ltd.", "AUTOTOOLS-GROUP" }, { 0x0050C2, 0x234000, 0x234FFF, "Silverback Systems", "SILVERBACK" }, { 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, 0x20C000, 0x20CFFF, "Communication and Telemechanical Systems Company Limited", "COMMUNICATION-AND-TELEMECHANICAL-COMPANY" }, { 0x0050C2, 0x208000, 0x208FFF, "nNovia, Inc.", "NNOVIA" }, { 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, 0x23E000, 0x23EFFF, "Kallastra Inc.", "KALLASTRA" }, { 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, 0x226000, 0x226FFF, "Ross Video Limited", "ROSS-VIDEO" }, { 0x0050C2, 0x22A000, 0x22AFFF, "Crescendo Networks", "CRESCENDO-NETWORKS" }, { 0x0050C2, 0x220000, 0x220FFF, "Serveron Corporation", "SERVERON" }, { 0x0050C2, 0x221000, 0x221FFF, "Getinge IT Solutions ApS", "GETINGE-IT-SOLUTIONS-APS" }, { 0x0050C2, 0x1E9000, 0x1E9FFF, "Ranch Networks", "RANCH-NETWORKS" }, { 0x0050C2, 0x1F3000, 0x1F3FFF, "Radionor Communications AS", "RADIONOR-COMMUNICATION-AS" }, { 0x0050C2, 0x1F4000, 0x1F4FFF, "Covia, Inc", "COVIA" }, { 0x0050C2, 0x1D1000, 0x1D1FFF, "Benchmark Electronics", "BENCHMARK-ELECTRONICS" }, { 0x0050C2, 0x1E5000, 0x1E5FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x1DB000, 0x1DBFFF, "Applied Systems Engineering, Inc.", "APPLIED-ENGINEERING" }, { 0x0050C2, 0x190000, 0x190FFF, "Goerlitz AG", "GOERLITZ" }, { 0x0050C2, 0x1BD000, 0x1BDFFF, "AIOI Systems Co., Ltd.", "AIOI" }, { 0x0050C2, 0x1B3000, 0x1B3FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x19F000, 0x19FFFF, "Fleetwood Electronics Ltd", "FLEETWOOD-ELECTRONICS" }, { 0x0050C2, 0x12F000, 0x12FFFF, "HAAG-STREIT AG", "HAAG-STREIT" }, { 0x0050C2, 0x003000, 0x003FFF, "Microsoft", "MICROSOFT" }, { 0x0050C2, 0x004000, 0x004FFF, "SCI Technology Inc.", "SCI" }, { 0x0050C2, 0x169000, 0x169FFF, "Nordson Corp.", "NORDSON" }, { 0x0050C2, 0x066000, 0x066FFF, "Private", "PRIVATE" }, { 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, 0x1A9000, 0x1A9FFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x0050C2, 0x195000, 0x195FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x0050C2, 0x1C7000, 0x1C7FFF, "TWIN DEVELOPMENT S.A.", "TWIN-DEVELOPMENT" }, { 0x0050C2, 0x15E000, 0x15EFFF, "Celite Systems, Inc.", "CELITE" }, { 0x0050C2, 0x15F000, 0x15FFFF, "Pulsar GmbH", "PULSAR" }, { 0x0050C2, 0x15A000, 0x15AFFF, "Plextek Limited", "PLEXTEK" }, { 0x0050C2, 0x141000, 0x141FFF, "Time Terminal Adductor Group AB", "TIME-TERMINAL-ADDUCTOR-GROUP-AB" }, { 0x0050C2, 0x140000, 0x140FFF, "ITS, Inc.", "ITS" }, { 0x0050C2, 0x125000, 0x125FFF, "Tecwings GmBh", "TECWINGS" }, { 0x0050C2, 0x136000, 0x136FFF, "Tensilica, Inc.", "TENSILICA" }, { 0x0050C2, 0x168000, 0x168FFF, "ExtremeSpeed Inc.", "EXTREMESPEED" }, { 0x0050C2, 0x146000, 0x146FFF, "APCON, Inc.", "APCON" }, { 0x0050C2, 0x164000, 0x164FFF, "Acunia N.V.", "ACUNIA-N-V" }, { 0x0050C2, 0x12E000, 0x12EFFF, "RUNCOM", "RUNCOM" }, { 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, 0x14A000, 0x14AFFF, "DYCEC, S.A.", "DYCEC" }, { 0x0050C2, 0x14B000, 0x14BFFF, "HECUBA Elektronik", "HECUBA-ELEKTRONIK" }, { 0x0050C2, 0x13C000, 0x13CFFF, "NBG Industrial Automation B.V.", "NBG-INDUSTRIAL-AUTOMATION" }, { 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, 0x100000, 0x100FFF, "Corelatus A.B.", "CORELATUS-A-B" }, { 0x0050C2, 0x0FB000, 0x0FBFFF, "PIUSYS Co., Ltd.", "PIUSYS" }, { 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, 0x0E7000, 0x0E7FFF, "Century Geophysical Corp.", "CENTURY-GEOPHYSICAL" }, { 0x0050C2, 0x0E2000, 0x0E2FFF, "Visual Circuits Corp.", "VISUAL-CIRCUITS" }, { 0x0050C2, 0x0F7000, 0x0F7FFF, "Foss NIRSystems, Inc.", "FOSS-NIRSYSTEMS" }, { 0x0050C2, 0x0FA000, 0x0FAFFF, "GE Lubrizol, LLC", "GE-LUBRIZOL-LLC" }, { 0x0050C2, 0x116000, 0x116FFF, "DSP Design, Ltd.", "DSP-DESIGN" }, { 0x0050C2, 0x115000, 0x115FFF, "Vidco, Inc.", "VIDCO" }, { 0x0050C2, 0x0E3000, 0x0E3FFF, "Lanex S.A.", "LANEX" }, { 0x0050C2, 0x10E000, 0x10EFFF, "Unipower AB", "UNIPOWER-AB" }, { 0x0050C2, 0x11F000, 0x11FFFF, "CSS Industrie Computer GmbH", "CSS-INDUSTRIE" }, { 0x0050C2, 0x120000, 0x120FFF, "XStore, Inc.", "XSTORE" }, { 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, 0x0BB000, 0x0BBFFF, "MAZet GmbH", "MAZET" }, { 0x0050C2, 0x0B6000, 0x0B6FFF, "ApSecure Technologies (Canada), Inc.", "APSECURE-TECHNOLOGIES-CANADA" }, { 0x0050C2, 0x0B5000, 0x0B5FFF, "Extreme Copper, Inc.", "EXTREME-COPPER" }, { 0x0050C2, 0x0D8000, 0x0D8FFF, "Charlotte's Web Networks", "CHARLOTTE-S-WEB-NETWORKS" }, { 0x0050C2, 0x0D2000, 0x0D2FFF, "Real World Computing Partnership", "REAL-WORLD-COMPUTING-PARTNERSHIP" }, { 0x0050C2, 0x0CE000, 0x0CEFFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x0050C2, 0x0A4000, 0x0A4FFF, "Bounty Systems Pty Ltd.", "BOUNTY-PTY" }, { 0x0050C2, 0x0C8000, 0x0C8FFF, "The Trane Company", "THE-TRANE-COMPANY" }, { 0x0050C2, 0x0B1000, 0x0B1FFF, "Beeline Networks, Inc.", "BEELINE-NETWORKS" }, { 0x0050C2, 0x0A5000, 0x0A5FFF, "Mobiltex Data Ltd.", "MOBILTEX-DATA" }, { 0x0050C2, 0x0D3000, 0x0D3FFF, "Lake Technology, Ltd.", "LAKE" }, { 0x0050C2, 0x06D000, 0x06DFFF, "Advanced Signal Corp.", "ADVANCED-SIGNAL" }, { 0x0050C2, 0x06C000, 0x06CFFF, "WaveCom Electronics, Inc.", "WAVECOM-ELECTRONICS" }, { 0x0050C2, 0x06A000, 0x06AFFF, "Unimark", "UNIMARK" }, { 0x0050C2, 0x067000, 0x067FFF, "Riverlink Computers, Ltd.", "RIVERLINK-COMPUTERS" }, { 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, 0x08E000, 0x08EFFF, "BSQUARE", "BSQUARE" }, { 0x0050C2, 0x08D000, 0x08DFFF, "Kylink Communications Corp.", "KYLINK-COMMUNICATION" }, { 0x0050C2, 0x083000, 0x083FFF, "ARD SA", "ARD" }, { 0x0050C2, 0x093000, 0x093FFF, "KOREALINK", "KOREALINK" }, { 0x0050C2, 0x084000, 0x084FFF, "DIALOG4 System Engineering GmbH", "DIALOG4-SYSTEM-ENGINEERING" }, { 0x0050C2, 0x047000, 0x047FFF, "B. R. Electronics", "B-R-ELECTRONICS" }, { 0x0050C2, 0x04C000, 0x04CFFF, "New Standard Engineering NV", "NEW-STANDARD-ENGINEERING-NV" }, { 0x0050C2, 0x02D000, 0x02DFFF, "Innocor LTD", "INNOCOR" }, { 0x0050C2, 0x056000, 0x056FFF, "Base 2", "BASE-2" }, { 0x0050C2, 0x037000, 0x037FFF, "E.I.S.M.", "E-I-S-M" }, { 0x0050C2, 0x00F000, 0x00FFFF, "XLN-t", "XLN-T" }, { 0x0050C2, 0x023000, 0x023FFF, "Zabacom, Inc.", "ZABACOM" }, { 0x0050C2, 0x019000, 0x019FFF, "Emtac Technology Corp.", "EMTAC" }, { 0x40D855, 0x1D8000, 0x1D8FFF, "Owl Computing Technologies, Inc.", "OWL-COMPUTING-TECHNOLOGIES" }, { 0x40D855, 0x1D7000, 0x1D7FFF, "Wheatstone Corporation", "WHEATSTONE" }, { 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, 0x1DC000, 0x1DCFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x1C6000, 0x1C6FFF, "Device Solutions Ltd", "DEVICE-SOLUTIONS" }, { 0x40D855, 0x1C3000, 0x1C3FFF, "Cornfed Systems LLC", "CORNFED-LLC" }, { 0x40D855, 0x1BD000, 0x1BDFFF, "HORIBA ABX", "HORIBA-ABX" }, { 0x40D855, 0x1B9000, 0x1B9FFF, "Beking Industrieele automatisering", "BEKING-INDUSTRIEELE-AUTOMATISERING" }, { 0x40D855, 0x1B5000, 0x1B5FFF, "A+EC Klein Ingenieurbuero", "A+EC-KLEIN-INGENIEURBUERO" }, { 0x40D855, 0x16C000, 0x16CFFF, "Private", "PRIVATE" }, { 0x40D855, 0x19E000, 0x19EFFF, "Thirdwayv Inc.", "THIRDWAYV" }, { 0x40D855, 0x196000, 0x196FFF, "Advanced Micro Controls Inc.", "ADVANCED-MICRO-CONTROLS" }, { 0x40D855, 0x17F000, 0x17FFFF, "Telvent", "TELVENT" }, { 0x40D855, 0x176000, 0x176FFF, "Schneider Electric Motion, Inc. USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 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, 0x170000, 0x170FFF, "ICS Eletronics", "ICS-ELETRONICS" }, { 0x40D855, 0x189000, 0x189FFF, "Yoozma Corporation", "YOOZMA" }, { 0x40D855, 0x183000, 0x183FFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x1B1000, 0x1B1FFF, "Logos 01 S.r.l.", "LOGOS-01-S-R-L" }, { 0x40D855, 0x1AB000, 0x1ABFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x105000, 0x105FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x40D855, 0x0FF000, 0x0FFFFF, "YUYAMA€€MFGïĵŽïĵ£ïĵŻïĵŽïĵŒïĵĴïĵ´ïĵ¤ïĵŽ", "YUYAMA€€MFGïĵŽïĵ£ïĵŻïĵŽïĵŒïĵĴïĵ´ïĵ¤ïĵŽ" }, { 0x40D855, 0x0F9000, 0x0F9FFF, "Invisua Lighting BV", "INVISUA-LIGHTING" }, { 0x40D855, 0x151000, 0x151FFF, "Progress Rail Services, Inspection and Information Systems", "PROGRESS-RAIL-SERVICES-INSPECTION-AND-INFORMATION" }, { 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, 0x159000, 0x159FFF, "PLATINUM GmbH", "PLATINUM" }, { 0x40D855, 0x154000, 0x154FFF, "iart", "IART" }, { 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, 0x144000, 0x144FFF, "Venco", "VENCO" }, { 0x40D855, 0x13E000, 0x13EFFF, "hanatech", "HANATECH" }, { 0x40D855, 0x0FA000, 0x0FAFFF, "Marmitek BV", "MARMITEK" }, { 0x40D855, 0x0F2000, 0x0F2FFF, "SigmaPhi Electronics", "SIGMAPHI-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, 0x0F0000, 0x0F0FFF, "Redwood Systems", "REDWOOD" }, { 0x40D855, 0x0E9000, 0x0E9FFF, "HAMEG GmbH", "HAMEG" }, { 0x40D855, 0x0E3000, 0x0E3FFF, "Medigus Ltd", "MEDIGUS" }, { 0x40D855, 0x0C1000, 0x0C1FFF, "Xepto Computing Inc", "XEPTO-COMPUTING" }, { 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, 0x089000, 0x089FFF, "WUHAN XINGTUXINKE ELECTRONIC CO.,LTD", "WUHAN-XINGTUXINKE" }, { 0x40D855, 0x0BB000, 0x0BBFFF, "Whiptail", "WHIPTAIL" }, { 0x40D855, 0x0B7000, 0x0B7FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x40D855, 0x0B1000, 0x0B1FFF, "Nanjing TIANSU Automation Control System Co., Ltd.", "NANJING-TIANSU-AUTOMATION-CONTROL-SYSTEM" }, { 0x40D855, 0x0D6000, 0x0D6FFF, "deskontrol electronics", "DESKONTROL-ELECTRONICS" }, { 0x40D855, 0x0D2000, 0x0D2FFF, "ELAN SYSTEMS", "ELAN" }, { 0x40D855, 0x0A4000, 0x0A4FFF, "Resch Electronic Innovation GmbH", "RESCH-INNOVATION" }, { 0x40D855, 0x09E000, 0x09EFFF, "NanoPulse, Inc.", "NANOPULSE" }, { 0x40D855, 0x0AE000, 0x0AEFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x0A8000, 0x0A8FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x40D855, 0x0CE000, 0x0CEFFF, "EST Analytical", "EST-ANALYTICAL" }, { 0x40D855, 0x04A000, 0x04AFFF, "Gateway Technologies SA de CV", "GATEWAY-TECHNOLOGIES-DE-CV" }, { 0x40D855, 0x044000, 0x044FFF, "An Chen Computer Co. Ltd.", "AN-CHEN" }, { 0x40D855, 0x03D000, 0x03DFFF, "Tekelek Europe Ltd", "TEKELEK-EUROPE" }, { 0x40D855, 0x061000, 0x061FFF, "Cominfo, Inc.", "COMINFO" }, { 0x40D855, 0x05D000, 0x05DFFF, "Leica Biosystems", "LEICA-BIOSYSTEMS" }, { 0x40D855, 0x057000, 0x057FFF, "Tammermatic Group Oy", "TAMMERMATIC-GROUP-OY" }, { 0x40D855, 0x037000, 0x037FFF, "Software Workshop", "SOFTWARE-WORKSHOP" }, { 0x40D855, 0x032000, 0x032FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x40D855, 0x033000, 0x033FFF, "Ermes Elettronica s.r.l.", "ERMES-ELETTRONICA-S-R-L" }, { 0x40D855, 0x031000, 0x031FFF, "Dommel GmbH", "DOMMEL" }, { 0x40D855, 0x04E000, 0x04EFFF, "Honeywell Aerospace/Intelligent Automation Corp.", "HONEYWELL-AEROSPACE/INTELLIGENT-AUTOMATION" }, { 0x40D855, 0x085000, 0x085FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x40D855, 0x07C000, 0x07CFFF, "Agramkow Fluid Systems A/S", "AGRAMKOW-FLUID-A/S" }, { 0x40D855, 0x076000, 0x076FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x40D855, 0x072000, 0x072FFF, "CT Company", "CT-COMPANY" }, { 0x40D855, 0x06A000, 0x06AFFF, "elgris", "ELGRIS" }, { 0x40D855, 0x067000, 0x067FFF, "Tronic Control ltd.", "TRONIC-CONTROL" }, { 0x0050C2, 0xFDC000, 0xFDCFFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x0050C2, 0xFD2000, 0xFD2FFF, "Autonomic Controls. Inc", "AUTONOMIC-CONTROLS" }, { 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" }, { 0x0050C2, 0xFF0000, 0xFF0FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xFE6000, 0xFE6FFF, "Exibea AB", "EXIBEA-AB" }, { 0x40D855, 0x018000, 0x018FFF, "STANEO SAS", "STANEO-SAS" }, { 0x40D855, 0x012000, 0x012FFF, "Sencon Inc.", "SENCON" }, { 0x0050C2, 0xFFA000, 0xFFAFFF, "Nupoint Systems Inc.", "NUPOINT" }, { 0x0050C2, 0xFC8000, 0xFC8FFF, "Far South Networks", "FAR-SOUTH-NETWORKS" }, { 0x40D855, 0x00B000, 0x00BFFF, "Aircell", "AIRCELL" }, { 0x40D855, 0x007000, 0x007FFF, "Digital Audio SA", "DIGITAL-AUDIO" }, { 0x40D855, 0x003000, 0x003FFF, "AlphaNavigation coltd", "ALPHANAVIGATION-COLTD" }, { 0x0050C2, 0xF65000, 0xF65FFF, "Telebyte Inc.", "TELEBYTE" }, { 0x0050C2, 0xF60000, 0xF60FFF, "Deckma GmbH", "DECKMA" }, { 0x0050C2, 0xF5C000, 0xF5CFFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xF9F000, 0xF9FFFF, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x0050C2, 0xFB4000, 0xFB4FFF, "MC-monitoring SA", "MC-MONITORING" }, { 0x0050C2, 0xF7E000, 0xF7EFFF, "TruTeq Wireless (Pty) Ltd", "TRUTEQ-WIRELESS-PTY" }, { 0x0050C2, 0xF79000, 0xF79FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xF74000, 0xF74FFF, "Thor Technologies Pty Ltd", "THOR-TECHNOLOGIES-PTY" }, { 0x0050C2, 0xF88000, 0xF88FFF, "RTC Manufacturing Inc.", "RTC-MANUFACTURING" }, { 0x0050C2, 0xF83000, 0xF83FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x0050C2, 0xF97000, 0xF97FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xF92000, 0xF92FFF, "CONET Solutions GmbH", "CONET-SOLUTIONS" }, { 0x0050C2, 0xF8D000, 0xF8DFFF, "GUANGDONG EAST POWER CO.,LTD.", "GUANGDONG-EAST-POWER" }, { 0x0050C2, 0xFAA000, 0xFAAFFF, "YJSYSTEM", "YJSYSTEM" }, { 0x0050C2, 0xF6F000, 0xF6FFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF6A000, 0xF6AFFF, "OFI Inc. (dba 2D2C)", "OFI-DBA-2D2C" }, { 0x0050C2, 0xF66000, 0xF66FFF, "GWT LLC", "GWT-LLC" }, { 0x0050C2, 0xFBE000, 0xFBEFFF, "senTec Elektronik GmbH", "SENTEC-ELEKTRONIK" }, { 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, 0xF11000, 0xF11FFF, "Organis GmbH", "ORGANIS" }, { 0x0050C2, 0xF0D000, 0xF0DFFF, "Bluetest AB", "BLUETEST-AB" }, { 0x0050C2, 0xF07000, 0xF07FFF, "Icon Research Ltd", "ICON-RESEARCH" }, { 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, 0xF52000, 0xF52FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xF25000, 0xF25FFF, "Samway Electronic SRL", "SAMWAY-SRL" }, { 0x0050C2, 0xF20000, 0xF20FFF, "Unfors Instruments AB", "UNFORS-INSTRUMENTS-AB" }, { 0x0050C2, 0xF21000, 0xF21FFF, "SEITEC Co. Ltd", "SEITEC" }, { 0x0050C2, 0xEE9000, 0xEE9FFF, "QUANTA S.r.l.", "QUANTA-S-R-L" }, { 0x0050C2, 0xEE5000, 0xEE5FFF, "Cytec Zylindertechnik GmbH", "CYTEC-ZYLINDERTECHNIK" }, { 0x0050C2, 0xEDF000, 0xEDFFFF, "Monitor Business Machines", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0xF03000, 0xF03FFF, "Wren Sound Systems", "WREN-SOUND" }, { 0x0050C2, 0xEFD000, 0xEFDFFF, "Sanmina", "SANMINA" }, { 0x0050C2, 0xF4C000, 0xF4CFFF, "Enistic Limited", "ENISTIC" }, { 0x0050C2, 0xF48000, 0xF48FFF, "Midas Technology DBA Phoenix Audio Technologies", "MIDAS-DBA-PHOENIX-AUDIO-TECHNOLOGIES" }, { 0x0050C2, 0xF34000, 0xF34FFF, "Sequip S+E GmbH", "SEQUIP-S+E" }, { 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, 0xEF9000, 0xEF9FFF, "HORIBA ABX", "HORIBA-ABX" }, { 0x0050C2, 0xEF3000, 0xEF3FFF, "Smart Power Electronics GmbH & Co. KG", "SMART-POWER-ELECTRONICS" }, { 0x0050C2, 0xEEF000, 0xEEFFFF, "IDTRONIC GmbH", "IDTRONIC" }, { 0x0050C2, 0xF42000, 0xF42FFF, "DSPCon", "DSPCON" }, { 0x0050C2, 0xF3C000, 0xF3CFFF, "Vemco Sp. z o. o.", "VEMCO-SP-Z-O-O" }, { 0x0050C2, 0xED4000, 0xED4FFF, "TAMAGAWA ELECTRONICS CO.,LTD.", "TAMAGAWA-ELECTRONICS" }, { 0x0050C2, 0xED2000, 0xED2FFF, "Klangspektrum GmbH", "KLANGSPEKTRUM" }, { 0x0050C2, 0xECC000, 0xECCFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE90000, 0xE90FFF, "GS Elektromedizinische Geraete G. Stemple GmbH", "GS-ELEKTROMEDIZINISCHE-GERAETE-G-STEMPLE" }, { 0x0050C2, 0xE8C000, 0xE8CFFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0xEA4000, 0xEA4FFF, "head", "HEAD" }, { 0x0050C2, 0xEA0000, 0xEA0FFF, "Robert Bosch Healthcare, Inc.", "ROBERT-BOSCH-HEALTHCARE" }, { 0x0050C2, 0xEC8000, 0xEC8FFF, "IBERNEX INGENIERIA, S.L.", "IBERNEX-INGENIERIA-S-L" }, { 0x0050C2, 0xEC2000, 0xEC2FFF, "Ixonos Plc", "IXONOS-PLC" }, { 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, 0xEAA000, 0xEAAFFF, "BAE Systems", "BAE" }, { 0x0050C2, 0xE86000, 0xE86FFF, "Multisuns Corporation", "MULTISUNS" }, { 0x0050C2, 0xE82000, 0xE82FFF, "Xplore Technologies Corp", "XPLORE-TECHNOLOGIES" }, { 0x0050C2, 0xE7C000, 0xE7CFFF, "sp controls, inc", "SP-CONTROLS" }, { 0x0050C2, 0xE9A000, 0xE9AFFF, "Solace Systems", "SOLACE" }, { 0x0050C2, 0xE96000, 0xE96FFF, "PROYECSON S.A.", "PROYECSON" }, { 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, 0xED9000, 0xED9FFF, "Plasmatronics pty ltd", "PLASMATRONICS-PTY" }, { 0x0050C2, 0xE26000, 0xE26FFF, "Cinetix s.r.l.", "CINETIX-S-R-L" }, { 0x0050C2, 0xE20000, 0xE20FFF, "Divelbiss Corporation", "DIVELBISS" }, { 0x0050C2, 0xE6B000, 0xE6BFFF, "Sika Technology AG", "SIKA" }, { 0x0050C2, 0xE6C000, 0xE6CFFF, "SAMSUNG Electronics Co.,Ltd.(LED Division)", "SAMSUNG-ELECTRONICS-LED-DIVISION" }, { 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, 0xE30000, 0xE30FFF, "Goennheimer Elektronic GmbH", "GOENNHEIMER-ELEKTRONIC" }, { 0x0050C2, 0xE3E000, 0xE3EFFF, "Monnit Corp.", "MONNIT" }, { 0x0050C2, 0xE3A000, 0xE3AFFF, "Vocality International", "VOCALITY" }, { 0x0050C2, 0xE34000, 0xE34FFF, "HGL Dynamics", "HGL-DYNAMICS" }, { 0x0050C2, 0xE33000, 0xE33FFF, "Morita Technical Center Company", "MORITA-TECHNICAL-CENTER-COMPANY" }, { 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, 0xE2A000, 0xE2AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE29000, 0xE29FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xE1F000, 0xE1FFFF, "ELVEES", "ELVEES" }, { 0x0050C2, 0xE1C000, 0xE1CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE16000, 0xE16FFF, "Jetstream Ltd.", "JETSTREAM" }, { 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, 0xE09000, 0xE09FFF, "ATEME", "ATEME" }, { 0x0050C2, 0xDE8000, 0xDE8FFF, "Visual Productions", "VISUAL-PRODUCTIONS" }, { 0x0050C2, 0xDCA000, 0xDCAFFF, "Tele Data Control", "TELE-DATA-CONTROL" }, { 0x0050C2, 0xDC0000, 0xDC0FFF, "Security Services Group (SSG)", "SECURITY-SERVICES-GROUP-SSG" }, { 0x0050C2, 0xDDE000, 0xDDEFFF, "DRS ITS", "DRS-ITS" }, { 0x0050C2, 0xDD4000, 0xDD4FFF, "SYSTECH", "SYSTECH" }, { 0x0050C2, 0xE03000, 0xE03FFF, "ICU Scandinavia Schweiz GmbH", "ICU-SCANDINAVIA-SCHWEIZ" }, { 0x0050C2, 0xDFF000, 0xDFFFFF, "TANTAL ELECTRONICA, SL", "TANTAL-ELECTRONICA-SL" }, { 0x0050C2, 0xDF5000, 0xDF5FFF, "EtherLight", "ETHERLIGHT" }, { 0x0050C2, 0xDEF000, 0xDEFFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xDF9000, 0xDF9FFF, "Jenny Science AG", "JENNY-SCIENCE" }, { 0x0050C2, 0xE15000, 0xE15FFF, "IHI Scube Co.,Ltd", "IHI-SCUBE" }, { 0x0050C2, 0xE10000, 0xE10FFF, "Radinetworks Co., Ltd", "RADINETWORKS" }, { 0x0050C2, 0xD9C000, 0xD9CFFF, "Gamber Johnson LLC", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0xD99000, 0xD99FFF, "T-Industry, s.r.o.", "T-INDUSTRY-S-R-O" }, { 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, 0xD47000, 0xD47FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xD60000, 0xD60FFF, "Nihon Kessho Koogaku Co., Ltd.", "NIHON-KESSHO-KOOGAKU" }, { 0x0050C2, 0xD5D000, 0xD5DFFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0xD85000, 0xD85FFF, "VITEC", "VITEC" }, { 0x0050C2, 0xD7E000, 0xD7EFFF, "LYNX Technik AG", "LYNX-TECHNIK" }, { 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, 0xD92000, 0xD92FFF, "Manz", "MANZ" }, { 0x0050C2, 0xD8F000, 0xD8FFFF, "Syes srl", "SYES-SRL" }, { 0x0050C2, 0xD88000, 0xD88FFF, "T+A elektroakustik GmbH & Co KG", "T+A-ELEKTROAKUSTIK" }, { 0x0050C2, 0xDB6000, 0xDB6FFF, "PROSOFT-SYSTEMS LTD", "PROSOFT" }, { 0x0050C2, 0xDAA000, 0xDAAFFF, "M & PAUL, INC", "M-PAUL" }, { 0x0050C2, 0xDA3000, 0xDA3FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xDA6000, 0xDA6FFF, "Manitowoc Ice", "MANITOWOC-ICE" }, { 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, 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, 0xD2C000, 0xD2CFFF, "Schneider Electric Motion USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 0x0050C2, 0xD11000, 0xD11FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xD12000, 0xD12FFF, "Tokyo Weld Co.,Ltd.", "TOKYO-WELD" }, { 0x0050C2, 0xD0E000, 0xD0EFFF, "Weinert Engineering GmbH", "WEINERT-ENGINEERING" }, { 0x0050C2, 0xCD4000, 0xCD4FFF, "SCHRAML GmbH", "SCHRAML" }, { 0x0050C2, 0xCD1000, 0xCD1FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xCCA000, 0xCCAFFF, "SANMINA SHENZHEN", "SANMINA-SHENZHEN" }, { 0x0050C2, 0xCC7000, 0xCC7FFF, "TOPROOT Technology Corp. Ltd.,", "TOPROOT" }, { 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, 0xCE2000, 0xCE2FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xCE1000, 0xCE1FFF, "Satellink Inc.", "SATELLINK" }, { 0x0050C2, 0xCDE000, 0xCDEFFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x0050C2, 0xCDB000, 0xCDBFFF, "RUTTER INC", "RUTTER" }, { 0x0050C2, 0xCED000, 0xCEDFFF, "AeroMechanical Services Ltd, FLYHT", "AEROMECHANICAL-SERVICES-FLYHT" }, { 0x0050C2, 0xD43000, 0xD43FFF, "DSP4YOU Ltd", "DSP4YOU" }, { 0x0050C2, 0xD40000, 0xD40FFF, "demmel products", "DEMMEL-PRODUCTS" }, { 0x0050C2, 0xD3A000, 0xD3AFFF, "WellSense Technologies", "WELLSENSE-TECHNOLOGIES" }, { 0x0050C2, 0xC90000, 0xC90FFF, "REALD", "REALD" }, { 0x0050C2, 0xC8F000, 0xC8FFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xC8B000, 0xC8BFFF, "OCAS AS", "OCAS-AS" }, { 0x0050C2, 0xC8E000, 0xC8EFFF, "SDD ITG", "SDD-ITG" }, { 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, 0xC46000, 0xC46FFF, "QNE GmbH & Co. KG", "QNE" }, { 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, 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, 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, 0xC9F000, 0xC9FFFF, "xxter b.v.", "XXTER" }, { 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, 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, 0xC7B000, 0xC7BFFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xC78000, 0xC78FFF, "9Solutions Oy", "9SOLUTIONS-OY" }, { 0x0050C2, 0xC73000, 0xC73FFF, "Industry Controls, Inc.", "INDUSTRY-CONTROLS" }, { 0x0050C2, 0xC72000, 0xC72FFF, "Quail", "QUAIL" }, { 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, 0xCA9000, 0xCA9FFF, "Intelligent Devices", "INTELLIGENT-DEVICES" }, { 0x0050C2, 0xCA4000, 0xCA4FFF, "Vox Technologies", "VOX-TECHNOLOGIES" }, { 0x0050C2, 0xCA2000, 0xCA2FFF, "The Logical Company", "THE-LOGICAL-COMPANY" }, { 0x0050C2, 0xCC0000, 0xCC0FFF, "World Time Solutions Limited", "WORLD-TIME-SOLUTIONS" }, { 0x0050C2, 0xCBD000, 0xCBDFFF, "Hi Tech Electronics Ltd", "HI-TECH-ELECTRONICS" }, { 0x0050C2, 0xCB6000, 0xCB6FFF, "Krontek Pty Ltd", "KRONTEK-PTY" }, { 0x0050C2, 0xBD3000, 0xBD3FFF, "Postjet Systems Ltd", "POSTJET" }, { 0x0050C2, 0xC28000, 0xC28FFF, "ELREHA GmbH", "ELREHA" }, { 0x0050C2, 0xC25000, 0xC25FFF, "Private", "PRIVATE" }, { 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, 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, 0xB96000, 0xB96FFF, "Onix Electronic Systems Inc", "ONIX" }, { 0x0050C2, 0xBB7000, 0xBB7FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xBB2000, 0xBB2FFF, "St Michael Strategies Inc", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0xBB3000, 0xBB3FFF, "ClimateWell AB (publ)", "CLIMATEWELL-AB-PUBL" }, { 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, 0xC0B000, 0xC0BFFF, "ProSourcing GmbH", "PROSOURCING" }, { 0x0050C2, 0xC08000, 0xC08FFF, "juiceboss", "JUICEBOSS" }, { 0x0050C2, 0xC01000, 0xC01FFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x0050C2, 0xC1E000, 0xC1EFFF, "Peperoni-Light", "PEPERONI-LIGHT" }, { 0x0050C2, 0xC1A000, 0xC1AFFF, "SAM Co., Ltd.", "SAM" }, { 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, 0xBC9000, 0xBC9FFF, "Nextmove Technologies", "NEXTMOVE-TECHNOLOGIES" }, { 0x0050C2, 0xBBF000, 0xBBFFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 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, 0xB15000, 0xB15FFF, "PhotoTelesis LP", "PHOTOTELESIS-LP" }, { 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, 0xB47000, 0xB47FFF, "MCS MICRONIC Computer Systeme GmbH", "MCS-MICRONIC-SYSTEME" }, { 0x0050C2, 0xB3D000, 0xB3DFFF, "AMS", "AMS" }, { 0x0050C2, 0xB33000, 0xB33FFF, "Numcore Ltd", "NUMCORE" }, { 0x0050C2, 0xB29000, 0xB29FFF, "Integra LifeSciences (Ireland) Ltd", "INTEGRA-LIFESCIENCES-IRELAND" }, { 0x0050C2, 0xB95000, 0xB95FFF, "Rx Monitoring Services", "RX-MONITORING-SERVICES" }, { 0x0050C2, 0xB8C000, 0xB8CFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xB8B000, 0xB8BFFF, "FBB", "FBB" }, { 0x0050C2, 0xB81000, 0xB81FFF, "GHL Advanced Technolgy GmbH & Co. KG", "GHL-ADVANCED-TECHNOLGY" }, { 0x0050C2, 0xB0B000, 0xB0BFFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xB82000, 0xB82FFF, "TANABIKI Inc.", "TANABIKI" }, { 0x0050C2, 0xB78000, 0xB78FFF, "Folink", "FOLINK" }, { 0x0050C2, 0xB77000, 0xB77FFF, "KRISTECH", "KRISTECH" }, { 0x0050C2, 0xB1F000, 0xB1FFFF, "SCA Schucker GmbH & Co.", "SCA-SCHUCKER" }, { 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, 0xAC9000, 0xAC9FFF, "Steinbeis-Transferzentrum Embedded Design und Networking", "STEINBEIS-TRANSFERZENTRUM-EMBEDDED-DESIGN-UND-NETWORKING" }, { 0x0050C2, 0xAC6000, 0xAC6FFF, "Marathon Products, Inc.", "MARATHON-PRODUCTS" }, { 0x0050C2, 0xABF000, 0xABFFFF, "MCC Computer Company", "MCC-COMPANY" }, { 0x0050C2, 0xABC000, 0xABCFFF, "Barrick", "BARRICK" }, { 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, 0xA53000, 0xA53FFF, "Quality & Design", "QUALITY-DESIGN" }, { 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, 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, 0xADD000, 0xADDFFF, "General Dynamics C4 Sysems", "GENERAL-DYNAMICS-C4-SYSEMS" }, { 0x0050C2, 0xADA000, 0xADAFFF, "Essepie Srl", "ESSEPIE-SRL" }, { 0x0050C2, 0xAD3000, 0xAD3FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xAD0000, 0xAD0FFF, "Geonautics Australia Pty Ltd", "GEONAUTICS-AUSTRALIA-PTY" }, { 0x0050C2, 0xAB5000, 0xAB5FFF, "METTLER-TOLEDO HI-SPEED", "METTLER-TOLEDO-HI-SPEED" }, { 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, 0xB01000, 0xB01FFF, "HSR Harald L. Reuter", "HSR-HARALD-L-REUTER" }, { 0x0050C2, 0xAF7000, 0xAF7FFF, "Midwest Microwave Solutions Inc.", "MIDWEST-MICROWAVE-SOLUTIONS" }, { 0x0050C2, 0xAEC000, 0xAECFFF, "Fritz Pauker Ingenieure GmbH", "FRITZ-PAUKER-INGENIEURE" }, { 0x0050C2, 0xAE7000, 0xAE7FFF, "Redwood Systems", "REDWOOD" }, { 0x0050C2, 0xAE4000, 0xAE4FFF, "Advanced Electronic Designs, Inc.", "ADVANCED-DESIGNS" }, { 0x0050C2, 0x9D8000, 0x9D8FFF, "SAMSUNG HEAVY INDUSTRIES CO.,LTD.", "SAMSUNG-HEAVY-INDUSTRIES" }, { 0x0050C2, 0x9D2000, 0x9D2FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x9CE000, 0x9CEFFF, "Ronan Engineering", "RONAN-ENGINEERING" }, { 0x0050C2, 0x9C8000, 0x9C8FFF, "ethermetrics", "ETHERMETRICS" }, { 0x0050C2, 0x9C3000, 0x9C3FFF, "GE Security-Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0xA18000, 0xA18FFF, "Eoslink", "EOSLINK" }, { 0x0050C2, 0xA14000, 0xA14FFF, "Elbit Systems of America - Tallahassee Operations", "ELBIT-OF-AMERICA---TALLAHASSEE-OPERATIONS" }, { 0x0050C2, 0xA0A000, 0xA0AFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xA0E000, 0xA0EFFF, "Engicam srl", "ENGICAM-SRL" }, { 0x0050C2, 0x9F0000, 0x9F0FFF, "Veracity UK Ltd", "VERACITY-UK" }, { 0x0050C2, 0x9EC000, 0x9ECFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 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, 0xA04000, 0xA04FFF, "TP Radio", "TP-RADIO" }, { 0x0050C2, 0xA00000, 0xA00FFF, "Technovare Systems", "TECHNOVARE" }, { 0x0050C2, 0x9FA000, 0x9FAFFF, "Teranex A Division of Silicon Optix", "TERANEX-A-DIVISION-OF-SILICON-OPTIX" }, { 0x0050C2, 0x9F6000, 0x9F6FFF, "Ion Sense Inc.", "ION-SENSE" }, { 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, 0xA22000, 0xA22FFF, "Nippon Manufacturing Service Corporation (abbreviated as 'nms')", "NIPPON-MANUFACTURING-SERVICE-ABBREVIATED-AS-NMS" }, { 0x0050C2, 0xA1E000, 0xA1EFFF, "MAMAC Systems, Inc.", "MAMAC" }, { 0x0050C2, 0x9BF000, 0x9BFFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x9B5000, 0x9B5FFF, "Telegamma srl", "TELEGAMMA-SRL" }, { 0x0050C2, 0x9B6000, 0x9B6FFF, "ACTECH", "ACTECH" }, { 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, 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, 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, 0xA3B000, 0xA3BFFF, "IPcontrols GmbH", "IPCONTROLS" }, { 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, 0x911000, 0x911FFF, "Vapor Rail", "VAPOR-RAIL" }, { 0x0050C2, 0x90C000, 0x90CFFF, "LSS GmbH", "LSS" }, { 0x0050C2, 0x934000, 0x934FFF, "Xilar Corp.", "XILAR" }, { 0x0050C2, 0x92F000, 0x92FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x92A000, 0x92AFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x925000, 0x925FFF, "PHB Eletronica Ltda.", "PHB-ELETRONICA-LTDA" }, { 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, 0x941000, 0x941FFF, "Rolbit", "ROLBIT" }, { 0x0050C2, 0x93D000, 0x93DFFF, "Lighting Science Group Corporation", "LIGHTING-SCIENCE-GROUP" }, { 0x0050C2, 0x93E000, 0x93EFFF, "RCS Communication Test Systems Ltd.", "RCS-COMMUNICATION-TEST" }, { 0x0050C2, 0x939000, 0x939FFF, "Mosaic Dynamic Solutions", "MOSAIC-DYNAMIC-SOLUTIONS" }, { 0x0050C2, 0x933000, 0x933FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x95C000, 0x95CFFF, "Resurgent Health & Medical", "RESURGENT-HEALTH-MEDICAL" }, { 0x0050C2, 0x954000, 0x954FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x8FA000, 0x8FAFFF, "TELIUM s.c.", "TELIUM-S-C" }, { 0x0050C2, 0x8F5000, 0x8F5FFF, "tec5 AG", "TEC5" }, { 0x0050C2, 0x8F0000, 0x8F0FFF, "Xentras Communications", "XENTRAS-COMMUNICATION" }, { 0x0050C2, 0x90B000, 0x90BFFF, "E.ON ES Sverige AB", "E-ON-ES-SVERIGE-AB" }, { 0x0050C2, 0x907000, 0x907FFF, "Cristal Controles Ltee", "CRISTAL-CONTROLES-LTEE" }, { 0x0050C2, 0x905000, 0x905FFF, "Link Communications, Inc", "LINK-COMMUNICATION" }, { 0x0050C2, 0x8FF000, 0x8FFFFF, "Luceat", "LUCEAT" }, { 0x0050C2, 0x96E000, 0x96EFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0x96A000, 0x96AFFF, "Elektrobit Wireless Communications Ltd", "ELEKTROBIT-WIRELESS-COMMUNICATION" }, { 0x0050C2, 0x964000, 0x964FFF, "IQ Automation GmbH", "IQ-AUTOMATION" }, { 0x0050C2, 0x94B000, 0x94BFFF, "Piller engineering Ltd.", "PILLER-ENGINEERING" }, { 0x0050C2, 0x946000, 0x946FFF, "MEGWARE Computer GmbH", "MEGWARE" }, { 0x0050C2, 0x980000, 0x980FFF, "Digital Payment Technologies", "DIGITAL-PAYMENT-TECHNOLOGIES" }, { 0x0050C2, 0x978000, 0x978FFF, "LOGITAL DIGITAL MEDIA srl", "LOGITAL-DIGITAL-MEDIA-SRL" }, { 0x0050C2, 0x974000, 0x974FFF, "EMAC, INC.", "EMAC" }, { 0x0050C2, 0x720000, 0x720FFF, "Colorado Engineering Inc.", "COLORADO-ENGINEERING" }, { 0x0050C2, 0x85E000, 0x85EFFF, "Radiometer Medical ApS", "RADIOMETER-MEDICAL-APS" }, { 0x0050C2, 0x859000, 0x859FFF, "Nuvation", "NUVATION" }, { 0x0050C2, 0x854000, 0x854FFF, "Ratioplast-Optoelectronics GmbH", "RATIOPLAST-OPTOELECTRONICS" }, { 0x0050C2, 0x8CD000, 0x8CDFFF, "Cambridge Sound Management, LLC", "CAMBRIDGE-SOUND-MANAGEMENT-LLC" }, { 0x0050C2, 0x8C8000, 0x8C8FFF, "Pumatronix Equipamentos Eletr´nicos Ltda", "PUMATRONIX-EQUIPAMENTOS-ELETR´NICOS-LTDA" }, { 0x0050C2, 0x8C3000, 0x8C3FFF, "Byte Paradigm", "BYTE-PARADIGM" }, { 0x0050C2, 0x8BE000, 0x8BEFFF, "The Pennsylvania State University", "THE-PENNSYLVANIA-STATE-UNIVERSITY" }, { 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, 0x84F000, 0x84FFFF, "Gamber-Johnson LLC", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0x84A000, 0x84AFFF, "Keystone Electronic Solutions", "KEYSTONE-SOLUTIONS" }, { 0x0050C2, 0x8AA000, 0x8AAFFF, "ATS Elektronik GmbH", "ATS-ELEKTRONIK" }, { 0x0050C2, 0x8A0000, 0x8A0FFF, "Specialized Communications Corp.", "SPECIALIZED-COMMUNICATION" }, { 0x0050C2, 0x89A000, 0x89AFFF, "Neptune Technology Group, Inc.", "NEPTUNE-GROUP" }, { 0x0050C2, 0x895000, 0x895FFF, "Marine Communications Limited", "MARINE-COMMUNICATION" }, { 0x0050C2, 0x88D000, 0x88DFFF, "L3 Communications Nova Engineering", "L3-COMMUNICATION-NOVA-ENGINEERING" }, { 0x0050C2, 0x883000, 0x883FFF, "Neocontrol Solu§µes em Automa§£o", "NEOCONTROL-SOLU§µES-EM-AUTOMA§£O" }, { 0x0050C2, 0x879000, 0x879FFF, "MILESYS", "MILESYS" }, { 0x0050C2, 0x86F000, 0x86FFFF, "b-plus GmbH", "B-PLUS" }, { 0x0050C2, 0x865000, 0x865FFF, "Persy Control Services B.v.", "PERSY-CONTROL-SERVICES" }, { 0x0050C2, 0x8DC000, 0x8DCFFF, "Frame Systems Limited", "FRAME" }, { 0x0050C2, 0x8D7000, 0x8D7FFF, "Polygon Informatics Ltd.", "POLYGON-INFORMATICS" }, { 0x0050C2, 0x8D2000, 0x8D2FFF, "TTi Ltd", "TTI" }, { 0x0050C2, 0x8B9000, 0x8B9FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x8B4000, 0x8B4FFF, "Sandar Telecast AS", "SANDAR-TELECAST-AS" }, { 0x0050C2, 0x845000, 0x845FFF, "VisualSonics Inc.", "VISUALSONICS" }, { 0x0050C2, 0x841000, 0x841FFF, "Connection Electronics Ltd.", "CONNECTION-ELECTRONICS" }, { 0x0050C2, 0x840000, 0x840FFF, "Residential Control Systems", "RESIDENTIAL-CONTROL" }, { 0x0050C2, 0x83D000, 0x83DFFF, "beroNet GmbH", "BERONET" }, { 0x0050C2, 0x837000, 0x837FFF, "ID-KARTA s.r.o.", "ID-KARTA-S-R-O" }, { 0x0050C2, 0x832000, 0x832FFF, "S1nn GmbH & Co. KG", "S1NN" }, { 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, 0x7B4000, 0x7B4FFF, "T 1 Engineering", "T-1-ENGINEERING" }, { 0x0050C2, 0x7AF000, 0x7AFFFF, "C2 Microsystems", "C2-MICROSYSTEMS" }, { 0x0050C2, 0x7AA000, 0x7AAFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x7A5000, 0x7A5FFF, "Quantum Medical Imaging", "QUANTUM-MEDICAL-IMAGING" }, { 0x0050C2, 0x810000, 0x810FFF, "Alphion Corporation", "ALPHION" }, { 0x0050C2, 0x80C000, 0x80CFFF, "Luxpert Technologies Co., Ltd.", "LUXPERT-TECHNOLOGIES" }, { 0x0050C2, 0x806000, 0x806FFF, "CET", "CET" }, { 0x0050C2, 0x802000, 0x802FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x7FC000, 0x7FCFFF, "TIS Dialog LLC", "TIS-DIALOG-LLC" }, { 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, 0x7E1000, 0x7E1FFF, "Zeltiq Aesthetics, Inc.", "ZELTIQ-AESTHETICS" }, { 0x0050C2, 0x82E000, 0x82EFFF, "LogiCom GmbH", "LOGICOM" }, { 0x0050C2, 0x82A000, 0x82AFFF, "VDC Display Systems", "VDC-DISPLAY" }, { 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, 0x816000, 0x816FFF, "Intelight Inc.", "INTELIGHT" }, { 0x0050C2, 0x7F8000, 0x7F8FFF, "Wise Industria de Telecomunica§µes Ldta.", "WISE-INDUSTRIA-DE-TELECOMUNICA§µES-LDTA" }, { 0x0050C2, 0x7EB000, 0x7EBFFF, "Sesol Industrial Computer", "SESOL-INDUSTRIAL" }, { 0x0050C2, 0x7A0000, 0x7A0FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x79B000, 0x79BFFF, "Schniewindt GmbH & Co. KG", "SCHNIEWINDT" }, { 0x0050C2, 0x796000, 0x796FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x791000, 0x791FFF, "M Squared Lasers Limited", "M-SQUARED-LASERS" }, { 0x0050C2, 0x78C000, 0x78CFFF, "Giga-tronics, Inc.", "GIGA-TRONICS" }, { 0x0050C2, 0x787000, 0x787FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x77F000, 0x77FFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x766000, 0x766FFF, "Gutermann Technology GmbH", "GUTERMANN" }, { 0x0050C2, 0x762000, 0x762FFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x0050C2, 0x75C000, 0x75CFFF, "ST–RK-TRONIC Stĥrk GmbH&Co. KG", "STOERK-TRONIC-STOERK" }, { 0x0050C2, 0x74E000, 0x74EFFF, "TRONICO", "TRONICO" }, { 0x0050C2, 0x748000, 0x748FFF, "Letechnic Ltd", "LETECHNIC" }, { 0x0050C2, 0x744000, 0x744FFF, "Avonaco Systems, Inc.", "AVONACO" }, { 0x0050C2, 0x73E000, 0x73EFFF, "Quantec Networks GmbH", "QUANTEC-NETWORKS" }, { 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, 0x730000, 0x730FFF, "haber & koenig electronics gmbh", "HABER-KOENIG-ELECTRONICS" }, { 0x0050C2, 0x72A000, 0x72AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x726000, 0x726FFF, "eta systemi CKB", "ETA-SYSTEMI-CKB" }, { 0x0050C2, 0x758000, 0x758FFF, "AixSolve GmbH", "AIXSOLVE" }, { 0x0050C2, 0x752000, 0x752FFF, "LOBER, S.A.", "LOBER" }, { 0x0050C2, 0x73A000, 0x73AFFF, "Naturela Ltd.", "NATURELA" }, { 0x0050C2, 0x734000, 0x734FFF, "CardioMEMS Inc.", "CARDIOMEMS" }, { 0x0050C2, 0x719000, 0x719FFF, "ennovatis GmbH", "ENNOVATIS" }, { 0x0050C2, 0x70F000, 0x70FFFF, "Zumbach Electronic AG", "ZUMBACH" }, { 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, 0x6DE000, 0x6DEFFF, "Laser Tools & Technics Corp.", "LASER-TOOLS-TECHNICS" }, { 0x0050C2, 0x6AC000, 0x6ACFFF, "Thales UK", "THALES-UK" }, { 0x0050C2, 0x6A6000, 0x6A6FFF, "Victory Concept Industries Ltd.", "VICTORY-CONCEPT-INDUSTRIES" }, { 0x0050C2, 0x6A1000, 0x6A1FFF, "PRICOL LIMITED", "PRICOL" }, { 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, 0x6B6000, 0x6B6FFF, "CommoDaS GmbH", "COMMODAS" }, { 0x0050C2, 0x6F2000, 0x6F2FFF, "Laser Electronics Ltd", "LASER-ELECTRONICS" }, { 0x0050C2, 0x6E8000, 0x6E8FFF, "Anymax", "ANYMAX" }, { 0x0050C2, 0x709000, 0x709FFF, "RO.VE.R. Laboratories S.p.A", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x0050C2, 0x704000, 0x704FFF, "The Dini Group, La Jolla inc.", "THE-DINI-GROUP-LA-JOLLA" }, { 0x0050C2, 0x6D4000, 0x6D4FFF, "Etani Electronics Co.,Ltd.", "ETANI-ELECTRONICS" }, { 0x0050C2, 0x6CA000, 0x6CAFFF, "Dynamic Hearing Pty Ltd", "DYNAMIC-HEARING-PTY" }, { 0x0050C2, 0x6C0000, 0x6C0FFF, "GLOSTER SANTE EUROPE", "GLOSTER-SANTE-EUROPE" }, { 0x0050C2, 0x6FC000, 0x6FCFFF, "Acte Sp. z o.o.", "ACTE-SP-Z-O-O" }, { 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, 0x605000, 0x605FFF, "Swistec GmbH", "SWISTEC" }, { 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, 0x61C000, 0x61CFFF, "TestPro Systems, Inc.", "TESTPRO" }, { 0x0050C2, 0x619000, 0x619FFF, "Linkbit, Inc.", "LINKBIT" }, { 0x0050C2, 0x618000, 0x618FFF, "Intergrated Security Mfg. Ltd", "INTERGRATED-SECURITY-MFG" }, { 0x0050C2, 0x612000, 0x612FFF, "IHP-GmbH", "IHP" }, { 0x0050C2, 0x62C000, 0x62CFFF, "AirMatrix, Inc.", "AIRMATRIX" }, { 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, 0x5FE000, 0x5FEFFF, "Novacomm", "NOVACOMM" }, { 0x0050C2, 0x5FB000, 0x5FBFFF, "All-Systems Electronics Pty Ltd", "ALL--ELECTRONICS-PTY" }, { 0x0050C2, 0x5F4000, 0x5F4FFF, "TeamProjects BV", "TEAMPROJECTS" }, { 0x0050C2, 0x63E000, 0x63EFFF, "T2 Communication Ltd", "T2-COMMUNICATION" }, { 0x0050C2, 0x63A000, 0x63AFFF, "3DSP Corporation", "3DSP" }, { 0x0050C2, 0x636000, 0x636FFF, "dSPACE GmbH", "DSPACE" }, { 0x0050C2, 0x630000, 0x630FFF, "Aurora Flight Sciences", "AURORA-FLIGHT-SCIENCES" }, { 0x0050C2, 0x66B000, 0x66BFFF, "flsystem", "FLSYSTEM" }, { 0x0050C2, 0x667000, 0x667FFF, "Vocality International Ltd", "VOCALITY" }, { 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, 0x671000, 0x671FFF, "Skyline Products, Inc", "SKYLINE-PRODUCTS" }, { 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, 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, 0x5AF000, 0x5AFFFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x5B0000, 0x5B0FFF, "INCOTEC GmbH", "INCOTEC" }, { 0x0050C2, 0x5E0000, 0x5E0FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x5DB000, 0x5DBFFF, "CEGELEC SUD EST", "CEGELEC-SUD-EST" }, { 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, 0x5AC000, 0x5ACFFF, "Kinemetrics, Inc.", "KINEMETRICS" }, { 0x0050C2, 0x5A6000, 0x5A6FFF, "Plastic Logic", "PLASTIC-LOGIC" }, { 0x0050C2, 0x5A5000, 0x5A5FFF, "Equipos de Telecomunicaci³n Optoelectronicos, S.A.", "EQUIPOS-DE-TELECOMUNICACI³N-OPTOELECTRONICOS" }, { 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, 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, 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, 0x5C3000, 0x5C3FFF, "KS System GmbH", "KS-SYSTEM" }, { 0x0050C2, 0x5C4000, 0x5C4FFF, "ProMik GmbH", "PROMIK" }, { 0x0050C2, 0x5D7000, 0x5D7FFF, "Synrad, Inc.", "SYNRAD" }, { 0x0050C2, 0x5D4000, 0x5D4FFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x556000, 0x556FFF, "Freiburger BlickZentrum", "FREIBURGER-BLICKZENTRUM" }, { 0x0050C2, 0x555000, 0x555FFF, "Control Alternative Solutions, Inc.", "CONTROL-ALTERNATIVE-SOLUTIONS" }, { 0x0050C2, 0x54C000, 0x54CFFF, "Sintecnos srl", "SINTECNOS-SRL" }, { 0x0050C2, 0x537000, 0x537FFF, "DST CONTROL AB", "DST-CONTROL-AB" }, { 0x0050C2, 0x538000, 0x538FFF, "EtherTek Circuits", "ETHERTEK-CIRCUITS" }, { 0x0050C2, 0x539000, 0x539FFF, "Detection Technology Inc.", "DETECTION" }, { 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, 0x509000, 0x509FFF, "Hillcrest Laboratories, Inc.", "HILLCREST-LABORATORIES" }, { 0x0050C2, 0x50C000, 0x50CFFF, "AIRWISE TECHNOLOGY CO., LTD.", "AIRWISE" }, { 0x0050C2, 0x502000, 0x502FFF, "Criterion Systems Limited", "CRITERION" }, { 0x0050C2, 0x4FF000, 0x4FFFFF, "Dakty GmbH", "DAKTY" }, { 0x0050C2, 0x4F8000, 0x4F8FFF, "Prodco International Inc.", "PRODCO" }, { 0x0050C2, 0x4F5000, 0x4F5FFF, "Monroe Electronics, Inc.", "MONROE-ELECTRONICS" }, { 0x0050C2, 0x525000, 0x525FFF, "VASTech", "VASTECH" }, { 0x0050C2, 0x523000, 0x523FFF, "AMRDEC Prototype Integration Facility", "AMRDEC-PROTOTYPE-INTEGRATION-FACILITY" }, { 0x0050C2, 0x51B000, 0x51BFFF, "Beta Lasermike Ltd", "BETA-LASERMIKE" }, { 0x0050C2, 0x519000, 0x519FFF, "DBMCORP, Inc.", "DBMCORP" }, { 0x0050C2, 0x54B000, 0x54BFFF, "Innopsys", "INNOPSYS" }, { 0x0050C2, 0x541000, 0x541FFF, "WAVES SYSTEM", "WAVES-SYSTEM" }, { 0x0050C2, 0x542000, 0x542FFF, "AVerMedia Technologies, Inc.", "AVERMEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x4EE000, 0x4EEFFF, "Beijing Corelogic Communication Co., Ltd.", "BEIJING-CORELOGIC-COMMUNICATION" }, { 0x0050C2, 0x4EB000, 0x4EBFFF, "Mandozzi Elettronica SA", "MANDOZZI-ELETTRONICA" }, { 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, 0x4E4000, 0x4E4FFF, "Embigence GmbH", "EMBIGENCE" }, { 0x0050C2, 0x4E1000, 0x4E1FFF, "SS Telecoms CC", "SS-TELECOMS-CC" }, { 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, 0x447000, 0x447FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x47C000, 0x47CFFF, "AUCONET GmbH", "AUCONET" }, { 0x0050C2, 0x47B000, 0x47BFFF, "Pitney Bowes, Inc", "PITNEY-BOWES" }, { 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, 0x4AE000, 0x4AEFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x4AD000, 0x4ADFFF, "OpenPeak, Inc.", "OPENPEAK" }, { 0x0050C2, 0x4A9000, 0x4A9FFF, "Faber Electronics BV", "FABER-ELECTRONICS" }, { 0x0050C2, 0x4A6000, 0x4A6FFF, "BUYANG ELECTRONICS INDUSTRIAL CO., LTD.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x49F000, 0x49FFFF, "GCS, Inc", "GCS" }, { 0x0050C2, 0x499000, 0x499FFF, "Trellia Networks", "TRELLIA-NETWORKS" }, { 0x0050C2, 0x4CD000, 0x4CDFFF, "Bixi Systems AG", "BIXI" }, { 0x0050C2, 0x4C6000, 0x4C6FFF, "Rubin Ltd.", "RUBIN" }, { 0x0050C2, 0x4C3000, 0x4C3FFF, "Quantum3D, Inc.", "QUANTUM3D" }, { 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, 0x490000, 0x490FFF, "Cloanto Corporation", "CLOANTO" }, { 0x0050C2, 0x48F000, 0x48FFFF, "DENGYOSHA co.,LTD.", "DENGYOSHA" }, { 0x0050C2, 0x486000, 0x486FFF, "Safegate International AB", "SAFEGATE-AB" }, { 0x0050C2, 0x485000, 0x485FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x4DA000, 0x4DAFFF, "MEDIORNET GmbH", "MEDIORNET" }, { 0x0050C2, 0x4D7000, 0x4D7FFF, "Delta Tau Data Systems, Inc.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x4D0000, 0x4D0FFF, "RCS Energy Management Ltd", "RCS-ENERGY-MANAGEMENT" }, { 0x0050C2, 0x46E000, 0x46EFFF, "Avenir Technologies Inc.", "AVENIR-TECHNOLOGIES" }, { 0x0050C2, 0x46B000, 0x46BFFF, "EASYTECH GmbH", "EASYTECH" }, { 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, 0x41F000, 0x41FFFF, "Avionica, Inc", "AVIONICA" }, { 0x0050C2, 0x3D1000, 0x3D1FFF, "Braintronics BV", "BRAINTRONICS" }, { 0x0050C2, 0x3D2000, 0x3D2FFF, "Adilec Enginyeria SL", "ADILEC-ENGINYERIA-SL" }, { 0x0050C2, 0x3D7000, 0x3D7FFF, "TTC TELEKOMUNIKACE Ltd", "TTC-TELEKOMUNIKACE" }, { 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, 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, 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, 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, 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, 0x39B000, 0x39BFFF, "YUYAMA MFG. CO., LTD.", "YUYAMA-MFG" }, { 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, 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, 0x403000, 0x403FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x434000, 0x434FFF, "ImperativeNetworks", "IMPERATIVENETWORKS" }, { 0x0050C2, 0x433000, 0x433FFF, "Idetech Europe S.A.", "IDETECH-EUROPE" }, { 0x0050C2, 0x430000, 0x430FFF, "Arcom Digital", "ARCOM-DIGITAL" }, { 0x0050C2, 0x43E000, 0x43EFFF, "Coppercom", "COPPERCOM" }, { 0x0050C2, 0x43A000, 0x43AFFF, "ProDesign GmbH", "PRODESIGN" }, { 0x0050C2, 0x43D000, 0x43DFFF, "Ann Arbor Sensor Systems LLC", "ANN-ARBOR-SENSOR-LLC" }, { 0x0050C2, 0x3B9000, 0x3B9FFF, "Gilbarco Autotank AB", "GILBARCO-AUTOTANK-AB" }, { 0x0050C2, 0x3B6000, 0x3B6FFF, "Arecont Vision, LLC", "ARECONT-VISION-LLC" }, { 0x0050C2, 0x396000, 0x396FFF, "RapidWave Inc.", "RAPIDWAVE" }, { 0x0050C2, 0x391000, 0x391FFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0x38C000, 0x38CFFF, "EPSILON SRL", "EPSILON-SRL" }, { 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, 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, 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, 0x2FD000, 0x2FDFFF, "American Microsystems, Ltd.", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0x2FE000, 0x2FEFFF, "Saab AB", "SAAB-AB" }, { 0x0050C2, 0x315000, 0x315FFF, "ifak system GmbH", "IFAK-SYSTEM" }, { 0x0050C2, 0x311000, 0x311FFF, "Comodo", "COMODO" }, { 0x0050C2, 0x308000, 0x308FFF, "FiveCo", "FIVECO" }, { 0x0050C2, 0x307000, 0x307FFF, "UNIONDIGITAL.,CO.LTD", "UNIONDIGITAL" }, { 0x0050C2, 0x386000, 0x386FFF, "Precision System Science Co.,Ltd", "PRECISION-SYSTEM-SCIENCE" }, { 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, 0x374000, 0x374FFF, "Owasys Advanced Wireless Devices", "OWASYS-ADVANCED-WIRELESS-DEVICES" }, { 0x0050C2, 0x36E000, 0x36EFFF, "Minicom Advanced Systems Ltd", "MINICOM-ADVANCED" }, { 0x0050C2, 0x364000, 0x364FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x35A000, 0x35AFFF, "Advanced Si-Net Co., LTD.", "ADVANCED-SI-NET" }, { 0x0050C2, 0x353000, 0x353FFF, "Crossing Informationssysteme GmbH", "CROSSING-INFORMATIONSSYSTEME" }, { 0x0050C2, 0x332000, 0x332FFF, "PUNJAB COMMUNICATIONS LTD", "PUNJAB-COMMUNICATION" }, { 0x0050C2, 0x2C1000, 0x2C1FFF, "Stage Tec Entwicklungsgesellschaft fĵr professionelle Audio", "STAGE-TEC-ENTWICKLUNGSGESELLSCHAFT-FUER-PROFESSIONELLE-AUDIO" }, { 0x0050C2, 0x2C2000, 0x2C2FFF, "Smarteye Corporation", "SMARTEYE" }, { 0x0050C2, 0x2BC000, 0x2BCFFF, "Uster Technologies AG", "USTER-TECHNOLOGIES" }, { 0x0050C2, 0x2AF000, 0x2AFFFF, "CSA Computer & Antriebstechnik GmbH", "CSA-ANTRIEBSTECHNIK" }, { 0x0050C2, 0x2A5000, 0x2A5FFF, "Septier Communication Ltd", "SEPTIER-COMMUNICATION" }, { 0x0050C2, 0x273000, 0x273FFF, "Servicios Condumex, S. A. de C. V.", "SERVICIOS-CONDUMEX-S-A-DE-C-V" }, { 0x0050C2, 0x2DF000, 0x2DFFFF, "MICREL-NKE", "MICREL-NKE" }, { 0x0050C2, 0x2E0000, 0x2E0FFF, "Baxter Healthcare", "BAXTER-HEALTHCARE" }, { 0x0050C2, 0x2D6000, 0x2D6FFF, "WIS Technologies", "WIS-TECHNOLOGIES" }, { 0x0050C2, 0x2D5000, 0x2D5FFF, "PIXY AG", "PIXY" }, { 0x0050C2, 0x291000, 0x291FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x287000, 0x287FFF, "TECNEW Electronics Engineering Cr., Ltd.", "TECNEW-ELECTRONICS-ENGINEERING-CR" }, { 0x0050C2, 0x27D000, 0x27DFFF, "ALLIED TELESIS K.K.", "ALLIED-TELESIS-K-K" }, { 0x0050C2, 0x29B000, 0x29BFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x2CB000, 0x2CBFFF, "FACTS Engineering LLC", "FACTS-ENGINEERING-LLC" }, { 0x0050C2, 0x2CC000, 0x2CCFFF, "EMBEDDED TOOLSMITHS", "EMBEDDED-TOOLSMITHS" }, { 0x0050C2, 0x2F4000, 0x2F4FFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x2F3000, 0x2F3FFF, "Crossbow Technology, Inc.", "CROSSBOW" }, { 0x0050C2, 0x2E9000, 0x2E9FFF, "SRI International", "SRI" }, { 0x0050C2, 0x2EA000, 0x2EAFFF, "QUBIsoft S.r.l.", "QUBISOFT-S-R-L" }, { 0x0050C2, 0x22E000, 0x22EFFF, "LORD INGENIERIE", "LORD-INGENIERIE" }, { 0x0050C2, 0x231000, 0x231FFF, "Legra Systems, Inc.", "LEGRA" }, { 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, 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, 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, 0x206000, 0x206FFF, "Windmill Innovations", "WINDMILL-INNOVATIONS" }, { 0x0050C2, 0x20A000, 0x20AFFF, "Ferrari electronic AG", "FERRARI" }, { 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, 0x24C000, 0x24CFFF, "Supertel", "SUPERTEL" }, { 0x0050C2, 0x245000, 0x245FFF, "Hauppauge Computer Works, Inc.", "HAUPPAUGE-WORKS" }, { 0x0050C2, 0x242000, 0x242FFF, "MDS SCIEX", "MDS-SCIEX" }, { 0x0050C2, 0x23B000, 0x23BFFF, "Envara", "ENVARA" }, { 0x0050C2, 0x238000, 0x238FFF, "Schwer+Kopka GmbH", "SCHWER+KOPKA" }, { 0x0050C2, 0x269000, 0x269FFF, "Technisyst Pty Ltd", "TECHNISYST-PTY" }, { 0x0050C2, 0x263000, 0x263FFF, "Vansco Electronics Oy", "VANSCO-ELECTRONICS-OY" }, { 0x0050C2, 0x25F000, 0x25FFFF, "Handtmann Maschinenfabrik GmbH&Co.KG", "HANDTMANN-MASCHINENFABRIK" }, { 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, 0x1B1000, 0x1B1FFF, "Axes Technologies", "AXES-TECHNOLOGIES" }, { 0x0050C2, 0x1AD000, 0x1ADFFF, "Remia s.r.o.", "REMIA-S-R-O" }, { 0x0050C2, 0x1A7000, 0x1A7FFF, "Alpha Beta Technologies, Inc.", "ALPHA-BETA-TECHNOLOGIES" }, { 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, 0x186000, 0x186FFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x0050C2, 0x180000, 0x180FFF, "Zultys Technologies", "ZULTYS-TECHNOLOGIES" }, { 0x0050C2, 0x176000, 0x176FFF, "Wavium AB", "WAVIUM-AB" }, { 0x0050C2, 0x1A3000, 0x1A3FFF, "Tidel Engineering, L.P.", "TIDEL-ENGINEERING-L-P" }, { 0x0050C2, 0x19D000, 0x19DFFF, "ELECTREX S.R.L", "ELECTREX-S-R-L" }, { 0x0050C2, 0x193000, 0x193FFF, "LaserBit Communications Corp.", "LASERBIT-COMMUNICATION" }, { 0x0050C2, 0x199000, 0x199FFF, "Survalent Technology Corporation", "SURVALENT" }, { 0x0050C2, 0x18E000, 0x18EFFF, "SPARR ELECTRONICS LTD", "SPARR-ELECTRONICS" }, { 0x0050C2, 0x18A000, 0x18AFFF, "Basler Electric Company", "BASLER-ELECTRIC-COMPANY" }, { 0x0050C2, 0x1D9000, 0x1D9FFF, "EDC", "EDC" }, { 0x0050C2, 0x1D5000, 0x1D5FFF, "Redpoint Controls", "REDPOINT-CONTROLS" }, { 0x0050C2, 0x1CF000, 0x1CFFFF, "LIFETIME MEMORY PRODUCTS, INC.", "LIFETIME-MEMORY-PRODUCTS" }, { 0x0050C2, 0x1B7000, 0x1B7FFF, "MosChip USA", "MOSCHIP-USA" }, { 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, 0x161000, 0x161FFF, "J&B Engineering Group S.L.", "J-B-ENGINEERING-GROUP-S-L" }, { 0x0050C2, 0x15C000, 0x15CFFF, "Aoptix Technologies", "AOPTIX-TECHNOLOGIES" }, { 0x0050C2, 0x13E000, 0x13EFFF, "AVerMedia Systems, Inc.", "AVERMEDIA" }, { 0x0050C2, 0x139000, 0x139FFF, "SR Research Ltd.", "SR-RESEARCH" }, { 0x0050C2, 0x157000, 0x157FFF, "nCore, Inc.", "NCORE" }, { 0x0050C2, 0x14D000, 0x14DFFF, "wellink, Ltd.", "WELLINK" }, { 0x0050C2, 0x095000, 0x095FFF, "SEATECH", "SEATECH" }, { 0x0050C2, 0x152000, 0x152FFF, "AirVast Technology Inc.", "AIRVAST" }, { 0x0050C2, 0x166000, 0x166FFF, "Infineer Ltd.", "INFINEER" }, { 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, 0x062000, 0x062FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x16E000, 0x16EFFF, "PMC", "PMC" }, { 0x0050C2, 0x143000, 0x143FFF, "AARTESYS AG", "AARTESYS" }, { 0x0050C2, 0x148000, 0x148FFF, "Alltec GmbH", "ALLTEC" }, { 0x0050C2, 0x118000, 0x118FFF, "Microbit 2.0 AB", "MICROBIT-2-0-AB" }, { 0x0050C2, 0x0F8000, 0x0F8FFF, "Tecnint HTE S.r.L.", "TECNINT-HTE-S-R-L" }, { 0x0050C2, 0x134000, 0x134FFF, "DRS Photronics", "DRS-PHOTRONICS" }, { 0x0050C2, 0x131000, 0x131FFF, "InBus Engineering, Inc.", "INBUS-ENGINEERING" }, { 0x0050C2, 0x132000, 0x132FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x12C000, 0x12CFFF, "Delta Tau Data Systems, Inc.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x122000, 0x122FFF, "Diva Systems", "DIVA" }, { 0x0050C2, 0x11D000, 0x11DFFF, "Destiny Networks, Inc.", "DESTINY-NETWORKS" }, { 0x0050C2, 0x11E000, 0x11EFFF, "Volvo Car Corporation", "VOLVO-CAR" }, { 0x0050C2, 0x114000, 0x114FFF, "Quest Innovations", "QUEST-INNOVATIONS" }, { 0x0050C2, 0x113000, 0x113FFF, "Ace Electronics, Inc.", "ACE-ELECTRONICS" }, { 0x0050C2, 0x107000, 0x107FFF, "NewHer Systems", "NEWHER" }, { 0x0050C2, 0x0FD000, 0x0FDFFF, "Inducomp Corporation", "INDUCOMP" }, { 0x0050C2, 0x102000, 0x102FFF, "Million Tech Development Ltd.", "MILLION-TECH-DEVELOPMENT" }, { 0x0050C2, 0x10C000, 0x10CFFF, "Photonic Bridges, Inc.", "PHOTONIC-BRIDGES" }, { 0x0050C2, 0x128000, 0x128FFF, "Pycon, Inc.", "PYCON" }, { 0x0050C2, 0x0F1000, 0x0F1FFF, "Polyvision Corporation", "POLYVISION" }, { 0x0050C2, 0x0E9000, 0x0E9FFF, "Smartmedia LLC", "SMARTMEDIA-LLC" }, { 0x0050C2, 0x0DF000, 0x0DFFFF, "Innovation Institute, Inc.", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x0DA000, 0x0DAFFF, "Motion Analysis Corp.", "MOTION-ANALYSIS" }, { 0x0050C2, 0x0C0000, 0x0C0FFF, "Imigix Ltd.", "IMIGIX" }, { 0x0050C2, 0x0BD000, 0x0BDFFF, "Tattile", "TATTILE" }, { 0x0050C2, 0x0B8000, 0x0B8FFF, "LAN Controls, Inc.", "LAN-CONTROLS" }, { 0x0050C2, 0x0D0000, 0x0D0FFF, "Telefrang AB", "TELEFRANG-AB" }, { 0x0050C2, 0x0CA000, 0x0CAFFF, "J D Richards", "J-D-RICHARDS" }, { 0x0050C2, 0x0B3000, 0x0B3FFF, "SMX Corporation", "SMX" }, { 0x0050C2, 0x0AE000, 0x0AEFFF, "Zarak Systems Corp.", "ZARAK" }, { 0x0050C2, 0x0D5000, 0x0D5FFF, "Zelax", "ZELAX" }, { 0x0050C2, 0x0C7000, 0x0C7FFF, "TransComm Technology System, Inc.", "TRANSCOMM-SYSTEM" }, { 0x0050C2, 0x0C3000, 0x0C3FFF, "Tonbu, Inc.", "TONBU" }, { 0x0050C2, 0x0AC000, 0x0ACFFF, "Honeywell GNO", "HONEYWELL-GNO" }, { 0x0050C2, 0x0E4000, 0x0E4FFF, "Collabo Tec. Co., Ltd.", "COLLABO-TEC" }, { 0x0050C2, 0x0A2000, 0x0A2FFF, "J¤ger Computergesteuerte Messtechnik GmbH", "JAEGER-COMPUTERGESTEUERTE-MESSTECHNIK" }, { 0x0050C2, 0x07C000, 0x07CFFF, "PLLB elettronica spa", "PLLB-ELETTRONICA-SPA" }, { 0x0050C2, 0x076000, 0x076FFF, "Litton Guidance & Control Systems", "LITTON-GUIDANCE-CONTROL" }, { 0x0050C2, 0x081000, 0x081FFF, "Matuschek Messtechnik GmbH", "MATUSCHEK-MESSTECHNIK" }, { 0x0050C2, 0x086000, 0x086FFF, "Validyne Engineering Corp.", "VALIDYNE-ENGINEERING" }, { 0x0050C2, 0x09E000, 0x09EFFF, "Infinitec Networks, Inc.", "INFINITEC-NETWORKS" }, { 0x0050C2, 0x08B000, 0x08BFFF, "HYPERCHIP Inc.", "HYPERCHIP" }, { 0x0050C2, 0x0A6000, 0x0A6FFF, "Arula Systems, Inc.", "ARULA" }, { 0x0050C2, 0x090000, 0x090FFF, "Invensys Controls Network Systems", "INVENSYS-CONTROLS-NETWORK" }, { 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, 0x058000, 0x058FFF, "Vision Research, Inc.", "VISION-RESEARCH" }, { 0x0050C2, 0x051000, 0x051FFF, "JSR Ultrasonics", "JSR-ULTRASONICS" }, { 0x0050C2, 0x046000, 0x046FFF, "Private", "PRIVATE" }, { 0x0050C2, 0x049000, 0x049FFF, "Computer Concepts Corp", "CONCEPTS" }, { 0x0050C2, 0x06F000, 0x06FFFF, "Digital Services Group", "DIGITAL-SERVICES-GROUP" }, { 0x0050C2, 0x020000, 0x020FFF, "Icon Research Ltd.", "ICON-RESEARCH" }, { 0x0050C2, 0x007000, 0x007FFF, "Clive Green & Co. Ltd.", "CLIVE-GREEN" }, { 0x0050C2, 0x034000, 0x034FFF, "Ing. Buero W. Kanis GmbH", "ING-BUERO-W-KANIS" }, { 0x0050C2, 0x02A000, 0x02AFFF, "VersaLogic Corp.", "VERSALOGIC" }, }; ipv6calc-0.99.1/databases/ieee-iab/README0000664000175100017510000000025712131072575016623 0ustar peterpeter$Id: README,v 1.2 2013/04/09 20:09:33 ds6peter Exp $ IAB database: URL: http://standards.ieee.org/regauth/oui/iab.txt File will be retrieved on-the-fly during "make update" ipv6calc-0.99.1/databases/ieee-oui36/0000775000175100017510000000000012572537445016164 5ustar peterpeteripv6calc-0.99.1/databases/ieee-oui36/Makefile0000664000175100017510000000150212131072575017607 0ustar peterpeter# Project : ipv6calc/databases/ieee-oui36 # File : Makefile # Version : $Id: Makefile,v 1.1 2013/04/09 20:09:33 ds6peter Exp $ # 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-0.99.1/databases/ieee-oui36/README0000664000175100017510000000027512131072575017035 0ustar peterpeter$Id: README,v 1.1 2013/04/09 20:09:33 ds6peter Exp $ OUI36 database: URL: http://standards.ieee.org/develop/regauth/oui36/oui36.txt File will be retrieved on-the-fly during "make update" ipv6calc-0.99.1/databases/ieee-oui36/dbieee_oui36.h0000664000175100017510000023420712572502575020603 0ustar peterpeter/* * Project : ipv6calc * File : dbieee_oui36.h * Version : $Id: dbieee_oui36.h,v 1.31 2015/09/05 06:02:37 ds6peter Exp $ * Generated : Sat Sep 5 06:59:55 2015 * Data copyright: IEEE * * Information: * Additional header file for libipv6calc_db_wrapper_BuiltIn.c */ /*@unused@*/ static const char* libieee_oui36_status __attribute__ ((__unused__)) = "OUI36/20150905"; static const s_ieee_oui36 libieee_oui36[] = { { 0x70B3D5, 0xFC1000, 0xFC1FFF, "InDiCor", "INDICOR" }, { 0x70B3D5, 0xBB2000, 0xBB2FFF, "Mettler Toledo Hi-Speed", "METTLER-TOLEDO-HI-SPEED" }, { 0x70B3D5, 0xD59000, 0xD59FFF, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x70B3D5, 0xA3C000, 0xA3CFFF, "Wave Music Ltd", "WAVE-MUSIC" }, { 0x70B3D5, 0x14F000, 0x14FFFF, "Mobile Devices Unlimited", "MOBILE-DEVICES-UNLIMITED" }, { 0x70B3D5, 0x5B1000, 0x5B1FFF, "EPD Electronics", "EPD-ELECTRONICS" }, { 0x70B3D5, 0xEAE000, 0xEAEFFF, "Orlaco Products B.V.", "ORLACO-PRODUCTS" }, { 0x70B3D5, 0x066000, 0x066FFF, "North Pole Engineering, Inc.", "NORTH-POLE-ENGINEERING" }, { 0x70B3D5, 0x57D000, 0x57DFFF, "WICOM1 GmbH", "WICOM1" }, { 0x70B3D5, 0xE77000, 0xE77FFF, "OPTIX JSC", "OPTIX-JSC" }, { 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, 0x740000, 0x740FFF, "Prisma Telecom Testing Srl", "PRISMA-TELECOM-TESTING-SRL" }, { 0x70B3D5, 0x84E000, 0x84EFFF, "Chromalox, Inc.", "CHROMALOX" }, { 0x70B3D5, 0x817000, 0x817FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x14E000, 0x14EFFF, "Innosonix GmbH", "INNOSONIX" }, { 0x70B3D5, 0x185000, 0x185FFF, "R&D Gran-System-S LLC", "R-D-GRAN-SYSTEM-S-LLC" }, { 0x70B3D5, 0x43B000, 0x43BFFF, "Kalycito Infotech Private Limited", "KALYCITO-INFOTECH-PRIVATE" }, { 0x70B3D5, 0xCD6000, 0xCD6FFF, "VideoRay LLC", "VIDEORAY-LLC" }, { 0x70B3D5, 0x079000, 0x079FFF, "CheckBill Co,Ltd.", "CHECKBILL" }, { 0x70B3D5, 0x8FF000, 0x8FFFFF, "IMST GmbH", "IMST" }, { 0x70B3D5, 0xDC0000, 0xDC0FFF, "ATEME", "ATEME" }, { 0x70B3D5, 0xC88000, 0xC88FFF, "SINED srl", "SINED-SRL" }, { 0x70B3D5, 0xB51000, 0xB51FFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0xD29000, 0xD29FFF, "Sportzcast", "SPORTZCAST" }, { 0x70B3D5, 0xA1D000, 0xA1DFFF, "Fluid Components International", "FLUID-COMPONENTS" }, { 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, 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, 0xF79000, 0xF79FFF, "Firehose Labs, Inc.", "FIREHOSE-LABS" }, { 0x70B3D5, 0x404000, 0x404FFF, "RANIX,Inc.", "RANIX" }, { 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, 0x538000, 0x538FFF, "sydetion UG (h.b.)", "SYDETION-UG-H-B" }, { 0x70B3D5, 0x2DC000, 0x2DCFFF, "Bolide Technology Group, Inc.", "BOLIDE-GROUP" }, { 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, 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, 0xB85000, 0xB85FFF, "Fenotech Inc.", "FENOTECH" }, { 0x70B3D5, 0x2EE000, 0x2EEFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x1E5000, 0x1E5FFF, "VendNovation LLC", "VENDNOVATION-LLC" }, { 0x70B3D5, 0x45F000, 0x45FFFF, "Cloud4Wi", "CLOUD4WI" }, { 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, 0xD61000, 0xD61FFF, "VITEC", "VITEC" }, { 0x70B3D5, 0xB78000, 0xB78FFF, "HOERMANN GmbH", "HOERMANN" }, { 0x70B3D5, 0xF78000, 0xF78FFF, "Manvish eTech Pvt. Ltd.", "MANVISH-ETECH-PVT" }, { 0x70B3D5, 0x88F000, 0x88FFFF, "Quaesta Instruments, LLC", "QUAESTA-INSTRUMENTS-LLC" }, { 0x70B3D5, 0x835000, 0x835FFF, "CommBox P/L", "COMMBOX-P/L" }, { 0x70B3D5, 0x714000, 0x714FFF, "Alturna Networks", "ALTURNA-NETWORKS" }, { 0x70B3D5, 0x2A7000, 0x2A7FFF, "Plasmability, LLC", "PLASMABILITY-LLC" }, { 0x70B3D5, 0x5A9000, 0x5A9FFF, "Bunka Shutter Co., Ltd.", "BUNKA-SHUTTER" }, { 0x70B3D5, 0x995000, 0x995FFF, "LayTec AG", "LAYTEC" }, { 0x70B3D5, 0xD7A000, 0xD7AFFF, "Speedifi Inc", "SPEEDIFI" }, { 0x70B3D5, 0x737000, 0x737FFF, "SD Biosensor", "SD-BIOSENSOR" }, { 0x70B3D5, 0x730000, 0x730FFF, "Videogenix", "VIDEOGENIX" }, { 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, 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, 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, 0x5C8000, 0x5C8FFF, "YUYAMA MFG Co.,Ltd", "YUYAMA-MFG" }, { 0x70B3D5, 0xCB8000, 0xCB8FFF, "Verti Tecnologia", "VERTI-TECNOLOGIA" }, { 0x70B3D5, 0xA97000, 0xA97FFF, "Bizwerks, LLC", "BIZWERKS-LLC" }, { 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, 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, 0x341000, 0x341FFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x875000, 0x875FFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x70B3D5, 0x660000, 0x660FFF, "Smart Service Technologies CO., LTD", "SMART-SERVICE-TECHNOLOGIES" }, { 0x70B3D5, 0xEFE000, 0xEFEFFF, "MEIDEN SYSTEM SOLUTIONS", "MEIDEN-SYSTEM-SOLUTIONS" }, { 0x70B3D5, 0x030000, 0x030FFF, "Tresent Technologies", "TRESENT-TECHNOLOGIES" }, { 0x70B3D5, 0x7CD000, 0x7CDFFF, "Molekuler Goruntuleme A.S.", "MOLEKULER-GORUNTULEME-A-S" }, { 0x70B3D5, 0x6F8000, 0x6F8FFF, "SENSEON Corporation", "SENSEON" }, { 0x70B3D5, 0xC60000, 0xC60FFF, "Aircell Inc", "AIRCELL" }, { 0x70B3D5, 0x65A000, 0x65AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xC03000, 0xC03FFF, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0x70B3D5, 0x75D000, 0x75DFFF, "Nanjing Magewell Electronics Co., Ltd.", "NANJING-MAGEWELL-ELECTRONICS" }, { 0x70B3D5, 0x35D000, 0x35DFFF, "Fresh Idea Factory BV", "FRESH-IDEA-FACTORY" }, { 0x70B3D5, 0x344000, 0x344FFF, "IHI Inspection & Instrumentation Co., Ltd.", "IHI-INSPECTION-INSTRUMENTATION" }, { 0x70B3D5, 0x4CD000, 0x4CDFFF, "Power Electronics Espana, S.L.", "POWER-ELECTRONICS-ESPANA-S-L" }, { 0x70B3D5, 0x22E000, 0x22EFFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x0EC000, 0x0ECFFF, "ACS MOTION CONTROL", "ACS-MOTION-CONTROL" }, { 0x70B3D5, 0xC39000, 0xC39FFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x70B3D5, 0x417000, 0x417FFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x70B3D5, 0xCF6000, 0xCF6FFF, "Tornado Modular Systems", "TORNADO-MODULAR" }, { 0x70B3D5, 0x186000, 0x186FFF, "Rohde&Schwarz Topex", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x3DB000, 0x3DBFFF, "KST technology", "KST" }, { 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, 0x5EA000, 0x5EAFFF, "KYS,INC", "KYS" }, { 0x70B3D5, 0x7B3000, 0x7B3FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0x0FF000, 0x0FFFFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 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, 0xBC6000, 0xBC6FFF, "Hatteland Display AS", "HATTELAND-DISPLAY-AS" }, { 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, 0x502000, 0x502FFF, "Glidewell Laboratories", "GLIDEWELL-LABORATORIES" }, { 0x70B3D5, 0x3CE000, 0x3CEFFF, "Aditec GmbH", "ADITEC" }, { 0x70B3D5, 0x8DC000, 0x8DCFFF, "Niveo International BV", "NIVEO" }, { 0x70B3D5, 0x099000, 0x099FFF, "Schwer+Kopka GmbH", "SCHWER+KOPKA" }, { 0x70B3D5, 0xCBC000, 0xCBCFFF, "Procon Electronics Pty Ltd", "PROCON-ELECTRONICS-PTY" }, { 0x70B3D5, 0x2DA000, 0x2DAFFF, "Skywave Networks Private Limited", "SKYWAVE-NETWORKS-PRIVATE" }, { 0x70B3D5, 0x55D000, 0x55DFFF, "LunaNexus Inc", "LUNANEXUS" }, { 0x70B3D5, 0xDF3000, 0xDF3FFF, "SPC Bioclinicum", "SPC-BIOCLINICUM" }, { 0x70B3D5, 0xCF1000, 0xCF1FFF, "LightDec GmbH & Co. KG", "LIGHTDEC" }, { 0x70B3D5, 0x45E000, 0x45EFFF, "eSOL Co.,Ltd.", "ESOL" }, { 0x70B3D5, 0xB88000, 0xB88FFF, "ARP Corporation", "ARP" }, { 0x70B3D5, 0xBBE000, 0xBBEFFF, "Sunrise Systems Electronics Co. Inc.", "SUNRISE-ELECTRONICS" }, { 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, 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, 0x7E7000, 0x7E7FFF, "Atessa, Inc.", "ATESSA" }, { 0x70B3D5, 0x39B000, 0x39BFFF, "IROC AB", "IROC-AB" }, { 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, 0x0E0000, 0x0E0FFF, "PLCiS", "PLCIS" }, { 0x70B3D5, 0xEDC000, 0xEDCFFF, "J.D. Koftinoff Software, Ltd.", "J-D-KOFTINOFF-SOFTWARE" }, { 0x70B3D5, 0xFFE000, 0xFFEFFF, "Private", "PRIVATE" }, { 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" }, { 0x70B3D5, 0xC58000, 0xC58FFF, "RMI Laser LLC", "RMI-LASER-LLC" }, { 0x70B3D5, 0x507000, 0x507FFF, "Human Oriented Technology, Inc.", "HUMAN-ORIENTED" }, { 0x70B3D5, 0x42F000, 0x42FFFF, "SINTOKOGIO, LTD", "SINTOKOGIO" }, { 0x70B3D5, 0x702000, 0x702FFF, "Sensor Highway Ltd", "SENSOR-HIGHWAY" }, { 0x001BC5, 0x0B4000, 0x0B4FFF, "COBAN SRL", "COBAN-SRL" }, { 0x001BC5, 0x0BF000, 0x0BFFFF, "TN Core Co.,Ltd.", "TN-CORE" }, { 0x001BC5, 0x0BE000, 0x0BEFFF, "YESpay International Ltd", "YESPAY" }, { 0x001BC5, 0x0C2000, 0x0C2FFF, "TechSolutions A/S", "TECHSOLUTIONS-A/S" }, { 0x001BC5, 0x0C9000, 0x0C9FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x0C8000, 0x0C8FFF, "Dialine", "DIALINE" }, { 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, 0x0AE000, 0x0AEFFF, "Techlan Reti s.r.l.", "TECHLAN-RETI-S-R-L" }, { 0x001BC5, 0x0AA000, 0x0AAFFF, "Senceive Ltd", "SENCEIVE" }, { 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, 0x0A5000, 0x0A5FFF, "Tesla Controls", "TESLA-CONTROLS" }, { 0x001BC5, 0x0A4000, 0x0A4FFF, "RADMOR S.A.", "RADMOR" }, { 0x001BC5, 0x0AB000, 0x0ABFFF, "Private", "PRIVATE" }, { 0x001BC5, 0x099000, 0x099FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x098000, 0x098FFF, "Cubic Systems, Inc.", "CUBIC" }, { 0x001BC5, 0x096000, 0x096FFF, "Sanstreak Corp.", "SANSTREAK" }, { 0x001BC5, 0x09A000, 0x09AFFF, "Shenzhen Guang Lian Zhi Tong Limited", "SHENZHEN-GUANG-LIAN-ZHI-TONG" }, { 0x001BC5, 0x095000, 0x095FFF, "PREVAC sp. z o.o.", "PREVAC-SP-Z-O-O" }, { 0x001BC5, 0x087000, 0x087FFF, "Onnet Technologies And Innovations", "ONNET-TECHNOLOGIES-AND-INNOVATIONS" }, { 0x001BC5, 0x090000, 0x090FFF, "Seven Solutions S.L", "SEVEN-SOLUTIONS-S-L" }, { 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, 0x083000, 0x083FFF, "DIWEL", "DIWEL" }, { 0x001BC5, 0x06F000, 0x06FFFF, "LLC Emzior", "LLC-EMZIOR" }, { 0x001BC5, 0x079000, 0x079FFF, "HPI High Pressure Instrumentation GmbH", "HPI-HIGH-PRESSURE-INSTRUMENTATION" }, { 0x001BC5, 0x069000, 0x069FFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x001BC5, 0x07D000, 0x07DFFF, "Greatcom AG", "GREATCOM" }, { 0x001BC5, 0x073000, 0x073FFF, "tado GmbH", "TADO" }, { 0x001BC5, 0x05F000, 0x05FFFF, "Klingenthaler Musikelektronik GmbH", "KLINGENTHALER-MUSIKELEKTRONIK" }, { 0x001BC5, 0x065000, 0x065FFF, "Plair Media Inc.", "PLAIR-MEDIA" }, { 0x001BC5, 0x051000, 0x051FFF, "QQ Navigation AB", "QQ-NAVIGATION-AB" }, { 0x001BC5, 0x055000, 0x055FFF, "LUMIPLAN TRANSPORT ", "LUMIPLAN-TRANSPORT" }, { 0x001BC5, 0x05B000, 0x05BFFF, "konzeptpark GmbH", "KONZEPTPARK" }, { 0x001BC5, 0x04B000, 0x04BFFF, "Silicon Controls", "SILICON-CONTROLS" }, { 0x001BC5, 0x041000, 0x041FFF, "DesignA Electronics Limited", "DESIGNA-ELECTRONICS" }, { 0x001BC5, 0x047000, 0x047FFF, "PT. Amanindo Nusapadu", "PT-AMANINDO-NUSAPADU" }, { 0x001BC5, 0x036000, 0x036FFF, "LOMAR SRL", "LOMAR-SRL" }, { 0x001BC5, 0x035000, 0x035FFF, "RTLS Ltd.", "RTLS" }, { 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, 0x02C000, 0x02CFFF, "Care Everywhere LLC", "CARE-EVERYWHERE-LLC" }, { 0x001BC5, 0x02B000, 0x02BFFF, "Saturn South Pty Ltd", "SATURN-SOUTH-PTY" }, { 0x001BC5, 0x02D000, 0x02DFFF, "DDTRONIK Dariusz Dowgiert", "DDTRONIK-DARIUSZ-DOWGIERT" }, { 0x001BC5, 0x029000, 0x029FFF, "2 FRANCE MARINE", "2-FRANCE-MARINE" }, { 0x001BC5, 0x028000, 0x028FFF, "STECHWIN.CO.LTD.", "STECHWIN" }, { 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, 0x017000, 0x017FFF, "cPacket Networks", "CPACKET-NETWORKS" }, { 0x001BC5, 0x000000, 0x000FFF, "Converging Systems Inc.", "CONVERGING" }, { 0x70B3D5, 0x7EC000, 0x7ECFFF, "GRIDSMART Technologies", "GRIDSMART-TECHNOLOGIES" }, { 0x70B3D5, 0xAF9000, 0xAF9FFF, "Critical Link LLC", "CRITICAL-LINK-LLC" }, { 0x70B3D5, 0x671000, 0x671FFF, "Sea Shell Corporation", "SEA-SHELL" }, { 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, 0x76F000, 0x76FFFF, "OTI LTD", "OTI" }, { 0x70B3D5, 0x140000, 0x140FFF, "Virta Laboratories, Inc.", "VIRTA-LABORATORIES" }, { 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, 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, 0x9F0000, 0x9F0FFF, "FUJICOM Co.,Ltd.", "FUJICOM" }, { 0x70B3D5, 0xB91000, 0xB91FFF, "Dynetics, Inc.", "DYNETICS" }, { 0x70B3D5, 0x4DE000, 0x4DEFFF, "Oso Technologies, Inc.", "OSO-TECHNOLOGIES" }, { 0x70B3D5, 0x827000, 0x827FFF, "Metromatics Pty Ltd", "METROMATICS-PTY" }, { 0x70B3D5, 0x166000, 0x166FFF, "SERIAL IMAGE INC.", "SERIAL-IMAGE" }, { 0x70B3D5, 0xE59000, 0xE59FFF, "FRACARRO SPA", "FRACARRO-SPA" }, { 0x70B3D5, 0x76D000, 0x76DFFF, "Trimble", "TRIMBLE" }, { 0x70B3D5, 0xEE5000, 0xEE5FFF, "Beijing Hzhytech Technology Co.Ltd", "BEIJING-HZHYTECH" }, { 0x70B3D5, 0xD0E000, 0xD0EFFF, "Beijing Aumiwalker technology CO.,LTD", "BEIJING-AUMIWALKER" }, { 0x70B3D5, 0x789000, 0x789FFF, "SEMEX-EngCon GmbH", "SEMEX-ENGCON" }, { 0x70B3D5, 0xCFD000, 0xCFDFFF, "iLOQ Oy", "ILOQ-OY" }, { 0x70B3D5, 0xAB5000, 0xAB5FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0x9CA000, 0x9CAFFF, "KOMSIS ELEKTRONIK SISTEMLERI SAN. TIC. LTD.STI", "KOMSIS-ELEKTRONIK-SISTEMLERI-SAN-TIC-STI" }, { 0x70B3D5, 0xB35000, 0xB35FFF, "Rexxam Co.,Ltd.", "REXXAM" }, { 0x70B3D5, 0x0E6000, 0x0E6FFF, "Nasdaq", "NASDAQ" }, { 0x70B3D5, 0x087000, 0x087FFF, "Tempus Fugit Consoles bvba", "TEMPUS-FUGIT-CONSOLES-BVBA" }, { 0x70B3D5, 0xF54000, 0xF54FFF, "Revolution Retail Systems", "REVOLUTION-RETAIL" }, { 0x70B3D5, 0xF73000, 0xF73FFF, "ASL Holdings", "ASL-HOLDINGS" }, { 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, 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, 0x916000, 0x916FFF, "Techno Mathematical Co.,Ltd", "TECHNO-MATHEMATICAL" }, { 0x70B3D5, 0xE30000, 0xE30FFF, "QUISS AG", "QUISS" }, { 0x70B3D5, 0xD2D000, 0xD2DFFF, "Evolute Systems Private Limited", "EVOLUTE-PRIVATE" }, { 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, 0x7B7000, 0x7B7FFF, "LSB - LA SALLE BLANCHE", "LSB---LA-SALLE-BLANCHE" }, { 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, 0x1E0000, 0x1E0FFF, "TOPROOT Technology Corp. Ltd.,", "TOPROOT" }, { 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, 0x10C000, 0x10CFFF, "Vocality International", "VOCALITY" }, { 0x70B3D5, 0xD48000, 0xD48FFF, "HEADROOM Broadcast GmbH", "HEADROOM-BROADCAST" }, { 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, 0xDF6000, 0xDF6FFF, "Tiab Limited", "TIAB" }, { 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, 0x99F000, 0x99FFFF, "Confed Holding B.V.", "CONFED-HOLDING" }, { 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, 0x7CE000, 0x7CEFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xDE7000, 0xDE7FFF, "Innominds Software Private Limited", "INNOMINDS-SOFTWARE-PRIVATE" }, { 0x70B3D5, 0x1F4000, 0x1F4FFF, "Hangzhou Woosiyuan Communication Co.,Ltd.", "HANGZHOU-WOOSIYUAN-COMMUNICATION" }, { 0x70B3D5, 0xB7E000, 0xB7EFFF, "Elbit Systems of America - FMF Operations", "ELBIT-OF-AMERICA---FMF-OPERATIONS" }, { 0x70B3D5, 0x092000, 0x092FFF, "inomed Medizintechnik GmbH", "INOMED-MEDIZINTECHNIK" }, { 0x70B3D5, 0x1A1000, 0x1A1FFF, "HMicro Inc", "HMICRO" }, { 0x70B3D5, 0x0C1000, 0x0C1FFF, "Nexus Technologies Pty Ltd", "NEXUS-TECHNOLOGIES-PTY" }, { 0x70B3D5, 0xE6E000, 0xE6EFFF, "Lieron BVBA", "LIERON-BVBA" }, { 0x70B3D5, 0xFF3000, 0xFF3FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x8E0000, 0x8E0FFF, "SOUDAX EQUIPEMENTS", "SOUDAX-EQUIPEMENTS" }, { 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, 0xAE3000, 0xAE3FFF, "Zhejiang Wellsun Electric Meter Co.,Ltd", "ZHEJIANG-WELLSUN-ELECTRIC-METER" }, { 0x70B3D5, 0xBEF000, 0xBEFFFF, "Sensortech Systems Inc.", "SENSORTECH" }, { 0x70B3D5, 0xF39000, 0xF39FFF, "Zenros ApS", "ZENROS-APS" }, { 0x70B3D5, 0xC56000, 0xC56FFF, "TELETASK", "TELETASK" }, { 0x70B3D5, 0x0A4000, 0x0A4FFF, "Communication Technology Ltd.", "COMMUNICATION" }, { 0x70B3D5, 0xA99000, 0xA99FFF, "Bandelin electronic GmbH & Co. KG", "BANDELIN" }, { 0x70B3D5, 0x7EF000, 0x7EFFFF, "CRAVIS CO., LIMITED", "CRAVIS" }, { 0x70B3D5, 0xB24000, 0xB24FFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x70B3D5, 0x412000, 0x412FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0xE75000, 0xE75FFF, "Nke", "NKE" }, { 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, 0x986000, 0x986FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xC78000, 0xC78FFF, "NETA Elektronik AS", "NETA-ELEKTRONIK-AS" }, { 0x70B3D5, 0x564000, 0x564FFF, "christmann informationstechnik + medien GmbH & Co. KG", "CHRISTMANN-INFORMATIONSTECHNIK-+-MEDIEN" }, { 0x70B3D5, 0xE07000, 0xE07FFF, "Baader Planetarium GmbH", "BAADER-PLANETARIUM" }, { 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, 0x54E000, 0x54EFFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x70B3D5, 0x28E000, 0x28EFFF, "TEX COMPUTER SRL ", "TEX-SRL" }, { 0x70B3D5, 0x655000, 0x655FFF, "AOT System GmbH", "AOT-SYSTEM" }, { 0x70B3D5, 0xEE4000, 0xEE4FFF, "O-Net Automation Technology (Shenzhen)Limited", "O-NET-AUTOMATION-SHENZHEN" }, { 0x70B3D5, 0x5B5000, 0x5B5FFF, "Lehigh Electric Products Co", "LEHIGH-ELECTRIC-PRODUCTS" }, { 0x70B3D5, 0xDC5000, 0xDC5FFF, "Excel Medical Electronics LLC", "EXCEL-MEDICAL-ELECTRONICS-LLC" }, { 0x70B3D5, 0xBBD000, 0xBBDFFF, "Providius Corp", "PROVIDIUS" }, { 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, 0xAE2000, 0xAE2FFF, "Transas Marine International", "TRANSAS-MARINE" }, { 0x70B3D5, 0xB8C000, 0xB8CFFF, "ePOINT Embedded Computing Limited", "EPOINT-EMBEDDED-COMPUTING" }, { 0x70B3D5, 0xBCA000, 0xBCAFFF, "Deymed Diagnostic", "DEYMED-DIAGNOSTIC" }, { 0x70B3D5, 0xA62000, 0xA62FFF, "Environexus", "ENVIRONEXUS" }, { 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" }, { 0x70B3D5, 0xFB0000, 0xFB0FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0x077000, 0x077FFF, "InAccess Networks SA", "INACCESS-NETWORKS" }, { 0x70B3D5, 0x433000, 0x433FFF, "Flexsolution APS", "FLEXSOLUTION-APS" }, { 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, 0x5E8000, 0x5E8FFF, "VITEC", "VITEC" }, { 0x70B3D5, 0x0FB000, 0x0FBFFF, "Cygnus LLC", "CYGNUS-LLC" }, { 0x70B3D5, 0xDDD000, 0xDDDFFF, "BIO RAD LABORATORIES", "BIO-RAD-LABORATORIES" }, { 0x001BC5, 0x0C7000, 0x0C7FFF, "WIZZILAB SAS", "WIZZILAB-SAS" }, { 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, 0xD9E000, 0xD9EFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x001BC5, 0x0B3000, 0x0B3FFF, "FSM Solutions Limited", "FSM-SOLUTIONS" }, { 0x001BC5, 0x0C0000, 0x0C0FFF, "Digital Loggers, Inc.", "DIGITAL-LOGGERS" }, { 0x001BC5, 0x0BD000, 0x0BDFFF, "Bridge Diagnostics, Inc.", "BRIDGE-DIAGNOSTICS" }, { 0x001BC5, 0x0C1000, 0x0C1FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 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, 0x0AD000, 0x0ADFFF, "Tierra Japan Co.,Ltd", "TIERRA-JAPAN" }, { 0x001BC5, 0x0A9000, 0x0A9FFF, "Elektrometal SA", "ELEKTROMETAL" }, { 0x001BC5, 0x09E000, 0x09EFFF, "K+K Messtechnik GmbH", "K+K-MESSTECHNIK" }, { 0x001BC5, 0x094000, 0x094FFF, "reelyActive", "REELYACTIVE" }, { 0x001BC5, 0x097000, 0x097FFF, "Plexstar Inc.", "PLEXSTAR" }, { 0x001BC5, 0x08D000, 0x08DFFF, "EUREK SRL", "EUREK-SRL" }, { 0x001BC5, 0x09B000, 0x09BFFF, "YIK Corporation", "YIK" }, { 0x001BC5, 0x091000, 0x091FFF, "3green ApS", "3GREEN-APS" }, { 0x001BC5, 0x07C000, 0x07CFFF, "head", "HEAD" }, { 0x001BC5, 0x085000, 0x085FFF, "Oberon microsystems, Inc.", "OBERON-MICROSYSTEMS" }, { 0x001BC5, 0x086000, 0x086FFF, "CAST Group of Companies Inc.", "CAST-GROUP-OF-COMPANIES" }, { 0x001BC5, 0x082000, 0x082FFF, "TGS Geophysical Company (UK) Limited", "TGS-GEOPHYSICAL-COMPANY-UK" }, { 0x001BC5, 0x08A000, 0x08AFFF, "Topicon", "TOPICON" }, { 0x001BC5, 0x078000, 0x078FFF, "Donbass Soft Ltd and Co.KG", "DONBASS-SOFT-AND" }, { 0x001BC5, 0x072000, 0x072FFF, "Ohio Semitronics, Inc.", "OHIO-SEMITRONICS" }, { 0x001BC5, 0x06E000, 0x06EFFF, "Two Dimensional Instruments, LLC", "TWO-DIMENSIONAL-INSTRUMENTS-LLC" }, { 0x001BC5, 0x064000, 0x064FFF, "Enkora Oy Ltd", "ENKORA-OY" }, { 0x001BC5, 0x068000, 0x068FFF, "HCS KABLOLAMA SISTEMLERI SAN. ve TIC.A.S.", "HCS-KABLOLAMA-SISTEMLERI-SAN-VE-TIC-A-S" }, { 0x001BC5, 0x05E000, 0x05EFFF, "Ecomed-Complex", "ECOMED-COMPLEX" }, { 0x001BC5, 0x046000, 0x046FFF, "Trans-European Research and Education Networking Association (TERENA)", "TRANS-EUROPEAN-RESEARCH-AND-EDUCATION-NETWORKING-ASSOCIATION-TERENA" }, { 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, 0x01F000, 0x01FFFF, "Saturn Solutions Ltd", "SATURN-SOLUTIONS" }, { 0x001BC5, 0x023000, 0x023FFF, "MAGO di Della Mora Walter", "MAGO-DI-DELLA-MORA-WALTER" }, { 0x001BC5, 0x019000, 0x019FFF, "Dunlop Systems & Components", "DUNLOP-COMPONENTS" }, { 0x001BC5, 0x016000, 0x016FFF, "Energotechnica OOO NPP Ltd", "ENERGOTECHNICA-OOO-NPP" }, { 0x001BC5, 0x012000, 0x012FFF, "Tokyo Cosmos Electric, Inc.", "TOKYO-COSMOS-ELECTRIC" }, { 0x001BC5, 0x015000, 0x015FFF, "Private", "PRIVATE" }, { 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, 0x002000, 0x002FFF, "GORAMO - Janusz Gorecki", "GORAMO---JANUSZ-GORECKI" }, { 0x70B3D5, 0xD5A000, 0xD5AFFF, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x70B3D5, 0x88C000, 0x88CFFF, "Onion Corporation", "ONION" }, { 0x70B3D5, 0x11D000, 0x11DFFF, "Texka Labs", "TEXKA-LABS" }, { 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, 0x303000, 0x303FFF, "Fuchu Giken, Inc.", "FUCHU-GIKEN" }, { 0x70B3D5, 0x6F9000, 0x6F9FFF, "ENVItech s.r.o.", "ENVITECH-S-R-O" }, { 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, 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, 0x061000, 0x061FFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x70B3D5, 0x278000, 0x278FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0x383000, 0x383FFF, "LPA Excil Electronics", "LPA-EXCIL-ELECTRONICS" }, { 0x70B3D5, 0x9F6000, 0x9F6FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x70B3D5, 0xE0F000, 0xE0FFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x504000, 0x504FFF, "Xsight Systems Ltd.", "XSIGHT" }, { 0x70B3D5, 0x2CE000, 0x2CEFFF, "KDT", "KDT" }, { 0x70B3D5, 0xA12000, 0xA12FFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x70B3D5, 0xB34000, 0xB34FFF, "Medtronic", "MEDTRONIC" }, { 0x70B3D5, 0x645000, 0x645FFF, "Project Decibel, Inc.", "PROJECT-DECIBEL" }, { 0x70B3D5, 0x377000, 0x377FFF, "Monnit Corporation", "MONNIT" }, { 0x70B3D5, 0x100000, 0x100FFF, "Gupsy GmbH", "GUPSY" }, { 0x70B3D5, 0x339000, 0x339FFF, "Sierra Nevada Corporation", "SIERRA-NEVADA" }, { 0x70B3D5, 0x703000, 0x703FFF, "StromIdee GmbH", "STROMIDEE" }, { 0x70B3D5, 0x654000, 0x654FFF, "EMAC, Inc.", "EMAC" }, { 0x70B3D5, 0x2E0000, 0x2E0FFF, "Peter Huber", "PETER-HUBER" }, { 0x70B3D5, 0x088000, 0x088FFF, "OptiScan Biomedical Corp.", "OPTISCAN-BIOMEDICAL" }, { 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, 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, 0x226000, 0x226FFF, "Yaviar", "YAVIAR" }, { 0x70B3D5, 0xD57000, 0xD57FFF, "TRIUMPH BOARD a.s.", "TRIUMPH-BOARD-A-S" }, { 0x70B3D5, 0xE3B000, 0xE3BFFF, "ComNav Technology Ltd.", "COMNAV" }, { 0x70B3D5, 0xE6D000, 0xE6DFFF, "Domus S.C.", "DOMUS-S-C" }, { 0x70B3D5, 0xF00000, 0xF00FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xC89000, 0xC89FFF, "ARD", "ARD" }, { 0x70B3D5, 0xD7E000, 0xD7EFFF, "Triax A/S", "TRIAX-A/S" }, { 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, 0xC87000, 0xC87FFF, "Siemens AG", "SIEMENS" }, { 0x70B3D5, 0x5FF000, 0x5FFFFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x70B3D5, 0x7AE000, 0x7AEFFF, "Exi Flow Measurement Ltd", "EXI-FLOW-MEASUREMENT" }, { 0x70B3D5, 0x4DF000, 0x4DFFFF, "Nidec Avtron Automation Corp", "NIDEC-AVTRON-AUTOMATION" }, { 0x70B3D5, 0x8F3000, 0x8F3FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0xAD5000, 0xAD5FFF, "Birdland Audio", "BIRDLAND-AUDIO" }, { 0x70B3D5, 0x208000, 0x208FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x70B3D5, 0x870000, 0x870FFF, "bentrup Industriesteuerungen", "BENTRUP-INDUSTRIESTEUERUNGEN" }, { 0x70B3D5, 0x4D8000, 0x4D8FFF, "Versilis Inc.", "VERSILIS" }, { 0x70B3D5, 0xF93000, 0xF93FFF, "Hella Gutmann Solutions GmbH", "HELLA-GUTMANN-SOLUTIONS" }, { 0x70B3D5, 0xF01000, 0xF01FFF, "Software Systems Plus", "SOFTWARE-PLUS" }, { 0x70B3D5, 0x4AD000, 0x4ADFFF, "GACI", "GACI" }, { 0x70B3D5, 0x134000, 0x134FFF, "Conjing Networks Inc.", "CONJING-NETWORKS" }, { 0x70B3D5, 0xA50000, 0xA50FFF, "LECIP CORPORATION", "LECIP" }, { 0x70B3D5, 0x361000, 0x361FFF, "Parent Power", "PARENT-POWER" }, { 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, 0x932000, 0x932FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x70B3D5, 0xDF9000, 0xDF9FFF, "Korea Plant Maintenance", "KOREA-PLANT-MAINTENANCE" }, { 0x70B3D5, 0xBAE000, 0xBAEFFF, "WARECUBE,INC", "WARECUBE" }, { 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, 0x119000, 0x119FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xA26000, 0xA26FFF, "Hear Gear, Inc.", "HEAR-GEAR" }, { 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, 0xE7C000, 0xE7CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xEB1000, 0xEB1FFF, "CP contech electronic GmbH", "CP-CONTECH" }, { 0x70B3D5, 0x2CF000, 0x2CFFFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 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, 0xA4B000, 0xA4BFFF, "McKay Brothers LLC", "MCKAY-BROTHERS-LLC" }, { 0x70B3D5, 0xD46000, 0xD46FFF, "Contineo s.r.o.", "CONTINEO-S-R-O" }, { 0x70B3D5, 0x665000, 0x665FFF, "CertUsus GmbH", "CERTUSUS" }, { 0x70B3D5, 0xA57000, 0xA57FFF, "PCSC", "PCSC" }, { 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, 0x5E4000, 0x5E4FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x70B3D5, 0xDF0000, 0xDF0FFF, "astozi consulting Tomasz Zieba", "ASTOZI-CONSULTING-TOMASZ-ZIEBA" }, { 0x70B3D5, 0x220000, 0x220FFF, "Private", "PRIVATE" }, { 0x70B3D5, 0xCF3000, 0xCF3FFF, "Mesh Motion Inc", "MESH-MOTION" }, { 0x70B3D5, 0x39C000, 0x39CFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x70B3D5, 0xAFA000, 0xAFAFFF, "Power Security Systems Ltd.", "POWER-SECURITY" }, { 0x70B3D5, 0x3D9000, 0x3D9FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x77C000, 0x77CFFF, "HUSTY M.Styczen J.Hupert Sp.J.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x70B3D5, 0xCDE000, 0xCDEFFF, "Multipure International", "MULTIPURE" }, { 0x70B3D5, 0x8E1000, 0x8E1FFF, "WoKa-Elektronik GmbH", "WOKA-ELEKTRONIK" }, { 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, 0xD0C000, 0xD0CFFF, "Connor Winfield LTD", "CONNOR-WINFIELD" }, { 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, 0xF2B000, 0xF2BFFF, "SENSYS GmbH", "SENSYS" }, { 0x70B3D5, 0x76E000, 0x76EFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x70B3D5, 0xB82000, 0xB82FFF, "Lookout Portable Security", "LOOKOUT-PORTABLE-SECURITY" }, { 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, 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, 0x35F000, 0x35FFFF, "Aplex Technology Inc.", "APLEX" }, { 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, 0xF2A000, 0xF2AFFF, "WIBOND Informationssysteme GmbH", "WIBOND-INFORMATIONSSYSTEME" }, { 0x70B3D5, 0xC24000, 0xC24FFF, "Elbit Systems of America", "ELBIT-OF-AMERICA" }, { 0x70B3D5, 0x2A5000, 0x2A5FFF, "Taitotekniikka", "TAITOTEKNIIKKA" }, { 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, 0xE4C000, 0xE4CFFF, "IAI-Israel Aerospace Industries MBT", "IAI-ISRAEL-AEROSPACE-INDUSTRIES-MBT" }, { 0x70B3D5, 0xEF3000, 0xEF3FFF, "octoScope", "OCTOSCOPE" }, { 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, 0xAC8000, 0xAC8FFF, "Heartland.Data Inc.", "HEARTLAND-DATA" }, { 0x001BC5, 0x0C5000, 0x0C5FFF, "Gill Instruments Ltd", "GILL-INSTRUMENTS" }, { 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" }, { 0x70B3D5, 0x9F4000, 0x9F4FFF, "Tband srl", "TBAND-SRL" }, { 0x70B3D5, 0x994000, 0x994FFF, "KeFF Networks", "KEFF-NETWORKS" }, { 0x70B3D5, 0xB3D000, 0xB3DFFF, "Inras GmbH", "INRAS" }, { 0x70B3D5, 0xFFF000, 0xFFFFFF, "Private", "PRIVATE" }, { 0x001BC5, 0x0B1000, 0x0B1FFF, "Roslen Eco-Networking Products", "ROSLEN-ECO-NETWORKING-PRODUCTS" }, { 0x001BC5, 0x0BB000, 0x0BBFFF, "Triax A/S", "TRIAX-A/S" }, { 0x001BC5, 0x09C000, 0x09CFFF, "S.I.C.E.S. srl", "S-I-C-E-S-SRL" }, { 0x001BC5, 0x0A7000, 0x0A7FFF, "L.G.L. Electronics S.p.a.", "L-G-L-ELECTRONICS-S-P-A" }, { 0x001BC5, 0x092000, 0x092FFF, "Arnouse Digital Devices, Corp.", "ARNOUSE-DIGITAL-DEVICES" }, { 0x001BC5, 0x080000, 0x080FFF, "LUMINO GmbH", "LUMINO" }, { 0x001BC5, 0x088000, 0x088FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x076000, 0x076FFF, "PLAiR Media, Inc", "PLAIR-MEDIA" }, { 0x001BC5, 0x062000, 0x062FFF, "Sulaon Oy", "SULAON-OY" }, { 0x001BC5, 0x06C000, 0x06CFFF, "Luxcon System Limited", "LUXCON-SYSTEM" }, { 0x001BC5, 0x058000, 0x058FFF, "optiMEAS GmbH", "OPTIMEAS" }, { 0x001BC5, 0x052000, 0x052FFF, "Engineering Center ENERGOSERVICE", "ENGINEERING-CENTER-ENERGOSERVICE" }, { 0x001BC5, 0x05C000, 0x05CFFF, "Suretrak Global Pty Ltd", "SURETRAK-GLOBAL-PTY" }, { 0x001BC5, 0x044000, 0x044FFF, "ZAO "RADIUS Avtomatika"", "ZAO-QUOT-RADIUS-AVTOMATIKA-QUOT" }, { 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, 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, 0x01A000, 0x01AFFF, "ABA ELECTRONICS TECHNOLOGY CO.,LTD", "ABA-ELECTRONICS" }, { 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" }, { 0x70B3D5, 0xD5B000, 0xD5BFFF, "WyreStorm Technologies Ltd", "WYRESTORM-TECHNOLOGIES" }, { 0x70B3D5, 0x439000, 0x439FFF, "TriLED", "TRILED" }, { 0x70B3D5, 0xE48000, 0xE48FFF, "TDI. Co., LTD", "TDI" }, { 0x70B3D5, 0x18D000, 0x18DFFF, "Foro Tel", "FORO-TEL" }, { 0x70B3D5, 0x6BE000, 0x6BEFFF, "VANTAGE INTEGRATED SECURITY SOLUTIONS PVT LTD", "VANTAGE-INTEGRATED-SECURITY-SOLUTIONS-PVT" }, { 0x70B3D5, 0x04D000, 0x04DFFF, "Sicon srl", "SICON-SRL" }, { 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, 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, 0x91F000, 0x91FFFF, "JSC InformInvestGroup", "JSC-INFORMINVESTGROUP" }, { 0x70B3D5, 0xC26000, 0xC26FFF, "Triple Play Communications", "TRIPLE-PLAY-COMMUNICATION" }, { 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, 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, 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, 0x1AD000, 0x1ADFFF, "Techworld Industries Ltd", "TECHWORLD-INDUSTRIES" }, { 0x70B3D5, 0x866000, 0x866FFF, "MEPS Realtime", "MEPS-REALTIME" }, { 0x70B3D5, 0x9F3000, 0x9F3FFF, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 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, 0x903000, 0x903FFF, "Cymtec Ltd", "CYMTEC" }, { 0x70B3D5, 0x1A0000, 0x1A0FFF, "UFATECH LTD", "UFATECH" }, { 0x70B3D5, 0x07E000, 0x07EFFF, "ENTEC Electric & Electronic CO., LTD", "ENTEC-ELECTRIC" }, { 0x70B3D5, 0x664000, 0x664FFF, "Sankyo Intec co.,ltd", "SANKYO-INTEC" }, { 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, 0xA01000, 0xA01FFF, "FeldTech GmbH", "FELDTECH" }, { 0x70B3D5, 0x7C1000, 0x7C1FFF, "Data Sciences International", "DATA-SCIENCES" }, { 0x70B3D5, 0xEA4000, 0xEA4FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 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, 0x6E8000, 0x6E8FFF, "BluWireless Technology Ltd", "BLUWIRELESS" }, { 0x70B3D5, 0x6B3000, 0x6B3FFF, "DuraComm Corporation", "DURACOMM" }, { 0x70B3D5, 0xF36000, 0xF36FFF, "dinosys", "DINOSYS" }, { 0x70B3D5, 0xC3C000, 0xC3CFFF, "PEEK TRAFFIC", "PEEK-TRAFFIC" }, { 0x70B3D5, 0xA92000, 0xA92FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x70B3D5, 0x505000, 0x505FFF, "MC2-Technologies", "MC2-TECHNOLOGIES" }, { 0x70B3D5, 0xF2D000, 0xF2DFFF, "ID Lock AS", "ID-LOCK-AS" }, { 0x70B3D5, 0xAC9000, 0xAC9FFF, "Trinity Solutions LLC", "TRINITY-SOLUTIONS-LLC" }, { 0x70B3D5, 0x679000, 0x679FFF, "EMAC, Inc.", "EMAC" }, { 0x70B3D5, 0x17F000, 0x17FFFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0xFE8000, 0xFE8FFF, "PCME Ltd.", "PCME" }, { 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, 0x82E000, 0x82EFFF, "PlayAlive A/S", "PLAYALIVE-A/S" }, { 0x70B3D5, 0x00E000, 0x00EFFF, "Magosys Systems LTD", "MAGOSYS" }, { 0x70B3D5, 0xD87000, 0xD87FFF, "Zigen Corp", "ZIGEN" }, { 0x70B3D5, 0x589000, 0x589FFF, "Cityntel OU", "CITYNTEL-OU" }, { 0x70B3D5, 0x52B000, 0x52BFFF, "GE Aviation Cheltenham", "GE-AVIATION-CHELTENHAM" }, { 0x70B3D5, 0x4BA000, 0x4BAFFF, "Sinftech LLC", "SINFTECH-LLC" }, { 0x70B3D5, 0x3FF000, 0x3FFFFF, "Hydra Controls", "HYDRA-CONTROLS" }, { 0x70B3D5, 0x470000, 0x470FFF, "KITRON UAB", "KITRON-UAB" }, { 0x70B3D5, 0xA1C000, 0xA1CFFF, "MECA SYSTEM", "MECA-SYSTEM" }, { 0x70B3D5, 0xAD6000, 0xAD6FFF, "Lemonade Lab Inc", "LEMONADE-LAB" }, { 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, 0x7B8000, 0x7B8FFF, "SerEnergy A/S", "SERENERGY-A/S" }, { 0x70B3D5, 0xD7F000, 0xD7FFFF, "ConectaIP Tecnologia S.L.", "CONECTAIP-TECNOLOGIA-S-L" }, { 0x70B3D5, 0x3D2000, 0x3D2FFF, "Imagine Inc.", "IMAGINE" }, { 0x70B3D5, 0x36C000, 0x36CFFF, "Sicon srl", "SICON-SRL" }, { 0x70B3D5, 0x7A7000, 0x7A7FFF, "Symbicon Ltd", "SYMBICON" }, { 0x70B3D5, 0xD9B000, 0xD9BFFF, "Russian Telecom Equipment Company", "RUSSIAN-TELECOM-EQUIPMENT-COMPANY" }, { 0x70B3D5, 0xE4E000, 0xE4EFFF, "Midfin Systems", "MIDFIN" }, { 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, 0x48C000, 0x48CFFF, "Integrated Systems Engineering, Inc.", "INTEGRATED-ENGINEERING" }, { 0x70B3D5, 0x421000, 0x421FFF, "North Star Bestech Co.,", "NORTH-STAR-BESTECH" }, { 0x70B3D5, 0xC55000, 0xC55FFF, "Intelligent Energy Ltd", "INTELLIGENT-ENERGY" }, { 0x70B3D5, 0x600000, 0x600FFF, "Stellwerk GmbH", "STELLWERK" }, { 0x70B3D5, 0xED5000, 0xED5FFF, "hangzhou battle link technology Co.,Ltd", "HANGZHOU-BATTLE-LINK" }, { 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, 0x820000, 0x820FFF, "Becker Nachrichtentechnik GmbH", "BECKER-NACHRICHTENTECHNIK" }, { 0x70B3D5, 0x732000, 0x732FFF, "TOFWERK AG", "TOFWERK" }, { 0x70B3D5, 0xDAD000, 0xDADFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 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, 0x243000, 0x243FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 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, 0xE95000, 0xE95FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0xE28000, 0xE28FFF, "iotec GmbH", "IOTEC" }, { 0x70B3D5, 0x6F3000, 0x6F3FFF, "iungo", "IUNGO" }, { 0x70B3D5, 0x182000, 0x182FFF, "Kitron UAB", "KITRON-UAB" }, { 0x70B3D5, 0xCE7000, 0xCE7FFF, "June Automation Singapore Pte. Ltd.", "JUNE-AUTOMATION-SINGAPORE-PTE" }, { 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, 0x07D000, 0x07DFFF, "PANORAMIC POWER", "PANORAMIC-POWER" }, { 0x70B3D5, 0xB9B000, 0xB9BFFF, "Elektronik Art", "ELEKTRONIK-ART" }, { 0x70B3D5, 0x327000, 0x327FFF, "Seneco A/S", "SENECO-A/S" }, { 0x70B3D5, 0x610000, 0x610FFF, "POLVISION", "POLVISION" }, { 0x70B3D5, 0xECE000, 0xECEFFF, "COMM-connect A/S", "COMM-CONNECT-A/S" }, { 0x70B3D5, 0x08E000, 0x08EFFF, "Beijing CONvision Technology Co.,Ltd", "BEIJING-CONVISION" }, { 0x70B3D5, 0x84A000, 0x84AFFF, "MOG Laboratories Pty Ltd", "MOG-LABORATORIES-PTY" }, { 0x70B3D5, 0x9F5000, 0x9F5FFF, "Vickers Electronics Ltd", "VICKERS-ELECTRONICS" }, { 0x70B3D5, 0x65B000, 0x65BFFF, "Roush", "ROUSH" }, { 0x70B3D5, 0x0DC000, 0x0DCFFF, "Talleres de Escoriaza", "TALLERES-DE-ESCORIAZA" }, { 0x70B3D5, 0xAF3000, 0xAF3FFF, "New Japan Radio Co., Ltd", "NEW-JAPAN-RADIO" }, { 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, 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, 0xEB2000, 0xEB2FFF, "Shooter Detection Systems", "SHOOTER-DETECTION" }, { 0x70B3D5, 0x323000, 0x323FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x70B3D5, 0x250000, 0x250FFF, "Datum Electronics Limited", "DATUM-ELECTRONICS" }, { 0x70B3D5, 0x010000, 0x010FFF, "Hanwa Electronic Ind.Co.,Ltd.", "HANWA-IND" }, { 0x70B3D5, 0x86D000, 0x86DFFF, "Census Digital Incorporated", "CENSUS-DIGITAL-INCORPORATED" }, { 0x70B3D5, 0xB39000, 0xB39FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0x60B000, 0x60BFFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x70B3D5, 0x204000, 0x204FFF, "TWC", "TWC" }, { 0x70B3D5, 0x83B000, 0x83BFFF, "Telefonix Incorporated", "TELEFONIX-INCORPORATED" }, { 0x70B3D5, 0x029000, 0x029FFF, "Marimo electronics Co.,Ltd.", "MARIMO-ELECTRONICS" }, { 0x70B3D5, 0x3EF000, 0x3EFFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x70B3D5, 0x5F0000, 0x5F0FFF, "managee GmbH & Co KG", "MANAGEE" }, { 0x70B3D5, 0x956000, 0x956FFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 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, 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, 0xA0B000, 0xA0BFFF, "ambiHome GmbH", "AMBIHOME" }, { 0x70B3D5, 0x8B1000, 0x8B1FFF, "M-Tech Innovations Ltd", "M-TECH-INNOVATIONS" }, { 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, 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" }, { 0x70B3D5, 0xFD1000, 0xFD1FFF, "RedRat Ltd", "REDRAT" }, { 0x70B3D5, 0xC8D000, 0xC8DFFF, "KST technology", "KST" }, { 0x70B3D5, 0x044000, 0x044FFF, "Don Electronics Ltd", "DON-ELECTRONICS" }, { 0x001BC5, 0x0BA000, 0x0BAFFF, "NT MICROSYSTEMS", "NT-MICROSYSTEMS" }, { 0x001BC5, 0x0B0000, 0x0B0FFF, "J-D.COM", "J-D-COM" }, { 0x001BC5, 0x0C4000, 0x0C4FFF, "ELDES", "ELDES" }, { 0x001BC5, 0x0A6000, 0x0A6FFF, "Balter Security GmbH", "BALTER-SECURITY" }, { 0x001BC5, 0x07F000, 0x07FFFF, "Hitechlab Inc", "HITECHLAB" }, { 0x001BC5, 0x07E000, 0x07EFFF, "Bio Molecular System Pty Ltd", "BIO-MOLECULAR-SYSTEM-PTY" }, { 0x001BC5, 0x075000, 0x075FFF, "Kitron GmbH", "KITRON" }, { 0x001BC5, 0x074000, 0x074FFF, "Dynasthetics", "DYNASTHETICS" }, { 0x001BC5, 0x06A000, 0x06AFFF, "IST GmbH", "IST" }, { 0x001BC5, 0x06B000, 0x06BFFF, "Verified Energy, LLC.", "VERIFIED-ENERGY-LLC" }, { 0x001BC5, 0x057000, 0x057FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 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, 0x056000, 0x056FFF, "ThinKom Solutions, Inc", "THINKOM-SOLUTIONS" }, { 0x001BC5, 0x043000, 0x043FFF, "Coincident, Inc.", "COINCIDENT" }, { 0x001BC5, 0x042000, 0x042FFF, "ChamSys Limited", "CHAMSYS" }, { 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, 0x2F9000, 0x2F9FFF, "CONSOSPY", "CONSOSPY" }, { 0x70B3D5, 0xF57000, 0xF57FFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x033000, 0x033FFF, "Sailmon BV", "SAILMON" }, { 0x70B3D5, 0x01F000, 0x01FFFF, "Microfan", "MICROFAN" }, { 0x70B3D5, 0x407000, 0x407FFF, "IDOSENS", "IDOSENS" }, { 0x70B3D5, 0xC01000, 0xC01FFF, "SmartGuard LLC", "SMARTGUARD-LLC" }, { 0x70B3D5, 0x7C8000, 0x7C8FFF, "CRDE", "CRDE" }, { 0x70B3D5, 0x5EE000, 0x5EEFFF, "Mikrotron Mikrocomputer, Digital- und Analogtechnik GmbH", "MIKROTRON-MIKROCOMPUTER-DIGITAL--UND-ANALOGTECHNIK" }, { 0x70B3D5, 0xF11000, 0xF11FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x70B3D5, 0x7B9000, 0x7B9FFF, "QIAGEN Instruments AG", "QIAGEN-INSTRUMENTS" }, { 0x70B3D5, 0xB3E000, 0xB3EFFF, "Paradigm Communication Systems Ltd", "PARADIGM-COMMUNICATION" }, { 0x70B3D5, 0x161000, 0x161FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x70B3D5, 0x554000, 0x554FFF, "Teletypes Manufacturing Plant", "TELETYPES-MANUFACTURING-PLANT" }, { 0x70B3D5, 0xE0D000, 0xE0DFFF, "Sigma Connectivity AB", "SIGMA-CONNECTIVITY-AB" }, { 0x70B3D5, 0xA56000, 0xA56FFF, "DORLET SAU", "DORLET-SAU" }, { 0x70B3D5, 0xA93000, 0xA93FFF, "Mes Communication Co., Ltd", "MES-COMMUNICATION" }, { 0x70B3D5, 0x0FC000, 0x0FCFFF, "vitalcare", "VITALCARE" }, { 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, 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, 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, 0xD42000, 0xD42FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x70B3D5, 0x32F000, 0x32FFFF, "Movidius SRL", "MOVIDIUS-SRL" }, { 0x70B3D5, 0x9C9000, 0x9C9FFF, "PK Sound", "PK-SOUND" }, { 0x70B3D5, 0xADA000, 0xADAFFF, "Private", "PRIVATE" }, { 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, 0x3F9000, 0x3F9FFF, "Herrick Tech Labs", "HERRICK-TECH-LABS" }, { 0x70B3D5, 0x4B1000, 0x4B1FFF, "LACE LLC.", "LACE-LLC" }, { 0x70B3D5, 0x80D000, 0x80DFFF, "Data Physics Corporation", "DATA-PHYSICS" }, { 0x70B3D5, 0x336000, 0x336FFF, "Synaccess Networks Inc.", "SYNACCESS-NETWORKS" }, { 0x70B3D5, 0xA51000, 0xA51FFF, "RF Code", "RF-CODE" }, { 0x70B3D5, 0x231000, 0x231FFF, "DELTA TAU DATA SYSTEMS, INC.", "DELTA-TAU-DATA" }, { 0x70B3D5, 0x823000, 0x823FFF, "SP Controls", "SP-CONTROLS" }, { 0x70B3D5, 0xCA8000, 0xCA8FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 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, 0x65C000, 0x65CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0x7AF000, 0x7AFFFF, "Hessware GmbH", "HESSWARE" }, { 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, 0x7AD000, 0x7ADFFF, "Insitu Inc", "INSITU" }, { 0x70B3D5, 0xE21000, 0xE21FFF, "LLVISION TECHNOLOGY CO.,LTD", "LLVISION" }, { 0x70B3D5, 0x583000, 0x583FFF, "Ducommun Inc.", "DUCOMMUN" }, { 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, 0x2D6000, 0x2D6FFF, "Kvazar LLC", "KVAZAR-LLC" }, { 0x70B3D5, 0x838000, 0x838FFF, "Tofino", "TOFINO" }, { 0x70B3D5, 0x1F3000, 0x1F3FFF, "Smart Energy Code Company Limited", "SMART-ENERGY-CODE-COMPANY" }, { 0x70B3D5, 0x6BB000, 0x6BBFFF, "LUCEO", "LUCEO" }, { 0x70B3D5, 0xEFB000, 0xEFBFFF, "PXM sp.k.", "PXM-SP-K" }, { 0x70B3D5, 0xA81000, 0xA81FFF, "Sienda New Media Technologies GmbH", "SIENDA-NEW-MEDIA-TECHNOLOGIES" }, { 0x70B3D5, 0x729000, 0x729FFF, "EMAC, Inc.", "EMAC" }, { 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, 0x849000, 0x849FFF, "RF-Tuote Oy", "RF-TUOTE-OY" }, { 0x70B3D5, 0x9D3000, 0x9D3FFF, "Communication Technology Ltd.", "COMMUNICATION" }, { 0x70B3D5, 0x46B000, 0x46BFFF, "Airborne Engineering Limited", "AIRBORNE-ENGINEERING" }, { 0x70B3D5, 0xF10000, 0xF10FFF, "Riegl Laser Measurement Systems GmbH", "RIEGL-LASER-MEASUREMENT" }, { 0x70B3D5, 0x4AA000, 0x4AAFFF, "Twoway Communications, Inc.", "TWOWAY-COMMUNICATION" }, { 0x70B3D5, 0xA1B000, 0xA1BFFF, "Potter Electric Signal Co.", "POTTER-ELECTRIC-SIGNAL" }, { 0x70B3D5, 0xEAC000, 0xEACFFF, "Kentech Instruments Limited", "KENTECH-INSTRUMENTS" }, { 0x70B3D5, 0x8AD000, 0x8ADFFF, "Global Communications Technology LLC", "GLOBAL-COMMUNICATION-LLC" }, { 0x70B3D5, 0x5A2000, 0x5A2FFF, "Wallner Automation GmbH", "WALLNER-AUTOMATION" }, { 0x70B3D5, 0x418000, 0x418FFF, "DEV Systemtechnik GmbH& Co KG", "DEV-SYSTEMTECHNIK" }, { 0x70B3D5, 0xC5A000, 0xC5AFFF, "Commsignia Ltd.", "COMMSIGNIA" }, { 0x70B3D5, 0x9DB000, 0x9DBFFF, "CAS Medical Systems, Inc", "CAS-MEDICAL" }, { 0x70B3D5, 0xEC6000, 0xEC6FFF, "ESII", "ESII" }, { 0x70B3D5, 0xC97000, 0xC97FFF, "CSINFOTEL", "CSINFOTEL" }, { 0x70B3D5, 0xD79000, 0xD79FFF, "GOMA ELETTRONICA SpA", "GOMA-ELETTRONICA-SPA" }, { 0x70B3D5, 0x296000, 0x296FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 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, 0x18B000, 0x18BFFF, "Aplex Technology Inc.", "APLEX" }, { 0x70B3D5, 0xD3B000, 0xD3BFFF, "NimbeLink Corp", "NIMBELINK" }, { 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, 0x205000, 0x205FFF, "Esource Srl", "ESOURCE-SRL" }, { 0x70B3D5, 0x112000, 0x112FFF, "DiTEST Fahrzeugdiagnose GmbH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x70B3D5, 0xBEC000, 0xBECFFF, "Tokyo Communication Equipment MFG Co.,ltd.", "TOKYO-COMMUNICATION-EQUIPMENT-MFG" }, { 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, 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, 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, 0x097000, 0x097FFF, "Avant Technologies", "AVANT-TECHNOLOGIES" }, { 0x70B3D5, 0x05F000, 0x05FFFF, "UNISOR MULTISYSTEMS LTD", "UNISOR-MULTISYSTEMS" }, { 0x70B3D5, 0x3DA000, 0x3DAFFF, "Loop Labs, Inc.", "LOOP-LABS" }, { 0x70B3D5, 0x6D6000, 0x6D6FFF, "KMtronic Ltd.", "KMTRONIC" }, { 0x70B3D5, 0x57C000, 0x57CFFF, "Automata GmbH & Co. KG", "AUTOMATA" }, { 0x70B3D5, 0xDA1000, 0xDA1FFF, "Qprel srl", "QPREL-SRL" }, { 0x70B3D5, 0x48D000, 0x48DFFF, "OMEGA BILANCE SRL SOCIETA' UNIPERSONALE", "OMEGA-BILANCE-SRL-SOCIETA-UNIPERSONALE" }, { 0x70B3D5, 0x362000, 0x362FFF, "Asiga", "ASIGA" }, { 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, 0xAA0000, 0xAA0FFF, "Simple Works, Inc.", "SIMPLE-WORKS" }, { 0x70B3D5, 0x058000, 0x058FFF, "Telink Semiconductor CO, Limtied, Taiwan", "TELINK-SEMICONDUCTOR-LIMTIED-TAIWAN" }, { 0x70B3D5, 0x751000, 0x751FFF, "GNF", "GNF" }, { 0x70B3D5, 0x587000, 0x587FFF, "INCAA Computers", "INCAA-COMPUTERS" }, { 0x70B3D5, 0xE27000, 0xE27FFF, "Woodside Electronics", "WOODSIDE-ELECTRONICS" }, { 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, 0xE99000, 0xE99FFF, "Advitronics telecom bv", "ADVITRONICS-TELECOM" }, { 0x70B3D5, 0xB33000, 0xB33FFF, "Aplex Technology Inc.", "APLEX" }, { 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, 0x8AB000, 0x8ABFFF, "EMAC, Inc.", "EMAC" }, { 0x70B3D5, 0x305000, 0x305FFF, "CAITRON Industrial Solutions GmbH", "CAITRON-INDUSTRIAL-SOLUTIONS" }, { 0x70B3D5, 0x634000, 0x634FFF, "idaqs Co.,Ltd.", "IDAQS" }, { 0x70B3D5, 0x0D6000, 0x0D6FFF, "Tattile srl", "TATTILE-SRL" }, { 0x70B3D5, 0xE4A000, 0xE4AFFF, "ICP NewTech Ltd", "ICP-NEWTECH" }, { 0x70B3D5, 0xEFA000, 0xEFAFFF, "NextEra Energy Resources, LLC", "NEXTERA-ENERGY-RESOURCES-LLC" }, { 0x70B3D5, 0x346000, 0x346FFF, "Ultamation Limited", "ULTAMATION" }, { 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, 0x184000, 0x184FFF, "XV360 Optical Information Systems Ltd.", "XV360-OPTICAL-INFORMATION" }, { 0x70B3D5, 0x6D3000, 0x6D3FFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x70B3D5, 0x908000, 0x908FFF, "Accusonic", "ACCUSONIC" }, { 0x70B3D5, 0xCE9000, 0xCE9FFF, "KINEMETRICS", "KINEMETRICS" }, { 0x70B3D5, 0xB8A000, 0xB8AFFF, "Nexus Tech. VN", "NEXUS-TECH-VN" }, { 0x70B3D5, 0x3A8000, 0x3A8FFF, "JamHub Corp.", "JAMHUB" }, { 0x70B3D5, 0x052000, 0x052FFF, "Sudo Premium Engineering", "SUDO-PREMIUM-ENGINEERING" }, { 0x70B3D5, 0xC27000, 0xC27FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x70B3D5, 0xF34000, 0xF34FFF, "MacGray Services", "MACGRAY-SERVICES" }, { 0x70B3D5, 0x183000, 0x183FFF, "Evco S.p.a.", "EVCO-S-P-A" }, { 0x70B3D5, 0x3C2000, 0x3C2FFF, "Cellular Specialties, Inc.", "CELLULAR-SPECIALTIES" }, { 0x70B3D5, 0xEF9000, 0xEF9FFF, "Critical Link", "CRITICAL-LINK" }, { 0x70B3D5, 0x5A8000, 0x5A8FFF, "Farmobile", "FARMOBILE" }, { 0x70B3D5, 0xC2C000, 0xC2CFFF, "Dromont S.p.A.", "DROMONT-S-P-A" }, { 0x001BC5, 0x0B2000, 0x0B2FFF, "SKODA electric a.s.", "SKODA-ELECTRIC-A-S" }, { 0x001BC5, 0x0B6000, 0x0B6FFF, "Veilux inc.", "VEILUX" }, { 0x001BC5, 0x0BC000, 0x0BCFFF, "kuwatec, Inc.", "KUWATEC" }, { 0x001BC5, 0x0C6000, 0x0C6FFF, "Connode", "CONNODE" }, { 0x001BC5, 0x09D000, 0x09DFFF, "Navitar Inc", "NAVITAR" }, { 0x001BC5, 0x0AC000, 0x0ACFFF, "AVnu Alliance", "AVNU-ALLIANCE" }, { 0x001BC5, 0x0A2000, 0x0A2FFF, "Hettich Benelux", "HETTICH-BENELUX" }, { 0x001BC5, 0x0A8000, 0x0A8FFF, "Link Precision", "LINK-PRECISION" }, { 0x001BC5, 0x093000, 0x093FFF, "Ambient Devices, Inc.", "AMBIENT-DEVICES" }, { 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, 0x081000, 0x081FFF, "WonATech Co., Ltd.", "WONATECH" }, { 0x001BC5, 0x084000, 0x084FFF, "Applied Innovations Research LLC", "APPLIED-INNOVATIONS-RESEARCH-LLC" }, { 0x001BC5, 0x077000, 0x077FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 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, 0x070000, 0x070FFF, "Siemens Industries, Inc, Retail & Commercial Systems", "SIEMENS-INDUSTRIES-RETAIL-COMMERCIAL" }, { 0x001BC5, 0x063000, 0x063FFF, "Check-It Solutions Inc", "CHECK-IT-SOLUTIONS" }, { 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, 0x05D000, 0x05DFFF, "JSC Prominform", "JSC-PROMINFORM" }, { 0x001BC5, 0x059000, 0x059FFF, "INPIXAL", "INPIXAL" }, { 0x001BC5, 0x045000, 0x045FFF, "Marvel Digital International Limited", "MARVEL-DIGITAL" }, { 0x001BC5, 0x04F000, 0x04FFFF, "Orbital Systems, Ltd.", "ORBITAL" }, { 0x001BC5, 0x053000, 0x053FFF, "Metrycom Communications Ltd", "METRYCOM-COMMUNICATION" }, { 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, 0x7EB000, 0x7EBFFF, "Xerox International Partners", "XEROX-PARTNERS" }, { 0x70B3D5, 0x83C000, 0x83CFFF, "Sinoembed", "SINOEMBED" }, }; ipv6calc-0.99.1/databases/lib/0000775000175100017510000000000012572537445015060 5ustar peterpeteripv6calc-0.99.1/databases/lib/libipv6calc_db_wrapper_GeoIP.c0000664000175100017510000022165512535750365022662 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_GeoIP.c * Version : $Id: libipv6calc_db_wrapper_GeoIP.c,v 1.76 2015/06/10 05:53:57 ds6peter Exp $ * Copyright : 2013-2015 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) 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 i, count = 0; 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) { 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 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 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; }; 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 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 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-0.99.1/databases/lib/libipv6calc_db_wrapper_IP2Location.c0000664000175100017510000021637112547555712024003 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_IP2Location.c * Version : $Id: libipv6calc_db_wrapper_IP2Location.c,v 1.38 2015/07/09 20:38:34 ds6peter Exp $ * Copyright : 2013-2015 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; #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 { 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 int type); static int libipv6calc_db_wrapper_IP2Location_db_compatible(const 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) { int db; IP2Location *loc; char tempstring[NI_MAXHOST]; char *info; 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); }; if (ip2location_ipv6_compat == 0) { if (dl_status_IP2Location_api_version_string == IPV6CALC_DL_STATUS_OK) { // take use of new (>= 7.0.1) function 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 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 #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 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(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 < sizeof(libipv6calc_db_wrapper_IP2Location_db_file_desc) / sizeof(libipv6calc_db_wrapper_IP2Location_db_file_desc[0]); 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(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(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; 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; 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 library version * * in : (nothing) * out: library version, currently 4, 6, 7 */ int libipv6calc_db_wrapper_IP2Location_library_version_major(void) { int result = 7; #ifdef SUPPORT_IP2LOCATION_DYN if (ip2location_all_compat != 0) { result = 4; } else if (ip2location_ipv6_compat != 0) { result = 6; }; #else // SUPPORT_IP2LOCATION_DYN #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 // 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 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-0.99.1/databases/lib/libipv6calc_db_wrapper_IP2Location.h0000664000175100017510000010177512537360271024002 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_IP2Location.h * Version : $Id: libipv6calc_db_wrapper_IP2Location.h,v 1.12 2015/06/14 20:14:49 ds6peter Exp $ * Copyright : 2013-2015 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(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(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(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-0.99.1/databases/lib/libipv6calc_db_wrapper_External.c0000664000175100017510000010157112520504720023455 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_External.c * Version : $Id: libipv6calc_db_wrapper_External.c,v 1.10 2015/04/30 20:00:16 ds6peter Exp $ * Copyright : 2013-2015 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 2 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(int type); static char *libipv6calc_db_wrapper_External_database_info(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; 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; }; 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(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(int type) { int entry = -1, 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(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 and ptr is not cached (only IPv4) * db_recno_max_ptr (set if not NULL) */ DB *libipv6calc_db_wrapper_External_open_type(const 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 subdb = (data_iana_selector == 0) ? 0 : 1; char *filename; int entry = -1, i; int ret; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_External, "Called: %s type=%d (%s)", wrapper_external_info, type, (info_selector == 0) ? ((data_iana_selector == 0) ? "data" : "data-iana") : "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) { 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, (info_selector == 0) ? ((data_iana_selector == 0) ? "data" : "data-iana") : "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][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 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 = NULL; 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 = NULL; 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 ) { goto END_libipv6calc_db_wrapper_match; }; if (ipaddrp->proto != IPV6CALC_PROTO_IPV4) { goto END_libipv6calc_db_wrapper; }; // data-iana (fallback for IPv4 only) 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 = NULL; 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); }; #endif //SUPPORT_EXTERNAL #endif //SUPPORT_EXTERNAL ipv6calc-0.99.1/databases/lib/libipv6calc_db_wrapper.c0000664000175100017510000031412512550424435021623 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper.c * Version : $Id: libipv6calc_db_wrapper.c,v 1.68 2015/07/12 08:45:17 ds6peter Exp $ * Copyright : 2013-2014 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" 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]; 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 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 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 int 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) ? '+' : '-', 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_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)); #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]); } 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]); } 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 (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 }; 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 i, valid = 1; 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 ((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 (i = 0; i < (strlen(as_text) - 2); i++) { if ((as_text[i+2] == ' ') || (as_text[i+2] == '\0')) { break; } else if (isdigit(as_text[i+2])) { continue; } else { // something wrong valid = 0; break; }; }; if (i > 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; }; 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); }; #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); }; /* 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; int ret = -1; i_min = 0; i_max = data_num_rows - 1; i_old = -1; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "Start binary search over entries: data_num_rows=%u", data_num_rows); if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_BINARY) { // binary search in provided data i = i_max / 2; } else if (data_search_type == IPV6CALC_DB_LOOKUP_DATA_SEARCH_TYPE_SEQLONGEST) { // sequential search in provided data i_old = i_max; i = 0; }; while (i_old != i) { if ((i >= 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_old = i; i = (i_max - i_min) / 2 + i_min; // jump to last entry in special way if needed, otherwise it's not reachable if ((i == i_old) && ((i + 1) == (data_num_rows - 1))) { DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper, "workaround for last entry activated"); i = i_max; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper, "i_old=%ld i_min=%ld i_max=%ld i=%ld", i_old, i_min, i_max, i); } 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(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(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(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 int 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-0.99.1/databases/lib/libipv6calc_db_wrapper.h0000664000175100017510000003571612547144772021647 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper.h * Version : $Id: libipv6calc_db_wrapper.h,v 1.43 2015/07/08 06:58:02 ds6peter Exp $ * Copyright : 2013-2015 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_MAX IPV6CALC_DB_FEATURE_NUM_IEEE_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 database specific generic features #define IPV6CALC_DB_GEOIP_IPV4 0x00010000 #define IPV6CALC_DB_GEOIP_IPV6 0x00020000 #define IPV6CALC_DB_IP2LOCATION_IPV4 0x00100000 #define IPV6CALC_DB_IP2LOCATION_IPV6 0x00200000 #define IPV6CALC_DB_DBIP_IPV4 0x01000000 #define IPV6CALC_DB_DBIP_IPV6 0x02000000 #define IPV6CALC_DB_EXTERNAL_IPV4 0x10000000 #define IPV6CALC_DB_EXTERNAL_IPV6 0x20000000 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" }, }; // 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 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 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); // 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); #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(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(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(s_ipv6calc_filter_db_registry *filter, const int proto); extern int libipv6calc_db_registry_filter(const int 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-0.99.1/databases/lib/libipv6calc_db_wrapper_External.h0000664000175100017510000000613512416041441023462 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_External.h * Version : $Id: libipv6calc_db_wrapper_External.h,v 1.1 2014/10/10 20:35:45 ds6peter Exp $ * Copyright : 2013-2013 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) /*@unused@*/ 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 }, { EXTERNAL_DB_IPV6_REGISTRY , "ipv6calc-external-ipv6-registry.db" , "IPv6 Registry" , IPV6CALC_DB_IPV6_TO_REGISTRY | IPV6CALC_DB_EXTERNAL_IPV6 }, { 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(int type); extern DB *libipv6calc_db_wrapper_External_open_type(const int type, long int *db_recno_max_ptr); extern const char *libipv6calc_db_wrapper_External_dbdescription(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); #endif ipv6calc-0.99.1/databases/lib/libipv6calc_db_wrapper_BuiltIn.h0000664000175100017510000000572012422715716023257 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_BuiltIn.h * Version : $Id: libipv6calc_db_wrapper_BuiltIn.h,v 1.9 2014/10/25 12:47:10 ds6peter Exp $ * Copyright : 2013-2014 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; /* 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; #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); // IPv6 Registry extern int libipv6calc_db_wrapper_BuiltIn_registry_num_by_ipv6addr(const ipv6calc_ipv6addr *ipv6addrp); ipv6calc-0.99.1/databases/lib/libipv6calc_db_wrapper_DBIP.h0000664000175100017510000000572612415046063022427 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_DBIP.h * Version : $Id: libipv6calc_db_wrapper_DBIP.h,v 1.8 2014/10/07 20:25:23 ds6peter Exp $ * Copyright : 2014-2014 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_MAX (DBIP_DB_IPV6_CITY + 1) /*@unused@*/ static const db_file_desc libipv6calc_db_wrapper_DBIP_db_file_desc[] = { { DBIP_DB_IPV4_COUNTRY , "ipv6calc-dbip-ipv4-country.db" , "IPv4 CountryCode" , IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 }, { DBIP_DB_IPV6_COUNTRY , "ipv6calc-dbip-ipv6-country.db" , "IPv6 CountryCode" , IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 }, { DBIP_DB_IPV4_CITY , "ipv6calc-dbip-ipv4-city.db" , "IPv4 City/Region/CountryCode", IPV6CALC_DB_IPV4_TO_CITY | IPV6CALC_DB_IPV4_TO_REGION | IPV6CALC_DB_IPV4_TO_CC | IPV6CALC_DB_DBIP_IPV4 }, { DBIP_DB_IPV6_CITY , "ipv6calc-dbip-ipv6-city.db" , "IPv6 City/Region/CountryCode", IPV6CALC_DB_IPV6_TO_CITY | IPV6CALC_DB_IPV6_TO_REGION | IPV6CALC_DB_IPV6_TO_CC | IPV6CALC_DB_DBIP_IPV6 }, }; // 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; #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 int type); extern DB *libipv6calc_db_wrapper_DBIP_open_type(const int type_flag, long int *db_recno_max_ptr); extern const char *libipv6calc_db_wrapper_DBIP_dbdescription(const int type); extern char *libipv6calc_db_wrapper_DBIP_database_info(const int type); #endif ipv6calc-0.99.1/databases/lib/libipv6calc_db_wrapper_BuiltIn.c0000664000175100017510000006142212535750365023257 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_BuiltIn.c * Version : $Id: libipv6calc_db_wrapper_BuiltIn.c,v 1.20 2015/06/10 05:53:57 ds6peter Exp $ * Copyright : 2013-2014 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; #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; builtin_ipv4 = 1; #endif #ifdef SUPPORT_DB_IPV6_REG wrapper_features_by_source[IPV6CALC_DB_SOURCE_BUILTIN] |= IPV6CALC_DB_IPV6_TO_REGISTRY; 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"; 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); }; #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) { 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); }; #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); }; #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->scope & 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); }; #endif // SUPPORT_BUILTIN ipv6calc-0.99.1/databases/lib/libipv6calc_db_wrapper_GeoIP.h0000664000175100017510000000726412515117366022661 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_GeoIP.h * Version : $Id: libipv6calc_db_wrapper_GeoIP.h,v 1.20 2015/04/20 06:38:46 ds6peter Exp $ * 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-0.99.1/databases/lib/libipv6calc_db_wrapper_DBIP.c0000664000175100017510000006172312535750365022433 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_DBIP.c * Version : $Id: libipv6calc_db_wrapper_DBIP.c,v 1.20 2015/06/10 05:53:57 ds6peter Exp $ * Copyright : 2013-2015 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"; /* 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(int type); /* * function initialise the DBIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_DBIP_wrapper_init(void) { int i; DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Called"); DEBUGPRINT_NA(DEBUG_libipv6calc_db_wrapper_DBIP, "Check for standard DBIP databases"); /* 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; }; // clean local cache db_ptr_cache[i] = NULL; db_recno_max_cache[i] = -1; }; DEBUGPRINT_WA(DEBUG_libipv6calc_db_wrapper_DBIP, "custom directory: %s", dbip_db_dir); 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 // 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(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(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 < sizeof(libipv6calc_db_wrapper_DBIP_db_file_desc) / sizeof(libipv6calc_db_wrapper_DBIP_db_file_desc[0]); 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(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 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"); 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 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; }; snprintf(resultstring, sizeof(resultstring), "DBIP-%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_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); //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]; char *data_ptr = NULL; 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_IPV4_COUNTRY; 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_IPV6_COUNTRY; 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 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_DBIP, "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) == 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]; char *data_ptr = NULL; 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_IPV4_CITY; 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_IPV6_CITY; 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 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_DBIP, "Database entry found %d: %s", token_count, token); if (token_count == 2) { /* region */ snprintf(region, region_len, "%s", token); } else if (token_count == 3) { /* city */ snprintf(city, city_len, "%s", token); }; /* get next token */ token = strtok_r(NULL, ";", ptrptr); }; if (token_count != 3) { 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); }; #endif #endif ipv6calc-0.99.1/databases/lib/Makefile.in0000664000175100017510000000442112410504755017113 0ustar peterpeter# Project : ipv6calc # File : lib/Makefile # Version : $Id: Makefile.in,v 1.16 2014/09/24 09:07:57 ds6peter Exp $ # 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) 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@ 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" endif test: ipv6calc-0.99.1/VERSION0000664000175100017510000000000712521421233013405 0ustar peterpeter0.99.1 ipv6calc-0.99.1/ipv6logstats/0000775000175100017510000000000012572537445015030 5ustar peterpeteripv6calc-0.99.1/ipv6logstats/ipv6logstats.c0000664000175100017510000006446312532625037017645 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstats.c * Version : $Id: ipv6logstats.c,v 1.67 2015/05/31 15:34:55 ds6peter Exp $ * Copyright : 2003-2015 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", i); if ((i == '?') && (optopt != 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.scope & (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.scope & 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.scope & IPV6_NEW_ADDR_6TO4) != 0) { stat_registry_base = STATS_IPV6_6TO4_BASE; } else if ((ipv6addr.scope & IPV6_NEW_ADDR_TEREDO) != 0) { stat_registry_base = STATS_IPV6_TEREDO_BASE; } else if ((ipv6addr.scope & 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.scope & IPV6_NEW_ADDR_IID) == IPV6_NEW_ADDR_IID) { if ((ipv6addr.scope & IPV6_NEW_ADDR_IID_RANDOM) != 0) { stat_inc(STATS_IPV6_IID_RANDOM); } else if ((ipv6addr.scope & IPV6_NEW_ADDR_IID_ISATAP) != 0) { stat_inc(STATS_IPV6_IID_ISATAP); } else if ((ipv6addr.scope & IPV6_NEW_ADDR_IID_LOCAL) != 0) { stat_inc(STATS_IPV6_IID_MANUAL); } else if ((ipv6addr.scope & 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-0.99.1/ipv6logstats/example_gnuplot.cmd0000664000175100017510000000534312337570472020721 0ustar peterpeter# 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-0.99.1/ipv6logstats/ipv6logstats.h0000664000175100017510000000337312410504755017641 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstats.h * Version : $Id: ipv6logstats.h,v 1.21 2014/09/24 09:07:57 ds6peter Exp $ * 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-0.99.1/ipv6logstats/ipv6logstatshelp.c0000664000175100017510000000557212363377011020510 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatshelp.c * Version : $Id: ipv6logstatshelp.c,v 1.15 2014/07/22 06:00:41 ds6peter Exp $ * 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(+)/possible(-) feature tokens\n"); fprintf(stderr, "%-22s%c %s\n", "STAT_REG", (feature_reg == 1)? '+' : '-', "Statistics by Registry"); fprintf(stderr, "%-22s%c %s\n", "STAT_CC", (feature_cc == 1) ? '+' : '-', "Statistics by CountryCode"); fprintf(stderr, "%-22s%c %s\n", "STAT_AS", (feature_as == 1) ? '+' : '-', "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-0.99.1/ipv6logstats/examples-gri/0000775000175100017510000000000012572537445017425 5ustar peterpeteripv6calc-0.99.1/ipv6logstats/examples-gri/data-simple.gri0000664000175100017510000000073407757675616022350 0ustar peterpeterset 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-0.99.1/ipv6logstats/ipv6logstatsoptions.h0000664000175100017510000000173712337555262021266 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatsoptions.h * Version : $Id: ipv6logstatsoptions.h,v 1.12 2014/05/23 05:20:50 ds6peter Exp $ * 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-0.99.1/ipv6logstats/ipv6logstatshelp.h0000664000175100017510000000075612363377011020514 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatshelp.h * Version : $Id: ipv6logstatshelp.h,v 1.4 2014/07/22 06:00:41 ds6peter Exp $ * 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-0.99.1/ipv6logstats/README0000664000175100017510000000365512327145402015703 0ustar peterpeter$Id: README,v 1.8 2014/04/27 09:16:50 ds6peter Exp $ 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-0.99.1/ipv6logstats/collect_ipv6logstats.pl0000775000175100017510000000415007757675224021551 0ustar peterpeter#!/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-0.99.1/ipv6logstats/test_ipv6logstats.sh0000775000175100017510000001561312536120344021063 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/logstats # File : test_ipv6logstats.sh # Version : $Id: test_ipv6logstats.sh,v 1.21 2015/06/10 20:41:08 ds6peter Exp $ # 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-0.99.1/ipv6logstats/examples-data/0000775000175100017510000000000012572537445017555 5ustar peterpeteripv6calc-0.99.1/ipv6logstats/examples-data/data-200306.txt0000664000175100017510000000120107757675616021765 0ustar peterpeter*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-0.99.1/ipv6logstats/examples-data/data-200302.txt0000664000175100017510000000115407757675616021770 0ustar peterpeter*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-0.99.1/ipv6logstats/examples-data/data-simple.txt0000664000175100017510000000021007757675616022523 0ustar peterpeter200301 2641 2585 56 200302 9194 9163 31 200303 12345 12334 11 200304 11485 11475 10 200305 16390 16370 20 200306 30375 28887 1488 ipv6calc-0.99.1/ipv6logstats/examples-data/data-200305.txt0000664000175100017510000000116307757675616021773 0ustar peterpeter*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-0.99.1/ipv6logstats/examples-data/data-200304.txt0000664000175100017510000000116007757675616021767 0ustar peterpeter*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-0.99.1/ipv6logstats/examples-data/data-200303.txt0000664000175100017510000000116207757675616021770 0ustar peterpeter*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-0.99.1/ipv6logstats/examples-data/data-200301.txt0000664000175100017510000000115407757675616021767 0ustar peterpeter*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-0.99.1/ipv6logstats/example_ipv6logstats.sh0000775000175100017510000000242612337555262021547 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/logstats # File : example_ipv6logstats.sh # Version : $Id: example_ipv6logstats.sh,v 1.7 2014/05/23 05:20:50 ds6peter Exp $ # 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-0.99.1/ipv6logstats/Makefile.in0000664000175100017510000000376212355752356017104 0ustar peterpeter# Project : ipv6calc/ipv6logstats # File : Makefile # Version : $Id: Makefile.in,v 1.31 2014/07/05 10:35:26 ds6peter Exp $ # 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-0.99.1/COPYING0000664000175100017510000004313211713462676013420 0ustar peterpeter 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-0.99.1/md5/0000775000175100017510000000000012572537445013050 5ustar peterpeteripv6calc-0.99.1/md5/md5.c0000664000175100017510000003011712132313652013663 0ustar peterpeter/* 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-0.99.1/md5/README0000664000175100017510000000045110140710375013710 0ustar peterpeter$Id: README,v 1.1 2004/10/30 13:02:53 peter Exp $ 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-0.99.1/md5/md5.h0000664000175100017510000001061510140710375013671 0ustar peterpeter/* 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-0.99.1/md5/Makefile.in0000664000175100017510000000053111126661333015100 0ustar peterpeter# Adapted for use with project 'ipv6calc' by Peter Bieringer # $Id: Makefile.in,v 1.1 2008/12/31 12:17:31 peter Exp $ 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-0.99.1/configure.in0000664000175100017510000011607112553254377014701 0ustar peterpeterdnl Project : ipv6calc dnl File : configure.in dnl Version : $Id: configure.in,v 1.150 2015/07/20 20:24:31 ds6peter Exp $ dnl Copyright: 2001-2015 by Peter Bieringer dnl Process this file with autoconf to produce a configure script. AC_INIT(ipv6calc, 0.99.1, ipv6calc@deepspace6.net, ipv6calc, http://www.deepspace6.net/projects/ipv6calc.html) COPYRIGHT_YEAR=2015 dnl Program/library version (align with version above) PACKAGE_VERSION_MAJOR=0 PACKAGE_VERSION_MINOR=99 PACKAGE_VERSION_BUGFIX=1 dnl API version API_VERSION_MAJOR=0 API_VERSION_MINOR=99 API_VERSION_BUGFIX=1 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" ]) 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_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 # 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([*** 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-0.99.1/README.BUILDING-IP2LOCATION0000664000175100017510000000715212513652530016151 0ustar peterpeterGENERAL ------- IP2Location changed the API layer at least 2 times 2.x (no longer in scope) 4.x -> 6.x 6.x -> 7.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: Download C Library from https://www.ip2location.com/developers/c Extract, configure & compile $ tar xzf C-IP2Location-4.0.2.tar.gz $ cd C-IP2Location-4.0.2 $ 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-0.99.1/ipv6loganon/0000775000175100017510000000000012572537445014625 5ustar peterpeteripv6calc-0.99.1/ipv6loganon/ipv6loganonoptions.h0000664000175100017510000000172112366475553020657 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganonoptions.h * Version : $Id: ipv6loganonoptions.h,v 1.14 2014/07/31 17:22:51 ds6peter Exp $ * 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-0.99.1/ipv6loganon/ipv6loganonhelp.c0000664000175100017510000000537512363377011020103 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganonhelp.c * Version : $Id: ipv6loganonhelp.c,v 1.11 2014/07/22 06:00:41 ds6peter Exp $ * 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(+)/possible(-) feature tokens\n"); fprintf(stderr, "%-22s%c %s\n", "ANON_ZEROISE", (feature_zeroize == 1)? '+' : '-', "Anonymization method 'zeroize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_ANONYMIZE", (feature_anon == 1) ? '+' : '-', "Anonymization method 'anonymize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_KEEP-TYPE-ASN-CC", (feature_kp == 1) ? '+' : '-', "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-0.99.1/ipv6loganon/ipv6loganon.h0000664000175100017510000000142012326545170017224 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganon.h * Version : $Id: ipv6loganon.h,v 1.6 2014/04/25 20:50:00 ds6peter Exp $ * 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-0.99.1/ipv6loganon/README0000664000175100017510000000552212233542251015472 0ustar peterpeter$Id: README,v 1.8 2013/10/28 20:10:17 ds6peter Exp $ 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-0.99.1/ipv6loganon/ipv6loganon.c0000664000175100017510000003562012531113054017216 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganon.c * Version : $Id: ipv6loganon.c,v 1.38 2015/05/26 15:50:04 ds6peter Exp $ * Copyright : 2007-2015 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", i); if ((i == '?') && (optopt != 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) { long int inputtype = -1; 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 >= 0) { 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-0.99.1/ipv6loganon/test_ipv6loganon.sh0000775000175100017510000003764112550431466020470 0ustar peterpeter#!/bin/bash # # Project : ipv6calc # File : test_ipv6loganon.sh # Version : $Id: test_ipv6loganon.sh,v 1.29 2015/07/12 09:28:22 ds6peter Exp $ # Copyright : 2007-2015 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 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 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-0.99.1/ipv6loganon/ipv6loganonhelp.h0000664000175100017510000000070212363377011020075 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganonhelp.h * Version : $Id: ipv6loganonhelp.h,v 1.2 2014/07/22 06:00:41 ds6peter Exp $ * 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-0.99.1/ipv6loganon/Makefile.in0000664000175100017510000000421512355752356016673 0ustar peterpeter# Project : ipv6calc/ipv6loganon # File : Makefile # Version : $Id: Makefile.in,v 1.20 2014/07/05 10:35:26 ds6peter Exp $ # 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-0.99.1/contrib/0000775000175100017510000000000012572537444014022 5ustar peterpeteripv6calc-0.99.1/contrib/scripts-by-others/0000775000175100017510000000000012572537444017423 5ustar peterpeteripv6calc-0.99.1/contrib/scripts-by-others/README0000664000175100017510000000023707750262261020277 0ustar peterpeterContributed scripts by others, no maintenance, no warranty at all by me. For licenses, see scripts itself. $Id: README,v 1.1 2003/10/30 19:21:21 peter Exp $ ipv6calc-0.99.1/contrib/scripts-by-others/dig60000664000175100017510000000256507776606302020207 0ustar peterpeter#!/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-0.99.1/contrib/ipv6calc.spec.in0000664000175100017510000003172412572517230017010 0ustar peterpeter# Project : ipv6calc # File : contrib/ipv6calc.spec # Copyright : 2001-2015 by Peter Bieringer # $Id: ipv6calc.spec.in,v 1.117 2015/09/05 07:49:44 ds6peter Exp $ # 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: 9%{?dist} Group: Applications/Text URL: http://www.deepspace6.net/projects/%{name}.html License: GPLv2 Source: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/%{name}-%{version}.tar.gz BuildRequires: openssl-devel 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) 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/addjust %{_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/addjust %{_sysconfdir}/httpd/conf.d/ipv6calc.conf By default the module is disabled. %endif %prep %setup -q %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 555 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 %{_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(555,-,-) %{_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 %changelog * 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 * Sat Apr 06 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-0.99.1/contrib/ipv6calc.spec0000664000175100017510000003162612572537216016412 0ustar peterpeter# Project : ipv6calc # File : contrib/ipv6calc.spec # Copyright : 2001-2015 by Peter Bieringer # $Id: ipv6calc.spec,v 1.307 2015/09/05 10:06:06 ds6peter Exp $ # 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: 0.99.1 Release: 9%{?dist} Group: Applications/Text URL: http://www.deepspace6.net/projects/%{name}.html License: GPLv2 Source: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/%{name}-%{version}.tar.gz BuildRequires: openssl-devel 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) 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/addjust %{_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/addjust %{_sysconfdir}/httpd/conf.d/ipv6calc.conf By default the module is disabled. %endif %prep %setup -q %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 555 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 %{_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(555,-,-) %{_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 %changelog * 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 * Sat Apr 06 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-0.99.1/README0000664000175100017510000000475112327145402013234 0ustar peterpeteripv6calc will do some format changes and calculations for you (P) & (C) 2001-2014 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 Where to get: Homepage: http://www.deepspace6.net/projects/ipv6calc.html Latest version of sources: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/ CVS access: http://www.deepspace6.net/sections/cvs.html http://cvs.deepspace6.net/view/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: RHEL3: build from source package should work but not tested RHEL4: build from source package tested, working since RHEL5: package is included Mandrake: similar to Red Hat, rebuild should work, too Debian: maintained package at http://packages.debian.org/ipv6calc Pardus Linux: maintained package at http://members.comu.edu.tr/nyucel/pisi/ipv6calc/ Ubuntu: maintained package at http://packages.ubuntu.com/dapper/net/ipv6calc or http://packages.ubuntu.com/cgi-bin/search_packages.pl?searchon=names&version=all&exact=1&keywords=ipv6calc BSD: NetBSD: http://www.netbsd.org/packages/net/ipv6calc/ FreeBSD: http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/ipv6calc/ (http://www.freebsd.org/cgi/query-pr.cgi?pr=34441) http://www.freshports.org/net-mgmt/ipv6calc/ 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: README,v 1.16 2014/04/27 09:16:50 ds6peter Exp $ ipv6calc-0.99.1/tools/0000775000175100017510000000000012572537445013523 5ustar peterpeteripv6calc-0.99.1/tools/GeoIP-update.sh.in0000775000175100017510000000464112471555607016715 0ustar peterpeter#!/bin/bash # # Simple shell script to update GeoIP database files # # Project : ipv6calc/GeoIP # File : GeoIP-update.sh # Version : $Id: GeoIP-update.sh.in,v 1.3 2015/02/20 07:00:23 ds6peter Exp $ # 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-0.99.1/tools/DBIP-update.sh.in0000775000175100017510000000626012520504312016445 0ustar peterpeter#!/bin/bash # # Simple shell script to update db-ip.com database files # # Project : ipv6calc/DBIP # File : DBIP-update.sh # Version : $Id: DBIP-update.sh.in,v 1.4 2015/04/30 19:55:54 ds6peter Exp $ # 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-0.99.1/tools/ipv6calc-registries-check-run-create.sh0000775000175100017510000000621412520502744023053 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/ipv4-assignment # File : ipv6calc-registries-check-run-create.sh # Version : $Id: ipv6calc-registries-check-run-create.sh,v 1.2 2015/04/30 19:43:32 ds6peter Exp $ # Copyright : 2002-2015 by Peter Bieringer # # 20150214/bie: combined databases/ipv{4,6}-assignment/check-run-create.sh flag_update=0 help() { cat < [-u] [-S ] [-D ] -S destination directory -D source directory -u unconditional update END } while getopts "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 ;; *) 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` echo "INFO : found newer than $file files: IANA=$IANA ARIN=$ARIN APNIC=$APNIC RIPENCC=$RIPENCC LACNIC=$LACNIC AFRINIC=$AFRINIC" if [ $IANA -gt 0 -o $ARIN -gt 0 -o $APNIC -gt 0 -o $RIPENCC -gt 0 -o $LACNIC -gt 0 -o $AFRINIC -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" 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-0.99.1/tools/DBIP-generate-db.pl0000775000175100017510000002162212520505103016732 0ustar peterpeter#!/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: DBIP-generate-db.pl,v 1.8 2015/04/30 20:02:11 ds6peter Exp $ # Copyright : 2014-2015 by Peter Bieringer # License : GNU GPL version 2 # use strict; use warnings; use Getopt::Std; use BerkeleyDB; use POSIX qw(strftime); use IO::Uncompress::Gunzip qw(gunzip $GunzipError); use Net::IP; my %opts; getopts ("qdAS:O:I:h?", \%opts); my $file_input; my $dir_output = "."; my $suffix = ""; my $suffix_orig; my $file_type = "cvs"; my $atomic = 0; if (defined $opts{'h'} || defined $opts{'?'}) { print qq| Usage: PROGNAME -I [-O ] [-S ] [-A] Options: -I DB-IP.com CSV input file -O optional output directory for DB files, default: . -S optional suffix -A atomic operation (generate .new and move on success) -d debug -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'}; }; $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)-([0-9]{4})-([0-9]{2}).csv(.gz)?$/o) { print "ERROR : input file name is not a valid dbip filename: $file_input\n"; exit 1; }; if (defined $5) { print "INFO : .gz suffix found on: $file_input\n" if (! defined $opts{'q'}); $file_type = "cvs.gz"; }; $date = $3 . $4 . "01"; $type_string = $2; if ($type_string eq "country") { $type = 1000; } elsif ($type_string eq "city") { $type = 1010; }; print "INFO : input file: $file_input type=$type date=$date\n" if (! defined $opts{'q'}); 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; while (<$FILE>) { my $line = $_; chomp $line; $linecounter++; if ((($linecounter % 100000) == 0) || (defined $opts{'d'})) { print "INFO : linecounter=$linecounter: $line\n" if (! defined $opts{'q'}); }; my $start; my $end; my $cc; my $city; my $region; if ($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'}++; }; } else { # 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; }; 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; 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) . " $cc\n"; if ($type == 1010) { push @a_ipv4, sprintf("%08x", $start_value) . ";" . sprintf("%08x", $end_value) . ";" . $cc . ";" . $region . ";" . $city; } else { push @a_ipv4, sprintf("%08x", $start_value) . ";" . sprintf("%08x", $end_value) . ";" . $cc; }; } 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)) . " $cc\n"; if ($type == 1010) { push @a_ipv6, $start_value_0_15 . ";" . $start_value_16_31 . ";" . $end_value_0_15 . ";" . $end_value_16_31 . ";" . $cc . ";" . $region . ";" .$city; } else { push @a_ipv6, $start_value_0_15 . ";" . $start_value_16_31 . ";" . $end_value_0_15 . ";" . $end_value_16_31 . ";" . $cc; }; }; }; 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"; print "INFO : IPv4 database first entry: " . $a_ipv4[1] . "\n"; print "INFO : IPv4 database last entry: " . $a_ipv4[-1] . "\n"; print "INFO : IPv6 database first entry: " . $a_ipv6[1] . "\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-0.99.1/tools/IP2Location-update.sh.in0000775000175100017510000001631112514410004020005 0ustar peterpeter#!/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: IP2Location-update.sh.in,v 1.8 2015/04/18 08:04:20 ds6peter Exp $ # 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-0.99.1/tools/ipv6calc-update-registries.sh0000775000175100017510000000624312470177531021225 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/registries # File : update-registries.sh # Version : $Id: ipv6calc-update-registries.sh,v 1.1 2015/02/15 20:19:37 ds6peter Exp $ # Copyright : 2002-2014 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] -D destination directory (default: internal sub-directories) -d dry-run/debug -h|? this online help END } ## default dir_dst="" dry_run=0 ## parse options while getopts "\?hdD:" 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 ;; d) dry_run=1 ;; \?|h) help exit 1 ;; *) echo "Invalid option: -$OPTARG" >&2 exit 0 ;; esac done 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 [ -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 $url$filename -O $filename retval=$? else [ $dry_run -ne 1 ] && wget $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 ipv6calc-0.99.1/tools/ipv6calc-create-registry-list-ipv4.pl0000775000175100017510000004137012514410004022510 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc/databases/ipv4-assignment # File : create-registry-list.pl # Version : $Id: ipv6calc-create-registry-list-ipv4.pl,v 1.2 2015/04/18 08:04:20 ds6peter Exp $ # Copyright : 2002-2015 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 |= 0x1000; # TLD store sub help { print qq| Usage: $progname [-S ] [-D ] [-H] [-B [-A]] -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) -h this online help |; exit 0; }; # parse options our ($opt_h, $opt_S, $opt_D, $opt_B, $opt_H, $opt_A); getopts('hS:D:BHA') || help(); if (defined $opt_h) { help(); }; 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 @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"; @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"; @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 %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); }; # Should't be used, a little bit obsolete 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; }; }; }; &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"); }; }; 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 * * 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 "\/\*\@unused\@\*\/ static const char* dbipv4addr_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; print $OUT "\/\*\@unused\@\*\/ 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 - %-15s\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 - %-15s\n", $ipv4, ($ipv4 + $distance - 1), $registry, &dec_to_ipv4($ipv4), &dec_to_ipv4($ipv4 + $distance - 1); }; print $OUT "};\n"; 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"; 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; 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; 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; 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-0.99.1/tools/ipv6calc-db-update.sh.in0000775000175100017510000001121212471555607020034 0ustar peterpeter#!/bin/bash # # Simple shell script to update ipv6calc (external) database files # # Project : ipv6calc/databases # File : ipv6calc-db-update.sh # Version : $Id: ipv6calc-db-update.sh.in,v 1.3 2015/02/20 07:00:23 ds6peter Exp $ # 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-0.99.1/tools/ipv6calc-create-registry-list-ipv6.pl0000775000175100017510000003756612514410004022526 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc/databases/ipv6-assignment # File : create-registry-list.pl # Version : $Id: ipv6calc-create-registry-list-ipv6.pl,v 1.2 2015/04/18 08:04:20 ds6peter Exp $ # Copyright : 2005 by Simon Arlott (initial implementation of global file only) # 2005-2015 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 |= 0x4000; # store countrycode #$debug |= 0x0080; # skip optimizer sub help { print qq| Usage: $progname [-S ] [-D ] [-H] [-B [-A]] -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) -h this online help |; exit 0; }; ## parse options our ($opt_h, $opt_S, $opt_D, $opt_B, $opt_H, $opt_A); getopts('hS:D:BHA') || help(); if (defined $opt_h) { help(); }; 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 @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"; @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"; @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 %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"; }; }; }; }; ## Main proceed_global(); foreach my $file (@files) { 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; 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 ne "CC") { print "INFO : fill data for registry: $reg\n"; } else { print "INFO : fill data for CountryCode assignment\n"; }; foreach my $entry (sort @$parray) { my ($ipv6, $length, $data); if ($reg ne "CC") { ($ipv6, $length) = split /\//o, $entry; $data = $reg; } else { ($ipv6, $length, $data) = split /\//o, $entry; }; 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); 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 "\/\*\@unused\@\*\/ static const char* dbipv6addr_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; print $OUT "\/\*\@unused\@\*\/ 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"; 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; 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; 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; 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-0.99.1/tools/Makefile.in0000664000175100017510000000264512521421233015554 0ustar peterpeter# Project : ipv6calc/ipv6calc # File : Makefile[.in] # Version : $Id: Makefile.in,v 1.7 2015/05/03 13:28:59 ds6peter Exp $ # 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-0.99.1/VERSION.in0000664000175100017510000000002211700134546014015 0ustar peterpeter@PACKAGE_VERSION@ ipv6calc-0.99.1/autogen.sh0000775000175100017510000001301712556060735014361 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : autogen.sh # Version : $Id: autogen.sh,v 1.56 2015/07/29 05:17:17 ds6peter Exp $ # 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 ;; '-?'|'-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'" 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 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-0.99.1/autogen-support.sh0000775000175100017510000004500712514703212016063 0ustar peterpeter#!/bin/bash # # Project : ipv6calc # File : autogen-support.sh # Version : $Id: autogen-support.sh,v 1.38 2015/04/19 10:42:18 ds6peter Exp $ # Copyright : 2014-2015 by Peter Bieringer # # Information: provide support funtions 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 # # $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 # ip2location-c-7.0.1 # 20150416 #### 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" 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.0 7.0.1" ip2location_versions_download="6.0.1 6.0.2 6.0.3 7.0.0 7.0.1" ip2location_url_base="https://www.ip2location.com/downloads/" 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 nameversion="${ip2location_url_base}ip2location-c-$version.tar.gz" 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.*) nameversion="ip2location-c-$version" ;; *) # default nameversion="IP2Location-c-$version" ;; esac else case $version in 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 -t : GeoIP/IP2Location cross-version tests -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 ":ADCXtFnB?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-0.99.1/autogen-all-variants.sh0000775000175100017510000002321312513652530016744 0ustar peterpeter#!/bin/bash # # Project : ipv6calc # File : autogen-all-variants.sh # Version : $Id: autogen-all-variants.sh,v 1.46 2015/04/16 06:23:20 ds6peter Exp $ # 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-0.99.1/CHANGES0000664000175100017510000000505012235230307013335 0ustar peterpeterMajor 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-0.99.1/external-fallback/0000775000175100017510000000000012572537445015742 5ustar peterpeteripv6calc-0.99.1/external-fallback/IP2Location/0000775000175100017510000000000012572537445020025 5ustar peterpeteripv6calc-0.99.1/external-fallback/IP2Location/IP2Loc_DBInterface.h0000775000175100017510000000334212513652530023405 0ustar peterpeter/* * 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-0.99.1/external-fallback/IP2Location/VERSION-IP2Location0000664000175100017510000000000612514010405023124 0ustar peterpeter7.0.1 ipv6calc-0.99.1/external-fallback/IP2Location/COPYING0000775000175100017510000001674312523053403021055 0ustar peterpeter 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-0.99.1/external-fallback/IP2Location/LICENSE.LGPLv30000775000175100017510000001674312523053403022035 0ustar peterpeter 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-0.99.1/external-fallback/IP2Location/IP2Location.h0000775000175100017510000001346012514010405022242 0ustar peterpeter/* * 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" #define API_VERSION 7.0.1 #define API_VERSION_MAJOR 7 #define API_VERSION_MINOR 0 #define API_VERSION_RELEASE 1 #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 #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; } 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); #ifdef __cplusplus } #endif #endif ipv6calc-0.99.1/external-fallback/GeoIP/0000775000175100017510000000000012572537445016705 5ustar peterpeteripv6calc-0.99.1/external-fallback/GeoIP/VERSION-GeoIP0000664000175100017510000000000612365755532020711 0ustar peterpeter1.4.8 ipv6calc-0.99.1/external-fallback/GeoIP/GeoIP.h0000664000175100017510000002644712365753250020030 0ustar peterpeter/* -*- 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-0.99.1/external-fallback/GeoIP/COPYING0000664000175100017510000006374712523053403017740 0ustar peterpeter[ 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-0.99.1/external-fallback/GeoIP/GeoIP_internal.h0000664000175100017510000000107612365767262021723 0ustar peterpeter#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-0.99.1/external-fallback/GeoIP/GeoIPCity.h0000664000175100017510000000465112365767262020662 0ustar peterpeter/* -*- 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-0.99.1/man/0000775000175100017510000000000012572537445013136 5ustar peterpeteripv6calc-0.99.1/man/ipv6logconv.80000664000175100017510000000314312515366245015477 0ustar peterpeter.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 or to the authors. .br Homepage: http://www.deepspace6.net/projects/ipv6calc.html .SH "COPYRIGHT" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-0.99.1/man/ipv6loganon.80000664000175100017510000001531612515366245015472 0ustar peterpeter.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, proceed it to stdout Depending on the anonymization method, address parts (prefix/interface identifier) are .TP simply \fBzeroized\fR by given masks .TP \fBanonymized\fR by zeroizing only required bits (partially depending on given masks) IID: 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 6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 mask local: whole IID would be zero'ed (except if privacy extension was detected, then replaced by a special token) Prefix: IPv6 addresses including IPv4 address of client would be anonymized by given IPv4 mask .PP .TP anonymized by try to keep for IPv4 and IPv6 addresses (\fBkeep\-type\-asn\-cc\fR) \fBtype\fR of address Autonomous System Number (\fBASN\fR) Country Code (\fBCC\fR) This method requires an IPv4/IPv6 to Country Code and ASN resolution, provided by GeoIP Big advantage: ipv6logstats(8) result should be the same as with raw data Anonymized IPv4 addresses are from experimental range \fB240.0.0.0/8\fR Anonymized IPv6 addresses are using (currently hijacked) prefix \fBa909::/16\fR 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 or to the authors. .br Homepage: http://www.deepspace6.net/projects/ipv6calc.html .SH "COPYRIGHT" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-0.99.1/man/ipv6logstats.80000664000175100017510000001005012515366245015663 0ustar peterpeter.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 or to the authors. .br Homepage: http://www.deepspace6.net/projects/ipv6calc.html .SH "COPYRIGHT" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-0.99.1/man/ipv6calc.80000664000175100017510000001052312515366245014732 0ustar peterpeter.TH "ipv6calc" "8" "0.99.0" "Peter Bieringer " "system administration" .SH "NAME" ipv6calc .SH "SYNOPSIS" ipv6calc [\fIOPTIONS\fP] \fB\fR or in pipe mode echo \fB\fR | ipv6calc [\fIOPTIONS\fP] .SH "DESCRIPTION" .LP 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" .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 ...]\fR : specify format options .TP \fB [...]\fR : input data .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 .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: [ ...] .br for more information and available format options use: \-?|\-h|\-\-help .TP \fB\-r|\-\-addr2ip6_int\fR (\-O revnibbles.int) .TP \fB\-r|\-\-addr_to_ip6int\fR (\-O revnibbles.int) .TP \fB\-a|\-\-addr2ip6_arpa\fR (\-O revnibbles.arpa) .TP \fB\-a|\-\-addr_to_ip6arpa\fR (\-O revnibbles.arpa) .TP \fB\-b|\-\-addr_to_bitstring\fR (\-O bitstring) .TP \fB \-\-addr2compaddr\fR (\-\-printcompressed) .TP \fB \-\-addr_to_compressed\fR (\-\-printcompressed) .TP \fB \-\-addr2uncompaddr\fR (\-\-printuncompressed) .TP \fB \-\-addr_to_uncompressed\fR (\-\-printuncompressed) .TP \fB \-\-addr_to_base85\fR (\-I ipv6addr \-O base85) .TP \fB \-\-base85_to_addr\fR (\-I base85 \-O ipv6addr) .TP \fB \-\-mac_to_eui64\fR (\-I mac \-O eui64) .TP \fB \-\-addr2fulluncompaddr\fR (\-\-printfulluncompressed) .TP \fB \-\-addr_to_fulluncompressed\fR (\-\-printfulluncompressed) .TP \fB \-\-addr2if_inet6\fR (\-I ipv6addr \-O ifinet6) .TP \fB \-\-addr_to_ifinet6\fR (\-I ipv6addr \-O ifinet6) .TP \fB \-\-if_inet62addr\fR (\-I ifinet6 \-O ipv6addr \-\-printcompressed) .TP \fB \-\-ifinet6_to_compressed\fR (\-I ifinet6 \-O ipv6addr \-\-printcompressed) .TP \fB \-\-eui64_to_privacy\fR (\-I iid_token \-O iid_token \-A genprivacyiid) .TP \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 .TP ipv6calc \-\-showinfo \-m 127.0.0.1 .TP ipv6calc \-\-showinfo \-\-show_types .TP ipv6calc \-\-ipv4_to_6to4addr 127.0.0.1 .TP ipv6calc \-\-addr_to_uncompressed ::1 .LP Usage of filters in pipe mode: .TP cat | ipv6calc \-E ipv6.db.cc=US,iid\-random .SH "COPYRIGHT" GPLv2 .SH "AUTHORS" Peter Bieringer ipv6calc-0.99.1/man/Makefile.in0000664000175100017510000000076011130704331015161 0ustar peterpeter# Project : ipv6calc # File : Makefile # Version : $Id: Makefile.in,v 1.12 2009/01/06 16:37:45 peter Exp $ # 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-0.99.1/USAGE0000664000175100017510000000261311563737010013141 0ustar peterpeter$Id: USAGE,v 1.7 2011/05/15 11:50:32 peter Exp $ 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-0.99.1/ipv6calc/0000775000175100017510000000000012572537445014072 5ustar peterpeteripv6calc-0.99.1/ipv6calc/test_privacyiid_detection.sh0000775000175100017510000002041011743337544021663 0ustar peterpeter#!/bin/bash # # Project : ipv6calc # File : test_privacyiid_detection.sh # Version : $Id: test_privacyiid_detection.sh,v 1.5 2012/04/17 19:07:16 peter Exp $ # 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-0.99.1/ipv6calc/test_ipv6calc_anonymization.sh0000775000175100017510000002217612537360271022156 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc_anonymization.sh # Version : $Id: test_ipv6calc_anonymization.sh,v 1.10 2015/06/14 20:14:49 ds6peter Exp $ # Copyright : 2013-2015 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 echo "ERROR : IPVx_TYPE not equal:" 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 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 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 echo "ERROR : something went wrong reducing IPVx_TYPE for $input" exit 1 fi if [ -z "$type_anon_compare" ]; then 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 echo "ERROR : IPVx_TYPE not equal:" 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=//'`" reg_anon="`./ipv6calc -m -i -q "$output" | grep -a "^IPV._REGISTRY=" | sed 's/IPV._REGISTRY=//'`" if [ -z "$reg_orig" ]; then echo "ERROR : something went wrong retrieving IPVx_REGISTRY for $input" exit 1 fi if [ -z "$reg_anon" ]; then 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 echo "ERROR : something went wrong, anon has registry while orig hasn't" exit 1 elif [ -n "$reg_orig" -a -z "$reg_anon" ]; then echo "ERROR : something went wrong, orig has registry while anon hasn't" exit 1 else # Check result if [ "$reg_orig" != "$reg_anon" ]; then echo "ERROR : IPVx_REGISTRY not equal:" 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 echo "ERROR : something went wrong, anon has country code while orig hasn't" exit 1 elif [ -n "$cc_orig" -a -z "$cc_anon" ]; then echo "ERROR : something went wrong, orig has country code while anon hasn't" exit 1 else # Check result if [ "$cc_orig" != "$cc_anon" ]; then echo "ERROR : IPVx_COUNTRYCODE not equal:" 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-0.99.1/ipv6calc/ipv6calchelp_local.h0000664000175100017510000000110412363127703017757 0ustar peterpeter/* * Project : ipv6calc/ipv6calc * File : ipv6calchelp_local.h * Version : $Id: ipv6calchelp_local.h,v 1.3 2014/07/21 06:14:27 ds6peter Exp $ * 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-0.99.1/ipv6calc/ipv6calc.c0000664000175100017510000016512312566314027015745 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calc/ipv6calc.c * Version : $Id: ipv6calc.c,v 1.127 2015/08/23 09:53:27 ds6peter Exp $ * Copyright : 2001-2015 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; 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; /* 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); mac_clearall(&macaddr); /* 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", i); if ((i == '?') && (optopt != 0)) { 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; /* 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; }; /* 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); }; 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); }; 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 (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)) { DEBUGPRINT_NA(DEBUG_ipv6calc_general, "reset input type for later autodetection"); inputtype = FORMAT_auto; }; /* 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); 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) { /* force prefix */ if ((formatoptions & (FORMATOPTION_forceprefix)) != 0) { ipv4addr.flag_prefixuse = 1; ipv4addr.prefixlength = force_prefix; }; }; if (ipv6addr.flag_valid == 1) { /* 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) ) ) { outputtype = FORMAT_ipv6addr; } else if ( (inputtype == FORMAT_ipv4addr) && (action == ACTION_anonymize) ) { 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_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: /* print result */ if (strlen(resultstring) > 0) { if ( retval == 0 ) { 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-0.99.1/ipv6calc/test_scenarios.sh0000775000175100017510000005241112531124650017442 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_scenarios.sh # Version : $Id: test_scenarios.sh,v 1.50 2015/05/26 17:13:12 ds6peter Exp $ # Copyright : 2001-2015 by Peter Bieringer # # 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 < * * 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(+)/possible(-) feature tokens\n"); libipv6calc_db_wrapper_features_help(); fprintf(stderr, "%-22s%c %s\n", "ANON_ZEROISE", (feature_zeroize == 1)? '+' : '-', "Anonymization method 'zeroize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_ANONYMIZE", (feature_anon == 1) ? '+' : '-', "Anonymization method 'anonymize'"); fprintf(stderr, "%-22s%c %s\n", "ANON_KEEP-TYPE-ASN-CC", (feature_kp == 1) ? '+' : '-', "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-0.99.1/ipv6calc/test_ipv6calc.sh0000775000175100017510000006375712566314027017211 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc.sh # Version : $Id: test_ipv6calc.sh,v 1.57 2015/08/23 09:53:27 ds6peter Exp $ # 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-0.99.1/ipv6calc/ipv6calc.h0000664000175100017510000000143312520236630015734 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calc.h * Version : $Id: ipv6calc.h,v 1.18 2015/04/29 20:22:48 ds6peter Exp $ * Copyright : 2001-2015 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-0.99.1/ipv6calc/test_showhelp.sh0000775000175100017510000000032407454364653017322 0ustar peterpeter#!/bin/sh # $Id: test_showhelp.sh,v 1.1 2002/04/08 19:04:11 peter Exp $ echo "==Standard" ./ipv6calc -? echo "==In" ./ipv6calc --in -? echo "==Out" ./ipv6calc --out -? echo "==Action" ./ipv6calc --action -? ipv6calc-0.99.1/ipv6calc/test_ipv6calc_filter.sh0000775000175100017510000000414612537360271020541 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc_filter.sh # Version : $Id: test_ipv6calc_filter.sh,v 1.6 2015/06/14 20:14:49 ds6peter Exp $ # Copyright : 2012-2015 by Peter Bieringer # # Test patterns for ipv6calc filter 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!" 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 echo "INFO : all ipv6calc filter tests successful" exit 0 ipv6calc-0.99.1/ipv6calc/ipv6calcoptions_local.h0000664000175100017510000001537012531260616020532 0ustar peterpeter/* * Project : ipv6calc/ipv6calc * File : ipv6calc/ipv6calcoptions.h * Version : $Id: ipv6calcoptions_local.h,v 1.10 2015/05/27 06:17:50 ds6peter Exp $ * Copyright : 2002-2015 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 }, }; /* 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-0.99.1/ipv6calc/showinfo.c0000664000175100017510000020311112531113054016045 0ustar peterpeter/* * Project : ipv6calc * File : showinfo.c * Version : $Id: showinfo.c,v 1.138 2015/05/26 15:50:04 ds6peter Exp $ * Copyright : 2001-2015 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_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 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; char returnedCountry[256] = ""; char returnedCity[256] = ""; char returnedRegion[256] = ""; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable); ret = libipv6calc_db_wrapper_DBIP_wrapper_country_code_by_addr(ipaddrp, returnedCountry, sizeof(returnedCountry)); if ((ret == 0) && (strlen(returnedCountry) > 0)) { DEBUGPRINT_WA(DEBUG_showinfo, "DBIP IPv%d country database result", ipaddrp->proto); if ( machinereadable != 0 ) { printout2("DBIP_COUNTRY_SHORT", additionalstring, returnedCountry, formatoptions); } else { HUMAN_READABLE_DBIP("Country Code", returnedCountry) }; }; ret = libipv6calc_db_wrapper_DBIP_wrapper_city_by_addr(ipaddrp, returnedCity, sizeof(returnedCity), returnedRegion, sizeof(returnedRegion)); if ((ret == 0) && (strlen(returnedCity) > 0)) { DEBUGPRINT_WA(DEBUG_showinfo, "DBIP IPv%d city database result", ipaddrp->proto); if ( machinereadable != 0 ) { printout2("DBIP_CITY", additionalstring, returnedCity, formatoptions); } else { HUMAN_READABLE_DBIP("City", returnedCity) }; }; if ((returnedRegion != NULL) && (strlen(returnedRegion) > 0)) { DEBUGPRINT_WA(DEBUG_showinfo, "DBIP IPv%d region database result", ipaddrp->proto); if ( machinereadable != 0 ) { printout2("DBIP_REGION", additionalstring, returnedRegion, formatoptions); } else { HUMAN_READABLE_DBIP("Region", returnedRegion) }; }; }; #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] = "", 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; uint32_t typeinfo; 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; typeinfo = ipv4addr_gettype(ipv4addrp); DEBUGPRINT_WA(DEBUG_showinfo, "result of 'ipv4addr_gettype': 0x%08x", (unsigned int) typeinfo); 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 ((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 ((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 ( (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 ( (typeinfo & ipv6calc_ipv4addrtypestrings[i].number) != 0 ) { if ( j != 0 ) { fprintf(stdout, ", "); }; fprintf(stdout, "%s", ipv6calc_ipv4addrtypestrings[i].token); j = 1; }; }; fprintf(stdout, "\n"); }; if ((typeinfo & (IPV4_ADDR_GLOBAL)) != 0) { /* get AS Information */ as_num32 = libipv4addr_as_num32_by_addr(ipv4addrp); if ((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 ((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); }; 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 (((typeinfo & IPV4_ADDR_ANONYMIZED) == 0) && ((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.scope = ipv4addr_gettype(&ipv4addr); 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] = "", 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 typeinfo, typeinfo2; 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 */ typeinfo = ipv6addr_gettype(ipv6addrp); typeinfo2 = ipv6addrp->typeinfo2; DEBUGPRINT_WA(DEBUG_showinfo, "%08x-%0x8 (result of 'ipv6addr_gettype')", (unsigned int) typeinfo, (unsigned int) typeinfo2); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { DEBUGPRINT_WA(DEBUG_showinfo, "test: %08x : %s", (unsigned int) ipv6calc_ipv6addrtypestrings[i].number, ipv6calc_ipv6addrtypestrings[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 ((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 ((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 ( (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 ( (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 ( (typeinfo & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { if ( j != 0 ) { fprintf(stdout, ", "); }; fprintf(stdout, "%s", ipv6calc_ipv6addrtypestrings[i].token); j = 1; }; }; fprintf(stdout, "\n"); }; if ((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 ((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 (((typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) \ && ((ipv6addrp->scope & 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); }; if ( machinereadable != 0 ) { printout("IPV6_REGISTRY", tempstring2, formatoptions); } else { fprintf(stdout, "Registry for address: %s\n", tempstring2); }; /* 6to4 */ if ( (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 ( (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 ((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 ( (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 ( ((typeinfo & ( IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_ADDR_ULUA )) != 0) && ((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 ((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 ( (typeinfo & IPV6_NEW_ADDR_SOLICITED_NODE) != 0 ) { if ( (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 ( (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 ( ( ((typeinfo & (IPV6_ADDR_LINKLOCAL | IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_ADDR_ULUA )) != 0) || ((typeinfo & (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) == (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) ) && ((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 ((typeinfo & IPV6_ADDR_ANONYMIZED_IID) == IPV6_ADDR_ANONYMIZED_IID) { if ( machinereadable != 0 ) { } else { fprintf(stdout, "Interface identifier is an anonymized one\n"); }; }; if ((typeinfo & IPV6_NEW_ADDR_IID_EUI48) == IPV6_NEW_ADDR_IID_EUI48) { /* EUI-48 */ if ((typeinfo & IPV6_ADDR_ANONYMIZED_IID) == IPV6_ADDR_ANONYMIZED_IID) { payload = ipv6addr_get_payload_anonymized_iid(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 ((typeinfo & IPV6_NEW_ADDR_IID_EUI64) == IPV6_NEW_ADDR_IID_EUI64) { /* EUI-64 */ if ((typeinfo & IPV6_ADDR_ANONYMIZED_IID) == IPV6_ADDR_ANONYMIZED_IID) { payload = ipv6addr_get_payload_anonymized_iid(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 ( (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 ( (typeinfo & (IPV6_NEW_ADDR_IID_ISATAP | IPV6_NEW_ADDR_6TO4_MICROSOFT) ) != 0 ) { if ((typeinfo & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) { /* IPv4 address included */ if ((typeinfo & IPV6_ADDR_ANONYMIZED_IID) != 0) { payload = ipv6addr_get_payload_anonymized_iid(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.scope = ipv4addr_gettype(&ipv4addr); if ( (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 ( ( ( (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.scope = ipv4addr_gettype(&ipv4addr); if ( machinereadable != 0 ) { // printout("IPV4_SOURCE=LINK-LOCAL-IID"); }; print_ipv4addr(&ipv4addr, formatoptions | FORMATOPTION_printembedded, "LINK-LOCAL-IID"); } else { if ( machinereadable != 0 ) { if ((typeinfo & IPV6_NEW_ADDR_6TO4_MICROSOFT) != 0) { printout("EUI64_SCOPE", "local-6to4-microsoft", formatoptions); } else if ((typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0) { printout("EUI64_SCOPE", "local-random", formatoptions); } else { printout("EUI64_SCOPE", "local", formatoptions); }; } else { if ((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 ((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 ( (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 ((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 ( ((typeinfo & IPV6_NEW_ADDR_AGU) != 0) && ((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-0.99.1/ipv6calc/showinfo.h0000664000175100017510000000443712520474771016102 0ustar peterpeter/* * Project : ipv6calc * File : showinfo.h * Version : $Id: showinfo.h,v 1.29 2015/04/30 18:52:41 ds6peter Exp $ * Copyright : 2001-2014 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 #define IPV6CALC_OUTPUT_VERSION 10 /* 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-0.99.1/ipv6calc/Makefile.in0000664000175100017510000000536412515117366016140 0ustar peterpeter# Project : ipv6calc # File : ipv6calc/Makefile[.in] # Version : $Id: Makefile.in,v 1.50 2015/04/20 06:38:46 ds6peter Exp $ # 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-0.99.1/ipv6calc/test_showinfo.sh0000775000175100017510000003613512535750365017331 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_showinfo.sh # Version : $Id: test_showinfo.sh,v 1.44 2015/06/10 05:53:57 ds6peter Exp $ # Copyright : 2002-2015 by Peter Bieringer # # 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 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 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 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 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 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 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 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 echo "NOTICE: test: $address for $output SKIPPED (no DB_IPV6_REG compiled in)" continue fi fi [ "$verbose" = "1" ] && echo "INFO: test: $address for $output ($options)" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\\[}" output_escaped="${output_escaped//]/\\]}" if ! ./ipv6calc $options -q -i -m $address | grep $grepopt "^$output_escaped$"; then 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 echo "Expected result (missing GEOIP) because of missing IPv6 support in GeoIP)" true else echo "Unexpected result (missing GEOIP): ./ipv6calc -q -i -m $address" ./ipv6calc -q -i -m $address exit 1 fi else 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 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 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 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 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 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 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-0.99.1/lib/0000775000175100017510000000000012572537445013131 5ustar peterpeteripv6calc-0.99.1/lib/ipv6calchelp.c0000664000175100017510000010434412566314027015653 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calchelp.c * Version : $Id: ipv6calchelp.c,v 1.82 2015/08/23 09:53:27 ds6peter Exp $ * Copyright : 2002-2015 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] == 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); #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 < sizeof(ipv6calc_anon_methods) / sizeof(s_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 < sizeof(ipv6calc_anon_methods) / sizeof(s_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 stdout 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, " 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; }; }; /*************************** * 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 fprintf(stderr, "IP2Location support enabled, compiled with API version: %s\n", xmakestr(API_VERSION)); #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-0.99.1/lib/libeui64.c0000664000175100017510000002206512362136213014706 0ustar peterpeter/* * Project : ipv6calc * File : libeui64.c * Version : $Id: libeui64.c,v 1.12 2014/07/18 06:19:55 ds6peter Exp $ * Copyright : 2001-2014 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->scope = 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-0.99.1/lib/libipv4addr.h0000664000175100017510000001731412522601757015505 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv4addr.h * Version : $Id: libipv4addr.h,v 1.41 2015/05/07 06:19:27 ds6peter Exp $ * Copyright : 2002-2015 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 scope; /* address typeinfo/scope */ int flag_valid; /* address structure filled */ } 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 /* 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" } }; /* 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 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 */ #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 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(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-0.99.1/lib/librfc1886.c0000664000175100017510000002565312333643662015072 0ustar peterpeter/* * Project : ipv6calc * File : librfc1886.c * Version : $Id: librfc1886.c,v 1.21 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/libipv4addr.c0000664000175100017510000012152412531776057015505 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv4addr.c * Version : $Id: libipv4addr.c,v 1.67 2015/05/29 05:42:07 ds6peter Exp $ * Copyright : 2002-2015 by Peter Bieringer except the parts taken from kernel source * * 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; 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=honor prefix length on addr1 TODO: add more support if required * returns: 0 = addr2 equal with addr1 or covered by addr1 */ 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", ipv4addr1, ipv4addrp1->prefixlength, ipv4addr2, ipv4addrp2->prefixlength); if (ipv4addrp1->flag_prefixuse == 1) { /* mask addr2 with prefix length of addr1 */ ipv4addr2 &= (0xffffffffu << ((unsigned int) 32 - ipv4addrp1->prefixlength)); /* mask addr1 with prefix length of addr1 */ ipv4addr1 &= (0xffffffffu << ((unsigned int) 32 - ipv4addrp1->prefixlength)); }; DEBUGPRINT_WA(DEBUG_libipv4addr, "compare addr1 with addr2 0x%08x 0x%08x (after masking with prefix length of addr1)", ipv4addr1, ipv4addr2); if (ipv4addr1 == ipv4addr2) { return(0); }; return(1); }; /* * 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; 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 & 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, 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->scope = 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->scope = 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; 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 (i = 0; i < strlen(resultstring); i++) { resultstring[i] = toupper(resultstring[i]); }; }; 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->scope); /* 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; if ((ipv4addrp->scope & IPV4_ADDR_ANONYMIZED) != 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "skip already anonymized address"); } else if ((ipv4addrp->scope & IPV4_ADDR_BROADCAST) != 0) { DEBUGPRINT_NA(DEBUG_libipv4addr, "skip anonymize (broadcast address)"); } else if ((method != ANON_METHOD_KEEPTYPEASNCC) || ((ipv4addrp->scope & (IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL)) != (IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL))) { // not ANON_METHOD_KEEPTYPEASNCC or not a global address 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); // 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->scope & IPV4_ADDR_ANONYMIZED) == 0) { 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->scope & 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="; ipv6calc_ipv4addr ipv4addr; char resultstring[NI_MAXHOST]; int db = 0, addr = 0; 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, strlen(prefixaddreq)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv4addr, "found 'addr=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq); } 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); 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(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) { uint32_t typeinfo; int result = 0, r, i; 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) { /* get type */ typeinfo = ipv4addr_gettype(ipv4addrp); DEBUGPRINT_WA(DEBUG_libipv4addr, "compare typeinfo against must_have: 0x%08x/0x%08x", typeinfo, filter->filter_typeinfo.typeinfo_must_have); if ((typeinfo & filter->filter_typeinfo.typeinfo_must_have) != filter->filter_typeinfo.typeinfo_must_have) { /* no match */ result = 1; } else { if ((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) { r = 0; for (i = 0; i < filter->filter_addr.addr_must_have_max; i++) { if (ipv4addr_compare(&filter->filter_addr.ipv4addr_must_have[i], ipv4addrp, 0) == 0) { /* match must_have */ r = 1; }; }; if (r == 0) { /* no match */ result = 1; }; }; if (filter->filter_addr.addr_may_not_have_max > 0) { r = 0; for (i = 0; i < filter->filter_addr.addr_may_not_have_max; i++) { if (ipv4addr_compare(&filter->filter_addr.ipv4addr_may_not_have[i], ipv4addrp, 0) == 0) { /* match may_not_have */ r = 1; }; }; 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->scope & IPV4_ADDR_ANONYMIZED) != 0) { cc_index = ipv4addr_anonymized_get_cc_index(ipv4addrp); } else if ((ipv4addrp->scope & IPV4_ADDR_RESERVED) != 0) { cc_index = COUNTRYCODE_INDEX_UNKNOWN; } else if ((ipv4addrp->scope & 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->scope & 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->scope & 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-0.99.1/lib/libmac.h0000664000175100017510000000325412333643662014527 0ustar peterpeter/* * Project : ipv6calc * File : libmac.h * Version : $Id: libmac.h,v 1.14 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/libipv6calc.c0000664000175100017510000005147012531674473015500 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv6calc.c * Version : $Id: libipv6calc.c,v 1.45 2015/05/28 20:23:23 ds6peter Exp $ * Copyright : 2001-2015 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 xdl, i, j = 0, result; 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; 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 < sizeof(ipv6calc_anon_set_list) / sizeof(s_ipv6calc_anon_set); 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-0.99.1/lib/librfc1884.c0000664000175100017510000002420512333643662015060 0ustar peterpeter/* * Project : ipv6calc * File : librfc1884.c * Version : $Id: librfc1884.c,v 1.22 2014/05/11 09:49:38 ds6peter Exp $ * Copyright : 2001-2014 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; DEBUGPRINT_WA(DEBUG_librfc1884, "scope of IPv6 address: %08x", (unsigned int) ipv6addrp->scope); if ( (ipv6addrp->scope & 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->scope & 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->scope & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) && ((ipv6addrp->scope & 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->scope & IPV6_ADDR_IID_32_63_HAS_IPV4) != 0) && ((ipv6addrp->scope & 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 (i =0; i < strlen(tempstring); i++) { if (tempstring[i] == ':') { tempstring[i] = '-'; }; }; 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-0.99.1/lib/librfc1924.c0000664000175100017510000001207412362136213015043 0ustar peterpeter/* * Project : ipv6calc * File : librfc1924.c * Version : $Id: librfc1924.c,v 1.14 2014/07/18 06:19:55 ds6peter Exp $ * Copyright : 2001-2014 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]); }; /* Get scope */ ipv6addrp->scope = ipv6addr_gettype(ipv6addrp); 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-0.99.1/lib/libieee.c0000664000175100017510000001204712331113065014654 0ustar peterpeter/* * Project : ipv6calc * File : libieee.c * Version : $Id: libieee.c,v 1.22 2014/05/03 07:09:41 ds6peter Exp $ * 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-0.99.1/lib/ipv6calccommands.h0000664000175100017510000000623312531113054016514 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calccommands.h * Version : $Id: ipv6calccommands.h,v 1.25 2015/05/26 15:50:04 ds6peter Exp $ * Copyright : 2002-2014 by Peter Bieringer * * 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 0x0000101 #define CMD_addr_to_ip6int 0x0000101 #define CMD_addr_to_compressed 0x0000102 #define CMD_addr_to_uncompressed 0x0000103 #define CMD_addr_to_fulluncompressed 0x0000104 #define CMD_addr_to_ifinet6 0x0000105 #define CMD_addr_to_base85 0x0000106 #define CMD_addr_to_ip6arpa 0x0000107 #define CMD_addr_to_bitstring 0x0000108 #define CMD_ipv4_to_6to4addr 0x0000109 #define CMD_base85_to_addr 0x000010a #define CMD_mac_to_eui64 0x000010b #define CMD_eui64_to_privacy 0x000010c #define CMD_ifinet6_to_compressed 0x000010d #define CMD_shortcut_end 0x000010d #define CMD_showinfo 0x0001001 #define CMD_showinfotypes 0x0001002 /* database options (old) */ #define DB_ip2location_ipv4 0x0002001 #define DB_ip2location_ipv6 0x0002002 #define DB_ip2location_ipv4_default 0x0002003 #define DB_ip2location_ipv6_default 0x0002004 #define DB_geoip_ipv4 0x0002101 #define DB_geoip_ipv6 0x0002102 #define DB_geoip_ipv4_default 0x0002103 #define DB_geoip_ipv6_default 0x0002104 /* database options (new) */ #define DB_ip2location_disable 0x0002000 #define DB_ip2location_dir 0x0002005 #define DB_ip2location_lib 0x0002006 #define DB_ip2location_lite_to_sample_autoswitch_max_delta_months 0x0002010 #define DB_ip2location_comm_to_lite_switch_min_delta_months 0x0002011 #define DB_ip2location_only_type 0x0002012 #define DB_ip2location_allow_softlinks 0x0002013 #define DB_geoip_disable 0x0002100 #define DB_geoip_dir 0x0002105 #define DB_geoip_lib 0x0002106 #define DB_dbip_disable 0x0002200 #define DB_dbip_dir 0x0002205 #define DB_external_disable 0x0002300 #define DB_external_dir 0x0002305 #define DB_builtin_disable 0x0002400 #define DB_common_priorization 0x0002fff /* address anonymizer options */ #define CMD_ANON_PRESET_STANDARD 0x0003001 #define CMD_ANON_PRESET_CAREFUL 0x0003002 #define CMD_ANON_PRESET_PARANOID 0x0003003 #define CMD_ANON_METHOD_OPTION 0x000300e #define CMD_ANON_PRESET_OPTION 0x000300f #define CMD_ANON_MASK_IPV4 0x0003010 #define CMD_ANON_MASK_IPV6 0x0003011 #define CMD_ANON_MASK_EUI64 0x0003012 #define CMD_ANON_MASK_MAC 0x0003013 #define CMD_ANON_MASK_AUTOADJUST 0x0003018 #define CMD_ANON_MASK_IID 0x0003019 // deprecated /* 6rd options */ #define CMD_6rd_prefix 0x0004001 #define CMD_6rd_relay_prefix 0x0004002 #define CMD_6rd_prefixlength 0x0004003 #endif ipv6calc-0.99.1/lib/libipaddr.c0000664000175100017510000000466412524563152015230 0ustar peterpeter/* * Project : ipv6calc * File : libipaddr.c * Version : $Id: libipaddr.c,v 1.2 2015/05/13 05:51:38 ds6peter Exp $ * 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-0.99.1/lib/ipv6calctypes.h0000664000175100017510000004753012566314027016077 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calctypes.h * Version : $Id: ipv6calctypes.h,v 1.53 2015/08/23 09:53:27 ds6peter Exp $ * Copyright : 2002-2015 by Peter Bieringer * * 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_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_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", "" }, }; /* Possible action option map (required) */ /*@unused@*/ static const uint32_t ipv6calc_actionoptionmap[][3] = { { 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}, }; /* 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; #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-0.99.1/lib/librfc3041.c0000664000175100017510000000545312333643662015047 0ustar peterpeter/* * Project : ipv6calc * File : librfc3041.c * Version : $Id: librfc3041.c,v 1.16 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/librfc5569.h0000664000175100017510000000107412333643662015070 0ustar peterpeter/* * Project : ipv6calc * File : librfc5569.h * Version : $Id: librfc5569.h,v 1.2 2014/05/11 09:49:38 ds6peter Exp $ * Copyright : 2011 by Raphaël Assénat * 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-0.99.1/lib/ipv6calchelp.h0000664000175100017510000000340012410504755015644 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calchelp.h * Version : $Id: ipv6calchelp.h,v 1.21 2014/09/24 09:07:57 ds6peter Exp $ * 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-0.99.1/lib/libipv6addr.c0000664000175100017510000032274012550431466015503 0ustar peterpeter/* * Project : ipv6calc * File : libipv6addr.c * Version : $Id: libipv6addr.c,v 1.124 2015/07/12 09:28:22 ds6peter Exp $ * Copyright : 2001-2015 by Peter Bieringer except the parts taken from kernel source * * 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->scope = 0; ipv6addrp->typeinfo2 = 0; /* Clear valid flag */ ipv6addrp->flag_valid = 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=honor prefix length on addr1 TODO: add more support if required * returns: 0 = addr2 equal with addr1 or covered by addr1 */ int ipv6addr_compare(const ipv6calc_ipv6addr *ipv6addrp1, const ipv6calc_ipv6addr *ipv6addrp2, const uint16_t compare_flags) { int i; uint32_t mask; for (i = 0; i < 4; i++) { if ((ipv6addrp1->flag_prefixuse == 0) || ((ipv6addrp1->flag_prefixuse == 1) && (ipv6addrp1->prefixlength >= (i + 1) * 32))) { DEBUGPRINT_WA(DEBUG_libipv6addr, "compare dword %i (prefixuse=%d)", i, ipv6addrp1->flag_prefixuse); /* compare 32 bits */ if (ipv6addr_getdword(ipv6addrp1, i) != ipv6addr_getdword(ipv6addrp2, i)) { return(1); }; } else if (ipv6addrp1->flag_prefixuse == 1) { mask = ~(0xffffffffu >> (ipv6addrp1->prefixlength - i * 32)); DEBUGPRINT_WA(DEBUG_libipv6addr, "compare dword %i with mask 0x%08x", i, mask); if ((ipv6addr_getdword(ipv6addrp1, i) & mask) != (ipv6addr_getdword(ipv6addrp2, i) & mask)) { return(1); } else { return(0); }; }; }; 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); }; /* * 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 */ uint32_t ipv6addr_gettype(const ipv6calc_ipv6addr *ipv6addrp) { uint32_t type = 0, r; 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"); /* unspecified address */ if ( (st == 0) && (st1 == 0) && (st2 == 0) && (st3 == 0) ) { type |= IPV6_NEW_ADDR_UNSPECIFIED; return (type); }; /* address space information */ if ((st & 0xFE000000u) == 0xFC000000u) { /* FC00::/7 -> Unique Local IPv6 Unicast Address */ type |= IPV6_ADDR_ULUA; }; 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 { 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"); }; }; return (type); }; 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; }; return (type); }; /* special */ if ((st | st1) == 0) { if (st2 == 0) { if (st3 == 0) { type |= IPV6_ADDR_ANY; return (type); }; if (st3 == (uint32_t) 0x00000001u) { type |= IPV6_ADDR_LOOPBACK | IPV6_ADDR_UNICAST; return(type); // end, special address }; 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.scope = type; // store what we already have r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { if ((ipv4addr.scope & 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.scope = type; // store what we already have r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_DEFAULT); if (r == 0) { if ((ipv4addr.scope & IPV4_ADDR_ANONYMIZED) != 0) { type |= IPV6_ADDR_ANONYMIZED_IID; }; }; // check server IP ipv6addr_copy(&ipv6addr, ipv6addrp); ipv6addr.scope = type; // store what we already have r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, IPV6_ADDR_SELECT_IPV4_TEREDO_SERVER); if (r == 0) { if ((ipv4addr.scope & 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 */ if ((((st & 0xE0000000u) != 0x00000000u) && ((st & 0xE0000000u) != 0xE0000000u)) || ((st & 0xFC000000u) == 0xFC000000u)) { type |= IPV6_ADDR_UNICAST; if ((type & IPV6_NEW_ADDR_TEREDO) != 0) { /* teredo has no IID */ return (type); }; 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; }; 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; return (type); } 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; return (type); } 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; }; return (type); } 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; }; return (type); } 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; }; return (type); } 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; }; return (type); }; 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, type=%08xl", 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; }; 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, i; 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 (i = 0; i <= strlen(addrstring); i++) { /* including trailing \0 */ tempstring2[i] = tolower(addrstring[i]); } /* 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 (i = 0; i < strlen(tempstring); i++) { if (tempstring[i] == '-') { tempstring[i] = ':'; } else if (tempstring[i] == 's') { tempstring[i] = '%'; }; }; 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]; uint32_t scope = 0; 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]); scope = IPV6_ADDR_COMPATv4; } 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)); DEBUGPRINT_NA(DEBUG_libipv6addr, "Call ipv6addr_gettype"); scope = ipv6addr_gettype(ipv6addrp); DEBUGPRINT_WA(DEBUG_libipv6addr, "Got type info: 0x%08x", scope); ipv6addrp->scope = scope; DEBUGPRINT_WA(DEBUG_libipv6addr, "First word is: %04x, address info value: %08x", (unsigned int) ipv6addr_getword(ipv6addrp, 0), (unsigned int) scope); 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; int i; char tempstring[NI_MAXHOST], temp2string[NI_MAXHOST]; /* print array */ if ( ((ipv6addrp->scope & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED | IPV6_ADDR_IID_32_63_HAS_IPV4)) != 0) && ((ipv6addrp->scope & 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 (i =0; i < strlen(tempstring); i++) { if (tempstring[i] == ':') { tempstring[i] = '-'; }; }; 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->scope & (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->scope & (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->scope & (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; 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 (i = 0; i < strlen(resultstring); i++) { resultstring[i] = toupper(resultstring[i]); }; }; 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)); 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->scope); j = 0; snprintf(tempstring, sizeof(tempstring), "TYPE="); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { if ((ipv6addrp->scope & 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->scope & (IPV6_ADDR_ANONYMIZED_IID | IPV6_ADDR_ANONYMIZED_PREFIX)) != 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "Already anonymized IPv6 address - skip"); return(0); }; if ((ipv6addrp->scope & 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.scope = ipv4addr_gettype(&ipv4addr); 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->scope & 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.scope = ipv4addr_gettype(&ipv4addr); 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->scope & (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.scope = ipv4addr_gettype(&ipv4addr); 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->scope & (IPV6_ADDR_SITELOCAL | IPV6_ADDR_ULUA | IPV6_NEW_ADDR_AGU)) != 0) && ((ipv6addrp->scope & (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->scope & IPV6_NEW_ADDR_AGU) != 0) && ((ipv6addrp->scope & (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 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->scope & IPV6_NEW_ADDR_6BONE) != 0) { cc_index = COUNTRYCODE_INDEX_UNKNOWN_REGISTRY_MAP_MIN + IPV6_ADDR_REGISTRY_6BONE; as_num32 = 0; } 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 { 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->scope & IPV6_ADDR_SITELOCAL) != 0) && (mask_ipv6 < 10) ) { ipv6addr_setword(ipv6addrp, 0, ipv6addr_getword(ipv6addrp, 1) | 0xfec0u); } else if ( ((ipv6addrp->scope & 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->scope & (IPV6_ADDR_LINKLOCAL | IPV6_ADDR_SITELOCAL | IPV6_NEW_ADDR_AGU | IPV6_ADDR_ULUA )) != 0) || ((ipv6addrp->scope & (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) == (IPV6_ADDR_LOOPBACK | IPV6_NEW_ADDR_SOLICITED_NODE)) ) && ((ipv6addrp->scope & (IPV6_NEW_ADDR_TEREDO | IPV6_NEW_ADDR_ORCHID)) == 0) ) { /* Interface identifier included */ if ((ipv6addrp->scope & 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->scope & 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->scope & 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->scope & 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->scope & IPV6_NEW_ADDR_IID_ISATAP) != 0 ) { /* ISATAP address */ if ( (ipv6addrp->scope & 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->scope & IPV6_NEW_ADDR_IID_GLOBAL) != 0 ) { DEBUGPRINT_NA(DEBUG_libipv6addr, "ISATAP: store global bit"); iid[1] |= ANON_IID_ISATAP_SCOPE_GLOBAL; } else if ( (ipv6addrp->scope & 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->scope & 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->scope & 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->scope & 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->scope |= 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->scope |= 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; 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="; ipv6calc_ipv6addr ipv6addr; char resultstring[NI_MAXHOST]; int db = 0, addr = 0; 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, strlen(prefixaddreq)) == 0) { /* prefixaddr with = found */ DEBUGPRINT_WA(DEBUG_libipv6addr, "found 'addr=' prefix in token: %s", token); addr = 1; offset += strlen(prefixaddreq); } 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; }; }; }; 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); 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(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 '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) { uint32_t typeinfo; int result = 0, r, i; 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) { /* get type */ typeinfo = ipv6addr_gettype(ipv6addrp); DEBUGPRINT_WA(DEBUG_libipv6addr, "compare typeinfo against must_have: 0x%08x/0x%08x", typeinfo, filter->filter_typeinfo.typeinfo_must_have); if ((typeinfo & filter->filter_typeinfo.typeinfo_must_have) != filter->filter_typeinfo.typeinfo_must_have) { /* no match */ result = 1; } else { if ((typeinfo & filter->filter_typeinfo.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 = 0; for (i = 0; i < filter->filter_addr.addr_must_have_max; i++) { if (ipv6addr_compare(&filter->filter_addr.ipv6addr_must_have[i], ipv6addrp, 0) == 0) { /* match must_have */ r = 1; }; }; if (r == 0) { /* no match */ result = 1; }; }; 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++) { if (ipv6addr_compare(&filter->filter_addr.ipv6addr_may_not_have[i], ipv6addrp, 0) == 0) { /* match may_not_have */ r = 1; }; }; 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->scope; 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 ); }; }; ipv4addrp->scope = ipv4addr_gettype(ipv4addrp); 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->scope & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) { if ((ipv6addrp->scope & IPV6_ADDR_HAS_PUBLIC_IPV4_IN_PREFIX) == 0) { /* 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->scope & 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->scope & IPV6_ADDR_ANONYMIZED_IID) != 0) && ((ipv6addrp->scope & 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->scope & 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->scope & 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->scope & 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->scope & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) { if ((ipv6addrp->scope & 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->scope & 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->scope & 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->scope & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) \ && ((ipv6addrp->scope & 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-0.99.1/lib/ipv6calcoptions.c0000664000175100017510000004030412531113054016376 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calcoptions.c * Version : $Id: ipv6calcoptions.c,v 1.21 2015/05/26 15:50:04 ds6peter Exp $ * Copyright : 2013-2015 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, 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 (j = 0; j < *maxentries_p; j++) { if (strcmp(longopts[j].name, longopts_custom[i].name) == 0) { fprintf(stderr, "FATAL error, can't add options - DUPLICATE NAME FOUND: j=%d/%s i=%d/%s\n", j, longopts[j].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); /* 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: fprintf(stderr, " option 'mask-iid' is deprecated, please use 'mask-eui64'\n"); case CMD_ANON_MASK_EUI64: 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, j, result; 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 (j = 0; j < strlen(tempstring); j++) { switch(tempstring[j]) { case '-': tempstring[j] = '_'; break; default: tempstring[j] = toupper(tempstring[j]); 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-0.99.1/lib/libipaddr.h0000664000175100017510000000552112547144772015236 0ustar peterpeter/* * Project : ipv6calc * File : libipaddr.h * Version : $Id: libipaddr.h,v 1.3 2015/07/08 06:58:02 ds6peter Exp $ * Copyright : 2014-2014 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 } ipv6calc_ipaddr; /************** * Macros * ************/ /* ipv4addr ptr -> ipaddr */ #define CONVERT_IPV4ADDRP_IPADDR(ipv4addrp, ipaddr) \ 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->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.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->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.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.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-0.99.1/lib/librfc1924.h0000664000175100017510000000124612333643662015060 0ustar peterpeter/* * Project : ipv6calc * File : librfc1924.h * Version : $Id: librfc1924.h,v 1.2 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/ipv6calcoptions_common.h0000664000175100017510000001202512531113054017752 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calcoptions.h * Version : $Id: ipv6calcoptions_common.h,v 1.17 2015/05/26 15:50:04 ds6peter Exp $ * Copyright : 2013-2015 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 }, }; #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-0.99.1/lib/librfc1884.h0000664000175100017510000000133612333643662015065 0ustar peterpeter/* * Project : ipv6calc * File : librfc1884.h * Version : $Id: librfc1884.h,v 1.3 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/libmac.c0000664000175100017510000002137212362136213014512 0ustar peterpeter/* * Project : ipv6calc * File : libmac.c * Version : $Id: libmac.c,v 1.26 2014/07/18 06:19:55 ds6peter Exp $ * Copyright : 2001-2014 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) { 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-0.99.1/lib/libipv6addr.h0000664000175100017510000004730612532364170015507 0ustar peterpeter/* * Project : ipv6calc * File : libipv6addr.h * Version : $Id: libipv6addr.h,v 1.90 2015/05/30 16:42:32 ds6peter Exp $ * Copyright : 2001-2014 by Peter Bieringer except the parts taken from kernel source * * 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 * a909:ccca:aaaa:aaaC (C = 4-bit checksum) * ccc -> 10-bit Country Code mapping [A-Z]*[A-Z0-9] (936) * 0x3FE = unknown country * 0x3FD & 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 scope; /* address typeinfo/scope */ uint32_t typeinfo2; /* address typeinfo2 */ uint8_t bit_start; /* start of bit */ uint8_t bit_end; /* end of bit */ int flag_startend_use; /* =1 start or end of bit in use */ int flag_valid; /* address structure filled */ char scopeid[IPV6CALC_SCOPEID_STRING_MAX]; /* scope ID value */ int flag_scopeid; /* =1: scope ID value set */ uint8_t prefix2length; /* prefix 2 length (0-128) 8 bit (usage depends on typeinfo/typeinfo2)*/ } 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_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) */ // 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" }, }; /* 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); extern uint32_t ipv6addr_gettype2(const ipv6calc_ipv6addr *ipv6addrp); 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(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-0.99.1/lib/librfc2874.h0000664000175100017510000000137012333643662015063 0ustar peterpeter/* * Project : ipv6calc * File : librfc2874.h * Version : $Id: librfc2874.h,v 1.7 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/libifinet6.c0000664000175100017510000001125312333643662015324 0ustar peterpeter/* * Project : ipv6calc * File : libifinet6.c * Version : $Id: libifinet6.c,v 1.9 2014/05/11 09:49:38 ds6peter Exp $ * Copyright : 2001-2014 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).scope & 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-0.99.1/lib/librfc3056.h0000664000175100017510000000111512333643662015051 0ustar peterpeter/* * Project : ipv6calc * File : librfc3056.h * Version : $Id: librfc3056.h,v 1.2 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/librfc6052.c0000664000175100017510000000412612566314027015046 0ustar peterpeter/* * Project : ipv6calc * File : librfc6052.c * Version : $Id: librfc6052.c,v 1.1 2015/08/23 09:53:27 ds6peter Exp $ * Copyright : 2015-2015 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; ipv6addrp->scope = ipv6addr_gettype(ipv6addrp); 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->scope & 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; ipv4addrp->scope = ipv4addr_gettype(ipv4addrp); retval = 0; return (retval); }; ipv6calc-0.99.1/lib/libipv6calc.h0000664000175100017510000001345012553254377015502 0ustar peterpeter/* * Project : ipv6calc * File : libipv6calc.h * Version : $Id: libipv6calc.h,v 1.33 2015/07/20 20:24:31 ds6peter Exp $ * Copyright : 2001-2015 by Peter Bieringer * * Information: * Header file for libipv6calc.c */ #include "ipv6calc_inttypes.h" #include "ipv6calctypes.h" #include "libipaddr.h" #include "libmac.h" #include "databases/lib/libipv6calc_db_wrapper.h" #include "libipv4addr.h" #include "libipv6addr.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 */ #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) (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-0.99.1/lib/librfc1886.h0000664000175100017510000000135312333643662015066 0ustar peterpeter/* * Project : ipv6calc * File : librfc1886.h * Version : $Id: librfc1886.h,v 1.3 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/libeui64.h0000664000175100017510000000273412333643662014725 0ustar peterpeter/* * Project : ipv6calc * File : libeui64.h * Version : $Id: libeui64.h,v 1.7 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/librfc2874.c0000664000175100017510000002555512362136213015060 0ustar peterpeter/* * Project : ipv6calc * File : librfc2874.c * Version : $Id: librfc2874.c,v 1.18 2014/07/18 06:19:55 ds6peter Exp $ * 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-0.99.1/lib/libifinet6.h0000664000175100017510000000144312333643662015331 0ustar peterpeter/* * Project : ipv6calc * File : libifinet6.h * Version : $Id: libifinet6.h,v 1.2 2014/05/11 09:49:38 ds6peter Exp $ * 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-0.99.1/lib/libieee.h0000664000175100017510000000273712273475606014707 0ustar peterpeter/* * Project : ipv6calc * File : libieee.h * Version : $Id: libieee.h,v 1.14 2014/02/02 17:08:22 ds6peter Exp $ * 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-0.99.1/lib/ipv6calcoptions.h0000664000175100017510000000344212531113054016405 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calcoptions.h * Version : $Id: ipv6calcoptions.h,v 1.31 2015/05/26 15:50:04 ds6peter Exp $ * 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-0.99.1/lib/librfc5569.c0000664000175100017510000000361212531776057015070 0ustar peterpeter/* * Project : ipv6calc * File : librfc5569.c * Version : $Id: librfc5569.c,v 1.4 2015/05/29 05:42:07 ds6peter Exp $ * Copyright : 2011 by Raphaël Assénat * 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-0.99.1/lib/ipv6calctypes.c0000664000175100017510000000752612537360271016073 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calctypes.c * Version : $Id: ipv6calctypes.c,v 1.8 2015/06/14 20:14:49 ds6peter Exp $ * 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-0.99.1/lib/ipv6calc_inttypes.h0000664000175100017510000000137212513652530016737 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calc_inttypes.h * Version : $Id: ipv6calc_inttypes.h,v 1.3 2015/04/16 06:23:20 ds6peter Exp $ * 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-0.99.1/lib/librfc3041.h0000664000175100017510000000113212063312361015027 0ustar peterpeter/* * Project : ipv6calc * File : librfc3041.h * Version : $Id: librfc3041.h,v 1.5 2012/12/16 09:31:29 peter Exp $ * 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-0.99.1/lib/librfc3056.c0000664000175100017510000000406712333643662015055 0ustar peterpeter/* * Project : ipv6calc * File : librfc3056.c * Version : $Id: librfc3056.c,v 1.10 2014/05/11 09:49:38 ds6peter Exp $ * Copyright : 2001-2014 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; ipv6addrp->scope = ipv6addr_gettype(ipv6addrp); 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->scope & 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; ipv4addrp->scope = ipv4addr_gettype(ipv4addrp); retval = 0; return (retval); }; ipv6calc-0.99.1/lib/libipv6calcdebug.h0000664000175100017510000000546112415046063016500 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv6calcdebug.h * Version : $Id: libipv6calcdebug.h,v 1.23 2014/10/07 20:25:23 ds6peter Exp $ * 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-0.99.1/lib/librfc6052.h0000664000175100017510000000111212566314027015043 0ustar peterpeter/* * Project : ipv6calc * File : librfc6052.h * Version : $Id: librfc6052.h,v 1.1 2015/08/23 09:53:27 ds6peter Exp $ * 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-0.99.1/lib/Makefile.in0000664000175100017510000000514512566314027015173 0ustar peterpeter# Project : ipv6calc # File : lib/Makefile # Version : $Id: Makefile.in,v 1.19 2015/08/23 09:53:27 ds6peter Exp $ # 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) 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@ 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" endif test: ipv6calc-0.99.1/Makefile.in0000664000175100017510000001350212552746074014427 0ustar peterpeter# Project : ipv6calc # File : Makefile[.in] # Version : $Id: Makefile.in,v 1.90 2015/07/19 16:11:40 ds6peter Exp $ # 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-0.99.1/LICENSE0000664000175100017510000000200312523053402013341 0ustar peterpeter0. 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