ipv6calc-0.95.0/0000775000175100017510000000000012242072067012342 5ustar peterpeteripv6calc-0.95.0/examples/0000775000175100017510000000000012242072067014160 5ustar peterpeteripv6calc-0.95.0/examples/analog/0000775000175100017510000000000012242072067015421 5ustar peterpeteripv6calc-0.95.0/examples/analog/ipv6calc.tab0000664000175100017510000000045407453371400017624 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.95.0/examples/analog/analog-dist-combined.cfg0000664000175100017510000000366707453371400022077 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.95.0/examples/analog/analog-dist.cfg0000664000175100017510000000336607445066156020327 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.95.0/examples/analog/run_analog.sh0000775000175100017510000000327307453371400020113 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.95.0/examples/analog/analog-ipv6calc-descriptions.txt0000664000175100017510000001035007453371400023634 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.95.0/configure0000775000175100017510000052661212242071667014272 0ustar peterpeter#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for ipv6calc 0.95.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: ipv6calc@deepspace6.net about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ipv6calc' PACKAGE_TARNAME='ipv6calc' PACKAGE_VERSION='0.95.0' PACKAGE_STRING='ipv6calc 0.95.0' PACKAGE_BUGREPORT='ipv6calc@deepspace6.net' PACKAGE_URL='http://www.deepspace6.net/projects/ipv6calc.html' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS DYNLOAD_LIB GEOIP_DYN_LIB GEOIP_DB GEOIP_LIB GEOIP_INCLUDE IP2LOCATION_DYN_LIB IP2LOCATION_DB IP2LOCATION_LIB IP2LOCATION_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_dynamic_load enable_db_ieee enable_db_ipv4 enable_db_ipv6 enable_ip2location with_ip2location_headers with_ip2location_lib with_ip2location_static with_ip2location_dynamic with_ip2location_db with_ip2location_dyn_lib enable_geoip with_geoip_headers with_geoip_lib with_geoip_static with_geoip_dynamic with_geoip_db with_geoip_dyn_lib with_geoip_ipv6_compat ' 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.95.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/ipv6calc] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ipv6calc 0.95.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-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 database (default: enabled) --disable-db-ipv6 Disable built-in IPv6 database (default: enabled) --enable-ip2location Enable IP2Location support (default: disabled) --enable-geoip Enable GeoIP support (default: disabled) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-ip2location-headers=DIR IP2Location include files location --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-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) 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.95.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------- ## ## Report this to ipv6calc@deepspace6.net ## ## -------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel 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.95.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu $as_echo "#define COPYRIGHT_YEAR \"2013\"" >>confdefs.h COPYRIGHT_YEAR=2013 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 ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" if test "x$ac_cv_func_getopt_long" = xyes; then : else 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 ENABLE_BUNDLED_GETOPT=1 fi geoip_db_default="/usr/share/GeoIP" ip2location_db_default="/usr/share/IP2Location" geoip_dyn_lib_default="libGeoIP.so.1" ip2location_dyn_lib_default="libIP2Location.so" 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; 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="$enableval" else DB_IEEE="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="$enableval" else DB_IPV4="yes" fi if test "$DB_IPV4" = "yes"; then $as_echo "#define SUPPORT_DB_IPV4 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="$enableval" else DB_IPV6="yes" fi if test "$DB_IPV6" = "yes"; then $as_echo "#define SUPPORT_DB_IPV6 1" >>confdefs.h fi # Check whether --enable-ip2location was given. if test "${enable_ip2location+set}" = set; then : enableval=$enable_ip2location; IP2LOCATION="$enableval" else IP2LOCATION="no" fi # Check whether --with-ip2location-headers was given. if test "${with_ip2location_headers+set}" = set; then : withval=$with_ip2location_headers; IP2LOCATION_INCLUDE="-I$withval" fi # Check whether --with-ip2location-lib was given. if test "${with_ip2location_lib+set}" = set; then : withval=$with_ip2location_lib; IP2LOCATION_LIB="-L$withval $IP2LOCATION_LIB" fi # Check whether --with-ip2location-static was given. if test "${with_ip2location_static+set}" = set; then : withval=$with_ip2location_static; if test "$withval" != "no"; then IP2LOCATION_LIB="-Wl,-Bstatic $IP2LOCATION_LIB -Wl,-Bdynamic" fi fi # Check whether --with-ip2location-dynamic was given. if test "${with_ip2location_dynamic+set}" = set; then : withval=$with_ip2location_dynamic; if test "$enableval" != "no"; then IP2LOCATION_DYN="$enableval" fi else true fi # Check whether --with-ip2location-db was given. if test "${with_ip2location_db+set}" = set; then : withval=$with_ip2location_db; ip2location_db="$withval" 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="$withval" else ip2location_dyn_lib=$ip2location_dyn_lib_default fi if test "$IP2LOCATION" = "yes"; then CPPFLAGS="$CPPFLAGS $IP2LOCATION_INCLUDE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** IP2Location support requested" >&5 $as_echo "*** IP2Location support requested" >&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 : 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP2Location_open in -lIP2Location" >&5 $as_echo_n "checking for IP2Location_open in -lIP2Location... " >&6; } if ${ac_cv_lib_IP2Location_IP2Location_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lIP2Location $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 : ac_cv_lib_IP2Location_IP2Location_open=yes else ac_cv_lib_IP2Location_IP2Location_open=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_IP2Location_IP2Location_open" >&5 $as_echo "$ac_cv_lib_IP2Location_IP2Location_open" >&6; } if test "x$ac_cv_lib_IP2Location_IP2Location_open" = xyes; then : $as_echo "#define SUPPORT_IP2LOCATION 1" >>confdefs.h else as_fn_error $? "IP2Location library header files were found but the library was not found" "$LINENO" 5 fi IP2LOCATION_LIB="-lIP2Location" LDFLAGS="$LDFLAGS $IP2LOCATION_LIB" if test "$IP2LOCATION_STATIC" = "yes"; then $as_echo "#define SUPPORT_IP2LOCATION_STATIC 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP2Location_open in -lIP2Location" >&5 $as_echo_n "checking for IP2Location_open in -lIP2Location... " >&6; } if ${ac_cv_lib_IP2Location_IP2Location_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lIP2Location $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 : ac_cv_lib_IP2Location_IP2Location_open=yes else ac_cv_lib_IP2Location_IP2Location_open=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_IP2Location_IP2Location_open" >&5 $as_echo "$ac_cv_lib_IP2Location_IP2Location_open" >&6; } if test "x$ac_cv_lib_IP2Location_IP2Location_open" = xyes; 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" "$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 # Check whether --enable-geoip was given. if test "${enable_geoip+set}" = set; then : enableval=$enable_geoip; if test "$enableval" != "no"; then GEOIP="$enableval" fi else GEOIP="no" fi # Check whether --with-geoip-headers was given. if test "${with_geoip_headers+set}" = set; then : withval=$with_geoip_headers; GEOIP_INCLUDE="-I$withval" fi # Check whether --with-geoip-lib was given. if test "${with_geoip_lib+set}" = set; then : withval=$with_geoip_lib; GEOIP_LIB="-L$withval $GEOIP_LIB" fi # Check whether --with-geoip-static was given. if test "${with_geoip_static+set}" = set; then : withval=$with_geoip_static; if test "$withval" != "no"; then GEOIP_STATIC="$enableval" GEOIP_LIB="-Wl,-Bstatic $GEOIP_LIB -Wl,-Bdynamic" fi else GEOIP_STATIC="no" fi # Check whether --with-geoip-dynamic was given. if test "${with_geoip_dynamic+set}" = set; then : withval=$with_geoip_dynamic; if test "$enableval" != "no"; then GEOIP_DYN="$enableval" fi else true fi # Check whether --with-geoip-db was given. if test "${with_geoip_db+set}" = set; then : withval=$with_geoip_db; geoip_db="$withval" 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="$withval" 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 "$withval" != "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 CPPFLAGS="$CFLAGS $GEOIP_INCLUDE" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP support requested" >&5 $as_echo "*** GeoIP support requested" >&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 : else as_fn_error $? "GeoIP library header files not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** GeoIP db: $geoip_db" >&5 $as_echo "*** GeoIP db: $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 GEOIP_LIB="-lGeoIP" LDFLAGS="$LDFLAGS $GEOIP_LIB" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_open in -lGeoIP" >&5 $as_echo_n "checking for GeoIP_open in -lGeoIP... " >&6; } if ${ac_cv_lib_GeoIP_GeoIP_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGeoIP $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 : ac_cv_lib_GeoIP_GeoIP_open=yes else ac_cv_lib_GeoIP_GeoIP_open=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_GeoIP_GeoIP_open" >&5 $as_echo "$ac_cv_lib_GeoIP_GeoIP_open" >&6; } if test "x$ac_cv_lib_GeoIP_GeoIP_open" = xyes; 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 were found but the library was not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_country_code_by_ipnum_v6 in -lGeoIP" >&5 $as_echo_n "checking for GeoIP_country_code_by_ipnum_v6 in -lGeoIP... " >&6; } if ${ac_cv_lib_GeoIP_GeoIP_country_code_by_ipnum_v6+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGeoIP $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 : ac_cv_lib_GeoIP_GeoIP_country_code_by_ipnum_v6=yes else ac_cv_lib_GeoIP_GeoIP_country_code_by_ipnum_v6=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_GeoIP_GeoIP_country_code_by_ipnum_v6" >&5 $as_echo "$ac_cv_lib_GeoIP_GeoIP_country_code_by_ipnum_v6" >&6; } if test "x$ac_cv_lib_GeoIP_GeoIP_country_code_by_ipnum_v6" = xyes; 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 header files 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 header files 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_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_lib_version in -lGeoIP" >&5 $as_echo_n "checking for GeoIP_lib_version in -lGeoIP... " >&6; } if ${ac_cv_lib_GeoIP_GeoIP_lib_version+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGeoIP $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 : ac_cv_lib_GeoIP_GeoIP_lib_version=yes else ac_cv_lib_GeoIP_GeoIP_lib_version=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_GeoIP_GeoIP_lib_version" >&5 $as_echo "$ac_cv_lib_GeoIP_GeoIP_lib_version" >&6; } if test "x$ac_cv_lib_GeoIP_GeoIP_lib_version" = xyes; 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_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_country_code_by_addr_v6 in -lGeoIP" >&5 $as_echo_n "checking for GeoIP_country_code_by_addr_v6 in -lGeoIP... " >&6; } if ${ac_cv_lib_GeoIP_GeoIP_country_code_by_addr_v6+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGeoIP $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 : ac_cv_lib_GeoIP_GeoIP_country_code_by_addr_v6=yes else ac_cv_lib_GeoIP_GeoIP_country_code_by_addr_v6=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_GeoIP_GeoIP_country_code_by_addr_v6" >&5 $as_echo "$ac_cv_lib_GeoIP_GeoIP_country_code_by_addr_v6" >&6; } if test "x$ac_cv_lib_GeoIP_GeoIP_country_code_by_addr_v6" = xyes; 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_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_country_name_by_addr_v6 in -lGeoIP" >&5 $as_echo_n "checking for GeoIP_country_name_by_addr_v6 in -lGeoIP... " >&6; } if ${ac_cv_lib_GeoIP_GeoIP_country_name_by_addr_v6+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGeoIP $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 : ac_cv_lib_GeoIP_GeoIP_country_name_by_addr_v6=yes else ac_cv_lib_GeoIP_GeoIP_country_name_by_addr_v6=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_GeoIP_GeoIP_country_name_by_addr_v6" >&5 $as_echo "$ac_cv_lib_GeoIP_GeoIP_country_name_by_addr_v6" >&6; } if test "x$ac_cv_lib_GeoIP_GeoIP_country_name_by_addr_v6" = xyes; 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_echo "$as_me:${as_lineno-$LINENO}: checking for GeoIP_cleanup in -lGeoIP" >&5 $as_echo_n "checking for GeoIP_cleanup in -lGeoIP... " >&6; } if ${ac_cv_lib_GeoIP_GeoIP_cleanup+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGeoIP $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 : ac_cv_lib_GeoIP_GeoIP_cleanup=yes else ac_cv_lib_GeoIP_GeoIP_cleanup=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_GeoIP_GeoIP_cleanup" >&5 $as_echo "$ac_cv_lib_GeoIP_GeoIP_cleanup" >&6; } if test "x$ac_cv_lib_GeoIP_GeoIP_cleanup" = xyes; 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 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 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 contrib/ipv6calc.spec 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.95.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to . ipv6calc home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ ipv6calc config.status 0.95.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "md5/Makefile") CONFIG_FILES="$CONFIG_FILES md5/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "getopt/Makefile") CONFIG_FILES="$CONFIG_FILES getopt/Makefile" ;; "ipv6calc/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6calc/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "databases/lib/Makefile") CONFIG_FILES="$CONFIG_FILES databases/lib/Makefile" ;; "ipv6logconv/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6logconv/Makefile" ;; "ipv6loganon/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6loganon/Makefile" ;; "ipv6logstats/Makefile") CONFIG_FILES="$CONFIG_FILES ipv6logstats/Makefile" ;; "contrib/ipv6calc.spec") CONFIG_FILES="$CONFIG_FILES contrib/ipv6calc.spec" ;; "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 ipv6calc-0.95.0/README.BUILDING-GeoIP0000664000175100017510000000205012221536047015354 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.95.0/configure.in0000664000175100017510000003226612242071667014671 0ustar peterpeterdnl Project : ipv6calc dnl File : configure.in dnl Version : $Id: configure.in,v 1.77 2013/11/17 07:43:51 ds6peter Exp $ dnl Copyright: 2001-2013 by Peter Bieringer dnl Process this file with autoconf to produce a configure script. AC_INIT(ipv6calc, 0.95.0, ipv6calc@deepspace6.net, ipv6calc, http://www.deepspace6.net/projects/ipv6calc.html) AC_DEFINE(COPYRIGHT_YEAR, "2013", [Copyright year]) COPYRIGHT_YEAR=2013 AC_SUBST(COPYRIGHT_YEAR) 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 Check for getopt AC_CHECK_FUNC(getopt_long, [], [ AC_LIBOBJ(../getopt/getopt) AC_LIBOBJ(../getopt/getopt1) GETOPT_INCLUDE=-I../getopt ENABLE_BUNDLED_GETOPT=1 ]) AC_SUBST(GETOPT_INCLUDE) AC_SUBST(ENABLE_BUNDLED_GETOPT) dnl ************************************************* dnl defaults dnl ************************************************* geoip_db_default="/usr/share/GeoIP" ip2location_db_default="/usr/share/IP2Location" geoip_dyn_lib_default="libGeoIP.so.1" ip2location_dyn_lib_default="libIP2Location.so" 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)]), [ DYNAMIC_LOAD="no" ], [ DYNAMIC_LOAD="yes" ],[ ]) 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="$enableval" ],[ DB_IEEE="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 database (default: enabled)]), [ DB_IPV4="$enableval" ],[ DB_IPV4="yes" ]) if test "$DB_IPV4" = "yes"; then AC_DEFINE(SUPPORT_DB_IPV4, 1, Define if you want IPv4 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 database (default: enabled)]), [ DB_IPV6="$enableval" ], [ DB_IPV6="yes" ]) if test "$DB_IPV6" = "yes"; then AC_DEFINE(SUPPORT_DB_IPV6, 1, Define if you want IPv6 database included.) fi dnl ************************************************* dnl IP2Location support dnl ************************************************* AC_ARG_ENABLE([ip2location], AS_HELP_STRING([--enable-ip2location], [Enable IP2Location support (default: disabled)]), [ IP2LOCATION="$enableval" ],[ IP2LOCATION="no" ]) AC_ARG_WITH([ip2location-headers], AS_HELP_STRING([--with-ip2location-headers=DIR], [IP2Location include files location]), [ IP2LOCATION_INCLUDE="-I$withval" ]) AC_ARG_WITH([ip2location-lib], AS_HELP_STRING([--with-ip2location-lib=FILE], [IP2Location library location]), [ IP2LOCATION_LIB="-L$withval $IP2LOCATION_LIB" ]) AC_ARG_WITH([ip2location-static], AS_HELP_STRING([--with-ip2location-static], [Explicitly link IP2Location statically (default=no)]), [ if test "$withval" != "no"; then IP2LOCATION_LIB="-Wl,-Bstatic $IP2LOCATION_LIB -Wl,-Bdynamic" fi ]) AC_ARG_WITH([ip2location-dynamic], AS_HELP_STRING([--with-ip2location-dynamic], [Enable use of dynamic loading of IP2Location library (default=no)]), [ if test "$enableval" != "no"; then IP2LOCATION_DYN="$enableval" fi ],[ true ]) 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="$withval" ], [ 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="$withval" ], [ ip2location_dyn_lib=$ip2location_dyn_lib_default ]) if test "$IP2LOCATION" = "yes"; then CPPFLAGS="$CPPFLAGS $IP2LOCATION_INCLUDE" AC_MSG_RESULT([*** IP2Location support requested]) AC_CHECK_HEADER(IP2Location.h,, [ 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 AC_CHECK_LIB(IP2Location,IP2Location_open, [ AC_DEFINE(SUPPORT_IP2LOCATION, 1, Define if you want IP2Location support.) ], [ AC_MSG_ERROR([IP2Location library header files were found but the library was not found]) ]) IP2LOCATION_LIB="-lIP2Location" LDFLAGS="$LDFLAGS $IP2LOCATION_LIB" 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 AC_CHECK_LIB(IP2Location, 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]) ]) 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 AC_SUBST(IP2LOCATION_INCLUDE) AC_SUBST(IP2LOCATION_LIB) AC_SUBST(IP2LOCATION_DB) AC_SUBST(IP2LOCATION_DYN_LIB) dnl ************************************************* dnl GeoIP support dnl ************************************************* AC_ARG_ENABLE([geoip], AS_HELP_STRING([--enable-geoip], [Enable GeoIP support (default: disabled)]), [ if test "$enableval" != "no"; then GEOIP="$enableval" fi ],[ GEOIP="no" ]) AC_ARG_WITH([geoip-headers], AS_HELP_STRING([--with-geoip-headers=DIR], [GeoIP include files location]), [ GEOIP_INCLUDE="-I$withval" ]) AC_ARG_WITH([geoip-lib], AS_HELP_STRING([--with-geoip-lib=DIR], [GeoIP library location]), [ GEOIP_LIB="-L$withval $GEOIP_LIB" ]) AC_ARG_WITH([geoip-static], AS_HELP_STRING([--with-geoip-static], [Explicitly link GeoIP statically (default=no)]), [ if test "$withval" != "no"; then GEOIP_STATIC="$enableval" GEOIP_LIB="-Wl,-Bstatic $GEOIP_LIB -Wl,-Bdynamic" fi ],[ GEOIP_STATIC="no" ]) AC_ARG_WITH([geoip-dynamic], AS_HELP_STRING([--with-geoip-dynamic], [Enable use of dynamic loading of GeoIP library (default=no)]), [ if test "$enableval" != "no"; then GEOIP_DYN="$enableval" fi ],[ true ]) AC_ARG_WITH([geoip-db], AS_HELP_STRING([--with-geoip-db=DIR], [Use specified GeoIP database directory, default: /usr/share/GeoIP]), [ geoip_db="$withval" ], [ 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="$withval" ], [ 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 "$withval" != "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 CPPFLAGS="$CFLAGS $GEOIP_INCLUDE" AC_MSG_RESULT([*** GeoIP support requested]) AC_CHECK_HEADER(GeoIP.h,, [ AC_MSG_ERROR([GeoIP library header files not found]) ]) AC_MSG_RESULT([*** GeoIP db: $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 GEOIP_LIB="-lGeoIP" LDFLAGS="$LDFLAGS $GEOIP_LIB" AC_CHECK_LIB(GeoIP, 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 were found but the library was not found]) ]) AC_CHECK_LIB(GeoIP, 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 header files 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, 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, 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, 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, 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 AC_SUBST(GEOIP_INCLUDE) AC_SUBST(GEOIP_LIB) AC_SUBST(GEOIP_DB) AC_SUBST(GEOIP_DYN_LIB) 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 Files to create from .in dnl ************************************************* AC_OUTPUT([ Makefile md5/Makefile tools/Makefile getopt/Makefile ipv6calc/Makefile lib/Makefile man/Makefile databases/lib/Makefile ipv6logconv/Makefile ipv6loganon/Makefile ipv6logstats/Makefile contrib/ipv6calc.spec VERSION ]) ipv6calc-0.95.0/COPYING0000664000175100017510000004313211713462676013413 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.95.0/CREDITS0000664000175100017510000000400111654434453013364 0ustar peterpeterCredits to * 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, 2011-09-14 ipv6calc-0.95.0/ChangeLog0000664000175100017510000013172012242071667014125 0ustar peterpeter/* * $Id: ChangeLog,v 1.308 2013/11/17 07:43:51 ds6peter Exp $ */ Info: PB = Peter Bieringer NT = Niko Tyni ESR = Eric S. Raymond PV = Peter Volkov -------------------------------------------------------------------- 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.95.0/autogen.sh0000775000175100017510000000545312231013246014342 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : autogen.sh # Version : $Id: autogen.sh,v 1.26 2013/10/20 17:45:10 ds6peter Exp $ # Copyright : 2003-2013 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" ;; '--geoip'|'-g') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-geoip" ;; '--geoip-dyn'|'-G') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-geoip --with-geoip-dynamic" ;; '--ip2location'|'-i') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-ip2location" ;; '--ip2location-dyn'|'-I') shift OPTIONS_CONFIGURE="$OPTIONS_CONFIGURE --enable-ip2location --with-ip2location-dynamic" ;; '--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" ;; '-W') shift EXTRA_CFLAGS="-Werror" ;; '-?'|'-h'|'--help') echo "Supported options:" echo " -?|-h|--help : this help" echo " -W : use extra CFLAGS=-Werror" echo " -n|--no-make : stop before running 'make'" echo " -a|--all : enable GeoIP and IP2Location 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 " --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" exit 1 esac done 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 $*" ./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 export EXTRA_CFLAGS echo "*** run: make" make || exit 1 echo "*** run: make test" make test || exit 1 echo echo "For installing the binaries, type: make install" ipv6calc-0.95.0/tools/0000775000175100017510000000000012242072067013502 5ustar peterpeteripv6calc-0.95.0/tools/Makefile.in0000664000175100017510000000246611375246002015555 0ustar peterpeter# Project : ipv6calc/ipv6calc # File : Makefile[.in] # Version : $Id: Makefile.in,v 1.2 2010/05/20 14:49:38 peter Exp $ # Copyright : 2006 by Peter Bieringer # # Information: # Makefile for various tools # prefix = /usr/local exec_prefix = ${prefix} # 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: registry-assignment-to-list .c.o: $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< $(OBJS): ../config.h libipv6calc.a: cd ../ && ${MAKE} lib-make registry-assignment-to-list: $(OBJS) libipv6calc.a $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) -o registry-assignment-to-list $(OBJS) $(GETOBJS) -lipv6calc -L../lib/ $(LDFLAGS) distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f registry-assignment-to-list *.o test: splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: ipv6calc-0.95.0/tools/GeoIP-update.sh0000664000175100017510000000256412241723326016270 0ustar peterpeter#!/bin/bash # # Simple shell script to update GeoIP database files # # Project : ipv6calc/GeoIP # File : GeoIP-update.sh # Version : $Id: GeoIP-update.sh,v 1.2 2013/11/16 17:09:42 ds6peter Exp $ # Copyright : 2012-2013 by Peter Bieringer # License : GNU GPL version 2 GEOIP_DAT_DIR="${GEOIP_DAT_DIR:-/var/local/share/GeoIP/}" 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" 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_dest="$GEOIP_DAT_DIR/`basename "$file"`" 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" done ipv6calc-0.95.0/tools/registry-assignment-to-list.c0000664000175100017510000000566310406565745021301 0ustar peterpeter #include #include #include #include #include "libipv4addr.h" #include "libipv6addr.h" #include "librfc1884.h" #include "ipv6calctypes.h" #include "libipv6calcdebug.h" #include "../databases/ipv4-assignment/dbipv4addr_assignment.h" #include "../databases/ipv6-assignment/dbipv6addr_assignment.h" //long int ipv6calc_debug = DEBUG_libipv4addr; long int ipv6calc_debug = 0; /* main */ #define DEBUG_function_name "registry-assignment-to-list/main" int main(int argc,char *argv[]) { char resultstring[NI_MAXHOST] = ""; int retval; /* used structures */ ipv6calc_ipv4addr ipv4addr; ipv6calc_ipv6addr ipv6addr; int type = 0; /* default */ char registry[NI_MAXHOST] = ""; int i; /* Fetch the command-line arguments. */ while ((i = getopt(argc, argv, "d46r:")) != EOF) { switch (i) { case -1: break; case 'd': ipv6calc_debug = atol(optarg); break; case '4': type = 4; break; case '6': type = 6; break; case 'r': snprintf(registry, sizeof(registry) - 1, "%s", optarg); break; default: fprintf(stderr, "Usage: -4|6 -r [-d ]\n"); break; }; }; if (registry == NULL || strlen(registry) == 0) { fprintf(stderr, "missing registry (option -r)\n"); exit(EXIT_FAILURE); }; if (type != 4 && type != 6) { fprintf(stderr, "missing address selection (option -4|6)\n"); exit(EXIT_FAILURE); }; /* clear address structures */ ipv4addr_clearall(&ipv4addr); ipv6addr_clearall(&ipv6addr); printf ("# Selected registry: %s\n", registry); printf ("# Selected IP address version: IPv%d\n", type); if (type == 4) { for (i = 0; i < (int) ( sizeof(dbipv4addr_assignment) / sizeof(dbipv4addr_assignment[0])); i++) { if (strcmp(registry, dbipv4addr_assignment[i].string_registry) != 0) { continue; }; ipv4addr_setdword(&ipv4addr, dbipv4addr_assignment[i].ipv4addr); retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, resultstring, 0); //printf("%s/%d %08x %08x\ %08x\n", resultstring, j, dbipv4addr_assignment[i].ipv4addr, dbipv4addr_assignment[i].ipv4mask, ipv4addr.in_addr.s_addr); printf("%s/%d\n", resultstring, dbipv4addr_assignment[i].prefixlength); // break; }; } else if (type == 6) { for (i = 0; i < (int) ( sizeof(dbipv6addr_assignment) / sizeof(dbipv6addr_assignment[0])); i++) { if (strcmp(registry, dbipv6addr_assignment[i].string_registry) != 0) { continue; }; ipv6addr_setdword(&ipv6addr, 0, dbipv6addr_assignment[i].ipv6addr_00_31); ipv6addr_setdword(&ipv6addr, 1, dbipv6addr_assignment[i].ipv6addr_32_63); retval = librfc1884_ipv6addrstruct_to_compaddr(&ipv6addr, resultstring, FORMATOPTION_printcompressed); //printf("%s/%d %08x %08x\ %08x\n", resultstring, j, dbipv4addr_assignment[i].ipv4addr, dbipv4addr_assignment[i].ipv4mask, ipv4addr.in_addr.s_addr); printf("%s/%d\n", resultstring, dbipv6addr_assignment[i].prefixlength); // break; }; }; }; ipv6calc-0.95.0/tools/IP2Location-update.sh0000664000175100017510000000577112241723326017413 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,v 1.3 2013/11/16 17:09:42 ds6peter Exp $ # Copyright : 2012-2013 by Peter Bieringer # License : GNU GPL version 2 # Definitions: IP2LOCATION_DAT_DIR="${IP2LOCATION_DAT_DIR:-/var/local/share/IP2Location/}" IP2LOCATION_DAT_FILES="IPV6BIN" IP2LOCATION_DAT_FILES_SAMPLE="20" # source credentials (must provide login= and password=) if [ -f "$HOME/.ip2location" ]; then source "$HOME/.ip2location" else echo "ERROR : missing credential file: $HOME/.ip2location" exit 1 fi for token in login password; do if [ -z "${!token}" ]; then echo "ERROR : credential file has not set: $token ($HOME/.ip2location)" exit 1 fi done IP2LOCATION_DAT_URL_BASE="http://www.ip2location.com/download?login=$login&password=$password" IP2LOCATION_DAT_URL_BASE_SAMPLE="http://www.ip2location.com/downloads" if [ ! -d "$IP2LOCATION_DAT_DIR" ]; then echo "ERROR : missing directory: $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 file in $IP2LOCATION_DAT_FILES; do file_dest="$IP2LOCATION_DAT_DIR/`basename "$file".zip`" echo "INFO : try to download file: $file ($file_dest)" wget -q -O "$file_dest" "$IP2LOCATION_DAT_URL_BASE&productcode=$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)" if ! file "$file_dest" | grep -q "Zip archive data"; then echo "ERROR : downloaded file is not a ZIP archive: $file_dest" 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" done # Download and unpack sample files for number in $IP2LOCATION_DAT_FILES_SAMPLE; do file_dest="$IP2LOCATION_DAT_DIR/sample.bin.db$number.zip" echo "INFO : try to download sample db: $number ($file_dest)" wget -q -O "$file_dest" "$IP2LOCATION_DAT_URL_BASE_SAMPLE/sample.bin.db$number.zip" if [ $? -ne 0 ]; then echo "ERROR : download of file not successful: DB$number ($file_dest)" continue fi echo "INFO : download of file successful: DB$number ($file_dest)" if ! file "$file_dest" | grep -q "Zip archive data"; then echo "ERROR : downloaded file is not a ZIP archive: $file_dest" 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" done # Adjust permissions chmod 644 $IP2LOCATION_DAT_DIR/*.BIN ipv6calc-0.95.0/CHANGES0000664000175100017510000000505012235230307013330 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.95.0/USAGE0000664000175100017510000000261311563737010013134 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.95.0/md5/0000775000175100017510000000000012242072067013027 5ustar peterpeteripv6calc-0.95.0/md5/md5.h0000664000175100017510000001061510140710375013664 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.95.0/md5/Makefile.in0000664000175100017510000000053111126661333015073 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.95.0/md5/md5.c0000664000175100017510000003011712132313652013656 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.95.0/md5/README0000664000175100017510000000045110140710375013703 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.95.0/README.BUILDING-IP2LOCATION0000664000175100017510000000555712221536047016153 0ustar peterpeterBUILDING 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.95.0/ipv6loganon/0000775000175100017510000000000012242072067014604 5ustar peterpeteripv6calc-0.95.0/ipv6loganon/test_ipv6loganon.sh0000775000175100017510000003015212234263111020436 0ustar peterpeter#!/bin/bash # # Project : ipv6calc # File : test_ipv6loganon.sh # Version : $Id: test_ipv6loganon.sh,v 1.23 2013/10/30 20:04:25 ds6peter Exp $ # Copyright : 2007-2013 by Peter Bieringer # # Test program for "ipv6loganon" 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 testscenarios_standard() { # Address cat <&2 if [ "$1" != "bulk" ]; then 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 echo "IN : $input" echo "CHECK : $result" # get result output="`echo "$input" | ./ipv6loganon -q`" echo "OUT : $output" retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon'!" exit 1 fi # Check result if [ "$result" != "*" ]; then if [ "$output" != "$result" ]; then echo "RESULT : fail" exit 1 fi fi echo "RESULT : ok" echo done retval=$? if [ $retval -eq 0 ]; then # special tests 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 echo "IN : $input" echo "OPTIONS: $options" echo "CHECK : $result" # get result output="`echo "$input" | ./ipv6loganon -q $options`" echo "OUT : $output" retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6loganon'!" exit 1 fi # Check result if [ "$result" != "*" ]; then if [ "$output" != "$result" ]; then echo "RESULT : fail" exit 1 fi fi echo "RESULT : ok" echo done retval=$? 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 local options="$*" echo "INFO : run 'ipv6loganon' reliability tests with options: $options" >&2 list="`testscenarios_standard | awk '{ print $1 }'`" list="$list `testscenarios_special | awk '{ print $1 }'`" sortlist="`echo "$list" | sort -u`" 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:"`" 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 statistics: $entry_anon" return 1 fi done } run_loganon_options_tests() { echo "Run 'ipv6loganon' anonymization option tests..." 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 }'`" 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_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 } #### 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.95.0/ipv6loganon/ipv6loganon.c0000664000175100017510000003542412234263111017213 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganon.c * Version : $Id: ipv6loganon.c,v 1.27 2013/10/30 20:04:25 ds6peter Exp $ * Copyright : 2007-2013 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; 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 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 */ #define DEBUG_function_name "ipv6loganon/main" int main(int argc,char *argv[]) { int i, lop, result; uint32_t command = 0; /* options */ struct option longopts[MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; ipv6calc_quiet = 1; //default for ipv6loganon /* initialize debug value from environment for bootstrap debugging */ ipv6calc_debug_from_env(); /* 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); }; /* Fetch the command-line arguments. */ while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: Parsing option: 0x%08x\n", __FILE__, __func__, i); }; /* 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 'V': ipv6calc_quiet = 0; 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) - 1, "%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) - 1, "%s", "w"); break; case 'a': snprintf(file_out_mode, sizeof(file_out_mode) - 1, "%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_printhelp) != 0) { ipv6loganon_printhelp(); exit(EXIT_FAILURE); }; if ((command & CMD_printversion) != 0) { if ((command & CMD_printversion_verbose) != 0) { printversion_verbose(((command & CMD_printversion_verbose2) !=0) ? LEVEL_VERBOSE2 : LEVEL_VERBOSE); } else { printversion(); }; exit(EXIT_SUCCESS); }; /* 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) { if (ipv6calc_debug > 0) { fprintf(stderr, "Output file specified: %s\n", 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 { if (ipv6calc_debug > 0) { if (strcmp(file_out_mode, "a") == 0) { fprintf(stderr, "Output file opened successfully in append mode: %s\n", file_out); } else { fprintf(stderr, "Output file opened successfully in write mode: %s\n", file_out); }; }; file_out_flag = 2; }; }; lineparser(); if (file_out_flag == 2) { if (ipv6calc_debug > 0) { fprintf(stderr, "Output file is closed now: %s\n", file_out); }; fflush(FILE_OUT); fclose(FILE_OUT); } else { fflush(stdout); }; exit(EXIT_SUCCESS); }; #undef DEBUG_function_name /* * Line parser */ #define DEBUG_function_name "ipv6loganon/lineparser" 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"); }; }; if (ipv6calc_debug == 1) { fprintf(stderr, "Line: %d\r", 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; }; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Got line: '%s'\n", DEBUG_function_name, 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) - 1, "%s", charptr); if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Token 1: '%s'\n", DEBUG_function_name, token); }; /* call anonymizer now */ retval = anonymizetoken(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; }; #undef DEBUG_function_name /* * Anonymize token */ #define DEBUG_function_name "ipv6loganon/anonymizetoken" static int anonymizetoken(char *resultstring, 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; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Token: '%s'\n", DEBUG_function_name, 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 */ if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: look for key=%s\n", token); }; if (strcmp(cache_lru_key_token[cache_lru_last - 1], token) == 0) { snprintf(resultstring, LINEBUFFER - 1, "%s", cache_lru_value[cache_lru_last - 1]); cache_lru_statistics[0]++; if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: hit last line=%d key_token=%s value=%s\n", 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, LINEBUFFER - 1, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_last - i]++; if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: hit line=%d key_token=%s value=%s\n", 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, LINEBUFFER - 1, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_max - i + cache_lru_last]++; if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: hit line=%d key_token=%s value=%s\n", i - 1, token, resultstring); }; return (0); }; }; }; }; /* set addresses to invalid */ ipv6addr.flag_valid = 0; ipv4addr.flag_valid = 0; /* autodetection */ inputtype = libipv6calc_autodetectinput(token); if (ipv6calc_debug != 0) { if (inputtype >= 0) { for (i = 0; i < (int) (sizeof(ipv6calc_formatstrings) / sizeof(ipv6calc_formatstrings[0])); i++) { if (inputtype == ipv6calc_formatstrings[i].number) { fprintf(stderr, "%s: Found type: %s\n", DEBUG_function_name, ipv6calc_formatstrings[i].token); }; break; }; } else { fprintf(stderr, "%s: Input type unknown\n", DEBUG_function_name); return (1); }; }; /* proceed input depending on type */ switch (inputtype) { case FORMAT_ipv6addr: retval = addr_to_ipv6addrstruct(token, resultstring, &ipv6addr); break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(token, resultstring, &ipv4addr); break; case FORMAT_eui64: retval = libeui64_addr_to_eui64addrstruct(token, resultstring, &eui64addr); break; case FORMAT_macaddr: retval = addr_to_macaddrstruct(token, resultstring, &macaddr); break; }; if (retval != 0) { fprintf(stderr, "Can't parse string: %s (%s)\n", token, resultstring); return 1; }; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Token: '%s'\n", DEBUG_function_name, token); }; /***** postprocessing input *****/ if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of postprocessing input\n", DEBUG_function_name); }; 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); } 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, 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, 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, 0); } else { /* probably reverse DNS resolving lookup string, do not touch */ snprintf(resultstring, LINEBUFFER - 1, "%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 - 1, "%s", token); snprintf(cache_lru_value[cache_lru_last - 1], NI_MAXHOST - 1, "%s", resultstring); if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: fill line=%d key_token=%s value=%s\n", cache_lru_last - 1, cache_lru_key_token[cache_lru_last - 1], cache_lru_value[cache_lru_last - 1]); }; }; return (0); }; #undef DEBUG_function_name ipv6calc-0.95.0/ipv6loganon/Makefile.in0000664000175100017510000000362712216764220016661 0ustar peterpeter# Project : ipv6calc/ipv6loganon # File : Makefile # Version : $Id: Makefile.in,v 1.11 2013/09/20 06:17:52 ds6peter Exp $ # Copyright : 2002-2013 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 += -D__EXTENSIONS__ INCLUDES= $(COPTS) @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE@ @GEOIP_INCLUDE@ -I../ -I../lib/ LIBS = @IP2LOCATION_LIB@ @GEOIP_LIB@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ 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) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< $(OBJS): ipv6loganonoptions.h ipv6loganonhelp.h ipv6loganon.h ../config.h ../lib/ipv6calccommands.h libipv6calc.a: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper.a: cd ../ && ${MAKE} lib-make ipv6loganon: $(OBJS) libipv6calc.a libipv6calc_db_wrapper.a $(CC) $(LDFLAGS) -o ipv6loganon $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ $(LIBS) -lm static: ipv6loganon $(CC) $(LDFLAGS) -o ipv6loganon-static $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ -static $(LIBS) -lm distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6loganon ipv6loganon-static *.o test: ipv6loganon ./test_ipv6loganon.sh ./test_ipv6loganon.sh bulk test-minimal: ${MAKE} test codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: ipv6loganon mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6loganon $(DESTDIR)$(bindir) ipv6calc-0.95.0/ipv6loganon/ipv6loganon.h0000664000175100017510000000133412233410553017214 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganon.h * Version : $Id: ipv6loganon.h,v 1.5 2013/10/28 07:25:31 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 /* 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.95.0/ipv6loganon/ipv6loganonoptions.h0000664000175100017510000000176512233542251020641 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganonoptions.h * Version : $Id: ipv6loganonoptions.h,v 1.13 2013/10/28 20:10:17 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?Vnc:w:a:f"; /* define long options */ static struct option ipv6loganon_longopts[] = { {"version", 0, NULL, (int) 'v' }, {"verbose", 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.95.0/ipv6loganon/ipv6loganonhelp.h0000664000175100017510000000062510557674665020116 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganonhelp.h * Version : $Id: ipv6loganonhelp.h,v 1.1 2007/01/30 17:00:37 peter Exp $ * Copyright : 2007 by Peter Bieringer * License : GNU GPL v2 * * Information: * Header file for ipv6loganonhelp.c */ extern void printversion(void); extern void ipv6loganon_printinfo(void); extern void ipv6loganon_printhelp(void); ipv6calc-0.95.0/ipv6loganon/README0000664000175100017510000000552212233542251015465 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.95.0/ipv6loganon/ipv6loganonhelp.c0000664000175100017510000000437612231545453020077 0ustar peterpeter/* * Project : ipv6calc * File : ipv6loganonhelp.c * Version : $Id: ipv6loganonhelp.c,v 1.10 2013/10/22 18:59:55 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 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 -?' for more details\n\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"); fprintf(stderr, "\n"); printhelp_common(); fprintf(stderr, "\n"); 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.95.0/doc/0000775000175100017510000000000012242072067013107 5ustar peterpeteripv6calc-0.95.0/doc/ipv6calc.lyx0000664000175100017510000022223012235412017015350 0ustar peterpeter#LyX 2.0 created this file. For more info see http://www.lyx.org/ \lyxformat 413 \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_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_amsmath 1 \use_esint 0 \use_mhchem 1 \use_mathdots 1 \cite_engine basic \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \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 4.0 2013-11-02 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.95.0 (released > 2013-11-02) \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 the tool, following databases are statically included, now internally mentioned as \begin_inset Quotes eld \end_inset BuiltIn \begin_inset Quotes erd \end_inset : \end_layout \begin_layout Itemize IEEE & OUI databases (for decoding vendor part of MAC/EUI-48) \end_layout \begin_layout Itemize IPv4 assignment database (for selecting proper registry in ipv6calcweb.cgi) \end_layout \begin_layout Itemize IPv6 database (for selecting proper registry in ipv6calcweb.cgi) \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 GeoIP IPv4, IPv6 (since 0.90.0, req. GeoIP >= 1.4.5) \end_layout \begin_layout Itemize IP2Location IPv4, IPv6 \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 disabled. \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 - 2013 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 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 Subsection Available formats: \end_layout \begin_layout Subsubsection tar.gz \end_layout \begin_layout Standard A SPEC file is included, so you can build a RPM from source tarball using \end_layout \begin_layout Code $ rpmbuild -ta path/to/ipv6calc-$version.tar.gz \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 19 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 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. Since RHEL 5 this package is included by default. \end_layout \begin_layout Standard CentOS 5 and CentOS 6 are also platforms for regression tests. \end_layout \begin_layout Subsubsection Mandrake Linux \end_layout \begin_layout Standard Linux Mandrake is very similar to Red Hat Linux, therefore a rebuild should work, too. \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 binary 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 \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 \end_layout \begin_layout Code --with-ip2location-headers=DIR IP2Location include files location \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-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 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: -?|-h|--help : this help \end_layout \begin_layout Code -W : use extra CFLAGS=-Werror \end_layout \begin_layout Code -n|--no-make : stop before running 'make' \end_layout \begin_layout Code -a|--all : enable GeoIP and IP2Location 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 --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 builtin IPv6 database \end_layout \begin_layout Code --geoip-ipv6-compat : enable GeoIP IPv6 compatibility mode \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/ipv6calc -v \end_layout \begin_layout Code ipv6calc: version 0.95.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 Standard Option \begin_inset Quotes eld \end_inset -v -v \begin_inset Quotes erd \end_inset (since 0.91.0) shows built-in features in detail, depending on configuration before compiling: \end_layout \begin_layout Code $ ./ipv6calc/ipv6calc -v -v \end_layout \begin_layout Code ipv6calc: version 0.95.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 \end_layout \begin_layout Code GeoIP support by dynamic library load, compiled with IPv4 & IPv6 support \end_layout \begin_layout Code GeoIP configured dynamic library file and version: libGeoIP.so.1 1.5.1 \end_layout \begin_layout Code GeoIP available databases: Country4=1 Country6=1 ASN4=1 ASN6=1 City4=1 City6=1 \end_layout \begin_layout Code IP2Location support by dynamic library load \end_layout \begin_layout Code IP2Location configured dynamic library file and version: libIP2Location.so version-unknown \end_layout \begin_layout Code BuiltIn databases available: ASN=1 IPv4=1 IPv6=1 IEEE=1 CC_REG=1 \end_layout \begin_layout Code DB features: 0x0000133f \end_layout \begin_layout Code GeoIP: features: 0x00000330 \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] /usr/share/GeoIP/GeoIP.dat (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP City Edition, Rev 1 :[ 2] /usr/share/GeoIP/GeoIPCity.dat (GEO-533LITE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP ASNum Edition :[ 9] /usr/share/GeoIP/GeoIPASNum.dat (GEO-117 20130926 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP Country V6 Edition :[12] /usr/share/GeoIP/GeoIPv6.dat (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP ASNum V6 Edition :[21] /usr/share/GeoIP/GeoIPASNumv6.dat (GEO-117 20130306 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code GeoIP: GeoIP City Edition V6, Rev 1 :[30] /usr/share/GeoIP/GeoIPCityv6.dat (GEO-536LITE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved) \end_layout \begin_layout Code IP2Location: features: 0x00000300 \end_layout \begin_layout Code IP2Location: info of available databases in directory: /usr/share/IP2Location \end_layout \begin_layout Code IP2Location: IPv4 Country : /usr/share/IP2Location/IP-COUNTRY.BIN (IP2L-DB24 20130411 Copyright (c) 2013 IP2Location All Rights Reserved) \end_layout \begin_layout Code IP2Location: IPv6 Country : /usr/share/IP2Location/IPV6-COUNTRY.BIN (IP2L-DB1 20130307 Copyright (c) 2013 IP2Location All Rights Reserved) \end_layout \begin_layout Code BuiltIn: features: 0x0000100f \end_layout \begin_layout Code BuiltIn: info of available databases \end_layout \begin_layout Code BuiltIn: ASN : IANA/20130730 \end_layout \begin_layout Code BuiltIn: CC : AFRINIC/20130806 APNIC/20130805 ARIN/20130805 LACNIC/20130805 RIPENCC/20130805 \end_layout \begin_layout Code BuiltIn: IPv4 : AFRINIC/20131014 APNIC/20131014 ARIN/20131014 IANA/20130520 LACNIC/20131014 RIPENCC/20131014 \end_layout \begin_layout Code BuiltIn: IPv6 : AFRINIC/20131015 APNIC/20131014 ARIN/20131014 IANA/20130215 LACNIC/20131014 RIPENCC/20131014 \end_layout \begin_layout Code BuiltIn: IEEE : IAB/20131015 OUI/20131015 OUI36/20131015 \end_layout \begin_layout Standard 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 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 Standard 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 Standard There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, \begin_inset CommandInset href LatexCommand href name "IP2Location" target "http://www.ip2location.com/" \end_inset and/or \begin_inset CommandInset href LatexCommand href name "GeoIP" target "http://www.maxmind.com/" \end_inset 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=2a01:0238:423d:8809:a929:4941:0000:000c \end_layout \begin_layout Code IPV6_TYPE=unicast,global-unicast,productive,iid-random,iid,iid-local \end_layout \begin_layout Code SLA=8800 \end_layout \begin_layout Code IPV6_REGISTRY=RIPENCC \end_layout \begin_layout Code IPV6_COUNTRYCODE=DE \end_layout \begin_layout Code IPV6_AS_NUM=6724 \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 GEOIP_AS_TEXT=AS6724 STRATO STRATO AG \end_layout \begin_layout Code GEOIP_LATITUDE=51.000000 \end_layout \begin_layout Code GEOIP_LONGITUDE=9.000000 \end_layout \begin_layout Code GEOIP_COUNTRY_SHORT=DE \end_layout \begin_layout Code GEOIP_COUNTRY_LONG=Germany \end_layout \begin_layout Code IP2LOCATION_DATABASE_INFO=IP2L-DB1 20130307 Copyright (c) 2013 IP2Location All Rights Reserved \end_layout \begin_layout Code GEOIP_DATABASE_INFO=GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved / GEO-117 20130306 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved / GEO-536LITE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved \end_layout \begin_layout Code IPV6CALC_NAME=ipv6calc \end_layout \begin_layout Code IPV6CALC_VERSION=0.95.0.rc.1 \end_layout \begin_layout Code IPV6CALC_COPYRIGHT="(P) & (C) 2001-2013 by Peter Bieringer " \end_layout \begin_layout Code IPV6CALC_OUTPUT_VERSION=7 \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="IP2Location(dyn-load) GeoIP(dyn-load) GeoIPv6 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_A S DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE" \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 (which perhaps - but it's not planned at the moment - are going obsolete sometimes the future) were available. 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 IP2Location and GeoIP options only appear if compiled with such support. \end_layout \begin_layout Code ipv6calc: version 0.95.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 \end_layout \begin_layout Code (P) & (C) 2001-2013 by Peter Bieringer \end_layout \begin_layout Code \end_layout \begin_layout Code This program formats and calculates IPv6 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 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 [--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 [-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 --show_types : show available types on '-m' \end_layout \begin_layout Code \end_layout \begin_layout Code To see old-style option use: --printoldoptions \end_layout \begin_layout Subsubsection Input-type options \end_layout \begin_layout Code $ ./ipv6calc --in -? \end_layout \begin_layout Code ipv6calc: version 0.95.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 \end_layout \begin_layout Code (P) & (C) 2001-2013 by Peter Bieringer \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 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 Subsubsection Output-type options: \end_layout \begin_layout Code $ ./ipv6calc --out -? \end_layout \begin_layout Code ipv6calc: version 0.95.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 \end_layout \begin_layout Code (P) & (C) 2001-2013 by Peter Bieringer \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 ipv6literal : IPv6 address in literal \end_layout \begin_layout Code For examples and available format options use: \end_layout \begin_layout Code --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.95.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 \end_layout \begin_layout Code (P) & (C) 2001-2013 by Peter Bieringer \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 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 Required options: \end_layout \begin_layout Code --6rd_prefix ... \end_layout \begin_layout Code --6rd_relay_prefix ... \end_layout \begin_layout Code filter : Filter addresses related to filter options \end_layout \begin_layout Standard Special action \begin_inset Quotes eld \end_inset filter \begin_inset Quotes erd \end_inset : \end_layout \begin_layout Code \end_layout \begin_layout Code $ ./ipv6calc --action filter -h \end_layout \begin_layout Code ipv6calc: version 0.95.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 \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 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 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 Subsubsection Because of historical issues, there exists also a support of the old-styled options: \end_layout \begin_layout Code $ ./ipv6calc --printoldoptions \end_layout \begin_layout Code ipv6calc: version 0.81.0 \end_layout \begin_layout Code (P) & (C) 2001-2011 by Peter Bieringer \end_layout \begin_layout Code Usage with old style (shortcut) options (going obsolete): \end_layout \begin_layout Code [ ...] [...] \end_layout \begin_layout Code \end_layout \begin_layout Code --addr2ip6_int \end_layout \begin_layout Code --addr_to_ip6int \end_layout \begin_layout Code --addr2ip6_arpa \end_layout \begin_layout Code --addr_to_ip6arpa \end_layout \begin_layout Code --addr_to_bitstring \end_layout \begin_layout Code --addr2compaddr \end_layout \begin_layout Code --addr_to_compressed \end_layout \begin_layout Code --addr2uncompaddr \end_layout \begin_layout Code --addr_to_uncompressed \end_layout \begin_layout Code --addr_to_base85 \end_layout \begin_layout Code --base85_to_addr \end_layout \begin_layout Code --mac_to_eui64 \end_layout \begin_layout Code --addr2fulluncompaddr \end_layout \begin_layout Code --addr_to_fulluncompressed \end_layout \begin_layout Code --addr2if_inet6 \end_layout \begin_layout Code --addr_to_ifinet6 \end_layout \begin_layout Code --if_inet62addr \end_layout \begin_layout Code --ifinet6_to_compressed \end_layout \begin_layout Code --eui64_to_privacy \end_layout \begin_layout Code --ipv4_to_6to4addr \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 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 See 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: version 0.95.0 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC \end_layout \begin_layout Code (P) & (C) 2007-2013 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 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 [--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-iid=40 mask-mac=24 method=anonymize \end_layout \begin_layout Code anonymize-careful (ac): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=anonymize \end_layout \begin_layout Code anonymize-paranoid (ap): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=anonymize \end_layout \begin_layout Code zeroize-standard (zs): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 method=zeroize \end_layout \begin_layout Code zeroize-careful (zc): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=zeroize \end_layout \begin_layout Code zeroize-paranoid (zp): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=zeroize \end_layout \begin_layout Code keep-type-asn-cc (kp): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 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-iid : mask IPv6 interface identifiers [0-64] \end_layout \begin_layout Code --mask-mac : mask MAC address [0-48] \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 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 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: version 0.95.0.rc.1 STAT_REG STAT_CC STAT_AS \end_layout \begin_layout Code (P) & (C) 2003-2013 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 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 [--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|--colums] : print statistics in colums (1) \end_layout \begin_layout Code [-n|--noheader] : don't print header in colums mode (1) \end_layout \begin_layout Code [-o|--onlyheader] : print only header in colums 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 \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) \lang english 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 History \end_layout \begin_layout Standard Major extensions/changes are listed here \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.95.0/doc/ipv6calc.sgml0000664000175100017510000014640612235412017015510 0ustar peterpeter ]>
The ipv6calc Homepage PeterBieringer
pb at bieringer dot de
4.0 2013-11-02 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.95.0 (released > 2013-11-02) 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 the tool, following databases are statically included, now internally mentioned as “BuiltIn”: IEEE & OUI databases (for decoding vendor part of MAC/EUI-48)IPv4 assignment database (for selecting proper registry in ipv6calcweb.cgi)IPv6 database (for selecting proper registry in ipv6calcweb.cgi) Possible external databases If enabled during compiling the tool, following external (but local stored) databases can be used GeoIP IPv4, IPv6 (since 0.90.0, req. GeoIP >= 1.4.5)IP2Location IPv4, IPv6Since 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 disabled. License The program is published under the GNU GPL version 2. Copyright (C) 2001 - 2013 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 interfaceVia FTP at DeepSpace6: DeepSpace6 / anonymous FTPVia FTP at ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/ Available formats: tar.gz A SPEC file is included, so you can build a RPM from source tarball using 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 19 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default. Red Hat Enterprise Linux and clones It's tested by the developer that creation of the RPM is working fine on RHEL 4. Since RHEL 5 this package is included by default. CentOS 5 and CentOS 6 are also platforms for regression tests. Mandrake Linux Linux Mandrake is very similar to Red Hat Linux, therefore a rebuild should work, too. 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 binary 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 in detail, depending on configuration before compiling: 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 Information about a simple IPv6 address: Information about a Teredo IPv6 address: There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, IP2Location and/or GeoIP information can be displayed, if databases are located on the system and supported. " IPV6CALC_OUTPUT_VERSION=7 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="IP2Location(dyn-load) GeoIP(dyn-load) GeoIPv6 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE" ]]> 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 (which perhaps - but it's not planned at the moment - are going obsolete sometimes the future) were available. 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: IP2Location and GeoIP options only appear if compiled with such support. This program formats and calculates IPv6 addresses and can do many more tricky things [-d|--debug ] : debug value (bitwise like) can also be set 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) [-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 --show_types : show available types on '-m' To see old-style option use: --printoldoptions ]]> 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) 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 ]]> 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 ipv6literal : IPv6 address in literal For examples and available format options use: --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) 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 Required options: --6rd_prefix ... --6rd_relay_prefix ... filter : Filter addresses related to filter options ]]>Special action “filter”: Because of historical issues, there exists also a support of the old-styled options: Usage with old style (shortcut) options (going obsolete): [ ...] [...] --addr2ip6_int --addr_to_ip6int --addr2ip6_arpa --addr_to_ip6arpa --addr_to_bitstring --addr2compaddr --addr_to_compressed --addr2uncompaddr --addr_to_uncompressed --addr_to_base85 --base85_to_addr --mac_to_eui64 --addr2fulluncompaddr --addr_to_fulluncompressed --addr2if_inet6 --addr_to_ifinet6 --if_inet62addr --ifinet6_to_compressed --eui64_to_privacy --ipv4_to_6to4addr ]]> 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"). Examples A demonstration about which kind of statistics are possible to produce is shown at http://www.ipv6.bieringer.de/ (IPv6 only). Usage See 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 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-iid=40 mask-mac=24 method=anonymize anonymize-careful (ac): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=anonymize anonymize-paranoid (ap): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=anonymize zeroize-standard (zs): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 method=zeroize zeroize-careful (zc): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=zeroize zeroize-paranoid (zp): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=zeroize keep-type-asn-cc (kp): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 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-iid : mask IPv6 interface identifiers [0-64] --mask-mac : mask MAC address [0-48] 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 (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: 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 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|--colums] : print statistics in colums (1) [-n|--noheader] : don't print header in colums mode (1) [-o|--onlyheader] : print only header in colums mode (1) [-p|--prefix ] : print token as prefix (1) [-q|--quiet] : be more quiet (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. History Major extensions/changes are listed here 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.95.0/doc/generate.sh0000775000175100017510000000237612231545453015252 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.95.0/doc/ldp.dsl0000664000175100017510000002315311652735314014403 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.95.0/doc/ipv6calc.xml0000664000175100017510000014631012235412017015340 0ustar peterpeter
The ipv6calc Homepage PeterBieringer
pb at bieringer dot de
4.0 2013-11-02 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.95.0 (released > 2013-11-02) 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 the tool, following databases are statically included, now internally mentioned as “BuiltIn”: IEEE & OUI databases (for decoding vendor part of MAC/EUI-48)IPv4 assignment database (for selecting proper registry in ipv6calcweb.cgi)IPv6 database (for selecting proper registry in ipv6calcweb.cgi) Possible external databases If enabled during compiling the tool, following external (but local stored) databases can be used GeoIP IPv4, IPv6 (since 0.90.0, req. GeoIP >= 1.4.5)IP2Location IPv4, IPv6Since 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 disabled. License The program is published under the GNU GPL version 2. Copyright (C) 2001 - 2013 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 interfaceVia FTP at DeepSpace6: DeepSpace6 / anonymous FTPVia FTP at ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/ Available formats: tar.gz A SPEC file is included, so you can build a RPM from source tarball using 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 19 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default. Red Hat Enterprise Linux and clones It's tested by the developer that creation of the RPM is working fine on RHEL 4. Since RHEL 5 this package is included by default. CentOS 5 and CentOS 6 are also platforms for regression tests. Mandrake Linux Linux Mandrake is very similar to Red Hat Linux, therefore a rebuild should work, too. 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 binary 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 in detail, depending on configuration before compiling: 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 Information about a simple IPv6 address: Information about a Teredo IPv6 address: There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, IP2Location and/or GeoIP information can be displayed, if databases are located on the system and supported. " IPV6CALC_OUTPUT_VERSION=7 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="IP2Location(dyn-load) GeoIP(dyn-load) GeoIPv6 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE" ]]> 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 (which perhaps - but it's not planned at the moment - are going obsolete sometimes the future) were available. 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: IP2Location and GeoIP options only appear if compiled with such support. This program formats and calculates IPv6 addresses and can do many more tricky things [-d|--debug ] : debug value (bitwise like) can also be set 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) [-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 --show_types : show available types on '-m' To see old-style option use: --printoldoptions ]]> 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) 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 ]]> 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 ipv6literal : IPv6 address in literal For examples and available format options use: --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) 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 Required options: --6rd_prefix ... --6rd_relay_prefix ... filter : Filter addresses related to filter options ]]>Special action “filter”: Because of historical issues, there exists also a support of the old-styled options: Usage with old style (shortcut) options (going obsolete): [ ...] [...] --addr2ip6_int --addr_to_ip6int --addr2ip6_arpa --addr_to_ip6arpa --addr_to_bitstring --addr2compaddr --addr_to_compressed --addr2uncompaddr --addr_to_uncompressed --addr_to_base85 --base85_to_addr --mac_to_eui64 --addr2fulluncompaddr --addr_to_fulluncompressed --addr2if_inet6 --addr_to_ifinet6 --if_inet62addr --ifinet6_to_compressed --eui64_to_privacy --ipv4_to_6to4addr ]]> 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"). Examples A demonstration about which kind of statistics are possible to produce is shown at http://www.ipv6.bieringer.de/ (IPv6 only). Usage See 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 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-iid=40 mask-mac=24 method=anonymize anonymize-careful (ac): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=anonymize anonymize-paranoid (ap): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=anonymize zeroize-standard (zs): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 method=zeroize zeroize-careful (zc): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=zeroize zeroize-paranoid (zp): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=zeroize keep-type-asn-cc (kp): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 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-iid : mask IPv6 interface identifiers [0-64] --mask-mac : mask MAC address [0-48] 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 (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: 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 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|--colums] : print statistics in colums (1) [-n|--noheader] : don't print header in colums mode (1) [-o|--onlyheader] : print only header in colums mode (1) [-p|--prefix ] : print token as prefix (1) [-q|--quiet] : be more quiet (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. History Major extensions/changes are listed here 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.95.0/doc/ipv6calc.html0000664000175100017510000015431312235230307015506 0ustar peterpeter The ipv6calc Homepage

The ipv6calc Homepage

Peter Bieringer

pb at bieringer dot de

Revision History
Revision 4.02013-11-02Revised 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.95.0 (released > 2013-11-02)


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 the tool, following databases are statically included, now internally mentioned as “BuiltIn”:

  • IEEE & OUI databases (for decoding vendor part of MAC/EUI-48)

  • IPv4 assignment database (for selecting proper registry in ipv6calcweb.cgi)

  • IPv6 database (for selecting proper registry in ipv6calcweb.cgi)


1.4. Possible external databases

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

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

  • IP2Location IPv4, IPv6

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


2. License

The program is published under the GNU GPL version 2.


3. Copyright

(C) 2001 - 2013 by Dr. Peter Bieringer


4. Author

The author of ipv6calc is


5. Where to get sources or binaries


5.2. Available formats:

5.2.1. tar.gz

A SPEC file is included, so you can build a RPM from source tarball using

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

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 19 is the current developing platform, so use given hints above to create a RPM. Since Fedora 7 this package is included by default.


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. Since RHEL 5 this package is included by default.

CentOS 5 and CentOS 6 are also platforms for regression tests.


5.3.3. Mandrake Linux

Linux Mandrake is very similar to Red Hat Linux, therefore a rebuild should work, too.


5.3.4. Debian GNU/Linux

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


5.3.5. 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 binary 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)

--enable-ip2location    Enable IP2Location support (default: disabled)
--enable-geoip          Enable GeoIP support (default: disabled) 

--with-ip2location-headers=DIR  IP2Location include files location
--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-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) 

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
   -W                  : use extra CFLAGS=-Werror
   -n|--no-make        : stop before running 'make'
   -a|--all            : enable GeoIP and IP2Location 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
   --disable-db-ieee   : disable built-in IEEE database
   --disable-db-ipv4   : disable built-in IPv4 database
   --disable-db-ipv6   : disable builtin IPv6 database
   --geoip-ipv6-compat : enable GeoIP IPv6 compatibility mode 

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/ipv6calc -v 
ipv6calc: version 0.95.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

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

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

GeoIP support by dynamic library load, compiled with IPv4 & IPv6 support
GeoIP configured dynamic library file and version: libGeoIP.so.1 1.5.1
GeoIP available databases: Country4=1 Country6=1 ASN4=1 ASN6=1 City4=1 City6=1
IP2Location support by dynamic library load
IP2Location configured dynamic library file and version: libIP2Location.so version-unknown
BuiltIn databases available: ASN=1 IPv4=1 IPv6=1 IEEE=1 CC_REG=1
DB features: 0x0000133f
GeoIP: features: 0x00000330
GeoIP: info of available databases in directory: /usr/share/GeoIP (max: 31)
GeoIP: GeoIP Country Edition            :[ 1] /usr/share/GeoIP/GeoIP.dat               (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP City Edition, Rev 1        :[ 2] /usr/share/GeoIP/GeoIPCity.dat           (GEO-533LITE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP ASNum Edition              :[ 9] /usr/share/GeoIP/GeoIPASNum.dat          (GEO-117 20130926 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP Country V6 Edition         :[12] /usr/share/GeoIP/GeoIPv6.dat             (GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP ASNum V6 Edition           :[21] /usr/share/GeoIP/GeoIPASNumv6.dat        (GEO-117 20130306 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
GeoIP: GeoIP City Edition V6, Rev 1     :[30] /usr/share/GeoIP/GeoIPCityv6.dat         (GEO-536LITE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved)
IP2Location: features: 0x00000300
IP2Location: info of available databases in directory: /usr/share/IP2Location
IP2Location: IPv4 Country               : /usr/share/IP2Location/IP-COUNTRY.BIN    (IP2L-DB24 20130411 Copyright (c) 2013 IP2Location All Rights Reserved)
IP2Location: IPv6 Country               : /usr/share/IP2Location/IPV6-COUNTRY.BIN  (IP2L-DB1 20130307 Copyright (c) 2013 IP2Location All Rights Reserved)
BuiltIn: features: 0x0000100f
BuiltIn: info of available databases
BuiltIn: ASN  : IANA/20130730
BuiltIn: CC   : AFRINIC/20130806 APNIC/20130805 ARIN/20130805 LACNIC/20130805 RIPENCC/20130805
BuiltIn: IPv4 : AFRINIC/20131014 APNIC/20131014 ARIN/20131014 IANA/20130520 LACNIC/20131014 RIPENCC/20131014
BuiltIn: IPv6 : AFRINIC/20131015 APNIC/20131014 ARIN/20131014 IANA/20130215 LACNIC/20131014 RIPENCC/20131014
BuiltIn: IEEE : IAB/20131015 OUI/20131015 OUI36/20131015

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

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

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

There exists also a machine readable output (e.g. used by 'ipv6calcweb.cgi') - in addition, IP2Location and/or GeoIP 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=2a01:0238:423d:8809:a929:4941:0000:000c
IPV6_TYPE=unicast,global-unicast,productive,iid-random,iid,iid-local
SLA=8800
IPV6_REGISTRY=RIPENCC
IPV6_COUNTRYCODE=DE
IPV6_AS_NUM=6724
IID=85b3:9e6b:3019:8909
EUI64_SCOPE=local-random
IP2LOCATION_COUNTRY_SHORT=DE
IP2LOCATION_COUNTRY_LONG=GERMANY
GEOIP_AS_TEXT=AS6724 STRATO STRATO AG
GEOIP_LATITUDE=51.000000
GEOIP_LONGITUDE=9.000000
GEOIP_COUNTRY_SHORT=DE
GEOIP_COUNTRY_LONG=Germany
IP2LOCATION_DATABASE_INFO=IP2L-DB1 20130307 Copyright (c) 2013 IP2Location All Rights Reserved
GEOIP_DATABASE_INFO=GEO-106FREE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved / GEO-117 20130306 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved / GEO-536LITE 20131001 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved
IPV6CALC_NAME=ipv6calc
IPV6CALC_VERSION=0.95.0.rc.1
IPV6CALC_COPYRIGHT="(P) & (C) 2001-2013 by Peter Bieringer <pb (at) bieringer.de>"
IPV6CALC_OUTPUT_VERSION=7
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="IP2Location(dyn-load) GeoIP(dyn-load) GeoIPv6 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC DB_AS DB_IPV4 DB_IPV6 DB_IPV4_AS DB_IPV6_AS DB_IPV4_CC DB_IPV6_CC DB_CC_REG DB_IEEE"

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 (which perhaps - but it's not planned at the moment - are going obsolete sometimes the future) were available. 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:

IP2Location and GeoIP options only appear if compiled with such support.

ipv6calc: version 0.95.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 
(P) & (C) 2001-2013 by Peter Bieringer <pb (at) bieringer.de>

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

  [-d|--debug <debug value>] : debug value (bitwise like)
                                can also be set 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)

  [-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 --show_types            : show available types on '-m'
 
 To see old-style option use: --printoldoptions

9.5.2. Input-type options

$ ./ipv6calc --in -?
ipv6calc: version 0.95.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 
(P) & (C) 2001-2013 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)
  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

9.5.3. Output-type options:

$ ./ipv6calc --out -?
ipv6calc: version 0.95.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 
(P) & (C) 2001-2013 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
  ipv6literal     : IPv6 address in literal
 For examples and available format options use:
    --out <type> --examples

9.5.4. Action-type options:

$ ./ipv6calc --action -?
ipv6calc: version 0.95.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 
(P) & (C) 2001-2013 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)
  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
                      Required options:
                       --6rd_prefix ...
                       --6rd_relay_prefix ...
  filter           : Filter addresses related to filter options

Special action “filter”:

$ ./ipv6calc --action filter -h
ipv6calc: version 0.95.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

 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' is given)

  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

  MAC address filter tokens:
    IMPLEMENTATION MISSING

  EUI-64 address filter tokens:
    IMPLEMENTATION MISSING

9.5.5. Because of historical issues, there exists also a support of the old-styled options:

$ ./ipv6calc --printoldoptions
ipv6calc: version 0.81.0
(P) & (C) 2001-2011 by Peter Bieringer <pb (at) bieringer.de>
 Usage with old style (shortcut) options (going obsolete): 
  <shortcut option> [<format option> ...] <input data> [...]

  --addr2ip6_int 
  --addr_to_ip6int
  --addr2ip6_arpa
  --addr_to_ip6arpa
  --addr_to_bitstring
  --addr2compaddr
  --addr_to_compressed
  --addr2uncompaddr
  --addr_to_uncompressed
  --addr_to_base85
  --base85_to_addr
  --mac_to_eui64
  --addr2fulluncompaddr
  --addr_to_fulluncompressed
  --addr2if_inet6
  --addr_to_ifinet6
  --if_inet62addr
  --ifinet6_to_compressed
  --eui64_to_privacy
  --ipv4_to_6to4addr

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

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


10.2. Usage

See 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: version 0.95.0 ANON_ZEROISE ANON_ANONYMIZE ANON_KEEP-TYPE-ASN-CC
(P) & (C) 2007-2013 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 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-iid=40 mask-mac=24 method=anonymize
   anonymize-careful    (ac): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=anonymize
   anonymize-paranoid   (ap): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=anonymize
   zeroize-standard     (zs): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 method=zeroize
   zeroize-careful      (zc): mask-ipv6= 48 mask-ipv4=20 mask-iid=24 mask-mac=24 method=zeroize
   zeroize-paranoid     (zp): mask-ipv6= 40 mask-ipv4=16 mask-iid= 0 mask-mac=24 method=zeroize
   keep-type-asn-cc     (kp): mask-ipv6= 56 mask-ipv4=24 mask-iid=40 mask-mac=24 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-iid  <bits>     : mask IPv6 interface identifiers [0-64]
  --mask-mac  <bits>     : mask MAC address [0-48]
 
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

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


12.1. Examples

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


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


13.1. Supported options

ipv6logstats: version 0.95.0.rc.1 STAT_REG STAT_CC STAT_AS
(P) & (C) 2003-2013 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 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|--colums]              : print statistics in colums (1)
  [-n|--noheader]            : don't print header in colums mode (1)
  [-o|--onlyheader]          : print only header in colums mode (1)
  [-p|--prefix <token>]      : print token as prefix (1)
  [-q|--quiet]               : be more quiet

 (1) unsupported for CountryCode & ASN statistics

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


13.3. Examples

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


14. History

Major extensions/changes are listed here


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


14.2. 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.95.0/LICENSE0000664000175100017510000000160210564664327013361 0ustar peterpeter0. The program "ipv6calc" is produced and copyright 2001-2006 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 -> 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) 2006-08-06, Peter Bieringer ipv6calc-0.95.0/ipv6calc/0000775000175100017510000000000012242072067014051 5ustar peterpeteripv6calc-0.95.0/ipv6calc/test_ipv6calc.sh0000775000175100017510000004536712235225435017176 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc.sh # Version : $Id: test_ipv6calc.sh,v 1.44 2013/11/02 16:41:01 ds6peter Exp $ # Copyright : 2001-2013 by Peter Bieringer # # Test patterns for ipv6calc conversions if [ ! -x ./ipv6calc ]; then echo "Binary './ipv6calc' missing or not executable" exit 1 fi # Test proper option definitions echo "Test proper option definition" ./ipv6calc -h >/dev/null if [ $? -ne 1 ]; then echo "ERROR : something wrong in option definition" 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:: ## IPv6 -> IPv4 (6to4) --in ipv6 --out ipv4 --action conv6to4 2002:102:304::1 =1.2.3.4 ## 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 # 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 END } # Test Scenarios for autodetection "bad case" testscenarios_auto_bad() { cat </dev/null retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc'!" exit 1 fi done || exit 1 echo "Run 'ipv6calc' input autodetection tests...(bad cases)" testscenarios_auto_bad | while read input dummy; do echo "Test './ipv6calc -q \"$input\"'" ./ipv6calc -q "$input" >/dev/null retval=$? if [ $retval -eq 0 ]; then echo "Error executing 'ipv6calc' ($retval)!" exit 1 fi done || exit 1 echo "Run 'ipv6calc' input tests...(good cases)" testscenarios_auto_good | while read input type; do echo "Test './ipv6calc --in $type -q \"$input\"'" ./ipv6calc --in $type -q "$input" >/dev/null retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc'!" exit 1 fi done || exit 1 echo "Run 'ipv6calc' pipe tests (1)" testscenarios_pipe | while IFS="," read input arguments result; do echo "Test 'echo $input | ./ipv6calc $arguments | grep \"^$result\$\"'" #set -x echo -e $input | ./ipv6calc $arguments | grep "^$result\$" >/dev/null retval=$? #set +x if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc' ($retval)!" exit 1 fi done || exit 1 echo "Run 'ipv6calc' pipe tests (2)" # reuse original test cases testscenarios | grep -v "^NOPIPETEST" | while read line; do # extract result command="`echo "$line" | awk -F= '{ print $1 }' | sed 's/ $//g'`" result="`echo "$line" | awk -F= '{ print $2 }'`" #echo "command=$command" >&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 echo "Test 'echo $stdin | ./ipv6calc $options | grep \"^$result\$\"'" #set -x output="`echo -e $stdin | ./ipv6calc $options`" retval=$? #set +x if [ $retval -ne 0 ]; then echo "Error executing 'ipv6calc' ($retval)!" exit 1 fi # Check result if [ "$result" != "*" ]; then if [ "$output" != "$result" ]; then echo "Result '$output' doesn't match!" exit 1 fi fi done || exit 1 echo "Run 'ipv6calc' pipe mode input validation tests...(too long input)" ./ipv6calc -m --in -? | while read inputformat; do if echo $inputformat | grep -q '+'; then echo "Test '8192*x 8192*x | ./ipv6calc -q --in $inputformat" perl -e 'print "x" x8192 . " " . "y" x8192' | ./ipv6calc -q --in $inputformat retval=$? else echo "Test '8192*x | ./ipv6calc -q --in $inputformat" perl -e 'print "x" x8192' | ./ipv6calc -q --in $inputformat retval=$? fi if [ $retval -ne 0 -a $retval -ne 1 ]; then echo "Error executing 'ipv6calc'!" exit 1 fi done || exit 1 retval=$? if [ $retval -eq 0 ]; then echo "All tests were successfully done!" exit 0 else echo "Tests failed! (code $retval)" exit $retval fi ipv6calc-0.95.0/ipv6calc/test_ipv6calc_filter.sh0000775000175100017510000000256212241345317020530 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc_filter.sh # Version : $Id: test_ipv6calc_filter.sh,v 1.3 2013/11/15 07:18:39 ds6peter Exp $ # Copyright : 2012-2013 by Peter Bieringer # # Test patterns for ipv6calc filter if [ ! -x ./ipv6calc ]; then echo "Binary './ipv6calc' missing or not executable" exit 1 fi # Test Scenarios for autodetection "good case" source ./test_scenarios.sh echo "Run 'ipv6calc' filter tests..." testscenarios_filter | tr A-Z a-z | while read input filter; do if [ -z "$input" -o -z "$filter" ]; then # end continue fi echo "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 "Result '$output' doesn't match '$input'!" exit 1 else echo "Result ok!" fi else echo "Result empty!" exit 1 fi done || exit 1 # subsequent filter echo -e "1.2.3.4\n2001:db8::1" | ./ipv6calc -E iid-local 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 if [ $? -ne 0 ]; then echo "ERROR : something is going wrong filtering sequence of IPv6->IPv4" exit 1 fi ipv6calc-0.95.0/ipv6calc/showinfo.h0000664000175100017510000000304212230151756016055 0ustar peterpeter/* * Project : ipv6calc * File : showinfo.h * Version : $Id: showinfo.h,v 1.20 2013/10/18 06:23:42 ds6peter Exp $ * Copyright : 2001-2013 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 current // - GEOIP_DATABASE_INFO_IPV4 // - GEOIP_DATABASE_INFO_IPV6 // + GEOIP_DATABASE_INFO // - IP2LOCATION_DATABASE_INFO_IPV4 // - IP2LOCATION_INFO_IPV6 // + IP2LOCATION_DATABASE_INFO #define IPV6CALC_OUTPUT_VERSION 7 /* 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 void showinfo_availabletypes(void); ipv6calc-0.95.0/ipv6calc/test_privacyiid_detection.sh0000775000175100017510000002041011743337544021656 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.95.0/ipv6calc/test_showinfo.sh0000775000175100017510000001752012233410553017304 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_showinfo.sh # Version : $Id: test_showinfo.sh,v 1.32 2013/10/28 07:25:31 ds6peter Exp $ # Copyright : 2002-2011 by Peter Bieringer # # Test patterns for ipv6calc showinfo source ./test_scenarios.sh getexamples() { cat <&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; then ipv6calc_has_db_ipv4=1 fi ipv6calc_has_db_ipv6=0 if ./ipv6calc -v 2>&1 | grep -qw DB_IPV6; then ipv6calc_has_db_ipv6=1 fi testscenarios_showinfo | 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 if echo "$output" | grep -q "^IPV4_REGISTRY="; then if [ $ipv6calc_has_db_ipv4 -ne 1 ]; then echo "Test: $address for $output SKIPPED (no DB_IPV4 compiled in)" continue fi fi if echo "$output" | grep -q "^IPV6_REGISTRY="; then if [ $ipv6calc_has_db_ipv6 -ne 1 ]; then echo "Test: $address for $output SKIPPED (no DB_IPV6 compiled in)" continue fi fi echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\[}" output_escaped="${output_escaped//]/\]}" if ! ./ipv6calc -q -i -m $address | grep "^$output_escaped$"; then echo "ERROR: unexpected result ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi echo done || exit 1 if [ "$1" = "minimal" ]; then echo "GeoIP & IP2Location tests skipped (option 'minimal' used)" exit 0 fi if ./ipv6calc -v 2>&1 | grep -qw GeoIP; then echo "Run GeoIP tests" getexamples_GeoIP | while read address; do echo "Run GeoIP showinfo on: $address" if ./ipv6calc -q -i -m -G $address | grep ^GEOIP; then true else if echo "$address" | grep -q ":"; then if ./ipv6calc -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 -G $address" ./ipv6calc -q -i -m -G $address exit 1 fi else echo "Unexpected result (missing GEOIP): ./ipv6calc -q -i -m -G $address" ./ipv6calc -q -i -m -G $address exit 1 fi fi done || exit 1 testscenarios_showinfo_geoip | while read address output requirement; 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 if [ -n "$requirement" ]; then if ./ipv6calc -v | grep -q -w "$requirement"; then true else echo "Test: $address for $output SKIPPED (no $requirement compiled in)" continue fi fi echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\[}" output_escaped="${output_escaped//]/\]}" if ! ./ipv6calc -q -i -m $address | grep "^$output_escaped$"; then echo "ERROR: unexpected result ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi echo done || exit 1 echo "GeoIP tests were successful" else echo "GeoIP tests skipped" fi if ./ipv6calc -v 2>&1 | grep -qw IP2Location; then echo "Run IP2Location tests" getexamples_IP2Location | while read address; do echo "Run IP2Location showinfo on: $address" if ./ipv6calc -q -i -m -L $address | egrep -v '=This (record|parameter) ' | grep ^IP2LOCATION; then true else echo "Unexpected result (missing IP2LOCATION): ./ipv6calc -q -i -m -L $address" ./ipv6calc -q -i -m -L $address exit 1 fi done || exit 1 testscenarios_showinfo_ip2location | 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 echo "Test: $address for $output" output_escaped="${output//./\\.}" output_escaped="${output_escaped//[/\[}" output_escaped="${output_escaped//]/\]}" if ! ./ipv6calc -q -i -m $address | grep "^$output_escaped$"; then echo "ERROR: unexpected result ($output_escaped)" ./ipv6calc -q -i -m $address exit 1 fi echo done || exit 1 echo "IP2Location tests were successful" else echo "IP2Location tests skipped" fi if ./ipv6calc -v 2>&1 | grep -qw "ANON_KEEP-TYPE-ASN-CC"; then echo "INFO : run special anon tests" testscenarios_showinfo_anonymized_info | while IFS=";" read input options token result; do 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 echo "OK" else echo " ERROR" echo "$output" exit 1 fi ;; key-word) if echo "$output" | grep "^$key=" | grep -w "$word"; then echo " OK" else exit 1 fi ;; key-no-word) if ! echo "$output" | grep "^$key=" | grep -w "$word"; then echo " OK" else exit 1 fi ;; esac done || exit 1 echo "special tests were successful" fi ipv6calc-0.95.0/ipv6calc/showinfo.c0000664000175100017510000014561212235641712016063 0ustar peterpeter/* * Project : ipv6calc * File : showinfo.c * Version : $Id: showinfo.c,v 1.102 2013/11/04 06:50:50 ds6peter Exp $ * Copyright : 2001-2013 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" #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" extern int use_geoip_ipv4; extern int use_geoip_ipv6; #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 < (int) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); 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, " 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, " 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"); #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_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_AS_TEXT=... : Autonomous System information\n"); fprintf(stderr, " GEOIP_DATABASE_INFO=... : Information about the used databases\n"); #endif fprintf(stderr, " IPV6CALC_NAME=name : Name of ipv6calc\n"); fprintf(stderr, " IPV6CALC_VERSION=x.y : 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_SETTINGS_ANON=\"...\": Anonymizer settings\n"); }; /* * print one information */ static void printout(const char *string) { const char *prefix = ""; /* const char *prefix = "ipv6calc_"; */ const char *suffix = "\n"; fprintf(stdout, "%s%s%s", prefix, string, suffix); }; static void printfooter(const uint32_t formatoptions) { char tempstring[NI_MAXHOST] = ""; char tempstring2[NI_MAXHOST] = ""; int i; #if defined SUPPORT_IP2LOCATION || defined SUPPORT_GEOIP char *string; #endif if ( (formatoptions & FORMATOPTION_machinereadable) != 0 ) { #ifdef SUPPORT_IP2LOCATION string = libipv6calc_db_wrapper_IP2Location_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { snprintf(tempstring, sizeof(tempstring), "IP2LOCATION_DATABASE_INFO=%s", string); printout(tempstring); }; #endif #ifdef SUPPORT_GEOIP string = libipv6calc_db_wrapper_GeoIP_wrapper_db_info_used(); if ((string != NULL) && (strlen(string) > 0)) { snprintf(tempstring, sizeof(tempstring), "GEOIP_DATABASE_INFO=%s", string); printout(tempstring); }; #endif snprintf(tempstring, sizeof(tempstring), "IPV6CALC_NAME=%s", PROGRAM_NAME); printout(tempstring); snprintf(tempstring, sizeof(tempstring), "IPV6CALC_VERSION=%s", PACKAGE_VERSION); printout(tempstring); snprintf(tempstring, sizeof(tempstring), "IPV6CALC_COPYRIGHT=\"%s\"", PROGRAM_COPYRIGHT); printout(tempstring); snprintf(tempstring, sizeof(tempstring), "IPV6CALC_OUTPUT_VERSION=%d", IPV6CALC_OUTPUT_VERSION); printout(tempstring); libipv6calc_anon_infostring(tempstring2, sizeof(tempstring2), &ipv6calc_anon_set); snprintf(tempstring, sizeof(tempstring), "IPV6CALC_SETTINGS_ANON=\"%s\"", tempstring2); printout(tempstring); tempstring[0] = '\0'; /* clear tempstring */ #ifdef SUPPORT_IP2LOCATION #ifdef SUPPORT_IP2LOCATION_DYN snprintf(tempstring2, sizeof(tempstring2), "%s IP2Location(dyn-load)", tempstring); #else #ifdef SUPPORT_IP2LOCATION_STATIC snprintf(tempstring2, sizeof(tempstring2), "%s IP2Location(static)", tempstring); #else snprintf(tempstring2, sizeof(tempstring2), "%s IP2Location", tempstring); #endif #endif snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); #endif #ifdef SUPPORT_GEOIP #ifdef SUPPORT_GEOIP_DYN snprintf(tempstring2, sizeof(tempstring2), "%s GeoIP(dyn-load)", tempstring); #else #ifdef SUPPORT_GEOIP_STATIC snprintf(tempstring2, sizeof(tempstring2), "%s GeoIP(static)", tempstring); #else snprintf(tempstring2, sizeof(tempstring2), "%s GeoIP", tempstring); #endif #endif snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); #ifdef SUPPORT_GEOIP_V6 snprintf(tempstring2, sizeof(tempstring2), "%s GeoIPv6", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); #endif #endif if (feature_zeroize == 1) { snprintf(tempstring2, sizeof(tempstring2), "%s ANON_ZEROISE", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; if (feature_anon == 1) { snprintf(tempstring2, sizeof(tempstring2), "%s ANON_ANONYMIZE", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; if (feature_kp == 1) { snprintf(tempstring2, sizeof(tempstring2), "%s ANON_KEEP-TYPE-ASN-CC", tempstring); snprintf(tempstring, sizeof(tempstring), "%s", tempstring2); }; /* cut off first char */ for (i = 0; i < strlen(tempstring); i++) { tempstring[i] = tempstring[i+1]; }; libipv6calc_db_wrapper_features(tempstring, sizeof(tempstring)); snprintf(tempstring2, sizeof(tempstring2), "IPV6CALC_FEATURES=\"%s\"", tempstring); printout(tempstring2); }; }; #ifdef SUPPORT_IP2LOCATION /* print IP2Location information */ #define DEBUG_function_name "showinfo/print_ip2location" static void print_ip2location(char *addrstring, const uint32_t formatoptions, const char *additionalstring, int version) { DEBUGPRINT_NA(DEBUG_showinfo, "Called"); if (wrapper_features_IP2Location == 0) { DEBUGPRINT_NA(DEBUG_showinfo, "IP2Location support not active"); return; }; int ip2location_type = 0; IP2Location *IP2LocationObj; uint32_t machinereadable = (formatoptions & FORMATOPTION_machinereadable); char tempstring[NI_MAXHOST] = ""; char *CountryCode, *CountryName; if ( (ipv6calc_debug & DEBUG_showinfo) != 0 ) { fprintf(stderr, "%s/%s: Called addrstring=%s formatoptions=0x%08x additionalstring=%s version=%d\n", __FILE__, __func__, addrstring, formatoptions, additionalstring, version); }; if (version == 4) { if (libipv6calc_db_wrapper_IP2Location_has_features(IPV6CALC_DB_IPV4_TO_CC) != 1) { return; }; ip2location_type = IP2LOCATION_DB_IP_COUNTRY; } else if (version == 6) { if (libipv6calc_db_wrapper_IP2Location_has_features(IPV6CALC_DB_IPV6_TO_CC) != 1) { return; }; ip2location_type = IP2LOCATION_DB_IPV6_COUNTRY; } else { fprintf(stderr, " IP2Location for IPv%d is not supported\n", version); return; }; 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) { snprintf(tempstring, sizeof(tempstring), "IP2LOCATION_COUNTRY_SHORT%s=%s", additionalstring, CountryCode); printout(tempstring); }; if (CountryName != NULL) { snprintf(tempstring, sizeof(tempstring), "IP2LOCATION_COUNTRY_LONG%s=%s", additionalstring, CountryName); printout(tempstring); }; } else { if (strlen(additionalstring) > 0) { snprintf(tempstring, sizeof(tempstring), "IP2Location reports for %s country %s (%s)", additionalstring, (CountryName != 0 ? CountryName : "UNKNOWN"), (CountryCode != NULL ? CountryCode : "??")); } else { snprintf(tempstring, sizeof(tempstring), "IP2Location reports country %s (%s)", (CountryName != 0 ? CountryName : "UNKNOWN"), (CountryCode != NULL ? CountryCode : "??")); }; printout(tempstring); }; DEBUGPRINT_WA(DEBUG_showinfo, "IP2Location IPv%d try to open database by type: %s", version, libipv6calc_db_wrapper_IP2Location_dbdescription(ip2location_type)); if (libipv6calc_db_wrapper_IP2Location_db_avail(ip2location_type) != 1) { DEBUGPRINT_WA(DEBUG_showinfo, "IP2Location IPv%d database by type not available: %s", version, libipv6calc_db_wrapper_IP2Location_dbdescription(ip2location_type)); // stay silent return; }; IP2LocationObj = libipv6calc_db_wrapper_IP2Location_open_type(ip2location_type); if (IP2LocationObj == NULL) { DEBUGPRINT_WA(DEBUG_showinfo, "IP2Location IPv%d database open_type failed: %s", version, libipv6calc_db_wrapper_IP2Location_dbdescription(ip2location_type)); // stay silent return; }; IP2LocationRecord *record = libipv6calc_db_wrapper_IP2Location_get_all(IP2LocationObj, (char*) addrstring); if (record != NULL) { if ( machinereadable != 0 ) { #define TEST_IP2LOCATION_AVAILABLE(v) ((strstr(v, "unavailable") == NULL) && (strstr(v, "demo database") == NULL)) if (TEST_IP2LOCATION_AVAILABLE(record->region)) { snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_REGION%s=%s", additionalstring, record->region); printout(tempstring); }; if (TEST_IP2LOCATION_AVAILABLE(record->city)) { snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_CITY%s=%s", additionalstring, record->city); printout(tempstring); }; if (TEST_IP2LOCATION_AVAILABLE(record->isp)) { snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_ISP%s=%s", additionalstring, record->isp); printout(tempstring); }; if ((record->latitude != 0) && (record->longitude != 0)) { snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_LATITUDE%s=%f", additionalstring, record->latitude); printout(tempstring); snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_LONGITUDE%s=%f", additionalstring, record->longitude); printout(tempstring); }; if (TEST_IP2LOCATION_AVAILABLE(record->domain)) { snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_DOMAIN%s=%s", additionalstring, record->domain); printout(tempstring); }; if (TEST_IP2LOCATION_AVAILABLE(record->zipcode)) { if (strcmp(record->zipcode, "-") != 0) { snprintf(tempstring, sizeof(tempstring) - 1, "IP2LOCATION_ZIPCODE%s=%s", additionalstring, record->zipcode); printout(tempstring); }; }; } else { fprintf(stderr, " IP2Location not machinereadable output currently not supported\n"); }; libipv6calc_db_wrapper_IP2Location_free_record(record); } else { if ((formatoptions & FORMATOPTION_quiet) == 0) { fprintf(stderr, "%s: IP2Location returned no record for address: %s\n", DEBUG_function_name, addrstring); }; }; libipv6calc_db_wrapper_IP2Location_close(IP2LocationObj); }; #undef DEBUG_function_name #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"); if (wrapper_features_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 ) { snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_AS_TEXT%s=%s", additionalstring, as_text); printout(tempstring); }; }; 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 ( machinereadable != 0 ) { if (gir->region != NULL) { snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_REGION%s=%s", additionalstring, gir->region); printout(tempstring); }; if (gir->city != NULL) { snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_CITY%s=%s", additionalstring, gir->city); printout(tempstring); }; if (gir->postal_code != NULL) { snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_ZIPCODE%s=%s", additionalstring, gir->postal_code); printout(tempstring); }; snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_LATITUDE%s=%f", additionalstring, gir->latitude); printout(tempstring); snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_LONGITUDE%s=%f", additionalstring, gir->longitude); printout(tempstring); /* snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_DMACODE%s=%d", additionalstring, gir->dma_code); printout(tempstring); snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_AREACODE%s=%d", additionalstring, gir->area_code); printout(tempstring); */ } else { fprintf(stderr, " GeoIP not machinereadable output currently not supported\n"); }; libipv6calc_db_wrapper_GeoIPRecord_delete(gir); }; 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 ) { snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_COUNTRY_SHORT%s=%s", additionalstring, returnedCountry); printout(tempstring); if (returnedCountryName != NULL) { snprintf(tempstring, sizeof(tempstring) - 1, "GEOIP_COUNTRY_LONG%s=%s", additionalstring, returnedCountryName); printout(tempstring); } else { DEBUGPRINT_NA(DEBUG_showinfo, "returnedCountryName=NULL"); }; } else { if (returnedCountryName != NULL) { fprintf(stderr, " GeoIP country name and code: %s (%s)\n", returnedCountryName, returnedCountry); } else { fprintf(stderr, " GeoIP country code: %s\n", returnedCountry); }; }; }; }; #endif /* print IPv4 address */ #define DEBUG_function_name "showinfo/print_ipv4addr" 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; 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, 0); if ( retval != 0 ) { fprintf(stderr, "Error converting IPv4 address: %s\n", tempipv4string); }; if ((formatoptions & FORMATOPTION_printembedded) != 0) { snprintf(embeddedipv4string, sizeof(embeddedipv4string) - 1, "[%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, 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)) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_SOURCE%s=%s", embeddedipv4string, string); printout(tempstring); }; /* address */ snprintf(tempstring, sizeof(tempstring) - 1, "IPV4%s=%s", embeddedipv4string, tempipv4string); printout(tempstring); if ((typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { if (retval_anon == 0 ) { /* anonymized address */ snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_ANON%s=%s", embeddedipv4string, tempstring2); printout(tempstring); } else { // TODO: only show this on verbose (must be implemented) // snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_ANON%s=(unsupported, too less DB features available)", embeddedipv4string); // printout(tempstring); }; }; if (ipv4addrp->flag_prefixuse == 1) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_PREFIXLENGTH%s=%d", embeddedipv4string, (int) ipv4addrp->prefixlength); printout(tempstring); }; j = 0; snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_TYPE%s=", embeddedipv4string); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv4addrtypestrings); i++ ) { if ( (typeinfo & ipv6calc_ipv4addrtypestrings[i].number) != 0 ) { if (j != 0) { snprintf(helpstring, sizeof(helpstring) - 1, "%s,", tempstring); snprintf(tempstring, sizeof(tempstring) - 1, "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring) - 1, "%s%s", tempstring, ipv6calc_ipv4addrtypestrings[i].token); snprintf(tempstring, sizeof(tempstring) - 1, "%s", helpstring); j = 1; }; }; printout(tempstring); } else { fprintf(stdout, "IPv4 address: %s\n", tempipv4string); fprintf(stdout, "IPv4 address type: "); j = 0; for (i = 0; i < (int) (sizeof(ipv6calc_ipv4addrtypestrings) / sizeof(ipv6calc_ipv4addrtypestrings[0])); 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"); }; /* get AS Information */ if ((typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { DEBUGPRINT_NA(DEBUG_showinfo, "Call ipv4addr_anonymized_get_as_num32"); as_num32 = ipv4addr_anonymized_get_as_num32(ipv4addrp); } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_AS) == 1) { as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(tempipv4string, 4); as_text = libipv6calc_db_wrapper_as_text_by_addr(tempipv4string, 4); }; }; if (as_num32 != ASNUM_AS_UNKNOWN) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_AS_NUM%s=%d", embeddedipv4string, as_num32); printout(tempstring); if (as_text != NULL) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_AS_TEXT%s=%s", embeddedipv4string, as_text); printout(tempstring); }; } else { if (as_text != NULL) { fprintf(stdout, "Autonomous System Information: %s\n", as_text); } 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 */ if ((typeinfo & IPV4_ADDR_ANONYMIZED) != 0) { cc_index = ipv4addr_anonymized_get_cc_index(ipv4addrp); } else { if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV4_TO_CC) == 1) { cc_index = libipv6calc_db_wrapper_cc_index_by_addr(tempipv4string, 4); }; }; if (cc_index != COUNTRYCODE_INDEX_UNKNOWN) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_COUNTRYCODE%s=%c%c", embeddedipv4string, COUNTRYCODE_INDEX_TO_CHAR1(cc_index), COUNTRYCODE_INDEX_TO_CHAR2(cc_index)); printout(tempstring); } else { fprintf(stdout, "Country Code: %c%c\n", COUNTRYCODE_INDEX_TO_CHAR1(cc_index), COUNTRYCODE_INDEX_TO_CHAR2(cc_index)); }; }; if ((typeinfo & IPV4_ADDR_ANONYMIZED) == 0) { /* get registry string */ // TODO: get registry by AS, if possible retval = libipv4addr_get_registry_string(ipv4addrp, helpstring); if (retval == 1) { if (machinereadable == 0) { fprintf(stderr, "Error getting registry string for IPv4 address: %s (%s)\n", helpstring, tempipv4string); }; } else { if (machinereadable != 0) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_REGISTRY%s=%s", embeddedipv4string, helpstring); printout(tempstring); } else { fprintf(stdout, "IPv4 registry%s: %s\n", embeddedipv4string, helpstring); }; }; } else if (as_num32 != ASNUM_AS_UNKNOWN) { int registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV4_REGISTRY%s=%s", embeddedipv4string, libipv6calc_registry_string_by_num(registry)); printout(tempstring); } else { fprintf(stdout, "Registry for address: %s\n", ipv6calc_registries[j].token); }; }; 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 }; return; }; #undef DEBUG_function_name /* * print EUI-48/MAC information */ #define DEBUG_function_name "showinfo/print_eui48" static void print_eui48(const ipv6calc_macaddr *macaddrp, const uint32_t formatoptions) { char tempstring[NI_MAXHOST], helpstring[NI_MAXHOST]; uint32_t machinereadable = ( formatoptions & FORMATOPTION_machinereadable); int i, result; ipv6calc_ipv4addr ipv4addr; /* EUI-48/MAC address */ snprintf(helpstring, sizeof(helpstring) - 1, "%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 ) { snprintf(tempstring, sizeof(tempstring) - 1, "EUI48=%s", helpstring); printout(tempstring); } else { fprintf(stdout, "EUI-48/MAC address: %s\n", helpstring); }; /* scope */ if ( (macaddrp->addr[0] & 0x02) == 0 ) { if ( machinereadable != 0 ) { printout("EUI48_SCOPE=global"); } else { fprintf(stdout, "MAC is a global unique one\n"); }; } else { if ( machinereadable != 0 ) { printout("EUI48_SCOPE=local"); } 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"); } 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"); } else { fprintf(stdout, "MAC is a broadcast one\n"); }; } else { if ( machinereadable != 0 ) { printout("EUI48_TYPE=multicast"); } else { fprintf(stdout, "MAC is a multicast one\n"); }; }; }; /* vendor string */ result = libieee_get_vendor_string(helpstring, macaddrp); if (result == 0) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "OUI=\"%s\"", helpstring); printout(tempstring); } 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; }; #undef DEBUG_function_name /* * print EUI-64 information */ #define DEBUG_function_name "showinfo/print_eui64" 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) - 1, "%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 ) { snprintf(tempstring, sizeof(tempstring) - 1, "EUI64=%s", helpstring); printout(tempstring); } else { fprintf(stdout, "EUI-64 identifier: %s\n", helpstring); }; /* scope */ if ( (eui64addrp->addr[0] & 0x02) == 0 ) { if ( machinereadable != 0 ) { printout("EUI64_SCOPE=global"); } else { fprintf(stdout, "EUI-64 identifier is a global unique one\n"); }; } else { if ( machinereadable != 0 ) { printout("EUI64_SCOPE=local"); } 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 = libieee_get_vendor_string(helpstring, &macaddr); if (result == 0) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "OUI=\"%s\"", helpstring); printout(tempstring); } else { fprintf(stdout, "OUI is: %s\n", tempstring); }; }; return; }; #undef DEBUG_function_name /* * function shows information about a given IPv6 address * * in : *ipv6addrp = pointer to IPv6 address * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "showinfo_ipv6addr" 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] = ""; const char *cc; 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; uint32_t machinereadable = ( formatoptions & FORMATOPTION_machinereadable); uint32_t payload, as_num32, cc_index; ipv6addr_anon_ptr = &ipv6addr_anon; ipv6addrp = &ipv6addr; ipv6addr_copy(ipv6addrp, ipv6addrp1); /* copy structure */ typeinfo = ipv6addr_gettype(ipv6addrp); registry = ipv6addr_getregistry(ipv6addrp); if ( (ipv6calc_debug & DEBUG_showinfo) != 0) { fprintf(stderr, "%s: result of 'ipv6addr_getregistry': %d\n", DEBUG_function_name, registry); fprintf(stderr, "%s: %08x (result of 'ipv6addr_gettype')\n", DEBUG_function_name, (unsigned int) typeinfo); }; for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_ipv6addrtypestrings); i++ ) { if ( (ipv6calc_debug & DEBUG_showinfo) != 0) { fprintf(stderr, "%s: test: %08x : %s\n", DEBUG_function_name, (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, FORMATOPTION_printfulluncompressed); if ( retval != 0 ) { fprintf(stderr, "Error uncompressing IPv6 address: %s\n", ipv6addrstring); retval = 1; goto END; }; ipv6addrp->flag_prefixuse = flag_prefixuse; 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, FORMATOPTION_printfulluncompressed); if ( retval != 0 ) { fprintf(stderr, "Error uncompressing IPv6 address: %s\n", tempstring2); retval = 1; retval_anon = 2; }; }; }; if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6=%s", ipv6addrstring); printout(tempstring); if ((typeinfo & (IPV6_ADDR_ANONYMIZED_PREFIX | IPV6_ADDR_ANONYMIZED_IID | IPV6_ADDR_LOOPBACK)) == 0 ) { if (retval_anon == 0) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_ANON=%s", tempstring2); } else { // TODO: only show this on verbose (must be implemented) // snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_ANON=(unsupported, too less DB features available)"); }; printout(tempstring); }; if (ipv6addrp->flag_prefixuse == 1) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_PREFIXLENGTH=%d", (int) ipv6addrp->prefixlength); printout(tempstring); }; j = 0; snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_TYPE="); for (i = 0; i < (int) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); i++ ) { if ( (typeinfo & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { if (j != 0) { snprintf(helpstring, sizeof(helpstring) - 1, "%s,", tempstring); snprintf(tempstring, sizeof(tempstring) - 1, "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring) - 1, "%s%s", tempstring, ipv6calc_ipv6addrtypestrings[i].token); snprintf(tempstring, sizeof(tempstring) - 1, "%s", helpstring); j = 1; }; }; printout(tempstring); } else { fprintf(stdout, "Address type: "); j = 0; for (i = 0; i < (int) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); 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_6TO4) != 0 ) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, 1); if (r == 0) { retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, 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 = libipv4addr_get_registry_string(&ipv4addr, helpstring); if ( machinereadable != 0 ) { } else { fprintf(stdout, "IPv4 registry for 6to4 address: %s\n", helpstring); }; }; }; if ( (typeinfo & IPV6_NEW_ADDR_TEREDO) != 0 ) { /* extract Teredo client IPv4 address */ r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, 1); if (r == 0) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr2, 2); 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, 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) - 1, "TEREDO_PORT_CLIENT=%u", (unsigned int) port); printout(tempstring); } 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 = libipv4addr_get_registry_string(&ipv4addr2, helpstring); if ( machinereadable != 0 ) { } else { fprintf(stdout, "IPv4 registry for Teredo server address: %s\n", helpstring); }; }; }; }; if ( (typeinfo & IPV6_NEW_ADDR_NAT64) != 0 ) { r = libipv6addr_get_included_ipv4addr(ipv6addrp, &ipv4addr, 0); 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)) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "SLA=%04x", (unsigned int) ipv6addr_getword(ipv6addrp, 3)); printout(tempstring); } else { fprintf(stdout, "Address type has SLA: %04x\n", (unsigned int) ipv6addr_getword(ipv6addrp, 3)); }; }; /* IPv6 Registry, CountryCode, AS? */ if ((typeinfo & IPV6_ADDR_ANONYMIZED_PREFIX) == 0) { /* no anonymized address */ if ( (ipv6calc_debug & DEBUG_showinfo) != 0) { fprintf(stderr, "%s: Check registry: %d\n", DEBUG_function_name, registry); }; /* get registry string */ retval = libipv6addr_get_registry_string(ipv6addrp, helpstring); if ( retval == 1 && machinereadable == 0 ) { fprintf(stderr, "Error getting registry string for IPv6 address: %s\n", helpstring); } else { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_REGISTRY=%s", helpstring); printout(tempstring); } else { fprintf(stdout, "Registry for address: %s\n", helpstring); }; }; if ((typeinfo & IPV6_NEW_ADDR_AGU) != 0) { /* global address */ if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_CC) == 1) { /* get country code */ cc = libipv6calc_db_wrapper_country_code_by_addr(ipv6addrstring, 6); if ((cc == NULL) && (machinereadable == 0)) { fprintf(stderr, "Error getting country code for IPv6 address\n"); } else { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_COUNTRYCODE=%s", (cc != NULL ? cc : "(unknown)")); printout(tempstring); } else { fprintf(stdout, "Country Code: %s\n", cc); }; }; }; if (libipv6calc_db_wrapper_has_features(IPV6CALC_DB_IPV6_TO_AS) == 1) { /* get AS Number */ as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(ipv6addrstring, 6); if ((as_num32 == 0) && (machinereadable == 0)) { fprintf(stderr, "Error getting AS number for IPv6 address\n"); } else { if ( machinereadable != 0 ) { if (as_num32 == 0) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_AS_NUM=(unknown)"); } else { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_AS_NUM=%d", as_num32); }; printout(tempstring); } else { fprintf(stdout, "ASN for address: %d\n", as_num32); }; }; }; }; } else { /* retrieve CountryCodeIndex from anonymization value */ r = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_CCINDEX, &cc_index); if (r == 0) { if (cc_index > COUNTRYCODE_INDEX_MAX) { if ( machinereadable != 0 ) { fprintf(stderr, "Error getting CountryCode from anonymized IPv6 address\n"); }; } else if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_COUNTRYCODE=(unknown)"); printout(tempstring); } else { fprintf(stdout, "Country Code: (unknown)\n"); }; } else if (cc_index <= COUNTRYCODE_INDEX_LETTER_MAX) { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_COUNTRYCODE=%c%c", COUNTRYCODE_INDEX_TO_CHAR1(cc_index), COUNTRYCODE_INDEX_TO_CHAR2(cc_index)); printout(tempstring); } else { fprintf(stdout, "Country Code: %c%c\n", COUNTRYCODE_INDEX_TO_CHAR1(cc_index), COUNTRYCODE_INDEX_TO_CHAR2(cc_index)); }; } else { if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_COUNTRYCODE=(unsupported)"); printout(tempstring); } else { fprintf(stdout, "Country Code: (unsupported)\n"); }; }; registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); if ( machinereadable != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_REGISTRY=%s", libipv6calc_registry_string_by_num(registry)); printout(tempstring); } else { fprintf(stdout, "Registry for address: %s\n", libipv6calc_registry_string_by_num(registry)); }; }; /* retrieve ASN from anonymization value */ r = ipv6addr_get_payload_anonymized_prefix(ipv6addrp, ANON_PREFIX_PAYLOAD_ASN32, &as_num32); if (r == 0) { if ((as_num32 == 0) && (machinereadable == 0)) { fprintf(stderr, "Error getting AS number from anonymized IPv6 address\n"); } else { if ( machinereadable != 0 ) { if (as_num32 == 0) { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_AS_NUM=(unknown)"); } else { snprintf(tempstring, sizeof(tempstring) - 1, "IPV6_AS_NUM=%d", as_num32); }; printout(tempstring); } else { fprintf(stdout, "ASN for address: %d\n", as_num32); }; }; }; }; /* 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, 0); 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) - 1, "IID=%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(tempstring); } 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) - 1, "EUI64=??:??:??:??:??:%02x:%02x:%02x", (unsigned int) ipv6addr_getoctet(ipv6addrp, 13), (unsigned int) ipv6addr_getoctet(ipv6addrp, 14), (unsigned int) ipv6addr_getoctet(ipv6addrp, 15)); printout(tempstring); } 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"); } else if ((typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0) { printout("EUI64_SCOPE=local-random"); } else { printout("EUI64_SCOPE=local"); }; } 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, 0); if ( machinereadable != 0 ) { } else { if ((typeinfo & IPV6_ADDR_ANONYMIZED_IID) != 0) { snprintf(tempstring, sizeof(tempstring) - 1, "n/a (previosly anonymized)"); } else { snprintf(tempstring, sizeof(tempstring) - 1, "%s", ipv6addrstring+7); }; fprintf(stdout, "ORCHID hash (100 bits): %s\n", tempstring); }; }; END: i = ipv6addr_getregistry(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 }; }; printfooter(formatoptions); retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "showinfo_eui48" int showinfo_eui48(const ipv6calc_macaddr *macaddrp, const uint32_t formatoptions) { int retval = 1; print_eui48(macaddrp, formatoptions); printfooter(formatoptions); retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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); }; ipv6calc-0.95.0/ipv6calc/ipv6calchelp_local.h0000664000175100017510000000070312232272203017745 0ustar peterpeter/* * Project : ipv6calc/ipv6calc * File : ipv6calchelp_local.h * Version : $Id: ipv6calchelp_local.h,v 1.1 2013/10/24 19:26:59 ds6peter Exp $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * Header file for ipv6calchelp_local.c */ extern void printversion(void); extern void printversion_verbose(int level_verbose); extern void ipv6calc_printinfo(void); extern void ipv6calc_printhelp(void); ipv6calc-0.95.0/ipv6calc/ipv6calc.c0000664000175100017510000015034012241345317015727 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calc/ipv6calc.c * Version : $Id: ipv6calc.c,v 1.102 2013/11/15 07:18:39 ds6peter Exp $ * Copyright : 2001-2013 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 "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 "libeui64.h" #include "config.h" #include "libieee.h" #include "../databases/ieee-oui/dbieee_oui.h" #include "../databases/ieee-oui36/dbieee_oui36.h" #include "../databases/ieee-iab/dbieee_iab.h" #include "libipv4addr.h" #include "../databases/ipv4-assignment/dbipv4addr_assignment.h" #include "libipv6addr.h" #include "../databases/ipv6-assignment/dbipv6addr_assignment.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; /* 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 /**************************************************/ /* main */ #define DEBUG_function_name "ipv6calc/main" int main(int argc, char *argv[]) { char resultstring[NI_MAXHOST] = ""; char resultstring2[NI_MAXHOST] = ""; char resultstring3[NI_MAXHOST] = ""; int retval = 1, i, j, lop, result; 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; /* 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; /* 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[MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; /* initialize debug value from environment for bootstrap debugging */ ipv6calc_debug_from_env(); /* 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. */ if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: Start parsing options: shortopts=%s\n", __FILE__, __func__, shortopts); i = 0; while(longopts[i].name != NULL) { fprintf(stderr, "%s/%s: Long option: %s/%d/%08x\n", __FILE__, __func__, longopts[i].name, longopts[i].has_arg, longopts[i].val); i++; }; }; while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: Parsing option: 0x%08x\n", __FILE__, __func__, i); }; /* 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 */ 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 'f': flush_mode = 1; break; case 'h': case '?': command |= CMD_printhelp; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: help option detected\n", DEBUG_function_name); }; 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; case CMD_printoldoptions: command = CMD_printoldoptions; 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, &ipv4addr2); break; case CMD_6rd_prefix: retval = addr_to_ipv6addrstruct(optarg, resultstring, &ipv6addr); 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: if (ipv6calc_debug != 0) fprintf(stderr, "%s: format option 'forceprefix' selected\n", DEBUG_function_name); 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: if (ipv6calc_debug != 0) fprintf(stderr, "%s: format option 'printstart' selected\n", DEBUG_function_name); 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: if (ipv6calc_debug != 0) fprintf(stderr, "%s: format option 'printend' selected\n", DEBUG_function_name); 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 '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: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Got input string: %s\n", DEBUG_function_name, 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: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Got output string: %s\n", DEBUG_function_name, 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(); 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 (command == CMD_printhelp) { if ( (outputtype == FORMAT_undefined) && (inputtype == FORMAT_undefined) && (action == ACTION_undefined)) { ipv6calc_printhelp(); 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) { printhelp_inputtypes(formatoptions); 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); /* 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(); }; 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 (command == CMD_printoldoptions) { printhelp_oldoptions(longopts); 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...\n"); }; 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) - 1, "%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 < (int) (sizeof(ipv6calc_formatstrings) / sizeof(ipv6calc_formatstrings[0])); 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 < (int) (sizeof(ipv6calc_actionstrings) / sizeof(ipv6calc_actionstrings[0])); 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 < (int) (sizeof(ipv6calc_outputformatoptionmap) / sizeof(ipv6calc_outputformatoptionmap[0])); 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 < (int) (sizeof(ipv6calc_formatoptionstrings) / sizeof (ipv6calc_formatoptionstrings[0])); 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_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, &ipv6addr); argc--; break; case FORMAT_ipv6literal: retval = addrliteral_to_ipv6addrstruct(input1, resultstring, &ipv6addr); argc--; break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(input1, resultstring, &ipv4addr); argc--; break; case FORMAT_ipv4hex: retval = addrhex_to_ipv4addrstruct(input1, resultstring, &ipv4addr, 0); argc--; break; case FORMAT_ipv4revhex: retval = addrhex_to_ipv4addrstruct(input1, resultstring, &ipv4addr, 1); argc--; break; case FORMAT_base85: retval = base85_to_ipv6addrstruct(input1, resultstring, &ipv6addr); argc--; break; case FORMAT_mac: retval = mac_to_macaddrstruct(input1, resultstring, &macaddr); argc--; break; case FORMAT_eui64: retval = libeui64_addr_to_eui64addrstruct(input1, resultstring, &eui64addr); argc--; break; case FORMAT_ifinet6: if (inputc < 2) { retval = libifinet6_ifinet6_to_ipv6addrstruct(input1, resultstring, &ipv6addr); } else { retval = libifinet6_ifinet6_withprefixlength_to_ipv6addrstruct(input1, input2, resultstring, &ipv6addr); }; break; case FORMAT_iid_token: /* Get first interface identifier */ retval = identifier_to_ipv6addrstruct(input1, resultstring, &ipv6addr); if (retval != 0) { break; }; /* Get second token */ retval = tokenlsb64_to_ipv6addrstruct(input2, resultstring, &ipv6addr2); break; case FORMAT_prefix_mac: /* Get first: IPv6 prefix */ retval = addr_to_ipv6addrstruct(input1, resultstring, &ipv6addr); if (retval != 0) { break; }; /* Get second: MAC address */ retval = mac_to_macaddrstruct(input2, resultstring, &macaddr); break; case FORMAT_revnibbles_int: case FORMAT_revnibbles_arpa: retval = librfc1886_nibblestring_to_ipv6addrstruct(input1, &ipv6addr, resultstring); argc--; break; case FORMAT_bitstring: retval = librfc2874_bitstring_to_ipv6addrstruct(input1, &ipv6addr, resultstring); 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 (ipv6addr.flag_valid == 1) { /* 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) ) { outputtype = FORMAT_ipv6addr; } 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; }; if ( outputtype != FORMAT_undefined ) { for (i = 0; i < (int) (sizeof(ipv6calc_formatstrings) / sizeof(ipv6calc_formatstrings[0])); 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) - 1, "%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); } else { fprintf(stderr, "Unsupported 6to4 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 ) { fprintf(stderr, "No valid IPv4 address given as 6rd relay prefix!\n"); exit(EXIT_FAILURE); } 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); 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 { /* TODO: more specific notice */ fprintf(stderr, "Action-type isn't currently implemented for inputtype\n"); }; if (result != 0) { /* skip everything */ DEBUGPRINT_WA(DEBUG_ipv6calc_general, "filter result SKIP: '%s'", linebuffer); } else { snprintf(resultstring, sizeof(resultstring) - 1, "%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); }; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: End of action\n", DEBUG_function_name); }; /***** output type *****/ if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Process output (outputtype: 0x%08lx)\n", DEBUG_function_name, (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 { 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: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_base85\n", DEBUG_function_name); } if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; retval = ipv6addrstruct_to_base85(&ipv6addr, resultstring); break; case FORMAT_bitstring: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_bitstring\n", DEBUG_function_name); } if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Call 'librfc2874_addr_to_bitstring'\n", DEBUG_function_name); }; retval = librfc2874_addr_to_bitstring(&ipv6addr, resultstring, formatoptions); break; case FORMAT_octal: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_octal\n", DEBUG_function_name); } if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_octal(&ipv4addr, resultstring, formatoptions); } else if (ipv6addr.flag_valid == 1) { retval = libipv6addr_to_octal(&ipv6addr, resultstring, formatoptions); }; break; case FORMAT_hex: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_hex\n", DEBUG_function_name); } if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_hex(&ipv4addr, resultstring, formatoptions); } else if (ipv6addr.flag_valid == 1) { retval = libipv6addr_to_hex(&ipv6addr, resultstring, formatoptions); }; break; case FORMAT_revnibbles_int: case FORMAT_revnibbles_arpa: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_revnibbles_int/arpa\n", DEBUG_function_name); } if (ipv6addr.flag_valid == 1) { switch (outputtype) { case FORMAT_revnibbles_int: retval = librfc1886_addr_to_nibblestring(&ipv6addr, resultstring, formatoptions, "ip6.int."); break; case FORMAT_revnibbles_arpa: retval = librfc1886_addr_to_nibblestring(&ipv6addr, resultstring, formatoptions, "ip6.arpa."); break; }; } else { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; break; case FORMAT_revipv4: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_revipv4\n", DEBUG_function_name); } if (ipv4addr.flag_valid == 1) { retval = libipv4addr_to_reversestring(&ipv4addr, resultstring, formatoptions); } else { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; break; case FORMAT_ifinet6: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_ifinet6\n", DEBUG_function_name); } if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; retval = libifinet6_ipv6addrstruct_to_ifinet6(&ipv6addr, resultstring); break; case FORMAT_ipv6addr: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_ipv6addr\n", DEBUG_function_name); } 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, formatoptions); } else { retval = librfc1884_ipv6addrstruct_to_compaddr(&ipv6addr, 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: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_ipv6literal\n", DEBUG_function_name); } 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, formatoptions | FORMATOPTION_literal); } else { retval = librfc1884_ipv6addrstruct_to_compaddr(&ipv6addr, resultstring, formatoptions | FORMATOPTION_literal); }; break; case FORMAT_ipv4addr: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_ipv4addr\n", DEBUG_function_name); } if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, 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, formatoptions); } else if (action == ACTION_anonymize) { retval = libeui64_eui64addrstruct_to_string(&eui64addr, resultstring, formatoptions); } else { fprintf(stderr, "Specify proper action or input for output format: eui64\n"); exit(EXIT_FAILURE); }; break; case FORMAT_mac: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_mac\n", DEBUG_function_name); } if (macaddr.flag_valid != 1) { fprintf(stderr, "No valid MAC address given!\n"); exit(EXIT_FAILURE); }; retval = macaddrstruct_to_string(&macaddr, resultstring, formatoptions); break; case FORMAT_iid_token: if (ipv6calc_debug != 0) { fprintf(stderr, "%s: Start of output handling for FORMAT_iid_token\n", DEBUG_function_name); } 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, formatoptions | FORMATOPTION_printsuffix); if (retval != 0) { break; }; /* get token */ retval = libipv6addr_ipv6addrstruct_to_tokenlsb64(&ipv6addr2, resultstring3, formatoptions); /* cat together */ snprintf(resultstring, sizeof(resultstring) - 1, "%s %s", resultstring2, resultstring3); break; default: fprintf(stderr, " Outputtype isn't implemented: %8lx\n", (unsigned long) outputtype); exit(EXIT_FAILURE); }; if (ipv6calc_debug != 0) { fprintf(stderr, "%s: End of output handling\n", DEBUG_function_name); }; 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; }; exit(retval); }; #undef DEBUG_function_name ipv6calc-0.95.0/ipv6calc/ipv6calc.h0000664000175100017510000000127012233410553015725 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calc.h * Version : $Id: ipv6calc.h,v 1.16 2013/10/28 07:25:31 ds6peter Exp $ * Copyright : 2001-2013 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; ipv6calc-0.95.0/ipv6calc/Makefile.in0000664000175100017510000000407312231545434016123 0ustar peterpeter# Project : ipv6calc # File : ipv6calc/Makefile[.in] # Version : $Id: Makefile.in,v 1.39 2013/10/22 18:59:40 ds6peter Exp $ # Copyright : 2002-2013 by Peter Bieringer # # Information: # Makefile for ipv6calc # prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ # Compiler and Linker Options DEFAULT_CFLAGS ?= -O2 -Wall -g INCLUDES= @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE@ @GEOIP_INCLUDE@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IP2LOCATION_LIB@ @GEOIP_LIB@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ ../md5/md5.o CC = @CC@ 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) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< $(OBJS): ipv6calc.h ipv6calchelp_local.h showinfo.h ipv6calcoptions_local.h ../config.h libipv6calc.a: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper.a: cd ../ && ${MAKE} lib-make ipv6calc: $(OBJS) libipv6calc.a libipv6calc_db_wrapper.a $(CC) $(LDFLAGS) -o ipv6calc $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ $(LIBS) -lm static: ipv6calc $(CC) $(LDFLAGS) -o ipv6calc-static $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ -static $(LIBS) -lm distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6calc ipv6calc-static *.o test: ipv6calc ./test_ipv6calc.sh || exit 1 ./test_ipv6calc_filter.sh || exit 1 ./test_ipv6calc_anonymization.sh || exit 1 ./test_showinfo.sh || exit 1 test-minimal: ipv6calc ./test_ipv6calc.sh || exit 1 ./test_showinfo.sh minimal || exit 1 codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: ipv6calc mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6calc $(DESTDIR)$(bindir) ipv6calc-0.95.0/ipv6calc/test_ipv6calc_anonymization.sh0000775000175100017510000000735312204605673022150 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6calc_anonymization.sh # Version : $Id: test_ipv6calc_anonymization.sh,v 1.3 2013/08/20 06:24:59 ds6peter Exp $ # Copyright : 2013-2013 by Peter Bieringer # # Test ipv6calc anonymization 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() { echo "Run 'ipv6calc' anonymization tests..." test_list | while read input filter; do if [ -z "$input" ]; then # end continue fi echo "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 echo "INFO : anonymized: $output" type_orig="`./ipv6calc -q -i "$input" -m | grep "^IPV._TYPE=" | sed 's/IPV._TYPE=//'`" type_anon="`./ipv6calc -q -i "$output" -m | grep "^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 "^EUI.._TYPE=" | sed 's/EUI.._TYPE=//'`" type_anon="`./ipv6calc -q -i "$output" -m | grep "^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,}" echo "DEBUG : IPV6_TYPE orig: $type_orig_compare" echo "DEBUG : IPV6_TYPE anon: $type_anon_compare" # Check result if [ "$type_orig_compare" != "$type_anon_compare" ]; then echo "ERROR : IPV6_TYPE not equal:" exit 1 else echo "Result ok!" fi done || return 1 } #run_anon_tests || exit 1 run_anon_options_tests() { echo "Run 'ipv6calc' anonymization option tests..." 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 echo "INFO : $command -> test ok" fi done || return 1 } 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 echo "Run 'ipv6calc' anonymization option kp tests..." testscenarios_anonymization_options_kp | 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 echo "INFO : $command -> test ok" fi done || return 1 } run_anon_options_tests || exit 1 run_anon_options_kp_tests || exit 1 run_anon_tests || exit 1 ipv6calc-0.95.0/ipv6calc/ipv6calchelp_local.c0000664000175100017510000000674612233410553017760 0ustar peterpeter/* * Project : ipv6calc/ipv6calc * File : ipv6calchelp_local.c * Version : $Id: ipv6calchelp_local.c,v 1.2 2013/10/28 07:25:31 ds6peter Exp $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * Help library */ #include #include #include #include "ipv6calc.h" #include "ipv6calctypes.h" #include "ipv6calccommands.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); #ifdef SUPPORT_IP2LOCATION fprintf(stderr, " IP2Location"); #endif #ifdef SUPPORT_GEOIP fprintf(stderr, " GeoIP"); #ifdef SUPPORT_GEOIP_V6 fprintf(stderr, " GeoIPv6"); #endif #endif 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_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 or -v -v' for more details\n\n", PROGRAM_NAME); }; /* print global help */ void ipv6calc_printhelp(void) { printversion(); printcopyright(); fprintf(stderr, "\n"); fprintf(stderr, "This program formats and calculates IPv6 addresses and can do many more tricky things\n"); fprintf(stderr, "\n"); printhelp_common(); fprintf(stderr, "\n"); 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, " Other usage:\n"); fprintf(stderr, " --showinfo|-i [--machine_readable|-m] : show information about input data\n"); fprintf(stderr, " --showinfo|-i --show_types : show available types on '-m'\n"); fprintf(stderr, "\n"); fprintf(stderr, " To see old-style option use: --printoldoptions\n"); fprintf(stderr, "\n"); return; }; ipv6calc-0.95.0/ipv6calc/test_scenarios.sh0000775000175100017510000004372112234545236017450 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_scenarios.sh # Version : $Id: test_scenarios.sh,v 1.37 2013/10/31 21:24:46 ds6peter Exp $ # Copyright : 2001-2013 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: * Header file containing options for ipv6calc */ #include #include #include "ipv6calctypes.h" #include "ipv6calccommands.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 = "vhrmabfiulUFCI: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 }, {"printoldoptions", 0, NULL, CMD_printoldoptions }, {"old" , 0, NULL, CMD_printoldoptions }, /* 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 }, /* 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 { "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 */ { "6rd_relay_prefix" , 1, NULL, CMD_6rd_relay_prefix }, { "6rd_prefix" , 1, NULL, CMD_6rd_prefix }, }; ipv6calc-0.95.0/TODO0000664000175100017510000000265107757702464013056 0ustar peterpeter# Project: ipv6calc # File : TODO # Version: $Id: TODO,v 1.24 2003/11/22 15:48:04 peter Exp $ TODO list ========= Short term ---------- Middle term ----------- Features: * showinfo/machinereadable: should be able to switch between multiline and single line mode (source is already prepared) should be able to print a prefix on tokens (source is already prepared)A Format: * octal: should also be understandable by input (currently, only output is supported) Data libraries * print date of last update in version information * optional usage of GeoIP library IEEE/OUI library: * perhaps more filtering of unnecessary information Creating a dedicated output library Code cleanup: * finish splint Help: * add more examples in inline help ipv6calcweb.cgi: * add alarm wrapper around call of ipv6calc Creating a dedicated library: libipv6calc.so (if someone requires it) 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.95.0/Makefile.in0000664000175100017510000001076412234266611014420 0ustar peterpeter# Project : ipv6calc # File : Makefile[.in] # Version : $Id: Makefile.in,v 1.78 2013/10/30 20:35:21 ds6peter Exp $ # Copyright : 2001-2013 by Peter Bieringer # # Information: # Main Makefile for ipv6calc project # # Compiler and Linker Options export DEFAULT_CFLAGS = -D_GNU_SOURCE -O2 -Wall -g $(EXTRA_CFLAGS) ifeq (@ENABLE_BUNDLED_GETOPT@, 1) GETOPT_MAKE = getopt-make endif CC = @CC@ all: md5-make $(GETOPT_MAKE) ipv6calc ipv6logconv ipv6logstats ipv6loganon .c.o: $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< 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} $@ ; \ rm -rf autom4te.cache; \ cd $$ocwd ; \ done distclean: ${MAKE} clean rm -f config.cache config.status config.log rm -rf autom4te.cache for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc man lib md5 $(GETOPT_MAKE) databases/ieee-oui databases/ieee-iab databases/ipv4-assignment databases/ipv6-assignment databases/registries; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; \ rm -rf autom4te.cache; \ cd $$ocwd ; \ done autoclean: ${MAKE} distclean rm -f Makefile rm -f contrib/ipv6calc.spec rm -f config.h for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc man lib databases/lib md5 $(GETOPT_MAKE); do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; \ cd $$ocwd ; \ done clean: for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc man lib databases/lib md5 $(GETOPT_MAKE); do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; \ cd $$ocwd ; \ done install: for dir in ipv6logconv ipv6loganon ipv6logstats ipv6calcweb ipv6calc man lib $(GETOPT_MAKE); do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} install; \ cd $$ocwd ; \ done getopt-make: cd getopt && ${MAKE} md5-make: cd md5 && ${MAKE} lib-make: md5-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} 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 static: ipv6logconv-make ipv6loganon-make ipv6logstats-make ipv6calc-make for dir in ipv6logconv ipv6logstats ipv6loganon ipv6calc; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ ; \ cd $$ocwd ; \ done test: for dir in ipv6calc ipv6logconv ipv6logstats ipv6loganon ipv6calcweb; do \ ocwd=`pwd`; \ cd $$dir || exit 1; \ ${MAKE} $@ || exit 1; \ cd $$ocwd ; \ 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} $@ || exit 1; \ cd $$ocwd ; \ 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} $@ || exit 1; \ cd $$ocwd ; \ done ipv6calc-0.95.0/samplecode/0000775000175100017510000000000012242072067014456 5ustar peterpeteripv6calc-0.95.0/samplecode/ipv6.h0000664000175100017510000002117407436532243015526 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.95.0/samplecode/addrconf.c0000664000175100017510000013432507436532243016420 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.95.0/samplecode/coreutils/0000775000175100017510000000000012242072067016467 5ustar peterpeteripv6calc-0.95.0/samplecode/coreutils/md5.h0000664000175100017510000001114610140707675017335 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.95.0/samplecode/coreutils/md5.c0000664000175100017510000003326710140707675017340 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.95.0/samplecode/ip6_int0000775000175100017510000000662707360065414015772 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.95.0/samplecode/getopt/0000775000175100017510000000000012242072067015760 5ustar peterpeteripv6calc-0.95.0/samplecode/getopt/libgnugetopt-1.1.tar.gz0000664000175100017510000002613507436762051022126 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ÍwIÐ4Yu0J5³é%goøË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ãï†㤨öÌÕ(Å<Ã!‘µC쎈#ãö×™zö¬¤«hî'R+äÄ¢ïÙ^Ö­_$ÍÒ¦ÝÅÖá«=»7Õ¼WPk0'ÀÍy_5/Öàgóí·¿úÉŠãÔàjm´ CQÌŸ@NâßWÿ¹¥þ׺ø‚k|®þ·Þ™®ÿµÛ÷õ¿¿â!{¡£„r{rœqÝUÚ»/êÝõî‹z_´¨ç3~WQxí³jGu6O˜ëõ¢Q26ôm蔚¨ùíyø2—{C¥_fä‡Ã1i»³Až Õ©hö‚Û´0Ñ9+ú;ª%ùçX¼o&ÓÌ"¼Ô|¾mLn‘3H‚ãnXŸrz YÖ¼ÀVb²@JV§YŠÓóz¸s|r¸ßÛÝï¾Ø9d \ó¹ÅOƒ*ZZødHu™»œŒÄʼnFŠáÊA$Ócý§º!à ŸcJ|SÔÄ*r1QKBººÝôø3]\kìÜŒ£HQå)\ÉqDoq”ÚvKåI þ©óL u]XÌhÙAœSú HÛ4.â0‰ÿ©P¡B0ƒ¤"¨ADÍÒDÀÉQa€ „¬$ø-;-”)“ÐØultvs´P¡‰6B»,@N ‰+4û"»VC*ùæÚŒèSP˜Ë­a^g½K@)ææ1£hu’õ`’¼ÐbqzŸÙ ¥Îs²0àKx®K’q¨Æµlâç8…ÉÎSзïrÿ™«š¬~¤ ‘§De¸Š{»Æžª`g‚Ã÷B›Ö\KiÆ«I9œÇþ¿±6…w1 érbåÏŠ´V{û¯z0(»ûG¥ÖY-Ÿõ@¥†Ã…ã+’ l9­åò ì ã4´„^d¨Cʡ"œíöc¦-qE$æ˜%PC˜NÁí°#ó°)‚ØsÈÎÍ-¿öÙi./ÛœƒjXTö"#5e£ˆ61<{ …€t&ØaÓ6Nž‡‰Ÿ¯Àò$o!ÝF¶¸ëôŒw9HB±€„7ÕO¹ÞfÛ¬$90§yž%ÎeC’ua »G¬íyL^Ù:x OÄÖV°£ ‡<W L¢$r™žSŒ0˜Mxñ Ë Lœm8-~T¾§24L PÙMÂDS쉼[HÛfÑý&æ:Bˆ@Jü¡‘)voâµÄ˜Ã Ò#k›¬ØGFÙ8ÃjNV˜Ry!„’I£AVXd ¾ã'1–º)‰n&º EÔÜÀ)×V|aÀ¨Bþ¶RZµfÒR‹1ª¢x##Â)¦™*t…ͬµÈü­u¨i]ã#w#f4ò¸¡aûxõ2)±­‹X!1DÇú=Ž%žV)$^(È9’B§ã!.£NQš–‘¹á«„J”áY&Â)½A°9Œ —–5·v¤S§%_g…Æ@AŒkN±Ý“­JAÑ"âJ˜ˆŒîˆƒ|YÌã~HPÈR{Í(©èí‰H´õªw•æjö¦í£±i3ÒñϦLÄÜrã÷0ç–þ vô¦ìJs'ÆŽX¤¨õÓ^®!n-2¢t5u 8°%.¸òU¤}k…ÁôÓõvZ¬ÜáU÷-OCWßgçHumò~1WŠqô®µ…˜7f/ºbu0]Ïj2ÊML1KVRI$ÉM¶²f¯³Ô­”P~Ï[ÇýãøUj»·wx H/ý¤Âc÷lÃä.D°âÜTïc&B+ —m»ƒp/O ÇPç"ßoïC¢"™æøtëä?³¥4Ýõž+ÑÆÛåé6‘ù'‰¦wÒeBVKÿ»¶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ú´”ÚÍÑ g08Ck™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מ  ÷0ðl2Vå09u/&J9£hÛ·åš¡š†<%òo×]!áÓjVÉÛ®`ƒÆ'Ïu±Ù?ºmLZÂYSÖ®yÉQfâÉM/Êrê]wýûw³Š=­ëPâgqAœŽ¸œÙ•Cdß®úãk?ÒµzÉ‘!h®v^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<Ýã Ö“÷ÊI¥3éžÅp ÔcÅ騥œ~¶¢ª4‰ìøüTöD¯w2>Ý9&ö†á‡İ{×~^åñylFݺ…´Ç¦ªC®Ê#F£¸ß#!¥t?ÄeÒÿè§ÌØ<3©|æø1¾Û4oSÁ)Zß—tmÂÅõ XBÎ冕µlË,…Æè~Ù~±çJx©¹ê8ÏÇ…'‘øŠÔ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™–`ï]HXÁèÿÛ»Öß¶$þ™ú+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†ÜDnŽ0DÓ,9öÈ»C G¡7TU®1ÄØ ©·¬¿ø…»,†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± $ÁÊ_º%KOæ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…­TQ>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…Ø[îòä—XbãVº…Iö‹£È A>Æ>VeZÈñ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ϸ¬«UcŠÀ>®à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 Ñüu1Zþ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Á4PA¥Tž°½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äWDŠ 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šHaXï ¦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@Ó±ÁtTLÙ~L™‰# ¹$¤èí“Ý,1¸«NòèÕlÓ ò”oc×Áy p;èäÇø÷ 5ºÛ¹O“€™@b}Oñn;a`׌'ê»ði¥CTÊ~ûó½°¸Õ€~ÆÓ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î6¥lɯÜ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!ñ€ƒ%ð~Õân¾zjÙ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&Œbðg'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.95.0/samplecode/getopt/URL0000664000175100017510000000017207436762051016355 0ustar peterpeterThis original code is located at: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/obrien/libgnugetopt-1.1.tar.gz ipv6calc-0.95.0/INSTALLING0000664000175100017510000001051112143642754013735 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 / CentOS 6 / Fedora 17 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 type (IEEE) * IAB type (IEEE) * IPv4 address space assignment * IPv6 address space assignment to update this database before compilation you need: - install perl, wget, aggregate - run "make update" See also: ./databases/registries/README ./databases/ipv4-assignment/README ./databases/ipv6-assignment/README ./databases/ieee-iab/README ./databases/ieee-oui/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.20 2013/05/12 07:34:04 ds6peter Exp $ ipv6calc-0.95.0/VERSION0000664000175100017510000000000712242071667013414 0ustar peterpeter0.95.0 ipv6calc-0.95.0/ipv6logstats/0000775000175100017510000000000012242072067015007 5ustar peterpeteripv6calc-0.95.0/ipv6logstats/examples-data/0000775000175100017510000000000012242072067017534 5ustar peterpeteripv6calc-0.95.0/ipv6logstats/examples-data/data-simple.txt0000664000175100017510000000021007757675616022516 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.95.0/ipv6logstats/examples-data/data-200301.txt0000664000175100017510000000115407757675616021762 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.95.0/ipv6logstats/examples-data/data-200302.txt0000664000175100017510000000115407757675616021763 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.95.0/ipv6logstats/examples-data/data-200303.txt0000664000175100017510000000116207757675616021763 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.95.0/ipv6logstats/examples-data/data-200305.txt0000664000175100017510000000116307757675616021766 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.95.0/ipv6logstats/examples-data/data-200306.txt0000664000175100017510000000120107757675616021760 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.95.0/ipv6logstats/examples-data/data-200304.txt0000664000175100017510000000116007757675616021762 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.95.0/ipv6logstats/ipv6logstatshelp.c0000664000175100017510000000464012236001772020473 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatshelp.c * Version : $Id: ipv6logstatshelp.c,v 1.12 2013/11/04 20:30:50 ds6peter Exp $ * Copyright : 2003-2013 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_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 -?' for more details\n\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"); fprintf(stderr, "\n"); printhelp_common(); fprintf(stderr, "\n"); fprintf(stderr, " [-u|--unknown] : print unknown IP addresses to stderr\n"); fprintf(stderr, " [-c|--colums] : print statistics in colums (1)\n"); fprintf(stderr, " [-n|--noheader] : don't print header in colums mode (1)\n"); fprintf(stderr, " [-o|--onlyheader] : print only header in colums mode (1)\n"); fprintf(stderr, " [-p|--prefix ] : print token as prefix (1)\n"); fprintf(stderr, " [-q|--quiet] : be more quiet\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.95.0/ipv6logstats/collect_ipv6logstats.pl0000775000175100017510000000415007757675224021544 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.95.0/ipv6logstats/ipv6logstatshelp.h0000664000175100017510000000071112166346672020510 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatshelp.h * Version : $Id: ipv6logstatshelp.h,v 1.3 2013/07/07 20:21:14 ds6peter Exp $ * Copyright : 2003-2013 by Peter Bieringer * * Information: * Header file for ipv6logstatshelp.c */ extern void printversion(void); extern void printversion_verbose(int level_verbose); extern void ipv6logstats_printinfo(void); extern void ipv6logstats_printhelp(void); ipv6calc-0.95.0/ipv6logstats/Makefile.in0000664000175100017510000000360612216764220017061 0ustar peterpeter# Project : ipv6calc/ipv6logstats # File : Makefile # Version : $Id: Makefile.in,v 1.22 2013/09/20 06:17:52 ds6peter Exp $ # Copyright : 2003-2013 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 += -D__EXTENSIONS__ INCLUDES= $(COPTS) @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE@ @GEOIP_INCLUDE@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IP2LOCATION_LIB@ @GEOIP_LIB@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ 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) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -D__EXTENSIONS__ -c $< 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) $(LDFLAGS) -o ipv6logstats $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ $(LIBS) -lm static: ipv6logstats $(CC) $(LDFLAGS) -o ipv6logstats-static $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ -static $(LIBS) -lm distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6logstats ipv6logstats-static *.o test: ipv6logstats ./test_ipv6logstats.sh test-minimal: ${MAKE} test codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: ipv6logstats mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6logstats $(DESTDIR)$(bindir) ipv6calc-0.95.0/ipv6logstats/test_ipv6logstats.sh0000775000175100017510000001232412236001772021052 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/logstats # File : test_ipv6logstats.sh # Version : $Id: test_ipv6logstats.sh,v 1.14 2013/11/04 20:30:50 ds6peter Exp $ # Copyright : 2003-2013 by Peter Bieringer # # Test program for "ipv6logstats" 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 testscenarios() { # Requests cat <&1| grep -w "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 testscenarios | ./ipv6logstats -q retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats'!" exit 1 fi echo #testscenarios (columns) testscenarios | ./ipv6logstats -q -c retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats'!" exit 1 fi echo #testscenarios version 3 if ./ipv6logstats -v 2>&1 | grep -w "STAT_CC"; then testscenarios | ./ipv6logstats -q | grep -q '\*3\*CC-proto-code-list/ALL' retval=$? if [ $retval -ne 0 ]; then echo "Error executing 'ipv6logstats' (version 3 test)" exit 1 fi else echo "Skip 'ipv6logstats' version 3 test (missing STAT_CC support)" fi # testscenarios matching if ./ipv6logstats -v 2>&1 | grep -w "STAT_CC"; then feature_cc=1 fi if ./ipv6logstats -v 2>&1 | grep -w "STAT_AS"; then feature_as=1 fi testscenarios_match | while read ip match; do 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 echo "$ip" | ./ipv6logstats -q | grep -q "$match\W*1"; then echo "OK" else echo "ERROR, unexpected result:" echo "$ip" | ./ipv6logstats -q | grep -v "DB-Info" exit 1 fi done || exit 1 echo "All tests were successfully done!" ipv6calc-0.95.0/ipv6logstats/examples-gri/0000775000175100017510000000000012242072067017404 5ustar peterpeteripv6calc-0.95.0/ipv6logstats/examples-gri/data-simple.gri0000664000175100017510000000073407757675616022343 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.95.0/ipv6logstats/ipv6logstats.c0000664000175100017510000006062512236001772017627 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstats.c * Version : $Id: ipv6logstats.c,v 1.49 2013/11/04 20:30:50 ds6peter Exp $ * Copyright : 2003-2013 by Peter Bieringer * * Information: * Dedicated program for logfile statistics */ #include #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" #define LINEBUFFER 16384 long int ipv6calc_debug = 0; int ipv6calc_quiet = 0; static int opt_unknown = 0; static int opt_simple = 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_RIPE , 0, "IPv4/RIPE" }, { STATS_IPV4_LACNIC , 0, "IPv4/LACNIC" }, { 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_RIPE , 0, "IPv6/RIPE" }, { STATS_IPV6_LACNIC , 0, "IPv6/LACNIC" }, { 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_RIPE , 0, "IPv6/6to4/RIPE" }, { STATS_IPV6_6TO4_BASE + REGISTRY_LACNIC , 0, "IPv6/6to4/LACNIC" }, { 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_RIPE , 0, "IPv6/Teredo/RIPE" }, { STATS_IPV6_TEREDO_BASE + REGISTRY_LACNIC , 0, "IPv6/Teredo/LACNIC" }, { 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_RIPE , 0, "IPv6/NAT64/RIPE" }, { STATS_IPV6_NAT64_BASE + REGISTRY_LACNIC , 0, "IPv6/NAT64/LACNIC" }, { 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[]) { int i, lop, result; unsigned long int command = 0; /* options */ struct option longopts[MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; /* 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(); /* 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)); /* Fetch the command-line arguments. */ while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { /* 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': snprintf(opt_token, sizeof(opt_token) - 1, "%s", optarg); break; case 'u': opt_unknown = 1; break; case 's': opt_simple = 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) < NI_MAXHOST) { strcpy(file_out, optarg); file_out_flag = 1; } else { fprintf(stderr, " Output file 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(); 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(); }; 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(); 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; uint32_t payload; long unsigned int c_all, c_ipv4, c_ipv6; // 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"); }; }; if (ipv6calc_debug == 1) { fprintf(stderr, "Line: %d\r", 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) - 1, "%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, &ipv6addr); break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(token, 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, 1); if (r != 0) { continue; }; // remap inputtype = FORMAT_ipv4addr; // create text represenation r = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, 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 r = libipv6addr_get_included_ipv4addr(&ipv6addr, &ipv4addr, 1); if (r != 0) { continue; }; if ((ipv4addr.scope & IPV4_ADDR_ANONYMIZED) != 0) { cc_index = ipv4addr_anonymized_get_cc_index(&ipv4addr); as_num32 = ipv4addr_anonymized_get_as_num32(&ipv4addr); /* get registry */ registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); } else { if ((feature_cc == 1) || (feature_as == 1)) { // create text represenation r = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, token, 0); if (feature_cc == 1) { /* get country code */ cc_index = libipv6calc_db_wrapper_cc_index_by_addr(token, 4); }; if (feature_as == 1) { /* get AS */ as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(token, 4); }; }; /* get registry */ registry = ipv4addr_getregistry(&ipv4addr); }; if (feature_cc == 1) { stat_inc_country_code(cc_index, 4); }; if (feature_as == 1) { stat_inc_asnum(as_num32, 4); }; 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_RIPE: stat_inc(stat_registry_base + REGISTRY_RIPE); break; case IPV4_ADDR_REGISTRY_LACNIC: stat_inc(stat_registry_base + REGISTRY_LACNIC); 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 ((ipv6addr.scope & IPV6_ADDR_ANONYMIZED_PREFIX) != 0) { DEBUGPRINT_NA(DEBUG_ipv6logstats_processing, "Anonymized IPv6 prefix found"); ipv6addr_get_payload_anonymized_prefix(&ipv6addr, ANON_PREFIX_PAYLOAD_CCINDEX, &payload); cc_index = payload; ipv6addr_get_payload_anonymized_prefix(&ipv6addr, ANON_PREFIX_PAYLOAD_ASN32, &payload); as_num32 = payload; /* get registry */ registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); DEBUGPRINT_WA(DEBUG_ipv6logstats_processing, "Anonymized IPv6 prefix information cc_index=%u as_num32=%u registry=%u", cc_index, as_num32, registry); } else { /* get registry */ registry = ipv6addr_getregistry(&ipv6addr); }; if (feature_cc == 1) { /* country code */ cc_index = libipv6calc_db_wrapper_cc_index_by_addr(token, 6); stat_inc_country_code(cc_index, 6); }; if (feature_as == 1) { /* asnum */ as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(token, 6); stat_inc_asnum(as_num32, 6); }; 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_RIPE: stat_inc(STATS_IPV6_RIPE); break; case IPV6_ADDR_REGISTRY_LACNIC: stat_inc(STATS_IPV6_LACNIC); 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 ((ipv4addr.scope & IPV4_ADDR_ANONYMIZED) != 0) { cc_index = ipv4addr_anonymized_get_cc_index(&ipv4addr); as_num32 = ipv4addr_anonymized_get_as_num32(&ipv4addr); /* get registry */ registry = libipv6calc_db_wrapper_registry_num_by_cc_index(cc_index); } else { if (feature_cc == 1) { /* get country code */ cc_index = libipv6calc_db_wrapper_cc_index_by_addr(token, 4); }; if (feature_as == 1) { /* get AS */ as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(token, 4); }; /* get registry */ registry = ipv4addr_getregistry(&ipv4addr); }; stat_inc_country_code(cc_index, 4); stat_inc_asnum(as_num32, 4); 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_RIPE: stat_inc(STATS_IPV4_RIPE); break; case IPV4_ADDR_REGISTRY_LACNIC: stat_inc(STATS_IPV4_LACNIC); 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) { if (opt_onlyheader == 0) { printf("Token "); } else { printf("%s ", opt_token); }; }; for (i = 1; i < (int) (sizeof(ipv6logstats_statentries) / sizeof(ipv6logstats_statentries[0])); i++) { if (i > 0) { printf(" "); }; printf("%s", ipv6logstats_statentries[i].token); }; printf("\n"); }; if (opt_onlyheader == 0) { if (strlen(opt_token) > 0) { printf("%s ", opt_token); }; for (i = 1; i < (int) (sizeof(ipv6logstats_statentries) / sizeof(ipv6logstats_statentries[0])); i++) { if (i > 0) { printf(" "); }; printf("%lu", ipv6logstats_statentries[i].counter); }; printf("\n"); }; }; return; }; ipv6calc-0.95.0/ipv6logstats/example_ipv6logstats.sh0000775000175100017510000000203507757654660021552 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/logstats # File : example_ipv6logstats.sh # Version : $Id: example_ipv6logstats.sh,v 1.5 2003/11/22 12:42:24 peter Exp $ # Copyright : 2003 by Peter Bieringer # # Example program for "ipv6logstats" # Print header line #./ipv6logstats -o -p "Date" # Find logfiles (here name in format hostname-log.%Y%m 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() { local f="$1" if [ -z "$f" ]; then return 1 fi if echo "$f" | grep -q "\.gz$"; then zcat "$f" elif echo "$f" | grep -q "\.bz2$"; then bzcat "$f" else cat "$f" fi } find $dir -name '*-log.*' -type f | while read file; do echo "Proceed file: $file" >&2 # Extract %Y%m yearmonth="`basename "$file" | sed 's/^.*-log\.//' | sed 's/\.gz$//' | sed 's/\.bz2$//'`" # don't count mon checks cat_file "$file" | grep -v "mon.d/http.monitor" | $bin -c -n -p "$yearmonth" done ipv6calc-0.95.0/ipv6logstats/ipv6logstats.h0000664000175100017510000000326712236001772017633 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstats.h * Version : $Id: ipv6logstats.h,v 1.19 2013/11/04 20:30:50 ds6peter Exp $ * Copyright : 2003-2013 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 3 #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_RIPE 0x15 #define STATS_IPV4_LACNIC 0x16 #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_RIPE 0x25 #define STATS_IPV6_LACNIC 0x26 #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.95.0/ipv6logstats/README0000664000175100017510000000305312166462155015676 0ustar peterpeter$Id: README,v 1.7 2013/07/08 07:04:13 ds6peter Exp $ Gnuplot: Homepage: http://www.gnuplot.info/ Gnuplot is normally contained by Linux distribution GRI: Homepage: http://gri.sourceforge.net/ Output format *Verion $MAJOR.$MINOR 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* ipv6calc-0.95.0/ipv6logstats/example_gnuplot.cmd0000664000175100017510000000217111725327203020700 0ustar peterpeter# Project : ipv6calc/logstats # File : example_gnuplot.cmd # Version : $Id: example_gnuplot.cmd,v 1.4 2012/03/06 06:28:19 peter Exp $ # Copyright : 2003-2012 by Peter Bieringer # # Command file for gnuplot # Usage: gnuplot example_gnuplot.cmd # # Don't forget to adjust file names # set output "..." : for output file # plot '...' : for input data file set terminal png small set output "result.png" set title "Webserver access statistics" set data style linespoints 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' lw 2, 'data' using 1:($2) t 'ALL' lw 2 reset set terminal png small set output "result-percent.png" set title "Webserver access statistics (relative)" set data style linespoints 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' lw 2, 'data' using 1:($3 / $2 * 100 ) t 'IPv4' lw 2 reset ipv6calc-0.95.0/ipv6logstats/ipv6logstatsoptions.h0000664000175100017510000000166612236001772021250 0ustar peterpeter/* * Project : ipv6calc/ipv6logstats * File : ipv6logstatsoptions.h * Version : $Id: ipv6logstatsoptions.h,v 1.9 2013/11/04 20:30:50 ds6peter Exp $ * Copyright : 2003-2012 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?uosncp: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'}, {"colums" , 0, 0, (int) 'c'}, {"prefix" , 0, 0, (int) 'p'}, {"noheader" , 0, 0, (int) 'n'}, {"onlyheader" , 0, 0, (int) 'o'}, {"simple" , 0, 0, (int) 's'}, {"write" , 1, 0, (int) 'O'}, }; #endif ipv6calc-0.95.0/contrib/0000775000175100017510000000000012242072067014002 5ustar peterpeteripv6calc-0.95.0/contrib/ipv6calc.spec.in0000664000175100017510000002137012241713203016766 0ustar peterpeter# Project : ipv6calc # File : contrib/ipv6calc.spec # Copyright : 2001-2012 by Peter Bieringer Summary: IP address format change and calculation utility Name: ipv6calc Version: @PACKAGE_VERSION@ Release: 1%dist Group: System Environment/Base URL: http://www.deepspace6.net/projects/ipv6calc.html License: GNU GPL version 2 Source: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/ipv6calc-%{version}.tar.gz BuildRoot: %{_tmppath}/ipv6calc-root %define enable_geoip 0 %define enable_ip2location 0 %define enable_geoip_dyn 0 %define enable_ip2location_dyn 0 %{?_with_geoip: %{expand: %%define enable_geoip 1}} %{?_with_ip2location: %{expand: %%define enable_ip2location 1}} %{?_with_geoip_dyn: %{expand: %%define enable_geoip_dyn 1}} %{?_with_ip2location_dyn: %{expand: %%define enable_ip2location_dyn 1}} %{?_with_geoip_dyn: %{expand: %%define enable_geoip 1}} %{?_with_ip2location_dyn: %{expand: %%define enable_ip2location 1}} %if %{enable_geoip} BuildRequires: GeoIP-devel %if %{enable_geoip_dyn} #nothing required %else Requires: GeoIP %endif %endif %if %{enable_ip2location} BuildRequires: ip2location-devel %if %{enable_ip2location_dyn} #nothing required %else Requires: ip2location0 >= 2.1.3 %endif %endif %description ipv6calc is a small utility which formats and calculates IPv6 addresses in different ways. Install this package, if you want to extend the existing address detection on IPv6 initscript setup or make life easier in adding reverse IPv6 zones to DNS or using in DNS queries like dig -t ANY `ipv6calc -r 2001:db8:1234::1/48` Many more format conversions are supported, see given URL for more. Also this package contains additional binaries (and some examples) - ipv6loganon: anonymizes Apache webserver logs - ipv6logstats: create statistics from list of IPv4/IPv6 addresses (can be used by analog) Available rpmbuild rebuild options: --with ip2location --with ip2location-dyn --with geoip --with geoip-dyn %{?enable_geoip: %{expand: Built with GeoIP support}} %{?enable_geoip_dyn: %{expand: Built with GeoIP dynamic-library-load support}} %{?enable_ip2location: %{expand: Built with IP2Location suppport}} %{?enable_ip2location_dyn: %{expand: Built with IP2Location dynamic-library-load suppport}} %package ipv6calcweb Summary: IP address information web utility Group: Web/Applications Requires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) BuildRequires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) %description ipv6calcweb ipv6calcweb contains a CGI program and a configuration file for displaying information of IP addresses on a web page. %prep %setup -q -n ipv6calc-%{version} %build ./configure --bindir=%{_bindir} --mandir=%{_mandir} %{?enable_ip2location:--enable-ip2location} %{?enable_geoip:--enable-geoip} %{?enable_ip2location_dyn:--with-ip2location-dynamic} %{?enable_geoip_dyn:--with-geoip-dynamic} make clean make make test-minimal %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT ## Install examples and helper files mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ # ipv6logconv mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logconv cp -r examples/analog/* $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logconv # ipv6loganon mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6loganon pushd ipv6loganon cp README $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6loganon/ popd # ipv6logstats mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logstats pushd ipv6logstats cp example_* collect_ipv6logstats.pl README $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logstats/ for dir in examples-data examples-gri; do cp -r $dir $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logstats/ done popd # tools install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/tools for tool in GeoIP-update.sh IP2Location-update.sh; do install -m 755 tools/$tool $RPM_BUILD_ROOT%{_datadir}/%{name}/tools done # ipv6calcweb install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6calcweb install -d $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d install -d $RPM_BUILD_ROOT%{_localstatedir}/www/cgi-bin install -m 644 ipv6calcweb/USAGE $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6calcweb install -m 644 ipv6calcweb/ipv6calcweb.conf $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d install -m 555 ipv6calcweb/ipv6calcweb.cgi $RPM_BUILD_ROOT%{_localstatedir}/www/cgi-bin # Docs for f in ChangeLog README CREDITS TODO COPYING LICENSE USAGE doc/ipv6calc.lyx doc/ipv6calc.sgml doc/ipv6calc.html; do cp $f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ done for f in tools/GeoIP-update.sh tools/IP2Location-update.sh; do cp $f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ done # Remove all CVS files find $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} -type d -name CVS |xargs rm -rf %clean rm -rf $RPM_BUILD_ROOT %post %preun %files %defattr(-,root,root) # binaries %{_bindir}/ipv6calc %{_bindir}/ipv6logconv %{_bindir}/ipv6logstats %{_bindir}/ipv6loganon # man pages %{_mandir}/man8/* # tools %{_datadir}/%{name}/tools/* # docs, examples and helper %doc %{_docdir}/%{name}-%{version}/* %files ipv6calcweb %defattr(-,root,root) %{_localstatedir}/www/cgi-bin/ipv6calcweb.cgi %doc %{_docdir}/%{name}-%{version}/ipv6calcweb/* %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipv6calcweb.conf %changelog * 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.95.0/contrib/ipv6calc.spec0000664000175100017510000002135512242071667016400 0ustar peterpeter# Project : ipv6calc # File : contrib/ipv6calc.spec # Copyright : 2001-2012 by Peter Bieringer Summary: IP address format change and calculation utility Name: ipv6calc Version: 0.95.0 Release: 1%dist Group: System Environment/Base URL: http://www.deepspace6.net/projects/ipv6calc.html License: GNU GPL version 2 Source: ftp://ftp.bieringer.de/pub/linux/IPv6/ipv6calc/ipv6calc-%{version}.tar.gz BuildRoot: %{_tmppath}/ipv6calc-root %define enable_geoip 0 %define enable_ip2location 0 %define enable_geoip_dyn 0 %define enable_ip2location_dyn 0 %{?_with_geoip: %{expand: %%define enable_geoip 1}} %{?_with_ip2location: %{expand: %%define enable_ip2location 1}} %{?_with_geoip_dyn: %{expand: %%define enable_geoip_dyn 1}} %{?_with_ip2location_dyn: %{expand: %%define enable_ip2location_dyn 1}} %{?_with_geoip_dyn: %{expand: %%define enable_geoip 1}} %{?_with_ip2location_dyn: %{expand: %%define enable_ip2location 1}} %if %{enable_geoip} BuildRequires: GeoIP-devel %if %{enable_geoip_dyn} #nothing required %else Requires: GeoIP %endif %endif %if %{enable_ip2location} BuildRequires: ip2location-devel %if %{enable_ip2location_dyn} #nothing required %else Requires: ip2location0 >= 2.1.3 %endif %endif %description ipv6calc is a small utility which formats and calculates IPv6 addresses in different ways. Install this package, if you want to extend the existing address detection on IPv6 initscript setup or make life easier in adding reverse IPv6 zones to DNS or using in DNS queries like dig -t ANY `ipv6calc -r 2001:db8:1234::1/48` Many more format conversions are supported, see given URL for more. Also this package contains additional binaries (and some examples) - ipv6loganon: anonymizes Apache webserver logs - ipv6logstats: create statistics from list of IPv4/IPv6 addresses (can be used by analog) Available rpmbuild rebuild options: --with ip2location --with ip2location-dyn --with geoip --with geoip-dyn %{?enable_geoip: %{expand: Built with GeoIP support}} %{?enable_geoip_dyn: %{expand: Built with GeoIP dynamic-library-load support}} %{?enable_ip2location: %{expand: Built with IP2Location suppport}} %{?enable_ip2location_dyn: %{expand: Built with IP2Location dynamic-library-load suppport}} %package ipv6calcweb Summary: IP address information web utility Group: Web/Applications Requires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) BuildRequires: perl(URI) perl(Digest::SHA1) perl(Digest::MD5) %description ipv6calcweb ipv6calcweb contains a CGI program and a configuration file for displaying information of IP addresses on a web page. %prep %setup -q -n ipv6calc-%{version} %build ./configure --bindir=%{_bindir} --mandir=%{_mandir} %{?enable_ip2location:--enable-ip2location} %{?enable_geoip:--enable-geoip} %{?enable_ip2location_dyn:--with-ip2location-dynamic} %{?enable_geoip_dyn:--with-geoip-dynamic} make clean make make test-minimal %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT ## Install examples and helper files mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ # ipv6logconv mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logconv cp -r examples/analog/* $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logconv # ipv6loganon mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6loganon pushd ipv6loganon cp README $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6loganon/ popd # ipv6logstats mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logstats pushd ipv6logstats cp example_* collect_ipv6logstats.pl README $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logstats/ for dir in examples-data examples-gri; do cp -r $dir $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6logstats/ done popd # tools install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/tools for tool in GeoIP-update.sh IP2Location-update.sh; do install -m 755 tools/$tool $RPM_BUILD_ROOT%{_datadir}/%{name}/tools done # ipv6calcweb install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6calcweb install -d $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d install -d $RPM_BUILD_ROOT%{_localstatedir}/www/cgi-bin install -m 644 ipv6calcweb/USAGE $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ipv6calcweb install -m 644 ipv6calcweb/ipv6calcweb.conf $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d install -m 555 ipv6calcweb/ipv6calcweb.cgi $RPM_BUILD_ROOT%{_localstatedir}/www/cgi-bin # Docs for f in ChangeLog README CREDITS TODO COPYING LICENSE USAGE doc/ipv6calc.lyx doc/ipv6calc.sgml doc/ipv6calc.html; do cp $f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ done for f in tools/GeoIP-update.sh tools/IP2Location-update.sh; do cp $f $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/ done # Remove all CVS files find $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} -type d -name CVS |xargs rm -rf %clean rm -rf $RPM_BUILD_ROOT %post %preun %files %defattr(-,root,root) # binaries %{_bindir}/ipv6calc %{_bindir}/ipv6logconv %{_bindir}/ipv6logstats %{_bindir}/ipv6loganon # man pages %{_mandir}/man8/* # tools %{_datadir}/%{name}/tools/* # docs, examples and helper %doc %{_docdir}/%{name}-%{version}/* %files ipv6calcweb %defattr(-,root,root) %{_localstatedir}/www/cgi-bin/ipv6calcweb.cgi %doc %{_docdir}/%{name}-%{version}/ipv6calcweb/* %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipv6calcweb.conf %changelog * 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.95.0/contrib/scripts-by-others/0000775000175100017510000000000012242072067017403 5ustar peterpeteripv6calc-0.95.0/contrib/scripts-by-others/README0000664000175100017510000000023707750262261020272 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.95.0/contrib/scripts-by-others/dig60000664000175100017510000000256507776606302020202 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.95.0/getopt/0000775000175100017510000000000012242072067013644 5ustar peterpeteripv6calc-0.95.0/getopt/getopt.c0000664000175100017510000007270007435676733015342 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.95.0/getopt/getopt.h0000664000175100017510000001071607435676734015347 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.95.0/getopt/Makefile.in0000664000175100017510000000063111126661333015711 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.95.0/getopt/getopt1.c0000664000175100017510000001064607435676734015425 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.95.0/getopt/README0000664000175100017510000000056107436762041014535 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.95.0/ipv6logconv/0000775000175100017510000000000012242072067014616 5ustar peterpeteripv6calc-0.95.0/ipv6logconv/ipv6logconvhelp.c0000664000175100017510000000365110454436053020116 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconvhelp.c * Version : $Id: ipv6logconvhelp.c,v 1.8 2006/07/10 11:38:19 peter Exp $ * Copyright : 2002-2005 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\n", PROGRAM_NAME, PACKAGE_VERSION); }; 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 -?' for more details\n\n", PROGRAM_NAME); }; /* print global help */ void ipv6logconv_printhelp(void) { printversion(); printcopyright(); fprintf(stderr, "\n"); fprintf(stderr, " General:\n"); fprintf(stderr, " [-d|--debug ] : debug value (bitwise like)\n"); fprintf(stderr, " [-q|--quiet] : be more quiet\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:\n"); fprintf(stderr, " [--out ] : specify output type\n"); fprintf(stderr, " addrtype : Address type\n"); fprintf(stderr, " ouitype : OUI (IEEE) type\n"); fprintf(stderr, " ipv6addrtype : IPv6 address type\n"); fprintf(stderr, " any : any type\n"); fprintf(stderr, "\n"); fprintf(stderr, " Takes data from stdin, proceed it to stdout\n"); fprintf(stderr, "\n"); fprintf(stderr, "\n"); return; }; ipv6calc-0.95.0/ipv6logconv/ipv6logconvoptions.h0000664000175100017510000000171112221636350020655 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.95.0/ipv6logconv/Makefile.in0000664000175100017510000000354512216764220016672 0ustar peterpeter# Project : ipv6calc/ipv6logconv # File : ipv6logconv/Makefile[.in] # Version : $Id: Makefile.in,v 1.22 2013/09/20 06:17:52 ds6peter Exp $ # Copyright : 2002-2013 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 += -D__EXTENSIONS__ INCLUDES= @GETOPT_INCLUDE@ @IP2LOCATION_INCLUDE@ @GEOIP_INCLUDE@ -I../ -I../lib/ -I../databases/lib/ LIBS = @IP2LOCATION_LIB@ @GEOIP_LIB@ @DYNLOAD_LIB@ GETOBJS = @LIBOBJS@ CC = @CC@ 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) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< $(OBJS): ipv6logconvoptions.h ipv6logconvhelp.h ipv6logconv.h libipv6calc.a: cd ../ && ${MAKE} lib-make libipv6calc_db_wrapper.a: cd ../ && ${MAKE} lib-make ipv6logconv: $(OBJS) libipv6calc.a libipv6calc_db_wrapper.a $(CC) $(LDFLAGS) -o ipv6logconv $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ $(LIBS) -lm static: ipv6logconv $(CC) $(LDFLAGS) -o ipv6logconv-static $(OBJS) $(GETOBJS) -lipv6calc -lipv6calc_db_wrapper -L../lib/ -L../databases/lib/ -static $(LIBS) -lm distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6logconv ipv6logconv-static *.o test: ipv6logconv ./test_ipv6logconv.sh test-minimal: ${MAKE} test codecheck: ${MAKE} splint splint: splint *.c ../lib/*.c -I.. -I../lib $(SPLINT_OPT_OUTSIDE) $(SPLINT_TODO_LATER) install: ipv6logconv mkdir -p $(DESTDIR)$(bindir) install -m 755 ipv6logconv $(DESTDIR)$(bindir) ipv6calc-0.95.0/ipv6logconv/ipv6logconvhelp.h0000664000175100017510000000063210203637406020114 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconvhelp.h * Version : $Id: ipv6logconvhelp.h,v 1.2 2005/02/13 11:50:30 peter Exp $ * Copyright : 2002-2005 by Peter Bieringer * License : GNU GPL v2 * * Information: * Header file for ipv6logconvhelp.c */ extern void printversion(void); extern void ipv6logconv_printinfo(void); extern void ipv6logconv_printhelp(void); ipv6calc-0.95.0/ipv6logconv/test_ipv6logconv.sh0000775000175100017510000000602512216764220020473 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : test_ipv6logconv.sh # Version : $Id: test_ipv6logconv.sh,v 1.9 2013/09/20 06:17:52 ds6peter Exp $ # Copyright : 2002-2013 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 testscenarios() { # Address cat <&2 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 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 if [ $? -eq 0 ]; then echo "All tests were successfully done!" >&2 fi ipv6calc-0.95.0/ipv6logconv/ipv6logconv.c0000664000175100017510000005225212236004644017243 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconv.c * Version : $Id: ipv6logconv.c,v 1.29 2013/11/04 20:55:00 ds6peter Exp $ * Copyright : 2002-2013 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" #define LINEBUFFER 16384 long int ipv6calc_debug = 0; int flag_nocache = 0; /* supported output types: * ipv6addr * ipv4addr * addrtype : IPv4 | IPv6 */ /* prototypes */ static int converttoken(char *result, 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]; /**************************************************/ /* main */ int main(int argc,char *argv[]) { 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[MAXLONGOPTIONS]; char shortopts[NI_MAXHOST] = ""; int longopts_maxentries = 0; /* 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(); /* 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); }; /* Fetch the command-line arguments. */ while ((i = getopt_long(argc, argv, shortopts, longopts, &lop)) != EOF) { if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: Parsing option: 0x%08x\n", __FILE__, __func__, i); }; /* 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; /* print help handling */ if (command == CMD_printhelp) { ipv6logconv_printhelp(); exit(EXIT_FAILURE); } else if (command == CMD_printexamples) { printhelp_output_dispatcher(outputtype); exit(EXIT_FAILURE); }; if (ipv6calc_debug != 0) { fprintf(stderr, "Debug value:%lx command:%lx inputtype:%lx outputtype:%lx action:%lx\n", (unsigned long) ipv6calc_debug, command, (unsigned long) inputtype, (unsigned long) outputtype, (unsigned long) action); }; /* do work depending on selection */ if (command == CMD_printversion) { printversion(); exit(EXIT_FAILURE); }; /* call lineparser */ lineparser(outputtype); 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"); }; }; if (ipv6calc_debug == 1) { fprintf(stderr, "Line: %d\r", 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) - 1, "%s", charptr); DEBUGPRINT_WA(DEBUG_ipv6logconv_processing, "Token 1: '%s'", token); /* call converter now */ if ( outputtype == FORMAT_any ) { retval = converttoken(resultstring, charptr, FORMAT_addrtype, 0); } else { retval = converttoken(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, 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 char *token, const long int outputtype, const int flag_skipunknown) { long int inputtype = -1; int retval = 1, i; uint32_t typeinfo, typeinfo_test; char tempstring[NI_MAXHOST], temp2string[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 */ if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: look for key=%s\n", 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, LINEBUFFER - 1, "%s", cache_lru_value[cache_lru_last - 1]); cache_lru_statistics[0]++; if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: hit last line=%d key_token=%s key_outputtype=%lx value=%s\n", 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, LINEBUFFER - 1, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_last - i]++; if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: hit line=%d key_token=%s key_outputtype=%lx value=%s\n", 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, LINEBUFFER - 1, "%s", cache_lru_value[i - 1]); cache_lru_statistics[cache_lru_max - i + cache_lru_last]++; if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: hit line=%d key_token=%s key_outputtype=%lx value=%s\n", i - 1, token, outputtype, resultstring); }; return (0); }; }; }; }; }; }; /* set addresses to invalid */ ipv6addr.flag_valid = 0; ipv4addr.flag_valid = 0; /* autodetection */ inputtype = libipv6calc_autodetectinput(token); if (ipv6calc_debug != 0) { if (inputtype >= 0) { for (i = 0; i < (int) (sizeof(ipv6calc_formatstrings) / sizeof(ipv6calc_formatstrings[0])); i++) { if (inputtype == ipv6calc_formatstrings[i].number) { fprintf(stderr, "%s/%s: Found type: %s\n", __FILE__, __func__, ipv6calc_formatstrings[i].token); }; break; }; } else { fprintf(stderr, "%s/%s: Input type unknown\n", __FILE__, __func__); return (1); }; }; /* proceed input depending on type */ switch (inputtype) { case FORMAT_ipv6addr: retval = addr_to_ipv6addrstruct(token, resultstring, &ipv6addr); break; case FORMAT_ipv4addr: retval = addr_to_ipv4addrstruct(token, 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) { snprintf(resultstring, LINEBUFFER - 1, "ipv6-addr.addrtype.ipv6calc"); /* check for registry */ typeinfo = ipv6addr_gettype(&ipv6addr); /* scope of IPv6 address */ /* init retval */ for (i = 0; i < (size_t) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); 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 < (size_t) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); i++) { if ( (typeinfo_test & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { retval = i; break; }; }; }; snprintf(tempstring, sizeof(tempstring) - 1, "%s.%s", ipv6calc_ipv6addrtypestrings[retval].token, resultstring); snprintf(resultstring, LINEBUFFER - 1,"%s", tempstring); /* type of global IPv6 address */ /* init retval */ for (i = 0; i < (size_t) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); 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) - 1, "teredo.%s", resultstring); snprintf(resultstring, LINEBUFFER - 1, "%s", tempstring); } else { /* get string */ for (i = 0; i < (size_t) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); i++) { if ( (typeinfo_test & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { retval = i; break; }; }; snprintf(tempstring, sizeof(tempstring) - 1, "%s.%s", ipv6calc_ipv6addrtypestrings[retval].token, resultstring); snprintf(resultstring, LINEBUFFER - 1, "%s", tempstring); }; }; /* registry of IPv6 address */ if ( ( (typeinfo & (IPV6_NEW_ADDR_6BONE | IPV6_NEW_ADDR_PRODUCTIVE) ) != 0) && ( (typeinfo & (IPV6_NEW_ADDR_TEREDO)) == 0)) { retval = libipv6addr_get_registry_string(&ipv6addr, temp2string); if ( retval == 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "%s.%s", temp2string, resultstring); snprintf(resultstring, LINEBUFFER - 1, "%s", tempstring); }; } else if ( (typeinfo & (IPV6_NEW_ADDR_6TO4 | IPV6_ADDR_MAPPED | IPV6_ADDR_COMPATv4 | IPV6_NEW_ADDR_TEREDO)) != 0 ) { /* 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); }; retval = libipv4addr_get_registry_string(&ipv4addr, temp2string); if ( retval == 0 ) { /* IPv4 registry */ snprintf(tempstring, sizeof(tempstring) - 1, "%s.%s", temp2string, resultstring); snprintf(resultstring, LINEBUFFER - 1, "%s", tempstring); }; }; } else if (ipv4addr.flag_valid == 1) { snprintf(resultstring, LINEBUFFER - 1, "ipv4-addr.addrtype.ipv6calc"); retval = libipv4addr_get_registry_string(&ipv4addr, temp2string); if ( retval == 0 ) { /* IPv4 registry */ snprintf(tempstring, sizeof(tempstring) - 1, "%s.%s", temp2string, resultstring); snprintf(resultstring, LINEBUFFER - 1, "%s", tempstring); }; } else { snprintf(resultstring, LINEBUFFER - 1, "reverse-lookup-successful.addrtype.ipv6calc"); }; break; case FORMAT_ouitype: if (ipv6addr.flag_valid != 1) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, LINEBUFFER - 1, "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, LINEBUFFER - 1, "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 = libieee_get_short_vendor_string(resultstring, &macaddr); if (retval != 0) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, LINEBUFFER - 1, "unresolvable.ouitype.ipv6calc"); return (0); }; }; if (strlen(resultstring) == 0) { snprintf(resultstring, LINEBUFFER - 1, "unknown.ouitype.ipv6calc"); } else { snprintf(tempstring, sizeof(tempstring) - 1, "%s.ouitype.ipv6calc", resultstring); snprintf(resultstring, LINEBUFFER - 1, "%s", tempstring); }; } else { if ( (typeinfo & IPV6_NEW_ADDR_6TO4_MICROSOFT) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "6to4-microsoft.ouitype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_IID_ISATAP) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "ISATAP.ouitype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_IID_RANDOM) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "local-scope-random.ouitype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_TEREDO) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "local-scope-teredo.ouitype.ipv6calc"); } else { snprintf(resultstring, LINEBUFFER - 1, "local-scope.ouitype.ipv6calc"); }; }; break; case FORMAT_ipv6addrtype: if (ipv6addr.flag_valid != 1) { if (flag_skipunknown != 0) { return (1); } else { snprintf(resultstring, LINEBUFFER - 1, "not-ipv6.ipv6addrtype.ipv6calc"); return (0); }; }; typeinfo = ipv6addr_gettype(&ipv6addr); if ( (typeinfo & IPV6_ADDR_LINKLOCAL) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "link-local.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_SITELOCAL) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "site-local.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_ULUA) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "unique-local.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_TEREDO) != 0 ) { if ( (typeinfo & IPV6_NEW_ADDR_6BONE) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "teredo.6bone-global.ipv6addrtype.ipv6calc"); } else { snprintf(resultstring, LINEBUFFER - 1, "teredo.unknown-global.ipv6addrtype.ipv6calc"); }; } else if ( (typeinfo & IPV6_NEW_ADDR_6BONE) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "6bone-global.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_6TO4) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "6to4-global.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_NEW_ADDR_PRODUCTIVE) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "productive-global.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_MAPPED) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "mapped-ipv4.ipv6addrtype.ipv6calc"); } else if ( (typeinfo & IPV6_ADDR_COMPATv4) != 0 ) { snprintf(resultstring, LINEBUFFER - 1, "compat-ipv4.ipv6addrtype.ipv6calc"); } else { snprintf(resultstring, LINEBUFFER - 1, "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); if ((ipv6calc_debug & 0x4) != 0) { fprintf(stderr, "LRU cache: fill line=%d key_token=%s key_outputtype=%lx value=%s\n", 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.95.0/ipv6logconv/ipv6logconv.h0000664000175100017510000000122012236004644017235 0ustar peterpeter/* * Project : ipv6calc * File : ipv6logconv.h * Version : $Id: ipv6logconv.h,v 1.8 2013/11/04 20:55:00 ds6peter Exp $ * Copyright : 2002-2013 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; ipv6calc-0.95.0/VERSION.in0000664000175100017510000000002211700134546014010 0ustar peterpeter@PACKAGE_VERSION@ ipv6calc-0.95.0/databases/0000775000175100017510000000000012242072067014271 5ustar peterpeteripv6calc-0.95.0/databases/ieee-iab/0000775000175100017510000000000012242072067015731 5ustar peterpeteripv6calc-0.95.0/databases/ieee-iab/Makefile0000664000175100017510000000146212131072575017375 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.95.0/databases/ieee-iab/README0000664000175100017510000000025712131072575016616 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.95.0/databases/ieee-iab/dbieee_iab.h0000664000175100017510000125366612242063744020157 0ustar peterpeter/* * Project : ipv6calc * File : dbieee_iab.h * Version : $Id: dbieee_iab.h,v 1.57 2013/11/17 06:53:24 ds6peter Exp $ * Generated : Sun Nov 17 07:48:27 2013 * Data copyright: IEEE * * Information: * Additional header file for libieee.c */ /*@unused@*/ static const char* libieee_iab_status __attribute__ ((__unused__)) = "IAB/20131117"; static const s_ieee_iab libieee_iab[] = { { 0x0050C2, 0x000000, 0x000FFF, "T.L.S. Corp.", "T-L-S" }, { 0x0050C2, 0x001000, 0x001FFF, "JMBS Developpements", "JMBS-DEVELOPPEMENTS" }, { 0x0050C2, 0x002000, 0x002FFF, "Integrated Automation Solutions", "INTEGRATED-AUTOMATION-SOLUTIONS" }, { 0x0050C2, 0x003000, 0x003FFF, "Microsoft", "MICROSOFT" }, { 0x0050C2, 0x004000, 0x004FFF, "SCI Technology Inc.", "SCI" }, { 0x0050C2, 0x005000, 0x005FFF, "GD California, Inc.", "GD-CALIFORNIA" }, { 0x0050C2, 0x006000, 0x006FFF, "Project Management Enterprises, Inc.", "PROJECT-MANAGEMENT-ENTERPRISES" }, { 0x0050C2, 0x007000, 0x007FFF, "Clive Green & Co. Ltd.", "CLIVE-GREEN" }, { 0x0050C2, 0x008000, 0x008FFF, "Portable Add-Ons", "PORTABLE-ADD-ONS" }, { 0x0050C2, 0x009000, 0x009FFF, "Datakinetics Ltd.", "DATAKINETICS" }, { 0x0050C2, 0x00A000, 0x00AFFF, "Tharsys", "THARSYS" }, { 0x0050C2, 0x00B000, 0x00BFFF, "IO Limited", "IO" }, { 0x0050C2, 0x00C000, 0x00CFFF, "Vbrick Systems Inc.", "VBRICK" }, { 0x0050C2, 0x00D000, 0x00DFFF, "Opus Telecom Inc.", "OPUS-TELECOM" }, { 0x0050C2, 0x00E000, 0x00EFFF, "TTTech", "TTTECH" }, { 0x0050C2, 0x00F000, 0x00FFFF, "XLN-t", "XLN-T" }, { 0x0050C2, 0x010000, 0x010FFF, "Moisture Systems", "MOISTURE" }, { 0x0050C2, 0x011000, 0x011FFF, "Bihl + Wiedemann GmbH", "BIHL-+-WIEDEMANN" }, { 0x0050C2, 0x012000, 0x012FFF, "Floware System Solutions Ltd.", "FLOWARE-SYSTEM-SOLUTIONS" }, { 0x0050C2, 0x013000, 0x013FFF, "Sensys Technologies Inc.", "SENSYS-TECHNOLOGIES" }, { 0x0050C2, 0x014000, 0x014FFF, "Canal +", "CANAL-+" }, { 0x0050C2, 0x015000, 0x015FFF, "Leroy Automatique Industrielle", "LEROY-AUTOMATIQUE-INDUSTRIELLE" }, { 0x0050C2, 0x016000, 0x016FFF, "DSP Design Ltd.", "DSP-DESIGN" }, { 0x0050C2, 0x017000, 0x017FFF, "Hunter Technology Inc.", "HUNTER" }, { 0x0050C2, 0x018000, 0x018FFF, "CAD-UL GmbH", "CAD-UL" }, { 0x0050C2, 0x019000, 0x019FFF, "Emtac Technology Corp.", "EMTAC" }, { 0x0050C2, 0x01A000, 0x01AFFF, "Skylake Talix", "SKYLAKE-TALIX" }, { 0x0050C2, 0x01B000, 0x01BFFF, "Cross Products Ltd.", "CROSS-PRODUCTS" }, { 0x0050C2, 0x01C000, 0x01CFFF, "Tadiran Scopus", "TADIRAN-SCOPUS" }, { 0x0050C2, 0x01D000, 0x01DFFF, "Princeton Gamma Tech", "PRINCETON-GAMMA-TECH" }, { 0x0050C2, 0x01E000, 0x01EFFF, "CallTech International Limited", "CALLTECH" }, { 0x0050C2, 0x01F000, 0x01FFFF, "KBS Industrieelektronik GmbH", "KBS-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0x020000, 0x020FFF, "Icon Research Ltd.", "ICON-RESEARCH" }, { 0x0050C2, 0x021000, 0x021FFF, "DRS Technologies Canada Co.", "DRS-TECHNOLOGIES-CANADA" }, { 0x0050C2, 0x022000, 0x022FFF, "Ashling Microsystems Ltd.", "ASHLING-MICROSYSTEMS" }, { 0x0050C2, 0x023000, 0x023FFF, "Zabacom, Inc.", "ZABACOM" }, { 0x0050C2, 0x024000, 0x024FFF, "IPITEK", "IPITEK" }, { 0x0050C2, 0x025000, 0x025FFF, "Teracom Telematica Ltda.", "TERACOM-TELEMATICA-LTDA" }, { 0x0050C2, 0x026000, 0x026FFF, "Abatis Systems Corp.", "ABATIS" }, { 0x0050C2, 0x027000, 0x027FFF, "Industrial Control Links", "INDUSTRIAL-CONTROL-LINKS" }, { 0x0050C2, 0x028000, 0x028FFF, "The Frensch Corporation (Pty) Ltd.", "THE-FRENSCH-PTY" }, { 0x0050C2, 0x029000, 0x029FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0x02A000, 0x02AFFF, "VersaLogic Corp.", "VERSALOGIC" }, { 0x0050C2, 0x02B000, 0x02BFFF, "Nova Engineering Inc.", "NOVA-ENGINEERING" }, { 0x0050C2, 0x02C000, 0x02CFFF, "Narrowband Telecommunications", "NARROWBAND-TELECOMMUNICATIONS" }, { 0x0050C2, 0x02D000, 0x02DFFF, "Innocor LTD", "INNOCOR" }, { 0x0050C2, 0x02E000, 0x02EFFF, "Turtle Mountain Corp", "TURTLE-MOUNTAIN" }, { 0x0050C2, 0x02F000, 0x02FFFF, "Sinetica Corp", "SINETICA" }, { 0x0050C2, 0x030000, 0x030FFF, "Lockheed Martin Tactical Defense Systems Eagan", "LOCKHEED-MARTIN-TACTICAL-DEFENSE-EAGAN" }, { 0x0050C2, 0x031000, 0x031FFF, "Eloquence Ltd", "ELOQUENCE" }, { 0x0050C2, 0x032000, 0x032FFF, "MotionIO", "MOTIONIO" }, { 0x0050C2, 0x033000, 0x033FFF, "Doble Engineering Company", "DOBLE-ENGINEERING-COMPANY" }, { 0x0050C2, 0x034000, 0x034FFF, "Ing. Buero W. Kanis GmbH", "ING-BUERO-W-KANIS" }, { 0x0050C2, 0x035000, 0x035FFF, "Alliant Techsystems, Inc.", "ALLIANT-TECHSYSTEMS" }, { 0x0050C2, 0x036000, 0x036FFF, "Arcturus Networks Inc.", "ARCTURUS-NETWORKS" }, { 0x0050C2, 0x037000, 0x037FFF, "E.I.S.M.", "E-I-S-M" }, { 0x0050C2, 0x038000, 0x038FFF, "Etheira Technologies", "ETHEIRA-TECHNOLOGIES" }, { 0x0050C2, 0x039000, 0x039FFF, "Apex Signal Corp", "APEX-SIGNAL" }, { 0x0050C2, 0x03A000, 0x03AFFF, "PLLB Elettronica SPA", "PLLB-ELETTRONICA-SPA" }, { 0x0050C2, 0x03B000, 0x03BFFF, "VNR Electronique SA", "VNR-ELECTRONIQUE" }, { 0x0050C2, 0x03C000, 0x03CFFF, "BrainBoxes Ltd", "BRAINBOXES" }, { 0x0050C2, 0x03D000, 0x03DFFF, "ISDN Gateway Technology AG", "ISDN-GATEWAY" }, { 0x0050C2, 0x03E000, 0x03EFFF, "MSU UK Ltd", "MSU-UK" }, { 0x0050C2, 0x03F000, 0x03FFFF, "Celotek Corp", "CELOTEK" }, { 0x0050C2, 0x040000, 0x040FFF, "MiSPO Co., Ltd.", "MISPO" }, { 0x0050C2, 0x041000, 0x041FFF, "Damler Chrysler Rail System (Signal) AB", "DAMLER-CHRYSLER-RAIL-SYSTEM-SIGNAL-AB" }, { 0x0050C2, 0x042000, 0x042FFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0x043000, 0x043FFF, "Curtis, Inc.", "CURTIS" }, { 0x0050C2, 0x044000, 0x044FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x045000, 0x045FFF, "Chase Manhattan Bank", "CHASE-MANHATTAN-BANK" }, { 0x0050C2, 0x046000, 0x046FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x047000, 0x047FFF, "B. R. Electronics", "B-R-ELECTRONICS" }, { 0x0050C2, 0x048000, 0x048FFF, "Cybectec Inc.", "CYBECTEC" }, { 0x0050C2, 0x049000, 0x049FFF, "Computer Concepts Corp", "CONCEPTS" }, { 0x0050C2, 0x04A000, 0x04AFFF, "Telecom Analysis Systems, LP", "TELECOM-ANALYSIS-LP" }, { 0x0050C2, 0x04B000, 0x04BFFF, "Tecstar Demo Systems Division", "TECSTAR-DEMO-DIVISION" }, { 0x0050C2, 0x04C000, 0x04CFFF, "New Standard Engineering NV", "NEW-STANDARD-ENGINEERING-NV" }, { 0x0050C2, 0x04E000, 0x04EFFF, "Industrial Electronic Engineers, Inc.", "INDUSTRIAL-ENGINEERS" }, { 0x0050C2, 0x04F000, 0x04FFFF, "Luma Corporation", "LUMA" }, { 0x0050C2, 0x050000, 0x050FFF, "Dataprobe, Inc.", "DATAPROBE" }, { 0x0050C2, 0x051000, 0x051FFF, "JSR Ultrasonics", "JSR-ULTRASONICS" }, { 0x0050C2, 0x052000, 0x052FFF, "Mayo Foundation", "MAYO-FOUNDATION" }, { 0x0050C2, 0x054000, 0x054FFF, "Optionexist Limited", "OPTIONEXIST" }, { 0x0050C2, 0x055000, 0x055FFF, "San Castle Technologies, Inc.", "SAN-CASTLE-TECHNOLOGIES" }, { 0x0050C2, 0x056000, 0x056FFF, "Base 2", "BASE-2" }, { 0x0050C2, 0x057000, 0x057FFF, "Lite F GmBH", "LITE-F" }, { 0x0050C2, 0x058000, 0x058FFF, "Vision Research, Inc.", "VISION-RESEARCH" }, { 0x0050C2, 0x059000, 0x059FFF, "Austco Communication Systems Pty, Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x05A000, 0x05AFFF, "Sonifex Ltd", "SONIFEX" }, { 0x0050C2, 0x05B000, 0x05BFFF, "Radiometer Medical A/S", "RADIOMETER-MEDICAL-A/S" }, { 0x0050C2, 0x05C000, 0x05CFFF, "Nortel Networks PLC (UK)", "NORTEL-NETWORKS-PLC-UK" }, { 0x0050C2, 0x05D000, 0x05DFFF, "Ignitus Communications, LLC", "IGNITUS-COMMUNICATION-LLC" }, { 0x0050C2, 0x05E000, 0x05EFFF, "DIVA Systems", "DIVA" }, { 0x0050C2, 0x05F000, 0x05FFFF, "Malden Electronics Ltd", "MALDEN-ELECTRONICS" }, { 0x0050C2, 0x060000, 0x060FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x061000, 0x061FFF, "Simple Network Magic Corporation", "SIMPLE-NETWORK-MAGIC" }, { 0x0050C2, 0x062000, 0x062FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x063000, 0x063FFF, "Ticketmaster Corp", "TICKETMASTER" }, { 0x0050C2, 0x064000, 0x064FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x065000, 0x065FFF, "Clever Devices, Ltd.", "CLEVER-DEVICES" }, { 0x0050C2, 0x066000, 0x066FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x067000, 0x067FFF, "Riverlink Computers, Ltd.", "RIVERLINK-COMPUTERS" }, { 0x0050C2, 0x068000, 0x068FFF, "Seabridge", "SEABRIDGE" }, { 0x0050C2, 0x069000, 0x069FFF, "EC Elettronica S.R.L.", "EC-ELETTRONICA-S-R-L" }, { 0x0050C2, 0x06A000, 0x06AFFF, "Unimark", "UNIMARK" }, { 0x0050C2, 0x06B000, 0x06BFFF, "NCast Corporation", "NCAST" }, { 0x0050C2, 0x06C000, 0x06CFFF, "WaveCom Electronics, Inc.", "WAVECOM-ELECTRONICS" }, { 0x0050C2, 0x06D000, 0x06DFFF, "Advanced Signal Corp.", "ADVANCED-SIGNAL" }, { 0x0050C2, 0x06E000, 0x06EFFF, "Avtron Manufacturing Inc.", "AVTRON-MANUFACTURING" }, { 0x0050C2, 0x06F000, 0x06FFFF, "Digital Services Group", "DIGITAL-SERVICES-GROUP" }, { 0x0050C2, 0x070000, 0x070FFF, "Katchall Technologies Group", "KATCHALL-TECHNOLOGIES-GROUP" }, { 0x0050C2, 0x071000, 0x071FFF, "NetVision Telecom", "NETVISION-TELECOM" }, { 0x0050C2, 0x072000, 0x072FFF, "Neuberger Gebaeudeautomation GmbH & Co.", "NEUBERGER-GEBAEUDEAUTOMATION" }, { 0x0050C2, 0x073000, 0x073FFF, "Alstom Signalling Ltd.", "ALSTOM-SIGNALLING" }, { 0x0050C2, 0x074000, 0x074FFF, "Edge Tech Co., Ltd.", "EDGE-TECH" }, { 0x0050C2, 0x075000, 0x075FFF, "ENTTEC Pty Ltd.", "ENTTEC-PTY" }, { 0x0050C2, 0x076000, 0x076FFF, "Litton Guidance & Control Systems", "LITTON-GUIDANCE-CONTROL" }, { 0x0050C2, 0x077000, 0x077FFF, "Saco Smartvision Inc.", "SACO-SMARTVISION" }, { 0x0050C2, 0x078000, 0x078FFF, "Reselec AG", "RESELEC" }, { 0x0050C2, 0x079000, 0x079FFF, "Flextel S.p.A", "FLEXTEL-S-P-A" }, { 0x0050C2, 0x07A000, 0x07AFFF, "RadioTel", "RADIOTEL" }, { 0x0050C2, 0x07B000, 0x07BFFF, "Trikon Technologies Ltd.", "TRIKON-TECHNOLOGIES" }, { 0x0050C2, 0x07C000, 0x07CFFF, "PLLB elettronica spa", "PLLB-ELETTRONICA-SPA" }, { 0x0050C2, 0x07D000, 0x07DFFF, "Caspian Networks", "CASPIAN-NETWORKS" }, { 0x0050C2, 0x07E000, 0x07EFFF, "JL-teknik", "JL-TEKNIK" }, { 0x0050C2, 0x07F000, 0x07FFFF, "Dunti Corporation", "DUNTI" }, { 0x0050C2, 0x080000, 0x080FFF, "AIM", "AIM" }, { 0x0050C2, 0x081000, 0x081FFF, "Matuschek Messtechnik GmbH", "MATUSCHEK-MESSTECHNIK" }, { 0x0050C2, 0x082000, 0x082FFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x083000, 0x083FFF, "ARD SA", "ARD" }, { 0x0050C2, 0x084000, 0x084FFF, "DIALOG4 System Engineering GmbH", "DIALOG4-SYSTEM-ENGINEERING" }, { 0x0050C2, 0x085000, 0x085FFF, "Crossport Systems", "CROSSPORT" }, { 0x0050C2, 0x086000, 0x086FFF, "Validyne Engineering Corp.", "VALIDYNE-ENGINEERING" }, { 0x0050C2, 0x087000, 0x087FFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x088000, 0x088FFF, "TELINC Corporation", "TELINC" }, { 0x0050C2, 0x089000, 0x089FFF, "Fenwal Italia S.P.A.", "FENWAL-ITALIA-S-P-A" }, { 0x0050C2, 0x08A000, 0x08AFFF, "Rising Edge Technologies", "RISING-EDGE-TECHNOLOGIES" }, { 0x0050C2, 0x08B000, 0x08BFFF, "HYPERCHIP Inc.", "HYPERCHIP" }, { 0x0050C2, 0x08C000, 0x08CFFF, "IP Unity", "IP-UNITY" }, { 0x0050C2, 0x08D000, 0x08DFFF, "Kylink Communications Corp.", "KYLINK-COMMUNICATION" }, { 0x0050C2, 0x08E000, 0x08EFFF, "BSQUARE", "BSQUARE" }, { 0x0050C2, 0x08F000, 0x08FFFF, "General Industries Argentina", "GENERAL-INDUSTRIES-ARGENTINA" }, { 0x0050C2, 0x090000, 0x090FFF, "Invensys Controls Network Systems", "INVENSYS-CONTROLS-NETWORK" }, { 0x0050C2, 0x091000, 0x091FFF, "StorLogic, Inc.", "STORLOGIC" }, { 0x0050C2, 0x092000, 0x092FFF, "DigitAll World Co., Ltd", "DIGITALL-WORLD" }, { 0x0050C2, 0x093000, 0x093FFF, "KOREALINK", "KOREALINK" }, { 0x0050C2, 0x094000, 0x094FFF, "Analytical Spectral Devices, Inc.", "ANALYTICAL-SPECTRAL-DEVICES" }, { 0x0050C2, 0x095000, 0x095FFF, "SEATECH", "SEATECH" }, { 0x0050C2, 0x096000, 0x096FFF, "Utronix Elektronikutreckling AB", "UTRONIX-ELEKTRONIKUTRECKLING-AB" }, { 0x0050C2, 0x097000, 0x097FFF, "IMV Invertomatic", "IMV-INVERTOMATIC" }, { 0x0050C2, 0x098000, 0x098FFF, "EPEL Industrial, S.A.", "EPEL-INDUSTRIAL" }, { 0x0050C2, 0x099000, 0x099FFF, "Case Information & Communications", "CASE-INFORMATION-COMMUNICATION" }, { 0x0050C2, 0x09A000, 0x09AFFF, "NBO Development Center Sekusui Chemical Co. Ltd.", "NBO-DEVELOPMENT-CENTER-SEKUSUI-CHEMICAL" }, { 0x0050C2, 0x09B000, 0x09BFFF, "Seffle Instrument AB", "SEFFLE-INSTRUMENT-AB" }, { 0x0050C2, 0x09C000, 0x09CFFF, "RF Applications, Inc.", "RF-APPLICATIONS" }, { 0x0050C2, 0x09D000, 0x09DFFF, "ZELPOS", "ZELPOS" }, { 0x0050C2, 0x09E000, 0x09EFFF, "Infinitec Networks, Inc.", "INFINITEC-NETWORKS" }, { 0x0050C2, 0x09F000, 0x09FFFF, "MetaWave Vedeo Systems", "METAWAVE-VEDEO" }, { 0x0050C2, 0x0A0000, 0x0A0FFF, "CYNAPS", "CYNAPS" }, { 0x0050C2, 0x0A1000, 0x0A1FFF, "Visable Genetics, Inc.", "VISABLE-GENETICS" }, { 0x0050C2, 0x0A2000, 0x0A2FFF, "Jäger Computergesteuerte Messtechnik GmbH", "JäGER-COMPUTERGESTEUERTE-MESSTECHNIK" }, { 0x0050C2, 0x0A3000, 0x0A3FFF, "BaSyTec GmbH", "BASYTEC" }, { 0x0050C2, 0x0A4000, 0x0A4FFF, "Bounty Systems Pty Ltd.", "BOUNTY-PTY" }, { 0x0050C2, 0x0A5000, 0x0A5FFF, "Mobiltex Data Ltd.", "MOBILTEX-DATA" }, { 0x0050C2, 0x0A6000, 0x0A6FFF, "Arula Systems, Inc.", "ARULA" }, { 0x0050C2, 0x0A7000, 0x0A7FFF, "WaterCove Networks", "WATERCOVE-NETWORKS" }, { 0x0050C2, 0x0A8000, 0x0A8FFF, "Kaveri Networks", "KAVERI-NETWORKS" }, { 0x0050C2, 0x0A9000, 0x0A9FFF, "Radiant Networks Plc", "RADIANT-NETWORKS-PLC" }, { 0x0050C2, 0x0AA000, 0x0AAFFF, "Log-In, Inc.", "LOG-IN" }, { 0x0050C2, 0x0AB000, 0x0ABFFF, "Fastware.Net, LLC", "FASTWARE-NET-LLC" }, { 0x0050C2, 0x0AC000, 0x0ACFFF, "Honeywell GNO", "HONEYWELL-GNO" }, { 0x0050C2, 0x0AD000, 0x0ADFFF, "BMC Messsysteme GmbH", "BMC-MESSSYSTEME" }, { 0x0050C2, 0x0AE000, 0x0AEFFF, "Zarak Systems Corp.", "ZARAK" }, { 0x0050C2, 0x0AF000, 0x0AFFFF, "Latus Lightworks, Inc.", "LATUS-LIGHTWORKS" }, { 0x0050C2, 0x0B0000, 0x0B0FFF, "LMI Technologies, Inc.", "LMI-TECHNOLOGIES" }, { 0x0050C2, 0x0B1000, 0x0B1FFF, "Beeline Networks, Inc.", "BEELINE-NETWORKS" }, { 0x0050C2, 0x0B2000, 0x0B2FFF, "R F Micro Devices", "R-F-MICRO-DEVICES" }, { 0x0050C2, 0x0B3000, 0x0B3FFF, "SMX Corporation", "SMX" }, { 0x0050C2, 0x0B4000, 0x0B4FFF, "Wavefly Corporation", "WAVEFLY" }, { 0x0050C2, 0x0B5000, 0x0B5FFF, "Extreme Copper, Inc.", "EXTREME-COPPER" }, { 0x0050C2, 0x0B6000, 0x0B6FFF, "ApSecure Technologies (Canada), Inc.", "APSECURE-TECHNOLOGIES-CANADA" }, { 0x0050C2, 0x0B7000, 0x0B7FFF, "RYMIC", "RYMIC" }, { 0x0050C2, 0x0B8000, 0x0B8FFF, "LAN Controls, Inc.", "LAN-CONTROLS" }, { 0x0050C2, 0x0B9000, 0x0B9FFF, "Helmut Mauell GmbH", "HELMUT-MAUELL" }, { 0x0050C2, 0x0BA000, 0x0BAFFF, "Pro-Active", "PRO-ACTIVE" }, { 0x0050C2, 0x0BB000, 0x0BBFFF, "MAZet GmbH", "MAZET" }, { 0x0050C2, 0x0BC000, 0x0BCFFF, "Infolink Software AG", "INFOLINK-SOFTWARE" }, { 0x0050C2, 0x0BD000, 0x0BDFFF, "Tattile", "TATTILE" }, { 0x0050C2, 0x0BE000, 0x0BEFFF, "Stella Electronics & Tagging", "STELLA-ELECTRONICS-TAGGING" }, { 0x0050C2, 0x0BF000, 0x0BFFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x0C0000, 0x0C0FFF, "Imigix Ltd.", "IMIGIX" }, { 0x0050C2, 0x0C1000, 0x0C1FFF, "Casabyte", "CASABYTE" }, { 0x0050C2, 0x0C2000, 0x0C2FFF, "Alchemy Semiconductor, Inc.", "ALCHEMY-SEMICONDUCTOR" }, { 0x0050C2, 0x0C3000, 0x0C3FFF, "Tonbu, Inc.", "TONBU" }, { 0x0050C2, 0x0C4000, 0x0C4FFF, "InterEpoch Technology, Inc.", "INTEREPOCH" }, { 0x0050C2, 0x0C5000, 0x0C5FFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x0C6000, 0x0C6FFF, "Advanced Medical Information Technologies, Inc.", "ADVANCED-MEDICAL-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x0C7000, 0x0C7FFF, "TransComm Technology System, Inc.", "TRANSCOMM-SYSTEM" }, { 0x0050C2, 0x0C8000, 0x0C8FFF, "The Trane Company", "THE-TRANE-COMPANY" }, { 0x0050C2, 0x0C9000, 0x0C9FFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x0CA000, 0x0CAFFF, "J D Richards", "J-D-RICHARDS" }, { 0x0050C2, 0x0CB000, 0x0CBFFF, "STUDIEL", "STUDIEL" }, { 0x0050C2, 0x0CC000, 0x0CCFFF, "AlphaMedia Co., Ltd", "ALPHAMEDIA" }, { 0x0050C2, 0x0CD000, 0x0CDFFF, "LINET OY", "LINET-OY" }, { 0x0050C2, 0x0CE000, 0x0CEFFF, "RFL Electronics, Inc.", "RFL-ELECTRONICS" }, { 0x0050C2, 0x0CF000, 0x0CFFFF, "PCSC", "PCSC" }, { 0x0050C2, 0x0D0000, 0x0D0FFF, "Telefrang AB", "TELEFRANG-AB" }, { 0x0050C2, 0x0D1000, 0x0D1FFF, "Renaissance Networking, Inc.", "RENAISSANCE-NETWORKING" }, { 0x0050C2, 0x0D2000, 0x0D2FFF, "Real World Computing Partnership", "REAL-WORLD-COMPUTING-PARTNERSHIP" }, { 0x0050C2, 0x0D3000, 0x0D3FFF, "Lake Technology, Ltd.", "LAKE" }, { 0x0050C2, 0x0D4000, 0x0D4FFF, "Palm, Inc.", "PALM" }, { 0x0050C2, 0x0D5000, 0x0D5FFF, "Zelax", "ZELAX" }, { 0x0050C2, 0x0D6000, 0x0D6FFF, "Inco Startec GmbH", "INCO-STARTEC" }, { 0x0050C2, 0x0D7000, 0x0D7FFF, "Summit Avionics, Inc.", "SUMMIT-AVIONICS" }, { 0x0050C2, 0x0D8000, 0x0D8FFF, "Charlotte's Web Networks", "CHARLOTTE-S-WEB-NETWORKS" }, { 0x0050C2, 0x0D9000, 0x0D9FFF, "Loewe Opta GmbH", "LOEWE-OPTA" }, { 0x0050C2, 0x0DA000, 0x0DAFFF, "Motion Analysis Corp.", "MOTION-ANALYSIS" }, { 0x0050C2, 0x0DB000, 0x0DBFFF, "Cyberex", "CYBEREX" }, { 0x0050C2, 0x0DC000, 0x0DCFFF, "Elbit Systems Ltd.", "ELBIT" }, { 0x0050C2, 0x0DD000, 0x0DDFFF, "Interisa Electronica, S.A.", "INTERISA-ELECTRONICA" }, { 0x0050C2, 0x0DE000, 0x0DEFFF, "Frederick Engineering", "FREDERICK-ENGINEERING" }, { 0x0050C2, 0x0DF000, 0x0DFFFF, "Innovation Institute, Inc.", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x0E0000, 0x0E0FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0x0E1000, 0x0E1FFF, "Inspiration Technology P/L", "INSPIRATION-P/L" }, { 0x0050C2, 0x0E2000, 0x0E2FFF, "Visual Circuits Corp.", "VISUAL-CIRCUITS" }, { 0x0050C2, 0x0E3000, 0x0E3FFF, "Lanex S.A.", "LANEX" }, { 0x0050C2, 0x0E4000, 0x0E4FFF, "Collabo Tec. Co., Ltd.", "COLLABO-TEC" }, { 0x0050C2, 0x0E5000, 0x0E5FFF, "Clearwater Networks", "CLEARWATER-NETWORKS" }, { 0x0050C2, 0x0E6000, 0x0E6FFF, "RouteFree, Inc.", "ROUTEFREE" }, { 0x0050C2, 0x0E7000, 0x0E7FFF, "Century Geophysical Corp.", "CENTURY-GEOPHYSICAL" }, { 0x0050C2, 0x0E8000, 0x0E8FFF, "Audio Design Associates, Inc.", "AUDIO-DESIGN-ASSOCIATES" }, { 0x0050C2, 0x0E9000, 0x0E9FFF, "Smartmedia LLC", "SMARTMEDIA-LLC" }, { 0x0050C2, 0x0EA000, 0x0EAFFF, "iReady Corporation", "IREADY" }, { 0x0050C2, 0x0EB000, 0x0EBFFF, "iREZ Technologies LLC", "IREZ-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x0EC000, 0x0ECFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x0ED000, 0x0EDFFF, "Valley Products Corporation", "VALLEY-PRODUCTS" }, { 0x0050C2, 0x0EE000, 0x0EEFFF, "Industrial Indexing Systems, Inc.", "INDUSTRIAL-INDEXING" }, { 0x0050C2, 0x0EF000, 0x0EFFFF, "Movaz Networks, Inc.", "MOVAZ-NETWORKS" }, { 0x0050C2, 0x0F0000, 0x0F0FFF, "VHB Technologies, Inc.", "VHB-TECHNOLOGIES" }, { 0x0050C2, 0x0F1000, 0x0F1FFF, "Polyvision Corporation", "POLYVISION" }, { 0x0050C2, 0x0F2000, 0x0F2FFF, "KMS Systems, Inc.", "KMS" }, { 0x0050C2, 0x0F3000, 0x0F3FFF, "Young Computer Co., Ltd.", "YOUNG" }, { 0x0050C2, 0x0F4000, 0x0F4FFF, "Sysnet Co., Ltd.", "SYSNET" }, { 0x0050C2, 0x0F5000, 0x0F5FFF, "Spectra Technologies Holding Co., Ltd.", "SPECTRA-TECHNOLOGIES-HOLDING" }, { 0x0050C2, 0x0F6000, 0x0F6FFF, "Carl Baasel Lasertechnik GmbH", "CARL-BAASEL-LASERTECHNIK" }, { 0x0050C2, 0x0F7000, 0x0F7FFF, "Foss NIRSystems, Inc.", "FOSS-NIRSYSTEMS" }, { 0x0050C2, 0x0F8000, 0x0F8FFF, "Tecnint HTE S.r.L.", "TECNINT-HTE-S-R-L" }, { 0x0050C2, 0x0F9000, 0x0F9FFF, "Raven Industries", "RAVEN-INDUSTRIES" }, { 0x0050C2, 0x0FA000, 0x0FAFFF, "GE Lubrizol, LLC", "GE-LUBRIZOL-LLC" }, { 0x0050C2, 0x0FB000, 0x0FBFFF, "PIUSYS Co., Ltd.", "PIUSYS" }, { 0x0050C2, 0x0FC000, 0x0FCFFF, "Kimmon Manufacturing Co., Ltd.", "KIMMON-MANUFACTURING" }, { 0x0050C2, 0x0FD000, 0x0FDFFF, "Inducomp Corporation", "INDUCOMP" }, { 0x0050C2, 0x0FE000, 0x0FEFFF, "Energy ICT", "ENERGY-ICT" }, { 0x0050C2, 0x0FF000, 0x0FFFFF, "IPAXS Corporation", "IPAXS" }, { 0x0050C2, 0x100000, 0x100FFF, "Corelatus A.B.", "CORELATUS-A-B" }, { 0x0050C2, 0x101000, 0x101FFF, "LAUD Electronic Design AS", "LAUD-DESIGN-AS" }, { 0x0050C2, 0x102000, 0x102FFF, "Million Tech Development Ltd.", "MILLION-TECH-DEVELOPMENT" }, { 0x0050C2, 0x103000, 0x103FFF, "Green Hills Software, Inc.", "GREEN-HILLS-SOFTWARE" }, { 0x0050C2, 0x104000, 0x104FFF, "Adescom Inc.", "ADESCOM" }, { 0x0050C2, 0x105000, 0x105FFF, "Lumentis AB", "LUMENTIS-AB" }, { 0x0050C2, 0x106000, 0x106FFF, "MATSUOKA", "MATSUOKA" }, { 0x0050C2, 0x107000, 0x107FFF, "NewHer Systems", "NEWHER" }, { 0x0050C2, 0x108000, 0x108FFF, "Balogh S.A.", "BALOGH" }, { 0x0050C2, 0x109000, 0x109FFF, "ITK Dr. Kassen GmbH", "ITK-DR-KASSEN" }, { 0x0050C2, 0x10A000, 0x10AFFF, "Quinx AG", "QUINX" }, { 0x0050C2, 0x10B000, 0x10BFFF, "MarekMicro GmbH", "MAREKMICRO" }, { 0x0050C2, 0x10C000, 0x10CFFF, "Photonic Bridges, Inc.", "PHOTONIC-BRIDGES" }, { 0x0050C2, 0x10D000, 0x10DFFF, "Implementa GmbH", "IMPLEMENTA" }, { 0x0050C2, 0x10E000, 0x10EFFF, "Unipower AB", "UNIPOWER-AB" }, { 0x0050C2, 0x10F000, 0x10FFFF, "Perceptics Corp.", "PERCEPTICS" }, { 0x0050C2, 0x110000, 0x110FFF, "QuesCom", "QUESCOM" }, { 0x0050C2, 0x111000, 0x111FFF, "Endusis Limited", "ENDUSIS" }, { 0x0050C2, 0x112000, 0x112FFF, "Compuworx", "COMPUWORX" }, { 0x0050C2, 0x113000, 0x113FFF, "Ace Electronics, Inc.", "ACE-ELECTRONICS" }, { 0x0050C2, 0x114000, 0x114FFF, "Quest Innovations", "QUEST-INNOVATIONS" }, { 0x0050C2, 0x115000, 0x115FFF, "Vidco, Inc.", "VIDCO" }, { 0x0050C2, 0x116000, 0x116FFF, "DSP Design, Ltd.", "DSP-DESIGN" }, { 0x0050C2, 0x117000, 0x117FFF, "Wintegra Ltd.", "WINTEGRA" }, { 0x0050C2, 0x118000, 0x118FFF, "Microbit 2.0 AB", "MICROBIT-2-0-AB" }, { 0x0050C2, 0x119000, 0x119FFF, "Global Opto Communication Tech. Corp", "GLOBAL-OPTO-COMMUNICATION-TECH" }, { 0x0050C2, 0x11A000, 0x11AFFF, "Teamaxess Ticketing GmbH", "TEAMAXESS-TICKETING" }, { 0x0050C2, 0x11B000, 0x11BFFF, "Digital Vision AB", "DIGITAL-VISION-AB" }, { 0x0050C2, 0x11C000, 0x11CFFF, "Stonefly Networks", "STONEFLY-NETWORKS" }, { 0x0050C2, 0x11D000, 0x11DFFF, "Destiny Networks, Inc.", "DESTINY-NETWORKS" }, { 0x0050C2, 0x11E000, 0x11EFFF, "Volvo Car Corporation", "VOLVO-CAR" }, { 0x0050C2, 0x11F000, 0x11FFFF, "CSS Industrie Computer GmbH", "CSS-INDUSTRIE" }, { 0x0050C2, 0x120000, 0x120FFF, "XStore, Inc.", "XSTORE" }, { 0x0050C2, 0x121000, 0x121FFF, "COE Limited", "COE" }, { 0x0050C2, 0x122000, 0x122FFF, "Diva Systems", "DIVA" }, { 0x0050C2, 0x123000, 0x123FFF, "Seranoa Networks, Inc.", "SERANOA-NETWORKS" }, { 0x0050C2, 0x124000, 0x124FFF, "Tokai Soft Corporation", "TOKAI-SOFT" }, { 0x0050C2, 0x125000, 0x125FFF, "Tecwings GmBh", "TECWINGS" }, { 0x0050C2, 0x126000, 0x126FFF, "Marvell Hispana S.L.", "MARVELL-HISPANA-S-L" }, { 0x0050C2, 0x127000, 0x127FFF, "TPA Traffic & Parking Automation BV", "TPA-TRAFFIC-PARKING-AUTOMATION" }, { 0x0050C2, 0x128000, 0x128FFF, "Pycon, Inc.", "PYCON" }, { 0x0050C2, 0x129000, 0x129FFF, "TTPCom Ltd.", "TTPCOM" }, { 0x0050C2, 0x12A000, 0x12AFFF, "Symbolic Sound Corp.", "SYMBOLIC-SOUND" }, { 0x0050C2, 0x12B000, 0x12BFFF, "Dong A Eltek Co., Ltd.", "DONG-A-ELTEK" }, { 0x0050C2, 0x12C000, 0x12CFFF, "Delta Tau Data Systems, Inc.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x12D000, 0x12DFFF, "Megisto Systems, Inc.", "MEGISTO" }, { 0x0050C2, 0x12E000, 0x12EFFF, "RUNCOM", "RUNCOM" }, { 0x0050C2, 0x12F000, 0x12FFFF, "HAAG-STREIT AG", "HAAG-STREIT" }, { 0x0050C2, 0x130000, 0x130FFF, "U.S. Traffic Corporation", "U-S-TRAFFIC" }, { 0x0050C2, 0x131000, 0x131FFF, "InBus Engineering, Inc.", "INBUS-ENGINEERING" }, { 0x0050C2, 0x132000, 0x132FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x133000, 0x133FFF, "ChipWrights, Inc.", "CHIPWRIGHTS" }, { 0x0050C2, 0x134000, 0x134FFF, "DRS Photronics", "DRS-PHOTRONICS" }, { 0x0050C2, 0x135000, 0x135FFF, "ELAD SRL", "ELAD-SRL" }, { 0x0050C2, 0x136000, 0x136FFF, "Tensilica, Inc.", "TENSILICA" }, { 0x0050C2, 0x137000, 0x137FFF, "Uniwell Systems (UK) Ltd.", "UNIWELL-UK" }, { 0x0050C2, 0x138000, 0x138FFF, "Delphin Technology AG", "DELPHIN" }, { 0x0050C2, 0x139000, 0x139FFF, "SR Research Ltd.", "SR-RESEARCH" }, { 0x0050C2, 0x13A000, 0x13AFFF, "Tex Computer SRL", "TEX-SRL" }, { 0x0050C2, 0x13B000, 0x13BFFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x0050C2, 0x13C000, 0x13CFFF, "NBG Industrial Automation B.V.", "NBG-INDUSTRIAL-AUTOMATION" }, { 0x0050C2, 0x13D000, 0x13DFFF, "Formula One Management Ltd.", "FORMULA-ONE-MANAGEMENT" }, { 0x0050C2, 0x13E000, 0x13EFFF, "AVerMedia Systems, Inc.", "AVERMEDIA" }, { 0x0050C2, 0x13F000, 0x13FFFF, "Sentito Networks", "SENTITO-NETWORKS" }, { 0x0050C2, 0x140000, 0x140FFF, "ITS, Inc.", "ITS" }, { 0x0050C2, 0x141000, 0x141FFF, "Time Terminal Adductor Group AB", "TIME-TERMINAL-ADDUCTOR-GROUP-AB" }, { 0x0050C2, 0x142000, 0x142FFF, "Instrumeter A/S", "INSTRUMETER-A/S" }, { 0x0050C2, 0x143000, 0x143FFF, "AARTESYS AG", "AARTESYS" }, { 0x0050C2, 0x144000, 0x144FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x145000, 0x145FFF, "ELC Lighting", "ELC-LIGHTING" }, { 0x0050C2, 0x146000, 0x146FFF, "APCON, Inc.", "APCON" }, { 0x0050C2, 0x147000, 0x147FFF, "UniSUR", "UNISUR" }, { 0x0050C2, 0x148000, 0x148FFF, "Alltec GmbH", "ALLTEC" }, { 0x0050C2, 0x149000, 0x149FFF, "Haag-Streit AG", "HAAG-STREIT" }, { 0x0050C2, 0x14A000, 0x14AFFF, "DYCEC, S.A.", "DYCEC" }, { 0x0050C2, 0x14B000, 0x14BFFF, "HECUBA Elektronik", "HECUBA-ELEKTRONIK" }, { 0x0050C2, 0x14C000, 0x14CFFF, "Optibase Ltd.", "OPTIBASE" }, { 0x0050C2, 0x14D000, 0x14DFFF, "wellink, Ltd.", "WELLINK" }, { 0x0050C2, 0x14E000, 0x14EFFF, "Corinex Global", "CORINEX-GLOBAL" }, { 0x0050C2, 0x14F000, 0x14FFFF, "Telephonics Corp.", "TELEPHONICS" }, { 0x0050C2, 0x150000, 0x150FFF, "Torse", "TORSE" }, { 0x0050C2, 0x151000, 0x151FFF, "Redux Communications Ltd.", "REDUX-COMMUNICATION" }, { 0x0050C2, 0x152000, 0x152FFF, "AirVast Technology Inc.", "AIRVAST" }, { 0x0050C2, 0x153000, 0x153FFF, "Advanced Devices SpA", "ADVANCED-DEVICES-SPA" }, { 0x0050C2, 0x154000, 0x154FFF, "Jostra AB", "JOSTRA-AB" }, { 0x0050C2, 0x155000, 0x155FFF, "Enea Real Time AB", "ENEA-REAL-TIME-AB" }, { 0x0050C2, 0x156000, 0x156FFF, "CommServ Solutions Inc.", "COMMSERV-SOLUTIONS" }, { 0x0050C2, 0x157000, 0x157FFF, "nCore, Inc.", "NCORE" }, { 0x0050C2, 0x158000, 0x158FFF, "Communication Solutions, Inc.", "COMMUNICATION-SOLUTIONS" }, { 0x0050C2, 0x159000, 0x159FFF, "Standard Comm. Corp.", "STANDARD-COMM" }, { 0x0050C2, 0x15A000, 0x15AFFF, "Plextek Limited", "PLEXTEK" }, { 0x0050C2, 0x15B000, 0x15BFFF, "Dune Networks", "DUNE-NETWORKS" }, { 0x0050C2, 0x15C000, 0x15CFFF, "Aoptix Technologies", "AOPTIX-TECHNOLOGIES" }, { 0x0050C2, 0x15D000, 0x15DFFF, "Cepheid", "CEPHEID" }, { 0x0050C2, 0x15E000, 0x15EFFF, "Celite Systems, Inc.", "CELITE" }, { 0x0050C2, 0x15F000, 0x15FFFF, "Pulsar GmbH", "PULSAR" }, { 0x0050C2, 0x160000, 0x160FFF, "TTI - Telecom International Ltd.", "TTI---TELECOM" }, { 0x0050C2, 0x161000, 0x161FFF, "J&B Engineering Group S.L.", "J-B-ENGINEERING-GROUP-S-L" }, { 0x0050C2, 0x162000, 0x162FFF, "Teseda Corporation", "TESEDA" }, { 0x0050C2, 0x163000, 0x163FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x164000, 0x164FFF, "Acunia N.V.", "ACUNIA-N-V" }, { 0x0050C2, 0x165000, 0x165FFF, "IPCAST", "IPCAST" }, { 0x0050C2, 0x166000, 0x166FFF, "Infineer Ltd.", "INFINEER" }, { 0x0050C2, 0x167000, 0x167FFF, "Precision Filters, Inc.", "PRECISION-FILTERS" }, { 0x0050C2, 0x168000, 0x168FFF, "ExtremeSpeed Inc.", "EXTREMESPEED" }, { 0x0050C2, 0x169000, 0x169FFF, "Nordson Corp.", "NORDSON" }, { 0x0050C2, 0x16A000, 0x16AFFF, "Time Domain", "TIME-DOMAIN" }, { 0x0050C2, 0x16B000, 0x16BFFF, "Masterclock, Inc.", "MASTERCLOCK" }, { 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, 0x16E000, 0x16EFFF, "PMC", "PMC" }, { 0x0050C2, 0x16F000, 0x16FFFF, "Dickson Technologies", "DICKSON-TECHNOLOGIES" }, { 0x0050C2, 0x170000, 0x170FFF, "Taishodo Seiko Co., Ltd.", "TAISHODO-SEIKO" }, { 0x0050C2, 0x171000, 0x171FFF, "Quantronix, Inc.", "QUANTRONIX" }, { 0x0050C2, 0x172000, 0x172FFF, "SAET I.S. S.r.l.", "SAET-I-S-S-R-L" }, { 0x0050C2, 0x173000, 0x173FFF, "DeMeTec GmbH", "DEMETEC" }, { 0x0050C2, 0x174000, 0x174FFF, "N&P Technologies", "N-P-TECHNOLOGIES" }, { 0x0050C2, 0x175000, 0x175FFF, "Sei S.p.A.", "SEI-S-P-A" }, { 0x0050C2, 0x176000, 0x176FFF, "Wavium AB", "WAVIUM-AB" }, { 0x0050C2, 0x177000, 0x177FFF, "Unicoi Systems", "UNICOI" }, { 0x0050C2, 0x178000, 0x178FFF, "Partner Voxstream A/S", "PARTNER-VOXSTREAM-A/S" }, { 0x0050C2, 0x179000, 0x179FFF, "Verifiber LLC", "VERIFIBER-LLC" }, { 0x0050C2, 0x17A000, 0x17AFFF, "WOLF Industrial Systems Inc.", "WOLF-INDUSTRIAL" }, { 0x0050C2, 0x17B000, 0x17BFFF, "Broadstorm Telecom", "BROADSTORM-TELECOM" }, { 0x0050C2, 0x17C000, 0x17CFFF, "Jeffress Engineering Pty Ltd", "JEFFRESS-ENGINEERING-PTY" }, { 0x0050C2, 0x17D000, 0x17DFFF, "Cognex Corporation", "COGNEX" }, { 0x0050C2, 0x17E000, 0x17EFFF, "Binary Wave Technologies Inc.", "BINARY-WAVE-TECHNOLOGIES" }, { 0x0050C2, 0x17F000, 0x17FFFF, "PDQ Manufacturing", "PDQ-MANUFACTURING" }, { 0x0050C2, 0x180000, 0x180FFF, "Zultys Technologies", "ZULTYS-TECHNOLOGIES" }, { 0x0050C2, 0x181000, 0x181FFF, "Task 84 Spa", "TASK-84-SPA" }, { 0x0050C2, 0x182000, 0x182FFF, "wolf-inf-tec", "WOLF-INF-TEC" }, { 0x0050C2, 0x183000, 0x183FFF, "Mixbaal S.A. de C.V.", "MIXBAAL-DE-C-V" }, { 0x0050C2, 0x184000, 0x184FFF, "H M Computing Limited", "H-M-COMPUTING" }, { 0x0050C2, 0x185000, 0x185FFF, "Optical Wireless Link Inc.", "OPTICAL-WIRELESS-LINK" }, { 0x0050C2, 0x186000, 0x186FFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x0050C2, 0x187000, 0x187FFF, "Cyan Technology Ltd", "CYAN" }, { 0x0050C2, 0x188000, 0x188FFF, "dresden-elektronik", "DRESDEN-ELEKTRONIK" }, { 0x0050C2, 0x189000, 0x189FFF, "CC Systems AB", "CC-AB" }, { 0x0050C2, 0x18A000, 0x18AFFF, "Basler Electric Company", "BASLER-ELECTRIC-COMPANY" }, { 0x0050C2, 0x18B000, 0x18BFFF, "Teradyne Inc.", "TERADYNE" }, { 0x0050C2, 0x18C000, 0x18CFFF, "Technodrive srl", "TECHNODRIVE-SRL" }, { 0x0050C2, 0x18D000, 0x18DFFF, "CCII Systems (Pty) Ltd", "CCII-PTY" }, { 0x0050C2, 0x18E000, 0x18EFFF, "SPARR ELECTRONICS LTD", "SPARR-ELECTRONICS" }, { 0x0050C2, 0x18F000, 0x18FFFF, "MATSUI MFG CO.,LTD", "MATSUI-MFG" }, { 0x0050C2, 0x190000, 0x190FFF, "Goerlitz AG", "GOERLITZ" }, { 0x0050C2, 0x191000, 0x191FFF, "Partner Voxstream A/S", "PARTNER-VOXSTREAM-A/S" }, { 0x0050C2, 0x192000, 0x192FFF, "Advanced Concepts, Inc.", "ADVANCED-CONCEPTS" }, { 0x0050C2, 0x193000, 0x193FFF, "LaserBit Communications Corp.", "LASERBIT-COMMUNICATION" }, { 0x0050C2, 0x194000, 0x194FFF, "COMINFO", "COMINFO" }, { 0x0050C2, 0x195000, 0x195FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x0050C2, 0x196000, 0x196FFF, "Netsynt Spa", "NETSYNT-SPA" }, { 0x0050C2, 0x197000, 0x197FFF, "EPM Tecnologia e Equipamentos", "EPM-TECNOLOGIA-E-EQUIPAMENTOS" }, { 0x0050C2, 0x198000, 0x198FFF, "PotsTek, Inc", "POTSTEK" }, { 0x0050C2, 0x199000, 0x199FFF, "Survalent Technology Corporation", "SURVALENT" }, { 0x0050C2, 0x19A000, 0x19AFFF, "AZIO TECHNOLOGY CO.", "AZIO" }, { 0x0050C2, 0x19B000, 0x19BFFF, "Wilcoxon Research, Inc.", "WILCOXON-RESEARCH" }, { 0x0050C2, 0x19C000, 0x19CFFF, "Artec Design", "ARTEC-DESIGN" }, { 0x0050C2, 0x19D000, 0x19DFFF, "ELECTREX S.R.L", "ELECTREX-S-R-L" }, { 0x0050C2, 0x19E000, 0x19EFFF, "Paltronics, Inc.", "PALTRONICS" }, { 0x0050C2, 0x19F000, 0x19FFFF, "Fleetwood Electronics Ltd", "FLEETWOOD-ELECTRONICS" }, { 0x0050C2, 0x1A0000, 0x1A0FFF, "SCA Data Systems", "SCA-DATA" }, { 0x0050C2, 0x1A1000, 0x1A1FFF, "Portalplayer, Inc", "PORTALPLAYER" }, { 0x0050C2, 0x1A2000, 0x1A2FFF, "ABB Switzerland Inc", "ABB-SWITZERLAND" }, { 0x0050C2, 0x1A3000, 0x1A3FFF, "Tidel Engineering, L.P.", "TIDEL-ENGINEERING-L-P" }, { 0x0050C2, 0x1A4000, 0x1A4FFF, "Protech Optronics Co. Ltd.", "PROTECH-OPTRONICS" }, { 0x0050C2, 0x1A5000, 0x1A5FFF, "NORCO", "NORCO" }, { 0x0050C2, 0x1A6000, 0x1A6FFF, "RF Code", "RF-CODE" }, { 0x0050C2, 0x1A7000, 0x1A7FFF, "Alpha Beta Technologies, Inc.", "ALPHA-BETA-TECHNOLOGIES" }, { 0x0050C2, 0x1A8000, 0x1A8FFF, "ANOVA BROADBAND", "ANOVA-BROADBAND" }, { 0x0050C2, 0x1A9000, 0x1A9FFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x0050C2, 0x1AA000, 0x1AAFFF, "BitBox Ltd", "BITBOX" }, { 0x0050C2, 0x1AB000, 0x1ABFFF, "Streaming Networks", "STREAMING-NETWORKS" }, { 0x0050C2, 0x1AC000, 0x1ACFFF, "Beckmann+Egle GmbH", "BECKMANN+EGLE" }, { 0x0050C2, 0x1AD000, 0x1ADFFF, "Remia s.r.o.", "REMIA-S-R-O" }, { 0x0050C2, 0x1AE000, 0x1AEFFF, "Home Director, Inc", "HOME-DIRECTOR" }, { 0x0050C2, 0x1AF000, 0x1AFFFF, "PESA Switching Systems, Inc.", "PESA-SWITCHING" }, { 0x0050C2, 0x1B0000, 0x1B0FFF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0x0050C2, 0x1B1000, 0x1B1FFF, "Axes Technologies", "AXES-TECHNOLOGIES" }, { 0x0050C2, 0x1B2000, 0x1B2FFF, "SIGOS Systemintegration GmbH", "SIGOS-SYSTEMINTEGRATION" }, { 0x0050C2, 0x1B3000, 0x1B3FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x1B4000, 0x1B4FFF, "DSP Group Inc.", "DSP-GROUP" }, { 0x0050C2, 0x1B5000, 0x1B5FFF, "Thrane & Thrane A/S", "THRANE-THRANE-A/S" }, { 0x0050C2, 0x1B6000, 0x1B6FFF, "DTS, Inc.", "DTS" }, { 0x0050C2, 0x1B7000, 0x1B7FFF, "MosChip USA", "MOSCHIP-USA" }, { 0x0050C2, 0x1B8000, 0x1B8FFF, "Electronic Systems Development", "DEVELOPMENT" }, { 0x0050C2, 0x1B9000, 0x1B9FFF, "EmCom Technology Inc.", "EMCOM" }, { 0x0050C2, 0x1BA000, 0x1BAFFF, "INTERZEAG AG", "INTERZEAG" }, { 0x0050C2, 0x1BB000, 0x1BBFFF, "Email Metering", "EMAIL-METERING" }, { 0x0050C2, 0x1BC000, 0x1BCFFF, "DINEC International", "DINEC" }, { 0x0050C2, 0x1BD000, 0x1BDFFF, "AIOI Systems Co., Ltd.", "AIOI" }, { 0x0050C2, 0x1BE000, 0x1BEFFF, "Sedia Electronics", "SEDIA-ELECTRONICS" }, { 0x0050C2, 0x1BF000, 0x1BFFFF, "International Test & Engineering Services Co.,Ltd.", "TEST-ENGINEERING-SERVICES" }, { 0x0050C2, 0x1C0000, 0x1C0FFF, "WillMonius Inc.", "WILLMONIUS" }, { 0x0050C2, 0x1C1000, 0x1C1FFF, "InfinitiNetworks Inc.", "INFINITINETWORKS" }, { 0x0050C2, 0x1C2000, 0x1C2FFF, "Weltronics Corp.", "WELTRONICS" }, { 0x0050C2, 0x1C3000, 0x1C3FFF, "TT electronic manufacturing services ltd", "TT-MANUFACTURING-SERVICES" }, { 0x0050C2, 0x1C4000, 0x1C4FFF, "Palm Solutions Group", "PALM-SOLUTIONS-GROUP" }, { 0x0050C2, 0x1C5000, 0x1C5FFF, "Flander Oy", "FLANDER-OY" }, { 0x0050C2, 0x1C6000, 0x1C6FFF, "Remco Italia Spa", "REMCO-ITALIA-SPA" }, { 0x0050C2, 0x1C7000, 0x1C7FFF, "TWIN DEVELOPMENT S.A.", "TWIN-DEVELOPMENT" }, { 0x0050C2, 0x1C8000, 0x1C8FFF, "Euphony technology CO., LTD.", "EUPHONY" }, { 0x0050C2, 0x1C9000, 0x1C9FFF, "modas GmbH", "MODAS" }, { 0x0050C2, 0x1CA000, 0x1CAFFF, "EVER Sp. z o.o.", "EVER-SP-Z-O-O" }, { 0x0050C2, 0x1CB000, 0x1CBFFF, "quantumBEAM Limited", "QUANTUMBEAM" }, { 0x0050C2, 0x1CC000, 0x1CCFFF, "WaveIP ltd.", "WAVEIP" }, { 0x0050C2, 0x1CD000, 0x1CDFFF, "INCAA Informatica Italia srl", "INCAA-INFORMATICA-ITALIA-SRL" }, { 0x0050C2, 0x1CE000, 0x1CEFFF, "Datatek Applications, Inc.", "DATATEK-APPLICATIONS" }, { 0x0050C2, 0x1CF000, 0x1CFFFF, "LIFETIME MEMORY PRODUCTS, INC.", "LIFETIME-MEMORY-PRODUCTS" }, { 0x0050C2, 0x1D0000, 0x1D0FFF, "Yazaki North America, Inc.", "YAZAKI-NORTH-AMERICA" }, { 0x0050C2, 0x1D1000, 0x1D1FFF, "Benchmark Electronics", "BENCHMARK-ELECTRONICS" }, { 0x0050C2, 0x1D2000, 0x1D2FFF, "Shenyang Internet Technology Inc", "SHENYANG-INTERNET" }, { 0x0050C2, 0x1D3000, 0x1D3FFF, "Synopsys", "SYNOPSYS" }, { 0x0050C2, 0x1D4000, 0x1D4FFF, "Phase IV Engineering Inc.", "PHASE-IV-ENGINEERING" }, { 0x0050C2, 0x1D5000, 0x1D5FFF, "Redpoint Controls", "REDPOINT-CONTROLS" }, { 0x0050C2, 0x1D6000, 0x1D6FFF, "shanghai trend intelligent systems CO.,LTD", "SHANGHAI-TREND-INTELLIGENT" }, { 0x0050C2, 0x1D7000, 0x1D7FFF, "Pleora Technologies Inc.", "PLEORA-TECHNOLOGIES" }, { 0x0050C2, 0x1D8000, 0x1D8FFF, "Guardian Controls International", "GUARDIAN-CONTROLS" }, { 0x0050C2, 0x1D9000, 0x1D9FFF, "EDC", "EDC" }, { 0x0050C2, 0x1DA000, 0x1DAFFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x1DB000, 0x1DBFFF, "Applied Systems Engineering, Inc.", "APPLIED-ENGINEERING" }, { 0x0050C2, 0x1DC000, 0x1DCFFF, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0050C2, 0x1DD000, 0x1DDFFF, "Peiker acustic GmbH & Co. KG", "PEIKER-ACUSTIC" }, { 0x0050C2, 0x1DE000, 0x1DEFFF, "ReliOn Inc.", "RELION" }, { 0x0050C2, 0x1DF000, 0x1DFFFF, "Lulea University of Technology", "LULEA-UNIVERSITY-OF" }, { 0x0050C2, 0x1E0000, 0x1E0FFF, "Cognex Corporation", "COGNEX" }, { 0x0050C2, 0x1E1000, 0x1E1FFF, "Automaatiotekniikka Seppo Saari Oy", "AUTOMAATIOTEKNIIKKA-SEPPO-SAARI-OY" }, { 0x0050C2, 0x1E2000, 0x1E2FFF, "DIGITRONIC Automationsanlagen GmbH", "DIGITRONIC-AUTOMATIONSANLAGEN" }, { 0x0050C2, 0x1E3000, 0x1E3FFF, "Bluesocket, Inc.", "BLUESOCKET" }, { 0x0050C2, 0x1E4000, 0x1E4FFF, "Soronti, Inc.", "SORONTI" }, { 0x0050C2, 0x1E5000, 0x1E5FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x1E6000, 0x1E6FFF, "United Tri-Tech Corporation", "UNITED-TRI-TECH" }, { 0x0050C2, 0x1E7000, 0x1E7FFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0x1E8000, 0x1E8FFF, "Metrotech", "METROTECH" }, { 0x0050C2, 0x1E9000, 0x1E9FFF, "Ranch Networks", "RANCH-NETWORKS" }, { 0x0050C2, 0x1EA000, 0x1EAFFF, "DAVE S.r.L.", "DAVE-S-R-L" }, { 0x0050C2, 0x1EB000, 0x1EBFFF, "Data Respons A/S", "DATA-RESPONS-A/S" }, { 0x0050C2, 0x1EC000, 0x1ECFFF, "COSMO co.,ltd.", "COSMO" }, { 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, 0x1EF000, 0x1EFFFF, "M2 Technology Pty Ltd", "M2-PTY" }, { 0x0050C2, 0x1F0000, 0x1F0FFF, "EXI Wireless Systems Inc.", "EXI-WIRELESS" }, { 0x0050C2, 0x1F1000, 0x1F1FFF, "SKY Computers, Inc.", "SKY-COMPUTERS" }, { 0x0050C2, 0x1F2000, 0x1F2FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x1F3000, 0x1F3FFF, "Radionor Communications AS", "RADIONOR-COMMUNICATION-AS" }, { 0x0050C2, 0x1F4000, 0x1F4FFF, "Covia, Inc", "COVIA" }, { 0x0050C2, 0x1F5000, 0x1F5FFF, "Abest Communication Corp.", "ABEST-COMMUNICATION" }, { 0x0050C2, 0x1F6000, 0x1F6FFF, "BAE SYSTEMS Controls", "BAE-CONTROLS" }, { 0x0050C2, 0x1F7000, 0x1F7FFF, "ARC'Créations", "ARC-CRéATIONS" }, { 0x0050C2, 0x1F8000, 0x1F8FFF, "ULTRACKER TECHNOLOGY", "ULTRACKER" }, { 0x0050C2, 0x1F9000, 0x1F9FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x1FA000, 0x1FAFFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0x1FB000, 0x1FBFFF, "Willowglen Systems Inc.", "WILLOWGLEN" }, { 0x0050C2, 0x1FC000, 0x1FCFFF, "EDD Srl", "EDD-SRL" }, { 0x0050C2, 0x1FD000, 0x1FDFFF, "SouthWing S.L.", "SOUTHWING-S-L" }, { 0x0050C2, 0x1FE000, 0x1FEFFF, "Safetran Traffic Systems Inc.", "SAFETRAN-TRAFFIC" }, { 0x0050C2, 0x1FF000, 0x1FFFFF, "Product Design Dept., Sohwa Corporation", "PRODUCT-DESIGN-DEPT-SOHWA" }, { 0x0050C2, 0x200000, 0x200FFF, "Whittier Mailing Products, Inc.", "WHITTIER-MAILING-PRODUCTS" }, { 0x0050C2, 0x201000, 0x201FFF, "OlympusNDT", "OLYMPUSNDT" }, { 0x0050C2, 0x202000, 0x202FFF, "Audio Riders Oy", "AUDIO-RIDERS-OY" }, { 0x0050C2, 0x203000, 0x203FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x204000, 0x204FFF, "Algodue Elettronica srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x0050C2, 0x205000, 0x205FFF, "SystIng", "SYSTING" }, { 0x0050C2, 0x206000, 0x206FFF, "Windmill Innovations", "WINDMILL-INNOVATIONS" }, { 0x0050C2, 0x207000, 0x207FFF, "Solectron Ind.Com.Servs.Exportadora do Brasil Ltda.", "SOLECTRON-IND-COM-SERVS-EXPORTADORA-DO-BRASIL-LTDA" }, { 0x0050C2, 0x208000, 0x208FFF, "nNovia, Inc.", "NNOVIA" }, { 0x0050C2, 0x209000, 0x209FFF, "LK Ltd", "LK" }, { 0x0050C2, 0x20A000, 0x20AFFF, "Ferrari electronic AG", "FERRARI" }, { 0x0050C2, 0x20B000, 0x20BFFF, "Rafael", "RAFAEL" }, { 0x0050C2, 0x20C000, 0x20CFFF, "Communication and Telemechanical Systems Company Limited", "COMMUNICATION-AND-TELEMECHANICAL-COMPANY" }, { 0x0050C2, 0x20D000, 0x20DFFF, "Varisys Ltd", "VARISYS" }, { 0x0050C2, 0x20E000, 0x20EFFF, "PYRAMID Computer Systeme GmbH", "PYRAMID-SYSTEME" }, { 0x0050C2, 0x20F000, 0x20FFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x210000, 0x210FFF, "Innovics Wireless Inc", "INNOVICS-WIRELESS" }, { 0x0050C2, 0x211000, 0x211FFF, "Hochschule für Technik, Wirtschaft und Kultur Leipzig (FH)", "HOCHSCHULE-FüR-TECHNIK-WIRTSCHAFT-UND-KULTUR-LEIPZIG-FH" }, { 0x0050C2, 0x212000, 0x212FFF, "4Links Limited", "4LINKS" }, { 0x0050C2, 0x213000, 0x213FFF, "SysAware S.A.R.L.", "SYSAWARE-R-L" }, { 0x0050C2, 0x214000, 0x214FFF, "Oshimi System Design Inc.", "OSHIMI-SYSTEM-DESIGN" }, { 0x0050C2, 0x215000, 0x215FFF, "VoiceCom AG", "VOICECOM" }, { 0x0050C2, 0x216000, 0x216FFF, "Level Control Systems", "LEVEL-CONTROL" }, { 0x0050C2, 0x217000, 0x217FFF, "Linn Products Ltd", "LINN-PRODUCTS" }, { 0x0050C2, 0x218000, 0x218FFF, "Nansen S. A. - Instrumentos de Precisão", "NANSEN-S-A---INSTRUMENTOS-DE-PRECISãO" }, { 0x0050C2, 0x219000, 0x219FFF, "Aeroflex GmbH", "AEROFLEX" }, { 0x0050C2, 0x21A000, 0x21AFFF, "MST SYSTEMS LIMITED", "MST" }, { 0x0050C2, 0x21B000, 0x21BFFF, "General Dynamics Decision Systems", "GENERAL-DYNAMICS-DECISION" }, { 0x0050C2, 0x21C000, 0x21CFFF, "Fracarro Radioindustrie SPA", "FRACARRO-RADIOINDUSTRIE-SPA" }, { 0x0050C2, 0x21D000, 0x21DFFF, "ESG Elektroniksystem u. Logistik GmbH", "ESG-ELEKTRONIKSYSTEM-U-LOGISTIK" }, { 0x0050C2, 0x21E000, 0x21EFFF, "Applied Technologies Associates", "APPLIED-TECHNOLOGIES-ASSOCIATES" }, { 0x0050C2, 0x21F000, 0x21FFFF, "Monitor Business Machines Ltd", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x220000, 0x220FFF, "Serveron Corporation", "SERVERON" }, { 0x0050C2, 0x221000, 0x221FFF, "Getinge IT Solutions ApS", "GETINGE-IT-SOLUTIONS-APS" }, { 0x0050C2, 0x222000, 0x222FFF, "imo-elektronik GmbH", "IMO-ELEKTRONIK" }, { 0x0050C2, 0x223000, 0x223FFF, "visicontrol GmbH", "VISICONTROL" }, { 0x0050C2, 0x224000, 0x224FFF, "PANNOCOM Ltd.", "PANNOCOM" }, { 0x0050C2, 0x225000, 0x225FFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x226000, 0x226FFF, "Ross Video Limited", "ROSS-VIDEO" }, { 0x0050C2, 0x227000, 0x227FFF, "Intelligent Photonics Control", "INTELLIGENT-PHOTONICS-CONTROL" }, { 0x0050C2, 0x228000, 0x228FFF, "Intelligent Media Technologies, Inc.", "INTELLIGENT-MEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x229000, 0x229FFF, "eko systems inc.", "EKO" }, { 0x0050C2, 0x22A000, 0x22AFFF, "Crescendo Networks", "CRESCENDO-NETWORKS" }, { 0x0050C2, 0x22B000, 0x22BFFF, "Riegl Laser Measurement Systems GmbH", "RIEGL-LASER-MEASUREMENT" }, { 0x0050C2, 0x22C000, 0x22CFFF, "Intrinsity", "INTRINSITY" }, { 0x0050C2, 0x22D000, 0x22DFFF, "asetek Inc.", "ASETEK" }, { 0x0050C2, 0x22E000, 0x22EFFF, "LORD INGENIERIE", "LORD-INGENIERIE" }, { 0x0050C2, 0x22F000, 0x22FFFF, "HTEC Limited", "HTEC" }, { 0x0050C2, 0x230000, 0x230FFF, "AutoTOOLS group Co. Ltd.", "AUTOTOOLS-GROUP" }, { 0x0050C2, 0x231000, 0x231FFF, "Legra Systems, Inc.", "LEGRA" }, { 0x0050C2, 0x232000, 0x232FFF, "SIMET", "SIMET" }, { 0x0050C2, 0x233000, 0x233FFF, "EdenTree Technologies, Inc.", "EDENTREE-TECHNOLOGIES" }, { 0x0050C2, 0x234000, 0x234FFF, "Silverback Systems", "SILVERBACK" }, { 0x0050C2, 0x235000, 0x235FFF, "POLIMAR ELEKTRONIK LTD.", "POLIMAR-ELEKTRONIK" }, { 0x0050C2, 0x236000, 0x236FFF, "JLCooper Electronics", "JLCOOPER-ELECTRONICS" }, { 0x0050C2, 0x237000, 0x237FFF, "Tandata Systems Ltd", "TANDATA" }, { 0x0050C2, 0x238000, 0x238FFF, "Schwer+Kopka GmbH", "SCHWER+KOPKA" }, { 0x0050C2, 0x239000, 0x239FFF, "Stins Coman", "STINS-COMAN" }, { 0x0050C2, 0x23A000, 0x23AFFF, "Chantry Networks", "CHANTRY-NETWORKS" }, { 0x0050C2, 0x23B000, 0x23BFFF, "Envara", "ENVARA" }, { 0x0050C2, 0x23C000, 0x23CFFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x0050C2, 0x23D000, 0x23DFFF, "Gauging Systems Inc", "GAUGING" }, { 0x0050C2, 0x23E000, 0x23EFFF, "Kallastra Inc.", "KALLASTRA" }, { 0x0050C2, 0x23F000, 0x23FFFF, "Halliburton - NUMAR", "HALLIBURTON---NUMAR" }, { 0x0050C2, 0x240000, 0x240FFF, "Geoquip Ltd", "GEOQUIP" }, { 0x0050C2, 0x241000, 0x241FFF, "Contronics Automacao Ltda", "CONTRONICS-AUTOMACAO-LTDA" }, { 0x0050C2, 0x242000, 0x242FFF, "MDS SCIEX", "MDS-SCIEX" }, { 0x0050C2, 0x243000, 0x243FFF, "RGB Spectrum", "RGB-SPECTRUM" }, { 0x0050C2, 0x244000, 0x244FFF, "intec GmbH", "INTEC" }, { 0x0050C2, 0x245000, 0x245FFF, "Hauppauge Computer Works, Inc.", "HAUPPAUGE-WORKS" }, { 0x0050C2, 0x246000, 0x246FFF, "Hardmeier", "HARDMEIER" }, { 0x0050C2, 0x247000, 0x247FFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x248000, 0x248FFF, "Dixtal Biomedica Ind. Com. Ltda.", "DIXTAL-BIOMEDICA-IND-COM-LTDA" }, { 0x0050C2, 0x249000, 0x249FFF, "Bender GmbH & Co. KG", "BENDER" }, { 0x0050C2, 0x24A000, 0x24AFFF, "CDS Rail", "CDS-RAIL" }, { 0x0050C2, 0x24B000, 0x24BFFF, "Azimuth Systems, Inc.", "AZIMUTH" }, { 0x0050C2, 0x24C000, 0x24CFFF, "Supertel", "SUPERTEL" }, { 0x0050C2, 0x24D000, 0x24DFFF, "METTLER-TOLEDO HI-SPEED", "METTLER-TOLEDO-HI-SPEED" }, { 0x0050C2, 0x24E000, 0x24EFFF, "Scharff Weisberg Systems Integration Inc", "SCHARFF-WEISBERG-INTEGRATION" }, { 0x0050C2, 0x24F000, 0x24FFFF, "Macronet s.r.l.", "MACRONET-S-R-L" }, { 0x0050C2, 0x250000, 0x250FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x251000, 0x251FFF, "DGT Sp. z o.o.", "DGT-SP-Z-O-O" }, { 0x0050C2, 0x252000, 0x252FFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x253000, 0x253FFF, "DSM-Messtechnik GmbH", "DSM-MESSTECHNIK" }, { 0x0050C2, 0x254000, 0x254FFF, "Thales Communications Ltd", "THALES-COMMUNICATION" }, { 0x0050C2, 0x255000, 0x255FFF, "STMicroelectronics (R&D) Ltd", "STMICROELECTRONICS-R-D" }, { 0x0050C2, 0x256000, 0x256FFF, "Information Technology Corp.", "INFORMATION" }, { 0x0050C2, 0x257000, 0x257FFF, "Digicast Networks", "DIGICAST-NETWORKS" }, { 0x0050C2, 0x258000, 0x258FFF, "Spacesaver Corporation", "SPACESAVER" }, { 0x0050C2, 0x259000, 0x259FFF, "Omicron Ceti AB", "OMICRON-CETI-AB" }, { 0x0050C2, 0x25A000, 0x25AFFF, "Zendex Corporation", "ZENDEX" }, { 0x0050C2, 0x25B000, 0x25BFFF, "Winford Engineering", "WINFORD-ENGINEERING" }, { 0x0050C2, 0x25C000, 0x25CFFF, "Softhill Technologies Ltd.", "SOFTHILL-TECHNOLOGIES" }, { 0x0050C2, 0x25D000, 0x25DFFF, "RDTECH", "RDTECH" }, { 0x0050C2, 0x25E000, 0x25EFFF, "MITE Hradec Kralove, s.r.o.", "MITE-HRADEC-KRALOVE-S-R-O" }, { 0x0050C2, 0x25F000, 0x25FFFF, "Handtmann Maschinenfabrik GmbH&Co.KG", "HANDTMANN-MASCHINENFABRIK" }, { 0x0050C2, 0x260000, 0x260FFF, "BIOTAGE", "BIOTAGE" }, { 0x0050C2, 0x261000, 0x261FFF, "Tattile Srl", "TATTILE-SRL" }, { 0x0050C2, 0x262000, 0x262FFF, "Shanghai Gaozhi Science&Technology Development Ltd.", "SHANGHAI-GAOZHI-SCIENCE-DEVELOPMENT" }, { 0x0050C2, 0x263000, 0x263FFF, "Vansco Electronics Oy", "VANSCO-ELECTRONICS-OY" }, { 0x0050C2, 0x264000, 0x264FFF, "Confidence Direct Ltd", "CONFIDENCE-DIRECT" }, { 0x0050C2, 0x265000, 0x265FFF, "BELIK S.P.R.L.", "BELIK-S-P-R-L" }, { 0x0050C2, 0x266000, 0x266FFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x0050C2, 0x267000, 0x267FFF, "Allen Martin Conservation Ltd", "ALLEN-MARTIN-CONSERVATION" }, { 0x0050C2, 0x268000, 0x268FFF, "Parabit Systems", "PARABIT" }, { 0x0050C2, 0x269000, 0x269FFF, "Technisyst Pty Ltd", "TECHNISYST-PTY" }, { 0x0050C2, 0x26A000, 0x26AFFF, "FG SYNERYS", "FG-SYNERYS" }, { 0x0050C2, 0x26B000, 0x26BFFF, "Continental Gateway Limited", "CONTINENTAL-GATEWAY" }, { 0x0050C2, 0x26C000, 0x26CFFF, "Crystal Vision Ltd", "CRYSTAL-VISION" }, { 0x0050C2, 0x26D000, 0x26DFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x26E000, 0x26EFFF, "ZP Engineering srl", "ZP-ENGINEERING-SRL" }, { 0x0050C2, 0x26F000, 0x26FFFF, "Digital Recorders Inc", "DIGITAL-RECORDERS" }, { 0x0050C2, 0x270000, 0x270FFF, "S4 Technology Pty Ltd", "S4-PTY" }, { 0x0050C2, 0x271000, 0x271FFF, "VLSIP TECHNOLOGIES INC.", "VLSIP-TECHNOLOGIES" }, { 0x0050C2, 0x272000, 0x272FFF, "Verex Technology", "VEREX" }, { 0x0050C2, 0x273000, 0x273FFF, "Servicios Condumex, S. A. de C. V.", "SERVICIOS-CONDUMEX-S-A-DE-C-V" }, { 0x0050C2, 0x274000, 0x274FFF, "Fundación TECNALIA Research & Innovation", "FUNDACIóN-TECNALIA-RESEARCH-INNOVATION" }, { 0x0050C2, 0x275000, 0x275FFF, "Extreme Engineering Solutions", "EXTREME-ENGINEERING-SOLUTIONS" }, { 0x0050C2, 0x276000, 0x276FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0x277000, 0x277FFF, "T/R Systems, Inc.", "T/R" }, { 0x0050C2, 0x278000, 0x278FFF, "Replicom Ltd.", "REPLICOM" }, { 0x0050C2, 0x279000, 0x279FFF, "PATLITE Corporation", "PATLITE" }, { 0x0050C2, 0x27A000, 0x27AFFF, "Maestro Pty Ltd", "MAESTRO-PTY" }, { 0x0050C2, 0x27B000, 0x27BFFF, "LinkSecurity A/S", "LINKSECURITY-A/S" }, { 0x0050C2, 0x27C000, 0x27CFFF, "Danlaw Inc", "DANLAW" }, { 0x0050C2, 0x27D000, 0x27DFFF, "ALLIED TELESIS K.K.", "ALLIED-TELESIS-K-K" }, { 0x0050C2, 0x27E000, 0x27EFFF, "AnaLogic Computers Ltd.", "ANALOGIC-COMPUTERS" }, { 0x0050C2, 0x27F000, 0x27FFFF, "Air Broadband Communications, Inc.", "AIR-BROADBAND-COMMUNICATION" }, { 0x0050C2, 0x280000, 0x280FFF, "AGECODAGIS SARL", "AGECODAGIS-SARL" }, { 0x0050C2, 0x281000, 0x281FFF, "CabTronix GmbH", "CABTRONIX" }, { 0x0050C2, 0x282000, 0x282FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0x283000, 0x283FFF, "ANSITEX CORP.", "ANSITEX" }, { 0x0050C2, 0x284000, 0x284FFF, "Micronet Ltd.", "MICRONET" }, { 0x0050C2, 0x285000, 0x285FFF, "Littwin GmbH & Co KG", "LITTWIN" }, { 0x0050C2, 0x286000, 0x286FFF, "ATEME", "ATEME" }, { 0x0050C2, 0x287000, 0x287FFF, "TECNEW Electronics Engineering Cr., Ltd.", "TECNEW-ELECTRONICS-ENGINEERING-CR" }, { 0x0050C2, 0x288000, 0x288FFF, "RPM Systems Corporation", "RPM" }, { 0x0050C2, 0x289000, 0x289FFF, "Rototype S.p.A.", "ROTOTYPE-S-P-A" }, { 0x0050C2, 0x28A000, 0x28AFFF, "Real Time Systems", "REAL-TIME" }, { 0x0050C2, 0x28B000, 0x28BFFF, "Orion Technologies, Incorporated", "ORION-TECHNOLOGIES-INCORPORATED" }, { 0x0050C2, 0x28C000, 0x28CFFF, "Futaba Corporation", "FUTABA" }, { 0x0050C2, 0x28D000, 0x28DFFF, "AXODE SA", "AXODE" }, { 0x0050C2, 0x28E000, 0x28EFFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x28F000, 0x28FFFF, "Spellman High Voltage Electronics Corp", "SPELLMAN-HIGH-VOLTAGE-ELECTRONICS" }, { 0x0050C2, 0x290000, 0x290FFF, "EBNEURO SPA", "EBNEURO-SPA" }, { 0x0050C2, 0x291000, 0x291FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x292000, 0x292FFF, "AMIRIX Systems", "AMIRIX" }, { 0x0050C2, 0x293000, 0x293FFF, "IP Unity", "IP-UNITY" }, { 0x0050C2, 0x294000, 0x294FFF, "EPSa GmbH", "EPSA" }, { 0x0050C2, 0x295000, 0x295FFF, "LOGOSOL, INC.", "LOGOSOL" }, { 0x0050C2, 0x296000, 0x296FFF, "OpVista", "OPVISTA" }, { 0x0050C2, 0x297000, 0x297FFF, "KINETICS", "KINETICS" }, { 0x0050C2, 0x298000, 0x298FFF, "Harvad University", "HARVAD-UNIVERSITY" }, { 0x0050C2, 0x299000, 0x299FFF, "CAD-UL GmbH", "CAD-UL" }, { 0x0050C2, 0x29A000, 0x29AFFF, "Packet Techniques Inc.", "PACKET-TECHNIQUES" }, { 0x0050C2, 0x29B000, 0x29BFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x29C000, 0x29CFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x29D000, 0x29DFFF, "Globe Wireless", "GLOBE-WIRELESS" }, { 0x0050C2, 0x29E000, 0x29EFFF, "SELEX Communications Ltd", "SELEX-COMMUNICATION" }, { 0x0050C2, 0x29F000, 0x29FFFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0x2A0000, 0x2A0FFF, "Sterling Industry Consult GmbH", "STERLING-INDUSTRY-CONSULT" }, { 0x0050C2, 0x2A1000, 0x2A1FFF, "Infinetix Corp", "INFINETIX" }, { 0x0050C2, 0x2A2000, 0x2A2FFF, "Epelsa, SL", "EPELSA-SL" }, { 0x0050C2, 0x2A3000, 0x2A3FFF, "West-Com Nurse Call Systems, Inc.", "WEST-COM-NURSE-CALL" }, { 0x0050C2, 0x2A4000, 0x2A4FFF, "Xipher Embedded Networking", "XIPHER-EMBEDDED-NETWORKING" }, { 0x0050C2, 0x2A5000, 0x2A5FFF, "Septier Communication Ltd", "SEPTIER-COMMUNICATION" }, { 0x0050C2, 0x2A6000, 0x2A6FFF, "Brannstroms Elektronik AB", "BRANNSTROMS-ELEKTRONIK-AB" }, { 0x0050C2, 0x2A7000, 0x2A7FFF, "Micro System Architecturing srl", "MICRO-SYSTEM-ARCHITECTURING-SRL" }, { 0x0050C2, 0x2A8000, 0x2A8FFF, "DVTel Israel Ltd.", "DVTEL-ISRAEL" }, { 0x0050C2, 0x2A9000, 0x2A9FFF, "Dr. Staiger, Mohilo + Co GmbH", "DR-STAIGER-MOHILO-+" }, { 0x0050C2, 0x2AA000, 0x2AAFFF, "DEUTA Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0x2AB000, 0x2ABFFF, "AUM Infotech Private Limited", "AUM-INFOTECH-PRIVATE" }, { 0x0050C2, 0x2AC000, 0x2ACFFF, "BBI Engineering, Inc.", "BBI-ENGINEERING" }, { 0x0050C2, 0x2AD000, 0x2ADFFF, "ABB T&D Spa", "ABB-T-D-SPA" }, { 0x0050C2, 0x2AE000, 0x2AEFFF, "Quest Retail Technology Pty Ltd", "QUEST-RETAIL-PTY" }, { 0x0050C2, 0x2AF000, 0x2AFFFF, "CSA Computer & Antriebstechnik GmbH", "CSA-ANTRIEBSTECHNIK" }, { 0x0050C2, 0x2B0000, 0x2B0FFF, "Telda Electronics", "TELDA-ELECTRONICS" }, { 0x0050C2, 0x2B1000, 0x2B1FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x2B2000, 0x2B2FFF, "Smiths Detection", "SMITHS-DETECTION" }, { 0x0050C2, 0x2B3000, 0x2B3FFF, "Embedded Systems Design", "EMBEDDED-DESIGN" }, { 0x0050C2, 0x2B4000, 0x2B4FFF, "Polatis Ltd", "POLATIS" }, { 0x0050C2, 0x2B5000, 0x2B5FFF, "Hobbes Computer Network Accessories", "HOBBES-NETWORK-ACCESSORIES" }, { 0x0050C2, 0x2B6000, 0x2B6FFF, "Softier Inc.", "SOFTIER" }, { 0x0050C2, 0x2B7000, 0x2B7FFF, "Rafi GmbH & Co. KG", "RAFI" }, { 0x0050C2, 0x2B8000, 0x2B8FFF, "Admiral Secure Products, Ltd.", "ADMIRAL-SECURE-PRODUCTS" }, { 0x0050C2, 0x2B9000, 0x2B9FFF, "Richmond Sound Design Ltd.", "RICHMOND-SOUND-DESIGN" }, { 0x0050C2, 0x2BA000, 0x2BAFFF, "NORCO INDUSTRIAL TECHNOLOGY INC", "NORCO-INDUSTRIAL" }, { 0x0050C2, 0x2BB000, 0x2BBFFF, "TA Instruments Ltd", "TA-INSTRUMENTS" }, { 0x0050C2, 0x2BC000, 0x2BCFFF, "Uster Technologies AG", "USTER-TECHNOLOGIES" }, { 0x0050C2, 0x2BD000, 0x2BDFFF, "StorLink Semi", "STORLINK-SEMI" }, { 0x0050C2, 0x2BE000, 0x2BEFFF, "Lipowsky Industrie-Elektronik GmbH", "LIPOWSKY-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0x2BF000, 0x2BFFFF, "PERAX", "PERAX" }, { 0x0050C2, 0x2C0000, 0x2C0FFF, "Magellan Technology Pty Ltd", "MAGELLAN-PTY" }, { 0x0050C2, 0x2C1000, 0x2C1FFF, "Stage Tec Entwicklungsgesellschaft für professionelle Audio", "STAGE-TEC-ENTWICKLUNGSGESELLSCHAFT-FüR-PROFESSIONELLE-AUDIO" }, { 0x0050C2, 0x2C2000, 0x2C2FFF, "Smarteye Corporation", "SMARTEYE" }, { 0x0050C2, 0x2C3000, 0x2C3FFF, "Digital SP Ltd", "DIGITAL-SP" }, { 0x0050C2, 0x2C4000, 0x2C4FFF, "Invensys Energy Systens (NZ) Limited", "INVENSYS-ENERGY-SYSTENS-NZ" }, { 0x0050C2, 0x2C5000, 0x2C5FFF, "Elman srl", "ELMAN-SRL" }, { 0x0050C2, 0x2C6000, 0x2C6FFF, "Initial Electronic Security Systems", "INITIAL-SECURITY" }, { 0x0050C2, 0x2C7000, 0x2C7FFF, "Siliquent Technologies Ltd", "SILIQUENT-TECHNOLOGIES" }, { 0x0050C2, 0x2C8000, 0x2C8FFF, "SELCO", "SELCO" }, { 0x0050C2, 0x2C9000, 0x2C9FFF, "Roseman Engineering Ltd.", "ROSEMAN-ENGINEERING" }, { 0x0050C2, 0x2CA000, 0x2CAFFF, "PUTERCOM CO., LTD", "PUTERCOM" }, { 0x0050C2, 0x2CB000, 0x2CBFFF, "FACTS Engineering LLC", "FACTS-ENGINEERING-LLC" }, { 0x0050C2, 0x2CC000, 0x2CCFFF, "EMBEDDED TOOLSMITHS", "EMBEDDED-TOOLSMITHS" }, { 0x0050C2, 0x2CD000, 0x2CDFFF, "DataWind Research", "DATAWIND-RESEARCH" }, { 0x0050C2, 0x2CE000, 0x2CEFFF, "Ross Video Limited", "ROSS-VIDEO" }, { 0x0050C2, 0x2CF000, 0x2CFFFF, "Diseño de Sistemas en Silicio S.A.", "DISEñO-DE-SISTEMAS-EN-SILICIO" }, { 0x0050C2, 0x2D0000, 0x2D0FFF, "Worth Data, Inc.", "WORTH-DATA" }, { 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, 0x2D4000, 0x2D4FFF, "Integrated System Solution Corp.", "INTEGRATED-SYSTEM-SOLUTION" }, { 0x0050C2, 0x2D5000, 0x2D5FFF, "PIXY AG", "PIXY" }, { 0x0050C2, 0x2D6000, 0x2D6FFF, "WIS Technologies", "WIS-TECHNOLOGIES" }, { 0x0050C2, 0x2D7000, 0x2D7FFF, "Neo Electronics Ltd", "NEO-ELECTRONICS" }, { 0x0050C2, 0x2D8000, 0x2D8FFF, "SYN-TECH SYSTEMS INC", "SYN-TECH" }, { 0x0050C2, 0x2D9000, 0x2D9FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x2DA000, 0x2DAFFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x0050C2, 0x2DB000, 0x2DBFFF, "AutoTOOLS group Co. Ltd.", "AUTOTOOLS-GROUP" }, { 0x0050C2, 0x2DC000, 0x2DCFFF, "Wiener, Plein & Baus GmbH", "WIENER-PLEIN-BAUS" }, { 0x0050C2, 0x2DD000, 0x2DDFFF, "Westek Technology Ltd", "WESTEK" }, { 0x0050C2, 0x2DE000, 0x2DEFFF, "Research Applications", "RESEARCH-APPLICATIONS" }, { 0x0050C2, 0x2DF000, 0x2DFFFF, "MICREL-NKE", "MICREL-NKE" }, { 0x0050C2, 0x2E0000, 0x2E0FFF, "Baxter Healthcare", "BAXTER-HEALTHCARE" }, { 0x0050C2, 0x2E1000, 0x2E1FFF, "Access IS", "ACCESS-IS" }, { 0x0050C2, 0x2E2000, 0x2E2FFF, "Ballard Technology, Inc.", "BALLARD" }, { 0x0050C2, 0x2E3000, 0x2E3FFF, "MG Industrieelektronik GmbH", "MG-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0x2E4000, 0x2E4FFF, "iamba LTD.", "IAMBA" }, { 0x0050C2, 0x2E5000, 0x2E5FFF, "Transtech DSP", "TRANSTECH-DSP" }, { 0x0050C2, 0x2E6000, 0x2E6FFF, "DALSA", "DALSA" }, { 0x0050C2, 0x2E7000, 0x2E7FFF, "SafeView, Inc.", "SAFEVIEW" }, { 0x0050C2, 0x2E8000, 0x2E8FFF, "S.M.V. Systemelektronik GmbH", "S-M-V-SYSTEMELEKTRONIK" }, { 0x0050C2, 0x2E9000, 0x2E9FFF, "SRI International", "SRI" }, { 0x0050C2, 0x2EA000, 0x2EAFFF, "QUBIsoft S.r.l.", "QUBISOFT-S-R-L" }, { 0x0050C2, 0x2EB000, 0x2EBFFF, "Lingg & Janke OHG", "LINGG-JANKE-OHG" }, { 0x0050C2, 0x2EC000, 0x2ECFFF, "CHENGDU BOOK DIGITAL CO., LTD", "CHENGDU-BOOK-DIGITAL" }, { 0x0050C2, 0x2ED000, 0x2EDFFF, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 0x0050C2, 0x2EE000, 0x2EEFFF, "SHF Communication Technologies AG", "SHF-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0x2EF000, 0x2EFFFF, "Profline B.V.", "PROFLINE" }, { 0x0050C2, 0x2F0000, 0x2F0FFF, "LECO Corporation", "LECO" }, { 0x0050C2, 0x2F1000, 0x2F1FFF, "Geometrics, Inc.", "GEOMETRICS" }, { 0x0050C2, 0x2F2000, 0x2F2FFF, "Eurotek Srl", "EUROTEK-SRL" }, { 0x0050C2, 0x2F3000, 0x2F3FFF, "Crossbow Technology, Inc.", "CROSSBOW" }, { 0x0050C2, 0x2F4000, 0x2F4FFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x2F5000, 0x2F5FFF, "ADChips", "ADCHIPS" }, { 0x0050C2, 0x2F6000, 0x2F6FFF, "Clifford Chance LLP", "CLIFFORD-CHANCE-LLP" }, { 0x0050C2, 0x2F7000, 0x2F7FFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x0050C2, 0x2F8000, 0x2F8FFF, "SavvyCorp.com Ltd", "SAVVYCORP-COM" }, { 0x0050C2, 0x2F9000, 0x2F9FFF, "Digilent Inc.", "DIGILENT" }, { 0x0050C2, 0x2FA000, 0x2FAFFF, "Tornado Modular Systems, Ltd", "TORNADO-MODULAR" }, { 0x0050C2, 0x2FB000, 0x2FBFFF, "Arthur Industries Inc., dba On Hold Media Group", "ARTHUR-INDUSTRIES-DBA-ON-HOLD-MEDIA-GROUP" }, { 0x0050C2, 0x2FC000, 0x2FCFFF, "Blackline Systems Corporation", "BLACKLINE" }, { 0x0050C2, 0x2FD000, 0x2FDFFF, "American Microsystems LTD", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0x2FE000, 0x2FEFFF, "Saab AB", "SAAB-AB" }, { 0x0050C2, 0x2FF000, 0x2FFFFF, "Patria Advanced Solutions", "PATRIA-ADVANCED-SOLUTIONS" }, { 0x0050C2, 0x300000, 0x300FFF, "Soredex Instrumentarium Oyj", "SOREDEX-INSTRUMENTARIUM-OYJ" }, { 0x0050C2, 0x301000, 0x301FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x302000, 0x302FFF, "EuroDesign embedded technologies GmbH", "EURODESIGN-EMBEDDED-TECHNOLOGIES" }, { 0x0050C2, 0x303000, 0x303FFF, "CI Systems Ltd.", "CI" }, { 0x0050C2, 0x304000, 0x304FFF, "COMERSON S.r.l.", "COMERSON-S-R-L" }, { 0x0050C2, 0x305000, 0x305FFF, "Symbium Corporation", "SYMBIUM" }, { 0x0050C2, 0x306000, 0x306FFF, "Noran Tel Communications Ltd.", "NORAN-TEL-COMMUNICATION" }, { 0x0050C2, 0x307000, 0x307FFF, "UNIONDIGITAL.,CO.LTD", "UNIONDIGITAL" }, { 0x0050C2, 0x308000, 0x308FFF, "FiveCo", "FIVECO" }, { 0x0050C2, 0x309000, 0x309FFF, "Rackmaster Systems, Inc.", "RACKMASTER" }, { 0x0050C2, 0x30A000, 0x30AFFF, "Innings Telecom Inc.", "INNINGS-TELECOM" }, { 0x0050C2, 0x30B000, 0x30BFFF, "VX Technologies Inc.", "VX-TECHNOLOGIES" }, { 0x0050C2, 0x30C000, 0x30CFFF, "TEAMLOG", "TEAMLOG" }, { 0x0050C2, 0x30D000, 0x30DFFF, "SETARAM", "SETARAM" }, { 0x0050C2, 0x30E000, 0x30EFFF, "Obvius", "OBVIUS" }, { 0x0050C2, 0x30F000, 0x30FFFF, "Digicontrole Lda", "DIGICONTROLE-LDA" }, { 0x0050C2, 0x310000, 0x310FFF, "CYBERTRON CO., LTD.", "CYBERTRON" }, { 0x0050C2, 0x311000, 0x311FFF, "Comodo", "COMODO" }, { 0x0050C2, 0x312000, 0x312FFF, "Dese Technologies SL", "DESE-TECHNOLOGIES-SL" }, { 0x0050C2, 0x313000, 0x313FFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x314000, 0x314FFF, "MicroBee Systems, Inc", "MICROBEE" }, { 0x0050C2, 0x315000, 0x315FFF, "ifak system GmbH", "IFAK-SYSTEM" }, { 0x0050C2, 0x316000, 0x316FFF, "Dataline AB", "DATALINE-AB" }, { 0x0050C2, 0x317000, 0x317FFF, "Cosine Systems, Inc.", "COSINE" }, { 0x0050C2, 0x318000, 0x318FFF, "Milmega Ltd", "MILMEGA" }, { 0x0050C2, 0x319000, 0x319FFF, "Invatron Systems Corp.", "INVATRON" }, { 0x0050C2, 0x31A000, 0x31AFFF, "Zodiak Data Systems", "ZODIAK-DATA" }, { 0x0050C2, 0x31B000, 0x31BFFF, "Datacon", "DATACON" }, { 0x0050C2, 0x31C000, 0x31CFFF, "Casa Systems Inc.", "CASA" }, { 0x0050C2, 0x31D000, 0x31DFFF, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0050C2, 0x31E000, 0x31EFFF, "C3-ilex, LLC", "C3-ILEX-LLC" }, { 0x0050C2, 0x31F000, 0x31FFFF, "Geotech Instruments, LLC", "GEOTECH-INSTRUMENTS-LLC" }, { 0x0050C2, 0x320000, 0x320FFF, "DTASENSOR S.p.A.", "DTASENSOR-S-P-A" }, { 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, 0x324000, 0x324FFF, "ODIXION", "ODIXION" }, { 0x0050C2, 0x325000, 0x325FFF, "Federal Aviation Administration", "FEDERAL-AVIATION-ADMINISTRATION" }, { 0x0050C2, 0x326000, 0x326FFF, "Navionics S.p.A.", "NAVIONICS-S-P-A" }, { 0x0050C2, 0x327000, 0x327FFF, "Dornier GmbH", "DORNIER" }, { 0x0050C2, 0x328000, 0x328FFF, "I.C.S. Electronics Limited", "I-C-S-ELECTRONICS" }, { 0x0050C2, 0x329000, 0x329FFF, "Imax", "IMAX" }, { 0x0050C2, 0x32A000, 0x32AFFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x32B000, 0x32BFFF, "Digital Multimedia Technologies Spa", "DIGITAL-MULTIMEDIA-TECHNOLOGIES-SPA" }, { 0x0050C2, 0x32C000, 0x32CFFF, "Integrated Silicon Solution (Taiwan), Inc.", "INTEGRATED-SILICON-SOLUTION-TAIWAN" }, { 0x0050C2, 0x32D000, 0x32DFFF, "Consens Zeiterfassung GMBH", "CONSENS-ZEITERFASSUNG" }, { 0x0050C2, 0x32E000, 0x32EFFF, "MANUSA-GEST, S.L.", "MANUSA-GEST-S-L" }, { 0x0050C2, 0x32F000, 0x32FFFF, "PULTRONICS", "PULTRONICS" }, { 0x0050C2, 0x330000, 0x330FFF, "Sicon S.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x331000, 0x331FFF, "Broadcast Sports Inc", "BROADCAST-SPORTS" }, { 0x0050C2, 0x332000, 0x332FFF, "PUNJAB COMMUNICATIONS LTD", "PUNJAB-COMMUNICATION" }, { 0x0050C2, 0x333000, 0x333FFF, "Radix Corporation", "RADIX" }, { 0x0050C2, 0x334000, 0x334FFF, "Picture Elements, Inc.", "PICTURE-ELEMENTS" }, { 0x0050C2, 0x335000, 0x335FFF, "Nimcat Networks", "NIMCAT-NETWORKS" }, { 0x0050C2, 0x336000, 0x336FFF, "Golden River Traffic", "GOLDEN-RIVER-TRAFFIC" }, { 0x0050C2, 0x337000, 0x337FFF, "ETI", "ETI" }, { 0x0050C2, 0x338000, 0x338FFF, "Ernitec A/S", "ERNITEC-A/S" }, { 0x0050C2, 0x339000, 0x339FFF, "CEGELEC SUD EST", "CEGELEC-SUD-EST" }, { 0x0050C2, 0x33A000, 0x33AFFF, "United Telecoms Ltd", "UNITED-TELECOMS" }, { 0x0050C2, 0x33B000, 0x33BFFF, "MultimediaLED", "MULTIMEDIALED" }, { 0x0050C2, 0x33C000, 0x33CFFF, "SkipJam", "SKIPJAM" }, { 0x0050C2, 0x33D000, 0x33DFFF, "General Dynamics Decision Systems", "GENERAL-DYNAMICS-DECISION" }, { 0x0050C2, 0x33E000, 0x33EFFF, "CA Technology, Inc", "CA" }, { 0x0050C2, 0x33F000, 0x33FFFF, "EXYS bvba", "EXYS-BVBA" }, { 0x0050C2, 0x340000, 0x340FFF, "Virtu", "VIRTU" }, { 0x0050C2, 0x341000, 0x341FFF, "Novx Systems", "NOVX" }, { 0x0050C2, 0x342000, 0x342FFF, "St. Michael Strategies", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0x343000, 0x343FFF, "ABB Xiamen Switchgear Co. Ltd.", "ABB-XIAMEN-SWITCHGEAR" }, { 0x0050C2, 0x344000, 0x344FFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x345000, 0x345FFF, "ACT", "ACT" }, { 0x0050C2, 0x346000, 0x346FFF, "biokeysystem", "BIOKEYSYSTEM" }, { 0x0050C2, 0x347000, 0x347FFF, "Row Seven Ltd", "ROW-SEVEN" }, { 0x0050C2, 0x348000, 0x348FFF, "KoolSpan, Inc.", "KOOLSPAN" }, { 0x0050C2, 0x349000, 0x349FFF, "SSI Schaefer Peem", "SSI-SCHAEFER-PEEM" }, { 0x0050C2, 0x34A000, 0x34AFFF, "NIE Corporation", "NIE" }, { 0x0050C2, 0x34B000, 0x34BFFF, "Ecutel Systems, Inc.", "ECUTEL" }, { 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, 0x34F000, 0x34FFFF, "North Pole Engineering, Inc.", "NORTH-POLE-ENGINEERING" }, { 0x0050C2, 0x350000, 0x350FFF, "Kinesys Projects Limited", "KINESYS-PROJECTS" }, { 0x0050C2, 0x351000, 0x351FFF, "Finesystem Co., Ltd", "FINESYSTEM" }, { 0x0050C2, 0x352000, 0x352FFF, "LUCEO", "LUCEO" }, { 0x0050C2, 0x353000, 0x353FFF, "Crossing Informationssysteme GmbH", "CROSSING-INFORMATIONSSYSTEME" }, { 0x0050C2, 0x354000, 0x354FFF, "Advanced IP Communications", "ADVANCED-IP-COMMUNICATION" }, { 0x0050C2, 0x355000, 0x355FFF, "IHM", "IHM" }, { 0x0050C2, 0x356000, 0x356FFF, "Baytech Cinema", "BAYTECH-CINEMA" }, { 0x0050C2, 0x357000, 0x357FFF, "Athena Semiconductor", "ATHENA-SEMICONDUCTOR" }, { 0x0050C2, 0x358000, 0x358FFF, "ALCEA", "ALCEA" }, { 0x0050C2, 0x359000, 0x359FFF, "Kramer Electronics Ltd.", "KRAMER-ELECTRONICS" }, { 0x0050C2, 0x35A000, 0x35AFFF, "Advanced Si-Net Co., LTD.", "ADVANCED-SI-NET" }, { 0x0050C2, 0x35B000, 0x35BFFF, "VLSIP TECHNOLOGIES, INC", "VLSIP-TECHNOLOGIES" }, { 0x0050C2, 0x35C000, 0x35CFFF, "Ratotec GmbH", "RATOTEC" }, { 0x0050C2, 0x35D000, 0x35DFFF, "NetTest A/S", "NETTEST-A/S" }, { 0x0050C2, 0x35E000, 0x35EFFF, "Jobin Yvon,Inc", "JOBIN-YVON" }, { 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, 0x362000, 0x362FFF, "AZD Praha s.r.o.", "AZD-PRAHA-S-R-O" }, { 0x0050C2, 0x363000, 0x363FFF, "Septentrio nv/sa", "SEPTENTRIO-NV/" }, { 0x0050C2, 0x364000, 0x364FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x365000, 0x365FFF, "Vishay Nobel AB", "VISHAY-NOBEL-AB" }, { 0x0050C2, 0x366000, 0x366FFF, "Vanguard Technology Corp.", "VANGUARD" }, { 0x0050C2, 0x367000, 0x367FFF, "CANMAX Technology Ltd.", "CANMAX" }, { 0x0050C2, 0x368000, 0x368FFF, "ASPEL S.A.", "ASPEL" }, { 0x0050C2, 0x369000, 0x369FFF, "Always On Wireless", "ALWAYS-ON-WIRELESS" }, { 0x0050C2, 0x36A000, 0x36AFFF, "Optronic Partner pr AB", "OPTRONIC-PARTNER-PR-AB" }, { 0x0050C2, 0x36B000, 0x36BFFF, "Minerva Technology Inc", "MINERVA" }, { 0x0050C2, 0x36C000, 0x36CFFF, "RISCO Group", "RISCO-GROUP" }, { 0x0050C2, 0x36D000, 0x36DFFF, "Oplink Communications", "OPLINK-COMMUNICATION" }, { 0x0050C2, 0x36E000, 0x36EFFF, "Minicom Advanced Systems Ltd", "MINICOM-ADVANCED" }, { 0x0050C2, 0x36F000, 0x36FFFF, "XIMEA s.r.o.", "XIMEA-S-R-O" }, { 0x0050C2, 0x370000, 0x370FFF, "Europe Technologies", "EUROPE-TECHNOLOGIES" }, { 0x0050C2, 0x371000, 0x371FFF, "DIGITAL ART SYSTEM", "DIGITAL-ART-SYSTEM" }, { 0x0050C2, 0x372000, 0x372FFF, "ELV Elektronik AG", "ELV-ELEKTRONIK" }, { 0x0050C2, 0x373000, 0x373FFF, "Companion Worlds, inc.", "COMPANION-WORLDS" }, { 0x0050C2, 0x374000, 0x374FFF, "Owasys Advanced Wireless Devices", "OWASYS-ADVANCED-WIRELESS-DEVICES" }, { 0x0050C2, 0x375000, 0x375FFF, "TIR Systems Ltd.", "TIR" }, { 0x0050C2, 0x376000, 0x376FFF, "CLEODE", "CLEODE" }, { 0x0050C2, 0x377000, 0x377FFF, "Xycom VME", "XYCOM-VME" }, { 0x0050C2, 0x378000, 0x378FFF, "Daintree Networks Inc", "DAINTREE-NETWORKS" }, { 0x0050C2, 0x379000, 0x379FFF, "Control LAN S.A.", "CONTROL-LAN" }, { 0x0050C2, 0x37A000, 0x37AFFF, "IDA Corporation", "IDA" }, { 0x0050C2, 0x37B000, 0x37BFFF, "freescale semiconductor", "FREESCALE-SEMICONDUCTOR" }, { 0x0050C2, 0x37C000, 0x37CFFF, "MODIA SYSTEMS Co., Ltd", "MODIA" }, { 0x0050C2, 0x37D000, 0x37DFFF, "VeroTrak Inc.", "VEROTRAK" }, { 0x0050C2, 0x37E000, 0x37EFFF, "Ni.Co. S.r.l.", "NI-S-R-L" }, { 0x0050C2, 0x37F000, 0x37FFFF, "Foresearch", "FORESEARCH" }, { 0x0050C2, 0x380000, 0x380FFF, "EKE-Electronics Ltd.", "EKE-ELECTRONICS" }, { 0x0050C2, 0x381000, 0x381FFF, "Realtime Engineering AG", "REALTIME-ENGINEERING" }, { 0x0050C2, 0x382000, 0x382FFF, "Colorado vNet", "COLORADO-VNET" }, { 0x0050C2, 0x383000, 0x383FFF, "ICS Electronics", "ICS-ELECTRONICS" }, { 0x0050C2, 0x384000, 0x384FFF, "Wireless Reading Systems Holding ASA", "WIRELESS-READING-HOLDING-ASA" }, { 0x0050C2, 0x385000, 0x385FFF, "SUNGJIN NEOTECH Co.Ltd.", "SUNGJIN-NEOTECH" }, { 0x0050C2, 0x386000, 0x386FFF, "Precision System Science Co.,Ltd", "PRECISION-SYSTEM-SCIENCE" }, { 0x0050C2, 0x387000, 0x387FFF, "Inoteska s.r.o.", "INOTESKA-S-R-O" }, { 0x0050C2, 0x388000, 0x388FFF, "IEE Inc", "IEE" }, { 0x0050C2, 0x389000, 0x389FFF, "Exavio Inc.", "EXAVIO" }, { 0x0050C2, 0x38A000, 0x38AFFF, "Embedtronics Enterprise", "EMBEDTRONICS" }, { 0x0050C2, 0x38B000, 0x38BFFF, "InterBridge,Inc.", "INTERBRIDGE" }, { 0x0050C2, 0x38C000, 0x38CFFF, "EPSILON SRL", "EPSILON-SRL" }, { 0x0050C2, 0x38D000, 0x38DFFF, "A&G Soluzioni Digitali", "A-G-SOLUZIONI-DIGITALI" }, { 0x0050C2, 0x38E000, 0x38EFFF, "Nordic Alarm AB", "NORDIC-ALARM-AB" }, { 0x0050C2, 0x38F000, 0x38FFFF, "TTC Telecom", "TTC-TELECOM" }, { 0x0050C2, 0x390000, 0x390FFF, "TC Communications", "TC-COMMUNICATION" }, { 0x0050C2, 0x391000, 0x391FFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0x392000, 0x392FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x393000, 0x393FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 0x0050C2, 0x394000, 0x394FFF, "Embedit A/S", "EMBEDIT-A/S" }, { 0x0050C2, 0x395000, 0x395FFF, "vidisys gmbh", "VIDISYS" }, { 0x0050C2, 0x396000, 0x396FFF, "RapidWave Inc.", "RAPIDWAVE" }, { 0x0050C2, 0x397000, 0x397FFF, "MANGO DSP Ltd.", "MANGO-DSP" }, { 0x0050C2, 0x398000, 0x398FFF, "InHand Electronics, Inc.", "INHAND-ELECTRONICS" }, { 0x0050C2, 0x399000, 0x399FFF, "Advanced Micro Controls Inc.", "ADVANCED-MICRO-CONTROLS" }, { 0x0050C2, 0x39A000, 0x39AFFF, "Optical Air Data Systems", "OPTICAL-AIR-DATA" }, { 0x0050C2, 0x39B000, 0x39BFFF, "YUYAMA MFG. CO., LTD.", "YUYAMA-MFG" }, { 0x0050C2, 0x39C000, 0x39CFFF, "TIYODA MFG CO.,LTD.", "TIYODA-MFG" }, { 0x0050C2, 0x39D000, 0x39DFFF, "DigitalDeck, Inc.", "DIGITALDECK" }, { 0x0050C2, 0x39E000, 0x39EFFF, "A.R.G ElectroDesign Ltd", "A-R-G-ELECTRODESIGN" }, { 0x0050C2, 0x39F000, 0x39FFFF, "Isensix", "ISENSIX" }, { 0x0050C2, 0x3A0000, 0x3A0FFF, "StreetFire Sound Labs, LLC", "STREETFIRE-SOUND-LABS-LLC" }, { 0x0050C2, 0x3A1000, 0x3A1FFF, "Samsoft", "SAMSOFT" }, { 0x0050C2, 0x3A2000, 0x3A2FFF, "Vegas Amusement", "VEGAS-AMUSEMENT" }, { 0x0050C2, 0x3A3000, 0x3A3FFF, "Star Link Communication Pvt. Ltd.", "STAR-LINK-COMMUNICATION-PVT" }, { 0x0050C2, 0x3A4000, 0x3A4FFF, "Silvertree Engineering Ltd", "SILVERTREE-ENGINEERING" }, { 0x0050C2, 0x3A5000, 0x3A5FFF, "LabJack Corporation", "LABJACK" }, { 0x0050C2, 0x3A6000, 0x3A6FFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x0050C2, 0x3A7000, 0x3A7FFF, "Elektrotechnik & Elektronik Oltmann GmbH", "ELEKTROTECHNIK-ELEKTRONIK-OLTMANN" }, { 0x0050C2, 0x3A8000, 0x3A8FFF, "Engim, Inc.", "ENGIM" }, { 0x0050C2, 0x3A9000, 0x3A9FFF, "Westronic Systems Inc.", "WESTRONIC" }, { 0x0050C2, 0x3AA000, 0x3AAFFF, "Networked Robotics Corporation", "NETWORKED-ROBOTICS" }, { 0x0050C2, 0x3AB000, 0x3ABFFF, "taskit Rechnertechnik GmbH", "TASKIT-RECHNERTECHNIK" }, { 0x0050C2, 0x3AC000, 0x3ACFFF, "InAccess Networks", "INACCESS-NETWORKS" }, { 0x0050C2, 0x3AD000, 0x3ADFFF, "Spirent Communications (Scotland) Limited", "SPIRENT-COMMUNICATION-SCOTLAND" }, { 0x0050C2, 0x3AE000, 0x3AEFFF, "Hankuk Tapi Computer Co., Ltd", "HANKUK-TAPI" }, { 0x0050C2, 0x3AF000, 0x3AFFFF, "Norbit ODM AS", "NORBIT-ODM-AS" }, { 0x0050C2, 0x3B0000, 0x3B0FFF, "Microtarget Tecnologia Digital Ltda.", "MICROTARGET-TECNOLOGIA-DIGITAL-LTDA" }, { 0x0050C2, 0x3B1000, 0x3B1FFF, "RDC Specstroy-Svyaz Ltd", "RDC-SPECSTROY-SVYAZ" }, { 0x0050C2, 0x3B2000, 0x3B2FFF, "Tennessee Valley Authority", "TENNESSEE-VALLEY-AUTHORITY" }, { 0x0050C2, 0x3B3000, 0x3B3FFF, "Media Lab., Inc.", "MEDIA-LAB" }, { 0x0050C2, 0x3B4000, 0x3B4FFF, "Contrôle Analytique inc.", "CONTRôLE-ANALYTIQUE" }, { 0x0050C2, 0x3B5000, 0x3B5FFF, "NEC TOKIN Corporation", "NEC-TOKIN" }, { 0x0050C2, 0x3B6000, 0x3B6FFF, "Arecont Vision, LLC", "ARECONT-VISION-LLC" }, { 0x0050C2, 0x3B7000, 0x3B7FFF, "Mindspeed Technologies", "MINDSPEED-TECHNOLOGIES" }, { 0x0050C2, 0x3B8000, 0x3B8FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x3B9000, 0x3B9FFF, "Gilbarco Autotank AB", "GILBARCO-AUTOTANK-AB" }, { 0x0050C2, 0x3BA000, 0x3BAFFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x3BB000, 0x3BBFFF, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x0050C2, 0x3BC000, 0x3BCFFF, "Tyzx, Inc.", "TYZX" }, { 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, 0x3BF000, 0x3BFFFF, "Audio Processing Technology Ltd", "AUDIO-PROCESSING" }, { 0x0050C2, 0x3C0000, 0x3C0FFF, "EDA Industries Srl", "EDA-INDUSTRIES-SRL" }, { 0x0050C2, 0x3C1000, 0x3C1FFF, "MicroTek Electronics, Inc.", "MICROTEK-ELECTRONICS" }, { 0x0050C2, 0x3C2000, 0x3C2FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0x3C3000, 0x3C3FFF, "4g Technologies, L.P.", "4G-TECHNOLOGIES-L-P" }, { 0x0050C2, 0x3C4000, 0x3C4FFF, "Sypris Electronics", "SYPRIS-ELECTRONICS" }, { 0x0050C2, 0x3C5000, 0x3C5FFF, "Silicon Optix Canada Inc.", "SILICON-OPTIX-CANADA" }, { 0x0050C2, 0x3C6000, 0x3C6FFF, "Net Optics", "NET-OPTICS" }, { 0x0050C2, 0x3C7000, 0x3C7FFF, "Salent Technologies Ltd", "SALENT-TECHNOLOGIES" }, { 0x0050C2, 0x3C8000, 0x3C8FFF, "Wheels of Zeus Inc.", "WHEELS-OF-ZEUS" }, { 0x0050C2, 0x3C9000, 0x3C9FFF, "Dilax Intelcom AG", "DILAX-INTELCOM" }, { 0x0050C2, 0x3CA000, 0x3CAFFF, "ABB Inc.", "ABB" }, { 0x0050C2, 0x3CB000, 0x3CBFFF, "Analytica GmbH", "ANALYTICA" }, { 0x0050C2, 0x3CC000, 0x3CCFFF, "LINKWELL TELESYSTEMS PRIVATE LIMITED", "LINKWELL-TELESYSTEMS-PRIVATE" }, { 0x0050C2, 0x3CD000, 0x3CDFFF, "Micro-Measurements", "MICRO-MEASUREMENTS" }, { 0x0050C2, 0x3CE000, 0x3CEFFF, "Ward Leonard Electric Company", "WARD-LEONARD-ELECTRIC-COMPANY" }, { 0x0050C2, 0x3CF000, 0x3CFFFF, "Technovare Systems, Inc.", "TECHNOVARE" }, { 0x0050C2, 0x3D0000, 0x3D0FFF, "Micro-Robotics Limited", "MICRO-ROBOTICS" }, { 0x0050C2, 0x3D1000, 0x3D1FFF, "Braintronics BV", "BRAINTRONICS" }, { 0x0050C2, 0x3D2000, 0x3D2FFF, "Adilec Enginyeria SL", "ADILEC-ENGINYERIA-SL" }, { 0x0050C2, 0x3D3000, 0x3D3FFF, "American LED-gible Inc.", "AMERICAN-LED-GIBLE" }, { 0x0050C2, 0x3D4000, 0x3D4FFF, "Wisnu and Supak Co.Ltd.", "WISNU-AND-SUPAK" }, { 0x0050C2, 0x3D5000, 0x3D5FFF, "Fluke Biomedical, Radiation Management Services", "FLUKE-BIOMEDICAL-RADIATION-MANAGEMENT-SERVICES" }, { 0x0050C2, 0x3D6000, 0x3D6FFF, "Comlab Inc.", "COMLAB" }, { 0x0050C2, 0x3D7000, 0x3D7FFF, "TTC TELEKOMUNIKACE Ltd", "TTC-TELEKOMUNIKACE" }, { 0x0050C2, 0x3D8000, 0x3D8FFF, "Key Systems , Inc.", "KEY" }, { 0x0050C2, 0x3D9000, 0x3D9FFF, "Bavaria Digital Technik GmbH", "BAVARIA-DIGITAL-TECHNIK" }, { 0x0050C2, 0x3DA000, 0x3DAFFF, "M5 Data Limited", "M5-DATA" }, { 0x0050C2, 0x3DB000, 0x3DBFFF, "Osmetech Inc.", "OSMETECH" }, { 0x0050C2, 0x3DC000, 0x3DCFFF, "3D perception", "3D-PERCEPTION" }, { 0x0050C2, 0x3DD000, 0x3DDFFF, "ELMIC GmbH", "ELMIC" }, { 0x0050C2, 0x3DE000, 0x3DEFFF, "ABB Power Technologies", "ABB-POWER-TECHNOLOGIES" }, { 0x0050C2, 0x3DF000, 0x3DFFFF, "BiODE Inc.", "BIODE" }, { 0x0050C2, 0x3E0000, 0x3E0FFF, "Oy Stinghorn Ltd", "OY-STINGHORN" }, { 0x0050C2, 0x3E1000, 0x3E1FFF, "NeuLion Incorporated", "NEULION-INCORPORATED" }, { 0x0050C2, 0x3E2000, 0x3E2FFF, "SysNova", "SYSNOVA" }, { 0x0050C2, 0x3E3000, 0x3E3FFF, "CSIRO - Division of Exploration and Mining", "CSIRO---DIVISION-OF-EXPLORATION-AND-MINING" }, { 0x0050C2, 0x3E4000, 0x3E4FFF, "CUE, a.s.", "CUE-A-S" }, { 0x0050C2, 0x3E5000, 0x3E5FFF, "Vacon Plc", "VACON-PLC" }, { 0x0050C2, 0x3E6000, 0x3E6FFF, "CRDE", "CRDE" }, { 0x0050C2, 0x3E7000, 0x3E7FFF, "Revolution Education Ltd", "REVOLUTION-EDUCATION" }, { 0x0050C2, 0x3E8000, 0x3E8FFF, "Conformative Systems, Inc.", "CONFORMATIVE" }, { 0x0050C2, 0x3E9000, 0x3E9FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x3EA000, 0x3EAFFF, "Alro Information Systems SA", "ALRO-INFORMATION" }, { 0x0050C2, 0x3EB000, 0x3EBFFF, "ISS International", "ISS" }, { 0x0050C2, 0x3EC000, 0x3ECFFF, "Teneros", "TENEROS" }, { 0x0050C2, 0x3ED000, 0x3EDFFF, "The Board Room Inc.", "THE-BOARD-ROOM" }, { 0x0050C2, 0x3EE000, 0x3EEFFF, "Commoca, Inc", "COMMOCA" }, { 0x0050C2, 0x3EF000, 0x3EFFFF, "PAT Industries, DBA Pacific Advanced Technology", "PAT-INDUSTRIES-DBA-PACIFIC-ADVANCED" }, { 0x0050C2, 0x3F0000, 0x3F0FFF, "megatec electronic GmbH", "MEGATEC" }, { 0x0050C2, 0x3F1000, 0x3F1FFF, "Salland Electronics Holding BV", "SALLAND-ELECTRONICS-HOLDING" }, { 0x0050C2, 0x3F2000, 0x3F2FFF, "STL GmbH", "STL" }, { 0x0050C2, 0x3F3000, 0x3F3FFF, "Hytec Geraetebau GmbH", "HYTEC-GERAETEBAU" }, { 0x0050C2, 0x3F4000, 0x3F4FFF, "MC TECHNOLOGY GmbH", "MC" }, { 0x0050C2, 0x3F5000, 0x3F5FFF, "Phaedrus Limited", "PHAEDRUS" }, { 0x0050C2, 0x3F6000, 0x3F6FFF, "dAFTdATA Limited", "DAFTDATA" }, { 0x0050C2, 0x3F7000, 0x3F7FFF, "Advantage R&D", "ADVANTAGE-R-D" }, { 0x0050C2, 0x3F8000, 0x3F8FFF, "Superna Ltd", "SUPERNA" }, { 0x0050C2, 0x3F9000, 0x3F9FFF, "Sintium Ltd", "SINTIUM" }, { 0x0050C2, 0x3FA000, 0x3FAFFF, "Tumsan", "TUMSAN" }, { 0x0050C2, 0x3FB000, 0x3FBFFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x3FC000, 0x3FCFFF, "Weinberger Deutschland GmbH", "WEINBERGER-DEUTSCHLAND" }, { 0x0050C2, 0x3FD000, 0x3FDFFF, "HARTMANN software GbR", "HARTMANN-SOFTWARE-GBR" }, { 0x0050C2, 0x3FE000, 0x3FEFFF, "HaiVision Systems Inc", "HAIVISION" }, { 0x0050C2, 0x3FF000, 0x3FFFFF, "Cast Iron Systems", "CAST-IRON" }, { 0x0050C2, 0x400000, 0x400FFF, "SmartMotor AS", "SMARTMOTOR-AS" }, { 0x0050C2, 0x401000, 0x401FFF, "Promess Incorporated", "PROMESS-INCORPORATED" }, { 0x0050C2, 0x402000, 0x402FFF, "Numeron Sp. z o.o.", "NUMERON-SP-Z-O-O" }, { 0x0050C2, 0x403000, 0x403FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x404000, 0x404FFF, "NanShanBridge Co.Ltd", "NANSHANBRIDGE" }, { 0x0050C2, 0x405000, 0x405FFF, "Guralp Systems Limited", "GURALP" }, { 0x0050C2, 0x406000, 0x406FFF, "CoreStreet, Ltd", "CORESTREET" }, { 0x0050C2, 0x407000, 0x407FFF, "AIE Etudes", "AIE-ETUDES" }, { 0x0050C2, 0x408000, 0x408FFF, "TERN, Inc.", "TERN" }, { 0x0050C2, 0x409000, 0x409FFF, "KTEC LTD", "KTEC" }, { 0x0050C2, 0x40A000, 0x40AFFF, "Contec Steuerungstechnik & Automation GmbH", "CONTEC-STEUERUNGSTECHNIK-AUTOMATION" }, { 0x0050C2, 0x40B000, 0x40BFFF, "Center VOSPI JSC", "CENTER-VOSPI-JSC" }, { 0x0050C2, 0x40C000, 0x40CFFF, "Applied Materials UK Ltd", "APPLIED-MATERIALS-UK" }, { 0x0050C2, 0x40D000, 0x40DFFF, "Afonics Fibreoptics Ltd", "AFONICS-FIBREOPTICS" }, { 0x0050C2, 0x40E000, 0x40EFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x40F000, 0x40FFFF, "BIR,INC.", "BIR" }, { 0x0050C2, 0x410000, 0x410FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0x411000, 0x411FFF, "Multimessage Systems Ltd.", "MULTIMESSAGE" }, { 0x0050C2, 0x412000, 0x412FFF, "TSB Solutions Inc.", "TSB-SOLUTIONS" }, { 0x0050C2, 0x413000, 0x413FFF, "Goodrich", "GOODRICH" }, { 0x0050C2, 0x414000, 0x414FFF, "Talleres de Escoriaza SA", "TALLERES-DE-ESCORIAZA" }, { 0x0050C2, 0x415000, 0x415FFF, "SensoTech GmbH", "SENSOTECH" }, { 0x0050C2, 0x416000, 0x416FFF, "SELCO s.r.l.", "SELCO-S-R-L" }, { 0x0050C2, 0x417000, 0x417FFF, "QT systems ab", "QT-AB" }, { 0x0050C2, 0x418000, 0x418FFF, "Planea Oy", "PLANEA-OY" }, { 0x0050C2, 0x419000, 0x419FFF, "Mecsel Oy", "MECSEL-OY" }, { 0x0050C2, 0x41A000, 0x41AFFF, "Bluewater Systems Ltd", "BLUEWATER" }, { 0x0050C2, 0x41B000, 0x41BFFF, "LogiM GmbH Software und Entwicklung", "LOGIM-SOFTWARE-UND-ENTWICKLUNG" }, { 0x0050C2, 0x41C000, 0x41CFFF, "Infrasafe, Inc.", "INFRASAFE" }, { 0x0050C2, 0x41D000, 0x41DFFF, "Altronic, Inc.", "ALTRONIC" }, { 0x0050C2, 0x41E000, 0x41EFFF, "Videotek Sistemas Eletronicos Ltda.", "VIDEOTEK-SISTEMAS-ELETRONICOS-LTDA" }, { 0x0050C2, 0x41F000, 0x41FFFF, "Avionica, Inc", "AVIONICA" }, { 0x0050C2, 0x420000, 0x420FFF, "Boundless Technologies", "BOUNDLESS-TECHNOLOGIES" }, { 0x0050C2, 0x421000, 0x421FFF, "EFSYS", "EFSYS" }, { 0x0050C2, 0x422000, 0x422FFF, "Gekeler Martina", "GEKELER-MARTINA" }, { 0x0050C2, 0x423000, 0x423FFF, "Power-One Inc.", "POWER-ONE" }, { 0x0050C2, 0x424000, 0x424FFF, "Metrolab Technology SA", "METROLAB" }, { 0x0050C2, 0x425000, 0x425FFF, "Pinnacle Technology", "PINNACLE" }, { 0x0050C2, 0x426000, 0x426FFF, "STOM System", "STOM-SYSTEM" }, { 0x0050C2, 0x427000, 0x427FFF, "Scheidt & Bachmann GmbH", "SCHEIDT-BACHMANN" }, { 0x0050C2, 0x428000, 0x428FFF, "Roxar A/S", "ROXAR-A/S" }, { 0x0050C2, 0x429000, 0x429FFF, "Matthews Australasia", "MATTHEWS-AUSTRALASIA" }, { 0x0050C2, 0x42A000, 0x42AFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x42B000, 0x42BFFF, "VLSIP TECHNOLOGIES, INC.", "VLSIP-TECHNOLOGIES" }, { 0x0050C2, 0x42C000, 0x42CFFF, "Trapeze ITS U.S.A., LLC", "TRAPEZE-ITS-U-LLC" }, { 0x0050C2, 0x42D000, 0x42DFFF, "Argo-Tech", "ARGO-TECH" }, { 0x0050C2, 0x42E000, 0x42EFFF, "Oelmann Elektronik GmbH", "OELMANN-ELEKTRONIK" }, { 0x0050C2, 0x42F000, 0x42FFFF, "Win4NET", "WIN4NET" }, { 0x0050C2, 0x430000, 0x430FFF, "Arcom Digital", "ARCOM-DIGITAL" }, { 0x0050C2, 0x431000, 0x431FFF, "Octatron, Inc.", "OCTATRON" }, { 0x0050C2, 0x432000, 0x432FFF, "Topway Industries Ltd.", "TOPWAY-INDUSTRIES" }, { 0x0050C2, 0x433000, 0x433FFF, "Idetech Europe S.A.", "IDETECH-EUROPE" }, { 0x0050C2, 0x434000, 0x434FFF, "ImperativeNetworks", "IMPERATIVENETWORKS" }, { 0x0050C2, 0x435000, 0x435FFF, "ADATEL TELECOMUNICACIONES S.A.", "ADATEL-TELECOMUNICACIONES" }, { 0x0050C2, 0x436000, 0x436FFF, "Satellite Services BV", "SATELLITE-SERVICES" }, { 0x0050C2, 0x437000, 0x437FFF, "PowerWAN, Inc", "POWERWAN" }, { 0x0050C2, 0x438000, 0x438FFF, "Telecom Protection Technologies Limited", "TELECOM-PROTECTION-TECHNOLOGIES" }, { 0x0050C2, 0x439000, 0x439FFF, "Peleton Photonic Systems", "PELETON-PHOTONIC" }, { 0x0050C2, 0x43A000, 0x43AFFF, "ProDesign GmbH", "PRODESIGN" }, { 0x0050C2, 0x43B000, 0x43BFFF, "A3IP", "A3IP" }, { 0x0050C2, 0x43C000, 0x43CFFF, "Ducommun LaBarge Technologies, Inc", "DUCOMMUN-LABARGE-TECHNOLOGIES" }, { 0x0050C2, 0x43D000, 0x43DFFF, "Ann Arbor Sensor Systems LLC", "ANN-ARBOR-SENSOR-LLC" }, { 0x0050C2, 0x43E000, 0x43EFFF, "Coppercom", "COPPERCOM" }, { 0x0050C2, 0x43F000, 0x43FFFF, "ARVOO Imaging Products BV", "ARVOO-IMAGING-PRODUCTS" }, { 0x0050C2, 0x440000, 0x440FFF, "Advanced Modular Computers Ltd.", "ADVANCED-MODULAR-COMPUTERS" }, { 0x0050C2, 0x441000, 0x441FFF, "Sammi Information Systems Co.,Ltd", "SAMMI-INFORMATION" }, { 0x0050C2, 0x442000, 0x442FFF, "Pico Computing, Inc.", "PICO-COMPUTING" }, { 0x0050C2, 0x443000, 0x443FFF, "Pickering Laboratories", "PICKERING-LABORATORIES" }, { 0x0050C2, 0x444000, 0x444FFF, "Offshore Systems Ltd", "OFFSHORE" }, { 0x0050C2, 0x445000, 0x445FFF, "MICRONIC s.r.o.", "MICRONIC-S-R-O" }, { 0x0050C2, 0x446000, 0x446FFF, "Micro Technic A-S", "MICRO-TECHNIC-A-S" }, { 0x0050C2, 0x447000, 0x447FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x448000, 0x448FFF, "Comtech Systems Inc.", "COMTECH" }, { 0x0050C2, 0x449000, 0x449FFF, "BLEILE DATENTECHNIK GmbH", "BLEILE-DATENTECHNIK" }, { 0x0050C2, 0x44A000, 0x44AFFF, "ELETTRONICA SANTERNO SPA", "ELETTRONICA-SANTERNO-SPA" }, { 0x0050C2, 0x44B000, 0x44BFFF, "Solace Systems, Inc.", "SOLACE" }, { 0x0050C2, 0x44C000, 0x44CFFF, "Computime Systems UK Ltd.", "COMPUTIME-UK" }, { 0x0050C2, 0x44D000, 0x44DFFF, "Electro-Matic Products, Inc.", "ELECTRO-MATIC-PRODUCTS" }, { 0x0050C2, 0x44E000, 0x44EFFF, "QQ Technology,Inc", "QQ" }, { 0x0050C2, 0x44F000, 0x44FFFF, "kippdata GmbH", "KIPPDATA" }, { 0x0050C2, 0x450000, 0x450FFF, "Enconair Ecological Chambers Inc.", "ENCONAIR-ECOLOGICAL-CHAMBERS" }, { 0x0050C2, 0x451000, 0x451FFF, "HAMEG GmbH", "HAMEG" }, { 0x0050C2, 0x452000, 0x452FFF, "SCAME SISTEMI s.r.l.", "SCAME-SISTEMI-S-R-L" }, { 0x0050C2, 0x453000, 0x453FFF, "Erhardt + Leimer GmbH", "ERHARDT-+-LEIMER" }, { 0x0050C2, 0x454000, 0x454FFF, "Brivo Systems, LLC", "BRIVO-LLC" }, { 0x0050C2, 0x455000, 0x455FFF, "AirCell, Inc.", "AIRCELL" }, { 0x0050C2, 0x456000, 0x456FFF, "DRDC Valcartier", "DRDC-VALCARTIER" }, { 0x0050C2, 0x457000, 0x457FFF, "Danbridge", "DANBRIDGE" }, { 0x0050C2, 0x458000, 0x458FFF, "HRZ data GmbH", "HRZ-DATA" }, { 0x0050C2, 0x459000, 0x459FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x45A000, 0x45AFFF, "Funkwerk plettac electronic GmbH", "FUNKWERK-PLETTAC" }, { 0x0050C2, 0x45B000, 0x45BFFF, "Matra Electronique", "MATRA-ELECTRONIQUE" }, { 0x0050C2, 0x45C000, 0x45CFFF, "Deister Electronic GmbH", "DEISTER" }, { 0x0050C2, 0x45D000, 0x45DFFF, "Digital Engineering, Inc.", "DIGITAL-ENGINEERING" }, { 0x0050C2, 0x45E000, 0x45EFFF, "Halliburton - Sperry Drilling Service", "HALLIBURTON---SPERRY-DRILLING-SERVICE" }, { 0x0050C2, 0x45F000, 0x45FFFF, "T2C Marketing AB", "T2C-MARKETING-AB" }, { 0x0050C2, 0x460000, 0x460FFF, "Vitelnet", "VITELNET" }, { 0x0050C2, 0x461000, 0x461FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x462000, 0x462FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0x463000, 0x463FFF, "Codem Systems, Inc.", "CODEM" }, { 0x0050C2, 0x464000, 0x464FFF, "XYTAC system technologies", "XYTAC-SYSTEM-TECHNOLOGIES" }, { 0x0050C2, 0x465000, 0x465FFF, "PDTS GmbH", "PDTS" }, { 0x0050C2, 0x466000, 0x466FFF, "LONAP Limited", "LONAP" }, { 0x0050C2, 0x467000, 0x467FFF, "United Western Technologies", "UNITED-WESTERN-TECHNOLOGIES" }, { 0x0050C2, 0x468000, 0x468FFF, "Network I/O", "NETWORK-I/O" }, { 0x0050C2, 0x469000, 0x469FFF, "BiPOM Electronics, Inc.", "BIPOM-ELECTRONICS" }, { 0x0050C2, 0x46A000, 0x46AFFF, "ISE GmbH", "ISE" }, { 0x0050C2, 0x46B000, 0x46BFFF, "EASYTECH GmbH", "EASYTECH" }, { 0x0050C2, 0x46C000, 0x46CFFF, "CAMCO GmbH", "CAMCO" }, { 0x0050C2, 0x46D000, 0x46DFFF, "Paul Scherrer Institut (PSI)", "PAUL-SCHERRER-INSTITUT-PSI" }, { 0x0050C2, 0x46E000, 0x46EFFF, "Avenir Technologies Inc.", "AVENIR-TECHNOLOGIES" }, { 0x0050C2, 0x46F000, 0x46FFFF, "Neuroware", "NEUROWARE" }, { 0x0050C2, 0x470000, 0x470FFF, "Cybectec inc.", "CYBECTEC" }, { 0x0050C2, 0x471000, 0x471FFF, "Pixtree Technologies, inc.", "PIXTREE-TECHNOLOGIES" }, { 0x0050C2, 0x472000, 0x472FFF, "KOP Ltd", "KOP" }, { 0x0050C2, 0x473000, 0x473FFF, "Sensus Metering Systems Israel", "SENSUS-METERING-ISRAEL" }, { 0x0050C2, 0x474000, 0x474FFF, "Venue 1, Inc.", "VENUE-1" }, { 0x0050C2, 0x475000, 0x475FFF, "ISEPOS GmbH", "ISEPOS" }, { 0x0050C2, 0x476000, 0x476FFF, "Ascon S.p.a.", "ASCON-S-P-A" }, { 0x0050C2, 0x477000, 0x477FFF, "SEV Tidsystem AB", "SEV-TIDSYSTEM-AB" }, { 0x0050C2, 0x478000, 0x478FFF, "Metafix Inc.", "METAFIX" }, { 0x0050C2, 0x479000, 0x479FFF, "Unlimited Bandwidth LLC", "UNLIMITED-BANDWIDTH-LLC" }, { 0x0050C2, 0x47A000, 0x47AFFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x47B000, 0x47BFFF, "Pitney Bowes, Inc", "PITNEY-BOWES" }, { 0x0050C2, 0x47C000, 0x47CFFF, "AUCONET GmbH", "AUCONET" }, { 0x0050C2, 0x47D000, 0x47DFFF, "WIT Inc", "WIT" }, { 0x0050C2, 0x47E000, 0x47EFFF, "Energie Umwelt Systemtechnik GmbH", "ENERGIE-UMWELT-SYSTEMTECHNIK" }, { 0x0050C2, 0x47F000, 0x47FFFF, "BRIT Inc.", "BRIT" }, { 0x0050C2, 0x480000, 0x480FFF, "SELKOM GmbH", "SELKOM" }, { 0x0050C2, 0x481000, 0x481FFF, "Computer Sciences Corp", "SCIENCES" }, { 0x0050C2, 0x482000, 0x482FFF, "PRIAMUS SYSTEM TECHNOLOGIES AG", "PRIAMUS-SYSTEM-TECHNOLOGIES" }, { 0x0050C2, 0x483000, 0x483FFF, "SES", "SES" }, { 0x0050C2, 0x484000, 0x484FFF, "Kooltech LLC", "KOOLTECH-LLC" }, { 0x0050C2, 0x485000, 0x485FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x486000, 0x486FFF, "Safegate International AB", "SAFEGATE-AB" }, { 0x0050C2, 0x487000, 0x487FFF, "Eridon Corporation", "ERIDON" }, { 0x0050C2, 0x488000, 0x488FFF, "DA SISTEMI SPA", "DA-SISTEMI-SPA" }, { 0x0050C2, 0x489000, 0x489FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x0050C2, 0x48A000, 0x48AFFF, "Mobile Matrix, Inc.", "MOBILE-MATRIX" }, { 0x0050C2, 0x48B000, 0x48BFFF, "ADS-TEC GmbH", "ADS-TEC" }, { 0x0050C2, 0x48C000, 0x48CFFF, "UNITON AG", "UNITON" }, { 0x0050C2, 0x48D000, 0x48DFFF, "Metron Sp. z o.o.", "METRON-SP-Z-O-O" }, { 0x0050C2, 0x48E000, 0x48EFFF, "Teledyne Tekmar", "TELEDYNE-TEKMAR" }, { 0x0050C2, 0x48F000, 0x48FFFF, "DENGYOSHA co.,LTD.", "DENGYOSHA" }, { 0x0050C2, 0x490000, 0x490FFF, "Cloanto Corporation", "CLOANTO" }, { 0x0050C2, 0x491000, 0x491FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x492000, 0x492FFF, "TRAFSYS AS", "TRAFSYS-AS" }, { 0x0050C2, 0x493000, 0x493FFF, "Artis GmbH", "ARTIS" }, { 0x0050C2, 0x494000, 0x494FFF, "Ultimate Technology, Inc.", "ULTIMATE" }, { 0x0050C2, 0x495000, 0x495FFF, "VAZA Elektronik AB", "VAZA-ELEKTRONIK-AB" }, { 0x0050C2, 0x496000, 0x496FFF, "Acutelogic Corporation", "ACUTELOGIC" }, { 0x0050C2, 0x497000, 0x497FFF, "Advanced Driver Information Technology GmbH", "ADVANCED-DRIVER-INFORMATION" }, { 0x0050C2, 0x498000, 0x498FFF, "Quartet Technology, Inc.", "QUARTET" }, { 0x0050C2, 0x499000, 0x499FFF, "Trellia Networks", "TRELLIA-NETWORKS" }, { 0x0050C2, 0x49A000, 0x49AFFF, "TelASIC Communications, Inc.", "TELASIC-COMMUNICATION" }, { 0x0050C2, 0x49B000, 0x49BFFF, "vg controls, inc", "VG-CONTROLS" }, { 0x0050C2, 0x49C000, 0x49CFFF, "Envisacor Technologies Inc.", "ENVISACOR-TECHNOLOGIES" }, { 0x0050C2, 0x49D000, 0x49DFFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0x49E000, 0x49EFFF, "Armorlink CO .Ltd", "ARMORLINK" }, { 0x0050C2, 0x49F000, 0x49FFFF, "GCS, Inc", "GCS" }, { 0x0050C2, 0x4A0000, 0x4A0FFF, "Advanced technologies & Engineering (pty) Ltd", "ADVANCED-TECHNOLOGIES-ENGINEERING-PTY" }, { 0x0050C2, 0x4A1000, 0x4A1FFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x4A2000, 0x4A2FFF, "SPECS GmbH", "SPECS" }, { 0x0050C2, 0x4A3000, 0x4A3FFF, "Protium Technologies, Inc.", "PROTIUM-TECHNOLOGIES" }, { 0x0050C2, 0x4A4000, 0x4A4FFF, "IEEE P1609 WG", "IEEE-P1609-WG" }, { 0x0050C2, 0x4A5000, 0x4A5FFF, "Teledyne Monitor Labs", "TELEDYNE-MONITOR-LABS" }, { 0x0050C2, 0x4A6000, 0x4A6FFF, "BUYANG ELECTRONICS INDUSTRIAL CO., LTD.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x4A7000, 0x4A7FFF, "iseg Spezialelektronik GmbH", "ISEG-SPEZIALELEKTRONIK" }, { 0x0050C2, 0x4A8000, 0x4A8FFF, "CYJAYA Korea", "CYJAYA-KOREA" }, { 0x0050C2, 0x4A9000, 0x4A9FFF, "Faber Electronics BV", "FABER-ELECTRONICS" }, { 0x0050C2, 0x4AA000, 0x4AAFFF, "HEINEN ELEKTRONIK GmbH", "HEINEN-ELEKTRONIK" }, { 0x0050C2, 0x4AB000, 0x4ABFFF, "JVF Communications Ltd", "JVF-COMMUNICATION" }, { 0x0050C2, 0x4AC000, 0x4ACFFF, "Doramu Co.,Ltd.", "DORAMU" }, { 0x0050C2, 0x4AD000, 0x4ADFFF, "OpenPeak, Inc.", "OPENPEAK" }, { 0x0050C2, 0x4AE000, 0x4AEFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x4AF000, 0x4AFFFF, "Orbis Oy", "ORBIS-OY" }, { 0x0050C2, 0x4B0000, 0x4B0FFF, "Esmart Distribution Pte Ltd", "ESMART-DISTRIBUTION-PTE" }, { 0x0050C2, 0x4B1000, 0x4B1FFF, "Nsfocus Information Technology Co.,Ltd", "NSFOCUS-INFORMATION" }, { 0x0050C2, 0x4B2000, 0x4B2FFF, "TESLA, a.s.", "TESLA-A-S" }, { 0x0050C2, 0x4B3000, 0x4B3FFF, "ANSA Corporation", "ANSA" }, { 0x0050C2, 0x4B4000, 0x4B4FFF, "Matrix Audio Designs", "MATRIX-AUDIO-DESIGNS" }, { 0x0050C2, 0x4B5000, 0x4B5FFF, "Valley Tecnologia", "VALLEY-TECNOLOGIA" }, { 0x0050C2, 0x4B6000, 0x4B6FFF, "General Resources Co., LTD.", "GENERAL-RESOURCES" }, { 0x0050C2, 0x4B7000, 0x4B7FFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x4B8000, 0x4B8FFF, "Shenzhen Hongdian Technologies.,Ltd", "SHENZHEN-HONGDIAN-TECHNOLOGIES" }, { 0x0050C2, 0x4B9000, 0x4B9FFF, "Rose Technologies", "ROSE-TECHNOLOGIES" }, { 0x0050C2, 0x4BA000, 0x4BAFFF, "Mistletoe Technologies", "MISTLETOE-TECHNOLOGIES" }, { 0x0050C2, 0x4BB000, 0x4BBFFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x0050C2, 0x4BC000, 0x4BCFFF, "Saia Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x4BD000, 0x4BDFFF, "Argon ST", "ARGON-ST" }, { 0x0050C2, 0x4BE000, 0x4BEFFF, "Digital Dynamics, Inc.", "DIGITAL-DYNAMICS" }, { 0x0050C2, 0x4BF000, 0x4BFFFF, "Westinghouse Rail Systems Ltd", "WESTINGHOUSE-RAIL" }, { 0x0050C2, 0x4C0000, 0x4C0FFF, "Bio-logic Systems Corp", "BIO-LOGIC" }, { 0x0050C2, 0x4C1000, 0x4C1FFF, "Movaz Networks, Inc.", "MOVAZ-NETWORKS" }, { 0x0050C2, 0x4C2000, 0x4C2FFF, "Elbit Systems", "ELBIT" }, { 0x0050C2, 0x4C3000, 0x4C3FFF, "Quantum3D, Inc.", "QUANTUM3D" }, { 0x0050C2, 0x4C4000, 0x4C4FFF, "Black Diamond Video, Inc.", "BLACK-DIAMOND-VIDEO" }, { 0x0050C2, 0x4C5000, 0x4C5FFF, "eXray Broadband Inc.", "EXRAY-BROADBAND" }, { 0x0050C2, 0x4C6000, 0x4C6FFF, "Rubin Ltd.", "RUBIN" }, { 0x0050C2, 0x4C7000, 0x4C7FFF, "Transbit Sp.z o.o.", "TRANSBIT-SP-Z-O-O" }, { 0x0050C2, 0x4C8000, 0x4C8FFF, "Neets", "NEETS" }, { 0x0050C2, 0x4C9000, 0x4C9FFF, "Scirocco AB", "SCIROCCO-AB" }, { 0x0050C2, 0x4CA000, 0x4CAFFF, "Yarg Biometrics Limited", "YARG-BIOMETRICS" }, { 0x0050C2, 0x4CB000, 0x4CBFFF, "Verint Systems Ltd", "VERINT" }, { 0x0050C2, 0x4CC000, 0x4CCFFF, "ImpediMed Limited", "IMPEDIMED" }, { 0x0050C2, 0x4CD000, 0x4CDFFF, "Bixi Systems AG", "BIXI" }, { 0x0050C2, 0x4CE000, 0x4CEFFF, "Open Date Equipment Limited", "OPEN-DATE-EQUIPMENT" }, { 0x0050C2, 0x4CF000, 0x4CFFFF, "Ziehl-Abegg AG", "ZIEHL-ABEGG" }, { 0x0050C2, 0x4D0000, 0x4D0FFF, "RCS Energy Management Ltd", "RCS-ENERGY-MANAGEMENT" }, { 0x0050C2, 0x4D1000, 0x4D1FFF, "SLICAN sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x0050C2, 0x4D2000, 0x4D2FFF, "Twoway CATV SERVICE INC.", "TWOWAY-CATV-SERVICE" }, { 0x0050C2, 0x4D3000, 0x4D3FFF, "ELPROC sp. z o.o.", "ELPROC-SP-Z-O-O" }, { 0x0050C2, 0x4D4000, 0x4D4FFF, "Herholdt Controls srl", "HERHOLDT-CONTROLS-SRL" }, { 0x0050C2, 0x4D5000, 0x4D5FFF, "SEBA Design Pty Ltd", "SEBA-DESIGN-PTY" }, { 0x0050C2, 0x4D6000, 0x4D6FFF, "Ingenieurbüro Schober", "INGENIEURBüRO-SCHOBER" }, { 0x0050C2, 0x4D7000, 0x4D7FFF, "Delta Tau Data Systems, Inc.", "DELTA-TAU-DATA" }, { 0x0050C2, 0x4D8000, 0x4D8FFF, "Avantry Ltd.", "AVANTRY" }, { 0x0050C2, 0x4D9000, 0x4D9FFF, "GE Security Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x4DA000, 0x4DAFFF, "MEDIORNET GmbH", "MEDIORNET" }, { 0x0050C2, 0x4DB000, 0x4DBFFF, "Alfing Montagetechnik GmbH", "ALFING-MONTAGETECHNIK" }, { 0x0050C2, 0x4DC000, 0x4DCFFF, "Ace Electronics Inc.", "ACE-ELECTRONICS" }, { 0x0050C2, 0x4DD000, 0x4DDFFF, "Truteq Wireless (PTY) Ltd.", "TRUTEQ-WIRELESS-PTY" }, { 0x0050C2, 0x4DE000, 0x4DEFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0x4DF000, 0x4DFFFF, "Thermo Electron", "THERMO-ELECTRON" }, { 0x0050C2, 0x4E0000, 0x4E0FFF, "Telematrix", "TELEMATRIX" }, { 0x0050C2, 0x4E1000, 0x4E1FFF, "SS Telecoms CC", "SS-TELECOMS-CC" }, { 0x0050C2, 0x4E2000, 0x4E2FFF, "Applied Research Laboratories: UT", "APPLIED-RESEARCH-LABORATORIES:-UT" }, { 0x0050C2, 0x4E3000, 0x4E3FFF, "Romteck Pty Ltd", "ROMTECK-PTY" }, { 0x0050C2, 0x4E4000, 0x4E4FFF, "Embigence GmbH", "EMBIGENCE" }, { 0x0050C2, 0x4E5000, 0x4E5FFF, "Sedo Systems Ltd", "SEDO" }, { 0x0050C2, 0x4E6000, 0x4E6FFF, "Photonic Bridges Inc.", "PHOTONIC-BRIDGES" }, { 0x0050C2, 0x4E7000, 0x4E7FFF, "Computerized Elevator Contol", "COMPUTERIZED-ELEVATOR-CONTOL" }, { 0x0050C2, 0x4E8000, 0x4E8FFF, "SATEL sp. z o.o.", "SATEL-SP-Z-O-O" }, { 0x0050C2, 0x4E9000, 0x4E9FFF, "Seachange international", "SEACHANGE" }, { 0x0050C2, 0x4EA000, 0x4EAFFF, "PMC", "PMC" }, { 0x0050C2, 0x4EB000, 0x4EBFFF, "Mandozzi Elettronica SA", "MANDOZZI-ELETTRONICA" }, { 0x0050C2, 0x4EC000, 0x4ECFFF, "Thales Defence and Security Systems GmbH", "THALES-DEFENCE-AND-SECURITY" }, { 0x0050C2, 0x4ED000, 0x4EDFFF, "Lab X Technologies, LLC", "LAB-X-TECHNOLOGIES-LLC" }, { 0x0050C2, 0x4EE000, 0x4EEFFF, "Beijing Corelogic Communication Co., Ltd.", "BEIJING-CORELOGIC-COMMUNICATION" }, { 0x0050C2, 0x4EF000, 0x4EFFFF, "Creative Retail Entertainment", "CREATIVE-RETAIL-ENTERTAINMENT" }, { 0x0050C2, 0x4F0000, 0x4F0FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x4F1000, 0x4F1FFF, "Packet Island Inc.", "PACKET-ISLAND" }, { 0x0050C2, 0x4F2000, 0x4F2FFF, "Tantronic AG", "TANTRONIC" }, { 0x0050C2, 0x4F3000, 0x4F3FFF, "Autronica Fire & Security", "AUTRONICA-FIRE-SECURITY" }, { 0x0050C2, 0x4F4000, 0x4F4FFF, "O2RUN", "O2RUN" }, { 0x0050C2, 0x4F5000, 0x4F5FFF, "Monroe Electronics, Inc.", "MONROE-ELECTRONICS" }, { 0x0050C2, 0x4F6000, 0x4F6FFF, "REAL D", "REAL-D" }, { 0x0050C2, 0x4F7000, 0x4F7FFF, "WaveIP Ltd.", "WAVEIP" }, { 0x0050C2, 0x4F8000, 0x4F8FFF, "Prodco International Inc.", "PRODCO" }, { 0x0050C2, 0x4F9000, 0x4F9FFF, "RTDS Technologies Inc.", "RTDS-TECHNOLOGIES" }, { 0x0050C2, 0x4FA000, 0x4FAFFF, "Cambridge Technology, Inc.", "CAMBRIDGE" }, { 0x0050C2, 0x4FB000, 0x4FBFFF, "BES Technology Group", "BES-GROUP" }, { 0x0050C2, 0x4FC000, 0x4FCFFF, "Hwayoung RF Solution Inc", "HWAYOUNG-RF-SOLUTION" }, { 0x0050C2, 0x4FD000, 0x4FDFFF, "Network Automation mxc AB", "NETWORK-AUTOMATION-MXC-AB" }, { 0x0050C2, 0x4FE000, 0x4FEFFF, "GEM ELETTRONICA Srl", "GEM-ELETTRONICA-SRL" }, { 0x0050C2, 0x4FF000, 0x4FFFFF, "Dakty GmbH", "DAKTY" }, { 0x0050C2, 0x500000, 0x500FFF, "Orenco Systems, Inc.", "ORENCO" }, { 0x0050C2, 0x501000, 0x501FFF, "IBEX UK Limited", "IBEX-UK" }, { 0x0050C2, 0x502000, 0x502FFF, "Criterion Systems Limited", "CRITERION" }, { 0x0050C2, 0x503000, 0x503FFF, "RESPIRONICS INC.", "RESPIRONICS" }, { 0x0050C2, 0x504000, 0x504FFF, "Aphex Systems Ltd.", "APHEX" }, { 0x0050C2, 0x505000, 0x505FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x506000, 0x506FFF, "7+ Kft", "7+-KFT" }, { 0x0050C2, 0x507000, 0x507FFF, "Micro Connect Pty Ltd", "MICRO-CONNECT-PTY" }, { 0x0050C2, 0x508000, 0x508FFF, "PUTERCOM ENTERPRISE CO., LTD.", "PUTERCOM" }, { 0x0050C2, 0x509000, 0x509FFF, "Hillcrest Laboratories, Inc.", "HILLCREST-LABORATORIES" }, { 0x0050C2, 0x50A000, 0x50AFFF, "Monitor Business Machines Ltd", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x50B000, 0x50BFFF, "Logic Beach Inc", "LOGIC-BEACH" }, { 0x0050C2, 0x50C000, 0x50CFFF, "AIRWISE TECHNOLOGY CO., LTD.", "AIRWISE" }, { 0x0050C2, 0x50D000, 0x50DFFF, "Clearsonics Pty. Ltd.", "CLEARSONICS-PTY" }, { 0x0050C2, 0x50E000, 0x50EFFF, "Fibresavers Corporation", "FIBRESAVERS" }, { 0x0050C2, 0x50F000, 0x50FFFF, "Polystar Instruments AB", "POLYSTAR-INSTRUMENTS-AB" }, { 0x0050C2, 0x510000, 0x510FFF, "Summit Developmen", "SUMMIT-DEVELOPMEN" }, { 0x0050C2, 0x511000, 0x511FFF, "Tecna Srl", "TECNA-SRL" }, { 0x0050C2, 0x512000, 0x512FFF, "Linear Acoustic, Inc", "LINEAR-ACOUSTIC" }, { 0x0050C2, 0x513000, 0x513FFF, "Genie Network Resource Management Inc.", "GENIE-NETWORK-RESOURCE-MANAGEMENT" }, { 0x0050C2, 0x514000, 0x514FFF, "Tadian Electronics Systems LTD", "TADIAN-ELECTRONICS" }, { 0x0050C2, 0x515000, 0x515FFF, "Monaghan Engineering, Inc.", "MONAGHAN-ENGINEERING" }, { 0x0050C2, 0x516000, 0x516FFF, "SOWA ELECTRIC CO., LTD.", "SOWA-ELECTRIC" }, { 0x0050C2, 0x517000, 0x517FFF, "Solid State Logic", "SOLID-STATE-LOGIC" }, { 0x0050C2, 0x518000, 0x518FFF, "Christ Elektronik GmbH", "CHRIST-ELEKTRONIK" }, { 0x0050C2, 0x519000, 0x519FFF, "DBMCORP, Inc.", "DBMCORP" }, { 0x0050C2, 0x51A000, 0x51AFFF, "SpeasTech, Inc.", "SPEASTECH" }, { 0x0050C2, 0x51B000, 0x51BFFF, "Beta Lasermike Ltd", "BETA-LASERMIKE" }, { 0x0050C2, 0x51C000, 0x51CFFF, "TOA Systems", "TOA" }, { 0x0050C2, 0x51D000, 0x51DFFF, "VELUX", "VELUX" }, { 0x0050C2, 0x51E000, 0x51EFFF, "Alcon Technologies", "ALCON-TECHNOLOGIES" }, { 0x0050C2, 0x51F000, 0x51FFFF, "Traquair Data Systems, Inc.", "TRAQUAIR-DATA" }, { 0x0050C2, 0x520000, 0x520FFF, "McCain Traffic Supply", "MCCAIN-TRAFFIC-SUPPLY" }, { 0x0050C2, 0x521000, 0x521FFF, "ARIS TECHNOLOGIES", "ARIS-TECHNOLOGIES" }, { 0x0050C2, 0x522000, 0x522FFF, "Mark IV IDS Corp.", "MARK-IV-IDS" }, { 0x0050C2, 0x523000, 0x523FFF, "AMRDEC Prototype Integration Facility", "AMRDEC-PROTOTYPE-INTEGRATION-FACILITY" }, { 0x0050C2, 0x524000, 0x524FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x0050C2, 0x525000, 0x525FFF, "VASTech", "VASTECH" }, { 0x0050C2, 0x526000, 0x526FFF, "AC SYSTEMS, s.r.o.", "AC-S-R-O" }, { 0x0050C2, 0x527000, 0x527FFF, "IRTrans", "IRTRANS" }, { 0x0050C2, 0x528000, 0x528FFF, "tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x529000, 0x529FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x52A000, 0x52AFFF, "OMNITRONICS PTY LTD", "OMNITRONICS-PTY" }, { 0x0050C2, 0x52B000, 0x52BFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x52C000, 0x52CFFF, "VITEC MULTIMEDIA", "VITEC-MULTIMEDIA" }, { 0x0050C2, 0x52D000, 0x52DFFF, "Smartcom-Bulgaria AD", "SMARTCOM-BULGARIA-AD" }, { 0x0050C2, 0x52E000, 0x52EFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x52F000, 0x52FFFF, "Gesellschaft für Rationalisierung und Rechentechnik mbH", "GESELLSCHAFT-FüR-RATIONALISIERUNG-UND-RECHENTECHNIK-MBH" }, { 0x0050C2, 0x530000, 0x530FFF, "Innovation, Institute, Inc", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x531000, 0x531FFF, "Orion Technologies, Incorporated", "ORION-TECHNOLOGIES-INCORPORATED" }, { 0x0050C2, 0x532000, 0x532FFF, "NVE Corporation", "NVE" }, { 0x0050C2, 0x533000, 0x533FFF, "NanShanBridge Co.Ltd", "NANSHANBRIDGE" }, { 0x0050C2, 0x534000, 0x534FFF, "Hyundai J. Comm", "HYUNDAI-J-COMM" }, { 0x0050C2, 0x535000, 0x535FFF, "MMS Servis s.r.o.", "MMS-SERVIS-S-R-O" }, { 0x0050C2, 0x536000, 0x536FFF, "C2 DIAGNOSTICS", "C2-DIAGNOSTICS" }, { 0x0050C2, 0x537000, 0x537FFF, "DST CONTROL AB", "DST-CONTROL-AB" }, { 0x0050C2, 0x538000, 0x538FFF, "EtherTek Circuits", "ETHERTEK-CIRCUITS" }, { 0x0050C2, 0x539000, 0x539FFF, "Detection Technology Inc.", "DETECTION" }, { 0x0050C2, 0x53A000, 0x53AFFF, "Image Control Design Limited", "IMAGE-CONTROL-DESIGN" }, { 0x0050C2, 0x53B000, 0x53BFFF, "Teleks Co. Ltd.", "TELEKS" }, { 0x0050C2, 0x53C000, 0x53CFFF, "Marposs SPA", "MARPOSS-SPA" }, { 0x0050C2, 0x53D000, 0x53DFFF, "Digital communications Technologies", "DIGITAL-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0x53E000, 0x53EFFF, "Honeywell GNO", "HONEYWELL-GNO" }, { 0x0050C2, 0x53F000, 0x53FFFF, "Ellips B.V.", "ELLIPS" }, { 0x0050C2, 0x540000, 0x540FFF, "Mesure Controle Commande", "MESURE-CONTROLE-COMMANDE" }, { 0x0050C2, 0x541000, 0x541FFF, "WAVES SYSTEM", "WAVES-SYSTEM" }, { 0x0050C2, 0x542000, 0x542FFF, "AVerMedia Technologies, Inc.", "AVERMEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x543000, 0x543FFF, "DIGI SESN AG", "DIGI-SESN" }, { 0x0050C2, 0x544000, 0x544FFF, "Zetera", "ZETERA" }, { 0x0050C2, 0x545000, 0x545FFF, "SecuInfo Co., Ltd.", "SECUINFO" }, { 0x0050C2, 0x546000, 0x546FFF, "Universidad de Chile Facultad de Medicina", "UNIVERSIDAD-DE-CHILE-FACULTAD-DE-MEDICINA" }, { 0x0050C2, 0x547000, 0x547FFF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0x0050C2, 0x548000, 0x548FFF, "I.T.W. Betaprint", "I-T-W-BETAPRINT" }, { 0x0050C2, 0x549000, 0x549FFF, "Netsynt S.p.A.", "NETSYNT-S-P-A" }, { 0x0050C2, 0x54A000, 0x54AFFF, "IPTC Tech. Comm. AB", "IPTC-TECH-COMM-AB" }, { 0x0050C2, 0x54B000, 0x54BFFF, "Innopsys", "INNOPSYS" }, { 0x0050C2, 0x54C000, 0x54CFFF, "Sintecnos srl", "SINTECNOS-SRL" }, { 0x0050C2, 0x54D000, 0x54DFFF, "Silent System", "SILENT-SYSTEM" }, { 0x0050C2, 0x54E000, 0x54EFFF, "Convergent Design", "CONVERGENT-DESIGN" }, { 0x0050C2, 0x54F000, 0x54FFFF, "Valtronic SA", "VALTRONIC" }, { 0x0050C2, 0x550000, 0x550FFF, "LJU Automatisierungstechnik GmbH", "LJU-AUTOMATISIERUNGSTECHNIK" }, { 0x0050C2, 0x551000, 0x551FFF, "Innovative Neurotroncs", "INNOVATIVE-NEUROTRONCS" }, { 0x0050C2, 0x552000, 0x552FFF, "Elfiq Inc.", "ELFIQ" }, { 0x0050C2, 0x553000, 0x553FFF, "ATH system", "ATH-SYSTEM" }, { 0x0050C2, 0x554000, 0x554FFF, "Weinzierl Engineering GmbH", "WEINZIERL-ENGINEERING" }, { 0x0050C2, 0x555000, 0x555FFF, "Control Alternative Solutions, Inc.", "CONTROL-ALTERNATIVE-SOLUTIONS" }, { 0x0050C2, 0x556000, 0x556FFF, "Freiburger BlickZentrum", "FREIBURGER-BLICKZENTRUM" }, { 0x0050C2, 0x557000, 0x557FFF, "Netcomsec Co Ltd", "NETCOMSEC" }, { 0x0050C2, 0x558000, 0x558FFF, "Bedo Elektronik GmbH", "BEDO-ELEKTRONIK" }, { 0x0050C2, 0x559000, 0x559FFF, "Fail Safe Solutions LLC", "FAIL-SAFE-SOLUTIONS-LLC" }, { 0x0050C2, 0x55A000, 0x55AFFF, "Valde Systems, Inc.", "VALDE" }, { 0x0050C2, 0x55B000, 0x55BFFF, "MATRIX TELECOM PVT. LTD.", "MATRIX-TELECOM-PVT" }, { 0x0050C2, 0x55C000, 0x55CFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x55D000, 0x55DFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x55E000, 0x55EFFF, "HANZAS ELEKTRONIKA, SIA", "HANZAS-ELEKTRONIKA-SIA" }, { 0x0050C2, 0x55F000, 0x55FFFF, "Moog Broad Reach", "MOOG-BROAD-REACH" }, { 0x0050C2, 0x560000, 0x560FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x561000, 0x561FFF, "Seitec Elektronik GmbH", "SEITEC-ELEKTRONIK" }, { 0x0050C2, 0x562000, 0x562FFF, "C21 Technology Limited", "C21" }, { 0x0050C2, 0x563000, 0x563FFF, "ORTRAT, S.L.", "ORTRAT-S-L" }, { 0x0050C2, 0x564000, 0x564FFF, "Last Mile Gear", "LAST-MILE-GEAR" }, { 0x0050C2, 0x565000, 0x565FFF, "WORKPOWER TECNOLOGIA ELETRONICA LTDA-EPP", "WORKPOWER-TECNOLOGIA-ELETRONICA-LTDA-EPP" }, { 0x0050C2, 0x566000, 0x566FFF, "ubinetsys.co..ltd", "UBINETSYS" }, { 0x0050C2, 0x567000, 0x567FFF, "Tess GmbH", "TESS" }, { 0x0050C2, 0x568000, 0x568FFF, "GeoFocus, LLC", "GEOFOCUS-LLC" }, { 0x0050C2, 0x569000, 0x569FFF, "Twinwin Technplogy Co.,Ltd.", "TWINWIN-TECHNPLOGY" }, { 0x0050C2, 0x56A000, 0x56AFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x56B000, 0x56BFFF, "Dataton Utvecklings AB", "DATATON-UTVECKLINGS-AB" }, { 0x0050C2, 0x56C000, 0x56CFFF, "Targeted Technologies, LLC", "TARGETED-TECHNOLOGIES-LLC" }, { 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, 0x56F000, 0x56FFFF, "GMA, LLC", "GMA-LLC" }, { 0x0050C2, 0x570000, 0x570FFF, "Ellex Medical Pty Ltd", "ELLEX-MEDICAL-PTY" }, { 0x0050C2, 0x571000, 0x571FFF, "Oberon Service srl", "OBERON-SERVICE-SRL" }, { 0x0050C2, 0x572000, 0x572FFF, "Chell Instruments Ltd", "CHELL-INSTRUMENTS" }, { 0x0050C2, 0x573000, 0x573FFF, "DATAMICRO Co., Ltd.", "DATAMICRO" }, { 0x0050C2, 0x574000, 0x574FFF, "Ingeniería Almudí S.L.", "INGENIERíA-ALMUDí-S-L" }, { 0x0050C2, 0x575000, 0x575FFF, "SOLYSTIC", "SOLYSTIC" }, { 0x0050C2, 0x576000, 0x576FFF, "Visi-tech Systems Ltd", "VISI-TECH" }, { 0x0050C2, 0x577000, 0x577FFF, "Advanced Software Technologies", "ADVANCED-SOFTWARE-TECHNOLOGIES" }, { 0x0050C2, 0x578000, 0x578FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x579000, 0x579FFF, "Gastager Systemtechnik GmbH", "GASTAGER-SYSTEMTECHNIK" }, { 0x0050C2, 0x57A000, 0x57AFFF, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x0050C2, 0x57B000, 0x57BFFF, "ptswitch", "PTSWITCH" }, { 0x0050C2, 0x57C000, 0x57CFFF, "CYBERSYS", "CYBERSYS" }, { 0x0050C2, 0x57D000, 0x57DFFF, "Sierra Video Systems", "SIERRA-VIDEO" }, { 0x0050C2, 0x57E000, 0x57EFFF, "Digital Way", "DIGITAL-WAY" }, { 0x0050C2, 0x57F000, 0x57FFFF, "Orderite, Inc.", "ORDERITE" }, { 0x0050C2, 0x580000, 0x580FFF, "Buyang Electronics Industrial co.,Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x581000, 0x581FFF, "Devitech ApS", "DEVITECH-APS" }, { 0x0050C2, 0x582000, 0x582FFF, "AllSun A/S", "ALLSUN-A/S" }, { 0x0050C2, 0x583000, 0x583FFF, "Jünger Audio-Studiotechnik GmbH", "JüNGER-AUDIO-STUDIOTECHNIK" }, { 0x0050C2, 0x584000, 0x584FFF, "Toyota Motorsport GmbH", "TOYOTA-MOTORSPORT" }, { 0x0050C2, 0x585000, 0x585FFF, "Wireless Cables Inc", "WIRELESS-CABLES" }, { 0x0050C2, 0x586000, 0x586FFF, "Genetix Ltd", "GENETIX" }, { 0x0050C2, 0x587000, 0x587FFF, "Dynalco", "DYNALCO" }, { 0x0050C2, 0x588000, 0x588FFF, "Federal Electronics", "FEDERAL-ELECTRONICS" }, { 0x0050C2, 0x589000, 0x589FFF, "HORIBA MEDICAL", "HORIBA-MEDICAL" }, { 0x0050C2, 0x58A000, 0x58AFFF, "Dixell S.p.a.", "DIXELL-S-P-A" }, { 0x0050C2, 0x58B000, 0x58BFFF, "Innovative Dynamics GmbH", "INNOVATIVE-DYNAMICS" }, { 0x0050C2, 0x58C000, 0x58CFFF, "Lattice Semiconductor Corp. (LPA)", "LATTICE-SEMICONDUCTOR-LPA" }, { 0x0050C2, 0x58D000, 0x58DFFF, "ZAO", "ZAO" }, { 0x0050C2, 0x58E000, 0x58EFFF, "Penny & Giles Aerospace Ltd", "PENNY-GILES-AEROSPACE" }, { 0x0050C2, 0x58F000, 0x58FFFF, "XoIP Systems Pty Ltd", "XOIP-PTY" }, { 0x0050C2, 0x590000, 0x590FFF, "EM Motorsport Ltd", "EM-MOTORSPORT" }, { 0x0050C2, 0x591000, 0x591FFF, "Grosvenor Technology Ltd", "GROSVENOR" }, { 0x0050C2, 0x592000, 0x592FFF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0050C2, 0x593000, 0x593FFF, "Broadlight", "BROADLIGHT" }, { 0x0050C2, 0x594000, 0x594FFF, "Pixel Velocity, Inc.", "PIXEL-VELOCITY" }, { 0x0050C2, 0x595000, 0x595FFF, "Callpod, Inc.", "CALLPOD" }, { 0x0050C2, 0x596000, 0x596FFF, "SPANSION", "SPANSION" }, { 0x0050C2, 0x597000, 0x597FFF, "Nautel Limited", "NAUTEL" }, { 0x0050C2, 0x598000, 0x598FFF, "Bundesamt für Strahlenschutz", "BUNDESAMT-FüR-STRAHLENSCHUTZ" }, { 0x0050C2, 0x599000, 0x599FFF, "Fen Technology Limited", "FEN" }, { 0x0050C2, 0x59A000, 0x59AFFF, "MultiTrode Pty Ltd", "MULTITRODE-PTY" }, { 0x0050C2, 0x59B000, 0x59BFFF, "SAPEC", "SAPEC" }, { 0x0050C2, 0x59C000, 0x59CFFF, "DELSAT GROUP S.A.", "DELSAT-GROUP" }, { 0x0050C2, 0x59D000, 0x59DFFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x59E000, 0x59EFFF, "Legerity", "LEGERITY" }, { 0x0050C2, 0x59F000, 0x59FFFF, "ads-tec GmbH", "ADS-TEC" }, { 0x0050C2, 0x5A0000, 0x5A0FFF, "Rudolph Technologies, Inc.", "RUDOLPH-TECHNOLOGIES" }, { 0x0050C2, 0x5A1000, 0x5A1FFF, "Vestfold Butikkdata AS", "VESTFOLD-BUTIKKDATA-AS" }, { 0x0050C2, 0x5A2000, 0x5A2FFF, "iNET Systems Inc.", "INET" }, { 0x0050C2, 0x5A3000, 0x5A3FFF, "LUMEL S.A.", "LUMEL" }, { 0x0050C2, 0x5A4000, 0x5A4FFF, "Federal State Unitary Enterprise Experimental Factory for Sc", "FEDERAL-STATE-UNITARY-EXPERIMENTAL-FACTORY-FOR-SC" }, { 0x0050C2, 0x5A5000, 0x5A5FFF, "Equipos de Telecomunicación Optoelectronicos, S.A.", "EQUIPOS-DE-TELECOMUNICACIóN-OPTOELECTRONICOS" }, { 0x0050C2, 0x5A6000, 0x5A6FFF, "Plastic Logic", "PLASTIC-LOGIC" }, { 0x0050C2, 0x5A7000, 0x5A7FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x5A8000, 0x5A8FFF, "ETAP NV", "ETAP-NV" }, { 0x0050C2, 0x5A9000, 0x5A9FFF, "AYC Telecom Ltd", "AYC-TELECOM" }, { 0x0050C2, 0x5AA000, 0x5AAFFF, "Transenna AB", "TRANSENNA-AB" }, { 0x0050C2, 0x5AB000, 0x5ABFFF, "Eaton Corporation Electrical Group Data Center Solutions - Pulizzi", "EATON-ELECTRICAL-GROUP-DATA-CENTER-SOLUTIONS---PULIZZI" }, { 0x0050C2, 0x5AC000, 0x5ACFFF, "Kinemetrics, Inc.", "KINEMETRICS" }, { 0x0050C2, 0x5AD000, 0x5ADFFF, "Emcom Systems", "EMCOM" }, { 0x0050C2, 0x5AE000, 0x5AEFFF, "CPS EUROPE B.V.", "CPS-EUROPE" }, { 0x0050C2, 0x5AF000, 0x5AFFFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x5B0000, 0x5B0FFF, "INCOTEC GmbH", "INCOTEC" }, { 0x0050C2, 0x5B1000, 0x5B1FFF, "Rosta Ltd", "ROSTA" }, { 0x0050C2, 0x5B2000, 0x5B2FFF, "Syntronic AB", "SYNTRONIC-AB" }, { 0x0050C2, 0x5B3000, 0x5B3FFF, "HITECOM System", "HITECOM-SYSTEM" }, { 0x0050C2, 0x5B4000, 0x5B4FFF, "Terrascience Systems Ltd.", "TERRASCIENCE" }, { 0x0050C2, 0x5B5000, 0x5B5FFF, "RAFAEL", "RAFAEL" }, { 0x0050C2, 0x5B6000, 0x5B6FFF, "Kontron (Beijing) Technology Co.,Ltd.", "KONTRON-BEIJING" }, { 0x0050C2, 0x5B7000, 0x5B7FFF, "AVerMedia Technologies, Inc.", "AVERMEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x5B8000, 0x5B8FFF, "WestfaliaSurge GmbH", "WESTFALIASURGE" }, { 0x0050C2, 0x5B9000, 0x5B9FFF, "Taiwan Video & Monitor", "TAIWAN-VIDEO-MONITOR" }, { 0x0050C2, 0x5BA000, 0x5BAFFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x5BB000, 0x5BBFFF, "UNIC TECHNOLOGIES INC", "UNIC-TECHNOLOGIES" }, { 0x0050C2, 0x5BC000, 0x5BCFFF, "Guangzhou Hui Si Information Technologies Inc.", "GUANGZHOU-HUI-SI-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x5BD000, 0x5BDFFF, "Nomus Comm-Systems", "NOMUS-COMM" }, { 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, 0x5C0000, 0x5C0FFF, "Pyott-Boone Electronics", "PYOTT-BOONE-ELECTRONICS" }, { 0x0050C2, 0x5C1000, 0x5C1FFF, "R. L. Drake Company", "R-L-DRAKE-COMPANY" }, { 0x0050C2, 0x5C2000, 0x5C2FFF, "Intuitive Surgical", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0x5C3000, 0x5C3FFF, "KS System GmbH", "KS-SYSTEM" }, { 0x0050C2, 0x5C4000, 0x5C4FFF, "ProMik GmbH", "PROMIK" }, { 0x0050C2, 0x5C5000, 0x5C5FFF, "Radiant Imaging, Inc.", "RADIANT-IMAGING" }, { 0x0050C2, 0x5C6000, 0x5C6FFF, "Technische Alternative GmbH", "TECHNISCHE-ALTERNATIVE" }, { 0x0050C2, 0x5C7000, 0x5C7FFF, "InSync Technology Ltd", "INSYNC" }, { 0x0050C2, 0x5C8000, 0x5C8FFF, "Georgia Tech Research Institute", "GEORGIA-TECH-RESEARCH-INSTITUTE" }, { 0x0050C2, 0x5C9000, 0x5C9FFF, "Shenzhen Quanlong Technique Co.Ltd", "SHENZHEN-QUANLONG-TECHNIQUE" }, { 0x0050C2, 0x5CA000, 0x5CAFFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x5CB000, 0x5CBFFF, "Kobold Sistemi s.r.l.", "KOBOLD-SISTEMI-S-R-L" }, { 0x0050C2, 0x5CC000, 0x5CCFFF, "ENSEO", "ENSEO" }, { 0x0050C2, 0x5CD000, 0x5CDFFF, "RADA Electronics Industries Ltd.", "RADA-ELECTRONICS-INDUSTRIES" }, { 0x0050C2, 0x5CE000, 0x5CEFFF, "Roke Manor Research Ltd", "ROKE-MANOR-RESEARCH" }, { 0x0050C2, 0x5CF000, 0x5CFFFF, "Innomed Medical Inc", "INNOMED-MEDICAL" }, { 0x0050C2, 0x5D0000, 0x5D0FFF, "Automata Spa", "AUTOMATA-SPA" }, { 0x0050C2, 0x5D1000, 0x5D1FFF, "Meucci Solutions", "MEUCCI-SOLUTIONS" }, { 0x0050C2, 0x5D2000, 0x5D2FFF, "DA-Design Oy", "DA-DESIGN-OY" }, { 0x0050C2, 0x5D3000, 0x5D3FFF, "Wexiodisk AB", "WEXIODISK-AB" }, { 0x0050C2, 0x5D4000, 0x5D4FFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x5D5000, 0x5D5FFF, "Cannon Technologies", "CANNON-TECHNOLOGIES" }, { 0x0050C2, 0x5D6000, 0x5D6FFF, "BioAccess Tecnologia em Biometria Ltda.", "BIOACCESS-TECNOLOGIA-EM-BIOMETRIA-LTDA" }, { 0x0050C2, 0x5D7000, 0x5D7FFF, "Synrad, Inc.", "SYNRAD" }, { 0x0050C2, 0x5D8000, 0x5D8FFF, "TECHNIFOR SAS", "TECHNIFOR-SAS" }, { 0x0050C2, 0x5D9000, 0x5D9FFF, "Crimson Microsystems, Inc.", "CRIMSON-MICROSYSTEMS" }, { 0x0050C2, 0x5DA000, 0x5DAFFF, "TONNA ELECTRONIQUE", "TONNA-ELECTRONIQUE" }, { 0x0050C2, 0x5DB000, 0x5DBFFF, "CEGELEC SUD EST", "CEGELEC-SUD-EST" }, { 0x0050C2, 0x5DC000, 0x5DCFFF, "RM Michaelides Software & Elektronik GmbH", "RM-MICHAELIDES-SOFTWARE-ELEKTRONIK" }, { 0x0050C2, 0x5DD000, 0x5DDFFF, "SomerData ltd", "SOMERDATA" }, { 0x0050C2, 0x5DE000, 0x5DEFFF, "Magal Senstar Inc.", "MAGAL-SENSTAR" }, { 0x0050C2, 0x5DF000, 0x5DFFFF, "Gnutek Ltd.", "GNUTEK" }, { 0x0050C2, 0x5E0000, 0x5E0FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x5E1000, 0x5E1FFF, "Ittiam Systems (P) Ltd", "ITTIAM-P" }, { 0x0050C2, 0x5E2000, 0x5E2FFF, "PYRAMID Computer GmbH", "PYRAMID" }, { 0x0050C2, 0x5E3000, 0x5E3FFF, "Computechnic AG", "COMPUTECHNIC" }, { 0x0050C2, 0x5E4000, 0x5E4FFF, "Buyang Electronics Industrial Co., Ltd.", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x0050C2, 0x5E5000, 0x5E5FFF, "Stresstech OY", "STRESSTECH-OY" }, { 0x0050C2, 0x5E6000, 0x5E6FFF, "Musatel", "MUSATEL" }, { 0x0050C2, 0x5E7000, 0x5E7FFF, "EADS TEST & SERVICES", "EADS-TEST-SERVICES" }, { 0x0050C2, 0x5E8000, 0x5E8FFF, "Info-Chip Communications Ltd.", "INFO-CHIP-COMMUNICATION" }, { 0x0050C2, 0x5E9000, 0x5E9FFF, "Micro Technology Services Inc.", "MICRO-SERVICES" }, { 0x0050C2, 0x5EA000, 0x5EAFFF, "Micro Elektronische Producten", "MICRO-ELEKTRONISCHE-PRODUCTEN" }, { 0x0050C2, 0x5EB000, 0x5EBFFF, "Garper Telecomunicaciones, S.L.", "GARPER-TELECOMUNICACIONES-S-L" }, { 0x0050C2, 0x5EC000, 0x5ECFFF, "ASiS Technologies Pte Ltd", "ASIS-TECHNOLOGIES-PTE" }, { 0x0050C2, 0x5ED000, 0x5EDFFF, "AQUAROTTER A FRANKE COMPANY", "AQUAROTTER-A-FRANKE-COMPANY" }, { 0x0050C2, 0x5EE000, 0x5EEFFF, "Condre Corporation", "CONDRE" }, { 0x0050C2, 0x5EF000, 0x5EFFFF, "pikkerton GmbH", "PIKKERTON" }, { 0x0050C2, 0x5F0000, 0x5F0FFF, "DIAS Infrared GmbH", "DIAS-INFRARED" }, { 0x0050C2, 0x5F1000, 0x5F1FFF, "Technomarine JSC", "TECHNOMARINE-JSC" }, { 0x0050C2, 0x5F2000, 0x5F2FFF, "ESEM Grünau GmbH & Co. KG", "ESEM-GRüNAU" }, { 0x0050C2, 0x5F3000, 0x5F3FFF, "POSNET Polska S.A.", "POSNET-POLSKA" }, { 0x0050C2, 0x5F4000, 0x5F4FFF, "TeamProjects BV", "TEAMPROJECTS" }, { 0x0050C2, 0x5F5000, 0x5F5FFF, "Genesis inc", "GENESIS" }, { 0x0050C2, 0x5F6000, 0x5F6FFF, "CAMBRIDGE CONSULTANTS LTD", "CAMBRIDGE-CONSULTANTS" }, { 0x0050C2, 0x5F7000, 0x5F7FFF, "Metrologic Group", "METROLOGIC-GROUP" }, { 0x0050C2, 0x5F8000, 0x5F8FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x5F9000, 0x5F9FFF, "ROTHARY Solutions AG", "ROTHARY-SOLUTIONS" }, { 0x0050C2, 0x5FA000, 0x5FAFFF, "LEA d.o.o.", "LEA-D-O-O" }, { 0x0050C2, 0x5FB000, 0x5FBFFF, "All-Systems Electronics Pty Ltd", "ALL--ELECTRONICS-PTY" }, { 0x0050C2, 0x5FC000, 0x5FCFFF, "FilmLight Limited", "FILMLIGHT" }, { 0x0050C2, 0x5FD000, 0x5FDFFF, "MEG Electronic Inc.", "MEG" }, { 0x0050C2, 0x5FE000, 0x5FEFFF, "Novacomm", "NOVACOMM" }, { 0x0050C2, 0x5FF000, 0x5FFFFF, "Gazelle Monitoring Systems", "GAZELLE-MONITORING" }, { 0x0050C2, 0x600000, 0x600FFF, "Protec Fire Detection plc", "PROTEC-FIRE-DETECTION-PLC" }, { 0x0050C2, 0x601000, 0x601FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x602000, 0x602FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x603000, 0x603FFF, "Cerus Corp", "CERUS" }, { 0x0050C2, 0x604000, 0x604FFF, "HCJB Global", "HCJB-GLOBAL" }, { 0x0050C2, 0x605000, 0x605FFF, "Swistec GmbH", "SWISTEC" }, { 0x0050C2, 0x606000, 0x606FFF, "Shenzhen Huazhong Technology Inc", "SHENZHEN-HUAZHONG" }, { 0x0050C2, 0x607000, 0x607FFF, "Telecom FM", "TELECOM-FM" }, { 0x0050C2, 0x608000, 0x608FFF, "Silex Industrial Automation Ltd.", "SILEX-INDUSTRIAL-AUTOMATION" }, { 0x0050C2, 0x609000, 0x609FFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0x60A000, 0x60AFFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x60B000, 0x60BFFF, "Shanghai QianJin Electronic Equipment Co. Ltd.", "SHANGHAI-QIANJIN-EQUIPMENT" }, { 0x0050C2, 0x60C000, 0x60CFFF, "IDENTIC AB", "IDENTIC-AB" }, { 0x0050C2, 0x60D000, 0x60DFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x60E000, 0x60EFFF, "Automation and Control Technology, Inc.", "AUTOMATION-AND-CONTROL" }, { 0x0050C2, 0x60F000, 0x60FFFF, "Kommunikations- & Sicherheitssysteme Gesellschaft m.b.H", "KOMMUNIKATIONS--SICHERHEITSSYSTEME-GESELLSCHAFT-M-B-H" }, { 0x0050C2, 0x610000, 0x610FFF, "FDT Manufacturing, LLC", "FDT-MANUFACTURING-LLC" }, { 0x0050C2, 0x611000, 0x611FFF, "Brookhaven National Laboratory", "BROOKHAVEN-NATIONAL-LABORATORY" }, { 0x0050C2, 0x612000, 0x612FFF, "IHP-GmbH", "IHP" }, { 0x0050C2, 0x613000, 0x613FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x614000, 0x614FFF, "SICOM AS", "SICOM-AS" }, { 0x0050C2, 0x615000, 0x615FFF, "Axis Electronics", "AXIS-ELECTRONICS" }, { 0x0050C2, 0x616000, 0x616FFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0x617000, 0x617FFF, "NARINET, INC.", "NARINET" }, { 0x0050C2, 0x618000, 0x618FFF, "Intergrated Security Mfg. Ltd", "INTERGRATED-SECURITY-MFG" }, { 0x0050C2, 0x619000, 0x619FFF, "Linkbit, Inc.", "LINKBIT" }, { 0x0050C2, 0x61A000, 0x61AFFF, "Communication Components Inc.", "COMMUNICATION-COMPONENTS" }, { 0x0050C2, 0x61B000, 0x61BFFF, "NCI Technologies Inc.", "NCI-TECHNOLOGIES" }, { 0x0050C2, 0x61C000, 0x61CFFF, "TestPro Systems, Inc.", "TESTPRO" }, { 0x0050C2, 0x61D000, 0x61DFFF, "Sutus Inc", "SUTUS" }, { 0x0050C2, 0x61E000, 0x61EFFF, "LESTER ELECTRONICS LTD", "LESTER-ELECTRONICS" }, { 0x0050C2, 0x61F000, 0x61FFFF, "Imagine Communications", "IMAGINE-COMMUNICATION" }, { 0x0050C2, 0x620000, 0x620FFF, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x0050C2, 0x621000, 0x621FFF, "Version-T", "VERSION-T" }, { 0x0050C2, 0x622000, 0x622FFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x623000, 0x623FFF, "SAFELINE SL", "SAFELINE-SL" }, { 0x0050C2, 0x624000, 0x624FFF, "Comtest Networks", "COMTEST-NETWORKS" }, { 0x0050C2, 0x625000, 0x625FFF, "EBNeuro SpA", "EBNEURO-SPA" }, { 0x0050C2, 0x626000, 0x626FFF, "Winsys Informatica ltda", "WINSYS-INFORMATICA-LTDA" }, { 0x0050C2, 0x627000, 0x627FFF, "JungleSystem Co., Ltd.", "JUNGLESYSTEM" }, { 0x0050C2, 0x628000, 0x628FFF, "DARE Development", "DARE-DEVELOPMENT" }, { 0x0050C2, 0x629000, 0x629FFF, "MacDonald Humfrey (Products) Ltd", "MACDONALD-HUMFREY-PRODUCTS" }, { 0x0050C2, 0x62A000, 0x62AFFF, "Prisma Engineering srl", "PRISMA-ENGINEERING-SRL" }, { 0x0050C2, 0x62B000, 0x62BFFF, "First Control Systems AB", "FIRST-CONTROL-AB" }, { 0x0050C2, 0x62C000, 0x62CFFF, "AirMatrix, Inc.", "AIRMATRIX" }, { 0x0050C2, 0x62D000, 0x62DFFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0x62E000, 0x62EFFF, "TDM Ingénierie", "TDM-INGéNIERIE" }, { 0x0050C2, 0x62F000, 0x62FFFF, "QES", "QES" }, { 0x0050C2, 0x630000, 0x630FFF, "Aurora Flight Sciences", "AURORA-FLIGHT-SCIENCES" }, { 0x0050C2, 0x631000, 0x631FFF, "Fraunhofer IIS", "FRAUNHOFER-IIS" }, { 0x0050C2, 0x632000, 0x632FFF, "RoseTechnology A/S", "ROSETECHNOLOGY-A/S" }, { 0x0050C2, 0x633000, 0x633FFF, "Rice University", "RICE-UNIVERSITY" }, { 0x0050C2, 0x634000, 0x634FFF, "Sohon Inc", "SOHON" }, { 0x0050C2, 0x635000, 0x635FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x636000, 0x636FFF, "dSPACE GmbH", "DSPACE" }, { 0x0050C2, 0x637000, 0x637FFF, "Omnitrol Networks, Inc.", "OMNITROL-NETWORKS" }, { 0x0050C2, 0x638000, 0x638FFF, "HUNGAROCOM Telecommunication Ltd.", "HUNGAROCOM-TELECOMMUNICATION" }, { 0x0050C2, 0x639000, 0x639FFF, "Qstreams Networks Inc.", "QSTREAMS-NETWORKS" }, { 0x0050C2, 0x63A000, 0x63AFFF, "3DSP Corporation", "3DSP" }, { 0x0050C2, 0x63B000, 0x63BFFF, "Powis Corporation", "POWIS" }, { 0x0050C2, 0x63C000, 0x63CFFF, "dPict Imaging, Inc.", "DPICT-IMAGING" }, { 0x0050C2, 0x63D000, 0x63DFFF, "IDERs Inc", "IDERS" }, { 0x0050C2, 0x63E000, 0x63EFFF, "T2 Communication Ltd", "T2-COMMUNICATION" }, { 0x0050C2, 0x63F000, 0x63FFFF, "Speech Technology Center, Ltd.", "SPEECH-CENTER" }, { 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, 0x643000, 0x643FFF, "Enatel Limited", "ENATEL" }, { 0x0050C2, 0x644000, 0x644FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x645000, 0x645FFF, "The Software Group Limited", "THE-SOFTWARE-GROUP" }, { 0x0050C2, 0x646000, 0x646FFF, "TRUTOUCH TECHNOLOGIES INC", "TRUTOUCH-TECHNOLOGIES" }, { 0x0050C2, 0x647000, 0x647FFF, "R&D Technology Solutionz Limited", "R-D-SOLUTIONZ" }, { 0x0050C2, 0x648000, 0x648FFF, "Fidelity Comtech, Inc.", "FIDELITY-COMTECH" }, { 0x0050C2, 0x649000, 0x649FFF, "Pan-STARRS", "PAN-STARRS" }, { 0x0050C2, 0x64A000, 0x64AFFF, "CPqD", "CPQD" }, { 0x0050C2, 0x64B000, 0x64BFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x64C000, 0x64CFFF, "CIS Corporation", "CIS" }, { 0x0050C2, 0x64D000, 0x64DFFF, "Tera Information System Labs", "TERA-INFORMATION-SYSTEM-LABS" }, { 0x0050C2, 0x64E000, 0x64EFFF, "Northern Power", "NORTHERN-POWER" }, { 0x0050C2, 0x64F000, 0x64FFFF, "MA Lighting Technology GmbH", "MA-LIGHTING" }, { 0x0050C2, 0x650000, 0x650FFF, "Liquid Breaker, LLC", "LIQUID-BREAKER-LLC" }, { 0x0050C2, 0x651000, 0x651FFF, "STAER SPA", "STAER-SPA" }, { 0x0050C2, 0x652000, 0x652FFF, "Wideco Sweden AB", "WIDECO-SWEDEN-AB" }, { 0x0050C2, 0x653000, 0x653FFF, "Doble Engineering", "DOBLE-ENGINEERING" }, { 0x0050C2, 0x654000, 0x654FFF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0050C2, 0x655000, 0x655FFF, "Physik Instrumente (PI) GmbH&Co.KG", "PHYSIK-INSTRUMENTE-PI" }, { 0x0050C2, 0x656000, 0x656FFF, "LDA Audio Video Profesional", "LDA-AUDIO-VIDEO-PROFESIONAL" }, { 0x0050C2, 0x657000, 0x657FFF, "MONYTEL S.A.", "MONYTEL" }, { 0x0050C2, 0x658000, 0x658FFF, "OpenPKG GmbH", "OPENPKG" }, { 0x0050C2, 0x659000, 0x659FFF, "Dorsett Technologies, Inc.", "DORSETT-TECHNOLOGIES" }, { 0x0050C2, 0x65A000, 0x65AFFF, "Hisstema AB", "HISSTEMA-AB" }, { 0x0050C2, 0x65B000, 0x65BFFF, "Silverbrook Research", "SILVERBROOK-RESEARCH" }, { 0x0050C2, 0x65C000, 0x65CFFF, "VTZ d.o.o.", "VTZ-D-O-O" }, { 0x0050C2, 0x65D000, 0x65DFFF, "Redfone Communications LLC", "REDFONE-COMMUNICATION-LLC" }, { 0x0050C2, 0x65E000, 0x65EFFF, "Cantion A/S", "CANTION-A/S" }, { 0x0050C2, 0x65F000, 0x65FFFF, "Invocon, Inc.", "INVOCON" }, { 0x0050C2, 0x660000, 0x660FFF, "IZISOFT", "IZISOFT" }, { 0x0050C2, 0x661000, 0x661FFF, "P.C.E.", "P-C-E" }, { 0x0050C2, 0x662000, 0x662FFF, "Asia Pacific Card & System Sdn Bhd", "ASIA-PACIFIC-CARD-SYSTEM-SDN-BHD" }, { 0x0050C2, 0x663000, 0x663FFF, "COE Limited", "COE" }, { 0x0050C2, 0x664000, 0x664FFF, "Westel Wireless Systems", "WESTEL-WIRELESS" }, { 0x0050C2, 0x665000, 0x665FFF, "NetworkSound, Inc", "NETWORKSOUND" }, { 0x0050C2, 0x666000, 0x666FFF, "Xworks NZ Limited", "XWORKS-NZ" }, { 0x0050C2, 0x667000, 0x667FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x668000, 0x668FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x669000, 0x669FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x66A000, 0x66AFFF, "ABB Xiamen Transmission and Distribution Automation Equipmen", "ABB-XIAMEN-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMEN" }, { 0x0050C2, 0x66B000, 0x66BFFF, "flsystem", "FLSYSTEM" }, { 0x0050C2, 0x66C000, 0x66CFFF, "DESY", "DESY" }, { 0x0050C2, 0x66D000, 0x66DFFF, "DIGITEK S.p.A.", "DIGITEK-S-P-A" }, { 0x0050C2, 0x66E000, 0x66EFFF, "Linear Systems Ltd.", "LINEAR" }, { 0x0050C2, 0x66F000, 0x66FFFF, "Nilan A/S", "NILAN-A/S" }, { 0x0050C2, 0x670000, 0x670FFF, "Naim Audio", "NAIM-AUDIO" }, { 0x0050C2, 0x671000, 0x671FFF, "Skyline Products, Inc", "SKYLINE-PRODUCTS" }, { 0x0050C2, 0x672000, 0x672FFF, "DDS Elettronica srl", "DDS-ELETTRONICA-SRL" }, { 0x0050C2, 0x673000, 0x673FFF, "Ferrari electronic AG", "FERRARI" }, { 0x0050C2, 0x674000, 0x674FFF, "Protech Optronics Co., Ltd.", "PROTECH-OPTRONICS" }, { 0x0050C2, 0x675000, 0x675FFF, "Kenton Research Ltd", "KENTON-RESEARCH" }, { 0x0050C2, 0x676000, 0x676FFF, "EDS", "EDS" }, { 0x0050C2, 0x677000, 0x677FFF, "ProconX Pty Ltd", "PROCONX-PTY" }, { 0x0050C2, 0x678000, 0x678FFF, "IHM", "IHM" }, { 0x0050C2, 0x679000, 0x679FFF, "Industrial Vacuum Systems", "INDUSTRIAL-VACUUM" }, { 0x0050C2, 0x67A000, 0x67AFFF, "CC Systems AB", "CC-AB" }, { 0x0050C2, 0x67B000, 0x67BFFF, "Sparton Electronics", "SPARTON-ELECTRONICS" }, { 0x0050C2, 0x67C000, 0x67CFFF, "AirCell, Inc.", "AIRCELL" }, { 0x0050C2, 0x67D000, 0x67DFFF, "ESA Messtechnik GmbH", "ESA-MESSTECHNIK" }, { 0x0050C2, 0x67E000, 0x67EFFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x67F000, 0x67FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x680000, 0x680FFF, "Honey Network Research Limited", "HONEY-NETWORK-RESEARCH" }, { 0x0050C2, 0x681000, 0x681FFF, "Owasys Advanced Wireless Devices", "OWASYS-ADVANCED-WIRELESS-DEVICES" }, { 0x0050C2, 0x682000, 0x682FFF, "Commet AB", "COMMET-AB" }, { 0x0050C2, 0x683000, 0x683FFF, "MEGGITT Safety System", "MEGGITT-SAFETY-SYSTEM" }, { 0x0050C2, 0x684000, 0x684FFF, "REASON Tecnologia S.A.", "REASON-TECNOLOGIA" }, { 0x0050C2, 0x685000, 0x685FFF, "Datamars SA", "DATAMARS" }, { 0x0050C2, 0x686000, 0x686FFF, "ANNAX Anzeigesysteme GmbH", "ANNAX-ANZEIGESYSTEME" }, { 0x0050C2, 0x687000, 0x687FFF, "Access Specialties, Inc", "ACCESS-SPECIALTIES" }, { 0x0050C2, 0x688000, 0x688FFF, "Elk Products", "ELK-PRODUCTS" }, { 0x0050C2, 0x689000, 0x689FFF, "RF Code, Inc.", "RF-CODE" }, { 0x0050C2, 0x68A000, 0x68AFFF, "Zhuhai Jiahe Electronics Co.,LTD", "ZHUHAI-JIAHE-ELECTRONICS" }, { 0x0050C2, 0x68B000, 0x68BFFF, "SIMTEK INC.", "SIMTEK" }, { 0x0050C2, 0x68C000, 0x68CFFF, "Isochron Inc", "ISOCHRON" }, { 0x0050C2, 0x68D000, 0x68DFFF, "CXR Larus Corporation", "CXR-LARUS" }, { 0x0050C2, 0x68E000, 0x68EFFF, "SELCO", "SELCO" }, { 0x0050C2, 0x68F000, 0x68FFFF, "BERTRONIC SRL", "BERTRONIC-SRL" }, { 0x0050C2, 0x690000, 0x690FFF, "GHL Systems Berhad", "GHL-BERHAD" }, { 0x0050C2, 0x691000, 0x691FFF, "Interopix, Inc.", "INTEROPIX" }, { 0x0050C2, 0x692000, 0x692FFF, "Mate Media Access Technologies", "MATE-MEDIA-ACCESS-TECHNOLOGIES" }, { 0x0050C2, 0x693000, 0x693FFF, "Tech Comm, Inc.", "TECH-COMM" }, { 0x0050C2, 0x694000, 0x694FFF, "Initel srl", "INITEL-SRL" }, { 0x0050C2, 0x695000, 0x695FFF, "Purelink Technology, inc.", "PURELINK" }, { 0x0050C2, 0x696000, 0x696FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0x697000, 0x697FFF, "Monarch Instrument", "MONARCH-INSTRUMENT" }, { 0x0050C2, 0x698000, 0x698FFF, "Navtech Radar Ltd", "NAVTECH-RADAR" }, { 0x0050C2, 0x699000, 0x699FFF, "Bulletendpoints Enterprises Inc", "BULLETENDPOINTS-ENTERPRISES" }, { 0x0050C2, 0x69A000, 0x69AFFF, "StoreTech Limited", "STORETECH" }, { 0x0050C2, 0x69B000, 0x69BFFF, "Tsien (UK) Ltd", "TSIEN-UK" }, { 0x0050C2, 0x69C000, 0x69CFFF, "Bug Labs, Inc.", "BUG-LABS" }, { 0x0050C2, 0x69D000, 0x69DFFF, "Dvation.co.,Ltd", "DVATION" }, { 0x0050C2, 0x69E000, 0x69EFFF, "Ideus AB", "IDEUS-AB" }, { 0x0050C2, 0x69F000, 0x69FFFF, "Total RF, LLC", "TOTAL-RF-LLC" }, { 0x0050C2, 0x6A0000, 0x6A0FFF, "GFP Lab S.r.l.", "GFP-LAB-S-R-L" }, { 0x0050C2, 0x6A1000, 0x6A1FFF, "PRICOL LIMITED", "PRICOL" }, { 0x0050C2, 0x6A2000, 0x6A2FFF, "Cadi Scientific Pte Ltd", "CADI-SCIENTIFIC-PTE" }, { 0x0050C2, 0x6A3000, 0x6A3FFF, "CreaTech Electronics Co.", "CREATECH-ELECTRONICS" }, { 0x0050C2, 0x6A4000, 0x6A4FFF, "TELETASK", "TELETASK" }, { 0x0050C2, 0x6A5000, 0x6A5FFF, "FHF Funke+Huster Fernsig GmbH", "FHF-FUNKE+HUSTER-FERNSIG" }, { 0x0050C2, 0x6A6000, 0x6A6FFF, "Victory Concept Industries Ltd.", "VICTORY-CONCEPT-INDUSTRIES" }, { 0x0050C2, 0x6A7000, 0x6A7FFF, "Hoer GmbH & Co. Industrie-Electronic KG", "HOER-INDUSTRIE" }, { 0x0050C2, 0x6A8000, 0x6A8FFF, "Delcan Technologies, Inc", "DELCAN-TECHNOLOGIES" }, { 0x0050C2, 0x6A9000, 0x6A9FFF, "Armida Technologies Corporation", "ARMIDA-TECHNOLOGIES" }, { 0x0050C2, 0x6AA000, 0x6AAFFF, "Ifox - Industria e Comercio Ltda", "IFOX---INDUSTRIA-E-COMERCIO-LTDA" }, { 0x0050C2, 0x6AB000, 0x6ABFFF, "Softwareentwicklung", "SOFTWAREENTWICKLUNG" }, { 0x0050C2, 0x6AC000, 0x6ACFFF, "Thales UK", "THALES-UK" }, { 0x0050C2, 0x6AD000, 0x6ADFFF, "Heim- & Bürokommunikation", "HEIM--BüROKOMMUNIKATION" }, { 0x0050C2, 0x6AE000, 0x6AEFFF, "Qualisys AB", "QUALISYS-AB" }, { 0x0050C2, 0x6AF000, 0x6AFFFF, "Nanoradio AB", "NANORADIO-AB" }, { 0x0050C2, 0x6B0000, 0x6B0FFF, "Smart Key International Limited", "SMART-KEY" }, { 0x0050C2, 0x6B1000, 0x6B1FFF, "Burk Technology", "BURK" }, { 0x0050C2, 0x6B2000, 0x6B2FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x0050C2, 0x6B3000, 0x6B3FFF, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 0x0050C2, 0x6B4000, 0x6B4FFF, "SOMESCA", "SOMESCA" }, { 0x0050C2, 0x6B5000, 0x6B5FFF, "TRIUMF", "TRIUMF" }, { 0x0050C2, 0x6B6000, 0x6B6FFF, "CommoDaS GmbH", "COMMODAS" }, { 0x0050C2, 0x6B7000, 0x6B7FFF, "System LSI CO.Ltd.", "SYSTEM-LSI" }, { 0x0050C2, 0x6B8000, 0x6B8FFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0x6B9000, 0x6B9FFF, "unipo GmbH", "UNIPO" }, { 0x0050C2, 0x6BA000, 0x6BAFFF, "Fertron Controle e Automacao Industrial Ltda.", "FERTRON-CONTROLE-E-AUTOMACAO-INDUSTRIAL-LTDA" }, { 0x0050C2, 0x6BB000, 0x6BBFFF, "Ele.Mag S.r.l.", "ELE-MAG-S-R-L" }, { 0x0050C2, 0x6BC000, 0x6BCFFF, "Paraytec Ltd", "PARAYTEC" }, { 0x0050C2, 0x6BD000, 0x6BDFFF, "Mitron Oy", "MITRON-OY" }, { 0x0050C2, 0x6BE000, 0x6BEFFF, "ESTEC Co.,Ltd.", "ESTEC" }, { 0x0050C2, 0x6BF000, 0x6BFFFF, "Optoplan as", "OPTOPLAN-AS" }, { 0x0050C2, 0x6C0000, 0x6C0FFF, "GLOSTER SANTE EUROPE", "GLOSTER-SANTE-EUROPE" }, { 0x0050C2, 0x6C1000, 0x6C1FFF, "RADIUS Sweden AB", "RADIUS-SWEDEN-AB" }, { 0x0050C2, 0x6C2000, 0x6C2FFF, "HoseoTelnet Inc...", "HOSEOTELNET" }, { 0x0050C2, 0x6C3000, 0x6C3FFF, "iTRACS Corporation", "ITRACS" }, { 0x0050C2, 0x6C4000, 0x6C4FFF, "REXXON GmbH", "REXXON" }, { 0x0050C2, 0x6C5000, 0x6C5FFF, "Oerlikon Contraves AG", "OERLIKON-CONTRAVES" }, { 0x0050C2, 0x6C6000, 0x6C6FFF, "MedAvant Healthcare Solutions", "MEDAVANT-HEALTHCARE-SOLUTIONS" }, { 0x0050C2, 0x6C7000, 0x6C7FFF, "QuickCircuit Ltd.", "QUICKCIRCUIT" }, { 0x0050C2, 0x6C8000, 0x6C8FFF, "B&S MEDIA CO., LTD.", "B-S-MEDIA" }, { 0x0050C2, 0x6C9000, 0x6C9FFF, "NETAMI", "NETAMI" }, { 0x0050C2, 0x6CA000, 0x6CAFFF, "Dynamic Hearing Pty Ltd", "DYNAMIC-HEARING-PTY" }, { 0x0050C2, 0x6CB000, 0x6CBFFF, "Stream Processors", "STREAM-PROCESSORS" }, { 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, 0x6CF000, 0x6CFFFF, "Microway", "MICROWAY" }, { 0x0050C2, 0x6D0000, 0x6D0FFF, "EDS Systemtechnik", "EDS-SYSTEMTECHNIK" }, { 0x0050C2, 0x6D1000, 0x6D1FFF, "Schnick-Schnack-Systems GmbH", "SCHNICK-SCHNACK" }, { 0x0050C2, 0x6D2000, 0x6D2FFF, "Lumistar Incorporated", "LUMISTAR-INCORPORATED" }, { 0x0050C2, 0x6D3000, 0x6D3FFF, "DigiSensory technologies Pty Ltd", "DIGISENSORY-TECHNOLOGIES-PTY" }, { 0x0050C2, 0x6D4000, 0x6D4FFF, "Etani Electronics Co.,Ltd.", "ETANI-ELECTRONICS" }, { 0x0050C2, 0x6D5000, 0x6D5FFF, "Becker Electronics GmbH", "BECKER-ELECTRONICS" }, { 0x0050C2, 0x6D6000, 0x6D6FFF, "ADL Electronics Ltd.", "ADL-ELECTRONICS" }, { 0x0050C2, 0x6D7000, 0x6D7FFF, "Mavenir System, Inc.", "MAVENIR-SYSTEM" }, { 0x0050C2, 0x6D8000, 0x6D8FFF, "BL Healthcare, Inc.", "BL-HEALTHCARE" }, { 0x0050C2, 0x6D9000, 0x6D9FFF, "Ajeco Oy", "AJECO-OY" }, { 0x0050C2, 0x6DA000, 0x6DAFFF, "Techno Fittings S.r.l.", "TECHNO-FITTINGS-S-R-L" }, { 0x0050C2, 0x6DB000, 0x6DBFFF, "Gebhardt Ventilatoren GmbH", "GEBHARDT-VENTILATOREN" }, { 0x0050C2, 0x6DC000, 0x6DCFFF, "L-3 Communications Mobile-Vision, Inc.", "L-3-COMMUNICATION-MOBILE-VISION" }, { 0x0050C2, 0x6DD000, 0x6DDFFF, "Zmicro Systems Inc", "ZMICRO" }, { 0x0050C2, 0x6DE000, 0x6DEFFF, "Laser Tools & Technics Corp.", "LASER-TOOLS-TECHNICS" }, { 0x0050C2, 0x6DF000, 0x6DFFFF, "QR Sciences Ltd", "QR-SCIENCES" }, { 0x0050C2, 0x6E0000, 0x6E0FFF, "FIRSTTRUST Co.,Ltd.", "FIRSTTRUST" }, { 0x0050C2, 0x6E1000, 0x6E1FFF, "NewOnSys Ltd.", "NEWONSYS" }, { 0x0050C2, 0x6E2000, 0x6E2FFF, "PHYTEC Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x6E3000, 0x6E3FFF, "Miros AS", "MIROS-AS" }, { 0x0050C2, 0x6E4000, 0x6E4FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x6E5000, 0x6E5FFF, "Boeckeler Instruments, Inc.", "BOECKELER-INSTRUMENTS" }, { 0x0050C2, 0x6E6000, 0x6E6FFF, "Lanetco", "LANETCO" }, { 0x0050C2, 0x6E7000, 0x6E7FFF, "Axis Network Technology", "AXIS-NETWORK" }, { 0x0050C2, 0x6E8000, 0x6E8FFF, "Anymax", "ANYMAX" }, { 0x0050C2, 0x6E9000, 0x6E9FFF, "Bando electronic communication Co.Lltd", "BANDO-COMMUNICATION-LLTD" }, { 0x0050C2, 0x6EA000, 0x6EAFFF, "FIRSTEC SA", "FIRSTEC" }, { 0x0050C2, 0x6EB000, 0x6EBFFF, "Harrison Audio, LLC", "HARRISON-AUDIO-LLC" }, { 0x0050C2, 0x6EC000, 0x6ECFFF, "Netistix Technologies Corporation", "NETISTIX-TECHNOLOGIES" }, { 0x0050C2, 0x6ED000, 0x6EDFFF, "Sechan Electronics, Inc.", "SECHAN-ELECTRONICS" }, { 0x0050C2, 0x6EE000, 0x6EEFFF, "Interactive Electronic Systems", "INTERACTIVE" }, { 0x0050C2, 0x6EF000, 0x6EFFFF, "Pneumopartners LaenneXT SA", "PNEUMOPARTNERS-LAENNEXT" }, { 0x0050C2, 0x6F0000, 0x6F0FFF, "Stanley Security Solutions, Inc.", "STANLEY-SECURITY-SOLUTIONS" }, { 0x0050C2, 0x6F1000, 0x6F1FFF, "ITS Telecom", "ITS-TELECOM" }, { 0x0050C2, 0x6F2000, 0x6F2FFF, "Laser Electronics Ltd", "LASER-ELECTRONICS" }, { 0x0050C2, 0x6F3000, 0x6F3FFF, "E3Switch LLC", "E3SWITCH-LLC" }, { 0x0050C2, 0x6F4000, 0x6F4FFF, "Cryogenic Control Systems, Inc.", "CRYOGENIC-CONTROL" }, { 0x0050C2, 0x6F5000, 0x6F5FFF, "Kitron Microelectronics AB", "KITRON-MICROELECTRONICS-AB" }, { 0x0050C2, 0x6F6000, 0x6F6FFF, "AV SatCom AS", "AV-SATCOM-AS" }, { 0x0050C2, 0x6F7000, 0x6F7FFF, "infoplan Gesellschaftfür Informationssysteme mbH", "INFOPLAN-GESELLSCHAFTFüR-INFORMATIONSSYSTEME-MBH" }, { 0x0050C2, 0x6F8000, 0x6F8FFF, "RV Technology Limited", "RV" }, { 0x0050C2, 0x6F9000, 0x6F9FFF, "Revox GmbH", "REVOX" }, { 0x0050C2, 0x6FA000, 0x6FAFFF, "DCN", "DCN" }, { 0x0050C2, 0x6FB000, 0x6FBFFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0x6FC000, 0x6FCFFF, "Acte Sp. z o.o.", "ACTE-SP-Z-O-O" }, { 0x0050C2, 0x6FD000, 0x6FDFFF, "SAIA Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x6FE000, 0x6FEFFF, "Blue Origin", "BLUE-ORIGIN" }, { 0x0050C2, 0x6FF000, 0x6FFFFF, "St. Michael Strategies Inc.", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0x700000, 0x700FFF, "GEM-MED SL", "GEM-MED-SL" }, { 0x0050C2, 0x701000, 0x701FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x702000, 0x702FFF, "SPM Instrument AB", "SPM-INSTRUMENT-AB" }, { 0x0050C2, 0x703000, 0x703FFF, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x0050C2, 0x704000, 0x704FFF, "The Dini Group, La Jolla inc.", "THE-DINI-GROUP-LA-JOLLA" }, { 0x0050C2, 0x705000, 0x705FFF, "Hauch & Bach ApS", "HAUCH-BACH-APS" }, { 0x0050C2, 0x706000, 0x706FFF, "DioDigiWorks. CO., LTD.", "DIODIGIWORKS" }, { 0x0050C2, 0x707000, 0x707FFF, "DTech Labs Inc", "DTECH-LABS" }, { 0x0050C2, 0x708000, 0x708FFF, "Smartek d.o.o.", "SMARTEK-D-O-O" }, { 0x0050C2, 0x709000, 0x709FFF, "RO.VE.R. Laboratories S.p.A", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x0050C2, 0x70A000, 0x70AFFF, "Efficient Channel Coding", "EFFICIENT-CHANNEL-CODING" }, { 0x0050C2, 0x70B000, 0x70BFFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0x70C000, 0x70CFFF, "Exertus", "EXERTUS" }, { 0x0050C2, 0x70D000, 0x70DFFF, "ela-soft GmbH & Co. KG", "ELA-SOFT" }, { 0x0050C2, 0x70E000, 0x70EFFF, "AUDICO SYSTEMS OY", "AUDICO-OY" }, { 0x0050C2, 0x70F000, 0x70FFFF, "Zumbach Electronic AG", "ZUMBACH" }, { 0x0050C2, 0x710000, 0x710FFF, "Wharton Electronics Ltd", "WHARTON-ELECTRONICS" }, { 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, 0x714000, 0x714FFF, "T.E.AM., S. A.", "T-E-AM-S-A" }, { 0x0050C2, 0x715000, 0x715FFF, "RIEXINGER Elektronik", "RIEXINGER-ELEKTRONIK" }, { 0x0050C2, 0x716000, 0x716FFF, "MITROL S.R.L.", "MITROL-S-R-L" }, { 0x0050C2, 0x717000, 0x717FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0x718000, 0x718FFF, "illunis LLC", "ILLUNIS-LLC" }, { 0x0050C2, 0x719000, 0x719FFF, "ennovatis GmbH", "ENNOVATIS" }, { 0x0050C2, 0x71A000, 0x71AFFF, "Logus Broadband Wireless Solutions Inc.", "LOGUS-BROADBAND-WIRELESS-SOLUTIONS" }, { 0x0050C2, 0x71B000, 0x71BFFF, "ADVA Optical Networking", "ADVA-OPTICAL-NETWORKING" }, { 0x0050C2, 0x71C000, 0x71CFFF, "Elmec Inc.", "ELMEC" }, { 0x0050C2, 0x71D000, 0x71DFFF, "MG s.r.l.", "MG-S-R-L" }, { 0x0050C2, 0x71E000, 0x71EFFF, "ASKI Industrie Elektronik Ges.m.b.H.", "ASKI-INDUSTRIE-ELEKTRONIK-GES-M-B-H" }, { 0x0050C2, 0x71F000, 0x71FFFF, "ASC telecom AG", "ASC-TELECOM" }, { 0x0050C2, 0x720000, 0x720FFF, "Colorado Engineering Inc.", "COLORADO-ENGINEERING" }, { 0x0050C2, 0x721000, 0x721FFF, "Spectrum Communications FZE", "SPECTRUM-COMMUNICATION-FZE" }, { 0x0050C2, 0x722000, 0x722FFF, "Centric TSolve BV", "CENTRIC-TSOLVE" }, { 0x0050C2, 0x723000, 0x723FFF, "Power Electronics", "POWER-ELECTRONICS" }, { 0x0050C2, 0x724000, 0x724FFF, "HSC-Regelungstechnik GmbH", "HSC-REGELUNGSTECHNIK" }, { 0x0050C2, 0x725000, 0x725FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x726000, 0x726FFF, "eta systemi CKB", "ETA-SYSTEMI-CKB" }, { 0x0050C2, 0x727000, 0x727FFF, "Pelweckyj Videotechnik GmbH", "PELWECKYJ-VIDEOTECHNIK" }, { 0x0050C2, 0x728000, 0x728FFF, "InterDigital Canada Ltd", "INTERDIGITAL-CANADA" }, { 0x0050C2, 0x729000, 0x729FFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0x72A000, 0x72AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x72B000, 0x72BFFF, "Sequestered Solutions", "SEQUESTERED-SOLUTIONS" }, { 0x0050C2, 0x72C000, 0x72CFFF, "Richard Griessbach Feinmechanik GmbH", "RICHARD-GRIESSBACH-FEINMECHANIK" }, { 0x0050C2, 0x72D000, 0x72DFFF, "Physical Acoustics Corporation", "PHYSICAL-ACOUSTICS" }, { 0x0050C2, 0x72E000, 0x72EFFF, "SNCF EIM PAYS DE LOIRE", "SNCF-EIM-PAYS-DE-LOIRE" }, { 0x0050C2, 0x72F000, 0x72FFFF, "Priority Electronics Ltd", "PRIORITY-ELECTRONICS" }, { 0x0050C2, 0x730000, 0x730FFF, "haber & koenig electronics gmbh", "HABER-KOENIG-ELECTRONICS" }, { 0x0050C2, 0x731000, 0x731FFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0x732000, 0x732FFF, "Schlumberger K.K.", "SCHLUMBERGER-K-K" }, { 0x0050C2, 0x733000, 0x733FFF, "Cimetrics Research Pty Ltd", "CIMETRICS-RESEARCH-PTY" }, { 0x0050C2, 0x734000, 0x734FFF, "CardioMEMS Inc.", "CARDIOMEMS" }, { 0x0050C2, 0x735000, 0x735FFF, "Ant Lamp, Inc", "ANT-LAMP" }, { 0x0050C2, 0x736000, 0x736FFF, "Nika Ltd", "NIKA" }, { 0x0050C2, 0x737000, 0x737FFF, "Teradici Corporation", "TERADICI" }, { 0x0050C2, 0x738000, 0x738FFF, "Miracom Technology Co., Ltd.", "MIRACOM" }, { 0x0050C2, 0x739000, 0x739FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x73A000, 0x73AFFF, "Naturela Ltd.", "NATURELA" }, { 0x0050C2, 0x73B000, 0x73BFFF, "On Air Networks", "ON-AIR-NETWORKS" }, { 0x0050C2, 0x73C000, 0x73CFFF, "Simicon", "SIMICON" }, { 0x0050C2, 0x73D000, 0x73DFFF, "cryptiris", "CRYPTIRIS" }, { 0x0050C2, 0x73E000, 0x73EFFF, "Quantec Networks GmbH", "QUANTEC-NETWORKS" }, { 0x0050C2, 0x73F000, 0x73FFFF, "MEDAV GmbH", "MEDAV" }, { 0x0050C2, 0x740000, 0x740FFF, "McQuay China", "MCQUAY-CHINA" }, { 0x0050C2, 0x741000, 0x741FFF, "Dain", "DAIN" }, { 0x0050C2, 0x742000, 0x742FFF, "Fantuzzi Reggiane", "FANTUZZI-REGGIANE" }, { 0x0050C2, 0x743000, 0x743FFF, "Elektro-Top 3000 Ltd.", "ELEKTRO-TOP-3000" }, { 0x0050C2, 0x744000, 0x744FFF, "Avonaco Systems, Inc.", "AVONACO" }, { 0x0050C2, 0x745000, 0x745FFF, "ACISA", "ACISA" }, { 0x0050C2, 0x746000, 0x746FFF, "Realtronix Company", "REALTRONIX-COMPANY" }, { 0x0050C2, 0x747000, 0x747FFF, "CDSA Dam Neck", "CDSA-DAM-NECK" }, { 0x0050C2, 0x748000, 0x748FFF, "Letechnic Ltd", "LETECHNIC" }, { 0x0050C2, 0x749000, 0x749FFF, "Affolter Technologies SA", "AFFOLTER-TECHNOLOGIES" }, { 0x0050C2, 0x74A000, 0x74AFFF, "MONITOR ELECTRONICS LTD", "MONITOR-ELECTRONICS" }, { 0x0050C2, 0x74B000, 0x74BFFF, "STAR-Dundee Ltd", "STAR-DUNDEE" }, { 0x0050C2, 0x74C000, 0x74CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x74D000, 0x74DFFF, "Beceem Communications, Inc.", "BECEEM-COMMUNICATION" }, { 0x0050C2, 0x74E000, 0x74EFFF, "TRONICO", "TRONICO" }, { 0x0050C2, 0x74F000, 0x74FFFF, "German Technologies", "GERMAN-TECHNOLOGIES" }, { 0x0050C2, 0x750000, 0x750FFF, "Brightlights Intellectual Property Ltd", "BRIGHTLIGHTS-INTELLECTUAL-PROPERTY" }, { 0x0050C2, 0x751000, 0x751FFF, "e&s Engineering & Software GmbH", "E-S-ENGINEERING-SOFTWARE" }, { 0x0050C2, 0x752000, 0x752FFF, "LOBER, S.A.", "LOBER" }, { 0x0050C2, 0x753000, 0x753FFF, "ABB", "ABB" }, { 0x0050C2, 0x754000, 0x754FFF, "Abeo Corporation", "ABEO" }, { 0x0050C2, 0x755000, 0x755FFF, "Teletek Electronics", "TELETEK-ELECTRONICS" }, { 0x0050C2, 0x756000, 0x756FFF, "Chesapeake Sciences Corp", "CHESAPEAKE-SCIENCES" }, { 0x0050C2, 0x757000, 0x757FFF, "E S P Technologies Ltd", "E-S-P-TECHNOLOGIES" }, { 0x0050C2, 0x758000, 0x758FFF, "AixSolve GmbH", "AIXSOLVE" }, { 0x0050C2, 0x759000, 0x759FFF, "Sequentric Energy Systems, LLC", "SEQUENTRIC-ENERGY-LLC" }, { 0x0050C2, 0x75A000, 0x75AFFF, "Gaisler Research AB", "GAISLER-RESEARCH-AB" }, { 0x0050C2, 0x75B000, 0x75BFFF, "DMT System S.p.A.", "DMT-SYSTEM-S-P-A" }, { 0x0050C2, 0x75C000, 0x75CFFF, "STÖRK-TRONIC Störk GmbH&Co. KG", "STÖRK-TRONIC-STöRK" }, { 0x0050C2, 0x75D000, 0x75DFFF, "Fluid Analytics, Inc.", "FLUID-ANALYTICS" }, { 0x0050C2, 0x75E000, 0x75EFFF, "Sky-Skan, Incorporated", "SKY-SKAN-INCORPORATED" }, { 0x0050C2, 0x75F000, 0x75FFFF, "B. Rexroth the identity company GmbH", "B-REXROTH-THE-IDENTITY-COMPANY" }, { 0x0050C2, 0x760000, 0x760FFF, "AR'S CO., LTD.", "AR-S" }, { 0x0050C2, 0x761000, 0x761FFF, "Elbit Systems of America - Fort Worth Operations", "ELBIT-OF-AMERICA---FORT-WORTH-OPERATIONS" }, { 0x0050C2, 0x762000, 0x762FFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x0050C2, 0x763000, 0x763FFF, "XtendWave", "XTENDWAVE" }, { 0x0050C2, 0x764000, 0x764FFF, "Argus-Spectrum", "ARGUS-SPECTRUM" }, { 0x0050C2, 0x765000, 0x765FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x766000, 0x766FFF, "Gutermann Technology GmbH", "GUTERMANN" }, { 0x0050C2, 0x767000, 0x767FFF, "EID", "EID" }, { 0x0050C2, 0x768000, 0x768FFF, "Control Service do Brasil Ltda", "CONTROL-SERVICE-DO-BRASIL-LTDA" }, { 0x0050C2, 0x769000, 0x769FFF, "BES GmbH", "BES" }, { 0x0050C2, 0x76A000, 0x76AFFF, "Digidrive Audio Limited", "DIGIDRIVE-AUDIO" }, { 0x0050C2, 0x76B000, 0x76BFFF, "Putercom Enterprise Co., LTD.", "PUTERCOM" }, { 0x0050C2, 0x76C000, 0x76CFFF, "EFG CZ spol. s r.o.", "EFG-CZ-SPOL-S-R-O" }, { 0x0050C2, 0x76D000, 0x76DFFF, "Mobilisme", "MOBILISME" }, { 0x0050C2, 0x76E000, 0x76EFFF, "Crinia Corporation", "CRINIA" }, { 0x0050C2, 0x76F000, 0x76FFFF, "Control and Robotics Solutions", "CONTROL-AND-ROBOTICS-SOLUTIONS" }, { 0x0050C2, 0x770000, 0x770FFF, "Cadex Electronics Inc.", "CADEX-ELECTRONICS" }, { 0x0050C2, 0x771000, 0x771FFF, "ZigBee Alliance", "ZIGBEE-ALLIANCE" }, { 0x0050C2, 0x772000, 0x772FFF, "IES Elektronikentwicklung", "IES-ELEKTRONIKENTWICKLUNG" }, { 0x0050C2, 0x773000, 0x773FFF, "Pointe Conception Medical Inc.", "POINTE-CONCEPTION-MEDICAL" }, { 0x0050C2, 0x774000, 0x774FFF, "GeoSIG Ltd.", "GEOSIG" }, { 0x0050C2, 0x775000, 0x775FFF, "Laserdyne Technologies", "LASERDYNE-TECHNOLOGIES" }, { 0x0050C2, 0x776000, 0x776FFF, "Integrated Security Corporation", "INTEGRATED-SECURITY" }, { 0x0050C2, 0x777000, 0x777FFF, "Euro Display Srl", "EURO-DISPLAY-SRL" }, { 0x0050C2, 0x778000, 0x778FFF, "SunGard Vivista", "SUNGARD-VIVISTA" }, { 0x0050C2, 0x779000, 0x779FFF, "Coral Telecom Ltd", "CORAL-TELECOM" }, { 0x0050C2, 0x77A000, 0x77AFFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x0050C2, 0x77B000, 0x77BFFF, "Itibia Technologies, Inc.", "ITIBIA-TECHNOLOGIES" }, { 0x0050C2, 0x77C000, 0x77CFFF, "ATEC SRL", "ATEC-SRL" }, { 0x0050C2, 0x77D000, 0x77DFFF, "Lincoln Industrial", "LINCOLN-INDUSTRIAL" }, { 0x0050C2, 0x77E000, 0x77EFFF, "Cominfo Inc.", "COMINFO" }, { 0x0050C2, 0x77F000, 0x77FFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x780000, 0x780FFF, "IQ Solutions GmbH & Co. KG", "IQ-SOLUTIONS" }, { 0x0050C2, 0x781000, 0x781FFF, "Starling Advanced Communications", "STARLING-ADVANCED-COMMUNICATION" }, { 0x0050C2, 0x782000, 0x782FFF, "Phytec Mestechnik GmbH", "PHYTEC-MESTECHNIK" }, { 0x0050C2, 0x783000, 0x783FFF, "NORMA systems GmbH", "NORMA" }, { 0x0050C2, 0x784000, 0x784FFF, "Lewis Controls Inc.", "LEWIS-CONTROLS" }, { 0x0050C2, 0x785000, 0x785FFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0x786000, 0x786FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x787000, 0x787FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x788000, 0x788FFF, "HOSA TECHNOLOGY, INC.", "HOSA" }, { 0x0050C2, 0x789000, 0x789FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0x78A000, 0x78AFFF, "LEVEL TELECOM", "LEVEL-TELECOM" }, { 0x0050C2, 0x78B000, 0x78BFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x78C000, 0x78CFFF, "Giga-tronics, Inc.", "GIGA-TRONICS" }, { 0x0050C2, 0x78D000, 0x78DFFF, "Telairity", "TELAIRITY" }, { 0x0050C2, 0x78E000, 0x78EFFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0x78F000, 0x78FFFF, "ELMAR electronic", "ELMAR" }, { 0x0050C2, 0x790000, 0x790FFF, "GE Security-Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x791000, 0x791FFF, "M Squared Lasers Limited", "M-SQUARED-LASERS" }, { 0x0050C2, 0x792000, 0x792FFF, "SMARTRO Co.,Ltd.", "SMARTRO" }, { 0x0050C2, 0x793000, 0x793FFF, "Enertex Bayern GmbH", "ENERTEX-BAYERN" }, { 0x0050C2, 0x794000, 0x794FFF, "COMSONICS, INC.", "COMSONICS" }, { 0x0050C2, 0x795000, 0x795FFF, "Ameli Spa", "AMELI-SPA" }, { 0x0050C2, 0x796000, 0x796FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x797000, 0x797FFF, "Tiefenbach Control Systems GmbH", "TIEFENBACH-CONTROL" }, { 0x0050C2, 0x798000, 0x798FFF, "Indefia", "INDEFIA" }, { 0x0050C2, 0x799000, 0x799FFF, "AAVD", "AAVD" }, { 0x0050C2, 0x79A000, 0x79AFFF, "JMC America, LLC", "JMC-AMERICA-LLC" }, { 0x0050C2, 0x79B000, 0x79BFFF, "Schniewindt GmbH & Co. KG", "SCHNIEWINDT" }, { 0x0050C2, 0x79C000, 0x79CFFF, "Vital Systems Inc", "VITAL" }, { 0x0050C2, 0x79D000, 0x79DFFF, "MiraTrek", "MIRATREK" }, { 0x0050C2, 0x79E000, 0x79EFFF, "Benshaw Canada Controls, Inc.", "BENSHAW-CANADA-CONTROLS" }, { 0x0050C2, 0x79F000, 0x79FFFF, "ZAO NPC", "ZAO-NPC" }, { 0x0050C2, 0x7A0000, 0x7A0FFF, "MedAvant Healthcare", "MEDAVANT-HEALTHCARE" }, { 0x0050C2, 0x7A1000, 0x7A1FFF, "Field Design Service", "FIELD-DESIGN-SERVICE" }, { 0x0050C2, 0x7A2000, 0x7A2FFF, "RaySat Israel LTD", "RAYSAT-ISRAEL" }, { 0x0050C2, 0x7A3000, 0x7A3FFF, "ABB Transmission and Distribution Automation Equipment (Xiam", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAM" }, { 0x0050C2, 0x7A4000, 0x7A4FFF, "Calibre UK LTD", "CALIBRE-UK" }, { 0x0050C2, 0x7A5000, 0x7A5FFF, "Quantum Medical Imaging", "QUANTUM-MEDICAL-IMAGING" }, { 0x0050C2, 0x7A6000, 0x7A6FFF, "ASIANA IDT", "ASIANA-IDT" }, { 0x0050C2, 0x7A7000, 0x7A7FFF, "Guidance Navigation Limited", "GUIDANCE-NAVIGATION" }, { 0x0050C2, 0x7A8000, 0x7A8FFF, "Integrated Design Tools, Inc.", "INTEGRATED-DESIGN-TOOLS" }, { 0x0050C2, 0x7A9000, 0x7A9FFF, "Delta Tau Data Systems, Inc", "DELTA-TAU-DATA" }, { 0x0050C2, 0x7AA000, 0x7AAFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x7AB000, 0x7ABFFF, "General Microsystems Sdn Bhd", "GENERAL-MICROSYSTEMS-SDN-BHD" }, { 0x0050C2, 0x7AC000, 0x7ACFFF, "IUSA SA DE CV", "IUSA-DE-CV" }, { 0x0050C2, 0x7AD000, 0x7ADFFF, "Turun Turvatekniikka Oy", "TURUN-TURVATEKNIIKKA-OY" }, { 0x0050C2, 0x7AE000, 0x7AEFFF, "Global Tel-Link", "GLOBAL-TEL-LINK" }, { 0x0050C2, 0x7AF000, 0x7AFFFF, "C2 Microsystems", "C2-MICROSYSTEMS" }, { 0x0050C2, 0x7B0000, 0x7B0FFF, "IMP Telekom", "IMP-TELEKOM" }, { 0x0050C2, 0x7B1000, 0x7B1FFF, "ATEME", "ATEME" }, { 0x0050C2, 0x7B2000, 0x7B2FFF, "A.D.I Video technologies", "A-D-I-VIDEO-TECHNOLOGIES" }, { 0x0050C2, 0x7B3000, 0x7B3FFF, "Elmec, Inc.", "ELMEC" }, { 0x0050C2, 0x7B4000, 0x7B4FFF, "T 1 Engineering", "T-1-ENGINEERING" }, { 0x0050C2, 0x7B5000, 0x7B5FFF, "DIT-MCO International", "DIT-MCO" }, { 0x0050C2, 0x7B6000, 0x7B6FFF, "Alstom (Schweiz) AG", "ALSTOM-SCHWEIZ" }, { 0x0050C2, 0x7B7000, 0x7B7FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0x7B8000, 0x7B8FFF, "Design 2000 Pty Ltd", "DESIGN-2000-PTY" }, { 0x0050C2, 0x7B9000, 0x7B9FFF, "Technovare Systems, Inc.", "TECHNOVARE" }, { 0x0050C2, 0x7BA000, 0x7BAFFF, "Infodev Electronic Designers Intl.", "INFODEV-DESIGNERS-INTL" }, { 0x0050C2, 0x7BB000, 0x7BBFFF, "InRay Solutions Ltd.", "INRAY-SOLUTIONS" }, { 0x0050C2, 0x7BC000, 0x7BCFFF, "EIDOS SPA", "EIDOS-SPA" }, { 0x0050C2, 0x7BD000, 0x7BDFFF, "PROMATE ELECTRONIC CO.LTD", "PROMATE" }, { 0x0050C2, 0x7BE000, 0x7BEFFF, "Powerlinx, Inc.", "POWERLINX" }, { 0x0050C2, 0x7BF000, 0x7BFFFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x0050C2, 0x7C0000, 0x7C0FFF, "European Industrial Electronics B.V.", "EUROPEAN-INDUSTRIAL-ELECTRONICS" }, { 0x0050C2, 0x7C1000, 0x7C1FFF, "Primary Integration Encorp LLC", "PRIMARY-INTEGRATION-ENCORP-LLC" }, { 0x0050C2, 0x7C2000, 0x7C2FFF, "DSR Information Technologies Ltd.", "DSR-INFORMATION-TECHNOLOGIES" }, { 0x0050C2, 0x7C3000, 0x7C3FFF, "AST INCORPORATED", "AST-INCORPORATED" }, { 0x0050C2, 0x7C4000, 0x7C4FFF, "MoBaCon", "MOBACON" }, { 0x0050C2, 0x7C5000, 0x7C5FFF, "Venture Research Inc.", "VENTURE-RESEARCH" }, { 0x0050C2, 0x7C6000, 0x7C6FFF, "Lyngdorf Audio Aps", "LYNGDORF-AUDIO-APS" }, { 0x0050C2, 0x7C7000, 0x7C7FFF, "Pyrosequencing AB", "PYROSEQUENCING-AB" }, { 0x0050C2, 0x7C8000, 0x7C8FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x7C9000, 0x7C9FFF, "Bluebell Opticom Limited", "BLUEBELL-OPTICOM" }, { 0x0050C2, 0x7CA000, 0x7CAFFF, "CEDAR Audio Limited", "CEDAR-AUDIO" }, { 0x0050C2, 0x7CB000, 0x7CBFFF, "ViewPlus Technologies, Inc.", "VIEWPLUS-TECHNOLOGIES" }, { 0x0050C2, 0x7CC000, 0x7CCFFF, "SWECO JAPS AB", "SWECO-JAPS-AB" }, { 0x0050C2, 0x7CD000, 0x7CDFFF, "Precision MicroControl Corporation", "PRECISION-MICROCONTROL" }, { 0x0050C2, 0x7CE000, 0x7CEFFF, "AirCell Inc.", "AIRCELL" }, { 0x0050C2, 0x7CF000, 0x7CFFFF, "Emitech Corporation", "EMITECH" }, { 0x0050C2, 0x7D0000, 0x7D0FFF, "Radar Tronic ltd.", "RADAR-TRONIC" }, { 0x0050C2, 0x7D1000, 0x7D1FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x7D2000, 0x7D2FFF, "Bittitalo Oy", "BITTITALO-OY" }, { 0x0050C2, 0x7D3000, 0x7D3FFF, "Highrail Systems Limited", "HIGHRAIL" }, { 0x0050C2, 0x7D4000, 0x7D4FFF, "WR Systems, Ltd.", "WR" }, { 0x0050C2, 0x7D5000, 0x7D5FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0x7D6000, 0x7D6FFF, "International Mining Technologies", "MINING-TECHNOLOGIES" }, { 0x0050C2, 0x7D7000, 0x7D7FFF, "Newtec A/S", "NEWTEC-A/S" }, { 0x0050C2, 0x7D8000, 0x7D8FFF, "InnoScan K/S", "INNOSCAN-K/S" }, { 0x0050C2, 0x7D9000, 0x7D9FFF, "Volumatic Limited", "VOLUMATIC" }, { 0x0050C2, 0x7DA000, 0x7DAFFF, "HTEC Limited", "HTEC" }, { 0x0050C2, 0x7DB000, 0x7DBFFF, "Mueller Elektronik", "MUELLER-ELEKTRONIK" }, { 0x0050C2, 0x7DC000, 0x7DCFFF, "aiXtrusion GmbH", "AIXTRUSION" }, { 0x0050C2, 0x7DD000, 0x7DDFFF, "LS Elektronik AB", "LS-ELEKTRONIK-AB" }, { 0x0050C2, 0x7DE000, 0x7DEFFF, "Cascade Technologies Ltd", "CASCADE-TECHNOLOGIES" }, { 0x0050C2, 0x7DF000, 0x7DFFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x7E0000, 0x7E0FFF, "C&D Technologies, Inc", "C-D-TECHNOLOGIES" }, { 0x0050C2, 0x7E1000, 0x7E1FFF, "Zeltiq Aesthetics, Inc.", "ZELTIQ-AESTHETICS" }, { 0x0050C2, 0x7E2000, 0x7E2FFF, "DIGITROL LTD", "DIGITROL" }, { 0x0050C2, 0x7E3000, 0x7E3FFF, "Progentech Limited", "PROGENTECH" }, { 0x0050C2, 0x7E4000, 0x7E4FFF, "Meta Vision Systems Ltd.", "META-VISION" }, { 0x0050C2, 0x7E5000, 0x7E5FFF, "Nystrom Engineering", "NYSTROM-ENGINEERING" }, { 0x0050C2, 0x7E6000, 0x7E6FFF, "Empirix Italy S.p.A.", "EMPIRIX-ITALY-S-P-A" }, { 0x0050C2, 0x7E7000, 0x7E7FFF, "V2Green, Inc.", "V2GREEN" }, { 0x0050C2, 0x7E8000, 0x7E8FFF, "Mistral Solutions Pvt. Ltd", "MISTRAL-SOLUTIONS-PVT" }, { 0x0050C2, 0x7E9000, 0x7E9FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x7EA000, 0x7EAFFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0x7EB000, 0x7EBFFF, "Sesol Industrial Computer", "SESOL-INDUSTRIAL" }, { 0x0050C2, 0x7EC000, 0x7ECFFF, "Lyngsoe Systems", "LYNGSOE" }, { 0x0050C2, 0x7ED000, 0x7EDFFF, "Genesis Automation Inc.", "GENESIS-AUTOMATION" }, { 0x0050C2, 0x7EE000, 0x7EEFFF, "NH Research", "NH-RESEARCH" }, { 0x0050C2, 0x7EF000, 0x7EFFFF, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x0050C2, 0x7F0000, 0x7F0FFF, "Network Harbor, Inc.", "NETWORK-HARBOR" }, { 0x0050C2, 0x7F1000, 0x7F1FFF, "STUHL Regelsysteme GmbH", "STUHL-REGELSYSTEME" }, { 0x0050C2, 0x7F2000, 0x7F2FFF, "Logotherm Regelsysteme GmbH", "LOGOTHERM-REGELSYSTEME" }, { 0x0050C2, 0x7F3000, 0x7F3FFF, "SOREC", "SOREC" }, { 0x0050C2, 0x7F4000, 0x7F4FFF, "Wireless Cables Inc", "WIRELESS-CABLES" }, { 0x0050C2, 0x7F5000, 0x7F5FFF, "ACE Carwash Systems", "ACE-CARWASH" }, { 0x0050C2, 0x7F6000, 0x7F6FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x7F7000, 0x7F7FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x7F8000, 0x7F8FFF, "Wise Industria de Telecomunicações Ldta.", "WISE-INDUSTRIA-DE-TELECOMUNICAçõES-LDTA" }, { 0x0050C2, 0x7F9000, 0x7F9FFF, "Karl DUNGS GmbH & Co. KG", "KARL-DUNGS" }, { 0x0050C2, 0x7FA000, 0x7FAFFF, "AutomationX GmbH", "AUTOMATIONX" }, { 0x0050C2, 0x7FB000, 0x7FBFFF, "Qtron Pty Ltd", "QTRON-PTY" }, { 0x0050C2, 0x7FC000, 0x7FCFFF, "TIS Dialog LLC", "TIS-DIALOG-LLC" }, { 0x0050C2, 0x7FD000, 0x7FDFFF, "Adeneo", "ADENEO" }, { 0x0050C2, 0x7FE000, 0x7FEFFF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0050C2, 0x7FF000, 0x7FFFFF, "Shenzhen MaiWei Cable TV Equipment CO.,LTD.", "SHENZHEN-MAIWEI-CABLE-TV-EQUIPMENT" }, { 0x0050C2, 0x800000, 0x800FFF, "Delphi Display Systems, Inc.", "DELPHI-DISPLAY" }, { 0x0050C2, 0x801000, 0x801FFF, "JANUS srl", "JANUS-SRL" }, { 0x0050C2, 0x802000, 0x802FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0x803000, 0x803FFF, "dB Broadcast Limited", "DB-BROADCAST" }, { 0x0050C2, 0x804000, 0x804FFF, "SoftSwitching Technologies", "SOFTSWITCHING-TECHNOLOGIES" }, { 0x0050C2, 0x805000, 0x805FFF, "MultimediaLED", "MULTIMEDIALED" }, { 0x0050C2, 0x806000, 0x806FFF, "CET", "CET" }, { 0x0050C2, 0x807000, 0x807FFF, "TECHNOMARK", "TECHNOMARK" }, { 0x0050C2, 0x808000, 0x808FFF, "ITB CompuPhase", "ITB-COMPUPHASE" }, { 0x0050C2, 0x809000, 0x809FFF, "Varma Electronics Oy", "VARMA-ELECTRONICS-OY" }, { 0x0050C2, 0x80A000, 0x80AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x80B000, 0x80BFFF, "Open Video, Inc.", "OPEN-VIDEO" }, { 0x0050C2, 0x80C000, 0x80CFFF, "Luxpert Technologies Co., Ltd.", "LUXPERT-TECHNOLOGIES" }, { 0x0050C2, 0x80D000, 0x80DFFF, "Acube Systems s.r.l.", "ACUBE-S-R-L" }, { 0x0050C2, 0x80E000, 0x80EFFF, "Bruno International Ltd.", "BRUNO" }, { 0x0050C2, 0x80F000, 0x80FFFF, "Selekron Microcontrol s.l.", "SELEKRON-MICROCONTROL-S-L" }, { 0x0050C2, 0x810000, 0x810FFF, "Alphion Corporation", "ALPHION" }, { 0x0050C2, 0x811000, 0x811FFF, "Open System Solutions Limited", "OPEN-SYSTEM-SOLUTIONS" }, { 0x0050C2, 0x812000, 0x812FFF, "Femto SA", "FEMTO" }, { 0x0050C2, 0x813000, 0x813FFF, "Intelleflex Corporation", "INTELLEFLEX" }, { 0x0050C2, 0x814000, 0x814FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0x815000, 0x815FFF, "microC Design SRL", "MICROC-DESIGN-SRL" }, { 0x0050C2, 0x816000, 0x816FFF, "Intelight Inc.", "INTELIGHT" }, { 0x0050C2, 0x817000, 0x817FFF, "Odin TeleSystems Inc", "ODIN-TELESYSTEMS" }, { 0x0050C2, 0x818000, 0x818FFF, "Wireless Value BV", "WIRELESS-VALUE" }, { 0x0050C2, 0x819000, 0x819FFF, "Cabinplant A/S", "CABINPLANT-A/S" }, { 0x0050C2, 0x81A000, 0x81AFFF, "InfoGLOBAL", "INFOGLOBAL" }, { 0x0050C2, 0x81B000, 0x81BFFF, "Brain Tech Co., Ltd", "BRAIN-TECH" }, { 0x0050C2, 0x81C000, 0x81CFFF, "Telcom", "TELCOM" }, { 0x0050C2, 0x81D000, 0x81DFFF, "IT SALUX CO., LTD.", "IT-SALUX" }, { 0x0050C2, 0x81E000, 0x81EFFF, "Channelot Ltd.", "CHANNELOT" }, { 0x0050C2, 0x81F000, 0x81FFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x820000, 0x820FFF, "TESCAN, s.r.o.", "TESCAN-S-R-O" }, { 0x0050C2, 0x821000, 0x821FFF, "MISCO Refractometer", "MISCO-REFRACTOMETER" }, { 0x0050C2, 0x822000, 0x822FFF, "Winner Technology Co, Ltd.", "WINNER" }, { 0x0050C2, 0x823000, 0x823FFF, "Robot Visual Systems GmbH", "ROBOT-VISUAL" }, { 0x0050C2, 0x824000, 0x824FFF, "SMT d.o.o.", "SMT-D-O-O" }, { 0x0050C2, 0x825000, 0x825FFF, "Funkwerk Information Technologies Karlsfeld GmbH", "FUNKWERK-INFORMATION-TECHNOLOGIES-KARLSFELD" }, { 0x0050C2, 0x826000, 0x826FFF, "HEWI Heinrich Wilke GmbH", "HEWI-HEINRICH-WILKE" }, { 0x0050C2, 0x827000, 0x827FFF, "Enero Solutions inc.", "ENERO-SOLUTIONS" }, { 0x0050C2, 0x828000, 0x828FFF, "SLICAN sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x0050C2, 0x829000, 0x829FFF, "Intellectronika", "INTELLECTRONIKA" }, { 0x0050C2, 0x82A000, 0x82AFFF, "VDC Display Systems", "VDC-DISPLAY" }, { 0x0050C2, 0x82B000, 0x82BFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x82C000, 0x82CFFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0x82D000, 0x82DFFF, "Elmec, Inc.", "ELMEC" }, { 0x0050C2, 0x82E000, 0x82EFFF, "LogiCom GmbH", "LOGICOM" }, { 0x0050C2, 0x82F000, 0x82FFFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x0050C2, 0x830000, 0x830FFF, "CompuShop Services LLC", "COMPUSHOP-SERVICES-LLC" }, { 0x0050C2, 0x831000, 0x831FFF, "St Jude Medical, Inc.", "ST-JUDE-MEDICAL" }, { 0x0050C2, 0x832000, 0x832FFF, "S1nn GmbH & Co. KG", "S1NN" }, { 0x0050C2, 0x833000, 0x833FFF, "LaserLinc, Inc.", "LASERLINC" }, { 0x0050C2, 0x834000, 0x834FFF, "ANTEK GmbH", "ANTEK" }, { 0x0050C2, 0x835000, 0x835FFF, "Communications Laboratories Inc", "COMMUNICATION-LABORATORIES" }, { 0x0050C2, 0x836000, 0x836FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x837000, 0x837FFF, "ID-KARTA s.r.o.", "ID-KARTA-S-R-O" }, { 0x0050C2, 0x838000, 0x838FFF, "T PROJE MUHENDISLIK DIS. TIC. LTD. STI.", "T-PROJE-MUHENDISLIK-DIS-TIC-STI" }, { 0x0050C2, 0x839000, 0x839FFF, "IMS Röntgensysteme GmbH", "IMS-RöNTGENSYSTEME" }, { 0x0050C2, 0x83A000, 0x83AFFF, "Syr-Tec Engineering & Marketing", "SYR-TEC-ENGINEERING-MARKETING" }, { 0x0050C2, 0x83B000, 0x83BFFF, "O. Bay AG", "O-BAY" }, { 0x0050C2, 0x83C000, 0x83CFFF, "hema electronic GmbH", "HEMA" }, { 0x0050C2, 0x83D000, 0x83DFFF, "beroNet GmbH", "BERONET" }, { 0x0050C2, 0x83E000, 0x83EFFF, "KPE spol. s r.o.", "KPE-SPOL-S-R-O" }, { 0x0050C2, 0x83F000, 0x83FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x840000, 0x840FFF, "Residential Control Systems", "RESIDENTIAL-CONTROL" }, { 0x0050C2, 0x841000, 0x841FFF, "Connection Electronics Ltd.", "CONNECTION-ELECTRONICS" }, { 0x0050C2, 0x842000, 0x842FFF, "Quantum Controls BV", "QUANTUM-CONTROLS" }, { 0x0050C2, 0x843000, 0x843FFF, "Xtensor Systems Inc.", "XTENSOR" }, { 0x0050C2, 0x844000, 0x844FFF, "Prodigy Electronics Limited", "PRODIGY-ELECTRONICS" }, { 0x0050C2, 0x845000, 0x845FFF, "VisualSonics Inc.", "VISUALSONICS" }, { 0x0050C2, 0x846000, 0x846FFF, "ESP-Planning Co.", "ESP-PLANNING" }, { 0x0050C2, 0x847000, 0x847FFF, "Lars Morich Kommunikationstechnik GmbH", "LARS-MORICH-KOMMUNIKATIONSTECHNIK" }, { 0x0050C2, 0x848000, 0x848FFF, "DASA ROBOT Co., Ltd.", "DASA-ROBOT" }, { 0x0050C2, 0x849000, 0x849FFF, "Design Analysis Associates, Inc.", "DESIGN-ANALYSIS-ASSOCIATES" }, { 0x0050C2, 0x84A000, 0x84AFFF, "Keystone Electronic Solutions", "KEYSTONE-SOLUTIONS" }, { 0x0050C2, 0x84B000, 0x84BFFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0x84C000, 0x84CFFF, "Performance Motion Devices", "PERFORMANCE-MOTION-DEVICES" }, { 0x0050C2, 0x84D000, 0x84DFFF, "BMTI", "BMTI" }, { 0x0050C2, 0x84E000, 0x84EFFF, "DRACO SYSTEMS", "DRACO" }, { 0x0050C2, 0x84F000, 0x84FFFF, "Gamber-Johnson LLC", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0x850000, 0x850FFF, "K.K. Rocky", "K-K-ROCKY" }, { 0x0050C2, 0x851000, 0x851FFF, "SPJ Embedded Technologies Pvt. Ltd.", "SPJ-EMBEDDED-TECHNOLOGIES-PVT" }, { 0x0050C2, 0x852000, 0x852FFF, "eInfochips Ltd.", "EINFOCHIPS" }, { 0x0050C2, 0x853000, 0x853FFF, "Ettus Research LLC", "ETTUS-RESEARCH-LLC" }, { 0x0050C2, 0x854000, 0x854FFF, "Ratioplast-Optoelectronics GmbH", "RATIOPLAST-OPTOELECTRONICS" }, { 0x0050C2, 0x855000, 0x855FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x856000, 0x856FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0x857000, 0x857FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x858000, 0x858FFF, "Wireless Acquisition LLC", "WIRELESS-ACQUISITION-LLC" }, { 0x0050C2, 0x859000, 0x859FFF, "Nuvation", "NUVATION" }, { 0x0050C2, 0x85A000, 0x85AFFF, "ART s.r.l.", "ART-S-R-L" }, { 0x0050C2, 0x85B000, 0x85BFFF, "Boreste", "BORESTE" }, { 0x0050C2, 0x85C000, 0x85CFFF, "B S E", "B-S-E" }, { 0x0050C2, 0x85D000, 0x85DFFF, "Ing. Knauseder Mechatronik GmbH", "ING-KNAUSEDER-MECHATRONIK" }, { 0x0050C2, 0x85E000, 0x85EFFF, "Radiometer Medical ApS", "RADIOMETER-MEDICAL-APS" }, { 0x0050C2, 0x85F000, 0x85FFFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0x860000, 0x860FFF, "Eutron S.p.A.", "EUTRON-S-P-A" }, { 0x0050C2, 0x861000, 0x861FFF, "Grantronics Pty Ltd", "GRANTRONICS-PTY" }, { 0x0050C2, 0x862000, 0x862FFF, "Elsys AG", "ELSYS" }, { 0x0050C2, 0x863000, 0x863FFF, "Advanced Technology Solutions", "ADVANCED-SOLUTIONS" }, { 0x0050C2, 0x864000, 0x864FFF, "ATG Automatisierungstechnik GERA GmbH", "ATG-AUTOMATISIERUNGSTECHNIK-GERA" }, { 0x0050C2, 0x865000, 0x865FFF, "Persy Control Services B.v.", "PERSY-CONTROL-SERVICES" }, { 0x0050C2, 0x866000, 0x866FFF, "Saia Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x867000, 0x867FFF, "Syntronics", "SYNTRONICS" }, { 0x0050C2, 0x868000, 0x868FFF, "Aethon, Inc.", "AETHON" }, { 0x0050C2, 0x869000, 0x869FFF, "Funkwerk plettac electronic GmbH", "FUNKWERK-PLETTAC" }, { 0x0050C2, 0x86A000, 0x86AFFF, "USM Systems, Ltd", "USM" }, { 0x0050C2, 0x86B000, 0x86BFFF, "OMB Sistemas Electronicos S.A.", "OMB-SISTEMAS-ELECTRONICOS" }, { 0x0050C2, 0x86C000, 0x86CFFF, "Condigi Televagt A/S", "CONDIGI-TELEVAGT-A/S" }, { 0x0050C2, 0x86D000, 0x86DFFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0x86E000, 0x86EFFF, "HANYANG ELECTRIC CP., LTD", "HANYANG-ELECTRIC-CP" }, { 0x0050C2, 0x86F000, 0x86FFFF, "b-plus GmbH", "B-PLUS" }, { 0x0050C2, 0x870000, 0x870FFF, "LOGEL S.R.L.", "LOGEL-S-R-L" }, { 0x0050C2, 0x871000, 0x871FFF, "R-S-I Elektrotechnik GmbH & Co. KG", "R-S-I-ELEKTROTECHNIK" }, { 0x0050C2, 0x872000, 0x872FFF, "Oliotalo - Objecthouse Oy", "OLIOTALO---OBJECTHOUSE-OY" }, { 0x0050C2, 0x873000, 0x873FFF, "XRONET Corporation", "XRONET" }, { 0x0050C2, 0x874000, 0x874FFF, "Arcos Technologies Ltd.", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0x875000, 0x875FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x876000, 0x876FFF, "Privatquelle Gruber GmbH & CO KG", "PRIVATQUELLE-GRUBER" }, { 0x0050C2, 0x877000, 0x877FFF, "Motion Analysis Corp", "MOTION-ANALYSIS" }, { 0x0050C2, 0x878000, 0x878FFF, "Acoustic Research Laboratories Pty Ltd", "ACOUSTIC-RESEARCH-LABORATORIES-PTY" }, { 0x0050C2, 0x879000, 0x879FFF, "MILESYS", "MILESYS" }, { 0x0050C2, 0x87A000, 0x87AFFF, "Spectrum Management, LC", "SPECTRUM-MANAGEMENT-LC" }, { 0x0050C2, 0x87B000, 0x87BFFF, "UAVNavigation S.L.", "UAVNAVIGATION-S-L" }, { 0x0050C2, 0x87C000, 0x87CFFF, "Arcontia AB", "ARCONTIA-AB" }, { 0x0050C2, 0x87D000, 0x87DFFF, "AT&T Government Solutions", "AT-T-GOVERNMENT-SOLUTIONS" }, { 0x0050C2, 0x87E000, 0x87EFFF, "SCM PRODUCTS, INC.", "SCM-PRODUCTS" }, { 0x0050C2, 0x87F000, 0x87FFFF, "Optoelettronica Italia S.r.l.", "OPTOELETTRONICA-ITALIA-S-R-L" }, { 0x0050C2, 0x880000, 0x880FFF, "Creation Technologies Chicago", "CREATION-TECHNOLOGIES-CHICAGO" }, { 0x0050C2, 0x881000, 0x881FFF, "InnoTrans Communications, Inc.", "INNOTRANS-COMMUNICATION" }, { 0x0050C2, 0x882000, 0x882FFF, "WARECUBE,INC.", "WARECUBE" }, { 0x0050C2, 0x883000, 0x883FFF, "Neocontrol Soluções em Automação", "NEOCONTROL-SOLUçõES-EM-AUTOMAçãO" }, { 0x0050C2, 0x884000, 0x884FFF, "IP Thinking A/S", "IP-THINKING-A/S" }, { 0x0050C2, 0x885000, 0x885FFF, "OOO NTK IMOS", "OOO-NTK-IMOS" }, { 0x0050C2, 0x886000, 0x886FFF, "Transas Scandinavia AB", "TRANSAS-SCANDINAVIA-AB" }, { 0x0050C2, 0x887000, 0x887FFF, "Inventis Technology Pty Limited", "INVENTIS-PTY" }, { 0x0050C2, 0x888000, 0x888FFF, "IADEA CORPORATION", "IADEA" }, { 0x0050C2, 0x889000, 0x889FFF, "ACS MOTION CONTROL", "ACS-MOTION-CONTROL" }, { 0x0050C2, 0x88A000, 0x88AFFF, "Continental Electronics Corp.", "CONTINENTAL-ELECTRONICS" }, { 0x0050C2, 0x88B000, 0x88BFFF, "Hollis Electronics Company LLC", "HOLLIS-ELECTRONICS-COMPANY-LLC" }, { 0x0050C2, 0x88C000, 0x88CFFF, "Z-App Systems", "Z-APP" }, { 0x0050C2, 0x88D000, 0x88DFFF, "L3 Communications Nova Engineering", "L3-COMMUNICATION-NOVA-ENGINEERING" }, { 0x0050C2, 0x88E000, 0x88EFFF, "Cardinal Scale Mfg Co", "CARDINAL-SCALE-MFG" }, { 0x0050C2, 0x88F000, 0x88FFFF, "Keynote SIGOS GmbH", "KEYNOTE-SIGOS" }, { 0x0050C2, 0x890000, 0x890FFF, "BAE Systems Hägglunds AB", "BAE-HäGGLUNDS-AB" }, { 0x0050C2, 0x891000, 0x891FFF, "Admiral Secure Products, Ltd.", "ADMIRAL-SECURE-PRODUCTS" }, { 0x0050C2, 0x892000, 0x892FFF, "Trakce a.s.", "TRAKCE-A-S" }, { 0x0050C2, 0x893000, 0x893FFF, "EIZO Technologies GmbH", "EIZO-TECHNOLOGIES" }, { 0x0050C2, 0x894000, 0x894FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x895000, 0x895FFF, "Marine Communications Limited", "MARINE-COMMUNICATION" }, { 0x0050C2, 0x896000, 0x896FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0x897000, 0x897FFF, "ODF Optronics, Inc.", "ODF-OPTRONICS" }, { 0x0050C2, 0x898000, 0x898FFF, "Veeco Process Equipment, Inc.", "VEECO-PROCESS-EQUIPMENT" }, { 0x0050C2, 0x899000, 0x899FFF, "Inico Technologies Ltd.", "INICO-TECHNOLOGIES" }, { 0x0050C2, 0x89A000, 0x89AFFF, "Neptune Technology Group, Inc.", "NEPTUNE-GROUP" }, { 0x0050C2, 0x89B000, 0x89BFFF, "Sensata Technologies, Inc.", "SENSATA-TECHNOLOGIES" }, { 0x0050C2, 0x89C000, 0x89CFFF, "Mediana", "MEDIANA" }, { 0x0050C2, 0x89D000, 0x89DFFF, "Systemtechnik GmbH", "SYSTEMTECHNIK" }, { 0x0050C2, 0x89E000, 0x89EFFF, "Broadcast Electronics", "BROADCAST-ELECTRONICS" }, { 0x0050C2, 0x89F000, 0x89FFFF, "Datalink Technologies Gateways Inc.", "DATALINK-TECHNOLOGIES-GATEWAYS" }, { 0x0050C2, 0x8A0000, 0x8A0FFF, "Specialized Communications Corp.", "SPECIALIZED-COMMUNICATION" }, { 0x0050C2, 0x8A1000, 0x8A1FFF, "Intune Networks Limited", "INTUNE-NETWORKS" }, { 0x0050C2, 0x8A2000, 0x8A2FFF, "UAVISION Engenharia de Sistemas", "UAVISION-ENGENHARIA-DE-SISTEMAS" }, { 0x0050C2, 0x8A3000, 0x8A3FFF, "RTW GmbH & Co.KG", "RTW" }, { 0x0050C2, 0x8A4000, 0x8A4FFF, "BALOGH T.A.G Corporation", "BALOGH-T-A-G" }, { 0x0050C2, 0x8A5000, 0x8A5FFF, "Mocon, Inc.", "MOCON" }, { 0x0050C2, 0x8A6000, 0x8A6FFF, "SELCO", "SELCO" }, { 0x0050C2, 0x8A7000, 0x8A7FFF, "PIXEYE LTD", "PIXEYE" }, { 0x0050C2, 0x8A8000, 0x8A8FFF, "ALTEK ELECTRONICS", "ALTEK-ELECTRONICS" }, { 0x0050C2, 0x8A9000, 0x8A9FFF, "Intelligent Security Systems", "INTELLIGENT-SECURITY" }, { 0x0050C2, 0x8AA000, 0x8AAFFF, "ATS Elektronik GmbH", "ATS-ELEKTRONIK" }, { 0x0050C2, 0x8AB000, 0x8ABFFF, "Nanomotion Ltd.", "NANOMOTION" }, { 0x0050C2, 0x8AC000, 0x8ACFFF, "Telsa s.r.l", "TELSA-S-R-L" }, { 0x0050C2, 0x8AD000, 0x8ADFFF, "Thales Communications, Inc", "THALES-COMMUNICATION" }, { 0x0050C2, 0x8AE000, 0x8AEFFF, "DESARROLLO DE SISTEMAS INTEGRADOS DE CONTROL S.A.", "DESARROLLO-DE-SISTEMAS-INTEGRADOS-DE-CONTROL" }, { 0x0050C2, 0x8AF000, 0x8AFFFF, "Xelerated", "XELERATED" }, { 0x0050C2, 0x8B0000, 0x8B0FFF, "BK Innovation, Inc.", "BK-INNOVATION" }, { 0x0050C2, 0x8B1000, 0x8B1FFF, "RingCube Technologies, Inc.", "RINGCUBE-TECHNOLOGIES" }, { 0x0050C2, 0x8B2000, 0x8B2FFF, "SERVAIND SA.", "SERVAIND" }, { 0x0050C2, 0x8B3000, 0x8B3FFF, "VTQ Videtronik GmbH", "VTQ-VIDETRONIK" }, { 0x0050C2, 0x8B4000, 0x8B4FFF, "Sandar Telecast AS", "SANDAR-TELECAST-AS" }, { 0x0050C2, 0x8B5000, 0x8B5FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x8B6000, 0x8B6FFF, "Shadrinskiy Telefonny Zavod", "SHADRINSKIY-TELEFONNY-ZAVOD" }, { 0x0050C2, 0x8B7000, 0x8B7FFF, "Calnex Solutions Limited", "CALNEX-SOLUTIONS" }, { 0x0050C2, 0x8B8000, 0x8B8FFF, "DSS Networks, Inc.", "DSS-NETWORKS" }, { 0x0050C2, 0x8B9000, 0x8B9FFF, "ACD Elektronik Gmbh", "ACD-ELEKTRONIK" }, { 0x0050C2, 0x8BA000, 0x8BAFFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0x8BB000, 0x8BBFFF, "smtag international ag", "SMTAG" }, { 0x0050C2, 0x8BC000, 0x8BCFFF, "Honeywell Sensotec", "HONEYWELL-SENSOTEC" }, { 0x0050C2, 0x8BD000, 0x8BDFFF, "Matrix Switch Corporation", "MATRIX-SWITCH" }, { 0x0050C2, 0x8BE000, 0x8BEFFF, "The Pennsylvania State University", "THE-PENNSYLVANIA-STATE-UNIVERSITY" }, { 0x0050C2, 0x8BF000, 0x8BFFFF, "ARISTO Graphic Systeme GmbH & Co. KG", "ARISTO-GRAPHIC-SYSTEME" }, { 0x0050C2, 0x8C0000, 0x8C0FFF, "S.C.E. s.r.l.", "S-C-E-S-R-L" }, { 0x0050C2, 0x8C1000, 0x8C1FFF, "Heraeus Noblelight GmbH", "HERAEUS-NOBLELIGHT" }, { 0x0050C2, 0x8C2000, 0x8C2FFF, "Access Control Systems JSC", "ACCESS-CONTROL-JSC" }, { 0x0050C2, 0x8C3000, 0x8C3FFF, "Byte Paradigm", "BYTE-PARADIGM" }, { 0x0050C2, 0x8C4000, 0x8C4FFF, "Soldig Industria e Comercio de Equipamentos Eletronicos LTDA", "SOLDIG-INDUSTRIA-E-COMERCIO-DE-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0x0050C2, 0x8C5000, 0x8C5FFF, "Vortex Engineering pvt ltd", "VORTEX-ENGINEERING-PVT" }, { 0x0050C2, 0x8C6000, 0x8C6FFF, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0x8C7000, 0x8C7FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x8C8000, 0x8C8FFF, "Pumatronix Equipamentos Eletrônicos Ltda", "PUMATRONIX-EQUIPAMENTOS-ELETRôNICOS-LTDA" }, { 0x0050C2, 0x8C9000, 0x8C9FFF, "A+S Aktuatorik und Sensorik GmbH", "A+S-AKTUATORIK-UND-SENSORIK" }, { 0x0050C2, 0x8CA000, 0x8CAFFF, "Altair semiconductor Ltd", "ALTAIR-SEMICONDUCTOR" }, { 0x0050C2, 0x8CB000, 0x8CBFFF, "Beonic Corporation", "BEONIC" }, { 0x0050C2, 0x8CC000, 0x8CCFFF, "LyconSys GmbH & Co.KG", "LYCONSYS" }, { 0x0050C2, 0x8CD000, 0x8CDFFF, "Cambridge Sound Management, LLC", "CAMBRIDGE-SOUND-MANAGEMENT-LLC" }, { 0x0050C2, 0x8CE000, 0x8CEFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x8CF000, 0x8CFFFF, "GigaLinx Ltd.", "GIGALINX" }, { 0x0050C2, 0x8D0000, 0x8D0FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x8D1000, 0x8D1FFF, "Bachmann Monitoring GmbH", "BACHMANN-MONITORING" }, { 0x0050C2, 0x8D2000, 0x8D2FFF, "TTi Ltd", "TTI" }, { 0x0050C2, 0x8D3000, 0x8D3FFF, "IFAM GmbH", "IFAM" }, { 0x0050C2, 0x8D4000, 0x8D4FFF, "Internet Protocolo Lógica SL", "INTERNET-PROTOCOLO-LóGICA-SL" }, { 0x0050C2, 0x8D5000, 0x8D5FFF, "Peek Traffic Corp", "PEEK-TRAFFIC" }, { 0x0050C2, 0x8D6000, 0x8D6FFF, "UltraVision Security Systems, Inc.", "ULTRAVISION-SECURITY" }, { 0x0050C2, 0x8D7000, 0x8D7FFF, "Polygon Informatics Ltd.", "POLYGON-INFORMATICS" }, { 0x0050C2, 0x8D8000, 0x8D8FFF, "Array Technologies Inc", "ARRAY-TECHNOLOGIES" }, { 0x0050C2, 0x8D9000, 0x8D9FFF, "Industrial Control and Communication Limited", "INDUSTRIAL-CONTROL-AND-COMMUNICATION" }, { 0x0050C2, 0x8DA000, 0x8DAFFF, "DOCUTEMP, INC", "DOCUTEMP" }, { 0x0050C2, 0x8DB000, 0x8DBFFF, "DCOM Network Technology (Pty) Ltd", "DCOM-NETWORK-PTY" }, { 0x0050C2, 0x8DC000, 0x8DCFFF, "Frame Systems Limited", "FRAME" }, { 0x0050C2, 0x8DD000, 0x8DDFFF, "GIMCON", "GIMCON" }, { 0x0050C2, 0x8DE000, 0x8DEFFF, "Coherix, Inc", "COHERIX" }, { 0x0050C2, 0x8DF000, 0x8DFFFF, "Dipl.-Ing. W. Nophut GmbH", "DIPL--ING-W-NOPHUT" }, { 0x0050C2, 0x8E0000, 0x8E0FFF, "Shenzhen Pennda Technologies Co., Ltd.", "SHENZHEN-PENNDA-TECHNOLOGIES" }, { 0x0050C2, 0x8E1000, 0x8E1FFF, "Deutscher Weterdienst", "DEUTSCHER-WETERDIENST" }, { 0x0050C2, 0x8E2000, 0x8E2FFF, "Wireless Cables Inc", "WIRELESS-CABLES" }, { 0x0050C2, 0x8E3000, 0x8E3FFF, "bioMérieux Italia S.p.A.", "BIOMéRIEUX-ITALIA-S-P-A" }, { 0x0050C2, 0x8E4000, 0x8E4FFF, "MaCaPS International Limited", "MACAPS" }, { 0x0050C2, 0x8E5000, 0x8E5FFF, "Berthel GmbH", "BERTHEL" }, { 0x0050C2, 0x8E6000, 0x8E6FFF, "Sandel Avionics, Inc.", "SANDEL-AVIONICS" }, { 0x0050C2, 0x8E7000, 0x8E7FFF, "MKT Systemtechnik", "MKT-SYSTEMTECHNIK" }, { 0x0050C2, 0x8E8000, 0x8E8FFF, "Friedrich Kuhnt GmbH", "FRIEDRICH-KUHNT" }, { 0x0050C2, 0x8E9000, 0x8E9FFF, "UNIDATA", "UNIDATA" }, { 0x0050C2, 0x8EA000, 0x8EAFFF, "ATEME", "ATEME" }, { 0x0050C2, 0x8EB000, 0x8EBFFF, "C-COM Satellite Systems Inc.", "C-COM-SATELLITE" }, { 0x0050C2, 0x8EC000, 0x8ECFFF, "Balfour Beatty Rail GmbH", "BALFOUR-BEATTY-RAIL" }, { 0x0050C2, 0x8ED000, 0x8EDFFF, "AT-Automation Technology GmbH", "AT-AUTOMATION" }, { 0x0050C2, 0x8EE000, 0x8EEFFF, "PCSC", "PCSC" }, { 0x0050C2, 0x8EF000, 0x8EFFFF, "Technologies Sensio Inc", "TECHNOLOGIES-SENSIO" }, { 0x0050C2, 0x8F0000, 0x8F0FFF, "Xentras Communications", "XENTRAS-COMMUNICATION" }, { 0x0050C2, 0x8F1000, 0x8F1FFF, "Detection Technologies Ltd.", "DETECTION-TECHNOLOGIES" }, { 0x0050C2, 0x8F2000, 0x8F2FFF, "Schneider Electric GmbH", "SCHNEIDER-ELECTRIC" }, { 0x0050C2, 0x8F3000, 0x8F3FFF, "Curtis Door Systems Inc", "CURTIS-DOOR" }, { 0x0050C2, 0x8F4000, 0x8F4FFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0x8F5000, 0x8F5FFF, "tec5 AG", "TEC5" }, { 0x0050C2, 0x8F6000, 0x8F6FFF, "K-MAC Corp.", "K-MAC" }, { 0x0050C2, 0x8F7000, 0x8F7FFF, "TGE Co., Ltd.", "TGE" }, { 0x0050C2, 0x8F8000, 0x8F8FFF, "RMSD LTD", "RMSD" }, { 0x0050C2, 0x8F9000, 0x8F9FFF, "Honeywell International", "HONEYWELL" }, { 0x0050C2, 0x8FA000, 0x8FAFFF, "TELIUM s.c.", "TELIUM-S-C" }, { 0x0050C2, 0x8FB000, 0x8FBFFF, "Alfred Kuhse GmbH", "ALFRED-KUHSE" }, { 0x0050C2, 0x8FC000, 0x8FCFFF, "Symetrics Industries", "SYMETRICS-INDUSTRIES" }, { 0x0050C2, 0x8FD000, 0x8FDFFF, "Sindoma Müh Mim Ãnþ Elk San Tic Ltd.", "SINDOMA-MüH-MIM-ÃNþ-ELK-SAN-TIC" }, { 0x0050C2, 0x8FE000, 0x8FEFFF, "Cross Country Systems AB", "CROSS-COUNTRY-AB" }, { 0x0050C2, 0x8FF000, 0x8FFFFF, "Luceat", "LUCEAT" }, { 0x0050C2, 0x900000, 0x900FFF, "Magor Communications Corp", "MAGOR-COMMUNICATION" }, { 0x0050C2, 0x901000, 0x901FFF, "Research Applications Incorp", "RESEARCH-APPLICATIONS-INCORP" }, { 0x0050C2, 0x902000, 0x902FFF, "China Railway Signal & Communication Corp.", "CHINA-RAILWAY-SIGNAL-COMMUNICATION" }, { 0x0050C2, 0x903000, 0x903FFF, "EcoAxis Systems Pvt. Ltd.", "ECOAXIS-PVT" }, { 0x0050C2, 0x904000, 0x904FFF, "R2Sonic, LLC", "R2SONIC-LLC" }, { 0x0050C2, 0x905000, 0x905FFF, "Link Communications, Inc", "LINK-COMMUNICATION" }, { 0x0050C2, 0x906000, 0x906FFF, "Gidel", "GIDEL" }, { 0x0050C2, 0x907000, 0x907FFF, "Cristal Controles Ltee", "CRISTAL-CONTROLES-LTEE" }, { 0x0050C2, 0x908000, 0x908FFF, "Codex Digital Ltd", "CODEX-DIGITAL" }, { 0x0050C2, 0x909000, 0x909FFF, "Elisra Electronic Systems", "ELISRA" }, { 0x0050C2, 0x90A000, 0x90AFFF, "Board Level Limited", "BOARD-LEVEL" }, { 0x0050C2, 0x90B000, 0x90BFFF, "E.ON ES Sverige AB", "E-ON-ES-SVERIGE-AB" }, { 0x0050C2, 0x90C000, 0x90CFFF, "LSS GmbH", "LSS" }, { 0x0050C2, 0x90D000, 0x90DFFF, "EVK DI Kerschhaggl GmbH", "EVK-DI-KERSCHHAGGL" }, { 0x0050C2, 0x90E000, 0x90EFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x90F000, 0x90FFFF, "INTEGRA Biosciences AG", "INTEGRA-BIOSCIENCES" }, { 0x0050C2, 0x910000, 0x910FFF, "Autotank AB", "AUTOTANK-AB" }, { 0x0050C2, 0x911000, 0x911FFF, "Vapor Rail", "VAPOR-RAIL" }, { 0x0050C2, 0x912000, 0x912FFF, "ASSET InterTech, Inc.", "ASSET-INTERTECH" }, { 0x0050C2, 0x913000, 0x913FFF, "Selex Sensors & Airborne Systems", "SELEX-SENSORS-AIRBORNE" }, { 0x0050C2, 0x914000, 0x914FFF, "IO-Connect", "IO-CONNECT" }, { 0x0050C2, 0x915000, 0x915FFF, "Verint Systems Ltd.", "VERINT" }, { 0x0050C2, 0x916000, 0x916FFF, "CHK GridSense P/L", "CHK-GRIDSENSE-P/L" }, { 0x0050C2, 0x917000, 0x917FFF, "CIRTEM", "CIRTEM" }, { 0x0050C2, 0x918000, 0x918FFF, "Design Lightning Corp", "DESIGN-LIGHTNING" }, { 0x0050C2, 0x919000, 0x919FFF, "AHV Systems, Inc.", "AHV" }, { 0x0050C2, 0x91A000, 0x91AFFF, "Xtone Networks", "XTONE-NETWORKS" }, { 0x0050C2, 0x91B000, 0x91BFFF, "Embedded Data Systems, LLC", "EMBEDDED-DATA-LLC" }, { 0x0050C2, 0x91C000, 0x91CFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0x91D000, 0x91DFFF, "Rosendahl Studiotechnik GmbH", "ROSENDAHL-STUDIOTECHNIK" }, { 0x0050C2, 0x91E000, 0x91EFFF, "Automation Tec", "AUTOMATION-TEC" }, { 0x0050C2, 0x91F000, 0x91FFFF, "2NCOMM DESIGN SRL", "2NCOMM-DESIGN-SRL" }, { 0x0050C2, 0x920000, 0x920FFF, "Rogue Engineering Inc.", "ROGUE-ENGINEERING" }, { 0x0050C2, 0x921000, 0x921FFF, "iQue RFID Technologies BV", "IQUE-RFID-TECHNOLOGIES" }, { 0x0050C2, 0x922000, 0x922FFF, "Metrum Sweden AB", "METRUM-SWEDEN-AB" }, { 0x0050C2, 0x923000, 0x923FFF, "Amicus Wireless", "AMICUS-WIRELESS" }, { 0x0050C2, 0x924000, 0x924FFF, "Link Electric & Safety Control Co.", "LINK-ELECTRIC-SAFETY-CONTROL" }, { 0x0050C2, 0x925000, 0x925FFF, "PHB Eletronica Ltda.", "PHB-ELETRONICA-LTDA" }, { 0x0050C2, 0x926000, 0x926FFF, "DITEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0x927000, 0x927FFF, "ATIS group s.r.o.", "ATIS-GROUP-S-R-O" }, { 0x0050C2, 0x928000, 0x928FFF, "Cinetix GmbH", "CINETIX" }, { 0x0050C2, 0x929000, 0x929FFF, "Flight Deck Resources", "FLIGHT-DECK-RESOURCES" }, { 0x0050C2, 0x92A000, 0x92AFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x92B000, 0x92BFFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x0050C2, 0x92C000, 0x92CFFF, "Exatrol Corporation", "EXATROL" }, { 0x0050C2, 0x92D000, 0x92DFFF, "APProSoftware.com", "APPROSOFTWARE-COM" }, { 0x0050C2, 0x92E000, 0x92EFFF, "Goanna Technologies Pty Ltd", "GOANNA-TECHNOLOGIES-PTY" }, { 0x0050C2, 0x92F000, 0x92FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x930000, 0x930FFF, "NETA Elektronik AS", "NETA-ELEKTRONIK-AS" }, { 0x0050C2, 0x931000, 0x931FFF, "Korea Telecom Internet Solutions (KTIS)", "KOREA-TELECOM-INTERNET-SOLUTIONS-KTIS" }, { 0x0050C2, 0x932000, 0x932FFF, "SMAVIS Inc.", "SMAVIS" }, { 0x0050C2, 0x933000, 0x933FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x934000, 0x934FFF, "Xilar Corp.", "XILAR" }, { 0x0050C2, 0x935000, 0x935FFF, "Image Video", "IMAGE-VIDEO" }, { 0x0050C2, 0x936000, 0x936FFF, "Margaritis Engineering", "MARGARITIS-ENGINEERING" }, { 0x0050C2, 0x937000, 0x937FFF, "BigBear", "BIGBEAR" }, { 0x0050C2, 0x938000, 0x938FFF, "Postec Data Systems Ltd", "POSTEC-DATA" }, { 0x0050C2, 0x939000, 0x939FFF, "Mosaic Dynamic Solutions", "MOSAIC-DYNAMIC-SOLUTIONS" }, { 0x0050C2, 0x93A000, 0x93AFFF, "ALPHATRONICS nv", "ALPHATRONICS-NV" }, { 0x0050C2, 0x93B000, 0x93BFFF, "Reliatronics Inc.", "RELIATRONICS" }, { 0x0050C2, 0x93C000, 0x93CFFF, "FractureCode Corporation", "FRACTURECODE" }, { 0x0050C2, 0x93D000, 0x93DFFF, "Lighting Science Group Corporation", "LIGHTING-SCIENCE-GROUP" }, { 0x0050C2, 0x93E000, 0x93EFFF, "RCS Communication Test Systems Ltd.", "RCS-COMMUNICATION-TEST" }, { 0x0050C2, 0x93F000, 0x93FFFF, "TSB Solutions Inc.", "TSB-SOLUTIONS" }, { 0x0050C2, 0x940000, 0x940FFF, "Phitek Systems Ltd.", "PHITEK" }, { 0x0050C2, 0x941000, 0x941FFF, "Rolbit", "ROLBIT" }, { 0x0050C2, 0x942000, 0x942FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x943000, 0x943FFF, "QuanZhou TDX Electronics Co., Ltd.", "QUANZHOU-TDX-ELECTRONICS" }, { 0x0050C2, 0x944000, 0x944FFF, "Wireonair A/S", "WIREONAIR-A/S" }, { 0x0050C2, 0x945000, 0x945FFF, "Ex-i Flow Measurement Ltd.", "EX-I-FLOW-MEASUREMENT" }, { 0x0050C2, 0x946000, 0x946FFF, "MEGWARE Computer GmbH", "MEGWARE" }, { 0x0050C2, 0x947000, 0x947FFF, "IMEXHIGHWAY cvba", "IMEXHIGHWAY-CVBA" }, { 0x0050C2, 0x948000, 0x948FFF, "ELECTRONIA", "ELECTRONIA" }, { 0x0050C2, 0x949000, 0x949FFF, "taskit GmbH", "TASKIT" }, { 0x0050C2, 0x94A000, 0x94AFFF, "TRUMEDIA TECHNOLOGIES", "TRUMEDIA-TECHNOLOGIES" }, { 0x0050C2, 0x94B000, 0x94BFFF, "Piller engineering Ltd.", "PILLER-ENGINEERING" }, { 0x0050C2, 0x94C000, 0x94CFFF, "TEMIX", "TEMIX" }, { 0x0050C2, 0x94D000, 0x94DFFF, "C&H technology ltd.", "C-H" }, { 0x0050C2, 0x94E000, 0x94EFFF, "Zynix Original Sdn. Bhd.", "ZYNIX-ORIGINAL-SDN-BHD" }, { 0x0050C2, 0x94F000, 0x94FFFF, "IT-Designers GmbH", "IT-DESIGNERS" }, { 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, 0x952000, 0x952FFF, "Tech Fass s.r.o.", "TECH-FASS-S-R-O" }, { 0x0050C2, 0x953000, 0x953FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0x954000, 0x954FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x955000, 0x955FFF, "Roessmann Engineering", "ROESSMANN-ENGINEERING" }, { 0x0050C2, 0x956000, 0x956FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0x957000, 0x957FFF, "STRATEC Control Systems", "STRATEC-CONTROL" }, { 0x0050C2, 0x958000, 0x958FFF, "Sensoptics Ltd", "SENSOPTICS" }, { 0x0050C2, 0x959000, 0x959FFF, "DECTRIS Ltd.", "DECTRIS" }, { 0x0050C2, 0x95A000, 0x95AFFF, "TechnoAP", "TECHNOAP" }, { 0x0050C2, 0x95B000, 0x95BFFF, "AS Solar GmbH", "AS-SOLAR" }, { 0x0050C2, 0x95C000, 0x95CFFF, "Resurgent Health & Medical", "RESURGENT-HEALTH-MEDICAL" }, { 0x0050C2, 0x95D000, 0x95DFFF, "full electronic system", "FULL-SYSTEM" }, { 0x0050C2, 0x95E000, 0x95EFFF, "BEEcube Inc.", "BEECUBE" }, { 0x0050C2, 0x95F000, 0x95FFFF, "METRONIC APARATURA KONTROLNO - POMIAROWA", "METRONIC-APARATURA-KONTROLNO---POMIAROWA" }, { 0x0050C2, 0x960000, 0x960FFF, "kuroneko dennnou kenkyuushitsu", "KURONEKO-DENNNOU-KENKYUUSHITSU" }, { 0x0050C2, 0x961000, 0x961FFF, "Picsolve International Limited", "PICSOLVE" }, { 0x0050C2, 0x962000, 0x962FFF, "Shockfish SA", "SHOCKFISH" }, { 0x0050C2, 0x963000, 0x963FFF, "Lécureux SA", "LéCUREUX" }, { 0x0050C2, 0x964000, 0x964FFF, "IQ Automation GmbH", "IQ-AUTOMATION" }, { 0x0050C2, 0x965000, 0x965FFF, "Emitech Corporation", "EMITECH" }, { 0x0050C2, 0x966000, 0x966FFF, "PCM Industries", "PCM-INDUSTRIES" }, { 0x0050C2, 0x967000, 0x967FFF, "Watthour Engineering Co., Inc.", "WATTHOUR-ENGINEERING" }, { 0x0050C2, 0x968000, 0x968FFF, "BuLogics, Inc.", "BULOGICS" }, { 0x0050C2, 0x969000, 0x969FFF, "Gehrke Kommunikationssysteme GmbH", "GEHRKE-KOMMUNIKATIONSSYSTEME" }, { 0x0050C2, 0x96A000, 0x96AFFF, "Elektrobit Wireless Communications Ltd", "ELEKTROBIT-WIRELESS-COMMUNICATION" }, { 0x0050C2, 0x96B000, 0x96BFFF, "Electronic Media Services Ltd", "MEDIA-SERVICES" }, { 0x0050C2, 0x96C000, 0x96CFFF, "Aqua Cooler Pty Ltd", "AQUA-COOLER-PTY" }, { 0x0050C2, 0x96D000, 0x96DFFF, "Keene Electronics Ltd.", "KEENE-ELECTRONICS" }, { 0x0050C2, 0x96E000, 0x96EFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0x96F000, 0x96FFFF, "Varec Inc.", "VAREC" }, { 0x0050C2, 0x970000, 0x970FFF, "Tsuji Electronics Co.,Ltd", "TSUJI-ELECTRONICS" }, { 0x0050C2, 0x971000, 0x971FFF, "Ipitek", "IPITEK" }, { 0x0050C2, 0x972000, 0x972FFF, "Switch Science (Panini Keikaku)", "SWITCH-SCIENCE-PANINI-KEIKAKU" }, { 0x0050C2, 0x973000, 0x973FFF, "Systèmes Pran", "SYSTèMES-PRAN" }, { 0x0050C2, 0x974000, 0x974FFF, "EMAC, INC.", "EMAC" }, { 0x0050C2, 0x975000, 0x975FFF, "Pyramid Technical Consultants", "PYRAMID-TECHNICAL-CONSULTANTS" }, { 0x0050C2, 0x976000, 0x976FFF, "SANDS INSTRUMENTATION INDIA PVT LTD", "SANDS-INSTRUMENTATION-INDIA-PVT" }, { 0x0050C2, 0x977000, 0x977FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x978000, 0x978FFF, "LOGITAL DIGITAL MEDIA srl", "LOGITAL-DIGITAL-MEDIA-SRL" }, { 0x0050C2, 0x979000, 0x979FFF, "Far South Networks (Pty) Ltd", "FAR-SOUTH-NETWORKS-PTY" }, { 0x0050C2, 0x97A000, 0x97AFFF, "KST Technology Co., Ltd", "KST" }, { 0x0050C2, 0x97B000, 0x97BFFF, "SMARTQUANTUM SA", "SMARTQUANTUM" }, { 0x0050C2, 0x97C000, 0x97CFFF, "Creacon Technologies B.V.", "CREACON-TECHNOLOGIES" }, { 0x0050C2, 0x97D000, 0x97DFFF, "Soehnle Professional GmbH & Co.KG", "SOEHNLE-PROFESSIONAL" }, { 0x0050C2, 0x97E000, 0x97EFFF, "RF Industries", "RF-INDUSTRIES" }, { 0x0050C2, 0x97F000, 0x97FFFF, "C&I Co.Ltd", "C-I" }, { 0x0050C2, 0x980000, 0x980FFF, "Digital Payment Technologies", "DIGITAL-PAYMENT-TECHNOLOGIES" }, { 0x0050C2, 0x981000, 0x981FFF, "Novotronik GmbH", "NOVOTRONIK" }, { 0x0050C2, 0x982000, 0x982FFF, "Triple Ring Technologies, Inc.", "TRIPLE-RING-TECHNOLOGIES" }, { 0x0050C2, 0x983000, 0x983FFF, "Bogart Engineering", "BOGART-ENGINEERING" }, { 0x0050C2, 0x984000, 0x984FFF, "Atel Corporation", "ATEL" }, { 0x0050C2, 0x985000, 0x985FFF, "Earnestcom Sdn Bhd", "EARNESTCOM-SDN-BHD" }, { 0x0050C2, 0x986000, 0x986FFF, "DSCI", "DSCI" }, { 0x0050C2, 0x987000, 0x987FFF, "Joinsoon Electronics MFG. Co., Ltd", "JOINSOON-ELECTRONICS-MFG" }, { 0x0050C2, 0x988000, 0x988FFF, "Pantel International", "PANTEL" }, { 0x0050C2, 0x989000, 0x989FFF, "Psigenics Corporation", "PSIGENICS" }, { 0x0050C2, 0x98A000, 0x98AFFF, "MEV Limited", "MEV" }, { 0x0050C2, 0x98B000, 0x98BFFF, "TI2000 TECNOLOGIA INFORMATICA 2000", "TI2000-TECNOLOGIA-INFORMATICA-2000" }, { 0x0050C2, 0x98C000, 0x98CFFF, "MGM-Devices Oy", "MGM-DEVICES-OY" }, { 0x0050C2, 0x98D000, 0x98DFFF, "Mecos AG", "MECOS" }, { 0x0050C2, 0x98E000, 0x98EFFF, "Link Technologies, Inc", "LINK-TECHNOLOGIES" }, { 0x0050C2, 0x98F000, 0x98FFFF, "BELIK S.P.R.L.", "BELIK-S-P-R-L" }, { 0x0050C2, 0x990000, 0x990FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x991000, 0x991FFF, "UGL Limited", "UGL" }, { 0x0050C2, 0x992000, 0x992FFF, "IDT Sound Processing Corporation", "IDT-SOUND-PROCESSING" }, { 0x0050C2, 0x993000, 0x993FFF, "UNETCONVERGENCE CO., LTD", "UNETCONVERGENCE" }, { 0x0050C2, 0x994000, 0x994FFF, "Xafax Nederland bv", "XAFAX-NEDERLAND" }, { 0x0050C2, 0x995000, 0x995FFF, "Inter Control Hermann Köhler Elektrik GmbH&Co.KG", "INTER-CONTROL-HERMANN-KöHLER-ELEKTRIK" }, { 0x0050C2, 0x996000, 0x996FFF, "Commercial Timesharing Inc.", "COMMERCIAL-TIMESHARING" }, { 0x0050C2, 0x997000, 0x997FFF, "Depro Électronique", "DEPRO-ÉLECTRONIQUE" }, { 0x0050C2, 0x998000, 0x998FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0x999000, 0x999FFF, "Cambustion Ltd", "CAMBUSTION" }, { 0x0050C2, 0x99A000, 0x99AFFF, "Miromico AG", "MIROMICO" }, { 0x0050C2, 0x99B000, 0x99BFFF, "Bettini srl", "BETTINI-SRL" }, { 0x0050C2, 0x99C000, 0x99CFFF, "CaTs3 Limited", "CATS3" }, { 0x0050C2, 0x99D000, 0x99DFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0x99E000, 0x99EFFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x0050C2, 0x99F000, 0x99FFFF, "Sietron Elektronik", "SIETRON-ELEKTRONIK" }, { 0x0050C2, 0x9A0000, 0x9A0FFF, "Trs Systems, Inc.", "TRS" }, { 0x0050C2, 0x9A1000, 0x9A1FFF, "ComAp s.r.o", "COMAP-S-R-O" }, { 0x0050C2, 0x9A2000, 0x9A2FFF, "SAMsystems GmbH", "SAMSYSTEMS" }, { 0x0050C2, 0x9A3000, 0x9A3FFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0x9A4000, 0x9A4FFF, "Entwicklung Hard- & Software", "ENTWICKLUNG-HARD--SOFTWARE" }, { 0x0050C2, 0x9A5000, 0x9A5FFF, "Conolog Corporation", "CONOLOG" }, { 0x0050C2, 0x9A6000, 0x9A6FFF, "Metodo2", "METODO2" }, { 0x0050C2, 0x9A7000, 0x9A7FFF, "Thales Communications & Security S.A.", "THALES-COMMUNICATION-SECURITY" }, { 0x0050C2, 0x9A8000, 0x9A8FFF, "DOMIS SA", "DOMIS" }, { 0x0050C2, 0x9A9000, 0x9A9FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0x9AA000, 0x9AAFFF, "TEKO TELECOM SpA", "TEKO-TELECOM-SPA" }, { 0x0050C2, 0x9AB000, 0x9ABFFF, "Electrodata Inc.", "ELECTRODATA" }, { 0x0050C2, 0x9AC000, 0x9ACFFF, "Questek Australia Pty Ltd", "QUESTEK-AUSTRALIA-PTY" }, { 0x0050C2, 0x9AD000, 0x9ADFFF, "Chronos Technology Ltd.", "CHRONOS" }, { 0x0050C2, 0x9AE000, 0x9AEFFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0x9AF000, 0x9AFFFF, "KRESS-NET Krzysztof Rutecki", "KRESS-NET-KRZYSZTOF-RUTECKI" }, { 0x0050C2, 0x9B0000, 0x9B0FFF, "Ebru GmbH", "EBRU" }, { 0x0050C2, 0x9B1000, 0x9B1FFF, "Bon Hora GmbH", "BON-HORA" }, { 0x0050C2, 0x9B2000, 0x9B2FFF, "TempSys", "TEMPSYS" }, { 0x0050C2, 0x9B3000, 0x9B3FFF, "Kahler Automation", "KAHLER-AUTOMATION" }, { 0x0050C2, 0x9B4000, 0x9B4FFF, "EUKREA ELECTROMATIQUE SARL", "EUKREA-ELECTROMATIQUE-SARL" }, { 0x0050C2, 0x9B5000, 0x9B5FFF, "Telegamma srl", "TELEGAMMA-SRL" }, { 0x0050C2, 0x9B6000, 0x9B6FFF, "ACTECH", "ACTECH" }, { 0x0050C2, 0x9B7000, 0x9B7FFF, "St. Michael Strategies", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0x9B8000, 0x9B8FFF, "Sound Player Systems e.K.", "SOUND-PLAYER-E-K" }, { 0x0050C2, 0x9B9000, 0x9B9FFF, "ISA - Intelligent Sensing Anywhere, S.A.", "ISA---INTELLIGENT-SENSING-ANYWHERE" }, { 0x0050C2, 0x9BA000, 0x9BAFFF, "Connor-Winfield", "CONNOR-WINFIELD" }, { 0x0050C2, 0x9BB000, 0x9BBFFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0x9BC000, 0x9BCFFF, "Vester Elektronik GmbH", "VESTER-ELEKTRONIK" }, { 0x0050C2, 0x9BD000, 0x9BDFFF, "Sensitron Semiconductor", "SENSITRON-SEMICONDUCTOR" }, { 0x0050C2, 0x9BE000, 0x9BEFFF, "Xad Communications Ltd", "XAD-COMMUNICATION" }, { 0x0050C2, 0x9BF000, 0x9BFFFF, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x0050C2, 0x9C0000, 0x9C0FFF, "Stuyts Engineering Haarlem BV", "STUYTS-ENGINEERING-HAARLEM" }, { 0x0050C2, 0x9C1000, 0x9C1FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0x9C2000, 0x9C2FFF, "Team Enginers", "TEAM-ENGINERS" }, { 0x0050C2, 0x9C3000, 0x9C3FFF, "GE Security-Kampro", "GE-SECURITY-KAMPRO" }, { 0x0050C2, 0x9C4000, 0x9C4FFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0x9C5000, 0x9C5FFF, "Scansonic MI GmbH", "SCANSONIC-MI" }, { 0x0050C2, 0x9C6000, 0x9C6FFF, "Protronic GmbH", "PROTRONIC" }, { 0x0050C2, 0x9C7000, 0x9C7FFF, "Kumera Drives Oy", "KUMERA-DRIVES-OY" }, { 0x0050C2, 0x9C8000, 0x9C8FFF, "ethermetrics", "ETHERMETRICS" }, { 0x0050C2, 0x9C9000, 0x9C9FFF, "LUMINEX Lighting Control Equipment", "LUMINEX-LIGHTING-CONTROL-EQUIPMENT" }, { 0x0050C2, 0x9CA000, 0x9CAFFF, "ESAB-ATAS GmbH", "ESAB-ATAS" }, { 0x0050C2, 0x9CB000, 0x9CBFFF, "NIS-time GmbH", "NIS-TIME" }, { 0x0050C2, 0x9CC000, 0x9CCFFF, "Hirotech, Inc", "HIROTECH" }, { 0x0050C2, 0x9CD000, 0x9CDFFF, "Uwe Schneider GmbH", "UWE-SCHNEIDER" }, { 0x0050C2, 0x9CE000, 0x9CEFFF, "Ronan Engineering", "RONAN-ENGINEERING" }, { 0x0050C2, 0x9CF000, 0x9CFFFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0x9D0000, 0x9D0FFF, "J. DITTRICH ELEKTRONIC GmbH & Co. KG", "J-DITTRICH-ELEKTRONIC" }, { 0x0050C2, 0x9D1000, 0x9D1FFF, "Bladelius Design Group AB", "BLADELIUS-DESIGN-GROUP-AB" }, { 0x0050C2, 0x9D2000, 0x9D2FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0x9D3000, 0x9D3FFF, "Telemetrie Elektronik GmbH", "TELEMETRIE-ELEKTRONIK" }, { 0x0050C2, 0x9D4000, 0x9D4FFF, "FIRST", "FIRST" }, { 0x0050C2, 0x9D5000, 0x9D5FFF, "Netpower Labs AB", "NETPOWER-LABS-AB" }, { 0x0050C2, 0x9D6000, 0x9D6FFF, "Innovation, Institute, Inc", "INNOVATION-INSTITUTE" }, { 0x0050C2, 0x9D7000, 0x9D7FFF, "Melex Inc.", "MELEX" }, { 0x0050C2, 0x9D8000, 0x9D8FFF, "SAMSUNG HEAVY INDUSTRIES CO.,LTD.", "SAMSUNG-HEAVY-INDUSTRIES" }, { 0x0050C2, 0x9D9000, 0x9D9FFF, "CNS Systems, Inc.", "CNS" }, { 0x0050C2, 0x9DA000, 0x9DAFFF, "NEUTRONIK e.K.", "NEUTRONIK-E-K" }, { 0x0050C2, 0x9DB000, 0x9DBFFF, "Walter Grotkasten", "WALTER-GROTKASTEN" }, { 0x0050C2, 0x9DC000, 0x9DCFFF, "FTM Marketing Limited", "FTM-MARKETING" }, { 0x0050C2, 0x9DD000, 0x9DDFFF, "Institut Dr. Foerster", "INSTITUT-DR-FOERSTER" }, { 0x0050C2, 0x9DE000, 0x9DEFFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0x9DF000, 0x9DFFFF, "CODEC Co., Ltd.", "CODEC" }, { 0x0050C2, 0x9E0000, 0x9E0FFF, "DST Swiss AG", "DST-SWISS" }, { 0x0050C2, 0x9E1000, 0x9E1FFF, "Enreduce Energy Control AB", "ENREDUCE-ENERGY-CONTROL-AB" }, { 0x0050C2, 0x9E2000, 0x9E2FFF, "E-ViEWS SAFETY SYSTEMS, INC", "E-VIEWS-SAFETY" }, { 0x0050C2, 0x9E3000, 0x9E3FFF, "SAI Informationstechnik", "SAI-INFORMATIONSTECHNIK" }, { 0x0050C2, 0x9E4000, 0x9E4FFF, "Pyxis Controls WLL", "PYXIS-CONTROLS-WLL" }, { 0x0050C2, 0x9E5000, 0x9E5FFF, "Halliburton Far East Pte Ltd", "HALLIBURTON-FAR-EAST-PTE" }, { 0x0050C2, 0x9E6000, 0x9E6FFF, "Kumho Electric, Inc.", "KUMHO-ELECTRIC" }, { 0x0050C2, 0x9E7000, 0x9E7FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0x9E8000, 0x9E8FFF, "Hammock Corporation", "HAMMOCK" }, { 0x0050C2, 0x9E9000, 0x9E9FFF, "Ciemme Sistemi Spa", "CIEMME-SISTEMI-SPA" }, { 0x0050C2, 0x9EA000, 0x9EAFFF, "SISMODULAR - Engenharia, Lda", "SISMODULAR---ENGENHARIA-LDA" }, { 0x0050C2, 0x9EB000, 0x9EBFFF, "AFORE Solutions Inc.", "AFORE-SOLUTIONS" }, { 0x0050C2, 0x9EC000, 0x9ECFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0x9ED000, 0x9EDFFF, "Picell B.V.", "PICELL" }, { 0x0050C2, 0x9EE000, 0x9EEFFF, "Michael Stevens & Partners Ltd", "MICHAEL-STEVENS-PARTNERS" }, { 0x0050C2, 0x9EF000, 0x9EFFFF, "WoKa-Elektronik GmbH", "WOKA-ELEKTRONIK" }, { 0x0050C2, 0x9F0000, 0x9F0FFF, "Veracity UK Ltd", "VERACITY-UK" }, { 0x0050C2, 0x9F1000, 0x9F1FFF, "IDEAS s.r.l.", "IDEAS-S-R-L" }, { 0x0050C2, 0x9F2000, 0x9F2FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0x9F3000, 0x9F3FFF, "Vision Technologies, Inc.", "VISION-TECHNOLOGIES" }, { 0x0050C2, 0x9F4000, 0x9F4FFF, "FSR Inc.", "FSR" }, { 0x0050C2, 0x9F5000, 0x9F5FFF, "Commex Technologies", "COMMEX-TECHNOLOGIES" }, { 0x0050C2, 0x9F6000, 0x9F6FFF, "Ion Sense Inc.", "ION-SENSE" }, { 0x0050C2, 0x9F7000, 0x9F7FFF, "Dave Jones Design", "DAVE-JONES-DESIGN" }, { 0x0050C2, 0x9F8000, 0x9F8FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0x9F9000, 0x9F9FFF, "ABB Transmission and Distribution Auto Eqip(Xiamen.China)", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTO-EQIP-XIAMEN-CHINA" }, { 0x0050C2, 0x9FA000, 0x9FAFFF, "Teranex A Division of Silicon Optix", "TERANEX-A-DIVISION-OF-SILICON-OPTIX" }, { 0x0050C2, 0x9FB000, 0x9FBFFF, "Villbau Kft.", "VILLBAU-KFT" }, { 0x0050C2, 0x9FC000, 0x9FCFFF, "ECTEC INC.", "ECTEC" }, { 0x0050C2, 0x9FD000, 0x9FDFFF, "Bitt technology-A Ltd.", "BITT--A" }, { 0x0050C2, 0x9FE000, 0x9FEFFF, "SPECTRA EMBEDDED SYSTEMS", "SPECTRA-EMBEDDED" }, { 0x0050C2, 0x9FF000, 0x9FFFFF, "Humphrey Products", "HUMPHREY-PRODUCTS" }, { 0x0050C2, 0xA00000, 0xA00FFF, "Technovare Systems", "TECHNOVARE" }, { 0x0050C2, 0xA01000, 0xA01FFF, "Patronics International LTD", "PATRONICS" }, { 0x0050C2, 0xA02000, 0xA02FFF, "Reference, LLC.", "REFERENCE-LLC" }, { 0x0050C2, 0xA03000, 0xA03FFF, "EEG Enterprises Inc", "EEG-ENTERPRISES" }, { 0x0050C2, 0xA04000, 0xA04FFF, "TP Radio", "TP-RADIO" }, { 0x0050C2, 0xA05000, 0xA05FFF, "Adgil Design Inc.", "ADGIL-DESIGN" }, { 0x0050C2, 0xA06000, 0xA06FFF, "Cloos Schweisstechnik GmbH", "CLOOS-SCHWEISSTECHNIK" }, { 0x0050C2, 0xA07000, 0xA07FFF, "Dynon Instruments", "DYNON-INSTRUMENTS" }, { 0x0050C2, 0xA08000, 0xA08FFF, "LabJack Corporation", "LABJACK" }, { 0x0050C2, 0xA09000, 0xA09FFF, "Innovative American Technology", "INNOVATIVE-AMERICAN" }, { 0x0050C2, 0xA0A000, 0xA0AFFF, "ACD Elektronik Gmbh", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xA0B000, 0xA0BFFF, "I.D.S. Ingegneria Dei Sistemi S.p.A.", "I-D-S-INGEGNERIA-DEI-SISTEMI-S-P-A" }, { 0x0050C2, 0xA0C000, 0xA0CFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA0D000, 0xA0DFFF, "CHARLYROBOT", "CHARLYROBOT" }, { 0x0050C2, 0xA0E000, 0xA0EFFF, "Engicam srl", "ENGICAM-SRL" }, { 0x0050C2, 0xA0F000, 0xA0FFFF, "Visualware Inc", "VISUALWARE" }, { 0x0050C2, 0xA10000, 0xA10FFF, "Essential Design & Integration P/L", "ESSENTIAL-DESIGN-INTEGRATION-P/L" }, { 0x0050C2, 0xA11000, 0xA11FFF, "OJSC Rawenstvo", "OJSC-RAWENSTVO" }, { 0x0050C2, 0xA12000, 0xA12FFF, "HCE Engineering S.r.l.", "HCE-ENGINEERING-S-R-L" }, { 0x0050C2, 0xA13000, 0xA13FFF, "Talyst, Inc.", "TALYST" }, { 0x0050C2, 0xA14000, 0xA14FFF, "Elbit Systems of America - Tallahassee Operations", "ELBIT-OF-AMERICA---TALLAHASSEE-OPERATIONS" }, { 0x0050C2, 0xA15000, 0xA15FFF, "Industrial Computing Ltd", "INDUSTRIAL-COMPUTING" }, { 0x0050C2, 0xA16000, 0xA16FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xA17000, 0xA17FFF, "Winners Satellite Electronics Corp.", "WINNERS-SATELLITE-ELECTRONICS" }, { 0x0050C2, 0xA18000, 0xA18FFF, "Eoslink", "EOSLINK" }, { 0x0050C2, 0xA19000, 0xA19FFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0xA1A000, 0xA1AFFF, "DDL", "DDL" }, { 0x0050C2, 0xA1B000, 0xA1BFFF, "Realtime Systems Ltd.", "REALTIME" }, { 0x0050C2, 0xA1C000, 0xA1CFFF, "Microtechnica", "MICROTECHNICA" }, { 0x0050C2, 0xA1D000, 0xA1DFFF, "SAMH Engineering Services", "SAMH-ENGINEERING-SERVICES" }, { 0x0050C2, 0xA1E000, 0xA1EFFF, "MAMAC Systems, Inc.", "MAMAC" }, { 0x0050C2, 0xA1F000, 0xA1FFFF, "Flight Data Systems Pty Ltd", "FLIGHT-DATA-PTY" }, { 0x0050C2, 0xA20000, 0xA20FFF, "Quorum Technologies Ltd", "QUORUM-TECHNOLOGIES" }, { 0x0050C2, 0xA21000, 0xA21FFF, "ISAC SRL", "ISAC-SRL" }, { 0x0050C2, 0xA22000, 0xA22FFF, "Nippon Manufacturing Service Corporation (abbreviated as 'nms')", "NIPPON-MANUFACTURING-SERVICE-ABBREVIATED-AS-NMS" }, { 0x0050C2, 0xA23000, 0xA23FFF, "Agility Mfg, Inc.", "AGILITY-MFG" }, { 0x0050C2, 0xA24000, 0xA24FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xA25000, 0xA25FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xA26000, 0xA26FFF, "Preferred Oil, LLC", "PREFERRED-OIL-LLC" }, { 0x0050C2, 0xA27000, 0xA27FFF, "meconet e. K.", "MECONET-E-K" }, { 0x0050C2, 0xA28000, 0xA28FFF, "KENDA ELECTRONIC SYSTEMS LIMITED", "KENDA" }, { 0x0050C2, 0xA29000, 0xA29FFF, "Luminex Corporation", "LUMINEX" }, { 0x0050C2, 0xA2A000, 0xA2AFFF, "Custom Control Concepts", "CUSTOM-CONTROL-CONCEPTS" }, { 0x0050C2, 0xA2B000, 0xA2BFFF, "APRILIA RACING S.R.L.", "APRILIA-RACING-S-R-L" }, { 0x0050C2, 0xA2C000, 0xA2CFFF, "KWS-Electronic GmbH", "KWS" }, { 0x0050C2, 0xA2D000, 0xA2DFFF, "Inventure Inc.", "INVENTURE" }, { 0x0050C2, 0xA2E000, 0xA2EFFF, "Yuyama Mfg. Co., Ltd.", "YUYAMA-MFG" }, { 0x0050C2, 0xA2F000, 0xA2FFFF, "DragonFly Scientific LLC", "DRAGONFLY-SCIENTIFIC-LLC" }, { 0x0050C2, 0xA30000, 0xA30FFF, "D-TA Systems", "D-TA" }, { 0x0050C2, 0xA31000, 0xA31FFF, "Coolit Systems, Inc.", "COOLIT" }, { 0x0050C2, 0xA32000, 0xA32FFF, "Harris Designs of NRV, Inc.", "HARRIS-DESIGNS-OF-NRV" }, { 0x0050C2, 0xA33000, 0xA33FFF, "Fuji Firmware", "FUJI-FIRMWARE" }, { 0x0050C2, 0xA34000, 0xA34FFF, "Casabyte Inc.", "CASABYTE" }, { 0x0050C2, 0xA35000, 0xA35FFF, "Appareo Systems, LLC", "APPAREO-LLC" }, { 0x0050C2, 0xA36000, 0xA36FFF, "Shenzhen Shangji electronic Co.Ltd", "SHENZHEN-SHANGJI" }, { 0x0050C2, 0xA37000, 0xA37FFF, "Software Systems Plus", "SOFTWARE-PLUS" }, { 0x0050C2, 0xA38000, 0xA38FFF, "Tred Displays", "TRED-DISPLAYS" }, { 0x0050C2, 0xA39000, 0xA39FFF, "Industrial Data Products Ltd", "INDUSTRIAL-DATA-PRODUCTS" }, { 0x0050C2, 0xA3A000, 0xA3AFFF, "Telecor Inc.", "TELECOR" }, { 0x0050C2, 0xA3B000, 0xA3BFFF, "IPcontrols GmbH", "IPCONTROLS" }, { 0x0050C2, 0xA3C000, 0xA3CFFF, "Brähler ICS Konferenztechnik AG", "BRäHLER-ICS-KONFERENZTECHNIK" }, { 0x0050C2, 0xA3D000, 0xA3DFFF, "OWANDY", "OWANDY" }, { 0x0050C2, 0xA3E000, 0xA3EFFF, "DUEVI SNC DI MORA E SANTESE", "DUEVI-SNC-DI-MORA-E-SANTESE" }, { 0x0050C2, 0xA3F000, 0xA3FFFF, "LHA Systems CC", "LHA-CC" }, { 0x0050C2, 0xA40000, 0xA40FFF, "Mosberger Consulting LLC", "MOSBERGER-CONSULTING-LLC" }, { 0x0050C2, 0xA41000, 0xA41FFF, "Meiryo Denshi Corp.", "MEIRYO-DENSHI" }, { 0x0050C2, 0xA42000, 0xA42FFF, "RealVision Inc.", "REALVISION" }, { 0x0050C2, 0xA43000, 0xA43FFF, "NKS Co.Ltd.", "NKS" }, { 0x0050C2, 0xA44000, 0xA44FFF, "TORC Technologies", "TORC-TECHNOLOGIES" }, { 0x0050C2, 0xA45000, 0xA45FFF, "Sofradir-EC", "SOFRADIR-EC" }, { 0x0050C2, 0xA46000, 0xA46FFF, "Softronics Ltd.", "SOFTRONICS" }, { 0x0050C2, 0xA47000, 0xA47FFF, "PRIMETECH ENGINEERING CORP.", "PRIMETECH-ENGINEERING" }, { 0x0050C2, 0xA48000, 0xA48FFF, "Thales Optronics Limited", "THALES-OPTRONICS" }, { 0x0050C2, 0xA49000, 0xA49FFF, "Wayne Dalton Corp.", "WAYNE-DALTON" }, { 0x0050C2, 0xA4A000, 0xA4AFFF, "DITRON S.r.l.", "DITRON-S-R-L" }, { 0x0050C2, 0xA4B000, 0xA4BFFF, "L-3 Communications Mobile-Vision, Inc.", "L-3-COMMUNICATION-MOBILE-VISION" }, { 0x0050C2, 0xA4C000, 0xA4CFFF, "VasoNova, Inc.", "VASONOVA" }, { 0x0050C2, 0xA4D000, 0xA4DFFF, "LevelStar LLC.", "LEVELSTAR-LLC" }, { 0x0050C2, 0xA4E000, 0xA4EFFF, "Conduant Corporation", "CONDUANT" }, { 0x0050C2, 0xA4F000, 0xA4FFFF, "Deuta GmbH", "DEUTA" }, { 0x0050C2, 0xA50000, 0xA50FFF, "i-RED Infrarot Systeme GmbH", "I-RED-INFRAROT-SYSTEME" }, { 0x0050C2, 0xA51000, 0xA51FFF, "Y-products co.ltd.", "Y-PRODUCTS" }, { 0x0050C2, 0xA52000, 0xA52FFF, "The VON Corporation", "THE-VON" }, { 0x0050C2, 0xA53000, 0xA53FFF, "Quality & Design", "QUALITY-DESIGN" }, { 0x0050C2, 0xA54000, 0xA54FFF, "Diamond Point International (Europe) Ltd", "DIAMOND-POINT-EUROPE" }, { 0x0050C2, 0xA55000, 0xA55FFF, "Arrowvale Electronics", "ARROWVALE-ELECTRONICS" }, { 0x0050C2, 0xA56000, 0xA56FFF, "ReaMetrix, Inc.", "REAMETRIX" }, { 0x0050C2, 0xA57000, 0xA57FFF, "Juice Technologies, LLC", "JUICE-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xA58000, 0xA58FFF, "EPL", "EPL" }, { 0x0050C2, 0xA59000, 0xA59FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x0050C2, 0xA5A000, 0xA5AFFF, "ITAS A/S", "ITAS-A/S" }, { 0x0050C2, 0xA5B000, 0xA5BFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA5C000, 0xA5CFFF, "JSC Component-ASU", "JSC-COMPONENT-ASU" }, { 0x0050C2, 0xA5D000, 0xA5DFFF, "MECC CO., LTD.", "MECC" }, { 0x0050C2, 0xA5E000, 0xA5EFFF, "Ansen Investment Holdings Ltd.", "ANSEN-INVESTMENT-HOLDINGS" }, { 0x0050C2, 0xA5F000, 0xA5FFFF, "Alga Microwave Inc", "ALGA-MICROWAVE" }, { 0x0050C2, 0xA60000, 0xA60FFF, "Arrow Central Europe GmbH - Division Spoerle", "ARROW-CENTRAL-EUROPE---DIVISION-SPOERLE" }, { 0x0050C2, 0xA61000, 0xA61FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xA62000, 0xA62FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0xA63000, 0xA63FFF, "EMS Industries", "EMS-INDUSTRIES" }, { 0x0050C2, 0xA64000, 0xA64FFF, "tetronik GmbH AEN", "TETRONIK-AEN" }, { 0x0050C2, 0xA65000, 0xA65FFF, "Mark-O-Print GmbH", "MARK-O-PRINT" }, { 0x0050C2, 0xA66000, 0xA66FFF, "DVTech", "DVTECH" }, { 0x0050C2, 0xA67000, 0xA67FFF, "GSS Avionics Limited", "GSS-AVIONICS" }, { 0x0050C2, 0xA68000, 0xA68FFF, "X-Pert Paint Mixing Systems", "X-PERT-PAINT-MIXING" }, { 0x0050C2, 0xA69000, 0xA69FFF, "Advanced Integrated Systems", "ADVANCED-INTEGRATED" }, { 0x0050C2, 0xA6A000, 0xA6AFFF, "Infocrossing", "INFOCROSSING" }, { 0x0050C2, 0xA6B000, 0xA6BFFF, "Explorer Inc.", "EXPLORER" }, { 0x0050C2, 0xA6C000, 0xA6CFFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x0050C2, 0xA6D000, 0xA6DFFF, "DTV Innovations", "DTV-INNOVATIONS" }, { 0x0050C2, 0xA6E000, 0xA6EFFF, "Screen Technics Pty Limited", "SCREEN-TECHNICS-PTY" }, { 0x0050C2, 0xA6F000, 0xA6FFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xA70000, 0xA70FFF, "Reliable System Services Corp", "RELIABLE-SYSTEM-SERVICES" }, { 0x0050C2, 0xA71000, 0xA71FFF, "Purite Ltd", "PURITE" }, { 0x0050C2, 0xA72000, 0xA72FFF, "Gamber-Johnson LLC.", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0xA73000, 0xA73FFF, "KYOEI ENGINEERING Co.,Ltd.", "KYOEI-ENGINEERING" }, { 0x0050C2, 0xA74000, 0xA74FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xA75000, 0xA75FFF, "JTL Systems Ltd.", "JTL" }, { 0x0050C2, 0xA76000, 0xA76FFF, "Roesch & Walter Industrie-Elektronik GmbH", "ROESCH-WALTER-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0xA77000, 0xA77FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xA78000, 0xA78FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x0050C2, 0xA79000, 0xA79FFF, "Saintronic", "SAINTRONIC" }, { 0x0050C2, 0xA7A000, 0xA7AFFF, "DetNet South Africa PTY (LTD)", "DETNET-SOUTH-AFRICA-PTY" }, { 0x0050C2, 0xA7B000, 0xA7BFFF, "Orange Tree Technologies", "ORANGE-TREE-TECHNOLOGIES" }, { 0x0050C2, 0xA7C000, 0xA7CFFF, "Pneu-Logic Corporation", "PNEU-LOGIC" }, { 0x0050C2, 0xA7D000, 0xA7DFFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0xA7E000, 0xA7EFFF, "Independent Project Engineering Ltd", "INDEPENDENT-PROJECT-ENGINEERING" }, { 0x0050C2, 0xA7F000, 0xA7FFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xA80000, 0xA80FFF, "ARD SA", "ARD" }, { 0x0050C2, 0xA81000, 0xA81FFF, "BPC circuits Ltd", "BPC-CIRCUITS" }, { 0x0050C2, 0xA82000, 0xA82FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xA83000, 0xA83FFF, "Techno Sobi Co. Ltd.", "TECHNO-SOBI" }, { 0x0050C2, 0xA84000, 0xA84FFF, "Lino Manfrotto +Co spa", "LINO-MANFROTTO-+-SPA" }, { 0x0050C2, 0xA85000, 0xA85FFF, "JOYSYSTEM", "JOYSYSTEM" }, { 0x0050C2, 0xA86000, 0xA86FFF, "LIMAB AB", "LIMAB-AB" }, { 0x0050C2, 0xA87000, 0xA87FFF, "Littlemore Scientific", "LITTLEMORE-SCIENTIFIC" }, { 0x0050C2, 0xA88000, 0xA88FFF, "S-SYS", "S-SYS" }, { 0x0050C2, 0xA89000, 0xA89FFF, "CA Traffic Ltd", "CA-TRAFFIC" }, { 0x0050C2, 0xA8A000, 0xA8AFFF, "Audio Engineering Ltd.", "AUDIO-ENGINEERING" }, { 0x0050C2, 0xA8B000, 0xA8BFFF, "Navicron Oy", "NAVICRON-OY" }, { 0x0050C2, 0xA8C000, 0xA8CFFF, "Redwire, LLC", "REDWIRE-LLC" }, { 0x0050C2, 0xA8D000, 0xA8DFFF, "Frontier Electronic Systems Corp.", "FRONTIER" }, { 0x0050C2, 0xA8E000, 0xA8EFFF, "BFI Industrie-Elektronik GmbH & Co.KG", "BFI-INDUSTRIE-ELEKTRONIK" }, { 0x0050C2, 0xA8F000, 0xA8FFFF, "Quantum3D, Inc.", "QUANTUM3D" }, { 0x0050C2, 0xA90000, 0xA90FFF, "S.two Corporation", "S-TWO" }, { 0x0050C2, 0xA91000, 0xA91FFF, "Ceron Tech Co.,LTD", "CERON-TECH" }, { 0x0050C2, 0xA92000, 0xA92FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xA93000, 0xA93FFF, "SPX Dehydration & Filtration", "SPX-DEHYDRATION-FILTRATION" }, { 0x0050C2, 0xA94000, 0xA94FFF, "Par-Tech, Inc.", "PAR-TECH" }, { 0x0050C2, 0xA95000, 0xA95FFF, "INNOVACIONES Microelectrónicas SL (AnaFocus)", "INNOVACIONES-MICROELECTRóNICAS-SL-ANAFOCUS" }, { 0x0050C2, 0xA96000, 0xA96FFF, "FEP SRL", "FEP-SRL" }, { 0x0050C2, 0xA97000, 0xA97FFF, "MICROSYSTEMES", "MICROSYSTEMES" }, { 0x0050C2, 0xA98000, 0xA98FFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x0050C2, 0xA99000, 0xA99FFF, "Haivision Systems Inc", "HAIVISION" }, { 0x0050C2, 0xA9A000, 0xA9AFFF, "Absolutron. LLC", "ABSOLUTRON-LLC" }, { 0x0050C2, 0xA9B000, 0xA9BFFF, "PDQ Manufacturing Inc.", "PDQ-MANUFACTURING" }, { 0x0050C2, 0xA9C000, 0xA9CFFF, "Eberspächer Electronics GmbH & Co. KG", "EBERSPäCHER-ELECTRONICS" }, { 0x0050C2, 0xA9D000, 0xA9DFFF, "Joehl & Koeferli AG", "JOEHL-KOEFERLI" }, { 0x0050C2, 0xA9E000, 0xA9EFFF, "Procon Engineering Limited", "PROCON-ENGINEERING" }, { 0x0050C2, 0xA9F000, 0xA9FFFF, "YellowSoft Co., Ltd.", "YELLOWSOFT" }, { 0x0050C2, 0xAA0000, 0xAA0FFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0xAA1000, 0xAA1FFF, "ELREM ELECTRONIC AG", "ELREM" }, { 0x0050C2, 0xAA2000, 0xAA2FFF, "ELPA sas", "ELPA-SAS" }, { 0x0050C2, 0xAA3000, 0xAA3FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xAA4000, 0xAA4FFF, "PSi Printer Systems international GmbH", "PSI-PRINTER" }, { 0x0050C2, 0xAA5000, 0xAA5FFF, "Tampere University of Technology", "TAMPERE-UNIVERSITY-OF" }, { 0x0050C2, 0xAA6000, 0xAA6FFF, "Bassett Electronic Systems ltd", "BASSETT" }, { 0x0050C2, 0xAA7000, 0xAA7FFF, "Endeas Oy", "ENDEAS-OY" }, { 0x0050C2, 0xAA8000, 0xAA8FFF, "Nexans Cabling Solutions", "NEXANS-CABLING-SOLUTIONS" }, { 0x0050C2, 0xAA9000, 0xAA9FFF, "SAN GIORGIO S.E.I.N. srl", "SAN-GIORGIO-S-E-I-N-SRL" }, { 0x0050C2, 0xAAA000, 0xAAAFFF, "Flexible Picture Systems", "FLEXIBLE-PICTURE" }, { 0x0050C2, 0xAAB000, 0xAABFFF, "BRS Sistemas Eletrônicos", "BRS-SISTEMAS-ELETRôNICOS" }, { 0x0050C2, 0xAAC000, 0xAACFFF, "VisiCon GmbH", "VISICON" }, { 0x0050C2, 0xAAD000, 0xAADFFF, "Update Systems Inc.", "UPDATE" }, { 0x0050C2, 0xAAE000, 0xAAEFFF, "OUTLINE srl", "OUTLINE-SRL" }, { 0x0050C2, 0xAAF000, 0xAAFFFF, "Santa Barbara Instrument Group", "SANTA-BARBARA-INSTRUMENT-GROUP" }, { 0x0050C2, 0xAB0000, 0xAB0FFF, "FRAKO Kondensatoren- und Anlagenbau GmbH", "FRAKO-KONDENSATOREN--UND-ANLAGENBAU" }, { 0x0050C2, 0xAB1000, 0xAB1FFF, "Bitmanufaktur GmbH", "BITMANUFAKTUR" }, { 0x0050C2, 0xAB2000, 0xAB2FFF, "ProCom Systems, Inc.", "PROCOM" }, { 0x0050C2, 0xAB3000, 0xAB3FFF, "Compañía de Instrumentacion y control, S.L.", "COMPAñíA-DE-INSTRUMENTACION-Y-CONTROL-S-L" }, { 0x0050C2, 0xAB4000, 0xAB4FFF, "n3k Informatik GmbH", "N3K-INFORMATIK" }, { 0x0050C2, 0xAB5000, 0xAB5FFF, "METTLER-TOLEDO HI-SPEED", "METTLER-TOLEDO-HI-SPEED" }, { 0x0050C2, 0xAB6000, 0xAB6FFF, "Gygax Embedded Engineering GEE.ch", "GYGAX-EMBEDDED-ENGINEERING-GEE-CH" }, { 0x0050C2, 0xAB7000, 0xAB7FFF, "Twinfalls Technologies", "TWINFALLS-TECHNOLOGIES" }, { 0x0050C2, 0xAB8000, 0xAB8FFF, "AHM Limited (CLiKAPAD)", "AHM-CLIKAPAD" }, { 0x0050C2, 0xAB9000, 0xAB9FFF, "Showtacle", "SHOWTACLE" }, { 0x0050C2, 0xABA000, 0xABAFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xABB000, 0xABBFFF, "Volantic AB", "VOLANTIC-AB" }, { 0x0050C2, 0xABC000, 0xABCFFF, "Barrick", "BARRICK" }, { 0x0050C2, 0xABD000, 0xABDFFF, "Monitor Business Machines Ltd.", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0xABE000, 0xABEFFF, "AP Labs", "AP-LABS" }, { 0x0050C2, 0xABF000, 0xABFFFF, "MCC Computer Company", "MCC-COMPANY" }, { 0x0050C2, 0xAC0000, 0xAC0FFF, "DS PRO Audio Ltda", "DS-PRO-AUDIO-LTDA" }, { 0x0050C2, 0xAC1000, 0xAC1FFF, "DAISHIN-DENSHI Co., Ltd", "DAISHIN-DENSHI" }, { 0x0050C2, 0xAC2000, 0xAC2FFF, "OpenXS B.V.", "OPENXS" }, { 0x0050C2, 0xAC3000, 0xAC3FFF, "Diversified Control, Inc.", "DIVERSIFIED-CONTROL" }, { 0x0050C2, 0xAC4000, 0xAC4FFF, "Orion Technologies, Incorporated", "ORION-TECHNOLOGIES-INCORPORATED" }, { 0x0050C2, 0xAC5000, 0xAC5FFF, "E-Motion System, Inc.", "E-MOTION-SYSTEM" }, { 0x0050C2, 0xAC6000, 0xAC6FFF, "Marathon Products, Inc.", "MARATHON-PRODUCTS" }, { 0x0050C2, 0xAC7000, 0xAC7FFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0xAC8000, 0xAC8FFF, "Palladio Systeme GmbH", "PALLADIO-SYSTEME" }, { 0x0050C2, 0xAC9000, 0xAC9FFF, "Steinbeis-Transferzentrum Embedded Design und Networking", "STEINBEIS-TRANSFERZENTRUM-EMBEDDED-DESIGN-UND-NETWORKING" }, { 0x0050C2, 0xACA000, 0xACAFFF, "Soft & Control Technology s.r.o.", "SOFT-CONTROL-S-R-O" }, { 0x0050C2, 0xACB000, 0xACBFFF, "U-CARE INC.", "U-CARE" }, { 0x0050C2, 0xACC000, 0xACCFFF, "StockerYale", "STOCKERYALE" }, { 0x0050C2, 0xACD000, 0xACDFFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x0050C2, 0xACE000, 0xACEFFF, "ChronoLogic Pty. Ltd.", "CHRONOLOGIC-PTY" }, { 0x0050C2, 0xACF000, 0xACFFFF, "SP Controls, Inc", "SP-CONTROLS" }, { 0x0050C2, 0xAD0000, 0xAD0FFF, "Geonautics Australia Pty Ltd", "GEONAUTICS-AUSTRALIA-PTY" }, { 0x0050C2, 0xAD1000, 0xAD1FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xAD2000, 0xAD2FFF, "Rafael", "RAFAEL" }, { 0x0050C2, 0xAD3000, 0xAD3FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xAD4000, 0xAD4FFF, "Global Rainmakers Inc.", "GLOBAL-RAINMAKERS" }, { 0x0050C2, 0xAD5000, 0xAD5FFF, "Mighty Lube Systematic Lubrication, Inc.", "MIGHTY-LUBE-SYSTEMATIC-LUBRICATION" }, { 0x0050C2, 0xAD6000, 0xAD6FFF, "Unisensor A/S", "UNISENSOR-A/S" }, { 0x0050C2, 0xAD7000, 0xAD7FFF, "Air Monitors Ltd", "AIR-MONITORS" }, { 0x0050C2, 0xAD8000, 0xAD8FFF, "Incyma", "INCYMA" }, { 0x0050C2, 0xAD9000, 0xAD9FFF, "elettrondata srl", "ELETTRONDATA-SRL" }, { 0x0050C2, 0xADA000, 0xADAFFF, "Essepie Srl", "ESSEPIE-SRL" }, { 0x0050C2, 0xADB000, 0xADBFFF, "GO engineering GmbH", "GO-ENGINEERING" }, { 0x0050C2, 0xADC000, 0xADCFFF, "Synthesechemie Dr. Penth GmbH", "SYNTHESECHEMIE-DR-PENTH" }, { 0x0050C2, 0xADD000, 0xADDFFF, "General Dynamics C4 Sysems", "GENERAL-DYNAMICS-C4-SYSEMS" }, { 0x0050C2, 0xADE000, 0xADEFFF, "Neoptix Inc.", "NEOPTIX" }, { 0x0050C2, 0xADF000, 0xADFFFF, "Altinex, Inc", "ALTINEX" }, { 0x0050C2, 0xAE0000, 0xAE0FFF, "AT4 wireless.S.A", "AT4-WIRELESS" }, { 0x0050C2, 0xAE1000, 0xAE1FFF, "EVERCARE", "EVERCARE" }, { 0x0050C2, 0xAE2000, 0xAE2FFF, "Power Medical Interventions", "POWER-MEDICAL-INTERVENTIONS" }, { 0x0050C2, 0xAE3000, 0xAE3FFF, "PSD", "PSD" }, { 0x0050C2, 0xAE4000, 0xAE4FFF, "Advanced Electronic Designs, Inc.", "ADVANCED-DESIGNS" }, { 0x0050C2, 0xAE5000, 0xAE5FFF, "ABS Gesellschaft f. Automatisierung, Bildverarbeitung und Software mbH", "ABS-GESELLSCHAFT-F-AUTOMATISIERUNG-BILDVERARBEITUNG-UND-SOFTWARE-MBH" }, { 0x0050C2, 0xAE6000, 0xAE6FFF, "VECOM USA", "VECOM-USA" }, { 0x0050C2, 0xAE7000, 0xAE7FFF, "Redwood Systems", "REDWOOD" }, { 0x0050C2, 0xAE8000, 0xAE8FFF, "Bit-Lab PTY LTD", "BIT-LAB-PTY" }, { 0x0050C2, 0xAE9000, 0xAE9FFF, "ClearCorp Enterprises, Inc", "CLEARCORP-ENTERPRISES" }, { 0x0050C2, 0xAEA000, 0xAEAFFF, "EMBEDIA", "EMBEDIA" }, { 0x0050C2, 0xAEB000, 0xAEBFFF, "UMLogics Corporation", "UMLOGICS" }, { 0x0050C2, 0xAEC000, 0xAECFFF, "Fritz Pauker Ingenieure GmbH", "FRITZ-PAUKER-INGENIEURE" }, { 0x0050C2, 0xAED000, 0xAEDFFF, "3Roam", "3ROAM" }, { 0x0050C2, 0xAEE000, 0xAEEFFF, "IPtec, Inc.", "IPTEC" }, { 0x0050C2, 0xAEF000, 0xAEFFFF, "National CineMedia", "NATIONAL-CINEMEDIA" }, { 0x0050C2, 0xAF0000, 0xAF0FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xAF1000, 0xAF1FFF, "Green Goose", "GREEN-GOOSE" }, { 0x0050C2, 0xAF2000, 0xAF2FFF, "ACD Elektronik Gmbh", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xAF3000, 0xAF3FFF, "Palomar Products, Inc.", "PALOMAR-PRODUCTS" }, { 0x0050C2, 0xAF4000, 0xAF4FFF, "Dixell S.p.A.", "DIXELL-S-P-A" }, { 0x0050C2, 0xAF5000, 0xAF5FFF, "Kramara s.r.o.", "KRAMARA-S-R-O" }, { 0x0050C2, 0xAF6000, 0xAF6FFF, "Energid", "ENERGID" }, { 0x0050C2, 0xAF7000, 0xAF7FFF, "Midwest Microwave Solutions Inc.", "MIDWEST-MICROWAVE-SOLUTIONS" }, { 0x0050C2, 0xAF8000, 0xAF8FFF, "Global Satellite Engineering", "GLOBAL-SATELLITE-ENGINEERING" }, { 0x0050C2, 0xAF9000, 0xAF9FFF, "Ingenieurbuero Bickele und Buehler GmbH", "INGENIEURBUERO-BICKELE-UND-BUEHLER" }, { 0x0050C2, 0xAFA000, 0xAFAFFF, "Absolute Fire Solutions Inc.", "ABSOLUTE-FIRE-SOLUTIONS" }, { 0x0050C2, 0xAFB000, 0xAFBFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xAFC000, 0xAFCFFF, "Odus Technologies SA", "ODUS-TECHNOLOGIES" }, { 0x0050C2, 0xAFD000, 0xAFDFFF, "HomeScenario, Inc.", "HOMESCENARIO" }, { 0x0050C2, 0xAFE000, 0xAFEFFF, "Trolex Limited", "TROLEX" }, { 0x0050C2, 0xAFF000, 0xAFFFFF, "XoByte LLC", "XOBYTE-LLC" }, { 0x0050C2, 0xB00000, 0xB00FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xB01000, 0xB01FFF, "HSR Harald L. Reuter", "HSR-HARALD-L-REUTER" }, { 0x0050C2, 0xB02000, 0xB02FFF, "MASTER CO LTD", "MASTER" }, { 0x0050C2, 0xB03000, 0xB03FFF, "Spider Tecnologia Ind. e Com. Ltda.", "SPIDER-TECNOLOGIA-IND-E-COM-LTDA" }, { 0x0050C2, 0xB04000, 0xB04FFF, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x0050C2, 0xB05000, 0xB05FFF, "POLA s.r.l.", "POLA-S-R-L" }, { 0x0050C2, 0xB06000, 0xB06FFF, "CompuDesigns, Inc.", "COMPUDESIGNS" }, { 0x0050C2, 0xB07000, 0xB07FFF, "FARECO", "FARECO" }, { 0x0050C2, 0xB08000, 0xB08FFF, "Goerlitz AG", "GOERLITZ" }, { 0x0050C2, 0xB09000, 0xB09FFF, "Harper Chalice Group Limited", "HARPER-CHALICE-GROUP" }, { 0x0050C2, 0xB0A000, 0xB0AFFF, "Indutherm Giesstechnologie GmbH", "INDUTHERM-GIESSTECHNOLOGIE" }, { 0x0050C2, 0xB0B000, 0xB0BFFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xB0C000, 0xB0CFFF, "SMARTB TECHNOLOGIES", "SMARTB-TECHNOLOGIES" }, { 0x0050C2, 0xB0D000, 0xB0DFFF, "Japan Electronics System, Inc", "JAPAN-ELECTRONICS-SYSTEM" }, { 0x0050C2, 0xB0E000, 0xB0EFFF, "KYAB Lulea AB", "KYAB-LULEA-AB" }, { 0x0050C2, 0xB0F000, 0xB0FFFF, "NARA Controls Inc.", "NARA-CONTROLS" }, { 0x0050C2, 0xB10000, 0xB10FFF, "Marine Entertainment Systems Ltd", "MARINE-ENTERTAINMENT" }, { 0x0050C2, 0xB11000, 0xB11FFF, "EXEL s.r.l", "EXEL-S-R-L" }, { 0x0050C2, 0xB12000, 0xB12FFF, "CM Elektronik GmbH", "CM-ELEKTRONIK" }, { 0x0050C2, 0xB13000, 0xB13FFF, "Measy Electronics Co., Ltd.", "MEASY-ELECTRONICS" }, { 0x0050C2, 0xB14000, 0xB14FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xB15000, 0xB15FFF, "PhotoTelesis LP", "PHOTOTELESIS-LP" }, { 0x0050C2, 0xB16000, 0xB16FFF, "Neothings, Inc.", "NEOTHINGS" }, { 0x0050C2, 0xB17000, 0xB17FFF, "Elcoteq Design Center Oy", "ELCOTEQ-DESIGN-CENTER-OY" }, { 0x0050C2, 0xB18000, 0xB18FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xB19000, 0xB19FFF, "Polytron Corporation", "POLYTRON" }, { 0x0050C2, 0xB1A000, 0xB1AFFF, "ELCUS", "ELCUS" }, { 0x0050C2, 0xB1B000, 0xB1BFFF, "Integrated Control Corp.", "INTEGRATED-CONTROL" }, { 0x0050C2, 0xB1C000, 0xB1CFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB1D000, 0xB1DFFF, "Telegenix", "TELEGENIX" }, { 0x0050C2, 0xB1E000, 0xB1EFFF, "Abbott Medical Optics", "ABBOTT-MEDICAL-OPTICS" }, { 0x0050C2, 0xB1F000, 0xB1FFFF, "SCA Schucker GmbH & Co.", "SCA-SCHUCKER" }, { 0x0050C2, 0xB20000, 0xB20FFF, "FIVE9 NETWORK SYSTEMS LLC", "FIVE9-NETWORK-LLC" }, { 0x0050C2, 0xB21000, 0xB21FFF, "Phytron-Elektronik GmbH", "PHYTRON-ELEKTRONIK" }, { 0x0050C2, 0xB22000, 0xB22FFF, "FarSite Communications Limited", "FARSITE-COMMUNICATION" }, { 0x0050C2, 0xB23000, 0xB23FFF, "Ronyo Technologies s.r.o.", "RONYO-TECHNOLOGIES-S-R-O" }, { 0x0050C2, 0xB24000, 0xB24FFF, "Teledyne Defence Limited", "TELEDYNE-DEFENCE" }, { 0x0050C2, 0xB25000, 0xB25FFF, "Triax A/S", "TRIAX-A/S" }, { 0x0050C2, 0xB26000, 0xB26FFF, "Elko Systems", "ELKO" }, { 0x0050C2, 0xB27000, 0xB27FFF, "ATEME", "ATEME" }, { 0x0050C2, 0xB28000, 0xB28FFF, "Micromax Pty. Ltd.", "MICROMAX-PTY" }, { 0x0050C2, 0xB29000, 0xB29FFF, "Integra LifeSciences (Ireland) Ltd", "INTEGRA-LIFESCIENCES-IRELAND" }, { 0x0050C2, 0xB2A000, 0xB2AFFF, "Trench Austria GmbH", "TRENCH-AUSTRIA" }, { 0x0050C2, 0xB2B000, 0xB2BFFF, "CosmoData Informatica Ltda.", "COSMODATA-INFORMATICA-LTDA" }, { 0x0050C2, 0xB2C000, 0xB2CFFF, "Concepteers, LLC", "CONCEPTEERS-LLC" }, { 0x0050C2, 0xB2D000, 0xB2DFFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x0050C2, 0xB2E000, 0xB2EFFF, "ACT", "ACT" }, { 0x0050C2, 0xB2F000, 0xB2FFFF, "IntelliVision Technologies, Corp", "INTELLIVISION-TECHNOLOGIES" }, { 0x0050C2, 0xB30000, 0xB30FFF, "Applied Micro Electronics AME BV", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0xB31000, 0xB31FFF, "Shop Safe AG", "SHOP-SAFE" }, { 0x0050C2, 0xB32000, 0xB32FFF, "Byres Security Inc", "BYRES-SECURITY" }, { 0x0050C2, 0xB33000, 0xB33FFF, "Numcore Ltd", "NUMCORE" }, { 0x0050C2, 0xB34000, 0xB34FFF, "Meisol co.,ltd", "MEISOL" }, { 0x0050C2, 0xB35000, 0xB35FFF, "haneron", "HANERON" }, { 0x0050C2, 0xB36000, 0xB36FFF, "CRDE", "CRDE" }, { 0x0050C2, 0xB37000, 0xB37FFF, "IAdea Corporation", "IADEA" }, { 0x0050C2, 0xB38000, 0xB38FFF, "Grenmore Ltd", "GRENMORE" }, { 0x0050C2, 0xB39000, 0xB39FFF, "siXis, Inc.", "SIXIS" }, { 0x0050C2, 0xB3A000, 0xB3AFFF, "Nikon Systems Inc.", "NIKON" }, { 0x0050C2, 0xB3B000, 0xB3BFFF, "Sportvision Inc.", "SPORTVISION" }, { 0x0050C2, 0xB3C000, 0xB3CFFF, "JanasCard", "JANASCARD" }, { 0x0050C2, 0xB3D000, 0xB3DFFF, "AMS", "AMS" }, { 0x0050C2, 0xB3E000, 0xB3EFFF, "Sage Consultants", "SAGE-CONSULTANTS" }, { 0x0050C2, 0xB3F000, 0xB3FFFF, "M-Tronic Design and Technology GmbH", "M-TRONIC-DESIGN-AND" }, { 0x0050C2, 0xB40000, 0xB40FFF, "Tecnint HTE SRL", "TECNINT-HTE-SRL" }, { 0x0050C2, 0xB41000, 0xB41FFF, "Tata Power Company, Strategic Electronics Division", "TATA-POWER-COMPANY-STRATEGIC-ELECTRONICS-DIVISION" }, { 0x0050C2, 0xB42000, 0xB42FFF, "ETM Electromatic Incorporated", "ETM-ELECTROMATIC-INCORPORATED" }, { 0x0050C2, 0xB43000, 0xB43FFF, "J-Systems Inc.", "J" }, { 0x0050C2, 0xB44000, 0xB44FFF, "Ampcontrol Pty Ltd", "AMPCONTROL-PTY" }, { 0x0050C2, 0xB45000, 0xB45FFF, "Efftronics Systems (P) Ltd", "EFFTRONICS-P" }, { 0x0050C2, 0xB46000, 0xB46FFF, "Mobileye", "MOBILEYE" }, { 0x0050C2, 0xB47000, 0xB47FFF, "MCS MICRONIC Computer Systeme GmbH", "MCS-MICRONIC-SYSTEME" }, { 0x0050C2, 0xB48000, 0xB48FFF, "MTD GmbH", "MTD" }, { 0x0050C2, 0xB49000, 0xB49FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xB4A000, 0xB4AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xB4B000, 0xB4BFFF, "Chitose Co.,Ltd", "CHITOSE" }, { 0x0050C2, 0xB4C000, 0xB4CFFF, "ElectroCom", "ELECTROCOM" }, { 0x0050C2, 0xB4D000, 0xB4DFFF, "Troll Systems Corporation", "TROLL" }, { 0x0050C2, 0xB4E000, 0xB4EFFF, "AixControl GmbH", "AIXCONTROL" }, { 0x0050C2, 0xB4F000, 0xB4FFFF, "Sencon UK Ltd.", "SENCON-UK" }, { 0x0050C2, 0xB50000, 0xB50FFF, "SELCO", "SELCO" }, { 0x0050C2, 0xB51000, 0xB51FFF, "Aeroflex GmbH", "AEROFLEX" }, { 0x0050C2, 0xB52000, 0xB52FFF, "SMH Technologies", "SMH-TECHNOLOGIES" }, { 0x0050C2, 0xB53000, 0xB53FFF, "Prodco", "PRODCO" }, { 0x0050C2, 0xB54000, 0xB54FFF, "APG Cash Drawer, LLC", "APG-CASH-DRAWER-LLC" }, { 0x0050C2, 0xB55000, 0xB55FFF, "SANYO ELECTRONIC INDUSTRIES CO.,LTD", "SANYO-INDUSTRIES" }, { 0x0050C2, 0xB56000, 0xB56FFF, "SINOVIA SA", "SINOVIA" }, { 0x0050C2, 0xB57000, 0xB57FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB58000, 0xB58FFF, "Real D", "REAL-D" }, { 0x0050C2, 0xB59000, 0xB59FFF, "SLICAN sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0x0050C2, 0xB5A000, 0xB5AFFF, "GREEN Center s.r.o.", "GREEN-CENTER-S-R-O" }, { 0x0050C2, 0xB5B000, 0xB5BFFF, "Timberline Mfg Company", "TIMBERLINE-MFG-COMPANY" }, { 0x0050C2, 0xB5C000, 0xB5CFFF, "ADI Video Technologies", "ADI-VIDEO-TECHNOLOGIES" }, { 0x0050C2, 0xB5D000, 0xB5DFFF, "Plitron Manufacturing Inc.", "PLITRON-MANUFACTURING" }, { 0x0050C2, 0xB5E000, 0xB5EFFF, "Palgiken Co.,Ltd.", "PALGIKEN" }, { 0x0050C2, 0xB5F000, 0xB5FFFF, "North Bridge Technologies", "NORTH-BRIDGE-TECHNOLOGIES" }, { 0x0050C2, 0xB60000, 0xB60FFF, "OOO NPF ATIS", "OOO-NPF-ATIS" }, { 0x0050C2, 0xB61000, 0xB61FFF, "Nayos LTD", "NAYOS" }, { 0x0050C2, 0xB62000, 0xB62FFF, "Measurement Technology NW", "MEASUREMENT-NW" }, { 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, 0xB65000, 0xB65FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xB66000, 0xB66FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xB67000, 0xB67FFF, "RC Systems Co. Inc.", "RC" }, { 0x0050C2, 0xB68000, 0xB68FFF, "Electronic Systems Protection, Inc.", "PROTECTION" }, { 0x0050C2, 0xB69000, 0xB69FFF, "Thetis S.p.A.", "THETIS-S-P-A" }, { 0x0050C2, 0xB6A000, 0xB6AFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB6B000, 0xB6BFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xB6C000, 0xB6CFFF, "Drinelec", "DRINELEC" }, { 0x0050C2, 0xB6D000, 0xB6DFFF, "Sound Metrics Corp", "SOUND-METRICS" }, { 0x0050C2, 0xB6E000, 0xB6EFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xB6F000, 0xB6FFFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xB70000, 0xB70FFF, "Nisshin Electronics co.,ltd.", "NISSHIN-ELECTRONICS" }, { 0x0050C2, 0xB71000, 0xB71FFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 0x0050C2, 0xB72000, 0xB72FFF, "Advanced Desktop Systems Ltd", "ADVANCED-DESKTOP" }, { 0x0050C2, 0xB73000, 0xB73FFF, "ARKRAY, Inc. Kyoto Laboratory", "ARKRAY-KYOTO-LABORATORY" }, { 0x0050C2, 0xB74000, 0xB74FFF, "AXED Jakubowski Wojciechowski sp.j.", "AXED-JAKUBOWSKI-WOJCIECHOWSKI-SP-J" }, { 0x0050C2, 0xB75000, 0xB75FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0xB76000, 0xB76FFF, "ITF Fröschl GmbH", "ITF-FRöSCHL" }, { 0x0050C2, 0xB77000, 0xB77FFF, "KRISTECH", "KRISTECH" }, { 0x0050C2, 0xB78000, 0xB78FFF, "Folink", "FOLINK" }, { 0x0050C2, 0xB79000, 0xB79FFF, "MITSUYA LABORATORIES INC.", "MITSUYA-LABORATORIES" }, { 0x0050C2, 0xB7A000, 0xB7AFFF, "Schnoor Industrieelektronik GmbH & Co. KG", "SCHNOOR-INDUSTRIEELEKTRONIK" }, { 0x0050C2, 0xB7B000, 0xB7BFFF, "QUARTECH CORPORATION", "QUARTECH" }, { 0x0050C2, 0xB7C000, 0xB7CFFF, "Bettini srl", "BETTINI-SRL" }, { 0x0050C2, 0xB7D000, 0xB7DFFF, "ELETECH Srl", "ELETECH-SRL" }, { 0x0050C2, 0xB7E000, 0xB7EFFF, "NARETRENDS", "NARETRENDS" }, { 0x0050C2, 0xB7F000, 0xB7FFFF, "Enatel", "ENATEL" }, { 0x0050C2, 0xB80000, 0xB80FFF, "iScreen LLC", "ISCREEN-LLC" }, { 0x0050C2, 0xB81000, 0xB81FFF, "GHL Advanced Technolgy GmbH & Co. KG", "GHL-ADVANCED-TECHNOLGY" }, { 0x0050C2, 0xB82000, 0xB82FFF, "TANABIKI Inc.", "TANABIKI" }, { 0x0050C2, 0xB83000, 0xB83FFF, "Advanced Storage Concepts, Inc.", "ADVANCED-STORAGE-CONCEPTS" }, { 0x0050C2, 0xB84000, 0xB84FFF, "Innovate Software Solutions Pvt Ltd", "INNOVATE-SOFTWARE-SOLUTIONS-PVT" }, { 0x0050C2, 0xB85000, 0xB85FFF, "SilverNet", "SILVERNET" }, { 0x0050C2, 0xB86000, 0xB86FFF, "ASTO", "ASTO" }, { 0x0050C2, 0xB87000, 0xB87FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xB88000, 0xB88FFF, "Gigatronik Köln GmbH", "GIGATRONIK-KöLN" }, { 0x0050C2, 0xB89000, 0xB89FFF, "ENTEC Electric & Electronic Co., LTD.", "ENTEC-ELECTRIC" }, { 0x0050C2, 0xB8A000, 0xB8AFFF, "MicroPoise", "MICROPOISE" }, { 0x0050C2, 0xB8B000, 0xB8BFFF, "FBB", "FBB" }, { 0x0050C2, 0xB8C000, 0xB8CFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xB8D000, 0xB8DFFF, "CEMSI", "CEMSI" }, { 0x0050C2, 0xB8E000, 0xB8EFFF, "WAC (Israel) Ltd.", "WAC-ISRAEL" }, { 0x0050C2, 0xB8F000, 0xB8FFFF, "Gentec", "GENTEC" }, { 0x0050C2, 0xB90000, 0xB90FFF, "NAONWORKS Co., Ltd", "NAONWORKS" }, { 0x0050C2, 0xB91000, 0xB91FFF, "Finnet-Service Ltd.", "FINNET-SERVICE" }, { 0x0050C2, 0xB92000, 0xB92FFF, "ABB Transmission and Distribution Auto Eqip(Xiamen.China)", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTO-EQIP-XIAMEN-CHINA" }, { 0x0050C2, 0xB93000, 0xB93FFF, "EMC PARTNER AG", "EMC-PARTNER" }, { 0x0050C2, 0xB94000, 0xB94FFF, "Tritech International Ltd", "TRITECH" }, { 0x0050C2, 0xB95000, 0xB95FFF, "Rx Monitoring Services", "RX-MONITORING-SERVICES" }, { 0x0050C2, 0xB96000, 0xB96FFF, "Onix Electronic Systems Inc", "ONIX" }, { 0x0050C2, 0xB97000, 0xB97FFF, "ikerlan", "IKERLAN" }, { 0x0050C2, 0xB98000, 0xB98FFF, "Southwest Research Institute", "SOUTHWEST-RESEARCH-INSTITUTE" }, { 0x0050C2, 0xB99000, 0xB99FFF, "Greenlight Innovation Corp.", "GREENLIGHT-INNOVATION" }, { 0x0050C2, 0xB9A000, 0xB9AFFF, "Talo, NV Inc", "TALO-NV" }, { 0x0050C2, 0xB9B000, 0xB9BFFF, "Telventy Energia S.A.", "TELVENTY-ENERGIA" }, { 0x0050C2, 0xB9C000, 0xB9CFFF, "Dave srl", "DAVE-SRL" }, { 0x0050C2, 0xB9D000, 0xB9DFFF, "W. Vershoven GmbH", "W-VERSHOVEN" }, { 0x0050C2, 0xB9E000, 0xB9EFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xB9F000, 0xB9FFFF, "AUDIOSCOPE 2K SRL", "AUDIOSCOPE-2K-SRL" }, { 0x0050C2, 0xBA0000, 0xBA0FFF, "txtr GmbH", "TXTR" }, { 0x0050C2, 0xBA1000, 0xBA1FFF, "Transtechnik GmbH & Co.KG", "TRANSTECHNIK" }, { 0x0050C2, 0xBA2000, 0xBA2FFF, "Logical Tools s.r.l.", "LOGICAL-TOOLS-S-R-L" }, { 0x0050C2, 0xBA3000, 0xBA3FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xBA4000, 0xBA4FFF, "CUSTOS MOBILE S.L.", "CUSTOS-MOBILE-S-L" }, { 0x0050C2, 0xBA5000, 0xBA5FFF, "InterCel Pty Ltd", "INTERCEL-PTY" }, { 0x0050C2, 0xBA6000, 0xBA6FFF, "Jomitek", "JOMITEK" }, { 0x0050C2, 0xBA7000, 0xBA7FFF, "RaumComputer Entwicklungs- und Vertriebs GmbH", "RAUMCOMPUTER-ENTWICKLUNGS--UND-VERTRIEBS" }, { 0x0050C2, 0xBA8000, 0xBA8FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xBA9000, 0xBA9FFF, "SISS Technology Inc.", "SISS" }, { 0x0050C2, 0xBAA000, 0xBAAFFF, "NetworkFX Communications, LLC", "NETWORKFX-COMMUNICATION-LLC" }, { 0x0050C2, 0xBAB000, 0xBABFFF, "iDeal Teknoloji Bilisim Cozumleri A.S.", "IDEAL-TEKNOLOJI-BILISIM-COZUMLERI-A-S" }, { 0x0050C2, 0xBAC000, 0xBACFFF, "VITECO VNPT JSC", "VITECO-VNPT-JSC" }, { 0x0050C2, 0xBAD000, 0xBADFFF, "Prediktor AS", "PREDIKTOR-AS" }, { 0x0050C2, 0xBAE000, 0xBAEFFF, "Fiber Connections Inc.", "FIBER-CONNECTIONS" }, { 0x0050C2, 0xBAF000, 0xBAFFFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0xBB0000, 0xBB0FFF, "Gainbrain", "GAINBRAIN" }, { 0x0050C2, 0xBB1000, 0xBB1FFF, "Pro4tech", "PRO4TECH" }, { 0x0050C2, 0xBB2000, 0xBB2FFF, "St Michael Strategies Inc", "ST-MICHAEL-STRATEGIES" }, { 0x0050C2, 0xBB3000, 0xBB3FFF, "ClimateWell AB (publ)", "CLIMATEWELL-AB-PUBL" }, { 0x0050C2, 0xBB4000, 0xBB4FFF, "JSC Electrical Equipment Factory", "JSC-ELECTRICAL-EQUIPMENT-FACTORY" }, { 0x0050C2, 0xBB5000, 0xBB5FFF, "MROAD INFORMATION SYSTEM", "MROAD-INFORMATION-SYSTEM" }, { 0x0050C2, 0xBB6000, 0xBB6FFF, "Quarch Technology Ltd", "QUARCH" }, { 0x0050C2, 0xBB7000, 0xBB7FFF, "General Dynamics C4 Systems", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xBB8000, 0xBB8FFF, "MoeTronix", "MOETRONIX" }, { 0x0050C2, 0xBB9000, 0xBB9FFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0xBBA000, 0xBBAFFF, "Systemteq Limited", "SYSTEMTEQ" }, { 0x0050C2, 0xBBB000, 0xBBBFFF, "GHL Systems Berhad", "GHL-BERHAD" }, { 0x0050C2, 0xBBC000, 0xBBCFFF, "ImpactSystems", "IMPACTSYSTEMS" }, { 0x0050C2, 0xBBD000, 0xBBDFFF, "ITS Telecom", "ITS-TELECOM" }, { 0x0050C2, 0xBBE000, 0xBBEFFF, "Onlinepizza Norden AB", "ONLINEPIZZA-NORDEN-AB" }, { 0x0050C2, 0xBBF000, 0xBBFFFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xBC0000, 0xBC0FFF, "Galaxia Electronics", "GALAXIA-ELECTRONICS" }, { 0x0050C2, 0xBC1000, 0xBC1FFF, "Sentec Ltd", "SENTEC" }, { 0x0050C2, 0xBC2000, 0xBC2FFF, "XSLENT Energy Technologies LLC", "XSLENT-ENERGY-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xBC3000, 0xBC3FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xBC4000, 0xBC4FFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x0050C2, 0xBC5000, 0xBC5FFF, "Toptechnology SRL", "TOPTECHNOLOGY-SRL" }, { 0x0050C2, 0xBC6000, 0xBC6FFF, "MireroTack", "MIREROTACK" }, { 0x0050C2, 0xBC7000, 0xBC7FFF, "PTS GmbH", "PTS" }, { 0x0050C2, 0xBC8000, 0xBC8FFF, "AGWTech Ltd", "AGWTECH" }, { 0x0050C2, 0xBC9000, 0xBC9FFF, "Nextmove Technologies", "NEXTMOVE-TECHNOLOGIES" }, { 0x0050C2, 0xBCA000, 0xBCAFFF, "Aitecsystem Co.,Ltd.", "AITECSYSTEM" }, { 0x0050C2, 0xBCB000, 0xBCBFFF, "ARTEIXO TELECOM", "ARTEIXO-TELECOM" }, { 0x0050C2, 0xBCC000, 0xBCCFFF, "VVDN TECHNOLOGIES PVT. LTD.", "VVDN-TECHNOLOGIES-PVT" }, { 0x0050C2, 0xBCD000, 0xBCDFFF, "Highlight Parking Systems Ltd", "HIGHLIGHT-PARKING" }, { 0x0050C2, 0xBCE000, 0xBCEFFF, "TV Portal Co., Ltd.", "TV-PORTAL" }, { 0x0050C2, 0xBCF000, 0xBCFFFF, "Epiko, elektronski sistemi d.o.o.", "EPIKO-ELEKTRONSKI-SISTEMI-D-O-O" }, { 0x0050C2, 0xBD0000, 0xBD0FFF, "EDC wifi", "EDC-WIFI" }, { 0x0050C2, 0xBD1000, 0xBD1FFF, "Ariem Technologies Pvt Ltd", "ARIEM-TECHNOLOGIES-PVT" }, { 0x0050C2, 0xBD2000, 0xBD2FFF, "Percello Ltd.", "PERCELLO" }, { 0x0050C2, 0xBD3000, 0xBD3FFF, "Postjet Systems Ltd", "POSTJET" }, { 0x0050C2, 0xBD4000, 0xBD4FFF, "Global Security Devices", "GLOBAL-SECURITY-DEVICES" }, { 0x0050C2, 0xBD5000, 0xBD5FFF, "RF-Embedded GmbH", "RF-EMBEDDED" }, { 0x0050C2, 0xBD6000, 0xBD6FFF, "BG Systems, Inc.", "BG" }, { 0x0050C2, 0xBD7000, 0xBD7FFF, "SLAT", "SLAT" }, { 0x0050C2, 0xBD8000, 0xBD8FFF, "b.a.b-technologie gmbh", "B-A-B-TECHNOLOGIE" }, { 0x0050C2, 0xBD9000, 0xBD9FFF, "AMS Controls, Inc.", "AMS-CONTROLS" }, { 0x0050C2, 0xBDA000, 0xBDAFFF, "Digital Lumens", "DIGITAL-LUMENS" }, { 0x0050C2, 0xBDB000, 0xBDBFFF, "GasTOPS Ltd.", "GASTOPS" }, { 0x0050C2, 0xBDC000, 0xBDCFFF, "SS Systems LLC", "SS-LLC" }, { 0x0050C2, 0xBDE000, 0xBDEFFF, "Evo-Teh d.o.o.", "EVO-TEH-D-O-O" }, { 0x0050C2, 0xBDF000, 0xBDFFFF, "Euro-Konsult Sp. z o.o.", "EURO-KONSULT-SP-Z-O-O" }, { 0x0050C2, 0xBE0000, 0xBE0FFF, "Phaedrus Limited", "PHAEDRUS" }, { 0x0050C2, 0xBE1000, 0xBE1FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0xBE2000, 0xBE2FFF, "Convergent Bioscience Ltd.", "CONVERGENT-BIOSCIENCE" }, { 0x0050C2, 0xBE3000, 0xBE3FFF, "Jiskoot Ltd", "JISKOOT" }, { 0x0050C2, 0xBE4000, 0xBE4FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xBE5000, 0xBE5FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xBE6000, 0xBE6FFF, "Docobo Ltd", "DOCOBO" }, { 0x0050C2, 0xBE7000, 0xBE7FFF, "Genetec Inc.", "GENETEC" }, { 0x0050C2, 0xBE8000, 0xBE8FFF, "VEHICLE TESTING EQUIPMENT, S.L.", "VEHICLE-TESTING-EQUIPMENT-S-L" }, { 0x0050C2, 0xBE9000, 0xBE9FFF, "ZUCCHETTI SPA", "ZUCCHETTI-SPA" }, { 0x0050C2, 0xBEA000, 0xBEAFFF, "Daeyoung inc.", "DAEYOUNG" }, { 0x0050C2, 0xBEB000, 0xBEBFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xBEC000, 0xBECFFF, "DRS Laruel Technologies", "DRS-LARUEL-TECHNOLOGIES" }, { 0x0050C2, 0xBED000, 0xBEDFFF, "Touch Revolution Inc.", "TOUCH-REVOLUTION" }, { 0x0050C2, 0xBEE000, 0xBEEFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xBEF000, 0xBEFFFF, "SOCIEDAD IBERICA DE CONSTRUCCIONES ELECTRICAS, S.A. (SICE)", "SOCIEDAD-IBERICA-DE-CONSTRUCCIONES-ELECTRICAS-SICE" }, { 0x0050C2, 0xBF0000, 0xBF0FFF, "AIM", "AIM" }, { 0x0050C2, 0xBF1000, 0xBF1FFF, "Amatic Industries GmbH", "AMATIC-INDUSTRIES" }, { 0x0050C2, 0xBF2000, 0xBF2FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xBF3000, 0xBF3FFF, "Wanco Inc.", "WANCO" }, { 0x0050C2, 0xBF4000, 0xBF4FFF, "Monarch Innovative Technologies Pvt Ltd", "MONARCH-INNOVATIVE-TECHNOLOGIES-PVT" }, { 0x0050C2, 0xBF5000, 0xBF5FFF, "AILES ELECTRONICS CO., LTD.", "AILES-ELECTRONICS" }, { 0x0050C2, 0xBF6000, 0xBF6FFF, "NOLAM EMBEDDED SYSTEMS", "NOLAM-EMBEDDED" }, { 0x0050C2, 0xBF7000, 0xBF7FFF, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x0050C2, 0xBF8000, 0xBF8FFF, "Crtiical Link", "CRTIICAL-LINK" }, { 0x0050C2, 0xBF9000, 0xBF9FFF, "Vitel Net", "VITEL-NET" }, { 0x0050C2, 0xBFA000, 0xBFAFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xBFB000, 0xBFBFFF, "ECS Srl", "ECS-SRL" }, { 0x0050C2, 0xBFC000, 0xBFCFFF, "Altronix Corporation", "ALTRONIX" }, { 0x0050C2, 0xBFD000, 0xBFDFFF, "Ernemann Cine Tec GmbH", "ERNEMANN-CINE-TEC" }, { 0x0050C2, 0xBFE000, 0xBFEFFF, "Ingeteam Paneles S.A.U.", "INGETEAM-PANELES-U" }, { 0x0050C2, 0xBFF000, 0xBFFFFF, "I.S.A. S.r.l.", "I-S-R-L" }, { 0x0050C2, 0xC00000, 0xC00FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xC01000, 0xC01FFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x0050C2, 0xC02000, 0xC02FFF, "Hanning Elektro-Werke GmbH & Co. KG", "HANNING-ELEKTRO-WERKE" }, { 0x0050C2, 0xC03000, 0xC03FFF, "Volumatic Limited.", "VOLUMATIC" }, { 0x0050C2, 0xC04000, 0xC04FFF, "SoGEME", "SOGEME" }, { 0x0050C2, 0xC05000, 0xC05FFF, "Doppler Systems LLC", "DOPPLER-LLC" }, { 0x0050C2, 0xC06000, 0xC06FFF, "ANALOG WAY", "ANALOG-WAY" }, { 0x0050C2, 0xC07000, 0xC07FFF, "CIO Informatique Industrielle", "CIO-INFORMATIQUE-INDUSTRIELLE" }, { 0x0050C2, 0xC08000, 0xC08FFF, "juiceboss", "JUICEBOSS" }, { 0x0050C2, 0xC09000, 0xC09FFF, "Globe Wireless", "GLOBE-WIRELESS" }, { 0x0050C2, 0xC0A000, 0xC0AFFF, "ABB Transmission and Distribution Auto Eqip(Xiamen.China)", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTO-EQIP-XIAMEN-CHINA" }, { 0x0050C2, 0xC0B000, 0xC0BFFF, "ProSourcing GmbH", "PROSOURCING" }, { 0x0050C2, 0xC0C000, 0xC0CFFF, "Altierre", "ALTIERRE" }, { 0x0050C2, 0xC0D000, 0xC0DFFF, "Fr. SauterAG", "FR-SAUTERAG" }, { 0x0050C2, 0xC0E000, 0xC0EFFF, "AVItronic GmbH", "AVITRONIC" }, { 0x0050C2, 0xC0F000, 0xC0FFFF, "DYCEC, S.A.", "DYCEC" }, { 0x0050C2, 0xC10000, 0xC10FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xC11000, 0xC11FFF, "ART Antriebs- und Regeltechnik GmbH", "ART-ANTRIEBS--UND-REGELTECHNIK" }, { 0x0050C2, 0xC12000, 0xC12FFF, "OKI DENKI BOHSAI CO.,LTD.", "OKI-DENKI-BOHSAI" }, { 0x0050C2, 0xC13000, 0xC13FFF, "Dantec Dynamics A/S", "DANTEC-DYNAMICS-A/S" }, { 0x0050C2, 0xC14000, 0xC14FFF, "Spectronix Corporation", "SPECTRONIX" }, { 0x0050C2, 0xC15000, 0xC15FFF, "INO - Institut National d'Optique", "INO---INSTITUT-NATIONAL-D-OPTIQUE" }, { 0x0050C2, 0xC16000, 0xC16FFF, "OMICRON electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x0050C2, 0xC17000, 0xC17FFF, "Axis-Shield PoC AS", "AXIS-SHIELD-POC-AS" }, { 0x0050C2, 0xC18000, 0xC18FFF, "Linuxstamp Designs, LLC", "LINUXSTAMP-DESIGNS-LLC" }, { 0x0050C2, 0xC19000, 0xC19FFF, "Ibercomp SA", "IBERCOMP" }, { 0x0050C2, 0xC1A000, 0xC1AFFF, "SAM Co., Ltd.", "SAM" }, { 0x0050C2, 0xC1B000, 0xC1BFFF, "Graesslin GmbH", "GRAESSLIN" }, { 0x0050C2, 0xC1C000, 0xC1CFFF, "Becton Dickinson", "BECTON-DICKINSON" }, { 0x0050C2, 0xC1D000, 0xC1DFFF, "Powerbase Energy Systems Inc.", "POWERBASE-ENERGY" }, { 0x0050C2, 0xC1E000, 0xC1EFFF, "Peperoni-Light", "PEPERONI-LIGHT" }, { 0x0050C2, 0xC1F000, 0xC1FFFF, "Specialist Electronics Services Ltd", "SPECIALIST-ELECTRONICS-SERVICES" }, { 0x0050C2, 0xC20000, 0xC20FFF, "SRC Computers, LLC", "SRC-COMPUTERS-LLC" }, { 0x0050C2, 0xC21000, 0xC21FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xC22000, 0xC22FFF, "Audient Ltd", "AUDIENT" }, { 0x0050C2, 0xC23000, 0xC23FFF, "Vidicon LLC", "VIDICON-LLC" }, { 0x0050C2, 0xC24000, 0xC24FFF, "Qualnetics Corporation", "QUALNETICS" }, { 0x0050C2, 0xC25000, 0xC25FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xC26000, 0xC26FFF, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0x0050C2, 0xC27000, 0xC27FFF, "Qtechnology A/S", "QTECHNOLOGY-A/S" }, { 0x0050C2, 0xC28000, 0xC28FFF, "ELREHA GmbH", "ELREHA" }, { 0x0050C2, 0xC29000, 0xC29FFF, "Newtel Engineering S.r.l.", "NEWTEL-ENGINEERING-S-R-L" }, { 0x0050C2, 0xC2A000, 0xC2AFFF, "RealTime Systems Ltd", "REALTIME" }, { 0x0050C2, 0xC2B000, 0xC2BFFF, "Z-App Systems, Inc.", "Z-APP" }, { 0x0050C2, 0xC2C000, 0xC2CFFF, "bach-messtechnik gmbh", "BACH-MESSTECHNIK" }, { 0x0050C2, 0xC2D000, 0xC2DFFF, "Digitale Analoge COMponenten West Electronic Vertriebs GmbH", "DIGITALE-ANALOGE-COMPONENTEN-WEST-VERTRIEBS" }, { 0x0050C2, 0xC2E000, 0xC2EFFF, "DISMUNTEL SAL", "DISMUNTEL-SAL" }, { 0x0050C2, 0xC2F000, 0xC2FFFF, "REFLEX CES", "REFLEX-CES" }, { 0x0050C2, 0xC30000, 0xC30FFF, "Wagner Group GmbH", "WAGNER-GROUP" }, { 0x0050C2, 0xC31000, 0xC31FFF, "4D Technology Corporation", "4D" }, { 0x0050C2, 0xC32000, 0xC32FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0xC34000, 0xC34FFF, "Kyuhen", "KYUHEN" }, { 0x0050C2, 0xC35000, 0xC35FFF, "Insitu, Inc.", "INSITU" }, { 0x0050C2, 0xC36000, 0xC36FFF, "SET GmbH", "SET" }, { 0x0050C2, 0xC37000, 0xC37FFF, "B.E.A.R. Solutions (Australasia) Pty, Ltd", "B-E-A-R-SOLUTIONS-AUSTRALASIA-PTY" }, { 0x0050C2, 0xC38000, 0xC38FFF, "Computer Automation Technology Inc", "AUTOMATION" }, { 0x0050C2, 0xC39000, 0xC39FFF, "SECAD SA", "SECAD" }, { 0x0050C2, 0xC3A000, 0xC3AFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xC3B000, 0xC3BFFF, "ELEKTRO-AUTOMATIK GmbH & Co. KG", "ELEKTRO-AUTOMATIK" }, { 0x0050C2, 0xC3C000, 0xC3CFFF, "ELSIST S.r.l.", "ELSIST-S-R-L" }, { 0x0050C2, 0xC3D000, 0xC3DFFF, "PLA ELECTRO APPLIANCES PVT. LTD.", "PLA-ELECTRO-APPLIANCES-PVT" }, { 0x0050C2, 0xC3E000, 0xC3EFFF, "Sysacom", "SYSACOM" }, { 0x0050C2, 0xC3F000, 0xC3FFFF, "ANXeBusiness Corporation", "ANXEBUSINESS" }, { 0x0050C2, 0xC40000, 0xC40FFF, "BAE Systems Bofors AB", "BAE-BOFORS-AB" }, { 0x0050C2, 0xC41000, 0xC41FFF, "COMPRION GmbH", "COMPRION" }, { 0x0050C2, 0xC42000, 0xC42FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xC43000, 0xC43FFF, "Cammegh Limited", "CAMMEGH" }, { 0x0050C2, 0xC44000, 0xC44FFF, "Beijing Zhongherongzhi Elec.&Tech.Co.,Ltd.", "BEIJING-ZHONGHERONGZHI-ELEC-TECH" }, { 0x0050C2, 0xC45000, 0xC45FFF, "Galvamat & Unican Technologies SA", "GALVAMAT-UNICAN-TECHNOLOGIES" }, { 0x0050C2, 0xC46000, 0xC46FFF, "QNE GmbH & Co. KG", "QNE" }, { 0x0050C2, 0xC47000, 0xC47FFF, "Weltek Technologies Co. Ltd.", "WELTEK-TECHNOLOGIES" }, { 0x0050C2, 0xC48000, 0xC48FFF, "Cytek Media Systems, INC.", "CYTEK-MEDIA" }, { 0x0050C2, 0xC49000, 0xC49FFF, "Elektronic Thoma GmbH", "ELEKTRONIC-THOMA" }, { 0x0050C2, 0xC4A000, 0xC4AFFF, "Herrick Technology Laboratories, Inc.", "HERRICK-LABORATORIES" }, { 0x0050C2, 0xC4B000, 0xC4BFFF, "R.V.R. elettronica s.p.a.", "R-V-R-ELETTRONICA-S-P-A" }, { 0x0050C2, 0xC4C000, 0xC4CFFF, "Lancier Monitoring GmbH", "LANCIER-MONITORING" }, { 0x0050C2, 0xC4D000, 0xC4DFFF, "Industrial Automation Systems", "INDUSTRIAL-AUTOMATION" }, { 0x0050C2, 0xC4E000, 0xC4EFFF, "Elaso AG", "ELASO" }, { 0x0050C2, 0xC4F000, 0xC4FFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xC50000, 0xC50FFF, "Beceem Communications, Inc.", "BECEEM-COMMUNICATION" }, { 0x0050C2, 0xC51000, 0xC51FFF, "InForce Computing, Inc.", "INFORCE-COMPUTING" }, { 0x0050C2, 0xC52000, 0xC52FFF, "Smartfield, Inc.", "SMARTFIELD" }, { 0x0050C2, 0xC53000, 0xC53FFF, "Eilersen Electric A/S", "EILERSEN-ELECTRIC-A/S" }, { 0x0050C2, 0xC54000, 0xC54FFF, "HPC Platform", "HPC-PLATFORM" }, { 0x0050C2, 0xC55000, 0xC55FFF, "Watterott electronic", "WATTEROTT" }, { 0x0050C2, 0xC56000, 0xC56FFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0xC57000, 0xC57FFF, "High Speed Design, Inc.", "HIGH-SPEED-DESIGN" }, { 0x0050C2, 0xC58000, 0xC58FFF, "Foerster-Technik GmbH", "FOERSTER-TECHNIK" }, { 0x0050C2, 0xC59000, 0xC59FFF, "SKD System AB", "SKD-SYSTEM-AB" }, { 0x0050C2, 0xC5A000, 0xC5AFFF, "Commotive A/S", "COMMOTIVE-A/S" }, { 0x0050C2, 0xC5B000, 0xC5BFFF, "MICRO TECHNICA", "MICRO-TECHNICA" }, { 0x0050C2, 0xC5C000, 0xC5CFFF, "WAVECOM ELEKTRONIK AG", "WAVECOM-ELEKTRONIK" }, { 0x0050C2, 0xC5D000, 0xC5DFFF, "SweMet AB", "SWEMET-AB" }, { 0x0050C2, 0xC5E000, 0xC5EFFF, "CellPlus technologies, Inc.", "CELLPLUS-TECHNOLOGIES" }, { 0x0050C2, 0xC5F000, 0xC5FFFF, "Icon Time Systems", "ICON-TIME" }, { 0x0050C2, 0xC60000, 0xC60FFF, "Integration Technologies Limited", "INTEGRATION-TECHNOLOGIES" }, { 0x0050C2, 0xC61000, 0xC61FFF, "HaiVision Systems Incorporated", "HAIVISION-INCORPORATED" }, { 0x0050C2, 0xC62000, 0xC62FFF, "Zeus Systems Private Limited", "ZEUS-PRIVATE" }, { 0x0050C2, 0xC63000, 0xC63FFF, "Potter Electric Signal Company", "POTTER-ELECTRIC-SIGNAL-COMPANY" }, { 0x0050C2, 0xC64000, 0xC64FFF, "Pal Software Service Co.,Ltd.", "PAL-SOFTWARE-SERVICE" }, { 0x0050C2, 0xC65000, 0xC65FFF, "Micro I/O Servicos de Electronica, Lda", "MICRO-I/O-SERVICOS-DE-ELECTRONICA-LDA" }, { 0x0050C2, 0xC66000, 0xC66FFF, "KS Beschallungstechnik GmbH", "KS-BESCHALLUNGSTECHNIK" }, { 0x0050C2, 0xC67000, 0xC67FFF, "Practical Control Ltd", "PRACTICAL-CONTROL" }, { 0x0050C2, 0xC68000, 0xC68FFF, "Broadsoft PacketSmart, Inc.", "BROADSOFT-PACKETSMART" }, { 0x0050C2, 0xC69000, 0xC69FFF, "REBO CO.,LTD.", "REBO" }, { 0x0050C2, 0xC6A000, 0xC6AFFF, "ELECTRONICA KELD", "ELECTRONICA-KELD" }, { 0x0050C2, 0xC6B000, 0xC6BFFF, "SiGarden Sp z o.o.", "SIGARDEN-SP-Z-O-O" }, { 0x0050C2, 0xC6C000, 0xC6CFFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0xC6D000, 0xC6DFFF, "Deansoft CO., Ltd.", "DEANSOFT" }, { 0x0050C2, 0xC6E000, 0xC6EFFF, "TBS Holding AG", "TBS-HOLDING" }, { 0x0050C2, 0xC6F000, 0xC6FFFF, "MSB Elektronik und Geraetebau GmbH", "MSB-ELEKTRONIK-UND-GERAETEBAU" }, { 0x0050C2, 0xC70000, 0xC70FFF, "Wilke Technology GmbH", "WILKE" }, { 0x0050C2, 0xC71000, 0xC71FFF, "Sequoia Technology Group Ltd", "SEQUOIA-GROUP" }, { 0x0050C2, 0xC72000, 0xC72FFF, "Quail", "QUAIL" }, { 0x0050C2, 0xC73000, 0xC73FFF, "Industry Controls, Inc.", "INDUSTRY-CONTROLS" }, { 0x0050C2, 0xC74000, 0xC74FFF, "Wapice Ltd.", "WAPICE" }, { 0x0050C2, 0xC75000, 0xC75FFF, "Rovsing A/S", "ROVSING-A/S" }, { 0x0050C2, 0xC76000, 0xC76FFF, "GridManager A/S", "GRIDMANAGER-A/S" }, { 0x0050C2, 0xC77000, 0xC77FFF, "AIM Co.,Ltd", "AIM" }, { 0x0050C2, 0xC78000, 0xC78FFF, "9Solutions Oy", "9SOLUTIONS-OY" }, { 0x0050C2, 0xC79000, 0xC79FFF, "CODESYSTEM Co.,Ltd", "CODESYSTEM" }, { 0x0050C2, 0xC7A000, 0xC7AFFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x0050C2, 0xC7B000, 0xC7BFFF, "Honeywell", "HONEYWELL" }, { 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, 0xC7F000, 0xC7FFFF, "Kinects Solutions Inc", "KINECTS-SOLUTIONS" }, { 0x0050C2, 0xC80000, 0xC80FFF, "Reko-vek", "REKO-VEK" }, { 0x0050C2, 0xC81000, 0xC81FFF, "Odyssee Systemes SAS", "ODYSSEE-SYSTEMES-SAS" }, { 0x0050C2, 0xC82000, 0xC82FFF, "Kyosha Industries", "KYOSHA-INDUSTRIES" }, { 0x0050C2, 0xC83000, 0xC83FFF, "Gronic Systems GmbH", "GRONIC" }, { 0x0050C2, 0xC84000, 0xC84FFF, "DOMIS", "DOMIS" }, { 0x0050C2, 0xC85000, 0xC85FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xC86000, 0xC86FFF, "Bruckner & Jarosch Ingenieurgesellschaft mbH", "BRUCKNER-JAROSCH-INGENIEURGESELLSCHAFT-MBH" }, { 0x0050C2, 0xC87000, 0xC87FFF, "LECO Corporation", "LECO" }, { 0x0050C2, 0xC88000, 0xC88FFF, "CSI Controles e Sistemas Industriais Ltda.", "CSI-CONTROLES-E-SISTEMAS-INDUSTRIAIS-LTDA" }, { 0x0050C2, 0xC89000, 0xC89FFF, "Creative Micro Design", "CREATIVE-MICRO-DESIGN" }, { 0x0050C2, 0xC8A000, 0xC8AFFF, "Automated Media Services, Inc.", "AUTOMATED-MEDIA-SERVICES" }, { 0x0050C2, 0xC8B000, 0xC8BFFF, "OCAS AS", "OCAS-AS" }, { 0x0050C2, 0xC8C000, 0xC8CFFF, "Lanmark Controls Inc.", "LANMARK-CONTROLS" }, { 0x0050C2, 0xC8D000, 0xC8DFFF, "Emergency Message Controls LLC", "EMERGENCY-MESSAGE-CONTROLS-LLC" }, { 0x0050C2, 0xC8E000, 0xC8EFFF, "SDD ITG", "SDD-ITG" }, { 0x0050C2, 0xC8F000, 0xC8FFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xC90000, 0xC90FFF, "REALD", "REALD" }, { 0x0050C2, 0xC91000, 0xC91FFF, "Media Technologies Ltd.", "MEDIA-TECHNOLOGIES" }, { 0x0050C2, 0xC92000, 0xC92FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xC93000, 0xC93FFF, "SENSAIR Pty Ltd", "SENSAIR-PTY" }, { 0x0050C2, 0xC94000, 0xC94FFF, "ISIS ENGINEERING, S.A.", "ISIS-ENGINEERING" }, { 0x0050C2, 0xC95000, 0xC95FFF, "IPSES S.r.l.", "IPSES-S-R-L" }, { 0x0050C2, 0xC96000, 0xC96FFF, "CyberCraft", "CYBERCRAFT" }, { 0x0050C2, 0xC97000, 0xC97FFF, "MSTRONIC CO., LTD.", "MSTRONIC" }, { 0x0050C2, 0xC98000, 0xC98FFF, "Criticare Systems, Inc", "CRITICARE" }, { 0x0050C2, 0xC99000, 0xC99FFF, "HJPC Corporation dba Pactron", "HJPC-DBA-PACTRON" }, { 0x0050C2, 0xC9A000, 0xC9AFFF, "PACOMP Sp. z o.o.", "PACOMP-SP-Z-O-O" }, { 0x0050C2, 0xC9B000, 0xC9BFFF, "Sm electronic co.", "SM" }, { 0x0050C2, 0xC9C000, 0xC9CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xC9D000, 0xC9DFFF, "Radius Sweden AB", "RADIUS-SWEDEN-AB" }, { 0x0050C2, 0xC9E000, 0xC9EFFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xC9F000, 0xC9FFFF, "xxter b.v.", "XXTER" }, { 0x0050C2, 0xCA0000, 0xCA0FFF, "Kiefer technic GmbH", "KIEFER-TECHNIC" }, { 0x0050C2, 0xCA1000, 0xCA1FFF, "Wayne Kerr Electronics", "WAYNE-KERR-ELECTRONICS" }, { 0x0050C2, 0xCA2000, 0xCA2FFF, "The Logical Company", "THE-LOGICAL-COMPANY" }, { 0x0050C2, 0xCA3000, 0xCA3FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xCA4000, 0xCA4FFF, "Vox Technologies", "VOX-TECHNOLOGIES" }, { 0x0050C2, 0xCA5000, 0xCA5FFF, "YOKOWO CO.,LTD", "YOKOWO" }, { 0x0050C2, 0xCA6000, 0xCA6FFF, "Vidisys GmbH", "VIDISYS" }, { 0x0050C2, 0xCA7000, 0xCA7FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x0050C2, 0xCA8000, 0xCA8FFF, "Systems With Intelligence Inc.", "WITH-INTELLIGENCE" }, { 0x0050C2, 0xCA9000, 0xCA9FFF, "Intelligent Devices", "INTELLIGENT-DEVICES" }, { 0x0050C2, 0xCAA000, 0xCAAFFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xCAB000, 0xCABFFF, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x0050C2, 0xCAC000, 0xCACFFF, "PURVIS Systems Incorporated", "PURVIS-INCORPORATED" }, { 0x0050C2, 0xCAD000, 0xCADFFF, "Pacific Coast Engineering", "PACIFIC-COAST-ENGINEERING" }, { 0x0050C2, 0xCAE000, 0xCAEFFF, "Campbell Scientific Canada Corp.", "CAMPBELL-SCIENTIFIC-CANADA" }, { 0x0050C2, 0xCAF000, 0xCAFFFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xCB0000, 0xCB0FFF, "Konsmetal S.A.", "KONSMETAL" }, { 0x0050C2, 0xCB1000, 0xCB1FFF, "ZK Celltest Inc", "ZK-CELLTEST" }, { 0x0050C2, 0xCB2000, 0xCB2FFF, "Moravian Instruments", "MORAVIAN-INSTRUMENTS" }, { 0x0050C2, 0xCB3000, 0xCB3FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xCB4000, 0xCB4FFF, "GEA Farm Technologies GmbH", "GEA-FARM-TECHNOLOGIES" }, { 0x0050C2, 0xCB5000, 0xCB5FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xCB6000, 0xCB6FFF, "Krontek Pty Ltd", "KRONTEK-PTY" }, { 0x0050C2, 0xCB7000, 0xCB7FFF, "inotech GmbH", "INOTECH" }, { 0x0050C2, 0xCB8000, 0xCB8FFF, "Raith GmbH", "RAITH" }, { 0x0050C2, 0xCB9000, 0xCB9FFF, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0x0050C2, 0xCBA000, 0xCBAFFF, "DELTA TAU DATA SYSTEMS", "DELTA-TAU-DATA" }, { 0x0050C2, 0xCBB000, 0xCBBFFF, "Coptonix GmbH", "COPTONIX" }, { 0x0050C2, 0xCBC000, 0xCBCFFF, "CP ELETRONICA SA", "CP-ELETRONICA" }, { 0x0050C2, 0xCBD000, 0xCBDFFF, "Hi Tech Electronics Ltd", "HI-TECH-ELECTRONICS" }, { 0x0050C2, 0xCBE000, 0xCBEFFF, "CODE BLUE CORPORATION", "CODE-BLUE" }, { 0x0050C2, 0xCBF000, 0xCBFFFF, "Megacon AB", "MEGACON-AB" }, { 0x0050C2, 0xCC0000, 0xCC0FFF, "World Time Solutions Limited", "WORLD-TIME-SOLUTIONS" }, { 0x0050C2, 0xCC1000, 0xCC1FFF, "Level 3 Communications", "LEVEL-3-COMMUNICATION" }, { 0x0050C2, 0xCC2000, 0xCC2FFF, "ConectaIP Tecnologia S.L.", "CONECTAIP-TECNOLOGIA-S-L" }, { 0x0050C2, 0xCC3000, 0xCC3FFF, "viscount systems inc.", "VISCOUNT" }, { 0x0050C2, 0xCC4000, 0xCC4FFF, "General Dynamics C4S", "GENERAL-DYNAMICS-C4S" }, { 0x0050C2, 0xCC5000, 0xCC5FFF, "Tecnovum AG", "TECNOVUM" }, { 0x0050C2, 0xCC6000, 0xCC6FFF, "KDT", "KDT" }, { 0x0050C2, 0xCC7000, 0xCC7FFF, "TOPROOT Technology Corp. Ltd.,", "TOPROOT" }, { 0x0050C2, 0xCC8000, 0xCC8FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xCC9000, 0xCC9FFF, "Promess GmbH", "PROMESS" }, { 0x0050C2, 0xCCA000, 0xCCAFFF, "SANMINA SHENZHEN", "SANMINA-SHENZHEN" }, { 0x0050C2, 0xCCB000, 0xCCBFFF, "CaptiveAire Systems Inc.", "CAPTIVEAIRE" }, { 0x0050C2, 0xCCC000, 0xCCCFFF, "Smartech-technology", "SMARTECH" }, { 0x0050C2, 0xCCD000, 0xCCDFFF, "FUJI DATA SYSTEM Co.,Ltd.", "FUJI-DATA-SYSTEM" }, { 0x0050C2, 0xCCE000, 0xCCEFFF, "Mac-Gray Corporation", "MAC-GRAY" }, { 0x0050C2, 0xCCF000, 0xCCFFFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0xCD0000, 0xCD0FFF, "MME Mueller Mikroelektronik", "MME-MUELLER-MIKROELEKTRONIK" }, { 0x0050C2, 0xCD1000, 0xCD1FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xCD2000, 0xCD2FFF, "SIM2 Multimedia S.p.A.", "SIM2-MULTIMEDIA-S-P-A" }, { 0x0050C2, 0xCD3000, 0xCD3FFF, "Covidence A/S", "COVIDENCE-A/S" }, { 0x0050C2, 0xCD4000, 0xCD4FFF, "SCHRAML GmbH", "SCHRAML" }, { 0x0050C2, 0xCD5000, 0xCD5FFF, "Arcos Technologies Ltd.", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xCD6000, 0xCD6FFF, "Arktan Systems", "ARKTAN" }, { 0x0050C2, 0xCD7000, 0xCD7FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xCD8000, 0xCD8FFF, "IT-IS International Ltd.", "IT-IS" }, { 0x0050C2, 0xCD9000, 0xCD9FFF, "NDC Infrared Engineering, Inc.", "NDC-INFRARED-ENGINEERING" }, { 0x0050C2, 0xCDA000, 0xCDAFFF, "taskit GmbH", "TASKIT" }, { 0x0050C2, 0xCDB000, 0xCDBFFF, "RUTTER INC", "RUTTER" }, { 0x0050C2, 0xCDC000, 0xCDCFFF, "ABB Transmission and Distribution Auto Eqip(Xiamen.China)", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTO-EQIP-XIAMEN-CHINA" }, { 0x0050C2, 0xCDD000, 0xCDDFFF, "K.C.C. SHOKAI LIMITED", "K-C-C-SHOKAI" }, { 0x0050C2, 0xCDE000, 0xCDEFFF, "Axotec Technologies GmbH", "AXOTEC-TECHNOLOGIES" }, { 0x0050C2, 0xCDF000, 0xCDFFFF, "CoreEL TEchnologies (I) Pvt Ltd", "COREEL-TECHNOLOGIES-I-PVT" }, { 0x0050C2, 0xCE0000, 0xCE0FFF, "Industrial Control Links, Inc.", "INDUSTRIAL-CONTROL-LINKS" }, { 0x0050C2, 0xCE1000, 0xCE1FFF, "Satellink Inc.", "SATELLINK" }, { 0x0050C2, 0xCE2000, 0xCE2FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xCE3000, 0xCE3FFF, "Industrial Automatics Design Bureau", "INDUSTRIAL-AUTOMATICS-DESIGN-BUREAU" }, { 0x0050C2, 0xCE4000, 0xCE4FFF, "TEKTRONIK", "TEKTRONIK" }, { 0x0050C2, 0xCE5000, 0xCE5FFF, "Maretron, LLP", "MARETRON-LLP" }, { 0x0050C2, 0xCE6000, 0xCE6FFF, "APLICA TECHNOLOGIES", "APLICA-TECHNOLOGIES" }, { 0x0050C2, 0xCE7000, 0xCE7FFF, "Echola Systems", "ECHOLA" }, { 0x0050C2, 0xCE8000, 0xCE8FFF, "Thomas & Betts", "THOMAS-BETTS" }, { 0x0050C2, 0xCE9000, 0xCE9FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xCEA000, 0xCEAFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xCEB000, 0xCEBFFF, "Toyon Research Corporation", "TOYON-RESEARCH" }, { 0x0050C2, 0xCEC000, 0xCECFFF, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 0x0050C2, 0xCED000, 0xCEDFFF, "AeroMechanical Services Ltd, FLYHT", "AEROMECHANICAL-SERVICES-FLYHT" }, { 0x0050C2, 0xCEE000, 0xCEEFFF, "EMBED-IT OG", "EMBED-IT-OG" }, { 0x0050C2, 0xCEF000, 0xCEFFFF, "Lupatecnologia e Sistemas Ltda", "LUPATECNOLOGIA-E-SISTEMAS-LTDA" }, { 0x0050C2, 0xCF0000, 0xCF0FFF, "Inviso B.V.", "INVISO" }, { 0x0050C2, 0xCF1000, 0xCF1FFF, "TelGaAs, Inc.", "TELGAAS" }, { 0x0050C2, 0xCF2000, 0xCF2FFF, "Weiss Robotics GmbH & Co. KG", "WEISS-ROBOTICS" }, { 0x0050C2, 0xCF3000, 0xCF3FFF, "Daiken Automacao Ltda", "DAIKEN-AUTOMACAO-LTDA" }, { 0x0050C2, 0xCF4000, 0xCF4FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xCF5000, 0xCF5FFF, "AirCell Inc.", "AIRCELL" }, { 0x0050C2, 0xCF6000, 0xCF6FFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0xCF7000, 0xCF7FFF, "Armour Home Electronics LTD", "ARMOUR-HOME-ELECTRONICS" }, { 0x0050C2, 0xCF8000, 0xCF8FFF, "beks Kommunikacios Technika kft", "BEKS-KOMMUNIKACIOS-TECHNIKA-KFT" }, { 0x0050C2, 0xCF9000, 0xCF9FFF, "Elbit Systems of America", "ELBIT-OF-AMERICA" }, { 0x0050C2, 0xCFA000, 0xCFAFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xCFB000, 0xCFBFFF, "New Embedded Technology", "NEW-EMBEDDED" }, { 0x0050C2, 0xCFC000, 0xCFCFFF, "Tritium Pty Ltd", "TRITIUM-PTY" }, { 0x0050C2, 0xCFD000, 0xCFDFFF, "AIRFOLC,INC.", "AIRFOLC" }, { 0x0050C2, 0xCFE000, 0xCFEFFF, "Techleader", "TECHLEADER" }, { 0x0050C2, 0xCFF000, 0xCFFFFF, "Infrasafe, Inc.", "INFRASAFE" }, { 0x0050C2, 0xD00000, 0xD00FFF, "Bodensee Gravitymeter Geosystem GmbH", "BODENSEE-GRAVITYMETER-GEOSYSTEM" }, { 0x0050C2, 0xD01000, 0xD01FFF, "Aanderaa Data Instruments", "AANDERAA-DATA-INSTRUMENTS" }, { 0x0050C2, 0xD02000, 0xD02FFF, "SURVALENT TECHNOLOGY CORP", "SURVALENT" }, { 0x0050C2, 0xD03000, 0xD03FFF, "Peekel Instruments B.V.", "PEEKEL-INSTRUMENTS" }, { 0x0050C2, 0xD04000, 0xD04FFF, "Tehama Wireless", "TEHAMA-WIRELESS" }, { 0x0050C2, 0xD06000, 0xD06FFF, "nCk Research LLC", "NCK-RESEARCH-LLC" }, { 0x0050C2, 0xD07000, 0xD07FFF, "IAF GmbH", "IAF" }, { 0x0050C2, 0xD08000, 0xD08FFF, "Reimesch Kommunikationssysteme GmbH", "REIMESCH-KOMMUNIKATIONSSYSTEME" }, { 0x0050C2, 0xD09000, 0xD09FFF, "Guardtec, Inc.", "GUARDTEC" }, { 0x0050C2, 0xD0A000, 0xD0AFFF, "Airpoint Co., Ltd.", "AIRPOINT" }, { 0x0050C2, 0xD0B000, 0xD0BFFF, "CODACO ELECTRONIC s.r.o.", "CODACO-S-R-O" }, { 0x0050C2, 0xD0C000, 0xD0CFFF, "JVL Industri Elektronik", "JVL-INDUSTRI-ELEKTRONIK" }, { 0x0050C2, 0xD0D000, 0xD0DFFF, "DECA Card Engineering GmbH", "DECA-CARD-ENGINEERING" }, { 0x0050C2, 0xD0E000, 0xD0EFFF, "Weinert Engineering GmbH", "WEINERT-ENGINEERING" }, { 0x0050C2, 0xD0F000, 0xD0FFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD10000, 0xD10FFF, "Rosslare Enterprises Ltd.", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xD11000, 0xD11FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xD12000, 0xD12FFF, "Tokyo Weld Co.,Ltd.", "TOKYO-WELD" }, { 0x0050C2, 0xD13000, 0xD13FFF, "GUNMA ELECTRONICS CO LTD", "GUNMA-ELECTRONICS" }, { 0x0050C2, 0xD14000, 0xD14FFF, "SAET I.S.", "SAET-I-S" }, { 0x0050C2, 0xD15000, 0xD15FFF, "MSR-Office GmbH", "MSR-OFFICE" }, { 0x0050C2, 0xD16000, 0xD16FFF, "Imricor Medical Systems, Inc.", "IMRICOR-MEDICAL" }, { 0x0050C2, 0xD17000, 0xD17FFF, "CUE, a.s.", "CUE-A-S" }, { 0x0050C2, 0xD18000, 0xD18FFF, "Glyn GmbH & Co.KG", "GLYN" }, { 0x0050C2, 0xD19000, 0xD19FFF, "Applied Medical Technologies, Inc DBA AirClean Systems", "APPLIED-MEDICAL-TECHNOLOGIES-DBA-AIRCLEAN" }, { 0x0050C2, 0xD1A000, 0xD1AFFF, "GILLAM-FEI S.A.", "GILLAM-FEI" }, { 0x0050C2, 0xD1B000, 0xD1BFFF, "TECHKON GmbH", "TECHKON" }, { 0x0050C2, 0xD1C000, 0xD1CFFF, "Recon Dynamics, LLC", "RECON-DYNAMICS-LLC" }, { 0x0050C2, 0xD1D000, 0xD1DFFF, "Moco Media Pty Ltd", "MOCO-MEDIA-PTY" }, { 0x0050C2, 0xD1E000, 0xD1EFFF, "Tobila Systems, Inc.", "TOBILA" }, { 0x0050C2, 0xD1F000, 0xD1FFFF, "Olympus NDT Canada Inc.", "OLYMPUS-NDT-CANADA" }, { 0x0050C2, 0xD20000, 0xD20FFF, "7+ Kft", "7+-KFT" }, { 0x0050C2, 0xD21000, 0xD21FFF, "Innovative Circuit Technology", "INNOVATIVE-CIRCUIT" }, { 0x0050C2, 0xD22000, 0xD22FFF, "eMDee Technology, Inc.", "EMDEE" }, { 0x0050C2, 0xD23000, 0xD23FFF, "Bluestone Technology GmbH", "BLUESTONE" }, { 0x0050C2, 0xD24000, 0xD24FFF, "Expro North Sea", "EXPRO-NORTH-SEA" }, { 0x0050C2, 0xD25000, 0xD25FFF, "VAF Instruments BV", "VAF-INSTRUMENTS" }, { 0x0050C2, 0xD26000, 0xD26FFF, "RCH GROUP", "RCH-GROUP" }, { 0x0050C2, 0xD27000, 0xD27FFF, "Fr.Sauter AG", "FR-SAUTER" }, { 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, 0xD2B000, 0xD2BFFF, "Video Tech Laboratories, Inc.", "VIDEO-TECH-LABORATORIES" }, { 0x0050C2, 0xD2C000, 0xD2CFFF, "Schneider Electric Motion USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 0x0050C2, 0xD2D000, 0xD2DFFF, "CADI SCIENTIFIC PTE LTD", "CADI-SCIENTIFIC-PTE" }, { 0x0050C2, 0xD2E000, 0xD2EFFF, "RS Gesellschaft fur Informationstechnik mbH & Co KG", "RS-GESELLSCHAFT-FUR-INFORMATIONSTECHNIK-MBH" }, { 0x0050C2, 0xD2F000, 0xD2FFFF, "Key Systems, Inc.", "KEY" }, { 0x0050C2, 0xD30000, 0xD30FFF, "ACTIV Financial Systems, Inc.", "ACTIV-FINANCIAL" }, { 0x0050C2, 0xD31000, 0xD31FFF, "UNGAVA Technologies Inc.", "UNGAVA-TECHNOLOGIES" }, { 0x0050C2, 0xD32000, 0xD32FFF, "RealTime Systems Ltd", "REALTIME" }, { 0x0050C2, 0xD33000, 0xD33FFF, "Maddalena S.p.A", "MADDALENA-S-P-A" }, { 0x0050C2, 0xD34000, 0xD34FFF, "GAON TECH corp.", "GAON-TECH" }, { 0x0050C2, 0xD35000, 0xD35FFF, "UG Systems GmbH & Co. KG", "UG" }, { 0x0050C2, 0xD36000, 0xD36FFF, "Enatel Limited", "ENATEL" }, { 0x0050C2, 0xD37000, 0xD37FFF, "LJT & Associates, Inc.", "LJT-ASSOCIATES" }, { 0x0050C2, 0xD38000, 0xD38FFF, "Kyowa Electronics Co.,Ltd.", "KYOWA-ELECTRONICS" }, { 0x0050C2, 0xD39000, 0xD39FFF, "Apex NV", "APEX-NV" }, { 0x0050C2, 0xD3A000, 0xD3AFFF, "WellSense Technologies", "WELLSENSE-TECHNOLOGIES" }, { 0x0050C2, 0xD3B000, 0xD3BFFF, "Gitsn Inc.", "GITSN" }, { 0x0050C2, 0xD3C000, 0xD3CFFF, "ASSYSTEM France", "ASSYSTEM-FRANCE" }, { 0x0050C2, 0xD3D000, 0xD3DFFF, "Tellabs Operations Inc.", "TELLABS-OPERATIONS" }, { 0x0050C2, 0xD3E000, 0xD3EFFF, "Synatec Electronic GmbH", "SYNATEC" }, { 0x0050C2, 0xD3F000, 0xD3FFFF, "CSS, LLC", "CSS-LLC" }, { 0x0050C2, 0xD40000, 0xD40FFF, "demmel products", "DEMMEL-PRODUCTS" }, { 0x0050C2, 0xD41000, 0xD41FFF, "AREA ENERGY, INC.", "AREA-ENERGY" }, { 0x0050C2, 0xD42000, 0xD42FFF, "Hagenuk KMT GmbH", "HAGENUK-KMT" }, { 0x0050C2, 0xD43000, 0xD43FFF, "DSP4YOU Ltd", "DSP4YOU" }, { 0x0050C2, 0xD44000, 0xD44FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD45000, 0xD45FFF, "Technagon GmbH", "TECHNAGON" }, { 0x0050C2, 0xD46000, 0xD46FFF, "Thales Nederland BV", "THALES-NEDERLAND" }, { 0x0050C2, 0xD47000, 0xD47FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xD48000, 0xD48FFF, "Watermark Estate Management Services, LLC", "WATERMARK-ESTATE-MANAGEMENT-SERVICES-LLC" }, { 0x0050C2, 0xD49000, 0xD49FFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x0050C2, 0xD4A000, 0xD4AFFF, "ATH system", "ATH-SYSTEM" }, { 0x0050C2, 0xD4B000, 0xD4BFFF, "Indra Australia", "INDRA-AUSTRALIA" }, { 0x0050C2, 0xD4C000, 0xD4CFFF, "DALOG Diagnosesysteme GmbH", "DALOG-DIAGNOSESYSTEME" }, { 0x0050C2, 0xD4D000, 0xD4DFFF, "Yardney Technical Products Inc.", "YARDNEY-TECHNICAL-PRODUCTS" }, { 0x0050C2, 0xD4E000, 0xD4EFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xD4F000, 0xD4FFFF, "SECOM GmbH", "SECOM" }, { 0x0050C2, 0xD50000, 0xD50FFF, "Solbrig Electronics, Inc.", "SOLBRIG-ELECTRONICS" }, { 0x0050C2, 0xD51000, 0xD51FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x0050C2, 0xD52000, 0xD52FFF, "F+D Feinwerk- und Drucktechnik GmbH", "F+D-FEINWERK--UND-DRUCKTECHNIK" }, { 0x0050C2, 0xD53000, 0xD53FFF, "Telemerkki Oy", "TELEMERKKI-OY" }, { 0x0050C2, 0xD54000, 0xD54FFF, "ABtrack s.r.l.", "ABTRACK-S-R-L" }, { 0x0050C2, 0xD55000, 0xD55FFF, "Sterna Security", "STERNA-SECURITY" }, { 0x0050C2, 0xD56000, 0xD56FFF, "SELEX Communications Limited", "SELEX-COMMUNICATION" }, { 0x0050C2, 0xD57000, 0xD57FFF, "Hijikata Denki Corp.", "HIJIKATA-DENKI" }, { 0x0050C2, 0xD58000, 0xD58FFF, "NIK-ELEKTRONIKA Ltd", "NIK-ELEKTRONIKA" }, { 0x0050C2, 0xD59000, 0xD59FFF, "BUANCO SYSTEM A/S", "BUANCO-SYSTEM-A/S" }, { 0x0050C2, 0xD5A000, 0xD5AFFF, "Embedded Monitoring Systems Ltd.", "EMBEDDED-MONITORING" }, { 0x0050C2, 0xD5B000, 0xD5BFFF, "Infinition Inc.", "INFINITION" }, { 0x0050C2, 0xD5C000, 0xD5CFFF, "Ibetor S.L.", "IBETOR-S-L" }, { 0x0050C2, 0xD5D000, 0xD5DFFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0xD5E000, 0xD5EFFF, "infinitec co., ltd.", "INFINITEC" }, { 0x0050C2, 0xD5F000, 0xD5FFFF, "Embedded Solution Co., Ltd.", "EMBEDDED-SOLUTION" }, { 0x0050C2, 0xD60000, 0xD60FFF, "Nihon Kessho Koogaku Co., Ltd.", "NIHON-KESSHO-KOOGAKU" }, { 0x0050C2, 0xD61000, 0xD61FFF, "system2 GmbH", "SYSTEM2" }, { 0x0050C2, 0xD62000, 0xD62FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xD63000, 0xD63FFF, "DATAREGIS S.A.", "DATAREGIS" }, { 0x0050C2, 0xD64000, 0xD64FFF, "TV1 GmbH", "TV1" }, { 0x0050C2, 0xD65000, 0xD65FFF, "TX Technology Corp", "TX" }, { 0x0050C2, 0xD66000, 0xD66FFF, "Uvax Concepts", "UVAX-CONCEPTS" }, { 0x0050C2, 0xD67000, 0xD67FFF, "KLING & FREITAG GmbH", "KLING-FREITAG" }, { 0x0050C2, 0xD68000, 0xD68FFF, "HiSpeed Data, Inc.", "HISPEED-DATA" }, { 0x0050C2, 0xD69000, 0xD69FFF, "GHL Systems Bhd", "GHL-BHD" }, { 0x0050C2, 0xD6A000, 0xD6AFFF, "A&T Corporation, Electrics Group , LAS R&D Unit,", "A-T-ELECTRICS-GROUP-LAS-R-D-UNIT" }, { 0x0050C2, 0xD6B000, 0xD6BFFF, "Nemec Automation", "NEMEC-AUTOMATION" }, { 0x0050C2, 0xD6C000, 0xD6CFFF, "ALPHA Corporation", "ALPHA" }, { 0x0050C2, 0xD6D000, 0xD6DFFF, "Pro-Digital Industria Eletronica", "PRO-DIGITAL-INDUSTRIA-ELETRONICA" }, { 0x0050C2, 0xD6E000, 0xD6EFFF, "BC Illumination, Inc.", "BC-ILLUMINATION" }, { 0x0050C2, 0xD6F000, 0xD6FFFF, "Imtron Messtechnik GmbH", "IMTRON-MESSTECHNIK" }, { 0x0050C2, 0xD70000, 0xD70FFF, "C. Rob. Hammerstein GmbH & Co. KG", "C-ROB-HAMMERSTEIN" }, { 0x0050C2, 0xD71000, 0xD71FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xD72000, 0xD72FFF, "Scale-Tron, Inc.", "SCALE-TRON" }, { 0x0050C2, 0xD73000, 0xD73FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD74000, 0xD74FFF, "Computech International", "COMPUTECH" }, { 0x0050C2, 0xD75000, 0xD75FFF, "Collectric AB", "COLLECTRIC-AB" }, { 0x0050C2, 0xD76000, 0xD76FFF, "Telvent", "TELVENT" }, { 0x0050C2, 0xD77000, 0xD77FFF, "Fr.SauterAG", "FR-SAUTERAG" }, { 0x0050C2, 0xD78000, 0xD78FFF, "P4Q Electronics", "P4Q-ELECTRONICS" }, { 0x0050C2, 0xD79000, 0xD79FFF, "DSI RF Systems, Inc.", "DSI-RF" }, { 0x0050C2, 0xD7A000, 0xD7AFFF, "Transbit Sp. z o.o.", "TRANSBIT-SP-Z-O-O" }, { 0x0050C2, 0xD7B000, 0xD7BFFF, "OWITA GmbH", "OWITA" }, { 0x0050C2, 0xD7C000, 0xD7CFFF, "Microcubs Systems Pvt Ltd", "MICROCUBS-PVT" }, { 0x0050C2, 0xD7D000, 0xD7DFFF, "Voltech Instruments", "VOLTECH-INSTRUMENTS" }, { 0x0050C2, 0xD7E000, 0xD7EFFF, "LYNX Technik AG", "LYNX-TECHNIK" }, { 0x0050C2, 0xD7F000, 0xD7FFFF, "HMI Technologies", "HMI-TECHNOLOGIES" }, { 0x0050C2, 0xD80000, 0xD80FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xD81000, 0xD81FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x0050C2, 0xD82000, 0xD82FFF, "Audio Authority Corp", "AUDIO-AUTHORITY" }, { 0x0050C2, 0xD83000, 0xD83FFF, "Blankom", "BLANKOM" }, { 0x0050C2, 0xD84000, 0xD84FFF, "ABB Transmission and Distribution Auto Eqip(Xiamen.China)", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTO-EQIP-XIAMEN-CHINA" }, { 0x0050C2, 0xD85000, 0xD85FFF, "VITEC", "VITEC" }, { 0x0050C2, 0xD86000, 0xD86FFF, "ECOMM ERA", "ECOMM-ERA" }, { 0x0050C2, 0xD87000, 0xD87FFF, "Electrolight Shivuk (1994) Ltd.", "ELECTROLIGHT-SHIVUK-1994" }, { 0x0050C2, 0xD88000, 0xD88FFF, "T+A elektroakustik GmbH & Co KG", "T+A-ELEKTROAKUSTIK" }, { 0x0050C2, 0xD89000, 0xD89FFF, "Visual Telecommunication Network, Inc", "VISUAL-TELECOMMUNICATION-NETWORK" }, { 0x0050C2, 0xD8A000, 0xD8AFFF, "OptoLink Industria e Comercio Ltda", "OPTOLINK-INDUSTRIA-E-COMERCIO-LTDA" }, { 0x0050C2, 0xD8B000, 0xD8BFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xD8C000, 0xD8CFFF, "iRphotonics", "IRPHOTONICS" }, { 0x0050C2, 0xD8D000, 0xD8DFFF, "CS-Instruments", "CS-INSTRUMENTS" }, { 0x0050C2, 0xD8E000, 0xD8EFFF, "LSD Science&Technology Co.,Ltd.", "LSD-SCIENCE" }, { 0x0050C2, 0xD8F000, 0xD8FFFF, "Syes srl", "SYES-SRL" }, { 0x0050C2, 0xD90000, 0xD90FFF, "Dumps Electronic", "DUMPS" }, { 0x0050C2, 0xD91000, 0xD91FFF, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0050C2, 0xD92000, 0xD92FFF, "Manz", "MANZ" }, { 0x0050C2, 0xD93000, 0xD93FFF, "Axlon AB", "AXLON-AB" }, { 0x0050C2, 0xD94000, 0xD94FFF, "Software Effect Enterprises, Inc", "SOFTWARE-EFFECT-ENTERPRISES" }, { 0x0050C2, 0xD95000, 0xD95FFF, "Honeywell", "HONEYWELL" }, { 0x0050C2, 0xD96000, 0xD96FFF, "CONTEC GmbH", "CONTEC" }, { 0x0050C2, 0xD97000, 0xD97FFF, "ERS electronic GmbH", "ERS" }, { 0x0050C2, 0xD98000, 0xD98FFF, "Rong Shun Xuan Corp.", "RONG-SHUN-XUAN" }, { 0x0050C2, 0xD99000, 0xD99FFF, "T-Industry, s.r.o.", "T-INDUSTRY-S-R-O" }, { 0x0050C2, 0xD9A000, 0xD9AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xD9B000, 0xD9BFFF, "Intuitive Surgical, Inc", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0xD9C000, 0xD9CFFF, "Gamber Johnson LLC", "GAMBER-JOHNSON-LLC" }, { 0x0050C2, 0xD9D000, 0xD9DFFF, "Mistral Solutions Pvt. Ltd", "MISTRAL-SOLUTIONS-PVT" }, { 0x0050C2, 0xD9E000, 0xD9EFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xD9F000, 0xD9FFFF, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x0050C2, 0xDA0000, 0xDA0FFF, "Precision Remotes", "PRECISION-REMOTES" }, { 0x0050C2, 0xDA1000, 0xDA1FFF, "MangoDSP", "MANGODSP" }, { 0x0050C2, 0xDA2000, 0xDA2FFF, "metraTec GmbH", "METRATEC" }, { 0x0050C2, 0xDA3000, 0xDA3FFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xDA4000, 0xDA4FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xDA5000, 0xDA5FFF, "megatec electronic GmbH", "MEGATEC" }, { 0x0050C2, 0xDA6000, 0xDA6FFF, "Manitowoc Ice", "MANITOWOC-ICE" }, { 0x0050C2, 0xDA7000, 0xDA7FFF, "Capton", "CAPTON" }, { 0x0050C2, 0xDA8000, 0xDA8FFF, "Sine Systems, Inc.", "SINE" }, { 0x0050C2, 0xDA9000, 0xDA9FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x0050C2, 0xDAA000, 0xDAAFFF, "M & PAUL, INC", "M-PAUL" }, { 0x0050C2, 0xDAB000, 0xDABFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xDAC000, 0xDACFFF, "RFL Electronics", "RFL-ELECTRONICS" }, { 0x0050C2, 0xDAD000, 0xDADFFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xDAE000, 0xDAEFFF, "Spang Power Electronics", "SPANG-POWER-ELECTRONICS" }, { 0x0050C2, 0xDAF000, 0xDAFFFF, "eumig industrie-tv GmbH", "EUMIG-INDUSTRIE-TV" }, { 0x0050C2, 0xDB0000, 0xDB0FFF, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0x0050C2, 0xDB1000, 0xDB1FFF, "RF Code, Inc", "RF-CODE" }, { 0x0050C2, 0xDB2000, 0xDB2FFF, "SoftwareCannery", "SOFTWARECANNERY" }, { 0x0050C2, 0xDB3000, 0xDB3FFF, "LAUDA DR. R. WOBSER GMBH & CO. KG", "LAUDA-DR-R-WOBSER" }, { 0x0050C2, 0xDB4000, 0xDB4FFF, "ZAO NPC Kompjuternie Technologii", "ZAO-NPC-KOMPJUTERNIE-TECHNOLOGII" }, { 0x0050C2, 0xDB5000, 0xDB5FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xDB6000, 0xDB6FFF, "PROSOFT-SYSTEMS LTD", "PROSOFT" }, { 0x0050C2, 0xDB7000, 0xDB7FFF, "SOREL GmbH Mikroelektronik", "SOREL-MIKROELEKTRONIK" }, { 0x0050C2, 0xDB8000, 0xDB8FFF, "Comsat VertriebsgmbH", "COMSAT-VERTRIEBSGMBH" }, { 0x0050C2, 0xDB9000, 0xDB9FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xDBA000, 0xDBAFFF, "M.P. Electronics", "M-P-ELECTRONICS" }, { 0x0050C2, 0xDBB000, 0xDBBFFF, "Esensors, Inc.", "ESENSORS" }, { 0x0050C2, 0xDBC000, 0xDBCFFF, "Nantes Systems Private Limited", "NANTES-PRIVATE" }, { 0x0050C2, 0xDBD000, 0xDBDFFF, "Margento R&D", "MARGENTO-R-D" }, { 0x0050C2, 0xDBE000, 0xDBEFFF, "WITHSYSTEM Co.,Ltd", "WITHSYSTEM" }, { 0x0050C2, 0xDBF000, 0xDBFFFF, "One-Nemoto Engineering Corporation", "ONE-NEMOTO-ENGINEERING" }, { 0x0050C2, 0xDC0000, 0xDC0FFF, "Security Services Group (SSG)", "SECURITY-SERVICES-GROUP-SSG" }, { 0x0050C2, 0xDC1000, 0xDC1FFF, "Acrux Technology Limited", "ACRUX" }, { 0x0050C2, 0xDC2000, 0xDC2FFF, "TESSERA TECHNOLOGY INC.", "TESSERA" }, { 0x0050C2, 0xDC3000, 0xDC3FFF, "ZED Ziegler Electronic Devices GmbH", "ZED-ZIEGLER-DEVICES" }, { 0x0050C2, 0xDC4000, 0xDC4FFF, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x0050C2, 0xDC5000, 0xDC5FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xDC6000, 0xDC6FFF, "Fluid Components International", "FLUID-COMPONENTS" }, { 0x0050C2, 0xDC7000, 0xDC7FFF, "AGT Holdings Limited", "AGT-HOLDINGS" }, { 0x0050C2, 0xDC8000, 0xDC8FFF, "T2M2 GmbH", "T2M2" }, { 0x0050C2, 0xDC9000, 0xDC9FFF, "KinotonGmbH", "KINOTONGMBH" }, { 0x0050C2, 0xDCA000, 0xDCAFFF, "Tele Data Control", "TELE-DATA-CONTROL" }, { 0x0050C2, 0xDCB000, 0xDCBFFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xDCC000, 0xDCCFFF, "Instrumentel Limited", "INSTRUMENTEL" }, { 0x0050C2, 0xDCD000, 0xDCDFFF, "dilitronics GmbH", "DILITRONICS" }, { 0x0050C2, 0xDCE000, 0xDCEFFF, "Mecsel Oy", "MECSEL-OY" }, { 0x0050C2, 0xDCF000, 0xDCFFFF, "MCS Engenharia ltda", "MCS-ENGENHARIA-LTDA" }, { 0x0050C2, 0xDD0000, 0xDD0FFF, "IDC Solutions Pty Ltd", "IDC-SOLUTIONS-PTY" }, { 0x0050C2, 0xDD1000, 0xDD1FFF, "Brankamp GmbH", "BRANKAMP" }, { 0x0050C2, 0xDD2000, 0xDD2FFF, "Electronic Applications, Inc.", "APPLICATIONS" }, { 0x0050C2, 0xDD3000, 0xDD3FFF, "Rohde & Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xDD4000, 0xDD4FFF, "SYSTECH", "SYSTECH" }, { 0x0050C2, 0xDD5000, 0xDD5FFF, "Friend Spring Industrial Co., Ltd.", "FRIEND-SPRING-INDUSTRIAL" }, { 0x0050C2, 0xDD6000, 0xDD6FFF, "Transas Marine International AB", "TRANSAS-MARINE-AB" }, { 0x0050C2, 0xDD7000, 0xDD7FFF, "Tornado Modular Systems", "TORNADO-MODULAR" }, { 0x0050C2, 0xDD8000, 0xDD8FFF, "Selex Systems Integration Inc", "SELEX-INTEGRATION" }, { 0x0050C2, 0xDD9000, 0xDD9FFF, "Metraware", "METRAWARE" }, { 0x0050C2, 0xDDA000, 0xDDAFFF, "rbz robot design s.l.", "RBZ-ROBOT-DESIGN-S-L" }, { 0x0050C2, 0xDDB000, 0xDDBFFF, "LUCEO", "LUCEO" }, { 0x0050C2, 0xDDC000, 0xDDCFFF, "Vision & Control GmbH", "VISION-CONTROL" }, { 0x0050C2, 0xDDD000, 0xDDDFFF, "A&A GENERAL SRL", "A-A-GENERAL-SRL" }, { 0x0050C2, 0xDDE000, 0xDDEFFF, "DRS ITS", "DRS-ITS" }, { 0x0050C2, 0xDDF000, 0xDDFFFF, "Device GmbH", "DEVICE" }, { 0x0050C2, 0xDE0000, 0xDE0FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x0050C2, 0xDE1000, 0xDE1FFF, "ABB Transmission and Distribution Auto Eqip(Xiamen.China)", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTO-EQIP-XIAMEN-CHINA" }, { 0x0050C2, 0xDE2000, 0xDE2FFF, "SEQUTEC INC", "SEQUTEC" }, { 0x0050C2, 0xDE3000, 0xDE3FFF, "Breakaway Systems LLC", "BREAKAWAY-LLC" }, { 0x0050C2, 0xDE4000, 0xDE4FFF, "EGS Technologies Ltd", "EGS-TECHNOLOGIES" }, { 0x0050C2, 0xDE5000, 0xDE5FFF, "Neets", "NEETS" }, { 0x0050C2, 0xDE6000, 0xDE6FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xDE7000, 0xDE7FFF, "Elan Systems", "ELAN" }, { 0x0050C2, 0xDE8000, 0xDE8FFF, "Visual Productions", "VISUAL-PRODUCTIONS" }, { 0x0050C2, 0xDE9000, 0xDE9FFF, "Dacom West GmbH", "DACOM-WEST" }, { 0x0050C2, 0xDEA000, 0xDEAFFF, "Cerner Corporation", "CERNER" }, { 0x0050C2, 0xDEB000, 0xDEBFFF, "Ruwisch & Kollegen GmbH", "RUWISCH-KOLLEGEN" }, { 0x0050C2, 0xDEC000, 0xDECFFF, "VendNovation LLC", "VENDNOVATION-LLC" }, { 0x0050C2, 0xDED000, 0xDEDFFF, "Lee Laser", "LEE-LASER" }, { 0x0050C2, 0xDEF000, 0xDEFFFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xDF0000, 0xDF0FFF, "Koncar Electrical Engineering Institute", "KONCAR-ELECTRICAL-ENGINEERING-INSTITUTE" }, { 0x0050C2, 0xDF1000, 0xDF1FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xDF2000, 0xDF2FFF, "Ocean Sonics", "OCEAN-SONICS" }, { 0x0050C2, 0xDF3000, 0xDF3FFF, "INSEVIS GmbH", "INSEVIS" }, { 0x0050C2, 0xDF4000, 0xDF4FFF, "Potter Electric Signal", "POTTER-ELECTRIC-SIGNAL" }, { 0x0050C2, 0xDF5000, 0xDF5FFF, "EtherLight", "ETHERLIGHT" }, { 0x0050C2, 0xDF6000, 0xDF6FFF, "HINO ENGINEERING, INC", "HINO-ENGINEERING" }, { 0x0050C2, 0xDF7000, 0xDF7FFF, "Combilent", "COMBILENT" }, { 0x0050C2, 0xDF8000, 0xDF8FFF, "Tommotek (WA) Pty Ltd.", "TOMMOTEK-WA-PTY" }, { 0x0050C2, 0xDF9000, 0xDF9FFF, "Jenny Science AG", "JENNY-SCIENCE" }, { 0x0050C2, 0xDFA000, 0xDFAFFF, "MAC Valves, Inc.", "MAC-VALVES" }, { 0x0050C2, 0xDFB000, 0xDFBFFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x0050C2, 0xDFC000, 0xDFCFFF, "I-Evo Ltd", "I-EVO" }, { 0x0050C2, 0xDFD000, 0xDFDFFF, "Wotbox ltd", "WOTBOX" }, { 0x0050C2, 0xDFE000, 0xDFEFFF, "Xitek Design Limited", "XITEK-DESIGN" }, { 0x0050C2, 0xDFF000, 0xDFFFFF, "TANTAL ELECTRONICA, SL", "TANTAL-ELECTRONICA-SL" }, { 0x0050C2, 0xE00000, 0xE00FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xE01000, 0xE01FFF, "Tyco Traffic & Transportation", "TYCO-TRAFFIC-TRANSPORTATION" }, { 0x0050C2, 0xE02000, 0xE02FFF, "Cleverscope", "CLEVERSCOPE" }, { 0x0050C2, 0xE03000, 0xE03FFF, "ICU Scandinavia Schweiz GmbH", "ICU-SCANDINAVIA-SCHWEIZ" }, { 0x0050C2, 0xE04000, 0xE04FFF, "Sec.Eng Systems Pty Ltd", "SEC-ENG-PTY" }, { 0x0050C2, 0xE05000, 0xE05FFF, "NOCOSIUM", "NOCOSIUM" }, { 0x0050C2, 0xE06000, 0xE06FFF, "Ebner Electronic GmbH", "EBNER" }, { 0x0050C2, 0xE07000, 0xE07FFF, "Protagon Process Technologies GmbH", "PROTAGON-PROCESS-TECHNOLOGIES" }, { 0x0050C2, 0xE08000, 0xE08FFF, "KST Technology", "KST" }, { 0x0050C2, 0xE09000, 0xE09FFF, "ATEME", "ATEME" }, { 0x0050C2, 0xE0A000, 0xE0AFFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xE0B000, 0xE0BFFF, "Seartech", "SEARTECH" }, { 0x0050C2, 0xE0C000, 0xE0CFFF, "YOUHO ELECTRIC IND.,LTD.", "YOUHO-ELECTRIC-IND" }, { 0x0050C2, 0xE0D000, 0xE0DFFF, "Unixmedia Srl", "UNIXMEDIA-SRL" }, { 0x0050C2, 0xE0E000, 0xE0EFFF, "PMAC JAPAN", "PMAC-JAPAN" }, { 0x0050C2, 0xE0F000, 0xE0FFFF, "Trentino Systems", "TRENTINO" }, { 0x0050C2, 0xE10000, 0xE10FFF, "Radinetworks Co., Ltd", "RADINETWORKS" }, { 0x0050C2, 0xE11000, 0xE11FFF, "RF Neulink", "RF-NEULINK" }, { 0x0050C2, 0xE12000, 0xE12FFF, "Kago Electronics BV", "KAGO-ELECTRONICS" }, { 0x0050C2, 0xE13000, 0xE13FFF, "Automation Assist Japan Company", "AUTOMATION-ASSIST-JAPAN-COMPANY" }, { 0x0050C2, 0xE14000, 0xE14FFF, "Calixto Systems Pvt Ltd", "CALIXTO-PVT" }, { 0x0050C2, 0xE15000, 0xE15FFF, "IHI Scube Co.,Ltd", "IHI-SCUBE" }, { 0x0050C2, 0xE16000, 0xE16FFF, "Jetstream Ltd.", "JETSTREAM" }, { 0x0050C2, 0xE17000, 0xE17FFF, "Gall Tankdatensysteme GmbH", "GALL-TANKDATENSYSTEME" }, { 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, 0xE1A000, 0xE1AFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xE1B000, 0xE1BFFF, "Embedded Labs", "EMBEDDED-LABS" }, { 0x0050C2, 0xE1C000, 0xE1CFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE1D000, 0xE1DFFF, "Holdline Tecnologia e Sistemas Ltda", "HOLDLINE-TECNOLOGIA-E-SISTEMAS-LTDA" }, { 0x0050C2, 0xE1E000, 0xE1EFFF, "Lo-Q plc", "LO-Q-PLC" }, { 0x0050C2, 0xE1F000, 0xE1FFFF, "ELVEES", "ELVEES" }, { 0x0050C2, 0xE20000, 0xE20FFF, "Divelbiss Corporation", "DIVELBISS" }, { 0x0050C2, 0xE21000, 0xE21FFF, "Norwia AS", "NORWIA-AS" }, { 0x0050C2, 0xE22000, 0xE22FFF, "Michael Riedel Transformatorenbau GmbH", "MICHAEL-RIEDEL-TRANSFORMATORENBAU" }, { 0x0050C2, 0xE23000, 0xE23FFF, "VITEC", "VITEC" }, { 0x0050C2, 0xE24000, 0xE24FFF, "DiTEST Fahrzeugdiagnose GmbH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0xE25000, 0xE25FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xE26000, 0xE26FFF, "Cinetix s.r.l.", "CINETIX-S-R-L" }, { 0x0050C2, 0xE27000, 0xE27FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x0050C2, 0xE28000, 0xE28FFF, "Teplovodokhran", "TEPLOVODOKHRAN" }, { 0x0050C2, 0xE29000, 0xE29FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xE2A000, 0xE2AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE2B000, 0xE2BFFF, "Plant Integrity Limited", "PLANT-INTEGRITY" }, { 0x0050C2, 0xE2C000, 0xE2CFFF, "EN ElectronicNetwork Hamburg GmbH", "EN-ELECTRONICNETWORK-HAMBURG" }, { 0x0050C2, 0xE2D000, 0xE2DFFF, "Funkwerk IT Karlsfeld GmbH", "FUNKWERK-IT-KARLSFELD" }, { 0x0050C2, 0xE2E000, 0xE2EFFF, "DS! Ingenieurbuero", "DS!-INGENIEURBUERO" }, { 0x0050C2, 0xE2F000, 0xE2FFFF, "Beam Ltd", "BEAM" }, { 0x0050C2, 0xE30000, 0xE30FFF, "Goennheimer Elektronic GmbH", "GOENNHEIMER-ELEKTRONIC" }, { 0x0050C2, 0xE31000, 0xE31FFF, "ENSIS Co., Ltd.", "ENSIS" }, { 0x0050C2, 0xE32000, 0xE32FFF, "Oshoksh Corporation", "OSHOKSH" }, { 0x0050C2, 0xE33000, 0xE33FFF, "Morita Technical Center Company", "MORITA-TECHNICAL-CENTER-COMPANY" }, { 0x0050C2, 0xE34000, 0xE34FFF, "HGL Dynamics", "HGL-DYNAMICS" }, { 0x0050C2, 0xE35000, 0xE35FFF, "Omnica Corporation", "OMNICA" }, { 0x0050C2, 0xE36000, 0xE36FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE37000, 0xE37FFF, "FUJI DATA SYSTEM Co., Ltd", "FUJI-DATA-SYSTEM" }, { 0x0050C2, 0xE38000, 0xE38FFF, "Aesir Copenhagen", "AESIR-COPENHAGEN" }, { 0x0050C2, 0xE39000, 0xE39FFF, "Telemetrics Inc.", "TELEMETRICS" }, { 0x0050C2, 0xE3A000, 0xE3AFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xE3B000, 0xE3BFFF, "Nanosolution Inc.", "NANOSOLUTION" }, { 0x0050C2, 0xE3C000, 0xE3CFFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xE3D000, 0xE3DFFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xE3E000, 0xE3EFFF, "Monnit Corp.", "MONNIT" }, { 0x0050C2, 0xE3F000, 0xE3FFFF, "VISITO S.R.L.", "VISITO-S-R-L" }, { 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, 0xE43000, 0xE43FFF, "Technica Engineering GmbH", "TECHNICA-ENGINEERING" }, { 0x0050C2, 0xE44000, 0xE44FFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xE45000, 0xE45FFF, "Stichting Sunrise", "STICHTING-SUNRISE" }, { 0x0050C2, 0xE46000, 0xE46FFF, "Industrea Mining Technology", "INDUSTREA-MINING" }, { 0x0050C2, 0xE47000, 0xE47FFF, "ENIKA.CZ", "ENIKA-CZ" }, { 0x0050C2, 0xE48000, 0xE48FFF, "ITW Reyflex North America", "ITW-REYFLEX-NORTH-AMERICA" }, { 0x0050C2, 0xE49000, 0xE49FFF, "CTF TECHNOLOGIES DO BRASIL LTDA", "CTF-TECHNOLOGIES-DO-BRASIL-LTDA" }, { 0x0050C2, 0xE4A000, 0xE4AFFF, "GHL Systems Bhd", "GHL-BHD" }, { 0x0050C2, 0xE4B000, 0xE4BFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xE4C000, 0xE4CFFF, "Applied Micro Electronics AME BV", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0xE4D000, 0xE4DFFF, "PCSC", "PCSC" }, { 0x0050C2, 0xE4E000, 0xE4EFFF, "Institute For Information Industry", "INSTITUTE-FOR-INFORMATION-INDUSTRY" }, { 0x0050C2, 0xE4F000, 0xE4FFFF, "Wine Technology Marlborough", "WINE-MARLBOROUGH" }, { 0x0050C2, 0xE50000, 0xE50FFF, "Tattile srl", "TATTILE-SRL" }, { 0x0050C2, 0xE51000, 0xE51FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x0050C2, 0xE52000, 0xE52FFF, "Famas System S.p.A.", "FAMAS-SYSTEM-S-P-A" }, { 0x0050C2, 0xE53000, 0xE53FFF, "NEXT video systems Hard- and Software Development GmbH", "NEXT-VIDEO-HARD--AND-SOFTWARE-DEVELOPMENT" }, { 0x0050C2, 0xE54000, 0xE54FFF, "Arcos Technologies LTD", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xE55000, 0xE55FFF, "TTi Ltd", "TTI" }, { 0x0050C2, 0xE56000, 0xE56FFF, "RFENGINE CO., LTD.", "RFENGINE" }, { 0x0050C2, 0xE57000, 0xE57FFF, "EOLANE MONTCEAU", "EOLANE-MONTCEAU" }, { 0x0050C2, 0xE58000, 0xE58FFF, "Agri-hitech LLC", "AGRI-HITECH-LLC" }, { 0x0050C2, 0xE59000, 0xE59FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE5A000, 0xE5AFFF, "FUTEC INC.", "FUTEC" }, { 0x0050C2, 0xE5B000, 0xE5BFFF, "CAIPO Automazione Industriale s.r.l.", "CAIPO-AUTOMAZIONE-INDUSTRIALE-S-R-L" }, { 0x0050C2, 0xE5C000, 0xE5CFFF, "MCOPIA Co., Ltd", "MCOPIA" }, { 0x0050C2, 0xE5D000, 0xE5DFFF, "T8 Ltd", "T8" }, { 0x0050C2, 0xE5E000, 0xE5EFFF, "OREP", "OREP" }, { 0x0050C2, 0xE5F000, 0xE5FFFF, "Pantec Engineering AG", "PANTEC-ENGINEERING" }, { 0x0050C2, 0xE60000, 0xE60FFF, "TAIYO SEIKI CO.,LTD.", "TAIYO-SEIKI" }, { 0x0050C2, 0xE61000, 0xE61FFF, "Detech Electronics ApS", "DETECH-ELECTRONICS-APS" }, { 0x0050C2, 0xE62000, 0xE62FFF, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x0050C2, 0xE63000, 0xE63FFF, "Prima sistemi", "PRIMA-SISTEMI" }, { 0x0050C2, 0xE64000, 0xE64FFF, "Edgeware AB", "EDGEWARE-AB" }, { 0x0050C2, 0xE65000, 0xE65FFF, "IB Elektronik GmbH", "IB-ELEKTRONIK" }, { 0x0050C2, 0xE66000, 0xE66FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xE67000, 0xE67FFF, "Critical Link, LLC", "CRITICAL-LINK-LLC" }, { 0x0050C2, 0xE68000, 0xE68FFF, "Kyoritsu Electric Corporation", "KYORITSU-ELECTRIC" }, { 0x0050C2, 0xE69000, 0xE69FFF, "Netmaker", "NETMAKER" }, { 0x0050C2, 0xE6A000, 0xE6AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xE6B000, 0xE6BFFF, "Sika Technology AG", "SIKA" }, { 0x0050C2, 0xE6C000, 0xE6CFFF, "SAMSUNG Electronics Co.,Ltd.(LED Division)", "SAMSUNG-ELECTRONICS-LED-DIVISION" }, { 0x0050C2, 0xE6D000, 0xE6DFFF, "Allerta Inc", "ALLERTA" }, { 0x0050C2, 0xE6E000, 0xE6EFFF, "Power-One Italia S.p.A", "POWER-ONE-ITALIA-S-P-A" }, { 0x0050C2, 0xE6F000, 0xE6FFFF, "Leyden Engineering", "LEYDEN-ENGINEERING" }, { 0x0050C2, 0xE70000, 0xE70FFF, "DORLET S.A.", "DORLET" }, { 0x0050C2, 0xE71000, 0xE71FFF, "traffic network solutions s.l", "TRAFFIC-NETWORK-SOLUTIONS-S-L" }, { 0x0050C2, 0xE73000, 0xE73FFF, "ACS Motion Control Ltd.", "ACS-MOTION-CONTROL" }, { 0x0050C2, 0xE74000, 0xE74FFF, "Will corp.", "WILL" }, { 0x0050C2, 0xE75000, 0xE75FFF, "FSM AG", "FSM" }, { 0x0050C2, 0xE76000, 0xE76FFF, "Embedded Solution Bank Co., Ltd.", "EMBEDDED-SOLUTION-BANK" }, { 0x0050C2, 0xE77000, 0xE77FFF, "Fr. Sauter AG", "FR-SAUTER" }, { 0x0050C2, 0xE78000, 0xE78FFF, "TASK SISTEMAS DE COMPUTACAO LTDA", "TASK-SISTEMAS-DE-COMPUTACAO-LTDA" }, { 0x0050C2, 0xE79000, 0xE79FFF, "MCS MICRONIC Computer Systeme GmbH", "MCS-MICRONIC-SYSTEME" }, { 0x0050C2, 0xE7A000, 0xE7AFFF, "Lightel", "LIGHTEL" }, { 0x0050C2, 0xE7B000, 0xE7BFFF, "ATOM GIKEN Co.,Ltd.", "ATOM-GIKEN" }, { 0x0050C2, 0xE7C000, 0xE7CFFF, "sp controls, inc", "SP-CONTROLS" }, { 0x0050C2, 0xE7D000, 0xE7DFFF, "AEL Microsystems Limited", "AEL-MICROSYSTEMS" }, { 0x0050C2, 0xE7E000, 0xE7EFFF, "Swareflex GmbH", "SWAREFLEX" }, { 0x0050C2, 0xE7F000, 0xE7FFFF, "LS Control A/S", "LS-CONTROL-A/S" }, { 0x0050C2, 0xE80000, 0xE80FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xE81000, 0xE81FFF, "Adaptive Technologies, Inc.", "ADAPTIVE-TECHNOLOGIES" }, { 0x0050C2, 0xE82000, 0xE82FFF, "Xplore Technologies Corp", "XPLORE-TECHNOLOGIES" }, { 0x0050C2, 0xE83000, 0xE83FFF, "Witree Co.,Ltd", "WITREE" }, { 0x0050C2, 0xE84000, 0xE84FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd.", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xE85000, 0xE85FFF, "Cosmo Life Co.,Ltd", "COSMO-LIFE" }, { 0x0050C2, 0xE86000, 0xE86FFF, "Multisuns Corporation", "MULTISUNS" }, { 0x0050C2, 0xE87000, 0xE87FFF, "Lamson Safes & Security", "LAMSON-SAFES-SECURITY" }, { 0x0050C2, 0xE88000, 0xE88FFF, "Pivitec, LLC", "PIVITEC-LLC" }, { 0x0050C2, 0xE89000, 0xE89FFF, "PROTEQSEN", "PROTEQSEN" }, { 0x0050C2, 0xE8A000, 0xE8AFFF, "Macronet s.r.l.", "MACRONET-S-R-L" }, { 0x0050C2, 0xE8B000, 0xE8BFFF, "RPA Electronic Solutions, Inc.", "RPA-SOLUTIONS" }, { 0x0050C2, 0xE8C000, 0xE8CFFF, "Epec Oy", "EPEC-OY" }, { 0x0050C2, 0xE8D000, 0xE8DFFF, "SystemAdvanced Co,Ltd", "SYSTEMADVANCED" }, { 0x0050C2, 0xE8E000, 0xE8EFFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xE8F000, 0xE8FFFF, "STT Condigi A/S", "STT-CONDIGI-A/S" }, { 0x0050C2, 0xE90000, 0xE90FFF, "GS Elektromedizinische Geraete G. Stemple GmbH", "GS-ELEKTROMEDIZINISCHE-GERAETE-G-STEMPLE" }, { 0x0050C2, 0xE91000, 0xE91FFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xE92000, 0xE92FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xE93000, 0xE93FFF, "Perceptive Pixel Inc.", "PERCEPTIVE-PIXEL" }, { 0x0050C2, 0xE94000, 0xE94FFF, "ANA-U GmbH", "ANA-U" }, { 0x0050C2, 0xE95000, 0xE95FFF, "Dlite Comercio, Importadora e Serviços de Automação Ltda", "DLITE-COMERCIO-IMPORTADORA-E-SERVIçOS-DE-AUTOMAçãO-LTDA" }, { 0x0050C2, 0xE96000, 0xE96FFF, "PROYECSON S.A.", "PROYECSON" }, { 0x0050C2, 0xE97000, 0xE97FFF, "Arista Systems Corporation", "ARISTA" }, { 0x0050C2, 0xE98000, 0xE98FFF, "i3 International Inc.", "I3" }, { 0x0050C2, 0xE99000, 0xE99FFF, "UV Networks, Inc.", "UV-NETWORKS" }, { 0x0050C2, 0xE9A000, 0xE9AFFF, "Solace Systems", "SOLACE" }, { 0x0050C2, 0xE9B000, 0xE9BFFF, "Hentschel System GmbH", "HENTSCHEL-SYSTEM" }, { 0x0050C2, 0xE9C000, 0xE9CFFF, "SPARQ systems", "SPARQ" }, { 0x0050C2, 0xE9D000, 0xE9DFFF, "nicai-systems", "NICAI" }, { 0x0050C2, 0xE9E000, 0xE9EFFF, "American Microsystems, Ltd.", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0xE9F000, 0xE9FFFF, "DataSoft Corporation", "DATASOFT" }, { 0x0050C2, 0xEA0000, 0xEA0FFF, "Robert Bosch Healthcare, Inc.", "ROBERT-BOSCH-HEALTHCARE" }, { 0x0050C2, 0xEA1000, 0xEA1FFF, "TEX COMPUTER SRL", "TEX-SRL" }, { 0x0050C2, 0xEA2000, 0xEA2FFF, "ThinkRF Corp", "THINKRF" }, { 0x0050C2, 0xEA3000, 0xEA3FFF, "Subsea Systems, Inc.", "SUBSEA" }, { 0x0050C2, 0xEA4000, 0xEA4FFF, "head", "HEAD" }, { 0x0050C2, 0xEA5000, 0xEA5FFF, "Aerodata AG", "AERODATA" }, { 0x0050C2, 0xEA6000, 0xEA6FFF, "Powersense A/S", "POWERSENSE-A/S" }, { 0x0050C2, 0xEA7000, 0xEA7FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xEA8000, 0xEA8FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x0050C2, 0xEA9000, 0xEA9FFF, "METTLER-TOLEDO HI-SPEED", "METTLER-TOLEDO-HI-SPEED" }, { 0x0050C2, 0xEAA000, 0xEAAFFF, "BAE Systems", "BAE" }, { 0x0050C2, 0xEAB000, 0xEABFFF, "Warp9 Tech Design, Inc.", "WARP9-TECH-DESIGN" }, { 0x0050C2, 0xEAC000, 0xEACFFF, "Alias ip", "ALIAS-IP" }, { 0x0050C2, 0xEAD000, 0xEADFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xEAE000, 0xEAEFFF, "Alyrica Networks", "ALYRICA-NETWORKS" }, { 0x0050C2, 0xEAF000, 0xEAFFFF, "Aircell", "AIRCELL" }, { 0x0050C2, 0xEB0000, 0xEB0FFF, "Pulse Communication Systems Pvt. Ltd.", "PULSE-COMMUNICATION-PVT" }, { 0x0050C2, 0xEB1000, 0xEB1FFF, "PDU EXPERT UK LTD", "PDU-EXPERT-UK" }, { 0x0050C2, 0xEB2000, 0xEB2FFF, "Otaki Electric Corporation", "OTAKI-ELECTRIC" }, { 0x0050C2, 0xEB3000, 0xEB3FFF, "AR RF/Microwave Instrumentation", "AR-RF/MICROWAVE-INSTRUMENTATION" }, { 0x0050C2, 0xEB4000, 0xEB4FFF, "Wishtek Technology, Inc.", "WISHTEK" }, { 0x0050C2, 0xEB5000, 0xEB5FFF, "Covidence A/S", "COVIDENCE-A/S" }, { 0x0050C2, 0xEB6000, 0xEB6FFF, "Monsoon Solutions, Inc.", "MONSOON-SOLUTIONS" }, { 0x0050C2, 0xEB7000, 0xEB7FFF, "Saab AB", "SAAB-AB" }, { 0x0050C2, 0xEB8000, 0xEB8FFF, "dspnor", "DSPNOR" }, { 0x0050C2, 0xEB9000, 0xEB9FFF, "ALPHA-MOS", "ALPHA-MOS" }, { 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, 0xEBC000, 0xEBCFFF, "Diehl AKO Stiftung & Co. KG", "DIEHL-AKO-STIFTUNG" }, { 0x0050C2, 0xEBD000, 0xEBDFFF, "Droplet Measurement Technologies", "DROPLET-MEASUREMENT-TECHNOLOGIES" }, { 0x0050C2, 0xEBE000, 0xEBEFFF, "Global Tecnologia LTDA.", "GLOBAL-TECNOLOGIA-LTDA" }, { 0x0050C2, 0xEBF000, 0xEBFFFF, "CIVOLUTION", "CIVOLUTION" }, { 0x0050C2, 0xEC0000, 0xEC0FFF, "UgMO Technologies", "UGMO-TECHNOLOGIES" }, { 0x0050C2, 0xEC1000, 0xEC1FFF, "ANT Group s.r.l", "ANT-GROUP-S-R-L" }, { 0x0050C2, 0xEC2000, 0xEC2FFF, "Ixonos Plc", "IXONOS-PLC" }, { 0x0050C2, 0xEC3000, 0xEC3FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xEC4000, 0xEC4FFF, "Logical Electromechanical Sys Inc.", "LOGICAL-ELECTROMECHANICAL-SYS" }, { 0x0050C2, 0xEC5000, 0xEC5FFF, "RSUPPORT Co., Ltd.", "RSUPPORT" }, { 0x0050C2, 0xEC6000, 0xEC6FFF, "INFRONICS SYSTEMS LIMITED", "INFRONICS" }, { 0x0050C2, 0xEC7000, 0xEC7FFF, "LIQUID ROBOTICS, INC", "LIQUID-ROBOTICS" }, { 0x0050C2, 0xEC8000, 0xEC8FFF, "IBERNEX INGENIERIA, S.L.", "IBERNEX-INGENIERIA-S-L" }, { 0x0050C2, 0xEC9000, 0xEC9FFF, "Amsterdam Scientific Instruments BV", "AMSTERDAM-SCIENTIFIC-INSTRUMENTS" }, { 0x0050C2, 0xECA000, 0xECAFFF, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x0050C2, 0xECB000, 0xECBFFF, "FAL Corp", "FAL" }, { 0x0050C2, 0xECC000, 0xECCFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xECD000, 0xECDFFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x0050C2, 0xECE000, 0xECEFFF, "easii ic adiis", "EASII-IC-ADIIS" }, { 0x0050C2, 0xECF000, 0xECFFFF, "TAIWAN HIPLUS CORPORATION", "TAIWAN-HIPLUS" }, { 0x0050C2, 0xED0000, 0xED0FFF, "Nippon Systemware Co.,Ltd.", "NIPPON-SYSTEMWARE" }, { 0x0050C2, 0xED1000, 0xED1FFF, "Arcontia Technology AB", "ARCONTIA-AB" }, { 0x0050C2, 0xED2000, 0xED2FFF, "Klangspektrum GmbH", "KLANGSPEKTRUM" }, { 0x0050C2, 0xED3000, 0xED3FFF, "ECO MONITORING UTILITY SYSTEMS LTD", "ECO-MONITORING-UTILITY" }, { 0x0050C2, 0xED4000, 0xED4FFF, "TAMAGAWA ELECTRONICS CO.,LTD.", "TAMAGAWA-ELECTRONICS" }, { 0x0050C2, 0xED5000, 0xED5FFF, "RFL Electronics Inc.", "RFL-ELECTRONICS" }, { 0x0050C2, 0xED6000, 0xED6FFF, "Cat AB", "CAT-AB" }, { 0x0050C2, 0xED7000, 0xED7FFF, "FBT Elettronica spa", "FBT-ELETTRONICA-SPA" }, { 0x0050C2, 0xED8000, 0xED8FFF, "AVocation Systems, Inc.", "AVOCATION" }, { 0x0050C2, 0xED9000, 0xED9FFF, "Plasmatronics pty ltd", "PLASMATRONICS-PTY" }, { 0x0050C2, 0xEDA000, 0xEDAFFF, "Joint Stock Company Svyaz Inginiring M", "JOINT-STOCK-COMPANY-SVYAZ-INGINIRING-M" }, { 0x0050C2, 0xEDB000, 0xEDBFFF, "BELIK S.P.R.L.", "BELIK-S-P-R-L" }, { 0x0050C2, 0xEDC000, 0xEDCFFF, "Eyelock Corporation", "EYELOCK" }, { 0x0050C2, 0xEDD000, 0xEDDFFF, "EBNEURO SPA", "EBNEURO-SPA" }, { 0x0050C2, 0xEDE000, 0xEDEFFF, "Smart Grid Networks", "SMART-GRID-NETWORKS" }, { 0x0050C2, 0xEDF000, 0xEDFFFF, "Monitor Business Machines", "MONITOR-BUSINESS-MACHINES" }, { 0x0050C2, 0xEE0000, 0xEE0FFF, "osf Hansjuergen Meier GmbH & Co. KG", "OSF-HANSJUERGEN-MEIER" }, { 0x0050C2, 0xEE1000, 0xEE1FFF, "Procon Electronics", "PROCON-ELECTRONICS" }, { 0x0050C2, 0xEE2000, 0xEE2FFF, "System Industrie Electronic GmbH", "SYSTEM-INDUSTRIE" }, { 0x0050C2, 0xEE3000, 0xEE3FFF, "Tecnint HTE Srl", "TECNINT-HTE-SRL" }, { 0x0050C2, 0xEE4000, 0xEE4FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xEE5000, 0xEE5FFF, "Cytec Zylindertechnik GmbH", "CYTEC-ZYLINDERTECHNIK" }, { 0x0050C2, 0xEE6000, 0xEE6FFF, "B:TECH, a. s.", "B:TECH-A-S" }, { 0x0050C2, 0xEE7000, 0xEE7FFF, "Syes srl", "SYES-SRL" }, { 0x0050C2, 0xEE8000, 0xEE8FFF, "Kamacho Scale Co., Ltd.", "KAMACHO-SCALE" }, { 0x0050C2, 0xEE9000, 0xEE9FFF, "QUANTA S.r.l.", "QUANTA-S-R-L" }, { 0x0050C2, 0xEEA000, 0xEEAFFF, "Positioneering Limited", "POSITIONEERING" }, { 0x0050C2, 0xEEB000, 0xEEBFFF, "fibrisTerre GmbH", "FIBRISTERRE" }, { 0x0050C2, 0xEEC000, 0xEECFFF, "Yuyama Mfg. Co., Ltd.", "YUYAMA-MFG" }, { 0x0050C2, 0xEED000, 0xEEDFFF, "Future Design Controls, Inc", "FUTURE-DESIGN-CONTROLS" }, { 0x0050C2, 0xEEE000, 0xEEEFFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xEEF000, 0xEEFFFF, "IDTRONIC GmbH", "IDTRONIC" }, { 0x0050C2, 0xEF0000, 0xEF0FFF, "Homaetrix Ltd", "HOMAETRIX" }, { 0x0050C2, 0xEF1000, 0xEF1FFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xEF2000, 0xEF2FFF, "Specialty Microwave Corp", "SPECIALTY-MICROWAVE" }, { 0x0050C2, 0xEF3000, 0xEF3FFF, "Smart Power Electronics GmbH & Co. KG", "SMART-POWER-ELECTRONICS" }, { 0x0050C2, 0xEF4000, 0xEF4FFF, "RO.VE.R. Laboratories S.p.A", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x0050C2, 0xEF5000, 0xEF5FFF, "Human Network Labs, Inc.", "HUMAN-NETWORK-LABS" }, { 0x0050C2, 0xEF6000, 0xEF6FFF, "Netline Communication Technologies", "NETLINE-COMMUNICATION-TECHNOLOGIES" }, { 0x0050C2, 0xEF7000, 0xEF7FFF, "Amstelland Electronic BV", "AMSTELLAND" }, { 0x0050C2, 0xEF8000, 0xEF8FFF, "HCL Technologies", "HCL-TECHNOLOGIES" }, { 0x0050C2, 0xEF9000, 0xEF9FFF, "HORIBA ABX", "HORIBA-ABX" }, { 0x0050C2, 0xEFA000, 0xEFAFFF, "Predictive Sensor Technology", "PREDICTIVE-SENSOR" }, { 0x0050C2, 0xEFB000, 0xEFBFFF, "Norbit ODM AS", "NORBIT-ODM-AS" }, { 0x0050C2, 0xEFC000, 0xEFCFFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xEFD000, 0xEFDFFF, "Sanmina", "SANMINA" }, { 0x0050C2, 0xEFE000, 0xEFEFFF, "PLR Information Systems Ltd.", "PLR-INFORMATION" }, { 0x0050C2, 0xEFF000, 0xEFFFFF, "Zephyrus Electronics LTD.", "ZEPHYRUS-ELECTRONICS" }, { 0x0050C2, 0xF00000, 0xF00FFF, "Syscom Instruments", "SYSCOM-INSTRUMENTS" }, { 0x0050C2, 0xF01000, 0xF01FFF, "Mango DSP, Inc", "MANGO-DSP" }, { 0x0050C2, 0xF02000, 0xF02FFF, "BMR", "BMR" }, { 0x0050C2, 0xF03000, 0xF03FFF, "Wren Sound Systems", "WREN-SOUND" }, { 0x0050C2, 0xF04000, 0xF04FFF, "KINKI ROENTGEN INDUSTRIAL CO.,LTD", "KINKI-ROENTGEN-INDUSTRIAL" }, { 0x0050C2, 0xF05000, 0xF05FFF, "ESI Ventures", "ESI-VENTURES" }, { 0x0050C2, 0xF06000, 0xF06FFF, "Micro-Key BV", "MICRO-KEY" }, { 0x0050C2, 0xF07000, 0xF07FFF, "Icon Research Ltd", "ICON-RESEARCH" }, { 0x0050C2, 0xF08000, 0xF08FFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF09000, 0xF09FFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x0050C2, 0xF0A000, 0xF0AFFF, "HASCOM International Pty Ltd", "HASCOM-PTY" }, { 0x0050C2, 0xF0B000, 0xF0BFFF, "Treehaven Technologies, Inc.", "TREEHAVEN-TECHNOLOGIES" }, { 0x0050C2, 0xF0C000, 0xF0CFFF, "SKYCHANNEL LTD", "SKYCHANNEL" }, { 0x0050C2, 0xF0D000, 0xF0DFFF, "Bluetest AB", "BLUETEST-AB" }, { 0x0050C2, 0xF0E000, 0xF0EFFF, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0x0050C2, 0xF0F000, 0xF0FFFF, "AeroVision Avionics, Inc.", "AEROVISION-AVIONICS" }, { 0x0050C2, 0xF10000, 0xF10FFF, "Wincor Nixdorf Sp. z o.o.", "WINCOR-NIXDORF-SP-Z-O-O" }, { 0x0050C2, 0xF11000, 0xF11FFF, "Organis GmbH", "ORGANIS" }, { 0x0050C2, 0xF12000, 0xF12FFF, "General Industrial Controls Pvt Ltd", "GENERAL-INDUSTRIAL-CONTROLS-PVT" }, { 0x0050C2, 0xF13000, 0xF13FFF, "Packet Plus, Inc.", "PACKET-PLUS" }, { 0x0050C2, 0xF14000, 0xF14FFF, "VISION SYSTEMS AERONAUTIC", "VISION-AERONAUTIC" }, { 0x0050C2, 0xF15000, 0xF15FFF, "Sascal Displays Ltd", "SASCAL-DISPLAYS" }, { 0x0050C2, 0xF16000, 0xF16FFF, "Peter Huber Kältemaschinenbau GmbH", "PETER-HUBER-KäLTEMASCHINENBAU" }, { 0x0050C2, 0xF17000, 0xF17FFF, "ABB Transmission and Distribution Automation Equipment (Xiamen) Co., Ltd", "ABB-TRANSMISSION-AND-DISTRIBUTION-AUTOMATION-EQUIPMENT-XIAMEN" }, { 0x0050C2, 0xF18000, 0xF18FFF, "Vitec Multimedia", "VITEC-MULTIMEDIA" }, { 0x0050C2, 0xF19000, 0xF19FFF, "Netlink Bilisim Sistemleri San. ve Tic. Ltd. Sti.", "NETLINK-BILISIM-SISTEMLERI-SAN-VE-TIC-STI" }, { 0x0050C2, 0xF1A000, 0xF1AFFF, "Aqua Management", "AQUA-MANAGEMENT" }, { 0x0050C2, 0xF1B000, 0xF1BFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF1C000, 0xF1CFFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xF1D000, 0xF1DFFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x0050C2, 0xF1E000, 0xF1EFFF, "Dell'Orto S.P.A.", "DELL-ORTO-S-P-A" }, { 0x0050C2, 0xF1F000, 0xF1FFFF, "Verified Energy, LLC.", "VERIFIED-ENERGY-LLC" }, { 0x0050C2, 0xF20000, 0xF20FFF, "Unfors Instruments AB", "UNFORS-INSTRUMENTS-AB" }, { 0x0050C2, 0xF21000, 0xF21FFF, "SEITEC Co. Ltd", "SEITEC" }, { 0x0050C2, 0xF22000, 0xF22FFF, "Harland Simon plc", "HARLAND-SIMON-PLC" }, { 0x0050C2, 0xF23000, 0xF23FFF, "Electro-Motive Diesel", "ELECTRO-MOTIVE-DIESEL" }, { 0x0050C2, 0xF24000, 0xF24FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xF25000, 0xF25FFF, "Samway Electronic SRL", "SAMWAY-SRL" }, { 0x0050C2, 0xF26000, 0xF26FFF, "WaveIP", "WAVEIP" }, { 0x0050C2, 0xF27000, 0xF27FFF, "ELAN SYSTEMS", "ELAN" }, { 0x0050C2, 0xF28000, 0xF28FFF, "Vertex Antennentechnik GmbH", "VERTEX-ANTENNENTECHNIK" }, { 0x0050C2, 0xF29000, 0xF29FFF, "RADYNE CORPORATION", "RADYNE" }, { 0x0050C2, 0xF2A000, 0xF2AFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xF2B000, 0xF2BFFF, "Bio Guard component & technologies", "BIO-GUARD-COMPONENT-TECHNOLOGIES" }, { 0x0050C2, 0xF2C000, 0xF2CFFF, "Terratel Technology s.r.o.", "TERRATEL-S-R-O" }, { 0x0050C2, 0xF2D000, 0xF2DFFF, "Robert Bosch Healthcare Systems, Inc.", "ROBERT-BOSCH-HEALTHCARE" }, { 0x0050C2, 0xF2E000, 0xF2EFFF, "H&L Instruments, LLC", "H-L-INSTRUMENTS-LLC" }, { 0x0050C2, 0xF2F000, 0xF2FFFF, "Arcos Technologies LTD", "ARCOS-TECHNOLOGIES" }, { 0x0050C2, 0xF30000, 0xF30FFF, "Miris AB", "MIRIS-AB" }, { 0x0050C2, 0xF31000, 0xF31FFF, "Ruetz Technologies GmbH", "RUETZ-TECHNOLOGIES" }, { 0x0050C2, 0xF32000, 0xF32FFF, "Net4Things", "NET4THINGS" }, { 0x0050C2, 0xF33000, 0xF33FFF, "Applied Micro Electronics AME BV", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0x0050C2, 0xF34000, 0xF34FFF, "Sequip S+E GmbH", "SEQUIP-S+E" }, { 0x0050C2, 0xF35000, 0xF35FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x0050C2, 0xF36000, 0xF36FFF, "Visitech AS", "VISITECH-AS" }, { 0x0050C2, 0xF37000, 0xF37FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x0050C2, 0xF38000, 0xF38FFF, "AeroControl, Inc.", "AEROCONTROL" }, { 0x0050C2, 0xF39000, 0xF39FFF, "Inforce Computing, Inc.", "INFORCE-COMPUTING" }, { 0x0050C2, 0xF3A000, 0xF3AFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF3B000, 0xF3BFFF, "TAMS firmware co.", "TAMS-FIRMWARE" }, { 0x0050C2, 0xF3C000, 0xF3CFFF, "Vemco Sp. z o. o.", "VEMCO-SP-Z-O-O" }, { 0x0050C2, 0xF3D000, 0xF3DFFF, "Project service S.a.s", "PROJECT-SERVICE-S" }, { 0x0050C2, 0xF3E000, 0xF3EFFF, "Vtron Pty Ltd", "VTRON-PTY" }, { 0x0050C2, 0xF3F000, 0xF3FFFF, "DENSEI COMMUNICATION Inc.", "DENSEI-COMMUNICATION" }, { 0x0050C2, 0xF40000, 0xF40FFF, "iBWorld co.,ltd.", "IBWORLD" }, { 0x0050C2, 0xF41000, 0xF41FFF, "FairyDevices Inc.", "FAIRYDEVICES" }, { 0x0050C2, 0xF42000, 0xF42FFF, "DSPCon", "DSPCON" }, { 0x0050C2, 0xF43000, 0xF43FFF, "Special Systems Engineering Center LLC", "SPECIAL-ENGINEERING-CENTER-LLC" }, { 0x0050C2, 0xF44000, 0xF44FFF, "Steinbichler Optotechnik GmbH", "STEINBICHLER-OPTOTECHNIK" }, { 0x0050C2, 0xF45000, 0xF45FFF, "HUSTY M.Styczen J.Hupert Sp.J.", "HUSTY-M-STYCZEN-J-HUPERT-SP-J" }, { 0x0050C2, 0xF46000, 0xF46FFF, "Reason Tecnologia S.A.", "REASON-TECNOLOGIA" }, { 0x0050C2, 0xF47000, 0xF47FFF, "cadac,inc.", "CADAC" }, { 0x0050C2, 0xF48000, 0xF48FFF, "Midas Technology DBA Phoenix Audio Technologies", "MIDAS-DBA-PHOENIX-AUDIO-TECHNOLOGIES" }, { 0x0050C2, 0xF49000, 0xF49FFF, "Green Instruments A/S", "GREEN-INSTRUMENTS-A/S" }, { 0x0050C2, 0xF4A000, 0xF4AFFF, "Z-App Systems, Inc.", "Z-APP" }, { 0x0050C2, 0xF4B000, 0xF4BFFF, "Supranet", "SUPRANET" }, { 0x0050C2, 0xF4C000, 0xF4CFFF, "Enistic Limited", "ENISTIC" }, { 0x0050C2, 0xF4D000, 0xF4DFFF, "KNOWHOW INFOCOM INC.", "KNOWHOW-INFOCOM" }, { 0x0050C2, 0xF4E000, 0xF4EFFF, "Heinzinger electronic GmbH", "HEINZINGER" }, { 0x0050C2, 0xF4F000, 0xF4FFFF, "BAP Precision Ltd.", "BAP-PRECISION" }, { 0x0050C2, 0xF50000, 0xF50FFF, "Moritex Corporation", "MORITEX" }, { 0x0050C2, 0xF51000, 0xF51FFF, "NDC Infrared Engineering, Inc.", "NDC-INFRARED-ENGINEERING" }, { 0x0050C2, 0xF52000, 0xF52FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xF53000, 0xF53FFF, "BAYCOM OPTO-ELECTRONICS TECHNOLOGY CO.,LTD.", "BAYCOM-OPTO-ELECTRONICS" }, { 0x0050C2, 0xF54000, 0xF54FFF, "Hella Gutmann Solutions GmbH", "HELLA-GUTMANN-SOLUTIONS" }, { 0x0050C2, 0xF55000, 0xF55FFF, "Honeywell International Inc.", "HONEYWELL" }, { 0x0050C2, 0xF56000, 0xF56FFF, "Monsoon Solutions, Inc.", "MONSOON-SOLUTIONS" }, { 0x0050C2, 0xF57000, 0xF57FFF, "Reach Technologies Inc.", "REACH-TECHNOLOGIES" }, { 0x0050C2, 0xF58000, 0xF58FFF, "IEEE-SA", "IEEE" }, { 0x0050C2, 0xF59000, 0xF59FFF, "G3 Technologies", "G3-TECHNOLOGIES" }, { 0x0050C2, 0xF5A000, 0xF5AFFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x0050C2, 0xF5B000, 0xF5BFFF, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x0050C2, 0xF5C000, 0xF5CFFF, "DSP DESIGN LTD", "DSP-DESIGN" }, { 0x0050C2, 0xF5D000, 0xF5DFFF, "SMARTB TECHNOLOGIES", "SMARTB-TECHNOLOGIES" }, { 0x0050C2, 0xF5E000, 0xF5EFFF, "Y-cam Solutions Ltd", "Y-CAM-SOLUTIONS" }, { 0x0050C2, 0xF5F000, 0xF5FFFF, "BORYEU TECHNOLOGY CO.,LTD", "BORYEU" }, { 0x0050C2, 0xF60000, 0xF60FFF, "Deckma GmbH", "DECKMA" }, { 0x0050C2, 0xF61000, 0xF61FFF, "Brauch Elektronik GmbH&Co.KG", "BRAUCH-ELEKTRONIK" }, { 0x0050C2, 0xF62000, 0xF62FFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xF63000, 0xF63FFF, "Triax A/S", "TRIAX-A/S" }, { 0x0050C2, 0xF64000, 0xF64FFF, "Chrisso Technologies LLC", "CHRISSO-TECHNOLOGIES-LLC" }, { 0x0050C2, 0xF65000, 0xF65FFF, "Telebyte Inc.", "TELEBYTE" }, { 0x0050C2, 0xF66000, 0xF66FFF, "GWT LLC", "GWT-LLC" }, { 0x0050C2, 0xF67000, 0xF67FFF, "Celestial Audio", "CELESTIAL-AUDIO" }, { 0x0050C2, 0xF68000, 0xF68FFF, "NEWTEC A/S", "NEWTEC-A/S" }, { 0x0050C2, 0xF69000, 0xF69FFF, "Safe Place Solutions Ltd", "SAFE-PLACE-SOLUTIONS" }, { 0x0050C2, 0xF6A000, 0xF6AFFF, "OFI Inc. (dba 2D2C)", "OFI-DBA-2D2C" }, { 0x0050C2, 0xF6B000, 0xF6BFFF, "Algodue Elettronica Srl", "ALGODUE-ELETTRONICA-SRL" }, { 0x0050C2, 0xF6C000, 0xF6CFFF, "Pro Design Electronic GmbH", "PRO-DESIGN" }, { 0x0050C2, 0xF6D000, 0xF6DFFF, "Pro Design Electronic GmbH", "PRO-DESIGN" }, { 0x0050C2, 0xF6E000, 0xF6EFFF, "Smith Meter, Inc.", "SMITH-METER" }, { 0x0050C2, 0xF6F000, 0xF6FFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xF70000, 0xF70FFF, "Noralta Technologies Inc", "NORALTA-TECHNOLOGIES" }, { 0x0050C2, 0xF71000, 0xF71FFF, "RF CODE, INC", "RF-CODE" }, { 0x0050C2, 0xF72000, 0xF72FFF, "MaxDeTec AG", "MAXDETEC" }, { 0x0050C2, 0xF73000, 0xF73FFF, "DELTACAST.TV", "DELTACAST-TV" }, { 0x0050C2, 0xF74000, 0xF74FFF, "Thor Technologies Pty Ltd", "THOR-TECHNOLOGIES-PTY" }, { 0x0050C2, 0xF75000, 0xF75FFF, "PumpWell Solutions Ltd.", "PUMPWELL-SOLUTIONS" }, { 0x0050C2, 0xF76000, 0xF76FFF, "Rong Jie(FuZhou)Electronics Co.,Ltd", "RONG-JIE-FUZHOU-ELECTRONICS" }, { 0x0050C2, 0xF77000, 0xF77FFF, "SYSTEMTECHNIK GmbH", "SYSTEMTECHNIK" }, { 0x0050C2, 0xF78000, 0xF78FFF, "Gets MSS S.A.", "GETS-MSS" }, { 0x0050C2, 0xF79000, 0xF79FFF, "Tattile SRL", "TATTILE-SRL" }, { 0x0050C2, 0xF7A000, 0xF7AFFF, "C3 LLC", "C3-LLC" }, { 0x0050C2, 0xF7B000, 0xF7BFFF, "MCM Electronics", "MCM-ELECTRONICS" }, { 0x0050C2, 0xF7C000, 0xF7CFFF, "Atonometrics, Inc.", "ATONOMETRICS" }, { 0x0050C2, 0xF7D000, 0xF7DFFF, "D-Hike Electroncs Technology Co.,Ltd", "D-HIKE-ELECTRONCS" }, { 0x0050C2, 0xF7E000, 0xF7EFFF, "TruTeq Wireless (Pty) Ltd", "TRUTEQ-WIRELESS-PTY" }, { 0x0050C2, 0xF7F000, 0xF7FFFF, "Dynamic Design", "DYNAMIC-DESIGN" }, { 0x0050C2, 0xF80000, 0xF80FFF, "SYS TEC electronic GmbH", "SYS-TEC" }, { 0x0050C2, 0xF81000, 0xF81FFF, "PLDA", "PLDA" }, { 0x0050C2, 0xF82000, 0xF82FFF, "Sincair Systems International", "SINCAIR" }, { 0x0050C2, 0xF83000, 0xF83FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x0050C2, 0xF84000, 0xF84FFF, "Dynon Instruments", "DYNON-INSTRUMENTS" }, { 0x0050C2, 0xF85000, 0xF85FFF, "Enetics, Inc.", "ENETICS" }, { 0x0050C2, 0xF86000, 0xF86FFF, "Audio Power Labs", "AUDIO-POWER-LABS" }, { 0x0050C2, 0xF87000, 0xF87FFF, "Vaisala Oyj", "VAISALA-OYJ" }, { 0x0050C2, 0xF88000, 0xF88FFF, "RTC Manufacturing Inc.", "RTC-MANUFACTURING" }, { 0x0050C2, 0xF89000, 0xF89FFF, "CSA Engineering AG", "CSA-ENGINEERING" }, { 0x0050C2, 0xF8A000, 0xF8AFFF, "EMAC, Inc.", "EMAC" }, { 0x0050C2, 0xF8B000, 0xF8BFFF, "comlet Verteilte Systeme GmbH", "COMLET-VERTEILTE-SYSTEME" }, { 0x0050C2, 0xF8C000, 0xF8CFFF, "UBSTechnology Co., Ltd", "UBSTECHNOLOGY" }, { 0x0050C2, 0xF8D000, 0xF8DFFF, "GUANGDONG EAST POWER CO.,LTD.", "GUANGDONG-EAST-POWER" }, { 0x0050C2, 0xF8E000, 0xF8EFFF, "GPO", "GPO" }, { 0x0050C2, 0xF8F000, 0xF8FFFF, "Computerwise, Inc.", "COMPUTERWISE" }, { 0x0050C2, 0xF90000, 0xF90FFF, "SecureTech Systems, Inc.", "SECURETECH" }, { 0x0050C2, 0xF91000, 0xF91FFF, "RE2 Inc", "RE2" }, { 0x0050C2, 0xF92000, 0xF92FFF, "CONET Solutions GmbH", "CONET-SOLUTIONS" }, { 0x0050C2, 0xF93000, 0xF93FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x0050C2, 0xF94000, 0xF94FFF, "Digital Barriers", "DIGITAL-BARRIERS" }, { 0x0050C2, 0xF95000, 0xF95FFF, "TTi LTD (Thurlby Thandar Instruments LTD)", "TTI-THURLBY-THANDAR-INSTRUMENTS" }, { 0x0050C2, 0xF96000, 0xF96FFF, "JLCooper Electronics", "JLCOOPER-ELECTRONICS" }, { 0x0050C2, 0xF97000, 0xF97FFF, "Sicon s.r.l.", "SICON-S-R-L" }, { 0x0050C2, 0xF98000, 0xF98FFF, "Infotech North America", "INFOTECH-NORTH-AMERICA" }, { 0x0050C2, 0xF99000, 0xF99FFF, "Dr. Neumann elektronik GmbH", "DR-NEUMANN-ELEKTRONIK" }, { 0x0050C2, 0xF9A000, 0xF9AFFF, "Telvent", "TELVENT" }, { 0x0050C2, 0xF9B000, 0xF9BFFF, "NEWELL TECHNOLOGIES LIMITED", "NEWELL-TECHNOLOGIES" }, { 0x0050C2, 0xF9C000, 0xF9CFFF, "R&D KOMETEH", "R-D-KOMETEH" }, { 0x0050C2, 0xF9D000, 0xF9DFFF, "JSC Kaluga Teletypes Manufacturing Plant", "JSC-KALUGA-TELETYPES-MANUFACTURING-PLANT" }, { 0x0050C2, 0xF9E000, 0xF9EFFF, "Matsusada Precision Inc.", "MATSUSADA-PRECISION" }, { 0x0050C2, 0xF9F000, 0xF9FFFF, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x0050C2, 0xFA0000, 0xFA0FFF, "Amplus Communication Pte Ltd", "AMPLUS-COMMUNICATION-PTE" }, { 0x0050C2, 0xFA1000, 0xFA1FFF, "N-Hands GmbH und Co KG", "N-HANDS-UND" }, { 0x0050C2, 0xFA2000, 0xFA2FFF, "Power-One", "POWER-ONE" }, { 0x0050C2, 0xFA3000, 0xFA3FFF, "Xemex NV", "XEMEX-NV" }, { 0x0050C2, 0xFA5000, 0xFA5FFF, "Intuitive Surgical, Inc.", "INTUITIVE-SURGICAL" }, { 0x0050C2, 0xFA6000, 0xFA6FFF, "Hilkom digital GmbH", "HILKOM-DIGITAL" }, { 0x0050C2, 0xFA7000, 0xFA7FFF, "Exelis Inc.", "EXELIS" }, { 0x0050C2, 0xFA8000, 0xFA8FFF, "Yash SiQure Technologies India Pvt. Ltd.", "YASH-SIQURE-TECHNOLOGIES-INDIA-PVT" }, { 0x0050C2, 0xFA9000, 0xFA9FFF, "Hijet Print d.o.o.", "HIJET-PRINT-D-O-O" }, { 0x0050C2, 0xFAA000, 0xFAAFFF, "YJSYSTEM", "YJSYSTEM" }, { 0x0050C2, 0xFAB000, 0xFABFFF, "Aplex Technology Inc.", "APLEX" }, { 0x0050C2, 0xFAC000, 0xFACFFF, "ADETEL GROUP", "ADETEL-GROUP" }, { 0x0050C2, 0xFAD000, 0xFADFFF, "Finishing Brands", "FINISHING-BRANDS" }, { 0x0050C2, 0xFAE000, 0xFAEFFF, "ATI Automacao Telecomunicacoes e Informatica Ltda", "ATI-AUTOMACAO-TELECOMUNICACOES-E-INFORMATICA-LTDA" }, { 0x0050C2, 0xFAF000, 0xFAFFFF, "Vremya-CH JSC", "VREMYA-CH-JSC" }, { 0x0050C2, 0xFB0000, 0xFB0FFF, "Tateishi Kobisha Co.LTD", "TATEISHI-KOBISHA" }, { 0x0050C2, 0xFB1000, 0xFB1FFF, "MATELEX", "MATELEX" }, { 0x0050C2, 0xFB2000, 0xFB2FFF, "Preston Industries dba PolyScience", "PRESTON-INDUSTRIES-DBA-POLYSCIENCE" }, { 0x0050C2, 0xFB3000, 0xFB3FFF, "CT Company", "CT-COMPANY" }, { 0x0050C2, 0xFB4000, 0xFB4FFF, "MC-monitoring SA", "MC-MONITORING" }, { 0x0050C2, 0xFB5000, 0xFB5FFF, "Assembly Contracts Limited", "ASSEMBLY-CONTRACTS" }, { 0x0050C2, 0xFB6000, 0xFB6FFF, "ARGUS-SPECTRUM", "ARGUS-SPECTRUM" }, { 0x0050C2, 0xFB7000, 0xFB7FFF, "Pounce Consulting", "POUNCE-CONSULTING" }, { 0x0050C2, 0xFB8000, 0xFB8FFF, "TECHNO CO.,LTD.", "TECHNO" }, { 0x0050C2, 0xFB9000, 0xFB9FFF, "Coral Telecom Ltd", "CORAL-TELECOM" }, { 0x0050C2, 0xFBA000, 0xFBAFFF, "Elbit Systems of America", "ELBIT-OF-AMERICA" }, { 0x0050C2, 0xFBB000, 0xFBBFFF, "ACIDA GmbH", "ACIDA" }, { 0x0050C2, 0xFBC000, 0xFBCFFF, "Leroy Somer", "LEROY-SOMER" }, { 0x0050C2, 0xFBD000, 0xFBDFFF, "FHF Funke+Huster Fernsig GmbH", "FHF-FUNKE+HUSTER-FERNSIG" }, { 0x0050C2, 0xFBE000, 0xFBEFFF, "senTec Elektronik GmbH", "SENTEC-ELEKTRONIK" }, { 0x0050C2, 0xFBF000, 0xFBFFFF, "MYLOGIC", "MYLOGIC" }, { 0x0050C2, 0xFC0000, 0xFC0FFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x0050C2, 0xFC1000, 0xFC1FFF, "Motec Pty Ltd", "MOTEC-PTY" }, { 0x0050C2, 0xFC2000, 0xFC2FFF, "ELTA", "ELTA" }, { 0x0050C2, 0xFC3000, 0xFC3FFF, "HSDC Sp. z o.o.", "HSDC-SP-Z-O-O" }, { 0x0050C2, 0xFC4000, 0xFC4FFF, "Kyowadensi", "KYOWADENSI" }, { 0x0050C2, 0xFC5000, 0xFC5FFF, "Sakura Seiki Co.,Ltd.", "SAKURA-SEIKI" }, { 0x0050C2, 0xFC6000, 0xFC6FFF, "Critical Link", "CRITICAL-LINK" }, { 0x0050C2, 0xFC7000, 0xFC7FFF, "SERCOM Regeltechniek", "SERCOM-REGELTECHNIEK" }, { 0x0050C2, 0xFC8000, 0xFC8FFF, "Far South Networks", "FAR-SOUTH-NETWORKS" }, { 0x0050C2, 0xFC9000, 0xFC9FFF, "Mehta Tech, Inc.", "MEHTA-TECH" }, { 0x0050C2, 0xFCA000, 0xFCAFFF, "Telemisis Ltd", "TELEMISIS" }, { 0x0050C2, 0xFCB000, 0xFCBFFF, "Propagation Systems Limited", "PROPAGATION" }, { 0x0050C2, 0xFCC000, 0xFCCFFF, "Soudronic AG", "SOUDRONIC" }, { 0x0050C2, 0xFCD000, 0xFCDFFF, "Jinyoung Contech", "JINYOUNG-CONTECH" }, { 0x0050C2, 0xFCE000, 0xFCEFFF, "KOYO ELECTRIC", "KOYO-ELECTRIC" }, { 0x0050C2, 0xFCF000, 0xFCFFFF, "DINTEK Shanghai Electronic Ltd", "DINTEK-SHANGHAI" }, { 0x0050C2, 0xFD0000, 0xFD0FFF, "Simple Solutions", "SIMPLE-SOLUTIONS" }, { 0x0050C2, 0xFD1000, 0xFD1FFF, "Enyx SA", "ENYX" }, { 0x0050C2, 0xFD2000, 0xFD2FFF, "Autonomic Controls. Inc", "AUTONOMIC-CONTROLS" }, { 0x0050C2, 0xFD3000, 0xFD3FFF, "Aster Electric Co.,Ltd.", "ASTER-ELECTRIC" }, { 0x0050C2, 0xFD4000, 0xFD4FFF, "Insitu, Inc.", "INSITU" }, { 0x0050C2, 0xFD5000, 0xFD5FFF, "American Microsystems, Ltd.", "AMERICAN-MICROSYSTEMS" }, { 0x0050C2, 0xFD6000, 0xFD6FFF, "City Computing Ltd", "CITY-COMPUTING" }, { 0x0050C2, 0xFD7000, 0xFD7FFF, "Deuta-Werke GmbH", "DEUTA-WERKE" }, { 0x0050C2, 0xFD8000, 0xFD8FFF, "Ease Inc.", "EASE" }, { 0x0050C2, 0xFD9000, 0xFD9FFF, "Figment Design Laboratories", "FIGMENT-DESIGN-LABORATORIES" }, { 0x0050C2, 0xFDA000, 0xFDAFFF, "ELAN SYSTEMS", "ELAN" }, { 0x0050C2, 0xFDB000, 0xFDBFFF, "The Security Center Inc", "THE-SECURITY-CENTER" }, { 0x0050C2, 0xFDC000, 0xFDCFFF, "QUERCUS TECHNOLOGIES, S.L.", "QUERCUS-TECHNOLOGIES-S-L" }, { 0x0050C2, 0xFDD000, 0xFDDFFF, "Toptech Systems, Inc.", "TOPTECH" }, { 0x0050C2, 0xFDE000, 0xFDEFFF, "Peek Traffic", "PEEK-TRAFFIC" }, { 0x0050C2, 0xFDF000, 0xFDFFFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x0050C2, 0xFE0000, 0xFE0FFF, "Azurtest", "AZURTEST" }, { 0x0050C2, 0xFE1000, 0xFE1FFF, "dotOcean", "DOTOCEAN" }, { 0x0050C2, 0xFE2000, 0xFE2FFF, "Pulsotronic Anlagentechnik GmbH", "PULSOTRONIC-ANLAGENTECHNIK" }, { 0x0050C2, 0xFE3000, 0xFE3FFF, "PRIVATE", "PRIVATE" }, { 0x0050C2, 0xFE4000, 0xFE4FFF, "RTT Mobile Interpretation", "RTT-MOBILE-INTERPRETATION" }, { 0x0050C2, 0xFE5000, 0xFE5FFF, "Scandinova Systems AB", "SCANDINOVA-AB" }, { 0x0050C2, 0xFE6000, 0xFE6FFF, "Exibea AB", "EXIBEA-AB" }, { 0x0050C2, 0xFE7000, 0xFE7FFF, "Erhardt+Leimer GmbH", "ERHARDT+LEIMER" }, { 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, 0xFEB000, 0xFEBFFF, "Axible Technologies", "AXIBLE-TECHNOLOGIES" }, { 0x0050C2, 0xFEC000, 0xFECFFF, "First System Technology Co., Ltd.", "FIRST-SYSTEM" }, { 0x0050C2, 0xFED000, 0xFEDFFF, "LOGISOL Kft.", "LOGISOL-KFT" }, { 0x0050C2, 0xFEE000, 0xFEEFFF, "Sparks Instruments SA", "SPARKS-INSTRUMENTS" }, { 0x0050C2, 0xFEF000, 0xFEFFFF, "Task Sistemas de Computacao", "TASK-SISTEMAS-DE-COMPUTACAO" }, { 0x0050C2, 0xFF0000, 0xFF0FFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x0050C2, 0xFF1000, 0xFF1FFF, "DiTEST FAHRZEUGDIAGNOSE GMBH", "DITEST-FAHRZEUGDIAGNOSE" }, { 0x0050C2, 0xFF2000, 0xFF2FFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x0050C2, 0xFF3000, 0xFF3FFF, "CONTROL SYSTEMS Srl", "CONTROL-SRL" }, { 0x0050C2, 0xFF4000, 0xFF4FFF, "Burk Technology", "BURK" }, { 0x0050C2, 0xFF5000, 0xFF5FFF, "Flexkom Internet Pazarlama Bilipim ve Eoitim Hiz.Inp.Mim.Muh.Oto.Enerji San. Tic. A.p.", "FLEXKOM-INTERNET-PAZARLAMA-BILIPIM-VE-EOITIM-HIZ-INP-MIM-MUH-OTO-ENERJI-SAN-TIC-A-P" }, { 0x0050C2, 0xFF6000, 0xFF6FFF, "Booyco Electronics", "BOOYCO-ELECTRONICS" }, { 0x0050C2, 0xFF7000, 0xFF7FFF, "Human Intech", "HUMAN-INTECH" }, { 0x0050C2, 0xFF8000, 0xFF8FFF, "KST technology", "KST" }, { 0x0050C2, 0xFF9000, 0xFF9FFF, "Penttech AB", "PENTTECH-AB" }, { 0x0050C2, 0xFFA000, 0xFFAFFF, "Nupoint Systems Inc.", "NUPOINT" }, { 0x0050C2, 0xFFB000, 0xFFBFFF, "SEFRAM", "SEFRAM" }, { 0x0050C2, 0xFFC000, 0xFFCFFF, "Spirent Communications", "SPIRENT-COMMUNICATION" }, { 0x0050C2, 0xFFD000, 0xFFDFFF, "Touchless Biometric Systems AG", "TOUCHLESS-BIOMETRIC" }, { 0x0050C2, 0xFFE000, 0xFFEFFF, "Sensata Technologies", "SENSATA-TECHNOLOGIES" }, { 0x0050C2, 0xFFF000, 0xFFFFFF, "MSR-Solutions GmbH", "MSR-SOLUTIONS" }, { 0x40D855, 0x000000, 0x000FFF, "XRONOS.INC", "XRONOS" }, { 0x40D855, 0x001000, 0x001FFF, "Vemotion", "VEMOTION" }, { 0x40D855, 0x002000, 0x002FFF, "Hangzhou Chenxiao Technologies Co. Ltd.", "HANGZHOU-CHENXIAO-TECHNOLOGIES" }, { 0x40D855, 0x003000, 0x003FFF, "AlphaNavigation coltd", "ALPHANAVIGATION-COLTD" }, { 0x40D855, 0x004000, 0x004FFF, "CR Magnetics, Inc.", "CR-MAGNETICS" }, { 0x40D855, 0x005000, 0x005FFF, "Monarch Instrument", "MONARCH-INSTRUMENT" }, { 0x40D855, 0x006000, 0x006FFF, "Bactest Limited", "BACTEST" }, { 0x40D855, 0x007000, 0x007FFF, "Digital Audio SA", "DIGITAL-AUDIO" }, { 0x40D855, 0x008000, 0x008FFF, "Kaori Industria Eletronica Ltda", "KAORI-INDUSTRIA-ELETRONICA-LTDA" }, { 0x40D855, 0x009000, 0x009FFF, "ClearSite Communications Inc.", "CLEARSITE-COMMUNICATION" }, { 0x40D855, 0x00A000, 0x00AFFF, "Sarana Sistem Mikro", "SARANA-SISTEM-MIKRO" }, { 0x40D855, 0x00B000, 0x00BFFF, "Aircell", "AIRCELL" }, { 0x40D855, 0x00C000, 0x00CFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x00D000, 0x00DFFF, "HuNS", "HUNS" }, { 0x40D855, 0x00E000, 0x00EFFF, "Brightwell Dispensers", "BRIGHTWELL-DISPENSERS" }, { 0x40D855, 0x00F000, 0x00FFFF, "DIGITAL DYNAMICS, INC.", "DIGITAL-DYNAMICS" }, { 0x40D855, 0x010000, 0x010FFF, "APG CASH DRAWER", "APG-CASH-DRAWER" }, { 0x40D855, 0x011000, 0x011FFF, "Flexim Security Oy", "FLEXIM-SECURITY-OY" }, { 0x40D855, 0x012000, 0x012FFF, "Sencon Inc.", "SENCON" }, { 0x40D855, 0x013000, 0x013FFF, "Grande Vitesse Systems", "GRANDE-VITESSE" }, { 0x40D855, 0x014000, 0x014FFF, "Toni Studio", "TONI-STUDIO" }, { 0x40D855, 0x015000, 0x015FFF, "BITMILL srl", "BITMILL-SRL" }, { 0x40D855, 0x016000, 0x016FFF, "Par-Tech, Inc.", "PAR-TECH" }, { 0x40D855, 0x017000, 0x017FFF, "Franke Aquarotter GmbH", "FRANKE-AQUAROTTER" }, { 0x40D855, 0x018000, 0x018FFF, "STANEO SAS", "STANEO-SAS" }, { 0x40D855, 0x019000, 0x019FFF, "Nautel Limited", "NAUTEL" }, { 0x40D855, 0x01A000, 0x01AFFF, "MEGGITT DEFENSE SYSTEMS INC.", "MEGGITT-DEFENSE" }, { 0x40D855, 0x01B000, 0x01BFFF, "Audio Enhancement", "AUDIO-ENHANCEMENT" }, { 0x40D855, 0x01C000, 0x01CFFF, "BERG Cloud Limited", "BERG-CLOUD" }, { 0x40D855, 0x01D000, 0x01DFFF, "Scharco Elektronik GmbH", "SCHARCO-ELEKTRONIK" }, { 0x40D855, 0x01E000, 0x01EFFF, "A2S", "A2S" }, { 0x40D855, 0x01F000, 0x01FFFF, "Sitep Italia Spa", "SITEP-ITALIA-SPA" }, { 0x40D855, 0x020000, 0x020FFF, "ENTEC Electric & Electronic CO., LTD.", "ENTEC-ELECTRIC" }, { 0x40D855, 0x021000, 0x021FFF, "SMT D.O.O.", "SMT-D-O-O" }, { 0x40D855, 0x022000, 0x022FFF, "Digimerge Technology Inc", "DIGIMERGE" }, { 0x40D855, 0x023000, 0x023FFF, "Shanghai o-solution electronics & Technology Co., Ltd.", "SHANGHAI-O-SOLUTION-ELECTRONICS" }, { 0x40D855, 0x024000, 0x024FFF, "Electrical Geodesics Incorporated", "ELECTRICAL-GEODESICS-INCORPORATED" }, { 0x40D855, 0x025000, 0x025FFF, "Rosemount Analytical", "ROSEMOUNT-ANALYTICAL" }, { 0x40D855, 0x026000, 0x026FFF, "Symetrics Industries", "SYMETRICS-INDUSTRIES" }, { 0x40D855, 0x027000, 0x027FFF, "GRUPO EPELSA S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x028000, 0x028FFF, "Integrated Control Corp.", "INTEGRATED-CONTROL" }, { 0x40D855, 0x029000, 0x029FFF, "Depro Electronique", "DEPRO-ELECTRONIQUE" }, { 0x40D855, 0x02A000, 0x02AFFF, "Tinkerforge GmbH", "TINKERFORGE" }, { 0x40D855, 0x02B000, 0x02BFFF, "Nomatronics", "NOMATRONICS" }, { 0x40D855, 0x02C000, 0x02CFFF, "InventLab s.c.", "INVENTLAB-S-C" }, { 0x40D855, 0x02D000, 0x02DFFF, "Elgama Sistemos", "ELGAMA-SISTEMOS" }, { 0x40D855, 0x02E000, 0x02EFFF, "Circuitec Ind. Equip. Eletr. Ltda", "CIRCUITEC-IND-EQUIP-ELETR-LTDA" }, { 0x40D855, 0x02F000, 0x02FFFF, "Adva Technologies", "ADVA-TECHNOLOGIES" }, { 0x40D855, 0x030000, 0x030FFF, "Tecnologias Plexus", "TECNOLOGIAS-PLEXUS" }, { 0x40D855, 0x031000, 0x031FFF, "Dommel GmbH", "DOMMEL" }, { 0x40D855, 0x032000, 0x032FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x40D855, 0x033000, 0x033FFF, "Ermes Elettronica s.r.l.", "ERMES-ELETTRONICA-S-R-L" }, { 0x40D855, 0x034000, 0x034FFF, "Dacom West GmbH", "DACOM-WEST" }, { 0x40D855, 0x035000, 0x035FFF, "Mesotech International, Inc.", "MESOTECH" }, { 0x40D855, 0x036000, 0x036FFF, "Schweers informationstechnologie GmbH", "SCHWEERS-INFORMATIONSTECHNOLOGIE" }, { 0x40D855, 0x037000, 0x037FFF, "Software Workshop", "SOFTWARE-WORKSHOP" }, { 0x40D855, 0x038000, 0x038FFF, "Special Measurements Labs LLC", "SPECIAL-MEASUREMENTS-LABS-LLC" }, { 0x40D855, 0x039000, 0x039FFF, "CI Systems Ltd", "CI" }, { 0x40D855, 0x03A000, 0x03AFFF, "Socus networks", "SOCUS-NETWORKS" }, { 0x40D855, 0x03B000, 0x03BFFF, "Telcomkorea", "TELCOMKOREA" }, { 0x40D855, 0x03C000, 0x03CFFF, "Computer System Co.,Ltd", "SYSTEM" }, { 0x40D855, 0x03D000, 0x03DFFF, "Tekelek Europe Ltd", "TEKELEK-EUROPE" }, { 0x40D855, 0x03E000, 0x03EFFF, "Vishay Celtron Technologies, Inc.", "VISHAY-CELTRON-TECHNOLOGIES" }, { 0x40D855, 0x03F000, 0x03FFFF, "UniSVR Global Information Technology Corp.", "UNISVR-GLOBAL-INFORMATION" }, { 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, 0x042000, 0x042FFF, "Mango Communicaitons Inc.", "MANGO-COMMUNICAITONS" }, { 0x40D855, 0x043000, 0x043FFF, "SchulerControl GmbH", "SCHULERCONTROL" }, { 0x40D855, 0x044000, 0x044FFF, "An Chen Computer Co. Ltd.", "AN-CHEN" }, { 0x40D855, 0x045000, 0x045FFF, "Genadsystem", "GENADSYSTEM" }, { 0x40D855, 0x046000, 0x046FFF, "Circuitlink Pty Ltd", "CIRCUITLINK-PTY" }, { 0x40D855, 0x047000, 0x047FFF, "Dos&Donts SRL", "DOS-DONTS-SRL" }, { 0x40D855, 0x048000, 0x048FFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x049000, 0x049FFF, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x40D855, 0x04A000, 0x04AFFF, "Gateway Technologies SA de CV", "GATEWAY-TECHNOLOGIES-DE-CV" }, { 0x40D855, 0x04B000, 0x04BFFF, "Vital Tech Industria e Comercio Ltda", "VITAL-TECH-INDUSTRIA-E-COMERCIO-LTDA" }, { 0x40D855, 0x04C000, 0x04CFFF, "Serveron Corporation", "SERVERON" }, { 0x40D855, 0x04D000, 0x04DFFF, "MACHINEPERFORMANCE ApS", "MACHINEPERFORMANCE-APS" }, { 0x40D855, 0x04E000, 0x04EFFF, "Honeywell Aerospace/Intelligent Automation Corp.", "HONEYWELL-AEROSPACE/INTELLIGENT-AUTOMATION" }, { 0x40D855, 0x04F000, 0x04FFFF, "Haein S&S Co., Ltd", "HAEIN-S-S" }, { 0x40D855, 0x050000, 0x050FFF, "ATG UV Technology", "ATG-UV" }, { 0x40D855, 0x051000, 0x051FFF, "CS Instruments Asia", "CS-INSTRUMENTS-ASIA" }, { 0x40D855, 0x052000, 0x052FFF, "DAN ELECTRONICS SYSTEM (P) LIMITED", "DAN-ELECTRONICS-SYSTEM-P" }, { 0x40D855, 0x053000, 0x053FFF, "Amantys Ltd", "AMANTYS" }, { 0x40D855, 0x054000, 0x054FFF, "VITEC", "VITEC" }, { 0x40D855, 0x055000, 0x055FFF, "Helmholtz Zentrum Dresden Rossendorf e.V.", "HELMHOLTZ-ZENTRUM-DRESDEN-ROSSENDORF-E-V" }, { 0x40D855, 0x056000, 0x056FFF, "GROUP 57", "GROUP-57" }, { 0x40D855, 0x057000, 0x057FFF, "Tammermatic Group Oy", "TAMMERMATIC-GROUP-OY" }, { 0x40D855, 0x058000, 0x058FFF, "Energy Team S.p.A.", "ENERGY-TEAM-S-P-A" }, { 0x40D855, 0x059000, 0x059FFF, "COLONIAL ASSEMBLY and DESIGN", "COLONIAL-ASSEMBLY-AND-DESIGN" }, { 0x40D855, 0x05A000, 0x05AFFF, "Ultra Electronics Flightline Systems", "ULTRA-ELECTRONICS-FLIGHTLINE" }, { 0x40D855, 0x05B000, 0x05BFFF, "Data Flow Systems, Inc.", "DATA-FLOW" }, { 0x40D855, 0x05C000, 0x05CFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x05D000, 0x05DFFF, "Leica Biosystems", "LEICA-BIOSYSTEMS" }, { 0x40D855, 0x05E000, 0x05EFFF, "inoage GmbH", "INOAGE" }, { 0x40D855, 0x05F000, 0x05FFFF, "EPSa GmbH", "EPSA" }, { 0x40D855, 0x060000, 0x060FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x061000, 0x061FFF, "Cominfo, Inc.", "COMINFO" }, { 0x40D855, 0x062000, 0x062FFF, "Tech Source Inc", "TECH-SOURCE" }, { 0x40D855, 0x063000, 0x063FFF, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x40D855, 0x064000, 0x064FFF, "HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.", "HIPODROMO-DE-AGUA-CALIENTE-DE-C-V" }, { 0x40D855, 0x065000, 0x065FFF, "Parallel Wireless", "PARALLEL-WIRELESS" }, { 0x40D855, 0x066000, 0x066FFF, "TeraTron GmbH", "TERATRON" }, { 0x40D855, 0x067000, 0x067FFF, "Tronic Control ltd.", "TRONIC-CONTROL" }, { 0x40D855, 0x068000, 0x068FFF, "Oki Seatec Co., Ltd.", "OKI-SEATEC" }, { 0x40D855, 0x069000, 0x069FFF, "Smartcom-Bulgaria AD", "SMARTCOM-BULGARIA-AD" }, { 0x40D855, 0x06A000, 0x06AFFF, "elgris", "ELGRIS" }, { 0x40D855, 0x06B000, 0x06BFFF, "BRS Sistemas Eletronicos", "BRS-SISTEMAS-ELETRONICOS" }, { 0x40D855, 0x06C000, 0x06CFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x40D855, 0x06D000, 0x06DFFF, "BroadSoft, INC", "BROADSOFT" }, { 0x40D855, 0x06E000, 0x06EFFF, "C-COM Satellite Systems Inc.", "C-COM-SATELLITE" }, { 0x40D855, 0x06F000, 0x06FFFF, "DORLET SA", "DORLET" }, { 0x40D855, 0x070000, 0x070FFF, "JSC Electrical Equipment Factory", "JSC-ELECTRICAL-EQUIPMENT-FACTORY" }, { 0x40D855, 0x071000, 0x071FFF, "TATTILE SRL", "TATTILE-SRL" }, { 0x40D855, 0x072000, 0x072FFF, "CT Company", "CT-COMPANY" }, { 0x40D855, 0x073000, 0x073FFF, "Diamond Technologies, Inc", "DIAMOND-TECHNOLOGIES" }, { 0x40D855, 0x074000, 0x074FFF, "Sphere Medical Ltd", "SPHERE-MEDICAL" }, { 0x40D855, 0x075000, 0x075FFF, "Teraflops", "TERAFLOPS" }, { 0x40D855, 0x076000, 0x076FFF, "INTERNET PROTOCOLO LOGICA SL", "INTERNET-PROTOCOLO-LOGICA-SL" }, { 0x40D855, 0x077000, 0x077FFF, "TOEC TECHNOLOGY CO.,LTD", "TOEC" }, { 0x40D855, 0x078000, 0x078FFF, "NACHI-FUJIKOSHI CORP", "NACHI-FUJIKOSHI" }, { 0x40D855, 0x079000, 0x079FFF, "DelfiSolutions A/S", "DELFISOLUTIONS-A/S" }, { 0x40D855, 0x07A000, 0x07AFFF, "4embedded", "4EMBEDDED" }, { 0x40D855, 0x07B000, 0x07BFFF, "IPS Technology Limited", "IPS" }, { 0x40D855, 0x07C000, 0x07CFFF, "Agramkow Fluid Systems A/S", "AGRAMKOW-FLUID-A/S" }, { 0x40D855, 0x07D000, 0x07DFFF, "Wuxi SiNeng New Energy Co., Ltd.", "WUXI-SINENG-NEW-ENERGY" }, { 0x40D855, 0x07E000, 0x07EFFF, "TESCOM CORPORATION", "TESCOM" }, { 0x40D855, 0x07F000, 0x07FFFF, "Wheatstone Corporation", "WHEATSTONE" }, { 0x40D855, 0x080000, 0x080FFF, "Honeywell", "HONEYWELL" }, { 0x40D855, 0x081000, 0x081FFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x082000, 0x082FFF, "ard sa", "ARD" }, { 0x40D855, 0x083000, 0x083FFF, "DELOPT", "DELOPT" }, { 0x40D855, 0x084000, 0x084FFF, "Papendorf Software Engineering GmbH", "PAPENDORF-SOFTWARE-ENGINEERING" }, { 0x40D855, 0x085000, 0x085FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x40D855, 0x086000, 0x086FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x40D855, 0x087000, 0x087FFF, "Bestel China", "BESTEL-CHINA" }, { 0x40D855, 0x088000, 0x088FFF, "JEL SYSTEM CO., LTD.", "JEL-SYSTEM" }, { 0x40D855, 0x089000, 0x089FFF, "WUHAN XINGTUXINKE ELECTRONIC CO.,LTD", "WUHAN-XINGTUXINKE" }, { 0x40D855, 0x08A000, 0x08AFFF, "Leder Elektronik Design", "LEDER-ELEKTRONIK-DESIGN" }, { 0x40D855, 0x08B000, 0x08BFFF, "MeshWorks Wireless Oy", "MESHWORKS-WIRELESS-OY" }, { 0x40D855, 0x08C000, 0x08CFFF, "Magnescale Co.,Ltd", "MAGNESCALE" }, { 0x40D855, 0x08D000, 0x08DFFF, "Boehme Nachrichtentechnik", "BOEHME-NACHRICHTENTECHNIK" }, { 0x40D855, 0x08E000, 0x08EFFF, "Lyngsoe Systems", "LYNGSOE" }, { 0x40D855, 0x08F000, 0x08FFFF, "Excelitas", "EXCELITAS" }, { 0x40D855, 0x090000, 0x090FFF, "Axxess Identification Ltd", "AXXESS-IDENTIFICATION" }, { 0x40D855, 0x091000, 0x091FFF, "KDT", "KDT" }, { 0x40D855, 0x092000, 0x092FFF, "Wasserbauer GmbH", "WASSERBAUER" }, { 0x40D855, 0x093000, 0x093FFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x40D855, 0x094000, 0x094FFF, "Nomad Digital Limited", "NOMAD-DIGITAL" }, { 0x40D855, 0x095000, 0x095FFF, "Heart Force Medical", "HEART-FORCE-MEDICAL" }, { 0x40D855, 0x096000, 0x096FFF, "Comtel Electronics GmbH", "COMTEL-ELECTRONICS" }, { 0x40D855, 0x097000, 0x097FFF, "Burton Technical Services LLC", "BURTON-TECHNICAL-SERVICES-LLC" }, { 0x40D855, 0x098000, 0x098FFF, "Dave Srl", "DAVE-SRL" }, { 0x40D855, 0x099000, 0x099FFF, "idcell co.ltd", "IDCELL" }, { 0x40D855, 0x09A000, 0x09AFFF, "CoherentPlus Sdn Bhd", "COHERENTPLUS-SDN-BHD" }, { 0x40D855, 0x09B000, 0x09BFFF, "Tokyo Denki Gijutsu Kogyo", "TOKYO-DENKI-GIJUTSU-KOGYO" }, { 0x40D855, 0x09C000, 0x09CFFF, "Keyware Solutions Inc.", "KEYWARE-SOLUTIONS" }, { 0x40D855, 0x09D000, 0x09DFFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x09E000, 0x09EFFF, "NanoPulse, Inc.", "NANOPULSE" }, { 0x40D855, 0x09F000, 0x09FFFF, "Bascules Robbe nv", "BASCULES-ROBBE-NV" }, { 0x40D855, 0x0A0000, 0x0A0FFF, "Quantronix, Inc.", "QUANTRONIX" }, { 0x40D855, 0x0A1000, 0x0A1FFF, "ADVALY SYSTEM Inc.", "ADVALY-SYSTEM" }, { 0x40D855, 0x0A2000, 0x0A2FFF, "Xemex NV", "XEMEX-NV" }, { 0x40D855, 0x0A3000, 0x0A3FFF, "Telefrank GmbH", "TELEFRANK" }, { 0x40D855, 0x0A4000, 0x0A4FFF, "Resch Electronic Innovation GmbH", "RESCH-INNOVATION" }, { 0x40D855, 0x0A5000, 0x0A5FFF, "WooshCom Corporation", "WOOSHCOM" }, { 0x40D855, 0x0A6000, 0x0A6FFF, "Alumbra Produtos Elétricos e Eletrônicos Ltda", "ALUMBRA-PRODUTOS-ELéTRICOS-E-ELETRôNICOS-LTDA" }, { 0x40D855, 0x0A7000, 0x0A7FFF, "First Design System Inc.", "FIRST-DESIGN-SYSTEM" }, { 0x40D855, 0x0A8000, 0x0A8FFF, "Baudisch Electronic GmbH", "BAUDISCH" }, { 0x40D855, 0x0A9000, 0x0A9FFF, "Apantac LLC", "APANTAC-LLC" }, { 0x40D855, 0x0AA000, 0x0AAFFF, "Thermal Imaging Radar, LLC", "THERMAL-IMAGING-RADAR-LLC" }, { 0x40D855, 0x0AB000, 0x0ABFFF, "Enel doo Belgrade", "ENEL-DOO-BELGRADE" }, { 0x40D855, 0x0AC000, 0x0ACFFF, "Fraunhofer HHI", "FRAUNHOFER-HHI" }, { 0x40D855, 0x0AD000, 0x0ADFFF, "Space Micro", "SPACE-MICRO" }, { 0x40D855, 0x0AE000, 0x0AEFFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x0AF000, 0x0AFFFF, "EnVerv Inc.", "ENVERV" }, { 0x40D855, 0x0B0000, 0x0B0FFF, "Micrologic", "MICROLOGIC" }, { 0x40D855, 0x0B1000, 0x0B1FFF, "Nanjing TIANSU Automation Control System Co., Ltd.", "NANJING-TIANSU-AUTOMATION-CONTROL-SYSTEM" }, { 0x40D855, 0x0B2000, 0x0B2FFF, "Ever Trend Technology Development Limited", "EVER-TREND-DEVELOPMENT" }, { 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, 0x0B5000, 0x0B5FFF, "DATA SHARING CONSULTING", "DATA-SHARING-CONSULTING" }, { 0x40D855, 0x0B6000, 0x0B6FFF, "Telvent", "TELVENT" }, { 0x40D855, 0x0B7000, 0x0B7FFF, "ACD Elektronik GmbH", "ACD-ELEKTRONIK" }, { 0x40D855, 0x0B8000, 0x0B8FFF, "Ferlin Trading BV", "FERLIN-TRADING" }, { 0x40D855, 0x0B9000, 0x0B9FFF, "WxBR Sistemas de Telecomunicacoes Ltda", "WXBR-SISTEMAS-DE-TELECOMUNICACOES-LTDA" }, { 0x40D855, 0x0BA000, 0x0BAFFF, "PCH Engineering A/S", "PCH-ENGINEERING-A/S" }, { 0x40D855, 0x0BB000, 0x0BBFFF, "Whiptail", "WHIPTAIL" }, { 0x40D855, 0x0BC000, 0x0BCFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x0BD000, 0x0BDFFF, "iCOGNIZE GmbH", "ICOGNIZE" }, { 0x40D855, 0x0BE000, 0x0BEFFF, "Manufacturing System Insights Inc", "MANUFACTURING-SYSTEM-INSIGHTS" }, { 0x40D855, 0x0BF000, 0x0BFFFF, "Shenzhen SETEC Power Co.,Ltd", "SHENZHEN-SETEC-POWER" }, { 0x40D855, 0x0C0000, 0x0C0FFF, "ACT", "ACT" }, { 0x40D855, 0x0C1000, 0x0C1FFF, "Xepto Computing Inc", "XEPTO-COMPUTING" }, { 0x40D855, 0x0C2000, 0x0C2FFF, "SC Techswarm SRL", "SC-TECHSWARM-SRL" }, { 0x40D855, 0x0C3000, 0x0C3FFF, "APG CASH DRAWER", "APG-CASH-DRAWER" }, { 0x40D855, 0x0C4000, 0x0C4FFF, "Inspired Systems", "INSPIRED" }, { 0x40D855, 0x0C5000, 0x0C5FFF, "M.M. Elektrolab", "M-M-ELEKTROLAB" }, { 0x40D855, 0x0C6000, 0x0C6FFF, "comtime GmbH", "COMTIME" }, { 0x40D855, 0x0C7000, 0x0C7FFF, "insensiv GmbH", "INSENSIV" }, { 0x40D855, 0x0C8000, 0x0C8FFF, "Mettler Toledo Hispeed", "METTLER-TOLEDO-HISPEED" }, { 0x40D855, 0x0C9000, 0x0C9FFF, "QUANTAFLOW", "QUANTAFLOW" }, { 0x40D855, 0x0CA000, 0x0CAFFF, "NEUTRIK AG", "NEUTRIK" }, { 0x40D855, 0x0CB000, 0x0CBFFF, "ReliOn Inc", "RELION" }, { 0x40D855, 0x0CC000, 0x0CCFFF, "ATEME", "ATEME" }, { 0x40D855, 0x0CD000, 0x0CDFFF, "Logical Product", "LOGICAL-PRODUCT" }, { 0x40D855, 0x0CE000, 0x0CEFFF, "EST Analytical", "EST-ANALYTICAL" }, { 0x40D855, 0x0CF000, 0x0CFFFF, "Clark-MXR, Inc.", "CLARK-MXR" }, { 0x40D855, 0x0D0000, 0x0D0FFF, "Icraft Oy", "ICRAFT-OY" }, { 0x40D855, 0x0D1000, 0x0D1FFF, "Cantada Inc", "CANTADA" }, { 0x40D855, 0x0D2000, 0x0D2FFF, "ELAN SYSTEMS", "ELAN" }, { 0x40D855, 0x0D3000, 0x0D3FFF, "LECO Corporation", "LECO" }, { 0x40D855, 0x0D4000, 0x0D4FFF, "Mitsubishi Heavy Industries, Ltd.", "MITSUBISHI-HEAVY-INDUSTRIES" }, { 0x40D855, 0x0D5000, 0x0D5FFF, "Shimizu Electric Co., Ltd.", "SHIMIZU-ELECTRIC" }, { 0x40D855, 0x0D6000, 0x0D6FFF, "deskontrol electronics", "DESKONTROL-ELECTRONICS" }, { 0x40D855, 0x0D7000, 0x0D7FFF, "Avant Technologies,Inc", "AVANT-TECHNOLOGIES" }, { 0x40D855, 0x0D8000, 0x0D8FFF, "NEXT! s.c. S.Piela B.Dryja", "NEXT!-S-C-S-PIELA-B-DRYJA" }, { 0x40D855, 0x0D9000, 0x0D9FFF, "YUKO ELECTRIC CO.,LTD", "YUKO-ELECTRIC" }, { 0x40D855, 0x0DA000, 0x0DAFFF, "Devialet SA", "DEVIALET" }, { 0x40D855, 0x0DB000, 0x0DBFFF, "Top Connect OU", "TOP-CONNECT-OU" }, { 0x40D855, 0x0DC000, 0x0DCFFF, "NVS Technologies Inc", "NVS-TECHNOLOGIES" }, { 0x40D855, 0x0DD000, 0x0DDFFF, "Embed Limited", "EMBED" }, { 0x40D855, 0x0DE000, 0x0DEFFF, "Vishay Nobel AB", "VISHAY-NOBEL-AB" }, { 0x40D855, 0x0DF000, 0x0DFFFF, "Xadi Inc", "XADI" }, { 0x40D855, 0x0E0000, 0x0E0FFF, "Richter", "RICHTER" }, { 0x40D855, 0x0E1000, 0x0E1FFF, "STV Electronic GmbH", "STV" }, { 0x40D855, 0x0E2000, 0x0E2FFF, "Keocko International", "KEOCKO" }, { 0x40D855, 0x0E3000, 0x0E3FFF, "Medigus Ltd", "MEDIGUS" }, { 0x40D855, 0x0E4000, 0x0E4FFF, "ARAGO SYSTEMS", "ARAGO" }, { 0x40D855, 0x0E5000, 0x0E5FFF, "Triton Electronics LTD", "TRITON-ELECTRONICS" }, { 0x40D855, 0x0E6000, 0x0E6FFF, "Kyoritsu Electric Corp.", "KYORITSU-ELECTRIC" }, { 0x40D855, 0x0E7000, 0x0E7FFF, "LIGHTSTAR", "LIGHTSTAR" }, { 0x40D855, 0x0E8000, 0x0E8FFF, "HEITEC AG", "HEITEC" }, { 0x40D855, 0x0E9000, 0x0E9FFF, "HAMEG GmbH", "HAMEG" }, { 0x40D855, 0x0EA000, 0x0EAFFF, "A-Z-E", "A-Z-E" }, { 0x40D855, 0x0EB000, 0x0EBFFF, "WANTECH Networks", "WANTECH-NETWORKS" }, { 0x40D855, 0x0EC000, 0x0ECFFF, "Sentry 360 Security", "SENTRY-360-SECURITY" }, { 0x40D855, 0x0ED000, 0x0EDFFF, "IntelliDesign Pty Ltd", "INTELLIDESIGN-PTY" }, { 0x40D855, 0x0EE000, 0x0EEFFF, "Siegmar Zander HuSWare", "SIEGMAR-ZANDER-HUSWARE" }, { 0x40D855, 0x0EF000, 0x0EFFFF, "GeneSys Elektronik GmbH", "GENESYS-ELEKTRONIK" }, { 0x40D855, 0x0F0000, 0x0F0FFF, "Redwood Systems", "REDWOOD" }, { 0x40D855, 0x0F1000, 0x0F1FFF, "Grossenbacher Systeme AG", "GROSSENBACHER-SYSTEME" }, { 0x40D855, 0x0F2000, 0x0F2FFF, "SigmaPhi Electronics", "SIGMAPHI-ELECTRONICS" }, { 0x40D855, 0x0F3000, 0x0F3FFF, "ECON Systems Inc.", "ECON" }, { 0x40D855, 0x0F4000, 0x0F4FFF, "MB Connect Line GmbH", "MB-CONNECT-LINE" }, { 0x40D855, 0x0F5000, 0x0F5FFF, "CST Group", "CST-GROUP" }, { 0x40D855, 0x0F6000, 0x0F6FFF, "PRIVATE", "PRIVATE" }, { 0x40D855, 0x0F7000, 0x0F7FFF, "Comline Elektronik Elektrotechnik GmbH", "COMLINE-ELEKTRONIK-ELEKTROTECHNIK" }, { 0x40D855, 0x0F8000, 0x0F8FFF, "Better Place", "BETTER-PLACE" }, { 0x40D855, 0x0F9000, 0x0F9FFF, "Invisua Lighting BV", "INVISUA-LIGHTING" }, { 0x40D855, 0x0FA000, 0x0FAFFF, "Marmitek BV", "MARMITEK" }, { 0x40D855, 0x0FB000, 0x0FBFFF, "InfoMac Sp. z o. o. Sp. k.", "INFOMAC-SP-Z-O-O-SP-K" }, { 0x40D855, 0x0FC000, 0x0FCFFF, "eumig industrie-tv GmbH", "EUMIG-INDUSTRIE-TV" }, { 0x40D855, 0x0FD000, 0x0FDFFF, "MONOGRAM technologies ltd", "MONOGRAM-TECHNOLOGIES" }, { 0x40D855, 0x0FE000, 0x0FEFFF, "Cytech Technology Pte Ltd", "CYTECH-PTE" }, { 0x40D855, 0x0FF000, 0x0FFFFF, "YUYAMA MFG.CO.,LTD.", "YUYAMA MFG.CO.,LTD." }, { 0x40D855, 0x100000, 0x100FFF, "TASK SISTEMAS DE COMPUTACAO S.A.", "TASK-SISTEMAS-DE-COMPUTACAO" }, { 0x40D855, 0x101000, 0x101FFF, "e.p.g. Elettronica Srl", "E-P-G-ELETTRONICA-SRL" }, { 0x40D855, 0x102000, 0x102FFF, "Power Electronics", "POWER-ELECTRONICS" }, { 0x40D855, 0x103000, 0x103FFF, "Peek Traffic Corporation", "PEEK-TRAFFIC" }, { 0x40D855, 0x104000, 0x104FFF, "IMPLE SISTEMAS ELETRONICOS EMBARCADOS LTDA", "IMPLE-SISTEMAS-ELETRONICOS-EMBARCADOS-LTDA" }, { 0x40D855, 0x105000, 0x105FFF, "Tieline Research Pty Ltd", "TIELINE-RESEARCH-PTY" }, { 0x40D855, 0x106000, 0x106FFF, "Orbital A/S", "ORBITAL-A/S" }, { 0x40D855, 0x107000, 0x107FFF, "Smith Meter, Inc", "SMITH-METER" }, { 0x40D855, 0x108000, 0x108FFF, "ALPHA DESIGN CO.,LTD.", "ALPHA-DESIGN" }, { 0x40D855, 0x109000, 0x109FFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x10A000, 0x10AFFF, "DAVIS DERBY LIMITED", "DAVIS-DERBY" }, { 0x40D855, 0x10B000, 0x10BFFF, "So-Cool Corporation.", "SO-COOL" }, { 0x40D855, 0x10C000, 0x10CFFF, "Contrans TI sp. z o.o.", "CONTRANS-TI-SP-Z-O-O" }, { 0x40D855, 0x10D000, 0x10DFFF, "Rite-Tech Industrial CO., Ltd.", "RITE-TECH-INDUSTRIAL" }, { 0x40D855, 0x10E000, 0x10EFFF, "HKS-Prozesstechnik GmbH", "HKS-PROZESSTECHNIK" }, { 0x40D855, 0x10F000, 0x10FFFF, "CAVALRY STORAGE INC", "CAVALRY-STORAGE" }, { 0x40D855, 0x110000, 0x110FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x111000, 0x111FFF, "Grupo Epelsa S.L.", "GRUPO-EPELSA-S-L" }, { 0x40D855, 0x112000, 0x112FFF, "Halliburton - Sperry Drilling Service", "HALLIBURTON---SPERRY-DRILLING-SERVICE" }, { 0x40D855, 0x113000, 0x113FFF, "Testbook Ltd", "TESTBOOK" }, { 0x40D855, 0x114000, 0x114FFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x115000, 0x115FFF, "MESA Electronic GmbH", "MESA" }, { 0x40D855, 0x116000, 0x116FFF, "Uniscan LLC", "UNISCAN-LLC" }, { 0x40D855, 0x117000, 0x117FFF, "RCS Energy Management Limited", "RCS-ENERGY-MANAGEMENT" }, { 0x40D855, 0x118000, 0x118FFF, "University of Nebraska -- Lincoln", "UNIVERSITY-OF-NEBRASKA----LINCOLN" }, { 0x40D855, 0x119000, 0x119FFF, "OOO Group of Industrial Technologies", "OOO-GROUP-OF-INDUSTRIAL-TECHNOLOGIES" }, { 0x40D855, 0x11A000, 0x11AFFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x11B000, 0x11BFFF, "nanoTRONIC GmbH", "NANOTRONIC" }, { 0x40D855, 0x11C000, 0x11CFFF, "DEUTA-WERKE GmbH", "DEUTA-WERKE" }, { 0x40D855, 0x11D000, 0x11DFFF, "ACD Elektronik GmBH", "ACD-ELEKTRONIK" }, { 0x40D855, 0x11E000, 0x11EFFF, "CEMSI, Inc.", "CEMSI" }, { 0x40D855, 0x11F000, 0x11FFFF, "KOMPAN Pawel Sokolowski", "KOMPAN-PAWEL-SOKOLOWSKI" }, { 0x40D855, 0x120000, 0x120FFF, "ObjectFab GmbH", "OBJECTFAB" }, { 0x40D855, 0x121000, 0x121FFF, "shanghai Anjian Information technology co. , ltd.", "SHANGHAI-ANJIAN-INFORMATION" }, { 0x40D855, 0x122000, 0x122FFF, "ATX Networks Ltd.", "ATX-NETWORKS" }, { 0x40D855, 0x123000, 0x123FFF, "ZAO NPC Kompjuternie Technologii", "ZAO-NPC-KOMPJUTERNIE-TECHNOLOGII" }, { 0x40D855, 0x124000, 0x124FFF, "Debug s.r.l.", "DEBUG-S-R-L" }, { 0x40D855, 0x125000, 0x125FFF, "Scandyna A/S", "SCANDYNA-A/S" }, { 0x40D855, 0x126000, 0x126FFF, "TTI LTD", "TTI" }, { 0x40D855, 0x127000, 0x127FFF, "LIGHTSTAR", "LIGHTSTAR" }, { 0x40D855, 0x128000, 0x128FFF, "Akse srl", "AKSE-SRL" }, { 0x40D855, 0x129000, 0x129FFF, "DSP DESIGN", "DSP-DESIGN" }, { 0x40D855, 0x12A000, 0x12AFFF, "Jadpod Communication Company Limited", "JADPOD-COMMUNICATION-COMPANY" }, { 0x40D855, 0x12B000, 0x12BFFF, "Mango DSP, Inc.", "MANGO-DSP" }, { 0x40D855, 0x12C000, 0x12CFFF, "NSP Europe Ltd", "NSP-EUROPE" }, { 0x40D855, 0x12D000, 0x12DFFF, "Biotage Sweden AB", "BIOTAGE-SWEDEN-AB" }, { 0x40D855, 0x12E000, 0x12EFFF, "Canfield Scientific, Inc.", "CANFIELD-SCIENTIFIC" }, { 0x40D855, 0x12F000, 0x12FFFF, "PRIVATE", "PRIVATE" }, { 0x40D855, 0x130000, 0x130FFF, "GSP Sprachtechnologie GmbH", "GSP-SPRACHTECHNOLOGIE" }, { 0x40D855, 0x131000, 0x131FFF, "EMAC, INC.", "EMAC" }, { 0x40D855, 0x132000, 0x132FFF, "AeroVision Avionics, Inc", "AEROVISION-AVIONICS" }, { 0x40D855, 0x133000, 0x133FFF, "Tattile srl", "TATTILE-SRL" }, { 0x40D855, 0x134000, 0x134FFF, "digitech GmbH & Co. KG", "DIGITECH-AMP" }, { 0x40D855, 0x135000, 0x135FFF, "GLOBALCOM ENGINEERING SRL", "GLOBALCOM-ENGINEERING-SRL" }, { 0x40D855, 0x136000, 0x136FFF, "Devriecom B.V.", "DEVRIECOM" }, { 0x40D855, 0x137000, 0x137FFF, "GDE Polska", "GDE-POLSKA" }, { 0x40D855, 0x138000, 0x138FFF, "Calon Associates Limited", "CALON-ASSOCIATES" }, { 0x40D855, 0x139000, 0x139FFF, "WOW System", "WOW-SYSTEM" }, { 0x40D855, 0x13A000, 0x13AFFF, "Supplier Ind. e Com de Eletroeletrônicos", "SUPPLIER-IND-E-COM-DE-ELETROELETRôNICOS" }, { 0x40D855, 0x13B000, 0x13BFFF, "Davin Technologies Co.,Ltd", "DAVIN-TECHNOLOGIES" }, { 0x40D855, 0x13C000, 0x13CFFF, "shanghai anjian Information technology co. , ltd.", "SHANGHAI-ANJIAN-INFORMATION" }, { 0x40D855, 0x13D000, 0x13DFFF, "Perm Scientific-Industrial Instrument Making Company JSC", "PERM-SCIENTIFIC-INDUSTRIAL-INSTRUMENT-MAKING-COMPANY-JSC" }, { 0x40D855, 0x13E000, 0x13EFFF, "hanatech", "HANATECH" }, { 0x40D855, 0x13F000, 0x13FFFF, "Zhejiang Wellsun Electric Meter Co.,Ltd", "ZHEJIANG-WELLSUN-ELECTRIC-METER" }, { 0x40D855, 0x140000, 0x140FFF, "InnoTrans Communications, Inc", "INNOTRANS-COMMUNICATION" }, { 0x40D855, 0x141000, 0x141FFF, "Key Systems, Inc.", "KEY" }, { 0x40D855, 0x142000, 0x142FFF, "Tetracore, Inc.", "TETRACORE" }, { 0x40D855, 0x143000, 0x143FFF, "Tokyo Drawing Ltd.", "TOKYO-DRAWING" }, { 0x40D855, 0x144000, 0x144FFF, "Venco", "VENCO" }, { 0x40D855, 0x145000, 0x145FFF, "Weber Marking Systems GmbH", "WEBER-MARKING" }, { 0x40D855, 0x146000, 0x146FFF, "Pleiger Elektronik GmbH and Co. KG", "PLEIGER-ELEKTRONIK-AND" }, { 0x40D855, 0x147000, 0x147FFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x148000, 0x148FFF, "SEIKO TIME SYSTEMS INC.", "SEIKO-TIME" }, { 0x40D855, 0x149000, 0x149FFF, "Engage Technologies", "ENGAGE-TECHNOLOGIES" }, { 0x40D855, 0x14A000, 0x14AFFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x14B000, 0x14BFFF, "PRIVATE", "PRIVATE" }, { 0x40D855, 0x14C000, 0x14CFFF, "PLT", "PLT" }, { 0x40D855, 0x14D000, 0x14DFFF, "SOMFY SAS", "SOMFY-SAS" }, { 0x40D855, 0x14E000, 0x14EFFF, "Marposs S.p.A", "MARPOSS-S-P-A" }, { 0x40D855, 0x14F000, 0x14FFFF, "TDS Software Solutions Pty Ltd", "TDS-SOFTWARE-SOLUTIONS-PTY" }, { 0x40D855, 0x150000, 0x150FFF, "SHIKINO HIGH-TECH", "SHIKINO-HIGH-TECH" }, { 0x40D855, 0x151000, 0x151FFF, "Progress Rail Services, Inspection and Information Systems", "PROGRESS-RAIL-SERVICES-INSPECTION-AND-INFORMATION" }, { 0x40D855, 0x152000, 0x152FFF, "Home Automation Europe", "HOME-AUTOMATION-EUROPE" }, { 0x40D855, 0x153000, 0x153FFF, "BlinkPipe Ltd", "BLINKPIPE" }, { 0x40D855, 0x154000, 0x154FFF, "iart", "IART" }, { 0x40D855, 0x155000, 0x155FFF, "Telefrang AB", "TELEFRANG-AB" }, { 0x40D855, 0x156000, 0x156FFF, "Emphysys, Inc.", "EMPHYSYS" }, { 0x40D855, 0x157000, 0x157FFF, "Hitachi Power Solutions Co., Ltd.", "HITACHI-POWER-SOLUTIONS" }, { 0x40D855, 0x158000, 0x158FFF, "Exibea AB", "EXIBEA-AB" }, { 0x40D855, 0x159000, 0x159FFF, "PLATINUM GmbH", "PLATINUM" }, { 0x40D855, 0x15A000, 0x15AFFF, "DORLET S.A.U", "DORLET-U" }, { 0x40D855, 0x15B000, 0x15BFFF, "SQF Spezialelektronik GmbH", "SQF-SPEZIALELEKTRONIK" }, { 0x40D855, 0x15C000, 0x15CFFF, "Spectratech Inc.", "SPECTRATECH" }, { 0x40D855, 0x15D000, 0x15DFFF, "Actronic Technologies", "ACTRONIC-TECHNOLOGIES" }, { 0x40D855, 0x15E000, 0x15EFFF, "Prodco International Inc.", "PRODCO" }, { 0x40D855, 0x15F000, 0x15FFFF, "CT COMPANY", "CT-COMPANY" }, { 0x40D855, 0x160000, 0x160FFF, "Thermo Fisher Sceintific", "THERMO-FISHER-SCEINTIFIC" }, { 0x40D855, 0x161000, 0x161FFF, "Solidscape Inc", "SOLIDSCAPE" }, { 0x40D855, 0x162000, 0x162FFF, "LUNA-NEXUS", "LUNA-NEXUS" }, { 0x40D855, 0x163000, 0x163FFF, "KMtronic LTD", "KMTRONIC" }, { 0x40D855, 0x164000, 0x164FFF, "NFT Automatisierungssysteme GmbH", "NFT-AUTOMATISIERUNGSSYSTEME" }, { 0x40D855, 0x165000, 0x165FFF, "TECHBOARD SRL", "TECHBOARD-SRL" }, { 0x40D855, 0x166000, 0x166FFF, "Anhui Jiante Network Technology Co., Ltd.", "ANHUI-JIANTE-NETWORK" }, { 0x40D855, 0x167000, 0x167FFF, "Assembly Contracts Ltd", "ASSEMBLY-CONTRACTS" }, { 0x40D855, 0x168000, 0x168FFF, "OPASCA Systems GmbH", "OPASCA" }, { 0x40D855, 0x169000, 0x169FFF, "Photop Koncent", "PHOTOP-KONCENT" }, { 0x40D855, 0x16A000, 0x16AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x16B000, 0x16BFFF, "TECHWAY", "TECHWAY" }, { 0x40D855, 0x16C000, 0x16CFFF, "PRIVATE", "PRIVATE" }, { 0x40D855, 0x16D000, 0x16DFFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x16E000, 0x16EFFF, "Secuinfo Co.Ltd", "SECUINFO" }, { 0x40D855, 0x16F000, 0x16FFFF, "BrightLeaf Power", "BRIGHTLEAF-POWER" }, { 0x40D855, 0x170000, 0x170FFF, "ICS Eletronics", "ICS-ELETRONICS" }, { 0x40D855, 0x171000, 0x171FFF, "Sicon srl", "SICON-SRL" }, { 0x40D855, 0x172000, 0x172FFF, "YAWATA ELECTRIC INDUSTRIAL CO.,LTD.", "YAWATA-ELECTRIC-INDUSTRIAL" }, { 0x40D855, 0x173000, 0x173FFF, "Contec Steuerungstechnik & Automation GmbH", "CONTEC-STEUERUNGSTECHNIK-AUTOMATION" }, { 0x40D855, 0x174000, 0x174FFF, "EcoGuard AB", "ECOGUARD-AB" }, { 0x40D855, 0x175000, 0x175FFF, "AHB Systeme GmbH", "AHB-SYSTEME" }, { 0x40D855, 0x176000, 0x176FFF, "Schneider Electric Motion, Inc. USA", "SCHNEIDER-ELECTRIC-MOTION-USA" }, { 0x40D855, 0x177000, 0x177FFF, "TRI Engineering co.,ltd.", "TRI-ENGINEERING" }, { 0x40D855, 0x178000, 0x178FFF, "REDER Domotic GmbH", "REDER-DOMOTIC" }, { 0x40D855, 0x179000, 0x179FFF, "Servo-Robot Inc.", "SERVO-ROBOT" }, { 0x40D855, 0x17A000, 0x17AFFF, "ARGUS-SPECTRUM", "ARGUS-SPECTRUM" }, { 0x40D855, 0x17B000, 0x17BFFF, "LUCEO", "LUCEO" }, { 0x40D855, 0x17C000, 0x17CFFF, "Critical Link", "CRITICAL-LINK" }, { 0x40D855, 0x17D000, 0x17DFFF, "Kiwigrid GmbH", "KIWIGRID" }, { 0x40D855, 0x17E000, 0x17EFFF, "TOKHATEC", "TOKHATEC" }, { 0x40D855, 0x17F000, 0x17FFFF, "Telvent", "TELVENT" }, { 0x40D855, 0x180000, 0x180FFF, "BroadSoft Inc", "BROADSOFT" }, { 0x40D855, 0x181000, 0x181FFF, "eROCCA", "EROCCA" }, { 0x40D855, 0x182000, 0x182FFF, "Georg Neumann GmbH", "GEORG-NEUMANN" }, { 0x40D855, 0x183000, 0x183FFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x184000, 0x184FFF, "Satkirit Ltd", "SATKIRIT" }, { 0x40D855, 0x185000, 0x185FFF, "Standard Change Makers", "STANDARD-CHANGE-MAKERS" }, { 0x40D855, 0x186000, 0x186FFF, "KST technology", "KST" }, { 0x40D855, 0x187000, 0x187FFF, "CDEX Corp.", "CDEX" }, { 0x40D855, 0x188000, 0x188FFF, "Array Corporation", "ARRAY" }, { 0x40D855, 0x189000, 0x189FFF, "Yoozma Corporation", "YOOZMA" }, { 0x40D855, 0x18A000, 0x18AFFF, "Aplex Technology Inc.", "APLEX" }, { 0x40D855, 0x18B000, 0x18BFFF, "Diagnosys Test Systems Ltd", "DIAGNOSYS-TEST" }, { 0x40D855, 0x18C000, 0x18CFFF, "EOS S.r.l.", "EOS-S-R-L" }, { 0x40D855, 0x18D000, 0x18DFFF, "Zoe Medical", "ZOE-MEDICAL" }, { 0x40D855, 0x18E000, 0x18EFFF, "Kerun Visual Technology Co., Ltd.(Shenzhen)", "KERUN-VISUAL-SHENZHEN" }, { 0x40D855, 0x18F000, 0x18FFFF, "Beat Sensing co. , ltd.", "BEAT-SENSING" }, { 0x40D855, 0x190000, 0x190FFF, "Spider Tecnologia Ind. e Com Ltda", "SPIDER-TECNOLOGIA-IND-E-COM-LTDA" }, { 0x40D855, 0x191000, 0x191FFF, "Soukai Electric", "SOUKAI-ELECTRIC" }, { 0x40D855, 0x192000, 0x192FFF, "GENERAL DYNAMICS C4 SYSTEMS", "GENERAL-DYNAMICS-C4" }, { 0x40D855, 0x193000, 0x193FFF, "FORZA SILICON CORP.", "FORZA-SILICON" }, { 0x40D855, 0x194000, 0x194FFF, "RF Code", "RF-CODE" }, { 0x40D855, 0x195000, 0x195FFF, "TONNA ELECTRONIQUE", "TONNA-ELECTRONIQUE" }, { 0x40D855, 0x196000, 0x196FFF, "Advanced Micro Controls Inc.", "ADVANCED-MICRO-CONTROLS" }, { 0x40D855, 0x197000, 0x197FFF, "Berg Cloud Limited", "BERG-CLOUD" }, { 0x40D855, 0x198000, 0x198FFF, "devboards GmbH", "DEVBOARDS" }, { 0x40D855, 0x199000, 0x199FFF, "PRESSOL Schmiergeraete GmbH", "PRESSOL-SCHMIERGERAETE" }, { 0x40D855, 0x19A000, 0x19AFFF, "Rohde&Schwarz Topex SA", "ROHDE-SCHWARZ-TOPEX" }, { 0x40D855, 0x19B000, 0x19BFFF, "Northern Star Technologies", "NORTHERN-STAR-TECHNOLOGIES" }, { 0x40D855, 0x19C000, 0x19CFFF, "Parris Service Corporation", "PARRIS-SERVICE" }, { 0x40D855, 0x19D000, 0x19DFFF, "EMAC, Inc.", "EMAC" }, { 0x40D855, 0x19E000, 0x19EFFF, "Thirdwayv Inc.", "THIRDWAYV" }, { 0x40D855, 0x19F000, 0x19FFFF, "Patria Aviation Oy", "PATRIA-AVIATION-OY" }, { 0x40D855, 0x1A0000, 0x1A0FFF, "Futaba Corporation", "FUTABA" }, { 0x40D855, 0x1A1000, 0x1A1FFF, "KRONOTECH SRL", "KRONOTECH-SRL" }, { 0x40D855, 0x1A2000, 0x1A2FFF, "HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.", "HIPODROMO-DE-AGUA-CALIENTE-DE-C-V" }, { 0x40D855, 0x1A3000, 0x1A3FFF, "Noritake Itron Corporation", "NORITAKE-ITRON" }, { 0x40D855, 0x1A4000, 0x1A4FFF, "cibite AG", "CIBITE" }, { 0x40D855, 0x1A5000, 0x1A5FFF, "DemoPad", "DEMOPAD" }, { 0x40D855, 0x1A6000, 0x1A6FFF, "RB-LINK Wireless", "RB-LINK-WIRELESS" }, { 0x40D855, 0x1A7000, 0x1A7FFF, "ENTEC Electric & Electronic CO., LTD", "ENTEC-ELECTRIC" }, { 0x40D855, 0x1A8000, 0x1A8FFF, "Multiobrabotka", "MULTIOBRABOTKA" }, { 0x40D855, 0x1A9000, 0x1A9FFF, "Lubino s.r.o.", "LUBINO-S-R-O" }, { 0x40D855, 0x1AA000, 0x1AAFFF, "Broachlink Technology Co.,Limited", "BROACHLINK" }, { 0x40D855, 0x1AB000, 0x1ABFFF, "Rosslare Enterprises Limited", "ROSSLARE-ENTERPRISES" }, { 0x40D855, 0x1AC000, 0x1ACFFF, "ELAN SYSTEMS", "ELAN" }, { 0x40D855, 0x1AD000, 0x1ADFFF, "WICHER DIGITAL TECHNIK", "WICHER-DIGITAL-TECHNIK" }, { 0x40D855, 0x1AE000, 0x1AEFFF, "Autonomous Solutions, Inc", "AUTONOMOUS-SOLUTIONS" }, { 0x40D855, 0x1AF000, 0x1AFFFF, "Vigitron Inc.", "VIGITRON" }, { 0x40D855, 0x1B0000, 0x1B0FFF, "Shin-ei Electronic Measuring Co.,Ltd.", "SHIN-EI-MEASURING" }, { 0x40D855, 0x1B1000, 0x1B1FFF, "Logos 01 S.r.l.", "LOGOS-01-S-R-L" }, { 0x40D855, 0x1B2000, 0x1B2FFF, "AGE A. Gilg Elektronik", "AGE-A-GILG-ELEKTRONIK" }, { 0x40D855, 0x1B3000, 0x1B3FFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x40D855, 0x1B4000, 0x1B4FFF, "Inforce Computing Inc.", "INFORCE-COMPUTING" }, { 0x40D855, 0x1B5000, 0x1B5FFF, "A+EC Klein Ingenieurbuero", "A+EC-KLEIN-INGENIEURBUERO" }, { 0x40D855, 0x1B6000, 0x1B6FFF, "Magic Systems", "MAGIC" }, }; ipv6calc-0.95.0/databases/as-assignment/0000775000175100017510000000000012242072067017042 5ustar peterpeteripv6calc-0.95.0/databases/as-assignment/create-asn-registry-list.pl0000775000175100017510000000616312226543744024260 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.2 2013/10/13 16:18:44 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/RIPENCC/RIPE/; if ( $reg ne "ARIN" && $reg ne "APNIC" && $reg ne "RIPE" && $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.95.0/databases/as-assignment/Makefile0000664000175100017510000000112212227003371020471 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.95.0/databases/as-assignment/check-run-create.sh0000775000175100017510000000244312227157163022530 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/cc-assignment # File : check-run-create.sh # Version : $Id: check-run-create.sh,v 1.1 2013/10/15 06:19:31 ds6peter Exp $ # Copyright : 2013-2013 by Peter Bieringer #set -x flag_update=0 file_header="dbasn_assignment.h" if [ -f $file_header ]; then IANA=`find ../registries/iana -type f -name 'ipv4-address-space' -newer $file_header | wc -l` 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: 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 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.95.0/databases/as-assignment/dbasn_assignment.h0000664000175100017510000033661412201737343022547 0ustar peterpeter /* * Project : ipv6calc * File : dbasn_assignment.h * Version : $Id: dbasn_assignment.h,v 1.1 2013/08/11 16:42:11 ds6peter Exp $ * Generated : Tue Aug 6 08:08:34 2013 * 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/20130730"; static const s_asn_assignment dbasn_assignment[] = { { 1, 6, REGISTRY_ARIN }, { 7, 7, REGISTRY_RIPE }, { 8, 27, REGISTRY_ARIN }, { 28, 28, REGISTRY_RIPE }, { 29, 136, REGISTRY_ARIN }, { 137, 137, REGISTRY_RIPE }, { 138, 172, REGISTRY_ARIN }, { 173, 173, REGISTRY_APNIC }, { 174, 223, REGISTRY_ARIN }, { 224, 224, REGISTRY_RIPE }, { 225, 247, REGISTRY_ARIN }, { 248, 251, REGISTRY_RIPE }, { 252, 260, REGISTRY_ARIN }, { 261, 261, REGISTRY_RIPE }, { 262, 277, REGISTRY_ARIN }, { 278, 278, REGISTRY_LACNIC }, { 279, 285, REGISTRY_ARIN }, { 286, 286, REGISTRY_RIPE }, { 287, 287, REGISTRY_ARIN }, { 288, 288, REGISTRY_RIPE }, { 289, 293, REGISTRY_ARIN }, { 294, 294, REGISTRY_RIPE }, { 295, 374, REGISTRY_ARIN }, { 375, 375, REGISTRY_RIPE }, { 376, 377, REGISTRY_ARIN }, { 378, 378, REGISTRY_RIPE }, { 379, 512, REGISTRY_ARIN }, { 513, 513, REGISTRY_RIPE }, { 514, 516, REGISTRY_ARIN }, { 517, 517, REGISTRY_RIPE }, { 518, 527, REGISTRY_ARIN }, { 528, 529, REGISTRY_RIPE }, { 530, 539, REGISTRY_ARIN }, { 540, 540, REGISTRY_ARIN }, { 541, 543, REGISTRY_ARIN }, { 544, 544, REGISTRY_RIPE }, { 545, 552, REGISTRY_ARIN }, { 553, 553, REGISTRY_RIPE }, { 554, 558, REGISTRY_ARIN }, { 559, 559, REGISTRY_RIPE }, { 560, 564, REGISTRY_ARIN }, { 565, 565, REGISTRY_RIPE }, { 566, 579, REGISTRY_ARIN }, { 580, 580, REGISTRY_ARIN }, { 581, 589, REGISTRY_ARIN }, { 590, 590, REGISTRY_RIPE }, { 591, 592, REGISTRY_ARIN }, { 593, 593, REGISTRY_RIPE }, { 594, 668, REGISTRY_ARIN }, { 669, 669, REGISTRY_RIPE }, { 670, 675, REGISTRY_ARIN }, { 676, 676, REGISTRY_LACNIC }, { 677, 678, REGISTRY_ARIN }, { 679, 680, REGISTRY_RIPE }, { 681, 681, REGISTRY_APNIC }, { 682, 694, REGISTRY_ARIN }, { 695, 697, REGISTRY_RIPE }, { 698, 708, REGISTRY_ARIN }, { 709, 710, REGISTRY_RIPE }, { 711, 711, REGISTRY_ARIN }, { 712, 712, REGISTRY_RIPE }, { 713, 718, REGISTRY_ARIN }, { 719, 719, REGISTRY_RIPE }, { 720, 759, REGISTRY_ARIN }, { 760, 761, REGISTRY_RIPE }, { 762, 763, REGISTRY_ARIN }, { 764, 764, REGISTRY_RIPE }, { 765, 765, REGISTRY_ARIN }, { 766, 766, REGISTRY_RIPE }, { 767, 773, REGISTRY_ARIN }, { 774, 783, REGISTRY_RIPE }, { 784, 785, REGISTRY_ARIN }, { 786, 786, REGISTRY_RIPE }, { 787, 788, REGISTRY_ARIN }, { 789, 790, REGISTRY_RIPE }, { 791, 1100, REGISTRY_ARIN }, { 1101, 1200, REGISTRY_RIPE }, { 1201, 1202, REGISTRY_ARIN }, { 1203, 1203, REGISTRY_RIPE }, { 1204, 1204, REGISTRY_ARIN }, { 1205, 1205, REGISTRY_RIPE }, { 1206, 1212, REGISTRY_ARIN }, { 1213, 1213, REGISTRY_RIPE }, { 1214, 1220, REGISTRY_ARIN }, { 1221, 1221, REGISTRY_APNIC }, { 1222, 1227, REGISTRY_ARIN }, { 1228, 1232, REGISTRY_AFRINIC }, { 1233, 1233, REGISTRY_APNIC }, { 1234, 1235, REGISTRY_RIPE }, { 1236, 1236, REGISTRY_ARIN }, { 1237, 1237, REGISTRY_APNIC }, { 1238, 1240, REGISTRY_ARIN }, { 1241, 1241, REGISTRY_RIPE }, { 1242, 1247, REGISTRY_ARIN }, { 1248, 1248, REGISTRY_RIPE }, { 1249, 1249, REGISTRY_ARIN }, { 1250, 1250, REGISTRY_APNIC }, { 1251, 1251, REGISTRY_LACNIC }, { 1252, 1252, REGISTRY_ARIN }, { 1253, 1253, REGISTRY_RIPE }, { 1254, 1256, REGISTRY_ARIN }, { 1257, 1257, REGISTRY_RIPE }, { 1258, 1266, REGISTRY_ARIN }, { 1267, 1275, REGISTRY_RIPE }, { 1276, 1278, REGISTRY_ARIN }, { 1279, 1279, REGISTRY_RIPE }, { 1280, 1289, REGISTRY_ARIN }, { 1290, 1290, REGISTRY_RIPE }, { 1291, 1291, REGISTRY_ARIN }, { 1292, 1292, REGISTRY_LACNIC }, { 1293, 1295, REGISTRY_ARIN }, { 1296, 1296, REGISTRY_LACNIC }, { 1297, 1297, REGISTRY_RIPE }, { 1298, 1298, REGISTRY_ARIN }, { 1299, 1309, REGISTRY_RIPE }, { 1310, 1317, REGISTRY_ARIN }, { 1318, 1318, REGISTRY_RIPE }, { 1319, 1341, REGISTRY_ARIN }, { 1342, 1342, REGISTRY_RIPE }, { 1343, 1351, REGISTRY_ARIN }, { 1352, 1353, REGISTRY_RIPE }, { 1354, 1546, REGISTRY_ARIN }, { 1547, 1547, REGISTRY_RIPE }, { 1548, 1652, REGISTRY_ARIN }, { 1653, 1654, REGISTRY_RIPE }, { 1655, 1657, REGISTRY_ARIN }, { 1658, 1658, REGISTRY_ARIN }, { 1659, 1659, REGISTRY_APNIC }, { 1660, 1662, REGISTRY_ARIN }, { 1663, 1663, REGISTRY_RIPE }, { 1664, 1679, REGISTRY_ARIN }, { 1680, 1680, REGISTRY_RIPE }, { 1681, 1703, REGISTRY_ARIN }, { 1704, 1704, REGISTRY_APNIC }, { 1705, 1706, REGISTRY_ARIN }, { 1707, 1726, REGISTRY_RIPE }, { 1727, 1728, REGISTRY_ARIN }, { 1729, 1729, REGISTRY_RIPE }, { 1730, 1731, REGISTRY_ARIN }, { 1732, 1732, REGISTRY_RIPE }, { 1733, 1737, REGISTRY_ARIN }, { 1738, 1739, REGISTRY_RIPE }, { 1740, 1740, REGISTRY_ARIN }, { 1741, 1741, REGISTRY_RIPE }, { 1742, 1747, REGISTRY_ARIN }, { 1748, 1748, REGISTRY_RIPE }, { 1749, 1751, REGISTRY_ARIN }, { 1752, 1752, REGISTRY_RIPE }, { 1753, 1753, REGISTRY_ARIN }, { 1754, 1756, REGISTRY_RIPE }, { 1757, 1758, REGISTRY_ARIN }, { 1759, 1759, REGISTRY_RIPE }, { 1760, 1763, REGISTRY_ARIN }, { 1764, 1764, REGISTRY_RIPE }, { 1765, 1767, REGISTRY_ARIN }, { 1768, 1769, REGISTRY_APNIC }, { 1770, 1771, REGISTRY_RIPE }, { 1772, 1773, REGISTRY_ARIN }, { 1774, 1774, REGISTRY_RIPE }, { 1775, 1775, REGISTRY_ARIN }, { 1776, 1776, REGISTRY_RIPE }, { 1777, 1779, REGISTRY_ARIN }, { 1780, 1780, REGISTRY_RIPE }, { 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_RIPE }, { 1834, 1834, REGISTRY_ARIN }, { 1835, 1837, REGISTRY_RIPE }, { 1838, 1839, REGISTRY_ARIN }, { 1840, 1840, REGISTRY_LACNIC }, { 1841, 1841, REGISTRY_RIPE }, { 1842, 1848, REGISTRY_ARIN }, { 1849, 1850, REGISTRY_RIPE }, { 1851, 1851, REGISTRY_APNIC }, { 1852, 1852, REGISTRY_ARIN }, { 1853, 1854, REGISTRY_RIPE }, { 1855, 1876, REGISTRY_ARIN }, { 1877, 1901, REGISTRY_RIPE }, { 1902, 1903, REGISTRY_RIPE }, { 1904, 1915, REGISTRY_ARIN }, { 1916, 1916, REGISTRY_LACNIC }, { 1917, 1920, REGISTRY_ARIN }, { 1921, 1923, REGISTRY_RIPE }, { 1924, 1925, REGISTRY_ARIN }, { 1926, 1926, REGISTRY_RIPE }, { 1927, 1929, REGISTRY_ARIN }, { 1930, 1930, REGISTRY_RIPE }, { 1931, 1934, REGISTRY_ARIN }, { 1935, 1955, REGISTRY_RIPE }, { 1956, 1959, REGISTRY_ARIN }, { 1960, 1962, REGISTRY_RIPE }, { 1963, 1966, REGISTRY_ARIN }, { 1967, 1967, REGISTRY_RIPE }, { 1968, 2003, REGISTRY_ARIN }, { 2004, 2004, REGISTRY_RIPE }, { 2005, 2011, REGISTRY_ARIN }, { 2012, 2012, REGISTRY_RIPE }, { 2013, 2015, REGISTRY_ARIN }, { 2016, 2017, REGISTRY_RIPE }, { 2018, 2018, REGISTRY_AFRINIC }, { 2019, 2025, REGISTRY_ARIN }, { 2026, 2029, REGISTRY_RIPE }, { 2030, 2035, REGISTRY_ARIN }, { 2036, 2036, REGISTRY_RIPE }, { 2037, 2037, REGISTRY_ARIN }, { 2038, 2040, REGISTRY_RIPE }, { 2041, 2041, REGISTRY_ARIN }, { 2042, 2042, REGISTRY_APNIC }, { 2043, 2043, REGISTRY_RIPE }, { 2044, 2044, REGISTRY_ARIN }, { 2045, 2045, REGISTRY_RIPE }, { 2046, 2046, REGISTRY_ARIN }, { 2047, 2047, REGISTRY_RIPE }, { 2048, 2048, REGISTRY_ARIN }, { 2049, 2049, REGISTRY_RIPE }, { 2050, 2056, REGISTRY_ARIN }, { 2057, 2106, REGISTRY_RIPE }, { 2107, 2136, REGISTRY_RIPE }, { 2137, 2143, REGISTRY_ARIN }, { 2144, 2144, REGISTRY_APNIC }, { 2145, 2145, REGISTRY_ARIN }, { 2146, 2146, REGISTRY_LACNIC }, { 2147, 2148, REGISTRY_RIPE }, { 2149, 2173, REGISTRY_ARIN }, { 2174, 2273, REGISTRY_RIPE }, { 2274, 2276, REGISTRY_ARIN }, { 2277, 2277, REGISTRY_LACNIC }, { 2278, 2377, REGISTRY_RIPE }, { 2378, 2379, REGISTRY_ARIN }, { 2380, 2380, REGISTRY_RIPE }, { 2381, 2384, REGISTRY_ARIN }, { 2385, 2385, REGISTRY_APNIC }, { 2386, 2386, REGISTRY_ARIN }, { 2387, 2488, REGISTRY_RIPE }, { 2489, 2493, REGISTRY_ARIN }, { 2494, 2494, REGISTRY_RIPE }, { 2495, 2496, REGISTRY_ARIN }, { 2497, 2528, REGISTRY_APNIC }, { 2529, 2530, REGISTRY_RIPE }, { 2531, 2536, REGISTRY_ARIN }, { 2537, 2537, REGISTRY_APNIC }, { 2538, 2540, REGISTRY_ARIN }, { 2541, 2541, REGISTRY_RIPE }, { 2542, 2545, REGISTRY_ARIN }, { 2546, 2547, REGISTRY_RIPE }, { 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_RIPE }, { 2579, 2584, REGISTRY_ARIN }, { 2585, 2614, REGISTRY_RIPE }, { 2615, 2637, REGISTRY_ARIN }, { 2638, 2638, REGISTRY_LACNIC }, { 2639, 2642, REGISTRY_ARIN }, { 2643, 2643, REGISTRY_RIPE }, { 2644, 2646, REGISTRY_ARIN }, { 2647, 2647, REGISTRY_RIPE }, { 2648, 2682, REGISTRY_ARIN }, { 2683, 2683, REGISTRY_RIPE }, { 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_RIPE }, { 2767, 2771, REGISTRY_ARIN }, { 2772, 2772, REGISTRY_APNIC }, { 2773, 2822, REGISTRY_RIPE }, { 2823, 2823, REGISTRY_APNIC }, { 2824, 2829, REGISTRY_ARIN }, { 2830, 2879, REGISTRY_RIPE }, { 2880, 2894, REGISTRY_ARIN }, { 2895, 2895, REGISTRY_RIPE }, { 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_RIPE }, { 2918, 2920, REGISTRY_ARIN }, { 2921, 2921, REGISTRY_RIPE }, { 2922, 2924, REGISTRY_ARIN }, { 2925, 2926, REGISTRY_APNIC }, { 2927, 3057, REGISTRY_ARIN }, { 3058, 3058, REGISTRY_RIPE }, { 3059, 3066, REGISTRY_ARIN }, { 3067, 3068, REGISTRY_AFRINIC }, { 3069, 3082, REGISTRY_ARIN }, { 3083, 3109, REGISTRY_RIPE }, { 3110, 3131, REGISTRY_ARIN }, { 3132, 3132, REGISTRY_LACNIC }, { 3133, 3140, REGISTRY_ARIN }, { 3141, 3141, REGISTRY_LACNIC }, { 3142, 3150, REGISTRY_ARIN }, { 3151, 3151, REGISTRY_RIPE }, { 3152, 3153, REGISTRY_ARIN }, { 3154, 3207, REGISTRY_RIPE }, { 3208, 3208, REGISTRY_AFRINIC }, { 3209, 3353, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 3844, 3904, REGISTRY_ARIN }, { 3905, 3905, REGISTRY_LACNIC }, { 3906, 3916, REGISTRY_ARIN }, { 3917, 3918, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 4431, 4431, REGISTRY_APNIC }, { 4432, 4432, REGISTRY_ARIN }, { 4433, 4434, REGISTRY_APNIC }, { 4435, 4456, REGISTRY_ARIN }, { 4457, 4458, REGISTRY_RIPE }, { 4459, 4492, REGISTRY_ARIN }, { 4493, 4493, REGISTRY_LACNIC }, { 4494, 4514, REGISTRY_ARIN }, { 4515, 4515, REGISTRY_APNIC }, { 4516, 4523, REGISTRY_ARIN }, { 4524, 4524, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 5090, 5376, REGISTRY_ARIN }, { 5377, 5535, REGISTRY_RIPE }, { 5536, 5536, REGISTRY_AFRINIC }, { 5537, 5631, REGISTRY_RIPE }, { 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_RIPE }, { 6068, 6068, REGISTRY_APNIC }, { 6069, 6082, REGISTRY_ARIN }, { 6083, 6083, REGISTRY_AFRINIC }, { 6084, 6084, REGISTRY_LACNIC }, { 6085, 6085, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 6713, 6713, REGISTRY_AFRINIC }, { 6714, 6878, REGISTRY_RIPE }, { 6879, 6879, REGISTRY_AFRINIC }, { 6880, 6911, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 8524, 8524, REGISTRY_AFRINIC }, { 8525, 8769, REGISTRY_RIPE }, { 8770, 8770, REGISTRY_AFRINIC }, { 8771, 9128, REGISTRY_RIPE }, { 9129, 9129, REGISTRY_AFRINIC }, { 9130, 9215, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 12455, 12455, REGISTRY_AFRINIC }, { 12456, 12555, REGISTRY_RIPE }, { 12556, 12556, REGISTRY_AFRINIC }, { 12557, 13223, REGISTRY_RIPE }, { 13224, 13224, REGISTRY_AFRINIC }, { 13225, 13311, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 15399, 15399, REGISTRY_AFRINIC }, { 15400, 15474, REGISTRY_RIPE }, { 15475, 15475, REGISTRY_AFRINIC }, { 15476, 15705, REGISTRY_RIPE }, { 15706, 15706, REGISTRY_AFRINIC }, { 15707, 15803, REGISTRY_RIPE }, { 15804, 15804, REGISTRY_AFRINIC }, { 15805, 15824, REGISTRY_RIPE }, { 15825, 15825, REGISTRY_AFRINIC }, { 15826, 15833, REGISTRY_RIPE }, { 15834, 15834, REGISTRY_AFRINIC }, { 15835, 15963, REGISTRY_RIPE }, { 15964, 15964, REGISTRY_AFRINIC }, { 15965, 16057, REGISTRY_RIPE }, { 16058, 16058, REGISTRY_AFRINIC }, { 16059, 16213, REGISTRY_RIPE }, { 16214, 16214, REGISTRY_AFRINIC }, { 16215, 16283, REGISTRY_RIPE }, { 16284, 16284, REGISTRY_AFRINIC }, { 16285, 16383, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 19377, 19398, REGISTRY_ARIN }, { 19399, 19399, REGISTRY_RIPE }, { 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_RIPE }, { 20484, 20484, REGISTRY_AFRINIC }, { 20485, 20857, REGISTRY_RIPE }, { 20858, 20858, REGISTRY_AFRINIC }, { 20859, 20927, REGISTRY_RIPE }, { 20928, 20928, REGISTRY_AFRINIC }, { 20929, 21002, REGISTRY_RIPE }, { 21003, 21003, REGISTRY_AFRINIC }, { 21004, 21151, REGISTRY_RIPE }, { 21152, 21152, REGISTRY_AFRINIC }, { 21153, 21241, REGISTRY_RIPE }, { 21242, 21242, REGISTRY_AFRINIC }, { 21243, 21270, REGISTRY_RIPE }, { 21271, 21271, REGISTRY_AFRINIC }, { 21272, 21277, REGISTRY_RIPE }, { 21278, 21278, REGISTRY_AFRINIC }, { 21279, 21279, REGISTRY_RIPE }, { 21280, 21280, REGISTRY_AFRINIC }, { 21281, 21390, REGISTRY_RIPE }, { 21391, 21391, REGISTRY_AFRINIC }, { 21392, 21451, REGISTRY_RIPE }, { 21452, 21452, REGISTRY_AFRINIC }, { 21453, 21503, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 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_RIPE }, { 24736, 24736, REGISTRY_AFRINIC }, { 24737, 24756, REGISTRY_RIPE }, { 24757, 24757, REGISTRY_AFRINIC }, { 24758, 24787, REGISTRY_RIPE }, { 24788, 24788, REGISTRY_AFRINIC }, { 24789, 24800, REGISTRY_RIPE }, { 24801, 24801, REGISTRY_AFRINIC }, { 24802, 24834, REGISTRY_RIPE }, { 24835, 24835, REGISTRY_AFRINIC }, { 24836, 24862, REGISTRY_RIPE }, { 24863, 24863, REGISTRY_AFRINIC }, { 24864, 24877, REGISTRY_RIPE }, { 24878, 24878, REGISTRY_AFRINIC }, { 24879, 24986, REGISTRY_RIPE }, { 24987, 24987, REGISTRY_AFRINIC }, { 24988, 25162, REGISTRY_RIPE }, { 25163, 25163, REGISTRY_AFRINIC }, { 25164, 25249, REGISTRY_RIPE }, { 25250, 25250, REGISTRY_AFRINIC }, { 25251, 25361, REGISTRY_RIPE }, { 25362, 25362, REGISTRY_AFRINIC }, { 25363, 25363, REGISTRY_RIPE }, { 25364, 25364, REGISTRY_AFRINIC }, { 25365, 25542, REGISTRY_RIPE }, { 25543, 25543, REGISTRY_AFRINIC }, { 25544, 25567, REGISTRY_RIPE }, { 25568, 25568, REGISTRY_AFRINIC }, { 25569, 25575, REGISTRY_RIPE }, { 25576, 25576, REGISTRY_AFRINIC }, { 25577, 25599, REGISTRY_RIPE }, { 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_RIPE }, { 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_RIPE }, { 28683, 28683, REGISTRY_AFRINIC }, { 28684, 28697, REGISTRY_RIPE }, { 28698, 28698, REGISTRY_AFRINIC }, { 28699, 28912, REGISTRY_RIPE }, { 28913, 28913, REGISTRY_AFRINIC }, { 28914, 29090, REGISTRY_RIPE }, { 29091, 29091, REGISTRY_AFRINIC }, { 29092, 29337, REGISTRY_RIPE }, { 29338, 29338, REGISTRY_AFRINIC }, { 29339, 29339, REGISTRY_RIPE }, { 29340, 29340, REGISTRY_AFRINIC }, { 29341, 29427, REGISTRY_RIPE }, { 29428, 29428, REGISTRY_AFRINIC }, { 29429, 29494, REGISTRY_RIPE }, { 29495, 29495, REGISTRY_AFRINIC }, { 29496, 29543, REGISTRY_RIPE }, { 29544, 29544, REGISTRY_AFRINIC }, { 29545, 29570, REGISTRY_RIPE }, { 29571, 29571, REGISTRY_AFRINIC }, { 29572, 29613, REGISTRY_RIPE }, { 29614, 29614, REGISTRY_AFRINIC }, { 29615, 29673, REGISTRY_RIPE }, { 29674, 29674, REGISTRY_AFRINIC }, { 29675, 29695, REGISTRY_RIPE }, { 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_RIPE }, { 30896, 30896, REGISTRY_AFRINIC }, { 30897, 30979, REGISTRY_RIPE }, { 30980, 30980, REGISTRY_AFRINIC }, { 30981, 30981, REGISTRY_RIPE }, { 30982, 30999, REGISTRY_AFRINIC }, { 31000, 31064, REGISTRY_RIPE }, { 31065, 31065, REGISTRY_AFRINIC }, { 31066, 31244, REGISTRY_RIPE }, { 31245, 31245, REGISTRY_AFRINIC }, { 31246, 31618, REGISTRY_RIPE }, { 31619, 31619, REGISTRY_AFRINIC }, { 31620, 31743, REGISTRY_RIPE }, { 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_RIPE }, { 34816, 35839, REGISTRY_RIPE }, { 35840, 36863, REGISTRY_ARIN }, { 36864, 37887, REGISTRY_AFRINIC }, { 37888, 38911, REGISTRY_APNIC }, { 38912, 39935, REGISTRY_RIPE }, { 39936, 40959, REGISTRY_ARIN }, { 40960, 41983, REGISTRY_RIPE }, { 41984, 43007, REGISTRY_RIPE }, { 43008, 44031, REGISTRY_RIPE }, { 44032, 45055, REGISTRY_RIPE }, { 45056, 46079, REGISTRY_APNIC }, { 46080, 47103, REGISTRY_ARIN }, { 47104, 48127, REGISTRY_RIPE }, { 48128, 49151, REGISTRY_RIPE }, { 49152, 50175, REGISTRY_RIPE }, { 50176, 51199, REGISTRY_RIPE }, { 51200, 52223, REGISTRY_RIPE }, { 52224, 53247, REGISTRY_LACNIC }, { 53248, 54271, REGISTRY_ARIN }, { 54272, 55295, REGISTRY_ARIN }, { 55296, 56319, REGISTRY_APNIC }, { 56320, 57343, REGISTRY_RIPE }, { 57344, 58367, REGISTRY_RIPE }, { 58368, 59391, REGISTRY_APNIC }, { 59392, 60415, REGISTRY_RIPE }, { 60416, 61439, REGISTRY_RIPE }, { 61440, 61951, REGISTRY_LACNIC }, { 62464, 63487, REGISTRY_ARIN }, { 131072, 132095, REGISTRY_APNIC }, { 132096, 133119, REGISTRY_APNIC }, { 196608, 197631, REGISTRY_RIPE }, { 197632, 198655, REGISTRY_RIPE }, { 198656, 199679, REGISTRY_RIPE }, { 262144, 263167, REGISTRY_LACNIC }, { 263168, 263679, REGISTRY_LACNIC }, { 327680, 328703, REGISTRY_AFRINIC }, { 393216, 394239, REGISTRY_ARIN }, }; ipv6calc-0.95.0/databases/tools/0000775000175100017510000000000012242072067015431 5ustar peterpeteripv6calc-0.95.0/databases/tools/create_ieee_headerfile.pl0000775000175100017510000001220612131074167022374 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc # File : create_ieee_headerfile.pl # Version : $Id: create_ieee_headerfile.pl,v 1.2 2013/04/09 20:22:15 ds6peter Exp $ # Copyright : 2002-2013 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 libieee.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); 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; #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; # Some final cleanup $oui =~ s/-INT-L//ig; $oui =~ s/-B-V//ig; # remove trailling '-' $oui =~ s/-+$//ig; #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.95.0/databases/ieee-oui/0000775000175100017510000000000012242072067015772 5ustar peterpeteripv6calc-0.95.0/databases/ieee-oui/create_ieee_oui_headerfile.pl0000775000175100017510000001127112130615740023607 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc # File : create_ieee_oui_headerfile.pl # Version : $Id: create_ieee_oui_headerfile.pl,v 1.13 2013/04/08 19:34:56 ds6peter Exp $ # Copyright : 2002-2013 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; $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.95.0/databases/ieee-oui/Makefile0000664000175100017510000000135411111067622017430 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.95.0/databases/ieee-oui/dbieee_oui.h0000664000175100017510000407110312242063744020244 0ustar peterpeter/* * Project : ipv6calc * File : dbieee_oui.h * Version : $Id: dbieee_oui.h,v 1.73 2013/11/17 06:53:24 ds6peter Exp $ * Generated : Sun Nov 17 07:48:22 2013 * Data copyright: IEEE * * Information: * Additional header file for libieee.c */ /*@unused@*/ static const char* libieee_oui_status __attribute__ ((__unused__)) = "OUI/20131117"; static const s_ieee_oui libieee_oui[] = { { 0x000000, "XEROX CORPORATION", "XEROX" }, { 0x000001, "XEROX CORPORATION", "XEROX" }, { 0x000002, "XEROX CORPORATION", "XEROX" }, { 0x000003, "XEROX CORPORATION", "XEROX" }, { 0x000004, "XEROX CORPORATION", "XEROX" }, { 0x000005, "XEROX CORPORATION", "XEROX" }, { 0x000006, "XEROX CORPORATION", "XEROX" }, { 0x000007, "XEROX CORPORATION", "XEROX" }, { 0x000008, "XEROX CORPORATION", "XEROX" }, { 0x000009, "XEROX CORPORATION", "XEROX" }, { 0x00000A, "OMRON TATEISI ELECTRONICS CO.", "OMRON-TATEISI-ELECTRONICS" }, { 0x00000B, "MATRIX CORPORATION", "MATRIX" }, { 0x00000C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00000D, "FIBRONICS LTD.", "FIBRONICS" }, { 0x00000E, "FUJITSU LIMITED", "FUJITSU" }, { 0x00000F, "NEXT, INC.", "NEXT" }, { 0x000010, "SYTEK INC.", "SYTEK" }, { 0x000011, "NORMEREL SYSTEMES", "NORMEREL-SYSTEMES" }, { 0x000012, "INFORMATION TECHNOLOGY LIMITED", "INFORMATION" }, { 0x000013, "CAMEX", "CAMEX" }, { 0x000014, "NETRONIX", "NETRONIX" }, { 0x000015, "DATAPOINT CORPORATION", "DATAPOINT" }, { 0x000016, "DU PONT PIXEL SYSTEMS .", "DU-PONT-PIXEL" }, { 0x000017, "TEKELEC", "TEKELEC" }, { 0x000018, "WEBSTER COMPUTER CORPORATION", "WEBSTER" }, { 0x000019, "APPLIED DYNAMICS INTERNATIONAL", "APPLIED-DYNAMICS" }, { 0x00001A, "ADVANCED MICRO DEVICES", "ADVANCED-MICRO-DEVICES" }, { 0x00001B, "NOVELL INC.", "NOVELL" }, { 0x00001C, "BELL TECHNOLOGIES", "BELL-TECHNOLOGIES" }, { 0x00001D, "CABLETRON SYSTEMS, INC.", "CABLETRON" }, { 0x00001E, "TELSIST INDUSTRIA ELECTRONICA", "TELSIST-INDUSTRIA-ELECTRONICA" }, { 0x00001F, "Telco Systems, Inc.", "TELCO" }, { 0x000020, "DATAINDUSTRIER DIAB AB", "DATAINDUSTRIER-DIAB-AB" }, { 0x000021, "SUREMAN COMP. & COMMUN. CORP.", "SUREMAN-COMP-COMMUN" }, { 0x000022, "VISUAL TECHNOLOGY INC.", "VISUAL" }, { 0x000023, "ABB INDUSTRIAL SYSTEMS AB", "ABB-INDUSTRIAL-AB" }, { 0x000024, "CONNECT AS", "CONNECT-AS" }, { 0x000025, "RAMTEK CORP.", "RAMTEK" }, { 0x000026, "SHA-KEN CO., LTD.", "SHA-KEN" }, { 0x000027, "JAPAN RADIO COMPANY", "JAPAN-RADIO-COMPANY" }, { 0x000028, "PRODIGY SYSTEMS CORPORATION", "PRODIGY" }, { 0x000029, "IMC NETWORKS CORP.", "IMC-NETWORKS" }, { 0x00002A, "TRW - SEDD/INP", "TRW---SEDD/INP" }, { 0x00002B, "CRISP AUTOMATION, INC", "CRISP-AUTOMATION" }, { 0x00002C, "AUTOTOTE LIMITED", "AUTOTOTE" }, { 0x00002D, "CHROMATICS INC", "CHROMATICS" }, { 0x00002E, "SOCIETE EVIRA", "SOCIETE-EVIRA" }, { 0x00002F, "TIMEPLEX INC.", "TIMEPLEX" }, { 0x000030, "VG LABORATORY SYSTEMS LTD", "VG-LABORATORY" }, { 0x000031, "QPSX COMMUNICATIONS PTY LTD", "QPSX-COMMUNICATION-PTY" }, { 0x000032, "Marconi plc", "MARCONI-PLC" }, { 0x000033, "EGAN MACHINERY COMPANY", "EGAN-MACHINERY-COMPANY" }, { 0x000034, "NETWORK RESOURCES CORPORATION", "NETWORK-RESOURCES" }, { 0x000035, "SPECTRAGRAPHICS CORPORATION", "SPECTRAGRAPHICS" }, { 0x000036, "ATARI CORPORATION", "ATARI" }, { 0x000037, "OXFORD METRICS LIMITED", "OXFORD-METRICS" }, { 0x000038, "CSS LABS", "CSS-LABS" }, { 0x000039, "TOSHIBA CORPORATION", "TOSHIBA" }, { 0x00003A, "CHYRON CORPORATION", "CHYRON" }, { 0x00003B, "i Controls, Inc.", "I-CONTROLS" }, { 0x00003C, "AUSPEX SYSTEMS INC.", "AUSPEX" }, { 0x00003D, "UNISYS", "UNISYS" }, { 0x00003E, "SIMPACT", "SIMPACT" }, { 0x00003F, "SYNTREX, INC.", "SYNTREX" }, { 0x000040, "APPLICON, INC.", "APPLICON" }, { 0x000041, "ICE CORPORATION", "ICE" }, { 0x000042, "METIER MANAGEMENT SYSTEMS LTD.", "METIER-MANAGEMENT" }, { 0x000043, "MICRO TECHNOLOGY", "MICRO" }, { 0x000044, "CASTELLE CORPORATION", "CASTELLE" }, { 0x000045, "FORD AEROSPACE & COMM. CORP.", "FORD-AEROSPACE-COMM" }, { 0x000046, "OLIVETTI NORTH AMERICA", "OLIVETTI-NORTH-AMERICA" }, { 0x000047, "NICOLET INSTRUMENTS CORP.", "NICOLET-INSTRUMENTS" }, { 0x000048, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0x000049, "APRICOT COMPUTERS, LTD", "APRICOT-COMPUTERS" }, { 0x00004A, "ADC CODENOLL TECHNOLOGY CORP.", "ADC-CODENOLL" }, { 0x00004B, "ICL DATA OY", "ICL-DATA-OY" }, { 0x00004C, "NEC CORPORATION", "NEC" }, { 0x00004D, "DCI CORPORATION", "DCI" }, { 0x00004E, "AMPEX CORPORATION", "AMPEX" }, { 0x00004F, "LOGICRAFT, INC.", "LOGICRAFT" }, { 0x000050, "RADISYS CORPORATION", "RADISYS" }, { 0x000051, "HOB ELECTRONIC GMBH & CO. KG", "HOB" }, { 0x000052, "Intrusion.com, Inc.", "INTRUSION-COM" }, { 0x000053, "COMPUCORP", "COMPUCORP" }, { 0x000054, "Schnieder Electric", "SCHNIEDER-ELECTRIC" }, { 0x000055, "COMMISSARIAT A L`ENERGIE ATOM.", "COMMISSARIAT-A-L`ENERGIE-ATOM" }, { 0x000056, "DR. B. STRUCK", "DR-B-STRUCK" }, { 0x000057, "SCITEX CORPORATION LTD.", "SCITEX" }, { 0x000058, "RACORE COMPUTER PRODUCTS INC.", "RACORE-PRODUCTS" }, { 0x000059, "HELLIGE GMBH", "HELLIGE" }, { 0x00005A, "SysKonnect GmbH", "SYSKONNECT" }, { 0x00005B, "ELTEC ELEKTRONIK AG", "ELTEC-ELEKTRONIK" }, { 0x00005C, "TELEMATICS INTERNATIONAL INC.", "TELEMATICS" }, { 0x00005D, "CS TELECOM", "CS-TELECOM" }, { 0x00005E, "ICANN, IANA Department", "ICANN-IANA-DEPARTMENT" }, { 0x00005F, "SUMITOMO ELECTRIC IND., LTD.", "SUMITOMO-ELECTRIC-IND" }, { 0x000060, "KONTRON ELEKTRONIK GMBH", "KONTRON-ELEKTRONIK" }, { 0x000061, "GATEWAY COMMUNICATIONS", "GATEWAY-COMMUNICATION" }, { 0x000062, "BULL HN INFORMATION SYSTEMS", "BULL-HN-INFORMATION" }, { 0x000063, "BARCO CONTROL ROOMS GMBH", "BARCO-CONTROL-ROOMS" }, { 0x000064, "YOKOGAWA DIGITAL COMPUTER CORP", "YOKOGAWA-DIGITAL" }, { 0x000065, "Network General Corporation", "NETWORK-GENERAL" }, { 0x000066, "TALARIS SYSTEMS, INC.", "TALARIS" }, { 0x000067, "SOFT * RITE, INC.", "SOFT-*-RITE" }, { 0x000068, "ROSEMOUNT CONTROLS", "ROSEMOUNT-CONTROLS" }, { 0x000069, "CONCORD COMMUNICATIONS INC", "CONCORD-COMMUNICATION" }, { 0x00006A, "COMPUTER CONSOLES INC.", "CONSOLES" }, { 0x00006B, "SILICON GRAPHICS INC./MIPS", "SILICON-GRAPHICS-/MIPS" }, { 0x00006C, "PRIVATE", "PRIVATE" }, { 0x00006D, "CRAY COMMUNICATIONS, LTD.", "CRAY-COMMUNICATION" }, { 0x00006E, "ARTISOFT, INC.", "ARTISOFT" }, { 0x00006F, "Madge Ltd.", "MADGE" }, { 0x000070, "HCL LIMITED", "HCL" }, { 0x000071, "ADRA SYSTEMS INC.", "ADRA" }, { 0x000072, "MINIWARE TECHNOLOGY", "MINIWARE" }, { 0x000073, "SIECOR CORPORATION", "SIECOR" }, { 0x000074, "RICOH COMPANY LTD.", "RICOH-COMPANY" }, { 0x000075, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000076, "ABEKAS VIDEO SYSTEM", "ABEKAS-VIDEO-SYSTEM" }, { 0x000077, "INTERPHASE CORPORATION", "INTERPHASE" }, { 0x000078, "LABTAM LIMITED", "LABTAM" }, { 0x000079, "NETWORTH INCORPORATED", "NETWORTH-INCORPORATED" }, { 0x00007A, "DANA COMPUTER INC.", "DANA" }, { 0x00007B, "RESEARCH MACHINES", "RESEARCH-MACHINES" }, { 0x00007C, "AMPERE INCORPORATED", "AMPERE-INCORPORATED" }, { 0x00007D, "Oracle Corporation", "ORACLE" }, { 0x00007E, "CLUSTRIX CORPORATION", "CLUSTRIX" }, { 0x00007F, "LINOTYPE-HELL AG", "LINOTYPE-HELL" }, { 0x000080, "CRAY COMMUNICATIONS A/S", "CRAY-COMMUNICATION-A/S" }, { 0x000081, "BAY NETWORKS", "BAY-NETWORKS" }, { 0x000082, "LECTRA SYSTEMES SA", "LECTRA-SYSTEMES" }, { 0x000083, "TADPOLE TECHNOLOGY PLC", "TADPOLE-PLC" }, { 0x000084, "SUPERNET", "SUPERNET" }, { 0x000085, "CANON INC.", "CANON" }, { 0x000086, "MEGAHERTZ CORPORATION", "MEGAHERTZ" }, { 0x000087, "HITACHI, LTD.", "HITACHI" }, { 0x000088, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000089, "CAYMAN SYSTEMS INC.", "CAYMAN" }, { 0x00008A, "DATAHOUSE INFORMATION SYSTEMS", "DATAHOUSE-INFORMATION" }, { 0x00008B, "INFOTRON", "INFOTRON" }, { 0x00008C, "Alloy Computer Products (Australia) Pty Ltd", "ALLOY-PRODUCTS-AUSTRALIA-PTY" }, { 0x00008D, "Cryptek Inc.", "CRYPTEK" }, { 0x00008E, "SOLBOURNE COMPUTER, INC.", "SOLBOURNE" }, { 0x00008F, "Raytheon", "RAYTHEON" }, { 0x000090, "MICROCOM", "MICROCOM" }, { 0x000091, "ANRITSU CORPORATION", "ANRITSU" }, { 0x000092, "COGENT DATA TECHNOLOGIES", "COGENT-DATA-TECHNOLOGIES" }, { 0x000093, "PROTEON INC.", "PROTEON" }, { 0x000094, "ASANTE TECHNOLOGIES", "ASANTE-TECHNOLOGIES" }, { 0x000095, "SONY TEKTRONIX CORP.", "SONY-TEKTRONIX" }, { 0x000096, "MARCONI ELECTRONICS LTD.", "MARCONI-ELECTRONICS" }, { 0x000097, "EMC Corporation", "EMC" }, { 0x000098, "CROSSCOMM CORPORATION", "CROSSCOMM" }, { 0x000099, "MTX, INC.", "MTX" }, { 0x00009A, "RC COMPUTER A/S", "RC-A/S" }, { 0x00009B, "INFORMATION INTERNATIONAL, INC", "INFORMATION" }, { 0x00009C, "ROLM MIL-SPEC COMPUTERS", "ROLM-MIL-SPEC-COMPUTERS" }, { 0x00009D, "LOCUS COMPUTING CORPORATION", "LOCUS-COMPUTING" }, { 0x00009E, "MARLI S.A.", "MARLI" }, { 0x00009F, "AMERISTAR TECHNOLOGIES INC.", "AMERISTAR-TECHNOLOGIES" }, { 0x0000A0, "SANYO Electric Co., Ltd.", "SANYO-ELECTRIC" }, { 0x0000A1, "MARQUETTE ELECTRIC CO.", "MARQUETTE-ELECTRIC" }, { 0x0000A2, "BAY NETWORKS", "BAY-NETWORKS" }, { 0x0000A3, "NETWORK APPLICATION TECHNOLOGY", "NETWORK-APPLICATION" }, { 0x0000A4, "ACORN COMPUTERS LIMITED", "ACORN-COMPUTERS" }, { 0x0000A5, "Tattile SRL", "TATTILE-SRL" }, { 0x0000A6, "NETWORK GENERAL CORPORATION", "NETWORK-GENERAL" }, { 0x0000A7, "NETWORK COMPUTING DEVICES INC.", "NETWORK-COMPUTING-DEVICES" }, { 0x0000A8, "STRATUS COMPUTER INC.", "STRATUS" }, { 0x0000A9, "NETWORK SYSTEMS CORP.", "NETWORK" }, { 0x0000AA, "XEROX CORPORATION", "XEROX" }, { 0x0000AB, "LOGIC MODELING CORPORATION", "LOGIC-MODELING" }, { 0x0000AC, "CONWARE COMPUTER CONSULTING", "CONWARE-CONSULTING" }, { 0x0000AD, "BRUKER INSTRUMENTS INC.", "BRUKER-INSTRUMENTS" }, { 0x0000AE, "DASSAULT ELECTRONIQUE", "DASSAULT-ELECTRONIQUE" }, { 0x0000AF, "NUCLEAR DATA INSTRUMENTATION", "NUCLEAR-DATA-INSTRUMENTATION" }, { 0x0000B0, "RND-RAD NETWORK DEVICES", "RND-RAD-NETWORK-DEVICES" }, { 0x0000B1, "ALPHA MICROSYSTEMS INC.", "ALPHA-MICROSYSTEMS" }, { 0x0000B2, "TELEVIDEO SYSTEMS, INC.", "TELEVIDEO" }, { 0x0000B3, "CIMLINC INCORPORATED", "CIMLINC-INCORPORATED" }, { 0x0000B4, "EDIMAX COMPUTER COMPANY", "EDIMAX-COMPANY" }, { 0x0000B5, "DATABILITY SOFTWARE SYS. INC.", "DATABILITY-SOFTWARE-SYS" }, { 0x0000B6, "MICRO-MATIC RESEARCH", "MICRO-MATIC-RESEARCH" }, { 0x0000B7, "DOVE COMPUTER CORPORATION", "DOVE" }, { 0x0000B8, "SEIKOSHA CO., LTD.", "SEIKOSHA" }, { 0x0000B9, "MCDONNELL DOUGLAS COMPUTER SYS", "MCDONNELL-DOUGLAS-SYS" }, { 0x0000BA, "SIIG, INC.", "SIIG" }, { 0x0000BB, "TRI-DATA", "TRI-DATA" }, { 0x0000BC, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0x0000BD, "MITSUBISHI CABLE COMPANY", "MITSUBISHI-CABLE-COMPANY" }, { 0x0000BE, "THE NTI GROUP", "THE-NTI-GROUP" }, { 0x0000BF, "SYMMETRIC COMPUTER SYSTEMS", "SYMMETRIC" }, { 0x0000C0, "WESTERN DIGITAL CORPORATION", "WESTERN-DIGITAL" }, { 0x0000C1, "Madge Ltd.", "MADGE" }, { 0x0000C2, "INFORMATION PRESENTATION TECH.", "INFORMATION-PRESENTATION-TECH" }, { 0x0000C3, "HARRIS CORP COMPUTER SYS DIV", "HARRIS-SYS-DIV" }, { 0x0000C4, "WATERS DIV. OF MILLIPORE", "WATERS-DIV-OF-MILLIPORE" }, { 0x0000C5, "FARALLON COMPUTING/NETOPIA", "FARALLON-COMPUTING/NETOPIA" }, { 0x0000C6, "EON SYSTEMS", "EON" }, { 0x0000C7, "ARIX CORPORATION", "ARIX" }, { 0x0000C8, "ALTOS COMPUTER SYSTEMS", "ALTOS" }, { 0x0000C9, "Emulex Corporation", "EMULEX" }, { 0x0000CA, "ARRIS International", "ARRIS" }, { 0x0000CB, "COMPU-SHACK ELECTRONIC GMBH", "COMPU-SHACK" }, { 0x0000CC, "DENSAN CO., LTD.", "DENSAN" }, { 0x0000CD, "Allied Telesis Labs Ltd", "ALLIED-TELESIS-LABS" }, { 0x0000CE, "MEGADATA CORP.", "MEGADATA" }, { 0x0000CF, "HAYES MICROCOMPUTER PRODUCTS", "HAYES-MICROCOMPUTER-PRODUCTS" }, { 0x0000D0, "DEVELCON ELECTRONICS LTD.", "DEVELCON-ELECTRONICS" }, { 0x0000D1, "ADAPTEC INCORPORATED", "ADAPTEC-INCORPORATED" }, { 0x0000D2, "SBE, INC.", "SBE" }, { 0x0000D3, "WANG LABORATORIES INC.", "WANG-LABORATORIES" }, { 0x0000D4, "PURE DATA LTD.", "PURE-DATA" }, { 0x0000D5, "MICROGNOSIS INTERNATIONAL", "MICROGNOSIS" }, { 0x0000D6, "PUNCH LINE HOLDING", "PUNCH-LINE-HOLDING" }, { 0x0000D7, "DARTMOUTH COLLEGE", "DARTMOUTH-COLLEGE" }, { 0x0000D8, "NOVELL, INC.", "NOVELL" }, { 0x0000D9, "NIPPON TELEGRAPH & TELEPHONE", "NIPPON-TELEGRAPH-TELEPHONE" }, { 0x0000DA, "ATEX", "ATEX" }, { 0x0000DB, "British Telecommunications plc", "BRITISH-TELECOMMUNICATIONS-PLC" }, { 0x0000DC, "HAYES MICROCOMPUTER PRODUCTS", "HAYES-MICROCOMPUTER-PRODUCTS" }, { 0x0000DD, "TCL INCORPORATED", "TCL-INCORPORATED" }, { 0x0000DE, "CETIA", "CETIA" }, { 0x0000DF, "BELL & HOWELL PUB SYS DIV", "BELL-HOWELL-PUB-SYS-DIV" }, { 0x0000E0, "QUADRAM CORP.", "QUADRAM" }, { 0x0000E1, "GRID SYSTEMS", "GRID" }, { 0x0000E2, "ACER TECHNOLOGIES CORP.", "ACER-TECHNOLOGIES" }, { 0x0000E3, "INTEGRATED MICRO PRODUCTS LTD", "INTEGRATED-MICRO-PRODUCTS" }, { 0x0000E4, "IN2 GROUPE INTERTECHNIQUE", "IN2-GROUPE-INTERTECHNIQUE" }, { 0x0000E5, "SIGMEX LTD.", "SIGMEX" }, { 0x0000E6, "APTOR PRODUITS DE COMM INDUST", "APTOR-PRODUITS-DE-COMM-INDUST" }, { 0x0000E7, "STAR GATE TECHNOLOGIES", "STAR-GATE-TECHNOLOGIES" }, { 0x0000E8, "ACCTON TECHNOLOGY CORP.", "ACCTON" }, { 0x0000E9, "ISICAD, INC.", "ISICAD" }, { 0x0000EA, "UPNOD AB", "UPNOD-AB" }, { 0x0000EB, "MATSUSHITA COMM. IND. CO. LTD.", "MATSUSHITA-COMM-IND" }, { 0x0000EC, "MICROPROCESS", "MICROPROCESS" }, { 0x0000ED, "APRIL", "APRIL" }, { 0x0000EE, "NETWORK DESIGNERS, LTD.", "NETWORK-DESIGNERS" }, { 0x0000EF, "KTI", "KTI" }, { 0x0000F0, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x0000F1, "MAGNA COMPUTER CORPORATION", "MAGNA" }, { 0x0000F2, "SPIDER COMMUNICATIONS", "SPIDER-COMMUNICATION" }, { 0x0000F3, "GANDALF DATA LIMITED", "GANDALF-DATA" }, { 0x0000F4, "Allied Telesis", "ALLIED-TELESIS" }, { 0x0000F5, "DIAMOND SALES LIMITED", "DIAMOND-SALES" }, { 0x0000F6, "APPLIED MICROSYSTEMS CORP.", "APPLIED-MICROSYSTEMS" }, { 0x0000F7, "YOUTH KEEP ENTERPRISE CO LTD", "YOUTH-KEEP" }, { 0x0000F8, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x0000F9, "QUOTRON SYSTEMS INC.", "QUOTRON" }, { 0x0000FA, "MICROSAGE COMPUTER SYSTEMS INC", "MICROSAGE" }, { 0x0000FB, "RECHNER ZUR KOMMUNIKATION", "RECHNER-ZUR-KOMMUNIKATION" }, { 0x0000FC, "MEIKO", "MEIKO" }, { 0x0000FD, "HIGH LEVEL HARDWARE", "HIGH-LEVEL-HARDWARE" }, { 0x0000FE, "ANNAPOLIS MICRO SYSTEMS", "ANNAPOLIS-MICRO" }, { 0x0000FF, "CAMTEC ELECTRONICS LTD.", "CAMTEC-ELECTRONICS" }, { 0x000100, "EQUIP'TRANS", "EQUIP-TRANS" }, { 0x000101, "PRIVATE", "PRIVATE" }, { 0x000102, "3COM CORPORATION", "3COM" }, { 0x000103, "3COM CORPORATION", "3COM" }, { 0x000104, "DVICO Co., Ltd.", "DVICO" }, { 0x000105, "Beckhoff Automation GmbH", "BECKHOFF-AUTOMATION" }, { 0x000106, "Tews Datentechnik GmbH", "TEWS-DATENTECHNIK" }, { 0x000107, "Leiser GmbH", "LEISER" }, { 0x000108, "AVLAB Technology, Inc.", "AVLAB" }, { 0x000109, "Nagano Japan Radio Co., Ltd.", "NAGANO-JAPAN-RADIO" }, { 0x00010A, "CIS TECHNOLOGY INC.", "CIS" }, { 0x00010B, "Space CyberLink, Inc.", "SPACE-CYBERLINK" }, { 0x00010C, "System Talks Inc.", "SYSTEM-TALKS" }, { 0x00010D, "CORECO, INC.", "CORECO" }, { 0x00010E, "Bri-Link Technologies Co., Ltd", "BRI-LINK-TECHNOLOGIES" }, { 0x00010F, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000110, "Gotham Networks", "GOTHAM-NETWORKS" }, { 0x000111, "iDigm Inc.", "IDIGM" }, { 0x000112, "Shark Multimedia Inc.", "SHARK-MULTIMEDIA" }, { 0x000113, "OLYMPUS CORPORATION", "OLYMPUS" }, { 0x000114, "KANDA TSUSHIN KOGYO CO., LTD.", "KANDA-TSUSHIN-KOGYO" }, { 0x000115, "EXTRATECH CORPORATION", "EXTRATECH" }, { 0x000116, "Netspect Technologies, Inc.", "NETSPECT-TECHNOLOGIES" }, { 0x000117, "CANAL +", "CANAL-+" }, { 0x000118, "EZ Digital Co., Ltd.", "EZ-DIGITAL" }, { 0x000119, "RTUnet (Australia)", "RTUNET-AUSTRALIA" }, { 0x00011A, "Hoffmann und Burmeister GbR", "HOFFMANN-UND-BURMEISTER-GBR" }, { 0x00011B, "Unizone Technologies, Inc.", "UNIZONE-TECHNOLOGIES" }, { 0x00011C, "Universal Talkware Corporation", "UNIVERSAL-TALKWARE" }, { 0x00011D, "Centillium Communications", "CENTILLIUM-COMMUNICATION" }, { 0x00011E, "Precidia Technologies, Inc.", "PRECIDIA-TECHNOLOGIES" }, { 0x00011F, "RC Networks, Inc.", "RC-NETWORKS" }, { 0x000120, "OSCILLOQUARTZ S.A.", "OSCILLOQUARTZ" }, { 0x000121, "Watchguard Technologies, Inc.", "WATCHGUARD-TECHNOLOGIES" }, { 0x000122, "Trend Communications, Ltd.", "TREND-COMMUNICATION" }, { 0x000123, "DIGITAL ELECTRONICS CORP.", "DIGITAL-ELECTRONICS" }, { 0x000124, "Acer Incorporated", "ACER-INCORPORATED" }, { 0x000125, "YAESU MUSEN CO., LTD.", "YAESU-MUSEN" }, { 0x000126, "PAC Labs", "PAC-LABS" }, { 0x000127, "OPEN Networks Pty Ltd", "OPEN-NETWORKS-PTY" }, { 0x000128, "EnjoyWeb, Inc.", "ENJOYWEB" }, { 0x000129, "DFI Inc.", "DFI" }, { 0x00012A, "Telematica Sistems Inteligente", "TELEMATICA-SISTEMS-INTELIGENTE" }, { 0x00012B, "TELENET Co., Ltd.", "TELENET" }, { 0x00012C, "Aravox Technologies, Inc.", "ARAVOX-TECHNOLOGIES" }, { 0x00012D, "Komodo Technology", "KOMODO" }, { 0x00012E, "PC Partner Ltd.", "PC-PARTNER" }, { 0x00012F, "Twinhead International Corp", "TWINHEAD" }, { 0x000130, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x000131, "Bosch Security Systems, Inc.", "BOSCH-SECURITY" }, { 0x000132, "Dranetz - BMI", "DRANETZ---BMI" }, { 0x000133, "KYOWA Electronic Instruments C", "KYOWA-INSTRUMENTS-C" }, { 0x000134, "Selectron Systems AG", "SELECTRON" }, { 0x000135, "KDC Corp.", "KDC" }, { 0x000136, "CyberTAN Technology, Inc.", "CYBERTAN" }, { 0x000137, "IT Farm Corporation", "IT-FARM" }, { 0x000138, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0x000139, "Point Multimedia Systems", "POINT-MULTIMEDIA" }, { 0x00013A, "SHELCAD COMMUNICATIONS, LTD.", "SHELCAD-COMMUNICATION" }, { 0x00013B, "BNA SYSTEMS", "BNA" }, { 0x00013C, "TIW SYSTEMS", "TIW" }, { 0x00013D, "RiscStation Ltd.", "RISCSTATION" }, { 0x00013E, "Ascom Tateco AB", "ASCOM-TATECO-AB" }, { 0x00013F, "Neighbor World Co., Ltd.", "NEIGHBOR-WORLD" }, { 0x000140, "Sendtek Corporation", "SENDTEK" }, { 0x000141, "CABLE PRINT", "CABLE-PRINT" }, { 0x000142, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000143, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000144, "EMC Corporation", "EMC" }, { 0x000145, "WINSYSTEMS, INC.", "WINSYSTEMS" }, { 0x000146, "Tesco Controls, Inc.", "TESCO-CONTROLS" }, { 0x000147, "Zhone Technologies", "ZHONE-TECHNOLOGIES" }, { 0x000148, "X-traWeb Inc.", "X-TRAWEB" }, { 0x000149, "T.D.T. Transfer Data Test GmbH", "T-D-T-TRANSFER-DATA-TEST" }, { 0x00014A, "Sony Corporation", "SONY" }, { 0x00014B, "Ennovate Networks, Inc.", "ENNOVATE-NETWORKS" }, { 0x00014C, "Berkeley Process Control", "BERKELEY-PROCESS-CONTROL" }, { 0x00014D, "Shin Kin Enterprises Co., Ltd", "SHIN-KIN-ENTERPRISES" }, { 0x00014E, "WIN Enterprises, Inc.", "WIN-ENTERPRISES" }, { 0x00014F, "ADTRAN INC", "ADTRAN" }, { 0x000150, "GILAT COMMUNICATIONS, LTD.", "GILAT-COMMUNICATION" }, { 0x000151, "Ensemble Communications", "ENSEMBLE-COMMUNICATION" }, { 0x000152, "CHROMATEK INC.", "CHROMATEK" }, { 0x000153, "ARCHTEK TELECOM CORPORATION", "ARCHTEK-TELECOM" }, { 0x000154, "G3M Corporation", "G3M" }, { 0x000155, "Promise Technology, Inc.", "PROMISE" }, { 0x000156, "FIREWIREDIRECT.COM, INC.", "FIREWIREDIRECT-COM" }, { 0x000157, "SYSWAVE CO., LTD", "SYSWAVE" }, { 0x000158, "Electro Industries/Gauge Tech", "ELECTRO-INDUSTRIES/GAUGE-TECH" }, { 0x000159, "S1 Corporation", "S1" }, { 0x00015A, "Digital Video Broadcasting", "DIGITAL-VIDEO-BROADCASTING" }, { 0x00015B, "ITALTEL S.p.A/RF-UP-I", "ITALTEL-S-P-A/RF-UP-I" }, { 0x00015C, "CADANT INC.", "CADANT" }, { 0x00015D, "Oracle Corporation", "ORACLE" }, { 0x00015E, "BEST TECHNOLOGY CO., LTD.", "BEST" }, { 0x00015F, "DIGITAL DESIGN GmbH", "DIGITAL-DESIGN" }, { 0x000160, "ELMEX Co., LTD.", "ELMEX" }, { 0x000161, "Meta Machine Technology", "META-MACHINE" }, { 0x000162, "Cygnet Technologies, Inc.", "CYGNET-TECHNOLOGIES" }, { 0x000163, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000164, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000165, "AirSwitch Corporation", "AIRSWITCH" }, { 0x000166, "TC GROUP A/S", "TC-GROUP-A/S" }, { 0x000167, "HIOKI E.E. CORPORATION", "HIOKI-E-E" }, { 0x000168, "VITANA CORPORATION", "VITANA" }, { 0x000169, "Celestix Networks Pte Ltd.", "CELESTIX-NETWORKS-PTE" }, { 0x00016A, "ALITEC", "ALITEC" }, { 0x00016B, "LightChip, Inc.", "LIGHTCHIP" }, { 0x00016C, "FOXCONN", "FOXCONN" }, { 0x00016D, "CarrierComm Inc.", "CARRIERCOMM" }, { 0x00016E, "Conklin Corporation", "CONKLIN" }, { 0x00016F, "Inkel Corp.", "INKEL" }, { 0x000170, "ESE Embedded System Engineer'g", "ESE-EMBEDDED-SYSTEM-ENGINEER-G" }, { 0x000171, "Allied Data Technologies", "ALLIED-DATA-TECHNOLOGIES" }, { 0x000172, "TechnoLand Co., LTD.", "TECHNOLAND" }, { 0x000173, "AMCC", "AMCC" }, { 0x000174, "CyberOptics Corporation", "CYBEROPTICS" }, { 0x000175, "Radiant Communications Corp.", "RADIANT-COMMUNICATION" }, { 0x000176, "Orient Silver Enterprises", "ORIENT-SILVER-ENTERPRISES" }, { 0x000177, "EDSL", "EDSL" }, { 0x000178, "MARGI Systems, Inc.", "MARGI" }, { 0x000179, "WIRELESS TECHNOLOGY, INC.", "WIRELESS" }, { 0x00017A, "Chengdu Maipu Electric Industrial Co., Ltd.", "CHENGDU-MAIPU-ELECTRIC-INDUSTRIAL" }, { 0x00017B, "Heidelberger Druckmaschinen AG", "HEIDELBERGER-DRUCKMASCHINEN" }, { 0x00017C, "AG-E GmbH", "-E" }, { 0x00017D, "ThermoQuest", "THERMOQUEST" }, { 0x00017E, "ADTEK System Science Co., Ltd.", "ADTEK-SYSTEM-SCIENCE" }, { 0x00017F, "Experience Music Project", "EXPERIENCE-MUSIC-PROJECT" }, { 0x000180, "AOpen, Inc.", "AOPEN" }, { 0x000181, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000182, "DICA TECHNOLOGIES AG", "DICA-TECHNOLOGIES" }, { 0x000183, "ANITE TELECOMS", "ANITE-TELECOMS" }, { 0x000184, "SIEB & MEYER AG", "SIEB-MEYER" }, { 0x000185, "Hitachi Aloka Medical, Ltd.", "HITACHI-ALOKA-MEDICAL" }, { 0x000186, "Uwe Disch", "UWE-DISCH" }, { 0x000187, "I2SE GmbH", "I2SE" }, { 0x000188, "LXCO Technologies ag", "LXCO-TECHNOLOGIES" }, { 0x000189, "Refraction Technology, Inc.", "REFRACTION" }, { 0x00018A, "ROI COMPUTER AG", "ROI" }, { 0x00018B, "NetLinks Co., Ltd.", "NETLINKS" }, { 0x00018C, "Mega Vision", "MEGA-VISION" }, { 0x00018D, "AudeSi Technologies", "AUDESI-TECHNOLOGIES" }, { 0x00018E, "Logitec Corporation", "LOGITEC" }, { 0x00018F, "Kenetec, Inc.", "KENETEC" }, { 0x000190, "SMK-M", "SMK-M" }, { 0x000191, "SYRED Data Systems", "SYRED-DATA" }, { 0x000192, "Texas Digital Systems", "TEXAS-DIGITAL" }, { 0x000193, "Hanbyul Telecom Co., Ltd.", "HANBYUL-TELECOM" }, { 0x000194, "Capital Equipment Corporation", "CAPITAL-EQUIPMENT" }, { 0x000195, "Sena Technologies, Inc.", "SENA-TECHNOLOGIES" }, { 0x000196, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000197, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000198, "Darim Vision", "DARIM-VISION" }, { 0x000199, "HeiSei Electronics", "HEISEI-ELECTRONICS" }, { 0x00019A, "LEUNIG GmbH", "LEUNIG" }, { 0x00019B, "Kyoto Microcomputer Co., Ltd.", "KYOTO-MICROCOMPUTER" }, { 0x00019C, "JDS Uniphase Inc.", "JDS-UNIPHASE" }, { 0x00019D, "E-Control Systems, Inc.", "E-CONTROL" }, { 0x00019E, "ESS Technology, Inc.", "ESS" }, { 0x00019F, "ReadyNet", "READYNET" }, { 0x0001A0, "Infinilink Corporation", "INFINILINK" }, { 0x0001A1, "Mag-Tek, Inc.", "MAG-TEK" }, { 0x0001A2, "Logical Co., Ltd.", "LOGICAL" }, { 0x0001A3, "GENESYS LOGIC, INC.", "GENESYS-LOGIC" }, { 0x0001A4, "Microlink Corporation", "MICROLINK" }, { 0x0001A5, "Nextcomm, Inc.", "NEXTCOMM" }, { 0x0001A6, "Scientific-Atlanta Arcodan A/S", "SCIENTIFIC-ATLANTA-ARCODAN-A/S" }, { 0x0001A7, "UNEX TECHNOLOGY CORPORATION", "UNEX" }, { 0x0001A8, "Welltech Computer Co., Ltd.", "WELLTECH" }, { 0x0001A9, "BMW AG", "BMW" }, { 0x0001AA, "Airspan Communications, Ltd.", "AIRSPAN-COMMUNICATION" }, { 0x0001AB, "Main Street Networks", "MAIN-STREET-NETWORKS" }, { 0x0001AC, "Sitara Networks, Inc.", "SITARA-NETWORKS" }, { 0x0001AD, "Coach Master International d.b.a. CMI Worldwide, Inc.", "COACH-MASTER-D-B-A-CMI-WORLDWIDE" }, { 0x0001AE, "Trex Enterprises", "TREX-ENTERPRISES" }, { 0x0001AF, "Emerson Network Power", "EMERSON-NETWORK-POWER" }, { 0x0001B0, "Fulltek Technology Co., Ltd.", "FULLTEK" }, { 0x0001B1, "General Bandwidth", "GENERAL-BANDWIDTH" }, { 0x0001B2, "Digital Processing Systems, Inc.", "DIGITAL-PROCESSING" }, { 0x0001B3, "Precision Electronic Manufacturing", "PRECISION-MANUFACTURING" }, { 0x0001B4, "Wayport, Inc.", "WAYPORT" }, { 0x0001B5, "Turin Networks, Inc.", "TURIN-NETWORKS" }, { 0x0001B6, "SAEJIN T&M Co., Ltd.", "SAEJIN-T-M" }, { 0x0001B7, "Centos, Inc.", "CENTOS" }, { 0x0001B8, "Netsensity, Inc.", "NETSENSITY" }, { 0x0001B9, "SKF Condition Monitoring", "SKF-CONDITION-MONITORING" }, { 0x0001BA, "IC-Net, Inc.", "IC-NET" }, { 0x0001BB, "Frequentis", "FREQUENTIS" }, { 0x0001BC, "Brains Corporation", "BRAINS" }, { 0x0001BD, "Peterson Electro-Musical Products, Inc.", "PETERSON-ELECTRO-MUSICAL-PRODUCTS" }, { 0x0001BE, "Gigalink Co., Ltd.", "GIGALINK" }, { 0x0001BF, "Teleforce Co., Ltd.", "TELEFORCE" }, { 0x0001C0, "CompuLab, Ltd.", "COMPULAB" }, { 0x0001C1, "Vitesse Semiconductor Corporation", "VITESSE-SEMICONDUCTOR" }, { 0x0001C2, "ARK Research Corp.", "ARK-RESEARCH" }, { 0x0001C3, "Acromag, Inc.", "ACROMAG" }, { 0x0001C4, "NeoWave, Inc.", "NEOWAVE" }, { 0x0001C5, "Simpler Networks", "SIMPLER-NETWORKS" }, { 0x0001C6, "Quarry Technologies", "QUARRY-TECHNOLOGIES" }, { 0x0001C7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0001C8, "THOMAS CONRAD CORP.", "THOMAS-CONRAD" }, { 0x0001C8, "CONRAD CORP.", "CONRAD" }, { 0x0001C9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0001CA, "Geocast Network Systems, Inc.", "GEOCAST-NETWORK" }, { 0x0001CB, "EVR", "EVR" }, { 0x0001CC, "Japan Total Design Communication Co., Ltd.", "JAPAN-TOTAL-DESIGN-COMMUNICATION" }, { 0x0001CD, "ARtem", "ARTEM" }, { 0x0001CE, "Custom Micro Products, Ltd.", "CUSTOM-MICRO-PRODUCTS" }, { 0x0001CF, "Alpha Data Parallel Systems, Ltd.", "ALPHA-DATA-PARALLEL" }, { 0x0001D0, "VitalPoint, Inc.", "VITALPOINT" }, { 0x0001D1, "CoNet Communications, Inc.", "CONET-COMMUNICATION" }, { 0x0001D2, "inXtron, Inc.", "INXTRON" }, { 0x0001D3, "PAXCOMM, Inc.", "PAXCOMM" }, { 0x0001D4, "Leisure Time, Inc.", "LEISURE-TIME" }, { 0x0001D5, "HAEDONG INFO & COMM CO., LTD", "HAEDONG-INFO-COMM" }, { 0x0001D6, "manroland AG", "MANROLAND" }, { 0x0001D7, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x0001D8, "Teltronics, Inc.", "TELTRONICS" }, { 0x0001D9, "Sigma, Inc.", "SIGMA" }, { 0x0001DA, "WINCOMM Corporation", "WINCOMM" }, { 0x0001DB, "Freecom Technologies GmbH", "FREECOM-TECHNOLOGIES" }, { 0x0001DC, "Activetelco", "ACTIVETELCO" }, { 0x0001DD, "Avail Networks", "AVAIL-NETWORKS" }, { 0x0001DE, "Trango Systems, Inc.", "TRANGO" }, { 0x0001DF, "ISDN Communications, Ltd.", "ISDN-COMMUNICATION" }, { 0x0001E0, "Fast Systems, Inc.", "FAST" }, { 0x0001E1, "Kinpo Electronics, Inc.", "KINPO-ELECTRONICS" }, { 0x0001E2, "Ando Electric Corporation", "ANDO-ELECTRIC" }, { 0x0001E3, "Siemens AG", "SIEMENS" }, { 0x0001E4, "Sitera, Inc.", "SITERA" }, { 0x0001E5, "Supernet, Inc.", "SUPERNET" }, { 0x0001E6, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0001E7, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0001E8, "Force10 Networks, Inc.", "FORCE10-NETWORKS" }, { 0x0001E9, "Litton Marine Systems B.V.", "LITTON-MARINE" }, { 0x0001EA, "Cirilium Corp.", "CIRILIUM" }, { 0x0001EB, "C-COM Corporation", "C-COM" }, { 0x0001EC, "Ericsson Group", "ERICSSON-GROUP" }, { 0x0001ED, "SETA Corp.", "SETA" }, { 0x0001EE, "Comtrol Europe, Ltd.", "COMTROL-EUROPE" }, { 0x0001EF, "Camtel Technology Corp.", "CAMTEL" }, { 0x0001F0, "Tridium, Inc.", "TRIDIUM" }, { 0x0001F1, "Innovative Concepts, Inc.", "INNOVATIVE-CONCEPTS" }, { 0x0001F2, "Mark of the Unicorn, Inc.", "MARK-OF-THE-UNICORN" }, { 0x0001F3, "QPS, Inc.", "QPS" }, { 0x0001F4, "Enterasys Networks", "ENTERASYS-NETWORKS" }, { 0x0001F5, "ERIM S.A.", "ERIM" }, { 0x0001F6, "Association of Musical Electronics Industry", "ASSOCIATION-OF-MUSICAL-ELECTRONICS-INDUSTRY" }, { 0x0001F7, "Image Display Systems, Inc.", "IMAGE-DISPLAY" }, { 0x0001F8, "Texio Technology Corporation", "TEXIO" }, { 0x0001F9, "TeraGlobal Communications Corp.", "TERAGLOBAL-COMMUNICATION" }, { 0x0001FA, "HOROSCAS", "HOROSCAS" }, { 0x0001FB, "DoTop Technology, Inc.", "DOTOP" }, { 0x0001FC, "Keyence Corporation", "KEYENCE" }, { 0x0001FD, "Digital Voice Systems, Inc.", "DIGITAL-VOICE" }, { 0x0001FE, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x0001FF, "Data Direct Networks, Inc.", "DATA-DIRECT-NETWORKS" }, { 0x000200, "Net & Sys Co., Ltd.", "NET-SYS" }, { 0x000201, "IFM Electronic gmbh", "IFM" }, { 0x000202, "Amino Communications, Ltd.", "AMINO-COMMUNICATION" }, { 0x000203, "Woonsang Telecom, Inc.", "WOONSANG-TELECOM" }, { 0x000204, "Bodmann Industries Elektronik GmbH", "BODMANN-INDUSTRIES-ELEKTRONIK" }, { 0x000205, "Hitachi Denshi, Ltd.", "HITACHI-DENSHI" }, { 0x000206, "Telital R&D Denmark A/S", "TELITAL-R-D-DENMARK-A/S" }, { 0x000207, "VisionGlobal Network Corp.", "VISIONGLOBAL-NETWORK" }, { 0x000208, "Unify Networks, Inc.", "UNIFY-NETWORKS" }, { 0x000209, "Shenzhen SED Information Technology Co., Ltd.", "SHENZHEN-SED-INFORMATION" }, { 0x00020A, "Gefran Spa", "GEFRAN-SPA" }, { 0x00020B, "Native Networks, Inc.", "NATIVE-NETWORKS" }, { 0x00020C, "Metro-Optix", "METRO-OPTIX" }, { 0x00020D, "Micronpc.com", "MICRONPC-COM" }, { 0x00020E, "ECI Telecom, Ltd", "ECI-TELECOM" }, { 0x00020F, "AATR", "AATR" }, { 0x000210, "Fenecom", "FENECOM" }, { 0x000211, "Nature Worldwide Technology Corp.", "NATURE-WORLDWIDE" }, { 0x000212, "SierraCom", "SIERRACOM" }, { 0x000213, "S.D.E.L.", "S-D-E-L" }, { 0x000214, "DTVRO", "DTVRO" }, { 0x000215, "Cotas Computer Technology A/B", "COTAS-A/B" }, { 0x000216, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000217, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000218, "Advanced Scientific Corp", "ADVANCED-SCIENTIFIC" }, { 0x000219, "Paralon Technologies", "PARALON-TECHNOLOGIES" }, { 0x00021A, "Zuma Networks", "ZUMA-NETWORKS" }, { 0x00021B, "Kollmorgen-Servotronix", "KOLLMORGEN-SERVOTRONIX" }, { 0x00021C, "Network Elements, Inc.", "NETWORK-ELEMENTS" }, { 0x00021D, "Data General Communication Ltd.", "DATA-GENERAL-COMMUNICATION" }, { 0x00021E, "SIMTEL S.R.L.", "SIMTEL-S-R-L" }, { 0x00021F, "Aculab PLC", "ACULAB-PLC" }, { 0x000220, "CANON FINETECH INC.", "CANON-FINETECH" }, { 0x000221, "DSP Application, Ltd.", "DSP-APPLICATION" }, { 0x000222, "Chromisys, Inc.", "CHROMISYS" }, { 0x000223, "ClickTV", "CLICKTV" }, { 0x000224, "C-COR", "C-COR" }, { 0x000225, "One Stop Systems", "ONE-STOP" }, { 0x000226, "XESystems, Inc.", "XESYSTEMS" }, { 0x000227, "ESD Electronic System Design GmbH", "ESD-SYSTEM-DESIGN" }, { 0x000228, "Necsom, Ltd.", "NECSOM" }, { 0x000229, "Adtec Corporation", "ADTEC" }, { 0x00022A, "Asound Electronic", "ASOUND" }, { 0x00022B, "SAXA, Inc.", "SAXA" }, { 0x00022C, "ABB Bomem, Inc.", "ABB-BOMEM" }, { 0x00022D, "Agere Systems", "AGERE" }, { 0x00022E, "TEAC Corp. R& D", "TEAC-R-D" }, { 0x00022F, "P-Cube, Ltd.", "P-CUBE" }, { 0x000230, "Intersoft Electronics", "INTERSOFT-ELECTRONICS" }, { 0x000231, "Ingersoll-Rand", "INGERSOLL-RAND" }, { 0x000232, "Avision, Inc.", "AVISION" }, { 0x000233, "Mantra Communications, Inc.", "MANTRA-COMMUNICATION" }, { 0x000234, "Imperial Technology, Inc.", "IMPERIAL" }, { 0x000235, "Paragon Networks International", "PARAGON-NETWORKS" }, { 0x000236, "INIT GmbH", "INIT" }, { 0x000237, "Cosmo Research Corp.", "COSMO-RESEARCH" }, { 0x000238, "Serome Technology, Inc.", "SEROME" }, { 0x000239, "Visicom", "VISICOM" }, { 0x00023A, "ZSK Stickmaschinen GmbH", "ZSK-STICKMASCHINEN" }, { 0x00023B, "Ericsson", "ERICSSON" }, { 0x00023C, "Creative Technology, Ltd.", "CREATIVE" }, { 0x00023D, "Cisco Systems, Inc.", "CISCO" }, { 0x00023E, "Selta Telematica S.p.a", "SELTA-TELEMATICA-S-P-A" }, { 0x00023F, "Compal Electronics, Inc.", "COMPAL-ELECTRONICS" }, { 0x000240, "Seedek Co., Ltd.", "SEEDEK" }, { 0x000241, "Amer.com", "AMER-COM" }, { 0x000242, "Videoframe Systems", "VIDEOFRAME" }, { 0x000243, "Raysis Co., Ltd.", "RAYSIS" }, { 0x000244, "SURECOM Technology Co.", "SURECOM" }, { 0x000245, "Lampus Co, Ltd.", "LAMPUS" }, { 0x000246, "All-Win Tech Co., Ltd.", "ALL-WIN-TECH" }, { 0x000247, "Great Dragon Information Technology (Group) Co., Ltd.", "GREAT-DRAGON-INFORMATION-GROUP" }, { 0x000248, "Pilz GmbH & Co.", "PILZ" }, { 0x000249, "Aviv Infocom Co, Ltd.", "AVIV-INFOCOM" }, { 0x00024A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00024B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00024C, "SiByte, Inc.", "SIBYTE" }, { 0x00024D, "Mannesman Dematic Colby Pty. Ltd.", "MANNESMAN-DEMATIC-COLBY-PTY" }, { 0x00024E, "Datacard Group", "DATACARD-GROUP" }, { 0x00024F, "IPM Datacom S.R.L.", "IPM-DATACOM-S-R-L" }, { 0x000250, "Geyser Networks, Inc.", "GEYSER-NETWORKS" }, { 0x000251, "Soma Networks, Inc.", "SOMA-NETWORKS" }, { 0x000252, "Carrier Corporation", "CARRIER" }, { 0x000253, "Televideo, Inc.", "TELEVIDEO" }, { 0x000254, "WorldGate", "WORLDGATE" }, { 0x000255, "IBM Corp", "IBM" }, { 0x000256, "Alpha Processor, Inc.", "ALPHA-PROCESSOR" }, { 0x000257, "Microcom Corp.", "MICROCOM" }, { 0x000258, "Flying Packets Communications", "FLYING-PACKETS-COMMUNICATION" }, { 0x000259, "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group", "TSANN-KUEN-CHINA-SHANGHAI-IT-GROUP" }, { 0x00025A, "Catena Networks", "CATENA-NETWORKS" }, { 0x00025B, "Cambridge Silicon Radio", "CAMBRIDGE-SILICON-RADIO" }, { 0x00025C, "SCI Systems (Kunshan) Co., Ltd.", "SCI-KUNSHAN" }, { 0x00025D, "Calix Networks", "CALIX-NETWORKS" }, { 0x00025E, "High Technology Ltd", "HIGH" }, { 0x00025F, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000260, "Accordion Networks, Inc.", "ACCORDION-NETWORKS" }, { 0x000261, "Tilgin AB", "TILGIN-AB" }, { 0x000262, "Soyo Group Soyo Com Tech Co., Ltd", "SOYO-GROUP-SOYO-COM-TECH" }, { 0x000263, "UPS Manufacturing SRL", "UPS-MANUFACTURING-SRL" }, { 0x000264, "AudioRamp.com", "AUDIORAMP-COM" }, { 0x000265, "Virditech Co. Ltd.", "VIRDITECH" }, { 0x000266, "Thermalogic Corporation", "THERMALOGIC" }, { 0x000267, "NODE RUNNER, INC.", "NODE-RUNNER" }, { 0x000268, "Harris Government Communications", "HARRIS-GOVERNMENT-COMMUNICATION" }, { 0x000269, "Nadatel Co., Ltd", "NADATEL" }, { 0x00026A, "Cocess Telecom Co., Ltd.", "COCESS-TELECOM" }, { 0x00026B, "BCM Computers Co., Ltd.", "BCM-COMPUTERS" }, { 0x00026C, "Philips CFT", "PHILIPS-CFT" }, { 0x00026D, "Adept Telecom", "ADEPT-TELECOM" }, { 0x00026E, "NeGeN Access, Inc.", "NEGEN-ACCESS" }, { 0x00026F, "Senao International Co., Ltd.", "SENAO" }, { 0x000270, "Crewave Co., Ltd.", "CREWAVE" }, { 0x000271, "Zhone Technologies", "ZHONE-TECHNOLOGIES" }, { 0x000272, "CC&C Technologies, Inc.", "CC-C-TECHNOLOGIES" }, { 0x000273, "Coriolis Networks", "CORIOLIS-NETWORKS" }, { 0x000274, "Tommy Technologies Corp.", "TOMMY-TECHNOLOGIES" }, { 0x000275, "SMART Technologies, Inc.", "SMART-TECHNOLOGIES" }, { 0x000276, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0x000277, "Cash Systemes Industrie", "CASH-SYSTEMES-INDUSTRIE" }, { 0x000278, "Samsung Electro-Mechanics Co., Ltd.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x000279, "Control Applications, Ltd.", "CONTROL-APPLICATIONS" }, { 0x00027A, "IOI Technology Corporation", "IOI" }, { 0x00027B, "Amplify Net, Inc.", "AMPLIFY-NET" }, { 0x00027C, "Trilithic, Inc.", "TRILITHIC" }, { 0x00027D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00027E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00027F, "ask-technologies.com", "ASK-TECHNOLOGIES-COM" }, { 0x000280, "Mu Net, Inc.", "MU-NET" }, { 0x000281, "Madge Ltd.", "MADGE" }, { 0x000282, "ViaClix, Inc.", "VIACLIX" }, { 0x000283, "Spectrum Controls, Inc.", "SPECTRUM-CONTROLS" }, { 0x000284, "AREVA T&D", "AREVA-T-D" }, { 0x000285, "Riverstone Networks", "RIVERSTONE-NETWORKS" }, { 0x000286, "Occam Networks", "OCCAM-NETWORKS" }, { 0x000287, "Adapcom", "ADAPCOM" }, { 0x000288, "GLOBAL VILLAGE COMMUNICATION", "GLOBAL-VILLAGE-COMMUNICATION" }, { 0x000289, "DNE Technologies", "DNE-TECHNOLOGIES" }, { 0x00028A, "Ambit Microsystems Corporation", "AMBIT-MICROSYSTEMS" }, { 0x00028B, "VDSL Systems OY", "VDSL-OY" }, { 0x00028C, "Micrel-Synergy Semiconductor", "MICREL-SYNERGY-SEMICONDUCTOR" }, { 0x00028D, "Movita Technologies, Inc.", "MOVITA-TECHNOLOGIES" }, { 0x00028E, "Rapid 5 Networks, Inc.", "RAPID-5-NETWORKS" }, { 0x00028F, "Globetek, Inc.", "GLOBETEK" }, { 0x000290, "Woorigisool, Inc.", "WOORIGISOOL" }, { 0x000291, "Open Network Co., Ltd.", "OPEN-NETWORK" }, { 0x000292, "Logic Innovations, Inc.", "LOGIC-INNOVATIONS" }, { 0x000293, "Solid Data Systems", "SOLID-DATA" }, { 0x000294, "Tokyo Sokushin Co., Ltd.", "TOKYO-SOKUSHIN" }, { 0x000295, "IP.Access Limited", "IP-ACCESS" }, { 0x000296, "Lectron Co,. Ltd.", "LECTRON" }, { 0x000297, "C-COR.net", "C-COR-NET" }, { 0x000298, "Broadframe Corporation", "BROADFRAME" }, { 0x000299, "Apex, Inc.", "APEX" }, { 0x00029A, "Storage Apps", "STORAGE-APPS" }, { 0x00029B, "Kreatel Communications AB", "KREATEL-COMMUNICATION-AB" }, { 0x00029C, "3COM", "3COM" }, { 0x00029D, "Merix Corp.", "MERIX" }, { 0x00029E, "Information Equipment Co., Ltd.", "INFORMATION-EQUIPMENT" }, { 0x00029F, "L-3 Communication Aviation Recorders", "L-3-COMMUNICATION-AVIATION-RECORDERS" }, { 0x0002A0, "Flatstack Ltd.", "FLATSTACK" }, { 0x0002A1, "World Wide Packets", "WORLD-WIDE-PACKETS" }, { 0x0002A2, "Hilscher GmbH", "HILSCHER" }, { 0x0002A3, "ABB Switzerland Ltd, Power Systems", "ABB-SWITZERLAND-POWER" }, { 0x0002A4, "AddPac Technology Co., Ltd.", "ADDPAC" }, { 0x0002A5, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0002A6, "Effinet Systems Co., Ltd.", "EFFINET" }, { 0x0002A7, "Vivace Networks", "VIVACE-NETWORKS" }, { 0x0002A8, "Air Link Technology", "AIR-LINK" }, { 0x0002A9, "RACOM, s.r.o.", "RACOM-S-R-O" }, { 0x0002AA, "PLcom Co., Ltd.", "PLCOM" }, { 0x0002AB, "CTC Union Technologies Co., Ltd.", "CTC-UNION-TECHNOLOGIES" }, { 0x0002AC, "3PAR data", "3PAR-DATA" }, { 0x0002AD, "HOYA Corporation", "HOYA" }, { 0x0002AE, "Scannex Electronics Ltd.", "SCANNEX-ELECTRONICS" }, { 0x0002AF, "TeleCruz Technology, Inc.", "TELECRUZ" }, { 0x0002B0, "Hokubu Communication & Industrial Co., Ltd.", "HOKUBU-COMMUNICATION-INDUSTRIAL" }, { 0x0002B1, "Anritsu, Ltd.", "ANRITSU" }, { 0x0002B2, "Cablevision", "CABLEVISION" }, { 0x0002B3, "Intel Corporation", "INTEL" }, { 0x0002B4, "DAPHNE", "DAPHNE" }, { 0x0002B5, "Avnet, Inc.", "AVNET" }, { 0x0002B6, "Acrosser Technology Co., Ltd.", "ACROSSER" }, { 0x0002B7, "Watanabe Electric Industry Co., Ltd.", "WATANABE-ELECTRIC-INDUSTRY" }, { 0x0002B8, "WHI KONSULT AB", "WHI-KONSULT-AB" }, { 0x0002B9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0002BA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0002BB, "Continuous Computing Corp", "CONTINUOUS-COMPUTING" }, { 0x0002BC, "LVL 7 Systems, Inc.", "LVL-7" }, { 0x0002BD, "Bionet Co., Ltd.", "BIONET" }, { 0x0002BE, "Totsu Engineering, Inc.", "TOTSU-ENGINEERING" }, { 0x0002BF, "dotRocket, Inc.", "DOTROCKET" }, { 0x0002C0, "Bencent Tzeng Industry Co., Ltd.", "BENCENT-TZENG-INDUSTRY" }, { 0x0002C1, "Innovative Electronic Designs, Inc.", "INNOVATIVE-DESIGNS" }, { 0x0002C2, "Net Vision Telecom", "NET-VISION-TELECOM" }, { 0x0002C3, "Arelnet Ltd.", "ARELNET" }, { 0x0002C4, "Vector International BVBA", "VECTOR-BVBA" }, { 0x0002C5, "Evertz Microsystems Ltd.", "EVERTZ-MICROSYSTEMS" }, { 0x0002C6, "Data Track Technology PLC", "DATA-TRACK-PLC" }, { 0x0002C7, "ALPS ELECTRIC Co., Ltd.", "ALPS-ELECTRIC" }, { 0x0002C8, "Technocom Communications Technology (pte) Ltd", "TECHNOCOM-COMMUNICATION-PTE" }, { 0x0002C9, "Mellanox Technologies", "MELLANOX-TECHNOLOGIES" }, { 0x0002CA, "EndPoints, Inc.", "ENDPOINTS" }, { 0x0002CB, "TriState Ltd.", "TRISTATE" }, { 0x0002CC, "M.C.C.I", "M-C-C-I" }, { 0x0002CD, "TeleDream, Inc.", "TELEDREAM" }, { 0x0002CE, "FoxJet, Inc.", "FOXJET" }, { 0x0002CF, "ZyGate Communications, Inc.", "ZYGATE-COMMUNICATION" }, { 0x0002D0, "Comdial Corporation", "COMDIAL" }, { 0x0002D1, "Vivotek, Inc.", "VIVOTEK" }, { 0x0002D2, "Workstation AG", "WORKSTATION" }, { 0x0002D3, "NetBotz, Inc.", "NETBOTZ" }, { 0x0002D4, "PDA Peripherals, Inc.", "PDA-PERIPHERALS" }, { 0x0002D5, "ACR", "ACR" }, { 0x0002D6, "NICE Systems", "NICE" }, { 0x0002D7, "EMPEG Ltd", "EMPEG" }, { 0x0002D8, "BRECIS Communications Corporation", "BRECIS-COMMUNICATION" }, { 0x0002D9, "Reliable Controls", "RELIABLE-CONTROLS" }, { 0x0002DA, "ExiO Communications, Inc.", "EXIO-COMMUNICATION" }, { 0x0002DB, "NETSEC", "NETSEC" }, { 0x0002DC, "Fujitsu General Limited", "FUJITSU-GENERAL" }, { 0x0002DD, "Bromax Communications, Ltd.", "BROMAX-COMMUNICATION" }, { 0x0002DE, "Astrodesign, Inc.", "ASTRODESIGN" }, { 0x0002DF, "Net Com Systems, Inc.", "NET-COM" }, { 0x0002E0, "ETAS GmbH", "ETAS" }, { 0x0002E1, "Integrated Network Corporation", "INTEGRATED-NETWORK" }, { 0x0002E2, "NDC Infared Engineering", "NDC-INFARED-ENGINEERING" }, { 0x0002E3, "LITE-ON Communications, Inc.", "LITE-ON-COMMUNICATION" }, { 0x0002E4, "JC HYUN Systems, Inc.", "JC-HYUN" }, { 0x0002E5, "Timeware Ltd.", "TIMEWARE" }, { 0x0002E6, "Gould Instrument Systems, Inc.", "GOULD-INSTRUMENT" }, { 0x0002E7, "CAB GmbH & Co KG", "CAB" }, { 0x0002E8, "E.D.&A.", "E-D-A" }, { 0x0002E9, "CS Systemes De Securite - C3S", "CS-SYSTEMES-DE-SECURITE---C3S" }, { 0x0002EA, "Focus Enhancements", "FOCUS-ENHANCEMENTS" }, { 0x0002EB, "Pico Communications", "PICO-COMMUNICATION" }, { 0x0002EC, "Maschoff Design Engineering", "MASCHOFF-DESIGN-ENGINEERING" }, { 0x0002ED, "DXO Telecom Co., Ltd.", "DXO-TELECOM" }, { 0x0002EE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0002EF, "CCC Network Systems Group Ltd.", "CCC-NETWORK-GROUP" }, { 0x0002F0, "AME Optimedia Technology Co., Ltd.", "AME-OPTIMEDIA" }, { 0x0002F1, "Pinetron Co., Ltd.", "PINETRON" }, { 0x0002F2, "eDevice, Inc.", "EDEVICE" }, { 0x0002F3, "Media Serve Co., Ltd.", "MEDIA-SERVE" }, { 0x0002F4, "PCTEL, Inc.", "PCTEL" }, { 0x0002F5, "VIVE Synergies, Inc.", "VIVE-SYNERGIES" }, { 0x0002F6, "Equipe Communications", "EQUIPE-COMMUNICATION" }, { 0x0002F7, "ARM", "ARM" }, { 0x0002F8, "SEAKR Engineering, Inc.", "SEAKR-ENGINEERING" }, { 0x0002F9, "MIMOS Berhad", "MIMOS-BERHAD" }, { 0x0002FA, "DX Antenna Co., Ltd.", "DX-ANTENNA" }, { 0x0002FB, "Baumuller Aulugen-Systemtechnik GmbH", "BAUMULLER-AULUGEN-SYSTEMTECHNIK" }, { 0x0002FC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0002FD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0002FE, "Viditec, Inc.", "VIDITEC" }, { 0x0002FF, "Handan BroadInfoCom", "HANDAN-BROADINFOCOM" }, { 0x000300, "Barracuda Networks, Inc.", "BARRACUDA-NETWORKS" }, { 0x000301, "Avantas Networks Corporation", "AVANTAS-NETWORKS" }, { 0x000302, "Charles Industries, Ltd.", "CHARLES-INDUSTRIES" }, { 0x000303, "JAMA Electronics Co., Ltd.", "JAMA-ELECTRONICS" }, { 0x000304, "Pacific Broadband Communications", "PACIFIC-BROADBAND-COMMUNICATION" }, { 0x000305, "MSC Vertriebs GmbH", "MSC-VERTRIEBS" }, { 0x000306, "Fusion In Tech Co., Ltd.", "FUSION-IN-TECH" }, { 0x000307, "Secure Works, Inc.", "SECURE-WORKS" }, { 0x000308, "AM Communications, Inc.", "AM-COMMUNICATION" }, { 0x000309, "Texcel Technology PLC", "TEXCEL-PLC" }, { 0x00030A, "Argus Technologies", "ARGUS-TECHNOLOGIES" }, { 0x00030B, "Hunter Technology, Inc.", "HUNTER" }, { 0x00030C, "Telesoft Technologies Ltd.", "TELESOFT-TECHNOLOGIES" }, { 0x00030D, "Uniwill Computer Corp.", "UNIWILL" }, { 0x00030E, "Core Communications Co., Ltd.", "CORE-COMMUNICATION" }, { 0x00030F, "Digital China (Shanghai) Networks Ltd.", "DIGITAL-CHINA-SHANGHAI-NETWORKS" }, { 0x000310, "E-Globaledge Corporation", "E-GLOBALEDGE" }, { 0x000311, "Micro Technology Co., Ltd.", "MICRO" }, { 0x000312, "TR-Systemtechnik GmbH", "TR-SYSTEMTECHNIK" }, { 0x000313, "Access Media SPA", "ACCESS-MEDIA-SPA" }, { 0x000314, "Teleware Network Systems", "TELEWARE-NETWORK" }, { 0x000315, "Cidco Incorporated", "CIDCO-INCORPORATED" }, { 0x000316, "Nobell Communications, Inc.", "NOBELL-COMMUNICATION" }, { 0x000317, "Merlin Systems, Inc.", "MERLIN" }, { 0x000318, "Cyras Systems, Inc.", "CYRAS" }, { 0x000319, "Infineon AG", "INFINEON" }, { 0x00031A, "Beijing Broad Telecom Ltd., China", "BEIJING-BROAD-TELECOM-CHINA" }, { 0x00031B, "Cellvision Systems, Inc.", "CELLVISION" }, { 0x00031C, "Svenska Hardvarufabriken AB", "SVENSKA-HARDVARUFABRIKEN-AB" }, { 0x00031D, "Taiwan Commate Computer, Inc.", "TAIWAN-COMMATE" }, { 0x00031E, "Optranet, Inc.", "OPTRANET" }, { 0x00031F, "Condev Ltd.", "CONDEV" }, { 0x000320, "Xpeed, Inc.", "XPEED" }, { 0x000321, "Reco Research Co., Ltd.", "RECO-RESEARCH" }, { 0x000322, "IDIS Co., Ltd.", "IDIS" }, { 0x000323, "Cornet Technology, Inc.", "CORNET" }, { 0x000324, "SANYO Consumer Electronics Co., Ltd.", "SANYO-CONSUMER-ELECTRONICS" }, { 0x000325, "Arima Computer Corp.", "ARIMA" }, { 0x000326, "Iwasaki Information Systems Co., Ltd.", "IWASAKI-INFORMATION" }, { 0x000327, "ACT'L", "ACT-L" }, { 0x000328, "Mace Group, Inc.", "MACE-GROUP" }, { 0x000329, "F3, Inc.", "F3" }, { 0x00032A, "UniData Communication Systems, Inc.", "UNIDATA-COMMUNICATION" }, { 0x00032B, "GAI Datenfunksysteme GmbH", "GAI-DATENFUNKSYSTEME" }, { 0x00032C, "ABB Switzerland Ltd", "ABB-SWITZERLAND" }, { 0x00032D, "IBASE Technology, Inc.", "IBASE" }, { 0x00032E, "Scope Information Management, Ltd.", "SCOPE-INFORMATION-MANAGEMENT" }, { 0x00032F, "Global Sun Technology, Inc.", "GLOBAL-SUN" }, { 0x000330, "Imagenics, Co., Ltd.", "IMAGENICS" }, { 0x000331, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000332, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000333, "Digitel Co., Ltd.", "DIGITEL" }, { 0x000334, "Newport Electronics", "NEWPORT-ELECTRONICS" }, { 0x000335, "Mirae Technology", "MIRAE" }, { 0x000336, "Zetes Technologies", "ZETES-TECHNOLOGIES" }, { 0x000337, "Vaone, Inc.", "VAONE" }, { 0x000338, "Oak Technology", "OAK" }, { 0x000339, "Eurologic Systems, Ltd.", "EUROLOGIC" }, { 0x00033A, "Silicon Wave, Inc.", "SILICON-WAVE" }, { 0x00033B, "TAMI Tech Co., Ltd.", "TAMI-TECH" }, { 0x00033C, "Daiden Co., Ltd.", "DAIDEN" }, { 0x00033D, "ILSHin Lab", "ILSHIN-LAB" }, { 0x00033E, "Tateyama System Laboratory Co., Ltd.", "TATEYAMA-SYSTEM-LABORATORY" }, { 0x00033F, "BigBand Networks, Ltd.", "BIGBAND-NETWORKS" }, { 0x000340, "Floware Wireless Systems, Ltd.", "FLOWARE-WIRELESS" }, { 0x000341, "Axon Digital Design", "AXON-DIGITAL-DESIGN" }, { 0x000342, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000343, "Martin Professional A/S", "MARTIN-PROFESSIONAL-A/S" }, { 0x000344, "Tietech.Co., Ltd.", "TIETECH" }, { 0x000345, "Routrek Networks Corporation", "ROUTREK-NETWORKS" }, { 0x000346, "Hitachi Kokusai Electric, Inc.", "HITACHI-KOKUSAI-ELECTRIC" }, { 0x000347, "Intel Corporation", "INTEL" }, { 0x000348, "Norscan Instruments, Ltd.", "NORSCAN-INSTRUMENTS" }, { 0x000349, "Vidicode Datacommunicatie B.V.", "VIDICODE-DATACOMMUNICATIE" }, { 0x00034A, "RIAS Corporation", "RIAS" }, { 0x00034B, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00034C, "Shanghai DigiVision Technology Co., Ltd.", "SHANGHAI-DIGIVISION" }, { 0x00034D, "Chiaro Networks, Ltd.", "CHIARO-NETWORKS" }, { 0x00034E, "Pos Data Company, Ltd.", "POS-DATA-COMPANY" }, { 0x00034F, "Sur-Gard Security", "SUR-GARD-SECURITY" }, { 0x000350, "BTICINO SPA", "BTICINO-SPA" }, { 0x000351, "Diebold, Inc.", "DIEBOLD" }, { 0x000352, "Colubris Networks", "COLUBRIS-NETWORKS" }, { 0x000353, "Mitac, Inc.", "MITAC" }, { 0x000354, "Fiber Logic Communications", "FIBER-LOGIC-COMMUNICATION" }, { 0x000355, "TeraBeam Internet Systems", "TERABEAM-INTERNET" }, { 0x000356, "Wincor Nixdorf International GmbH", "WINCOR-NIXDORF" }, { 0x000357, "Intervoice-Brite, Inc.", "INTERVOICE-BRITE" }, { 0x000358, "Hanyang Digitech Co., Ltd.", "HANYANG-DIGITECH" }, { 0x000359, "DigitalSis", "DIGITALSIS" }, { 0x00035A, "Photron Limited", "PHOTRON" }, { 0x00035B, "BridgeWave Communications", "BRIDGEWAVE-COMMUNICATION" }, { 0x00035C, "Saint Song Corp.", "SAINT-SONG" }, { 0x00035D, "Bosung Hi-Net Co., Ltd.", "BOSUNG-HI-NET" }, { 0x00035E, "Metropolitan Area Networks, Inc.", "METROPOLITAN-AREA-NETWORKS" }, { 0x00035F, "Prüftechnik Condition Monitoring GmbH & Co. KG", "PRüFTECHNIK-CONDITION-MONITORING" }, { 0x000360, "PAC Interactive Technology, Inc.", "PAC-INTERACTIVE" }, { 0x000361, "Widcomm, Inc.", "WIDCOMM" }, { 0x000362, "Vodtel Communications, Inc.", "VODTEL-COMMUNICATION" }, { 0x000363, "Miraesys Co., Ltd.", "MIRAESYS" }, { 0x000364, "Scenix Semiconductor, Inc.", "SCENIX-SEMICONDUCTOR" }, { 0x000365, "Kira Information & Communications, Ltd.", "KIRA-INFORMATION-COMMUNICATION" }, { 0x000366, "ASM Pacific Technology", "ASM-PACIFIC" }, { 0x000367, "Jasmine Networks, Inc.", "JASMINE-NETWORKS" }, { 0x000368, "Embedone Co., Ltd.", "EMBEDONE" }, { 0x000369, "Nippon Antenna Co., Ltd.", "NIPPON-ANTENNA" }, { 0x00036A, "Mainnet, Ltd.", "MAINNET" }, { 0x00036B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00036C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00036D, "Runtop, Inc.", "RUNTOP" }, { 0x00036E, "Nicon Systems (Pty) Limited", "NICON-PTY" }, { 0x00036F, "Telsey SPA", "TELSEY-SPA" }, { 0x000370, "NXTV, Inc.", "NXTV" }, { 0x000371, "Acomz Networks Corp.", "ACOMZ-NETWORKS" }, { 0x000372, "ULAN", "ULAN" }, { 0x000373, "Aselsan A.S", "ASELSAN-A-S" }, { 0x000374, "Control Microsystems", "CONTROL-MICROSYSTEMS" }, { 0x000375, "NetMedia, Inc.", "NETMEDIA" }, { 0x000376, "Graphtec Technology, Inc.", "GRAPHTEC" }, { 0x000377, "Gigabit Wireless", "GIGABIT-WIRELESS" }, { 0x000378, "HUMAX Co., Ltd.", "HUMAX" }, { 0x000379, "Proscend Communications, Inc.", "PROSCEND-COMMUNICATION" }, { 0x00037A, "Taiyo Yuden Co., Ltd.", "TAIYO-YUDEN" }, { 0x00037B, "IDEC IZUMI Corporation", "IDEC-IZUMI" }, { 0x00037C, "Coax Media", "COAX-MEDIA" }, { 0x00037D, "Stellcom", "STELLCOM" }, { 0x00037E, "PORTech Communications, Inc.", "PORTECH-COMMUNICATION" }, { 0x00037F, "Atheros Communications, Inc.", "ATHEROS-COMMUNICATION" }, { 0x000380, "SSH Communications Security Corp.", "SSH-COMMUNICATION-SECURITY" }, { 0x000381, "Ingenico International", "INGENICO" }, { 0x000382, "A-One Co., Ltd.", "A-ONE" }, { 0x000383, "Metera Networks, Inc.", "METERA-NETWORKS" }, { 0x000384, "AETA", "AETA" }, { 0x000385, "Actelis Networks, Inc.", "ACTELIS-NETWORKS" }, { 0x000386, "Ho Net, Inc.", "HO-NET" }, { 0x000387, "Blaze Network Products", "BLAZE-NETWORK-PRODUCTS" }, { 0x000388, "Fastfame Technology Co., Ltd.", "FASTFAME" }, { 0x000389, "Plantronics", "PLANTRONICS" }, { 0x00038A, "America Online, Inc.", "AMERICA-ONLINE" }, { 0x00038B, "PLUS-ONE I&T, Inc.", "PLUS-ONE-I-T" }, { 0x00038C, "Total Impact", "TOTAL-IMPACT" }, { 0x00038D, "PCS Revenue Control Systems, Inc.", "PCS-REVENUE-CONTROL" }, { 0x00038E, "Atoga Systems, Inc.", "ATOGA" }, { 0x00038F, "Weinschel Corporation", "WEINSCHEL" }, { 0x000390, "Digital Video Communications, Inc.", "DIGITAL-VIDEO-COMMUNICATION" }, { 0x000391, "Advanced Digital Broadcast, Ltd.", "ADVANCED-DIGITAL-BROADCAST" }, { 0x000392, "Hyundai Teletek Co., Ltd.", "HYUNDAI-TELETEK" }, { 0x000393, "Apple", "APPLE" }, { 0x000394, "Connect One", "CONNECT-ONE" }, { 0x000395, "California Amplifier", "CALIFORNIA-AMPLIFIER" }, { 0x000396, "EZ Cast Co., Ltd.", "EZ-CAST" }, { 0x000397, "Watchfront Limited", "WATCHFRONT" }, { 0x000398, "WISI", "WISI" }, { 0x000399, "Dongju Informations & Communications Co., Ltd.", "DONGJU-INFORMATIONS-COMMUNICATION" }, { 0x00039A, "SiConnect", "SICONNECT" }, { 0x00039B, "NetChip Technology, Inc.", "NETCHIP" }, { 0x00039C, "OptiMight Communications, Inc.", "OPTIMIGHT-COMMUNICATION" }, { 0x00039D, "Qisda Corporation", "QISDA" }, { 0x00039E, "Tera System Co., Ltd.", "TERA-SYSTEM" }, { 0x00039F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0003A0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0003A1, "HIPER Information & Communication, Inc.", "HIPER-INFORMATION-COMMUNICATION" }, { 0x0003A2, "Catapult Communications", "CATAPULT-COMMUNICATION" }, { 0x0003A3, "MAVIX, Ltd.", "MAVIX" }, { 0x0003A4, "Imation Corp.", "IMATION" }, { 0x0003A5, "Medea Corporation", "MEDEA" }, { 0x0003A6, "Traxit Technology, Inc.", "TRAXIT" }, { 0x0003A7, "Unixtar Technology, Inc.", "UNIXTAR" }, { 0x0003A8, "IDOT Computers, Inc.", "IDOT-COMPUTERS" }, { 0x0003A9, "AXCENT Media AG", "AXCENT-MEDIA" }, { 0x0003AA, "Watlow", "WATLOW" }, { 0x0003AB, "Bridge Information Systems", "BRIDGE-INFORMATION" }, { 0x0003AC, "Fronius Schweissmaschinen", "FRONIUS-SCHWEISSMASCHINEN" }, { 0x0003AD, "Emerson Energy Systems AB", "EMERSON-ENERGY-AB" }, { 0x0003AE, "Allied Advanced Manufacturing Pte, Ltd.", "ALLIED-ADVANCED-MANUFACTURING-PTE" }, { 0x0003AF, "Paragea Communications", "PARAGEA-COMMUNICATION" }, { 0x0003B0, "Xsense Technology Corp.", "XSENSE" }, { 0x0003B1, "Hospira Inc.", "HOSPIRA" }, { 0x0003B2, "Radware", "RADWARE" }, { 0x0003B3, "IA Link Systems Co., Ltd.", "IA-LINK" }, { 0x0003B4, "Macrotek International Corp.", "MACROTEK" }, { 0x0003B5, "Entra Technology Co.", "ENTRA" }, { 0x0003B6, "QSI Corporation", "QSI" }, { 0x0003B7, "ZACCESS Systems", "ZACCESS" }, { 0x0003B8, "NetKit Solutions, LLC", "NETKIT-SOLUTIONS-LLC" }, { 0x0003B9, "Hualong Telecom Co., Ltd.", "HUALONG-TELECOM" }, { 0x0003BA, "Oracle Corporation", "ORACLE" }, { 0x0003BB, "Signal Communications Limited", "SIGNAL-COMMUNICATION" }, { 0x0003BC, "COT GmbH", "COT" }, { 0x0003BD, "OmniCluster Technologies, Inc.", "OMNICLUSTER-TECHNOLOGIES" }, { 0x0003BE, "Netility", "NETILITY" }, { 0x0003BF, "Centerpoint Broadband Technologies, Inc.", "CENTERPOINT-BROADBAND-TECHNOLOGIES" }, { 0x0003C0, "RFTNC Co., Ltd.", "RFTNC" }, { 0x0003C1, "Packet Dynamics Ltd", "PACKET-DYNAMICS" }, { 0x0003C2, "Solphone K.K.", "SOLPHONE-K-K" }, { 0x0003C3, "Micronik Multimedia", "MICRONIK-MULTIMEDIA" }, { 0x0003C4, "Tomra Systems ASA", "TOMRA-ASA" }, { 0x0003C5, "Mobotix AG", "MOBOTIX" }, { 0x0003C6, "ICUE Systems, Inc.", "ICUE" }, { 0x0003C7, "hopf Elektronik GmbH", "HOPF-ELEKTRONIK" }, { 0x0003C8, "CML Emergency Services", "CML-EMERGENCY-SERVICES" }, { 0x0003C9, "TECOM Co., Ltd.", "TECOM" }, { 0x0003CA, "MTS Systems Corp.", "MTS" }, { 0x0003CB, "Nippon Systems Development Co., Ltd.", "NIPPON-DEVELOPMENT" }, { 0x0003CC, "Momentum Computer, Inc.", "MOMENTUM" }, { 0x0003CD, "Clovertech, Inc.", "CLOVERTECH" }, { 0x0003CE, "ETEN Technologies, Inc.", "ETEN-TECHNOLOGIES" }, { 0x0003CF, "Muxcom, Inc.", "MUXCOM" }, { 0x0003D0, "KOANKEISO Co., Ltd.", "KOANKEISO" }, { 0x0003D1, "Takaya Corporation", "TAKAYA" }, { 0x0003D2, "Crossbeam Systems, Inc.", "CROSSBEAM" }, { 0x0003D3, "Internet Energy Systems, Inc.", "INTERNET-ENERGY" }, { 0x0003D4, "Alloptic, Inc.", "ALLOPTIC" }, { 0x0003D5, "Advanced Communications Co., Ltd.", "ADVANCED-COMMUNICATION" }, { 0x0003D6, "RADVision, Ltd.", "RADVISION" }, { 0x0003D7, "NextNet Wireless, Inc.", "NEXTNET-WIRELESS" }, { 0x0003D8, "iMPath Networks, Inc.", "IMPATH-NETWORKS" }, { 0x0003D9, "Secheron SA", "SECHERON" }, { 0x0003DA, "Takamisawa Cybernetics Co., Ltd.", "TAKAMISAWA-CYBERNETICS" }, { 0x0003DB, "Apogee Electronics Corp.", "APOGEE-ELECTRONICS" }, { 0x0003DC, "Lexar Media, Inc.", "LEXAR-MEDIA" }, { 0x0003DD, "Comark Corp.", "COMARK" }, { 0x0003DE, "OTC Wireless", "OTC-WIRELESS" }, { 0x0003DF, "Desana Systems", "DESANA" }, { 0x0003E0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0003E1, "Winmate Communication, Inc.", "WINMATE-COMMUNICATION" }, { 0x0003E2, "Comspace Corporation", "COMSPACE" }, { 0x0003E3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0003E4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0003E5, "Hermstedt SG", "HERMSTEDT-SG" }, { 0x0003E6, "Entone, Inc.", "ENTONE" }, { 0x0003E7, "Logostek Co. Ltd.", "LOGOSTEK" }, { 0x0003E8, "Wavelength Digital Limited", "WAVELENGTH-DIGITAL" }, { 0x0003E9, "Akara Canada, Inc.", "AKARA-CANADA" }, { 0x0003EA, "Mega System Technologies, Inc.", "MEGA-SYSTEM-TECHNOLOGIES" }, { 0x0003EB, "Atrica", "ATRICA" }, { 0x0003EC, "ICG Research, Inc.", "ICG-RESEARCH" }, { 0x0003ED, "Shinkawa Electric Co., Ltd.", "SHINKAWA-ELECTRIC" }, { 0x0003EE, "MKNet Corporation", "MKNET" }, { 0x0003EF, "Oneline AG", "ONELINE" }, { 0x0003F0, "Redfern Broadband Networks", "REDFERN-BROADBAND-NETWORKS" }, { 0x0003F1, "Cicada Semiconductor, Inc.", "CICADA-SEMICONDUCTOR" }, { 0x0003F2, "Seneca Networks", "SENECA-NETWORKS" }, { 0x0003F3, "Dazzle Multimedia, Inc.", "DAZZLE-MULTIMEDIA" }, { 0x0003F4, "NetBurner", "NETBURNER" }, { 0x0003F5, "Chip2Chip", "CHIP2CHIP" }, { 0x0003F6, "Allegro Networks, Inc.", "ALLEGRO-NETWORKS" }, { 0x0003F7, "Plast-Control GmbH", "PLAST-CONTROL" }, { 0x0003F8, "SanCastle Technologies, Inc.", "SANCASTLE-TECHNOLOGIES" }, { 0x0003F9, "Pleiades Communications, Inc.", "PLEIADES-COMMUNICATION" }, { 0x0003FA, "TiMetra Networks", "TIMETRA-NETWORKS" }, { 0x0003FB, "ENEGATE Co.,Ltd.", "ENEGATE" }, { 0x0003FC, "Intertex Data AB", "INTERTEX-DATA-AB" }, { 0x0003FD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0003FE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0003FF, "Microsoft Corporation (possible Hyper-V, Virtual Server, Virtual PC VM)", "MICROSOFT-VIRTUAL" }, { 0x000400, "LEXMARK INTERNATIONAL, INC.", "LEXMARK" }, { 0x000401, "Osaki Electric Co., Ltd.", "OSAKI-ELECTRIC" }, { 0x000402, "Nexsan Technologies, Ltd.", "NEXSAN-TECHNOLOGIES" }, { 0x000403, "Nexsi Corporation", "NEXSI" }, { 0x000404, "Makino Milling Machine Co., Ltd.", "MAKINO-MILLING-MACHINE" }, { 0x000405, "ACN Technologies", "ACN-TECHNOLOGIES" }, { 0x000406, "Fa. Metabox AG", "FA-METABOX" }, { 0x000407, "Topcon Positioning Systems, Inc.", "TOPCON-POSITIONING" }, { 0x000408, "Sanko Electronics Co., Ltd.", "SANKO-ELECTRONICS" }, { 0x000409, "Cratos Networks", "CRATOS-NETWORKS" }, { 0x00040A, "Sage Systems", "SAGE" }, { 0x00040B, "3com Europe Ltd.", "3COM" }, { 0x00040C, "Kanno Works, Ltd.", "KANNO-WORKS" }, { 0x00040D, "Avaya, Inc.", "AVAYA" }, { 0x00040E, "AVM GmbH", "AVM" }, { 0x00040F, "Asus Network Technologies, Inc.", "ASUS-NETWORK-TECHNOLOGIES" }, { 0x000410, "Spinnaker Networks, Inc.", "SPINNAKER-NETWORKS" }, { 0x000411, "Inkra Networks, Inc.", "INKRA-NETWORKS" }, { 0x000412, "WaveSmith Networks, Inc.", "WAVESMITH-NETWORKS" }, { 0x000413, "SNOM Technology AG", "SNOM" }, { 0x000414, "Umezawa Musen Denki Co., Ltd.", "UMEZAWA-MUSEN-DENKI" }, { 0x000415, "Rasteme Systems Co., Ltd.", "RASTEME" }, { 0x000416, "Parks S/A Comunicacoes Digitais", "PARKS-S/A-COMUNICACOES-DIGITAIS" }, { 0x000417, "ELAU AG", "ELAU" }, { 0x000418, "Teltronic S.A.U.", "TELTRONIC-U" }, { 0x000419, "Fibercycle Networks, Inc.", "FIBERCYCLE-NETWORKS" }, { 0x00041A, "Ines Test and Measurement GmbH & CoKG", "INES-TEST-AND-MEASUREMENT-COKG" }, { 0x00041B, "Bridgeworks Ltd.", "BRIDGEWORKS" }, { 0x00041C, "ipDialog, Inc.", "IPDIALOG" }, { 0x00041D, "Corega of America", "COREGA-OF-AMERICA" }, { 0x00041E, "Shikoku Instrumentation Co., Ltd.", "SHIKOKU-INSTRUMENTATION" }, { 0x00041F, "Sony Computer Entertainment, Inc.", "SONY-ENTERTAINMENT" }, { 0x000420, "Slim Devices, Inc.", "SLIM-DEVICES" }, { 0x000421, "Ocular Networks", "OCULAR-NETWORKS" }, { 0x000422, "Gordon Kapes, Inc.", "GORDON-KAPES" }, { 0x000423, "Intel Corporation", "INTEL" }, { 0x000424, "TMC s.r.l.", "TMC-S-R-L" }, { 0x000425, "Atmel Corporation", "ATMEL" }, { 0x000426, "Autosys", "AUTOSYS" }, { 0x000427, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000428, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000429, "Pixord Corporation", "PIXORD" }, { 0x00042A, "Wireless Networks, Inc.", "WIRELESS-NETWORKS" }, { 0x00042B, "IT Access Co., Ltd.", "IT-ACCESS" }, { 0x00042C, "Minet, Inc.", "MINET" }, { 0x00042D, "Sarian Systems, Ltd.", "SARIAN" }, { 0x00042E, "Netous Technologies, Ltd.", "NETOUS-TECHNOLOGIES" }, { 0x00042F, "International Communications Products, Inc.", "COMMUNICATION-PRODUCTS" }, { 0x000430, "Netgem", "NETGEM" }, { 0x000431, "GlobalStreams, Inc.", "GLOBALSTREAMS" }, { 0x000432, "Voyetra Turtle Beach, Inc.", "VOYETRA-TURTLE-BEACH" }, { 0x000433, "Cyberboard A/S", "CYBERBOARD-A/S" }, { 0x000434, "Accelent Systems, Inc.", "ACCELENT" }, { 0x000435, "Comptek International, Inc.", "COMPTEK" }, { 0x000436, "ELANsat Technologies, Inc.", "ELANSAT-TECHNOLOGIES" }, { 0x000437, "Powin Information Technology, Inc.", "POWIN-INFORMATION" }, { 0x000438, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000439, "Rosco Entertainment Technology, Inc.", "ROSCO-ENTERTAINMENT" }, { 0x00043A, "Intelligent Telecommunications, Inc.", "INTELLIGENT-TELECOMMUNICATIONS" }, { 0x00043B, "Lava Computer Mfg., Inc.", "LAVA-MFG" }, { 0x00043C, "SONOS Co., Ltd.", "SONOS" }, { 0x00043D, "INDEL AG", "INDEL" }, { 0x00043E, "Telencomm", "TELENCOMM" }, { 0x00043F, "ESTeem Wireless Modems, Inc", "ESTEEM-WIRELESS-MODEMS" }, { 0x000440, "cyberPIXIE, Inc.", "CYBERPIXIE" }, { 0x000441, "Half Dome Systems, Inc.", "HALF-DOME" }, { 0x000442, "NACT", "NACT" }, { 0x000443, "Agilent Technologies, Inc.", "AGILENT-TECHNOLOGIES" }, { 0x000444, "Western Multiplex Corporation", "WESTERN-MULTIPLEX" }, { 0x000445, "LMS Skalar Instruments GmbH", "LMS-SKALAR-INSTRUMENTS" }, { 0x000446, "CYZENTECH Co., Ltd.", "CYZENTECH" }, { 0x000447, "Acrowave Systems Co., Ltd.", "ACROWAVE" }, { 0x000448, "Polaroid Corporation", "POLAROID" }, { 0x000449, "Mapletree Networks", "MAPLETREE-NETWORKS" }, { 0x00044A, "iPolicy Networks, Inc.", "IPOLICY-NETWORKS" }, { 0x00044B, "NVIDIA", "NVIDIA" }, { 0x00044C, "JENOPTIK", "JENOPTIK" }, { 0x00044D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00044E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00044F, "Leukhardt Systemelektronik GmbH", "LEUKHARDT-SYSTEMELEKTRONIK" }, { 0x000450, "DMD Computers SRL", "DMD-COMPUTERS-SRL" }, { 0x000451, "Medrad, Inc.", "MEDRAD" }, { 0x000452, "RocketLogix, Inc.", "ROCKETLOGIX" }, { 0x000453, "YottaYotta, Inc.", "YOTTAYOTTA" }, { 0x000454, "Quadriga UK", "QUADRIGA-UK" }, { 0x000455, "ANTARA.net", "ANTARA-NET" }, { 0x000456, "Cambium Networks Limited", "CAMBIUM-NETWORKS" }, { 0x000457, "Universal Access Technology, Inc.", "UNIVERSAL-ACCESS" }, { 0x000458, "Fusion X Co., Ltd.", "FUSION-X" }, { 0x000459, "Veristar Corporation", "VERISTAR" }, { 0x00045A, "The Linksys Group, Inc.", "THE-LINKSYS-GROUP" }, { 0x00045B, "Techsan Electronics Co., Ltd.", "TECHSAN-ELECTRONICS" }, { 0x00045C, "Mobiwave Pte Ltd", "MOBIWAVE-PTE" }, { 0x00045D, "BEKA Elektronik", "BEKA-ELEKTRONIK" }, { 0x00045E, "PolyTrax Information Technology AG", "POLYTRAX-INFORMATION" }, { 0x00045F, "Avalue Technology, Inc.", "AVALUE" }, { 0x000460, "Knilink Technology, Inc.", "KNILINK" }, { 0x000461, "EPOX Computer Co., Ltd.", "EPOX" }, { 0x000462, "DAKOS Data & Communication Co., Ltd.", "DAKOS-DATA-COMMUNICATION" }, { 0x000463, "Bosch Security Systems", "BOSCH-SECURITY" }, { 0x000464, "Pulse-Link Inc", "PULSE-LINK" }, { 0x000465, "i.s.t isdn-support technik GmbH", "I-S-T-ISDN-SUPPORT-TECHNIK" }, { 0x000466, "ARMITEL Co.", "ARMITEL" }, { 0x000467, "Wuhan Research Institute of MII", "WUHAN-RESEARCH-INSTITUTE-OF-MII" }, { 0x000468, "Vivity, Inc.", "VIVITY" }, { 0x000469, "Innocom, Inc.", "INNOCOM" }, { 0x00046A, "Navini Networks", "NAVINI-NETWORKS" }, { 0x00046B, "Palm Wireless, Inc.", "PALM-WIRELESS" }, { 0x00046C, "Cyber Technology Co., Ltd.", "CYBER" }, { 0x00046D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00046E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00046F, "Digitel S/A Industria Eletronica", "DIGITEL-S/A-INDUSTRIA-ELETRONICA" }, { 0x000470, "ipUnplugged AB", "IPUNPLUGGED-AB" }, { 0x000471, "IPrad", "IPRAD" }, { 0x000472, "Telelynx, Inc.", "TELELYNX" }, { 0x000473, "Photonex Corporation", "PHOTONEX" }, { 0x000474, "LEGRAND", "LEGRAND" }, { 0x000475, "3 Com Corporation", "3COM" }, { 0x000476, "3 Com Corporation", "3COM" }, { 0x000477, "Scalant Systems, Inc.", "SCALANT" }, { 0x000478, "G. Star Technology Corporation", "G-STAR" }, { 0x000479, "Radius Co., Ltd.", "RADIUS" }, { 0x00047A, "AXXESSIT ASA", "AXXESSIT-ASA" }, { 0x00047B, "Schlumberger", "SCHLUMBERGER" }, { 0x00047C, "Skidata AG", "SKIDATA" }, { 0x00047D, "Pelco", "PELCO" }, { 0x00047E, "Siqura B.V.", "SIQURA" }, { 0x00047F, "Chr. Mayr GmbH & Co. KG", "CHR-MAYR" }, { 0x000480, "Brocade Communications Systems, Inc", "BROCADE-COMMUNICATION" }, { 0x000481, "Econolite Control Products, Inc.", "ECONOLITE-CONTROL-PRODUCTS" }, { 0x000482, "Medialogic Corp.", "MEDIALOGIC" }, { 0x000483, "Deltron Technology, Inc.", "DELTRON" }, { 0x000484, "Amann GmbH", "AMANN" }, { 0x000485, "PicoLight", "PICOLIGHT" }, { 0x000486, "ITTC, University of Kansas", "ITTC-UNIVERSITY-OF-KANSAS" }, { 0x000487, "Cogency Semiconductor, Inc.", "COGENCY-SEMICONDUCTOR" }, { 0x000488, "Eurotherm Controls", "EUROTHERM-CONTROLS" }, { 0x000489, "YAFO Networks, Inc.", "YAFO-NETWORKS" }, { 0x00048A, "Temia Vertriebs GmbH", "TEMIA-VERTRIEBS" }, { 0x00048B, "Poscon Corporation", "POSCON" }, { 0x00048C, "Nayna Networks, Inc.", "NAYNA-NETWORKS" }, { 0x00048D, "Tone Commander Systems, Inc.", "TONE-COMMANDER" }, { 0x00048E, "Ohm Tech Labs, Inc.", "OHM-TECH-LABS" }, { 0x00048F, "TD Systems Corporation", "TD" }, { 0x000490, "Optical Access", "OPTICAL-ACCESS" }, { 0x000491, "Technovision, Inc.", "TECHNOVISION" }, { 0x000492, "Hive Internet, Ltd.", "HIVE-INTERNET" }, { 0x000493, "Tsinghua Unisplendour Co., Ltd.", "TSINGHUA-UNISPLENDOUR" }, { 0x000494, "Breezecom, Ltd.", "BREEZECOM" }, { 0x000495, "Tejas Networks India Limited", "TEJAS-NETWORKS-INDIA" }, { 0x000496, "Extreme Networks", "EXTREME-NETWORKS" }, { 0x000497, "MacroSystem Digital Video AG", "MACROSYSTEM-DIGITAL-VIDEO" }, { 0x000498, "Mahi Networks", "MAHI-NETWORKS" }, { 0x000499, "Chino Corporation", "CHINO" }, { 0x00049A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00049B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00049C, "Surgient Networks, Inc.", "SURGIENT-NETWORKS" }, { 0x00049D, "Ipanema Technologies", "IPANEMA-TECHNOLOGIES" }, { 0x00049E, "Wirelink Co., Ltd.", "WIRELINK" }, { 0x00049F, "Freescale Semiconductor", "FREESCALE-SEMICONDUCTOR" }, { 0x0004A0, "Verity Instruments, Inc.", "VERITY-INSTRUMENTS" }, { 0x0004A1, "Pathway Connectivity", "PATHWAY-CONNECTIVITY" }, { 0x0004A2, "L.S.I. Japan Co., Ltd.", "L-S-I-JAPAN" }, { 0x0004A3, "Microchip Technology, Inc.", "MICROCHIP" }, { 0x0004A4, "NetEnabled, Inc.", "NETENABLED" }, { 0x0004A5, "Barco Projection Systems NV", "BARCO-PROJECTION-NV" }, { 0x0004A6, "SAF Tehnika Ltd.", "SAF-TEHNIKA" }, { 0x0004A7, "FabiaTech Corporation", "FABIATECH" }, { 0x0004A8, "Broadmax Technologies, Inc.", "BROADMAX-TECHNOLOGIES" }, { 0x0004A9, "SandStream Technologies, Inc.", "SANDSTREAM-TECHNOLOGIES" }, { 0x0004AA, "Jetstream Communications", "JETSTREAM-COMMUNICATION" }, { 0x0004AB, "Comverse Network Systems, Inc.", "COMVERSE-NETWORK" }, { 0x0004AC, "IBM Corp", "IBM" }, { 0x0004AD, "Malibu Networks", "MALIBU-NETWORKS" }, { 0x0004AE, "Sullair Corporation", "SULLAIR" }, { 0x0004AF, "Digital Fountain, Inc.", "DIGITAL-FOUNTAIN" }, { 0x0004B0, "ELESIGN Co., Ltd.", "ELESIGN" }, { 0x0004B1, "Signal Technology, Inc.", "SIGNAL" }, { 0x0004B2, "ESSEGI SRL", "ESSEGI-SRL" }, { 0x0004B3, "Videotek, Inc.", "VIDEOTEK" }, { 0x0004B4, "CIAC", "CIAC" }, { 0x0004B5, "Equitrac Corporation", "EQUITRAC" }, { 0x0004B6, "Stratex Networks, Inc.", "STRATEX-NETWORKS" }, { 0x0004B7, "AMB i.t. Holding", "AMB-I-T-HOLDING" }, { 0x0004B8, "Kumahira Co., Ltd.", "KUMAHIRA" }, { 0x0004B9, "S.I. Soubou, Inc.", "S-I-SOUBOU" }, { 0x0004BA, "KDD Media Will Corporation", "KDD-MEDIA-WILL" }, { 0x0004BB, "Bardac Corporation", "BARDAC" }, { 0x0004BC, "Giantec, Inc.", "GIANTEC" }, { 0x0004BD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0004BE, "OptXCon, Inc.", "OPTXCON" }, { 0x0004BF, "VersaLogic Corp.", "VERSALOGIC" }, { 0x0004C0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0004C1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0004C2, "Magnipix, Inc.", "MAGNIPIX" }, { 0x0004C3, "CASTOR Informatique", "CASTOR-INFORMATIQUE" }, { 0x0004C4, "Allen & Heath Limited", "ALLEN-HEATH" }, { 0x0004C5, "ASE Technologies, USA", "ASE-TECHNOLOGIES-USA" }, { 0x0004C6, "Yamaha Motor Co., Ltd.", "YAMAHA-MOTOR" }, { 0x0004C7, "NetMount", "NETMOUNT" }, { 0x0004C8, "LIBA Maschinenfabrik GmbH", "LIBA-MASCHINENFABRIK" }, { 0x0004C9, "Micro Electron Co., Ltd.", "MICRO-ELECTRON" }, { 0x0004CA, "FreeMs Corp.", "FREEMS" }, { 0x0004CB, "Tdsoft Communication, Ltd.", "TDSOFT-COMMUNICATION" }, { 0x0004CC, "Peek Traffic B.V.", "PEEK-TRAFFIC" }, { 0x0004CD, "Extenway Solutions Inc", "EXTENWAY-SOLUTIONS" }, { 0x0004CE, "Patria Ailon", "PATRIA-AILON" }, { 0x0004CF, "Seagate Technology", "SEAGATE" }, { 0x0004D0, "Softlink s.r.o.", "SOFTLINK-S-R-O" }, { 0x0004D1, "Drew Technologies, Inc.", "DREW-TECHNOLOGIES" }, { 0x0004D2, "Adcon Telemetry GmbH", "ADCON-TELEMETRY" }, { 0x0004D3, "Toyokeiki Co., Ltd.", "TOYOKEIKI" }, { 0x0004D4, "Proview Electronics Co., Ltd.", "PROVIEW-ELECTRONICS" }, { 0x0004D5, "Hitachi Information & Communication Engineering, Ltd.", "HITACHI-INFORMATION-COMMUNICATION-ENGINEERING" }, { 0x0004D6, "Takagi Industrial Co., Ltd.", "TAKAGI-INDUSTRIAL" }, { 0x0004D7, "Omitec Instrumentation Ltd.", "OMITEC-INSTRUMENTATION" }, { 0x0004D8, "IPWireless, Inc.", "IPWIRELESS" }, { 0x0004D9, "Titan Electronics, Inc.", "TITAN-ELECTRONICS" }, { 0x0004DA, "Relax Technology, Inc.", "RELAX" }, { 0x0004DB, "Tellus Group Corp.", "TELLUS-GROUP" }, { 0x0004DC, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0004DD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0004DE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0004DF, "Teracom Telematica Ltda.", "TERACOM-TELEMATICA-LTDA" }, { 0x0004E0, "Procket Networks", "PROCKET-NETWORKS" }, { 0x0004E1, "Infinior Microsystems", "INFINIOR-MICROSYSTEMS" }, { 0x0004E2, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x0004E3, "Accton Technology Corp.", "ACCTON" }, { 0x0004E4, "Daeryung Ind., Inc.", "DAERYUNG-IND" }, { 0x0004E5, "Glonet Systems, Inc.", "GLONET" }, { 0x0004E6, "Banyan Network Private Limited", "BANYAN-NETWORK-PRIVATE" }, { 0x0004E7, "Lightpointe Communications, Inc", "LIGHTPOINTE-COMMUNICATION" }, { 0x0004E8, "IER, Inc.", "IER" }, { 0x0004E9, "Infiniswitch Corporation", "INFINISWITCH" }, { 0x0004EA, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0004EB, "Paxonet Communications, Inc.", "PAXONET-COMMUNICATION" }, { 0x0004EC, "Memobox SA", "MEMOBOX" }, { 0x0004ED, "Billion Electric Co., Ltd.", "BILLION-ELECTRIC" }, { 0x0004EE, "Lincoln Electric Company", "LINCOLN-ELECTRIC-COMPANY" }, { 0x0004EF, "Polestar Corp.", "POLESTAR" }, { 0x0004F0, "International Computers, Ltd", "COMPUTERS" }, { 0x0004F1, "WhereNet", "WHERENET" }, { 0x0004F2, "Polycom", "POLYCOM" }, { 0x0004F3, "FS FORTH-SYSTEME GmbH", "FS-FORTH-SYSTEME" }, { 0x0004F4, "Infinite Electronics Inc.", "INFINITE-ELECTRONICS" }, { 0x0004F5, "SnowShore Networks, Inc.", "SNOWSHORE-NETWORKS" }, { 0x0004F6, "Amphus", "AMPHUS" }, { 0x0004F7, "Omega Band, Inc.", "OMEGA-BAND" }, { 0x0004F8, "QUALICABLE TV Industria E Com., Ltda", "QUALICABLE-TV-INDUSTRIA-E-COM-LTDA" }, { 0x0004F9, "Xtera Communications, Inc.", "XTERA-COMMUNICATION" }, { 0x0004FA, "NBS Technologies Inc.", "NBS-TECHNOLOGIES" }, { 0x0004FB, "Commtech, Inc.", "COMMTECH" }, { 0x0004FC, "Stratus Computer (DE), Inc.", "STRATUS-DE" }, { 0x0004FD, "Japan Control Engineering Co., Ltd.", "JAPAN-CONTROL-ENGINEERING" }, { 0x0004FE, "Pelago Networks", "PELAGO-NETWORKS" }, { 0x0004FF, "Acronet Co., Ltd.", "ACRONET" }, { 0x000500, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000501, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000502, "Apple", "APPLE" }, { 0x000503, "ICONAG", "ICONAG" }, { 0x000504, "Naray Information & Communication Enterprise", "NARAY-INFORMATION-COMMUNICATION" }, { 0x000505, "Systems Integration Solutions, Inc.", "INTEGRATION-SOLUTIONS" }, { 0x000506, "Reddo Networks AB", "REDDO-NETWORKS-AB" }, { 0x000507, "Fine Appliance Corp.", "FINE-APPLIANCE" }, { 0x000508, "Inetcam, Inc.", "INETCAM" }, { 0x000509, "AVOC Nishimura Ltd.", "AVOC-NISHIMURA" }, { 0x00050A, "ICS Spa", "ICS-SPA" }, { 0x00050B, "SICOM Systems, Inc.", "SICOM" }, { 0x00050C, "Network Photonics, Inc.", "NETWORK-PHOTONICS" }, { 0x00050D, "Midstream Technologies, Inc.", "MIDSTREAM-TECHNOLOGIES" }, { 0x00050E, "3ware, Inc.", "3WARE" }, { 0x00050F, "Tanaka S/S Ltd.", "TANAKA-S/S" }, { 0x000510, "Infinite Shanghai Communication Terminals Ltd.", "INFINITE-SHANGHAI-COMMUNICATION-TERMINALS" }, { 0x000511, "Complementary Technologies Ltd", "COMPLEMENTARY-TECHNOLOGIES" }, { 0x000512, "MeshNetworks, Inc.", "MESHNETWORKS" }, { 0x000513, "VTLinx Multimedia Systems, Inc.", "VTLINX-MULTIMEDIA" }, { 0x000514, "KDT Systems Co., Ltd.", "KDT" }, { 0x000515, "Nuark Co., Ltd.", "NUARK" }, { 0x000516, "SMART Modular Technologies", "SMART-MODULAR-TECHNOLOGIES" }, { 0x000517, "Shellcomm, Inc.", "SHELLCOMM" }, { 0x000518, "Jupiters Technology", "JUPITERS" }, { 0x000519, "Siemens Building Technologies AG,", "SIEMENS-BUILDING-TECHNOLOGIES" }, { 0x00051A, "3Com Europe Ltd.", "3COM" }, { 0x00051B, "Magic Control Technology Corporation", "MAGIC-CONTROL" }, { 0x00051C, "Xnet Technology Corp.", "XNET" }, { 0x00051D, "Airocon, Inc.", "AIROCON" }, { 0x00051E, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00051F, "Taijin Media Co., Ltd.", "TAIJIN-MEDIA" }, { 0x000520, "Smartronix, Inc.", "SMARTRONIX" }, { 0x000521, "Control Microsystems", "CONTROL-MICROSYSTEMS" }, { 0x000522, "LEA*D Corporation, Inc.", "LEA*D" }, { 0x000523, "AVL List GmbH", "AVL-LIST" }, { 0x000524, "BTL System (HK) Limited", "BTL-SYSTEM-HK" }, { 0x000525, "Puretek Industrial Co., Ltd.", "PURETEK-INDUSTRIAL" }, { 0x000526, "IPAS GmbH", "IPAS" }, { 0x000527, "SJ Tek Co. Ltd", "SJ-TEK" }, { 0x000528, "New Focus, Inc.", "NEW-FOCUS" }, { 0x000529, "Shanghai Broadan Communication Technology Co., Ltd", "SHANGHAI-BROADAN-COMMUNICATION" }, { 0x00052A, "Ikegami Tsushinki Co., Ltd.", "IKEGAMI-TSUSHINKI" }, { 0x00052B, "HORIBA, Ltd.", "HORIBA" }, { 0x00052C, "Supreme Magic Corporation", "SUPREME-MAGIC" }, { 0x00052D, "Zoltrix International Limited", "ZOLTRIX" }, { 0x00052E, "Cinta Networks", "CINTA-NETWORKS" }, { 0x00052F, "Leviton Network Solutions", "LEVITON-NETWORK-SOLUTIONS" }, { 0x000530, "Andiamo Systems, Inc.", "ANDIAMO" }, { 0x000531, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000532, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000533, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x000534, "Northstar Engineering Ltd.", "NORTHSTAR-ENGINEERING" }, { 0x000535, "Chip PC Ltd.", "CHIP-PC" }, { 0x000536, "Danam Communications, Inc.", "DANAM-COMMUNICATION" }, { 0x000537, "Nets Technology Co., Ltd.", "NETS" }, { 0x000538, "Merilus, Inc.", "MERILUS" }, { 0x000539, "A Brand New World in Sweden AB", "A-BRAND-NEW-WORLD-IN-SWEDEN-AB" }, { 0x00053A, "Willowglen Services Pte Ltd", "WILLOWGLEN-SERVICES-PTE" }, { 0x00053B, "Harbour Networks Ltd., Co. Beijing", "HARBOUR-NETWORKS-BEIJING" }, { 0x00053C, "Xircom", "XIRCOM" }, { 0x00053D, "Agere Systems", "AGERE" }, { 0x00053E, "KID Systeme GmbH", "KID-SYSTEME" }, { 0x00053F, "VisionTek, Inc.", "VISIONTEK" }, { 0x000540, "FAST Corporation", "FAST" }, { 0x000541, "Advanced Systems Co., Ltd.", "ADVANCED" }, { 0x000542, "Otari, Inc.", "OTARI" }, { 0x000543, "IQ Wireless GmbH", "IQ-WIRELESS" }, { 0x000544, "Valley Technologies, Inc.", "VALLEY-TECHNOLOGIES" }, { 0x000545, "Internet Photonics", "INTERNET-PHOTONICS" }, { 0x000546, "KDDI Network & Solultions Inc.", "KDDI-NETWORK-SOLULTIONS" }, { 0x000547, "Starent Networks", "STARENT-NETWORKS" }, { 0x000548, "Disco Corporation", "DISCO" }, { 0x000549, "Salira Optical Network Systems", "SALIRA-OPTICAL-NETWORK" }, { 0x00054A, "Ario Data Networks, Inc.", "ARIO-DATA-NETWORKS" }, { 0x00054B, "Eaton Automation AG", "EATON-AUTOMATION" }, { 0x00054C, "RF Innovations Pty Ltd", "RF-INNOVATIONS-PTY" }, { 0x00054D, "Brans Technologies, Inc.", "BRANS-TECHNOLOGIES" }, { 0x00054E, "Philips", "PHILIPS" }, { 0x00054F, "PRIVATE", "PRIVATE" }, { 0x000550, "Vcomms Connect Limited", "VCOMMS-CONNECT" }, { 0x000551, "F & S Elektronik Systeme GmbH", "F-S-ELEKTRONIK-SYSTEME" }, { 0x000552, "Xycotec Computer GmbH", "XYCOTEC" }, { 0x000553, "DVC Company, Inc.", "DVC-COMPANY" }, { 0x000554, "Rangestar Wireless", "RANGESTAR-WIRELESS" }, { 0x000555, "Japan Cash Machine Co., Ltd.", "JAPAN-CASH-MACHINE" }, { 0x000556, "360 Systems", "360" }, { 0x000557, "Agile TV Corporation", "AGILE-TV" }, { 0x000558, "Synchronous, Inc.", "SYNCHRONOUS" }, { 0x000559, "Intracom S.A.", "INTRACOM" }, { 0x00055A, "Power Dsine Ltd.", "POWER-DSINE" }, { 0x00055B, "Charles Industries, Ltd.", "CHARLES-INDUSTRIES" }, { 0x00055C, "Kowa Company, Ltd.", "KOWA-COMPANY" }, { 0x00055D, "D-Link Systems, Inc.", "D-LINK" }, { 0x00055E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00055F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000560, "LEADER COMM.CO., LTD", "LEADER-COMM" }, { 0x000561, "nac Image Technology, Inc.", "NAC-IMAGE" }, { 0x000562, "Digital View Limited", "DIGITAL-VIEW" }, { 0x000563, "J-Works, Inc.", "J-WORKS" }, { 0x000564, "Tsinghua Bitway Co., Ltd.", "TSINGHUA-BITWAY" }, { 0x000565, "Tailyn Communication Company Ltd.", "TAILYN-COMMUNICATION-COMPANY" }, { 0x000566, "Secui.com Corporation", "SECUI-COM" }, { 0x000567, "Etymonic Design, Inc.", "ETYMONIC-DESIGN" }, { 0x000568, "Piltofish Networks AB", "PILTOFISH-NETWORKS-AB" }, { 0x000569, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x00056A, "Heuft Systemtechnik GmbH", "HEUFT-SYSTEMTECHNIK" }, { 0x00056B, "C.P. Technology Co., Ltd.", "C-P" }, { 0x00056C, "Hung Chang Co., Ltd.", "HUNG-CHANG" }, { 0x00056D, "Pacific Corporation", "PACIFIC" }, { 0x00056E, "National Enhance Technology, Inc.", "NATIONAL-ENHANCE" }, { 0x00056F, "Innomedia Technologies Pvt. Ltd.", "INNOMEDIA-TECHNOLOGIES-PVT" }, { 0x000570, "Baydel Ltd.", "BAYDEL" }, { 0x000571, "Seiwa Electronics Co.", "SEIWA-ELECTRONICS" }, { 0x000572, "Deonet Co., Ltd.", "DEONET" }, { 0x000573, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000574, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000575, "CDS-Electronics BV", "CDS-ELECTRONICS" }, { 0x000576, "NSM Technology Ltd.", "NSM" }, { 0x000577, "SM Information & Communication", "SM-INFORMATION-COMMUNICATION" }, { 0x000578, "PRIVATE", "PRIVATE" }, { 0x000579, "Universal Control Solution Corp.", "UNIVERSAL-CONTROL-SOLUTION" }, { 0x00057A, "Overture Networks", "OVERTURE-NETWORKS" }, { 0x00057B, "Chung Nam Electronic Co., Ltd.", "CHUNG-NAM" }, { 0x00057C, "RCO Security AB", "RCO-SECURITY-AB" }, { 0x00057D, "Sun Communications, Inc.", "SUN-COMMUNICATION" }, { 0x00057E, "Eckelmann Steuerungstechnik GmbH", "ECKELMANN-STEUERUNGSTECHNIK" }, { 0x00057F, "Acqis Technology", "ACQIS" }, { 0x000580, "FibroLAN Ltd.", "FIBROLAN" }, { 0x000581, "Snell", "SNELL" }, { 0x000582, "ClearCube Technology", "CLEARCUBE" }, { 0x000583, "ImageCom Limited", "IMAGECOM" }, { 0x000584, "AbsoluteValue Systems, Inc.", "ABSOLUTEVALUE" }, { 0x000585, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 0x000586, "Lucent Technologies", "LUCENT-TECHNOLOGIES" }, { 0x000587, "Locus, Incorporated", "LOCUS-INCORPORATED" }, { 0x000588, "Sensoria Corp.", "SENSORIA" }, { 0x000589, "National Datacomputer", "NATIONAL-DATACOMPUTER" }, { 0x00058A, "Netcom Co., Ltd.", "NETCOM" }, { 0x00058B, "IPmental, Inc.", "IPMENTAL" }, { 0x00058C, "Opentech Inc.", "OPENTECH" }, { 0x00058D, "Lynx Photonic Networks, Inc.", "LYNX-PHOTONIC-NETWORKS" }, { 0x00058E, "Flextronics International GmbH & Co. Nfg. KG", "FLEXTRONICS-NFG" }, { 0x00058F, "CLCsoft co.", "CLCSOFT" }, { 0x000590, "Swissvoice Ltd.", "SWISSVOICE" }, { 0x000591, "Active Silicon Ltd", "ACTIVE-SILICON" }, { 0x000592, "Pultek Corp.", "PULTEK" }, { 0x000593, "Grammar Engine Inc.", "GRAMMAR-ENGINE" }, { 0x000594, "IXXAT Automation GmbH", "IXXAT-AUTOMATION" }, { 0x000595, "Alesis Corporation", "ALESIS" }, { 0x000596, "Genotech Co., Ltd.", "GENOTECH" }, { 0x000597, "Eagle Traffic Control Systems", "EAGLE-TRAFFIC-CONTROL" }, { 0x000598, "CRONOS S.r.l.", "CRONOS-S-R-L" }, { 0x000599, "DRS Test and Energy Management or DRS-TEM", "DRS-TEST-AND-ENERGY-MANAGEMENT-OR-DRS-TEM" }, { 0x00059A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00059B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00059C, "Kleinknecht GmbH, Ing. Büro", "KLEINKNECHT-ING-BüRO" }, { 0x00059D, "Daniel Computing Systems, Inc.", "DANIEL-COMPUTING" }, { 0x00059E, "Zinwell Corporation", "ZINWELL" }, { 0x00059F, "Yotta Networks, Inc.", "YOTTA-NETWORKS" }, { 0x0005A0, "MOBILINE Kft.", "MOBILINE-KFT" }, { 0x0005A1, "Zenocom", "ZENOCOM" }, { 0x0005A2, "CELOX Networks", "CELOX-NETWORKS" }, { 0x0005A3, "QEI, Inc.", "QEI" }, { 0x0005A4, "Lucid Voice Ltd.", "LUCID-VOICE" }, { 0x0005A5, "KOTT", "KOTT" }, { 0x0005A6, "Extron Electronics", "EXTRON-ELECTRONICS" }, { 0x0005A7, "Hyperchip, Inc.", "HYPERCHIP" }, { 0x0005A8, "WYLE ELECTRONICS", "WYLE-ELECTRONICS" }, { 0x0005A9, "Princeton Networks, Inc.", "PRINCETON-NETWORKS" }, { 0x0005AA, "Moore Industries International Inc.", "MOORE-INDUSTRIES" }, { 0x0005AB, "Cyber Fone, Inc.", "CYBER-FONE" }, { 0x0005AC, "Northern Digital, Inc.", "NORTHERN-DIGITAL" }, { 0x0005AD, "Topspin Communications, Inc.", "TOPSPIN-COMMUNICATION" }, { 0x0005AE, "Mediaport USA", "MEDIAPORT-USA" }, { 0x0005AF, "InnoScan Computing A/S", "INNOSCAN-COMPUTING-A/S" }, { 0x0005B0, "Korea Computer Technology Co., Ltd.", "KOREA" }, { 0x0005B1, "ASB Technology BV", "ASB" }, { 0x0005B2, "Medison Co., Ltd.", "MEDISON" }, { 0x0005B3, "Asahi-Engineering Co., Ltd.", "ASAHI-ENGINEERING" }, { 0x0005B4, "Aceex Corporation", "ACEEX" }, { 0x0005B5, "Broadcom Technologies", "BROADCOM-TECHNOLOGIES" }, { 0x0005B6, "INSYS Microelectronics GmbH", "INSYS-MICROELECTRONICS" }, { 0x0005B7, "Arbor Technology Corp.", "ARBOR" }, { 0x0005B8, "Electronic Design Associates, Inc.", "DESIGN-ASSOCIATES" }, { 0x0005B9, "Airvana, Inc.", "AIRVANA" }, { 0x0005BA, "Area Netwoeks, Inc.", "AREA-NETWOEKS" }, { 0x0005BB, "Myspace AB", "MYSPACE-AB" }, { 0x0005BC, "Resorsys Ltd.", "RESORSYS" }, { 0x0005BD, "ROAX BV", "ROAX" }, { 0x0005BE, "Kongsberg Seatex AS", "KONGSBERG-SEATEX-AS" }, { 0x0005BF, "JustEzy Technology, Inc.", "JUSTEZY" }, { 0x0005C0, "Digital Network Alacarte Co., Ltd.", "DIGITAL-NETWORK-ALACARTE" }, { 0x0005C1, "A-Kyung Motion, Inc.", "A-KYUNG-MOTION" }, { 0x0005C2, "Soronti, Inc.", "SORONTI" }, { 0x0005C3, "Pacific Instruments, Inc.", "PACIFIC-INSTRUMENTS" }, { 0x0005C4, "Telect, Inc.", "TELECT" }, { 0x0005C5, "Flaga HF", "FLAGA-HF" }, { 0x0005C6, "Triz Communications", "TRIZ-COMMUNICATION" }, { 0x0005C7, "I/F-COM A/S", "I/F-COM-A/S" }, { 0x0005C8, "VERYTECH", "VERYTECH" }, { 0x0005C9, "LG Innotek Co., Ltd.", "LG-INNOTEK" }, { 0x0005CA, "Hitron Technology, Inc.", "HITRON" }, { 0x0005CB, "ROIS Technologies, Inc.", "ROIS-TECHNOLOGIES" }, { 0x0005CC, "Sumtel Communications, Inc.", "SUMTEL-COMMUNICATION" }, { 0x0005CD, "Denon, Ltd.", "DENON" }, { 0x0005CE, "Prolink Microsystems Corporation", "PROLINK-MICROSYSTEMS" }, { 0x0005CF, "Thunder River Technologies, Inc.", "THUNDER-RIVER-TECHNOLOGIES" }, { 0x0005D0, "Solinet Systems", "SOLINET" }, { 0x0005D1, "Metavector Technologies", "METAVECTOR-TECHNOLOGIES" }, { 0x0005D2, "DAP Technologies", "DAP-TECHNOLOGIES" }, { 0x0005D3, "eProduction Solutions, Inc.", "EPRODUCTION-SOLUTIONS" }, { 0x0005D4, "FutureSmart Networks, Inc.", "FUTURESMART-NETWORKS" }, { 0x0005D5, "Speedcom Wireless", "SPEEDCOM-WIRELESS" }, { 0x0005D6, "L-3 Linkabit", "L-3-LINKABIT" }, { 0x0005D7, "Vista Imaging, Inc.", "VISTA-IMAGING" }, { 0x0005D8, "Arescom, Inc.", "ARESCOM" }, { 0x0005D9, "Techno Valley, Inc.", "TECHNO-VALLEY" }, { 0x0005DA, "Apex Automationstechnik", "APEX-AUTOMATIONSTECHNIK" }, { 0x0005DB, "PSI Nentec GmbH", "PSI-NENTEC" }, { 0x0005DC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0005DD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0005DE, "Gi Fone Korea, Inc.", "GI-FONE-KOREA" }, { 0x0005DF, "Electronic Innovation, Inc.", "INNOVATION" }, { 0x0005E0, "Empirix Corp.", "EMPIRIX" }, { 0x0005E1, "Trellis Photonics, Ltd.", "TRELLIS-PHOTONICS" }, { 0x0005E2, "Creativ Network Technologies", "CREATIV-NETWORK-TECHNOLOGIES" }, { 0x0005E3, "LightSand Communications, Inc.", "LIGHTSAND-COMMUNICATION" }, { 0x0005E4, "Red Lion Controls Inc.", "RED-LION-CONTROLS" }, { 0x0005E5, "Renishaw PLC", "RENISHAW-PLC" }, { 0x0005E6, "Egenera, Inc.", "EGENERA" }, { 0x0005E7, "Netrake an AudioCodes Company", "NETRAKE-AN-AUDIOCODES-COMPANY" }, { 0x0005E8, "TurboWave, Inc.", "TURBOWAVE" }, { 0x0005E9, "Unicess Network, Inc.", "UNICESS-NETWORK" }, { 0x0005EA, "Rednix", "REDNIX" }, { 0x0005EB, "Blue Ridge Networks, Inc.", "BLUE-RIDGE-NETWORKS" }, { 0x0005EC, "Mosaic Systems Inc.", "MOSAIC" }, { 0x0005ED, "Technikum Joanneum GmbH", "TECHNIKUM-JOANNEUM" }, { 0x0005EE, "BEWATOR Group", "BEWATOR-GROUP" }, { 0x0005EF, "ADOIR Digital Technology", "ADOIR-DIGITAL" }, { 0x0005F0, "SATEC", "SATEC" }, { 0x0005F1, "Vrcom, Inc.", "VRCOM" }, { 0x0005F2, "Power R, Inc.", "POWER-R" }, { 0x0005F3, "Webyn", "WEBYN" }, { 0x0005F4, "System Base Co., Ltd.", "SYSTEM-BASE" }, { 0x0005F5, "Geospace Technologies", "GEOSPACE-TECHNOLOGIES" }, { 0x0005F6, "Young Chang Co. Ltd.", "YOUNG-CHANG" }, { 0x0005F7, "Analog Devices, Inc.", "ANALOG-DEVICES" }, { 0x0005F8, "Real Time Access, Inc.", "REAL-TIME-ACCESS" }, { 0x0005F9, "TOA Corporation", "TOA" }, { 0x0005FA, "IPOptical, Inc.", "IPOPTICAL" }, { 0x0005FB, "ShareGate, Inc.", "SHAREGATE" }, { 0x0005FC, "Schenck Pegasus Corp.", "SCHENCK-PEGASUS" }, { 0x0005FD, "PacketLight Networks Ltd.", "PACKETLIGHT-NETWORKS" }, { 0x0005FE, "Traficon N.V.", "TRAFICON-N-V" }, { 0x0005FF, "SNS Solutions, Inc.", "SNS-SOLUTIONS" }, { 0x000600, "Toshiba Teli Corporation", "TOSHIBA-TELI" }, { 0x000601, "Otanikeiki Co., Ltd.", "OTANIKEIKI" }, { 0x000602, "Cirkitech Electronics Co.", "CIRKITECH-ELECTRONICS" }, { 0x000603, "Baker Hughes Inc.", "BAKER-HUGHES" }, { 0x000604, "@Track Communications, Inc.", "@TRACK-COMMUNICATION" }, { 0x000605, "Inncom International, Inc.", "INNCOM" }, { 0x000606, "RapidWAN, Inc.", "RAPIDWAN" }, { 0x000607, "Omni Directional Control Technology Inc.", "OMNI-DIRECTIONAL-CONTROL" }, { 0x000608, "At-Sky SAS", "AT-SKY-SAS" }, { 0x000609, "Crossport Systems", "CROSSPORT" }, { 0x00060A, "Blue2space", "BLUE2SPACE" }, { 0x00060B, "Emerson Network Power", "EMERSON-NETWORK-POWER" }, { 0x00060C, "Melco Industries, Inc.", "MELCO-INDUSTRIES" }, { 0x00060D, "Wave7 Optics", "WAVE7-OPTICS" }, { 0x00060E, "IGYS Systems, Inc.", "IGYS" }, { 0x00060F, "Narad Networks Inc", "NARAD-NETWORKS" }, { 0x000610, "Abeona Networks Inc", "ABEONA-NETWORKS" }, { 0x000611, "Zeus Wireless, Inc.", "ZEUS-WIRELESS" }, { 0x000612, "Accusys, Inc.", "ACCUSYS" }, { 0x000613, "Kawasaki Microelectronics Incorporated", "KAWASAKI-MICROELECTRONICS-INCORPORATED" }, { 0x000614, "Prism Holdings", "PRISM-HOLDINGS" }, { 0x000615, "Kimoto Electric Co., Ltd.", "KIMOTO-ELECTRIC" }, { 0x000616, "Tel Net Co., Ltd.", "TEL-NET" }, { 0x000617, "Redswitch Inc.", "REDSWITCH" }, { 0x000618, "DigiPower Manufacturing Inc.", "DIGIPOWER-MANUFACTURING" }, { 0x000619, "Connection Technology Systems", "CONNECTION" }, { 0x00061A, "Zetari Inc.", "ZETARI" }, { 0x00061B, "Notebook Development Lab. Lenovo Japan Ltd.", "NOTEBOOK-DEVELOPMENT-LAB-LENOVO-JAPAN" }, { 0x00061C, "Hoshino Metal Industries, Ltd.", "HOSHINO-METAL-INDUSTRIES" }, { 0x00061D, "MIP Telecom, Inc.", "MIP-TELECOM" }, { 0x00061E, "Maxan Systems", "MAXAN" }, { 0x00061F, "Vision Components GmbH", "VISION-COMPONENTS" }, { 0x000620, "Serial System Ltd.", "SERIAL-SYSTEM" }, { 0x000621, "Hinox, Co., Ltd.", "HINOX" }, { 0x000622, "Chung Fu Chen Yeh Enterprise Corp.", "CHUNG-FU-CHEN-YEH" }, { 0x000623, "MGE UPS Systems France", "MGE-UPS-FRANCE" }, { 0x000624, "Gentner Communications Corp.", "GENTNER-COMMUNICATION" }, { 0x000625, "The Linksys Group, Inc.", "THE-LINKSYS-GROUP" }, { 0x000626, "MWE GmbH", "MWE" }, { 0x000627, "Uniwide Technologies, Inc.", "UNIWIDE-TECHNOLOGIES" }, { 0x000628, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000629, "IBM Corp", "IBM" }, { 0x00062A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00062B, "INTRASERVER TECHNOLOGY", "INTRASERVER" }, { 0x00062C, "Bivio Networks", "BIVIO-NETWORKS" }, { 0x00062D, "TouchStar Technologies, L.L.C.", "TOUCHSTAR-TECHNOLOGIES-L-L-C" }, { 0x00062E, "Aristos Logic Corp.", "ARISTOS-LOGIC" }, { 0x00062F, "Pivotech Systems Inc.", "PIVOTECH" }, { 0x000630, "Adtranz Sweden", "ADTRANZ-SWEDEN" }, { 0x000631, "Calix", "CALIX" }, { 0x000632, "Mesco Engineering GmbH", "MESCO-ENGINEERING" }, { 0x000633, "Cross Match Technologies GmbH", "CROSS-MATCH-TECHNOLOGIES" }, { 0x000634, "GTE Airfone Inc.", "GTE-AIRFONE" }, { 0x000635, "PacketAir Networks, Inc.", "PACKETAIR-NETWORKS" }, { 0x000636, "Jedai Broadband Networks", "JEDAI-BROADBAND-NETWORKS" }, { 0x000637, "Toptrend-Meta Information (ShenZhen) Inc.", "TOPTREND-META-INFORMATION-SHENZHEN" }, { 0x000638, "Sungjin C&C Co., Ltd.", "SUNGJIN-C-C" }, { 0x000639, "Newtec", "NEWTEC" }, { 0x00063A, "Dura Micro, Inc.", "DURA-MICRO" }, { 0x00063B, "Arcturus Networks Inc.", "ARCTURUS-NETWORKS" }, { 0x00063C, "Intrinsyc Software International Inc.", "INTRINSYC-SOFTWARE" }, { 0x00063D, "Microwave Data Systems Inc.", "MICROWAVE-DATA" }, { 0x00063E, "Opthos Inc.", "OPTHOS" }, { 0x00063F, "Everex Communications Inc.", "EVEREX-COMMUNICATION" }, { 0x000640, "White Rock Networks", "WHITE-ROCK-NETWORKS" }, { 0x000641, "ITCN", "ITCN" }, { 0x000642, "Genetel Systems Inc.", "GENETEL" }, { 0x000643, "SONO Computer Co., Ltd.", "SONO" }, { 0x000644, "Neix,Inc", "NEIX" }, { 0x000645, "Meisei Electric Co. Ltd.", "MEISEI-ELECTRIC" }, { 0x000646, "ShenZhen XunBao Network Technology Co Ltd", "SHENZHEN-XUNBAO-NETWORK" }, { 0x000647, "Etrali S.A.", "ETRALI" }, { 0x000648, "Seedsware, Inc.", "SEEDSWARE" }, { 0x000649, "3M Deutschland GmbH", "3M-DEUTSCHLAND" }, { 0x00064A, "Honeywell Co., Ltd. (KOREA)", "HONEYWELL-KOREA" }, { 0x00064B, "Alexon Co., Ltd.", "ALEXON" }, { 0x00064C, "Invicta Networks, Inc.", "INVICTA-NETWORKS" }, { 0x00064D, "Sencore", "SENCORE" }, { 0x00064E, "Broad Net Technology Inc.", "BROAD-NET" }, { 0x00064F, "PRO-NETS Technology Corporation", "PRO-NETS" }, { 0x000650, "Tiburon Networks, Inc.", "TIBURON-NETWORKS" }, { 0x000651, "Aspen Networks Inc.", "ASPEN-NETWORKS" }, { 0x000652, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000653, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000654, "Winpresa Building Automation Technologies GmbH", "WINPRESA-BUILDING-AUTOMATION-TECHNOLOGIES" }, { 0x000655, "Yipee, Inc.", "YIPEE" }, { 0x000656, "Tactel AB", "TACTEL-AB" }, { 0x000657, "Market Central, Inc.", "MARKET-CENTRAL" }, { 0x000658, "Helmut Fischer GmbH Institut für Elektronik und Messtechnik", "HELMUT-FISCHER-INSTITUT-FüR-ELEKTRONIK-UND-MESSTECHNIK" }, { 0x000659, "EAL (Apeldoorn) B.V.", "EAL-APELDOORN" }, { 0x00065A, "Strix Systems", "STRIX" }, { 0x00065B, "Dell Computer Corp.", "DELL" }, { 0x00065C, "Malachite Technologies, Inc.", "MALACHITE-TECHNOLOGIES" }, { 0x00065D, "Heidelberg Web Systems", "HEIDELBERG-WEB" }, { 0x00065E, "Photuris, Inc.", "PHOTURIS" }, { 0x00065F, "ECI Telecom - NGTS Ltd.", "ECI-TELECOM---NGTS" }, { 0x000660, "NADEX Co., Ltd.", "NADEX" }, { 0x000661, "NIA Home Technologies Corp.", "NIA-HOME-TECHNOLOGIES" }, { 0x000662, "MBM Technology Ltd.", "MBM" }, { 0x000663, "Human Technology Co., Ltd.", "HUMAN" }, { 0x000664, "Fostex Corporation", "FOSTEX" }, { 0x000665, "Sunny Giken, Inc.", "SUNNY-GIKEN" }, { 0x000666, "Roving Networks", "ROVING-NETWORKS" }, { 0x000667, "Tripp Lite", "TRIPP-LITE" }, { 0x000668, "Vicon Industries Inc.", "VICON-INDUSTRIES" }, { 0x000669, "Datasound Laboratories Ltd", "DATASOUND-LABORATORIES" }, { 0x00066A, "InfiniCon Systems, Inc.", "INFINICON" }, { 0x00066B, "Sysmex Corporation", "SYSMEX" }, { 0x00066C, "Robinson Corporation", "ROBINSON" }, { 0x00066D, "Compuprint S.P.A.", "COMPUPRINT-S-P-A" }, { 0x00066E, "Delta Electronics, Inc.", "DELTA-ELECTRONICS" }, { 0x00066F, "Korea Data Systems", "KOREA-DATA" }, { 0x000670, "Upponetti Oy", "UPPONETTI-OY" }, { 0x000671, "Softing AG", "SOFTING" }, { 0x000672, "Netezza", "NETEZZA" }, { 0x000673, "TKH Security Solutions USA", "TKH-SECURITY-SOLUTIONS-USA" }, { 0x000674, "Spectrum Control, Inc.", "SPECTRUM-CONTROL" }, { 0x000675, "Banderacom, Inc.", "BANDERACOM" }, { 0x000676, "Novra Technologies Inc.", "NOVRA-TECHNOLOGIES" }, { 0x000677, "SICK AG", "SICK" }, { 0x000678, "Marantz Brand Company", "MARANTZ-BRAND-COMPANY" }, { 0x000679, "Konami Corporation", "KONAMI" }, { 0x00067A, "JMP Systems", "JMP" }, { 0x00067B, "Toplink C&C Corporation", "TOPLINK-C-C" }, { 0x00067C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00067D, "Takasago Ltd.", "TAKASAGO" }, { 0x00067E, "WinCom Systems, Inc.", "WINCOM" }, { 0x00067F, "Digeo, Inc.", "DIGEO" }, { 0x000680, "Card Access, Inc.", "CARD-ACCESS" }, { 0x000681, "Goepel Electronic GmbH", "GOEPEL" }, { 0x000682, "Convedia", "CONVEDIA" }, { 0x000683, "Bravara Communications, Inc.", "BRAVARA-COMMUNICATION" }, { 0x000684, "Biacore AB", "BIACORE-AB" }, { 0x000685, "NetNearU Corporation", "NETNEARU" }, { 0x000686, "ZARDCOM Co., Ltd.", "ZARDCOM" }, { 0x000687, "Omnitron Systems Technology, Inc.", "OMNITRON" }, { 0x000688, "Telways Communication Co., Ltd.", "TELWAYS-COMMUNICATION" }, { 0x000689, "yLez Technologies Pte Ltd", "YLEZ-TECHNOLOGIES-PTE" }, { 0x00068A, "NeuronNet Co. Ltd. R&D Center", "NEURONNET-R-D-CENTER" }, { 0x00068B, "AirRunner Technologies, Inc.", "AIRRUNNER-TECHNOLOGIES" }, { 0x00068C, "3Com Corporation", "3COM" }, { 0x00068D, "SEPATON, Inc.", "SEPATON" }, { 0x00068E, "HID Corporation", "HID" }, { 0x00068F, "Telemonitor, Inc.", "TELEMONITOR" }, { 0x000690, "Euracom Communication GmbH", "EURACOM-COMMUNICATION" }, { 0x000691, "PT Inovacao", "PT-INOVACAO" }, { 0x000692, "Intruvert Networks, Inc.", "INTRUVERT-NETWORKS" }, { 0x000693, "Flexus Computer Technology, Inc.", "FLEXUS" }, { 0x000694, "Mobillian Corporation", "MOBILLIAN" }, { 0x000695, "Ensure Technologies, Inc.", "ENSURE-TECHNOLOGIES" }, { 0x000696, "Advent Networks", "ADVENT-NETWORKS" }, { 0x000697, "R & D Center", "R-D-CENTER" }, { 0x000698, "egnite GmbH", "EGNITE" }, { 0x000699, "Vida Design Co.", "VIDA-DESIGN" }, { 0x00069A, "e & Tel", "E-TEL" }, { 0x00069B, "AVT Audio Video Technologies GmbH", "AVT-AUDIO-VIDEO-TECHNOLOGIES" }, { 0x00069C, "Transmode Systems AB", "TRANSMODE-AB" }, { 0x00069D, "Petards Ltd", "PETARDS" }, { 0x00069E, "UNIQA, Inc.", "UNIQA" }, { 0x00069F, "Kuokoa Networks", "KUOKOA-NETWORKS" }, { 0x0006A0, "Mx Imaging", "MX-IMAGING" }, { 0x0006A1, "Celsian Technologies, Inc.", "CELSIAN-TECHNOLOGIES" }, { 0x0006A2, "Microtune, Inc.", "MICROTUNE" }, { 0x0006A3, "Bitran Corporation", "BITRAN" }, { 0x0006A4, "INNOWELL Corp.", "INNOWELL" }, { 0x0006A5, "PINON Corp.", "PINON" }, { 0x0006A6, "Artistic Licence Engineering Ltd", "ARTISTIC-LICENCE-ENGINEERING" }, { 0x0006A7, "Primarion", "PRIMARION" }, { 0x0006A8, "KC Technology, Inc.", "KC" }, { 0x0006A9, "Universal Instruments Corp.", "UNIVERSAL-INSTRUMENTS" }, { 0x0006AA, "VT Miltope", "VT-MILTOPE" }, { 0x0006AB, "W-Link Systems, Inc.", "W-LINK" }, { 0x0006AC, "Intersoft Co.", "INTERSOFT" }, { 0x0006AD, "KB Electronics Ltd.", "KB-ELECTRONICS" }, { 0x0006AE, "Himachal Futuristic Communications Ltd", "HIMACHAL-FUTURISTIC-COMMUNICATION" }, { 0x0006AF, "Xalted Networks", "XALTED-NETWORKS" }, { 0x0006B0, "Comtech EF Data Corp.", "COMTECH-EF-DATA" }, { 0x0006B1, "Sonicwall", "SONICWALL" }, { 0x0006B2, "Linxtek Co.", "LINXTEK" }, { 0x0006B3, "Diagraph Corporation", "DIAGRAPH" }, { 0x0006B4, "Vorne Industries, Inc.", "VORNE-INDUSTRIES" }, { 0x0006B5, "Source Photonics, Inc.", "SOURCE-PHOTONICS" }, { 0x0006B6, "Nir-Or Israel Ltd.", "NIR-OR-ISRAEL" }, { 0x0006B7, "TELEM GmbH", "TELEM" }, { 0x0006B8, "Bandspeed Pty Ltd", "BANDSPEED-PTY" }, { 0x0006B9, "A5TEK Corp.", "A5TEK" }, { 0x0006BA, "Westwave Communications", "WESTWAVE-COMMUNICATION" }, { 0x0006BB, "ATI Technologies Inc.", "ATI-TECHNOLOGIES" }, { 0x0006BC, "Macrolink, Inc.", "MACROLINK" }, { 0x0006BD, "BNTECHNOLOGY Co., Ltd.", "BNTECHNOLOGY" }, { 0x0006BE, "Baumer Optronic GmbH", "BAUMER-OPTRONIC" }, { 0x0006BF, "Accella Technologies Co., Ltd.", "ACCELLA-TECHNOLOGIES" }, { 0x0006C0, "United Internetworks, Inc.", "UNITED-INTERNETWORKS" }, { 0x0006C1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0006C2, "Smartmatic Corporation", "SMARTMATIC" }, { 0x0006C3, "Schindler Elevator Ltd.", "SCHINDLER-ELEVATOR" }, { 0x0006C4, "Piolink Inc.", "PIOLINK" }, { 0x0006C5, "INNOVI Technologies Limited", "INNOVI-TECHNOLOGIES" }, { 0x0006C6, "lesswire AG", "LESSWIRE" }, { 0x0006C7, "RFNET Technologies Pte Ltd (S)", "RFNET-TECHNOLOGIES-PTE-S" }, { 0x0006C8, "Sumitomo Metal Micro Devices, Inc.", "SUMITOMO-METAL-MICRO-DEVICES" }, { 0x0006C9, "Technical Marketing Research, Inc.", "TECHNICAL-MARKETING-RESEARCH" }, { 0x0006CA, "American Computer & Digital Components, Inc. (ACDC)", "AMERICAN-DIGITAL-COMPONENTS-ACDC" }, { 0x0006CB, "Jotron Electronics A/S", "JOTRON-ELECTRONICS-A/S" }, { 0x0006CC, "JMI Electronics Co., Ltd.", "JMI-ELECTRONICS" }, { 0x0006CD, "Leaf Imaging Ltd.", "LEAF-IMAGING" }, { 0x0006CE, "DATENO", "DATENO" }, { 0x0006CF, "Thales Avionics In-Flight Systems, LLC", "THALES-AVIONICS-IN-FLIGHT-LLC" }, { 0x0006D0, "Elgar Electronics Corp.", "ELGAR-ELECTRONICS" }, { 0x0006D1, "Tahoe Networks, Inc.", "TAHOE-NETWORKS" }, { 0x0006D2, "Tundra Semiconductor Corp.", "TUNDRA-SEMICONDUCTOR" }, { 0x0006D3, "Alpha Telecom, Inc. U.S.A.", "ALPHA-TELECOM-U" }, { 0x0006D4, "Interactive Objects, Inc.", "INTERACTIVE-OBJECTS" }, { 0x0006D5, "Diamond Systems Corp.", "DIAMOND" }, { 0x0006D6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0006D7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0006D8, "Maple Optical Systems", "MAPLE-OPTICAL" }, { 0x0006D9, "IPM-Net S.p.A.", "IPM-NET-S-P-A" }, { 0x0006DA, "ITRAN Communications Ltd.", "ITRAN-COMMUNICATION" }, { 0x0006DB, "ICHIPS Co., Ltd.", "ICHIPS" }, { 0x0006DC, "Syabas Technology (Amquest)", "SYABAS-AMQUEST" }, { 0x0006DD, "AT & T Laboratories - Cambridge Ltd", "AT-T-LABORATORIES---CAMBRIDGE" }, { 0x0006DE, "Flash Technology", "FLASH" }, { 0x0006DF, "AIDONIC Corporation", "AIDONIC" }, { 0x0006E0, "MAT Co., Ltd.", "MAT" }, { 0x0006E1, "Techno Trade s.a", "TECHNO-TRADE" }, { 0x0006E2, "Ceemax Technology Co., Ltd.", "CEEMAX" }, { 0x0006E3, "Quantitative Imaging Corporation", "QUANTITATIVE-IMAGING" }, { 0x0006E4, "Citel Technologies Ltd.", "CITEL-TECHNOLOGIES" }, { 0x0006E5, "Fujian Newland Computer Ltd. Co.", "FUJIAN-NEWLAND" }, { 0x0006E6, "DongYang Telecom Co., Ltd.", "DONGYANG-TELECOM" }, { 0x0006E7, "Bit Blitz Communications Inc.", "BIT-BLITZ-COMMUNICATION" }, { 0x0006E8, "Optical Network Testing, Inc.", "OPTICAL-NETWORK-TESTING" }, { 0x0006E9, "Intime Corp.", "INTIME" }, { 0x0006EA, "ELZET80 Mikrocomputer GmbH&Co. KG", "ELZET80-MIKROCOMPUTER" }, { 0x0006EB, "Global Data", "GLOBAL-DATA" }, { 0x0006EC, "Harris Corporation", "HARRIS" }, { 0x0006ED, "Inara Networks", "INARA-NETWORKS" }, { 0x0006EE, "Shenyang Neu-era Information & Technology Stock Co., Ltd", "SHENYANG-NEU-ERA-INFORMATION-STOCK" }, { 0x0006EF, "Maxxan Systems, Inc.", "MAXXAN" }, { 0x0006F0, "Digeo, Inc.", "DIGEO" }, { 0x0006F1, "Optillion", "OPTILLION" }, { 0x0006F2, "Platys Communications", "PLATYS-COMMUNICATION" }, { 0x0006F3, "AcceLight Networks", "ACCELIGHT-NETWORKS" }, { 0x0006F4, "Prime Electronics & Satellitics Inc.", "PRIME-ELECTRONICS-SATELLITICS" }, { 0x0006F5, "ALPS Co,. Ltd.", "ALPS" }, { 0x0006F6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0006F7, "ALPS Co,. Ltd.", "ALPS" }, { 0x0006F8, "CPU Technology, Inc.", "CPU" }, { 0x0006F9, "Mitsui Zosen Systems Research Inc.", "MITSUI-ZOSEN-RESEARCH" }, { 0x0006FA, "IP SQUARE Co, Ltd.", "IP-SQUARE" }, { 0x0006FB, "Hitachi Printing Solutions, Ltd.", "HITACHI-PRINTING-SOLUTIONS" }, { 0x0006FC, "Fnet Co., Ltd.", "FNET" }, { 0x0006FD, "Comjet Information Systems Corp.", "COMJET-INFORMATION" }, { 0x0006FE, "Ambrado, Inc", "AMBRADO" }, { 0x0006FF, "Sheba Systems Co., Ltd.", "SHEBA" }, { 0x000700, "Zettamedia Korea", "ZETTAMEDIA-KOREA" }, { 0x000701, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x000702, "Varian Medical Systems", "VARIAN-MEDICAL" }, { 0x000703, "CSEE Transport", "CSEE-TRANSPORT" }, { 0x000704, "ALPS Co,. Ltd.", "ALPS" }, { 0x000705, "Endress & Hauser GmbH & Co", "ENDRESS-HAUSER" }, { 0x000706, "Sanritz Corporation", "SANRITZ" }, { 0x000707, "Interalia Inc.", "INTERALIA" }, { 0x000708, "Bitrage Inc.", "BITRAGE" }, { 0x000709, "Westerstrand Urfabrik AB", "WESTERSTRAND-URFABRIK-AB" }, { 0x00070A, "Unicom Automation Co., Ltd.", "UNICOM-AUTOMATION" }, { 0x00070B, "Novabase SGPS, SA", "NOVABASE-SGPS" }, { 0x00070C, "SVA-Intrusion.com Co. Ltd.", "SVA-INTRUSION-COM" }, { 0x00070D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00070E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00070F, "Fujant, Inc.", "FUJANT" }, { 0x000710, "Adax, Inc.", "ADAX" }, { 0x000711, "Acterna", "ACTERNA" }, { 0x000712, "JAL Information Technology", "JAL-INFORMATION" }, { 0x000713, "IP One, Inc.", "IP-ONE" }, { 0x000714, "Brightcom", "BRIGHTCOM" }, { 0x000715, "General Research of Electronics, Inc.", "GENERAL-RESEARCH-OF-ELECTRONICS" }, { 0x000716, "J & S Marine Ltd.", "J-S-MARINE" }, { 0x000717, "Wieland Electric GmbH", "WIELAND-ELECTRIC" }, { 0x000718, "iCanTek Co., Ltd.", "ICANTEK" }, { 0x000719, "Mobiis Co., Ltd.", "MOBIIS" }, { 0x00071A, "Finedigital Inc.", "FINEDIGITAL" }, { 0x00071B, "CDVI Americas Ltd", "CDVI-AMERICAS" }, { 0x00071C, "AT&T Fixed Wireless Services", "AT-T-FIXED-WIRELESS-SERVICES" }, { 0x00071D, "Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A.", "SATELSA-SISTEMAS-Y-APLICACIONES-DE-TELECOMUNICACIONES" }, { 0x00071E, "Tri-M Engineering / Nupak Dev. Corp.", "TRI-M-ENGINEERING-/-NUPAK-DEV" }, { 0x00071F, "European Systems Integration", "EUROPEAN-INTEGRATION" }, { 0x000720, "Trutzschler GmbH & Co. KG", "TRUTZSCHLER" }, { 0x000721, "Formac Elektronik GmbH", "FORMAC-ELEKTRONIK" }, { 0x000722, "The Nielsen Company", "THE-NIELSEN-COMPANY" }, { 0x000723, "ELCON Systemtechnik GmbH", "ELCON-SYSTEMTECHNIK" }, { 0x000724, "Telemax Co., Ltd.", "TELEMAX" }, { 0x000725, "Bematech International Corp.", "BEMATECH" }, { 0x000726, "Shenzhen Gongjin Electronics Co., Ltd.", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x000727, "Zi Corporation (HK) Ltd.", "ZI-HK" }, { 0x000728, "Neo Telecom", "NEO-TELECOM" }, { 0x000729, "Kistler Instrumente AG", "KISTLER-INSTRUMENTE" }, { 0x00072A, "Innovance Networks", "INNOVANCE-NETWORKS" }, { 0x00072B, "Jung Myung Telecom Co., Ltd.", "JUNG-MYUNG-TELECOM" }, { 0x00072C, "Fabricom", "FABRICOM" }, { 0x00072D, "CNSystems", "CNSYSTEMS" }, { 0x00072E, "North Node AB", "NORTH-NODE-AB" }, { 0x00072F, "Intransa, Inc.", "INTRANSA" }, { 0x000730, "Hutchison OPTEL Telecom Technology Co., Ltd.", "HUTCHISON-OPTEL-TELECOM" }, { 0x000731, "Ophir-Spiricon LLC", "OPHIR-SPIRICON-LLC" }, { 0x000732, "AAEON Technology Inc.", "AAEON" }, { 0x000733, "DANCONTROL Engineering", "DANCONTROL-ENGINEERING" }, { 0x000734, "ONStor, Inc.", "ONSTOR" }, { 0x000735, "Flarion Technologies, Inc.", "FLARION-TECHNOLOGIES" }, { 0x000736, "Data Video Technologies Co., Ltd.", "DATA-VIDEO-TECHNOLOGIES" }, { 0x000737, "Soriya Co. Ltd.", "SORIYA" }, { 0x000738, "Young Technology Co., Ltd.", "YOUNG" }, { 0x000739, "Scotty Group Austria Gmbh", "SCOTTY-GROUP-AUSTRIA" }, { 0x00073A, "Inventel Systemes", "INVENTEL-SYSTEMES" }, { 0x00073B, "Tenovis GmbH & Co KG", "TENOVIS" }, { 0x00073C, "Telecom Design", "TELECOM-DESIGN" }, { 0x00073D, "Nanjing Postel Telecommunications Co., Ltd.", "NANJING-POSTEL-TELECOMMUNICATIONS" }, { 0x00073E, "China Great-Wall Computer Shenzhen Co., Ltd.", "CHINA-GREAT-WALL-SHENZHEN" }, { 0x00073F, "Woojyun Systec Co., Ltd.", "WOOJYUN-SYSTEC" }, { 0x000740, "Buffalo Inc.", "BUFFALO" }, { 0x000741, "Sierra Automated Systems", "SIERRA-AUTOMATED" }, { 0x000742, "Current Technologies, LLC", "CURRENT-TECHNOLOGIES-LLC" }, { 0x000743, "Chelsio Communications", "CHELSIO-COMMUNICATION" }, { 0x000744, "Unico, Inc.", "UNICO" }, { 0x000745, "Radlan Computer Communications Ltd.", "RADLAN-COMMUNICATION" }, { 0x000746, "TURCK, Inc.", "TURCK" }, { 0x000747, "Mecalc", "MECALC" }, { 0x000748, "The Imaging Source Europe", "THE-IMAGING-SOURCE-EUROPE" }, { 0x000749, "CENiX Inc.", "CENIX" }, { 0x00074A, "Carl Valentin GmbH", "CARL-VALENTIN" }, { 0x00074B, "Daihen Corporation", "DAIHEN" }, { 0x00074C, "Beicom Inc.", "BEICOM" }, { 0x00074D, "Zebra Technologies Corp.", "ZEBRA-TECHNOLOGIES" }, { 0x00074E, "IPFRONT Inc", "IPFRONT" }, { 0x00074F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000750, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000751, "m-u-t AG", "M-U-T" }, { 0x000752, "Rhythm Watch Co., Ltd.", "RHYTHM-WATCH" }, { 0x000753, "Beijing Qxcomm Technology Co., Ltd.", "BEIJING-QXCOMM" }, { 0x000754, "Xyterra Computing, Inc.", "XYTERRA-COMPUTING" }, { 0x000755, "Lafon", "LAFON" }, { 0x000756, "Juyoung Telecom", "JUYOUNG-TELECOM" }, { 0x000757, "Topcall International AG", "TOPCALL" }, { 0x000758, "Dragonwave", "DRAGONWAVE" }, { 0x000759, "Boris Manufacturing Corp.", "BORIS-MANUFACTURING" }, { 0x00075A, "Air Products and Chemicals, Inc.", "AIR-PRODUCTS-AND-CHEMICALS" }, { 0x00075B, "Gibson Guitars", "GIBSON-GUITARS" }, { 0x00075C, "Eastman Kodak Company", "EASTMAN-KODAK-COMPANY" }, { 0x00075D, "Celleritas Inc.", "CELLERITAS" }, { 0x00075E, "Ametek Power Instruments", "AMETEK-POWER-INSTRUMENTS" }, { 0x00075F, "VCS Video Communication Systems AG", "VCS-VIDEO-COMMUNICATION" }, { 0x000760, "TOMIS Information & Telecom Corp.", "TOMIS-INFORMATION-TELECOM" }, { 0x000761, "Logitech Europe SA", "LOGITECH-EUROPE" }, { 0x000762, "Group Sense Limited", "GROUP-SENSE" }, { 0x000763, "Sunniwell Cyber Tech. Co., Ltd.", "SUNNIWELL-CYBER-TECH" }, { 0x000764, "YoungWoo Telecom Co. Ltd.", "YOUNGWOO-TELECOM" }, { 0x000765, "Jade Quantum Technologies, Inc.", "JADE-QUANTUM-TECHNOLOGIES" }, { 0x000766, "Chou Chin Industrial Co., Ltd.", "CHOU-CHIN-INDUSTRIAL" }, { 0x000767, "Yuxing Electronics Company Limited", "YUXING-ELECTRONICS-COMPANY" }, { 0x000768, "Danfoss A/S", "DANFOSS-A/S" }, { 0x000769, "Italiana Macchi SpA", "ITALIANA-MACCHI-SPA" }, { 0x00076A, "NEXTEYE Co., Ltd.", "NEXTEYE" }, { 0x00076B, "Stralfors AB", "STRALFORS-AB" }, { 0x00076C, "Daehanet, Inc.", "DAEHANET" }, { 0x00076D, "Flexlight Networks", "FLEXLIGHT-NETWORKS" }, { 0x00076E, "Sinetica Corporation Limited", "SINETICA" }, { 0x00076F, "Synoptics Limited", "SYNOPTICS" }, { 0x000770, "Locusnetworks Corporation", "LOCUSNETWORKS" }, { 0x000771, "Embedded System Corporation", "EMBEDDED-SYSTEM" }, { 0x000772, "Alcatel Shanghai Bell Co., Ltd.", "ALCATEL-SHANGHAI-BELL" }, { 0x000773, "Ascom Powerline Communications Ltd.", "ASCOM-POWERLINE-COMMUNICATION" }, { 0x000774, "GuangZhou Thinker Technology Co. Ltd.", "GUANGZHOU-THINKER" }, { 0x000775, "Valence Semiconductor, Inc.", "VALENCE-SEMICONDUCTOR" }, { 0x000776, "Federal APD", "FEDERAL-APD" }, { 0x000777, "Motah Ltd.", "MOTAH" }, { 0x000778, "GERSTEL GmbH & Co. KG", "GERSTEL" }, { 0x000779, "Sungil Telecom Co., Ltd.", "SUNGIL-TELECOM" }, { 0x00077A, "Infoware System Co., Ltd.", "INFOWARE-SYSTEM" }, { 0x00077B, "Millimetrix Broadband Networks", "MILLIMETRIX-BROADBAND-NETWORKS" }, { 0x00077C, "Westermo Teleindustri AB", "WESTERMO-TELEINDUSTRI-AB" }, { 0x00077D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00077E, "Elrest GmbH", "ELREST" }, { 0x00077F, "J Communications Co., Ltd.", "J-COMMUNICATION" }, { 0x000780, "Bluegiga Technologies OY", "BLUEGIGA-TECHNOLOGIES-OY" }, { 0x000781, "Itron Inc.", "ITRON" }, { 0x000782, "Oracle Corporation", "ORACLE" }, { 0x000783, "SynCom Network, Inc.", "SYNCOM-NETWORK" }, { 0x000784, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000785, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000786, "Wireless Networks Inc.", "WIRELESS-NETWORKS" }, { 0x000787, "Idea System Co., Ltd.", "IDEA-SYSTEM" }, { 0x000788, "Clipcomm, Inc.", "CLIPCOMM" }, { 0x000789, "DONGWON SYSTEMS", "DONGWON" }, { 0x00078A, "Mentor Data System Inc.", "MENTOR-DATA-SYSTEM" }, { 0x00078B, "Wegener Communications, Inc.", "WEGENER-COMMUNICATION" }, { 0x00078C, "Elektronikspecialisten i Borlange AB", "ELEKTRONIKSPECIALISTEN-I-BORLANGE-AB" }, { 0x00078D, "NetEngines Ltd.", "NETENGINES" }, { 0x00078E, "Garz & Friche GmbH", "GARZ-FRICHE" }, { 0x00078F, "Emkay Innovative Products", "EMKAY-INNOVATIVE-PRODUCTS" }, { 0x000790, "Tri-M Technologies (s) Limited", "TRI-M-TECHNOLOGIES-S" }, { 0x000791, "International Data Communications, Inc.", "DATA-COMMUNICATION" }, { 0x000792, "Sütron Electronic GmbH", "SüTRON" }, { 0x000793, "Shin Satellite Public Company Limited", "SHIN-SATELLITE-PUBLIC-COMPANY" }, { 0x000794, "Simple Devices, Inc.", "SIMPLE-DEVICES" }, { 0x000795, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x000796, "LSI Systems, Inc.", "LSI" }, { 0x000797, "Netpower Co., Ltd.", "NETPOWER" }, { 0x000798, "Selea SRL", "SELEA-SRL" }, { 0x000799, "Tipping Point Technologies, Inc.", "TIPPING-POINT-TECHNOLOGIES" }, { 0x00079A, "Verint Systems Inc", "VERINT" }, { 0x00079B, "Aurora Networks", "AURORA-NETWORKS" }, { 0x00079C, "Golden Electronics Technology Co., Ltd.", "GOLDEN-ELECTRONICS" }, { 0x00079D, "Musashi Co., Ltd.", "MUSASHI" }, { 0x00079E, "Ilinx Co., Ltd.", "ILINX" }, { 0x00079F, "Action Digital Inc.", "ACTION-DIGITAL" }, { 0x0007A0, "e-Watch Inc.", "E-WATCH" }, { 0x0007A1, "VIASYS Healthcare GmbH", "VIASYS-HEALTHCARE" }, { 0x0007A2, "Opteon Corporation", "OPTEON" }, { 0x0007A3, "Ositis Software, Inc.", "OSITIS-SOFTWARE" }, { 0x0007A4, "GN Netcom Ltd.", "GN-NETCOM" }, { 0x0007A5, "Y.D.K Co. Ltd.", "Y-D-K" }, { 0x0007A6, "Home Automation, Inc.", "HOME-AUTOMATION" }, { 0x0007A7, "A-Z Inc.", "A-Z" }, { 0x0007A8, "Haier Group Technologies Ltd.", "HAIER-GROUP-TECHNOLOGIES" }, { 0x0007A9, "Novasonics", "NOVASONICS" }, { 0x0007AA, "Quantum Data Inc.", "QUANTUM-DATA" }, { 0x0007AB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0007AC, "Eolring", "EOLRING" }, { 0x0007AD, "Pentacon GmbH Foto-und Feinwerktechnik", "PENTACON-FOTO-UND-FEINWERKTECHNIK" }, { 0x0007AE, "Britestream Networks, Inc.", "BRITESTREAM-NETWORKS" }, { 0x0007AF, "N-TRON Corporation", "N-TRON" }, { 0x0007B0, "Office Details, Inc.", "OFFICE-DETAILS" }, { 0x0007B1, "Equator Technologies", "EQUATOR-TECHNOLOGIES" }, { 0x0007B2, "Transaccess S.A.", "TRANSACCESS" }, { 0x0007B3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0007B4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0007B5, "Any One Wireless Ltd.", "ANY-ONE-WIRELESS" }, { 0x0007B6, "Telecom Technology Ltd.", "TELECOM" }, { 0x0007B7, "Samurai Ind. Prods Eletronicos Ltda", "SAMURAI-IND-PRODS-ELETRONICOS-LTDA" }, { 0x0007B8, "Corvalent Corporation", "CORVALENT" }, { 0x0007B9, "Ginganet Corporation", "GINGANET" }, { 0x0007BA, "UTStarcom, Inc.", "UTSTARCOM" }, { 0x0007BB, "Candera Inc.", "CANDERA" }, { 0x0007BC, "Identix Inc.", "IDENTIX" }, { 0x0007BD, "Radionet Ltd.", "RADIONET" }, { 0x0007BE, "DataLogic SpA", "DATALOGIC-SPA" }, { 0x0007BF, "Armillaire Technologies, Inc.", "ARMILLAIRE-TECHNOLOGIES" }, { 0x0007C0, "NetZerver Inc.", "NETZERVER" }, { 0x0007C1, "Overture Networks, Inc.", "OVERTURE-NETWORKS" }, { 0x0007C2, "Netsys Telecom", "NETSYS-TELECOM" }, { 0x0007C3, "Thomson", "THOMSON" }, { 0x0007C4, "JEAN Co. Ltd.", "JEAN" }, { 0x0007C5, "Gcom, Inc.", "GCOM" }, { 0x0007C6, "VDS Vosskuhler GmbH", "VDS-VOSSKUHLER" }, { 0x0007C7, "Synectics Systems Limited", "SYNECTICS" }, { 0x0007C8, "Brain21, Inc.", "BRAIN21" }, { 0x0007C9, "Technol Seven Co., Ltd.", "TECHNOL-SEVEN" }, { 0x0007CA, "Creatix Polymedia Ges Fur Kommunikaitonssysteme", "CREATIX-POLYMEDIA-GES-FUR-KOMMUNIKAITONSSYSTEME" }, { 0x0007CB, "Freebox SA", "FREEBOX" }, { 0x0007CC, "Kaba Benzing GmbH", "KABA-BENZING" }, { 0x0007CD, "NMTEL Co., Ltd.", "NMTEL" }, { 0x0007CE, "Cabletime Limited", "CABLETIME" }, { 0x0007CF, "Anoto AB", "ANOTO-AB" }, { 0x0007D0, "Automat Engenharia de Automação Ltda.", "AUTOMAT-ENGENHARIA-DE-AUTOMAçãO-LTDA" }, { 0x0007D1, "Spectrum Signal Processing Inc.", "SPECTRUM-SIGNAL-PROCESSING" }, { 0x0007D2, "Logopak Systeme GmbH & Co. KG", "LOGOPAK-SYSTEME" }, { 0x0007D3, "Stork Prints B.V.", "STORK-PRINTS" }, { 0x0007D4, "Zhejiang Yutong Network Communication Co Ltd.", "ZHEJIANG-YUTONG-NETWORK-COMMUNICATION" }, { 0x0007D5, "3e Technologies Int;., Inc.", "3E-TECHNOLOGIES-INT" }, { 0x0007D6, "Commil Ltd.", "COMMIL" }, { 0x0007D7, "Caporis Networks AG", "CAPORIS-NETWORKS" }, { 0x0007D8, "Hitron Systems Inc.", "HITRON" }, { 0x0007D9, "Splicecom", "SPLICECOM" }, { 0x0007DA, "Neuro Telecom Co., Ltd.", "NEURO-TELECOM" }, { 0x0007DB, "Kirana Networks, Inc.", "KIRANA-NETWORKS" }, { 0x0007DC, "Atek Co, Ltd.", "ATEK" }, { 0x0007DD, "Cradle Technologies", "CRADLE-TECHNOLOGIES" }, { 0x0007DE, "eCopilt AB", "ECOPILT-AB" }, { 0x0007DF, "Vbrick Systems Inc.", "VBRICK" }, { 0x0007E0, "Palm Inc.", "PALM" }, { 0x0007E1, "WIS Communications Co. Ltd.", "WIS-COMMUNICATION" }, { 0x0007E2, "Bitworks, Inc.", "BITWORKS" }, { 0x0007E3, "Navcom Technology, Inc.", "NAVCOM" }, { 0x0007E4, "SoftRadio Co., Ltd.", "SOFTRADIO" }, { 0x0007E5, "Coup Corporation", "COUP" }, { 0x0007E6, "edgeflow Canada Inc.", "EDGEFLOW-CANADA" }, { 0x0007E7, "FreeWave Technologies", "FREEWAVE-TECHNOLOGIES" }, { 0x0007E8, "EdgeWave", "EDGEWAVE" }, { 0x0007E9, "Intel Corporation", "INTEL" }, { 0x0007EA, "Massana, Inc.", "MASSANA" }, { 0x0007EB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0007EC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0007ED, "Altera Corporation", "ALTERA" }, { 0x0007EE, "telco Informationssysteme GmbH", "TELCO-INFORMATIONSSYSTEME" }, { 0x0007EF, "Lockheed Martin Tactical Systems", "LOCKHEED-MARTIN-TACTICAL" }, { 0x0007F0, "LogiSync LLC", "LOGISYNC-LLC" }, { 0x0007F1, "TeraBurst Networks Inc.", "TERABURST-NETWORKS" }, { 0x0007F2, "IOA Corporation", "IOA" }, { 0x0007F3, "Thinkengine Networks", "THINKENGINE-NETWORKS" }, { 0x0007F4, "Eletex Co., Ltd.", "ELETEX" }, { 0x0007F5, "Bridgeco Co AG", "BRIDGECO" }, { 0x0007F6, "Qqest Software Systems", "QQEST-SOFTWARE" }, { 0x0007F7, "Galtronics", "GALTRONICS" }, { 0x0007F8, "ITDevices, Inc.", "ITDEVICES" }, { 0x0007F9, "Sensaphone", "SENSAPHONE" }, { 0x0007FA, "ITT Co., Ltd.", "ITT" }, { 0x0007FB, "Giga Stream UMTS Technologies GmbH", "GIGA-STREAM-UMTS-TECHNOLOGIES" }, { 0x0007FC, "Adept Systems Inc.", "ADEPT" }, { 0x0007FD, "LANergy Ltd.", "LANERGY" }, { 0x0007FE, "Rigaku Corporation", "RIGAKU" }, { 0x0007FF, "Gluon Networks", "GLUON-NETWORKS" }, { 0x000800, "MULTITECH SYSTEMS, INC.", "MULTITECH" }, { 0x000801, "HighSpeed Surfing Inc.", "HIGHSPEED-SURFING" }, { 0x000802, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000803, "Cos Tron", "COS-TRON" }, { 0x000804, "ICA Inc.", "ICA" }, { 0x000805, "Techno-Holon Corporation", "TECHNO-HOLON" }, { 0x000806, "Raonet Systems, Inc.", "RAONET" }, { 0x000807, "Access Devices Limited", "ACCESS-DEVICES" }, { 0x000808, "PPT Vision, Inc.", "PPT-VISION" }, { 0x000809, "Systemonic AG", "SYSTEMONIC" }, { 0x00080A, "Espera-Werke GmbH", "ESPERA-WERKE" }, { 0x00080B, "Birka BPA Informationssystem AB", "BIRKA-BPA-INFORMATIONSSYSTEM-AB" }, { 0x00080C, "VDA Elettronica spa", "VDA-ELETTRONICA-SPA" }, { 0x00080D, "Toshiba", "TOSHIBA" }, { 0x00080E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00080F, "Proximion Fiber Optics AB", "PROXIMION-FIBER-OPTICS-AB" }, { 0x000810, "Key Technology, Inc.", "KEY" }, { 0x000811, "VOIX Corporation", "VOIX" }, { 0x000812, "GM-2 Corporation", "GM-2" }, { 0x000813, "Diskbank, Inc.", "DISKBANK" }, { 0x000814, "TIL Technologies", "TIL-TECHNOLOGIES" }, { 0x000815, "CATS Co., Ltd.", "CATS" }, { 0x000816, "Bluetags A/S", "BLUETAGS-A/S" }, { 0x000817, "EmergeCore Networks LLC", "EMERGECORE-NETWORKS-LLC" }, { 0x000818, "Pixelworks, Inc.", "PIXELWORKS" }, { 0x000819, "Banksys", "BANKSYS" }, { 0x00081A, "Sanrad Intelligence Storage Communications (2000) Ltd.", "SANRAD-INTELLIGENCE-STORAGE-COMMUNICATION-2000" }, { 0x00081B, "Windigo Systems", "WINDIGO" }, { 0x00081C, "@pos.com", "@POS-COM" }, { 0x00081D, "Ipsil, Incorporated", "IPSIL-INCORPORATED" }, { 0x00081E, "Repeatit AB", "REPEATIT-AB" }, { 0x00081F, "Pou Yuen Tech Corp. Ltd.", "POU-YUEN-TECH" }, { 0x000820, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000821, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000822, "InPro Comm", "INPRO-COMM" }, { 0x000823, "Texa Corp.", "TEXA" }, { 0x000824, "Nuance Document Imaging", "NUANCE-DOCUMENT-IMAGING" }, { 0x000825, "Acme Packet", "ACME-PACKET" }, { 0x000826, "Colorado Med Tech", "COLORADO-MED-TECH" }, { 0x000827, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x000828, "Koei Engineering Ltd.", "KOEI-ENGINEERING" }, { 0x000829, "Aval Nagasaki Corporation", "AVAL-NAGASAKI" }, { 0x00082A, "Powerwallz Network Security", "POWERWALLZ-NETWORK-SECURITY" }, { 0x00082B, "Wooksung Electronics, Inc.", "WOOKSUNG-ELECTRONICS" }, { 0x00082C, "Homag AG", "HOMAG" }, { 0x00082D, "Indus Teqsite Private Limited", "INDUS-TEQSITE-PRIVATE" }, { 0x00082E, "Multitone Electronics PLC", "MULTITONE-ELECTRONICS-PLC" }, { 0x00082F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000830, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000831, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000832, "Cisco", "CISCO" }, { 0x00084E, "DivergeNet, Inc.", "DIVERGENET" }, { 0x00084F, "Qualstar Corporation", "QUALSTAR" }, { 0x000850, "Arizona Instrument Corp.", "ARIZONA-INSTRUMENT" }, { 0x000851, "Canadian Bank Note Company, Ltd.", "CANADIAN-BANK-NOTE-COMPANY" }, { 0x000852, "Davolink Co. Inc.", "DAVOLINK" }, { 0x000853, "Schleicher GmbH & Co. Relaiswerke KG", "SCHLEICHER-RELAISWERKE" }, { 0x000854, "Netronix, Inc.", "NETRONIX" }, { 0x000855, "NASA-Goddard Space Flight Center", "NASA-GODDARD-SPACE-FLIGHT-CENTER" }, { 0x000856, "Gamatronic Electronic Industries Ltd.", "GAMATRONIC-INDUSTRIES" }, { 0x000857, "Polaris Networks, Inc.", "POLARIS-NETWORKS" }, { 0x000858, "Novatechnology Inc.", "NOVATECHNOLOGY" }, { 0x000859, "ShenZhen Unitone Electronics Co., Ltd.", "SHENZHEN-UNITONE-ELECTRONICS" }, { 0x00085A, "IntiGate Inc.", "INTIGATE" }, { 0x00085B, "Hanbit Electronics Co., Ltd.", "HANBIT-ELECTRONICS" }, { 0x00085C, "Shanghai Dare Technologies Co. Ltd.", "SHANGHAI-DARE-TECHNOLOGIES" }, { 0x00085D, "Aastra", "AASTRA" }, { 0x00085E, "PCO AG", "PCO" }, { 0x00085F, "Picanol N.V.", "PICANOL-N-V" }, { 0x000860, "LodgeNet Entertainment Corp.", "LODGENET-ENTERTAINMENT" }, { 0x000861, "SoftEnergy Co., Ltd.", "SOFTENERGY" }, { 0x000862, "NEC Eluminant Technologies, Inc.", "NEC-ELUMINANT-TECHNOLOGIES" }, { 0x000863, "Entrisphere Inc.", "ENTRISPHERE" }, { 0x000864, "Fasy S.p.A.", "FASY-S-P-A" }, { 0x000865, "JASCOM CO., LTD", "JASCOM" }, { 0x000866, "DSX Access Systems, Inc.", "DSX-ACCESS" }, { 0x000867, "Uptime Devices", "UPTIME-DEVICES" }, { 0x000868, "PurOptix", "PUROPTIX" }, { 0x000869, "Command-e Technology Co.,Ltd.", "COMMAND-E" }, { 0x00086A, "Securiton Gmbh", "SECURITON" }, { 0x00086B, "MIPSYS", "MIPSYS" }, { 0x00086C, "Plasmon LMS", "PLASMON-LMS" }, { 0x00086D, "Missouri FreeNet", "MISSOURI-FREENET" }, { 0x00086E, "Hyglo AB", "HYGLO-AB" }, { 0x00086F, "Resources Computer Network Ltd.", "RESOURCES-NETWORK" }, { 0x000870, "Rasvia Systems, Inc.", "RASVIA" }, { 0x000871, "NORTHDATA Co., Ltd.", "NORTHDATA" }, { 0x000872, "Sorenson Communications", "SORENSON-COMMUNICATION" }, { 0x000873, "DapTechnology B.V.", "DAPTECHNOLOGY" }, { 0x000874, "Dell Computer Corp.", "DELL" }, { 0x000875, "Acorp Electronics Corp.", "ACORP-ELECTRONICS" }, { 0x000876, "SDSystem", "SDSYSTEM" }, { 0x000877, "Liebert-Hiross Spa", "LIEBERT-HIROSS-SPA" }, { 0x000878, "Benchmark Storage Innovations", "BENCHMARK-STORAGE-INNOVATIONS" }, { 0x000879, "CEM Corporation", "CEM" }, { 0x00087A, "Wipotec GmbH", "WIPOTEC" }, { 0x00087B, "RTX Telecom A/S", "RTX-TELECOM-A/S" }, { 0x00087C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00087D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00087E, "Bon Electro-Telecom Inc.", "BON-ELECTRO-TELECOM" }, { 0x00087F, "SPAUN electronic GmbH & Co. KG", "SPAUN" }, { 0x000880, "BroadTel Canada Communications inc.", "BROADTEL-CANADA-COMMUNICATION" }, { 0x000881, "DIGITAL HANDS CO.,LTD.", "DIGITAL-HANDS" }, { 0x000882, "SIGMA CORPORATION", "SIGMA" }, { 0x000883, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000884, "Index Braille AB", "INDEX-BRAILLE-AB" }, { 0x000885, "EMS Dr. Thomas Wünsche", "EMS-DR-THOMAS-WüNSCHE" }, { 0x000886, "Hansung Teliann, Inc.", "HANSUNG-TELIANN" }, { 0x000887, "Maschinenfabrik Reinhausen GmbH", "MASCHINENFABRIK-REINHAUSEN" }, { 0x000888, "OULLIM Information Technology Inc,.", "OULLIM-INFORMATION" }, { 0x000889, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0x00088A, "Minds@Work", "MINDS@WORK" }, { 0x00088B, "Tropic Networks Inc.", "TROPIC-NETWORKS" }, { 0x00088C, "Quanta Network Systems Inc.", "QUANTA-NETWORK" }, { 0x00088D, "Sigma-Links Inc.", "SIGMA-LINKS" }, { 0x00088E, "Nihon Computer Co., Ltd.", "NIHON" }, { 0x00088F, "ADVANCED DIGITAL TECHNOLOGY", "ADVANCED-DIGITAL" }, { 0x000890, "AVILINKS SA", "AVILINKS" }, { 0x000891, "Lyan Inc.", "LYAN" }, { 0x000892, "EM Solutions", "EM-SOLUTIONS" }, { 0x000893, "LE INFORMATION COMMUNICATION INC.", "LE-INFORMATION-COMMUNICATION" }, { 0x000894, "InnoVISION Multimedia Ltd.", "INNOVISION-MULTIMEDIA" }, { 0x000895, "DIRC Technologie GmbH & Co.KG", "DIRC-TECHNOLOGIE" }, { 0x000896, "Printronix, Inc.", "PRINTRONIX" }, { 0x000897, "Quake Technologies", "QUAKE-TECHNOLOGIES" }, { 0x000898, "Gigabit Optics Corporation", "GIGABIT-OPTICS" }, { 0x000899, "Netbind, Inc.", "NETBIND" }, { 0x00089A, "Alcatel Microelectronics", "ALCATEL-MICROELECTRONICS" }, { 0x00089B, "ICP Electronics Inc.", "ICP-ELECTRONICS" }, { 0x00089C, "Elecs Industry Co., Ltd.", "ELECS-INDUSTRY" }, { 0x00089D, "UHD-Elektronik", "UHD-ELEKTRONIK" }, { 0x00089E, "Beijing Enter-Net co.LTD", "BEIJING-ENTER-NET" }, { 0x00089F, "EFM Networks", "EFM-NETWORKS" }, { 0x0008A0, "Stotz Feinmesstechnik GmbH", "STOTZ-FEINMESSTECHNIK" }, { 0x0008A1, "CNet Technology Inc.", "CNET" }, { 0x0008A2, "ADI Engineering, Inc.", "ADI-ENGINEERING" }, { 0x0008A3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0008A4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0008A5, "Peninsula Systems Inc.", "PENINSULA" }, { 0x0008A6, "Multiware & Image Co., Ltd.", "MULTIWARE-IMAGE" }, { 0x0008A7, "iLogic Inc.", "ILOGIC" }, { 0x0008A8, "Systec Co., Ltd.", "SYSTEC" }, { 0x0008A9, "SangSang Technology, Inc.", "SANGSANG" }, { 0x0008AA, "KARAM", "KARAM" }, { 0x0008AB, "EnerLinx.com, Inc.", "ENERLINX-COM" }, { 0x0008AC, "Eltromat GmbH", "ELTROMAT" }, { 0x0008AD, "Toyo-Linx Co., Ltd.", "TOYO-LINX" }, { 0x0008AE, "PacketFront Network Products AB", "PACKETFRONT-NETWORK-PRODUCTS-AB" }, { 0x0008AF, "Novatec Corporation", "NOVATEC" }, { 0x0008B0, "BKtel communications GmbH", "BKTEL-COMMUNICATION" }, { 0x0008B1, "ProQuent Systems", "PROQUENT" }, { 0x0008B2, "SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD", "SHENZHEN-COMPASS-DEVELOPMENT" }, { 0x0008B3, "Fastwel", "FASTWEL" }, { 0x0008B4, "SYSPOL", "SYSPOL" }, { 0x0008B5, "TAI GUEN ENTERPRISE CO., LTD", "TAI-GUEN" }, { 0x0008B6, "RouteFree, Inc.", "ROUTEFREE" }, { 0x0008B7, "HIT Incorporated", "HIT-INCORPORATED" }, { 0x0008B8, "E.F. Johnson", "E-F-JOHNSON" }, { 0x0008B9, "KAON MEDIA Co., Ltd.", "KAON-MEDIA" }, { 0x0008BA, "Erskine Systems Ltd", "ERSKINE" }, { 0x0008BB, "NetExcell", "NETEXCELL" }, { 0x0008BC, "Ilevo AB", "ILEVO-AB" }, { 0x0008BD, "TEPG-US", "TEPG-US" }, { 0x0008BE, "XENPAK MSA Group", "XENPAK-MSA-GROUP" }, { 0x0008BF, "Aptus Elektronik AB", "APTUS-ELEKTRONIK-AB" }, { 0x0008C0, "ASA SYSTEMS", "ASA" }, { 0x0008C1, "Avistar Communications Corporation", "AVISTAR-COMMUNICATION" }, { 0x0008C2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0008C3, "Contex A/S", "CONTEX-A/S" }, { 0x0008C4, "Hikari Co.,Ltd.", "HIKARI" }, { 0x0008C5, "Liontech Co., Ltd.", "LIONTECH" }, { 0x0008C6, "Philips Consumer Communications", "PHILIPS-CONSUMER-COMMUNICATION" }, { 0x0008C7, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0008C8, "Soneticom, Inc.", "SONETICOM" }, { 0x0008C9, "TechniSat Digital GmbH", "TECHNISAT-DIGITAL" }, { 0x0008CA, "TwinHan Technology Co.,Ltd", "TWINHAN" }, { 0x0008CB, "Zeta Broadband Inc.", "ZETA-BROADBAND" }, { 0x0008CC, "Remotec, Inc.", "REMOTEC" }, { 0x0008CD, "With-Net Inc", "WITH-NET" }, { 0x0008CE, "IPMobileNet Inc.", "IPMOBILENET" }, { 0x0008CF, "Nippon Koei Power Systems Co., Ltd.", "NIPPON-KOEI-POWER" }, { 0x0008D0, "Musashi Engineering Co., LTD.", "MUSASHI-ENGINEERING" }, { 0x0008D1, "KAREL INC.", "KAREL" }, { 0x0008D2, "ZOOM Networks Inc.", "ZOOM-NETWORKS" }, { 0x0008D3, "Hercules Technologies S.A.S.", "HERCULES-TECHNOLOGIES-S" }, { 0x0008D4, "IneoQuest Technologies, Inc", "INEOQUEST-TECHNOLOGIES" }, { 0x0008D5, "Vanguard Networks Solutions, LLC", "VANGUARD-NETWORKS-SOLUTIONS-LLC" }, { 0x0008D6, "HASSNET Inc.", "HASSNET" }, { 0x0008D7, "HOW CORPORATION", "HOW" }, { 0x0008D8, "Dowkey Microwave", "DOWKEY-MICROWAVE" }, { 0x0008D9, "Mitadenshi Co.,LTD", "MITADENSHI" }, { 0x0008DA, "SofaWare Technologies Ltd.", "SOFAWARE-TECHNOLOGIES" }, { 0x0008DB, "Corrigent Systems", "CORRIGENT" }, { 0x0008DC, "Wiznet", "WIZNET" }, { 0x0008DD, "Telena Communications, Inc.", "TELENA-COMMUNICATION" }, { 0x0008DE, "3UP Systems", "3UP" }, { 0x0008DF, "Alistel Inc.", "ALISTEL" }, { 0x0008E0, "ATO Technology Ltd.", "ATO" }, { 0x0008E1, "Barix AG", "BARIX" }, { 0x0008E2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0008E3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0008E4, "Envenergy Inc", "ENVENERGY" }, { 0x0008E5, "IDK Corporation", "IDK" }, { 0x0008E6, "Littlefeet", "LITTLEFEET" }, { 0x0008E7, "SHI ControlSystems,Ltd.", "SHI-CONTROLSYSTEMS" }, { 0x0008E8, "Excel Master Ltd.", "EXCEL-MASTER" }, { 0x0008E9, "NextGig", "NEXTGIG" }, { 0x0008EA, "Motion Control Engineering, Inc", "MOTION-CONTROL-ENGINEERING" }, { 0x0008EB, "ROMWin Co.,Ltd.", "ROMWIN" }, { 0x0008EC, "Optical Zonu Corporation", "OPTICAL-ZONU" }, { 0x0008ED, "ST&T Instrument Corp.", "ST-T-INSTRUMENT" }, { 0x0008EE, "Logic Product Development", "LOGIC-PRODUCT-DEVELOPMENT" }, { 0x0008EF, "DIBAL,S.A.", "DIBAL" }, { 0x0008F0, "Next Generation Systems, Inc.", "NEXT-GENERATION" }, { 0x0008F1, "Voltaire", "VOLTAIRE" }, { 0x0008F2, "C&S Technology", "C-S" }, { 0x0008F3, "WANY", "WANY" }, { 0x0008F4, "Bluetake Technology Co., Ltd.", "BLUETAKE" }, { 0x0008F5, "YESTECHNOLOGY Co.,Ltd.", "YESTECHNOLOGY" }, { 0x0008F6, "Sumitomo Electric System Solutions Co., Ltd.", "SUMITOMO-ELECTRIC-SYSTEM-SOLUTIONS" }, { 0x0008F7, "Hitachi Ltd, Semiconductor & Integrated Circuits Gr", "HITACHI-SEMICONDUCTOR-INTEGRATED-CIRCUITS-GR" }, { 0x0008F8, "UTC CCS", "UTC-CCS" }, { 0x0008F9, "Emerson Network Power", "EMERSON-NETWORK-POWER" }, { 0x0008FA, "Karl E.Brinkmann GmbH", "KARL-E-BRINKMANN" }, { 0x0008FB, "SonoSite, Inc.", "SONOSITE" }, { 0x0008FC, "Gigaphoton Inc.", "GIGAPHOTON" }, { 0x0008FD, "BlueKorea Co., Ltd.", "BLUEKOREA" }, { 0x0008FE, "UNIK C&C Co.,Ltd.", "UNIK-C-C" }, { 0x0008FF, "Trilogy Communications Ltd", "TRILOGY-COMMUNICATION" }, { 0x000900, "TMT", "TMT" }, { 0x000901, "Shenzhen Shixuntong Information & Technoligy Co", "SHENZHEN-SHIXUNTONG-INFORMATION-TECHNOLIGY" }, { 0x000902, "Redline Communications Inc.", "REDLINE-COMMUNICATION" }, { 0x000903, "Panasas, Inc", "PANASAS" }, { 0x000904, "MONDIAL electronic", "MONDIAL" }, { 0x000905, "iTEC Technologies Ltd.", "ITEC-TECHNOLOGIES" }, { 0x000906, "Esteem Networks", "ESTEEM-NETWORKS" }, { 0x000907, "Chrysalis Development", "CHRYSALIS-DEVELOPMENT" }, { 0x000908, "VTech Technology Corp.", "VTECH" }, { 0x000909, "Telenor Connect A/S", "TELENOR-CONNECT-A/S" }, { 0x00090A, "SnedFar Technology Co., Ltd.", "SNEDFAR" }, { 0x00090B, "MTL Instruments PLC", "MTL-INSTRUMENTS-PLC" }, { 0x00090C, "Mayekawa Mfg. Co. Ltd.", "MAYEKAWA-MFG" }, { 0x00090D, "LEADER ELECTRONICS CORP.", "LEADER-ELECTRONICS" }, { 0x00090E, "Helix Technology Inc.", "HELIX" }, { 0x00090F, "Fortinet Inc.", "FORTINET" }, { 0x000910, "Simple Access Inc.", "SIMPLE-ACCESS" }, { 0x000911, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000912, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000913, "SystemK Corporation", "SYSTEMK" }, { 0x000914, "COMPUTROLS INC.", "COMPUTROLS" }, { 0x000915, "CAS Corp.", "CAS" }, { 0x000916, "Listman Home Technologies, Inc.", "LISTMAN-HOME-TECHNOLOGIES" }, { 0x000917, "WEM Technology Inc", "WEM" }, { 0x000918, "SAMSUNG TECHWIN CO.,LTD", "SAMSUNG-TECHWIN" }, { 0x000919, "MDS Gateways", "MDS-GATEWAYS" }, { 0x00091A, "Macat Optics & Electronics Co., Ltd.", "MACAT-OPTICS-ELECTRONICS" }, { 0x00091B, "Digital Generation Inc.", "DIGITAL-GENERATION" }, { 0x00091C, "CacheVision, Inc", "CACHEVISION" }, { 0x00091D, "Proteam Computer Corporation", "PROTEAM" }, { 0x00091E, "Firstech Technology Corp.", "FIRSTECH" }, { 0x00091F, "A&D Co., Ltd.", "A-D" }, { 0x000920, "EpoX COMPUTER CO.,LTD.", "EPOX" }, { 0x000921, "Planmeca Oy", "PLANMECA-OY" }, { 0x000922, "TST Biometrics GmbH", "TST-BIOMETRICS" }, { 0x000923, "Heaman System Co., Ltd", "HEAMAN-SYSTEM" }, { 0x000924, "Telebau GmbH", "TELEBAU" }, { 0x000925, "VSN Systemen BV", "VSN-SYSTEMEN" }, { 0x000926, "YODA COMMUNICATIONS, INC.", "YODA-COMMUNICATION" }, { 0x000927, "TOYOKEIKI CO.,LTD.", "TOYOKEIKI" }, { 0x000928, "Telecore", "TELECORE" }, { 0x000929, "Sanyo Industries (UK) Limited", "SANYO-INDUSTRIES-UK" }, { 0x00092A, "MYTECS Co.,Ltd.", "MYTECS" }, { 0x00092B, "iQstor Networks, Inc.", "IQSTOR-NETWORKS" }, { 0x00092C, "Hitpoint Inc.", "HITPOINT" }, { 0x00092D, "HTC Corporation", "HTC" }, { 0x00092E, "B&Tech System Inc.", "B-TECH-SYSTEM" }, { 0x00092F, "Akom Technology Corporation", "AKOM" }, { 0x000930, "AeroConcierge Inc.", "AEROCONCIERGE" }, { 0x000931, "Future Internet, Inc.", "FUTURE-INTERNET" }, { 0x000932, "Omnilux", "OMNILUX" }, { 0x000933, "Ophit Co.Ltd.", "OPHIT" }, { 0x000934, "Dream-Multimedia-Tv GmbH", "DREAM-MULTIMEDIA-TV" }, { 0x000935, "Sandvine Incorporated", "SANDVINE-INCORPORATED" }, { 0x000936, "Ipetronik GmbH & Co. KG", "IPETRONIK" }, { 0x000937, "Inventec Appliance Corp", "INVENTEC-APPLIANCE" }, { 0x000938, "Allot Communications", "ALLOT-COMMUNICATION" }, { 0x000939, "ShibaSoku Co.,Ltd.", "SHIBASOKU" }, { 0x00093A, "Molex Fiber Optics", "MOLEX-FIBER-OPTICS" }, { 0x00093B, "HYUNDAI NETWORKS INC.", "HYUNDAI-NETWORKS" }, { 0x00093C, "Jacques Technologies P/L", "JACQUES-TECHNOLOGIES-P/L" }, { 0x00093D, "Newisys,Inc.", "NEWISYS" }, { 0x00093E, "C&I Technologies", "C-I-TECHNOLOGIES" }, { 0x00093F, "Double-Win Enterpirse CO., LTD", "DOUBLE-WIN-ENTERPIRSE" }, { 0x000940, "AGFEO GmbH & Co. KG", "AGFEO" }, { 0x000941, "Allied Telesis K.K.", "ALLIED-TELESIS-K-K" }, { 0x000942, "Wireless Technologies, Inc", "WIRELESS-TECHNOLOGIES" }, { 0x000943, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000944, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000945, "Palmmicro Communications Inc", "PALMMICRO-COMMUNICATION" }, { 0x000946, "Cluster Labs GmbH", "CLUSTER-LABS" }, { 0x000947, "Aztek, Inc.", "AZTEK" }, { 0x000948, "Vista Control Systems, Corp.", "VISTA-CONTROL" }, { 0x000949, "Glyph Technologies Inc.", "GLYPH-TECHNOLOGIES" }, { 0x00094A, "Homenet Communications", "HOMENET-COMMUNICATION" }, { 0x00094B, "FillFactory NV", "FILLFACTORY-NV" }, { 0x00094C, "Communication Weaver Co.,Ltd.", "COMMUNICATION-WEAVER" }, { 0x00094D, "Braintree Communications Pty Ltd", "BRAINTREE-COMMUNICATION-PTY" }, { 0x00094E, "BARTECH SYSTEMS INTERNATIONAL, INC", "BARTECH" }, { 0x00094F, "elmegt GmbH & Co. KG", "ELMEGT" }, { 0x000950, "Independent Storage Corporation", "INDEPENDENT-STORAGE" }, { 0x000951, "Apogee Imaging Systems", "APOGEE-IMAGING" }, { 0x000952, "Auerswald GmbH & Co. KG", "AUERSWALD" }, { 0x000953, "Linkage System Integration Co.Ltd.", "LINKAGE-SYSTEM-INTEGRATION" }, { 0x000954, "AMiT spol. s. r. o.", "AMIT-SPOL-S-R-O" }, { 0x000955, "Young Generation International Corp.", "YOUNG-GENERATION" }, { 0x000956, "Network Systems Group, Ltd. (NSG)", "NETWORK-GROUP-NSG" }, { 0x000957, "Supercaller, Inc.", "SUPERCALLER" }, { 0x000958, "INTELNET S.A.", "INTELNET" }, { 0x000959, "Sitecsoft", "SITECSOFT" }, { 0x00095A, "RACEWOOD TECHNOLOGY", "RACEWOOD" }, { 0x00095B, "Netgear, Inc.", "NETGEAR" }, { 0x00095C, "Philips Medical Systems - Cardiac and Monitoring Systems (CM", "PHILIPS-MEDICAL---CARDIAC-AND-MONITORING-CM" }, { 0x00095D, "Dialogue Technology Corp.", "DIALOGUE" }, { 0x00095E, "Masstech Group Inc.", "MASSTECH-GROUP" }, { 0x00095F, "Telebyte, Inc.", "TELEBYTE" }, { 0x000960, "YOZAN Inc.", "YOZAN" }, { 0x000961, "Switchgear and Instrumentation Ltd", "SWITCHGEAR-AND-INSTRUMENTATION" }, { 0x000962, "Sonitor Technologies AS", "SONITOR-TECHNOLOGIES-AS" }, { 0x000963, "Dominion Lasercom Inc.", "DOMINION-LASERCOM" }, { 0x000964, "Hi-Techniques, Inc.", "HI-TECHNIQUES" }, { 0x000965, "HyunJu Computer Co., Ltd.", "HYUNJU" }, { 0x000966, "Thales Navigation", "THALES-NAVIGATION" }, { 0x000967, "Tachyon, Inc", "TACHYON" }, { 0x000968, "TECHNOVENTURE, INC.", "TECHNOVENTURE" }, { 0x000969, "Meret Optical Communications", "MERET-OPTICAL-COMMUNICATION" }, { 0x00096A, "Cloverleaf Communications Inc.", "CLOVERLEAF-COMMUNICATION" }, { 0x00096B, "IBM Corp", "IBM" }, { 0x00096C, "Imedia Semiconductor Corp.", "IMEDIA-SEMICONDUCTOR" }, { 0x00096D, "Powernet Technologies Corp.", "POWERNET-TECHNOLOGIES" }, { 0x00096E, "GIANT ELECTRONICS LTD.", "GIANT-ELECTRONICS" }, { 0x00096F, "Beijing Zhongqing Elegant Tech. Corp.,Limited", "BEIJING-ZHONGQING-ELEGANT-TECH" }, { 0x000970, "Vibration Research Corporation", "VIBRATION-RESEARCH" }, { 0x000971, "Time Management, Inc.", "TIME-MANAGEMENT" }, { 0x000972, "Securebase,Inc", "SECUREBASE" }, { 0x000973, "Lenten Technology Co., Ltd.", "LENTEN" }, { 0x000974, "Innopia Technologies, Inc.", "INNOPIA-TECHNOLOGIES" }, { 0x000975, "fSONA Communications Corporation", "FSONA-COMMUNICATION" }, { 0x000976, "Datasoft ISDN Systems GmbH", "DATASOFT-ISDN" }, { 0x000977, "Brunner Elektronik AG", "BRUNNER-ELEKTRONIK" }, { 0x000978, "AIJI System Co., Ltd.", "AIJI-SYSTEM" }, { 0x000979, "Advanced Television Systems Committee, Inc.", "ADVANCED-TELEVISION-COMMITTEE" }, { 0x00097A, "Louis Design Labs.", "LOUIS-DESIGN-LABS" }, { 0x00097B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00097C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00097D, "SecWell Networks Oy", "SECWELL-NETWORKS-OY" }, { 0x00097E, "IMI TECHNOLOGY CO., LTD", "IMI" }, { 0x00097F, "Vsecure 2000 LTD.", "VSECURE-2000" }, { 0x000980, "Power Zenith Inc.", "POWER-ZENITH" }, { 0x000981, "Newport Networks", "NEWPORT-NETWORKS" }, { 0x000982, "Loewe Opta GmbH", "LOEWE-OPTA" }, { 0x000983, "GlobalTop Technology, Inc.", "GLOBALTOP" }, { 0x000984, "MyCasa Network Inc.", "MYCASA-NETWORK" }, { 0x000985, "Auto Telecom Company", "AUTO-TELECOM-COMPANY" }, { 0x000986, "Metalink LTD.", "METALINK" }, { 0x000987, "NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD.", "NISHI-NIPPON-ELECTRIC-WIRE-CABLE" }, { 0x000988, "Nudian Electron Co., Ltd.", "NUDIAN-ELECTRON" }, { 0x000989, "VividLogic Inc.", "VIVIDLOGIC" }, { 0x00098A, "EqualLogic Inc", "EQUALLOGIC" }, { 0x00098B, "Entropic Communications, Inc.", "ENTROPIC-COMMUNICATION" }, { 0x00098C, "Option Wireless Sweden", "OPTION-WIRELESS-SWEDEN" }, { 0x00098D, "Velocity Semiconductor", "VELOCITY-SEMICONDUCTOR" }, { 0x00098E, "ipcas GmbH", "IPCAS" }, { 0x00098F, "Cetacean Networks", "CETACEAN-NETWORKS" }, { 0x000990, "ACKSYS Communications & systems", "ACKSYS-COMMUNICATION" }, { 0x000991, "GE Fanuc Automation Manufacturing, Inc.", "GE-FANUC-AUTOMATION-MANUFACTURING" }, { 0x000992, "InterEpoch Technology,INC.", "INTEREPOCH" }, { 0x000993, "Visteon Corporation", "VISTEON" }, { 0x000994, "Cronyx Engineering", "CRONYX-ENGINEERING" }, { 0x000995, "Castle Technology Ltd", "CASTLE" }, { 0x000996, "RDI", "RDI" }, { 0x000997, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000998, "Capinfo Company Limited", "CAPINFO-COMPANY" }, { 0x000999, "CP GEORGES RENAULT", "CP-GEORGES-RENAULT" }, { 0x00099A, "ELMO COMPANY, LIMITED", "ELMO-COMPANY" }, { 0x00099B, "Western Telematic Inc.", "WESTERN-TELEMATIC" }, { 0x00099C, "Naval Research Laboratory", "NAVAL-RESEARCH-LABORATORY" }, { 0x00099D, "Haliplex Communications", "HALIPLEX-COMMUNICATION" }, { 0x00099E, "Testech, Inc.", "TESTECH" }, { 0x00099F, "VIDEX INC.", "VIDEX" }, { 0x0009A0, "Microtechno Corporation", "MICROTECHNO" }, { 0x0009A1, "Telewise Communications, Inc.", "TELEWISE-COMMUNICATION" }, { 0x0009A2, "Interface Co., Ltd.", "INTERFACE" }, { 0x0009A3, "Leadfly Techologies Corp. Ltd.", "LEADFLY-TECHOLOGIES" }, { 0x0009A4, "HARTEC Corporation", "HARTEC" }, { 0x0009A5, "HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD", "HANSUNG-ELETRONIC-INDUSTRIES-DEVELOPMENT" }, { 0x0009A6, "Ignis Optics, Inc.", "IGNIS-OPTICS" }, { 0x0009A7, "Bang & Olufsen A/S", "BANG-OLUFSEN-A/S" }, { 0x0009A8, "Eastmode Pte Ltd", "EASTMODE-PTE" }, { 0x0009A9, "Ikanos Communications", "IKANOS-COMMUNICATION" }, { 0x0009AA, "Data Comm for Business, Inc.", "DATA-COMM-FOR-BUSINESS" }, { 0x0009AB, "Netcontrol Oy", "NETCONTROL-OY" }, { 0x0009AC, "LANVOICE", "LANVOICE" }, { 0x0009AD, "HYUNDAI SYSCOMM, INC.", "HYUNDAI-SYSCOMM" }, { 0x0009AE, "OKANO ELECTRIC CO.,LTD", "OKANO-ELECTRIC" }, { 0x0009AF, "e-generis", "E-GENERIS" }, { 0x0009B0, "Onkyo Corporation", "ONKYO" }, { 0x0009B1, "Kanematsu Electronics, Ltd.", "KANEMATSU-ELECTRONICS" }, { 0x0009B2, "L&F Inc.", "L-F" }, { 0x0009B3, "MCM Systems Ltd", "MCM" }, { 0x0009B4, "KISAN TELECOM CO., LTD.", "KISAN-TELECOM" }, { 0x0009B5, "3J Tech. Co., Ltd.", "3J-TECH" }, { 0x0009B6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0009B7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0009B8, "Entise Systems", "ENTISE" }, { 0x0009B9, "Action Imaging Solutions", "ACTION-IMAGING-SOLUTIONS" }, { 0x0009BA, "MAKU Informationstechik GmbH", "MAKU-INFORMATIONSTECHIK" }, { 0x0009BB, "MathStar, Inc.", "MATHSTAR" }, { 0x0009BC, "Digital Safety Technologies, Inc", "DIGITAL-SAFETY-TECHNOLOGIES" }, { 0x0009BD, "Epygi Technologies, Ltd.", "EPYGI-TECHNOLOGIES" }, { 0x0009BE, "Mamiya-OP Co.,Ltd.", "MAMIYA-OP" }, { 0x0009BF, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0009C0, "6WIND", "6WIND" }, { 0x0009C1, "PROCES-DATA A/S", "PROCES-DATA-A/S" }, { 0x0009C2, "Onity, Inc.", "ONITY" }, { 0x0009C3, "NETAS", "NETAS" }, { 0x0009C4, "Medicore Co., Ltd", "MEDICORE" }, { 0x0009C5, "KINGENE Technology Corporation", "KINGENE" }, { 0x0009C6, "Visionics Corporation", "VISIONICS" }, { 0x0009C7, "Movistec", "MOVISTEC" }, { 0x0009C8, "SINAGAWA TSUSHIN KEISOU SERVICE", "SINAGAWA-TSUSHIN-KEISOU-SERVICE" }, { 0x0009C9, "BlueWINC Co., Ltd.", "BLUEWINC" }, { 0x0009CA, "iMaxNetworks(Shenzhen)Limited.", "IMAXNETWORKS-SHENZHEN" }, { 0x0009CB, "HBrain", "HBRAIN" }, { 0x0009CC, "Moog GmbH", "MOOG" }, { 0x0009CD, "HUDSON SOFT CO.,LTD.", "HUDSON-SOFT" }, { 0x0009CE, "SpaceBridge Semiconductor Corp.", "SPACEBRIDGE-SEMICONDUCTOR" }, { 0x0009CF, "iAd GmbH", "IAD" }, { 0x0009D0, "Solacom Technologies Inc.", "SOLACOM-TECHNOLOGIES" }, { 0x0009D1, "SERANOA NETWORKS INC", "SERANOA-NETWORKS" }, { 0x0009D2, "Mai Logic Inc.", "MAI-LOGIC" }, { 0x0009D3, "Western DataCom Co., Inc.", "WESTERN-DATACOM" }, { 0x0009D4, "Transtech Networks", "TRANSTECH-NETWORKS" }, { 0x0009D5, "Signal Communication, Inc.", "SIGNAL-COMMUNICATION" }, { 0x0009D6, "KNC One GmbH", "KNC-ONE" }, { 0x0009D7, "DC Security Products", "DC-SECURITY-PRODUCTS" }, { 0x0009D8, "Fält Communications AB", "FäLT-COMMUNICATION-AB" }, { 0x0009D9, "Neoscale Systems, Inc", "NEOSCALE" }, { 0x0009DA, "Control Module Inc.", "CONTROL-MODULE" }, { 0x0009DB, "eSpace", "ESPACE" }, { 0x0009DC, "Galaxis Technology AG", "GALAXIS" }, { 0x0009DD, "Mavin Technology Inc.", "MAVIN" }, { 0x0009DE, "Samjin Information & Communications Co., Ltd.", "SAMJIN-INFORMATION-COMMUNICATION" }, { 0x0009DF, "Vestel Komunikasyon Sanayi ve Ticaret A.S.", "VESTEL-KOMUNIKASYON-SANAYI-VE-TICARET-A-S" }, { 0x0009E0, "XEMICS S.A.", "XEMICS" }, { 0x0009E1, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x0009E2, "Sinbon Electronics Co., Ltd.", "SINBON-ELECTRONICS" }, { 0x0009E3, "Angel Iglesias S.A.", "ANGEL-IGLESIAS" }, { 0x0009E4, "K Tech Infosystem Inc.", "K-TECH-INFOSYSTEM" }, { 0x0009E5, "Hottinger Baldwin Messtechnik GmbH", "HOTTINGER-BALDWIN-MESSTECHNIK" }, { 0x0009E6, "Cyber Switching Inc.", "CYBER-SWITCHING" }, { 0x0009E7, "ADC Techonology", "ADC-TECHONOLOGY" }, { 0x0009E8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0009E9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0009EA, "YEM Inc.", "YEM" }, { 0x0009EB, "HuMANDATA LTD.", "HUMANDATA" }, { 0x0009EC, "Daktronics, Inc.", "DAKTRONICS" }, { 0x0009ED, "CipherOptics", "CIPHEROPTICS" }, { 0x0009EE, "MEIKYO ELECTRIC CO.,LTD", "MEIKYO-ELECTRIC" }, { 0x0009EF, "Vocera Communications", "VOCERA-COMMUNICATION" }, { 0x0009F0, "Shimizu Technology Inc.", "SHIMIZU" }, { 0x0009F1, "Yamaki Electric Corporation", "YAMAKI-ELECTRIC" }, { 0x0009F2, "Cohu, Inc., Electronics Division", "COHU-ELECTRONICS-DIVISION" }, { 0x0009F3, "WELL Communication Corp.", "WELL-COMMUNICATION" }, { 0x0009F4, "Alcon Laboratories, Inc.", "ALCON-LABORATORIES" }, { 0x0009F5, "Emerson Network Power Co.,Ltd", "EMERSON-NETWORK-POWER" }, { 0x0009F6, "Shenzhen Eastern Digital Tech Ltd.", "SHENZHEN-EASTERN-DIGITAL-TECH" }, { 0x0009F7, "SED, a division of Calian", "SED-A-DIVISION-OF-CALIAN" }, { 0x0009F8, "UNIMO TECHNOLOGY CO., LTD.", "UNIMO" }, { 0x0009F9, "ART JAPAN CO., LTD.", "ART-JAPAN" }, { 0x0009FB, "Philips Patient Monitoring", "PHILIPS-PATIENT-MONITORING" }, { 0x0009FC, "IPFLEX Inc.", "IPFLEX" }, { 0x0009FD, "Ubinetics Limited", "UBINETICS" }, { 0x0009FE, "Daisy Technologies, Inc.", "DAISY-TECHNOLOGIES" }, { 0x0009FF, "X.net 2000 GmbH", "X-NET-2000" }, { 0x000A00, "Mediatek Corp.", "MEDIATEK" }, { 0x000A01, "SOHOware, Inc.", "SOHOWARE" }, { 0x000A02, "ANNSO CO., LTD.", "ANNSO" }, { 0x000A03, "ENDESA SERVICIOS, S.L.", "ENDESA-SERVICIOS-S-L" }, { 0x000A04, "3Com Ltd", "3COM" }, { 0x000A05, "Widax Corp.", "WIDAX" }, { 0x000A06, "Teledex LLC", "TELEDEX-LLC" }, { 0x000A07, "WebWayOne Ltd", "WEBWAYONE" }, { 0x000A08, "ALPINE ELECTRONICS, INC.", "ALPINE-ELECTRONICS" }, { 0x000A09, "TaraCom Integrated Products, Inc.", "TARACOM-INTEGRATED-PRODUCTS" }, { 0x000A0A, "SUNIX Co., Ltd.", "SUNIX" }, { 0x000A0B, "Sealevel Systems, Inc.", "SEALEVEL" }, { 0x000A0C, "Scientific Research Corporation", "SCIENTIFIC-RESEARCH" }, { 0x000A0D, "FCI Deutschland GmbH", "FCI-DEUTSCHLAND" }, { 0x000A0E, "Invivo Research Inc.", "INVIVO-RESEARCH" }, { 0x000A0F, "Ilryung Telesys, Inc", "ILRYUNG-TELESYS" }, { 0x000A10, "FAST media integrations AG", "FAST-MEDIA-INTEGRATIONS" }, { 0x000A11, "ExPet Technologies, Inc", "EXPET-TECHNOLOGIES" }, { 0x000A12, "Azylex Technology, Inc", "AZYLEX" }, { 0x000A13, "Honeywell Video Systems", "HONEYWELL-VIDEO" }, { 0x000A14, "TECO a.s.", "TECO-A-S" }, { 0x000A15, "Silicon Data, Inc", "SILICON-DATA" }, { 0x000A16, "Lassen Research", "LASSEN-RESEARCH" }, { 0x000A17, "NESTAR COMMUNICATIONS, INC", "NESTAR-COMMUNICATION" }, { 0x000A18, "Vichel Inc.", "VICHEL" }, { 0x000A19, "Valere Power, Inc.", "VALERE-POWER" }, { 0x000A1A, "Imerge Ltd", "IMERGE" }, { 0x000A1B, "Stream Labs", "STREAM-LABS" }, { 0x000A1C, "Bridge Information Co., Ltd.", "BRIDGE-INFORMATION" }, { 0x000A1D, "Optical Communications Products Inc.", "OPTICAL-COMMUNICATION-PRODUCTS" }, { 0x000A1E, "Red-M Products Limited", "RED-M-PRODUCTS" }, { 0x000A1F, "ART WARE Telecommunication Co., Ltd.", "ART-WARE-TELECOMMUNICATION" }, { 0x000A20, "SVA Networks, Inc.", "SVA-NETWORKS" }, { 0x000A21, "Integra Telecom Co. Ltd", "INTEGRA-TELECOM" }, { 0x000A22, "Amperion Inc", "AMPERION" }, { 0x000A23, "Parama Networks Inc", "PARAMA-NETWORKS" }, { 0x000A24, "Octave Communications", "OCTAVE-COMMUNICATION" }, { 0x000A25, "CERAGON NETWORKS", "CERAGON-NETWORKS" }, { 0x000A26, "CEIA S.p.A.", "CEIA-S-P-A" }, { 0x000A27, "Apple", "APPLE" }, { 0x000A28, "Motorola", "MOTOROLA" }, { 0x000A29, "Pan Dacom Networking AG", "PAN-DACOM-NETWORKING" }, { 0x000A2A, "QSI Systems Inc.", "QSI" }, { 0x000A2B, "Etherstuff", "ETHERSTUFF" }, { 0x000A2C, "Active Tchnology Corporation", "ACTIVE-TCHNOLOGY" }, { 0x000A2D, "Cabot Communications Limited", "CABOT-COMMUNICATION" }, { 0x000A2E, "MAPLE NETWORKS CO., LTD", "MAPLE-NETWORKS" }, { 0x000A2F, "Artnix Inc.", "ARTNIX" }, { 0x000A30, "Johnson Controls-ASG", "JOHNSON-CONTROLS-ASG" }, { 0x000A31, "HCV Consulting", "HCV-CONSULTING" }, { 0x000A32, "Xsido Corporation", "XSIDO" }, { 0x000A33, "Emulex Corporation", "EMULEX" }, { 0x000A34, "Identicard Systems Incorporated", "IDENTICARD-INCORPORATED" }, { 0x000A35, "Xilinx", "XILINX" }, { 0x000A36, "Synelec Telecom Multimedia", "SYNELEC-TELECOM-MULTIMEDIA" }, { 0x000A37, "Procera Networks, Inc.", "PROCERA-NETWORKS" }, { 0x000A38, "Apani Networks", "APANI-NETWORKS" }, { 0x000A39, "LoPA Information Technology", "LOPA-INFORMATION" }, { 0x000A3A, "J-THREE INTERNATIONAL Holding Co., Ltd.", "J-THREE-HOLDING" }, { 0x000A3B, "GCT Semiconductor, Inc", "GCT-SEMICONDUCTOR" }, { 0x000A3C, "Enerpoint Ltd.", "ENERPOINT" }, { 0x000A3D, "Elo Sistemas Eletronicos S.A.", "ELO-SISTEMAS-ELETRONICOS" }, { 0x000A3E, "EADS Telecom", "EADS-TELECOM" }, { 0x000A3F, "Data East Corporation", "DATA-EAST" }, { 0x000A40, "Crown Audio -- Harmanm International", "CROWN-AUDIO----HARMANM" }, { 0x000A41, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000A42, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000A43, "Chunghwa Telecom Co., Ltd.", "CHUNGHWA-TELECOM" }, { 0x000A44, "Avery Dennison Deutschland GmbH", "AVERY-DENNISON-DEUTSCHLAND" }, { 0x000A45, "Audio-Technica Corp.", "AUDIO-TECHNICA" }, { 0x000A46, "ARO WELDING TECHNOLOGIES SAS", "ARO-WELDING-TECHNOLOGIES-SAS" }, { 0x000A47, "Allied Vision Technologies", "ALLIED-VISION-TECHNOLOGIES" }, { 0x000A48, "Albatron Technology", "ALBATRON" }, { 0x000A49, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x000A4A, "Targa Systems Ltd.", "TARGA" }, { 0x000A4B, "DataPower Technology, Inc.", "DATAPOWER" }, { 0x000A4C, "Molecular Devices Corporation", "MOLECULAR-DEVICES" }, { 0x000A4D, "Noritz Corporation", "NORITZ" }, { 0x000A4E, "UNITEK Electronics INC.", "UNITEK-ELECTRONICS" }, { 0x000A4F, "Brain Boxes Limited", "BRAIN-BOXES" }, { 0x000A50, "REMOTEK CORPORATION", "REMOTEK" }, { 0x000A51, "GyroSignal Technology Co., Ltd.", "GYROSIGNAL" }, { 0x000A52, "AsiaRF Ltd.", "ASIARF" }, { 0x000A53, "Intronics, Incorporated", "INTRONICS-INCORPORATED" }, { 0x000A54, "Laguna Hills, Inc.", "LAGUNA-HILLS" }, { 0x000A55, "MARKEM Corporation", "MARKEM" }, { 0x000A56, "HITACHI Maxell Ltd.", "HITACHI-MAXELL" }, { 0x000A57, "Hewlett-Packard Company - Standards", "HEWLETT-PACKARD-COMPANY---STANDARDS" }, { 0x000A58, "Freyer & Siegel Elektronik GmbH & Co. KG", "FREYER-SIEGEL-ELEKTRONIK" }, { 0x000A59, "HW server", "HW-SERVER" }, { 0x000A5A, "GreenNET Technologies Co.,Ltd.", "GREENNET-TECHNOLOGIES" }, { 0x000A5B, "Power-One as", "POWER-ONE-AS" }, { 0x000A5C, "Carel s.p.a.", "CAREL-S-P-A" }, { 0x000A5D, "FingerTec Worldwide Sdn Bhd", "FINGERTEC-WORLDWIDE-SDN-BHD" }, { 0x000A5E, "3COM Corporation", "3COM" }, { 0x000A5F, "almedio inc.", "ALMEDIO" }, { 0x000A60, "Autostar Technology Pte Ltd", "AUTOSTAR-PTE" }, { 0x000A61, "Cellinx Systems Inc.", "CELLINX" }, { 0x000A62, "Crinis Networks, Inc.", "CRINIS-NETWORKS" }, { 0x000A63, "DHD GmbH", "DHD" }, { 0x000A64, "Eracom Technologies", "ERACOM-TECHNOLOGIES" }, { 0x000A65, "GentechMedia.co.,ltd.", "GENTECHMEDIA" }, { 0x000A66, "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD.", "MITSUBISHI-ELECTRIC-SYSTEM-SERVICE" }, { 0x000A67, "OngCorp", "ONGCORP" }, { 0x000A68, "SolarFlare Communications, Inc.", "SOLARFLARE-COMMUNICATION" }, { 0x000A69, "SUNNY bell Technology Co., Ltd.", "SUNNY-BELL" }, { 0x000A6A, "SVM Microwaves s.r.o.", "SVM-MICROWAVES-S-R-O" }, { 0x000A6B, "Tadiran Telecom Business Systems LTD", "TADIRAN-TELECOM-BUSINESS" }, { 0x000A6C, "Walchem Corporation", "WALCHEM" }, { 0x000A6D, "EKS Elektronikservice GmbH", "EKS-ELEKTRONIKSERVICE" }, { 0x000A6E, "Harmonic, Inc", "HARMONIC" }, { 0x000A6F, "ZyFLEX Technologies Inc", "ZYFLEX-TECHNOLOGIES" }, { 0x000A70, "MPLS Forum", "MPLS-FORUM" }, { 0x000A71, "Avrio Technologies, Inc", "AVRIO-TECHNOLOGIES" }, { 0x000A72, "STEC, INC.", "STEC" }, { 0x000A73, "Scientific Atlanta", "SCIENTIFIC-ATLANTA" }, { 0x000A74, "Manticom Networks Inc.", "MANTICOM-NETWORKS" }, { 0x000A75, "Caterpillar, Inc", "CATERPILLAR" }, { 0x000A76, "Beida Jade Bird Huaguang Technology Co.,Ltd", "BEIDA-JADE-BIRD-HUAGUANG" }, { 0x000A77, "Bluewire Technologies LLC", "BLUEWIRE-TECHNOLOGIES-LLC" }, { 0x000A78, "OLITEC", "OLITEC" }, { 0x000A79, "Allied Telesis K.K. corega division", "ALLIED-TELESIS-K-K-COREGA-DIVISION" }, { 0x000A7A, "Kyoritsu Electric Co., Ltd.", "KYORITSU-ELECTRIC" }, { 0x000A7B, "Cornelius Consult", "CORNELIUS-CONSULT" }, { 0x000A7C, "Tecton Ltd", "TECTON" }, { 0x000A7D, "Valo, Inc.", "VALO" }, { 0x000A7E, "The Advantage Group", "THE-ADVANTAGE-GROUP" }, { 0x000A7F, "Teradon Industries, Inc", "TERADON-INDUSTRIES" }, { 0x000A80, "Telkonet Inc.", "TELKONET" }, { 0x000A81, "TEIMA Audiotex S.L.", "TEIMA-AUDIOTEX-S-L" }, { 0x000A82, "TATSUTA SYSTEM ELECTRONICS CO.,LTD.", "TATSUTA-SYSTEM-ELECTRONICS" }, { 0x000A83, "SALTO SYSTEMS S.L.", "SALTO-S-L" }, { 0x000A84, "Rainsun Enterprise Co., Ltd.", "RAINSUN" }, { 0x000A85, "PLAT'C2,Inc", "PLAT-C2" }, { 0x000A86, "Lenze", "LENZE" }, { 0x000A87, "Integrated Micromachines Inc.", "INTEGRATED-MICROMACHINES" }, { 0x000A88, "InCypher S.A.", "INCYPHER" }, { 0x000A89, "Creval Systems, Inc.", "CREVAL" }, { 0x000A8A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000A8B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000A8C, "Guardware Systems Ltd.", "GUARDWARE" }, { 0x000A8D, "EUROTHERM LIMITED", "EUROTHERM" }, { 0x000A8E, "Invacom Ltd", "INVACOM" }, { 0x000A8F, "Aska International Inc.", "ASKA" }, { 0x000A90, "Bayside Interactive, Inc.", "BAYSIDE-INTERACTIVE" }, { 0x000A91, "HemoCue AB", "HEMOCUE-AB" }, { 0x000A92, "Presonus Corporation", "PRESONUS" }, { 0x000A93, "W2 Networks, Inc.", "W2-NETWORKS" }, { 0x000A94, "ShangHai cellink CO., LTD", "SHANGHAI-CELLINK" }, { 0x000A95, "Apple", "APPLE" }, { 0x000A96, "MEWTEL TECHNOLOGY INC.", "MEWTEL" }, { 0x000A97, "SONICblue, Inc.", "SONICBLUE" }, { 0x000A98, "M+F Gwinner GmbH & Co", "M+F-GWINNER" }, { 0x000A99, "Calamp Wireless Networks Inc", "CALAMP-WIRELESS-NETWORKS" }, { 0x000A9A, "Aiptek International Inc", "AIPTEK" }, { 0x000A9B, "TB Group Inc", "TB-GROUP" }, { 0x000A9C, "Server Technology, Inc.", "SERVER" }, { 0x000A9D, "King Young Technology Co. Ltd.", "KING-YOUNG" }, { 0x000A9E, "BroadWeb Corportation", "BROADWEB-CORPORTATION" }, { 0x000A9F, "Pannaway Technologies, Inc.", "PANNAWAY-TECHNOLOGIES" }, { 0x000AA0, "Cedar Point Communications", "CEDAR-POINT-COMMUNICATION" }, { 0x000AA1, "V V S Limited", "V-V-S" }, { 0x000AA2, "SYSTEK INC.", "SYSTEK" }, { 0x000AA3, "SHIMAFUJI ELECTRIC CO.,LTD.", "SHIMAFUJI-ELECTRIC" }, { 0x000AA4, "SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD", "SHANGHAI-SURVEILLANCE" }, { 0x000AA5, "MAXLINK INDUSTRIES LIMITED", "MAXLINK-INDUSTRIES" }, { 0x000AA6, "Hochiki Corporation", "HOCHIKI" }, { 0x000AA7, "FEI Electron Optics", "FEI-ELECTRON-OPTICS" }, { 0x000AA8, "ePipe Pty. Ltd.", "EPIPE-PTY" }, { 0x000AA9, "Brooks Automation GmbH", "BROOKS-AUTOMATION" }, { 0x000AAA, "AltiGen Communications Inc.", "ALTIGEN-COMMUNICATION" }, { 0x000AAB, "Toyota Technical Development Corporation", "TOYOTA-TECHNICAL-DEVELOPMENT" }, { 0x000AAC, "TerraTec Electronic GmbH", "TERRATEC" }, { 0x000AAD, "Stargames Corporation", "STARGAMES" }, { 0x000AAE, "Rosemount Process Analytical", "ROSEMOUNT-PROCESS-ANALYTICAL" }, { 0x000AAF, "Pipal Systems", "PIPAL" }, { 0x000AB0, "LOYTEC electronics GmbH", "LOYTEC-ELECTRONICS" }, { 0x000AB1, "GENETEC Corporation", "GENETEC" }, { 0x000AB2, "Fresnel Wireless Systems", "FRESNEL-WIRELESS" }, { 0x000AB3, "Fa. GIRA", "FA-GIRA" }, { 0x000AB4, "ETIC Telecommunications", "ETIC-TELECOMMUNICATIONS" }, { 0x000AB5, "Digital Electronic Network", "DIGITAL-NETWORK" }, { 0x000AB6, "COMPUNETIX, INC", "COMPUNETIX" }, { 0x000AB7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000AB8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000AB9, "Astera Technologies Corp.", "ASTERA-TECHNOLOGIES" }, { 0x000ABA, "Arcon Technology Limited", "ARCON" }, { 0x000ABB, "Taiwan Secom Co,. Ltd", "TAIWAN-SECOM" }, { 0x000ABC, "Seabridge Ltd.", "SEABRIDGE" }, { 0x000ABD, "Rupprecht & Patashnick Co.", "RUPPRECHT-PATASHNICK" }, { 0x000ABE, "OPNET Technologies CO., LTD.", "OPNET-TECHNOLOGIES" }, { 0x000ABF, "HIROTA SS", "HIROTA-SS" }, { 0x000AC0, "Fuyoh Video Industry CO., LTD.", "FUYOH-VIDEO-INDUSTRY" }, { 0x000AC1, "Futuretel", "FUTURETEL" }, { 0x000AC2, "FiberHome Telecommunication Technologies CO.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x000AC3, "eM Technics Co., Ltd.", "EM-TECHNICS" }, { 0x000AC4, "Daewoo Teletech Co., Ltd", "DAEWOO-TELETECH" }, { 0x000AC5, "Color Kinetics", "COLOR-KINETICS" }, { 0x000AC6, "Overture Networks.", "OVERTURE-NETWORKS" }, { 0x000AC7, "Unication Group", "UNICATION-GROUP" }, { 0x000AC8, "ZPSYS CO.,LTD. (Planning&Management)", "ZPSYS-PLANNING-MANAGEMENT" }, { 0x000AC9, "Zambeel Inc", "ZAMBEEL" }, { 0x000ACA, "YOKOYAMA SHOKAI CO.,Ltd.", "YOKOYAMA-SHOKAI" }, { 0x000ACB, "XPAK MSA Group", "XPAK-MSA-GROUP" }, { 0x000ACC, "Winnow Networks, Inc.", "WINNOW-NETWORKS" }, { 0x000ACD, "Sunrich Technology Limited", "SUNRICH" }, { 0x000ACE, "RADIANTECH, INC.", "RADIANTECH" }, { 0x000ACF, "PROVIDEO Multimedia Co. Ltd.", "PROVIDEO-MULTIMEDIA" }, { 0x000AD0, "Niigata Develoment Center, F.I.T. Co., Ltd.", "NIIGATA-DEVELOMENT-CENTER-F-I-T" }, { 0x000AD1, "MWS", "MWS" }, { 0x000AD2, "JEPICO Corporation", "JEPICO" }, { 0x000AD3, "INITECH Co., Ltd", "INITECH" }, { 0x000AD4, "CoreBell Systems Inc.", "COREBELL" }, { 0x000AD5, "Brainchild Electronic Co., Ltd.", "BRAINCHILD" }, { 0x000AD6, "BeamReach Networks", "BEAMREACH-NETWORKS" }, { 0x000AD7, "Origin ELECTRIC CO.,LTD.", "ORIGIN-ELECTRIC" }, { 0x000AD8, "IPCserv Technology Corp.", "IPCSERV" }, { 0x000AD9, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x000ADA, "Vindicator Technologies", "VINDICATOR-TECHNOLOGIES" }, { 0x000ADB, "SkyPilot Network, Inc", "SKYPILOT-NETWORK" }, { 0x000ADC, "RuggedCom Inc.", "RUGGEDCOM" }, { 0x000ADD, "Allworx Corp.", "ALLWORX" }, { 0x000ADE, "Happy Communication Co., Ltd.", "HAPPY-COMMUNICATION" }, { 0x000ADF, "Gennum Corporation", "GENNUM" }, { 0x000AE0, "Fujitsu Softek", "FUJITSU-SOFTEK" }, { 0x000AE1, "EG Technology", "EG" }, { 0x000AE2, "Binatone Electronics International, Ltd", "BINATONE-ELECTRONICS" }, { 0x000AE3, "YANG MEI TECHNOLOGY CO., LTD", "YANG-MEI" }, { 0x000AE4, "Wistron Corp.", "WISTRON" }, { 0x000AE5, "ScottCare Corporation", "SCOTTCARE" }, { 0x000AE6, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x000AE7, "ELIOP S.A.", "ELIOP" }, { 0x000AE8, "Cathay Roxus Information Technology Co. LTD", "CATHAY-ROXUS-INFORMATION" }, { 0x000AE9, "AirVast Technology Inc.", "AIRVAST" }, { 0x000AEA, "ADAM ELEKTRONIK LTD. ÅžTI", "ADAM-ELEKTRONIK-ÅžTI" }, { 0x000AEB, "Shenzhen Tp-Link Technology Co; Ltd.", "SHENZHEN-TP-LINK" }, { 0x000AEC, "Koatsu Gas Kogyo Co., Ltd.", "KOATSU-GAS-KOGYO" }, { 0x000AED, "HARTING Systems GmbH & Co KG", "HARTING" }, { 0x000AEE, "GCD Hard- & Software GmbH", "GCD-HARD--SOFTWARE" }, { 0x000AEF, "OTRUM ASA", "OTRUM-ASA" }, { 0x000AF0, "SHIN-OH ELECTRONICS CO., LTD. R&D", "SHIN-OH-ELECTRONICS-R-D" }, { 0x000AF1, "Clarity Design, Inc.", "CLARITY-DESIGN" }, { 0x000AF2, "NeoAxiom Corp.", "NEOAXIOM" }, { 0x000AF3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000AF4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000AF5, "Airgo Networks, Inc.", "AIRGO-NETWORKS" }, { 0x000AF6, "Emerson Climate Technologies Retail Solutions, Inc.", "EMERSON-CLIMATE-TECHNOLOGIES-RETAIL-SOLUTIONS" }, { 0x000AF7, "Broadcom Corp.", "BROADCOM" }, { 0x000AF8, "American Telecare Inc.", "AMERICAN-TELECARE" }, { 0x000AF9, "HiConnect, Inc.", "HICONNECT" }, { 0x000AFA, "Traverse Technologies Australia", "TRAVERSE-TECHNOLOGIES-AUSTRALIA" }, { 0x000AFB, "Ambri Limited", "AMBRI" }, { 0x000AFC, "Core Tec Communications, LLC", "CORE-TEC-COMMUNICATION-LLC" }, { 0x000AFD, "Viking Electronic Services", "VIKING-SERVICES" }, { 0x000AFE, "NovaPal Ltd", "NOVAPAL" }, { 0x000AFF, "Kilchherr Elektronik AG", "KILCHHERR-ELEKTRONIK" }, { 0x000B00, "FUJIAN START COMPUTER EQUIPMENT CO.,LTD", "FUJIAN-START-EQUIPMENT" }, { 0x000B01, "DAIICHI ELECTRONICS CO., LTD.", "DAIICHI-ELECTRONICS" }, { 0x000B02, "Dallmeier electronic", "DALLMEIER" }, { 0x000B03, "Taekwang Industrial Co., Ltd", "TAEKWANG-INDUSTRIAL" }, { 0x000B04, "Volktek Corporation", "VOLKTEK" }, { 0x000B05, "Pacific Broadband Networks", "PACIFIC-BROADBAND-NETWORKS" }, { 0x000B06, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000B07, "Voxpath Networks", "VOXPATH-NETWORKS" }, { 0x000B08, "Pillar Data Systems", "PILLAR-DATA" }, { 0x000B09, "Ifoundry Systems Singapore", "IFOUNDRY-SINGAPORE" }, { 0x000B0A, "dBm Optics", "DBM-OPTICS" }, { 0x000B0B, "Corrent Corporation", "CORRENT" }, { 0x000B0C, "Agile Systems Inc.", "AGILE" }, { 0x000B0D, "Air2U, Inc.", "AIR2U" }, { 0x000B0E, "Trapeze Networks", "TRAPEZE-NETWORKS" }, { 0x000B0F, "Bosch Rexroth", "BOSCH-REXROTH" }, { 0x000B10, "11wave Technonlogy Co.,Ltd", "11WAVE-TECHNONLOGY" }, { 0x000B11, "HIMEJI ABC TRADING CO.,LTD.", "HIMEJI-ABC-TRADING" }, { 0x000B12, "NURI Telecom Co., Ltd.", "NURI-TELECOM" }, { 0x000B13, "ZETRON INC", "ZETRON" }, { 0x000B14, "ViewSonic Corporation", "VIEWSONIC" }, { 0x000B15, "Platypus Technology", "PLATYPUS" }, { 0x000B16, "Communication Machinery Corporation", "COMMUNICATION-MACHINERY" }, { 0x000B17, "MKS Instruments", "MKS-INSTRUMENTS" }, { 0x000B18, "PRIVATE", "PRIVATE" }, { 0x000B19, "Vernier Networks, Inc.", "VERNIER-NETWORKS" }, { 0x000B1A, "Industrial Defender, Inc.", "INDUSTRIAL-DEFENDER" }, { 0x000B1B, "Systronix, Inc.", "SYSTRONIX" }, { 0x000B1C, "SIBCO bv", "SIBCO" }, { 0x000B1D, "LayerZero Power Systems, Inc.", "LAYERZERO-POWER" }, { 0x000B1E, "KAPPA opto-electronics GmbH", "KAPPA-OPTO-ELECTRONICS" }, { 0x000B1F, "I CON Computer Co.", "I-CON" }, { 0x000B20, "Hirata corporation", "HIRATA" }, { 0x000B21, "G-Star Communications Inc.", "G-STAR-COMMUNICATION" }, { 0x000B22, "Environmental Systems and Services", "ENVIRONMENTAL-AND-SERVICES" }, { 0x000B23, "Siemens Subscriber Networks", "SIEMENS-SUBSCRIBER-NETWORKS" }, { 0x000B24, "AirLogic", "AIRLOGIC" }, { 0x000B25, "Aeluros", "AELUROS" }, { 0x000B26, "Wetek Corporation", "WETEK" }, { 0x000B27, "Scion Corporation", "SCION" }, { 0x000B28, "Quatech Inc.", "QUATECH" }, { 0x000B29, "LS(LG) Industrial Systems co.,Ltd", "LS-LG-INDUSTRIAL" }, { 0x000B2A, "HOWTEL Co., Ltd.", "HOWTEL" }, { 0x000B2B, "HOSTNET CORPORATION", "HOSTNET" }, { 0x000B2C, "Eiki Industrial Co. Ltd.", "EIKI-INDUSTRIAL" }, { 0x000B2D, "Danfoss Inc.", "DANFOSS" }, { 0x000B2E, "Cal-Comp Electronics (Thailand) Public Company Limited Taipe", "CAL-COMP-ELECTRONICS-THAILAND-PUBLIC-COMPANY-TAIPE" }, { 0x000B2F, "bplan GmbH", "BPLAN" }, { 0x000B30, "Beijing Gongye Science & Technology Co.,Ltd", "BEIJING-GONGYE-SCIENCE" }, { 0x000B31, "Yantai ZhiYang Scientific and technology industry CO., LTD", "YANTAI-ZHIYANG-SCIENTIFIC-AND-INDUSTRY" }, { 0x000B32, "VORMETRIC, INC.", "VORMETRIC" }, { 0x000B33, "Vivato Technologies", "VIVATO-TECHNOLOGIES" }, { 0x000B34, "ShangHai Broadband Technologies CO.LTD", "SHANGHAI-BROADBAND-TECHNOLOGIES" }, { 0x000B35, "Quad Bit System co., Ltd.", "QUAD-BIT-SYSTEM" }, { 0x000B36, "Productivity Systems, Inc.", "PRODUCTIVITY" }, { 0x000B37, "MANUFACTURE DES MONTRES ROLEX SA", "MANUFACTURE-DES-MONTRES-ROLEX" }, { 0x000B38, "Knürr GmbH", "KNüRR" }, { 0x000B39, "Keisoku Giken Co.,Ltd.", "KEISOKU-GIKEN" }, { 0x000B3A, "QuStream Corporation", "QUSTREAM" }, { 0x000B3B, "devolo AG", "DEVOLO" }, { 0x000B3C, "Cygnal Integrated Products, Inc.", "CYGNAL-INTEGRATED-PRODUCTS" }, { 0x000B3D, "CONTAL OK Ltd.", "CONTAL-OK" }, { 0x000B3E, "BittWare, Inc", "BITTWARE" }, { 0x000B3F, "Anthology Solutions Inc.", "ANTHOLOGY-SOLUTIONS" }, { 0x000B40, "Oclaro", "OCLARO" }, { 0x000B41, "Ing. Büro Dr. Beutlhauser", "ING-BüRO-DR-BEUTLHAUSER" }, { 0x000B42, "commax Co., Ltd.", "COMMAX" }, { 0x000B43, "Microscan Systems, Inc.", "MICROSCAN" }, { 0x000B44, "Concord IDea Corp.", "CONCORD-IDEA" }, { 0x000B45, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000B46, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000B47, "Advanced Energy", "ADVANCED-ENERGY" }, { 0x000B48, "sofrel", "SOFREL" }, { 0x000B49, "RF-Link System Inc.", "RF-LINK-SYSTEM" }, { 0x000B4A, "Visimetrics (UK) Ltd", "VISIMETRICS-UK" }, { 0x000B4B, "VISIOWAVE SA", "VISIOWAVE" }, { 0x000B4C, "Clarion (M) Sdn Bhd", "CLARION-M-SDN-BHD" }, { 0x000B4D, "Emuzed", "EMUZED" }, { 0x000B4E, "VertexRSI, General Dynamics SatCOM Technologies, Inc.", "VERTEXRSI-GENERAL-DYNAMICS-SATCOM-TECHNOLOGIES" }, { 0x000B4F, "Verifone, INC.", "VERIFONE" }, { 0x000B50, "Oxygnet", "OXYGNET" }, { 0x000B51, "Micetek International Inc.", "MICETEK" }, { 0x000B52, "JOYMAX ELECTRONICS CO. LTD.", "JOYMAX-ELECTRONICS" }, { 0x000B53, "INITIUM Co., Ltd.", "INITIUM" }, { 0x000B54, "BiTMICRO Networks, Inc.", "BITMICRO-NETWORKS" }, { 0x000B55, "ADInstruments", "ADINSTRUMENTS" }, { 0x000B56, "Cybernetics", "CYBERNETICS" }, { 0x000B57, "Silicon Laboratories", "SILICON-LABORATORIES" }, { 0x000B58, "Astronautics C.A LTD", "ASTRONAUTICS-C-A" }, { 0x000B59, "ScriptPro, LLC", "SCRIPTPRO-LLC" }, { 0x000B5A, "HyperEdge", "HYPEREDGE" }, { 0x000B5B, "Rincon Research Corporation", "RINCON-RESEARCH" }, { 0x000B5C, "Newtech Co.,Ltd", "NEWTECH" }, { 0x000B5D, "FUJITSU LIMITED", "FUJITSU" }, { 0x000B5E, "Audio Engineering Society Inc.", "AUDIO-ENGINEERING-SOCIETY" }, { 0x000B5F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000B60, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000B61, "Friedrich Lütze GmbH & Co. KG", "FRIEDRICH-LüTZE" }, { 0x000B62, "ib-mohnen KG", "IB-MOHNEN" }, { 0x000B63, "Kaleidescape", "KALEIDESCAPE" }, { 0x000B64, "Kieback & Peter GmbH & Co KG", "KIEBACK-PETER" }, { 0x000B65, "Sy.A.C. srl", "SY-A-C-SRL" }, { 0x000B66, "Teralink Communications", "TERALINK-COMMUNICATION" }, { 0x000B67, "Topview Technology Corporation", "TOPVIEW" }, { 0x000B68, "Addvalue Communications Pte Ltd", "ADDVALUE-COMMUNICATION-PTE" }, { 0x000B69, "Franke Finland Oy", "FRANKE-FINLAND-OY" }, { 0x000B6A, "Asiarock Incorporation", "ASIAROCK-INCORPORATION" }, { 0x000B6B, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x000B6C, "Sychip Inc.", "SYCHIP" }, { 0x000B6D, "SOLECTRON JAPAN NAKANIIDA", "SOLECTRON-JAPAN-NAKANIIDA" }, { 0x000B6E, "Neff Instrument Corp.", "NEFF-INSTRUMENT" }, { 0x000B6F, "Media Streaming Networks Inc", "MEDIA-STREAMING-NETWORKS" }, { 0x000B70, "Load Technology, Inc.", "LOAD" }, { 0x000B71, "Litchfield Communications Inc.", "LITCHFIELD-COMMUNICATION" }, { 0x000B72, "Lawo AG", "LAWO" }, { 0x000B73, "Kodeos Communications", "KODEOS-COMMUNICATION" }, { 0x000B74, "Kingwave Technology Co., Ltd.", "KINGWAVE" }, { 0x000B75, "Iosoft Ltd.", "IOSOFT" }, { 0x000B76, "ET&T Technology Co. Ltd.", "ET-T" }, { 0x000B77, "Cogent Systems, Inc.", "COGENT" }, { 0x000B78, "TAIFATECH INC.", "TAIFATECH" }, { 0x000B79, "X-COM, Inc.", "X-COM" }, { 0x000B7A, "L-3 Linkabit", "L-3-LINKABIT" }, { 0x000B7B, "Test-Um Inc.", "TEST-UM" }, { 0x000B7C, "Telex Communications", "TELEX-COMMUNICATION" }, { 0x000B7D, "SOLOMON EXTREME INTERNATIONAL LTD.", "SOLOMON-EXTREME" }, { 0x000B7E, "SAGINOMIYA Seisakusho Inc.", "SAGINOMIYA-SEISAKUSHO" }, { 0x000B7F, "Align Engineering LLC", "ALIGN-ENGINEERING-LLC" }, { 0x000B80, "Lycium Networks", "LYCIUM-NETWORKS" }, { 0x000B81, "Kaparel Corporation", "KAPAREL" }, { 0x000B82, "Grandstream Networks, Inc.", "GRANDSTREAM-NETWORKS" }, { 0x000B83, "DATAWATT B.V.", "DATAWATT" }, { 0x000B84, "BODET", "BODET" }, { 0x000B85, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000B86, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x000B87, "American Reliance Inc.", "AMERICAN-RELIANCE" }, { 0x000B88, "Vidisco ltd.", "VIDISCO" }, { 0x000B89, "Top Global Technology, Ltd.", "TOP-GLOBAL" }, { 0x000B8A, "MITEQ Inc.", "MITEQ" }, { 0x000B8B, "KERAJET, S.A.", "KERAJET" }, { 0x000B8C, "Flextronics", "FLEXTRONICS" }, { 0x000B8D, "Avvio Networks", "AVVIO-NETWORKS" }, { 0x000B8E, "Ascent Corporation", "ASCENT" }, { 0x000B8F, "AKITA ELECTRONICS SYSTEMS CO.,LTD.", "AKITA-ELECTRONICS" }, { 0x000B90, "ADVA Optical Networking Ltd.", "ADVA-OPTICAL-NETWORKING" }, { 0x000B91, "Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH", "AGLAIA-GESELLSCHAFT-FüR-BILDVERARBEITUNG-UND-KOMMUNIKATION-MBH" }, { 0x000B92, "Ascom Danmark A/S", "ASCOM-DANMARK-A/S" }, { 0x000B93, "Ritter Elektronik", "RITTER-ELEKTRONIK" }, { 0x000B94, "Digital Monitoring Products, Inc.", "DIGITAL-MONITORING-PRODUCTS" }, { 0x000B95, "eBet Gaming Systems Pty Ltd", "EBET-GAMING-PTY" }, { 0x000B96, "Innotrac Diagnostics Oy", "INNOTRAC-DIAGNOSTICS-OY" }, { 0x000B97, "Matsushita Electric Industrial Co.,Ltd.", "MATSUSHITA-ELECTRIC-INDUSTRIAL" }, { 0x000B98, "NiceTechVision", "NICETECHVISION" }, { 0x000B99, "SensAble Technologies, Inc.", "SENSABLE-TECHNOLOGIES" }, { 0x000B9A, "Shanghai Ulink Telecom Equipment Co. Ltd.", "SHANGHAI-ULINK-TELECOM-EQUIPMENT" }, { 0x000B9B, "Sirius System Co, Ltd.", "SIRIUS-SYSTEM" }, { 0x000B9C, "TriBeam Technologies, Inc.", "TRIBEAM-TECHNOLOGIES" }, { 0x000B9D, "TwinMOS Technologies Inc.", "TWINMOS-TECHNOLOGIES" }, { 0x000B9E, "Yasing Technology Corp.", "YASING" }, { 0x000B9F, "Neue ELSA GmbH", "NEUE-ELSA" }, { 0x000BA0, "T&L Information Inc.", "T-L-INFORMATION" }, { 0x000BA1, "SYSCOM Ltd.", "SYSCOM" }, { 0x000BA2, "Sumitomo Electric Networks, Inc", "SUMITOMO-ELECTRIC-NETWORKS" }, { 0x000BA3, "Siemens AG, I&S", "SIEMENS-I-S" }, { 0x000BA4, "Shiron Satellite Communications Ltd. (1996)", "SHIRON-SATELLITE-COMMUNICATION-1996" }, { 0x000BA5, "Quasar Cipta Mandiri, PT", "QUASAR-CIPTA-MANDIRI-PT" }, { 0x000BA6, "Miyakawa Electric Works Ltd.", "MIYAKAWA-ELECTRIC-WORKS" }, { 0x000BA7, "Maranti Networks", "MARANTI-NETWORKS" }, { 0x000BA8, "HANBACK ELECTRONICS CO., LTD.", "HANBACK-ELECTRONICS" }, { 0x000BA9, "CloudShield Technologies, Inc.", "CLOUDSHIELD-TECHNOLOGIES" }, { 0x000BAA, "Aiphone co.,Ltd", "AIPHONE" }, { 0x000BAB, "Advantech Technology (CHINA) Co., Ltd.", "ADVANTECH-CHINA" }, { 0x000BAC, "3Com Ltd", "3COM" }, { 0x000BAD, "PC-PoS Inc.", "PC-POS" }, { 0x000BAE, "Vitals System Inc.", "VITALS-SYSTEM" }, { 0x000BAF, "WOOJU COMMUNICATIONS Co,.Ltd", "WOOJU-COMMUNICATION" }, { 0x000BB0, "Sysnet Telematica srl", "SYSNET-TELEMATICA-SRL" }, { 0x000BB1, "Super Star Technology Co., Ltd.", "SUPER-STAR" }, { 0x000BB2, "SMALLBIG TECHNOLOGY", "SMALLBIG" }, { 0x000BB3, "RiT technologies Ltd.", "RIT-TECHNOLOGIES" }, { 0x000BB4, "RDC Semiconductor Inc.,", "RDC-SEMICONDUCTOR" }, { 0x000BB5, "nStor Technologies, Inc.", "NSTOR-TECHNOLOGIES" }, { 0x000BB6, "Metalligence Technology Corp.", "METALLIGENCE" }, { 0x000BB7, "Micro Systems Co.,Ltd.", "MICRO" }, { 0x000BB8, "Kihoku Electronic Co.", "KIHOKU" }, { 0x000BB9, "Imsys AB", "IMSYS-AB" }, { 0x000BBA, "Harmonic, Inc", "HARMONIC" }, { 0x000BBB, "Etin Systems Co., Ltd", "ETIN" }, { 0x000BBC, "En Garde Systems, Inc.", "EN-GARDE" }, { 0x000BBD, "Connexionz Limited", "CONNEXIONZ" }, { 0x000BBE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000BBF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000BC0, "China IWNComm Co., Ltd.", "CHINA-IWNCOMM" }, { 0x000BC1, "Bay Microsystems, Inc.", "BAY-MICROSYSTEMS" }, { 0x000BC2, "Corinex Communication Corp.", "CORINEX-COMMUNICATION" }, { 0x000BC3, "Multiplex, Inc.", "MULTIPLEX" }, { 0x000BC4, "BIOTRONIK GmbH & Co", "BIOTRONIK" }, { 0x000BC5, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x000BC6, "ISAC, Inc.", "ISAC" }, { 0x000BC7, "ICET S.p.A.", "ICET-S-P-A" }, { 0x000BC8, "AirFlow Networks", "AIRFLOW-NETWORKS" }, { 0x000BC9, "Electroline Equipment", "ELECTROLINE-EQUIPMENT" }, { 0x000BCA, "DATAVAN International Corporation", "DATAVAN" }, { 0x000BCB, "Fagor Automation , S. Coop", "FAGOR-AUTOMATION-S-COOP" }, { 0x000BCC, "JUSAN, S.A.", "JUSAN" }, { 0x000BCD, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000BCE, "Free2move AB", "FREE2MOVE-AB" }, { 0x000BCF, "AGFA NDT INC.", "AGFA-NDT" }, { 0x000BD0, "XiMeta Technology Americas Inc.", "XIMETA-AMERICAS" }, { 0x000BD1, "Aeronix, Inc.", "AERONIX" }, { 0x000BD2, "Remopro Technology Inc.", "REMOPRO" }, { 0x000BD3, "cd3o", "CD3O" }, { 0x000BD4, "Beijing Wise Technology & Science Development Co.Ltd", "BEIJING-WISE-SCIENCE-DEVELOPMENT" }, { 0x000BD5, "Nvergence, Inc.", "NVERGENCE" }, { 0x000BD6, "Paxton Access Ltd", "PAXTON-ACCESS" }, { 0x000BD7, "DORMA Time + Access GmbH", "DORMA-TIME-+-ACCESS" }, { 0x000BD8, "Industrial Scientific Corp.", "INDUSTRIAL-SCIENTIFIC" }, { 0x000BD9, "General Hydrogen", "GENERAL-HYDROGEN" }, { 0x000BDA, "EyeCross Co.,Inc.", "EYECROSS" }, { 0x000BDB, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x000BDC, "AKCP", "AKCP" }, { 0x000BDD, "TOHOKU RICOH Co., LTD.", "TOHOKU-RICOH" }, { 0x000BDE, "TELDIX GmbH", "TELDIX" }, { 0x000BDF, "Shenzhen RouterD Networks Limited", "SHENZHEN-ROUTERD-NETWORKS" }, { 0x000BE0, "SercoNet Ltd.", "SERCONET" }, { 0x000BE1, "Nokia NET Product Operations", "NOKIA-NET-PRODUCT-OPERATIONS" }, { 0x000BE2, "Lumenera Corporation", "LUMENERA" }, { 0x000BE3, "Key Stream Co., Ltd.", "KEY-STREAM" }, { 0x000BE4, "Hosiden Corporation", "HOSIDEN" }, { 0x000BE5, "HIMS International Corporation", "HIMS" }, { 0x000BE6, "Datel Electronics", "DATEL-ELECTRONICS" }, { 0x000BE7, "COMFLUX TECHNOLOGY INC.", "COMFLUX" }, { 0x000BE8, "AOIP", "AOIP" }, { 0x000BE9, "Actel Corporation", "ACTEL" }, { 0x000BEA, "Zultys Technologies", "ZULTYS-TECHNOLOGIES" }, { 0x000BEB, "Systegra AG", "SYSTEGRA" }, { 0x000BEC, "NIPPON ELECTRIC INSTRUMENT, INC.", "NIPPON-ELECTRIC-INSTRUMENT" }, { 0x000BED, "ELM Inc.", "ELM" }, { 0x000BEE, "inc.jet, Incorporated", "JET-INCORPORATED" }, { 0x000BEF, "Code Corporation", "CODE" }, { 0x000BF0, "MoTEX Products Co., Ltd.", "MOTEX-PRODUCTS" }, { 0x000BF1, "LAP Laser Applikations", "LAP-LASER-APPLIKATIONS" }, { 0x000BF2, "Chih-Kan Technology Co., Ltd.", "CHIH-KAN" }, { 0x000BF3, "BAE SYSTEMS", "BAE" }, { 0x000BF4, "PRIVATE", "PRIVATE" }, { 0x000BF5, "Shanghai Sibo Telecom Technology Co.,Ltd", "SHANGHAI-SIBO-TELECOM" }, { 0x000BF6, "Nitgen Co., Ltd", "NITGEN" }, { 0x000BF7, "NIDEK CO.,LTD", "NIDEK" }, { 0x000BF8, "Infinera", "INFINERA" }, { 0x000BF9, "Gemstone communications, Inc.", "GEMSTONE-COMMUNICATION" }, { 0x000BFA, "EXEMYS SRL", "EXEMYS-SRL" }, { 0x000BFB, "D-NET International Corporation", "D-NET" }, { 0x000BFC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000BFD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000BFE, "CASTEL Broadband Limited", "CASTEL-BROADBAND" }, { 0x000BFF, "Berkeley Camera Engineering", "BERKELEY-CAMERA-ENGINEERING" }, { 0x000C00, "BEB Industrie-Elektronik AG", "BEB-INDUSTRIE-ELEKTRONIK" }, { 0x000C01, "Abatron AG", "ABATRON" }, { 0x000C02, "ABB Oy", "ABB-OY" }, { 0x000C03, "HDMI Licensing, LLC", "HDMI-LICENSING-LLC" }, { 0x000C04, "Tecnova", "TECNOVA" }, { 0x000C05, "RPA Reserch Co., Ltd.", "RPA-RESERCH" }, { 0x000C06, "Nixvue Systems Pte Ltd", "NIXVUE-PTE" }, { 0x000C07, "Iftest AG", "IFTEST" }, { 0x000C08, "HUMEX Technologies Corp.", "HUMEX-TECHNOLOGIES" }, { 0x000C09, "Hitachi IE Systems Co., Ltd", "HITACHI-IE" }, { 0x000C0A, "Guangdong Province Electronic Technology Research Institute", "GUANGDONG-PROVINCE-RESEARCH-INSTITUTE" }, { 0x000C0B, "Broadbus Technologies", "BROADBUS-TECHNOLOGIES" }, { 0x000C0C, "APPRO TECHNOLOGY INC.", "APPRO" }, { 0x000C0D, "Communications & Power Industries / Satcom Division", "COMMUNICATION-POWER-INDUSTRIES-/-SATCOM-DIVISION" }, { 0x000C0E, "XtremeSpectrum, Inc.", "XTREMESPECTRUM" }, { 0x000C0F, "Techno-One Co., Ltd", "TECHNO-ONE" }, { 0x000C10, "PNI Corporation", "PNI" }, { 0x000C11, "NIPPON DEMPA CO.,LTD.", "NIPPON-DEMPA" }, { 0x000C12, "Micro-Optronic-Messtechnik GmbH", "MICRO-OPTRONIC-MESSTECHNIK" }, { 0x000C13, "MediaQ", "MEDIAQ" }, { 0x000C14, "Diagnostic Instruments, Inc.", "DIAGNOSTIC-INSTRUMENTS" }, { 0x000C15, "CyberPower Systems, Inc.", "CYBERPOWER" }, { 0x000C16, "Concorde Microsystems Inc.", "CONCORDE-MICROSYSTEMS" }, { 0x000C17, "AJA Video Systems Inc", "AJA-VIDEO" }, { 0x000C18, "Zenisu Keisoku Inc.", "ZENISU-KEISOKU" }, { 0x000C19, "Telio Communications GmbH", "TELIO-COMMUNICATION" }, { 0x000C1A, "Quest Technical Solutions Inc.", "QUEST-TECHNICAL-SOLUTIONS" }, { 0x000C1B, "ORACOM Co, Ltd.", "ORACOM" }, { 0x000C1C, "MicroWeb Co., Ltd.", "MICROWEB" }, { 0x000C1D, "Mettler & Fuchs AG", "METTLER-FUCHS" }, { 0x000C1E, "Global Cache", "GLOBAL-CACHE" }, { 0x000C1F, "Glimmerglass Networks", "GLIMMERGLASS-NETWORKS" }, { 0x000C20, "Fi WIn, Inc.", "FI-WIN" }, { 0x000C21, "Faculty of Science and Technology, Keio University", "FACULTY-OF-SCIENCE-AND-KEIO-UNIVERSITY" }, { 0x000C22, "Double D Electronics Ltd", "DOUBLE-D-ELECTRONICS" }, { 0x000C23, "Beijing Lanchuan Tech. Co., Ltd.", "BEIJING-LANCHUAN-TECH" }, { 0x000C24, "ANATOR", "ANATOR" }, { 0x000C25, "Allied Telesis Labs, Inc.", "ALLIED-TELESIS-LABS" }, { 0x000C26, "Weintek Labs. Inc.", "WEINTEK-LABS" }, { 0x000C27, "Sammy Corporation", "SAMMY" }, { 0x000C28, "RIFATRON", "RIFATRON" }, { 0x000C29, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x000C2A, "OCTTEL Communication Co., Ltd.", "OCTTEL-COMMUNICATION" }, { 0x000C2B, "ELIAS Technology, Inc.", "ELIAS" }, { 0x000C2C, "Enwiser Inc.", "ENWISER" }, { 0x000C2D, "FullWave Technology Co., Ltd.", "FULLWAVE" }, { 0x000C2E, "Openet information technology(shenzhen) Co., Ltd.", "OPENET-INFORMATION-SHENZHEN" }, { 0x000C2F, "SeorimTechnology Co.,Ltd.", "SEORIMTECHNOLOGY" }, { 0x000C30, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000C31, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000C32, "Avionic Design Development GmbH", "AVIONIC-DESIGN-DEVELOPMENT" }, { 0x000C33, "Compucase Enterprise Co. Ltd.", "COMPUCASE" }, { 0x000C34, "Vixen Co., Ltd.", "VIXEN" }, { 0x000C35, "KaVo Dental GmbH & Co. KG", "KAVO-DENTAL" }, { 0x000C36, "SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD.", "SHARP-TAKAYA-ELECTRONICS-INDUSTRY" }, { 0x000C37, "Geomation, Inc.", "GEOMATION" }, { 0x000C38, "TelcoBridges Inc.", "TELCOBRIDGES" }, { 0x000C39, "Sentinel Wireless Inc.", "SENTINEL-WIRELESS" }, { 0x000C3A, "Oxance", "OXANCE" }, { 0x000C3B, "Orion Electric Co., Ltd.", "ORION-ELECTRIC" }, { 0x000C3C, "MediaChorus, Inc.", "MEDIACHORUS" }, { 0x000C3D, "Glsystech Co., Ltd.", "GLSYSTECH" }, { 0x000C3E, "Crest Audio", "CREST-AUDIO" }, { 0x000C3F, "Cogent Defence & Security Networks,", "COGENT-DEFENCE-SECURITY-NETWORKS" }, { 0x000C40, "Altech Controls", "ALTECH-CONTROLS" }, { 0x000C41, "Cisco-Linksys", "CISCO-LINKSYS" }, { 0x000C42, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x000C43, "Ralink Technology, Corp.", "RALINK" }, { 0x000C44, "Automated Interfaces, Inc.", "AUTOMATED-INTERFACES" }, { 0x000C45, "Animation Technologies Inc.", "ANIMATION-TECHNOLOGIES" }, { 0x000C46, "Allied Telesyn Inc.", "ALLIED-TELESYN" }, { 0x000C47, "SK Teletech(R&D Planning Team)", "SK-TELETECH-R-D-PLANNING-TEAM" }, { 0x000C48, "QoStek Corporation", "QOSTEK" }, { 0x000C49, "Dangaard Telecom RTC Division A/S", "DANGAARD-TELECOM-RTC-DIVISION-A/S" }, { 0x000C4A, "Cygnus Microsystems (P) Limited", "CYGNUS-MICROSYSTEMS-P" }, { 0x000C4B, "Cheops Elektronik", "CHEOPS-ELEKTRONIK" }, { 0x000C4C, "Arcor AG&Co.", "ARCOR" }, { 0x000C4D, "Curtiss-Wright Controls Avionics & Electronics", "CURTISS-WRIGHT-CONTROLS-AVIONICS-ELECTRONICS" }, { 0x000C4E, "Winbest Technology CO,LT", "WINBEST-LT" }, { 0x000C4F, "UDTech Japan Corporation", "UDTECH-JAPAN" }, { 0x000C50, "Seagate Technology", "SEAGATE" }, { 0x000C51, "Scientific Technologies Inc.", "SCIENTIFIC-TECHNOLOGIES" }, { 0x000C52, "Roll Systems Inc.", "ROLL" }, { 0x000C53, "PRIVATE", "PRIVATE" }, { 0x000C54, "Pedestal Networks, Inc", "PEDESTAL-NETWORKS" }, { 0x000C55, "Microlink Communications Inc.", "MICROLINK-COMMUNICATION" }, { 0x000C56, "Megatel Computer (1986) Corp.", "MEGATEL-1986" }, { 0x000C57, "MACKIE Engineering Services Belgium BVBA", "MACKIE-ENGINEERING-SERVICES-BELGIUM-BVBA" }, { 0x000C58, "M&S Systems", "M-S" }, { 0x000C59, "Indyme Electronics, Inc.", "INDYME-ELECTRONICS" }, { 0x000C5A, "IBSmm Embedded Electronics Consulting", "IBSMM-EMBEDDED-ELECTRONICS-CONSULTING" }, { 0x000C5B, "HANWANG TECHNOLOGY CO.,LTD", "HANWANG" }, { 0x000C5C, "GTN Systems B.V.", "GTN" }, { 0x000C5D, "CHIC TECHNOLOGY (CHINA) CORP.", "CHIC-CHINA" }, { 0x000C5E, "Calypso Medical", "CALYPSO-MEDICAL" }, { 0x000C5F, "Avtec, Inc.", "AVTEC" }, { 0x000C60, "ACM Systems", "ACM" }, { 0x000C61, "AC Tech corporation DBA Advanced Digital", "AC-TECH-DBA-ADVANCED-DIGITAL" }, { 0x000C62, "ABB AB, Cewe-Control", "ABB-AB-CEWE-CONTROL" }, { 0x000C63, "Zenith Electronics Corporation", "ZENITH-ELECTRONICS" }, { 0x000C64, "X2 MSA Group", "X2-MSA-GROUP" }, { 0x000C65, "Sunin Telecom", "SUNIN-TELECOM" }, { 0x000C66, "Pronto Networks Inc", "PRONTO-NETWORKS" }, { 0x000C67, "OYO ELECTRIC CO.,LTD", "OYO-ELECTRIC" }, { 0x000C68, "SigmaTel, Inc.", "SIGMATEL" }, { 0x000C69, "National Radio Astronomy Observatory", "NATIONAL-RADIO-ASTRONOMY-OBSERVATORY" }, { 0x000C6A, "MBARI", "MBARI" }, { 0x000C6B, "Kurz Industrie-Elektronik GmbH", "KURZ-INDUSTRIE-ELEKTRONIK" }, { 0x000C6C, "Elgato Systems LLC", "ELGATO-LLC" }, { 0x000C6D, "Edwards Ltd.", "EDWARDS" }, { 0x000C6E, "ASUSTEK COMPUTER INC.", "ASUSTEK" }, { 0x000C6F, "Amtek system co.,LTD.", "AMTEK-SYSTEM" }, { 0x000C70, "ACC GmbH", "ACC" }, { 0x000C71, "Wybron, Inc", "WYBRON" }, { 0x000C72, "Tempearl Industrial Co., Ltd.", "TEMPEARL-INDUSTRIAL" }, { 0x000C73, "TELSON ELECTRONICS CO., LTD", "TELSON-ELECTRONICS" }, { 0x000C74, "RIVERTEC CORPORATION", "RIVERTEC" }, { 0x000C75, "Oriental integrated electronics. LTD", "ORIENTAL-INTEGRATED-ELECTRONICS" }, { 0x000C76, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x000C77, "Life Racing Ltd", "LIFE-RACING" }, { 0x000C78, "In-Tech Electronics Limited", "IN-TECH-ELECTRONICS" }, { 0x000C79, "Extel Communications P/L", "EXTEL-COMMUNICATION-P/L" }, { 0x000C7A, "DaTARIUS Technologies GmbH", "DATARIUS-TECHNOLOGIES" }, { 0x000C7B, "ALPHA PROJECT Co.,Ltd.", "ALPHA-PROJECT" }, { 0x000C7C, "Internet Information Image Inc.", "INTERNET-INFORMATION-IMAGE" }, { 0x000C7D, "TEIKOKU ELECTRIC MFG. CO., LTD", "TEIKOKU-ELECTRIC-MFG" }, { 0x000C7E, "Tellium Incorporated", "TELLIUM-INCORPORATED" }, { 0x000C7F, "synertronixx GmbH", "SYNERTRONIXX" }, { 0x000C80, "Opelcomm Inc.", "OPELCOMM" }, { 0x000C81, "Schneider Electric (Australia)", "SCHNEIDER-ELECTRIC-AUSTRALIA" }, { 0x000C82, "NETWORK TECHNOLOGIES INC", "NETWORK-TECHNOLOGIES" }, { 0x000C83, "Logical Solutions", "LOGICAL-SOLUTIONS" }, { 0x000C84, "Eazix, Inc.", "EAZIX" }, { 0x000C85, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000C86, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000C87, "AMD", "AMD" }, { 0x000C88, "Apache Micro Peripherals, Inc.", "APACHE-MICRO-PERIPHERALS" }, { 0x000C89, "AC Electric Vehicles, Ltd.", "AC-ELECTRIC-VEHICLES" }, { 0x000C8A, "Bose Corporation", "BOSE" }, { 0x000C8B, "Connect Tech Inc", "CONNECT-TECH" }, { 0x000C8C, "KODICOM CO.,LTD.", "KODICOM" }, { 0x000C8D, "MATRIX VISION GmbH", "MATRIX-VISION" }, { 0x000C8E, "Mentor Engineering Inc", "MENTOR-ENGINEERING" }, { 0x000C8F, "Nergal s.r.l.", "NERGAL-S-R-L" }, { 0x000C90, "Octasic Inc.", "OCTASIC" }, { 0x000C91, "Riverhead Networks Inc.", "RIVERHEAD-NETWORKS" }, { 0x000C92, "WolfVision Gmbh", "WOLFVISION" }, { 0x000C93, "Xeline Co., Ltd.", "XELINE" }, { 0x000C94, "United Electronic Industries, Inc. (EUI)", "UNITED-INDUSTRIES-EUI" }, { 0x000C95, "PrimeNet", "PRIMENET" }, { 0x000C96, "OQO, Inc.", "OQO" }, { 0x000C97, "NV ADB TTV Technologies SA", "NV-ADB-TTV-TECHNOLOGIES" }, { 0x000C98, "LETEK Communications Inc.", "LETEK-COMMUNICATION" }, { 0x000C99, "HITEL LINK Co.,Ltd", "HITEL-LINK" }, { 0x000C9A, "Hitech Electronics Corp.", "HITECH-ELECTRONICS" }, { 0x000C9B, "EE Solutions, Inc", "EE-SOLUTIONS" }, { 0x000C9C, "Chongho information & communications", "CHONGHO-INFORMATION-COMMUNICATION" }, { 0x000C9D, "UbeeAirWalk, Inc.", "UBEEAIRWALK" }, { 0x000C9E, "MemoryLink Corp.", "MEMORYLINK" }, { 0x000C9F, "NKE Corporation", "NKE" }, { 0x000CA0, "StorCase Technology, Inc.", "STORCASE" }, { 0x000CA1, "SIGMACOM Co., LTD.", "SIGMACOM" }, { 0x000CA2, "Harmonic Video Network", "HARMONIC-VIDEO-NETWORK" }, { 0x000CA3, "Rancho Technology, Inc.", "RANCHO" }, { 0x000CA4, "Prompttec Product Management GmbH", "PROMPTTEC-PRODUCT-MANAGEMENT" }, { 0x000CA5, "Naman NZ LTd", "NAMAN-NZ" }, { 0x000CA6, "Mintera Corporation", "MINTERA" }, { 0x000CA7, "Metro (Suzhou) Technologies Co., Ltd.", "METRO-SUZHOU-TECHNOLOGIES" }, { 0x000CA8, "Garuda Networks Corporation", "GARUDA-NETWORKS" }, { 0x000CA9, "Ebtron Inc.", "EBTRON" }, { 0x000CAA, "Cubic Transportation Systems Inc", "CUBIC-TRANSPORTATION" }, { 0x000CAB, "COMMEND International", "COMMEND" }, { 0x000CAC, "Citizen Watch Co., Ltd.", "CITIZEN-WATCH" }, { 0x000CAD, "BTU International", "BTU" }, { 0x000CAE, "Ailocom Oy", "AILOCOM-OY" }, { 0x000CAF, "TRI TERM CO.,LTD.", "TRI-TERM" }, { 0x000CB0, "Star Semiconductor Corporation", "STAR-SEMICONDUCTOR" }, { 0x000CB1, "Salland Engineering (Europe) BV", "SALLAND-ENGINEERING-EUROPE" }, { 0x000CB2, "Comstar Co., Ltd.", "COMSTAR" }, { 0x000CB3, "ROUND Co.,Ltd.", "ROUND" }, { 0x000CB4, "AutoCell Laboratories, Inc.", "AUTOCELL-LABORATORIES" }, { 0x000CB5, "Premier Technolgies, Inc", "PREMIER-TECHNOLGIES" }, { 0x000CB6, "NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD", "NANJING-SEU-MOBILE-INTERNET" }, { 0x000CB7, "Nanjing Huazhuo Electronics Co., Ltd.", "NANJING-HUAZHUO-ELECTRONICS" }, { 0x000CB8, "MEDION AG", "MEDION" }, { 0x000CB9, "LEA", "LEA" }, { 0x000CBA, "Jamex, Inc.", "JAMEX" }, { 0x000CBB, "ISKRAEMECO", "ISKRAEMECO" }, { 0x000CBC, "Iscutum", "ISCUTUM" }, { 0x000CBD, "Interface Masters, Inc", "INTERFACE-MASTERS" }, { 0x000CBE, "Innominate Security Technologies AG", "INNOMINATE-SECURITY-TECHNOLOGIES" }, { 0x000CBF, "Holy Stone Ent. Co., Ltd.", "HOLY-STONE-ENT" }, { 0x000CC0, "Genera Oy", "GENERA-OY" }, { 0x000CC1, "Cooper Industries Inc.", "COOPER-INDUSTRIES" }, { 0x000CC2, "ControlNet (India) Private Limited", "CONTROLNET-INDIA-PRIVATE" }, { 0x000CC3, "BeWAN systems", "BEWAN" }, { 0x000CC4, "Tiptel AG", "TIPTEL" }, { 0x000CC5, "Nextlink Co., Ltd.", "NEXTLINK" }, { 0x000CC6, "Ka-Ro electronics GmbH", "KA-RO-ELECTRONICS" }, { 0x000CC7, "Intelligent Computer Solutions Inc.", "INTELLIGENT-SOLUTIONS" }, { 0x000CC8, "Xytronix Research & Design, Inc.", "XYTRONIX-RESEARCH-DESIGN" }, { 0x000CC9, "ILWOO DATA & TECHNOLOGY CO.,LTD", "ILWOO-DATA" }, { 0x000CCA, "HGST a Western Digital Company", "HGST-A-WESTERN-DIGITAL-COMPANY" }, { 0x000CCB, "Design Combus Ltd", "DESIGN-COMBUS" }, { 0x000CCC, "Aeroscout Ltd.", "AEROSCOUT" }, { 0x000CCD, "IEC - TC57", "IEC---TC57" }, { 0x000CCE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000CCF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000CD0, "Symetrix", "SYMETRIX" }, { 0x000CD1, "SFOM Technology Corp.", "SFOM" }, { 0x000CD2, "Schaffner EMV AG", "SCHAFFNER-EMV" }, { 0x000CD3, "Prettl Elektronik Radeberg GmbH", "PRETTL-ELEKTRONIK-RADEBERG" }, { 0x000CD4, "Positron Public Safety Systems inc.", "POSITRON-PUBLIC-SAFETY" }, { 0x000CD5, "Passave Inc.", "PASSAVE" }, { 0x000CD6, "PARTNER TECH", "PARTNER-TECH" }, { 0x000CD7, "Nallatech Ltd", "NALLATECH" }, { 0x000CD8, "M. K. Juchheim GmbH & Co", "M-K-JUCHHEIM" }, { 0x000CD9, "Itcare Co., Ltd", "ITCARE" }, { 0x000CDA, "FreeHand Systems, Inc.", "FREEHAND" }, { 0x000CDB, "Brocade Communications Systems, Inc", "BROCADE-COMMUNICATION" }, { 0x000CDC, "BECS Technology, Inc", "BECS" }, { 0x000CDD, "AOS Technologies AG", "AOS-TECHNOLOGIES" }, { 0x000CDE, "ABB STOTZ-KONTAKT GmbH", "ABB-STOTZ-KONTAKT" }, { 0x000CDF, "PULNiX America, Inc", "PULNIX-AMERICA" }, { 0x000CE0, "Trek Diagnostics Inc.", "TREK-DIAGNOSTICS" }, { 0x000CE1, "The Open Group", "THE-OPEN-GROUP" }, { 0x000CE2, "Rolls-Royce", "ROLLS-ROYCE" }, { 0x000CE3, "Option International N.V.", "OPTION-N-V" }, { 0x000CE4, "NeuroCom International, Inc.", "NEUROCOM" }, { 0x000CE5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000CE6, "Meru Networks Inc", "MERU-NETWORKS" }, { 0x000CE7, "MediaTek Inc.", "MEDIATEK" }, { 0x000CE8, "GuangZhou AnJuBao Co., Ltd", "GUANGZHOU-ANJUBAO" }, { 0x000CE9, "BLOOMBERG L.P.", "BLOOMBERG-L-P" }, { 0x000CEA, "aphona Kommunikationssysteme", "APHONA-KOMMUNIKATIONSSYSTEME" }, { 0x000CEB, "CNMP Networks, Inc.", "CNMP-NETWORKS" }, { 0x000CEC, "Spectracom Corp.", "SPECTRACOM" }, { 0x000CED, "Real Digital Media", "REAL-DIGITAL-MEDIA" }, { 0x000CEE, "jp-embedded", "JP-EMBEDDED" }, { 0x000CEF, "Open Networks Engineering Ltd", "OPEN-NETWORKS-ENGINEERING" }, { 0x000CF0, "M & N GmbH", "M-N" }, { 0x000CF1, "Intel Corporation", "INTEL" }, { 0x000CF2, "GAMESA Eólica", "GAMESA-EóLICA" }, { 0x000CF3, "CALL IMAGE SA", "CALL-IMAGE" }, { 0x000CF4, "AKATSUKI ELECTRIC MFG.CO.,LTD.", "AKATSUKI-ELECTRIC-MFG" }, { 0x000CF5, "InfoExpress", "INFOEXPRESS" }, { 0x000CF6, "Sitecom Europe BV", "SITECOM-EUROPE" }, { 0x000CF7, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000CF8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000CF9, "Xylem Water Solutions", "XYLEM-WATER-SOLUTIONS" }, { 0x000CFA, "Digital Systems Corp", "DIGITAL" }, { 0x000CFB, "Korea Network Systems", "KOREA-NETWORK" }, { 0x000CFC, "S2io Technologies Corp", "S2IO-TECHNOLOGIES" }, { 0x000CFD, "Hyundai ImageQuest Co.,Ltd.", "HYUNDAI-IMAGEQUEST" }, { 0x000CFE, "Grand Electronic Co., Ltd", "GRAND" }, { 0x000CFF, "MRO-TEK LIMITED", "MRO-TEK" }, { 0x000D00, "Seaway Networks Inc.", "SEAWAY-NETWORKS" }, { 0x000D01, "P&E Microcomputer Systems, Inc.", "P-E-MICROCOMPUTER" }, { 0x000D02, "NEC AccessTechnica, Ltd.", "NEC-ACCESSTECHNICA" }, { 0x000D03, "Matrics, Inc.", "MATRICS" }, { 0x000D04, "Foxboro Eckardt Development GmbH", "FOXBORO-ECKARDT-DEVELOPMENT" }, { 0x000D05, "cybernet manufacturing inc.", "CYBERNET-MANUFACTURING" }, { 0x000D06, "Compulogic Limited", "COMPULOGIC" }, { 0x000D07, "Calrec Audio Ltd", "CALREC-AUDIO" }, { 0x000D08, "AboveCable, Inc.", "ABOVECABLE" }, { 0x000D09, "Yuehua(Zhuhai) Electronic CO. LTD", "YUEHUA-ZHUHAI" }, { 0x000D0A, "Projectiondesign as", "PROJECTIONDESIGN-AS" }, { 0x000D0B, "Buffalo Inc.", "BUFFALO" }, { 0x000D0C, "MDI Security Systems", "MDI-SECURITY" }, { 0x000D0D, "ITSupported, LLC", "ITSUPPORTED-LLC" }, { 0x000D0E, "Inqnet Systems, Inc.", "INQNET" }, { 0x000D0F, "Finlux Ltd", "FINLUX" }, { 0x000D10, "Embedtronics Oy", "EMBEDTRONICS-OY" }, { 0x000D11, "DENTSPLY - Gendex", "DENTSPLY---GENDEX" }, { 0x000D12, "AXELL Corporation", "AXELL" }, { 0x000D13, "Wilhelm Rutenbeck GmbH&Co.KG", "WILHELM-RUTENBECK" }, { 0x000D14, "Vtech Innovation LP dba Advanced American Telephones", "VTECH-INNOVATION-LP-DBA-ADVANCED-AMERICAN-TELEPHONES" }, { 0x000D15, "Voipac s.r.o.", "VOIPAC-S-R-O" }, { 0x000D16, "UHS Systems Pty Ltd", "UHS-PTY" }, { 0x000D17, "Turbo Networks Co.Ltd", "TURBO-NETWORKS" }, { 0x000D18, "Mega-Trend Electronics CO., LTD.", "MEGA-TREND-ELECTRONICS" }, { 0x000D19, "ROBE Show lighting", "ROBE-SHOW-LIGHTING" }, { 0x000D1A, "Mustek System Inc.", "MUSTEK-SYSTEM" }, { 0x000D1B, "Kyoto Electronics Manufacturing Co., Ltd.", "KYOTO-ELECTRONICS-MANUFACTURING" }, { 0x000D1C, "Amesys Defense", "AMESYS-DEFENSE" }, { 0x000D1D, "HIGH-TEK HARNESS ENT. CO., LTD.", "HIGH-TEK-HARNESS-ENT" }, { 0x000D1E, "Control Techniques", "CONTROL-TECHNIQUES" }, { 0x000D1F, "AV Digital", "AV-DIGITAL" }, { 0x000D20, "ASAHIKASEI TECHNOSYSTEM CO.,LTD.", "ASAHIKASEI-TECHNOSYSTEM" }, { 0x000D21, "WISCORE Inc.", "WISCORE" }, { 0x000D22, "Unitronics LTD", "UNITRONICS" }, { 0x000D23, "Smart Solution, Inc", "SMART-SOLUTION" }, { 0x000D24, "SENTEC E&E CO., LTD.", "SENTEC-E-E" }, { 0x000D25, "SANDEN CORPORATION", "SANDEN" }, { 0x000D26, "Primagraphics Limited", "PRIMAGRAPHICS" }, { 0x000D27, "MICROPLEX Printware AG", "MICROPLEX-PRINTWARE" }, { 0x000D28, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000D29, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000D2A, "Scanmatic AS", "SCANMATIC-AS" }, { 0x000D2B, "Racal Instruments", "RACAL-INSTRUMENTS" }, { 0x000D2C, "Patapsco Designs Ltd", "PATAPSCO-DESIGNS" }, { 0x000D2D, "NCT Deutschland GmbH", "NCT-DEUTSCHLAND" }, { 0x000D2E, "Matsushita Avionics Systems Corporation", "MATSUSHITA-AVIONICS" }, { 0x000D2F, "AIN Comm.Tech.Co., LTD", "AIN-COMM-TECH" }, { 0x000D30, "IceFyre Semiconductor", "ICEFYRE-SEMICONDUCTOR" }, { 0x000D31, "Compellent Technologies, Inc.", "COMPELLENT-TECHNOLOGIES" }, { 0x000D32, "DispenseSource, Inc.", "DISPENSESOURCE" }, { 0x000D33, "Prediwave Corp.", "PREDIWAVE" }, { 0x000D34, "Shell International Exploration and Production, Inc.", "SHELL-EXPLORATION-AND-PRODUCTION" }, { 0x000D35, "PAC International Ltd", "PAC" }, { 0x000D36, "Wu Han Routon Electronic Co., Ltd", "WU-HAN-ROUTON" }, { 0x000D37, "WIPLUG", "WIPLUG" }, { 0x000D38, "NISSIN INC.", "NISSIN" }, { 0x000D39, "Network Electronics", "NETWORK-ELECTRONICS" }, { 0x000D3A, "Microsoft Corp.", "MICROSOFT" }, { 0x000D3B, "Microelectronics Technology Inc.", "MICROELECTRONICS" }, { 0x000D3C, "i.Tech Dynamic Ltd", "I-TECH-DYNAMIC" }, { 0x000D3D, "Hammerhead Systems, Inc.", "HAMMERHEAD" }, { 0x000D3E, "APLUX Communications Ltd.", "APLUX-COMMUNICATION" }, { 0x000D3F, "VTI Instruments Corporation", "VTI-INSTRUMENTS" }, { 0x000D40, "Verint Loronix Video Solutions", "VERINT-LORONIX-VIDEO-SOLUTIONS" }, { 0x000D41, "Siemens AG ICM MP UC RD IT KLF1", "SIEMENS-ICM-MP-UC-RD-IT-KLF1" }, { 0x000D42, "Newbest Development Limited", "NEWBEST-DEVELOPMENT" }, { 0x000D43, "DRS Tactical Systems Inc.", "DRS-TACTICAL" }, { 0x000D44, "Audio BU - Logitech", "AUDIO-BU---LOGITECH" }, { 0x000D45, "Tottori SANYO Electric Co., Ltd.", "TOTTORI-SANYO-ELECTRIC" }, { 0x000D46, "Parker SSD Drives", "PARKER-SSD-DRIVES" }, { 0x000D47, "Collex", "COLLEX" }, { 0x000D48, "AEWIN Technologies Co., Ltd.", "AEWIN-TECHNOLOGIES" }, { 0x000D49, "Triton Systems of Delaware, Inc.", "TRITON-OF-DELAWARE" }, { 0x000D4A, "Steag ETA-Optik", "STEAG-ETA-OPTIK" }, { 0x000D4B, "Roku, LLC", "ROKU-LLC" }, { 0x000D4C, "Outline Electronics Ltd.", "OUTLINE-ELECTRONICS" }, { 0x000D4D, "Ninelanes", "NINELANES" }, { 0x000D4E, "NDR Co.,LTD.", "NDR" }, { 0x000D4F, "Kenwood Corporation", "KENWOOD" }, { 0x000D50, "Galazar Networks", "GALAZAR-NETWORKS" }, { 0x000D51, "DIVR Systems, Inc.", "DIVR" }, { 0x000D52, "Comart system", "COMART-SYSTEM" }, { 0x000D53, "Beijing 5w Communication Corp.", "BEIJING-5W-COMMUNICATION" }, { 0x000D54, "3Com Ltd", "3COM" }, { 0x000D55, "SANYCOM Technology Co.,Ltd", "SANYCOM" }, { 0x000D56, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x000D57, "Fujitsu I-Network Systems Limited.", "FUJITSU-I-NETWORK" }, { 0x000D58, "PRIVATE", "PRIVATE" }, { 0x000D59, "Amity Systems, Inc.", "AMITY" }, { 0x000D5A, "Tiesse SpA", "TIESSE-SPA" }, { 0x000D5B, "Smart Empire Investments Limited", "SMART-EMPIRE-INVESTMENTS" }, { 0x000D5C, "Robert Bosch GmbH, VT-ATMO", "ROBERT-BOSCH-VT-ATMO" }, { 0x000D5D, "Raritan Computer, Inc", "RARITAN" }, { 0x000D5E, "NEC Personal Products", "NEC-PERSONAL-PRODUCTS" }, { 0x000D5F, "Minds Inc", "MINDS" }, { 0x000D60, "IBM Corp", "IBM" }, { 0x000D61, "Giga-Byte Technology Co., Ltd.", "GIGA-BYTE" }, { 0x000D62, "Funkwerk Dabendorf GmbH", "FUNKWERK-DABENDORF" }, { 0x000D63, "DENT Instruments, Inc.", "DENT-INSTRUMENTS" }, { 0x000D64, "COMAG Handels AG", "COMAG-HANDELS" }, { 0x000D65, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000D66, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000D67, "Ericsson", "ERICSSON" }, { 0x000D68, "Vinci Systems, Inc.", "VINCI" }, { 0x000D69, "TMT&D Corporation", "TMT-D" }, { 0x000D6A, "Redwood Technologies LTD", "REDWOOD-TECHNOLOGIES" }, { 0x000D6B, "Mita-Teknik A/S", "MITA-TEKNIK-A/S" }, { 0x000D6C, "M-Audio", "M-AUDIO" }, { 0x000D6D, "K-Tech Devices Corp.", "K-TECH-DEVICES" }, { 0x000D6E, "K-Patents Oy", "K-PATENTS-OY" }, { 0x000D6F, "Ember Corporation", "EMBER" }, { 0x000D70, "Datamax Corporation", "DATAMAX" }, { 0x000D71, "boca systems", "BOCA" }, { 0x000D72, "2Wire, Inc", "2WIRE" }, { 0x000D73, "Technical Support, Inc.", "TECHNICAL-SUPPORT" }, { 0x000D74, "Sand Network Systems, Inc.", "SAND-NETWORK" }, { 0x000D75, "Kobian Pte Ltd - Taiwan Branch", "KOBIAN-PTE---TAIWAN-BRANCH" }, { 0x000D76, "Hokuto Denshi Co,. Ltd.", "HOKUTO-DENSHI" }, { 0x000D77, "FalconStor Software", "FALCONSTOR-SOFTWARE" }, { 0x000D78, "Engineering & Security", "ENGINEERING-SECURITY" }, { 0x000D79, "Dynamic Solutions Co,.Ltd.", "DYNAMIC-SOLUTIONS" }, { 0x000D7A, "DiGATTO Asia Pacific Pte Ltd", "DIGATTO-ASIA-PACIFIC-PTE" }, { 0x000D7B, "Consensys Computers Inc.", "CONSENSYS-COMPUTERS" }, { 0x000D7C, "Codian Ltd", "CODIAN" }, { 0x000D7D, "Afco Systems", "AFCO" }, { 0x000D7E, "Axiowave Networks, Inc.", "AXIOWAVE-NETWORKS" }, { 0x000D7F, "MIDAS COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch)", "MIDAS-COMMUNICATION-TECHNOLOGIES-PTE-FOREIGN-BRANCH" }, { 0x000D80, "Online Development Inc", "ONLINE-DEVELOPMENT" }, { 0x000D81, "Pepperl+Fuchs GmbH", "PEPPERL+FUCHS" }, { 0x000D82, "PHS srl", "PHS-SRL" }, { 0x000D83, "Sanmina-SCI Hungary Ltd.", "SANMINA-SCI-HUNGARY" }, { 0x000D84, "Makus Inc.", "MAKUS" }, { 0x000D85, "Tapwave, Inc.", "TAPWAVE" }, { 0x000D86, "Huber + Suhner AG", "HUBER-+-SUHNER" }, { 0x000D87, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x000D88, "D-Link Corporation", "D-LINK" }, { 0x000D89, "Bils Technology Inc", "BILS" }, { 0x000D8A, "Winners Electronics Co., Ltd.", "WINNERS-ELECTRONICS" }, { 0x000D8B, "T&D Corporation", "T-D" }, { 0x000D8C, "Shanghai Wedone Digital Ltd. CO.", "SHANGHAI-WEDONE-DIGITAL" }, { 0x000D8D, "Prosoft Technology, Inc", "PROSOFT" }, { 0x000D8E, "Koden Electronics Co., Ltd.", "KODEN-ELECTRONICS" }, { 0x000D8F, "King Tsushin Kogyo Co., LTD.", "KING-TSUSHIN-KOGYO" }, { 0x000D90, "Factum Electronics AB", "FACTUM-ELECTRONICS-AB" }, { 0x000D91, "Eclipse (HQ Espana) S.L.", "ECLIPSE-HQ-ESPANA-S-L" }, { 0x000D92, "Arima Communication Corporation", "ARIMA-COMMUNICATION" }, { 0x000D93, "Apple", "APPLE" }, { 0x000D94, "AFAR Communications,Inc", "AFAR-COMMUNICATION" }, { 0x000D95, "Opti-cell, Inc.", "OPTI-CELL" }, { 0x000D96, "Vtera Technology Inc.", "VTERA" }, { 0x000D97, "Tropos Networks, Inc.", "TROPOS-NETWORKS" }, { 0x000D98, "S.W.A.C. Schmitt-Walter Automation Consult GmbH", "S-W-A-C-SCHMITT-WALTER-AUTOMATION-CONSULT" }, { 0x000D99, "Orbital Sciences Corp.; Launch Systems Group", "ORBITAL-SCIENCES-LAUNCH-GROUP" }, { 0x000D9A, "INFOTEC LTD", "INFOTEC" }, { 0x000D9B, "Heraeus Electro-Nite International N.V.", "HERAEUS-ELECTRO-NITE-N-V" }, { 0x000D9C, "Elan GmbH & Co KG", "ELAN" }, { 0x000D9D, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000D9E, "TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd.", "TOKUDEN-OHIZUMI-SEISAKUSYO" }, { 0x000D9F, "RF Micro Devices", "RF-MICRO-DEVICES" }, { 0x000DA0, "NEDAP N.V.", "NEDAP-N-V" }, { 0x000DA1, "MIRAE ITS Co.,LTD.", "MIRAE-ITS" }, { 0x000DA2, "Infrant Technologies, Inc.", "INFRANT-TECHNOLOGIES" }, { 0x000DA3, "Emerging Technologies Limited", "EMERGING-TECHNOLOGIES" }, { 0x000DA4, "DOSCH & AMAND SYSTEMS AG", "DOSCH-AMAND" }, { 0x000DA5, "Fabric7 Systems, Inc", "FABRIC7" }, { 0x000DA6, "Universal Switching Corporation", "UNIVERSAL-SWITCHING" }, { 0x000DA7, "PRIVATE", "PRIVATE" }, { 0x000DA8, "Teletronics Technology Corporation", "TELETRONICS" }, { 0x000DA9, "T.E.A.M. S.L.", "T-E-A-M-S-L" }, { 0x000DAA, "S.A.Tehnology co.,Ltd.", "TEHNOLOGY" }, { 0x000DAB, "Parker Hannifin GmbH Electromechanical Division Europe", "PARKER-HANNIFIN-ELECTROMECHANICAL-DIVISION-EUROPE" }, { 0x000DAC, "Japan CBM Corporation", "JAPAN-CBM" }, { 0x000DAD, "Dataprobe, Inc.", "DATAPROBE" }, { 0x000DAE, "SAMSUNG HEAVY INDUSTRIES CO., LTD.", "SAMSUNG-HEAVY-INDUSTRIES" }, { 0x000DAF, "Plexus Corp (UK) Ltd", "PLEXUS-UK" }, { 0x000DB0, "Olym-tech Co.,Ltd.", "OLYM-TECH" }, { 0x000DB1, "Japan Network Service Co., Ltd.", "JAPAN-NETWORK-SERVICE" }, { 0x000DB2, "Ammasso, Inc.", "AMMASSO" }, { 0x000DB3, "SDO Communication Corperation", "SDO-COMMUNICATION-CORPERATION" }, { 0x000DB4, "NETASQ", "NETASQ" }, { 0x000DB5, "GLOBALSAT TECHNOLOGY CORPORATION", "GLOBALSAT" }, { 0x000DB6, "Broadcom Corporation", "BROADCOM" }, { 0x000DB7, "SANKO ELECTRIC CO,.LTD", "SANKO-ELECTRIC" }, { 0x000DB8, "SCHILLER AG", "SCHILLER" }, { 0x000DB9, "PC Engines GmbH", "PC-ENGINES" }, { 0x000DBA, "Océ Document Technologies GmbH", "OCé-DOCUMENT-TECHNOLOGIES" }, { 0x000DBB, "Nippon Dentsu Co.,Ltd.", "NIPPON-DENTSU" }, { 0x000DBC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000DBD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000DBE, "Bel Fuse Europe Ltd.,UK", "BEL-FUSE-EUROPE-UK" }, { 0x000DBF, "TekTone Sound & Signal Mfg., Inc.", "TEKTONE-SOUND-SIGNAL-MFG" }, { 0x000DC0, "Spagat AS", "SPAGAT-AS" }, { 0x000DC1, "SafeWeb Inc", "SAFEWEB" }, { 0x000DC2, "PRIVATE", "PRIVATE" }, { 0x000DC3, "First Communication, Inc.", "FIRST-COMMUNICATION" }, { 0x000DC4, "Emcore Corporation", "EMCORE" }, { 0x000DC5, "EchoStar Global B.V.", "ECHOSTAR-GLOBAL" }, { 0x000DC6, "DigiRose Technology Co., Ltd.", "DIGIROSE" }, { 0x000DC7, "COSMIC ENGINEERING INC.", "COSMIC-ENGINEERING" }, { 0x000DC8, "AirMagnet, Inc", "AIRMAGNET" }, { 0x000DC9, "THALES Elektronik Systeme GmbH", "THALES-ELEKTRONIK-SYSTEME" }, { 0x000DCA, "Tait Electronics", "TAIT-ELECTRONICS" }, { 0x000DCB, "Petcomkorea Co., Ltd.", "PETCOMKOREA" }, { 0x000DCC, "NEOSMART Corp.", "NEOSMART" }, { 0x000DCD, "GROUPE TXCOM", "GROUPE-TXCOM" }, { 0x000DCE, "Dynavac Technology Pte Ltd", "DYNAVAC-PTE" }, { 0x000DCF, "Cidra Corp.", "CIDRA" }, { 0x000DD0, "TetraTec Instruments GmbH", "TETRATEC-INSTRUMENTS" }, { 0x000DD1, "Stryker Corporation", "STRYKER" }, { 0x000DD2, "Simrad Optronics ASA", "SIMRAD-OPTRONICS-ASA" }, { 0x000DD3, "SAMWOO Telecommunication Co.,Ltd.", "SAMWOO-TELECOMMUNICATION" }, { 0x000DD4, "Symantec Corporation", "SYMANTEC" }, { 0x000DD5, "O'RITE TECHNOLOGY CO.,LTD", "O-RITE" }, { 0x000DD6, "ITI LTD", "ITI" }, { 0x000DD7, "Bright", "BRIGHT" }, { 0x000DD8, "BBN", "BBN" }, { 0x000DD9, "Anton Paar GmbH", "ANTON-PAAR" }, { 0x000DDA, "ALLIED TELESIS K.K.", "ALLIED-TELESIS-K-K" }, { 0x000DDB, "AIRWAVE TECHNOLOGIES INC.", "AIRWAVE-TECHNOLOGIES" }, { 0x000DDC, "VAC", "VAC" }, { 0x000DDD, "Profilo Telra Elektronik Sanayi ve Ticaret. A.Åž", "PROFILO-TELRA-ELEKTRONIK-SANAYI-VE-TICARET-A-Åž" }, { 0x000DDE, "Joyteck Co., Ltd.", "JOYTECK" }, { 0x000DDF, "Japan Image & Network Inc.", "JAPAN-IMAGE-NETWORK" }, { 0x000DE0, "ICPDAS Co.,LTD", "ICPDAS" }, { 0x000DE1, "Control Products, Inc.", "CONTROL-PRODUCTS" }, { 0x000DE2, "CMZ Sistemi Elettronici", "CMZ-SISTEMI-ELETTRONICI" }, { 0x000DE3, "AT Sweden AB", "AT-SWEDEN-AB" }, { 0x000DE4, "DIGINICS, Inc.", "DIGINICS" }, { 0x000DE5, "Samsung Thales", "SAMSUNG-THALES" }, { 0x000DE6, "YOUNGBO ENGINEERING CO.,LTD", "YOUNGBO-ENGINEERING" }, { 0x000DE7, "Snap-on OEM Group", "SNAP-ON-OEM-GROUP" }, { 0x000DE8, "Nasaco Electronics Pte. Ltd", "NASACO-ELECTRONICS-PTE" }, { 0x000DE9, "Napatech Aps", "NAPATECH-APS" }, { 0x000DEA, "Kingtel Telecommunication Corp.", "KINGTEL-TELECOMMUNICATION" }, { 0x000DEB, "CompXs Limited", "COMPXS" }, { 0x000DEC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000DED, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000DEE, "Andrew RF Power Amplifier Group", "ANDREW-RF-POWER-AMPLIFIER-GROUP" }, { 0x000DEF, "Soc. Coop. Bilanciai", "SOC-COOP-BILANCIAI" }, { 0x000DF0, "QCOM TECHNOLOGY INC.", "QCOM" }, { 0x000DF1, "IONIX INC.", "IONIX" }, { 0x000DF2, "PRIVATE", "PRIVATE" }, { 0x000DF3, "Asmax Solutions", "ASMAX-SOLUTIONS" }, { 0x000DF4, "Watertek Co.", "WATERTEK" }, { 0x000DF5, "Teletronics International Inc.", "TELETRONICS" }, { 0x000DF6, "Technology Thesaurus Corp.", "THESAURUS" }, { 0x000DF7, "Space Dynamics Lab", "SPACE-DYNAMICS-LAB" }, { 0x000DF8, "ORGA Kartensysteme GmbH", "ORGA-KARTENSYSTEME" }, { 0x000DF9, "NDS Limited", "NDS" }, { 0x000DFA, "Micro Control Systems Ltd.", "MICRO-CONTROL" }, { 0x000DFB, "Komax AG", "KOMAX" }, { 0x000DFC, "ITFOR Inc.", "ITFOR" }, { 0x000DFD, "Huges Hi-Tech Inc.,", "HUGES-HI-TECH" }, { 0x000DFE, "Hauppauge Computer Works, Inc.", "HAUPPAUGE-WORKS" }, { 0x000DFF, "CHENMING MOLD INDUSTRY CORP.", "CHENMING-MOLD-INDUSTRY" }, { 0x000E00, "Atrie", "ATRIE" }, { 0x000E01, "ASIP Technologies Inc.", "ASIP-TECHNOLOGIES" }, { 0x000E02, "Advantech AMT Inc.", "ADVANTECH-AMT" }, { 0x000E03, "Emulex Corporation", "EMULEX" }, { 0x000E04, "CMA/Microdialysis AB", "CMA/MICRODIALYSIS-AB" }, { 0x000E05, "WIRELESS MATRIX CORP.", "WIRELESS-MATRIX" }, { 0x000E06, "Team Simoco Ltd", "TEAM-SIMOCO" }, { 0x000E07, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x000E08, "Cisco Linksys LLC", "CISCO-LINKSYS-LLC" }, { 0x000E09, "Shenzhen Coship Software Co.,LTD.", "SHENZHEN-COSHIP-SOFTWARE" }, { 0x000E0A, "SAKUMA DESIGN OFFICE", "SAKUMA-DESIGN-OFFICE" }, { 0x000E0B, "Netac Technology Co., Ltd.", "NETAC" }, { 0x000E0C, "Intel Corporation", "INTEL" }, { 0x000E0D, "Hesch Schröder GmbH", "HESCH-SCHRöDER" }, { 0x000E0E, "ESA elettronica S.P.A.", "ESA-ELETTRONICA-S-P-A" }, { 0x000E0F, "ERMME", "ERMME" }, { 0x000E10, "C-guys, Inc.", "C-GUYS" }, { 0x000E11, "BDT Büro und Datentechnik GmbH & Co.KG", "BDT-BüRO-UND-DATENTECHNIK" }, { 0x000E12, "Adaptive Micro Systems Inc.", "ADAPTIVE-MICRO" }, { 0x000E13, "Accu-Sort Systems inc.", "ACCU-SORT" }, { 0x000E14, "Visionary Solutions, Inc.", "VISIONARY-SOLUTIONS" }, { 0x000E15, "Tadlys LTD", "TADLYS" }, { 0x000E16, "SouthWing S.L.", "SOUTHWING-S-L" }, { 0x000E17, "PRIVATE", "PRIVATE" }, { 0x000E18, "MyA Technology", "MYA" }, { 0x000E19, "LogicaCMG Pty Ltd", "LOGICACMG-PTY" }, { 0x000E1A, "JPS Communications", "JPS-COMMUNICATION" }, { 0x000E1B, "IAV GmbH", "IAV" }, { 0x000E1C, "Hach Company", "HACH-COMPANY" }, { 0x000E1D, "ARION Technology Inc.", "ARION" }, { 0x000E1E, "QLogic Corporation", "QLOGIC" }, { 0x000E1F, "TCL Networks Equipment Co., Ltd.", "TCL-NETWORKS-EQUIPMENT" }, { 0x000E20, "ACCESS Systems Americas, Inc.", "ACCESS-AMERICAS" }, { 0x000E21, "MTU Friedrichshafen GmbH", "MTU-FRIEDRICHSHAFEN" }, { 0x000E22, "PRIVATE", "PRIVATE" }, { 0x000E23, "Incipient, Inc.", "INCIPIENT" }, { 0x000E24, "Huwell Technology Inc.", "HUWELL" }, { 0x000E25, "Hannae Technology Co., Ltd", "HANNAE" }, { 0x000E26, "Gincom Technology Corp.", "GINCOM" }, { 0x000E27, "Crere Networks, Inc.", "CRERE-NETWORKS" }, { 0x000E28, "Dynamic Ratings P/L", "DYNAMIC-RATINGS-P/L" }, { 0x000E29, "Shester Communications Inc", "SHESTER-COMMUNICATION" }, { 0x000E2A, "PRIVATE", "PRIVATE" }, { 0x000E2B, "Safari Technologies", "SAFARI-TECHNOLOGIES" }, { 0x000E2C, "Netcodec co.", "NETCODEC" }, { 0x000E2D, "Hyundai Digital Technology Co.,Ltd.", "HYUNDAI-DIGITAL" }, { 0x000E2E, "Edimax Technology Co., Ltd.", "EDIMAX" }, { 0x000E2F, "Roche Diagnostics GmbH", "ROCHE-DIAGNOSTICS" }, { 0x000E30, "AERAS Networks, Inc.", "AERAS-NETWORKS" }, { 0x000E31, "Olympus Soft Imaging Solutions GmbH", "OLYMPUS-SOFT-IMAGING-SOLUTIONS" }, { 0x000E32, "Kontron Medical", "KONTRON-MEDICAL" }, { 0x000E33, "Shuko Electronics Co.,Ltd", "SHUKO-ELECTRONICS" }, { 0x000E34, "NexGen City, LP", "NEXGEN-CITY-LP" }, { 0x000E35, "Intel Corp", "INTEL" }, { 0x000E36, "HEINESYS, Inc.", "HEINESYS" }, { 0x000E37, "Harms & Wende GmbH & Co.KG", "HARMS-WENDE" }, { 0x000E38, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000E39, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000E3A, "Cirrus Logic", "CIRRUS-LOGIC" }, { 0x000E3B, "Hawking Technologies, Inc.", "HAWKING-TECHNOLOGIES" }, { 0x000E3C, "Transact Technologies Inc", "TRANSACT-TECHNOLOGIES" }, { 0x000E3D, "Televic N.V.", "TELEVIC-N-V" }, { 0x000E3E, "Sun Optronics Inc", "SUN-OPTRONICS" }, { 0x000E3F, "Soronti, Inc.", "SORONTI" }, { 0x000E40, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000E41, "NIHON MECHATRONICS CO.,LTD.", "NIHON-MECHATRONICS" }, { 0x000E42, "Motic Incoporation Ltd.", "MOTIC-INCOPORATION" }, { 0x000E43, "G-Tek Electronics Sdn. Bhd.", "G-TEK-ELECTRONICS-SDN-BHD" }, { 0x000E44, "Digital 5, Inc.", "DIGITAL-5" }, { 0x000E45, "Beijing Newtry Electronic Technology Ltd", "BEIJING-NEWTRY" }, { 0x000E46, "Niigata Seimitsu Co.,Ltd.", "NIIGATA-SEIMITSU" }, { 0x000E47, "NCI System Co.,Ltd.", "NCI-SYSTEM" }, { 0x000E48, "Lipman TransAction Solutions", "LIPMAN-TRANSACTION-SOLUTIONS" }, { 0x000E49, "Forsway Scandinavia AB", "FORSWAY-SCANDINAVIA-AB" }, { 0x000E4A, "Changchun Huayu WEBPAD Co.,LTD", "CHANGCHUN-HUAYU-WEBPAD" }, { 0x000E4B, "atrium c and i", "ATRIUM-C-AND-I" }, { 0x000E4C, "Bermai Inc.", "BERMAI" }, { 0x000E4D, "Numesa Inc.", "NUMESA" }, { 0x000E4E, "Waveplus Technology Co., Ltd.", "WAVEPLUS" }, { 0x000E4F, "Trajet GmbH", "TRAJET" }, { 0x000E50, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x000E51, "tecna elettronica srl", "TECNA-ELETTRONICA-SRL" }, { 0x000E52, "Optium Corporation", "OPTIUM" }, { 0x000E53, "AV TECH CORPORATION", "AV-TECH" }, { 0x000E54, "AlphaCell Wireless Ltd.", "ALPHACELL-WIRELESS" }, { 0x000E55, "AUVITRAN", "AUVITRAN" }, { 0x000E56, "4G Systems GmbH & Co. KG", "4G" }, { 0x000E57, "Iworld Networking, Inc.", "IWORLD-NETWORKING" }, { 0x000E58, "Sonos, Inc.", "SONOS" }, { 0x000E59, "SAGEM SA", "SAGEM" }, { 0x000E5A, "TELEFIELD inc.", "TELEFIELD" }, { 0x000E5B, "ParkerVision - Direct2Data", "PARKERVISION---DIRECT2DATA" }, { 0x000E5C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000E5D, "Triple Play Technologies A/S", "TRIPLE-PLAY-TECHNOLOGIES-A/S" }, { 0x000E5E, "Raisecom Technology", "RAISECOM" }, { 0x000E5F, "activ-net GmbH & Co. KG", "ACTIV-NET" }, { 0x000E60, "360SUN Digital Broadband Corporation", "360SUN-DIGITAL-BROADBAND" }, { 0x000E61, "MICROTROL LIMITED", "MICROTROL" }, { 0x000E62, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000E63, "Lemke Diagnostics GmbH", "LEMKE-DIAGNOSTICS" }, { 0x000E64, "Elphel, Inc", "ELPHEL" }, { 0x000E65, "TransCore", "TRANSCORE" }, { 0x000E66, "Hitachi Advanced Digital, Inc.", "HITACHI-ADVANCED-DIGITAL" }, { 0x000E67, "Eltis Microelectronics Ltd.", "ELTIS-MICROELECTRONICS" }, { 0x000E68, "E-TOP Network Technology Inc.", "E-TOP-NETWORK" }, { 0x000E69, "China Electric Power Research Institute", "CHINA-ELECTRIC-POWER-RESEARCH-INSTITUTE" }, { 0x000E6A, "3Com Ltd", "3COM" }, { 0x000E6B, "Janitza electronics GmbH", "JANITZA-ELECTRONICS" }, { 0x000E6C, "Device Drivers Limited", "DEVICE-DRIVERS" }, { 0x000E6D, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x000E6E, "MAT S.A. (Mircrelec Advanced Technology)", "MAT-MIRCRELEC-ADVANCED" }, { 0x000E6F, "IRIS Corporation Berhad", "IRIS-BERHAD" }, { 0x000E70, "in2 Networks", "IN2-NETWORKS" }, { 0x000E71, "Gemstar Technology Development Ltd.", "GEMSTAR-DEVELOPMENT" }, { 0x000E72, "CTS electronics", "CTS-ELECTRONICS" }, { 0x000E73, "Tpack A/S", "TPACK-A/S" }, { 0x000E74, "Solar Telecom. Tech", "SOLAR-TELECOM-TECH" }, { 0x000E75, "New York Air Brake Corp.", "NEW-YORK-AIR-BRAKE" }, { 0x000E76, "GEMSOC INNOVISION INC.", "GEMSOC-INNOVISION" }, { 0x000E77, "Decru, Inc.", "DECRU" }, { 0x000E78, "Amtelco", "AMTELCO" }, { 0x000E79, "Ample Communications Inc.", "AMPLE-COMMUNICATION" }, { 0x000E7A, "GemWon Communications Co., Ltd.", "GEMWON-COMMUNICATION" }, { 0x000E7B, "Toshiba", "TOSHIBA" }, { 0x000E7C, "Televes S.A.", "TELEVES" }, { 0x000E7D, "Electronics Line 3000 Ltd.", "ELECTRONICS-LINE-3000" }, { 0x000E7E, "ionSign Oy", "IONSIGN-OY" }, { 0x000E7F, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000E80, "Thomson Technology Inc", "THOMSON" }, { 0x000E81, "Devicescape Software, Inc.", "DEVICESCAPE-SOFTWARE" }, { 0x000E82, "Commtech Wireless", "COMMTECH-WIRELESS" }, { 0x000E83, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000E84, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000E85, "Catalyst Enterprises, Inc.", "CATALYST-ENTERPRISES" }, { 0x000E86, "Alcatel North America", "ALCATEL-NORTH-AMERICA" }, { 0x000E87, "adp Gauselmann GmbH", "ADP-GAUSELMANN" }, { 0x000E88, "VIDEOTRON CORP.", "VIDEOTRON" }, { 0x000E89, "CLEMATIC", "CLEMATIC" }, { 0x000E8A, "Avara Technologies Pty. Ltd.", "AVARA-TECHNOLOGIES-PTY" }, { 0x000E8B, "Astarte Technology Co, Ltd.", "ASTARTE" }, { 0x000E8C, "Siemens AG A&D ET", "SIEMENS-A-D-ET" }, { 0x000E8D, "Systems in Progress Holding GmbH", "IN-PROGRESS-HOLDING" }, { 0x000E8E, "SparkLAN Communications, Inc.", "SPARKLAN-COMMUNICATION" }, { 0x000E8F, "Sercomm Corp.", "SERCOMM" }, { 0x000E90, "PONICO CORP.", "PONICO" }, { 0x000E91, "Navico Auckland Ltd", "NAVICO-AUCKLAND" }, { 0x000E92, "Open Telecom", "OPEN-TELECOM" }, { 0x000E93, "Milénio 3 Sistemas Electrónicos, Lda.", "MILéNIO-3-SISTEMAS-ELECTRóNICOS-LDA" }, { 0x000E94, "Maas International BV", "MAAS" }, { 0x000E95, "Fujiya Denki Seisakusho Co.,Ltd.", "FUJIYA-DENKI-SEISAKUSHO" }, { 0x000E96, "Cubic Defense Applications, Inc.", "CUBIC-DEFENSE-APPLICATIONS" }, { 0x000E97, "Ultracker Technology CO., Inc", "ULTRACKER" }, { 0x000E98, "HME Clear-Com LTD.", "HME-CLEAR-COM" }, { 0x000E99, "Spectrum Digital, Inc", "SPECTRUM-DIGITAL" }, { 0x000E9A, "BOE TECHNOLOGY GROUP CO.,LTD", "BOE-GROUP" }, { 0x000E9B, "Ambit Microsystems Corporation", "AMBIT-MICROSYSTEMS" }, { 0x000E9C, "Benchmark Electronics", "BENCHMARK-ELECTRONICS" }, { 0x000E9D, "Tiscali UK Ltd", "TISCALI-UK" }, { 0x000E9E, "Topfield Co., Ltd", "TOPFIELD" }, { 0x000E9F, "TEMIC SDS GmbH", "TEMIC-SDS" }, { 0x000EA0, "NetKlass Technology Inc.", "NETKLASS" }, { 0x000EA1, "Formosa Teletek Corporation", "FORMOSA-TELETEK" }, { 0x000EA2, "McAfee, Inc", "MCAFEE" }, { 0x000EA3, "CNCR-IT CO.,LTD,HangZhou P.R.CHINA", "CNCR-IT-HANGZHOU-P-R-CHINA" }, { 0x000EA4, "Certance Inc.", "CERTANCE" }, { 0x000EA5, "BLIP Systems", "BLIP" }, { 0x000EA6, "ASUSTEK COMPUTER INC.", "ASUSTEK" }, { 0x000EA7, "Endace Technology", "ENDACE" }, { 0x000EA8, "United Technologists Europe Limited", "UNITED-TECHNOLOGISTS-EUROPE" }, { 0x000EA9, "Shanghai Xun Shi Communications Equipment Ltd. Co.", "SHANGHAI-XUN-SHI-COMMUNICATION-EQUIPMENT" }, { 0x000EAA, "Scalent Systems, Inc.", "SCALENT" }, { 0x000EAB, "Cray Inc", "CRAY" }, { 0x000EAC, "MINTRON ENTERPRISE CO., LTD.", "MINTRON" }, { 0x000EAD, "Metanoia Technologies, Inc.", "METANOIA-TECHNOLOGIES" }, { 0x000EAE, "GAWELL TECHNOLOGIES CORP.", "GAWELL-TECHNOLOGIES" }, { 0x000EAF, "CASTEL", "CASTEL" }, { 0x000EB0, "Solutions Radio BV", "SOLUTIONS-RADIO" }, { 0x000EB1, "Newcotech,Ltd", "NEWCOTECH" }, { 0x000EB2, "Micro-Research Finland Oy", "MICRO-RESEARCH-FINLAND-OY" }, { 0x000EB3, "Hewlett-Packard", "HEWLETT-PACKARD" }, { 0x000EB4, "GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD.", "GUANGZHOU-GAOKE-COMMUNICATION" }, { 0x000EB5, "Ecastle Electronics Co., Ltd.", "ECASTLE-ELECTRONICS" }, { 0x000EB6, "Riverbed Technology, Inc.", "RIVERBED" }, { 0x000EB7, "Knovative, Inc.", "KNOVATIVE" }, { 0x000EB8, "Iiga co.,Ltd", "IIGA" }, { 0x000EB9, "HASHIMOTO Electronics Industry Co.,Ltd.", "HASHIMOTO-ELECTRONICS-INDUSTRY" }, { 0x000EBA, "HANMI SEMICONDUCTOR CO., LTD.", "HANMI-SEMICONDUCTOR" }, { 0x000EBB, "Everbee Networks", "EVERBEE-NETWORKS" }, { 0x000EBC, "Paragon Fidelity GmbH", "PARAGON-FIDELITY" }, { 0x000EBD, "Burdick, a Quinton Compny", "BURDICK-A-QUINTON-COMPNY" }, { 0x000EBE, "B&B Electronics Manufacturing Co.", "B-B-ELECTRONICS-MANUFACTURING" }, { 0x000EBF, "Remsdaq Limited", "REMSDAQ" }, { 0x000EC0, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000EC1, "MYNAH Technologies", "MYNAH-TECHNOLOGIES" }, { 0x000EC2, "Lowrance Electronics, Inc.", "LOWRANCE-ELECTRONICS" }, { 0x000EC3, "Logic Controls, Inc.", "LOGIC-CONTROLS" }, { 0x000EC4, "Iskra Transmission d.d.", "ISKRA-TRANSMISSION-D-D" }, { 0x000EC5, "Digital Multitools Inc", "DIGITAL-MULTITOOLS" }, { 0x000EC6, "ASIX ELECTRONICS CORP.", "ASIX-ELECTRONICS" }, { 0x000EC7, "Motorola Korea", "MOTOROLA-KOREA" }, { 0x000EC8, "Zoran Corporation", "ZORAN" }, { 0x000EC9, "YOKO Technology Corp.", "YOKO" }, { 0x000ECA, "WTSS Inc", "WTSS" }, { 0x000ECB, "VineSys Technology", "VINESYS" }, { 0x000ECC, "Tableau, LLC", "TABLEAU-LLC" }, { 0x000ECD, "SKOV A/S", "SKOV-A/S" }, { 0x000ECE, "S.I.T.T.I. S.p.A.", "S-I-T-T-I-S-P-A" }, { 0x000ECF, "PROFIBUS Nutzerorganisation e.V.", "PROFIBUS-NUTZERORGANISATION-E-V" }, { 0x000ED0, "Privaris, Inc.", "PRIVARIS" }, { 0x000ED1, "Osaka Micro Computer.", "OSAKA-MICRO" }, { 0x000ED2, "Filtronic plc", "FILTRONIC-PLC" }, { 0x000ED3, "Epicenter, Inc.", "EPICENTER" }, { 0x000ED4, "CRESITT INDUSTRIE", "CRESITT-INDUSTRIE" }, { 0x000ED5, "COPAN Systems Inc.", "COPAN" }, { 0x000ED6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000ED7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000ED8, "Aktino, Inc.", "AKTINO" }, { 0x000ED9, "Aksys, Ltd.", "AKSYS" }, { 0x000EDA, "C-TECH UNITED CORP.", "C-TECH-UNITED" }, { 0x000EDB, "XiNCOM Corp.", "XINCOM" }, { 0x000EDC, "Tellion INC.", "TELLION" }, { 0x000EDD, "SHURE INCORPORATED", "SHURE-INCORPORATED" }, { 0x000EDE, "REMEC, Inc.", "REMEC" }, { 0x000EDF, "PLX Technology", "PLX" }, { 0x000EE0, "Mcharge", "MCHARGE" }, { 0x000EE1, "ExtremeSpeed Inc.", "EXTREMESPEED" }, { 0x000EE2, "Custom Engineering S.p.A.", "CUSTOM-ENGINEERING-S-P-A" }, { 0x000EE3, "Chiyu Technology Co.,Ltd", "CHIYU" }, { 0x000EE4, "BOE TECHNOLOGY GROUP CO.,LTD", "BOE-GROUP" }, { 0x000EE5, "bitWallet, Inc.", "BITWALLET" }, { 0x000EE6, "Adimos Systems LTD", "ADIMOS" }, { 0x000EE7, "AAC ELECTRONICS CORP.", "AAC-ELECTRONICS" }, { 0x000EE8, "zioncom", "ZIONCOM" }, { 0x000EE9, "WayTech Development, Inc.", "WAYTECH-DEVELOPMENT" }, { 0x000EEA, "Shadong Luneng Jicheng Electronics,Co.,Ltd", "SHADONG-LUNENG-JICHENG-ELECTRONICS" }, { 0x000EEB, "Sandmartin(zhong shan)Electronics Co.,Ltd", "SANDMARTIN-ZHONG-SHAN-ELECTRONICS" }, { 0x000EEC, "Orban", "ORBAN" }, { 0x000EED, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x000EEE, "Muco Industrie BV", "MUCO-INDUSTRIE" }, { 0x000EEF, "PRIVATE", "PRIVATE" }, { 0x000EF0, "Festo AG & Co. KG", "FESTO" }, { 0x000EF1, "EZQUEST INC.", "EZQUEST" }, { 0x000EF2, "Infinico Corporation", "INFINICO" }, { 0x000EF3, "Smarthome", "SMARTHOME" }, { 0x000EF4, "Kasda Digital Technology Co.,Ltd", "KASDA-DIGITAL" }, { 0x000EF5, "iPAC Technology Co., Ltd.", "IPAC" }, { 0x000EF6, "E-TEN Information Systems Co., Ltd.", "E-TEN-INFORMATION" }, { 0x000EF7, "Vulcan Portals Inc", "VULCAN-PORTALS" }, { 0x000EF8, "SBC ASI", "SBC-ASI" }, { 0x000EF9, "REA Elektronik GmbH", "REA-ELEKTRONIK" }, { 0x000EFA, "Optoway Technology Incorporation", "OPTOWAY-INCORPORATION" }, { 0x000EFB, "Macey Enterprises", "MACEY-ENTERPRISES" }, { 0x000EFC, "JTAG Technologies B.V.", "JTAG-TECHNOLOGIES" }, { 0x000EFD, "FUJINON CORPORATION", "FUJINON" }, { 0x000EFE, "EndRun Technologies LLC", "ENDRUN-TECHNOLOGIES-LLC" }, { 0x000EFF, "Megasolution,Inc.", "MEGASOLUTION" }, { 0x000F00, "Legra Systems, Inc.", "LEGRA" }, { 0x000F01, "DIGITALKS INC", "DIGITALKS" }, { 0x000F02, "Digicube Technology Co., Ltd", "DIGICUBE" }, { 0x000F03, "COM&C CO., LTD", "COM-C" }, { 0x000F04, "cim-usa inc", "CIM-USA" }, { 0x000F05, "3B SYSTEM INC.", "3B-SYSTEM" }, { 0x000F06, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000F07, "Mangrove Systems, Inc.", "MANGROVE" }, { 0x000F08, "Indagon Oy", "INDAGON-OY" }, { 0x000F09, "PRIVATE", "PRIVATE" }, { 0x000F0A, "Clear Edge Networks", "CLEAR-EDGE-NETWORKS" }, { 0x000F0B, "Kentima Technologies AB", "KENTIMA-TECHNOLOGIES-AB" }, { 0x000F0C, "SYNCHRONIC ENGINEERING", "SYNCHRONIC-ENGINEERING" }, { 0x000F0D, "Hunt Electronic Co., Ltd.", "HUNT" }, { 0x000F0E, "WaveSplitter Technologies, Inc.", "WAVESPLITTER-TECHNOLOGIES" }, { 0x000F0F, "Real ID Technology Co., Ltd.", "REAL-ID" }, { 0x000F10, "RDM Corporation", "RDM" }, { 0x000F11, "Prodrive B.V.", "PRODRIVE" }, { 0x000F12, "Panasonic Europe Ltd.", "PANASONIC-EUROPE" }, { 0x000F13, "Nisca corporation", "NISCA" }, { 0x000F14, "Mindray Co., Ltd.", "MINDRAY" }, { 0x000F15, "Kjaerulff1 A/S", "KJAERULFF1-A/S" }, { 0x000F16, "JAY HOW TECHNOLOGY CO.,", "JAY-HOW" }, { 0x000F17, "Insta Elektro GmbH", "INSTA-ELEKTRO" }, { 0x000F18, "Industrial Control Systems", "INDUSTRIAL-CONTROL" }, { 0x000F19, "Boston Scientific", "BOSTON-SCIENTIFIC" }, { 0x000F1A, "Gaming Support B.V.", "GAMING-SUPPORT" }, { 0x000F1B, "Ego Systems Inc.", "EGO" }, { 0x000F1C, "DigitAll World Co., Ltd", "DIGITALL-WORLD" }, { 0x000F1D, "Cosmo Techs Co., Ltd.", "COSMO-TECHS" }, { 0x000F1E, "Chengdu KT Electric Co.of High & New Technology", "CHENGDU-KT-ELECTRIC-OF-HIGH-NEW" }, { 0x000F1F, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x000F20, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000F21, "Scientific Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x000F22, "Helius, Inc.", "HELIUS" }, { 0x000F23, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000F24, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000F25, "AimValley B.V.", "AIMVALLEY" }, { 0x000F26, "WorldAccxx LLC", "WORLDACCXX-LLC" }, { 0x000F27, "TEAL Electronics, Inc.", "TEAL-ELECTRONICS" }, { 0x000F28, "Itronix Corporation", "ITRONIX" }, { 0x000F29, "Augmentix Corporation", "AUGMENTIX" }, { 0x000F2A, "Cableware Electronics", "CABLEWARE-ELECTRONICS" }, { 0x000F2B, "GREENBELL SYSTEMS", "GREENBELL" }, { 0x000F2C, "Uplogix, Inc.", "UPLOGIX" }, { 0x000F2D, "CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP.", "CHUNG-HSIN-ELECTRIC-MACHINERY-MFG" }, { 0x000F2E, "Megapower International Corp.", "MEGAPOWER" }, { 0x000F2F, "W-LINX TECHNOLOGY CO., LTD.", "W-LINX" }, { 0x000F30, "Raza Microelectronics Inc", "RAZA-MICROELECTRONICS" }, { 0x000F31, "Allied Vision Technologies Canada Inc", "ALLIED-VISION-TECHNOLOGIES-CANADA" }, { 0x000F32, "Lootom Telcovideo Network Wuxi Co Ltd", "LOOTOM-TELCOVIDEO-NETWORK-WUXI" }, { 0x000F33, "DUALi Inc.", "DUALI" }, { 0x000F34, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000F35, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000F36, "Accurate Techhnologies, Inc.", "ACCURATE-TECHHNOLOGIES" }, { 0x000F37, "Xambala Incorporated", "XAMBALA-INCORPORATED" }, { 0x000F38, "Netstar", "NETSTAR" }, { 0x000F39, "IRIS SENSORS", "IRIS-SENSORS" }, { 0x000F3A, "HISHARP", "HISHARP" }, { 0x000F3B, "Fuji System Machines Co., Ltd.", "FUJI-SYSTEM-MACHINES" }, { 0x000F3C, "Endeleo Limited", "ENDELEO" }, { 0x000F3D, "D-Link Corporation", "D-LINK" }, { 0x000F3E, "CardioNet, Inc", "CARDIONET" }, { 0x000F3F, "Big Bear Networks", "BIG-BEAR-NETWORKS" }, { 0x000F40, "Optical Internetworking Forum", "OPTICAL-INTERNETWORKING-FORUM" }, { 0x000F41, "Zipher Ltd", "ZIPHER" }, { 0x000F42, "Xalyo Systems", "XALYO" }, { 0x000F43, "Wasabi Systems Inc.", "WASABI" }, { 0x000F44, "Tivella Inc.", "TIVELLA" }, { 0x000F45, "Stretch, Inc.", "STRETCH" }, { 0x000F46, "SINAR AG", "SINAR" }, { 0x000F47, "ROBOX SPA", "ROBOX-SPA" }, { 0x000F48, "Polypix Inc.", "POLYPIX" }, { 0x000F49, "Northover Solutions Limited", "NORTHOVER-SOLUTIONS" }, { 0x000F4A, "Kyushu-kyohan co.,ltd", "KYUSHU-KYOHAN" }, { 0x000F4B, "Oracle Corporation (possible Virtual Iron VM)", "ORACLE-VIRTUAL" }, { 0x000F4C, "Elextech INC", "ELEXTECH" }, { 0x000F4D, "TalkSwitch", "TALKSWITCH" }, { 0x000F4E, "Cellink", "CELLINK" }, { 0x000F4F, "Cadmus Technology Ltd", "CADMUS" }, { 0x000F50, "StreamScale Limited", "STREAMSCALE" }, { 0x000F51, "Azul Systems, Inc.", "AZUL" }, { 0x000F52, "YORK Refrigeration, Marine & Controls", "YORK-REFRIGERATION-MARINE-CONTROLS" }, { 0x000F53, "Solarflare Communications Inc", "SOLARFLARE-COMMUNICATION" }, { 0x000F54, "Entrelogic Corporation", "ENTRELOGIC" }, { 0x000F55, "Datawire Communication Networks Inc.", "DATAWIRE-COMMUNICATION-NETWORKS" }, { 0x000F56, "Continuum Photonics Inc", "CONTINUUM-PHOTONICS" }, { 0x000F57, "CABLELOGIC Co., Ltd.", "CABLELOGIC" }, { 0x000F58, "Adder Technology Limited", "ADDER" }, { 0x000F59, "Phonak Communications AG", "PHONAK-COMMUNICATION" }, { 0x000F5A, "Peribit Networks", "PERIBIT-NETWORKS" }, { 0x000F5B, "Delta Information Systems, Inc.", "DELTA-INFORMATION" }, { 0x000F5C, "Day One Digital Media Limited", "DAY-ONE-DIGITAL-MEDIA" }, { 0x000F5D, "Genexis BV", "GENEXIS" }, { 0x000F5E, "Veo", "VEO" }, { 0x000F5F, "Nicety Technologies Inc. (NTS)", "NICETY-TECHNOLOGIES-NTS" }, { 0x000F60, "Lifetron Co.,Ltd", "LIFETRON" }, { 0x000F61, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x000F62, "Alcatel Bell Space N.V.", "ALCATEL-BELL-SPACE-N-V" }, { 0x000F63, "Obzerv Technologies", "OBZERV-TECHNOLOGIES" }, { 0x000F64, "D&R Electronica Weesp BV", "D-R-ELECTRONICA-WEESP" }, { 0x000F65, "icube Corp.", "ICUBE" }, { 0x000F66, "Cisco-Linksys", "CISCO-LINKSYS" }, { 0x000F67, "West Instruments", "WEST-INSTRUMENTS" }, { 0x000F68, "Vavic Network Technology, Inc.", "VAVIC-NETWORK" }, { 0x000F69, "SEW Eurodrive GmbH & Co. KG", "SEW-EURODRIVE" }, { 0x000F6A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000F6B, "GateWare Communications GmbH", "GATEWARE-COMMUNICATION" }, { 0x000F6C, "ADDI-DATA GmbH", "ADDI-DATA" }, { 0x000F6D, "Midas Engineering", "MIDAS-ENGINEERING" }, { 0x000F6E, "BBox", "BBOX" }, { 0x000F6F, "FTA Communication Technologies", "FTA-COMMUNICATION-TECHNOLOGIES" }, { 0x000F70, "Wintec Industries, inc.", "WINTEC-INDUSTRIES" }, { 0x000F71, "Sanmei Electronics Co.,Ltd", "SANMEI-ELECTRONICS" }, { 0x000F72, "Sandburst", "SANDBURST" }, { 0x000F73, "RS Automation Co., Ltd", "RS-AUTOMATION" }, { 0x000F74, "Qamcom Technology AB", "QAMCOM-AB" }, { 0x000F75, "First Silicon Solutions", "FIRST-SILICON-SOLUTIONS" }, { 0x000F76, "Digital Keystone, Inc.", "DIGITAL-KEYSTONE" }, { 0x000F77, "DENTUM CO.,LTD", "DENTUM" }, { 0x000F78, "Datacap Systems Inc", "DATACAP" }, { 0x000F79, "Bluetooth Interest Group Inc.", "BLUETOOTH-INTEREST-GROUP" }, { 0x000F7A, "BeiJing NuQX Technology CO.,LTD", "BEIJING-NUQX" }, { 0x000F7B, "Arce Sistemas, S.A.", "ARCE-SISTEMAS" }, { 0x000F7C, "ACTi Corporation", "ACTI" }, { 0x000F7D, "Xirrus", "XIRRUS" }, { 0x000F7E, "Ablerex Electronics Co., LTD", "ABLEREX-ELECTRONICS" }, { 0x000F7F, "UBSTORAGE Co.,Ltd.", "UBSTORAGE" }, { 0x000F80, "Trinity Security Systems,Inc.", "TRINITY-SECURITY" }, { 0x000F81, "PAL Pacific Inc.", "PAL-PACIFIC" }, { 0x000F82, "Mortara Instrument, Inc.", "MORTARA-INSTRUMENT" }, { 0x000F83, "Brainium Technologies Inc.", "BRAINIUM-TECHNOLOGIES" }, { 0x000F84, "Astute Networks, Inc.", "ASTUTE-NETWORKS" }, { 0x000F85, "ADDO-Japan Corporation", "ADDO-JAPAN" }, { 0x000F86, "Research In Motion Limited", "RESEARCH-IN-MOTION" }, { 0x000F87, "Maxcess International", "MAXCESS" }, { 0x000F88, "AMETEK, Inc.", "AMETEK" }, { 0x000F89, "Winnertec System Co., Ltd.", "WINNERTEC-SYSTEM" }, { 0x000F8A, "WideView", "WIDEVIEW" }, { 0x000F8B, "Orion MultiSystems Inc", "ORION-MULTISYSTEMS" }, { 0x000F8C, "Gigawavetech Pte Ltd", "GIGAWAVETECH-PTE" }, { 0x000F8D, "FAST TV-Server AG", "FAST-TV-SERVER" }, { 0x000F8E, "DONGYANG TELECOM CO.,LTD.", "DONGYANG-TELECOM" }, { 0x000F8F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000F90, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000F91, "Aerotelecom Co.,Ltd.", "AEROTELECOM" }, { 0x000F92, "Microhard Systems Inc.", "MICROHARD" }, { 0x000F93, "Landis+Gyr Ltd.", "LANDIS+GYR" }, { 0x000F94, "Genexis BV", "GENEXIS" }, { 0x000F95, "ELECOM Co.,LTD Laneed Division", "ELECOM-LANEED-DIVISION" }, { 0x000F96, "Telco Systems, Inc.", "TELCO" }, { 0x000F97, "Avanex Corporation", "AVANEX" }, { 0x000F98, "Avamax Co. Ltd.", "AVAMAX" }, { 0x000F99, "APAC opto Electronics Inc.", "APAC-OPTO-ELECTRONICS" }, { 0x000F9A, "Synchrony, Inc.", "SYNCHRONY" }, { 0x000F9B, "Ross Video Limited", "ROSS-VIDEO" }, { 0x000F9C, "Panduit Corp", "PANDUIT" }, { 0x000F9D, "DisplayLink (UK) Ltd", "DISPLAYLINK-UK" }, { 0x000F9E, "Murrelektronik GmbH", "MURRELEKTRONIK" }, { 0x000F9F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x000FA0, "CANON KOREA BUSINESS SOLUTIONS INC.", "CANON-KOREA-BUSINESS-SOLUTIONS" }, { 0x000FA1, "Gigabit Systems Inc.", "GIGABIT" }, { 0x000FA2, "2xWireless", "2XWIRELESS" }, { 0x000FA3, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x000FA4, "Sprecher Automation GmbH", "SPRECHER-AUTOMATION" }, { 0x000FA5, "BWA Technology GmbH", "BWA" }, { 0x000FA6, "S2 Security Corporation", "S2-SECURITY" }, { 0x000FA7, "Raptor Networks Technology", "RAPTOR-NETWORKS" }, { 0x000FA8, "Photometrics, Inc.", "PHOTOMETRICS" }, { 0x000FA9, "PC Fabrik", "PC-FABRIK" }, { 0x000FAA, "Nexus Technologies", "NEXUS-TECHNOLOGIES" }, { 0x000FAB, "Kyushu Electronics Systems Inc.", "KYUSHU-ELECTRONICS" }, { 0x000FAC, "IEEE 802.11", "IEEE-802-11" }, { 0x000FAD, "FMN communications GmbH", "FMN-COMMUNICATION" }, { 0x000FAE, "E2O Communications", "E2O-COMMUNICATION" }, { 0x000FAF, "Dialog Inc.", "DIALOG" }, { 0x000FB0, "Compal Electronics,INC.", "COMPAL-ELECTRONICS" }, { 0x000FB1, "Cognio Inc.", "COGNIO" }, { 0x000FB2, "Broadband Pacenet (India) Pvt. Ltd.", "BROADBAND-PACENET-INDIA-PVT" }, { 0x000FB3, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x000FB4, "Timespace Technology", "TIMESPACE" }, { 0x000FB5, "NETGEAR Inc", "NETGEAR" }, { 0x000FB6, "Europlex Technologies", "EUROPLEX-TECHNOLOGIES" }, { 0x000FB7, "Cavium Networks", "CAVIUM-NETWORKS" }, { 0x000FB8, "CallURL Inc.", "CALLURL" }, { 0x000FB9, "Adaptive Instruments", "ADAPTIVE-INSTRUMENTS" }, { 0x000FBA, "Tevebox AB", "TEVEBOX-AB" }, { 0x000FBB, "Nokia Siemens Networks GmbH & Co. KG.", "NOKIA-SIEMENS-NETWORKS" }, { 0x000FBC, "Onkey Technologies, Inc.", "ONKEY-TECHNOLOGIES" }, { 0x000FBD, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x000FBE, "e-w/you Inc.", "E-W/YOU" }, { 0x000FBF, "DGT Sp. z o.o.", "DGT-SP-Z-O-O" }, { 0x000FC0, "DELCOMp", "DELCOMP" }, { 0x000FC1, "WAVE Corporation", "WAVE" }, { 0x000FC2, "Uniwell Corporation", "UNIWELL" }, { 0x000FC3, "PalmPalm Technology, Inc.", "PALMPALM" }, { 0x000FC4, "NST co.,LTD.", "NST" }, { 0x000FC5, "KeyMed Ltd", "KEYMED" }, { 0x000FC6, "Eurocom Industries A/S", "EUROCOM-INDUSTRIES-A/S" }, { 0x000FC7, "Dionica R&D Ltd.", "DIONICA-R-D" }, { 0x000FC8, "Chantry Networks", "CHANTRY-NETWORKS" }, { 0x000FC9, "Allnet GmbH", "ALLNET" }, { 0x000FCA, "A-JIN TECHLINE CO, LTD", "A-JIN-TECHLINE" }, { 0x000FCB, "3Com Ltd", "3COM" }, { 0x000FCC, "Netopia, Inc.", "NETOPIA" }, { 0x000FCD, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x000FCE, "Kikusui Electronics Corp.", "KIKUSUI-ELECTRONICS" }, { 0x000FCF, "Datawind Research", "DATAWIND-RESEARCH" }, { 0x000FD0, "ASTRI", "ASTRI" }, { 0x000FD1, "Applied Wireless Identifications Group, Inc.", "APPLIED-WIRELESS-IDENTIFICATIONS-GROUP" }, { 0x000FD2, "EWA Technologies, Inc.", "EWA-TECHNOLOGIES" }, { 0x000FD3, "Digium", "DIGIUM" }, { 0x000FD4, "Soundcraft", "SOUNDCRAFT" }, { 0x000FD5, "Schwechat - RISE", "SCHWECHAT---RISE" }, { 0x000FD6, "Sarotech Co., Ltd", "SAROTECH" }, { 0x000FD7, "Harman Music Group", "HARMAN-MUSIC-GROUP" }, { 0x000FD8, "Force, Inc.", "FORCE" }, { 0x000FD9, "FlexDSL Telecommunications AG", "FLEXDSL-TELECOMMUNICATIONS" }, { 0x000FDA, "YAZAKI CORPORATION", "YAZAKI" }, { 0x000FDB, "Westell Technologies", "WESTELL-TECHNOLOGIES" }, { 0x000FDC, "Ueda Japan Radio Co., Ltd.", "UEDA-JAPAN-RADIO" }, { 0x000FDD, "SORDIN AB", "SORDIN-AB" }, { 0x000FDE, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x000FDF, "SOLOMON Technology Corp.", "SOLOMON" }, { 0x000FE0, "NComputing Co.,Ltd.", "NCOMPUTING" }, { 0x000FE1, "ID DIGITAL CORPORATION", "ID-DIGITAL" }, { 0x000FE2, "Hangzhou H3C Technologies Co., Ltd.", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x000FE3, "Damm Cellular Systems A/S", "DAMM-CELLULAR-A/S" }, { 0x000FE4, "Pantech Co.,Ltd", "PANTECH" }, { 0x000FE5, "MERCURY SECURITY CORPORATION", "MERCURY-SECURITY" }, { 0x000FE6, "MBTech Systems, Inc.", "MBTECH" }, { 0x000FE7, "Lutron Electronics Co., Inc.", "LUTRON-ELECTRONICS" }, { 0x000FE8, "Lobos, Inc.", "LOBOS" }, { 0x000FE9, "GW TECHNOLOGIES CO.,LTD.", "GW-TECHNOLOGIES" }, { 0x000FEA, "Giga-Byte Technology Co.,LTD.", "GIGA-BYTE" }, { 0x000FEB, "Cylon Controls", "CYLON-CONTROLS" }, { 0x000FEC, "ARKUS Inc.", "ARKUS" }, { 0x000FED, "Anam Electronics Co., Ltd", "ANAM-ELECTRONICS" }, { 0x000FEE, "XTec, Incorporated", "XTEC-INCORPORATED" }, { 0x000FEF, "Thales e-Transactions GmbH", "THALES-E-TRANSACTIONS" }, { 0x000FF0, "Sunray Co. Ltd.", "SUNRAY" }, { 0x000FF1, "nex-G Systems Pte.Ltd", "NEX-G-PTE" }, { 0x000FF2, "Loud Technologies Inc.", "LOUD-TECHNOLOGIES" }, { 0x000FF3, "Jung Myoung Communications&Technology", "JUNG-MYOUNG-COMMUNICATION" }, { 0x000FF4, "Guntermann & Drunck GmbH", "GUNTERMANN-DRUNCK" }, { 0x000FF5, "GN&S company", "GN-S-COMPANY" }, { 0x000FF6, "Darfon Electronics Corp.", "DARFON-ELECTRONICS" }, { 0x000FF7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000FF8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x000FF9, "Valcretec, Inc.", "VALCRETEC" }, { 0x000FFA, "Optinel Systems, Inc.", "OPTINEL" }, { 0x000FFB, "Nippon Denso Industry Co., Ltd.", "NIPPON-DENSO-INDUSTRY" }, { 0x000FFC, "Merit Li-Lin Ent.", "MERIT-LI-LIN-ENT" }, { 0x000FFD, "Glorytek Network Inc.", "GLORYTEK-NETWORK" }, { 0x000FFE, "G-PRO COMPUTER", "G-PRO" }, { 0x000FFF, "Control4", "CONTROL4" }, { 0x001000, "CABLE TELEVISION LABORATORIES, INC.", "CABLE-TELEVISION-LABORATORIES" }, { 0x001001, "Citel", "CITEL" }, { 0x001002, "ACTIA", "ACTIA" }, { 0x001003, "IMATRON, INC.", "IMATRON" }, { 0x001004, "THE BRANTLEY COILE COMPANY,INC", "THE-BRANTLEY-COILE-COMPANY" }, { 0x001005, "UEC COMMERCIAL", "UEC-COMMERCIAL" }, { 0x001006, "Thales Contact Solutions Ltd.", "THALES-CONTACT-SOLUTIONS" }, { 0x001007, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001008, "VIENNA SYSTEMS CORPORATION", "VIENNA" }, { 0x001009, "HORO QUARTZ", "HORO-QUARTZ" }, { 0x00100A, "WILLIAMS COMMUNICATIONS GROUP", "WILLIAMS-COMMUNICATION-GROUP" }, { 0x00100B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00100C, "ITO CO., LTD.", "ITO" }, { 0x00100D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00100E, "MICRO LINEAR COPORATION", "MICRO-LINEAR-COPORATION" }, { 0x00100F, "INDUSTRIAL CPU SYSTEMS", "INDUSTRIAL-CPU" }, { 0x001010, "INITIO CORPORATION", "INITIO" }, { 0x001011, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001012, "PROCESSOR SYSTEMS (I) PVT LTD", "PROCESSOR-I-PVT" }, { 0x001013, "Kontron America, Inc.", "KONTRON-AMERICA" }, { 0x001014, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001015, "OOmon Inc.", "OOMON" }, { 0x001016, "T.SQWARE", "T-SQWARE" }, { 0x001017, "Bosch Access Systems GmbH", "BOSCH-ACCESS" }, { 0x001018, "BROADCOM CORPORATION", "BROADCOM" }, { 0x001019, "SIRONA DENTAL SYSTEMS GmbH & Co. KG", "SIRONA-DENTAL" }, { 0x00101A, "PictureTel Corp.", "PICTURETEL" }, { 0x00101B, "CORNET TECHNOLOGY, INC.", "CORNET" }, { 0x00101C, "OHM TECHNOLOGIES INTL, LLC", "OHM-TECHNOLOGIES-INTL-LLC" }, { 0x00101D, "WINBOND ELECTRONICS CORP.", "WINBOND-ELECTRONICS" }, { 0x00101E, "MATSUSHITA ELECTRONIC INSTRUMENTS CORP.", "MATSUSHITA-INSTRUMENTS" }, { 0x00101F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001020, "Hand Held Products Inc", "HAND-HELD-PRODUCTS" }, { 0x001021, "ENCANTO NETWORKS, INC.", "ENCANTO-NETWORKS" }, { 0x001022, "SatCom Media Corporation", "SATCOM-MEDIA" }, { 0x001023, "Network Equipment Technologies", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x001024, "NAGOYA ELECTRIC WORKS CO., LTD", "NAGOYA-ELECTRIC-WORKS" }, { 0x001025, "Grayhill, Inc", "GRAYHILL" }, { 0x001026, "ACCELERATED NETWORKS, INC.", "ACCELERATED-NETWORKS" }, { 0x001027, "L-3 COMMUNICATIONS EAST", "L-3-COMMUNICATION-EAST" }, { 0x001028, "COMPUTER TECHNICA, INC.", "TECHNICA" }, { 0x001029, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00102A, "ZF MICROSYSTEMS, INC.", "ZF-MICROSYSTEMS" }, { 0x00102B, "UMAX DATA SYSTEMS, INC.", "UMAX-DATA" }, { 0x00102C, "Lasat Networks A/S", "LASAT-NETWORKS-A/S" }, { 0x00102D, "HITACHI SOFTWARE ENGINEERING", "HITACHI-SOFTWARE-ENGINEERING" }, { 0x00102E, "NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD.", "NETWORK-TECHNOLOGIES-PVT" }, { 0x00102F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001030, "EION Inc.", "EION" }, { 0x001031, "OBJECTIVE COMMUNICATIONS, INC.", "OBJECTIVE-COMMUNICATION" }, { 0x001032, "ALTA TECHNOLOGY", "ALTA" }, { 0x001033, "ACCESSLAN COMMUNICATIONS, INC.", "ACCESSLAN-COMMUNICATION" }, { 0x001034, "GNP Computers", "GNP-COMPUTERS" }, { 0x001035, "ELITEGROUP COMPUTER SYSTEMS CO., LTD", "ELITEGROUP" }, { 0x001036, "INTER-TEL INTEGRATED SYSTEMS", "INTER-TEL-INTEGRATED" }, { 0x001037, "CYQ've Technology Co., Ltd.", "CYQ-VE" }, { 0x001038, "MICRO RESEARCH INSTITUTE, INC.", "MICRO-RESEARCH-INSTITUTE" }, { 0x001039, "Vectron Systems AG", "VECTRON" }, { 0x00103A, "DIAMOND NETWORK TECH", "DIAMOND-NETWORK-TECH" }, { 0x00103B, "HIPPI NETWORKING FORUM", "HIPPI-NETWORKING-FORUM" }, { 0x00103C, "IC ENSEMBLE, INC.", "IC-ENSEMBLE" }, { 0x00103D, "PHASECOM, LTD.", "PHASECOM" }, { 0x00103E, "NETSCHOOLS CORPORATION", "NETSCHOOLS" }, { 0x00103F, "TOLLGRADE COMMUNICATIONS, INC.", "TOLLGRADE-COMMUNICATION" }, { 0x001040, "INTERMEC CORPORATION", "INTERMEC" }, { 0x001041, "BRISTOL BABCOCK, INC.", "BRISTOL-BABCOCK" }, { 0x001042, "Alacritech, Inc.", "ALACRITECH" }, { 0x001043, "A2 CORPORATION", "A2" }, { 0x001044, "InnoLabs Corporation", "INNOLABS" }, { 0x001045, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001046, "ALCORN MCBRIDE INC.", "ALCORN-MCBRIDE" }, { 0x001047, "ECHO ELETRIC CO. LTD.", "ECHO-ELETRIC" }, { 0x001048, "HTRC AUTOMATION, INC.", "HTRC-AUTOMATION" }, { 0x001049, "ShoreTel, Inc", "SHORETEL" }, { 0x00104A, "The Parvus Corporation", "THE-PARVUS" }, { 0x00104B, "3COM CORPORATION", "3COM" }, { 0x00104C, "Teledyne LeCroy, Inc", "TELEDYNE-LECROY" }, { 0x00104D, "SURTEC INDUSTRIES, INC.", "SURTEC-INDUSTRIES" }, { 0x00104E, "CEOLOGIC", "CEOLOGIC" }, { 0x00104F, "Oracle Corporation", "ORACLE" }, { 0x001050, "RION CO., LTD.", "RION" }, { 0x001051, "CMICRO CORPORATION", "CMICRO" }, { 0x001052, "METTLER-TOLEDO (ALBSTADT) GMBH", "METTLER-TOLEDO-ALBSTADT" }, { 0x001053, "COMPUTER TECHNOLOGY CORP.", "" }, { 0x001054, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001055, "FUJITSU MICROELECTRONICS, INC.", "FUJITSU-MICROELECTRONICS" }, { 0x001056, "SODICK CO., LTD.", "SODICK" }, { 0x001057, "Rebel.com, Inc.", "REBEL-COM" }, { 0x001058, "ArrowPoint Communications", "ARROWPOINT-COMMUNICATION" }, { 0x001059, "DIABLO RESEARCH CO. LLC", "DIABLO-RESEARCH-LLC" }, { 0x00105A, "3COM CORPORATION", "3COM" }, { 0x00105B, "NET INSIGHT AB", "NET-INSIGHT-AB" }, { 0x00105C, "QUANTUM DESIGNS (H.K.) LTD.", "QUANTUM-DESIGNS-H-K" }, { 0x00105D, "Draeger Medical", "DRAEGER-MEDICAL" }, { 0x00105E, "HEKIMIAN LABORATORIES, INC.", "HEKIMIAN-LABORATORIES" }, { 0x00105F, "ZODIAC DATA SYSTEMS", "ZODIAC-DATA" }, { 0x001060, "BILLIONTON SYSTEMS, INC.", "BILLIONTON" }, { 0x001061, "HOSTLINK CORP.", "HOSTLINK" }, { 0x001062, "NX SERVER, ILNC.", "NX-SERVER-ILNC" }, { 0x001063, "STARGUIDE DIGITAL NETWORKS", "STARGUIDE-DIGITAL-NETWORKS" }, { 0x001064, "DNPG, LLC", "DNPG-LLC" }, { 0x001065, "RADYNE CORPORATION", "RADYNE" }, { 0x001066, "ADVANCED CONTROL SYSTEMS, INC.", "ADVANCED-CONTROL" }, { 0x001067, "Ericsson", "ERICSSON" }, { 0x001068, "COMOS TELECOM", "COMOS-TELECOM" }, { 0x001069, "HELIOSS COMMUNICATIONS, INC.", "HELIOSS-COMMUNICATION" }, { 0x00106A, "DIGITAL MICROWAVE CORPORATION", "DIGITAL-MICROWAVE" }, { 0x00106B, "SONUS NETWORKS, INC.", "SONUS-NETWORKS" }, { 0x00106C, "EDNT GmbH", "EDNT" }, { 0x00106D, "Axxcelera Broadband Wireless", "AXXCELERA-BROADBAND-WIRELESS" }, { 0x00106E, "TADIRAN COM. LTD.", "TADIRAN-COM" }, { 0x00106F, "TRENTON TECHNOLOGY INC.", "TRENTON" }, { 0x001070, "CARADON TREND LTD.", "CARADON-TREND" }, { 0x001071, "ADVANET INC.", "ADVANET" }, { 0x001072, "GVN TECHNOLOGIES, INC.", "GVN-TECHNOLOGIES" }, { 0x001073, "Technobox, Inc.", "TECHNOBOX" }, { 0x001074, "ATEN INTERNATIONAL CO., LTD.", "ATEN" }, { 0x001075, "Segate Technology LLC", "SEGATE-LLC" }, { 0x001076, "EUREM GmbH", "EUREM" }, { 0x001077, "SAF DRIVE SYSTEMS, LTD.", "SAF-DRIVE" }, { 0x001078, "NUERA COMMUNICATIONS, INC.", "NUERA-COMMUNICATION" }, { 0x001079, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00107A, "AmbiCom, Inc.", "AMBICOM" }, { 0x00107B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00107C, "P-COM, INC.", "P-COM" }, { 0x00107D, "AURORA COMMUNICATIONS, LTD.", "AURORA-COMMUNICATION" }, { 0x00107E, "BACHMANN ELECTRONIC GmbH", "BACHMANN" }, { 0x00107F, "CRESTRON ELECTRONICS, INC.", "CRESTRON-ELECTRONICS" }, { 0x001080, "METAWAVE COMMUNICATIONS", "METAWAVE-COMMUNICATION" }, { 0x001081, "DPS, INC.", "DPS" }, { 0x001082, "JNA TELECOMMUNICATIONS LIMITED", "JNA-TELECOMMUNICATIONS" }, { 0x001083, "HEWLETT-PACKARD COMPANY", "HEWLETT-PACKARD-COMPANY" }, { 0x001084, "K-BOT COMMUNICATIONS", "K-BOT-COMMUNICATION" }, { 0x001085, "POLARIS COMMUNICATIONS, INC.", "POLARIS-COMMUNICATION" }, { 0x001086, "ATTO Technology, Inc.", "ATTO" }, { 0x001087, "Xstreamis PLC", "XSTREAMIS-PLC" }, { 0x001088, "AMERICAN NETWORKS INC.", "AMERICAN-NETWORKS" }, { 0x001089, "WebSonic", "WEBSONIC" }, { 0x00108A, "TeraLogic, Inc.", "TERALOGIC" }, { 0x00108B, "LASERANIMATION SOLLINGER GmbH", "LASERANIMATION-SOLLINGER" }, { 0x00108C, "FUJITSU TELECOMMUNICATIONS EUROPE, LTD.", "FUJITSU-TELECOMMUNICATIONS-EUROPE" }, { 0x00108D, "Johnson Controls, Inc.", "JOHNSON-CONTROLS" }, { 0x00108E, "HUGH SYMONS CONCEPT Technologies Ltd.", "HUGH-SYMONS-CONCEPT-TECHNOLOGIES" }, { 0x00108F, "RAPTOR SYSTEMS", "RAPTOR" }, { 0x001090, "CIMETRICS, INC.", "CIMETRICS" }, { 0x001091, "NO WIRES NEEDED BV", "NO-WIRES-NEEDED" }, { 0x001092, "NETCORE INC.", "NETCORE" }, { 0x001093, "CMS COMPUTERS, LTD.", "CMS-COMPUTERS" }, { 0x001094, "Performance Analysis Broadband, Spirent plc", "PERFORMANCE-ANALYSIS-BROADBAND-SPIRENT-PLC" }, { 0x001095, "Thomson Inc.", "THOMSON" }, { 0x001096, "TRACEWELL SYSTEMS, INC.", "TRACEWELL" }, { 0x001097, "WinNet Metropolitan Communications Systems, Inc.", "WINNET-METROPOLITAN-COMMUNICATION" }, { 0x001098, "STARNET TECHNOLOGIES, INC.", "STARNET-TECHNOLOGIES" }, { 0x001099, "InnoMedia, Inc.", "INNOMEDIA" }, { 0x00109A, "NETLINE", "NETLINE" }, { 0x00109B, "Emulex Corporation", "EMULEX" }, { 0x00109C, "M-SYSTEM CO., LTD.", "M-SYSTEM" }, { 0x00109D, "CLARINET SYSTEMS, INC.", "CLARINET" }, { 0x00109E, "AWARE, INC.", "AWARE" }, { 0x00109F, "PAVO, INC.", "PAVO" }, { 0x0010A0, "INNOVEX TECHNOLOGIES, INC.", "INNOVEX-TECHNOLOGIES" }, { 0x0010A1, "KENDIN SEMICONDUCTOR, INC.", "KENDIN-SEMICONDUCTOR" }, { 0x0010A2, "TNS", "TNS" }, { 0x0010A3, "OMNITRONIX, INC.", "OMNITRONIX" }, { 0x0010A4, "XIRCOM", "XIRCOM" }, { 0x0010A5, "OXFORD INSTRUMENTS", "OXFORD-INSTRUMENTS" }, { 0x0010A6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0010A7, "UNEX TECHNOLOGY CORPORATION", "UNEX" }, { 0x0010A8, "RELIANCE COMPUTER CORP.", "RELIANCE" }, { 0x0010A9, "ADHOC TECHNOLOGIES", "ADHOC-TECHNOLOGIES" }, { 0x0010AA, "MEDIA4, INC.", "MEDIA4" }, { 0x0010AB, "KOITO ELECTRIC INDUSTRIES, LTD.", "KOITO-ELECTRIC-INDUSTRIES" }, { 0x0010AC, "IMCI TECHNOLOGIES", "IMCI-TECHNOLOGIES" }, { 0x0010AD, "SOFTRONICS USB, INC.", "SOFTRONICS-USB" }, { 0x0010AE, "SHINKO ELECTRIC INDUSTRIES CO.", "SHINKO-ELECTRIC-INDUSTRIES" }, { 0x0010AF, "TAC SYSTEMS, INC.", "TAC" }, { 0x0010B0, "MERIDIAN TECHNOLOGY CORP.", "MERIDIAN" }, { 0x0010B1, "FOR-A CO., LTD.", "FOR-A" }, { 0x0010B2, "COACTIVE AESTHETICS", "COACTIVE-AESTHETICS" }, { 0x0010B3, "NOKIA MULTIMEDIA TERMINALS", "NOKIA-MULTIMEDIA-TERMINALS" }, { 0x0010B4, "ATMOSPHERE NETWORKS", "ATMOSPHERE-NETWORKS" }, { 0x0010B5, "ACCTON TECHNOLOGY CORPORATION", "ACCTON" }, { 0x0010B6, "ENTRATA COMMUNICATIONS CORP.", "ENTRATA-COMMUNICATION" }, { 0x0010B7, "COYOTE TECHNOLOGIES, LLC", "COYOTE-TECHNOLOGIES-LLC" }, { 0x0010B8, "ISHIGAKI COMPUTER SYSTEM CO.", "ISHIGAKI-SYSTEM" }, { 0x0010B9, "MAXTOR CORP.", "MAXTOR" }, { 0x0010BA, "MARTINHO-DAVIS SYSTEMS, INC.", "MARTINHO-DAVIS" }, { 0x0010BB, "DATA & INFORMATION TECHNOLOGY", "DATA-INFORMATION" }, { 0x0010BC, "Aastra Telecom", "AASTRA-TELECOM" }, { 0x0010BD, "THE TELECOMMUNICATION TECHNOLOGY COMMITTEE (TTC)", "THE-TELECOMMUNICATION-COMMITTEE-TTC" }, { 0x0010BE, "MARCH NETWORKS CORPORATION", "MARCH-NETWORKS" }, { 0x0010BF, "InterAir Wireless", "INTERAIR-WIRELESS" }, { 0x0010C0, "ARMA, Inc.", "ARMA" }, { 0x0010C1, "OI ELECTRIC CO., LTD.", "OI-ELECTRIC" }, { 0x0010C2, "WILLNET, INC.", "WILLNET" }, { 0x0010C3, "CSI-CONTROL SYSTEMS", "CSI-CONTROL" }, { 0x0010C4, "MEDIA LINKS CO., LTD.", "MEDIA-LINKS" }, { 0x0010C5, "PROTOCOL TECHNOLOGIES, INC.", "PROTOCOL-TECHNOLOGIES" }, { 0x0010C6, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x0010C7, "DATA TRANSMISSION NETWORK", "DATA-TRANSMISSION-NETWORK" }, { 0x0010C8, "COMMUNICATIONS ELECTRONICS SECURITY GROUP", "COMMUNICATION-ELECTRONICS-SECURITY-GROUP" }, { 0x0010C9, "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO.", "MITSUBISHI-ELECTRONICS-LOGISTIC-SUPPORT" }, { 0x0010CA, "Telco Systems, Inc.", "TELCO" }, { 0x0010CB, "FACIT K.K.", "FACIT-K-K" }, { 0x0010CC, "CLP COMPUTER LOGISTIK PLANUNG GmbH", "CLP-LOGISTIK-PLANUNG" }, { 0x0010CD, "INTERFACE CONCEPT", "INTERFACE-CONCEPT" }, { 0x0010CE, "VOLAMP, LTD.", "VOLAMP" }, { 0x0010CF, "FIBERLANE COMMUNICATIONS", "FIBERLANE-COMMUNICATION" }, { 0x0010D0, "WITCOM, LTD.", "WITCOM" }, { 0x0010D1, "Top Layer Networks, Inc.", "TOP-LAYER-NETWORKS" }, { 0x0010D2, "NITTO TSUSHINKI CO., LTD", "NITTO-TSUSHINKI" }, { 0x0010D3, "GRIPS ELECTRONIC GMBH", "GRIPS" }, { 0x0010D4, "STORAGE COMPUTER CORPORATION", "STORAGE" }, { 0x0010D5, "IMASDE CANARIAS, S.A.", "IMASDE-CANARIAS" }, { 0x0010D6, "ITT - A/CD", "ITT---A/CD" }, { 0x0010D7, "ARGOSY RESEARCH INC.", "ARGOSY-RESEARCH" }, { 0x0010D8, "CALISTA", "CALISTA" }, { 0x0010D9, "IBM JAPAN, FUJISAWA MT+D", "IBM-JAPAN-FUJISAWA-MT+D" }, { 0x0010DA, "Kollmorgen Corp", "KOLLMORGEN" }, { 0x0010DB, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 0x0010DC, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0010DD, "ENABLE SEMICONDUCTOR, INC.", "ENABLE-SEMICONDUCTOR" }, { 0x0010DE, "INTERNATIONAL DATACASTING CORPORATION", "DATACASTING" }, { 0x0010DF, "RISE COMPUTER INC.", "RISE" }, { 0x0010E0, "Oracle Corporation", "ORACLE" }, { 0x0010E1, "S.I. TECH, INC.", "S-I-TECH" }, { 0x0010E2, "ArrayComm, Inc.", "ARRAYCOMM" }, { 0x0010E3, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0010E4, "NSI CORPORATION", "NSI" }, { 0x0010E5, "SOLECTRON TEXAS", "SOLECTRON-TEXAS" }, { 0x0010E6, "APPLIED INTELLIGENT SYSTEMS, INC.", "APPLIED-INTELLIGENT" }, { 0x0010E7, "BreezeCom", "BREEZECOM" }, { 0x0010E8, "TELOCITY, INCORPORATED", "TELOCITY-INCORPORATED" }, { 0x0010E9, "RAIDTEC LTD.", "RAIDTEC" }, { 0x0010EA, "ADEPT TECHNOLOGY", "ADEPT" }, { 0x0010EB, "SELSIUS SYSTEMS, INC.", "SELSIUS" }, { 0x0010EC, "RPCG, LLC", "RPCG-LLC" }, { 0x0010ED, "SUNDANCE TECHNOLOGY, INC.", "SUNDANCE" }, { 0x0010EE, "CTI PRODUCTS, INC.", "CTI-PRODUCTS" }, { 0x0010EF, "DBTEL INCORPORATED", "DBTEL-INCORPORATED" }, { 0x0010F0, "RITTAL-WERK RUDOLF LOH GmbH & Co.", "RITTAL-WERK-RUDOLF-LOH" }, { 0x0010F1, "I-O CORPORATION", "I-O" }, { 0x0010F2, "ANTEC", "ANTEC" }, { 0x0010F3, "Nexcom International Co., Ltd.", "NEXCOM" }, { 0x0010F4, "Vertical Communications", "VERTICAL-COMMUNICATION" }, { 0x0010F5, "AMHERST SYSTEMS, INC.", "AMHERST" }, { 0x0010F6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0010F7, "IRIICHI TECHNOLOGIES Inc.", "IRIICHI-TECHNOLOGIES" }, { 0x0010F8, "TEXIO TECHNOLOGY CORPORATION", "TEXIO" }, { 0x0010F9, "UNIQUE SYSTEMS, INC.", "UNIQUE" }, { 0x0010FA, "Apple", "APPLE" }, { 0x0010FB, "ZIDA TECHNOLOGIES LIMITED", "ZIDA-TECHNOLOGIES" }, { 0x0010FC, "BROADBAND NETWORKS, INC.", "BROADBAND-NETWORKS" }, { 0x0010FD, "COCOM A/S", "COCOM-A/S" }, { 0x0010FE, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x0010FF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001100, "Schneider Electric", "SCHNEIDER-ELECTRIC" }, { 0x001101, "CET Technologies Pte Ltd", "CET-TECHNOLOGIES-PTE" }, { 0x001102, "Aurora Multimedia Corp.", "AURORA-MULTIMEDIA" }, { 0x001103, "kawamura electric inc.", "KAWAMURA-ELECTRIC" }, { 0x001104, "TELEXY", "TELEXY" }, { 0x001105, "Sunplus Technology Co., Ltd.", "SUNPLUS" }, { 0x001106, "Siemens NV (Belgium)", "SIEMENS-NV-BELGIUM" }, { 0x001107, "RGB Networks Inc.", "RGB-NETWORKS" }, { 0x001108, "Orbital Data Corporation", "ORBITAL-DATA" }, { 0x001109, "Micro-Star International", "MICRO-STAR" }, { 0x00110A, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00110B, "Franklin Technology Systems", "FRANKLIN" }, { 0x00110C, "Atmark Techno, Inc.", "ATMARK-TECHNO" }, { 0x00110D, "SANBlaze Technology, Inc.", "SANBLAZE" }, { 0x00110E, "Tsurusaki Sealand Transportation Co. Ltd.", "TSURUSAKI-SEALAND-TRANSPORTATION" }, { 0x00110F, "netplat,Inc.", "NETPLAT" }, { 0x001110, "Maxanna Technology Co., Ltd.", "MAXANNA" }, { 0x001111, "Intel Corporation", "INTEL" }, { 0x001112, "Honeywell CMSS", "HONEYWELL-CMSS" }, { 0x001113, "Fraunhofer FOKUS", "FRAUNHOFER-FOKUS" }, { 0x001114, "EverFocus Electronics Corp.", "EVERFOCUS-ELECTRONICS" }, { 0x001115, "EPIN Technologies, Inc.", "EPIN-TECHNOLOGIES" }, { 0x001116, "COTEAU VERT CO., LTD.", "COTEAU-VERT" }, { 0x001117, "CESNET", "CESNET" }, { 0x001118, "BLX IC Design Corp., Ltd.", "BLX-IC-DESIGN" }, { 0x001119, "Solteras, Inc.", "SOLTERAS" }, { 0x00111A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00111B, "Targa Systems Div L-3 Communications Canada", "TARGA-DIV-L-3-COMMUNICATION-CANADA" }, { 0x00111C, "Pleora Technologies Inc.", "PLEORA-TECHNOLOGIES" }, { 0x00111D, "Hectrix Limited", "HECTRIX" }, { 0x00111E, "EPSG (Ethernet Powerlink Standardization Group)", "EPSG-ETHERNET-POWERLINK-STANDARDIZATION-GROUP" }, { 0x00111F, "Doremi Labs, Inc.", "DOREMI-LABS" }, { 0x001120, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001121, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001122, "CIMSYS Inc", "CIMSYS" }, { 0x001123, "Appointech, Inc.", "APPOINTECH" }, { 0x001124, "Apple", "APPLE" }, { 0x001125, "IBM Corp", "IBM" }, { 0x001126, "Venstar Inc.", "VENSTAR" }, { 0x001127, "TASI, Inc", "TASI" }, { 0x001128, "Streamit", "STREAMIT" }, { 0x001129, "Paradise Datacom Ltd.", "PARADISE-DATACOM" }, { 0x00112A, "Niko NV", "NIKO-NV" }, { 0x00112B, "NetModule AG", "NETMODULE" }, { 0x00112C, "IZT GmbH", "IZT" }, { 0x00112D, "iPulse Systems", "IPULSE" }, { 0x00112E, "CEICOM", "CEICOM" }, { 0x00112F, "ASUSTek Computer Inc.", "ASUSTEK" }, { 0x001130, "Allied Telesis (Hong Kong) Ltd.", "ALLIED-TELESIS-HONG-KONG" }, { 0x001131, "UNATECH. CO.,LTD", "UNATECH" }, { 0x001132, "Synology Incorporated", "SYNOLOGY-INCORPORATED" }, { 0x001133, "Siemens Austria SIMEA", "SIEMENS-AUSTRIA-SIMEA" }, { 0x001134, "MediaCell, Inc.", "MEDIACELL" }, { 0x001135, "Grandeye Ltd", "GRANDEYE" }, { 0x001136, "Goodrich Sensor Systems", "GOODRICH-SENSOR" }, { 0x001137, "AICHI ELECTRIC CO., LTD.", "AICHI-ELECTRIC" }, { 0x001138, "TAISHIN CO., LTD.", "TAISHIN" }, { 0x001139, "STOEBER ANTRIEBSTECHNIK GmbH + Co. KG.", "STOEBER-ANTRIEBSTECHNIK-+" }, { 0x00113A, "SHINBORAM", "SHINBORAM" }, { 0x00113B, "Micronet Communications Inc.", "MICRONET-COMMUNICATION" }, { 0x00113C, "Micronas GmbH", "MICRONAS" }, { 0x00113D, "KN SOLTEC CO.,LTD.", "KN-SOLTEC" }, { 0x00113E, "JL Corporation", "JL" }, { 0x00113F, "Alcatel DI", "ALCATEL-DI" }, { 0x001140, "Nanometrics Inc.", "NANOMETRICS" }, { 0x001141, "GoodMan Corporation", "GOODMAN" }, { 0x001142, "e-SMARTCOM INC.", "E-SMARTCOM" }, { 0x001143, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x001144, "Assurance Technology Corp", "ASSURANCE" }, { 0x001145, "ValuePoint Networks", "VALUEPOINT-NETWORKS" }, { 0x001146, "Telecard-Pribor Ltd", "TELECARD-PRIBOR" }, { 0x001147, "Secom-Industry co.LTD.", "SECOM-INDUSTRY" }, { 0x001148, "Prolon Control Systems", "PROLON-CONTROL" }, { 0x001149, "Proliphix Inc.", "PROLIPHIX" }, { 0x00114A, "KAYABA INDUSTRY Co,.Ltd.", "KAYABA-INDUSTRY" }, { 0x00114B, "Francotyp-Postalia GmbH", "FRANCOTYP-POSTALIA" }, { 0x00114C, "caffeina applied research ltd.", "CAFFEINA-APPLIED-RESEARCH" }, { 0x00114D, "Atsumi Electric Co.,LTD.", "ATSUMI-ELECTRIC" }, { 0x00114E, "690885 Ontario Inc.", "690885-ONTARIO" }, { 0x00114F, "US Digital Television, Inc", "US-DIGITAL-TELEVISION" }, { 0x001150, "Belkin Corporation", "BELKIN" }, { 0x001151, "Mykotronx", "MYKOTRONX" }, { 0x001152, "Eidsvoll Electronics AS", "EIDSVOLL-ELECTRONICS-AS" }, { 0x001153, "Trident Tek, Inc.", "TRIDENT-TEK" }, { 0x001154, "Webpro Technologies Inc.", "WEBPRO-TECHNOLOGIES" }, { 0x001155, "Sevis Systems", "SEVIS" }, { 0x001156, "Pharos Systems NZ", "PHAROS-NZ" }, { 0x001157, "OF Networks Co., Ltd.", "OF-NETWORKS" }, { 0x001158, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001159, "MATISSE NETWORKS INC", "MATISSE-NETWORKS" }, { 0x00115A, "Ivoclar Vivadent AG", "IVOCLAR-VIVADENT" }, { 0x00115B, "Elitegroup Computer System Co. (ECS)", "ELITEGROUP-SYSTEM-ECS" }, { 0x00115C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00115D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00115E, "ProMinent Dosiertechnik GmbH", "PROMINENT-DOSIERTECHNIK" }, { 0x00115F, "ITX Security Co., Ltd.", "ITX-SECURITY" }, { 0x001160, "ARTDIO Company Co., LTD", "ARTDIO-COMPANY" }, { 0x001161, "NetStreams, LLC", "NETSTREAMS-LLC" }, { 0x001162, "STAR MICRONICS CO.,LTD.", "STAR-MICRONICS" }, { 0x001163, "SYSTEM SPA DEPT. ELECTRONICS", "SYSTEM-SPA-DEPT-ELECTRONICS" }, { 0x001164, "ACARD Technology Corp.", "ACARD" }, { 0x001165, "Znyx Networks", "ZNYX-NETWORKS" }, { 0x001166, "Taelim Electronics Co., Ltd.", "TAELIM-ELECTRONICS" }, { 0x001167, "Integrated System Solution Corp.", "INTEGRATED-SYSTEM-SOLUTION" }, { 0x001168, "HomeLogic LLC", "HOMELOGIC-LLC" }, { 0x001169, "EMS Satcom", "EMS-SATCOM" }, { 0x00116A, "Domo Ltd", "DOMO" }, { 0x00116B, "Digital Data Communications Asia Co.,Ltd", "DIGITAL-DATA-COMMUNICATION-ASIA" }, { 0x00116C, "Nanwang Multimedia Inc.,Ltd", "NANWANG-MULTIMEDIA" }, { 0x00116D, "American Time and Signal", "AMERICAN-TIME-AND-SIGNAL" }, { 0x00116E, "PePLink Ltd.", "PEPLINK" }, { 0x00116F, "Netforyou Co., LTD.", "NETFORYOU" }, { 0x001170, "GSC SRL", "GSC-SRL" }, { 0x001171, "DEXTER Communications, Inc.", "DEXTER-COMMUNICATION" }, { 0x001172, "COTRON CORPORATION", "COTRON" }, { 0x001173, "SMART Storage Systems", "SMART-STORAGE" }, { 0x001174, "Wibhu Technologies, Inc.", "WIBHU-TECHNOLOGIES" }, { 0x001175, "PathScale, Inc.", "PATHSCALE" }, { 0x001176, "Intellambda Systems, Inc.", "INTELLAMBDA" }, { 0x001177, "Coaxial Networks, Inc.", "COAXIAL-NETWORKS" }, { 0x001178, "Chiron Technology Ltd", "CHIRON" }, { 0x001179, "Singular Technology Co. Ltd.", "SINGULAR" }, { 0x00117A, "Singim International Corp.", "SINGIM" }, { 0x00117B, "Büchi Labortechnik AG", "BüCHI-LABORTECHNIK" }, { 0x00117C, "e-zy.net", "E-ZY-NET" }, { 0x00117D, "ZMD America, Inc.", "ZMD-AMERICA" }, { 0x00117E, "Progeny, A division of Midmark Corp", "PROGENY-A-DIVISION-OF-MIDMARK" }, { 0x00117F, "Neotune Information Technology Corporation,.LTD", "NEOTUNE-INFORMATION" }, { 0x001180, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001181, "InterEnergy Co.Ltd,", "INTERENERGY" }, { 0x001182, "IMI Norgren Ltd", "IMI-NORGREN" }, { 0x001183, "Datalogic ADC, Inc.", "DATALOGIC-ADC" }, { 0x001184, "Humo Laboratory,Ltd.", "HUMO-LABORATORY" }, { 0x001185, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001186, "Prime Systems, Inc.", "PRIME" }, { 0x001187, "Category Solutions, Inc", "CATEGORY-SOLUTIONS" }, { 0x001188, "Enterasys", "ENTERASYS" }, { 0x001189, "Aerotech Inc", "AEROTECH" }, { 0x00118A, "Viewtran Technology Limited", "VIEWTRAN" }, { 0x00118B, "Alcatel-Lucent, Enterprise Business Group", "ALCATEL-LUCENT-BUSINESS-GROUP" }, { 0x00118C, "Missouri Department of Transportation", "MISSOURI-DEPARTMENT-OF-TRANSPORTATION" }, { 0x00118D, "Hanchang System Corp.", "HANCHANG-SYSTEM" }, { 0x00118E, "Halytech Mace", "HALYTECH-MACE" }, { 0x00118F, "EUTECH INSTRUMENTS PTE. LTD.", "EUTECH-INSTRUMENTS-PTE" }, { 0x001190, "Digital Design Corporation", "DIGITAL-DESIGN" }, { 0x001191, "CTS-Clima Temperatur Systeme GmbH", "CTS-CLIMA-TEMPERATUR-SYSTEME" }, { 0x001192, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001193, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001194, "Chi Mei Communication Systems, Inc.", "CHI-MEI-COMMUNICATION" }, { 0x001195, "D-Link Corporation", "D-LINK" }, { 0x001196, "Actuality Systems, Inc.", "ACTUALITY" }, { 0x001197, "Monitoring Technologies Limited", "MONITORING-TECHNOLOGIES" }, { 0x001198, "Prism Media Products Limited", "PRISM-MEDIA-PRODUCTS" }, { 0x001199, "2wcom Systems GmbH", "2WCOM" }, { 0x00119A, "Alkeria srl", "ALKERIA-SRL" }, { 0x00119B, "Telesynergy Research Inc.", "TELESYNERGY-RESEARCH" }, { 0x00119C, "EP&T Energy", "EP-T-ENERGY" }, { 0x00119D, "Diginfo Technology Corporation", "DIGINFO" }, { 0x00119E, "Solectron Brazil", "SOLECTRON-BRAZIL" }, { 0x00119F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0011A0, "Vtech Engineering Canada Ltd", "VTECH-ENGINEERING-CANADA" }, { 0x0011A1, "VISION NETWARE CO.,LTD", "VISION-NETWARE" }, { 0x0011A2, "Manufacturing Technology Inc", "MANUFACTURING" }, { 0x0011A3, "LanReady Technologies Inc.", "LANREADY-TECHNOLOGIES" }, { 0x0011A4, "JStream Technologies Inc.", "JSTREAM-TECHNOLOGIES" }, { 0x0011A5, "Fortuna Electronic Corp.", "FORTUNA" }, { 0x0011A6, "Sypixx Networks", "SYPIXX-NETWORKS" }, { 0x0011A7, "Infilco Degremont Inc.", "INFILCO-DEGREMONT" }, { 0x0011A8, "Quest Technologies", "QUEST-TECHNOLOGIES" }, { 0x0011A9, "MOIMSTONE Co., LTD", "MOIMSTONE" }, { 0x0011AA, "Uniclass Technology, Co., LTD", "UNICLASS" }, { 0x0011AB, "TRUSTABLE TECHNOLOGY CO.,LTD.", "TRUSTABLE" }, { 0x0011AC, "Simtec Electronics", "SIMTEC-ELECTRONICS" }, { 0x0011AD, "Shanghai Ruijie Technology", "SHANGHAI-RUIJIE" }, { 0x0011AE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0011AF, "Medialink-i,Inc", "MEDIALINK-I" }, { 0x0011B0, "Fortelink Inc.", "FORTELINK" }, { 0x0011B1, "BlueExpert Technology Corp.", "BLUEEXPERT" }, { 0x0011B2, "2001 Technology Inc.", "2001" }, { 0x0011B3, "YOSHIMIYA CO.,LTD.", "YOSHIMIYA" }, { 0x0011B4, "Westermo Teleindustri AB", "WESTERMO-TELEINDUSTRI-AB" }, { 0x0011B5, "Shenzhen Powercom Co.,Ltd", "SHENZHEN-POWERCOM" }, { 0x0011B6, "Open Systems International", "OPEN" }, { 0x0011B7, "Octalix B.V.", "OCTALIX" }, { 0x0011B8, "Liebherr - Elektronik GmbH", "LIEBHERR---ELEKTRONIK" }, { 0x0011B9, "Inner Range Pty. Ltd.", "INNER-RANGE-PTY" }, { 0x0011BA, "Elexol Pty Ltd", "ELEXOL-PTY" }, { 0x0011BB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0011BC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0011BD, "Bombardier Transportation", "BOMBARDIER-TRANSPORTATION" }, { 0x0011BE, "AGP Telecom Co. Ltd", "AGP-TELECOM" }, { 0x0011BF, "AESYS S.p.A.", "AESYS-S-P-A" }, { 0x0011C0, "Aday Technology Inc", "ADAY" }, { 0x0011C1, "4P MOBILE DATA PROCESSING", "4P-MOBILE-DATA-PROCESSING" }, { 0x0011C2, "United Fiber Optic Communication", "UNITED-FIBER-OPTIC-COMMUNICATION" }, { 0x0011C3, "Transceiving System Technology Corporation", "TRANSCEIVING-SYSTEM" }, { 0x0011C4, "Terminales de Telecomunicacion Terrestre, S.L.", "TERMINALES-DE-TELECOMUNICACION-TERRESTRE-S-L" }, { 0x0011C5, "TEN Technology", "TEN" }, { 0x0011C6, "Seagate Technology", "SEAGATE" }, { 0x0011C7, "Raymarine UK Ltd", "RAYMARINE-UK" }, { 0x0011C8, "Powercom Co., Ltd.", "POWERCOM" }, { 0x0011C9, "MTT Corporation", "MTT" }, { 0x0011CA, "Long Range Systems, Inc.", "LONG-RANGE" }, { 0x0011CB, "Jacobsons AB", "JACOBSONS-AB" }, { 0x0011CC, "Guangzhou Jinpeng Group Co.,Ltd.", "GUANGZHOU-JINPENG-GROUP" }, { 0x0011CD, "Axsun Technologies", "AXSUN-TECHNOLOGIES" }, { 0x0011CE, "Ubisense Limited", "UBISENSE" }, { 0x0011CF, "Thrane & Thrane A/S", "THRANE-THRANE-A/S" }, { 0x0011D0, "Tandberg Data ASA", "TANDBERG-DATA-ASA" }, { 0x0011D1, "Soft Imaging System GmbH", "SOFT-IMAGING-SYSTEM" }, { 0x0011D2, "Perception Digital Ltd", "PERCEPTION-DIGITAL" }, { 0x0011D3, "NextGenTel Holding ASA", "NEXTGENTEL-HOLDING-ASA" }, { 0x0011D4, "NetEnrich, Inc", "NETENRICH" }, { 0x0011D5, "Hangzhou Sunyard System Engineering Co.,Ltd.", "HANGZHOU-SUNYARD-SYSTEM-ENGINEERING" }, { 0x0011D6, "HandEra, Inc.", "HANDERA" }, { 0x0011D7, "eWerks Inc", "EWERKS" }, { 0x0011D8, "ASUSTek Computer Inc.", "ASUSTEK" }, { 0x0011D9, "TiVo", "TIVO" }, { 0x0011DA, "Vivaas Technology Inc.", "VIVAAS" }, { 0x0011DB, "Land-Cellular Corporation", "LAND-CELLULAR" }, { 0x0011DC, "Glunz & Jensen", "GLUNZ-JENSEN" }, { 0x0011DD, "FROMUS TEC. Co., Ltd.", "FROMUS-TEC" }, { 0x0011DE, "EURILOGIC", "EURILOGIC" }, { 0x0011DF, "Current Energy", "CURRENT-ENERGY" }, { 0x0011E0, "U-MEDIA Communications, Inc.", "U-MEDIA-COMMUNICATION" }, { 0x0011E1, "Arcelik A.S", "ARCELIK-A-S" }, { 0x0011E2, "Hua Jung Components Co., Ltd.", "HUA-JUNG-COMPONENTS" }, { 0x0011E3, "Thomson, Inc.", "THOMSON" }, { 0x0011E4, "Danelec Electronics A/S", "DANELEC-ELECTRONICS-A/S" }, { 0x0011E5, "KCodes Corporation", "KCODES" }, { 0x0011E6, "Scientific Atlanta", "SCIENTIFIC-ATLANTA" }, { 0x0011E7, "WORLDSAT - Texas de France", "WORLDSAT---TEXAS-DE-FRANCE" }, { 0x0011E8, "Tixi.Com", "TIXI-COM" }, { 0x0011E9, "STARNEX CO., LTD.", "STARNEX" }, { 0x0011EA, "IWICS Inc.", "IWICS" }, { 0x0011EB, "Innovative Integration", "INNOVATIVE-INTEGRATION" }, { 0x0011EC, "AVIX INC.", "AVIX" }, { 0x0011ED, "802 Global", "802-GLOBAL" }, { 0x0011EE, "Estari, Inc.", "ESTARI" }, { 0x0011EF, "Conitec Datensysteme GmbH", "CONITEC-DATENSYSTEME" }, { 0x0011F0, "Wideful Limited", "WIDEFUL" }, { 0x0011F1, "QinetiQ Ltd", "QINETIQ" }, { 0x0011F2, "Institute of Network Technologies", "INSTITUTE-OF-NETWORK-TECHNOLOGIES" }, { 0x0011F3, "NeoMedia Europe AG", "NEOMEDIA-EUROPE" }, { 0x0011F4, "woori-net", "WOORI-NET" }, { 0x0011F5, "ASKEY COMPUTER CORP.", "ASKEY" }, { 0x0011F6, "Asia Pacific Microsystems , Inc.", "ASIA-PACIFIC-MICROSYSTEMS" }, { 0x0011F7, "Shenzhen Forward Industry Co., Ltd", "SHENZHEN-FORWARD-INDUSTRY" }, { 0x0011F8, "AIRAYA Corp", "AIRAYA" }, { 0x0011F9, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0011FA, "Rane Corporation", "RANE" }, { 0x0011FB, "Heidelberg Engineering GmbH", "HEIDELBERG-ENGINEERING" }, { 0x0011FC, "HARTING Electric Gmbh & Co.KG", "HARTING-ELECTRIC" }, { 0x0011FD, "KORG INC.", "KORG" }, { 0x0011FE, "Keiyo System Research, Inc.", "KEIYO-SYSTEM-RESEARCH" }, { 0x0011FF, "Digitro Tecnologia Ltda", "DIGITRO-TECNOLOGIA-LTDA" }, { 0x001200, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001201, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001202, "Decrane Aerospace - Audio International Inc.", "DECRANE-AEROSPACE---AUDIO" }, { 0x001203, "ActivNetworks", "ACTIVNETWORKS" }, { 0x001204, "u10 Networks, Inc.", "U10-NETWORKS" }, { 0x001205, "Terrasat Communications, Inc.", "TERRASAT-COMMUNICATION" }, { 0x001206, "iQuest (NZ) Ltd", "IQUEST-NZ" }, { 0x001207, "Head Strong International Limited", "HEAD-STRONG" }, { 0x001208, "Gantner Instruments GmbH", "GANTNER-INSTRUMENTS" }, { 0x001209, "Fastrax Ltd", "FASTRAX" }, { 0x00120A, "Emerson Climate Technologies GmbH", "EMERSON-CLIMATE-TECHNOLOGIES" }, { 0x00120B, "Chinasys Technologies Limited", "CHINASYS-TECHNOLOGIES" }, { 0x00120C, "CE-Infosys Pte Ltd", "CE-INFOSYS-PTE" }, { 0x00120D, "Advanced Telecommunication Technologies, Inc.", "ADVANCED-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x00120E, "AboCom", "ABOCOM" }, { 0x00120F, "IEEE 802.3", "IEEE-802-3" }, { 0x001210, "WideRay Corp", "WIDERAY" }, { 0x001211, "Protechna Herbst GmbH & Co. KG", "PROTECHNA-HERBST" }, { 0x001212, "PLUS Corporation", "PLUS" }, { 0x001213, "Metrohm AG", "METROHM" }, { 0x001214, "Koenig & Bauer AG", "KOENIG-BAUER" }, { 0x001215, "iStor Networks, Inc.", "ISTOR-NETWORKS" }, { 0x001216, "ICP Internet Communication Payment AG", "ICP-INTERNET-COMMUNICATION-PAYMENT" }, { 0x001217, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001218, "ARUZE Corporation", "ARUZE" }, { 0x001219, "Ahead Communication Systems Inc", "AHEAD-COMMUNICATION" }, { 0x00121A, "Techno Soft Systemnics Inc.", "TECHNO-SOFT-SYSTEMNICS" }, { 0x00121B, "Sound Devices, LLC", "SOUND-DEVICES-LLC" }, { 0x00121C, "PARROT S.A.", "PARROT" }, { 0x00121D, "Netfabric Corporation", "NETFABRIC" }, { 0x00121E, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 0x00121F, "Harding Instruments", "HARDING-INSTRUMENTS" }, { 0x001220, "Cadco Systems", "CADCO" }, { 0x001221, "B.Braun Melsungen AG", "B-BRAUN-MELSUNGEN" }, { 0x001222, "Skardin (UK) Ltd", "SKARDIN-UK" }, { 0x001223, "Pixim", "PIXIM" }, { 0x001224, "NexQL Corporation", "NEXQL" }, { 0x001225, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001226, "Japan Direx Corporation", "JAPAN-DIREX" }, { 0x001227, "Franklin Electric Co., Inc.", "FRANKLIN-ELECTRIC" }, { 0x001228, "Data Ltd.", "DATA" }, { 0x001229, "BroadEasy Technologies Co.,Ltd", "BROADEASY-TECHNOLOGIES" }, { 0x00122A, "VTech Telecommunications Ltd.", "VTECH-TELECOMMUNICATIONS" }, { 0x00122B, "Virbiage Pty Ltd", "VIRBIAGE-PTY" }, { 0x00122C, "Soenen Controls N.V.", "SOENEN-CONTROLS-N-V" }, { 0x00122D, "SiNett Corporation", "SINETT" }, { 0x00122E, "Signal Technology - AISD", "SIGNAL---AISD" }, { 0x00122F, "Sanei Electric Inc.", "SANEI-ELECTRIC" }, { 0x001230, "Picaso Infocommunication CO., LTD.", "PICASO-INFOCOMMUNICATION" }, { 0x001231, "Motion Control Systems, Inc.", "MOTION-CONTROL" }, { 0x001232, "LeWiz Communications Inc.", "LEWIZ-COMMUNICATION" }, { 0x001233, "JRC TOKKI Co.,Ltd.", "JRC-TOKKI" }, { 0x001234, "Camille Bauer", "CAMILLE-BAUER" }, { 0x001235, "Andrew Corporation", "ANDREW" }, { 0x001236, "ConSentry Networks", "CONSENTRY-NETWORKS" }, { 0x001237, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001238, "SetaBox Technology Co., Ltd.", "SETABOX" }, { 0x001239, "S Net Systems Inc.", "S-NET" }, { 0x00123A, "Posystech Inc., Co.", "POSYSTECH" }, { 0x00123B, "KeRo Systems ApS", "KERO-APS" }, { 0x00123C, "Second Rule LLC", "SECOND-RULE-LLC" }, { 0x00123D, "GES", "GES" }, { 0x00123E, "ERUNE technology Co., Ltd.", "ERUNE" }, { 0x00123F, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x001240, "AMOI ELECTRONICS CO.,LTD", "AMOI-ELECTRONICS" }, { 0x001241, "a2i marketing center", "A2I-MARKETING-CENTER" }, { 0x001242, "Millennial Net", "MILLENNIAL-NET" }, { 0x001243, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001244, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001245, "Zellweger Analytics, Inc.", "ZELLWEGER-ANALYTICS" }, { 0x001246, "T.O.M TECHNOLOGY INC..", "T-O-M" }, { 0x001247, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x001248, "EMC Corporation (Kashya)", "EMC-KASHYA" }, { 0x001249, "Delta Elettronica S.p.A.", "DELTA-ELETTRONICA-S-P-A" }, { 0x00124A, "Dedicated Devices, Inc.", "DEDICATED-DEVICES" }, { 0x00124B, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x00124C, "BBWM Corporation", "BBWM" }, { 0x00124D, "Inducon BV", "INDUCON" }, { 0x00124E, "XAC AUTOMATION CORP.", "XAC-AUTOMATION" }, { 0x00124F, "Pentair Thermal Management", "PENTAIR-THERMAL-MANAGEMENT" }, { 0x001250, "Tokyo Aircaft Instrument Co., Ltd.", "TOKYO-AIRCAFT-INSTRUMENT" }, { 0x001251, "SILINK", "SILINK" }, { 0x001252, "Citronix, LLC", "CITRONIX-LLC" }, { 0x001253, "AudioDev AB", "AUDIODEV-AB" }, { 0x001254, "Spectra Technologies Holdings Company Ltd", "SPECTRA-TECHNOLOGIES-HOLDINGS-COMPANY" }, { 0x001255, "NetEffect Incorporated", "NETEFFECT-INCORPORATED" }, { 0x001256, "LG INFORMATION & COMM.", "LG-INFORMATION-COMM" }, { 0x001257, "LeapComm Communication Technologies Inc.", "LEAPCOMM-COMMUNICATION-TECHNOLOGIES" }, { 0x001258, "Activis Polska", "ACTIVIS-POLSKA" }, { 0x001259, "THERMO ELECTRON KARLSRUHE", "THERMO-ELECTRON-KARLSRUHE" }, { 0x00125A, "Microsoft Corporation", "MICROSOFT" }, { 0x00125B, "KAIMEI ELECTRONI", "KAIMEI-ELECTRONI" }, { 0x00125C, "Green Hills Software, Inc.", "GREEN-HILLS-SOFTWARE" }, { 0x00125D, "CyberNet Inc.", "CYBERNET" }, { 0x00125E, "CAEN", "CAEN" }, { 0x00125F, "AWIND Inc.", "AWIND" }, { 0x001260, "Stanton Magnetics,inc.", "STANTON-MAGNETICS" }, { 0x001261, "Adaptix, Inc", "ADAPTIX" }, { 0x001262, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001263, "Data Voice Technologies GmbH", "DATA-VOICE-TECHNOLOGIES" }, { 0x001264, "daum electronic gmbh", "DAUM" }, { 0x001265, "Enerdyne Technologies, Inc.", "ENERDYNE-TECHNOLOGIES" }, { 0x001266, "Swisscom Hospitality Services SA", "SWISSCOM-HOSPITALITY-SERVICES" }, { 0x001267, "Panasonic Corporation", "PANASONIC" }, { 0x001268, "IPS d.o.o.", "IPS-D-O-O" }, { 0x001269, "Value Electronics", "VALUE-ELECTRONICS" }, { 0x00126A, "OPTOELECTRONICS Co., Ltd.", "OPTOELECTRONICS" }, { 0x00126B, "Ascalade Communications Limited", "ASCALADE-COMMUNICATION" }, { 0x00126C, "Visonic Ltd.", "VISONIC" }, { 0x00126D, "University of California, Berkeley", "UNIVERSITY-OF-CALIFORNIA-BERKELEY" }, { 0x00126E, "Seidel Elektronik GmbH Nfg.KG", "SEIDEL-ELEKTRONIK-NFG" }, { 0x00126F, "Rayson Technology Co., Ltd.", "RAYSON" }, { 0x001270, "NGES Denro Systems", "NGES-DENRO" }, { 0x001271, "Measurement Computing Corp", "MEASUREMENT-COMPUTING" }, { 0x001272, "Redux Communications Ltd.", "REDUX-COMMUNICATION" }, { 0x001273, "Stoke Inc", "STOKE" }, { 0x001274, "NIT lab", "NIT-LAB" }, { 0x001275, "Sentilla Corporation", "SENTILLA" }, { 0x001276, "CG Power Systems Ireland Limited", "CG-POWER-IRELAND" }, { 0x001277, "Korenix Technologies Co., Ltd.", "KORENIX-TECHNOLOGIES" }, { 0x001278, "International Bar Code", "BAR-CODE" }, { 0x001279, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00127A, "Sanyu Industry Co.,Ltd.", "SANYU-INDUSTRY" }, { 0x00127B, "VIA Networking Technologies, Inc.", "VIA-NETWORKING-TECHNOLOGIES" }, { 0x00127C, "SWEGON AB", "SWEGON-AB" }, { 0x00127D, "MobileAria", "MOBILEARIA" }, { 0x00127E, "Digital Lifestyles Group, Inc.", "DIGITAL-LIFESTYLES-GROUP" }, { 0x00127F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001280, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001281, "March Networks S.p.A.", "MARCH-NETWORKS-S-P-A" }, { 0x001282, "Qovia", "QOVIA" }, { 0x001283, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001284, "Lab33 Srl", "LAB33-SRL" }, { 0x001285, "Gizmondo Europe Ltd", "GIZMONDO-EUROPE" }, { 0x001286, "ENDEVCO CORP", "ENDEVCO" }, { 0x001287, "Digital Everywhere Unterhaltungselektronik GmbH", "DIGITAL-EVERYWHERE-UNTERHALTUNGSELEKTRONIK" }, { 0x001288, "2Wire, Inc", "2WIRE" }, { 0x001289, "Advance Sterilization Products", "ADVANCE-STERILIZATION-PRODUCTS" }, { 0x00128A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00128B, "Sensory Networks Inc", "SENSORY-NETWORKS" }, { 0x00128C, "Woodward Governor", "WOODWARD-GOVERNOR" }, { 0x00128D, "STB Datenservice GmbH", "STB-DATENSERVICE" }, { 0x00128E, "Q-Free ASA", "Q-FREE-ASA" }, { 0x00128F, "Montilio", "MONTILIO" }, { 0x001290, "KYOWA Electric & Machinery Corp.", "KYOWA-ELECTRIC-MACHINERY" }, { 0x001291, "KWS Computersysteme GmbH", "KWS-COMPUTERSYSTEME" }, { 0x001292, "Griffin Technology", "GRIFFIN" }, { 0x001293, "GE Energy", "GE-ENERGY" }, { 0x001294, "SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC", "SUMITOMO-ELECTRIC-DEVICE-INNOVATIONS" }, { 0x001295, "Aiware Inc.", "AIWARE" }, { 0x001296, "Addlogix", "ADDLOGIX" }, { 0x001297, "O2Micro, Inc.", "O2MICRO" }, { 0x001298, "MICO ELECTRIC(SHENZHEN) LIMITED", "MICO-ELECTRIC-SHENZHEN" }, { 0x001299, "Ktech Telecommunications Inc", "KTECH-TELECOMMUNICATIONS" }, { 0x00129A, "IRT Electronics Pty Ltd", "IRT-ELECTRONICS-PTY" }, { 0x00129B, "E2S Electronic Engineering Solutions, S.L.", "E2S-ENGINEERING-SOLUTIONS-S-L" }, { 0x00129C, "Yulinet", "YULINET" }, { 0x00129D, "First International Computer do Brasil", "FIRST-DO-BRASIL" }, { 0x00129E, "Surf Communications Inc.", "SURF-COMMUNICATION" }, { 0x00129F, "RAE Systems", "RAE" }, { 0x0012A0, "NeoMeridian Sdn Bhd", "NEOMERIDIAN-SDN-BHD" }, { 0x0012A1, "BluePacket Communications Co., Ltd.", "BLUEPACKET-COMMUNICATION" }, { 0x0012A2, "VITA", "VITA" }, { 0x0012A3, "Trust International B.V.", "TRUST" }, { 0x0012A4, "ThingMagic, LLC", "THINGMAGIC-LLC" }, { 0x0012A5, "Stargen, Inc.", "STARGEN" }, { 0x0012A6, "Dolby Australia", "DOLBY-AUSTRALIA" }, { 0x0012A7, "ISR TECHNOLOGIES Inc", "ISR-TECHNOLOGIES" }, { 0x0012A8, "intec GmbH", "INTEC" }, { 0x0012A9, "3Com Ltd", "3COM" }, { 0x0012AA, "IEE, Inc.", "IEE" }, { 0x0012AB, "WiLife, Inc.", "WILIFE" }, { 0x0012AC, "ONTIMETEK INC.", "ONTIMETEK" }, { 0x0012AD, "IDS GmbH", "IDS" }, { 0x0012AE, "HLS HARD-LINE Solutions Inc.", "HLS-HARD-LINE-SOLUTIONS" }, { 0x0012AF, "ELPRO Technologies", "ELPRO-TECHNOLOGIES" }, { 0x0012B0, "Efore Oyj (Plc)", "EFORE-OYJ-PLC" }, { 0x0012B1, "Dai Nippon Printing Co., Ltd", "DAI-NIPPON-PRINTING" }, { 0x0012B2, "AVOLITES LTD.", "AVOLITES" }, { 0x0012B3, "Advance Wireless Technology Corp.", "ADVANCE-WIRELESS" }, { 0x0012B4, "Work Microwave GmbH", "WORK-MICROWAVE" }, { 0x0012B5, "Vialta, Inc.", "VIALTA" }, { 0x0012B6, "Santa Barbara Infrared, Inc.", "SANTA-BARBARA-INFRARED" }, { 0x0012B7, "PTW Freiburg", "PTW-FREIBURG" }, { 0x0012B8, "G2 Microsystems", "G2-MICROSYSTEMS" }, { 0x0012B9, "Fusion Digital Technology", "FUSION-DIGITAL" }, { 0x0012BA, "FSI Systems, Inc.", "FSI" }, { 0x0012BB, "Telecommunications Industry Association TR-41 Committee", "TELECOMMUNICATIONS-INDUSTRY-ASSOCIATION-TR-41-COMMITTEE" }, { 0x0012BC, "Echolab LLC", "ECHOLAB-LLC" }, { 0x0012BD, "Avantec Manufacturing Limited", "AVANTEC-MANUFACTURING" }, { 0x0012BE, "Astek Corporation", "ASTEK" }, { 0x0012BF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x0012C0, "HotLava Systems, Inc.", "HOTLAVA" }, { 0x0012C1, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x0012C2, "Apex Electronics Factory", "APEX-ELECTRONICS-FACTORY" }, { 0x0012C3, "WIT S.A.", "WIT" }, { 0x0012C4, "Viseon, Inc.", "VISEON" }, { 0x0012C5, "V-Show Technology (China) Co.,Ltd", "V-SHOW-CHINA" }, { 0x0012C6, "TGC America, Inc", "TGC-AMERICA" }, { 0x0012C7, "SECURAY Technologies Ltd.Co.", "SECURAY-TECHNOLOGIES" }, { 0x0012C8, "Perfect tech", "PERFECT-TECH" }, { 0x0012C9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0012CA, "Mechatronic Brick Aps", "MECHATRONIC-BRICK-APS" }, { 0x0012CB, "CSS Inc.", "CSS" }, { 0x0012CC, "Bitatek CO., LTD", "BITATEK" }, { 0x0012CD, "ASEM SpA", "ASEM-SPA" }, { 0x0012CE, "Advanced Cybernetics Group", "ADVANCED-CYBERNETICS-GROUP" }, { 0x0012CF, "Accton Technology Corporation", "ACCTON" }, { 0x0012D0, "Gossen-Metrawatt-GmbH", "GOSSEN-METRAWATT" }, { 0x0012D1, "Texas Instruments Inc", "TEXAS-INSTRUMENTS" }, { 0x0012D2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0012D3, "Zetta Systems, Inc.", "ZETTA" }, { 0x0012D4, "Princeton Technology, Ltd", "PRINCETON" }, { 0x0012D5, "Motion Reality Inc.", "MOTION-REALITY" }, { 0x0012D6, "Jiangsu Yitong High-Tech Co.,Ltd", "JIANGSU-YITONG-HIGH-TECH" }, { 0x0012D7, "Invento Networks, Inc.", "INVENTO-NETWORKS" }, { 0x0012D8, "International Games System Co., Ltd.", "GAMES-SYSTEM" }, { 0x0012D9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0012DA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0012DB, "ZIEHL industrie-elektronik GmbH + Co KG", "ZIEHL-INDUSTRIE-ELEKTRONIK-+" }, { 0x0012DC, "SunCorp Industrial Limited", "SUNCORP-INDUSTRIAL" }, { 0x0012DD, "Shengqu Information Technology (Shanghai) Co., Ltd.", "SHENGQU-INFORMATION-SHANGHAI" }, { 0x0012DE, "Radio Components Sweden AB", "RADIO-COMPONENTS-SWEDEN-AB" }, { 0x0012DF, "Novomatic AG", "NOVOMATIC" }, { 0x0012E0, "Codan Limited", "CODAN" }, { 0x0012E1, "Alliant Networks, Inc", "ALLIANT-NETWORKS" }, { 0x0012E2, "ALAXALA Networks Corporation", "ALAXALA-NETWORKS" }, { 0x0012E3, "Agat-RT, Ltd.", "AGAT-RT" }, { 0x0012E4, "ZIEHL industrie-electronik GmbH + Co KG", "ZIEHL-INDUSTRIE-ELECTRONIK-+" }, { 0x0012E5, "Time America, Inc.", "TIME-AMERICA" }, { 0x0012E6, "SPECTEC COMPUTER CO., LTD.", "SPECTEC" }, { 0x0012E7, "Projectek Networking Electronics Corp.", "PROJECTEK-NETWORKING-ELECTRONICS" }, { 0x0012E8, "Fraunhofer IMS", "FRAUNHOFER-IMS" }, { 0x0012E9, "Abbey Systems Ltd", "ABBEY" }, { 0x0012EA, "Trane", "TRANE" }, { 0x0012EB, "PDH Solutions, LLC", "PDH-SOLUTIONS-LLC" }, { 0x0012EC, "Movacolor b.v.", "MOVACOLOR" }, { 0x0012ED, "AVG Advanced Technologies", "AVG-ADVANCED-TECHNOLOGIES" }, { 0x0012EE, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x0012EF, "OneAccess SA", "ONEACCESS" }, { 0x0012F0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0012F1, "IFOTEC", "IFOTEC" }, { 0x0012F2, "Brocade Communications Systems, Inc", "BROCADE-COMMUNICATION" }, { 0x0012F3, "connectBlue AB", "CONNECTBLUE-AB" }, { 0x0012F4, "Belco International Co.,Ltd.", "BELCO" }, { 0x0012F5, "Imarda New Zealand Limited", "IMARDA-NEW-ZEALAND" }, { 0x0012F6, "MDK CO.,LTD.", "MDK" }, { 0x0012F7, "Xiamen Xinglian Electronics Co., Ltd.", "XIAMEN-XINGLIAN-ELECTRONICS" }, { 0x0012F8, "WNI Resources, LLC", "WNI-RESOURCES-LLC" }, { 0x0012F9, "URYU SEISAKU, LTD.", "URYU-SEISAKU" }, { 0x0012FA, "THX LTD", "THX" }, { 0x0012FB, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x0012FC, "PLANET System Co.,LTD", "PLANET-SYSTEM" }, { 0x0012FD, "OPTIMUS IC S.A.", "OPTIMUS-IC" }, { 0x0012FE, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x0012FF, "Lely Industries N.V.", "LELY-INDUSTRIES-N-V" }, { 0x001300, "IT-FACTORY, INC.", "IT-FACTORY" }, { 0x001301, "IronGate S.L.", "IRONGATE-S-L" }, { 0x001302, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001303, "GateConnect", "GATECONNECT" }, { 0x001304, "Flaircomm Technologies Co. LTD", "FLAIRCOMM-TECHNOLOGIES" }, { 0x001305, "Epicom, Inc.", "EPICOM" }, { 0x001306, "Always On Wireless", "ALWAYS-ON-WIRELESS" }, { 0x001307, "Paravirtual Corporation", "PARAVIRTUAL" }, { 0x001308, "Nuvera Fuel Cells", "NUVERA-FUEL-CELLS" }, { 0x001309, "Ocean Broadband Networks", "OCEAN-BROADBAND-NETWORKS" }, { 0x00130A, "Nortel", "NORTEL" }, { 0x00130B, "Mextal B.V.", "MEXTAL" }, { 0x00130C, "HF System Corporation", "HF-SYSTEM" }, { 0x00130D, "GALILEO AVIONICA", "GALILEO-AVIONICA" }, { 0x00130E, "Focusrite Audio Engineering Limited", "FOCUSRITE-AUDIO-ENGINEERING" }, { 0x00130F, "EGEMEN Bilgisayar Muh San ve Tic LTD STI", "EGEMEN-BILGISAYAR-MUH-SAN-VE-TIC-STI" }, { 0x001310, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001311, "ARRIS International", "ARRIS" }, { 0x001312, "Amedia Networks Inc.", "AMEDIA-NETWORKS" }, { 0x001313, "GuangZhou Post & Telecom Equipment ltd", "GUANGZHOU-POST-TELECOM-EQUIPMENT" }, { 0x001314, "Asiamajor Inc.", "ASIAMAJOR" }, { 0x001315, "SONY Computer Entertainment inc,", "SONY-ENTERTAINMENT" }, { 0x001316, "L-S-B Broadcast Technologies GmbH", "L-S-B-BROADCAST-TECHNOLOGIES" }, { 0x001317, "GN Netcom as", "GN-NETCOM-AS" }, { 0x001318, "DGSTATION Co., Ltd.", "DGSTATION" }, { 0x001319, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00131A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00131B, "BeCell Innovations Corp.", "BECELL-INNOVATIONS" }, { 0x00131C, "LiteTouch, Inc.", "LITETOUCH" }, { 0x00131D, "Scanvaegt International A/S", "SCANVAEGT-A/S" }, { 0x00131E, "Peiker acustic GmbH & Co. KG", "PEIKER-ACUSTIC" }, { 0x00131F, "NxtPhase T&D, Corp.", "NXTPHASE-T-D" }, { 0x001320, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001321, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001322, "DAQ Electronics, Inc.", "DAQ-ELECTRONICS" }, { 0x001323, "Cap Co., Ltd.", "CAP" }, { 0x001324, "Schneider Electric Ultra Terminal", "SCHNEIDER-ELECTRIC-ULTRA-TERMINAL" }, { 0x001325, "Cortina Systems Inc", "CORTINA" }, { 0x001326, "ECM Systems Ltd", "ECM" }, { 0x001327, "Data Acquisitions limited", "DATA-ACQUISITIONS" }, { 0x001328, "Westech Korea Inc.,", "WESTECH-KOREA" }, { 0x001329, "VSST Co., LTD", "VSST" }, { 0x00132A, "Sitronics Telecom Solutions", "SITRONICS-TELECOM-SOLUTIONS" }, { 0x00132B, "Phoenix Digital", "PHOENIX-DIGITAL" }, { 0x00132C, "MAZ Brandenburg GmbH", "MAZ-BRANDENBURG" }, { 0x00132D, "iWise Communications", "IWISE-COMMUNICATION" }, { 0x00132E, "ITian Coporation", "ITIAN-COPORATION" }, { 0x00132F, "Interactek", "INTERACTEK" }, { 0x001330, "EURO PROTECTION SURVEILLANCE", "EURO-PROTECTION-SURVEILLANCE" }, { 0x001331, "CellPoint Connect", "CELLPOINT-CONNECT" }, { 0x001332, "Beijing Topsec Network Security Technology Co., Ltd.", "BEIJING-TOPSEC-NETWORK-SECURITY" }, { 0x001333, "BaudTec Corporation", "BAUDTEC" }, { 0x001334, "Arkados, Inc.", "ARKADOS" }, { 0x001335, "VS Industry Berhad", "VS-INDUSTRY-BERHAD" }, { 0x001336, "Tianjin 712 Communication Broadcasting co., ltd.", "TIANJIN-712-COMMUNICATION-BROADCASTING" }, { 0x001337, "Orient Power Home Network Ltd.", "ORIENT-POWER-HOME-NETWORK" }, { 0x001338, "FRESENIUS-VIAL", "FRESENIUS-VIAL" }, { 0x001339, "CCV Deutschland GmbH", "CCV-DEUTSCHLAND" }, { 0x00133A, "VadaTech Inc.", "VADATECH" }, { 0x00133B, "Speed Dragon Multimedia Limited", "SPEED-DRAGON-MULTIMEDIA" }, { 0x00133C, "QUINTRON SYSTEMS INC.", "QUINTRON" }, { 0x00133D, "Micro Memory Curtiss Wright Co", "MICRO-MEMORY-CURTISS-WRIGHT" }, { 0x00133E, "MetaSwitch", "METASWITCH" }, { 0x00133F, "Eppendorf Instrumente GmbH", "EPPENDORF-INSTRUMENTE" }, { 0x001340, "AD.EL s.r.l.", "AD-EL-S-R-L" }, { 0x001341, "Shandong New Beiyang Information Technology Co.,Ltd", "SHANDONG-NEW-BEIYANG-INFORMATION" }, { 0x001342, "Vision Research, Inc.", "VISION-RESEARCH" }, { 0x001343, "Matsushita Electronic Components (Europe) GmbH", "MATSUSHITA-COMPONENTS-EUROPE" }, { 0x001344, "Fargo Electronics Inc.", "FARGO-ELECTRONICS" }, { 0x001345, "Eaton Corporation", "EATON" }, { 0x001346, "D-Link Corporation", "D-LINK" }, { 0x001347, "BlueTree Wireless Data Inc.", "BLUETREE-WIRELESS-DATA" }, { 0x001348, "Artila Electronics Co., Ltd.", "ARTILA-ELECTRONICS" }, { 0x001349, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x00134A, "Engim, Inc.", "ENGIM" }, { 0x00134B, "ToGoldenNet Technology Inc.", "TOGOLDENNET" }, { 0x00134C, "YDT Technology International", "YDT" }, { 0x00134D, "Inepro BV", "INEPRO" }, { 0x00134E, "Valox Systems, Inc.", "VALOX" }, { 0x00134F, "Tranzeo Wireless Technologies Inc.", "TRANZEO-WIRELESS-TECHNOLOGIES" }, { 0x001350, "Silver Spring Networks, Inc", "SILVER-SPRING-NETWORKS" }, { 0x001351, "Niles Audio Corporation", "NILES-AUDIO" }, { 0x001352, "Naztec, Inc.", "NAZTEC" }, { 0x001353, "HYDAC Filtertechnik GMBH", "HYDAC-FILTERTECHNIK" }, { 0x001354, "Zcomax Technologies, Inc.", "ZCOMAX-TECHNOLOGIES" }, { 0x001355, "TOMEN Cyber-business Solutions, Inc.", "TOMEN-CYBER-BUSINESS-SOLUTIONS" }, { 0x001356, "FLIR Radiation Inc", "FLIR-RADIATION" }, { 0x001357, "Soyal Technology Co., Ltd.", "SOYAL" }, { 0x001358, "Realm Systems, Inc.", "REALM" }, { 0x001359, "ProTelevision Technologies A/S", "PROTELEVISION-TECHNOLOGIES-A/S" }, { 0x00135A, "Project T&E Limited", "PROJECT-T-E" }, { 0x00135B, "PanelLink Cinema, LLC", "PANELLINK-CINEMA-LLC" }, { 0x00135C, "OnSite Systems, Inc.", "ONSITE" }, { 0x00135D, "NTTPC Communications, Inc.", "NTTPC-COMMUNICATION" }, { 0x00135E, "EAB/RWI/K", "EAB/RWI/K" }, { 0x00135F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001360, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001361, "Biospace Co., Ltd.", "BIOSPACE" }, { 0x001362, "ShinHeung Precision Co., Ltd.", "SHINHEUNG-PRECISION" }, { 0x001363, "Verascape, Inc.", "VERASCAPE" }, { 0x001364, "Paradigm Technology Inc..", "PARADIGM" }, { 0x001365, "Nortel", "NORTEL" }, { 0x001366, "Neturity Technologies Inc.", "NETURITY-TECHNOLOGIES" }, { 0x001367, "Narayon. Co., Ltd.", "NARAYON" }, { 0x001368, "Saab Danmark A/S", "SAAB-DANMARK-A/S" }, { 0x001369, "Honda Electron Co., LED.", "HONDA-ELECTRON-LED" }, { 0x00136A, "Hach Lange Sarl", "HACH-LANGE-SARL" }, { 0x00136B, "E-TEC", "E-TEC" }, { 0x00136C, "TomTom", "TOMTOM" }, { 0x00136D, "Tentaculus AB", "TENTACULUS-AB" }, { 0x00136E, "Techmetro Corp.", "TECHMETRO" }, { 0x00136F, "PacketMotion, Inc.", "PACKETMOTION" }, { 0x001370, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001371, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001372, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x001373, "BLwave Electronics Co., Ltd", "BLWAVE-ELECTRONICS" }, { 0x001374, "Atheros Communications, Inc.", "ATHEROS-COMMUNICATION" }, { 0x001375, "American Security Products Co.", "AMERICAN-SECURITY-PRODUCTS" }, { 0x001376, "Tabor Electronics Ltd.", "TABOR-ELECTRONICS" }, { 0x001377, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x001378, "Qsan Technology, Inc.", "QSAN" }, { 0x001379, "PONDER INFORMATION INDUSTRIES LTD.", "PONDER-INFORMATION-INDUSTRIES" }, { 0x00137A, "Netvox Technology Co., Ltd.", "NETVOX" }, { 0x00137B, "Movon Corporation", "MOVON" }, { 0x00137C, "Kaicom co., Ltd.", "KAICOM" }, { 0x00137D, "Dynalab, Inc.", "DYNALAB" }, { 0x00137E, "CorEdge Networks, Inc.", "COREDGE-NETWORKS" }, { 0x00137F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001380, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001381, "CHIPS & Systems, Inc.", "CHIPS" }, { 0x001382, "Cetacea Networks Corporation", "CETACEA-NETWORKS" }, { 0x001383, "Application Technologies and Engineering Research Laboratory", "APPLICATION-TECHNOLOGIES-AND-ENGINEERING-RESEARCH-LABORATORY" }, { 0x001384, "Advanced Motion Controls", "ADVANCED-MOTION-CONTROLS" }, { 0x001385, "Add-On Technology Co., LTD.", "ADD-ON" }, { 0x001386, "ABB Inc./Totalflow", "ABB-/TOTALFLOW" }, { 0x001387, "27M Technologies AB", "27M-TECHNOLOGIES-AB" }, { 0x001388, "WiMedia Alliance", "WIMEDIA-ALLIANCE" }, { 0x001389, "Redes de Telefonía Móvil S.A.", "REDES-DE-TELEFONíA-MóVIL" }, { 0x00138A, "QINGDAO GOERTEK ELECTRONICS CO.,LTD.", "QINGDAO-GOERTEK-ELECTRONICS" }, { 0x00138B, "Phantom Technologies LLC", "PHANTOM-TECHNOLOGIES-LLC" }, { 0x00138C, "Kumyoung.Co.Ltd", "KUMYOUNG" }, { 0x00138D, "Kinghold", "KINGHOLD" }, { 0x00138E, "FOAB Elektronik AB", "FOAB-ELEKTRONIK-AB" }, { 0x00138F, "Asiarock Incorporation", "ASIAROCK-INCORPORATION" }, { 0x001390, "Termtek Computer Co., Ltd", "TERMTEK" }, { 0x001391, "OUEN CO.,LTD.", "OUEN" }, { 0x001392, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001393, "Panta Systems, Inc.", "PANTA" }, { 0x001394, "Infohand Co.,Ltd", "INFOHAND" }, { 0x001395, "congatec AG", "CONGATEC" }, { 0x001396, "Acbel Polytech Inc.", "ACBEL-POLYTECH" }, { 0x001397, "Oracle Corporation", "ORACLE" }, { 0x001398, "TrafficSim Co.,Ltd", "TRAFFICSIM" }, { 0x001399, "STAC Corporation.", "STAC" }, { 0x00139A, "K-ubique ID Corp.", "K-UBIQUE-ID" }, { 0x00139B, "ioIMAGE Ltd.", "IOIMAGE" }, { 0x00139C, "Exavera Technologies, Inc.", "EXAVERA-TECHNOLOGIES" }, { 0x00139D, "Marvell Hispana S.L.", "MARVELL-HISPANA-S-L" }, { 0x00139E, "Ciara Technologies Inc.", "CIARA-TECHNOLOGIES" }, { 0x00139F, "Electronics Design Services, Co., Ltd.", "ELECTRONICS-DESIGN-SERVICES" }, { 0x0013A0, "ALGOSYSTEM Co., Ltd.", "ALGOSYSTEM" }, { 0x0013A1, "Crow Electronic Engeneering", "CROW-ENGENEERING" }, { 0x0013A2, "MaxStream, Inc", "MAXSTREAM" }, { 0x0013A3, "Siemens Com CPE Devices", "SIEMENS-COM-CPE-DEVICES" }, { 0x0013A4, "KeyEye Communications", "KEYEYE-COMMUNICATION" }, { 0x0013A5, "General Solutions, LTD.", "GENERAL-SOLUTIONS" }, { 0x0013A6, "Extricom Ltd", "EXTRICOM" }, { 0x0013A7, "BATTELLE MEMORIAL INSTITUTE", "BATTELLE-MEMORIAL-INSTITUTE" }, { 0x0013A8, "Tanisys Technology", "TANISYS" }, { 0x0013A9, "Sony Corporation", "SONY" }, { 0x0013AA, "ALS & TEC Ltd.", "ALS-TEC" }, { 0x0013AB, "Telemotive AG", "TELEMOTIVE" }, { 0x0013AC, "Sunmyung Electronics Co., LTD", "SUNMYUNG-ELECTRONICS" }, { 0x0013AD, "Sendo Ltd", "SENDO" }, { 0x0013AE, "Radiance Technologies, Inc.", "RADIANCE-TECHNOLOGIES" }, { 0x0013AF, "NUMA Technology,Inc.", "NUMA" }, { 0x0013B0, "Jablotron", "JABLOTRON" }, { 0x0013B1, "Intelligent Control Systems (Asia) Pte Ltd", "INTELLIGENT-CONTROL-ASIA-PTE" }, { 0x0013B2, "Carallon Limited", "CARALLON" }, { 0x0013B3, "Ecom Communications Technology Co., Ltd.", "ECOM-COMMUNICATION" }, { 0x0013B4, "Appear TV", "APPEAR-TV" }, { 0x0013B5, "Wavesat", "WAVESAT" }, { 0x0013B6, "Sling Media, Inc.", "SLING-MEDIA" }, { 0x0013B7, "Scantech ID", "SCANTECH-ID" }, { 0x0013B8, "RyCo Electronic Systems Limited", "RYCO" }, { 0x0013B9, "BM SPA", "BM-SPA" }, { 0x0013BA, "ReadyLinks Inc", "READYLINKS" }, { 0x0013BB, "Smartvue Corporation", "SMARTVUE" }, { 0x0013BC, "Artimi Ltd", "ARTIMI" }, { 0x0013BD, "HYMATOM SA", "HYMATOM" }, { 0x0013BE, "Virtual Conexions", "VIRTUAL-CONEXIONS" }, { 0x0013BF, "Media System Planning Corp.", "MEDIA-SYSTEM-PLANNING" }, { 0x0013C0, "Trix Tecnologia Ltda.", "TRIX-TECNOLOGIA-LTDA" }, { 0x0013C1, "Asoka USA Corporation", "ASOKA-USA" }, { 0x0013C2, "WACOM Co.,Ltd", "WACOM" }, { 0x0013C3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0013C4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0013C5, "LIGHTRON FIBER-OPTIC DEVICES INC.", "LIGHTRON-FIBER-OPTIC-DEVICES" }, { 0x0013C6, "OpenGear, Inc", "OPENGEAR" }, { 0x0013C7, "IONOS Co.,Ltd.", "IONOS" }, { 0x0013C8, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x0013C9, "Beyond Achieve Enterprises Ltd.", "BEYOND-ACHIEVE-ENTERPRISES" }, { 0x0013CA, "Pico Digital", "PICO-DIGITAL" }, { 0x0013CB, "Zenitel Norway AS", "ZENITEL-NORWAY-AS" }, { 0x0013CC, "Tall Maple Systems", "TALL-MAPLE" }, { 0x0013CD, "MTI co. LTD", "MTI" }, { 0x0013CE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0013CF, "4Access Communications", "4ACCESS-COMMUNICATION" }, { 0x0013D0, "t+ Medical Ltd", "T+-MEDICAL" }, { 0x0013D1, "KIRK telecom A/S", "KIRK-TELECOM-A/S" }, { 0x0013D2, "PAGE IBERICA, S.A.", "PAGE-IBERICA" }, { 0x0013D3, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0013D4, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0013D5, "RuggedCom", "RUGGEDCOM" }, { 0x0013D6, "TII NETWORK TECHNOLOGIES, INC.", "TII-NETWORK-TECHNOLOGIES" }, { 0x0013D7, "SPIDCOM Technologies SA", "SPIDCOM-TECHNOLOGIES" }, { 0x0013D8, "Princeton Instruments", "PRINCETON-INSTRUMENTS" }, { 0x0013D9, "Matrix Product Development, Inc.", "MATRIX-PRODUCT-DEVELOPMENT" }, { 0x0013DA, "Diskware Co., Ltd", "DISKWARE" }, { 0x0013DB, "SHOEI Electric Co.,Ltd", "SHOEI-ELECTRIC" }, { 0x0013DC, "IBTEK INC.", "IBTEK" }, { 0x0013DD, "Abbott Diagnostics", "ABBOTT-DIAGNOSTICS" }, { 0x0013DE, "Adapt4, LLC", "ADAPT4-LLC" }, { 0x0013DF, "Ryvor Corp.", "RYVOR" }, { 0x0013E0, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0013E1, "Iprobe AB", "IPROBE-AB" }, { 0x0013E2, "GeoVision Inc.", "GEOVISION" }, { 0x0013E3, "CoVi Technologies, Inc.", "COVI-TECHNOLOGIES" }, { 0x0013E4, "YANGJAE SYSTEMS CORP.", "YANGJAE" }, { 0x0013E5, "TENOSYS, INC.", "TENOSYS" }, { 0x0013E6, "Technolution", "TECHNOLUTION" }, { 0x0013E7, "Halcro", "HALCRO" }, { 0x0013E8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0013E9, "VeriWave, Inc.", "VERIWAVE" }, { 0x0013EA, "Kamstrup A/S", "KAMSTRUP-A/S" }, { 0x0013EB, "Sysmaster Corporation", "SYSMASTER" }, { 0x0013EC, "Sunbay Software AG", "SUNBAY-SOFTWARE" }, { 0x0013ED, "PSIA", "PSIA" }, { 0x0013EE, "JBX Designs Inc.", "JBX-DESIGNS" }, { 0x0013EF, "Kingjon Digital Technology Co.,Ltd", "KINGJON-DIGITAL" }, { 0x0013F0, "Wavefront Semiconductor", "WAVEFRONT-SEMICONDUCTOR" }, { 0x0013F1, "AMOD Technology Co., Ltd.", "AMOD" }, { 0x0013F2, "Klas Ltd", "KLAS" }, { 0x0013F3, "Giga-byte Communications Inc.", "GIGA-BYTE-COMMUNICATION" }, { 0x0013F4, "Psitek (Pty) Ltd", "PSITEK-PTY" }, { 0x0013F5, "Akimbi Systems", "AKIMBI" }, { 0x0013F6, "Cintech", "CINTECH" }, { 0x0013F7, "SMC Networks, Inc.", "SMC-NETWORKS" }, { 0x0013F8, "Dex Security Solutions", "DEX-SECURITY-SOLUTIONS" }, { 0x0013F9, "Cavera Systems", "CAVERA" }, { 0x0013FA, "LifeSize Communications, Inc", "LIFESIZE-COMMUNICATION" }, { 0x0013FB, "RKC INSTRUMENT INC.", "RKC-INSTRUMENT" }, { 0x0013FC, "SiCortex, Inc", "SICORTEX" }, { 0x0013FD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0013FE, "GRANDTEC ELECTRONIC CORP.", "GRANDTEC" }, { 0x0013FF, "Dage-MTI of MC, Inc.", "DAGE-MTI-OF-MC" }, { 0x001400, "MINERVA KOREA CO., LTD", "MINERVA-KOREA" }, { 0x001401, "Rivertree Networks Corp.", "RIVERTREE-NETWORKS" }, { 0x001402, "kk-electronic a/s", "KK--A/S" }, { 0x001403, "Renasis, LLC", "RENASIS-LLC" }, { 0x001404, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001405, "OpenIB, Inc.", "OPENIB" }, { 0x001406, "Go Networks", "GO-NETWORKS" }, { 0x001407, "Sperian Protection Instrumentation", "SPERIAN-PROTECTION-INSTRUMENTATION" }, { 0x001408, "Eka Systems Inc.", "EKA" }, { 0x001409, "MAGNETI MARELLI S.E. S.p.A.", "MAGNETI-MARELLI-S-E-S-P-A" }, { 0x00140A, "WEPIO Co., Ltd.", "WEPIO" }, { 0x00140B, "FIRST INTERNATIONAL COMPUTER, INC.", "FIRST" }, { 0x00140C, "GKB CCTV CO., LTD.", "GKB-CCTV" }, { 0x00140D, "Nortel", "NORTEL" }, { 0x00140E, "Nortel", "NORTEL" }, { 0x00140F, "Federal State Unitary Enterprise Leningrad R&D Institute of", "FEDERAL-STATE-UNITARY-LENINGRAD-R-D-INSTITUTE-OF" }, { 0x001410, "Suzhou Keda Technology CO.,Ltd", "SUZHOU-KEDA" }, { 0x001411, "Deutschmann Automation GmbH & Co. KG", "DEUTSCHMANN-AUTOMATION" }, { 0x001412, "S-TEC electronics AG", "S-TEC-ELECTRONICS" }, { 0x001413, "Trebing & Himstedt Prozeßautomation GmbH & Co. KG", "TREBING-HIMSTEDT-PROZEßAUTOMATION" }, { 0x001414, "Jumpnode Systems LLC.", "JUMPNODE-LLC" }, { 0x001415, "Intec Automation Inc.", "INTEC-AUTOMATION" }, { 0x001416, "Scosche Industries, Inc.", "SCOSCHE-INDUSTRIES" }, { 0x001417, "RSE Informations Technologie GmbH", "RSE-INFORMATIONS-TECHNOLOGIE" }, { 0x001418, "C4Line", "C4LINE" }, { 0x001419, "SIDSA", "SIDSA" }, { 0x00141A, "DEICY CORPORATION", "DEICY" }, { 0x00141B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00141C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00141D, "LTi DRIVES GmbH", "LTI-DRIVES" }, { 0x00141E, "P.A. Semi, Inc.", "P-A-SEMI" }, { 0x00141F, "SunKwang Electronics Co., Ltd", "SUNKWANG-ELECTRONICS" }, { 0x001420, "G-Links networking company", "G-LINKS-NETWORKING-COMPANY" }, { 0x001421, "Total Wireless Technologies Pte. Ltd.", "TOTAL-WIRELESS-TECHNOLOGIES-PTE" }, { 0x001422, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x001423, "J-S Co. NEUROCOM", "J-S-NEUROCOM" }, { 0x001424, "Merry Electrics CO., LTD.", "MERRY-ELECTRICS" }, { 0x001425, "Galactic Computing Corp.", "GALACTIC-COMPUTING" }, { 0x001426, "NL Technology", "NL" }, { 0x001427, "JazzMutant", "JAZZMUTANT" }, { 0x001428, "Vocollect, Inc", "VOCOLLECT" }, { 0x001429, "V Center Technologies Co., Ltd.", "V-CENTER-TECHNOLOGIES" }, { 0x00142A, "Elitegroup Computer System Co., Ltd", "ELITEGROUP-SYSTEM" }, { 0x00142B, "Edata Communication Inc.", "EDATA-COMMUNICATION" }, { 0x00142C, "Koncept International, Inc.", "KONCEPT" }, { 0x00142D, "Toradex AG", "TORADEX" }, { 0x00142E, "77 Elektronika Kft.", "77-ELEKTRONIKA-KFT" }, { 0x00142F, "WildPackets", "WILDPACKETS" }, { 0x001430, "ViPowER, Inc", "VIPOWER" }, { 0x001431, "PDL Electronics Ltd", "PDL-ELECTRONICS" }, { 0x001432, "Tarallax Wireless, Inc.", "TARALLAX-WIRELESS" }, { 0x001433, "Empower Technologies(Canada) Inc.", "EMPOWER-TECHNOLOGIES-CANADA" }, { 0x001434, "Keri Systems, Inc", "KERI" }, { 0x001435, "CityCom Corp.", "CITYCOM" }, { 0x001436, "Qwerty Elektronik AB", "QWERTY-ELEKTRONIK-AB" }, { 0x001437, "GSTeletech Co.,Ltd.", "GSTELETECH" }, { 0x001438, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001439, "Blonder Tongue Laboratories, Inc.", "BLONDER-TONGUE-LABORATORIES" }, { 0x00143A, "RAYTALK INTERNATIONAL SRL", "RAYTALK-SRL" }, { 0x00143B, "Sensovation AG", "SENSOVATION" }, { 0x00143C, "Rheinmetall Canada Inc.", "RHEINMETALL-CANADA" }, { 0x00143D, "Aevoe Inc.", "AEVOE" }, { 0x00143E, "AirLink Communications, Inc.", "AIRLINK-COMMUNICATION" }, { 0x00143F, "Hotway Technology Corporation", "HOTWAY" }, { 0x001440, "ATOMIC Corporation", "ATOMIC" }, { 0x001441, "Innovation Sound Technology Co., LTD.", "INNOVATION-SOUND" }, { 0x001442, "ATTO CORPORATION", "ATTO" }, { 0x001443, "Consultronics Europe Ltd", "CONSULTRONICS-EUROPE" }, { 0x001444, "Grundfos Holding", "GRUNDFOS-HOLDING" }, { 0x001445, "Telefon-Gradnja d.o.o.", "TELEFON-GRADNJA-D-O-O" }, { 0x001446, "SuperVision Solutions LLC", "SUPERVISION-SOLUTIONS-LLC" }, { 0x001447, "BOAZ Inc.", "BOAZ" }, { 0x001448, "Inventec Multimedia & Telecom Corporation", "INVENTEC-MULTIMEDIA-TELECOM" }, { 0x001449, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x00144A, "Taiwan Thick-Film Ind. Corp.", "TAIWAN-THICK-FILM-IND" }, { 0x00144B, "Hifn, Inc.", "HIFN" }, { 0x00144C, "General Meters Corp.", "GENERAL-METERS" }, { 0x00144D, "Intelligent Systems", "INTELLIGENT" }, { 0x00144E, "SRISA", "SRISA" }, { 0x00144F, "Oracle Corporation", "ORACLE" }, { 0x001450, "Heim Systems GmbH", "HEIM" }, { 0x001451, "Apple", "APPLE" }, { 0x001452, "CALCULEX,INC.", "CALCULEX" }, { 0x001453, "ADVANTECH TECHNOLOGIES CO.,LTD", "ADVANTECH-TECHNOLOGIES" }, { 0x001454, "Symwave", "SYMWAVE" }, { 0x001455, "Coder Electronics Corporation", "CODER-ELECTRONICS" }, { 0x001456, "Edge Products", "EDGE-PRODUCTS" }, { 0x001457, "T-VIPS AS", "T-VIPS-AS" }, { 0x001458, "HS Automatic ApS", "HS-AUTOMATIC-APS" }, { 0x001459, "Moram Co., Ltd.", "MORAM" }, { 0x00145A, "Neratec Solutions AG", "NERATEC-SOLUTIONS" }, { 0x00145B, "SeekerNet Inc.", "SEEKERNET" }, { 0x00145C, "Intronics B.V.", "INTRONICS" }, { 0x00145D, "WJ Communications, Inc.", "WJ-COMMUNICATION" }, { 0x00145E, "IBM Corp", "IBM" }, { 0x00145F, "ADITEC CO. LTD", "ADITEC" }, { 0x001460, "Kyocera Wireless Corp.", "KYOCERA-WIRELESS" }, { 0x001461, "CORONA CORPORATION", "CORONA" }, { 0x001462, "Digiwell Technology, inc", "DIGIWELL" }, { 0x001463, "IDCS N.V.", "IDCS-N-V" }, { 0x001464, "Cryptosoft", "CRYPTOSOFT" }, { 0x001465, "Novo Nordisk A/S", "NOVO-NORDISK-A/S" }, { 0x001466, "Kleinhenz Elektronik GmbH", "KLEINHENZ-ELEKTRONIK" }, { 0x001467, "ArrowSpan Inc.", "ARROWSPAN" }, { 0x001468, "CelPlan International, Inc.", "CELPLAN" }, { 0x001469, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00146A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00146B, "Anagran, Inc.", "ANAGRAN" }, { 0x00146C, "Netgear Inc.", "NETGEAR" }, { 0x00146D, "RF Technologies", "RF-TECHNOLOGIES" }, { 0x00146E, "H. Stoll GmbH & Co. KG", "H-STOLL" }, { 0x00146F, "Kohler Co", "KOHLER" }, { 0x001470, "Prokom Software SA", "PROKOM-SOFTWARE" }, { 0x001471, "Eastern Asia Technology Limited", "EASTERN-ASIA" }, { 0x001472, "China Broadband Wireless IP Standard Group", "CHINA-BROADBAND-WIRELESS-IP-STANDARD-GROUP" }, { 0x001473, "Bookham Inc", "BOOKHAM" }, { 0x001474, "K40 Electronics", "K40-ELECTRONICS" }, { 0x001475, "Wiline Networks, Inc.", "WILINE-NETWORKS" }, { 0x001476, "MultiCom Industries Limited", "MULTICOM-INDUSTRIES" }, { 0x001477, "Nertec Inc.", "NERTEC" }, { 0x001478, "ShenZhen TP-LINK Technologies Co., Ltd.", "SHENZHEN-TP-LINK-TECHNOLOGIES" }, { 0x001479, "NEC Magnus Communications,Ltd.", "NEC-MAGNUS-COMMUNICATION" }, { 0x00147A, "Eubus GmbH", "EUBUS" }, { 0x00147B, "Iteris, Inc.", "ITERIS" }, { 0x00147C, "3Com Ltd", "3COM" }, { 0x00147D, "Aeon Digital International", "AEON-DIGITAL" }, { 0x00147E, "InnerWireless", "INNERWIRELESS" }, { 0x00147F, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x001480, "Hitachi-LG Data Storage Korea, Inc", "HITACHI-LG-DATA-STORAGE-KOREA" }, { 0x001481, "Multilink Inc", "MULTILINK" }, { 0x001482, "Aurora Networks", "AURORA-NETWORKS" }, { 0x001483, "eXS Inc.", "EXS" }, { 0x001484, "Cermate Technologies Inc.", "CERMATE-TECHNOLOGIES" }, { 0x001485, "Giga-Byte", "GIGA-BYTE" }, { 0x001486, "Echo Digital Audio Corporation", "ECHO-DIGITAL-AUDIO" }, { 0x001487, "American Technology Integrators", "AMERICAN-INTEGRATORS" }, { 0x001488, "Akorri", "AKORRI" }, { 0x001489, "B15402100 - JANDEI, S.L.", "B15402100---JANDEI-S-L" }, { 0x00148A, "Elin Ebg Traction Gmbh", "ELIN-EBG-TRACTION" }, { 0x00148B, "Globo Electronic GmbH & Co. KG", "GLOBO" }, { 0x00148C, "Fortress Technologies", "FORTRESS-TECHNOLOGIES" }, { 0x00148D, "Cubic Defense Simulation Systems", "CUBIC-DEFENSE-SIMULATION" }, { 0x00148E, "Tele Power Inc.", "TELE-POWER" }, { 0x00148F, "Protronic (Far East) Ltd.", "PROTRONIC-FAR-EAST" }, { 0x001490, "ASP Corporation", "ASP" }, { 0x001491, "Daniels Electronics Ltd. dbo Codan Rado Communications", "DANIELS-ELECTRONICS-DBO-CODAN-RADO-COMMUNICATION" }, { 0x001492, "Liteon, Mobile Media Solution SBU", "LITEON-MOBILE-MEDIA-SOLUTION-SBU" }, { 0x001493, "Systimax Solutions", "SYSTIMAX-SOLUTIONS" }, { 0x001494, "ESU AG", "ESU" }, { 0x001495, "2Wire, Inc.", "2WIRE" }, { 0x001496, "Phonic Corp.", "PHONIC" }, { 0x001497, "ZHIYUAN Eletronics co.,ltd.", "ZHIYUAN-ELETRONICS" }, { 0x001498, "Viking Design Technology", "VIKING-DESIGN" }, { 0x001499, "Helicomm Inc", "HELICOMM" }, { 0x00149A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00149B, "Nokota Communications, LLC", "NOKOTA-COMMUNICATION-LLC" }, { 0x00149C, "HF Company", "HF-COMPANY" }, { 0x00149D, "Sound ID Inc.", "SOUND-ID" }, { 0x00149E, "UbONE Co., Ltd", "UBONE" }, { 0x00149F, "System and Chips, Inc.", "SYSTEM-AND-CHIPS" }, { 0x0014A0, "Accsense, Inc.", "ACCSENSE" }, { 0x0014A1, "Synchronous Communication Corp", "SYNCHRONOUS-COMMUNICATION" }, { 0x0014A2, "Core Micro Systems Inc.", "CORE-MICRO" }, { 0x0014A3, "Vitelec BV", "VITELEC" }, { 0x0014A4, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0014A5, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x0014A6, "Teranetics, Inc.", "TERANETICS" }, { 0x0014A7, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0014A8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0014A9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0014AA, "Ashly Audio, Inc.", "ASHLY-AUDIO" }, { 0x0014AB, "Senhai Electronic Technology Co., Ltd.", "SENHAI" }, { 0x0014AC, "Bountiful WiFi", "BOUNTIFUL-WIFI" }, { 0x0014AD, "Gassner Wiege- und Meßtechnik GmbH", "GASSNER-WIEGE--UND-MEßTECHNIK" }, { 0x0014AE, "Wizlogics Co., Ltd.", "WIZLOGICS" }, { 0x0014AF, "Datasym POS Inc.", "DATASYM-POS" }, { 0x0014B0, "Naeil Community", "NAEIL-COMMUNITY" }, { 0x0014B1, "Avitec AB", "AVITEC-AB" }, { 0x0014B2, "mCubelogics Corporation", "MCUBELOGICS" }, { 0x0014B3, "CoreStar International Corp", "CORESTAR" }, { 0x0014B4, "General Dynamics United Kingdom Ltd", "GENERAL-DYNAMICS-UNITED-KINGDOM" }, { 0x0014B5, "PHYSIOMETRIX,INC", "PHYSIOMETRIX" }, { 0x0014B6, "Enswer Technology Inc.", "ENSWER" }, { 0x0014B7, "AR Infotek Inc.", "AR-INFOTEK" }, { 0x0014B8, "Hill-Rom", "HILL-ROM" }, { 0x0014B9, "MSTAR SEMICONDUCTOR", "MSTAR-SEMICONDUCTOR" }, { 0x0014BA, "Carvers SA de CV", "CARVERS-DE-CV" }, { 0x0014BB, "Open Interface North America", "OPEN-INTERFACE-NORTH-AMERICA" }, { 0x0014BC, "SYNECTIC TELECOM EXPORTS PVT. LTD.", "SYNECTIC-TELECOM-EXPORTS-PVT" }, { 0x0014BD, "incNETWORKS, Inc", "INCNETWORKS" }, { 0x0014BE, "Wink communication technology CO.LTD", "WINK-COMMUNICATION" }, { 0x0014BF, "Cisco-Linksys LLC", "CISCO-LINKSYS-LLC" }, { 0x0014C0, "Symstream Technology Group Ltd", "SYMSTREAM-GROUP" }, { 0x0014C1, "U.S. Robotics Corporation", "U-S-ROBOTICS" }, { 0x0014C2, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0014C3, "Seagate Technology", "SEAGATE" }, { 0x0014C4, "Vitelcom Mobile Technology", "VITELCOM-MOBILE" }, { 0x0014C5, "Alive Technologies Pty Ltd", "ALIVE-TECHNOLOGIES-PTY" }, { 0x0014C6, "Quixant Ltd", "QUIXANT" }, { 0x0014C7, "Nortel", "NORTEL" }, { 0x0014C8, "Contemporary Research Corp", "CONTEMPORARY-RESEARCH" }, { 0x0014C9, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x0014CA, "Key Radio Systems Limited", "KEY-RADIO" }, { 0x0014CB, "LifeSync Corporation", "LIFESYNC" }, { 0x0014CC, "Zetec, Inc.", "ZETEC" }, { 0x0014CD, "DigitalZone Co., Ltd.", "DIGITALZONE" }, { 0x0014CE, "NF CORPORATION", "NF" }, { 0x0014CF, "INVISIO Communications", "INVISIO-COMMUNICATION" }, { 0x0014D0, "BTI Systems Inc.", "BTI" }, { 0x0014D1, "TRENDnet", "TRENDNET" }, { 0x0014D2, "Kyuden Technosystems Corporation", "KYUDEN-TECHNOSYSTEMS" }, { 0x0014D3, "SEPSA", "SEPSA" }, { 0x0014D4, "K Technology Corporation", "K" }, { 0x0014D5, "Datang Telecom Technology CO. , LCD,Optical Communication Br", "DATANG-TELECOM-LCD-OPTICAL-COMMUNICATION-BR" }, { 0x0014D6, "Jeongmin Electronics Co.,Ltd.", "JEONGMIN-ELECTRONICS" }, { 0x0014D7, "Datastore Technology Corp", "DATASTORE" }, { 0x0014D8, "bio-logic SA", "BIO-LOGIC" }, { 0x0014D9, "IP Fabrics, Inc.", "IP-FABRICS" }, { 0x0014DA, "Huntleigh Healthcare", "HUNTLEIGH-HEALTHCARE" }, { 0x0014DB, "Elma Trenew Electronic GmbH", "ELMA-TRENEW" }, { 0x0014DC, "Communication System Design & Manufacturing (CSDM)", "COMMUNICATION-SYSTEM-DESIGN-MANUFACTURING-CSDM" }, { 0x0014DD, "Covergence Inc.", "COVERGENCE" }, { 0x0014DE, "Sage Instruments Inc.", "SAGE-INSTRUMENTS" }, { 0x0014DF, "HI-P Tech Corporation", "HI-P-TECH" }, { 0x0014E0, "LET'S Corporation", "LET-S" }, { 0x0014E1, "Data Display AG", "DATA-DISPLAY" }, { 0x0014E2, "datacom systems inc.", "DATACOM" }, { 0x0014E3, "mm-lab GmbH", "MM-LAB" }, { 0x0014E4, "infinias, LLC", "INFINIAS-LLC" }, { 0x0014E5, "Alticast", "ALTICAST" }, { 0x0014E6, "AIM Infrarotmodule GmbH", "AIM-INFRAROTMODULE" }, { 0x0014E7, "Stolinx,. Inc", "STOLINX" }, { 0x0014E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0014E9, "Nortech International", "NORTECH" }, { 0x0014EA, "S Digm Inc. (Safe Paradigm Inc.)", "S-DIGM-SAFE-PARADIGM" }, { 0x0014EB, "AwarePoint Corporation", "AWAREPOINT" }, { 0x0014EC, "Acro Telecom", "ACRO-TELECOM" }, { 0x0014ED, "Airak, Inc.", "AIRAK" }, { 0x0014EE, "Western Digital Technologies, Inc.", "WESTERN-DIGITAL-TECHNOLOGIES" }, { 0x0014EF, "TZero Technologies, Inc.", "TZERO-TECHNOLOGIES" }, { 0x0014F0, "Business Security OL AB", "BUSINESS-SECURITY-OL-AB" }, { 0x0014F1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0014F2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0014F3, "ViXS Systems Inc", "VIXS" }, { 0x0014F4, "DekTec Digital Video B.V.", "DEKTEC-DIGITAL-VIDEO" }, { 0x0014F5, "OSI Security Devices", "OSI-SECURITY-DEVICES" }, { 0x0014F6, "Juniper Networks, Inc.", "JUNIPER-NETWORKS" }, { 0x0014F7, "CREVIS Co., LTD", "CREVIS" }, { 0x0014F8, "Scientific Atlanta", "SCIENTIFIC-ATLANTA" }, { 0x0014F9, "Vantage Controls", "VANTAGE-CONTROLS" }, { 0x0014FA, "AsGa S.A.", "ASGA" }, { 0x0014FB, "Technical Solutions Inc.", "TECHNICAL-SOLUTIONS" }, { 0x0014FC, "Extandon, Inc.", "EXTANDON" }, { 0x0014FD, "Thecus Technology Corp.", "THECUS" }, { 0x0014FE, "Artech Electronics", "ARTECH-ELECTRONICS" }, { 0x0014FF, "Precise Automation, Inc.", "PRECISE-AUTOMATION" }, { 0x001500, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001501, "LexBox", "LEXBOX" }, { 0x001502, "BETA tech", "BETA-TECH" }, { 0x001503, "PROFIcomms s.r.o.", "PROFICOMMS-S-R-O" }, { 0x001504, "GAME PLUS CO., LTD.", "GAME-PLUS" }, { 0x001505, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001506, "Neo Photonics", "NEO-PHOTONICS" }, { 0x001507, "Renaissance Learning Inc", "RENAISSANCE-LEARNING" }, { 0x001508, "Global Target Enterprise Inc", "GLOBAL-TARGET" }, { 0x001509, "Plus Technology Co., Ltd", "PLUS" }, { 0x00150A, "Sonoa Systems, Inc", "SONOA" }, { 0x00150B, "SAGE INFOTECH LTD.", "SAGE-INFOTECH" }, { 0x00150C, "AVM GmbH", "AVM" }, { 0x00150D, "Hoana Medical, Inc.", "HOANA-MEDICAL" }, { 0x00150E, "OPENBRAIN TECHNOLOGIES CO., LTD.", "OPENBRAIN-TECHNOLOGIES" }, { 0x00150F, "mingjong", "MINGJONG" }, { 0x001510, "Techsphere Co., Ltd", "TECHSPHERE" }, { 0x001511, "Data Center Systems", "DATA-CENTER" }, { 0x001512, "Zurich University of Applied Sciences", "ZURICH-UNIVERSITY-OF-APPLIED-SCIENCES" }, { 0x001513, "EFS sas", "EFS-SAS" }, { 0x001514, "Hu Zhou NAVA Networks&Electronics Ltd.", "HU-ZHOU-NAVA-NETWORKS-ELECTRONICS" }, { 0x001515, "Leipold+Co.GmbH", "LEIPOLD+" }, { 0x001516, "URIEL SYSTEMS INC.", "URIEL" }, { 0x001517, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001518, "Shenzhen 10MOONS Technology Development CO.,Ltd", "SHENZHEN-10MOONS-DEVELOPMENT" }, { 0x001519, "StoreAge Networking Technologies", "STOREAGE-NETWORKING-TECHNOLOGIES" }, { 0x00151A, "Hunter Engineering Company", "HUNTER-ENGINEERING-COMPANY" }, { 0x00151B, "Isilon Systems Inc.", "ISILON" }, { 0x00151C, "LENECO", "LENECO" }, { 0x00151D, "M2I CORPORATION", "M2I" }, { 0x00151E, "Ethernet Powerlink Standardization Group (EPSG)", "ETHERNET-POWERLINK-STANDARDIZATION-GROUP-EPSG" }, { 0x00151F, "Multivision Intelligent Surveillance (Hong Kong) Ltd", "MULTIVISION-INTELLIGENT-SURVEILLANCE-HONG-KONG" }, { 0x001520, "Radiocrafts AS", "RADIOCRAFTS-AS" }, { 0x001521, "Horoquartz", "HOROQUARTZ" }, { 0x001522, "Dea Security", "DEA-SECURITY" }, { 0x001523, "Meteor Communications Corporation", "METEOR-COMMUNICATION" }, { 0x001524, "Numatics, Inc.", "NUMATICS" }, { 0x001525, "Chamberlain Access Solutions", "CHAMBERLAIN-ACCESS-SOLUTIONS" }, { 0x001526, "Remote Technologies Inc", "REMOTE-TECHNOLOGIES" }, { 0x001527, "Balboa Instruments", "BALBOA-INSTRUMENTS" }, { 0x001528, "Beacon Medical Products LLC d.b.a. BeaconMedaes", "BEACON-MEDICAL-PRODUCTS-LLC-D-B-A-BEACONMEDAES" }, { 0x001529, "N3 Corporation", "N3" }, { 0x00152A, "Nokia GmbH", "NOKIA" }, { 0x00152B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00152C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00152D, "TenX Networks, LLC", "TENX-NETWORKS-LLC" }, { 0x00152E, "PacketHop, Inc.", "PACKETHOP" }, { 0x00152F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001530, "EMC Corporation", "EMC" }, { 0x001531, "KOCOM", "KOCOM" }, { 0x001532, "Consumer Technologies Group, LLC", "CONSUMER-TECHNOLOGIES-GROUP-LLC" }, { 0x001533, "NADAM.CO.,LTD", "NADAM" }, { 0x001534, "A Beltrónica-Companhia de Comunicações, Lda", "A-BELTRóNICA-COMPANHIA-DE-COMUNICAçõES-LDA" }, { 0x001535, "OTE Spa", "OTE-SPA" }, { 0x001536, "Powertech co.,Ltd", "POWERTECH" }, { 0x001537, "Ventus Networks", "VENTUS-NETWORKS" }, { 0x001538, "RFID, Inc.", "RFID" }, { 0x001539, "Technodrive SRL", "TECHNODRIVE-SRL" }, { 0x00153A, "Shenzhen Syscan Technology Co.,Ltd.", "SHENZHEN-SYSCAN" }, { 0x00153B, "EMH metering GmbH & Co. KG", "EMH-METERING" }, { 0x00153C, "Kprotech Co., Ltd.", "KPROTECH" }, { 0x00153D, "ELIM PRODUCT CO.", "ELIM-PRODUCT" }, { 0x00153E, "Q-Matic Sweden AB", "Q-MATIC-SWEDEN-AB" }, { 0x00153F, "Alcatel Alenia Space Italia", "ALCATEL-ALENIA-SPACE-ITALIA" }, { 0x001540, "Nortel", "NORTEL" }, { 0x001541, "StrataLight Communications, Inc.", "STRATALIGHT-COMMUNICATION" }, { 0x001542, "MICROHARD S.R.L.", "MICROHARD-S-R-L" }, { 0x001543, "Aberdeen Test Center", "ABERDEEN-TEST-CENTER" }, { 0x001544, "coM.s.a.t. AG", "COM-T" }, { 0x001545, "SEECODE Co., Ltd.", "SEECODE" }, { 0x001546, "ITG Worldwide Sdn Bhd", "ITG-WORLDWIDE-SDN-BHD" }, { 0x001547, "AiZen Solutions Inc.", "AIZEN-SOLUTIONS" }, { 0x001548, "CUBE TECHNOLOGIES", "CUBE-TECHNOLOGIES" }, { 0x001549, "Dixtal Biomedica Ind. Com. Ltda", "DIXTAL-BIOMEDICA-IND-COM-LTDA" }, { 0x00154A, "WANSHIH ELECTRONIC CO., LTD", "WANSHIH" }, { 0x00154B, "Wonde Proud Technology Co., Ltd", "WONDE-PROUD" }, { 0x00154C, "Saunders Electronics", "SAUNDERS-ELECTRONICS" }, { 0x00154D, "Netronome Systems, Inc.", "NETRONOME" }, { 0x00154E, "IEC", "IEC" }, { 0x00154F, "one RF Technology", "ONE-RF" }, { 0x001550, "Nits Technology Inc", "NITS" }, { 0x001551, "RadioPulse Inc.", "RADIOPULSE" }, { 0x001552, "Wi-Gear Inc.", "WI-GEAR" }, { 0x001553, "Cytyc Corporation", "CYTYC" }, { 0x001554, "Atalum Wireless S.A.", "ATALUM-WIRELESS" }, { 0x001555, "DFM GmbH", "DFM" }, { 0x001556, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001557, "Olivetti", "OLIVETTI" }, { 0x001558, "FOXCONN", "FOXCONN" }, { 0x001559, "Securaplane Technologies, Inc.", "SECURAPLANE-TECHNOLOGIES" }, { 0x00155A, "DAINIPPON PHARMACEUTICAL CO., LTD.", "DAINIPPON-PHARMACEUTICAL" }, { 0x00155B, "Sampo Corporation", "SAMPO" }, { 0x00155C, "Dresser Wayne", "DRESSER-WAYNE" }, { 0x00155D, "Microsoft Corporation", "MICROSOFT" }, { 0x00155E, "Morgan Stanley", "MORGAN-STANLEY" }, { 0x00155F, "GreenPeak Technologies", "GREENPEAK-TECHNOLOGIES" }, { 0x001560, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001561, "JJPlus Corporation", "JJPLUS" }, { 0x001562, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001563, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001564, "BEHRINGER Spezielle Studiotechnik GmbH", "BEHRINGER-SPEZIELLE-STUDIOTECHNIK" }, { 0x001565, "XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD", "XIAMEN-YEALINK-NETWORK" }, { 0x001566, "A-First Technology Co., Ltd.", "A-FIRST" }, { 0x001567, "RADWIN Inc.", "RADWIN" }, { 0x001568, "Dilithium Networks", "DILITHIUM-NETWORKS" }, { 0x001569, "PECO II, Inc.", "PECO-II" }, { 0x00156A, "DG2L Technologies Pvt. Ltd.", "DG2L-TECHNOLOGIES-PVT" }, { 0x00156B, "Perfisans Networks Corp.", "PERFISANS-NETWORKS" }, { 0x00156C, "SANE SYSTEM CO., LTD", "SANE-SYSTEM" }, { 0x00156D, "Ubiquiti Networks Inc.", "UBIQUITI-NETWORKS" }, { 0x00156E, "A. W. Communication Systems Ltd", "A-W-COMMUNICATION" }, { 0x00156F, "Xiranet Communications GmbH", "XIRANET-COMMUNICATION" }, { 0x001570, "Symbol TechnologiesWholly owned Subsidiary of Motorola", "SYMBOL-TECHNOLOGIESWHOLLY-OWNED-SUBSIDIARY-OF-MOTOROLA" }, { 0x001571, "Nolan Systems", "NOLAN" }, { 0x001572, "Red-Lemon", "RED-LEMON" }, { 0x001573, "NewSoft Technology Corporation", "NEWSOFT" }, { 0x001574, "Horizon Semiconductors Ltd.", "HORIZON-SEMICONDUCTORS" }, { 0x001575, "Nevis Networks Inc.", "NEVIS-NETWORKS" }, { 0x001576, "LABiTec - Labor Biomedical Technologies GmbH", "LABITEC---LABOR-BIOMEDICAL-TECHNOLOGIES" }, { 0x001577, "Allied Telesis", "ALLIED-TELESIS" }, { 0x001578, "Audio / Video Innovations", "AUDIO-/-VIDEO-INNOVATIONS" }, { 0x001579, "Lunatone Industrielle Elektronik GmbH", "LUNATONE-INDUSTRIELLE-ELEKTRONIK" }, { 0x00157A, "Telefin S.p.A.", "TELEFIN-S-P-A" }, { 0x00157B, "Leuze electronic GmbH + Co. KG", "LEUZE-+" }, { 0x00157C, "Dave Networks, Inc.", "DAVE-NETWORKS" }, { 0x00157D, "POSDATA CO., LTD.", "POSDATA" }, { 0x00157E, "Weidmüller Interface GmbH & Co. KG", "WEIDMüLLER-INTERFACE" }, { 0x00157F, "ChuanG International Holding CO.,LTD.", "CHUANG-HOLDING" }, { 0x001580, "U-WAY CORPORATION", "U-WAY" }, { 0x001581, "MAKUS Inc.", "MAKUS" }, { 0x001582, "Pulse Eight Limited", "PULSE-EIGHT" }, { 0x001583, "IVT corporation", "IVT" }, { 0x001584, "Schenck Process GmbH", "SCHENCK-PROCESS" }, { 0x001585, "Aonvision Technolopy Corp.", "AONVISION-TECHNOLOPY" }, { 0x001586, "Xiamen Overseas Chinese Electronic Co., Ltd.", "XIAMEN-OVERSEAS-CHINESE" }, { 0x001587, "Takenaka Seisakusho Co.,Ltd", "TAKENAKA-SEISAKUSHO" }, { 0x001588, "Balda Solution Malaysia Sdn Bhd", "BALDA-SOLUTION-MALAYSIA-SDN-BHD" }, { 0x001589, "D-MAX Technology Co.,Ltd", "D-MAX" }, { 0x00158A, "SURECOM Technology Corp.", "SURECOM" }, { 0x00158B, "Park Air Systems Ltd", "PARK-AIR" }, { 0x00158C, "Liab ApS", "LIAB-APS" }, { 0x00158D, "Jennic Ltd", "JENNIC" }, { 0x00158E, "Plustek.INC", "PLUSTEK" }, { 0x00158F, "NTT Advanced Technology Corporation", "NTT-ADVANCED" }, { 0x001590, "Hectronic GmbH", "HECTRONIC" }, { 0x001591, "RLW Inc.", "RLW" }, { 0x001592, "Facom UK Ltd (Melksham)", "FACOM-UK-MELKSHAM" }, { 0x001593, "U4EA Technologies Inc.", "U4EA-TECHNOLOGIES" }, { 0x001594, "BIXOLON CO.,LTD", "BIXOLON" }, { 0x001595, "Quester Tangent Corporation", "QUESTER-TANGENT" }, { 0x001596, "ARRIS International", "ARRIS" }, { 0x001597, "AETA AUDIO SYSTEMS", "AETA-AUDIO" }, { 0x001598, "Kolektor group", "KOLEKTOR-GROUP" }, { 0x001599, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x00159A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00159B, "Nortel", "NORTEL" }, { 0x00159C, "B-KYUNG SYSTEM Co.,Ltd.", "B-KYUNG-SYSTEM" }, { 0x00159D, "Minicom Advanced Systems ltd", "MINICOM-ADVANCED" }, { 0x00159E, "Mad Catz Interactive Inc", "MAD-CATZ-INTERACTIVE" }, { 0x00159F, "Terascala, Inc.", "TERASCALA" }, { 0x0015A0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0015A1, "ECA-SINTERS", "ECA-SINTERS" }, { 0x0015A2, "ARRIS International", "ARRIS" }, { 0x0015A3, "ARRIS International", "ARRIS" }, { 0x0015A4, "ARRIS International", "ARRIS" }, { 0x0015A5, "DCI Co., Ltd.", "DCI" }, { 0x0015A6, "Digital Electronics Products Ltd.", "DIGITAL-ELECTRONICS-PRODUCTS" }, { 0x0015A7, "Robatech AG", "ROBATECH" }, { 0x0015A8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015A9, "KWANG WOO I&C CO.,LTD", "KWANG-WOO-I-C" }, { 0x0015AA, "Rextechnik International Co.,", "REXTECHNIK" }, { 0x0015AB, "PRO CO SOUND INC", "PRO-SOUND" }, { 0x0015AC, "Capelon AB", "CAPELON-AB" }, { 0x0015AD, "Accedian Networks", "ACCEDIAN-NETWORKS" }, { 0x0015AE, "kyung il", "KYUNG-IL" }, { 0x0015AF, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x0015B0, "AUTOTELENET CO.,LTD", "AUTOTELENET" }, { 0x0015B1, "Ambient Corporation", "AMBIENT" }, { 0x0015B2, "Advanced Industrial Computer, Inc.", "ADVANCED-INDUSTRIAL" }, { 0x0015B3, "Caretech AB", "CARETECH-AB" }, { 0x0015B4, "Polymap Wireless LLC", "POLYMAP-WIRELESS-LLC" }, { 0x0015B5, "CI Network Corp.", "CI-NETWORK" }, { 0x0015B6, "ShinMaywa Industries, Ltd.", "SHINMAYWA-INDUSTRIES" }, { 0x0015B7, "Toshiba", "TOSHIBA" }, { 0x0015B8, "Tahoe", "TAHOE" }, { 0x0015B9, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0015BA, "iba AG", "IBA" }, { 0x0015BB, "SMA Solar Technology AG", "SMA-SOLAR" }, { 0x0015BC, "Develco", "DEVELCO" }, { 0x0015BD, "Group 4 Technology Ltd", "GROUP-4" }, { 0x0015BE, "Iqua Ltd.", "IQUA" }, { 0x0015BF, "technicob", "TECHNICOB" }, { 0x0015C0, "DIGITAL TELEMEDIA CO.,LTD.", "DIGITAL-TELEMEDIA" }, { 0x0015C1, "SONY Computer Entertainment inc,", "SONY-ENTERTAINMENT" }, { 0x0015C2, "3M Germany", "3M-GERMANY" }, { 0x0015C3, "Ruf Telematik AG", "RUF-TELEMATIK" }, { 0x0015C4, "FLOVEL CO., LTD.", "FLOVEL" }, { 0x0015C5, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x0015C6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0015C7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0015C8, "FlexiPanel Ltd", "FLEXIPANEL" }, { 0x0015C9, "Gumstix, Inc", "GUMSTIX" }, { 0x0015CA, "TeraRecon, Inc.", "TERARECON" }, { 0x0015CB, "Surf Communication Solutions Ltd.", "SURF-COMMUNICATION-SOLUTIONS" }, { 0x0015CC, "UQUEST, LTD.", "UQUEST" }, { 0x0015CD, "Exartech International Corp.", "EXARTECH" }, { 0x0015CE, "ARRIS International", "ARRIS" }, { 0x0015CF, "ARRIS International", "ARRIS" }, { 0x0015D0, "ARRIS International", "ARRIS" }, { 0x0015D1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0015D2, "Xantech Corporation", "XANTECH" }, { 0x0015D3, "Pantech&Curitel Communications, Inc.", "PANTECH-CURITEL-COMMUNICATION" }, { 0x0015D4, "Emitor AB", "EMITOR-AB" }, { 0x0015D5, "NICEVT", "NICEVT" }, { 0x0015D6, "OSLiNK Sp. z o.o.", "OSLINK-SP-Z-O-O" }, { 0x0015D7, "Reti Corporation", "RETI" }, { 0x0015D8, "Interlink Electronics", "INTERLINK-ELECTRONICS" }, { 0x0015D9, "PKC Electronics Oy", "PKC-ELECTRONICS-OY" }, { 0x0015DA, "IRITEL A.D.", "IRITEL-A-D" }, { 0x0015DB, "Canesta Inc.", "CANESTA" }, { 0x0015DC, "KT&C Co., Ltd.", "KT-C" }, { 0x0015DD, "IP Control Systems Ltd.", "IP-CONTROL" }, { 0x0015DE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0015DF, "Clivet S.p.A.", "CLIVET-S-P-A" }, { 0x0015E0, "ST-Ericsson", "ST-ERICSSON" }, { 0x0015E1, "Picochip Ltd", "PICOCHIP" }, { 0x0015E2, "Dr.Ing. Herbert Knauer GmbH", "DR-ING-HERBERT-KNAUER" }, { 0x0015E3, "Dream Technologies Corporation", "DREAM-TECHNOLOGIES" }, { 0x0015E4, "Zimmer Elektromedizin", "ZIMMER-ELEKTROMEDIZIN" }, { 0x0015E5, "Cheertek Inc.", "CHEERTEK" }, { 0x0015E6, "MOBILE TECHNIKA Inc.", "MOBILE-TECHNIKA" }, { 0x0015E7, "Quantec Tontechnik", "QUANTEC-TONTECHNIK" }, { 0x0015E8, "Nortel", "NORTEL" }, { 0x0015E9, "D-Link Corporation", "D-LINK" }, { 0x0015EA, "Tellumat (Pty) Ltd", "TELLUMAT-PTY" }, { 0x0015EB, "ZTE CORPORATION", "ZTE" }, { 0x0015EC, "Boca Devices LLC", "BOCA-DEVICES-LLC" }, { 0x0015ED, "Fulcrum Microsystems, Inc.", "FULCRUM-MICROSYSTEMS" }, { 0x0015EE, "Omnex Control Systems", "OMNEX-CONTROL" }, { 0x0015EF, "NEC TOKIN Corporation", "NEC-TOKIN" }, { 0x0015F0, "EGO BV", "EGO" }, { 0x0015F1, "KYLINK Communications Corp.", "KYLINK-COMMUNICATION" }, { 0x0015F2, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0015F3, "PELTOR AB", "PELTOR-AB" }, { 0x0015F4, "Eventide", "EVENTIDE" }, { 0x0015F5, "Sustainable Energy Systems", "SUSTAINABLE-ENERGY" }, { 0x0015F6, "SCIENCE AND ENGINEERING SERVICES, INC.", "SCIENCE-AND-ENGINEERING-SERVICES" }, { 0x0015F7, "Wintecronics Ltd.", "WINTECRONICS" }, { 0x0015F8, "Kingtronics Industrial Co. Ltd.", "KINGTRONICS-INDUSTRIAL" }, { 0x0015F9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0015FA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0015FB, "setex schermuly textile computer gmbh", "SETEX-SCHERMULY-TEXTILE" }, { 0x0015FC, "Littelfuse Startco", "LITTELFUSE-STARTCO" }, { 0x0015FD, "Complete Media Systems", "COMPLETE-MEDIA" }, { 0x0015FE, "SCHILLING ROBOTICS LLC", "SCHILLING-ROBOTICS-LLC" }, { 0x0015FF, "Novatel Wireless, Inc.", "NOVATEL-WIRELESS" }, { 0x001600, "CelleBrite Mobile Synchronization", "CELLEBRITE-MOBILE-SYNCHRONIZATION" }, { 0x001601, "Buffalo Inc.", "BUFFALO" }, { 0x001602, "CEYON TECHNOLOGY CO.,LTD.", "CEYON" }, { 0x001603, "COOLKSKY Co., LTD", "COOLKSKY" }, { 0x001604, "Sigpro", "SIGPRO" }, { 0x001605, "YORKVILLE SOUND INC.", "YORKVILLE-SOUND" }, { 0x001606, "Ideal Industries", "IDEAL-INDUSTRIES" }, { 0x001607, "Curves International Inc.", "CURVES" }, { 0x001608, "Sequans Communications", "SEQUANS-COMMUNICATION" }, { 0x001609, "Unitech electronics co., ltd.", "UNITECH-ELECTRONICS" }, { 0x00160A, "SWEEX Europe BV", "SWEEX-EUROPE" }, { 0x00160B, "TVWorks LLC", "TVWORKS-LLC" }, { 0x00160C, "LPL DEVELOPMENT S.A. DE C.V", "LPL-DEVELOPMENT-DE-C-V" }, { 0x00160D, "Be Here Corporation", "BE-HERE" }, { 0x00160E, "Optica Technologies Inc.", "OPTICA-TECHNOLOGIES" }, { 0x00160F, "BADGER METER INC", "BADGER-METER" }, { 0x001610, "Carina Technology", "CARINA" }, { 0x001611, "Altecon Srl", "ALTECON-SRL" }, { 0x001612, "Otsuka Electronics Co., Ltd.", "OTSUKA-ELECTRONICS" }, { 0x001613, "LibreStream Technologies Inc.", "LIBRESTREAM-TECHNOLOGIES" }, { 0x001614, "Picosecond Pulse Labs", "PICOSECOND-PULSE-LABS" }, { 0x001615, "Nittan Company, Limited", "NITTAN-COMPANY" }, { 0x001616, "BROWAN COMMUNICATION INC.", "BROWAN-COMMUNICATION" }, { 0x001617, "MSI", "MSI" }, { 0x001618, "HIVION Co., Ltd.", "HIVION" }, { 0x001619, "Lancelan Technologies S.L.", "LANCELAN-TECHNOLOGIES-S-L" }, { 0x00161A, "Dametric AB", "DAMETRIC-AB" }, { 0x00161B, "Micronet Corporation", "MICRONET" }, { 0x00161C, "e:cue", "E:CUE" }, { 0x00161D, "Innovative Wireless Technologies, Inc.", "INNOVATIVE-WIRELESS-TECHNOLOGIES" }, { 0x00161E, "Woojinnet", "WOOJINNET" }, { 0x00161F, "SUNWAVETEC Co., Ltd.", "SUNWAVETEC" }, { 0x001620, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001621, "Colorado Vnet", "COLORADO-VNET" }, { 0x001622, "BBH SYSTEMS GMBH", "BBH" }, { 0x001623, "Interval Media", "INTERVAL-MEDIA" }, { 0x001624, "Teneros, Inc.", "TENEROS" }, { 0x001625, "Impinj, Inc.", "IMPINJ" }, { 0x001626, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001627, "embedded-logic DESIGN AND MORE GmbH", "EMBEDDED-LOGIC-DESIGN-AND-MORE" }, { 0x001628, "Ultra Electronics Manufacturing and Card Systems", "ULTRA-ELECTRONICS-MANUFACTURING-AND-CARD" }, { 0x001629, "Nivus GmbH", "NIVUS" }, { 0x00162A, "Antik computers & communications s.r.o.", "ANTIK-COMPUTERS-COMMUNICATION-S-R-O" }, { 0x00162B, "Togami Electric Mfg.co.,Ltd.", "TOGAMI-ELECTRIC-MFG" }, { 0x00162C, "Xanboo", "XANBOO" }, { 0x00162D, "STNet Co., Ltd.", "STNET" }, { 0x00162E, "Space Shuttle Hi-Tech Co., Ltd.", "SPACE-SHUTTLE-HI-TECH" }, { 0x00162F, "Geutebrück GmbH", "GEUTEBRüCK" }, { 0x001630, "Vativ Technologies", "VATIV-TECHNOLOGIES" }, { 0x001631, "Xteam", "XTEAM" }, { 0x001632, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x001633, "Oxford Diagnostics Ltd.", "OXFORD-DIAGNOSTICS" }, { 0x001634, "Mathtech, Inc.", "MATHTECH" }, { 0x001635, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001636, "Quanta Computer Inc.", "QUANTA" }, { 0x001637, "CITEL SpA", "CITEL-SPA" }, { 0x001638, "TECOM Co., Ltd.", "TECOM" }, { 0x001639, "UBIQUAM Co.,Ltd", "UBIQUAM" }, { 0x00163A, "YVES TECHNOLOGY CO., LTD.", "YVES" }, { 0x00163B, "VertexRSI/General Dynamics", "VERTEXRSI/GENERAL-DYNAMICS" }, { 0x00163C, "Rebox B.V.", "REBOX" }, { 0x00163D, "Tsinghua Tongfang Legend Silicon Tech. Co., Ltd.", "TSINGHUA-TONGFANG-LEGEND-SILICON-TECH" }, { 0x00163E, "Xensource, Inc. (possible Xen VM)", "XENSOURCE-VIRTUAL" }, { 0x00163F, "CReTE SYSTEMS Inc.", "CRETE" }, { 0x001640, "Asmobile Communication Inc.", "ASMOBILE-COMMUNICATION" }, { 0x001641, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001642, "Pangolin", "PANGOLIN" }, { 0x001643, "Sunhillo Corporation", "SUNHILLO" }, { 0x001644, "LITE-ON Technology Corp.", "LITE-ON" }, { 0x001645, "Power Distribution, Inc.", "POWER-DISTRIBUTION" }, { 0x001646, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001647, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001648, "SSD Company Limited", "SSD-COMPANY" }, { 0x001649, "SetOne GmbH", "SETONE" }, { 0x00164A, "Vibration Technology Limited", "VIBRATION" }, { 0x00164B, "Quorion Data Systems GmbH", "QUORION-DATA" }, { 0x00164C, "PLANET INT Co., Ltd", "PLANET-INT" }, { 0x00164D, "Alcatel North America IP Division", "ALCATEL-NORTH-AMERICA-IP-DIVISION" }, { 0x00164E, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00164F, "World Ethnic Broadcastin Inc.", "WORLD-ETHNIC-BROADCASTIN" }, { 0x001650, "Herley General Microwave Israel.", "HERLEY-GENERAL-MICROWAVE-ISRAEL" }, { 0x001651, "Exeo Systems", "EXEO" }, { 0x001652, "Hoatech Technologies, Inc.", "HOATECH-TECHNOLOGIES" }, { 0x001653, "LEGO System A/S IE Electronics Division", "LEGO-SYSTEM-A/S-IE-ELECTRONICS-DIVISION" }, { 0x001654, "Flex-P Industries Sdn. Bhd.", "FLEX-P-INDUSTRIES-SDN-BHD" }, { 0x001655, "FUHO TECHNOLOGY Co., LTD", "FUHO" }, { 0x001656, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001657, "Aegate Ltd", "AEGATE" }, { 0x001658, "Fusiontech Technologies Inc.", "FUSIONTECH-TECHNOLOGIES" }, { 0x001659, "Z.M.P. RADWAG", "Z-M-P-RADWAG" }, { 0x00165A, "Harman Specialty Group", "HARMAN-SPECIALTY-GROUP" }, { 0x00165B, "Grip Audio", "GRIP-AUDIO" }, { 0x00165C, "Trackflow Ltd", "TRACKFLOW" }, { 0x00165D, "AirDefense, Inc.", "AIRDEFENSE" }, { 0x00165E, "Precision I/O", "PRECISION-I/O" }, { 0x00165F, "Fairmount Automation", "FAIRMOUNT-AUTOMATION" }, { 0x001660, "Nortel", "NORTEL" }, { 0x001661, "Novatium Solutions (P) Ltd", "NOVATIUM-SOLUTIONS-P" }, { 0x001662, "Liyuh Technology Ltd.", "LIYUH" }, { 0x001663, "KBT Mobile", "KBT-MOBILE" }, { 0x001664, "Prod-El SpA", "PROD-EL-SPA" }, { 0x001665, "Cellon France", "CELLON-FRANCE" }, { 0x001666, "Quantier Communication Inc.", "QUANTIER-COMMUNICATION" }, { 0x001667, "A-TEC Subsystem INC.", "A-TEC-SUBSYSTEM" }, { 0x001668, "Eishin Electronics", "EISHIN-ELECTRONICS" }, { 0x001669, "MRV Communication (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x00166A, "TPS", "TPS" }, { 0x00166B, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x00166C, "Samsung Electonics Digital Video System Division", "SAMSUNG-ELECTONICS-DIGITAL-VIDEO-SYSTEM-DIVISION" }, { 0x00166D, "Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN-LT" }, { 0x00166E, "Arbitron Inc.", "ARBITRON" }, { 0x00166F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001670, "SKNET Corporation", "SKNET" }, { 0x001671, "Symphox Information Co.", "SYMPHOX-INFORMATION" }, { 0x001672, "Zenway enterprise ltd", "ZENWAY" }, { 0x001673, "Bury GmbH & Co. KG", "BURY" }, { 0x001674, "EuroCB (Phils.), Inc.", "EUROCB-PHILS" }, { 0x001675, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001676, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001677, "Bihl + Wiedemann GmbH", "BIHL-+-WIEDEMANN" }, { 0x001678, "SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD", "SHENZHEN-BAOAN-GAOKE-ELECTRONICS" }, { 0x001679, "eOn Communications", "EON-COMMUNICATION" }, { 0x00167A, "Skyworth Overseas Dvelopment Ltd.", "SKYWORTH-OVERSEAS-DVELOPMENT" }, { 0x00167B, "Haver&Boecker", "HAVER-BOECKER" }, { 0x00167C, "iRex Technologies BV", "IREX-TECHNOLOGIES" }, { 0x00167D, "Sky-Line Information Co., Ltd.", "SKY-LINE-INFORMATION" }, { 0x00167E, "DIBOSS.CO.,LTD", "DIBOSS" }, { 0x00167F, "Bluebird Soft Inc.", "BLUEBIRD-SOFT" }, { 0x001680, "Bally Gaming + Systems", "BALLY-GAMING-+" }, { 0x001681, "Vector Informatik GmbH", "VECTOR-INFORMATIK" }, { 0x001682, "Pro Dex, Inc", "PRO-DEX" }, { 0x001683, "WEBIO International Co.,.Ltd.", "WEBIO" }, { 0x001684, "Donjin Co.,Ltd.", "DONJIN" }, { 0x001685, "Elisa Oyj", "ELISA-OYJ" }, { 0x001686, "Karl Storz Imaging", "KARL-STORZ-IMAGING" }, { 0x001687, "Chubb CSC-Vendor AP", "CHUBB-CSC-VENDOR-AP" }, { 0x001688, "ServerEngines LLC", "SERVERENGINES-LLC" }, { 0x001689, "Pilkor Electronics Co., Ltd", "PILKOR-ELECTRONICS" }, { 0x00168A, "id-Confirm Inc", "ID-CONFIRM" }, { 0x00168B, "Paralan Corporation", "PARALAN" }, { 0x00168C, "DSL Partner AS", "DSL-PARTNER-AS" }, { 0x00168D, "KORWIN CO., Ltd.", "KORWIN" }, { 0x00168E, "Vimicro corporation", "VIMICRO" }, { 0x00168F, "GN Netcom as", "GN-NETCOM-AS" }, { 0x001690, "J-TEK INCORPORATION", "J-TEK-INCORPORATION" }, { 0x001691, "Moser-Baer AG", "MOSER-BAER" }, { 0x001692, "Scientific-Atlanta, Inc.", "SCIENTIFIC-ATLANTA" }, { 0x001693, "PowerLink Technology Inc.", "POWERLINK" }, { 0x001694, "Sennheiser Communications A/S", "SENNHEISER-COMMUNICATION-A/S" }, { 0x001695, "AVC Technology (International) Limited", "AVC" }, { 0x001696, "QDI Technology (H.K.) Limited", "QDI-H-K" }, { 0x001697, "NEC Corporation", "NEC" }, { 0x001698, "T&A Mobile Phones", "T-A-MOBILE-PHONES" }, { 0x001699, "Tonic DVB Marketing Ltd", "TONIC-DVB-MARKETING" }, { 0x00169A, "Quadrics Ltd", "QUADRICS" }, { 0x00169B, "Alstom Transport", "ALSTOM-TRANSPORT" }, { 0x00169C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00169D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00169E, "TV One Ltd", "TV-ONE" }, { 0x00169F, "Vimtron Electronics Co., Ltd.", "VIMTRON-ELECTRONICS" }, { 0x0016A0, "Auto-Maskin", "AUTO-MASKIN" }, { 0x0016A1, "3Leaf Networks", "3LEAF-NETWORKS" }, { 0x0016A2, "CentraLite Systems, Inc.", "CENTRALITE" }, { 0x0016A3, "Ingeteam Transmission&Distribution, S.A.", "INGETEAM-TRANSMISSION-DISTRIBUTION" }, { 0x0016A4, "Ezurio Ltd", "EZURIO" }, { 0x0016A5, "Tandberg Storage ASA", "TANDBERG-STORAGE-ASA" }, { 0x0016A6, "Dovado FZ-LLC", "DOVADO-FZ-LLC" }, { 0x0016A7, "AWETA G&P", "AWETA-G-P" }, { 0x0016A8, "CWT CO., LTD.", "CWT" }, { 0x0016A9, "2EI", "2EI" }, { 0x0016AA, "Kei Communication Technology Inc.", "KEI-COMMUNICATION" }, { 0x0016AB, "PBI-Dansensor A/S", "PBI-DANSENSOR-A/S" }, { 0x0016AC, "Toho Technology Corp.", "TOHO" }, { 0x0016AD, "BT-Links Company Limited", "BT-LINKS-COMPANY" }, { 0x0016AE, "INVENTEL", "INVENTEL" }, { 0x0016AF, "Shenzhen Union Networks Equipment Co.,Ltd.", "SHENZHEN-UNION-NETWORKS-EQUIPMENT" }, { 0x0016B0, "VK Corporation", "VK" }, { 0x0016B1, "KBS", "KBS" }, { 0x0016B2, "DriveCam Inc", "DRIVECAM" }, { 0x0016B3, "Photonicbridges (China) Co., Ltd.", "PHOTONICBRIDGES-CHINA" }, { 0x0016B4, "PRIVATE", "PRIVATE" }, { 0x0016B5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0016B6, "Cisco-Linksys", "CISCO-LINKSYS" }, { 0x0016B7, "Seoul Commtech", "SEOUL-COMMTECH" }, { 0x0016B8, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0016B9, "ProCurve Networking", "PROCURVE-NETWORKING" }, { 0x0016BA, "WEATHERNEWS INC.", "WEATHERNEWS" }, { 0x0016BB, "Law-Chain Computer Technology Co Ltd", "LAW-CHAIN" }, { 0x0016BC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0016BD, "ATI Industrial Automation", "ATI-INDUSTRIAL-AUTOMATION" }, { 0x0016BE, "INFRANET, Inc.", "INFRANET" }, { 0x0016BF, "PaloDEx Group Oy", "PALODEX-GROUP-OY" }, { 0x0016C0, "Semtech Corporation", "SEMTECH" }, { 0x0016C1, "Eleksen Ltd", "ELEKSEN" }, { 0x0016C2, "Avtec Systems Inc", "AVTEC" }, { 0x0016C3, "BA Systems Inc", "BA" }, { 0x0016C4, "SiRF Technology, Inc.", "SIRF" }, { 0x0016C5, "Shenzhen Xing Feng Industry Co.,Ltd", "SHENZHEN-XING-FENG-INDUSTRY" }, { 0x0016C6, "North Atlantic Industries", "NORTH-ATLANTIC-INDUSTRIES" }, { 0x0016C7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0016C8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0016C9, "NAT Seattle, Inc.", "NAT-SEATTLE" }, { 0x0016CA, "Nortel", "NORTEL" }, { 0x0016CB, "Apple", "APPLE" }, { 0x0016CC, "Xcute Mobile Corp.", "XCUTE-MOBILE" }, { 0x0016CD, "HIJI HIGH-TECH CO., LTD.", "HIJI-HIGH-TECH" }, { 0x0016CE, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0016CF, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0016D0, "ATech elektronika d.o.o.", "ATECH-ELEKTRONIKA-D-O-O" }, { 0x0016D1, "ZAT a.s.", "ZAT-A-S" }, { 0x0016D2, "Caspian", "CASPIAN" }, { 0x0016D3, "Wistron Corporation", "WISTRON" }, { 0x0016D4, "Compal Communications, Inc.", "COMPAL-COMMUNICATION" }, { 0x0016D5, "Synccom Co., Ltd", "SYNCCOM" }, { 0x0016D6, "TDA Tech Pty Ltd", "TDA-TECH-PTY" }, { 0x0016D7, "Sunways AG", "SUNWAYS" }, { 0x0016D8, "Senea AB", "SENEA-AB" }, { 0x0016D9, "NINGBO BIRD CO.,LTD.", "NINGBO-BIRD" }, { 0x0016DA, "Futronic Technology Co. Ltd.", "FUTRONIC" }, { 0x0016DB, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0016DC, "ARCHOS", "ARCHOS" }, { 0x0016DD, "Gigabeam Corporation", "GIGABEAM" }, { 0x0016DE, "FAST Inc", "FAST" }, { 0x0016DF, "Lundinova AB", "LUNDINOVA-AB" }, { 0x0016E0, "3Com Ltd", "3COM" }, { 0x0016E1, "SiliconStor, Inc.", "SILICONSTOR" }, { 0x0016E2, "American Fibertek, Inc.", "AMERICAN-FIBERTEK" }, { 0x0016E3, "ASKEY COMPUTER CORP.", "ASKEY" }, { 0x0016E4, "VANGUARD SECURITY ENGINEERING CORP.", "VANGUARD-SECURITY-ENGINEERING" }, { 0x0016E5, "FORDLEY DEVELOPMENT LIMITED", "FORDLEY-DEVELOPMENT" }, { 0x0016E6, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x0016E7, "Dynamix Promotions Limited", "DYNAMIX-PROMOTIONS" }, { 0x0016E8, "Sigma Designs, Inc.", "SIGMA-DESIGNS" }, { 0x0016E9, "Tiba Medical Inc", "TIBA-MEDICAL" }, { 0x0016EA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0016EB, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0016EC, "Elitegroup Computer Systems Co., Ltd.", "ELITEGROUP" }, { 0x0016ED, "Digital Safety Technologies, Inc", "DIGITAL-SAFETY-TECHNOLOGIES" }, { 0x0016EE, "RoyalDigital Inc.", "ROYALDIGITAL" }, { 0x0016EF, "Koko Fitness, Inc.", "KOKO-FITNESS" }, { 0x0016F0, "Dell", "DELL" }, { 0x0016F1, "OmniSense, LLC", "OMNISENSE-LLC" }, { 0x0016F2, "Dmobile System Co., Ltd.", "DMOBILE-SYSTEM" }, { 0x0016F3, "CAST Information Co., Ltd", "CAST-INFORMATION" }, { 0x0016F4, "Eidicom Co., Ltd.", "EIDICOM" }, { 0x0016F5, "Dalian Golden Hualu Digital Technology Co.,Ltd", "DALIAN-GOLDEN-HUALU-DIGITAL" }, { 0x0016F6, "Video Products Group", "VIDEO-PRODUCTS-GROUP" }, { 0x0016F7, "L-3 Communications, Aviation Recorders", "L-3-COMMUNICATION-AVIATION-RECORDERS" }, { 0x0016F8, "AVIQTECH TECHNOLOGY CO., LTD.", "AVIQTECH" }, { 0x0016F9, "CETRTA POT, d.o.o., Kranj", "CETRTA-POT-D-O-O-KRANJ" }, { 0x0016FA, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0x0016FB, "SHENZHEN MTC CO.,LTD.", "SHENZHEN-MTC" }, { 0x0016FC, "TOHKEN CO.,LTD.", "TOHKEN" }, { 0x0016FD, "Jaty Electronics", "JATY-ELECTRONICS" }, { 0x0016FE, "Alps Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x0016FF, "Wamin Optocomm Mfg Corp", "WAMIN-OPTOCOMM-MFG" }, { 0x001700, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001701, "KDE, Inc.", "KDE" }, { 0x001702, "Osung Midicom Co., Ltd", "OSUNG-MIDICOM" }, { 0x001703, "MOSDAN Internation Co.,Ltd", "MOSDAN-INTERNATION" }, { 0x001704, "Shinco Electronics Group Co.,Ltd", "SHINCO-ELECTRONICS-GROUP" }, { 0x001705, "Methode Electronics", "METHODE-ELECTRONICS" }, { 0x001706, "Techfaith Wireless Communication Technology Limited.", "TECHFAITH-WIRELESS-COMMUNICATION" }, { 0x001707, "InGrid, Inc", "INGRID" }, { 0x001708, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001709, "Exalt Communications", "EXALT-COMMUNICATION" }, { 0x00170A, "INEW DIGITAL COMPANY", "INEW-DIGITAL-COMPANY" }, { 0x00170B, "Contela, Inc.", "CONTELA" }, { 0x00170C, "Twig Com Ltd.", "TWIG-COM" }, { 0x00170D, "Dust Networks Inc.", "DUST-NETWORKS" }, { 0x00170E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00170F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001710, "Casa Systems Inc.", "CASA" }, { 0x001711, "GE Healthcare Bio-Sciences AB", "GE-HEALTHCARE-BIO-SCIENCES-AB" }, { 0x001712, "ISCO International", "ISCO" }, { 0x001713, "Tiger NetCom", "TIGER-NETCOM" }, { 0x001714, "BR Controls Nederland bv", "BR-CONTROLS-NEDERLAND" }, { 0x001715, "Qstik", "QSTIK" }, { 0x001716, "Qno Technology Inc.", "QNO" }, { 0x001717, "Leica Geosystems AG", "LEICA-GEOSYSTEMS" }, { 0x001718, "Vansco Electronics Oy", "VANSCO-ELECTRONICS-OY" }, { 0x001719, "AudioCodes USA, Inc", "AUDIOCODES-USA" }, { 0x00171A, "Winegard Company", "WINEGARD-COMPANY" }, { 0x00171B, "Innovation Lab Corp.", "INNOVATION-LAB" }, { 0x00171C, "NT MicroSystems, Inc.", "NT-MICROSYSTEMS" }, { 0x00171D, "DIGIT", "DIGIT" }, { 0x00171E, "Theo Benning GmbH & Co. KG", "THEO-BENNING" }, { 0x00171F, "IMV Corporation", "IMV" }, { 0x001720, "Image Sensing Systems, Inc.", "IMAGE-SENSING" }, { 0x001721, "FITRE S.p.A.", "FITRE-S-P-A" }, { 0x001722, "Hanazeder Electronic GmbH", "HANAZEDER" }, { 0x001723, "Summit Data Communications", "SUMMIT-DATA-COMMUNICATION" }, { 0x001724, "Studer Professional Audio GmbH", "STUDER-PROFESSIONAL-AUDIO" }, { 0x001725, "Liquid Computing", "LIQUID-COMPUTING" }, { 0x001726, "m2c Electronic Technology Ltd.", "M2C" }, { 0x001727, "Thermo Ramsey Italia s.r.l.", "THERMO-RAMSEY-ITALIA-S-R-L" }, { 0x001728, "Selex Communications", "SELEX-COMMUNICATION" }, { 0x001729, "Ubicod Co.LTD", "UBICOD" }, { 0x00172A, "Proware Technology Corp.(By Unifosa)", "PROWARE-BY-UNIFOSA" }, { 0x00172B, "Global Technologies Inc.", "GLOBAL-TECHNOLOGIES" }, { 0x00172C, "TAEJIN INFOTECH", "TAEJIN-INFOTECH" }, { 0x00172D, "Axcen Photonics Corporation", "AXCEN-PHOTONICS" }, { 0x00172E, "FXC Inc.", "FXC" }, { 0x00172F, "NeuLion Incorporated", "NEULION-INCORPORATED" }, { 0x001730, "Automation Electronics", "AUTOMATION-ELECTRONICS" }, { 0x001731, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001732, "Science-Technical Center \"RISSA\"", "SCIENCE-TECHNICAL-CENTER-RISSA" }, { 0x001733, "SFR", "SFR" }, { 0x001734, "ADC Telecommunications", "ADC-TELECOMMUNICATIONS" }, { 0x001735, "PRIVATE", "PRIVATE" }, { 0x001736, "iiTron Inc.", "IITRON" }, { 0x001737, "Industrie Dial Face S.p.A.", "INDUSTRIE-DIAL-FACE-S-P-A" }, { 0x001738, "International Business Machines", "BUSINESS-MACHINES" }, { 0x001739, "Bright Headphone Electronics Company", "BRIGHT-HEADPHONE-ELECTRONICS-COMPANY" }, { 0x00173A, "Reach Systems Inc.", "REACH" }, { 0x00173B, "Cisco Systems, Inc.", "CISCO" }, { 0x00173C, "Extreme Engineering Solutions", "EXTREME-ENGINEERING-SOLUTIONS" }, { 0x00173D, "Neology", "NEOLOGY" }, { 0x00173E, "LeucotronEquipamentos Ltda.", "LEUCOTRONEQUIPAMENTOS-LTDA" }, { 0x00173F, "Belkin Corporation", "BELKIN" }, { 0x001740, "Bluberi Gaming Technologies Inc", "BLUBERI-GAMING-TECHNOLOGIES" }, { 0x001741, "DEFIDEV", "DEFIDEV" }, { 0x001742, "FUJITSU LIMITED", "FUJITSU" }, { 0x001743, "Deck Srl", "DECK-SRL" }, { 0x001744, "Araneo Ltd.", "ARANEO" }, { 0x001745, "INNOTZ CO., Ltd", "INNOTZ" }, { 0x001746, "Freedom9 Inc.", "FREEDOM9" }, { 0x001747, "Trimble", "TRIMBLE" }, { 0x001748, "Neokoros Brasil Ltda", "NEOKOROS-BRASIL-LTDA" }, { 0x001749, "HYUNDAE YONG-O-SA CO.,LTD", "HYUNDAE-YONG-O" }, { 0x00174A, "SOCOMEC", "SOCOMEC" }, { 0x00174B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00174C, "Millipore", "MILLIPORE" }, { 0x00174D, "DYNAMIC NETWORK FACTORY, INC.", "DYNAMIC-NETWORK-FACTORY" }, { 0x00174E, "Parama-tech Co.,Ltd.", "PARAMA-TECH" }, { 0x00174F, "iCatch Inc.", "ICATCH" }, { 0x001750, "GSI Group, MicroE Systems", "GSI-GROUP-MICROE" }, { 0x001751, "Online Corporation", "ONLINE" }, { 0x001752, "DAGS, Inc", "DAGS" }, { 0x001753, "nFore Technology Inc.", "NFORE" }, { 0x001754, "Arkino HiTOP Corporation Limited", "ARKINO-HITOP" }, { 0x001755, "GE Security", "GE-SECURITY" }, { 0x001756, "Vinci Labs Oy", "VINCI-LABS-OY" }, { 0x001757, "RIX TECHNOLOGY LIMITED", "RIX" }, { 0x001758, "ThruVision Ltd", "THRUVISION" }, { 0x001759, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00175A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00175B, "ACS Solutions Switzerland Ltd.", "ACS-SOLUTIONS-SWITZERLAND" }, { 0x00175C, "SHARP CORPORATION", "SHARP" }, { 0x00175D, "Dongseo system.", "DONGSEO-SYSTEM" }, { 0x00175E, "Zed-3", "ZED-3" }, { 0x00175F, "XENOLINK Communications Co., Ltd.", "XENOLINK-COMMUNICATION" }, { 0x001760, "Naito Densei Machida MFG.CO.,LTD", "NAITO-DENSEI-MACHIDA-MFG" }, { 0x001761, "PRIVATE", "PRIVATE" }, { 0x001762, "Solar Technology, Inc.", "SOLAR" }, { 0x001763, "Essentia S.p.A.", "ESSENTIA-S-P-A" }, { 0x001764, "ATMedia GmbH", "ATMEDIA" }, { 0x001765, "Nortel", "NORTEL" }, { 0x001766, "Accense Technology, Inc.", "ACCENSE" }, { 0x001767, "Earforce AS", "EARFORCE-AS" }, { 0x001768, "Zinwave Ltd", "ZINWAVE" }, { 0x001769, "Cymphonix Corp", "CYMPHONIX" }, { 0x00176A, "Avago Technologies", "AVAGO-TECHNOLOGIES" }, { 0x00176B, "Kiyon, Inc.", "KIYON" }, { 0x00176C, "Pivot3, Inc.", "PIVOT3" }, { 0x00176D, "CORE CORPORATION", "CORE" }, { 0x00176E, "DUCATI SISTEMI", "DUCATI-SISTEMI" }, { 0x00176F, "PAX Computer Technology(Shenzhen) Ltd.", "PAX-SHENZHEN" }, { 0x001770, "Arti Industrial Electronics Ltd.", "ARTI-INDUSTRIAL-ELECTRONICS" }, { 0x001771, "APD Communications Ltd", "APD-COMMUNICATION" }, { 0x001772, "ASTRO Strobel Kommunikationssysteme GmbH", "ASTRO-STROBEL-KOMMUNIKATIONSSYSTEME" }, { 0x001773, "Laketune Technologies Co. Ltd", "LAKETUNE-TECHNOLOGIES" }, { 0x001774, "Elesta GmbH", "ELESTA" }, { 0x001775, "TTE Germany GmbH", "TTE-GERMANY" }, { 0x001776, "Meso Scale Diagnostics, LLC", "MESO-SCALE-DIAGNOSTICS-LLC" }, { 0x001777, "Obsidian Research Corporation", "OBSIDIAN-RESEARCH" }, { 0x001778, "Central Music Co.", "CENTRAL-MUSIC" }, { 0x001779, "QuickTel", "QUICKTEL" }, { 0x00177A, "ASSA ABLOY AB", "ASSA-ABLOY-AB" }, { 0x00177B, "Azalea Networks inc", "AZALEA-NETWORKS" }, { 0x00177C, "Smartlink Network Systems Limited", "SMARTLINK-NETWORK" }, { 0x00177D, "IDT International Limited", "IDT" }, { 0x00177E, "Meshcom Technologies Inc.", "MESHCOM-TECHNOLOGIES" }, { 0x00177F, "Worldsmart Retech", "WORLDSMART-RETECH" }, { 0x001780, "Applied Biosystems B.V.", "APPLIED-BIOSYSTEMS" }, { 0x001781, "Greystone Data System, Inc.", "GREYSTONE-DATA-SYSTEM" }, { 0x001782, "LoBenn Inc.", "LOBENN" }, { 0x001783, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001784, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001785, "Sparr Electronics Ltd", "SPARR-ELECTRONICS" }, { 0x001786, "wisembed", "WISEMBED" }, { 0x001787, "Brother, Brother & Sons ApS", "BROTHER-BROTHER-SONS-APS" }, { 0x001788, "Philips Lighting BV", "PHILIPS-LIGHTING" }, { 0x001789, "Zenitron Corporation", "ZENITRON" }, { 0x00178A, "DARTS TECHNOLOGIES CORP.", "DARTS-TECHNOLOGIES" }, { 0x00178B, "Teledyne Technologies Incorporated", "TELEDYNE-TECHNOLOGIES-INCORPORATED" }, { 0x00178C, "Independent Witness, Inc", "INDEPENDENT-WITNESS" }, { 0x00178D, "Checkpoint Systems, Inc.", "CHECKPOINT" }, { 0x00178E, "Gunnebo Cash Automation AB", "GUNNEBO-CASH-AUTOMATION-AB" }, { 0x00178F, "NINGBO YIDONG ELECTRONIC CO.,LTD.", "NINGBO-YIDONG" }, { 0x001790, "HYUNDAI DIGITECH Co, Ltd.", "HYUNDAI-DIGITECH" }, { 0x001791, "LinTech GmbH", "LINTECH" }, { 0x001792, "Falcom Wireless Comunications Gmbh", "FALCOM-WIRELESS-COMUNICATIONS" }, { 0x001793, "Tigi Corporation", "TIGI" }, { 0x001794, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001795, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001796, "Rittmeyer AG", "RITTMEYER" }, { 0x001797, "Telsy Elettronica S.p.A.", "TELSY-ELETTRONICA-S-P-A" }, { 0x001798, "Azonic Technology Co., LTD", "AZONIC" }, { 0x001799, "SmarTire Systems Inc.", "SMARTIRE" }, { 0x00179A, "D-Link Corporation", "D-LINK" }, { 0x00179B, "Chant Sincere CO., LTD.", "CHANT-SINCERE" }, { 0x00179C, "DEPRAG SCHULZ GMBH u. CO.", "DEPRAG-SCHULZ-U" }, { 0x00179D, "Kelman Limited", "KELMAN" }, { 0x00179E, "Sirit Inc", "SIRIT" }, { 0x00179F, "Apricorn", "APRICORN" }, { 0x0017A0, "RoboTech srl", "ROBOTECH-SRL" }, { 0x0017A1, "3soft inc.", "3SOFT" }, { 0x0017A2, "Camrivox Ltd.", "CAMRIVOX" }, { 0x0017A3, "MIX s.r.l.", "MIX-S-R-L" }, { 0x0017A4, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0017A5, "Ralink Technology Corp", "RALINK" }, { 0x0017A6, "YOSIN ELECTRONICS CO., LTD.", "YOSIN-ELECTRONICS" }, { 0x0017A7, "Mobile Computing Promotion Consortium", "MOBILE-COMPUTING-PROMOTION-CONSORTIUM" }, { 0x0017A8, "EDM Corporation", "EDM" }, { 0x0017A9, "Sentivision", "SENTIVISION" }, { 0x0017AA, "elab-experience inc.", "ELAB-EXPERIENCE" }, { 0x0017AB, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0017AC, "O'Neil Product Development Inc.", "O-NEIL-PRODUCT-DEVELOPMENT" }, { 0x0017AD, "AceNet Corporation", "ACENET" }, { 0x0017AE, "GAI-Tronics", "GAI-TRONICS" }, { 0x0017AF, "Enermet", "ENERMET" }, { 0x0017B0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0017B1, "ACIST Medical Systems, Inc.", "ACIST-MEDICAL" }, { 0x0017B2, "SK Telesys", "SK-TELESYS" }, { 0x0017B3, "Aftek Infosys Limited", "AFTEK-INFOSYS" }, { 0x0017B4, "Remote Security Systems, LLC", "REMOTE-SECURITY-LLC" }, { 0x0017B5, "Peerless Systems Corporation", "PEERLESS" }, { 0x0017B6, "Aquantia", "AQUANTIA" }, { 0x0017B7, "Tonze Technology Co.", "TONZE" }, { 0x0017B8, "NOVATRON CO., LTD.", "NOVATRON" }, { 0x0017B9, "Gambro Lundia AB", "GAMBRO-LUNDIA-AB" }, { 0x0017BA, "SEDO CO., LTD.", "SEDO" }, { 0x0017BB, "Syrinx Industrial Electronics", "SYRINX-INDUSTRIAL-ELECTRONICS" }, { 0x0017BC, "Touchtunes Music Corporation", "TOUCHTUNES-MUSIC" }, { 0x0017BD, "Tibetsystem", "TIBETSYSTEM" }, { 0x0017BE, "Tratec Telecom B.V.", "TRATEC-TELECOM" }, { 0x0017BF, "Coherent Research Limited", "COHERENT-RESEARCH" }, { 0x0017C0, "PureTech Systems, Inc.", "PURETECH" }, { 0x0017C1, "CM Precision Technology LTD.", "CM-PRECISION" }, { 0x0017C2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x0017C3, "KTF Technologies Inc.", "KTF-TECHNOLOGIES" }, { 0x0017C4, "Quanta Microsystems, INC.", "QUANTA-MICROSYSTEMS" }, { 0x0017C5, "SonicWALL", "SONICWALL" }, { 0x0017C6, "Cross Match Technologies Inc", "CROSS-MATCH-TECHNOLOGIES" }, { 0x0017C7, "MARA Systems Consulting AB", "MARA-CONSULTING-AB" }, { 0x0017C8, "KYOCERA Document Solutions Inc.", "KYOCERA-DOCUMENT-SOLUTIONS" }, { 0x0017C9, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0017CA, "Qisda Corporation", "QISDA" }, { 0x0017CB, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0017CC, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x0017CD, "CEC Wireless R&D Ltd.", "CEC-WIRELESS-R-D" }, { 0x0017CE, "Screen Service Spa", "SCREEN-SERVICE-SPA" }, { 0x0017CF, "iMCA-GmbH", "IMCA" }, { 0x0017D0, "Opticom Communications, LLC", "OPTICOM-COMMUNICATION-LLC" }, { 0x0017D1, "Nortel", "NORTEL" }, { 0x0017D2, "THINLINX PTY LTD", "THINLINX-PTY" }, { 0x0017D3, "Etymotic Research, Inc.", "ETYMOTIC-RESEARCH" }, { 0x0017D4, "Monsoon Multimedia, Inc", "MONSOON-MULTIMEDIA" }, { 0x0017D5, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0017D6, "Bluechips Microhouse Co.,Ltd.", "BLUECHIPS-MICROHOUSE" }, { 0x0017D7, "ION Geophysical Corporation Inc.", "ION-GEOPHYSICAL" }, { 0x0017D8, "Magnum Semiconductor, Inc.", "MAGNUM-SEMICONDUCTOR" }, { 0x0017D9, "AAI Corporation", "AAI" }, { 0x0017DA, "Spans Logic", "SPANS-LOGIC" }, { 0x0017DB, "CANKO TECHNOLOGIES INC.", "CANKO-TECHNOLOGIES" }, { 0x0017DC, "DAEMYUNG ZERO1", "DAEMYUNG-ZERO1" }, { 0x0017DD, "Clipsal Australia", "CLIPSAL-AUSTRALIA" }, { 0x0017DE, "Advantage Six Ltd", "ADVANTAGE-SIX" }, { 0x0017DF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0017E0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0017E1, "DACOS Technologies Co., Ltd.", "DACOS-TECHNOLOGIES" }, { 0x0017E2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0017E3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E6, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E8, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017E9, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017EA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017EB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017EC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0017ED, "WooJooIT Ltd.", "WOOJOOIT" }, { 0x0017EE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0017EF, "IBM Corp", "IBM" }, { 0x0017F0, "SZCOM Broadband Network Technology Co.,Ltd", "SZCOM-BROADBAND-NETWORK" }, { 0x0017F1, "Renu Electronics Pvt Ltd", "RENU-ELECTRONICS-PVT" }, { 0x0017F2, "Apple", "APPLE" }, { 0x0017F3, "Harris Corparation", "HARRIS-CORPARATION" }, { 0x0017F4, "ZERON ALLIANCE", "ZERON-ALLIANCE" }, { 0x0017F5, "LIG NEOPTEK", "LIG-NEOPTEK" }, { 0x0017F6, "Pyramid Meriden Inc.", "PYRAMID-MERIDEN" }, { 0x0017F7, "CEM Solutions Pvt Ltd", "CEM-SOLUTIONS-PVT" }, { 0x0017F8, "Motech Industries Inc.", "MOTECH-INDUSTRIES" }, { 0x0017F9, "Forcom Sp. z o.o.", "FORCOM-SP-Z-O-O" }, { 0x0017FA, "Microsoft Corporation", "MICROSOFT" }, { 0x0017FB, "FA", "FA" }, { 0x0017FC, "Suprema Inc.", "SUPREMA" }, { 0x0017FD, "Amulet Hotkey", "AMULET-HOTKEY" }, { 0x0017FE, "TALOS SYSTEM INC.", "TALOS-SYSTEM" }, { 0x0017FF, "PLAYLINE Co.,Ltd.", "PLAYLINE" }, { 0x001800, "UNIGRAND LTD", "UNIGRAND" }, { 0x001801, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001802, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x001803, "ArcSoft Shanghai Co. LTD", "ARCSOFT-SHANGHAI" }, { 0x001804, "E-TEK DIGITAL TECHNOLOGY LIMITED", "E-TEK-DIGITAL" }, { 0x001805, "Beijing InHand Networking Technology Co.,Ltd.", "BEIJING-INHAND-NETWORKING" }, { 0x001806, "Hokkei Industries Co., Ltd.", "HOKKEI-INDUSTRIES" }, { 0x001807, "Fanstel Corp.", "FANSTEL" }, { 0x001808, "SightLogix, Inc.", "SIGHTLOGIX" }, { 0x001809, "CRESYN", "CRESYN" }, { 0x00180A, "Meraki, Inc.", "MERAKI" }, { 0x00180B, "Brilliant Telecommunications", "BRILLIANT-TELECOMMUNICATIONS" }, { 0x00180C, "Optelian Access Networks", "OPTELIAN-ACCESS-NETWORKS" }, { 0x00180D, "Terabytes Server Storage Tech Corp", "TERABYTES-SERVER-STORAGE-TECH" }, { 0x00180E, "Avega Systems", "AVEGA" }, { 0x00180F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001810, "IPTrade S.A.", "IPTRADE" }, { 0x001811, "Neuros Technology International, LLC.", "NEUROS-LLC" }, { 0x001812, "Beijing Xinwei Telecom Technology Co., Ltd.", "BEIJING-XINWEI-TELECOM" }, { 0x001813, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x001814, "Mitutoyo Corporation", "MITUTOYO" }, { 0x001815, "GZ Technologies, Inc.", "GZ-TECHNOLOGIES" }, { 0x001816, "Ubixon Co., Ltd.", "UBIXON" }, { 0x001817, "D. E. Shaw Research, LLC", "D-E-SHAW-RESEARCH-LLC" }, { 0x001818, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001819, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00181A, "AVerMedia Information Inc.", "AVERMEDIA-INFORMATION" }, { 0x00181B, "TaiJin Metal Co., Ltd.", "TAIJIN-METAL" }, { 0x00181C, "Exterity Limited", "EXTERITY" }, { 0x00181D, "ASIA ELECTRONICS CO.,LTD", "ASIA-ELECTRONICS" }, { 0x00181E, "GDX Technologies Ltd.", "GDX-TECHNOLOGIES" }, { 0x00181F, "Palmmicro Communications", "PALMMICRO-COMMUNICATION" }, { 0x001820, "w5networks", "W5NETWORKS" }, { 0x001821, "SINDORICOH", "SINDORICOH" }, { 0x001822, "CEC TELECOM CO.,LTD.", "CEC-TELECOM" }, { 0x001823, "Delta Electronics, Inc.", "DELTA-ELECTRONICS" }, { 0x001824, "Kimaldi Electronics, S.L.", "KIMALDI-ELECTRONICS-S-L" }, { 0x001825, "PRIVATE", "PRIVATE" }, { 0x001826, "Cale Access AB", "CALE-ACCESS-AB" }, { 0x001827, "NEC UNIFIED SOLUTIONS NEDERLAND B.V.", "NEC-UNIFIED-SOLUTIONS-NEDERLAND" }, { 0x001828, "e2v technologies (UK) ltd.", "E2V-TECHNOLOGIES-UK" }, { 0x001829, "Gatsometer", "GATSOMETER" }, { 0x00182A, "Taiwan Video & Monitor", "TAIWAN-VIDEO-MONITOR" }, { 0x00182B, "Softier", "SOFTIER" }, { 0x00182C, "Ascend Networks, Inc.", "ASCEND-NETWORKS" }, { 0x00182D, "Artec Design", "ARTEC-DESIGN" }, { 0x00182E, "XStreamHD, LLC", "XSTREAMHD-LLC" }, { 0x00182F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001830, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001831, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001832, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001833, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001834, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001835, "Thoratec / ITC", "THORATEC-/-ITC" }, { 0x001836, "Reliance Electric Limited", "RELIANCE-ELECTRIC" }, { 0x001837, "Universal ABIT Co., Ltd.", "UNIVERSAL-ABIT" }, { 0x001838, "PanAccess Communications,Inc.", "PANACCESS-COMMUNICATION" }, { 0x001839, "Cisco-Linksys LLC", "CISCO-LINKSYS-LLC" }, { 0x00183A, "Westell Technologies", "WESTELL-TECHNOLOGIES" }, { 0x00183B, "CENITS Co., Ltd.", "CENITS" }, { 0x00183C, "Encore Software Limited", "ENCORE-SOFTWARE" }, { 0x00183D, "Vertex Link Corporation", "VERTEX-LINK" }, { 0x00183E, "Digilent, Inc", "DIGILENT" }, { 0x00183F, "2Wire, Inc", "2WIRE" }, { 0x001840, "3 Phoenix, Inc.", "3-PHOENIX" }, { 0x001841, "High Tech Computer Corp", "HIGH-TECH" }, { 0x001842, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001843, "Dawevision Ltd", "DAWEVISION" }, { 0x001844, "Heads Up Technologies, Inc.", "HEADS-UP-TECHNOLOGIES" }, { 0x001845, "Pulsar-Telecom LLC.", "PULSAR-TELECOM-LLC" }, { 0x001846, "Crypto S.A.", "CRYPTO" }, { 0x001847, "AceNet Technology Inc.", "ACENET" }, { 0x001848, "Vecima Networks Inc.", "VECIMA-NETWORKS" }, { 0x001849, "Pigeon Point Systems LLC", "PIGEON-POINT-LLC" }, { 0x00184A, "Catcher, Inc.", "CATCHER" }, { 0x00184B, "Las Vegas Gaming, Inc.", "LAS-VEGAS-GAMING" }, { 0x00184C, "Bogen Communications", "BOGEN-COMMUNICATION" }, { 0x00184D, "Netgear Inc.", "NETGEAR" }, { 0x00184E, "Lianhe Technologies, Inc.", "LIANHE-TECHNOLOGIES" }, { 0x00184F, "8 Ways Technology Corp.", "8-WAYS" }, { 0x001850, "Secfone Kft", "SECFONE-KFT" }, { 0x001851, "SWsoft", "SWSOFT" }, { 0x001852, "StorLink Semiconductors, Inc.", "STORLINK-SEMICONDUCTORS" }, { 0x001853, "Atera Networks LTD.", "ATERA-NETWORKS" }, { 0x001854, "Argard Co., Ltd", "ARGARD" }, { 0x001855, "Aeromaritime Systembau GmbH", "AEROMARITIME-SYSTEMBAU" }, { 0x001856, "EyeFi, Inc", "EYEFI" }, { 0x001857, "Unilever R&D", "UNILEVER-R-D" }, { 0x001858, "TagMaster AB", "TAGMASTER-AB" }, { 0x001859, "Strawberry Linux Co.,Ltd.", "STRAWBERRY-LINUX" }, { 0x00185A, "uControl, Inc.", "UCONTROL" }, { 0x00185B, "Network Chemistry, Inc", "NETWORK-CHEMISTRY" }, { 0x00185C, "EDS Lab Pte Ltd", "EDS-LAB-PTE" }, { 0x00185D, "TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD.", "TAIGUEN-SHEN-ZHEN" }, { 0x00185E, "Nexterm Inc.", "NEXTERM" }, { 0x00185F, "TAC Inc.", "TAC" }, { 0x001860, "SIM Technology Group Shanghai Simcom Ltd.,", "SIM-GROUP-SHANGHAI-SIMCOM" }, { 0x001861, "Ooma, Inc.", "OOMA" }, { 0x001862, "Seagate Technology", "SEAGATE" }, { 0x001863, "Veritech Electronics Limited", "VERITECH-ELECTRONICS" }, { 0x001864, "Eaton Corporation", "EATON" }, { 0x001865, "Siemens Healthcare Diagnostics Manufacturing Ltd", "SIEMENS-HEALTHCARE-DIAGNOSTICS-MANUFACTURING" }, { 0x001866, "Leutron Vision", "LEUTRON-VISION" }, { 0x001867, "Datalogic ADC", "DATALOGIC-ADC" }, { 0x001868, "Scientific Atlanta, A Cisco Company", "SCIENTIFIC-ATLANTA-A-CISCO-COMPANY" }, { 0x001869, "KINGJIM", "KINGJIM" }, { 0x00186A, "Global Link Digital Technology Co,.LTD", "GLOBAL-LINK-DIGITAL" }, { 0x00186B, "Sambu Communics CO., LTD.", "SAMBU-COMMUNICS" }, { 0x00186C, "Neonode AB", "NEONODE-AB" }, { 0x00186D, "Zhenjiang Sapphire Electronic Industry CO.", "ZHENJIANG-SAPPHIRE-INDUSTRY" }, { 0x00186E, "3Com Ltd", "3COM" }, { 0x00186F, "Setha Industria Eletronica LTDA", "SETHA-INDUSTRIA-ELETRONICA-LTDA" }, { 0x001870, "E28 Shanghai Limited", "E28-SHANGHAI" }, { 0x001871, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001872, "Expertise Engineering", "EXPERTISE-ENGINEERING" }, { 0x001873, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001874, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001875, "AnaCise Testnology Pte Ltd", "ANACISE-TESTNOLOGY-PTE" }, { 0x001876, "WowWee Ltd.", "WOWWEE" }, { 0x001877, "Amplex A/S", "AMPLEX-A/S" }, { 0x001878, "Mackware GmbH", "MACKWARE" }, { 0x001879, "dSys", "DSYS" }, { 0x00187A, "Wiremold", "WIREMOLD" }, { 0x00187B, "4NSYS Co. Ltd.", "4NSYS" }, { 0x00187C, "INTERCROSS, LLC", "INTERCROSS-LLC" }, { 0x00187D, "Armorlink shanghai Co. Ltd", "ARMORLINK-SHANGHAI" }, { 0x00187E, "RGB Spectrum", "RGB-SPECTRUM" }, { 0x00187F, "ZODIANET", "ZODIANET" }, { 0x001880, "Maxim Integrated Products", "MAXIM-INTEGRATED-PRODUCTS" }, { 0x001881, "Buyang Electronics Industrial Co., Ltd", "BUYANG-ELECTRONICS-INDUSTRIAL" }, { 0x001882, "Huawei Technologies Co., Ltd.", "HUAWEI-TECHNOLOGIES" }, { 0x001883, "FORMOSA21 INC.", "FORMOSA21" }, { 0x001884, "Fon Technology S.L.", "FON-S-L" }, { 0x001885, "Avigilon Corporation", "AVIGILON" }, { 0x001886, "EL-TECH, INC.", "EL-TECH" }, { 0x001887, "Metasystem SpA", "METASYSTEM-SPA" }, { 0x001888, "GOTIVE a.s.", "GOTIVE-A-S" }, { 0x001889, "WinNet Solutions Limited", "WINNET-SOLUTIONS" }, { 0x00188A, "Infinova LLC", "INFINOVA-LLC" }, { 0x00188B, "Dell ESG PCBA Test", "DELL-ESG-PCBA-TEST" }, { 0x00188C, "Mobile Action Technology Inc.", "MOBILE-ACTION" }, { 0x00188D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00188E, "Ekahau, Inc.", "EKAHAU" }, { 0x00188F, "Montgomery Technology, Inc.", "MONTGOMERY" }, { 0x001890, "RadioCOM, s.r.o.", "RADIOCOM-S-R-O" }, { 0x001891, "Zhongshan General K-mate Electronics Co., Ltd", "ZHONGSHAN-GENERAL-K-MATE-ELECTRONICS" }, { 0x001892, "ads-tec GmbH", "ADS-TEC" }, { 0x001893, "SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD", "SHENZHEN-PHOTON-BROADBAND" }, { 0x001894, "zimocom", "ZIMOCOM" }, { 0x001895, "Hansun Technologies Inc.", "HANSUN-TECHNOLOGIES" }, { 0x001896, "Great Well Electronic LTD", "GREAT-WELL" }, { 0x001897, "JESS-LINK PRODUCTS Co., LTD", "JESS-LINK-PRODUCTS" }, { 0x001898, "KINGSTATE ELECTRONICS CORPORATION", "KINGSTATE-ELECTRONICS" }, { 0x001899, "ShenZhen jieshun Science&Technology Industry CO,LTD.", "SHENZHEN-JIESHUN-SCIENCE-INDUSTRY" }, { 0x00189A, "HANA Micron Inc.", "HANA-MICRON" }, { 0x00189B, "Thomson Inc.", "THOMSON" }, { 0x00189C, "Weldex Corporation", "WELDEX" }, { 0x00189D, "Navcast Inc.", "NAVCAST" }, { 0x00189E, "OMNIKEY GmbH.", "OMNIKEY" }, { 0x00189F, "Lenntek Corporation", "LENNTEK" }, { 0x0018A0, "Cierma Ascenseurs", "CIERMA-ASCENSEURS" }, { 0x0018A1, "Tiqit Computers, Inc.", "TIQIT-COMPUTERS" }, { 0x0018A2, "XIP Technology AB", "XIP-AB" }, { 0x0018A3, "ZIPPY TECHNOLOGY CORP.", "ZIPPY" }, { 0x0018A4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0018A5, "ADigit Technologies Corp.", "ADIGIT-TECHNOLOGIES" }, { 0x0018A6, "Persistent Systems, LLC", "PERSISTENT-LLC" }, { 0x0018A7, "Yoggie Security Systems LTD.", "YOGGIE-SECURITY" }, { 0x0018A8, "AnNeal Technology Inc.", "ANNEAL" }, { 0x0018A9, "Ethernet Direct Corporation", "ETHERNET-DIRECT" }, { 0x0018AA, "Protec Fire Detection plc", "PROTEC-FIRE-DETECTION-PLC" }, { 0x0018AB, "BEIJING LHWT MICROELECTRONICS INC.", "BEIJING-LHWT-MICROELECTRONICS" }, { 0x0018AC, "Shanghai Jiao Da HISYS Technology Co. Ltd.", "SHANGHAI-JIAO-DA-HISYS" }, { 0x0018AD, "NIDEC SANKYO CORPORATION", "NIDEC-SANKYO" }, { 0x0018AE, "TVT CO.,LTD", "TVT" }, { 0x0018AF, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x0018B0, "Nortel", "NORTEL" }, { 0x0018B1, "IBM Corp", "IBM" }, { 0x0018B2, "ADEUNIS RF", "ADEUNIS-RF" }, { 0x0018B3, "TEC WizHome Co., Ltd.", "TEC-WIZHOME" }, { 0x0018B4, "Dawon Media Inc.", "DAWON-MEDIA" }, { 0x0018B5, "Magna Carta", "MAGNA-CARTA" }, { 0x0018B6, "S3C, Inc.", "S3C" }, { 0x0018B7, "D3 LED, LLC", "D3-LED-LLC" }, { 0x0018B8, "New Voice International AG", "NEW-VOICE" }, { 0x0018B9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0018BA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0018BB, "Eliwell Controls srl", "ELIWELL-CONTROLS-SRL" }, { 0x0018BC, "ZAO NVP Bolid", "ZAO-NVP-BOLID" }, { 0x0018BD, "SHENZHEN DVBWORLD TECHNOLOGY CO., LTD.", "SHENZHEN-DVBWORLD" }, { 0x0018BE, "ANSA Corporation", "ANSA" }, { 0x0018BF, "Essence Technology Solution, Inc.", "ESSENCE-SOLUTION" }, { 0x0018C0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0018C1, "Almitec Informática e Comércio", "ALMITEC-INFORMáTICA-E-COMéRCIO" }, { 0x0018C2, "Firetide, Inc", "FIRETIDE" }, { 0x0018C3, "CS Corporation", "CS" }, { 0x0018C4, "Raba Technologies LLC", "RABA-TECHNOLOGIES-LLC" }, { 0x0018C5, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0018C6, "OPW Fuel Management Systems", "OPW-FUEL-MANAGEMENT" }, { 0x0018C7, "Real Time Automation", "REAL-TIME-AUTOMATION" }, { 0x0018C8, "ISONAS Inc.", "ISONAS" }, { 0x0018C9, "EOps Technology Limited", "EOPS" }, { 0x0018CA, "Viprinet GmbH", "VIPRINET" }, { 0x0018CB, "Tecobest Technology Limited", "TECOBEST" }, { 0x0018CC, "AXIOHM SAS", "AXIOHM-SAS" }, { 0x0018CD, "Erae Electronics Industry Co., Ltd", "ERAE-ELECTRONICS-INDUSTRY" }, { 0x0018CE, "Dreamtech Co., Ltd", "DREAMTECH" }, { 0x0018CF, "Baldor Electric Company", "BALDOR-ELECTRIC-COMPANY" }, { 0x0018D0, "AtRoad, A Trimble Company", "ATROAD-A-TRIMBLE-COMPANY" }, { 0x0018D1, "Siemens Home & Office Comm. Devices", "SIEMENS-HOME-OFFICE-COMM-DEVICES" }, { 0x0018D2, "High-Gain Antennas LLC", "HIGH-GAIN-ANTENNAS-LLC" }, { 0x0018D3, "TEAMCAST", "TEAMCAST" }, { 0x0018D4, "Unified Display Interface SIG", "UNIFIED-DISPLAY-INTERFACE-SIG" }, { 0x0018D5, "REIGNCOM", "REIGNCOM" }, { 0x0018D6, "Swirlnet A/S", "SWIRLNET-A/S" }, { 0x0018D7, "Javad Navigation Systems Inc.", "JAVAD-NAVIGATION" }, { 0x0018D8, "ARCH METER Corporation", "ARCH-METER" }, { 0x0018D9, "Santosha Internatonal, Inc", "SANTOSHA-INTERNATONAL" }, { 0x0018DA, "AMBER wireless GmbH", "AMBER-WIRELESS" }, { 0x0018DB, "EPL Technology Ltd", "EPL" }, { 0x0018DC, "Prostar Co., Ltd.", "PROSTAR" }, { 0x0018DD, "Silicondust Engineering Ltd", "SILICONDUST-ENGINEERING" }, { 0x0018DE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0018DF, "The Morey Corporation", "THE-MOREY" }, { 0x0018E0, "ANAVEO", "ANAVEO" }, { 0x0018E1, "Verkerk Service Systemen", "VERKERK-SERVICE-SYSTEMEN" }, { 0x0018E2, "Topdata Sistemas de Automacao Ltda", "TOPDATA-SISTEMAS-DE-AUTOMACAO-LTDA" }, { 0x0018E3, "Visualgate Systems, Inc.", "VISUALGATE" }, { 0x0018E4, "YIGUANG", "YIGUANG" }, { 0x0018E5, "Adhoco AG", "ADHOCO" }, { 0x0018E6, "Computer Hardware Design SIA", "HARDWARE-DESIGN-SIA" }, { 0x0018E7, "Cameo Communications, INC.", "CAMEO-COMMUNICATION" }, { 0x0018E8, "Hacetron Corporation", "HACETRON" }, { 0x0018E9, "Numata Corporation", "NUMATA" }, { 0x0018EA, "Alltec GmbH", "ALLTEC" }, { 0x0018EB, "BroVis Wireless Networks", "BROVIS-WIRELESS-NETWORKS" }, { 0x0018EC, "Welding Technology Corporation", "WELDING" }, { 0x0018ED, "Accutech Ultrasystems Co., Ltd.", "ACCUTECH-ULTRASYSTEMS" }, { 0x0018EE, "Videology Imaging Solutions, Inc.", "VIDEOLOGY-IMAGING-SOLUTIONS" }, { 0x0018EF, "Escape Communications, Inc.", "ESCAPE-COMMUNICATION" }, { 0x0018F0, "JOYTOTO Co., Ltd.", "JOYTOTO" }, { 0x0018F1, "Chunichi Denshi Co.,LTD.", "CHUNICHI-DENSHI" }, { 0x0018F2, "Beijing Tianyu Communication Equipment Co., Ltd", "BEIJING-TIANYU-COMMUNICATION-EQUIPMENT" }, { 0x0018F3, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x0018F4, "EO TECHNICS Co., Ltd.", "EO-TECHNICS" }, { 0x0018F5, "Shenzhen Streaming Video Technology Company Limited", "SHENZHEN-STREAMING-VIDEO-COMPANY" }, { 0x0018F6, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x0018F7, "Kameleon Technologies", "KAMELEON-TECHNOLOGIES" }, { 0x0018F8, "Cisco-Linksys LLC", "CISCO-LINKSYS-LLC" }, { 0x0018F9, "VVOND, Inc.", "VVOND" }, { 0x0018FA, "Yushin Precision Equipment Co.,Ltd.", "YUSHIN-PRECISION-EQUIPMENT" }, { 0x0018FB, "Compro Technology", "COMPRO" }, { 0x0018FC, "Altec Electronic AG", "ALTEC" }, { 0x0018FD, "Optimal Technologies International Inc.", "OPTIMAL-TECHNOLOGIES" }, { 0x0018FE, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0018FF, "PowerQuattro Co.", "POWERQUATTRO" }, { 0x001900, "Intelliverese - DBA Voicecom", "INTELLIVERESE---DBA-VOICECOM" }, { 0x001901, "F1MEDIA", "F1MEDIA" }, { 0x001902, "Cambridge Consultants Ltd", "CAMBRIDGE-CONSULTANTS" }, { 0x001903, "Bigfoot Networks Inc", "BIGFOOT-NETWORKS" }, { 0x001904, "WB Electronics Sp. z o.o.", "WB-ELECTRONICS-SP-Z-O-O" }, { 0x001905, "SCHRACK Seconet AG", "SCHRACK-SECONET" }, { 0x001906, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001907, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001908, "Duaxes Corporation", "DUAXES" }, { 0x001909, "DEVI - Danfoss A/S", "DEVI---DANFOSS-A/S" }, { 0x00190A, "HASWARE INC.", "HASWARE" }, { 0x00190B, "Southern Vision Systems, Inc.", "SOUTHERN-VISION" }, { 0x00190C, "Encore Electronics, Inc.", "ENCORE-ELECTRONICS" }, { 0x00190D, "IEEE 1394c", "IEEE-1394C" }, { 0x00190E, "Atech Technology Co., Ltd.", "ATECH" }, { 0x00190F, "Advansus Corp.", "ADVANSUS" }, { 0x001910, "Knick Elektronische Messgeraete GmbH & Co. KG", "KNICK-ELEKTRONISCHE-MESSGERAETE" }, { 0x001911, "Just In Mobile Information Technologies (Shanghai) Co., Ltd.", "JUST-IN-MOBILE-INFORMATION-TECHNOLOGIES-SHANGHAI" }, { 0x001912, "Welcat Inc", "WELCAT" }, { 0x001913, "Chuang-Yi Network Equipment Co.Ltd.", "CHUANG-YI-NETWORK-EQUIPMENT" }, { 0x001914, "Winix Co., Ltd", "WINIX" }, { 0x001915, "TECOM Co., Ltd.", "TECOM" }, { 0x001916, "PayTec AG", "PAYTEC" }, { 0x001917, "Posiflex Inc.", "POSIFLEX" }, { 0x001918, "Interactive Wear AG", "INTERACTIVE-WEAR" }, { 0x001919, "ASTEL Inc.", "ASTEL" }, { 0x00191A, "IRLINK", "IRLINK" }, { 0x00191B, "Sputnik Engineering AG", "SPUTNIK-ENGINEERING" }, { 0x00191C, "Sensicast Systems", "SENSICAST" }, { 0x00191D, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00191E, "Beyondwiz Co., Ltd.", "BEYONDWIZ" }, { 0x00191F, "Microlink communications Inc.", "MICROLINK-COMMUNICATION" }, { 0x001920, "KUME electric Co.,Ltd.", "KUME-ELECTRIC" }, { 0x001921, "Elitegroup Computer System Co.", "ELITEGROUP-SYSTEM" }, { 0x001922, "CM Comandos Lineares", "CM-COMANDOS-LINEARES" }, { 0x001923, "Phonex Korea Co., LTD.", "PHONEX-KOREA" }, { 0x001924, "LBNL Engineering", "LBNL-ENGINEERING" }, { 0x001925, "Intelicis Corporation", "INTELICIS" }, { 0x001926, "BitsGen Co., Ltd.", "BITSGEN" }, { 0x001927, "ImCoSys Ltd", "IMCOSYS" }, { 0x001928, "Siemens AG, Transportation Systems", "SIEMENS-TRANSPORTATION" }, { 0x001929, "2M2B Montadora de Maquinas Bahia Brasil LTDA", "2M2B-MONTADORA-DE-MAQUINAS-BAHIA-BRASIL-LTDA" }, { 0x00192A, "Antiope Associates", "ANTIOPE-ASSOCIATES" }, { 0x00192B, "Aclara RF Systems Inc.", "ACLARA-RF" }, { 0x00192C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00192D, "Nokia Corporation", "NOKIA" }, { 0x00192E, "Spectral Instruments, Inc.", "SPECTRAL-INSTRUMENTS" }, { 0x00192F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001930, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001931, "Balluff GmbH", "BALLUFF" }, { 0x001932, "Gude Analog- und Digialsysteme GmbH", "GUDE-ANALOG--UND-DIGIALSYSTEME" }, { 0x001933, "Strix Systems, Inc.", "STRIX" }, { 0x001934, "TRENDON TOUCH TECHNOLOGY CORP.", "TRENDON-TOUCH" }, { 0x001935, "DUERR DENTAL AG", "DUERR-DENTAL" }, { 0x001936, "STERLITE OPTICAL TECHNOLOGIES LIMITED", "STERLITE-OPTICAL-TECHNOLOGIES" }, { 0x001937, "CommerceGuard AB", "COMMERCEGUARD-AB" }, { 0x001938, "UMB Communications Co., Ltd.", "UMB-COMMUNICATION" }, { 0x001939, "Gigamips", "GIGAMIPS" }, { 0x00193A, "OESOLUTIONS", "OESOLUTIONS" }, { 0x00193B, "Wilibox Deliberant Group LLC", "WILIBOX-DELIBERANT-GROUP-LLC" }, { 0x00193C, "HighPoint Technologies Incorporated", "HIGHPOINT-TECHNOLOGIES-INCORPORATED" }, { 0x00193D, "GMC Guardian Mobility Corp.", "GMC-GUARDIAN-MOBILITY" }, { 0x00193E, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x00193F, "RDI technology(Shenzhen) Co.,LTD", "RDI-SHENZHEN" }, { 0x001940, "Rackable Systems", "RACKABLE" }, { 0x001941, "Pitney Bowes, Inc", "PITNEY-BOWES" }, { 0x001942, "ON SOFTWARE INTERNATIONAL LIMITED", "ON-SOFTWARE" }, { 0x001943, "Belden", "BELDEN" }, { 0x001944, "Fossil Partners, L.P.", "FOSSIL-PARTNERS-L-P" }, { 0x001945, "Ten-Tec Inc.", "TEN-TEC" }, { 0x001946, "Cianet Industria e Comercio S/A", "CIANET-INDUSTRIA-E-COMERCIO-S/A" }, { 0x001947, "Scientific Atlanta, A Cisco Company", "SCIENTIFIC-ATLANTA-A-CISCO-COMPANY" }, { 0x001948, "AireSpider Networks", "AIRESPIDER-NETWORKS" }, { 0x001949, "TENTEL COMTECH CO., LTD.", "TENTEL-COMTECH" }, { 0x00194A, "TESTO AG", "TESTO" }, { 0x00194B, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x00194C, "Fujian Stelcom information & Technology CO.,Ltd", "FUJIAN-STELCOM-INFORMATION" }, { 0x00194D, "Avago Technologies Sdn Bhd", "AVAGO-TECHNOLOGIES-SDN-BHD" }, { 0x00194E, "Ultra Electronics - TCS (Tactical Communication Systems)", "ULTRA-ELECTRONICS---TCS-TACTICAL-COMMUNICATION" }, { 0x00194F, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001950, "Harman Multimedia", "HARMAN-MULTIMEDIA" }, { 0x001951, "NETCONS, s.r.o.", "NETCONS-S-R-O" }, { 0x001952, "ACOGITO Co., Ltd", "ACOGITO" }, { 0x001953, "Chainleader Communications Corp.", "CHAINLEADER-COMMUNICATION" }, { 0x001954, "Leaf Corporation.", "LEAF" }, { 0x001955, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001956, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001957, "Saafnet Canada Inc.", "SAAFNET-CANADA" }, { 0x001958, "Bluetooth SIG, Inc.", "BLUETOOTH-SIG" }, { 0x001959, "Staccato Communications Inc.", "STACCATO-COMMUNICATION" }, { 0x00195A, "Jenaer Antriebstechnik GmbH", "JENAER-ANTRIEBSTECHNIK" }, { 0x00195B, "D-Link Corporation", "D-LINK" }, { 0x00195C, "Innotech Corporation", "INNOTECH" }, { 0x00195D, "ShenZhen XinHuaTong Opto Electronics Co.,Ltd", "SHENZHEN-XINHUATONG-OPTO-ELECTRONICS" }, { 0x00195E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00195F, "Valemount Networks Corporation", "VALEMOUNT-NETWORKS" }, { 0x001960, "DoCoMo Systems, Inc.", "DOCOMO" }, { 0x001961, "Blaupunkt Embedded Systems GmbH", "BLAUPUNKT-EMBEDDED" }, { 0x001962, "Commerciant, LP", "COMMERCIANT-LP" }, { 0x001963, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001964, "Doorking Inc.", "DOORKING" }, { 0x001965, "YuHua TelTech (ShangHai) Co., Ltd.", "YUHUA-TELTECH-SHANGHAI" }, { 0x001966, "Asiarock Technology Limited", "ASIAROCK" }, { 0x001967, "TELDAT Sp.J.", "TELDAT-SP-J" }, { 0x001968, "Digital Video Networks(Shanghai) CO. LTD.", "DIGITAL-VIDEO-NETWORKS-SHANGHAI" }, { 0x001969, "Nortel", "NORTEL" }, { 0x00196A, "MikroM GmbH", "MIKROM" }, { 0x00196B, "Danpex Corporation", "DANPEX" }, { 0x00196C, "ETROVISION TECHNOLOGY", "ETROVISION" }, { 0x00196D, "Raybit Systems Korea, Inc", "RAYBIT-KOREA" }, { 0x00196E, "Metacom (Pty) Ltd.", "METACOM-PTY" }, { 0x00196F, "SensoPart GmbH", "SENSOPART" }, { 0x001970, "Z-Com, Inc.", "Z-COM" }, { 0x001971, "Guangzhou Unicomp Technology Co.,Ltd", "GUANGZHOU-UNICOMP" }, { 0x001972, "Plexus (Xiamen) Co.,ltd", "PLEXUS-XIAMEN" }, { 0x001973, "Zeugma Systems", "ZEUGMA" }, { 0x001974, "AboCom Systems, Inc.", "ABOCOM" }, { 0x001975, "Beijing Huisen networks technology Inc", "BEIJING-HUISEN-NETWORKS" }, { 0x001976, "Xipher Technologies, LLC", "XIPHER-TECHNOLOGIES-LLC" }, { 0x001977, "Aerohive Networks, Inc.", "AEROHIVE-NETWORKS" }, { 0x001978, "Datum Systems, Inc.", "DATUM" }, { 0x001979, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00197A, "MAZeT GmbH", "MAZET" }, { 0x00197B, "Picotest Corp.", "PICOTEST" }, { 0x00197C, "Riedel Communications GmbH", "RIEDEL-COMMUNICATION" }, { 0x00197D, "Hon Hai Precision Ind. Co., Ltd", "HON-HAI-PRECISION-IND" }, { 0x00197E, "Hon Hai Precision Ind. Co., Ltd", "HON-HAI-PRECISION-IND" }, { 0x00197F, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x001980, "Gridpoint Systems", "GRIDPOINT" }, { 0x001981, "Vivox Inc", "VIVOX" }, { 0x001982, "SmarDTV", "SMARDTV" }, { 0x001983, "CCT R&D Limited", "CCT-R-D" }, { 0x001984, "ESTIC Corporation", "ESTIC" }, { 0x001985, "IT Watchdogs, Inc", "IT-WATCHDOGS" }, { 0x001986, "Cheng Hongjian", "CHENG-HONGJIAN" }, { 0x001987, "Panasonic Mobile Communications Co., Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0x001988, "Wi2Wi, Inc", "WI2WI" }, { 0x001989, "Sonitrol Corporation", "SONITROL" }, { 0x00198A, "Northrop Grumman Systems Corp.", "NORTHROP-GRUMMAN" }, { 0x00198B, "Novera Optics Korea, Inc.", "NOVERA-OPTICS-KOREA" }, { 0x00198C, "iXSea", "IXSEA" }, { 0x00198D, "Ocean Optics, Inc.", "OCEAN-OPTICS" }, { 0x00198E, "Oticon A/S", "OTICON-A/S" }, { 0x00198F, "Alcatel Bell N.V.", "ALCATEL-BELL-N-V" }, { 0x001990, "ELM DATA Co., Ltd.", "ELM-DATA" }, { 0x001991, "avinfo", "AVINFO" }, { 0x001992, "ADTRAN INC.", "ADTRAN" }, { 0x001993, "Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea", "CHANGSHU-SWITCHGEAR-MFG-FORMER-CHANGSHU-SWITCHGEA" }, { 0x001994, "Jorjin Technologies Inc.", "JORJIN-TECHNOLOGIES" }, { 0x001995, "Jurong Hi-Tech (Suzhou)Co.ltd", "JURONG-HI-TECH-SUZHOU" }, { 0x001996, "TurboChef Technologies Inc.", "TURBOCHEF-TECHNOLOGIES" }, { 0x001997, "Soft Device Sdn Bhd", "SOFT-DEVICE-SDN-BHD" }, { 0x001998, "SATO CORPORATION", "SATO" }, { 0x001999, "Fujitsu Technology Solutions", "FUJITSU-SOLUTIONS" }, { 0x00199A, "EDO-EVI", "EDO-EVI" }, { 0x00199B, "Diversified Technical Systems, Inc.", "DIVERSIFIED-TECHNICAL" }, { 0x00199C, "CTRING", "CTRING" }, { 0x00199D, "VIZIO, Inc.", "VIZIO" }, { 0x00199E, "Nifty", "NIFTY" }, { 0x00199F, "DKT A/S", "DKT-A/S" }, { 0x0019A0, "NIHON DATA SYSTENS, INC.", "NIHON-DATA-SYSTENS" }, { 0x0019A1, "LG INFORMATION & COMM.", "LG-INFORMATION-COMM" }, { 0x0019A2, "ORDYN TECHNOLOGIES", "ORDYN-TECHNOLOGIES" }, { 0x0019A3, "asteel electronique atlantique", "ASTEEL-ELECTRONIQUE-ATLANTIQUE" }, { 0x0019A4, "Austar Technology (hang zhou) Co.,Ltd", "AUSTAR-HANG-ZHOU" }, { 0x0019A5, "RadarFind Corporation", "RADARFIND" }, { 0x0019A6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0019A7, "ITU-T", "ITU-T" }, { 0x0019A8, "WiQuest Communications", "WIQUEST-COMMUNICATION" }, { 0x0019A9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0019AA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0019AB, "Raycom CO ., LTD", "RAYCOM" }, { 0x0019AC, "GSP SYSTEMS Inc.", "GSP" }, { 0x0019AD, "BOBST SA", "BOBST" }, { 0x0019AE, "Hopling Technologies b.v.", "HOPLING-TECHNOLOGIES" }, { 0x0019AF, "Rigol Technologies, Inc.", "RIGOL-TECHNOLOGIES" }, { 0x0019B0, "HanYang System", "HANYANG-SYSTEM" }, { 0x0019B1, "Arrow7 Corporation", "ARROW7" }, { 0x0019B2, "XYnetsoft Co.,Ltd", "XYNETSOFT" }, { 0x0019B3, "Stanford Research Systems", "STANFORD-RESEARCH" }, { 0x0019B4, "VideoCast Ltd.", "VIDEOCAST" }, { 0x0019B5, "Famar Fueguina S.A.", "FAMAR-FUEGUINA" }, { 0x0019B6, "Euro Emme s.r.l.", "EURO-EMME-S-R-L" }, { 0x0019B7, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0019B8, "Boundary Devices", "BOUNDARY-DEVICES" }, { 0x0019B9, "Dell Inc.", "DELL" }, { 0x0019BA, "Paradox Security Systems Ltd", "PARADOX-SECURITY" }, { 0x0019BB, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0019BC, "ELECTRO CHANCE SRL", "ELECTRO-CHANCE-SRL" }, { 0x0019BD, "New Media Life", "NEW-MEDIA-LIFE" }, { 0x0019BE, "Altai Technologies Limited", "ALTAI-TECHNOLOGIES" }, { 0x0019BF, "Citiway technology Co.,ltd", "CITIWAY" }, { 0x0019C0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0019C1, "Alps Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x0019C2, "Equustek Solutions, Inc.", "EQUUSTEK-SOLUTIONS" }, { 0x0019C3, "Qualitrol", "QUALITROL" }, { 0x0019C4, "Infocrypt Inc.", "INFOCRYPT" }, { 0x0019C5, "SONY Computer Entertainment inc,", "SONY-ENTERTAINMENT" }, { 0x0019C6, "ZTE Corporation", "ZTE" }, { 0x0019C7, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0x0019C8, "AnyDATA Corporation", "ANYDATA" }, { 0x0019C9, "S&C ELECTRIC COMPANY", "S-C-ELECTRIC-COMPANY" }, { 0x0019CA, "Broadata Communications, Inc", "BROADATA-COMMUNICATION" }, { 0x0019CB, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x0019CC, "RCG (HK) Ltd", "RCG-HK" }, { 0x0019CD, "Chengdu ethercom information technology Ltd.", "CHENGDU-ETHERCOM-INFORMATION" }, { 0x0019CE, "Progressive Gaming International", "PROGRESSIVE-GAMING" }, { 0x0019CF, "SALICRU, S.A.", "SALICRU" }, { 0x0019D0, "Cathexis", "CATHEXIS" }, { 0x0019D1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0019D2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0019D3, "TRAK Microwave", "TRAK-MICROWAVE" }, { 0x0019D4, "ICX Technologies", "ICX-TECHNOLOGIES" }, { 0x0019D5, "IP Innovations, Inc.", "IP-INNOVATIONS" }, { 0x0019D6, "LS Cable and System Ltd.", "LS-CABLE-AND-SYSTEM" }, { 0x0019D7, "FORTUNETEK CO., LTD", "FORTUNETEK" }, { 0x0019D8, "MAXFOR", "MAXFOR" }, { 0x0019D9, "Zeutschel GmbH", "ZEUTSCHEL" }, { 0x0019DA, "Welltrans O&E Technology Co. , Ltd.", "WELLTRANS-O-E" }, { 0x0019DB, "MICRO-STAR INTERNATIONAL CO., LTD.", "MICRO-STAR" }, { 0x0019DC, "ENENSYS Technologies", "ENENSYS-TECHNOLOGIES" }, { 0x0019DD, "FEI-Zyfer, Inc.", "FEI-ZYFER" }, { 0x0019DE, "MOBITEK", "MOBITEK" }, { 0x0019DF, "Thomson Inc.", "THOMSON" }, { 0x0019E0, "TP-LINK Technologies Co., Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0x0019E1, "Nortel", "NORTEL" }, { 0x0019E2, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0019E3, "Apple", "APPLE" }, { 0x0019E4, "2Wire, Inc", "2WIRE" }, { 0x0019E5, "Lynx Studio Technology, Inc.", "LYNX-STUDIO" }, { 0x0019E6, "TOYO MEDIC CO.,LTD.", "TOYO-MEDIC" }, { 0x0019E7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0019E8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0019E9, "S-Information Technolgy, Co., Ltd.", "S-INFORMATION-TECHNOLGY" }, { 0x0019EA, "TeraMage Technologies Co., Ltd.", "TERAMAGE-TECHNOLOGIES" }, { 0x0019EB, "Pyronix Ltd", "PYRONIX" }, { 0x0019EC, "Sagamore Systems, Inc.", "SAGAMORE" }, { 0x0019ED, "Axesstel Inc.", "AXESSTEL" }, { 0x0019EE, "CARLO GAVAZZI CONTROLS SPA-Controls Division", "CARLO-GAVAZZI-CONTROLS-SPA-CONTROLS-DIVISION" }, { 0x0019EF, "SHENZHEN LINNKING ELECTRONICS CO.,LTD", "SHENZHEN-LINNKING-ELECTRONICS" }, { 0x0019F0, "UNIONMAN TECHNOLOGY CO.,LTD", "UNIONMAN" }, { 0x0019F1, "Star Communication Network Technology Co.,Ltd", "STAR-COMMUNICATION-NETWORK" }, { 0x0019F2, "Teradyne K.K.", "TERADYNE-K-K" }, { 0x0019F3, "Cetis, Inc", "CETIS" }, { 0x0019F4, "Convergens Oy Ltd", "CONVERGENS-OY" }, { 0x0019F5, "Imagination Technologies Ltd", "IMAGINATION-TECHNOLOGIES" }, { 0x0019F6, "Acconet (PTE) Ltd", "ACCONET-PTE" }, { 0x0019F7, "Onset Computer Corporation", "ONSET" }, { 0x0019F8, "Embedded Systems Design, Inc.", "EMBEDDED-DESIGN" }, { 0x0019F9, "TDK-Lambda", "TDK-LAMBDA" }, { 0x0019FA, "Cable Vision Electronics CO., LTD.", "CABLE-VISION-ELECTRONICS" }, { 0x0019FB, "BSkyB Ltd", "BSKYB" }, { 0x0019FC, "PT. Ufoakses Sukses Luarbiasa", "PT-UFOAKSES-SUKSES-LUARBIASA" }, { 0x0019FD, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0019FE, "SHENZHEN SEECOMM TECHNOLOGY CO.,LTD.", "SHENZHEN-SEECOMM" }, { 0x0019FF, "Finnzymes", "FINNZYMES" }, { 0x001A00, "MATRIX INC.", "MATRIX" }, { 0x001A01, "Smiths Medical", "SMITHS-MEDICAL" }, { 0x001A02, "SECURE CARE PRODUCTS, INC", "SECURE-CARE-PRODUCTS" }, { 0x001A03, "Angel Electronics Co., Ltd.", "ANGEL-ELECTRONICS" }, { 0x001A04, "Interay Solutions BV", "INTERAY-SOLUTIONS" }, { 0x001A05, "OPTIBASE LTD", "OPTIBASE" }, { 0x001A06, "OpVista, Inc.", "OPVISTA" }, { 0x001A07, "Arecont Vision", "ARECONT-VISION" }, { 0x001A08, "Simoco Ltd.", "SIMOCO" }, { 0x001A09, "Wayfarer Transit Systems Ltd", "WAYFARER-TRANSIT" }, { 0x001A0A, "Adaptive Micro-Ware Inc.", "ADAPTIVE-MICRO-WARE" }, { 0x001A0B, "BONA TECHNOLOGY INC.", "BONA" }, { 0x001A0C, "Swe-Dish Satellite Systems AB", "SWE-DISH-SATELLITE-AB" }, { 0x001A0D, "HandHeld entertainment, Inc.", "HANDHELD-ENTERTAINMENT" }, { 0x001A0E, "Cheng Uei Precision Industry Co.,Ltd", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0x001A0F, "Sistemas Avanzados de Control, S.A.", "SISTEMAS-AVANZADOS-DE-CONTROL" }, { 0x001A10, "LUCENT TRANS ELECTRONICS CO.,LTD", "LUCENT-TRANS-ELECTRONICS" }, { 0x001A11, "Google Inc.", "GOOGLE" }, { 0x001A12, "Essilor", "ESSILOR" }, { 0x001A13, "Wanlida Group Co., LTD", "WANLIDA-GROUP" }, { 0x001A14, "Xin Hua Control Engineering Co.,Ltd.", "XIN-HUA-CONTROL-ENGINEERING" }, { 0x001A15, "gemalto e-Payment", "GEMALTO-E-PAYMENT" }, { 0x001A16, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001A17, "Teak Technologies, Inc.", "TEAK-TECHNOLOGIES" }, { 0x001A18, "Advanced Simulation Technology inc.", "ADVANCED-SIMULATION" }, { 0x001A19, "Computer Engineering Limited", "ENGINEERING" }, { 0x001A1A, "Gentex Corporation/Electro-Acoustic Products", "GENTEX-/ELECTRO-ACOUSTIC-PRODUCTS" }, { 0x001A1B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A1C, "GT&T Engineering Pte Ltd", "GT-T-ENGINEERING-PTE" }, { 0x001A1D, "PChome Online Inc.", "PCHOME-ONLINE" }, { 0x001A1E, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x001A1F, "Coastal Environmental Systems", "COASTAL-ENVIRONMENTAL" }, { 0x001A20, "CMOTECH Co. Ltd.", "CMOTECH" }, { 0x001A21, "Indac B.V.", "INDAC" }, { 0x001A22, "eQ-3 Entwicklung GmbH", "EQ-3-ENTWICKLUNG" }, { 0x001A23, "Ice Qube, Inc", "ICE-QUBE" }, { 0x001A24, "Galaxy Telecom Technologies Ltd", "GALAXY-TELECOM-TECHNOLOGIES" }, { 0x001A25, "DELTA DORE", "DELTA-DORE" }, { 0x001A26, "Deltanode Solutions AB", "DELTANODE-SOLUTIONS-AB" }, { 0x001A27, "Ubistar", "UBISTAR" }, { 0x001A28, "ASWT Co., LTD. Taiwan Branch H.K.", "ASWT-TAIWAN-BRANCH-H-K" }, { 0x001A29, "Johnson Outdoors Marine Electronics, Inc", "JOHNSON-OUTDOORS-MARINE-ELECTRONICS" }, { 0x001A2A, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x001A2B, "Ayecom Technology Co., Ltd.", "AYECOM" }, { 0x001A2C, "SATEC Co.,LTD", "SATEC" }, { 0x001A2D, "The Navvo Group", "THE-NAVVO-GROUP" }, { 0x001A2E, "Ziova Coporation", "ZIOVA-COPORATION" }, { 0x001A2F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001A30, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001A31, "SCAN COIN Industries AB", "SCAN-COIN-INDUSTRIES-AB" }, { 0x001A32, "ACTIVA MULTIMEDIA", "ACTIVA-MULTIMEDIA" }, { 0x001A33, "ASI Communications, Inc.", "ASI-COMMUNICATION" }, { 0x001A34, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0x001A35, "BARTEC GmbH", "BARTEC" }, { 0x001A36, "Aipermon GmbH & Co. KG", "AIPERMON" }, { 0x001A37, "Lear Corporation", "LEAR" }, { 0x001A38, "Sanmina-SCI", "SANMINA-SCI" }, { 0x001A39, "Merten GmbH&CoKG", "MERTEN-COKG" }, { 0x001A3A, "Dongahelecomm", "DONGAHELECOMM" }, { 0x001A3B, "Doah Elecom Inc.", "DOAH-ELECOM" }, { 0x001A3C, "Technowave Ltd.", "TECHNOWAVE" }, { 0x001A3D, "Ajin Vision Co.,Ltd", "AJIN-VISION" }, { 0x001A3E, "Faster Technology LLC", "FASTER-LLC" }, { 0x001A3F, "intelbras", "INTELBRAS" }, { 0x001A40, "A-FOUR TECH CO., LTD.", "A-FOUR-TECH" }, { 0x001A41, "INOCOVA Co.,Ltd", "INOCOVA" }, { 0x001A42, "Techcity Technology co., Ltd.", "TECHCITY" }, { 0x001A43, "Logical Link Communications", "LOGICAL-LINK-COMMUNICATION" }, { 0x001A44, "JWTrading Co., Ltd", "JWTRADING" }, { 0x001A45, "GN Netcom as", "GN-NETCOM-AS" }, { 0x001A46, "Digital Multimedia Technology Co., Ltd", "DIGITAL-MULTIMEDIA" }, { 0x001A47, "Agami Systems, Inc.", "AGAMI" }, { 0x001A48, "Takacom Corporation", "TAKACOM" }, { 0x001A49, "Micro Vision Co.,LTD", "MICRO-VISION" }, { 0x001A4A, "Qumranet Inc.", "QUMRANET" }, { 0x001A4B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001A4C, "Crossbow Technology, Inc", "CROSSBOW" }, { 0x001A4D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001A4E, "NTI AG / LinMot", "NTI-/-LINMOT" }, { 0x001A4F, "AVM GmbH", "AVM" }, { 0x001A50, "PheeNet Technology Corp.", "PHEENET" }, { 0x001A51, "Alfred Mann Foundation", "ALFRED-MANN-FOUNDATION" }, { 0x001A52, "Meshlinx Wireless Inc.", "MESHLINX-WIRELESS" }, { 0x001A53, "Zylaya", "ZYLAYA" }, { 0x001A54, "Hip Shing Electronics Ltd.", "HIP-SHING-ELECTRONICS" }, { 0x001A55, "ACA-Digital Corporation", "ACA-DIGITAL" }, { 0x001A56, "ViewTel Co,. Ltd.", "VIEWTEL" }, { 0x001A57, "Matrix Design Group, LLC", "MATRIX-DESIGN-GROUP-LLC" }, { 0x001A58, "CCV Deutschland GmbH - Celectronic eHealth Div.", "CCV-DEUTSCHLAND---CELECTRONIC-EHEALTH-DIV" }, { 0x001A59, "Ircona", "IRCONA" }, { 0x001A5A, "Korea Electric Power Data Network (KDN) Co., Ltd", "KOREA-ELECTRIC-POWER-DATA-NETWORK-KDN" }, { 0x001A5B, "NetCare Service Co., Ltd.", "NETCARE-SERVICE" }, { 0x001A5C, "Euchner GmbH+Co. KG", "EUCHNER-+" }, { 0x001A5D, "Mobinnova Corp.", "MOBINNOVA" }, { 0x001A5E, "Thincom Technology Co.,Ltd", "THINCOM" }, { 0x001A5F, "KitWorks.fi Ltd.", "KITWORKS-FI" }, { 0x001A60, "Wave Electronics Co.,Ltd.", "WAVE-ELECTRONICS" }, { 0x001A61, "PacStar Corp.", "PACSTAR" }, { 0x001A62, "Data Robotics, Incorporated", "DATA-ROBOTICS-INCORPORATED" }, { 0x001A63, "Elster Solutions, LLC,", "ELSTER-SOLUTIONS-LLC" }, { 0x001A64, "IBM Corp", "IBM" }, { 0x001A65, "Seluxit", "SELUXIT" }, { 0x001A66, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A67, "Infinite QL Sdn Bhd", "INFINITE-QL-SDN-BHD" }, { 0x001A68, "Weltec Enterprise Co., Ltd.", "WELTEC" }, { 0x001A69, "Wuhan Yangtze Optical Technology CO.,Ltd.", "WUHAN-YANGTZE-OPTICAL" }, { 0x001A6A, "Tranzas, Inc.", "TRANZAS" }, { 0x001A6B, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001A6C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001A6D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001A6E, "Impro Technologies", "IMPRO-TECHNOLOGIES" }, { 0x001A6F, "MI.TEL s.r.l.", "MI-TEL-S-R-L" }, { 0x001A70, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001A71, "Diostech Co., Ltd.", "DIOSTECH" }, { 0x001A72, "Mosart Semiconductor Corp.", "MOSART-SEMICONDUCTOR" }, { 0x001A73, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x001A74, "Procare International Co", "PROCARE" }, { 0x001A75, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x001A76, "SDT information Technology Co.,LTD.", "SDT-INFORMATION" }, { 0x001A77, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001A78, "ubtos", "UBTOS" }, { 0x001A79, "TELECOMUNICATION TECHNOLOGIES LTD.", "TELECOMUNICATION-TECHNOLOGIES" }, { 0x001A7A, "Lismore Instruments Limited", "LISMORE-INSTRUMENTS" }, { 0x001A7B, "Teleco, Inc.", "TELECO" }, { 0x001A7C, "Hirschmann Multimedia B.V.", "HIRSCHMANN-MULTIMEDIA" }, { 0x001A7D, "cyber-blue(HK)Ltd", "CYBER-BLUE-HK" }, { 0x001A7E, "LN Srithai Comm Ltd.", "LN-SRITHAI-COMM" }, { 0x001A7F, "GCI Science&Technology Co.,Ltd.", "GCI-SCIENCE" }, { 0x001A80, "Sony Corporation", "SONY" }, { 0x001A81, "Zelax", "ZELAX" }, { 0x001A82, "PROBA Building Automation Co.,LTD", "PROBA-BUILDING-AUTOMATION" }, { 0x001A83, "Pegasus Technologies Inc.", "PEGASUS-TECHNOLOGIES" }, { 0x001A84, "V One Multimedia Pte Ltd", "V-ONE-MULTIMEDIA-PTE" }, { 0x001A85, "NV Michel Van de Wiele", "NV-MICHEL-VAN-DE-WIELE" }, { 0x001A86, "AdvancedIO Systems Inc", "ADVANCEDIO" }, { 0x001A87, "Canhold International Limited", "CANHOLD" }, { 0x001A88, "Venergy,Co,Ltd", "VENERGY" }, { 0x001A89, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001A8A, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x001A8B, "CHUNIL ELECTRIC IND., CO.", "CHUNIL-ELECTRIC-IND" }, { 0x001A8C, "Astaro AG", "ASTARO" }, { 0x001A8D, "AVECS Bergen GmbH", "AVECS-BERGEN" }, { 0x001A8E, "3Way Networks Ltd", "3WAY-NETWORKS" }, { 0x001A8F, "Nortel", "NORTEL" }, { 0x001A90, "Trópico Sistemas e Telecomunicações da Amazônia LTDA.", "TRóPICO-SISTEMAS-E-TELECOMUNICAçõES-DA-AMAZôNIA-LTDA" }, { 0x001A91, "FusionDynamic Ltd.", "FUSIONDYNAMIC" }, { 0x001A92, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001A93, "ERCO Leuchten GmbH", "ERCO-LEUCHTEN" }, { 0x001A94, "Votronic GmbH", "VOTRONIC" }, { 0x001A95, "Hisense Mobile Communications Technoligy Co.,Ltd.", "HISENSE-MOBILE-COMMUNICATION-TECHNOLIGY" }, { 0x001A96, "ECLER S.A.", "ECLER" }, { 0x001A97, "fitivision technology Inc.", "FITIVISION" }, { 0x001A98, "Asotel Communication Limited Taiwan Branch", "ASOTEL-COMMUNICATION-TAIWAN-BRANCH" }, { 0x001A99, "Smarty (HZ) Information Electronics Co., Ltd", "SMARTY-HZ-INFORMATION-ELECTRONICS" }, { 0x001A9A, "Skyworth Digital technology(shenzhen)co.ltd.", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x001A9B, "ADEC & Parter AG", "ADEC-PARTER" }, { 0x001A9C, "RightHand Technologies, Inc.", "RIGHTHAND-TECHNOLOGIES" }, { 0x001A9D, "Skipper Wireless, Inc.", "SKIPPER-WIRELESS" }, { 0x001A9E, "ICON Digital International Limited", "ICON-DIGITAL" }, { 0x001A9F, "A-Link Ltd", "A-LINK" }, { 0x001AA0, "Dell Inc", "DELL" }, { 0x001AA1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001AA2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001AA3, "DELORME", "DELORME" }, { 0x001AA4, "Future University-Hakodate", "FUTURE-UNIVERSITY-HAKODATE" }, { 0x001AA5, "BRN Phoenix", "BRN-PHOENIX" }, { 0x001AA6, "Telefunken Radio Communication Systems GmbH &CO.KG", "TELEFUNKEN-RADIO-COMMUNICATION" }, { 0x001AA7, "Torian Wireless", "TORIAN-WIRELESS" }, { 0x001AA8, "Mamiya Digital Imaging Co., Ltd.", "MAMIYA-DIGITAL-IMAGING" }, { 0x001AA9, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x001AAA, "Analogic Corp.", "ANALOGIC" }, { 0x001AAB, "eWings s.r.l.", "EWINGS-S-R-L" }, { 0x001AAC, "Corelatus AB", "CORELATUS-AB" }, { 0x001AAD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001AAE, "Savant Systems LLC", "SAVANT-LLC" }, { 0x001AAF, "BLUSENS TECHNOLOGY", "BLUSENS" }, { 0x001AB0, "Signal Networks Pvt. Ltd.,", "SIGNAL-NETWORKS-PVT" }, { 0x001AB1, "Asia Pacific Satellite Industries Co., Ltd.", "ASIA-PACIFIC-SATELLITE-INDUSTRIES" }, { 0x001AB2, "Cyber Solutions Inc.", "CYBER-SOLUTIONS" }, { 0x001AB3, "VISIONITE INC.", "VISIONITE" }, { 0x001AB4, "FFEI Ltd.", "FFEI" }, { 0x001AB5, "Home Network System", "HOME-NETWORK-SYSTEM" }, { 0x001AB6, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x001AB7, "Ethos Networks LTD.", "ETHOS-NETWORKS" }, { 0x001AB8, "Anseri Corporation", "ANSERI" }, { 0x001AB9, "PMC", "PMC" }, { 0x001ABA, "Caton Overseas Limited", "CATON-OVERSEAS" }, { 0x001ABB, "Fontal Technology Incorporation", "FONTAL-INCORPORATION" }, { 0x001ABC, "U4EA Technologies Ltd", "U4EA-TECHNOLOGIES" }, { 0x001ABD, "Impatica Inc.", "IMPATICA" }, { 0x001ABE, "COMPUTER HI-TECH INC.", "HI-TECH" }, { 0x001ABF, "TRUMPF Laser Marking Systems AG", "TRUMPF-LASER-MARKING" }, { 0x001AC0, "JOYBIEN TECHNOLOGIES CO., LTD.", "JOYBIEN-TECHNOLOGIES" }, { 0x001AC1, "3Com Ltd", "3COM" }, { 0x001AC2, "YEC Co.,Ltd.", "YEC" }, { 0x001AC3, "Scientific-Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x001AC4, "2Wire, Inc", "2WIRE" }, { 0x001AC5, "BreakingPoint Systems, Inc.", "BREAKINGPOINT" }, { 0x001AC6, "Micro Control Designs", "MICRO-CONTROL-DESIGNS" }, { 0x001AC7, "UNIPOINT", "UNIPOINT" }, { 0x001AC8, "ISL (Instrumentation Scientifique de Laboratoire)", "ISL-INSTRUMENTATION-SCIENTIFIQUE-DE-LABORATOIRE" }, { 0x001AC9, "SUZUKEN CO.,LTD", "SUZUKEN" }, { 0x001ACA, "Tilera Corporation", "TILERA" }, { 0x001ACB, "Autocom Products Ltd", "AUTOCOM-PRODUCTS" }, { 0x001ACC, "Celestial Semiconductor, Ltd", "CELESTIAL-SEMICONDUCTOR" }, { 0x001ACD, "Tidel Engineering LP", "TIDEL-ENGINEERING-LP" }, { 0x001ACE, "YUPITERU CORPORATION", "YUPITERU" }, { 0x001ACF, "C.T. ELETTRONICA", "C-T-ELETTRONICA" }, { 0x001AD0, "Albis Technologies AG", "ALBIS-TECHNOLOGIES" }, { 0x001AD1, "FARGO CO., LTD.", "FARGO" }, { 0x001AD2, "Eletronica Nitron Ltda", "ELETRONICA-NITRON-LTDA" }, { 0x001AD3, "Vamp Ltd.", "VAMP" }, { 0x001AD4, "iPOX Technology Co., Ltd.", "IPOX" }, { 0x001AD5, "KMC CHAIN INDUSTRIAL CO., LTD.", "KMC-CHAIN-INDUSTRIAL" }, { 0x001AD6, "JIAGNSU AETNA ELECTRIC CO.,LTD", "JIAGNSU-AETNA-ELECTRIC" }, { 0x001AD7, "Christie Digital Systems, Inc.", "CHRISTIE-DIGITAL" }, { 0x001AD8, "AlsterAero GmbH", "ALSTERAERO" }, { 0x001AD9, "International Broadband Electric Communications, Inc.", "BROADBAND-ELECTRIC-COMMUNICATION" }, { 0x001ADA, "Biz-2-Me Inc.", "BIZ-2-ME" }, { 0x001ADB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001ADC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001ADD, "PePWave Ltd", "PEPWAVE" }, { 0x001ADE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001ADF, "Interactivetv Pty Limited", "INTERACTIVETV-PTY" }, { 0x001AE0, "Mythology Tech Express Inc.", "MYTHOLOGY-TECH-EXPRESS" }, { 0x001AE1, "EDGE ACCESS INC", "EDGE-ACCESS" }, { 0x001AE2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001AE3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001AE4, "Medicis Technologies Corporation", "MEDICIS-TECHNOLOGIES" }, { 0x001AE5, "Mvox Technologies Inc.", "MVOX-TECHNOLOGIES" }, { 0x001AE6, "Atlanta Advanced Communications Holdings Limited", "ATLANTA-ADVANCED-COMMUNICATION-HOLDINGS" }, { 0x001AE7, "Aztek Networks, Inc.", "AZTEK-NETWORKS" }, { 0x001AE8, "Unify GmbH and Co KG", "UNIFY-AND" }, { 0x001AE9, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001AEA, "Radio Terminal Systems Pty Ltd", "RADIO-TERMINAL-PTY" }, { 0x001AEB, "Allied Telesis K.K.", "ALLIED-TELESIS-K-K" }, { 0x001AEC, "Keumbee Electronics Co.,Ltd.", "KEUMBEE-ELECTRONICS" }, { 0x001AED, "INCOTEC GmbH", "INCOTEC" }, { 0x001AEE, "Shenztech Ltd", "SHENZTECH" }, { 0x001AEF, "Loopcomm Technology, Inc.", "LOOPCOMM" }, { 0x001AF0, "Alcatel - IPD", "ALCATEL---IPD" }, { 0x001AF1, "Embedded Artists AB", "EMBEDDED-ARTISTS-AB" }, { 0x001AF2, "Dynavisions Schweiz AG", "DYNAVISIONS-SCHWEIZ" }, { 0x001AF3, "Samyoung Electronics", "SAMYOUNG-ELECTRONICS" }, { 0x001AF4, "Handreamnet", "HANDREAMNET" }, { 0x001AF5, "PENTAONE. CO., LTD.", "PENTAONE" }, { 0x001AF6, "Woven Systems, Inc.", "WOVEN" }, { 0x001AF7, "dataschalt e+a GmbH", "DATASCHALT-E+A" }, { 0x001AF8, "Copley Controls Corporation", "COPLEY-CONTROLS" }, { 0x001AF9, "AeroVIronment (AV Inc)", "AEROVIRONMENT-AV" }, { 0x001AFA, "Welch Allyn, Inc.", "WELCH-ALLYN" }, { 0x001AFB, "Joby Inc.", "JOBY" }, { 0x001AFC, "ModusLink Corporation", "MODUSLINK" }, { 0x001AFD, "EVOLIS", "EVOLIS" }, { 0x001AFE, "SOFACREAL", "SOFACREAL" }, { 0x001AFF, "Wizyoung Tech.", "WIZYOUNG-TECH" }, { 0x001B00, "Neopost Technologies", "NEOPOST-TECHNOLOGIES" }, { 0x001B01, "Applied Radio Technologies", "APPLIED-RADIO-TECHNOLOGIES" }, { 0x001B02, "ED Co.Ltd", "ED" }, { 0x001B03, "Action Technology (SZ) Co., Ltd", "ACTION-SZ" }, { 0x001B04, "Affinity International S.p.a", "AFFINITY-S-P-A" }, { 0x001B05, "YMC AG", "YMC" }, { 0x001B06, "Ateliers R. LAUMONIER", "ATELIERS-R-LAUMONIER" }, { 0x001B07, "Mendocino Software", "MENDOCINO-SOFTWARE" }, { 0x001B08, "Danfoss Drives A/S", "DANFOSS-DRIVES-A/S" }, { 0x001B09, "Matrix Telecom Pvt. Ltd.", "MATRIX-TELECOM-PVT" }, { 0x001B0A, "Intelligent Distributed Controls Ltd", "INTELLIGENT-DISTRIBUTED-CONTROLS" }, { 0x001B0B, "Phidgets Inc.", "PHIDGETS" }, { 0x001B0C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B0D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B0E, "InoTec GmbH Organisationssysteme", "INOTEC-ORGANISATIONSSYSTEME" }, { 0x001B0F, "Petratec", "PETRATEC" }, { 0x001B10, "ShenZhen Kang Hui Technology Co.,ltd", "SHENZHEN-KANG-HUI" }, { 0x001B11, "D-Link Corporation", "D-LINK" }, { 0x001B12, "Apprion", "APPRION" }, { 0x001B13, "Icron Technologies Corporation", "ICRON-TECHNOLOGIES" }, { 0x001B14, "Carex Lighting Equipment Factory", "CAREX-LIGHTING-EQUIPMENT-FACTORY" }, { 0x001B15, "Voxtel, Inc.", "VOXTEL" }, { 0x001B16, "Celtro Ltd.", "CELTRO" }, { 0x001B17, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0x001B18, "Tsuken Electric Ind. Co.,Ltd", "TSUKEN-ELECTRIC-IND" }, { 0x001B19, "IEEE I&M Society TC9", "IEEE-I-M-SOCIETY-TC9" }, { 0x001B1A, "e-trees Japan, Inc.", "E-TREES-JAPAN" }, { 0x001B1B, "Siemens AG,", "SIEMENS" }, { 0x001B1C, "Coherent", "COHERENT" }, { 0x001B1D, "Phoenix International Co., Ltd", "PHOENIX" }, { 0x001B1E, "HART Communication Foundation", "HART-COMMUNICATION-FOUNDATION" }, { 0x001B1F, "DELTA - Danish Electronics, Light & Acoustics", "DELTA---DANISH-ELECTRONICS-LIGHT-ACOUSTICS" }, { 0x001B20, "TPine Technology", "TPINE" }, { 0x001B21, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001B22, "Palit Microsystems ( H.K.) Ltd.", "PALIT-MICROSYSTEMS-H-K" }, { 0x001B23, "SimpleComTools", "SIMPLECOMTOOLS" }, { 0x001B24, "Quanta Computer Inc.", "QUANTA" }, { 0x001B25, "Nortel", "NORTEL" }, { 0x001B26, "RON-Telecom ZAO", "RON-TELECOM-ZAO" }, { 0x001B27, "Merlin CSI", "MERLIN-CSI" }, { 0x001B28, "POLYGON, JSC", "POLYGON-JSC" }, { 0x001B29, "Avantis.Co.,Ltd", "AVANTIS" }, { 0x001B2A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B2B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B2C, "ATRON electronic GmbH", "ATRON" }, { 0x001B2D, "Med-Eng Systems Inc.", "MED-ENG" }, { 0x001B2E, "Sinkyo Electron Inc", "SINKYO-ELECTRON" }, { 0x001B2F, "NETGEAR Inc.", "NETGEAR" }, { 0x001B30, "Solitech Inc.", "SOLITECH" }, { 0x001B31, "Neural Image. Co. Ltd.", "NEURAL-IMAGE" }, { 0x001B32, "QLogic Corporation", "QLOGIC" }, { 0x001B33, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001B34, "Focus System Inc.", "FOCUS-SYSTEM" }, { 0x001B35, "ChongQing JINOU Science & Technology Development CO.,Ltd", "CHONGQING-JINOU-SCIENCE-DEVELOPMENT" }, { 0x001B36, "Tsubata Engineering Co.,Ltd. (Head Office)", "TSUBATA-ENGINEERING-HEAD-OFFICE" }, { 0x001B37, "Computec Oy", "COMPUTEC-OY" }, { 0x001B38, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x001B39, "Proxicast", "PROXICAST" }, { 0x001B3A, "SIMS Corp.", "SIMS" }, { 0x001B3B, "Yi-Qing CO., LTD", "YI-QING" }, { 0x001B3C, "Software Technologies Group,Inc.", "SOFTWARE-TECHNOLOGIES-GROUP" }, { 0x001B3D, "EuroTel Spa", "EUROTEL-SPA" }, { 0x001B3E, "Curtis, Inc.", "CURTIS" }, { 0x001B3F, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x001B40, "Network Automation mxc AB", "NETWORK-AUTOMATION-MXC-AB" }, { 0x001B41, "General Infinity Co.,Ltd.", "GENERAL-INFINITY" }, { 0x001B42, "Wise & Blue", "WISE-BLUE" }, { 0x001B43, "Beijing DG Telecommunications equipment Co.,Ltd", "BEIJING-DG-TELECOMMUNICATIONS-EQUIPMENT" }, { 0x001B44, "SanDisk Corporation", "SANDISK" }, { 0x001B45, "ABB AS, Division Automation Products", "ABB-AS-DIVISION-AUTOMATION-PRODUCTS" }, { 0x001B46, "Blueone Technology Co.,Ltd", "BLUEONE" }, { 0x001B47, "Futarque A/S", "FUTARQUE-A/S" }, { 0x001B48, "Shenzhen Lantech Electronics Co., Ltd.", "SHENZHEN-LANTECH-ELECTRONICS" }, { 0x001B49, "Roberts Radio limited", "ROBERTS-RADIO" }, { 0x001B4A, "W&W Communications, Inc.", "W-W-COMMUNICATION" }, { 0x001B4B, "SANION Co., Ltd.", "SANION" }, { 0x001B4C, "Signtech", "SIGNTECH" }, { 0x001B4D, "Areca Technology Corporation", "ARECA" }, { 0x001B4E, "Navman New Zealand", "NAVMAN-NEW-ZEALAND" }, { 0x001B4F, "Avaya Inc.", "AVAYA" }, { 0x001B50, "Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF)", "NIZHNY-NOVGOROD-FACTORY-NAMED-AFTER-M-FRUNZE-FSUE-NZIF" }, { 0x001B51, "Vector Technology Corp.", "VECTOR" }, { 0x001B52, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001B53, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B54, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B55, "Hurco Automation Ltd.", "HURCO-AUTOMATION" }, { 0x001B56, "Tehuti Networks Ltd.", "TEHUTI-NETWORKS" }, { 0x001B57, "SEMINDIA SYSTEMS PRIVATE LIMITED", "SEMINDIA-PRIVATE" }, { 0x001B58, "ACE CAD Enterprise Co., Ltd.", "ACE-CAD" }, { 0x001B59, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001B5A, "Apollo Imaging Technologies, Inc.", "APOLLO-IMAGING-TECHNOLOGIES" }, { 0x001B5B, "2Wire, Inc.", "2WIRE" }, { 0x001B5C, "Azuretec Co., Ltd.", "AZURETEC" }, { 0x001B5D, "Vololink Pty Ltd", "VOLOLINK-PTY" }, { 0x001B5E, "BPL Limited", "BPL" }, { 0x001B5F, "Alien Technology", "ALIEN" }, { 0x001B60, "NAVIGON AG", "NAVIGON" }, { 0x001B61, "Digital Acoustics, LLC", "DIGITAL-ACOUSTICS-LLC" }, { 0x001B62, "JHT Optoelectronics Co.,Ltd.", "JHT-OPTOELECTRONICS" }, { 0x001B63, "Apple", "APPLE" }, { 0x001B64, "IsaacLandKorea Co., Ltd,", "ISAACLANDKOREA" }, { 0x001B65, "China Gridcom Co., Ltd", "CHINA-GRIDCOM" }, { 0x001B66, "Sennheiser electronic GmbH & Co. KG", "SENNHEISER" }, { 0x001B67, "Cisco Systems Inc", "CISCO" }, { 0x001B68, "Modnnet Co., Ltd", "MODNNET" }, { 0x001B69, "Equaline Corporation", "EQUALINE" }, { 0x001B6A, "Powerwave Technologies Sweden AB", "POWERWAVE-TECHNOLOGIES-SWEDEN-AB" }, { 0x001B6B, "Swyx Solutions AG", "SWYX-SOLUTIONS" }, { 0x001B6C, "LookX Digital Media BV", "LOOKX-DIGITAL-MEDIA" }, { 0x001B6D, "Midtronics, Inc.", "MIDTRONICS" }, { 0x001B6E, "Anue Systems, Inc.", "ANUE" }, { 0x001B6F, "Teletrak Ltd", "TELETRAK" }, { 0x001B70, "IRI Ubiteq, INC.", "IRI-UBITEQ" }, { 0x001B71, "Telular Corp.", "TELULAR" }, { 0x001B72, "Sicep s.p.a.", "SICEP-S-P-A" }, { 0x001B73, "DTL Broadcast Ltd", "DTL-BROADCAST" }, { 0x001B74, "MiraLink Corporation", "MIRALINK" }, { 0x001B75, "Hypermedia Systems", "HYPERMEDIA" }, { 0x001B76, "Ripcode, Inc.", "RIPCODE" }, { 0x001B77, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001B78, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001B79, "FAIVELEY TRANSPORT", "FAIVELEY-TRANSPORT" }, { 0x001B7A, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001B7B, "The Tintometer Ltd", "THE-TINTOMETER" }, { 0x001B7C, "A & R Cambridge", "A-R-CAMBRIDGE" }, { 0x001B7D, "CXR Anderson Jacobson", "CXR-ANDERSON-JACOBSON" }, { 0x001B7E, "Beckmann GmbH", "BECKMANN" }, { 0x001B7F, "TMN Technologies Telecomunicacoes Ltda", "TMN-TECHNOLOGIES-TELECOMUNICACOES-LTDA" }, { 0x001B80, "LORD Corporation", "LORD" }, { 0x001B81, "DATAQ Instruments, Inc.", "DATAQ-INSTRUMENTS" }, { 0x001B82, "Taiwan Semiconductor Co., Ltd.", "TAIWAN-SEMICONDUCTOR" }, { 0x001B83, "Finsoft Ltd", "FINSOFT" }, { 0x001B84, "Scan Engineering Telecom", "SCAN-ENGINEERING-TELECOM" }, { 0x001B85, "MAN Diesel SE", "MAN-DIESEL-SE" }, { 0x001B86, "Bosch Access Systems GmbH", "BOSCH-ACCESS" }, { 0x001B87, "Deepsound Tech. Co., Ltd", "DEEPSOUND-TECH" }, { 0x001B88, "Divinet Access Technologies Ltd", "DIVINET-ACCESS-TECHNOLOGIES" }, { 0x001B89, "EMZA Visual Sense Ltd.", "EMZA-VISUAL-SENSE" }, { 0x001B8A, "2M Electronic A/S", "2M-A/S" }, { 0x001B8B, "NEC AccessTechnica, Ltd.", "NEC-ACCESSTECHNICA" }, { 0x001B8C, "JMicron Technology Corp.", "JMICRON" }, { 0x001B8D, "Electronic Computer Systems, Inc.", "" }, { 0x001B8E, "Hulu Sweden AB", "HULU-SWEDEN-AB" }, { 0x001B8F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B90, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001B91, "EFKON AG", "EFKON" }, { 0x001B92, "l-acoustics", "L-ACOUSTICS" }, { 0x001B93, "JC Decaux SA DNT", "JC-DECAUX-DNT" }, { 0x001B94, "T.E.M.A. S.p.A.", "T-E-M-A-S-P-A" }, { 0x001B95, "VIDEO SYSTEMS SRL", "VIDEO-SRL" }, { 0x001B96, "General Sensing", "GENERAL-SENSING" }, { 0x001B97, "Violin Technologies", "VIOLIN-TECHNOLOGIES" }, { 0x001B98, "Samsung Electronics Co., Ltd.", "SAMSUNG-ELECTRONICS" }, { 0x001B99, "KS System GmbH", "KS-SYSTEM" }, { 0x001B9A, "Apollo Fire Detectors Ltd", "APOLLO-FIRE-DETECTORS" }, { 0x001B9B, "Hose-McCann Communications", "HOSE-MCCANN-COMMUNICATION" }, { 0x001B9C, "SATEL sp. z o.o.", "SATEL-SP-Z-O-O" }, { 0x001B9D, "Novus Security Sp. z o.o.", "NOVUS-SECURITY-SP-Z-O-O" }, { 0x001B9E, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x001B9F, "Calyptech Pty Ltd", "CALYPTECH-PTY" }, { 0x001BA0, "Awox", "AWOX" }, { 0x001BA1, "Åmic AB", "ÅMIC-AB" }, { 0x001BA2, "IDS Imaging Development Systems GmbH", "IDS-IMAGING-DEVELOPMENT" }, { 0x001BA3, "Flexit Group GmbH", "FLEXIT-GROUP" }, { 0x001BA4, "S.A.E Afikim", "E-AFIKIM" }, { 0x001BA5, "MyungMin Systems, Inc.", "MYUNGMIN" }, { 0x001BA6, "intotech inc.", "INTOTECH" }, { 0x001BA7, "Lorica Solutions", "LORICA-SOLUTIONS" }, { 0x001BA8, "UBI&MOBI,.Inc", "UBI-MOBI" }, { 0x001BA9, "BROTHER INDUSTRIES, LTD.", "BROTHER-INDUSTRIES" }, { 0x001BAA, "XenICs nv", "XENICS-NV" }, { 0x001BAB, "Telchemy, Incorporated", "TELCHEMY-INCORPORATED" }, { 0x001BAC, "Curtiss Wright Controls Embedded Computing", "CURTISS-WRIGHT-CONTROLS-EMBEDDED-COMPUTING" }, { 0x001BAD, "iControl Incorporated", "ICONTROL-INCORPORATED" }, { 0x001BAE, "Micro Control Systems, Inc", "MICRO-CONTROL" }, { 0x001BAF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001BB0, "BHARAT ELECTRONICS", "BHARAT-ELECTRONICS" }, { 0x001BB1, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x001BB2, "Intellect International NV", "INTELLECT-NV" }, { 0x001BB3, "Condalo GmbH", "CONDALO" }, { 0x001BB4, "Airvod Limited", "AIRVOD" }, { 0x001BB5, "ZF Electronics GmbH", "ZF-ELECTRONICS" }, { 0x001BB6, "Bird Electronic Corp.", "BIRD" }, { 0x001BB7, "Alta Heights Technology Corp.", "ALTA-HEIGHTS" }, { 0x001BB8, "BLUEWAY ELECTRONIC CO;LTD", "BLUEWAY" }, { 0x001BB9, "Elitegroup Computer System Co.", "ELITEGROUP-SYSTEM" }, { 0x001BBA, "Nortel", "NORTEL" }, { 0x001BBB, "RFTech Co.,Ltd", "RFTECH" }, { 0x001BBC, "Silver Peak Systems, Inc.", "SILVER-PEAK" }, { 0x001BBD, "FMC Kongsberg Subsea AS", "FMC-KONGSBERG-SUBSEA-AS" }, { 0x001BBE, "ICOP Digital", "ICOP-DIGITAL" }, { 0x001BBF, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001BC0, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x001BC1, "HOLUX Technology, Inc.", "HOLUX" }, { 0x001BC2, "Integrated Control Technology Limitied", "INTEGRATED-CONTROL-LIMITIED" }, { 0x001BC3, "Mobisolution Co.,Ltd", "MOBISOLUTION" }, { 0x001BC4, "Ultratec, Inc.", "ULTRATEC" }, { 0x001BC5, "IEEE Registration Authority", "IEEE-REGISTRATION-AUTHORITY" }, { 0x001BC6, "Strato Rechenzentrum AG", "STRATO-RECHENZENTRUM" }, { 0x001BC7, "StarVedia Technology Inc.", "STARVEDIA" }, { 0x001BC8, "MIURA CO.,LTD", "MIURA" }, { 0x001BC9, "FSN DISPLAY INC", "FSN-DISPLAY" }, { 0x001BCA, "Beijing Run Technology LTD. Company", "BEIJING-RUN-COMPANY" }, { 0x001BCB, "PEMPEK SYSTEMS PTY LTD", "PEMPEK-PTY" }, { 0x001BCC, "KINGTEK CCTV ALLIANCE CO., LTD.", "KINGTEK-CCTV-ALLIANCE" }, { 0x001BCD, "DAVISCOMMS (S) PTE LTD", "DAVISCOMMS-S-PTE" }, { 0x001BCE, "Measurement Devices Ltd", "MEASUREMENT-DEVICES" }, { 0x001BCF, "Dataupia Corporation", "DATAUPIA" }, { 0x001BD0, "IDENTEC SOLUTIONS", "IDENTEC-SOLUTIONS" }, { 0x001BD1, "SOGESTMATIC", "SOGESTMATIC" }, { 0x001BD2, "ULTRA-X ASIA PACIFIC Inc.", "ULTRA-X-ASIA-PACIFIC" }, { 0x001BD3, "Panasonic Corp. AVC Company", "PANASONIC-AVC-COMPANY" }, { 0x001BD4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001BD5, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001BD6, "Kelvin Hughes Ltd", "KELVIN-HUGHES" }, { 0x001BD7, "Scientific Atlanta, A Cisco Company", "SCIENTIFIC-ATLANTA-A-CISCO-COMPANY" }, { 0x001BD8, "DVTel LTD", "DVTEL" }, { 0x001BD9, "Edgewater Computer Systems", "EDGEWATER" }, { 0x001BDA, "UTStarcom Inc", "UTSTARCOM" }, { 0x001BDB, "Valeo VECS", "VALEO-VECS" }, { 0x001BDC, "Vencer Co., Ltd.", "VENCER" }, { 0x001BDD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001BDE, "Renkus-Heinz, Inc.", "RENKUS-HEINZ" }, { 0x001BDF, "Iskra Sistemi d.d.", "ISKRA-SISTEMI-D-D" }, { 0x001BE0, "TELENOT ELECTRONIC GmbH", "TELENOT" }, { 0x001BE1, "ViaLogy", "VIALOGY" }, { 0x001BE2, "AhnLab,Inc.", "AHNLAB" }, { 0x001BE3, "Health Hero Network, Inc.", "HEALTH-HERO-NETWORK" }, { 0x001BE4, "TOWNET SRL", "TOWNET-SRL" }, { 0x001BE5, "802automation Limited", "802AUTOMATION" }, { 0x001BE6, "VR AG", "VR" }, { 0x001BE7, "Postek Electronics Co., Ltd.", "POSTEK-ELECTRONICS" }, { 0x001BE8, "Ultratronik GmbH", "ULTRATRONIK" }, { 0x001BE9, "Broadcom Corporation", "BROADCOM" }, { 0x001BEA, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001BEB, "DMP Electronics INC.", "DMP-ELECTRONICS" }, { 0x001BEC, "Netio Technologies Co., Ltd", "NETIO-TECHNOLOGIES" }, { 0x001BED, "Brocade Communications Systems, Inc", "BROCADE-COMMUNICATION" }, { 0x001BEE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001BEF, "Blossoms Digital Technology Co.,Ltd.", "BLOSSOMS-DIGITAL" }, { 0x001BF0, "Value Platforms Limited", "VALUE-PLATFORMS" }, { 0x001BF1, "Nanjing SilverNet Software Co., Ltd.", "NANJING-SILVERNET-SOFTWARE" }, { 0x001BF2, "KWORLD COMPUTER CO., LTD", "KWORLD" }, { 0x001BF3, "TRANSRADIO SenderSysteme Berlin AG", "TRANSRADIO-SENDERSYSTEME-BERLIN" }, { 0x001BF4, "KENWIN INDUSTRIAL(HK) LTD.", "KENWIN-INDUSTRIAL-HK" }, { 0x001BF5, "Tellink Sistemas de Telecomunicación S.L.", "TELLINK-SISTEMAS-DE-TELECOMUNICACIóN-S-L" }, { 0x001BF6, "CONWISE Technology Corporation Ltd.", "CONWISE" }, { 0x001BF7, "Lund IP Products AB", "LUND-IP-PRODUCTS-AB" }, { 0x001BF8, "Digitrax Inc.", "DIGITRAX" }, { 0x001BF9, "Intellitect Water Ltd", "INTELLITECT-WATER" }, { 0x001BFA, "G.i.N. mbH", "G-I-N-MBH" }, { 0x001BFB, "Alps Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x001BFC, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001BFD, "Dignsys Inc.", "DIGNSYS" }, { 0x001BFE, "Zavio Inc.", "ZAVIO" }, { 0x001BFF, "Millennia Media inc.", "MILLENNIA-MEDIA" }, { 0x001C00, "Entry Point, LLC", "ENTRY-POINT-LLC" }, { 0x001C01, "ABB Oy Drives", "ABB-OY-DRIVES" }, { 0x001C02, "Pano Logic", "PANO-LOGIC" }, { 0x001C03, "Betty TV Technology AG", "BETTY-TV" }, { 0x001C04, "Airgain, Inc.", "AIRGAIN" }, { 0x001C05, "Nonin Medical Inc.", "NONIN-MEDICAL" }, { 0x001C06, "Siemens Numerical Control Ltd., Nanjing", "SIEMENS-NUMERICAL-CONTROL-NANJING" }, { 0x001C07, "Cwlinux Limited", "CWLINUX" }, { 0x001C08, "Echo360, Inc.", "ECHO360" }, { 0x001C09, "SAE Electronic Co.,Ltd.", "SAE" }, { 0x001C0A, "Shenzhen AEE Technology Co.,Ltd.", "SHENZHEN-AEE" }, { 0x001C0B, "SmartAnt Telecom", "SMARTANT-TELECOM" }, { 0x001C0C, "TANITA Corporation", "TANITA" }, { 0x001C0D, "G-Technology, Inc.", "G" }, { 0x001C0E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001C0F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001C10, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001C11, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001C12, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001C13, "OPTSYS TECHNOLOGY CO., LTD.", "OPTSYS" }, { 0x001C14, "VMware, Inc", "VMWARE" }, { 0x001C15, "TXP Corporation", "TXP" }, { 0x001C16, "ThyssenKrupp Elevator", "THYSSENKRUPP-ELEVATOR" }, { 0x001C17, "Nortel", "NORTEL" }, { 0x001C18, "Sicert S.r.L.", "SICERT-S-R-L" }, { 0x001C19, "secunet Security Networks AG", "SECUNET-SECURITY-NETWORKS" }, { 0x001C1A, "Thomas Instrumentation, Inc", "THOMAS-INSTRUMENTATION" }, { 0x001C1B, "Hyperstone GmbH", "HYPERSTONE" }, { 0x001C1C, "Center Communication Systems GmbH", "CENTER-COMMUNICATION" }, { 0x001C1D, "CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD", "CHENZHOU-GOSPELL-DIGITAL" }, { 0x001C1E, "emtrion GmbH", "EMTRION" }, { 0x001C1F, "Quest Retail Technology Pty Ltd", "QUEST-RETAIL-PTY" }, { 0x001C20, "CLB Benelux", "CLB-BENELUX" }, { 0x001C21, "Nucsafe Inc.", "NUCSAFE" }, { 0x001C22, "Aeris Elettronica s.r.l.", "AERIS-ELETTRONICA-S-R-L" }, { 0x001C23, "Dell Inc", "DELL" }, { 0x001C24, "Formosa Wireless Systems Corp.", "FORMOSA-WIRELESS" }, { 0x001C25, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001C26, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001C27, "Sunell Electronics Co.", "SUNELL-ELECTRONICS" }, { 0x001C28, "Sphairon Technologies GmbH", "SPHAIRON-TECHNOLOGIES" }, { 0x001C29, "CORE DIGITAL ELECTRONICS CO., LTD", "CORE-DIGITAL-ELECTRONICS" }, { 0x001C2A, "Envisacor Technologies Inc.", "ENVISACOR-TECHNOLOGIES" }, { 0x001C2B, "Alertme.com Limited", "ALERTME-COM" }, { 0x001C2C, "Synapse", "SYNAPSE" }, { 0x001C2D, "FlexRadio Systems", "FLEXRADIO" }, { 0x001C2E, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001C2F, "Pfister GmbH", "PFISTER" }, { 0x001C30, "Mode Lighting (UK ) Ltd.", "MODE-LIGHTING-UK" }, { 0x001C31, "Mobile XP Technology Co., LTD", "MOBILE-XP" }, { 0x001C32, "Telian Corporation", "TELIAN" }, { 0x001C33, "Sutron", "SUTRON" }, { 0x001C34, "HUEY CHIAO INTERNATIONAL CO., LTD.", "HUEY-CHIAO" }, { 0x001C35, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001C36, "iNEWiT NV", "INEWIT-NV" }, { 0x001C37, "Callpod, Inc.", "CALLPOD" }, { 0x001C38, "Bio-Rad Laboratories, Inc.", "BIO-RAD-LABORATORIES" }, { 0x001C39, "S Netsystems Inc.", "S-NETSYSTEMS" }, { 0x001C3A, "Element Labs, Inc.", "ELEMENT-LABS" }, { 0x001C3B, "AmRoad Technology Inc.", "AMROAD" }, { 0x001C3C, "Seon Design Inc.", "SEON-DESIGN" }, { 0x001C3D, "WaveStorm", "WAVESTORM" }, { 0x001C3E, "ECKey Corporation", "ECKEY" }, { 0x001C3F, "International Police Technologies, Inc.", "POLICE-TECHNOLOGIES" }, { 0x001C40, "VDG-Security bv", "VDG-SECURITY" }, { 0x001C41, "scemtec Transponder Technology GmbH", "SCEMTEC-TRANSPONDER" }, { 0x001C42, "Parallels, Inc. (possible Paralles Desktop, Workstation, Server, Virtuozzo VM)", "PARALLELS-VIRTUAL" }, { 0x001C43, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001C44, "Bosch Security Systems BV", "BOSCH-SECURITY" }, { 0x001C45, "Chenbro Micom Co., Ltd.", "CHENBRO-MICOM" }, { 0x001C46, "QTUM", "QTUM" }, { 0x001C47, "Hangzhou Hollysys Automation Co., Ltd", "HANGZHOU-HOLLYSYS-AUTOMATION" }, { 0x001C48, "WiDeFi, Inc.", "WIDEFI" }, { 0x001C49, "Zoltan Technology Inc.", "ZOLTAN" }, { 0x001C4A, "AVM GmbH", "AVM" }, { 0x001C4B, "Gener8, Inc.", "GENER8" }, { 0x001C4C, "Petrotest Instruments", "PETROTEST-INSTRUMENTS" }, { 0x001C4D, "Zeemote Technology Inc. (part of Aplix).", "ZEEMOTE-PART-OF-APLIX" }, { 0x001C4E, "TASA International Limited", "TASA" }, { 0x001C4F, "MACAB AB", "MACAB-AB" }, { 0x001C50, "TCL Technoly Electronics(Huizhou)Co.,Ltd", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0x001C51, "Celeno Communications", "CELENO-COMMUNICATION" }, { 0x001C52, "VISIONEE SRL", "VISIONEE-SRL" }, { 0x001C53, "Synergy Lighting Controls", "SYNERGY-LIGHTING-CONTROLS" }, { 0x001C54, "Hillstone Networks Inc", "HILLSTONE-NETWORKS" }, { 0x001C55, "Shenzhen Kaifa Technology Co.", "SHENZHEN-KAIFA" }, { 0x001C56, "Pado Systems, Inc.", "PADO" }, { 0x001C57, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001C58, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001C59, "DEVON IT", "DEVON-IT" }, { 0x001C5A, "Advanced Relay Corporation", "ADVANCED-RELAY" }, { 0x001C5B, "Chubb Electronic Security Systems Ltd", "CHUBB-SECURITY" }, { 0x001C5C, "Integrated Medical Systems, Inc.", "INTEGRATED-MEDICAL" }, { 0x001C5D, "Leica Microsystems", "LEICA-MICROSYSTEMS" }, { 0x001C5E, "ASTON France", "ASTON-FRANCE" }, { 0x001C5F, "Winland Electronics, Inc.", "WINLAND-ELECTRONICS" }, { 0x001C60, "CSP Frontier Technologies,Inc.", "CSP-FRONTIER-TECHNOLOGIES" }, { 0x001C61, "Galaxy Microsystems LImited", "GALAXY-MICROSYSTEMS" }, { 0x001C62, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x001C63, "TRUEN", "TRUEN" }, { 0x001C64, "Landis+Gyr", "LANDIS+GYR" }, { 0x001C65, "JoeScan, Inc.", "JOESCAN" }, { 0x001C66, "UCAMP CO.,LTD", "UCAMP" }, { 0x001C67, "Pumpkin Networks, Inc.", "PUMPKIN-NETWORKS" }, { 0x001C68, "Anhui Sun Create Electronics Co., Ltd", "ANHUI-SUN-CREATE-ELECTRONICS" }, { 0x001C69, "Packet Vision Ltd", "PACKET-VISION" }, { 0x001C6A, "Weiss Engineering Ltd.", "WEISS-ENGINEERING" }, { 0x001C6B, "COVAX Co. Ltd", "COVAX" }, { 0x001C6C, "Jabil Circuit (Guangzhou) Limited", "JABIL-CIRCUIT-GUANGZHOU" }, { 0x001C6D, "KYOHRITSU ELECTRONIC INDUSTRY CO., LTD.", "KYOHRITSU-INDUSTRY" }, { 0x001C6E, "Newbury Networks, Inc.", "NEWBURY-NETWORKS" }, { 0x001C6F, "Emfit Ltd", "EMFIT" }, { 0x001C70, "NOVACOMM LTDA", "NOVACOMM-LTDA" }, { 0x001C71, "Emergent Electronics", "EMERGENT-ELECTRONICS" }, { 0x001C72, "Mayer & Cie GmbH & Co KG", "MAYER-CIE" }, { 0x001C73, "Arista Networks, Inc.", "ARISTA-NETWORKS" }, { 0x001C74, "Syswan Technologies Inc.", "SYSWAN-TECHNOLOGIES" }, { 0x001C75, "RF Systems GmbH", "RF" }, { 0x001C76, "The Wandsworth Group Ltd", "THE-WANDSWORTH-GROUP" }, { 0x001C77, "Prodys", "PRODYS" }, { 0x001C78, "WYPLAY SAS", "WYPLAY-SAS" }, { 0x001C79, "Cohesive Financial Technologies LLC", "COHESIVE-FINANCIAL-TECHNOLOGIES-LLC" }, { 0x001C7A, "Perfectone Netware Company Ltd", "PERFECTONE-NETWARE-COMPANY" }, { 0x001C7B, "Castlenet Technology Inc.", "CASTLENET" }, { 0x001C7C, "PERQ SYSTEMS CORPORATION", "PERQ" }, { 0x001C7D, "Excelpoint Manufacturing Pte Ltd", "EXCELPOINT-MANUFACTURING-PTE" }, { 0x001C7E, "Toshiba", "TOSHIBA" }, { 0x001C7F, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x001C80, "New Business Division/Rhea-Information CO., LTD.", "NEW-BUSINESS-DIVISION/RHEA-INFORMATION" }, { 0x001C81, "NextGen Venturi LTD", "NEXTGEN-VENTURI" }, { 0x001C82, "Genew Technologies", "GENEW-TECHNOLOGIES" }, { 0x001C83, "New Level Telecom Co., Ltd.", "NEW-LEVEL-TELECOM" }, { 0x001C84, "STL Solution Co.,Ltd.", "STL-SOLUTION" }, { 0x001C85, "Eunicorn", "EUNICORN" }, { 0x001C86, "Cranite Systems, Inc.", "CRANITE" }, { 0x001C87, "Uriver Inc.", "URIVER" }, { 0x001C88, "TRANSYSTEM INC.", "TRANSYSTEM" }, { 0x001C89, "Force Communications, Inc.", "FORCE-COMMUNICATION" }, { 0x001C8A, "Cirrascale Corporation", "CIRRASCALE" }, { 0x001C8B, "MJ Innovations Ltd.", "MJ-INNOVATIONS" }, { 0x001C8C, "DIAL TECHNOLOGY LTD.", "DIAL" }, { 0x001C8D, "Mesa Imaging", "MESA-IMAGING" }, { 0x001C8E, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x001C8F, "Advanced Electronic Design, Inc.", "ADVANCED-DESIGN" }, { 0x001C90, "Empacket Corporation", "EMPACKET" }, { 0x001C91, "Gefen Inc.", "GEFEN" }, { 0x001C92, "Tervela", "TERVELA" }, { 0x001C93, "ExaDigm Inc", "EXADIGM" }, { 0x001C94, "LI-COR Biosciences", "LI-COR-BIOSCIENCES" }, { 0x001C95, "Opticomm Corporation", "OPTICOMM" }, { 0x001C96, "Linkwise Technology Pte Ltd", "LINKWISE-PTE" }, { 0x001C97, "Enzytek Technology Inc.,", "ENZYTEK" }, { 0x001C98, "LUCKY TECHNOLOGY (HK) COMPANY LIMITED", "LUCKY-HK-COMPANY" }, { 0x001C99, "Shunra Software Ltd.", "SHUNRA-SOFTWARE" }, { 0x001C9A, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001C9B, "FEIG ELECTRONIC GmbH", "FEIG" }, { 0x001C9C, "Nortel", "NORTEL" }, { 0x001C9D, "Liecthi AG", "LIECTHI" }, { 0x001C9E, "Dualtech IT AB", "DUALTECH-IT-AB" }, { 0x001C9F, "Razorstream, LLC", "RAZORSTREAM-LLC" }, { 0x001CA0, "Production Resource Group, LLC", "PRODUCTION-RESOURCE-GROUP-LLC" }, { 0x001CA1, "AKAMAI TECHNOLOGIES, INC.", "AKAMAI-TECHNOLOGIES" }, { 0x001CA2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x001CA3, "Terra", "TERRA" }, { 0x001CA4, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x001CA5, "Zygo Corporation", "ZYGO" }, { 0x001CA6, "Win4NET", "WIN4NET" }, { 0x001CA7, "International Quartz Limited", "QUARTZ" }, { 0x001CA8, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 0x001CA9, "Audiomatica Srl", "AUDIOMATICA-SRL" }, { 0x001CAA, "Bellon Pty Ltd", "BELLON-PTY" }, { 0x001CAB, "Meyer Sound Laboratories, Inc.", "MEYER-SOUND-LABORATORIES" }, { 0x001CAC, "Qniq Technology Corp.", "QNIQ" }, { 0x001CAD, "Wuhan Telecommunication Devices Co.,Ltd", "WUHAN-TELECOMMUNICATION-DEVICES" }, { 0x001CAE, "WiChorus, Inc.", "WICHORUS" }, { 0x001CAF, "Plato Networks Inc.", "PLATO-NETWORKS" }, { 0x001CB0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001CB1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001CB2, "BPT SPA", "BPT-SPA" }, { 0x001CB3, "Apple", "APPLE" }, { 0x001CB4, "Iridium Satellite LLC", "IRIDIUM-SATELLITE-LLC" }, { 0x001CB5, "Neihua Network Technology Co.,LTD.(NHN)", "NEIHUA-NETWORK-NHN" }, { 0x001CB6, "Duzon CNT Co., Ltd.", "DUZON-CNT" }, { 0x001CB7, "USC DigiArk Corporation", "USC-DIGIARK" }, { 0x001CB8, "CBC Co., Ltd", "CBC" }, { 0x001CB9, "KWANG SUNG ELECTRONICS CO., LTD.", "KWANG-SUNG-ELECTRONICS" }, { 0x001CBA, "VerScient, Inc.", "VERSCIENT" }, { 0x001CBB, "MusicianLink", "MUSICIANLINK" }, { 0x001CBC, "CastGrabber, LLC", "CASTGRABBER-LLC" }, { 0x001CBD, "Ezze Mobile Tech., Inc.", "EZZE-MOBILE-TECH" }, { 0x001CBE, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001CBF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001CC0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001CC1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001CC2, "Part II Research, Inc.", "PART-II-RESEARCH" }, { 0x001CC3, "Pace plc", "PACE-PLC" }, { 0x001CC4, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001CC5, "3COM LTD", "3COM" }, { 0x001CC6, "ProStor Systems", "PROSTOR" }, { 0x001CC7, "Rembrandt Technologies, LLC d/b/a REMSTREAM", "REMBRANDT-TECHNOLOGIES-LLC-D/B/A-REMSTREAM" }, { 0x001CC8, "INDUSTRONIC Industrie-Electronic GmbH & Co. KG", "INDUSTRONIC-INDUSTRIE" }, { 0x001CC9, "Kaise Electronic Technology Co., Ltd.", "KAISE" }, { 0x001CCA, "Shanghai Gaozhi Science & Technology Development Co.", "SHANGHAI-GAOZHI-SCIENCE-DEVELOPMENT" }, { 0x001CCB, "Forth Corporation Public Company Limited", "FORTH-PUBLIC-COMPANY" }, { 0x001CCC, "Research In Motion Limited", "RESEARCH-IN-MOTION" }, { 0x001CCD, "Alektrona Corporation", "ALEKTRONA" }, { 0x001CCE, "By Techdesign", "BY-TECHDESIGN" }, { 0x001CCF, "LIMETEK", "LIMETEK" }, { 0x001CD0, "Circleone Co.,Ltd.", "CIRCLEONE" }, { 0x001CD1, "Waves Audio LTD", "WAVES-AUDIO" }, { 0x001CD2, "King Champion (Hong Kong) Limited", "KING-CHAMPION-HONG-KONG" }, { 0x001CD3, "ZP Engineering SEL", "ZP-ENGINEERING-SEL" }, { 0x001CD4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001CD5, "ZeeVee, Inc.", "ZEEVEE" }, { 0x001CD6, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001CD7, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x001CD8, "BlueAnt Wireless", "BLUEANT-WIRELESS" }, { 0x001CD9, "GlobalTop Technology Inc.", "GLOBALTOP" }, { 0x001CDA, "Exegin Technologies Limited", "EXEGIN-TECHNOLOGIES" }, { 0x001CDB, "CARPOINT CO.,LTD", "CARPOINT" }, { 0x001CDC, "Custom Computer Services, Inc.", "CUSTOM-SERVICES" }, { 0x001CDD, "COWBELL ENGINEERING CO., LTD.", "COWBELL-ENGINEERING" }, { 0x001CDE, "Interactive Multimedia eXchange Inc.", "INTERACTIVE-MULTIMEDIA-EXCHANGE" }, { 0x001CDF, "Belkin International Inc.", "BELKIN" }, { 0x001CE0, "DASAN TPS", "DASAN-TPS" }, { 0x001CE1, "INDRA SISTEMAS, S.A.", "INDRA-SISTEMAS" }, { 0x001CE2, "Attero Tech, LLC.", "ATTERO-TECH-LLC" }, { 0x001CE3, "Optimedical Systems", "OPTIMEDICAL" }, { 0x001CE4, "EleSy JSC", "ELESY-JSC" }, { 0x001CE5, "MBS Electronic Systems GmbH", "MBS" }, { 0x001CE6, "INNES", "INNES" }, { 0x001CE7, "Rocon PLC Research Centre", "ROCON-PLC-RESEARCH-CENTRE" }, { 0x001CE8, "Cummins Inc", "CUMMINS" }, { 0x001CE9, "Galaxy Technology Limited", "GALAXY" }, { 0x001CEA, "Scientific-Atlanta, Inc", "SCIENTIFIC-ATLANTA" }, { 0x001CEB, "Nortel", "NORTEL" }, { 0x001CEC, "Mobilesoft (Aust.) Pty Ltd", "MOBILESOFT-AUST-PTY" }, { 0x001CED, "ENVIRONNEMENT SA", "ENVIRONNEMENT" }, { 0x001CEE, "SHARP Corporation", "SHARP" }, { 0x001CEF, "Primax Electronics LTD", "PRIMAX-ELECTRONICS" }, { 0x001CF0, "D-Link Corporation", "D-LINK" }, { 0x001CF1, "SUPoX Technology Co. , LTD.", "SUPOX" }, { 0x001CF2, "Tenlon Technology Co.,Ltd.", "TENLON" }, { 0x001CF3, "EVS BROADCAST EQUIPMENT", "EVS-BROADCAST-EQUIPMENT" }, { 0x001CF4, "Media Technology Systems Inc", "MEDIA" }, { 0x001CF5, "Wiseblue Technology Limited", "WISEBLUE" }, { 0x001CF6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001CF7, "AudioScience", "AUDIOSCIENCE" }, { 0x001CF8, "Parade Technologies, Ltd.", "PARADE-TECHNOLOGIES" }, { 0x001CF9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001CFA, "Alarm.com", "ALARM-COM" }, { 0x001CFB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001CFC, "Suminet Communication Technologies (Shanghai) Co., Ltd.", "SUMINET-COMMUNICATION-TECHNOLOGIES-SHANGHAI" }, { 0x001CFD, "Universal Electronics", "UNIVERSAL-ELECTRONICS" }, { 0x001CFE, "Quartics Inc", "QUARTICS" }, { 0x001CFF, "Napera Networks Inc", "NAPERA-NETWORKS" }, { 0x001D00, "Brivo Systems, LLC", "BRIVO-LLC" }, { 0x001D01, "Neptune Digital", "NEPTUNE-DIGITAL" }, { 0x001D02, "Cybertech Telecom Development", "CYBERTECH-TELECOM-DEVELOPMENT" }, { 0x001D03, "Design Solutions Inc.", "DESIGN-SOLUTIONS" }, { 0x001D04, "Zipit Wireless, Inc.", "ZIPIT-WIRELESS" }, { 0x001D05, "iLight", "ILIGHT" }, { 0x001D06, "HM Electronics, Inc.", "HM-ELECTRONICS" }, { 0x001D07, "Shenzhen Sang Fei Consumer Communications Co.,Ltd", "SHENZHEN-SANG-FEI-CONSUMER-COMMUNICATION" }, { 0x001D08, "JIANGSU YINHE ELECTRONICS CO., LTD", "JIANGSU-YINHE-ELECTRONICS" }, { 0x001D09, "Dell Inc", "DELL" }, { 0x001D0A, "Davis Instruments, Inc.", "DAVIS-INSTRUMENTS" }, { 0x001D0B, "Power Standards Lab", "POWER-STANDARDS-LAB" }, { 0x001D0C, "MobileCompia", "MOBILECOMPIA" }, { 0x001D0D, "Sony Computer Entertainment inc.", "SONY-ENTERTAINMENT" }, { 0x001D0E, "Agapha Technology co., Ltd.", "AGAPHA" }, { 0x001D0F, "TP-LINK Technologies Co., Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0x001D10, "LightHaus Logic, Inc.", "LIGHTHAUS-LOGIC" }, { 0x001D11, "Analogue & Micro Ltd", "ANALOGUE-MICRO" }, { 0x001D12, "ROHM CO., LTD.", "ROHM" }, { 0x001D13, "NextGTV", "NEXTGTV" }, { 0x001D14, "SPERADTONE INFORMATION TECHNOLOGY LIMITED", "SPERADTONE-INFORMATION" }, { 0x001D15, "Shenzhen Dolphin Electronic Co., Ltd", "SHENZHEN-DOLPHIN" }, { 0x001D16, "Efixo", "EFIXO" }, { 0x001D17, "Digital Sky Corporation", "DIGITAL-SKY" }, { 0x001D18, "Power Innovation GmbH", "POWER-INNOVATION" }, { 0x001D19, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x001D1A, "OvisLink S.A.", "OVISLINK" }, { 0x001D1B, "Sangean Electronics Inc.", "SANGEAN-ELECTRONICS" }, { 0x001D1C, "Gennet s.a.", "GENNET" }, { 0x001D1D, "Inter-M Corporation", "INTER-M" }, { 0x001D1E, "KYUSHU TEN CO.,LTD", "KYUSHU-TEN" }, { 0x001D1F, "Siauliu Tauro Televizoriai, JSC", "SIAULIU-TAURO-TELEVIZORIAI-JSC" }, { 0x001D20, "COMTREND CO.", "COMTREND" }, { 0x001D21, "Alcad SL", "ALCAD-SL" }, { 0x001D22, "Foss Analytical A/S", "FOSS-ANALYTICAL-A/S" }, { 0x001D23, "SENSUS", "SENSUS" }, { 0x001D24, "Aclara Power-Line Systems Inc.", "ACLARA-POWER-LINE" }, { 0x001D25, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001D26, "Rockridgesound Technology Co.", "ROCKRIDGESOUND" }, { 0x001D27, "NAC-INTERCOM", "NAC-INTERCOM" }, { 0x001D28, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001D29, "Doro AB", "DORO-AB" }, { 0x001D2A, "SHENZHEN BUL-TECH CO.,LTD.", "SHENZHEN-BUL-TECH" }, { 0x001D2B, "Wuhan Pont Technology CO. , LTD", "WUHAN-PONT" }, { 0x001D2C, "Wavetrend Technologies (Pty) Limited", "WAVETREND-TECHNOLOGIES-PTY" }, { 0x001D2D, "Pylone, Inc.", "PYLONE" }, { 0x001D2E, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001D2F, "QuantumVision Corporation", "QUANTUMVISION" }, { 0x001D30, "YX Wireless S.A.", "YX-WIRELESS" }, { 0x001D31, "HIGHPRO INTERNATIONAL R&D CO,.LTD.", "HIGHPRO-R-D" }, { 0x001D32, "Longkay Communication & Technology (Shanghai) Co. Ltd", "LONGKAY-COMMUNICATION-SHANGHAI" }, { 0x001D33, "Maverick Systems Inc.", "MAVERICK" }, { 0x001D34, "SYRIS Technology Corp", "SYRIS" }, { 0x001D35, "Viconics Electronics Inc.", "VICONICS-ELECTRONICS" }, { 0x001D36, "ELECTRONICS CORPORATION OF INDIA LIMITED", "ELECTRONICS-OF-INDIA" }, { 0x001D37, "Thales-Panda Transportation System", "THALES-PANDA-TRANSPORTATION-SYSTEM" }, { 0x001D38, "Seagate Technology", "SEAGATE" }, { 0x001D39, "MOOHADIGITAL CO., LTD", "MOOHADIGITAL" }, { 0x001D3A, "mh acoustics LLC", "MH-ACOUSTICS-LLC" }, { 0x001D3B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D3C, "Muscle Corporation", "MUSCLE" }, { 0x001D3D, "Avidyne Corporation", "AVIDYNE" }, { 0x001D3E, "SAKA TECHNO SCIENCE CO.,LTD", "SAKA-TECHNO-SCIENCE" }, { 0x001D3F, "Mitron Pty Ltd", "MITRON-PTY" }, { 0x001D40, "Living Independently Group, Inc.", "LIVING-INDEPENDENTLY-GROUP" }, { 0x001D41, "Hardy Instruments", "HARDY-INSTRUMENTS" }, { 0x001D42, "Nortel", "NORTEL" }, { 0x001D43, "Shenzhen G-link Digital Technology Co., Ltd.", "SHENZHEN-G-LINK-DIGITAL" }, { 0x001D44, "Krohne", "KROHNE" }, { 0x001D45, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001D46, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001D47, "Covote GmbH & Co KG", "COVOTE" }, { 0x001D48, "Sensor-Technik Wiedemann GmbH", "SENSOR-TECHNIK-WIEDEMANN" }, { 0x001D49, "Innovation Wireless Inc.", "INNOVATION-WIRELESS" }, { 0x001D4A, "Carestream Health, Inc.", "CARESTREAM-HEALTH" }, { 0x001D4B, "Grid Connect Inc.", "GRID-CONNECT" }, { 0x001D4C, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x001D4D, "Adaptive Recognition Hungary, Inc", "ADAPTIVE-RECOGNITION-HUNGARY" }, { 0x001D4E, "TCM Mobile LLC", "TCM-MOBILE-LLC" }, { 0x001D4F, "Apple", "APPLE" }, { 0x001D50, "SPINETIX SA", "SPINETIX" }, { 0x001D51, "Babcock & Wilcox Power Generation Group, Inc", "BABCOCK-WILCOX-POWER-GENERATION-GROUP" }, { 0x001D52, "Defzone B.V.", "DEFZONE" }, { 0x001D53, "S&O Electronics (Malaysia) Sdn. Bhd.", "S-O-ELECTRONICS-MALAYSIA-SDN-BHD" }, { 0x001D54, "Sunnic Technology & Merchandise INC.", "SUNNIC-MERCHANDISE" }, { 0x001D55, "ZANTAZ, Inc", "ZANTAZ" }, { 0x001D56, "Kramer Electronics Ltd.", "KRAMER-ELECTRONICS" }, { 0x001D57, "CAETEC Messtechnik", "CAETEC-MESSTECHNIK" }, { 0x001D58, "CQ Inc", "CQ" }, { 0x001D59, "Mitra Energy & Infrastructure", "MITRA-ENERGY-INFRASTRUCTURE" }, { 0x001D5A, "2Wire Inc.", "2WIRE" }, { 0x001D5B, "Tecvan Informática Ltda", "TECVAN-INFORMáTICA-LTDA" }, { 0x001D5C, "Tom Communication Industrial Co.,Ltd.", "TOM-COMMUNICATION-INDUSTRIAL" }, { 0x001D5D, "Control Dynamics Pty. Ltd.", "CONTROL-DYNAMICS-PTY" }, { 0x001D5E, "COMING MEDIA CORP.", "COMING-MEDIA" }, { 0x001D5F, "OverSpeed SARL", "OVERSPEED-SARL" }, { 0x001D60, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001D61, "BIJ Corporation", "BIJ" }, { 0x001D62, "InPhase Technologies", "INPHASE-TECHNOLOGIES" }, { 0x001D63, "Miele & Cie. KG", "MIELE-CIE" }, { 0x001D64, "Adam Communications Systems Int Ltd", "ADAM-COMMUNICATION-INT" }, { 0x001D65, "Microwave Radio Communications", "MICROWAVE-RADIO-COMMUNICATION" }, { 0x001D66, "Hyundai Telecom", "HYUNDAI-TELECOM" }, { 0x001D67, "AMEC", "AMEC" }, { 0x001D68, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x001D69, "Knorr-Bremse IT-Services GmbH", "KNORR-BREMSE-IT-SERVICES" }, { 0x001D6A, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0x001D6B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001D6C, "ClariPhy Communications, Inc.", "CLARIPHY-COMMUNICATION" }, { 0x001D6D, "Confidant International LLC", "CONFIDANT-LLC" }, { 0x001D6E, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D6F, "Chainzone Technology Co., Ltd", "CHAINZONE" }, { 0x001D70, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001D71, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001D72, "Wistron Corporation", "WISTRON" }, { 0x001D73, "Buffalo Inc.", "BUFFALO" }, { 0x001D74, "Tianjin China-Silicon Microelectronics Co., Ltd.", "TIANJIN-CHINA-SILICON-MICROELECTRONICS" }, { 0x001D75, "Radioscape PLC", "RADIOSCAPE-PLC" }, { 0x001D76, "Eyeheight Ltd.", "EYEHEIGHT" }, { 0x001D77, "NSGate", "NSGATE" }, { 0x001D78, "Invengo Information Technology Co.,Ltd", "INVENGO-INFORMATION" }, { 0x001D79, "SIGNAMAX LLC", "SIGNAMAX-LLC" }, { 0x001D7A, "Wideband Semiconductor, Inc.", "WIDEBAND-SEMICONDUCTOR" }, { 0x001D7B, "Ice Energy, Inc.", "ICE-ENERGY" }, { 0x001D7C, "ABE Elettronica S.p.A.", "ABE-ELETTRONICA-S-P-A" }, { 0x001D7D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001D7E, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001D7F, "Tekron International Ltd", "TEKRON" }, { 0x001D80, "Beijing Huahuan Eletronics Co.,Ltd", "BEIJING-HUAHUAN-ELETRONICS" }, { 0x001D81, "GUANGZHOU GATEWAY ELECTRONICS CO., LTD", "GUANGZHOU-GATEWAY-ELECTRONICS" }, { 0x001D82, "GN A/S (GN Netcom A/S)", "GN-A/S-GN-NETCOM-A/S" }, { 0x001D83, "Emitech Corporation", "EMITECH" }, { 0x001D84, "Gateway, Inc.", "GATEWAY" }, { 0x001D85, "Call Direct Cellular Solutions", "CALL-DIRECT-CELLULAR-SOLUTIONS" }, { 0x001D86, "Shinwa Industries(China) Ltd.", "SHINWA-INDUSTRIES-CHINA" }, { 0x001D87, "VigTech Labs Sdn Bhd", "VIGTECH-LABS-SDN-BHD" }, { 0x001D88, "Clearwire", "CLEARWIRE" }, { 0x001D89, "VaultStor Corporation", "VAULTSTOR" }, { 0x001D8A, "TechTrex Inc", "TECHTREX" }, { 0x001D8B, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x001D8C, "La Crosse Technology LTD", "LA-CROSSE" }, { 0x001D8D, "Raytek GmbH", "RAYTEK" }, { 0x001D8E, "Alereon, Inc.", "ALEREON" }, { 0x001D8F, "PureWave Networks", "PUREWAVE-NETWORKS" }, { 0x001D90, "EMCO Flow Systems", "EMCO-FLOW" }, { 0x001D91, "Digitize, Inc", "DIGITIZE" }, { 0x001D92, "MICRO-STAR INT'L CO.,LTD.", "MICRO-STAR" }, { 0x001D93, "Modacom", "MODACOM" }, { 0x001D94, "Climax Technology Co., Ltd", "CLIMAX" }, { 0x001D95, "Flash, Inc.", "FLASH" }, { 0x001D96, "WatchGuard Video", "WATCHGUARD-VIDEO" }, { 0x001D97, "Alertus Technologies LLC", "ALERTUS-TECHNOLOGIES-LLC" }, { 0x001D98, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001D99, "Cyan Optic, Inc.", "CYAN-OPTIC" }, { 0x001D9A, "GODEX INTERNATIONAL CO., LTD", "GODEX" }, { 0x001D9B, "Hokuyo Automatic Co., Ltd.", "HOKUYO-AUTOMATIC" }, { 0x001D9C, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0x001D9D, "ARTJOY INTERNATIONAL LIMITED", "ARTJOY" }, { 0x001D9E, "AXION TECHNOLOGIES", "AXION-TECHNOLOGIES" }, { 0x001D9F, "MATT R.P.Traczynscy Sp.J.", "MATT-R-P-TRACZYNSCY-SP-J" }, { 0x001DA0, "Heng Yu Electronic Manufacturing Company Limited", "HENG-YU-MANUFACTURING-COMPANY" }, { 0x001DA1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001DA2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001DA3, "SabiOso", "SABIOSO" }, { 0x001DA4, "Hangzhou System Technology CO., LTD", "HANGZHOU-SYSTEM" }, { 0x001DA5, "WB Electronics", "WB-ELECTRONICS" }, { 0x001DA6, "Media Numerics Limited", "MEDIA-NUMERICS" }, { 0x001DA7, "Seamless Internet", "SEAMLESS-INTERNET" }, { 0x001DA8, "Takahata Electronics Co.,Ltd", "TAKAHATA-ELECTRONICS" }, { 0x001DA9, "Castles Technology, Co., LTD", "CASTLES" }, { 0x001DAA, "DrayTek Corp.", "DRAYTEK" }, { 0x001DAB, "SwissQual License AG", "SWISSQUAL-LICENSE" }, { 0x001DAC, "Gigamon Systems LLC", "GIGAMON-LLC" }, { 0x001DAD, "Sinotech Engineering Consultants, Inc. Geotechnical Enginee", "SINOTECH-ENGINEERING-CONSULTANTS-GEOTECHNICAL-ENGINEE" }, { 0x001DAE, "CHANG TSENG TECHNOLOGY CO., LTD", "CHANG-TSENG" }, { 0x001DAF, "Nortel", "NORTEL" }, { 0x001DB0, "FuJian HengTong Information Technology Co.,Ltd", "FUJIAN-HENGTONG-INFORMATION" }, { 0x001DB1, "Crescendo Networks", "CRESCENDO-NETWORKS" }, { 0x001DB2, "HOKKAIDO ELECTRIC ENGINEERING CO.,LTD.", "HOKKAIDO-ELECTRIC-ENGINEERING" }, { 0x001DB3, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001DB4, "KUMHO ENG CO.,LTD", "KUMHO-ENG" }, { 0x001DB5, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x001DB6, "BestComm Networks, Inc.", "BESTCOMM-NETWORKS" }, { 0x001DB7, "Tendril Networks, Inc.", "TENDRIL-NETWORKS" }, { 0x001DB8, "Intoto Inc.", "INTOTO" }, { 0x001DB9, "Wellspring Wireless", "WELLSPRING-WIRELESS" }, { 0x001DBA, "Sony Corporation", "SONY" }, { 0x001DBB, "Dynamic System Electronics Corp.", "DYNAMIC-SYSTEM-ELECTRONICS" }, { 0x001DBC, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001DBD, "Versamed Inc.", "VERSAMED" }, { 0x001DBE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DBF, "Radiient Technologies, Inc.", "RADIIENT-TECHNOLOGIES" }, { 0x001DC0, "Enphase Energy", "ENPHASE-ENERGY" }, { 0x001DC1, "Audinate Pty L", "AUDINATE-PTY-L" }, { 0x001DC2, "XORTEC OY", "XORTEC-OY" }, { 0x001DC3, "RIKOR TV, Ltd", "RIKOR-TV" }, { 0x001DC4, "AIOI Systems Co., Ltd.", "AIOI" }, { 0x001DC5, "Beijing Jiaxun Feihong Electricial Co., Ltd.", "BEIJING-JIAXUN-FEIHONG-ELECTRICIAL" }, { 0x001DC6, "SNR Inc.", "SNR" }, { 0x001DC7, "L-3 Communications Geneva Aerospace", "L-3-COMMUNICATION-GENEVA-AEROSPACE" }, { 0x001DC8, "Navionics Research Inc., dba SCADAmetrics", "NAVIONICS-RESEARCH-DBA-SCADAMETRICS" }, { 0x001DC9, "GainSpan Corp.", "GAINSPAN" }, { 0x001DCA, "PAV Electronics Limited", "PAV-ELECTRONICS" }, { 0x001DCB, "Exéns Development Oy", "EXéNS-DEVELOPMENT-OY" }, { 0x001DCC, "Hetra Secure Solutions", "HETRA-SECURE-SOLUTIONS" }, { 0x001DCD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DCF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001DD7, "Algolith", "ALGOLITH" }, { 0x001DD8, "Microsoft Corporation", "MICROSOFT" }, { 0x001DD9, "Hon Hai Precision Ind.Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001DDA, "Mikroelektronika spol. s r. o.", "MIKROELEKTRONIKA-SPOL-S-R-O" }, { 0x001DDB, "C-BEL Corporation", "C-BEL" }, { 0x001DDC, "HangZhou DeChangLong Tech&Info Co.,Ltd", "HANGZHOU-DECHANGLONG-TECH-INFO" }, { 0x001DDD, "DAT H.K. LIMITED", "DAT-H-K" }, { 0x001DDE, "Zhejiang Broadcast&Television Technology Co.,Ltd.", "ZHEJIANG-BROADCAST-TELEVISION" }, { 0x001DDF, "Sunitec Enterprise Co., Ltd.", "SUNITEC" }, { 0x001DE0, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001DE1, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001DE2, "Radionor Communications", "RADIONOR-COMMUNICATION" }, { 0x001DE3, "Intuicom", "INTUICOM" }, { 0x001DE4, "Visioneered Image Systems", "VISIONEERED-IMAGE" }, { 0x001DE5, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001DE6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001DE7, "Marine Sonic Technology, Ltd.", "MARINE-SONIC" }, { 0x001DE8, "Nikko Denki Tsushin Corporation(NDTC)", "NIKKO-DENKI-TSUSHIN-NDTC" }, { 0x001DE9, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001DEA, "Commtest Instruments Ltd", "COMMTEST-INSTRUMENTS" }, { 0x001DEB, "DINEC International", "DINEC" }, { 0x001DEC, "Marusys", "MARUSYS" }, { 0x001DED, "Grid Net, Inc.", "GRID-NET" }, { 0x001DEE, "NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA.", "NEXTVISION-SISTEMAS-DIGITAIS-DE-TELEVISÃO-LTDA" }, { 0x001DEF, "TRIMM, INC.", "TRIMM" }, { 0x001DF0, "Vidient Systems, Inc.", "VIDIENT" }, { 0x001DF1, "Intego Systems, Inc.", "INTEGO" }, { 0x001DF2, "Netflix, Inc.", "NETFLIX" }, { 0x001DF3, "SBS Science & Technology Co., Ltd", "SBS-SCIENCE" }, { 0x001DF4, "Magellan Technology Pty Limited", "MAGELLAN-PTY" }, { 0x001DF5, "Sunshine Co,LTD", "SUNSHINE" }, { 0x001DF6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001DF7, "R. STAHL Schaltgeräte GmbH", "R-STAHL-SCHALTGERäTE" }, { 0x001DF8, "Webpro Vision Technology Corporation", "WEBPRO-VISION" }, { 0x001DF9, "Cybiotronics (Far East) Limited", "CYBIOTRONICS-FAR-EAST" }, { 0x001DFA, "Fujian LANDI Commercial Equipment Co.,Ltd", "FUJIAN-LANDI-COMMERCIAL-EQUIPMENT" }, { 0x001DFB, "NETCLEUS Systems Corporation", "NETCLEUS" }, { 0x001DFC, "KSIC", "KSIC" }, { 0x001DFD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001DFE, "Palm, Inc", "PALM" }, { 0x001DFF, "Network Critical Solutions Ltd", "NETWORK-CRITICAL-SOLUTIONS" }, { 0x001E00, "Shantou Institute of Ultrasonic Instruments", "SHANTOU-INSTITUTE-OF-ULTRASONIC-INSTRUMENTS" }, { 0x001E01, "Renesas Technology Sales Co., Ltd.", "RENESAS-SALES" }, { 0x001E02, "Sougou Keikaku Kougyou Co.,Ltd.", "SOUGOU-KEIKAKU-KOUGYOU" }, { 0x001E03, "LiComm Co., Ltd.", "LICOMM" }, { 0x001E04, "Hanson Research Corporation", "HANSON-RESEARCH" }, { 0x001E05, "Xseed Technologies & Computing", "XSEED-TECHNOLOGIES-COMPUTING" }, { 0x001E06, "WIBRAIN", "WIBRAIN" }, { 0x001E07, "Winy Technology Co., Ltd.", "WINY" }, { 0x001E08, "Centec Networks Inc", "CENTEC-NETWORKS" }, { 0x001E09, "ZEFATEK Co.,LTD", "ZEFATEK" }, { 0x001E0A, "Syba Tech Limited", "SYBA-TECH" }, { 0x001E0B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001E0C, "Sherwood Information Partners, Inc.", "SHERWOOD-INFORMATION-PARTNERS" }, { 0x001E0D, "Micran Ltd.", "MICRAN" }, { 0x001E0E, "MAXI VIEW HOLDINGS LIMITED", "MAXI-VIEW-HOLDINGS" }, { 0x001E0F, "Briot International", "BRIOT" }, { 0x001E10, "ShenZhen Huawei Communication Technologies Co.,Ltd.", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x001E11, "ELELUX INTERNATIONAL LTD", "ELELUX" }, { 0x001E12, "Ecolab", "ECOLAB" }, { 0x001E13, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001E14, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001E15, "Beech Hill Electronics", "BEECH-HILL-ELECTRONICS" }, { 0x001E16, "Keytronix", "KEYTRONIX" }, { 0x001E17, "STN BV", "STN" }, { 0x001E18, "Radio Activity srl", "RADIO-ACTIVITY-SRL" }, { 0x001E19, "GTRI", "GTRI" }, { 0x001E1A, "Best Source Taiwan Inc.", "BEST-SOURCE-TAIWAN" }, { 0x001E1B, "Digital Stream Technology, Inc.", "DIGITAL-STREAM" }, { 0x001E1C, "SWS Australia Pty Limited", "SWS-AUSTRALIA-PTY" }, { 0x001E1D, "East Coast Datacom, Inc.", "EAST-COAST-DATACOM" }, { 0x001E1E, "Honeywell Life Safety", "HONEYWELL-LIFE-SAFETY" }, { 0x001E1F, "Nortel", "NORTEL" }, { 0x001E20, "Intertain Inc.", "INTERTAIN" }, { 0x001E21, "Qisda Co.", "QISDA" }, { 0x001E22, "ARVOO Imaging Products BV", "ARVOO-IMAGING-PRODUCTS" }, { 0x001E23, "Electronic Educational Devices, Inc", "EDUCATIONAL-DEVICES" }, { 0x001E24, "Zhejiang Bell Technology Co.,ltd", "ZHEJIANG-BELL" }, { 0x001E25, "Intek Digital Inc", "INTEK-DIGITAL" }, { 0x001E26, "Digifriends Co. Ltd", "DIGIFRIENDS" }, { 0x001E27, "SBN TECH Co.,Ltd.", "SBN-TECH" }, { 0x001E28, "Lumexis Corporation", "LUMEXIS" }, { 0x001E29, "Hypertherm Inc", "HYPERTHERM" }, { 0x001E2A, "Netgear Inc.", "NETGEAR" }, { 0x001E2B, "Radio Systems Design, Inc.", "RADIO-DESIGN" }, { 0x001E2C, "CyVerse Corporation", "CYVERSE" }, { 0x001E2D, "STIM", "STIM" }, { 0x001E2E, "SIRTI S.p.A.", "SIRTI-S-P-A" }, { 0x001E2F, "DiMoto Pty Ltd", "DIMOTO-PTY" }, { 0x001E30, "Shireen Inc", "SHIREEN" }, { 0x001E31, "INFOMARK CO.,LTD.", "INFOMARK" }, { 0x001E32, "Zensys", "ZENSYS" }, { 0x001E33, "Inventec Corporation", "INVENTEC" }, { 0x001E34, "CryptoMetrics", "CRYPTOMETRICS" }, { 0x001E35, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001E36, "IPTE", "IPTE" }, { 0x001E37, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x001E38, "Bluecard Software Technology Co., Ltd.", "BLUECARD-SOFTWARE" }, { 0x001E39, "Comsys Communication Ltd.", "COMSYS-COMMUNICATION" }, { 0x001E3A, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001E3B, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001E3C, "Lyngbox Media AB", "LYNGBOX-MEDIA-AB" }, { 0x001E3D, "Alps Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x001E3E, "KMW Inc.", "KMW" }, { 0x001E3F, "TrellisWare Technologies, Inc.", "TRELLISWARE-TECHNOLOGIES" }, { 0x001E40, "Shanghai DareGlobal Technologies Co.,Ltd.", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x001E41, "Microwave Communication & Component, Inc.", "MICROWAVE-COMMUNICATION-COMPONENT" }, { 0x001E42, "Teltonika", "TELTONIKA" }, { 0x001E43, "AISIN AW CO.,LTD.", "AISIN-AW" }, { 0x001E44, "SANTEC", "SANTEC" }, { 0x001E45, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x001E46, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E47, "PT. Hariff Daya Tunggal Engineering", "PT-HARIFF-DAYA-TUNGGAL-ENGINEERING" }, { 0x001E48, "Wi-Links", "WI-LINKS" }, { 0x001E49, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001E4A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001E4B, "City Theatrical", "CITY-THEATRICAL" }, { 0x001E4C, "Hon Hai Precision Ind.Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001E4D, "Welkin Sciences, LLC", "WELKIN-SCIENCES-LLC" }, { 0x001E4E, "DAKO EDV-Ingenieur- und Systemhaus GmbH", "DAKO-EDV-INGENIEUR--UND-SYSTEMHAUS" }, { 0x001E4F, "Dell Inc.", "DELL" }, { 0x001E50, "BATTISTONI RESEARCH", "BATTISTONI-RESEARCH" }, { 0x001E51, "Converter Industry Srl", "CONVERTER-INDUSTRY-SRL" }, { 0x001E52, "Apple", "APPLE" }, { 0x001E53, "Further Tech Co., LTD", "FURTHER-TECH" }, { 0x001E54, "TOYO ELECTRIC Corporation", "TOYO-ELECTRIC" }, { 0x001E55, "COWON SYSTEMS,Inc.", "COWON" }, { 0x001E56, "Bally Wulff Entertainment GmbH", "BALLY-WULFF-ENTERTAINMENT" }, { 0x001E57, "ALCOMA, spol. s r.o.", "ALCOMA-SPOL-S-R-O" }, { 0x001E58, "D-Link Corporation", "D-LINK" }, { 0x001E59, "Silicon Turnkey Express, LLC", "SILICON-TURNKEY-EXPRESS-LLC" }, { 0x001E5A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E5B, "Unitron Company, Inc.", "UNITRON-COMPANY" }, { 0x001E5C, "RB GeneralEkonomik", "RB-GENERALEKONOMIK" }, { 0x001E5D, "Holosys d.o.o.", "HOLOSYS-D-O-O" }, { 0x001E5E, "COmputime Ltd.", "COMPUTIME" }, { 0x001E5F, "KwikByte, LLC", "KWIKBYTE-LLC" }, { 0x001E60, "Digital Lighting Systems, Inc", "DIGITAL-LIGHTING" }, { 0x001E61, "ITEC GmbH", "ITEC" }, { 0x001E62, "Siemon", "SIEMON" }, { 0x001E63, "Vibro-Meter SA", "VIBRO-METER" }, { 0x001E64, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E65, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E66, "RESOL Elektronische Regelungen GmbH", "RESOL-ELEKTRONISCHE-REGELUNGEN" }, { 0x001E67, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001E68, "Quanta Computer", "QUANTA" }, { 0x001E69, "Thomson Inc.", "THOMSON" }, { 0x001E6A, "Beijing Bluexon Technology Co.,Ltd", "BEIJING-BLUEXON" }, { 0x001E6B, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x001E6C, "Carbon Mountain LLC", "CARBON-MOUNTAIN-LLC" }, { 0x001E6D, "IT R&D Center", "IT-R-D-CENTER" }, { 0x001E6E, "Shenzhen First Mile Communications Ltd", "SHENZHEN-FIRST-MILE-COMMUNICATION" }, { 0x001E6F, "Magna-Power Electronics, Inc.", "MAGNA-POWER-ELECTRONICS" }, { 0x001E70, "Cobham Defence Communications Ltd", "COBHAM-DEFENCE-COMMUNICATION" }, { 0x001E71, "MIrcom Group of Companies", "MIRCOM-GROUP-OF-COMPANIES" }, { 0x001E72, "PCS", "PCS" }, { 0x001E73, "ZTE CORPORATION", "ZTE" }, { 0x001E74, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001E75, "LG Electronics", "LG-ELECTRONICS" }, { 0x001E76, "Thermo Fisher Scientific", "THERMO-FISHER-SCIENTIFIC" }, { 0x001E77, "Air2App", "AIR2APP" }, { 0x001E78, "Owitek Technology Ltd.,", "OWITEK" }, { 0x001E79, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001E7A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001E7B, "R.I.CO. S.r.l.", "R-I-S-R-L" }, { 0x001E7C, "Taiwick Limited", "TAIWICK" }, { 0x001E7D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001E7E, "Nortel", "NORTEL" }, { 0x001E7F, "CBM of America", "CBM-OF-AMERICA" }, { 0x001E80, "Last Mile Ltd.", "LAST-MILE" }, { 0x001E81, "CNB Technology Inc.", "CNB" }, { 0x001E82, "SanDisk Corporation", "SANDISK" }, { 0x001E83, "LAN/MAN Standards Association (LMSC)", "LAN/MAN-STANDARDS-ASSOCIATION-LMSC" }, { 0x001E84, "Pika Technologies Inc.", "PIKA-TECHNOLOGIES" }, { 0x001E85, "Lagotek Corporation", "LAGOTEK" }, { 0x001E86, "MEL Co.,Ltd.", "MEL" }, { 0x001E87, "Realease Limited", "REALEASE" }, { 0x001E88, "ANDOR SYSTEM SUPPORT CO., LTD.", "ANDOR-SYSTEM-SUPPORT" }, { 0x001E89, "CRFS Limited", "CRFS" }, { 0x001E8A, "eCopy, Inc", "ECOPY" }, { 0x001E8B, "Infra Access Korea Co., Ltd.", "INFRA-ACCESS-KOREA" }, { 0x001E8C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001E8D, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001E8E, "Hunkeler AG", "HUNKELER" }, { 0x001E8F, "CANON INC.", "CANON" }, { 0x001E90, "Elitegroup Computer Systems Co", "ELITEGROUP" }, { 0x001E91, "KIMIN Electronic Co., Ltd.", "KIMIN" }, { 0x001E92, "JEULIN S.A.", "JEULIN" }, { 0x001E93, "CiriTech Systems Inc", "CIRITECH" }, { 0x001E94, "SUPERCOM TECHNOLOGY CORPORATION", "SUPERCOM" }, { 0x001E95, "SIGMALINK", "SIGMALINK" }, { 0x001E96, "Sepura Plc", "SEPURA-PLC" }, { 0x001E97, "Medium Link System Technology CO., LTD,", "MEDIUM-LINK-SYSTEM" }, { 0x001E98, "GreenLine Communications", "GREENLINE-COMMUNICATION" }, { 0x001E99, "Vantanol Industrial Corporation", "VANTANOL-INDUSTRIAL" }, { 0x001E9A, "HAMILTON Bonaduz AG", "HAMILTON-BONADUZ" }, { 0x001E9B, "San-Eisha, Ltd.", "SAN-EISHA" }, { 0x001E9C, "Fidustron INC", "FIDUSTRON" }, { 0x001E9D, "Recall Technologies, Inc.", "RECALL-TECHNOLOGIES" }, { 0x001E9E, "ddm hopt + schuler Gmbh + Co. KG", "DDM-HOPT-+-SCHULER-+" }, { 0x001E9F, "Visioneering Systems, Inc.", "VISIONEERING" }, { 0x001EA0, "XLN-t", "XLN-T" }, { 0x001EA1, "Brunata a/s", "BRUNATA-A/S" }, { 0x001EA2, "Symx Systems, Inc.", "SYMX" }, { 0x001EA3, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001EA4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001EA5, "ROBOTOUS, Inc.", "ROBOTOUS" }, { 0x001EA6, "Best IT World (India) Pvt. Ltd.", "BEST-IT-WORLD-INDIA-PVT" }, { 0x001EA7, "ActionTec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001EA8, "Datang Mobile Communications Equipment CO.,LTD", "DATANG-MOBILE-COMMUNICATION-EQUIPMENT" }, { 0x001EA9, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001EAA, "E-Senza Technologies GmbH", "E-SENZA-TECHNOLOGIES" }, { 0x001EAB, "TeleWell Oy", "TELEWELL-OY" }, { 0x001EAC, "Armadeus Systems", "ARMADEUS" }, { 0x001EAD, "Wingtech Group Limited", "WINGTECH-GROUP" }, { 0x001EAE, "Continental Automotive Systems", "CONTINENTAL-AUTOMOTIVE" }, { 0x001EAF, "Ophir Optronics Ltd", "OPHIR-OPTRONICS" }, { 0x001EB0, "ImesD Electronica S.L.", "IMESD-ELECTRONICA-S-L" }, { 0x001EB1, "Cryptsoft Pty Ltd", "CRYPTSOFT-PTY" }, { 0x001EB2, "LG innotek", "LG-INNOTEK" }, { 0x001EB3, "Primex Wireless", "PRIMEX-WIRELESS" }, { 0x001EB4, "UNIFAT TECHNOLOGY LTD.", "UNIFAT" }, { 0x001EB5, "Ever Sparkle Technologies Ltd", "EVER-SPARKLE-TECHNOLOGIES" }, { 0x001EB6, "TAG Heuer SA", "TAG-HEUER" }, { 0x001EB7, "TBTech, Co., Ltd.", "TBTECH" }, { 0x001EB8, "Fortis, Inc.", "FORTIS" }, { 0x001EB9, "Sing Fai Technology Limited", "SING-FAI" }, { 0x001EBA, "High Density Devices AS", "HIGH-DENSITY-DEVICES-AS" }, { 0x001EBB, "BLUELIGHT TECHNOLOGY INC.", "BLUELIGHT" }, { 0x001EBC, "WINTECH AUTOMATION CO.,LTD.", "WINTECH-AUTOMATION" }, { 0x001EBD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001EBE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001EBF, "Haas Automation Inc.", "HAAS-AUTOMATION" }, { 0x001EC0, "Microchip Technology Inc.", "MICROCHIP" }, { 0x001EC1, "3COM EUROPE LTD", "3COM" }, { 0x001EC2, "Apple", "APPLE" }, { 0x001EC3, "Kozio, Inc.", "KOZIO" }, { 0x001EC4, "Celio Corp", "CELIO" }, { 0x001EC5, "Middle Atlantic Products Inc", "MIDDLE-ATLANTIC-PRODUCTS" }, { 0x001EC6, "Obvius Holdings LLC", "OBVIUS-HOLDINGS-LLC" }, { 0x001EC7, "2Wire, Inc.", "2WIRE" }, { 0x001EC8, "2Wire, Inc.", "2WIRE" }, { 0x001EC9, "2Wire, Inc.", "2WIRE" }, { 0x001ECA, "2Wire, Inc.", "2WIRE" }, { 0x001ECB, "2Wire, Inc.", "2WIRE" }, { 0x001ECC, "2Wire, Inc.", "2WIRE" }, { 0x001ECD, "KYLAND Technology Co. LTD", "KYLAND" }, { 0x001ECE, "2Wire, Inc.", "2WIRE" }, { 0x001ECF, "2Wire, Inc.", "2WIRE" }, { 0x001ED0, "2Wire, Inc.", "2WIRE" }, { 0x001ED1, "2Wire, Inc.", "2WIRE" }, { 0x001ED2, "2Wire, Inc.", "2WIRE" }, { 0x001ED3, "2Wire, Inc.", "2WIRE" }, { 0x001ED4, "2Wire, Inc.", "2WIRE" }, { 0x001ED5, "2Wire, Inc.", "2WIRE" }, { 0x001ED6, "2Wire, Inc.", "2WIRE" }, { 0x001ED7, "2Wire, Inc.", "2WIRE" }, { 0x001ED8, "2Wire, Inc.", "2WIRE" }, { 0x001ED9, "2Wire, Inc.", "2WIRE" }, { 0x001EDA, "2Wire, Inc.", "2WIRE" }, { 0x001EDB, "2Wire, Inc.", "2WIRE" }, { 0x001EDC, "2Wire, Inc.", "2WIRE" }, { 0x001EDD, "2Wire, Inc.", "2WIRE" }, { 0x001EDE, "2Wire, Inc.", "2WIRE" }, { 0x001EDF, "2Wire, Inc.", "2WIRE" }, { 0x001EE0, "Urmet Domus SpA", "URMET-DOMUS-SPA" }, { 0x001EE1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001EE2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001EE3, "T&W Electronics (ShenZhen) Co.,Ltd", "T-W-ELECTRONICS-SHENZHEN" }, { 0x001EE4, "ACS Solutions France", "ACS-SOLUTIONS-FRANCE" }, { 0x001EE5, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x001EE6, "Shenzhen Advanced Video Info-Tech Co., Ltd.", "SHENZHEN-ADVANCED-VIDEO-INFO-TECH" }, { 0x001EE7, "Epic Systems Inc", "EPIC" }, { 0x001EE8, "Mytek", "MYTEK" }, { 0x001EE9, "Stoneridge Electronics AB", "STONERIDGE-ELECTRONICS-AB" }, { 0x001EEA, "Sensor Switch, Inc.", "SENSOR-SWITCH" }, { 0x001EEB, "Talk-A-Phone Co.", "TALK-A-PHONE" }, { 0x001EEC, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x001EED, "Adventiq Ltd.", "ADVENTIQ" }, { 0x001EEE, "ETL Systems Ltd", "ETL" }, { 0x001EEF, "Cantronic International Limited", "CANTRONIC" }, { 0x001EF0, "Gigafin Networks", "GIGAFIN-NETWORKS" }, { 0x001EF1, "Servimat", "SERVIMAT" }, { 0x001EF2, "Micro Motion Inc", "MICRO-MOTION" }, { 0x001EF3, "From2", "FROM2" }, { 0x001EF4, "L-3 Communications Display Systems", "L-3-COMMUNICATION-DISPLAY" }, { 0x001EF5, "Hitek Automated Inc.", "HITEK-AUTOMATED" }, { 0x001EF6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001EF7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001EF8, "Emfinity Inc.", "EMFINITY" }, { 0x001EF9, "Pascom Kommunikations systeme GmbH.", "PASCOM-KOMMUNIKATIONS-SYSTEME" }, { 0x001EFA, "PROTEI Ltd.", "PROTEI" }, { 0x001EFB, "Trio Motion Technology Ltd", "TRIO-MOTION" }, { 0x001EFC, "JSC \"MASSA-K\"", "JSC-MASSA-K" }, { 0x001EFD, "Microbit 2.0 AB", "MICROBIT-2-0-AB" }, { 0x001EFE, "LEVEL s.r.o.", "LEVEL-S-R-O" }, { 0x001EFF, "Mueller-Elektronik GmbH & Co. KG", "MUELLER-ELEKTRONIK" }, { 0x001F00, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F01, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F02, "Pixelmetrix Corporation Pte Ltd", "PIXELMETRIX-PTE" }, { 0x001F03, "NUM AG", "NUM" }, { 0x001F04, "Granch Ltd.", "GRANCH" }, { 0x001F05, "iTAS Technology Corp.", "ITAS" }, { 0x001F06, "Integrated Dispatch Solutions", "INTEGRATED-DISPATCH-SOLUTIONS" }, { 0x001F07, "AZTEQ Mobile", "AZTEQ-MOBILE" }, { 0x001F08, "RISCO LTD", "RISCO" }, { 0x001F09, "JASTEC CO., LTD.", "JASTEC" }, { 0x001F0A, "Nortel", "NORTEL" }, { 0x001F0B, "Federal State Unitary Enterprise Industrial Union\"Electropribor\"", "FEDERAL-STATE-UNITARY-INDUSTRIAL-UNION-ELECTROPRIBOR" }, { 0x001F0C, "Intelligent Digital Services GmbH", "INTELLIGENT-DIGITAL-SERVICES" }, { 0x001F0D, "L3 Communications - Telemetry West", "L3-COMMUNICATION---TELEMETRY-WEST" }, { 0x001F0E, "Japan Kyastem Co., Ltd", "JAPAN-KYASTEM" }, { 0x001F0F, "Select Engineered Systems", "SELECT-ENGINEERED" }, { 0x001F10, "TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA", "TOLEDO-DO-BRASIL-INDUSTRIA-DE-BALANCAS-LTDA" }, { 0x001F11, "OPENMOKO, INC.", "OPENMOKO" }, { 0x001F12, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x001F13, "S.& A.S. Ltd.", "S-A-S" }, { 0x001F14, "NexG", "NEXG" }, { 0x001F15, "Bioscrypt Inc", "BIOSCRYPT" }, { 0x001F16, "Wistron Corporation", "WISTRON" }, { 0x001F17, "IDX Company, Ltd.", "IDX-COMPANY" }, { 0x001F18, "Hakusan.Mfg.Co,.Ltd", "HAKUSAN-MFG" }, { 0x001F19, "BEN-RI ELECTRONICA S.A.", "BEN-RI-ELECTRONICA" }, { 0x001F1A, "Prominvest", "PROMINVEST" }, { 0x001F1B, "RoyalTek Company Ltd.", "ROYALTEK-COMPANY" }, { 0x001F1C, "KOBISHI ELECTRIC Co.,Ltd.", "KOBISHI-ELECTRIC" }, { 0x001F1D, "Atlas Material Testing Technology LLC", "ATLAS-MATERIAL-TESTING-LLC" }, { 0x001F1E, "Astec Technology Co., Ltd", "ASTEC" }, { 0x001F1F, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x001F20, "Logitech Europe SA", "LOGITECH-EUROPE" }, { 0x001F21, "Inner Mongolia Yin An Science & Technology Development Co.,L", "INNER-MONGOLIA-YIN-AN-SCIENCE-DEVELOPMENT-L" }, { 0x001F22, "Source Photonics, Inc.", "SOURCE-PHOTONICS" }, { 0x001F23, "Interacoustics", "INTERACOUSTICS" }, { 0x001F24, "DIGITVIEW TECHNOLOGY CO., LTD.", "DIGITVIEW" }, { 0x001F25, "MBS GmbH", "MBS" }, { 0x001F26, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001F27, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001F28, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001F29, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x001F2A, "ACCM", "ACCM" }, { 0x001F2B, "Orange Logic", "ORANGE-LOGIC" }, { 0x001F2C, "Starbridge Networks", "STARBRIDGE-NETWORKS" }, { 0x001F2D, "Electro-Optical Imaging, Inc.", "ELECTRO-OPTICAL-IMAGING" }, { 0x001F2E, "Triangle Research Int'l Pte Ltd", "TRIANGLE-RESEARCH-PTE" }, { 0x001F2F, "Berker GmbH & Co. KG", "BERKER" }, { 0x001F30, "Travelping", "TRAVELPING" }, { 0x001F31, "Radiocomp", "RADIOCOMP" }, { 0x001F32, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001F33, "Netgear Inc.", "NETGEAR" }, { 0x001F34, "Lung Hwa Electronics Co., Ltd.", "LUNG-HWA-ELECTRONICS" }, { 0x001F35, "AIR802 LLC", "AIR802-LLC" }, { 0x001F36, "Bellwin Information Co. Ltd.,", "BELLWIN-INFORMATION" }, { 0x001F37, "Genesis I&C", "GENESIS-I-C" }, { 0x001F38, "POSITRON", "POSITRON" }, { 0x001F39, "Construcciones y Auxiliar de Ferrocarriles, S.A.", "CONSTRUCCIONES-Y-AUXILIAR-DE-FERROCARRILES" }, { 0x001F3A, "Hon Hai Precision Ind.Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001F3B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001F3C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x001F3D, "Qbit GmbH", "QBIT" }, { 0x001F3E, "RP-Technik e.K.", "RP-TECHNIK-E-K" }, { 0x001F3F, "AVM GmbH", "AVM" }, { 0x001F40, "Speakercraft Inc.", "SPEAKERCRAFT" }, { 0x001F41, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x001F42, "Etherstack plc", "ETHERSTACK-PLC" }, { 0x001F43, "ENTES ELEKTRONIK", "ENTES-ELEKTRONIK" }, { 0x001F44, "GE Transportation Systems", "GE-TRANSPORTATION" }, { 0x001F45, "Enterasys", "ENTERASYS" }, { 0x001F46, "Nortel", "NORTEL" }, { 0x001F47, "MCS Logic Inc.", "MCS-LOGIC" }, { 0x001F48, "Mojix Inc.", "MOJIX" }, { 0x001F49, "Eurosat Distribution Ltd", "EUROSAT-DISTRIBUTION" }, { 0x001F4A, "Albentia Systems S.A.", "ALBENTIA" }, { 0x001F4B, "Lineage Power", "LINEAGE-POWER" }, { 0x001F4C, "Roseman Engineering Ltd", "ROSEMAN-ENGINEERING" }, { 0x001F4D, "Segnetics LLC", "SEGNETICS-LLC" }, { 0x001F4E, "ConMed Linvatec", "CONMED-LINVATEC" }, { 0x001F4F, "Thinkware Co. Ltd.", "THINKWARE" }, { 0x001F50, "Swissdis AG", "SWISSDIS" }, { 0x001F51, "HD Communications Corp", "HD-COMMUNICATION" }, { 0x001F52, "UVT Unternehmensberatung fur Verkehr und Technik GmbH", "UVT-UNTERNEHMENSBERATUNG-FUR-VERKEHR-UND-TECHNIK" }, { 0x001F53, "GEMAC Gesellschaft für Mikroelektronikanwendung Chemnitz mbH", "GEMAC-GESELLSCHAFT-FüR-MIKROELEKTRONIKANWENDUNG-CHEMNITZ-MBH" }, { 0x001F54, "Lorex Technology Inc.", "LOREX" }, { 0x001F55, "Honeywell Security (China) Co., Ltd.", "HONEYWELL-SECURITY-CHINA" }, { 0x001F56, "DIGITAL FORECAST", "DIGITAL-FORECAST" }, { 0x001F57, "Phonik Innovation Co.,LTD", "PHONIK-INNOVATION" }, { 0x001F58, "EMH Energiemesstechnik GmbH", "EMH-ENERGIEMESSTECHNIK" }, { 0x001F59, "Kronback Tracers", "KRONBACK-TRACERS" }, { 0x001F5A, "Beckwith Electric Co.", "BECKWITH-ELECTRIC" }, { 0x001F5B, "Apple", "APPLE" }, { 0x001F5C, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F5D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001F5E, "Dyna Technology Co.,Ltd.", "DYNA" }, { 0x001F5F, "Blatand GmbH", "BLATAND" }, { 0x001F60, "COMPASS SYSTEMS CORP.", "COMPASS" }, { 0x001F61, "Talent Communication Networks Inc.", "TALENT-COMMUNICATION-NETWORKS" }, { 0x001F62, "JSC \"Stilsoft\"", "JSC-STILSOFT" }, { 0x001F63, "JSC Goodwin-Europa", "JSC-GOODWIN-EUROPA" }, { 0x001F64, "Beijing Autelan Technology Inc.", "BEIJING-AUTELAN" }, { 0x001F65, "KOREA ELECTRIC TERMINAL CO., LTD.", "KOREA-ELECTRIC-TERMINAL" }, { 0x001F66, "PLANAR LLC", "PLANAR-LLC" }, { 0x001F67, "Hitachi,Ltd.", "HITACHI" }, { 0x001F68, "Martinsson Elektronik AB", "MARTINSSON-ELEKTRONIK-AB" }, { 0x001F69, "Pingood Technology Co., Ltd.", "PINGOOD" }, { 0x001F6A, "PacketFlux Technologies, Inc.", "PACKETFLUX-TECHNOLOGIES" }, { 0x001F6B, "LG Electronics", "LG-ELECTRONICS" }, { 0x001F6C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001F6D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001F6E, "Vtech Engineering Corporation", "VTECH-ENGINEERING" }, { 0x001F6F, "Fujian Sunnada Communication Co.,Ltd.", "FUJIAN-SUNNADA-COMMUNICATION" }, { 0x001F70, "Botik Technologies LTD", "BOTIK-TECHNOLOGIES" }, { 0x001F71, "xG Technology, Inc.", "XG" }, { 0x001F72, "QingDao Hiphone Technology Co,.Ltd", "QINGDAO-HIPHONE" }, { 0x001F73, "Teraview Technology Co., Ltd.", "TERAVIEW" }, { 0x001F74, "Eigen Development", "EIGEN-DEVELOPMENT" }, { 0x001F75, "GiBahn Media", "GIBAHN-MEDIA" }, { 0x001F76, "AirLogic Systems Inc.", "AIRLOGIC" }, { 0x001F77, "HEOL DESIGN", "HEOL-DESIGN" }, { 0x001F78, "Blue Fox Porini Textile", "BLUE-FOX-PORINI-TEXTILE" }, { 0x001F79, "Lodam Electronics A/S", "LODAM-ELECTRONICS-A/S" }, { 0x001F7A, "WiWide Inc.", "WIWIDE" }, { 0x001F7B, "TechNexion Ltd.", "TECHNEXION" }, { 0x001F7C, "Witelcom AS", "WITELCOM-AS" }, { 0x001F7D, "embedded wireless GmbH", "EMBEDDED-WIRELESS" }, { 0x001F7E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001F7F, "Phabrix Limited", "PHABRIX" }, { 0x001F80, "Lucas Holding bv", "LUCAS-HOLDING" }, { 0x001F81, "Accel Semiconductor Corp", "ACCEL-SEMICONDUCTOR" }, { 0x001F82, "Cal-Comp Electronics & Communications Co., Ltd", "CAL-COMP-ELECTRONICS-COMMUNICATION" }, { 0x001F83, "Teleplan Technology Services Sdn Bhd", "TELEPLAN-SERVICES-SDN-BHD" }, { 0x001F84, "Gigle Semiconductor", "GIGLE-SEMICONDUCTOR" }, { 0x001F85, "Apriva ISS, LLC", "APRIVA-ISS-LLC" }, { 0x001F86, "digEcor", "DIGECOR" }, { 0x001F87, "Skydigital Inc.", "SKYDIGITAL" }, { 0x001F88, "FMS Force Measuring Systems AG", "FMS-FORCE-MEASURING" }, { 0x001F89, "Signalion GmbH", "SIGNALION" }, { 0x001F8A, "Ellion Digital Inc.", "ELLION-DIGITAL" }, { 0x001F8B, "Cache IQ", "CACHE-IQ" }, { 0x001F8C, "CCS Inc.", "CCS" }, { 0x001F8D, "Ingenieurbuero Stark GmbH und Ko. KG", "INGENIEURBUERO-STARK-UND-KO" }, { 0x001F8E, "Metris USA Inc.", "METRIS-USA" }, { 0x001F8F, "Shanghai Bellmann Digital Source Co.,Ltd.", "SHANGHAI-BELLMANN-DIGITAL-SOURCE" }, { 0x001F90, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x001F91, "DBS Lodging Technologies, LLC", "DBS-LODGING-TECHNOLOGIES-LLC" }, { 0x001F92, "VideoIQ, Inc.", "VIDEOIQ" }, { 0x001F93, "Xiotech Corporation", "XIOTECH" }, { 0x001F94, "Lascar Electronics Ltd", "LASCAR-ELECTRONICS" }, { 0x001F95, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x001F96, "APROTECH CO.LTD", "APROTECH" }, { 0x001F97, "BERTANA SRL", "BERTANA-SRL" }, { 0x001F98, "DAIICHI-DENTSU LTD.", "DAIICHI-DENTSU" }, { 0x001F99, "SERONICS co.ltd", "SERONICS" }, { 0x001F9A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001F9B, "POSBRO", "POSBRO" }, { 0x001F9C, "LEDCO", "LEDCO" }, { 0x001F9D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001F9E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001F9F, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x001FA0, "A10 Networks", "A10-NETWORKS" }, { 0x001FA1, "Gtran Inc", "GTRAN" }, { 0x001FA2, "Datron World Communications, Inc.", "DATRON-WORLD-COMMUNICATION" }, { 0x001FA3, "T&W Electronics(Shenzhen)Co.,Ltd.", "T-W-ELECTRONICS-SHENZHEN" }, { 0x001FA4, "ShenZhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x001FA5, "Blue-White Industries", "BLUE-WHITE-INDUSTRIES" }, { 0x001FA6, "Stilo srl", "STILO-SRL" }, { 0x001FA7, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x001FA8, "Smart Energy Instruments Inc.", "SMART-ENERGY-INSTRUMENTS" }, { 0x001FA9, "Atlanta DTH, Inc.", "ATLANTA-DTH" }, { 0x001FAA, "Taseon, Inc.", "TASEON" }, { 0x001FAB, "I.S HIGH TECH.INC", "I-S-HIGH-TECH" }, { 0x001FAC, "Goodmill Systems Ltd", "GOODMILL" }, { 0x001FAD, "Brown Innovations, Inc", "BROWN-INNOVATIONS" }, { 0x001FAE, "Blick South Africa (Pty) Ltd", "BLICK-SOUTH-AFRICA-PTY" }, { 0x001FAF, "NextIO, Inc.", "NEXTIO" }, { 0x001FB0, "TimeIPS, Inc.", "TIMEIPS" }, { 0x001FB1, "Cybertech Inc.", "CYBERTECH" }, { 0x001FB2, "Sontheim Industrie Elektronik GmbH", "SONTHEIM-INDUSTRIE-ELEKTRONIK" }, { 0x001FB3, "2Wire", "2WIRE" }, { 0x001FB4, "SmartShare Systems", "SMARTSHARE" }, { 0x001FB5, "I/O Interconnect Inc.", "I/O-INTERCONNECT" }, { 0x001FB6, "Chi Lin Technology Co., Ltd.", "CHI-LIN" }, { 0x001FB7, "WiMate Technologies Corp.", "WIMATE-TECHNOLOGIES" }, { 0x001FB8, "Universal Remote Control, Inc.", "UNIVERSAL-REMOTE-CONTROL" }, { 0x001FB9, "Paltronics", "PALTRONICS" }, { 0x001FBA, "BoYoung Tech. & Marketing, Inc.", "BOYOUNG-TECH-MARKETING" }, { 0x001FBB, "Xenatech Co.,LTD", "XENATECH" }, { 0x001FBC, "EVGA Corporation", "EVGA" }, { 0x001FBD, "Kyocera Wireless Corp.", "KYOCERA-WIRELESS" }, { 0x001FBE, "Shenzhen Mopnet Industrial Co.,Ltd", "SHENZHEN-MOPNET-INDUSTRIAL" }, { 0x001FBF, "Fulhua Microelectronics Corp. Taiwan Branch", "FULHUA-MICROELECTRONICS-TAIWAN-BRANCH" }, { 0x001FC0, "Control Express Finland Oy", "CONTROL-EXPRESS-FINLAND-OY" }, { 0x001FC1, "Hanlong Technology Co.,LTD", "HANLONG" }, { 0x001FC2, "Jow Tong Technology Co Ltd", "JOW-TONG" }, { 0x001FC3, "SmartSynch, Inc", "SMARTSYNCH" }, { 0x001FC4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x001FC5, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x001FC6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x001FC7, "Casio Hitachi Mobile Comunications Co., Ltd.", "CASIO-HITACHI-MOBILE-COMUNICATIONS" }, { 0x001FC8, "Up-Today Industrial Co., Ltd.", "UP-TODAY-INDUSTRIAL" }, { 0x001FC9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001FCA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x001FCB, "NIW Solutions", "NIW-SOLUTIONS" }, { 0x001FCC, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x001FCD, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x001FCE, "QTECH LLC", "QTECH-LLC" }, { 0x001FCF, "MSI Technology GmbH", "MSI" }, { 0x001FD0, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x001FD1, "OPTEX CO.,LTD.", "OPTEX" }, { 0x001FD2, "COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD.", "COMMTECH-MACAO-COMMERCIAL-OFFSHORE" }, { 0x001FD3, "RIVA Networks Inc.", "RIVA-NETWORKS" }, { 0x001FD4, "4IPNET, INC.", "4IPNET" }, { 0x001FD5, "MICRORISC s.r.o.", "MICRORISC-S-R-O" }, { 0x001FD6, "Shenzhen Allywll", "SHENZHEN-ALLYWLL" }, { 0x001FD7, "TELERAD SA", "TELERAD" }, { 0x001FD8, "A-TRUST COMPUTER CORPORATION", "A-TRUST" }, { 0x001FD9, "RSD Communications Ltd", "RSD-COMMUNICATION" }, { 0x001FDA, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x001FDB, "Network Supply Corp.,", "NETWORK-SUPPLY" }, { 0x001FDC, "Mobile Safe Track Ltd", "MOBILE-SAFE-TRACK" }, { 0x001FDD, "GDI LLC", "GDI-LLC" }, { 0x001FDE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001FDF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x001FE0, "EdgeVelocity Corp", "EDGEVELOCITY" }, { 0x001FE1, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001FE2, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x001FE3, "LG Electronics", "LG-ELECTRONICS" }, { 0x001FE4, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x001FE5, "In-Circuit GmbH", "IN-CIRCUIT" }, { 0x001FE6, "Alphion Corporation", "ALPHION" }, { 0x001FE7, "Simet", "SIMET" }, { 0x001FE8, "KURUSUGAWA Electronics Industry Inc,.", "KURUSUGAWA-ELECTRONICS-INDUSTRY" }, { 0x001FE9, "Printrex, Inc.", "PRINTREX" }, { 0x001FEA, "Applied Media Technologies Corporation", "APPLIED-MEDIA-TECHNOLOGIES" }, { 0x001FEB, "Trio Datacom Pty Ltd", "TRIO-DATACOM-PTY" }, { 0x001FEC, "Synapse Électronique", "SYNAPSE-ÉLECTRONIQUE" }, { 0x001FED, "Tecan Systems Inc.", "TECAN" }, { 0x001FEE, "ubisys technologies GmbH", "UBISYS-TECHNOLOGIES" }, { 0x001FEF, "SHINSEI INDUSTRIES CO.,LTD", "SHINSEI-INDUSTRIES" }, { 0x001FF0, "Audio Partnership", "AUDIO-PARTNERSHIP" }, { 0x001FF1, "Paradox Hellas S.A.", "PARADOX-HELLAS" }, { 0x001FF2, "VIA Technologies, Inc.", "VIA-TECHNOLOGIES" }, { 0x001FF3, "Apple", "APPLE" }, { 0x001FF4, "Power Monitors, Inc.", "POWER-MONITORS" }, { 0x001FF5, "Kongsberg Defence & Aerospace", "KONGSBERG-DEFENCE-AEROSPACE" }, { 0x001FF6, "PS Audio International", "PS-AUDIO" }, { 0x001FF7, "Nakajima All Precision Co., Ltd.", "NAKAJIMA-ALL-PRECISION" }, { 0x001FF8, "Siemens AG, Sector Industry, Drive Technologies, Motion Control Systems", "SIEMENS-SECTOR-INDUSTRY-DRIVE-TECHNOLOGIES-MOTION-CONTROL" }, { 0x001FF9, "Advanced Knowledge Associates", "ADVANCED-KNOWLEDGE-ASSOCIATES" }, { 0x001FFA, "Coretree, Co, Ltd", "CORETREE" }, { 0x001FFB, "Green Packet Bhd", "GREEN-PACKET-BHD" }, { 0x001FFC, "Riccius+Sohn GmbH", "RICCIUS+SOHN" }, { 0x001FFD, "Indigo Mobile Technologies Corp.", "INDIGO-MOBILE-TECHNOLOGIES" }, { 0x001FFE, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x001FFF, "Respironics, Inc.", "RESPIRONICS" }, { 0x002000, "LEXMARK INTERNATIONAL, INC.", "LEXMARK" }, { 0x002001, "DSP SOLUTIONS, INC.", "DSP-SOLUTIONS" }, { 0x002002, "SERITECH ENTERPRISE CO., LTD.", "SERITECH" }, { 0x002003, "PIXEL POWER LTD.", "PIXEL-POWER" }, { 0x002004, "YAMATAKE-HONEYWELL CO., LTD.", "YAMATAKE-HONEYWELL" }, { 0x002005, "SIMPLE TECHNOLOGY", "SIMPLE" }, { 0x002006, "GARRETT COMMUNICATIONS, INC.", "GARRETT-COMMUNICATION" }, { 0x002007, "SFA, INC.", "SFA" }, { 0x002008, "CABLE & COMPUTER TECHNOLOGY", "CABLE" }, { 0x002009, "PACKARD BELL ELEC., INC.", "PACKARD-BELL-ELEC" }, { 0x00200A, "SOURCE-COMM CORP.", "SOURCE-COMM" }, { 0x00200B, "OCTAGON SYSTEMS CORP.", "OCTAGON" }, { 0x00200C, "ADASTRA SYSTEMS CORP.", "ADASTRA" }, { 0x00200D, "CARL ZEISS", "CARL-ZEISS" }, { 0x00200E, "SATELLITE TECHNOLOGY MGMT, INC", "SATELLITE-MGMT" }, { 0x00200F, "TANBAC CO., LTD.", "TANBAC" }, { 0x002010, "JEOL SYSTEM TECHNOLOGY CO. LTD", "JEOL-SYSTEM" }, { 0x002011, "CANOPUS CO., LTD.", "CANOPUS" }, { 0x002012, "CAMTRONICS MEDICAL SYSTEMS", "CAMTRONICS-MEDICAL" }, { 0x002013, "DIVERSIFIED TECHNOLOGY, INC.", "DIVERSIFIED" }, { 0x002014, "GLOBAL VIEW CO., LTD.", "GLOBAL-VIEW" }, { 0x002015, "ACTIS COMPUTER SA", "ACTIS" }, { 0x002016, "SHOWA ELECTRIC WIRE & CABLE CO", "SHOWA-ELECTRIC-WIRE-CABLE" }, { 0x002017, "ORBOTECH", "ORBOTECH" }, { 0x002018, "CIS TECHNOLOGY INC.", "CIS" }, { 0x002019, "OHLER GmbH", "OHLER" }, { 0x00201A, "MRV Communications, Inc.", "MRV-COMMUNICATION" }, { 0x00201B, "NORTHERN TELECOM/NETWORK", "NORTHERN-TELECOM/NETWORK" }, { 0x00201C, "EXCEL, INC.", "EXCEL" }, { 0x00201D, "KATANA PRODUCTS", "KATANA-PRODUCTS" }, { 0x00201E, "NETQUEST CORPORATION", "NETQUEST" }, { 0x00201F, "BEST POWER TECHNOLOGY, INC.", "BEST-POWER" }, { 0x002020, "MEGATRON COMPUTER INDUSTRIES PTY, LTD.", "MEGATRON-INDUSTRIES-PTY" }, { 0x002021, "ALGORITHMS SOFTWARE PVT. LTD.", "ALGORITHMS-SOFTWARE-PVT" }, { 0x002022, "NMS Communications", "NMS-COMMUNICATION" }, { 0x002023, "T.C. TECHNOLOGIES PTY. LTD", "T-C-TECHNOLOGIES-PTY" }, { 0x002024, "PACIFIC COMMUNICATION SCIENCES", "PACIFIC-COMMUNICATION-SCIENCES" }, { 0x002025, "CONTROL TECHNOLOGY, INC.", "CONTROL" }, { 0x002026, "AMKLY SYSTEMS, INC.", "AMKLY" }, { 0x002027, "MING FORTUNE INDUSTRY CO., LTD", "MING-FORTUNE-INDUSTRY" }, { 0x002028, "WEST EGG SYSTEMS, INC.", "WEST-EGG" }, { 0x002029, "TELEPROCESSING PRODUCTS, INC.", "TELEPROCESSING-PRODUCTS" }, { 0x00202A, "N.V. DZINE", "N-V-DZINE" }, { 0x00202B, "ADVANCED TELECOMMUNICATIONS MODULES, LTD.", "ADVANCED-TELECOMMUNICATIONS-MODULES" }, { 0x00202C, "WELLTRONIX CO., LTD.", "WELLTRONIX" }, { 0x00202D, "TAIYO CORPORATION", "TAIYO" }, { 0x00202E, "DAYSTAR DIGITAL", "DAYSTAR-DIGITAL" }, { 0x00202F, "ZETA COMMUNICATIONS, LTD.", "ZETA-COMMUNICATION" }, { 0x002030, "ANALOG & DIGITAL SYSTEMS", "ANALOG-DIGITAL" }, { 0x002031, "Tattile SRL", "TATTILE-SRL" }, { 0x002032, "ALCATEL TAISEL", "ALCATEL-TAISEL" }, { 0x002033, "SYNAPSE TECHNOLOGIES, INC.", "SYNAPSE-TECHNOLOGIES" }, { 0x002034, "ROTEC INDUSTRIEAUTOMATION GMBH", "ROTEC-INDUSTRIEAUTOMATION" }, { 0x002035, "IBM Corp", "IBM" }, { 0x002036, "BMC SOFTWARE", "BMC-SOFTWARE" }, { 0x002037, "SEAGATE TECHNOLOGY", "SEAGATE" }, { 0x002038, "VME MICROSYSTEMS INTERNATIONAL CORPORATION", "VME-MICROSYSTEMS" }, { 0x002039, "SCINETS", "SCINETS" }, { 0x00203A, "DIGITAL BI0METRICS INC.", "DIGITAL-BI0METRICS" }, { 0x00203B, "WISDM LTD.", "WISDM" }, { 0x00203C, "EUROTIME AB", "EUROTIME-AB" }, { 0x00203D, "Honeywell ECC", "HONEYWELL-ECC" }, { 0x00203E, "LogiCan Technologies, Inc.", "LOGICAN-TECHNOLOGIES" }, { 0x00203F, "JUKI CORPORATION", "JUKI" }, { 0x002040, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002041, "DATA NET", "DATA-NET" }, { 0x002042, "DATAMETRICS CORP.", "DATAMETRICS" }, { 0x002043, "NEURON COMPANY LIMITED", "NEURON-COMPANY" }, { 0x002044, "GENITECH PTY LTD", "GENITECH-PTY" }, { 0x002045, "ION Networks, Inc.", "ION-NETWORKS" }, { 0x002046, "CIPRICO, INC.", "CIPRICO" }, { 0x002047, "STEINBRECHER CORP.", "STEINBRECHER" }, { 0x002048, "Marconi Communications", "MARCONI-COMMUNICATION" }, { 0x002049, "COMTRON, INC.", "COMTRON" }, { 0x00204A, "PRONET GMBH", "PRONET" }, { 0x00204B, "AUTOCOMPUTER CO., LTD.", "AUTOCOMPUTER" }, { 0x00204C, "MITRON COMPUTER PTE LTD.", "MITRON-PTE" }, { 0x00204D, "INOVIS GMBH", "INOVIS" }, { 0x00204E, "NETWORK SECURITY SYSTEMS, INC.", "NETWORK-SECURITY" }, { 0x00204F, "DEUTSCHE AEROSPACE AG", "DEUTSCHE-AEROSPACE" }, { 0x002050, "KOREA COMPUTER INC.", "KOREA" }, { 0x002051, "Verilink Corporation", "VERILINK" }, { 0x002052, "RAGULA SYSTEMS", "RAGULA" }, { 0x002053, "HUNTSVILLE MICROSYSTEMS, INC.", "HUNTSVILLE-MICROSYSTEMS" }, { 0x002054, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x002055, "ALTECH CO., LTD.", "ALTECH" }, { 0x002056, "NEOPRODUCTS", "NEOPRODUCTS" }, { 0x002057, "TITZE DATENTECHNIK GmbH", "TITZE-DATENTECHNIK" }, { 0x002058, "ALLIED SIGNAL INC.", "ALLIED-SIGNAL" }, { 0x002059, "MIRO COMPUTER PRODUCTS AG", "MIRO-PRODUCTS" }, { 0x00205A, "COMPUTER IDENTICS", "IDENTICS" }, { 0x00205B, "Kentrox, LLC", "KENTROX-LLC" }, { 0x00205C, "InterNet Systems of Florida, Inc.", "INTERNET-OF-FLORIDA" }, { 0x00205D, "NANOMATIC OY", "NANOMATIC-OY" }, { 0x00205E, "CASTLE ROCK, INC.", "CASTLE-ROCK" }, { 0x00205F, "GAMMADATA COMPUTER GMBH", "GAMMADATA" }, { 0x002060, "ALCATEL ITALIA S.p.A.", "ALCATEL-ITALIA-S-P-A" }, { 0x002061, "GarrettCom, Inc.", "GARRETTCOM" }, { 0x002062, "SCORPION LOGIC, LTD.", "SCORPION-LOGIC" }, { 0x002063, "WIPRO INFOTECH LTD.", "WIPRO-INFOTECH" }, { 0x002064, "PROTEC MICROSYSTEMS, INC.", "PROTEC-MICROSYSTEMS" }, { 0x002065, "SUPERNET NETWORKING INC.", "SUPERNET-NETWORKING" }, { 0x002066, "GENERAL MAGIC, INC.", "GENERAL-MAGIC" }, { 0x002067, "PRIVATE", "PRIVATE" }, { 0x002068, "ISDYNE", "ISDYNE" }, { 0x002069, "ISDN SYSTEMS CORPORATION", "ISDN" }, { 0x00206A, "OSAKA COMPUTER CORP.", "OSAKA" }, { 0x00206B, "KONICA MINOLTA HOLDINGS, INC.", "KONICA-MINOLTA-HOLDINGS" }, { 0x00206C, "EVERGREEN TECHNOLOGY CORP.", "EVERGREEN" }, { 0x00206D, "DATA RACE, INC.", "DATA-RACE" }, { 0x00206E, "XACT, INC.", "XACT" }, { 0x00206F, "FLOWPOINT CORPORATION", "FLOWPOINT" }, { 0x002070, "HYNET, LTD.", "HYNET" }, { 0x002071, "IBR GMBH", "IBR" }, { 0x002072, "WORKLINK INNOVATIONS", "WORKLINK-INNOVATIONS" }, { 0x002073, "FUSION SYSTEMS CORPORATION", "FUSION" }, { 0x002074, "SUNGWOON SYSTEMS", "SUNGWOON" }, { 0x002075, "MOTOROLA COMMUNICATION ISRAEL", "MOTOROLA-COMMUNICATION-ISRAEL" }, { 0x002076, "REUDO CORPORATION", "REUDO" }, { 0x002077, "KARDIOS SYSTEMS CORP.", "KARDIOS" }, { 0x002078, "RUNTOP, INC.", "RUNTOP" }, { 0x002079, "MIKRON GMBH", "MIKRON" }, { 0x00207A, "WiSE Communications, Inc.", "WISE-COMMUNICATION" }, { 0x00207B, "Intel Corporation", "INTEL" }, { 0x00207C, "AUTEC GmbH", "AUTEC" }, { 0x00207D, "ADVANCED COMPUTER APPLICATIONS", "ADVANCED-APPLICATIONS" }, { 0x00207E, "FINECOM Co., Ltd.", "FINECOM" }, { 0x00207F, "KYOEI SANGYO CO., LTD.", "KYOEI-SANGYO" }, { 0x002080, "SYNERGY (UK) LTD.", "SYNERGY-UK" }, { 0x002081, "TITAN ELECTRONICS", "TITAN-ELECTRONICS" }, { 0x002082, "ONEAC CORPORATION", "ONEAC" }, { 0x002083, "PRESTICOM INCORPORATED", "PRESTICOM-INCORPORATED" }, { 0x002084, "OCE PRINTING SYSTEMS, GMBH", "OCE-PRINTING" }, { 0x002085, "EXIDE ELECTRONICS", "EXIDE-ELECTRONICS" }, { 0x002086, "MICROTECH ELECTRONICS LIMITED", "MICROTECH-ELECTRONICS" }, { 0x002087, "MEMOTEC, INC.", "MEMOTEC" }, { 0x002088, "GLOBAL VILLAGE COMMUNICATION", "GLOBAL-VILLAGE-COMMUNICATION" }, { 0x002089, "T3PLUS NETWORKING, INC.", "T3PLUS-NETWORKING" }, { 0x00208A, "SONIX COMMUNICATIONS, LTD.", "SONIX-COMMUNICATION" }, { 0x00208B, "LAPIS TECHNOLOGIES, INC.", "LAPIS-TECHNOLOGIES" }, { 0x00208C, "GALAXY NETWORKS, INC.", "GALAXY-NETWORKS" }, { 0x00208D, "CMD TECHNOLOGY", "CMD" }, { 0x00208E, "CHEVIN SOFTWARE ENG. LTD.", "CHEVIN-SOFTWARE-ENG" }, { 0x00208F, "ECI TELECOM LTD.", "ECI-TELECOM" }, { 0x002090, "ADVANCED COMPRESSION TECHNOLOGY, INC.", "ADVANCED-COMPRESSION" }, { 0x002091, "J125, NATIONAL SECURITY AGENCY", "J125-NATIONAL-SECURITY-AGENCY" }, { 0x002092, "CHESS ENGINEERING B.V.", "CHESS-ENGINEERING" }, { 0x002093, "LANDINGS TECHNOLOGY CORP.", "LANDINGS" }, { 0x002094, "CUBIX CORPORATION", "CUBIX" }, { 0x002095, "RIVA ELECTRONICS", "RIVA-ELECTRONICS" }, { 0x002096, "Invensys", "INVENSYS" }, { 0x002097, "APPLIED SIGNAL TECHNOLOGY", "APPLIED-SIGNAL" }, { 0x002098, "HECTRONIC AB", "HECTRONIC-AB" }, { 0x002099, "BON ELECTRIC CO., LTD.", "BON-ELECTRIC" }, { 0x00209A, "THE 3DO COMPANY", "THE-3DO-COMPANY" }, { 0x00209B, "ERSAT ELECTRONIC GMBH", "ERSAT" }, { 0x00209C, "PRIMARY ACCESS CORP.", "PRIMARY-ACCESS" }, { 0x00209D, "LIPPERT AUTOMATIONSTECHNIK", "LIPPERT-AUTOMATIONSTECHNIK" }, { 0x00209E, "BROWN'S OPERATING SYSTEM SERVICES, LTD.", "BROWN-S-OPERATING-SYSTEM-SERVICES" }, { 0x00209F, "MERCURY COMPUTER SYSTEMS, INC.", "MERCURY" }, { 0x0020A0, "OA LABORATORY CO., LTD.", "OA-LABORATORY" }, { 0x0020A1, "DOVATRON", "DOVATRON" }, { 0x0020A2, "GALCOM NETWORKING LTD.", "GALCOM-NETWORKING" }, { 0x0020A3, "Harmonic, Inc", "HARMONIC" }, { 0x0020A4, "MULTIPOINT NETWORKS", "MULTIPOINT-NETWORKS" }, { 0x0020A5, "API ENGINEERING", "API-ENGINEERING" }, { 0x0020A6, "Proxim Wireless", "PROXIM-WIRELESS" }, { 0x0020A7, "PAIRGAIN TECHNOLOGIES, INC.", "PAIRGAIN-TECHNOLOGIES" }, { 0x0020A8, "SAST TECHNOLOGY CORP.", "SAST" }, { 0x0020A9, "WHITE HORSE INDUSTRIAL", "WHITE-HORSE-INDUSTRIAL" }, { 0x0020AA, "Ericsson Television Limited", "ERICSSON-TELEVISION" }, { 0x0020AB, "MICRO INDUSTRIES CORP.", "MICRO-INDUSTRIES" }, { 0x0020AC, "INTERFLEX DATENSYSTEME GMBH", "INTERFLEX-DATENSYSTEME" }, { 0x0020AD, "LINQ SYSTEMS", "LINQ" }, { 0x0020AE, "ORNET DATA COMMUNICATION TECH.", "ORNET-DATA-COMMUNICATION-TECH" }, { 0x0020AF, "3COM CORPORATION", "3COM" }, { 0x0020B0, "GATEWAY DEVICES, INC.", "GATEWAY-DEVICES" }, { 0x0020B1, "COMTECH RESEARCH INC.", "COMTECH-RESEARCH" }, { 0x0020B2, "GKD Gesellschaft Fur Kommunikation Und Datentechnik", "GKD-GESELLSCHAFT-FUR-KOMMUNIKATION-UND-DATENTECHNIK" }, { 0x0020B3, "Tattile SRL", "TATTILE-SRL" }, { 0x0020B4, "TERMA ELEKTRONIK AS", "TERMA-ELEKTRONIK-AS" }, { 0x0020B5, "YASKAWA ELECTRIC CORPORATION", "YASKAWA-ELECTRIC" }, { 0x0020B6, "AGILE NETWORKS, INC.", "AGILE-NETWORKS" }, { 0x0020B7, "NAMAQUA COMPUTERWARE", "NAMAQUA-COMPUTERWARE" }, { 0x0020B8, "PRIME OPTION, INC.", "PRIME-OPTION" }, { 0x0020B9, "METRICOM, INC.", "METRICOM" }, { 0x0020BA, "CENTER FOR HIGH PERFORMANCE", "CENTER-FOR-HIGH-PERFORMANCE" }, { 0x0020BB, "ZAX CORPORATION", "ZAX" }, { 0x0020BC, "Long Reach Networks Pty Ltd", "LONG-REACH-NETWORKS-PTY" }, { 0x0020BD, "NIOBRARA R & D CORPORATION", "NIOBRARA-R-D" }, { 0x0020BE, "LAN ACCESS CORP.", "LAN-ACCESS" }, { 0x0020BF, "AEHR TEST SYSTEMS", "AEHR-TEST" }, { 0x0020C0, "PULSE ELECTRONICS, INC.", "PULSE-ELECTRONICS" }, { 0x0020C1, "SAXA, Inc.", "SAXA" }, { 0x0020C2, "TEXAS MEMORY SYSTEMS, INC.", "TEXAS-MEMORY" }, { 0x0020C3, "COUNTER SOLUTIONS LTD.", "COUNTER-SOLUTIONS" }, { 0x0020C4, "INET,INC.", "INET" }, { 0x0020C5, "EAGLE TECHNOLOGY", "EAGLE" }, { 0x0020C6, "NECTEC", "NECTEC" }, { 0x0020C7, "AKAI Professional M.I. Corp.", "AKAI-PROFESSIONAL-M-I" }, { 0x0020C8, "LARSCOM INCORPORATED", "LARSCOM-INCORPORATED" }, { 0x0020C9, "VICTRON BV", "VICTRON" }, { 0x0020CA, "DIGITAL OCEAN", "DIGITAL-OCEAN" }, { 0x0020CB, "PRETEC ELECTRONICS CORP.", "PRETEC-ELECTRONICS" }, { 0x0020CC, "DIGITAL SERVICES, LTD.", "DIGITAL-SERVICES" }, { 0x0020CD, "HYBRID NETWORKS, INC.", "HYBRID-NETWORKS" }, { 0x0020CE, "LOGICAL DESIGN GROUP, INC.", "LOGICAL-DESIGN-GROUP" }, { 0x0020CF, "TEST & MEASUREMENT SYSTEMS INC", "TEST-MEASUREMENT" }, { 0x0020D0, "VERSALYNX CORPORATION", "VERSALYNX" }, { 0x0020D1, "MICROCOMPUTER SYSTEMS (M) SDN.", "MICROCOMPUTER-M-SDN" }, { 0x0020D2, "RAD DATA COMMUNICATIONS, LTD.", "RAD-DATA-COMMUNICATION" }, { 0x0020D3, "OST (OUEST STANDARD TELEMATIQU", "OST-OUEST-STANDARD-TELEMATIQU" }, { 0x0020D4, "CABLETRON - ZEITTNET INC.", "CABLETRON---ZEITTNET" }, { 0x0020D5, "VIPA GMBH", "VIPA" }, { 0x0020D6, "BREEZECOM", "BREEZECOM" }, { 0x0020D7, "JAPAN MINICOMPUTER SYSTEMS CO., Ltd.", "JAPAN-MINICOMPUTER" }, { 0x0020D8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0020D9, "PANASONIC TECHNOLOGIES, INC./MIECO-US", "PANASONIC-TECHNOLOGIES-/MIECO-US" }, { 0x0020DA, "Alcatel North America ESD", "ALCATEL-NORTH-AMERICA-ESD" }, { 0x0020DB, "XNET TECHNOLOGY, INC.", "XNET" }, { 0x0020DC, "DENSITRON TAIWAN LTD.", "DENSITRON-TAIWAN" }, { 0x0020DD, "Cybertec Pty Ltd", "CYBERTEC-PTY" }, { 0x0020DE, "JAPAN DIGITAL LABORAT'Y CO.LTD", "JAPAN-DIGITAL-LABORAT-Y" }, { 0x0020DF, "KYOSAN ELECTRIC MFG. CO., LTD.", "KYOSAN-ELECTRIC-MFG" }, { 0x0020E0, "Actiontec Electronics, Inc.", "ACTIONTEC-ELECTRONICS" }, { 0x0020E1, "ALAMAR ELECTRONICS", "ALAMAR-ELECTRONICS" }, { 0x0020E2, "INFORMATION RESOURCE ENGINEERING", "INFORMATION-RESOURCE-ENGINEERING" }, { 0x0020E3, "MCD KENCOM CORPORATION", "MCD-KENCOM" }, { 0x0020E4, "HSING TECH ENTERPRISE CO., LTD", "HSING-TECH" }, { 0x0020E5, "APEX DATA, INC.", "APEX-DATA" }, { 0x0020E6, "LIDKOPING MACHINE TOOLS AB", "LIDKOPING-MACHINE-TOOLS-AB" }, { 0x0020E7, "B&W NUCLEAR SERVICE COMPANY", "B-W-NUCLEAR-SERVICE-COMPANY" }, { 0x0020E8, "DATATREK CORPORATION", "DATATREK" }, { 0x0020E9, "DANTEL", "DANTEL" }, { 0x0020EA, "EFFICIENT NETWORKS, INC.", "EFFICIENT-NETWORKS" }, { 0x0020EB, "CINCINNATI MICROWAVE, INC.", "CINCINNATI-MICROWAVE" }, { 0x0020EC, "TECHWARE SYSTEMS CORP.", "TECHWARE" }, { 0x0020ED, "GIGA-BYTE TECHNOLOGY CO., LTD.", "GIGA-BYTE" }, { 0x0020EE, "GTECH CORPORATION", "GTECH" }, { 0x0020EF, "USC CORPORATION", "USC" }, { 0x0020F0, "UNIVERSAL MICROELECTRONICS CO.", "UNIVERSAL-MICROELECTRONICS" }, { 0x0020F1, "ALTOS INDIA LIMITED", "ALTOS-INDIA" }, { 0x0020F2, "Oracle Corporation", "ORACLE" }, { 0x0020F3, "RAYNET CORPORATION", "RAYNET" }, { 0x0020F4, "SPECTRIX CORPORATION", "SPECTRIX" }, { 0x0020F5, "PANDATEL AG", "PANDATEL" }, { 0x0020F6, "NET TEK AND KARLNET, INC.", "NET-TEK-AND-KARLNET" }, { 0x0020F7, "CYBERDATA CORPORATION", "CYBERDATA" }, { 0x0020F8, "CARRERA COMPUTERS, INC.", "CARRERA-COMPUTERS" }, { 0x0020F9, "PARALINK NETWORKS, INC.", "PARALINK-NETWORKS" }, { 0x0020FA, "GDE SYSTEMS, INC.", "GDE" }, { 0x0020FB, "OCTEL COMMUNICATIONS CORP.", "OCTEL-COMMUNICATION" }, { 0x0020FC, "MATROX", "MATROX" }, { 0x0020FD, "ITV TECHNOLOGIES, INC.", "ITV-TECHNOLOGIES" }, { 0x0020FE, "TOPWARE INC. / GRAND COMPUTER", "TOPWARE-/-GRAND" }, { 0x0020FF, "SYMMETRICAL TECHNOLOGIES", "SYMMETRICAL-TECHNOLOGIES" }, { 0x002100, "GemTek Technology Co., Ltd.", "GEMTEK" }, { 0x002101, "Aplicaciones Electronicas Quasar (AEQ)", "APLICACIONES-ELECTRONICAS-QUASAR-AEQ" }, { 0x002102, "UpdateLogic Inc.", "UPDATELOGIC" }, { 0x002103, "GHI Electronics, LLC", "GHI-ELECTRONICS-LLC" }, { 0x002104, "Gigaset Communications GmbH", "GIGASET-COMMUNICATION" }, { 0x002105, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x002106, "RIM Testing Services", "RIM-TESTING-SERVICES" }, { 0x002107, "Seowonintech Co Ltd.", "SEOWONINTECH" }, { 0x002108, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002109, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00210A, "byd:sign Corporation", "BYD:SIGN" }, { 0x00210B, "GEMINI TRAZE RFID PVT. LTD.", "GEMINI-TRAZE-RFID-PVT" }, { 0x00210C, "Cymtec Systems, Inc.", "CYMTEC" }, { 0x00210D, "SAMSIN INNOTEC", "SAMSIN-INNOTEC" }, { 0x00210E, "Orpak Systems L.T.D.", "ORPAK-L-T-D" }, { 0x00210F, "Cernium Corp", "CERNIUM" }, { 0x002110, "Clearbox Systems", "CLEARBOX" }, { 0x002111, "Uniphone Inc.", "UNIPHONE" }, { 0x002112, "WISCOM SYSTEM CO.,LTD", "WISCOM-SYSTEM" }, { 0x002113, "Padtec S/A", "PADTEC-S/A" }, { 0x002114, "Hylab Technology Inc.", "HYLAB" }, { 0x002115, "PHYWE Systeme GmbH & Co. KG", "PHYWE-SYSTEME" }, { 0x002116, "Transcon Electronic Systems, spol. s r. o.", "TRANSCON-SPOL-S-R-O" }, { 0x002117, "Tellord", "TELLORD" }, { 0x002118, "Athena Tech, Inc.", "ATHENA-TECH" }, { 0x002119, "Samsung Electro-Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x00211A, "LInTech Corporation", "LINTECH" }, { 0x00211B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00211C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00211D, "Dataline AB", "DATALINE-AB" }, { 0x00211E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00211F, "SHINSUNG DELTATECH CO.,LTD.", "SHINSUNG-DELTATECH" }, { 0x002120, "Sequel Technologies", "SEQUEL-TECHNOLOGIES" }, { 0x002121, "VRmagic GmbH", "VRMAGIC" }, { 0x002122, "Chip-pro Ltd.", "CHIP-PRO" }, { 0x002123, "Aerosat Avionics", "AEROSAT-AVIONICS" }, { 0x002124, "Optos Plc", "OPTOS-PLC" }, { 0x002125, "KUK JE TONG SHIN Co.,LTD", "KUK-JE-TONG-SHIN" }, { 0x002126, "Shenzhen Torch Equipment Co., Ltd.", "SHENZHEN-TORCH-EQUIPMENT" }, { 0x002127, "TP-LINK Technology Co., Ltd.", "TP-LINK" }, { 0x002128, "Oracle Corporation", "ORACLE" }, { 0x002129, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00212A, "Audiovox Corporation", "AUDIOVOX" }, { 0x00212B, "MSA Auer", "MSA-AUER" }, { 0x00212C, "SemIndia System Private Limited", "SEMINDIA-SYSTEM-PRIVATE" }, { 0x00212D, "SCIMOLEX CORPORATION", "SCIMOLEX" }, { 0x00212E, "dresden-elektronik", "DRESDEN-ELEKTRONIK" }, { 0x00212F, "Phoebe Micro Inc.", "PHOEBE-MICRO" }, { 0x002130, "Keico Hightech Inc.", "KEICO-HIGHTECH" }, { 0x002131, "Blynke Inc.", "BLYNKE" }, { 0x002132, "Masterclock, Inc.", "MASTERCLOCK" }, { 0x002133, "Building B, Inc", "BUILDING-B" }, { 0x002134, "Brandywine Communications", "BRANDYWINE-COMMUNICATION" }, { 0x002135, "ALCATEL-LUCENT", "ALCATEL-LUCENT" }, { 0x002136, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002137, "Bay Controls, LLC", "BAY-CONTROLS-LLC" }, { 0x002138, "Cepheid", "CEPHEID" }, { 0x002139, "Escherlogic Inc.", "ESCHERLOGIC" }, { 0x00213A, "Winchester Systems Inc.", "WINCHESTER" }, { 0x00213B, "Berkshire Products, Inc", "BERKSHIRE-PRODUCTS" }, { 0x00213C, "AliphCom", "ALIPHCOM" }, { 0x00213D, "Cermetek Microelectronics, Inc.", "CERMETEK-MICROELECTRONICS" }, { 0x00213E, "TomTom", "TOMTOM" }, { 0x00213F, "A-Team Technology Ltd.", "A-TEAM" }, { 0x002140, "EN Technologies Inc.", "EN-TECHNOLOGIES" }, { 0x002141, "RADLIVE", "RADLIVE" }, { 0x002142, "Advanced Control Systems doo", "ADVANCED-CONTROL-DOO" }, { 0x002143, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002144, "SS Telecoms", "SS-TELECOMS" }, { 0x002145, "Semptian Technologies Ltd.", "SEMPTIAN-TECHNOLOGIES" }, { 0x002146, "Sanmina-SCI", "SANMINA-SCI" }, { 0x002147, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002148, "Kaco Solar Korea", "KACO-SOLAR-KOREA" }, { 0x002149, "China Daheng Group ,Inc.", "CHINA-DAHENG-GROUP" }, { 0x00214A, "Pixel Velocity, Inc", "PIXEL-VELOCITY" }, { 0x00214B, "Shenzhen HAMP Science & Technology Co.,Ltd", "SHENZHEN-HAMP-SCIENCE" }, { 0x00214C, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x00214D, "Guangzhou Skytone Transmission Technology Com. Ltd.", "GUANGZHOU-SKYTONE-TRANSMISSION-COM" }, { 0x00214E, "GS Yuasa Power Supply Ltd.", "GS-YUASA-POWER-SUPPLY" }, { 0x00214F, "ALPS Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x002150, "EYEVIEW ELECTRONICS", "EYEVIEW-ELECTRONICS" }, { 0x002151, "Millinet Co., Ltd.", "MILLINET" }, { 0x002152, "General Satellite Research & Development Limited", "GENERAL-SATELLITE-RESEARCH-DEVELOPMENT" }, { 0x002153, "SeaMicro Inc.", "SEAMICRO" }, { 0x002154, "D-TACQ Solutions Ltd", "D-TACQ-SOLUTIONS" }, { 0x002155, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002156, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002157, "National Datacast, Inc.", "NATIONAL-DATACAST" }, { 0x002158, "Style Flying Technology Co.", "STYLE-FLYING" }, { 0x002159, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x00215A, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00215B, "Inotive", "INOTIVE" }, { 0x00215C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00215D, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00215E, "IBM Corp", "IBM" }, { 0x00215F, "IHSE GmbH", "IHSE" }, { 0x002160, "Hidea Solutions Co. Ltd.", "HIDEA-SOLUTIONS" }, { 0x002161, "Yournet Inc.", "YOURNET" }, { 0x002162, "Nortel", "NORTEL" }, { 0x002163, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x002164, "Special Design Bureau for Seismic Instrumentation", "SPECIAL-DESIGN-BUREAU-FOR-SEISMIC-INSTRUMENTATION" }, { 0x002165, "Presstek Inc.", "PRESSTEK" }, { 0x002166, "NovAtel Inc.", "NOVATEL" }, { 0x002167, "HWA JIN T&I Corp.", "HWA-JIN-T-I" }, { 0x002168, "iVeia, LLC", "IVEIA-LLC" }, { 0x002169, "Prologix, LLC.", "PROLOGIX-LLC" }, { 0x00216A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00216B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00216C, "ODVA", "ODVA" }, { 0x00216D, "Soltech Co., Ltd.", "SOLTECH" }, { 0x00216E, "Function ATI (Huizhou) Telecommunications Co., Ltd.", "FUNCTION-ATI-HUIZHOU-TELECOMMUNICATIONS" }, { 0x00216F, "SymCom, Inc.", "SYMCOM" }, { 0x002170, "Dell Inc", "DELL" }, { 0x002171, "Wesung TNC Co., Ltd.", "WESUNG-TNC" }, { 0x002172, "Seoultek Valley", "SEOULTEK-VALLEY" }, { 0x002173, "Ion Torrent Systems, Inc.", "ION-TORRENT" }, { 0x002174, "AvaLAN Wireless", "AVALAN-WIRELESS" }, { 0x002175, "Pacific Satellite International Ltd.", "PACIFIC-SATELLITE" }, { 0x002176, "YMax Telecom Ltd.", "YMAX-TELECOM" }, { 0x002177, "W. L. Gore & Associates", "W-L-GORE-ASSOCIATES" }, { 0x002178, "Matuschek Messtechnik GmbH", "MATUSCHEK-MESSTECHNIK" }, { 0x002179, "IOGEAR, Inc.", "IOGEAR" }, { 0x00217A, "Sejin Electron, Inc.", "SEJIN-ELECTRON" }, { 0x00217B, "Bastec AB", "BASTEC-AB" }, { 0x00217C, "2Wire", "2WIRE" }, { 0x00217D, "PYXIS S.R.L.", "PYXIS-S-R-L" }, { 0x00217E, "Telit Communication s.p.a", "TELIT-COMMUNICATION-S-P-A" }, { 0x00217F, "Intraco Technology Pte Ltd", "INTRACO-PTE" }, { 0x002180, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002181, "Si2 Microsystems Limited", "SI2-MICROSYSTEMS" }, { 0x002182, "SandLinks Systems, Ltd.", "SANDLINKS" }, { 0x002183, "VATECH HYDRO", "VATECH-HYDRO" }, { 0x002184, "POWERSOFT SRL", "POWERSOFT-SRL" }, { 0x002185, "MICRO-STAR INT'L CO.,LTD.", "MICRO-STAR" }, { 0x002186, "Universal Global Scientific Industrial Co., Ltd", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x002187, "Imacs GmbH", "IMACS" }, { 0x002188, "EMC Corporation", "EMC" }, { 0x002189, "AppTech, Inc.", "APPTECH" }, { 0x00218A, "Electronic Design and Manufacturing Company", "DESIGN-AND-MANUFACTURING-COMPANY" }, { 0x00218B, "Wescon Technology, Inc.", "WESCON" }, { 0x00218C, "TopControl GMBH", "TOPCONTROL" }, { 0x00218D, "AP Router Ind. Eletronica LTDA", "AP-ROUTER-IND-ELETRONICA-LTDA" }, { 0x00218E, "MEKICS CO., LTD.", "MEKICS" }, { 0x00218F, "Avantgarde Acoustic Lautsprechersysteme GmbH", "AVANTGARDE-ACOUSTIC-LAUTSPRECHERSYSTEME" }, { 0x002190, "Goliath Solutions", "GOLIATH-SOLUTIONS" }, { 0x002191, "D-Link Corporation", "D-LINK" }, { 0x002192, "Baoding Galaxy Electronic Technology Co.,Ltd", "BAODING-GALAXY" }, { 0x002193, "Videofon MV", "VIDEOFON-MV" }, { 0x002194, "Ping Communication", "PING-COMMUNICATION" }, { 0x002195, "GWD Media Limited", "GWD-MEDIA" }, { 0x002196, "Telsey S.p.A.", "TELSEY-S-P-A" }, { 0x002197, "ELITEGROUP COMPUTER SYSTEM", "ELITEGROUP-SYSTEM" }, { 0x002198, "Thai Radio Co, LTD", "THAI-RADIO" }, { 0x002199, "Vacon Plc", "VACON-PLC" }, { 0x00219A, "Cambridge Visual Networks Ltd", "CAMBRIDGE-VISUAL-NETWORKS" }, { 0x00219B, "Dell Inc", "DELL" }, { 0x00219C, "Honeywld Technology Corp.", "HONEYWLD" }, { 0x00219D, "Adesys BV", "ADESYS" }, { 0x00219E, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x00219F, "SATEL OY", "SATEL-OY" }, { 0x0021A0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0021A1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0021A2, "EKE-Electronics Ltd.", "EKE-ELECTRONICS" }, { 0x0021A3, "Micromint", "MICROMINT" }, { 0x0021A4, "Dbii Networks", "DBII-NETWORKS" }, { 0x0021A5, "ERLPhase Power Technologies Ltd.", "ERLPHASE-POWER-TECHNOLOGIES" }, { 0x0021A6, "Videotec Spa", "VIDEOTEC-SPA" }, { 0x0021A7, "Hantle System Co., Ltd.", "HANTLE-SYSTEM" }, { 0x0021A8, "Telephonics Corporation", "TELEPHONICS" }, { 0x0021A9, "Mobilink Telecom Co.,Ltd", "MOBILINK-TELECOM" }, { 0x0021AA, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021AB, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021AC, "Infrared Integrated Systems Ltd", "INFRARED-INTEGRATED" }, { 0x0021AD, "Nordic ID Oy", "NORDIC-ID-OY" }, { 0x0021AE, "ALCATEL-LUCENT FRANCE - WTD", "ALCATEL-LUCENT-FRANCE---WTD" }, { 0x0021AF, "Radio Frequency Systems", "RADIO-FREQUENCY" }, { 0x0021B0, "Tyco Telecommunications", "TYCO-TELECOMMUNICATIONS" }, { 0x0021B1, "DIGITAL SOLUTIONS LTD", "DIGITAL-SOLUTIONS" }, { 0x0021B2, "Fiberblaze A/S", "FIBERBLAZE-A/S" }, { 0x0021B3, "Ross Controls", "ROSS-CONTROLS" }, { 0x0021B4, "APRO MEDIA CO., LTD", "APRO-MEDIA" }, { 0x0021B5, "Galvanic Ltd", "GALVANIC" }, { 0x0021B6, "Triacta Power Technologies Inc.", "TRIACTA-POWER-TECHNOLOGIES" }, { 0x0021B7, "Lexmark International Inc.", "LEXMARK" }, { 0x0021B8, "Inphi Corporation", "INPHI" }, { 0x0021B9, "Universal Devices Inc.", "UNIVERSAL-DEVICES" }, { 0x0021BA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0021BB, "Riken Keiki Co., Ltd.", "RIKEN-KEIKI" }, { 0x0021BC, "ZALA COMPUTER", "ZALA" }, { 0x0021BD, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0021BE, "Cisco, Service Provider Video Technology Group", "CISCO-SERVICE-PROVIDER-VIDEO-GROUP" }, { 0x0021BF, "Hitachi High-Tech Control Systems Corporation", "HITACHI-HIGH-TECH-CONTROL" }, { 0x0021C0, "Mobile Appliance, Inc.", "MOBILE-APPLIANCE" }, { 0x0021C1, "ABB Oy / Medium Voltage Products", "ABB-OY-/-MEDIUM-VOLTAGE-PRODUCTS" }, { 0x0021C2, "GL Communications Inc", "GL-COMMUNICATION" }, { 0x0021C3, "CORNELL Communications, Inc.", "CORNELL-COMMUNICATION" }, { 0x0021C4, "Consilium AB", "CONSILIUM-AB" }, { 0x0021C5, "3DSP Corp", "3DSP" }, { 0x0021C6, "CSJ Global, Inc.", "CSJ-GLOBAL" }, { 0x0021C7, "Russound", "RUSSOUND" }, { 0x0021C8, "LOHUIS Networks", "LOHUIS-NETWORKS" }, { 0x0021C9, "Wavecom Asia Pacific Limited", "WAVECOM-ASIA-PACIFIC" }, { 0x0021CA, "ART System Co., Ltd.", "ART-SYSTEM" }, { 0x0021CB, "SMS TECNOLOGIA ELETRONICA LTDA", "SMS-TECNOLOGIA-ELETRONICA-LTDA" }, { 0x0021CC, "Flextronics International", "FLEXTRONICS" }, { 0x0021CD, "LiveTV", "LIVETV" }, { 0x0021CE, "NTC-Metrotek", "NTC-METROTEK" }, { 0x0021CF, "The Crypto Group", "THE-CRYPTO-GROUP" }, { 0x0021D0, "Global Display Solutions Spa", "GLOBAL-DISPLAY-SOLUTIONS-SPA" }, { 0x0021D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0021D2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0021D3, "BOCOM SECURITY(ASIA PACIFIC) LIMITED", "BOCOM-SECURITY-ASIA-PACIFIC" }, { 0x0021D4, "Vollmer Werke GmbH", "VOLLMER-WERKE" }, { 0x0021D5, "X2E GmbH", "X2E" }, { 0x0021D6, "LXI Consortium", "LXI-CONSORTIUM" }, { 0x0021D7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0021D8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0021D9, "SEKONIC CORPORATION", "SEKONIC" }, { 0x0021DA, "Automation Products Group Inc.", "AUTOMATION-PRODUCTS-GROUP" }, { 0x0021DB, "Santachi Video Technology (Shenzhen) Co., Ltd.", "SANTACHI-VIDEO-SHENZHEN" }, { 0x0021DC, "TECNOALARM S.r.l.", "TECNOALARM-S-R-L" }, { 0x0021DD, "Northstar Systems Corp", "NORTHSTAR" }, { 0x0021DE, "Firepro Wireless", "FIREPRO-WIRELESS" }, { 0x0021DF, "Martin Christ GmbH", "MARTIN-CHRIST" }, { 0x0021E0, "CommAgility Ltd", "COMMAGILITY" }, { 0x0021E1, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0021E2, "Creative Electronic GmbH", "CREATIVE" }, { 0x0021E3, "SerialTek LLC", "SERIALTEK-LLC" }, { 0x0021E4, "I-WIN", "I-WIN" }, { 0x0021E5, "Display Solution AG", "DISPLAY-SOLUTION" }, { 0x0021E6, "Starlight Video Limited", "STARLIGHT-VIDEO" }, { 0x0021E7, "Informatics Services Corporation", "INFORMATICS-SERVICES" }, { 0x0021E8, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0021E9, "Apple", "APPLE" }, { 0x0021EA, "Bystronic Laser AG", "BYSTRONIC-LASER" }, { 0x0021EB, "ESP SYSTEMS, LLC", "ESP-LLC" }, { 0x0021EC, "Solutronic GmbH", "SOLUTRONIC" }, { 0x0021ED, "Telegesis", "TELEGESIS" }, { 0x0021EE, "Full Spectrum Inc.", "FULL-SPECTRUM" }, { 0x0021EF, "Kapsys", "KAPSYS" }, { 0x0021F0, "EW3 Technologies LLC", "EW3-TECHNOLOGIES-LLC" }, { 0x0021F1, "Tutus Data AB", "TUTUS-DATA-AB" }, { 0x0021F2, "EASY3CALL Technology Limited", "EASY3CALL" }, { 0x0021F3, "Si14 SpA", "SI14-SPA" }, { 0x0021F4, "INRange Systems, Inc", "INRANGE" }, { 0x0021F5, "Western Engravers Supply, Inc.", "WESTERN-ENGRAVERS-SUPPLY" }, { 0x0021F6, "Oracle Corporation", "ORACLE" }, { 0x0021F7, "HPN Supply Chain", "HPN-SUPPLY-CHAIN" }, { 0x0021F8, "Enseo, Inc.", "ENSEO" }, { 0x0021F9, "WIRECOM Technologies", "WIRECOM-TECHNOLOGIES" }, { 0x0021FA, "A4SP Technologies Ltd.", "A4SP-TECHNOLOGIES" }, { 0x0021FB, "LG Electronics", "LG-ELECTRONICS" }, { 0x0021FC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021FD, "DSTA S.L.", "DSTA-S-L" }, { 0x0021FE, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0021FF, "Cyfrowy Polsat SA", "CYFROWY-POLSAT" }, { 0x002200, "IBM Corp", "IBM" }, { 0x002201, "Aksys Networks Inc", "AKSYS-NETWORKS" }, { 0x002202, "Excito Elektronik i Skåne AB", "EXCITO-ELEKTRONIK-I-SKåNE-AB" }, { 0x002203, "Glensound Electronics Ltd", "GLENSOUND-ELECTRONICS" }, { 0x002204, "KORATEK", "KORATEK" }, { 0x002205, "WeLink Solutions, Inc.", "WELINK-SOLUTIONS" }, { 0x002206, "Cyberdyne Inc.", "CYBERDYNE" }, { 0x002207, "Inteno Broadband Technology AB", "INTENO-BROADBAND-AB" }, { 0x002208, "Certicom Corp", "CERTICOM" }, { 0x002209, "Omron Healthcare Co., Ltd", "OMRON-HEALTHCARE" }, { 0x00220A, "OnLive, Inc", "ONLIVE" }, { 0x00220B, "National Source Coding Center", "NATIONAL-SOURCE-CODING-CENTER" }, { 0x00220C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00220D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00220E, "Indigo Security Co., Ltd.", "INDIGO-SECURITY" }, { 0x00220F, "MoCA (Multimedia over Coax Alliance)", "MOCA-MULTIMEDIA-OVER-COAX-ALLIANCE" }, { 0x002210, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002211, "Rohati Systems", "ROHATI" }, { 0x002212, "CAI Networks, Inc.", "CAI-NETWORKS" }, { 0x002213, "PCI CORPORATION", "PCI" }, { 0x002214, "RINNAI KOREA", "RINNAI-KOREA" }, { 0x002215, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002216, "SHIBAURA VENDING MACHINE CORPORATION", "SHIBAURA-VENDING-MACHINE" }, { 0x002217, "Neat Electronics", "NEAT-ELECTRONICS" }, { 0x002218, "Verivue Inc.", "VERIVUE" }, { 0x002219, "Dell Inc", "DELL" }, { 0x00221A, "Audio Precision", "AUDIO-PRECISION" }, { 0x00221B, "Morega Systems", "MOREGA" }, { 0x00221C, "PRIVATE", "PRIVATE" }, { 0x00221D, "Freegene Technology LTD", "FREEGENE" }, { 0x00221E, "Media Devices Co., Ltd.", "MEDIA-DEVICES" }, { 0x00221F, "eSang Technologies Co., Ltd.", "ESANG-TECHNOLOGIES" }, { 0x002220, "Mitac Technology Corp", "MITAC" }, { 0x002221, "ITOH DENKI CO,LTD.", "ITOH-DENKI" }, { 0x002222, "Schaffner Deutschland GmbH", "SCHAFFNER-DEUTSCHLAND" }, { 0x002223, "TimeKeeping Systems, Inc.", "TIMEKEEPING" }, { 0x002224, "Good Will Instrument Co., Ltd.", "GOOD-WILL-INSTRUMENT" }, { 0x002225, "Thales Avionics Ltd", "THALES-AVIONICS" }, { 0x002226, "Avaak, Inc.", "AVAAK" }, { 0x002227, "uv-electronic GmbH", "UV" }, { 0x002228, "Breeze Innovations Ltd.", "BREEZE-INNOVATIONS" }, { 0x002229, "Compumedics Ltd", "COMPUMEDICS" }, { 0x00222A, "SoundEar A/S", "SOUNDEAR-A/S" }, { 0x00222B, "Nucomm, Inc.", "NUCOMM" }, { 0x00222C, "Ceton Corp", "CETON" }, { 0x00222D, "SMC Networks Inc.", "SMC-NETWORKS" }, { 0x00222E, "maintech GmbH", "MAINTECH" }, { 0x00222F, "Open Grid Computing, Inc.", "OPEN-GRID-COMPUTING" }, { 0x002230, "FutureLogic Inc.", "FUTURELOGIC" }, { 0x002231, "SMT&C Co., Ltd.", "SMT-C" }, { 0x002232, "Design Design Technology Ltd", "DESIGN-DESIGN" }, { 0x002233, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x002234, "Corventis Inc.", "CORVENTIS" }, { 0x002235, "Strukton Systems bv", "STRUKTON" }, { 0x002236, "VECTOR SP. Z O.O.", "VECTOR-SP-Z-O-O" }, { 0x002237, "Shinhint Group", "SHINHINT-GROUP" }, { 0x002238, "LOGIPLUS", "LOGIPLUS" }, { 0x002239, "Indiana Life Sciences Incorporated", "INDIANA-LIFE-SCIENCES-INCORPORATED" }, { 0x00223A, "Scientific Atlanta, Cisco SPVT Group", "SCIENTIFIC-ATLANTA-CISCO-SPVT-GROUP" }, { 0x00223B, "Communication Networks, LLC", "COMMUNICATION-NETWORKS-LLC" }, { 0x00223C, "RATIO Entwicklungen GmbH", "RATIO-ENTWICKLUNGEN" }, { 0x00223D, "JumpGen Systems, LLC", "JUMPGEN-LLC" }, { 0x00223E, "IRTrans GmbH", "IRTRANS" }, { 0x00223F, "Netgear Inc.", "NETGEAR" }, { 0x002240, "Universal Telecom S/A", "UNIVERSAL-TELECOM-S/A" }, { 0x002241, "Apple", "APPLE" }, { 0x002242, "Alacron Inc.", "ALACRON" }, { 0x002243, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x002244, "Chengdu Linkon Communications Device Co., Ltd", "CHENGDU-LINKON-COMMUNICATION-DEVICE" }, { 0x002245, "Leine & Linde AB", "LEINE-LINDE-AB" }, { 0x002246, "Evoc Intelligent Technology Co.,Ltd.", "EVOC-INTELLIGENT" }, { 0x002247, "DAC ENGINEERING CO., LTD.", "DAC-ENGINEERING" }, { 0x002248, "Microsoft Corporation", "MICROSOFT" }, { 0x002249, "HOME MULTIENERGY SL", "HOME-MULTIENERGY-SL" }, { 0x00224A, "RAYLASE AG", "RAYLASE" }, { 0x00224B, "AIRTECH TECHNOLOGIES, INC.", "AIRTECH-TECHNOLOGIES" }, { 0x00224C, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00224D, "MITAC INTERNATIONAL CORP.", "MITAC" }, { 0x00224E, "SEEnergy Corp.", "SEENERGY" }, { 0x00224F, "Byzoro Networks Ltd.", "BYZORO-NETWORKS" }, { 0x002250, "Point Six Wireless, LLC", "POINT-SIX-WIRELESS-LLC" }, { 0x002251, "Lumasense Technologies", "LUMASENSE-TECHNOLOGIES" }, { 0x002252, "ZOLL Lifecor Corporation", "ZOLL-LIFECOR" }, { 0x002253, "Entorian Technologies", "ENTORIAN-TECHNOLOGIES" }, { 0x002254, "Bigelow Aerospace", "BIGELOW-AEROSPACE" }, { 0x002255, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002256, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002257, "3Com Europe Ltd", "3COM" }, { 0x002258, "Taiyo Yuden Co., Ltd.", "TAIYO-YUDEN" }, { 0x002259, "Guangzhou New Postcom Equipment Co.,Ltd.", "GUANGZHOU-NEW-POSTCOM-EQUIPMENT" }, { 0x00225A, "Garde Security AB", "GARDE-SECURITY-AB" }, { 0x00225B, "Teradici Corporation", "TERADICI" }, { 0x00225C, "Multimedia & Communication Technology", "MULTIMEDIA-COMMUNICATION" }, { 0x00225D, "Digicable Network India Pvt. Ltd.", "DIGICABLE-NETWORK-INDIA-PVT" }, { 0x00225E, "Uwin Technologies Co.,LTD", "UWIN-TECHNOLOGIES" }, { 0x00225F, "Liteon Technology Corporation", "LITEON" }, { 0x002260, "AFREEY Inc.", "AFREEY" }, { 0x002261, "Frontier Silicon Ltd", "FRONTIER-SILICON" }, { 0x002262, "BEP Marine", "BEP-MARINE" }, { 0x002263, "Koos Technical Services, Inc.", "KOOS-TECHNICAL-SERVICES" }, { 0x002264, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x002265, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002266, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002267, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002268, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002269, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00226A, "Honeywell", "HONEYWELL" }, { 0x00226B, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00226C, "LinkSprite Technologies, Inc.", "LINKSPRITE-TECHNOLOGIES" }, { 0x00226D, "Shenzhen GIEC Electronics Co., Ltd.", "SHENZHEN-GIEC-ELECTRONICS" }, { 0x00226E, "Gowell Electronic Limited", "GOWELL" }, { 0x00226F, "3onedata Technology Co. Ltd.", "3ONEDATA" }, { 0x002270, "ABK North America, LLC", "ABK-NORTH-AMERICA-LLC" }, { 0x002271, "Jäger Computergesteuerte Meßtechnik GmbH.", "JäGER-COMPUTERGESTEUERTE-MEßTECHNIK" }, { 0x002272, "American Micro-Fuel Device Corp.", "AMERICAN-MICRO-FUEL-DEVICE" }, { 0x002273, "Techway", "TECHWAY" }, { 0x002274, "FamilyPhone AB", "FAMILYPHONE-AB" }, { 0x002275, "Belkin International Inc.", "BELKIN" }, { 0x002276, "Triple EYE B.V.", "TRIPLE-EYE" }, { 0x002277, "NEC Australia Pty Ltd", "NEC-AUSTRALIA-PTY" }, { 0x002278, "Shenzhen Tongfang Multimedia Technology Co.,Ltd.", "SHENZHEN-TONGFANG-MULTIMEDIA" }, { 0x002279, "Nippon Conlux Co., Ltd.", "NIPPON-CONLUX" }, { 0x00227A, "Telecom Design", "TELECOM-DESIGN" }, { 0x00227B, "Apogee Labs, Inc.", "APOGEE-LABS" }, { 0x00227C, "Woori SMT Co.,ltd", "WOORI-SMT" }, { 0x00227D, "YE DATA INC.", "YE-DATA" }, { 0x00227E, "Chengdu 30Kaitian Communication Industry Co.Ltd", "CHENGDU-30KAITIAN-COMMUNICATION-INDUSTRY" }, { 0x00227F, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x002280, "A2B Electronics AB", "A2B-ELECTRONICS-AB" }, { 0x002281, "Daintree Networks Pty", "DAINTREE-NETWORKS-PTY" }, { 0x002282, "8086 Consultancy", "8086-CONSULTANCY" }, { 0x002283, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x002284, "DESAY A&V SCIENCE AND TECHNOLOGY CO.,LTD", "DESAY-A-V-SCIENCE-AND" }, { 0x002285, "NOMUS COMM SYSTEMS", "NOMUS-COMM" }, { 0x002286, "ASTRON", "ASTRON" }, { 0x002287, "Titan Wireless LLC", "TITAN-WIRELESS-LLC" }, { 0x002288, "Sagrad, Inc.", "SAGRAD" }, { 0x002289, "Optosecurity Inc.", "OPTOSECURITY" }, { 0x00228A, "Teratronik elektronische systeme gmbh", "TERATRONIK-ELEKTRONISCHE-SYSTEME" }, { 0x00228B, "Kensington Computer Products Group", "KENSINGTON-PRODUCTS-GROUP" }, { 0x00228C, "Photon Europe GmbH", "PHOTON-EUROPE" }, { 0x00228D, "GBS Laboratories LLC", "GBS-LABORATORIES-LLC" }, { 0x00228E, "TV-NUMERIC", "TV-NUMERIC" }, { 0x00228F, "CNRS", "CNRS" }, { 0x002290, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002291, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002292, "Cinetal", "CINETAL" }, { 0x002293, "ZTE Corporation", "ZTE" }, { 0x002294, "Kyocera Corporation", "KYOCERA" }, { 0x002295, "SGM Technology for lighting spa", "SGM-FOR-LIGHTING-SPA" }, { 0x002296, "LinoWave Corporation", "LINOWAVE" }, { 0x002297, "XMOS Semiconductor", "XMOS-SEMICONDUCTOR" }, { 0x002298, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x002299, "SeaMicro Inc.", "SEAMICRO" }, { 0x00229A, "Lastar, Inc.", "LASTAR" }, { 0x00229B, "AverLogic Technologies, Inc.", "AVERLOGIC-TECHNOLOGIES" }, { 0x00229C, "Verismo Networks Inc", "VERISMO-NETWORKS" }, { 0x00229D, "PYUNG-HWA IND.CO.,LTD", "PYUNG-HWA-IND" }, { 0x00229E, "Social Aid Research Co., Ltd.", "SOCIAL-AID-RESEARCH" }, { 0x00229F, "Sensys Traffic AB", "SENSYS-TRAFFIC-AB" }, { 0x0022A0, "Delphi Corporation", "DELPHI" }, { 0x0022A1, "Huawei Symantec Technologies Co.,Ltd.", "HUAWEI-SYMANTEC-TECHNOLOGIES" }, { 0x0022A2, "Xtramus Technologies", "XTRAMUS-TECHNOLOGIES" }, { 0x0022A3, "California Eastern Laboratories", "CALIFORNIA-EASTERN-LABORATORIES" }, { 0x0022A4, "2Wire", "2WIRE" }, { 0x0022A5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0022A6, "Sony Computer Entertainment America", "SONY-ENTERTAINMENT-AMERICA" }, { 0x0022A7, "Tyco Electronics AMP GmbH", "TYCO-ELECTRONICS-AMP" }, { 0x0022A8, "Ouman Oy", "OUMAN-OY" }, { 0x0022A9, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x0022AA, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0022AB, "Shenzhen Turbosight Technology Ltd", "SHENZHEN-TURBOSIGHT" }, { 0x0022AC, "Hangzhou Siyuan Tech. Co., Ltd", "HANGZHOU-SIYUAN-TECH" }, { 0x0022AD, "TELESIS TECHNOLOGIES, INC.", "TELESIS-TECHNOLOGIES" }, { 0x0022AE, "Mattel Inc.", "MATTEL" }, { 0x0022AF, "Safety Vision", "SAFETY-VISION" }, { 0x0022B0, "D-Link Corporation", "D-LINK" }, { 0x0022B1, "Elbit Systems", "ELBIT" }, { 0x0022B2, "4RF Communications Ltd", "4RF-COMMUNICATION" }, { 0x0022B3, "Sei S.p.A.", "SEI-S-P-A" }, { 0x0022B4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0022B5, "NOVITA", "NOVITA" }, { 0x0022B6, "Superflow Technologies Group", "SUPERFLOW-TECHNOLOGIES-GROUP" }, { 0x0022B7, "GSS Grundig SAT-Systems GmbH", "GSS-GRUNDIG-SAT" }, { 0x0022B8, "Norcott", "NORCOTT" }, { 0x0022B9, "Analogix Seminconductor, Inc", "ANALOGIX-SEMINCONDUCTOR" }, { 0x0022BA, "HUTH Elektronik Systeme GmbH", "HUTH-ELEKTRONIK-SYSTEME" }, { 0x0022BB, "beyerdynamic GmbH & Co. KG", "BEYERDYNAMIC" }, { 0x0022BC, "JDSU France SAS", "JDSU-FRANCE-SAS" }, { 0x0022BD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0022BE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0022BF, "SieAmp Group of Companies", "SIEAMP-GROUP-OF-COMPANIES" }, { 0x0022C0, "Shenzhen Forcelink Electronic Co, Ltd", "SHENZHEN-FORCELINK" }, { 0x0022C1, "Active Storage Inc.", "ACTIVE-STORAGE" }, { 0x0022C2, "Proview Eletrônica do Brasil LTDA", "PROVIEW-ELETRôNICA-DO-BRASIL-LTDA" }, { 0x0022C3, "Zeeport Technology Inc.", "ZEEPORT" }, { 0x0022C4, "epro GmbH", "EPRO" }, { 0x0022C5, "INFORSON Co,Ltd.", "INFORSON" }, { 0x0022C6, "Sutus Inc", "SUTUS" }, { 0x0022C7, "SEGGER Microcontroller GmbH & Co. KG", "SEGGER-MICROCONTROLLER" }, { 0x0022C8, "Applied Instruments B.V.", "APPLIED-INSTRUMENTS" }, { 0x0022C9, "Lenord, Bauer & Co GmbH", "LENORD-BAUER" }, { 0x0022CA, "Anviz Biometric Tech. Co., Ltd.", "ANVIZ-BIOMETRIC-TECH" }, { 0x0022CB, "IONODES Inc.", "IONODES" }, { 0x0022CC, "SciLog, Inc.", "SCILOG" }, { 0x0022CD, "Ared Technology Co., Ltd.", "ARED" }, { 0x0022CE, "Cisco, Service Provider Video Technology Group", "CISCO-SERVICE-PROVIDER-VIDEO-GROUP" }, { 0x0022CF, "PLANEX Communications INC", "PLANEX-COMMUNICATION" }, { 0x0022D0, "Polar Electro Oy", "POLAR-ELECTRO-OY" }, { 0x0022D1, "Albrecht Jung GmbH & Co. KG", "ALBRECHT-JUNG" }, { 0x0022D2, "All Earth Comércio de Eletrônicos LTDA.", "ALL-EARTH-COMéRCIO-DE-ELETRôNICOS-LTDA" }, { 0x0022D3, "Hub-Tech", "HUB-TECH" }, { 0x0022D4, "ComWorth Co., Ltd.", "COMWORTH" }, { 0x0022D5, "Eaton Corp. Electrical Group Data Center Solutions - Pulizzi", "EATON-ELECTRICAL-GROUP-DATA-CENTER-SOLUTIONS---PULIZZI" }, { 0x0022D6, "Cypak AB", "CYPAK-AB" }, { 0x0022D7, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0022D8, "Shenzhen GST Security and Safety Technology Limited", "SHENZHEN-GST-SECURITY-AND-SAFETY" }, { 0x0022D9, "Fortex Industrial Ltd.", "FORTEX-INDUSTRIAL" }, { 0x0022DA, "ANATEK, LLC", "ANATEK-LLC" }, { 0x0022DB, "Translogic Corporation", "TRANSLOGIC" }, { 0x0022DC, "Vigil Health Solutions Inc.", "VIGIL-HEALTH-SOLUTIONS" }, { 0x0022DD, "Protecta Electronics Ltd", "PROTECTA-ELECTRONICS" }, { 0x0022DE, "OPPO Digital, Inc.", "OPPO-DIGITAL" }, { 0x0022DF, "TAMUZ Monitors", "TAMUZ-MONITORS" }, { 0x0022E0, "Atlantic Software Technologies S.r.L.", "ATLANTIC-SOFTWARE-TECHNOLOGIES-S-R-L" }, { 0x0022E1, "ZORT Labs, LLC.", "ZORT-LABS-LLC" }, { 0x0022E2, "WABTEC Transit Division", "WABTEC-TRANSIT-DIVISION" }, { 0x0022E3, "Amerigon", "AMERIGON" }, { 0x0022E4, "APASS TECHNOLOGY CO., LTD.", "APASS" }, { 0x0022E5, "Fisher-Rosemount Systems Inc.", "FISHER-ROSEMOUNT" }, { 0x0022E6, "Intelligent Data", "INTELLIGENT-DATA" }, { 0x0022E7, "WPS Parking Systems", "WPS-PARKING" }, { 0x0022E8, "Applition Co., Ltd.", "APPLITION" }, { 0x0022E9, "ProVision Communications", "PROVISION-COMMUNICATION" }, { 0x0022EA, "Rustelcom Inc.", "RUSTELCOM" }, { 0x0022EB, "Data Respons A/S", "DATA-RESPONS-A/S" }, { 0x0022EC, "IDEALBT TECHNOLOGY CORPORATION", "IDEALBT" }, { 0x0022ED, "TSI Power Corporation", "TSI-POWER" }, { 0x0022EE, "Algo Communication Products Ltd", "ALGO-COMMUNICATION-PRODUCTS" }, { 0x0022EF, "Ibis Tek, LLC", "IBIS-TEK-LLC" }, { 0x0022F0, "3 Greens Aviation Limited", "3-GREENS-AVIATION" }, { 0x0022F1, "PRIVATE", "PRIVATE" }, { 0x0022F2, "SunPower Corp", "SUNPOWER" }, { 0x0022F3, "SHARP Corporation", "SHARP" }, { 0x0022F4, "AMPAK Technology, Inc.", "AMPAK" }, { 0x0022F5, "Advanced Realtime Tracking GmbH", "ADVANCED-REALTIME-TRACKING" }, { 0x0022F6, "Syracuse Research Corporation", "SYRACUSE-RESEARCH" }, { 0x0022F7, "Conceptronic", "CONCEPTRONIC" }, { 0x0022F8, "PIMA Electronic Systems Ltd.", "PIMA" }, { 0x0022F9, "Pollin Electronic GmbH", "POLLIN" }, { 0x0022FA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0022FB, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0022FC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0022FD, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0022FE, "Microprocessor Designs Inc", "MICROPROCESSOR-DESIGNS" }, { 0x0022FF, "NIVIS LLC", "NIVIS-LLC" }, { 0x002300, "Cayee Computer Ltd.", "CAYEE" }, { 0x002301, "Witron Technology Limited", "WITRON" }, { 0x002302, "Cobalt Digital, Inc.", "COBALT-DIGITAL" }, { 0x002303, "LITE-ON IT Corporation", "LITE-ON-IT" }, { 0x002304, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002305, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002306, "ALPS Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x002307, "FUTURE INNOVATION TECH CO.,LTD", "FUTURE-INNOVATION-TECH" }, { 0x002308, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x002309, "Janam Technologies LLC", "JANAM-TECHNOLOGIES-LLC" }, { 0x00230A, "ARBURG GmbH & Co KG", "ARBURG" }, { 0x00230B, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00230C, "CLOVER ELECTRONICS CO.,LTD.", "CLOVER-ELECTRONICS" }, { 0x00230D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x00230E, "Gorba AG", "GORBA" }, { 0x00230F, "Hirsch Electronics Corporation", "HIRSCH-ELECTRONICS" }, { 0x002310, "LNC Technology Co., Ltd.", "LNC" }, { 0x002311, "Gloscom Co., Ltd.", "GLOSCOM" }, { 0x002312, "Apple", "APPLE" }, { 0x002313, "Qool Technologies Ltd.", "QOOL-TECHNOLOGIES" }, { 0x002314, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002315, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002316, "KISAN ELECTRONICS CO", "KISAN-ELECTRONICS" }, { 0x002317, "Lasercraft Inc", "LASERCRAFT" }, { 0x002318, "Toshiba", "TOSHIBA" }, { 0x002319, "Sielox LLC", "SIELOX-LLC" }, { 0x00231A, "ITF Co., Ltd.", "ITF" }, { 0x00231B, "Danaher Motion - Kollmorgen", "DANAHER-MOTION---KOLLMORGEN" }, { 0x00231C, "Fourier Systems Ltd.", "FOURIER" }, { 0x00231D, "Deltacom Electronics Ltd", "DELTACOM-ELECTRONICS" }, { 0x00231E, "Cezzer Multimedia Technologies", "CEZZER-MULTIMEDIA-TECHNOLOGIES" }, { 0x00231F, "Guangda Electronic & Telecommunication Technology Development Co., Ltd.", "GUANGDA-TELECOMMUNICATION-DEVELOPMENT" }, { 0x002320, "Nicira Networks", "NICIRA-NETWORKS" }, { 0x002321, "Avitech International Corp", "AVITECH" }, { 0x002322, "KISS Teknical Solutions, Inc.", "KISS-TEKNICAL-SOLUTIONS" }, { 0x002323, "Zylin AS", "ZYLIN-AS" }, { 0x002324, "G-PRO COMPUTER", "G-PRO" }, { 0x002325, "IOLAN Holding", "IOLAN-HOLDING" }, { 0x002326, "Fujitsu Limited", "FUJITSU" }, { 0x002327, "Shouyo Electronics CO., LTD", "SHOUYO-ELECTRONICS" }, { 0x002328, "ALCON TELECOMMUNICATIONS CO., LTD.", "ALCON-TELECOMMUNICATIONS" }, { 0x002329, "DDRdrive LLC", "DDRDRIVE-LLC" }, { 0x00232A, "eonas IT-Beratung und -Entwicklung GmbH", "EONAS-IT-BERATUNG-UND--ENTWICKLUNG" }, { 0x00232B, "IRD A/S", "IRD-A/S" }, { 0x00232C, "Senticare", "SENTICARE" }, { 0x00232D, "SandForce", "SANDFORCE" }, { 0x00232E, "Kedah Electronics Engineering, LLC", "KEDAH-ELECTRONICS-ENGINEERING-LLC" }, { 0x00232F, "Advanced Card Systems Ltd.", "ADVANCED-CARD" }, { 0x002330, "DIZIPIA, INC.", "DIZIPIA" }, { 0x002331, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002332, "Apple", "APPLE" }, { 0x002333, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002334, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002335, "Linkflex Co.,Ltd", "LINKFLEX" }, { 0x002336, "METEL s.r.o.", "METEL-S-R-O" }, { 0x002337, "Global Star Solutions ULC", "GLOBAL-STAR-SOLUTIONS-ULC" }, { 0x002338, "OJ-Electronics A/S", "OJ-ELECTRONICS-A/S" }, { 0x002339, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x00233A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00233B, "C-Matic Systems Ltd", "C-MATIC" }, { 0x00233C, "Alflex", "ALFLEX" }, { 0x00233D, "Novero holding B.V.", "NOVERO-HOLDING" }, { 0x00233E, "Alcatel-Lucent-IPD", "ALCATEL-LUCENT-IPD" }, { 0x00233F, "Purechoice Inc", "PURECHOICE" }, { 0x002340, "MiX Telematics", "MIX-TELEMATICS" }, { 0x002341, "Siemens AG, Infrastructure & Cities Sector, Building Technologies Division", "SIEMENS-INFRASTRUCTURE-CITIES-SECTOR-BUILDING-TECHNOLOGIES-DIVISION" }, { 0x002342, "Coffee Equipment Company", "COFFEE-EQUIPMENT-COMPANY" }, { 0x002343, "TEM AG", "TEM" }, { 0x002344, "Objective Interface Systems, Inc.", "OBJECTIVE-INTERFACE" }, { 0x002345, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x002346, "Vestac", "VESTAC" }, { 0x002347, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x002348, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x002349, "Helmholtz Centre Berlin for Material and Energy", "HELMHOLTZ-CENTRE-BERLIN-FOR-MATERIAL-AND-ENERGY" }, { 0x00234A, "PRIVATE", "PRIVATE" }, { 0x00234B, "Inyuan Technology Inc.", "INYUAN" }, { 0x00234C, "KTC AB", "KTC-AB" }, { 0x00234D, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00234E, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00234F, "Luminous Power Technologies Pvt. Ltd.", "LUMINOUS-POWER-TECHNOLOGIES-PVT" }, { 0x002350, "LynTec", "LYNTEC" }, { 0x002351, "2Wire", "2WIRE" }, { 0x002352, "DATASENSOR S.p.A.", "DATASENSOR-S-P-A" }, { 0x002353, "F E T Elettronica snc", "F-E-T-ELETTRONICA-SNC" }, { 0x002354, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002355, "Kinco Automation(Shanghai) Ltd.", "KINCO-AUTOMATION-SHANGHAI" }, { 0x002356, "Packet Forensics LLC", "PACKET-FORENSICS-LLC" }, { 0x002357, "Pitronot Technologies and Engineering P.T.E. Ltd.", "PITRONOT-TECHNOLOGIES-AND-ENGINEERING-P-T-E" }, { 0x002358, "SYSTEL SA", "SYSTEL" }, { 0x002359, "Benchmark Electronics ( Thailand ) Public Company Limited", "BENCHMARK-ELECTRONICS-THAILAND-PUBLIC-COMPANY" }, { 0x00235A, "COMPAL INFORMATION (KUNSHAN) CO., Ltd.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x00235B, "Gulfstream", "GULFSTREAM" }, { 0x00235C, "Aprius, Inc.", "APRIUS" }, { 0x00235D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00235E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00235F, "Silicon Micro Sensors GmbH", "SILICON-MICRO-SENSORS" }, { 0x002360, "Lookit Technology Co., Ltd", "LOOKIT" }, { 0x002361, "Unigen Corporation", "UNIGEN" }, { 0x002362, "Goldline Controls", "GOLDLINE-CONTROLS" }, { 0x002363, "Zhuhai RaySharp Technology Co., Ltd.", "ZHUHAI-RAYSHARP" }, { 0x002364, "Power Instruments Pte Ltd", "POWER-INSTRUMENTS-PTE" }, { 0x002365, "ELKA-Elektronik GmbH", "ELKA-ELEKTRONIK" }, { 0x002366, "Beijing Siasun Electronic System Co.,Ltd.", "BEIJING-SIASUN-SYSTEM" }, { 0x002367, "UniControls a.s.", "UNICONTROLS-A-S" }, { 0x002368, "Motorola", "MOTOROLA" }, { 0x002369, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00236A, "SmartRG Inc", "SMARTRG" }, { 0x00236B, "Xembedded, Inc.", "XEMBEDDED" }, { 0x00236C, "Apple", "APPLE" }, { 0x00236D, "ResMed Ltd", "RESMED" }, { 0x00236E, "Burster GmbH & Co KG", "BURSTER" }, { 0x00236F, "DAQ System", "DAQ-SYSTEM" }, { 0x002370, "Snell", "SNELL" }, { 0x002371, "SOAM Systel", "SOAM-SYSTEL" }, { 0x002372, "MORE STAR INDUSTRIAL GROUP LIMITED", "MORE-STAR-INDUSTRIAL-GROUP" }, { 0x002373, "GridIron Systems, Inc.", "GRIDIRON" }, { 0x002374, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002375, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002376, "HTC Corporation", "HTC" }, { 0x002377, "Isotek Electronics Ltd", "ISOTEK-ELECTRONICS" }, { 0x002378, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x002379, "Union Business Machines Co. Ltd.", "UNION-BUSINESS-MACHINES" }, { 0x00237A, "RIM", "RIM" }, { 0x00237B, "WHDI LLC", "WHDI-LLC" }, { 0x00237C, "NEOTION", "NEOTION" }, { 0x00237D, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00237E, "ELSTER GMBH", "ELSTER" }, { 0x00237F, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x002380, "Nanoteq", "NANOTEQ" }, { 0x002381, "Lengda Technology(Xiamen) Co.,Ltd.", "LENGDA-XIAMEN" }, { 0x002382, "Lih Rong Electronic Enterprise Co., Ltd.", "LIH-RONG" }, { 0x002383, "InMage Systems Inc", "INMAGE" }, { 0x002384, "GGH Engineering s.r.l.", "GGH-ENGINEERING-S-R-L" }, { 0x002385, "ANTIPODE", "ANTIPODE" }, { 0x002386, "Tour & Andersson AB", "TOUR-ANDERSSON-AB" }, { 0x002387, "ThinkFlood, Inc.", "THINKFLOOD" }, { 0x002388, "V.T. Telematica S.p.a.", "V-T-TELEMATICA-S-P-A" }, { 0x002389, "HANGZHOU H3C Technologies Co., Ltd.", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x00238A, "Ciena Corporation", "CIENA" }, { 0x00238B, "Quanta Computer Inc.", "QUANTA" }, { 0x00238C, "PRIVATE", "PRIVATE" }, { 0x00238D, "Techno Design Co., Ltd.", "TECHNO-DESIGN" }, { 0x00238E, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x00238F, "NIDEC COPAL CORPORATION", "NIDEC-COPAL" }, { 0x002390, "Algolware Corporation", "ALGOLWARE" }, { 0x002391, "Maxian", "MAXIAN" }, { 0x002392, "Proteus Industries Inc.", "PROTEUS-INDUSTRIES" }, { 0x002393, "AJINEXTEK", "AJINEXTEK" }, { 0x002394, "Samjeon", "SAMJEON" }, { 0x002395, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002396, "ANDES TECHNOLOGY CORPORATION", "ANDES" }, { 0x002397, "Westell Technologies Inc.", "WESTELL-TECHNOLOGIES" }, { 0x002398, "Sky Control", "SKY-CONTROL" }, { 0x002399, "VD Division, Samsung Electronics Co.", "VD-DIVISION-SAMSUNG-ELECTRONICS" }, { 0x00239A, "EasyData Hardware GmbH", "EASYDATA-HARDWARE" }, { 0x00239B, "Elster Solutions, LLC", "ELSTER-SOLUTIONS-LLC" }, { 0x00239C, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x00239D, "Mapower Electronics Co., Ltd", "MAPOWER-ELECTRONICS" }, { 0x00239E, "Jiangsu Lemote Technology Corporation Limited", "JIANGSU-LEMOTE" }, { 0x00239F, "Institut für Prüftechnik", "INSTITUT-FüR-PRüFTECHNIK" }, { 0x0023A0, "Hana CNS Co., LTD.", "HANA-CNS" }, { 0x0023A1, "Trend Electronics Ltd", "TREND-ELECTRONICS" }, { 0x0023A2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023A3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023A4, "New Concepts Development Corp.", "NEW-CONCEPTS-DEVELOPMENT" }, { 0x0023A5, "SageTV, LLC", "SAGETV-LLC" }, { 0x0023A6, "E-Mon", "E-MON" }, { 0x0023A7, "Redpine Signals, Inc.", "REDPINE-SIGNALS" }, { 0x0023A8, "Marshall Electronics", "MARSHALL-ELECTRONICS" }, { 0x0023A9, "Beijing Detianquan Electromechanical Equipment Co., Ltd", "BEIJING-DETIANQUAN-ELECTROMECHANICAL-EQUIPMENT" }, { 0x0023AA, "HFR, Inc.", "HFR" }, { 0x0023AB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0023AC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0023AD, "Xmark Corporation", "XMARK" }, { 0x0023AE, "Dell Inc.", "DELL" }, { 0x0023AF, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023B0, "COMXION Technology Inc.", "COMXION" }, { 0x0023B1, "Longcheer Technology (Singapore) Pte Ltd", "LONGCHEER-SINGAPORE-PTE" }, { 0x0023B2, "Intelligent Mechatronic Systems Inc", "INTELLIGENT-MECHATRONIC" }, { 0x0023B3, "Lyyn AB", "LYYN-AB" }, { 0x0023B4, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0023B5, "ORTANA LTD", "ORTANA" }, { 0x0023B6, "SECURITE COMMUNICATIONS / HONEYWELL", "SECURITE-COMMUNICATION-/-HONEYWELL" }, { 0x0023B7, "Q-Light Co., Ltd.", "Q-LIGHT" }, { 0x0023B8, "Sichuan Jiuzhou Electronic Technology Co.,Ltd", "SICHUAN-JIUZHOU" }, { 0x0023B9, "EADS Deutschland GmbH", "EADS-DEUTSCHLAND" }, { 0x0023BA, "Chroma", "CHROMA" }, { 0x0023BB, "Schmitt Industries", "SCHMITT-INDUSTRIES" }, { 0x0023BC, "EQ-SYS GmbH", "EQ-SYS" }, { 0x0023BD, "Digital Ally, Inc.", "DIGITAL-ALLY" }, { 0x0023BE, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x0023BF, "Mainpine, Inc.", "MAINPINE" }, { 0x0023C0, "Broadway Networks", "BROADWAY-NETWORKS" }, { 0x0023C1, "Securitas Direct AB", "SECURITAS-DIRECT-AB" }, { 0x0023C2, "SAMSUNG Electronics. Co. LTD", "SAMSUNG-ELECTRONICS" }, { 0x0023C3, "LogMeIn, Inc.", "LOGMEIN" }, { 0x0023C4, "Lux Lumen", "LUX-LUMEN" }, { 0x0023C5, "Radiation Safety and Control Services Inc", "RADIATION-SAFETY-AND-CONTROL-SERVICES" }, { 0x0023C6, "SMC Corporation", "SMC" }, { 0x0023C7, "AVSystem", "AVSYSTEM" }, { 0x0023C8, "TEAM-R", "TEAM-R" }, { 0x0023C9, "Sichuan Tianyi Information Science & Technology Stock CO.,LTD", "SICHUAN-TIANYI-INFORMATION-SCIENCE-STOCK" }, { 0x0023CA, "Behind The Set, LLC", "BEHIND-THE-SET-LLC" }, { 0x0023CB, "Shenzhen Full-join Technology Co.,Ltd", "SHENZHEN-FULL-JOIN" }, { 0x0023CC, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0023CD, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0023CE, "KITA DENSHI CORPORATION", "KITA-DENSHI" }, { 0x0023CF, "CUMMINS-ALLISON CORP.", "CUMMINS-ALLISON" }, { 0x0023D0, "Uniloc USA Inc.", "UNILOC-USA" }, { 0x0023D1, "TRG", "TRG" }, { 0x0023D2, "Inhand Electronics, Inc.", "INHAND-ELECTRONICS" }, { 0x0023D3, "AirLink WiFi Networking Corp.", "AIRLINK-WIFI-NETWORKING" }, { 0x0023D4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0023D5, "WAREMA electronic GmbH", "WAREMA" }, { 0x0023D6, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x0023D7, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x0023D8, "Ball-It Oy", "BALL-IT-OY" }, { 0x0023D9, "Banner Engineering", "BANNER-ENGINEERING" }, { 0x0023DA, "Industrial Computer Source (Deutschland)GmbH", "INDUSTRIAL-SOURCE-DEUTSCHLAND" }, { 0x0023DB, "saxnet gmbh", "SAXNET" }, { 0x0023DC, "Benein, Inc", "BENEIN" }, { 0x0023DD, "ELGIN S.A.", "ELGIN" }, { 0x0023DE, "Ansync Inc.", "ANSYNC" }, { 0x0023DF, "Apple", "APPLE" }, { 0x0023E0, "INO Therapeutics LLC", "INO-THERAPEUTICS-LLC" }, { 0x0023E1, "Cavena Image Products AB", "CAVENA-IMAGE-PRODUCTS-AB" }, { 0x0023E2, "SEA Signalisation", "SEA-SIGNALISATION" }, { 0x0023E3, "Microtronic AG", "MICROTRONIC" }, { 0x0023E4, "IPnect co. ltd.", "IPNECT" }, { 0x0023E5, "IPaXiom Networks", "IPAXIOM-NETWORKS" }, { 0x0023E6, "Pirkus, Inc.", "PIRKUS" }, { 0x0023E7, "Hinke A/S", "HINKE-A/S" }, { 0x0023E8, "Demco Corp.", "DEMCO" }, { 0x0023E9, "F5 Networks, Inc.", "F5-NETWORKS" }, { 0x0023EA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0023EB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0023EC, "Algorithmix GmbH", "ALGORITHMIX" }, { 0x0023ED, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023EE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0023EF, "Zuend Systemtechnik AG", "ZUEND-SYSTEMTECHNIK" }, { 0x0023F0, "Shanghai Jinghan Weighing Apparatus Co. Ltd.", "SHANGHAI-JINGHAN-WEIGHING-APPARATUS" }, { 0x0023F1, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0023F2, "TVLogic", "TVLOGIC" }, { 0x0023F3, "Glocom, Inc.", "GLOCOM" }, { 0x0023F4, "Masternaut", "MASTERNAUT" }, { 0x0023F5, "WILO SE", "WILO-SE" }, { 0x0023F6, "Softwell Technology Co., Ltd.", "SOFTWELL" }, { 0x0023F7, "PRIVATE", "PRIVATE" }, { 0x0023F8, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x0023F9, "Double-Take Software, INC.", "DOUBLE-TAKE-SOFTWARE" }, { 0x0023FA, "RG Nets, Inc.", "RG-NETS" }, { 0x0023FB, "IP Datatel, LLC.", "IP-DATATEL-LLC" }, { 0x0023FC, "Ultra Stereo Labs, Inc", "ULTRA-STEREO-LABS" }, { 0x0023FD, "AFT Atlas Fahrzeugtechnik GmbH", "AFT-ATLAS-FAHRZEUGTECHNIK" }, { 0x0023FE, "Biodevices, SA", "BIODEVICES" }, { 0x0023FF, "Beijing HTTC Technology Ltd.", "BEIJING-HTTC" }, { 0x002400, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002401, "D-Link Corporation", "D-LINK" }, { 0x002402, "Op-Tection GmbH", "OP-TECTION" }, { 0x002403, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002404, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002405, "Dilog Nordic AB", "DILOG-NORDIC-AB" }, { 0x002406, "Pointmobile", "POINTMOBILE" }, { 0x002407, "TELEM SAS", "TELEM-SAS" }, { 0x002408, "Pacific Biosciences", "PACIFIC-BIOSCIENCES" }, { 0x002409, "The Toro Company", "THE-TORO-COMPANY" }, { 0x00240A, "US Beverage Net", "US-BEVERAGE-NET" }, { 0x00240B, "Virtual Computer Inc.", "VIRTUAL" }, { 0x00240C, "DELEC GmbH", "DELEC" }, { 0x00240D, "OnePath Networks LTD.", "ONEPATH-NETWORKS" }, { 0x00240E, "Inventec Besta Co., Ltd.", "INVENTEC-BESTA" }, { 0x00240F, "Ishii Tool & Engineering Corporation", "ISHII-TOOL-ENGINEERING" }, { 0x002410, "NUETEQ Technology,Inc.", "NUETEQ" }, { 0x002411, "PharmaSmart LLC", "PHARMASMART-LLC" }, { 0x002412, "Benign Technologies Co, Ltd.", "BENIGN-TECHNOLOGIES" }, { 0x002413, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002414, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002415, "Magnetic Autocontrol GmbH", "MAGNETIC-AUTOCONTROL" }, { 0x002416, "Any Use", "ANY-USE" }, { 0x002417, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x002418, "Nextwave Semiconductor", "NEXTWAVE-SEMICONDUCTOR" }, { 0x002419, "PRIVATE", "PRIVATE" }, { 0x00241A, "Red Beetle Inc.", "RED-BEETLE" }, { 0x00241B, "iWOW Communications Pte Ltd", "IWOW-COMMUNICATION-PTE" }, { 0x00241C, "FuGang Electronic (DG) Co.,Ltd", "FUGANG-DG" }, { 0x00241D, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x00241E, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00241F, "DCT-Delta GmbH", "DCT-DELTA" }, { 0x002420, "NetUP Inc.", "NETUP" }, { 0x002421, "MICRO-STAR INT'L CO., LTD.", "MICRO-STAR" }, { 0x002422, "Knapp Logistik Automation GmbH", "KNAPP-LOGISTIK-AUTOMATION" }, { 0x002423, "AzureWave Technologies (Shanghai) Inc.", "AZUREWAVE-TECHNOLOGIES-SHANGHAI" }, { 0x002424, "Axis Network Technology", "AXIS-NETWORK" }, { 0x002425, "Shenzhenshi chuangzhicheng Technology Co.,Ltd", "SHENZHENSHI-CHUANGZHICHENG" }, { 0x002426, "NOHMI BOSAI LTD.", "NOHMI-BOSAI" }, { 0x002427, "SSI COMPUTER CORP", "SSI" }, { 0x002428, "EnergyICT", "ENERGYICT" }, { 0x002429, "MK MASTER INC.", "MK-MASTER" }, { 0x00242A, "Hittite Microwave Corporation", "HITTITE-MICROWAVE" }, { 0x00242B, "Hon Hai Precision Ind.Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00242C, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00242E, "Datastrip Inc.", "DATASTRIP" }, { 0x00242F, "VirtenSys Inc", "VIRTENSYS" }, { 0x002430, "Ruby Tech Corp.", "RUBY-TECH" }, { 0x002431, "Uni-v co.,ltd", "UNI-V" }, { 0x002432, "Neostar Technology Co.,LTD", "NEOSTAR" }, { 0x002433, "Alps Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x002434, "Lectrosonics, Inc.", "LECTROSONICS" }, { 0x002435, "WIDE CORPORATION", "WIDE" }, { 0x002436, "Apple", "APPLE" }, { 0x002437, "Motorola - BSG", "MOTOROLA---BSG" }, { 0x002438, "Brocade Communications Systems, Inc", "BROCADE-COMMUNICATION" }, { 0x002439, "Digital Barriers Advanced Technologies", "DIGITAL-BARRIERS-ADVANCED-TECHNOLOGIES" }, { 0x00243A, "Ludl Electronic Products", "LUDL-PRODUCTS" }, { 0x00243B, "CSSI (S) Pte Ltd", "CSSI-S-PTE" }, { 0x00243C, "S.A.A.A.", "A-A" }, { 0x00243D, "Emerson Appliance Motors and Controls", "EMERSON-APPLIANCE-MOTORS-AND-CONTROLS" }, { 0x00243F, "Storwize, Inc.", "STORWIZE" }, { 0x002440, "Halo Monitoring, Inc.", "HALO-MONITORING" }, { 0x002441, "Wanzl Metallwarenfabrik GmbH", "WANZL-METALLWARENFABRIK" }, { 0x002442, "Axona Limited", "AXONA" }, { 0x002443, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002444, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x002445, "CommScope Canada Inc.", "COMMSCOPE-CANADA" }, { 0x002446, "MMB Research Inc.", "MMB-RESEARCH" }, { 0x002447, "Kaztek Systems", "KAZTEK" }, { 0x002448, "SpiderCloud Wireless, Inc", "SPIDERCLOUD-WIRELESS" }, { 0x002449, "Shen Zhen Lite Star Electronics Technology Co., Ltd", "SHEN-ZHEN-LITE-STAR-ELECTRONICS" }, { 0x00244A, "Voyant International", "VOYANT" }, { 0x00244B, "PERCEPTRON INC", "PERCEPTRON" }, { 0x00244C, "Solartron Metrology Ltd", "SOLARTRON-METROLOGY" }, { 0x00244D, "Hokkaido Electronics Corporation", "HOKKAIDO-ELECTRONICS" }, { 0x00244E, "RadChips, Inc.", "RADCHIPS" }, { 0x00244F, "Asantron Technologies Ltd.", "ASANTRON-TECHNOLOGIES" }, { 0x002450, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002451, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002452, "Silicon Software GmbH", "SILICON-SOFTWARE" }, { 0x002453, "Initra d.o.o.", "INITRA-D-O-O" }, { 0x002454, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x002455, "MuLogic BV", "MULOGIC" }, { 0x002456, "2Wire", "2WIRE" }, { 0x002458, "PA Bastion CC", "PA-BASTION-CC" }, { 0x002459, "ABB STOTZ-KONTAKT GmbH", "ABB-STOTZ-KONTAKT" }, { 0x00245A, "Nanjing Panda Electronics Company Limited", "NANJING-PANDA-ELECTRONICS-COMPANY" }, { 0x00245B, "RAIDON TECHNOLOGY, INC.", "RAIDON" }, { 0x00245C, "Design-Com Technologies Pty. Ltd.", "DESIGN-COM-TECHNOLOGIES-PTY" }, { 0x00245D, "Terberg besturingstechniek B.V.", "TERBERG-BESTURINGSTECHNIEK" }, { 0x00245E, "Hivision Co.,ltd", "HIVISION" }, { 0x00245F, "Vine Telecom CO.,Ltd.", "VINE-TELECOM" }, { 0x002460, "Giaval Science Development Co. Ltd.", "GIAVAL-SCIENCE-DEVELOPMENT" }, { 0x002461, "Shin Wang Tech.", "SHIN-WANG-TECH" }, { 0x002462, "Rayzone Corporation", "RAYZONE" }, { 0x002463, "Phybridge Inc", "PHYBRIDGE" }, { 0x002464, "Bridge Technologies Co AS", "BRIDGE-TECHNOLOGIES-AS" }, { 0x002465, "Elentec", "ELENTEC" }, { 0x002466, "Unitron nv", "UNITRON-NV" }, { 0x002467, "AOC International (Europe) GmbH", "AOC-EUROPE" }, { 0x002468, "Sumavision Technologies Co.,Ltd", "SUMAVISION-TECHNOLOGIES" }, { 0x002469, "Smart Doorphones", "SMART-DOORPHONES" }, { 0x00246A, "Solid Year Co., Ltd.", "SOLID-YEAR" }, { 0x00246B, "Covia, Inc.", "COVIA" }, { 0x00246C, "ARUBA NETWORKS, INC.", "ARUBA-NETWORKS" }, { 0x00246D, "Weinzierl Engineering GmbH", "WEINZIERL-ENGINEERING" }, { 0x00246E, "Phihong USA Corp.", "PHIHONG-USA" }, { 0x00246F, "Onda Communication spa", "ONDA-COMMUNICATION-SPA" }, { 0x002470, "AUROTECH ultrasound AS.", "AUROTECH-ULTRASOUND-AS" }, { 0x002471, "Fusion MultiSystems dba Fusion-io", "FUSION-MULTISYSTEMS-DBA-FUSION-IO" }, { 0x002472, "ReDriven Power Inc.", "REDRIVEN-POWER" }, { 0x002473, "3Com Europe Ltd", "3COM" }, { 0x002474, "Autronica Fire And Securirty", "AUTRONICA-FIRE-AND-SECURIRTY" }, { 0x002475, "Compass System(Embedded Dept.)", "COMPASS-SYSTEM-EMBEDDED-DEPT" }, { 0x002476, "TAP.tv", "TAP-TV" }, { 0x002477, "Tibbo Technology", "TIBBO" }, { 0x002478, "Mag Tech Electronics Co Limited", "MAG-TECH-ELECTRONICS" }, { 0x002479, "Optec Displays, Inc.", "OPTEC-DISPLAYS" }, { 0x00247A, "FU YI CHENG Technology Co., Ltd.", "FU-YI-CHENG" }, { 0x00247B, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x00247C, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00247D, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00247E, "Universal Global Scientific Industrial Co., Ltd", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x00247F, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x002480, "Meteocontrol GmbH", "METEOCONTROL" }, { 0x002481, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x002482, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x002483, "LG Electronics", "LG-ELECTRONICS" }, { 0x002484, "Bang and Olufsen Medicom a/s", "BANG-AND-OLUFSEN-MEDICOM-A/S" }, { 0x002485, "ConteXtream Ltd", "CONTEXTREAM" }, { 0x002486, "DesignArt Networks", "DESIGNART-NETWORKS" }, { 0x002487, "Blackboard Inc.", "BLACKBOARD" }, { 0x002488, "Centre For Development Of Telematics", "CENTRE-FOR-DEVELOPMENT-OF-TELEMATICS" }, { 0x002489, "Vodafone Omnitel N.V.", "VODAFONE-OMNITEL-N-V" }, { 0x00248A, "Kaga Electronics Co., Ltd.", "KAGA-ELECTRONICS" }, { 0x00248B, "HYBUS CO., LTD.", "HYBUS" }, { 0x00248C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x00248D, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x00248E, "Infoware ZRt.", "INFOWARE-ZRT" }, { 0x00248F, "DO-MONIX", "DO-MONIX" }, { 0x002490, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x002491, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x002492, "Motorola, Broadband Solutions Group", "MOTOROLA-BROADBAND-SOLUTIONS-GROUP" }, { 0x002493, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002494, "Shenzhen Baoxin Tech CO., Ltd.", "SHENZHEN-BAOXIN-TECH" }, { 0x002495, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002496, "Ginzinger electronic systems", "GINZINGER" }, { 0x002497, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002498, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002499, "Aquila Technologies", "AQUILA-TECHNOLOGIES" }, { 0x00249A, "Beijing Zhongchuang Telecommunication Test Co., Ltd.", "BEIJING-ZHONGCHUANG-TELECOMMUNICATION-TEST" }, { 0x00249B, "Action Star Enterprise Co., Ltd.", "ACTION-STAR" }, { 0x00249C, "Bimeng Comunication System Co. Ltd", "BIMENG-COMUNICATION-SYSTEM" }, { 0x00249D, "NES Technology Inc.", "NES" }, { 0x00249E, "ADC-Elektronik GmbH", "ADC-ELEKTRONIK" }, { 0x00249F, "RIM Testing Services", "RIM-TESTING-SERVICES" }, { 0x0024A0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024A1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024A2, "Hong Kong Middleware Technology Limited", "HONG-KONG-MIDDLEWARE" }, { 0x0024A3, "Sonim Technologies Inc", "SONIM-TECHNOLOGIES" }, { 0x0024A4, "Siklu Communication", "SIKLU-COMMUNICATION" }, { 0x0024A5, "Buffalo Inc.", "BUFFALO" }, { 0x0024A6, "TELESTAR DIGITAL GmbH", "TELESTAR-DIGITAL" }, { 0x0024A7, "Advanced Video Communications Inc.", "ADVANCED-VIDEO-COMMUNICATION" }, { 0x0024A8, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x0024A9, "Ag Leader Technology", "LEADER" }, { 0x0024AA, "Dycor Technologies Ltd.", "DYCOR-TECHNOLOGIES" }, { 0x0024AB, "A7 Engineering, Inc.", "A7-ENGINEERING" }, { 0x0024AC, "Hangzhou DPtech Technologies Co., Ltd.", "HANGZHOU-DPTECH-TECHNOLOGIES" }, { 0x0024AD, "Adolf Thies Gmbh & Co. KG", "ADOLF-THIES" }, { 0x0024AE, "Morpho", "MORPHO" }, { 0x0024AF, "EchoStar Technologies", "ECHOSTAR-TECHNOLOGIES" }, { 0x0024B0, "ESAB AB", "ESAB-AB" }, { 0x0024B1, "Coulomb Technologies", "COULOMB-TECHNOLOGIES" }, { 0x0024B2, "Netgear", "NETGEAR" }, { 0x0024B3, "Graf-Syteco GmbH & Co. KG", "GRAF-SYTECO" }, { 0x0024B4, "ESCATRONIC GmbH", "ESCATRONIC" }, { 0x0024B5, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0024B6, "Seagate Technology", "SEAGATE" }, { 0x0024B7, "GridPoint, Inc.", "GRIDPOINT" }, { 0x0024B8, "free alliance sdn bhd", "FREE-ALLIANCE-SDN-BHD" }, { 0x0024B9, "Wuhan Higheasy Electronic Technology Development Co.Ltd", "WUHAN-HIGHEASY-DEVELOPMENT" }, { 0x0024BA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x0024BB, "CENTRAL Corporation", "CENTRAL" }, { 0x0024BC, "HuRob Co.,Ltd", "HUROB" }, { 0x0024BD, "Hainzl Industriesysteme GmbH", "HAINZL-INDUSTRIESYSTEME" }, { 0x0024BE, "Sony Corporation", "SONY" }, { 0x0024BF, "CIAT", "CIAT" }, { 0x0024C0, "NTI COMODO INC", "NTI-COMODO" }, { 0x0024C1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0024C2, "Asumo Co.,Ltd.", "ASUMO" }, { 0x0024C3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0024C4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0024C5, "Meridian Audio Limited", "MERIDIAN-AUDIO" }, { 0x0024C6, "Hager Electro SAS", "HAGER-ELECTRO-SAS" }, { 0x0024C7, "Mobilarm Ltd", "MOBILARM" }, { 0x0024C8, "Broadband Solutions Group", "BROADBAND-SOLUTIONS-GROUP" }, { 0x0024C9, "Broadband Solutions Group", "BROADBAND-SOLUTIONS-GROUP" }, { 0x0024CA, "Tobii Technology AB", "TOBII-AB" }, { 0x0024CB, "Autonet Mobile", "AUTONET-MOBILE" }, { 0x0024CC, "Fascinations Toys and Gifts, Inc.", "FASCINATIONS-TOYS-AND-GIFTS" }, { 0x0024CD, "Willow Garage, Inc.", "WILLOW-GARAGE" }, { 0x0024CE, "Exeltech Inc", "EXELTECH" }, { 0x0024CF, "Inscape Data Corporation", "INSCAPE-DATA" }, { 0x0024D0, "Shenzhen SOGOOD Industry CO.,LTD.", "SHENZHEN-SOGOOD-INDUSTRY" }, { 0x0024D1, "Thomson Inc.", "THOMSON" }, { 0x0024D2, "Askey Computer", "ASKEY" }, { 0x0024D3, "QUALICA Inc.", "QUALICA" }, { 0x0024D4, "FREEBOX SA", "FREEBOX" }, { 0x0024D5, "Winward Industrial Limited", "WINWARD-INDUSTRIAL" }, { 0x0024D6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0024D7, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0024D8, "IlSung Precision", "ILSUNG-PRECISION" }, { 0x0024D9, "BICOM, Inc.", "BICOM" }, { 0x0024DA, "Innovar Systems Limited", "INNOVAR" }, { 0x0024DB, "Alcohol Monitoring Systems", "ALCOHOL-MONITORING" }, { 0x0024DC, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x0024DD, "Centrak, Inc.", "CENTRAK" }, { 0x0024DE, "GLOBAL Technology Inc.", "GLOBAL" }, { 0x0024DF, "Digitalbox Europe GmbH", "DIGITALBOX-EUROPE" }, { 0x0024E0, "DS Tech, LLC", "DS-TECH-LLC" }, { 0x0024E1, "Convey Computer Corp.", "CONVEY" }, { 0x0024E2, "HASEGAWA ELECTRIC CO.,LTD.", "HASEGAWA-ELECTRIC" }, { 0x0024E3, "CAO Group", "CAO-GROUP" }, { 0x0024E4, "Withings", "WITHINGS" }, { 0x0024E5, "Seer Technology, Inc", "SEER" }, { 0x0024E6, "In Motion Technology Inc.", "IN-MOTION" }, { 0x0024E7, "Plaster Networks", "PLASTER-NETWORKS" }, { 0x0024E8, "Dell Inc.", "DELL" }, { 0x0024E9, "Samsung Electronics Co., Ltd., Storage System Division", "SAMSUNG-ELECTRONICS-STORAGE-SYSTEM-DIVISION" }, { 0x0024EA, "iris-GmbH infrared & intelligent sensors", "IRIS--INFRARED-INTELLIGENT-SENSORS" }, { 0x0024EB, "ClearPath Networks, Inc.", "CLEARPATH-NETWORKS" }, { 0x0024EC, "United Information Technology Co.,Ltd.", "UNITED-INFORMATION" }, { 0x0024ED, "YT Elec. Co,.Ltd.", "YT-ELEC" }, { 0x0024EE, "Wynmax Inc.", "WYNMAX" }, { 0x0024EF, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0024F0, "Seanodes", "SEANODES" }, { 0x0024F1, "Shenzhen Fanhai Sanjiang Electronics Co., Ltd.", "SHENZHEN-FANHAI-SANJIANG-ELECTRONICS" }, { 0x0024F2, "Uniphone Telecommunication Co., Ltd.", "UNIPHONE-TELECOMMUNICATION" }, { 0x0024F3, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0024F4, "Kaminario Technologies Ltd.", "KAMINARIO-TECHNOLOGIES" }, { 0x0024F5, "NDS Surgical Imaging", "NDS-SURGICAL-IMAGING" }, { 0x0024F6, "MIYOSHI ELECTRONICS CORPORATION", "MIYOSHI-ELECTRONICS" }, { 0x0024F7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0024F8, "Technical Solutions Company Ltd.", "TECHNICAL-SOLUTIONS-COMPANY" }, { 0x0024F9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0024FA, "Hilger u. Kern GMBH", "HILGER-U-KERN" }, { 0x0024FB, "PRIVATE", "PRIVATE" }, { 0x0024FC, "QuoPin Co., Ltd.", "QUOPIN" }, { 0x0024FD, "Accedian Networks Inc", "ACCEDIAN-NETWORKS" }, { 0x0024FE, "AVM GmbH", "AVM" }, { 0x0024FF, "QLogic Corporation", "QLOGIC" }, { 0x002500, "Apple", "APPLE" }, { 0x002501, "JSC \"Supertel\"", "JSC-SUPERTEL" }, { 0x002502, "NaturalPoint", "NATURALPOINT" }, { 0x002503, "IBM Corp", "IBM" }, { 0x002504, "Valiant Communications Limited", "VALIANT-COMMUNICATION" }, { 0x002505, "eks Engel GmbH & Co. KG", "EKS-ENGEL" }, { 0x002506, "A.I. ANTITACCHEGGIO ITALIA SRL", "A-I-ANTITACCHEGGIO-ITALIA-SRL" }, { 0x002507, "ASTAK Inc.", "ASTAK" }, { 0x002508, "Maquet Cardiopulmonary AG", "MAQUET-CARDIOPULMONARY" }, { 0x002509, "SHARETRONIC Group LTD", "SHARETRONIC-GROUP" }, { 0x00250A, "Security Expert Co. Ltd", "SECURITY-EXPERT" }, { 0x00250B, "CENTROFACTOR INC", "CENTROFACTOR" }, { 0x00250C, "Enertrac", "ENERTRAC" }, { 0x00250D, "GZT Telkom-Telmor sp. z o.o.", "GZT-TELKOM-TELMOR-SP-Z-O-O" }, { 0x00250E, "gt german telematics gmbh", "GT-GERMAN-TELEMATICS" }, { 0x00250F, "On-Ramp Wireless, Inc.", "ON-RAMP-WIRELESS" }, { 0x002510, "Pico-Tesla Magnetic Therapies", "PICO-TESLA-MAGNETIC-THERAPIES" }, { 0x002511, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 0x002512, "ZTE Corporation", "ZTE" }, { 0x002513, "CXP DIGITAL BV", "CXP-DIGITAL" }, { 0x002514, "PC Worth Int'l Co., Ltd.", "PC-WORTH" }, { 0x002515, "SFR", "SFR" }, { 0x002516, "Integrated Design Tools, Inc.", "INTEGRATED-DESIGN-TOOLS" }, { 0x002517, "Venntis, LLC", "VENNTIS-LLC" }, { 0x002518, "Power PLUS Communications AG", "POWER-PLUS-COMMUNICATION" }, { 0x002519, "Viaas Inc", "VIAAS" }, { 0x00251A, "Psiber Data Systems Inc.", "PSIBER-DATA" }, { 0x00251B, "Philips CareServant", "PHILIPS-CARESERVANT" }, { 0x00251C, "EDT", "EDT" }, { 0x00251D, "DSA Encore, LLC", "DSA-ENCORE-LLC" }, { 0x00251E, "ROTEL TECHNOLOGIES", "ROTEL-TECHNOLOGIES" }, { 0x00251F, "ZYNUS VISION INC.", "ZYNUS-VISION" }, { 0x002520, "SMA Railway Technology GmbH", "SMA-RAILWAY" }, { 0x002521, "Logitek Electronic Systems, Inc.", "LOGITEK" }, { 0x002522, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0x002523, "OCP Inc.", "OCP" }, { 0x002524, "Lightcomm Technology Co., Ltd", "LIGHTCOMM" }, { 0x002525, "CTERA Networks Ltd.", "CTERA-NETWORKS" }, { 0x002526, "Genuine Technologies Co., Ltd.", "GENUINE-TECHNOLOGIES" }, { 0x002527, "Bitrode Corp.", "BITRODE" }, { 0x002528, "Daido Signal Co., Ltd.", "DAIDO-SIGNAL" }, { 0x002529, "COMELIT GROUP S.P.A", "COMELIT-GROUP-S-P-A" }, { 0x00252A, "Chengdu GeeYa Technology Co.,LTD", "CHENGDU-GEEYA" }, { 0x00252B, "Stirling Energy Systems", "STIRLING-ENERGY" }, { 0x00252C, "Entourage Systems, Inc.", "ENTOURAGE" }, { 0x00252D, "Kiryung Electronics", "KIRYUNG-ELECTRONICS" }, { 0x00252E, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x00252F, "Energy, Inc.", "ENERGY" }, { 0x002530, "Aetas Systems Inc.", "AETAS" }, { 0x002531, "Cloud Engines, Inc.", "CLOUD-ENGINES" }, { 0x002532, "Digital Recorders", "DIGITAL-RECORDERS" }, { 0x002533, "WITTENSTEIN AG", "WITTENSTEIN" }, { 0x002535, "Minimax GmbH & Co KG", "MINIMAX" }, { 0x002536, "Oki Electric Industry Co., Ltd.", "OKI-ELECTRIC-INDUSTRY" }, { 0x002537, "Runcom Technologies Ltd.", "RUNCOM-TECHNOLOGIES" }, { 0x002538, "Samsung Electronics Co., Ltd., Memory Division", "SAMSUNG-ELECTRONICS-MEMORY-DIVISION" }, { 0x002539, "IfTA GmbH", "IFTA" }, { 0x00253A, "CEVA, Ltd.", "CEVA" }, { 0x00253B, "din Dietmar Nocker Facilitymanagement GmbH", "DIN-DIETMAR-NOCKER-FACILITYMANAGEMENT" }, { 0x00253C, "2Wire", "2WIRE" }, { 0x00253D, "DRS Consolidated Controls", "DRS-CONSOLIDATED-CONTROLS" }, { 0x00253E, "Sensus Metering Systems", "SENSUS-METERING" }, { 0x002540, "Quasar Technologies, Inc.", "QUASAR-TECHNOLOGIES" }, { 0x002541, "Maquet Critical Care AB", "MAQUET-CRITICAL-CARE-AB" }, { 0x002542, "Pittasoft", "PITTASOFT" }, { 0x002543, "MONEYTECH", "MONEYTECH" }, { 0x002544, "LoJack Corporation", "LOJACK" }, { 0x002545, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002546, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002547, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002548, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002549, "Jeorich Tech. Co.,Ltd.", "JEORICH-TECH" }, { 0x00254A, "RingCube Technologies, Inc.", "RINGCUBE-TECHNOLOGIES" }, { 0x00254B, "Apple", "APPLE" }, { 0x00254C, "Videon Central, Inc.", "VIDEON-CENTRAL" }, { 0x00254D, "Singapore Technologies Electronics Limited", "SINGAPORE-TECHNOLOGIES-ELECTRONICS" }, { 0x00254E, "Vertex Wireless Co., Ltd.", "VERTEX-WIRELESS" }, { 0x00254F, "ELETTROLAB Srl", "ELETTROLAB-SRL" }, { 0x002550, "Riverbed Technology", "RIVERBED" }, { 0x002551, "SE-Elektronic GmbH", "SE-ELEKTRONIC" }, { 0x002552, "VXI CORPORATION", "VXI" }, { 0x002553, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x002554, "Pixel8 Networks", "PIXEL8-NETWORKS" }, { 0x002555, "Visonic Technologies 1993 Ltd", "VISONIC-TECHNOLOGIES-1993" }, { 0x002556, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0x002557, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x002558, "MPEDIA", "MPEDIA" }, { 0x002559, "Syphan Technologies Ltd", "SYPHAN-TECHNOLOGIES" }, { 0x00255A, "Tantalus Systems Corp.", "TANTALUS" }, { 0x00255B, "CoachComm, LLC", "COACHCOMM-LLC" }, { 0x00255C, "NEC Corporation", "NEC" }, { 0x00255D, "Morningstar Corporation", "MORNINGSTAR" }, { 0x00255E, "Shanghai Dare Technologies Co.,Ltd.", "SHANGHAI-DARE-TECHNOLOGIES" }, { 0x00255F, "SenTec AG", "SENTEC" }, { 0x002560, "Ibridge Networks & Communications Ltd.", "IBRIDGE-NETWORKS-COMMUNICATION" }, { 0x002561, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x002562, "interbro Co. Ltd.", "INTERBRO" }, { 0x002563, "Luxtera Inc", "LUXTERA" }, { 0x002564, "Dell Inc.", "DELL" }, { 0x002565, "Vizimax Inc.", "VIZIMAX" }, { 0x002566, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002567, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x002568, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x002569, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x00256A, "inIT - Institut Industrial IT", "INIT---INSTITUT-INDUSTRIAL-IT" }, { 0x00256B, "ATENIX E.E. s.r.l.", "ATENIX-E-E-S-R-L" }, { 0x00256C, "\"Azimut\" Production Association JSC", "AZIMUT-PRODUCTION-ASSOCIATION-JSC" }, { 0x00256D, "Broadband Forum", "BROADBAND-FORUM" }, { 0x00256E, "Van Breda B.V.", "VAN-BREDA" }, { 0x00256F, "Dantherm Power", "DANTHERM-POWER" }, { 0x002570, "Eastern Communications Company Limited", "EASTERN-COMMUNICATION-COMPANY" }, { 0x002571, "Zhejiang Tianle Digital Electric Co.,Ltd", "ZHEJIANG-TIANLE-DIGITAL-ELECTRIC" }, { 0x002572, "Nemo-Q International AB", "NEMO-Q-AB" }, { 0x002573, "ST Electronics (Info-Security) Pte Ltd", "ST-ELECTRONICS-INFO-SECURITY-PTE" }, { 0x002574, "KUNIMI MEDIA DEVICE Co., Ltd.", "KUNIMI-MEDIA-DEVICE" }, { 0x002575, "FiberPlex Technologies, LLC", "FIBERPLEX-TECHNOLOGIES-LLC" }, { 0x002576, "NELI TECHNOLOGIES", "NELI-TECHNOLOGIES" }, { 0x002577, "D-BOX Technologies", "D-BOX-TECHNOLOGIES" }, { 0x002578, "JSC \"Concern \"Sozvezdie\"", "JSC-CONCERN-SOZVEZDIE" }, { 0x002579, "J & F Labs", "J-F-LABS" }, { 0x00257A, "CAMCO Produktions- und Vertriebs-GmbH für Beschallungs- und Beleuchtungsanlagen", "CAMCO-PRODUKTIONS--UND-VERTRIEBS--FüR-BESCHALLUNGS--UND-BELEUCHTUNGSANLAGEN" }, { 0x00257B, "STJ ELECTRONICS PVT LTD", "STJ-ELECTRONICS-PVT" }, { 0x00257C, "Huachentel Technology Development Co., Ltd", "HUACHENTEL-DEVELOPMENT" }, { 0x00257D, "PointRed Telecom Private Ltd.", "POINTRED-TELECOM-PRIVATE" }, { 0x00257E, "NEW POS Technology Limited", "NEW-POS" }, { 0x00257F, "CallTechSolution Co.,Ltd", "CALLTECHSOLUTION" }, { 0x002580, "Equipson S.A.", "EQUIPSON" }, { 0x002581, "x-star networks Inc.", "X-STAR-NETWORKS" }, { 0x002582, "Maksat Technologies (P) Ltd", "MAKSAT-TECHNOLOGIES-P" }, { 0x002583, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002584, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002585, "KOKUYO S&T Co., Ltd.", "KOKUYO-S-T" }, { 0x002586, "TP-LINK Technologies Co., Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0x002587, "Vitality, Inc.", "VITALITY" }, { 0x002588, "Genie Industries, Inc.", "GENIE-INDUSTRIES" }, { 0x002589, "Hills Industries Limited", "HILLS-INDUSTRIES" }, { 0x00258A, "Pole/Zero Corporation", "POLE/ZERO" }, { 0x00258B, "Mellanox Technologies Ltd", "MELLANOX-TECHNOLOGIES" }, { 0x00258C, "ESUS ELEKTRONIK SAN. VE DIS. TIC. LTD. STI.", "ESUS-ELEKTRONIK-SAN-VE-DIS-TIC-STI" }, { 0x00258D, "Haier", "HAIER" }, { 0x00258E, "The Weather Channel", "THE-WEATHER-CHANNEL" }, { 0x00258F, "Trident Microsystems, Inc.", "TRIDENT-MICROSYSTEMS" }, { 0x002590, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x002591, "NEXTEK, Inc.", "NEXTEK" }, { 0x002592, "Guangzhou Shirui Electronic Co., Ltd", "GUANGZHOU-SHIRUI" }, { 0x002593, "DatNet Informatikai Kft.", "DATNET-INFORMATIKAI-KFT" }, { 0x002594, "Eurodesign BG LTD", "EURODESIGN-BG" }, { 0x002595, "Northwest Signal Supply, Inc", "NORTHWEST-SIGNAL-SUPPLY" }, { 0x002596, "GIGAVISION srl", "GIGAVISION-SRL" }, { 0x002597, "Kalki Communication Technologies", "KALKI-COMMUNICATION-TECHNOLOGIES" }, { 0x002598, "Zhong Shan City Litai Electronic Industrial Co. Ltd", "ZHONG-SHAN-CITY-LITAI-INDUSTRIAL" }, { 0x002599, "Hedon e.d. B.V.", "HEDON-E-D" }, { 0x00259A, "CEStronics GmbH", "CESTRONICS" }, { 0x00259B, "Beijing PKUNITY Microsystems Technology Co., Ltd", "BEIJING-PKUNITY-MICROSYSTEMS" }, { 0x00259C, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x00259D, "PRIVATE", "PRIVATE" }, { 0x00259E, "Huawei Technologies Co., Ltd.", "HUAWEI-TECHNOLOGIES" }, { 0x00259F, "TechnoDigital Technologies GmbH", "TECHNODIGITAL-TECHNOLOGIES" }, { 0x0025A0, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x0025A1, "Enalasys", "ENALASYS" }, { 0x0025A2, "Alta Definicion LINCEO S.L.", "ALTA-DEFINICION-LINCEO-S-L" }, { 0x0025A3, "Trimax Wireless, Inc.", "TRIMAX-WIRELESS" }, { 0x0025A4, "EuroDesign embedded technologies GmbH", "EURODESIGN-EMBEDDED-TECHNOLOGIES" }, { 0x0025A5, "Walnut Media Network", "WALNUT-MEDIA-NETWORK" }, { 0x0025A6, "Central Network Solution Co., Ltd.", "CENTRAL-NETWORK-SOLUTION" }, { 0x0025A7, "Comverge, Inc.", "COMVERGE" }, { 0x0025A8, "Kontron (BeiJing) Technology Co.,Ltd", "KONTRON-BEIJING" }, { 0x0025A9, "Shanghai Embedway Information Technologies Co.,Ltd", "SHANGHAI-EMBEDWAY-INFORMATION-TECHNOLOGIES" }, { 0x0025AA, "Beijing Soul Technology Co.,Ltd.", "BEIJING-SOUL" }, { 0x0025AB, "AIO LCD PC BU / TPV", "AIO-LCD-PC-BU-/-TPV" }, { 0x0025AC, "I-Tech corporation", "I-TECH" }, { 0x0025AD, "Manufacturing Resources International", "MANUFACTURING-RESOURCES" }, { 0x0025AE, "Microsoft Corporation", "MICROSOFT" }, { 0x0025AF, "COMFILE Technology", "COMFILE" }, { 0x0025B0, "Schmartz Inc", "SCHMARTZ" }, { 0x0025B1, "Maya-Creation Corporation", "MAYA-CREATION" }, { 0x0025B2, "MBDA Deutschland GmbH", "MBDA-DEUTSCHLAND" }, { 0x0025B3, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x0025B4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0025B5, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0025B6, "Telecom FM", "TELECOM-FM" }, { 0x0025B7, "Costar electronics, inc.,", "COSTAR-ELECTRONICS" }, { 0x0025B8, "Agile Communications, Inc.", "AGILE-COMMUNICATION" }, { 0x0025B9, "Agilink Systems Corp.", "AGILINK" }, { 0x0025BA, "Alcatel-Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x0025BB, "INNERINT Co., Ltd.", "INNERINT" }, { 0x0025BC, "Apple", "APPLE" }, { 0x0025BD, "Italdata Ingegneria dell'Idea S.p.A.", "ITALDATA-INGEGNERIA-DELL-IDEA-S-P-A" }, { 0x0025BE, "Tektrap Systems Inc.", "TEKTRAP" }, { 0x0025BF, "Wireless Cables Inc.", "WIRELESS-CABLES" }, { 0x0025C0, "ZillionTV Corporation", "ZILLIONTV" }, { 0x0025C1, "Nawoo Korea Corp.", "NAWOO-KOREA" }, { 0x0025C2, "RingBell Co.,Ltd.", "RINGBELL" }, { 0x0025C3, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x0025C4, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x0025C5, "Star Link Communication Pvt. Ltd.", "STAR-LINK-COMMUNICATION-PVT" }, { 0x0025C6, "kasercorp, ltd", "KASERCORP" }, { 0x0025C7, "altek Corporation", "ALTEK" }, { 0x0025C8, "S-Access GmbH", "S-ACCESS" }, { 0x0025C9, "SHENZHEN HUAPU DIGITAL CO., LTD", "SHENZHEN-HUAPU-DIGITAL" }, { 0x0025CA, "LS Research, LLC", "LS-RESEARCH-LLC" }, { 0x0025CB, "Reiner SCT", "REINER-SCT" }, { 0x0025CC, "Mobile Communications Korea Incorporated", "MOBILE-COMMUNICATION-KOREA-INCORPORATED" }, { 0x0025CD, "Skylane Optics", "SKYLANE-OPTICS" }, { 0x0025CE, "InnerSpace", "INNERSPACE" }, { 0x0025CF, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0025D0, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0025D1, "Eastern Asia Technology Limited", "EASTERN-ASIA" }, { 0x0025D2, "InpegVision Co., Ltd", "INPEGVISION" }, { 0x0025D3, "AzureWave Technologies, Inc", "AZUREWAVE-TECHNOLOGIES" }, { 0x0025D4, "Fortress Technologies", "FORTRESS-TECHNOLOGIES" }, { 0x0025D5, "Robonica (Pty) Ltd", "ROBONICA-PTY" }, { 0x0025D6, "The Kroger Co.", "THE-KROGER" }, { 0x0025D7, "CEDO", "CEDO" }, { 0x0025D8, "KOREA MAINTENANCE", "KOREA-MAINTENANCE" }, { 0x0025D9, "DataFab Systems Inc.", "DATAFAB" }, { 0x0025DA, "Secura Key", "SECURA-KEY" }, { 0x0025DB, "ATI Electronics(Shenzhen) Co., LTD", "ATI-ELECTRONICS-SHENZHEN" }, { 0x0025DC, "Sumitomo Electric Networks, Inc", "SUMITOMO-ELECTRIC-NETWORKS" }, { 0x0025DD, "SUNNYTEK INFORMATION CO., LTD.", "SUNNYTEK-INFORMATION" }, { 0x0025DE, "Probits Co., LTD.", "PROBITS" }, { 0x0025DF, "PRIVATE", "PRIVATE" }, { 0x0025E0, "CeedTec Sdn Bhd", "CEEDTEC-SDN-BHD" }, { 0x0025E1, "SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD", "SHANGHAI-SEEYOO" }, { 0x0025E2, "Everspring Industry Co., Ltd.", "EVERSPRING-INDUSTRY" }, { 0x0025E3, "Hanshinit Inc.", "HANSHINIT" }, { 0x0025E4, "OMNI-WiFi, LLC", "OMNI-WIFI-LLC" }, { 0x0025E5, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x0025E6, "Belgian Monitoring Systems bvba", "BELGIAN-MONITORING-BVBA" }, { 0x0025E7, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x0025E8, "Idaho Technology", "IDAHO" }, { 0x0025E9, "i-mate Development, Inc.", "I-MATE-DEVELOPMENT" }, { 0x0025EA, "Iphion BV", "IPHION" }, { 0x0025EB, "Reutech Radar Systems (PTY) Ltd", "REUTECH-RADAR-PTY" }, { 0x0025EC, "Humanware", "HUMANWARE" }, { 0x0025ED, "NuVo Technologies LLC", "NUVO-TECHNOLOGIES-LLC" }, { 0x0025EE, "Avtex Ltd", "AVTEX" }, { 0x0025EF, "I-TEC Co., Ltd.", "I-TEC" }, { 0x0025F0, "Suga Electronics Limited", "SUGA-ELECTRONICS" }, { 0x0025F1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0025F2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0025F3, "Nordwestdeutsche Zählerrevision", "NORDWESTDEUTSCHE-ZäHLERREVISION" }, { 0x0025F4, "KoCo Connector AG", "KOCO-CONNECTOR" }, { 0x0025F5, "DVS Korea, Co., Ltd", "DVS-KOREA" }, { 0x0025F6, "netTALK.com, Inc.", "NETTALK-COM" }, { 0x0025F7, "Ansaldo STS USA", "ANSALDO-STS-USA" }, { 0x0025F9, "GMK electronic design GmbH", "GMK-DESIGN" }, { 0x0025FA, "J&M Analytik AG", "J-M-ANALYTIK" }, { 0x0025FB, "Tunstall Healthcare A/S", "TUNSTALL-HEALTHCARE-A/S" }, { 0x0025FC, "ENDA ENDUSTRIYEL ELEKTRONIK LTD. STI.", "ENDA-ENDUSTRIYEL-ELEKTRONIK-STI" }, { 0x0025FD, "OBR Centrum Techniki Morskiej S.A.", "OBR-CENTRUM-TECHNIKI-MORSKIEJ" }, { 0x0025FE, "Pilot Electronics Corporation", "PILOT-ELECTRONICS" }, { 0x0025FF, "CreNova Multimedia Co., Ltd", "CRENOVA-MULTIMEDIA" }, { 0x002600, "TEAC Australia Pty Ltd.", "TEAC-AUSTRALIA-PTY" }, { 0x002601, "Cutera Inc", "CUTERA" }, { 0x002602, "SMART Temps LLC", "SMART-TEMPS-LLC" }, { 0x002603, "Shenzhen Wistar Technology Co., Ltd", "SHENZHEN-WISTAR" }, { 0x002604, "Audio Processing Technology Ltd", "AUDIO-PROCESSING" }, { 0x002605, "CC Systems AB", "CC-AB" }, { 0x002606, "RAUMFELD GmbH", "RAUMFELD" }, { 0x002607, "Enabling Technology Pty Ltd", "ENABLING-PTY" }, { 0x002608, "Apple", "APPLE" }, { 0x002609, "Phyllis Co., Ltd.", "PHYLLIS" }, { 0x00260A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00260B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00260C, "Dataram", "DATARAM" }, { 0x00260D, "Mercury Systems, Inc.", "MERCURY" }, { 0x00260E, "Ablaze Systems, LLC", "ABLAZE-LLC" }, { 0x00260F, "Linn Products Ltd", "LINN-PRODUCTS" }, { 0x002610, "Apacewave Technologies", "APACEWAVE-TECHNOLOGIES" }, { 0x002611, "Licera AB", "LICERA-AB" }, { 0x002612, "Space Exploration Technologies", "SPACE-EXPLORATION-TECHNOLOGIES" }, { 0x002613, "Engel Axil S.L.", "ENGEL-AXIL-S-L" }, { 0x002614, "KTNF", "KTNF" }, { 0x002615, "Teracom Limited", "TERACOM" }, { 0x002616, "Rosemount Inc.", "ROSEMOUNT" }, { 0x002617, "OEM Worldwide", "OEM-WORLDWIDE" }, { 0x002618, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x002619, "FRC", "FRC" }, { 0x00261A, "Femtocomm System Technology Corp.", "FEMTOCOMM-SYSTEM" }, { 0x00261B, "LAUREL BANK MACHINES CO., LTD.", "LAUREL-BANK-MACHINES" }, { 0x00261C, "NEOVIA INC.", "NEOVIA" }, { 0x00261D, "COP SECURITY SYSTEM CORP.", "COP-SECURITY-SYSTEM" }, { 0x00261E, "QINGBANG ELEC(SZ) CO., LTD", "QINGBANG-ELEC-SZ" }, { 0x00261F, "SAE Magnetics (H.K.) Ltd.", "SAE-MAGNETICS-H-K" }, { 0x002620, "ISGUS GmbH", "ISGUS" }, { 0x002621, "InteliCloud Technology Inc.", "INTELICLOUD" }, { 0x002622, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x002623, "JRD Communication Inc", "JRD-COMMUNICATION" }, { 0x002624, "Thomson Inc.", "THOMSON" }, { 0x002625, "MediaSputnik", "MEDIASPUTNIK" }, { 0x002626, "Geophysical Survey Systems, Inc.", "GEOPHYSICAL-SURVEY" }, { 0x002627, "Truesell", "TRUESELL" }, { 0x002628, "companytec automação e controle ltda.", "COMPANYTEC-AUTOMAçãO-E-CONTROLE-LTDA" }, { 0x002629, "Juphoon System Software Inc.", "JUPHOON-SYSTEM-SOFTWARE" }, { 0x00262A, "Proxense, LLC", "PROXENSE-LLC" }, { 0x00262B, "Wongs Electronics Co. Ltd.", "WONGS-ELECTRONICS" }, { 0x00262C, "IKT Advanced Technologies s.r.o.", "IKT-ADVANCED-TECHNOLOGIES-S-R-O" }, { 0x00262D, "Wistron Corporation", "WISTRON" }, { 0x00262E, "Chengdu Jiuzhou Electronic Technology Inc", "CHENGDU-JIUZHOU" }, { 0x00262F, "HAMAMATSU TOA ELECTRONICS", "HAMAMATSU-TOA-ELECTRONICS" }, { 0x002630, "ACOREL S.A.S", "ACOREL-S" }, { 0x002631, "COMMTACT LTD", "COMMTACT" }, { 0x002632, "Instrumentation Technologies d.d.", "INSTRUMENTATION-TECHNOLOGIES-D-D" }, { 0x002633, "MIR - Medical International Research", "MIR---MEDICAL-RESEARCH" }, { 0x002634, "Infineta Systems, Inc", "INFINETA" }, { 0x002635, "Bluetechnix GmbH", "BLUETECHNIX" }, { 0x002636, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002637, "Samsung Electro-Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x002638, "Xia Men Joyatech Co., Ltd.", "XIA-MEN-JOYATECH" }, { 0x002639, "T.M. Electronics, Inc.", "T-M-ELECTRONICS" }, { 0x00263A, "Digitec Systems", "DIGITEC" }, { 0x00263B, "Onbnetech", "ONBNETECH" }, { 0x00263C, "Bachmann Technology GmbH & Co. KG", "BACHMANN" }, { 0x00263D, "MIA Corporation", "MIA" }, { 0x00263E, "Trapeze Networks", "TRAPEZE-NETWORKS" }, { 0x00263F, "LIOS Technology GmbH", "LIOS" }, { 0x002640, "Baustem Broadband Technologies, Ltd.", "BAUSTEM-BROADBAND-TECHNOLOGIES" }, { 0x002641, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002642, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x002643, "Alps Electric Co., Ltd", "ALPS-ELECTRIC" }, { 0x002644, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x002645, "Circontrol S.A.", "CIRCONTROL" }, { 0x002646, "SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED", "SHENYANG-TONGFANG-MULTIMEDIA-COMPANY" }, { 0x002647, "WFE TECHNOLOGY CORP.", "WFE" }, { 0x002648, "Emitech Corp.", "EMITECH" }, { 0x00264A, "Apple", "APPLE" }, { 0x00264C, "Shanghai DigiVision Technology Co., Ltd.", "SHANGHAI-DIGIVISION" }, { 0x00264D, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x00264E, "Rail & Road Protec GmbH", "RAIL-ROAD-PROTEC" }, { 0x00264F, "Krüger &Gothe GmbH", "KRüGER-GOTHE" }, { 0x002650, "2Wire", "2WIRE" }, { 0x002651, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002652, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002653, "DaySequerra Corporation", "DAYSEQUERRA" }, { 0x002654, "3Com Corporation", "3COM" }, { 0x002655, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x002656, "Sansonic Electronics USA", "SANSONIC-ELECTRONICS-USA" }, { 0x002657, "OOO NPP EKRA", "OOO-NPP-EKRA" }, { 0x002658, "T-Platforms (Cyprus) Limited", "T-PLATFORMS-CYPRUS" }, { 0x002659, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00265A, "D-Link Corporation", "D-LINK" }, { 0x00265B, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x00265C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00265D, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x00265E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x00265F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x002660, "Logiways", "LOGIWAYS" }, { 0x002661, "Irumtek Co., Ltd.", "IRUMTEK" }, { 0x002662, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x002663, "Shenzhen Huitaiwei Tech. Ltd, co.", "SHENZHEN-HUITAIWEI-TECH" }, { 0x002664, "Core System Japan", "CORE-SYSTEM-JAPAN" }, { 0x002665, "ProtectedLogic Corporation", "PROTECTEDLOGIC" }, { 0x002666, "EFM Networks", "EFM-NETWORKS" }, { 0x002667, "CARECOM CO.,LTD.", "CARECOM" }, { 0x002668, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x002669, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x00266A, "ESSENSIUM NV", "ESSENSIUM-NV" }, { 0x00266B, "SHINE UNION ENTERPRISE LIMITED", "SHINE-UNION" }, { 0x00266C, "Inventec", "INVENTEC" }, { 0x00266D, "MobileAccess Networks", "MOBILEACCESS-NETWORKS" }, { 0x00266E, "Nissho-denki Co.,LTD.", "NISSHO-DENKI" }, { 0x00266F, "Coordiwise Technology Corp.", "COORDIWISE" }, { 0x002670, "Cinch Connectors", "CINCH-CONNECTORS" }, { 0x002671, "AUTOVISION Co., Ltd", "AUTOVISION" }, { 0x002672, "AAMP of America", "AAMP-OF-AMERICA" }, { 0x002673, "RICOH COMPANY,LTD.", "RICOH-COMPANY" }, { 0x002674, "Electronic Solutions, Inc.", "SOLUTIONS" }, { 0x002675, "Aztech Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x002676, "COMMidt AS", "COMMIDT-AS" }, { 0x002677, "DEIF A/S", "DEIF-A/S" }, { 0x002678, "Logic Instrument SA", "LOGIC-INSTRUMENT" }, { 0x002679, "Euphonic Technologies, Inc.", "EUPHONIC-TECHNOLOGIES" }, { 0x00267A, "wuhan hongxin telecommunication technologies co.,ltd", "WUHAN-HONGXIN-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x00267B, "GSI Helmholtzzentrum für Schwerionenforschung GmbH", "GSI-HELMHOLTZZENTRUM-FüR-SCHWERIONENFORSCHUNG" }, { 0x00267C, "Metz-Werke GmbH & Co KG", "METZ-WERKE" }, { 0x00267D, "A-Max Technology Macao Commercial Offshore Company Limited", "A-MAX-MACAO-COMMERCIAL-OFFSHORE-COMPANY" }, { 0x00267E, "Parrot SA", "PARROT" }, { 0x00267F, "Zenterio AB", "ZENTERIO-AB" }, { 0x002680, "Lockie Innovation Pty Ltd", "LOCKIE-INNOVATION-PTY" }, { 0x002681, "Interspiro AB", "INTERSPIRO-AB" }, { 0x002682, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x002683, "Ajoho Enterprise Co., Ltd.", "AJOHO" }, { 0x002684, "KISAN SYSTEM", "KISAN-SYSTEM" }, { 0x002685, "Digital Innovation", "DIGITAL-INNOVATION" }, { 0x002686, "Quantenna Communcations, Inc.", "QUANTENNA-COMMUNCATIONS" }, { 0x002687, "ALLIED TELESIS, K.K corega division.", "ALLIED-TELESIS-K-K-COREGA-DIVISION" }, { 0x002688, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x002689, "General Dynamics Robotic Systems", "GENERAL-DYNAMICS-ROBOTIC" }, { 0x00268A, "Terrier SC Ltd", "TERRIER-SC" }, { 0x00268B, "Guangzhou Escene Computer Technology Limited", "GUANGZHOU-ESCENE" }, { 0x00268C, "StarLeaf Ltd.", "STARLEAF" }, { 0x00268D, "CellTel S.p.A.", "CELLTEL-S-P-A" }, { 0x00268E, "Alta Solutions, Inc.", "ALTA-SOLUTIONS" }, { 0x00268F, "MTA SpA", "MTA-SPA" }, { 0x002690, "I DO IT", "I-DO-IT" }, { 0x002691, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x002692, "Mitsubishi Electric Co.", "MITSUBISHI-ELECTRIC" }, { 0x002693, "QVidium Technologies, Inc.", "QVIDIUM-TECHNOLOGIES" }, { 0x002694, "Senscient Ltd", "SENSCIENT" }, { 0x002695, "ZT Group Int'l Inc", "ZT-GROUP" }, { 0x002696, "NOOLIX Co., Ltd", "NOOLIX" }, { 0x002697, "Cheetah Technologies, L.P.", "CHEETAH-TECHNOLOGIES-L-P" }, { 0x002698, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002699, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00269A, "Carina System Co., Ltd.", "CARINA-SYSTEM" }, { 0x00269B, "SOKRAT Ltd.", "SOKRAT" }, { 0x00269C, "ITUS JAPAN CO. LTD", "ITUS-JAPAN" }, { 0x00269D, "M2Mnet Co., Ltd.", "M2MNET" }, { 0x00269E, "Quanta Computer Inc", "QUANTA" }, { 0x00269F, "PRIVATE", "PRIVATE" }, { 0x0026A0, "moblic", "MOBLIC" }, { 0x0026A1, "Megger", "MEGGER" }, { 0x0026A2, "Instrumentation Technology Systems", "INSTRUMENTATION" }, { 0x0026A3, "FQ Ingenieria Electronica S.A.", "FQ-INGENIERIA-ELECTRONICA" }, { 0x0026A4, "Novus Produtos Eletronicos Ltda", "NOVUS-PRODUTOS-ELETRONICOS-LTDA" }, { 0x0026A5, "MICROROBOT.CO.,LTD", "MICROROBOT" }, { 0x0026A6, "TRIXELL", "TRIXELL" }, { 0x0026A7, "CONNECT SRL", "CONNECT-SRL" }, { 0x0026A8, "DAEHAP HYPER-TECH", "DAEHAP-HYPER-TECH" }, { 0x0026A9, "Strong Technologies Pty Ltd", "STRONG-TECHNOLOGIES-PTY" }, { 0x0026AA, "Kenmec Mechanical Engineering Co., Ltd.", "KENMEC-MECHANICAL-ENGINEERING" }, { 0x0026AB, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0x0026AC, "Shanghai LUSTER Teraband photonic Co., Ltd.", "SHANGHAI-LUSTER-TERABAND-PHOTONIC" }, { 0x0026AD, "Arada Systems, Inc.", "ARADA" }, { 0x0026AE, "Wireless Measurement Ltd", "WIRELESS-MEASUREMENT" }, { 0x0026AF, "Duelco A/S", "DUELCO-A/S" }, { 0x0026B0, "Apple", "APPLE" }, { 0x0026B1, "Navis Auto Motive Systems, Inc.", "NAVIS-AUTO-MOTIVE" }, { 0x0026B2, "Setrix GmbH", "SETRIX" }, { 0x0026B3, "Thales Communications Inc", "THALES-COMMUNICATION" }, { 0x0026B4, "Ford Motor Company", "FORD-MOTOR-COMPANY" }, { 0x0026B5, "ICOMM Tele Ltd", "ICOMM-TELE" }, { 0x0026B6, "Askey Computer", "ASKEY" }, { 0x0026B7, "Kingston Technology Company, Inc.", "KINGSTON-COMPANY" }, { 0x0026B8, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x0026B9, "Dell Inc", "DELL" }, { 0x0026BA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0026BB, "Apple", "APPLE" }, { 0x0026BC, "General Jack Technology Ltd.", "GENERAL-JACK" }, { 0x0026BD, "JTEC Card & Communication Co., Ltd.", "JTEC-CARD-COMMUNICATION" }, { 0x0026BE, "Schoonderbeek Elektronica Systemen B.V.", "SCHOONDERBEEK-ELEKTRONICA-SYSTEMEN" }, { 0x0026BF, "ShenZhen Temobi Science&Tech Development Co.,Ltd", "SHENZHEN-TEMOBI-SCIENCE-TECH-DEVELOPMENT" }, { 0x0026C0, "EnergyHub", "ENERGYHUB" }, { 0x0026C1, "ARTRAY CO., LTD.", "ARTRAY" }, { 0x0026C2, "SCDI Co. LTD", "SCDI" }, { 0x0026C3, "Insightek Corp.", "INSIGHTEK" }, { 0x0026C4, "Cadmos microsystems S.r.l.", "CADMOS-MICROSYSTEMS-S-R-L" }, { 0x0026C5, "Guangdong Gosun Telecommunications Co.,Ltd", "GUANGDONG-GOSUN-TELECOMMUNICATIONS" }, { 0x0026C6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0026C7, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0026C8, "System Sensor", "SYSTEM-SENSOR" }, { 0x0026C9, "Proventix Systems, Inc.", "PROVENTIX" }, { 0x0026CA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0026CB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0026CC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x0026CD, "PurpleComm, Inc.", "PURPLECOMM" }, { 0x0026CE, "Kozumi USA Corp.", "KOZUMI-USA" }, { 0x0026CF, "DEKA R&D", "DEKA-R-D" }, { 0x0026D0, "Semihalf", "SEMIHALF" }, { 0x0026D1, "S Squared Innovations Inc.", "S-SQUARED-INNOVATIONS" }, { 0x0026D2, "Pcube Systems, Inc.", "PCUBE" }, { 0x0026D3, "Zeno Information System", "ZENO-INFORMATION-SYSTEM" }, { 0x0026D4, "IRCA SpA", "IRCA-SPA" }, { 0x0026D5, "Ory Solucoes em Comercio de Informatica Ltda.", "ORY-SOLUCOES-EM-COMERCIO-DE-INFORMATICA-LTDA" }, { 0x0026D6, "Ningbo Andy Optoelectronic Co., Ltd.", "NINGBO-ANDY-OPTOELECTRONIC" }, { 0x0026D7, "KM Electornic Technology Co., Ltd.", "KM-ELECTORNIC" }, { 0x0026D8, "Magic Point Inc.", "MAGIC-POINT" }, { 0x0026D9, "Pace plc", "PACE-PLC" }, { 0x0026DA, "Universal Media Corporation /Slovakia/ s.r.o.", "UNIVERSAL-MEDIA-/SLOVAKIA/-S-R-O" }, { 0x0026DB, "Ionics EMS Inc.", "IONICS-EMS" }, { 0x0026DC, "Optical Systems Design", "OPTICAL-DESIGN" }, { 0x0026DD, "Fival Science & Technology Co.,Ltd.", "FIVAL-SCIENCE" }, { 0x0026DE, "FDI MATELEC", "FDI-MATELEC" }, { 0x0026DF, "TaiDoc Technology Corp.", "TAIDOC" }, { 0x0026E0, "ASITEQ", "ASITEQ" }, { 0x0026E1, "Stanford University, OpenFlow Group", "STANFORD-UNIVERSITY-OPENFLOW-GROUP" }, { 0x0026E2, "LG Electronics", "LG-ELECTRONICS" }, { 0x0026E3, "DTI", "DTI" }, { 0x0026E4, "CANAL OVERSEAS", "CANAL-OVERSEAS" }, { 0x0026E5, "AEG Power Solutions", "AEG-POWER-SOLUTIONS" }, { 0x0026E6, "Visionhitech Co., Ltd.", "VISIONHITECH" }, { 0x0026E7, "Shanghai ONLAN Communication Tech. Co., Ltd.", "SHANGHAI-ONLAN-COMMUNICATION-TECH" }, { 0x0026E8, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x0026E9, "SP Corp", "SP" }, { 0x0026EA, "Cheerchip Electronic Technology (ShangHai) Co., Ltd.", "CHEERCHIP-SHANGHAI" }, { 0x0026EB, "Advanced Spectrum Technology Co., Ltd.", "ADVANCED-SPECTRUM" }, { 0x0026EC, "Legrand Home Systems, Inc", "LEGRAND-HOME" }, { 0x0026ED, "zte corporation", "ZTE" }, { 0x0026EE, "TKM GmbH", "TKM" }, { 0x0026EF, "Technology Advancement Group, Inc.", "ADVANCEMENT-GROUP" }, { 0x0026F0, "cTrixs International GmbH.", "CTRIXS" }, { 0x0026F1, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0x0026F2, "Netgear", "NETGEAR" }, { 0x0026F3, "SMC Networks", "SMC-NETWORKS" }, { 0x0026F4, "Nesslab", "NESSLAB" }, { 0x0026F5, "XRPLUS Inc.", "XRPLUS" }, { 0x0026F6, "Military Communication Institute", "MILITARY-COMMUNICATION-INSTITUTE" }, { 0x0026F7, "Infosys Technologies Ltd.", "INFOSYS-TECHNOLOGIES" }, { 0x0026F8, "Golden Highway Industry Development Co., Ltd.", "GOLDEN-HIGHWAY-INDUSTRY-DEVELOPMENT" }, { 0x0026F9, "S.E.M. srl", "S-E-M-SRL" }, { 0x0026FA, "BandRich Inc.", "BANDRICH" }, { 0x0026FB, "AirDio Wireless, Inc.", "AIRDIO-WIRELESS" }, { 0x0026FC, "AcSiP Technology Corp.", "ACSIP" }, { 0x0026FD, "Interactive Intelligence", "INTERACTIVE-INTELLIGENCE" }, { 0x0026FE, "MKD Technology Inc.", "MKD" }, { 0x0026FF, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x002700, "Shenzhen Siglent Technology Co., Ltd.", "SHENZHEN-SIGLENT" }, { 0x002701, "INCOstartec GmbH", "INCOSTARTEC" }, { 0x002702, "SolarEdge Technologies", "SOLAREDGE-TECHNOLOGIES" }, { 0x002703, "Testech Electronics Pte Ltd", "TESTECH-ELECTRONICS-PTE" }, { 0x002704, "Accelerated Concepts, Inc", "ACCELERATED-CONCEPTS" }, { 0x002705, "Sectronic", "SECTRONIC" }, { 0x002706, "YOISYS", "YOISYS" }, { 0x002707, "Lift Complex DS, JSC", "LIFT-COMPLEX-DS-JSC" }, { 0x002708, "Nordiag ASA", "NORDIAG-ASA" }, { 0x002709, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x00270A, "IEE S.A.", "IEE" }, { 0x00270B, "Adura Technologies", "ADURA-TECHNOLOGIES" }, { 0x00270C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00270D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00270E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00270F, "Envisionnovation Inc", "ENVISIONNOVATION" }, { 0x002710, "Intel Corporate", "INTEL-CORPORATE" }, { 0x002711, "LanPro Inc", "LANPRO" }, { 0x002712, "MaxVision LLC", "MAXVISION-LLC" }, { 0x002713, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x002714, "Grainmustards, Co,ltd.", "GRAINMUSTARDS" }, { 0x002715, "Rebound Telecom. Co., Ltd", "REBOUND-TELECOM" }, { 0x002716, "Adachi-Syokai Co., Ltd.", "ADACHI-SYOKAI" }, { 0x002717, "CE Digital(Zhenjiang)Co.,Ltd", "CE-DIGITAL-ZHENJIANG" }, { 0x002718, "Suzhou NEW SEAUNION Video Technology Co.,Ltd", "SUZHOU-NEW-SEAUNION-VIDEO" }, { 0x002719, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x00271A, "Geenovo Technology Ltd.", "GEENOVO" }, { 0x00271B, "Alec Sicherheitssysteme GmbH", "ALEC-SICHERHEITSSYSTEME" }, { 0x00271C, "MERCURY CORPORATION", "MERCURY" }, { 0x00271D, "Comba Telecom Systems (China) Ltd.", "COMBA-TELECOM-CHINA" }, { 0x00271E, "Xagyl Communications", "XAGYL-COMMUNICATION" }, { 0x00271F, "MIPRO Electronics Co., Ltd", "MIPRO-ELECTRONICS" }, { 0x002720, "NEW-SOL COM", "NEW-SOL-COM" }, { 0x002721, "Shenzhen Baoan Fenda Industrial Co., Ltd", "SHENZHEN-BAOAN-FENDA-INDUSTRIAL" }, { 0x002722, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x0027F8, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x002A6A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x002AAF, "LARsys-Automation GmbH", "LARSYS-AUTOMATION" }, { 0x002D76, "TITECH GmbH", "TITECH" }, { 0x003000, "ALLWELL TECHNOLOGY CORP.", "ALLWELL" }, { 0x003001, "SMP", "SMP" }, { 0x003002, "Expand Networks", "EXPAND-NETWORKS" }, { 0x003003, "Phasys Ltd.", "PHASYS" }, { 0x003004, "LEADTEK RESEARCH INC.", "LEADTEK-RESEARCH" }, { 0x003005, "Fujitsu Siemens Computers", "FUJITSU-SIEMENS-COMPUTERS" }, { 0x003006, "SUPERPOWER COMPUTER", "SUPERPOWER" }, { 0x003007, "OPTI, INC.", "OPTI" }, { 0x003008, "AVIO DIGITAL, INC.", "AVIO-DIGITAL" }, { 0x003009, "Tachion Networks, Inc.", "TACHION-NETWORKS" }, { 0x00300A, "AZTECH Electronics Pte Ltd", "AZTECH-ELECTRONICS-PTE" }, { 0x00300B, "mPHASE Technologies, Inc.", "MPHASE-TECHNOLOGIES" }, { 0x00300C, "CONGRUENCY, LTD.", "CONGRUENCY" }, { 0x00300D, "MMC Technology, Inc.", "MMC" }, { 0x00300E, "Klotz Digital AG", "KLOTZ-DIGITAL" }, { 0x00300F, "IMT - Information Management T", "IMT---INFORMATION-MANAGEMENT-T" }, { 0x003010, "VISIONETICS INTERNATIONAL", "VISIONETICS" }, { 0x003011, "HMS Industrial Networks", "HMS-INDUSTRIAL-NETWORKS" }, { 0x003012, "DIGITAL ENGINEERING LTD.", "DIGITAL-ENGINEERING" }, { 0x003013, "NEC Corporation", "NEC" }, { 0x003014, "DIVIO, INC.", "DIVIO" }, { 0x003015, "CP CLARE CORP.", "CP-CLARE" }, { 0x003016, "ISHIDA CO., LTD.", "ISHIDA" }, { 0x003017, "BlueArc UK Ltd", "BLUEARC-UK" }, { 0x003018, "Jetway Information Co., Ltd.", "JETWAY-INFORMATION" }, { 0x003019, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00301A, "SMARTBRIDGES PTE. LTD.", "SMARTBRIDGES-PTE" }, { 0x00301B, "SHUTTLE, INC.", "SHUTTLE" }, { 0x00301C, "ALTVATER AIRDATA SYSTEMS", "ALTVATER-AIRDATA" }, { 0x00301D, "SKYSTREAM, INC.", "SKYSTREAM" }, { 0x00301E, "3COM Europe Ltd.", "3COM" }, { 0x00301F, "OPTICAL NETWORKS, INC.", "OPTICAL-NETWORKS" }, { 0x003020, "TSI, Inc..", "TSI" }, { 0x003021, "HSING TECH. ENTERPRISE CO.,LTD", "HSING-TECH" }, { 0x003022, "Fong Kai Industrial Co., Ltd.", "FONG-KAI-INDUSTRIAL" }, { 0x003023, "COGENT COMPUTER SYSTEMS, INC.", "COGENT" }, { 0x003024, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003025, "CHECKOUT COMPUTER SYSTEMS, LTD", "CHECKOUT" }, { 0x003026, "HeiTel Digital Video GmbH", "HEITEL-DIGITAL-VIDEO" }, { 0x003027, "KERBANGO, INC.", "KERBANGO" }, { 0x003028, "FASE Saldatura srl", "FASE-SALDATURA-SRL" }, { 0x003029, "OPICOM", "OPICOM" }, { 0x00302A, "SOUTHERN INFORMATION", "SOUTHERN-INFORMATION" }, { 0x00302B, "INALP NETWORKS, INC.", "INALP-NETWORKS" }, { 0x00302C, "SYLANTRO SYSTEMS CORPORATION", "SYLANTRO" }, { 0x00302D, "QUANTUM BRIDGE COMMUNICATIONS", "QUANTUM-BRIDGE-COMMUNICATION" }, { 0x00302E, "Hoft & Wessel AG", "HOFT-WESSEL" }, { 0x00302F, "GE Aviation System", "GE-AVIATION-SYSTEM" }, { 0x003030, "HARMONIX CORPORATION", "HARMONIX" }, { 0x003031, "LIGHTWAVE COMMUNICATIONS, INC.", "LIGHTWAVE-COMMUNICATION" }, { 0x003032, "MagicRam, Inc.", "MAGICRAM" }, { 0x003033, "ORIENT TELECOM CO., LTD.", "ORIENT-TELECOM" }, { 0x003034, "SET ENGINEERING", "SET-ENGINEERING" }, { 0x003035, "Corning Incorporated", "CORNING-INCORPORATED" }, { 0x003036, "RMP ELEKTRONIKSYSTEME GMBH", "RMP-ELEKTRONIKSYSTEME" }, { 0x003037, "Packard Bell Nec Services", "PACKARD-BELL-NEC-SERVICES" }, { 0x003038, "XCP, INC.", "XCP" }, { 0x003039, "SOFTBOOK PRESS", "SOFTBOOK-PRESS" }, { 0x00303A, "MAATEL", "MAATEL" }, { 0x00303B, "PowerCom Technology", "POWERCOM" }, { 0x00303C, "ONNTO CORP.", "ONNTO" }, { 0x00303D, "IVA CORPORATION", "IVA" }, { 0x00303E, "Radcom Ltd.", "RADCOM" }, { 0x00303F, "TurboComm Tech Inc.", "TURBOCOMM-TECH" }, { 0x003040, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003041, "SAEJIN T & M CO., LTD.", "SAEJIN-T-M" }, { 0x003042, "DeTeWe-Deutsche Telephonwerke", "DETEWE-DEUTSCHE-TELEPHONWERKE" }, { 0x003043, "IDREAM TECHNOLOGIES, PTE. LTD.", "IDREAM-TECHNOLOGIES-PTE" }, { 0x003044, "CradlePoint, Inc", "CRADLEPOINT" }, { 0x003045, "Village Networks, Inc. (VNI)", "VILLAGE-NETWORKS-VNI" }, { 0x003046, "Controlled Electronic Manageme", "CONTROLLED-MANAGEME" }, { 0x003047, "NISSEI ELECTRIC CO., LTD.", "NISSEI-ELECTRIC" }, { 0x003048, "Supermicro Computer, Inc.", "SUPERMICRO" }, { 0x003049, "BRYANT TECHNOLOGY, LTD.", "BRYANT" }, { 0x00304A, "Fraunhofer IPMS", "FRAUNHOFER-IPMS" }, { 0x00304B, "ORBACOM SYSTEMS, INC.", "ORBACOM" }, { 0x00304C, "APPIAN COMMUNICATIONS, INC.", "APPIAN-COMMUNICATION" }, { 0x00304D, "ESI", "ESI" }, { 0x00304E, "BUSTEC PRODUCTION LTD.", "BUSTEC-PRODUCTION" }, { 0x00304F, "PLANET Technology Corporation", "PLANET" }, { 0x003050, "Versa Technology", "VERSA" }, { 0x003051, "ORBIT AVIONIC & COMMUNICATION", "ORBIT-AVIONIC-COMMUNICATION" }, { 0x003052, "ELASTIC NETWORKS", "ELASTIC-NETWORKS" }, { 0x003053, "Basler AG", "BASLER" }, { 0x003054, "CASTLENET TECHNOLOGY, INC.", "CASTLENET" }, { 0x003055, "Renesas Technology America, Inc.", "RENESAS-AMERICA" }, { 0x003056, "Beck IPC GmbH", "BECK-IPC" }, { 0x003057, "QTelNet, Inc.", "QTELNET" }, { 0x003058, "API MOTION", "API-MOTION" }, { 0x003059, "KONTRON COMPACT COMPUTERS AG", "KONTRON-COMPACT-COMPUTERS" }, { 0x00305A, "TELGEN CORPORATION", "TELGEN" }, { 0x00305B, "Toko Inc.", "TOKO" }, { 0x00305C, "SMAR Laboratories Corp.", "SMAR-LABORATORIES" }, { 0x00305D, "DIGITRA SYSTEMS, INC.", "DIGITRA" }, { 0x00305E, "Abelko Innovation", "ABELKO-INNOVATION" }, { 0x00305F, "Hasselblad", "HASSELBLAD" }, { 0x003060, "Powerfile, Inc.", "POWERFILE" }, { 0x003061, "MobyTEL", "MOBYTEL" }, { 0x003062, "IP Video Networks Inc", "IP-VIDEO-NETWORKS" }, { 0x003063, "SANTERA SYSTEMS, INC.", "SANTERA" }, { 0x003064, "ADLINK TECHNOLOGY, INC.", "ADLINK" }, { 0x003065, "Apple", "APPLE" }, { 0x003066, "RFM", "RFM" }, { 0x003067, "BIOSTAR MICROTECH INT'L CORP.", "BIOSTAR-MICROTECH" }, { 0x003068, "CYBERNETICS TECH. CO., LTD.", "CYBERNETICS-TECH" }, { 0x003069, "IMPACCT TECHNOLOGY CORP.", "IMPACCT" }, { 0x00306A, "PENTA MEDIA CO., LTD.", "PENTA-MEDIA" }, { 0x00306B, "CMOS SYSTEMS, INC.", "CMOS" }, { 0x00306C, "Hitex Holding GmbH", "HITEX-HOLDING" }, { 0x00306D, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x00306E, "HEWLETT PACKARD", "HEWLETT-PACKARD" }, { 0x00306F, "SEYEON TECH. CO., LTD.", "SEYEON-TECH" }, { 0x003070, "1Net Corporation", "1NET" }, { 0x003071, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003072, "Intellibyte Inc.", "INTELLIBYTE" }, { 0x003073, "International Microsystems, In", "MICROSYSTEMS-IN" }, { 0x003074, "EQUIINET LTD.", "EQUIINET" }, { 0x003075, "ADTECH", "ADTECH" }, { 0x003076, "Akamba Corporation", "AKAMBA" }, { 0x003077, "ONPREM NETWORKS", "ONPREM-NETWORKS" }, { 0x003078, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003079, "CQOS, INC.", "CQOS" }, { 0x00307A, "Advanced Technology & Systems", "ADVANCED" }, { 0x00307B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00307C, "ADID SA", "ADID" }, { 0x00307D, "GRE AMERICA, INC.", "GRE-AMERICA" }, { 0x00307E, "Redflex Communication Systems", "REDFLEX-COMMUNICATION" }, { 0x00307F, "IRLAN LTD.", "IRLAN" }, { 0x003080, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003081, "ALTOS C&C", "ALTOS-C-C" }, { 0x003082, "TAIHAN ELECTRIC WIRE CO., LTD.", "TAIHAN-ELECTRIC-WIRE" }, { 0x003083, "Ivron Systems", "IVRON" }, { 0x003084, "ALLIED TELESYN INTERNAIONAL", "ALLIED-TELESYN" }, { 0x003085, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003086, "Transistor Devices, Inc.", "TRANSISTOR-DEVICES" }, { 0x003087, "VEGA GRIESHABER KG", "VEGA-GRIESHABER" }, { 0x003088, "Ericsson", "ERICSSON" }, { 0x003089, "Spectrapoint Wireless, LLC", "SPECTRAPOINT-WIRELESS-LLC" }, { 0x00308A, "NICOTRA SISTEMI S.P.A", "NICOTRA-SISTEMI-S-P-A" }, { 0x00308B, "Brix Networks", "BRIX-NETWORKS" }, { 0x00308C, "Quantum Corporation", "QUANTUM" }, { 0x00308D, "Pinnacle Systems, Inc.", "PINNACLE" }, { 0x00308E, "CROSS MATCH TECHNOLOGIES, INC.", "CROSS-MATCH-TECHNOLOGIES" }, { 0x00308F, "MICRILOR, Inc.", "MICRILOR" }, { 0x003090, "CYRA TECHNOLOGIES, INC.", "CYRA-TECHNOLOGIES" }, { 0x003091, "TAIWAN FIRST LINE ELEC. CORP.", "TAIWAN-FIRST-LINE-ELEC" }, { 0x003092, "ModuNORM GmbH", "MODUNORM" }, { 0x003093, "Sonnet Technologies, Inc", "SONNET-TECHNOLOGIES" }, { 0x003094, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003095, "Procomp Informatics, Ltd.", "PROCOMP-INFORMATICS" }, { 0x003096, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003097, "AB Regin", "AB-REGIN" }, { 0x003098, "Global Converging Technologies", "GLOBAL-CONVERGING-TECHNOLOGIES" }, { 0x003099, "BOENIG UND KALLENBACH OHG", "BOENIG-UND-KALLENBACH-OHG" }, { 0x00309A, "ASTRO TERRA CORP.", "ASTRO-TERRA" }, { 0x00309B, "Smartware", "SMARTWARE" }, { 0x00309C, "Timing Applications, Inc.", "TIMING-APPLICATIONS" }, { 0x00309D, "Nimble Microsystems, Inc.", "NIMBLE-MICROSYSTEMS" }, { 0x00309E, "WORKBIT CORPORATION.", "WORKBIT" }, { 0x00309F, "AMBER NETWORKS", "AMBER-NETWORKS" }, { 0x0030A0, "TYCO SUBMARINE SYSTEMS, LTD.", "TYCO-SUBMARINE" }, { 0x0030A1, "WEBGATE Inc.", "WEBGATE" }, { 0x0030A2, "Lightner Engineering", "LIGHTNER-ENGINEERING" }, { 0x0030A3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0030A4, "Woodwind Communications System", "WOODWIND-COMMUNICATION-SYSTEM" }, { 0x0030A5, "ACTIVE POWER", "ACTIVE-POWER" }, { 0x0030A6, "VIANET TECHNOLOGIES, LTD.", "VIANET-TECHNOLOGIES" }, { 0x0030A7, "SCHWEITZER ENGINEERING", "SCHWEITZER-ENGINEERING" }, { 0x0030A8, "OL'E COMMUNICATIONS, INC.", "OL-E-COMMUNICATION" }, { 0x0030A9, "Netiverse, Inc.", "NETIVERSE" }, { 0x0030AA, "AXUS MICROSYSTEMS, INC.", "AXUS-MICROSYSTEMS" }, { 0x0030AB, "DELTA NETWORKS, INC.", "DELTA-NETWORKS" }, { 0x0030AC, "Systeme Lauer GmbH & Co., Ltd.", "SYSTEME-LAUER" }, { 0x0030AD, "SHANGHAI COMMUNICATION", "SHANGHAI-COMMUNICATION" }, { 0x0030AE, "Times N System, Inc.", "TIMES-N-SYSTEM" }, { 0x0030AF, "Honeywell GmbH", "HONEYWELL" }, { 0x0030B0, "Convergenet Technologies", "CONVERGENET-TECHNOLOGIES" }, { 0x0030B1, "TrunkNet", "TRUNKNET" }, { 0x0030B2, "L-3 Sonoma EO", "L-3-SONOMA-EO" }, { 0x0030B3, "San Valley Systems, Inc.", "SAN-VALLEY" }, { 0x0030B4, "INTERSIL CORP.", "INTERSIL" }, { 0x0030B5, "Tadiran Microwave Networks", "TADIRAN-MICROWAVE-NETWORKS" }, { 0x0030B6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0030B7, "Teletrol Systems, Inc.", "TELETROL" }, { 0x0030B8, "RiverDelta Networks", "RIVERDELTA-NETWORKS" }, { 0x0030B9, "ECTEL", "ECTEL" }, { 0x0030BA, "AC&T SYSTEM CO., LTD.", "AC-T-SYSTEM" }, { 0x0030BB, "CacheFlow, Inc.", "CACHEFLOW" }, { 0x0030BC, "Optronic AG", "OPTRONIC" }, { 0x0030BD, "BELKIN COMPONENTS", "BELKIN-COMPONENTS" }, { 0x0030BE, "City-Net Technology, Inc.", "CITY-NET" }, { 0x0030BF, "MULTIDATA GMBH", "MULTIDATA" }, { 0x0030C0, "Lara Technology, Inc.", "LARA" }, { 0x0030C1, "HEWLETT-PACKARD", "HEWLETT-PACKARD" }, { 0x0030C2, "COMONE", "COMONE" }, { 0x0030C3, "FLUECKIGER ELEKTRONIK AG", "FLUECKIGER-ELEKTRONIK" }, { 0x0030C4, "Canon Imaging Systems Inc.", "CANON-IMAGING" }, { 0x0030C5, "CADENCE DESIGN SYSTEMS", "CADENCE-DESIGN" }, { 0x0030C6, "CONTROL SOLUTIONS, INC.", "CONTROL-SOLUTIONS" }, { 0x0030C7, "Macromate Corp.", "MACROMATE" }, { 0x0030C8, "GAD LINE, LTD.", "GAD-LINE" }, { 0x0030C9, "LuxN, N", "LUXN-N" }, { 0x0030CA, "Discovery Com", "DISCOVERY-COM" }, { 0x0030CB, "OMNI FLOW COMPUTERS, INC.", "OMNI-FLOW-COMPUTERS" }, { 0x0030CC, "Tenor Networks, Inc.", "TENOR-NETWORKS" }, { 0x0030CD, "CONEXANT SYSTEMS, INC.", "CONEXANT" }, { 0x0030CE, "Zaffire", "ZAFFIRE" }, { 0x0030CF, "TWO TECHNOLOGIES, INC.", "TWO-TECHNOLOGIES" }, { 0x0030D0, "Tellabs", "TELLABS" }, { 0x0030D1, "INOVA CORPORATION", "INOVA" }, { 0x0030D2, "WIN TECHNOLOGIES, CO., LTD.", "WIN-TECHNOLOGIES" }, { 0x0030D3, "Agilent Technologies", "AGILENT-TECHNOLOGIES" }, { 0x0030D4, "AAE Systems, Inc.", "AAE" }, { 0x0030D5, "DResearch GmbH", "DRESEARCH" }, { 0x0030D6, "MSC VERTRIEBS GMBH", "MSC-VERTRIEBS" }, { 0x0030D7, "Innovative Systems, L.L.C.", "INNOVATIVE-L-L-C" }, { 0x0030D8, "SITEK", "SITEK" }, { 0x0030D9, "DATACORE SOFTWARE CORP.", "DATACORE-SOFTWARE" }, { 0x0030DA, "COMTREND CO.", "COMTREND" }, { 0x0030DB, "Mindready Solutions, Inc.", "MINDREADY-SOLUTIONS" }, { 0x0030DC, "RIGHTECH CORPORATION", "RIGHTECH" }, { 0x0030DD, "INDIGITA CORPORATION", "INDIGITA" }, { 0x0030DE, "WAGO Kontakttechnik GmbH", "WAGO-KONTAKTTECHNIK" }, { 0x0030DF, "KB/TEL TELECOMUNICACIONES", "KB/TEL-TELECOMUNICACIONES" }, { 0x0030E0, "OXFORD SEMICONDUCTOR LTD.", "OXFORD-SEMICONDUCTOR" }, { 0x0030E1, "Network Equipment Technologies, Inc.", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x0030E2, "GARNET SYSTEMS CO., LTD.", "GARNET" }, { 0x0030E3, "SEDONA NETWORKS CORP.", "SEDONA-NETWORKS" }, { 0x0030E4, "CHIYODA SYSTEM RIKEN", "CHIYODA-SYSTEM-RIKEN" }, { 0x0030E5, "Amper Datos S.A.", "AMPER-DATOS" }, { 0x0030E6, "Draeger Medical Systems, Inc.", "DRAEGER-MEDICAL" }, { 0x0030E7, "CNF MOBILE SOLUTIONS, INC.", "CNF-MOBILE-SOLUTIONS" }, { 0x0030E8, "ENSIM CORP.", "ENSIM" }, { 0x0030E9, "GMA COMMUNICATION MANUFACT'G", "GMA-COMMUNICATION-MANUFACT-G" }, { 0x0030EA, "TeraForce Technology Corporation", "TERAFORCE" }, { 0x0030EB, "TURBONET COMMUNICATIONS, INC.", "TURBONET-COMMUNICATION" }, { 0x0030EC, "BORGARDT", "BORGARDT" }, { 0x0030ED, "Expert Magnetics Corp.", "EXPERT-MAGNETICS" }, { 0x0030EE, "DSG Technology, Inc.", "DSG" }, { 0x0030EF, "NEON TECHNOLOGY, INC.", "NEON" }, { 0x0030F0, "Uniform Industrial Corp.", "UNIFORM-INDUSTRIAL" }, { 0x0030F1, "Accton Technology Corp.", "ACCTON" }, { 0x0030F2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0030F3, "At Work Computers", "AT-WORK-COMPUTERS" }, { 0x0030F4, "STARDOT TECHNOLOGIES", "STARDOT-TECHNOLOGIES" }, { 0x0030F5, "Wild Lab. Ltd.", "WILD-LAB" }, { 0x0030F6, "SECURELOGIX CORPORATION", "SECURELOGIX" }, { 0x0030F7, "RAMIX INC.", "RAMIX" }, { 0x0030F8, "Dynapro Systems, Inc.", "DYNAPRO" }, { 0x0030F9, "Sollae Systems Co., Ltd.", "SOLLAE" }, { 0x0030FA, "TELICA, INC.", "TELICA" }, { 0x0030FB, "AZS Technology AG", "AZS" }, { 0x0030FC, "Terawave Communications, Inc.", "TERAWAVE-COMMUNICATION" }, { 0x0030FD, "INTEGRATED SYSTEMS DESIGN", "INTEGRATED-DESIGN" }, { 0x0030FE, "DSA GmbH", "DSA" }, { 0x0030FF, "DATAFAB SYSTEMS, INC.", "DATAFAB" }, { 0x00336C, "SynapSense Corporation", "SYNAPSENSE" }, { 0x0034F1, "Radicom Research, Inc.", "RADICOM-RESEARCH" }, { 0x003532, "Electro-Metrics Corporation", "ELECTRO-METRICS" }, { 0x0036F8, "Conti Temic microelectronic GmbH", "CONTI-TEMIC-MICROELECTRONIC" }, { 0x0036FE, "SuperVision", "SUPERVISION" }, { 0x00376D, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x003A98, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003A99, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003A9A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003A9B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003A9C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x003A9D, "NEC AccessTechnica, Ltd.", "NEC-ACCESSTECHNICA" }, { 0x003AAF, "BlueBit Ltd.", "BLUEBIT" }, { 0x003CC5, "WONWOO Engineering Co., Ltd", "WONWOO-ENGINEERING" }, { 0x003D41, "Hatteland Computer AS", "HATTELAND-AS" }, { 0x003EE1, "Apple", "APPLE" }, { 0x004000, "PCI COMPONENTES DA AMZONIA LTD", "PCI-COMPONENTES-DA-AMZONIA" }, { 0x004001, "Zero One Technology Co. Ltd.", "ZERO-ONE" }, { 0x004002, "PERLE SYSTEMS LIMITED", "PERLE" }, { 0x004003, "Emerson Process Management Power & Water Solutions, Inc.", "EMERSON-PROCESS-MANAGEMENT-POWER-WATER-SOLUTIONS" }, { 0x004004, "ICM CO. LTD.", "ICM" }, { 0x004005, "ANI COMMUNICATIONS INC.", "ANI-COMMUNICATION" }, { 0x004006, "SAMPO TECHNOLOGY CORPORATION", "SAMPO" }, { 0x004007, "TELMAT INFORMATIQUE", "TELMAT-INFORMATIQUE" }, { 0x004008, "A PLUS INFO CORPORATION", "A-PLUS-INFO" }, { 0x004009, "TACHIBANA TECTRON CO., LTD.", "TACHIBANA-TECTRON" }, { 0x00400A, "PIVOTAL TECHNOLOGIES, INC.", "PIVOTAL-TECHNOLOGIES" }, { 0x00400B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00400C, "GENERAL MICRO SYSTEMS, INC.", "GENERAL-MICRO" }, { 0x00400D, "LANNET DATA COMMUNICATIONS,LTD", "LANNET-DATA-COMMUNICATION" }, { 0x00400E, "MEMOTEC, INC.", "MEMOTEC" }, { 0x00400F, "DATACOM TECHNOLOGIES", "DATACOM-TECHNOLOGIES" }, { 0x004010, "SONIC SYSTEMS, INC.", "SONIC" }, { 0x004011, "ANDOVER CONTROLS CORPORATION", "ANDOVER-CONTROLS" }, { 0x004012, "WINDATA, INC.", "WINDATA" }, { 0x004013, "NTT DATA COMM. SYSTEMS CORP.", "NTT-DATA-COMM" }, { 0x004014, "COMSOFT GMBH", "COMSOFT" }, { 0x004015, "ASCOM INFRASYS AG", "ASCOM-INFRASYS" }, { 0x004016, "ADC - Global Connectivity Solutions Division", "ADC---GLOBAL-CONNECTIVITY-SOLUTIONS-DIVISION" }, { 0x004017, "Silex Technology America", "SILEX-AMERICA" }, { 0x004018, "ADOBE SYSTEMS, INC.", "ADOBE" }, { 0x004019, "AEON SYSTEMS, INC.", "AEON" }, { 0x00401A, "FUJI ELECTRIC CO., LTD.", "FUJI-ELECTRIC" }, { 0x00401B, "PRINTER SYSTEMS CORP.", "PRINTER" }, { 0x00401C, "AST RESEARCH, INC.", "AST-RESEARCH" }, { 0x00401D, "INVISIBLE SOFTWARE, INC.", "INVISIBLE-SOFTWARE" }, { 0x00401E, "ICC", "ICC" }, { 0x00401F, "COLORGRAPH LTD", "COLORGRAPH" }, { 0x004020, "TE Connectivity Ltd.", "TE-CONNECTIVITY" }, { 0x004021, "RASTER GRAPHICS", "RASTER-GRAPHICS" }, { 0x004022, "KLEVER COMPUTERS, INC.", "KLEVER-COMPUTERS" }, { 0x004023, "LOGIC CORPORATION", "LOGIC" }, { 0x004024, "COMPAC INC.", "COMPAC" }, { 0x004025, "MOLECULAR DYNAMICS", "MOLECULAR-DYNAMICS" }, { 0x004026, "Buffalo Inc.", "BUFFALO" }, { 0x004027, "SMC MASSACHUSETTS, INC.", "SMC-MASSACHUSETTS" }, { 0x004028, "NETCOMM LIMITED", "NETCOMM" }, { 0x004029, "COMPEX", "COMPEX" }, { 0x00402A, "CANOGA-PERKINS", "CANOGA-PERKINS" }, { 0x00402B, "TRIGEM COMPUTER, INC.", "TRIGEM" }, { 0x00402C, "ISIS DISTRIBUTED SYSTEMS, INC.", "ISIS-DISTRIBUTED" }, { 0x00402D, "HARRIS ADACOM CORPORATION", "HARRIS-ADACOM" }, { 0x00402E, "PRECISION SOFTWARE, INC.", "PRECISION-SOFTWARE" }, { 0x00402F, "XLNT DESIGNS INC.", "XLNT-DESIGNS" }, { 0x004030, "GK COMPUTER", "GK" }, { 0x004031, "KOKUSAI ELECTRIC CO., LTD", "KOKUSAI-ELECTRIC" }, { 0x004032, "DIGITAL COMMUNICATIONS", "DIGITAL-COMMUNICATION" }, { 0x004033, "ADDTRON TECHNOLOGY CO., LTD.", "ADDTRON" }, { 0x004034, "BUSTEK CORPORATION", "BUSTEK" }, { 0x004035, "OPCOM", "OPCOM" }, { 0x004036, "TRIBE COMPUTER WORKS, INC.", "TRIBE-WORKS" }, { 0x004037, "SEA-ILAN, INC.", "SEA-ILAN" }, { 0x004038, "TALENT ELECTRIC INCORPORATED", "TALENT-ELECTRIC-INCORPORATED" }, { 0x004039, "OPTEC DAIICHI DENKO CO., LTD.", "OPTEC-DAIICHI-DENKO" }, { 0x00403A, "IMPACT TECHNOLOGIES", "IMPACT-TECHNOLOGIES" }, { 0x00403B, "SYNERJET INTERNATIONAL CORP.", "SYNERJET" }, { 0x00403C, "FORKS, INC.", "FORKS" }, { 0x00403D, "Teradata Corporation", "TERADATA" }, { 0x00403E, "RASTER OPS CORPORATION", "RASTER-OPS" }, { 0x00403F, "SSANGYONG COMPUTER SYSTEMS", "SSANGYONG" }, { 0x004040, "RING ACCESS, INC.", "RING-ACCESS" }, { 0x004041, "FUJIKURA LTD.", "FUJIKURA" }, { 0x004042, "N.A.T. GMBH", "N-A-T" }, { 0x004043, "Nokia Siemens Networks GmbH & Co. KG.", "NOKIA-SIEMENS-NETWORKS" }, { 0x004044, "QNIX COMPUTER CO., LTD.", "QNIX" }, { 0x004045, "TWINHEAD CORPORATION", "TWINHEAD" }, { 0x004046, "UDC RESEARCH LIMITED", "UDC-RESEARCH" }, { 0x004047, "WIND RIVER SYSTEMS", "WIND-RIVER" }, { 0x004048, "SMD INFORMATICA S.A.", "SMD-INFORMATICA" }, { 0x004049, "Roche Diagnostics International Ltd.", "ROCHE-DIAGNOSTICS" }, { 0x00404A, "WEST AUSTRALIAN DEPARTMENT", "WEST-AUSTRALIAN-DEPARTMENT" }, { 0x00404B, "MAPLE COMPUTER SYSTEMS", "MAPLE" }, { 0x00404C, "HYPERTEC PTY LTD.", "HYPERTEC-PTY" }, { 0x00404D, "TELECOMMUNICATIONS TECHNIQUES", "TELECOMMUNICATIONS-TECHNIQUES" }, { 0x00404E, "FLUENT, INC.", "FLUENT" }, { 0x00404F, "SPACE & NAVAL WARFARE SYSTEMS", "SPACE-NAVAL-WARFARE" }, { 0x004050, "IRONICS, INCORPORATED", "IRONICS-INCORPORATED" }, { 0x004051, "GRACILIS, INC.", "GRACILIS" }, { 0x004052, "STAR TECHNOLOGIES, INC.", "STAR-TECHNOLOGIES" }, { 0x004053, "AMPRO COMPUTERS", "AMPRO-COMPUTERS" }, { 0x004054, "CONNECTION MACHINES SERVICES", "CONNECTION-MACHINES-SERVICES" }, { 0x004055, "METRONIX GMBH", "METRONIX" }, { 0x004056, "MCM JAPAN LTD.", "MCM-JAPAN" }, { 0x004057, "LOCKHEED - SANDERS", "LOCKHEED---SANDERS" }, { 0x004058, "KRONOS, INC.", "KRONOS" }, { 0x004059, "YOSHIDA KOGYO K. K.", "YOSHIDA-KOGYO-K-K" }, { 0x00405A, "GOLDSTAR INFORMATION & COMM.", "GOLDSTAR-INFORMATION-COMM" }, { 0x00405B, "FUNASSET LIMITED", "FUNASSET" }, { 0x00405C, "FUTURE SYSTEMS, INC.", "FUTURE" }, { 0x00405D, "STAR-TEK, INC.", "STAR-TEK" }, { 0x00405E, "NORTH HILLS ISRAEL", "NORTH-HILLS-ISRAEL" }, { 0x00405F, "AFE COMPUTERS LTD.", "AFE-COMPUTERS" }, { 0x004060, "COMENDEC LTD", "COMENDEC" }, { 0x004061, "DATATECH ENTERPRISES CO., LTD.", "DATATECH-ENTERPRISES" }, { 0x004062, "E-SYSTEMS, INC./GARLAND DIV.", "E--/GARLAND-DIV" }, { 0x004063, "VIA TECHNOLOGIES, INC.", "VIA-TECHNOLOGIES" }, { 0x004064, "KLA INSTRUMENTS CORPORATION", "KLA-INSTRUMENTS" }, { 0x004065, "GTE SPACENET", "GTE-SPACENET" }, { 0x004066, "HITACHI CABLE, LTD.", "HITACHI-CABLE" }, { 0x004067, "OMNIBYTE CORPORATION", "OMNIBYTE" }, { 0x004068, "EXTENDED SYSTEMS", "EXTENDED" }, { 0x004069, "LEMCOM SYSTEMS, INC.", "LEMCOM" }, { 0x00406A, "KENTEK INFORMATION SYSTEMS,INC", "KENTEK-INFORMATION" }, { 0x00406B, "SYSGEN", "SYSGEN" }, { 0x00406C, "COPERNIQUE", "COPERNIQUE" }, { 0x00406D, "LANCO, INC.", "LANCO" }, { 0x00406E, "COROLLARY, INC.", "COROLLARY" }, { 0x00406F, "SYNC RESEARCH INC.", "SYNC-RESEARCH" }, { 0x004070, "INTERWARE CO., LTD.", "INTERWARE" }, { 0x004071, "ATM COMPUTER GMBH", "ATM" }, { 0x004072, "Applied Innovation Inc.", "APPLIED-INNOVATION" }, { 0x004073, "BASS ASSOCIATES", "BASS-ASSOCIATES" }, { 0x004074, "CABLE AND WIRELESS", "CABLE-AND-WIRELESS" }, { 0x004075, "Tattile SRL", "TATTILE-SRL" }, { 0x004076, "Sun Conversion Technologies", "SUN-CONVERSION-TECHNOLOGIES" }, { 0x004077, "MAXTON TECHNOLOGY CORPORATION", "MAXTON" }, { 0x004078, "WEARNES AUTOMATION PTE LTD", "WEARNES-AUTOMATION-PTE" }, { 0x004079, "JUKO MANUFACTURE COMPANY, LTD.", "JUKO-MANUFACTURE-COMPANY" }, { 0x00407A, "SOCIETE D'EXPLOITATION DU CNIT", "SOCIETE-D-EXPLOITATION-DU-CNIT" }, { 0x00407B, "SCIENTIFIC ATLANTA", "SCIENTIFIC-ATLANTA" }, { 0x00407C, "QUME CORPORATION", "QUME" }, { 0x00407D, "EXTENSION TECHNOLOGY CORP.", "EXTENSION" }, { 0x00407E, "EVERGREEN SYSTEMS, INC.", "EVERGREEN" }, { 0x00407F, "FLIR Systems", "FLIR" }, { 0x004080, "ATHENIX CORPORATION", "ATHENIX" }, { 0x004081, "MANNESMANN SCANGRAPHIC GMBH", "MANNESMANN-SCANGRAPHIC" }, { 0x004082, "LABORATORY EQUIPMENT CORP.", "LABORATORY-EQUIPMENT" }, { 0x004083, "TDA INDUSTRIA DE PRODUTOS", "TDA-INDUSTRIA-DE-PRODUTOS" }, { 0x004084, "HONEYWELL ACS", "HONEYWELL-ACS" }, { 0x004085, "SAAB INSTRUMENTS AB", "SAAB-INSTRUMENTS-AB" }, { 0x004086, "MICHELS & KLEBERHOFF COMPUTER", "MICHELS-KLEBERHOFF" }, { 0x004087, "UBITREX CORPORATION", "UBITREX" }, { 0x004088, "MOBIUS TECHNOLOGIES, INC.", "MOBIUS-TECHNOLOGIES" }, { 0x004089, "MEIDENSHA CORPORATION", "MEIDENSHA" }, { 0x00408A, "TPS TELEPROCESSING SYS. GMBH", "TPS-TELEPROCESSING-SYS" }, { 0x00408B, "RAYLAN CORPORATION", "RAYLAN" }, { 0x00408C, "AXIS COMMUNICATIONS AB", "AXIS-COMMUNICATION-AB" }, { 0x00408D, "THE GOODYEAR TIRE & RUBBER CO.", "THE-GOODYEAR-TIRE-RUBBER" }, { 0x00408E, "Tattile SRL", "TATTILE-SRL" }, { 0x00408F, "WM-DATA MINFO AB", "WM-DATA-MINFO-AB" }, { 0x004090, "ANSEL COMMUNICATIONS", "ANSEL-COMMUNICATION" }, { 0x004091, "PROCOMP INDUSTRIA ELETRONICA", "PROCOMP-INDUSTRIA-ELETRONICA" }, { 0x004092, "ASP COMPUTER PRODUCTS, INC.", "ASP-PRODUCTS" }, { 0x004093, "PAXDATA NETWORKS LTD.", "PAXDATA-NETWORKS" }, { 0x004094, "SHOGRAPHICS, INC.", "SHOGRAPHICS" }, { 0x004095, "R.P.T. INTERGROUPS INT'L LTD.", "R-P-T-INTERGROUPS" }, { 0x004096, "Cisco Systems", "CISCO" }, { 0x004097, "DATEX DIVISION OF", "DATEX-DIVISION-OF" }, { 0x004098, "DRESSLER GMBH & CO.", "DRESSLER" }, { 0x004099, "NEWGEN SYSTEMS CORP.", "NEWGEN" }, { 0x00409A, "NETWORK EXPRESS, INC.", "NETWORK-EXPRESS" }, { 0x00409B, "HAL COMPUTER SYSTEMS INC.", "HAL" }, { 0x00409C, "TRANSWARE", "TRANSWARE" }, { 0x00409D, "DIGIBOARD, INC.", "DIGIBOARD" }, { 0x00409E, "CONCURRENT TECHNOLOGIES LTD.", "CONCURRENT-TECHNOLOGIES" }, { 0x00409F, "Telco Systems, Inc.", "TELCO" }, { 0x0040A0, "GOLDSTAR CO., LTD.", "GOLDSTAR" }, { 0x0040A1, "ERGO COMPUTING", "ERGO-COMPUTING" }, { 0x0040A2, "KINGSTAR TECHNOLOGY INC.", "KINGSTAR" }, { 0x0040A3, "MICROUNITY SYSTEMS ENGINEERING", "MICROUNITY-ENGINEERING" }, { 0x0040A4, "ROSE ELECTRONICS", "ROSE-ELECTRONICS" }, { 0x0040A5, "CLINICOMP INTL.", "CLINICOMP-INTL" }, { 0x0040A6, "Cray, Inc.", "CRAY" }, { 0x0040A7, "ITAUTEC PHILCO S.A.", "ITAUTEC-PHILCO" }, { 0x0040A8, "IMF INTERNATIONAL LTD.", "IMF" }, { 0x0040A9, "DATACOM INC.", "DATACOM" }, { 0x0040AA, "Metso Automation", "METSO-AUTOMATION" }, { 0x0040AB, "ROLAND DG CORPORATION", "ROLAND-DG" }, { 0x0040AC, "SUPER WORKSTATION, INC.", "SUPER-WORKSTATION" }, { 0x0040AD, "SMA REGELSYSTEME GMBH", "SMA-REGELSYSTEME" }, { 0x0040AE, "DELTA CONTROLS, INC.", "DELTA-CONTROLS" }, { 0x0040AF, "DIGITAL PRODUCTS, INC.", "DIGITAL-PRODUCTS" }, { 0x0040B0, "BYTEX CORPORATION, ENGINEERING", "BYTEX-ENGINEERING" }, { 0x0040B1, "CODONICS INC.", "CODONICS" }, { 0x0040B2, "SYSTEMFORSCHUNG", "SYSTEMFORSCHUNG" }, { 0x0040B3, "ParTech Inc.", "PARTECH" }, { 0x0040B4, "NEXTCOM K.K.", "NEXTCOM-K-K" }, { 0x0040B5, "VIDEO TECHNOLOGY COMPUTERS LTD", "VIDEO-COMPUTERS" }, { 0x0040B6, "COMPUTERM CORPORATION", "COMPUTERM" }, { 0x0040B7, "STEALTH COMPUTER SYSTEMS", "STEALTH" }, { 0x0040B8, "IDEA ASSOCIATES", "IDEA-ASSOCIATES" }, { 0x0040B9, "MACQ ELECTRONIQUE SA", "MACQ-ELECTRONIQUE" }, { 0x0040BA, "ALLIANT COMPUTER SYSTEMS CORP.", "ALLIANT" }, { 0x0040BB, "GOLDSTAR CABLE CO., LTD.", "GOLDSTAR-CABLE" }, { 0x0040BC, "ALGORITHMICS LTD.", "ALGORITHMICS" }, { 0x0040BD, "STARLIGHT NETWORKS, INC.", "STARLIGHT-NETWORKS" }, { 0x0040BE, "BOEING DEFENSE & SPACE", "BOEING-DEFENSE-SPACE" }, { 0x0040BF, "CHANNEL SYSTEMS INTERN'L INC.", "CHANNEL-INTERN-L" }, { 0x0040C0, "VISTA CONTROLS CORPORATION", "VISTA-CONTROLS" }, { 0x0040C1, "BIZERBA-WERKE WILHEIM KRAUT", "BIZERBA-WERKE-WILHEIM-KRAUT" }, { 0x0040C2, "APPLIED COMPUTING DEVICES", "APPLIED-COMPUTING-DEVICES" }, { 0x0040C3, "FISCHER AND PORTER CO.", "FISCHER-AND-PORTER" }, { 0x0040C4, "KINKEI SYSTEM CORPORATION", "KINKEI-SYSTEM" }, { 0x0040C5, "MICOM COMMUNICATIONS INC.", "MICOM-COMMUNICATION" }, { 0x0040C6, "FIBERNET RESEARCH, INC.", "FIBERNET-RESEARCH" }, { 0x0040C7, "RUBY TECH CORPORATION", "RUBY-TECH" }, { 0x0040C8, "MILAN TECHNOLOGY CORPORATION", "MILAN" }, { 0x0040C9, "NCUBE", "NCUBE" }, { 0x0040CA, "FIRST INTERNAT'L COMPUTER, INC", "FIRST-INTERNAT-L" }, { 0x0040CB, "LANWAN TECHNOLOGIES", "LANWAN-TECHNOLOGIES" }, { 0x0040CC, "SILCOM MANUF'G TECHNOLOGY INC.", "SILCOM-MANUF-G" }, { 0x0040CD, "TERA MICROSYSTEMS, INC.", "TERA-MICROSYSTEMS" }, { 0x0040CE, "NET-SOURCE, INC.", "NET-SOURCE" }, { 0x0040CF, "STRAWBERRY TREE, INC.", "STRAWBERRY-TREE" }, { 0x0040D0, "MITAC INTERNATIONAL CORP.", "MITAC" }, { 0x0040D1, "FUKUDA DENSHI CO., LTD.", "FUKUDA-DENSHI" }, { 0x0040D2, "PAGINE CORPORATION", "PAGINE" }, { 0x0040D3, "KIMPSION INTERNATIONAL CORP.", "KIMPSION" }, { 0x0040D4, "GAGE TALKER CORP.", "GAGE-TALKER" }, { 0x0040D5, "Sartorius Mechatronics T&H GmbH", "SARTORIUS-MECHATRONICS-T-H" }, { 0x0040D6, "LOCAMATION B.V.", "LOCAMATION" }, { 0x0040D7, "STUDIO GEN INC.", "STUDIO-GEN" }, { 0x0040D8, "OCEAN OFFICE AUTOMATION LTD.", "OCEAN-OFFICE-AUTOMATION" }, { 0x0040D9, "AMERICAN MEGATRENDS INC.", "AMERICAN-MEGATRENDS" }, { 0x0040DA, "TELSPEC LTD", "TELSPEC" }, { 0x0040DB, "ADVANCED TECHNICAL SOLUTIONS", "ADVANCED-TECHNICAL-SOLUTIONS" }, { 0x0040DC, "TRITEC ELECTRONIC GMBH", "TRITEC" }, { 0x0040DD, "HONG TECHNOLOGIES", "HONG-TECHNOLOGIES" }, { 0x0040DE, "Elsag Datamat spa", "ELSAG-DATAMAT-SPA" }, { 0x0040DF, "DIGALOG SYSTEMS, INC.", "DIGALOG" }, { 0x0040E0, "ATOMWIDE LTD.", "ATOMWIDE" }, { 0x0040E1, "MARNER INTERNATIONAL, INC.", "MARNER" }, { 0x0040E2, "MESA RIDGE TECHNOLOGIES, INC.", "MESA-RIDGE-TECHNOLOGIES" }, { 0x0040E3, "QUIN SYSTEMS LTD", "QUIN" }, { 0x0040E4, "E-M TECHNOLOGY, INC.", "E-M" }, { 0x0040E5, "SYBUS CORPORATION", "SYBUS" }, { 0x0040E6, "C.A.E.N.", "C-A-E-N" }, { 0x0040E7, "ARNOS INSTRUMENTS & COMPUTER", "ARNOS-INSTRUMENTS" }, { 0x0040E8, "CHARLES RIVER DATA SYSTEMS,INC", "CHARLES-RIVER-DATA" }, { 0x0040E9, "ACCORD SYSTEMS, INC.", "ACCORD" }, { 0x0040EA, "PLAIN TREE SYSTEMS INC", "PLAIN-TREE" }, { 0x0040EB, "MARTIN MARIETTA CORPORATION", "MARTIN-MARIETTA" }, { 0x0040EC, "MIKASA SYSTEM ENGINEERING", "MIKASA-SYSTEM-ENGINEERING" }, { 0x0040ED, "NETWORK CONTROLS INT'NATL INC.", "NETWORK-CONTROLS-INT-NATL" }, { 0x0040EE, "OPTIMEM", "OPTIMEM" }, { 0x0040EF, "HYPERCOM, INC.", "HYPERCOM" }, { 0x0040F0, "MicroBrain,Inc.", "MICROBRAIN" }, { 0x0040F1, "CHUO ELECTRONICS CO., LTD.", "CHUO-ELECTRONICS" }, { 0x0040F2, "JANICH & KLASS COMPUTERTECHNIK", "JANICH-KLASS-COMPUTERTECHNIK" }, { 0x0040F3, "NETCOR", "NETCOR" }, { 0x0040F4, "CAMEO COMMUNICATIONS, INC.", "CAMEO-COMMUNICATION" }, { 0x0040F5, "OEM ENGINES", "OEM-ENGINES" }, { 0x0040F6, "KATRON COMPUTERS INC.", "KATRON-COMPUTERS" }, { 0x0040F7, "Polaroid Corporation", "POLAROID" }, { 0x0040F8, "SYSTEMHAUS DISCOM", "SYSTEMHAUS-DISCOM" }, { 0x0040F9, "COMBINET", "COMBINET" }, { 0x0040FA, "MICROBOARDS, INC.", "MICROBOARDS" }, { 0x0040FB, "CASCADE COMMUNICATIONS CORP.", "CASCADE-COMMUNICATION" }, { 0x0040FC, "IBR COMPUTER TECHNIK GMBH", "IBR-TECHNIK" }, { 0x0040FD, "LXE", "LXE" }, { 0x0040FE, "SYMPLEX COMMUNICATIONS", "SYMPLEX-COMMUNICATION" }, { 0x0040FF, "TELEBIT CORPORATION", "TELEBIT" }, { 0x0041B4, "Wuxi Zhongxing Optoelectronics Technology Co.,Ltd.", "WUXI-ZHONGXING-OPTOELECTRONICS" }, { 0x004252, "RLX Technologies", "RLX-TECHNOLOGIES" }, { 0x0043FF, "KETRON S.R.L.", "KETRON-S-R-L" }, { 0x004501, "Versus Technology, Inc.", "VERSUS" }, { 0x00464B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x004D32, "Andon Health Co.,Ltd.", "ANDON-HEALTH" }, { 0x005000, "NEXO COMMUNICATIONS, INC.", "NEXO-COMMUNICATION" }, { 0x005001, "YAMASHITA SYSTEMS CORP.", "YAMASHITA" }, { 0x005002, "OMNISEC AG", "OMNISEC" }, { 0x005003, "Xrite Inc", "XRITE" }, { 0x005004, "3COM CORPORATION", "3COM" }, { 0x005006, "TAC AB", "TAC-AB" }, { 0x005007, "SIEMENS TELECOMMUNICATION SYSTEMS LIMITED", "SIEMENS-TELECOMMUNICATION" }, { 0x005008, "TIVA MICROCOMPUTER CORP. (TMC)", "TIVA-MICROCOMPUTER-TMC" }, { 0x005009, "PHILIPS BROADBAND NETWORKS", "PHILIPS-BROADBAND-NETWORKS" }, { 0x00500A, "IRIS TECHNOLOGIES, INC.", "IRIS-TECHNOLOGIES" }, { 0x00500B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00500C, "e-Tek Labs, Inc.", "E-TEK-LABS" }, { 0x00500D, "SATORI ELECTORIC CO., LTD.", "SATORI-ELECTORIC" }, { 0x00500E, "CHROMATIS NETWORKS, INC.", "CHROMATIS-NETWORKS" }, { 0x00500F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005010, "NovaNET Learning, Inc.", "NOVANET-LEARNING" }, { 0x005012, "CBL - GMBH", "CBL" }, { 0x005013, "Chaparral Network Storage", "CHAPARRAL-NETWORK-STORAGE" }, { 0x005014, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005015, "BRIGHT STAR ENGINEERING", "BRIGHT-STAR-ENGINEERING" }, { 0x005016, "SST/WOODHEAD INDUSTRIES", "SST/WOODHEAD-INDUSTRIES" }, { 0x005017, "RSR S.R.L.", "RSR-S-R-L" }, { 0x005018, "AMIT, Inc.", "AMIT" }, { 0x005019, "SPRING TIDE NETWORKS, INC.", "SPRING-TIDE-NETWORKS" }, { 0x00501A, "IQinVision", "IQINVISION" }, { 0x00501B, "ABL CANADA, INC.", "ABL-CANADA" }, { 0x00501C, "JATOM SYSTEMS, INC.", "JATOM" }, { 0x00501E, "Miranda Technologies, Inc.", "MIRANDA-TECHNOLOGIES" }, { 0x00501F, "MRG SYSTEMS, LTD.", "MRG" }, { 0x005020, "MEDIASTAR CO., LTD.", "MEDIASTAR" }, { 0x005021, "EIS INTERNATIONAL, INC.", "EIS" }, { 0x005022, "ZONET TECHNOLOGY, INC.", "ZONET" }, { 0x005023, "PG DESIGN ELECTRONICS, INC.", "PG-DESIGN-ELECTRONICS" }, { 0x005024, "NAVIC SYSTEMS, INC.", "NAVIC" }, { 0x005026, "COSYSTEMS, INC.", "COSYSTEMS" }, { 0x005027, "GENICOM CORPORATION", "GENICOM" }, { 0x005028, "AVAL COMMUNICATIONS", "AVAL-COMMUNICATION" }, { 0x005029, "1394 PRINTER WORKING GROUP", "1394-PRINTER-WORKING-GROUP" }, { 0x00502A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00502B, "GENRAD LTD.", "GENRAD" }, { 0x00502C, "SOYO COMPUTER, INC.", "SOYO" }, { 0x00502D, "ACCEL, INC.", "ACCEL" }, { 0x00502E, "CAMBEX CORPORATION", "CAMBEX" }, { 0x00502F, "TollBridge Technologies, Inc.", "TOLLBRIDGE-TECHNOLOGIES" }, { 0x005030, "FUTURE PLUS SYSTEMS", "FUTURE-PLUS" }, { 0x005031, "AEROFLEX LABORATORIES, INC.", "AEROFLEX-LABORATORIES" }, { 0x005032, "PICAZO COMMUNICATIONS, INC.", "PICAZO-COMMUNICATION" }, { 0x005033, "MAYAN NETWORKS", "MAYAN-NETWORKS" }, { 0x005036, "NETCAM, LTD.", "NETCAM" }, { 0x005037, "KOGA ELECTRONICS CO.", "KOGA-ELECTRONICS" }, { 0x005038, "DAIN TELECOM CO., LTD.", "DAIN-TELECOM" }, { 0x005039, "MARINER NETWORKS", "MARINER-NETWORKS" }, { 0x00503A, "DATONG ELECTRONICS LTD.", "DATONG-ELECTRONICS" }, { 0x00503B, "MEDIAFIRE CORPORATION", "MEDIAFIRE" }, { 0x00503C, "TSINGHUA NOVEL ELECTRONICS", "TSINGHUA-NOVEL-ELECTRONICS" }, { 0x00503E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00503F, "ANCHOR GAMES", "ANCHOR-GAMES" }, { 0x005040, "Panasonic Electric Works Co., Ltd.", "PANASONIC-ELECTRIC-WORKS" }, { 0x005041, "Coretronic Corporation", "CORETRONIC" }, { 0x005042, "SCI MANUFACTURING SINGAPORE PTE, LTD.", "SCI-MANUFACTURING-SINGAPORE-PTE" }, { 0x005043, "MARVELL SEMICONDUCTOR, INC.", "MARVELL-SEMICONDUCTOR" }, { 0x005044, "ASACA CORPORATION", "ASACA" }, { 0x005045, "RIOWORKS SOLUTIONS, INC.", "RIOWORKS-SOLUTIONS" }, { 0x005046, "MENICX INTERNATIONAL CO., LTD.", "MENICX" }, { 0x005047, "PRIVATE", "PRIVATE" }, { 0x005048, "INFOLIBRIA", "INFOLIBRIA" }, { 0x005049, "Arbor Networks Inc", "ARBOR-NETWORKS" }, { 0x00504A, "ELTECO A.S.", "ELTECO-A-S" }, { 0x00504B, "BARCONET N.V.", "BARCONET-N-V" }, { 0x00504C, "Galil Motion Control", "GALIL-MOTION-CONTROL" }, { 0x00504D, "Tokyo Electron Device Limited", "TOKYO-ELECTRON-DEVICE" }, { 0x00504E, "SIERRA MONITOR CORP.", "SIERRA-MONITOR" }, { 0x00504F, "OLENCOM ELECTRONICS", "OLENCOM-ELECTRONICS" }, { 0x005050, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005051, "IWATSU ELECTRIC CO., LTD.", "IWATSU-ELECTRIC" }, { 0x005052, "TIARA NETWORKS, INC.", "TIARA-NETWORKS" }, { 0x005053, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005054, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005055, "DOMS A/S", "DOMS-A/S" }, { 0x005056, "VMware, Inc. (possible VMware VM)", "VMWARE-VIRTUAL" }, { 0x005057, "BROADBAND ACCESS SYSTEMS", "BROADBAND-ACCESS" }, { 0x005058, "VegaStream Group Limted", "VEGASTREAM-GROUP-LIMTED" }, { 0x005059, "iBAHN", "IBAHN" }, { 0x00505A, "NETWORK ALCHEMY, INC.", "NETWORK-ALCHEMY" }, { 0x00505B, "KAWASAKI LSI U.S.A., INC.", "KAWASAKI-LSI-U" }, { 0x00505C, "TUNDO CORPORATION", "TUNDO" }, { 0x00505E, "DIGITEK MICROLOGIC S.A.", "DIGITEK-MICROLOGIC" }, { 0x00505F, "BRAND INNOVATORS", "BRAND-INNOVATORS" }, { 0x005060, "TANDBERG TELECOM AS", "TANDBERG-TELECOM-AS" }, { 0x005062, "KOUWELL ELECTRONICS CORP. **", "KOUWELL-ELECTRONICS-**" }, { 0x005063, "OY COMSEL SYSTEM AB", "OY-COMSEL-SYSTEM-AB" }, { 0x005064, "CAE ELECTRONICS", "CAE-ELECTRONICS" }, { 0x005065, "TDK-Lambda Corporation", "TDK-LAMBDA" }, { 0x005066, "AtecoM GmbH advanced telecomunication modules", "ATECOM-ADVANCED-TELECOMUNICATION-MODULES" }, { 0x005067, "AEROCOMM, INC.", "AEROCOMM" }, { 0x005068, "ELECTRONIC INDUSTRIES ASSOCIATION", "INDUSTRIES-ASSOCIATION" }, { 0x005069, "PixStream Incorporated", "PIXSTREAM-INCORPORATED" }, { 0x00506A, "EDEVA, INC.", "EDEVA" }, { 0x00506B, "SPX-ATEG", "SPX-ATEG" }, { 0x00506C, "Beijer Electronics Products AB", "BEIJER-ELECTRONICS-PRODUCTS-AB" }, { 0x00506D, "VIDEOJET SYSTEMS", "VIDEOJET" }, { 0x00506E, "CORDER ENGINEERING CORPORATION", "CORDER-ENGINEERING" }, { 0x00506F, "G-CONNECT", "G-CONNECT" }, { 0x005070, "CHAINTECH COMPUTER CO., LTD.", "CHAINTECH" }, { 0x005071, "AIWA CO., LTD.", "AIWA" }, { 0x005072, "CORVIS CORPORATION", "CORVIS" }, { 0x005073, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005074, "ADVANCED HI-TECH CORP.", "ADVANCED-HI-TECH" }, { 0x005075, "KESTREL SOLUTIONS", "KESTREL-SOLUTIONS" }, { 0x005076, "IBM Corp", "IBM" }, { 0x005077, "PROLIFIC TECHNOLOGY, INC.", "PROLIFIC" }, { 0x005078, "MEGATON HOUSE, LTD.", "MEGATON-HOUSE" }, { 0x005079, "PRIVATE", "PRIVATE" }, { 0x00507A, "XPEED, INC.", "XPEED" }, { 0x00507B, "MERLOT COMMUNICATIONS", "MERLOT-COMMUNICATION" }, { 0x00507C, "VIDEOCON AG", "VIDEOCON" }, { 0x00507D, "IFP", "IFP" }, { 0x00507E, "NEWER TECHNOLOGY", "NEWER" }, { 0x00507F, "DrayTek Corp.", "DRAYTEK" }, { 0x005080, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x005081, "MURATA MACHINERY, LTD.", "MURATA-MACHINERY" }, { 0x005082, "FORESSON CORPORATION", "FORESSON" }, { 0x005083, "GILBARCO, INC.", "GILBARCO" }, { 0x005084, "ATL PRODUCTS", "ATL-PRODUCTS" }, { 0x005086, "TELKOM SA, LTD.", "TELKOM" }, { 0x005087, "TERASAKI ELECTRIC CO., LTD.", "TERASAKI-ELECTRIC" }, { 0x005088, "AMANO CORPORATION", "AMANO" }, { 0x005089, "SAFETY MANAGEMENT SYSTEMS", "SAFETY-MANAGEMENT" }, { 0x00508B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x00508C, "RSI SYSTEMS", "RSI" }, { 0x00508D, "ABIT COMPUTER CORPORATION", "ABIT" }, { 0x00508E, "OPTIMATION, INC.", "OPTIMATION" }, { 0x00508F, "ASITA TECHNOLOGIES INT'L LTD.", "ASITA-TECHNOLOGIES" }, { 0x005090, "DCTRI", "DCTRI" }, { 0x005091, "NETACCESS, INC.", "NETACCESS" }, { 0x005092, "RIGAKU INDUSTRIAL CORPORATION", "RIGAKU-INDUSTRIAL" }, { 0x005093, "BOEING", "BOEING" }, { 0x005094, "PACE plc", "PACE-PLC" }, { 0x005095, "PERACOM NETWORKS", "PERACOM-NETWORKS" }, { 0x005096, "SALIX TECHNOLOGIES, INC.", "SALIX-TECHNOLOGIES" }, { 0x005097, "MMC-EMBEDDED COMPUTERTECHNIK GmbH", "MMC-EMBEDDED-COMPUTERTECHNIK" }, { 0x005098, "GLOBALOOP, LTD.", "GLOBALOOP" }, { 0x005099, "3COM EUROPE, LTD.", "3COM" }, { 0x00509A, "TAG ELECTRONIC SYSTEMS", "TAG" }, { 0x00509B, "SWITCHCORE AB", "SWITCHCORE-AB" }, { 0x00509C, "BETA RESEARCH", "BETA-RESEARCH" }, { 0x00509D, "THE INDUSTREE B.V.", "THE-INDUSTREE" }, { 0x00509E, "Les Technologies SoftAcoustik Inc.", "LES-TECHNOLOGIES-SOFTACOUSTIK" }, { 0x00509F, "HORIZON COMPUTER", "HORIZON" }, { 0x0050A0, "DELTA COMPUTER SYSTEMS, INC.", "DELTA" }, { 0x0050A1, "CARLO GAVAZZI, INC.", "CARLO-GAVAZZI" }, { 0x0050A2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0050A3, "TransMedia Communications, Inc.", "TRANSMEDIA-COMMUNICATION" }, { 0x0050A4, "IO TECH, INC.", "IO-TECH" }, { 0x0050A5, "CAPITOL BUSINESS SYSTEMS, LTD.", "CAPITOL-BUSINESS" }, { 0x0050A6, "OPTRONICS", "OPTRONICS" }, { 0x0050A7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0050A8, "OpenCon Systems, Inc.", "OPENCON" }, { 0x0050A9, "MOLDAT WIRELESS TECHNOLGIES", "MOLDAT-WIRELESS-TECHNOLGIES" }, { 0x0050AA, "KONICA MINOLTA HOLDINGS, INC.", "KONICA-MINOLTA-HOLDINGS" }, { 0x0050AB, "NALTEC, Inc.", "NALTEC" }, { 0x0050AC, "MAPLE COMPUTER CORPORATION", "MAPLE" }, { 0x0050AD, "CommUnique Wireless Corp.", "COMMUNIQUE-WIRELESS" }, { 0x0050AE, "FDK Co., Ltd", "FDK" }, { 0x0050AF, "INTERGON, INC.", "INTERGON" }, { 0x0050B0, "TECHNOLOGY ATLANTA CORPORATION", "ATLANTA" }, { 0x0050B1, "GIDDINGS & LEWIS", "GIDDINGS-LEWIS" }, { 0x0050B2, "BRODEL GmbH", "BRODEL" }, { 0x0050B3, "VOICEBOARD CORPORATION", "VOICEBOARD" }, { 0x0050B4, "SATCHWELL CONTROL SYSTEMS, LTD", "SATCHWELL-CONTROL" }, { 0x0050B5, "FICHET-BAUCHE", "FICHET-BAUCHE" }, { 0x0050B6, "GOOD WAY IND. CO., LTD.", "GOOD-WAY-IND" }, { 0x0050B7, "BOSER TECHNOLOGY CO., LTD.", "BOSER" }, { 0x0050B8, "INOVA COMPUTERS GMBH & CO. KG", "INOVA-COMPUTERS" }, { 0x0050B9, "XITRON TECHNOLOGIES, INC.", "XITRON-TECHNOLOGIES" }, { 0x0050BA, "D-LINK", "D-LINK" }, { 0x0050BB, "CMS TECHNOLOGIES", "CMS-TECHNOLOGIES" }, { 0x0050BC, "HAMMER STORAGE SOLUTIONS", "HAMMER-STORAGE-SOLUTIONS" }, { 0x0050BD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0050BE, "FAST MULTIMEDIA AG", "FAST-MULTIMEDIA" }, { 0x0050BF, "Metalligence Technology Corp.", "METALLIGENCE" }, { 0x0050C0, "GATAN, INC.", "GATAN" }, { 0x0050C1, "GEMFLEX NETWORKS, LTD.", "GEMFLEX-NETWORKS" }, { 0x0050C2, "IEEE REGISTRATION AUTHORITY - Please see IAB public listing for more information.", "IEEE-REGISTRATION-AUTHORITY---PLEASE-SEE-IAB-PUBLIC-LISTING-FOR-MORE-INFORMATION" }, { 0x0050C4, "IMD", "IMD" }, { 0x0050C5, "ADS Technologies, Inc", "ADS-TECHNOLOGIES" }, { 0x0050C6, "LOOP TELECOMMUNICATION INTERNATIONAL, INC.", "LOOP-TELECOMMUNICATION" }, { 0x0050C8, "Addonics Technologies, Inc.", "ADDONICS-TECHNOLOGIES" }, { 0x0050C9, "MASPRO DENKOH CORP.", "MASPRO-DENKOH" }, { 0x0050CA, "NET TO NET TECHNOLOGIES", "NET-TO-NET-TECHNOLOGIES" }, { 0x0050CB, "JETTER", "JETTER" }, { 0x0050CC, "XYRATEX", "XYRATEX" }, { 0x0050CD, "DIGIANSWER A/S", "DIGIANSWER-A/S" }, { 0x0050CE, "LG INTERNATIONAL CORP.", "LG" }, { 0x0050CF, "VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE", "VANLINK-COMMUNICATION-RESEARCH-INSTITUTE" }, { 0x0050D0, "MINERVA SYSTEMS", "MINERVA" }, { 0x0050D1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0050D2, "CMC Electronics Inc", "CMC-ELECTRONICS" }, { 0x0050D3, "DIGITAL AUDIO PROCESSING PTY. LTD.", "DIGITAL-AUDIO-PROCESSING-PTY" }, { 0x0050D4, "JOOHONG INFORMATION &", "JOOHONG-INFORMATION" }, { 0x0050D5, "AD SYSTEMS CORP.", "AD" }, { 0x0050D6, "ATLAS COPCO TOOLS AB", "ATLAS-COPCO-TOOLS-AB" }, { 0x0050D7, "TELSTRAT", "TELSTRAT" }, { 0x0050D8, "UNICORN COMPUTER CORP.", "UNICORN" }, { 0x0050D9, "ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA", "ENGETRON-ENGENHARIA-ELETRONICA-IND-E-COM-LTDA" }, { 0x0050DA, "3COM CORPORATION", "3COM" }, { 0x0050DB, "CONTEMPORARY CONTROL", "CONTEMPORARY-CONTROL" }, { 0x0050DC, "TAS TELEFONBAU A. SCHWABE GMBH & CO. KG", "TAS-TELEFONBAU-A-SCHWABE" }, { 0x0050DD, "SERRA SOLDADURA, S.A.", "SERRA-SOLDADURA" }, { 0x0050DE, "SIGNUM SYSTEMS CORP.", "SIGNUM" }, { 0x0050DF, "AirFiber, Inc.", "AIRFIBER" }, { 0x0050E1, "NS TECH ELECTRONICS SDN BHD", "NS-TECH-ELECTRONICS-SDN-BHD" }, { 0x0050E2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0050E3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0050E4, "Apple", "APPLE" }, { 0x0050E6, "HAKUSAN CORPORATION", "HAKUSAN" }, { 0x0050E7, "PARADISE INNOVATIONS (ASIA)", "PARADISE-INNOVATIONS-ASIA" }, { 0x0050E8, "NOMADIX INC.", "NOMADIX" }, { 0x0050EA, "XEL COMMUNICATIONS, INC.", "XEL-COMMUNICATION" }, { 0x0050EB, "ALPHA-TOP CORPORATION", "ALPHA-TOP" }, { 0x0050EC, "OLICOM A/S", "OLICOM-A/S" }, { 0x0050ED, "ANDA NETWORKS", "ANDA-NETWORKS" }, { 0x0050EE, "TEK DIGITEL CORPORATION", "TEK-DIGITEL" }, { 0x0050EF, "SPE Systemhaus GmbH", "SPE-SYSTEMHAUS" }, { 0x0050F0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0050F1, "Intel Corporation", "INTEL" }, { 0x0050F2, "MICROSOFT CORP.", "MICROSOFT" }, { 0x0050F3, "GLOBAL NET INFORMATION CO., Ltd.", "GLOBAL-NET-INFORMATION" }, { 0x0050F4, "SIGMATEK GMBH & CO. KG", "SIGMATEK" }, { 0x0050F6, "PAN-INTERNATIONAL INDUSTRIAL CORP.", "PAN--INDUSTRIAL" }, { 0x0050F7, "VENTURE MANUFACTURING (SINGAPORE) LTD.", "VENTURE-MANUFACTURING-SINGAPORE" }, { 0x0050F8, "ENTREGA TECHNOLOGIES, INC.", "ENTREGA-TECHNOLOGIES" }, { 0x0050F9, "SENSORMATIC ACD", "SENSORMATIC-ACD" }, { 0x0050FA, "OXTEL, LTD.", "OXTEL" }, { 0x0050FB, "VSK ELECTRONICS", "VSK-ELECTRONICS" }, { 0x0050FC, "EDIMAX TECHNOLOGY CO., LTD.", "EDIMAX" }, { 0x0050FD, "VISIONCOMM CO., LTD.", "VISIONCOMM" }, { 0x0050FE, "PCTVnet ASA", "PCTVNET-ASA" }, { 0x0050FF, "HAKKO ELECTRONICS CO., LTD.", "HAKKO-ELECTRONICS" }, { 0x005218, "Wuxi Keboda Electron Co.Ltd", "WUXI-KEBODA-ELECTRON" }, { 0x0054AF, "Continental Automotive Systems Inc.", "CONTINENTAL-AUTOMOTIVE" }, { 0x005907, "LenovoEMC Products USA, LLC", "LENOVOEMC-PRODUCTS-USA-LLC" }, { 0x005CB1, "Gospell DIGITAL TECHNOLOGY CO., LTD", "GOSPELL-DIGITAL" }, { 0x005D03, "Xilinx, Inc", "XILINX" }, { 0x006000, "XYCOM INC.", "XYCOM" }, { 0x006001, "InnoSys, Inc.", "INNOSYS" }, { 0x006002, "SCREEN SUBTITLING SYSTEMS, LTD", "SCREEN-SUBTITLING" }, { 0x006003, "TERAOKA WEIGH SYSTEM PTE, LTD.", "TERAOKA-WEIGH-SYSTEM-PTE" }, { 0x006004, "COMPUTADORES MODULARES SA", "COMPUTADORES-MODULARES" }, { 0x006005, "FEEDBACK DATA LTD.", "FEEDBACK-DATA" }, { 0x006006, "SOTEC CO., LTD", "SOTEC" }, { 0x006007, "ACRES GAMING, INC.", "ACRES-GAMING" }, { 0x006008, "3COM CORPORATION", "3COM" }, { 0x006009, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00600A, "SORD COMPUTER CORPORATION", "SORD" }, { 0x00600B, "LOGWARE GmbH", "LOGWARE" }, { 0x00600C, "Eurotech Inc.", "EUROTECH" }, { 0x00600D, "Digital Logic GmbH", "DIGITAL-LOGIC" }, { 0x00600E, "WAVENET INTERNATIONAL, INC.", "WAVENET" }, { 0x00600F, "WESTELL, INC.", "WESTELL" }, { 0x006010, "NETWORK MACHINES, INC.", "NETWORK-MACHINES" }, { 0x006011, "CRYSTAL SEMICONDUCTOR CORP.", "CRYSTAL-SEMICONDUCTOR" }, { 0x006012, "POWER COMPUTING CORPORATION", "POWER-COMPUTING" }, { 0x006013, "NETSTAL MASCHINEN AG", "NETSTAL-MASCHINEN" }, { 0x006014, "EDEC CO., LTD.", "EDEC" }, { 0x006015, "NET2NET CORPORATION", "NET2NET" }, { 0x006016, "CLARIION", "CLARIION" }, { 0x006017, "TOKIMEC INC.", "TOKIMEC" }, { 0x006018, "STELLAR ONE CORPORATION", "STELLAR-ONE" }, { 0x006019, "Roche Diagnostics", "ROCHE-DIAGNOSTICS" }, { 0x00601A, "KEITHLEY INSTRUMENTS", "KEITHLEY-INSTRUMENTS" }, { 0x00601B, "MESA ELECTRONICS", "MESA-ELECTRONICS" }, { 0x00601C, "TELXON CORPORATION", "TELXON" }, { 0x00601D, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x00601E, "SOFTLAB, INC.", "SOFTLAB" }, { 0x00601F, "STALLION TECHNOLOGIES", "STALLION-TECHNOLOGIES" }, { 0x006020, "PIVOTAL NETWORKING, INC.", "PIVOTAL-NETWORKING" }, { 0x006021, "DSC CORPORATION", "DSC" }, { 0x006022, "VICOM SYSTEMS, INC.", "VICOM" }, { 0x006023, "PERICOM SEMICONDUCTOR CORP.", "PERICOM-SEMICONDUCTOR" }, { 0x006024, "GRADIENT TECHNOLOGIES, INC.", "GRADIENT-TECHNOLOGIES" }, { 0x006025, "ACTIVE IMAGING PLC", "ACTIVE-IMAGING-PLC" }, { 0x006026, "VIKING Modular Solutions", "VIKING-MODULAR-SOLUTIONS" }, { 0x006027, "Superior Modular Products", "SUPERIOR-MODULAR-PRODUCTS" }, { 0x006028, "MACROVISION CORPORATION", "MACROVISION" }, { 0x006029, "CARY PERIPHERALS INC.", "CARY-PERIPHERALS" }, { 0x00602A, "SYMICRON COMPUTER COMMUNICATIONS, LTD.", "SYMICRON-COMMUNICATION" }, { 0x00602B, "PEAK AUDIO", "PEAK-AUDIO" }, { 0x00602C, "LINX Data Terminals, Inc.", "LINX-DATA-TERMINALS" }, { 0x00602D, "ALERTON TECHNOLOGIES, INC.", "ALERTON-TECHNOLOGIES" }, { 0x00602E, "CYCLADES CORPORATION", "CYCLADES" }, { 0x00602F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x006030, "VILLAGE TRONIC ENTWICKLUNG", "VILLAGE-TRONIC-ENTWICKLUNG" }, { 0x006031, "HRK SYSTEMS", "HRK" }, { 0x006032, "I-CUBE, INC.", "I-CUBE" }, { 0x006033, "ACUITY IMAGING, INC.", "ACUITY-IMAGING" }, { 0x006034, "ROBERT BOSCH GmbH", "ROBERT-BOSCH" }, { 0x006035, "DALLAS SEMICONDUCTOR, INC.", "DALLAS-SEMICONDUCTOR" }, { 0x006036, "AIT Austrian Institute of Technology GmbH", "AIT-AUSTRIAN-INSTITUTE-OF" }, { 0x006037, "NXP Semiconductors", "NXP-SEMICONDUCTORS" }, { 0x006038, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x006039, "SanCom Technology, Inc.", "SANCOM" }, { 0x00603A, "QUICK CONTROLS LTD.", "QUICK-CONTROLS" }, { 0x00603B, "AMTEC spa", "AMTEC-SPA" }, { 0x00603C, "HAGIWARA SYS-COM CO., LTD.", "HAGIWARA-SYS-COM" }, { 0x00603D, "3CX", "3CX" }, { 0x00603E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00603F, "PATAPSCO DESIGNS", "PATAPSCO-DESIGNS" }, { 0x006040, "NETRO CORP.", "NETRO" }, { 0x006041, "Yokogawa Electric Corporation", "YOKOGAWA-ELECTRIC" }, { 0x006042, "TKS (USA), INC.", "TKS-USA" }, { 0x006043, "iDirect, INC.", "IDIRECT" }, { 0x006044, "LITTON/POLY-SCIENTIFIC", "LITTON/POLY-SCIENTIFIC" }, { 0x006045, "PATHLIGHT TECHNOLOGIES", "PATHLIGHT-TECHNOLOGIES" }, { 0x006046, "VMETRO, INC.", "VMETRO" }, { 0x006047, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x006048, "EMC CORPORATION", "EMC" }, { 0x006049, "VINA TECHNOLOGIES", "VINA-TECHNOLOGIES" }, { 0x00604A, "SAIC IDEAS GROUP", "SAIC-IDEAS-GROUP" }, { 0x00604B, "Safe-com GmbH & Co. KG", "SAFE-COM" }, { 0x00604C, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x00604D, "MMC NETWORKS, INC.", "MMC-NETWORKS" }, { 0x00604E, "CYCLE COMPUTER CORPORATION, INC.", "CYCLE" }, { 0x00604F, "Tattile SRL", "TATTILE-SRL" }, { 0x006050, "INTERNIX INC.", "INTERNIX" }, { 0x006051, "QUALITY SEMICONDUCTOR", "QUALITY-SEMICONDUCTOR" }, { 0x006052, "PERIPHERALS ENTERPRISE CO., Ltd.", "PERIPHERALS" }, { 0x006053, "TOYODA MACHINE WORKS, LTD.", "TOYODA-MACHINE-WORKS" }, { 0x006054, "CONTROLWARE GMBH", "CONTROLWARE" }, { 0x006055, "CORNELL UNIVERSITY", "CORNELL-UNIVERSITY" }, { 0x006056, "NETWORK TOOLS, INC.", "NETWORK-TOOLS" }, { 0x006057, "MURATA MANUFACTURING CO., LTD.", "MURATA-MANUFACTURING" }, { 0x006058, "COPPER MOUNTAIN COMMUNICATIONS, INC.", "COPPER-MOUNTAIN-COMMUNICATION" }, { 0x006059, "TECHNICAL COMMUNICATIONS CORP.", "TECHNICAL-COMMUNICATION" }, { 0x00605A, "CELCORE, INC.", "CELCORE" }, { 0x00605B, "IntraServer Technology, Inc.", "INTRASERVER" }, { 0x00605C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00605D, "SCANIVALVE CORP.", "SCANIVALVE" }, { 0x00605E, "LIBERTY TECHNOLOGY NETWORKING", "LIBERTY-NETWORKING" }, { 0x00605F, "NIPPON UNISOFT CORPORATION", "NIPPON-UNISOFT" }, { 0x006060, "DAWNING TECHNOLOGIES, INC.", "DAWNING-TECHNOLOGIES" }, { 0x006061, "WHISTLE COMMUNICATIONS CORP.", "WHISTLE-COMMUNICATION" }, { 0x006062, "TELESYNC, INC.", "TELESYNC" }, { 0x006063, "PSION DACOM PLC.", "PSION-DACOM-PLC" }, { 0x006064, "NETCOMM LIMITED", "NETCOMM" }, { 0x006065, "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH", "BERNECKER-RAINER-INDUSTRIE-ELEKTRONIC" }, { 0x006066, "LACROIX Trafic", "LACROIX-TRAFIC" }, { 0x006067, "ACER NETXUS INC.", "ACER-NETXUS" }, { 0x006068, "Dialogic Corporation", "DIALOGIC" }, { 0x006069, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x00606A, "MITSUBISHI WIRELESS COMMUNICATIONS. INC.", "MITSUBISHI-WIRELESS-COMMUNICATION" }, { 0x00606B, "Synclayer Inc.", "SYNCLAYER" }, { 0x00606C, "ARESCOM", "ARESCOM" }, { 0x00606D, "DIGITAL EQUIPMENT CORP.", "DIGITAL-EQUIPMENT" }, { 0x00606E, "DAVICOM SEMICONDUCTOR, INC.", "DAVICOM-SEMICONDUCTOR" }, { 0x00606F, "CLARION CORPORATION OF AMERICA", "CLARION-OF-AMERICA" }, { 0x006070, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x006071, "MIDAS LAB, INC.", "MIDAS-LAB" }, { 0x006072, "VXL INSTRUMENTS, LIMITED", "VXL-INSTRUMENTS" }, { 0x006073, "REDCREEK COMMUNICATIONS, INC.", "REDCREEK-COMMUNICATION" }, { 0x006074, "QSC AUDIO PRODUCTS", "QSC-AUDIO-PRODUCTS" }, { 0x006075, "PENTEK, INC.", "PENTEK" }, { 0x006076, "SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS", "SCHLUMBERGER-TECHNOLOGIES-RETAIL-PETROLEUM" }, { 0x006077, "PRISA NETWORKS", "PRISA-NETWORKS" }, { 0x006078, "POWER MEASUREMENT LTD.", "POWER-MEASUREMENT" }, { 0x006079, "Mainstream Data, Inc.", "MAINSTREAM-DATA" }, { 0x00607A, "DVS GmbH", "DVS" }, { 0x00607B, "FORE SYSTEMS, INC.", "FORE" }, { 0x00607C, "WaveAccess, Ltd.", "WAVEACCESS" }, { 0x00607D, "SENTIENT NETWORKS INC.", "SENTIENT-NETWORKS" }, { 0x00607E, "GIGALABS, INC.", "GIGALABS" }, { 0x00607F, "AURORA TECHNOLOGIES, INC.", "AURORA-TECHNOLOGIES" }, { 0x006080, "MICROTRONIX DATACOM LTD.", "MICROTRONIX-DATACOM" }, { 0x006081, "TV/COM INTERNATIONAL", "TV/COM" }, { 0x006082, "NOVALINK TECHNOLOGIES, INC.", "NOVALINK-TECHNOLOGIES" }, { 0x006083, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x006084, "DIGITAL VIDEO", "DIGITAL-VIDEO" }, { 0x006085, "Storage Concepts", "STORAGE-CONCEPTS" }, { 0x006086, "LOGIC REPLACEMENT TECH. LTD.", "LOGIC-REPLACEMENT-TECH" }, { 0x006087, "KANSAI ELECTRIC CO., LTD.", "KANSAI-ELECTRIC" }, { 0x006088, "WHITE MOUNTAIN DSP, INC.", "WHITE-MOUNTAIN-DSP" }, { 0x006089, "XATA", "XATA" }, { 0x00608A, "CITADEL COMPUTER", "CITADEL" }, { 0x00608B, "ConferTech International", "CONFERTECH" }, { 0x00608C, "3COM CORPORATION", "3COM" }, { 0x00608D, "UNIPULSE CORP.", "UNIPULSE" }, { 0x00608E, "HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH", "HE-ELECTRONICS-TECHNOLOGIE-SYSTEMTECHNIK" }, { 0x00608F, "TEKRAM TECHNOLOGY CO., LTD.", "TEKRAM" }, { 0x006090, "Artiza Networks Inc", "ARTIZA-NETWORKS" }, { 0x006091, "FIRST PACIFIC NETWORKS, INC.", "FIRST-PACIFIC-NETWORKS" }, { 0x006092, "MICRO/SYS, INC.", "MICRO/SYS" }, { 0x006093, "VARIAN", "VARIAN" }, { 0x006094, "IBM Corp", "IBM" }, { 0x006095, "ACCU-TIME SYSTEMS, INC.", "ACCU-TIME" }, { 0x006096, "T.S. MICROTECH INC.", "T-S-MICROTECH" }, { 0x006097, "3COM CORPORATION", "3COM" }, { 0x006098, "HT COMMUNICATIONS", "HT-COMMUNICATION" }, { 0x006099, "SBE, Inc.", "SBE" }, { 0x00609A, "NJK TECHNO CO.", "NJK-TECHNO" }, { 0x00609B, "ASTRO-MED, INC.", "ASTRO-MED" }, { 0x00609C, "Perkin-Elmer Incorporated", "PERKIN-ELMER-INCORPORATED" }, { 0x00609D, "PMI FOOD EQUIPMENT GROUP", "PMI-FOOD-EQUIPMENT-GROUP" }, { 0x00609E, "ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS", "ASC-X3---INFORMATION-STANDARDS-SECRETARIATS" }, { 0x00609F, "PHAST CORPORATION", "PHAST" }, { 0x0060A0, "SWITCHED NETWORK TECHNOLOGIES, INC.", "SWITCHED-NETWORK-TECHNOLOGIES" }, { 0x0060A1, "VPNet, Inc.", "VPNET" }, { 0x0060A2, "NIHON UNISYS LIMITED CO.", "NIHON-UNISYS" }, { 0x0060A3, "CONTINUUM TECHNOLOGY CORP.", "CONTINUUM" }, { 0x0060A4, "GRINAKER SYSTEM TECHNOLOGIES", "GRINAKER-SYSTEM-TECHNOLOGIES" }, { 0x0060A5, "PERFORMANCE TELECOM CORP.", "PERFORMANCE-TELECOM" }, { 0x0060A6, "PARTICLE MEASURING SYSTEMS", "PARTICLE-MEASURING" }, { 0x0060A7, "MICROSENS GmbH & CO. KG", "MICROSENS" }, { 0x0060A8, "TIDOMAT AB", "TIDOMAT-AB" }, { 0x0060A9, "GESYTEC MbH", "GESYTEC-MBH" }, { 0x0060AA, "INTELLIGENT DEVICES INC. (IDI)", "INTELLIGENT-DEVICES-IDI" }, { 0x0060AB, "LARSCOM INCORPORATED", "LARSCOM-INCORPORATED" }, { 0x0060AC, "RESILIENCE CORPORATION", "RESILIENCE" }, { 0x0060AD, "MegaChips Corporation", "MEGACHIPS" }, { 0x0060AE, "TRIO INFORMATION SYSTEMS AB", "TRIO-INFORMATION-AB" }, { 0x0060AF, "PACIFIC MICRO DATA, INC.", "PACIFIC-MICRO-DATA" }, { 0x0060B0, "HEWLETT-PACKARD CO.", "HEWLETT-PACKARD" }, { 0x0060B1, "INPUT/OUTPUT, INC.", "INPUT/OUTPUT" }, { 0x0060B2, "PROCESS CONTROL CORP.", "PROCESS-CONTROL" }, { 0x0060B3, "Z-COM, INC.", "Z-COM" }, { 0x0060B4, "GLENAYRE R&D INC.", "GLENAYRE-R-D" }, { 0x0060B5, "KEBA GmbH", "KEBA" }, { 0x0060B6, "LAND COMPUTER CO., LTD.", "LAND" }, { 0x0060B7, "CHANNELMATIC, INC.", "CHANNELMATIC" }, { 0x0060B8, "CORELIS Inc.", "CORELIS" }, { 0x0060B9, "NEC Infrontia Corporation", "NEC-INFRONTIA" }, { 0x0060BA, "SAHARA NETWORKS, INC.", "SAHARA-NETWORKS" }, { 0x0060BB, "CABLETRON - NETLINK, INC.", "CABLETRON---NETLINK" }, { 0x0060BC, "KeunYoung Electronics & Communication Co., Ltd.", "KEUNYOUNG-ELECTRONICS-COMMUNICATION" }, { 0x0060BD, "HUBBELL-PULSECOM", "HUBBELL-PULSECOM" }, { 0x0060BE, "WEBTRONICS", "WEBTRONICS" }, { 0x0060BF, "MACRAIGOR SYSTEMS, INC.", "MACRAIGOR" }, { 0x0060C0, "Nera Networks AS", "NERA-NETWORKS-AS" }, { 0x0060C1, "WaveSpan Corporation", "WAVESPAN" }, { 0x0060C2, "MPL AG", "MPL" }, { 0x0060C3, "NETVISION CORPORATION", "NETVISION" }, { 0x0060C4, "SOLITON SYSTEMS K.K.", "SOLITON-K-K" }, { 0x0060C5, "ANCOT CORP.", "ANCOT" }, { 0x0060C6, "DCS AG", "DCS" }, { 0x0060C7, "AMATI COMMUNICATIONS CORP.", "AMATI-COMMUNICATION" }, { 0x0060C8, "KUKA WELDING SYSTEMS & ROBOTS", "KUKA-WELDING-ROBOTS" }, { 0x0060C9, "ControlNet, Inc.", "CONTROLNET" }, { 0x0060CA, "HARMONIC SYSTEMS INCORPORATED", "HARMONIC-INCORPORATED" }, { 0x0060CB, "HITACHI ZOSEN CORPORATION", "HITACHI-ZOSEN" }, { 0x0060CC, "EMTRAK, INCORPORATED", "EMTRAK-INCORPORATED" }, { 0x0060CD, "VideoServer, Inc.", "VIDEOSERVER" }, { 0x0060CE, "ACCLAIM COMMUNICATIONS", "ACCLAIM-COMMUNICATION" }, { 0x0060CF, "ALTEON NETWORKS, INC.", "ALTEON-NETWORKS" }, { 0x0060D0, "SNMP RESEARCH INCORPORATED", "SNMP-RESEARCH-INCORPORATED" }, { 0x0060D1, "CASCADE COMMUNICATIONS", "CASCADE-COMMUNICATION" }, { 0x0060D2, "LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD.", "LUCENT-TECHNOLOGIES-TAIWAN-TELECOMMUNICATIONS" }, { 0x0060D3, "AT&T", "AT-T" }, { 0x0060D4, "ELDAT COMMUNICATION LTD.", "ELDAT-COMMUNICATION" }, { 0x0060D5, "MIYACHI TECHNOS CORP.", "MIYACHI-TECHNOS" }, { 0x0060D6, "NovAtel Wireless Technologies Ltd.", "NOVATEL-WIRELESS-TECHNOLOGIES" }, { 0x0060D7, "ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)", "ECOLE-POLYTECHNIQUE-FEDERALE-DE-LAUSANNE-EPFL" }, { 0x0060D8, "ELMIC SYSTEMS, INC.", "ELMIC" }, { 0x0060D9, "TRANSYS NETWORKS INC.", "TRANSYS-NETWORKS" }, { 0x0060DA, "JBM ELECTRONICS CO.", "JBM-ELECTRONICS" }, { 0x0060DB, "NTP ELEKTRONIK A/S", "NTP-ELEKTRONIK-A/S" }, { 0x0060DC, "Toyo Network Systems & System Integration Co. LTD", "TOYO-NETWORK-SYSTEM-INTEGRATION" }, { 0x0060DD, "MYRICOM, INC.", "MYRICOM" }, { 0x0060DE, "Kayser-Threde GmbH", "KAYSER-THREDE" }, { 0x0060DF, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x0060E0, "AXIOM TECHNOLOGY CO., LTD.", "AXIOM" }, { 0x0060E1, "ORCKIT COMMUNICATIONS LTD.", "ORCKIT-COMMUNICATION" }, { 0x0060E2, "QUEST ENGINEERING & DEVELOPMENT", "QUEST-ENGINEERING-DEVELOPMENT" }, { 0x0060E3, "ARBIN INSTRUMENTS", "ARBIN-INSTRUMENTS" }, { 0x0060E4, "COMPUSERVE, INC.", "COMPUSERVE" }, { 0x0060E5, "FUJI AUTOMATION CO., LTD.", "FUJI-AUTOMATION" }, { 0x0060E6, "SHOMITI SYSTEMS INCORPORATED", "SHOMITI-INCORPORATED" }, { 0x0060E7, "RANDATA", "RANDATA" }, { 0x0060E8, "HITACHI COMPUTER PRODUCTS (AMERICA), INC.", "HITACHI-PRODUCTS-AMERICA" }, { 0x0060E9, "ATOP TECHNOLOGIES, INC.", "ATOP-TECHNOLOGIES" }, { 0x0060EA, "StreamLogic", "STREAMLOGIC" }, { 0x0060EB, "FOURTHTRACK SYSTEMS", "FOURTHTRACK" }, { 0x0060EC, "HERMARY OPTO ELECTRONICS INC.", "HERMARY-OPTO-ELECTRONICS" }, { 0x0060ED, "RICARDO TEST AUTOMATION LTD.", "RICARDO-TEST-AUTOMATION" }, { 0x0060EE, "APOLLO", "APOLLO" }, { 0x0060EF, "FLYTECH TECHNOLOGY CO., LTD.", "FLYTECH" }, { 0x0060F0, "JOHNSON & JOHNSON MEDICAL, INC", "JOHNSON-JOHNSON-MEDICAL" }, { 0x0060F1, "EXP COMPUTER, INC.", "EXP" }, { 0x0060F2, "LASERGRAPHICS, INC.", "LASERGRAPHICS" }, { 0x0060F3, "Performance Analysis Broadband, Spirent plc", "PERFORMANCE-ANALYSIS-BROADBAND-SPIRENT-PLC" }, { 0x0060F4, "ADVANCED COMPUTER SOLUTIONS, Inc.", "ADVANCED-SOLUTIONS" }, { 0x0060F5, "ICON WEST, INC.", "ICON-WEST" }, { 0x0060F6, "NEXTEST COMMUNICATIONS PRODUCTS, INC.", "NEXTEST-COMMUNICATION-PRODUCTS" }, { 0x0060F7, "DATAFUSION SYSTEMS", "DATAFUSION" }, { 0x0060F8, "Loran International Technologies Inc.", "LORAN-TECHNOLOGIES" }, { 0x0060F9, "DIAMOND LANE COMMUNICATIONS", "DIAMOND-LANE-COMMUNICATION" }, { 0x0060FA, "EDUCATIONAL TECHNOLOGY RESOURCES, INC.", "EDUCATIONAL-RESOURCES" }, { 0x0060FB, "PACKETEER, INC.", "PACKETEER" }, { 0x0060FC, "CONSERVATION THROUGH INNOVATION LTD.", "CONSERVATION-THROUGH-INNOVATION" }, { 0x0060FD, "NetICs, Inc.", "NETICS" }, { 0x0060FE, "LYNX SYSTEM DEVELOPERS, INC.", "LYNX-SYSTEM-DEVELOPERS" }, { 0x0060FF, "QuVis, Inc.", "QUVIS" }, { 0x006440, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0064A6, "Maquet CardioVascular", "MAQUET-CARDIOVASCULAR" }, { 0x00664B, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x006B9E, "VIZIO Inc", "VIZIO" }, { 0x006BA0, "SHENZHEN UNIVERSAL INTELLISYS PTE LTD", "SHENZHEN-UNIVERSAL-INTELLISYS-PTE" }, { 0x006DFB, "Vutrix (UK) Ltd", "VUTRIX-UK" }, { 0x0070B0, "M/A-COM INC. COMPANIES", "M/A-COM-COMPANIES" }, { 0x0070B3, "DATA RECALL LTD.", "DATA-RECALL" }, { 0x00738D, "Tinno Mobile Technology Corp", "TINNO-MOBILE" }, { 0x0073E0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0075E1, "Ampt, LLC", "AMPT-LLC" }, { 0x00789E, "SAGEMCOM", "SAGEMCOM" }, { 0x007DFA, "Volkswagen Group of America", "VOLKSWAGEN-GROUP-OF-AMERICA" }, { 0x007F28, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x008000, "MULTITECH SYSTEMS, INC.", "MULTITECH" }, { 0x008001, "PERIPHONICS CORPORATION", "PERIPHONICS" }, { 0x008002, "SATELCOM (UK) LTD", "SATELCOM-UK" }, { 0x008003, "HYTEC ELECTRONICS LTD.", "HYTEC-ELECTRONICS" }, { 0x008004, "ANTLOW COMMUNICATIONS, LTD.", "ANTLOW-COMMUNICATION" }, { 0x008005, "CACTUS COMPUTER INC.", "CACTUS" }, { 0x008006, "COMPUADD CORPORATION", "COMPUADD" }, { 0x008007, "DLOG NC-SYSTEME", "DLOG-NC-SYSTEME" }, { 0x008008, "DYNATECH COMPUTER SYSTEMS", "DYNATECH" }, { 0x008009, "JUPITER SYSTEMS, INC.", "JUPITER" }, { 0x00800A, "JAPAN COMPUTER CORP.", "JAPAN" }, { 0x00800B, "CSK CORPORATION", "CSK" }, { 0x00800C, "VIDECOM LIMITED", "VIDECOM" }, { 0x00800D, "VOSSWINKEL F.U.", "VOSSWINKEL-F-U" }, { 0x00800E, "ATLANTIX CORPORATION", "ATLANTIX" }, { 0x00800F, "STANDARD MICROSYSTEMS", "STANDARD-MICROSYSTEMS" }, { 0x008010, "COMMODORE INTERNATIONAL", "COMMODORE" }, { 0x008011, "DIGITAL SYSTEMS INT'L. INC.", "DIGITAL" }, { 0x008012, "INTEGRATED MEASUREMENT SYSTEMS", "INTEGRATED-MEASUREMENT" }, { 0x008013, "THOMAS-CONRAD CORPORATION", "THOMAS-CONRAD" }, { 0x008014, "ESPRIT SYSTEMS", "ESPRIT" }, { 0x008015, "SEIKO SYSTEMS, INC.", "SEIKO" }, { 0x008016, "WANDEL AND GOLTERMANN", "WANDEL-AND-GOLTERMANN" }, { 0x008017, "PFU LIMITED", "PFU" }, { 0x008018, "KOBE STEEL, LTD.", "KOBE-STEEL" }, { 0x008019, "DAYNA COMMUNICATIONS, INC.", "DAYNA-COMMUNICATION" }, { 0x00801A, "BELL ATLANTIC", "BELL-ATLANTIC" }, { 0x00801B, "KODIAK TECHNOLOGY", "KODIAK" }, { 0x00801C, "NEWPORT SYSTEMS SOLUTIONS", "NEWPORT-SOLUTIONS" }, { 0x00801D, "INTEGRATED INFERENCE MACHINES", "INTEGRATED-INFERENCE-MACHINES" }, { 0x00801E, "XINETRON, INC.", "XINETRON" }, { 0x00801F, "KRUPP ATLAS ELECTRONIK GMBH", "KRUPP-ATLAS-ELECTRONIK" }, { 0x008020, "NETWORK PRODUCTS", "NETWORK-PRODUCTS" }, { 0x008021, "Alcatel Canada Inc.", "ALCATEL-CANADA" }, { 0x008022, "SCAN-OPTICS", "SCAN-OPTICS" }, { 0x008023, "INTEGRATED BUSINESS NETWORKS", "INTEGRATED-BUSINESS-NETWORKS" }, { 0x008024, "KALPANA, INC.", "KALPANA" }, { 0x008025, "STOLLMANN GMBH", "STOLLMANN" }, { 0x008026, "NETWORK PRODUCTS CORPORATION", "NETWORK-PRODUCTS" }, { 0x008027, "ADAPTIVE SYSTEMS, INC.", "ADAPTIVE" }, { 0x008028, "TRADPOST (HK) LTD", "TRADPOST-HK" }, { 0x008029, "EAGLE TECHNOLOGY, INC.", "EAGLE" }, { 0x00802A, "TEST SYSTEMS & SIMULATIONS INC", "TEST-SIMULATIONS" }, { 0x00802B, "INTEGRATED MARKETING CO", "INTEGRATED-MARKETING" }, { 0x00802C, "THE SAGE GROUP PLC", "THE-SAGE-GROUP-PLC" }, { 0x00802D, "XYLOGICS INC", "XYLOGICS" }, { 0x00802E, "CASTLE ROCK COMPUTING", "CASTLE-ROCK-COMPUTING" }, { 0x00802F, "NATIONAL INSTRUMENTS CORP.", "NATIONAL-INSTRUMENTS" }, { 0x008030, "NEXUS ELECTRONICS", "NEXUS-ELECTRONICS" }, { 0x008031, "BASYS, CORP.", "BASYS" }, { 0x008032, "ACCESS CO., LTD.", "ACCESS" }, { 0x008033, "EMS Aviation, Inc.", "EMS-AVIATION" }, { 0x008034, "SMT GOUPIL", "SMT-GOUPIL" }, { 0x008035, "TECHNOLOGY WORKS, INC.", "WORKS" }, { 0x008036, "REFLEX MANUFACTURING SYSTEMS", "REFLEX-MANUFACTURING" }, { 0x008037, "Ericsson Group", "ERICSSON-GROUP" }, { 0x008038, "DATA RESEARCH & APPLICATIONS", "DATA-RESEARCH-APPLICATIONS" }, { 0x008039, "ALCATEL STC AUSTRALIA", "ALCATEL-STC-AUSTRALIA" }, { 0x00803A, "VARITYPER, INC.", "VARITYPER" }, { 0x00803B, "APT COMMUNICATIONS, INC.", "APT-COMMUNICATION" }, { 0x00803C, "TVS ELECTRONICS LTD", "TVS-ELECTRONICS" }, { 0x00803D, "SURIGIKEN CO., LTD.", "SURIGIKEN" }, { 0x00803E, "SYNERNETICS", "SYNERNETICS" }, { 0x00803F, "TATUNG COMPANY", "TATUNG-COMPANY" }, { 0x008040, "JOHN FLUKE MANUFACTURING CO.", "JOHN-FLUKE-MANUFACTURING" }, { 0x008041, "VEB KOMBINAT ROBOTRON", "VEB-KOMBINAT-ROBOTRON" }, { 0x008042, "Emerson Network Power", "EMERSON-NETWORK-POWER" }, { 0x008043, "NETWORLD, INC.", "NETWORLD" }, { 0x008044, "SYSTECH COMPUTER CORP.", "SYSTECH" }, { 0x008045, "MATSUSHITA ELECTRIC IND. CO", "MATSUSHITA-ELECTRIC-IND" }, { 0x008046, "Tattile SRL", "TATTILE-SRL" }, { 0x008047, "IN-NET CORP.", "IN-NET" }, { 0x008048, "COMPEX INCORPORATED", "COMPEX-INCORPORATED" }, { 0x008049, "NISSIN ELECTRIC CO., LTD.", "NISSIN-ELECTRIC" }, { 0x00804A, "PRO-LOG", "PRO-LOG" }, { 0x00804B, "EAGLE TECHNOLOGIES PTY.LTD.", "EAGLE-TECHNOLOGIES-PTY" }, { 0x00804C, "CONTEC CO., LTD.", "CONTEC" }, { 0x00804D, "CYCLONE MICROSYSTEMS, INC.", "CYCLONE-MICROSYSTEMS" }, { 0x00804E, "APEX COMPUTER COMPANY", "APEX-COMPANY" }, { 0x00804F, "DAIKIN INDUSTRIES, LTD.", "DAIKIN-INDUSTRIES" }, { 0x008050, "ZIATECH CORPORATION", "ZIATECH" }, { 0x008051, "FIBERMUX", "FIBERMUX" }, { 0x008052, "TECHNICALLY ELITE CONCEPTS", "TECHNICALLY-ELITE-CONCEPTS" }, { 0x008053, "INTELLICOM, INC.", "INTELLICOM" }, { 0x008054, "FRONTIER TECHNOLOGIES CORP.", "FRONTIER-TECHNOLOGIES" }, { 0x008055, "FERMILAB", "FERMILAB" }, { 0x008056, "SPHINX ELEKTRONIK GMBH", "SPHINX-ELEKTRONIK" }, { 0x008057, "ADSOFT, LTD.", "ADSOFT" }, { 0x008058, "PRINTER SYSTEMS CORPORATION", "PRINTER" }, { 0x008059, "STANLEY ELECTRIC CO., LTD", "STANLEY-ELECTRIC" }, { 0x00805A, "TULIP COMPUTERS INTERNAT'L B.V", "TULIP-COMPUTERS-INTERNAT-L" }, { 0x00805B, "CONDOR SYSTEMS, INC.", "CONDOR" }, { 0x00805C, "AGILIS CORPORATION", "AGILIS" }, { 0x00805D, "CANSTAR", "CANSTAR" }, { 0x00805E, "LSI LOGIC CORPORATION", "LSI-LOGIC" }, { 0x00805F, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x008060, "NETWORK INTERFACE CORPORATION", "NETWORK-INTERFACE" }, { 0x008061, "LITTON SYSTEMS, INC.", "LITTON" }, { 0x008062, "INTERFACE CO.", "INTERFACE" }, { 0x008063, "Hirschmann Automation and Control GmbH", "HIRSCHMANN-AUTOMATION-AND-CONTROL" }, { 0x008064, "WYSE TECHNOLOGY LLC", "WYSE-LLC" }, { 0x008065, "CYBERGRAPHIC SYSTEMS PTY LTD.", "CYBERGRAPHIC-PTY" }, { 0x008066, "ARCOM CONTROL SYSTEMS, LTD.", "ARCOM-CONTROL" }, { 0x008067, "SQUARE D COMPANY", "SQUARE-D-COMPANY" }, { 0x008068, "YAMATECH SCIENTIFIC LTD.", "YAMATECH-SCIENTIFIC" }, { 0x008069, "COMPUTONE SYSTEMS", "COMPUTONE" }, { 0x00806A, "ERI (EMPAC RESEARCH INC.)", "ERI-EMPAC-RESEARCH" }, { 0x00806B, "SCHMID TELECOMMUNICATION", "SCHMID-TELECOMMUNICATION" }, { 0x00806C, "CEGELEC PROJECTS LTD", "CEGELEC-PROJECTS" }, { 0x00806D, "CENTURY SYSTEMS CORP.", "CENTURY" }, { 0x00806E, "NIPPON STEEL CORPORATION", "NIPPON-STEEL" }, { 0x00806F, "ONELAN LTD.", "ONELAN" }, { 0x008070, "COMPUTADORAS MICRON", "COMPUTADORAS-MICRON" }, { 0x008071, "SAI TECHNOLOGY", "SAI" }, { 0x008072, "MICROPLEX SYSTEMS LTD.", "MICROPLEX" }, { 0x008073, "DWB ASSOCIATES", "DWB-ASSOCIATES" }, { 0x008074, "FISHER CONTROLS", "FISHER-CONTROLS" }, { 0x008075, "PARSYTEC GMBH", "PARSYTEC" }, { 0x008076, "MCNC", "MCNC" }, { 0x008077, "BROTHER INDUSTRIES, LTD.", "BROTHER-INDUSTRIES" }, { 0x008078, "PRACTICAL PERIPHERALS, INC.", "PRACTICAL-PERIPHERALS" }, { 0x008079, "MICROBUS DESIGNS LTD.", "MICROBUS-DESIGNS" }, { 0x00807A, "AITECH SYSTEMS LTD.", "AITECH" }, { 0x00807B, "ARTEL COMMUNICATIONS CORP.", "ARTEL-COMMUNICATION" }, { 0x00807C, "FIBERCOM, INC.", "FIBERCOM" }, { 0x00807D, "EQUINOX SYSTEMS INC.", "EQUINOX" }, { 0x00807E, "SOUTHERN PACIFIC LTD.", "SOUTHERN-PACIFIC" }, { 0x00807F, "DY-4 INCORPORATED", "DY-4-INCORPORATED" }, { 0x008080, "DATAMEDIA CORPORATION", "DATAMEDIA" }, { 0x008081, "KENDALL SQUARE RESEARCH CORP.", "KENDALL-SQUARE-RESEARCH" }, { 0x008082, "PEP MODULAR COMPUTERS GMBH", "PEP-MODULAR-COMPUTERS" }, { 0x008083, "AMDAHL", "AMDAHL" }, { 0x008084, "THE CLOUD INC.", "THE-CLOUD" }, { 0x008085, "H-THREE SYSTEMS CORPORATION", "H-THREE" }, { 0x008086, "COMPUTER GENERATION INC.", "GENERATION" }, { 0x008087, "OKI ELECTRIC INDUSTRY CO., LTD", "OKI-ELECTRIC-INDUSTRY" }, { 0x008088, "VICTOR COMPANY OF JAPAN, LTD.", "VICTOR-COMPANY-OF-JAPAN" }, { 0x008089, "TECNETICS (PTY) LTD.", "TECNETICS-PTY" }, { 0x00808A, "SUMMIT MICROSYSTEMS CORP.", "SUMMIT-MICROSYSTEMS" }, { 0x00808B, "DACOLL LIMITED", "DACOLL" }, { 0x00808C, "NetScout Systems, Inc.", "NETSCOUT" }, { 0x00808D, "WESTCOAST TECHNOLOGY B.V.", "WESTCOAST" }, { 0x00808E, "RADSTONE TECHNOLOGY", "RADSTONE" }, { 0x00808F, "C. ITOH ELECTRONICS, INC.", "C-ITOH-ELECTRONICS" }, { 0x008090, "MICROTEK INTERNATIONAL, INC.", "MICROTEK" }, { 0x008091, "TOKYO ELECTRIC CO.,LTD", "TOKYO-ELECTRIC" }, { 0x008092, "Silex Technology, Inc.", "SILEX" }, { 0x008093, "XYRON CORPORATION", "XYRON" }, { 0x008094, "ALFA LAVAL AUTOMATION AB", "ALFA-LAVAL-AUTOMATION-AB" }, { 0x008095, "BASIC MERTON HANDELSGES.M.B.H.", "BASIC-MERTON-HANDELSGES-M-B-H" }, { 0x008096, "HUMAN DESIGNED SYSTEMS, INC.", "HUMAN-DESIGNED" }, { 0x008097, "CENTRALP AUTOMATISMES", "CENTRALP-AUTOMATISMES" }, { 0x008098, "TDK CORPORATION", "TDK" }, { 0x008099, "Eaton Industries GmbH", "EATON-INDUSTRIES" }, { 0x00809A, "NOVUS NETWORKS LTD", "NOVUS-NETWORKS" }, { 0x00809B, "JUSTSYSTEM CORPORATION", "JUSTSYSTEM" }, { 0x00809C, "LUXCOM, INC.", "LUXCOM" }, { 0x00809D, "Commscraft Ltd.", "COMMSCRAFT" }, { 0x00809E, "DATUS GMBH", "DATUS" }, { 0x00809F, "ALCATEL BUSINESS SYSTEMS", "ALCATEL-BUSINESS" }, { 0x0080A0, "EDISA HEWLETT PACKARD S/A", "EDISA-HEWLETT-PACKARD-S/A" }, { 0x0080A1, "MICROTEST, INC.", "MICROTEST" }, { 0x0080A2, "CREATIVE ELECTRONIC SYSTEMS", "CREATIVE" }, { 0x0080A3, "Lantronix", "LANTRONIX" }, { 0x0080A4, "LIBERTY ELECTRONICS", "LIBERTY-ELECTRONICS" }, { 0x0080A5, "SPEED INTERNATIONAL", "SPEED" }, { 0x0080A6, "REPUBLIC TECHNOLOGY, INC.", "REPUBLIC" }, { 0x0080A7, "Honeywell International Inc", "HONEYWELL" }, { 0x0080A8, "VITACOM CORPORATION", "VITACOM" }, { 0x0080A9, "CLEARPOINT RESEARCH", "CLEARPOINT-RESEARCH" }, { 0x0080AA, "MAXPEED", "MAXPEED" }, { 0x0080AB, "DUKANE NETWORK INTEGRATION", "DUKANE-NETWORK-INTEGRATION" }, { 0x0080AC, "IMLOGIX, DIVISION OF GENESYS", "IMLOGIX-DIVISION-OF-GENESYS" }, { 0x0080AD, "CNET TECHNOLOGY, INC.", "CNET" }, { 0x0080AE, "HUGHES NETWORK SYSTEMS", "HUGHES-NETWORK" }, { 0x0080AF, "ALLUMER CO., LTD.", "ALLUMER" }, { 0x0080B0, "ADVANCED INFORMATION", "ADVANCED-INFORMATION" }, { 0x0080B1, "SOFTCOM A/S", "SOFTCOM-A/S" }, { 0x0080B2, "NETWORK EQUIPMENT TECHNOLOGIES", "NETWORK-EQUIPMENT-TECHNOLOGIES" }, { 0x0080B3, "AVAL DATA CORPORATION", "AVAL-DATA" }, { 0x0080B4, "SOPHIA SYSTEMS", "SOPHIA" }, { 0x0080B5, "UNITED NETWORKS INC.", "UNITED-NETWORKS" }, { 0x0080B6, "THEMIS COMPUTER", "THEMIS" }, { 0x0080B7, "STELLAR COMPUTER", "STELLAR" }, { 0x0080B8, "B.U.G. MORISEIKI, INCORPORATED", "B-U-G-MORISEIKI-INCORPORATED" }, { 0x0080B9, "ARCHE TECHNOLIGIES INC.", "ARCHE-TECHNOLIGIES" }, { 0x0080BA, "SPECIALIX (ASIA) PTE, LTD", "SPECIALIX-ASIA-PTE" }, { 0x0080BB, "HUGHES LAN SYSTEMS", "HUGHES-LAN" }, { 0x0080BC, "HITACHI ENGINEERING CO., LTD", "HITACHI-ENGINEERING" }, { 0x0080BD, "THE FURUKAWA ELECTRIC CO., LTD", "THE-FURUKAWA-ELECTRIC" }, { 0x0080BE, "ARIES RESEARCH", "ARIES-RESEARCH" }, { 0x0080BF, "TAKAOKA ELECTRIC MFG. CO. LTD.", "TAKAOKA-ELECTRIC-MFG" }, { 0x0080C0, "PENRIL DATACOMM", "PENRIL-DATACOMM" }, { 0x0080C1, "LANEX CORPORATION", "LANEX" }, { 0x0080C2, "IEEE 802.1 COMMITTEE", "IEEE-802-1-COMMITTEE" }, { 0x0080C3, "BICC INFORMATION SYSTEMS & SVC", "BICC-INFORMATION-SVC" }, { 0x0080C4, "DOCUMENT TECHNOLOGIES, INC.", "DOCUMENT-TECHNOLOGIES" }, { 0x0080C5, "NOVELLCO DE MEXICO", "NOVELLCO-DE-MEXICO" }, { 0x0080C6, "NATIONAL DATACOMM CORPORATION", "NATIONAL-DATACOMM" }, { 0x0080C7, "XIRCOM", "XIRCOM" }, { 0x0080C8, "D-LINK SYSTEMS, INC.", "D-LINK" }, { 0x0080C9, "ALBERTA MICROELECTRONIC CENTRE", "ALBERTA-MICROELECTRONIC-CENTRE" }, { 0x0080CA, "NETCOM RESEARCH INCORPORATED", "NETCOM-RESEARCH-INCORPORATED" }, { 0x0080CB, "FALCO DATA PRODUCTS", "FALCO-DATA-PRODUCTS" }, { 0x0080CC, "MICROWAVE BYPASS SYSTEMS", "MICROWAVE-BYPASS" }, { 0x0080CD, "MICRONICS COMPUTER, INC.", "MICRONICS" }, { 0x0080CE, "BROADCAST TELEVISION SYSTEMS", "BROADCAST-TELEVISION" }, { 0x0080CF, "EMBEDDED PERFORMANCE INC.", "EMBEDDED-PERFORMANCE" }, { 0x0080D0, "COMPUTER PERIPHERALS, INC.", "PERIPHERALS" }, { 0x0080D1, "KIMTRON CORPORATION", "KIMTRON" }, { 0x0080D2, "SHINNIHONDENKO CO., LTD.", "SHINNIHONDENKO" }, { 0x0080D3, "SHIVA CORP.", "SHIVA" }, { 0x0080D4, "CHASE RESEARCH LTD.", "CHASE-RESEARCH" }, { 0x0080D5, "CADRE TECHNOLOGIES", "CADRE-TECHNOLOGIES" }, { 0x0080D6, "NUVOTECH, INC.", "NUVOTECH" }, { 0x0080D7, "Fantum Engineering", "FANTUM-ENGINEERING" }, { 0x0080D8, "NETWORK PERIPHERALS INC.", "NETWORK-PERIPHERALS" }, { 0x0080D9, "EMK Elektronik GmbH & Co. KG", "EMK-ELEKTRONIK" }, { 0x0080DA, "Bruel & Kjaer Sound & Vibration Measurement A/S", "BRUEL-KJAER-SOUND-VIBRATION-MEASUREMENT-A/S" }, { 0x0080DB, "GRAPHON CORPORATION", "GRAPHON" }, { 0x0080DC, "PICKER INTERNATIONAL", "PICKER" }, { 0x0080DD, "GMX INC/GIMIX", "GMX-/GIMIX" }, { 0x0080DE, "GIPSI S.A.", "GIPSI" }, { 0x0080DF, "ADC CODENOLL TECHNOLOGY CORP.", "ADC-CODENOLL" }, { 0x0080E0, "XTP SYSTEMS, INC.", "XTP" }, { 0x0080E1, "STMICROELECTRONICS", "STMICROELECTRONICS" }, { 0x0080E2, "T.D.I. CO., LTD.", "T-D-I" }, { 0x0080E3, "CORAL NETWORK CORPORATION", "CORAL-NETWORK" }, { 0x0080E4, "NORTHWEST DIGITAL SYSTEMS, INC", "NORTHWEST-DIGITAL" }, { 0x0080E5, "NetApp, Inc", "NETAPP" }, { 0x0080E6, "PEER NETWORKS, INC.", "PEER-NETWORKS" }, { 0x0080E7, "LYNWOOD SCIENTIFIC DEV. LTD.", "LYNWOOD-SCIENTIFIC-DEV" }, { 0x0080E8, "CUMULUS CORPORATIION", "CUMULUS-CORPORATIION" }, { 0x0080E9, "Madge Ltd.", "MADGE" }, { 0x0080EA, "ADVA Optical Networking Ltd.", "ADVA-OPTICAL-NETWORKING" }, { 0x0080EB, "COMPCONTROL B.V.", "COMPCONTROL" }, { 0x0080EC, "SUPERCOMPUTING SOLUTIONS, INC.", "SUPERCOMPUTING-SOLUTIONS" }, { 0x0080ED, "IQ TECHNOLOGIES, INC.", "IQ-TECHNOLOGIES" }, { 0x0080EE, "THOMSON CSF", "THOMSON-CSF" }, { 0x0080EF, "RATIONAL", "RATIONAL" }, { 0x0080F0, "Panasonic Communications Co., Ltd.", "PANASONIC-COMMUNICATION" }, { 0x0080F1, "OPUS SYSTEMS", "OPUS" }, { 0x0080F2, "RAYCOM SYSTEMS INC", "RAYCOM" }, { 0x0080F3, "SUN ELECTRONICS CORP.", "SUN-ELECTRONICS" }, { 0x0080F4, "TELEMECANIQUE ELECTRIQUE", "TELEMECANIQUE-ELECTRIQUE" }, { 0x0080F5, "Quantel Ltd", "QUANTEL" }, { 0x0080F6, "SYNERGY MICROSYSTEMS", "SYNERGY-MICROSYSTEMS" }, { 0x0080F7, "ZENITH ELECTRONICS", "ZENITH-ELECTRONICS" }, { 0x0080F8, "MIZAR, INC.", "MIZAR" }, { 0x0080F9, "HEURIKON CORPORATION", "HEURIKON" }, { 0x0080FA, "RWT GMBH", "RWT" }, { 0x0080FB, "BVM LIMITED", "BVM" }, { 0x0080FC, "AVATAR CORPORATION", "AVATAR" }, { 0x0080FD, "EXSCEED CORPRATION", "EXSCEED-CORPRATION" }, { 0x0080FE, "AZURE TECHNOLOGIES, INC.", "AZURE-TECHNOLOGIES" }, { 0x0080FF, "SOC. DE TELEINFORMATIQUE RTC", "SOC-DE-TELEINFORMATIQUE-RTC" }, { 0x0086A0, "PRIVATE", "PRIVATE" }, { 0x008865, "Apple", "APPLE" }, { 0x008B43, "RFTECH", "RFTECH" }, { 0x008C10, "Black Box Corp.", "BLACK-BOX" }, { 0x008C54, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x008CFA, "Inventec Corporation", "INVENTEC" }, { 0x008D4E, "CJSC NII STT", "CJSC-NII-STT" }, { 0x008DDA, "Link One Co., Ltd.", "LINK-ONE" }, { 0x008EF2, "NETGEAR INC.,", "NETGEAR" }, { 0x009000, "DIAMOND MULTIMEDIA", "DIAMOND-MULTIMEDIA" }, { 0x009001, "NISHIMU ELECTRONICS INDUSTRIES CO., LTD.", "NISHIMU-ELECTRONICS-INDUSTRIES" }, { 0x009002, "ALLGON AB", "ALLGON-AB" }, { 0x009003, "APLIO", "APLIO" }, { 0x009004, "3COM EUROPE LTD.", "3COM" }, { 0x009005, "PROTECH SYSTEMS CO., LTD.", "PROTECH" }, { 0x009006, "HAMAMATSU PHOTONICS K.K.", "HAMAMATSU-PHOTONICS-K-K" }, { 0x009007, "DOMEX TECHNOLOGY CORP.", "DOMEX" }, { 0x009008, "HanA Systems Inc.", "HANA" }, { 0x009009, "I Controls, Inc.", "I-CONTROLS" }, { 0x00900A, "PROTON ELECTRONIC INDUSTRIAL CO., LTD.", "PROTON-INDUSTRIAL" }, { 0x00900B, "LANNER ELECTRONICS, INC.", "LANNER-ELECTRONICS" }, { 0x00900C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00900D, "Overland Storage Inc.", "OVERLAND-STORAGE" }, { 0x00900E, "HANDLINK TECHNOLOGIES, INC.", "HANDLINK-TECHNOLOGIES" }, { 0x00900F, "KAWASAKI HEAVY INDUSTRIES, LTD", "KAWASAKI-HEAVY-INDUSTRIES" }, { 0x009010, "SIMULATION LABORATORIES, INC.", "SIMULATION-LABORATORIES" }, { 0x009011, "WAVTrace, Inc.", "WAVTRACE" }, { 0x009012, "GLOBESPAN SEMICONDUCTOR, INC.", "GLOBESPAN-SEMICONDUCTOR" }, { 0x009013, "SAMSAN CORP.", "SAMSAN" }, { 0x009014, "ROTORK INSTRUMENTS, LTD.", "ROTORK-INSTRUMENTS" }, { 0x009015, "CENTIGRAM COMMUNICATIONS CORP.", "CENTIGRAM-COMMUNICATION" }, { 0x009016, "ZAC", "ZAC" }, { 0x009017, "Zypcom, Inc", "ZYPCOM" }, { 0x009018, "ITO ELECTRIC INDUSTRY CO, LTD.", "ITO-ELECTRIC-INDUSTRY" }, { 0x009019, "HERMES ELECTRONICS CO., LTD.", "HERMES-ELECTRONICS" }, { 0x00901A, "UNISPHERE SOLUTIONS", "UNISPHERE-SOLUTIONS" }, { 0x00901B, "DIGITAL CONTROLS", "DIGITAL-CONTROLS" }, { 0x00901C, "mps Software Gmbh", "MPS-SOFTWARE" }, { 0x00901D, "PEC (NZ) LTD.", "PEC-NZ" }, { 0x00901E, "Selesta Ingegneria S.p.A.", "SELESTA-INGEGNERIA-S-P-A" }, { 0x00901F, "ADTEC PRODUCTIONS, INC.", "ADTEC-PRODUCTIONS" }, { 0x009020, "PHILIPS ANALYTICAL X-RAY B.V.", "PHILIPS-ANALYTICAL-X-RAY" }, { 0x009021, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x009022, "IVEX", "IVEX" }, { 0x009023, "ZILOG INC.", "ZILOG" }, { 0x009024, "PIPELINKS, INC.", "PIPELINKS" }, { 0x009025, "BAE Systems Australia (Electronic Systems) Pty Ltd", "BAE-AUSTRALIA-PTY" }, { 0x009026, "ADVANCED SWITCHING COMMUNICATIONS, INC.", "ADVANCED-SWITCHING-COMMUNICATION" }, { 0x009027, "INTEL CORPORATION", "INTEL" }, { 0x009028, "NIPPON SIGNAL CO., LTD.", "NIPPON-SIGNAL" }, { 0x009029, "CRYPTO AG", "CRYPTO" }, { 0x00902A, "COMMUNICATION DEVICES, INC.", "COMMUNICATION-DEVICES" }, { 0x00902B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00902C, "DATA & CONTROL EQUIPMENT LTD.", "DATA-CONTROL-EQUIPMENT" }, { 0x00902D, "DATA ELECTRONICS (AUST.) PTY, LTD.", "DATA-ELECTRONICS-AUST-PTY" }, { 0x00902E, "NAMCO LIMITED", "NAMCO" }, { 0x00902F, "NETCORE SYSTEMS, INC.", "NETCORE" }, { 0x009030, "HONEYWELL-DATING", "HONEYWELL-DATING" }, { 0x009031, "MYSTICOM, LTD.", "MYSTICOM" }, { 0x009032, "PELCOMBE GROUP LTD.", "PELCOMBE-GROUP" }, { 0x009033, "INNOVAPHONE AG", "INNOVAPHONE" }, { 0x009034, "IMAGIC, INC.", "IMAGIC" }, { 0x009035, "ALPHA TELECOM, INC.", "ALPHA-TELECOM" }, { 0x009036, "ens, inc.", "ENS" }, { 0x009037, "ACUCOMM, INC.", "ACUCOMM" }, { 0x009038, "FOUNTAIN TECHNOLOGIES, INC.", "FOUNTAIN-TECHNOLOGIES" }, { 0x009039, "SHASTA NETWORKS", "SHASTA-NETWORKS" }, { 0x00903A, "NIHON MEDIA TOOL INC.", "NIHON-MEDIA-TOOL" }, { 0x00903B, "TriEMS Research Lab, Inc.", "TRIEMS-RESEARCH-LAB" }, { 0x00903C, "ATLANTIC NETWORK SYSTEMS", "ATLANTIC-NETWORK" }, { 0x00903D, "BIOPAC SYSTEMS, INC.", "BIOPAC" }, { 0x00903E, "N.V. PHILIPS INDUSTRIAL ACTIVITIES", "N-V-PHILIPS-INDUSTRIAL-ACTIVITIES" }, { 0x00903F, "AZTEC RADIOMEDIA", "AZTEC-RADIOMEDIA" }, { 0x009040, "Siemens Network Convergence LLC", "SIEMENS-NETWORK-CONVERGENCE-LLC" }, { 0x009041, "APPLIED DIGITAL ACCESS", "APPLIED-DIGITAL-ACCESS" }, { 0x009042, "ECCS, Inc.", "ECCS" }, { 0x009043, "Tattile SRL", "TATTILE-SRL" }, { 0x009044, "ASSURED DIGITAL, INC.", "ASSURED-DIGITAL" }, { 0x009045, "Marconi Communications", "MARCONI-COMMUNICATION" }, { 0x009046, "DEXDYNE, LTD.", "DEXDYNE" }, { 0x009047, "GIGA FAST E. LTD.", "GIGA-FAST-E" }, { 0x009048, "ZEAL CORPORATION", "ZEAL" }, { 0x009049, "ENTRIDIA CORPORATION", "ENTRIDIA" }, { 0x00904A, "CONCUR SYSTEM TECHNOLOGIES", "CONCUR-SYSTEM-TECHNOLOGIES" }, { 0x00904B, "GemTek Technology Co., Ltd.", "GEMTEK" }, { 0x00904C, "EPIGRAM, INC.", "EPIGRAM" }, { 0x00904D, "SPEC S.A.", "SPEC" }, { 0x00904E, "DELEM BV", "DELEM" }, { 0x00904F, "ABB POWER T&D COMPANY, INC.", "ABB-POWER-T-D-COMPANY" }, { 0x009050, "TELESTE OY", "TELESTE-OY" }, { 0x009051, "ULTIMATE TECHNOLOGY CORP.", "ULTIMATE" }, { 0x009052, "SELCOM ELETTRONICA S.R.L.", "SELCOM-ELETTRONICA-S-R-L" }, { 0x009053, "DAEWOO ELECTRONICS CO., LTD.", "DAEWOO-ELECTRONICS" }, { 0x009054, "INNOVATIVE SEMICONDUCTORS, INC", "INNOVATIVE-SEMICONDUCTORS" }, { 0x009055, "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION", "PARKER-HANNIFIN-COMPUMOTOR-DIVISION" }, { 0x009056, "TELESTREAM, INC.", "TELESTREAM" }, { 0x009057, "AANetcom, Inc.", "AANETCOM" }, { 0x009058, "Ultra Electronics Ltd., Command and Control Systems", "ULTRA-ELECTRONICS-COMMAND-AND-CONTROL" }, { 0x009059, "TELECOM DEVICE K.K.", "TELECOM-DEVICE-K-K" }, { 0x00905A, "DEARBORN GROUP, INC.", "DEARBORN-GROUP" }, { 0x00905B, "RAYMOND AND LAE ENGINEERING", "RAYMOND-AND-LAE-ENGINEERING" }, { 0x00905C, "EDMI", "EDMI" }, { 0x00905D, "NETCOM SICHERHEITSTECHNIK GmbH", "NETCOM-SICHERHEITSTECHNIK" }, { 0x00905E, "RAULAND-BORG CORPORATION", "RAULAND-BORG" }, { 0x00905F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x009060, "SYSTEM CREATE CORP.", "SYSTEM-CREATE" }, { 0x009061, "PACIFIC RESEARCH & ENGINEERING CORPORATION", "PACIFIC-RESEARCH-ENGINEERING" }, { 0x009062, "ICP VORTEX COMPUTERSYSTEME GmbH", "ICP-VORTEX-COMPUTERSYSTEME" }, { 0x009063, "COHERENT COMMUNICATIONS SYSTEMS CORPORATION", "COHERENT-COMMUNICATION" }, { 0x009064, "Thomson Inc.", "THOMSON" }, { 0x009065, "FINISAR CORPORATION", "FINISAR" }, { 0x009066, "Troika Networks, Inc.", "TROIKA-NETWORKS" }, { 0x009067, "WalkAbout Computers, Inc.", "WALKABOUT-COMPUTERS" }, { 0x009068, "DVT CORP.", "DVT" }, { 0x009069, "JUNIPER NETWORKS, INC.", "JUNIPER-NETWORKS" }, { 0x00906A, "TURNSTONE SYSTEMS, INC.", "TURNSTONE" }, { 0x00906B, "APPLIED RESOURCES, INC.", "APPLIED-RESOURCES" }, { 0x00906C, "Sartorius Hamburg GmbH", "SARTORIUS-HAMBURG" }, { 0x00906D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00906E, "PRAXON, INC.", "PRAXON" }, { 0x00906F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x009070, "NEO NETWORKS, INC.", "NEO-NETWORKS" }, { 0x009071, "Applied Innovation Inc.", "APPLIED-INNOVATION" }, { 0x009072, "SIMRAD AS", "SIMRAD-AS" }, { 0x009073, "GAIO TECHNOLOGY", "GAIO" }, { 0x009074, "ARGON NETWORKS, INC.", "ARGON-NETWORKS" }, { 0x009075, "NEC DO BRASIL S.A.", "NEC-DO-BRASIL" }, { 0x009076, "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB", "FMT-AIRCRAFT-GATE-SUPPORT-AB" }, { 0x009077, "ADVANCED FIBRE COMMUNICATIONS", "ADVANCED-FIBRE-COMMUNICATION" }, { 0x009078, "MER TELEMANAGEMENT SOLUTIONS, LTD.", "MER-TELEMANAGEMENT-SOLUTIONS" }, { 0x009079, "ClearOne, Inc.", "CLEARONE" }, { 0x00907A, "Spectralink, Inc", "SPECTRALINK" }, { 0x00907B, "E-TECH, INC.", "E-TECH" }, { 0x00907C, "DIGITALCAST, INC.", "DIGITALCAST" }, { 0x00907D, "Lake Communications", "LAKE-COMMUNICATION" }, { 0x00907E, "VETRONIX CORP.", "VETRONIX" }, { 0x00907F, "WatchGuard Technologies, Inc.", "WATCHGUARD-TECHNOLOGIES" }, { 0x009080, "NOT LIMITED, INC.", "NOT" }, { 0x009081, "ALOHA NETWORKS, INC.", "ALOHA-NETWORKS" }, { 0x009082, "FORCE INSTITUTE", "FORCE-INSTITUTE" }, { 0x009083, "TURBO COMMUNICATION, INC.", "TURBO-COMMUNICATION" }, { 0x009084, "ATECH SYSTEM", "ATECH-SYSTEM" }, { 0x009085, "GOLDEN ENTERPRISES, INC.", "GOLDEN-ENTERPRISES" }, { 0x009086, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x009087, "ITIS", "ITIS" }, { 0x009088, "BAXALL SECURITY LTD.", "BAXALL-SECURITY" }, { 0x009089, "SOFTCOM MICROSYSTEMS, INC.", "SOFTCOM-MICROSYSTEMS" }, { 0x00908A, "BAYLY COMMUNICATIONS, INC.", "BAYLY-COMMUNICATION" }, { 0x00908B, "Tattile SRL", "TATTILE-SRL" }, { 0x00908C, "ETREND ELECTRONICS, INC.", "ETREND-ELECTRONICS" }, { 0x00908D, "VICKERS ELECTRONICS SYSTEMS", "VICKERS-ELECTRONICS" }, { 0x00908E, "Nortel Networks Broadband Access", "NORTEL-NETWORKS-BROADBAND-ACCESS" }, { 0x00908F, "AUDIO CODES LTD.", "AUDIO-CODES" }, { 0x009090, "I-BUS", "I-BUS" }, { 0x009091, "DigitalScape, Inc.", "DIGITALSCAPE" }, { 0x009092, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x009093, "NANAO CORPORATION", "NANAO" }, { 0x009094, "OSPREY TECHNOLOGIES, INC.", "OSPREY-TECHNOLOGIES" }, { 0x009095, "UNIVERSAL AVIONICS", "UNIVERSAL-AVIONICS" }, { 0x009096, "ASKEY COMPUTER CORP.", "ASKEY" }, { 0x009097, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x009098, "SBC DESIGNS, INC.", "SBC-DESIGNS" }, { 0x009099, "ALLIED TELESIS, K.K.", "ALLIED-TELESIS-K-K" }, { 0x00909A, "ONE WORLD SYSTEMS, INC.", "ONE-WORLD" }, { 0x00909B, "MARKEM-IMAJE", "MARKEM-IMAJE" }, { 0x00909C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00909D, "NovaTech Process Solutions, LLC", "NOVATECH-PROCESS-SOLUTIONS-LLC" }, { 0x00909E, "Critical IO, LLC", "CRITICAL-IO-LLC" }, { 0x00909F, "DIGI-DATA CORPORATION", "DIGI-DATA" }, { 0x0090A0, "8X8 INC.", "8X8" }, { 0x0090A1, "Flying Pig Systems/High End Systems Inc.", "FLYING-PIG-/HIGH-END" }, { 0x0090A2, "CYBERTAN TECHNOLOGY, INC.", "CYBERTAN" }, { 0x0090A3, "Corecess Inc.", "CORECESS" }, { 0x0090A4, "ALTIGA NETWORKS", "ALTIGA-NETWORKS" }, { 0x0090A5, "SPECTRA LOGIC", "SPECTRA-LOGIC" }, { 0x0090A6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0090A7, "CLIENTEC CORPORATION", "CLIENTEC" }, { 0x0090A8, "NineTiles Networks, Ltd.", "NINETILES-NETWORKS" }, { 0x0090A9, "WESTERN DIGITAL", "WESTERN-DIGITAL" }, { 0x0090AA, "INDIGO ACTIVE VISION SYSTEMS LIMITED", "INDIGO-ACTIVE-VISION" }, { 0x0090AB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0090AC, "OPTIVISION, INC.", "OPTIVISION" }, { 0x0090AD, "ASPECT ELECTRONICS, INC.", "ASPECT-ELECTRONICS" }, { 0x0090AE, "ITALTEL S.p.A.", "ITALTEL-S-P-A" }, { 0x0090AF, "J. MORITA MFG. CORP.", "J-MORITA-MFG" }, { 0x0090B0, "VADEM", "VADEM" }, { 0x0090B1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0090B2, "AVICI SYSTEMS INC.", "AVICI" }, { 0x0090B3, "AGRANAT SYSTEMS", "AGRANAT" }, { 0x0090B4, "WILLOWBROOK TECHNOLOGIES", "WILLOWBROOK-TECHNOLOGIES" }, { 0x0090B5, "NIKON CORPORATION", "NIKON" }, { 0x0090B6, "FIBEX SYSTEMS", "FIBEX" }, { 0x0090B7, "DIGITAL LIGHTWAVE, INC.", "DIGITAL-LIGHTWAVE" }, { 0x0090B8, "ROHDE & SCHWARZ GMBH & CO. KG", "ROHDE-SCHWARZ" }, { 0x0090B9, "BERAN INSTRUMENTS LTD.", "BERAN-INSTRUMENTS" }, { 0x0090BA, "VALID NETWORKS, INC.", "VALID-NETWORKS" }, { 0x0090BB, "TAINET COMMUNICATION SYSTEM Corp.", "TAINET-COMMUNICATION-SYSTEM" }, { 0x0090BC, "TELEMANN CO., LTD.", "TELEMANN" }, { 0x0090BD, "OMNIA COMMUNICATIONS, INC.", "OMNIA-COMMUNICATION" }, { 0x0090BE, "IBC/INTEGRATED BUSINESS COMPUTERS", "IBC/INTEGRATED-BUSINESS-COMPUTERS" }, { 0x0090BF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0090C0, "K.J. LAW ENGINEERS, INC.", "K-J-LAW-ENGINEERS" }, { 0x0090C1, "Peco II, Inc.", "PECO-II" }, { 0x0090C2, "JK microsystems, Inc.", "JK-MICROSYSTEMS" }, { 0x0090C3, "TOPIC SEMICONDUCTOR CORP.", "TOPIC-SEMICONDUCTOR" }, { 0x0090C4, "JAVELIN SYSTEMS, INC.", "JAVELIN" }, { 0x0090C5, "INTERNET MAGIC, INC.", "INTERNET-MAGIC" }, { 0x0090C6, "OPTIM SYSTEMS, INC.", "OPTIM" }, { 0x0090C7, "ICOM INC.", "ICOM" }, { 0x0090C8, "WAVERIDER COMMUNICATIONS (CANADA) INC.", "WAVERIDER-COMMUNICATION-CANADA" }, { 0x0090C9, "DPAC Technologies", "DPAC-TECHNOLOGIES" }, { 0x0090CA, "ACCORD VIDEO TELECOMMUNICATIONS, LTD.", "ACCORD-VIDEO-TELECOMMUNICATIONS" }, { 0x0090CB, "Wireless OnLine, Inc.", "WIRELESS-ONLINE" }, { 0x0090CC, "Planex Communications", "PLANEX-COMMUNICATION" }, { 0x0090CD, "ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A.", "ENT-EMPRESA-NACIONAL-DE-TELECOMMUNICACOES" }, { 0x0090CE, "TETRA GmbH", "TETRA" }, { 0x0090CF, "NORTEL", "NORTEL" }, { 0x0090D0, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x0090D1, "LEICHU ENTERPRISE CO., LTD.", "LEICHU" }, { 0x0090D2, "ARTEL VIDEO SYSTEMS", "ARTEL-VIDEO" }, { 0x0090D3, "GIESECKE & DEVRIENT GmbH", "GIESECKE-DEVRIENT" }, { 0x0090D4, "BindView Development Corp.", "BINDVIEW-DEVELOPMENT" }, { 0x0090D5, "EUPHONIX, INC.", "EUPHONIX" }, { 0x0090D6, "CRYSTAL GROUP", "CRYSTAL-GROUP" }, { 0x0090D7, "NetBoost Corp.", "NETBOOST" }, { 0x0090D8, "WHITECROSS SYSTEMS", "WHITECROSS" }, { 0x0090D9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0090DA, "DYNARC, INC.", "DYNARC" }, { 0x0090DB, "NEXT LEVEL COMMUNICATIONS", "NEXT-LEVEL-COMMUNICATION" }, { 0x0090DC, "TECO INFORMATION SYSTEMS", "TECO-INFORMATION" }, { 0x0090DD, "MIHARU COMMUNICATIONS Inc", "MIHARU-COMMUNICATION" }, { 0x0090DE, "CARDKEY SYSTEMS, INC.", "CARDKEY" }, { 0x0090DF, "MITSUBISHI CHEMICAL AMERICA, INC.", "MITSUBISHI-CHEMICAL-AMERICA" }, { 0x0090E0, "SYSTRAN CORP.", "SYSTRAN" }, { 0x0090E1, "TELENA S.P.A.", "TELENA-S-P-A" }, { 0x0090E2, "DISTRIBUTED PROCESSING TECHNOLOGY", "DISTRIBUTED-PROCESSING" }, { 0x0090E3, "AVEX ELECTRONICS INC.", "AVEX-ELECTRONICS" }, { 0x0090E4, "NEC AMERICA, INC.", "NEC-AMERICA" }, { 0x0090E5, "TEKNEMA, INC.", "TEKNEMA" }, { 0x0090E6, "ALi Corporation", "ALI" }, { 0x0090E7, "HORSCH ELEKTRONIK AG", "HORSCH-ELEKTRONIK" }, { 0x0090E8, "MOXA TECHNOLOGIES CORP., LTD.", "MOXA-TECHNOLOGIES" }, { 0x0090E9, "JANZ COMPUTER AG", "JANZ" }, { 0x0090EA, "ALPHA TECHNOLOGIES, INC.", "ALPHA-TECHNOLOGIES" }, { 0x0090EB, "SENTRY TELECOM SYSTEMS", "SENTRY-TELECOM" }, { 0x0090EC, "PYRESCOM", "PYRESCOM" }, { 0x0090ED, "CENTRAL SYSTEM RESEARCH CO., LTD.", "CENTRAL-SYSTEM-RESEARCH" }, { 0x0090EE, "PERSONAL COMMUNICATIONS TECHNOLOGIES", "PERSONAL-COMMUNICATION-TECHNOLOGIES" }, { 0x0090EF, "INTEGRIX, INC.", "INTEGRIX" }, { 0x0090F0, "Harmonic Video Systems Ltd.", "HARMONIC-VIDEO" }, { 0x0090F1, "DOT HILL SYSTEMS CORPORATION", "DOT-HILL" }, { 0x0090F2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0090F3, "ASPECT COMMUNICATIONS", "ASPECT-COMMUNICATION" }, { 0x0090F4, "LIGHTNING INSTRUMENTATION", "LIGHTNING-INSTRUMENTATION" }, { 0x0090F5, "CLEVO CO.", "CLEVO" }, { 0x0090F6, "ESCALATE NETWORKS, INC.", "ESCALATE-NETWORKS" }, { 0x0090F7, "NBASE COMMUNICATIONS LTD.", "NBASE-COMMUNICATION" }, { 0x0090F8, "MEDIATRIX TELECOM", "MEDIATRIX-TELECOM" }, { 0x0090F9, "LEITCH", "LEITCH" }, { 0x0090FA, "Emulex Corporation", "EMULEX" }, { 0x0090FB, "PORTWELL, INC.", "PORTWELL" }, { 0x0090FC, "NETWORK COMPUTING DEVICES", "NETWORK-COMPUTING-DEVICES" }, { 0x0090FD, "CopperCom, Inc.", "COPPERCOM" }, { 0x0090FE, "ELECOM CO., LTD. (LANEED DIV.)", "ELECOM-LANEED-DIV" }, { 0x0090FF, "TELLUS TECHNOLOGY INC.", "TELLUS" }, { 0x0091D6, "Crystal Group, Inc.", "CRYSTAL-GROUP" }, { 0x0091FA, "Synapse Product Development", "SYNAPSE-PRODUCT-DEVELOPMENT" }, { 0x009363, "Uni-Link Technology Co., Ltd.", "UNI-LINK" }, { 0x009569, "LSD Science and Technology Co.,Ltd.", "LSD-SCIENCE-AND" }, { 0x0097FF, "Heimann Sensor GmbH", "HEIMANN-SENSOR" }, { 0x009C02, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x009D8E, "CARDIAC RECORDERS, INC.", "CARDIAC-RECORDERS" }, { 0x00A000, "CENTILLION NETWORKS, INC.", "CENTILLION-NETWORKS" }, { 0x00A001, "DRS Signal Solutions", "DRS-SIGNAL-SOLUTIONS" }, { 0x00A002, "LEEDS & NORTHRUP AUSTRALIA PTY LTD", "LEEDS-NORTHRUP-AUSTRALIA-PTY" }, { 0x00A003, "Siemens Switzerland Ltd., I B T HVP", "SIEMENS-SWITZERLAND-I-B-T-HVP" }, { 0x00A004, "NETPOWER, INC.", "NETPOWER" }, { 0x00A005, "DANIEL INSTRUMENTS, LTD.", "DANIEL-INSTRUMENTS" }, { 0x00A006, "IMAGE DATA PROCESSING SYSTEM GROUP", "IMAGE-DATA-PROCESSING-SYSTEM-GROUP" }, { 0x00A007, "APEXX TECHNOLOGY, INC.", "APEXX" }, { 0x00A008, "NETCORP", "NETCORP" }, { 0x00A009, "WHITETREE NETWORK", "WHITETREE-NETWORK" }, { 0x00A00A, "Airspan", "AIRSPAN" }, { 0x00A00B, "COMPUTEX CO., LTD.", "COMPUTEX" }, { 0x00A00C, "KINGMAX TECHNOLOGY, INC.", "KINGMAX" }, { 0x00A00D, "THE PANDA PROJECT", "THE-PANDA-PROJECT" }, { 0x00A00E, "VISUAL NETWORKS, INC.", "VISUAL-NETWORKS" }, { 0x00A00F, "Broadband Technologies", "BROADBAND-TECHNOLOGIES" }, { 0x00A010, "SYSLOGIC DATENTECHNIK AG", "SYSLOGIC-DATENTECHNIK" }, { 0x00A011, "MUTOH INDUSTRIES LTD.", "MUTOH-INDUSTRIES" }, { 0x00A012, "Telco Systems, Inc.", "TELCO" }, { 0x00A013, "TELTREND LTD.", "TELTREND" }, { 0x00A014, "CSIR", "CSIR" }, { 0x00A015, "WYLE", "WYLE" }, { 0x00A016, "MICROPOLIS CORP.", "MICROPOLIS" }, { 0x00A017, "J B M CORPORATION", "J-B-M" }, { 0x00A018, "CREATIVE CONTROLLERS, INC.", "CREATIVE-CONTROLLERS" }, { 0x00A019, "NEBULA CONSULTANTS, INC.", "NEBULA-CONSULTANTS" }, { 0x00A01A, "BINAR ELEKTRONIK AB", "BINAR-ELEKTRONIK-AB" }, { 0x00A01B, "PREMISYS COMMUNICATIONS, INC.", "PREMISYS-COMMUNICATION" }, { 0x00A01C, "NASCENT NETWORKS CORPORATION", "NASCENT-NETWORKS" }, { 0x00A01D, "SIXNET", "SIXNET" }, { 0x00A01E, "EST CORPORATION", "EST" }, { 0x00A01F, "TRICORD SYSTEMS, INC.", "TRICORD" }, { 0x00A020, "CITICORP/TTI", "CITICORP/TTI" }, { 0x00A021, "General Dynamics", "GENERAL-DYNAMICS" }, { 0x00A022, "CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING", "CENTRE-FOR-DEVELOPMENT-OF-ADVANCED-COMPUTING" }, { 0x00A023, "APPLIED CREATIVE TECHNOLOGY, INC.", "APPLIED-CREATIVE" }, { 0x00A024, "3COM CORPORATION", "3COM" }, { 0x00A025, "REDCOM LABS INC.", "REDCOM-LABS" }, { 0x00A026, "TELDAT, S.A.", "TELDAT" }, { 0x00A027, "FIREPOWER SYSTEMS, INC.", "FIREPOWER" }, { 0x00A028, "CONNER PERIPHERALS", "CONNER-PERIPHERALS" }, { 0x00A029, "COULTER CORPORATION", "COULTER" }, { 0x00A02A, "TRANCELL SYSTEMS", "TRANCELL" }, { 0x00A02B, "TRANSITIONS RESEARCH CORP.", "TRANSITIONS-RESEARCH" }, { 0x00A02C, "interWAVE Communications", "INTERWAVE-COMMUNICATION" }, { 0x00A02D, "1394 Trade Association", "1394-TRADE-ASSOCIATION" }, { 0x00A02E, "BRAND COMMUNICATIONS, LTD.", "BRAND-COMMUNICATION" }, { 0x00A02F, "PIRELLI CAVI", "PIRELLI-CAVI" }, { 0x00A030, "CAPTOR NV/SA", "CAPTOR-NV/" }, { 0x00A031, "HAZELTINE CORPORATION, MS 1-17", "HAZELTINE-MS-1-17" }, { 0x00A032, "GES SINGAPORE PTE. LTD.", "GES-SINGAPORE-PTE" }, { 0x00A033, "imc MeBsysteme GmbH", "IMC-MEBSYSTEME" }, { 0x00A034, "AXEL", "AXEL" }, { 0x00A035, "CYLINK CORPORATION", "CYLINK" }, { 0x00A036, "APPLIED NETWORK TECHNOLOGY", "APPLIED-NETWORK" }, { 0x00A037, "Mindray DS USA, Inc.", "MINDRAY-DS-USA" }, { 0x00A038, "EMAIL ELECTRONICS", "EMAIL-ELECTRONICS" }, { 0x00A039, "ROSS TECHNOLOGY, INC.", "ROSS" }, { 0x00A03A, "KUBOTEK CORPORATION", "KUBOTEK" }, { 0x00A03B, "TOSHIN ELECTRIC CO., LTD.", "TOSHIN-ELECTRIC" }, { 0x00A03C, "EG&G NUCLEAR INSTRUMENTS", "EG-G-NUCLEAR-INSTRUMENTS" }, { 0x00A03D, "OPTO-22", "OPTO-22" }, { 0x00A03E, "ATM FORUM", "ATM-FORUM" }, { 0x00A03F, "COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C", "SOCIETY-MICROPROCESSOR-MICROPROCESSOR-STANDARDS-C" }, { 0x00A040, "Apple", "APPLE" }, { 0x00A041, "INFICON", "INFICON" }, { 0x00A042, "SPUR PRODUCTS CORP.", "SPUR-PRODUCTS" }, { 0x00A043, "AMERICAN TECHNOLOGY LABS, INC.", "AMERICAN-LABS" }, { 0x00A044, "NTT IT CO., LTD.", "NTT-IT" }, { 0x00A045, "PHOENIX CONTACT GMBH & CO.", "PHOENIX-CONTACT" }, { 0x00A046, "SCITEX CORP. LTD.", "SCITEX" }, { 0x00A047, "INTEGRATED FITNESS CORP.", "INTEGRATED-FITNESS" }, { 0x00A048, "QUESTECH, LTD.", "QUESTECH" }, { 0x00A049, "DIGITECH INDUSTRIES, INC.", "DIGITECH-INDUSTRIES" }, { 0x00A04A, "NISSHIN ELECTRIC CO., LTD.", "NISSHIN-ELECTRIC" }, { 0x00A04B, "TFL LAN INC.", "TFL-LAN" }, { 0x00A04C, "INNOVATIVE SYSTEMS & TECHNOLOGIES, INC.", "INNOVATIVE-TECHNOLOGIES" }, { 0x00A04D, "EDA INSTRUMENTS, INC.", "EDA-INSTRUMENTS" }, { 0x00A04E, "VOELKER TECHNOLOGIES, INC.", "VOELKER-TECHNOLOGIES" }, { 0x00A04F, "AMERITEC CORP.", "AMERITEC" }, { 0x00A050, "CYPRESS SEMICONDUCTOR", "CYPRESS-SEMICONDUCTOR" }, { 0x00A051, "ANGIA COMMUNICATIONS. INC.", "ANGIA-COMMUNICATION" }, { 0x00A052, "STANILITE ELECTRONICS PTY. LTD", "STANILITE-ELECTRONICS-PTY" }, { 0x00A053, "COMPACT DEVICES, INC.", "COMPACT-DEVICES" }, { 0x00A054, "PRIVATE", "PRIVATE" }, { 0x00A055, "Data Device Corporation", "DATA-DEVICE" }, { 0x00A056, "MICROPROSS", "MICROPROSS" }, { 0x00A057, "LANCOM Systems GmbH", "LANCOM" }, { 0x00A058, "GLORY, LTD.", "GLORY" }, { 0x00A059, "HAMILTON HALLMARK", "HAMILTON-HALLMARK" }, { 0x00A05A, "KOFAX IMAGE PRODUCTS", "KOFAX-IMAGE-PRODUCTS" }, { 0x00A05B, "MARQUIP, INC.", "MARQUIP" }, { 0x00A05C, "INVENTORY CONVERSION, INC./", "INVENTORY-CONVERSION-/" }, { 0x00A05D, "CS COMPUTER SYSTEME GmbH", "CS-SYSTEME" }, { 0x00A05E, "MYRIAD LOGIC INC.", "MYRIAD-LOGIC" }, { 0x00A05F, "BTG Electronics Design BV", "BTG-ELECTRONICS-DESIGN" }, { 0x00A060, "ACER PERIPHERALS, INC.", "ACER-PERIPHERALS" }, { 0x00A061, "PURITAN BENNETT", "PURITAN-BENNETT" }, { 0x00A062, "AES PRODATA", "AES-PRODATA" }, { 0x00A063, "JRL SYSTEMS, INC.", "JRL" }, { 0x00A064, "KVB/ANALECT", "KVB/ANALECT" }, { 0x00A065, "Symantec Corporation", "SYMANTEC" }, { 0x00A066, "ISA CO., LTD.", "ISA" }, { 0x00A067, "NETWORK SERVICES GROUP", "NETWORK-SERVICES-GROUP" }, { 0x00A068, "BHP LIMITED", "BHP" }, { 0x00A069, "Symmetricom, Inc.", "SYMMETRICOM" }, { 0x00A06A, "Verilink Corporation", "VERILINK" }, { 0x00A06B, "DMS DORSCH MIKROSYSTEM GMBH", "DMS-DORSCH-MIKROSYSTEM" }, { 0x00A06C, "SHINDENGEN ELECTRIC MFG. CO., LTD.", "SHINDENGEN-ELECTRIC-MFG" }, { 0x00A06D, "MANNESMANN TALLY CORPORATION", "MANNESMANN-TALLY" }, { 0x00A06E, "AUSTRON, INC.", "AUSTRON" }, { 0x00A06F, "THE APPCON GROUP, INC.", "THE-APPCON-GROUP" }, { 0x00A070, "COASTCOM", "COASTCOM" }, { 0x00A071, "VIDEO LOTTERY TECHNOLOGIES,INC", "VIDEO-LOTTERY-TECHNOLOGIES" }, { 0x00A072, "OVATION SYSTEMS LTD.", "OVATION" }, { 0x00A073, "COM21, INC.", "COM21" }, { 0x00A074, "PERCEPTION TECHNOLOGY", "PERCEPTION" }, { 0x00A075, "MICRON TECHNOLOGY, INC.", "MICRON" }, { 0x00A076, "CARDWARE LAB, INC.", "CARDWARE-LAB" }, { 0x00A077, "FUJITSU NEXION, INC.", "FUJITSU-NEXION" }, { 0x00A078, "Marconi Communications", "MARCONI-COMMUNICATION" }, { 0x00A079, "ALPS ELECTRIC (USA), INC.", "ALPS-ELECTRIC-USA" }, { 0x00A07A, "ADVANCED PERIPHERALS TECHNOLOGIES, INC.", "ADVANCED-PERIPHERALS-TECHNOLOGIES" }, { 0x00A07B, "DAWN COMPUTER INCORPORATION", "DAWN-INCORPORATION" }, { 0x00A07C, "TONYANG NYLON CO., LTD.", "TONYANG-NYLON" }, { 0x00A07D, "SEEQ TECHNOLOGY, INC.", "SEEQ" }, { 0x00A07E, "AVID TECHNOLOGY, INC.", "AVID" }, { 0x00A07F, "GSM-SYNTEL, LTD.", "GSM-SYNTEL" }, { 0x00A080, "Tattile SRL", "TATTILE-SRL" }, { 0x00A081, "ALCATEL DATA NETWORKS", "ALCATEL-DATA-NETWORKS" }, { 0x00A082, "NKT ELEKTRONIK A/S", "NKT-ELEKTRONIK-A/S" }, { 0x00A083, "ASIMMPHONY TURKEY", "ASIMMPHONY-TURKEY" }, { 0x00A084, "Dataplex Pty Ltd", "DATAPLEX-PTY" }, { 0x00A085, "PRIVATE", "PRIVATE" }, { 0x00A086, "AMBER WAVE SYSTEMS, INC.", "AMBER-WAVE" }, { 0x00A087, "Zarlink Semiconductor Ltd.", "ZARLINK-SEMICONDUCTOR" }, { 0x00A088, "ESSENTIAL COMMUNICATIONS", "ESSENTIAL-COMMUNICATION" }, { 0x00A089, "XPOINT TECHNOLOGIES, INC.", "XPOINT-TECHNOLOGIES" }, { 0x00A08A, "BROOKTROUT TECHNOLOGY, INC.", "BROOKTROUT" }, { 0x00A08B, "ASTON ELECTRONIC DESIGNS LTD.", "ASTON-DESIGNS" }, { 0x00A08C, "MultiMedia LANs, Inc.", "MULTIMEDIA-LANS" }, { 0x00A08D, "JACOMO CORPORATION", "JACOMO" }, { 0x00A08E, "Check Point Software Technologies", "CHECK-POINT-SOFTWARE-TECHNOLOGIES" }, { 0x00A08F, "DESKNET SYSTEMS, INC.", "DESKNET" }, { 0x00A090, "TimeStep Corporation", "TIMESTEP" }, { 0x00A091, "APPLICOM INTERNATIONAL", "APPLICOM" }, { 0x00A092, "H. BOLLMANN MANUFACTURERS, LTD", "H-BOLLMANN-MANUFACTURERS" }, { 0x00A093, "B/E AEROSPACE, Inc.", "B/E-AEROSPACE" }, { 0x00A094, "COMSAT CORPORATION", "COMSAT" }, { 0x00A095, "ACACIA NETWORKS, INC.", "ACACIA-NETWORKS" }, { 0x00A096, "MITSUMI ELECTRIC CO., LTD.", "MITSUMI-ELECTRIC" }, { 0x00A097, "JC INFORMATION SYSTEMS", "JC-INFORMATION" }, { 0x00A098, "NetApp", "NETAPP" }, { 0x00A099, "K-NET LTD.", "K-NET" }, { 0x00A09A, "NIHON KOHDEN AMERICA", "NIHON-KOHDEN-AMERICA" }, { 0x00A09B, "QPSX COMMUNICATIONS, LTD.", "QPSX-COMMUNICATION" }, { 0x00A09C, "Xyplex, Inc.", "XYPLEX" }, { 0x00A09D, "JOHNATHON FREEMAN TECHNOLOGIES", "JOHNATHON-FREEMAN-TECHNOLOGIES" }, { 0x00A09E, "ICTV", "ICTV" }, { 0x00A09F, "COMMVISION CORP.", "COMMVISION" }, { 0x00A0A0, "COMPACT DATA, LTD.", "COMPACT-DATA" }, { 0x00A0A1, "EPIC DATA INC.", "EPIC-DATA" }, { 0x00A0A2, "DIGICOM S.P.A.", "DIGICOM-S-P-A" }, { 0x00A0A3, "RELIABLE POWER METERS", "RELIABLE-POWER-METERS" }, { 0x00A0A4, "MICROS SYSTEMS, INC.", "MICROS" }, { 0x00A0A5, "TEKNOR MICROSYSTEME, INC.", "TEKNOR-MICROSYSTEME" }, { 0x00A0A6, "M.I. SYSTEMS, K.K.", "M-I-K-K" }, { 0x00A0A7, "VORAX CORPORATION", "VORAX" }, { 0x00A0A8, "RENEX CORPORATION", "RENEX" }, { 0x00A0A9, "NAVTEL COMMUNICATIONS INC.", "NAVTEL-COMMUNICATION" }, { 0x00A0AA, "SPACELABS MEDICAL", "SPACELABS-MEDICAL" }, { 0x00A0AB, "NETCS INFORMATIONSTECHNIK GMBH", "NETCS-INFORMATIONSTECHNIK" }, { 0x00A0AC, "GILAT SATELLITE NETWORKS, LTD.", "GILAT-SATELLITE-NETWORKS" }, { 0x00A0AD, "MARCONI SPA", "MARCONI-SPA" }, { 0x00A0AE, "NUCOM SYSTEMS, INC.", "NUCOM" }, { 0x00A0AF, "WMS INDUSTRIES", "WMS-INDUSTRIES" }, { 0x00A0B0, "I-O DATA DEVICE, INC.", "I-O-DATA-DEVICE" }, { 0x00A0B1, "FIRST VIRTUAL CORPORATION", "FIRST-VIRTUAL" }, { 0x00A0B2, "SHIMA SEIKI", "SHIMA-SEIKI" }, { 0x00A0B3, "ZYKRONIX", "ZYKRONIX" }, { 0x00A0B4, "TEXAS MICROSYSTEMS, INC.", "TEXAS-MICROSYSTEMS" }, { 0x00A0B5, "3H TECHNOLOGY", "3H" }, { 0x00A0B6, "SANRITZ AUTOMATION CO., LTD.", "SANRITZ-AUTOMATION" }, { 0x00A0B7, "CORDANT, INC.", "CORDANT" }, { 0x00A0B8, "SYMBIOS LOGIC INC.", "SYMBIOS-LOGIC" }, { 0x00A0B9, "EAGLE TECHNOLOGY, INC.", "EAGLE" }, { 0x00A0BA, "PATTON ELECTRONICS CO.", "PATTON-ELECTRONICS" }, { 0x00A0BB, "HILAN GMBH", "HILAN" }, { 0x00A0BC, "VIASAT, INCORPORATED", "VIASAT-INCORPORATED" }, { 0x00A0BD, "I-TECH CORP.", "I-TECH" }, { 0x00A0BE, "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP", "INTEGRATED-CIRCUIT-COMMUNICATION-GROUP" }, { 0x00A0BF, "WIRELESS DATA GROUP MOTOROLA", "WIRELESS-DATA-GROUP-MOTOROLA" }, { 0x00A0C0, "DIGITAL LINK CORP.", "DIGITAL-LINK" }, { 0x00A0C1, "ORTIVUS MEDICAL AB", "ORTIVUS-MEDICAL-AB" }, { 0x00A0C2, "R.A. SYSTEMS CO., LTD.", "R-A" }, { 0x00A0C3, "UNICOMPUTER GMBH", "UNICOMPUTER" }, { 0x00A0C4, "CRISTIE ELECTRONICS LTD.", "CRISTIE-ELECTRONICS" }, { 0x00A0C5, "ZYXEL COMMUNICATION", "ZYXEL-COMMUNICATION" }, { 0x00A0C6, "QUALCOMM INCORPORATED", "QUALCOMM-INCORPORATED" }, { 0x00A0C7, "TADIRAN TELECOMMUNICATIONS", "TADIRAN-TELECOMMUNICATIONS" }, { 0x00A0C8, "ADTRAN INC.", "ADTRAN" }, { 0x00A0C9, "INTEL CORPORATION - HF1-06", "INTEL" }, { 0x00A0CA, "FUJITSU DENSO LTD.", "FUJITSU-DENSO" }, { 0x00A0CB, "ARK TELECOMMUNICATIONS, INC.", "ARK-TELECOMMUNICATIONS" }, { 0x00A0CC, "LITE-ON COMMUNICATIONS, INC.", "LITE-ON-COMMUNICATION" }, { 0x00A0CD, "DR. JOHANNES HEIDENHAIN GmbH", "DR-JOHANNES-HEIDENHAIN" }, { 0x00A0CE, "Ecessa", "ECESSA" }, { 0x00A0CF, "SOTAS, INC.", "SOTAS" }, { 0x00A0D0, "TEN X TECHNOLOGY, INC.", "TEN-X" }, { 0x00A0D1, "INVENTEC CORPORATION", "INVENTEC" }, { 0x00A0D2, "ALLIED TELESIS INTERNATIONAL CORPORATION", "ALLIED-TELESIS" }, { 0x00A0D3, "INSTEM COMPUTER SYSTEMS, LTD.", "INSTEM" }, { 0x00A0D4, "RADIOLAN, INC.", "RADIOLAN" }, { 0x00A0D5, "SIERRA WIRELESS INC.", "SIERRA-WIRELESS" }, { 0x00A0D6, "SBE, INC.", "SBE" }, { 0x00A0D7, "KASTEN CHASE APPLIED RESEARCH", "KASTEN-CHASE-APPLIED-RESEARCH" }, { 0x00A0D8, "SPECTRA - TEK", "SPECTRA---TEK" }, { 0x00A0D9, "CONVEX COMPUTER CORPORATION", "CONVEX" }, { 0x00A0DA, "INTEGRATED SYSTEMS Technology, Inc.", "INTEGRATED" }, { 0x00A0DB, "FISHER & PAYKEL PRODUCTION", "FISHER-PAYKEL-PRODUCTION" }, { 0x00A0DC, "O.N. ELECTRONIC CO., LTD.", "O-N" }, { 0x00A0DD, "AZONIX CORPORATION", "AZONIX" }, { 0x00A0DE, "YAMAHA CORPORATION", "YAMAHA" }, { 0x00A0DF, "STS TECHNOLOGIES, INC.", "STS-TECHNOLOGIES" }, { 0x00A0E0, "TENNYSON TECHNOLOGIES PTY LTD", "TENNYSON-TECHNOLOGIES-PTY" }, { 0x00A0E1, "WESTPORT RESEARCH ASSOCIATES, INC.", "WESTPORT-RESEARCH-ASSOCIATES" }, { 0x00A0E2, "Keisokugiken Corporation", "KEISOKUGIKEN" }, { 0x00A0E3, "XKL SYSTEMS CORP.", "XKL" }, { 0x00A0E4, "OPTIQUEST", "OPTIQUEST" }, { 0x00A0E5, "NHC COMMUNICATIONS", "NHC-COMMUNICATION" }, { 0x00A0E6, "DIALOGIC CORPORATION", "DIALOGIC" }, { 0x00A0E7, "CENTRAL DATA CORPORATION", "CENTRAL-DATA" }, { 0x00A0E8, "REUTERS HOLDINGS PLC", "REUTERS-HOLDINGS-PLC" }, { 0x00A0E9, "ELECTRONIC RETAILING SYSTEMS INTERNATIONAL", "RETAILING" }, { 0x00A0EA, "ETHERCOM CORP.", "ETHERCOM" }, { 0x00A0EB, "Encore Networks, Inc.", "ENCORE-NETWORKS" }, { 0x00A0EC, "TRANSMITTON LTD.", "TRANSMITTON" }, { 0x00A0ED, "Brooks Automation, Inc.", "BROOKS-AUTOMATION" }, { 0x00A0EE, "NASHOBA NETWORKS", "NASHOBA-NETWORKS" }, { 0x00A0EF, "LUCIDATA LTD.", "LUCIDATA" }, { 0x00A0F0, "TORONTO MICROELECTRONICS INC.", "TORONTO-MICROELECTRONICS" }, { 0x00A0F1, "MTI", "MTI" }, { 0x00A0F2, "INFOTEK COMMUNICATIONS, INC.", "INFOTEK-COMMUNICATION" }, { 0x00A0F3, "STAUBLI", "STAUBLI" }, { 0x00A0F4, "GE", "GE" }, { 0x00A0F5, "RADGUARD LTD.", "RADGUARD" }, { 0x00A0F6, "AutoGas Systems Inc.", "AUTOGAS" }, { 0x00A0F7, "V.I COMPUTER CORP.", "V-I" }, { 0x00A0F8, "SYMBOL TECHNOLOGIES, INC.", "SYMBOL-TECHNOLOGIES" }, { 0x00A0F9, "BINTEC COMMUNICATIONS GMBH", "BINTEC-COMMUNICATION" }, { 0x00A0FA, "Marconi Communication GmbH", "MARCONI-COMMUNICATION" }, { 0x00A0FB, "TORAY ENGINEERING CO., LTD.", "TORAY-ENGINEERING" }, { 0x00A0FC, "IMAGE SCIENCES, INC.", "IMAGE-SCIENCES" }, { 0x00A0FD, "SCITEX DIGITAL PRINTING, INC.", "SCITEX-DIGITAL-PRINTING" }, { 0x00A0FE, "BOSTON TECHNOLOGY, INC.", "BOSTON" }, { 0x00A0FF, "TELLABS OPERATIONS, INC.", "TELLABS-OPERATIONS" }, { 0x00A1DE, "ShenZhen ShiHua Technology CO.,LTD", "SHENZHEN-SHIHUA" }, { 0x00A2DA, "INAT GmbH", "INAT" }, { 0x00A2FF, "abatec group AG", "ABATEC-GROUP" }, { 0x00AA00, "INTEL CORPORATION", "INTEL" }, { 0x00AA01, "INTEL CORPORATION", "INTEL" }, { 0x00AA02, "INTEL CORPORATION", "INTEL" }, { 0x00AA3C, "OLIVETTI TELECOM SPA (OLTECO)", "OLIVETTI-TELECOM-SPA-OLTECO" }, { 0x00AA70, "LG Electronics", "LG-ELECTRONICS" }, { 0x00B009, "Grass Valley Group", "GRASS-VALLEY-GROUP" }, { 0x00B017, "InfoGear Technology Corp.", "INFOGEAR" }, { 0x00B019, "UTC CCS", "UTC-CCS" }, { 0x00B01C, "Westport Technologies", "WESTPORT-TECHNOLOGIES" }, { 0x00B01E, "Rantic Labs, Inc.", "RANTIC-LABS" }, { 0x00B02A, "ORSYS GmbH", "ORSYS" }, { 0x00B02D, "ViaGate Technologies, Inc.", "VIAGATE-TECHNOLOGIES" }, { 0x00B033, "OAO \"Izhevskiy radiozavod\"", "OAO-IZHEVSKIY-RADIOZAVOD" }, { 0x00B03B, "HiQ Networks", "HIQ-NETWORKS" }, { 0x00B048, "Marconi Communications Inc.", "MARCONI-COMMUNICATION" }, { 0x00B04A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00B052, "Atheros Communications", "ATHEROS-COMMUNICATION" }, { 0x00B064, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00B069, "Honewell Oy", "HONEWELL-OY" }, { 0x00B06D, "Jones Futurex Inc.", "JONES-FUTUREX" }, { 0x00B080, "Mannesmann Ipulsys B.V.", "MANNESMANN-IPULSYS" }, { 0x00B086, "LocSoft Limited", "LOCSOFT" }, { 0x00B08E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00B091, "Transmeta Corp.", "TRANSMETA" }, { 0x00B094, "Alaris, Inc.", "ALARIS" }, { 0x00B09A, "Morrow Technologies Corp.", "MORROW-TECHNOLOGIES" }, { 0x00B09D, "Point Grey Research Inc.", "POINT-GREY-RESEARCH" }, { 0x00B0AC, "SIAE-Microelettronica S.p.A.", "SIAE-MICROELETTRONICA-S-P-A" }, { 0x00B0AE, "Symmetricom", "SYMMETRICOM" }, { 0x00B0B3, "Xstreamis PLC", "XSTREAMIS-PLC" }, { 0x00B0C2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00B0C7, "Tellabs Operations, Inc.", "TELLABS-OPERATIONS" }, { 0x00B0CE, "TECHNOLOGY RESCUE", "RESCUE" }, { 0x00B0D0, "Dell Computer Corp.", "DELL" }, { 0x00B0DB, "Nextcell, Inc.", "NEXTCELL" }, { 0x00B0DF, "Starboard Storage Systems", "STARBOARD-STORAGE" }, { 0x00B0E7, "British Federal Ltd.", "BRITISH-FEDERAL" }, { 0x00B0EC, "EACEM", "EACEM" }, { 0x00B0EE, "Ajile Systems, Inc.", "AJILE" }, { 0x00B0F0, "CALY NETWORKS", "CALY-NETWORKS" }, { 0x00B0F5, "NetWorth Technologies, Inc.", "NETWORTH-TECHNOLOGIES" }, { 0x00B338, "Kontron Design Manufacturing Services (M) Sdn. Bhd", "KONTRON-DESIGN-MANUFACTURING-SERVICES-M-SDN-BHD" }, { 0x00B342, "MacroSAN Technologies Co., Ltd.", "MACROSAN-TECHNOLOGIES" }, { 0x00B56D, "David Electronics Co., LTD.", "DAVID-ELECTRONICS" }, { 0x00B5D6, "Omnibit Inc.", "OMNIBIT" }, { 0x00B78D, "Nanjing Shining Electric Automation Co., Ltd", "NANJING-SHINING-ELECTRIC-AUTOMATION" }, { 0x00B9F6, "Shenzhen Super Rich Electronics Co.,Ltd", "SHENZHEN-SUPER-RICH-ELECTRONICS" }, { 0x00BAC0, "Biometric Access Company", "BIOMETRIC-ACCESS-COMPANY" }, { 0x00BB01, "OCTOTHORPE CORP.", "OCTOTHORPE" }, { 0x00BB3A, "PRIVATE", "PRIVATE" }, { 0x00BB8E, "HME Co., Ltd.", "HME" }, { 0x00BBF0, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00BD27, "Exar Corp.", "EXAR" }, { 0x00BD3A, "Nokia Corporation", "NOKIA" }, { 0x00BF15, "Genetec Inc.", "GENETEC" }, { 0x00C000, "LANOPTICS, LTD.", "LANOPTICS" }, { 0x00C001, "DIATEK PATIENT MANAGMENT", "DIATEK-PATIENT-MANAGMENT" }, { 0x00C002, "SERCOMM CORPORATION", "SERCOMM" }, { 0x00C003, "GLOBALNET COMMUNICATIONS", "GLOBALNET-COMMUNICATION" }, { 0x00C004, "JAPAN BUSINESS COMPUTER CO.LTD", "JAPAN-BUSINESS" }, { 0x00C005, "LIVINGSTON ENTERPRISES, INC.", "LIVINGSTON-ENTERPRISES" }, { 0x00C006, "NIPPON AVIONICS CO., LTD.", "NIPPON-AVIONICS" }, { 0x00C007, "PINNACLE DATA SYSTEMS, INC.", "PINNACLE-DATA" }, { 0x00C008, "SECO SRL", "SECO-SRL" }, { 0x00C009, "KT TECHNOLOGY (S) PTE LTD", "KT-S-PTE" }, { 0x00C00A, "MICRO CRAFT", "MICRO-CRAFT" }, { 0x00C00B, "NORCONTROL A.S.", "NORCONTROL-A-S" }, { 0x00C00C, "RELIA TECHNOLGIES", "RELIA-TECHNOLGIES" }, { 0x00C00D, "ADVANCED LOGIC RESEARCH, INC.", "ADVANCED-LOGIC-RESEARCH" }, { 0x00C00E, "PSITECH, INC.", "PSITECH" }, { 0x00C00F, "QUANTUM SOFTWARE SYSTEMS LTD.", "QUANTUM-SOFTWARE" }, { 0x00C010, "HIRAKAWA HEWTECH CORP.", "HIRAKAWA-HEWTECH" }, { 0x00C011, "INTERACTIVE COMPUTING DEVICES", "INTERACTIVE-COMPUTING-DEVICES" }, { 0x00C012, "NETSPAN CORPORATION", "NETSPAN" }, { 0x00C013, "NETRIX", "NETRIX" }, { 0x00C014, "TELEMATICS CALABASAS INT'L,INC", "TELEMATICS-CALABASAS" }, { 0x00C015, "NEW MEDIA CORPORATION", "NEW-MEDIA" }, { 0x00C016, "ELECTRONIC THEATRE CONTROLS", "THEATRE-CONTROLS" }, { 0x00C017, "Fluke Corporation", "FLUKE" }, { 0x00C018, "LANART CORPORATION", "LANART" }, { 0x00C019, "LEAP TECHNOLOGY, INC.", "LEAP" }, { 0x00C01A, "COROMETRICS MEDICAL SYSTEMS", "COROMETRICS-MEDICAL" }, { 0x00C01B, "SOCKET COMMUNICATIONS, INC.", "SOCKET-COMMUNICATION" }, { 0x00C01C, "INTERLINK COMMUNICATIONS LTD.", "INTERLINK-COMMUNICATION" }, { 0x00C01D, "GRAND JUNCTION NETWORKS, INC.", "GRAND-JUNCTION-NETWORKS" }, { 0x00C01E, "LA FRANCAISE DES JEUX", "LA-FRANCAISE-DES-JEUX" }, { 0x00C01F, "S.E.R.C.E.L.", "S-E-R-C-E-L" }, { 0x00C020, "ARCO ELECTRONIC, CONTROL LTD.", "ARCO-CONTROL" }, { 0x00C021, "NETEXPRESS", "NETEXPRESS" }, { 0x00C022, "LASERMASTER TECHNOLOGIES, INC.", "LASERMASTER-TECHNOLOGIES" }, { 0x00C023, "TUTANKHAMON ELECTRONICS", "TUTANKHAMON-ELECTRONICS" }, { 0x00C024, "EDEN SISTEMAS DE COMPUTACAO SA", "EDEN-SISTEMAS-DE-COMPUTACAO" }, { 0x00C025, "DATAPRODUCTS CORPORATION", "DATAPRODUCTS" }, { 0x00C026, "LANS TECHNOLOGY CO., LTD.", "LANS" }, { 0x00C027, "CIPHER SYSTEMS, INC.", "CIPHER" }, { 0x00C028, "JASCO CORPORATION", "JASCO" }, { 0x00C029, "Nexans Deutschland GmbH - ANS", "NEXANS-DEUTSCHLAND---ANS" }, { 0x00C02A, "OHKURA ELECTRIC CO., LTD.", "OHKURA-ELECTRIC" }, { 0x00C02B, "GERLOFF GESELLSCHAFT FUR", "GERLOFF-GESELLSCHAFT-FUR" }, { 0x00C02C, "CENTRUM COMMUNICATIONS, INC.", "CENTRUM-COMMUNICATION" }, { 0x00C02D, "FUJI PHOTO FILM CO., LTD.", "FUJI-PHOTO-FILM" }, { 0x00C02E, "NETWIZ", "NETWIZ" }, { 0x00C02F, "OKUMA CORPORATION", "OKUMA" }, { 0x00C030, "INTEGRATED ENGINEERING B. V.", "INTEGRATED-ENGINEERING" }, { 0x00C031, "DESIGN RESEARCH SYSTEMS, INC.", "DESIGN-RESEARCH" }, { 0x00C032, "I-CUBED LIMITED", "I-CUBED" }, { 0x00C033, "TELEBIT COMMUNICATIONS APS", "TELEBIT-COMMUNICATION-APS" }, { 0x00C034, "TRANSACTION NETWORK", "TRANSACTION-NETWORK" }, { 0x00C035, "QUINTAR COMPANY", "QUINTAR-COMPANY" }, { 0x00C036, "RAYTECH ELECTRONIC CORP.", "RAYTECH" }, { 0x00C037, "DYNATEM", "DYNATEM" }, { 0x00C038, "RASTER IMAGE PROCESSING SYSTEM", "RASTER-IMAGE-PROCESSING-SYSTEM" }, { 0x00C039, "Teridian Semiconductor Corporation", "TERIDIAN-SEMICONDUCTOR" }, { 0x00C03A, "MEN-MIKRO ELEKTRONIK GMBH", "MEN-MIKRO-ELEKTRONIK" }, { 0x00C03B, "MULTIACCESS COMPUTING CORP.", "MULTIACCESS-COMPUTING" }, { 0x00C03C, "TOWER TECH S.R.L.", "TOWER-TECH-S-R-L" }, { 0x00C03D, "WIESEMANN & THEIS GMBH", "WIESEMANN-THEIS" }, { 0x00C03E, "FA. GEBR. HELLER GMBH", "FA-GEBR-HELLER" }, { 0x00C03F, "STORES AUTOMATED SYSTEMS, INC.", "STORES-AUTOMATED" }, { 0x00C040, "ECCI", "ECCI" }, { 0x00C041, "DIGITAL TRANSMISSION SYSTEMS", "DIGITAL-TRANSMISSION" }, { 0x00C042, "DATALUX CORP.", "DATALUX" }, { 0x00C043, "STRATACOM", "STRATACOM" }, { 0x00C044, "EMCOM CORPORATION", "EMCOM" }, { 0x00C045, "ISOLATION SYSTEMS, LTD.", "ISOLATION" }, { 0x00C046, "Blue Chip Technology Ltd", "BLUE-CHIP" }, { 0x00C047, "UNIMICRO SYSTEMS, INC.", "UNIMICRO" }, { 0x00C048, "BAY TECHNICAL ASSOCIATES", "BAY-TECHNICAL-ASSOCIATES" }, { 0x00C049, "U.S. ROBOTICS, INC.", "U-S-ROBOTICS" }, { 0x00C04A, "GROUP 2000 AG", "GROUP-2000" }, { 0x00C04B, "CREATIVE MICROSYSTEMS", "CREATIVE-MICROSYSTEMS" }, { 0x00C04C, "DEPARTMENT OF FOREIGN AFFAIRS", "DEPARTMENT-OF-FOREIGN-AFFAIRS" }, { 0x00C04D, "MITEC, INC.", "MITEC" }, { 0x00C04E, "COMTROL CORPORATION", "COMTROL" }, { 0x00C04F, "DELL COMPUTER CORPORATION", "DELL" }, { 0x00C050, "TOYO DENKI SEIZO K.K.", "TOYO-DENKI-SEIZO-K-K" }, { 0x00C051, "ADVANCED INTEGRATION RESEARCH", "ADVANCED-INTEGRATION-RESEARCH" }, { 0x00C052, "BURR-BROWN", "BURR-BROWN" }, { 0x00C053, "Aspect Software Inc.", "ASPECT-SOFTWARE" }, { 0x00C054, "NETWORK PERIPHERALS, LTD.", "NETWORK-PERIPHERALS" }, { 0x00C055, "MODULAR COMPUTING TECHNOLOGIES", "MODULAR-COMPUTING-TECHNOLOGIES" }, { 0x00C056, "SOMELEC", "SOMELEC" }, { 0x00C057, "MYCO ELECTRONICS", "MYCO-ELECTRONICS" }, { 0x00C058, "DATAEXPERT CORP.", "DATAEXPERT" }, { 0x00C059, "DENSO CORPORATION", "DENSO" }, { 0x00C05A, "SEMAPHORE COMMUNICATIONS CORP.", "SEMAPHORE-COMMUNICATION" }, { 0x00C05B, "NETWORKS NORTHWEST, INC.", "NETWORKS-NORTHWEST" }, { 0x00C05C, "ELONEX PLC", "ELONEX-PLC" }, { 0x00C05D, "L&N TECHNOLOGIES", "L-N-TECHNOLOGIES" }, { 0x00C05E, "VARI-LITE, INC.", "VARI-LITE" }, { 0x00C05F, "FINE-PAL COMPANY LIMITED", "FINE-PAL-COMPANY" }, { 0x00C060, "ID SCANDINAVIA AS", "ID-SCANDINAVIA-AS" }, { 0x00C061, "SOLECTEK CORPORATION", "SOLECTEK" }, { 0x00C062, "IMPULSE TECHNOLOGY", "IMPULSE" }, { 0x00C063, "MORNING STAR TECHNOLOGIES, INC", "MORNING-STAR-TECHNOLOGIES" }, { 0x00C064, "GENERAL DATACOMM IND. INC.", "GENERAL-DATACOMM-IND" }, { 0x00C065, "SCOPE COMMUNICATIONS, INC.", "SCOPE-COMMUNICATION" }, { 0x00C066, "DOCUPOINT, INC.", "DOCUPOINT" }, { 0x00C067, "UNITED BARCODE INDUSTRIES", "UNITED-BARCODE-INDUSTRIES" }, { 0x00C068, "HME Clear-Com LTD.", "HME-CLEAR-COM" }, { 0x00C069, "Axxcelera Broadband Wireless", "AXXCELERA-BROADBAND-WIRELESS" }, { 0x00C06A, "ZAHNER-ELEKTRIK GMBH & CO. KG", "ZAHNER-ELEKTRIK" }, { 0x00C06B, "OSI PLUS CORPORATION", "OSI-PLUS" }, { 0x00C06C, "SVEC COMPUTER CORP.", "SVEC" }, { 0x00C06D, "BOCA RESEARCH, INC.", "BOCA-RESEARCH" }, { 0x00C06E, "HAFT TECHNOLOGY, INC.", "HAFT" }, { 0x00C06F, "KOMATSU LTD.", "KOMATSU" }, { 0x00C070, "SECTRA SECURE-TRANSMISSION AB", "SECTRA-SECURE-TRANSMISSION-AB" }, { 0x00C071, "AREANEX COMMUNICATIONS, INC.", "AREANEX-COMMUNICATION" }, { 0x00C072, "KNX LTD.", "KNX" }, { 0x00C073, "XEDIA CORPORATION", "XEDIA" }, { 0x00C074, "TOYODA AUTOMATIC LOOM", "TOYODA-AUTOMATIC-LOOM" }, { 0x00C075, "XANTE CORPORATION", "XANTE" }, { 0x00C076, "I-DATA INTERNATIONAL A-S", "I-DATA-A-S" }, { 0x00C077, "DAEWOO TELECOM LTD.", "DAEWOO-TELECOM" }, { 0x00C078, "COMPUTER SYSTEMS ENGINEERING", "ENGINEERING" }, { 0x00C079, "FONSYS CO.,LTD.", "FONSYS" }, { 0x00C07A, "PRIVA B.V.", "PRIVA" }, { 0x00C07B, "ASCEND COMMUNICATIONS, INC.", "ASCEND-COMMUNICATION" }, { 0x00C07C, "HIGHTECH INFORMATION", "HIGHTECH-INFORMATION" }, { 0x00C07D, "RISC DEVELOPMENTS LTD.", "RISC-DEVELOPMENTS" }, { 0x00C07E, "KUBOTA CORPORATION ELECTRONIC", "KUBOTA" }, { 0x00C07F, "NUPON COMPUTING CORP.", "NUPON-COMPUTING" }, { 0x00C080, "NETSTAR, INC.", "NETSTAR" }, { 0x00C081, "METRODATA LTD.", "METRODATA" }, { 0x00C082, "MOORE PRODUCTS CO.", "MOORE-PRODUCTS" }, { 0x00C083, "TRACE MOUNTAIN PRODUCTS, INC.", "TRACE-MOUNTAIN-PRODUCTS" }, { 0x00C084, "DATA LINK CORP. LTD.", "DATA-LINK" }, { 0x00C085, "ELECTRONICS FOR IMAGING, INC.", "ELECTRONICS-FOR-IMAGING" }, { 0x00C086, "THE LYNK CORPORATION", "THE-LYNK" }, { 0x00C087, "UUNET TECHNOLOGIES, INC.", "UUNET-TECHNOLOGIES" }, { 0x00C088, "EKF ELEKTRONIK GMBH", "EKF-ELEKTRONIK" }, { 0x00C089, "TELINDUS DISTRIBUTION", "TELINDUS-DISTRIBUTION" }, { 0x00C08A, "Lauterbach GmbH", "LAUTERBACH" }, { 0x00C08B, "RISQ MODULAR SYSTEMS, INC.", "RISQ-MODULAR" }, { 0x00C08C, "PERFORMANCE TECHNOLOGIES, INC.", "PERFORMANCE-TECHNOLOGIES" }, { 0x00C08D, "TRONIX PRODUCT DEVELOPMENT", "TRONIX-PRODUCT-DEVELOPMENT" }, { 0x00C08E, "NETWORK INFORMATION TECHNOLOGY", "NETWORK-INFORMATION" }, { 0x00C08F, "Panasonic Electric Works Co., Ltd.", "PANASONIC-ELECTRIC-WORKS" }, { 0x00C090, "PRAIM S.R.L.", "PRAIM-S-R-L" }, { 0x00C091, "JABIL CIRCUIT, INC.", "JABIL-CIRCUIT" }, { 0x00C092, "MENNEN MEDICAL INC.", "MENNEN-MEDICAL" }, { 0x00C093, "ALTA RESEARCH CORP.", "ALTA-RESEARCH" }, { 0x00C094, "VMX INC.", "VMX" }, { 0x00C095, "ZNYX", "ZNYX" }, { 0x00C096, "TAMURA CORPORATION", "TAMURA" }, { 0x00C097, "ARCHIPEL SA", "ARCHIPEL" }, { 0x00C098, "CHUNTEX ELECTRONIC CO., LTD.", "CHUNTEX" }, { 0x00C099, "YOSHIKI INDUSTRIAL CO.,LTD.", "YOSHIKI-INDUSTRIAL" }, { 0x00C09A, "PHOTONICS CORPORATION", "PHOTONICS" }, { 0x00C09B, "RELIANCE COMM/TEC, R-TEC", "RELIANCE-COMM/TEC-R-TEC" }, { 0x00C09C, "HIOKI E.E. CORPORATION", "HIOKI-E-E" }, { 0x00C09D, "DISTRIBUTED SYSTEMS INT'L, INC", "DISTRIBUTED" }, { 0x00C09E, "CACHE COMPUTERS, INC.", "CACHE-COMPUTERS" }, { 0x00C09F, "QUANTA COMPUTER, INC.", "QUANTA" }, { 0x00C0A0, "ADVANCE MICRO RESEARCH, INC.", "ADVANCE-MICRO-RESEARCH" }, { 0x00C0A1, "TOKYO DENSHI SEKEI CO.", "TOKYO-DENSHI-SEKEI" }, { 0x00C0A2, "INTERMEDIUM A/S", "INTERMEDIUM-A/S" }, { 0x00C0A3, "DUAL ENTERPRISES CORPORATION", "DUAL-ENTERPRISES" }, { 0x00C0A4, "UNIGRAF OY", "UNIGRAF-OY" }, { 0x00C0A5, "DICKENS DATA SYSTEMS", "DICKENS-DATA" }, { 0x00C0A6, "EXICOM AUSTRALIA PTY. LTD", "EXICOM-AUSTRALIA-PTY" }, { 0x00C0A7, "SEEL LTD.", "SEEL" }, { 0x00C0A8, "GVC CORPORATION", "GVC" }, { 0x00C0A9, "BARRON MCCANN LTD.", "BARRON-MCCANN" }, { 0x00C0AA, "SILICON VALLEY COMPUTER", "SILICON-VALLEY" }, { 0x00C0AB, "Telco Systems, Inc.", "TELCO" }, { 0x00C0AC, "GAMBIT COMPUTER COMMUNICATIONS", "GAMBIT-COMMUNICATION" }, { 0x00C0AD, "MARBEN COMMUNICATION SYSTEMS", "MARBEN-COMMUNICATION" }, { 0x00C0AE, "TOWERCOM CO. INC. DBA PC HOUSE", "TOWERCOM-DBA-PC-HOUSE" }, { 0x00C0AF, "TEKLOGIX INC.", "TEKLOGIX" }, { 0x00C0B0, "GCC TECHNOLOGIES,INC.", "GCC-TECHNOLOGIES" }, { 0x00C0B1, "GENIUS NET CO.", "GENIUS-NET" }, { 0x00C0B2, "NORAND CORPORATION", "NORAND" }, { 0x00C0B3, "COMSTAT DATACOMM CORPORATION", "COMSTAT-DATACOMM" }, { 0x00C0B4, "MYSON TECHNOLOGY, INC.", "MYSON" }, { 0x00C0B5, "CORPORATE NETWORK SYSTEMS,INC.", "CORPORATE-NETWORK" }, { 0x00C0B6, "Overland Storage, Inc.", "OVERLAND-STORAGE" }, { 0x00C0B7, "AMERICAN POWER CONVERSION CORP", "AMERICAN-POWER-CONVERSION" }, { 0x00C0B8, "FRASER'S HILL LTD.", "FRASER-S-HILL" }, { 0x00C0B9, "FUNK SOFTWARE, INC.", "FUNK-SOFTWARE" }, { 0x00C0BA, "NETVANTAGE", "NETVANTAGE" }, { 0x00C0BB, "FORVAL CREATIVE, INC.", "FORVAL-CREATIVE" }, { 0x00C0BC, "TELECOM AUSTRALIA/CSSC", "TELECOM-AUSTRALIA/CSSC" }, { 0x00C0BD, "INEX TECHNOLOGIES, INC.", "INEX-TECHNOLOGIES" }, { 0x00C0BE, "ALCATEL - SEL", "ALCATEL---SEL" }, { 0x00C0BF, "TECHNOLOGY CONCEPTS, LTD.", "CONCEPTS" }, { 0x00C0C0, "SHORE MICROSYSTEMS, INC.", "SHORE-MICROSYSTEMS" }, { 0x00C0C1, "QUAD/GRAPHICS, INC.", "QUAD/GRAPHICS" }, { 0x00C0C2, "INFINITE NETWORKS LTD.", "INFINITE-NETWORKS" }, { 0x00C0C3, "ACUSON COMPUTED SONOGRAPHY", "ACUSON-COMPUTED-SONOGRAPHY" }, { 0x00C0C4, "COMPUTER OPERATIONAL", "OPERATIONAL" }, { 0x00C0C5, "SID INFORMATICA", "SID-INFORMATICA" }, { 0x00C0C6, "PERSONAL MEDIA CORP.", "PERSONAL-MEDIA" }, { 0x00C0C7, "SPARKTRUM MICROSYSTEMS, INC.", "SPARKTRUM-MICROSYSTEMS" }, { 0x00C0C8, "MICRO BYTE PTY. LTD.", "MICRO-BYTE-PTY" }, { 0x00C0C9, "ELSAG BAILEY PROCESS", "ELSAG-BAILEY-PROCESS" }, { 0x00C0CA, "ALFA, INC.", "ALFA" }, { 0x00C0CB, "CONTROL TECHNOLOGY CORPORATION", "CONTROL" }, { 0x00C0CC, "TELESCIENCES CO SYSTEMS, INC.", "TELESCIENCES" }, { 0x00C0CD, "COMELTA, S.A.", "COMELTA" }, { 0x00C0CE, "CEI SYSTEMS & ENGINEERING PTE", "CEI-ENGINEERING-PTE" }, { 0x00C0CF, "IMATRAN VOIMA OY", "IMATRAN-VOIMA-OY" }, { 0x00C0D0, "RATOC SYSTEM INC.", "RATOC-SYSTEM" }, { 0x00C0D1, "COMTREE TECHNOLOGY CORPORATION", "COMTREE" }, { 0x00C0D2, "SYNTELLECT, INC.", "SYNTELLECT" }, { 0x00C0D3, "OLYMPUS IMAGE SYSTEMS, INC.", "OLYMPUS-IMAGE" }, { 0x00C0D4, "AXON NETWORKS, INC.", "AXON-NETWORKS" }, { 0x00C0D5, "Werbeagentur Jürgen Siebert", "WERBEAGENTUR-JüRGEN-SIEBERT" }, { 0x00C0D6, "J1 SYSTEMS, INC.", "J1" }, { 0x00C0D7, "TAIWAN TRADING CENTER DBA", "TAIWAN-TRADING-CENTER-DBA" }, { 0x00C0D8, "UNIVERSAL DATA SYSTEMS", "UNIVERSAL-DATA" }, { 0x00C0D9, "QUINTE NETWORK CONFIDENTIALITY", "QUINTE-NETWORK-CONFIDENTIALITY" }, { 0x00C0DA, "NICE SYSTEMS LTD.", "NICE" }, { 0x00C0DB, "IPC CORPORATION (PTE) LTD.", "IPC-PTE" }, { 0x00C0DC, "EOS TECHNOLOGIES, INC.", "EOS-TECHNOLOGIES" }, { 0x00C0DD, "QLogic Corporation", "QLOGIC" }, { 0x00C0DE, "ZCOMM, INC.", "ZCOMM" }, { 0x00C0DF, "KYE Systems Corp.", "KYE" }, { 0x00C0E0, "DSC COMMUNICATION CORP.", "DSC-COMMUNICATION" }, { 0x00C0E1, "SONIC SOLUTIONS", "SONIC-SOLUTIONS" }, { 0x00C0E2, "CALCOMP, INC.", "CALCOMP" }, { 0x00C0E3, "OSITECH COMMUNICATIONS, INC.", "OSITECH-COMMUNICATION" }, { 0x00C0E4, "SIEMENS BUILDING", "SIEMENS-BUILDING" }, { 0x00C0E5, "GESPAC, S.A.", "GESPAC" }, { 0x00C0E6, "Verilink Corporation", "VERILINK" }, { 0x00C0E7, "FIBERDATA AB", "FIBERDATA-AB" }, { 0x00C0E8, "PLEXCOM, INC.", "PLEXCOM" }, { 0x00C0E9, "OAK SOLUTIONS, LTD.", "OAK-SOLUTIONS" }, { 0x00C0EA, "ARRAY TECHNOLOGY LTD.", "ARRAY" }, { 0x00C0EB, "SEH COMPUTERTECHNIK GMBH", "SEH-COMPUTERTECHNIK" }, { 0x00C0EC, "DAUPHIN TECHNOLOGY", "DAUPHIN" }, { 0x00C0ED, "US ARMY ELECTRONIC", "US-ARMY" }, { 0x00C0EE, "KYOCERA CORPORATION", "KYOCERA" }, { 0x00C0EF, "ABIT CORPORATION", "ABIT" }, { 0x00C0F0, "KINGSTON TECHNOLOGY CORP.", "KINGSTON" }, { 0x00C0F1, "SHINKO ELECTRIC CO., LTD.", "SHINKO-ELECTRIC" }, { 0x00C0F2, "TRANSITION NETWORKS", "TRANSITION-NETWORKS" }, { 0x00C0F3, "NETWORK COMMUNICATIONS CORP.", "NETWORK-COMMUNICATION" }, { 0x00C0F4, "INTERLINK SYSTEM CO., LTD.", "INTERLINK-SYSTEM" }, { 0x00C0F5, "METACOMP, INC.", "METACOMP" }, { 0x00C0F6, "CELAN TECHNOLOGY INC.", "CELAN" }, { 0x00C0F7, "ENGAGE COMMUNICATION, INC.", "ENGAGE-COMMUNICATION" }, { 0x00C0F8, "ABOUT COMPUTING INC.", "ABOUT-COMPUTING" }, { 0x00C0F9, "Emerson Network Power", "EMERSON-NETWORK-POWER" }, { 0x00C0FA, "CANARY COMMUNICATIONS, INC.", "CANARY-COMMUNICATION" }, { 0x00C0FB, "ADVANCED TECHNOLOGY LABS", "ADVANCED-LABS" }, { 0x00C0FC, "ELASTIC REALITY, INC.", "ELASTIC-REALITY" }, { 0x00C0FD, "PROSUM", "PROSUM" }, { 0x00C0FE, "APTEC COMPUTER SYSTEMS, INC.", "APTEC" }, { 0x00C0FF, "DOT HILL SYSTEMS CORPORATION", "DOT-HILL" }, { 0x00C14F, "DDL Co,.ltd.", "DDL" }, { 0x00C2C6, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00C5DB, "Datatech Sistemas Digitales Avanzados SL", "DATATECH-SISTEMAS-DIGITALES-AVANZADOS-SL" }, { 0x00C610, "Apple", "APPLE" }, { 0x00CBBD, "Cambridge Broadband Networks Ltd.", "CAMBRIDGE-BROADBAND-NETWORKS" }, { 0x00CD90, "MAS Elektronik AG", "MAS-ELEKTRONIK" }, { 0x00CF1C, "COMMUNICATION MACHINERY CORP.", "COMMUNICATION-MACHINERY" }, { 0x00D000, "FERRAN SCIENTIFIC, INC.", "FERRAN-SCIENTIFIC" }, { 0x00D001, "VST TECHNOLOGIES, INC.", "VST-TECHNOLOGIES" }, { 0x00D002, "DITECH CORPORATION", "DITECH" }, { 0x00D003, "COMDA ENTERPRISES CORP.", "COMDA-ENTERPRISES" }, { 0x00D004, "PENTACOM LTD.", "PENTACOM" }, { 0x00D005, "ZHS ZEITMANAGEMENTSYSTEME", "ZHS-ZEITMANAGEMENTSYSTEME" }, { 0x00D006, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D007, "MIC ASSOCIATES, INC.", "MIC-ASSOCIATES" }, { 0x00D008, "MACTELL CORPORATION", "MACTELL" }, { 0x00D009, "HSING TECH. ENTERPRISE CO. LTD", "HSING-TECH" }, { 0x00D00A, "LANACCESS TELECOM S.A.", "LANACCESS-TELECOM" }, { 0x00D00B, "RHK TECHNOLOGY, INC.", "RHK" }, { 0x00D00C, "SNIJDER MICRO SYSTEMS", "SNIJDER-MICRO" }, { 0x00D00D, "MICROMERITICS INSTRUMENT", "MICROMERITICS-INSTRUMENT" }, { 0x00D00E, "PLURIS, INC.", "PLURIS" }, { 0x00D00F, "SPEECH DESIGN GMBH", "SPEECH-DESIGN" }, { 0x00D010, "CONVERGENT NETWORKS, INC.", "CONVERGENT-NETWORKS" }, { 0x00D011, "PRISM VIDEO, INC.", "PRISM-VIDEO" }, { 0x00D012, "GATEWORKS CORP.", "GATEWORKS" }, { 0x00D013, "PRIMEX AEROSPACE COMPANY", "PRIMEX-AEROSPACE-COMPANY" }, { 0x00D014, "ROOT, INC.", "ROOT" }, { 0x00D015, "UNIVEX MICROTECHNOLOGY CORP.", "UNIVEX-MICROTECHNOLOGY" }, { 0x00D016, "SCM MICROSYSTEMS, INC.", "SCM-MICROSYSTEMS" }, { 0x00D017, "SYNTECH INFORMATION CO., LTD.", "SYNTECH-INFORMATION" }, { 0x00D018, "QWES. COM, INC.", "QWES-COM" }, { 0x00D019, "DAINIPPON SCREEN CORPORATE", "DAINIPPON-SCREEN-CORPORATE" }, { 0x00D01A, "URMET TLC S.P.A.", "URMET-TLC-S-P-A" }, { 0x00D01B, "MIMAKI ENGINEERING CO., LTD.", "MIMAKI-ENGINEERING" }, { 0x00D01C, "SBS TECHNOLOGIES,", "SBS-TECHNOLOGIES" }, { 0x00D01D, "FURUNO ELECTRIC CO., LTD.", "FURUNO-ELECTRIC" }, { 0x00D01E, "PINGTEL CORP.", "PINGTEL" }, { 0x00D01F, "CTAM PTY. LTD.", "CTAM-PTY" }, { 0x00D020, "AIM SYSTEM, INC.", "AIM-SYSTEM" }, { 0x00D021, "REGENT ELECTRONICS CORP.", "REGENT-ELECTRONICS" }, { 0x00D022, "INCREDIBLE TECHNOLOGIES, INC.", "INCREDIBLE-TECHNOLOGIES" }, { 0x00D023, "INFORTREND TECHNOLOGY, INC.", "INFORTREND" }, { 0x00D024, "Cognex Corporation", "COGNEX" }, { 0x00D025, "XROSSTECH, INC.", "XROSSTECH" }, { 0x00D026, "HIRSCHMANN AUSTRIA GMBH", "HIRSCHMANN-AUSTRIA" }, { 0x00D027, "APPLIED AUTOMATION, INC.", "APPLIED-AUTOMATION" }, { 0x00D028, "Harmonic, Inc", "HARMONIC" }, { 0x00D029, "WAKEFERN FOOD CORPORATION", "WAKEFERN-FOOD" }, { 0x00D02A, "Voxent Systems Ltd.", "VOXENT" }, { 0x00D02B, "JETCELL, INC.", "JETCELL" }, { 0x00D02C, "CAMPBELL SCIENTIFIC, INC.", "CAMPBELL-SCIENTIFIC" }, { 0x00D02D, "ADEMCO", "ADEMCO" }, { 0x00D02E, "COMMUNICATION AUTOMATION CORP.", "COMMUNICATION-AUTOMATION" }, { 0x00D02F, "VLSI TECHNOLOGY INC.", "VLSI" }, { 0x00D030, "Safetran Systems Corp", "SAFETRAN" }, { 0x00D031, "INDUSTRIAL LOGIC CORPORATION", "INDUSTRIAL-LOGIC" }, { 0x00D032, "YANO ELECTRIC CO., LTD.", "YANO-ELECTRIC" }, { 0x00D033, "DALIAN DAXIAN NETWORK", "DALIAN-DAXIAN-NETWORK" }, { 0x00D034, "ORMEC SYSTEMS CORP.", "ORMEC" }, { 0x00D035, "BEHAVIOR TECH. COMPUTER CORP.", "BEHAVIOR-TECH" }, { 0x00D036, "TECHNOLOGY ATLANTA CORP.", "ATLANTA" }, { 0x00D037, "Pace France", "PACE-FRANCE" }, { 0x00D038, "FIVEMERE, LTD.", "FIVEMERE" }, { 0x00D039, "UTILICOM, INC.", "UTILICOM" }, { 0x00D03A, "ZONEWORX, INC.", "ZONEWORX" }, { 0x00D03B, "VISION PRODUCTS PTY. LTD.", "VISION-PRODUCTS-PTY" }, { 0x00D03C, "Vieo, Inc.", "VIEO" }, { 0x00D03D, "GALILEO TECHNOLOGY, LTD.", "GALILEO" }, { 0x00D03E, "ROCKETCHIPS, INC.", "ROCKETCHIPS" }, { 0x00D03F, "AMERICAN COMMUNICATION", "AMERICAN-COMMUNICATION" }, { 0x00D040, "SYSMATE CO., LTD.", "SYSMATE" }, { 0x00D041, "AMIGO TECHNOLOGY CO., LTD.", "AMIGO" }, { 0x00D042, "MAHLO GMBH & CO. UG", "MAHLO-UG" }, { 0x00D043, "ZONAL RETAIL DATA SYSTEMS", "ZONAL-RETAIL-DATA" }, { 0x00D044, "ALIDIAN NETWORKS, INC.", "ALIDIAN-NETWORKS" }, { 0x00D045, "KVASER AB", "KVASER-AB" }, { 0x00D046, "DOLBY LABORATORIES, INC.", "DOLBY-LABORATORIES" }, { 0x00D047, "XN TECHNOLOGIES", "XN-TECHNOLOGIES" }, { 0x00D048, "ECTON, INC.", "ECTON" }, { 0x00D049, "IMPRESSTEK CO., LTD.", "IMPRESSTEK" }, { 0x00D04A, "PRESENCE TECHNOLOGY GMBH", "PRESENCE" }, { 0x00D04B, "LA CIE GROUP S.A.", "LA-CIE-GROUP" }, { 0x00D04C, "EUROTEL TELECOM LTD.", "EUROTEL-TELECOM" }, { 0x00D04D, "DIV OF RESEARCH & STATISTICS", "DIV-OF-RESEARCH-STATISTICS" }, { 0x00D04E, "LOGIBAG", "LOGIBAG" }, { 0x00D04F, "BITRONICS, INC.", "BITRONICS" }, { 0x00D050, "ISKRATEL", "ISKRATEL" }, { 0x00D051, "O2 MICRO, INC.", "O2-MICRO" }, { 0x00D052, "ASCEND COMMUNICATIONS, INC.", "ASCEND-COMMUNICATION" }, { 0x00D053, "CONNECTED SYSTEMS", "CONNECTED" }, { 0x00D054, "SAS INSTITUTE INC.", "SAS-INSTITUTE" }, { 0x00D055, "KATHREIN-WERKE KG", "KATHREIN-WERKE" }, { 0x00D056, "SOMAT CORPORATION", "SOMAT" }, { 0x00D057, "ULTRAK, INC.", "ULTRAK" }, { 0x00D058, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D059, "AMBIT MICROSYSTEMS CORP.", "AMBIT-MICROSYSTEMS" }, { 0x00D05A, "SYMBIONICS, LTD.", "SYMBIONICS" }, { 0x00D05B, "ACROLOOP MOTION CONTROL", "ACROLOOP-MOTION-CONTROL" }, { 0x00D05C, "TECHNOTREND SYSTEMTECHNIK GMBH", "TECHNOTREND-SYSTEMTECHNIK" }, { 0x00D05D, "INTELLIWORXX, INC.", "INTELLIWORXX" }, { 0x00D05E, "STRATABEAM TECHNOLOGY, INC.", "STRATABEAM" }, { 0x00D05F, "VALCOM, INC.", "VALCOM" }, { 0x00D060, "Panasonic Europe Ltd.", "PANASONIC-EUROPE" }, { 0x00D061, "TREMON ENTERPRISES CO., LTD.", "TREMON-ENTERPRISES" }, { 0x00D062, "DIGIGRAM", "DIGIGRAM" }, { 0x00D063, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D064, "MULTITEL", "MULTITEL" }, { 0x00D065, "TOKO ELECTRIC", "TOKO-ELECTRIC" }, { 0x00D066, "WINTRISS ENGINEERING CORP.", "WINTRISS-ENGINEERING" }, { 0x00D067, "CAMPIO COMMUNICATIONS", "CAMPIO-COMMUNICATION" }, { 0x00D068, "IWILL CORPORATION", "IWILL" }, { 0x00D069, "TECHNOLOGIC SYSTEMS", "TECHNOLOGIC" }, { 0x00D06A, "LINKUP SYSTEMS CORPORATION", "LINKUP" }, { 0x00D06B, "SR TELECOM INC.", "SR-TELECOM" }, { 0x00D06C, "SHAREWAVE, INC.", "SHAREWAVE" }, { 0x00D06D, "ACRISON, INC.", "ACRISON" }, { 0x00D06E, "TRENDVIEW RECORDERS LTD.", "TRENDVIEW-RECORDERS" }, { 0x00D06F, "KMC CONTROLS", "KMC-CONTROLS" }, { 0x00D070, "LONG WELL ELECTRONICS CORP.", "LONG-WELL-ELECTRONICS" }, { 0x00D071, "ECHELON CORP.", "ECHELON" }, { 0x00D072, "BROADLOGIC", "BROADLOGIC" }, { 0x00D073, "ACN ADVANCED COMMUNICATIONS", "ACN-ADVANCED-COMMUNICATION" }, { 0x00D074, "TAQUA SYSTEMS, INC.", "TAQUA" }, { 0x00D075, "ALARIS MEDICAL SYSTEMS, INC.", "ALARIS-MEDICAL" }, { 0x00D076, "Bank of America", "BANK-OF-AMERICA" }, { 0x00D077, "LUCENT TECHNOLOGIES", "LUCENT-TECHNOLOGIES" }, { 0x00D078, "Eltex of Sweden AB", "ELTEX-OF-SWEDEN-AB" }, { 0x00D079, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D07A, "AMAQUEST COMPUTER CORP.", "AMAQUEST" }, { 0x00D07B, "COMCAM INTERNATIONAL INC", "COMCAM" }, { 0x00D07C, "KOYO ELECTRONICS INC. CO.,LTD.", "KOYO-ELECTRONICS" }, { 0x00D07D, "COSINE COMMUNICATIONS", "COSINE-COMMUNICATION" }, { 0x00D07E, "KEYCORP LTD.", "KEYCORP" }, { 0x00D07F, "STRATEGY & TECHNOLOGY, LIMITED", "STRATEGY" }, { 0x00D080, "EXABYTE CORPORATION", "EXABYTE" }, { 0x00D081, "RTD Embedded Technologies, Inc.", "RTD-EMBEDDED-TECHNOLOGIES" }, { 0x00D082, "IOWAVE INC.", "IOWAVE" }, { 0x00D083, "INVERTEX, INC.", "INVERTEX" }, { 0x00D084, "NEXCOMM SYSTEMS, INC.", "NEXCOMM" }, { 0x00D085, "OTIS ELEVATOR COMPANY", "OTIS-ELEVATOR-COMPANY" }, { 0x00D086, "FOVEON, INC.", "FOVEON" }, { 0x00D087, "MICROFIRST INC.", "MICROFIRST" }, { 0x00D088, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00D089, "DYNACOLOR, INC.", "DYNACOLOR" }, { 0x00D08A, "PHOTRON USA", "PHOTRON-USA" }, { 0x00D08B, "ADVA Optical Networking Ltd.", "ADVA-OPTICAL-NETWORKING" }, { 0x00D08C, "GENOA TECHNOLOGY, INC.", "GENOA" }, { 0x00D08D, "PHOENIX GROUP, INC.", "PHOENIX-GROUP" }, { 0x00D08E, "NVISION INC.", "NVISION" }, { 0x00D08F, "ARDENT TECHNOLOGIES, INC.", "ARDENT-TECHNOLOGIES" }, { 0x00D090, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D091, "SMARTSAN SYSTEMS, INC.", "SMARTSAN" }, { 0x00D092, "GLENAYRE WESTERN MULTIPLEX", "GLENAYRE-WESTERN-MULTIPLEX" }, { 0x00D093, "TQ - COMPONENTS GMBH", "TQ---COMPONENTS" }, { 0x00D094, "TIMELINE VISTA, INC.", "TIMELINE-VISTA" }, { 0x00D095, "Alcatel-Lucent, Enterprise Business Group", "ALCATEL-LUCENT-BUSINESS-GROUP" }, { 0x00D096, "3COM EUROPE LTD.", "3COM" }, { 0x00D097, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D098, "Photon Dynamics Canada Inc.", "PHOTON-DYNAMICS-CANADA" }, { 0x00D099, "Elcard Wireless Systems Oy", "ELCARD-WIRELESS-OY" }, { 0x00D09A, "FILANET CORPORATION", "FILANET" }, { 0x00D09B, "SPECTEL LTD.", "SPECTEL" }, { 0x00D09C, "KAPADIA COMMUNICATIONS", "KAPADIA-COMMUNICATION" }, { 0x00D09D, "VERIS INDUSTRIES", "VERIS-INDUSTRIES" }, { 0x00D09E, "2WIRE, INC.", "2WIRE" }, { 0x00D09F, "NOVTEK TEST SYSTEMS", "NOVTEK-TEST" }, { 0x00D0A0, "MIPS DENMARK", "MIPS-DENMARK" }, { 0x00D0A1, "OSKAR VIERLING GMBH + CO. KG", "OSKAR-VIERLING-+" }, { 0x00D0A2, "INTEGRATED DEVICE", "INTEGRATED-DEVICE" }, { 0x00D0A3, "VOCAL DATA, INC.", "VOCAL-DATA" }, { 0x00D0A4, "ALANTRO COMMUNICATIONS", "ALANTRO-COMMUNICATION" }, { 0x00D0A5, "AMERICAN ARIUM", "AMERICAN-ARIUM" }, { 0x00D0A6, "LANBIRD TECHNOLOGY CO., LTD.", "LANBIRD" }, { 0x00D0A7, "TOKYO SOKKI KENKYUJO CO., LTD.", "TOKYO-SOKKI-KENKYUJO" }, { 0x00D0A8, "NETWORK ENGINES, INC.", "NETWORK-ENGINES" }, { 0x00D0A9, "SHINANO KENSHI CO., LTD.", "SHINANO-KENSHI" }, { 0x00D0AA, "CHASE COMMUNICATIONS", "CHASE-COMMUNICATION" }, { 0x00D0AB, "DELTAKABEL TELECOM CV", "DELTAKABEL-TELECOM-CV" }, { 0x00D0AC, "GRAYSON WIRELESS", "GRAYSON-WIRELESS" }, { 0x00D0AD, "TL INDUSTRIES", "TL-INDUSTRIES" }, { 0x00D0AE, "ORESIS COMMUNICATIONS, INC.", "ORESIS-COMMUNICATION" }, { 0x00D0AF, "CUTLER-HAMMER, INC.", "CUTLER-HAMMER" }, { 0x00D0B0, "BITSWITCH LTD.", "BITSWITCH" }, { 0x00D0B1, "OMEGA ELECTRONICS SA", "OMEGA-ELECTRONICS" }, { 0x00D0B2, "XIOTECH CORPORATION", "XIOTECH" }, { 0x00D0B3, "DRS Technologies Canada Ltd", "DRS-TECHNOLOGIES-CANADA" }, { 0x00D0B4, "KATSUJIMA CO., LTD.", "KATSUJIMA" }, { 0x00D0B5, "IPricot formerly DotCom", "IPRICOT-FORMERLY-DOTCOM" }, { 0x00D0B6, "CRESCENT NETWORKS, INC.", "CRESCENT-NETWORKS" }, { 0x00D0B7, "INTEL CORPORATION", "INTEL" }, { 0x00D0B8, "Iomega Corporation", "IOMEGA" }, { 0x00D0B9, "MICROTEK INTERNATIONAL, INC.", "MICROTEK" }, { 0x00D0BA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D0BB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D0BC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D0BD, "Silicon Image GmbH", "SILICON-IMAGE" }, { 0x00D0BE, "EMUTEC INC.", "EMUTEC" }, { 0x00D0BF, "PIVOTAL TECHNOLOGIES", "PIVOTAL-TECHNOLOGIES" }, { 0x00D0C0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D0C1, "HARMONIC DATA SYSTEMS, LTD.", "HARMONIC-DATA" }, { 0x00D0C2, "BALTHAZAR TECHNOLOGY AB", "BALTHAZAR-AB" }, { 0x00D0C3, "VIVID TECHNOLOGY PTE, LTD.", "VIVID-PTE" }, { 0x00D0C4, "TERATECH CORPORATION", "TERATECH" }, { 0x00D0C5, "COMPUTATIONAL SYSTEMS, INC.", "COMPUTATIONAL" }, { 0x00D0C6, "THOMAS & BETTS CORP.", "THOMAS-BETTS" }, { 0x00D0C7, "PATHWAY, INC.", "PATHWAY" }, { 0x00D0C8, "Prevas A/S", "PREVAS-A/S" }, { 0x00D0C9, "ADVANTECH CO., LTD.", "ADVANTECH" }, { 0x00D0CA, "Intrinsyc Software International Inc.", "INTRINSYC-SOFTWARE" }, { 0x00D0CB, "DASAN CO., LTD.", "DASAN" }, { 0x00D0CC, "TECHNOLOGIES LYRE INC.", "TECHNOLOGIES-LYRE" }, { 0x00D0CD, "ATAN TECHNOLOGY INC.", "ATAN" }, { 0x00D0CE, "ASYST ELECTRONIC", "ASYST" }, { 0x00D0CF, "MORETON BAY", "MORETON-BAY" }, { 0x00D0D0, "ZHONGXING TELECOM LTD.", "ZHONGXING-TELECOM" }, { 0x00D0D1, "Sycamore Networks", "SYCAMORE-NETWORKS" }, { 0x00D0D2, "EPILOG CORPORATION", "EPILOG" }, { 0x00D0D3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D0D4, "V-BITS, INC.", "V-BITS" }, { 0x00D0D5, "GRUNDIG AG", "GRUNDIG" }, { 0x00D0D6, "AETHRA TELECOMUNICAZIONI", "AETHRA-TELECOMUNICAZIONI" }, { 0x00D0D7, "B2C2, INC.", "B2C2" }, { 0x00D0D8, "3Com Corporation", "3COM" }, { 0x00D0D9, "DEDICATED MICROCOMPUTERS", "DEDICATED-MICROCOMPUTERS" }, { 0x00D0DA, "TAICOM DATA SYSTEMS CO., LTD.", "TAICOM-DATA" }, { 0x00D0DB, "MCQUAY INTERNATIONAL", "MCQUAY" }, { 0x00D0DC, "MODULAR MINING SYSTEMS, INC.", "MODULAR-MINING" }, { 0x00D0DD, "SUNRISE TELECOM, INC.", "SUNRISE-TELECOM" }, { 0x00D0DE, "PHILIPS MULTIMEDIA NETWORK", "PHILIPS-MULTIMEDIA-NETWORK" }, { 0x00D0DF, "KUZUMI ELECTRONICS, INC.", "KUZUMI-ELECTRONICS" }, { 0x00D0E0, "DOOIN ELECTRONICS CO.", "DOOIN-ELECTRONICS" }, { 0x00D0E1, "AVIONITEK ISRAEL INC.", "AVIONITEK-ISRAEL" }, { 0x00D0E2, "MRT MICRO, INC.", "MRT-MICRO" }, { 0x00D0E3, "ELE-CHEM ENGINEERING CO., LTD.", "ELE-CHEM-ENGINEERING" }, { 0x00D0E4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D0E5, "SOLIDUM SYSTEMS CORP.", "SOLIDUM" }, { 0x00D0E6, "IBOND INC.", "IBOND" }, { 0x00D0E7, "VCON TELECOMMUNICATION LTD.", "VCON-TELECOMMUNICATION" }, { 0x00D0E8, "MAC SYSTEM CO., LTD.", "MAC-SYSTEM" }, { 0x00D0E9, "Advantage Century Telecommunication Corp.", "ADVANTAGE-CENTURY-TELECOMMUNICATION" }, { 0x00D0EA, "NEXTONE COMMUNICATIONS, INC.", "NEXTONE-COMMUNICATION" }, { 0x00D0EB, "LIGHTERA NETWORKS, INC.", "LIGHTERA-NETWORKS" }, { 0x00D0EC, "NAKAYO TELECOMMUNICATIONS, INC", "NAKAYO-TELECOMMUNICATIONS" }, { 0x00D0ED, "XIOX", "XIOX" }, { 0x00D0EE, "DICTAPHONE CORPORATION", "DICTAPHONE" }, { 0x00D0EF, "IGT", "IGT" }, { 0x00D0F0, "CONVISION TECHNOLOGY GMBH", "CONVISION" }, { 0x00D0F1, "SEGA ENTERPRISES, LTD.", "SEGA-ENTERPRISES" }, { 0x00D0F2, "MONTEREY NETWORKS", "MONTEREY-NETWORKS" }, { 0x00D0F3, "SOLARI DI UDINE SPA", "SOLARI-DI-UDINE-SPA" }, { 0x00D0F4, "CARINTHIAN TECH INSTITUTE", "CARINTHIAN-TECH-INSTITUTE" }, { 0x00D0F5, "ORANGE MICRO, INC.", "ORANGE-MICRO" }, { 0x00D0F6, "Alcatel Canada", "ALCATEL-CANADA" }, { 0x00D0F7, "NEXT NETS CORPORATION", "NEXT-NETS" }, { 0x00D0F8, "FUJIAN STAR TERMINAL", "FUJIAN-STAR-TERMINAL" }, { 0x00D0F9, "ACUTE COMMUNICATIONS CORP.", "ACUTE-COMMUNICATION" }, { 0x00D0FA, "Thales e-Security Ltd.", "THALES-E-SECURITY" }, { 0x00D0FB, "TEK MICROSYSTEMS, INCORPORATED", "TEK-MICROSYSTEMS-INCORPORATED" }, { 0x00D0FC, "GRANITE MICROSYSTEMS", "GRANITE-MICROSYSTEMS" }, { 0x00D0FD, "OPTIMA TELE.COM, INC.", "OPTIMA-TELE-COM" }, { 0x00D0FE, "ASTRAL POINT", "ASTRAL-POINT" }, { 0x00D0FF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00D11C, "ACETEL", "ACETEL" }, { 0x00D38D, "Hotel Technology Next Generation", "HOTEL-NEXT-GENERATION" }, { 0x00D632, "GE Energy", "GE-ENERGY" }, { 0x00DB1E, "Albedo Telecom SL", "ALBEDO-TELECOM-SL" }, { 0x00DB45, "THAMWAY CO.,LTD.", "THAMWAY" }, { 0x00DBDF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x00DD00, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD01, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD02, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD03, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD04, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD05, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD06, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD07, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD08, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD09, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0A, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0B, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0C, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0D, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0E, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DD0F, "UNGERMANN-BASS INC.", "UNGERMANN-BASS" }, { 0x00DEFB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E000, "Fujitsu Limited", "FUJITSU" }, { 0x00E001, "STRAND LIGHTING LIMITED", "STRAND-LIGHTING" }, { 0x00E002, "CROSSROADS SYSTEMS, INC.", "CROSSROADS" }, { 0x00E003, "NOKIA WIRELESS BUSINESS COMMUN", "NOKIA-WIRELESS-BUSINESS-COMMUN" }, { 0x00E004, "PMC-SIERRA, INC.", "PMC-SIERRA" }, { 0x00E005, "TECHNICAL CORP.", "TECHNICAL" }, { 0x00E006, "SILICON INTEGRATED SYS. CORP.", "SILICON-INTEGRATED-SYS" }, { 0x00E007, "Avaya ECS Ltd", "AVAYA-ECS" }, { 0x00E008, "AMAZING CONTROLS! INC.", "AMAZING-CONTROLS!" }, { 0x00E009, "MARATHON TECHNOLOGIES CORP.", "MARATHON-TECHNOLOGIES" }, { 0x00E00A, "DIBA, INC.", "DIBA" }, { 0x00E00B, "ROOFTOP COMMUNICATIONS CORP.", "ROOFTOP-COMMUNICATION" }, { 0x00E00C, "MOTOROLA", "MOTOROLA" }, { 0x00E00D, "RADIANT SYSTEMS", "RADIANT" }, { 0x00E00E, "AVALON IMAGING SYSTEMS, INC.", "AVALON-IMAGING" }, { 0x00E00F, "SHANGHAI BAUD DATA", "SHANGHAI-BAUD-DATA" }, { 0x00E010, "HESS SB-AUTOMATENBAU GmbH", "HESS-SB-AUTOMATENBAU" }, { 0x00E011, "Uniden Corporation", "UNIDEN" }, { 0x00E012, "PLUTO TECHNOLOGIES INTERNATIONAL INC.", "PLUTO-TECHNOLOGIES" }, { 0x00E013, "EASTERN ELECTRONIC CO., LTD.", "EASTERN" }, { 0x00E014, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E015, "HEIWA CORPORATION", "HEIWA" }, { 0x00E016, "RAPID CITY COMMUNICATIONS", "RAPID-CITY-COMMUNICATION" }, { 0x00E017, "EXXACT GmbH", "EXXACT" }, { 0x00E018, "ASUSTEK COMPUTER INC.", "ASUSTEK" }, { 0x00E019, "ING. GIORDANO ELETTRONICA", "ING-GIORDANO-ELETTRONICA" }, { 0x00E01A, "COMTEC SYSTEMS. CO., LTD.", "COMTEC" }, { 0x00E01B, "SPHERE COMMUNICATIONS, INC.", "SPHERE-COMMUNICATION" }, { 0x00E01C, "Cradlepoint, Inc", "CRADLEPOINT" }, { 0x00E01D, "WebTV NETWORKS, INC.", "WEBTV-NETWORKS" }, { 0x00E01E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E01F, "AVIDIA Systems, Inc.", "AVIDIA" }, { 0x00E020, "TECNOMEN OY", "TECNOMEN-OY" }, { 0x00E021, "FREEGATE CORP.", "FREEGATE" }, { 0x00E022, "Analog Devices Inc.", "ANALOG-DEVICES" }, { 0x00E023, "TELRAD", "TELRAD" }, { 0x00E024, "GADZOOX NETWORKS", "GADZOOX-NETWORKS" }, { 0x00E025, "dit Co., Ltd.", "DIT" }, { 0x00E026, "Redlake MASD LLC", "REDLAKE-MASD-LLC" }, { 0x00E027, "DUX, INC.", "DUX" }, { 0x00E028, "APTIX CORPORATION", "APTIX" }, { 0x00E029, "STANDARD MICROSYSTEMS CORP.", "STANDARD-MICROSYSTEMS" }, { 0x00E02A, "TANDBERG TELEVISION AS", "TANDBERG-TELEVISION-AS" }, { 0x00E02B, "EXTREME NETWORKS", "EXTREME-NETWORKS" }, { 0x00E02C, "AST COMPUTER", "AST" }, { 0x00E02D, "InnoMediaLogic, Inc.", "INNOMEDIALOGIC" }, { 0x00E02E, "SPC ELECTRONICS CORPORATION", "SPC-ELECTRONICS" }, { 0x00E02F, "MCNS HOLDINGS, L.P.", "MCNS-HOLDINGS-L-P" }, { 0x00E030, "MELITA INTERNATIONAL CORP.", "MELITA" }, { 0x00E031, "HAGIWARA ELECTRIC CO., LTD.", "HAGIWARA-ELECTRIC" }, { 0x00E032, "MISYS FINANCIAL SYSTEMS, LTD.", "MISYS-FINANCIAL" }, { 0x00E033, "E.E.P.D. GmbH", "E-E-P-D" }, { 0x00E034, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E035, "Emerson Network Power", "EMERSON-NETWORK-POWER" }, { 0x00E036, "PIONEER CORPORATION", "PIONEER" }, { 0x00E037, "CENTURY CORPORATION", "CENTURY" }, { 0x00E038, "PROXIMA CORPORATION", "PROXIMA" }, { 0x00E039, "PARADYNE CORP.", "PARADYNE" }, { 0x00E03A, "CABLETRON SYSTEMS, INC.", "CABLETRON" }, { 0x00E03B, "PROMINET CORPORATION", "PROMINET" }, { 0x00E03C, "AdvanSys", "ADVANSYS" }, { 0x00E03D, "FOCON ELECTRONIC SYSTEMS A/S", "FOCON-A/S" }, { 0x00E03E, "ALFATECH, INC.", "ALFATECH" }, { 0x00E03F, "JATON CORPORATION", "JATON" }, { 0x00E040, "DeskStation Technology, Inc.", "DESKSTATION" }, { 0x00E041, "CSPI", "CSPI" }, { 0x00E042, "Pacom Systems Ltd.", "PACOM" }, { 0x00E043, "VitalCom", "VITALCOM" }, { 0x00E044, "LSICS CORPORATION", "LSICS" }, { 0x00E045, "TOUCHWAVE, INC.", "TOUCHWAVE" }, { 0x00E046, "BENTLY NEVADA CORP.", "BENTLY-NEVADA" }, { 0x00E047, "InFocus Corporation", "INFOCUS" }, { 0x00E048, "SDL COMMUNICATIONS, INC.", "SDL-COMMUNICATION" }, { 0x00E049, "MICROWI ELECTRONIC GmbH", "MICROWI" }, { 0x00E04A, "ENHANCED MESSAGING SYSTEMS, INC", "ENHANCED-MESSAGING" }, { 0x00E04B, "JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH", "JUMP-INDUSTRIELLE-COMPUTERTECHNIK" }, { 0x00E04C, "REALTEK SEMICONDUCTOR CORP.", "REALTEK-SEMICONDUCTOR" }, { 0x00E04D, "INTERNET INITIATIVE JAPAN, INC", "INTERNET-INITIATIVE-JAPAN" }, { 0x00E04E, "SANYO DENKI CO., LTD.", "SANYO-DENKI" }, { 0x00E04F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E050, "EXECUTONE INFORMATION SYSTEMS, INC.", "EXECUTONE-INFORMATION" }, { 0x00E051, "TALX CORPORATION", "TALX" }, { 0x00E052, "Brocade Communications Systems, Inc", "BROCADE-COMMUNICATION" }, { 0x00E053, "CELLPORT LABS, INC.", "CELLPORT-LABS" }, { 0x00E054, "KODAI HITEC CO., LTD.", "KODAI-HITEC" }, { 0x00E055, "INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A.", "INGENIERIA-ELECTRONICA-COMERCIAL-INELCOM" }, { 0x00E056, "HOLONTECH CORPORATION", "HOLONTECH" }, { 0x00E057, "HAN MICROTELECOM. CO., LTD.", "HAN-MICROTELECOM" }, { 0x00E058, "PHASE ONE DENMARK A/S", "PHASE-ONE-DENMARK-A/S" }, { 0x00E059, "CONTROLLED ENVIRONMENTS, LTD.", "CONTROLLED-ENVIRONMENTS" }, { 0x00E05A, "GALEA NETWORK SECURITY", "GALEA-NETWORK-SECURITY" }, { 0x00E05B, "WEST END SYSTEMS CORP.", "WEST-END" }, { 0x00E05C, "MATSUSHITA KOTOBUKI ELECTRONICS INDUSTRIES, LTD.", "MATSUSHITA-KOTOBUKI-ELECTRONICS-INDUSTRIES" }, { 0x00E05D, "UNITEC CO., LTD.", "UNITEC" }, { 0x00E05E, "JAPAN AVIATION ELECTRONICS INDUSTRY, LTD.", "JAPAN-AVIATION-ELECTRONICS-INDUSTRY" }, { 0x00E05F, "e-Net, Inc.", "E-NET" }, { 0x00E060, "SHERWOOD", "SHERWOOD" }, { 0x00E061, "EdgePoint Networks, Inc.", "EDGEPOINT-NETWORKS" }, { 0x00E062, "HOST ENGINEERING", "HOST-ENGINEERING" }, { 0x00E063, "CABLETRON - YAGO SYSTEMS, INC.", "CABLETRON---YAGO" }, { 0x00E064, "SAMSUNG ELECTRONICS", "SAMSUNG-ELECTRONICS" }, { 0x00E065, "OPTICAL ACCESS INTERNATIONAL", "OPTICAL-ACCESS" }, { 0x00E066, "ProMax Systems, Inc.", "PROMAX" }, { 0x00E067, "eac AUTOMATION-CONSULTING GmbH", "EAC-AUTOMATION-CONSULTING" }, { 0x00E068, "MERRIMAC SYSTEMS INC.", "MERRIMAC" }, { 0x00E069, "JAYCOR", "JAYCOR" }, { 0x00E06A, "KAPSCH AG", "KAPSCH" }, { 0x00E06B, "W&G SPECIAL PRODUCTS", "W-G-SPECIAL-PRODUCTS" }, { 0x00E06C, "Ultra Electronics Limited (AEP Networks)", "ULTRA-ELECTRONICS-AEP-NETWORKS" }, { 0x00E06D, "COMPUWARE CORPORATION", "COMPUWARE" }, { 0x00E06E, "FAR SYSTEMS S.p.A.", "FAR-S-P-A" }, { 0x00E06F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x00E070, "DH TECHNOLOGY", "DH" }, { 0x00E071, "EPIS MICROCOMPUTER", "EPIS-MICROCOMPUTER" }, { 0x00E072, "LYNK", "LYNK" }, { 0x00E073, "NATIONAL AMUSEMENT NETWORK, INC.", "NATIONAL-AMUSEMENT-NETWORK" }, { 0x00E074, "TIERNAN COMMUNICATIONS, INC.", "TIERNAN-COMMUNICATION" }, { 0x00E075, "Verilink Corporation", "VERILINK" }, { 0x00E076, "DEVELOPMENT CONCEPTS, INC.", "DEVELOPMENT-CONCEPTS" }, { 0x00E077, "WEBGEAR, INC.", "WEBGEAR" }, { 0x00E078, "BERKELEY NETWORKS", "BERKELEY-NETWORKS" }, { 0x00E079, "A.T.N.R.", "A-T-N-R" }, { 0x00E07A, "MIKRODIDAKT AB", "MIKRODIDAKT-AB" }, { 0x00E07B, "BAY NETWORKS", "BAY-NETWORKS" }, { 0x00E07C, "METTLER-TOLEDO, INC.", "METTLER-TOLEDO" }, { 0x00E07D, "NETRONIX, INC.", "NETRONIX" }, { 0x00E07E, "WALT DISNEY IMAGINEERING", "WALT-DISNEY-IMAGINEERING" }, { 0x00E07F, "LOGISTISTEM s.r.l.", "LOGISTISTEM-S-R-L" }, { 0x00E080, "CONTROL RESOURCES CORPORATION", "CONTROL-RESOURCES" }, { 0x00E081, "TYAN COMPUTER CORP.", "TYAN" }, { 0x00E082, "ANERMA", "ANERMA" }, { 0x00E083, "JATO TECHNOLOGIES, INC.", "JATO-TECHNOLOGIES" }, { 0x00E084, "COMPULITE R&D", "COMPULITE-R-D" }, { 0x00E085, "GLOBAL MAINTECH, INC.", "GLOBAL-MAINTECH" }, { 0x00E086, "Emerson Network Power, Avocent Division", "EMERSON-NETWORK-POWER-AVOCENT-DIVISION" }, { 0x00E087, "LeCroy - Networking Productions Division", "LECROY---NETWORKING-PRODUCTIONS-DIVISION" }, { 0x00E088, "LTX-Credence CORPORATION", "LTX-CREDENCE" }, { 0x00E089, "ION Networks, Inc.", "ION-NETWORKS" }, { 0x00E08A, "GEC AVERY, LTD.", "GEC-AVERY" }, { 0x00E08B, "QLogic Corp.", "QLOGIC" }, { 0x00E08C, "NEOPARADIGM LABS, INC.", "NEOPARADIGM-LABS" }, { 0x00E08D, "PRESSURE SYSTEMS, INC.", "PRESSURE" }, { 0x00E08E, "UTSTARCOM", "UTSTARCOM" }, { 0x00E08F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E090, "BECKMAN LAB. AUTOMATION DIV.", "BECKMAN-LAB-AUTOMATION-DIV" }, { 0x00E091, "LG ELECTRONICS, INC.", "LG-ELECTRONICS" }, { 0x00E092, "ADMTEK INCORPORATED", "ADMTEK-INCORPORATED" }, { 0x00E093, "ACKFIN NETWORKS", "ACKFIN-NETWORKS" }, { 0x00E094, "OSAI SRL", "OSAI-SRL" }, { 0x00E095, "ADVANCED-VISION TECHNOLGIES CORP.", "ADVANCED-VISION-TECHNOLGIES" }, { 0x00E096, "SHIMADZU CORPORATION", "SHIMADZU" }, { 0x00E097, "CARRIER ACCESS CORPORATION", "CARRIER-ACCESS" }, { 0x00E098, "AboCom Systems, Inc.", "ABOCOM" }, { 0x00E099, "SAMSON AG", "SAMSON" }, { 0x00E09A, "Positron Inc.", "POSITRON" }, { 0x00E09B, "ENGAGE NETWORKS, INC.", "ENGAGE-NETWORKS" }, { 0x00E09C, "MII", "MII" }, { 0x00E09D, "SARNOFF CORPORATION", "SARNOFF" }, { 0x00E09E, "QUANTUM CORPORATION", "QUANTUM" }, { 0x00E09F, "PIXEL VISION", "PIXEL-VISION" }, { 0x00E0A0, "WILTRON CO.", "WILTRON" }, { 0x00E0A1, "HIMA PAUL HILDEBRANDT GmbH Co. KG", "HIMA-PAUL-HILDEBRANDT" }, { 0x00E0A2, "MICROSLATE INC.", "MICROSLATE" }, { 0x00E0A3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E0A4, "ESAOTE S.p.A.", "ESAOTE-S-P-A" }, { 0x00E0A5, "ComCore Semiconductor, Inc.", "COMCORE-SEMICONDUCTOR" }, { 0x00E0A6, "TELOGY NETWORKS, INC.", "TELOGY-NETWORKS" }, { 0x00E0A7, "IPC INFORMATION SYSTEMS, INC.", "IPC-INFORMATION" }, { 0x00E0A8, "SAT GmbH & Co.", "SAT" }, { 0x00E0A9, "FUNAI ELECTRIC CO., LTD.", "FUNAI-ELECTRIC" }, { 0x00E0AA, "ELECTROSONIC LTD.", "ELECTROSONIC" }, { 0x00E0AB, "DIMAT S.A.", "DIMAT" }, { 0x00E0AC, "MIDSCO, INC.", "MIDSCO" }, { 0x00E0AD, "EES TECHNOLOGY, LTD.", "EES" }, { 0x00E0AE, "XAQTI CORPORATION", "XAQTI" }, { 0x00E0AF, "GENERAL DYNAMICS INFORMATION SYSTEMS", "GENERAL-DYNAMICS-INFORMATION" }, { 0x00E0B0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E0B1, "Alcatel-Lucent, Enterprise Business Group", "ALCATEL-LUCENT-BUSINESS-GROUP" }, { 0x00E0B2, "TELMAX COMMUNICATIONS CORP.", "TELMAX-COMMUNICATION" }, { 0x00E0B3, "EtherWAN Systems, Inc.", "ETHERWAN" }, { 0x00E0B4, "TECHNO SCOPE CO., LTD.", "TECHNO-SCOPE" }, { 0x00E0B5, "ARDENT COMMUNICATIONS CORP.", "ARDENT-COMMUNICATION" }, { 0x00E0B6, "Entrada Networks", "ENTRADA-NETWORKS" }, { 0x00E0B7, "PI GROUP, LTD.", "PI-GROUP" }, { 0x00E0B8, "GATEWAY 2000", "GATEWAY-2000" }, { 0x00E0B9, "BYAS SYSTEMS", "BYAS" }, { 0x00E0BA, "BERGHOF AUTOMATIONSTECHNIK GmbH", "BERGHOF-AUTOMATIONSTECHNIK" }, { 0x00E0BB, "NBX CORPORATION", "NBX" }, { 0x00E0BC, "SYMON COMMUNICATIONS, INC.", "SYMON-COMMUNICATION" }, { 0x00E0BD, "INTERFACE SYSTEMS, INC.", "INTERFACE" }, { 0x00E0BE, "GENROCO INTERNATIONAL, INC.", "GENROCO" }, { 0x00E0BF, "TORRENT NETWORKING TECHNOLOGIES CORP.", "TORRENT-NETWORKING-TECHNOLOGIES" }, { 0x00E0C0, "SEIWA ELECTRIC MFG. CO., LTD.", "SEIWA-ELECTRIC-MFG" }, { 0x00E0C1, "MEMOREX TELEX JAPAN, LTD.", "MEMOREX-TELEX-JAPAN" }, { 0x00E0C2, "NECSY S.p.A.", "NECSY-S-P-A" }, { 0x00E0C3, "SAKAI SYSTEM DEVELOPMENT CORP.", "SAKAI-SYSTEM-DEVELOPMENT" }, { 0x00E0C4, "HORNER ELECTRIC, INC.", "HORNER-ELECTRIC" }, { 0x00E0C5, "BCOM ELECTRONICS INC.", "BCOM-ELECTRONICS" }, { 0x00E0C6, "LINK2IT, L.L.C.", "LINK2IT-L-L-C" }, { 0x00E0C7, "EUROTECH SRL", "EUROTECH-SRL" }, { 0x00E0C8, "VIRTUAL ACCESS, LTD.", "VIRTUAL-ACCESS" }, { 0x00E0C9, "AutomatedLogic Corporation", "AUTOMATEDLOGIC" }, { 0x00E0CA, "BEST DATA PRODUCTS", "BEST-DATA-PRODUCTS" }, { 0x00E0CB, "RESON, INC.", "RESON" }, { 0x00E0CC, "HERO SYSTEMS, LTD.", "HERO" }, { 0x00E0CD, "SAAB SENSIS CORPORATION", "SAAB-SENSIS" }, { 0x00E0CE, "ARN", "ARN" }, { 0x00E0CF, "INTEGRATED DEVICE TECHNOLOGY, INC.", "INTEGRATED-DEVICE" }, { 0x00E0D0, "NETSPEED, INC.", "NETSPEED" }, { 0x00E0D1, "TELSIS LIMITED", "TELSIS" }, { 0x00E0D2, "VERSANET COMMUNICATIONS, INC.", "VERSANET-COMMUNICATION" }, { 0x00E0D3, "DATENTECHNIK GmbH", "DATENTECHNIK" }, { 0x00E0D4, "EXCELLENT COMPUTER", "EXCELLENT" }, { 0x00E0D5, "Emulex Corporation", "EMULEX" }, { 0x00E0D6, "COMPUTER & COMMUNICATION RESEARCH LAB.", "COMMUNICATION-RESEARCH-LAB" }, { 0x00E0D7, "SUNSHINE ELECTRONICS, INC.", "SUNSHINE-ELECTRONICS" }, { 0x00E0D8, "LANBit Computer, Inc.", "LANBIT" }, { 0x00E0D9, "TAZMO CO., LTD.", "TAZMO" }, { 0x00E0DA, "Alcatel North America ESD", "ALCATEL-NORTH-AMERICA-ESD" }, { 0x00E0DB, "ViaVideo Communications, Inc.", "VIAVIDEO-COMMUNICATION" }, { 0x00E0DC, "NEXWARE CORP.", "NEXWARE" }, { 0x00E0DD, "ZENITH ELECTRONICS CORPORATION", "ZENITH-ELECTRONICS" }, { 0x00E0DE, "DATAX NV", "DATAX-NV" }, { 0x00E0DF, "KEYMILE GmbH", "KEYMILE" }, { 0x00E0E0, "SI ELECTRONICS, LTD.", "SI-ELECTRONICS" }, { 0x00E0E1, "G2 NETWORKS, INC.", "G2-NETWORKS" }, { 0x00E0E2, "INNOVA CORP.", "INNOVA" }, { 0x00E0E3, "SK-ELEKTRONIK GmbH", "SK-ELEKTRONIK" }, { 0x00E0E4, "FANUC ROBOTICS NORTH AMERICA, Inc.", "FANUC-ROBOTICS-NORTH-AMERICA" }, { 0x00E0E5, "CINCO NETWORKS, INC.", "CINCO-NETWORKS" }, { 0x00E0E6, "INCAA DATACOM B.V.", "INCAA-DATACOM" }, { 0x00E0E7, "RAYTHEON E-SYSTEMS, INC.", "RAYTHEON-E" }, { 0x00E0E8, "GRETACODER Data Systems AG", "GRETACODER-DATA" }, { 0x00E0E9, "DATA LABS, INC.", "DATA-LABS" }, { 0x00E0EA, "INNOVAT COMMUNICATIONS, INC.", "INNOVAT-COMMUNICATION" }, { 0x00E0EB, "DIGICOM SYSTEMS, INCORPORATED", "DIGICOM-INCORPORATED" }, { 0x00E0EC, "CELESTICA INC.", "CELESTICA" }, { 0x00E0ED, "SILICOM, LTD.", "SILICOM" }, { 0x00E0EE, "MAREL HF", "MAREL-HF" }, { 0x00E0EF, "DIONEX", "DIONEX" }, { 0x00E0F0, "ABLER TECHNOLOGY, INC.", "ABLER" }, { 0x00E0F1, "THAT CORPORATION", "THAT" }, { 0x00E0F2, "ARLOTTO COMNET, INC.", "ARLOTTO-COMNET" }, { 0x00E0F3, "WebSprint Communications, Inc.", "WEBSPRINT-COMMUNICATION" }, { 0x00E0F4, "INSIDE Technology A/S", "INSIDE-A/S" }, { 0x00E0F5, "TELES AG", "TELES" }, { 0x00E0F6, "DECISION EUROPE", "DECISION-EUROPE" }, { 0x00E0F7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E0F8, "DICNA CONTROL AB", "DICNA-CONTROL-AB" }, { 0x00E0F9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E0FA, "TRL TECHNOLOGY, LTD.", "TRL" }, { 0x00E0FB, "LEIGHTRONIX, INC.", "LEIGHTRONIX" }, { 0x00E0FC, "HUAWEI TECHNOLOGIES CO., LTD.", "HUAWEI-TECHNOLOGIES" }, { 0x00E0FD, "A-TREND TECHNOLOGY CO., LTD.", "A-TREND" }, { 0x00E0FE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x00E0FF, "SECURITY DYNAMICS TECHNOLOGIES, Inc.", "SECURITY-DYNAMICS-TECHNOLOGIES" }, { 0x00E175, "AK-Systems Ltd", "AK" }, { 0x00E3B2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x00E666, "ARIMA Communications Corp.", "ARIMA-COMMUNICATION" }, { 0x00E6D3, "NIXDORF COMPUTER CORP.", "NIXDORF" }, { 0x00E8AB, "Meggitt Training Systems, Inc.", "MEGGITT-TRAINING" }, { 0x00EB2D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x00F051, "KWB Gmbh", "KWB" }, { 0x00F403, "Orbis Systems Oy", "ORBIS-OY" }, { 0x00F4B9, "Apple", "APPLE" }, { 0x00F860, "PT. Panggung Electric Citrabuana", "PT-PANGGUNG-ELECTRIC-CITRABUANA" }, { 0x00FA3B, "CLOOS ELECTRONIC GMBH", "CLOOS" }, { 0x00FC58, "WebSilicon Ltd.", "WEBSILICON" }, { 0x00FC70, "Intrepid Control Systems, Inc.", "INTREPID-CONTROL" }, { 0x00FD4C, "NEVATEC", "NEVATEC" }, { 0x020701, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x021C7C, "PERQ SYSTEMS CORPORATION", "PERQ" }, { 0x026086, "LOGIC REPLACEMENT TECH. LTD.", "LOGIC-REPLACEMENT-TECH" }, { 0x02608C, "3COM CORPORATION", "3COM" }, { 0x027001, "RACAL-DATACOM", "RACAL-DATACOM" }, { 0x0270B0, "M/A-COM INC. COMPANIES", "M/A-COM-COMPANIES" }, { 0x0270B3, "DATA RECALL LTD", "DATA-RECALL" }, { 0x029D8E, "CARDIAC RECORDERS INC.", "CARDIAC-RECORDERS" }, { 0x02AA3C, "OLIVETTI TELECOMM SPA (OLTECO)", "OLIVETTI-TELECOMM-SPA-OLTECO" }, { 0x02BB01, "OCTOTHORPE CORP.", "OCTOTHORPE" }, { 0x02C08C, "3COM CORPORATION", "3COM" }, { 0x02CF1C, "COMMUNICATION MACHINERY CORP.", "COMMUNICATION-MACHINERY" }, { 0x02E6D3, "NIXDORF COMPUTER CORPORATION", "NIXDORF" }, { 0x040A83, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x040AE0, "XMIT AG COMPUTER NETWORKS", "XMIT-NETWORKS" }, { 0x040CCE, "Apple", "APPLE" }, { 0x040EC2, "ViewSonic Mobile China Limited", "VIEWSONIC-MOBILE-CHINA" }, { 0x041552, "Apple", "APPLE" }, { 0x04180F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0418B6, "PRIVATE", "PRIVATE" }, { 0x0418D6, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x041A04, "WaveIP", "WAVEIP" }, { 0x041B94, "Host Mobility AB", "HOST-MOBILITY-AB" }, { 0x041BBA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x041D10, "Dream Ware Inc.", "DREAM-WARE" }, { 0x041E64, "Apple", "APPLE" }, { 0x04209A, "Panasonic AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x042234, "Wireless Standard Extensions", "WIRELESS-STANDARD-EXTENSIONS" }, { 0x042605, "GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH", "GFR-GESELLSCHAFT-FüR-REGELUNGSTECHNIK-UND-ENERGIEEINSPARUNG-MBH" }, { 0x042665, "Apple", "APPLE" }, { 0x042BBB, "PicoCELA, Inc.", "PICOCELA" }, { 0x042F56, "ATOCS (Shenzhen) LTD", "ATOCS-SHENZHEN" }, { 0x0432F4, "Partron", "PARTRON" }, { 0x043604, "Gyeyoung I&T", "GYEYOUNG-I-T" }, { 0x043D98, "ChongQing QingJia Electronics CO.,LTD", "CHONGQING-QINGJIA-ELECTRONICS" }, { 0x0444A1, "TELECON GALICIA,S.A.", "TELECON-GALICIA" }, { 0x044665, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x044A50, "Ramaxel Technology (Shenzhen) limited company", "RAMAXEL-SHENZHEN-COMPANY" }, { 0x044BFF, "GuangZhou Hedy Digital Technology Co., Ltd", "GUANGZHOU-HEDY-DIGITAL" }, { 0x044CEF, "Fujian Sanao Technology Co.,Ltd", "FUJIAN-SANAO" }, { 0x044E06, "Ericsson AB", "ERICSSON-AB" }, { 0x044F8B, "Adapteva, Inc.", "ADAPTEVA" }, { 0x044FAA, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x045453, "Apple", "APPLE" }, { 0x0455CA, "BriView (Xiamen) Corp.", "BRIVIEW-XIAMEN" }, { 0x04586F, "Sichuan Whayer information industry Co.,LTD", "SICHUAN-WHAYER-INFORMATION-INDUSTRY" }, { 0x045A95, "Nokia Corporation", "NOKIA" }, { 0x045C06, "Zmodo Technology Corporation", "ZMODO" }, { 0x045D56, "camtron industrial inc.", "CAMTRON-INDUSTRIAL" }, { 0x045FA7, "Shenzhen Yichen Technology Development Co.,LTD", "SHENZHEN-YICHEN-DEVELOPMENT" }, { 0x0462D7, "ALSTOM HYDRO FRANCE", "ALSTOM-HYDRO-FRANCE" }, { 0x0463E0, "Nome Oy", "NOME-OY" }, { 0x046D42, "Bryston Ltd.", "BRYSTON" }, { 0x046E49, "TaiYear Electronic Technology (Suzhou) Co., Ltd", "TAIYEAR-SUZHOU" }, { 0x0470BC, "Globalstar Inc.", "GLOBALSTAR" }, { 0x0474A1, "Aligera Equipamentos Digitais Ltda", "ALIGERA-EQUIPAMENTOS-DIGITAIS-LTDA" }, { 0x0475F5, "CSST", "CSST" }, { 0x04766E, "ALPS Co,. Ltd.", "ALPS" }, { 0x047D7B, "Quanta Computer Inc.", "QUANTA" }, { 0x0481AE, "Clack Corporation", "CLACK" }, { 0x04848A, "7INOVA TECHNOLOGY LIMITED", "7INOVA" }, { 0x04888C, "Eifelwerk Butler Systeme GmbH", "EIFELWERK-BUTLER-SYSTEME" }, { 0x0488E2, "Beats Electronics LLC", "BEATS-ELECTRONICS-LLC" }, { 0x048A15, "Avaya, Inc", "AVAYA" }, { 0x048B42, "Skspruce Technology Limited", "SKSPRUCE" }, { 0x048C03, "ThinPAD Technology (Shenzhen)CO.,LTD", "THINPAD-SHENZHEN" }, { 0x048D38, "Netcore Technology Inc.", "NETCORE" }, { 0x0494A1, "CATCH THE WIND INC", "CATCH-THE-WIND" }, { 0x0498F3, "ALPS Electric Co,. Ltd.", "ALPS-ELECTRIC" }, { 0x049C62, "BMT Medical Technology s.r.o.", "BMT-MEDICAL-S-R-O" }, { 0x049F06, "Smobile Co., Ltd.", "SMOBILE" }, { 0x049F81, "Netscout Systems, Inc.", "NETSCOUT" }, { 0x04A151, "NETGEAR INC.,", "NETGEAR" }, { 0x04A3F3, "Emicon", "EMICON" }, { 0x04A82A, "Nokia Corporation", "NOKIA" }, { 0x04B3B6, "Seamap (UK) Ltd", "SEAMAP-UK" }, { 0x04B466, "BSP Co., Ltd.", "BSP" }, { 0x04BFA8, "ISB Corporation", "ISB" }, { 0x04C05B, "Tigo Energy", "TIGO-ENERGY" }, { 0x04C06F, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x04C1B9, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x04C5A4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x04C880, "Samtec Inc", "SAMTEC" }, { 0x04CB1D, "Traka plc", "TRAKA-PLC" }, { 0x04CE14, "Wilocity LTD.", "WILOCITY" }, { 0x04CF25, "MANYCOLORS, INC.", "MANYCOLORS" }, { 0x04D437, "ZNV", "ZNV" }, { 0x04D783, "Y&H E&C Co.,LTD.", "Y-H-E-C" }, { 0x04DAD2, "Cisco", "CISCO" }, { 0x04DB56, "Apple, Inc.", "APPLE" }, { 0x04DB8A, "Suntech International Ltd.", "SUNTECH" }, { 0x04DD4C, "Velocytech", "VELOCYTECH" }, { 0x04DF69, "Car Connectivity Consortium", "CAR-CONNECTIVITY-CONSORTIUM" }, { 0x04E0C4, "TRIUMPH-ADLER AG", "TRIUMPH-ADLER" }, { 0x04E1C8, "IMS Soluções em Energia Ltda.", "IMS-SOLUçõES-EM-ENERGIA-LTDA" }, { 0x04E2F8, "AEP Ticketing solutions srl", "AEP-TICKETING-SOLUTIONS-SRL" }, { 0x04E451, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x04E536, "Apple", "APPLE" }, { 0x04E548, "Cohda Wireless Pty Ltd", "COHDA-WIRELESS-PTY" }, { 0x04E662, "Acroname Inc.", "ACRONAME" }, { 0x04E9E5, "PJRC.COM, LLC", "PJRC-COM-LLC" }, { 0x04EE91, "x-fabric GmbH", "X-FABRIC" }, { 0x04F021, "Compex Systems Pte Ltd", "COMPEX-PTE" }, { 0x04F13E, "Apple", "APPLE" }, { 0x04F17D, "Tarana Wireless", "TARANA-WIRELESS" }, { 0x04F4BC, "Xena Networks", "XENA-NETWORKS" }, { 0x04F7E4, "Apple", "APPLE" }, { 0x04F8C2, "Flaircomm Microelectronics, Inc.", "FLAIRCOMM-MICROELECTRONICS" }, { 0x04F938, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x04FE31, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x04FE7F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x04FF51, "NOVAMEDIA INNOVISION SP. Z O.O.", "NOVAMEDIA-INNOVISION-SP-Z-O-O" }, { 0x080001, "COMPUTERVISION CORPORATION", "COMPUTERVISION" }, { 0x080002, "BRIDGE COMMUNICATIONS INC.", "BRIDGE-COMMUNICATION" }, { 0x080003, "ADVANCED COMPUTER COMM.", "ADVANCED-COMM" }, { 0x080004, "CROMEMCO INCORPORATED", "CROMEMCO-INCORPORATED" }, { 0x080005, "SYMBOLICS INC.", "SYMBOLICS" }, { 0x080006, "SIEMENS AG", "SIEMENS" }, { 0x080007, "Apple", "APPLE" }, { 0x080008, "BOLT BERANEK AND NEWMAN INC.", "BOLT-BERANEK-AND-NEWMAN" }, { 0x080009, "HEWLETT PACKARD", "HEWLETT-PACKARD" }, { 0x08000A, "NESTAR SYSTEMS INCORPORATED", "NESTAR-INCORPORATED" }, { 0x08000B, "UNISYS CORPORATION", "UNISYS" }, { 0x08000C, "MIKLYN DEVELOPMENT CO.", "MIKLYN-DEVELOPMENT" }, { 0x08000D, "INTERNATIONAL COMPUTERS LTD.", "COMPUTERS" }, { 0x08000E, "NCR CORPORATION", "NCR" }, { 0x08000F, "MITEL CORPORATION", "MITEL" }, { 0x080011, "TEKTRONIX INC.", "TEKTRONIX" }, { 0x080012, "BELL ATLANTIC INTEGRATED SYST.", "BELL-ATLANTIC-INTEGRATED-SYST" }, { 0x080013, "EXXON", "EXXON" }, { 0x080014, "EXCELAN", "EXCELAN" }, { 0x080015, "STC BUSINESS SYSTEMS", "STC-BUSINESS" }, { 0x080016, "BARRISTER INFO SYS CORP", "BARRISTER-INFO-SYS" }, { 0x080017, "NATIONAL SEMICONDUCTOR", "NATIONAL-SEMICONDUCTOR" }, { 0x080018, "PIRELLI FOCOM NETWORKS", "PIRELLI-FOCOM-NETWORKS" }, { 0x080019, "GENERAL ELECTRIC CORPORATION", "GENERAL-ELECTRIC" }, { 0x08001A, "TIARA/ 10NET", "TIARA/-10NET" }, { 0x08001B, "EMC Corporation", "EMC" }, { 0x08001C, "KDD-KOKUSAI DEBNSIN DENWA CO.", "KDD-KOKUSAI-DEBNSIN-DENWA" }, { 0x08001D, "ABLE COMMUNICATIONS INC.", "ABLE-COMMUNICATION" }, { 0x08001E, "APOLLO COMPUTER INC.", "APOLLO" }, { 0x08001F, "SHARP CORPORATION", "SHARP" }, { 0x080020, "Oracle Corporation", "ORACLE" }, { 0x080021, "3M COMPANY", "3M-COMPANY" }, { 0x080022, "NBI INC.", "NBI" }, { 0x080023, "Panasonic Communications Co., Ltd.", "PANASONIC-COMMUNICATION" }, { 0x080024, "10NET COMMUNICATIONS/DCA", "10NET-COMMUNICATION/DCA" }, { 0x080025, "CONTROL DATA", "CONTROL-DATA" }, { 0x080026, "NORSK DATA A.S.", "NORSK-DATA-A-S" }, { 0x080027, "CADMUS COMPUTER SYSTEMS (possible VirtualBox VM)", "CADMUS-VIRTUAL" }, { 0x080028, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x080029, "MEGATEK CORPORATION", "MEGATEK" }, { 0x08002A, "MOSAIC TECHNOLOGIES INC.", "MOSAIC-TECHNOLOGIES" }, { 0x08002B, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0x08002C, "BRITTON LEE INC.", "BRITTON-LEE" }, { 0x08002D, "LAN-TEC INC.", "LAN-TEC" }, { 0x08002E, "METAPHOR COMPUTER SYSTEMS", "METAPHOR" }, { 0x08002F, "PRIME COMPUTER INC.", "PRIME" }, { 0x080030, "NETWORK RESEARCH CORPORATION", "NETWORK-RESEARCH" }, { 0x080030, "CERN", "CERN" }, { 0x080030, "ROYAL MELBOURNE INST OF TECH", "ROYAL-MELBOURNE-INST-OF-TECH" }, { 0x080031, "LITTLE MACHINES INC.", "LITTLE-MACHINES" }, { 0x080032, "TIGAN INCORPORATED", "TIGAN-INCORPORATED" }, { 0x080033, "BAUSCH & LOMB", "BAUSCH-LOMB" }, { 0x080034, "FILENET CORPORATION", "FILENET" }, { 0x080035, "MICROFIVE CORPORATION", "MICROFIVE" }, { 0x080036, "INTERGRAPH CORPORATION", "INTERGRAPH" }, { 0x080037, "FUJI-XEROX CO. LTD.", "FUJI-XEROX" }, { 0x080038, "BULL S.A.S.", "BULL-S" }, { 0x080039, "SPIDER SYSTEMS LIMITED", "SPIDER" }, { 0x08003A, "ORCATECH INC.", "ORCATECH" }, { 0x08003B, "TORUS SYSTEMS LIMITED", "TORUS" }, { 0x08003C, "SCHLUMBERGER WELL SERVICES", "SCHLUMBERGER-WELL-SERVICES" }, { 0x08003D, "CADNETIX CORPORATIONS", "CADNETIX-CORPORATIONS" }, { 0x08003E, "CODEX CORPORATION", "CODEX" }, { 0x08003F, "FRED KOSCHARA ENTERPRISES", "FRED-KOSCHARA-ENTERPRISES" }, { 0x080040, "FERRANTI COMPUTER SYS. LIMITED", "FERRANTI-SYS" }, { 0x080041, "RACAL-MILGO INFORMATION SYS..", "RACAL-MILGO-INFORMATION-SYS" }, { 0x080042, "JAPAN MACNICS CORP.", "JAPAN-MACNICS" }, { 0x080043, "PIXEL COMPUTER INC.", "PIXEL" }, { 0x080044, "DAVID SYSTEMS INC.", "DAVID" }, { 0x080045, "CONCURRENT COMPUTER CORP.", "CONCURRENT" }, { 0x080046, "Sony Corporation", "SONY" }, { 0x080047, "SEQUENT COMPUTER SYSTEMS INC.", "SEQUENT" }, { 0x080048, "EUROTHERM GAUGING SYSTEMS", "EUROTHERM-GAUGING" }, { 0x080049, "UNIVATION", "UNIVATION" }, { 0x08004A, "BANYAN SYSTEMS INC.", "BANYAN" }, { 0x08004B, "PLANNING RESEARCH CORP.", "PLANNING-RESEARCH" }, { 0x08004C, "HYDRA COMPUTER SYSTEMS INC.", "HYDRA" }, { 0x08004D, "CORVUS SYSTEMS INC.", "CORVUS" }, { 0x08004E, "3COM EUROPE LTD.", "3COM" }, { 0x08004F, "CYGNET SYSTEMS", "CYGNET" }, { 0x080050, "DAISY SYSTEMS CORP.", "DAISY" }, { 0x080051, "EXPERDATA", "EXPERDATA" }, { 0x080052, "INSYSTEC", "INSYSTEC" }, { 0x080053, "MIDDLE EAST TECH. UNIVERSITY", "MIDDLE-EAST-TECH-UNIVERSITY" }, { 0x080055, "STANFORD TELECOMM. INC.", "STANFORD-TELECOMM" }, { 0x080056, "STANFORD LINEAR ACCEL. CENTER", "STANFORD-LINEAR-ACCEL-CENTER" }, { 0x080057, "EVANS & SUTHERLAND", "EVANS-SUTHERLAND" }, { 0x080058, "SYSTEMS CONCEPTS", "CONCEPTS" }, { 0x080059, "A/S MYCRON", "A/S-MYCRON" }, { 0x08005A, "IBM Corp", "IBM" }, { 0x08005B, "VTA TECHNOLOGIES INC.", "VTA-TECHNOLOGIES" }, { 0x08005C, "FOUR PHASE SYSTEMS", "FOUR-PHASE" }, { 0x08005D, "GOULD INC.", "GOULD" }, { 0x08005E, "COUNTERPOINT COMPUTER INC.", "COUNTERPOINT" }, { 0x08005F, "SABER TECHNOLOGY CORP.", "SABER" }, { 0x080060, "INDUSTRIAL NETWORKING INC.", "INDUSTRIAL-NETWORKING" }, { 0x080061, "JAROGATE LTD.", "JAROGATE" }, { 0x080062, "GENERAL DYNAMICS", "GENERAL-DYNAMICS" }, { 0x080063, "PLESSEY", "PLESSEY" }, { 0x080064, "Sitasys AG", "SITASYS" }, { 0x080065, "GENRAD INC.", "GENRAD" }, { 0x080066, "AGFA CORPORATION", "AGFA" }, { 0x080067, "COMDESIGN", "COMDESIGN" }, { 0x080068, "RIDGE COMPUTERS", "RIDGE-COMPUTERS" }, { 0x080069, "SILICON GRAPHICS INC.", "SILICON-GRAPHICS" }, { 0x08006A, "ATT BELL LABORATORIES", "ATT-BELL-LABORATORIES" }, { 0x08006B, "ACCEL TECHNOLOGIES INC.", "ACCEL-TECHNOLOGIES" }, { 0x08006C, "SUNTEK TECHNOLOGY INT'L", "SUNTEK" }, { 0x08006D, "WHITECHAPEL COMPUTER WORKS", "WHITECHAPEL-WORKS" }, { 0x08006E, "MASSCOMP", "MASSCOMP" }, { 0x08006F, "PHILIPS APELDOORN B.V.", "PHILIPS-APELDOORN" }, { 0x080070, "MITSUBISHI ELECTRIC CORP.", "MITSUBISHI-ELECTRIC" }, { 0x080071, "MATRA (DSIE)", "MATRA-DSIE" }, { 0x080072, "XEROX CORP UNIV GRANT PROGRAM", "XEROX-UNIV-GRANT-PROGRAM" }, { 0x080073, "TECMAR INC.", "TECMAR" }, { 0x080074, "CASIO COMPUTER CO. LTD.", "CASIO" }, { 0x080075, "DANSK DATA ELECTRONIK", "DANSK-DATA-ELECTRONIK" }, { 0x080076, "PC LAN TECHNOLOGIES", "PC-LAN-TECHNOLOGIES" }, { 0x080077, "TSL COMMUNICATIONS LTD.", "TSL-COMMUNICATION" }, { 0x080078, "ACCELL CORPORATION", "ACCELL" }, { 0x080079, "THE DROID WORKS", "THE-DROID-WORKS" }, { 0x08007A, "INDATA", "INDATA" }, { 0x08007B, "SANYO ELECTRIC CO. LTD.", "SANYO-ELECTRIC" }, { 0x08007C, "VITALINK COMMUNICATIONS CORP.", "VITALINK-COMMUNICATION" }, { 0x08007E, "AMALGAMATED WIRELESS(AUS) LTD", "AMALGAMATED-WIRELESS-AUS" }, { 0x08007F, "CARNEGIE-MELLON UNIVERSITY", "CARNEGIE-MELLON-UNIVERSITY" }, { 0x080080, "AES DATA INC.", "AES-DATA" }, { 0x080081, "ASTECH INC.", "ASTECH" }, { 0x080082, "VERITAS SOFTWARE", "VERITAS-SOFTWARE" }, { 0x080083, "Seiko Instruments Inc.", "SEIKO-INSTRUMENTS" }, { 0x080084, "TOMEN ELECTRONICS CORP.", "TOMEN-ELECTRONICS" }, { 0x080085, "ELXSI", "ELXSI" }, { 0x080086, "KONICA MINOLTA HOLDINGS, INC.", "KONICA-MINOLTA-HOLDINGS" }, { 0x080087, "XYPLEX", "XYPLEX" }, { 0x080088, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x080089, "KINETICS", "KINETICS" }, { 0x08008A, "PerfTech, Inc.", "PERFTECH" }, { 0x08008B, "PYRAMID TECHNOLOGY CORP.", "PYRAMID" }, { 0x08008C, "NETWORK RESEARCH CORPORATION", "NETWORK-RESEARCH" }, { 0x08008D, "XYVISION INC.", "XYVISION" }, { 0x08008E, "TANDEM COMPUTERS", "TANDEM-COMPUTERS" }, { 0x08008F, "CHIPCOM CORPORATION", "CHIPCOM" }, { 0x080090, "SONOMA SYSTEMS", "SONOMA" }, { 0x080371, "KRG CORPORATE", "KRG-CORPORATE" }, { 0x0808C2, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x0808EA, "AMSC", "AMSC" }, { 0x080C0B, "SysMik GmbH Dresden", "SYSMIK-DRESDEN" }, { 0x080CC9, "Mission Technology Group, dba Magma", "MISSION-GROUP-DBA-MAGMA" }, { 0x080D84, "GECO, Inc.", "GECO" }, { 0x080EA8, "Velex s.r.l.", "VELEX-S-R-L" }, { 0x080FFA, "KSP INC.", "KSP" }, { 0x081196, "Intel Corporate", "INTEL-CORPORATE" }, { 0x081443, "UNIBRAIN S.A.", "UNIBRAIN" }, { 0x081651, "Shenzhen Sea Star Technology Co.,Ltd", "SHENZHEN-SEA-STAR" }, { 0x081735, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0817F4, "IBM Corp", "IBM" }, { 0x08181A, "zte corporation", "ZTE" }, { 0x08184C, "A. S. Thomas, Inc.", "A-S-THOMAS" }, { 0x0819A6, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x081DFB, "Shanghai Mexon Communication Technology Co.,Ltd", "SHANGHAI-MEXON-COMMUNICATION" }, { 0x081F3F, "WondaLink Inc.", "WONDALINK" }, { 0x081FF3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x082522, "ADVANSEE", "ADVANSEE" }, { 0x082719, "APS systems/electronic AG", "APS-/" }, { 0x082AD0, "SRD Innovations Inc.", "SRD-INNOVATIONS" }, { 0x082E5F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x083571, "CASwell INC.", "CASWELL" }, { 0x08373D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08379C, "Topaz Co. LTD.", "TOPAZ" }, { 0x0838A5, "Funkwerk plettac electronic GmbH", "FUNKWERK-PLETTAC" }, { 0x083AB8, "Shinoda Plasma Co., Ltd.", "SHINODA-PLASMA" }, { 0x083E0C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x083E8E, "Hon Hai Precision Ind.Co.Ltd", "HON-HAI-PRECISION-IND" }, { 0x083F76, "Intellian Technologies, Inc.", "INTELLIAN-TECHNOLOGIES" }, { 0x084027, "Gridstore Inc.", "GRIDSTORE" }, { 0x08482C, "Raycore Taiwan Co., LTD.", "RAYCORE-TAIWAN" }, { 0x084E1C, "H2A Systems, LLC", "H2A-LLC" }, { 0x084EBF, "Broad Net Mux Corporation", "BROAD-NET-MUX" }, { 0x08512E, "Orion Diagnostica Oy", "ORION-DIAGNOSTICA-OY" }, { 0x085240, "EbV Elektronikbau- und Vertriebs GmbH", "EBV-ELEKTRONIKBAU--UND-VERTRIEBS" }, { 0x085700, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x085AE0, "Recovision Technology Co., Ltd.", "RECOVISION" }, { 0x085B0E, "Fortinet, Inc.", "FORTINET" }, { 0x08606E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x086361, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x0868D0, "Japan System Design", "JAPAN-SYSTEM-DESIGN" }, { 0x0868EA, "EITO ELECTRONICS CO., LTD.", "EITO-ELECTRONICS" }, { 0x087045, "Apple", "APPLE" }, { 0x087572, "Obelux Oy", "OBELUX-OY" }, { 0x087618, "ViE Technologies Sdn. Bhd.", "VIE-TECHNOLOGIES-SDN-BHD" }, { 0x087695, "Auto Industrial Co., Ltd.", "AUTO-INDUSTRIAL" }, { 0x0876FF, "Thomson Telecom Belgium", "THOMSON-TELECOM-BELGIUM" }, { 0x087999, "AIM GmbH", "AIM" }, { 0x087A4C, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x087BAA, "SVYAZKOMPLEKTSERVICE, LLC", "SVYAZKOMPLEKTSERVICE-LLC" }, { 0x087CBE, "Quintic Corp.", "QUINTIC" }, { 0x087D21, "Altasec technology corporation", "ALTASEC" }, { 0x088039, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x0881F4, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x08863B, "Belkin International, Inc.", "BELKIN" }, { 0x088DC8, "Ryowa Electronics Co.,Ltd", "RYOWA-ELECTRONICS" }, { 0x088E4F, "SF Software Solutions", "SF-SOFTWARE-SOLUTIONS" }, { 0x088F2C, "Hills Sound Vision & Lighting", "HILLS-SOUND-VISION-LIGHTING" }, { 0x0896D7, "AVM GmbH", "AVM" }, { 0x089758, "Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary", "SHENZHEN-STRONG-RISING-ELECTRONICS-DONGGUAN-SUBSIDIARY" }, { 0x089E01, "QUANTA COMPUTER INC.", "QUANTA" }, { 0x089F97, "LEROY AUTOMATION", "LEROY-AUTOMATION" }, { 0x08A12B, "ShenZhen EZL Technology Co., Ltd", "SHENZHEN-EZL" }, { 0x08A95A, "Azurewave", "AZUREWAVE" }, { 0x08ACA5, "Benu Video, Inc.", "BENU-VIDEO" }, { 0x08AF78, "Totus Solutions, Inc.", "TOTUS-SOLUTIONS" }, { 0x08B4CF, "Abicom International", "ABICOM" }, { 0x08B738, "Lite-On Technogy Corp.", "LITE-ON-TECHNOGY" }, { 0x08B7EC, "Wireless Seismic", "WIRELESS-SEISMIC" }, { 0x08BBCC, "AK-NORD EDV VERTRIEBSGES. mbH", "AK-NORD-EDV-VERTRIEBSGES-MBH" }, { 0x08BD43, "NETGEAR INC.,", "NETGEAR" }, { 0x08BE09, "Astrol Electronic AG", "ASTROL" }, { 0x08CA45, "Toyou Feiji Electronics Co., Ltd.", "TOYOU-FEIJI-ELECTRONICS" }, { 0x08CC68, "Cisco", "CISCO" }, { 0x08D09F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x08D29A, "Proformatique", "PROFORMATIQUE" }, { 0x08D40C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x08D42B, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x08D5C0, "Seers Technology Co., Ltd", "SEERS" }, { 0x08E5DA, "NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD.", "NANJING-FUJITSU-PRODUCTS" }, { 0x08E672, "JEBSEE ELECTRONICS CO.,LTD.", "JEBSEE-ELECTRONICS" }, { 0x08EA44, "Aerohive Networks, Inc.", "AEROHIVE-NETWORKS" }, { 0x08EB74, "Humax", "HUMAX" }, { 0x08EBED, "World Elite Technology Co.,LTD", "WORLD-ELITE" }, { 0x08EDB9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x08EF3B, "MCS Logic Inc.", "MCS-LOGIC" }, { 0x08F1B7, "Towerstream Corpration", "TOWERSTREAM-CORPRATION" }, { 0x08F2F4, "Net One Partners Co.,Ltd.", "NET-ONE-PARTNERS" }, { 0x08F6F8, "GET Engineering", "GET-ENGINEERING" }, { 0x08FAE0, "Fohhn Audio AG", "FOHHN-AUDIO" }, { 0x08FC52, "OpenXS BV", "OPENXS" }, { 0x08FC88, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x08FD0E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C0400, "Jantar d.o.o.", "JANTAR-D-O-O" }, { 0x0C0535, "Juniper Systems", "JUNIPER" }, { 0x0C1105, "Ringslink (Xiamen) Network Communication Technologies Co., Ltd", "RINGSLINK-XIAMEN-NETWORK-COMMUNICATION-TECHNOLOGIES" }, { 0x0C1262, "zte corporation", "ZTE" }, { 0x0C130B, "Uniqoteq Ltd.", "UNIQOTEQ" }, { 0x0C1420, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C15C5, "SDTEC Co., Ltd.", "SDTEC" }, { 0x0C17F1, "TELECSYS", "TELECSYS" }, { 0x0C191F, "Inform Electronik", "INFORM-ELECTRONIK" }, { 0x0C1DC2, "SeAH Networks", "SEAH-NETWORKS" }, { 0x0C2724, "Cisco", "CISCO" }, { 0x0C2755, "Valuable Techologies Limited", "VALUABLE-TECHOLOGIES" }, { 0x0C2A69, "electric imp, incorporated", "ELECTRIC-IMP-INCORPORATED" }, { 0x0C2AE7, "Beijing General Research Institute of Mining and Metallurgy", "BEIJING-GENERAL-RESEARCH-INSTITUTE-OF-MINING-AND-METALLURGY" }, { 0x0C2D89, "QiiQ Communications Inc.", "QIIQ-COMMUNICATION" }, { 0x0C3021, "Apple", "APPLE" }, { 0x0C37DC, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x0C3956, "Observator instruments", "OBSERVATOR-INSTRUMENTS" }, { 0x0C3C65, "Dome Imaging Inc", "DOME-IMAGING" }, { 0x0C3E9F, "Apple, Inc", "APPLE" }, { 0x0C469D, "MS Sedco", "MS-SEDCO" }, { 0x0C473D, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x0C4C39, "Mitrastar Technology", "MITRASTAR" }, { 0x0C4DE9, "Apple", "APPLE" }, { 0x0C51F7, "CHAUVIN ARNOUX", "CHAUVIN-ARNOUX" }, { 0x0C54A5, "PEGATRON CORPORATION", "PEGATRON" }, { 0x0C5521, "Axiros GmbH", "AXIROS" }, { 0x0C565C, "HyBroad Vision (Hong Kong) Technology Co Ltd", "HYBROAD-VISION-HONG-KONG" }, { 0x0C57EB, "Mueller Systems", "MUELLER" }, { 0x0C5A19, "Axtion Sdn Bhd", "AXTION-SDN-BHD" }, { 0x0C5CD8, "DOLI Elektronik GmbH", "DOLI-ELEKTRONIK" }, { 0x0C6076, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0C6803, "Cisco", "CISCO" }, { 0x0C6E4F, "PrimeVOLT Co., Ltd.", "PRIMEVOLT" }, { 0x0C715D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0C722C, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0C74C2, "Apple", "APPLE" }, { 0x0C7523, "BEIJING GEHUA CATV NETWORK CO.,LTD", "BEIJING-GEHUA-CATV-NETWORK" }, { 0x0C771A, "Apple", "APPLE" }, { 0x0C7D7C, "Kexiang Information Technology Co, Ltd.", "KEXIANG-INFORMATION" }, { 0x0C8112, "PRIVATE", "PRIVATE" }, { 0x0C8230, "SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD", "SHENZHEN-MAGNUS-TECHNOLOGIES" }, { 0x0C8268, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x0C826A, "Wuhan Huagong Genuine Optics Technology Co., Ltd", "WUHAN-HUAGONG-GENUINE-OPTICS" }, { 0x0C8411, "A.O. Smith Water Products", "A-O-SMITH-WATER-PRODUCTS" }, { 0x0C8484, "Zenovia Electronics Inc.", "ZENOVIA-ELECTRONICS" }, { 0x0C84DC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0C8525, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0C8910, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x0C8BFD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0C8CDC, "Suunto Oy", "SUUNTO-OY" }, { 0x0C8D98, "TOP EIGHT IND CORP", "TOP-EIGHT-IND" }, { 0x0C924E, "Rice Lake Weighing Systems", "RICE-LAKE-WEIGHING" }, { 0x0C9301, "PT. Prasimax Inovasi Teknologi", "PT-PRASIMAX-INOVASI-TEKNOLOGI" }, { 0x0C93FB, "BNS Solutions", "BNS-SOLUTIONS" }, { 0x0C96BF, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x0C9B13, "Shanghai Magic Mobile Telecommunication Co.Ltd.", "SHANGHAI-MAGIC-MOBILE-TELECOMMUNICATION" }, { 0x0C9D56, "Consort Controls Ltd", "CONSORT-CONTROLS" }, { 0x0C9E91, "Sankosha Corporation", "SANKOSHA" }, { 0x0CA138, "Blinq Wireless Inc.", "BLINQ-WIRELESS" }, { 0x0CA2F4, "Chameleon Technology (UK) Limited", "CHAMELEON-UK" }, { 0x0CA402, "Alcatel Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x0CA42A, "OB Telecom Electronic Technology Co., Ltd", "OB-TELECOM" }, { 0x0CA694, "Sunitec Enterprise Co.,Ltd", "SUNITEC" }, { 0x0CAF5A, "GENUS POWER INFRASTRUCTURES LIMITED", "GENUS-POWER-INFRASTRUCTURES" }, { 0x0CB4EF, "Digience Co.,Ltd.", "DIGIENCE" }, { 0x0CBD51, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x0CBF15, "Genetec", "GENETEC" }, { 0x0CC0C0, "MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO", "MAGNETI-MARELLI-SISTEMAS-ELECTRONICOS-MEXICO" }, { 0x0CC3A7, "Meritec", "MERITEC" }, { 0x0CC47A, "Super Micro Computer, Inc.", "SUPER-MICRO" }, { 0x0CC47E, "EUCAST Co., Ltd.", "EUCAST" }, { 0x0CC655, "Wuxi YSTen Technology Co.,Ltd.", "WUXI-YSTEN" }, { 0x0CC66A, "Nokia Corporation", "NOKIA" }, { 0x0CC6AC, "DAGS", "DAGS" }, { 0x0CC81F, "Summer Infant, Inc.", "SUMMER-INFANT" }, { 0x0CC9C6, "Samwin Hong Kong Limited", "SAMWIN-HONG-KONG" }, { 0x0CCB8D, "ASCO Numatics GmbH", "ASCO-NUMATICS" }, { 0x0CCDD3, "EASTRIVER TECHNOLOGY CO., LTD.", "EASTRIVER" }, { 0x0CCDFB, "EDIC Systems Inc.", "EDIC" }, { 0x0CD292, "Intel Corporate", "INTEL-CORPORATE" }, { 0x0CD2B5, "Binatone Telecommunication Pvt. Ltd", "BINATONE-TELECOMMUNICATION-PVT" }, { 0x0CD502, "Westell", "WESTELL" }, { 0x0CD696, "Amimon Ltd", "AMIMON" }, { 0x0CD7C2, "Axium Technologies, Inc.", "AXIUM-TECHNOLOGIES" }, { 0x0CD996, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x0CD9C1, "Johnson Controls-ASG", "JOHNSON-CONTROLS-ASG" }, { 0x0CDA41, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x0CDCCC, "Inala Technologies", "INALA-TECHNOLOGIES" }, { 0x0CDDEF, "Nokia Corporation", "NOKIA" }, { 0x0CDFA4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x0CE5D3, "DH electronics GmbH", "DH-ELECTRONICS" }, { 0x0CE709, "Fox Crypto B.V.", "FOX-CRYPTO" }, { 0x0CE82F, "Bonfiglioli Vectron GmbH", "BONFIGLIOLI-VECTRON" }, { 0x0CE936, "ELIMOS srl", "ELIMOS-SRL" }, { 0x0CEEE6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x0CEF7C, "AnaCom Inc", "ANACOM" }, { 0x0CF019, "Malgn Technology Co., Ltd.", "MALGN" }, { 0x0CF0B4, "Globalsat International Technology Ltd", "GLOBALSAT" }, { 0x0CF361, "Java Information", "JAVA-INFORMATION" }, { 0x0CF3EE, "EM Microelectronic", "EM-MICROELECTRONIC" }, { 0x0CF405, "Beijing Signalway Technologies Co.,Ltd", "BEIJING-SIGNALWAY-TECHNOLOGIES" }, { 0x0CF893, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x0CFC83, "Airoha Technology Corp.,", "AIROHA" }, { 0x100000, "PRIVATE", "PRIVATE" }, { 0x10005A, "IBM Corp", "IBM" }, { 0x1000E8, "NATIONAL SEMICONDUCTOR", "NATIONAL-SEMICONDUCTOR" }, { 0x1000FD, "LaonPeople", "LAONPEOPLE" }, { 0x1001CA, "Ashley Butterworth", "ASHLEY-BUTTERWORTH" }, { 0x10090C, "Janome Sewing Machine Co., Ltd.", "JANOME-SEWING-MACHINE" }, { 0x100BA9, "Intel Corporate", "INTEL-CORPORATE" }, { 0x100C24, "pomdevices, LLC", "POMDEVICES-LLC" }, { 0x100D2F, "Online Security Pty. Ltd.", "ONLINE-SECURITY-PTY" }, { 0x100D32, "Embedian, Inc.", "EMBEDIAN" }, { 0x100D7F, "NETGEAR INC.,", "NETGEAR" }, { 0x100E2B, "NEC CASIO Mobile Communications", "NEC-CASIO-MOBILE-COMMUNICATION" }, { 0x100E7E, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x1010B6, "McCain Inc", "MCCAIN" }, { 0x101212, "Vivo International Corporation Pty Ltd", "VIVO-PTY" }, { 0x101248, "ITG, Inc.", "ITG" }, { 0x1013EE, "Justec International Technology INC.", "JUSTEC" }, { 0x10189E, "Elmo Motion Control", "ELMO-MOTION-CONTROL" }, { 0x101B54, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x101C0C, "Apple", "APPLE" }, { 0x101D51, "ON-Q LLC dba ON-Q Mesh Networks", "ON-Q-LLC-DBA-ON-Q-MESH-NETWORKS" }, { 0x101DC0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x101F74, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x102279, "ZeroDesktop, Inc.", "ZERODESKTOP" }, { 0x102831, "Morion Inc.", "MORION" }, { 0x102D96, "Looxcie Inc.", "LOOXCIE" }, { 0x102EAF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x103378, "FLECTRON Co., LTD", "FLECTRON" }, { 0x103711, "Simlink AS", "SIMLINK-AS" }, { 0x103B59, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x103DEA, "HFC Technology (Beijing) Ltd. Co.", "HFC-BEIJING" }, { 0x1040F3, "Apple", "APPLE" }, { 0x104369, "Soundmax Electronic Limited", "SOUNDMAX" }, { 0x10445A, "Shaanxi Hitech Electronic Co., LTD", "SHAANXI-HITECH" }, { 0x1045BE, "Norphonic AS", "NORPHONIC-AS" }, { 0x1045F8, "LNT-Automation GmbH", "LNT-AUTOMATION" }, { 0x104780, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x1048B1, "Beijing Duokan Technology Limited", "BEIJING-DUOKAN" }, { 0x104D77, "Innovative Computer Engineering", "INNOVATIVE-ENGINEERING" }, { 0x1056CA, "Peplink International Ltd.", "PEPLINK" }, { 0x105C3B, "Perma-Pipe, Inc.", "PERMA-PIPE" }, { 0x105CBF, "DuroByte Inc", "DUROBYTE" }, { 0x105F06, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x105F49, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x10604B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x1062C9, "Adatis GmbH & Co. KG", "ADATIS" }, { 0x1064E2, "ADFweb.com s.r.l.", "ADFWEB-COM-S-R-L" }, { 0x1065A3, "Core Brands LLC", "CORE-BRANDS-LLC" }, { 0x1065CF, "IQSIM", "IQSIM" }, { 0x106682, "NEC AccessTechnica, Ltd.", "NEC-ACCESSTECHNICA" }, { 0x10683F, "LG Electronics", "LG-ELECTRONICS" }, { 0x106F3F, "Buffalo Inc.", "BUFFALO" }, { 0x106FEF, "Ad-Sol Nissin Corp", "AD-SOL-NISSIN" }, { 0x1071F9, "Cloud Telecomputers, LLC", "CLOUD-TELECOMPUTERS-LLC" }, { 0x10768A, "EoCell", "EOCELL" }, { 0x1077B1, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x1078CE, "Hanvit SI, Inc.", "HANVIT-SI" }, { 0x1078D2, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 0x107A86, "U&U ENGINEERING INC.", "U-U-ENGINEERING" }, { 0x107BEF, "ZyXEL Communications Corp", "ZYXEL-COMMUNICATION" }, { 0x1083D2, "Microseven Systems, LLC", "MICROSEVEN-LLC" }, { 0x10880F, "Daruma Telecomunicações e Informática S.A.", "DARUMA-TELECOMUNICAçõES-E-INFORMáTICA" }, { 0x108CCF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x1093E9, "Apple", "APPLE" }, { 0x109AB9, "Tosibox Oy", "TOSIBOX-OY" }, { 0x109ADD, "Apple", "APPLE" }, { 0x109FA9, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x10A13B, "FUJIKURA RUBBER LTD.", "FUJIKURA-RUBBER" }, { 0x10A5D0, "Murata Manufacturing Co.,Ltd.", "MURATA-MANUFACTURING" }, { 0x10A743, "SK Mtek Limited", "SK-MTEK" }, { 0x10A932, "Beijing Cyber Cloud Technology Co. ,Ltd.", "BEIJING-CYBER-CLOUD" }, { 0x10AE60, "PRIVATE", "PRIVATE" }, { 0x10B26B, "base Co.,Ltd.", "BASE" }, { 0x10B713, "PRIVATE", "PRIVATE" }, { 0x10B7F6, "Plastoform Industries Ltd.", "PLASTOFORM-INDUSTRIES" }, { 0x10B9FE, "Lika srl", "LIKA-SRL" }, { 0x10BAA5, "GANA I&C CO., LTD", "GANA-I-C" }, { 0x10BD18, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x10BF48, "ASUSTEK COMPUTER INC.", "ASUSTEK" }, { 0x10C2BA, "UTT Co., Ltd.", "UTT" }, { 0x10C586, "BIO SOUND LAB CO., LTD.", "BIO-SOUND-LAB" }, { 0x10C61F, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x10C6FC, "Garmin International", "GARMIN" }, { 0x10C73F, "Midas Klark Teknik Ltd", "MIDAS-KLARK-TEKNIK" }, { 0x10CA81, "PRECIA", "PRECIA" }, { 0x10CCDB, "AXIMUM PRODUITS ELECTRONIQUES", "AXIMUM-PRODUITS-ELECTRONIQUES" }, { 0x10D1DC, "INSTAR Deutschland GmbH", "INSTAR-DEUTSCHLAND" }, { 0x10D542, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x10DDB1, "Apple", "APPLE" }, { 0x10DDF4, "Maxway Electronics CO.,LTD", "MAXWAY-ELECTRONICS" }, { 0x10E2D5, "Qi Hardware Inc.", "QI-HARDWARE" }, { 0x10E3C7, "Seohwa Telecom", "SEOHWA-TELECOM" }, { 0x10E4AF, "APR, LLC", "APR-LLC" }, { 0x10E6AE, "Source Technologies, LLC", "SOURCE-TECHNOLOGIES-LLC" }, { 0x10E8EE, "PhaseSpace", "PHASESPACE" }, { 0x10EA59, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x10EED9, "Canoga Perkins Corporation", "CANOGA-PERKINS" }, { 0x10F311, "Cisco", "CISCO" }, { 0x10F3DB, "Gridco Systems, Inc.", "GRIDCO" }, { 0x10F49A, "T3 Innovation", "T3-INNOVATION" }, { 0x10F96F, "LG Electronics", "LG-ELECTRONICS" }, { 0x10F9EE, "Nokia Corporation", "NOKIA" }, { 0x10FBF0, "KangSheng LTD.", "KANGSHENG" }, { 0x10FC54, "Shany Electronic Co., Ltd.", "SHANY" }, { 0x10FEED, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x1100AA, "PRIVATE", "PRIVATE" }, { 0x140708, "PRIVATE", "PRIVATE" }, { 0x1407E0, "Abrantix AG", "ABRANTIX" }, { 0x140C76, "FREEBOX SAS", "FREEBOX-SAS" }, { 0x140D4F, "Flextronics International", "FLEXTRONICS" }, { 0x14109F, "Apple", "APPLE" }, { 0x141330, "Anakreon UK LLP", "ANAKREON-UK-LLP" }, { 0x14144B, "FUJIAN STAR-NET COMMUNICATION CO.,LTD", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0x141A51, "Treetech Sistemas Digitais", "TREETECH-SISTEMAS-DIGITAIS" }, { 0x141BBD, "Volex Inc.", "VOLEX" }, { 0x141BF0, "Intellimedia Systems Ltd", "INTELLIMEDIA" }, { 0x1423D7, "EUTRONIX CO., LTD.", "EUTRONIX" }, { 0x142BD2, "Armtel Ltd.", "ARMTEL" }, { 0x142D8B, "Incipio Technologies, Inc", "INCIPIO-TECHNOLOGIES" }, { 0x142DF5, "Amphitech", "AMPHITECH" }, { 0x14307A, "Avermetrics", "AVERMETRICS" }, { 0x14358B, "Mediabridge Products, LLC.", "MEDIABRIDGE-PRODUCTS-LLC" }, { 0x1435B3, "Future Designs, Inc.", "FUTURE-DESIGNS" }, { 0x143605, "Nokia Corporation", "NOKIA" }, { 0x14373B, "PROCOM Systems", "PROCOM" }, { 0x143AEA, "Dynapower Company LLC", "DYNAPOWER-COMPANY-LLC" }, { 0x143E60, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x1441E2, "Monaco Enterprises, Inc.", "MONACO-ENTERPRISES" }, { 0x144319, "Creative&Link Technology Limited", "CREATIVE-LINK" }, { 0x1446E4, "AVISTEL", "AVISTEL" }, { 0x144978, "Digital Control Incorporated", "DIGITAL-CONTROL-INCORPORATED" }, { 0x1449E0, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x144C1A, "Max Communication GmbH", "MAX-COMMUNICATION" }, { 0x145412, "Entis Co., Ltd.", "ENTIS" }, { 0x145A05, "Apple", "APPLE" }, { 0x145BD1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x146080, "zte corporation", "ZTE" }, { 0x146308, "JABIL CIRCUIT (SHANGHAI) LTD.", "JABIL-CIRCUIT-SHANGHAI" }, { 0x146A0B, "Cypress Electronics Limited", "CYPRESS-ELECTRONICS" }, { 0x146E0A, "PRIVATE", "PRIVATE" }, { 0x147373, "TUBITAK UEKAE", "TUBITAK-UEKAE" }, { 0x147411, "RIM", "RIM" }, { 0x147DB3, "JOA TELECOM.CO.,LTD", "JOA-TELECOM" }, { 0x147DC5, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x14825B, "Hefei Radio Communication Technology Co., Ltd", "HEFEI-RADIO-COMMUNICATION" }, { 0x148692, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x1489FD, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x148A70, "ADS GmbH", "ADS" }, { 0x148FC6, "Apple", "APPLE" }, { 0x149090, "KongTop industrial(shen zhen)CO.,LTD", "KONGTOP-INDUSTRIAL-SHEN-ZHEN" }, { 0x149448, "BLU CASTLE S.A.", "BLU-CASTLE" }, { 0x1499E2, "Apple, Inc", "APPLE" }, { 0x149FE8, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x14A62C, "S.M. Dezac S.A.", "S-M-DEZAC" }, { 0x14A86B, "ShenZhen Telacom Science&Technology Co., Ltd", "SHENZHEN-TELACOM-SCIENCE" }, { 0x14A9E3, "MST CORPORATION", "MST" }, { 0x14ABF0, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x14B126, "Industrial Software Co", "INDUSTRIAL-SOFTWARE" }, { 0x14B1C8, "InfiniWing, Inc.", "INFINIWING" }, { 0x14B73D, "ARCHEAN Technologies", "ARCHEAN-TECHNOLOGIES" }, { 0x14B968, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x14C089, "DUNE HD LTD", "DUNE-HD" }, { 0x14C21D, "Sabtech Industries", "SABTECH-INDUSTRIES" }, { 0x14CC20, "TP-LINK TECHNOLOGIES CO.,LTD", "TP-LINK-TECHNOLOGIES" }, { 0x14CF8D, "OHSUNG ELECTRONICS CO., LTD.", "OHSUNG-ELECTRONICS" }, { 0x14CF92, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x14CFE2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x14D4FE, "Pace plc", "PACE-PLC" }, { 0x14D64D, "D-Link International", "D-LINK" }, { 0x14D76E, "CONCH ELECTRONIC Co.,Ltd", "CONCH" }, { 0x14DAE9, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x14DB85, "S NET MEDIA", "S-NET-MEDIA" }, { 0x14E4EC, "mLogic LLC", "MLOGIC-LLC" }, { 0x14E6E4, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x14EB33, "BSMediasoft Co., Ltd.", "BSMEDIASOFT" }, { 0x14EDA5, "Wächter GmbH Sicherheitssysteme", "WäCHTER-SICHERHEITSSYSTEME" }, { 0x14EE9D, "AirNav Systems LLC", "AIRNAV-LLC" }, { 0x14F0C5, "Xtremio Ltd.", "XTREMIO" }, { 0x14F28E, "ShenYang ZhongKe-Allwin Technology Co.LTD", "SHENYANG-ZHONGKE-ALLWIN" }, { 0x14F42A, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x14FEAF, "SAGITTAR LIMITED", "SAGITTAR" }, { 0x14FEB5, "Dell Inc", "DELL" }, { 0x18002D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x1800DB, "Fitbit Inc.", "FITBIT" }, { 0x1801E3, "Elektrobit Wireless Communications Ltd", "ELEKTROBIT-WIRELESS-COMMUNICATION" }, { 0x180373, "Dell Inc", "DELL" }, { 0x1803FA, "IBT Interfaces", "IBT-INTERFACES" }, { 0x180675, "DILAX Intelcom GmbH", "DILAX-INTELCOM" }, { 0x180B52, "Nanotron Technologies GmbH", "NANOTRON-TECHNOLOGIES" }, { 0x180C14, "iSonea Limited", "ISONEA" }, { 0x180C77, "Westinghouse Electric Company, LLC", "WESTINGHOUSE-ELECTRIC-COMPANY-LLC" }, { 0x180CAC, "CANON INC.", "CANON" }, { 0x18104E, "CEDINT-UPM", "CEDINT-UPM" }, { 0x181420, "TEB SAS", "TEB-SAS" }, { 0x181456, "Nokia Corporation", "NOKIA" }, { 0x181714, "DAEWOOIS", "DAEWOOIS" }, { 0x181725, "Cameo Communications, Inc.", "CAMEO-COMMUNICATION" }, { 0x18193F, "Tamtron Oy", "TAMTRON-OY" }, { 0x181BEB, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x181EB0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x182012, "Aztech Associates Inc.", "AZTECH-ASSOCIATES" }, { 0x182032, "Apple", "APPLE" }, { 0x182666, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x182861, "AirTies Wireless Networks", "AIRTIES-WIRELESS-NETWORKS" }, { 0x182A7B, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x182B05, "8D Technologies", "8D-TECHNOLOGIES" }, { 0x182C91, "Concept Development, Inc.", "CONCEPT-DEVELOPMENT" }, { 0x1832A2, "LAON TECHNOLOGY CO., LTD.", "LAON" }, { 0x18339D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x183451, "Apple", "APPLE" }, { 0x1836FC, "Elecsys International Corporation", "ELECSYS" }, { 0x183825, "Wuhan Lingjiu High-tech Co.,Ltd.", "WUHAN-LINGJIU-HIGH-TECH" }, { 0x183919, "Unicoi Systems", "UNICOI" }, { 0x183BD2, "BYD Precision Manufacture Company Ltd.", "BYD-PRECISION-MANUFACTURE-COMPANY" }, { 0x183DA2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x183F47, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x18421D, "PRIVATE", "PRIVATE" }, { 0x18422F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x184462, "Riava Networks, Inc.", "RIAVA-NETWORKS" }, { 0x184617, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x1848D8, "Fastback Networks", "FASTBACK-NETWORKS" }, { 0x184E94, "MESSOA TECHNOLOGIES INC.", "MESSOA-TECHNOLOGIES" }, { 0x185253, "Pixord Corporation", "PIXORD" }, { 0x1853E0, "Hanyang Digitech Co.Ltd", "HANYANG-DIGITECH" }, { 0x18550F, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x185933, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x185AE8, "Zenotech.Co.,Ltd", "ZENOTECH" }, { 0x18622C, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x186472, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x1866E3, "Veros Systems, Inc.", "VEROS" }, { 0x18673F, "Hanover Displays Limited", "HANOVER-DISPLAYS" }, { 0x186751, "KOMEG Industrielle Messtechnik GmbH", "KOMEG-INDUSTRIELLE-MESSTECHNIK" }, { 0x1867B0, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x186D99, "Adanis Inc.", "ADANIS" }, { 0x1879A2, "GMJ ELECTRIC LIMITED", "GMJ-ELECTRIC" }, { 0x187A93, "AMICCOM Electronics Corporation", "AMICCOM-ELECTRONICS" }, { 0x187C81, "Valeo Vision Systems", "VALEO-VISION" }, { 0x187ED5, "shenzhen kaism technology Co. Ltd", "SHENZHEN-KAISM" }, { 0x1880CE, "Barberry Solutions Ltd", "BARBERRY-SOLUTIONS" }, { 0x1880F5, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x188410, "CoreTrust Inc.", "CORETRUST" }, { 0x18863A, "DIGITAL ART SYSTEM", "DIGITAL-ART-SYSTEM" }, { 0x1886AC, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x188796, "HTC Corporation", "HTC" }, { 0x188857, "Beijing Jinhong Xi-Dian Information Technology Corp.", "BEIJING-JINHONG-XI-DIAN-INFORMATION" }, { 0x188ED5, "TP Vision Belgium N.V. - innovation site Brugge", "TP-VISION-BELGIUM-N-V---INNOVATION-SITE-BRUGGE" }, { 0x18922C, "Virtual Instruments", "VIRTUAL-INSTRUMENTS" }, { 0x1897FF, "TechFaith Wireless Technology Limited", "TECHFAITH-WIRELESS" }, { 0x189A67, "CSE-Servelec Limited", "CSE-SERVELEC" }, { 0x189C5D, "Cisco", "CISCO" }, { 0x189EFC, "Apple", "APPLE" }, { 0x18A905, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x18A99B, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0x18AA45, "Fon Technology", "FON" }, { 0x18ABF5, "Ultra Electronics - Electrics", "ULTRA-ELECTRONICS---ELECTRICS" }, { 0x18AD4D, "Polostar Technology Corporation", "POLOSTAR" }, { 0x18AEBB, "Siemens Convergence Creators GmbH&Co.KG", "SIEMENS-CONVERGENCE-CREATORS" }, { 0x18AF61, "Apple, Inc", "APPLE" }, { 0x18AF8F, "Apple", "APPLE" }, { 0x18AF9F, "DIGITRONIC Automationsanlagen GmbH", "DIGITRONIC-AUTOMATIONSANLAGEN" }, { 0x18B209, "Torrey Pines Logic, Inc", "TORREY-PINES-LOGIC" }, { 0x18B3BA, "Netlogic AB", "NETLOGIC-AB" }, { 0x18B430, "Nest Labs Inc.", "NEST-LABS" }, { 0x18B591, "I-Storm", "I-STORM" }, { 0x18B79E, "Invoxia", "INVOXIA" }, { 0x18C086, "Broadcom Corporation", "BROADCOM" }, { 0x18C451, "Tucson Embedded Systems", "TUCSON-EMBEDDED" }, { 0x18C8E7, "Shenzhen Hualistone Technology Co.,Ltd", "SHENZHEN-HUALISTONE" }, { 0x18D071, "DASAN SMC, Inc.", "DASAN-SMC" }, { 0x18D66A, "Inmarsat", "INMARSAT" }, { 0x18D6CF, "Kurth Electronic GmbH", "KURTH" }, { 0x18D949, "Qvis Labs, LLC", "QVIS-LABS-LLC" }, { 0x18DC56, "Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt", "YULONG-TELECOMMUNICATION-SCIENTIFIC-SHENZHEN-LT" }, { 0x18E288, "STT Condigi", "STT-CONDIGI" }, { 0x18E2C2, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x18E7F4, "Apple", "APPLE" }, { 0x18E80F, "Viking Electronics Inc.", "VIKING-ELECTRONICS" }, { 0x18E8DD, "MODULETEK", "MODULETEK" }, { 0x18EF63, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x18F46A, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x18F650, "Multimedia Pacific Limited", "MULTIMEDIA-PACIFIC" }, { 0x18F87A, "i3 International Inc.", "I3" }, { 0x18FA6F, "ISC applied systems corp", "ISC-APPLIED" }, { 0x18FC9F, "Changhe Electronics Co., Ltd.", "CHANGHE-ELECTRONICS" }, { 0x18FE34, "Espressif Inc.", "ESPRESSIF" }, { 0x1C0656, "IDY Corporation", "IDY" }, { 0x1C08C1, "Lg Innotek", "LG-INNOTEK" }, { 0x1C0B52, "EPICOM S.A", "EPICOM" }, { 0x1C0FCF, "Sypro Optics GmbH", "SYPRO-OPTICS" }, { 0x1C11E1, "Wartsila Finland Oy", "WARTSILA-FINLAND-OY" }, { 0x1C129D, "IEEE PES PSRC/SUB", "IEEE-PES-PSRC/SUB" }, { 0x1C1448, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x1C17D3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x1C184A, "ShenZhen RicherLink Technologies Co.,LTD", "SHENZHEN-RICHERLINK-TECHNOLOGIES" }, { 0x1C19DE, "eyevis GmbH", "EYEVIS" }, { 0x1C1D67, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x1C1D86, "Cisco", "CISCO" }, { 0x1C334D, "ITS Telecom", "ITS-TELECOM" }, { 0x1C3477, "Innovation Wireless", "INNOVATION-WIRELESS" }, { 0x1C35F1, "NEW Lift Neue Elektronische Wege Steuerungsbau GmbH", "NEW-LIFT-NEUE-ELEKTRONISCHE-WEGE-STEUERUNGSBAU" }, { 0x1C37BF, "Cloudium Systems Ltd.", "CLOUDIUM" }, { 0x1C3A4F, "AccuSpec Electronics, LLC", "ACCUSPEC-ELECTRONICS-LLC" }, { 0x1C3DE7, "Sigma Koki Co.,Ltd.", "SIGMA-KOKI" }, { 0x1C3E84, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x1C4158, "Gemalto M2M GmbH", "GEMALTO-M2M" }, { 0x1C43EC, "JAPAN CIRCUIT CO.,LTD", "JAPAN-CIRCUIT" }, { 0x1C4593, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x1C48F9, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x1C4AF7, "AMON INC", "AMON" }, { 0x1C4BB9, "SMG ENTERPRISE, LLC", "SMG-LLC" }, { 0x1C4BD6, "AzureWave", "AZUREWAVE" }, { 0x1C51B5, "Techaya LTD", "TECHAYA" }, { 0x1C52D6, "FLAT DISPLAY TECHNOLOGY CORPORATION", "FLAT-DISPLAY" }, { 0x1C5A3E, "Samsung Eletronics Co., Ltd (Visual Display Divison)", "SAMSUNG-ELETRONICS-VISUAL-DISPLAY-DIVISON" }, { 0x1C5A6B, "Philips Electronics Nederland BV", "PHILIPS-ELECTRONICS-NEDERLAND" }, { 0x1C5C55, "PRIMA Cinema, Inc", "PRIMA-CINEMA" }, { 0x1C5C60, "Shenzhen Belzon Technology Co.,LTD.", "SHENZHEN-BELZON" }, { 0x1C5FFF, "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch", "BEIJING-ERENEBEN-INFORMATION-SHENZHEN-BRANCH" }, { 0x1C62B8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1C63B7, "OpenProducts 237 AB", "OPENPRODUCTS-237-AB" }, { 0x1C659D, "Liteon Technology Corporation", "LITEON" }, { 0x1C666D, "Hon Hai Precision Ind.Co.Ltd", "HON-HAI-PRECISION-IND" }, { 0x1C66AA, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x1C69A5, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x1C6BCA, "Mitsunami Co., Ltd.", "MITSUNAMI" }, { 0x1C6F65, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x1C7508, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x1C76CA, "Terasic Technologies Inc.", "TERASIC-TECHNOLOGIES" }, { 0x1C7839, "Shenzhen Tencent Computer System Co., Ltd.", "SHENZHEN-TENCENT-SYSTEM" }, { 0x1C7B21, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x1C7C11, "EID", "EID" }, { 0x1C7C45, "Vitek Industrial Video Products, Inc.", "VITEK-INDUSTRIAL-VIDEO-PRODUCTS" }, { 0x1C7CC7, "Coriant GmbH", "CORIANT" }, { 0x1C7EE5, "D-Link International", "D-LINK" }, { 0x1C83B0, "Linked IP GmbH", "LINKED-IP" }, { 0x1C8464, "FORMOSA WIRELESS COMMUNICATION CORP.", "FORMOSA-WIRELESS-COMMUNICATION" }, { 0x1C86AD, "MCT CO., LTD.", "MCT" }, { 0x1C8E8E, "DB Communication & Systems Co., ltd.", "DB-COMMUNICATION" }, { 0x1C8F8A, "Phase Motion Control SpA", "PHASE-MOTION-CONTROL-SPA" }, { 0x1C9179, "Integrated System Technologies Ltd", "INTEGRATED-SYSTEM-TECHNOLOGIES" }, { 0x1C9492, "RUAG Schweiz AG", "RUAG-SCHWEIZ" }, { 0x1C955D, "I-LAX ELECTRONICS INC.", "I-LAX-ELECTRONICS" }, { 0x1C959F, "Veethree Electronics And Marine LLC", "VEETHREE-ELECTRONICS-AND-MARINE-LLC" }, { 0x1C973D, "PRICOM Design", "PRICOM-DESIGN" }, { 0x1C994C, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0x1CA770, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LT", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS-LT" }, { 0x1CAA07, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x1CABA7, "Apple", "APPLE" }, { 0x1CAF05, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x1CAFF7, "D-LINK INTERNATIONAL PTE LIMITED", "D-LINK-PTE" }, { 0x1CB094, "HTC Corporation", "HTC" }, { 0x1CB17F, "NEC AccessTechnica, Ltd.", "NEC-ACCESSTECHNICA" }, { 0x1CB243, "TDC A/S", "TDC-A/S" }, { 0x1CBA8C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x1CBBA8, "OJSC \"Ufimskiy Zavod \"Promsvyaz\"", "OJSC-UFIMSKIY-ZAVOD-PROMSVYAZ" }, { 0x1CBD0E, "Amplified Engineering Pty Ltd", "AMPLIFIED-ENGINEERING-PTY" }, { 0x1CBDB9, "D-LINK INTERNATIONAL PTE LIMITED", "D-LINK-PTE" }, { 0x1CC11A, "Wavetronix", "WAVETRONIX" }, { 0x1CC1DE, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x1CC316, "MileSight Technology Co., Ltd.", "MILESIGHT" }, { 0x1CC63C, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x1CD40C, "Kriwan Industrie-Elektronik GmbH", "KRIWAN-INDUSTRIE-ELEKTRONIK" }, { 0x1CDF0F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x1CE165, "Marshal Corporation", "MARSHAL" }, { 0x1CE192, "Qisda Corporation", "QISDA" }, { 0x1CE2CC, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x1CE62B, "Apple", "APPLE" }, { 0x1CE6C7, "Cisco", "CISCO" }, { 0x1CEEE8, "Ilshin Elecom", "ILSHIN-ELECOM" }, { 0x1CF061, "SCAPS GmbH", "SCAPS" }, { 0x1CF4CA, "PRIVATE", "PRIVATE" }, { 0x1CF5E7, "Turtle Industry Co., Ltd.", "TURTLE-INDUSTRY" }, { 0x1CFA68, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x1CFEA7, "IDentytech Solutins Ltd.", "IDENTYTECH-SOLUTINS" }, { 0x20014F, "Linea Research Ltd", "LINEA-RESEARCH" }, { 0x2002AF, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0x200505, "RADMAX COMMUNICATION PRIVATE LIMITED", "RADMAX-COMMUNICATION-PRIVATE" }, { 0x2005E8, "OOO InProMedia", "OOO-INPROMEDIA" }, { 0x2008ED, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x200A5E, "Xiangshan Giant Eagle Technology Developing co.,LTD", "XIANGSHAN-GIANT-EAGLE-DEVELOPING" }, { 0x200BC7, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x200E95, "IEC – TC9 WG43", "IEC-–-TC9-WG43" }, { 0x20107A, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0x201257, "Most Lucky Trading Ltd", "MOST-LUCKY-TRADING" }, { 0x2013E0, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2016D8, "Liteon Technology Corporation", "LITEON" }, { 0x20180E, "Shenzhen Sunchip Technology Co., Ltd", "SHENZHEN-SUNCHIP" }, { 0x201A06, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x201D03, "Elatec GmbH", "ELATEC" }, { 0x2021A5, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x202598, "Teleview", "TELEVIEW" }, { 0x202BC1, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x202CB7, "Kong Yue Electronics & Information Industry (Xinhui) Ltd.", "KONG-YUE-ELECTRONICS-INFORMATION-INDUSTRY-XINHUI" }, { 0x203706, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x2037BC, "Kuipers Electronic Engineering BV", "KUIPERS-ENGINEERING" }, { 0x203A07, "Cisco", "CISCO" }, { 0x204005, "feno GmbH", "FENO" }, { 0x20415A, "Smarteh d.o.o.", "SMARTEH-D-O-O" }, { 0x20443A, "Schneider Electric Asia Pacific Ltd", "SCHNEIDER-ELECTRIC-ASIA-PACIFIC" }, { 0x2046A1, "VECOW Co., Ltd", "VECOW" }, { 0x2046F9, "Advanced Network Devices (dba:AND)", "ADVANCED-NETWORK-DEVICES-DBA:AND" }, { 0x204AAA, "Hanscan Spain S.A.", "HANSCAN-SPAIN" }, { 0x204C6D, "Hugo Brennenstuhl Gmbh & Co. KG.", "HUGO-BRENNENSTUHL" }, { 0x204E6B, "Axxana(israel) ltd", "AXXANA-ISRAEL" }, { 0x204E7F, "NETGEAR", "NETGEAR" }, { 0x205476, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x205721, "Salix Technology CO., Ltd.", "SALIX" }, { 0x2059A0, "Paragon Technologies Inc.", "PARAGON-TECHNOLOGIES" }, { 0x205B2A, "PRIVATE", "PRIVATE" }, { 0x205B5E, "Shenzhen Wonhe Technology Co., Ltd", "SHENZHEN-WONHE" }, { 0x206432, "SAMSUNG ELECTRO MECHANICS CO.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x2067B1, "Pluto inc.", "PLUTO" }, { 0x20689D, "Liteon Technology Corporation", "LITEON" }, { 0x206A8A, "Wistron InfoComm Manufacturing(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-MANUFACTURING-KUNSHAN" }, { 0x206AFF, "Atlas Elektronik UK Limited", "ATLAS-ELEKTRONIK-UK" }, { 0x206FEC, "Braemac CA LLC", "BRAEMAC-CA-LLC" }, { 0x207355, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2074CF, "Shenzhen Voxtech Co.,Ltd", "SHENZHEN-VOXTECH" }, { 0x207600, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x207C8F, "Quanta Microsystems,Inc.", "QUANTA-MICROSYSTEMS" }, { 0x207D74, "Apple", "APPLE" }, { 0x20858C, "Assa", "ASSA" }, { 0x208984, "COMPAL INFORMATION (KUNSHAN) CO., LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0x208986, "zte corporation", "ZTE" }, { 0x20918A, "PROFALUX", "PROFALUX" }, { 0x2091D9, "I'M SPA", "I-M-SPA" }, { 0x209BA5, "JIAXING GLEAD Electronics Co.,Ltd", "JIAXING-GLEAD-ELECTRONICS" }, { 0x20A2E7, "Lee-Dickens Ltd", "LEE-DICKENS" }, { 0x20AA25, "IP-NET LLC", "IP-NET-LLC" }, { 0x20AA4B, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x20B0F7, "Enclustra GmbH", "ENCLUSTRA" }, { 0x20B399, "Enterasys", "ENTERASYS" }, { 0x20B5C6, "Mimosa Networks", "MIMOSA-NETWORKS" }, { 0x20B7C0, "Omicron electronics GmbH", "OMICRON-ELECTRONICS" }, { 0x20BBC0, "Cisco", "CISCO" }, { 0x20BBC6, "Jabil Circuit Hungary Ltd.", "JABIL-CIRCUIT-HUNGARY" }, { 0x20BFDB, "DVL", "DVL" }, { 0x20C1AF, "i Wit Digital Co., Limited", "I-WIT-DIGITAL" }, { 0x20C60D, "Shanghai annijie Information technology Co.,LTD", "SHANGHAI-ANNIJIE-INFORMATION" }, { 0x20C6EB, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x20C8B3, "SHENZHEN BUL-TECH CO.,LTD.", "SHENZHEN-BUL-TECH" }, { 0x20C9D0, "Apple", "APPLE" }, { 0x20CD39, "Texas Instruments, Inc", "TEXAS-INSTRUMENTS" }, { 0x20CEC4, "Peraso Technologies", "PERASO-TECHNOLOGIES" }, { 0x20CF30, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x20D21F, "Wincal Technology Corp.", "WINCAL" }, { 0x20D390, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x20D5AB, "Korea Infocom Co.,Ltd.", "KOREA-INFOCOM" }, { 0x20D5BF, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0x20D607, "Nokia Corporation", "NOKIA" }, { 0x20D906, "Iota, Inc.", "IOTA" }, { 0x20DC93, "Cheetah Hi-Tech, Inc.", "CHEETAH-HI-TECH" }, { 0x20DCE6, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x20DF3F, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x20E52A, "NETGEAR INC.,", "NETGEAR" }, { 0x20E564, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x20E791, "Siemens Healthcare Diagnostics, Inc", "SIEMENS-HEALTHCARE-DIAGNOSTICS" }, { 0x20EEC6, "Elefirst Science & Tech Co ., ltd", "ELEFIRST-SCIENCE-TECH" }, { 0x20F002, "MTData Developments Pty. Ltd.", "MTDATA-DEVELOPMENTS-PTY" }, { 0x20F3A3, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x20F85E, "Delta Electronics", "DELTA-ELECTRONICS" }, { 0x20FABB, "Cambridge Executive Limited", "CAMBRIDGE-EXECUTIVE" }, { 0x20FDF1, "3COM EUROPE LTD", "3COM" }, { 0x20FECD, "System In Frontier Inc.", "SYSTEM-IN-FRONTIER" }, { 0x20FEDB, "M2M Solution S.A.S.", "M2M-SOLUTION-S" }, { 0x2401C7, "Cisco", "CISCO" }, { 0x24050F, "MTN Electronic Co. Ltd", "MTN" }, { 0x240917, "Devlin Electronics Limited", "DEVLIN-ELECTRONICS" }, { 0x240A64, "AzureWaveTechnologies,Inc", "AZUREWAVETECHNOLOGIES" }, { 0x240B2A, "Viettel Group", "VIETTEL-GROUP" }, { 0x240BB1, "KOSTAL Industrie Elektrik GmbH", "KOSTAL-INDUSTRIE-ELEKTRIK" }, { 0x241064, "Shenzhen Ecsino Tecnical Co. Ltd", "SHENZHEN-ECSINO-TECNICAL" }, { 0x241125, "Hutek Co., Ltd.", "HUTEK" }, { 0x241148, "Entropix, LLC", "ENTROPIX-LLC" }, { 0x2411D0, "Chongqing Ehs Science and Technology Development Co.,Ltd.", "CHONGQING-EHS-SCIENCE-AND-DEVELOPMENT" }, { 0x241A8C, "Squarehead Technology AS", "SQUAREHEAD-AS" }, { 0x241B13, "Shanghai Nutshell Electronic Co., Ltd.", "SHANGHAI-NUTSHELL" }, { 0x241F2C, "Calsys, Inc.", "CALSYS" }, { 0x2421AB, "Sony Ericsson Mobile Communications", "SONY-ERICSSON-MOBILE-COMMUNICATION" }, { 0x242642, "SHARP Corporation.", "SHARP" }, { 0x242FFA, "Toshiba Global Commerce Solutions", "TOSHIBA-GLOBAL-COMMERCE-SOLUTIONS" }, { 0x24374C, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x2437EF, "EMC Electronic Media Communication SA", "EMC-MEDIA-COMMUNICATION" }, { 0x243C20, "Dynamode Group", "DYNAMODE-GROUP" }, { 0x244597, "GEMUE Gebr. Mueller Apparatebau", "GEMUE-GEBR-MUELLER-APPARATEBAU" }, { 0x24470E, "PentronicAB", "PENTRONICAB" }, { 0x24497B, "Innovative Converged Devices Inc", "INNOVATIVE-CONVERGED-DEVICES" }, { 0x245FDF, "KYOCERA Corporation", "KYOCERA" }, { 0x246278, "sysmocom - systems for mobile communications GmbH", "SYSMOCOM---FOR-MOBILE-COMMUNICATION" }, { 0x2464EF, "CYG SUNRI CO.,LTD.", "CYG-SUNRI" }, { 0x246511, "AVM GmbH", "AVM" }, { 0x24694A, "Jasmine Systems Inc.", "JASMINE" }, { 0x2469A5, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x246AAB, "IT-IS International", "IT-IS" }, { 0x24767D, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x247703, "Intel Corporate", "INTEL-CORPORATE" }, { 0x248000, "Westcontrol AS", "WESTCONTROL-AS" }, { 0x2481AA, "KSH International Co., Ltd.", "KSH" }, { 0x24828A, "Prowave Technologies Ltd.", "PROWAVE-TECHNOLOGIES" }, { 0x2486F4, "Ctek, Inc.", "CTEK" }, { 0x248707, "SEnergy Corporation", "SENERGY" }, { 0x2493CA, "Voxtronic Technology Computer-Systeme GmbH", "VOXTRONIC--SYSTEME" }, { 0x249442, "OPEN ROAD SOLUTIONS , INC.", "OPEN-ROAD-SOLUTIONS" }, { 0x249504, "SFR", "SFR" }, { 0x24A2E1, "Apple, Inc", "APPLE" }, { 0x24A42C, "KOUKAAM a.s.", "KOUKAAM-A-S" }, { 0x24A43C, "Ubiquiti Networks, INC", "UBIQUITI-NETWORKS" }, { 0x24A495, "Thales Canada Inc.", "THALES-CANADA" }, { 0x24A87D, "Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd.", "PANASONIC-AUTOMOTIVE-ASIA-PACIFIC-THAILAND" }, { 0x24A937, "PURE Storage", "PURE-STORAGE" }, { 0x24AB81, "Apple", "APPLE" }, { 0x24AF4A, "Alcatel-Lucent-IPD", "ALCATEL-LUCENT-IPD" }, { 0x24AF54, "NEXGEN Mediatech Inc.", "NEXGEN-MEDIATECH" }, { 0x24B657, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x24B6B8, "FRIEM SPA", "FRIEM-SPA" }, { 0x24B6FD, "Dell Inc", "DELL" }, { 0x24B88C, "Crenus Co.,Ltd.", "CRENUS" }, { 0x24B8D2, "Opzoon Technology Co.,Ltd.", "OPZOON" }, { 0x24BA30, "Technical Consumer Products, Inc.", "TECHNICAL-CONSUMER-PRODUCTS" }, { 0x24BBC1, "Absolute Analysis", "ABSOLUTE-ANALYSIS" }, { 0x24BC82, "Dali Wireless, Inc.", "DALI-WIRELESS" }, { 0x24BE05, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x24BF74, "PRIVATE", "PRIVATE" }, { 0x24C0B3, "RSF", "RSF" }, { 0x24C696, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x24C848, "mywerk system GmbH", "MYWERK-SYSTEM" }, { 0x24C86E, "Chaney Instrument Co.", "CHANEY-INSTRUMENT" }, { 0x24C9A1, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x24C9DE, "Genoray", "GENORAY" }, { 0x24CBE7, "MYK, Inc.", "MYK" }, { 0x24CF21, "Shenzhen State Micro Technology Co., Ltd", "SHENZHEN-STATE-MICRO" }, { 0x24D2CC, "SmartDrive Systems Inc.", "SMARTDRIVE" }, { 0x24D921, "Avaya, Inc", "AVAYA" }, { 0x24DAB6, "Sistemas de Gestión Energética S.A. de C.V", "SISTEMAS-DE-GESTIóN-ENERGéTICA-DE-C-V" }, { 0x24DBAC, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x24DBAD, "ShopperTrak RCT Corporation", "SHOPPERTRAK-RCT" }, { 0x24DBED, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x24DEC6, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x24E271, "Qingdao Hisense Communications Co.,Ltd", "QINGDAO-HISENSE-COMMUNICATION" }, { 0x24E6BA, "JSC Zavod im. Kozitsky", "JSC-ZAVOD-IM-KOZITSKY" }, { 0x24E9B3, "Cisco", "CISCO" }, { 0x24EA40, "Systeme Helmholz GmbH", "SYSTEME-HELMHOLZ" }, { 0x24EB65, "SAET I.S. S.r.l.", "SAET-I-S-S-R-L" }, { 0x24EC99, "Askey Computer Corp", "ASKEY" }, { 0x24ECD6, "CSG Science & Technology Co.,Ltd.Hefei", "CSG-SCIENCE-HEFEI" }, { 0x24EE3A, "Chengdu Yingji Electronic Hi-tech Co Ltd", "CHENGDU-YINGJI-HI-TECH" }, { 0x24F0FF, "GHT Co., Ltd.", "GHT" }, { 0x24F2DD, "Radiant Zemax LLC", "RADIANT-ZEMAX-LLC" }, { 0x24F5AA, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x24FD52, "Liteon Technology Corporation", "LITEON" }, { 0x2804E0, "FERMAX ELECTRONICA S.A.U.", "FERMAX-ELECTRONICA-U" }, { 0x28061E, "NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD", "NINGBO-GLOBAL-USEFUL-ELECTRIC" }, { 0x28068D, "ITL, LLC", "ITL-LLC" }, { 0x280B5C, "Apple", "APPLE" }, { 0x280CB8, "Mikrosay Yazilim ve Elektronik A.S.", "MIKROSAY-YAZILIM-VE-ELEKTRONIK-A-S" }, { 0x280DFC, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x28107B, "D-Link International", "D-LINK" }, { 0x281471, "Lantis co., LTD.", "LANTIS" }, { 0x28162E, "2Wire", "2WIRE" }, { 0x2817CE, "Omnisense Ltd", "OMNISENSE" }, { 0x281878, "Microsoft Corporation", "MICROSOFT" }, { 0x2818FD, "Aditya Infotech Ltd.", "ADITYA-INFOTECH" }, { 0x282246, "Beijing Sinoix Communication Co., LTD", "BEIJING-SINOIX-COMMUNICATION" }, { 0x2826A6, "PBR electronics GmbH", "PBR-ELECTRONICS" }, { 0x28285D, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x2829D9, "GlobalBeiMing technology (Beijing)Co. Ltd", "GLOBALBEIMING-BEIJING" }, { 0x282CB2, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x283152, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x283410, "Enigma Diagnostics Limited", "ENIGMA-DIAGNOSTICS" }, { 0x283737, "Apple", "APPLE" }, { 0x2838CF, "Gen2wave", "GEN2WAVE" }, { 0x2839E7, "Preceno Technology Pte.Ltd.", "PRECENO-PTE" }, { 0x283CE4, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x28401A, "C8 MediSensors, Inc.", "C8-MEDISENSORS" }, { 0x284121, "OptiSense Network, LLC", "OPTISENSE-NETWORK-LLC" }, { 0x284430, "GenesisTechnical Systems (UK) Ltd", "GENESISTECHNICAL-UK" }, { 0x2847AA, "Nokia Corporation", "NOKIA" }, { 0x284846, "GridCentric Inc.", "GRIDCENTRIC" }, { 0x284C53, "Intune Networks", "INTUNE-NETWORKS" }, { 0x284D92, "Luminator", "LUMINATOR" }, { 0x284FCE, "Liaoning Wontel Science and Technology Development Co.,Ltd.", "LIAONING-WONTEL-SCIENCE-AND-DEVELOPMENT" }, { 0x285132, "Shenzhen Prayfly Technology Co.,Ltd", "SHENZHEN-PRAYFLY" }, { 0x285767, "Echostar Technologies Corp", "ECHOSTAR-TECHNOLOGIES" }, { 0x285FDB, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x286046, "Lantech Communications Global, Inc.", "LANTECH-COMMUNICATION-GLOBAL" }, { 0x286094, "CAPELEC", "CAPELEC" }, { 0x286AB8, "Apple", "APPLE" }, { 0x286ABA, "Apple", "APPLE" }, { 0x286D97, "SAMJIN Co., Ltd.", "SAMJIN" }, { 0x286ED4, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x287184, "Spire Payments", "SPIRE-PAYMENTS" }, { 0x2872C5, "Smartmatic Corp", "SMARTMATIC" }, { 0x2872F0, "ATHENA", "ATHENA" }, { 0x287994, "Realplay Digital Technology(Shenzhen) Co.,Ltd", "REALPLAY-DIGITAL-SHENZHEN" }, { 0x28852D, "Touch Networks", "TOUCH-NETWORKS" }, { 0x288915, "CashGuard Sverige AB", "CASHGUARD-SVERIGE-AB" }, { 0x288A1C, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x2891D0, "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH", "STAGE-TEC-ENTWICKLUNGSGESELLSCHAFT-FüR-PROFESSIONELLE-AUDIOTECHNIK-MBH" }, { 0x28924A, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2893FE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x28940F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x2894AF, "Samhwa Telecom", "SAMHWA-TELECOM" }, { 0x28987B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x289A4B, "SteelSeries ApS", "STEELSERIES-APS" }, { 0x289EDF, "Danfoss Turbocor Compressors, Inc", "DANFOSS-TURBOCOR-COMPRESSORS" }, { 0x28A186, "enblink", "ENBLINK" }, { 0x28A192, "GERP Solution", "GERP-SOLUTION" }, { 0x28A1EB, "ETEK TECHNOLOGY (SHENZHEN) CO.,LTD", "ETEK-SHENZHEN" }, { 0x28A241, "exlar corp", "EXLAR" }, { 0x28A574, "Miller Electric Mfg. Co.", "MILLER-ELECTRIC-MFG" }, { 0x28AF0A, "Sirius XM Radio Inc", "SIRIUS-XM-RADIO" }, { 0x28B0CC, "Xenya d.o.o.", "XENYA-D-O-O" }, { 0x28B2BD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x28B3AB, "Genmark Automation", "GENMARK-AUTOMATION" }, { 0x28BA18, "NextNav, LLC", "NEXTNAV-LLC" }, { 0x28BAB5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28BB59, "RNET Technologies, Inc.", "RNET-TECHNOLOGIES" }, { 0x28BE9B, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x28C0DA, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x28C671, "Yota Devices OY", "YOTA-DEVICES-OY" }, { 0x28C68E, "NETGEAR INC.,", "NETGEAR" }, { 0x28C718, "Altierre", "ALTIERRE" }, { 0x28C914, "Taimag Corporation", "TAIMAG" }, { 0x28CBEB, "One", "ONE" }, { 0x28CC01, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x28CCFF, "Corporacion Empresarial Altra SL", "CORPORACION-EMPRESARIAL-ALTRA-SL" }, { 0x28CD1C, "Espotel Oy", "ESPOTEL-OY" }, { 0x28CD4C, "Individual Computers GmbH", "INDIVIDUAL-COMPUTERS" }, { 0x28CD9C, "Shenzhen Dynamax Software Development Co.,Ltd.", "SHENZHEN-DYNAMAX-SOFTWARE-DEVELOPMENT" }, { 0x28CFDA, "Apple", "APPLE" }, { 0x28CFE9, "Apple", "APPLE" }, { 0x28D1AF, "Nokia Corporation", "NOKIA" }, { 0x28D244, "LCFC(HeFei) Electronics Technology Co., Ltd.", "LCFC-HEFEI-ELECTRONICS" }, { 0x28D576, "Premier Wireless, Inc.", "PREMIER-WIRELESS" }, { 0x28D93E, "Telecor Inc.", "TELECOR" }, { 0x28D997, "Yuduan Mobile Co., Ltd.", "YUDUAN-MOBILE" }, { 0x28DB81, "Shanghai Guao Electronic Technology Co., Ltd", "SHANGHAI-GUAO" }, { 0x28E02C, "Apple", "APPLE" }, { 0x28E14C, "Apple, Inc.", "APPLE" }, { 0x28E297, "Shanghai InfoTM Microelectronics Co.,Ltd.", "SHANGHAI-INFOTM-MICROELECTRONICS" }, { 0x28E608, "Tokheim", "TOKHEIM" }, { 0x28E794, "Microtime Computer Inc.", "MICROTIME" }, { 0x28E7CF, "Apple", "APPLE" }, { 0x28ED58, "JAG Jakob AG", "JAG-JAKOB" }, { 0x28EE2C, "Frontline Test Equipment", "FRONTLINE-TEST-EQUIPMENT" }, { 0x28EF01, "PRIVATE", "PRIVATE" }, { 0x28F358, "2C - Trifonov & Co", "2C---TRIFONOV" }, { 0x28F532, "ADD-Engineering BV", "ADD-ENGINEERING" }, { 0x28F606, "Syes srl", "SYES-SRL" }, { 0x28FBD3, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0x28FC51, "The Electric Controller and Manufacturing Co., LLC", "THE-ELECTRIC-CONTROLLER-AND-MANUFACTURING-LLC" }, { 0x2C002C, "UNOWHY", "UNOWHY" }, { 0x2C0033, "EControls, LLC", "ECONTROLS-LLC" }, { 0x2C00F7, "XOS", "XOS" }, { 0x2C0623, "Win Leader Inc.", "WIN-LEADER" }, { 0x2C10C1, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x2C18AE, "Trend Electronics Co., Ltd.", "TREND-ELECTRONICS" }, { 0x2C1984, "IDN Telecom, Inc.", "IDN-TELECOM" }, { 0x2C1EEA, "AERODEV", "AERODEV" }, { 0x2C2172, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x2C245F, "Babolat VS", "BABOLAT-VS" }, { 0x2C26C5, "zte corporation", "ZTE" }, { 0x2C27D7, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x2C282D, "BBK COMMUNICATIAO TECHNOLOGY CO.,LTD.", "BBK-COMMUNICATIAO" }, { 0x2C2D48, "bct electronic GesmbH", "BCT-GESMBH" }, { 0x2C3068, "Pantech Co.,Ltd", "PANTECH" }, { 0x2C3427, "ERCO & GENER", "ERCO-GENER" }, { 0x2C3557, "ELLIY Power CO..Ltd", "ELLIY-POWER" }, { 0x2C36A0, "Capisco Limited", "CAPISCO" }, { 0x2C36F8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x2C3731, "ShenZhen Yifang Digital Technology Co.,LTD", "SHENZHEN-YIFANG-DIGITAL" }, { 0x2C3996, "SAGEMCOM", "SAGEMCOM" }, { 0x2C3A28, "Fagor Electrónica", "FAGOR-ELECTRóNICA" }, { 0x2C3BFD, "Netstor Technology Co., Ltd.", "NETSTOR" }, { 0x2C3F38, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x2C3F3E, "Alge-Timing GmbH", "ALGE-TIMING" }, { 0x2C4138, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x2C4401, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x2C441B, "Spectrum Medical Limited", "SPECTRUM-MEDICAL" }, { 0x2C44FD, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C534A, "Shenzhen Winyao Electronic Limited", "SHENZHEN-WINYAO" }, { 0x2C542D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x2C553C, "Gainspeed, Inc.", "GAINSPEED" }, { 0x2C59E5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x2C5A05, "Nokia Corporation", "NOKIA" }, { 0x2C5AA3, "PROMATE ELECTRONIC CO.LTD", "PROMATE" }, { 0x2C5D93, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x2C5FF3, "Pertronic Industries", "PERTRONIC-INDUSTRIES" }, { 0x2C625A, "Finest Security Systems Co., Ltd", "FINEST-SECURITY" }, { 0x2C6289, "Regenersis (Glenrothes) Ltd", "REGENERSIS-GLENROTHES" }, { 0x2C67FB, "ShenZhen Zhengjili Electronics Co., LTD", "SHENZHEN-ZHENGJILI-ELECTRONICS" }, { 0x2C69BA, "RF Controls, LLC", "RF-CONTROLS-LLC" }, { 0x2C6BF5, "Juniper networks", "JUNIPER-NETWORKS" }, { 0x2C7155, "HiveMotion", "HIVEMOTION" }, { 0x2C72C3, "Soundmatters", "SOUNDMATTERS" }, { 0x2C750F, "Shanghai Dongzhou-Lawton Communication Technology Co. Ltd.", "SHANGHAI-DONGZHOU-LAWTON-COMMUNICATION" }, { 0x2C768A, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x2C7B5A, "Milper Ltd", "MILPER" }, { 0x2C7B84, "OOO Petr Telegin", "OOO-PETR-TELEGIN" }, { 0x2C7ECF, "Onzo Ltd", "ONZO" }, { 0x2C8065, "HARTING Inc. of North America", "HARTING-OF-NORTH-AMERICA" }, { 0x2C8158, "Hon Hai Precision Ind. Co.,Ltd", "HON-HAI-PRECISION-IND" }, { 0x2C8BF2, "Hitachi Metals America Ltd", "HITACHI-METALS-AMERICA" }, { 0x2C9127, "Eintechno Corporation", "EINTECHNO" }, { 0x2C922C, "Kishu Giken Kogyou Company Ltd,.", "KISHU-GIKEN-KOGYOU-COMPANY" }, { 0x2C9464, "Cincoze Co., Ltd.", "CINCOZE" }, { 0x2C957F, "zte corporation", "ZTE" }, { 0x2C9717, "I.C.Y. B.V.", "I-C-Y" }, { 0x2C9E5F, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x2C9EFC, "CANON INC.", "CANON" }, { 0x2CA157, "acromate, Inc.", "ACROMATE" }, { 0x2CA780, "True Technologies Inc.", "TRUE-TECHNOLOGIES" }, { 0x2CA835, "RIM", "RIM" }, { 0x2CAB25, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x2CB05D, "NETGEAR", "NETGEAR" }, { 0x2CB0DF, "Soliton Technologies Pvt Ltd", "SOLITON-TECHNOLOGIES-PVT" }, { 0x2CB43A, "Apple", "APPLE" }, { 0x2CB693, "Radware", "RADWARE" }, { 0x2CB69D, "RED Digital Cinema", "RED-DIGITAL-CINEMA" }, { 0x2CBE97, "Ingenieurbuero Bickele und Buehler GmbH", "INGENIEURBUERO-BICKELE-UND-BUEHLER" }, { 0x2CC260, "Ravello Systems", "RAVELLO" }, { 0x2CCC15, "Nokia Corporation", "NOKIA" }, { 0x2CCD27, "Precor Inc", "PRECOR" }, { 0x2CCD43, "Summit Technology Group", "SUMMIT-GROUP" }, { 0x2CCD69, "Aqavi.com", "AQAVI-COM" }, { 0x2CD05A, "Liteon Technology Corporation", "LITEON" }, { 0x2CD1DA, "Sanjole, Inc.", "SANJOLE" }, { 0x2CD2E7, "Nokia Corporation", "NOKIA" }, { 0x2CD444, "Fujitsu Limited", "FUJITSU" }, { 0x2CDD0C, "Discovergy GmbH", "DISCOVERGY" }, { 0x2CE2A8, "DeviceDesign", "DEVICEDESIGN" }, { 0x2CE412, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x2CE6CC, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x2CE871, "Alert Metalguard ApS", "ALERT-METALGUARD-APS" }, { 0x2CEDEB, "Alpheus Digital Company Limited", "ALPHEUS-DIGITAL-COMPANY" }, { 0x2CEE26, "Petroleum Geo-Services", "PETROLEUM-GEO-SERVICES" }, { 0x2CF203, "EMKO ELEKTRONIK SAN VE TIC AS", "EMKO-ELEKTRONIK-SAN-VE-TIC-AS" }, { 0x2CF4C5, "Avaya, Inc", "AVAYA" }, { 0x30055C, "Brother industries, LTD.", "BROTHER-INDUSTRIES" }, { 0x300B9C, "Delta Mobile Systems, Inc.", "DELTA-MOBILE" }, { 0x300ED5, "Hon Hai Precision Ind.Co.Ltd", "HON-HAI-PRECISION-IND" }, { 0x3010E4, "Apple, Inc.", "APPLE" }, { 0x30142D, "Piciorgros GmbH", "PICIORGROS" }, { 0x30144A, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x301518, "Ubiquitous Communication Co. ltd.", "UBIQUITOUS-COMMUNICATION" }, { 0x30168D, "ProLon", "PROLON" }, { 0x3017C8, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x3018CF, "DEOS control systems GmbH", "DEOS-CONTROL" }, { 0x301966, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x301A28, "Mako Networks Ltd", "MAKO-NETWORKS" }, { 0x30215B, "Shenzhen Ostar Display Electronic Co.,Ltd", "SHENZHEN-OSTAR-DISPLAY" }, { 0x302DE8, "JDA, LLC (JDA Systems)", "JDA-LLC-JDA" }, { 0x303294, "W-IE-NE-R Plein & Baus GmbH", "W-IE-NE-R-PLEIN-BAUS" }, { 0x3032D4, "Hanilstm Co., Ltd.", "HANILSTM" }, { 0x3037A6, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x303855, "Nokia Corporation", "NOKIA" }, { 0x303926, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x303955, "Shenzhen Jinhengjia Electronic Co., Ltd.", "SHENZHEN-JINHENGJIA" }, { 0x3039F2, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x303A64, "Intel Corporate", "INTEL-CORPORATE" }, { 0x303D08, "GLINTT TES S.A.", "GLINTT-TES" }, { 0x303EAD, "Sonavox Canada Inc", "SONAVOX-CANADA" }, { 0x304174, "ALTEC LANSING LLC", "ALTEC-LANSING-LLC" }, { 0x304449, "PLATH GmbH", "PLATH" }, { 0x30469A, "NETGEAR", "NETGEAR" }, { 0x30493B, "Nanjing Z-Com Wireless Co.,Ltd", "NANJING-Z-COM-WIRELESS" }, { 0x304C7E, "Panasonic Electric Works Automation Controls Techno Co.,Ltd.", "PANASONIC-ELECTRIC-WORKS-AUTOMATION-CONTROLS-TECHNO" }, { 0x304EC3, "Tianjin Techua Technology Co., Ltd.", "TIANJIN-TECHUA" }, { 0x3051F8, "BYK-Gardner GmbH", "BYK-GARDNER" }, { 0x30525A, "NST Co., LTD", "NST" }, { 0x3055ED, "Trex Network LLC", "TREX-NETWORK-LLC" }, { 0x3057AC, "IRLAB LTD.", "IRLAB" }, { 0x305D38, "Beissbarth", "BEISSBARTH" }, { 0x306023, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x306112, "PAV GmbH", "PAV" }, { 0x306118, "Paradom Inc.", "PARADOM" }, { 0x3065EC, "Wistron (ChongQing)", "WISTRON-CHONGQING" }, { 0x30688C, "Reach Technology Inc.", "REACH" }, { 0x30694B, "RIM", "RIM" }, { 0x306CBE, "Skymotion Technology (HK) Limited", "SKYMOTION-HK" }, { 0x306E5C, "Validus Technologies", "VALIDUS-TECHNOLOGIES" }, { 0x3071B2, "Hangzhou Prevail Optoelectronic Equipment Co.,LTD.", "HANGZHOU-PREVAIL-OPTOELECTRONIC-EQUIPMENT" }, { 0x30766F, "LG Electronics", "LG-ELECTRONICS" }, { 0x30786B, "TIANJIN Golden Pentagon Electronics Co., Ltd.", "TIANJIN-GOLDEN-PENTAGON-ELECTRONICS" }, { 0x3078C2, "Innowireless, Co. Ltd.", "INNOWIRELESS" }, { 0x307C30, "RIM", "RIM" }, { 0x307ECB, "SFR", "SFR" }, { 0x3085A9, "Asustek Computer Inc", "ASUSTEK" }, { 0x308730, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x308999, "Guangdong East Power Co.,", "GUANGDONG-EAST-POWER" }, { 0x308CFB, "Dropcam", "DROPCAM" }, { 0x3090AB, "Apple", "APPLE" }, { 0x3092F6, "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD", "SHANGHAI-SUNMON-COMMUNICATION-TECHNOGY" }, { 0x309BAD, "BBK Electronics Corp., Ltd.,", "BBK-ELECTRONICS" }, { 0x30AABD, "Shanghai Reallytek Information Technology Co.,Ltd", "SHANGHAI-REALLYTEK-INFORMATION" }, { 0x30AE7B, "Deqing Dusun Electron CO., LTD", "DEQING-DUSUN-ELECTRON" }, { 0x30AEF6, "Radio Mobile Access", "RADIO-MOBILE-ACCESS" }, { 0x30B216, "Hytec Geraetebau GmbH", "HYTEC-GERAETEBAU" }, { 0x30B3A2, "Shenzhen Heguang Measurement & Control Technology Co.,Ltd", "SHENZHEN-HEGUANG-MEASUREMENT-CONTROL" }, { 0x30B5C2, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x30C82A, "Wi-Next s.r.l.", "WI-NEXT-S-R-L" }, { 0x30CDA7, "Samsung Electronics ITS, Printer division", "SAMSUNG-ELECTRONICS-ITS-PRINTER-DIVISION" }, { 0x30D357, "Logosol, Inc.", "LOGOSOL" }, { 0x30D46A, "Autosales Incorporated", "AUTOSALES-INCORPORATED" }, { 0x30D6C9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x30DE86, "Cedac Software S.r.l.", "CEDAC-SOFTWARE-S-R-L" }, { 0x30E48E, "Vodafone UK", "VODAFONE-UK" }, { 0x30E4DB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x30EB25, "INTEK DIGITAL", "INTEK-DIGITAL" }, { 0x30EFD1, "Alstom Strongwish (Shenzhen) Co., Ltd.", "ALSTOM-STRONGWISH-SHENZHEN" }, { 0x30F31D, "zte corporation", "ZTE" }, { 0x30F33A, "+plugg srl", "+PLUGG-SRL" }, { 0x30F42F, "ESP", "ESP" }, { 0x30F70D, "Cisco Systems", "CISCO" }, { 0x30F7C5, "Apple", "APPLE" }, { 0x30F9ED, "Sony Corporation", "SONY" }, { 0x30FD11, "MACROTECH (USA) INC.", "MACROTECH-USA" }, { 0x3407FB, "Ericsson AB", "ERICSSON-AB" }, { 0x340804, "D-Link Corporation", "D-LINK" }, { 0x3413A8, "Mediplan Limited", "MEDIPLAN" }, { 0x3413E8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x34159E, "Apple", "APPLE" }, { 0x3417EB, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0x341A4C, "SHENZHEN WEIBU ELECTRONICS CO.,LTD.", "SHENZHEN-WEIBU-ELECTRONICS" }, { 0x341B22, "Grandbeing Technology Co., Ltd", "GRANDBEING" }, { 0x342109, "Jensen Scandinavia AS", "JENSEN-SCANDINAVIA-AS" }, { 0x342387, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x3423BA, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x34255D, "Shenzhen Loadcom Technology Co.,Ltd", "SHENZHEN-LOADCOM" }, { 0x3429EA, "MCD ELECTRONICS SP. Z O.O.", "MCD-ELECTRONICS-SP-Z-O-O" }, { 0x342F6E, "Anywire corporation", "ANYWIRE" }, { 0x343111, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x3440B5, "IBM", "IBM" }, { 0x34466F, "HiTEM Engineering", "HITEM-ENGINEERING" }, { 0x344B3D, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x344B50, "ZTE Corporation", "ZTE" }, { 0x344F3F, "IO-Power Technology Co., Ltd.", "IO-POWER" }, { 0x344F69, "EKINOPS SAS", "EKINOPS-SAS" }, { 0x3451C9, "Apple", "APPLE" }, { 0x345B11, "EVI HEAT AB", "EVI-HEAT-AB" }, { 0x345C40, "Cargt Holdings LLC", "CARGT-HOLDINGS-LLC" }, { 0x346178, "The Boeing Company", "THE-BOEING-COMPANY" }, { 0x34684A, "Teraworks Co., Ltd.", "TERAWORKS" }, { 0x346BD3, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x346E8A, "Ecosense", "ECOSENSE" }, { 0x346F92, "White Rodgers Division", "WHITE-RODGERS-DIVISION" }, { 0x3475C7, "Avaya, Inc", "AVAYA" }, { 0x3476C5, "I-O DATA DEVICE, INC.", "I-O-DATA-DEVICE" }, { 0x347877, "O-NET Communications(Shenzhen) Limited", "O-NET-COMMUNICATION-SHENZHEN" }, { 0x347E39, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x348137, "UNICARD SA", "UNICARD" }, { 0x3482DE, "Kayo Technology, Inc.", "KAYO" }, { 0x348302, "iFORCOM Co., Ltd", "IFORCOM" }, { 0x348446, "Ericsson AB", "ERICSSON-AB" }, { 0x34862A, "Heinz Lackmann GmbH & Co KG", "HEINZ-LACKMANN" }, { 0x34885D, "Logitech Far East", "LOGITECH-FAR-EAST" }, { 0x348AAE, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x3495DB, "Logitec Corporation", "LOGITEC" }, { 0x3497FB, "ADVANCED RF TECHNOLOGIES INC", "ADVANCED-RF-TECHNOLOGIES" }, { 0x34996F, "VPI Engineering", "VPI-ENGINEERING" }, { 0x3499D7, "Universal Flow Monitors, Inc.", "UNIVERSAL-FLOW-MONITORS" }, { 0x349A0D, "ZBD Displays Ltd", "ZBD-DISPLAYS" }, { 0x349D90, "Heinzmann GmbH & CO. KG", "HEINZMANN" }, { 0x34A183, "AWare, Inc", "AWARE" }, { 0x34A3BF, "Terewave. Inc.", "TEREWAVE" }, { 0x34A55D, "TECHNOSOFT INTERNATIONAL SRL", "TECHNOSOFT-SRL" }, { 0x34A5E1, "Sensorist ApS", "SENSORIST-APS" }, { 0x34A68C, "Shine Profit Development Limited", "SHINE-PROFIT-DEVELOPMENT" }, { 0x34A709, "Trevil srl", "TREVIL-SRL" }, { 0x34A7BA, "Fischer International Systems Corporation", "FISCHER" }, { 0x34A843, "KYOCERA Display Corporation", "KYOCERA-DISPLAY" }, { 0x34A84E, "Cisco", "CISCO" }, { 0x34AA8B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34AA99, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x34AAEE, "Mikrovisatos Servisas UAB", "MIKROVISATOS-SERVISAS-UAB" }, { 0x34ADE4, "Shanghai Chint Power Systems Co., Ltd.", "SHANGHAI-CHINT-POWER" }, { 0x34AF2C, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x34B1F7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x34B571, "PLDS", "PLDS" }, { 0x34BA51, "Se-Kure Controls, Inc.", "SE-KURE-CONTROLS" }, { 0x34BA9A, "Asiatelco Technologies Co.", "ASIATELCO-TECHNOLOGIES" }, { 0x34BB1F, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x34BCA6, "Beijing Ding Qing Technology, Ltd.", "BEIJING-DING-QING" }, { 0x34BDC8, "Cisco Systems", "CISCO" }, { 0x34BDF9, "Shanghai WDK Industrial Co.,Ltd.", "SHANGHAI-WDK-INDUSTRIAL" }, { 0x34BDFA, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x34BE00, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x34BF90, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x34C059, "Apple", "APPLE" }, { 0x34C3AC, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x34C69A, "Enecsys Ltd", "ENECSYS" }, { 0x34C731, "ALPS Co,. Ltd.", "ALPS" }, { 0x34C803, "Nokia Corporation", "NOKIA" }, { 0x34C99D, "EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD.", "EIDOLON-COMMUNICATION" }, { 0x34CD6D, "CommSky Technologies", "COMMSKY-TECHNOLOGIES" }, { 0x34CDBE, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x34CE94, "Parsec (Pty) Ltd", "PARSEC-PTY" }, { 0x34D09B, "MobilMAX Technology Inc.", "MOBILMAX" }, { 0x34D2C4, "RENA GmbH Print Systeme", "RENA-PRINT-SYSTEME" }, { 0x34D7B4, "Tributary Systems, Inc.", "TRIBUTARY" }, { 0x34DBFD, "Cisco", "CISCO" }, { 0x34DE34, "zte corporation", "ZTE" }, { 0x34DF2A, "Fujikon Industrial Co.,Limited", "FUJIKON-INDUSTRIAL" }, { 0x34E0CF, "zte corporation", "ZTE" }, { 0x34E0D7, "DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD", "DONGGUAN-QISHENG-ELECTRONICS-INDUSTRIAL" }, { 0x34EF44, "2Wire", "2WIRE" }, { 0x34EF8B, "NTT Communications Corporation", "NTT-COMMUNICATION" }, { 0x34F39B, "WizLAN Ltd.", "WIZLAN" }, { 0x34F62D, "SHARP Corporation", "SHARP" }, { 0x34F968, "ATEK Products, LLC", "ATEK-PRODUCTS-LLC" }, { 0x34FA40, "Guangzhou Robustel Technologies Co., Limited", "GUANGZHOU-ROBUSTEL-TECHNOLOGIES" }, { 0x34FC6F, "ALCEA", "ALCEA" }, { 0x380197, "Toshiba Samsung Storage Technolgoy Korea Corporation", "TOSHIBA-SAMSUNG-STORAGE-TECHNOLGOY-KOREA" }, { 0x3806B4, "A.D.C. GmbH", "A-D-C" }, { 0x380A0A, "Sky-City Communication and Electronics Limited Company", "SKY-CITY-COMMUNICATION-AND-ELECTRONICS-COMPANY" }, { 0x380A94, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x380B40, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x380DD4, "Primax Electronics LTD.", "PRIMAX-ELECTRONICS" }, { 0x380F4A, "Apple", "APPLE" }, { 0x380FE4, "Dedicated Network Partners Oy", "DEDICATED-NETWORK-PARTNERS-OY" }, { 0x3816D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x381766, "PROMZAKAZ LTD.", "PROMZAKAZ" }, { 0x38192F, "Nokia Corporation", "NOKIA" }, { 0x381C4A, "SIMCom Wireless Solutions Co.,Ltd.", "SIMCOM-WIRELESS-SOLUTIONS" }, { 0x38229D, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x3822D6, "H3C Technologies Co., Limited", "H3C-TECHNOLOGIES" }, { 0x3826CD, "ANDTEK", "ANDTEK" }, { 0x3828EA, "Fujian Netcom Technology Co., LTD", "FUJIAN-NETCOM" }, { 0x3831AC, "WEG", "WEG" }, { 0x383F10, "DBL Technology Ltd.", "DBL" }, { 0x384233, "Wildeboer Bauteile GmbH", "WILDEBOER-BAUTEILE" }, { 0x3842A6, "Ingenieurbuero Stahlkopf", "INGENIEURBUERO-STAHLKOPF" }, { 0x384369, "Patrol Products Consortium LLC", "PATROL-PRODUCTS-CONSORTIUM-LLC" }, { 0x38458C, "MyCloud Technology corporation", "MYCLOUD" }, { 0x384608, "ZTE Corporation", "ZTE" }, { 0x38484C, "Apple", "APPLE" }, { 0x384FF0, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x38521A, "Alcatel-Lucent 7705", "ALCATEL-LUCENT-7705" }, { 0x38580C, "Panaccess Systems GmbH", "PANACCESS" }, { 0x3859F8, "MindMade sp. z o.o.", "MINDMADE-SP-Z-O-O" }, { 0x3859F9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x385AA8, "Beijing Zhongdun Security Technology Development Co.", "BEIJING-ZHONGDUN-SECURITY-DEVELOPMENT" }, { 0x385FC3, "Yu Jeong System, Co.Ltd", "YU-JEONG-SYSTEM" }, { 0x386077, "PEGATRON CORPORATION", "PEGATRON" }, { 0x3863F6, "3NOD MULTIMEDIA(SHENZHEN)CO.,LTD", "3NOD-MULTIMEDIA-SHENZHEN" }, { 0x386645, "OOSIC Technology CO.,Ltd", "OOSIC" }, { 0x386793, "Asia Optical Co., Inc.", "ASIA-OPTICAL" }, { 0x386BBB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x386C9B, "Ivy Biomedical", "IVY-BIOMEDICAL" }, { 0x386E21, "Wasion Group Ltd.", "WASION-GROUP" }, { 0x3872C0, "COMTREND", "COMTREND" }, { 0x387B47, "AKELA, Inc.", "AKELA" }, { 0x388345, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x3889DC, "Opticon Sensors Europe B.V.", "OPTICON-SENSORS-EUROPE" }, { 0x388AB7, "ITC Networks", "ITC-NETWORKS" }, { 0x388EE7, "Fanhattan LLC", "FANHATTAN-LLC" }, { 0x3891FB, "Xenox Holding BV", "XENOX-HOLDING" }, { 0x389592, "Beijing Tendyron Corporation", "BEIJING-TENDYRON" }, { 0x389F83, "OTN Systems N.V.", "OTN-N-V" }, { 0x38A53C, "Veenstra Instruments", "VEENSTRA-INSTRUMENTS" }, { 0x38A5B6, "SHENZHEN MEGMEET ELECTRICAL CO.,LTD", "SHENZHEN-MEGMEET-ELECTRICAL" }, { 0x38A851, "Moog, Ing", "MOOG-ING" }, { 0x38A86B, "Orga BV", "ORGA" }, { 0x38A95F, "Actifio Inc", "ACTIFIO" }, { 0x38AA3C, "SAMSUNG ELECTRO-MECHANICS", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x38B12D, "Sonotronic Nagel GmbH", "SONOTRONIC-NAGEL" }, { 0x38B5BD, "E.G.O. Elektro-Ger", "E-G-O-ELEKTRO-GER" }, { 0x38B74D, "Fijowave Limited", "FIJOWAVE" }, { 0x38BB23, "OzVision America LLC", "OZVISION-AMERICA-LLC" }, { 0x38BC1A, "Meizu technology co.,ltd", "MEIZU" }, { 0x38BF2F, "Espec Corp.", "ESPEC" }, { 0x38BF33, "NEC CASIO Mobile Communications", "NEC-CASIO-MOBILE-COMMUNICATION" }, { 0x38C096, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x38C7BA, "CS Services Co.,Ltd.", "CS-SERVICES" }, { 0x38C85C, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x38C9A9, "SMART High Reliability Solutions, Inc.", "SMART-HIGH-RELIABILITY-SOLUTIONS" }, { 0x38CA97, "Contour Design LLC", "CONTOUR-DESIGN-LLC" }, { 0x38D135, "EasyIO Corporation Sdn. Bhd.", "EASYIO-SDN-BHD" }, { 0x38DBBB, "Sunbow Telecom Co., Ltd.", "SUNBOW-TELECOM" }, { 0x38DE60, "Mohlenhoff GmbH", "MOHLENHOFF" }, { 0x38E08E, "Mitsubishi Electric Corporation", "MITSUBISHI-ELECTRIC" }, { 0x38E595, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x38E7D8, "HTC Corporation", "HTC" }, { 0x38E8DF, "b gmbh medien + datenbanken", "B-MEDIEN-+-DATENBANKEN" }, { 0x38E98C, "Reco S.p.A.", "RECO-S-P-A" }, { 0x38EAA7, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x38EC11, "Novatek Microelectronics Corp.", "NOVATEK-MICROELECTRONICS" }, { 0x38ECE4, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x38EE9D, "Anedo Ltd.", "ANEDO" }, { 0x38F597, "home2net GmbH", "HOME2NET" }, { 0x38F8B7, "V2COM PARTICIPACOES S.A.", "V2COM-PARTICIPACOES" }, { 0x38FEC5, "Ellips B.V.", "ELLIPS" }, { 0x3C02B1, "Creation Technologies LP", "CREATION-TECHNOLOGIES-LP" }, { 0x3C04BF, "PRAVIS SYSTEMS Co.Ltd.,", "PRAVIS" }, { 0x3C05AB, "Product Creation Studio", "PRODUCT-CREATION-STUDIO" }, { 0x3C0754, "Apple", "APPLE" }, { 0x3C0771, "Sony Corporation", "SONY" }, { 0x3C081E, "Beijing Yupont Electric Power Technology Co.,Ltd", "BEIJING-YUPONT-ELECTRIC-POWER" }, { 0x3C08F6, "Cisco", "CISCO" }, { 0x3C096D, "Powerhouse Dynamics", "POWERHOUSE-DYNAMICS" }, { 0x3C0C48, "Servergy, Inc.", "SERVERGY" }, { 0x3C0E23, "Cisco", "CISCO" }, { 0x3C0FC1, "KBC Networks", "KBC-NETWORKS" }, { 0x3C1040, "daesung network", "DAESUNG-NETWORK" }, { 0x3C106F, "ALBAHITH TECHNOLOGIES", "ALBAHITH-TECHNOLOGIES" }, { 0x3C15EA, "TESCOM CO., LTD.", "TESCOM" }, { 0x3C18A0, "Luxshare Precision Industry Co.,Ltd.", "LUXSHARE-PRECISION-INDUSTRY" }, { 0x3C1915, "GFI Chrono Time", "GFI-CHRONO-TIME" }, { 0x3C197D, "Ericsson AB", "ERICSSON-AB" }, { 0x3C1A57, "Cardiopulmonary Corp", "CARDIOPULMONARY" }, { 0x3C1A79, "Huayuan Technology CO.,LTD", "HUAYUAN" }, { 0x3C1CBE, "JADAK LLC", "JADAK-LLC" }, { 0x3C26D5, "Sotera Wireless", "SOTERA-WIRELESS" }, { 0x3C2763, "SLE quality engineering GmbH & Co. KG", "SLE-QUALITY-ENGINEERING" }, { 0x3C2DB7, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x3C2F3A, "SFORZATO Corp.", "SFORZATO" }, { 0x3C300C, "Dewar Electronics Pty Ltd", "DEWAR-ELECTRONICS-PTY" }, { 0x3C363D, "Nokia Corporation", "NOKIA" }, { 0x3C36E4, "Arris Group, Inc.", "ARRIS-GROUP" }, { 0x3C3888, "ConnectQuest, llc", "CONNECTQUEST-LLC" }, { 0x3C39C3, "JW Electronics Co., Ltd.", "JW-ELECTRONICS" }, { 0x3C3A73, "Avaya, Inc", "AVAYA" }, { 0x3C404F, "Guangdong Pisen Electronics Co. Ltd.", "GUANGDONG-PISEN-ELECTRONICS" }, { 0x3C438E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C4A92, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x3C4C69, "Infinity System S.L.", "INFINITY-SYSTEM-S-L" }, { 0x3C4E47, "Etronic A/S", "ETRONIC-A/S" }, { 0x3C57BD, "Kessler Crane Inc.", "KESSLER-CRANE" }, { 0x3C57D5, "FiveCo", "FIVECO" }, { 0x3C5A37, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x3C5F01, "Synerchip Co., Ltd.", "SYNERCHIP" }, { 0x3C6104, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x3C6200, "Samsung electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x3C6278, "SHENZHEN JETNET TECHNOLOGY CO.,LTD.", "SHENZHEN-JETNET" }, { 0x3C672C, "Sciovid Inc.", "SCIOVID" }, { 0x3C6A7D, "Niigata Power Systems Co., Ltd.", "NIIGATA-POWER" }, { 0x3C6E63, "Mitron OY", "MITRON-OY" }, { 0x3C6F45, "Fiberpro Inc.", "FIBERPRO" }, { 0x3C6FF7, "EnTek Systems, Inc.", "ENTEK" }, { 0x3C7059, "MakerBot Industries", "MAKERBOT-INDUSTRIES" }, { 0x3C7437, "RIM", "RIM" }, { 0x3C754A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x3C77E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x3C7DB1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x3C81D8, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x3C83B5, "Advance Vision Electronics Co. Ltd.", "ADVANCE-VISION-ELECTRONICS" }, { 0x3C86A8, "Sangshin elecom .co,, LTD", "SANGSHIN-ELECOM" }, { 0x3C8AB0, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x3C8AE5, "Tensun Information Technology(Hangzhou) Co.,LTD", "TENSUN-INFORMATION-HANGZHOU" }, { 0x3C8BFE, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x3C9157, "Hangzhou Yulong Conmunication Co.,Ltd", "HANGZHOU-YULONG-CONMUNICATION" }, { 0x3C9174, "ALONG COMMUNICATION TECHNOLOGY", "ALONG-COMMUNICATION" }, { 0x3C94D5, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x3C970E, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0x3C977E, "IPS Technology Limited", "IPS" }, { 0x3C98BF, "Quest Controls, Inc.", "QUEST-CONTROLS" }, { 0x3C99F7, "Lansentechnology AB", "LANSENTECHNOLOGY-AB" }, { 0x3C9F81, "Shenzhen CATIC Bit Communications Technology Co.,Ltd", "SHENZHEN-CATIC-BIT-COMMUNICATION" }, { 0x3CA315, "Bless Information & Communications Co., Ltd", "BLESS-INFORMATION-COMMUNICATION" }, { 0x3CA72B, "MRV Communications (Networks) LTD", "MRV-COMMUNICATION-NETWORKS" }, { 0x3CA9F4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x3CB15B, "Avaya, Inc", "AVAYA" }, { 0x3CB17F, "Wattwatchers Pty Ld", "WATTWATCHERS-PTY-LD" }, { 0x3CB87A, "PRIVATE", "PRIVATE" }, { 0x3CB9A6, "Belden Deutschland GmbH", "BELDEN-DEUTSCHLAND" }, { 0x3CBDD8, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0x3CC0C6, "d&b audiotechnik GmbH", "D-B-AUDIOTECHNIK" }, { 0x3CC12C, "AES Corporation", "AES" }, { 0x3CC1F6, "Melange Systems Pvt. Ltd.", "MELANGE-PVT" }, { 0x3CC243, "Nokia Corporation", "NOKIA" }, { 0x3CC99E, "Huiyang Technology Co., Ltd", "HUIYANG" }, { 0x3CCA87, "Iders Incorporated", "IDERS-INCORPORATED" }, { 0x3CCE73, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x3CD0F8, "Apple", "APPLE" }, { 0x3CD16E, "Telepower Communication Co., Ltd", "TELEPOWER-COMMUNICATION" }, { 0x3CD4D6, "WirelessWERX, Inc", "WIRELESSWERX" }, { 0x3CD7DA, "SK Mtek microelectronics(shenzhen)limited", "SK-MTEK-MICROELECTRONICS-SHENZHEN" }, { 0x3CD92B, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x3CDF1E, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x3CDFBD, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x3CE072, "Apple", "APPLE" }, { 0x3CE5A6, "Hangzhou H3C Technologies Co., Ltd.", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x3CE5B4, "KIDASEN INDUSTRIA E COMERCIO DE ANTENAS LTDA", "KIDASEN-INDUSTRIA-E-COMERCIO-DE-ANTENAS-LTDA" }, { 0x3CE624, "LG Display", "LG-DISPLAY" }, { 0x3CEA4F, "2Wire", "2WIRE" }, { 0x3CEAFB, "NSE AG", "NSE" }, { 0x3CF392, "Virtualtek. Co. Ltd", "VIRTUALTEK" }, { 0x3CF52C, "DSPECIALISTS GmbH", "DSPECIALISTS" }, { 0x3CF72A, "Nokia Corporation", "NOKIA" }, { 0x3CF748, "Shenzhen Linsn Technology Development Co.,Ltd", "SHENZHEN-LINSN-DEVELOPMENT" }, { 0x3CFB96, "Emcraft Systems LLC", "EMCRAFT-LLC" }, { 0x4001C6, "3COM EUROPE LTD", "3COM" }, { 0x40040C, "A&T", "A-T" }, { 0x4007C0, "Railtec Systems GmbH", "RAILTEC" }, { 0x400E67, "Tremol Ltd.", "TREMOL" }, { 0x400E85, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x4012E4, "Compass-EOS", "COMPASS-EOS" }, { 0x4013D9, "Global ES", "GLOBAL-ES" }, { 0x401597, "Protect America, Inc.", "PROTECT-AMERICA" }, { 0x40169F, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x4016FA, "EKM Metering", "EKM-METERING" }, { 0x4018B1, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0x4018D7, "Wyle Telemetry and Data Systems", "WYLE-TELEMETRY-AND-DATA" }, { 0x401D59, "Biometric Associates, LP", "BIOMETRIC-ASSOCIATES-LP" }, { 0x4022ED, "Digital Projection Ltd", "DIGITAL-PROJECTION" }, { 0x4025C2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x40270B, "Mobileeco Co., Ltd", "MOBILEECO" }, { 0x402BA1, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x402CF4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x403004, "Apple", "APPLE" }, { 0x403067, "Conlog (Pty) Ltd", "CONLOG-PTY" }, { 0x40336C, "Godrej & Boyce Mfg. co. ltd", "GODREJ-BOYCE-MFG" }, { 0x4037AD, "Macro Image Technology, Inc.", "MACRO-IMAGE" }, { 0x403CFC, "Apple", "APPLE" }, { 0x404022, "ZIV", "ZIV" }, { 0x40406B, "Icomera", "ICOMERA" }, { 0x404A03, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x404A18, "Addrek Smart Solutions", "ADDREK-SMART-SOLUTIONS" }, { 0x404D8E, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x4050E0, "Milton Security Group LLC", "MILTON-SECURITY-GROUP-LLC" }, { 0x40516C, "Grandex International Corporation", "GRANDEX" }, { 0x40520D, "Pico Technology", "PICO" }, { 0x405539, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x40560C, "In Home Displays Ltd", "IN-HOME-DISPLAYS" }, { 0x405A9B, "ANOVO", "ANOVO" }, { 0x405FBE, "RIM", "RIM" }, { 0x405FC2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x40605A, "Hawkeye Tech Co. Ltd", "HAWKEYE-TECH" }, { 0x406186, "MICRO-STAR INT'L CO.,LTD", "MICRO-STAR" }, { 0x40618E, "Stella-Green Co", "STELLA-GREEN" }, { 0x40667A, "mediola - connected living AG", "MEDIOLA---CONNECTED-LIVING" }, { 0x406826, "Thales Optronics Limited", "THALES-OPTRONICS" }, { 0x406AAB, "RIM", "RIM" }, { 0x406C8F, "Apple", "APPLE" }, { 0x406F2A, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x407009, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x40704A, "Power Idea Technology Limited", "POWER-IDEA" }, { 0x407074, "Life Technology (China) Co., Ltd", "LIFE-CHINA" }, { 0x407496, "aFUN TECHNOLOGY INC.", "AFUN" }, { 0x407A80, "Nokia Corporation", "NOKIA" }, { 0x407B1B, "Mettle Networks Inc.", "METTLE-NETWORKS" }, { 0x4083DE, "Motorola", "MOTOROLA" }, { 0x408493, "Clavister AB", "CLAVISTER-AB" }, { 0x4088E0, "Beijing Ereneben Information Technology Limited Shenzhen Branch", "BEIJING-ERENEBEN-INFORMATION-SHENZHEN-BRANCH" }, { 0x408A9A, "TITENG CO., Ltd.", "TITENG" }, { 0x408B07, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0x408BF6, "Shenzhen TCL New Technology Co; Ltd.", "SHENZHEN-TCL-NEW" }, { 0x409558, "Aisino Corporation", "AISINO" }, { 0x4097D1, "BK Electronics cc", "BK-ELECTRONICS-CC" }, { 0x40984C, "Casacom Solutions AG", "CASACOM-SOLUTIONS" }, { 0x40984E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x40987B, "Aisino Corporation", "AISINO" }, { 0x409FC7, "BAEKCHUN I&C Co., Ltd.", "BAEKCHUN-I-C" }, { 0x40A6A4, "PassivSystems Ltd", "PASSIVSYSTEMS" }, { 0x40A6D9, "Apple", "APPLE" }, { 0x40AC8D, "Data Management, Inc.", "DATA-MANAGEMENT" }, { 0x40B0FA, "LG Electronics", "LG-ELECTRONICS" }, { 0x40B2C8, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x40B395, "Apple", "APPLE" }, { 0x40B3FC, "Logital Co. Limited", "LOGITAL" }, { 0x40B4F0, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x40B6B1, "SUNGSAM CO,.Ltd", "SUNGSAM" }, { 0x40B7F3, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x40BA61, "Arima Communications Corp.", "ARIMA-COMMUNICATION" }, { 0x40BC73, "Cronoplast S.L.", "CRONOPLAST-S-L" }, { 0x40BC8B, "itelio GmbH", "ITELIO" }, { 0x40BD9E, "Physio-Control, Inc", "PHYSIO-CONTROL" }, { 0x40BF17, "Digistar Telecom. SA", "DIGISTAR-TELECOM" }, { 0x40C245, "Shenzhen Hexicom Technology Co., Ltd.", "SHENZHEN-HEXICOM" }, { 0x40C4D6, "ChongQing Camyu Technology Development Co.,Ltd.", "CHONGQING-CAMYU-DEVELOPMENT" }, { 0x40C7C9, "Naviit Inc.", "NAVIIT" }, { 0x40CBA8, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x40CD3A, "Z3 Technology", "Z3" }, { 0x40D32D, "Apple", "APPLE" }, { 0x40D40E, "Biodata Ltd", "BIODATA" }, { 0x40D559, "MICRO S.E.R.I.", "MICRO-S-E-R-I" }, { 0x40D855, "IEEE REGISTRATION AUTHORITY", "IEEE-REGISTRATION-AUTHORITY" }, { 0x40E730, "DEY Storage Systems, Inc.", "DEY-STORAGE" }, { 0x40E793, "Shenzhen Siviton Technology Co.,Ltd", "SHENZHEN-SIVITON" }, { 0x40ECF8, "Siemens AG", "SIEMENS" }, { 0x40EF4C, "Fihonest communication co.,Ltd", "FIHONEST-COMMUNICATION" }, { 0x40F02F, "Liteon Technology Corporation", "LITEON" }, { 0x40F14C, "ISE Europe SPRL", "ISE-EUROPE-SPRL" }, { 0x40F2E9, "IBM", "IBM" }, { 0x40F308, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0x40F407, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x40F4EC, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x40F52E, "Leica Microsystems (Schweiz) AG", "LEICA-MICROSYSTEMS-SCHWEIZ" }, { 0x40FC89, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x4403A7, "Cisco", "CISCO" }, { 0x440CFD, "NetMan Co., Ltd.", "NETMAN" }, { 0x441319, "WKK TECHNOLOGY LTD.", "WKK" }, { 0x44184F, "Fitview", "FITVIEW" }, { 0x4419B6, "Hangzhou Hikvision Digital Technology Co.,Ltd.", "HANGZHOU-HIKVISION-DIGITAL" }, { 0x441EA1, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x4423AA, "Farmage Co., Ltd.", "FARMAGE" }, { 0x4425BB, "Bamboo Entertainment Corporation", "BAMBOO-ENTERTAINMENT" }, { 0x442A60, "Apple", "APPLE" }, { 0x442AFF, "E3 Technology, Inc.", "E3" }, { 0x442B03, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x443192, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x44322A, "Avaya, Inc", "AVAYA" }, { 0x4432C8, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x44334C, "Shenzhen Bilian electronic CO.,LTD", "SHENZHEN-BILIAN" }, { 0x44348F, "MXT INDUSTRIAL LTDA", "MXT-INDUSTRIAL-LTDA" }, { 0x443719, "2 Save Energy Ltd", "2-SAVE-ENERGY" }, { 0x44376F, "Young Electric Sign Co", "YOUNG-ELECTRIC-SIGN" }, { 0x4437E6, "Hon Hai Precision Ind.Co.Ltd", "HON-HAI-PRECISION-IND" }, { 0x443839, "Cumulus Networks, inc", "CUMULUS-NETWORKS" }, { 0x4439C4, "Universal Global Scientific Industrial Co.,Ltd", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x443C9C, "Pintsch Tiefenbach GmbH", "PINTSCH-TIEFENBACH" }, { 0x443D21, "Nuvolt", "NUVOLT" }, { 0x443EB2, "DEOTRON Co., LTD.", "DEOTRON" }, { 0x444A65, "Silverflare Ltd.", "SILVERFLARE" }, { 0x444C0C, "Apple", "APPLE" }, { 0x444E1A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x444F5E, "Pan Studios Co.,Ltd.", "PAN-STUDIOS" }, { 0x4451DB, "Raytheon BBN Technologies", "RAYTHEON-BBN-TECHNOLOGIES" }, { 0x4454C0, "Thompson Aerospace", "THOMPSON-AEROSPACE" }, { 0x44568D, "PNC Technologies Co., Ltd.", "PNC-TECHNOLOGIES" }, { 0x4456B7, "Spawn Labs, Inc", "SPAWN-LABS" }, { 0x445829, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x44599F, "Criticare Systems, Inc", "CRITICARE" }, { 0x445EF3, "Tonalite Holding B.V.", "TONALITE-HOLDING" }, { 0x445F7A, "Shihlin Electric & Engineering Corp.", "SHIHLIN-ELECTRIC-ENGINEERING" }, { 0x446132, "ecobee inc", "ECOBEE" }, { 0x44619C, "FONsystem co. ltd.", "FONSYSTEM" }, { 0x446755, "Orbit Irrigation", "ORBIT-IRRIGATION" }, { 0x4468AB, "JUIN COMPANY, LIMITED", "JUIN-COMPANY" }, { 0x446C24, "Reallin Electronic Co.,Ltd", "REALLIN" }, { 0x446D57, "Liteon Technology Corporation", "LITEON" }, { 0x44700B, "IFFU", "IFFU" }, { 0x447BC4, "DualShine Technology(SZ)Co.,Ltd", "DUALSHINE-SZ" }, { 0x447C7F, "Innolight Technology Corporation", "INNOLIGHT" }, { 0x447DA5, "VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD", "VTION-INFORMATION-FUJIAN" }, { 0x447E95, "Alpha and Omega, Inc", "ALPHA-AND-OMEGA" }, { 0x448312, "Star-Net", "STAR-NET" }, { 0x448500, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4487FC, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 0x448A5B, "Micro-Star INT'L CO., LTD.", "MICRO-STAR" }, { 0x448C52, "KTIS CO., Ltd", "KTIS" }, { 0x448E12, "DT Research, Inc.", "DT-RESEARCH" }, { 0x448E81, "VIG", "VIG" }, { 0x4491DB, "Shanghai Huaqin Telecom Technology Co.,Ltd", "SHANGHAI-HUAQIN-TELECOM" }, { 0x4494FC, "NETGEAR INC.,", "NETGEAR" }, { 0x4495FA, "Qingdao Santong Digital Technology Co.Ltd", "QINGDAO-SANTONG-DIGITAL" }, { 0x449B78, "The Now Factory", "THE-NOW-FACTORY" }, { 0x449CB5, "Alcomp, Inc", "ALCOMP" }, { 0x44A42D, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x44A689, "PROMAX ELECTRONICA SA", "PROMAX-ELECTRONICA" }, { 0x44A7CF, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x44A8C2, "SEWOO TECH CO., LTD", "SEWOO-TECH" }, { 0x44AA27, "udworks Co., Ltd.", "UDWORKS" }, { 0x44AAE8, "Nanotec Electronic GmbH & Co. KG", "NANOTEC" }, { 0x44ADD9, "Cisco", "CISCO" }, { 0x44B382, "Kuang-chi Institute of Advanced Technology", "KUANG-CHI-INSTITUTE-OF-ADVANCED" }, { 0x44C15C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x44C233, "Guangzhou Comet Technology Development Co.Ltd", "GUANGZHOU-COMET-DEVELOPMENT" }, { 0x44C306, "SIFROM Inc.", "SIFROM" }, { 0x44C39B, "OOO RUBEZH NPO", "OOO-RUBEZH-NPO" }, { 0x44C4A9, "Opticom Communication, LLC", "OPTICOM-COMMUNICATION-LLC" }, { 0x44C56F, "NGN Easy Satfinder (Tianjin) Electronic Co., Ltd", "NGN-EASY-SATFINDER-TIANJIN" }, { 0x44C9A2, "Greenwald Industries", "GREENWALD-INDUSTRIES" }, { 0x44D15E, "Shanghai Kingto Information Technology Ltd", "SHANGHAI-KINGTO-INFORMATION" }, { 0x44D2CA, "Anvia TV Oy", "ANVIA-TV-OY" }, { 0x44D3CA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x44D63D, "Talari Networks", "TALARI-NETWORKS" }, { 0x44D832, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x44D884, "Apple", "APPLE" }, { 0x44DC91, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0x44DCCB, "SEMINDIA SYSTEMS PVT LTD", "SEMINDIA-PVT" }, { 0x44E08E, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x44E49A, "OMNITRONICS PTY LTD", "OMNITRONICS-PTY" }, { 0x44E4D9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x44E8A5, "Myreka Technologies Sdn. Bhd.", "MYREKA-TECHNOLOGIES-SDN-BHD" }, { 0x44ED57, "Longicorn, inc.", "LONGICORN" }, { 0x44EE30, "Budelmann Elektronik GmbH", "BUDELMANN-ELEKTRONIK" }, { 0x44F459, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x44F849, "Union Pacific Railroad", "UNION-PACIFIC-RAILROAD" }, { 0x44FB42, "Apple", "APPLE" }, { 0x48022A, "B-Link Electronic Limited", "B-LINK" }, { 0x480362, "DESAY ELECTRONICS(HUIZHOU)CO.,LTD", "DESAY-ELECTRONICS-HUIZHOU" }, { 0x481249, "Luxcom Technologies Inc.", "LUXCOM-TECHNOLOGIES" }, { 0x4813F3, "BBK Electronics Corp., Ltd.", "BBK-ELECTRONICS" }, { 0x48174C, "MicroPower technologies", "MICROPOWER-TECHNOLOGIES" }, { 0x481BD2, "Intron Scientific co., ltd.", "INTRON-SCIENTIFIC" }, { 0x48282F, "ZTE Corporation", "ZTE" }, { 0x482CEA, "Motorola Inc Business Light Radios", "MOTOROLA-BUSINESS-LIGHT-RADIOS" }, { 0x4833DD, "ZENNIO AVANCE Y TECNOLOGIA, S.L.", "ZENNIO-AVANCE-Y-TECNOLOGIA-S-L" }, { 0x48343D, "IEP GmbH", "IEP" }, { 0x483D32, "Syscor Controls & Automation", "SYSCOR-CONTROLS-AMP-AUTOMATION" }, { 0x484487, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x4844F7, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x4846F1, "Uros Oy", "UROS-OY" }, { 0x4846FB, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x485261, "SOREEL", "SOREEL" }, { 0x485A3F, "WISOL", "WISOL" }, { 0x485AB6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x485B39, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x485D60, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x4860BC, "Apple", "APPLE" }, { 0x4861A3, "Concern \"Axion\" JSC", "CONCERN-AXION-JSC" }, { 0x486B91, "Fleetwood Group Inc.", "FLEETWOOD-GROUP" }, { 0x486E73, "Pica8, Inc.", "PICA8" }, { 0x486FD2, "StorSimple Inc", "STORSIMPLE" }, { 0x487119, "SGB GROUP LTD.", "SGB-GROUP" }, { 0x487604, "PRIVATE", "PRIVATE" }, { 0x488E42, "DIGALOG GmbH", "DIGALOG" }, { 0x489153, "Weinmann Geräte für Medizin GmbH + Co. KG", "WEINMANN-GERäTE-FüR-MEDIZIN-+" }, { 0x4891F6, "Shenzhen Reach software technology CO.,LTD", "SHENZHEN-REACH-SOFTWARE" }, { 0x489BE2, "SCI Innovations Ltd", "SCI-INNOVATIONS" }, { 0x489D24, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x48A22D, "Shenzhen Huaxuchang Telecom Technology Co.,Ltd", "SHENZHEN-HUAXUCHANG-TELECOM" }, { 0x48A2B7, "Kodofon JSC", "KODOFON-JSC" }, { 0x48A6D2, "GJsun Optical Science and Tech Co.,Ltd.", "GJSUN-OPTICAL-SCIENCE-AND-TECH" }, { 0x48AA5D, "Store Electronic Systems", "STORE" }, { 0x48B253, "Marketaxess Corporation", "MARKETAXESS" }, { 0x48B8DE, "HOMEWINS TECHNOLOGY CO.,LTD.", "HOMEWINS" }, { 0x48B977, "PulseOn Oy", "PULSEON-OY" }, { 0x48B9C2, "Teletics Inc.", "TELETICS" }, { 0x48BE2D, "Symanitron", "SYMANITRON" }, { 0x48C1AC, "PLANTRONICS, INC.", "PLANTRONICS" }, { 0x48C862, "Simo Wireless,Inc.", "SIMO-WIRELESS" }, { 0x48C8B6, "SysTec GmbH", "SYSTEC" }, { 0x48CB6E, "Cello Electronics (UK) Ltd", "CELLO-ELECTRONICS-UK" }, { 0x48D224, "Liteon Technology Corporation", "LITEON" }, { 0x48D54C, "Jeda Networks", "JEDA-NETWORKS" }, { 0x48D7FF, "BLANKOM Antennentechnik GmbH", "BLANKOM-ANTENNENTECHNIK" }, { 0x48D8FE, "ClarIDy Solutions, Inc.", "CLARIDY-SOLUTIONS" }, { 0x48DCFB, "Nokia Corporation", "NOKIA" }, { 0x48DF1C, "Wuhan NEC Fibre Optic Communications industry Co. Ltd", "WUHAN-NEC-FIBRE-OPTIC-COMMUNICATION-INDUSTRY" }, { 0x48E1AF, "Vity", "VITY" }, { 0x48EA63, "Zhejiang Uniview Technologies Co., Ltd.", "ZHEJIANG-UNIVIEW-TECHNOLOGIES" }, { 0x48EB30, "ETERNA TECHNOLOGY, INC.", "ETERNA" }, { 0x48ED80, "daesung eltec", "DAESUNG-ELTEC" }, { 0x48EE86, "UTStarcom (China) Co.,Ltd", "UTSTARCOM-CHINA" }, { 0x48F230, "Ubizcore Co.,LTD", "UBIZCORE" }, { 0x48F317, "PRIVATE", "PRIVATE" }, { 0x48F47D, "TechVision Holding Internation Limited", "TECHVISION-HOLDING-INTERNATION" }, { 0x48F7F1, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x48F8B3, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x48F8E1, "Alcatel Lucent WT", "ALCATEL-LUCENT-WT" }, { 0x48F925, "Maestronic", "MAESTRONIC" }, { 0x48FCB8, "Woodstream Corporation", "WOODSTREAM" }, { 0x48FEEA, "HOMA B.V.", "HOMA" }, { 0x4C0082, "Cisco", "CISCO" }, { 0x4C022E, "CMR KOREA CO., LTD", "CMR-KOREA" }, { 0x4C0289, "LEX COMPUTECH CO., LTD", "LEX-COMPUTECH" }, { 0x4C068A, "Basler Electric Company", "BASLER-ELECTRIC-COMPANY" }, { 0x4C07C9, "COMPUTER OFFICE Co.,Ltd.", "OFFICE" }, { 0x4C09B4, "zte corporation", "ZTE" }, { 0x4C0B3A, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x4C0DEE, "JABIL CIRCUIT (SHANGHAI) LTD.", "JABIL-CIRCUIT-SHANGHAI" }, { 0x4C0F6E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x4C0FC7, "Earda Electronics Co.,Ltd", "EARDA-ELECTRONICS" }, { 0x4C1480, "NOREGON SYSTEMS, INC", "NOREGON" }, { 0x4C14A3, "TCL Technoly Electronics (Huizhou) Co., Ltd.", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0x4C17EB, "SAGEMCOM", "SAGEMCOM" }, { 0x4C1A3A, "PRIMA Research And Production Enterprise Ltd.", "PRIMA-RESEARCH-AND-PRODUCTION" }, { 0x4C1A95, "Novakon Co., Ltd.", "NOVAKON" }, { 0x4C1FCC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4C21D0, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x4C2258, "cozybit, Inc.", "COZYBIT" }, { 0x4C2578, "Nokia Corporation", "NOKIA" }, { 0x4C2C80, "Beijing Skyway Technologies Co.,Ltd", "BEIJING-SKYWAY-TECHNOLOGIES" }, { 0x4C2F9D, "ICM Controls", "ICM-CONTROLS" }, { 0x4C3089, "Thales Transportation Systems GmbH", "THALES-TRANSPORTATION" }, { 0x4C322D, "TELEDATA NETWORKS", "TELEDATA-NETWORKS" }, { 0x4C32D9, "M Rutty Holdings Pty. Ltd.", "M-RUTTY-HOLDINGS-PTY" }, { 0x4C3910, "Newtek Electronics co., Ltd.", "NEWTEK-ELECTRONICS" }, { 0x4C3B74, "VOGTEC(H.K.) Co., Ltd", "VOGTEC-H-K" }, { 0x4C3C16, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4C4B68, "Mobile Device, Inc.", "MOBILE-DEVICE" }, { 0x4C4E35, "Cisco", "CISCO" }, { 0x4C5427, "Linepro Sp. z o.o.", "LINEPRO-SP-Z-O-O" }, { 0x4C5499, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x4C5585, "Hamilton Systems", "HAMILTON" }, { 0x4C55B8, "Turkcell Teknoloji", "TURKCELL-TEKNOLOJI" }, { 0x4C55CC, "ACKme Networks Pty Ltd", "ACKME-NETWORKS-PTY" }, { 0x4C5DCD, "Oy Finnish Electric Vehicle Technologies Ltd", "OY-FINNISH-ELECTRIC-VEHICLE-TECHNOLOGIES" }, { 0x4C5E0C, "Routerboard.com", "ROUTERBOARD-COM" }, { 0x4C5FD2, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x4C60D5, "airPointe of New Hampshire", "AIRPOINTE-OF-NEW-HAMPSHIRE" }, { 0x4C60DE, "NETGEAR", "NETGEAR" }, { 0x4C6255, "SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.", "SANMINA-SCI-SYSTEM-DE-MEXICO-DE-C-V" }, { 0x4C63EB, "Application Solutions (Electronics and Vision) Ltd", "APPLICATION-SOLUTIONS-ELECTRONICS-AND-VISION" }, { 0x4C64D9, "Guangdong Leawin Group Co., Ltd", "GUANGDONG-LEAWIN-GROUP" }, { 0x4C72B9, "Pegatron Corporation", "PEGATRON" }, { 0x4C7367, "Genius Bytes Software Solutions GmbH", "GENIUS-BYTES-SOFTWARE-SOLUTIONS" }, { 0x4C73A5, "KOVE", "KOVE" }, { 0x4C774F, "Embedded Wireless Labs", "EMBEDDED-WIRELESS-LABS" }, { 0x4C7897, "Arrowhead Alarm Products Ltd", "ARROWHEAD-ALARM-PRODUCTS" }, { 0x4C79BA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4C804F, "Armstrong Monitoring Corp", "ARMSTRONG-MONITORING" }, { 0x4C8093, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4C82CF, "Echostar Technologies", "ECHOSTAR-TECHNOLOGIES" }, { 0x4C8B55, "Grupo Digicon", "GRUPO-DIGICON" }, { 0x4C8BEF, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x4C8D79, "Apple", "APPLE" }, { 0x4C8FA5, "Jastec", "JASTEC" }, { 0x4C9614, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x4C98EF, "Zeo", "ZEO" }, { 0x4C9E80, "KYOKKO ELECTRIC Co., Ltd.", "KYOKKO-ELECTRIC" }, { 0x4C9EE4, "Hanyang Navicom Co.,Ltd.", "HANYANG-NAVICOM" }, { 0x4CA74B, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x4CAA16, "AzureWave Technologies (Shanghai) Inc.", "AZUREWAVE-TECHNOLOGIES-SHANGHAI" }, { 0x4CAB33, "KST technology", "KST" }, { 0x4CAC0A, "ZTE Corporation", "ZTE" }, { 0x4CB16C, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x4CB199, "Apple", "APPLE" }, { 0x4CB4EA, "HRD (S) PTE., LTD.", "HRD-S-PTE" }, { 0x4CB81C, "SAM Electronics GmbH", "SAM-ELECTRONICS" }, { 0x4CB9C8, "CONET CO., LTD.", "CONET" }, { 0x4CBAA3, "Bison Electronics Inc.", "BISON-ELECTRONICS" }, { 0x4CBCA5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x4CC452, "Shang Hai Tyd. Electon Technology Ltd.", "SHANG-HAI-TYD-ELECTON" }, { 0x4CC602, "Radios, Inc.", "RADIOS" }, { 0x4CC94F, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x4CCA53, "Skyera, Inc.", "SKYERA" }, { 0x4CCBF5, "zte corporation", "ZTE" }, { 0x4CCC34, "Motorola Solutions Inc.", "MOTOROLA-SOLUTIONS" }, { 0x4CD637, "Qsono Electronics Co., Ltd", "QSONO-ELECTRONICS" }, { 0x4CD7B6, "Helmer Scientific", "HELMER-SCIENTIFIC" }, { 0x4CD9C4, "Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd", "MAGNETI-MARELLI-AUTOMOTIVE-ELECTRONICS-GUANGZHOU" }, { 0x4CDF3D, "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD", "TEAM-ENGINEERS-ADVANCE-TECHNOLOGIES-INDIA-PVT" }, { 0x4CE1BB, "Zhuhai HiFocus Technology Co., Ltd.", "ZHUHAI-HIFOCUS" }, { 0x4CE676, "Buffalo Inc.", "BUFFALO" }, { 0x4CEB42, "Intel Corporate", "INTEL-CORPORATE" }, { 0x4CEDDE, "Askey Computer Corp", "ASKEY" }, { 0x4CF02E, "Vifa Denmark A/S", "VIFA-DENMARK-A/S" }, { 0x4CF737, "SamJi Electronics Co., Ltd", "SAMJI-ELECTRONICS" }, { 0x50008C, "Hong Kong Telecommunications (HKT) Limited", "HONG-KONG-TELECOMMUNICATIONS-HKT" }, { 0x5001BB, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x50053D, "CyWee Group Ltd", "CYWEE-GROUP" }, { 0x500604, "Cisco", "CISCO" }, { 0x500B32, "Foxda Technology Industrial(ShenZhen)Co.,LTD", "FOXDA-INDUSTRIAL-SHENZHEN" }, { 0x500E6D, "TrafficCast International", "TRAFFICCAST" }, { 0x5011EB, "SilverNet Ltd", "SILVERNET" }, { 0x5017FF, "Cisco", "CISCO" }, { 0x501AC5, "Microsoft", "MICROSOFT" }, { 0x50206B, "Emerson Climate Technologies Transportation Solutions", "EMERSON-CLIMATE-TECHNOLOGIES-TRANSPORTATION-SOLUTIONS" }, { 0x502267, "PixeLINK", "PIXELINK" }, { 0x50252B, "Nethra Imaging Incorporated", "NETHRA-IMAGING-INCORPORATED" }, { 0x502690, "Fujitsu Limited", "FUJITSU" }, { 0x5027C7, "TECHNART Co.,Ltd", "TECHNART" }, { 0x502A7E, "Smart electronic GmbH", "SMART" }, { 0x502A8B, "Telekom Research and Development Sdn Bhd", "TELEKOM-RESEARCH-AND-DEVELOPMENT-SDN-BHD" }, { 0x502D1D, "Nokia Corporation", "NOKIA" }, { 0x502DA2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x502DF4, "Phytec Messtechnik GmbH", "PHYTEC-MESSTECHNIK" }, { 0x502E5C, "HTC Corporation", "HTC" }, { 0x502ECE, "Asahi Electronics Co.,Ltd", "ASAHI-ELECTRONICS" }, { 0x503275, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x503955, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x503CC4, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x503DE5, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x503F56, "Syncmold Enterprise Corp", "SYNCMOLD" }, { 0x50465D, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x5048EB, "BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD.", "BEIJING-HAIHEJINSHENG-NETWORK" }, { 0x504A5E, "Masimo Corporation", "MASIMO" }, { 0x504F94, "Loxone Electronics GmbH", "LOXONE-ELECTRONICS" }, { 0x505663, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x5056A8, "Jolla Ltd", "JOLLA" }, { 0x5057A8, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x505AC6, "GUANGDONG SUPER TELECOM CO.,LTD.", "GUANGDONG-SUPER-TELECOM" }, { 0x506028, "Xirrus Inc.", "XIRRUS" }, { 0x5061D6, "Indu-Sol GmbH", "INDU-SOL" }, { 0x506313, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x506441, "Greenlee", "GREENLEE" }, { 0x5067F0, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0x506F9A, "Wi-Fi Alliance", "WI-FI-ALLIANCE" }, { 0x5070E5, "He Shan World Fair Electronics Technology Limited", "HE-SHAN-WORLD-FAIR-ELECTRONICS" }, { 0x50724D, "BEG Brueck Electronic GmbH", "BEG-BRUECK" }, { 0x507691, "Tekpea, Inc.", "TEKPEA" }, { 0x5076A6, "Ecil Informatica Ind. Com. Ltda", "ECIL-INFORMATICA-IND-COM-LTDA" }, { 0x50795B, "Interexport Telecomunicaciones S.A.", "INTEREXPORT-TELECOMUNICACIONES" }, { 0x507D02, "BIODIT", "BIODIT" }, { 0x507E5D, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x508569, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x5087B8, "Nuvyyo Inc", "NUVYYO" }, { 0x508A42, "Uptmate Technology Co., LTD", "UPTMATE" }, { 0x508ACB, "SHENZHEN MAXMADE TECHNOLOGY CO., LTD.", "SHENZHEN-MAXMADE" }, { 0x508C77, "DIRMEIER Schanktechnik GmbH &Co KG", "DIRMEIER-SCHANKTECHNIK" }, { 0x508D6F, "CHAHOO Limited", "CHAHOO" }, { 0x50934F, "Gradual Tecnologia Ltda.", "GRADUAL-TECNOLOGIA-LTDA" }, { 0x509772, "Westinghouse Digital", "WESTINGHOUSE-DIGITAL" }, { 0x509871, "Inventum Technologies Private Limited", "INVENTUM-TECHNOLOGIES-PRIVATE" }, { 0x509F27, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x50A054, "Actineon", "ACTINEON" }, { 0x50A0BF, "Alba Fiber Systems Inc.", "ALBA-FIBER" }, { 0x50A4C8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50A6E3, "David Clark Company", "DAVID-CLARK-COMPANY" }, { 0x50A715, "Aboundi, Inc.", "ABOUNDI" }, { 0x50A733, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x50ABBF, "Hoseo Telecom", "HOSEO-TELECOM" }, { 0x50AF73, "Shenzhen Bitland Information Technology Co., Ltd.", "SHENZHEN-BITLAND-INFORMATION" }, { 0x50B695, "Micropoint Biotechnologies,Inc.", "MICROPOINT-BIOTECHNOLOGIES" }, { 0x50B7C3, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0x50B888, "wi2be Tecnologia S/A", "WI2BE-TECNOLOGIA-S/A" }, { 0x50B8A2, "ImTech Technologies LLC,", "IMTECH-TECHNOLOGIES-LLC" }, { 0x50C006, "Carmanah Signs", "CARMANAH-SIGNS" }, { 0x50C271, "SECURETECH INC", "SECURETECH" }, { 0x50C58D, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x50C971, "GN Netcom A/S", "GN-NETCOM-A/S" }, { 0x50C9A0, "SKIPPER Electronics AS", "SKIPPER-ELECTRONICS-AS" }, { 0x50CCF8, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x50CD32, "NanJing Chaoran Science & Technology Co.,Ltd.", "NANJING-CHAORAN-SCIENCE" }, { 0x50CE75, "Measy Electronics Ltd", "MEASY-ELECTRONICS" }, { 0x50D274, "Steffes Corporation", "STEFFES" }, { 0x50D6D7, "Takahata Precision", "TAKAHATA-PRECISION" }, { 0x50E0C7, "TurControlSystme AG", "TURCONTROLSYSTME" }, { 0x50E14A, "PRIVATE", "PRIVATE" }, { 0x50E549, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x50EAD6, "Apple", "APPLE" }, { 0x50EB1A, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x50ED78, "Changzhou Yongse Infotech Co.,Ltd", "CHANGZHOU-YONGSE-INFOTECH" }, { 0x50ED94, "Egatel SL", "EGATEL-SL" }, { 0x50F003, "Open Stack, Inc.", "OPEN-STACK" }, { 0x50F520, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x50F61A, "Kunshan JADE Technologies co., Ltd.", "KUNSHAN-JADE-TECHNOLOGIES" }, { 0x50FAAB, "L-tek d.o.o.", "L-TEK-D-O-O" }, { 0x50FC30, "Treehouse Labs", "TREEHOUSE-LABS" }, { 0x50FC9F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5403F5, "EBN Technology Corp.", "EBN" }, { 0x540496, "Gigawave LTD", "GIGAWAVE" }, { 0x5404A6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x540536, "Vivago Oy", "VIVAGO-OY" }, { 0x54055F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x54112F, "Sulzer Pump Solutions Finland Oy", "SULZER-PUMP-SOLUTIONS-FINLAND-OY" }, { 0x54115F, "Atamo Pty Ltd", "ATAMO-PTY" }, { 0x541B5D, "Techno-Innov", "TECHNO-INNOV" }, { 0x541DFB, "Freestyle Energy Ltd", "FREESTYLE-ENERGY" }, { 0x541FD5, "Advantage Electronics", "ADVANTAGE-ELECTRONICS" }, { 0x542018, "Tely Labs", "TELY-LABS" }, { 0x542160, "Resolution Products", "RESOLUTION-PRODUCTS" }, { 0x5422F8, "zte corporation", "ZTE" }, { 0x542696, "Apple", "APPLE" }, { 0x54271E, "AzureWave Technonloies, Inc.", "AZUREWAVE-TECHNONLOIES" }, { 0x542A9C, "LSY Defense, LLC.", "LSY-DEFENSE-LLC" }, { 0x542CEA, "PROTECTRON", "PROTECTRON" }, { 0x542F89, "Euclid Laboratories, Inc.", "EUCLID-LABORATORIES" }, { 0x543131, "Raster Vision Ltd", "RASTER-VISION" }, { 0x543530, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5435DF, "Symeo GmbH", "SYMEO" }, { 0x543968, "Edgewater Networks Inc", "EDGEWATER-NETWORKS" }, { 0x5439DF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x543D37, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x544249, "Sony Corporation", "SONY" }, { 0x544408, "Nokia Corporation", "NOKIA" }, { 0x54466B, "Shenzhen CZTIC Electronic Technology Co., Ltd", "SHENZHEN-CZTIC" }, { 0x544A05, "wenglor sensoric gmbh", "WENGLOR-SENSORIC" }, { 0x5453ED, "Sony Corporation", "SONY" }, { 0x545414, "Digital RF Corea, Inc", "DIGITAL-RF-COREA" }, { 0x545EBD, "NL Technologies", "NL-TECHNOLOGIES" }, { 0x545FA9, "Teracom Limited", "TERACOM" }, { 0x5461EA, "Zaplox AB", "ZAPLOX-AB" }, { 0x547398, "Toyo Electronics Corporation", "TOYO-ELECTRONICS" }, { 0x5474E6, "Webtech Wireless", "WEBTECH-WIRELESS" }, { 0x5475D0, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x54781A, "Cisco", "CISCO" }, { 0x547975, "Nokia Corporation", "NOKIA" }, { 0x547F54, "INGENICO", "INGENICO" }, { 0x547FA8, "TELCO systems, s.r.o.", "TELCO-S-R-O" }, { 0x547FEE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x5481AD, "Eagle Research Corporation", "EAGLE-RESEARCH" }, { 0x54847B, "Digital Devices GmbH", "DIGITAL-DEVICES" }, { 0x54880E, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x548922, "Zelfy Inc", "ZELFY" }, { 0x548998, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x5492BE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x549359, "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "SHENZHEN-TWOWING-TECHNOLOGIES" }, { 0x549478, "Silvershore Technology Partners", "SILVERSHORE-PARTNERS" }, { 0x549A16, "Uzushio Electric Co.,Ltd.", "UZUSHIO-ELECTRIC" }, { 0x549B12, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x549D85, "EnerAccess inc", "ENERACCESS" }, { 0x54A04F, "t-mac Technologies Ltd", "T-MAC-TECHNOLOGIES" }, { 0x54A31B, "Shenzhen Linkworld Technology Co,.LTD", "SHENZHEN-LINKWORLD" }, { 0x54A51B, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x54A54B, "NSC Communications Siberia Ltd", "NSC-COMMUNICATION-SIBERIA" }, { 0x54A619, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0x54A9D4, "Minibar Systems", "MINIBAR" }, { 0x54B620, "SUHDOL E&C Co.Ltd.", "SUHDOL-E-C" }, { 0x54BEF7, "PEGATRON CORPORATION", "PEGATRON" }, { 0x54CDA7, "Fujian Shenzhou Electronic Co.,Ltd", "FUJIAN-SHENZHOU" }, { 0x54D0ED, "AXIM Communications", "AXIM-COMMUNICATION" }, { 0x54D1B0, "Universal Laser Systems, Inc", "UNIVERSAL-LASER" }, { 0x54D46F, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x54DF63, "Intrakey technologies GmbH", "INTRAKEY-TECHNOLOGIES" }, { 0x54E032, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x54E3B0, "JVL Industri Elektronik", "JVL-INDUSTRI-ELEKTRONIK" }, { 0x54E43A, "Apple, Inc.", "APPLE" }, { 0x54E63F, "ShenZhen LingKeWeiEr Technology Co., Ltd.", "SHENZHEN-LINGKEWEIER" }, { 0x54E6FC, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x54EAA8, "Apple, Inc.", "APPLE" }, { 0x54F5B6, "ORIENTAL PACIFIC INTERNATIONAL LIMITED", "ORIENTAL-PACIFIC" }, { 0x54F666, "Berthold Technologies GmbH and Co.KG", "BERTHOLD-TECHNOLOGIES-AND" }, { 0x54FB58, "WISEWARE, Lda", "WISEWARE-LDA" }, { 0x54FDBF, "Scheidt & Bachmann GmbH", "SCHEIDT-BACHMANN" }, { 0x580556, "Elettronica GF S.r.L.", "ELETTRONICA-GF-S-R-L" }, { 0x5808FA, "Fiber Optic & telecommunication INC.", "FIBER-OPTIC-TELECOMMUNICATION" }, { 0x580943, "PRIVATE", "PRIVATE" }, { 0x5809E5, "Kivic Inc.", "KIVIC" }, { 0x581243, "AcSiP Technology Corp.", "ACSIP" }, { 0x581626, "Avaya, Inc", "AVAYA" }, { 0x58170C, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x581CBD, "Affinegy", "AFFINEGY" }, { 0x581D91, "Advanced Mobile Telecom co.,ltd.", "ADVANCED-MOBILE-TELECOM" }, { 0x581FAA, "Apple", "APPLE" }, { 0x581FEF, "Tuttnaer LTD", "TUTTNAER" }, { 0x582EFE, "Lighting Science Group", "LIGHTING-SCIENCE-GROUP" }, { 0x582F42, "Universal Electric Corporation", "UNIVERSAL-ELECTRIC" }, { 0x58343B, "Glovast Technology Ltd.", "GLOVAST" }, { 0x5835D9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x583CC6, "Omneality Ltd.", "OMNEALITY" }, { 0x5842E4, "Sigma International General Medical Apparatus, LLC.", "SIGMA-GENERAL-MEDICAL-APPARATUS-LLC" }, { 0x58468F, "Koncar Electronics and Informatics", "KONCAR-ELECTRONICS-AND-INFORMATICS" }, { 0x5846E1, "Baxter Healthcare", "BAXTER-HEALTHCARE" }, { 0x5848C0, "COFLEC", "COFLEC" }, { 0x5849BA, "Chitai Electronic Corp.", "CHITAI" }, { 0x584C19, "Chongqing Guohong Technology Development Company Limited", "CHONGQING-GUOHONG-DEVELOPMENT-COMPANY" }, { 0x584CEE, "Digital One Technologies, Limited", "DIGITAL-ONE-TECHNOLOGIES" }, { 0x585076, "Linear Equipamentos Eletronicos SA", "LINEAR-EQUIPAMENTOS-ELETRONICOS" }, { 0x5850AB, "TLS Corporation", "TLS" }, { 0x5850E6, "Best Buy Corporation", "BEST-BUY" }, { 0x5855CA, "Apple", "APPLE" }, { 0x5856E8, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x58570D, "Danfoss Solar Inverters", "DANFOSS-SOLAR-INVERTERS" }, { 0x58639A, "TPL SYSTEMES", "TPL-SYSTEMES" }, { 0x5865E6, "INFOMARK CO., LTD.", "INFOMARK" }, { 0x5866BA, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x58671A, "BARNES&NOBLE.COM", "BARNES-NOBLE-COM" }, { 0x58677F, "Clare Controls Inc.", "CLARE-CONTROLS" }, { 0x58696C, "Fujian Ruijie Networks co, ltd", "FUJIAN-RUIJIE-NETWORKS" }, { 0x5869F9, "Fusion Transactive Ltd.", "FUSION-TRANSACTIVE" }, { 0x586D8F, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x586ED6, "PRIVATE", "PRIVATE" }, { 0x587521, "CJSC RTSoft", "CJSC-RTSOFT" }, { 0x587675, "Beijing ECHO Technologies Co.,Ltd", "BEIJING-ECHO-TECHNOLOGIES" }, { 0x587A4D, "Stonesoft Corporation", "STONESOFT" }, { 0x587E61, "Hisense Electric Co., Ltd", "HISENSE-ELECTRIC" }, { 0x587FC8, "S2M", "S2M" }, { 0x5884E4, "IP500 Alliance e.V.", "IP500-ALLIANCE-E-V" }, { 0x58874C, "LITE-ON CLEAN ENERGY TECHNOLOGY CORP.", "LITE-ON-CLEAN-ENERGY" }, { 0x5887E2, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0x588D09, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x5891CF, "Intel Corporate", "INTEL-CORPORATE" }, { 0x58920D, "Kinetic Avionics Limited", "KINETIC-AVIONICS" }, { 0x589396, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x58946B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5894CF, "Vertex Standard LMR, Inc.", "VERTEX-STANDARD-LMR" }, { 0x58971E, "Cisco", "CISCO" }, { 0x589835, "Technicolor", "TECHNICOLOR" }, { 0x58986F, "Revolution Display", "REVOLUTION-DISPLAY" }, { 0x589CFC, "FreeBSD Foundation", "FREEBSD-FOUNDATION" }, { 0x58A2B5, "LG Electronics", "LG-ELECTRONICS" }, { 0x58A76F, "iD corporation", "ID" }, { 0x58B035, "Apple", "APPLE" }, { 0x58B0D4, "ZuniData Systems Inc.", "ZUNIDATA" }, { 0x58B961, "SOLEM Electronique", "SOLEM-ELECTRONIQUE" }, { 0x58B9E1, "Crystalfontz America, Inc.", "CRYSTALFONTZ-AMERICA" }, { 0x58BC27, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x58BDA3, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x58BDF9, "Sigrand", "SIGRAND" }, { 0x58BFEA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x58C232, "NEC Corporation", "NEC" }, { 0x58C38B, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x58CF4B, "Lufkin Industries", "LUFKIN-INDUSTRIES" }, { 0x58D071, "BW Broadcast", "BW-BROADCAST" }, { 0x58D08F, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0x58D6D3, "Dairy Cheq Inc", "DAIRY-CHEQ" }, { 0x58DB8D, "Fast Co., Ltd.", "FAST" }, { 0x58E02C, "Micro Technic A/S", "MICRO-TECHNIC-A/S" }, { 0x58E476, "CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD", "CENTRON-COMMUNICATION-TECHNOLOGIES-FUJIAN" }, { 0x58E636, "EVRsafe Technologies", "EVRSAFE-TECHNOLOGIES" }, { 0x58E747, "Deltanet AG", "DELTANET" }, { 0x58E808, "AUTONICS CORPORATION", "AUTONICS" }, { 0x58EB14, "Proteus Digital Health", "PROTEUS-DIGITAL-HEALTH" }, { 0x58ECE1, "Newport Corporation", "NEWPORT" }, { 0x58EECE, "Icon Time Systems", "ICON-TIME" }, { 0x58F387, "HCCP", "HCCP" }, { 0x58F67B, "Xia Men UnionCore Technology LTD.", "XIA-MEN-UNIONCORE" }, { 0x58F6BF, "Kyoto University", "KYOTO-UNIVERSITY" }, { 0x58F98E, "SECUDOS GmbH", "SECUDOS" }, { 0x58FD20, "Bravida Sakerhet AB", "BRAVIDA-SAKERHET-AB" }, { 0x5C026A, "Applied Vision Corporation", "APPLIED-VISION" }, { 0x5C076F, "Thought Creator", "THOUGHT-CREATOR" }, { 0x5C0A5B, "SAMSUNG ELECTRO-MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x5C0CBB, "CELIZION Inc.", "CELIZION" }, { 0x5C0E8B, "Motorola", "MOTOROLA" }, { 0x5C1193, "Seal One AG", "SEAL-ONE" }, { 0x5C1437, "Thyssenkrupp Aufzugswerke GmbH", "THYSSENKRUPP-AUFZUGSWERKE" }, { 0x5C15E1, "AIDC TECHNOLOGY (S) PTE LTD", "AIDC-S-PTE" }, { 0x5C16C7, "Big Switch Networks", "BIG-SWITCH-NETWORKS" }, { 0x5C1737, "I-View Now, LLC.", "I-VIEW-NOW-LLC" }, { 0x5C17D3, "LGE", "LGE" }, { 0x5C18B5, "Talon Communications", "TALON-COMMUNICATION" }, { 0x5C20D0, "Asoni Communication Co., Ltd.", "ASONI-COMMUNICATION" }, { 0x5C22C4, "DAE EUN ELETRONICS CO., LTD", "DAE-EUN-ELETRONICS" }, { 0x5C2479, "Baltech AG", "BALTECH" }, { 0x5C260A, "Dell Inc.", "DELL" }, { 0x5C2AEF, "Open Access Pty Ltd", "OPEN-ACCESS-PTY" }, { 0x5C3327, "Spazio Italia srl", "SPAZIO-ITALIA-SRL" }, { 0x5C335C, "Swissphone Telecom AG", "SWISSPHONE-TELECOM" }, { 0x5C338E, "Alpha Networkc Inc.", "ALPHA-NETWORKC" }, { 0x5C353B, "Compal Broadband Networks Inc.", "COMPAL-BROADBAND-NETWORKS" }, { 0x5C35DA, "There Corporation Oy", "THERE-OY" }, { 0x5C36B8, "TCL King Electrical Appliances (Huizhou) Ltd.", "TCL-KING-ELECTRICAL-APPLIANCES-HUIZHOU" }, { 0x5C38E0, "Shanghai Super Electronics Technology Co.,LTD", "SHANGHAI-SUPER-ELECTRONICS" }, { 0x5C3C27, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x5C4058, "Jefferson Audio Video Systems, Inc.", "JEFFERSON-AUDIO-VIDEO" }, { 0x5C43D2, "HAZEMEYER", "HAZEMEYER" }, { 0x5C4A26, "Enguity Technology Corp", "ENGUITY" }, { 0x5C4CA9, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x5C5015, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x5C514F, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5C56ED, "3pleplay Electronics Private Limited", "3PLEPLAY-ELECTRONICS-PRIVATE" }, { 0x5C571A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x5C57C8, "Nokia Corporation", "NOKIA" }, { 0x5C5948, "Apple", "APPLE" }, { 0x5C5EAB, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x5C63BF, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x5C6984, "NUVICO", "NUVICO" }, { 0x5C6A7D, "KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI.", "KENTKART-EGE-ELEKTRONIK-SAN-VE-TIC-STI" }, { 0x5C6B32, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x5C6D20, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5C6F4F, "S.A. SISTEL", "SISTEL" }, { 0x5C7757, "Haivision Network Video", "HAIVISION-NETWORK-VIDEO" }, { 0x5C7D5E, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x5C8486, "Brightsource Industries Israel LTD", "BRIGHTSOURCE-INDUSTRIES-ISRAEL" }, { 0x5C864A, "Secret Labs LLC", "SECRET-LABS-LLC" }, { 0x5C8778, "Cybertelbridge co.,ltd", "CYBERTELBRIDGE" }, { 0x5C89D4, "Beijing Banner Electric Co.,Ltd", "BEIJING-BANNER-ELECTRIC" }, { 0x5C95AE, "Apple", "APPLE" }, { 0x5C969D, "Apple", "APPLE" }, { 0x5C9AD8, "Fujitsu Limited", "FUJITSU" }, { 0x5CA39D, "SAMSUNG ELECTRO-MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x5CA3EB, "Lokel s.r.o.", "LOKEL-S-R-O" }, { 0x5CA48A, "Cisco", "CISCO" }, { 0x5CAC4C, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x5CB524, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x5CBD9E, "HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED", "HONGKONG-MIRACLE-EAGLE-GROUP" }, { 0x5CC213, "Fr. Sauter AG", "FR-SAUTER" }, { 0x5CC6D0, "Skyworth Digital technology(shenzhen)co.ltd.", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0x5CC9D3, "PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA", "PALLADIUM-ENERGY-ELETRONICA-DA-AMAZONIA-LTDA" }, { 0x5CCA32, "Theben AG", "THEBEN" }, { 0x5CCEAD, "CDYNE Corporation", "CDYNE" }, { 0x5CD135, "Xtreme Power Systems", "XTREME-POWER" }, { 0x5CD2E4, "Intel Corporate", "INTEL-CORPORATE" }, { 0x5CD41B, "UCZOON Technology Co., LTD", "UCZOON" }, { 0x5CD4AB, "Zektor", "ZEKTOR" }, { 0x5CD61F, "Qardio, Inc", "QARDIO" }, { 0x5CD998, "D-Link Corporation", "D-LINK" }, { 0x5CDAD4, "Murata Manufacturing Co., Ltd.", "MURATA-MANUFACTURING" }, { 0x5CDD70, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x5CE0CA, "FeiTian United (Beijing) System Technology Co., Ltd.", "FEITIAN-UNITED-BEIJING-SYSTEM" }, { 0x5CE0F6, "NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR", "NIC-BR--NUCLEO-DE-INFORMACAO-E-COORDENACAO-DO-PONTO-BR" }, { 0x5CE223, "Delphin Technology AG", "DELPHIN" }, { 0x5CE286, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x5CE2F4, "AcSiP Technology Corp.", "ACSIP" }, { 0x5CE7BF, "New Singularity International Technical Development Co.,Ltd", "NEW-SINGULARITY-TECHNICAL-DEVELOPMENT" }, { 0x5CE8EB, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x5CEB4E, "R. STAHL HMI Systems GmbH", "R-STAHL-HMI" }, { 0x5CEE79, "Global Digitech Co LTD", "GLOBAL-DIGITECH" }, { 0x5CF207, "Speco Technologies", "SPECO-TECHNOLOGIES" }, { 0x5CF370, "CC&C Technologies, Inc", "CC-C-TECHNOLOGIES" }, { 0x5CF3FC, "IBM Corp", "IBM" }, { 0x5CF6DC, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x5CF8A1, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0x5CF938, "Apple, Inc", "APPLE" }, { 0x5CF9DD, "Dell Inc", "DELL" }, { 0x5CFF35, "Wistron Corporation", "WISTRON" }, { 0x5CFFFF, "Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd", "SHENZHEN-KEZHONGLONG-OPTOELECTRONIC" }, { 0x6002B4, "Wistron NeWeb Corp.", "WISTRON-NEWEB" }, { 0x600308, "Apple", "APPLE" }, { 0x600347, "Billion Electric Co. Ltd.", "BILLION-ELECTRIC" }, { 0x600F77, "SilverPlus, Inc", "SILVERPLUS" }, { 0x601199, "Siama Systems Inc", "SIAMA" }, { 0x601283, "Soluciones Tecnologicas para la Salud y el Bienestar SA", "SOLUCIONES-TECNOLOGICAS-PARA-LA-SALUD-Y-EL-BIENESTAR" }, { 0x6015C7, "IdaTech", "IDATECH" }, { 0x60190C, "RRAMAC", "RRAMAC" }, { 0x601929, "VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP.", "VOLTRONIC-POWER-SHENZHEN" }, { 0x601D0F, "Midnite Solar", "MIDNITE-SOLAR" }, { 0x601E02, "EltexAlatau", "ELTEXALATAU" }, { 0x602103, "STCUBE.INC", "STCUBE" }, { 0x6021C0, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0x6024C1, "Jiangsu Zhongxun Electronic Technology Co., Ltd", "JIANGSU-ZHONGXUN" }, { 0x602A54, "CardioTek B.V.", "CARDIOTEK" }, { 0x602AD0, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x6032F0, "Mplus technology", "MPLUS" }, { 0x60334B, "Apple", "APPLE" }, { 0x603553, "Buwon Technology", "BUWON" }, { 0x6036DD, "Intel Corporate", "INTEL-CORPORATE" }, { 0x60380E, "Alps Electric Co.,", "ALPS-ELECTRIC" }, { 0x60391F, "ABB Ltd", "ABB" }, { 0x603FC5, "COX CO., LTD", "COX" }, { 0x6044F5, "Easy Digital Ltd.", "EASY-DIGITAL" }, { 0x60455E, "Liptel s.r.o.", "LIPTEL-S-R-O" }, { 0x6045BD, "Microsoft", "MICROSOFT" }, { 0x604616, "XIAMEN VANN INTELLIGENT CO., LTD", "XIAMEN-VANN-INTELLIGENT" }, { 0x604A1C, "SUYIN Corporation", "SUYIN" }, { 0x6052D0, "FACTS Engineering", "FACTS-ENGINEERING" }, { 0x605464, "Eyedro Green Solutions Inc.", "EYEDRO-GREEN-SOLUTIONS" }, { 0x605718, "Intel Corporate", "INTEL-CORPORATE" }, { 0x60601F, "SZ DJI TECHNOLOGY CO.,LTD", "SZ-DJI" }, { 0x6063FD, "Transcend Communication Beijing Co.,Ltd.", "TRANSCEND-COMMUNICATION-BEIJING" }, { 0x6064A1, "RADiflow Ltd.", "RADIFLOW" }, { 0x606720, "Intel Corporate", "INTEL-CORPORATE" }, { 0x606944, "Apple, Inc", "APPLE" }, { 0x60699B, "isepos GmbH", "ISEPOS" }, { 0x606BBD, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x606C66, "Intel Corporate", "INTEL-CORPORATE" }, { 0x60735C, "Cisco", "CISCO" }, { 0x60748D, "Atmaca Elektronik", "ATMACA-ELEKTRONIK" }, { 0x607688, "Velodyne", "VELODYNE" }, { 0x6083B2, "GkWare e.K.", "GKWARE-E-K" }, { 0x60843B, "Soladigm, Inc.", "SOLADIGM" }, { 0x608645, "Avery Weigh-Tronix, LLC", "AVERY-WEIGH-TRONIX-LLC" }, { 0x60893C, "Thermo Fisher Scientific P.O.A.", "THERMO-FISHER-SCIENTIFIC-P-O-A" }, { 0x6089B1, "Key Digital Systems", "KEY-DIGITAL" }, { 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İ" }, { 0x608C2B, "Hanson Technology", "HANSON" }, { 0x608D17, "Sentrus Government Systems Division, Inc", "SENTRUS-GOVERNMENT-DIVISION" }, { 0x609084, "DSSD Inc", "DSSD" }, { 0x609620, "PRIVATE", "PRIVATE" }, { 0x609AA4, "GVI SECURITY INC.", "GVI-SECURITY" }, { 0x609E64, "Vivonic GmbH", "VIVONIC" }, { 0x609F9D, "CloudSwitch", "CLOUDSWITCH" }, { 0x60A10A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60A44C, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x60A9B0, "Merchandising Technologies, Inc", "MERCHANDISING-TECHNOLOGIES" }, { 0x60B185, "ATH system", "ATH-SYSTEM" }, { 0x60B3C4, "Elber Srl", "ELBER-SRL" }, { 0x60B606, "Phorus", "PHORUS" }, { 0x60B933, "Deutron Electronics Corp.", "DEUTRON-ELECTRONICS" }, { 0x60B982, "RO.VE.R. Laboratories S.p.A.", "RO-VE-R-LABORATORIES-S-P-A" }, { 0x60BB0C, "Beijing HuaqinWorld Technology Co,Ltd", "BEIJING-HUAQINWORLD" }, { 0x60BC4C, "EWM Hightec Welding GmbH", "EWM-HIGHTEC-WELDING" }, { 0x60BD91, "Move Innovation", "MOVE-INNOVATION" }, { 0x60BEB5, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0x60C397, "2Wire Inc", "2WIRE" }, { 0x60C547, "Apple", "APPLE" }, { 0x60C5A8, "Beijing LT Honway Technology Co.,Ltd", "BEIJING-LT-HONWAY" }, { 0x60C980, "Trymus", "TRYMUS" }, { 0x60CBFB, "AirScape Inc.", "AIRSCAPE" }, { 0x60CDC5, "Taiwan Carol Electronics., Ltd", "TAIWAN-CAROL-ELECTRONICS" }, { 0x60D0A9, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x60D1AA, "Vishal Telecommunications Pvt Ltd", "VISHAL-TELECOMMUNICATIONS-PVT" }, { 0x60D2B9, "REALAND BIO CO., LTD.", "REALAND-BIO" }, { 0x60D30A, "Quatius Limited", "QUATIUS" }, { 0x60D819, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x60DA23, "Estech Co.,Ltd", "ESTECH" }, { 0x60DB2A, "HNS", "HNS" }, { 0x60DE44, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x60E00E, "SHINSEI ELECTRONICS CO LTD", "SHINSEI-ELECTRONICS" }, { 0x60E956, "Ayla Networks, Inc", "AYLA-NETWORKS" }, { 0x60EB69, "Quanta computer Inc.", "QUANTA" }, { 0x60F13D, "JABLOCOM s.r.o.", "JABLOCOM-S-R-O" }, { 0x60F281, "TRANWO TECHNOLOGY CO., LTD.", "TRANWO" }, { 0x60F2EF, "VisionVera International Co., Ltd.", "VISIONVERA" }, { 0x60F3DA, "Logic Way GmbH", "LOGIC-WAY" }, { 0x60F494, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x60F59C, "CRU-Dataport", "CRU-DATAPORT" }, { 0x60F673, "TERUMO CORPORATION", "TERUMO" }, { 0x60FACD, "Apple", "APPLE" }, { 0x60FB42, "Apple", "APPLE" }, { 0x60FE1E, "China Palms Telecom.Ltd", "CHINA-PALMS-TELECOM" }, { 0x60FEC5, "Apple", "APPLE" }, { 0x60FEF9, "Thomas & Betts", "THOMAS-BETTS" }, { 0x60FFDD, "C.E. ELECTRONICS, INC", "C-E-ELECTRONICS" }, { 0x6400F1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x6405BE, "NEW LIGHT LED", "NEW-LIGHT-LED" }, { 0x64094C, "Beijing Superbee Wireless Technology Co.,Ltd", "BEIJING-SUPERBEE-WIRELESS" }, { 0x640B4A, "Digital Telecom Technology Limited", "DIGITAL-TELECOM" }, { 0x640E36, "TAZTAG", "TAZTAG" }, { 0x640E94, "Pluribus Networks, Inc.", "PLURIBUS-NETWORKS" }, { 0x640F28, "2wire", "2WIRE" }, { 0x641084, "HEXIUM Technical Development Co., Ltd.", "HEXIUM-TECHNICAL-DEVELOPMENT" }, { 0x64168D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x6416F0, "Shehzhen Huawei Communication Technologies Co., Ltd.", "SHEHZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x641A22, "Heliospectra/Woodhill Investments", "HELIOSPECTRA/WOODHILL-INVESTMENTS" }, { 0x641C67, "DIGIBRAS INDUSTRIA DO BRASILS/A", "DIGIBRAS-INDUSTRIA-DO-BRASILS/A" }, { 0x641E81, "Dowslake Microsystems", "DOWSLAKE-MICROSYSTEMS" }, { 0x64200C, "Apple", "APPLE" }, { 0x642184, "Nippon Denki Kagaku Co.,LTD", "NIPPON-DENKI-KAGAKU" }, { 0x642216, "Shandong Taixin Electronic co.,Ltd", "SHANDONG-TAIXIN" }, { 0x642400, "Xorcom Ltd.", "XORCOM" }, { 0x642737, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x642DB7, "SEUNGIL ELECTRONICS", "SEUNGIL-ELECTRONICS" }, { 0x643150, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x64317E, "Dexin Corporation", "DEXIN" }, { 0x643409, "BITwave Pte Ltd", "BITWAVE-PTE" }, { 0x643F5F, "Exablaze", "EXABLAZE" }, { 0x644214, "Swisscom Energy Solutions AG", "SWISSCOM-ENERGY-SOLUTIONS" }, { 0x644346, "GuangDong Quick Network Computer CO.,LTD", "GUANGDONG-QUICK-NETWORK" }, { 0x644BC3, "Shanghai WOASiS Telecommunications Ltd., Co.", "SHANGHAI-WOASIS-TELECOMMUNICATIONS" }, { 0x644BF0, "CalDigit, Inc", "CALDIGIT" }, { 0x644D70, "dSPACE GmbH", "DSPACE" }, { 0x644F74, "LENUS Co., Ltd.", "LENUS" }, { 0x64517E, "LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.", "LONG-BEN-DONGGUAN" }, { 0x645299, "The Chamberlain Group, Inc", "THE-CHAMBERLAIN-GROUP" }, { 0x64535D, "Frauscher Sensortechnik", "FRAUSCHER-SENSORTECHNIK" }, { 0x645422, "Equinox Payments", "EQUINOX-PAYMENTS" }, { 0x645563, "Intelight Inc.", "INTELIGHT" }, { 0x64557F, "NSFOCUS Information Technology Co., Ltd.", "NSFOCUS-INFORMATION" }, { 0x645601, "TP-LINK TECHNOLOGIES CO.,LTD", "TP-LINK-TECHNOLOGIES" }, { 0x645A04, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0x645DD7, "Shenzhen Lifesense Medical Electronics Co., Ltd.", "SHENZHEN-LIFESENSE-MEDICAL-ELECTRONICS" }, { 0x645EBE, "Yahoo! JAPAN", "YAHOO!-JAPAN" }, { 0x645FFF, "Nicolet Neuro", "NICOLET-NEURO" }, { 0x646223, "Cellient Co., Ltd.", "CELLIENT" }, { 0x6465C0, "Nuvon, Inc", "NUVON" }, { 0x6466B3, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x646707, "Beijing Omnific Technology, Ltd.", "BEIJING-OMNIFIC" }, { 0x64680C, "COMTREND", "COMTREND" }, { 0x6469BC, "Hytera Communications Co .,ltd", "HYTERA-COMMUNICATION" }, { 0x646E6C, "Radio Datacom LLC", "RADIO-DATACOM-LLC" }, { 0x646EEA, "Iskratel d.o.o.", "ISKRATEL-D-O-O" }, { 0x647002, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x6472D8, "GooWi Technology Co.,Limited", "GOOWI" }, { 0x6473E2, "Arbiter Systems, Inc.", "ARBITER" }, { 0x647657, "Innovative Security Designs", "INNOVATIVE-SECURITY-DESIGNS" }, { 0x647791, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x647BD4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x647C34, "Ubee Interactive Corp.", "UBEE-INTERACTIVE" }, { 0x647D81, "YOKOTA INDUSTRIAL CO,.LTD", "YOKOTA-INDUSTRIAL" }, { 0x647FDA, "TEKTELIC Communications Inc.", "TEKTELIC-COMMUNICATION" }, { 0x64808B, "VG Controls, Inc.", "VG-CONTROLS" }, { 0x648099, "Intel Corporate", "INTEL-CORPORATE" }, { 0x648125, "Alphatron Marine BV", "ALPHATRON-MARINE" }, { 0x648788, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x6487D7, "Pirelli Tyre S.p.A.", "PIRELLI-TYRE-S-P-A" }, { 0x6488FF, "Sichuan Changhong Electric Ltd.", "SICHUAN-CHANGHONG-ELECTRIC" }, { 0x64995D, "LGE", "LGE" }, { 0x649968, "Elentec", "ELENTEC" }, { 0x6499A0, "AG Elektronik AB", "ELEKTRONIK-AB" }, { 0x649B24, "V Technology Co., Ltd.", "V" }, { 0x649C81, "Qualcomm iSkoot, Inc.", "QUALCOMM-ISKOOT" }, { 0x649C8E, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x649EF3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x649FF7, "Kone OYj", "KONE-OYJ" }, { 0x64A0E7, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x64A232, "OOO Samlight", "OOO-SAMLIGHT" }, { 0x64A341, "Wonderlan (Beijing) Technology Co., Ltd.", "WONDERLAN-BEIJING" }, { 0x64A3CB, "Apple", "APPLE" }, { 0x64A769, "HTC Corporation", "HTC" }, { 0x64A837, "Juni Korea Co., Ltd", "JUNI-KOREA" }, { 0x64AE0C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x64AE88, "Polytec GmbH", "POLYTEC" }, { 0x64B310, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x64B64A, "ViVOtech, Inc.", "VIVOTECH" }, { 0x64B9E8, "Apple", "APPLE" }, { 0x64BABD, "SDJ Technologies, Inc.", "SDJ-TECHNOLOGIES" }, { 0x64BC11, "CombiQ AB", "COMBIQ-AB" }, { 0x64C5AA, "South African Broadcasting Corporation", "SOUTH-AFRICAN-BROADCASTING" }, { 0x64C667, "Barnes&Noble", "BARNES-NOBLE" }, { 0x64C6AF, "AXERRA Networks Ltd", "AXERRA-NETWORKS" }, { 0x64C944, "LARK Technologies, Inc", "LARK-TECHNOLOGIES" }, { 0x64D02D, "Next Generation Integration (NGI)", "NEXT-GENERATION-INTEGRATION-NGI" }, { 0x64D1A3, "Sitecom Europe BV", "SITECOM-EUROPE" }, { 0x64D241, "Keith & Koep GmbH", "KEITH-KOEP" }, { 0x64D4BD, "ALPS ELECTRIC CO.,LTD.", "ALPS-ELECTRIC" }, { 0x64D4DA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x64D814, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x64D912, "Solidica, Inc.", "SOLIDICA" }, { 0x64D989, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x64DB18, "OpenPattern", "OPENPATTERN" }, { 0x64DC01, "Static Systems Group PLC", "STATIC-GROUP-PLC" }, { 0x64DE1C, "Kingnetic Pte Ltd", "KINGNETIC-PTE" }, { 0x64E161, "DEP Corp.", "DEP" }, { 0x64E599, "EFM Networks", "EFM-NETWORKS" }, { 0x64E625, "Woxu Wireless Co., Ltd", "WOXU-WIRELESS" }, { 0x64E682, "Apple", "APPLE" }, { 0x64E84F, "Serialway Communication Technology Co. Ltd", "SERIALWAY-COMMUNICATION" }, { 0x64E8E6, "global moisture management system", "GLOBAL-MOISTURE-MANAGEMENT-SYSTEM" }, { 0x64E950, "Cisco", "CISCO" }, { 0x64ED57, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x64ED62, "WOORI SYSTEMS Co., Ltd", "WOORI" }, { 0x64F242, "Gerdes Aktiengesellschaft", "GERDES-AKTIENGESELLSCHAFT" }, { 0x64F50E, "Kinion Technology Company Limited", "KINION-COMPANY" }, { 0x64F970, "Kenade Electronics Technology Co.,LTD.", "KENADE-ELECTRONICS" }, { 0x64F987, "Avvasi Inc.", "AVVASI" }, { 0x64FC8C, "Zonar Systems", "ZONAR" }, { 0x6805CA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x680927, "Apple", "APPLE" }, { 0x680AD7, "Yancheng Kecheng Optoelectronic Technology Co., Ltd", "YANCHENG-KECHENG-OPTOELECTRONIC" }, { 0x68122D, "Special Instrument Development Co., Ltd.", "SPECIAL-INSTRUMENT-DEVELOPMENT" }, { 0x681590, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x6815D3, "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A.", "ZAKLADY-ELEKTRONIKI-I-MECHANIKI-PRECYZYJNEJ-R-G" }, { 0x681605, "Systems And Electronic Development FZCO", "AND-DEVELOPMENT-FZCO" }, { 0x681729, "Intel Corporate", "INTEL-CORPORATE" }, { 0x68193F, "Digital Airways", "DIGITAL-AIRWAYS" }, { 0x681AB2, "zte corporation", "ZTE" }, { 0x681CA2, "Rosewill Inc.", "ROSEWILL" }, { 0x681D64, "Sunwave Communications Co., Ltd", "SUNWAVE-COMMUNICATION" }, { 0x681E8B, "InfoSight Corporation", "INFOSIGHT" }, { 0x681FD8, "Advanced Telemetry", "ADVANCED-TELEMETRY" }, { 0x68234B, "Nihon Dengyo Kousaku", "NIHON-DENGYO-KOUSAKU" }, { 0x682DDC, "Wuhan Changjiang Electro-Communication Equipment CO.,LTD", "WUHAN-CHANGJIANG-ELECTRO-COMMUNICATION-EQUIPMENT" }, { 0x683B1E, "Countwise LTD", "COUNTWISE" }, { 0x683EEC, "ERECA", "ERECA" }, { 0x684352, "Bhuu Limited", "BHUU" }, { 0x684898, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x684B88, "Galtronics Telemetry Inc.", "GALTRONICS-TELEMETRY" }, { 0x684CA8, "Shenzhen Herotel Tech. Co., Ltd.", "SHENZHEN-HEROTEL-TECH" }, { 0x6851B7, "PowerCloud Systems, Inc.", "POWERCLOUD" }, { 0x6854ED, "Alcatel-Lucent - Nuage", "ALCATEL-LUCENT---NUAGE" }, { 0x6854F5, "enLighted Inc", "ENLIGHTED" }, { 0x68597F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x685B35, "Apple", "APPLE" }, { 0x685B36, "POWERTECH INDUSTRIAL CO., LTD.", "POWERTECH-INDUSTRIAL" }, { 0x685D43, "Intel Corporate", "INTEL-CORPORATE" }, { 0x685E6B, "PowerRay Co., Ltd.", "POWERRAY" }, { 0x686359, "Advanced Digital Broadcast SA", "ADVANCED-DIGITAL-BROADCAST" }, { 0x68692E, "Zycoo Co.,Ltd", "ZYCOO" }, { 0x6869F2, "ComAp s.r.o.", "COMAP-S-R-O" }, { 0x686E23, "Wi3 Inc.", "WI3" }, { 0x687251, "Ubiquiti Networks", "UBIQUITI-NETWORKS" }, { 0x68764F, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x68784C, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x687924, "ELS-GmbH & Co. KG", "ELS" }, { 0x6879ED, "SHARP Corporation", "SHARP" }, { 0x687CD5, "Y Soft Corporation, a.s.", "Y-SOFT-A-S" }, { 0x687F74, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x68831A, "Pandora Mobility Corporation", "PANDORA-MOBILITY" }, { 0x688470, "eSSys Co.,Ltd", "ESSYS" }, { 0x688540, "IGI Mobile, Inc.", "IGI-MOBILE" }, { 0x6886A7, "Cisco", "CISCO" }, { 0x6886E7, "Orbotix, Inc.", "ORBOTIX" }, { 0x68876B, "INQ Mobile Limited", "INQ-MOBILE" }, { 0x688AB5, "EDP Servicos", "EDP-SERVICOS" }, { 0x689234, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x689423, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x68967B, "Apple", "APPLE" }, { 0x68974B, "Shenzhen Costar Electronics Co. Ltd.", "SHENZHEN-COSTAR-ELECTRONICS" }, { 0x6897E8, "Society of Motion Picture & Television Engineers", "SOCIETY-OF-MOTION-PICTURE-AMP-TELEVISION-ENGINEERS" }, { 0x689C5E, "AcSiP Technology Corp.", "ACSIP" }, { 0x689C70, "Apple", "APPLE" }, { 0x68A1B7, "Honghao Mingchuan Technology (Beijing) CO.,Ltd.", "HONGHAO-MINGCHUAN-BEIJING" }, { 0x68A3C4, "Liteon Technology Corporation", "LITEON" }, { 0x68A40E, "BSH Bosch and Siemens Home Appliances GmbH", "BSH-BOSCH-AND-SIEMENS-HOME-APPLIANCES" }, { 0x68A86D, "Apple", "APPLE" }, { 0x68AAD2, "DATECS LTD.,", "DATECS" }, { 0x68AB8A, "RF IDeas", "RF-IDEAS" }, { 0x68AF13, "Futura Mobility", "FUTURA-MOBILITY" }, { 0x68B094, "INESA ELECTRON CO.,LTD", "INESA-ELECTRON" }, { 0x68B43A, "WaterFurnace International, Inc.", "WATERFURNACE" }, { 0x68B599, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x68B6FC, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x68B8D9, "Act KDE, Inc.", "ACT-KDE" }, { 0x68BC0C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x68BDAB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x68CA00, "Octopus Systems Limited", "OCTOPUS" }, { 0x68CC9C, "Mine Site Technologies", "MINE-SITE-TECHNOLOGIES" }, { 0x68CD0F, "U Tek Company Limited", "U-TEK-COMPANY" }, { 0x68CE4E, "L-3 Communications Infrared Products", "L-3-COMMUNICATION-INFRARED-PRODUCTS" }, { 0x68D1FD, "Shenzhen Trimax Technology Co.,Ltd", "SHENZHEN-TRIMAX" }, { 0x68D247, "Portalis LC", "PORTALIS-LC" }, { 0x68D925, "ProSys Development Services", "PROSYS-DEVELOPMENT-SERVICES" }, { 0x68DB67, "Nantong Coship Electronics Co., Ltd", "NANTONG-COSHIP-ELECTRONICS" }, { 0x68DB96, "OPWILL Technologies CO .,LTD", "OPWILL-TECHNOLOGIES" }, { 0x68DCE8, "PacketStorm Communications", "PACKETSTORM-COMMUNICATION" }, { 0x68E166, "PRIVATE", "PRIVATE" }, { 0x68E41F, "Unglaube Identech GmbH", "UNGLAUBE-IDENTECH" }, { 0x68EBAE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x68EBC5, "Angstrem Telecom", "ANGSTREM-TELECOM" }, { 0x68EC62, "YODO Technology Corp. Ltd.", "YODO" }, { 0x68ED43, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x68EE96, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x68EFBD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x68F125, "Data Controls Inc.", "DATA-CONTROLS" }, { 0x68F895, "Redflow Limited", "REDFLOW" }, { 0x68FB95, "Generalplus Technology Inc.", "GENERALPLUS" }, { 0x68FCB3, "Next Level Security Systems, Inc.", "NEXT-LEVEL-SECURITY" }, { 0x6C0460, "RBH Access Technologies Inc.", "RBH-ACCESS-TECHNOLOGIES" }, { 0x6C0E0D, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x6C0F6A, "JDC Tech Co., Ltd.", "JDC-TECH" }, { 0x6C15F9, "Nautronix Limited", "NAUTRONIX" }, { 0x6C1811, "Decatur Electronics", "DECATUR-ELECTRONICS" }, { 0x6C2056, "Cisco", "CISCO" }, { 0x6C22AB, "Ainsworth Game Technology", "AINSWORTH-GAME" }, { 0x6C23B9, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x6C2995, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6C2E33, "Accelink Technologies Co.,Ltd.", "ACCELINK-TECHNOLOGIES" }, { 0x6C2E85, "SAGEMCOM", "SAGEMCOM" }, { 0x6C32DE, "Indieon Technologies Pvt. Ltd.", "INDIEON-TECHNOLOGIES-PVT" }, { 0x6C33A9, "Magicjack LP", "MAGICJACK-LP" }, { 0x6C391D, "Beijing ZhongHuaHun Network Information center", "BEIJING-ZHONGHUAHUN-NETWORK-INFORMATION-CENTER" }, { 0x6C3A84, "Shenzhen Aero-Startech. Co.Ltd", "SHENZHEN-AERO-STARTECH" }, { 0x6C3BE5, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x6C3C53, "SoundHawk Corp", "SOUNDHAWK" }, { 0x6C3E6D, "Apple", "APPLE" }, { 0x6C3E9C, "KE Knestel Elektronik GmbH", "KE-KNESTEL-ELEKTRONIK" }, { 0x6C40C6, "Nimbus Data Systems, Inc.", "NIMBUS-DATA" }, { 0x6C416A, "Cisco", "CISCO" }, { 0x6C4B7F, "Vossloh-Schwabe Deutschland GmbH", "VOSSLOH-SCHWABE-DEUTSCHLAND" }, { 0x6C504D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x6C5779, "Aclima, Inc.", "ACLIMA" }, { 0x6C5A34, "Shenzhen Haitianxiong Electronic Co., Ltd.", "SHENZHEN-HAITIANXIONG" }, { 0x6C5AB5, "TCL Technoly Electronics (Huizhou) Co., Ltd.", "TCL-TECHNOLY-ELECTRONICS-HUIZHOU" }, { 0x6C5CDE, "SunReports, Inc.", "SUNREPORTS" }, { 0x6C5D63, "ShenZhen Rapoo Technology Co., Ltd.", "SHENZHEN-RAPOO" }, { 0x6C5E7A, "Ubiquitous Internet Telecom Co., Ltd", "UBIQUITOUS-INTERNET-TELECOM" }, { 0x6C5F1C, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x6C6126, "Rinicom Holdings", "RINICOM-HOLDINGS" }, { 0x6C626D, "Micro-Star INT'L CO., LTD", "MICRO-STAR" }, { 0x6C641A, "Penguin Computing", "PENGUIN-COMPUTING" }, { 0x6C6F18, "Stereotaxis, Inc.", "STEREOTAXIS" }, { 0x6C7039, "Novar GmbH", "NOVAR" }, { 0x6C71D9, "AzureWave Technologies, Inc", "AZUREWAVE-TECHNOLOGIES" }, { 0x6C81FE, "Mitsuba Corporation", "MITSUBA" }, { 0x6C8336, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6C8366, "Nanjing SAC Power Grid Automation Co., Ltd.", "NANJING-SAC-POWER-GRID-AUTOMATION" }, { 0x6C8686, "Technonia", "TECHNONIA" }, { 0x6C8814, "Intel Corporate", "INTEL-CORPORATE" }, { 0x6C8B2F, "zte corporation", "ZTE" }, { 0x6C8CDB, "Otus Technologies Ltd", "OTUS-TECHNOLOGIES" }, { 0x6C8D65, "Wireless Glue Networks, Inc.", "WIRELESS-GLUE-NETWORKS" }, { 0x6C90B1, "SanLogic Inc", "SANLOGIC" }, { 0x6C92BF, "Inspur Electronic Information Industry Co.,Ltd.", "INSPUR-INFORMATION-INDUSTRY" }, { 0x6C98EB, "Xyne GmbH", "XYNE" }, { 0x6C9AC9, "Valentine Research, Inc.", "VALENTINE-RESEARCH" }, { 0x6C9B02, "Nokia Corporation", "NOKIA" }, { 0x6C9CE9, "Nimble Storage", "NIMBLE-STORAGE" }, { 0x6C9CED, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x6CA682, "EDAM information & communications", "EDAM-INFORMATION-COMMUNICATION" }, { 0x6CA780, "Nokia Corporation", "NOKIA" }, { 0x6CA906, "Telefield Ltd", "TELEFIELD" }, { 0x6CA96F, "TransPacket AS", "TRANSPACKET-AS" }, { 0x6CAB4D, "Digital Payment Technologies", "DIGITAL-PAYMENT-TECHNOLOGIES" }, { 0x6CAC60, "Venetex Corp", "VENETEX" }, { 0x6CAD3F, "Hubbell Building Automation, Inc.", "HUBBELL-BUILDING-AUTOMATION" }, { 0x6CADEF, "KZ Broadband Technologies, Ltd.", "KZ-BROADBAND-TECHNOLOGIES" }, { 0x6CADF8, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x6CAE8B, "IBM Corporation", "IBM" }, { 0x6CB311, "Shenzhen Lianrui Electronics Co.,Ltd", "SHENZHEN-LIANRUI-ELECTRONICS" }, { 0x6CB350, "Anhui comhigher tech co.,ltd", "ANHUI-COMHIGHER-TECH" }, { 0x6CB7F4, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6CBEE9, "Alcatel-Lucent-IPD", "ALCATEL-LUCENT-IPD" }, { 0x6CC1D2, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x6CC26B, "Apple", "APPLE" }, { 0x6CD032, "LG Electronics", "LG-ELECTRONICS" }, { 0x6CD146, "Smartek d.o.o.", "SMARTEK-D-O-O" }, { 0x6CD1B0, "WING SING ELECTRONICS HONG KONG LIMITED", "WING-SING-ELECTRONICS-HONG-KONG" }, { 0x6CD68A, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0x6CDC6A, "Promethean Limited", "PROMETHEAN" }, { 0x6CE0B0, "SOUND4", "SOUND4" }, { 0x6CE4CE, "Villiger Security Solutions AG", "VILLIGER-SECURITY-SOLUTIONS" }, { 0x6CE873, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x6CE907, "Nokia Corporation", "NOKIA" }, { 0x6CE983, "Gastron Co., LTD.", "GASTRON" }, { 0x6CECA1, "SHENZHEN CLOU ELECTRONICS CO. LTD.", "SHENZHEN-CLOU-ELECTRONICS" }, { 0x6CF049, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x6CF373, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x6CF37F, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x6CF97C, "Nanoptix Inc.", "NANOPTIX" }, { 0x6CFA58, "Avaya, Inc", "AVAYA" }, { 0x6CFDB9, "Proware Technologies Co Ltd.", "PROWARE-TECHNOLOGIES" }, { 0x6CFFBE, "MPB Communications Inc.", "MPB-COMMUNICATION" }, { 0x700258, "01DB-METRAVIB", "01DB-METRAVIB" }, { 0x700514, "LG Electronics", "LG-ELECTRONICS" }, { 0x700BC0, "Dewav Technology Company", "DEWAV-COMPANY" }, { 0x700FEC, "Poindus Systems Corp.", "POINDUS" }, { 0x70105C, "Cisco", "CISCO" }, { 0x701124, "Apple", "APPLE" }, { 0x701404, "Limited Liability Company", "LIABILITY-COMPANY" }, { 0x70188B, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x701A04, "Liteon Tech Corp.", "LITEON-TECH" }, { 0x701AED, "ADVAS CO., LTD.", "ADVAS" }, { 0x701D7F, "Comtech Technology Co., Ltd.", "COMTECH" }, { 0x702393, "fos4X GmbH", "FOS4X" }, { 0x702526, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x702559, "CyberTAN Technology, Inc.", "CYBERTAN" }, { 0x702B1D, "E-Domus International Limited", "E-DOMUS" }, { 0x702C1F, "Wisol", "WISOL" }, { 0x702F4B, "PolyVision Inc.", "POLYVISION" }, { 0x702F97, "Aava Mobile Oy", "AAVA-MOBILE-OY" }, { 0x703018, "Avaya, Inc", "AVAYA" }, { 0x70305E, "Nanjing Zhongke Menglian Information Technology Co.,LTD", "NANJING-ZHONGKE-MENGLIAN-INFORMATION" }, { 0x703187, "ACX GmbH", "ACX" }, { 0x7032D5, "Athena Wireless Communications Inc", "ATHENA-WIRELESS-COMMUNICATION" }, { 0x703811, "Invensys Rail", "INVENSYS-RAIL" }, { 0x7038B4, "Low Tech Solutions", "LOW-TECH-SOLUTIONS" }, { 0x7038EE, "Avaya, Inc", "AVAYA" }, { 0x703AD8, "Shenzhen Afoundry Electronic Co., Ltd", "SHENZHEN-AFOUNDRY" }, { 0x703C39, "SEAWING Kft", "SEAWING-KFT" }, { 0x7041B7, "Edwards Lifesciences LLC", "EDWARDS-LIFESCIENCES-LLC" }, { 0x704642, "CHYNG HONG ELECTRONIC CO., LTD.", "CHYNG-HONG" }, { 0x704AAE, "Xstream Flow (Pty) Ltd", "XSTREAM-FLOW-PTY" }, { 0x704AE4, "Rinstrum Pty Ltd", "RINSTRUM-PTY" }, { 0x704CED, "TMRG, Inc.", "TMRG" }, { 0x704E01, "KWANGWON TECH CO., LTD.", "KWANGWON-TECH" }, { 0x7052C5, "Avaya, Inc.", "AVAYA" }, { 0x70533F, "Alfa Instrumentos Eletronicos Ltda.", "ALFA-INSTRUMENTOS-ELETRONICOS-LTDA" }, { 0x7054D2, "PEGATRON CORPORATION", "PEGATRON" }, { 0x7054F5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x705681, "Apple", "APPLE" }, { 0x705812, "Panasonic AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x705957, "Medallion Instrumentation Systems", "MEDALLION-INSTRUMENTATION" }, { 0x705986, "OOO TTV", "OOO-TTV" }, { 0x705AB6, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0x705CAD, "Konami Gaming Inc", "KONAMI-GAMING" }, { 0x705EAA, "Action Target, Inc.", "ACTION-TARGET" }, { 0x7060DE, "LaVision GmbH", "LAVISION" }, { 0x706173, "Calantec GmbH", "CALANTEC" }, { 0x706417, "ORBIS TECNOLOGIA ELECTRICA S.A.", "ORBIS-TECNOLOGIA-ELECTRICA" }, { 0x706582, "Suzhou Hanming Technologies Co., Ltd.", "SUZHOU-HANMING-TECHNOLOGIES" }, { 0x706F81, "PRIVATE", "PRIVATE" }, { 0x70704C, "Purple Communications, Inc", "PURPLE-COMMUNICATION" }, { 0x7071B3, "Brain Corporation", "BRAIN" }, { 0x7071BC, "PEGATRON CORPORATION", "PEGATRON" }, { 0x70723C, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x7072CF, "EdgeCore Networks", "EDGECORE-NETWORKS" }, { 0x7073CB, "Apple", "APPLE" }, { 0x707630, "Pace plc.", "PACE-PLC" }, { 0x7076DD, "Oxyguard International A/S", "OXYGUARD-A/S" }, { 0x7076F0, "LevelOne Communications (India) Private Limited", "LEVELONE-COMMUNICATION-INDIA-PRIVATE" }, { 0x707BE8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x707C18, "ADATA Technology Co., Ltd", "ADATA" }, { 0x707E43, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x707EDE, "NASTEC LTD.", "NASTEC" }, { 0x708105, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x70820E, "as electronics GmbH", "AS-ELECTRONICS" }, { 0x70828E, "OleumTech Corporation", "OLEUMTECH" }, { 0x7085C6, "Pace plc.", "PACE-PLC" }, { 0x708B78, "citygrow technology co., ltd", "CITYGROW" }, { 0x708D09, "Nokia Corporation", "NOKIA" }, { 0x7093F8, "Space Monkey, Inc.", "SPACE-MONKEY" }, { 0x709756, "Happyelectronics Co.,Ltd", "HAPPYELECTRONICS" }, { 0x709A0B, "Italian Institute of Technology", "ITALIAN-INSTITUTE-OF" }, { 0x709BA5, "Shenzhen Y&D Electronics Co.,LTD.", "SHENZHEN-Y-D-ELECTRONICS" }, { 0x709BFC, "Bryton Inc.", "BRYTON" }, { 0x709E29, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0x709E86, "X6D Limited", "X6D" }, { 0x70A191, "Trendsetter Medical, LLC", "TRENDSETTER-MEDICAL-LLC" }, { 0x70A41C, "Advanced Wireless Dynamics S.L.", "ADVANCED-WIRELESS-DYNAMICS-S-L" }, { 0x70A66A, "Prox Dynamics AS", "PROX-DYNAMICS-AS" }, { 0x70A8E3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x70AAB2, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0x70B035, "Shenzhen Zowee Technology Co., Ltd", "SHENZHEN-ZOWEE" }, { 0x70B08C, "Shenou Communication Equipment Co.,Ltd", "SHENOU-COMMUNICATION-EQUIPMENT" }, { 0x70B14E, "Pace plc", "PACE-PLC" }, { 0x70B265, "Hiltron s.r.l.", "HILTRON-S-R-L" }, { 0x70B599, "Embedded Technologies s.r.o.", "EMBEDDED-TECHNOLOGIES-S-R-O" }, { 0x70B921, "FiberHome Telecommunication Technologies CO.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0x70C6AC, "Bosch Automotive Aftermarket", "BOSCH-AUTOMOTIVE-AFTERMARKET" }, { 0x70CA9B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x70CD60, "Apple", "APPLE" }, { 0x70D4F2, "RIM", "RIM" }, { 0x70D57E, "Scalar Corporation", "SCALAR" }, { 0x70D5E7, "Wellcore Corporation", "WELLCORE" }, { 0x70D6B6, "Metrum Technologies", "METRUM-TECHNOLOGIES" }, { 0x70D880, "Upos System sp. z o.o.", "UPOS-SYSTEM-SP-Z-O-O" }, { 0x70DDA1, "Tellabs", "TELLABS" }, { 0x70DEE2, "Apple", "APPLE" }, { 0x70E027, "HONGYU COMMUNICATION TECHNOLOGY LIMITED", "HONGYU-COMMUNICATION" }, { 0x70E139, "3view Ltd", "3VIEW" }, { 0x70E24C, "SAE IT-systems GmbH & Co. KG", "SAE-IT" }, { 0x70E284, "Wistron InfoComm(Zhongshan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0x70E843, "Beijing C&W Optical Communication Technology Co.,Ltd.", "BEIJING-C-W-OPTICAL-COMMUNICATION" }, { 0x70EE50, "Netatmo", "NETATMO" }, { 0x70F176, "Data Modul AG", "DATA-MODUL" }, { 0x70F1A1, "Liteon Technology Corporation", "LITEON" }, { 0x70F1E5, "Xetawave LLC", "XETAWAVE-LLC" }, { 0x70F395, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0x70F927, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x70FF76, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x740ABC, "JSJS Designs (Europe) Limited", "JSJS-DESIGNS-EUROPE" }, { 0x740EDB, "Optowiz Co., Ltd", "OPTOWIZ" }, { 0x741489, "SRT Wireless", "SRT-WIRELESS" }, { 0x7415E2, "Tri-Sen Systems Corporation", "TRI-SEN" }, { 0x741E93, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0x74258A, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x74273C, "ChangYang Technology (Nanjing) Co., LTD", "CHANGYANG-NANJING" }, { 0x7427EA, "Elitegroup Computer Systems Co., Ltd.", "ELITEGROUP" }, { 0x742B0F, "Infinidat Ltd.", "INFINIDAT" }, { 0x742B62, "Fujitsu Limited", "FUJITSU" }, { 0x742D0A, "Norfolk Elektronik AG", "NORFOLK-ELEKTRONIK" }, { 0x742F68, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x743170, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x743256, "NT-ware Systemprg GmbH", "NT-WARE-SYSTEMPRG" }, { 0x74372F, "Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd", "TONGFANG-SHENZHEN-CLOUDCOMPUTING" }, { 0x743889, "ANNAX Anzeigesysteme GmbH", "ANNAX-ANZEIGESYSTEME" }, { 0x743ECB, "Gentrice tech", "GENTRICE-TECH" }, { 0x744401, "NETGEAR", "NETGEAR" }, { 0x74458A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x7446A0, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x744BE9, "EXPLORER HYPERTECH CO.,LTD", "EXPLORER-HYPERTECH" }, { 0x744D79, "Arrive Systems Inc.", "ARRIVE" }, { 0x745327, "COMMSEN CO., LIMITED", "COMMSEN" }, { 0x745612, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x745798, "TRUMPF Laser GmbH + Co. KG", "TRUMPF-LASER-+" }, { 0x745E1C, "PIONEER CORPORATION", "PIONEER" }, { 0x745F00, "Samsung Semiconductor Inc.", "SAMSUNG-SEMICONDUCTOR" }, { 0x745FAE, "TSL PPL", "TSL-PPL" }, { 0x7463DF, "VTS GmbH", "VTS" }, { 0x7465D1, "Atlinks", "ATLINKS" }, { 0x746630, "T:mi Ytti", "T:MI-YTTI" }, { 0x746A89, "Rezolt Corporation", "REZOLT" }, { 0x746A8F, "VS Vision Systems GmbH", "VS-VISION" }, { 0x746B82, "MOVEK", "MOVEK" }, { 0x746F3D, "Contec GmbH", "CONTEC" }, { 0x7472F2, "Chipsip Technology Co., Ltd.", "CHIPSIP" }, { 0x747818, "ServiceAssure", "SERVICEASSURE" }, { 0x747B7A, "ETH Inc.", "ETH" }, { 0x747DB6, "Aliwei Communications, Inc", "ALIWEI-COMMUNICATION" }, { 0x747E1A, "Red Embedded Design Limited", "RED-EMBEDDED-DESIGN" }, { 0x747E2D, "Beijing Thomson CITIC Digital Technology Co. LTD.", "BEIJING-THOMSON-CITIC-DIGITAL" }, { 0x74867A, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0x74888B, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0x748E08, "Bestek Corp.", "BESTEK" }, { 0x748EF8, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x748F1B, "MasterImage 3D", "MASTERIMAGE-3D" }, { 0x749050, "Renesas Electronics Corporation", "RENESAS-ELECTRONICS" }, { 0x74911A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x7493A4, "Zebra Technologies Corp.", "ZEBRA-TECHNOLOGIES" }, { 0x74943D, "AgJunction", "AGJUNCTION" }, { 0x749975, "IBM Corporation", "IBM" }, { 0x749DDC, "2Wire", "2WIRE" }, { 0x74A4A7, "QRS Music Technologies, Inc.", "QRS-MUSIC-TECHNOLOGIES" }, { 0x74A4B5, "Powerleader Science and Technology Co. Ltd.", "POWERLEADER-SCIENCE-AND" }, { 0x74A722, "LG Electronics", "LG-ELECTRONICS" }, { 0x74ADB7, "China Mobile Group Device Co.,Ltd.", "CHINA-MOBILE-GROUP-DEVICE" }, { 0x74AE76, "iNovo Broadband, Inc.", "INOVO-BROADBAND" }, { 0x74B00C, "Network Video Technologies, Inc", "NETWORK-VIDEO-TECHNOLOGIES" }, { 0x74B9EB, "Fujian JinQianMao Electronic Technology Co.,Ltd", "FUJIAN-JINQIANMAO" }, { 0x74BE08, "ATEK Products, LLC", "ATEK-PRODUCTS-LLC" }, { 0x74BFA1, "HYUNTECK", "HYUNTECK" }, { 0x74C621, "Zhejiang Hite Renewable Energy Co.,LTD", "ZHEJIANG-HITE-RENEWABLE-ENERGY" }, { 0x74C99A, "Ericsson AB", "ERICSSON-AB" }, { 0x74CA25, "Calxeda, Inc.", "CALXEDA" }, { 0x74CD0C, "Smith Myers Communications Ltd.", "SMITH-MYERS-COMMUNICATION" }, { 0x74CE56, "Packet Force Technology Limited Company", "PACKET-FORCE-COMPANY" }, { 0x74D02B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x74D0DC, "ERICSSON AB", "ERICSSON-AB" }, { 0x74D435, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x74D675, "WYMA Tecnologia", "WYMA-TECNOLOGIA" }, { 0x74D850, "Evrisko Systems", "EVRISKO" }, { 0x74DE2B, "Liteon Technology Corporation", "LITEON" }, { 0x74E06E, "Ergophone GmbH", "ERGOPHONE" }, { 0x74E1B6, "Apple", "APPLE" }, { 0x74E2F5, "Apple", "APPLE" }, { 0x74E424, "APISTE CORPORATION", "APISTE" }, { 0x74E50B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x74E537, "RADSPIN", "RADSPIN" }, { 0x74E543, "Liteon Technology Corporation", "LITEON" }, { 0x74E7C6, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x74EA3A, "TP-LINK Technologies Co.,Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0x74ECF1, "Acumen", "ACUMEN" }, { 0x74F06D, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x74F07D, "BnCOM Co.,Ltd", "BNCOM" }, { 0x74F102, "Beijing HCHCOM Technology Co., Ltd", "BEIJING-HCHCOM" }, { 0x74F612, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x74F726, "Neuron Robotics", "NEURON-ROBOTICS" }, { 0x74FDA0, "Compupal (Group) Corporation", "COMPUPAL-GROUP" }, { 0x74FE48, "ADVANTECH CO., LTD.", "ADVANTECH" }, { 0x74FF7D, "Wren Sound Systems, LLC", "WREN-SOUND-LLC" }, { 0x78028F, "Adaptive Spectrum and Signal Alignment (ASSIA), Inc.", "ADAPTIVE-SPECTRUM-AND-SIGNAL-ALIGNMENT-ASSIA" }, { 0x780738, "Z.U.K. Elzab S.A.", "Z-U-K-ELZAB" }, { 0x781185, "NBS Payment Solutions Inc.", "NBS-PAYMENT-SOLUTIONS" }, { 0x7812B8, "ORANTEK LIMITED", "ORANTEK" }, { 0x781881, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0x78192E, "NASCENT Technology", "NASCENT" }, { 0x7819F7, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x781C5A, "SHARP Corporation", "SHARP" }, { 0x781DBA, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x781DFD, "Jabil Inc", "JABIL" }, { 0x781FDB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78223D, "Affirmed Networks", "AFFIRMED-NETWORKS" }, { 0x782544, "Omnima Limited", "OMNIMA" }, { 0x7825AD, "SAMSUNG ELECTRONICS CO., LTD.", "SAMSUNG-ELECTRONICS" }, { 0x782BCB, "Dell Inc", "DELL" }, { 0x782EEF, "Nokia Corporation", "NOKIA" }, { 0x78303B, "Stephen Technologies Co.,Limited", "STEPHEN-TECHNOLOGIES" }, { 0x7830E1, "UltraClenz, LLC", "ULTRACLENZ-LLC" }, { 0x78324F, "Millennium Group, Inc.", "MILLENNIUM-GROUP" }, { 0x783CE3, "Kai-EE", "KAI-EE" }, { 0x783D5B, "TELNET Redes Inteligentes S.A.", "TELNET-REDES-INTELIGENTES" }, { 0x783F15, "EasySYNC Ltd.", "EASYSYNC" }, { 0x784405, "FUJITU(HONG KONG) ELECTRONIC Co.,LTD.", "FUJITU-HONG-KONG" }, { 0x784476, "Zioncom technology co.,ltd", "ZIONCOM" }, { 0x7845C4, "Dell Inc", "DELL" }, { 0x7846C4, "DAEHAP HYPER-TECH", "DAEHAP-HYPER-TECH" }, { 0x78471D, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78491D, "The Will-Burt Company", "THE-WILL-BURT-COMPANY" }, { 0x784B08, "f.robotics acquisitions ltd", "F-ROBOTICS-ACQUISITIONS" }, { 0x784B87, "Murata Manufacturing Co.,Ltd.", "MURATA-MANUFACTURING" }, { 0x78510C, "LiveU Ltd.", "LIVEU" }, { 0x78521A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x785262, "Shenzhen Hojy Software Co., Ltd.", "SHENZHEN-HOJY-SOFTWARE" }, { 0x78542E, "D-Link International", "D-LINK" }, { 0x785517, "SankyuElectronics", "SANKYUELECTRONICS" }, { 0x785712, "Mobile Integration Workgroup", "MOBILE-INTEGRATION-WORKGROUP" }, { 0x78593E, "RAFI GmbH & Co.KG", "RAFI" }, { 0x78595E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x785968, "Hon Hai Precision Ind.Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x785C72, "Hioso Technology Co., Ltd.", "HIOSO" }, { 0x78617C, "MITSUMI ELECTRIC CO.,LTD", "MITSUMI-ELECTRIC" }, { 0x7866AE, "ZTEC Instruments, Inc.", "ZTEC-INSTRUMENTS" }, { 0x786A89, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x786C1C, "Apple", "APPLE" }, { 0x787F62, "GiK mbH", "GIK-MBH" }, { 0x78818F, "Server Racks Australia Pty Ltd", "SERVER-RACKS-AUSTRALIA-PTY" }, { 0x78843C, "Sony Corporation", "SONY" }, { 0x7884EE, "INDRA ESPACIO S.A.", "INDRA-ESPACIO" }, { 0x788973, "CMC", "CMC" }, { 0x788C54, "Eltek Technologies LTD", "ELTEK-TECHNOLOGIES" }, { 0x788DF7, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0x78929C, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7898FD, "Q9 Networks Inc.", "Q9-NETWORKS" }, { 0x78995C, "Nationz Technologies Inc", "NATIONZ-TECHNOLOGIES" }, { 0x789966, "Musilab Electronics (DongGuan)Co.,Ltd.", "MUSILAB-ELECTRONICS-DONGGUAN" }, { 0x78998F, "MEDILINE ITALIA SRL", "MEDILINE-ITALIA-SRL" }, { 0x789ED0, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x789F4C, "HOERBIGER Elektronik GmbH", "HOERBIGER-ELEKTRONIK" }, { 0x789F87, "Siemens AG I IA PP PRM", "SIEMENS-I-IA-PP-PRM" }, { 0x78A051, "iiNet Labs Pty Ltd", "IINET-LABS-PTY" }, { 0x78A106, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x78A183, "Advidia", "ADVIDIA" }, { 0x78A2A0, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x78A3E4, "Apple", "APPLE" }, { 0x78A504, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78A5DD, "Shenzhen Smarteye Digital Electronics Co., Ltd", "SHENZHEN-SMARTEYE-DIGITAL-ELECTRONICS" }, { 0x78A683, "Precidata", "PRECIDATA" }, { 0x78A6BD, "DAEYEON Control&Instrument Co,.Ltd", "DAEYEON-CONTROL-INSTRUMENT" }, { 0x78A714, "Amphenol", "AMPHENOL" }, { 0x78A873, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78AB60, "ABB Australia", "ABB-AUSTRALIA" }, { 0x78ABBB, "Samsung Electronics Co.,LTD", "SAMSUNG-ELECTRONICS" }, { 0x78ACC0, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x78AE0C, "Far South Networks", "FAR-SOUTH-NETWORKS" }, { 0x78B3CE, "Elo touch solutions", "ELO-TOUCH-SOLUTIONS" }, { 0x78B5D2, "Ever Treasure Industrial Limited", "EVER-TREASURE-INDUSTRIAL" }, { 0x78B6C1, "AOBO Telecom Co.,Ltd", "AOBO-TELECOM" }, { 0x78B81A, "INTER SALES A/S", "INTER-SALES-A/S" }, { 0x78BAD0, "Shinybow Technology Co. Ltd.", "SHINYBOW" }, { 0x78BEB6, "Enhanced Vision", "ENHANCED-VISION" }, { 0x78BEBD, "STULZ GmbH", "STULZ" }, { 0x78C40E, "H&D Wireless", "H-D-WIRELESS" }, { 0x78C4AB, "Shenzhen Runsil Technology Co.,Ltd", "SHENZHEN-RUNSIL" }, { 0x78C5E5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78C6BB, "Innovasic, Inc.", "INNOVASIC" }, { 0x78CA04, "Nokia Corporation", "NOKIA" }, { 0x78CA39, "Apple", "APPLE" }, { 0x78CA5E, "ELNO", "ELNO" }, { 0x78CB33, "DHC Software Co.,Ltd", "DHC-SOFTWARE" }, { 0x78CD8E, "SMC Networks Inc", "SMC-NETWORKS" }, { 0x78D004, "Neousys Technology Inc.", "NEOUSYS" }, { 0x78D129, "Vicos", "VICOS" }, { 0x78D34F, "Pace-O-Matic, Inc.", "PACE-O-MATIC" }, { 0x78D38D, "HONGKONG YUNLINK TECHNOLOGY LIMITED", "HONGKONG-YUNLINK" }, { 0x78D5B5, "NAVIELEKTRO KY", "NAVIELEKTRO-KY" }, { 0x78D6F0, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x78D99F, "NuCom HK Ltd.", "NUCOM-HK" }, { 0x78DA6E, "Cisco", "CISCO" }, { 0x78DAB3, "GBO Technology", "GBO" }, { 0x78DD08, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x78DDD6, "c-scape", "C-SCAPE" }, { 0x78DEE4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x78E3B5, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x78E400, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x78E7D1, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x78E8B6, "zte corporation", "ZTE" }, { 0x78EC22, "Shanghai Qihui Telecom Technology Co., LTD", "SHANGHAI-QIHUI-TELECOM" }, { 0x78EC74, "Kyland-USA", "KYLAND-USA" }, { 0x78EF4C, "Unetconvergence Co., Ltd.", "UNETCONVERGENCE" }, { 0x78F5E5, "BEGA Gantenbrink-Leuchten KG", "BEGA-GANTENBRINK-LEUCHTEN" }, { 0x78F5FD, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x78F7BE, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x78F7D0, "Silverbrook Research", "SILVERBROOK-RESEARCH" }, { 0x78FE3D, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x78FE41, "Socus networks", "SOCUS-NETWORKS" }, { 0x78FF57, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7C0187, "Curtis Instruments, Inc.", "CURTIS-INSTRUMENTS" }, { 0x7C02BC, "Hansung Electronics Co. LTD", "HANSUNG-ELECTRONICS" }, { 0x7C034C, "SAGEMCOM", "SAGEMCOM" }, { 0x7C03D8, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0x7C0507, "PEGATRON CORPORATION", "PEGATRON" }, { 0x7C051E, "RAFAEL LTD.", "RAFAEL" }, { 0x7C0623, "Ultra Electronics, CIS", "ULTRA-ELECTRONICS-CIS" }, { 0x7C08D9, "Shanghai B-Star Technology Co", "SHANGHAI-B-STAR" }, { 0x7C092B, "Bekey A/S", "BEKEY-A/S" }, { 0x7C0A50, "J-MEX Inc.", "J-MEX" }, { 0x7C11BE, "Apple", "APPLE" }, { 0x7C1476, "Damall Technologies SAS", "DAMALL-TECHNOLOGIES-SAS" }, { 0x7C160D, "Saia-Burgess Controls AG", "SAIA-BURGESS-CONTROLS" }, { 0x7C1AFC, "Dalian Co-Edifice Video Technology Co., Ltd", "DALIAN--EDIFICE-VIDEO" }, { 0x7C1E52, "Microsoft", "MICROSOFT" }, { 0x7C1EB3, "2N TELEKOMUNIKACE a.s.", "2N-TELEKOMUNIKACE-A-S" }, { 0x7C2048, "KoamTac", "KOAMTAC" }, { 0x7C2064, "Alcatel Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0x7C2CF3, "Secure Electrans Ltd", "SECURE-ELECTRANS" }, { 0x7C2E0D, "Blackmagic Design", "BLACKMAGIC-DESIGN" }, { 0x7C2F80, "Gigaset Communications GmbH", "GIGASET-COMMUNICATION" }, { 0x7C336E, "MEG Electronics Inc.", "MEG-ELECTRONICS" }, { 0x7C386C, "Real Time Logic", "REAL-TIME-LOGIC" }, { 0x7C3920, "SSOMA SECURITY", "SSOMA-SECURITY" }, { 0x7C3BD5, "Imago Group", "IMAGO-GROUP" }, { 0x7C3E9D, "PATECH", "PATECH" }, { 0x7C438F, "E-Band Communications Corp.", "E-BAND-COMMUNICATION" }, { 0x7C444C, "Entertainment Solutions, S.L.", "ENTERTAINMENT-SOLUTIONS-S-L" }, { 0x7C49B9, "Plexus Manufacturing Sdn Bhd", "PLEXUS-MANUFACTURING-SDN-BHD" }, { 0x7C4A82, "Portsmith LLC", "PORTSMITH-LLC" }, { 0x7C4AA8, "MindTree Wireless PVT Ltd", "MINDTREE-WIRELESS-PVT" }, { 0x7C4B78, "Red Sun Synthesis Pte Ltd", "RED-SUN-SYNTHESIS-PTE" }, { 0x7C4C58, "Scale Computing, Inc.", "SCALE-COMPUTING" }, { 0x7C4CA5, "BSkyB Ltd", "BSKYB" }, { 0x7C4FB5, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x7C55E7, "YSI, Inc.", "YSI" }, { 0x7C6097, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x7C6193, "HTC Corporation", "HTC" }, { 0x7C669D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7C69F6, "Cisco", "CISCO" }, { 0x7C6AB3, "IBC TECHNOLOGIES INC.", "IBC-TECHNOLOGIES" }, { 0x7C6ADB, "SafeTone Technology Co.,Ltd", "SAFETONE" }, { 0x7C6B33, "Tenyu Tech Co. Ltd.", "TENYU-TECH" }, { 0x7C6B52, "Tigaro Wireless", "TIGARO-WIRELESS" }, { 0x7C6C39, "PIXSYS SRL", "PIXSYS-SRL" }, { 0x7C6C8F, "AMS NEVE LTD", "AMS-NEVE" }, { 0x7C6D62, "Apple", "APPLE" }, { 0x7C6F06, "Caterpillar Trimble Control Technologies", "CATERPILLAR-TRIMBLE-CONTROL-TECHNOLOGIES" }, { 0x7C6FF8, "ShenZhen ACTO Digital Video Technology Co.,Ltd.", "SHENZHEN-ACTO-DIGITAL-VIDEO" }, { 0x7C72E4, "Unikey Technologies", "UNIKEY-TECHNOLOGIES" }, { 0x7C7673, "ENMAS GmbH", "ENMAS" }, { 0x7C7A91, "Intel Corporate", "INTEL-CORPORATE" }, { 0x7C7BE4, "Z'SEDAI KENKYUSHO CORPORATION", "Z-SEDAI-KENKYUSHO" }, { 0x7C7D41, "Jinmuyu Electronics Co., Ltd.", "JINMUYU-ELECTRONICS" }, { 0x7C822D, "Nortec", "NORTEC" }, { 0x7C8306, "Glen Dimplex Nordic as", "GLEN-DIMPLEX-NORDIC-AS" }, { 0x7C8D91, "Shanghai Hongzhuo Information Technology co.,LTD", "SHANGHAI-HONGZHUO-INFORMATION" }, { 0x7C8EE4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x7C94B2, "Philips Healthcare PCCI", "PHILIPS-HEALTHCARE-PCCI" }, { 0x7C95F3, "Cisco", "CISCO" }, { 0x7C9763, "Openmatics s.r.o.", "OPENMATICS-S-R-O" }, { 0x7C9A9B, "VSE valencia smart energy", "VSE-VALENCIA-SMART-ENERGY" }, { 0x7CA15D, "GN ReSound A/S", "GN-RESOUND-A/S" }, { 0x7CA29B, "D.SignT GmbH & Co. KG", "D-SIGNT" }, { 0x7CA61D, "MHL, LLC", "MHL-LLC" }, { 0x7CACB2, "Bosch Software Innovations GmbH", "BOSCH-SOFTWARE-INNOVATIONS" }, { 0x7CAD74, "Cisco", "CISCO" }, { 0x7CB03E, "OSRAM GmbH", "OSRAM" }, { 0x7CB21B, "Cisco SPVTG", "CISCO-SPVTG" }, { 0x7CB232, "TCL King High Frequency EI,Co.,LTD", "TCL-KING-HIGH-FREQUENCY-EI" }, { 0x7CB542, "ACES Technology", "ACES" }, { 0x7CB733, "ASKEY COMPUTER CORP", "ASKEY" }, { 0x7CB77B, "Paradigm Electronics Inc", "PARADIGM-ELECTRONICS" }, { 0x7CBB6F, "Cosco Electronics Co., Ltd.", "COSCO-ELECTRONICS" }, { 0x7CBD06, "AE REFUsol", "AE-REFUSOL" }, { 0x7CBF88, "Mobilicom LTD", "MOBILICOM" }, { 0x7CBFB1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x7CC3A1, "Apple", "APPLE" }, { 0x7CC537, "Apple", "APPLE" }, { 0x7CC8AB, "Acro Associates, Inc.", "ACRO-ASSOCIATES" }, { 0x7CC8D0, "TIANJIN YAAN TECHNOLOGY CO., LTD.", "TIANJIN-YAAN" }, { 0x7CC8D7, "Damalisk", "DAMALISK" }, { 0x7CCB0D, "Antaira Technologies, LLC", "ANTAIRA-TECHNOLOGIES-LLC" }, { 0x7CCD11, "MS-Magnet", "MS-MAGNET" }, { 0x7CCD3C, "Guangzhou Juzing Technology Co., Ltd", "GUANGZHOU-JUZING" }, { 0x7CCFCF, "Shanghai SEARI Intelligent System Co., Ltd", "SHANGHAI-SEARI-INTELLIGENT-SYSTEM" }, { 0x7CD1C3, "Apple", "APPLE" }, { 0x7CD762, "Freestyle Technology Pty Ltd", "FREESTYLE-PTY" }, { 0x7CD844, "Enmotus Inc", "ENMOTUS" }, { 0x7CD9FE, "New Cosmos Electric Co., Ltd.", "NEW-COSMOS-ELECTRIC" }, { 0x7CDA84, "Dongnian Networks Inc.", "DONGNIAN-NETWORKS" }, { 0x7CDD11, "Chongqing MAS SCI&TECH.Co.,Ltd", "CHONGQING-MAS-SCI-TECH" }, { 0x7CDD20, "IOXOS Technologies S.A.", "IOXOS-TECHNOLOGIES" }, { 0x7CDD90, "Shenzhen Ogemray Technology Co., Ltd.", "SHENZHEN-OGEMRAY" }, { 0x7CE044, "NEON Inc", "NEON" }, { 0x7CE1FF, "Computer Performance, Inc. DBA Digital Loggers, Inc.", "PERFORMANCE-DBA-DIGITAL-LOGGERS" }, { 0x7CE56B, "ESEN Optoelectronics Technology Co.,Ltd.", "ESEN-OPTOELECTRONICS" }, { 0x7CE9D3, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x7CEBEA, "ASCT", "ASCT" }, { 0x7CED8D, "MICROSOFT", "MICROSOFT" }, { 0x7CEF18, "Creative Product Design Pty. Ltd.", "CREATIVE-PRODUCT-DESIGN-PTY" }, { 0x7CEF8A, "Inhon International Ltd.", "INHON" }, { 0x7CF05F, "Apple", "APPLE" }, { 0x7CF098, "Bee Beans Technologies, Inc.", "BEE-BEANS-TECHNOLOGIES" }, { 0x7CF0BA, "Linkwell Telesystems Pvt Ltd", "LINKWELL-TELESYSTEMS-PVT" }, { 0x7CF429, "NUUO Inc.", "NUUO" }, { 0x7CFADF, "Apple", "APPLE" }, { 0x7CFE28, "Salutron Inc.", "SALUTRON" }, { 0x80000B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x800010, "ATT BELL LABORATORIES", "ATT-BELL-LABORATORIES" }, { 0x8005DF, "Montage Technology Group Limited", "MONTAGE-GROUP" }, { 0x8007A2, "Esson Technology Inc.", "ESSON" }, { 0x800A06, "COMTEC co.,ltd", "COMTEC" }, { 0x801440, "Sunlit System Technology Corp", "SUNLIT-SYSTEM" }, { 0x8016B7, "Brunel University", "BRUNEL-UNIVERSITY" }, { 0x80177D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x8018A7, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0x801DAA, "Avaya Inc", "AVAYA" }, { 0x801F02, "Edimax Technology Co. Ltd.", "EDIMAX" }, { 0x8020AF, "Trade FIDES, a.s.", "TRADE-FIDES-A-S" }, { 0x802275, "Beijing Beny Wave Technology Co Ltd", "BEIJING-BENY-WAVE" }, { 0x802AFA, "Germaneers GmbH", "GERMANEERS" }, { 0x802DE1, "Solarbridge Technologies", "SOLARBRIDGE-TECHNOLOGIES" }, { 0x802E14, "azeti Networks AG", "AZETI-NETWORKS" }, { 0x802FDE, "Zurich Instruments AG", "ZURICH-INSTRUMENTS" }, { 0x803457, "OT Systems Limited", "OT" }, { 0x8038FD, "LeapFrog Enterprises, Inc.", "LEAPFROG-ENTERPRISES" }, { 0x8039E5, "PATLITE CORPORATION", "PATLITE" }, { 0x803B9A, "ghe-ces electronic ag", "GHE-CES" }, { 0x803F5D, "Winstars Technology Ltd", "WINSTARS" }, { 0x803FD6, "bytes at work AG", "BYTES-AT-WORK" }, { 0x80427C, "Adolf Tedsen GmbH & Co. KG", "ADOLF-TEDSEN" }, { 0x804731, "Packet Design, Inc.", "PACKET-DESIGN" }, { 0x8048A5, "SICHUAN TIANYI COMHEART TELECOM CO.,LTD", "SICHUAN-TIANYI-COMHEART-TELECOM" }, { 0x804971, "Apple", "APPLE" }, { 0x804B20, "Ventilation Control", "VENTILATION-CONTROL" }, { 0x804F58, "ThinkEco, Inc.", "THINKECO" }, { 0x80501B, "Nokia Corporation", "NOKIA" }, { 0x8056F2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x805719, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8058C5, "NovaTec Kommunikationstechnik GmbH", "NOVATEC-KOMMUNIKATIONSTECHNIK" }, { 0x806007, "RIM", "RIM" }, { 0x806459, "Nimbus Inc.", "NIMBUS" }, { 0x8065E9, "BenQ Corporation", "BENQ" }, { 0x806629, "Prescope Technologies CO.,LTD.", "PRESCOPE-TECHNOLOGIES" }, { 0x806C8B, "KAESER KOMPRESSOREN AG", "KAESER-KOMPRESSOREN" }, { 0x806CBC, "NET New Electronic Technology GmbH", "NET-NEW" }, { 0x80711F, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x807693, "Newag SA", "NEWAG" }, { 0x8079AE, "ShanDong Tecsunrise Co.,Ltd", "SHANDONG-TECSUNRISE" }, { 0x807A7F, "ABB Genway Xiamen Electrical Equipment CO., LTD", "ABB-GENWAY-XIAMEN-ELECTRICAL-EQUIPMENT" }, { 0x807B1E, "Corsair Components", "CORSAIR-COMPONENTS" }, { 0x807D1B, "Neosystem Co. Ltd.", "NEOSYSTEM" }, { 0x807DE3, "Chongqing Sichuan Instrument Microcircuit Co.LTD.", "CHONGQING-SICHUAN-INSTRUMENT-MICROCIRCUIT" }, { 0x8081A5, "TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd", "TONGQING-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0x808287, "ATCOM Technology Co.Ltd.", "ATCOM" }, { 0x808698, "Netronics Technologies Inc.", "NETRONICS-TECHNOLOGIES" }, { 0x8086F2, "Intel Corporate", "INTEL-CORPORATE" }, { 0x808B5C, "Shenzhen Runhuicheng Technology Co., Ltd", "SHENZHEN-RUNHUICHENG" }, { 0x80912A, "Lih Rong electronic Enterprise Co., Ltd.", "LIH-RONG" }, { 0x8091C0, "AgileMesh, Inc.", "AGILEMESH" }, { 0x80929F, "Apple", "APPLE" }, { 0x809393, "Xapt GmbH", "XAPT" }, { 0x80946C, "TOKYO RADAR CORPORATION", "TOKYO-RADAR" }, { 0x8096B1, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x80971B, "Altenergy Power System,Inc.", "ALTENERGY-POWER-SYSTEM" }, { 0x809B20, "Intel Corporate", "INTEL-CORPORATE" }, { 0x80A1D7, "Shanghai DareGlobal Technologies Co.,Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x80AAA4, "USAG", "USAG" }, { 0x80B219, "ELEKTRON TECHNOLOGY UK LIMITED", "ELEKTRON-UK" }, { 0x80B289, "Forworld Electronics Ltd.", "FORWORLD-ELECTRONICS" }, { 0x80B32A, "Alstom Grid", "ALSTOM-GRID" }, { 0x80B686, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x80B95C, "ELFTECH Co., Ltd.", "ELFTECH" }, { 0x80BAAC, "TeleAdapt Ltd", "TELEADAPT" }, { 0x80BAE6, "Neets", "NEETS" }, { 0x80BBEB, "Satmap Systems Ltd", "SATMAP" }, { 0x80C16E, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x80C63F, "Remec Broadband Wireless , LLC", "REMEC-BROADBAND-WIRELESS-LLC" }, { 0x80C6AB, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x80C6CA, "Endian s.r.l.", "ENDIAN-S-R-L" }, { 0x80C862, "Openpeak, Inc", "OPENPEAK" }, { 0x80CEB1, "Theissen Training Systems GmbH", "THEISSEN-TRAINING" }, { 0x80CF41, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x80D019, "Embed, Inc", "EMBED" }, { 0x80D18B, "Hangzhou I'converge Technology Co.,Ltd", "HANGZHOU-I-CONVERGE" }, { 0x80D733, "QSR Automations, Inc.", "QSR-AUTOMATIONS" }, { 0x80DB31, "Power Quotient International Co., Ltd.", "POWER-QUOTIENT" }, { 0x80EA96, "Apple", "APPLE" }, { 0x80EE73, "Shuttle Inc.", "SHUTTLE" }, { 0x80F25E, "Kyynel", "KYYNEL" }, { 0x80F593, "IRCO Sistemas de Telecomunicación S.A.", "IRCO-SISTEMAS-DE-TELECOMUNICACIóN" }, { 0x80F62E, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0x80FA5B, "CLEVO CO.", "CLEVO" }, { 0x80FB06, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x80FFA8, "UNIDIS", "UNIDIS" }, { 0x8400D2, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x840B2D, "SAMSUNG ELECTRO-MECHANICS CO., LTD", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x840F45, "Shanghai GMT Digital Technologies Co., Ltd", "SHANGHAI-GMT-DIGITAL-TECHNOLOGIES" }, { 0x841715, "GP Electronics (HK) Ltd.", "GP-ELECTRONICS-HK" }, { 0x841888, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x841B38, "Shenzhen Excelsecu Data Technology Co.,Ltd", "SHENZHEN-EXCELSECU-DATA" }, { 0x841B5E, "NETGEAR", "NETGEAR" }, { 0x841E26, "KERNEL-I Co.,LTD", "KERNEL-I" }, { 0x842141, "Shenzhen Ginwave Technologies Ltd.", "SHENZHEN-GINWAVE-TECHNOLOGIES" }, { 0x84248D, "Motorola Solutions Inc", "MOTOROLA-SOLUTIONS" }, { 0x84253F, "Silex Technology, Inc", "SILEX" }, { 0x8425A4, "Tariox Limited", "TARIOX" }, { 0x8425DB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84262B, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 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" }, { 0x842914, "EMPORIA TELECOM Produktions- und VertriebsgesmbH & Co KG", "EMPORIA-TELECOM-PRODUKTIONS--UND-VERTRIEBSGESMBH" }, { 0x842999, "Apple", "APPLE" }, { 0x842B2B, "Dell Inc.", "DELL" }, { 0x842B50, "Huria Co.,Ltd.", "HURIA" }, { 0x842BBC, "Modelleisenbahn GmbH", "MODELLEISENBAHN" }, { 0x842F75, "Innokas Group", "INNOKAS-GROUP" }, { 0x8430E5, "SkyHawke Technologies, LLC", "SKYHAWKE-TECHNOLOGIES-LLC" }, { 0x843497, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x843611, "hyungseul publishing networks", "HYUNGSEUL-PUBLISHING-NETWORKS" }, { 0x843835, "Apple", "APPLE" }, { 0x843A4B, "Intel Corporate", "INTEL-CORPORATE" }, { 0x843F4E, "Tri-Tech Manufacturing, Inc.", "TRI-TECH-MANUFACTURING" }, { 0x844823, "WOXTER TECHNOLOGY Co. Ltd", "WOXTER" }, { 0x844915, "vArmour Networks, Inc.", "VARMOUR-NETWORKS" }, { 0x844BF5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x844F03, "Ablelink Electronics Ltd", "ABLELINK-ELECTRONICS" }, { 0x845181, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x84569C, "Coho Data, Inc.,", "COHO-DATA" }, { 0x845787, "DVR C&C Co., Ltd.", "DVR-C-C" }, { 0x845C93, "Chabrier Services", "CHABRIER-SERVICES" }, { 0x845DD7, "Shenzhen Netcom Electronics Co.,Ltd", "SHENZHEN-NETCOM-ELECTRONICS" }, { 0x846223, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0x8462A6, "EuroCB (Phils), Inc.", "EUROCB-PHILS" }, { 0x846AED, "Wireless Tsukamoto.,co.LTD", "WIRELESS-TSUKAMOTO" }, { 0x846EB1, "Park Assist LLC", "PARK-ASSIST-LLC" }, { 0x84742A, "zte corporation", "ZTE" }, { 0x847616, "Addat S.r.o.", "ADDAT-S-R-O" }, { 0x8478AC, "Cisco", "CISCO" }, { 0x847A88, "HTC Corporation", "HTC" }, { 0x847E40, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x8482F4, "Beijing Huasun Unicreate Technology Co., Ltd", "BEIJING-HUASUN-UNICREATE" }, { 0x848336, "Newrun", "NEWRUN" }, { 0x848371, "Avaya, Inc", "AVAYA" }, { 0x848433, "Paradox Engineering SA", "PARADOX-ENGINEERING" }, { 0x848506, "Apple", "APPLE" }, { 0x848D84, "Rajant Corporation", "RAJANT" }, { 0x848E96, "Embertec Pty Ltd", "EMBERTEC-PTY" }, { 0x848F69, "Dell Inc.", "DELL" }, { 0x849000, "Arnold & Richter Cine Technik", "ARNOLD-RICHTER-CINE-TECHNIK" }, { 0x8497B8, "Memjet Inc.", "MEMJET" }, { 0x849CA6, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x849DC5, "Centera Photonics Inc.", "CENTERA-PHOTONICS" }, { 0x84A6C8, "Intel Corporate", "INTEL-CORPORATE" }, { 0x84A783, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x84A8E4, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0x84A991, "Cyber Trans Japan Co.,Ltd.", "CYBER-TRANS-JAPAN" }, { 0x84ACA4, "Beijing Novel Super Digital TV Technology Co., Ltd", "BEIJING-NOVEL-SUPER-DIGITAL-TV" }, { 0x84AF1F, "Beat System Service Co,. Ltd.", "BEAT-SYSTEM-SERVICE" }, { 0x84C2E4, "Jiangsu Qinheng Co., Ltd.", "JIANGSU-QINHENG" }, { 0x84C727, "Gnodal Ltd", "GNODAL" }, { 0x84C7A9, "C3PO S.A.", "C3PO" }, { 0x84C8B1, "Incognito Software Inc.", "INCOGNITO-SOFTWARE" }, { 0x84C9B2, "D-Link International", "D-LINK" }, { 0x84D32A, "IEEE 1905.1", "IEEE-1905-1" }, { 0x84D9C8, "Unipattern Co.,", "UNIPATTERN" }, { 0x84DB2F, "Sierra Wireless Inc", "SIERRA-WIRELESS" }, { 0x84DD20, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x84DE3D, "Crystal Vision Ltd", "CRYSTAL-VISION" }, { 0x84DF0C, "NET2GRID BV", "NET2GRID" }, { 0x84E4D9, "Shenzhen NEED technology Ltd.", "SHENZHEN-NEED" }, { 0x84E629, "Bluwan SA", "BLUWAN" }, { 0x84E714, "Liang Herng Enterprise,Co.Ltd.", "LIANG-HERNG" }, { 0x84EA99, "Vieworks", "VIEWORKS" }, { 0x84ED33, "BBMC Co.,Ltd", "BBMC" }, { 0x84F493, "OMS spol. s.r.o.", "OMS-SPOL-S-R-O" }, { 0x84F64C, "Cross Point BV", "CROSS-POINT" }, { 0x84FCFE, "Apple", "APPLE" }, { 0x84FE9E, "RTC Industries, Inc.", "RTC-INDUSTRIES" }, { 0x880355, "Arcadyan Technology Corp.", "ARCADYAN" }, { 0x880905, "MTMCommunications", "MTMCOMMUNICATIONS" }, { 0x881036, "Panodic(ShenZhen) Electronics Limted", "PANODIC-SHENZHEN-ELECTRONICS-LIMTED" }, { 0x88124E, "Qualcomm Atheros", "QUALCOMM-ATHEROS" }, { 0x88142B, "Protonic Holland", "PROTONIC-HOLLAND" }, { 0x881544, "Meraki, Inc.", "MERAKI" }, { 0x8818AE, "Tamron Co., Ltd", "TAMRON" }, { 0x881FA1, "Apple", "APPLE" }, { 0x882012, "LMI Technologies", "LMI-TECHNOLOGIES" }, { 0x8821E3, "Nebusens, S.L.", "NEBUSENS-S-L" }, { 0x882364, "Watchnet DVR Inc", "WATCHNET-DVR" }, { 0x8823FE, "TTTech Computertechnik AG", "TTTECH-COMPUTERTECHNIK" }, { 0x88252C, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x882E5A, "storONE", "STORONE" }, { 0x88308A, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0x88329B, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x883314, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x88354C, "Transics", "TRANSICS" }, { 0x883612, "SRC Computers, LLC", "SRC-COMPUTERS-LLC" }, { 0x8841C1, "ORBISAT DA AMAZONIA IND E AEROL SA", "ORBISAT-DA-AMAZONIA-IND-E-AEROL" }, { 0x8841FC, "AirTies Wireless Netowrks", "AIRTIES-WIRELESS-NETOWRKS" }, { 0x8843E1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x8844F6, "Nokia Corporation", "NOKIA" }, { 0x88462A, "Telechips Inc.", "TELECHIPS" }, { 0x884B39, "Siemens AG, Healthcare Sector", "SIEMENS-HEALTHCARE-SECTOR" }, { 0x8851FB, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x88532E, "Intel Corporate", "INTEL-CORPORATE" }, { 0x885395, "Apple", "APPLE" }, { 0x8853D4, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x88576D, "XTA Electronics Ltd", "XTA-ELECTRONICS" }, { 0x885A92, "Cisco", "CISCO" }, { 0x885C4F, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x88615A, "Siano Mobile Silicon Ltd.", "SIANO-MOBILE-SILICON" }, { 0x88685C, "Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd", "SHENZHEN-CHUANGDAO-PERPETUAL-ETERNAL" }, { 0x886B76, "CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD", "CHINA-HOPEFUL-GROUP-HOPEFUL-ELECTRIC" }, { 0x887398, "K2E Tekpoint", "K2E-TEKPOINT" }, { 0x887556, "Cisco", "CISCO" }, { 0x88789C, "Game Technologies SA", "GAME-TECHNOLOGIES" }, { 0x888603, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0x8886A0, "Simton Technologies, Ltd.", "SIMTON-TECHNOLOGIES" }, { 0x888717, "CANON INC.", "CANON" }, { 0x8887DD, "DarbeeVision Inc.", "DARBEEVISION" }, { 0x888914, "All Components Incorporated", "ALL-COMPONENTS-INCORPORATED" }, { 0x888964, "GSI Electronics Inc.", "GSI-ELECTRONICS" }, { 0x888B5D, "Storage Appliance Corporation", "STORAGE-APPLIANCE" }, { 0x888C19, "Brady Corp Asia Pacific Ltd", "BRADY-ASIA-PACIFIC" }, { 0x889166, "Viewcooper Corp.", "VIEWCOOPER" }, { 0x8891DD, "Racktivity", "RACKTIVITY" }, { 0x889471, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x8894F9, "Gemicom Technology, Inc.", "GEMICOM" }, { 0x8895B9, "Unified Packet Systems Crop", "UNIFIED-PACKET-CROP" }, { 0x889676, "TTC MARCONI s.r.o.", "TTC-MARCONI-S-R-O" }, { 0x8897DF, "Entrypass Corporation Sdn. Bhd.", "ENTRYPASS-SDN-BHD" }, { 0x889821, "TERAON", "TERAON" }, { 0x889B39, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x889CA6, "BTB Korea INC", "BTB-KOREA" }, { 0x889FFA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x88A3CC, "Amatis Controls", "AMATIS-CONTROLS" }, { 0x88A5BD, "QPCOM INC.", "QPCOM" }, { 0x88A73C, "Ragentek Technology Group", "RAGENTEK-GROUP" }, { 0x88ACC1, "Generiton Co., Ltd.", "GENERITON" }, { 0x88AE1D, "COMPAL INFORMATION(KUNSHAN)CO.,LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0x88B168, "Delta Control GmbH", "DELTA-CONTROL" }, { 0x88B627, "Gembird Europe BV", "GEMBIRD-EUROPE" }, { 0x88BA7F, "Qfiednet Co., Ltd.", "QFIEDNET" }, { 0x88BFD5, "Simple Audio Ltd", "SIMPLE-AUDIO" }, { 0x88C36E, "Beijing Ereneben lnformation Technology Limited", "BEIJING-ERENEBEN-LNFORMATION" }, { 0x88C626, "Logitech - Ultimate Ears", "LOGITECH---ULTIMATE-EARS" }, { 0x88C663, "Apple", "APPLE" }, { 0x88CB87, "Apple", "APPLE" }, { 0x88D7BC, "DEP Company", "DEP-COMPANY" }, { 0x88D962, "Canopus Systems US LLC", "CANOPUS-US-LLC" }, { 0x88DC96, "SENAO Networks, Inc.", "SENAO-NETWORKS" }, { 0x88DD79, "Voltaire", "VOLTAIRE" }, { 0x88E0A0, "Shenzhen VisionSTOR Technologies Co., Ltd", "SHENZHEN-VISIONSTOR-TECHNOLOGIES" }, { 0x88E0F3, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0x88E3AB, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x88E712, "Whirlpool Corporation", "WHIRLPOOL" }, { 0x88E7A6, "iKnowledge Integration Corp.", "IKNOWLEDGE-INTEGRATION" }, { 0x88E917, "Tamaggo", "TAMAGGO" }, { 0x88ED1C, "Cudo Communication Co., Ltd.", "CUDO-COMMUNICATION" }, { 0x88F077, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x88F488, "cellon communications technology(shenzhen)Co.,Ltd.", "CELLON-COMMUNICATION-SHENZHEN" }, { 0x88F490, "Jetmobile Pte Ltd", "JETMOBILE-PTE" }, { 0x88F7C7, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x88FD15, "LINEEYE CO., LTD", "LINEEYE" }, { 0x88FED6, "ShangHai WangYong Software Co., Ltd.", "SHANGHAI-WANGYONG-SOFTWARE" }, { 0x8C006D, "Apple", "APPLE" }, { 0x8C04FF, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0x8C078C, "FLOW DATA INC", "FLOW-DATA" }, { 0x8C088B, "Remote Solution", "REMOTE-SOLUTION" }, { 0x8C09F4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x8C0C90, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0x8C0CA3, "Amper", "AMPER" }, { 0x8C0EE3, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD.", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0x8C11CB, "ABUS Security-Center GmbH & Co. KG", "ABUS-SECURITY-CENTER" }, { 0x8C1F94, "RF Surgical System Inc.", "RF-SURGICAL-SYSTEM" }, { 0x8C210A, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x8C271D, "QuantHouse", "QUANTHOUSE" }, { 0x8C278A, "Vocollect Inc", "VOCOLLECT" }, { 0x8C2937, "Apple", "APPLE" }, { 0x8C2DAA, "Apple", "APPLE" }, { 0x8C2F39, "IBA Dosimetry GmbH", "IBA-DOSIMETRY" }, { 0x8C3330, "EmFirst Co., Ltd.", "EMFIRST" }, { 0x8C3AE3, "LG Electronics", "LG-ELECTRONICS" }, { 0x8C3C07, "Skiva Technologies, Inc.", "SKIVA-TECHNOLOGIES" }, { 0x8C3C4A, "NAKAYO TELECOMMUNICATIONS,INC.", "NAKAYO-TELECOMMUNICATIONS" }, { 0x8C41F2, "RDA Technologies Ltd.", "RDA-TECHNOLOGIES" }, { 0x8C4435, "Shanghai BroadMobi Communication Technology Co., Ltd.", "SHANGHAI-BROADMOBI-COMMUNICATION" }, { 0x8C4AEE, "GIGA TMS INC", "GIGA-TMS" }, { 0x8C4B59, "3D Imaging & Simulations Corp", "3D-IMAGING-SIMULATIONS" }, { 0x8C4CDC, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0x8C4DB9, "Unmonday Ltd", "UNMONDAY" }, { 0x8C4DEA, "Cerio Corporation", "CERIO" }, { 0x8C5105, "Shenzhen ireadygo Information Technology CO.,LTD.", "SHENZHEN-IREADYGO-INFORMATION" }, { 0x8C53F7, "A&D ENGINEERING CO., LTD.", "A-D-ENGINEERING" }, { 0x8C541D, "LGE", "LGE" }, { 0x8C569D, "Imaging Solutions Group", "IMAGING-SOLUTIONS-GROUP" }, { 0x8C56C5, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x8C57FD, "LVX Western", "LVX-WESTERN" }, { 0x8C5877, "Apple", "APPLE" }, { 0x8C598B, "C Technologies AB", "C-TECHNOLOGIES-AB" }, { 0x8C5AF0, "Exeltech Solar Products", "EXELTECH-SOLAR-PRODUCTS" }, { 0x8C5CA1, "d-broad,INC", "D-BROAD" }, { 0x8C5FDF, "Beijing Railway Signal Factory", "BEIJING-RAILWAY-SIGNAL-FACTORY" }, { 0x8C604F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x8C640B, "Beyond Devices d.o.o.", "BEYOND-DEVICES-D-O-O" }, { 0x8C6422, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x8C6878, "Nortek-AS", "NORTEK-AS" }, { 0x8C6AE4, "Viogem Limited", "VIOGEM" }, { 0x8C705A, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8C71F8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C736E, "Fujitsu Limited", "FUJITSU" }, { 0x8C76C1, "Goden Tech Limited", "GODEN-TECH" }, { 0x8C7712, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x8C7716, "LONGCHEER TELECOMMUNICATION LIMITED", "LONGCHEER-TELECOMMUNICATION" }, { 0x8C7B9D, "Apple", "APPLE" }, { 0x8C7CB5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x8C7CFF, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0x8C7EB3, "Lytro, Inc.", "LYTRO" }, { 0x8C82A8, "Insigma Technology Co.,Ltd", "INSIGMA" }, { 0x8C8401, "PRIVATE", "PRIVATE" }, { 0x8C89A5, "Micro-Star INT'L CO., LTD", "MICRO-STAR" }, { 0x8C8A6E, "ESTUN AUTOMATION TECHNOLOY CO., LTD", "ESTUN-AUTOMATION-TECHNOLOY" }, { 0x8C8E76, "taskit GmbH", "TASKIT" }, { 0x8C90D3, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x8C9236, "Aus.Linx Technology Co., Ltd.", "AUS-LINX" }, { 0x8C94CF, "Encell Technology, Inc.", "ENCELL" }, { 0x8CA048, "Beijing NeTopChip Technology Co.,LTD", "BEIJING-NETOPCHIP" }, { 0x8CA982, "Intel Corporate", "INTEL-CORPORATE" }, { 0x8CAE4C, "Plugable Technologies", "PLUGABLE-TECHNOLOGIES" }, { 0x8CAE89, "Y-cam Solutions Ltd", "Y-CAM-SOLUTIONS" }, { 0x8CB64F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x8CB7F7, "Shenzhen UniStrong Science & Technology Co., Ltd", "SHENZHEN-UNISTRONG-SCIENCE" }, { 0x8CB82C, "IPitomy Communications", "IPITOMY-COMMUNICATION" }, { 0x8CB864, "AcSiP Technology Corp.", "ACSIP" }, { 0x8CBEBE, "Xiaomi Technology Co.,Ltd", "XIAOMI" }, { 0x8CC121, "Panasonic Corporation AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0x8CC5E1, "ShenZhen Konka Telecommunication Technology Co.,Ltd", "SHENZHEN-KONKA-TELECOMMUNICATION" }, { 0x8CC7AA, "Radinet Communications Inc.", "RADINET-COMMUNICATION" }, { 0x8CC7D0, "zhejiang ebang communication co.,ltd", "ZHEJIANG-EBANG-COMMUNICATION" }, { 0x8CC8CD, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0x8CCDA2, "ACTP, Inc.", "ACTP" }, { 0x8CCDE8, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x8CCF5C, "BEFEGA GmbH", "BEFEGA" }, { 0x8CD17B, "CG Mobile", "CG-MOBILE" }, { 0x8CD3A2, "VisSim AS", "VISSIM-AS" }, { 0x8CD628, "Ikor Metering", "IKOR-METERING" }, { 0x8CDB25, "ESG Solutions", "ESG-SOLUTIONS" }, { 0x8CDD8D, "Wifly-City System Inc.", "WIFLY-CITY-SYSTEM" }, { 0x8CDE52, "ISSC Technologies Corp.", "ISSC-TECHNOLOGIES" }, { 0x8CDE99, "Comlab Inc.", "COMLAB" }, { 0x8CE081, "zte corporation", "ZTE" }, { 0x8CE748, "PRIVATE", "PRIVATE" }, { 0x8CE7B3, "Sonardyne International Ltd", "SONARDYNE" }, { 0x8CEEC6, "Precepscion Pty. Ltd.", "PRECEPSCION-PTY" }, { 0x8CF945, "Power Automation pte Ltd", "POWER-AUTOMATION-PTE" }, { 0x8CF9C9, "MESADA Technology Co.,Ltd.", "MESADA" }, { 0x8CFABA, "Apple", "APPLE" }, { 0x8CFDF0, "QUALCOMM Incorporated", "QUALCOMM-INCORPORATED" }, { 0x90004E, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90013B, "SAGEMCOM", "SAGEMCOM" }, { 0x90028A, "Shenzhen Shidean Legrand Electronic Products Co.,Ltd", "SHENZHEN-SHIDEAN-LEGRAND-PRODUCTS" }, { 0x9002A9, "ZHEJIANG DAHUA TECHNOLOGY CO.,LTD", "ZHEJIANG-DAHUA" }, { 0x9003B7, "PARROT", "PARROT" }, { 0x900917, "Far-sighted mobile", "FAR-SIGHTED-MOBILE" }, { 0x900A3A, "PSG Plastic Service GmbH", "PSG-PLASTIC-SERVICE" }, { 0x900D66, "Digimore Electronics Co., Ltd", "DIGIMORE-ELECTRONICS" }, { 0x900DCB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x90185E, "Apex Tool Group GmbH & Co OHG", "APEX-TOOL-GROUP-OHG" }, { 0x90187C, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x9018AE, "Shanghai Meridian Technologies, Co. Ltd.", "SHANGHAI-MERIDIAN-TECHNOLOGIES" }, { 0x901900, "SCS SA", "SCS" }, { 0x901ACA, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x901B0E, "Fujitsu Technology Solutions GmbH", "FUJITSU-SOLUTIONS" }, { 0x901D27, "zte corporation", "ZTE" }, { 0x901EDD, "GREAT COMPUTER CORPORATION", "GREAT" }, { 0x902083, "General Engine Management Systems Ltd.", "GENERAL-ENGINE-MANAGEMENT" }, { 0x902155, "HTC Corporation", "HTC" }, { 0x9027E4, "Apple", "APPLE" }, { 0x902B34, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x902E87, "LabJack", "LABJACK" }, { 0x9031CD, "Onyx Healthcare Inc.", "ONYX-HEALTHCARE" }, { 0x90342B, "Gatekeeper Systems, Inc.", "GATEKEEPER" }, { 0x9034FC, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x90356E, "Vodafone Omnitel N.V.", "VODAFONE-OMNITEL-N-V" }, { 0x9038DF, "Changzhou Tiannengbo System Co. Ltd.", "CHANGZHOU-TIANNENGBO-SYSTEM" }, { 0x903AA0, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x903CAE, "Yunnan KSEC Digital Technology Co.,Ltd.", "YUNNAN-KSEC-DIGITAL" }, { 0x903D5A, "Shenzhen Wision Technology Holding Limited", "SHENZHEN-WISION-HOLDING" }, { 0x903D6B, "Zicon Technology Corp.", "ZICON" }, { 0x903EAB, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x9046B7, "Vadaro Pte Ltd", "VADARO-PTE" }, { 0x904716, "RORZE CORPORATION", "RORZE" }, { 0x9049FA, "Intel Corporation", "INTEL" }, { 0x904CE5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x904E2B, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0x90507B, "Advanced PANMOBIL Systems GmbH & Co. KG", "ADVANCED-PANMOBIL" }, { 0x90513F, "Elettronica Santerno", "ELETTRONICA-SANTERNO" }, { 0x905446, "TES ELECTRONIC SOLUTIONS", "TES-SOLUTIONS" }, { 0x9055AE, "Ericsson, EAB/RWI/K", "ERICSSON-EAB/RWI/K" }, { 0x905682, "Lenbrook Industries Limited", "LENBROOK-INDUSTRIES" }, { 0x905692, "Autotalks Ltd.", "AUTOTALKS" }, { 0x9059AF, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x905F2E, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x905F8D, "modas GmbH", "MODAS" }, { 0x90610C, "Fida International (S) Pte Ltd", "FIDA-S-PTE" }, { 0x906717, "Alphion India Private Limited", "ALPHION-INDIA-PRIVATE" }, { 0x9067B5, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x9067F3, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x906DC8, "DLG Automação Industrial Ltda", "DLG-AUTOMAçãO-INDUSTRIAL-LTDA" }, { 0x906EBB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x907025, "Garea Microsys Co.,Ltd.", "GAREA-MICROSYS" }, { 0x907240, "Apple", "APPLE" }, { 0x907990, "Benchmark Electronics Romania SRL", "BENCHMARK-ELECTRONICS-ROMANIA-SRL" }, { 0x907A0A, "Gebr. Bode GmbH & Co KG", "GEBR-BODE" }, { 0x907A28, "Beijing Morncloud Information And Technology Co. Ltd.", "BEIJING-MORNCLOUD-INFORMATION-AND" }, { 0x907AF1, "SNUPI Technologies", "SNUPI-TECHNOLOGIES" }, { 0x907F61, "Chicony Electronics Co., Ltd.", "CHICONY-ELECTRONICS" }, { 0x908260, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0x90837A, "General Electric Water & Process Technologies", "GENERAL-ELECTRIC-WATER-PROCESS-TECHNOLOGIES" }, { 0x90840D, "Apple", "APPLE" }, { 0x9088A2, "IONICS TECHNOLOGY ME LTDA", "IONICS-ME-LTDA" }, { 0x908C44, "H.K ZONGMU TECHNOLOGY CO., LTD.", "H-K-ZONGMU" }, { 0x908D1D, "GH Technologies", "GH-TECHNOLOGIES" }, { 0x908F93, "MakerBot Industries", "MAKERBOT-INDUSTRIES" }, { 0x908FCF, "UNO System Co., Ltd", "UNO-SYSTEM" }, { 0x90903C, "TRISON TECHNOLOGY CORPORATION", "TRISON" }, { 0x909060, "RSI VIDEO TECHNOLOGIES", "RSI-VIDEO-TECHNOLOGIES" }, { 0x9092B4, "Diehl BGT Defence GmbH & Co. KG", "DIEHL-BGT-DEFENCE" }, { 0x9094E4, "D-Link International", "D-LINK" }, { 0x909916, "ELVEES NeoTek OJSC", "ELVEES-NEOTEK-OJSC" }, { 0x909DE0, "Newland Design + Assoc. Inc.", "NEWLAND-DESIGN-+-ASSOC" }, { 0x909F43, "Accutron Instruments Inc.", "ACCUTRON-INSTRUMENTS" }, { 0x90A2DA, "GHEO SA", "GHEO" }, { 0x90A4DE, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0x90A783, "JSW PACIFIC CORPORATION", "JSW-PACIFIC" }, { 0x90A7C1, "Pakedge Device and Software Inc.", "PAKEDGE-DEVICE-AND-SOFTWARE" }, { 0x90AC3F, "BrightSign LLC", "BRIGHTSIGN-LLC" }, { 0x90B11C, "Dell Inc.", "DELL" }, { 0x90B134, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x90B21F, "Apple", "APPLE" }, { 0x90B8D0, "Joyent, Inc.", "JOYENT" }, { 0x90B931, "Apple, Inc", "APPLE" }, { 0x90B97D, "Johnson Outdoors Marine Electronics d/b/a Minnkota", "JOHNSON-OUTDOORS-MARINE-ELECTRONICS-D/B/A-MINNKOTA" }, { 0x90C115, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0x90CC24, "Synaptics, Inc", "SYNAPTICS" }, { 0x90CF15, "Nokia Corporation", "NOKIA" }, { 0x90CF6F, "Dlogixs Co Ltd", "DLOGIXS" }, { 0x90CF7D, "Qingdao Hisense Electric Co.,Ltd.", "QINGDAO-HISENSE-ELECTRIC" }, { 0x90D11B, "Palomar Medical Technologies", "PALOMAR-MEDICAL-TECHNOLOGIES" }, { 0x90D74F, "Bookeen", "BOOKEEN" }, { 0x90D7EB, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x90D852, "Comtec Co., Ltd.", "COMTEC" }, { 0x90D92C, "HUG-WITSCHI AG", "HUG-WITSCHI" }, { 0x90DA4E, "AVANU", "AVANU" }, { 0x90DFB7, "s.m.s smart microwave sensors GmbH", "S-M-S-SMART-MICROWAVE-SENSORS" }, { 0x90E0F0, "Harman International", "HARMAN" }, { 0x90E2BA, "Intel Corporate", "INTEL-CORPORATE" }, { 0x90E6BA, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0x90EA60, "SPI Lasers Ltd", "SPI-LASERS" }, { 0x90F278, "Radius Gateway", "RADIUS-GATEWAY" }, { 0x90F3B7, "Kirisun Communications Co., Ltd.", "KIRISUN-COMMUNICATION" }, { 0x90F4C1, "Rand McNally", "RAND-MCNALLY" }, { 0x90F652, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x90F72F, "Phillips Machine & Welding Co., Inc.", "PHILLIPS-MACHINE-WELDING" }, { 0x90FB5B, "Avaya, Inc", "AVAYA" }, { 0x90FBA6, "Hon Hai Precision Ind.Co.Ltd", "HON-HAI-PRECISION-IND" }, { 0x90FF79, "Metro Ethernet Forum", "METRO-ETHERNET-FORUM" }, { 0x940070, "Nokia Corporation", "NOKIA" }, { 0x940149, "AutoHotBox", "AUTOHOTBOX" }, { 0x9401C2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x940B2D, "NetView Technologies(Shenzhen) Co., Ltd", "NETVIEW-TECHNOLOGIES-SHENZHEN" }, { 0x940BD5, "Himax Technologies, Inc", "HIMAX-TECHNOLOGIES" }, { 0x940C6D, "TP-LINK Technologies Co.,Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0x94103E, "Belkin International Inc.", "BELKIN" }, { 0x9411DA, "ITF Fröschl GmbH", "ITF-FRöSCHL" }, { 0x941673, "Point Core SARL", "POINT-CORE-SARL" }, { 0x941D1C, "TLab West Systems AB", "TLAB-WEST-AB" }, { 0x942053, "Nokia Corporation", "NOKIA" }, { 0x942197, "Stalmart Technology Limited", "STALMART" }, { 0x94236E, "Shenzhen Junlan Electronic Ltd", "SHENZHEN-JUNLAN" }, { 0x942E17, "Schneider Electric Canada Inc", "SCHNEIDER-ELECTRIC-CANADA" }, { 0x942E63, "Finsécur", "FINSéCUR" }, { 0x94319B, "Alphatronics BV", "ALPHATRONICS" }, { 0x9433DD, "Taco Electronic Solutions, Inc.", "TACO-SOLUTIONS" }, { 0x94350A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9436E0, "Sichuan Bihong Broadcast & Television New Technologies Co.,Ltd", "SICHUAN-BIHONG-BROADCAST-AMP-TELEVISION-NEW-TECHNOLOGIES" }, { 0x9439E5, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x943AF0, "Nokia Corporation", "NOKIA" }, { 0x943BB1, "KAONMEDIA", "KAONMEDIA" }, { 0x9440A2, "Anywave Communication Technologies, Inc.", "ANYWAVE-COMMUNICATION-TECHNOLOGIES" }, { 0x944444, "LG Innotek", "LG-INNOTEK" }, { 0x944452, "Belkin International Inc.", "BELKIN" }, { 0x944696, "BaudTec Corporation", "BAUDTEC" }, { 0x944A09, "BitWise Controls", "BITWISE-CONTROLS" }, { 0x945047, "Rechnerbetriebsgruppe", "RECHNERBETRIEBSGRUPPE" }, { 0x945103, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x94592D, "EKE Building Technology Systems Ltd", "EKE-BUILDING" }, { 0x945B7E, "TRILOBIT LTDA.", "TRILOBIT-LTDA" }, { 0x946124, "Pason Systems", "PASON" }, { 0x9463D1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9471AC, "TCT Mobile Limited", "TCT-MOBILE" }, { 0x94756E, "QinetiQ North America", "QINETIQ-NORTH-AMERICA" }, { 0x947C3E, "Polewall Norge AS", "POLEWALL-NORGE-AS" }, { 0x9481A4, "Azuray Technologies", "AZURAY-TECHNOLOGIES" }, { 0x94857A, "Evantage Industries Corp", "EVANTAGE-INDUSTRIES" }, { 0x9486D4, "Surveillance Pro Corporation", "SURVEILLANCE-PRO" }, { 0x94877C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x948854, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x948B03, "EAGET Innovation and Technology Co., Ltd.", "EAGET-INNOVATION-AND" }, { 0x948D50, "Beamex Oy Ab", "BEAMEX-OY-AB" }, { 0x948FEE, "Hughes Telematics, Inc.", "HUGHES-TELEMATICS" }, { 0x949426, "Apple", "APPLE" }, { 0x9498A2, "Shanghai LISTEN TECH.LTD", "SHANGHAI-LISTEN-TECH" }, { 0x949BFD, "Trans New Technology, Inc.", "TRANS-NEW" }, { 0x949C55, "Alta Data Technologies", "ALTA-DATA-TECHNOLOGIES" }, { 0x949FB4, "ChengDu JiaFaAnTai Technology Co.,Ltd", "CHENGDU-JIAFAANTAI" }, { 0x94A7BC, "BodyMedia, Inc.", "BODYMEDIA" }, { 0x94AAB8, "Joview(Beijing) Technology Co. Ltd.", "JOVIEW-BEIJING" }, { 0x94ACCA, "trivum technologies GmbH", "TRIVUM-TECHNOLOGIES" }, { 0x94AE61, "Alcatel Lucent", "ALCATEL-LUCENT" }, { 0x94B8C5, "RuggedCom Inc.", "RUGGEDCOM" }, { 0x94B9B4, "Aptos Technology", "APTOS" }, { 0x94BA31, "Visiontec da Amazônia Ltda.", "VISIONTEC-DA-AMAZôNIA-LTDA" }, { 0x94BA56, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0x94BF1E, "eflow Inc. / Smart Device Planning and Development Division", "EFLOW-/-SMART-DEVICE-PLANNING-AND-DEVELOPMENT-DIVISION" }, { 0x94C150, "2Wire Inc", "2WIRE" }, { 0x94C3E4, "SCA Schucker Gmbh & Co KG", "SCA-SCHUCKER" }, { 0x94C4E9, "PowerLayer Microsystems HongKong Limited", "POWERLAYER-MICROSYSTEMS-HONGKONG" }, { 0x94C6EB, "NOVA electronics, Inc.", "NOVA-ELECTRONICS" }, { 0x94C7AF, "Raylios Technology", "RAYLIOS" }, { 0x94C962, "Teseq AG", "TESEQ" }, { 0x94CA0F, "Honeywell Analytics", "HONEYWELL-ANALYTICS" }, { 0x94CCB9, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x94CDAC, "Creowave Oy", "CREOWAVE-OY" }, { 0x94CE2C, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0x94D019, "Cydle Corp.", "CYDLE" }, { 0x94D723, "Shanghai DareGlobal Technologies Co., Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0x94D771, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x94D93C, "ENELPS", "ENELPS" }, { 0x94DB49, "SITCORP", "SITCORP" }, { 0x94DBC9, "Azurewave", "AZUREWAVE" }, { 0x94DD3F, "A+V Link Technologies, Corp.", "A+V-LINK-TECHNOLOGIES" }, { 0x94DE0E, "SmartOptics AS", "SMARTOPTICS-AS" }, { 0x94DE80, "GIGA-BYTE TECHNOLOGY CO.,LTD.", "GIGA-BYTE" }, { 0x94DF4E, "Wistron InfoComm(Kunshan)Co.,Ltd.", "WISTRON-INFOCOMM-KUNSHAN" }, { 0x94DF58, "IJ Electron CO.,Ltd.", "IJ-ELECTRON" }, { 0x94E0D0, "HealthStream Taiwan Inc.", "HEALTHSTREAM-TAIWAN" }, { 0x94E226, "D. ORtiz Consulting, LLC", "D-ORTIZ-CONSULTING-LLC" }, { 0x94E711, "Xirka Dama Persada PT", "XIRKA-DAMA-PERSADA-PT" }, { 0x94E848, "FYLDE MICRO LTD", "FYLDE-MICRO" }, { 0x94E98C, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x94EB2C, "Google Inc.", "GOOGLE" }, { 0x94EBCD, "Research In Motion Limited", "RESEARCH-IN-MOTION" }, { 0x94F692, "Geminico co.,Ltd.", "GEMINICO" }, { 0x94F720, "Tianjin Deviser Electronics Instrument Co., Ltd", "TIANJIN-DEVISER-ELECTRONICS-INSTRUMENT" }, { 0x94FAE8, "Shenzhen Eycom Technology Co., Ltd", "SHENZHEN-EYCOM" }, { 0x94FBB2, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0x94FD1D, "WhereWhen Corp", "WHEREWHEN" }, { 0x94FD2E, "Shanghai Uniscope Technologies Co.,Ltd", "SHANGHAI-UNISCOPE-TECHNOLOGIES" }, { 0x94FEF4, "SAGEMCOM", "SAGEMCOM" }, { 0x980284, "Theobroma Systems GmbH", "THEOBROMA" }, { 0x9803A0, "ABB n.v. Power Quality Products", "ABB-N-V-POWER-QUALITY-PRODUCTS" }, { 0x9803D8, "Apple", "APPLE" }, { 0x980C82, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0x980D2E, "HTC Corporation", "HTC" }, { 0x980EE4, "PRIVATE", "PRIVATE" }, { 0x981094, "Shenzhen Vsun communication technology Co.,ltd", "SHENZHEN-VSUN-COMMUNICATION" }, { 0x98208E, "Definium Technologies", "DEFINIUM-TECHNOLOGIES" }, { 0x98262A, "Applied Research Associates, Inc", "APPLIED-RESEARCH-ASSOCIATES" }, { 0x98291D, "Jaguar de Mexico, SA de CV", "JAGUAR-DE-MEXICO-DE-CV" }, { 0x98293F, "Fujian Start Computer Equipment Co.,Ltd", "FUJIAN-START-EQUIPMENT" }, { 0x982CBE, "2Wire", "2WIRE" }, { 0x982D56, "Resolution Audio", "RESOLUTION-AUDIO" }, { 0x983000, "Beijing KEMACOM Technologies Co., Ltd.", "BEIJING-KEMACOM-TECHNOLOGIES" }, { 0x983071, "DAIKYUNG VASCOM", "DAIKYUNG-VASCOM" }, { 0x983571, "Sub10 Systems Ltd", "SUB10" }, { 0x9835B8, "Assembled Products Corporation", "ASSEMBLED-PRODUCTS" }, { 0x983B16, "AMPAK Technology Inc", "AMPAK" }, { 0x983F9F, "China SSJ (Suzhou) Network Technology Inc.", "CHINA-SSJ-SUZHOU-NETWORK" }, { 0x984246, "SOL INDUSTRY PTE., LTD", "SOL-INDUSTRY-PTE" }, { 0x9843DA, "INTERTECH", "INTERTECH" }, { 0x98473C, "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD", "SHANGHAI-SUNMON-COMMUNICATION-TECHNOGY" }, { 0x984A47, "CHG Hospital Beds", "CHG-HOSPITAL-BEDS" }, { 0x984B4A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0x984BE1, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x984C04, "Zhangzhou Keneng Electrical Equipment Co Ltd", "ZHANGZHOU-KENENG-ELECTRICAL-EQUIPMENT" }, { 0x984CD3, "Mantis Deposition", "MANTIS-DEPOSITION" }, { 0x984E97, "Starlight Marketing (H. K.) Ltd.", "STARLIGHT-MARKETING-H-K" }, { 0x984FEE, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9852B1, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0x9857D3, "HON HAI-CCPBG PRECISION IND.CO.,LTD.", "HON-HAI-CCPBG-PRECISION-IND" }, { 0x98588A, "SYSGRATION Ltd.", "SYSGRATION" }, { 0x985945, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0x985C93, "SBG Systems SAS", "SBG-SAS" }, { 0x985D46, "PeopleNet Communication", "PEOPLENET-COMMUNICATION" }, { 0x985E1B, "ConversDigital Co., Ltd.", "CONVERSDIGITAL" }, { 0x986022, "EMW Co., Ltd.", "EMW" }, { 0x9866EA, "Industrial Control Communications, Inc.", "INDUSTRIAL-CONTROL-COMMUNICATION" }, { 0x986CF5, "zte corporation", "ZTE" }, { 0x986DC8, "TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION", "TOSHIBA-MITSUBISHI-ELECTRIC-INDUSTRIAL" }, { 0x9873C4, "Sage Electronic Engineering LLC", "SAGE-ENGINEERING-LLC" }, { 0x9876B6, "Adafruit", "ADAFRUIT" }, { 0x988217, "Disruptive Ltd", "DISRUPTIVE" }, { 0x9886B1, "Flyaudio corporation (China)", "FLYAUDIO-CHINA" }, { 0x9889ED, "Anadem Information Inc.", "ANADEM-INFORMATION" }, { 0x988B5D, "SAGEM COMMUNICATION", "SAGEM-COMMUNICATION" }, { 0x988BAD, "Corintech Ltd.", "CORINTECH" }, { 0x988E34, "ZHEJIANG BOXSAM ELECTRONIC CO.,LTD", "ZHEJIANG-BOXSAM" }, { 0x988E4A, "NOXUS(BEIJING) TECHNOLOGY CO.,LTD", "NOXUS-BEIJING" }, { 0x988EDD, "TE Connectivity Limerick", "TE-CONNECTIVITY-LIMERICK" }, { 0x989080, "Linkpower Network System Inc Ltd.", "LINKPOWER-NETWORK-SYSTEM" }, { 0x9893CC, "LG Electronics Inc.", "LG-ELECTRONICS" }, { 0x989449, "Skyworth Wireless Technology Ltd.", "SKYWORTH-WIRELESS" }, { 0x98A7B0, "MCST ZAO", "MCST-ZAO" }, { 0x98AAD7, "BLUE WAVE NETWORKING CO LTD", "BLUE-WAVE-NETWORKING" }, { 0x98B039, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0x98B8E3, "Apple", "APPLE" }, { 0x98BC57, "SVA TECHNOLOGIES CO.LTD", "SVA-TECHNOLOGIES" }, { 0x98BC99, "Edeltech Co.,Ltd.", "EDELTECH" }, { 0x98C845, "PacketAccess", "PACKETACCESS" }, { 0x98CDB4, "Virident Systems, Inc.", "VIRIDENT" }, { 0x98D331, "Shenzhen Bolutek Technology Co.,Ltd.", "SHENZHEN-BOLUTEK" }, { 0x98D686, "Chyi Lee industry Co., ltd.", "CHYI-LEE-INDUSTRY" }, { 0x98D6BB, "Apple", "APPLE" }, { 0x98D6F7, "LG Electronics", "LG-ELECTRONICS" }, { 0x98D88C, "Nortel Networks", "NORTEL-NETWORKS" }, { 0x98DA92, "Vuzix Corporation", "VUZIX" }, { 0x98DCD9, "UNITEC Co., Ltd.", "UNITEC" }, { 0x98E165, "Accutome", "ACCUTOME" }, { 0x98E79A, "Foxconn(NanJing) Communication Co.,Ltd.", "FOXCONN-NANJING-COMMUNICATION" }, { 0x98EC65, "Cosesy ApS", "COSESY-APS" }, { 0x98F0AB, "Apple", "APPLE" }, { 0x98F537, "zte corporation", "ZTE" }, { 0x98F8C1, "IDT Technology Limited", "IDT" }, { 0x98F8DB, "Marini Impianti Industriali s.r.l.", "MARINI-IMPIANTI-INDUSTRIALI-S-R-L" }, { 0x98FB12, "Grand Electronics (HK) Ltd", "GRAND-ELECTRONICS-HK" }, { 0x98FC11, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0x98FE03, "Ericsson - North America", "ERICSSON---NORTH-AMERICA" }, { 0x98FE94, "Apple", "APPLE" }, { 0x98FF6A, "OTEC(Shanghai)Technology Co.,Ltd.", "OTEC-SHANGHAI" }, { 0x98FFD0, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0x9C0111, "Shenzhen Newabel Electronic Co., Ltd.", "SHENZHEN-NEWABEL" }, { 0x9C0298, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C039E, "Beijing Winchannel Software Technology Co., Ltd", "BEIJING-WINCHANNEL-SOFTWARE" }, { 0x9C0473, "Tecmobile (International) Ltd.", "TECMOBILE" }, { 0x9C04EB, "Apple", "APPLE" }, { 0x9C066E, "Hytera Communications Corporation Limited", "HYTERA-COMMUNICATION" }, { 0x9C0DAC, "Tymphany HK Limited", "TYMPHANY-HK" }, { 0x9C1465, "Edata Elektronik San. ve Tic. A.Ş.", "EDATA-ELEKTRONIK-SAN-VE-TIC-A-Ş" }, { 0x9C1874, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0x9C1C12, "Aruba Networks", "ARUBA-NETWORKS" }, { 0x9C1FDD, "Accupix Inc.", "ACCUPIX" }, { 0x9C207B, "Apple", "APPLE" }, { 0x9C216A, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0x9C220E, "TASCAN Service GmbH", "TASCAN-SERVICE" }, { 0x9C2840, "Discovery Technology,LTD..", "DISCOVERY" }, { 0x9C28BF, "Continental Automotive Czech Republic s.r.o.", "CONTINENTAL-AUTOMOTIVE-CZECH-REPUBLIC-S-R-O" }, { 0x9C2A70, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0x9C3178, "Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd", "FOSHAN-HUADIAN-INTELLIGENT-COMMUNICATION-TEACHNOLOGIES" }, { 0x9C31B6, "Kulite Semiconductor Products Inc", "KULITE-SEMICONDUCTOR-PRODUCTS" }, { 0x9C3AAF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9C417C, "Hame Technology Co., Limited", "HAME" }, { 0x9C443D, "CHENGDU XUGUANG TECHNOLOGY CO, LTD", "CHENGDU-XUGUANG" }, { 0x9C44A6, "SwiftTest, Inc.", "SWIFTTEST" }, { 0x9C4563, "DIMEP Sistemas", "DIMEP-SISTEMAS" }, { 0x9C4A7B, "Nokia Corporation", "NOKIA" }, { 0x9C4CAE, "Mesa Labs", "MESA-LABS" }, { 0x9C4E20, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x9C4E36, "Intel Corporate", "INTEL-CORPORATE" }, { 0x9C4E8E, "ALT Systems Ltd", "ALT" }, { 0x9C4EBF, "BoxCast", "BOXCAST" }, { 0x9C53CD, "ENGICAM s.r.l.", "ENGICAM-S-R-L" }, { 0x9C541C, "Shenzhen My-power Technology Co.,Ltd", "SHENZHEN-MY-POWER" }, { 0x9C54CA, "Zhengzhou VCOM Science and Technology Co.,Ltd", "ZHENGZHOU-VCOM-SCIENCE-AND" }, { 0x9C55B4, "I.S.E. S.r.l.", "I-S-E-S-R-L" }, { 0x9C5711, "Feitian Xunda(Beijing) Aeronautical Information Technology Co., Ltd.", "FEITIAN-XUNDA-BEIJING-AERONAUTICAL-INFORMATION" }, { 0x9C5B96, "NMR Corporation", "NMR" }, { 0x9C5C8D, "FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA", "FIREMAX-INDÚSTRIA-E-COMÉRCIO-DE-PRODUTOS-ELETRÔNICOS-LTDA" }, { 0x9C5D12, "Aerohive Networks Inc", "AEROHIVE-NETWORKS" }, { 0x9C5D95, "VTC Electronics Corp.", "VTC-ELECTRONICS" }, { 0x9C5E73, "Calibre UK Ltd", "CALIBRE-UK" }, { 0x9C611D, "Omni-ID USA, Inc.", "OMNI-ID-USA" }, { 0x9C645E, "Harman Consumer Group", "HARMAN-CONSUMER-GROUP" }, { 0x9C65F9, "AcSiP Technology Corp.", "ACSIP" }, { 0x9C6650, "Glodio Technolies Co.,Ltd Tianjin Branch", "GLODIO-TECHNOLIES-TIANJIN-BRANCH" }, { 0x9C6ABE, "QEES ApS.", "QEES-APS" }, { 0x9C7514, "Wildix srl", "WILDIX-SRL" }, { 0x9C77AA, "NADASNV", "NADASNV" }, { 0x9C79AC, "Suntec Software(Shanghai) Co., Ltd.", "SUNTEC-SOFTWARE-SHANGHAI" }, { 0x9C7BD2, "NEOLAB Convergence", "NEOLAB-CONVERGENCE" }, { 0x9C807D, "SYSCABLE Korea Inc.", "SYSCABLE-KOREA" }, { 0x9C80DF, "Arcadyan Technology Corporation", "ARCADYAN" }, { 0x9C8888, "Simac Techniek NV", "SIMAC-TECHNIEK-NV" }, { 0x9C8BF1, "The Warehouse Limited", "THE-WAREHOUSE" }, { 0x9C8D1A, "INTEG process group inc", "INTEG-PROCESS-GROUP" }, { 0x9C8E99, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0x9C8EDC, "Teracom Limited", "TERACOM" }, { 0x9C934E, "Xerox Corporation", "XEROX" }, { 0x9C95F8, "SmartDoor Systems, LLC", "SMARTDOOR-LLC" }, { 0x9C9726, "Technicolor", "TECHNICOLOR" }, { 0x9C9811, "Guangzhou Sunrise Electronics Development Co., Ltd", "GUANGZHOU-SUNRISE-ELECTRONICS-DEVELOPMENT" }, { 0x9C9C1D, "Starkey Labs Inc.", "STARKEY-LABS" }, { 0x9CA10A, "SCLE SFE", "SCLE-SFE" }, { 0x9CA134, "Nike, Inc.", "NIKE" }, { 0x9CA3BA, "SAKURA Internet Inc.", "SAKURA-INTERNET" }, { 0x9CA577, "Osorno Enterprises Inc.", "OSORNO-ENTERPRISES" }, { 0x9CA9E4, "zte corporation", "ZTE" }, { 0x9CADEF, "Obihai Technology, Inc.", "OBIHAI" }, { 0x9CAFCA, "CISCO SYSTEMS, INC.", "CISCO" }, { 0x9CB008, "Ubiquitous Computing Technology Corporation", "UBIQUITOUS-COMPUTING" }, { 0x9CB206, "PROCENTEC", "PROCENTEC" }, { 0x9CB654, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0x9CB70D, "Liteon Technology Corporation", "LITEON" }, { 0x9CB793, "Creatcomm Technology Inc.", "CREATCOMM" }, { 0x9CBB98, "Shen Zhen RND Electronic Co.,LTD", "SHEN-ZHEN-RND" }, { 0x9CBD9D, "SkyDisk, Inc.", "SKYDISK" }, { 0x9CC077, "PrintCounts, LLC", "PRINTCOUNTS-LLC" }, { 0x9CC0D2, "Conductix-Wampfler AG", "CONDUCTIX-WAMPFLER" }, { 0x9CC7A6, "AVM GmbH", "AVM" }, { 0x9CC7D1, "SHARP Corporation", "SHARP" }, { 0x9CCAD9, "Nokia Corporation", "NOKIA" }, { 0x9CCD82, "CHENG UEI PRECISION INDUSTRY CO.,LTD", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0x9CD24B, "zte corporation", "ZTE" }, { 0x9CD36D, "NETGEAR INC.,", "NETGEAR" }, { 0x9CD643, "D-Link International", "D-LINK" }, { 0x9CDF03, "Harman/Becker Automotive Systems GmbH", "HARMAN/BECKER-AUTOMOTIVE" }, { 0x9CE10E, "NCTech Ltd", "NCTECH" }, { 0x9CE1D6, "Junger Audio-Studiotechnik GmbH", "JUNGER-AUDIO-STUDIOTECHNIK" }, { 0x9CE635, "Nintendo Co., Ltd.", "NINTENDO" }, { 0x9CE6E7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0x9CE7BD, "Winduskorea co., Ltd", "WINDUSKOREA" }, { 0x9CEBE8, "BizLink (Kunshan) Co.,Ltd", "BIZLINK-KUNSHAN" }, { 0x9CF61A, "UTC Fire and Security", "UTC-FIRE-AND-SECURITY" }, { 0x9CF67D, "Ricardo Prague, s.r.o.", "RICARDO-PRAGUE-S-R-O" }, { 0x9CF8DB, "shenzhen eyunmei technology co,.ltd", "SHENZHEN-EYUNMEI" }, { 0x9CF938, "AREVA NP GmbH", "AREVA-NP" }, { 0x9CFFBE, "OTSL Inc.", "OTSL" }, { 0xA00363, "Robert Bosch Healthcare GmbH", "ROBERT-BOSCH-HEALTHCARE" }, { 0xA00798, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xA007B6, "Advanced Technical Support, Inc.", "ADVANCED-TECHNICAL-SUPPORT" }, { 0xA00ABF, "Wieson Technologies Co., Ltd.", "WIESON-TECHNOLOGIES" }, { 0xA00BBA, "SAMSUNG ELECTRO-MECHANICS", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xA00CA1, "SKTB SKiT", "SKTB-SKIT" }, { 0xA01290, "Avaya, Inc", "AVAYA" }, { 0xA0133B, "Copyright © HiTi Digital, Inc.", "COPYRIGHT-©-HITI-DIGITAL" }, { 0xA0143D, "PARROT SA", "PARROT" }, { 0xA0165C, "Triteka LTD", "TRITEKA" }, { 0xA01859, "Shenzhen Yidashi Electronics Co Ltd", "SHENZHEN-YIDASHI-ELECTRONICS" }, { 0xA01917, "Bertel S.p.a.", "BERTEL-S-P-A" }, { 0xA01C05, "NIMAX TELECOM CO.,LTD.", "NIMAX-TELECOM" }, { 0xA01D48, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA02195, "Samsung Electronics Digital Imaging", "SAMSUNG-ELECTRONICS-DIGITAL-IMAGING" }, { 0xA021B7, "NETGEAR", "NETGEAR" }, { 0xA0231B, "TeleComp R&D Corp.", "TELECOMP-R-D" }, { 0xA02EF3, "United Integrated Services Co., Led.", "UNITED-INTEGRATED-SERVICES-LED" }, { 0xA0369F, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA036F0, "Comprehensive Power", "COMPREHENSIVE-POWER" }, { 0xA036FA, "Ettus Research LLC", "ETTUS-RESEARCH-LLC" }, { 0xA03A75, "PSS Belgium N.V.", "PSS-BELGIUM-N-V" }, { 0xA03B1B, "Inspire Tech", "INSPIRE-TECH" }, { 0xA04025, "Actioncable, Inc.", "ACTIONCABLE" }, { 0xA04041, "SAMWONFA Co.,Ltd.", "SAMWONFA" }, { 0xA041A7, "NL Ministry of Defense", "NL-MINISTRY-OF-DEFENSE" }, { 0xA0423F, "Tyan Computer Corp", "TYAN" }, { 0xA0481C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA04CC1, "Helixtech Corp.", "HELIXTECH" }, { 0xA04E04, "Nokia Corporation", "NOKIA" }, { 0xA051C6, "Avaya, Inc", "AVAYA" }, { 0xA055DE, "Pace plc", "PACE-PLC" }, { 0xA0593A, "V.D.S. Video Display Systems srl", "V-D-S-VIDEO-DISPLAY-SRL" }, { 0xA05AA4, "Grand Products Nevada, Inc.", "GRAND-PRODUCTS-NEVADA" }, { 0xA05B21, "ENVINET GmbH", "ENVINET" }, { 0xA05DC1, "TMCT Co., LTD.", "TMCT" }, { 0xA05DE7, "DIRECTV, Inc.", "DIRECTV" }, { 0xA05E6B, "MELPER Co., Ltd.", "MELPER" }, { 0xA06518, "VNPT TECHNOLOGY", "VNPT" }, { 0xA067BE, "Sicon s.r.l.", "SICON-S-R-L" }, { 0xA06986, "Wellav Technologies Ltd", "WELLAV-TECHNOLOGIES" }, { 0xA06A00, "Verilink Corporation", "VERILINK" }, { 0xA06CEC, "RIM", "RIM" }, { 0xA06D09, "Intelcan Technosystems Inc.", "INTELCAN-TECHNOSYSTEMS" }, { 0xA06E50, "Nanotek Elektronik Sistemler Ltd. Sti.", "NANOTEK-ELEKTRONIK-SISTEMLER-STI" }, { 0xA071A9, "Nokia Corporation", "NOKIA" }, { 0xA07332, "Cashmaster International Limited", "CASHMASTER" }, { 0xA073FC, "Rancore Technologies Private Limited", "RANCORE-TECHNOLOGIES-PRIVATE" }, { 0xA07591, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA07771, "Vialis BV", "VIALIS" }, { 0xA078BA, "Pantech Co., Ltd.", "PANTECH" }, { 0xA0821F, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA082C7, "P.T.I Co.,LTD", "P-T-I" }, { 0xA0861D, "Chengdu Fuhuaxin Technology co.,Ltd", "CHENGDU-FUHUAXIN" }, { 0xA086EC, "SAEHAN HITEC Co., Ltd", "SAEHAN-HITEC" }, { 0xA08869, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA088B4, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA089E4, "Skyworth Digital Technology(Shenzhen) Co.,Ltd", "SKYWORTH-DIGITAL-SHENZHEN" }, { 0xA08A87, "HuiZhou KaiYue Electronic Co.,Ltd", "HUIZHOU-KAIYUE" }, { 0xA08C15, "Gerhard D. Wempe KG", "GERHARD-D-WEMPE" }, { 0xA08C9B, "Xtreme Technologies Corp", "XTREME-TECHNOLOGIES" }, { 0xA090DE, "VEEDIMS,LLC", "VEEDIMS-LLC" }, { 0xA09805, "OpenVox Communication Co Ltd", "OPENVOX-COMMUNICATION" }, { 0xA098ED, "Shandong Intelligent Optical Communication Development Co., Ltd.", "SHANDONG-INTELLIGENT-OPTICAL-COMMUNICATION-DEVELOPMENT" }, { 0xA09A5A, "Time Domain", "TIME-DOMAIN" }, { 0xA09BBD, "Total Aviation Solutions Pty Ltd", "TOTAL-AVIATION-SOLUTIONS-PTY" }, { 0xA0A130, "DLI Taiwan Branch office", "DLI-TAIWAN-BRANCH-OFFICE" }, { 0xA0A23C, "GPMS", "GPMS" }, { 0xA0A763, "Polytron Vertrieb GmbH", "POLYTRON-VERTRIEB" }, { 0xA0A8CD, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA0AAFD, "EraThink Technologies Corp.", "ERATHINK-TECHNOLOGIES" }, { 0xA0B100, "ShenZhen Cando Electronics Co.,Ltd", "SHENZHEN-CANDO-ELECTRONICS" }, { 0xA0B3CC, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA0B5DA, "HongKong THTF Co., Ltd", "HONGKONG-THTF" }, { 0xA0B662, "Acutvista Innovation Co., Ltd.", "ACUTVISTA-INNOVATION" }, { 0xA0B9ED, "Skytap", "SKYTAP" }, { 0xA0BAB8, "Pixon Imaging", "PIXON-IMAGING" }, { 0xA0BF50, "S.C. ADD-PRODUCTION S.R.L.", "S-C-ADD-PRODUCTION-S-R-L" }, { 0xA0BFA5, "CORESYS", "CORESYS" }, { 0xA0C3DE, "Triton Electronic Systems Ltd.", "TRITON" }, { 0xA0C6EC, "ShenZhen ANYK Technology Co.,LTD", "SHENZHEN-ANYK" }, { 0xA0CEC8, "CE LINK LIMITED", "CE-LINK" }, { 0xA0CF5B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA0D3C1, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA0DC04, "Becker-Antriebe GmbH", "BECKER-ANTRIEBE" }, { 0xA0DD97, "PolarLink Technologies, Ltd", "POLARLINK-TECHNOLOGIES" }, { 0xA0DDE5, "SHARP Corporation", "SHARP" }, { 0xA0DE05, "JSC \"Irbis-T\"", "JSC-IRBIS-T" }, { 0xA0E201, "AVTrace Ltd.(China)", "AVTRACE-CHINA" }, { 0xA0E25A, "Amicus SK, s.r.o.", "AMICUS-SK-S-R-O" }, { 0xA0E295, "DAT System Co.,Ltd", "DAT-SYSTEM" }, { 0xA0E453, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xA0E534, "Stratec Biomedical AG", "STRATEC-BIOMEDICAL" }, { 0xA0E5E9, "enimai Inc", "ENIMAI" }, { 0xA0E9DB, "Ningbo FreeWings Technologies Co.,Ltd", "NINGBO-FREEWINGS-TECHNOLOGIES" }, { 0xA0EB76, "AirCUVE Inc.", "AIRCUVE" }, { 0xA0EC80, "zte corporation", "ZTE" }, { 0xA0EDCD, "Apple", "APPLE" }, { 0xA0EF84, "Seine Image Int'l Co., Ltd", "SEINE-IMAGE" }, { 0xA0F217, "GE Medical System(China) Co., Ltd.", "GE-MEDICAL-SYSTEM-CHINA" }, { 0xA0F3C1, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA0F3E4, "Alcatel Lucent IPD", "ALCATEL-LUCENT-IPD" }, { 0xA0F419, "Nokia Corporation", "NOKIA" }, { 0xA0F450, "HTC Corporation", "HTC" }, { 0xA0F459, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0xA0FE91, "AVAT Automation GmbH", "AVAT-AUTOMATION" }, { 0xA40130, "ABIsystems Co., LTD", "ABISYSTEMS" }, { 0xA4059E, "STA Infinity LLP", "STA-INFINITY-LLP" }, { 0xA409CB, "Alfred Kaercher GmbH & Co KG", "ALFRED-KAERCHER-AMP" }, { 0xA40BED, "Carry Technology Co.,Ltd", "CARRY" }, { 0xA40CC3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA4134E, "Luxul", "LUXUL" }, { 0xA41566, "Wei Fang Goertek Electronics Co.,Ltd", "WEI-FANG-GOERTEK-ELECTRONICS" }, { 0xA41731, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xA41875, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA41BC0, "Fastec Imaging Corporation", "FASTEC-IMAGING" }, { 0xA41F72, "Dell Inc.", "DELL" }, { 0xA4218A, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xA42305, "Open Networking Laboratory", "OPEN-NETWORKING-LABORATORY" }, { 0xA424B3, "FlatFrog Laboratories AB", "FLATFROG-LABORATORIES-AB" }, { 0xA42940, "Shenzhen YOUHUA Technology Co., Ltd", "SHENZHEN-YOUHUA" }, { 0xA429B7, "bluesky", "BLUESKY" }, { 0xA42C08, "Masterwork Automodules", "MASTERWORK-AUTOMODULES" }, { 0xA433D1, "Fibrlink Communications Co.,Ltd.", "FIBRLINK-COMMUNICATION" }, { 0xA438FC, "Plastic Logic", "PLASTIC-LOGIC" }, { 0xA43A69, "Vers Inc", "VERS" }, { 0xA4466B, "EOC Technology", "EOC" }, { 0xA446FA, "AmTRAN Video Corporation", "AMTRAN-VIDEO" }, { 0xA44B15, "Sun Cupid Technology (HK) LTD", "SUN-CUPID-HK" }, { 0xA44C11, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA44E2D, "Adaptive Wireless Solutions, LLC", "ADAPTIVE-WIRELESS-SOLUTIONS-LLC" }, { 0xA44E31, "Intel Corporate", "INTEL-CORPORATE" }, { 0xA45055, "busware.de", "BUSWARE-DE" }, { 0xA4526F, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xA4561B, "MCOT Corporation", "MCOT" }, { 0xA45630, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA45A1C, "smart-electronic GmbH", "SMART" }, { 0xA45C27, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xA45D36, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xA46706, "Apple", "APPLE" }, { 0xA46E79, "DFT System Co.Ltd", "DFT-SYSTEM" }, { 0xA47733, "Google", "GOOGLE" }, { 0xA47760, "Nokia Corporation", "NOKIA" }, { 0xA479E4, "KLINFO Corp", "KLINFO" }, { 0xA47AA4, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA47ACF, "VIBICOM COMMUNICATIONS INC.", "VIBICOM-COMMUNICATION" }, { 0xA47C14, "ChargeStorm AB", "CHARGESTORM-AB" }, { 0xA47C1F, "Global Microwave Systems Inc.", "GLOBAL-MICROWAVE" }, { 0xA4856B, "Q Electronics Ltd", "Q-ELECTRONICS" }, { 0xA4895B, "ARK INFOSOLUTIONS PVT LTD", "ARK-INFOSOLUTIONS-PVT" }, { 0xA49005, "CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD", "CHINA-GREATWALL-SHENZHEN" }, { 0xA4934C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA497BB, "Hitachi Industrial Equipment Systems Co.,Ltd", "HITACHI-INDUSTRIAL-EQUIPMENT" }, { 0xA49947, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xA49981, "FuJian Elite Power Tech CO.,LTD.", "FUJIAN-ELITE-POWER-TECH" }, { 0xA49B13, "Burroughs Payment Systems, Inc.", "BURROUGHS-PAYMENT" }, { 0xA49EDB, "AutoCrib, Inc.", "AUTOCRIB" }, { 0xA49F89, "Shanghai Rui Rui Communication Technology Co.Ltd.", "SHANGHAI-RUI-RUI-COMMUNICATION" }, { 0xA4A24A, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xA4A80F, "Shenzhen Coship Electronics Co., Ltd.", "SHENZHEN-COSHIP-ELECTRONICS" }, { 0xA4AD00, "Ragsdale Technology", "RAGSDALE" }, { 0xA4ADB8, "Vitec Group, Camera Dynamics Ltd", "VITEC-GROUP-CAMERA-DYNAMICS" }, { 0xA4AE9A, "Maestro Wireless Solutions ltd.", "MAESTRO-WIRELESS-SOLUTIONS" }, { 0xA4B121, "Arantia 2010 S.L.", "ARANTIA-2010-S-L" }, { 0xA4B197, "Apple", "APPLE" }, { 0xA4B1E9, "Technicolor", "TECHNICOLOR" }, { 0xA4B1EE, "H. ZANDER GmbH & Co. KG", "H-ZANDER" }, { 0xA4B2A7, "Adaxys Solutions AG", "ADAXYS-SOLUTIONS" }, { 0xA4B36A, "JSC SDO Chromatec", "JSC-SDO-CHROMATEC" }, { 0xA4B818, "PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH", "PENTA-GESELLSCHAFT-FüR-ELEKTRONISCHE-INDUSTRIEDATENVERARBEITUNG-MBH" }, { 0xA4B980, "Parking BOXX Inc.", "PARKING-BOXX" }, { 0xA4BADB, "Dell Inc.", "DELL" }, { 0xA4BBAF, "Lime Instruments", "LIME-INSTRUMENTS" }, { 0xA4BE61, "EutroVision System, Inc.", "EUTROVISION-SYSTEM" }, { 0xA4C0C7, "ShenZhen Hitom Communication Technology Co..LTD", "SHENZHEN-HITOM-COMMUNICATION" }, { 0xA4C0E1, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xA4C2AB, "Hangzhou LEAD-IT Information & Technology Co.,Ltd", "HANGZHOU-LEAD-IT-INFORMATION" }, { 0xA4C361, "Apple", "APPLE" }, { 0xA4C7DE, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xA4D094, "Erwin Peters Systemtechnik GmbH", "ERWIN-PETERS-SYSTEMTECHNIK" }, { 0xA4D18F, "Shenzhen Skyee Optical Fiber Communication Technology Ltd.", "SHENZHEN-SKYEE-OPTICAL-FIBER-COMMUNICATION" }, { 0xA4D1D1, "ECOtality North America", "ECOTALITY-NORTH-AMERICA" }, { 0xA4D1D2, "Apple", "APPLE" }, { 0xA4D3B5, "GLITEL Stropkov, s.r.o.", "GLITEL-STROPKOV-S-R-O" }, { 0xA4D856, "Qualcomm Labs Inc.", "QUALCOMM-LABS" }, { 0xA4DA3F, "Bionics Corp.", "BIONICS" }, { 0xA4DB2E, "Kingspan Environmental Ltd", "KINGSPAN-ENVIRONMENTAL" }, { 0xA4DB30, "Liteon Technology Corporation", "LITEON" }, { 0xA4DE50, "Total Walther GmbH", "TOTAL-WALTHER" }, { 0xA4E0E6, "FILIZOLA S.A. PESAGEM E AUTOMACAO", "FILIZOLA-PESAGEM-E-AUTOMACAO" }, { 0xA4E32E, "Silicon & Software Systems Ltd.", "SILICON-SOFTWARE" }, { 0xA4E391, "DENY FONTAINE", "DENY-FONTAINE" }, { 0xA4E4B8, "BlackBerry Limited", "BLACKBERRY" }, { 0xA4E731, "Nokia Corporation", "NOKIA" }, { 0xA4E7E4, "Connex GmbH", "CONNEX" }, { 0xA4E991, "SISTEMAS AUDIOVISUALES ITELSIS S.L.", "SISTEMAS-AUDIOVISUALES-ITELSIS-S-L" }, { 0xA4E9A3, "Honest Technology Co., Ltd", "HONEST" }, { 0xA4EBD3, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA4ED4E, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xA4EE57, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0xA4EF52, "Telewave Co., Ltd.", "TELEWAVE" }, { 0xA4F3C1, "Open Source Robotics Foundation, Inc.", "OPEN-SOURCE-ROBOTICS-FOUNDATION" }, { 0xA4F522, "CHOFU SEISAKUSHO CO.,LTD", "CHOFU-SEISAKUSHO" }, { 0xA4F7D0, "LAN Accessories Co., Ltd.", "LAN-ACCESSORIES" }, { 0xA4FB8D, "Hangzhou Dunchong Technology Co.Ltd", "HANGZHOU-DUNCHONG" }, { 0xA4FCCE, "Security Expert Ltd.", "SECURITY-EXPERT" }, { 0xA80180, "IMAGO Technologies GmbH", "IMAGO-TECHNOLOGIES" }, { 0xA80600, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xA80C0D, "Cisco", "CISCO" }, { 0xA8154D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA816B2, "LG Electronics", "LG-ELECTRONICS" }, { 0xA81758, "Elektronik System i Umeå AB", "ELEKTRONIK-SYSTEM-I-UMEå-AB" }, { 0xA81B18, "XTS CORP", "XTS" }, { 0xA81FAF, "KRYPTON POLSKA", "KRYPTON-POLSKA" }, { 0xA82066, "Apple", "APPLE" }, { 0xA826D9, "HTC Corporation", "HTC" }, { 0xA8294C, "Precision Optical Transceivers, Inc.", "PRECISION-OPTICAL-TRANSCEIVERS" }, { 0xA82BD6, "Shina System Co., Ltd", "SHINA-SYSTEM" }, { 0xA830AD, "Wei Fang Goertek Electronics Co.,Ltd", "WEI-FANG-GOERTEK-ELECTRONICS" }, { 0xA83944, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xA84041, "Dragino Technology Co., Limited", "DRAGINO" }, { 0xA84481, "Nokia Corporation", "NOKIA" }, { 0xA845E9, "Firich Enterprises CO., LTD.", "FIRICH-ENTERPRISES" }, { 0xA849A5, "Lisantech Co., Ltd.", "LISANTECH" }, { 0xA854B2, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0xA8556A, "Pocketnet Technology Inc.", "POCKETNET" }, { 0xA8574E, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xA85BB0, "Shenzhen Dehoo Technology Co.,Ltd", "SHENZHEN-DEHOO" }, { 0xA85BF3, "Audivo GmbH", "AUDIVO" }, { 0xA861AA, "Cloudview Limited", "CLOUDVIEW" }, { 0xA862A2, "JIWUMEDIA CO., LTD.", "JIWUMEDIA" }, { 0xA863DF, "DISPLAIRE CORPORATION", "DISPLAIRE" }, { 0xA863F2, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xA865B2, "DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED", "DONGGUAN-YISHANG" }, { 0xA86A6F, "RIM", "RIM" }, { 0xA870A5, "UniComm Inc.", "UNICOMM" }, { 0xA875D6, "FreeTek International Co., Ltd.", "FREETEK" }, { 0xA875E2, "Aventura Technologies, Inc.", "AVENTURA-TECHNOLOGIES" }, { 0xA8776F, "Zonoff", "ZONOFF" }, { 0xA87B39, "Nokia Corporation", "NOKIA" }, { 0xA87E33, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xA881F1, "BMEYE B.V.", "BMEYE" }, { 0xA886DD, "Apple, Inc.", "APPLE" }, { 0xA88792, "Broadband Antenna Tracking Systems", "BROADBAND-ANTENNA-TRACKING" }, { 0xA887ED, "ARC Wireless LLC", "ARC-WIRELESS-LLC" }, { 0xA88808, "Apple", "APPLE" }, { 0xA88CEE, "MicroMade Galka i Drozdz sp.j.", "MICROMADE-GALKA-I-DROZDZ-SP-J" }, { 0xA88D7B, "SunDroid Global limited.", "SUNDROID-GLOBAL" }, { 0xA8922C, "LG Electronics", "LG-ELECTRONICS" }, { 0xA893E6, "JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD", "JIANGXI-JINGGANGSHAN-CKING-COMMUNICATION" }, { 0xA895B0, "Aker Subsea Ltd", "AKER-SUBSEA" }, { 0xA8968A, "Apple", "APPLE" }, { 0xA897DC, "IBM", "IBM" }, { 0xA898C6, "Shinbo Co., Ltd.", "SHINBO" }, { 0xA8995C, "aizo ag", "AIZO" }, { 0xA89B10, "inMotion Ltd.", "INMOTION" }, { 0xA8AD3D, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xA8B0AE, "LEONI", "LEONI" }, { 0xA8B1D4, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xA8BBCF, "Apple", "APPLE" }, { 0xA8BD1A, "Honey Bee (Hong Kong) Limited", "HONEY-BEE-HONG-KONG" }, { 0xA8C222, "TM-Research Inc.", "TM-RESEARCH" }, { 0xA8CB95, "EAST BEST CO., LTD.", "EAST-BEST" }, { 0xA8CCC5, "Saab AB (publ)", "SAAB-AB-PUBL" }, { 0xA8CE90, "CVC", "CVC" }, { 0xA8D0E5, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xA8D236, "Lightware Visual Engineering", "LIGHTWARE-VISUAL-ENGINEERING" }, { 0xA8D3C8, "Wachendorff Elektronik GmbH & Co. KG", "WACHENDORFF-ELEKTRONIK" }, { 0xA8E018, "Nokia Corporation", "NOKIA" }, { 0xA8E3EE, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0xA8EF26, "Tritonwave", "TRITONWAVE" }, { 0xA8F274, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xA8F470, "Fujian Newland Communication Science Technologies Co.,Ltd.", "FUJIAN-NEWLAND-COMMUNICATION-SCIENCE-TECHNOLOGIES" }, { 0xA8F94B, "Eltex Enterprise Ltd.", "ELTEX" }, { 0xA8FAD8, "Apple", "APPLE" }, { 0xA8FB70, "WiseSec L.t.d", "WISESEC-L-T-D" }, { 0xA8FCB7, "Consolidated Resource Imaging", "CONSOLIDATED-RESOURCE-IMAGING" }, { 0xAA0000, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0xAA0001, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0xAA0002, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0xAA0003, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0xAA0004, "DIGITAL EQUIPMENT CORPORATION", "DIGITAL-EQUIPMENT" }, { 0xAC0142, "Uriel Technologies SIA", "URIEL-TECHNOLOGIES-SIA" }, { 0xAC02CA, "HI Solutions, Inc.", "HI-SOLUTIONS" }, { 0xAC02CF, "RW Tecnologia Industria e Comercio Ltda", "RW-TECNOLOGIA-INDUSTRIA-E-COMERCIO-LTDA" }, { 0xAC02EF, "Comsis", "COMSIS" }, { 0xAC0613, "Senselogix Ltd", "SENSELOGIX" }, { 0xAC0A61, "Labor S.r.L.", "LABOR-S-R-L" }, { 0xAC0DFE, "Ekon GmbH - myGEKKO", "EKON---MYGEKKO" }, { 0xAC1461, "ATAW Co., Ltd.", "ATAW" }, { 0xAC14D2, "wi-daq, inc.", "WI-DAQ" }, { 0xAC162D, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xAC1702, "Fibar Group sp. z o.o.", "FIBAR-GROUP-SP-Z-O-O" }, { 0xAC1826, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0xAC199F, "SUNGROW POWER SUPPLY CO.,LTD.", "SUNGROW-POWER-SUPPLY" }, { 0xAC20AA, "DMATEK Co., Ltd.", "DMATEK" }, { 0xAC220B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xAC2DA3, "TXTR GmbH", "TXTR" }, { 0xAC2FA8, "Humannix Co.,Ltd.", "HUMANNIX" }, { 0xAC319D, "Shenzhen TG-NET Botone Technology Co.,Ltd.", "SHENZHEN-TG-NET-BOTONE" }, { 0xAC34CB, "Shanhai GBCOM Communication Technology Co. Ltd", "SHANHAI-GBCOM-COMMUNICATION" }, { 0xAC3C0B, "Apple", "APPLE" }, { 0xAC3CB4, "Nilan A/S", "NILAN-A/S" }, { 0xAC3D05, "Instorescreen Aisa", "INSTORESCREEN-AISA" }, { 0xAC3D75, "HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD.", "HANGZHOU-ZHIWAY-TECHNOLOGIES" }, { 0xAC3FA4, "TAIYO YUDEN CO.,LTD", "TAIYO-YUDEN" }, { 0xAC40EA, "C&T Solution Inc.", "C-T-SOLUTION" }, { 0xAC4122, "Eclipse Electronic Systems Inc.", "ECLIPSE" }, { 0xAC44F2, "Revolabs Inc", "REVOLABS" }, { 0xAC4723, "Genelec", "GENELEC" }, { 0xAC4AFE, "Hisense Broadband Multimedia Technology Co.,Ltd.", "HISENSE-BROADBAND-MULTIMEDIA" }, { 0xAC4BC8, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xAC4E91, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xAC4FFC, "SVS-VISTEK GmbH", "SVS-VISTEK" }, { 0xAC5036, "Pi-Coral Inc", "PI-CORAL" }, { 0xAC5135, "MPI TECH", "MPI-TECH" }, { 0xAC51EE, "Cambridge Communication Systems Ltd", "CAMBRIDGE-COMMUNICATION" }, { 0xAC54EC, "IEEE P1823 Standards Working Group", "IEEE-P1823-STANDARDS-WORKING-GROUP" }, { 0xAC583B, "Human Assembler, Inc.", "HUMAN-ASSEMBLER" }, { 0xAC5D10, "Pace Americas", "PACE-AMERICAS" }, { 0xAC5E8C, "Utillink", "UTILLINK" }, { 0xAC6123, "Drivven, Inc.", "DRIVVEN" }, { 0xAC6706, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xAC6BAC, "Jenny Science AG", "JENNY-SCIENCE" }, { 0xAC6E1A, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xAC6F4F, "Enspert Inc", "ENSPERT" }, { 0xAC6FBB, "TATUNG Technology Inc.", "TATUNG" }, { 0xAC6FD9, "Valueplus Inc.", "VALUEPLUS" }, { 0xAC7236, "Lexking Technology Co., Ltd.", "LEXKING" }, { 0xAC7289, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC7A42, "iConnectivity", "ICONNECTIVITY" }, { 0xAC7BA1, "Intel Corporate", "INTEL-CORPORATE" }, { 0xAC7F3E, "Apple", "APPLE" }, { 0xAC80D6, "Hexatronic AB", "HEXATRONIC-AB" }, { 0xAC8112, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0xAC81F3, "Nokia Corporation", "NOKIA" }, { 0xAC8317, "Shenzhen Furtunetel Communication Co., Ltd", "SHENZHEN-FURTUNETEL-COMMUNICATION" }, { 0xAC83F0, "ImmediaTV Corporation", "IMMEDIATV" }, { 0xAC853D, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xAC8674, "Open Mesh, Inc.", "OPEN-MESH" }, { 0xAC867E, "Create New Technology (HK) Limited Company", "CREATE-NEW-HK-COMPANY" }, { 0xAC8ACD, "ROGER D.Wensker, G.Wensker sp.j.", "ROGER-D-WENSKER-G-WENSKER-SP-J" }, { 0xAC8D14, "Smartrove Inc", "SMARTROVE" }, { 0xAC932F, "Nokia Corporation", "NOKIA" }, { 0xAC9403, "Envision Peripherals Inc", "ENVISION-PERIPHERALS" }, { 0xAC9A96, "Lantiq Deutschland GmbH", "LANTIQ-DEUTSCHLAND" }, { 0xAC9B84, "Smak Tecnologia e Automacao", "SMAK-TECNOLOGIA-E-AUTOMACAO" }, { 0xAC9CE4, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xACA016, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xACA22C, "Baycity Technologies Ltd", "BAYCITY-TECHNOLOGIES" }, { 0xACA430, "Peerless AV", "PEERLESS-AV" }, { 0xACAB8D, "Lyngso Marine A/S", "LYNGSO-MARINE-A/S" }, { 0xACB313, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xACBD0B, "IMAC CO.,LTD", "IMAC" }, { 0xACBE75, "Ufine Technologies Co.,Ltd.", "UFINE-TECHNOLOGIES" }, { 0xACBEB6, "Visualedge Technology Co., Ltd.", "VISUALEDGE" }, { 0xACC2EC, "CLT INT'L IND. CORP.", "CLT-IND" }, { 0xACC595, "Graphite Systems", "GRAPHITE" }, { 0xACC698, "Kohzu Precision Co., Ltd.", "KOHZU-PRECISION" }, { 0xACC935, "Ness Corporation", "NESS" }, { 0xACCA54, "Telldus Technologies AB", "TELLDUS-TECHNOLOGIES-AB" }, { 0xACCA8E, "ODA Technologies", "ODA-TECHNOLOGIES" }, { 0xACCABA, "Midokura Co., Ltd.", "MIDOKURA" }, { 0xACCB09, "Hefcom Metering (Pty) Ltd", "HEFCOM-METERING-PTY" }, { 0xACCC8E, "Axis Communications AB", "AXIS-COMMUNICATION-AB" }, { 0xACCE8F, "HWA YAO TECHNOLOGIES CO., LTD", "HWA-YAO-TECHNOLOGIES" }, { 0xACCF23, "Hi-flying electronics technology Co.,Ltd", "HI-FLYING-ELECTRONICS" }, { 0xACD180, "Crexendo Business Solutions, Inc.", "CREXENDO-BUSINESS-SOLUTIONS" }, { 0xACD364, "ABB SPA, ABB SACE DIV.", "ABB-SPA-ABB-SACE-DIV" }, { 0xACD657, "Shaanxi Guolian Digital TV Technology Co., Ltd.", "SHAANXI-GUOLIAN-DIGITAL-TV" }, { 0xACD9D6, "tci GmbH", "TCI" }, { 0xACDBDA, "Shenzhen Geniatech Inc, Ltd", "SHENZHEN-GENIATECH" }, { 0xACDE48, "PRIVATE", "PRIVATE" }, { 0xACE069, "ISAAC Instruments", "ISAAC-INSTRUMENTS" }, { 0xACE215, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xACE348, "MadgeTech, Inc", "MADGETECH" }, { 0xACE42E, "SK hynix", "SK-HYNIX" }, { 0xACE64B, "Shenzhen Baojia Battery Technology Co., Ltd.", "SHENZHEN-BAOJIA-BATTERY" }, { 0xACE87B, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xACE87E, "Bytemark Computer Consulting Ltd", "BYTEMARK-CONSULTING" }, { 0xACE97F, "IoT Tech Limited", "IOT-TECH" }, { 0xACE9AA, "Hay Systems Ltd", "HAY" }, { 0xACEA6A, "GENIX INFOCOMM CO., LTD.", "GENIX-INFOCOMM" }, { 0xACEE3B, "6harmonics Inc", "6HARMONICS" }, { 0xACF0B2, "Becker Electronics Taiwan Ltd.", "BECKER-ELECTRONICS-TAIWAN" }, { 0xACF1DF, "D-Link International", "D-LINK" }, { 0xACF2C5, "Cisco", "CISCO" }, { 0xACF7F3, "XIAOMI CORPORATION", "XIAOMI" }, { 0xACF97E, "ELESYS INC.", "ELESYS" }, { 0xACFDEC, "Apple, Inc", "APPLE" }, { 0xB00594, "Liteon Technology Corporation", "LITEON" }, { 0xB01203, "Dynamics Hong Kong Limited", "DYNAMICS-HONG-KONG" }, { 0xB01266, "Futaba-Kikaku", "FUTABA-KIKAKU" }, { 0xB01408, "LIGHTSPEED INTERNATIONAL CO.", "LIGHTSPEED" }, { 0xB01743, "EDISON GLOBAL CIRCUITS LLC", "EDISON-GLOBAL-CIRCUITS-LLC" }, { 0xB01B7C, "Ontrol A.S.", "ONTROL-A-S" }, { 0xB01C91, "Elim Co", "ELIM" }, { 0xB024F3, "Progeny Systems", "PROGENY" }, { 0xB0358D, "Nokia Corporation", "NOKIA" }, { 0xB03829, "Siliconware Precision Industries Co., Ltd.", "SILICONWARE-PRECISION-INDUSTRIES" }, { 0xB03850, "Nanjing CAS-ZDC IOT SYSTEM CO.,LTD", "NANJING-CAS-ZDC-IOT-SYSTEM" }, { 0xB0435D, "NuLEDs, Inc.", "NULEDS" }, { 0xB04545, "YACOUB Automation GmbH", "YACOUB-AUTOMATION" }, { 0xB046FC, "MitraStar Technology Corp.", "MITRASTAR" }, { 0xB0487A, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xB04C05, "Fresenius Medical Care Deutschland GmbH", "FRESENIUS-MEDICAL-CARE-DEUTSCHLAND" }, { 0xB050BC, "SHENZHEN BASICOM ELECTRONIC CO.,LTD.", "SHENZHEN-BASICOM" }, { 0xB0518E, "Holl technology CO.Ltd.", "HOLL" }, { 0xB058C4, "Broadcast Microwave Services, Inc", "BROADCAST-MICROWAVE-SERVICES" }, { 0xB05B1F, "THERMO FISHER SCIENTIFIC S.P.A.", "THERMO-FISHER-SCIENTIFIC-S-P-A" }, { 0xB05CE5, "Nokia Corporation", "NOKIA" }, { 0xB06563, "Shanghai Railway Communication Factory", "SHANGHAI-RAILWAY-COMMUNICATION-FACTORY" }, { 0xB065BD, "Apple", "APPLE" }, { 0xB068B6, "Hangzhou OYE Technology Co. Ltd", "HANGZHOU-OYE" }, { 0xB06CBF, "3ality Digital Systems GmbH", "3ALITY-DIGITAL" }, { 0xB0750C, "QA Cafe", "QA-CAFE" }, { 0xB075D5, "ZTE Corporation", "ZTE" }, { 0xB077AC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xB07908, "Cummings Engineering", "CUMMINGS-ENGINEERING" }, { 0xB0793C, "Revolv Inc", "REVOLV" }, { 0xB07994, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xB07D62, "Dipl.-Ing. H. Horstmann GmbH", "DIPL--ING-H-HORSTMANN" }, { 0xB0808C, "Laser Light Engines", "LASER-LIGHT-ENGINES" }, { 0xB081D8, "I-sys Corp", "I-SYS" }, { 0xB08807, "Strata Worldwide", "STRATA-WORLDWIDE" }, { 0xB08991, "LGE", "LGE" }, { 0xB08E1A, "URadio Systems Co., Ltd", "URADIO" }, { 0xB09074, "Fulan Electronics Limited", "FULAN-ELECTRONICS" }, { 0xB09134, "Taleo", "TALEO" }, { 0xB0973A, "E-Fuel Corporation", "E-FUEL" }, { 0xB0989F, "LG CNS", "LG-CNS" }, { 0xB09928, "Fujitsu Limited", "FUJITSU" }, { 0xB09AE2, "STEMMER IMAGING GmbH", "STEMMER-IMAGING" }, { 0xB09BD4, "GNH Software India Private Limited", "GNH-SOFTWARE-INDIA-PRIVATE" }, { 0xB09FBA, "Apple", "APPLE" }, { 0xB0A10A, "Pivotal Systems Corporation", "PIVOTAL" }, { 0xB0A72A, "Ensemble Designs, Inc.", "ENSEMBLE-DESIGNS" }, { 0xB0A86E, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xB0AA36, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD.", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xB0ACFA, "Fujitsu Limited", "FUJITSU" }, { 0xB0ADAA, "Avaya, Inc", "AVAYA" }, { 0xB0B2DC, "Zyxel Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xB0B32B, "Slican Sp. z o.o.", "SLICAN-SP-Z-O-O" }, { 0xB0B448, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB0B8D5, "Nanjing Nengrui Auto Equipment CO.,Ltd", "NANJING-NENGRUI-AUTO-EQUIPMENT" }, { 0xB0BD6D, "Echostreams Innovative Solutions", "ECHOSTREAMS-INNOVATIVE-SOLUTIONS" }, { 0xB0BDA1, "ZAKLAD ELEKTRONICZNY SIMS", "ZAKLAD-ELEKTRONICZNY-SIMS" }, { 0xB0BF99, "WIZITDONGDO", "WIZITDONGDO" }, { 0xB0C4E7, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xB0C69A, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xB0C745, "Buffalo Inc.", "BUFFALO" }, { 0xB0C83F, "Jiangsu Cynray IOT Co., Ltd.", "JIANGSU-CYNRAY-IOT" }, { 0xB0C8AD, "People Power Company", "PEOPLE-POWER-COMPANY" }, { 0xB0C95B, "Beijing Symtech CO.,LTD", "BEIJING-SYMTECH" }, { 0xB0CE18, "Zhejiang shenghui lighting co.,Ltd", "ZHEJIANG-SHENGHUI-LIGHTING" }, { 0xB0CF4D, "MI-Zone Technology Ireland", "MI-ZONE-IRELAND" }, { 0xB0D09C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0D2F5, "Vello Systems, Inc.", "VELLO" }, { 0xB0D7C5, "STP KFT", "STP-KFT" }, { 0xB0DF3A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0E39D, "CAT SYSTEM CO.,LTD.", "CAT-SYSTEM" }, { 0xB0E50E, "NRG SYSTEMS INC", "NRG" }, { 0xB0E754, "2Wire", "2WIRE" }, { 0xB0E892, "SEIKO EPSON CORPORATION", "SEIKO-EPSON" }, { 0xB0E97E, "Advanced Micro Peripherals", "ADVANCED-MICRO-PERIPHERALS" }, { 0xB0EC71, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB0EE45, "AzureWave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xB0F1BC, "Dhemax Ingenieros Ltda", "DHEMAX-INGENIEROS-LTDA" }, { 0xB0FAEB, "Cisco", "CISCO" }, { 0xB0FEBD, "PRIVATE", "PRIVATE" }, { 0xB4009C, "CableWorld Ltd.", "CABLEWORLD" }, { 0xB40142, "GCI Science & Technology Co.,LTD", "GCI-SCIENCE" }, { 0xB40418, "Smartchip Integrated Inc.", "SMARTCHIP-INTEGRATED" }, { 0xB407F9, "SAMSUNG ELECTRO-MECHANICS", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xB40832, "TC Communications", "TC-COMMUNICATION" }, { 0xB40B7A, "Brusa Elektronik AG", "BRUSA-ELEKTRONIK" }, { 0xB40C25, "Palo Alto Networks", "PALO-ALTO-NETWORKS" }, { 0xB40E96, "HERAN", "HERAN" }, { 0xB40EDC, "LG-Ericsson Co.,Ltd.", "LG-ERICSSON" }, { 0xB41489, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xB41513, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xB418D1, "Apple", "APPLE" }, { 0xB41DEF, "Internet Laboratories, Inc.", "INTERNET-LABORATORIES" }, { 0xB4211D, "Beijing GuangXin Technology Co., Ltd", "BEIJING-GUANGXIN" }, { 0xB4218A, "Dog Hunter LLC", "DOG-HUNTER-LLC" }, { 0xB424E7, "Codetek Technology Co.,Ltd", "CODETEK" }, { 0xB428F1, "E-Prime Co., Ltd.", "E-PRIME" }, { 0xB42A39, "ORBIT MERRET, spol. s r. o.", "ORBIT-MERRET-SPOL-S-R-O" }, { 0xB42C92, "Zhejiang Weirong Electronic Co., Ltd", "ZHEJIANG-WEIRONG" }, { 0xB42CBE, "Direct Payment Solutions Limited", "DIRECT-PAYMENT-SOLUTIONS" }, { 0xB431B8, "Aviwest", "AVIWEST" }, { 0xB4346C, "MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED", "MATSUNICHI-DIGITAL-HONG-KONG" }, { 0xB43564, "Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd.", "FUJIAN-TIAN-CHENG-ELECTRON-SCIENCE-TECHNICAL-DEVELOPMENT" }, { 0xB435F7, "Zhejiang Pearmain Electronics Co.ltd.", "ZHEJIANG-PEARMAIN-ELECTRONICS" }, { 0xB43741, "Consert, Inc.", "CONSERT" }, { 0xB439D6, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0xB43A28, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB43DB2, "Degreane Horizon", "DEGREANE-HORIZON" }, { 0xB43E3B, "Viableware, Inc", "VIABLEWARE" }, { 0xB4417A, "ShenZhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xB4430D, "Broadlink Pty Ltd", "BROADLINK-PTY" }, { 0xB44CC2, "NR ELECTRIC CO., LTD", "NR-ELECTRIC" }, { 0xB451F9, "NB Software", "NB-SOFTWARE" }, { 0xB45253, "Seagate Technology", "SEAGATE" }, { 0xB4527D, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xB4527E, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xB45570, "Borea", "BOREA" }, { 0xB45861, "CRemote, LLC", "CREMOTE-LLC" }, { 0xB45CA4, "Thing-talk Wireless Communication Technologies Corporation Limited", "THING-TALK-WIRELESS-COMMUNICATION-TECHNOLOGIES" }, { 0xB461FF, "Lumigon A/S", "LUMIGON-A/S" }, { 0xB46238, "Exablox", "EXABLOX" }, { 0xB46293, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB462AD, "raytest GmbH", "RAYTEST" }, { 0xB467E9, "Qingdao GoerTek Technology Co., Ltd.", "QINGDAO-GOERTEK" }, { 0xB4749F, "askey computer corp", "ASKEY" }, { 0xB4750E, "Belkin International Inc.", "BELKIN" }, { 0xB47F5E, "Foresight Manufacture (S) Pte Ltd", "FORESIGHT-MANUFACTURE-S-PTE" }, { 0xB48255, "Research Products Corporation", "RESEARCH-PRODUCTS" }, { 0xB4827B, "AKG Acoustics GmbH", "AKG-ACOUSTICS" }, { 0xB482C5, "Relay2, Inc.", "RELAY2" }, { 0xB482FE, "Askey Computer Corp", "ASKEY" }, { 0xB48547, "Amptown System Company GmbH", "AMPTOWN-SYSTEM-COMPANY" }, { 0xB48910, "Coster T.E. S.P.A.", "COSTER-T-E-S-P-A" }, { 0xB4944E, "WeTelecom Co., Ltd.", "WETELECOM" }, { 0xB49842, "zte corporation", "ZTE" }, { 0xB4994C, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB499BA, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xB49DB4, "Axion Technologies Inc.", "AXION-TECHNOLOGIES" }, { 0xB49EE6, "SHENZHEN TECHNOLOGY CO LTD", "SHENZHEN" }, { 0xB4A4B5, "Zen Eye Co.,Ltd", "ZEN-EYE" }, { 0xB4A4E3, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xB4A5A9, "MODI GmbH", "MODI" }, { 0xB4A82B, "Histar Digital Electronics Co., Ltd.", "HISTAR-DIGITAL-ELECTRONICS" }, { 0xB4A95A, "Avaya, Inc", "AVAYA" }, { 0xB4AA4D, "Ensequence, Inc.", "ENSEQUENCE" }, { 0xB4AB2C, "MtM Technology Corporation", "MTM" }, { 0xB4B017, "Avaya, Inc", "AVAYA" }, { 0xB4B362, "ZTE Corporation", "ZTE" }, { 0xB4B52F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xB4B5AF, "Minsung Electronics", "MINSUNG-ELECTRONICS" }, { 0xB4B676, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB4B88D, "Thuh Company", "THUH-COMPANY" }, { 0xB4C44E, "VXL eTech Pvt Ltd", "VXL-ETECH-PVT" }, { 0xB4C799, "Motorola Solutions Inc.", "MOTOROLA-SOLUTIONS" }, { 0xB4C810, "UMPI Elettronica", "UMPI-ELETTRONICA" }, { 0xB4CCE9, "PROSYST", "PROSYST" }, { 0xB4CFDB, "Shenzhen Jiuzhou Electric Co.,LTD", "SHENZHEN-JIUZHOU-ELECTRIC" }, { 0xB4D8A9, "BetterBots", "BETTERBOTS" }, { 0xB4D8DE, "iota Computing, Inc.", "IOTA-COMPUTING" }, { 0xB4DD15, "ControlThings Oy Ab", "CONTROLTHINGS-OY-AB" }, { 0xB4DF3B, "Chromlech", "CHROMLECH" }, { 0xB4DFFA, "Litemax Electronics Inc.", "LITEMAX-ELECTRONICS" }, { 0xB4E0CD, "Fusion-io, Inc", "FUSION-IO" }, { 0xB4E1EB, "PRIVATE", "PRIVATE" }, { 0xB4E9B0, "Cisco", "CISCO" }, { 0xB4ED19, "Pie Digital, Inc.", "PIE-DIGITAL" }, { 0xB4ED54, "Wohler Technologies", "WOHLER-TECHNOLOGIES" }, { 0xB4EED4, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xB4F0AB, "Apple", "APPLE" }, { 0xB4F2E8, "Pace plc", "PACE-PLC" }, { 0xB4F323, "PETATEL INC.", "PETATEL" }, { 0xB4FC75, "SEMA Electronics(HK) CO.,LTD", "SEMA-ELECTRONICS-HK" }, { 0xB4FE8C, "Centro Sicurezza Italia SpA", "CENTRO-SICUREZZA-ITALIA-SPA" }, { 0xB80305, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB80415, "Bayan Audio", "BAYAN-AUDIO" }, { 0xB80B9D, "ROPEX Industrie-Elektronik GmbH", "ROPEX-INDUSTRIE-ELEKTRONIK" }, { 0xB81413, "Keen High Holding(HK) Ltd.", "KEEN-HIGH-HOLDING-HK" }, { 0xB81619, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xB817C2, "Apple", "APPLE" }, { 0xB81999, "Nesys", "NESYS" }, { 0xB820E7, "Guangzhou Horizontal Information & Network Integration Co. Ltd", "GUANGZHOU-HORIZONTAL-INFORMATION-NETWORK-INTEGRATION" }, { 0xB82410, "Magneti Marelli Slovakia s.r.o.", "MAGNETI-MARELLI-SLOVAKIA-S-R-O" }, { 0xB8241A, "SWEDA INFORMATICA LTDA", "SWEDA-INFORMATICA-LTDA" }, { 0xB8266C, "ANOV France", "ANOV-FRANCE" }, { 0xB826D4, "Furukawa Industrial S.A. Produtos Elétricos", "FURUKAWA-INDUSTRIAL-PRODUTOS-ELéTRICOS" }, { 0xB827EB, "Raspberry Pi Foundation", "RASPBERRY-PI-FOUNDATION" }, { 0xB8288B, "Parker Hannifin", "PARKER-HANNIFIN" }, { 0xB829F7, "Blaster Tech", "BLASTER-TECH" }, { 0xB82ADC, "EFR Europäische Funk-Rundsteuerung GmbH", "EFR-EUROPäISCHE-FUNK-RUNDSTEUERUNG" }, { 0xB82CA0, "Honeywell HomMed", "HONEYWELL-HOMMED" }, { 0xB830A8, "Road-Track Telematics Development", "ROAD-TRACK-TELEMATICS-DEVELOPMENT" }, { 0xB836D8, "Videoswitch", "VIDEOSWITCH" }, { 0xB838CA, "Kyokko Tsushin System CO.,LTD", "KYOKKO-TSUSHIN-SYSTEM" }, { 0xB83A7B, "Worldplay (Canada) Inc.", "WORLDPLAY-CANADA" }, { 0xB83D4E, "Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch", "SHENZHEN-CULTRAVIEW-DIGITAL-SHANGHAI-BRANCH" }, { 0xB83E59, "Roku, Inc", "ROKU" }, { 0xB8415F, "ASP AG", "ASP" }, { 0xB843E4, "Vlatacom", "VLATACOM" }, { 0xB847C6, "SanJet Technology Corp.", "SANJET" }, { 0xB85510, "Zioncom Electronics (Shenzhen) Ltd.", "ZIONCOM-ELECTRONICS-SHENZHEN" }, { 0xB85810, "NUMERA, INC.", "NUMERA" }, { 0xB85AF7, "Ouya, Inc", "OUYA" }, { 0xB85AFE, "Handaer Communication Technology (Beijing) Co., Ltd", "HANDAER-COMMUNICATION-BEIJING" }, { 0xB85E7B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB86091, "Onnet Technologies and Innovations LLC", "ONNET-TECHNOLOGIES-AND-INNOVATIONS-LLC" }, { 0xB8616F, "Accton Wireless Broadband(AWB), Corp.", "ACCTON-WIRELESS-BROADBAND-AWB" }, { 0xB8621F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xB863BC, "ROBOTIS, Co, Ltd", "ROBOTIS" }, { 0xB86491, "CK Telecom Ltd", "CK-TELECOM" }, { 0xB8653B, "Bolymin, Inc.", "BOLYMIN" }, { 0xB86B23, "Toshiba", "TOSHIBA" }, { 0xB870F4, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xB87424, "Viessmann Elektronik GmbH", "VIESSMANN-ELEKTRONIK" }, { 0xB87447, "Convergence Technologies", "CONVERGENCE-TECHNOLOGIES" }, { 0xB8763F, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xB877C3, "Decagon Devices, Inc.", "DECAGON-DEVICES" }, { 0xB8782E, "Apple", "APPLE" }, { 0xB8797E, "Secure Meters (UK) Limited", "SECURE-METERS-UK" }, { 0xB87AC9, "Siemens Ltd.", "SIEMENS" }, { 0xB8871E, "Good Mind Industries Co., Ltd.", "GOOD-MIND-INDUSTRIES" }, { 0xB887A8, "Step Ahead Innovations Inc.", "STEP-AHEAD-INNOVATIONS" }, { 0xB888E3, "COMPAL INFORMATION (KUNSHAN) CO., LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0xB889CA, "ILJIN ELECTRIC Co., Ltd.", "ILJIN-ELECTRIC" }, { 0xB88A60, "Intel Corporate", "INTEL-CORPORATE" }, { 0xB88D12, "Apple", "APPLE" }, { 0xB88E3A, "Infinite Technologies JLT", "INFINITE-TECHNOLOGIES-JLT" }, { 0xB88F14, "Analytica GmbH", "ANALYTICA" }, { 0xB8921D, "BG T&A", "BG-T-A" }, { 0xB894D2, "Retail Innovation HTT AB", "RETAIL-INNOVATION-HTT-AB" }, { 0xB89674, "AllDSP GmbH & Co. KG", "ALLDSP" }, { 0xB8975A, "BIOSTAR Microtech Int'l Corp.", "BIOSTAR-MICROTECH" }, { 0xB898B0, "Atlona Inc.", "ATLONA" }, { 0xB898F7, "Gionee Communication Equipment Co,Ltd.ShenZhen", "GIONEE-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0xB89AED, "OceanServer Technology, Inc", "OCEANSERVER" }, { 0xB89BC9, "SMC Networks Inc", "SMC-NETWORKS" }, { 0xB8A386, "D-Link International", "D-LINK" }, { 0xB8A3E0, "BenRui Technology Co.,Ltd", "BENRUI" }, { 0xB8A8AF, "Logic S.p.A.", "LOGIC-S-P-A" }, { 0xB8AC6F, "Dell Inc", "DELL" }, { 0xB8AE6E, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xB8AF67, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xB8B1C7, "BT&COM CO.,LTD", "BT-COM" }, { 0xB8B42E, "Gionee Communication Equipment Co,Ltd.ShenZhen", "GIONEE-COMMUNICATION-EQUIPMENT-SHENZHEN" }, { 0xB8B7D7, "2GIG Technologies", "2GIG-TECHNOLOGIES" }, { 0xB8B94E, "Shenzhen iBaby Labs, Inc.", "SHENZHEN-IBABY-LABS" }, { 0xB8BA68, "Xi'an Jizhong Digital Communication Co.,Ltd", "XI-AN-JIZHONG-DIGITAL-COMMUNICATION" }, { 0xB8BA72, "Cynove", "CYNOVE" }, { 0xB8BB6D, "ENERES Co.,Ltd.", "ENERES" }, { 0xB8BEBF, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xB8C1A2, "Dragon Path Technologies Co., Limited", "DRAGON-PATH-TECHNOLOGIES" }, { 0xB8C46F, "PRIMMCON INDUSTRIES INC", "PRIMMCON-INDUSTRIES" }, { 0xB8C68E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xB8C716, "Fiberhome Telecommunication Technologies Co.,LTD", "FIBERHOME-TELECOMMUNICATION-TECHNOLOGIES" }, { 0xB8C75D, "Apple", "APPLE" }, { 0xB8C855, "Shanghai GBCOM Communication Technology Co.,Ltd.", "SHANGHAI-GBCOM-COMMUNICATION" }, { 0xB8CA3A, "Dell PCBA Test", "DELL-PCBA-TEST" }, { 0xB8CD93, "Penetek, Inc", "PENETEK" }, { 0xB8CDA7, "Maxeler Technologies Ltd.", "MAXELER-TECHNOLOGIES" }, { 0xB8D06F, "GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE", "GUANGZHOU-HKUST-FOK-YING-TUNG-RESEARCH-INSTITUTE" }, { 0xB8D49D, "M Seven System Ltd.", "M-SEVEN-SYSTEM" }, { 0xB8D9CE, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xB8DAF1, "Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH", "STRAHLENSCHUTZ--ENTWICKLUNGS--UND-AUSRUESTUNGSGESELLSCHAFT-MBH" }, { 0xB8DAF7, "Advanced Photonics, Inc.", "ADVANCED-PHOTONICS" }, { 0xB8DC87, "IAI Corporation", "IAI" }, { 0xB8DF6B, "SpotCam Co., Ltd.", "SPOTCAM" }, { 0xB8E589, "Payter BV", "PAYTER" }, { 0xB8E625, "2Wire", "2WIRE" }, { 0xB8E779, "9Solutions Oy", "9SOLUTIONS-OY" }, { 0xB8E856, "Apple", "APPLE" }, { 0xB8E937, "Sonos, Inc.", "SONOS" }, { 0xB8EE79, "YWire Technologies, Inc.", "YWIRE-TECHNOLOGIES" }, { 0xB8F4D0, "Herrmann Ultraschalltechnik GmbH & Co. Kg", "HERRMANN-ULTRASCHALLTECHNIK" }, { 0xB8F5E7, "WayTools, LLC", "WAYTOOLS-LLC" }, { 0xB8F6B1, "Apple", "APPLE" }, { 0xB8F732, "Aryaka Networks Inc", "ARYAKA-NETWORKS" }, { 0xB8F828, "Changshu Gaoshida Optoelectronic Technology Co. Ltd.", "CHANGSHU-GAOSHIDA-OPTOELECTRONIC" }, { 0xB8F934, "Sony Ericsson Mobile Communications AB", "SONY-ERICSSON-MOBILE-COMMUNICATION-AB" }, { 0xB8FD32, "Zhejiang ROICX Microelectronics", "ZHEJIANG-ROICX-MICROELECTRONICS" }, { 0xB8FF61, "Apple", "APPLE" }, { 0xB8FF6F, "Shanghai Typrotech Technology Co.Ltd", "SHANGHAI-TYPROTECH" }, { 0xB8FFFE, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xBC0200, "Stewart Audio", "STEWART-AUDIO" }, { 0xBC0543, "AVM GmbH", "AVM" }, { 0xBC0DA5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xBC0F2B, "FORTUNE TECHGROUP CO.,LTD", "FORTUNE-TECHGROUP" }, { 0xBC125E, "Beijing WisVideo INC.", "BEIJING-WISVIDEO" }, { 0xBC1401, "Hitron Technologies. Inc", "HITRON-TECHNOLOGIES" }, { 0xBC14EF, "ITON Technology Limited", "ITON" }, { 0xBC15A6, "Taiwan Jantek Electronics,Ltd.", "TAIWAN-JANTEK-ELECTRONICS" }, { 0xBC1665, "Cisco", "CISCO" }, { 0xBC1A67, "YF Technology Co., Ltd", "YF" }, { 0xBC20A4, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xBC20BA, "Inspur (Shandong) Electronic Information Co., Ltd", "INSPUR-SHANDONG-INFORMATION" }, { 0xBC261D, "HONG KONG TECON TECHNOLOGY", "HONG-KONG-TECON" }, { 0xBC2846, "NextBIT Computing Pvt. Ltd.", "NEXTBIT-COMPUTING-PVT" }, { 0xBC28D6, "Rowley Associates Limited", "ROWLEY-ASSOCIATES" }, { 0xBC2B6B, "Beijing Haier IC Design Co.,Ltd", "BEIJING-HAIER-IC-DESIGN" }, { 0xBC2BD7, "Revogi Innovation Co., Ltd.", "REVOGI-INNOVATION" }, { 0xBC2C55, "Bear Flag Design, Inc.", "BEAR-FLAG-DESIGN" }, { 0xBC2D98, "ThinGlobal LLC", "THINGLOBAL-LLC" }, { 0xBC305B, "Dell Inc.", "DELL" }, { 0xBC307D, "Wistron Neweb Corp.", "WISTRON-NEWEB" }, { 0xBC35E5, "Hydro Systems Company", "HYDRO-COMPANY" }, { 0xBC38D2, "Pandachip Limited", "PANDACHIP" }, { 0xBC39A6, "CSUN System Technology Co.,LTD", "CSUN-SYSTEM" }, { 0xBC3BAF, "Apple", "APPLE" }, { 0xBC3E13, "Accordance Systems Inc.", "ACCORDANCE" }, { 0xBC4100, "Codaco Electronic s.r.o.", "CODACO-S-R-O" }, { 0xBC4377, "Hang Zhou Huite Technology Co.,ltd.", "HANG-ZHOU-HUITE" }, { 0xBC4486, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC4760, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC4B79, "SensingTek", "SENSINGTEK" }, { 0xBC4E3C, "CORE STAFF CO., LTD.", "CORE-STAFF" }, { 0xBC51FE, "Swann Communications Pty Ltd", "SWANN-COMMUNICATION-PTY" }, { 0xBC52B7, "Apple", "APPLE" }, { 0xBC5FF4, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0xBC629F, "Telenet Systems P. Ltd.", "TELENET-P" }, { 0xBC6778, "Apple", "APPLE" }, { 0xBC6784, "Environics Oy", "ENVIRONICS-OY" }, { 0xBC6A16, "tdvine", "TDVINE" }, { 0xBC6A29, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xBC6E76, "Green Energy Options Ltd", "GREEN-ENERGY-OPTIONS" }, { 0xBC71C1, "XTrillion, Inc.", "XTRILLION" }, { 0xBC72B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC764E, "Rackspace US, Inc.", "RACKSPACE-US" }, { 0xBC7670, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0xBC7737, "Intel Corporate", "INTEL-CORPORATE" }, { 0xBC779F, "SBM Co., Ltd.", "SBM" }, { 0xBC79AD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xBC7DD1, "Radio Data Comms", "RADIO-DATA-COMMS" }, { 0xBC811F, "Ingate Systems", "INGATE" }, { 0xBC8199, "BASIC Co.,Ltd.", "BASIC" }, { 0xBC83A7, "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LT", "SHENZHEN-CHUANGWEI-RGB-ELECTRONICS-LT" }, { 0xBC851F, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xBC8556, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xBC8893, "VILLBAU Ltd.", "VILLBAU" }, { 0xBC8B55, "NPP ELIKS America Inc. DBA T&M Atlantic", "NPP-ELIKS-AMERICA-DBA-T-M-ATLANTIC" }, { 0xBC8CCD, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xBC926B, "Apple", "APPLE" }, { 0xBC9680, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xBC9889, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xBC99BC, "FonSee Technology Inc.", "FONSEE" }, { 0xBC9DA5, "DASCOM Europe GmbH", "DASCOM-EUROPE" }, { 0xBCA4E1, "Nabto", "NABTO" }, { 0xBCA9D6, "Cyber-Rain, Inc.", "CYBER-RAIN" }, { 0xBCAEC5, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xBCB181, "SHARP CORPORATION", "SHARP" }, { 0xBCB1F3, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xBCB852, "Cybera, Inc.", "CYBERA" }, { 0xBCBAE1, "AREC Inc.", "AREC" }, { 0xBCBBC9, "Kellendonk Elektronik GmbH", "KELLENDONK-ELEKTRONIK" }, { 0xBCC168, "DinBox Sverige AB", "DINBOX-SVERIGE-AB" }, { 0xBCC23A, "Thomson Video Networks", "THOMSON-VIDEO-NETWORKS" }, { 0xBCC61A, "SPECTRA EMBEDDED SYSTEMS", "SPECTRA-EMBEDDED" }, { 0xBCC6DB, "Nokia Corporation", "NOKIA" }, { 0xBCC810, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xBCCD45, "VOISMART", "VOISMART" }, { 0xBCCFCC, "HTC Corporation", "HTC" }, { 0xBCD177, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xBCD5B6, "d2d technologies", "D2D-TECHNOLOGIES" }, { 0xBCD940, "ASR Co,.Ltd.", "ASR" }, { 0xBCE09D, "Eoslink", "EOSLINK" }, { 0xBCE59F, "WATERWORLD Technology Co.,LTD", "WATERWORLD" }, { 0xBCEA2B, "CityCom GmbH", "CITYCOM" }, { 0xBCEE7B, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xBCF2AF, "devolo AG", "DEVOLO" }, { 0xBCF5AC, "LG Electronics", "LG-ELECTRONICS" }, { 0xBCF685, "D-Link International", "D-LINK" }, { 0xBCFE8C, "Altronic, LLC", "ALTRONIC-LLC" }, { 0xBCFFAC, "TOPCON CORPORATION", "TOPCON" }, { 0xC00D7E, "Additech, Inc.", "ADDITECH" }, { 0xC011A6, "Fort-Telecom ltd.", "FORT-TELECOM" }, { 0xC01242, "Alpha Security Products", "ALPHA-SECURITY-PRODUCTS" }, { 0xC0143D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC01885, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC01E9B, "Pixavi AS", "PIXAVI-AS" }, { 0xC02250, "PRIVATE", "PRIVATE" }, { 0xC02506, "AVM GmbH", "AVM" }, { 0xC0255C, "Cisco", "CISCO" }, { 0xC027B9, "Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd.", "BEIJING-NATIONAL-RAILWAY-RESEARCH-DESIGN-INSTITUTE-OF-SIGNAL-COMMUNICATION" }, { 0xC02973, "Audyssey Laboratories Inc.", "AUDYSSEY-LABORATORIES" }, { 0xC029F3, "XySystem", "XYSYSTEM" }, { 0xC02BFC, "iNES. applied informatics GmbH", "INES-APPLIED-INFORMATICS" }, { 0xC02C7A, "Shen Zhen Horn audio Co., Ltd.", "SHEN-ZHEN-HORN-AUDIO" }, { 0xC034B4, "Gigastone Corporation", "GIGASTONE" }, { 0xC03580, "A&R TECH", "A-R-TECH" }, { 0xC035BD, "Velocytech Aps", "VELOCYTECH-APS" }, { 0xC038F9, "Nokia Danmark A/S", "NOKIA-DANMARK-A/S" }, { 0xC03B8F, "Minicom Digital Signage", "MINICOM-DIGITAL-SIGNAGE" }, { 0xC03E0F, "BSkyB Ltd", "BSKYB" }, { 0xC03F0E, "NETGEAR", "NETGEAR" }, { 0xC03F2A, "Biscotti, Inc.", "BISCOTTI" }, { 0xC03FD5, "Elitegroup Computer Systems Co., LTD", "ELITEGROUP" }, { 0xC041F6, "LG Electronics Inc", "LG-ELECTRONICS" }, { 0xC04301, "Epec Oy", "EPEC-OY" }, { 0xC044E3, "Shenzhen Sinkna Electronics Co., LTD", "SHENZHEN-SINKNA-ELECTRONICS" }, { 0xC0493D, "MAITRISE TECHNOLOGIQUE", "MAITRISE-TECHNOLOGIQUE" }, { 0xC04A00, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xC04DF7, "SERELEC", "SERELEC" }, { 0xC057BC, "Avaya, Inc", "AVAYA" }, { 0xC058A7, "Pico Systems Co., Ltd.", "PICO" }, { 0xC05E6F, "V. Stonkaus firma \"Kodinis Raktas\"", "V-STONKAUS-FIRMA-KODINIS-RAKTAS" }, { 0xC05E79, "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD", "SHENZHEN-HUAXUN-ARK-TECHNOLOGIES" }, { 0xC0626B, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC06394, "Apple", "APPLE" }, { 0xC064C6, "Nokia Corporation", "NOKIA" }, { 0xC06599, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC067AF, "Cisco", "CISCO" }, { 0xC06C0F, "Dobbs Stanford", "DOBBS-STANFORD" }, { 0xC06C6D, "MagneMotion, Inc.", "MAGNEMOTION" }, { 0xC07BBC, "Cisco", "CISCO" }, { 0xC07E40, "SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD", "SHENZHEN-XDK-COMMUNICATION-EQUIPMENT" }, { 0xC08170, "Effigis GeoSolutions", "EFFIGIS-GEOSOLUTIONS" }, { 0xC0830A, "2Wire", "2WIRE" }, { 0xC0847A, "Apple", "APPLE" }, { 0xC0885B, "SnD Tech Co., Ltd.", "SND-TECH" }, { 0xC08ADE, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC08B6F, "S I Sistemas Inteligentes Eletrônicos Ltda", "S-I-SISTEMAS-INTELIGENTES-ELETRôNICOS-LTDA" }, { 0xC08C60, "Cisco", "CISCO" }, { 0xC09132, "Patriot Memory", "PATRIOT-MEMORY" }, { 0xC09134, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0xC098E5, "University of Michigan", "UNIVERSITY-OF-MICHIGAN" }, { 0xC09C92, "COBY", "COBY" }, { 0xC09F42, "Apple", "APPLE" }, { 0xC0A0BB, "D-Link International", "D-LINK" }, { 0xC0A0C7, "FAIRFIELD INDUSTRIES", "FAIRFIELD-INDUSTRIES" }, { 0xC0A0DE, "Multi Touch Oy", "MULTI-TOUCH-OY" }, { 0xC0A0E2, "Eden Innovations", "EDEN-INNOVATIONS" }, { 0xC0A26D, "Abbott Point of Care", "ABBOTT-POINT-OF-CARE" }, { 0xC0A364, "3D Systems Massachusetts", "3D-MASSACHUSETTS" }, { 0xC0A39E, "EarthCam, Inc.", "EARTHCAM" }, { 0xC0AA68, "OSASI Technos Inc.", "OSASI-TECHNOS" }, { 0xC0AC54, "SAGEMCOM", "SAGEMCOM" }, { 0xC0B339, "Comigo Ltd.", "COMIGO" }, { 0xC0B357, "Yoshiki Electronics Industry Ltd.", "YOSHIKI-ELECTRONICS-INDUSTRY" }, { 0xC0B8B1, "BitBox Ltd", "BITBOX" }, { 0xC0BAE6, "Application Solutions (Electronics and Vision) Ltd", "APPLICATION-SOLUTIONS-ELECTRONICS-AND-VISION" }, { 0xC0BD42, "ZPA Smart Energy a.s.", "ZPA-SMART-ENERGY-A-S" }, { 0xC0C1C0, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0xC0C3B6, "Automatic Systems", "AUTOMATIC" }, { 0xC0C520, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC0C569, "SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD", "SHANGHAI-LYNUC-CNC" }, { 0xC0C687, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xC0C946, "MITSUYA LABORATORIES INC.", "MITSUYA-LABORATORIES" }, { 0xC0CB38, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC0CFA3, "Creative Electronics & Software, Inc.", "CREATIVE-ELECTRONICS-SOFTWARE" }, { 0xC0D044, "SAGEMCOM", "SAGEMCOM" }, { 0xC0D962, "Askey Computer Corp.", "ASKEY" }, { 0xC0DA74, "Hangzhou Sunyard Technology Co., Ltd.", "HANGZHOU-SUNYARD" }, { 0xC0DF77, "Conrad Electronic SE", "CONRAD-SE" }, { 0xC0E422, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC0E54E, "DENX Computer Systems GmbH", "DENX" }, { 0xC0EAE4, "Sonicwall", "SONICWALL" }, { 0xC0F1C4, "Pacidal Corporation Ltd.", "PACIDAL" }, { 0xC0F8DA, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC0F991, "GME Standard Communications P/L", "GME-STANDARD-COMMUNICATION-P/L" }, { 0xC40142, "MaxMedia Technology Limited", "MAXMEDIA" }, { 0xC4017C, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC401B1, "SeekTech INC", "SEEKTECH" }, { 0xC40415, "NETGEAR INC.,", "NETGEAR" }, { 0xC40528, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xC40938, "Fujian Star-net Communication Co., Ltd", "FUJIAN-STAR-NET-COMMUNICATION" }, { 0xC40ACB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC40F09, "Hermes electronic GmbH", "HERMES" }, { 0xC4108A, "Ruckus Wireless", "RUCKUS-WIRELESS" }, { 0xC4143C, "Cisco", "CISCO" }, { 0xC416FA, "Prysm Inc", "PRYSM" }, { 0xC417FE, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC4198B, "Dominion Voting Systems Corporation", "DOMINION-VOTING" }, { 0xC419EC, "Qualisys AB", "QUALISYS-AB" }, { 0xC41ECE, "HMI Sources Ltd.", "HMI-SOURCES" }, { 0xC421C8, "KYOCERA Corporation", "KYOCERA" }, { 0xC4237A, "WhizNets Inc.", "WHIZNETS" }, { 0xC4242E, "Galvanic Applied Sciences Inc", "GALVANIC-APPLIED-SCIENCES" }, { 0xC42628, "Airo Wireless", "AIRO-WIRELESS" }, { 0xC42795, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0xC4291D, "KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.", "KLEMSAN-ELEKTRIK-ELEKTRONIK-SAN-VE-TIC-AS" }, { 0xC42C03, "Apple", "APPLE" }, { 0xC436DA, "Rusteletech Ltd.", "RUSTELETECH" }, { 0xC438D3, "TAGATEC CO.,LTD", "TAGATEC" }, { 0xC4393A, "SMC Networks Inc", "SMC-NETWORKS" }, { 0xC43A9F, "Siconix Inc.", "SICONIX" }, { 0xC43C3C, "CYBELEC SA", "CYBELEC" }, { 0xC43DC7, "NETGEAR", "NETGEAR" }, { 0xC4438F, "LG Electronics", "LG-ELECTRONICS" }, { 0xC44567, "SAMBON PRECISON and ELECTRONICS", "SAMBON-PRECISON-AND-ELECTRONICS" }, { 0xC445EC, "Shanghai Yali Electron Co.,LTD", "SHANGHAI-YALI-ELECTRON" }, { 0xC44619, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xC44838, "Satcom Direct, Inc.", "SATCOM-DIRECT" }, { 0xC44AD0, "FIREFLIES SYSTEMS", "FIREFLIES" }, { 0xC44B44, "Omniprint Inc.", "OMNIPRINT" }, { 0xC44EAC, "Shenzhen Shiningworth Technology Co., Ltd.", "SHENZHEN-SHININGWORTH" }, { 0xC45444, "QUANTA COMPUTER INC.", "QUANTA" }, { 0xC455A6, "Cadac Holdings Ltd", "CADAC-HOLDINGS" }, { 0xC455C2, "Bach-Simpson", "BACH-SIMPSON" }, { 0xC45600, "Galleon Embedded Computing", "GALLEON-EMBEDDED-COMPUTING" }, { 0xC458C2, "Shenzhen TATFOOK Technology Co., Ltd.", "SHENZHEN-TATFOOK" }, { 0xC45976, "Fugoo Coorporation", "FUGOO-COORPORATION" }, { 0xC45DD8, "HDMI Forum", "HDMI-FORUM" }, { 0xC46044, "Everex Electronics Limited", "EVEREX-ELECTRONICS" }, { 0xC462EA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC46354, "U-Raku, Inc.", "U-RAKU" }, { 0xC46413, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC467B5, "Libratone A/S", "LIBRATONE-A/S" }, { 0xC46AB7, "Xiaomi Technology,Inc.", "XIAOMI" }, { 0xC46DF1, "DataGravity", "DATAGRAVITY" }, { 0xC46E1F, "TP-LINK TECHNOLOGIES CO.,LTD", "TP-LINK-TECHNOLOGIES" }, { 0xC47130, "Fon Technology S.L.", "FON-S-L" }, { 0xC471FE, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC4731E, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0xC47B2F, "Beijing JoinHope Image Technology Ltd.", "BEIJING-JOINHOPE-IMAGE" }, { 0xC47BA3, "NAVIS Inc.", "NAVIS" }, { 0xC47D4F, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC47DCC, "Motorola Solutions Inc.", "MOTOROLA-SOLUTIONS" }, { 0xC47DFE, "A.N. Solutions GmbH", "A-N-SOLUTIONS" }, { 0xC47F51, "Inventek Systems", "INVENTEK" }, { 0xC4823F, "Fujian Newland Auto-ID Tech. Co,.Ltd.", "FUJIAN-NEWLAND-AUTO-ID-TECH" }, { 0xC4824E, "Changzhou Uchip Electronics Co., LTD.", "CHANGZHOU-UCHIP-ELECTRONICS" }, { 0xC48508, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC488E5, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC49300, "8Devices", "8DEVICES" }, { 0xC49313, "100fio networks technology llc", "100FIO-NETWORKS-LLC" }, { 0xC49380, "Speedytel technology", "SPEEDYTEL" }, { 0xC495A2, "SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD", "SHENZHEN-WEIJIU-INDUSTRY-AND-TRADE-DEVELOPMENT" }, { 0xC49805, "Minieum Networks, Inc", "MINIEUM-NETWORKS" }, { 0xC4A81D, "D-Link International", "D-LINK" }, { 0xC4AAA1, "SUMMIT DEVELOPMENT, spol.s r.o.", "SUMMIT-DEVELOPMENT-SPOL-S-R-O" }, { 0xC4AD21, "MEDIAEDGE Corporation", "MEDIAEDGE" }, { 0xC4B512, "General Electric Digital Energy", "GENERAL-ELECTRIC-DIGITAL-ENERGY" }, { 0xC4BA99, "I+ME Actia Informatik und Mikro-Elektronik GmbH", "I+ME-ACTIA-INFORMATIK-UND-MIKRO-ELEKTRONIK" }, { 0xC4C0AE, "MIDORI ELECTRONIC CO., LTD.", "MIDORI" }, { 0xC4C19F, "National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO)", "NATIONAL-OILWELL-VARCO-INSTRUMENTATION-MONITORING-AND-OPTIMIZATION-NOV-IMO" }, { 0xC4C755, "Beijing HuaqinWorld Technology Co.,Ltd", "BEIJING-HUAQINWORLD" }, { 0xC4CAD9, "Hangzhou H3C Technologies Co., Limited", "HANGZHOU-H3C-TECHNOLOGIES" }, { 0xC4CD45, "Beijing Boomsense Technology CO.,LTD.", "BEIJING-BOOMSENSE" }, { 0xC4D489, "JiangSu Joyque Information Industry Co.,Ltd", "JIANGSU-JOYQUE-INFORMATION-INDUSTRY" }, { 0xC4D655, "Tercel technology co.,ltd", "TERCEL" }, { 0xC4D987, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC4DA26, "NOBLEX SA", "NOBLEX" }, { 0xC4E032, "IEEE 1904.1 Working Group", "IEEE-1904-1-WORKING-GROUP" }, { 0xC4E17C, "U2S co.", "U2S" }, { 0xC4E7BE, "SCSpro Co.,Ltd", "SCSPRO" }, { 0xC4E92F, "AB Sciex", "AB-SCIEX" }, { 0xC4E984, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xC4EBE3, "RRCN SAS", "RRCN-SAS" }, { 0xC4EDBA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC4EEAE, "VSS Monitoring", "VSS-MONITORING" }, { 0xC4EEF5, "Oclaro, Inc.", "OCLARO" }, { 0xC4F464, "Spica international", "SPICA" }, { 0xC4F57C, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xC4FCE4, "DishTV NZ Ltd", "DISHTV-NZ" }, { 0xC80258, "ITW GSE ApS", "ITW-GSE-APS" }, { 0xC802A6, "Beijing Newmine Technology", "BEIJING-NEWMINE" }, { 0xC80718, "TDSi", "TDSI" }, { 0xC80AA9, "Quanta Computer Inc.", "QUANTA" }, { 0xC80E77, "Le Shi Zhi Xin Electronic Technology (Tianjin) Co.,Ltd", "LE-SHI-ZHI-XIN-TIANJIN" }, { 0xC80E95, "OmniLync Inc.", "OMNILYNC" }, { 0xC81479, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC816BD, "HISENSE ELECTRIC CO.,LTD.", "HISENSE-ELECTRIC" }, { 0xC819F7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC81AFE, "DLOGIC GmbH", "DLOGIC" }, { 0xC81E8E, "ADV Security (S) Pte Ltd", "ADV-SECURITY-S-PTE" }, { 0xC81F66, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0xC8208E, "Storagedata", "STORAGEDATA" }, { 0xC8292A, "Barun Electronics", "BARUN-ELECTRONICS" }, { 0xC82A14, "Apple", "APPLE" }, { 0xC82E94, "Halfa Enterprise Co., Ltd.", "HALFA" }, { 0xC83232, "Hunting Innova", "HUNTING-INNOVA" }, { 0xC8334B, "Apple", "APPLE" }, { 0xC835B8, "Ericsson, EAB/RWI/K", "ERICSSON-EAB/RWI/K" }, { 0xC83A35, "Tenda Technology Co., Ltd.", "TENDA" }, { 0xC83B45, "JRI-Maxant", "JRI-MAXANT" }, { 0xC83D97, "Nokia Corporation", "NOKIA" }, { 0xC83E99, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC83EA7, "KUNBUS GmbH", "KUNBUS" }, { 0xC84529, "IMK Networks Co.,Ltd", "IMK-NETWORKS" }, { 0xC84544, "Shanghai Enlogic Electric Technology Co., Ltd.", "SHANGHAI-ENLOGIC-ELECTRIC" }, { 0xC848F5, "MEDISON Xray Co., Ltd", "MEDISON-XRAY" }, { 0xC84C75, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC85645, "Intermas France", "INTERMAS-FRANCE" }, { 0xC85663, "Sunflex Europe GmbH", "SUNFLEX-EUROPE" }, { 0xC86000, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xC864C7, "zte corporation", "ZTE" }, { 0xC86C1E, "Display Systems Ltd", "DISPLAY" }, { 0xC86C87, "Zyxel Communications Corp", "ZYXEL-COMMUNICATION" }, { 0xC86CB6, "Optcom Co., Ltd.", "OPTCOM" }, { 0xC86F1D, "Apple", "APPLE" }, { 0xC87248, "Aplicom Oy", "APLICOM-OY" }, { 0xC87B5B, "zte corporation", "ZTE" }, { 0xC87CBC, "Valink Co., Ltd.", "VALINK" }, { 0xC87D77, "Shenzhen Kingtech Communication Equipment Co.,Ltd", "SHENZHEN-KINGTECH-COMMUNICATION-EQUIPMENT" }, { 0xC87E75, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xC88439, "Sunrise Technologies", "SUNRISE-TECHNOLOGIES" }, { 0xC88447, "Beautiful Enterprise Co., Ltd", "BEAUTIFUL" }, { 0xC8873B, "Net Optics", "NET-OPTICS" }, { 0xC88A83, "Dongguan HuaHong Electronics Co.,Ltd", "DONGGUAN-HUAHONG-ELECTRONICS" }, { 0xC88B47, "Nolangroup S.P.A con Socio Unico", "NOLANGROUP-S-P-A-CON-SOCIO-UNICO" }, { 0xC8903E, "Pakton Technologies", "PAKTON-TECHNOLOGIES" }, { 0xC89346, "MXCHIP Company Limited", "MXCHIP-COMPANY" }, { 0xC89383, "Embedded Automation, Inc.", "EMBEDDED-AUTOMATION" }, { 0xC894D2, "Jiangsu Datang Electronic Products Co., Ltd", "JIANGSU-DATANG-PRODUCTS" }, { 0xC8979F, "Nokia Corporation", "NOKIA" }, { 0xC89C1D, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC89CDC, "ELITEGROUP COMPUTER SYSTEM CO., LTD.", "ELITEGROUP-SYSTEM" }, { 0xC89F42, "VDII Innovation AB", "VDII-INNOVATION-AB" }, { 0xC8A030, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xC8A1B6, "Shenzhen Longway Technologies Co., Ltd", "SHENZHEN-LONGWAY-TECHNOLOGIES" }, { 0xC8A1BA, "Neul Ltd", "NEUL" }, { 0xC8A620, "Nebula, Inc", "NEBULA" }, { 0xC8A70A, "Verizon Business", "VERIZON-BUSINESS" }, { 0xC8A729, "SYStronics Co., Ltd.", "SYSTRONICS" }, { 0xC8AA21, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xC8AACC, "PRIVATE", "PRIVATE" }, { 0xC8AE9C, "Shanghai TYD Elecronic Technology Co. Ltd", "SHANGHAI-TYD-ELECRONIC" }, { 0xC8AF40, "marco Systemanalyse und Entwicklung GmbH", "MARCO-SYSTEMANALYSE-UND-ENTWICKLUNG" }, { 0xC8B373, "Cisco-Linksys, LLC", "CISCO-LINKSYS-LLC" }, { 0xC8B5B7, "Apple", "APPLE" }, { 0xC8BBD3, "Embrane", "EMBRANE" }, { 0xC8BCC8, "Apple", "APPLE" }, { 0xC8BE19, "D-Link International", "D-LINK" }, { 0xC8C126, "ZPM Industria e Comercio Ltda", "ZPM-INDUSTRIA-E-COMERCIO-LTDA" }, { 0xC8C13C, "RuggedTek Hangzhou Co., Ltd", "RUGGEDTEK-HANGZHOU" }, { 0xC8C791, "Zero1.tv GmbH", "ZERO1-TV" }, { 0xC8CBB8, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xC8CD72, "SAGEMCOM", "SAGEMCOM" }, { 0xC8D10B, "Nokia Corporation", "NOKIA" }, { 0xC8D15E, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xC8D1D1, "AGAiT Technology Corporation", "AGAIT" }, { 0xC8D2C1, "Jetlun (Shenzhen) Corporation", "JETLUN-SHENZHEN" }, { 0xC8D3A3, "D-Link International", "D-LINK" }, { 0xC8D5FE, "Shenzhen Zowee Technology Co., Ltd", "SHENZHEN-ZOWEE" }, { 0xC8D719, "Cisco Consumer Products, LLC", "CISCO-CONSUMER-PRODUCTS-LLC" }, { 0xC8DDC9, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xC8DE51, "Integra Networks, Inc.", "INTEGRA-NETWORKS" }, { 0xC8DF7C, "Nokia Corporation", "NOKIA" }, { 0xC8E0EB, "Apple", "APPLE" }, { 0xC8E1A7, "Vertu Corporation Limited", "VERTU" }, { 0xC8EE08, "TANGTOP TECHNOLOGY CO.,LTD", "TANGTOP" }, { 0xC8EE75, "Pishion International Co. Ltd", "PISHION" }, { 0xC8EEA6, "Shenzhen SHX Technology Co., Ltd", "SHENZHEN-SHX" }, { 0xC8EF2E, "Beijing Gefei Tech. Co., Ltd", "BEIJING-GEFEI-TECH" }, { 0xC8F36B, "Yamato Scale Co.,Ltd.", "YAMATO-SCALE" }, { 0xC8F386, "Shenzhen Xiaoniao Technology Co.,Ltd", "SHENZHEN-XIAONIAO" }, { 0xC8F406, "Avaya, Inc", "AVAYA" }, { 0xC8F68D, "S.E.TECHNOLOGIES LIMITED", "S-E-TECHNOLOGIES" }, { 0xC8F704, "Building Block Video", "BUILDING-BLOCK-VIDEO" }, { 0xC8F733, "Intel Corporate", "INTEL-CORPORATE" }, { 0xC8F981, "Seneca s.r.l.", "SENECA-S-R-L" }, { 0xC8F9F9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xC8FB26, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xC8FE30, "Bejing DAYO Mobile Communication Technology Ltd.", "BEJING-DAYO-MOBILE-COMMUNICATION" }, { 0xCC0080, "BETTINI SRL", "BETTINI-SRL" }, { 0xCC047C, "G-WAY Microwave", "G-WAY-MICROWAVE" }, { 0xCC04B4, "Select Comfort", "SELECT-COMFORT" }, { 0xCC051B, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCC07AB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCC08E0, "Apple", "APPLE" }, { 0xCC09C8, "IMAQLIQ LTD", "IMAQLIQ" }, { 0xCC0CDA, "Miljovakt AS", "MILJOVAKT-AS" }, { 0xCC0DEC, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xCC14A6, "Yichun MyEnergy Domain, Inc", "YICHUN-MYENERGY-DOMAIN" }, { 0xCC187B, "Manzanita Systems, Inc.", "MANZANITA" }, { 0xCC1AFA, "zte corporation", "ZTE" }, { 0xCC1EFF, "Metrological Group BV", "METROLOGICAL-GROUP" }, { 0xCC2218, "InnoDigital Co., Ltd.", "INNODIGITAL" }, { 0xCC262D, "Verifi, LLC", "VERIFI-LLC" }, { 0xCC2A80, "Micro-Biz intelligence solutions Co.,Ltd", "MICRO-BIZ-INTELLIGENCE-SOLUTIONS" }, { 0xCC2D8C, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0xCC33BB, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xCC3429, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xCC34D7, "GEWISS S.P.A.", "GEWISS-S-P-A" }, { 0xCC3540, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0xCC398C, "Shiningtek", "SHININGTEK" }, { 0xCC3A61, "SAMSUNG ELECTRO MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xCC3C3F, "SA.S.S. Datentechnik AG", "S-S-DATENTECHNIK" }, { 0xCC3E5F, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xCC43E3, "Trump s.a.", "TRUMP" }, { 0xCC4703, "Intercon Systems Co., Ltd.", "INTERCON" }, { 0xCC4AE1, "Fourtec -Fourier Technologies", "FOURTEC--FOURIER-TECHNOLOGIES" }, { 0xCC4BFB, "Hellberg Safety AB", "HELLBERG-SAFETY-AB" }, { 0xCC4E24, "Brocade Communications Systems, Inc.", "BROCADE-COMMUNICATION" }, { 0xCC501C, "KVH Industries, Inc.", "KVH-INDUSTRIES" }, { 0xCC5076, "Ocom Communications, Inc.", "OCOM-COMMUNICATION" }, { 0xCC52AF, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xCC53B5, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xCC5459, "OnTime Networks AS", "ONTIME-NETWORKS-AS" }, { 0xCC55AD, "RIM", "RIM" }, { 0xCC593E, "TOUMAZ LTD", "TOUMAZ" }, { 0xCC5C75, "Weightech Com. Imp. Exp. Equip. Pesagem Ltda", "WEIGHTECH-COM-IMP-EXP-EQUIP-PESAGEM-LTDA" }, { 0xCC5D4E, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xCC5D57, "Information System Research Institute,Inc.", "INFORMATION-SYSTEM-RESEARCH-INSTITUTE" }, { 0xCC60BB, "Empower RF Systems", "EMPOWER-RF" }, { 0xCC65AD, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCC69B0, "Global Traffic Technologies, LLC", "GLOBAL-TRAFFIC-TECHNOLOGIES-LLC" }, { 0xCC6B98, "Minetec Wireless Technologies", "MINETEC-WIRELESS-TECHNOLOGIES" }, { 0xCC6BF1, "Sound Masking Inc.", "SOUND-MASKING" }, { 0xCC6DA0, "Roku, Inc.", "ROKU" }, { 0xCC6DEF, "TJK Tietolaite Oy", "TJK-TIETOLAITE-OY" }, { 0xCC720F, "Viscount Systems Inc.", "VISCOUNT" }, { 0xCC7498, "Filmetrics Inc.", "FILMETRICS" }, { 0xCC7669, "SEETECH", "SEETECH" }, { 0xCC785F, "Apple", "APPLE" }, { 0xCC7A30, "CMAX Wireless Co., Ltd.", "CMAX-WIRELESS" }, { 0xCC7B35, "zte corporation", "ZTE" }, { 0xCC7D37, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCC7EE7, "Panasonic AVC Networks Company", "PANASONIC-AVC-NETWORKS-COMPANY" }, { 0xCC856C, "SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD", "SHENZHEN-MDK-DIGITAL" }, { 0xCC89FD, "Nokia Corporation", "NOKIA" }, { 0xCC8CE3, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xCC9093, "Hansong Tehnologies", "HANSONG-TEHNOLOGIES" }, { 0xCC912B, "TE Connectivity Touch Solutions", "TE-CONNECTIVITY-TOUCH-SOLUTIONS" }, { 0xCC944A, "Pfeiffer Vacuum GmbH", "PFEIFFER-VACUUM" }, { 0xCC96A0, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0xCC9E00, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xCCA374, "Guangdong Guanglian Electronic Technology Co.Ltd", "GUANGDONG-GUANGLIAN" }, { 0xCCA462, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xCCAF78, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xCCB255, "D-Link International", "D-LINK" }, { 0xCCB3F8, "FUJITSU ISOTEC LIMITED", "FUJITSU-ISOTEC" }, { 0xCCB55A, "Fraunhofer ITWM", "FRAUNHOFER-ITWM" }, { 0xCCB888, "AnB Securite s.a.", "ANB-SECURITE" }, { 0xCCB8F1, "EAGLE KINGDOM TECHNOLOGIES LIMITED", "EAGLE-KINGDOM-TECHNOLOGIES" }, { 0xCCBD35, "Steinel GmbH", "STEINEL" }, { 0xCCBE71, "OptiLogix BV", "OPTILOGIX" }, { 0xCCC104, "Applied Technical Systems", "APPLIED-TECHNICAL" }, { 0xCCC50A, "SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD", "SHENZHEN-DAJIAHAO" }, { 0xCCC62B, "Tri-Systems Corporation", "TRI" }, { 0xCCC8D7, "CIAS Elettronica srl", "CIAS-ELETTRONICA-SRL" }, { 0xCCCC4E, "Sun Fountainhead USA. Corp", "SUN-FOUNTAINHEAD-USA" }, { 0xCCCC81, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xCCCD64, "SM-Electronic GmbH", "SM" }, { 0xCCCE40, "Janteq Corp", "JANTEQ" }, { 0xCCD29B, "Shenzhen Bopengfa Elec&Technology CO.,Ltd", "SHENZHEN-BOPENGFA-ELEC" }, { 0xCCD539, "Cisco", "CISCO" }, { 0xCCD811, "Aiconn Technology Corporation", "AICONN" }, { 0xCCD9E9, "SCR Engineers Ltd.", "SCR-ENGINEERS" }, { 0xCCE798, "My Social Stuff", "MY-SOCIAL-STUFF" }, { 0xCCE7DF, "American Magnetics, Inc.", "AMERICAN-MAGNETICS" }, { 0xCCE8AC, "SOYEA Technology Co.,Ltd.", "SOYEA" }, { 0xCCEA1C, "DCONWORKS Co., Ltd", "DCONWORKS" }, { 0xCCEED9, "Deto Mechatronic GmbH", "DETO-MECHATRONIC" }, { 0xCCEF48, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xCCF3A5, "Chi Mei Communication Systems, Inc", "CHI-MEI-COMMUNICATION" }, { 0xCCF407, "EUKREA ELECTROMATIQUE SARL", "EUKREA-ELECTROMATIQUE-SARL" }, { 0xCCF67A, "Ayecka Communication Systems LTD", "AYECKA-COMMUNICATION" }, { 0xCCF841, "Lumewave", "LUMEWAVE" }, { 0xCCF8F0, "Xi'an HISU Multimedia Technology Co.,Ltd.", "XI-AN-HISU-MULTIMEDIA" }, { 0xCCF954, "Avaya, Inc", "AVAYA" }, { 0xCCF9E8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xCCFB65, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xCCFC6D, "RIZ TRANSMITTERS", "RIZ-TRANSMITTERS" }, { 0xCCFCB1, "Wireless Technology, Inc.", "WIRELESS" }, { 0xCCFE3C, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xD00790, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD00EA4, "Porsche Cars North America", "PORSCHE-CARS-NORTH-AMERICA" }, { 0xD0131E, "Sunrex Technology Corp", "SUNREX" }, { 0xD0154A, "zte corporation", "ZTE" }, { 0xD0176A, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD01AA7, "UniPrint", "UNIPRINT" }, { 0xD01CBB, "Beijing Ctimes Digital Technology Co., Ltd.", "BEIJING-CTIMES-DIGITAL" }, { 0xD022BE, "Samsung Electro Mechanics co.,LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xD023DB, "Apple", "APPLE" }, { 0xD02788, "Hon Hai Precision Ind.Co.Ltd", "HON-HAI-PRECISION-IND" }, { 0xD02C45, "littleBits Electronics, Inc.", "LITTLEBITS-ELECTRONICS" }, { 0xD02DB3, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xD03110, "Ingenic Semiconductor Co.,Ltd", "INGENIC-SEMICONDUCTOR" }, { 0xD03761, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD03972, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD046DC, "Southwest Research Institute", "SOUTHWEST-RESEARCH-INSTITUTE" }, { 0xD04CC1, "SINTRONES Technology Corp.", "SINTRONES" }, { 0xD05099, "ASRock Incorporation", "ASROCK-INCORPORATION" }, { 0xD05162, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xD052A8, "Physical Graph Corporation", "PHYSICAL-GRAPH" }, { 0xD0542D, "Cambridge Industries(Group) Co.,Ltd.", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xD0574C, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD05785, "Pantech Co., Ltd.", "PANTECH" }, { 0xD05875, "Active Control Technology Inc.", "ACTIVE-CONTROL" }, { 0xD059C3, "CeraMicro Technology Corporation", "CERAMICRO" }, { 0xD05A0F, "I-BT DIGITAL CO.,LTD", "I-BT-DIGITAL" }, { 0xD05FCE, "Hitachi Data Systems", "HITACHI-DATA" }, { 0xD0634D, "Meiko Maschinenbau GmbH & Co. KG", "MEIKO-MASCHINENBAU-AMP" }, { 0xD063B4, "SolidRun Ltd.", "SOLIDRUN" }, { 0xD0667B, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0xD067E5, "Dell Inc", "DELL" }, { 0xD0699E, "LUMINEX Lighting Control Equipment", "LUMINEX-LIGHTING-CONTROL-EQUIPMENT" }, { 0xD069D0, "Verto Medical Solutions, LLC", "VERTO-MEDICAL-SOLUTIONS-LLC" }, { 0xD0737F, "Mini-Circuits", "MINI-CIRCUITS" }, { 0xD0738E, "DONG OH PRECISION CO., LTD.", "DONG-OH-PRECISION" }, { 0xD073D5, "LIFI LABS MANAGEMENT PTY LTD", "LIFI-LABS-MANAGEMENT-PTY" }, { 0xD075BE, "Reno A&E", "RENO-A-E" }, { 0xD07AB5, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xD07DE5, "Forward Pay Systems, Inc.", "FORWARD-PAY" }, { 0xD07E28, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD08999, "APCON, Inc.", "APCON" }, { 0xD08A55, "Skullcandy", "SKULLCANDY" }, { 0xD08B7E, "Passif Semiconductor", "PASSIF-SEMICONDUCTOR" }, { 0xD08CB5, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD08CFF, "UPWIS AB", "UPWIS-AB" }, { 0xD093F8, "Stonestreet One LLC", "STONESTREET-ONE-LLC" }, { 0xD095C7, "Pantech Co., Ltd.", "PANTECH" }, { 0xD09B05, "Emtronix", "EMTRONIX" }, { 0xD09D0A, "LINKCOM", "LINKCOM" }, { 0xD0A311, "Neuberger Gebäudeautomation GmbH", "NEUBERGER-GEBäUDEAUTOMATION" }, { 0xD0AEEC, "Alpha Networks Inc.", "ALPHA-NETWORKS" }, { 0xD0AFB6, "Linktop Technology Co., LTD", "LINKTOP" }, { 0xD0B33F, "SHENZHEN TINNO MOBILE TECHNOLOGY CO.,LTD.", "SHENZHEN-TINNO-MOBILE" }, { 0xD0B498, "Robert Bosch LLC Automotive Electronics", "ROBERT-BOSCH-LLC-AUTOMOTIVE-ELECTRONICS" }, { 0xD0B523, "Bestcare Cloucal Corp.", "BESTCARE-CLOUCAL" }, { 0xD0B53D, "SEPRO ROBOTIQUE", "SEPRO-ROBOTIQUE" }, { 0xD0BB80, "SHL Telemedicine International Ltd.", "SHL-TELEMEDICINE" }, { 0xD0BD01, "DS International", "DS" }, { 0xD0BE2C, "CNSLink Co., Ltd.", "CNSLINK" }, { 0xD0C1B1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0C282, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD0C42F, "Tamagawa Seiki Co.,Ltd.", "TAMAGAWA-SEIKI" }, { 0xD0C789, "Cisco", "CISCO" }, { 0xD0CDE1, "Scientech Electronics", "SCIENTECH-ELECTRONICS" }, { 0xD0CF5E, "Energy Micro AS", "ENERGY-MICRO-AS" }, { 0xD0D0FD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD0D212, "K2NET Co.,Ltd.", "K2NET" }, { 0xD0D286, "Beckman Coulter K.K.", "BECKMAN-COULTER-K-K" }, { 0xD0D3FC, "Mios, Ltd.", "MIOS" }, { 0xD0D412, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xD0D471, "MVTECH co., Ltd", "MVTECH" }, { 0xD0D6CC, "Wintop", "WINTOP" }, { 0xD0DB32, "Nokia Corporation", "NOKIA" }, { 0xD0DF9A, "Liteon Technology Corporation", "LITEON" }, { 0xD0DFB2, "Genie Networks Limited", "GENIE-NETWORKS" }, { 0xD0DFC7, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD0E140, "Apple, Inc", "APPLE" }, { 0xD0E347, "Yoga", "YOGA" }, { 0xD0E40B, "Wearable Inc.", "WEARABLE" }, { 0xD0E54D, "Pace plc", "PACE-PLC" }, { 0xD0E782, "Azurewave Technologies, Inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xD0EB03, "Zhehua technology limited", "ZHEHUA" }, { 0xD0EB9E, "Seowoo Inc.", "SEOWOO" }, { 0xD0F0DB, "Ericsson", "ERICSSON" }, { 0xD0F27F, "SteadyServ Technoligies, LLC", "STEADYSERV-TECHNOLIGIES-LLC" }, { 0xD0F73B, "Helmut Mauell GmbH", "HELMUT-MAUELL" }, { 0xD0FF50, "Texas Instruments, Inc", "TEXAS-INSTRUMENTS" }, { 0xD4000D, "Phoenix Broadband Technologies, LLC.", "PHOENIX-BROADBAND-TECHNOLOGIES-LLC" }, { 0xD40057, "MC Technologies GmbH", "MC-TECHNOLOGIES" }, { 0xD40129, "Broadcom Corporation", "BROADCOM" }, { 0xD4016D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD4024A, "Delphian Systems LLC", "DELPHIAN-LLC" }, { 0xD40BB9, "Solid Semecs bv.", "SOLID-SEMECS" }, { 0xD40FB2, "Applied Micro Electronics AME bv", "APPLIED-MICRO-ELECTRONICS-AME" }, { 0xD41090, "iNFORM Systems AG", "INFORM" }, { 0xD410CF, "Huanshun Network Science and Technology Co., Ltd.", "HUANSHUN-NETWORK-SCIENCE-AND" }, { 0xD411D6, "ShotSpotter, Inc.", "SHOTSPOTTER" }, { 0xD41296, "Anobit Technologies Ltd.", "ANOBIT-TECHNOLOGIES" }, { 0xD412BB, "Quadrant Components Inc. Ltd", "QUADRANT-COMPONENTS" }, { 0xD4136F, "Asia Pacific Brands", "ASIA-PACIFIC-BRANDS" }, { 0xD41C1C, "RCF S.P.A.", "RCF-S-P-A" }, { 0xD41E35, "TOHO Electronics INC.", "TOHO-ELECTRONICS" }, { 0xD41F0C, "TVI Vision Oy", "TVI-VISION-OY" }, { 0xD4206D, "HTC Corporation", "HTC" }, { 0xD4223F, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xD42751, "Infopia Co., Ltd", "INFOPIA" }, { 0xD428B2, "ioBridge, Inc.", "IOBRIDGE" }, { 0xD429EA, "Zimory GmbH", "ZIMORY" }, { 0xD42C3D, "Sky Light Digital Limited", "SKY-LIGHT-DIGITAL" }, { 0xD4319D, "Sinwatec", "SINWATEC" }, { 0xD43A65, "IGRS Engineering Lab Ltd.", "IGRS-ENGINEERING-LAB" }, { 0xD43AE9, "DONGGUAN ipt INDUSTRIAL CO., LTD", "DONGGUAN-IPT-INDUSTRIAL" }, { 0xD43D67, "Carma Industries Inc.", "CARMA-INDUSTRIES" }, { 0xD43D7E, "Micro-Star Int'l Co, Ltd", "MICRO-STAR" }, { 0xD443A8, "Changzhou Haojie Electric Co., Ltd.", "CHANGZHOU-HAOJIE-ELECTRIC" }, { 0xD44B5E, "TAIYO YUDEN CO., LTD.", "TAIYO-YUDEN" }, { 0xD44C24, "Vuppalamritha Magnetic Components LTD", "VUPPALAMRITHA-MAGNETIC-COMPONENTS" }, { 0xD44C9C, "Shenzhen YOOBAO Technology Co.Ltd", "SHENZHEN-YOOBAO" }, { 0xD44CA7, "Informtekhnika & Communication, LLC", "INFORMTEKHNIKA-COMMUNICATION-LLC" }, { 0xD44F80, "Kemper Digital GmbH", "KEMPER-DIGITAL" }, { 0xD4507A, "CEIVA Logic, Inc", "CEIVA-LOGIC" }, { 0xD45251, "IBT Ingenieurbureau Broennimann Thun", "IBT-INGENIEURBUREAU-BROENNIMANN-THUN" }, { 0xD45297, "nSTREAMS Technologies, Inc.", "NSTREAMS-TECHNOLOGIES" }, { 0xD453AF, "VIGO System S.A.", "VIGO-SYSTEM" }, { 0xD45AB2, "Galleon Systems", "GALLEON" }, { 0xD45C70, "Wireless Gigabit Alliance", "WIRELESS-GIGABIT-ALLIANCE" }, { 0xD45D42, "Nokia Corporation", "NOKIA" }, { 0xD464F7, "CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD", "CHENGDU-USEE-DIGITAL" }, { 0xD466A8, "Riedo Networks GmbH", "RIEDO-NETWORKS" }, { 0xD467E7, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xD46867, "Neoventus Design Group", "NEOVENTUS-DESIGN-GROUP" }, { 0xD46A91, "Snap AV", "SNAP-AV" }, { 0xD46AA8, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD46CBF, "Goodrich ISR", "GOODRICH-ISR" }, { 0xD46CDA, "CSM GmbH", "CSM" }, { 0xD46E5C, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xD46F42, "WAXESS USA Inc", "WAXESS-USA" }, { 0xD479C3, "Cameronet GmbH & Co. KG", "CAMERONET" }, { 0xD47B75, "HARTING Electronics GmbH", "HARTING-ELECTRONICS" }, { 0xD481CA, "iDevices, LLC", "IDEVICES-LLC" }, { 0xD4823E, "Argosy Technologies, Ltd.", "ARGOSY-TECHNOLOGIES" }, { 0xD48564, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xD487D8, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xD48890, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD48CB5, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD48FAA, "Sogecam Industrial, S.A.", "SOGECAM-INDUSTRIAL" }, { 0xD491AF, "Electroacustica General Iberica, S.A.", "ELECTROACUSTICA-GENERAL-IBERICA" }, { 0xD493A0, "Fidelix Oy", "FIDELIX-OY" }, { 0xD4945A, "COSMO CO., LTD", "COSMO" }, { 0xD494A1, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD49524, "Clover Network, Inc.", "CLOVER-NETWORK" }, { 0xD496DF, "SUNGJIN C&T CO.,LTD", "SUNGJIN-C-T" }, { 0xD49A20, "Apple", "APPLE" }, { 0xD49C28, "JayBird Gear LLC", "JAYBIRD-GEAR-LLC" }, { 0xD49C8E, "University of FUKUI", "UNIVERSITY-OF-FUKUI" }, { 0xD49E6D, "Wuhan Zhongyuan Huadian Science & Technology Co.,", "WUHAN-ZHONGYUAN-HUADIAN-SCIENCE" }, { 0xD4A02A, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD4A425, "SMAX Technology Co., Ltd.", "SMAX" }, { 0xD4A499, "InView Technology Corporation", "INVIEW" }, { 0xD4A928, "GreenWave Reality Inc", "GREENWAVE-REALITY" }, { 0xD4AAFF, "MICRO WORLD", "MICRO-WORLD" }, { 0xD4AC4E, "BODi rS, LLC", "BODI-RS-LLC" }, { 0xD4AD2D, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xD4AE52, "Dell Inc", "DELL" }, { 0xD4B110, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD4BED9, "Dell Inc", "DELL" }, { 0xD4BF2D, "SE Controls Asia Pacific Ltd", "SE-CONTROLS-ASIA-PACIFIC" }, { 0xD4BF7F, "UPVEL", "UPVEL" }, { 0xD4C1FC, "Nokia Corporation", "NOKIA" }, { 0xD4C766, "Acentic GmbH", "ACENTIC" }, { 0xD4C9EF, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD4CA6D, "Routerboard.com", "ROUTERBOARD-COM" }, { 0xD4CA6E, "u-blox AG", "U-BLOX" }, { 0xD4CBAF, "Nokia Corporation", "NOKIA" }, { 0xD4CEB8, "Enatel LTD", "ENATEL" }, { 0xD4D184, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xD4D249, "Power Ethernet", "POWER-ETHERNET" }, { 0xD4D50D, "Southwest Microwave, Inc", "SOUTHWEST-MICROWAVE" }, { 0xD4D748, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD4D898, "Korea CNO Tech Co., Ltd", "KOREA-CNO-TECH" }, { 0xD4D919, "GoPro", "GOPRO" }, { 0xD4DF57, "Alpinion Medical Systems", "ALPINION-MEDICAL" }, { 0xD4E32C, "S. Siedle & Sohne", "S-SIEDLE-SOHNE" }, { 0xD4E33F, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xD4E8B2, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xD4EA0E, "Avaya, Inc", "AVAYA" }, { 0xD4EC0C, "Harley-Davidson Motor Company", "HARLEY-DAVIDSON-MOTOR-COMPANY" }, { 0xD4EE07, "HIWIFI Co., Ltd.", "HIWIFI" }, { 0xD4F027, "Navetas Energy Management", "NAVETAS-ENERGY-MANAGEMENT" }, { 0xD4F0B4, "Napco Security Technologies", "NAPCO-SECURITY-TECHNOLOGIES" }, { 0xD4F143, "IPROAD.,Inc", "IPROAD" }, { 0xD4F63F, "IEA S.R.L.", "IEA-S-R-L" }, { 0xD8004D, "Apple", "APPLE" }, { 0xD8052E, "Skyviia Corporation", "SKYVIIA" }, { 0xD806D1, "Honeywell Fire System (Shanghai) Co,. Ltd.", "HONEYWELL-FIRE-SYSTEM-SHANGHAI" }, { 0xD808F5, "Arcadia Networks Co. Ltd.", "ARCADIA-NETWORKS" }, { 0xD809C3, "Cercacor Labs", "CERCACOR-LABS" }, { 0xD80DE3, "FXI TECHNOLOGIES AS", "FXI-TECHNOLOGIES-AS" }, { 0xD8150D, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xD8160A, "Nippon Electro-Sensory Devices", "NIPPON-ELECTRO-SENSORY-DEVICES" }, { 0xD8182B, "Conti Temic Microelectronic GmbH", "CONTI-TEMIC-MICROELECTRONIC" }, { 0xD819CE, "Telesquare", "TELESQUARE" }, { 0xD81BFE, "TWINLINX CORPORATION", "TWINLINX" }, { 0xD81C14, "Compacta International, Ltd.", "COMPACTA" }, { 0xD81EDE, "B&W Group Ltd", "B-W-GROUP" }, { 0xD824BD, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD826B9, "Guangdong Coagent Electronics S &T Co., Ltd.", "GUANGDONG-COAGENT-ELECTRONICS-S-T" }, { 0xD8270C, "MaxTronic International Co., Ltd.", "MAXTRONIC" }, { 0xD828C9, "General Electric Consumer and Industrial", "GENERAL-ELECTRIC-CONSUMER-AND-INDUSTRIAL" }, { 0xD82916, "Ascent Communication Technology", "ASCENT-COMMUNICATION" }, { 0xD82986, "Best Wish Technology LTD", "BEST-WISH" }, { 0xD82A15, "Leitner SpA", "LEITNER-SPA" }, { 0xD82A7E, "Nokia Corporation", "NOKIA" }, { 0xD82D9B, "Shenzhen G.Credit Communication Technology Co., Ltd", "SHENZHEN-G-CREDIT-COMMUNICATION" }, { 0xD82DE1, "Tricascade Inc.", "TRICASCADE" }, { 0xD83062, "Apple", "APPLE" }, { 0xD831CF, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD8337F, "Office FA.com Co.,Ltd.", "OFFICE-FA-COM" }, { 0xD842AC, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0xD84606, "Silicon Valley Global Marketing", "SILICON-VALLEY-GLOBAL-MARKETING" }, { 0xD8490B, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xD84B2A, "Cognitas Technologies, Inc.", "COGNITAS-TECHNOLOGIES" }, { 0xD850E6, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xD8543A, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD857EF, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xD858D7, "CZ.NIC, z.s.p.o.", "CZ-NIC-Z-S-P-O" }, { 0xD85D4C, "TP-LINK Technologies Co.,Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0xD85D84, "CAx soft GmbH", "CAX-SOFT" }, { 0xD86194, "Objetivos y Sevicios de Valor Añadido", "OBJETIVOS-Y-SEVICIOS-DE-VALOR-AñADIDO" }, { 0xD862DB, "Eno Inc.", "ENO" }, { 0xD866C6, "Shenzhen Daystar Technology Co.,ltd", "SHENZHEN-DAYSTAR" }, { 0xD867D9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xD86960, "Steinsvik", "STEINSVIK" }, { 0xD86BF7, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xD86CE9, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xD87157, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xD87533, "Nokia Corporation", "NOKIA" }, { 0xD8760A, "Escort, Inc.", "ESCORT" }, { 0xD878E5, "KUHN SA", "KUHN" }, { 0xD87988, "Hon Hai Precision Ind. Co., Ltd.", "HON-HAI-PRECISION-IND" }, { 0xD87CDD, "SANIX INCORPORATED", "SANIX-INCORPORATED" }, { 0xD88A3B, "UNIT-EM", "UNIT-EM" }, { 0xD890E8, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xD8952F, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD89685, "GoPro", "GOPRO" }, { 0xD89695, "Apple", "APPLE" }, { 0xD8973B, "Emerson Network Power Embedded Power", "EMERSON-NETWORK-POWER-EMBEDDED-POWER" }, { 0xD89760, "C2 Development, Inc.", "C2-DEVELOPMENT" }, { 0xD89D67, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xD89DB9, "eMegatech International Corp.", "EMEGATECH" }, { 0xD89E3F, "Apple", "APPLE" }, { 0xD8A25E, "Apple", "APPLE" }, { 0xD8AE90, "Itibia Technologies", "ITIBIA-TECHNOLOGIES" }, { 0xD8AF3B, "Hangzhou Bigbright Integrated communications system Co.,Ltd", "HANGZHOU-BIGBRIGHT-INTEGRATED-COMMUNICATION-SYSTEM" }, { 0xD8AFF1, "Panasonic Appliances Company", "PANASONIC-APPLIANCES-COMPANY" }, { 0xD8B02E, "Guangzhou Zonerich Business Machine Co., Ltd", "GUANGZHOU-ZONERICH-BUSINESS-MACHINE" }, { 0xD8B04C, "Jinan USR IOT Technology Co., Ltd.", "JINAN-USR-IOT" }, { 0xD8B12A, "Panasonic Mobile Communications Co., Ltd.", "PANASONIC-MOBILE-COMMUNICATION" }, { 0xD8B377, "HTC Corporation", "HTC" }, { 0xD8B6C1, "NetworkAccountant, Inc.", "NETWORKACCOUNTANT" }, { 0xD8B8F6, "Nantworks", "NANTWORKS" }, { 0xD8B90E, "Triple Domain Vision Co.,Ltd.", "TRIPLE-DOMAIN-VISION" }, { 0xD8BF4C, "Victory Concept Electronics Limited", "VICTORY-CONCEPT-ELECTRONICS" }, { 0xD8C068, "Netgenetech.co.,ltd.", "NETGENETECH" }, { 0xD8C3FB, "DETRACOM", "DETRACOM" }, { 0xD8C691, "Hichan Technology Corp.", "HICHAN" }, { 0xD8C7C8, "Aruba Networks", "ARUBA-NETWORKS" }, { 0xD8C99D, "EA DISPLAY LIMITED", "EA-DISPLAY" }, { 0xD8D1CB, "Apple", "APPLE" }, { 0xD8D27C, "JEMA ENERGY, SA", "JEMA-ENERGY" }, { 0xD8D385, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xD8D43C, "Sony Corporation", "SONY" }, { 0xD8D5B9, "Rainforest Automation, Inc.", "RAINFOREST-AUTOMATION" }, { 0xD8D67E, "GSK CNC EQUIPMENT CO.,LTD", "GSK-CNC-EQUIPMENT" }, { 0xD8DA52, "APATOR S.A.", "APATOR" }, { 0xD8DCE9, "Kunshan Erlab ductless filtration system Co.,Ltd", "KUNSHAN-ERLAB-DUCTLESS-FILTRATION-SYSTEM" }, { 0xD8DDFD, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xD8DF0D, "beroNet GmbH", "BERONET" }, { 0xD8E3AE, "CIRTEC MEDICAL SYSTEMS", "CIRTEC-MEDICAL" }, { 0xD8E72B, "OnPATH Technologies", "ONPATH-TECHNOLOGIES" }, { 0xD8E743, "Wush, Inc", "WUSH" }, { 0xD8E952, "KEOPSYS", "KEOPSYS" }, { 0xD8EB97, "TRENDnet, Inc.", "TRENDNET" }, { 0xD8EE78, "Moog Protokraft", "MOOG-PROTOKRAFT" }, { 0xD8F0F2, "Zeebo Inc", "ZEEBO" }, { 0xD8FE8F, "IDFone Co., Ltd.", "IDFONE" }, { 0xD8FEE3, "D-Link International", "D-LINK" }, { 0xDC0265, "Meditech Kft", "MEDITECH-KFT" }, { 0xDC028E, "zte corporation", "ZTE" }, { 0xDC052F, "National Products Inc.", "NATIONAL-PRODUCTS" }, { 0xDC0575, "SIEMENS ENERGY AUTOMATION", "SIEMENS-ENERGY-AUTOMATION" }, { 0xDC05ED, "Nabtesco Corporation", "NABTESCO" }, { 0xDC07C1, "HangZhou QiYang Technology Co.,Ltd.", "HANGZHOU-QIYANG" }, { 0xDC0B1A, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xDC0EA1, "COMPAL INFORMATION (KUNSHAN) CO., LTD", "COMPAL-INFORMATION-KUNSHAN" }, { 0xDC16A2, "Medtronic Diabetes", "MEDTRONIC-DIABETES" }, { 0xDC175A, "Hitachi High-Technologies Corporation", "HITACHI-HIGH-TECHNOLOGIES" }, { 0xDC1792, "Captivate Network", "CAPTIVATE-NETWORK" }, { 0xDC1D9F, "U & B tech", "U-B-TECH" }, { 0xDC1DD4, "Microstep-MIS spol. s r.o.", "MICROSTEP-MIS-SPOL-S-R-O" }, { 0xDC1EA3, "Accensus LLC", "ACCENSUS-LLC" }, { 0xDC2008, "ASD Electronics Ltd", "ASD-ELECTRONICS" }, { 0xDC2A14, "Shanghai Longjing Technology Co.", "SHANGHAI-LONGJING" }, { 0xDC2B61, "Apple", "APPLE" }, { 0xDC2B66, "InfoBLOCK S.A. de C.V.", "INFOBLOCK-DE-C-V" }, { 0xDC2BCA, "Zera GmbH", "ZERA" }, { 0xDC2C26, "Iton Technology Limited", "ITON" }, { 0xDC2E6A, "HCT. Co., Ltd.", "HCT" }, { 0xDC309C, "Heyrex Limited", "HEYREX" }, { 0xDC3350, "TechSAT GmbH", "TECHSAT" }, { 0xDC37D2, "Hunan HKT Electronic Technology Co., Ltd", "HUNAN-HKT" }, { 0xDC3A5E, "Roku, Inc", "ROKU" }, { 0xDC3C2E, "Manufacturing System Insights, Inc.", "MANUFACTURING-SYSTEM-INSIGHTS" }, { 0xDC3C84, "Ticom Geomatics, Inc.", "TICOM-GEOMATICS" }, { 0xDC3E51, "Solberg & Andersen AS", "SOLBERG-ANDERSEN-AS" }, { 0xDC3EF8, "Nokia Corporation", "NOKIA" }, { 0xDC4517, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xDC49C9, "CASCO SIGNAL LTD", "CASCO-SIGNAL" }, { 0xDC4EDE, "SHINYEI TECHNOLOGY CO., LTD.", "SHINYEI" }, { 0xDC5726, "Power-One", "POWER-ONE" }, { 0xDC5E36, "Paterson Technology", "PATERSON" }, { 0xDC647C, "C.R.S. iiMotion GmbH", "C-R-S-IIMOTION" }, { 0xDC6F00, "Livescribe, Inc.", "LIVESCRIBE" }, { 0xDC6F08, "Bay Storage Technology", "BAY-STORAGE" }, { 0xDC7014, "PRIVATE", "PRIVATE" }, { 0xDC7144, "Samsung Electro Mechanics", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xDC7B94, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xDC825B, "JANUS, spol. s r.o.", "JANUS-SPOL-S-R-O" }, { 0xDC85DE, "Azurewave Technologies., inc.", "AZUREWAVE-TECHNOLOGIES" }, { 0xDC86D8, "Apple, Inc", "APPLE" }, { 0xDC9B1E, "Intercom, Inc.", "INTERCOM" }, { 0xDC9B9C, "Apple", "APPLE" }, { 0xDC9C52, "Sapphire Technology Limited.", "SAPPHIRE" }, { 0xDC9FA4, "Nokia Corporation", "NOKIA" }, { 0xDC9FDB, "Ubiquiti Networks, Inc.", "UBIQUITI-NETWORKS" }, { 0xDCA5F4, "Cisco", "CISCO" }, { 0xDCA6BD, "Beijing Lanbo Technology Co., Ltd.", "BEIJING-LANBO" }, { 0xDCA7D9, "Compressor Controls Corp", "COMPRESSOR-CONTROLS" }, { 0xDCA8CF, "New Spin Golf, LLC.", "NEW-SPIN-GOLF-LLC" }, { 0xDCA971, "Intel Corporate", "INTEL-CORPORATE" }, { 0xDCA989, "MACANDC", "MACANDC" }, { 0xDCAD9E, "GreenPriz", "GREENPRIZ" }, { 0xDCAE04, "CELOXICA Ltd", "CELOXICA" }, { 0xDCB058, "Burkert Werke GmbH", "BURKERT-WERKE" }, { 0xDCB4C4, "Microsoft XCG", "MICROSOFT-XCG" }, { 0xDCBF90, "HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD.", "HUIZHOU-QIAOXING-TELECOMMUNICATION-INDUSTRY" }, { 0xDCC0DB, "Shenzhen Kaiboer Technology Co., Ltd.", "SHENZHEN-KAIBOER" }, { 0xDCC101, "SOLiD Technologies, Inc.", "SOLID-TECHNOLOGIES" }, { 0xDCC422, "Systembase Limited", "SYSTEMBASE" }, { 0xDCCBA8, "Explora Technologies Inc", "EXPLORA-TECHNOLOGIES" }, { 0xDCCE41, "FE GLOBAL HONG KONG LIMITED", "FE-GLOBAL-HONG-KONG" }, { 0xDCCEBC, "Shenzhen JSR Technology Co.,Ltd.", "SHENZHEN-JSR" }, { 0xDCCF94, "Beijing Rongcheng Hutong Technology Co., Ltd.", "BEIJING-RONGCHENG-HUTONG" }, { 0xDCD0F7, "Bentek Systems Ltd.", "BENTEK" }, { 0xDCD2FC, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xDCD321, "HUMAX co.,tld", "HUMAX-TLD" }, { 0xDCD52A, "Sunny Heart Limited", "SUNNY-HEART" }, { 0xDCD87F, "Shenzhen JoinCyber Telecom Equipment Ltd", "SHENZHEN-JOINCYBER-TELECOM-EQUIPMENT" }, { 0xDCDECA, "Akyllor", "AKYLLOR" }, { 0xDCE2AC, "Lumens Digital Optics Inc.", "LUMENS-DIGITAL-OPTICS" }, { 0xDCE71C, "AUG Elektronik GmbH", "AUG-ELEKTRONIK" }, { 0xDCF05D, "Letta Teknoloji", "LETTA-TEKNOLOJI" }, { 0xDCF755, "SITRONIK", "SITRONIK" }, { 0xDCF858, "Lorent Networks, Inc.", "LORENT-NETWORKS" }, { 0xDCFAD5, "STRONG Ges.m.b.H.", "STRONG-GES-M-B-H" }, { 0xDCFB02, "Buffalo Inc.", "BUFFALO" }, { 0xE005C5, "TP-LINK Technologies Co.,Ltd.", "TP-LINK-TECHNOLOGIES" }, { 0xE006E6, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE00B28, "Inovonics", "INOVONICS" }, { 0xE00C7F, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE0143E, "Modoosis Inc.", "MODOOSIS" }, { 0xE01877, "Fujitsu Limited", "FUJITSU" }, { 0xE01C41, "Aerohive Networks Inc.", "AEROHIVE-NETWORKS" }, { 0xE01CEE, "Bravo Tech, Inc.", "BRAVO-TECH" }, { 0xE01D3B, "Cambridge Industries(Group) Co.,Ltd", "CAMBRIDGE-INDUSTRIES-GROUP" }, { 0xE01E07, "Anite Telecoms US. Inc", "ANITE-TELECOMS-US" }, { 0xE01F0A, "Xslent Energy Technologies. LLC", "XSLENT-ENERGY-TECHNOLOGIES-LLC" }, { 0xE0247F, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE02538, "Titan Pet Products", "TITAN-PET-PRODUCTS" }, { 0xE02630, "Intrigue Technologies, Inc.", "INTRIGUE-TECHNOLOGIES" }, { 0xE02636, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xE0271A, "TTC Next-generation Home Network System WG", "TTC-NEXT-GENERATION-HOME-NETWORK-SYSTEM-WG" }, { 0xE02A82, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xE02F6D, "Cisco", "CISCO" }, { 0xE03005, "Alcatel-Lucent Shanghai Bell Co., Ltd", "ALCATEL-LUCENT-SHANGHAI-BELL" }, { 0xE031D0, "SZ Telstar CO., LTD", "SZ-TELSTAR" }, { 0xE036E3, "Stage One International Co., Ltd.", "STAGE-ONE" }, { 0xE039D7, "Plexxi, Inc.", "PLEXXI" }, { 0xE03C5B, "SHENZHEN JIAXINJIE ELECTRON CO.,LTD", "SHENZHEN-JIAXINJIE-ELECTRON" }, { 0xE03E4A, "Cavanagh Group International", "CAVANAGH-GROUP" }, { 0xE03E7D, "data-complex GmbH", "DATA-COMPLEX" }, { 0xE03F49, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xE0469A, "NETGEAR", "NETGEAR" }, { 0xE05597, "Emergent Vision Technologies Inc.", "EMERGENT-VISION-TECHNOLOGIES" }, { 0xE056F4, "AxesNetwork Solutions inc.", "AXESNETWORK-SOLUTIONS" }, { 0xE0589E, "Laerdal Medical", "LAERDAL-MEDICAL" }, { 0xE05B70, "Innovid, Co., Ltd.", "INNOVID" }, { 0xE05DA6, "Detlef Fink Elektronik & Softwareentwicklung", "DETLEF-FINK-ELEKTRONIK-SOFTWAREENTWICKLUNG" }, { 0xE05FB9, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xE061B2, "HANGZHOU ZENOINTEL TECHNOLOGY CO., LTD", "HANGZHOU-ZENOINTEL" }, { 0xE06290, "Jinan Jovision Science & Technology Co., Ltd.", "JINAN-JOVISION-SCIENCE" }, { 0xE063E5, "Sony Mobile Communications AB", "SONY-MOBILE-COMMUNICATION-AB" }, { 0xE064BB, "DigiView S.r.l.", "DIGIVIEW-S-R-L" }, { 0xE067B3, "C-Data Technology Co., Ltd", "C-DATA" }, { 0xE06995, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE0750A, "ALPS ERECTORIC CO.,LTD.", "ALPS-ERECTORIC" }, { 0xE0757D, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xE07C62, "Whistle Labs, Inc.", "WHISTLE-LABS" }, { 0xE07F53, "TECHBOARD SRL", "TECHBOARD-SRL" }, { 0xE07F88, "EVIDENCE Network SIA", "EVIDENCE-NETWORK-SIA" }, { 0xE08177, "GreenBytes, Inc.", "GREENBYTES" }, { 0xE087B1, "Nata-Info Ltd.", "NATA-INFO" }, { 0xE08A7E, "Exponent", "EXPONENT" }, { 0xE08FEC, "REPOTEC CO., LTD.", "REPOTEC" }, { 0xE09153, "XAVi Technologies Corp.", "XAVI-TECHNOLOGIES" }, { 0xE091F5, "NETGEAR", "NETGEAR" }, { 0xE09467, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE09579, "ORTHOsoft inc, d/b/a Zimmer CAS", "ORTHOSOFT-D/B/A-ZIMMER-CAS" }, { 0xE097F2, "Atomax Inc.", "ATOMAX" }, { 0xE09D31, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE09DB8, "PLANEX COMMUNICATIONS INC.", "PLANEX-COMMUNICATION" }, { 0xE0A198, "NOJA Power Switchgear Pty Ltd", "NOJA-POWER-SWITCHGEAR-PTY" }, { 0xE0A1D7, "SFR", "SFR" }, { 0xE0A30F, "Pevco", "PEVCO" }, { 0xE0A670, "Nokia Corporation", "NOKIA" }, { 0xE0AAB0, "GENERAL VISION ELECTRONICS CO. LTD.", "GENERAL-VISION-ELECTRONICS" }, { 0xE0ABFE, "Orb Networks, Inc.", "ORB-NETWORKS" }, { 0xE0AE5E, "ALPS Co,. Ltd.", "ALPS" }, { 0xE0AEB2, "Bender GmbH & Co.KG", "BENDER-AMP" }, { 0xE0AEED, "LOENK", "LOENK" }, { 0xE0AF4B, "Pluribus Networks, Inc.", "PLURIBUS-NETWORKS" }, { 0xE0B2F1, "FN-LINK TECHNOLOGY LIMITED", "FN-LINK" }, { 0xE0B7B1, "Pace plc", "PACE-PLC" }, { 0xE0B9A5, "Azurewave", "AZUREWAVE" }, { 0xE0B9BA, "Apple", "APPLE" }, { 0xE0BC43, "C2 Microsystems, Inc.", "C2-MICROSYSTEMS" }, { 0xE0C286, "Aisai Communication Technology Co., Ltd.", "AISAI-COMMUNICATION" }, { 0xE0C2B7, "Masimo Corporation", "MASIMO" }, { 0xE0C3F3, "ZTE Corporation", "ZTE" }, { 0xE0C6B3, "MilDef AB", "MILDEF-AB" }, { 0xE0C79D, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE0C86A, "SHENZHEN TW-SCIE Co., Ltd", "SHENZHEN-TW-SCIE" }, { 0xE0C922, "Jireh Energy Tech., Ltd.", "JIREH-ENERGY-TECH" }, { 0xE0C97A, "Apple", "APPLE" }, { 0xE0CA4D, "Shenzhen Unistar Communication Co.,LTD", "SHENZHEN-UNISTAR-COMMUNICATION" }, { 0xE0CA94, "Askey Computer", "ASKEY" }, { 0xE0CB1D, "PRIVATE", "PRIVATE" }, { 0xE0CB4E, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xE0CEC3, "ASKEY COMPUTER CORP", "ASKEY" }, { 0xE0CF2D, "Gemintek Corporation", "GEMINTEK" }, { 0xE0D10A, "Katoudenkikougyousyo co ltd", "KATOUDENKIKOUGYOUSYO" }, { 0xE0D1E6, "Aliph dba Jawbone", "ALIPH-DBA-JAWBONE" }, { 0xE0D7BA, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xE0D9A2, "Hippih aps", "HIPPIH-APS" }, { 0xE0DADC, "JVC KENWOOD Corporation", "JVC-KENWOOD" }, { 0xE0DB55, "Dell Inc", "DELL" }, { 0xE0DCA0, "Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch", "SIEMENS-ELECTRICAL-APPARATUS-SUZHOU-CHENGDU-BRANCH" }, { 0xE0E631, "SNB TECHNOLOGIES LIMITED", "SNB-TECHNOLOGIES" }, { 0xE0E751, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE0E8E8, "Olive Telecommunication Pvt. Ltd", "OLIVE-TELECOMMUNICATION-PVT" }, { 0xE0ED1A, "vastriver Technology Co., Ltd", "VASTRIVER" }, { 0xE0EDC7, "Shenzhen Friendcom Technology Development Co., Ltd", "SHENZHEN-FRIENDCOM-DEVELOPMENT" }, { 0xE0EE1B, "Panasonic Automotive Systems Company of America", "PANASONIC-AUTOMOTIVE-COMPANY-OF-AMERICA" }, { 0xE0EF25, "Lintes Technology Co., Ltd.", "LINTES" }, { 0xE0F211, "Digitalwatt", "DIGITALWATT" }, { 0xE0F379, "Vaddio", "VADDIO" }, { 0xE0F5C6, "Apple", "APPLE" }, { 0xE0F5CA, "CHENG UEI PRECISION INDUSTRY CO.,LTD.", "CHENG-UEI-PRECISION-INDUSTRY" }, { 0xE0F847, "Apple", "APPLE" }, { 0xE0F9BE, "Cloudena Corp.", "CLOUDENA" }, { 0xE0FAEC, "Platan sp. z o.o. sp. k.", "PLATAN-SP-Z-O-O-SP-K" }, { 0xE40439, "TomTom Software Ltd", "TOMTOM-SOFTWARE" }, { 0xE4115B, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xE41289, "topsystem Systemhaus GmbH", "TOPSYSTEM-SYSTEMHAUS" }, { 0xE41C4B, "V2 TECHNOLOGY, INC.", "V2" }, { 0xE41F13, "IBM Corp", "IBM" }, { 0xE425E7, "Apple", "APPLE" }, { 0xE425E9, "Color-Chip", "COLOR-CHIP" }, { 0xE42771, "Smartlabs", "SMARTLABS" }, { 0xE42AD3, "Magneti Marelli S.p.A. Powertrain", "MAGNETI-MARELLI-S-P-A-POWERTRAIN" }, { 0xE42C56, "Lilee Systems, Ltd.", "LILEE" }, { 0xE42D02, "TCT Mobile Limited", "TCT-MOBILE" }, { 0xE42F26, "Fiberhome Telecommunication Tech.Co.,Ltd.", "FIBERHOME-TELECOMMUNICATION-TECH" }, { 0xE42FF6, "Unicore communication Inc.", "UNICORE-COMMUNICATION" }, { 0xE432CB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE43593, "Hangzhou GoTo technology Co.Ltd", "HANGZHOU-GOTO" }, { 0xE435FB, "Sabre Technology (Hull) Ltd", "SABRE-HULL" }, { 0xE437D7, "HENRI DEPAEPE S.A.S.", "HENRI-DEPAEPE-S" }, { 0xE438F2, "Advantage Controls", "ADVANTAGE-CONTROLS" }, { 0xE43FA2, "Wuxi DSP Technologies Inc.", "WUXI-DSP-TECHNOLOGIES" }, { 0xE440E2, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE441E6, "Ottec Technology GmbH", "OTTEC" }, { 0xE446BD, "C&C TECHNIC TAIWAN CO., LTD.", "C-C-TECHNIC-TAIWAN" }, { 0xE448C7, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xE44C6C, "Shenzhen Guo Wei Electronic Co,. Ltd.", "SHENZHEN-GUO-WEI" }, { 0xE44E18, "Gardasoft VisionLimited", "GARDASOFT-VISIONLIMITED" }, { 0xE44F29, "MA Lighting Technology GmbH", "MA-LIGHTING" }, { 0xE44F5F, "EDS Elektronik Destek San.Tic.Ltd.Sti", "EDS-ELEKTRONIK-DESTEK-SAN-TIC-STI" }, { 0xE455EA, "Dedicated Computing", "DEDICATED-COMPUTING" }, { 0xE45614, "Suttle Apparatus", "SUTTLE-APPARATUS" }, { 0xE457A8, "Stuart Manufacturing, Inc.", "STUART-MANUFACTURING" }, { 0xE46449, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE467BA, "Danish Interpretation Systems A/S", "DANISH-INTERPRETATION-A/S" }, { 0xE468A3, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xE46C21, "messMa GmbH", "MESSMA" }, { 0xE47185, "Securifi Ltd", "SECURIFI" }, { 0xE4751E, "Getinge Sterilization AB", "GETINGE-STERILIZATION-AB" }, { 0xE47723, "zte corporation", "ZTE" }, { 0xE4776B, "AARTESYS AG", "AARTESYS" }, { 0xE477D4, "Minrray Industry Co.,Ltd", "MINRRAY-INDUSTRY" }, { 0xE47CF9, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0xE47D5A, "Beijing Hanbang Technology Corp.", "BEIJING-HANBANG" }, { 0xE48184, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xE481B3, "Shenzhen ACT Industrial Co.,Ltd.", "SHENZHEN-ACT-INDUSTRIAL" }, { 0xE48399, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE48AD5, "RF WINDOW CO., LTD.", "RF-WINDOW" }, { 0xE48B7F, "Apple", "APPLE" }, { 0xE49069, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0xE492E7, "Gridlink Tech. Co.,Ltd.", "GRIDLINK-TECH" }, { 0xE492FB, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE496AE, "ALTOGRAPHICS Inc.", "ALTOGRAPHICS" }, { 0xE497F0, "Shanghai VLC Technologies Ltd. Co.", "SHANGHAI-VLC-TECHNOLOGIES" }, { 0xE498D6, "Apple, Inc", "APPLE" }, { 0xE4A5EF, "TRON LINK ELECTRONICS CO., LTD.", "TRON-LINK-ELECTRONICS" }, { 0xE4A7FD, "Cellco Partnership", "CELLCO-PARTNERSHIP" }, { 0xE4AB46, "UAB Selteka", "UAB-SELTEKA" }, { 0xE4AD7D, "SCL Elements", "SCL-ELEMENTS" }, { 0xE4AFA1, "HES-SO", "HES-SO" }, { 0xE4B021, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE4C146, "Objetivos y Servicios de Valor A", "OBJETIVOS-Y-SERVICIOS-DE-VALOR-A" }, { 0xE4C63D, "Apple, Inc.", "APPLE" }, { 0xE4C6E6, "Mophie, LLC", "MOPHIE-LLC" }, { 0xE4C722, "Cisco", "CISCO" }, { 0xE4C806, "Ceiec Electric Technology Inc.", "CEIEC-ELECTRIC" }, { 0xE4CE8F, "Apple", "APPLE" }, { 0xE4D3F1, "Cisco", "CISCO" }, { 0xE4D53D, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xE4D71D, "Oraya Therapeutics", "ORAYA-THERAPEUTICS" }, { 0xE4DD79, "En-Vision America, Inc.", "EN-VISION-AMERICA" }, { 0xE4E0C5, "Samsung Electronics Co., LTD", "SAMSUNG-ELECTRONICS" }, { 0xE4E409, "LEIFHEIT AG", "LEIFHEIT" }, { 0xE4EC10, "Nokia Corporation", "NOKIA" }, { 0xE4EEFD, "MR&D Manufacturing", "MR-D-MANUFACTURING" }, { 0xE4F365, "Time-O-Matic, Inc.", "TIME-O-MATIC" }, { 0xE4F3E3, "Shanghai iComhome Co.,Ltd.", "SHANGHAI-ICOMHOME" }, { 0xE4F7A1, "Datafox GmbH", "DATAFOX" }, { 0xE4FA1D, "PAD Peripheral Advanced Design Inc.", "PAD-PERIPHERAL-ADVANCED-DESIGN" }, { 0xE4FFDD, "ELECTRON INDIA", "ELECTRON-INDIA" }, { 0xE8039A, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0xE8040B, "Apple", "APPLE" }, { 0xE80410, "PRIVATE", "PRIVATE" }, { 0xE80462, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xE804F3, "Throughtek Co., Ltd.", "THROUGHTEK" }, { 0xE8056D, "Nortel Networks", "NORTEL-NETWORKS" }, { 0xE80688, "Apple", "APPLE" }, { 0xE8088B, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xE80B13, "Akib Systems Taiwan, INC", "AKIB-TAIWAN" }, { 0xE80C38, "DAEYOUNG INFORMATION SYSTEM CO., LTD", "DAEYOUNG-INFORMATION-SYSTEM" }, { 0xE80C75, "Syncbak, Inc.", "SYNCBAK" }, { 0xE8102E, "Really Simple Software, Inc", "REALLY-SIMPLE-SOFTWARE" }, { 0xE81132, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0xE81324, "GuangZhou Bonsoninfo System CO.,LTD", "GUANGZHOU-BONSONINFO-SYSTEM" }, { 0xE82877, "TMY Co., Ltd.", "TMY" }, { 0xE828D5, "Cots Technology", "COTS" }, { 0xE82AEA, "Intel Corporate", "INTEL-CORPORATE" }, { 0xE82E24, "Out of the Fog Research LLC", "OUT-OF-THE-FOG-RESEARCH-LLC" }, { 0xE83935, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xE839DF, "Askey Computer", "ASKEY" }, { 0xE83A97, "OCZ Technology Group", "OCZ-GROUP" }, { 0xE83EB6, "RIM", "RIM" }, { 0xE83EFB, "GEODESIC LTD.", "GEODESIC" }, { 0xE83EFC, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE84040, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xE840F2, "PEGATRON CORPORATION", "PEGATRON" }, { 0xE843B6, "QNAP Systems, Inc.", "QNAP" }, { 0xE8481F, "Advanced Automotive Antennas", "ADVANCED-AUTOMOTIVE-ANTENNAS" }, { 0xE84E06, "EDUP INTERNATIONAL (HK) CO., LTD", "EDUP-HK" }, { 0xE84E84, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE84ECE, "Nintendo Co., Ltd.", "NINTENDO" }, { 0xE8516E, "TSMART Inc.", "TSMART" }, { 0xE8519D, "Yeonhab Precision Co.,LTD", "YEONHAB-PRECISION" }, { 0xE85484, "NEO INFORMATION SYSTEMS CO., LTD.", "NEO-INFORMATION" }, { 0xE856D6, "NCTech Ltd", "NCTECH" }, { 0xE85AA7, "LLC Emzior", "LLC-EMZIOR" }, { 0xE85B5B, "LG ELECTRONICS INC", "LG-ELECTRONICS" }, { 0xE85BF0, "Imaging Diagnostics", "IMAGING-DIAGNOSTICS" }, { 0xE85E53, "Infratec Datentechnik GmbH", "INFRATEC-DATENTECHNIK" }, { 0xE8611F, "Dawning Information Industry Co.,Ltd", "DAWNING-INFORMATION-INDUSTRY" }, { 0xE86183, "Black Diamond Advanced Technology, LLC", "BLACK-DIAMOND-ADVANCED-LLC" }, { 0xE86CDA, "Supercomputers and Neurocomputers Research Center", "SUPERCOMPUTERS-AND-NEUROCOMPUTERS-RESEARCH-CENTER" }, { 0xE86D52, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE86D54, "Digit Mobile Inc", "DIGIT-MOBILE" }, { 0xE86D6E, "Control & Display Systems Ltd t/a CDSRail", "CONTROL-DISPLAY-T/A-CDSRAIL" }, { 0xE8718D, "Elsys Equipamentos Eletronicos Ltda", "ELSYS-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0xE8757F, "FIRS Technologies(Shenzhen) Co., Ltd", "FIRS-TECHNOLOGIES-SHENZHEN" }, { 0xE878A1, "BEOVIEW INTERCOM DOO", "BEOVIEW-INTERCOM-DOO" }, { 0xE87AF3, "S5 Tech S.r.l.", "S5-TECH-S-R-L" }, { 0xE880D8, "GNTEK Electronics Co.,Ltd.", "GNTEK-ELECTRONICS" }, { 0xE8892C, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xE88D28, "Apple", "APPLE" }, { 0xE88DF5, "ZNYX Networks, Inc.", "ZNYX-NETWORKS" }, { 0xE89218, "Arcontia International AB", "ARCONTIA-AB" }, { 0xE892A4, "LG Electronics", "LG-ELECTRONICS" }, { 0xE8944C, "Cogent Healthcare Systems Ltd", "COGENT-HEALTHCARE" }, { 0xE894F6, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xE8995A, "PiiGAB, Processinformation i Goteborg AB", "PIIGAB-PROCESSINFORMATION-I-GOTEBORG-AB" }, { 0xE899C4, "HTC Corporation", "HTC" }, { 0xE89A8F, "Quanta Computer Inc.", "QUANTA" }, { 0xE89AFF, "Fujian Landi Commercial Equipment Co.,Ltd", "FUJIAN-LANDI-COMMERCIAL-EQUIPMENT" }, { 0xE89D87, "Toshiba", "TOSHIBA" }, { 0xE8A364, "Signal Path International / Peachtree Audio", "SIGNAL-PATH-/-PEACHTREE-AUDIO" }, { 0xE8A4C1, "Deep Sea Electronics PLC", "DEEP-SEA-ELECTRONICS-PLC" }, { 0xE8ABFA, "Shenzhen Reecam Tech.Ltd.", "SHENZHEN-REECAM-TECH" }, { 0xE8B4AE, "Shenzhen C&D Electronics Co.,Ltd", "SHENZHEN-C-D-ELECTRONICS" }, { 0xE8B748, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xE8BA70, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xE8BB3D, "Sino Prime-Tech Limited", "SINO-PRIME-TECH" }, { 0xE8BBA8, "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD.", "GUANGDONG-OPPO-MOBILE-TELECOMMUNICATIONS" }, { 0xE8BE81, "SAGEMCOM", "SAGEMCOM" }, { 0xE8C229, "H-Displays (MSC) Bhd", "H-DISPLAYS-MSC-BHD" }, { 0xE8C320, "Austco Communication Systems Pty Ltd", "AUSTCO-COMMUNICATION-PTY" }, { 0xE8CBA1, "Nokia Corporation", "NOKIA" }, { 0xE8CC32, "Micronet LTD", "MICRONET" }, { 0xE8CD2D, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xE8CE06, "SkyHawke Technologies, LLC.", "SKYHAWKE-TECHNOLOGIES-LLC" }, { 0xE8D0FA, "MKS Instruments Deutschland GmbH", "MKS-INSTRUMENTS-DEUTSCHLAND" }, { 0xE8D483, "ULTIMATE Europe Transportation Equipment GmbH", "ULTIMATE-EUROPE-TRANSPORTATION-EQUIPMENT" }, { 0xE8D4E0, "Beijing BenyWave Technology Co., Ltd.", "BEIJING-BENYWAVE" }, { 0xE8DA96, "Zhuhai Tianrui Electrical Power Tech. Co., Ltd.", "ZHUHAI-TIANRUI-ELECTRICAL-POWER-TECH" }, { 0xE8DAAA, "VideoHome Technology Corp.", "VIDEOHOME" }, { 0xE8DE27, "TP-LINK TECHNOLOGIES CO.,LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xE8DFF2, "PRF Co., Ltd.", "PRF" }, { 0xE8E08F, "GRAVOTECH MARKING SAS", "GRAVOTECH-MARKING-SAS" }, { 0xE8E0B7, "Toshiba", "TOSHIBA" }, { 0xE8E1E2, "Energotest", "ENERGOTEST" }, { 0xE8E5D6, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xE8E732, "Alcatel-Lucent", "ALCATEL-LUCENT" }, { 0xE8E770, "Warp9 Tech Design, Inc.", "WARP9-TECH-DESIGN" }, { 0xE8E776, "Shenzhen Kootion Technology Co., Ltd", "SHENZHEN-KOOTION" }, { 0xE8E875, "iS5 Communications Inc.", "IS5-COMMUNICATION" }, { 0xE8EA6A, "StarTech.com", "STARTECH-COM" }, { 0xE8EADA, "Denkovi Assembly Electroncs LTD", "DENKOVI-ASSEMBLY-ELECTRONCS" }, { 0xE8EDF3, "Cisco", "CISCO" }, { 0xE8F1B0, "SAGEMCOM SAS", "SAGEMCOM-SAS" }, { 0xE8F226, "MILLSON CUSTOM SOLUTIONS INC.", "MILLSON-CUSTOM-SOLUTIONS" }, { 0xE8F928, "RFTECH SRL", "RFTECH-SRL" }, { 0xEC0ED6, "ITECH INSTRUMENTS SAS", "ITECH-INSTRUMENTS-SAS" }, { 0xEC1120, "FloDesign Wind Turbine Corporation", "FLODESIGN-WIND-TURBINE" }, { 0xEC14F6, "BioControl AS", "BIOCONTROL-AS" }, { 0xEC172F, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xEC1A59, "Belkin International Inc.", "BELKIN" }, { 0xEC219F, "VidaBox LLC", "VIDABOX-LLC" }, { 0xEC2257, "JiangSu NanJing University Electronic Information Technology Co.,Ltd", "JIANGSU-NANJING-UNIVERSITY-INFORMATION" }, { 0xEC233D, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xEC2368, "IntelliVoice Co.,Ltd.", "INTELLIVOICE" }, { 0xEC2AF0, "Ypsomed AG", "YPSOMED" }, { 0xEC2C49, "University of Tokyo", "UNIVERSITY-OF-TOKYO" }, { 0xEC3091, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xEC3586, "Apple", "APPLE" }, { 0xEC3BF0, "NovelSat", "NOVELSAT" }, { 0xEC3E09, "PERFORMANCE DESIGNED PRODUCTS, LLC", "PERFORMANCE-DESIGNED-PRODUCTS-LLC" }, { 0xEC3F05, "Institute 706, The Second Academy China Aerospace Science & Industry Corp", "INSTITUTE-706-THE-SECOND-ACADEMY-CHINA-AEROSPACE-SCIENCE-INDUSTRY" }, { 0xEC42F0, "ADL Embedded Solutions, Inc.", "ADL-EMBEDDED-SOLUTIONS" }, { 0xEC43E6, "AWCER Ltd.", "AWCER" }, { 0xEC43F6, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xEC4476, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xEC4644, "TTK SAS", "TTK-SAS" }, { 0xEC4670, "Meinberg Funkuhren GmbH & Co. KG", "MEINBERG-FUNKUHREN" }, { 0xEC473C, "Redwire, LLC", "REDWIRE-LLC" }, { 0xEC4993, "Qihan Technology Co., Ltd", "QIHAN" }, { 0xEC4C4D, "ZAO NPK RoTeK", "ZAO-NPK-ROTEK" }, { 0xEC542E, "Shanghai XiMei Electronic Technology Co. Ltd", "SHANGHAI-XIMEI" }, { 0xEC55F9, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xEC5C69, "MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD.", "MITSUBISHI-HEAVY-INDUSTRIES-MECHATRONICS" }, { 0xEC6264, "Global411 Internet Services, LLC", "GLOBAL411-INTERNET-SERVICES-LLC" }, { 0xEC63E5, "ePBoard Design LLC", "EPBOARD-DESIGN-LLC" }, { 0xEC66D1, "B&W Group LTD", "B-W-GROUP" }, { 0xEC6C9F, "Chengdu Volans Technology CO.,LTD", "CHENGDU-VOLANS" }, { 0xEC71DB, "Shenzhen Baichuan Digital Technology Co., Ltd.", "SHENZHEN-BAICHUAN-DIGITAL" }, { 0xEC7C74, "Justone Technologies Co., Ltd.", "JUSTONE-TECHNOLOGIES" }, { 0xEC7D9D, "MEI", "MEI" }, { 0xEC836C, "RM Tech Co., Ltd.", "RM-TECH" }, { 0xEC852F, "Apple", "APPLE" }, { 0xEC888F, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xEC89F5, "Lenovo Mobile Communication Technology Ltd.", "LENOVO-MOBILE-COMMUNICATION" }, { 0xEC8EAD, "DLX", "DLX" }, { 0xEC9233, "Eddyfi NDT Inc", "EDDYFI-NDT" }, { 0xEC9327, "MEMMERT GmbH + Co. KG", "MEMMERT-+" }, { 0xEC9681, "2276427 Ontario Inc", "2276427-ONTARIO" }, { 0xEC986C, "Lufft Mess- und Regeltechnik GmbH", "LUFFT-MESS--UND-REGELTECHNIK" }, { 0xEC98C1, "Beijing Risbo Network Technology Co.,Ltd", "BEIJING-RISBO-NETWORK" }, { 0xEC9A74, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xEC9B5B, "Nokia Corporation", "NOKIA" }, { 0xEC9ECD, "Emerson Network Power and Embedded Computing", "EMERSON-NETWORK-POWER-AND-EMBEDDED-COMPUTING" }, { 0xECA29B, "Kemppi Oy", "KEMPPI-OY" }, { 0xECA86B, "ELITEGROUP COMPUTER SYSTEMS CO., LTD.", "ELITEGROUP" }, { 0xECB106, "Acuro Networks, Inc", "ACURO-NETWORKS" }, { 0xECB541, "SHINANO E and E Co.Ltd.", "SHINANO-E-AND-E" }, { 0xECBBAE, "Digivoice Tecnologia em Eletronica Ltda", "DIGIVOICE-TECNOLOGIA-EM-ELETRONICA-LTDA" }, { 0xECBD09, "FUSION Electronics Ltd", "FUSION-ELECTRONICS" }, { 0xECC38A, "Accuenergy (CANADA) Inc", "ACCUENERGY-CANADA" }, { 0xECC882, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xECCD6D, "Allied Telesis, Inc.", "ALLIED-TELESIS" }, { 0xECD00E, "MiraeRecognition Co., Ltd.", "MIRAERECOGNITION" }, { 0xECD040, "GEA Farm Technologies GmbH", "GEA-FARM-TECHNOLOGIES" }, { 0xECD19A, "Zhuhai Liming Industries Co., Ltd", "ZHUHAI-LIMING-INDUSTRIES" }, { 0xECD925, "RAMI", "RAMI" }, { 0xECD950, "IRT SA", "IRT" }, { 0xECDE3D, "Lamprey Networks, Inc.", "LAMPREY-NETWORKS" }, { 0xECE09B, "Samsung electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0xECE1A9, "Cisco", "CISCO" }, { 0xECE555, "Hirschmann Automation", "HIRSCHMANN-AUTOMATION" }, { 0xECE744, "Omntec mfg. inc", "OMNTEC-MFG" }, { 0xECE90B, "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH", "SISTEMA-SOLUCOES-ELETRONICAS-LTDA---EASYTECH" }, { 0xECE915, "STI Ltd", "STI" }, { 0xECE9F8, "Guang Zhou TRI-SUN Electronics Technology Co., Ltd", "GUANG-ZHOU-TRI-SUN-ELECTRONICS" }, { 0xECEA03, "DARFON LIGHTING CORP", "DARFON-LIGHTING" }, { 0xECF00E, "Abocom", "ABOCOM" }, { 0xECF236, "NEOMONTANA ELECTRONICS", "NEOMONTANA-ELECTRONICS" }, { 0xECF35B, "Nokia Corporation", "NOKIA" }, { 0xECF4BB, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0xECFAAA, "The IMS Company", "THE-IMS-COMPANY" }, { 0xECFC55, "A. Eberle GmbH & Co. KG", "A-EBERLE" }, { 0xECFE7E, "BlueRadios, Inc.", "BLUERADIOS" }, { 0xF0007F, "Janz - Contadores de Energia, SA", "JANZ---CONTADORES-DE-ENERGIA" }, { 0xF0022B, "Chrontel", "CHRONTEL" }, { 0xF00248, "SmarteBuilding", "SMARTEBUILDING" }, { 0xF00786, "Shandong Bittel Electronics Co., Ltd", "SHANDONG-BITTEL-ELECTRONICS" }, { 0xF008F1, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF013C3, "SHENZHEN FENDA TECHNOLOGY CO., LTD", "SHENZHEN-FENDA" }, { 0xF01C13, "LG Electronics", "LG-ELECTRONICS" }, { 0xF01FAF, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0xF0219D, "Cal-Comp Electronics & Communications Company Ltd.", "CAL-COMP-ELECTRONICS-COMMUNICATION-COMPANY" }, { 0xF02329, "SHOWA DENKI CO.,LTD.", "SHOWA-DENKI" }, { 0xF02405, "OPUS High Technology Corporation", "OPUS-HIGH" }, { 0xF02408, "Talaris (Sweden) AB", "TALARIS-SWEDEN-AB" }, { 0xF02572, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xF025B7, "Samsung Electro Mechanics co., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xF0264C, "Dr. Sigrist AG", "DR-SIGRIST" }, { 0xF02765, "Murata Manufactuaring Co.,Ltd.", "MURATA-MANUFACTUARING" }, { 0xF02929, "Cisco", "CISCO" }, { 0xF02A61, "Waldo Networks, Inc.", "WALDO-NETWORKS" }, { 0xF02FD8, "Bi2-Vision", "BI2-VISION" }, { 0xF0321A, "Mita-Teknik A/S", "MITA-TEKNIK-A/S" }, { 0xF037A1, "Huike Electronics (SHENZHEN) CO., LTD.", "HUIKE-ELECTRONICS-SHENZHEN" }, { 0xF03A55, "Omega Elektronik AS", "OMEGA-ELEKTRONIK-AS" }, { 0xF04335, "DVN(Shanghai)Ltd.", "DVN-SHANGHAI" }, { 0xF04A2B, "PYRAMID Computer GmbH", "PYRAMID" }, { 0xF04B6A, "Scientific Production Association Siberian Arsenal, Ltd.", "SCIENTIFIC-PRODUCTION-ASSOCIATION-SIBERIAN-ARSENAL" }, { 0xF04BF2, "JTECH Communications, Inc.", "JTECH-COMMUNICATION" }, { 0xF04DA2, "Dell Inc.", "DELL" }, { 0xF04F7C, "PRIVATE", "PRIVATE" }, { 0xF05849, "CareView Communications", "CAREVIEW-COMMUNICATION" }, { 0xF05A09, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF05D89, "Dycon Limited", "DYCON" }, { 0xF05DC8, "Duracell Powermat", "DURACELL-POWERMAT" }, { 0xF05F5A, "Getriebebau NORD GmbH and Co. KG", "GETRIEBEBAU-NORD-AND" }, { 0xF06130, "Advantage Pharmacy Services, LLC", "ADVANTAGE-PHARMACY-SERVICES-LLC" }, { 0xF0620D, "Shenzhen Egreat Tech Corp.,Ltd", "SHENZHEN-EGREAT-TECH" }, { 0xF06281, "ProCurve Networking by HP", "PROCURVE-NETWORKING-BY-HP" }, { 0xF065DD, "Primax Electronics Ltd.", "PRIMAX-ELECTRONICS" }, { 0xF06853, "Integrated Corporation", "INTEGRATED" }, { 0xF06BCA, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0728C, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF073AE, "PEAK-System Technik", "PEAK-SYSTEM-TECHNIK" }, { 0xF07765, "Sourcefire, Inc", "SOURCEFIRE" }, { 0xF077D0, "Xcellen", "XCELLEN" }, { 0xF07BCB, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF07D68, "D-Link Corporation", "D-LINK" }, { 0xF07F0C, "Leopold Kostal GmbH &Co. KG", "LEOPOLD-KOSTAL" }, { 0xF081AF, "IRZ AUTOMATION TECHNOLOGIES LTD", "IRZ-AUTOMATION-TECHNOLOGIES" }, { 0xF0842F, "ADB Broadband Italia", "ADB-BROADBAND-ITALIA" }, { 0xF084C9, "zte corporation", "ZTE" }, { 0xF08A28, "JIANGSU HENGSION ELECTRONIC S and T CO.,LTD", "JIANGSU-HENGSION-S-AND-T" }, { 0xF08BFE, "COSTEL.,CO.LTD", "COSTEL" }, { 0xF08EDB, "VeloCloud Networks", "VELOCLOUD-NETWORKS" }, { 0xF0921C, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xF0933A, "NxtConect", "NXTCONECT" }, { 0xF093C5, "Garland Technology", "GARLAND" }, { 0xF09CBB, "RaonThink Inc.", "RAONTHINK" }, { 0xF09CE9, "Aerohive Networks Inc", "AEROHIVE-NETWORKS" }, { 0xF0A225, "PRIVATE", "PRIVATE" }, { 0xF0A764, "GST Co., Ltd.", "GST" }, { 0xF0ACA4, "HBC-radiomatic", "HBC-RADIOMATIC" }, { 0xF0AD4E, "Globalscale Technologies, Inc.", "GLOBALSCALE-TECHNOLOGIES" }, { 0xF0AE51, "Xi3 Corp", "XI3" }, { 0xF0B479, "Apple", "APPLE" }, { 0xF0B6EB, "Poslab Technology Co., Ltd.", "POSLAB" }, { 0xF0BCC8, "MaxID (Pty) Ltd", "MAXID-PTY" }, { 0xF0BDF1, "Sipod Inc.", "SIPOD" }, { 0xF0BF97, "Sony Corporation", "SONY" }, { 0xF0C1F1, "Apple, Inc.", "APPLE" }, { 0xF0C24C, "Zhejiang FeiYue Digital Technology Co., Ltd", "ZHEJIANG-FEIYUE-DIGITAL" }, { 0xF0C27C, "Mianyang Netop Telecom Equipment Co.,Ltd.", "MIANYANG-NETOP-TELECOM-EQUIPMENT" }, { 0xF0C88C, "LeddarTech Inc.", "LEDDARTECH" }, { 0xF0CBA1, "Apple", "APPLE" }, { 0xF0D14F, "LINEAR LLC", "LINEAR-LLC" }, { 0xF0D1A9, "Apple", "APPLE" }, { 0xF0D3A7, "CobaltRay Co., Ltd", "COBALTRAY" }, { 0xF0D3E7, "Sensometrix SA", "SENSOMETRIX" }, { 0xF0D767, "Axema Passagekontroll AB", "AXEMA-PASSAGEKONTROLL-AB" }, { 0xF0DA7C, "RLH INDUSTRIES,INC.", "RLH-INDUSTRIES" }, { 0xF0DB30, "Yottabyte", "YOTTABYTE" }, { 0xF0DCE2, "Apple", "APPLE" }, { 0xF0DE71, "Shanghai EDO Technologies Co.,Ltd.", "SHANGHAI-EDO-TECHNOLOGIES" }, { 0xF0DEB9, "ShangHai Y&Y Electronics Co., Ltd", "SHANGHAI-Y-Y-ELECTRONICS" }, { 0xF0DEF1, "Wistron InfoComm (Kunshan)Co", "WISTRON-INFOCOMM-KUNSHAN" }, { 0xF0E5C3, "Drägerwerk AG & Co. KG aA", "DRäGERWERK-AA" }, { 0xF0E77E, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF0EBD0, "Shanghai Feixun Communication Co.,Ltd.", "SHANGHAI-FEIXUN-COMMUNICATION" }, { 0xF0EC39, "Essec", "ESSEC" }, { 0xF0ED1E, "Bilkon Bilgisayar Kontrollu Cih. Im.Ltd.", "BILKON-BILGISAYAR-KONTROLLU-CIH-IM" }, { 0xF0EEBB, "VIPAR GmbH", "VIPAR" }, { 0xF0F002, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF0F260, "Mobitec AB", "MOBITEC-AB" }, { 0xF0F5AE, "Adaptrum Inc.", "ADAPTRUM" }, { 0xF0F61C, "Apple", "APPLE" }, { 0xF0F644, "Whitesky Science & Technology Co.,Ltd.", "WHITESKY-SCIENCE" }, { 0xF0F669, "Motion Analysis Corporation", "MOTION-ANALYSIS" }, { 0xF0F755, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xF0F7B3, "Phorm", "PHORM" }, { 0xF0F842, "KEEBOX, Inc.", "KEEBOX" }, { 0xF0F9F7, "IES GmbH & Co. KG", "IES" }, { 0xF0FDA0, "Acurix Networks LP", "ACURIX-NETWORKS-LP" }, { 0xF40321, "BeNeXt B.V.", "BENEXT" }, { 0xF4044C, "ValenceTech Limited", "VALENCETECH" }, { 0xF4068D, "devolo AG", "DEVOLO" }, { 0xF40B93, "Research In Motion", "RESEARCH-IN-MOTION" }, { 0xF40F9B, "WAVELINK", "WAVELINK" }, { 0xF415FD, "Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd.", "SHANGHAI-PATEO-EQUIPMENT-MANUFACTURING" }, { 0xF41BA1, "Apple", "APPLE" }, { 0xF41E26, "Simon-Kaloi Engineering", "SIMON-KALOI-ENGINEERING" }, { 0xF41F0B, "YAMABISHI Corporation", "YAMABISHI" }, { 0xF41FC2, "Cisco", "CISCO" }, { 0xF42012, "Cuciniale GmbH", "CUCINIALE" }, { 0xF42896, "SPECTO PAINEIS ELETRONICOS LTDA", "SPECTO-PAINEIS-ELETRONICOS-LTDA" }, { 0xF436E1, "Abilis Systems SARL", "ABILIS-SARL" }, { 0xF43814, "Shanghai Howell Electronic Co.,Ltd", "SHANGHAI-HOWELL" }, { 0xF43D80, "FAG Industrial Services GmbH", "FAG-INDUSTRIAL-SERVICES" }, { 0xF43E61, "Shenzhen Gongjin Electronics Co., Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xF43E9D, "Benu Networks, Inc.", "BENU-NETWORKS" }, { 0xF44227, "S & S Research Inc.", "S-S-RESEARCH" }, { 0xF44450, "BND Co., Ltd.", "BND" }, { 0xF445ED, "Portable Innovation Technology Ltd.", "PORTABLE-INNOVATION" }, { 0xF4472A, "Nanjing Rousing Sci. and Tech. Industrial Co., Ltd", "NANJING-ROUSING-SCI-AND-TECH-INDUSTRIAL" }, { 0xF44848, "Amscreen Group Ltd", "AMSCREEN-GROUP" }, { 0xF44EFD, "Actions Semiconductor Co.,Ltd.(Cayman Islands)", "ACTIONS-SEMICONDUCTOR-CAYMAN-ISLANDS" }, { 0xF450EB, "Telechips Inc", "TELECHIPS" }, { 0xF45214, "Mellanox Technologies, Inc.", "MELLANOX-TECHNOLOGIES" }, { 0xF45433, "Rockwell Automation", "ROCKWELL-AUTOMATION" }, { 0xF45595, "HENGBAO Corporation LTD.", "HENGBAO" }, { 0xF4559C, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xF455E0, "Niceway CNC Technology Co.,Ltd.Hunan Province", "NICEWAY-CNC-HUNAN-PROVINCE" }, { 0xF45842, "Boxx TV Ltd", "BOXX-TV" }, { 0xF45F69, "Matsufu Electronics distribution Company", "MATSUFU-ELECTRONICS-DISTRIBUTION-COMPANY" }, { 0xF45FD4, "Cisco SPVTG", "CISCO-SPVTG" }, { 0xF45FF7, "DQ Technology Inc.", "DQ" }, { 0xF4600D, "Panoptic Technology, Inc", "PANOPTIC" }, { 0xF46349, "Diffon Corporation", "DIFFON" }, { 0xF46ABC, "Adonit Corp. Ltd.", "ADONIT" }, { 0xF46D04, "ASUSTek COMPUTER INC.", "ASUSTEK" }, { 0xF46DE2, "zte corporation", "ZTE" }, { 0xF473CA, "Conversion Sound Inc.", "CONVERSION-SOUND" }, { 0xF47626, "Viltechmeda UAB", "VILTECHMEDA-UAB" }, { 0xF47A4E, "Woojeon&Handan", "WOOJEON-HANDAN" }, { 0xF47ACC, "SolidFire, Inc.", "SOLIDFIRE" }, { 0xF47B5E, "Samsung Eletronics Co., Ltd", "SAMSUNG-ELETRONICS" }, { 0xF47F35, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xF48139, "CANON INC.", "CANON" }, { 0xF48771, "Infoblox", "INFOBLOX" }, { 0xF48E09, "Nokia Corporation", "NOKIA" }, { 0xF490CA, "Tensorcom", "TENSORCOM" }, { 0xF490EA, "Deciso B.V.", "DECISO" }, { 0xF49461, "NexGen Storage", "NEXGEN-STORAGE" }, { 0xF49466, "CountMax, ltd", "COUNTMAX" }, { 0xF499AC, "WEBER Schraubautomaten GmbH", "WEBER-SCHRAUBAUTOMATEN" }, { 0xF49F54, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xF4A294, "EAGLE WORLD DEVELOPMENT CO., LIMITED", "EAGLE-WORLD-DEVELOPMENT" }, { 0xF4A52A, "Hawa Technologies Inc", "HAWA-TECHNOLOGIES" }, { 0xF4ACC1, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xF4B164, "Lightning Telecommunications Technology Co. Ltd", "LIGHTNING-TELECOMMUNICATIONS" }, { 0xF4B381, "WindowMaster A/S", "WINDOWMASTER-A/S" }, { 0xF4B549, "Yeastar Technology Co., Ltd.", "YEASTAR" }, { 0xF4B6E5, "TerraSem Co.,Ltd", "TERRASEM" }, { 0xF4B72A, "TIME INTERCONNECT LTD", "TIME-INTERCONNECT" }, { 0xF4B7E2, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF4BD7C, "Chengdu jinshi communication Co., LTD", "CHENGDU-JINSHI-COMMUNICATION" }, { 0xF4C6D7, "blackned GmbH", "BLACKNED" }, { 0xF4C714, "Shenzhen Huawei Communication Technologies Co., Ltd", "SHENZHEN-HUAWEI-COMMUNICATION-TECHNOLOGIES" }, { 0xF4C795, "WEY Elektronik AG", "WEY-ELEKTRONIK" }, { 0xF4CAE5, "FREEBOX SA", "FREEBOX" }, { 0xF4CD90, "Vispiron Rotec GmbH", "VISPIRON-ROTEC" }, { 0xF4CE46, "Hewlett-Packard Company", "HEWLETT-PACKARD-COMPANY" }, { 0xF4CFE2, "Cisco", "CISCO" }, { 0xF4D9FB, "Samsung Electronics CO., LTD", "SAMSUNG-ELECTRONICS" }, { 0xF4DC4D, "Beijing CCD Digital Technology Co., Ltd", "BEIJING-CCD-DIGITAL" }, { 0xF4DCDA, "Zhuhai Jiahe Communication Technology Co., limited", "ZHUHAI-JIAHE-COMMUNICATION" }, { 0xF4DCF9, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xF4E142, "Delta Elektronika BV", "DELTA-ELEKTRONIKA" }, { 0xF4E6D7, "Solar Power Technologies, Inc.", "SOLAR-POWER-TECHNOLOGIES" }, { 0xF4EA67, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xF4EC38, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF4F15A, "Apple", "APPLE" }, { 0xF4F5A5, "Nokia corporation", "NOKIA" }, { 0xF4F951, "Apple", "APPLE" }, { 0xF4FC32, "Texas Instruments", "TEXAS-INSTRUMENTS" }, { 0xF80113, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xF80332, "Khomp", "KHOMP" }, { 0xF8051C, "DRS Imaging and Targeting Solutions", "DRS-IMAGING-AND-TARGETING-SOLUTIONS" }, { 0xF80BBE, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF80BD0, "Datang Telecom communication terminal (Tianjin) Co., Ltd.", "DATANG-TELECOM-COMMUNICATION-TERMINAL-TIANJIN" }, { 0xF80CF3, "LG Electronics", "LG-ELECTRONICS" }, { 0xF80DEA, "ZyCast Technology Inc.", "ZYCAST" }, { 0xF80F41, "Wistron InfoComm(ZhongShan) Corporation", "WISTRON-INFOCOMM-ZHONGSHAN" }, { 0xF80F84, "Natural Security SAS", "NATURAL-SECURITY-SAS" }, { 0xF81037, "Atopia Systems, LP", "ATOPIA-LP" }, { 0xF81547, "Avaya, Inc", "AVAYA" }, { 0xF81654, "Intel Corporate", "INTEL-CORPORATE" }, { 0xF81A67, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF81CE5, "Telefonbau Behnke GmbH", "TELEFONBAU-BEHNKE" }, { 0xF81D93, "Longdhua(Beijing) Controls Technology Co.,Ltd", "LONGDHUA-BEIJING-CONTROLS" }, { 0xF81EDF, "Apple", "APPLE" }, { 0xF82285, "Cypress Technology CO., LTD.", "CYPRESS" }, { 0xF82793, "Apple, Inc", "APPLE" }, { 0xF82BC8, "Jiangsu Switter Co., Ltd", "JIANGSU-SWITTER" }, { 0xF82EDB, "RTW GmbH & Co. KG", "RTW" }, { 0xF82F5B, "eGauge Systems LLC", "EGAUGE-LLC" }, { 0xF82FA8, "Hon Hai Precision Ind. Co.,Ltd.", "HON-HAI-PRECISION-IND" }, { 0xF83094, "Alcatel-Lucent Telecom Limited", "ALCATEL-LUCENT-TELECOM" }, { 0xF8313E, "endeavour GmbH", "ENDEAVOUR" }, { 0xF83376, "Good Mind Innovation Co., Ltd.", "GOOD-MIND-INNOVATION" }, { 0xF83553, "Magenta Research Ltd.", "MAGENTA-RESEARCH" }, { 0xF835DD, "Gemtek Technology Co., Ltd.", "GEMTEK" }, { 0xF83D4E, "Softlink Automation System Co., Ltd", "SOFTLINK-AUTOMATION-SYSTEM" }, { 0xF83DFF, "Huawei Technologies Co., Ltd", "HUAWEI-TECHNOLOGIES" }, { 0xF842FB, "Yasuda Joho Co.,ltd.", "YASUDA-JOHO" }, { 0xF845AD, "Konka Group Co., Ltd.", "KONKA-GROUP" }, { 0xF8462D, "SYNTEC Incorporation", "SYNTEC-INCORPORATION" }, { 0xF8472D, "X2gen Digital Corp. Ltd", "X2GEN-DIGITAL" }, { 0xF84897, "Hitachi, Ltd.", "HITACHI" }, { 0xF84A7F, "Innometriks Inc", "INNOMETRIKS" }, { 0xF84ABF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xF84F57, "Cisco", "CISCO" }, { 0xF85063, "Verathon", "VERATHON" }, { 0xF8516D, "Denwa Technology Corp.", "DENWA" }, { 0xF852DF, "VNL Europe AB", "VNL-EUROPE-AB" }, { 0xF854AF, "ECI Telecom Ltd.", "ECI-TELECOM" }, { 0xF8572E, "Core Brands, LLC", "CORE-BRANDS-LLC" }, { 0xF85BC9, "M-Cube Spa", "M-CUBE-SPA" }, { 0xF85C45, "IC Nexus Co. Ltd.", "IC-NEXUS" }, { 0xF85F2A, "Nokia Corporation", "NOKIA" }, { 0xF862AA, "xn systems", "XN" }, { 0xF866F2, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xF86971, "Seibu Electric Co.,", "SEIBU-ELECTRIC" }, { 0xF86ECF, "Arcx Inc", "ARCX" }, { 0xF871FE, "The Goldman Sachs Group, Inc.", "THE-GOLDMAN-SACHS-GROUP" }, { 0xF872EA, "Cisco", "CISCO" }, { 0xF8769B, "Neopis Co., Ltd.", "NEOPIS" }, { 0xF87B62, "FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch", "FASTWEL-TAIWAN-BRANCH" }, { 0xF87B7A, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF87B8C, "Amped Wireless", "AMPED-WIRELESS" }, { 0xF8811A, "OVERKIZ", "OVERKIZ" }, { 0xF88C1C, "KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING", "KAISHUN-BEIJING" }, { 0xF88DEF, "Tenebraex", "TENEBRAEX" }, { 0xF88E85, "COMTREND CORPORATION", "COMTREND" }, { 0xF88FCA, "Google Fiber, Inc", "GOOGLE-FIBER" }, { 0xF8912A, "GLP German Light Products GmbH", "GLP-GERMAN-LIGHT-PRODUCTS" }, { 0xF893F3, "VOLANS", "VOLANS" }, { 0xF89550, "Proton Products Chengdu Ltd", "PROTON-PRODUCTS-CHENGDU" }, { 0xF897CF, "DAESHIN-INFORMATION TECHNOLOGY CO., LTD.", "DAESHIN-INFORMATION" }, { 0xF89955, "Fortress Technology Inc", "FORTRESS" }, { 0xF89D0D, "Control Technology Inc.", "CONTROL" }, { 0xF89FB8, "YAZAKI Energy System Corporation", "YAZAKI-ENERGY-SYSTEM" }, { 0xF8A03D, "Dinstar Technologies Co., Ltd.", "DINSTAR-TECHNOLOGIES" }, { 0xF8A2B4, "RHEWA-WAAGENFABRIK August Freudewald GmbH &Co. KG", "RHEWA-WAAGENFABRIK-AUGUST-FREUDEWALD-AMP" }, { 0xF8A45F, "Beijing Xiaomi communications co.,ltd", "BEIJING-XIAOMI-COMMUNICATION" }, { 0xF8A963, "COMPAL INFORMATION (KUNSHAN) CO., LTD.", "COMPAL-INFORMATION-KUNSHAN" }, { 0xF8A9DE, "PUISSANCE PLUS", "PUISSANCE-PLUS" }, { 0xF8AA8A, "Axview Technology (Shenzhen) Co.,Ltd", "AXVIEW-SHENZHEN" }, { 0xF8AC6D, "Deltenna Ltd", "DELTENNA" }, { 0xF8B156, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0xF8B599, "Guangzhou CHNAVS Digital Technology Co.,Ltd", "GUANGZHOU-CHNAVS-DIGITAL" }, { 0xF8BC12, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0xF8C001, "Juniper Networks", "JUNIPER-NETWORKS" }, { 0xF8C091, "Highgates Technology", "HIGHGATES" }, { 0xF8C678, "Carefusion", "CAREFUSION" }, { 0xF8D0AC, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0xF8D0BD, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xF8D111, "TP-LINK TECHNOLOGIES CO., LTD.", "TP-LINK-TECHNOLOGIES" }, { 0xF8D3A9, "AXAN Networks", "AXAN-NETWORKS" }, { 0xF8D462, "Pumatronix Equipamentos Eletronicos Ltda.", "PUMATRONIX-EQUIPAMENTOS-ELETRONICOS-LTDA" }, { 0xF8D756, "Simm Tronic Limited", "SIMM-TRONIC" }, { 0xF8D7BF, "REV Ritter GmbH", "REV-RITTER" }, { 0xF8DADF, "EcoTech, Inc.", "ECOTECH" }, { 0xF8DAE2, "Beta LaserMike", "BETA-LASERMIKE" }, { 0xF8DAF4, "Taishan Online Technology Co., Ltd.", "TAISHAN-ONLINE" }, { 0xF8DB4C, "PNY Technologies, INC.", "PNY-TECHNOLOGIES" }, { 0xF8DB7F, "HTC Corporation", "HTC" }, { 0xF8DB88, "Dell Inc PCBA Test", "DELL-PCBA-TEST" }, { 0xF8DC7A, "Variscite LTD", "VARISCITE" }, { 0xF8DFA8, "ZTE Corporation", "ZTE" }, { 0xF8E4FB, "Actiontec Electronics, Inc", "ACTIONTEC-ELECTRONICS" }, { 0xF8E7B5, "µTech Tecnologia LTDA", "µTECH-TECNOLOGIA-LTDA" }, { 0xF8E968, "Egker Kft.", "EGKER-KFT" }, { 0xF8EA0A, "Dipl.-Math. Michael Rauch", "DIPL--MATH-MICHAEL-RAUCH" }, { 0xF8EDA5, "ARRIS Group, Inc.", "ARRIS-GROUP" }, { 0xF8F014, "RackWare Inc.", "RACKWARE" }, { 0xF8F082, "Orion Networks International, Inc", "ORION-NETWORKS" }, { 0xF8F1B6, "Motorola Mobility LLC", "MOTOROLA-MOBILITY-LLC" }, { 0xF8F25A, "G-Lab GmbH", "G-LAB" }, { 0xF8F7D3, "International Communications Corporation", "COMMUNICATION" }, { 0xF8F7FF, "SYN-TECH SYSTEMS INC", "SYN-TECH" }, { 0xF8FB2F, "Santur Corporation", "SANTUR" }, { 0xF8FE5C, "Reciprocal Labs Corp", "RECIPROCAL-LABS" }, { 0xF8FEA8, "Technico Japan Corporation", "TECHNICO-JAPAN" }, { 0xF8FF5F, "Shenzhen Communication Technology Co.,Ltd", "SHENZHEN-COMMUNICATION" }, { 0xFC0012, "Toshiba Samsung Storage Technolgoy Korea Corporation", "TOSHIBA-SAMSUNG-STORAGE-TECHNOLGOY-KOREA" }, { 0xFC019E, "VIEVU", "VIEVU" }, { 0xFC01CD, "FUNDACION TEKNIKER", "FUNDACION-TEKNIKER" }, { 0xFC0647, "Cortland Research, LLC", "CORTLAND-RESEARCH-LLC" }, { 0xFC07A0, "LRE Medical GmbH", "LRE-MEDICAL" }, { 0xFC0877, "Prentke Romich Company", "PRENTKE-ROMICH-COMPANY" }, { 0xFC09D8, "ACTEON Group", "ACTEON-GROUP" }, { 0xFC0A81, "Motorola Solutions Inc.", "MOTOROLA-SOLUTIONS" }, { 0xFC0FE6, "Sony Computer Entertainment Inc.", "SONY-ENTERTAINMENT" }, { 0xFC10BD, "Control Sistematizado S.A.", "CONTROL-SISTEMATIZADO" }, { 0xFC1186, "Logic3 plc", "LOGIC3-PLC" }, { 0xFC1349, "Global Apps Corp.", "GLOBAL-APPS" }, { 0xFC15B4, "Hewlett Packard", "HEWLETT-PACKARD" }, { 0xFC1607, "Taian Technology(Wuxi) Co.,Ltd.", "TAIAN-WUXI" }, { 0xFC1794, "InterCreative Co., Ltd", "INTERCREATIVE" }, { 0xFC19D0, "Cloud Vision Networks Technology Co.,Ltd.", "CLOUD-VISION-NETWORKS" }, { 0xFC1BFF, "V-ZUG AG", "V-ZUG" }, { 0xFC1D59, "I Smart Cities HK Ltd", "I-SMART-CITIES-HK" }, { 0xFC1E16, "IPEVO corp", "IPEVO" }, { 0xFC1F19, "SAMSUNG ELECTRO-MECHANICS CO., LTD.", "SAMSUNG-ELECTRO-MECHANICS" }, { 0xFC1FC0, "EURECAM", "EURECAM" }, { 0xFC229C, "Han Kyung I Net Co.,Ltd.", "HAN-KYUNG-I-NET" }, { 0xFC253F, "Apple", "APPLE" }, { 0xFC27A2, "TRANS ELECTRIC CO., LTD.", "TRANS-ELECTRIC" }, { 0xFC2A54, "Connected Data, Inc.", "CONNECTED-DATA" }, { 0xFC2E2D, "Lorom Industrial Co.LTD.", "LOROM-INDUSTRIAL" }, { 0xFC2F40, "Calxeda, Inc.", "CALXEDA" }, { 0xFC3598, "Favite Inc.", "FAVITE" }, { 0xFC35E6, "Visteon corp", "VISTEON" }, { 0xFC3FAB, "Henan Lanxin Technology Co., Ltd", "HENAN-LANXIN" }, { 0xFC4463, "Universal Audio", "UNIVERSAL-AUDIO" }, { 0xFC4499, "Swarco LEA d.o.o.", "SWARCO-LEA-D-O-O" }, { 0xFC455F, "JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD", "JIANGXI-SHANSHUI-OPTOELECTRONIC" }, { 0xFC48EF, "HUAWEI TECHNOLOGIES CO.,LTD", "HUAWEI-TECHNOLOGIES" }, { 0xFC4B1C, "INTERSENSOR S.R.L.", "INTERSENSOR-S-R-L" }, { 0xFC4BBC, "Sunplus Technology Co., Ltd.", "SUNPLUS" }, { 0xFC4DD4, "Universal Global Scientific Industrial Co., Ltd.", "UNIVERSAL-GLOBAL-SCIENTIFIC-INDUSTRIAL" }, { 0xFC5090, "SIMEX Sp. z o.o.", "SIMEX-SP-Z-O-O" }, { 0xFC52CE, "Control iD", "CONTROL-ID" }, { 0xFC58FA, "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.", "SHEN-ZHEN-SHI-XIN-ZHONG-XIN" }, { 0xFC5B24, "Weibel Scientific A/S", "WEIBEL-SCIENTIFIC-A/S" }, { 0xFC5B26, "MikroBits", "MIKROBITS" }, { 0xFC6018, "Zhejiang Kangtai Electric Co., Ltd.", "ZHEJIANG-KANGTAI-ELECTRIC" }, { 0xFC6198, "NEC Personal Products, Ltd", "NEC-PERSONAL-PRODUCTS" }, { 0xFC626E, "Beijing MDC Telecom", "BEIJING-MDC-TELECOM" }, { 0xFC683E, "Directed Perception, Inc", "DIRECTED-PERCEPTION" }, { 0xFC6C31, "LXinstruments GmbH", "LXINSTRUMENTS" }, { 0xFC7516, "D-Link International", "D-LINK" }, { 0xFC75E6, "Handreamnet", "HANDREAMNET" }, { 0xFC7CE7, "FCI USA LLC", "FCI-USA-LLC" }, { 0xFC8329, "Trei technics", "TREI-TECHNICS" }, { 0xFC8399, "Avaya, Inc", "AVAYA" }, { 0xFC8B97, "Shenzhen Gongjin Electronics Co.,Ltd", "SHENZHEN-GONGJIN-ELECTRONICS" }, { 0xFC8E7E, "Pace plc", "PACE-PLC" }, { 0xFC8FC4, "Intelligent Technology Inc.", "INTELLIGENT" }, { 0xFC946C, "UBIVELOX", "UBIVELOX" }, { 0xFC94E3, "Technicolor USA Inc.", "TECHNICOLOR-USA" }, { 0xFC9947, "Cisco", "CISCO" }, { 0xFC9FAE, "Fidus Systems Inc", "FIDUS" }, { 0xFCA13E, "Samsung Electronics", "SAMSUNG-ELECTRONICS" }, { 0xFCA841, "Avaya, Inc", "AVAYA" }, { 0xFCA9B0, "MIARTECH (SHANGHAI),INC.", "MIARTECH-SHANGHAI" }, { 0xFCAD0F, "QTS NETWORKS", "QTS-NETWORKS" }, { 0xFCAF6A, "Conemtech AB", "CONEMTECH-AB" }, { 0xFCB0C4, "Shanghai DareGlobal Technologies Co., Ltd", "SHANGHAI-DAREGLOBAL-TECHNOLOGIES" }, { 0xFCBBA1, "Shenzhen Minicreate Technology Co.,Ltd", "SHENZHEN-MINICREATE" }, { 0xFCC23D, "Atmel Corporation", "ATMEL" }, { 0xFCC734, "Samsung Electronics Co.,Ltd", "SAMSUNG-ELECTRONICS" }, { 0xFCC897, "ZTE Corporation", "ZTE" }, { 0xFCCCE4, "Ascon Ltd.", "ASCON" }, { 0xFCCF62, "IBM Corp", "IBM" }, { 0xFCD4F2, "The Coca Cola Company", "THE-COCA-COLA-COMPANY" }, { 0xFCD4F6, "Messana Air.Ray Conditioning s.r.l.", "MESSANA-AIR-RAY-CONDITIONING-S-R-L" }, { 0xFCD6BD, "Robert Bosch GmbH", "ROBERT-BOSCH" }, { 0xFCD817, "Beijing Hesun Technologies Co.Ltd.", "BEIJING-HESUN-TECHNOLOGIES" }, { 0xFCDB96, "ENERVALLEY CO., LTD", "ENERVALLEY" }, { 0xFCDD55, "Shenzhen WeWins wireless Co.,Ltd", "SHENZHEN-WEWINS-WIRELESS" }, { 0xFCE192, "Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd", "SICHUAN-JINWANGTONG-SCIENCE" }, { 0xFCE1D9, "Stable Imaging Solutions LLC", "STABLE-IMAGING-SOLUTIONS-LLC" }, { 0xFCE23F, "CLAY PAKY SPA", "CLAY-PAKY-SPA" }, { 0xFCE557, "Nokia Corporation", "NOKIA" }, { 0xFCE892, "Hangzhou Lancable Technology Co.,Ltd", "HANGZHOU-LANCABLE" }, { 0xFCEDB9, "Arrayent", "ARRAYENT" }, { 0xFCF1CD, "OPTEX-FA CO.,LTD.", "OPTEX-FA" }, { 0xFCF528, "ZyXEL Communications Corporation", "ZYXEL-COMMUNICATION" }, { 0xFCF8AE, "Intel Corporate", "INTEL-CORPORATE" }, { 0xFCF8B7, "TRONTEQ Electronic", "TRONTEQ" }, { 0xFCFAF7, "Shanghai Baud Data Communication Co.,Ltd.", "SHANGHAI-BAUD-DATA-COMMUNICATION" }, { 0xFCFBFB, "CISCO SYSTEMS, INC.", "CISCO" }, { 0xFCFE77, "Hitachi Reftechno, Inc.", "HITACHI-REFTECHNO" }, { 0x525400, "possible QEMU VM", "QEMU-VIRTUAL" }, }; ipv6calc-0.95.0/databases/ieee-oui/README0000664000175100017510000000024510140701160016637 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.95.0/databases/cc-assignment/0000775000175100017510000000000012242072067017024 5ustar peterpeteripv6calc-0.95.0/databases/cc-assignment/create-cc-to-registry-list.pl0000775000175100017510000001025412227157365024463 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.2 2013/10/15 06:21:41 ds6peter Exp $ # Copyright : 2013-2013 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"; 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); $reg =~ s/RIPENCC/RIPE/o; if ($reg !~ /^(ARIN|APNIC|RIPE|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 "};"; print "Finished\n"; ipv6calc-0.95.0/databases/cc-assignment/db_cc_reg_assignment.h0000664000175100017510000013140712226544026023323 0ustar peterpeter /* * Project : ipv6calc * File : db_cc_reg_assignment.h * Version : $Id: db_cc_reg_assignment.h,v 1.1 2013/10/13 16:19:34 ds6peter Exp $ * Generated : Sun Oct 13 07:48:55 2013 * 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/20130806 APNIC/20130805 ARIN/20130805 LACNIC/20130805 RIPENCC/20130805"; static const s_cc_reg_assignment cc_reg_assignment[] = { { "AD", REGISTRY_RIPE }, { "AE", REGISTRY_RIPE }, { "AF", REGISTRY_APNIC }, { "AG", REGISTRY_ARIN }, { "AI", REGISTRY_ARIN }, { "AL", REGISTRY_RIPE }, { "AM", REGISTRY_RIPE }, { "AO", REGISTRY_AFRINIC }, { "AP", REGISTRY_APNIC }, { "AR", REGISTRY_LACNIC }, { "AS", REGISTRY_APNIC }, { "AT", REGISTRY_RIPE }, { "AU", REGISTRY_APNIC }, { "AW", REGISTRY_LACNIC }, { "AZ", REGISTRY_RIPE }, { "BA", REGISTRY_RIPE }, { "BB", REGISTRY_ARIN }, { "BD", REGISTRY_APNIC }, { "BE", REGISTRY_RIPE }, { "BF", REGISTRY_AFRINIC }, { "BG", REGISTRY_RIPE }, { "BH", REGISTRY_RIPE }, { "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_RIPE }, { "BZ", REGISTRY_LACNIC }, { "CA", REGISTRY_ARIN }, { "CD", REGISTRY_AFRINIC }, { "CF", REGISTRY_AFRINIC }, { "CG", REGISTRY_AFRINIC }, { "CH", REGISTRY_RIPE }, { "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_RIPE }, { "CZ", REGISTRY_RIPE }, { "DE", REGISTRY_RIPE }, { "DJ", REGISTRY_AFRINIC }, { "DK", REGISTRY_RIPE }, { "DM", REGISTRY_ARIN }, { "DO", REGISTRY_LACNIC }, { "DZ", REGISTRY_AFRINIC }, { "EC", REGISTRY_LACNIC }, { "EE", REGISTRY_RIPE }, { "EG", REGISTRY_AFRINIC }, { "ER", REGISTRY_AFRINIC }, { "ES", REGISTRY_RIPE }, { "ET", REGISTRY_AFRINIC }, { "EU", REGISTRY_RIPE }, { "FI", REGISTRY_RIPE }, { "FJ", REGISTRY_APNIC }, { "FM", REGISTRY_APNIC }, { "FO", REGISTRY_RIPE }, { "FR", REGISTRY_RIPE }, { "GA", REGISTRY_AFRINIC }, { "GB", REGISTRY_RIPE }, { "GD", REGISTRY_ARIN }, { "GE", REGISTRY_RIPE }, { "GF", REGISTRY_LACNIC }, { "GG", REGISTRY_RIPE }, { "GH", REGISTRY_AFRINIC }, { "GI", REGISTRY_RIPE }, { "GL", REGISTRY_RIPE }, { "GM", REGISTRY_AFRINIC }, { "GN", REGISTRY_AFRINIC }, { "GP", REGISTRY_ARIN }, { "GQ", REGISTRY_AFRINIC }, { "GR", REGISTRY_RIPE }, { "GT", REGISTRY_LACNIC }, { "GU", REGISTRY_APNIC }, { "GW", REGISTRY_AFRINIC }, { "GY", REGISTRY_LACNIC }, { "HK", REGISTRY_APNIC }, { "HN", REGISTRY_LACNIC }, { "HR", REGISTRY_RIPE }, { "HT", REGISTRY_LACNIC }, { "HU", REGISTRY_RIPE }, { "ID", REGISTRY_APNIC }, { "IE", REGISTRY_RIPE }, { "IL", REGISTRY_RIPE }, { "IM", REGISTRY_RIPE }, { "IN", REGISTRY_APNIC }, { "IO", REGISTRY_APNIC }, { "IQ", REGISTRY_RIPE }, { "IR", REGISTRY_RIPE }, { "IS", REGISTRY_RIPE }, { "IT", REGISTRY_RIPE }, { "JE", REGISTRY_RIPE }, { "JM", REGISTRY_ARIN }, { "JO", REGISTRY_RIPE }, { "JP", REGISTRY_APNIC }, { "KE", REGISTRY_AFRINIC }, { "KG", REGISTRY_RIPE }, { "KH", REGISTRY_APNIC }, { "KI", REGISTRY_APNIC }, { "KM", REGISTRY_AFRINIC }, { "KN", REGISTRY_ARIN }, { "KP", REGISTRY_APNIC }, { "KR", REGISTRY_APNIC }, { "KW", REGISTRY_RIPE }, { "KY", REGISTRY_ARIN }, { "KZ", REGISTRY_RIPE }, { "LA", REGISTRY_APNIC }, { "LB", REGISTRY_RIPE }, { "LC", REGISTRY_ARIN }, { "LI", REGISTRY_RIPE }, { "LK", REGISTRY_APNIC }, { "LR", REGISTRY_AFRINIC }, { "LS", REGISTRY_AFRINIC }, { "LT", REGISTRY_RIPE }, { "LU", REGISTRY_RIPE }, { "LV", REGISTRY_RIPE }, { "LY", REGISTRY_AFRINIC }, { "MA", REGISTRY_AFRINIC }, { "MC", REGISTRY_RIPE }, { "MD", REGISTRY_RIPE }, { "ME", REGISTRY_RIPE }, { "MF", REGISTRY_ARIN }, { "MG", REGISTRY_AFRINIC }, { "MH", REGISTRY_APNIC }, { "MK", REGISTRY_RIPE }, { "ML", REGISTRY_AFRINIC }, { "MM", REGISTRY_APNIC }, { "MN", REGISTRY_APNIC }, { "MO", REGISTRY_APNIC }, { "MP", REGISTRY_APNIC }, { "MQ", REGISTRY_RIPE }, { "MR", REGISTRY_AFRINIC }, { "MS", REGISTRY_ARIN }, { "MT", REGISTRY_RIPE }, { "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_RIPE }, { "NO", REGISTRY_RIPE }, { "NP", REGISTRY_APNIC }, { "NR", REGISTRY_APNIC }, { "NU", REGISTRY_APNIC }, { "NZ", REGISTRY_APNIC }, { "OM", REGISTRY_RIPE }, { "PA", REGISTRY_LACNIC }, { "PE", REGISTRY_LACNIC }, { "PF", REGISTRY_APNIC }, { "PG", REGISTRY_APNIC }, { "PH", REGISTRY_APNIC }, { "PK", REGISTRY_APNIC }, { "PL", REGISTRY_RIPE }, { "PM", REGISTRY_ARIN }, { "PR", REGISTRY_ARIN }, { "PS", REGISTRY_RIPE }, { "PT", REGISTRY_RIPE }, { "PW", REGISTRY_APNIC }, { "PY", REGISTRY_LACNIC }, { "QA", REGISTRY_RIPE }, { "RE", REGISTRY_AFRINIC }, { "RO", REGISTRY_RIPE }, { "RS", REGISTRY_RIPE }, { "RU", REGISTRY_RIPE }, { "RW", REGISTRY_AFRINIC }, { "SA", REGISTRY_RIPE }, { "SB", REGISTRY_APNIC }, { "SC", REGISTRY_AFRINIC }, { "SD", REGISTRY_AFRINIC }, { "SE", REGISTRY_RIPE }, { "SG", REGISTRY_APNIC }, { "SI", REGISTRY_RIPE }, { "SK", REGISTRY_RIPE }, { "SL", REGISTRY_AFRINIC }, { "SM", REGISTRY_RIPE }, { "SN", REGISTRY_AFRINIC }, { "SO", REGISTRY_AFRINIC }, { "SR", REGISTRY_LACNIC }, { "SS", REGISTRY_AFRINIC }, { "ST", REGISTRY_AFRINIC }, { "SV", REGISTRY_LACNIC }, { "SX", REGISTRY_LACNIC }, { "SY", REGISTRY_RIPE }, { "SZ", REGISTRY_AFRINIC }, { "TC", REGISTRY_ARIN }, { "TD", REGISTRY_AFRINIC }, { "TG", REGISTRY_AFRINIC }, { "TH", REGISTRY_APNIC }, { "TJ", REGISTRY_RIPE }, { "TK", REGISTRY_RIPE }, { "TL", REGISTRY_APNIC }, { "TM", REGISTRY_RIPE }, { "TN", REGISTRY_AFRINIC }, { "TO", REGISTRY_APNIC }, { "TR", REGISTRY_RIPE }, { "TT", REGISTRY_LACNIC }, { "TV", REGISTRY_APNIC }, { "TW", REGISTRY_APNIC }, { "TZ", REGISTRY_AFRINIC }, { "UA", REGISTRY_RIPE }, { "UG", REGISTRY_AFRINIC }, { "UM", REGISTRY_ARIN }, { "US", REGISTRY_ARIN }, { "UY", REGISTRY_LACNIC }, { "UZ", REGISTRY_RIPE }, { "VA", REGISTRY_RIPE }, { "VC", REGISTRY_ARIN }, { "VE", REGISTRY_LACNIC }, { "VG", REGISTRY_ARIN }, { "VI", REGISTRY_ARIN }, { "VN", REGISTRY_APNIC }, { "VU", REGISTRY_APNIC }, { "WF", REGISTRY_APNIC }, { "WS", REGISTRY_APNIC }, { "YE", REGISTRY_RIPE }, { "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_RIPE }, // 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_RIPE }, // 276 QA { REGISTRY_UNKNOWN }, // 277 RA { REGISTRY_RIPE }, // 278 SA { REGISTRY_UNKNOWN }, // 279 TA { REGISTRY_RIPE }, // 280 UA { REGISTRY_RIPE }, // 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_RIPE }, // 292 GB { REGISTRY_UNKNOWN }, // 293 HB { REGISTRY_UNKNOWN }, // 294 IB { REGISTRY_UNKNOWN }, // 295 JB { REGISTRY_UNKNOWN }, // 296 KB { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 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_RIPE }, // 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_RIPE }, // 364 AE { REGISTRY_RIPE }, // 365 BE { REGISTRY_UNKNOWN }, // 366 CE { REGISTRY_RIPE }, // 367 DE { REGISTRY_RIPE }, // 368 EE { REGISTRY_UNKNOWN }, // 369 FE { REGISTRY_RIPE }, // 370 GE { REGISTRY_UNKNOWN }, // 371 HE { REGISTRY_RIPE }, // 372 IE { REGISTRY_RIPE }, // 373 JE { REGISTRY_AFRINIC }, // 374 KE { REGISTRY_UNKNOWN }, // 375 LE { REGISTRY_RIPE }, // 376 ME { REGISTRY_AFRINIC }, // 377 NE { REGISTRY_UNKNOWN }, // 378 OE { REGISTRY_LACNIC }, // 379 PE { REGISTRY_UNKNOWN }, // 380 QE { REGISTRY_AFRINIC }, // 381 RE { REGISTRY_RIPE }, // 382 SE { REGISTRY_UNKNOWN }, // 383 TE { REGISTRY_UNKNOWN }, // 384 UE { REGISTRY_LACNIC }, // 385 VE { REGISTRY_UNKNOWN }, // 386 WE { REGISTRY_UNKNOWN }, // 387 XE { REGISTRY_RIPE }, // 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_RIPE }, // 417 BG { REGISTRY_AFRINIC }, // 418 CG { REGISTRY_UNKNOWN }, // 419 DG { REGISTRY_AFRINIC }, // 420 EG { REGISTRY_UNKNOWN }, // 421 FG { REGISTRY_RIPE }, // 422 GG { REGISTRY_UNKNOWN }, // 423 HG { REGISTRY_UNKNOWN }, // 424 IG { REGISTRY_UNKNOWN }, // 425 JG { REGISTRY_RIPE }, // 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_ARIN }, // 437 VG { REGISTRY_UNKNOWN }, // 438 WG { REGISTRY_UNKNOWN }, // 439 XG { REGISTRY_UNKNOWN }, // 440 YG { REGISTRY_UNKNOWN }, // 441 ZG { REGISTRY_UNKNOWN }, // 442 AH { REGISTRY_RIPE }, // 443 BH { REGISTRY_RIPE }, // 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_RIPE }, // 473 FI { REGISTRY_RIPE }, // 474 GI { REGISTRY_UNKNOWN }, // 475 HI { REGISTRY_UNKNOWN }, // 476 II { REGISTRY_UNKNOWN }, // 477 JI { REGISTRY_APNIC }, // 478 KI { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 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_RIPE }, // 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_RIPE }, // 532 MK { REGISTRY_UNKNOWN }, // 533 NK { REGISTRY_UNKNOWN }, // 534 OK { REGISTRY_APNIC }, // 535 PK { REGISTRY_UNKNOWN }, // 536 QK { REGISTRY_UNKNOWN }, // 537 RK { REGISTRY_RIPE }, // 538 SK { REGISTRY_RIPE }, // 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_RIPE }, // 546 AL { REGISTRY_ARIN }, // 547 BL { REGISTRY_LACNIC }, // 548 CL { REGISTRY_UNKNOWN }, // 549 DL { REGISTRY_UNKNOWN }, // 550 EL { REGISTRY_UNKNOWN }, // 551 FL { REGISTRY_RIPE }, // 552 GL { REGISTRY_UNKNOWN }, // 553 HL { REGISTRY_RIPE }, // 554 IL { REGISTRY_UNKNOWN }, // 555 JL { REGISTRY_UNKNOWN }, // 556 KL { REGISTRY_UNKNOWN }, // 557 LL { REGISTRY_AFRINIC }, // 558 ML { REGISTRY_RIPE }, // 559 NL { REGISTRY_UNKNOWN }, // 560 OL { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 580 IM { REGISTRY_ARIN }, // 581 JM { REGISTRY_AFRINIC }, // 582 KM { REGISTRY_UNKNOWN }, // 583 LM { REGISTRY_APNIC }, // 584 MM { REGISTRY_UNKNOWN }, // 585 NM { REGISTRY_RIPE }, // 586 OM { REGISTRY_ARIN }, // 587 PM { REGISTRY_UNKNOWN }, // 588 QM { REGISTRY_UNKNOWN }, // 589 RM { REGISTRY_RIPE }, // 590 SM { REGISTRY_RIPE }, // 591 TM { REGISTRY_ARIN }, // 592 UM { REGISTRY_UNKNOWN }, // 593 VM { REGISTRY_UNKNOWN }, // 594 WM { REGISTRY_UNKNOWN }, // 595 XM { REGISTRY_UNKNOWN }, // 596 YM { REGISTRY_AFRINIC }, // 597 ZM { REGISTRY_UNKNOWN }, // 598 AN { REGISTRY_APNIC }, // 599 BN { REGISTRY_APNIC }, // 600 CN { REGISTRY_UNKNOWN }, // 601 DN { REGISTRY_UNKNOWN }, // 602 EN { REGISTRY_UNKNOWN }, // 603 FN { REGISTRY_AFRINIC }, // 604 GN { REGISTRY_LACNIC }, // 605 HN { REGISTRY_APNIC }, // 606 IN { REGISTRY_UNKNOWN }, // 607 JN { REGISTRY_ARIN }, // 608 KN { REGISTRY_UNKNOWN }, // 609 LN { REGISTRY_APNIC }, // 610 MN { REGISTRY_UNKNOWN }, // 611 NN { REGISTRY_UNKNOWN }, // 612 ON { REGISTRY_UNKNOWN }, // 613 PN { REGISTRY_UNKNOWN }, // 614 QN { REGISTRY_UNKNOWN }, // 615 RN { REGISTRY_AFRINIC }, // 616 SN { REGISTRY_AFRINIC }, // 617 TN { REGISTRY_UNKNOWN }, // 618 UN { REGISTRY_APNIC }, // 619 VN { REGISTRY_UNKNOWN }, // 620 WN { REGISTRY_UNKNOWN }, // 621 XN { REGISTRY_UNKNOWN }, // 622 YN { REGISTRY_UNKNOWN }, // 623 ZN { REGISTRY_AFRINIC }, // 624 AO { REGISTRY_LACNIC }, // 625 BO { REGISTRY_LACNIC }, // 626 CO { REGISTRY_LACNIC }, // 627 DO { REGISTRY_UNKNOWN }, // 628 EO { REGISTRY_RIPE }, // 629 FO { REGISTRY_UNKNOWN }, // 630 GO { REGISTRY_UNKNOWN }, // 631 HO { REGISTRY_APNIC }, // 632 IO { REGISTRY_RIPE }, // 633 JO { REGISTRY_UNKNOWN }, // 634 KO { REGISTRY_UNKNOWN }, // 635 LO { REGISTRY_APNIC }, // 636 MO { REGISTRY_RIPE }, // 637 NO { REGISTRY_UNKNOWN }, // 638 OO { REGISTRY_UNKNOWN }, // 639 PO { REGISTRY_UNKNOWN }, // 640 QO { REGISTRY_RIPE }, // 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_RIPE }, // 684 IQ { REGISTRY_UNKNOWN }, // 685 JQ { REGISTRY_UNKNOWN }, // 686 KQ { REGISTRY_UNKNOWN }, // 687 LQ { REGISTRY_RIPE }, // 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_RIPE }, // 707 FR { REGISTRY_RIPE }, // 708 GR { REGISTRY_RIPE }, // 709 HR { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 732 ES { REGISTRY_UNKNOWN }, // 733 FS { REGISTRY_UNKNOWN }, // 734 GS { REGISTRY_UNKNOWN }, // 735 HS { REGISTRY_RIPE }, // 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_RIPE }, // 743 PS { REGISTRY_UNKNOWN }, // 744 QS { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 762 IT { REGISTRY_UNKNOWN }, // 763 JT { REGISTRY_UNKNOWN }, // 764 KT { REGISTRY_RIPE }, // 765 LT { REGISTRY_RIPE }, // 766 MT { REGISTRY_UNKNOWN }, // 767 NT { REGISTRY_UNKNOWN }, // 768 OT { REGISTRY_RIPE }, // 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_UNKNOWN }, // 778 YT { REGISTRY_UNKNOWN }, // 779 ZT { REGISTRY_APNIC }, // 780 AU { REGISTRY_UNKNOWN }, // 781 BU { REGISTRY_LACNIC }, // 782 CU { REGISTRY_UNKNOWN }, // 783 DU { REGISTRY_RIPE }, // 784 EU { REGISTRY_UNKNOWN }, // 785 FU { REGISTRY_APNIC }, // 786 GU { REGISTRY_RIPE }, // 787 HU { REGISTRY_UNKNOWN }, // 788 IU { REGISTRY_UNKNOWN }, // 789 JU { REGISTRY_UNKNOWN }, // 790 KU { REGISTRY_RIPE }, // 791 LU { REGISTRY_AFRINIC }, // 792 MU { REGISTRY_APNIC }, // 793 NU { REGISTRY_UNKNOWN }, // 794 OU { REGISTRY_UNKNOWN }, // 795 PU { REGISTRY_UNKNOWN }, // 796 QU { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 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_RIPE }, // 885 BY { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 910 AZ { REGISTRY_LACNIC }, // 911 BZ { REGISTRY_RIPE }, // 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_RIPE }, // 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_RIPE }, // 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.95.0/databases/cc-assignment/Makefile0000664000175100017510000000121612226544026020465 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.95.0/databases/cc-assignment/check-run-create.sh0000775000175100017510000000245112226544026022506 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/cc-assignment # File : check-run-create.sh # Version : $Id: check-run-create.sh,v 1.1 2013/10/13 16:19:34 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 IANA=`find ../registries/iana -type f -name 'ipv4-address-space' -newer $file_header | wc -l` 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: 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 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.95.0/databases/ieee-oui36/0000775000175100017510000000000012242072067016143 5ustar peterpeteripv6calc-0.95.0/databases/ieee-oui36/dbieee_oui36.h0000664000175100017510000003716112242063744020570 0ustar peterpeter/* * Project : ipv6calc * File : dbieee_oui36.h * Version : $Id: dbieee_oui36.h,v 1.5 2013/11/17 06:53:24 ds6peter Exp $ * Generated : Sun Nov 17 07:48:25 2013 * Data copyright: IEEE * * Information: * Additional header file for libieee.c */ /*@unused@*/ static const char* libieee_oui36_status __attribute__ ((__unused__)) = "OUI36/20131117"; static const s_ieee_oui36 libieee_oui36[] = { { 0x001BC5, 0x000000, 0x000FFF, "Converging Systems Inc.", "CONVERGING" }, { 0x001BC5, 0x001000, 0x001FFF, "OpenRB.com, Direct SIA", "OPENRB-COM-DIRECT-SIA" }, { 0x001BC5, 0x002000, 0x002FFF, "GORAMO - Janusz Gorecki", "GORAMO---JANUSZ-GORECKI" }, { 0x001BC5, 0x003000, 0x003FFF, "MicroSigns Technologies Inc", "MICROSIGNS-TECHNOLOGIES" }, { 0x001BC5, 0x004000, 0x004FFF, "Intellvisions Software Ltd", "INTELLVISIONS-SOFTWARE" }, { 0x001BC5, 0x005000, 0x005FFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x006000, 0x006FFF, "TRIAX-HIRSCHMANN Multi-Media GmbH", "TRIAX-HIRSCHMANN-MULTI-MEDIA" }, { 0x001BC5, 0x007000, 0x007FFF, "Energy Aware Technology", "ENERGY-AWARE" }, { 0x001BC5, 0x008000, 0x008FFF, "Dalaj Electro-Telecom", "DALAJ-ELECTRO-TELECOM" }, { 0x001BC5, 0x009000, 0x009FFF, "Solomon Systech Pte Ltd", "SOLOMON-SYSTECH-PTE" }, { 0x001BC5, 0x00A000, 0x00AFFF, "Mercury HMI Ltd", "MERCURY-HMI" }, { 0x001BC5, 0x00B000, 0x00BFFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x00C000, 0x00CFFF, "Quantum Technology Sciences, Inc.", "QUANTUM-SCIENCES" }, { 0x001BC5, 0x00D000, 0x00DFFF, "Advanced Scientific Concepts, Inc.", "ADVANCED-SCIENTIFIC-CONCEPTS" }, { 0x001BC5, 0x00E000, 0x00EFFF, "Vigor Electric Corp", "VIGOR-ELECTRIC" }, { 0x001BC5, 0x00F000, 0x00FFFF, "Simavita Pty Ltd", "SIMAVITA-PTY" }, { 0x001BC5, 0x010000, 0x010FFF, "Softel SA de CV", "SOFTEL-DE-CV" }, { 0x001BC5, 0x011000, 0x011FFF, "OOO NPP Mera", "OOO-NPP-MERA" }, { 0x001BC5, 0x012000, 0x012FFF, "Tokyo Cosmos Electric, Inc.", "TOKYO-COSMOS-ELECTRIC" }, { 0x001BC5, 0x013000, 0x013FFF, "Zamir Recognition Systems Ltd.", "ZAMIR-RECOGNITION" }, { 0x001BC5, 0x014000, 0x014FFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x015000, 0x015FFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x016000, 0x016FFF, "Energotechnica OOO NPP Ltd", "ENERGOTECHNICA-OOO-NPP" }, { 0x001BC5, 0x017000, 0x017FFF, "cPacket Networks", "CPACKET-NETWORKS" }, { 0x001BC5, 0x019000, 0x019FFF, "Dunlop Systems & Components", "DUNLOP-COMPONENTS" }, { 0x001BC5, 0x01A000, 0x01AFFF, "ABA ELECTRONICS TECHNOLOGY CO.,LTD", "ABA-ELECTRONICS" }, { 0x001BC5, 0x01B000, 0x01BFFF, "Commonwealth Scientific and Industrial Research Organisation", "COMMONWEALTH-SCIENTIFIC-AND-INDUSTRIAL-RESEARCH-ORGANISATION" }, { 0x001BC5, 0x01C000, 0x01CFFF, "Coolit Systems, Inc.", "COOLIT" }, { 0x001BC5, 0x01D000, 0x01DFFF, "Rose + Herleth GbR", "ROSE-+-HERLETH-GBR" }, { 0x001BC5, 0x01E000, 0x01EFFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x01F000, 0x01FFFF, "Saturn Solutions Ltd", "SATURN-SOLUTIONS" }, { 0x001BC5, 0x020000, 0x020FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x001BC5, 0x021000, 0x021FFF, "Openpeak, Inc", "OPENPEAK" }, { 0x001BC5, 0x022000, 0x022FFF, "CJSC STC SIMOS", "CJSC-STC-SIMOS" }, { 0x001BC5, 0x023000, 0x023FFF, "MAGO di Della Mora Walter", "MAGO-DI-DELLA-MORA-WALTER" }, { 0x001BC5, 0x024000, 0x024FFF, "ANNECY ELECTRONIQUE SAS", "ANNECY-ELECTRONIQUE-SAS" }, { 0x001BC5, 0x025000, 0x025FFF, "andersen lighting GmbH", "ANDERSEN-LIGHTING" }, { 0x001BC5, 0x026000, 0x026FFF, "DIMEP Sistemas", "DIMEP-SISTEMAS" }, { 0x001BC5, 0x027000, 0x027FFF, "CAMEA, spol. s r.o.", "CAMEA-SPOL-S-R-O" }, { 0x001BC5, 0x028000, 0x028FFF, "STECHWIN.CO.LTD.", "STECHWIN" }, { 0x001BC5, 0x029000, 0x029FFF, "2 FRANCE MARINE", "2-FRANCE-MARINE" }, { 0x001BC5, 0x02A000, 0x02AFFF, "Analytical Instrument Systems, Inc.", "ANALYTICAL-INSTRUMENT" }, { 0x001BC5, 0x02B000, 0x02BFFF, "Saturn South Pty Ltd", "SATURN-SOUTH-PTY" }, { 0x001BC5, 0x02C000, 0x02CFFF, "Care Everywhere LLC", "CARE-EVERYWHERE-LLC" }, { 0x001BC5, 0x02D000, 0x02DFFF, "DDTRONIK Dariusz Dowgiert", "DDTRONIK-DARIUSZ-DOWGIERT" }, { 0x001BC5, 0x02E000, 0x02EFFF, "BETTINI SRL", "BETTINI-SRL" }, { 0x001BC5, 0x02F000, 0x02FFFF, "Fibrain Co. Ltd.", "FIBRAIN" }, { 0x001BC5, 0x030000, 0x030FFF, "OctoGate it Security Systems GmbH", "OCTOGATE-IT-SECURITY" }, { 0x001BC5, 0x031000, 0x031FFF, "ADIXEIN LIMITED", "ADIXEIN" }, { 0x001BC5, 0x032000, 0x032FFF, "Osborne Coinage Co", "OSBORNE-COINAGE" }, { 0x001BC5, 0x033000, 0x033FFF, "JE Suunnittelu Oy", "JE-SUUNNITTELU-OY" }, { 0x001BC5, 0x034000, 0x034FFF, "InterCEL Pty Ltd", "INTERCEL-PTY" }, { 0x001BC5, 0x035000, 0x035FFF, "RTLS Ltd.", "RTLS" }, { 0x001BC5, 0x036000, 0x036FFF, "LOMAR SRL", "LOMAR-SRL" }, { 0x001BC5, 0x037000, 0x037FFF, "ITW Reyflex North America", "ITW-REYFLEX-NORTH-AMERICA" }, { 0x001BC5, 0x038000, 0x038FFF, "SEED International Ltd.", "SEED" }, { 0x001BC5, 0x039000, 0x039FFF, "EURESYS S.A.", "EURESYS" }, { 0x001BC5, 0x03A000, 0x03AFFF, "MindMade Sp. z o.o.", "MINDMADE-SP-Z-O-O" }, { 0x001BC5, 0x03B000, 0x03BFFF, "Promixis, LLC", "PROMIXIS-LLC" }, { 0x001BC5, 0x03C000, 0x03CFFF, "Xiphos Systems Corp.", "XIPHOS" }, { 0x001BC5, 0x03D000, 0x03DFFF, "rioxo GmbH", "RIOXO" }, { 0x001BC5, 0x03E000, 0x03EFFF, "Daylight Solutions, Inc", "DAYLIGHT-SOLUTIONS" }, { 0x001BC5, 0x03F000, 0x03FFFF, "ELTRADE Ltd", "ELTRADE" }, { 0x001BC5, 0x040000, 0x040FFF, "OOO Actidata", "OOO-ACTIDATA" }, { 0x001BC5, 0x041000, 0x041FFF, "DesignA Electronics Limited", "DESIGNA-ELECTRONICS" }, { 0x001BC5, 0x042000, 0x042FFF, "ChamSys Limited", "CHAMSYS" }, { 0x001BC5, 0x043000, 0x043FFF, "Coincident, Inc.", "COINCIDENT" }, { 0x001BC5, 0x044000, 0x044FFF, "ZAO "RADIUS Avtomatika"", "ZAO-QUOT-RADIUS-AVTOMATIKA-QUOT" }, { 0x001BC5, 0x045000, 0x045FFF, "Marvel Digital International Limited", "MARVEL-DIGITAL" }, { 0x001BC5, 0x046000, 0x046FFF, "Trans-European Research and Education Networking Association (TERENA)", "TRANS-EUROPEAN-RESEARCH-AND-EDUCATION-NETWORKING-ASSOCIATION-TERENA" }, { 0x001BC5, 0x047000, 0x047FFF, "PT. Amanindo Nusapadu", "PT-AMANINDO-NUSAPADU" }, { 0x001BC5, 0x048000, 0x048FFF, "XPossible Technologies Pte Ltd", "XPOSSIBLE-TECHNOLOGIES-PTE" }, { 0x001BC5, 0x049000, 0x049FFF, "EUROCONTROL S.p.A.", "EUROCONTROL-S-P-A" }, { 0x001BC5, 0x04A000, 0x04AFFF, "Certis Technology International Pte Ltd", "CERTIS-PTE" }, { 0x001BC5, 0x04B000, 0x04BFFF, "Silicon Controls", "SILICON-CONTROLS" }, { 0x001BC5, 0x04C000, 0x04CFFF, "Rhino Controls Ltd.", "RHINO-CONTROLS" }, { 0x001BC5, 0x04D000, 0x04DFFF, "eiraku electric corp.", "EIRAKU-ELECTRIC" }, { 0x001BC5, 0x04E000, 0x04EFFF, "Messung Systems", "MESSUNG" }, { 0x001BC5, 0x04F000, 0x04FFFF, "Orbital Systems, Ltd.", "ORBITAL" }, { 0x001BC5, 0x050000, 0x050FFF, "TeliSwitch Solutions", "TELISWITCH-SOLUTIONS" }, { 0x001BC5, 0x051000, 0x051FFF, "QQ Navigation AB", "QQ-NAVIGATION-AB" }, { 0x001BC5, 0x052000, 0x052FFF, "Engineering Center ENERGOSERVICE", "ENGINEERING-CENTER-ENERGOSERVICE" }, { 0x001BC5, 0x053000, 0x053FFF, "Metrycom Communications Ltd", "METRYCOM-COMMUNICATION" }, { 0x001BC5, 0x054000, 0x054FFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x055000, 0x055FFF, "LUMIPLAN TRANSPORT", "LUMIPLAN-TRANSPORT" }, { 0x001BC5, 0x056000, 0x056FFF, "ThinKom Solutions, Inc", "THINKOM-SOLUTIONS" }, { 0x001BC5, 0x057000, 0x057FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x001BC5, 0x058000, 0x058FFF, "optiMEAS GmbH", "OPTIMEAS" }, { 0x001BC5, 0x059000, 0x059FFF, "INPIXAL", "INPIXAL" }, { 0x001BC5, 0x05A000, 0x05AFFF, "POSTEC DATA SYSTEMS", "POSTEC-DATA" }, { 0x001BC5, 0x05B000, 0x05BFFF, "konzeptpark GmbH", "KONZEPTPARK" }, { 0x001BC5, 0x05C000, 0x05CFFF, "Suretrak Global Pty Ltd", "SURETRAK-GLOBAL-PTY" }, { 0x001BC5, 0x05D000, 0x05DFFF, "JSC Prominform", "JSC-PROMINFORM" }, { 0x001BC5, 0x05E000, 0x05EFFF, "Ecomed-Complex", "ECOMED-COMPLEX" }, { 0x001BC5, 0x05F000, 0x05FFFF, "Klingenthaler Musikelektronik GmbH", "KLINGENTHALER-MUSIKELEKTRONIK" }, { 0x001BC5, 0x060000, 0x060FFF, "ENSTECH", "ENSTECH" }, { 0x001BC5, 0x061000, 0x061FFF, "Scientific-Technical Center Epsilon Limited company", "SCIENTIFIC-TECHNICAL-CENTER-EPSILON-COMPANY" }, { 0x001BC5, 0x062000, 0x062FFF, "Sulaon Oy", "SULAON-OY" }, { 0x001BC5, 0x063000, 0x063FFF, "Check-It Solutions Inc", "CHECK-IT-SOLUTIONS" }, { 0x001BC5, 0x064000, 0x064FFF, "Enkora Oy Ltd", "ENKORA-OY" }, { 0x001BC5, 0x065000, 0x065FFF, "Plair Media Inc.", "PLAIR-MEDIA" }, { 0x001BC5, 0x066000, 0x066FFF, "Manufacturas y transformados AB", "MANUFACTURAS-Y-TRANSFORMADOS-AB" }, { 0x001BC5, 0x067000, 0x067FFF, "Embit srl", "EMBIT-SRL" }, { 0x001BC5, 0x068000, 0x068FFF, "HCS KABLOLAMA SISTEMLERI SAN. ve TIC.A.S.", "HCS-KABLOLAMA-SISTEMLERI-SAN-VE-TIC-A-S" }, { 0x001BC5, 0x069000, 0x069FFF, "Datasat Digital Entertainment", "DATASAT-DIGITAL-ENTERTAINMENT" }, { 0x001BC5, 0x06A000, 0x06AFFF, "IST GmbH", "IST" }, { 0x001BC5, 0x06B000, 0x06BFFF, "Verified Energy, LLC.", "VERIFIED-ENERGY-LLC" }, { 0x001BC5, 0x06C000, 0x06CFFF, "Luxcon System Limited", "LUXCON-SYSTEM" }, { 0x001BC5, 0x06D000, 0x06DFFF, "TES Electronic Solutions (I) Pvt. Ltd.", "TES-SOLUTIONS-I-PVT" }, { 0x001BC5, 0x06E000, 0x06EFFF, "Two Dimensional Instruments, LLC", "TWO-DIMENSIONAL-INSTRUMENTS-LLC" }, { 0x001BC5, 0x06F000, 0x06FFFF, "LLC Emzior", "LLC-EMZIOR" }, { 0x001BC5, 0x070000, 0x070FFF, "Siemens Industries, Inc, Retail & Commercial Systems", "SIEMENS-INDUSTRIES-RETAIL-COMMERCIAL" }, { 0x001BC5, 0x071000, 0x071FFF, "Center for E-Commerce Infrastructure Development, The University of Hong Kong", "CENTER-FOR-E-COMMERCE-INFRASTRUCTURE-DEVELOPMENT-THE-UNIVERSITY-OF-HONG-KONG" }, { 0x001BC5, 0x072000, 0x072FFF, "Ohio Semitronics, Inc.", "OHIO-SEMITRONICS" }, { 0x001BC5, 0x073000, 0x073FFF, "tado GmbH", "TADO" }, { 0x001BC5, 0x074000, 0x074FFF, "Dynasthetics", "DYNASTHETICS" }, { 0x001BC5, 0x075000, 0x075FFF, "Kitron GmbH", "KITRON" }, { 0x001BC5, 0x076000, 0x076FFF, "PLAiR Media, Inc", "PLAIR-MEDIA" }, { 0x001BC5, 0x077000, 0x077FFF, "Momentum Data Systems", "MOMENTUM-DATA" }, { 0x001BC5, 0x078000, 0x078FFF, "Donbass Soft Ltd and Co.KG", "DONBASS-SOFT-AND" }, { 0x001BC5, 0x079000, 0x079FFF, "HPI High Pressure Instrumentation GmbH", "HPI-HIGH-PRESSURE-INSTRUMENTATION" }, { 0x001BC5, 0x07A000, 0x07AFFF, "Servicios Electronicos Industriales Berbel s.l.", "SERVICIOS-ELECTRONICOS-INDUSTRIALES-BERBEL-S-L" }, { 0x001BC5, 0x07B000, 0x07BFFF, "QCORE Medical", "QCORE-MEDICAL" }, { 0x001BC5, 0x07C000, 0x07CFFF, "Head", "HEAD" }, { 0x001BC5, 0x07D000, 0x07DFFF, "Greatcom AG", "GREATCOM" }, { 0x001BC5, 0x07E000, 0x07EFFF, "Bio Molecular System Pty Ltd", "BIO-MOLECULAR-SYSTEM-PTY" }, { 0x001BC5, 0x07F000, 0x07FFFF, "Hitechlab Inc", "HITECHLAB" }, { 0x001BC5, 0x080000, 0x080FFF, "LUMINO GmbH", "LUMINO" }, { 0x001BC5, 0x081000, 0x081FFF, "WonATech Co., Ltd.", "WONATECH" }, { 0x001BC5, 0x082000, 0x082FFF, "TGS Geophysical Company (UK) Limited", "TGS-GEOPHYSICAL-COMPANY-UK" }, { 0x001BC5, 0x083000, 0x083FFF, "DIWEL", "DIWEL" }, { 0x001BC5, 0x084000, 0x084FFF, "Applied Innovations Research LLC", "APPLIED-INNOVATIONS-RESEARCH-LLC" }, { 0x001BC5, 0x085000, 0x085FFF, "Oberon microsystems, Inc.", "OBERON-MICROSYSTEMS" }, { 0x001BC5, 0x086000, 0x086FFF, "CAST Group of Companies Inc.", "CAST-GROUP-OF-COMPANIES" }, { 0x001BC5, 0x087000, 0x087FFF, "Onnet Technologies And Innovations", "ONNET-TECHNOLOGIES-AND-INNOVATIONS" }, { 0x001BC5, 0x088000, 0x088FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x089000, 0x089FFF, "SIGNATURE CONTROL SYSTEMS, INC.", "SIGNATURE-CONTROL" }, { 0x001BC5, 0x08A000, 0x08AFFF, "Topicon", "TOPICON" }, { 0x001BC5, 0x08B000, 0x08BFFF, "Nistica", "NISTICA" }, { 0x001BC5, 0x08C000, 0x08CFFF, "Triax A/S", "TRIAX-A/S" }, { 0x001BC5, 0x08D000, 0x08DFFF, "EUREK SRL", "EUREK-SRL" }, { 0x001BC5, 0x08E000, 0x08EFFF, "TrendPoint Systems", "TRENDPOINT" }, { 0x001BC5, 0x08F000, 0x08FFFF, "Unilever R&D", "UNILEVER-R-AMP-D" }, { 0x001BC5, 0x090000, 0x090FFF, "Seven Solutions S.L", "SEVEN-SOLUTIONS-S-L" }, { 0x001BC5, 0x091000, 0x091FFF, "3green ApS", "3GREEN-APS" }, { 0x001BC5, 0x092000, 0x092FFF, "Arnouse Digital Devices, Corp.", "ARNOUSE-DIGITAL-DEVICES" }, { 0x001BC5, 0x093000, 0x093FFF, "Ambient Devices, Inc.", "AMBIENT-DEVICES" }, { 0x001BC5, 0x094000, 0x094FFF, "reelyActive", "REELYACTIVE" }, { 0x001BC5, 0x095000, 0x095FFF, "PREVAC sp. z o.o.", "PREVAC-SP-Z-O-O" }, { 0x001BC5, 0x096000, 0x096FFF, "Sanstreak Corp.", "SANSTREAK" }, { 0x001BC5, 0x097000, 0x097FFF, "Plexstar Inc.", "PLEXSTAR" }, { 0x001BC5, 0x098000, 0x098FFF, "Cubic Systems, Inc.", "CUBIC" }, { 0x001BC5, 0x099000, 0x099FFF, "UAB Kitron", "UAB-KITRON" }, { 0x001BC5, 0x09A000, 0x09AFFF, "Shenzhen Guang Lian Zhi Tong Limited", "SHENZHEN-GUANG-LIAN-ZHI-TONG" }, { 0x001BC5, 0x09B000, 0x09BFFF, "YIK Corporation", "YIK" }, { 0x001BC5, 0x09C000, 0x09CFFF, "S.I.C.E.S. srl", "S-I-C-E-S-SRL" }, { 0x001BC5, 0x09D000, 0x09DFFF, "Navitar Inc", "NAVITAR" }, { 0x001BC5, 0x09E000, 0x09EFFF, "K+K Messtechnik GmbH", "K+K-MESSTECHNIK" }, { 0x001BC5, 0x09F000, 0x09FFFF, "ENTE Sp. z o.o.", "ENTE-SP-Z-O-O" }, { 0x001BC5, 0x0A0000, 0x0A0FFF, "HomerSoft sp. z o.o.", "HOMERSOFT-SP-Z-O-O" }, { 0x001BC5, 0x0A1000, 0x0A1FFF, "Hangzhou Zhiping Technology Co., Ltd.", "HANGZHOU-ZHIPING" }, { 0x001BC5, 0x0A2000, 0x0A2FFF, "Hettich Benelux", "HETTICH-BENELUX" }, { 0x001BC5, 0x0A3000, 0x0A3FFF, "P A Network Laboratory Co.,Ltd", "P-A-NETWORK-LABORATORY" }, { 0x001BC5, 0x0A4000, 0x0A4FFF, "RADMOR S.A.", "RADMOR" }, { 0x001BC5, 0x0A5000, 0x0A5FFF, "Tesla Controls", "TESLA-CONTROLS" }, { 0x001BC5, 0x0A6000, 0x0A6FFF, "Balter Security GmbH", "BALTER-SECURITY" }, { 0x001BC5, 0x0A7000, 0x0A7FFF, "L.G.L. Electronics S.p.a.", "L-G-L-ELECTRONICS-S-P-A" }, { 0x001BC5, 0x0A8000, 0x0A8FFF, "Link Precision", "LINK-PRECISION" }, { 0x001BC5, 0x0A9000, 0x0A9FFF, "Elektrometal SA", "ELEKTROMETAL" }, { 0x001BC5, 0x0AA000, 0x0AAFFF, "Senceive Ltd", "SENCEIVE" }, { 0x001BC5, 0x0AB000, 0x0ABFFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x0AC000, 0x0ACFFF, "AVnu Alliance", "AVNU-ALLIANCE" }, { 0x001BC5, 0x0AD000, 0x0ADFFF, "Tierra Japan Co.,Ltd", "TIERRA-JAPAN" }, { 0x001BC5, 0x0AE000, 0x0AEFFF, "Techlan Reti s.r.l.", "TECHLAN-RETI-S-R-L" }, { 0x001BC5, 0x0AF000, 0x0AFFFF, "Enerwise Solutions Ltd.", "ENERWISE-SOLUTIONS" }, { 0x001BC5, 0x0B0000, 0x0B0FFF, "J-D.COM", "J-D-COM" }, { 0x001BC5, 0x0B1000, 0x0B1FFF, "Roslen Eco-Networking Products", "ROSLEN-ECO-NETWORKING-PRODUCTS" }, { 0x001BC5, 0x0B2000, 0x0B2FFF, "SKODA electric a.s.", "SKODA-ELECTRIC-A-S" }, { 0x001BC5, 0x0B3000, 0x0B3FFF, "FSM Solutions Limited", "FSM-SOLUTIONS" }, { 0x001BC5, 0x0B4000, 0x0B4FFF, "COBAN SRL", "COBAN-SRL" }, { 0x001BC5, 0x0B5000, 0x0B5FFF, "Exibea AB", "EXIBEA-AB" }, { 0x001BC5, 0x0B6000, 0x0B6FFF, "Veilux inc.", "VEILUX" }, { 0x001BC5, 0x0B7000, 0x0B7FFF, "Autelis, LLC", "AUTELIS-LLC" }, { 0x001BC5, 0x0B8000, 0x0B8FFF, "PRIVATE", "PRIVATE" }, { 0x001BC5, 0x0B9000, 0x0B9FFF, "Denki Kogyo Company, Limited", "DENKI-KOGYO-COMPANY" }, { 0x001BC5, 0x0BA000, 0x0BAFFF, "NT MICROSYSTEMS", "NT-MICROSYSTEMS" }, { 0x001BC5, 0x0BB000, 0x0BBFFF, "Triax A/S", "TRIAX-A/S" }, { 0x001BC5, 0x0BC000, 0x0BCFFF, "kuwatec, Inc.", "KUWATEC" }, { 0x001BC5, 0x0BD000, 0x0BDFFF, "Bridge Diagnostics, Inc.", "BRIDGE-DIAGNOSTICS" }, { 0x001BC5, 0x0BE000, 0x0BEFFF, "YESpay International Ltd", "YESPAY" }, { 0x001BC5, 0x0BF000, 0x0BFFFF, "TN Core Co.,Ltd.", "TN-CORE" }, { 0x001BC5, 0x0C0000, 0x0C0FFF, "Digital Loggers, Inc.", "DIGITAL-LOGGERS" }, { 0x001BC5, 0x0C1000, 0x0C1FFF, "EREE Electronique", "EREE-ELECTRONIQUE" }, { 0x001BC5, 0x0C2000, 0x0C2FFF, "TechSolutions A/S", "TECHSOLUTIONS-A/S" }, { 0x001BC5, 0x0C3000, 0x0C3FFF, "inomatic GmbH", "INOMATIC" }, { 0x001BC5, 0x0C4000, 0x0C4FFF, "ELDES", "ELDES" }, { 0x001BC5, 0x0C5000, 0x0C5FFF, "Gill Instruments Ltd", "GILL-INSTRUMENTS" }, { 0x001BC5, 0x0C6000, 0x0C6FFF, "Connode", "CONNODE" }, }; ipv6calc-0.95.0/databases/ieee-oui36/Makefile0000664000175100017510000000150212131072575017602 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.95.0/databases/ieee-oui36/README0000664000175100017510000000027512131072575017030 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.95.0/databases/ipv6-assignment/0000775000175100017510000000000012242072067017323 5ustar peterpeteripv6calc-0.95.0/databases/ipv6-assignment/create-registry-list.pl0000775000175100017510000002161512227157366023763 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc/databases/ipv6-assignment # File : create-registry-list.pl # Version : $Id: create-registry-list.pl,v 1.9 2013/10/15 06:21:42 ds6peter Exp $ # Copyright : 2005 by Simon Arlott (initial implementation of global file only) # 2005-2013 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 Net::IP; use Math::BigInt; use XML::Simple; my $debug = (0xffff & ~(0x10 | 0x20 | 0x100 | 0x40)); # Debugging # 0x0010: proceed registry files # 0x0020: proceed global file # 0x0040: fill data # 0x0100: subnet mask generation my $OUTFILE = "dbipv6addr_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 $global_file = "../registries/iana/ipv6-unicast-address-assignments.xml"; my @files = ( "../registries/arin/delegated-arin-extended-latest", "../registries/ripencc/delegated-ripencc-latest", "../registries/apnic/delegated-apnic-latest", "../registries/lacnic/delegated-lacnic-latest", "../registries/afrinic/delegated-afrinic-latest" ); my (@arin, @apnic, @ripencc, @iana, @lacnic, @afrinic, @reserved, @s6to4, @s6bone); my %date_created; # Generate subnet powers my %subnet_masks; print "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 "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 "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 "Proceed file: " . $file . "\n"; open(FILE, "<$file") || die "Cannot open file: $file"; my $line; my %cache; my $flag_found_date = 0; my $version; 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 =~ /\|ipv6\|/ ) ) { next; }; if ( $line =~ /\|\*\|/ ) { next; }; #print $line . "\n"; my ($reg, $tld, $token, $ipv6, $prefixlen, $date, $status, $other) = split /\|/, $line; if ( $token ne "ipv6" ) { next; }; $reg = uc($reg); $reg =~ s/\wRIPE\w/RIPENCC/g; # 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; }; print "reg=" . $reg . " ipv6=" . $ipv6 . "/" . $prefixlen . "\n" if ($debug & 0x10); # Check for already included in range: my $ip_ipv6 = new Net::IP($ipv6) || die "Can't create IPv6 object from ipv6=$ipv6"; 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 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; }; # Check for > /64 if ($prefixlen > 64) { die "Currently unsupported prefix length (>64): $ipv6/$prefixlen"; }; # Push into array push @$parray, $ipv6 . "/" . $prefixlen; }; close(FILE); if ($flag_found_date != 1) { die("no date line found, unsupported file format"); }; }; # Create hash my %data; sub fill_data($$) { my $parray = shift || die "missing array pointer"; my $reg = shift || die "missing registry"; print "Fill data for registry: $reg\n"; foreach my $entry (sort @$parray) { my ($ipv6, $length) = split /\//, $entry; my $ip_ipv6 = new Net::IP($entry); print " ipv6=$entry" if ($debug & 0x40); 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); $data{$ipv6}->{'ipv6_00_31'} = $ipv6_hex_00_31; $data{$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'}; $data{$ipv6}->{'mask_00_31'} = $mask_00_31; $data{$ipv6}->{'mask_32_63'} = $mask_32_63; $data{$ipv6}->{'mask_length'} = $length; $data{$ipv6}->{'reg'} = $reg; 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 hex reg=$reg\n" if ($debug & 0x40); }; }; &fill_data(\@apnic , "APNIC"); &fill_data(\@ripencc, "RIPENCC"); &fill_data(\@arin , "ARIN"); &fill_data(\@lacnic , "LACNIC"); &fill_data(\@afrinic, "AFRINIC"); &fill_data(\@iana , "IANA"); &fill_data(\@s6to4 , "6TO4"); &fill_data(\@s6bone , "6BONE"); # 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 : 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 libipv6addr.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 "\/\*\@unused\@\*\/ static const char* dbipv6addr_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; # Main data structure print OUT qq| static const s_ipv6addr_assignment dbipv6addr_assignment[] = { |; foreach my $ipv6 (sort keys %data) { printf OUT "\t{ 0x%s, 0x%s, 0x%s, 0x%s, %3d, \"%s\" },\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 qq|}; |; close(OUT); print "Finished\n"; ipv6calc-0.95.0/databases/ipv6-assignment/Makefile0000664000175100017510000000127611111067407020765 0ustar peterpeter# Project : ipv6calc/databases/ipv6-assignment # File : Makefile # Version : $Id: Makefile,v 1.5 2008/11/19 19:54:47 peter Exp $ # Copyright : 2005-2008 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" ./check-run-create.sh updateclean: echo "Delete header file" rm -f dbipv6addr_assignment.h distclean: echo "Nothing to do" autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-0.95.0/databases/ipv6-assignment/dbipv6addr_assignment.h0000664000175100017510000001134012242063744023752 0ustar peterpeter /* * Project : ipv6calc * File : dbipv6_assignment.h * Version : $Id: dbipv6addr_assignment.h,v 1.47 2013/11/17 06:53:24 ds6peter Exp $ * Generated : Sun Nov 17 07:52:22 2013 * Data copyright: IANA ARIN RIPENCC APNIC LACNIC AFRINIC * * Information: * Additional header file for libipv6addr.c */ /*@unused@*/ static const char* dbipv6addr_registry_status __attribute__ ((__unused__)) = "AFRINIC/20131117 APNIC/20131115 ARIN/20131116 IANA/20130215 LACNIC/20131115 RIPENCC/20131116"; static const s_ipv6addr_assignment dbipv6addr_assignment[] = { { 0x20010000, 0x00000000, 0xfffffe00, 0x00000000, 23, "IANA" }, { 0x20010200, 0x00000000, 0xfffffe00, 0x00000000, 23, "APNIC" }, { 0x20010400, 0x00000000, 0xfffffe00, 0x00000000, 23, "ARIN" }, { 0x20010600, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20010800, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20010a00, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20010c00, 0x00000000, 0xfffffe00, 0x00000000, 23, "APNIC" }, { 0x20010e00, 0x00000000, 0xfffffe00, 0x00000000, 23, "APNIC" }, { 0x20011200, 0x00000000, 0xfffffe00, 0x00000000, 23, "LACNIC" }, { 0x20011400, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20011600, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20011800, 0x00000000, 0xfffffe00, 0x00000000, 23, "ARIN" }, { 0x20011a00, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20011c00, 0x00000000, 0xfffffc00, 0x00000000, 22, "RIPENCC" }, { 0x20012000, 0x00000000, 0xfffff000, 0x00000000, 20, "RIPENCC" }, { 0x20013000, 0x00000000, 0xfffff800, 0x00000000, 21, "RIPENCC" }, { 0x20013800, 0x00000000, 0xfffffc00, 0x00000000, 22, "RIPENCC" }, { 0x20013c00, 0x00000000, 0xfffffc00, 0x00000000, 22, "IANA" }, { 0x20014000, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20014200, 0x00000000, 0xfffffe00, 0x00000000, 23, "AFRINIC" }, { 0x20014400, 0x00000000, 0xfffffe00, 0x00000000, 23, "APNIC" }, { 0x20014600, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20014800, 0x00000000, 0xfffffe00, 0x00000000, 23, "ARIN" }, { 0x20014a00, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20014c00, 0x00000000, 0xfffffe00, 0x00000000, 23, "RIPENCC" }, { 0x20015000, 0x00000000, 0xfffff000, 0x00000000, 20, "RIPENCC" }, { 0x200107fa, 0x00000001, 0xffffffff, 0xffffffff, 64, "APNIC" }, { 0x200107fa, 0x00000002, 0xffffffff, 0xffffffff, 64, "APNIC" }, { 0x200107fa, 0x00000003, 0xffffffff, 0xffffffff, 64, "APNIC" }, { 0x200107fa, 0x00100000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00110000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00010000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00020000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00030000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00040000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00050000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00060000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00070000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00080000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x00090000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x000a0000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x000b0000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x000c0000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x000d0000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x000e0000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x200107fa, 0x000f0000, 0xffffffff, 0xffff0000, 48, "APNIC" }, { 0x20018000, 0x00000000, 0xffffe000, 0x00000000, 19, "APNIC" }, { 0x2001a000, 0x00000000, 0xfffff000, 0x00000000, 20, "APNIC" }, { 0x2001b000, 0x00000000, 0xfffff000, 0x00000000, 20, "APNIC" }, { 0x20020000, 0x00000000, 0xffff0000, 0x00000000, 16, "6TO4" }, { 0x20030000, 0x00000000, 0xffffc000, 0x00000000, 18, "RIPENCC" }, { 0x24000000, 0x00000000, 0xfff00000, 0x00000000, 12, "APNIC" }, { 0x26000000, 0x00000000, 0xfff00000, 0x00000000, 12, "ARIN" }, { 0x26100000, 0x00000000, 0xfffffe00, 0x00000000, 23, "ARIN" }, { 0x26200000, 0x00000000, 0xfffffe00, 0x00000000, 23, "ARIN" }, { 0x28000000, 0x00000000, 0xfff00000, 0x00000000, 12, "LACNIC" }, { 0x2a000000, 0x00000000, 0xfff00000, 0x00000000, 12, "RIPENCC" }, { 0x2c000000, 0x00000000, 0xfff00000, 0x00000000, 12, "AFRINIC" }, { 0x2d000000, 0x00000000, 0xff000000, 0x00000000, 8, "IANA" }, { 0x2e000000, 0x00000000, 0xfe000000, 0x00000000, 7, "IANA" }, { 0x30000000, 0x00000000, 0xf0000000, 0x00000000, 4, "IANA" }, { 0x3ffe0000, 0x00000000, 0xffff0000, 0x00000000, 16, "IANA" }, { 0x5f000000, 0x00000000, 0xff000000, 0x00000000, 8, "IANA" }, }; ipv6calc-0.95.0/databases/ipv6-assignment/check-run-create.sh0000775000175100017510000000253311713446403023006 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/ipv6-assignment # File : check-run-create.sh # Version : $Id: check-run-create.sh,v 1.4 2012/02/05 09:33:55 peter Exp $ # Copyright : 2005-2012 by Peter Bieringer flag_update=0 if [ -f dbipv6addr_assignment.h ]; then IANA=`find ../registries/iana -type f -name 'ipv6-unicast-address-assignments' -newer dbipv6addr_assignment.h | wc -l` ARIN=`find ../registries/arin -type f -name 'delegated-arin*' -newer dbipv6addr_assignment.h | wc -l` APNIC=`find ../registries/apnic -type f -name 'delegated-apnic*' -newer dbipv6addr_assignment.h | wc -l` RIPENCC=`find ../registries/ripencc -type f -name 'delegated-ripencc*' -newer dbipv6addr_assignment.h | wc -l` LACNIC=`find ../registries/lacnic -type f -name 'delegated-lacnic*' -newer dbipv6addr_assignment.h | wc -l` AFRINIC=`find ../registries/afrinic -type f -name 'delegated-afrinic*' -newer dbipv6addr_assignment.h | wc -l` echo "Found newer than dbipv6addr_assignment.h 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 fi else flag_update=1 fi if [ $flag_update -eq 1 ]; then ./create-registry-list.pl else echo " Nothing to do!" fi ipv6calc-0.95.0/databases/ipv6-assignment/README0000664000175100017510000000016510326777455020223 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.95.0/databases/lib/0000775000175100017510000000000012242072067015037 5ustar peterpeteripv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper.h0000664000175100017510000000754212226543744021632 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper.h * Version : $Id: libipv6calc_db_wrapper.h,v 1.17 2013/10/13 16:18:44 ds6peter Exp $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper.c */ #ifndef _libipv6calc_db_wrapper_h #define _libipv6calc_db_wrapper_h 1 #include "ipv6calctypes.h" extern uint32_t wrapper_features; // define features #define IPV6CALC_DB_AS_TO_REGISTRY 0x00000001 #define IPV6CALC_DB_IPV4_TO_REGISTRY 0x00000002 #define IPV6CALC_DB_IPV6_TO_REGISTRY 0x00000004 #define IPV6CALC_DB_CC_TO_REGISTRY 0x00000008 #define IPV6CALC_DB_IPV4_TO_AS 0x00000010 #define IPV6CALC_DB_IPV6_TO_AS 0x00000020 #define IPV6CALC_DB_IPV4_TO_CC 0x00000100 #define IPV6CALC_DB_IPV6_TO_CC 0x00000200 #define IPV6CALC_DB_IEEE_TO_INFO 0x00001000 static const s_type ipv6calc_db_features[] = { { IPV6CALC_DB_AS_TO_REGISTRY , "DB_AS" }, { IPV6CALC_DB_IPV4_TO_REGISTRY , "DB_IPV4" }, { IPV6CALC_DB_IPV6_TO_REGISTRY , "DB_IPV6" }, { IPV6CALC_DB_IPV4_TO_AS , "DB_IPV4_AS" }, { IPV6CALC_DB_IPV6_TO_AS , "DB_IPV6_AS" }, { IPV6CALC_DB_IPV4_TO_CC , "DB_IPV4_CC" }, { IPV6CALC_DB_IPV6_TO_CC , "DB_IPV6_CC" }, { IPV6CALC_DB_CC_TO_REGISTRY , "DB_CC_REG" }, { IPV6CALC_DB_IEEE_TO_INFO , "DB_IEEE" } }; // define internal API versions #define IPV6CALC_DB_API_GEOIP 1 #define IPV6CALC_DB_API_IP2LOCATION 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 // 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 #define COUNTRYCODE_INDEX_UNKNOWN 1022 // macros for mapping index to chars and vice-versa #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') #endif extern int libipv6calc_db_wrapper_init(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_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[]); /* functional wrappers */ // CountryCode Text/Number extern char *libipv6calc_db_wrapper_country_code_by_addr(const char *addr, const int proto); extern uint16_t libipv6calc_db_wrapper_cc_index_by_addr(const char *addr, const int proto); extern int libipv6calc_db_wrapper_country_code_by_cc_index(char *string, int length, const uint16_t cc_index); // Autonomous System Text/Number extern char *libipv6calc_db_wrapper_as_text_by_addr(const char *addr, const int proto); extern uint32_t libipv6calc_db_wrapper_as_num32_by_addr(const char *addr, const int proto); extern uint16_t libipv6calc_db_wrapper_as_num16_by_addr(const char *addr, const int proto); 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); ipv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper.c0000664000175100017510000004100012233542251021576 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper.c * Version : $Id: libipv6calc_db_wrapper.c,v 1.29 2013/10/28 20:10:17 ds6peter Exp $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * ipv6calc database wrapper (for decoupling databases from main binary) */ #include #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc.h" #define _ipv6calcoptions_h_ 1 // don't read options #include "ipv6calcoptions.h" #include "libipv6calc_db_wrapper.h" #include "libipv6calc_db_wrapper_GeoIP.h" #include "libipv6calc_db_wrapper_IP2Location.h" #include "libipv6calc_db_wrapper_BuiltIn.h" static int wrapper_GeoIP_disable = 0; static int wrapper_IP2Location_disable = 0; static int wrapper_GeoIP_status = 0; static int wrapper_IP2Location_status = 0; static int wrapper_BuiltIn_status = 0; uint32_t wrapper_features = 0; /* * function initialise the main wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_init(void) { int result = 0, r; DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Called"); if (wrapper_GeoIP_disable != 1) { #ifdef SUPPORT_GEOIP // Call GeoIP wrapper DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Call libipv6calc_db_wrapper_GeoIP_wrapper_init"); r = libipv6calc_db_wrapper_GeoIP_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6addr_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 }; #endif // SUPPORT_GEOIP }; if (wrapper_IP2Location_disable != 1) { #ifdef SUPPORT_IP2LOCATION // Call IP2Location wrapper DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Call libipv6calc_db_wrapper_IP2Location_wrapper_init"); r = libipv6calc_db_wrapper_IP2Location_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6addr_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 }; #endif // SUPPORT_IP2LOCATION }; #ifdef SUPPORT_BUILTIN // Call BuiltIn wrapper DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Call libipv6calc_db_wrapper_BuiltIn_wrapper_init"); r = libipv6calc_db_wrapper_BuiltIn_wrapper_init(); DEBUGPRINT_WA(DEBUG_libipv6addr_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 return(result); }; /* * function cleanup the main wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_cleanup(void) { int result = 0, r; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; #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_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; #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_BUILTIN // Call BuiltIn wrapper libipv6calc_db_wrapper_BuiltIn_wrapper_info(string, size); #endif if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Result: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; 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); }; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Return\n", __FILE__, __func__); }; return; }; /* function print db info */ void libipv6calc_db_wrapper_print_db_info(const int level_verbose, const char *prefix_string) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; printf("%sDB features: 0x%08x\n", prefix_string, wrapper_features); #ifdef SUPPORT_GEOIP // Call GeoIP wrapper libipv6calc_db_wrapper_GeoIP_wrapper_print_db_info(level_verbose, prefix_string); #endif #ifdef SUPPORT_IP2LOCATION // Call IP2Location wrapper libipv6calc_db_wrapper_IP2Location_wrapper_print_db_info(level_verbose, prefix_string); #endif #ifdef SUPPORT_BUILTIN // Call BuiltIn wrapper libipv6calc_db_wrapper_BuiltIn_wrapper_print_db_info(level_verbose, prefix_string); #endif if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Return\n", __FILE__, __func__); }; 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_libipv6addr_db_wrapper, "Called with feature value to test: 0x%08x", features); if ((wrapper_features & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6addr_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; DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Called"); switch(opt) { case DB_ip2location_disable: NONQUIETPRINT_NA("Support for IP2Location disabled by option"); wrapper_IP2Location_disable = 1; result = 0; break; case DB_geoip_disable: NONQUIETPRINT_NA("Support for GeoIP disabled by option"); wrapper_GeoIP_disable = 1; result = 0; break; case DB_ip2location_lib: #ifdef SUPPORT_IP2LOCATION_DYN result = snprintf(ip2location_lib_file, sizeof(ip2location_lib_file), 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), 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), 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), optarg); #else NONQUIETPRINT_WA("Support for GeoIP 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; }; if (result > 0) { result = 0; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Return with result: %d\n", __FILE__, __func__, 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 CountryCode in text form */ char *libipv6calc_db_wrapper_country_code_by_addr(const char *addr, const int proto) { char *result_char_ptr = NULL; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; if (wrapper_GeoIP_status == 1) { #ifdef SUPPORT_GEOIP DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Call now GeoIP"); result_char_ptr = (char *) libipv6calc_db_wrapper_GeoIP_wrapper_country_code_by_addr(addr, proto); #endif } else { // fallback if (wrapper_IP2Location_status == 1) { #ifdef SUPPORT_IP2LOCATION DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Call now IP2Location");; result_char_ptr = libipv6calc_db_wrapper_IP2Location_wrapper_country_code_by_addr((char *) addr, proto); #endif }; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Result: %s\n", __FILE__, __func__, result_char_ptr); }; return(result_char_ptr); }; /* * 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 char *addr, const int proto) { uint16_t index = COUNTRYCODE_INDEX_UNKNOWN; const char *cc_text = libipv6calc_db_wrapper_country_code_by_addr(addr, proto); uint8_t c1, c2; DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Called"); if ((cc_text != NULL) && (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_cc_index_by_addr; // 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_cc_index_by_addr; // something wrong }; index = c1 + c2 * COUNTRYCODE_LETTER1_MAX; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: c1=%d c2=%d index=%d (0x%03x) -> test: %c%c\n", __FILE__, __func__, c1, c2, index, index, COUNTRYCODE_INDEX_TO_CHAR1(index), COUNTRYCODE_INDEX_TO_CHAR2(index)); }; if (index >= COUNTRYCODE_INDEX_MAX) { index = COUNTRYCODE_INDEX_UNKNOWN; // failsafe fprintf(stderr, "%s/%s: unexpected index (too high): %d\n", __FILE__, __func__, index); }; }; }; END_libipv6calc_db_wrapper_cc_index_by_addr: DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Finished with %d (0x%x)", index, index); return(index); }; /* * get country code string by index */ int libipv6calc_db_wrapper_country_code_by_cc_index(char *string, int length, const uint16_t cc_index) { int result = 0; DEBUGPRINT_WA(DEBUG_libipv6addr_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 { snprintf(string, length, "unsupported"); }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Return country code: %s", string); return(result); }; /* * get AS information in text form */ char *libipv6calc_db_wrapper_as_text_by_addr(const char *addr, const int proto) { char * result_char_ptr = NULL; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; if (wrapper_GeoIP_status == 1) { #ifdef SUPPORT_GEOIP if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Call now GeoIP\n", __FILE__, __func__); }; result_char_ptr = libipv6calc_db_wrapper_GeoIP_wrapper_asnum_by_addr(addr, proto); #endif }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Result: %s\n", __FILE__, __func__, result_char_ptr); }; return(result_char_ptr); }; /* * get AS 32-bit number */ uint32_t libipv6calc_db_wrapper_as_num32_by_addr(const char *addr, const int proto) { 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; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Called: addr=%s proto=%d", addr, proto); // TODO: switch mechanism depending on backend (GeoIP supports AS only by text representation) as_text = libipv6calc_db_wrapper_as_text_by_addr(addr, proto); 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); }; }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Result: %d (0x%08x)", as_num32, as_num32); return(as_num32); }; /* * get AS 16-bit number */ uint16_t libipv6calc_db_wrapper_as_num16_by_addr(const char *addr, const int proto) { uint16_t as_num16 = 0; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: addr=%s proto=%d\n", __FILE__, __func__, addr, proto); }; // get 32-bit ASN uint32_t as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(addr, proto); as_num16 = (uint16_t) (as_num32 < 65536 ? as_num32 : ASNUM_AS_TRANS); if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Result: %d (0x%04x)\n", __FILE__, __func__, 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); }; ipv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper_GeoIP.h0000664000175100017510000000713212230151756022641 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_GeoIP.h * Version : $Id: libipv6calc_db_wrapper_GeoIP.h,v 1.17 2013/10/18 06:23:42 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); 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); 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.95.0/databases/lib/libipv6calc_db_wrapper_GeoIP.c0000664000175100017510000022710212236110360022625 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_GeoIP.c * Version : $Id: libipv6calc_db_wrapper_GeoIP.c,v 1.50 2013/11/05 06:32:16 ds6peter Exp $ * Copyright : 2013-2013 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 uint32_t wrapper_features_GeoIP = 0; 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; //static GeoIP* (*dl_GeoIP_open)(const char * filename, int flags) = NULL; 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; //static GeoIP* (*dl_GeoIP_open_type)(int type, int flags) = NULL; 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; //static int (*dl_GeoIP_db_avail)(int type) = NULL; 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; //static unsigned char (*dl_GeoIP_database_edition)(GeoIP* gi) = NULL; 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; //static void (*dl_GeoIP_delete)(GeoIP* gi) = NULL; 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; //static char* (*dl_GeoIP_database_info)(GeoIP* gi) = NULL; 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; //static char* (*dl_GeoIP_country_code_by_addr)(GeoIP* gi, const char *addr) = NULL; 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; //static char* (*dl_GeoIP_country_name_by_addr)(GeoIP* gi, const char *addr) = NULL; 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; //static char* (*dl_GeoIP_name_by_addr)(GeoIP* gi, const char *addr) = NULL; 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; //static GeoIPRecord* (*dl_GeoIP_record_by_addr)(GeoIP* gi, const char *addr) = NULL; 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; //static void (*dl_GeoIPRecord_delete)(GeoIPRecord *gir) = NULL; 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; //static char* (*dl_GeoIP_country_code_by_addr_v6)(GeoIP* gi, const char *addr) = NULL; 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; //static char* (*dl_GeoIP_country_name_by_addr_v6)(GeoIP* gi, const char *addr) = NULL; 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; //static char* (*dl_GeoIP_name_by_addr_v6)(GeoIP* gi, const char *addr) = NULL; 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; //static char* (*dl_GeoIP_lib_version)() = NULL; 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; //static int (*dl_GeoIP_cleanup)() = NULL; 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; //static void (*dl_GeoIP_setup_custom_directory)(char *dir) = NULL; 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; //static const char **dl_GeoIPDBDescription = NULL; 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; //static char* (*dl_GeoIP_country_name_by_ipnum_v6)(GeoIP* gi, geoipv6_t ipnum); 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; //static char* (*dl_GeoIP_country_code_by_ipnum_v6)(GeoIP* gi, geoipv6_t ipnum) = NULL; 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_libipv6addr_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] = ""; /* * function initialise the GeoIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_GeoIP_wrapper_init(void) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Called"); #ifdef SUPPORT_GEOIP_DYN char *error; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Load library: %s\n", __FILE__, __func__, geoip_lib_file); }; dl_GeoIP_handle = dlopen(geoip_lib_file, RTLD_NOW | RTLD_LOCAL); if (dl_GeoIP_handle == NULL) { fprintf(stderr, "GeoIP dynamic library load failed: %s\n", dlerror()); return(1); }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Loaded library successful: %s\n", __FILE__, __func__, geoip_lib_file); }; libipv6calc_db_wrapper_GeoIP_cleanup(); /* GeoIPDBDescription */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, "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_libipv6addr_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_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Assigned dlsym: %s", "GeoIPDBFileName"); #ifdef GEOIP_WORKAROUND_NUM_DB_TYPES // workaround to determine NUM_DB_TYPES until GeoIP API provides a function DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Try to estimate geoip_num_db_types on dyn-load"); 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.45 }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Estimation of geoip_num_db_types on dyn-load: %d", geoip_num_db_types - 1); #else geoip_num_db_types = 0; // FUTURE: call function #endif #else // SUPPORT_GEOIP_DYN libipv6calc_db_wrapper_GeoIPDBDescription = GeoIPDBDescription; libipv6calc_db_wrapper_GeoIPDBFileName_ptr = &GeoIPDBFileName; geoip_num_db_types = NUM_DB_TYPES; #endif // SUPPORT_GEOIP_DYN if ( (ipv6calc_debug & (DEBUG_libipv6addr_db_wrapper_GeoIP | DEBUG_libipv6addr_db_wrapper_GeoIP_verbose)) != 0 ) { int i; if (geoip_num_db_types > 0) { for (i = 0; i < geoip_num_db_types; i++) { if ((ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP_verbose) != 0) { fprintf(stderr, "GeoIP(verbose): GeoIPDBDescription Entry #%d: %s\n", i, libipv6calc_db_wrapper_GeoIPDBDescription[i]); } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIPDBDescription Entry #%d: %s", i, libipv6calc_db_wrapper_GeoIPDBDescription[i]); }; }; } else { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIPDBDescription Entries can't be displayed, number of entries can't be retrieved (missing support)"); }; }; DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Call libipv6calc_db_wrapper_GeoIP_setup_custom_directory"); libipv6calc_db_wrapper_GeoIP_setup_custom_directory(geoip_db_dir); DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Returned from libipv6calc_db_wrapper_GeoIP_setup_custom_directory"); #ifdef SUPPORT_GEOIP_DYN DEBUGPRINT_NA(DEBUG_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Result of dummy GeoIP_db_avail call: %d", r); #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 #endif // SUPPORT_GEOIP_DYN DEBUGPRINT_WA(DEBUG_libipv6addr_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); }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Check for standard GeoIP databases\n", __FILE__, __func__); }; /* check required databases for resolution */ if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION) == 1) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIP database GEOIP_COUNTRY_EDITION available"); geoip_country_v4 = 1; wrapper_features_GeoIP |= IPV6CALC_DB_IPV4_TO_CC; }; if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_COUNTRY_EDITION_V6) == 1) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIP database GEOIP_COUNTRY_EDITION_V6 available"); geoip_country_v6 = 1; wrapper_features_GeoIP |= IPV6CALC_DB_IPV6_TO_CC; }; if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_ASNUM_EDITION) == 1) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIP database GEOIP_ASNUM_EDITION available"); geoip_asnum_v4 = 1; wrapper_features_GeoIP |= IPV6CALC_DB_IPV4_TO_AS; }; if ((lib_features_GeoIP & (GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR | GEOIP_LIB_FEATURE_IPV6_CC_BY_ADDR)) != 0) { if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_ASNUM_EDITION_V6) == 1) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIP database GEOIP_ASNUM_EDITION_V6 available"); geoip_asnum_v6 = 1; wrapper_features_GeoIP |= IPV6CALC_DB_IPV6_TO_AS; }; if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_CITY_EDITION_REV1_V6) == 1) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: GeoIP database GEOIP_CITY_EDITION_REV1_V6 available\n", __FILE__, __func__); }; geoip_city_v6 = 1; }; }; if (libipv6calc_db_wrapper_GeoIP_db_avail(GEOIP_CITY_EDITION_REV1) == 1) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: GeoIP database GEOIP_CITY_EDITION_REV1 available\n", __FILE__, __func__); }; geoip_city_v4 = 1; }; wrapper_features |= wrapper_features_GeoIP; return 0; }; /* * function cleanup the GeoIP wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_GeoIP_wrapper_cleanup(void) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; #ifdef SUPPORT_GEOIP libipv6calc_db_wrapper_GeoIP_cleanup(); #endif dl_GeoIP_handle = NULL; // disable handle if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Finished\n", __FILE__, __func__); }; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; #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 if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Finished\n", __FILE__, __func__); }; 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_libipv6addr_db_wrapper_GeoIP, "Called"); printf("%sGeoIP: features: 0x%08x\n", prefix, wrapper_features_GeoIP); #ifdef SUPPORT_GEOIP #ifdef SUPPORT_GEOIP_DYN if (dl_GeoIP_handle == NULL) { printf("%sGeoIP: info of available databases in directory: %s LIBRARY-NOT-LOADED\n", prefix, geoip_db_dir); } else { #endif // SUPPORT_GEOIP_DYN printf("%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; }; #ifdef SUPPORT_GEOIP_LIB_VERSION // >= 1.4.7 if (i == GEOIP_LARGE_COUNTRY_EDITION) { continue; }; if (i == GEOIP_CITY_EDITION_REV0_V6) { continue; }; if (i == GEOIP_LARGE_COUNTRY_EDITION_V6) { continue; }; #endif if (level_verbose == LEVEL_VERBOSE2) { printf("%sGeoIP: %-33s:[%2d] %-40s (CAN'T OPEN)\n", prefix, libipv6calc_db_wrapper_GeoIPDBDescription[i], i, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i]); }; } else { count++; printf("%sGeoIP: %-33s:[%2d] %-40s (%s)\n", prefix, libipv6calc_db_wrapper_GeoIPDBDescription[i], i, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i], libipv6calc_db_wrapper_GeoIP_database_info(gi)); libipv6calc_db_wrapper_GeoIP_delete(gi); }; } else { if (geoip_num_db_types > 0) { if ((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i] == NULL) { continue; }; if (level_verbose == LEVEL_VERBOSE2) { // printf("%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)) { printf("%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) { printf("%sGeoIP: NO available databases found in directory: %s\n", prefix, geoip_db_dir); }; #else snprintf(string, size, "%sNo GeoIP support built-in", prefix); #endif DEBUGPRINT_NA(DEBUG_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; int r = 1; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_cleanup"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_cleanup == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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_libipv6addr_db_wrapper_GeoIP, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_GeoIP_cleanup == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, 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 if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Finished\n", __FILE__, __func__); }; return (r); }; /* * wrapper: GeoIP_lib_version */ const char *libipv6calc_db_wrapper_GeoIP_lib_version(void) { DEBUGPRINT_WA(DEBUG_libipv6addr_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; }; 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s with dir: %s\n", __FILE__, __func__, wrapper_geoip_info, dir); }; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_setup_custom_directory"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_setup_custom_directory == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_setup_custom_directory == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call libipv6calc_db_wrapper_GeoIP_cleanup\n", __FILE__, __func__); }; libipv6calc_db_wrapper_GeoIP_cleanup(); // free old stuff if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Returned from libipv6calc_db_wrapper_GeoIP_cleanup\n", __FILE__, __func__); }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Call dl_GeoIP_setup_custom_directory: %s", dir); (*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_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Returned from libipv6calc_db_wrapper_GeoIP_db_avail with result: %d", r); if ( (ipv6calc_debug & (DEBUG_libipv6addr_db_wrapper_GeoIP | DEBUG_libipv6addr_db_wrapper_GeoIP_verbose)) != 0 ) { DEBUGPRINT_WA(DEBUG_libipv6addr_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++) { if ((ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP_verbose) != 0) { fprintf(stderr, "GeoIP(verbose): GeoIPDBFileName Entry #%d: %s\n", i, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i]); } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "GeoIPDBFileName Entry #%d: %s", i, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[i]); }; }; } else { fprintf(stderr, "%s/%s: GeoIPDBDescription Entries can't be displayed, number of entries can't be retrieved (missing support)\n", __FILE__, __func__); }; }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Finished: %s with dir: %s\n", 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_libipv6addr_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_libipv6addr_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_libipv6addr_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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_db_avail == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; result_GeoIP_db_avail = (*dl_GeoIP_db_avail.func)(type); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call to dl_GeoIP_db_avail results in: %d\n", __FILE__, __func__, result_GeoIP_db_avail); }; if (result_GeoIP_db_avail == 0) { goto END_libipv6calc_db_wrapper; }; dlerror(); /* Clear any existing error */ /* if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, "GeoIPDFilename"); }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { if ((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[type] == NULL) { fprintf(stderr, "%s/%s: Finished: %s type=%d (still unknown)\n", __FILE__, __func__, wrapper_geoip_info, type); } else { fprintf(stderr, "%s/%s: Finished: %s type=%d (file: %s)\n", __FILE__, __func__, wrapper_geoip_info, type, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[type]); }; }; */ END_libipv6calc_db_wrapper: return(result_GeoIP_db_avail); #else DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Call: GeoIP_db_avail type=%d", type); int r = GeoIP_db_avail(type); DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Returned from GeoIP_db_avail result=%d", r); if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { if ((*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[type] == NULL) { fprintf(stderr, "%s/%s: Finished: %s type=%d (still unknown) (r=%d)\n", __FILE__, __func__, wrapper_geoip_info, type, r); } else { fprintf(stderr, "%s/%s: Finished: %s type=%d (%s) (r=%d)\n", __FILE__, __func__, wrapper_geoip_info, type, (*libipv6calc_db_wrapper_GeoIPDBFileName_ptr)[type], r); }; }; return(r); #endif }; /* * wrapper: GeoIP_open_type */ GeoIP *libipv6calc_db_wrapper_GeoIP_open_type(int type, int flags) { GeoIP *gi = NULL; DEBUGPRINT_WA(DEBUG_libipv6addr_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); }; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_open_type"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6addr_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_libipv6addr_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_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; gi = (*dl_GeoIP_open_type.func)(type, flags); if ((error = dlerror()) != NULL) { NONQUIETPRINT_WA("%s", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: #else gi = GeoIP_open_type(type, GEOIP_STANDARD); #endif DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Result: gi returned pointer: %s", (gi != NULL) ? "successful" : "NULL"); return(gi); }; /* * wrapper: GeoIP_open */ GeoIP* libipv6calc_db_wrapper_GeoIP_open(const char * filename, int flags) { DEBUGPRINT_WA(DEBUG_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_open == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_open == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_database_edition == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_database_edition == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_database_info == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_database_info == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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_libipv6addr_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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, wrapper_geoip_info); }; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIP_delete"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_delete == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_delete == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; (*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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_country_code_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_country_name_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_record_by_addr == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_record_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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 }; /* * wrapper: GeoIP_record_by_addr_v6 */ GeoIPRecord *libipv6calc_db_wrapper_GeoIP_record_by_addr_v6(GeoIP *gi, const char *addr) { DEBUGPRINT_WA(DEBUG_libipv6addr_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_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Call dlsym: %s\n", 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_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Previous call of dlsym already successful: %s", dl_symbol); }; 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 }; /* * wrapper: GeoIPRecord_delete */ void libipv6calc_db_wrapper_GeoIPRecord_delete (GeoIPRecord *gir) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, wrapper_geoip_info); }; #ifdef SUPPORT_GEOIP_DYN const char *dl_symbol = "GeoIPRecord_delete"; char *error; if (dl_GeoIP_handle == NULL) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIPRecord_delete == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIPRecord_delete == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; (*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_libipv6addr_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_libipv6addr_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_libipv6addr_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_libipv6addr_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_libipv6addr_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 }; /* * 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_libipv6addr_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_libipv6addr_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 }; /* * wrapper: GeoIP_name_by_addr */ char* libipv6calc_db_wrapper_GeoIP_name_by_addr (GeoIP* gi, const char *addr) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_db_wrapper_GeoIP, "dl_GeoIP_handle not defined"); goto END_libipv6calc_db_wrapper; }; if (dl_status_GeoIP_name_by_addr == IPV6CALC_DL_STATUS_UNKNOWN) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_name_by_addr == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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 }; /* * wrapper: GeoIP_name_by_addr_v6 */ char* libipv6calc_db_wrapper_GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_name_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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 }; /******************************************************** * 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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_libipv6addr_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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_country_code_by_ipnum_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper_dl_load; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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_libipv6addr_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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_country_name_by_ipnum_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper_dl_load; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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_libipv6addr_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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_country_code_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper_dl_load; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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_libipv6addr_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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_country_name_by_addr_v6 == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper_dl_load; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, 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_libipv6addr_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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_GeoIP_lib_version == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper_dl_load; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper_GeoIP) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, 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_libipv6addr_db_wrapper_GeoIP, "Called with feature value to test: 0x%08x",features); if ((wrapper_features_GeoIP & features) == features) { result = 1; } else { result = 0; }; DEBUGPRINT_WA(DEBUG_libipv6addr_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_libipv6addr_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { GeoIP_type = GEOIP_COUNTRY_EDITION; } else if (proto == 6) { GeoIP_type = GEOIP_COUNTRY_EDITION_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_code_by_addr(gi, addr); } 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, &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); }; }; 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: libipv6calc_db_wrapper_GeoIP_delete(gi); 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_libipv6addr_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { GeoIP_type = GEOIP_COUNTRY_EDITION; } else if (proto == 6) { GeoIP_type = GEOIP_COUNTRY_EDITION_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); } else if (proto == 6) { if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_IPV6_CN_BY_ADDR) != 0) { DEBUGPRINT_NA(DEBUG_libipv6addr_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, &ipv6addr); if (result != 0) { goto END_libipv6calc_db_wrapper; }; DEBUGPRINT_NA(DEBUG_libipv6addr_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); }; }; GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); END_libipv6calc_db_wrapper: libipv6calc_db_wrapper_GeoIP_delete(gi); 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_libipv6addr_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { if ((wrapper_features_GeoIP & IPV6CALC_DB_IPV4_TO_AS) == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Database/Support not available: GEOIP_ASNUM_EDITION"); return(NULL); }; /* TODO: workaround in case of old headerfile is used */ GeoIP_type = GEOIP_ASNUM_EDITION; } else if (proto == 6) { if ((wrapper_features_GeoIP & IPV6CALC_DB_IPV6_TO_AS) == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper_GeoIP, "Database/Support not available: GEOIP_ASNUM_EDITION_V6"); return(NULL); }; /* TODO: workaround in case of old headerfile is used */ GeoIP_type = GEOIP_ASNUM_EDITION_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_name_by_addr(gi, addr); } else if (proto == 6) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_name_by_addr_v6(gi, addr); }; if (GeoIP_result_ptr == NULL) { return(NULL); }; GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); libipv6calc_db_wrapper_GeoIP_delete(gi); 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_libipv6addr_db_wrapper_GeoIP, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { GeoIP_type = GEOIP_CITY_EDITION_REV1; } else if (proto == 6) { if ((lib_features_GeoIP & GEOIP_LIB_FEATURE_LIB_VERSION) != 0) { GeoIP_type = GEOIP_CITY_EDITION_REV1_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); } else if (proto == 6) { GeoIP_result_ptr = libipv6calc_db_wrapper_GeoIP_record_by_addr_v6(gi, addr); }; if (GeoIP_result_ptr == NULL) { return (NULL); }; libipv6calc_db_wrapper_GeoIP_delete(gi); GEOIP_DB_USAGE_MAP_TAG(GeoIP_type); return(GeoIP_result_ptr); }; #endif ipv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper_IP2Location.c0000664000175100017510000007716612235512072023767 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_IP2Location.c * Version : $Id: libipv6calc_db_wrapper_IP2Location.c,v 1.12 2013/11/03 18:21:46 ds6peter Exp $ * Copyright : 2013-2013 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 "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) uint32_t wrapper_features_IP2Location = 0; #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; //static IP2Location* (*dl_IP2Location_open)(char *db) = NULL; 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; //static uint32_t (*dl_IP2Location_close)(IP2Location *loc) = NULL; typedef uint32_t (*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; //static IP2LocationRecord *(*dl_IP2Location_get_country_short)(IP2Location *loc, char *ip) = NULL; 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; //static IP2LocationRecord *(*dl_IP2Location_get_country_long)(IP2Location *loc, char *ip) = NULL; 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; //static IP2LocationRecord *(*dl_IP2Location_get_all)(IP2Location *loc, char *ip) = NULL; 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; //static IP2LocationRecord* (*dl_IP2Location_free_record)(IP2LocationRecord *record) = NULL; typedef IP2LocationRecord *(*dl_IP2Location_free_record_t)(IP2LocationRecord *record); static union { dl_IP2Location_free_record_t func; void * obj; } dl_IP2Location_free_record; #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 static int ip2location_country_v4 = 0; static int ip2location_country_v6 = 0; static int ip2location_asnum_v4 = 0; static int ip2location_asnum_v6 = 0; static int ip2location_city_v4 = 0; static int ip2location_city_v6 = 0; 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 2 // 0-63 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_libipv6addr_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 prototyping static char *libipv6calc_db_wrapper_IP2Location_dbfilename(int type); /* * function initialise the IP2Location wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_IP2Location_wrapper_init(void) { int i; DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Called"); #ifdef SUPPORT_IP2LOCATION_DYN DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Load library: %s", ip2location_lib_file); dl_IP2Location_handle = dlopen(ip2location_lib_file, RTLD_NOW | RTLD_LOCAL); if (dl_IP2Location_handle == NULL) { NONQUIETPRINT_WA("IP2Location dynamic library load failed: %s", dlerror()); return(1); }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Loaded library successful: %s", ip2location_lib_file); #else // nothing to set for the moment #endif #ifdef SUPPORT_IP2LOCATION_DYN // nothing to set for the moment #else // nothing to set for the moment #endif DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Check for standard IP2Location databases"); /* check available databases for resolution */ for (i = 0; i < MAXENTRIES_ARRAY(libipv6calc_db_wrapper_IP2Location_db_file_desc); i++) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "IP2Location database test for availability: %s", libipv6calc_db_wrapper_IP2Location_db_file_desc[i].filename); if (libipv6calc_db_wrapper_IP2Location_db_avail(libipv6calc_db_wrapper_IP2Location_db_file_desc[i].number) == 1) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "IP2Location database available: %s", libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description); wrapper_features_IP2Location |= libipv6calc_db_wrapper_IP2Location_db_file_desc[i].feature; }; }; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "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_IP2Location; return 0; }; /* * function cleanup the IP2Location wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_IP2Location_wrapper_cleanup(void) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; #ifdef SUPPORT_IP2LOCATION // no general cleanup provided #endif dl_IP2Location_handle = NULL; // disable handle if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Finished\n", __FILE__, __func__); }; return 0; }; /* * 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called\n", __FILE__, __func__); }; #ifdef SUPPORT_IP2LOCATION snprintf(string, size, "IP2Location available databases: Country4=%d Country6=%d ASN4=%d ASN6=%d City4=%d City6=%d", ip2location_country_v4, ip2location_country_v6, ip2location_asnum_v4, ip2location_asnum_v6, ip2location_city_v4, ip2location_city_v6); #else snprintf(string, size, "No IP2Location support built-in"); #endif DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "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; const char *prefix = "\0"; if (prefix_string != NULL) { prefix = prefix_string; }; DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Called"); printf("%sIP2Location: features: 0x%08x\n", prefix, wrapper_features_IP2Location); #ifdef SUPPORT_IP2LOCATION printf("%sIP2Location: info of available databases in directory: %s\n", prefix, ip2location_db_dir); 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_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "DB file exists: %s", libipv6calc_db_wrapper_IP2Location_dbfilename(type)); printf("%sIP2Location: %-27s: %-40s (LIBRARY-NOT-LOADED)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_dbfilename(type)); } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "DB file doesn't exist or can't open: %s (%s)", libipv6calc_db_wrapper_IP2Location_dbfilename(type), strerror(errno)); if (level_verbose == LEVEL_VERBOSE2) { printf("%sIP2Location: %-27s: %-40s (%s)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_dbfilename(type), strerror(errno)); }; }; } else { #endif // SUPPORT_IP2LOCATION_DYN if (libipv6calc_db_wrapper_IP2Location_db_avail(type)) { // IP2Location returned that database is available loc = libipv6calc_db_wrapper_IP2Location_open_type(type); if (loc == NULL) { printf("%sIP2Location: %-27s: %-40s (CAN'T OPEN)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_dbfilename(type)); } else { printf("%sIP2Location: %-27s: %-40s (%s)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_dbfilename(type), libipv6calc_db_wrapper_IP2Location_database_info(loc)); libipv6calc_db_wrapper_IP2Location_close(loc); count++; }; } else { if (level_verbose == LEVEL_VERBOSE2) { printf("%sIP2Location: %-27s: %-40s (%s)\n", prefix, libipv6calc_db_wrapper_IP2Location_db_file_desc[i].description, libipv6calc_db_wrapper_IP2Location_dbfilename(type), strerror(errno)); }; continue; }; #ifdef SUPPORT_IP2LOCATION_DYN }; #endif // SUPPORT_IP2LOCATION_DYN }; if (count == 0) { printf("%sIP2Location: NO available databases found in directory: %s\n", prefix, ip2location_db_dir); }; #else // SUPPORT_IP2LOCATION snprintf(string, size, "%sNo IP2Location support built-in", prefix); #endif // SUPPORT_IP2LOCATION DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "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; 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_libipv6addr_db_wrapper_IP2Location, "DB used: %d", db); loc = libipv6calc_db_wrapper_IP2Location_open_type(db); info = libipv6calc_db_wrapper_IP2Location_database_info(loc); if (info == NULL) { continue; }; // NULL pointer returned if (strlen(info) == 0) { continue; }; // empty string returned 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); }; }; return(ip2location_db_usage_string); }; #ifdef SUPPORT_IP2LOCATION /******************************* * Wrapper extensenion functions for IP2Location * because of missing support in library itself *******************************/ /* * wrapper extension: IP2Location_lib_version */ const char * libipv6calc_db_wrapper_IP2Location_lib_version(void) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Called: %s", wrapper_ip2location_info); #ifdef SUPPORT_IP2LOCATION_DYN const char *result_IP2Location_lib_version; if (dl_IP2Location_handle == NULL) { result_IP2Location_lib_version = "LIBARY-NOT-LOADED"; } else { result_IP2Location_lib_version = "version-unknown"; }; return(result_IP2Location_lib_version); #else return("API version: " xmakestr(API_VERSION)); #endif }; /* * wrapper extension: IP2Location_dbfilename */ static char *libipv6calc_db_wrapper_IP2Location_dbfilename(int type) { static char tempstring[NI_MAXHOST]; int entry = -1, i; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s type=%d\n", __FILE__, __func__, 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); if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Finished: %s type=%d has filename=%s\n", __FILE__, __func__, wrapper_ip2location_info, type, tempstring); }; return(tempstring); }; /* * wrapper extension: IP2Location_dbdescription */ const char *libipv6calc_db_wrapper_IP2Location_dbdescription(int type) { int entry = -1, i; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s type=%d\n", __FILE__, __func__, 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"); }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Finished: %s type=%d has description=%s\n", __FILE__, __func__, 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 */ int libipv6calc_db_wrapper_IP2Location_db_avail(int type) { char *filename; int r = 0; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Called: %s type=%d", wrapper_ip2location_info, type); filename = libipv6calc_db_wrapper_IP2Location_dbfilename(type); if (filename == NULL) { goto END_libipv6calc_db_wrapper; }; r = (access(filename, R_OK) == 0) ? 1:0; if (r == 0) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Finished: %s type=%d (still unknown) (r=%d: %s)", wrapper_ip2location_info, type, r, strerror(errno)); } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Finished: %s type=%d (%s) (r=%d)", wrapper_ip2location_info, type, filename, r); }; END_libipv6calc_db_wrapper: return(r); }; /* * wrapper extension: IP2Location_open_type */ IP2Location *libipv6calc_db_wrapper_IP2Location_open_type(int type) { char *filename; int entry = -1, i; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "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(NULL); }; filename = libipv6calc_db_wrapper_IP2Location_dbfilename(type); if (filename == NULL) { return(NULL); }; return(libipv6calc_db_wrapper_IP2Location_open(filename)); }; /******************************* * Wrapper functions for IP2Location *******************************/ /* * wrapper: IP2Location_open */ IP2Location *libipv6calc_db_wrapper_IP2Location_open(char *db) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_open == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Previous call of dlsym already successful: %s", dl_symbol); }; 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_close */ uint32_t libipv6calc_db_wrapper_IP2Location_close(IP2Location *loc) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, wrapper_ip2location_info); }; #ifdef SUPPORT_IP2LOCATION_DYN uint32_t result = 0; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_IP2Location_close == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; result = (*dl_IP2Location_close.func)(loc); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); goto END_libipv6calc_db_wrapper; }; END_libipv6calc_db_wrapper: return(result); #else return(IP2Location_close(loc)); #endif }; /* * wrapper: IP2Location_database_info */ char *libipv6calc_db_wrapper_IP2Location_database_info(IP2Location *loc) { static char resultstring[NI_MAXHOST]; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, wrapper_ip2location_info); }; if (loc == NULL) { snprintf(resultstring, sizeof(resultstring), "%s", "can't retrieve database information"); } else { snprintf(resultstring, sizeof(resultstring), "IP2L-DB%d %04d%02d%02d Copyright (c) %04d IP2Location All Rights Reserved", loc->databasetype, loc->databaseyear + 2000, loc->databasemonth, loc->databaseday, loc->databaseyear + 2000 ); }; return(resultstring); }; /* * wrapper: IP2Location_free_record */ void libipv6calc_db_wrapper_IP2Location_free_record(IP2LocationRecord *record) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_IP2Location_free_record == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; (*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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, wrapper_ip2location_info); }; #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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_IP2Location_get_country_long == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called: %s\n", __FILE__, __func__, wrapper_ip2location_info); }; #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) { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Call dlsym: %s\n", __FILE__, __func__, 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called dlsym successful: %s\n", __FILE__, __func__, dl_symbol); }; } else if (dl_status_IP2Location_get_country_long == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already failed: %s\n", __FILE__, __func__, dl_symbol); }; goto END_libipv6calc_db_wrapper; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Previous call of dlsym already successful: %s\n", __FILE__, __func__, dl_symbol); }; }; 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) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Called: %s", wrapper_ip2location_info); if (loc == NULL) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "loc==NULL, return NULL"); return(NULL); }; #ifdef SUPPORT_IP2LOCATION_DYN IP2LocationRecord *result_IP2Location_get_all = NULL; 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_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "Called dlsym successful: %s", dl_symbol); } else if (dl_status_IP2Location_get_all == IPV6CALC_DL_STATUS_ERROR) { /* already known issue */ DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Previous call of dlsym already failed: %s", dl_symbol); goto END_libipv6calc_db_wrapper; } else { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Previous call of dlsym already successful: %s", dl_symbol); }; 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: return(result_IP2Location_get_all); #else return(IP2Location_get_all(loc, ip)); #endif }; /********************************************* * 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called with feature value to test: 0x%08x\n", __FILE__, __func__, features); }; if ((wrapper_features_IP2Location & features) == features) { result = 1; } else { result = 0; }; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Return with result: %d\n", __FILE__, __func__, 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; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Called with addr=%s proto=%d", addr, proto); if (proto == 4) { IP2Location_type = IP2LOCATION_DB_IP_COUNTRY; } else if (proto == 6) { IP2Location_type = IP2LOCATION_DB_IPV6_COUNTRY; } else { return (NULL); }; loc = libipv6calc_db_wrapper_IP2Location_open_type(IP2Location_type); if (loc == NULL) { return (NULL); }; record = libipv6calc_db_wrapper_IP2Location_get_country_short(loc, addr); if (record == NULL) { return (NULL); }; IP2Location_result_ptr = record->country_short; if (IP2Location_result_ptr == NULL) { return (NULL); }; if (strlen(IP2Location_result_ptr) > 2) { return (NULL); }; IP2LOCATION_DB_USAGE_MAP_TAG(IP2Location_type); libipv6calc_db_wrapper_IP2Location_close(loc); 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; if ( (ipv6calc_debug & DEBUG_libipv6addr_db_wrapper) != 0 ) { fprintf(stderr, "%s/%s: Called with addr=%s proto=%d\n", __FILE__, __func__, addr, proto); }; if (proto == 4) { IP2Location_type = IP2LOCATION_DB_IP_COUNTRY; } else if (proto == 6) { IP2Location_type = IP2LOCATION_DB_IPV6_COUNTRY; } else { return (NULL); }; loc = libipv6calc_db_wrapper_IP2Location_open_type(IP2Location_type); if (loc == NULL) { return (NULL); }; record = libipv6calc_db_wrapper_IP2Location_get_country_long(loc, addr); if (record == NULL) { return (NULL); }; IP2Location_result_ptr = record->country_long; if (IP2Location_result_ptr == NULL) { return (NULL); }; IP2LOCATION_DB_USAGE_MAP_TAG(IP2Location_type); libipv6calc_db_wrapper_IP2Location_close(loc); return(IP2Location_result_ptr); }; #endif #endif ipv6calc-0.95.0/databases/lib/Makefile.in0000664000175100017510000000215612222355651017111 0ustar peterpeter# Project : ipv6calc # File : lib/Makefile # Version : $Id: Makefile.in,v 1.4 2013/09/30 20:14:33 ds6peter Exp $ # Copyright : 2013-2013 by Peter Bieringer # # Information: # Makefile for ipv6calc database libraries # # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall CFLAGS += -D__EXTENSIONS__ INCLUDES= -I../../lib -I../.. $(GETOPT_INCLUDE) CC = @CC@ AR = ar RANLIB = @RANLIB@ OBJS = libipv6calc_db_wrapper.o \ libipv6calc_db_wrapper_GeoIP.o \ libipv6calc_db_wrapper_IP2Location.o \ libipv6calc_db_wrapper_BuiltIn.o all: libipv6calc_db_wrapper.a .c.o: $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< $(OBJS): libipv6calc_db_wrapper.h \ libipv6calc_db_wrapper_GeoIP.h \ libipv6calc_db_wrapper_IP2Location.h \ libipv6calc_db_wrapper_BuiltIn.h \ ../../lib/libipv6calcdebug.h libipv6calc_db_wrapper.a: $(OBJS) echo "Create library" $(AR) r libipv6calc_db_wrapper.a $(OBJS) $(RANLIB) libipv6calc_db_wrapper.a distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f *.o *.a install: test: ipv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper_BuiltIn.c0000664000175100017510000001474712226604506023252 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_BuiltIn.c * Version : $Id: libipv6calc_db_wrapper_BuiltIn.c,v 1.5 2013/10/13 20:57:42 ds6peter Exp $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * ipv6calc BuiltIn database wrapper * - decoupling databases from main binary */ #include #include #include #include "config.h" #include "libipv6calcdebug.h" #include "libipv6calc_db_wrapper.h" #include "libipv6calc_db_wrapper_BuiltIn.h" #include "libieee.h" uint32_t wrapper_features_BuiltIn = 0; 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; #ifdef SUPPORT_BUILTIN // load all built-in databases #include "../as-assignment/dbasn_assignment.h" #include "../cc-assignment/db_cc_reg_assignment.h" #ifdef SUPPORT_DB_IPV4 #include "../ipv4-assignment/dbipv4addr_assignment.h" #endif #ifdef SUPPORT_DB_IPV6 #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 /* * function initialise the BuiltIn wrapper * * in : (nothing) * out: 0=ok, 1=error */ int libipv6calc_db_wrapper_BuiltIn_wrapper_init(void) { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Called"); #ifdef SUPPORT_BUILTIN wrapper_features_BuiltIn |= IPV6CALC_DB_AS_TO_REGISTRY; builtin_asn = 1; wrapper_features_BuiltIn |= IPV6CALC_DB_CC_TO_REGISTRY; builtin_cc_reg = 1; #ifdef SUPPORT_DB_IPV4 wrapper_features_BuiltIn |= IPV6CALC_DB_IPV4_TO_REGISTRY; builtin_ipv4 = 1; #endif #ifdef SUPPORT_DB_IPV6 wrapper_features_BuiltIn |= IPV6CALC_DB_IPV6_TO_REGISTRY; builtin_ipv6 = 1; #endif #ifdef SUPPORT_DB_IEEE wrapper_features_BuiltIn |= IPV6CALC_DB_IEEE_TO_INFO; builtin_ieee = 1; #endif wrapper_features |= wrapper_features_BuiltIn; #endif DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "Called"); // currently nothing to do DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "Called"); #ifdef SUPPORT_BUILTIN snprintf(string, size, "BuiltIn databases available: ASN=%d IPv4=%d IPv6=%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_libipv6addr_db_wrapper, "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_libipv6addr_db_wrapper, "Called"); if (prefix_string != NULL) { prefix = prefix_string; }; printf("%sBuiltIn: features: 0x%08x\n", prefix, wrapper_features_BuiltIn); #ifdef SUPPORT_BUILTIN printf("%sBuiltIn: info of available databases\n", prefix); if (wrapper_features_BuiltIn & IPV6CALC_DB_AS_TO_REGISTRY) { printf("%sBuiltIn: %-5s: %s\n", prefix, "ASN", dbasn_registry_status); }; if (wrapper_features_BuiltIn & IPV6CALC_DB_CC_TO_REGISTRY) { printf("%sBuiltIn: %-5s: %s\n", prefix, "CC", db_cc_registry_status); }; #ifdef SUPPORT_DB_IPV4 if (wrapper_features_BuiltIn & IPV6CALC_DB_IPV4_TO_REGISTRY) { printf("%sBuiltIn: %-5s: %s\n", prefix, "IPv4", dbipv4addr_registry_status); }; #endif #ifdef SUPPORT_DB_IPV6 if (wrapper_features_BuiltIn & IPV6CALC_DB_IPV6_TO_REGISTRY) { printf("%sBuiltIn: %-5s: %s\n", prefix, "IPv6", dbipv6addr_registry_status); }; #endif #ifdef SUPPORT_DB_IEEE if (wrapper_features_BuiltIn & IPV6CALC_DB_IEEE_TO_INFO) { printf("%sBuiltIn: %-5s: %s %s %s\n", prefix, "IEEE", libieee_iab_status, libieee_oui_status, libieee_oui36_status); }; #endif #else snprintf(string, size, "%sNo BuiltIn support compiled-in", prefix); #endif DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Finished"); return; }; #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 i = -1, i_new, i_old, r = -1; int max = MAXENTRIES_ARRAY(dbasn_assignment); DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Called with as_num32=%d max=%d", as_num32, max); // binary search i_new = max / 2; i_old = 0; while (i != i_new) { i_old = i; i = i_new; DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "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, jump down i_new = i - abs(i_old - i) / 2; } else if (as_num32 > dbasn_assignment[i].asn_stop) { // to low, jump up i_new = i + abs(i_old - i) / 2; } else { // hit r = i; break; }; }; if (r != -1) { DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Finished with success result: %d", dbasn_assignment[r].registry); return(dbasn_assignment[r].registry); } else { DEBUGPRINT_NA(DEBUG_libipv6addr_db_wrapper, "Finished without success"); return(REGISTRY_UNKNOWN); }; }; // 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_libipv6addr_db_wrapper, "Called with cc_index=%d", cc_index); if (cc_index > COUNTRYCODE_INDEX_MAX) { goto END_libipv6calc_db_wrapper; }; if (cc_index > MAXENTRIES_ARRAY(cc_index_reg_assignment)) { goto END_libipv6calc_db_wrapper; }; if (cc_index == COUNTRYCODE_INDEX_UNKNOWN) { result = REGISTRY_IANA; goto END_libipv6calc_db_wrapper; }; result = cc_index_reg_assignment[cc_index].registry; END_libipv6calc_db_wrapper: DEBUGPRINT_WA(DEBUG_libipv6addr_db_wrapper, "Return registry=%s (%d) (cc_index=%d)", libipv6calc_registry_string_by_num(result), result, cc_index); return(result); }; #endif ipv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper_BuiltIn.h0000664000175100017510000000263012226543744023251 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_BuiltIn.h * Version : $Id: libipv6calc_db_wrapper_BuiltIn.h,v 1.3 2013/10/13 16:18:44 ds6peter Exp $ * Copyright : 2013-2013 by Peter Bieringer * * Information: * Header file for libipv6calc_db_wrapper_BuiltIn.c */ #include "ipv6calctypes.h" #ifndef _libipv6calc_db_wrapper_BuiltIn_h #define _libipv6calc_db_wrapper_BuiltIn_h 1 #define SUPPORT_BUILTIN // default // 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; #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 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); ipv6calc-0.95.0/databases/lib/libipv6calc_db_wrapper_IP2Location.h0000664000175100017510000001015012230151756023753 0ustar peterpeter/* * Project : ipv6calc * File : databases/lib/libipv6calc_db_wrapper_IP2Location.h * Version : $Id: libipv6calc_db_wrapper_IP2Location.h,v 1.3 2013/10/18 06:23:42 ds6peter Exp $ * Copyright : 2013-2013 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_IP_COUNTRY 1 #define IP2LOCATION_DB_IPV6_COUNTRY 12 #define IP2LOCATION_DB_IP_COUNTRY_ISP 257 #define IP2LOCATION_DB_IP_COUNTRY_REGION_CITY 258 #define IP2LOCATION_DB_IP_COUNTRY_REGION_CITY_ISP 259 #define IP2LOCATION_DB_IP_COUNTRY_REGION_CITY_ISP_DOMAIN 260 // database names and descriptions typedef struct { const unsigned int number; const char *filename; const char *description; const uint32_t feature; } db_file_desc; /*@unused@*/ static const db_file_desc libipv6calc_db_wrapper_IP2Location_db_file_desc[] = { { IP2LOCATION_DB_IP_COUNTRY , "IP-COUNTRY.BIN" , "IPv4 Country" , IPV6CALC_DB_IPV4_TO_CC }, { IP2LOCATION_DB_IPV6_COUNTRY , "IPV6-COUNTRY.BIN" , "IPv6 Country" , IPV6CALC_DB_IPV6_TO_CC }, }; // 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" }, }; #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); #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 const 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 uint32_t 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); #endif ipv6calc-0.95.0/databases/ipv4-assignment/0000775000175100017510000000000012242072067017321 5ustar peterpeteripv6calc-0.95.0/databases/ipv4-assignment/create-registry-list.pl0000775000175100017510000003477012227157365023766 0ustar peterpeter#!/usr/bin/perl -w # # Project : ipv6calc/databases/ipv4-assignment # File : create-registry-list.pl # Version : $Id: create-registry-list.pl,v 1.29 2013/10/15 06:21:41 ds6peter Exp $ # Copyright : 2002-2012 by Peter Bieringer # License : GNU GPL v2 # # Information: # Perl program which creates IPv4 address assignement header # Requires: # /usr/bin/aggregate # XML::Simple use IPC::Open2; use XML::Simple; #use strict; if (! -x "/usr/bin/aggregate") { print STDERR "Missing or cannot execute binary '/usr/bin/aggregate'\n"; print STDERR " You can get it from here: http://freshmeat.net/projects/aggregate\n"; exit 1; }; my $debug_hinttable = 0; my $debug = 0; my $OUTFILE = "dbipv4addr_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/arin/delegated-arin-extended-latest", "../registries/ripencc/delegated-ripencc-latest", "../registries/apnic/delegated-apnic-latest", "../registries/lacnic/delegated-lacnic-latest", "../registries/afrinic/delegated-afrinic-latest" ); #my @files = ( "lacnic/lacnic." . $year . $mon . "01" ); my (@arin, @apnic, @ripencc, @iana, @lacnic, @afrinic); my (@arin_agg, @apnic_agg, @ripencc_agg, @iana_agg, @lacnic_agg, @afrinic_agg); my $global_file = "../registries/iana/ipv4-address-space.xml"; my %assignments; my $max_prefixlength_not_arin = 0; my %date_created; # Generate subnet powers my %subnet_powers; print STDERR "Generate subnet powers\n"; for (my $i = 32; $i >= 1; $i--) { my $power = 1 << (32 - $i); my $dec; if ($i == 32) { $dec = 0xffffffff; } else { $dec = ((2 << $i) - 1) << (32 - $i); }; #print STDERR "Power " . $i . ":". $power; #printf STDERR " subnet mask: %8x\n", $dec; $subnet_powers{$i}->{'numbers'} = $power; $subnet_powers{$i}->{'mask'} = $dec; }; 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); }; sub dec_to_ipv4($) { my $dec = shift || die "Missing decimal"; 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); }; sub length_to_dec($) { my $length = shift || die "Missing prefix length"; my $dec = ((1 << $length) - 1); printf "length=%d dec(hex)=%x dec(decimal)=%d\n", $length, $dec, $dec if ($debug); $dec = $dec << (32 - $length); printf "length=%d dec(hex)=%x dec(decimal)=%d\n", $length, $dec, $dec if ($debug); return ($dec); }; sub check_in_list($) { my $num = shift || die "Missing IPv4 address number"; foreach my $ipv4num (keys %assignments ) { if ( ( $num & $assignments{$ipv4num}->{'mask'} ) == $ipv4num ) { return( $assignments{$ipv4num}->{'registry'} ); }; }; return; }; # Should't be used, a little bit obsolete sub proceed_global() { my $ipv4; my $length; my ($ipv4_start, $ipv4_end); # Proceed first global IANA file print "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 "Found create date: " . $e1 . "\n"; last; }; for my $e1 ($xd->{'record'}) { for my $e2 (@$e1) { #print $$e2{'prefix'} . ":" . $$e2{'designation'} . "\n"; my ($block, $length) = split /\//, $$e2{'prefix'}; $ipv4_start = int($block); $ipv4_end = int($block); my $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")) { $reg = "ARIN"; # default now # die "Unsupported registry: " . $reg\n"; }; #print $$e2{'prefix'} . ":" . $reg . "\n"; for ($ipv4 = $ipv4_start; $ipv4 <= $ipv4_end; $ipv4++) { $ipv4 = $ipv4 . ".0.0.0"; if ($reg eq "ARIN" ) { #print "Push ARIN: " . $ipv4 . "/" . $length . "\n"; push @arin, $ipv4 . "/" . $length; } elsif ($reg eq "APNIC" ) { #print "Push APNIC: " . $ipv4 . "/" . $length . "\n"; push @apnic, $ipv4 . "/" . $length; } elsif ($reg eq "RIPENCC" ) { #print "Push RIPENCC: " . $ipv4 . "/" . $length . "\n"; push @ripencc, $ipv4 . "/" . $length; } elsif ($reg eq "IANA" ) { #print "Push IANA: " . $ipv4 . "/" . $length . "\n"; push @iana, $ipv4 . "/" . $length; } elsif ($reg eq "LACNIC" ) { #print "Push LACNIC: " . $ipv4 . "/" . $length . "\n"; push @lacnic, $ipv4 . "/" . $length; } elsif ($reg eq "AFRINIC" ) { #print "Push AFRINIC: " . $ipv4 . "/" . $length . "\n"; push @afrinic, $ipv4 . "/" . $length; } else { die "Unsupported registry"; }; }; }; }; }; &proceed_global(); 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\|/o ) ) { next; }; if ( $line =~ /\|\*\|/o ) { next; }; #print $line . "\n"; my ($reg, $tld, $token, $ipv4, $numbers, $date, $status, $other) = split /\|/, $line; if ( $token ne "ipv4" ) { next; }; $reg = uc($reg); $reg =~ s/\wRIPE\w/RIPENCC/g; 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; }; # 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; }; # convert IPv4 address to decimal my $ipv4_dec = &ipv4_to_dec($ipv4); my $check_length; $flag_proceeded = 0; # check numbers maching for ($check_length = 1; $check_length <= 32; $check_length++) { if ( $subnet_powers{$check_length}->{'numbers'} == $numbers ) { # case 1: numbers = 2^x if ( ( $ipv4_dec & $subnet_powers{$check_length}->{'mask'} ) == $ipv4_dec ) { # case 1a: easy, subnet(numbers) matches given network push @$parray, $ipv4 . "/" . $check_length; #printf "%s/%d=%s (case 1a)\n", $ipv4, $check_length, $reg; $flag_proceeded = 1; last; } else { #printf "%s/%d=%s (case 1b)\n", $ipv4, $check_length, $reg; $check_length++; $flag_proceeded = 2; last; }; } elsif ( $subnet_powers{$check_length}->{'numbers'} < $numbers ) { # case 2: numbers != 2^x #printf "%s=%s (case 2: %d)\n", $ipv4, $reg, $numbers; $flag_proceeded = 3; last; }; }; if ($flag_proceeded == 1) { # next one... next; } elsif ($flag_proceeded == 0) { die "Shouldn't happen"; }; # now the harder work... my $newnumbers = $numbers; while ($newnumbers > 0) { #printf "Newnumbers: %d Length: %d\n", $newnumbers, $check_length; while ( $newnumbers < $subnet_powers{$check_length}->{'numbers'} ) { $check_length++; }; if ( ( $ipv4_dec & (~ $subnet_powers{$check_length}->{'mask'}) ) == 0 ) { push @$parray, $ipv4 . "/" . $check_length; #printf "%s/%d=%s (partially catch case 1b or 2: %d)\n", &dec_to_ipv4($ipv4_dec), $check_length, $reg, $subnet_powers{$check_length}->{'numbers'}; $newnumbers -= $subnet_powers{$check_length}->{'numbers'}; $ipv4_dec += $subnet_powers{$check_length}->{'numbers'}; next; } else { $check_length++; if ($check_length > 32) { die "Shouldn't happen"; }; }; }; }; close(FILE); if ($flag_found_date != 1) { die("no date line found, unsupported file format"); }; }; sub proceed_array($$) { my $parray = shift || die "missing array pointer"; my $parray_agg = shift || die "missing array pointer"; scalar(@$parray) == 0 && die "array empty!"; print "Start proceeding array with 'aggregate' (Entries: " . scalar(@$parray) . ")\n"; my $pid = open2(AGGREGATE_READ, AGGREGATE_WRITE, "aggregate -t") || die "cannot for: $!"; foreach my $entry (@$parray) { # filter out longer prefix length print AGGREGATE_WRITE $entry . "\n"; }; close(AGGREGATE_WRITE); while () { my $line = $_; chomp $line; push @$parray_agg, $line; }; close(AGGREGATE_READ); print "End proceeding array with 'aggregate' (Entries: " . scalar(@$parray_agg) . ")\n"; }; print "Aggregate RIPENCC\n"; &proceed_array(\@ripencc, \@ripencc_agg); print "Aggregate APNIC\n"; &proceed_array(\@apnic, \@apnic_agg); print "Aggregate IANA\n"; &proceed_array(\@iana, \@iana_agg); print "Aggregate LACNIC\n"; &proceed_array(\@lacnic, \@lacnic_agg); print "Aggregate AFRINIC\n"; &proceed_array(\@afrinic, \@afrinic_agg); if (1 == 0) { # Look for maximum used prefix length my ($net, $length); for my $entry (@ripencc_agg, @apnic_agg, @iana_agg) { my ($net, $length) = split /\//, $entry; if ($length > $max_prefixlength_not_arin) { $max_prefixlength_not_arin = $length; }; }; print "Maximum used prefix length by not ARIN: " . $max_prefixlength_not_arin . "\n"; ## Run filter of ARIN entries print "Run filter on ARIN entries\n"; # 1. overwrite prefix length and network for (my $i = 0; $i < $#arin; $i++) { my ($net, $length) = split /\//, $arin[$i]; if ($length > $max_prefixlength_not_arin) { $arin[$i] = &dec_to_ipv4(&ipv4_to_dec($net) & $subnet_powers{$max_prefixlength_not_arin}->{'mask'}) . "\/" . $max_prefixlength_not_arin; }; }; # 2. remove duplicates my @arin_new; push @arin_new, $arin[0]; for (my $i = 1; $i < $#arin; $i++) { if ($arin[$i] eq $arin[$i - 1]) { next; } else { push @arin_new, $arin[$i]; }; }; print "End of filter on ARIN entries\n"; }; print "Aggregate ARIN (this can take some time...)\n"; &proceed_array(\@arin, \@arin_agg); # 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 : 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 libipv4addr.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 "\/\*\@unused\@\*\/ static const char* dbipv4addr_registry_status __attribute__ ((__unused__)) = \"$string\";\n"; # Create hash my %data; sub fill_data($$) { my $parray = shift || die "missing array pointer"; my $reg = shift || die "missing registry"; foreach my $entry (sort @$parray) { my ($ipv4, $length) = split /\//, $entry; my $ipv4_hex = sprintf("%08x", &ipv4_to_dec($ipv4)); my $mask_hex = sprintf("%08x", &length_to_dec($length)); my $mask_length = sprintf("%2d", $length); $data{$ipv4_hex}->{'ipv4'} = &ipv4_to_dec($ipv4); $data{$ipv4_hex}->{'mask'} = &length_to_dec($length); $data{$ipv4_hex}->{'mask_hex'} = $mask_hex; $data{$ipv4_hex}->{'mask_length'} = $mask_length; $data{$ipv4_hex}->{'reg'} = $reg; printf "ipv4_hex=0x%s, mask_hex=0x%s, reg=\"%s\" length=%d\n", $ipv4_hex, $data{$ipv4_hex}->{'mask_hex'}, $data{$ipv4_hex}->{'reg'}, $length if ($debug); die if ($debug); }; }; &fill_data(\@apnic_agg, "APNIC"); &fill_data(\@ripencc_agg, "RIPENCC"); &fill_data(\@arin_agg, "ARIN"); &fill_data(\@lacnic_agg, "LACNIC"); &fill_data(\@afrinic_agg, "AFRINIC"); &fill_data(\@iana_agg, "IANA"); my %data_hint; # Main data structure print OUT qq| static const s_ipv4addr_assignment dbipv4addr_assignment[] = { |; my $i = 0; foreach my $ipv4_hex (sort keys %data) { printf OUT "\t{ 0x%s, 0x%s, %2d, \"%s\" },\n", $ipv4_hex, $data{$ipv4_hex}->{'mask_hex'}, $data{$ipv4_hex}->{'mask_length'}, $data{$ipv4_hex}->{'reg'}; printf "ipv4_hex=0x%s, mask_hex=0x%s, reg=\"%s\"", $ipv4_hex, $data{$ipv4_hex}->{'mask_hex'}, $data{$ipv4_hex}->{'reg'} if ($debug_hinttable); # Get hint range if (($data{$ipv4_hex}->{'mask'} & 0xff000000) == 0xff000000) { # Mask is between /8 and /32 printf " hint: mask >= /8" if ($debug_hinttable); my $octet_leading = substr($ipv4_hex, 0, 2); if (! defined $data_hint{$octet_leading}->{'start'}) { # set start and end $data_hint{$octet_leading}->{'start'} = $i; $data_hint{$octet_leading}->{'end'} = $i; printf " new to: 0x%s\n", $octet_leading if ($debug_hinttable); } else { # extend end $data_hint{$octet_leading}->{'end'} = $i; printf " append to: 0x%s\n", $octet_leading if ($debug_hinttable); }; } else { # Mask is between /1 and /7, more work... printf " hint: mask < /8" if ($debug_hinttable); my $count = (($data{$ipv4_hex}->{'mask'} & 0xff000000) >> 24) ^ 0xff; printf " count: %d", $count if ($debug_hinttable); for (my $j = 0; $j <= $count; $j++) { my $octet_leading = sprintf("%02x", ($data{$ipv4_hex}->{'ipv4'} >> 24) + $j); if (! defined $data_hint{$octet_leading}->{'start'}) { # set start and end $data_hint{$octet_leading}->{'start'} = $i; $data_hint{$octet_leading}->{'end'} = $i; printf " hint: new to 0x%s", $octet_leading if ($debug_hinttable); } else { # extend end $data_hint{$octet_leading}->{'end'} = $i; printf " hint: append to 0x%s", $octet_leading if ($debug_hinttable); }; }; printf "\n" if ($debug_hinttable); }; $i++; }; print OUT qq| }; |; # Hint table data structure print OUT qq| static const s_ipv4addr_assignment_hint dbipv4addr_assignment_hint[256] = { |; for (my $j = 0; $j < 256; $j++) { my $string = sprintf("%02x", $j); my $value_start; my $value_end; if (defined $data_hint{$string}) { $value_start = $data_hint{$string}->{'start'}; $value_end = $data_hint{$string}->{'end'}; } else { $value_start = -1; $value_end = -1; }; printf OUT "\t{ 0x%s, %d , %d },\n", $string, $value_start, $value_end; }; print OUT qq| }; |; print "Finished\n"; ipv6calc-0.95.0/databases/ipv4-assignment/Makefile0000664000175100017510000000113511111067356020760 0ustar peterpeter# Project : ipv6calc/databases/ipv4-assignment # File : Makefile # Version : $Id: Makefile,v 1.19 2008/11/19 19:54:22 peter Exp $ # Copyright : 2002-2008 by Peter Bieringer # # Information: # Makefile for ipv4-assignment all: test -f dbipv4addr_assignment.h || ${MAKE} update install: echo "Nothing to do" update: echo "Generate new header file, if necessary" ./check-run-create.sh updateclean: echo "Delete header file" rm -f dbipv4addr_assignment.h distclean: echo "Nothing to do" autoclean: echo "Nothing to do" clean: echo "Nothing to do" ipv6calc-0.95.0/databases/ipv4-assignment/check-run-create.sh0000775000175100017510000000252710337716333023012 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/ipv4-assignment # File : check-run-create.sh # Version : $Id: check-run-create.sh,v 1.10 2005/11/19 21:44:59 peter Exp $ # Copyright : 2002-2005 by Peter Bieringer #set -x flag_update=0 if [ -f dbipv4addr_assignment.h ]; then IANA=`find ../registries/iana -type f -name 'ipv4-address-space' -newer dbipv4addr_assignment.h | wc -l` ARIN=`find ../registries/arin -type f -name 'delegated-arin*' -newer dbipv4addr_assignment.h | wc -l` APNIC=`find ../registries/apnic -type f -name 'delegated-apnic*' -newer dbipv4addr_assignment.h | wc -l` RIPENCC=`find ../registries/ripencc -type f -name 'delegated-ripencc*' -newer dbipv4addr_assignment.h | wc -l` LACNIC=`find ../registries/lacnic -type f -name 'delegated-lacnic*' -newer dbipv4addr_assignment.h | wc -l` AFRINIC=`find ../registries/afrinic -type f -name 'delegated-afrinic*' -newer dbipv4addr_assignment.h | wc -l` echo "Found newer than dbipv4addr_assignment.h 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 fi else flag_update=1 fi if [ $flag_update -eq 1 ]; then ./create-registry-list.pl else echo " Nothing to do!" fi ipv6calc-0.95.0/databases/ipv4-assignment/README0000664000175100017510000000027311532436221020200 0ustar peterpeter$Id: README,v 1.6 2011/02/27 11:59:13 peter Exp $ "aggregate" can be found at http://freshmeat.net/projects/aggregate/ Use "make update" to create header file from registry data files ipv6calc-0.95.0/databases/ipv4-assignment/dbipv4addr_assignment.h0000664000175100017510000063010312242063744023752 0ustar peterpeter /* * Project : ipv6calc * File : dbipv4_assignment.h * Version : $Id: dbipv4addr_assignment.h,v 1.64 2013/11/17 06:53:24 ds6peter Exp $ * Generated : Sun Nov 17 07:49:29 2013 * Data copyright: RIPE NCC, APNIC, ARIN, LACNIC, AFRINIC * * Information: * Additional header file for libipv4addr.c */ /*@unused@*/ static const char* dbipv4addr_registry_status __attribute__ ((__unused__)) = "AFRINIC/20131117 APNIC/20131115 ARIN/20131116 IANA/20130520 LACNIC/20131115 RIPENCC/20131116"; static const s_ipv4addr_assignment dbipv4addr_assignment[] = { { 0x00000000, 0xff000000, 8, "IANA" }, { 0x01000000, 0xff000000, 8, "APNIC" }, { 0x02000000, 0xff000000, 8, "RIPENCC" }, { 0x03000000, 0xff000000, 8, "ARIN" }, { 0x04000000, 0xff000000, 8, "ARIN" }, { 0x05000000, 0xff000000, 8, "RIPENCC" }, { 0x06000000, 0xfe000000, 7, "ARIN" }, { 0x08000000, 0xfe000000, 7, "ARIN" }, { 0x0a000000, 0xff000000, 8, "IANA" }, { 0x0b000000, 0xff000000, 8, "ARIN" }, { 0x0c000000, 0xfe000000, 7, "ARIN" }, { 0x0e000000, 0xff000000, 8, "APNIC" }, { 0x0f000000, 0xff000000, 8, "ARIN" }, { 0x10000000, 0xf8000000, 5, "ARIN" }, { 0x18000000, 0xfe000000, 7, "ARIN" }, { 0x18840000, 0xfffc0000, 14, "RIPENCC" }, { 0x18e80000, 0xffff0000, 16, "LACNIC" }, { 0x19000000, 0xff000000, 8, "RIPENCC" }, { 0x1a000000, 0xff000000, 8, "ARIN" }, { 0x1b000000, 0xff000000, 8, "APNIC" }, { 0x1c000000, 0xfe000000, 7, "ARIN" }, { 0x1e000000, 0xff000000, 8, "ARIN" }, { 0x1f000000, 0xff000000, 8, "RIPENCC" }, { 0x20000000, 0xfc000000, 6, "ARIN" }, { 0x24000000, 0xff000000, 8, "APNIC" }, { 0x25000000, 0xff000000, 8, "RIPENCC" }, { 0x26000000, 0xff000000, 8, "ARIN" }, { 0x27000000, 0xff000000, 8, "APNIC" }, { 0x28000000, 0xff000000, 8, "ARIN" }, { 0x29000000, 0xff000000, 8, "AFRINIC" }, { 0x2a000000, 0xff000000, 8, "APNIC" }, { 0x2b000000, 0xff000000, 8, "ARIN" }, { 0x2b800000, 0xffc00000, 10, "APNIC" }, { 0x2bc00000, 0xffe00000, 11, "APNIC" }, { 0x2be80000, 0xfffc0000, 14, "APNIC" }, { 0x2bf40000, 0xffff0000, 16, "APNIC" }, { 0x2bfd0000, 0xffff0000, 16, "APNIC" }, { 0x2c000000, 0xfe000000, 7, "ARIN" }, { 0x2e000000, 0xff000000, 8, "RIPENCC" }, { 0x2f000000, 0xff000000, 8, "ARIN" }, { 0x30000000, 0xff000000, 8, "ARIN" }, { 0x31000000, 0xff000000, 8, "APNIC" }, { 0x32000000, 0xfe000000, 7, "ARIN" }, { 0x33000000, 0xff000000, 8, "RIPENCC" }, { 0x34000000, 0xfc000000, 6, "ARIN" }, { 0x36de0000, 0xfffe0000, 15, "APNIC" }, { 0x38000000, 0xfe000000, 7, "ARIN" }, { 0x3a000000, 0xfe000000, 7, "APNIC" }, { 0x3c000000, 0xfe000000, 7, "APNIC" }, { 0x3e000000, 0xff000000, 8, "RIPENCC" }, { 0x3e084000, 0xffffe000, 19, "AFRINIC" }, { 0x3e186000, 0xffffe000, 19, "AFRINIC" }, { 0x3e442000, 0xffffe000, 19, "AFRINIC" }, { 0x3e44e000, 0xffffe000, 19, "AFRINIC" }, { 0x3e720000, 0xffff0000, 16, "AFRINIC" }, { 0x3e752000, 0xffffe000, 19, "AFRINIC" }, { 0x3e870000, 0xffff8000, 17, "AFRINIC" }, { 0x3e8b0000, 0xffff0000, 16, "AFRINIC" }, { 0x3e8c4000, 0xffffc000, 18, "AFRINIC" }, { 0x3ead2000, 0xffffe000, 19, "AFRINIC" }, { 0x3ec14000, 0xffffc000, 18, "AFRINIC" }, { 0x3ec1a000, 0xffffe000, 19, "AFRINIC" }, { 0x3ef02000, 0xffffe000, 19, "AFRINIC" }, { 0x3ef06000, 0xffffe000, 19, "AFRINIC" }, { 0x3ef18000, 0xffffe000, 19, "AFRINIC" }, { 0x3efb8000, 0xffff8000, 17, "AFRINIC" }, { 0x3f000000, 0xff000000, 8, "ARIN" }, { 0x40000000, 0xf8000000, 5, "ARIN" }, { 0x401c8000, 0xfffff000, 20, "LACNIC" }, { 0x40204000, 0xffffc000, 18, "LACNIC" }, { 0x40397000, 0xfffff000, 20, "AFRINIC" }, { 0x42080000, 0xffff8000, 17, "AFRINIC" }, { 0x42124000, 0xffffe000, 19, "AFRINIC" }, { 0x423c0000, 0xffffc000, 18, "LACNIC" }, { 0x42620000, 0xffffc000, 18, "LACNIC" }, { 0x42624000, 0xffffe000, 19, "LACNIC" }, { 0x42e74000, 0xfffff000, 20, "LACNIC" }, { 0x453f4000, 0xfffff000, 20, "AFRINIC" }, { 0x45432000, 0xfffff000, 20, "AFRINIC" }, { 0x48000000, 0xfc000000, 6, "ARIN" }, { 0x4c000000, 0xff000000, 8, "ARIN" }, { 0x4d000000, 0xff000000, 8, "RIPENCC" }, { 0x4ddc0000, 0xffffe000, 19, "AFRINIC" }, { 0x4e000000, 0xfe000000, 7, "RIPENCC" }, { 0x50000000, 0xf0000000, 4, "RIPENCC" }, { 0x50486000, 0xfffff000, 20, "AFRINIC" }, { 0x504ba000, 0xffffe000, 19, "AFRINIC" }, { 0x50574000, 0xffffe000, 19, "AFRINIC" }, { 0x50580400, 0xfffffc00, 22, "AFRINIC" }, { 0x50580c00, 0xfffffc00, 22, "AFRINIC" }, { 0x50f0c000, 0xfffff000, 20, "AFRINIC" }, { 0x50f60000, 0xfffff000, 20, "AFRINIC" }, { 0x50f80000, 0xfffff000, 20, "AFRINIC" }, { 0x50f84000, 0xfffff000, 20, "AFRINIC" }, { 0x50f94000, 0xfffff000, 20, "AFRINIC" }, { 0x50fa2000, 0xfffff000, 20, "AFRINIC" }, { 0x51040000, 0xffffc000, 18, "AFRINIC" }, { 0x510a0000, 0xffff8000, 17, "AFRINIC" }, { 0x51156000, 0xfffff000, 20, "AFRINIC" }, { 0x511d6000, 0xfffff000, 20, "AFRINIC" }, { 0x515be000, 0xfffff000, 20, "AFRINIC" }, { 0x51c00000, 0xffff0000, 16, "AFRINIC" }, { 0x52800000, 0xffff8000, 17, "AFRINIC" }, { 0x52818000, 0xffff8000, 17, "AFRINIC" }, { 0x52974000, 0xffffe000, 19, "AFRINIC" }, { 0x52c98000, 0xffff8000, 17, "AFRINIC" }, { 0x538f1800, 0xfffff800, 21, "AFRINIC" }, { 0x54240000, 0xffff0000, 16, "AFRINIC" }, { 0x54cd6000, 0xffffe000, 19, "AFRINIC" }, { 0x54e90000, 0xffff8000, 17, "AFRINIC" }, { 0x57ff6000, 0xffffe000, 19, "AFRINIC" }, { 0x60000000, 0xfc000000, 6, "ARIN" }, { 0x64000000, 0xff000000, 8, "ARIN" }, { 0x65000000, 0xff000000, 8, "APNIC" }, { 0x66000000, 0xff000000, 8, "AFRINIC" }, { 0x67000000, 0xff000000, 8, "APNIC" }, { 0x68000000, 0xff000000, 8, "ARIN" }, { 0x69000000, 0xff000000, 8, "AFRINIC" }, { 0x6a000000, 0xff000000, 8, "APNIC" }, { 0x6b000000, 0xff000000, 8, "ARIN" }, { 0x6c000000, 0xff000000, 8, "ARIN" }, { 0x6d000000, 0xff000000, 8, "RIPENCC" }, { 0x6e000000, 0xfe000000, 7, "APNIC" }, { 0x70000000, 0xf8000000, 5, "APNIC" }, { 0x78000000, 0xfc000000, 6, "APNIC" }, { 0x7c000000, 0xfe000000, 7, "APNIC" }, { 0x7e000000, 0xff000000, 8, "APNIC" }, { 0x7f000000, 0xff000000, 8, "IANA" }, { 0x80000000, 0xf8000000, 5, "ARIN" }, { 0x80008000, 0xfffff000, 20, "RIPENCC" }, { 0x80009000, 0xfffff800, 21, "RIPENCC" }, { 0x80009800, 0xfffffc00, 22, "RIPENCC" }, { 0x8000a000, 0xffffe000, 19, "RIPENCC" }, { 0x8000c000, 0xffffc000, 18, "RIPENCC" }, { 0x80070000, 0xffff0000, 16, "RIPENCC" }, { 0x80100000, 0xffff0000, 16, "RIPENCC" }, { 0x80270000, 0xffff0000, 16, "RIPENCC" }, { 0x80280000, 0xfffe0000, 15, "RIPENCC" }, { 0x802d0000, 0xffff0000, 16, "RIPENCC" }, { 0x80410000, 0xffff0000, 16, "RIPENCC" }, { 0x80420000, 0xfffe0000, 15, "RIPENCC" }, { 0x80440000, 0xfffc0000, 14, "RIPENCC" }, { 0x80480000, 0xfff80000, 13, "RIPENCC" }, { 0x80560000, 0xfffe0000, 15, "RIPENCC" }, { 0x805d0000, 0xffff0000, 16, "RIPENCC" }, { 0x80620000, 0xffff0000, 16, "RIPENCC" }, { 0x807c0000, 0xffff0000, 16, "RIPENCC" }, { 0x807f0000, 0xffff8000, 17, "RIPENCC" }, { 0x807f8000, 0xffffe000, 19, "RIPENCC" }, { 0x807fa000, 0xfffff000, 20, "RIPENCC" }, { 0x807fb800, 0xfffff800, 21, "RIPENCC" }, { 0x807fc000, 0xffffc000, 18, "RIPENCC" }, { 0x80820000, 0xfffe0000, 15, "RIPENCC" }, { 0x80860000, 0xffff0000, 16, "APNIC" }, { 0x808b0000, 0xffff0000, 16, "RIPENCC" }, { 0x808c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x80b00000, 0xffff0000, 16, "RIPENCC" }, { 0x80b20000, 0xfffe0000, 15, "RIPENCC" }, { 0x80b80000, 0xffff0000, 16, "APNIC" }, { 0x80c70000, 0xffff0000, 16, "RIPENCC" }, { 0x80cc0000, 0xffff0000, 16, "RIPENCC" }, { 0x80d60000, 0xffff0000, 16, "RIPENCC" }, { 0x80e80000, 0xffff0000, 16, "RIPENCC" }, { 0x80ea0000, 0xffff0000, 16, "RIPENCC" }, { 0x80f00000, 0xffff0000, 16, "RIPENCC" }, { 0x80f30000, 0xffff0000, 16, "RIPENCC" }, { 0x80f60000, 0xffff0000, 16, "RIPENCC" }, { 0x80fa0000, 0xffff0000, 16, "APNIC" }, { 0x810b0000, 0xffff0000, 16, "RIPENCC" }, { 0x810c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x81100000, 0xffff0000, 16, "RIPENCC" }, { 0x81140000, 0xffff0000, 16, "RIPENCC" }, { 0x811a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x811f0000, 0xffff0000, 16, "RIPENCC" }, { 0x813c0000, 0xffff0000, 16, "APNIC" }, { 0x81430000, 0xffff0000, 16, "RIPENCC" }, { 0x81450000, 0xffff0000, 16, "RIPENCC" }, { 0x81460000, 0xffff0000, 16, "RIPENCC" }, { 0x81490000, 0xffff0000, 16, "RIPENCC" }, { 0x814e0000, 0xffff0000, 16, "APNIC" }, { 0x81580000, 0xffff0000, 16, "RIPENCC" }, { 0x815a0000, 0xffff0000, 16, "LACNIC" }, { 0x815e0000, 0xffff0000, 16, "APNIC" }, { 0x81600000, 0xffff0000, 16, "APNIC" }, { 0x81660000, 0xfffe0000, 15, "RIPENCC" }, { 0x81680000, 0xffff0000, 16, "RIPENCC" }, { 0x817d0000, 0xffff0000, 16, "RIPENCC" }, { 0x817f0000, 0xffff0000, 16, "APNIC" }, { 0x81810000, 0xffff0000, 16, "RIPENCC" }, { 0x81840000, 0xffff0000, 16, "RIPENCC" }, { 0x81880000, 0xffff0000, 16, "APNIC" }, { 0x818e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x81a90000, 0xffff0000, 16, "RIPENCC" }, { 0x81af0000, 0xffff0000, 16, "RIPENCC" }, { 0x81b10000, 0xffff0000, 16, "RIPENCC" }, { 0x81b20000, 0xffff0000, 16, "RIPENCC" }, { 0x81b40000, 0xffff0000, 16, "APNIC" }, { 0x81b50000, 0xffff0000, 16, "RIPENCC" }, { 0x81b60000, 0xfffe0000, 15, "RIPENCC" }, { 0x81b80000, 0xfffe0000, 15, "RIPENCC" }, { 0x81bb0000, 0xffff0000, 16, "RIPENCC" }, { 0x81c20000, 0xfffe0000, 15, "RIPENCC" }, { 0x81c70000, 0xffff0000, 16, "RIPENCC" }, { 0x81ce0000, 0xffff0000, 16, "RIPENCC" }, { 0x81d00000, 0xffff0000, 16, "RIPENCC" }, { 0x81d60000, 0xfffe0000, 15, "RIPENCC" }, { 0x81d90000, 0xffff0000, 16, "RIPENCC" }, { 0x81e90000, 0xffff0000, 16, "RIPENCC" }, { 0x81ea0000, 0xffff0000, 16, "RIPENCC" }, { 0x81f00000, 0xfffe0000, 15, "RIPENCC" }, { 0x81f20000, 0xffff0000, 16, "RIPENCC" }, { 0x81f70000, 0xffff0000, 16, "RIPENCC" }, { 0x81f90000, 0xffff0000, 16, "APNIC" }, { 0x81fe0000, 0xffff0000, 16, "APNIC" }, { 0x82000000, 0xffff0000, 16, "RIPENCC" }, { 0x82180000, 0xfffe0000, 15, "RIPENCC" }, { 0x821a0000, 0xffff0000, 16, "RIPENCC" }, { 0x821c0000, 0xffff0000, 16, "RIPENCC" }, { 0x82200000, 0xffff0000, 16, "RIPENCC" }, { 0x82220000, 0xffff0000, 16, "APNIC" }, { 0x82250000, 0xffff0000, 16, "RIPENCC" }, { 0x822b0000, 0xffff0000, 16, "RIPENCC" }, { 0x82360000, 0xffff0000, 16, "APNIC" }, { 0x82380000, 0xffff0000, 16, "APNIC" }, { 0x823b0000, 0xffff0000, 16, "RIPENCC" }, { 0x823c0000, 0xffff0000, 16, "RIPENCC" }, { 0x82420000, 0xfffe0000, 15, "RIPENCC" }, { 0x82450000, 0xffff0000, 16, "APNIC" }, { 0x82490000, 0xffff0000, 16, "RIPENCC" }, { 0x824b0000, 0xffff0000, 16, "RIPENCC" }, { 0x824e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x82520000, 0xfffe0000, 15, "RIPENCC" }, { 0x82540000, 0xffff0000, 16, "RIPENCC" }, { 0x82570000, 0xffff0000, 16, "APNIC" }, { 0x82580000, 0xfffe0000, 15, "RIPENCC" }, { 0x825c0000, 0xffff0000, 16, "RIPENCC" }, { 0x825f0000, 0xffff0000, 16, "APNIC" }, { 0x82620000, 0xffff0000, 16, "RIPENCC" }, { 0x82640000, 0xffff0000, 16, "RIPENCC" }, { 0x82660000, 0xffff0000, 16, "APNIC" }, { 0x82680000, 0xffff0000, 16, "RIPENCC" }, { 0x82700000, 0xffff0000, 16, "RIPENCC" }, { 0x82730000, 0xffff0000, 16, "RIPENCC" }, { 0x82740000, 0xffff0000, 16, "APNIC" }, { 0x82780000, 0xffff0000, 16, "RIPENCC" }, { 0x827b0000, 0xffff0000, 16, "APNIC" }, { 0x827d0000, 0xffff0000, 16, "RIPENCC" }, { 0x82820000, 0xffff0000, 16, "APNIC" }, { 0x82850000, 0xffff0000, 16, "RIPENCC" }, { 0x82880000, 0xffff0000, 16, "RIPENCC" }, { 0x828a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x82900000, 0xfffe0000, 15, "RIPENCC" }, { 0x82940000, 0xfffe0000, 15, "RIPENCC" }, { 0x82990000, 0xffff0000, 16, "APNIC" }, { 0x829b0000, 0xffff0000, 16, "APNIC" }, { 0x829e0000, 0xffff0000, 16, "APNIC" }, { 0x829f0000, 0xffff0000, 16, "RIPENCC" }, { 0x82a10000, 0xffff0000, 16, "RIPENCC" }, { 0x82b40000, 0xffff0000, 16, "RIPENCC" }, { 0x82b70000, 0xffff0000, 16, "RIPENCC" }, { 0x82b90000, 0xffffc000, 18, "RIPENCC" }, { 0x82b94000, 0xffffe000, 19, "RIPENCC" }, { 0x82b96000, 0xfffff000, 20, "RIPENCC" }, { 0x82b98000, 0xffff8000, 17, "RIPENCC" }, { 0x82ba0000, 0xffff0000, 16, "RIPENCC" }, { 0x82bc0000, 0xffff0000, 16, "RIPENCC" }, { 0x82be0000, 0xffff0000, 16, "RIPENCC" }, { 0x82c00000, 0xfffe0000, 15, "RIPENCC" }, { 0x82c20000, 0xfffe0000, 15, "APNIC" }, { 0x82c60000, 0xffff0000, 16, "RIPENCC" }, { 0x82cc0000, 0xffff0000, 16, "RIPENCC" }, { 0x82ce0000, 0xffff0000, 16, "RIPENCC" }, { 0x82d00000, 0xfffe0000, 15, "RIPENCC" }, { 0x82d80000, 0xfffe0000, 15, "APNIC" }, { 0x82dc0000, 0xffff0000, 16, "APNIC" }, { 0x82df0000, 0xffff0000, 16, "RIPENCC" }, { 0x82e10000, 0xffff0000, 16, "RIPENCC" }, { 0x82e20000, 0xfffe0000, 15, "RIPENCC" }, { 0x82e40000, 0xfffc0000, 14, "RIPENCC" }, { 0x82e80000, 0xfff80000, 13, "RIPENCC" }, { 0x82f00000, 0xfffc0000, 14, "RIPENCC" }, { 0x82f40000, 0xffff0000, 16, "RIPENCC" }, { 0x82f60000, 0xffff0000, 16, "RIPENCC" }, { 0x82fb0000, 0xffff0000, 16, "RIPENCC" }, { 0x82ff0000, 0xffff0000, 16, "RIPENCC" }, { 0x83010000, 0xffff0000, 16, "RIPENCC" }, { 0x83610000, 0xffff0000, 16, "RIPENCC" }, { 0x83630000, 0xffff0000, 16, "RIPENCC" }, { 0x83660000, 0xffff0000, 16, "RIPENCC" }, { 0x836f0000, 0xffff0000, 16, "RIPENCC" }, { 0x83700000, 0xfffe0000, 15, "APNIC" }, { 0x83720000, 0xfffe0000, 15, "RIPENCC" }, { 0x83740000, 0xfffe0000, 15, "RIPENCC" }, { 0x83820000, 0xffff0000, 16, "RIPENCC" }, { 0x83980000, 0xffff0000, 16, "RIPENCC" }, { 0x839a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x839f0000, 0xffff0000, 16, "RIPENCC" }, { 0x83a00000, 0xffff0000, 16, "RIPENCC" }, { 0x83a40000, 0xfffe0000, 15, "RIPENCC" }, { 0x83a60000, 0xffff0000, 16, "RIPENCC" }, { 0x83a90000, 0xffff0000, 16, "RIPENCC" }, { 0x83aa0000, 0xffff0000, 16, "APNIC" }, { 0x83ac0000, 0xffff0000, 16, "APNIC" }, { 0x83ad0000, 0xffff0000, 16, "RIPENCC" }, { 0x83ae0000, 0xfffe0000, 15, "RIPENCC" }, { 0x83b00000, 0xfffe0000, 15, "RIPENCC" }, { 0x83b20000, 0xffff0000, 16, "LACNIC" }, { 0x83b40000, 0xffff0000, 16, "RIPENCC" }, { 0x83b50000, 0xffff0000, 16, "APNIC" }, { 0x83b90000, 0xffff0000, 16, "APNIC" }, { 0x83bc0000, 0xffff0000, 16, "RIPENCC" }, { 0x83cb0000, 0xffff0000, 16, "APNIC" }, { 0x83cd0000, 0xffff0000, 16, "RIPENCC" }, { 0x83ce0000, 0xffff0000, 16, "APNIC" }, { 0x83cf0000, 0xffff0000, 16, "RIPENCC" }, { 0x83d30000, 0xffff0000, 16, "RIPENCC" }, { 0x83d90000, 0xffff0000, 16, "APNIC" }, { 0x83dc0000, 0xffff0000, 16, "RIPENCC" }, { 0x83e00000, 0xffff0000, 16, "RIPENCC" }, { 0x83e30000, 0xffff0000, 16, "RIPENCC" }, { 0x83e40000, 0xffff0000, 16, "RIPENCC" }, { 0x83e70000, 0xffff0000, 16, "RIPENCC" }, { 0x83ea0000, 0xffff0000, 16, "RIPENCC" }, { 0x83ec0000, 0xffff0000, 16, "APNIC" }, { 0x83ed0000, 0xffff0000, 16, "RIPENCC" }, { 0x83f20000, 0xffff0000, 16, "APNIC" }, { 0x83f40000, 0xfffe0000, 15, "APNIC" }, { 0x83f60000, 0xffff0000, 16, "RIPENCC" }, { 0x83f80000, 0xffff0000, 16, "APNIC" }, { 0x83fb0000, 0xffff0000, 16, "RIPENCC" }, { 0x83fe0000, 0xffff0000, 16, "RIPENCC" }, { 0x84400000, 0xfff80000, 13, "RIPENCC" }, { 0x84480000, 0xfffc0000, 14, "RIPENCC" }, { 0x844c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x844e0000, 0xffff0000, 16, "RIPENCC" }, { 0x84920000, 0xffff0000, 16, "RIPENCC" }, { 0x84934000, 0xffffc000, 18, "APNIC" }, { 0x84950000, 0xffff0000, 16, "RIPENCC" }, { 0x84960000, 0xffff0000, 16, "RIPENCC" }, { 0x84990000, 0xffff0000, 16, "RIPENCC" }, { 0x849b0000, 0xffff0000, 16, "RIPENCC" }, { 0x84a50000, 0xffff0000, 16, "RIPENCC" }, { 0x84a60000, 0xfffe0000, 15, "RIPENCC" }, { 0x84a80000, 0xfffe0000, 15, "RIPENCC" }, { 0x84ab0000, 0xffff0000, 16, "RIPENCC" }, { 0x84b00000, 0xffff0000, 16, "RIPENCC" }, { 0x84b30000, 0xffff0000, 16, "APNIC" }, { 0x84b40000, 0xffff0000, 16, "RIPENCC" }, { 0x84b50000, 0xffff0000, 16, "APNIC" }, { 0x84b60000, 0xffff0000, 16, "APNIC" }, { 0x84b90000, 0xffff0000, 16, "RIPENCC" }, { 0x84ba0000, 0xfffe0000, 15, "RIPENCC" }, { 0x84c30000, 0xffff0000, 16, "RIPENCC" }, { 0x84c40000, 0xffff0000, 16, "RIPENCC" }, { 0x84c70000, 0xffff0000, 16, "RIPENCC" }, { 0x84de0000, 0xffff0000, 16, "APNIC" }, { 0x84e30000, 0xffff0000, 16, "RIPENCC" }, { 0x84e50000, 0xffff0000, 16, "RIPENCC" }, { 0x84e60000, 0xfffe0000, 15, "RIPENCC" }, { 0x84e80000, 0xffff0000, 16, "RIPENCC" }, { 0x84ea0000, 0xffff0000, 16, "APNIC" }, { 0x84f40000, 0xffff0000, 16, "RIPENCC" }, { 0x84f70000, 0xffff0000, 16, "LACNIC" }, { 0x84f80000, 0xffff0000, 16, "LACNIC" }, { 0x84fc0000, 0xffff0000, 16, "RIPENCC" }, { 0x84fe0000, 0xffff0000, 16, "LACNIC" }, { 0x85000000, 0xff000000, 8, "APNIC" }, { 0x86000000, 0xfffc0000, 14, "RIPENCC" }, { 0x86070000, 0xffff0000, 16, "APNIC" }, { 0x86110000, 0xffff0000, 16, "RIPENCC" }, { 0x86120000, 0xffff0000, 16, "APNIC" }, { 0x86130000, 0xffff0000, 16, "RIPENCC" }, { 0x86150000, 0xffff0000, 16, "RIPENCC" }, { 0x86190000, 0xffff0000, 16, "RIPENCC" }, { 0x861b0000, 0xffff0000, 16, "RIPENCC" }, { 0x861c0000, 0xffff0000, 16, "RIPENCC" }, { 0x861e0000, 0xffff0000, 16, "RIPENCC" }, { 0x86220000, 0xffff0000, 16, "RIPENCC" }, { 0x86240000, 0xfffe0000, 15, "RIPENCC" }, { 0x862f0000, 0xffff0000, 16, "RIPENCC" }, { 0x86360000, 0xffff0000, 16, "RIPENCC" }, { 0x863a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x863c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x864b0000, 0xffff0000, 16, "APNIC" }, { 0x864c0000, 0xffff0000, 16, "RIPENCC" }, { 0x86510000, 0xffff0000, 16, "RIPENCC" }, { 0x86530000, 0xffff0000, 16, "RIPENCC" }, { 0x865a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x865c0000, 0xfffc0000, 14, "RIPENCC" }, { 0x86600000, 0xfffe0000, 15, "RIPENCC" }, { 0x86620000, 0xffff8000, 17, "RIPENCC" }, { 0x86628000, 0xffffc000, 18, "RIPENCC" }, { 0x86630000, 0xffff0000, 16, "RIPENCC" }, { 0x86640000, 0xfffc0000, 14, "RIPENCC" }, { 0x86680000, 0xfffc0000, 14, "RIPENCC" }, { 0x866c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x866e0000, 0xffff0000, 16, "RIPENCC" }, { 0x86730000, 0xffff0000, 16, "APNIC" }, { 0x86770000, 0xffff0000, 16, "RIPENCC" }, { 0x86820000, 0xffff0000, 16, "RIPENCC" }, { 0x868a0000, 0xffff0000, 16, "RIPENCC" }, { 0x868e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x86900000, 0xffff0000, 16, "APNIC" }, { 0x86910000, 0xffff0000, 16, "RIPENCC" }, { 0x86920000, 0xfffe0000, 15, "RIPENCC" }, { 0x86940000, 0xffff0000, 16, "APNIC" }, { 0x86970000, 0xffff0000, 16, "RIPENCC" }, { 0x869b0000, 0xffff0000, 16, "RIPENCC" }, { 0x869d0000, 0xffff0000, 16, "RIPENCC" }, { 0x869e0000, 0xffff0000, 16, "RIPENCC" }, { 0x869f0000, 0xffff0000, 16, "APNIC" }, { 0x86a00000, 0xffff0000, 16, "APNIC" }, { 0x86a90000, 0xffff0000, 16, "RIPENCC" }, { 0x86ab0000, 0xffff0000, 16, "RIPENCC" }, { 0x86b00000, 0xffff0000, 16, "RIPENCC" }, { 0x86b20000, 0xffff0000, 16, "APNIC" }, { 0x86b40000, 0xffff0000, 16, "APNIC" }, { 0x86b70000, 0xffff0000, 16, "RIPENCC" }, { 0x86b80000, 0xffff0000, 16, "RIPENCC" }, { 0x86bc0000, 0xffff0000, 16, "RIPENCC" }, { 0x86bf0000, 0xffff0000, 16, "RIPENCC" }, { 0x86c40000, 0xffff0000, 16, "APNIC" }, { 0x86cb0000, 0xffff0000, 16, "RIPENCC" }, { 0x86ce0000, 0xffff0000, 16, "RIPENCC" }, { 0x86d00000, 0xffff0000, 16, "APNIC" }, { 0x86d30000, 0xffff0000, 16, "APNIC" }, { 0x86d40000, 0xfffe0000, 15, "RIPENCC" }, { 0x86d60000, 0xffff0000, 16, "RIPENCC" }, { 0x86db0000, 0xffff0000, 16, "RIPENCC" }, { 0x86dc0000, 0xfffe0000, 15, "RIPENCC" }, { 0x86de0000, 0xffff0000, 16, "RIPENCC" }, { 0x86e10000, 0xffff0000, 16, "RIPENCC" }, { 0x86e20000, 0xfffe0000, 15, "RIPENCC" }, { 0x86ed0000, 0xffff0000, 16, "APNIC" }, { 0x86ef0000, 0xffff0000, 16, "RIPENCC" }, { 0x86f50000, 0xffff0000, 16, "RIPENCC" }, { 0x86f60000, 0xfffe0000, 15, "RIPENCC" }, { 0x86f90000, 0xffff0000, 16, "RIPENCC" }, { 0x86ff0000, 0xffff0000, 16, "RIPENCC" }, { 0x87c40000, 0xffff0000, 16, "RIPENCC" }, { 0x88000000, 0xfc000000, 6, "ARIN" }, { 0x88940000, 0xffff0000, 16, "RIPENCC" }, { 0x88990000, 0xffff0000, 16, "APNIC" }, { 0x889a0000, 0xffff0000, 16, "APNIC" }, { 0x889b0000, 0xffff0000, 16, "RIPENCC" }, { 0x889c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x889e0000, 0xffff0000, 16, "RIPENCC" }, { 0x88a30000, 0xffff0000, 16, "RIPENCC" }, { 0x88a40000, 0xffff0000, 16, "RIPENCC" }, { 0x88a90000, 0xffff0000, 16, "RIPENCC" }, { 0x88aa0000, 0xffff0000, 16, "RIPENCC" }, { 0x88ac0000, 0xfffe0000, 15, "RIPENCC" }, { 0x88b90000, 0xffff0000, 16, "APNIC" }, { 0x88ba0000, 0xfffe0000, 15, "APNIC" }, { 0x88c60000, 0xffff0000, 16, "APNIC" }, { 0x88c70000, 0xffff0000, 16, "RIPENCC" }, { 0x88c90000, 0xffff0000, 16, "RIPENCC" }, { 0x88ce0000, 0xffff0000, 16, "RIPENCC" }, { 0x88e10000, 0xffff0000, 16, "RIPENCC" }, { 0x88e60000, 0xfffe0000, 15, "RIPENCC" }, { 0x88f30000, 0xffff0000, 16, "RIPENCC" }, { 0x89110000, 0xffff0000, 16, "RIPENCC" }, { 0x89210000, 0xffff0000, 16, "RIPENCC" }, { 0x89220000, 0xffff0000, 16, "RIPENCC" }, { 0x892b0000, 0xffff0000, 16, "RIPENCC" }, { 0x892c0000, 0xffff0000, 16, "RIPENCC" }, { 0x892f0000, 0xffff0000, 16, "RIPENCC" }, { 0x89320000, 0xffff0000, 16, "RIPENCC" }, { 0x89370000, 0xffff0000, 16, "RIPENCC" }, { 0x89380000, 0xffff0000, 16, "RIPENCC" }, { 0x893a0000, 0xffff0000, 16, "RIPENCC" }, { 0x893c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x893e0000, 0xffff0000, 16, "RIPENCC" }, { 0x89440000, 0xffff0000, 16, "APNIC" }, { 0x89490000, 0xffff0000, 16, "RIPENCC" }, { 0x894c0000, 0xffff0000, 16, "APNIC" }, { 0x895c0000, 0xffff0000, 16, "APNIC" }, { 0x895d0000, 0xffff0000, 16, "RIPENCC" }, { 0x89600000, 0xffff0000, 16, "RIPENCC" }, { 0x89650000, 0xffff0000, 16, "RIPENCC" }, { 0x89690000, 0xffff0000, 16, "RIPENCC" }, { 0x896c0000, 0xffff0000, 16, "RIPENCC" }, { 0x896d0000, 0xffff0000, 16, "APNIC" }, { 0x896f0000, 0xffff0000, 16, "APNIC" }, { 0x89780000, 0xfffe0000, 15, "RIPENCC" }, { 0x89810000, 0xffff0000, 16, "RIPENCC" }, { 0x89840000, 0xffff0000, 16, "APNIC" }, { 0x89850000, 0xffff0000, 16, "RIPENCC" }, { 0x898a0000, 0xffff0000, 16, "RIPENCC" }, { 0x89930000, 0xffff0000, 16, "APNIC" }, { 0x89990000, 0xffff0000, 16, "APNIC" }, { 0x899a0000, 0xffff0000, 16, "APNIC" }, { 0x899c0000, 0xffff0000, 16, "RIPENCC" }, { 0x899d0000, 0xffff0000, 16, "APNIC" }, { 0x899e0000, 0xffff0000, 16, "AFRINIC" }, { 0x89a30000, 0xffff0000, 16, "RIPENCC" }, { 0x89a60000, 0xffff0000, 16, "APNIC" }, { 0x89ac0000, 0xffff0000, 16, "APNIC" }, { 0x89ae0000, 0xffff0000, 16, "RIPENCC" }, { 0x89bd0000, 0xffff0000, 16, "APNIC" }, { 0x89bf0000, 0xffff8000, 17, "RIPENCC" }, { 0x89bf8000, 0xffffc000, 18, "RIPENCC" }, { 0x89bfc000, 0xfffff000, 20, "RIPENCC" }, { 0x89bfdf00, 0xffffff00, 24, "RIPENCC" }, { 0x89bfe000, 0xffffe000, 19, "RIPENCC" }, { 0x89c10000, 0xffff0000, 16, "RIPENCC" }, { 0x89c20000, 0xfffe0000, 15, "RIPENCC" }, { 0x89cc0000, 0xfffe0000, 15, "RIPENCC" }, { 0x89d00000, 0xffff0000, 16, "RIPENCC" }, { 0x89d50000, 0xffff0000, 16, "RIPENCC" }, { 0x89d60000, 0xfffe0000, 15, "AFRINIC" }, { 0x89d90000, 0xffff0000, 16, "RIPENCC" }, { 0x89da0000, 0xffff0000, 16, "RIPENCC" }, { 0x89db0000, 0xffff0000, 16, "APNIC" }, { 0x89dd0000, 0xffff0000, 16, "RIPENCC" }, { 0x89de0000, 0xfffe0000, 15, "RIPENCC" }, { 0x89e00000, 0xffff0000, 16, "RIPENCC" }, { 0x89e20000, 0xffff0000, 16, "RIPENCC" }, { 0x89f80000, 0xffff0000, 16, "RIPENCC" }, { 0x89fa0000, 0xfffe0000, 15, "RIPENCC" }, { 0x89fd0000, 0xffff0000, 16, "RIPENCC" }, { 0x8a030000, 0xffff0000, 16, "RIPENCC" }, { 0x8a040000, 0xffff0000, 16, "RIPENCC" }, { 0x8a060000, 0xffff0000, 16, "RIPENCC" }, { 0x8a070000, 0xffff0000, 16, "APNIC" }, { 0x8a0e0000, 0xffff0000, 16, "RIPENCC" }, { 0x8a130000, 0xffff0000, 16, "APNIC" }, { 0x8a150000, 0xffff0000, 16, "RIPENCC" }, { 0x8a160000, 0xffff0000, 16, "RIPENCC" }, { 0x8a180000, 0xfffe0000, 15, "APNIC" }, { 0x8a1e0000, 0xffff0000, 16, "APNIC" }, { 0x8a250000, 0xffff0000, 16, "RIPENCC" }, { 0x8a260000, 0xffff0000, 16, "RIPENCC" }, { 0x8a280000, 0xfffe0000, 15, "RIPENCC" }, { 0x8a2c0000, 0xffff0000, 16, "APNIC" }, { 0x8a300000, 0xffff0000, 16, "RIPENCC" }, { 0x8a3e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x8a420000, 0xffff0000, 16, "RIPENCC" }, { 0x8a460000, 0xffff0000, 16, "RIPENCC" }, { 0x8a470000, 0xffff0000, 16, "APNIC" }, { 0x8a4b0000, 0xffff0000, 16, "APNIC" }, { 0x8a4d0000, 0xffff0000, 16, "APNIC" }, { 0x8a4f0000, 0xffff0000, 16, "APNIC" }, { 0x8a500000, 0xffff0000, 16, "APNIC" }, { 0x8a510000, 0xffff0000, 16, "RIPENCC" }, { 0x8a600000, 0xffff0000, 16, "RIPENCC" }, { 0x8a640000, 0xffff0000, 16, "RIPENCC" }, { 0x8a650000, 0xffff0000, 16, "APNIC" }, { 0x8a660000, 0xfffe0000, 15, "RIPENCC" }, { 0x8a680000, 0xffff0000, 16, "RIPENCC" }, { 0x8a6a0000, 0xffff0000, 16, "RIPENCC" }, { 0x8a6b0000, 0xffff0000, 16, "APNIC" }, { 0x8a7c0000, 0xffff0000, 16, "RIPENCC" }, { 0x8a820000, 0xffff0000, 16, "APNIC" }, { 0x8a830000, 0xffff0000, 16, "RIPENCC" }, { 0x8a840000, 0xffff0000, 16, "RIPENCC" }, { 0x8a860000, 0xffff0000, 16, "RIPENCC" }, { 0x8abb0000, 0xffff0000, 16, "RIPENCC" }, { 0x8abc0000, 0xfffc0000, 14, "RIPENCC" }, { 0x8ac20000, 0xffff0000, 16, "APNIC" }, { 0x8ac30000, 0xffff0000, 16, "RIPENCC" }, { 0x8ac60000, 0xfffe0000, 15, "RIPENCC" }, { 0x8ac80000, 0xfffe0000, 15, "RIPENCC" }, { 0x8acb0000, 0xffff0000, 16, "RIPENCC" }, { 0x8acd0000, 0xffff0000, 16, "RIPENCC" }, { 0x8ace0000, 0xffff0000, 16, "RIPENCC" }, { 0x8ad30000, 0xffff0000, 16, "APNIC" }, { 0x8ad40000, 0xffff0000, 16, "APNIC" }, { 0x8ad70000, 0xffff0000, 16, "RIPENCC" }, { 0x8ad80000, 0xffff0000, 16, "RIPENCC" }, { 0x8ad90000, 0xffff0000, 16, "APNIC" }, { 0x8add0000, 0xffff0000, 16, "RIPENCC" }, { 0x8ae70000, 0xffff0000, 16, "RIPENCC" }, { 0x8ae80000, 0xfffe0000, 15, "RIPENCC" }, { 0x8aeb0000, 0xffff0000, 16, "APNIC" }, { 0x8af30000, 0xffff0000, 16, "APNIC" }, { 0x8af40000, 0xfffe0000, 15, "RIPENCC" }, { 0x8af60000, 0xffff0000, 16, "RIPENCC" }, { 0x8af80000, 0xfffc0000, 14, "RIPENCC" }, { 0x8afd0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b000000, 0xffff0000, 16, "APNIC" }, { 0x8b010000, 0xffff0000, 16, "RIPENCC" }, { 0x8b020000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b040000, 0xffff0000, 16, "RIPENCC" }, { 0x8b060000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b080000, 0xffff0000, 16, "RIPENCC" }, { 0x8b090000, 0xffff0000, 16, "APNIC" }, { 0x8b0a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b0c0000, 0xfffc0000, 14, "RIPENCC" }, { 0x8b100000, 0xfff80000, 13, "RIPENCC" }, { 0x8b180000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b1b0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b1d0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b1e0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b2c0000, 0xffff0000, 16, "APNIC" }, { 0x8b320000, 0xffff0000, 16, "RIPENCC" }, { 0x8b350000, 0xffff0000, 16, "AFRINIC" }, { 0x8b360000, 0xffff0000, 16, "RIPENCC" }, { 0x8b3a0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b3b0000, 0xffff0000, 16, "APNIC" }, { 0x8b3f0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b420000, 0xffff0000, 16, "RIPENCC" }, { 0x8b4a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b4f0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b500000, 0xffff0000, 16, "APNIC" }, { 0x8b520000, 0xffff0000, 16, "LACNIC" }, { 0x8b530000, 0xffff0000, 16, "RIPENCC" }, { 0x8b560000, 0xffff0000, 16, "APNIC" }, { 0x8b590000, 0xffff0000, 16, "RIPENCC" }, { 0x8b5a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b5c0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b600000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b620000, 0xffff0000, 16, "RIPENCC" }, { 0x8b640000, 0xffff0000, 16, "RIPENCC" }, { 0x8b650000, 0xffff0000, 16, "APNIC" }, { 0x8b690000, 0xffff0000, 16, "RIPENCC" }, { 0x8b7a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b7c0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b800000, 0xffff0000, 16, "RIPENCC" }, { 0x8b810000, 0xffff0000, 16, "APNIC" }, { 0x8b820000, 0xffff0000, 16, "APNIC" }, { 0x8b840000, 0xffff0000, 16, "APNIC" }, { 0x8b850000, 0xffff0000, 16, "RIPENCC" }, { 0x8b860000, 0xffff0000, 16, "APNIC" }, { 0x8b8d0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b8f0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b910000, 0xffff0000, 16, "RIPENCC" }, { 0x8b940000, 0xffff0000, 16, "APNIC" }, { 0x8b950000, 0xffff0000, 16, "RIPENCC" }, { 0x8b960000, 0xffff0000, 16, "APNIC" }, { 0x8b980000, 0xffff0000, 16, "APNIC" }, { 0x8b990000, 0xffff0000, 16, "RIPENCC" }, { 0x8b9a0000, 0xfffe0000, 15, "APNIC" }, { 0x8b9c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x8b9e0000, 0xffff0000, 16, "RIPENCC" }, { 0x8b9f0000, 0xffff0000, 16, "APNIC" }, { 0x8ba00000, 0xffff0000, 16, "RIPENCC" }, { 0x8ba20000, 0xffff0000, 16, "RIPENCC" }, { 0x8ba30000, 0xffff0000, 16, "APNIC" }, { 0x8ba40000, 0xfffe0000, 15, "RIPENCC" }, { 0x8ba60000, 0xffff0000, 16, "RIPENCC" }, { 0x8ba80000, 0xffff0000, 16, "APNIC" }, { 0x8baa0000, 0xffff0000, 16, "APNIC" }, { 0x8bae0000, 0xffff0000, 16, "RIPENCC" }, { 0x8baf0000, 0xffff0000, 16, "APNIC" }, { 0x8bb00000, 0xffff0000, 16, "APNIC" }, { 0x8bb20000, 0xfffe0000, 15, "RIPENCC" }, { 0x8bb70000, 0xffff0000, 16, "APNIC" }, { 0x8bb80000, 0xffff0000, 16, "RIPENCC" }, { 0x8bba0000, 0xffff0000, 16, "APNIC" }, { 0x8bbc0000, 0xfffe0000, 15, "APNIC" }, { 0x8bbe0000, 0xffff0000, 16, "APNIC" }, { 0x8bbf0000, 0xffff0000, 16, "RIPENCC" }, { 0x8bc00000, 0xfff00000, 12, "APNIC" }, { 0x8bd00000, 0xfff80000, 13, "APNIC" }, { 0x8bd80000, 0xfffc0000, 14, "APNIC" }, { 0x8bdc0000, 0xfffe0000, 15, "APNIC" }, { 0x8bde0000, 0xffff0000, 16, "RIPENCC" }, { 0x8bdf0000, 0xffff0000, 16, "APNIC" }, { 0x8be00000, 0xffff0000, 16, "APNIC" }, { 0x8be20000, 0xfffe0000, 15, "APNIC" }, { 0x8be40000, 0xffff0000, 16, "APNIC" }, { 0x8be60000, 0xffff0000, 16, "APNIC" }, { 0x8bff0000, 0xffff0000, 16, "APNIC" }, { 0x8c000000, 0xff000000, 8, "ARIN" }, { 0x8c4b0000, 0xffff0000, 16, "APNIC" }, { 0x8c4d0000, 0xffff0000, 16, "RIPENCC" }, { 0x8c4e0000, 0xffff0000, 16, "RIPENCC" }, { 0x8c4f0000, 0xffff0000, 16, "APNIC" }, { 0x8c530000, 0xffff0000, 16, "APNIC" }, { 0x8c540000, 0xfffe0000, 15, "RIPENCC" }, { 0x8c5c0000, 0xffff0000, 16, "APNIC" }, { 0x8c5d0000, 0xffff0000, 16, "RIPENCC" }, { 0x8c5e0000, 0xffff0000, 16, "RIPENCC" }, { 0x8c600000, 0xffff0000, 16, "APNIC" }, { 0x8c610000, 0xffff0000, 16, "RIPENCC" }, { 0x8c690000, 0xffff0000, 16, "RIPENCC" }, { 0x8c6d0000, 0xffff0000, 16, "APNIC" }, { 0x8c6e0000, 0xfffe0000, 15, "APNIC" }, { 0x8c700000, 0xfff00000, 12, "APNIC" }, { 0x8c800000, 0xfff80000, 13, "APNIC" }, { 0x8c880000, 0xfffe0000, 15, "APNIC" }, { 0x8c8a0000, 0xffff0000, 16, "APNIC" }, { 0x8c8f0000, 0xffff0000, 16, "APNIC" }, { 0x8c940000, 0xffff0000, 16, "LACNIC" }, { 0x8c950000, 0xffff0000, 16, "APNIC" }, { 0x8c960000, 0xfffe0000, 15, "RIPENCC" }, { 0x8c9f0000, 0xffff0000, 16, "APNIC" }, { 0x8ca40000, 0xffff0000, 16, "RIPENCC" }, { 0x8ca60000, 0xffff0000, 16, "RIPENCC" }, { 0x8ca80000, 0xffff0000, 16, "APNIC" }, { 0x8cb50000, 0xffff0000, 16, "RIPENCC" }, { 0x8cbf0000, 0xffff0000, 16, "LACNIC" }, { 0x8cc80000, 0xffff0000, 16, "APNIC" }, { 0x8ccb0000, 0xffff0000, 16, "RIPENCC" }, { 0x8ccd0000, 0xffff0000, 16, "APNIC" }, { 0x8cce0000, 0xfffe0000, 15, "APNIC" }, { 0x8cd20000, 0xffff0000, 16, "APNIC" }, { 0x8cd50000, 0xffff0000, 16, "APNIC" }, { 0x8ce00000, 0xffff0000, 16, "APNIC" }, { 0x8ce70000, 0xffff0000, 16, "RIPENCC" }, { 0x8ced0000, 0xffff0000, 16, "APNIC" }, { 0x8cf00000, 0xffff0000, 16, "APNIC" }, { 0x8cf30000, 0xffff0000, 16, "APNIC" }, { 0x8cf60000, 0xffff0000, 16, "APNIC" }, { 0x8cf90000, 0xffff0000, 16, "APNIC" }, { 0x8cfa0000, 0xffff0000, 16, "APNIC" }, { 0x8cfd0000, 0xffff0000, 16, "APNIC" }, { 0x8cff0000, 0xffff0000, 16, "APNIC" }, { 0x8d000000, 0xff000000, 8, "RIPENCC" }, { 0x8d560000, 0xffff0000, 16, "ARIN" }, { 0x8d660000, 0xffff0000, 16, "ARIN" }, { 0x8d670000, 0xffff0000, 16, "APNIC" }, { 0x8d680000, 0xffff0000, 16, "ARIN" }, { 0x8d6a0000, 0xfffe0000, 15, "ARIN" }, { 0x8d6d0000, 0xffff0000, 16, "ARIN" }, { 0x8d6e0000, 0xfffe0000, 15, "ARIN" }, { 0x8d700000, 0xffff0000, 16, "ARIN" }, { 0x8d720000, 0xffff0000, 16, "ARIN" }, { 0x8d740000, 0xfffc0000, 14, "ARIN" }, { 0x8d780000, 0xffff0000, 16, "APNIC" }, { 0x8d790000, 0xffff0000, 16, "ARIN" }, { 0x8d7a0000, 0xfffe0000, 15, "ARIN" }, { 0x8d7c0000, 0xfffc0000, 14, "ARIN" }, { 0x8d800000, 0xfffe0000, 15, "ARIN" }, { 0x8d830000, 0xffff0000, 16, "ARIN" }, { 0x8d840000, 0xffff0000, 16, "APNIC" }, { 0x8d850000, 0xffff0000, 16, "ARIN" }, { 0x8d8b0000, 0xffff0000, 16, "ARIN" }, { 0x8d8c0000, 0xfffe0000, 15, "ARIN" }, { 0x8d8e0000, 0xffff0000, 16, "ARIN" }, { 0x8d950000, 0xffff0000, 16, "ARIN" }, { 0x8d960000, 0xfffe0000, 15, "ARIN" }, { 0x8d980000, 0xfff80000, 13, "ARIN" }, { 0x8da00000, 0xfffe0000, 15, "ARIN" }, { 0x8da20000, 0xffff0000, 16, "ARIN" }, { 0x8da40000, 0xfffc0000, 14, "ARIN" }, { 0x8da80000, 0xffff0000, 16, "APNIC" }, { 0x8dad0000, 0xffff0000, 16, "ARIN" }, { 0x8dae0000, 0xffff0000, 16, "ARIN" }, { 0x8db10000, 0xffff0000, 16, "ARIN" }, { 0x8db20000, 0xffff0000, 16, "APNIC" }, { 0x8db30000, 0xffff0000, 16, "ARIN" }, { 0x8db40000, 0xfffc0000, 14, "ARIN" }, { 0x8db80000, 0xfff80000, 13, "ARIN" }, { 0x8dc10000, 0xffff0000, 16, "ARIN" }, { 0x8dc30000, 0xffff0000, 16, "ARIN" }, { 0x8dc50000, 0xffff0000, 16, "ARIN" }, { 0x8dc60000, 0xfffe0000, 15, "ARIN" }, { 0x8dca0000, 0xffff0000, 16, "ARIN" }, { 0x8dcc0000, 0xfffc0000, 14, "ARIN" }, { 0x8dd10000, 0xffff0000, 16, "ARIN" }, { 0x8dd20000, 0xfffe0000, 15, "ARIN" }, { 0x8dd40000, 0xfffc0000, 14, "ARIN" }, { 0x8dd80000, 0xfffc0000, 14, "ARIN" }, { 0x8ddc0000, 0xfffe0000, 15, "ARIN" }, { 0x8dde0000, 0xffff0000, 16, "ARIN" }, { 0x8ddf0000, 0xffff0000, 16, "APNIC" }, { 0x8de00000, 0xfffe0000, 15, "ARIN" }, { 0x8de60000, 0xffff0000, 16, "ARIN" }, { 0x8de80000, 0xfffc0000, 14, "ARIN" }, { 0x8dec0000, 0xffff0000, 16, "ARIN" }, { 0x8dee0000, 0xfffe0000, 15, "ARIN" }, { 0x8df00000, 0xffff0000, 16, "ARIN" }, { 0x8df20000, 0xffff0000, 16, "ARIN" }, { 0x8df30000, 0xffff0000, 16, "APNIC" }, { 0x8df60000, 0xfffe0000, 15, "ARIN" }, { 0x8df80000, 0xffff0000, 16, "ARIN" }, { 0x8dfb0000, 0xffff0000, 16, "ARIN" }, { 0x8dfe0000, 0xffff0000, 16, "ARIN" }, { 0x8e000000, 0xfe000000, 7, "ARIN" }, { 0x8f290000, 0xffff0000, 16, "RIPENCC" }, { 0x8f2f0000, 0xffff0000, 16, "RIPENCC" }, { 0x8f320000, 0xfffe0000, 15, "RIPENCC" }, { 0x8f340000, 0xfffe0000, 15, "RIPENCC" }, { 0x8f360000, 0xffff0000, 16, "LACNIC" }, { 0x8f410000, 0xffff0000, 16, "RIPENCC" }, { 0x8f590000, 0xffff0000, 16, "APNIC" }, { 0x8f5a0000, 0xffff0000, 16, "APNIC" }, { 0x8f5c0000, 0xffff0000, 16, "APNIC" }, { 0x8f5d0000, 0xffff0000, 16, "RIPENCC" }, { 0x8f5e0000, 0xffff0000, 16, "APNIC" }, { 0x8f600000, 0xffff0000, 16, "APNIC" }, { 0x8f610000, 0xffff0000, 16, "RIPENCC" }, { 0x8f630000, 0xffff0000, 16, "RIPENCC" }, { 0x8f6a0000, 0xfffe0000, 15, "LACNIC" }, { 0x8f6c0000, 0xffff0000, 16, "LACNIC" }, { 0x8f750000, 0xffff0000, 16, "RIPENCC" }, { 0x8f760000, 0xffff0000, 16, "RIPENCC" }, { 0x8f770000, 0xffff0000, 16, "APNIC" }, { 0x8f790000, 0xffff0000, 16, "RIPENCC" }, { 0x8f7d0000, 0xffff0000, 16, "APNIC" }, { 0x8f7e0000, 0xffff0000, 16, "RIPENCC" }, { 0x8f800000, 0xffff0000, 16, "AFRINIC" }, { 0x8f810000, 0xffff0000, 16, "RIPENCC" }, { 0x8f820000, 0xffff0000, 16, "RIPENCC" }, { 0x8f880000, 0xffff0000, 16, "APNIC" }, { 0x8fa00000, 0xffff0000, 16, "AFRINIC" }, { 0x8fa10000, 0xffff0000, 16, "RIPENCC" }, { 0x8fa30000, 0xffff0000, 16, "RIPENCC" }, { 0x8fa40000, 0xffff0000, 16, "RIPENCC" }, { 0x8fa70000, 0xffff0000, 16, "RIPENCC" }, { 0x8fa90000, 0xffff0000, 16, "RIPENCC" }, { 0x8fae0000, 0xffff0000, 16, "APNIC" }, { 0x8fb00000, 0xfffc0000, 14, "RIPENCC" }, { 0x8fb40000, 0xffff0000, 16, "RIPENCC" }, { 0x8fbc0000, 0xfffe0000, 15, "APNIC" }, { 0x8fc40000, 0xffff0000, 16, "RIPENCC" }, { 0x8fcd0000, 0xffff0000, 16, "RIPENCC" }, { 0x8fd20000, 0xffff0000, 16, "RIPENCC" }, { 0x8fd80000, 0xffff0000, 16, "APNIC" }, { 0x8fd90000, 0xffff0000, 16, "RIPENCC" }, { 0x8fda0000, 0xffff0000, 16, "APNIC" }, { 0x8fdd0000, 0xffff0000, 16, "APNIC" }, { 0x8fe00000, 0xfffe0000, 15, "RIPENCC" }, { 0x8fe90000, 0xffff0000, 16, "RIPENCC" }, { 0x8fea0000, 0xffff0000, 16, "RIPENCC" }, { 0x8fed0000, 0xffff0000, 16, "RIPENCC" }, { 0x8fee0000, 0xffff0000, 16, "APNIC" }, { 0x8fef0000, 0xffff0000, 16, "RIPENCC" }, { 0x8ff50000, 0xffff0000, 16, "RIPENCC" }, { 0x8ff80000, 0xffff0000, 16, "APNIC" }, { 0x8ffc0000, 0xffff0000, 16, "RIPENCC" }, { 0x8ffd0000, 0xffff0000, 16, "APNIC" }, { 0x90000000, 0xff000000, 8, "ARIN" }, { 0x90020000, 0xffff0000, 16, "RIPENCC" }, { 0x90040000, 0xffff0000, 16, "RIPENCC" }, { 0x90060000, 0xfffe0000, 15, "APNIC" }, { 0x900c0000, 0xffff0000, 16, "APNIC" }, { 0x90100000, 0xffff0000, 16, "APNIC" }, { 0x90140000, 0xfffe0000, 15, "RIPENCC" }, { 0x90160000, 0xfffe0000, 15, "LACNIC" }, { 0x90180000, 0xffff0000, 16, "RIPENCC" }, { 0x901b0000, 0xffff0000, 16, "RIPENCC" }, { 0x90200000, 0xffff0000, 16, "RIPENCC" }, { 0x90290000, 0xffff0000, 16, "RIPENCC" }, { 0x902b0000, 0xffff0000, 16, "RIPENCC" }, { 0x902c0000, 0xffff0000, 16, "RIPENCC" }, { 0x90340000, 0xfffe0000, 15, "APNIC" }, { 0x90360000, 0xffff0000, 16, "RIPENCC" }, { 0x90370000, 0xffff0000, 16, "APNIC" }, { 0x90380000, 0xfffe0000, 15, "RIPENCC" }, { 0x903f0000, 0xffff0000, 16, "RIPENCC" }, { 0x90400000, 0xfffe0000, 15, "RIPENCC" }, { 0x90420000, 0xffff0000, 16, "APNIC" }, { 0x904c0000, 0xffff0000, 16, "RIPENCC" }, { 0x90520000, 0xffff0000, 16, "RIPENCC" }, { 0x90540000, 0xfffe0000, 15, "RIPENCC" }, { 0x90570000, 0xffff0000, 16, "RIPENCC" }, { 0x905f0000, 0xffff0000, 16, "RIPENCC" }, { 0x90610000, 0xffff0000, 16, "APNIC" }, { 0x90620000, 0xffff0000, 16, "RIPENCC" }, { 0x906e0000, 0xffff0000, 16, "APNIC" }, { 0x90770000, 0xffff0000, 16, "RIPENCC" }, { 0x90780000, 0xffff0000, 16, "APNIC" }, { 0x907a0000, 0xffff0000, 16, "RIPENCC" }, { 0x907b0000, 0xffff0000, 16, "APNIC" }, { 0x907c0000, 0xffff0000, 16, "RIPENCC" }, { 0x907f0000, 0xffff0000, 16, "RIPENCC" }, { 0x90820000, 0xfffe0000, 15, "APNIC" }, { 0x90840000, 0xfffc0000, 14, "APNIC" }, { 0x90880000, 0xfffc0000, 14, "APNIC" }, { 0x908c0000, 0xffff0000, 16, "APNIC" }, { 0x90910000, 0xffff0000, 16, "RIPENCC" }, { 0x90a40000, 0xfffe0000, 15, "RIPENCC" }, { 0x90ad0000, 0xffff0000, 16, "RIPENCC" }, { 0x90b00000, 0xfffc0000, 14, "RIPENCC" }, { 0x90b40000, 0xfffe0000, 15, "RIPENCC" }, { 0x90c10000, 0xffff0000, 16, "RIPENCC" }, { 0x90c70000, 0xffff0000, 16, "APNIC" }, { 0x90c80000, 0xffff0000, 16, "RIPENCC" }, { 0x90cc0000, 0xffff0000, 16, "RIPENCC" }, { 0x90cd0000, 0xffff0000, 16, "APNIC" }, { 0x90ce0000, 0xffff0000, 16, "RIPENCC" }, { 0x90d10000, 0xffff0000, 16, "RIPENCC" }, { 0x90d50000, 0xffff0000, 16, "APNIC" }, { 0x90d60000, 0xffff0000, 16, "APNIC" }, { 0x90f80000, 0xffff0000, 16, "RIPENCC" }, { 0x90ff0000, 0xffff0000, 16, "APNIC" }, { 0x91000000, 0xff000000, 8, "RIPENCC" }, { 0x92000000, 0xfe000000, 7, "ARIN" }, { 0x92020000, 0xfffe0000, 15, "RIPENCC" }, { 0x92040000, 0xffff0000, 16, "RIPENCC" }, { 0x920b0000, 0xffff0000, 16, "APNIC" }, { 0x92130000, 0xffff0000, 16, "RIPENCC" }, { 0x92150000, 0xffff0000, 16, "RIPENCC" }, { 0x92300000, 0xffff0000, 16, "RIPENCC" }, { 0x92320000, 0xffff0000, 16, "RIPENCC" }, { 0x92330000, 0xffff0000, 16, "APNIC" }, { 0x92340000, 0xffff0000, 16, "RIPENCC" }, { 0x92380000, 0xffff0000, 16, "APNIC" }, { 0x923b0000, 0xffff0000, 16, "RIPENCC" }, { 0x923c0000, 0xffff0000, 16, "RIPENCC" }, { 0x92400000, 0xffff0000, 16, "AFRINIC" }, { 0x92420000, 0xfffe0000, 15, "RIPENCC" }, { 0x92460000, 0xffff0000, 16, "RIPENCC" }, { 0x92480000, 0xffff0000, 16, "RIPENCC" }, { 0x924b0000, 0xffff0000, 16, "RIPENCC" }, { 0x924d0000, 0xffff0000, 16, "RIPENCC" }, { 0x92500000, 0xfffe0000, 15, "RIPENCC" }, { 0x92530000, 0xffff0000, 16, "LACNIC" }, { 0x92570000, 0xffff0000, 16, "RIPENCC" }, { 0x925a0000, 0xffff0000, 16, "RIPENCC" }, { 0x92610000, 0xffff0000, 16, "RIPENCC" }, { 0x92640000, 0xfffc0000, 14, "RIPENCC" }, { 0x92680000, 0xfffc0000, 14, "RIPENCC" }, { 0x926c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x926e0000, 0xffff0000, 16, "RIPENCC" }, { 0x92700000, 0xffff0000, 16, "RIPENCC" }, { 0x92740000, 0xffff0000, 16, "APNIC" }, { 0x92760000, 0xffff0000, 16, "APNIC" }, { 0x92770000, 0xffff0000, 16, "RIPENCC" }, { 0x92780000, 0xffff0000, 16, "RIPENCC" }, { 0x927c0000, 0xffff0000, 16, "RIPENCC" }, { 0x92850000, 0xffff0000, 16, "RIPENCC" }, { 0x92860000, 0xffff0000, 16, "LACNIC" }, { 0x92880000, 0xffff0000, 16, "RIPENCC" }, { 0x928c0000, 0xffff0000, 16, "RIPENCC" }, { 0x928d0000, 0xffff0000, 16, "AFRINIC" }, { 0x929b0000, 0xffff0000, 16, "LACNIC" }, { 0x929e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x92a10000, 0xffff0000, 16, "RIPENCC" }, { 0x92a20000, 0xffff0000, 16, "RIPENCC" }, { 0x92a40000, 0xffff0000, 16, "LACNIC" }, { 0x92a90000, 0xffff0000, 16, "RIPENCC" }, { 0x92ab0000, 0xffff0000, 16, "APNIC" }, { 0x92ac0000, 0xfffe0000, 15, "RIPENCC" }, { 0x92af0000, 0xffff0000, 16, "RIPENCC" }, { 0x92b00000, 0xfffe0000, 15, "RIPENCC" }, { 0x92b20000, 0xffff0000, 16, "APNIC" }, { 0x92b30000, 0xffff0000, 16, "RIPENCC" }, { 0x92b60000, 0xffff0000, 16, "AFRINIC" }, { 0x92b90000, 0xffff0000, 16, "RIPENCC" }, { 0x92bc0000, 0xffff0000, 16, "RIPENCC" }, { 0x92bf0000, 0xffff0000, 16, "RIPENCC" }, { 0x92c00000, 0xfffe0000, 15, "RIPENCC" }, { 0x92c20000, 0xffff0000, 16, "RIPENCC" }, { 0x92c30000, 0xffff0000, 16, "APNIC" }, { 0x92c40000, 0xffffe000, 19, "APNIC" }, { 0x92d20000, 0xfffe0000, 15, "RIPENCC" }, { 0x92d40000, 0xfffe0000, 15, "RIPENCC" }, { 0x92d80000, 0xffff0000, 16, "RIPENCC" }, { 0x92db0000, 0xffff0000, 16, "RIPENCC" }, { 0x92dc0000, 0xffff0000, 16, "RIPENCC" }, { 0x92dd0000, 0xffff0000, 16, "APNIC" }, { 0x92e00000, 0xffff0000, 16, "RIPENCC" }, { 0x92e30000, 0xffff0000, 16, "RIPENCC" }, { 0x92e40000, 0xffff0000, 16, "RIPENCC" }, { 0x92e60000, 0xfffe0000, 15, "AFRINIC" }, { 0x92e80000, 0xffff0000, 16, "AFRINIC" }, { 0x92ea0000, 0xffff0000, 16, "RIPENCC" }, { 0x92f70000, 0xffff0000, 16, "RIPENCC" }, { 0x92f80000, 0xfffe0000, 15, "RIPENCC" }, { 0x92fb0000, 0xffff0000, 16, "RIPENCC" }, { 0x92fd0000, 0xffff0000, 16, "RIPENCC" }, { 0x92fe0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93060000, 0xffff0000, 16, "APNIC" }, { 0x93070000, 0xffff0000, 16, "RIPENCC" }, { 0x93080000, 0xffff0000, 16, "APNIC" }, { 0x930a0000, 0xffff0000, 16, "APNIC" }, { 0x930c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x930e0000, 0xffff0000, 16, "RIPENCC" }, { 0x931b0000, 0xffff0000, 16, "RIPENCC" }, { 0x931d0000, 0xffff0000, 16, "RIPENCC" }, { 0x931e0000, 0xffff0000, 16, "RIPENCC" }, { 0x93200000, 0xfffe0000, 15, "RIPENCC" }, { 0x93290000, 0xffff0000, 16, "APNIC" }, { 0x932b0000, 0xffff0000, 16, "APNIC" }, { 0x932c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x932e0000, 0xfffe0000, 15, "APNIC" }, { 0x93340000, 0xffff0000, 16, "RIPENCC" }, { 0x93360000, 0xffff0000, 16, "RIPENCC" }, { 0x933c0000, 0xffff0000, 16, "RIPENCC" }, { 0x93410000, 0xffff0000, 16, "LACNIC" }, { 0x93420000, 0xffff0000, 16, "APNIC" }, { 0x93430000, 0xffff0000, 16, "RIPENCC" }, { 0x93440000, 0xffff0000, 16, "RIPENCC" }, { 0x93450000, 0xffff0000, 16, "APNIC" }, { 0x934b0000, 0xffff0000, 16, "RIPENCC" }, { 0x934c0000, 0xffff0000, 16, "APNIC" }, { 0x934d0000, 0xffff0000, 16, "RIPENCC" }, { 0x93530000, 0xffff0000, 16, "RIPENCC" }, { 0x93540000, 0xffff0000, 16, "RIPENCC" }, { 0x93560000, 0xfffe0000, 15, "RIPENCC" }, { 0x93580000, 0xfffe0000, 15, "RIPENCC" }, { 0x935b0000, 0xffff0000, 16, "RIPENCC" }, { 0x935d0000, 0xffff0000, 16, "RIPENCC" }, { 0x935e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93600000, 0xffff0000, 16, "RIPENCC" }, { 0x93620000, 0xfffe0000, 15, "RIPENCC" }, { 0x93640000, 0xffff0000, 16, "RIPENCC" }, { 0x93660000, 0xffff0000, 16, "RIPENCC" }, { 0x936d0000, 0xffff0000, 16, "APNIC" }, { 0x936e0000, 0xffff0000, 16, "AFRINIC" }, { 0x936f0000, 0xffff0000, 16, "RIPENCC" }, { 0x93700000, 0xffff0000, 16, "RIPENCC" }, { 0x93770000, 0xffff0000, 16, "RIPENCC" }, { 0x937a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x937d0000, 0xffff0000, 16, "RIPENCC" }, { 0x937f0000, 0xffff0000, 16, "RIPENCC" }, { 0x93840000, 0xffff0000, 16, "APNIC" }, { 0x938e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93930000, 0xffff0000, 16, "RIPENCC" }, { 0x939c0000, 0xffff0000, 16, "RIPENCC" }, { 0x939d0000, 0xffff0000, 16, "APNIC" }, { 0x939e0000, 0xffff0000, 16, "APNIC" }, { 0x93a10000, 0xffff0000, 16, "RIPENCC" }, { 0x93a20000, 0xfffe0000, 15, "RIPENCC" }, { 0x93a70000, 0xffff0000, 16, "RIPENCC" }, { 0x93ab0000, 0xffff0000, 16, "RIPENCC" }, { 0x93ac0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93af0000, 0xffff0000, 16, "RIPENCC" }, { 0x93b00000, 0xffff0000, 16, "APNIC" }, { 0x93b40000, 0xfffe0000, 15, "RIPENCC" }, { 0x93b80000, 0xffff0000, 16, "RIPENCC" }, { 0x93ba0000, 0xffff0000, 16, "RIPENCC" }, { 0x93bc0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93c10000, 0xffff0000, 16, "RIPENCC" }, { 0x93c40000, 0xfffe0000, 15, "RIPENCC" }, { 0x93c80000, 0xffff0000, 16, "APNIC" }, { 0x93c90000, 0xffff0000, 16, "RIPENCC" }, { 0x93cc0000, 0xffff0000, 16, "RIPENCC" }, { 0x93d10000, 0xffff0000, 16, "APNIC" }, { 0x93d20000, 0xffff0000, 16, "RIPENCC" }, { 0x93d30000, 0xffff0000, 16, "APNIC" }, { 0x93d50000, 0xffff0000, 16, "RIPENCC" }, { 0x93d60000, 0xfffe0000, 15, "RIPENCC" }, { 0x93dc0000, 0xffff0000, 16, "RIPENCC" }, { 0x93e40000, 0xfffc0000, 14, "RIPENCC" }, { 0x93e80000, 0xfffc0000, 14, "RIPENCC" }, { 0x93ec0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93f30000, 0xffff0000, 16, "RIPENCC" }, { 0x93fa0000, 0xfffe0000, 15, "RIPENCC" }, { 0x93fc0000, 0xffff0000, 16, "RIPENCC" }, { 0x94000000, 0xfe000000, 7, "ARIN" }, { 0x94020000, 0xfffe0000, 15, "RIPENCC" }, { 0x94060000, 0xffff0000, 16, "RIPENCC" }, { 0x94360000, 0xffff0000, 16, "RIPENCC" }, { 0x94380000, 0xffff0000, 16, "RIPENCC" }, { 0x943c0000, 0xffff0000, 16, "RIPENCC" }, { 0x944f0000, 0xffff0000, 16, "RIPENCC" }, { 0x94510000, 0xffff0000, 16, "RIPENCC" }, { 0x94520000, 0xfffe0000, 15, "RIPENCC" }, { 0x94580000, 0xffff0000, 16, "RIPENCC" }, { 0x946e0000, 0xffff0000, 16, "RIPENCC" }, { 0x94760000, 0xfffe0000, 15, "RIPENCC" }, { 0x94780000, 0xfffc0000, 14, "RIPENCC" }, { 0x94870000, 0xffff0000, 16, "RIPENCC" }, { 0x94880000, 0xffff0000, 16, "RIPENCC" }, { 0x948a0000, 0xffff0000, 16, "RIPENCC" }, { 0x948c0000, 0xffff0000, 16, "RIPENCC" }, { 0x948f0000, 0xffff0000, 16, "RIPENCC" }, { 0x94910000, 0xffff0000, 16, "APNIC" }, { 0x94940000, 0xffff0000, 16, "RIPENCC" }, { 0x94970000, 0xffff0000, 16, "RIPENCC" }, { 0x94a00000, 0xffff0000, 16, "RIPENCC" }, { 0x94a10000, 0xffff0000, 16, "APNIC" }, { 0x94a90000, 0xffff0000, 16, "RIPENCC" }, { 0x94b00000, 0xffff0000, 16, "RIPENCC" }, { 0x94b50000, 0xffff0000, 16, "RIPENCC" }, { 0x94b60000, 0xffff0000, 16, "APNIC" }, { 0x94b90000, 0xffff0000, 16, "RIPENCC" }, { 0x94bb0000, 0xffff0000, 16, "RIPENCC" }, { 0x94c30000, 0xffff0000, 16, "APNIC" }, { 0x94c40000, 0xfffe0000, 15, "RIPENCC" }, { 0x94c60000, 0xffff0000, 16, "RIPENCC" }, { 0x94c80000, 0xffff0000, 16, "RIPENCC" }, { 0x94c90000, 0xffff0000, 16, "LACNIC" }, { 0x94ca0000, 0xfffe0000, 15, "LACNIC" }, { 0x94cc0000, 0xfffc0000, 14, "LACNIC" }, { 0x94d00000, 0xfff00000, 12, "LACNIC" }, { 0x94e00000, 0xfff00000, 12, "LACNIC" }, { 0x94f00000, 0xfff80000, 13, "LACNIC" }, { 0x94f80000, 0xfffe0000, 15, "LACNIC" }, { 0x94fa0000, 0xffff0000, 16, "LACNIC" }, { 0x94fb0000, 0xffff0000, 16, "RIPENCC" }, { 0x94fc0000, 0xfffe0000, 15, "RIPENCC" }, { 0x95000000, 0xffff0000, 16, "RIPENCC" }, { 0x95030000, 0xffff0000, 16, "RIPENCC" }, { 0x951b0000, 0xffff0000, 16, "RIPENCC" }, { 0x95310000, 0xffff0000, 16, "RIPENCC" }, { 0x953b0000, 0xffff0000, 16, "RIPENCC" }, { 0x953e0000, 0xffff0000, 16, "RIPENCC" }, { 0x957e0000, 0xffff0000, 16, "RIPENCC" }, { 0x95840000, 0xfffe0000, 15, "RIPENCC" }, { 0x95860000, 0xffff0000, 16, "RIPENCC" }, { 0x95870000, 0xffff0000, 16, "APNIC" }, { 0x958b0000, 0xffff0000, 16, "RIPENCC" }, { 0x958c0000, 0xffff0000, 16, "RIPENCC" }, { 0x95900000, 0xffff0000, 16, "APNIC" }, { 0x95920000, 0xfffe0000, 15, "RIPENCC" }, { 0x95940000, 0xffff0000, 16, "RIPENCC" }, { 0x95990000, 0xffff0000, 16, "RIPENCC" }, { 0x959a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x959c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x95a70000, 0xffff0000, 16, "APNIC" }, { 0x95aa0000, 0xffff0000, 16, "RIPENCC" }, { 0x95ab0000, 0xffff0000, 16, "APNIC" }, { 0x95ac0000, 0xffff0000, 16, "RIPENCC" }, { 0x95b00000, 0xffff0000, 16, "APNIC" }, { 0x95b10000, 0xffff0000, 16, "RIPENCC" }, { 0x95c40000, 0xfffe0000, 15, "RIPENCC" }, { 0x95c80000, 0xfff80000, 13, "RIPENCC" }, { 0x95d00000, 0xfff00000, 12, "RIPENCC" }, { 0x95e00000, 0xfff00000, 12, "RIPENCC" }, { 0x95f00000, 0xfff80000, 13, "RIPENCC" }, { 0x95f90000, 0xffff0000, 16, "RIPENCC" }, { 0x95fa0000, 0xfffe0000, 15, "RIPENCC" }, { 0x95fe0000, 0xfffe0000, 15, "RIPENCC" }, { 0x96000000, 0xff000000, 8, "ARIN" }, { 0x96400000, 0xffe00000, 11, "APNIC" }, { 0x96600000, 0xfffc0000, 14, "APNIC" }, { 0x96640000, 0xfffe0000, 15, "APNIC" }, { 0x966a0000, 0xffff0000, 16, "RIPENCC" }, { 0x96730000, 0xffff0000, 16, "APNIC" }, { 0x96740000, 0xfffe0000, 15, "APNIC" }, { 0x96790000, 0xffff0000, 16, "APNIC" }, { 0x967a0000, 0xffff0000, 16, "APNIC" }, { 0x96800000, 0xffff0000, 16, "RIPENCC" }, { 0x96840000, 0xffff0000, 16, "RIPENCC" }, { 0x968a0000, 0xfffe0000, 15, "APNIC" }, { 0x968c0000, 0xffff0000, 16, "RIPENCC" }, { 0x96910000, 0xffff0000, 16, "RIPENCC" }, { 0x96920000, 0xffff0000, 16, "RIPENCC" }, { 0x96960000, 0xfffe0000, 15, "APNIC" }, { 0x969e0000, 0xffff0000, 16, "RIPENCC" }, { 0x96a10000, 0xffff0000, 16, "LACNIC" }, { 0x96a20000, 0xfffe0000, 15, "LACNIC" }, { 0x96a40000, 0xfffe0000, 15, "LACNIC" }, { 0x96ad0000, 0xffff0000, 16, "APNIC" }, { 0x96af0000, 0xffff0000, 16, "RIPENCC" }, { 0x96b20000, 0xffff0000, 16, "RIPENCC" }, { 0x96b70000, 0xffff0000, 16, "APNIC" }, { 0x96b90000, 0xffff0000, 16, "LACNIC" }, { 0x96ba0000, 0xfffe0000, 15, "LACNIC" }, { 0x96bc0000, 0xfffe0000, 15, "LACNIC" }, { 0x96bf0000, 0xffff0000, 16, "APNIC" }, { 0x96c50000, 0xffff0000, 16, "APNIC" }, { 0x96cb0000, 0xffff0000, 16, "APNIC" }, { 0x96cc0000, 0xfffe0000, 15, "RIPENCC" }, { 0x96ce0000, 0xfffe0000, 15, "APNIC" }, { 0x96d50000, 0xffff0000, 16, "RIPENCC" }, { 0x96d60000, 0xffff0000, 16, "RIPENCC" }, { 0x96d90000, 0xffff0000, 16, "RIPENCC" }, { 0x96df0000, 0xffff0000, 16, "APNIC" }, { 0x96e30000, 0xffff0000, 16, "RIPENCC" }, { 0x96e50000, 0xffff0000, 16, "APNIC" }, { 0x96ec0000, 0xfffe0000, 15, "RIPENCC" }, { 0x96f10000, 0xffff0000, 16, "RIPENCC" }, { 0x96f40000, 0xffff0000, 16, "RIPENCC" }, { 0x96fb0000, 0xffff0000, 16, "RIPENCC" }, { 0x96fe0000, 0xffff0000, 16, "RIPENCC" }, { 0x96ff0000, 0xffff0000, 16, "APNIC" }, { 0x97000000, 0xff000000, 8, "RIPENCC" }, { 0x97650000, 0xffff0000, 16, "ARIN" }, { 0x97660000, 0xfffe0000, 15, "ARIN" }, { 0x97680000, 0xfff80000, 13, "ARIN" }, { 0x97700000, 0xfffe0000, 15, "ARIN" }, { 0x97720000, 0xffff0000, 16, "ARIN" }, { 0x97740000, 0xfffc0000, 14, "ARIN" }, { 0x97790000, 0xffff0000, 16, "ARIN" }, { 0x977a0000, 0xfffe0000, 15, "ARIN" }, { 0x977c0000, 0xfffe0000, 15, "ARIN" }, { 0x977e0000, 0xffff0000, 16, "ARIN" }, { 0x97800000, 0xffff0000, 16, "ARIN" }, { 0x97820000, 0xffff0000, 16, "APNIC" }, { 0x97830000, 0xffff0000, 16, "ARIN" }, { 0x97840000, 0xffff0000, 16, "ARIN" }, { 0x97860000, 0xffff0000, 16, "ARIN" }, { 0x97890000, 0xffff0000, 16, "ARIN" }, { 0x978a0000, 0xfffe0000, 15, "ARIN" }, { 0x978c0000, 0xfffc0000, 14, "ARIN" }, { 0x97900000, 0xfff80000, 13, "ARIN" }, { 0x97980000, 0xfffc0000, 14, "ARIN" }, { 0x979f0000, 0xffff0000, 16, "ARIN" }, { 0x97a00000, 0xfff80000, 13, "ARIN" }, { 0x97a80000, 0xfffe0000, 15, "ARIN" }, { 0x97ab0000, 0xffff0000, 16, "ARIN" }, { 0x97ad0000, 0xffff0000, 16, "ARIN" }, { 0x97ae0000, 0xffff0000, 16, "ARIN" }, { 0x97b20000, 0xffff0000, 16, "APNIC" }, { 0x97b30000, 0xffff0000, 16, "ARIN" }, { 0x97b50000, 0xffff0000, 16, "ARIN" }, { 0x97b80000, 0xfffe0000, 15, "ARIN" }, { 0x97ba0000, 0xffff0000, 16, "ARIN" }, { 0x97bc0000, 0xffff0000, 16, "ARIN" }, { 0x97be0000, 0xfffe0000, 15, "ARIN" }, { 0x97c00000, 0xfff00000, 12, "ARIN" }, { 0x97d00000, 0xfffe0000, 15, "ARIN" }, { 0x97d20000, 0xffff0000, 16, "ARIN" }, { 0x97d50000, 0xffff0000, 16, "ARIN" }, { 0x97d60000, 0xfffe0000, 15, "ARIN" }, { 0x98000000, 0xf8000000, 5, "ARIN" }, { 0x98340000, 0xffff0000, 16, "APNIC" }, { 0x98420000, 0xffff0000, 16, "RIPENCC" }, { 0x98470000, 0xffff0000, 16, "RIPENCC" }, { 0x98490000, 0xffff0000, 16, "RIPENCC" }, { 0x984a0000, 0xffff0000, 16, "LACNIC" }, { 0x984c0000, 0xffff0000, 16, "APNIC" }, { 0x984d0000, 0xffff0000, 16, "RIPENCC" }, { 0x984e0000, 0xffff0000, 16, "RIPENCC" }, { 0x98510000, 0xffff0000, 16, "RIPENCC" }, { 0x98530000, 0xffff0000, 16, "APNIC" }, { 0x98540000, 0xffff0000, 16, "LACNIC" }, { 0x98580000, 0xffff0000, 16, "RIPENCC" }, { 0x985a0000, 0xffff0000, 16, "RIPENCC" }, { 0x985b0000, 0xffff0000, 16, "APNIC" }, { 0x985c0000, 0xffff0000, 16, "LACNIC" }, { 0x985d0000, 0xffff0000, 16, "RIPENCC" }, { 0x985e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x98600000, 0xffff0000, 16, "RIPENCC" }, { 0x98620000, 0xfffe0000, 15, "APNIC" }, { 0x98650000, 0xffff0000, 16, "APNIC" }, { 0x98660000, 0xfffe0000, 15, "APNIC" }, { 0x98680000, 0xffff0000, 16, "APNIC" }, { 0x98690000, 0xffff0000, 16, "RIPENCC" }, { 0x986a0000, 0xfffe0000, 15, "AFRINIC" }, { 0x986c0000, 0xfffc0000, 14, "AFRINIC" }, { 0x98700000, 0xffff0000, 16, "AFRINIC" }, { 0x98720000, 0xfffe0000, 15, "RIPENCC" }, { 0x98760000, 0xffff0000, 16, "APNIC" }, { 0x98860000, 0xffff0000, 16, "RIPENCC" }, { 0x988b0000, 0xffff0000, 16, "LACNIC" }, { 0x988f0000, 0xffff0000, 16, "RIPENCC" }, { 0x98930000, 0xffff0000, 16, "APNIC" }, { 0x98950000, 0xffff0000, 16, "APNIC" }, { 0x98960000, 0xffff0000, 16, "RIPENCC" }, { 0x98980000, 0xffff0000, 16, "RIPENCC" }, { 0x98e20000, 0xffff0000, 16, "APNIC" }, { 0x99000000, 0xffff0000, 16, "APNIC" }, { 0x99010000, 0xffff0000, 16, "RIPENCC" }, { 0x99030000, 0xffff0000, 16, "APNIC" }, { 0x99050000, 0xffff0000, 16, "RIPENCC" }, { 0x990f0000, 0xffff0000, 16, "RIPENCC" }, { 0x99110000, 0xffff0000, 16, "RIPENCC" }, { 0x99130000, 0xffff0000, 16, "RIPENCC" }, { 0x99140000, 0xffff0000, 16, "APNIC" }, { 0x99220000, 0xfffe0000, 15, "APNIC" }, { 0x99240000, 0xfffe0000, 15, "APNIC" }, { 0x99580000, 0xffff0000, 16, "RIPENCC" }, { 0x995c0000, 0xfffc0000, 14, "RIPENCC" }, { 0x99600000, 0xfffe0000, 15, "RIPENCC" }, { 0x99620000, 0xffff0000, 16, "RIPENCC" }, { 0x99630000, 0xffff0000, 16, "APNIC" }, { 0x99640000, 0xffff0000, 16, "RIPENCC" }, { 0x99650000, 0xffff0000, 16, "APNIC" }, { 0x996b0000, 0xffff0000, 16, "APNIC" }, { 0x996c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x996e0000, 0xffff0000, 16, "RIPENCC" }, { 0x996f0000, 0xffff0000, 16, "APNIC" }, { 0x99700000, 0xffff0000, 16, "RIPENCC" }, { 0x99760000, 0xfffe0000, 15, "APNIC" }, { 0x99780000, 0xfff80000, 13, "APNIC" }, { 0x99800000, 0xff800000, 9, "APNIC" }, { 0x9a000000, 0xffff0000, 16, "AFRINIC" }, { 0x9a080000, 0xffff0000, 16, "RIPENCC" }, { 0x9a0a0000, 0xffff0000, 16, "APNIC" }, { 0x9a0e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9a200000, 0xffff0000, 16, "RIPENCC" }, { 0x9a210000, 0xffff0000, 16, "APNIC" }, { 0x9a220000, 0xffff0000, 16, "APNIC" }, { 0x9a410000, 0xffffc000, 18, "AFRINIC" }, { 0x9a414000, 0xfffff000, 20, "AFRINIC" }, { 0x9a415000, 0xfffff800, 21, "AFRINIC" }, { 0x9a416000, 0xffffe000, 19, "AFRINIC" }, { 0x9a418000, 0xffff8000, 17, "AFRINIC" }, { 0x9a420000, 0xffffc000, 18, "AFRINIC" }, { 0x9a424000, 0xffffe000, 19, "AFRINIC" }, { 0x9a426000, 0xfffff000, 20, "AFRINIC" }, { 0x9a427400, 0xfffffc00, 22, "AFRINIC" }, { 0x9a427800, 0xfffff800, 21, "AFRINIC" }, { 0x9a428000, 0xffffc000, 18, "AFRINIC" }, { 0x9a42c000, 0xfffff000, 20, "AFRINIC" }, { 0x9a42d000, 0xfffffc00, 22, "AFRINIC" }, { 0x9a42f800, 0xfffff800, 21, "AFRINIC" }, { 0x9a430000, 0xffff8000, 17, "AFRINIC" }, { 0x9a440000, 0xffff8000, 17, "AFRINIC" }, { 0x9a500000, 0xfff00000, 12, "AFRINIC" }, { 0x9b040000, 0xffff0000, 16, "RIPENCC" }, { 0x9b200000, 0xffff0000, 16, "APNIC" }, { 0x9b2d0000, 0xffff0000, 16, "RIPENCC" }, { 0x9b360000, 0xfffe0000, 15, "RIPENCC" }, { 0x9b380000, 0xffff0000, 16, "RIPENCC" }, { 0x9b3b0000, 0xffff0000, 16, "APNIC" }, { 0x9b3c0000, 0xffff0000, 16, "APNIC" }, { 0x9b420000, 0xffff0000, 16, "RIPENCC" }, { 0x9b450000, 0xffff0000, 16, "APNIC" }, { 0x9b470000, 0xffff0000, 16, "APNIC" }, { 0x9b490000, 0xffff0000, 16, "RIPENCC" }, { 0x9b690000, 0xffff0000, 16, "RIPENCC" }, { 0x9b830000, 0xffff0000, 16, "RIPENCC" }, { 0x9b840000, 0xfffe0000, 15, "RIPENCC" }, { 0x9b880000, 0xfffe0000, 15, "RIPENCC" }, { 0x9b8c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9b8f0000, 0xffff0000, 16, "APNIC" }, { 0x9b900000, 0xffff0000, 16, "APNIC" }, { 0x9b910000, 0xffff0000, 16, "RIPENCC" }, { 0x9b9e0000, 0xffff0000, 16, "RIPENCC" }, { 0x9b9f0000, 0xffff0000, 16, "AFRINIC" }, { 0x9ba00000, 0xffff0000, 16, "APNIC" }, { 0x9bb90000, 0xffff0000, 16, "RIPENCC" }, { 0x9bbb0000, 0xffff0000, 16, "APNIC" }, { 0x9bc00000, 0xffff0000, 16, "RIPENCC" }, { 0x9bc60000, 0xffff0000, 16, "RIPENCC" }, { 0x9bca0000, 0xffff0000, 16, "RIPENCC" }, { 0x9bcc0000, 0xffff0000, 16, "RIPENCC" }, { 0x9bcd0000, 0xffff0000, 16, "APNIC" }, { 0x9bcf0000, 0xffff0000, 16, "RIPENCC" }, { 0x9bd10000, 0xffff0000, 16, "RIPENCC" }, { 0x9bd20000, 0xffff0000, 16, "RIPENCC" }, { 0x9bd30000, 0xffff0000, 16, "LACNIC" }, { 0x9bdf0000, 0xffff0000, 16, "RIPENCC" }, { 0x9be30000, 0xffff0000, 16, "RIPENCC" }, { 0x9be40000, 0xffff0000, 16, "RIPENCC" }, { 0x9be60000, 0xffff0000, 16, "APNIC" }, { 0x9be70000, 0xffff0000, 16, "RIPENCC" }, { 0x9be80000, 0xfff80000, 13, "AFRINIC" }, { 0x9bf00000, 0xffff0000, 16, "AFRINIC" }, { 0x9bf50000, 0xffff0000, 16, "RIPENCC" }, { 0x9bf90000, 0xffff0000, 16, "RIPENCC" }, { 0x9bfa0000, 0xffff0000, 16, "RIPENCC" }, { 0x9bfd0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c080000, 0xffff0000, 16, "AFRINIC" }, { 0x9c0a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c0d0000, 0xffff0000, 16, "APNIC" }, { 0x9c0e0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c110000, 0xffff0000, 16, "RIPENCC" }, { 0x9c120000, 0xffff0000, 16, "RIPENCC" }, { 0x9c160000, 0xffff0000, 16, "APNIC" }, { 0x9c190000, 0xffff0000, 16, "RIPENCC" }, { 0x9c1c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c1f0000, 0xffff0000, 16, "APNIC" }, { 0x9c230000, 0xffff0000, 16, "RIPENCC" }, { 0x9c2b0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c300000, 0xfffe0000, 15, "RIPENCC" }, { 0x9c320000, 0xffff0000, 16, "APNIC" }, { 0x9c330000, 0xffff0000, 16, "RIPENCC" }, { 0x9c340000, 0xffff0000, 16, "RIPENCC" }, { 0x9c360000, 0xffff0000, 16, "RIPENCC" }, { 0x9c3a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c3b0000, 0xffff0000, 16, "APNIC" }, { 0x9c3d0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c3e0000, 0xffff0000, 16, "APNIC" }, { 0x9c430000, 0xffff0000, 16, "RIPENCC" }, { 0x9c450000, 0xffff0000, 16, "APNIC" }, { 0x9c530000, 0xffff0000, 16, "RIPENCC" }, { 0x9c610000, 0xffff0000, 16, "LACNIC" }, { 0x9c6a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9c720000, 0xfffe0000, 15, "RIPENCC" }, { 0x9c740000, 0xffff0000, 16, "RIPENCC" }, { 0x9c760000, 0xffff0000, 16, "RIPENCC" }, { 0x9c850000, 0xffff0000, 16, "RIPENCC" }, { 0x9c870000, 0xffff0000, 16, "RIPENCC" }, { 0x9c930000, 0xffff0000, 16, "APNIC" }, { 0x9c940000, 0xffff0000, 16, "RIPENCC" }, { 0x9c950000, 0xffff0000, 16, "APNIC" }, { 0x9c960000, 0xffff0000, 16, "RIPENCC" }, { 0x9d000000, 0xfffc0000, 14, "APNIC" }, { 0x9d040000, 0xffff0000, 16, "APNIC" }, { 0x9d060000, 0xfffe0000, 15, "APNIC" }, { 0x9d080000, 0xfffc0000, 14, "APNIC" }, { 0x9d0c0000, 0xfffe0000, 15, "APNIC" }, { 0x9d0e0000, 0xffff0000, 16, "APNIC" }, { 0x9d100000, 0xfffc0000, 14, "APNIC" }, { 0x9d140000, 0xffff0000, 16, "APNIC" }, { 0x9d170000, 0xffff0000, 16, "RIPENCC" }, { 0x9d180000, 0xfffc0000, 14, "RIPENCC" }, { 0x9d1c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9d3d0000, 0xffff0000, 16, "APNIC" }, { 0x9d3f0000, 0xffff0000, 16, "APNIC" }, { 0x9d400000, 0xfff00000, 12, "APNIC" }, { 0x9d500000, 0xffff0000, 16, "APNIC" }, { 0x9d520000, 0xffff0000, 16, "APNIC" }, { 0x9d530000, 0xffff0000, 16, "RIPENCC" }, { 0x9d540000, 0xffff0000, 16, "RIPENCC" }, { 0x9d550000, 0xffff0000, 16, "APNIC" }, { 0x9d560000, 0xffff0000, 16, "LACNIC" }, { 0x9d580000, 0xffff0000, 16, "RIPENCC" }, { 0x9d5c0000, 0xffff0000, 16, "LACNIC" }, { 0x9d5e0000, 0xffff0000, 16, "RIPENCC" }, { 0x9d600000, 0xffff0000, 16, "RIPENCC" }, { 0x9d630000, 0xffff0000, 16, "RIPENCC" }, { 0x9d640000, 0xffff0000, 16, "LACNIC" }, { 0x9d650000, 0xffff0000, 16, "APNIC" }, { 0x9d660000, 0xfffe0000, 15, "APNIC" }, { 0x9d680000, 0xfff80000, 13, "APNIC" }, { 0x9d700000, 0xfffc0000, 14, "APNIC" }, { 0x9d740000, 0xfffe0000, 15, "APNIC" }, { 0x9d760000, 0xffff0000, 16, "APNIC" }, { 0x9d780000, 0xffff0000, 16, "APNIC" }, { 0x9d7a0000, 0xffff0000, 16, "APNIC" }, { 0x9d7c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9d800000, 0xffff0000, 16, "APNIC" }, { 0x9d810000, 0xffff0000, 16, "RIPENCC" }, { 0x9d880000, 0xffff0000, 16, "RIPENCC" }, { 0x9d8a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9d8c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9d900000, 0xffff0000, 16, "RIPENCC" }, { 0x9d940000, 0xffff0000, 16, "APNIC" }, { 0x9d9b0000, 0xffff0000, 16, "APNIC" }, { 0x9d9c0000, 0xffff0000, 16, "APNIC" }, { 0x9d9d0000, 0xffff0000, 16, "RIPENCC" }, { 0x9d9e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9da10000, 0xffff0000, 16, "RIPENCC" }, { 0x9da20000, 0xfffe0000, 15, "RIPENCC" }, { 0x9da40000, 0xffff0000, 16, "RIPENCC" }, { 0x9da70000, 0xffff0000, 16, "RIPENCC" }, { 0x9da80000, 0xfffe0000, 15, "RIPENCC" }, { 0x9dab0000, 0xffff0000, 16, "RIPENCC" }, { 0x9dac0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9db10000, 0xffff0000, 16, "RIPENCC" }, { 0x9db30000, 0xffff0000, 16, "APNIC" }, { 0x9db40000, 0xfffe0000, 15, "RIPENCC" }, { 0x9dba0000, 0xffff0000, 16, "RIPENCC" }, { 0x9dbe0000, 0xffff0000, 16, "RIPENCC" }, { 0x9dc00000, 0xffff0000, 16, "APNIC" }, { 0x9dc10000, 0xffff0000, 16, "RIPENCC" }, { 0x9dc50000, 0xffff0000, 16, "APNIC" }, { 0x9dc80000, 0xffff0000, 16, "RIPENCC" }, { 0x9dcb0000, 0xffff0000, 16, "RIPENCC" }, { 0x9dcd0000, 0xffff0000, 16, "APNIC" }, { 0x9dd30000, 0xffff0000, 16, "APNIC" }, { 0x9de30000, 0xffff0000, 16, "APNIC" }, { 0x9de40000, 0xffff0000, 16, "RIPENCC" }, { 0x9dec0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9df30000, 0xffff0000, 16, "RIPENCC" }, { 0x9df70000, 0xffff0000, 16, "RIPENCC" }, { 0x9df90000, 0xffff0000, 16, "RIPENCC" }, { 0x9dfa4000, 0xffffc000, 18, "APNIC" }, { 0x9dfa8000, 0xffff8000, 17, "APNIC" }, { 0x9dfd0000, 0xffff0000, 16, "LACNIC" }, { 0x9dff0000, 0xffff0000, 16, "APNIC" }, { 0x9e240000, 0xfffc0000, 14, "RIPENCC" }, { 0x9e280000, 0xffff0000, 16, "APNIC" }, { 0x9e290000, 0xffff0000, 16, "RIPENCC" }, { 0x9e2a0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9e2c0000, 0xfffe0000, 15, "APNIC" }, { 0x9e2e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9e310000, 0xffff0000, 16, "RIPENCC" }, { 0x9e320000, 0xffff0000, 16, "RIPENCC" }, { 0x9e360000, 0xffff0000, 16, "APNIC" }, { 0x9e3a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e400000, 0xffff0000, 16, "RIPENCC" }, { 0x9e420000, 0xfffe0000, 15, "RIPENCC" }, { 0x9e4b0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e590000, 0xffff0000, 16, "APNIC" }, { 0x9e5a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e5c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e5e0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e610000, 0xffff0000, 16, "LACNIC" }, { 0x9e630000, 0xffff0000, 16, "RIPENCC" }, { 0x9e660000, 0xffff0000, 16, "RIPENCC" }, { 0x9e690000, 0xffff0000, 16, "RIPENCC" }, { 0x9e6c0000, 0xffff0000, 16, "APNIC" }, { 0x9e6d0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e6e0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e700000, 0xffff0000, 16, "RIPENCC" }, { 0x9e770000, 0xffff0000, 16, "RIPENCC" }, { 0x9e7c0000, 0xfffc0000, 14, "RIPENCC" }, { 0x9e810000, 0xffff0000, 16, "RIPENCC" }, { 0x9e830000, 0xffff0000, 16, "RIPENCC" }, { 0x9e840000, 0xffff0000, 16, "APNIC" }, { 0x9e850000, 0xffff0000, 16, "RIPENCC" }, { 0x9e8f0000, 0xffff0000, 16, "RIPENCC" }, { 0x9e900000, 0xffff0000, 16, "APNIC" }, { 0x9e940000, 0xfffe0000, 15, "RIPENCC" }, { 0x9e960000, 0xffff0000, 16, "RIPENCC" }, { 0x9e980000, 0xffff0000, 16, "RIPENCC" }, { 0x9e9c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9ea00000, 0xffff0000, 16, "LACNIC" }, { 0x9ea10000, 0xffff0000, 16, "APNIC" }, { 0x9ea20000, 0xffff0000, 16, "RIPENCC" }, { 0x9ea60000, 0xfffe0000, 15, "RIPENCC" }, { 0x9ea80000, 0xfffe0000, 15, "RIPENCC" }, { 0x9eaa0000, 0xffff0000, 16, "LACNIC" }, { 0x9eac0000, 0xfffc0000, 14, "RIPENCC" }, { 0x9eb00000, 0xfffc0000, 14, "RIPENCC" }, { 0x9eb40000, 0xfffe0000, 15, "RIPENCC" }, { 0x9eb60000, 0xffff0000, 16, "APNIC" }, { 0x9ebe0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9ec00000, 0xfffc0000, 14, "RIPENCC" }, { 0x9ec40000, 0xfffe0000, 15, "RIPENCC" }, { 0x9ec60000, 0xfffe0000, 15, "APNIC" }, { 0x9ec80000, 0xfff80000, 13, "APNIC" }, { 0x9ed00000, 0xfff80000, 13, "APNIC" }, { 0x9ed80000, 0xffff0000, 16, "RIPENCC" }, { 0x9ed90000, 0xffff0000, 16, "APNIC" }, { 0x9eda0000, 0xffff0000, 16, "RIPENCC" }, { 0x9edc0000, 0xffff0000, 16, "RIPENCC" }, { 0x9edf0000, 0xffff0000, 16, "RIPENCC" }, { 0x9ee10000, 0xffff0000, 16, "RIPENCC" }, { 0x9ee20000, 0xfffe0000, 15, "RIPENCC" }, { 0x9ee60000, 0xfffe0000, 15, "RIPENCC" }, { 0x9ee80000, 0xfffe0000, 15, "RIPENCC" }, { 0x9eea0000, 0xffff0000, 16, "RIPENCC" }, { 0x9ef80000, 0xfffe0000, 15, "RIPENCC" }, { 0x9efa0000, 0xffff0000, 16, "RIPENCC" }, { 0x9efb0000, 0xffff0000, 16, "LACNIC" }, { 0x9eff0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f000000, 0xffff0000, 16, "RIPENCC" }, { 0x9f070000, 0xffff0000, 16, "RIPENCC" }, { 0x9f080000, 0xffff0000, 16, "RIPENCC" }, { 0x9f0c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f0d0000, 0xffff0000, 16, "APNIC" }, { 0x9f0f0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f100000, 0xffff0000, 16, "LACNIC" }, { 0x9f140000, 0xffff0000, 16, "RIPENCC" }, { 0x9f160000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f190000, 0xffff0000, 16, "RIPENCC" }, { 0x9f1d0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f1e0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f220000, 0xffff0000, 16, "RIPENCC" }, { 0x9f260000, 0xffff0000, 16, "RIPENCC" }, { 0x9f2e0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f320000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f340000, 0xffff0000, 16, "APNIC" }, { 0x9f3a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f3c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f480000, 0xffff0000, 16, "RIPENCC" }, { 0x9f490000, 0xffff0000, 16, "APNIC" }, { 0x9f500000, 0xffff0000, 16, "APNIC" }, { 0x9f510000, 0xffff0000, 16, "RIPENCC" }, { 0x9f540000, 0xffff0000, 16, "RIPENCC" }, { 0x9f560000, 0xffff0000, 16, "RIPENCC" }, { 0x9f5a0000, 0xffff0000, 16, "LACNIC" }, { 0x9f5c0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f5f0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f640000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f670000, 0xffff0000, 16, "RIPENCC" }, { 0x9f680000, 0xffff0000, 16, "RIPENCC" }, { 0x9f6b0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f6d0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f6f0000, 0xffff0000, 16, "APNIC" }, { 0x9f720000, 0xffff0000, 16, "RIPENCC" }, { 0x9f750000, 0xffff0000, 16, "APNIC" }, { 0x9f7a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f820000, 0xffff0000, 16, "RIPENCC" }, { 0x9f860000, 0xffff0000, 16, "RIPENCC" }, { 0x9f900000, 0xffff0000, 16, "RIPENCC" }, { 0x9f920000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f940000, 0xfffe0000, 15, "RIPENCC" }, { 0x9f970000, 0xffff0000, 16, "RIPENCC" }, { 0x9f980000, 0xffff0000, 16, "RIPENCC" }, { 0x9f9a0000, 0xffff0000, 16, "RIPENCC" }, { 0x9f9c0000, 0xffff0000, 16, "RIPENCC" }, { 0x9fa00000, 0xffff0000, 16, "RIPENCC" }, { 0x9fa20000, 0xffff0000, 16, "RIPENCC" }, { 0x9fa70000, 0xffff0000, 16, "RIPENCC" }, { 0x9fa80000, 0xffff0000, 16, "RIPENCC" }, { 0x9faa0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9fad0000, 0xffff0000, 16, "RIPENCC" }, { 0x9fb30000, 0xffff0000, 16, "RIPENCC" }, { 0x9fb40000, 0xffff0000, 16, "RIPENCC" }, { 0x9fbe0000, 0xffff0000, 16, "RIPENCC" }, { 0x9fc10000, 0xffff0000, 16, "RIPENCC" }, { 0x9fc20000, 0xfffe0000, 15, "RIPENCC" }, { 0x9fc40000, 0xffff0000, 16, "APNIC" }, { 0x9fc50000, 0xffff0000, 16, "RIPENCC" }, { 0x9fc80000, 0xffff0000, 16, "RIPENCC" }, { 0x9fcd0000, 0xffff0000, 16, "RIPENCC" }, { 0x9fcf0000, 0xffff0000, 16, "APNIC" }, { 0x9fd20000, 0xffff0000, 16, "RIPENCC" }, { 0x9fd30000, 0xffff0000, 16, "APNIC" }, { 0x9fd50000, 0xffff0000, 16, "RIPENCC" }, { 0x9fd80000, 0xfffe0000, 15, "RIPENCC" }, { 0x9fdb0000, 0xffff0000, 16, "RIPENCC" }, { 0x9fe00000, 0xffff0000, 16, "RIPENCC" }, { 0x9fe20000, 0xffff0000, 16, "APNIC" }, { 0x9fe80000, 0xffff0000, 16, "RIPENCC" }, { 0x9fec0000, 0xfffe0000, 15, "RIPENCC" }, { 0x9fef0000, 0xffff0000, 16, "RIPENCC" }, { 0x9ff10000, 0xffff0000, 16, "RIPENCC" }, { 0x9ff40000, 0xfffe0000, 15, "RIPENCC" }, { 0x9ff80000, 0xffff0000, 16, "APNIC" }, { 0x9ffd0000, 0xffff0000, 16, "RIPENCC" }, { 0x9ffe0000, 0xfffe0000, 15, "RIPENCC" }, { 0xa0000000, 0xf8000000, 5, "ARIN" }, { 0xa0040000, 0xffff0000, 16, "APNIC" }, { 0xa0050000, 0xffff0000, 16, "RIPENCC" }, { 0xa0060000, 0xffff0000, 16, "RIPENCC" }, { 0xa0080000, 0xfffe0000, 15, "RIPENCC" }, { 0xa00b0000, 0xffff0000, 16, "APNIC" }, { 0xa00c0000, 0xfffc0000, 14, "APNIC" }, { 0xa0100000, 0xfffe0000, 15, "APNIC" }, { 0xa0120000, 0xffff0000, 16, "APNIC" }, { 0xa0131000, 0xfffffc00, 22, "APNIC" }, { 0xa0132000, 0xfffffc00, 22, "APNIC" }, { 0xa0132800, 0xfffffc00, 22, "APNIC" }, { 0xa0133800, 0xfffffc00, 22, "APNIC" }, { 0xa0134400, 0xfffffc00, 22, "APNIC" }, { 0xa0134800, 0xfffff800, 21, "APNIC" }, { 0xa0135000, 0xfffff800, 21, "APNIC" }, { 0xa0135800, 0xfffffc00, 22, "APNIC" }, { 0xa0136c00, 0xfffffc00, 22, "APNIC" }, { 0xa0139000, 0xfffff800, 21, "APNIC" }, { 0xa0139c00, 0xfffffc00, 22, "APNIC" }, { 0xa013a400, 0xfffffc00, 22, "APNIC" }, { 0xa013b000, 0xfffffc00, 22, "APNIC" }, { 0xa013b800, 0xfffffc00, 22, "APNIC" }, { 0xa013cc00, 0xfffffc00, 22, "APNIC" }, { 0xa013e400, 0xfffffc00, 22, "APNIC" }, { 0xa0141000, 0xfffffc00, 22, "APNIC" }, { 0xa0142400, 0xfffffc00, 22, "APNIC" }, { 0xa0144c00, 0xfffffc00, 22, "APNIC" }, { 0xa0146800, 0xfffffc00, 22, "APNIC" }, { 0xa0147400, 0xfffffc00, 22, "APNIC" }, { 0xa0147800, 0xfffff800, 21, "APNIC" }, { 0xa0148000, 0xfffff000, 20, "APNIC" }, { 0xa014d400, 0xffffff00, 24, "APNIC" }, { 0xa014d800, 0xffffff00, 24, "APNIC" }, { 0xa014dc00, 0xffffff00, 24, "APNIC" }, { 0xa014e000, 0xffffff00, 24, "APNIC" }, { 0xa014e400, 0xffffff00, 24, "APNIC" }, { 0xa014f000, 0xffffff00, 24, "APNIC" }, { 0xa014f400, 0xffffff00, 24, "APNIC" }, { 0xa014fa00, 0xffffff00, 24, "APNIC" }, { 0xa0150000, 0xffff0000, 16, "APNIC" }, { 0xa0160000, 0xfffe0000, 15, "APNIC" }, { 0xa0180000, 0xffff0000, 16, "APNIC" }, { 0xa01a0000, 0xfffe0000, 15, "APNIC" }, { 0xa01c0000, 0xfffe0000, 15, "APNIC" }, { 0xa0260000, 0xffff0000, 16, "RIPENCC" }, { 0xa0280000, 0xffff0000, 16, "RIPENCC" }, { 0xa02c0000, 0xfffc0000, 14, "RIPENCC" }, { 0xa0300000, 0xfff00000, 12, "RIPENCC" }, { 0xa0400000, 0xffff0000, 16, "APNIC" }, { 0xa0420000, 0xfffe0000, 15, "RIPENCC" }, { 0xa0440000, 0xffff0000, 16, "RIPENCC" }, { 0xa0460000, 0xfffe0000, 15, "RIPENCC" }, { 0xa04a0000, 0xffff0000, 16, "APNIC" }, { 0xa04b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa04e0000, 0xffff0000, 16, "RIPENCC" }, { 0xa0500000, 0xffff0000, 16, "RIPENCC" }, { 0xa0550000, 0xffff0000, 16, "RIPENCC" }, { 0xa05c0000, 0xffff0000, 16, "RIPENCC" }, { 0xa0600000, 0xffff0000, 16, "APNIC" }, { 0xa0610000, 0xffff0000, 16, "RIPENCC" }, { 0xa0620000, 0xfffe0000, 15, "RIPENCC" }, { 0xa0640000, 0xffff0000, 16, "RIPENCC" }, { 0xa0670000, 0xffff0000, 16, "RIPENCC" }, { 0xa0680000, 0xffff0000, 16, "RIPENCC" }, { 0xa0720000, 0xffff0000, 16, "RIPENCC" }, { 0xa0730000, 0xffff0000, 16, "AFRINIC" }, { 0xa0740000, 0xfffe0000, 15, "AFRINIC" }, { 0xa0760000, 0xffff0000, 16, "AFRINIC" }, { 0xa0790000, 0xffff0000, 16, "AFRINIC" }, { 0xa07a0000, 0xfffe0000, 15, "AFRINIC" }, { 0xa07c0000, 0xffff0000, 16, "AFRINIC" }, { 0xa0b40000, 0xffff0000, 16, "RIPENCC" }, { 0xa0b50000, 0xffff0000, 16, "AFRINIC" }, { 0xa0b90000, 0xffff0000, 16, "APNIC" }, { 0xa0ba0000, 0xfffe0000, 15, "APNIC" }, { 0xa0bc0000, 0xfffe0000, 15, "APNIC" }, { 0xa0be0000, 0xffff0000, 16, "APNIC" }, { 0xa0c00000, 0xfff80000, 13, "APNIC" }, { 0xa0c80000, 0xfffe0000, 15, "APNIC" }, { 0xa0ca0000, 0xfffff800, 21, "APNIC" }, { 0xa0cb0000, 0xffff0000, 16, "APNIC" }, { 0xa0cc0000, 0xffff0000, 16, "APNIC" }, { 0xa0ce0000, 0xffff0000, 16, "APNIC" }, { 0xa0d20000, 0xfffe0000, 15, "RIPENCC" }, { 0xa0d50000, 0xffff0000, 16, "RIPENCC" }, { 0xa0d60000, 0xffff0000, 16, "RIPENCC" }, { 0xa0d70000, 0xffff0000, 16, "APNIC" }, { 0xa0d80000, 0xfffc0000, 14, "RIPENCC" }, { 0xa0dc0000, 0xfffe0000, 15, "RIPENCC" }, { 0xa0de0000, 0xffff0000, 16, "APNIC" }, { 0xa0e40000, 0xffff0000, 16, "RIPENCC" }, { 0xa0e90000, 0xffff0000, 16, "APNIC" }, { 0xa0eb0000, 0xffff0000, 16, "APNIC" }, { 0xa0ed0000, 0xffff0000, 16, "APNIC" }, { 0xa0ee0100, 0xffffff00, 24, "APNIC" }, { 0xa0ee0200, 0xfffffe00, 23, "APNIC" }, { 0xa0ee0400, 0xfffffc00, 22, "APNIC" }, { 0xa0ee0800, 0xfffffe00, 23, "APNIC" }, { 0xa0ee0a00, 0xffffff00, 24, "APNIC" }, { 0xa0ee1400, 0xffffff00, 24, "APNIC" }, { 0xa0ee1e00, 0xffffff00, 24, "APNIC" }, { 0xa0ee2000, 0xffffff00, 24, "APNIC" }, { 0xa0ee2800, 0xffffff00, 24, "APNIC" }, { 0xa0ee3300, 0xffffff00, 24, "APNIC" }, { 0xa0ee3800, 0xffffff00, 24, "APNIC" }, { 0xa0ee3e00, 0xffffff00, 24, "APNIC" }, { 0xa0ee6400, 0xffffff00, 24, "APNIC" }, { 0xa0ef0000, 0xffff0000, 16, "APNIC" }, { 0xa0f00000, 0xfffe0000, 15, "APNIC" }, { 0xa0f30000, 0xffff0000, 16, "APNIC" }, { 0xa0f40000, 0xfffc0000, 14, "APNIC" }, { 0xa0f80000, 0xfffc0000, 14, "APNIC" }, { 0xa0fc0000, 0xffff0000, 16, "APNIC" }, { 0xa1020000, 0xfffe0000, 15, "RIPENCC" }, { 0xa1040000, 0xfffe0000, 15, "RIPENCC" }, { 0xa1080000, 0xfffe0000, 15, "RIPENCC" }, { 0xa10c0000, 0xffff0000, 16, "RIPENCC" }, { 0xa1110000, 0xffff0000, 16, "RIPENCC" }, { 0xa1140000, 0xffff0000, 16, "RIPENCC" }, { 0xa1170000, 0xffff0000, 16, "RIPENCC" }, { 0xa1180000, 0xfffe0000, 15, "LACNIC" }, { 0xa11b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa11d0000, 0xffff0000, 16, "APNIC" }, { 0xa11e0000, 0xffff0000, 16, "RIPENCC" }, { 0xa1250000, 0xffff0000, 16, "RIPENCC" }, { 0xa1290000, 0xffff0000, 16, "RIPENCC" }, { 0xa12a0000, 0xffff0000, 16, "RIPENCC" }, { 0xa12b0000, 0xffff0000, 16, "APNIC" }, { 0xa1300000, 0xffff0000, 16, "RIPENCC" }, { 0xa1320000, 0xffff0000, 16, "APNIC" }, { 0xa1340000, 0xfffe0000, 15, "RIPENCC" }, { 0xa1360000, 0xffff0000, 16, "RIPENCC" }, { 0xa13b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa13e0000, 0xffff0000, 16, "RIPENCC" }, { 0xa1400000, 0xfffe0000, 15, "APNIC" }, { 0xa1420000, 0xffff0000, 16, "APNIC" }, { 0xa1430000, 0xffff0000, 16, "RIPENCC" }, { 0xa1470000, 0xffff0000, 16, "RIPENCC" }, { 0xa1480000, 0xfffe0000, 15, "RIPENCC" }, { 0xa14a0000, 0xffff0000, 16, "RIPENCC" }, { 0xa14b0000, 0xffff0000, 16, "APNIC" }, { 0xa14c0000, 0xffff0000, 16, "RIPENCC" }, { 0xa14e0000, 0xffff0000, 16, "RIPENCC" }, { 0xa14f0000, 0xffff0000, 16, "LACNIC" }, { 0xa1530000, 0xffff0000, 16, "RIPENCC" }, { 0xa1590000, 0xffff0000, 16, "RIPENCC" }, { 0xa15b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa15d0000, 0xffff0000, 16, "APNIC" }, { 0xa15e0000, 0xfffe0000, 15, "APNIC" }, { 0xa1600000, 0xffff0000, 16, "APNIC" }, { 0xa1680000, 0xfffe0000, 15, "RIPENCC" }, { 0xa16a0000, 0xffff0000, 16, "RIPENCC" }, { 0xa16e0000, 0xfffe0000, 15, "RIPENCC" }, { 0xa1700000, 0xffff0000, 16, "RIPENCC" }, { 0xa1740000, 0xffff0000, 16, "RIPENCC" }, { 0xa1750000, 0xffff0000, 16, "APNIC" }, { 0xa1760000, 0xffff0000, 16, "APNIC" }, { 0xa17a0000, 0xffff0000, 16, "APNIC" }, { 0xa17e0000, 0xffff0000, 16, "APNIC" }, { 0xa1830000, 0xffff0000, 16, "LACNIC" }, { 0xa1840000, 0xffff0000, 16, "LACNIC" }, { 0xa1860000, 0xffff0000, 16, "RIPENCC" }, { 0xa18b0000, 0xffff0000, 16, "APNIC" }, { 0xa18e0000, 0xfffe0000, 15, "APNIC" }, { 0xa1920000, 0xffff0000, 16, "APNIC" }, { 0xa1930000, 0xffff0000, 16, "RIPENCC" }, { 0xa1940000, 0xffff0000, 16, "LACNIC" }, { 0xa1980000, 0xffff0000, 16, "APNIC" }, { 0xa19e0000, 0xffff0000, 16, "RIPENCC" }, { 0xa1be0000, 0xffff0000, 16, "LACNIC" }, { 0xa1c40000, 0xffff0000, 16, "LACNIC" }, { 0xa1c80000, 0xffff0000, 16, "APNIC" }, { 0xa1ca0000, 0xffff0000, 16, "RIPENCC" }, { 0xa1cf0000, 0xffff0000, 16, "APNIC" }, { 0xa1da0000, 0xffff0000, 16, "RIPENCC" }, { 0xa1e50000, 0xffff0000, 16, "APNIC" }, { 0xa1ee0000, 0xffff0000, 16, "LACNIC" }, { 0xa1f60000, 0xffff0000, 16, "APNIC" }, { 0xa1fc0000, 0xffff0000, 16, "RIPENCC" }, { 0xa20b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa20d0000, 0xffff0000, 16, "RIPENCC" }, { 0xa2150000, 0xffff0000, 16, "RIPENCC" }, { 0xa2170000, 0xffff0000, 16, "RIPENCC" }, { 0xa2190000, 0xffff0000, 16, "RIPENCC" }, { 0xa21a0000, 0xffff0000, 16, "RIPENCC" }, { 0xa2260000, 0xffff0000, 16, "RIPENCC" }, { 0xa2380000, 0xffff0000, 16, "APNIC" }, { 0xa2560000, 0xffff0000, 16, "RIPENCC" }, { 0xa2690000, 0xffff0000, 16, "APNIC" }, { 0xa2700000, 0xffff0000, 16, "APNIC" }, { 0xa27a0000, 0xffff0000, 16, "LACNIC" }, { 0xa2910000, 0xffff0000, 16, "APNIC" }, { 0xa2920000, 0xfffe0000, 15, "APNIC" }, { 0xa3000000, 0xffff0000, 16, "APNIC" }, { 0xa3010000, 0xffff0000, 16, "RIPENCC" }, { 0xa3030000, 0xffff0000, 16, "RIPENCC" }, { 0xa3050000, 0xffff0000, 16, "RIPENCC" }, { 0xa3070000, 0xffff0000, 16, "APNIC" }, { 0xa3080000, 0xffff0000, 16, "APNIC" }, { 0xa3090000, 0xffff0000, 16, "RIPENCC" }, { 0xa30a0000, 0xffff0000, 16, "LACNIC" }, { 0xa30d0000, 0xffff0000, 16, "APNIC" }, { 0xa30e0000, 0xfffe0000, 15, "APNIC" }, { 0xa3100000, 0xfff00000, 12, "APNIC" }, { 0xa3200000, 0xffff0000, 16, "APNIC" }, { 0xa3220000, 0xffff0000, 16, "RIPENCC" }, { 0xa32a0000, 0xfffe0000, 15, "APNIC" }, { 0xa32c0000, 0xfffe0000, 15, "APNIC" }, { 0xa32e0000, 0xffff0000, 16, "APNIC" }, { 0xa32f0000, 0xfffffc00, 22, "APNIC" }, { 0xa32f1300, 0xffffff00, 24, "APNIC" }, { 0xa32f1800, 0xffffff00, 24, "APNIC" }, { 0xa32f1d00, 0xffffff00, 24, "APNIC" }, { 0xa3300000, 0xfffc0000, 14, "APNIC" }, { 0xa3360000, 0xfffe0000, 15, "APNIC" }, { 0xa3380000, 0xffff0000, 16, "APNIC" }, { 0xa33a0000, 0xfffe0000, 15, "APNIC" }, { 0xa33c0000, 0xffff0000, 16, "APNIC" }, { 0xa33e0000, 0xfffe0000, 15, "RIPENCC" }, { 0xa3750000, 0xffff0000, 16, "RIPENCC" }, { 0xa3770000, 0xffff0000, 16, "RIPENCC" }, { 0xa3790000, 0xffff0000, 16, "AFRINIC" }, { 0xa37a0000, 0xffff0000, 16, "APNIC" }, { 0xa37d0000, 0xffff0000, 16, "APNIC" }, { 0xa3820000, 0xfffe0000, 15, "APNIC" }, { 0xa3840000, 0xfffc0000, 14, "APNIC" }, { 0xa3880000, 0xfff80000, 13, "APNIC" }, { 0xa3900000, 0xfffc0000, 14, "APNIC" }, { 0xa3940000, 0xfffe0000, 15, "APNIC" }, { 0xa3980000, 0xffff0000, 16, "APNIC" }, { 0xa39c0000, 0xfffc0000, 14, "RIPENCC" }, { 0xa3a00000, 0xfffc0000, 14, "RIPENCC" }, { 0xa3a40000, 0xffff0000, 16, "RIPENCC" }, { 0xa3a50000, 0xffff8000, 17, "RIPENCC" }, { 0xa3a5c000, 0xffffc000, 18, "RIPENCC" }, { 0xa3a60000, 0xfffe0000, 15, "RIPENCC" }, { 0xa3a80000, 0xfff80000, 13, "RIPENCC" }, { 0xa3b10000, 0xffff0000, 16, "APNIC" }, { 0xa3b20000, 0xffff0000, 16, "LACNIC" }, { 0xa3b30000, 0xffff0000, 16, "APNIC" }, { 0xa3b40000, 0xffff0000, 16, "APNIC" }, { 0xa3bd0000, 0xffff0000, 16, "APNIC" }, { 0xa3c30000, 0xffff0000, 16, "AFRINIC" }, { 0xa3c40000, 0xfffc0000, 14, "AFRINIC" }, { 0xa3c80000, 0xfffc0000, 14, "AFRINIC" }, { 0xa3cc0000, 0xffff0000, 16, "APNIC" }, { 0xa3d00000, 0xfff80000, 13, "APNIC" }, { 0xa3d90000, 0xffff0000, 16, "APNIC" }, { 0xa3da0000, 0xfffe0000, 15, "APNIC" }, { 0xa3dc0000, 0xfffc0000, 14, "APNIC" }, { 0xa3e00000, 0xfffe0000, 15, "APNIC" }, { 0xa3e20000, 0xffff0000, 16, "APNIC" }, { 0xa3e30100, 0xffffff00, 24, "APNIC" }, { 0xa3e31100, 0xffffff00, 24, "APNIC" }, { 0xa3e37d00, 0xffffff00, 24, "APNIC" }, { 0xa3e3dd00, 0xffffff00, 24, "APNIC" }, { 0xa3e3e100, 0xffffff00, 24, "APNIC" }, { 0xa3e3e200, 0xfffffe00, 23, "APNIC" }, { 0xa3e3e900, 0xffffff00, 24, "APNIC" }, { 0xa3e3ea00, 0xffffff00, 24, "APNIC" }, { 0xa3e3f100, 0xffffff00, 24, "APNIC" }, { 0xa3e3f200, 0xfffffe00, 23, "APNIC" }, { 0xa3e3fe00, 0xffffff00, 24, "APNIC" }, { 0xa3e50000, 0xffff0000, 16, "APNIC" }, { 0xa3e80000, 0xfffe0000, 15, "APNIC" }, { 0xa3ef0000, 0xffff0000, 16, "APNIC" }, { 0xa3f20000, 0xffff0000, 16, "RIPENCC" }, { 0xa3f70000, 0xffff0000, 16, "LACNIC" }, { 0xa3fa0000, 0xffff0000, 16, "LACNIC" }, { 0xa3ff0000, 0xffff0000, 16, "APNIC" }, { 0xa4000000, 0xffe00000, 11, "RIPENCC" }, { 0xa4200000, 0xfff80000, 13, "RIPENCC" }, { 0xa4280000, 0xffff8000, 17, "RIPENCC" }, { 0xa4288000, 0xffffe000, 19, "RIPENCC" }, { 0xa428a000, 0xfffff000, 20, "RIPENCC" }, { 0xa428b000, 0xfffff800, 21, "RIPENCC" }, { 0xa428c000, 0xffffc000, 18, "RIPENCC" }, { 0xa4290000, 0xffff0000, 16, "LACNIC" }, { 0xa42b0000, 0xffff0000, 16, "APNIC" }, { 0xa42e0000, 0xffff0000, 16, "APNIC" }, { 0xa4300000, 0xffff0000, 16, "RIPENCC" }, { 0xa4350000, 0xffff0000, 16, "APNIC" }, { 0xa43b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa43c0000, 0xfffe0000, 15, "RIPENCC" }, { 0xa4450000, 0xffff0000, 16, "APNIC" }, { 0xa4460000, 0xfffe0000, 15, "APNIC" }, { 0xa4490000, 0xffff0000, 16, "LACNIC" }, { 0xa44b0000, 0xffff0000, 16, "APNIC" }, { 0xa44d0000, 0xffff0000, 16, "LACNIC" }, { 0xa44e0000, 0xffff0000, 16, "APNIC" }, { 0xa4500000, 0xffff0000, 16, "APNIC" }, { 0xa4510000, 0xffff0000, 16, "RIPENCC" }, { 0xa4550000, 0xffff0000, 16, "LACNIC" }, { 0xa4580000, 0xffff0000, 16, "AFRINIC" }, { 0xa4600000, 0xffff0000, 16, "LACNIC" }, { 0xa4610000, 0xffff0000, 16, "APNIC" }, { 0xa4620000, 0xffff0000, 16, "LACNIC" }, { 0xa4640000, 0xffff0000, 16, "APNIC" }, { 0xa46c0000, 0xffff0000, 16, "APNIC" }, { 0xa4700000, 0xffff0000, 16, "APNIC" }, { 0xa4730000, 0xffff0000, 16, "APNIC" }, { 0xa47c0000, 0xfffe0000, 15, "APNIC" }, { 0xa47e0000, 0xfffe0000, 15, "RIPENCC" }, { 0xa4800000, 0xfff80000, 13, "RIPENCC" }, { 0xa4880000, 0xfffe0000, 15, "RIPENCC" }, { 0xa48a0000, 0xffffc000, 18, "RIPENCC" }, { 0xa48a4000, 0xffffe000, 19, "RIPENCC" }, { 0xa48a6800, 0xfffff800, 21, "RIPENCC" }, { 0xa48a7000, 0xfffff000, 20, "RIPENCC" }, { 0xa48a8000, 0xffff8000, 17, "RIPENCC" }, { 0xa48b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa48c0000, 0xfffc0000, 14, "RIPENCC" }, { 0xa4920000, 0xfffe0000, 15, "AFRINIC" }, { 0xa49b0000, 0xffff0000, 16, "AFRINIC" }, { 0xa4a10000, 0xffff0000, 16, "APNIC" }, { 0xa4a20000, 0xffff0000, 16, "APNIC" }, { 0xa4a40000, 0xffff0000, 16, "APNIC" }, { 0xa4b10000, 0xffff0000, 16, "RIPENCC" }, { 0xa4d70000, 0xffff0000, 16, "RIPENCC" }, { 0xa5030000, 0xffff0000, 16, "AFRINIC" }, { 0xa5080000, 0xfffc0000, 14, "AFRINIC" }, { 0xa50c0000, 0xffff0000, 16, "APNIC" }, { 0xa50e0000, 0xffff0000, 16, "APNIC" }, { 0xa5150000, 0xffff0000, 16, "APNIC" }, { 0xa5190000, 0xffff0000, 16, "AFRINIC" }, { 0xa51f0000, 0xffff0000, 16, "APNIC" }, { 0xa52a0000, 0xfffe0000, 15, "APNIC" }, { 0xa5450000, 0xffff0000, 16, "APNIC" }, { 0xa54c0000, 0xffff0000, 16, "APNIC" }, { 0xa5540000, 0xffff0000, 16, "APNIC" }, { 0xa5560000, 0xffff0000, 16, "APNIC" }, { 0xa55d0000, 0xffff0000, 16, "APNIC" }, { 0xa5600000, 0xffff0000, 16, "APNIC" }, { 0xa5620000, 0xffff0000, 16, "LACNIC" }, { 0xa5630000, 0xffff0000, 16, "APNIC" }, { 0xa5640000, 0xffff0000, 16, "APNIC" }, { 0xa5650000, 0xfffffc00, 22, "APNIC" }, { 0xa5660000, 0xffff0000, 16, "APNIC" }, { 0xa56c0000, 0xffff0000, 16, "APNIC" }, { 0xa5720000, 0xffff0000, 16, "RIPENCC" }, { 0xa5760000, 0xffff0000, 16, "APNIC" }, { 0xa5840000, 0xfffe0000, 15, "APNIC" }, { 0xa58d0000, 0xffff0000, 16, "APNIC" }, { 0xa58e0000, 0xffff0000, 16, "APNIC" }, { 0xa58f0000, 0xffff0000, 16, "AFRINIC" }, { 0xa5900000, 0xfffc0000, 14, "AFRINIC" }, { 0xa5940000, 0xfffe0000, 15, "AFRINIC" }, { 0xa5a50000, 0xffff0000, 16, "AFRINIC" }, { 0xa5b40000, 0xffff0000, 16, "AFRINIC" }, { 0xa5b60000, 0xfffe0000, 15, "LACNIC" }, { 0xa5ba0000, 0xfffe0000, 15, "APNIC" }, { 0xa5bf0000, 0xffff0000, 16, "APNIC" }, { 0xa5c20000, 0xffff0000, 16, "APNIC" }, { 0xa5ca0000, 0xffff0000, 16, "APNIC" }, { 0xa5cd0000, 0xffff0000, 16, "APNIC" }, { 0xa5d10000, 0xffff0000, 16, "APNIC" }, { 0xa5d50000, 0xffff0000, 16, "APNIC" }, { 0xa5da0000, 0xffff0000, 16, "RIPENCC" }, { 0xa5dc0000, 0xffff0000, 16, "APNIC" }, { 0xa5de0000, 0xffff0000, 16, "RIPENCC" }, { 0xa5e40000, 0xfffe0000, 15, "APNIC" }, { 0xa5e70000, 0xffff0000, 16, "AFRINIC" }, { 0xa5e90000, 0xffff0000, 16, "AFRINIC" }, { 0xa5f00000, 0xfffc0000, 14, "APNIC" }, { 0xa5f40000, 0xffff0000, 16, "APNIC" }, { 0xa5f60000, 0xffff0000, 16, "APNIC" }, { 0xa6080000, 0xfff80000, 13, "RIPENCC" }, { 0xa6318000, 0xffff8000, 17, "RIPENCC" }, { 0xa6400000, 0xfffe0000, 15, "APNIC" }, { 0xa64b0000, 0xffff0000, 16, "LACNIC" }, { 0xa64f0000, 0xffff0000, 16, "APNIC" }, { 0xa6530000, 0xffff0000, 16, "APNIC" }, { 0xa6550000, 0xffff0000, 16, "AFRINIC" }, { 0xa6570000, 0xffff0000, 16, "RIPENCC" }, { 0xa6640000, 0xffff0000, 16, "APNIC" }, { 0xa6670000, 0xffff0000, 16, "APNIC" }, { 0xa6680000, 0xffff0000, 16, "APNIC" }, { 0xa66e0000, 0xffff0000, 16, "LACNIC" }, { 0xa66f0000, 0xffff0000, 16, "APNIC" }, { 0xa6720000, 0xffff0000, 16, "LACNIC" }, { 0xa6760000, 0xfffe0000, 15, "APNIC" }, { 0xa6780000, 0xfffe0000, 15, "APNIC" }, { 0xa67d0000, 0xffff0000, 16, "APNIC" }, { 0xa71c0000, 0xffff0000, 16, "LACNIC" }, { 0xa71e0000, 0xffff0000, 16, "APNIC" }, { 0xa7510000, 0xffff0000, 16, "RIPENCC" }, { 0xa7670000, 0xffff0000, 16, "APNIC" }, { 0xa76f0000, 0xffff0000, 16, "RIPENCC" }, { 0xa77b0000, 0xffff0000, 16, "APNIC" }, { 0xa7820000, 0xffff0000, 16, "APNIC" }, { 0xa7860000, 0xffff0000, 16, "LACNIC" }, { 0xa78b0000, 0xffff0000, 16, "APNIC" }, { 0xa79d0000, 0xffff0000, 16, "LACNIC" }, { 0xa7a20000, 0xffff0000, 16, "APNIC" }, { 0xa7a80000, 0xffff0000, 16, "RIPENCC" }, { 0xa7a90000, 0xffff0000, 16, "APNIC" }, { 0xa7ac0000, 0xffff0000, 16, "RIPENCC" }, { 0xa7af0000, 0xffff0000, 16, "APNIC" }, { 0xa7b30000, 0xffff0000, 16, "APNIC" }, { 0xa7bd0000, 0xffff0000, 16, "APNIC" }, { 0xa7cb0000, 0xffff0000, 16, "RIPENCC" }, { 0xa7cd0000, 0xffff0000, 16, "APNIC" }, { 0xa7fc0000, 0xffff0000, 16, "LACNIC" }, { 0xa8000000, 0xfc000000, 6, "ARIN" }, { 0xa8010000, 0xffff0000, 16, "RIPENCC" }, { 0xa8460000, 0xffff0000, 16, "APNIC" }, { 0xa84c0000, 0xffff0000, 16, "AFRINIC" }, { 0xa84d0000, 0xffff0000, 16, "LACNIC" }, { 0xa84e0000, 0xffff0000, 16, "APNIC" }, { 0xa8500000, 0xfffe0000, 15, "AFRINIC" }, { 0xa8530000, 0xffff0000, 16, "LACNIC" }, { 0xa8590000, 0xffff0000, 16, "AFRINIC" }, { 0xa85f0000, 0xffff0000, 16, "APNIC" }, { 0xa8600000, 0xffff0000, 16, "LACNIC" }, { 0xa8650000, 0xffff0000, 16, "LACNIC" }, { 0xa86a0000, 0xffff0000, 16, "APNIC" }, { 0xa8730000, 0xffff0000, 16, "APNIC" }, { 0xa8780000, 0xffff0000, 16, "APNIC" }, { 0xa87e0000, 0xffff0000, 16, "APNIC" }, { 0xa8800000, 0xffff0000, 16, "AFRINIC" }, { 0xa8820000, 0xfffe0000, 15, "APNIC" }, { 0xa8840000, 0xffff0000, 16, "APNIC" }, { 0xa8860000, 0xffff0000, 16, "APNIC" }, { 0xa88b0000, 0xffff0000, 16, "RIPENCC" }, { 0xa88c0000, 0xffff0000, 16, "APNIC" }, { 0xa88e0000, 0xffff0000, 16, "AFRINIC" }, { 0xa8980000, 0xfffe0000, 15, "APNIC" }, { 0xa89a0000, 0xffff0000, 16, "APNIC" }, { 0xa89b0000, 0xffff0000, 16, "AFRINIC" }, { 0xa8a00000, 0xffff0000, 16, "APNIC" }, { 0xa8a40000, 0xffff0000, 16, "AFRINIC" }, { 0xa8a50000, 0xffff0000, 16, "LACNIC" }, { 0xa8a70000, 0xffff0000, 16, "AFRINIC" }, { 0xa8ac0000, 0xffff0000, 16, "AFRINIC" }, { 0xa8b00000, 0xffff0000, 16, "LACNIC" }, { 0xa8ba0000, 0xffff0000, 16, "APNIC" }, { 0xa8bb0000, 0xffff0000, 16, "RIPENCC" }, { 0xa8bc0000, 0xffff0000, 16, "APNIC" }, { 0xa8c60000, 0xffff0000, 16, "APNIC" }, { 0xa8ce0000, 0xffff0000, 16, "AFRINIC" }, { 0xa8d10000, 0xffff0000, 16, "AFRINIC" }, { 0xa8d90000, 0xffff0000, 16, "APNIC" }, { 0xa8db0000, 0xffff0000, 16, "APNIC" }, { 0xa8e20000, 0xffff0000, 16, "LACNIC" }, { 0xa8e70000, 0xffff0000, 16, "LACNIC" }, { 0xa8ea0000, 0xffff0000, 16, "LACNIC" }, { 0xa8f30000, 0xffff0000, 16, "LACNIC" }, { 0xa8f80000, 0xfffe0000, 15, "APNIC" }, { 0xa8fc0000, 0xffff0000, 16, "APNIC" }, { 0xa8ff0000, 0xffff0000, 16, "LACNIC" }, { 0xa9200000, 0xffe00000, 11, "RIPENCC" }, { 0xa9810000, 0xffff0000, 16, "AFRINIC" }, { 0xa98c0000, 0xffff0000, 16, "APNIC" }, { 0xa99e0000, 0xffff0000, 16, "LACNIC" }, { 0xa9ca0000, 0xffff0000, 16, "AFRINIC" }, { 0xa9d00000, 0xfff00000, 12, "APNIC" }, { 0xaa120000, 0xffff0000, 16, "LACNIC" }, { 0xaa190000, 0xffff0000, 16, "LACNIC" }, { 0xaa260000, 0xffff0000, 16, "APNIC" }, { 0xaa330000, 0xffff0000, 16, "LACNIC" }, { 0xaa3c0000, 0xffff0000, 16, "RIPENCC" }, { 0xaa420000, 0xffff0000, 16, "LACNIC" }, { 0xaa460000, 0xffff0000, 16, "LACNIC" }, { 0xaa9b0000, 0xffff0000, 16, "LACNIC" }, { 0xaa9d0000, 0xffff0000, 16, "APNIC" }, { 0xaaa90000, 0xffff0000, 16, "LACNIC" }, { 0xaab30000, 0xffff0000, 16, "APNIC" }, { 0xaad20000, 0xffff0000, 16, "LACNIC" }, { 0xaaec0000, 0xfffe0000, 15, "RIPENCC" }, { 0xaaff0000, 0xffff0000, 16, "RIPENCC" }, { 0xab000000, 0xfff00000, 12, "APNIC" }, { 0xab100000, 0xfff80000, 13, "RIPENCC" }, { 0xab180000, 0xfffc0000, 14, "RIPENCC" }, { 0xab1c0000, 0xfffe0000, 15, "RIPENCC" }, { 0xab1f0000, 0xffff0000, 16, "RIPENCC" }, { 0xab200000, 0xfffe0000, 15, "RIPENCC" }, { 0xab220000, 0xfffe0000, 15, "APNIC" }, { 0xab240000, 0xfffc0000, 14, "APNIC" }, { 0xab280000, 0xfff80000, 13, "APNIC" }, { 0xab300000, 0xfff00000, 12, "APNIC" }, { 0xab4c0000, 0xfffc0000, 14, "APNIC" }, { 0xab500000, 0xfff00000, 12, "APNIC" }, { 0xab600000, 0xffe00000, 11, "APNIC" }, { 0xabcf0000, 0xffff0000, 16, "APNIC" }, { 0xabd00000, 0xfff00000, 12, "APNIC" }, { 0xabe00000, 0xffe00000, 11, "APNIC" }, { 0xac000000, 0xfe000000, 7, "ARIN" }, { 0xae000000, 0xff000000, 8, "ARIN" }, { 0xae8a9000, 0xfffff000, 20, "APNIC" }, { 0xaf000000, 0xff000000, 8, "APNIC" }, { 0xb0000000, 0xff000000, 8, "RIPENCC" }, { 0xb1000000, 0xff000000, 8, "LACNIC" }, { 0xb2000000, 0xff000000, 8, "RIPENCC" }, { 0xb3000000, 0xff000000, 8, "LACNIC" }, { 0xb4000000, 0xff000000, 8, "APNIC" }, { 0xb5000000, 0xff000000, 8, "LACNIC" }, { 0xb6000000, 0xfe000000, 7, "APNIC" }, { 0xb8000000, 0xff000000, 8, "ARIN" }, { 0xb9000000, 0xff000000, 8, "RIPENCC" }, { 0xba000000, 0xfe000000, 7, "LACNIC" }, { 0xbc000000, 0xff000000, 8, "RIPENCC" }, { 0xbd000000, 0xff000000, 8, "LACNIC" }, { 0xbe000000, 0xff000000, 8, "LACNIC" }, { 0xbf000000, 0xff000000, 8, "ARIN" }, { 0xbf600000, 0xffff0000, 16, "LACNIC" }, { 0xbf620000, 0xffff8000, 17, "LACNIC" }, { 0xbf680000, 0xfff80000, 13, "LACNIC" }, { 0xbf740000, 0xfffc0000, 14, "LACNIC" }, { 0xbf7c0000, 0xfffc0000, 14, "LACNIC" }, { 0xbfa00000, 0xffe00000, 11, "LACNIC" }, { 0xbfe00000, 0xfff00000, 12, "LACNIC" }, { 0xbff00000, 0xffff0000, 16, "LACNIC" }, { 0xbff10000, 0xfffff000, 20, "LACNIC" }, { 0xbff11000, 0xfffffc00, 22, "LACNIC" }, { 0xbff11800, 0xfffff800, 21, "LACNIC" }, { 0xbff40000, 0xfffc0000, 14, "LACNIC" }, { 0xbff80000, 0xfffc0000, 14, "LACNIC" }, { 0xc0000000, 0xff000000, 8, "ARIN" }, { 0xc0051c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0051e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0052400, 0xffffff00, 24, "RIPENCC" }, { 0xc0053200, 0xffffff00, 24, "RIPENCC" }, { 0xc0053b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0053d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0053e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0055a00, 0xffffff00, 24, "APNIC" }, { 0xc0056100, 0xffffff00, 24, "RIPENCC" }, { 0xc0058e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0059100, 0xffffff00, 24, "RIPENCC" }, { 0xc005a200, 0xffffff00, 24, "RIPENCC" }, { 0xc005d800, 0xffffff00, 24, "APNIC" }, { 0xc005ef00, 0xffffff00, 24, "RIPENCC" }, { 0xc005f000, 0xffffff00, 24, "APNIC" }, { 0xc005fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc00c0100, 0xffffff00, 24, "RIPENCC" }, { 0xc00c2f00, 0xffffff00, 24, "RIPENCC" }, { 0xc00c3600, 0xffffff00, 24, "RIPENCC" }, { 0xc00c4800, 0xfffffe00, 23, "RIPENCC" }, { 0xc00c4c00, 0xffffff00, 24, "APNIC" }, { 0xc00c4d00, 0xffffff00, 24, "RIPENCC" }, { 0xc00c5100, 0xffffff00, 24, "RIPENCC" }, { 0xc00c6000, 0xffffff00, 24, "RIPENCC" }, { 0xc00c6300, 0xffffff00, 24, "RIPENCC" }, { 0xc00cc000, 0xfffffe00, 23, "RIPENCC" }, { 0xc00cc200, 0xffffff00, 24, "RIPENCC" }, { 0xc00cd900, 0xffffff00, 24, "RIPENCC" }, { 0xc00cda00, 0xffffff00, 24, "RIPENCC" }, { 0xc00ce700, 0xffffff00, 24, "RIPENCC" }, { 0xc00ce800, 0xffffff00, 24, "RIPENCC" }, { 0xc00ceb00, 0xffffff00, 24, "RIPENCC" }, { 0xc00cf700, 0xffffff00, 24, "RIPENCC" }, { 0xc0107b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0107c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0108000, 0xfffff000, 20, "RIPENCC" }, { 0xc0109000, 0xfffff800, 21, "RIPENCC" }, { 0xc0109800, 0xfffffc00, 22, "RIPENCC" }, { 0xc010b200, 0xfffffe00, 23, "APNIC" }, { 0xc010b400, 0xffffff00, 24, "APNIC" }, { 0xc010b700, 0xffffff00, 24, "RIPENCC" }, { 0xc010b800, 0xfffff800, 21, "RIPENCC" }, { 0xc010c000, 0xfffff800, 21, "RIPENCC" }, { 0xc010c800, 0xfffffe00, 23, "RIPENCC" }, { 0xc010ca00, 0xffffff00, 24, "RIPENCC" }, { 0xc012c300, 0xffffff00, 24, "RIPENCC" }, { 0xc01a1c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc01a2d00, 0xffffff00, 24, "RIPENCC" }, { 0xc01a2e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc01a5b00, 0xffffff00, 24, "APNIC" }, { 0xc01a5d00, 0xffffff00, 24, "APNIC" }, { 0xc01a5e00, 0xffffff00, 24, "APNIC" }, { 0xc01a6000, 0xffffff00, 24, "APNIC" }, { 0xc01a6900, 0xffffff00, 24, "RIPENCC" }, { 0xc01a6a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc01a6c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc01a7000, 0xfffff000, 20, "RIPENCC" }, { 0xc01a8000, 0xffffff00, 24, "RIPENCC" }, { 0xc01a8500, 0xffffff00, 24, "RIPENCC" }, { 0xc01a8600, 0xfffffe00, 23, "RIPENCC" }, { 0xc01a9a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc01aae00, 0xfffffe00, 23, "RIPENCC" }, { 0xc01ad800, 0xfffff800, 21, "APNIC" }, { 0xc01ae000, 0xfffffc00, 22, "APNIC" }, { 0xc01ae400, 0xfffffe00, 23, "APNIC" }, { 0xc01ae600, 0xffffff00, 24, "APNIC" }, { 0xc01ae700, 0xffffff00, 24, "RIPENCC" }, { 0xc01ae800, 0xffffff00, 24, "APNIC" }, { 0xc01aea00, 0xffffff00, 24, "RIPENCC" }, { 0xc01aec00, 0xfffffc00, 22, "RIPENCC" }, { 0xc01f0e00, 0xffffff00, 24, "RIPENCC" }, { 0xc01f1700, 0xffffff00, 24, "RIPENCC" }, { 0xc01f1a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc01f1f00, 0xffffff00, 24, "RIPENCC" }, { 0xc01f2800, 0xffffff00, 24, "RIPENCC" }, { 0xc01f3e00, 0xffffff00, 24, "RIPENCC" }, { 0xc01f6600, 0xffffff00, 24, "RIPENCC" }, { 0xc01f7400, 0xfffffc00, 22, "APNIC" }, { 0xc01f7800, 0xfffffc00, 22, "APNIC" }, { 0xc01f7c00, 0xffffff00, 24, "APNIC" }, { 0xc01fa600, 0xfffffe00, 23, "RIPENCC" }, { 0xc01fa800, 0xfffffc00, 22, "RIPENCC" }, { 0xc01fc500, 0xffffff00, 24, "APNIC" }, { 0xc01fc600, 0xfffffe00, 23, "APNIC" }, { 0xc01fc800, 0xfffffc00, 22, "APNIC" }, { 0xc01fcc00, 0xfffffe00, 23, "APNIC" }, { 0xc01fce00, 0xffffff00, 24, "APNIC" }, { 0xc01fd300, 0xffffff00, 24, "RIPENCC" }, { 0xc01fe700, 0xffffff00, 24, "RIPENCC" }, { 0xc01ffc00, 0xffffff00, 24, "RIPENCC" }, { 0xc0210a00, 0xffffff00, 24, "AFRINIC" }, { 0xc0210f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0211000, 0xffffff00, 24, "RIPENCC" }, { 0xc0212400, 0xffffff00, 24, "RIPENCC" }, { 0xc0215700, 0xffffff00, 24, "RIPENCC" }, { 0xc0215800, 0xfffff800, 21, "RIPENCC" }, { 0xc0216000, 0xfffff000, 20, "RIPENCC" }, { 0xc0217100, 0xffffff00, 24, "RIPENCC" }, { 0xc0217200, 0xffffff00, 24, "RIPENCC" }, { 0xc0217600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0217800, 0xfffff800, 21, "RIPENCC" }, { 0xc0218200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0218700, 0xffffff00, 24, "APNIC" }, { 0xc0218f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0219000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0219300, 0xffffff00, 24, "RIPENCC" }, { 0xc0219400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0219800, 0xfffff800, 21, "RIPENCC" }, { 0xc021a000, 0xfffffc00, 22, "RIPENCC" }, { 0xc021a400, 0xfffffe00, 23, "RIPENCC" }, { 0xc021a600, 0xffffff00, 24, "RIPENCC" }, { 0xc021a900, 0xffffff00, 24, "RIPENCC" }, { 0xc021aa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc021b000, 0xfffffc00, 22, "RIPENCC" }, { 0xc021b400, 0xfffffe00, 23, "RIPENCC" }, { 0xc021b600, 0xffffff00, 24, "RIPENCC" }, { 0xc021c000, 0xffffe000, 19, "RIPENCC" }, { 0xc021fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0221300, 0xffffff00, 24, "RIPENCC" }, { 0xc0223200, 0xffffff00, 24, "RIPENCC" }, { 0xc0226b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0227400, 0xffffff00, 24, "RIPENCC" }, { 0xc022b300, 0xffffff00, 24, "RIPENCC" }, { 0xc0230000, 0xfffff000, 20, "RIPENCC" }, { 0xc0233b00, 0xffffff00, 24, "APNIC" }, { 0xc0233f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0234000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0235a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0235e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0236c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0238a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0239200, 0xffffff00, 24, "RIPENCC" }, { 0xc0239500, 0xffffff00, 24, "RIPENCC" }, { 0xc0239600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0239800, 0xfffffe00, 23, "RIPENCC" }, { 0xc023ac00, 0xffffff00, 24, "RIPENCC" }, { 0xc023b700, 0xffffff00, 24, "RIPENCC" }, { 0xc023c500, 0xffffff00, 24, "RIPENCC" }, { 0xc023c600, 0xffffff00, 24, "RIPENCC" }, { 0xc023cd00, 0xffffff00, 24, "RIPENCC" }, { 0xc023ce00, 0xfffffe00, 23, "RIPENCC" }, { 0xc023e500, 0xffffff00, 24, "RIPENCC" }, { 0xc023f000, 0xfffffc00, 22, "RIPENCC" }, { 0xc023f400, 0xffffff00, 24, "RIPENCC" }, { 0xc023f600, 0xfffffe00, 23, "RIPENCC" }, { 0xc023f800, 0xffffff00, 24, "APNIC" }, { 0xc0240000, 0xfffe0000, 15, "RIPENCC" }, { 0xc0260000, 0xffff0000, 16, "RIPENCC" }, { 0xc0284500, 0xffffff00, 24, "RIPENCC" }, { 0xc0284600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0284800, 0xfffff800, 21, "RIPENCC" }, { 0xc0285000, 0xffffff00, 24, "RIPENCC" }, { 0xc028e400, 0xffffff00, 24, "RIPENCC" }, { 0xc0296700, 0xffffff00, 24, "RIPENCC" }, { 0xc0296800, 0xfffff800, 21, "RIPENCC" }, { 0xc0297000, 0xfffff000, 20, "RIPENCC" }, { 0xc0298000, 0xfffff800, 21, "RIPENCC" }, { 0xc0298c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0299200, 0xffffff00, 24, "APNIC" }, { 0xc0299300, 0xffffff00, 24, "RIPENCC" }, { 0xc0299500, 0xffffff00, 24, "RIPENCC" }, { 0xc029aa00, 0xffffff00, 24, "APNIC" }, { 0xc029b200, 0xfffffe00, 23, "APNIC" }, { 0xc029b400, 0xfffffc00, 22, "APNIC" }, { 0xc029b800, 0xfffff800, 21, "APNIC" }, { 0xc029c000, 0xfffffc00, 22, "APNIC" }, { 0xc029c400, 0xfffffe00, 23, "APNIC" }, { 0xc029cb00, 0xffffff00, 24, "APNIC" }, { 0xc029ce00, 0xffffff00, 24, "APNIC" }, { 0xc029d200, 0xffffff00, 24, "RIPENCC" }, { 0xc029d800, 0xffffff00, 24, "RIPENCC" }, { 0xc029da00, 0xffffff00, 24, "RIPENCC" }, { 0xc029e300, 0xffffff00, 24, "RIPENCC" }, { 0xc02a0100, 0xffffff00, 24, "RIPENCC" }, { 0xc02a2a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc02a3500, 0xffffff00, 24, "RIPENCC" }, { 0xc02a3c00, 0xfffffe00, 23, "APNIC" }, { 0xc02a3e00, 0xffffff00, 24, "APNIC" }, { 0xc02a3f00, 0xffffff00, 24, "RIPENCC" }, { 0xc02a4000, 0xfffffe00, 23, "RIPENCC" }, { 0xc02a5700, 0xffffff00, 24, "RIPENCC" }, { 0xc02a6300, 0xffffff00, 24, "AFRINIC" }, { 0xc02a6400, 0xffffff00, 24, "RIPENCC" }, { 0xc02a6600, 0xffffff00, 24, "RIPENCC" }, { 0xc02a6700, 0xffffff00, 24, "APNIC" }, { 0xc02a6800, 0xfffffc00, 22, "APNIC" }, { 0xc02a7100, 0xffffff00, 24, "RIPENCC" }, { 0xc02a7200, 0xfffffe00, 23, "RIPENCC" }, { 0xc02a7400, 0xfffffc00, 22, "RIPENCC" }, { 0xc02a7b00, 0xffffff00, 24, "RIPENCC" }, { 0xc02a7c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc02a8000, 0xfffffc00, 22, "RIPENCC" }, { 0xc02a8f00, 0xffffff00, 24, "RIPENCC" }, { 0xc02a9700, 0xffffff00, 24, "APNIC" }, { 0xc02ab400, 0xfffffc00, 22, "RIPENCC" }, { 0xc02ab800, 0xfffff800, 21, "RIPENCC" }, { 0xc02ac000, 0xfffff800, 21, "RIPENCC" }, { 0xc02ac800, 0xfffffe00, 23, "RIPENCC" }, { 0xc02aed00, 0xffffff00, 24, "APNIC" }, { 0xc02afd00, 0xffffff00, 24, "RIPENCC" }, { 0xc02ba200, 0xfffffe00, 23, "RIPENCC" }, { 0xc02bb900, 0xffffff00, 24, "APNIC" }, { 0xc02bc000, 0xfffffc00, 22, "RIPENCC" }, { 0xc02bc400, 0xffffff00, 24, "RIPENCC" }, { 0xc02bc600, 0xffffff00, 24, "APNIC" }, { 0xc02bcf00, 0xffffff00, 24, "APNIC" }, { 0xc02bd000, 0xfffffe00, 23, "APNIC" }, { 0xc02bd200, 0xffffff00, 24, "RIPENCC" }, { 0xc02bd400, 0xffffff00, 24, "RIPENCC" }, { 0xc02be200, 0xfffffe00, 23, "APNIC" }, { 0xc02be400, 0xfffffe00, 23, "APNIC" }, { 0xc02bea00, 0xffffff00, 24, "RIPENCC" }, { 0xc02bef00, 0xffffff00, 24, "APNIC" }, { 0xc02c0000, 0xffffc000, 18, "RIPENCC" }, { 0xc02c4000, 0xfffffc00, 22, "RIPENCC" }, { 0xc02c4700, 0xffffff00, 24, "RIPENCC" }, { 0xc02c4800, 0xfffff800, 21, "RIPENCC" }, { 0xc02c5000, 0xfffffe00, 23, "RIPENCC" }, { 0xc02cf000, 0xfffff800, 21, "RIPENCC" }, { 0xc02cf800, 0xfffffc00, 22, "RIPENCC" }, { 0xc02f0000, 0xfffff000, 20, "APNIC" }, { 0xc02f1000, 0xfffff800, 21, "APNIC" }, { 0xc02f1800, 0xfffffc00, 22, "APNIC" }, { 0xc02f1d00, 0xffffff00, 24, "APNIC" }, { 0xc02f1e00, 0xfffffe00, 23, "APNIC" }, { 0xc02f2000, 0xfffffc00, 22, "APNIC" }, { 0xc02f2500, 0xffffff00, 24, "APNIC" }, { 0xc02f2600, 0xfffffe00, 23, "APNIC" }, { 0xc02f2800, 0xfffff800, 21, "APNIC" }, { 0xc02f3000, 0xfffff000, 20, "APNIC" }, { 0xc02f4000, 0xffffc000, 18, "APNIC" }, { 0xc02f8000, 0xffffc000, 18, "APNIC" }, { 0xc02fc000, 0xffffe000, 19, "APNIC" }, { 0xc02fe000, 0xfffff000, 20, "APNIC" }, { 0xc02ff000, 0xfffffe00, 23, "APNIC" }, { 0xc02ff400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0301f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0306b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0306d00, 0xffffff00, 24, "APNIC" }, { 0xc0306e00, 0xffffff00, 24, "APNIC" }, { 0xc0309100, 0xffffff00, 24, "RIPENCC" }, { 0xc030e000, 0xffffff00, 24, "RIPENCC" }, { 0xc030e700, 0xffffff00, 24, "RIPENCC" }, { 0xc030fd00, 0xffffff00, 24, "AFRINIC" }, { 0xc0310000, 0xfffff000, 20, "RIPENCC" }, { 0xc0311d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0311e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0314a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0320000, 0xffff0000, 16, "APNIC" }, { 0xc0330000, 0xfffff000, 20, "RIPENCC" }, { 0xc0331000, 0xfffff000, 20, "APNIC" }, { 0xc0332000, 0xfffff000, 20, "APNIC" }, { 0xc0333100, 0xffffff00, 24, "APNIC" }, { 0xc0333200, 0xfffffe00, 23, "APNIC" }, { 0xc0333400, 0xfffffc00, 22, "APNIC" }, { 0xc0333800, 0xfffff800, 21, "APNIC" }, { 0xc0334000, 0xffffc000, 18, "APNIC" }, { 0xc0338000, 0xffffe000, 19, "APNIC" }, { 0xc033a000, 0xfffff800, 21, "APNIC" }, { 0xc033a800, 0xfffffc00, 22, "APNIC" }, { 0xc033b000, 0xfffff800, 21, "APNIC" }, { 0xc033b800, 0xfffffc00, 22, "APNIC" }, { 0xc033bd00, 0xffffff00, 24, "APNIC" }, { 0xc033be00, 0xfffffe00, 23, "APNIC" }, { 0xc033c200, 0xfffffe00, 23, "APNIC" }, { 0xc033c400, 0xfffffc00, 22, "APNIC" }, { 0xc033c800, 0xfffff800, 21, "APNIC" }, { 0xc033d000, 0xfffff000, 20, "APNIC" }, { 0xc033e000, 0xfffff000, 20, "APNIC" }, { 0xc033f100, 0xffffff00, 24, "APNIC" }, { 0xc033f200, 0xfffffe00, 23, "APNIC" }, { 0xc033f400, 0xfffffc00, 22, "APNIC" }, { 0xc033f800, 0xfffffc00, 22, "APNIC" }, { 0xc033fc00, 0xfffffe00, 23, "APNIC" }, { 0xc033ff00, 0xffffff00, 24, "APNIC" }, { 0xc0340000, 0xffffe000, 19, "RIPENCC" }, { 0xc0344800, 0xfffffe00, 23, "APNIC" }, { 0xc0349800, 0xffffff00, 24, "RIPENCC" }, { 0xc0349f00, 0xffffff00, 24, "RIPENCC" }, { 0xc034a000, 0xfffffe00, 23, "RIPENCC" }, { 0xc034ab00, 0xffffff00, 24, "APNIC" }, { 0xc034ac00, 0xfffffc00, 22, "APNIC" }, { 0xc034b000, 0xffffff00, 24, "APNIC" }, { 0xc034dd00, 0xffffff00, 24, "RIPENCC" }, { 0xc034de00, 0xfffffe00, 23, "RIPENCC" }, { 0xc034e800, 0xffffff00, 24, "AFRINIC" }, { 0xc034fd00, 0xffffff00, 24, "RIPENCC" }, { 0xc034fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0356700, 0xffffff00, 24, "RIPENCC" }, { 0xc0356800, 0xffffff00, 24, "RIPENCC" }, { 0xc0361f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0362000, 0xfffff000, 20, "RIPENCC" }, { 0xc0363000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0363400, 0xffffff00, 24, "RIPENCC" }, { 0xc0363c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0364000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0364800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0364e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0365000, 0xffffff00, 24, "RIPENCC" }, { 0xc0366800, 0xffffff00, 24, "RIPENCC" }, { 0xc0366900, 0xffffff00, 24, "APNIC" }, { 0xc0366a00, 0xffffff00, 24, "APNIC" }, { 0xc0367100, 0xffffff00, 24, "RIPENCC" }, { 0xc0367300, 0xffffff00, 24, "RIPENCC" }, { 0xc0367400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0367800, 0xffffff00, 24, "RIPENCC" }, { 0xc0367a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0367d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0368200, 0xffffff00, 24, "APNIC" }, { 0xc0368400, 0xffffff00, 24, "RIPENCC" }, { 0xc0368700, 0xffffff00, 24, "APNIC" }, { 0xc0368b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0368d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0368e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0369000, 0xfffff000, 20, "RIPENCC" }, { 0xc036a000, 0xffffe000, 19, "RIPENCC" }, { 0xc036c000, 0xfffff000, 20, "RIPENCC" }, { 0xc036d000, 0xfffff800, 21, "RIPENCC" }, { 0xc036d800, 0xfffffc00, 22, "RIPENCC" }, { 0xc036dc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc036e100, 0xffffff00, 24, "RIPENCC" }, { 0xc036f500, 0xffffff00, 24, "RIPENCC" }, { 0xc036fb00, 0xffffff00, 24, "APNIC" }, { 0xc036fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0375400, 0xffffff00, 24, "RIPENCC" }, { 0xc0375900, 0xffffff00, 24, "RIPENCC" }, { 0xc0376200, 0xfffffe00, 23, "APNIC" }, { 0xc0376500, 0xffffff00, 24, "RIPENCC" }, { 0xc0376900, 0xffffff00, 24, "RIPENCC" }, { 0xc0376d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0377000, 0xffffff00, 24, "APNIC" }, { 0xc0377300, 0xffffff00, 24, "RIPENCC" }, { 0xc0377600, 0xffffff00, 24, "APNIC" }, { 0xc0378100, 0xffffff00, 24, "RIPENCC" }, { 0xc0378400, 0xffffff00, 24, "RIPENCC" }, { 0xc037bc00, 0xffffff00, 24, "RIPENCC" }, { 0xc037be00, 0xffffff00, 24, "APNIC" }, { 0xc037c100, 0xffffff00, 24, "RIPENCC" }, { 0xc037c500, 0xffffff00, 24, "RIPENCC" }, { 0xc037c600, 0xffffff00, 24, "APNIC" }, { 0xc037d400, 0xffffff00, 24, "RIPENCC" }, { 0xc037db00, 0xffffff00, 24, "APNIC" }, { 0xc037dc00, 0xffffff00, 24, "APNIC" }, { 0xc037e800, 0xffffff00, 24, "APNIC" }, { 0xc037f400, 0xffffff00, 24, "RIPENCC" }, { 0xc03a0900, 0xffffff00, 24, "APNIC" }, { 0xc03a0a00, 0xfffffe00, 23, "APNIC" }, { 0xc03a0c00, 0xfffffc00, 22, "APNIC" }, { 0xc03a1000, 0xfffffe00, 23, "APNIC" }, { 0xc03a1200, 0xffffff00, 24, "APNIC" }, { 0xc03a1c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc03a2000, 0xfffffc00, 22, "RIPENCC" }, { 0xc03a2900, 0xffffff00, 24, "RIPENCC" }, { 0xc03a8500, 0xffffff00, 24, "APNIC" }, { 0xc03a8600, 0xfffffe00, 23, "APNIC" }, { 0xc03a8800, 0xffffff00, 24, "APNIC" }, { 0xc03ac500, 0xffffff00, 24, "RIPENCC" }, { 0xc03ada00, 0xffffff00, 24, "RIPENCC" }, { 0xc0401c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0402c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0406400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0407d00, 0xffffff00, 24, "RIPENCC" }, { 0xc040ca00, 0xffffff00, 24, "RIPENCC" }, { 0xc0413300, 0xffffff00, 24, "RIPENCC" }, { 0xc0413400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0413800, 0xfffff800, 21, "RIPENCC" }, { 0xc0414000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0414400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0414600, 0xffffff00, 24, "RIPENCC" }, { 0xc0415200, 0xfffffe00, 23, "APNIC" }, { 0xc0415400, 0xfffffc00, 22, "APNIC" }, { 0xc0415800, 0xfffffc00, 22, "APNIC" }, { 0xc0415c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0415e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0416000, 0xffffff00, 24, "RIPENCC" }, { 0xc0418200, 0xffffff00, 24, "APNIC" }, { 0xc0418300, 0xffffff00, 24, "RIPENCC" }, { 0xc0418400, 0xffffff00, 24, "RIPENCC" }, { 0xc0418b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0419000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0419200, 0xffffff00, 24, "RIPENCC" }, { 0xc0419800, 0xffffff00, 24, "LACNIC" }, { 0xc0419900, 0xffffff00, 24, "RIPENCC" }, { 0xc041b600, 0xffffff00, 24, "APNIC" }, { 0xc041b700, 0xffffff00, 24, "RIPENCC" }, { 0xc041d900, 0xffffff00, 24, "APNIC" }, { 0xc041db00, 0xffffff00, 24, "RIPENCC" }, { 0xc041dc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0420000, 0xfffff000, 20, "RIPENCC" }, { 0xc0421000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0421400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0422900, 0xffffff00, 24, "RIPENCC" }, { 0xc0422a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0422c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0423000, 0xfffff000, 20, "RIPENCC" }, { 0xc0424000, 0xfffff000, 20, "RIPENCC" }, { 0xc0425000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0425400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0425f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0426000, 0xfffff800, 21, "RIPENCC" }, { 0xc0427400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0427800, 0xfffff800, 21, "RIPENCC" }, { 0xc0428500, 0xffffff00, 24, "RIPENCC" }, { 0xc0428600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0429600, 0xfffffe00, 23, "RIPENCC" }, { 0xc042a600, 0xfffffe00, 23, "RIPENCC" }, { 0xc042ba00, 0xfffffe00, 23, "RIPENCC" }, { 0xc042c800, 0xfffff800, 21, "RIPENCC" }, { 0xc042d000, 0xfffff000, 20, "RIPENCC" }, { 0xc042e000, 0xffffe000, 19, "RIPENCC" }, { 0xc0430300, 0xffffff00, 24, "RIPENCC" }, { 0xc0430400, 0xffffff00, 24, "RIPENCC" }, { 0xc0430c00, 0xffffff00, 24, "APNIC" }, { 0xc0432700, 0xffffff00, 24, "RIPENCC" }, { 0xc0432b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0432f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0433200, 0xffffff00, 24, "RIPENCC" }, { 0xc0433400, 0xffffff00, 24, "RIPENCC" }, { 0xc0433700, 0xffffff00, 24, "RIPENCC" }, { 0xc0433a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0434c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0434f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0435400, 0xffffff00, 24, "APNIC" }, { 0xc0435700, 0xffffff00, 24, "RIPENCC" }, { 0xc0435e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0436400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0436800, 0xffffff00, 24, "RIPENCC" }, { 0xc0438700, 0xffffff00, 24, "RIPENCC" }, { 0xc043a700, 0xffffff00, 24, "RIPENCC" }, { 0xc043aa00, 0xffffff00, 24, "RIPENCC" }, { 0xc043ab00, 0xffffff00, 24, "APNIC" }, { 0xc043bd00, 0xffffff00, 24, "RIPENCC" }, { 0xc043be00, 0xfffffe00, 23, "RIPENCC" }, { 0xc043c000, 0xfffffc00, 22, "RIPENCC" }, { 0xc043c500, 0xffffff00, 24, "RIPENCC" }, { 0xc043c600, 0xfffffe00, 23, "RIPENCC" }, { 0xc043c800, 0xfffff800, 21, "RIPENCC" }, { 0xc043d000, 0xffffff00, 24, "RIPENCC" }, { 0xc043da00, 0xffffff00, 24, "RIPENCC" }, { 0xc043dc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc043df00, 0xffffff00, 24, "RIPENCC" }, { 0xc043f800, 0xffffff00, 24, "APNIC" }, { 0xc043f900, 0xffffff00, 24, "RIPENCC" }, { 0xc0440000, 0xfffff000, 20, "RIPENCC" }, { 0xc0441000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0441700, 0xffffff00, 24, "RIPENCC" }, { 0xc0441f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0443300, 0xffffff00, 24, "RIPENCC" }, { 0xc0444c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0448400, 0xffffff00, 24, "APNIC" }, { 0xc0448a00, 0xffffff00, 24, "AFRINIC" }, { 0xc0449700, 0xffffff00, 24, "RIPENCC" }, { 0xc0449800, 0xfffffe00, 23, "RIPENCC" }, { 0xc044a500, 0xffffff00, 24, "RIPENCC" }, { 0xc044aa00, 0xffffff00, 24, "RIPENCC" }, { 0xc044ab00, 0xffffff00, 24, "APNIC" }, { 0xc044ac00, 0xffffff00, 24, "APNIC" }, { 0xc044ae00, 0xffffff00, 24, "RIPENCC" }, { 0xc044b000, 0xffffff00, 24, "RIPENCC" }, { 0xc044b600, 0xffffff00, 24, "RIPENCC" }, { 0xc044ba00, 0xffffff00, 24, "RIPENCC" }, { 0xc044d100, 0xffffff00, 24, "RIPENCC" }, { 0xc044d300, 0xffffff00, 24, "RIPENCC" }, { 0xc044d800, 0xffffff00, 24, "RIPENCC" }, { 0xc044dd00, 0xffffff00, 24, "RIPENCC" }, { 0xc044e000, 0xffffff00, 24, "RIPENCC" }, { 0xc044e600, 0xffffff00, 24, "RIPENCC" }, { 0xc044eb00, 0xffffff00, 24, "APNIC" }, { 0xc044ec00, 0xfffffc00, 22, "APNIC" }, { 0xc044f000, 0xfffff800, 21, "APNIC" }, { 0xc044f800, 0xfffffe00, 23, "APNIC" }, { 0xc044fa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc044fc00, 0xffffff00, 24, "RIPENCC" }, { 0xc044fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0460000, 0xffffc000, 18, "RIPENCC" }, { 0xc0465c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0466100, 0xffffff00, 24, "RIPENCC" }, { 0xc0467200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0467400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0468500, 0xffffff00, 24, "RIPENCC" }, { 0xc0468600, 0xffffff00, 24, "RIPENCC" }, { 0xc0468700, 0xffffff00, 24, "APNIC" }, { 0xc0468800, 0xffffff00, 24, "RIPENCC" }, { 0xc0468c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0469000, 0xfffff000, 20, "RIPENCC" }, { 0xc046ae00, 0xffffff00, 24, "APNIC" }, { 0xc046b300, 0xffffff00, 24, "APNIC" }, { 0xc046b400, 0xfffffe00, 23, "APNIC" }, { 0xc046d800, 0xffffff00, 24, "APNIC" }, { 0xc046db00, 0xffffff00, 24, "APNIC" }, { 0xc046ed00, 0xffffff00, 24, "AFRINIC" }, { 0xc046f200, 0xffffff00, 24, "RIPENCC" }, { 0xc0470000, 0xffff0000, 16, "RIPENCC" }, { 0xc0480300, 0xffffff00, 24, "APNIC" }, { 0xc0480400, 0xfffffc00, 22, "APNIC" }, { 0xc0480800, 0xfffff800, 21, "APNIC" }, { 0xc0481000, 0xfffff000, 20, "APNIC" }, { 0xc0482000, 0xffffe000, 19, "APNIC" }, { 0xc0484000, 0xffffc000, 18, "APNIC" }, { 0xc0488000, 0xffffc000, 18, "APNIC" }, { 0xc048c000, 0xffffe000, 19, "APNIC" }, { 0xc048e000, 0xfffff000, 20, "APNIC" }, { 0xc048f000, 0xfffff800, 21, "APNIC" }, { 0xc048f800, 0xfffffc00, 22, "APNIC" }, { 0xc048fc00, 0xffffff00, 24, "APNIC" }, { 0xc0490c00, 0xffffff00, 24, "APNIC" }, { 0xc0491300, 0xffffff00, 24, "RIPENCC" }, { 0xc0491400, 0xffffff00, 24, "RIPENCC" }, { 0xc0491500, 0xffffff00, 24, "APNIC" }, { 0xc0491600, 0xffffff00, 24, "APNIC" }, { 0xc0491800, 0xfffffe00, 23, "APNIC" }, { 0xc0492200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0492400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0492800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0492c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0494200, 0xffffff00, 24, "APNIC" }, { 0xc049e200, 0xffffff00, 24, "RIPENCC" }, { 0xc049e500, 0xffffff00, 24, "RIPENCC" }, { 0xc04a8b00, 0xffffff00, 24, "APNIC" }, { 0xc04a8c00, 0xfffffc00, 22, "APNIC" }, { 0xc04a9000, 0xfffff000, 20, "APNIC" }, { 0xc04aa000, 0xffffe000, 19, "APNIC" }, { 0xc04ac000, 0xfffff000, 20, "APNIC" }, { 0xc04ad000, 0xffffff00, 24, "APNIC" }, { 0xc04c0600, 0xfffffe00, 23, "RIPENCC" }, { 0xc04c1700, 0xffffff00, 24, "RIPENCC" }, { 0xc04c1800, 0xfffff800, 21, "RIPENCC" }, { 0xc04c7a00, 0xffffff00, 24, "APNIC" }, { 0xc04c7b00, 0xffffff00, 24, "RIPENCC" }, { 0xc04c7c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc04c8000, 0xfffffc00, 22, "RIPENCC" }, { 0xc04c8400, 0xffffff00, 24, "RIPENCC" }, { 0xc04c8600, 0xfffffe00, 23, "RIPENCC" }, { 0xc04c8800, 0xfffff800, 21, "RIPENCC" }, { 0xc04c9000, 0xfffff000, 20, "RIPENCC" }, { 0xc04ca000, 0xfffffc00, 22, "RIPENCC" }, { 0xc04ca400, 0xfffffe00, 23, "RIPENCC" }, { 0xc04caa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc04cac00, 0xffffff00, 24, "RIPENCC" }, { 0xc04cb000, 0xffffff00, 24, "RIPENCC" }, { 0xc04cf100, 0xffffff00, 24, "RIPENCC" }, { 0xc04cf200, 0xfffffe00, 23, "RIPENCC" }, { 0xc04cf400, 0xfffffc00, 22, "RIPENCC" }, { 0xc04cf800, 0xffffff00, 24, "RIPENCC" }, { 0xc04d0b00, 0xffffff00, 24, "RIPENCC" }, { 0xc04d7200, 0xfffffe00, 23, "RIPENCC" }, { 0xc04d7800, 0xfffffc00, 22, "RIPENCC" }, { 0xc04d8400, 0xfffffc00, 22, "RIPENCC" }, { 0xc04d8c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0501400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0501800, 0xffffff00, 24, "LACNIC" }, { 0xc0501f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0502000, 0xfffff800, 21, "RIPENCC" }, { 0xc0502800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0502a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0502e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0503300, 0xffffff00, 24, "RIPENCC" }, { 0xc050d100, 0xffffff00, 24, "LACNIC" }, { 0xc0513b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0513d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0516d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0517900, 0xffffff00, 24, "RIPENCC" }, { 0xc0517b00, 0xffffff00, 24, "RIPENCC" }, { 0xc051a000, 0xffffff00, 24, "RIPENCC" }, { 0xc051b600, 0xfffffe00, 23, "RIPENCC" }, { 0xc051c200, 0xffffff00, 24, "RIPENCC" }, { 0xc051e600, 0xffffff00, 24, "RIPENCC" }, { 0xc051ea00, 0xffffff00, 24, "RIPENCC" }, { 0xc0527900, 0xffffff00, 24, "RIPENCC" }, { 0xc0527c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0527f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0528c00, 0xffffff00, 24, "APNIC" }, { 0xc0528e00, 0xffffff00, 24, "AFRINIC" }, { 0xc0528f00, 0xffffff00, 24, "APNIC" }, { 0xc0529900, 0xffffff00, 24, "RIPENCC" }, { 0xc0529d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0529e00, 0xffffff00, 24, "RIPENCC" }, { 0xc052a100, 0xffffff00, 24, "APNIC" }, { 0xc052d600, 0xffffff00, 24, "RIPENCC" }, { 0xc052dc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc052de00, 0xffffff00, 24, "APNIC" }, { 0xc052f100, 0xffffff00, 24, "RIPENCC" }, { 0xc0530000, 0xffffc000, 18, "RIPENCC" }, { 0xc0536600, 0xffffff00, 24, "RIPENCC" }, { 0xc0537600, 0xfffffe00, 23, "APNIC" }, { 0xc0537b00, 0xffffff00, 24, "APNIC" }, { 0xc053a000, 0xffffff00, 24, "RIPENCC" }, { 0xc053a500, 0xffffff00, 24, "RIPENCC" }, { 0xc053a600, 0xfffffe00, 23, "APNIC" }, { 0xc053a800, 0xfffff800, 21, "APNIC" }, { 0xc053b000, 0xfffff000, 20, "APNIC" }, { 0xc053c000, 0xfffffc00, 22, "APNIC" }, { 0xc053c400, 0xffffff00, 24, "APNIC" }, { 0xc053c600, 0xffffff00, 24, "APNIC" }, { 0xc053c800, 0xffffff00, 24, "RIPENCC" }, { 0xc053ca00, 0xffffff00, 24, "RIPENCC" }, { 0xc053da00, 0xfffffe00, 23, "APNIC" }, { 0xc053df00, 0xffffff00, 24, "RIPENCC" }, { 0xc053e000, 0xffffff00, 24, "APNIC" }, { 0xc053e500, 0xffffff00, 24, "RIPENCC" }, { 0xc053e700, 0xffffff00, 24, "APNIC" }, { 0xc053ed00, 0xffffff00, 24, "APNIC" }, { 0xc053ee00, 0xffffff00, 24, "APNIC" }, { 0xc0540500, 0xffffff00, 24, "RIPENCC" }, { 0xc0540c00, 0xffffff00, 24, "LACNIC" }, { 0xc0540d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0540f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0541b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0541e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0542000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0543e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0544b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0544c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0545000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0545400, 0xffffff00, 24, "RIPENCC" }, { 0xc0545700, 0xffffff00, 24, "RIPENCC" }, { 0xc0545900, 0xffffff00, 24, "APNIC" }, { 0xc0545a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0545c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0546000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0546500, 0xffffff00, 24, "RIPENCC" }, { 0xc0546600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0546800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0546c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0547f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0548000, 0xfffff000, 20, "RIPENCC" }, { 0xc0549000, 0xfffff800, 21, "RIPENCC" }, { 0xc0549800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0549c00, 0xffffff00, 24, "RIPENCC" }, { 0xc054a600, 0xffffff00, 24, "RIPENCC" }, { 0xc054ad00, 0xffffff00, 24, "RIPENCC" }, { 0xc054b000, 0xfffff000, 20, "RIPENCC" }, { 0xc054cb00, 0xffffff00, 24, "RIPENCC" }, { 0xc054cc00, 0xfffffc00, 22, "RIPENCC" }, { 0xc054d400, 0xffffff00, 24, "RIPENCC" }, { 0xc054db00, 0xffffff00, 24, "APNIC" }, { 0xc054dc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc054e200, 0xfffffe00, 23, "RIPENCC" }, { 0xc054e400, 0xfffffe00, 23, "RIPENCC" }, { 0xc054e600, 0xffffff00, 24, "APNIC" }, { 0xc054ed00, 0xffffff00, 24, "APNIC" }, { 0xc054ee00, 0xffffff00, 24, "APNIC" }, { 0xc054f200, 0xffffff00, 24, "APNIC" }, { 0xc054f400, 0xffffff00, 24, "AFRINIC" }, { 0xc054f500, 0xffffff00, 24, "RIPENCC" }, { 0xc054f600, 0xfffffe00, 23, "RIPENCC" }, { 0xc054fd00, 0xffffff00, 24, "APNIC" }, { 0xc0560b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0560e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0561200, 0xffffff00, 24, "RIPENCC" }, { 0xc0561900, 0xffffff00, 24, "RIPENCC" }, { 0xc0561b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0565900, 0xffffff00, 24, "RIPENCC" }, { 0xc0567d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0567e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0568600, 0xffffff00, 24, "RIPENCC" }, { 0xc0568900, 0xffffff00, 24, "RIPENCC" }, { 0xc0568a00, 0xffffff00, 24, "RIPENCC" }, { 0xc056a300, 0xffffff00, 24, "RIPENCC" }, { 0xc056a500, 0xffffff00, 24, "APNIC" }, { 0xc056a600, 0xfffffe00, 23, "RIPENCC" }, { 0xc056a900, 0xffffff00, 24, "RIPENCC" }, { 0xc056fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0570000, 0xffff0000, 16, "RIPENCC" }, { 0xc0580100, 0xffffff00, 24, "RIPENCC" }, { 0xc0580400, 0xffffff00, 24, "RIPENCC" }, { 0xc0580600, 0xfffffe00, 23, "APNIC" }, { 0xc0580900, 0xffffff00, 24, "RIPENCC" }, { 0xc0580a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0581100, 0xffffff00, 24, "RIPENCC" }, { 0xc0581700, 0xffffff00, 24, "RIPENCC" }, { 0xc0581800, 0xffffff00, 24, "RIPENCC" }, { 0xc0585300, 0xffffff00, 24, "RIPENCC" }, { 0xc0585400, 0xffffff00, 24, "RIPENCC" }, { 0xc0585500, 0xffffff00, 24, "APNIC" }, { 0xc0585600, 0xffffff00, 24, "RIPENCC" }, { 0xc0586100, 0xffffff00, 24, "RIPENCC" }, { 0xc0586200, 0xffffff00, 24, "RIPENCC" }, { 0xc0586c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0587600, 0xffffff00, 24, "RIPENCC" }, { 0xc0587b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0588000, 0xffffff00, 24, "RIPENCC" }, { 0xc0588200, 0xffffff00, 24, "RIPENCC" }, { 0xc0588500, 0xffffff00, 24, "RIPENCC" }, { 0xc058bb00, 0xffffff00, 24, "APNIC" }, { 0xc058be00, 0xffffff00, 24, "APNIC" }, { 0xc058c400, 0xffffff00, 24, "RIPENCC" }, { 0xc058cc00, 0xffffff00, 24, "RIPENCC" }, { 0xc058ee00, 0xfffffe00, 23, "RIPENCC" }, { 0xc058fa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc058fc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc058fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0590000, 0xffff0000, 16, "RIPENCC" }, { 0xc05b8c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc05bb100, 0xffffff00, 24, "RIPENCC" }, { 0xc05bb300, 0xffffff00, 24, "APNIC" }, { 0xc05bb900, 0xffffff00, 24, "APNIC" }, { 0xc05bba00, 0xffffff00, 24, "RIPENCC" }, { 0xc05bbd00, 0xffffff00, 24, "RIPENCC" }, { 0xc05bbf00, 0xffffff00, 24, "RIPENCC" }, { 0xc05bc700, 0xffffff00, 24, "RIPENCC" }, { 0xc05bc900, 0xffffff00, 24, "RIPENCC" }, { 0xc05bd300, 0xffffff00, 24, "RIPENCC" }, { 0xc05bd600, 0xfffffe00, 23, "RIPENCC" }, { 0xc05bd800, 0xfffff800, 21, "RIPENCC" }, { 0xc05be000, 0xfffff800, 21, "RIPENCC" }, { 0xc05be800, 0xfffffe00, 23, "RIPENCC" }, { 0xc05bec00, 0xfffffc00, 22, "RIPENCC" }, { 0xc05bf700, 0xffffff00, 24, "RIPENCC" }, { 0xc05c5600, 0xffffff00, 24, "RIPENCC" }, { 0xc05c5e00, 0xffffff00, 24, "RIPENCC" }, { 0xc05c6800, 0xfffffe00, 23, "RIPENCC" }, { 0xc05c6c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc05c7400, 0xffffff00, 24, "RIPENCC" }, { 0xc05c7d00, 0xffffff00, 24, "RIPENCC" }, { 0xc05c7e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc05c8000, 0xfffff800, 21, "RIPENCC" }, { 0xc05c8800, 0xfffffc00, 22, "RIPENCC" }, { 0xc05c8d00, 0xffffff00, 24, "RIPENCC" }, { 0xc05c8e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc05c9000, 0xfffff800, 21, "RIPENCC" }, { 0xc05c9800, 0xfffffe00, 23, "RIPENCC" }, { 0xc05c9b00, 0xffffff00, 24, "RIPENCC" }, { 0xc05c9c00, 0xffffff00, 24, "RIPENCC" }, { 0xc05cd800, 0xffffff00, 24, "RIPENCC" }, { 0xc05d0000, 0xffffc000, 18, "RIPENCC" }, { 0xc05d6900, 0xffffff00, 24, "RIPENCC" }, { 0xc05d6e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc05d7900, 0xffffff00, 24, "RIPENCC" }, { 0xc05d7a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc05d9400, 0xfffffc00, 22, "RIPENCC" }, { 0xc05d9900, 0xffffff00, 24, "RIPENCC" }, { 0xc05e1800, 0xffffff00, 24, "RIPENCC" }, { 0xc05e1c00, 0xffffff00, 24, "RIPENCC" }, { 0xc05e2900, 0xffffff00, 24, "APNIC" }, { 0xc05e3900, 0xffffff00, 24, "RIPENCC" }, { 0xc05e3a00, 0xffffff00, 24, "RIPENCC" }, { 0xc05e3d00, 0xffffff00, 24, "AFRINIC" }, { 0xc05e3e00, 0xfffffe00, 23, "APNIC" }, { 0xc05e4000, 0xffffff00, 24, "APNIC" }, { 0xc05e4300, 0xffffff00, 24, "RIPENCC" }, { 0xc05e4400, 0xffffff00, 24, "RIPENCC" }, { 0xc05e4c00, 0xffffff00, 24, "RIPENCC" }, { 0xc05e6f00, 0xffffff00, 24, "RIPENCC" }, { 0xc05e7a00, 0xffffff00, 24, "APNIC" }, { 0xc05e9c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc05ea300, 0xffffff00, 24, "RIPENCC" }, { 0xc05ea900, 0xffffff00, 24, "APNIC" }, { 0xc05eac00, 0xffffff00, 24, "RIPENCC" }, { 0xc05eae00, 0xffffff00, 24, "APNIC" }, { 0xc05eaf00, 0xffffff00, 24, "RIPENCC" }, { 0xc05ed000, 0xfffffe00, 23, "APNIC" }, { 0xc05ed200, 0xffffff00, 24, "AFRINIC" }, { 0xc05ed400, 0xffffff00, 24, "RIPENCC" }, { 0xc05edd00, 0xffffff00, 24, "RIPENCC" }, { 0xc05ee200, 0xffffff00, 24, "RIPENCC" }, { 0xc05ee300, 0xffffff00, 24, "APNIC" }, { 0xc05ee900, 0xffffff00, 24, "RIPENCC" }, { 0xc05eeb00, 0xffffff00, 24, "RIPENCC" }, { 0xc05eef00, 0xffffff00, 24, "RIPENCC" }, { 0xc05ef000, 0xfffffe00, 23, "AFRINIC" }, { 0xc05ef300, 0xffffff00, 24, "APNIC" }, { 0xc05ef400, 0xffffff00, 24, "APNIC" }, { 0xc05ef600, 0xffffff00, 24, "AFRINIC" }, { 0xc0600100, 0xffffff00, 24, "AFRINIC" }, { 0xc0600200, 0xfffffe00, 23, "AFRINIC" }, { 0xc0600400, 0xfffffc00, 22, "AFRINIC" }, { 0xc0600800, 0xfffff800, 21, "AFRINIC" }, { 0xc0601000, 0xffffff00, 24, "AFRINIC" }, { 0xc0601300, 0xffffff00, 24, "AFRINIC" }, { 0xc0601400, 0xfffffe00, 23, "AFRINIC" }, { 0xc0601600, 0xffffff00, 24, "AFRINIC" }, { 0xc0601800, 0xfffff800, 21, "AFRINIC" }, { 0xc0602000, 0xfffffc00, 22, "AFRINIC" }, { 0xc0602500, 0xffffff00, 24, "AFRINIC" }, { 0xc0602600, 0xfffffe00, 23, "AFRINIC" }, { 0xc0602800, 0xffffff00, 24, "AFRINIC" }, { 0xc0602b00, 0xffffff00, 24, "AFRINIC" }, { 0xc0602d00, 0xffffff00, 24, "AFRINIC" }, { 0xc0602e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc0603000, 0xfffff800, 21, "AFRINIC" }, { 0xc0603800, 0xfffffe00, 23, "AFRINIC" }, { 0xc0603a00, 0xffffff00, 24, "AFRINIC" }, { 0xc0603c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc0604400, 0xfffffc00, 22, "AFRINIC" }, { 0xc0604800, 0xffffff00, 24, "AFRINIC" }, { 0xc0604a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc0604c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc0604f00, 0xffffff00, 24, "AFRINIC" }, { 0xc0605000, 0xfffff000, 20, "AFRINIC" }, { 0xc0606000, 0xfffffc00, 22, "AFRINIC" }, { 0xc0606400, 0xfffffe00, 23, "AFRINIC" }, { 0xc0606600, 0xffffff00, 24, "AFRINIC" }, { 0xc0606800, 0xfffff800, 21, "AFRINIC" }, { 0xc0607000, 0xfffff000, 20, "AFRINIC" }, { 0xc0608000, 0xfffffc00, 22, "AFRINIC" }, { 0xc0608400, 0xfffffe00, 23, "AFRINIC" }, { 0xc0608600, 0xffffff00, 24, "AFRINIC" }, { 0xc0608a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc0608c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc0608e00, 0xffffff00, 24, "AFRINIC" }, { 0xc0609000, 0xffffff00, 24, "AFRINIC" }, { 0xc0609200, 0xfffffe00, 23, "AFRINIC" }, { 0xc0609400, 0xfffffc00, 22, "AFRINIC" }, { 0xc0609800, 0xfffffc00, 22, "AFRINIC" }, { 0xc0609e00, 0xffffff00, 24, "AFRINIC" }, { 0xc060a400, 0xfffffc00, 22, "AFRINIC" }, { 0xc060b100, 0xffffff00, 24, "AFRINIC" }, { 0xc060b200, 0xfffffe00, 23, "AFRINIC" }, { 0xc060b400, 0xfffffc00, 22, "AFRINIC" }, { 0xc060b800, 0xfffff800, 21, "AFRINIC" }, { 0xc060c100, 0xffffff00, 24, "AFRINIC" }, { 0xc060c200, 0xfffffe00, 23, "AFRINIC" }, { 0xc060c400, 0xfffffc00, 22, "AFRINIC" }, { 0xc060e000, 0xfffff800, 21, "AFRINIC" }, { 0xc060e800, 0xffffff00, 24, "AFRINIC" }, { 0xc060ea00, 0xfffffe00, 23, "AFRINIC" }, { 0xc060ec00, 0xfffffc00, 22, "AFRINIC" }, { 0xc060f000, 0xfffffc00, 22, "AFRINIC" }, { 0xc060f500, 0xffffff00, 24, "AFRINIC" }, { 0xc060f600, 0xfffffe00, 23, "AFRINIC" }, { 0xc060f800, 0xfffffc00, 22, "AFRINIC" }, { 0xc060fc00, 0xfffffe00, 23, "AFRINIC" }, { 0xc060fe00, 0xffffff00, 24, "AFRINIC" }, { 0xc0620000, 0xffff0000, 16, "RIPENCC" }, { 0xc0640100, 0xffffff00, 24, "AFRINIC" }, { 0xc0640200, 0xffffff00, 24, "APNIC" }, { 0xc0641200, 0xffffff00, 24, "RIPENCC" }, { 0xc0641600, 0xffffff00, 24, "APNIC" }, { 0xc0641700, 0xffffff00, 24, "RIPENCC" }, { 0xc0641800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0643400, 0xffffff00, 24, "RIPENCC" }, { 0xc0643500, 0xffffff00, 24, "APNIC" }, { 0xc0643d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0643f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0644d00, 0xffffff00, 24, "APNIC" }, { 0xc0644e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0645000, 0xffffff00, 24, "APNIC" }, { 0xc0646000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0646600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0648700, 0xffffff00, 24, "RIPENCC" }, { 0xc0649000, 0xffffff00, 24, "RIPENCC" }, { 0xc0649a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0649b00, 0xffffff00, 24, "LACNIC" }, { 0xc0649c00, 0xffffff00, 24, "LACNIC" }, { 0xc0649e00, 0xfffffe00, 23, "LACNIC" }, { 0xc064a000, 0xfffff800, 21, "LACNIC" }, { 0xc064a800, 0xfffffe00, 23, "LACNIC" }, { 0xc064aa00, 0xffffff00, 24, "LACNIC" }, { 0xc064ac00, 0xfffffc00, 22, "LACNIC" }, { 0xc064b000, 0xffffff00, 24, "LACNIC" }, { 0xc064b200, 0xfffffe00, 23, "LACNIC" }, { 0xc064b400, 0xfffffe00, 23, "LACNIC" }, { 0xc064b700, 0xffffff00, 24, "LACNIC" }, { 0xc064b800, 0xfffffe00, 23, "LACNIC" }, { 0xc064bc00, 0xfffffc00, 22, "LACNIC" }, { 0xc064c000, 0xfffffc00, 22, "LACNIC" }, { 0xc064c400, 0xfffffe00, 23, "LACNIC" }, { 0xc064c700, 0xffffff00, 24, "LACNIC" }, { 0xc064c800, 0xfffffc00, 22, "LACNIC" }, { 0xc064cc00, 0xfffffe00, 23, "LACNIC" }, { 0xc064cf00, 0xffffff00, 24, "LACNIC" }, { 0xc064d000, 0xfffffc00, 22, "LACNIC" }, { 0xc064d400, 0xfffffe00, 23, "LACNIC" }, { 0xc064d800, 0xfffff800, 21, "LACNIC" }, { 0xc064e000, 0xfffffc00, 22, "LACNIC" }, { 0xc064e600, 0xfffffe00, 23, "LACNIC" }, { 0xc064e800, 0xfffff800, 21, "LACNIC" }, { 0xc064f000, 0xfffffc00, 22, "LACNIC" }, { 0xc064f400, 0xfffffe00, 23, "LACNIC" }, { 0xc064f600, 0xffffff00, 24, "LACNIC" }, { 0xc064f900, 0xffffff00, 24, "LACNIC" }, { 0xc064fa00, 0xffffff00, 24, "LACNIC" }, { 0xc0650100, 0xffffff00, 24, "RIPENCC" }, { 0xc0650400, 0xffffff00, 24, "RIPENCC" }, { 0xc0650800, 0xffffff00, 24, "RIPENCC" }, { 0xc0650b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0651000, 0xffffff00, 24, "APNIC" }, { 0xc0651c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0652200, 0xffffff00, 24, "RIPENCC" }, { 0xc0654b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0655100, 0xffffff00, 24, "RIPENCC" }, { 0xc0655200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0655400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0655800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0655a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0655b00, 0xffffff00, 24, "APNIC" }, { 0xc0657600, 0xffffff00, 24, "RIPENCC" }, { 0xc0658600, 0xffffff00, 24, "APNIC" }, { 0xc0658900, 0xffffff00, 24, "RIPENCC" }, { 0xc0658e00, 0xffffff00, 24, "AFRINIC" }, { 0xc065a100, 0xffffff00, 24, "RIPENCC" }, { 0xc065a200, 0xfffffe00, 23, "RIPENCC" }, { 0xc065a400, 0xfffffc00, 22, "RIPENCC" }, { 0xc065a800, 0xffffff00, 24, "RIPENCC" }, { 0xc065aa00, 0xffffff00, 24, "RIPENCC" }, { 0xc065b000, 0xffffff00, 24, "RIPENCC" }, { 0xc065b300, 0xffffff00, 24, "RIPENCC" }, { 0xc065b700, 0xffffff00, 24, "APNIC" }, { 0xc065c000, 0xffffff00, 24, "RIPENCC" }, { 0xc065c500, 0xffffff00, 24, "RIPENCC" }, { 0xc065c600, 0xffffff00, 24, "RIPENCC" }, { 0xc065fc00, 0xffffff00, 24, "RIPENCC" }, { 0xc065fe00, 0xffffff00, 24, "APNIC" }, { 0xc0660100, 0xffffff00, 24, "RIPENCC" }, { 0xc0660600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0660800, 0xffffff00, 24, "RIPENCC" }, { 0xc0660900, 0xffffff00, 24, "AFRINIC" }, { 0xc0661100, 0xffffff00, 24, "RIPENCC" }, { 0xc0661200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0664000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0665300, 0xffffff00, 24, "APNIC" }, { 0xc0665400, 0xffffff00, 24, "LACNIC" }, { 0xc0665900, 0xffffff00, 24, "RIPENCC" }, { 0xc0665c00, 0xffffff00, 24, "APNIC" }, { 0xc0665f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0669200, 0xfffffe00, 23, "RIPENCC" }, { 0xc066d600, 0xffffff00, 24, "RIPENCC" }, { 0xc066e000, 0xfffffe00, 23, "RIPENCC" }, { 0xc066e300, 0xffffff00, 24, "RIPENCC" }, { 0xc066e400, 0xfffffe00, 23, "RIPENCC" }, { 0xc066ef00, 0xffffff00, 24, "APNIC" }, { 0xc066fa00, 0xfffffe00, 23, "APNIC" }, { 0xc0670200, 0xffffff00, 24, "RIPENCC" }, { 0xc0670700, 0xffffff00, 24, "RIPENCC" }, { 0xc0670e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0671400, 0xffffff00, 24, "RIPENCC" }, { 0xc0671700, 0xffffff00, 24, "RIPENCC" }, { 0xc0671b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0671c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0672800, 0xffffff00, 24, "RIPENCC" }, { 0xc0672b00, 0xffffff00, 24, "APNIC" }, { 0xc0675500, 0xffffff00, 24, "RIPENCC" }, { 0xc0678200, 0xffffff00, 24, "APNIC" }, { 0xc0678900, 0xffffff00, 24, "RIPENCC" }, { 0xc0678a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0679300, 0xffffff00, 24, "RIPENCC" }, { 0xc0680f00, 0xffffff00, 24, "APNIC" }, { 0xc0681700, 0xffffff00, 24, "RIPENCC" }, { 0xc0681c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0682300, 0xffffff00, 24, "RIPENCC" }, { 0xc0682400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0682900, 0xffffff00, 24, "RIPENCC" }, { 0xc0682b00, 0xffffff00, 24, "APNIC" }, { 0xc0682c00, 0xfffffe00, 23, "APNIC" }, { 0xc0683000, 0xffffff00, 24, "RIPENCC" }, { 0xc0683500, 0xffffff00, 24, "RIPENCC" }, { 0xc0683700, 0xffffff00, 24, "RIPENCC" }, { 0xc0683800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0683a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0684800, 0xffffff00, 24, "RIPENCC" }, { 0xc0684d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0685200, 0xffffff00, 24, "RIPENCC" }, { 0xc0688c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0688e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0689300, 0xffffff00, 24, "RIPENCC" }, { 0xc0689a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc068a700, 0xffffff00, 24, "RIPENCC" }, { 0xc068a800, 0xffffff00, 24, "RIPENCC" }, { 0xc068ac00, 0xffffff00, 24, "APNIC" }, { 0xc068e800, 0xfffffe00, 23, "APNIC" }, { 0xc068ee00, 0xffffff00, 24, "RIPENCC" }, { 0xc068f500, 0xffffff00, 24, "RIPENCC" }, { 0xc068f600, 0xfffffe00, 23, "APNIC" }, { 0xc068f800, 0xffffff00, 24, "RIPENCC" }, { 0xc068fb00, 0xffffff00, 24, "RIPENCC" }, { 0xc0690a00, 0xffffff00, 24, "APNIC" }, { 0xc0694b00, 0xffffff00, 24, "RIPENCC" }, { 0xc06a0000, 0xffff0000, 16, "RIPENCC" }, { 0xc06b0200, 0xffffff00, 24, "RIPENCC" }, { 0xc06b0400, 0xfffffe00, 23, "RIPENCC" }, { 0xc06b0900, 0xffffff00, 24, "APNIC" }, { 0xc06b0b00, 0xffffff00, 24, "RIPENCC" }, { 0xc06b3300, 0xffffff00, 24, "RIPENCC" }, { 0xc06b3400, 0xfffffc00, 22, "RIPENCC" }, { 0xc06b3800, 0xfffff800, 21, "RIPENCC" }, { 0xc06b4000, 0xffffe000, 19, "RIPENCC" }, { 0xc06b6000, 0xfffffc00, 22, "RIPENCC" }, { 0xc06b6400, 0xffffff00, 24, "RIPENCC" }, { 0xc06b6500, 0xffffff00, 24, "APNIC" }, { 0xc06b6800, 0xffffff00, 24, "LACNIC" }, { 0xc06b6e00, 0xffffff00, 24, "RIPENCC" }, { 0xc06b7100, 0xffffff00, 24, "APNIC" }, { 0xc06b7200, 0xffffff00, 24, "RIPENCC" }, { 0xc06b7a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06b7c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc06b8400, 0xffffff00, 24, "RIPENCC" }, { 0xc06ba800, 0xffffff00, 24, "RIPENCC" }, { 0xc06bab00, 0xffffff00, 24, "APNIC" }, { 0xc06bac00, 0xffffff00, 24, "APNIC" }, { 0xc06bae00, 0xffffff00, 24, "RIPENCC" }, { 0xc06bb100, 0xffffff00, 24, "RIPENCC" }, { 0xc06bb200, 0xffffff00, 24, "RIPENCC" }, { 0xc06bbb00, 0xffffff00, 24, "RIPENCC" }, { 0xc06bc800, 0xfffff800, 21, "RIPENCC" }, { 0xc06be800, 0xfffffe00, 23, "RIPENCC" }, { 0xc06beb00, 0xffffff00, 24, "RIPENCC" }, { 0xc06c1700, 0xffffff00, 24, "RIPENCC" }, { 0xc06c1b00, 0xffffff00, 24, "RIPENCC" }, { 0xc06c1c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc06c2000, 0xfffffc00, 22, "RIPENCC" }, { 0xc06c2d00, 0xffffff00, 24, "RIPENCC" }, { 0xc06c2e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06c3000, 0xfffffe00, 23, "RIPENCC" }, { 0xc06c3300, 0xffffff00, 24, "RIPENCC" }, { 0xc06c3400, 0xfffffc00, 22, "RIPENCC" }, { 0xc06c4100, 0xffffff00, 24, "RIPENCC" }, { 0xc06c4200, 0xfffffe00, 23, "RIPENCC" }, { 0xc06c4900, 0xffffff00, 24, "RIPENCC" }, { 0xc06c6300, 0xffffff00, 24, "APNIC" }, { 0xc06c6400, 0xfffffe00, 23, "RIPENCC" }, { 0xc06c6b00, 0xffffff00, 24, "RIPENCC" }, { 0xc06c7200, 0xfffffe00, 23, "RIPENCC" }, { 0xc06c7800, 0xfffffe00, 23, "RIPENCC" }, { 0xc06c7d00, 0xffffff00, 24, "RIPENCC" }, { 0xc06c7e00, 0xffffff00, 24, "RIPENCC" }, { 0xc06c8000, 0xfffff800, 21, "RIPENCC" }, { 0xc06cc300, 0xffffff00, 24, "RIPENCC" }, { 0xc06ce600, 0xffffff00, 24, "APNIC" }, { 0xc06cea00, 0xffffff00, 24, "RIPENCC" }, { 0xc06cee00, 0xffffff00, 24, "RIPENCC" }, { 0xc06d0000, 0xfffff800, 21, "RIPENCC" }, { 0xc06d0a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d0c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc06d1000, 0xfffff000, 20, "RIPENCC" }, { 0xc06d2000, 0xfffff800, 21, "RIPENCC" }, { 0xc06d2800, 0xfffffc00, 22, "RIPENCC" }, { 0xc06d2c00, 0xffffff00, 24, "RIPENCC" }, { 0xc06d2e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d3000, 0xfffff000, 20, "RIPENCC" }, { 0xc06d4000, 0xfffff800, 21, "RIPENCC" }, { 0xc06d4800, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d4a00, 0xffffff00, 24, "RIPENCC" }, { 0xc06d4c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc06d5000, 0xfffff800, 21, "RIPENCC" }, { 0xc06d5800, 0xfffffc00, 22, "RIPENCC" }, { 0xc06d5e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d6000, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d6200, 0xffffff00, 24, "RIPENCC" }, { 0xc06d6400, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d6600, 0xffffff00, 24, "RIPENCC" }, { 0xc06d6900, 0xffffff00, 24, "RIPENCC" }, { 0xc06d6a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d6c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc06d7000, 0xfffff800, 21, "RIPENCC" }, { 0xc06d7900, 0xffffff00, 24, "RIPENCC" }, { 0xc06d7a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06d7c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc06d8000, 0xffffe000, 19, "RIPENCC" }, { 0xc06da000, 0xfffff800, 21, "RIPENCC" }, { 0xc06da800, 0xfffffc00, 22, "RIPENCC" }, { 0xc06dac00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06daf00, 0xffffff00, 24, "RIPENCC" }, { 0xc06db000, 0xfffff000, 20, "RIPENCC" }, { 0xc06dc300, 0xffffff00, 24, "RIPENCC" }, { 0xc06dc400, 0xfffffc00, 22, "RIPENCC" }, { 0xc06dc800, 0xfffff800, 21, "RIPENCC" }, { 0xc06dd000, 0xfffff000, 20, "RIPENCC" }, { 0xc06de000, 0xfffff000, 20, "RIPENCC" }, { 0xc06df000, 0xfffffe00, 23, "RIPENCC" }, { 0xc06df200, 0xffffff00, 24, "AFRINIC" }, { 0xc06df300, 0xffffff00, 24, "RIPENCC" }, { 0xc06df400, 0xfffffc00, 22, "RIPENCC" }, { 0xc06df800, 0xfffff800, 21, "RIPENCC" }, { 0xc06f2000, 0xffffff00, 24, "APNIC" }, { 0xc06f2100, 0xffffff00, 24, "RIPENCC" }, { 0xc06f2700, 0xffffff00, 24, "RIPENCC" }, { 0xc06f2c00, 0xffffff00, 24, "RIPENCC" }, { 0xc06f2f00, 0xffffff00, 24, "RIPENCC" }, { 0xc06f3000, 0xffffff00, 24, "RIPENCC" }, { 0xc06f5800, 0xffffff00, 24, "RIPENCC" }, { 0xc06f6500, 0xffffff00, 24, "RIPENCC" }, { 0xc06f6600, 0xffffff00, 24, "APNIC" }, { 0xc06f6700, 0xffffff00, 24, "RIPENCC" }, { 0xc06f6800, 0xffffff00, 24, "RIPENCC" }, { 0xc06f6900, 0xffffff00, 24, "APNIC" }, { 0xc06f7c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc06f7f00, 0xffffff00, 24, "RIPENCC" }, { 0xc06fe500, 0xffffff00, 24, "LACNIC" }, { 0xc06ffc00, 0xffffff00, 24, "RIPENCC" }, { 0xc0701e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0702000, 0xffffff00, 24, "RIPENCC" }, { 0xc0702d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0703100, 0xffffff00, 24, "RIPENCC" }, { 0xc0703d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0704600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0704800, 0xfffff800, 21, "RIPENCC" }, { 0xc0706200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0706400, 0xffffff00, 24, "RIPENCC" }, { 0xc070cc00, 0xffffff00, 24, "RIPENCC" }, { 0xc070ce00, 0xffffff00, 24, "RIPENCC" }, { 0xc070d000, 0xffffff00, 24, "RIPENCC" }, { 0xc070d500, 0xffffff00, 24, "RIPENCC" }, { 0xc070d600, 0xffffff00, 24, "RIPENCC" }, { 0xc070d700, 0xffffff00, 24, "APNIC" }, { 0xc070f700, 0xffffff00, 24, "RIPENCC" }, { 0xc070fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0710000, 0xffff0000, 16, "RIPENCC" }, { 0xc0720000, 0xffffc000, 18, "RIPENCC" }, { 0xc0725400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0725800, 0xfffff800, 21, "RIPENCC" }, { 0xc072a000, 0xffffe000, 19, "RIPENCC" }, { 0xc072c000, 0xffffc000, 18, "RIPENCC" }, { 0xc0730000, 0xffff0000, 16, "RIPENCC" }, { 0xc0740000, 0xffff8000, 17, "RIPENCC" }, { 0xc074c000, 0xffffc000, 18, "RIPENCC" }, { 0xc0750000, 0xffff0000, 16, "RIPENCC" }, { 0xc0760000, 0xffff0000, 16, "RIPENCC" }, { 0xc0790000, 0xffff0000, 16, "RIPENCC" }, { 0xc07a0100, 0xffffff00, 24, "RIPENCC" }, { 0xc07a8300, 0xffffff00, 24, "APNIC" }, { 0xc07a8400, 0xfffffc00, 22, "APNIC" }, { 0xc07a8800, 0xfffffc00, 22, "APNIC" }, { 0xc07a8c00, 0xffffff00, 24, "APNIC" }, { 0xc07a8d00, 0xffffff00, 24, "RIPENCC" }, { 0xc07a9700, 0xffffff00, 24, "RIPENCC" }, { 0xc07aab00, 0xffffff00, 24, "APNIC" }, { 0xc07ab000, 0xffffff00, 24, "APNIC" }, { 0xc07ab400, 0xffffff00, 24, "APNIC" }, { 0xc07ad600, 0xffffff00, 24, "RIPENCC" }, { 0xc07ad800, 0xfffffe00, 23, "RIPENCC" }, { 0xc07aee00, 0xfffffe00, 23, "RIPENCC" }, { 0xc07afe00, 0xffffff00, 24, "RIPENCC" }, { 0xc07c0a00, 0xfffffe00, 23, "APNIC" }, { 0xc07c0c00, 0xfffffe00, 23, "APNIC" }, { 0xc07c0e00, 0xffffff00, 24, "APNIC" }, { 0xc07c1900, 0xffffff00, 24, "RIPENCC" }, { 0xc07c2000, 0xffffff00, 24, "RIPENCC" }, { 0xc07c2700, 0xffffff00, 24, "RIPENCC" }, { 0xc07c2e00, 0xffffff00, 24, "RIPENCC" }, { 0xc07c7000, 0xffffff00, 24, "RIPENCC" }, { 0xc07c7300, 0xffffff00, 24, "RIPENCC" }, { 0xc07c7400, 0xffffff00, 24, "RIPENCC" }, { 0xc07c7500, 0xffffff00, 24, "APNIC" }, { 0xc07c9800, 0xffffff00, 24, "APNIC" }, { 0xc07c9a00, 0xffffff00, 24, "APNIC" }, { 0xc07c9b00, 0xffffff00, 24, "RIPENCC" }, { 0xc07caa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc07ceb00, 0xffffff00, 24, "RIPENCC" }, { 0xc07ced00, 0xffffff00, 24, "RIPENCC" }, { 0xc07cee00, 0xfffffe00, 23, "RIPENCC" }, { 0xc07cf000, 0xfffffc00, 22, "RIPENCC" }, { 0xc07cf400, 0xfffffe00, 23, "RIPENCC" }, { 0xc07cf700, 0xffffff00, 24, "RIPENCC" }, { 0xc07cf800, 0xffffff00, 24, "RIPENCC" }, { 0xc07cfa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc07cfc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc07cfe00, 0xffffff00, 24, "RIPENCC" }, { 0xc07d0000, 0xffff0000, 16, "RIPENCC" }, { 0xc07e0100, 0xffffff00, 24, "RIPENCC" }, { 0xc0810100, 0xffffff00, 24, "RIPENCC" }, { 0xc0812000, 0xfffff000, 20, "RIPENCC" }, { 0xc0815000, 0xffffff00, 24, "RIPENCC" }, { 0xc0815700, 0xffffff00, 24, "RIPENCC" }, { 0xc0816200, 0xffffff00, 24, "RIPENCC" }, { 0xc0820000, 0xffff0000, 16, "RIPENCC" }, { 0xc0830d00, 0xffffff00, 24, "APNIC" }, { 0xc0831400, 0xffffff00, 24, "RIPENCC" }, { 0xc0831900, 0xffffff00, 24, "RIPENCC" }, { 0xc0831b00, 0xffffff00, 24, "APNIC" }, { 0xc0831c00, 0xfffffe00, 23, "APNIC" }, { 0xc0831e00, 0xffffff00, 24, "APNIC" }, { 0xc0834f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0835900, 0xffffff00, 24, "RIPENCC" }, { 0xc0835a00, 0xfffffe00, 23, "APNIC" }, { 0xc0835c00, 0xffffff00, 24, "APNIC" }, { 0xc0836000, 0xffffff00, 24, "RIPENCC" }, { 0xc0836c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0838400, 0xffffff00, 24, "RIPENCC" }, { 0xc083fb00, 0xffffff00, 24, "APNIC" }, { 0xc083fc00, 0xffffff00, 24, "APNIC" }, { 0xc0840900, 0xffffff00, 24, "RIPENCC" }, { 0xc0840a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0840f00, 0xffffff00, 24, "APNIC" }, { 0xc0841f00, 0xffffff00, 24, "APNIC" }, { 0xc0842200, 0xffffff00, 24, "RIPENCC" }, { 0xc0842300, 0xffffff00, 24, "LACNIC" }, { 0xc0842900, 0xffffff00, 24, "APNIC" }, { 0xc0843500, 0xffffff00, 24, "RIPENCC" }, { 0xc0843700, 0xffffff00, 24, "RIPENCC" }, { 0xc0845d00, 0xffffff00, 24, "APNIC" }, { 0xc0846300, 0xffffff00, 24, "RIPENCC" }, { 0xc084ef00, 0xffffff00, 24, "RIPENCC" }, { 0xc084f400, 0xfffffe00, 23, "RIPENCC" }, { 0xc084f700, 0xffffff00, 24, "APNIC" }, { 0xc084f800, 0xfffffc00, 22, "APNIC" }, { 0xc084fc00, 0xffffff00, 24, "RIPENCC" }, { 0xc084fd00, 0xffffff00, 24, "APNIC" }, { 0xc0850f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0851500, 0xffffff00, 24, "APNIC" }, { 0xc0851c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0851f00, 0xffffff00, 24, "APNIC" }, { 0xc0852000, 0xffffff00, 24, "RIPENCC" }, { 0xc0852400, 0xffffff00, 24, "RIPENCC" }, { 0xc0852900, 0xffffff00, 24, "APNIC" }, { 0xc0853500, 0xffffff00, 24, "RIPENCC" }, { 0xc0853600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0853a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0854000, 0xffffff00, 24, "RIPENCC" }, { 0xc0854300, 0xffffff00, 24, "APNIC" }, { 0xc0856c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0857900, 0xffffff00, 24, "RIPENCC" }, { 0xc0858300, 0xffffff00, 24, "RIPENCC" }, { 0xc085f400, 0xffffff00, 24, "RIPENCC" }, { 0xc085fa00, 0xffffff00, 24, "AFRINIC" }, { 0xc0860000, 0xffff0000, 16, "RIPENCC" }, { 0xc0870700, 0xffffff00, 24, "RIPENCC" }, { 0xc0870800, 0xfffff800, 21, "RIPENCC" }, { 0xc0871000, 0xfffff000, 20, "RIPENCC" }, { 0xc0872000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0872400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0872e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0873300, 0xffffff00, 24, "RIPENCC" }, { 0xc0873400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0873f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0874200, 0xffffff00, 24, "RIPENCC" }, { 0xc0874400, 0xffffff00, 24, "RIPENCC" }, { 0xc0875200, 0xffffff00, 24, "RIPENCC" }, { 0xc0875900, 0xffffff00, 24, "APNIC" }, { 0xc0875c00, 0xffffff00, 24, "APNIC" }, { 0xc0875e00, 0xffffff00, 24, "APNIC" }, { 0xc0876000, 0xffffff00, 24, "APNIC" }, { 0xc0876500, 0xffffff00, 24, "APNIC" }, { 0xc0876700, 0xffffff00, 24, "APNIC" }, { 0xc0876800, 0xfffffc00, 22, "APNIC" }, { 0xc0876c00, 0xffffff00, 24, "APNIC" }, { 0xc0878100, 0xffffff00, 24, "RIPENCC" }, { 0xc0878500, 0xffffff00, 24, "RIPENCC" }, { 0xc0878f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0879100, 0xffffff00, 24, "RIPENCC" }, { 0xc0879200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0879400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0879800, 0xfffff800, 21, "RIPENCC" }, { 0xc087a000, 0xfffff800, 21, "RIPENCC" }, { 0xc087a800, 0xffffff00, 24, "RIPENCC" }, { 0xc087af00, 0xffffff00, 24, "RIPENCC" }, { 0xc087bb00, 0xffffff00, 24, "RIPENCC" }, { 0xc087cf00, 0xffffff00, 24, "APNIC" }, { 0xc087d000, 0xffffff00, 24, "APNIC" }, { 0xc087db00, 0xffffff00, 24, "RIPENCC" }, { 0xc087de00, 0xffffff00, 24, "APNIC" }, { 0xc087e100, 0xffffff00, 24, "RIPENCC" }, { 0xc087e700, 0xffffff00, 24, "RIPENCC" }, { 0xc087fd00, 0xffffff00, 24, "RIPENCC" }, { 0xc087fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0880700, 0xffffff00, 24, "RIPENCC" }, { 0xc0880900, 0xffffff00, 24, "RIPENCC" }, { 0xc0881200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0881700, 0xffffff00, 24, "RIPENCC" }, { 0xc0881d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0881e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0882700, 0xffffff00, 24, "APNIC" }, { 0xc0882800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0882a00, 0xfffffe00, 23, "LACNIC" }, { 0xc0882c00, 0xfffffc00, 22, "LACNIC" }, { 0xc0883100, 0xffffff00, 24, "RIPENCC" }, { 0xc0883300, 0xffffff00, 24, "RIPENCC" }, { 0xc0883400, 0xffffff00, 24, "RIPENCC" }, { 0xc0883700, 0xffffff00, 24, "AFRINIC" }, { 0xc0883800, 0xfffffe00, 23, "AFRINIC" }, { 0xc0883b00, 0xffffff00, 24, "APNIC" }, { 0xc0883d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0884700, 0xffffff00, 24, "RIPENCC" }, { 0xc0889a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0889c00, 0xffffff00, 24, "RIPENCC" }, { 0xc08a0100, 0xffffff00, 24, "RIPENCC" }, { 0xc08a5600, 0xffffff00, 24, "RIPENCC" }, { 0xc08a6400, 0xffffff00, 24, "APNIC" }, { 0xc08a6900, 0xffffff00, 24, "RIPENCC" }, { 0xc08a6d00, 0xffffff00, 24, "RIPENCC" }, { 0xc08a9b00, 0xffffff00, 24, "RIPENCC" }, { 0xc08a9c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc08ab700, 0xffffff00, 24, "RIPENCC" }, { 0xc08ac000, 0xffffff00, 24, "RIPENCC" }, { 0xc08acc00, 0xffffff00, 24, "RIPENCC" }, { 0xc08ae400, 0xfffffc00, 22, "RIPENCC" }, { 0xc08ae800, 0xffffff00, 24, "RIPENCC" }, { 0xc08af800, 0xffffff00, 24, "RIPENCC" }, { 0xc08afb00, 0xffffff00, 24, "APNIC" }, { 0xc08b4e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0904a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0904c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0927500, 0xffffff00, 24, "RIPENCC" }, { 0xc0927700, 0xffffff00, 24, "RIPENCC" }, { 0xc0927b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0927c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0927e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0928400, 0xffffff00, 24, "RIPENCC" }, { 0xc0928500, 0xffffff00, 24, "APNIC" }, { 0xc0928600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0928800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0928c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0929600, 0xffffff00, 24, "APNIC" }, { 0xc0929800, 0xffffff00, 24, "RIPENCC" }, { 0xc0929d00, 0xffffff00, 24, "LACNIC" }, { 0xc092a300, 0xffffff00, 24, "RIPENCC" }, { 0xc092a400, 0xfffffc00, 22, "RIPENCC" }, { 0xc092a800, 0xfffffe00, 23, "RIPENCC" }, { 0xc092aa00, 0xffffff00, 24, "RIPENCC" }, { 0xc092ac00, 0xfffffc00, 22, "RIPENCC" }, { 0xc092b000, 0xfffffc00, 22, "RIPENCC" }, { 0xc092b400, 0xfffffe00, 23, "RIPENCC" }, { 0xc092b600, 0xffffff00, 24, "RIPENCC" }, { 0xc092b800, 0xffffff00, 24, "APNIC" }, { 0xc092b900, 0xffffff00, 24, "RIPENCC" }, { 0xc092bb00, 0xffffff00, 24, "RIPENCC" }, { 0xc092c100, 0xffffff00, 24, "RIPENCC" }, { 0xc092c800, 0xffffff00, 24, "APNIC" }, { 0xc092cc00, 0xffffff00, 24, "RIPENCC" }, { 0xc092da00, 0xfffffe00, 23, "APNIC" }, { 0xc092e300, 0xffffff00, 24, "RIPENCC" }, { 0xc092e400, 0xffffff00, 24, "RIPENCC" }, { 0xc092e900, 0xffffff00, 24, "RIPENCC" }, { 0xc092ea00, 0xffffff00, 24, "RIPENCC" }, { 0xc092ed00, 0xffffff00, 24, "LACNIC" }, { 0xc092ee00, 0xfffffe00, 23, "RIPENCC" }, { 0xc092f200, 0xffffff00, 24, "RIPENCC" }, { 0xc092fb00, 0xffffff00, 24, "APNIC" }, { 0xc092fc00, 0xfffffe00, 23, "APNIC" }, { 0xc0931700, 0xffffff00, 24, "RIPENCC" }, { 0xc0932200, 0xffffff00, 24, "RIPENCC" }, { 0xc0932400, 0xffffff00, 24, "RIPENCC" }, { 0xc0932a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0934c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0937200, 0xffffff00, 24, "APNIC" }, { 0xc0938d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0939600, 0xffffff00, 24, "RIPENCC" }, { 0xc0939b00, 0xffffff00, 24, "RIPENCC" }, { 0xc093d400, 0xffffff00, 24, "RIPENCC" }, { 0xc093d700, 0xffffff00, 24, "RIPENCC" }, { 0xc093d800, 0xfffffe00, 23, "RIPENCC" }, { 0xc093db00, 0xffffff00, 24, "RIPENCC" }, { 0xc093e400, 0xffffff00, 24, "RIPENCC" }, { 0xc093eb00, 0xffffff00, 24, "APNIC" }, { 0xc093f600, 0xffffff00, 24, "APNIC" }, { 0xc093f700, 0xffffff00, 24, "RIPENCC" }, { 0xc093fb00, 0xffffff00, 24, "RIPENCC" }, { 0xc0942100, 0xffffff00, 24, "RIPENCC" }, { 0xc0946700, 0xffffff00, 24, "RIPENCC" }, { 0xc0947400, 0xfffffc00, 22, "APNIC" }, { 0xc0947800, 0xfffff800, 21, "APNIC" }, { 0xc0948000, 0xffffe000, 19, "APNIC" }, { 0xc094a000, 0xfffffc00, 22, "APNIC" }, { 0xc094a400, 0xfffffe00, 23, "APNIC" }, { 0xc094a600, 0xfffffe00, 23, "RIPENCC" }, { 0xc094af00, 0xffffff00, 24, "LACNIC" }, { 0xc094b100, 0xffffff00, 24, "RIPENCC" }, { 0xc094b200, 0xfffffe00, 23, "RIPENCC" }, { 0xc094b400, 0xfffffc00, 22, "RIPENCC" }, { 0xc094b800, 0xfffffe00, 23, "RIPENCC" }, { 0xc094ba00, 0xffffff00, 24, "RIPENCC" }, { 0xc094c000, 0xfffffe00, 23, "RIPENCC" }, { 0xc094c200, 0xffffff00, 24, "RIPENCC" }, { 0xc094c600, 0xfffffe00, 23, "RIPENCC" }, { 0xc094c800, 0xfffff800, 21, "RIPENCC" }, { 0xc094d000, 0xfffff800, 21, "RIPENCC" }, { 0xc094d800, 0xffffff00, 24, "RIPENCC" }, { 0xc094dc00, 0xffffff00, 24, "RIPENCC" }, { 0xc094dd00, 0xffffff00, 24, "APNIC" }, { 0xc094df00, 0xffffff00, 24, "APNIC" }, { 0xc094e000, 0xfffffc00, 22, "APNIC" }, { 0xc094e400, 0xfffffe00, 23, "APNIC" }, { 0xc094e600, 0xffffff00, 24, "APNIC" }, { 0xc0950300, 0xffffff00, 24, "RIPENCC" }, { 0xc0950500, 0xffffff00, 24, "RIPENCC" }, { 0xc0950f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0951300, 0xffffff00, 24, "RIPENCC" }, { 0xc0951400, 0xffffff00, 24, "APNIC" }, { 0xc0951b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0951d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0952300, 0xffffff00, 24, "RIPENCC" }, { 0xc0952400, 0xffffff00, 24, "APNIC" }, { 0xc0952900, 0xffffff00, 24, "RIPENCC" }, { 0xc0953600, 0xffffff00, 24, "APNIC" }, { 0xc0953900, 0xffffff00, 24, "RIPENCC" }, { 0xc0953b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0953c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0954d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0954e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0956400, 0xffffff00, 24, "RIPENCC" }, { 0xc0956600, 0xffffff00, 24, "RIPENCC" }, { 0xc0956e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0957500, 0xffffff00, 24, "RIPENCC" }, { 0xc0957600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0957800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0957e00, 0xffffff00, 24, "RIPENCC" }, { 0xc095d100, 0xffffff00, 24, "APNIC" }, { 0xc095e300, 0xffffff00, 24, "RIPENCC" }, { 0xc095e800, 0xffffff00, 24, "RIPENCC" }, { 0xc095ee00, 0xffffff00, 24, "RIPENCC" }, { 0xc0963a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0963c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0964000, 0xfffff800, 21, "RIPENCC" }, { 0xc0964800, 0xffffff00, 24, "RIPENCC" }, { 0xc0964b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0964c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0964e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0965000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0965400, 0xffffff00, 24, "RIPENCC" }, { 0xc0965900, 0xffffff00, 24, "RIPENCC" }, { 0xc0965c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0965e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0966800, 0xffffff00, 24, "RIPENCC" }, { 0xc0966a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0967c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0967e00, 0xffffff00, 24, "LACNIC" }, { 0xc0968100, 0xffffff00, 24, "APNIC" }, { 0xc0968200, 0xfffffe00, 23, "APNIC" }, { 0xc0968400, 0xfffffc00, 22, "APNIC" }, { 0xc0968900, 0xffffff00, 24, "APNIC" }, { 0xc0968a00, 0xfffffe00, 23, "APNIC" }, { 0xc0968c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0969200, 0xffffff00, 24, "RIPENCC" }, { 0xc096b100, 0xffffff00, 24, "RIPENCC" }, { 0xc096b200, 0xfffffe00, 23, "RIPENCC" }, { 0xc096b400, 0xfffffc00, 22, "RIPENCC" }, { 0xc096b800, 0xffffff00, 24, "RIPENCC" }, { 0xc096bc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc096be00, 0xffffff00, 24, "RIPENCC" }, { 0xc096c000, 0xfffffc00, 22, "RIPENCC" }, { 0xc096c400, 0xfffffe00, 23, "RIPENCC" }, { 0xc096c600, 0xffffff00, 24, "RIPENCC" }, { 0xc096ca00, 0xffffff00, 24, "APNIC" }, { 0xc096cb00, 0xffffff00, 24, "RIPENCC" }, { 0xc096cc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc096d000, 0xfffffe00, 23, "RIPENCC" }, { 0xc096da00, 0xfffffe00, 23, "APNIC" }, { 0xc096df00, 0xffffff00, 24, "RIPENCC" }, { 0xc096e300, 0xffffff00, 24, "RIPENCC" }, { 0xc096e400, 0xfffffc00, 22, "RIPENCC" }, { 0xc096e800, 0xfffffe00, 23, "RIPENCC" }, { 0xc096ea00, 0xfffffe00, 23, "APNIC" }, { 0xc096ec00, 0xfffffe00, 23, "APNIC" }, { 0xc096ee00, 0xffffff00, 24, "RIPENCC" }, { 0xc096f600, 0xffffff00, 24, "APNIC" }, { 0xc096f800, 0xffffff00, 24, "RIPENCC" }, { 0xc096f900, 0xffffff00, 24, "APNIC" }, { 0xc096fa00, 0xfffffe00, 23, "APNIC" }, { 0xc096fc00, 0xffffff00, 24, "RIPENCC" }, { 0xc096fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0980600, 0xffffff00, 24, "RIPENCC" }, { 0xc0980e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0981100, 0xffffff00, 24, "RIPENCC" }, { 0xc0981a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0982a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0982c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0982f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0983000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0983600, 0xffffff00, 24, "RIPENCC" }, { 0xc0983d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0983e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0984400, 0xffffff00, 24, "RIPENCC" }, { 0xc0984500, 0xffffff00, 24, "APNIC" }, { 0xc0985200, 0xffffff00, 24, "RIPENCC" }, { 0xc0986200, 0xffffff00, 24, "RIPENCC" }, { 0xc0986f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0987000, 0xffffff00, 24, "RIPENCC" }, { 0xc0987700, 0xffffff00, 24, "APNIC" }, { 0xc0987a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0987c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0988d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0989700, 0xffffff00, 24, "RIPENCC" }, { 0xc0989c00, 0xffffff00, 24, "RIPENCC" }, { 0xc098a600, 0xfffffe00, 23, "RIPENCC" }, { 0xc098ae00, 0xffffff00, 24, "RIPENCC" }, { 0xc098b800, 0xfffffc00, 22, "RIPENCC" }, { 0xc098d400, 0xffffff00, 24, "APNIC" }, { 0xc098f100, 0xffffff00, 24, "RIPENCC" }, { 0xc098f400, 0xffffff00, 24, "RIPENCC" }, { 0xc098fd00, 0xffffff00, 24, "RIPENCC" }, { 0xc098fe00, 0xffffff00, 24, "RIPENCC" }, { 0xc0990200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0990c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0991200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0995800, 0xffffff00, 24, "LACNIC" }, { 0xc0995900, 0xffffff00, 24, "RIPENCC" }, { 0xc0995d00, 0xffffff00, 24, "APNIC" }, { 0xc0995f00, 0xffffff00, 24, "APNIC" }, { 0xc0996000, 0xfffff000, 20, "APNIC" }, { 0xc0997000, 0xfffffe00, 23, "APNIC" }, { 0xc0997200, 0xffffff00, 24, "APNIC" }, { 0xc0997400, 0xffffff00, 24, "RIPENCC" }, { 0xc0997700, 0xffffff00, 24, "LACNIC" }, { 0xc0997f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0999900, 0xffffff00, 24, "RIPENCC" }, { 0xc0999e00, 0xffffff00, 24, "APNIC" }, { 0xc099a600, 0xffffff00, 24, "RIPENCC" }, { 0xc099a700, 0xffffff00, 24, "LACNIC" }, { 0xc099a800, 0xffffff00, 24, "RIPENCC" }, { 0xc099ab00, 0xffffff00, 24, "RIPENCC" }, { 0xc099ad00, 0xffffff00, 24, "RIPENCC" }, { 0xc099ae00, 0xfffffe00, 23, "RIPENCC" }, { 0xc099b000, 0xfffffc00, 22, "RIPENCC" }, { 0xc099b400, 0xfffffe00, 23, "RIPENCC" }, { 0xc099b600, 0xffffff00, 24, "RIPENCC" }, { 0xc099bc00, 0xfffffe00, 23, "RIPENCC" }, { 0xc099c200, 0xffffff00, 24, "RIPENCC" }, { 0xc099c400, 0xfffffe00, 23, "APNIC" }, { 0xc099d500, 0xffffff00, 24, "RIPENCC" }, { 0xc099fb00, 0xffffff00, 24, "APNIC" }, { 0xc09a1000, 0xfffff800, 21, "APNIC" }, { 0xc09a1800, 0xfffffe00, 23, "APNIC" }, { 0xc09b0100, 0xffffff00, 24, "RIPENCC" }, { 0xc09b0200, 0xfffffe00, 23, "RIPENCC" }, { 0xc09b0400, 0xfffffe00, 23, "RIPENCC" }, { 0xc09b0600, 0xffffff00, 24, "RIPENCC" }, { 0xc09c8400, 0xffffff00, 24, "RIPENCC" }, { 0xc09c8c00, 0xfffffc00, 22, "APNIC" }, { 0xc09c9100, 0xffffff00, 24, "APNIC" }, { 0xc09c9200, 0xfffffe00, 23, "APNIC" }, { 0xc09c9400, 0xfffffc00, 22, "APNIC" }, { 0xc09c9a00, 0xffffff00, 24, "APNIC" }, { 0xc09c9e00, 0xfffffe00, 23, "APNIC" }, { 0xc09ca200, 0xffffff00, 24, "RIPENCC" }, { 0xc09ca500, 0xffffff00, 24, "APNIC" }, { 0xc09ca700, 0xffffff00, 24, "RIPENCC" }, { 0xc09ccf00, 0xffffff00, 24, "APNIC" }, { 0xc09cd200, 0xffffff00, 24, "RIPENCC" }, { 0xc09cd500, 0xffffff00, 24, "RIPENCC" }, { 0xc09cd900, 0xffffff00, 24, "RIPENCC" }, { 0xc09ce100, 0xffffff00, 24, "APNIC" }, { 0xc09ce300, 0xffffff00, 24, "RIPENCC" }, { 0xc09cef00, 0xffffff00, 24, "RIPENCC" }, { 0xc09cf800, 0xffffff00, 24, "RIPENCC" }, { 0xc09d0100, 0xffffff00, 24, "RIPENCC" }, { 0xc09d0200, 0xfffffe00, 23, "RIPENCC" }, { 0xc09d0800, 0xfffff800, 21, "RIPENCC" }, { 0xc09d1000, 0xfffffe00, 23, "RIPENCC" }, { 0xc09d8100, 0xffffff00, 24, "RIPENCC" }, { 0xc09da500, 0xffffff00, 24, "RIPENCC" }, { 0xc09da900, 0xffffff00, 24, "RIPENCC" }, { 0xc09daa00, 0xfffffe00, 23, "RIPENCC" }, { 0xc09dac00, 0xffffff00, 24, "RIPENCC" }, { 0xc09dae00, 0xffffff00, 24, "RIPENCC" }, { 0xc09db000, 0xffffff00, 24, "RIPENCC" }, { 0xc09db900, 0xffffff00, 24, "RIPENCC" }, { 0xc09dbb00, 0xffffff00, 24, "RIPENCC" }, { 0xc09dbd00, 0xffffff00, 24, "RIPENCC" }, { 0xc09dbe00, 0xffffff00, 24, "AFRINIC" }, { 0xc09f1000, 0xfffff800, 21, "APNIC" }, { 0xc09f1800, 0xfffffc00, 22, "APNIC" }, { 0xc09f1c00, 0xfffffe00, 23, "APNIC" }, { 0xc09f1e00, 0xffffff00, 24, "APNIC" }, { 0xc09f4600, 0xffffff00, 24, "RIPENCC" }, { 0xc09f4900, 0xffffff00, 24, "RIPENCC" }, { 0xc09f4d00, 0xffffff00, 24, "RIPENCC" }, { 0xc09f5400, 0xfffffe00, 23, "RIPENCC" }, { 0xc09f5a00, 0xffffff00, 24, "RIPENCC" }, { 0xc09f5f00, 0xffffff00, 24, "RIPENCC" }, { 0xc09f6300, 0xffffff00, 24, "RIPENCC" }, { 0xc09f6400, 0xfffffc00, 22, "RIPENCC" }, { 0xc09f6900, 0xffffff00, 24, "RIPENCC" }, { 0xc09f6c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc09f7600, 0xffffff00, 24, "RIPENCC" }, { 0xc09f7900, 0xffffff00, 24, "RIPENCC" }, { 0xc09f7a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a00a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a00f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a01000, 0xffffff00, 24, "APNIC" }, { 0xc0a01300, 0xffffff00, 24, "APNIC" }, { 0xc0a01500, 0xffffff00, 24, "RIPENCC" }, { 0xc0a01600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a01b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a02100, 0xffffff00, 24, "RIPENCC" }, { 0xc0a02500, 0xffffff00, 24, "RIPENCC" }, { 0xc0a04100, 0xffffff00, 24, "RIPENCC" }, { 0xc0a04300, 0xffffff00, 24, "RIPENCC" }, { 0xc0a04700, 0xffffff00, 24, "APNIC" }, { 0xc0a05f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a06000, 0xffffff00, 24, "RIPENCC" }, { 0xc0a06d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a06e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a07b00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a07e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a08e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a09800, 0xffffff00, 24, "RIPENCC" }, { 0xc0a09c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0a000, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0a100, 0xffffff00, 24, "APNIC" }, { 0xc0a0a900, 0xffffff00, 24, "APNIC" }, { 0xc0a0aa00, 0xfffffe00, 23, "APNIC" }, { 0xc0a0ac00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0b100, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0b200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a0c200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a0cd00, 0xffffff00, 24, "APNIC" }, { 0xc0a0e000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a0e500, 0xffffff00, 24, "APNIC" }, { 0xc0a0e700, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0e800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a0f500, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0f600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a0f800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a0fb00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a0fc00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a14000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a18000, 0xfffffe00, 23, "APNIC" }, { 0xc0a20000, 0xffff8000, 17, "RIPENCC" }, { 0xc0a28000, 0xffffc000, 18, "RIPENCC" }, { 0xc0a2c000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a2c800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a2d000, 0xfffff000, 20, "RIPENCC" }, { 0xc0a2e000, 0xffffe000, 19, "RIPENCC" }, { 0xc0a32000, 0xffffe000, 19, "RIPENCC" }, { 0xc0a40000, 0xfffe0000, 15, "RIPENCC" }, { 0xc0a60000, 0xfffff800, 21, "RIPENCC" }, { 0xc0a60c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a61000, 0xfffff800, 21, "RIPENCC" }, { 0xc0a61c00, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a63000, 0xfffff000, 20, "RIPENCC" }, { 0xc0a64000, 0xfffff000, 20, "RIPENCC" }, { 0xc0a65200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a65400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a66000, 0xfffff000, 20, "RIPENCC" }, { 0xc0a67000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a67400, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a67800, 0xfffff800, 21, "RIPENCC" }, { 0xc0a68000, 0xffffc000, 18, "RIPENCC" }, { 0xc0a6c000, 0xfffff800, 21, "RIPENCC" }, { 0xc0a6ca00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a6d000, 0xfffff000, 20, "RIPENCC" }, { 0xc0a6e800, 0xfffff800, 21, "RIPENCC" }, { 0xc0a6f800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0a6fd00, 0xffffff00, 24, "RIPENCC" }, { 0xc0a6fe00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0a70000, 0xffff0000, 16, "RIPENCC" }, { 0xc0a92000, 0xfffff800, 21, "APNIC" }, { 0xc0a92800, 0xfffffe00, 23, "APNIC" }, { 0xc0ab0100, 0xffffff00, 24, "RIPENCC" }, { 0xc0ab0200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0ab0400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0ab8000, 0xffffc000, 18, "RIPENCC" }, { 0xc0abc000, 0xfffff800, 21, "RIPENCC" }, { 0xc0ace300, 0xffffff00, 24, "APNIC" }, { 0xc0ace400, 0xfffffc00, 22, "APNIC" }, { 0xc0acea00, 0xfffffe00, 23, "APNIC" }, { 0xc0acec00, 0xfffffc00, 22, "APNIC" }, { 0xc0acf100, 0xffffff00, 24, "APNIC" }, { 0xc0acf200, 0xfffffe00, 23, "APNIC" }, { 0xc0acf600, 0xffffff00, 24, "APNIC" }, { 0xc0acfd00, 0xffffff00, 24, "RIPENCC" }, { 0xc0ad0100, 0xffffff00, 24, "RIPENCC" }, { 0xc0ad0200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0ad0400, 0xffffff00, 24, "RIPENCC" }, { 0xc0ad1000, 0xfffff800, 21, "APNIC" }, { 0xc0ad1800, 0xffffff00, 24, "APNIC" }, { 0xc0ad8000, 0xfffff800, 21, "RIPENCC" }, { 0xc0ae4000, 0xfffffc00, 22, "RIPENCC" }, { 0xc0ae4400, 0xffffff00, 24, "RIPENCC" }, { 0xc0ae8000, 0xffff8000, 17, "APNIC" }, { 0xc0af2000, 0xfffff000, 20, "RIPENCC" }, { 0xc0b00000, 0xffff0000, 16, "RIPENCC" }, { 0xc0bb1000, 0xfffff800, 21, "RIPENCC" }, { 0xc0bb1800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bc0a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc0b00, 0xffffff00, 24, "LACNIC" }, { 0xc0bc2b00, 0xffffff00, 24, "APNIC" }, { 0xc0bc2c00, 0xfffffc00, 22, "LACNIC" }, { 0xc0bc3000, 0xfffff800, 21, "LACNIC" }, { 0xc0bc3800, 0xfffffc00, 22, "LACNIC" }, { 0xc0bc3c00, 0xffffff00, 24, "LACNIC" }, { 0xc0bc3f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc4000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bc4500, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc4700, 0xffffff00, 24, "APNIC" }, { 0xc0bc4900, 0xffffff00, 24, "APNIC" }, { 0xc0bc4a00, 0xfffffe00, 23, "APNIC" }, { 0xc0bc4c00, 0xfffffc00, 22, "APNIC" }, { 0xc0bc5500, 0xffffff00, 24, "APNIC" }, { 0xc0bc5600, 0xfffffe00, 23, "APNIC" }, { 0xc0bc5900, 0xffffff00, 24, "APNIC" }, { 0xc0bc5a00, 0xffffff00, 24, "APNIC" }, { 0xc0bc5c00, 0xffffff00, 24, "APNIC" }, { 0xc0bc6000, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc6500, 0xffffff00, 24, "APNIC" }, { 0xc0bc6900, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc6b00, 0xffffff00, 24, "APNIC" }, { 0xc0bc7300, 0xffffff00, 24, "APNIC" }, { 0xc0bc7400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bc7900, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc7a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc7d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc7f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc8100, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc8400, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc8800, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc9100, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc9700, 0xffffff00, 24, "APNIC" }, { 0xc0bc9d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bc9e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bca400, 0xfffffc00, 22, "AFRINIC" }, { 0xc0bcaa00, 0xffffff00, 24, "APNIC" }, { 0xc0bcae00, 0xfffffe00, 23, "APNIC" }, { 0xc0bcb900, 0xffffff00, 24, "APNIC" }, { 0xc0bcba00, 0xffffff00, 24, "APNIC" }, { 0xc0bcbb00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bcbd00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bcc200, 0xfffffe00, 23, "LACNIC" }, { 0xc0bcc400, 0xfffffe00, 23, "LACNIC" }, { 0xc0bce900, 0xffffff00, 24, "RIPENCC" }, { 0xc0bcf100, 0xffffff00, 24, "APNIC" }, { 0xc0bcf200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bd0100, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd0800, 0xfffffc00, 22, "RIPENCC" }, { 0xc0bd0e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd1700, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd1800, 0xffffff00, 24, "APNIC" }, { 0xc0bd2200, 0xffffff00, 24, "APNIC" }, { 0xc0bd2900, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd3300, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd3400, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd3600, 0xffffff00, 24, "APNIC" }, { 0xc0bd3700, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd4200, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd4500, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd4600, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd4900, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd4b00, 0xffffff00, 24, "AFRINIC" }, { 0xc0bd4c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd7700, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd8800, 0xffffff00, 24, "APNIC" }, { 0xc0bd8b00, 0xffffff00, 24, "AFRINIC" }, { 0xc0bd9400, 0xffffff00, 24, "APNIC" }, { 0xc0bd9700, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd9a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bd9d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bda000, 0xffffff00, 24, "RIPENCC" }, { 0xc0bda600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bda800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bdaa00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bdca00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bdd000, 0xfffffc00, 22, "APNIC" }, { 0xc0bddf00, 0xffffff00, 24, "APNIC" }, { 0xc0bde500, 0xffffff00, 24, "APNIC" }, { 0xc0bdfb00, 0xffffff00, 24, "RIPENCC" }, { 0xc0be2c00, 0xffffff00, 24, "RIPENCC" }, { 0xc0be3a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0be3d00, 0xffffff00, 24, "APNIC" }, { 0xc0be4000, 0xffffff00, 24, "RIPENCC" }, { 0xc0be4200, 0xffffff00, 24, "APNIC" }, { 0xc0be4300, 0xffffff00, 24, "RIPENCC" }, { 0xc0be4500, 0xffffff00, 24, "RIPENCC" }, { 0xc0be5f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0be6c00, 0xffffff00, 24, "APNIC" }, { 0xc0be8100, 0xffffff00, 24, "RIPENCC" }, { 0xc0be8200, 0xfffffe00, 23, "RIPENCC" }, { 0xc0be8400, 0xffffff00, 24, "RIPENCC" }, { 0xc0bead00, 0xffffff00, 24, "RIPENCC" }, { 0xc0beae00, 0xffffff00, 24, "RIPENCC" }, { 0xc0beb400, 0xfffffe00, 23, "APNIC" }, { 0xc0beb600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bebe00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bec000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0bec900, 0xffffff00, 24, "RIPENCC" }, { 0xc0beca00, 0xffffff00, 24, "RIPENCC" }, { 0xc0becc00, 0xfffffe00, 23, "APNIC" }, { 0xc0bed000, 0xfffff800, 21, "APNIC" }, { 0xc0bee900, 0xffffff00, 24, "RIPENCC" }, { 0xc0beea00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0beec00, 0xffffff00, 24, "RIPENCC" }, { 0xc0bef000, 0xffffff00, 24, "RIPENCC" }, { 0xc0bef200, 0xffffff00, 24, "RIPENCC" }, { 0xc0bef700, 0xffffff00, 24, "RIPENCC" }, { 0xc0bef800, 0xfffffe00, 23, "RIPENCC" }, { 0xc0c00000, 0xffff0000, 16, "APNIC" }, { 0xc0c20000, 0xffff0000, 16, "RIPENCC" }, { 0xc0c30100, 0xffffff00, 24, "RIPENCC" }, { 0xc0c30800, 0xffffff00, 24, "RIPENCC" }, { 0xc0c30c00, 0xfffffe00, 23, "APNIC" }, { 0xc0c30e00, 0xffffff00, 24, "APNIC" }, { 0xc0c32200, 0xffffff00, 24, "APNIC" }, { 0xc0c32700, 0xffffff00, 24, "APNIC" }, { 0xc0c32800, 0xffffff00, 24, "APNIC" }, { 0xc0c32a00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0c32c00, 0xfffffc00, 22, "APNIC" }, { 0xc0c33000, 0xfffff800, 21, "APNIC" }, { 0xc0c34800, 0xffffff00, 24, "RIPENCC" }, { 0xc0c36200, 0xffffff00, 24, "RIPENCC" }, { 0xc0c36600, 0xffffff00, 24, "APNIC" }, { 0xc0c36900, 0xffffff00, 24, "RIPENCC" }, { 0xc0c36a00, 0xffffff00, 24, "RIPENCC" }, { 0xc0c36e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0c37000, 0xffffff00, 24, "APNIC" }, { 0xc0c37400, 0xfffffe00, 23, "RIPENCC" }, { 0xc0c38600, 0xfffffe00, 23, "RIPENCC" }, { 0xc0c39800, 0xffffff00, 24, "APNIC" }, { 0xc0c3aa00, 0xffffff00, 24, "APNIC" }, { 0xc0c3b700, 0xffffff00, 24, "RIPENCC" }, { 0xc0c3b800, 0xffffff00, 24, "RIPENCC" }, { 0xc0c3c300, 0xffffff00, 24, "RIPENCC" }, { 0xc0c3c500, 0xffffff00, 24, "APNIC" }, { 0xc0c3db00, 0xffffff00, 24, "APNIC" }, { 0xc0c3ec00, 0xffffff00, 24, "RIPENCC" }, { 0xc0c40100, 0xffffff00, 24, "RIPENCC" }, { 0xc0c71000, 0xfffff000, 20, "RIPENCC" }, { 0xc0c72000, 0xfffff000, 20, "APNIC" }, { 0xc0c84000, 0xfffff000, 20, "APNIC" }, { 0xc0cb5000, 0xffffff00, 24, "RIPENCC" }, { 0xc0cb6c00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0cb8a00, 0xfffffe00, 23, "APNIC" }, { 0xc0cb8c00, 0xfffffc00, 22, "APNIC" }, { 0xc0cb9000, 0xfffffe00, 23, "APNIC" }, { 0xc0cb9200, 0xffffff00, 24, "APNIC" }, { 0xc0cb9a00, 0xffffff00, 24, "APNIC" }, { 0xc0cb9e00, 0xffffff00, 24, "LACNIC" }, { 0xc0cbb000, 0xffffff00, 24, "APNIC" }, { 0xc0cbb100, 0xffffff00, 24, "LACNIC" }, { 0xc0cbd500, 0xffffff00, 24, "APNIC" }, { 0xc0cbd800, 0xffffff00, 24, "APNIC" }, { 0xc0cbe300, 0xffffff00, 24, "RIPENCC" }, { 0xc0cbe800, 0xffffff00, 24, "APNIC" }, { 0xc0cbeb00, 0xffffff00, 24, "APNIC" }, { 0xc0cbf700, 0xffffff00, 24, "APNIC" }, { 0xc0ce4d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0ce4e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0ce5000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0ce5600, 0xffffff00, 24, "RIPENCC" }, { 0xc0ce9800, 0xfffffc00, 22, "APNIC" }, { 0xc0ce9c00, 0xfffffe00, 23, "APNIC" }, { 0xc0cede00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0cee000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0cee200, 0xffffff00, 24, "RIPENCC" }, { 0xc0cf0e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0cf1f00, 0xffffff00, 24, "RIPENCC" }, { 0xc0cf2100, 0xffffff00, 24, "APNIC" }, { 0xc0cf2400, 0xffffff00, 24, "APNIC" }, { 0xc0cf2800, 0xfffffe00, 23, "LACNIC" }, { 0xc0cf2a00, 0xffffff00, 24, "LACNIC" }, { 0xc0cf4000, 0xffffff00, 24, "APNIC" }, { 0xc0cf4100, 0xffffff00, 24, "LACNIC" }, { 0xc0cf4200, 0xfffffe00, 23, "LACNIC" }, { 0xc0cf4400, 0xffffff00, 24, "LACNIC" }, { 0xc0cf5b00, 0xffffff00, 24, "APNIC" }, { 0xc0cf6000, 0xfffffe00, 23, "APNIC" }, { 0xc0cf6200, 0xffffff00, 24, "APNIC" }, { 0xc0cf7100, 0xffffff00, 24, "APNIC" }, { 0xc0cf7700, 0xffffff00, 24, "APNIC" }, { 0xc0cf7800, 0xfffffe00, 23, "APNIC" }, { 0xc0cf8d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0cf8e00, 0xffffff00, 24, "RIPENCC" }, { 0xc0cf8f00, 0xffffff00, 24, "APNIC" }, { 0xc0cf9200, 0xffffff00, 24, "LACNIC" }, { 0xc0cf9700, 0xffffff00, 24, "APNIC" }, { 0xc0cf9800, 0xfffffe00, 23, "APNIC" }, { 0xc0cf9c00, 0xfffffe00, 23, "APNIC" }, { 0xc0cf9e00, 0xffffff00, 24, "APNIC" }, { 0xc0cfa100, 0xffffff00, 24, "APNIC" }, { 0xc0cfa500, 0xffffff00, 24, "APNIC" }, { 0xc0cfb700, 0xffffff00, 24, "LACNIC" }, { 0xc0cfbb00, 0xffffff00, 24, "APNIC" }, { 0xc0cfc200, 0xffffff00, 24, "LACNIC" }, { 0xc0cfc400, 0xffffff00, 24, "RIPENCC" }, { 0xc0cfc500, 0xffffff00, 24, "APNIC" }, { 0xc0cfc600, 0xffffff00, 24, "APNIC" }, { 0xc0cff200, 0xffffff00, 24, "APNIC" }, { 0xc0cff400, 0xffffff00, 24, "LACNIC" }, { 0xc0cff800, 0xffffff00, 24, "APNIC" }, { 0xc0da0000, 0xffff0000, 16, "APNIC" }, { 0xc0e30100, 0xffffff00, 24, "APNIC" }, { 0xc0e30200, 0xfffffe00, 23, "APNIC" }, { 0xc0e30400, 0xfffffc00, 22, "APNIC" }, { 0xc0e30800, 0xfffff800, 21, "APNIC" }, { 0xc0e48000, 0xffff8000, 17, "APNIC" }, { 0xc0e70f00, 0xffffff00, 24, "APNIC" }, { 0xc0e72200, 0xffffff00, 24, "APNIC" }, { 0xc0e73b00, 0xffffff00, 24, "APNIC" }, { 0xc0e74300, 0xffffff00, 24, "RIPENCC" }, { 0xc0e75200, 0xffffff00, 24, "RIPENCC" }, { 0xc0e76e00, 0xffffff00, 24, "LACNIC" }, { 0xc0e77f00, 0xffffff00, 24, "APNIC" }, { 0xc0e78700, 0xffffff00, 24, "APNIC" }, { 0xc0e78800, 0xffffff00, 24, "APNIC" }, { 0xc0e78c00, 0xffffff00, 24, "LACNIC" }, { 0xc0e7a600, 0xfffffe00, 23, "APNIC" }, { 0xc0e7a800, 0xfffffe00, 23, "APNIC" }, { 0xc0e7aa00, 0xffffff00, 24, "APNIC" }, { 0xc0e7c100, 0xffffff00, 24, "APNIC" }, { 0xc0e7cb00, 0xffffff00, 24, "APNIC" }, { 0xc0e7d400, 0xffffff00, 24, "APNIC" }, { 0xc0e7fe00, 0xffffff00, 24, "AFRINIC" }, { 0xc0e88000, 0xffffe000, 19, "APNIC" }, { 0xc0eaf500, 0xffffff00, 24, "APNIC" }, { 0xc0ee0100, 0xffffff00, 24, "RIPENCC" }, { 0xc0f01000, 0xfffff000, 20, "APNIC" }, { 0xc0f40000, 0xffff0000, 16, "APNIC" }, { 0xc0f50d00, 0xffffff00, 24, "APNIC" }, { 0xc0f50e00, 0xffffff00, 24, "APNIC" }, { 0xc0f52400, 0xffffff00, 24, "APNIC" }, { 0xc0f53a00, 0xfffffe00, 23, "APNIC" }, { 0xc0f53c00, 0xffffff00, 24, "LACNIC" }, { 0xc0f56900, 0xffffff00, 24, "APNIC" }, { 0xc0f56a00, 0xfffffe00, 23, "APNIC" }, { 0xc0f56c00, 0xfffffc00, 22, "APNIC" }, { 0xc0f57000, 0xffffff00, 24, "APNIC" }, { 0xc0f57900, 0xffffff00, 24, "LACNIC" }, { 0xc0f59400, 0xffffff00, 24, "AFRINIC" }, { 0xc0f59800, 0xffffff00, 24, "RIPENCC" }, { 0xc0f5a900, 0xffffff00, 24, "RIPENCC" }, { 0xc0f5b900, 0xffffff00, 24, "APNIC" }, { 0xc0f5c000, 0xffffff00, 24, "APNIC" }, { 0xc0f5c400, 0xffffff00, 24, "APNIC" }, { 0xc0f5d000, 0xffffff00, 24, "APNIC" }, { 0xc0f5d200, 0xfffffe00, 23, "APNIC" }, { 0xc0f5d400, 0xfffffc00, 22, "APNIC" }, { 0xc0f5d800, 0xfffffe00, 23, "APNIC" }, { 0xc0f5e100, 0xffffff00, 24, "RIPENCC" }, { 0xc0f5f900, 0xffffff00, 24, "APNIC" }, { 0xc0f5fa00, 0xfffffe00, 23, "APNIC" }, { 0xc0f70100, 0xffffff00, 24, "RIPENCC" }, { 0xc0f80000, 0xffff8000, 17, "APNIC" }, { 0xc0f91000, 0xfffff000, 20, "APNIC" }, { 0xc0fb2700, 0xffffff00, 24, "LACNIC" }, { 0xc0fb3d00, 0xffffff00, 24, "RIPENCC" }, { 0xc0fb3e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc0fb4000, 0xfffffe00, 23, "RIPENCC" }, { 0xc0fb9400, 0xffffff00, 24, "APNIC" }, { 0xc0fbc300, 0xffffff00, 24, "APNIC" }, { 0xc0fbca00, 0xffffff00, 24, "AFRINIC" }, { 0xc0fbcd00, 0xffffff00, 24, "APNIC" }, { 0xc0fbce00, 0xfffffe00, 23, "APNIC" }, { 0xc0fbe200, 0xffffff00, 24, "RIPENCC" }, { 0xc1000000, 0xff000000, 8, "RIPENCC" }, { 0xc113e800, 0xfffffc00, 22, "AFRINIC" }, { 0xc1299200, 0xfffffe00, 23, "AFRINIC" }, { 0xc15f0000, 0xffff8000, 17, "AFRINIC" }, { 0xc16c1700, 0xffffff00, 24, "AFRINIC" }, { 0xc16c1c00, 0xffffff00, 24, "AFRINIC" }, { 0xc16cd600, 0xffffff00, 24, "AFRINIC" }, { 0xc16cfc00, 0xfffffc00, 22, "AFRINIC" }, { 0xc16d4200, 0xfffffe00, 23, "AFRINIC" }, { 0xc16e6800, 0xfffffe00, 23, "AFRINIC" }, { 0xc1bc0700, 0xffffff00, 24, "AFRINIC" }, { 0xc1bd0000, 0xffffc000, 18, "AFRINIC" }, { 0xc1bd4000, 0xfffffe00, 23, "AFRINIC" }, { 0xc1bd8000, 0xffffff00, 24, "AFRINIC" }, { 0xc1c20100, 0xffffff00, 24, "AFRINIC" }, { 0xc1c20200, 0xfffffe00, 23, "AFRINIC" }, { 0xc1c20400, 0xfffffe00, 23, "AFRINIC" }, { 0xc1c22000, 0xffffe000, 19, "AFRINIC" }, { 0xc1c24000, 0xffffe000, 19, "AFRINIC" }, { 0xc1c28000, 0xffffff00, 24, "AFRINIC" }, { 0xc1c2a000, 0xffffe000, 19, "AFRINIC" }, { 0xc1ddda00, 0xffffff00, 24, "AFRINIC" }, { 0xc1e30000, 0xffffc000, 18, "AFRINIC" }, { 0xc1e38000, 0xffffff00, 24, "AFRINIC" }, { 0xc2000000, 0xfe000000, 7, "RIPENCC" }, { 0xc206e000, 0xffffff00, 24, "AFRINIC" }, { 0xc2094000, 0xfffffe00, 23, "AFRINIC" }, { 0xc2095200, 0xfffffe00, 23, "AFRINIC" }, { 0xc24f6000, 0xffffe000, 19, "AFRINIC" }, { 0xc2ccc000, 0xffffc000, 18, "AFRINIC" }, { 0xc3185000, 0xfffff800, 21, "AFRINIC" }, { 0xc318c000, 0xffffe000, 19, "AFRINIC" }, { 0xc327da00, 0xfffffe00, 23, "AFRINIC" }, { 0xc32b0000, 0xffffe000, 19, "AFRINIC" }, { 0xc3a6e000, 0xffffe000, 19, "AFRINIC" }, { 0xc3ca4000, 0xffffe000, 19, "AFRINIC" }, { 0xc3eaa800, 0xffffff00, 24, "AFRINIC" }, { 0xc3eab900, 0xffffff00, 24, "AFRINIC" }, { 0xc3eafc00, 0xfffffc00, 22, "AFRINIC" }, { 0xc3f62000, 0xffffe000, 19, "AFRINIC" }, { 0xc4000000, 0xffff0000, 16, "AFRINIC" }, { 0xc4010000, 0xffffff00, 24, "AFRINIC" }, { 0xc4010100, 0xffffff00, 24, "APNIC" }, { 0xc4010300, 0xffffff00, 24, "RIPENCC" }, { 0xc4010400, 0xffffff00, 24, "AFRINIC" }, { 0xc4010500, 0xffffff00, 24, "RIPENCC" }, { 0xc4010600, 0xffffff00, 24, "RIPENCC" }, { 0xc4010700, 0xffffff00, 24, "AFRINIC" }, { 0xc4010800, 0xfffffc00, 22, "AFRINIC" }, { 0xc4010f00, 0xffffff00, 24, "AFRINIC" }, { 0xc4011000, 0xfffff800, 21, "AFRINIC" }, { 0xc4011a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4011c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4012000, 0xfffff000, 20, "AFRINIC" }, { 0xc4013400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4013800, 0xfffff800, 21, "AFRINIC" }, { 0xc4014000, 0xfffffc00, 22, "RIPENCC" }, { 0xc4014400, 0xffffff00, 24, "APNIC" }, { 0xc4014500, 0xffffff00, 24, "RIPENCC" }, { 0xc4014600, 0xffffff00, 24, "RIPENCC" }, { 0xc4014700, 0xffffff00, 24, "AFRINIC" }, { 0xc4014a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4015100, 0xffffff00, 24, "AFRINIC" }, { 0xc4015200, 0xfffffe00, 23, "AFRINIC" }, { 0xc4015700, 0xffffff00, 24, "AFRINIC" }, { 0xc4015c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4016000, 0xfffff800, 21, "AFRINIC" }, { 0xc4016800, 0xfffffe00, 23, "APNIC" }, { 0xc4016a00, 0xffffff00, 24, "APNIC" }, { 0xc4016d00, 0xffffff00, 24, "APNIC" }, { 0xc4016e00, 0xfffffe00, 23, "APNIC" }, { 0xc4017000, 0xffffff00, 24, "LACNIC" }, { 0xc4017100, 0xffffff00, 24, "APNIC" }, { 0xc4017200, 0xffffff00, 24, "APNIC" }, { 0xc4017300, 0xffffff00, 24, "AFRINIC" }, { 0xc4017600, 0xfffffe00, 23, "AFRINIC" }, { 0xc4017800, 0xfffff800, 21, "AFRINIC" }, { 0xc4018000, 0xfffffc00, 22, "AFRINIC" }, { 0xc4018400, 0xfffffe00, 23, "AFRINIC" }, { 0xc4018600, 0xffffff00, 24, "APNIC" }, { 0xc4018700, 0xffffff00, 24, "LACNIC" }, { 0xc4018900, 0xffffff00, 24, "AFRINIC" }, { 0xc4018f00, 0xffffff00, 24, "AFRINIC" }, { 0xc4019000, 0xfffff000, 20, "AFRINIC" }, { 0xc401b000, 0xfffff000, 20, "AFRINIC" }, { 0xc401c000, 0xffffc000, 18, "AFRINIC" }, { 0xc4020200, 0xfffffe00, 23, "AFRINIC" }, { 0xc4020400, 0xfffffc00, 22, "RIPENCC" }, { 0xc4020800, 0xfffff800, 21, "AFRINIC" }, { 0xc4021000, 0xfffff000, 20, "AFRINIC" }, { 0xc4022000, 0xffffe000, 19, "AFRINIC" }, { 0xc4024000, 0xffffc000, 18, "AFRINIC" }, { 0xc4028000, 0xffffc000, 18, "AFRINIC" }, { 0xc402c000, 0xffffe000, 19, "AFRINIC" }, { 0xc4030e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4031000, 0xfffff000, 20, "LACNIC" }, { 0xc4033900, 0xffffff00, 24, "AFRINIC" }, { 0xc4033a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4033c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4034000, 0xffffff00, 24, "AFRINIC" }, { 0xc4034100, 0xffffff00, 24, "APNIC" }, { 0xc4034200, 0xfffffe00, 23, "RIPENCC" }, { 0xc4034800, 0xffffff00, 24, "APNIC" }, { 0xc4034a00, 0xfffffe00, 23, "LACNIC" }, { 0xc4034c00, 0xfffffc00, 22, "LACNIC" }, { 0xc4035000, 0xfffff800, 21, "LACNIC" }, { 0xc4035800, 0xfffffe00, 23, "LACNIC" }, { 0xc4035a00, 0xffffff00, 24, "AFRINIC" }, { 0xc4035b00, 0xffffff00, 24, "RIPENCC" }, { 0xc4035c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4035e00, 0xffffff00, 24, "AFRINIC" }, { 0xc4036000, 0xfffff800, 21, "AFRINIC" }, { 0xc4036900, 0xffffff00, 24, "AFRINIC" }, { 0xc4036a00, 0xffffff00, 24, "LACNIC" }, { 0xc4036b00, 0xffffff00, 24, "AFRINIC" }, { 0xc4036c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4037000, 0xfffff800, 21, "AFRINIC" }, { 0xc4037c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4038400, 0xfffffc00, 22, "LACNIC" }, { 0xc4038800, 0xfffff800, 21, "LACNIC" }, { 0xc4039000, 0xfffffc00, 22, "LACNIC" }, { 0xc4039400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4039800, 0xffffff00, 24, "LACNIC" }, { 0xc4039a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4039c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc403a000, 0xfffff800, 21, "AFRINIC" }, { 0xc403b400, 0xfffffc00, 22, "AFRINIC" }, { 0xc403e000, 0xffffe000, 19, "AFRINIC" }, { 0xc4040000, 0xfffff000, 20, "AFRINIC" }, { 0xc4041400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4041e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4042400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4044700, 0xffffff00, 24, "AFRINIC" }, { 0xc4044c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4045000, 0xfffff800, 21, "AFRINIC" }, { 0xc4045e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4046000, 0xfffff800, 21, "AFRINIC" }, { 0xc4049600, 0xfffffe00, 23, "AFRINIC" }, { 0xc404a000, 0xfffffc00, 22, "AFRINIC" }, { 0xc404a600, 0xfffffe00, 23, "AFRINIC" }, { 0xc404a800, 0xfffffe00, 23, "AFRINIC" }, { 0xc404ac00, 0xfffffe00, 23, "AFRINIC" }, { 0xc404bd00, 0xffffff00, 24, "AFRINIC" }, { 0xc404be00, 0xfffffe00, 23, "AFRINIC" }, { 0xc404c800, 0xfffff800, 21, "AFRINIC" }, { 0xc404d400, 0xfffffc00, 22, "AFRINIC" }, { 0xc404e800, 0xfffffc00, 22, "AFRINIC" }, { 0xc404ef00, 0xffffff00, 24, "AFRINIC" }, { 0xc404f900, 0xffffff00, 24, "AFRINIC" }, { 0xc404fa00, 0xfffffe00, 23, "AFRINIC" }, { 0xc404fc00, 0xfffffe00, 23, "AFRINIC" }, { 0xc404ff00, 0xffffff00, 24, "AFRINIC" }, { 0xc4050000, 0xffff0000, 16, "AFRINIC" }, { 0xc4060000, 0xfffffe00, 23, "AFRINIC" }, { 0xc4066500, 0xffffff00, 24, "AFRINIC" }, { 0xc4066600, 0xfffffe00, 23, "AFRINIC" }, { 0xc4067800, 0xfffffc00, 22, "AFRINIC" }, { 0xc4068300, 0xffffff00, 24, "AFRINIC" }, { 0xc4068500, 0xffffff00, 24, "AFRINIC" }, { 0xc4068600, 0xfffffe00, 23, "AFRINIC" }, { 0xc4068800, 0xfffff800, 21, "AFRINIC" }, { 0xc4069000, 0xfffff000, 20, "AFRINIC" }, { 0xc406a000, 0xfffff800, 21, "AFRINIC" }, { 0xc406a800, 0xfffffc00, 22, "AFRINIC" }, { 0xc406ac00, 0xfffffe00, 23, "AFRINIC" }, { 0xc406b800, 0xfffff800, 21, "AFRINIC" }, { 0xc406c000, 0xfffff000, 20, "AFRINIC" }, { 0xc406d400, 0xfffffc00, 22, "AFRINIC" }, { 0xc406dc00, 0xfffffc00, 22, "AFRINIC" }, { 0xc406ec00, 0xfffffc00, 22, "AFRINIC" }, { 0xc406f000, 0xfffffc00, 22, "AFRINIC" }, { 0xc406f800, 0xfffffe00, 23, "AFRINIC" }, { 0xc406fb00, 0xffffff00, 24, "AFRINIC" }, { 0xc406fc00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4070000, 0xffff0000, 16, "AFRINIC" }, { 0xc4080000, 0xfffe0000, 15, "AFRINIC" }, { 0xc40a0100, 0xffffff00, 24, "AFRINIC" }, { 0xc40a0200, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a0400, 0xfffffc00, 22, "AFRINIC" }, { 0xc40a0800, 0xfffff800, 21, "AFRINIC" }, { 0xc40a1000, 0xfffff000, 20, "AFRINIC" }, { 0xc40a2000, 0xfffff000, 20, "AFRINIC" }, { 0xc40a3000, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a3200, 0xffffff00, 24, "AFRINIC" }, { 0xc40a3c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a6000, 0xfffff800, 21, "AFRINIC" }, { 0xc40a6800, 0xfffffc00, 22, "AFRINIC" }, { 0xc40a7000, 0xfffffc00, 22, "AFRINIC" }, { 0xc40a7600, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a7800, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a7c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc40a8000, 0xfffffc00, 22, "AFRINIC" }, { 0xc40a8900, 0xffffff00, 24, "AFRINIC" }, { 0xc40a8a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a8e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40a9300, 0xffffff00, 24, "AFRINIC" }, { 0xc40a9500, 0xffffff00, 24, "AFRINIC" }, { 0xc40a9600, 0xfffffe00, 23, "AFRINIC" }, { 0xc40ac800, 0xfffff800, 21, "AFRINIC" }, { 0xc40ad800, 0xfffff800, 21, "AFRINIC" }, { 0xc40ae000, 0xfffff000, 20, "AFRINIC" }, { 0xc40af600, 0xfffffe00, 23, "AFRINIC" }, { 0xc40afb00, 0xffffff00, 24, "AFRINIC" }, { 0xc40afc00, 0xfffffc00, 22, "AFRINIC" }, { 0xc40b0000, 0xfffff000, 20, "AFRINIC" }, { 0xc40b1f00, 0xffffff00, 24, "AFRINIC" }, { 0xc40b3800, 0xfffffc00, 22, "AFRINIC" }, { 0xc40b3c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40b3e00, 0xffffff00, 24, "AFRINIC" }, { 0xc40b4000, 0xfffff800, 21, "AFRINIC" }, { 0xc40b4b00, 0xffffff00, 24, "AFRINIC" }, { 0xc40b4c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc40b5800, 0xfffff800, 21, "AFRINIC" }, { 0xc40b6200, 0xfffffe00, 23, "AFRINIC" }, { 0xc40b6600, 0xffffff00, 24, "AFRINIC" }, { 0xc40b6900, 0xffffff00, 24, "AFRINIC" }, { 0xc40b6d00, 0xffffff00, 24, "AFRINIC" }, { 0xc40b7300, 0xffffff00, 24, "AFRINIC" }, { 0xc40b7400, 0xfffffe00, 23, "AFRINIC" }, { 0xc40b7a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40b7c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40b8800, 0xfffff800, 21, "AFRINIC" }, { 0xc40b9200, 0xfffffe00, 23, "AFRINIC" }, { 0xc40ba000, 0xfffff800, 21, "AFRINIC" }, { 0xc40baa00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40bbc00, 0xffffff00, 24, "AFRINIC" }, { 0xc40bc000, 0xfffffc00, 22, "AFRINIC" }, { 0xc40bc500, 0xffffff00, 24, "AFRINIC" }, { 0xc40bc600, 0xfffffe00, 23, "AFRINIC" }, { 0xc40bc800, 0xfffffe00, 23, "AFRINIC" }, { 0xc40bcd00, 0xffffff00, 24, "AFRINIC" }, { 0xc40bd000, 0xfffffe00, 23, "AFRINIC" }, { 0xc40bd500, 0xffffff00, 24, "AFRINIC" }, { 0xc40bde00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40be800, 0xfffffe00, 23, "AFRINIC" }, { 0xc40beb00, 0xffffff00, 24, "AFRINIC" }, { 0xc40bec00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40bef00, 0xffffff00, 24, "AFRINIC" }, { 0xc40bf700, 0xffffff00, 24, "AFRINIC" }, { 0xc40bf800, 0xfffffe00, 23, "AFRINIC" }, { 0xc40bfc00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40c0a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40c0c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc40c1000, 0xfffff000, 20, "AFRINIC" }, { 0xc40c2000, 0xffffe000, 19, "APNIC" }, { 0xc40c8000, 0xffffe000, 19, "AFRINIC" }, { 0xc40cc000, 0xffffc000, 18, "AFRINIC" }, { 0xc40d0100, 0xffffff00, 24, "AFRINIC" }, { 0xc40d1f00, 0xffffff00, 24, "AFRINIC" }, { 0xc40d5100, 0xffffff00, 24, "AFRINIC" }, { 0xc40d7100, 0xffffff00, 24, "AFRINIC" }, { 0xc40d7200, 0xfffffe00, 23, "AFRINIC" }, { 0xc40d7400, 0xfffffc00, 22, "AFRINIC" }, { 0xc40d7800, 0xffffff00, 24, "AFRINIC" }, { 0xc40d7f00, 0xffffff00, 24, "AFRINIC" }, { 0xc40d8000, 0xfffffc00, 22, "AFRINIC" }, { 0xc40d8400, 0xffffff00, 24, "AFRINIC" }, { 0xc40d8a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40d9300, 0xffffff00, 24, "AFRINIC" }, { 0xc40d9400, 0xfffffc00, 22, "AFRINIC" }, { 0xc40d9800, 0xfffff800, 21, "AFRINIC" }, { 0xc40da000, 0xffffff00, 24, "AFRINIC" }, { 0xc40da200, 0xfffffe00, 23, "AFRINIC" }, { 0xc40da400, 0xfffffc00, 22, "AFRINIC" }, { 0xc40da800, 0xffffff00, 24, "AFRINIC" }, { 0xc40daa00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40db800, 0xfffffe00, 23, "AFRINIC" }, { 0xc40dbb00, 0xffffff00, 24, "AFRINIC" }, { 0xc40dc800, 0xffffff00, 24, "AFRINIC" }, { 0xc40dcd00, 0xffffff00, 24, "AFRINIC" }, { 0xc40dd200, 0xfffffe00, 23, "AFRINIC" }, { 0xc40dd500, 0xffffff00, 24, "AFRINIC" }, { 0xc40dd600, 0xfffffe00, 23, "AFRINIC" }, { 0xc40dd800, 0xfffffc00, 22, "AFRINIC" }, { 0xc40ddc00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40dde00, 0xffffff00, 24, "AFRINIC" }, { 0xc40de000, 0xfffff800, 21, "AFRINIC" }, { 0xc40de800, 0xfffffc00, 22, "AFRINIC" }, { 0xc40def00, 0xffffff00, 24, "AFRINIC" }, { 0xc40df000, 0xfffffe00, 23, "AFRINIC" }, { 0xc40df600, 0xfffffe00, 23, "AFRINIC" }, { 0xc40df900, 0xffffff00, 24, "AFRINIC" }, { 0xc40dfa00, 0xfffffe00, 23, "AFRINIC" }, { 0xc40e0000, 0xffff0000, 16, "AFRINIC" }, { 0xc40f0000, 0xfffff000, 20, "AFRINIC" }, { 0xc40f1000, 0xfffff000, 20, "APNIC" }, { 0xc40f2000, 0xffffe000, 19, "RIPENCC" }, { 0xc40f4000, 0xffffc000, 18, "AFRINIC" }, { 0xc40f8000, 0xffff8000, 17, "AFRINIC" }, { 0xc4100000, 0xfff80000, 13, "AFRINIC" }, { 0xc4180000, 0xfffe0000, 15, "AFRINIC" }, { 0xc41a0000, 0xffff0000, 16, "AFRINIC" }, { 0xc41b4000, 0xffffc000, 18, "AFRINIC" }, { 0xc41b8000, 0xffff8000, 17, "AFRINIC" }, { 0xc41c0000, 0xfffff800, 21, "AFRINIC" }, { 0xc41c0800, 0xffffff00, 24, "AFRINIC" }, { 0xc41c0a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc41c0c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc41c1000, 0xfffff000, 20, "AFRINIC" }, { 0xc41c4000, 0xffffc000, 18, "AFRINIC" }, { 0xc41c8000, 0xffffc000, 18, "AFRINIC" }, { 0xc41ce000, 0xffffe000, 19, "AFRINIC" }, { 0xc41d0000, 0xffffc000, 18, "AFRINIC" }, { 0xc41d4000, 0xffffe000, 19, "LACNIC" }, { 0xc41d6000, 0xffffe000, 19, "AFRINIC" }, { 0xc41d8000, 0xffff8000, 17, "AFRINIC" }, { 0xc41e0000, 0xfffe0000, 15, "AFRINIC" }, { 0xc4202000, 0xffffe000, 19, "LACNIC" }, { 0xc4204000, 0xffffe000, 19, "LACNIC" }, { 0xc4207000, 0xfffff000, 20, "AFRINIC" }, { 0xc420c000, 0xfffff000, 20, "AFRINIC" }, { 0xc420d000, 0xfffff800, 21, "AFRINIC" }, { 0xc420e000, 0xfffff000, 20, "AFRINIC" }, { 0xc420f000, 0xfffff800, 21, "AFRINIC" }, { 0xc4210000, 0xffff0000, 16, "AFRINIC" }, { 0xc4220000, 0xfffe0000, 15, "AFRINIC" }, { 0xc4240000, 0xfffc0000, 14, "AFRINIC" }, { 0xc4280000, 0xffffc000, 18, "LACNIC" }, { 0xc4284000, 0xffffe000, 19, "LACNIC" }, { 0xc4286000, 0xfffff000, 20, "AFRINIC" }, { 0xc4288000, 0xffffe000, 19, "AFRINIC" }, { 0xc428a000, 0xfffff000, 20, "AFRINIC" }, { 0xc428c000, 0xffffc000, 18, "AFRINIC" }, { 0xc4290000, 0xffffc000, 18, "AFRINIC" }, { 0xc4296000, 0xffffe000, 19, "AFRINIC" }, { 0xc4298000, 0xffff8000, 17, "AFRINIC" }, { 0xc42a4000, 0xffffc000, 18, "AFRINIC" }, { 0xc42b0000, 0xffff8000, 17, "AFRINIC" }, { 0xc42b8000, 0xffffc000, 18, "AFRINIC" }, { 0xc42bc000, 0xffffe000, 19, "AFRINIC" }, { 0xc42be000, 0xfffff000, 20, "AFRINIC" }, { 0xc42bf000, 0xfffff800, 21, "AFRINIC" }, { 0xc42bf800, 0xfffffe00, 23, "AFRINIC" }, { 0xc42bfb00, 0xffffff00, 24, "AFRINIC" }, { 0xc42c0000, 0xfffe0000, 15, "AFRINIC" }, { 0xc42e0000, 0xffff0000, 16, "AFRINIC" }, { 0xc42f0000, 0xffff8000, 17, "AFRINIC" }, { 0xc42f8000, 0xffffc000, 18, "AFRINIC" }, { 0xc4300000, 0xffff0000, 16, "AFRINIC" }, { 0xc4340000, 0xfffc0000, 14, "AFRINIC" }, { 0xc4380000, 0xfffc0000, 14, "AFRINIC" }, { 0xc43e0000, 0xfffe0000, 15, "AFRINIC" }, { 0xc4c00000, 0xfffff000, 20, "AFRINIC" }, { 0xc4c02000, 0xfffff000, 20, "AFRINIC" }, { 0xc4c04000, 0xfffff800, 21, "AFRINIC" }, { 0xc4c05000, 0xfffffc00, 22, "AFRINIC" }, { 0xc4c06000, 0xfffff000, 20, "AFRINIC" }, { 0xc4c07000, 0xfffffc00, 22, "AFRINIC" }, { 0xc4c07c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4c08c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4c10000, 0xffff0000, 16, "AFRINIC" }, { 0xc4c20000, 0xfffe0000, 15, "AFRINIC" }, { 0xc4c40000, 0xfffc0000, 14, "AFRINIC" }, { 0xc4c80000, 0xffff8000, 17, "AFRINIC" }, { 0xc4c88000, 0xffffc000, 18, "AFRINIC" }, { 0xc4c90100, 0xffffff00, 24, "AFRINIC" }, { 0xc4c90200, 0xfffffe00, 23, "AFRINIC" }, { 0xc4c90400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4c90c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4c91000, 0xfffff000, 20, "AFRINIC" }, { 0xc4c92000, 0xffffe000, 19, "AFRINIC" }, { 0xc4c94000, 0xffffe000, 19, "AFRINIC" }, { 0xc4c98000, 0xffffe000, 19, "AFRINIC" }, { 0xc4c9c000, 0xffffe000, 19, "AFRINIC" }, { 0xc4c9e000, 0xfffff800, 21, "AFRINIC" }, { 0xc4c9f000, 0xfffff000, 20, "AFRINIC" }, { 0xc4ca0000, 0xffff8000, 17, "AFRINIC" }, { 0xc4ca8000, 0xffffe000, 19, "AFRINIC" }, { 0xc4cac000, 0xffffe000, 19, "AFRINIC" }, { 0xc4cae800, 0xfffff800, 21, "AFRINIC" }, { 0xc4caf000, 0xfffff000, 20, "AFRINIC" }, { 0xc4cb0000, 0xffff0000, 16, "AFRINIC" }, { 0xc4cc0000, 0xfffe0000, 15, "AFRINIC" }, { 0xc4ce0000, 0xffff0000, 16, "AFRINIC" }, { 0xc4cf0000, 0xffffc000, 18, "AFRINIC" }, { 0xc4cfc000, 0xffffc000, 18, "AFRINIC" }, { 0xc4d00000, 0xfff80000, 13, "AFRINIC" }, { 0xc4d80000, 0xffffff00, 24, "AFRINIC" }, { 0xc4d80200, 0xfffffe00, 23, "AFRINIC" }, { 0xc4d80400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4d80800, 0xfffff800, 21, "AFRINIC" }, { 0xc4d81000, 0xfffff800, 21, "AFRINIC" }, { 0xc4d82000, 0xffffe000, 19, "AFRINIC" }, { 0xc4d84000, 0xffffe000, 19, "AFRINIC" }, { 0xc4d88000, 0xfffffc00, 22, "AFRINIC" }, { 0xc4d88c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc4d89000, 0xfffff000, 20, "AFRINIC" }, { 0xc4d8a000, 0xffffe000, 19, "AFRINIC" }, { 0xc4d8c000, 0xfffff800, 21, "AFRINIC" }, { 0xc4d8c800, 0xfffffc00, 22, "AFRINIC" }, { 0xc4d8d000, 0xfffffc00, 22, "AFRINIC" }, { 0xc4d8d400, 0xffffff00, 24, "AFRINIC" }, { 0xc4d8e400, 0xfffffc00, 22, "AFRINIC" }, { 0xc4d8e800, 0xfffff800, 21, "AFRINIC" }, { 0xc4d8f000, 0xfffff000, 20, "AFRINIC" }, { 0xc4d90000, 0xffff0000, 16, "AFRINIC" }, { 0xc4da0000, 0xfffe0000, 15, "AFRINIC" }, { 0xc4dc0000, 0xffff8000, 17, "AFRINIC" }, { 0xc4dcc000, 0xffffc000, 18, "AFRINIC" }, { 0xc4dd0000, 0xffff0000, 16, "AFRINIC" }, { 0xc4de0000, 0xffff0000, 16, "AFRINIC" }, { 0xc4df0000, 0xfffff000, 20, "AFRINIC" }, { 0xc4df1000, 0xfffff800, 21, "AFRINIC" }, { 0xc4df1800, 0xfffffc00, 22, "AFRINIC" }, { 0xc4df1c00, 0xffffff00, 24, "AFRINIC" }, { 0xc4df1e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc4df2000, 0xfffffe00, 23, "AFRINIC" }, { 0xc4df9000, 0xfffff800, 21, "AFRINIC" }, { 0xc4f00000, 0xfff80000, 13, "AFRINIC" }, { 0xc4f80000, 0xffff0000, 16, "AFRINIC" }, { 0xc4f90000, 0xffffc000, 18, "AFRINIC" }, { 0xc4fc0000, 0xfffc0000, 14, "AFRINIC" }, { 0xc5000000, 0xff000000, 8, "AFRINIC" }, { 0xc6000000, 0xfe000000, 7, "ARIN" }, { 0xc6021000, 0xfffff000, 20, "LACNIC" }, { 0xc60b0000, 0xfffffc00, 22, "RIPENCC" }, { 0xc60f2000, 0xffffe000, 19, "APNIC" }, { 0xc6110100, 0xffffff00, 24, "APNIC" }, { 0xc6114600, 0xffffff00, 24, "APNIC" }, { 0xc6114d00, 0xffffff00, 24, "RIPENCC" }, { 0xc6117500, 0xffffff00, 24, "RIPENCC" }, { 0xc6117600, 0xffffff00, 24, "APNIC" }, { 0xc611b400, 0xfffffe00, 23, "RIPENCC" }, { 0xc611b600, 0xffffff00, 24, "RIPENCC" }, { 0xc6162f00, 0xffffff00, 24, "APNIC" }, { 0xc6163300, 0xffffff00, 24, "RIPENCC" }, { 0xc6163d00, 0xffffff00, 24, "APNIC" }, { 0xc6165d00, 0xffffff00, 24, "RIPENCC" }, { 0xc6165e00, 0xfffffe00, 23, "RIPENCC" }, { 0xc6166000, 0xfffffe00, 23, "RIPENCC" }, { 0xc616fa00, 0xfffffe00, 23, "LACNIC" }, { 0xc61b0400, 0xfffffc00, 22, "APNIC" }, { 0xc61b0800, 0xffffff00, 24, "APNIC" }, { 0xc6242000, 0xfffff800, 21, "RIPENCC" }, { 0xc6292000, 0xfffff800, 21, "LACNIC" }, { 0xc6292800, 0xfffffc00, 22, "LACNIC" }, { 0xc6292c00, 0xfffffe00, 23, "LACNIC" }, { 0xc6292e00, 0xffffff00, 24, "LACNIC" }, { 0xc6300000, 0xfffffc00, 22, "APNIC" }, { 0xc6317000, 0xfffffe00, 23, "APNIC" }, { 0xc6317c00, 0xffffff00, 24, "APNIC" }, { 0xc631a400, 0xffffff00, 24, "LACNIC" }, { 0xc6330c00, 0xffffff00, 24, "RIPENCC" }, { 0xc6334700, 0xffffff00, 24, "LACNIC" }, { 0xc6338f00, 0xffffff00, 24, "RIPENCC" }, { 0xc633c300, 0xffffff00, 24, "APNIC" }, { 0xc633d200, 0xffffff00, 24, "APNIC" }, { 0xc6360100, 0xffffff00, 24, "AFRINIC" }, { 0xc6360200, 0xfffffe00, 23, "AFRINIC" }, { 0xc6360400, 0xfffffc00, 22, "AFRINIC" }, { 0xc6360800, 0xfffffe00, 23, "AFRINIC" }, { 0xc6360a00, 0xffffff00, 24, "AFRINIC" }, { 0xc6360f00, 0xffffff00, 24, "AFRINIC" }, { 0xc6361000, 0xfffff800, 21, "AFRINIC" }, { 0xc6362600, 0xfffffe00, 23, "AFRINIC" }, { 0xc6362c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc6363000, 0xfffff800, 21, "AFRINIC" }, { 0xc6363800, 0xfffffc00, 22, "AFRINIC" }, { 0xc6363c00, 0xfffffe00, 23, "AFRINIC" }, { 0xc6364000, 0xfffff000, 20, "AFRINIC" }, { 0xc6365000, 0xffffff00, 24, "AFRINIC" }, { 0xc6365300, 0xffffff00, 24, "AFRINIC" }, { 0xc6365400, 0xfffffc00, 22, "AFRINIC" }, { 0xc6365b00, 0xffffff00, 24, "AFRINIC" }, { 0xc6366200, 0xfffffe00, 23, "AFRINIC" }, { 0xc6368d00, 0xffffff00, 24, "AFRINIC" }, { 0xc6368e00, 0xfffffe00, 23, "AFRINIC" }, { 0xc6369000, 0xfffff800, 21, "AFRINIC" }, { 0xc6369a00, 0xfffffe00, 23, "AFRINIC" }, { 0xc6369c00, 0xfffffc00, 22, "AFRINIC" }, { 0xc636a000, 0xfffffc00, 22, "AFRINIC" }, { 0xc636a500, 0xffffff00, 24, "AFRINIC" }, { 0xc636aa00, 0xffffff00, 24, "AFRINIC" }, { 0xc636ad00, 0xffffff00, 24, "AFRINIC" }, { 0xc636ae00, 0xfffffe00, 23, "AFRINIC" }, { 0xc636b000, 0xfffffc00, 22, "AFRINIC" }, { 0xc636b400, 0xfffffe00, 23, "AFRINIC" }, { 0xc636b700, 0xffffff00, 24, "AFRINIC" }, { 0xc636b800, 0xfffff800, 21, "AFRINIC" }, { 0xc636c000, 0xfffff800, 21, "AFRINIC" }, { 0xc636ca00, 0xfffffe00, 23, "AFRINIC" }, { 0xc636d200, 0xffffff00, 24, "AFRINIC" }, { 0xc636db00, 0xffffff00, 24, "AFRINIC" }, { 0xc636dc00, 0xffffff00, 24, "AFRINIC" }, { 0xc636df00, 0xffffff00, 24, "AFRINIC" }, { 0xc636e100, 0xffffff00, 24, "AFRINIC" }, { 0xc636e200, 0xfffffe00, 23, "AFRINIC" }, { 0xc636e400, 0xfffffe00, 23, "AFRINIC" }, { 0xc636e700, 0xffffff00, 24, "AFRINIC" }, { 0xc636e800, 0xffffff00, 24, "AFRINIC" }, { 0xc636ea00, 0xffffff00, 24, "AFRINIC" }, { 0xc636f700, 0xffffff00, 24, "AFRINIC" }, { 0xc636f800, 0xfffffc00, 22, "AFRINIC" }, { 0xc636fc00, 0xfffffe00, 23, "AFRINIC" }, { 0xc636fe00, 0xffffff00, 24, "AFRINIC" }, { 0xc649dc00, 0xffffff00, 24, "APNIC" }, { 0xc6639400, 0xffffff00, 24, "RIPENCC" }, { 0xc663ad00, 0xffffff00, 24, "APNIC" }, { 0xc663de00, 0xffffff00, 24, "RIPENCC" }, { 0xc6855000, 0xfffffc00, 22, "RIPENCC" }, { 0xc6858c00, 0xffffff00, 24, "RIPENCC" }, { 0xc685e200, 0xffffff00, 24, "RIPENCC" }, { 0xc6878900, 0xffffff00, 24, "RIPENCC" }, { 0xc6878a00, 0xffffff00, 24, "RIPENCC" }, { 0xc687a700, 0xffffff00, 24, "RIPENCC" }, { 0xc68e0000, 0xffff0000, 16, "APNIC" }, { 0xc693a000, 0xffffff00, 24, "RIPENCC" }, { 0xc694b100, 0xffffff00, 24, "RIPENCC" }, { 0xc694b200, 0xffffff00, 24, "RIPENCC" }, { 0xc6978400, 0xffffff00, 24, "LACNIC" }, { 0xc6b48e00, 0xffffff00, 24, "APNIC" }, { 0xc6b8a100, 0xffffff00, 24, "LACNIC" }, { 0xc6c80000, 0xfffff800, 21, "APNIC" }, { 0xc6c80800, 0xfffffe00, 23, "APNIC" }, { 0xc6cec500, 0xffffff00, 24, "RIPENCC" }, { 0xc6cec800, 0xfffffe00, 23, "RIPENCC" }, { 0xc6f08000, 0xffff8000, 17, "RIPENCC" }, { 0xc71aea00, 0xffffff00, 24, "LACNIC" }, { 0xc72b1200, 0xfffffe00, 23, "APNIC" }, { 0xc72b2d00, 0xffffff00, 24, "APNIC" }, { 0xc72b3f00, 0xffffff00, 24, "APNIC" }, { 0xc72bf600, 0xfffffe00, 23, "RIPENCC" }, { 0xc7350000, 0xffff0000, 16, "RIPENCC" }, { 0xc75b1000, 0xfffff000, 20, "RIPENCC" }, { 0xc7676600, 0xffffff00, 24, "LACNIC" }, { 0xc7a62200, 0xfffffe00, 23, "APNIC" }, { 0xc7a62400, 0xfffffe00, 23, "APNIC" }, { 0xc7f89000, 0xffffff00, 24, "LACNIC" }, { 0xc8000000, 0xfe000000, 7, "LACNIC" }, { 0xc8005e00, 0xffffff00, 24, "ARIN" }, { 0xc8008900, 0xffffff00, 24, "ARIN" }, { 0xc8008a00, 0xffffff00, 24, "ARIN" }, { 0xc800d800, 0xfffff800, 21, "ARIN" }, { 0xc801a000, 0xffffff00, 24, "ARIN" }, { 0xc8050000, 0xfffff800, 21, "ARIN" }, { 0xc8050800, 0xffffff00, 24, "ARIN" }, { 0xc8050b00, 0xffffff00, 24, "ARIN" }, { 0xc8095200, 0xfffffe00, 23, "ARIN" }, { 0xc8097300, 0xffffff00, 24, "ARIN" }, { 0xc80a9800, 0xffffff00, 24, "ARIN" }, { 0xc80a9b00, 0xffffff00, 24, "ARIN" }, { 0xc80aa000, 0xffffff00, 24, "ARIN" }, { 0xc80aa500, 0xffffff00, 24, "ARIN" }, { 0xc80aa600, 0xffffff00, 24, "ARIN" }, { 0xc80ca800, 0xffffff00, 24, "ARIN" }, { 0xc80ce000, 0xfffff000, 20, "ARIN" }, { 0xc80f0000, 0xffff0000, 16, "ARIN" }, { 0xc8100800, 0xfffff800, 21, "AFRINIC" }, { 0xc8105800, 0xffffff00, 24, "ARIN" }, { 0xc81e0000, 0xffffc000, 18, "ARIN" }, { 0xc8320000, 0xffffe000, 19, "ARIN" }, { 0xc8324000, 0xffffe000, 19, "ARIN" }, { 0xc8328000, 0xfffff000, 20, "ARIN" }, { 0xc83a0000, 0xffffc000, 18, "ARIN" }, { 0xc83e0000, 0xffffc000, 18, "ARIN" }, { 0xca000000, 0xfe000000, 7, "APNIC" }, { 0xca7b0000, 0xffffe000, 19, "AFRINIC" }, { 0xcc000000, 0xfc000000, 6, "ARIN" }, { 0xcc0c8000, 0xfffff000, 20, "AFRINIC" }, { 0xcc3a8800, 0xfffffc00, 22, "LACNIC" }, { 0xcc4b8e00, 0xffffff00, 24, "APNIC" }, { 0xcc508f00, 0xffffff00, 24, "LACNIC" }, { 0xcc57a900, 0xffffff00, 24, "LACNIC" }, { 0xcc57b300, 0xffffff00, 24, "AFRINIC" }, { 0xcc59ce00, 0xffffff00, 24, "LACNIC" }, { 0xcc7c6800, 0xfffffc00, 22, "LACNIC" }, { 0xcc7e0c00, 0xfffffe00, 23, "LACNIC" }, { 0xcc7e8000, 0xfffffe00, 23, "LACNIC" }, { 0xcc7e8c00, 0xfffffe00, 23, "LACNIC" }, { 0xcc91c900, 0xffffff00, 24, "LACNIC" }, { 0xcc980e00, 0xfffffe00, 23, "AFRINIC" }, { 0xcc991800, 0xfffffe00, 23, "LACNIC" }, { 0xcceb2000, 0xfffff800, 21, "AFRINIC" }, { 0xcd936800, 0xfffff800, 21, "APNIC" }, { 0xcd9f4f00, 0xffffff00, 24, "AFRINIC" }, { 0xcda6b100, 0xffffff00, 24, "APNIC" }, { 0xcda6fb00, 0xffffff00, 24, "LACNIC" }, { 0xce83c000, 0xfffff000, 20, "APNIC" }, { 0xcedf7c00, 0xffffff00, 24, "LACNIC" }, { 0xcedf8200, 0xffffff00, 24, "LACNIC" }, { 0xcedf8800, 0xffffff00, 24, "AFRINIC" }, { 0xcee02000, 0xffffe000, 19, "LACNIC" }, { 0xcff80000, 0xffffc000, 18, "LACNIC" }, { 0xcff84000, 0xfffffe00, 23, "LACNIC" }, { 0xcff84400, 0xfffffc00, 22, "LACNIC" }, { 0xcff84800, 0xfffffe00, 23, "LACNIC" }, { 0xcff84e00, 0xfffffe00, 23, "LACNIC" }, { 0xcff85200, 0xfffffe00, 23, "LACNIC" }, { 0xcff85400, 0xffffff00, 24, "LACNIC" }, { 0xcff85800, 0xfffffc00, 22, "LACNIC" }, { 0xcff86000, 0xfffffc00, 22, "LACNIC" }, { 0xcff86400, 0xffffff00, 24, "LACNIC" }, { 0xcff86800, 0xfffffe00, 23, "LACNIC" }, { 0xcff86c00, 0xfffffc00, 22, "LACNIC" }, { 0xcff87000, 0xfffffc00, 22, "LACNIC" }, { 0xcff87600, 0xfffffe00, 23, "LACNIC" }, { 0xcff87800, 0xffffff00, 24, "LACNIC" }, { 0xcff87a00, 0xffffff00, 24, "LACNIC" }, { 0xcff88000, 0xffffc000, 18, "LACNIC" }, { 0xcff8e000, 0xffffe000, 19, "LACNIC" }, { 0xcff90000, 0xffff0000, 16, "LACNIC" }, { 0xd0000000, 0xfe000000, 7, "ARIN" }, { 0xd10d0000, 0xffff0000, 16, "LACNIC" }, { 0xd12d0000, 0xffff8000, 17, "LACNIC" }, { 0xd15ec000, 0xffffe000, 19, "LACNIC" }, { 0xd163e000, 0xfffff000, 20, "LACNIC" }, { 0xd1cb0000, 0xffffc000, 18, "AFRINIC" }, { 0xd1d46000, 0xffffe000, 19, "AFRINIC" }, { 0xd2000000, 0xfe000000, 7, "APNIC" }, { 0xd4000000, 0xfe000000, 7, "RIPENCC" }, { 0xd4008000, 0xffffe000, 19, "AFRINIC" }, { 0xd40ce000, 0xffffe000, 19, "AFRINIC" }, { 0xd416a000, 0xffffe000, 19, "AFRINIC" }, { 0xd4314000, 0xffffe000, 19, "AFRINIC" }, { 0xd4348000, 0xffffe000, 19, "AFRINIC" }, { 0xd43c4000, 0xffffe000, 19, "AFRINIC" }, { 0xd455c000, 0xffffe000, 19, "AFRINIC" }, { 0xd4586000, 0xffffe000, 19, "AFRINIC" }, { 0xd4600000, 0xffffe000, 19, "AFRINIC" }, { 0xd4644000, 0xffffe000, 19, "AFRINIC" }, { 0xd467a000, 0xffffe000, 19, "AFRINIC" }, { 0xd47ae000, 0xffffe000, 19, "AFRINIC" }, { 0xd4d90000, 0xffff8000, 17, "AFRINIC" }, { 0xd5374000, 0xffffc000, 18, "AFRINIC" }, { 0xd5834000, 0xffffe000, 19, "AFRINIC" }, { 0xd5886000, 0xffffe000, 19, "AFRINIC" }, { 0xd5934000, 0xffffe000, 19, "AFRINIC" }, { 0xd5966000, 0xffffe000, 19, "AFRINIC" }, { 0xd596a000, 0xffffe000, 19, "AFRINIC" }, { 0xd5984000, 0xffffe000, 19, "AFRINIC" }, { 0xd59a2000, 0xffffe000, 19, "AFRINIC" }, { 0xd59a4000, 0xffffe000, 19, "AFRINIC" }, { 0xd59ea000, 0xffffe000, 19, "AFRINIC" }, { 0xd5b3a000, 0xffffe000, 19, "AFRINIC" }, { 0xd5b5e000, 0xffffe000, 19, "AFRINIC" }, { 0xd5c12000, 0xffffe000, 19, "AFRINIC" }, { 0xd5d4c000, 0xffffc000, 18, "AFRINIC" }, { 0xd5f70000, 0xffffe000, 19, "AFRINIC" }, { 0xd5ff8000, 0xffffe000, 19, "AFRINIC" }, { 0xd6000000, 0xfe000000, 7, "ARIN" }, { 0xd8000000, 0xff000000, 8, "ARIN" }, { 0xd897c000, 0xfffff000, 20, "APNIC" }, { 0xd898a000, 0xfffff000, 20, "LACNIC" }, { 0xd89b4000, 0xffffe000, 19, "LACNIC" }, { 0xd8e68000, 0xffffe000, 19, "LACNIC" }, { 0xd8ecb000, 0xfffff000, 20, "AFRINIC" }, { 0xd8f10000, 0xffffe000, 19, "LACNIC" }, { 0xd8f48000, 0xffff8000, 17, "LACNIC" }, { 0xd9000000, 0xff000000, 8, "RIPENCC" }, { 0xd90e5000, 0xfffff000, 20, "AFRINIC" }, { 0xd914e000, 0xfffff000, 20, "AFRINIC" }, { 0xd9157000, 0xfffff000, 20, "AFRINIC" }, { 0xd9340000, 0xfffc0000, 14, "AFRINIC" }, { 0xd9406000, 0xfffff000, 20, "AFRINIC" }, { 0xd94d4000, 0xfffff000, 20, "AFRINIC" }, { 0xd9750000, 0xfffff000, 20, "AFRINIC" }, { 0xd98b0000, 0xffff0000, 16, "AFRINIC" }, { 0xd9aa9000, 0xfffff000, 20, "AFRINIC" }, { 0xd9c79000, 0xfffff000, 20, "AFRINIC" }, { 0xda000000, 0xfe000000, 7, "APNIC" }, { 0xdc000000, 0xfc000000, 6, "APNIC" }, { 0xe0000000, 0xe0000000, 3, "ARIN" }, }; static const s_ipv4addr_assignment_hint dbipv4addr_assignment_hint[256] = { { 0x00, 0 , 0 }, { 0x01, 1 , 1 }, { 0x02, 2 , 2 }, { 0x03, 3 , 3 }, { 0x04, 4 , 4 }, { 0x05, 5 , 5 }, { 0x06, 6 , 6 }, { 0x07, 6 , 6 }, { 0x08, 7 , 7 }, { 0x09, 7 , 7 }, { 0x0a, 8 , 8 }, { 0x0b, 9 , 9 }, { 0x0c, 10 , 10 }, { 0x0d, 10 , 10 }, { 0x0e, 11 , 11 }, { 0x0f, 12 , 12 }, { 0x10, 13 , 13 }, { 0x11, 13 , 13 }, { 0x12, 13 , 13 }, { 0x13, 13 , 13 }, { 0x14, 13 , 13 }, { 0x15, 13 , 13 }, { 0x16, 13 , 13 }, { 0x17, 13 , 13 }, { 0x18, 14 , 16 }, { 0x19, 14 , 17 }, { 0x1a, 18 , 18 }, { 0x1b, 19 , 19 }, { 0x1c, 20 , 20 }, { 0x1d, 20 , 20 }, { 0x1e, 21 , 21 }, { 0x1f, 22 , 22 }, { 0x20, 23 , 23 }, { 0x21, 23 , 23 }, { 0x22, 23 , 23 }, { 0x23, 23 , 23 }, { 0x24, 24 , 24 }, { 0x25, 25 , 25 }, { 0x26, 26 , 26 }, { 0x27, 27 , 27 }, { 0x28, 28 , 28 }, { 0x29, 29 , 29 }, { 0x2a, 30 , 30 }, { 0x2b, 31 , 36 }, { 0x2c, 37 , 37 }, { 0x2d, 37 , 37 }, { 0x2e, 38 , 38 }, { 0x2f, 39 , 39 }, { 0x30, 40 , 40 }, { 0x31, 41 , 41 }, { 0x32, 42 , 42 }, { 0x33, 42 , 43 }, { 0x34, 44 , 44 }, { 0x35, 44 , 44 }, { 0x36, 44 , 45 }, { 0x37, 44 , 44 }, { 0x38, 46 , 46 }, { 0x39, 46 , 46 }, { 0x3a, 47 , 47 }, { 0x3b, 47 , 47 }, { 0x3c, 48 , 48 }, { 0x3d, 48 , 48 }, { 0x3e, 49 , 65 }, { 0x3f, 66 , 66 }, { 0x40, 67 , 70 }, { 0x41, 67 , 67 }, { 0x42, 67 , 76 }, { 0x43, 67 , 67 }, { 0x44, 67 , 67 }, { 0x45, 67 , 78 }, { 0x46, 67 , 67 }, { 0x47, 67 , 67 }, { 0x48, 79 , 79 }, { 0x49, 79 , 79 }, { 0x4a, 79 , 79 }, { 0x4b, 79 , 79 }, { 0x4c, 80 , 80 }, { 0x4d, 81 , 82 }, { 0x4e, 83 , 83 }, { 0x4f, 83 , 83 }, { 0x50, 84 , 95 }, { 0x51, 84 , 101 }, { 0x52, 84 , 105 }, { 0x53, 84 , 106 }, { 0x54, 84 , 109 }, { 0x55, 84 , 84 }, { 0x56, 84 , 84 }, { 0x57, 84 , 110 }, { 0x58, 84 , 84 }, { 0x59, 84 , 84 }, { 0x5a, 84 , 84 }, { 0x5b, 84 , 84 }, { 0x5c, 84 , 84 }, { 0x5d, 84 , 84 }, { 0x5e, 84 , 84 }, { 0x5f, 84 , 84 }, { 0x60, 111 , 111 }, { 0x61, 111 , 111 }, { 0x62, 111 , 111 }, { 0x63, 111 , 111 }, { 0x64, 112 , 112 }, { 0x65, 113 , 113 }, { 0x66, 114 , 114 }, { 0x67, 115 , 115 }, { 0x68, 116 , 116 }, { 0x69, 117 , 117 }, { 0x6a, 118 , 118 }, { 0x6b, 119 , 119 }, { 0x6c, 120 , 120 }, { 0x6d, 121 , 121 }, { 0x6e, 122 , 122 }, { 0x6f, 122 , 122 }, { 0x70, 123 , 123 }, { 0x71, 123 , 123 }, { 0x72, 123 , 123 }, { 0x73, 123 , 123 }, { 0x74, 123 , 123 }, { 0x75, 123 , 123 }, { 0x76, 123 , 123 }, { 0x77, 123 , 123 }, { 0x78, 124 , 124 }, { 0x79, 124 , 124 }, { 0x7a, 124 , 124 }, { 0x7b, 124 , 124 }, { 0x7c, 125 , 125 }, { 0x7d, 125 , 125 }, { 0x7e, 126 , 126 }, { 0x7f, 127 , 127 }, { 0x80, 128 , 167 }, { 0x81, 128 , 213 }, { 0x82, 128 , 284 }, { 0x83, 128 , 330 }, { 0x84, 128 , 365 }, { 0x85, 128 , 366 }, { 0x86, 128 , 438 }, { 0x87, 128 , 439 }, { 0x88, 440 , 460 }, { 0x89, 440 , 520 }, { 0x8a, 440 , 579 }, { 0x8b, 440 , 663 }, { 0x8c, 664 , 708 }, { 0x8d, 709 , 769 }, { 0x8e, 770 , 770 }, { 0x8f, 770 , 823 }, { 0x90, 824 , 878 }, { 0x91, 879 , 879 }, { 0x92, 880 , 955 }, { 0x93, 880 , 1033 }, { 0x94, 1034 , 1076 }, { 0x95, 1034 , 1108 }, { 0x96, 1109 , 1152 }, { 0x97, 1153 , 1191 }, { 0x98, 1192 , 1228 }, { 0x99, 1192 , 1253 }, { 0x9a, 1192 , 1277 }, { 0x9b, 1192 , 1321 }, { 0x9c, 1192 , 1356 }, { 0x9d, 1192 , 1431 }, { 0x9e, 1192 , 1498 }, { 0x9f, 1192 , 1575 }, { 0xa0, 1576 , 1689 }, { 0xa1, 1576 , 1755 }, { 0xa2, 1576 , 1769 }, { 0xa3, 1576 , 1846 }, { 0xa4, 1576 , 1895 }, { 0xa5, 1576 , 1942 }, { 0xa6, 1576 , 1959 }, { 0xa7, 1576 , 1979 }, { 0xa8, 1980 , 2026 }, { 0xa9, 1980 , 2032 }, { 0xaa, 1980 , 2046 }, { 0xab, 1980 , 2062 }, { 0xac, 2063 , 2063 }, { 0xad, 2063 , 2063 }, { 0xae, 2064 , 2065 }, { 0xaf, 2066 , 2066 }, { 0xb0, 2067 , 2067 }, { 0xb1, 2068 , 2068 }, { 0xb2, 2069 , 2069 }, { 0xb3, 2070 , 2070 }, { 0xb4, 2071 , 2071 }, { 0xb5, 2072 , 2072 }, { 0xb6, 2073 , 2073 }, { 0xb7, 2073 , 2073 }, { 0xb8, 2074 , 2074 }, { 0xb9, 2075 , 2075 }, { 0xba, 2076 , 2076 }, { 0xbb, 2076 , 2076 }, { 0xbc, 2077 , 2077 }, { 0xbd, 2078 , 2078 }, { 0xbe, 2079 , 2079 }, { 0xbf, 2080 , 2093 }, { 0xc0, 2094 , 4015 }, { 0xc1, 4016 , 4039 }, { 0xc2, 4040 , 4045 }, { 0xc3, 4040 , 4055 }, { 0xc4, 4056 , 4427 }, { 0xc5, 4428 , 4428 }, { 0xc6, 4429 , 4532 }, { 0xc7, 4429 , 4543 }, { 0xc8, 4544 , 4570 }, { 0xc9, 4544 , 4544 }, { 0xca, 4571 , 4572 }, { 0xcb, 4571 , 4571 }, { 0xcc, 4573 , 4588 }, { 0xcd, 4573 , 4592 }, { 0xce, 4573 , 4597 }, { 0xcf, 4573 , 4616 }, { 0xd0, 4617 , 4617 }, { 0xd1, 4617 , 4623 }, { 0xd2, 4624 , 4624 }, { 0xd3, 4624 , 4624 }, { 0xd4, 4625 , 4638 }, { 0xd5, 4625 , 4654 }, { 0xd6, 4655 , 4655 }, { 0xd7, 4655 , 4655 }, { 0xd8, 4656 , 4663 }, { 0xd9, 4664 , 4674 }, { 0xda, 4675 , 4675 }, { 0xdb, 4675 , 4675 }, { 0xdc, 4676 , 4676 }, { 0xdd, 4676 , 4676 }, { 0xde, 4676 , 4676 }, { 0xdf, 4676 , 4676 }, { 0xe0, 4677 , 4677 }, { 0xe1, 4677 , 4677 }, { 0xe2, 4677 , 4677 }, { 0xe3, 4677 , 4677 }, { 0xe4, 4677 , 4677 }, { 0xe5, 4677 , 4677 }, { 0xe6, 4677 , 4677 }, { 0xe7, 4677 , 4677 }, { 0xe8, 4677 , 4677 }, { 0xe9, 4677 , 4677 }, { 0xea, 4677 , 4677 }, { 0xeb, 4677 , 4677 }, { 0xec, 4677 , 4677 }, { 0xed, 4677 , 4677 }, { 0xee, 4677 , 4677 }, { 0xef, 4677 , 4677 }, { 0xf0, 4677 , 4677 }, { 0xf1, 4677 , 4677 }, { 0xf2, 4677 , 4677 }, { 0xf3, 4677 , 4677 }, { 0xf4, 4677 , 4677 }, { 0xf5, 4677 , 4677 }, { 0xf6, 4677 , 4677 }, { 0xf7, 4677 , 4677 }, { 0xf8, 4677 , 4677 }, { 0xf9, 4677 , 4677 }, { 0xfa, 4677 , 4677 }, { 0xfb, 4677 , 4677 }, { 0xfc, 4677 , 4677 }, { 0xfd, 4677 , 4677 }, { 0xfe, 4677 , 4677 }, { 0xff, 4677 , 4677 }, }; ipv6calc-0.95.0/databases/registries/0000775000175100017510000000000012242072067016451 5ustar peterpeteripv6calc-0.95.0/databases/registries/update-registries.sh0000775000175100017510000000366112227157366022467 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/databases/registries # File : update-registries.sh # Version : $Id: update-registries.sh,v 1.11 2013/10/15 06:21:42 ds6peter Exp $ # Copyright : 2002-2013 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 < # 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" ./update-registries.sh update: ${MAKE} download echo "Create database files for IPv4" cd ../ipv4-assignment && ${MAKE} update echo "Create database files for IPv6" cd ../ipv6-assignment && ${MAKE} update 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.95.0/databases/registries/README0000664000175100017510000000143610326777456017354 0ustar peterpeter$Id: README,v 1.1 2005/10/23 21:22:54 peter Exp $ IPv4/IPv6 assignment databases: http://www.iana.org/assignments/ipv4-address-space http://www.iana.org/assignments/ipv6-unicast-address-assignments ftp://ftp.ripe.net/pub/stats/ripencc/%Y/delegated-ripencc-%Y%m%d.bz2 ftp://ftp.arin.net/pub/stats/arin/delegated-arin-%Y%m%d http://ftp.apnic.net/stats/apnic/delegated-apnic-%Y%m%d ftp://lacnic.net/pub/stats/lacnic/delegated-lacnic-%Y%m%d ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-%Y%m%d Because of unknown license issues, the database files aren't included in source tarball (cleanup by "make distclean"), but will be retrieved on "make" See e.g.: ftp://ftp.ripe.net/ripe/ http://ftp.apnic.net/stats/apnic/_README-apnic-stats.txt Use "make update" to refresh data files ipv6calc-0.95.0/README0000664000175100017510000000474611111061401013215 0ustar peterpeteripv6calc will do some format changes and calculations for you (P) & (C) 2001-2008 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.15 2008/11/19 19:03:29 peter Exp $ ipv6calc-0.95.0/autogen-all-variants.sh0000775000175100017510000000227112226543744016747 0ustar peterpeter#!/bin/sh # # Project : ipv6calc # File : autogen-all-variants.sh # Version : $Id: autogen-all-variants.sh,v 1.11 2013/10/13 16:18:44 ds6peter Exp $ # Copyright : 2011-2013 by Peter Bieringer # # Information: run autogen.sh with all supported variants autgen_variants() { cat < * 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) { 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, NI_MAXHOST - 1, "%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, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, i; char tempstring[NI_MAXHOST]; uint16_t result[8]; retval = librfc1924_formatcheck(addrstring, resultstring); if (retval != 0) { /* format check fails */ return (1); }; if (strlen(addrstring) > sizeof(tempstring) - 1) { fprintf(stderr, "Input too long: %s\n", addrstring); return (1); }; snprintf(tempstring, sizeof(tempstring) - 1, "%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 */ #define DEBUG_function_name "librfc1924/formatcheck" int librfc1924_formatcheck(const char *string, char *infostring) { size_t length, cnt; /* clear result string */ infostring[0] = '\0'; length = strlen(string); /* check length */ if ( length != 20 ) { snprintf(infostring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Illegal character in given base85 formatted address on position %d (%c)!", (int) cnt + 1, string[cnt]); return (1); }; return (0); }; #undef DEBUG_function_name ipv6calc-0.95.0/lib/ipv6calcoptions_common.h0000664000175100017510000000607212237747315017772 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calcoptions.h * Version : $Id: ipv6calcoptions_common.h,v 1.9 2013/11/10 18:22:05 ds6peter Exp $ * Copyright : 2013-2013 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:q"; /* define common long options */ static struct option ipv6calc_longopts_common[] = { {"debug" , 1, NULL, (int) 'd' }, {"quiet" , 0, NULL, (int) 'q' }, }; #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) */ {"db-ip2location-disable" , 0, NULL, DB_ip2location_disable }, {"db-ip2location-dir" , 1, NULL, DB_ip2location_dir }, #ifdef SUPPORT_IP2LOCATION_DYN {"db-ip2location-lib" , 1, NULL, DB_ip2location_lib }, #endif }; #endif #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) */ {"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 }; #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 }, { "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.95.0/lib/libifinet6.c0000664000175100017510000001172211240353333015305 0ustar peterpeter/* * Project : ipv6calc * File : libifinet6.c * Version : $Id: libifinet6.c,v 1.6 2009/08/11 20:38:51 peter Exp $ * Copyright : 2001-2009 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 */ #define DEBUG_function_name "libifinet6/ifinet6_to_ipv6addrstruct" int libifinet6_ifinet6_to_ipv6addrstruct(char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1; char tempstring[NI_MAXHOST]; char addr6p[8][5]; if ( (ipv6calc_debug & DEBUG_libifinet6) != 0 ) { fprintf(stderr, "%s: Got input '%s'\n", DEBUG_function_name, addrstring); }; /* simple test */ if ( strlen(addrstring) != 32 ) { snprintf(resultstring,NI_MAXHOST - 1, "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,NI_MAXHOST - 1, "Error splitting string %s, got only %d items!", addrstring, retval); retval = 1; return (retval); }; /* print out into temp string */ snprintf(tempstring, sizeof(tempstring) - 1, "%s:%s:%s:%s:%s:%s:%s:%s", addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7]); if ( (ipv6calc_debug & DEBUG_libifinet6) != 0 ) { fprintf(stderr, "%s: Filled: %s\n", DEBUG_function_name, tempstring); }; /* fill structure */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, ipv6addrp); return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libifinet6/ifinet6_withprefixlength_to_ipv6addrstruct" int libifinet6_ifinet6_withprefixlength_to_ipv6addrstruct(char *addrstring, char *prefixlengthstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, result, tempint; char tempstring[NI_MAXHOST]; uint8_t prefixlength = 0; if ( (ipv6calc_debug & DEBUG_libifinet6) != 0 ) { fprintf(stderr, "%s: Got input addressstring: '%s', prefixlengthstring: '%s'\n", DEBUG_function_name, addrstring, prefixlengthstring); }; /* simple test on prefix length string*/ if ( strlen(prefixlengthstring) != 2 ) { snprintf(resultstring,NI_MAXHOST - 1, "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,NI_MAXHOST - 1, "error splitting string %s, got only %d items!", prefixlengthstring, result); retval = 1; return (retval); }; if ( (tempint < 0) || (tempint > 128) ) { snprintf(resultstring,NI_MAXHOST - 1, "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, ipv6addrp); if ( result != 0 ) { snprintf(resultstring,NI_MAXHOST - 1, "%s", tempstring); retval = 1; return (retval); }; /* set prefix length */ ipv6addrp->prefixlength = (uint8_t) prefixlength; ipv6addrp->flag_prefixuse = 1; if ( (ipv6calc_debug & DEBUG_libifinet6) != 0 ) { fprintf(stderr, "%s: Print: '%s'\n", DEBUG_function_name, 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(ipv6calc_ipv6addr *ipv6addrp, char *resultstring) { int retval = 1; char tempstring[NI_MAXHOST]; /* print out array */ snprintf(tempstring, sizeof(tempstring) - 1, "%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,NI_MAXHOST - 1, "%s %02x", tempstring, (unsigned int) (*ipv6addrp).prefixlength); } else { snprintf(resultstring,NI_MAXHOST - 1, "%s", tempstring); }; if ( (ipv6calc_debug & DEBUG_libifinet6) != 0 ) { fprintf(stderr, "addr_to_ifinet6: Print out: %s\n", resultstring); }; retval = 0; return (retval); }; ipv6calc-0.95.0/lib/libipv6addr.c0000664000175100017510000030406612235225435015474 0ustar peterpeter/* * Project : ipv6calc * File : libipv6addr.c * Version : $Id: libipv6addr.c,v 1.101 2013/11/02 16:41:01 ds6peter Exp $ * Copyright : 2001-2013 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" #ifdef SUPPORT_DB_IPV6 #include "../databases/ipv6-assignment/dbipv6addr_assignment.h" #endif /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addr_getoctet" uint8_t ipv6addr_getoctet(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numoctet) { uint8_t retval; if ( numoctet > 15 ) { fprintf(stderr, "%s: given ocett number '%u' is out of range!\n", DEBUG_function_name, numoctet); exit(EXIT_FAILURE); }; retval = ipv6addrp->in6_addr.s6_addr[numoctet]; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addr_getword" uint16_t ipv6addr_getword(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numword) { uint16_t retval; if ( numword > 7 ) { fprintf(stderr, "%s: given word number '%u' is out of range!\n", DEBUG_function_name, numword); exit(EXIT_FAILURE); }; retval = ( ipv6addrp->in6_addr.s6_addr[numword * 2] << 8 ) \ | ( ipv6addrp->in6_addr.s6_addr[numword * 2 + 1] ); return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addr_getdword" uint32_t ipv6addr_getdword(const ipv6calc_ipv6addr *ipv6addrp, const unsigned int numdword) { uint32_t retval; if ( numdword > 3 ) { fprintf(stderr, "%s: given dword number '%u' is out of range!\n", DEBUG_function_name, 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); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addr_setoctet" void ipv6addr_setoctet(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numoctet, const unsigned int value) { if ( numoctet > 15 ) { fprintf(stderr, "%s: given octet number '%u' is out of range!\n", DEBUG_function_name, numoctet); exit(EXIT_FAILURE); }; if ( value > 0x0000000ff ) { fprintf(stderr, "%s: given value '%x' is out of range!\n", DEBUG_function_name, value); exit(EXIT_FAILURE); }; ipv6addrp->in6_addr.s6_addr[numoctet] = (uint8_t) value; return; }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addr_setword" void ipv6addr_setword(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numword, const unsigned int value) { if ( numword > 7 ) { fprintf(stderr, "%s: given word number '%u' is out of range!\n", DEBUG_function_name, numword); exit(EXIT_FAILURE); }; if ( value > 0x0000ffffu ) { fprintf(stderr, "%s: given value '%x' is out of range!\n", DEBUG_function_name, 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; }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addr_setdword" void ipv6addr_setdword(ipv6calc_ipv6addr *ipv6addrp, const unsigned int numdword, const unsigned int value) { if ( numdword > 3 ) { fprintf(stderr, "%s: given dword number '%u' is out of range!\n", DEBUG_function_name, numdword); exit(EXIT_FAILURE); }; if ( value > 0xffffffffu ) { fprintf(stderr, "%s: given value '%x' is out of range!\n", DEBUG_function_name, 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; }; #undef DEBUG_function_name /* * function clears the IPv6 structure * * mod: ipv6addrp = pointer to IPv6 address structure */ #define DEBUG_function_name "libipv6addr/ipv6addr_clear" void ipv6addr_clear(ipv6calc_ipv6addr *ipv6addrp) { int i; for (i = 0; i < (int) (sizeof(ipv6addrp->in6_addr.s6_addr) / sizeof(ipv6addrp->in6_addr.s6_addr[0])); i++) { ipv6addrp->in6_addr.s6_addr[i] = 0; }; /* Clear IPv6 address scope */ ipv6addrp->scope = 0; /* Clear valid flag */ ipv6addrp->flag_valid = 0; return; }; #undef DEBUG_function_name /* * function clears the IPv6 structure * * mod: ipv6addrp = pointer to IPv6 address structure */ #define DEBUG_function_name "libipv6addr/ipv6addr_clearall" 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->flag_valid = 0; ipv6addrp->flag_scopeid = 0; return; }; #undef DEBUG_function_name /* * function copies the IPv6 structure * * in: ipv6addrp = pointer to IPv6 address structure * mod: ipv6addrp2 = pointer to IPv6 address structure */ #define DEBUG_function_name "libipv6addr/ipv6addr_copy" void ipv6addr_copy(ipv6calc_ipv6addr *ipv6addrp_dst, const ipv6calc_ipv6addr *ipv6addrp_src) { *(ipv6addrp_dst) = *(ipv6addrp_src); return; }; #undef DEBUG_function_name /* * 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 ) { fprintf(stderr, "%s/%s: distribution\n", __FILE__, __func__); 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 ) { 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; 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) { if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s/%s: checksum ok - anonymized prefix found\n", __FILE__, __func__); }; type |= IPV6_NEW_ADDR_PRODUCTIVE | IPV6_NEW_ADDR_AGU | IPV6_ADDR_UNICAST | IPV6_ADDR_ANONYMIZED_PREFIX; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s/%s: checksum NOT ok - no anonymized prefix found\n", __FILE__, __func__); }; }; }; /* 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)) { if ( (ipv6calc_debug) != 0 ) { fprintf(stderr, "%s/%s: probably anonymized ORCHID found\n", __FILE__, __func__); }; /* verify now checksum */ if (ipv6addr_verify_checksum_anonymized_iid(ipv6addrp) == 0) { if ( (ipv6calc_debug) != 0 ) { fprintf(stderr, "%s/%s: checksum ok - anonymized ORCHID found\n", __FILE__, __func__); }; type |= IPV6_ADDR_ANONYMIZED_IID; } else { if ( (ipv6calc_debug) != 0 ) { fprintf(stderr, "%s/%s: checksum WRONG - no anonymized ORCHID found\n", __FILE__, __func__); }; }; }; 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, 1); 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, 1); 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, 2); 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) { 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)) == 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); }; /* * get registry number of an IPv6 address * * in: ipv6addr = IPv6 address structure * out: assignment number (-1 = no result) */ #define DEBUG_function_name "libipv6calc/getregistry" int ipv6addr_getregistry(const ipv6calc_ipv6addr *ipv6addrp) { char resultstring[NI_MAXHOST]; int i; i = libipv6addr_get_registry_string(ipv6addrp, resultstring); if (i == 2) { return(IPV6_ADDR_REGISTRY_RESERVED); } else if (i != 0) { return(IPV6_ADDR_REGISTRY_UNKNOWN); }; #ifdef SUPPORT_DB_IPV6 if (strcmp(resultstring, "IANA") == 0) { return(IPV6_ADDR_REGISTRY_IANA); } else if (strcmp(resultstring, "APNIC") == 0) { return(IPV6_ADDR_REGISTRY_APNIC); } else if (strcmp(resultstring, "ARIN") == 0) { return(IPV6_ADDR_REGISTRY_ARIN); } else if (strcmp(resultstring, "RIPENCC") == 0) { return(IPV6_ADDR_REGISTRY_RIPE); } else if (strcmp(resultstring, "LACNIC") == 0) { return(IPV6_ADDR_REGISTRY_LACNIC); } else if (strcmp(resultstring, "AFRINIC") == 0) { return(IPV6_ADDR_REGISTRY_AFRINIC); } else if (strcmp(resultstring, "6BONE") == 0) { return(IPV6_ADDR_REGISTRY_6BONE); } else if (strcmp(resultstring, "6TO4") == 0) { return(IPV6_ADDR_REGISTRY_RESERVED); } else { return(IPV6_ADDR_REGISTRY_UNKNOWN); }; #else return(IPV6_ADDR_REGISTRY_UNKNOWN); #endif } #undef DEBUG_function_name /* * Get IPv6 address assignement information as string * * in : ipv6addrp = pointer to IPv6 address structure * mod: resultstring * ret: 0: ok, 1: unknown, 2: reserved */ #define DEBUG_function_name "libipv6calc/get_registry_string" int libipv6addr_get_registry_string(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring) { 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); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Given ipv6 prefix: %08x%08x\n", DEBUG_function_name, (unsigned int) ipv6_00_31, (unsigned int) ipv6_32_63); }; if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0) && (ipv6_96_127 == 0)) { // :: (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.5.2)"); return (2); } else if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0) && (ipv6_96_127 == 1)) { // ::1 (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.5.3)"); return (2); } else if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0)) { // ::x.x.x.x (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.5.5.1)"); return (2); } else if ((ipv6_00_31 == 0) && (ipv6_32_63 == 0) && (ipv6_64_95 == 0x0000ffff)) { // ::ffff:x.x.x.x (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.5.5.2)"); return (2); } else if (ipv6_00_31 == 0x20010000) { // 2001:0000::/32 (RFC 4380) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4380#6)"); return (2); } else if ((ipv6_00_31 & 0xfffffff0) == 0x20010010) { // 2001:0010::/28 (RFC 4843) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4843#2)"); return (2); } else if (ipv6_00_31 == 0x20010db8) { // 2001:0db8::/32 (RFC 3849) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC3849#4)"); return (2); } else if ((ipv6_00_15 & 0xffff) == 0x2002) { // 2002::/16 (RFC 3056) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC3056#2)"); return (2); } else if ((ipv6_00_15 & 0xfe00) == 0xfc00) { // fc00::/7 (RFC 4193) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4193#3.1)"); return (2); } else if ((ipv6_00_15 & 0xffe0) == 0xfe80) { // fe80::/10 (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.5.6)"); return (2); } else if ((ipv6_00_15 & 0xffe0) == 0xfec0) { // fec0::/10 (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.5.7)"); return (2); } else if ((ipv6_00_15 & 0xff00) == 0xff00) { // ffxx::/8 (RFC 4291) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC4291#2.7)"); return (2); }; #ifdef SUPPORT_DB_IPV6 int i; int match = -1; for (i = 0; i < MAXENTRIES_ARRAY(dbipv6addr_assignment); i++) { /* run through database array */ if ( (ipv6_00_31 & dbipv6addr_assignment[i].ipv6mask_00_31) != dbipv6addr_assignment[i].ipv6addr_00_31 ) { /* MSB 00-31 do not match */ continue; }; if ( dbipv6addr_assignment[i].ipv6mask_32_63 != 0 ) { if ( (ipv6_32_63 & dbipv6addr_assignment[i].ipv6mask_32_63) != dbipv6addr_assignment[i].ipv6addr_32_63 ) { /* MSB 32-63 do not match */ continue; }; }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Found match: prefix=%08x%08x mask=%08x%08x registry=%s (entry: %d)\n", DEBUG_function_name, \ (unsigned int) dbipv6addr_assignment[i].ipv6addr_00_31, \ (unsigned int) dbipv6addr_assignment[i].ipv6addr_32_63, \ (unsigned int) dbipv6addr_assignment[i].ipv6mask_00_31, \ (unsigned int) dbipv6addr_assignment[i].ipv6mask_32_63, \ dbipv6addr_assignment[i].string_registry, i); }; match = i; }; /* result */ if ( match > -1 ) { snprintf(resultstring, NI_MAXHOST - 1, "%s", dbipv6addr_assignment[match].string_registry); return(0); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", "unknown"); return(1); }; #else snprintf(resultstring, NI_MAXHOST - 1, "%s", "(IPv6 database not compiled in)"); return(1); #endif }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/addrliteral_to_ipv6addrstruct" int addrliteral_to_ipv6addrstruct(const char *addrstring, char *resultstring, 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 */ if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Got input '%s'\n", DEBUG_function_name, 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); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: String lengths addrstring=%d strstr=%d literal=%d\n", DEBUG_function_name, (unsigned int) strlen(addrstring), (unsigned int) strlen(cptr), (unsigned int) strlen(literalstring)); }; if (cptr == NULL) { snprintf(resultstring, NI_MAXHOST - 1, "Error in given IPv6 literal address, has no 'ipv6-literal.net' included!"); return (1); }; if (strlen(cptr) != strlen(literalstring)) { snprintf(resultstring, NI_MAXHOST - 1, "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); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: String without literal suffix: %s\n", DEBUG_function_name, tempstring); }; /* replace - with : */ for (i = 0; i < strlen(tempstring); i++) { if (tempstring[i] == '-') { tempstring[i] = ':'; } else if (tempstring[i] == 's') { tempstring[i] = '%'; }; }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: String converted to non-literal format: %s\n", DEBUG_function_name, tempstring); }; /* call normal IPv6 parsing function */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, ipv6addrp); return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/addr_to_ipv6addrstruct" int addr_to_ipv6addrstruct(const char *addrstring, char *resultstring, 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'", addrstring); if (strlen(addrstring) > sizeof(tempstring) - 1) { fprintf(stderr, "Input too long: %s\n", addrstring); return (1); }; ipv6addr_clearall(ipv6addrp); snprintf(tempstring, sizeof(tempstring) - 1, "%s", addrstring); /* save prefix length first, if available */ if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Call strtok_r, searching for / in %s\n", DEBUG_function_name, tempstring); }; addronlystring = strtok_r(tempstring, "/", ptrptr); if ( addronlystring == NULL ) { fprintf(stderr, "Strange input: %s\n", addrstring); return (1); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Got address only string: %s\n", DEBUG_function_name, addronlystring); }; cp = strtok_r (NULL, "/", ptrptr); if ( cp != NULL ) { i = atoi(cp); if (i < 0 || i > 128 ) { snprintf(resultstring, NI_MAXHOST - 1, "Illegal prefix length: '%s'", cp); retval = 1; return (retval); }; ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) i; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: prefix length %u\n", DEBUG_function_name, (unsigned int) ipv6addrp->prefixlength); fprintf(stderr, "%s: flag_prefixuse %d\n", DEBUG_function_name, ipv6addrp->flag_prefixuse); }; }; snprintf(tempstring2, sizeof(tempstring2) - 1, "%s", addronlystring); /* save scope ID, if available */ if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Call strtok_r, searching for %% in %s\n", DEBUG_function_name, tempstring2); }; addronlystring = strtok_r(tempstring2, "%%", ptrptr); if ( addronlystring == NULL ) { fprintf(stderr, "Strange input: %s\n", addronlystring); return (1); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Got address only string: %s\n", DEBUG_function_name, addronlystring); }; cp = strtok_r (NULL, "%", ptrptr); if ( cp != NULL ) { ipv6addrp->flag_scopeid = 1; snprintf(ipv6addrp->scopeid, sizeof(ipv6addrp->scopeid) - 1, "%s", cp); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: scope ID : %s\n", DEBUG_function_name, ipv6addrp->scopeid); fprintf(stderr, "%s: flag_scopeid: %d\n", DEBUG_function_name, 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, NI_MAXHOST - 1, "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); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Result of uncompressed string: '%s'\n", DEBUG_function_name, tempstring); }; if ( result != 0 ) { snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); retval = 1; return (retval); }; } else { if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Copy string: '%s'\n", DEBUG_function_name, addronlystring); }; snprintf(tempstring, sizeof(tempstring) - 1, "%s", addronlystring); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Check string: '%s'\n", DEBUG_function_name, 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, NI_MAXHOST - 1, "Error in given address expanded to '%s' is not valid!", tempstring); } else { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Error, given compatv4/mapped 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]); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: reading into array, got items: %d\n", DEBUG_function_name, result); }; if ( result != expecteditems ) { snprintf(resultstring, NI_MAXHOST - 1, "Error splitting address %s, got %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, NI_MAXHOST - 1, "Error, given address '%s' is not valid on position %d!", addronlystring, i); retval = 1; return (retval); }; }; /* copy into structure */ for ( i = 0; i <= 7; i++ ) { if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Push word %u: %04x\n", DEBUG_function_name, (unsigned int) i, (unsigned int) temp[i]); }; ipv6addr_setword(ipv6addrp, (unsigned int) i, (unsigned int) temp[i]); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: In structure %08x %08x %08x %08x\n", DEBUG_function_name, (unsigned int) ipv6addr_getdword(ipv6addrp, 0), (unsigned int) ipv6addr_getdword(ipv6addrp, 1), (unsigned int) ipv6addr_getdword(ipv6addrp, 2), (unsigned int) ipv6addr_getdword(ipv6addrp, 3)); fprintf(stderr, "%s: In structure %04x %04x %04x %04x %04x %04x %04x %04x\n", DEBUG_function_name, (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; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: First word is: %04x, address info value: %08x\n", DEBUG_function_name, (unsigned int) ipv6addr_getword(ipv6addrp, 0), (unsigned int) scope); fprintf(stderr, "%s: flag_prefixuse %d\n", DEBUG_function_name, ipv6addrp->flag_prefixuse); }; ipv6addrp->flag_valid = 1; retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 uint32_t formatoptions) { int retval = 1; int i; char tempstring[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) - 1, "%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) - 1, "%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) - 1, "%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) - 1, "%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) == 0)) { /* append prefix length */ snprintf(resultstring, NI_MAXHOST - 1, "%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, NI_MAXHOST - 1, "%ss%s.ipv6-literal.net", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s.ipv6-literal.net", tempstring); } } else { if (ipv6addrp->flag_scopeid) { snprintf(resultstring, NI_MAXHOST - 1, "%s%%%s", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); }; }; }; 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 */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_uncompaddrprefix" static int ipv6addrstruct_to_uncompaddrprefix(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions) { int retval = 1; unsigned int max, i; char tempstring1[NI_MAXHOST], tempstring2[NI_MAXHOST]; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: called\n", DEBUG_function_name); }; /* test for misuse */ if ( ((ipv6addrp->scope & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0 ) && (ipv6addrp->prefixlength > 96) ) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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) - 1, "%s%04x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; } else { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%04x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; }; i++; snprintf(tempstring1, sizeof(tempstring1) - 1, "%s", tempstring2); }; snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring1); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: result string: %s\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_uncompaddrsuffix" static int ipv6addrstruct_to_uncompaddrsuffix(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions) { int retval = 1; unsigned int max, i; char tempstring1[NI_MAXHOST], tempstring2[NI_MAXHOST]; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: called\n", DEBUG_function_name); }; /* test for misuse */ if ( ( (ipv6addrp->scope & (IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED)) != 0) && ( ipv6addrp->prefixlength > 96 ) ) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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) - 1, "%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) - 1, "%s%04x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%x:", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; } else { if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%04x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); } else { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%x", tempstring1, (unsigned int) ipv6addr_getword(ipv6addrp, i)); }; }; i++; snprintf(tempstring1, sizeof(tempstring1) - 1, "%s", tempstring2); }; snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring1); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: result string: %s\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name #define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_uncompaddr" int libipv6addr_ipv6addrstruct_to_uncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions) { int retval = 1; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: get format option: %08x\n", DEBUG_function_name, (unsigned int) formatoptions); }; if ( (formatoptions & FORMATOPTION_printprefix) != 0 ) { retval = ipv6addrstruct_to_uncompaddrprefix(ipv6addrp, resultstring, formatoptions); } else if ( (formatoptions & FORMATOPTION_printsuffix) != 0 ) { retval = ipv6addrstruct_to_uncompaddrsuffix(ipv6addrp, resultstring, formatoptions); } else { retval = ipv6addrstruct_to_uncompaddr(ipv6addrp, resultstring, 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); }; }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: result string: %s\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * mask prefix bits (set suffix bits to 0) * * in: structure via reference * out: modified structure */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_masksuffix" void ipv6addrstruct_maskprefix(ipv6calc_ipv6addr *ipv6addrp) { unsigned int nbit, nword; uint16_t mask, newword; int i; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: called\n", DEBUG_function_name); }; 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 ); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: bit: %u = nword: %u, mask: %04x, word: %04x newword: %04x\n", DEBUG_function_name, nbit, nword, (unsigned int) mask, (unsigned int) ipv6addr_getword(ipv6addrp, nword), (unsigned int) newword); }; ipv6addr_setword(ipv6addrp, nword, (unsigned int) newword); }; }; }; #undef DEBUG_function_name /* * mask suffix bits (set prefix bits to 0) * * in: structure via reference * out: modified structure */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_masksuffix" void ipv6addrstruct_masksuffix(ipv6calc_ipv6addr *ipv6addrp) { unsigned int nbit, nword; uint16_t mask, newword; int i; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: called\n", DEBUG_function_name); }; 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 ); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "libipv6addr/ipv6calc_ipv6addr_masksuffix: bit: %u = nword: %u, mask: %04x, word: %04x newword: %04x\n", nbit, nword, (unsigned int) mask, (unsigned int) ipv6addr_getword(ipv6addrp, nword), (unsigned int) newword); }; ipv6addr_setword(ipv6addrp, nword, (unsigned int) newword); }; }; }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/tokenlsb64_to_ipv6addrstruct" int tokenlsb64_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, result; int temp[4]; char tempstring[NI_MAXHOST]; resultstring[0] = '\0'; /* clear result string */ if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: got input '%s'\n", DEBUG_function_name, addrstring); }; if ( strlen(addrstring) != 16 ) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Error splitting address '%s', got %d items instead of 4!", addrstring, result); retval = 1; return (retval); }; /* set prefix */ snprintf(tempstring, sizeof(tempstring) - 1, "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, ipv6addrp); return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/identifier_to_ipv6addrstruct" int identifier_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp) { int retval = 1, i, ccolons = 0; char tempstring[NI_MAXHOST]; resultstring[0] = '\0'; /* clear result string */ if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: Got input '%s'\n", DEBUG_function_name, addrstring); }; if ((strlen(addrstring) < 2) || (strlen(addrstring) > 19)) { /* min: :: */ /* max: ffff:ffff:ffff:ffff */ snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Error in given identifier '%s' is not valid!", addrstring); retval = 1; return (retval); }; /* set prefix */ snprintf(tempstring, sizeof(tempstring) - 1, "0:0:0:0:%s", addrstring); /* store into structure */ retval = addr_to_ipv6addrstruct(tempstring, resultstring, ipv6addrp); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: result string '%s'\n", DEBUG_function_name, resultstring); }; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_tokenlsb64" int libipv6addr_ipv6addrstruct_to_tokenlsb64(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, uint32_t formatoptions) { int retval = 1; /* print array */ snprintf(resultstring, NI_MAXHOST - 1, "%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); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s: result string '%s'\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_octal" int libipv6addr_to_octal(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions) { int retval = 1; char tempstring[NI_MAXHOST]; if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "\\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) - 1, "\\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, NI_MAXHOST - 1, "%s", tempstring); retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_hex" int libipv6addr_to_hex(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions) { int retval = 1; char tempstring[NI_MAXHOST]; snprintf(tempstring, sizeof(tempstring) - 1, "%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, NI_MAXHOST - 1, "%s", tempstring); retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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]; char resultstring[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; 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; if (method == ANON_METHOD_ZEROIZE) { zeroize_prefix = 1; }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { 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 ) { DEBUGPRINT_WA(DEBUG_libipv6addr, "IPv6 address flags: 0x%08x", ipv6addrp->scope); j = 0; snprintf(tempstring, sizeof(tempstring) - 1, "TYPE="); for (i = 0; i < (int) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); i++ ) { if ((ipv6addrp->scope & ipv6calc_ipv6addrtypestrings[i].number) != 0 ) { if (j != 0) { snprintf(helpstring, sizeof(helpstring) - 1, "%s,", tempstring); snprintf(tempstring, sizeof(tempstring) - 1, "%s", helpstring); }; snprintf(helpstring, sizeof(helpstring) - 1, "%s%s", tempstring, ipv6calc_ipv6addrtypestrings[i].token); snprintf(tempstring, sizeof(tempstring) - 1, "%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)); }; }; 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]); }; /* prefix included */ 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) ) { DEBUGPRINT_NA(DEBUG_libipv6addr, "Prefix included"); 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 = libipv6addr_get_registry_string(ipv6addrp, helpstring); if (r == 2) { DEBUGPRINT_NA(DEBUG_libipv6addr, "IPv6 registry of prefix contains reserved, skip anonymization"); goto ChecksumCalc; }; // switch to prefix anonymization libipv6addr_ipv6addrstruct_to_uncompaddr(ipv6addrp, resultstring, 0); cc_index = libipv6calc_db_wrapper_cc_index_by_addr(resultstring, 6); as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(resultstring, 6); 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); }; }; ChecksumCalc: 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; }; return(0); }; /* * clear filter IPv6 address * * in : *filter = filter structure */ void ipv6addr_filter_clear(s_ipv6calc_filter_ipv6addr *filter) { filter->active = 0; filter->typeinfo_must_have = 0; filter->typeinfo_may_not_have = 0; return; }; /* * parse filter IPv6 address * * 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; const char *prefix = "ipv6"; const char *prefixdot = "ipv6."; if (token == NULL) { return (result); }; if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s/%s: input: %s\n", __FILE__, __func__, token); }; if (token[0] == '^') { if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: found negate prefix in token: %s\n", __FILE__, __func__, token); }; negate = 1; offset += 1; }; if (strcmp(token + offset, prefix) == 0) { /* any */ if (negate == 1) { filter->typeinfo_may_not_have = ~IPV6_ADDR_ANY; } else { filter->typeinfo_must_have = IPV6_ADDR_ANY; }; 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 */ if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: token with prefix, suffix: %s\n", __FILE__, __func__, token + offset); }; } else if (strstr(token, ".") != NULL) { /* other prefix */ if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: prefix did not match: %s\n", __FILE__, __func__, token + offset); }; return(1); }; for (i = 0; i < (int) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); i++ ) { if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s/%s: check token against: %s\n", __FILE__, __func__, ipv6calc_ipv6addrtypestrings[i].token); }; if (strcmp(ipv6calc_ipv6addrtypestrings[i].token, token + offset) == 0) { if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s/%s: token match: %s\n", __FILE__, __func__, ipv6calc_ipv6addrtypestrings[i].token); }; if (negate == 1) { filter->typeinfo_may_not_have |= ipv6calc_ipv6addrtypestrings[i].number; } else { filter->typeinfo_must_have |= ipv6calc_ipv6addrtypestrings[i].number; }; filter->active = 1; result = 0; break; }; }; if (result != 0) { if ((ipv6calc_debug & DEBUG_libipv6addr) != 0) { fprintf(stderr, "%s/%s: token not supported: %s\n", __FILE__, __func__, token); }; return (result); }; END_ipv6addr_filter_parse: if ((ipv6calc_debug & DEBUG_libipv6addr) != 0) { fprintf(stderr, "%s/%s: filter 'must_have' : 0x%08x\n", __FILE__, __func__, filter->typeinfo_must_have); fprintf(stderr, "%s/%s: filter 'may_not_have' : 0x%08x\n", __FILE__, __func__, filter->typeinfo_may_not_have); fprintf(stderr, "%s/%s: filter 'active' : %d\n", __FILE__, __func__, filter->active); }; 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 = 1; if (filter->active == 0) { DEBUGPRINT_NA(DEBUG_libipv6addr, "No filter active (SKIP)"); return (1); }; DEBUGPRINT_NA(DEBUG_libipv6addr, "Start"); /* get type */ typeinfo = ipv6addr_gettype(ipv6addrp); if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { fprintf(stderr, "%s/%s: compare typeinfo against must_have: 0x%08x/0x%08x\n", __FILE__, __func__, typeinfo, filter->typeinfo_must_have); }; if ((typeinfo & filter->typeinfo_must_have) == filter->typeinfo_must_have) { if ((typeinfo & filter->typeinfo_may_not_have) == 0) { result = 0; }; }; return (result); }; /* get included IPv4 address from an IPv6 address */ /* in: IPv6 address pointer (ro) * selector: in case of Teredo: 1=client 2=server * 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; int begin = -1; int i; uint8_t xor = 0; typeinfo = ipv6addrp->scope; DEBUGPRINT_WA(DEBUG_libipv6addr, "Called with IPv6 address having typeinfo: 0x%08x", typeinfo); 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 == 1) { // Teredo client begin = 12; xor = 0xff; } else if (selector == 2) { begin = 4; } else { fprintf(stderr, "libipv6addr_get_included_ipv4addr FAILED (unsupported value of selector: %d)", selector); }; } else if ((typeinfo & IPV6_NEW_ADDR_6TO4) != 0) { begin = 2; }; if (begin > 0) { DEBUGPRINT_WA(DEBUG_libipv6addr, "IPv6 address contains IPv4 address in octets %d-%d", begin, begin+3); 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); 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); }; ipv6calc-0.95.0/lib/libeui64.c0000664000175100017510000002162412235225435014705 0ustar peterpeter/* * Project : ipv6calc * File : libeui64.c * Version : $Id: libeui64.c,v 1.10 2013/11/02 16:41:01 ds6peter Exp $ * Copyright : 2001-2013 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 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, NI_MAXHOST, "EUI64=%s", tempstring); } else { snprintf(resultstring, NI_MAXHOST, "%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, 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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Illegal character in given EUI-64 address '%s' 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, NI_MAXHOST - 1, "Error, 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, NI_MAXHOST - 1, "Error, unexpected failure on scanning EUI-64 address '%s'!", addrstring); retval = 1; return (retval); }; if ( result != 8 ) { snprintf(resultstring, NI_MAXHOST - 1, "Error splitting address %s, got %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, NI_MAXHOST - 1, "Error, 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.95.0/lib/ipv6calcoptions.h0000664000175100017510000000256012233542251016404 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calcoptions.h * Version : $Id: ipv6calcoptions.h,v 1.28 2013/10/28 20:10:17 ds6peter Exp $ * Copyright : 2002-2013 by Peter Bieringer * * Information: * Header file containing options */ #include #include #include "ipv6calctypes.h" #include "ipv6calccommands.h" #ifndef _ipv6calcoptions_h_ #define _ipv6calcoptions_h_ #define MAXLONGOPTIONS 100 #endif extern int ipv6calc_quiet; extern void ipv6calc_debug_from_env(void); 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.95.0/lib/libeui64.h0000664000175100017510000000263012234263111014676 0ustar peterpeter/* * Project : ipv6calc * File : libeui64.h * Version : $Id: libeui64.h,v 1.6 2013/10/30 20:04:25 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, 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 uint32_t formatoptions); ipv6calc-0.95.0/lib/libifinet6.h0000664000175100017510000000123507445443433015325 0ustar peterpeter/* * Project : ipv6calc * File : libifinet6.h * Version : $Id: libifinet6.h,v 1.1 2002/03/18 19:59:23 peter Exp $ * Copyright : 2002 by Peter Bieringer * * Information: * Header file for libifinet6.c */ #include "libipv6addr.h" /* prototypes */ extern int libifinet6_ifinet6_to_ipv6addrstruct(char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int libifinet6_ifinet6_withprefixlength_to_ipv6addrstruct(char *addrstring, char *prefixlengthstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int libifinet6_ipv6addrstruct_to_ifinet6(ipv6calc_ipv6addr *ipv6addrp, char *resultstring); ipv6calc-0.95.0/lib/libipv6calcdebug.h0000664000175100017510000000416712236110360016466 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv6calcdebug.h * Version : $Id: libipv6calcdebug.h,v 1.15 2013/11/05 06:32:16 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_libipv6addr_db_wrapper 0x00100000l #define DEBUG_libipv6addr_db_wrapper_GeoIP 0x00200000l #define DEBUG_libipv6addr_db_wrapper_IP2Location 0x00400000l #define DEBUG_libipv6addr_db_wrapper_GeoIP_verbose 0x00800000l #define DEBUG_libipv6addr_iidrandomdetection 0x01000000l #define DEBUG_libipv6addr_anonymization_unknown_break 0x02000000l /* debug print with args */ #define DEBUGPRINT_WA(d, t, ...) \ if ((ipv6calc_debug & d) != 0) { \ if (ipv6calc_debug == DEBUG_ipv6calc_ALL) { \ fprintf(stderr, "%s/%s[0x%08lx]: " t "\n", __FILE__, __func__, d, __VA_ARGS__); \ } else { \ fprintf(stderr, "%s/%s: " t "\n", __FILE__, __func__, __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[0x%08lx]: " t "\n", __FILE__, __func__, d); \ } else { \ fprintf(stderr, "%s/%s: " t "\n", __FILE__, __func__); \ }; \ }; #endif /* global debug value */ extern long int ipv6calc_debug; ipv6calc-0.95.0/lib/librfc3056.h0000664000175100017510000000104307445443435015050 0ustar peterpeter/* * Project : ipv6calc * File : librfc3056.h * Version : $Id: librfc3056.h,v 1.1 2002/03/18 19:59:25 peter Exp $ * Copyright : 2002 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); ipv6calc-0.95.0/lib/librfc3056.c0000664000175100017510000000430111634707731015040 0ustar peterpeter/* * Project : ipv6calc * File : librfc3056.c * Version : $Id: librfc3056.c,v 1.8 2011/09/16 18:05:13 peter Exp $ * Copyright : 2001-2003 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 */ #define DEBUG_function_name "librfc3056/ipv4addr_to_ipv6to4addr" 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); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "librfc3056/ipv6addr_to_ipv4addr" int librfc3056_ipv6addr_to_ipv4addr(ipv6calc_ipv4addr *ipv4addrp, const ipv6calc_ipv6addr *ipv6addrp, char* resultstring) { int retval = 1; unsigned int i; /* check scope */ if ( (ipv6addrp->scope & IPV6_NEW_ADDR_6TO4) == 0 ) { snprintf(resultstring, NI_MAXHOST - 1, "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); }; #undef DEBUG_function_name ipv6calc-0.95.0/lib/librfc1884.h0000664000175100017510000000116507453126053015055 0ustar peterpeter/* * Project : ipv6calc * File : librfc1884.h * Version : $Id: librfc1884.h,v 1.2 2002/04/04 19:40:27 peter Exp $ * Copyright : 2001-2002 by Peter Bieringer * * Information: * Header file for librfc1884.c */ #include "libipv6addr.h" /* prototypes */ extern int compaddr_to_uncompaddr(const char *addrstring, char *resultstring); extern int librfc1884_ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions); extern int ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addr, char *resultstring); /* going obsolete */ ipv6calc-0.95.0/lib/librfc5569.h0000664000175100017510000000072311634707731015064 0ustar peterpeter/* * Project : ipv6calc * File : librfc5569.h * Version : $Id: librfc5569.h,v 1.1 2011/09/16 18:05:13 peter Exp $ * Copyright : 2011 by Raphaël Assénat * * 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); ipv6calc-0.95.0/lib/librfc1924.h0000664000175100017510000000107707445443434015060 0ustar peterpeter/* * Project : ipv6calc * File : librfc1924.h * Version : $Id: librfc1924.h,v 1.1 2002/03/18 19:59:24 peter Exp $ * Copyright : 2001-2002 by Peter Bieringer * * Information: * Header file for librfc1924.c */ #include "libipv6addr.h" /* prototypes */ extern int ipv6addrstruct_to_base85(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring); extern int base85_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int librfc1924_formatcheck(const char *string, char *infostring); ipv6calc-0.95.0/lib/Makefile.in0000664000175100017510000000437112216764220015162 0ustar peterpeter# Project : ipv6calc # File : lib/Makefile # Version : $Id: Makefile.in,v 1.6 2013/09/20 06:17:52 ds6peter Exp $ # Copyright : 2002-2013 by Peter Bieringer # # Information: # Makefile for ipv6calc libraries # # Compiler and Linker Options # -D__EXTENSIONS__ is for Solaris & strtok_r DEFAULT_CFLAGS ?= -O2 -Wall CFLAGS += -D__EXTENSIONS__ INCLUDES= -I. -I../ $(GETOPT_INCLUDE) -I../md5/ -I../databases/lib/ CC = @CC@ AR = ar RANLIB = @RANLIB@ OBJS = libipv6calc.o \ libipv6addr.o \ libipv4addr.o \ libieee.o \ libeui64.o \ libmac.o \ librfc1884.o \ librfc1886.o \ librfc1924.o \ librfc2874.o \ librfc3041.o \ librfc3056.o \ librfc5569.o \ libifinet6.o \ ipv6calchelp.o \ ipv6calcoptions.o \ ipv6calctypes.o all: libipv6calc.a libieee.o: ../databases/ieee-oui/dbieee_oui.h libieee.c libieee.h cd ../ && ${MAKE} db-ieee-oui-make $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c libieee.c libipv4addr.o: ../databases/ipv4-assignment/dbipv4addr_assignment.h libipv4addr.c libipv4addr.h cd ../ && ${MAKE} db-ipv4-assignment-make $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c libipv4addr.c libipv6addr.o: ../databases/ipv6-assignment/dbipv6addr_assignment.h libipv6addr.c libipv6addr.h cd ../ && ${MAKE} db-ipv6-assignment-make $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c libipv6addr.c .c.o: $(CC) $(DEFAULT_CFLAGS) $(CFLAGS) $(INCLUDES) -c $< $(OBJS): libipv6calcdebug.h \ libipv6calc.h \ libipv6addr.h \ libipv4addr.h \ libieee.h \ libeui64.h \ libmac.h \ librfc1884.h \ librfc1886.h \ librfc1924.h \ librfc2874.h \ librfc3041.h \ librfc3056.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" $(AR) r libipv6calc.a $(OBJS) $(RANLIB) libipv6calc.a distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f *.o *.a install: test: ipv6calc-0.95.0/lib/libieee.c0000664000175100017510000002242612234545236014664 0ustar peterpeter/* * Project : ipv6calc * File : libieee.c * Version : $Id: libieee.c,v 1.18 2013/10/31 21:24:46 ds6peter Exp $ * Copyright : 2002-2013 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" #ifdef SUPPORT_DB_IEEE #include "../databases/ieee-oui/dbieee_oui.h" #include "../databases/ieee-oui36/dbieee_oui36.h" #include "../databases/ieee-iab/dbieee_iab.h" #endif /* * Get vendor string * in: macaddrp * mod: resultstring * out: 0=found, 1=not found */ int libieee_get_vendor_string(char *resultstring, 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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "%s", libieee_iab[i].string_owner); 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, NI_MAXHOST - 1, "%s", libieee_oui36[i].string_owner); return (0); }; }; }; /* run through OUI list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_oui); i++) { if (libieee_oui[i].id == idval) { /* match */ snprintf(resultstring, NI_MAXHOST - 1, "%s", libieee_oui[i].string_owner); return (0); }; }; #else snprintf(resultstring, NI_MAXHOST - 1, "(IEEE databases not compiled in)"); return (0); #endif /* not found */ retval = 1; return (retval); }; /* * Get short vendor string * in: macaddrp * mod: resultstring * out: 0=found, 1=not found */ int libieee_get_short_vendor_string(char *resultstring, 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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "%s", libieee_iab[i].shortstring_owner); 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, NI_MAXHOST - 1, "%s", libieee_oui36[i].shortstring_owner); return (0); }; }; }; /* run through OUI list */ for (i = 0; i < MAXENTRIES_ARRAY(libieee_oui); i++) { if (libieee_oui[i].id == idval) { /* match */ snprintf(resultstring, NI_MAXHOST - 1, "%s", libieee_oui[i].shortstring_owner); return (0); }; }; #else snprintf(resultstring, NI_MAXHOST - 1, "(IEEE databases not compiled in)"); return (0); #endif /* not found */ retval = 1; return (retval); }; /* * 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; if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: called with map_value=%08x\n", __FILE__, __func__, map_value); }; /* run through map */ for (i = 0; i < (int) (sizeof(ieee_mapping) / sizeof(ieee_mapping[0])); i++) { if (ieee_mapping[i].mapping == map_index) { if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: found entry in map: %06x\n", __FILE__, __func__, map_index); }; *bits_00_23_p = ieee_mapping[i].bits_00_23; *bits_24_36_p = map_value & 0xfff; if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: mapped to bits_00_23=%06x bits_24_36=%03x\n", __FILE__, __func__, *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); if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: called with OUI: %06x\n", __FILE__, __func__, 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); if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: called with OUI: %06x\n", __FILE__, __func__, 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); if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: called\n", __FILE__, __func__); }; 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); if (ipv6calc_debug != 0) { fprintf(stderr, "%s/%s: called\n", __FILE__, __func__); }; 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.95.0/lib/librfc2874.h0000664000175100017510000000122107460520530015042 0ustar peterpeter/* * Project : ipv6calc * File : librfc2874.h * Version : $Id: librfc2874.h,v 1.6 2002/04/21 11:24:08 peter Exp $ * Copyright : 2001-2002 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 uint32_t formatoptions); extern int librfc2874_bitstring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring); extern int librfc2874_formatcheck(const char *string, char *infostring); ipv6calc-0.95.0/lib/ipv6calctypes.c0000664000175100017510000001037612143641540016055 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calctypes.c * Version : $Id: ipv6calctypes.c,v 1.3 2013/05/12 07:23:12 ds6peter Exp $ * Copyright : 2002-2013 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 */ #define DEBUG_function_name "ipv6calctypes/checktype" uint32_t ipv6calctypes_checktype(const char *string) { int i; uint32_t number = FORMAT_undefined; char tokenlist[100]; char *token, *cptr, **ptrptr; ptrptr = &cptr; if ((ipv6calc_debug & DEBUG_libipv6calctypes) != 0) { fprintf(stderr, "%s: Got string: %s\n", DEBUG_function_name, string); }; for (i = 0; i < (int) (sizeof(ipv6calc_formatstrings) / sizeof(ipv6calc_formatstrings[0])); i++) { if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Compare against: %s\n", DEBUG_function_name, 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; }; if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Compare against aliases in string: %s\n", DEBUG_function_name, ipv6calc_formatstrings[i].aliases); }; snprintf(tokenlist, sizeof(tokenlist) - 1, "%s", ipv6calc_formatstrings[i].aliases); token = strtok_r(tokenlist, " ", ptrptr); while (token != NULL) { if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Compare against alias token: %s\n", DEBUG_function_name, token); }; /* compare alias */ if (strcmp(string, token) == 0) { number = ipv6calc_formatstrings[i].number; break; }; /* get next token */ token = strtok_r(NULL, " ", ptrptr); }; }; if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { if ( number == FORMAT_undefined ) { fprintf(stderr, "%s: Found no proper string\n", DEBUG_function_name); } else { fprintf(stderr, "%s: Found format number: %08x\n", DEBUG_function_name, (unsigned int) number); }; }; return(number); }; #undef DEBUG_function_name /* * check given type string * in : action string * ret: action type */ #define DEBUG_function_name "ipv6calctypes/checkaction" uint32_t ipv6calctypes_checkaction(const char *string) { int i; uint32_t number = ACTION_undefined; char tokenlist[100]; char *token, *cptr, **ptrptr; ptrptr = &cptr; if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Got string: %s\n", DEBUG_function_name, string); }; for (i = 0; i < (int) (sizeof(ipv6calc_actionstrings) / sizeof(ipv6calc_actionstrings[0])); i++) { if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Compare against: %s\n", DEBUG_function_name, 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; }; if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Compare against aliases in string: %s\n", DEBUG_function_name, ipv6calc_actionstrings[i].aliases); }; snprintf(tokenlist, sizeof(tokenlist) - 1, "%s", ipv6calc_formatstrings[i].aliases); token = strtok_r(tokenlist, " ", ptrptr); while (token != NULL) { if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { fprintf(stderr, "%s: Compare against alias token: %s\n", DEBUG_function_name, token); }; /* compare alias */ if (strcmp(string, token) == 0) { number = ipv6calc_actionstrings[i].number; break; }; /* get next token */ token = strtok_r(NULL, " ", ptrptr); }; }; if ( (ipv6calc_debug & DEBUG_libipv6calctypes) != 0 ) { if ( number == FORMAT_undefined ) { fprintf(stderr, "%s: Found no proper string\n", DEBUG_function_name); } else { fprintf(stderr, "%s: Found action number: %08x\n", DEBUG_function_name, (unsigned int) number); }; }; return(number); }; ipv6calc-0.95.0/lib/libipv6calc.c0000664000175100017510000004630212234263111015450 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv6calc.c * Version : $Id: libipv6calc.c,v 1.36 2013/10/30 20:04:25 ds6peter Exp $ * Copyright : 2001-2013 by Peter Bieringer * * Information: * Function library for some tools */ #include #include #include #include #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 */ #define DEBUG_function_name "libipv6calc/string_to_upcase" 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; }; #undef DEBUG_function_name /* * function converts chars in a string to lowcase * in : pointer to a string */ #define DEBUG_function_name "libipv6calc/string_to_lowcase" 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; }; #undef DEBUG_function_name /* * reverse string * in : pointer to a string */ #define DEBUG_function_name "libipv6calc/string_to_reverse" 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; }; #undef DEBUG_function_name /* * dotted-reverse string * in : pointer to a string */ #define DEBUG_function_name "libipv6calc/string_to_reverse_dotted" void string_to_reverse_dotted(char *string) { char resultstring[NI_MAXHOST], tempstring[NI_MAXHOST]; char *token, *cptr, **ptrptr; int flag_first = 1; ptrptr = &cptr; /* clear result string */ snprintf(resultstring, sizeof(resultstring) - 1 , "%s", ""); /* check for starting dot */ if ( string[0] == '.' ) { snprintf(tempstring, sizeof(tempstring) - 1, "%s.", resultstring); snprintf(resultstring, sizeof(resultstring) - 1, "%s", tempstring); }; token = strtok_r(string, ".", ptrptr); while (token != NULL) { if (flag_first == 1) { snprintf(tempstring, sizeof(tempstring) - 1, "%s%s", token, resultstring); flag_first = 0; } else { snprintf(tempstring, sizeof(tempstring) - 1, "%s.%s", token, resultstring); }; snprintf(resultstring, sizeof(resultstring) - 1, "%s", tempstring); token = strtok_r(NULL, ".", ptrptr); }; if ( string[strlen(string) - 1] == '.' ) { snprintf(tempstring, sizeof(tempstring) - 1, ".%s", resultstring); snprintf(resultstring, sizeof(resultstring) - 1, "%s", tempstring); }; snprintf(string, NI_MAXHOST - 1, ".%s", resultstring); return; }; #undef DEBUG_function_name /* * function converts chars in a string to upcase * in : pointer to a string * ret: format number */ #define DEBUG_function_name "libipv6calc/autodetectinput" 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++; }; }; if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: Autodetection source:\n", DEBUG_function_name); fprintf(stderr, "%s: numdots :%d\n", DEBUG_function_name, numdots); fprintf(stderr, "%s: numcolons :%d\n", DEBUG_function_name, numcolons); fprintf(stderr, "%s: numcolonsdouble:%d\n", DEBUG_function_name, numcolonsdouble); fprintf(stderr, "%s: numdashes :%d\n", DEBUG_function_name, numdashes); fprintf(stderr, "%s: numspaces :%d\n", DEBUG_function_name, numspaces); fprintf(stderr, "%s: numslashes :%d\n", DEBUG_function_name, numslashes); fprintf(stderr, "%s: numdigits :%d\n", DEBUG_function_name, numdigits); fprintf(stderr, "%s: numxdigits :%d\n", DEBUG_function_name, numxdigits); fprintf(stderr, "%s: numalnums :%d\n", DEBUG_function_name, numalnums); fprintf(stderr, "%s: numpercents :%d\n", DEBUG_function_name, numpercents); fprintf(stderr, "%s: numchar_s :%d\n", DEBUG_function_name, numchar_s); fprintf(stderr, "%s: xdigit len max :%d\n", DEBUG_function_name, xdigitlen_max); fprintf(stderr, "%s: xdigit len min :%d\n", DEBUG_function_name, xdigitlen_min); fprintf(stderr, "%s: length :%d\n", DEBUG_function_name, (int) length); }; if ( length == 20 && numdots == 0 && numcolons == 0 ) { /* probably a base85 one */ if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_base85\n", DEBUG_function_name); }; result = librfc1924_formatcheck(string, resultstring); if ( result == 0 ) { /* ok: base85 */ type = FORMAT_base85; goto END_libipv6calc_autodetectinput; } else if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_base85 not successful, result: %s\n", DEBUG_function_name, resultstring); }; }; if (length >= 7 && length <= 15 && numdots == 3 && numcolons == 0 && numdigits == numxdigits && numdigits >= 4 && numdigits <= 12 && numslashes <= 1 && (numdots + numdigits + numslashes) == length) { /* IPv4: ddd.ddd.ddd.ddd */ type = FORMAT_ipv4addr; goto END_libipv6calc_autodetectinput; }; if ( strncmp(string, "\\[", 2) == 0 ) { /* check for Bitstring label: \[x..../dd] */ if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_bitstring\n", DEBUG_function_name); }; result = librfc2874_formatcheck(string, resultstring); if ( result == 0 ) { /* ok: bitstring label */ type = FORMAT_bitstring; goto END_libipv6calc_autodetectinput; } else if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_bitstring not successful, result: %s\n", DEBUG_function_name, 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; if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: Autodetection found type: mac\n", DEBUG_function_name); }; goto END_libipv6calc_autodetectinput; }; if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_mac\n", DEBUG_function_name); }; /* 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; if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: Autodetection found type: mac\n", DEBUG_function_name); }; 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 */ if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_eui64\n", DEBUG_function_name); }; 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; if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: Autodetection found type: eui64\n", DEBUG_function_name); }; goto END_libipv6calc_autodetectinput; }; }; if (numcolons == 0 && numdots > 0 && numslashes == 0 && numspaces == 0 && (numalnums + numdots) == length) { /* check for reverse nibble string */ if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_revnibbels_int\n", DEBUG_function_name); }; result = librfc1886_formatcheck(string, resultstring); if ( result == 0 ) { /* ok: reverse nibble string */ type = FORMAT_revnibbles_int; goto END_libipv6calc_autodetectinput; } else if ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { fprintf(stderr, "%s: check FORMAT_revnibbels_int not successful, result: %s\n", DEBUG_function_name, 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 ( (ipv6calc_debug & DEBUG_libipv6calc) != 0 ) { if (type != FORMAT_auto_noresult) { fprintf(stderr, "%s: Autodetection found type: 0x%08x\n", DEBUG_function_name, (unsigned int) type); } else { fprintf(stderr, "%s: Autodetection not successful\n", DEBUG_function_name); }; }; return (type); }; #undef DEBUG_function_name /* * clear filter master address * * 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; }; /* * 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; snprintf(tempstring, NI_MAXHOST - 1, "%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; fprintf(stderr, "Unrecognized filter token: %s\n", charptr); }; r = ipv6addr_filter_parse(&filter_master->filter_ipv6addr, charptr); if (r == 0) { token_used = 1; } else if (r == 2) { result = 1; fprintf(stderr, "Unrecognized filter token: %s\n", charptr); }; // r += macaddr_filter_parse(&filter_macaddr, charptr); /* overall check */ if (token_used == 0) { result = 1; fprintf(stderr, "Unrecognized filter token: %s\n", charptr); }; charptr = strtok_r(NULL, ",", ptrptr); }; 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 - 1, "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; 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); }; ipv6calc-0.95.0/lib/librfc1886.c0000664000175100017510000002743412143641540015054 0ustar peterpeter/* * Project : ipv6calc * File : librfc1886.c * Version : $Id: librfc1886.c,v 1.18 2013/05/12 07:23:12 ds6peter Exp $ * Copyright : 2002-2013 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 */ #define DEBUG_function_name "librfc1886/addr_to_nibblestring" int librfc1886_addr_to_nibblestring(ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions, char* domain) { int retval = 1; unsigned int nibble; int bit_start, bit_end, nbit; char tempstring[NI_MAXHOST]; unsigned int nnibble, noctet; if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: flag_prefixuse %d\n", DEBUG_function_name, (*ipv6addrp).flag_prefixuse); }; /* 20100909: take care of prefix length before printing the nibbles, but break old behavior */ if ((*ipv6addrp).flag_prefixuse != 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; if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: simulate old behavior\n", DEBUG_function_name); }; } else if ( (*ipv6addrp).flag_startend_use != 0 ) { /* check start and end */ if ( (((*ipv6addrp).bit_start - 1) & 0x03) != 0 ) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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 = (int) (*ipv6addrp).bit_start; bit_end = (int) (*ipv6addrp).bit_end; } else { bit_start = 1; bit_end = 128; }; if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: start bit %d end bit %d\n", DEBUG_function_name, 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)); if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: bit: %d = noctet: %u, nnibble: %u, octet: %02x, value: %x\n", DEBUG_function_name, nbit, noctet, nnibble, (unsigned int) (*ipv6addrp).in6_addr.s6_addr[noctet], nibble); }; snprintf(tempstring, sizeof(tempstring) - 1, "%s%x", resultstring, nibble); if ((nbit < bit_start) && (bit_start != 1)) { /* don't print trailing "." on middle part end */ snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s.", tempstring); }; }; if (bit_start == 1) { snprintf(tempstring, sizeof(tempstring) - 1, "%s%s", resultstring, domain); }; snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; if ( (formatoptions & FORMATOPTION_printmirrored) != 0 ) { string_to_reverse_dotted(resultstring); }; if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: Print out: %s\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * function a reverse nibble format string into IPv6addr_structure * * in : inputstring * mod: *ipv6addrp = IPv6 address structure * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "librfc1886/nibblestring_to_ipv6addrstruct" int librfc1886_nibblestring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring) { 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, NI_MAXHOST - 1, "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) - 1, "%s", inputstring); string_to_lowcase(tempstring); /* check string */ retval = librfc1886_formatcheck(tempstring, resultstring); if (retval != 0) { return (1); }; string_to_reverse(tempstring); if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: reverse copied string: %s\n", DEBUG_function_name, 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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Nibble '%s' on dot position %d (from right side) cannot be parsed", token, tokencounter + 1); return (1); }; if ( xdigit < 0 || xdigit > 0xf ) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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); }; #undef DEBUG_function_name /* * checks for proper format of a nibble string * * in : string * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "librfc1886/formatcheck" int librfc1886_formatcheck(const char *string, char *infostring) { 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) - 1) { fprintf(stderr, "Input too long: %s\n", string); return (1); }; snprintf(tempstring, sizeof(tempstring) - 1, "%s", string); if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: check %s\n", DEBUG_function_name, tempstring); }; string_to_reverse(tempstring); /* run through nibbles */ token = strtok_r(tempstring, ".", ptrptr); while(token != NULL) { if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: check token: %s (tld: %d, nld: %d, tokencounter: %d)\n", DEBUG_function_name, token, flag_tld, flag_nld, tokencounter + 1); }; if (strcmp(token, "apra") == 0) { /* arpa (reverse) */ if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: found: arpa\n", DEBUG_function_name); }; if (flag_tld == 0 && tokencounter == 0) { if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: found TLD: arpa\n", DEBUG_function_name); }; flag_tld = 1; goto NEXT_librfc1886_formatcheck; } else { snprintf(infostring, NI_MAXHOST - 1, "Top level domain 'arpa' is in wrong place"); return (1); }; }; if (strcmp(token, "tni") == 0) { /* int (reverse) */ if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: found: int\n", DEBUG_function_name); }; if (flag_tld == 0 && tokencounter == 0) { if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: found TLD: int\n", DEBUG_function_name); }; flag_tld = 1; goto NEXT_librfc1886_formatcheck; } else { snprintf(infostring, NI_MAXHOST - 1, "Top level domain 'int' is in wrong place"); return (1); }; }; if (strcmp(token, "6pi") == 0) { /* ip6 (reverse) */ if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: found: ip6\n", DEBUG_function_name); }; if (tokencounter == 1 && flag_tld == 1 && flag_nld == 0) { if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: found NLD: ip6\n", DEBUG_function_name); }; flag_nld = 1; goto NEXT_librfc1886_formatcheck; } else { snprintf(infostring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Too many nibbles (more than 32)"); return (1); }; NEXT_librfc1886_formatcheck: token = strtok_r(NULL, ".", ptrptr); tokencounter++; }; if ( (ipv6calc_debug & DEBUG_librfc1886) != 0 ) { fprintf(stderr, "%s: check %s is ok\n", DEBUG_function_name, string); }; return (0); }; #undef DEBUG_function_name ipv6calc-0.95.0/lib/ipv6calchelp.h0000664000175100017510000000251212231545453015643 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calchelp.h * Version : $Id: ipv6calchelp.h,v 1.15 2013/10/22 18:59:55 ds6peter Exp $ * Copyright : 2002-2013 by Peter Bieringer * * Information: * Header file for ipv6calchelp.c */ #include "ipv6calc_inttypes.h" /* 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(void); extern void printhelp_oldoptions(const struct option longopts[]); 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(void); extern void ipv6calc_print_features_verbose(const int level_vebose); ipv6calc-0.95.0/lib/ipv6calchelp.c0000664000175100017510000006726612235230307015650 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calchelp.c * Version : $Id: ipv6calchelp.c,v 1.50 2013/11/02 17:05:11 ds6peter Exp $ * Copyright : 2002-2013 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/ieee-oui/dbieee_oui.h" #include "databases/ieee-iab/dbieee_iab.h" #include "databases/ieee-oui36/dbieee_oui36.h" #include "databases/ipv4-assignment/dbipv4addr_assignment.h" #include "databases/ipv6-assignment/dbipv6addr_assignment.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_BuiltIn.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 < (int) (sizeof(ipv6calc_formatstrings) / sizeof(ipv6calc_formatstrings[0])); 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) - 1, " %%-%ds : %%s\n", (int) maxlen); } else { snprintf(printformatstring, sizeof(printformatstring) - 1, "%%-%ds\n", (int) maxlen); } if (ipv6calc_debug != 0) { fprintf(stderr, "Format string: %s\n", 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++) { if (ipv6calc_debug != 0) { fprintf(stderr, "Row %d: %08x - %08x\n", 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++) { if (ipv6calc_debug != 0) { fprintf(stderr, "Format-Row %d: %08x - %s - %s\n", 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) - 1, " %%-%ds : %%s\n", (int) maxlen); } else { snprintf(printformatstring, sizeof(printformatstring) - 1, "%%-%ds\n", (int) maxlen); }; if (ipv6calc_debug != 0) { fprintf(stderr, "Format string: %s\n", 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++) { if (ipv6calc_debug != 0) { fprintf(stderr, "Format-Row %d: %08x - %s - %s\n", 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; }; }; if (ipv6calc_debug != 0) { fprintf(stderr, "Row %d: %08x - %08x\n", 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, " --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 = 2, has_options = 0; 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 < (int) (sizeof(ipv6calc_actionstrings) / sizeof(ipv6calc_actionstrings[0])); 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) - 1, " %%-%ds : %%s\n", (int) maxlen); } else { snprintf(printformatstring, sizeof(printformatstring) - 1, "%%-%ds\n", (int) maxlen); }; snprintf(printformatstring2, sizeof(printformatstring2) - 1, " %%-%ds%%s\n", (int) maxlen + 4); snprintf(printformatstring3, sizeof(printformatstring3) - 1, " %%-%ds--%%s", (int) maxlen + 5); if (ipv6calc_debug != 0) { fprintf(stderr, "Format string: %s\n", printformatstring); }; if ((formatoptions & FORMATOPTION_machinereadable) == 0) fprintf(stderr, "\n Available action types:\n"); for (j = 0; j < MAXENTRIES_ARRAY(ipv6calc_actionstrings); j++) { if (ipv6calc_debug != 0) { fprintf(stderr, "Format-Row %d: %08x - %s - %s\n", 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); while (test != 0) { if (test == 1) { fprintf(stderr, printformatstring2, "", "Required options:"); }; /* search for defined options */ for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_actionoptionmap); i++) { if (ipv6calc_debug != 0) { fprintf(stderr, "Option %d\n", i); }; if (ipv6calc_actionstrings[j].number == ipv6calc_actionoptionmap[i][0]) { if (ipv6calc_actionoptionmap[i][1] == 0) { /* no options supported */ break; }; if (ipv6calc_debug != 0) { fprintf(stderr, "Option value: %08x\n", (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, " ..."); }; 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(void) { fprintf(stderr, " [-d|--debug ] : debug value (bitwise like)\n"); fprintf(stderr, " can also be set IPV6CALC_DEBUG environment value\n"); fprintf(stderr, " [-v|--version [-v [-v]]] : version information (2 optional verbose levels)\n"); fprintf(stderr, " [-h|--help|-?] : this online help\n"); #ifdef SUPPORT_IP2LOCATION fprintf(stderr, "\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 #endif #ifdef SUPPORT_GEOIP fprintf(stderr, "\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 return; }; void printhelp_oldoptions(const struct option longopts[]) { int i = 0; printversion(); printcopyright(); fprintf(stderr, " Usage with old style (shortcut) options (going obsolete):\n"); fprintf(stderr, " [ ...] [...]\n"); fprintf(stderr, "\n"); while(longopts[i].name != NULL) { if (longopts[i].val >= CMD_shortcut_start && longopts[i].val <= CMD_shortcut_end) { fprintf(stderr, " --%s\n", longopts[i].name); }; 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_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; 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; }; if (ipv6calc_debug != 0) { fprintf(stderr, "Format value: %08x\n", (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, " help still missing - sorry.\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 PRESET-NAME]:\n"); for (i = 0; i < MAXENTRIES_ARRAY(ipv6calc_anon_set_list); i++) { snprintf(method_name, sizeof(method_name) - 1, "%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) - 1, "%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-randomy\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, " IPv6 address filter tokens:\n"); fprintf(stderr, " ipv6 "); for (i = 0; i < (int) (sizeof(ipv6calc_ipv6addrtypestrings) / sizeof(ipv6calc_ipv6addrtypestrings[0])); 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 < (int) (sizeof(ipv6calc_ipv4addrtypestrings) / sizeof(ipv6calc_ipv4addrtypestrings[0])); i++ ) { fprintf(stderr, " %s", ipv6calc_ipv4addrtypestrings[i].token); }; fprintf(stderr, "\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; }; }; /*************************** * version information * *************************/ void ipv6calc_print_features(void) { #ifdef SUPPORT_IP2LOCATION fprintf(stderr, " IP2Location"); #endif #ifdef SUPPORT_GEOIP fprintf(stderr, " GeoIP"); #ifdef SUPPORT_GEOIP_V6 fprintf(stderr, " GeoIPv6"); #endif #endif #ifdef SUPPORT_DB_IEEE fprintf(stderr, " DB_IEEE"); #endif #ifdef SUPPORT_DB_IPV4 fprintf(stderr, " DB_IPV4"); #endif #ifdef SUPPORT_DB_IPV6 fprintf(stderr, " DB_IPV6"); #endif }; /* display features in verbose mode */ void ipv6calc_print_features_verbose(const int level_verbose) { char string[NI_MAXHOST]; #ifdef SUPPORT_GEOIP #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 fprintf(stderr, "GeoIP support enabled, compiled with IPv4 support only\n"); #endif #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 fprintf(stderr, "GeoIP support by dynamic library load, compiled with IPv4 support only\n"); #endif // SUPPORT_GEOIP_DYN fprintf(stderr, "GeoIP configured dynamic library file and version: %s %s\n", geoip_lib_file, libipv6calc_db_wrapper_GeoIP_lib_version()); #endif //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", string); #else fprintf(stderr, "GeoIP support not enabled\n"); #endif #ifdef SUPPORT_IP2LOCATION #ifndef SUPPORT_IP2LOCATION_DYN fprintf(stderr, "IP2Location support enabled, compiled with API version: %s\n", xmakestr(API_VERSION)); #else fprintf(stderr, "IP2Location support by dynamic library load\n"); fprintf(stderr, "IP2Location configured dynamic library file and 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"); }; */ #else fprintf(stderr, "IP2Location support not enabled\n"); #endif #ifdef SUPPORT_BUILTIN libipv6calc_db_wrapper_BuiltIn_wrapper_info(string, sizeof(string)); fprintf(stderr, "%s\n", string); #else fprintf(stderr, "BuiltIn support not enabled\n"); #endif libipv6calc_db_wrapper_print_db_info(level_verbose, ""); }; ipv6calc-0.95.0/lib/libipv6calc.h0000664000175100017510000001046312234545236015467 0ustar peterpeter/* * Project : ipv6calc * File : libipv6calc.h * Version : $Id: libipv6calc.h,v 1.21 2013/10/31 21:24:46 ds6peter Exp $ * Copyright : 2001-2013 by Peter Bieringer * * Information: * Header file for libipv6calc.c */ #include "ipv6calc_inttypes.h" #include "ipv6calctypes.h" #include "libipv4addr.h" #include "libipv6addr.h" #include "libmac.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_RIPE 0x03 #define REGISTRY_LACNIC 0x04 #define REGISTRY_AFRINIC 0x05 #define REGISTRY_ARIN 0x06 #define REGISTRY_6BONE 0x08 #define REGISTRY_IANA 0x09 #define REGISTRY_RESERVED 0x0e #define REGISTRY_UNKNOWN 0x0f // new array (try to remove old arrays) /*@unused@*/ static const s_type ipv6calc_registries[] = { { REGISTRY_6BONE , "6BONE" }, { REGISTRY_IANA , "IANA" }, { REGISTRY_APNIC , "APNIC" }, { REGISTRY_ARIN , "ARIN" }, { REGISTRY_RIPE , "RIPENCC" }, { REGISTRY_LACNIC , "LACNIC" }, { REGISTRY_AFRINIC , "AFRINIC" }, { REGISTRY_RESERVED , "reserved" }, { REGISTRY_UNKNOWN , "unknown" } }; /* 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"); }; #endif /* prototypes */ extern int ipv6calc_quiet; 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); extern uint32_t libipv6calc_autodetectinput(const char *string); extern int libipv6calc_filter_parse(const char *expression, s_ipv6calc_filter_master *filter_master); extern void libipv6calc_filter_clear(s_ipv6calc_filter_master *filter_master); 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); ipv6calc-0.95.0/lib/librfc3041.h0000664000175100017510000000113212063312361015022 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.95.0/lib/libmac.h0000664000175100017510000000304412234263111014502 0ustar peterpeter/* * Project : ipv6calc * File : libmac.h * Version : $Id: libmac.h,v 1.13 2013/10/30 20:04:25 ds6peter Exp $ * Copyright : 2001-2013 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, ipv6calc_macaddr *macaddrp); extern int addr_to_macaddrstruct(const char *addrstring, char *resultstring, ipv6calc_macaddr *macaddrp); // compatible name extern int macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, const uint32_t formatoptions); extern int libmacaddr_macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, 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.95.0/lib/librfc3041.c0000664000175100017510000000510712204605673015033 0ustar peterpeter/* * Project : ipv6calc * File : librfc3041.c * Version : $Id: librfc3041.c,v 1.13 2013/08/20 06:24:59 ds6peter Exp $ * Copyright : 2001-2012 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 "../md5/md5.h" #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) { #define DEBUG_function_name "librfc3041/librfc3041_calc" int retval = 1, i; struct md5_ctx md5hash; char tempstring[NI_MAXHOST], tempstring2[NI_MAXHOST]; unsigned char digest[MD5_DIGEST_LENGTH]; if ( (ipv6calc_debug & DEBUG_librfc3041) != 0 ) { fprintf(stderr, "%s: Got identifier '%08x-%08x' and token '%08x-%08x'\n", DEBUG_function_name, (unsigned int) ipv6addr_getdword(identifier, 2), (unsigned int) ipv6addr_getdword(identifier, 3), (unsigned int) ipv6addr_getdword(token, 2), (unsigned int) ipv6addr_getdword(token, 3)); }; md5_init_ctx(&md5hash); md5_process_bytes(&identifier->in6_addr.s6_addr[8], 8, &md5hash); md5_process_bytes(&token->in6_addr.s6_addr[8], 8, &md5hash); md5_finish_ctx(&md5hash, digest); tempstring[0] = '\0'; for (i = 0; i < MD5_DIGEST_LENGTH; i++) { snprintf(tempstring2, sizeof(tempstring2) - 1, "%s%02x", tempstring, (int) digest[i]); snprintf(tempstring, sizeof(tempstring) - 1, "%s", tempstring2); }; if ( (ipv6calc_debug & DEBUG_librfc3041) != 0 ) { fprintf(stderr, "%s: MD5 hash '%s'\n", DEBUG_function_name, 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.95.0/lib/ipv6calcoptions.c0000664000175100017510000002620412237747205016412 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calcoptions.c * Version : $Id: ipv6calcoptions.c,v 1.11 2013/11/10 18:20:53 ds6peter Exp $ * Copyright : 2013-2013 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; int ipv6calc_quiet; /* 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; fprintf(stderr, "%s/%s: can't parse value for debug option: %s\n", __FILE__, __func__, string); }; } else { // convert dec if (sscanf(string, "%ld", &value) == 0) { ipv6calc_debug = 0; fprintf(stderr, "%s/%s: can't parse value for debug option: %s\n", __FILE__, __func__, 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 != 0) { fprintf(stderr, "%s/%s: IPV6CALC_DEBUG found in environment: %s\n", __FILE__, __func__, ipv6calc_debug_env); ipv6calc_debug_val = parse_dec_hex_val(ipv6calc_debug_env); if (ipv6calc_debug_val != 0) { ipv6calc_debug = ipv6calc_debug_val; fprintf(stderr, "%s/%s: IPV6CALC_DEBUG proper parsed: %08lx\n", __FILE__, __func__, ipv6calc_debug); }; }; }; /* * 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_NA(DEBUG_ipv6calcoptions, "Called"); if (*maxentries_p + MAXENTRIES_ARRAY(longopts_custom) >= (MAXLONGOPTIONS - 1)) { fprintf(stderr, "FATAL error, can't add options - FIX CODE by increasing 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: %s\n", longopts[j].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 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 ipv6calc_options_add(shortopts_p, shortopts_maxlen, longopts, maxentries_p, ipv6calc_shortopts_geoip, ipv6calc_longopts_geoip, MAXENTRIES_ARRAY(ipv6calc_longopts_geoip)); #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); fprintf(stderr, "%s/%s: given debug value: %lx\n", __FILE__, __func__, ipv6calc_debug); result = 0; break; case 'q': DEBUGPRINT_NA(DEBUG_ipv6calcoptions, "Found quiet option"); ipv6calc_quiet = 1; 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) -1, "%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\n", opt); while (longopts[i].name != NULL) { if (opt == longopts[i].val) { return(longopts[i].name); }; i++; }; return("UNKNOWN"); }; ipv6calc-0.95.0/lib/libipv6addr.h0000664000175100017510000004417412232267540015502 0ustar peterpeter/* * Project : ipv6calc * File : libipv6addr.h * Version : $Id: libipv6addr.h,v 1.74 2013/10/24 19:05:04 ds6peter Exp $ * Copyright : 2001-2013 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) * 0x3FF = unknown country * 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 */ 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[NI_MAXHOST]; /* scope ID value */ int flag_scopeid; /* =1: scope ID value set */ } ipv6calc_ipv6addr; /* 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 char *string_registry; } s_ipv6addr_assignment; /* 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 }; /* filter */ typedef struct { int active; uint32_t typeinfo_must_have; uint32_t typeinfo_may_not_have; /* others coming next */ } s_ipv6calc_filter_ipv6addr; /* 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 (IPV6_NEW_ADDR_NAT64 | IPV6_NEW_ADDR_6TO4 | IPV6_NEW_ADDR_TEREDO | IPV6_ADDR_COMPATv4 | IPV6_ADDR_MAPPED) #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) /* 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" } }; /* 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_RIPE REGISTRY_RIPE #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 typedef struct { const int number; const char *token; const char *tokensimple; } s_type2; /*@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_RIPE , "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 numocett, 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 uint32_t ipv6addr_gettype(const ipv6calc_ipv6addr *ipv6addrp); extern int ipv6addr_getregistry(const ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_get_registry_string(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring); extern int addr_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int addrliteral_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_ipv6addrstruct_to_uncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions); extern int libipv6addr_to_octal(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions); extern int libipv6addr_to_hex(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, 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, ipv6calc_ipv6addr *ipv6addrp); extern int tokenlsb64_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_ipv6addrstruct_to_tokenlsb64(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, 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 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); ipv6calc-0.95.0/lib/ipv6calc_inttypes.h0000664000175100017510000000103107460520530016721 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calc_inttypes.h * Version : $Id: ipv6calc_inttypes.h,v 1.1 2002/04/21 11:24:08 peter Exp $ * Copyright : 2002 by Peter Bieringer * * Information: * Common header file to define inttypes like uint8_t and other basics */ #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 ipv6calc-0.95.0/lib/libipv4addr.h0000664000175100017510000001571412231020225015460 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv4addr.h * Version : $Id: libipv4addr.h,v 1.29 2013/10/20 18:27:33 ds6peter Exp $ * Copyright : 2002-2013 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 assignment structure */ typedef struct { const uint32_t ipv4addr; const uint32_t ipv4mask; const uint8_t prefixlength; /* prefix length (0-32) 8 bit */ const char *string_registry; } s_ipv4addr_assignment; /* IPv4 address assignment hint structure */ typedef struct { const uint8_t octet_msb; const unsigned int start; const unsigned int end; } s_ipv4addr_assignment_hint; typedef struct { int active; uint32_t typeinfo_must_have; uint32_t typeinfo_may_not_have; /* others coming 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_RIPE REGISTRY_RIPE #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 numoctett); 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 numocett, 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 uint32_t ipv4addr_gettype(const ipv6calc_ipv4addr *ipv4addrp); extern int ipv4addr_getregistry(const ipv6calc_ipv4addr *ipv4addrp); extern int addr_to_ipv4addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv4addr *ipv4addrp); extern int addrhex_to_ipv4addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv4addr *ipv4addrp, int flag_reverse); extern int libipv4addr_ipv4addrstruct_to_string(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const uint32_t formatoptions); extern int libipv4addr_get_registry_string(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring); extern int libipv4addr_to_reversestring(ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const uint32_t formatoptions); extern int libipv4addr_to_octal(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const uint32_t formatoptions); extern int libipv4addr_to_hex(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, 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 void ipv4addr_filter_clear(s_ipv6calc_filter_ipv4addr *filter); ipv6calc-0.95.0/lib/librfc1884.c0000664000175100017510000002767112201737343015057 0ustar peterpeter/* * Project : ipv6calc * File : librfc1884.c * Version : $Id: librfc1884.c,v 1.19 2013/08/11 16:42:11 ds6peter Exp $ * Copyright : 2001-2013 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' */ #define DEBUG_function_name "librfc1884/compaddr_to_uncompaddr" int compaddr_to_uncompaddr(const char *addrstring, char *resultstring) { int retval = 1, cnt; char *cp, *op, *strp; char tempstring[NI_MAXHOST]; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: got input: %s\n", DEBUG_function_name, addrstring); }; snprintf(tempstring, sizeof(tempstring) - 1, "%s", addrstring); strp = strstr(tempstring, "::"); if (strp) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: found '::' in IPv6 address\n", DEBUG_function_name); }; /* check for additional "::" occurance - not allowed! */ if (strstr(strp+1, "::")) { snprintf(resultstring, NI_MAXHOST - 1, "%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 == ':') { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: cnt: %d\n", DEBUG_function_name, cnt); }; if ((cp-1) == tempstring) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: fill one '0:' (%d)\n", DEBUG_function_name, cnt); }; op--; *op++ = '0'; *op++ = ':'; }; if (cnt < 8) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: fill one '0:' (%d)\n", DEBUG_function_name, cnt); }; *op++ = '0'; } else if (cnt == 8) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: replace ':' by '0' (%d)\n", DEBUG_function_name, cnt); }; op--; }; while (cnt++ < 7) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: fill one ':0' (%d)\n", DEBUG_function_name, cnt); }; *op++ = ':'; *op++ = '0'; }; }; }; if (*(op-1)==':') *op++ = '0'; *op = '\0'; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: result: %s\n", DEBUG_function_name, resultstring); }; } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", addrstring); if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: address is not in compressed format\n", DEBUG_function_name); }; }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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) { int retval = -1; uint32_t formatoptions = FORMATOPTION_printlowercase; /* old style compatibility */ retval = librfc1884_ipv6addrstruct_to_compaddr(ipv6addrp, resultstring, formatoptions); return (retval); }; #define DEBUG_function_name "librfc1884/ipv6addrstruct_to_compaddr" int librfc1884_ipv6addrstruct_to_compaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, 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; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: scope of IPv6 address: %08x\n", DEBUG_function_name, (unsigned int) ipv6addrp->scope); }; if ( (ipv6addrp->scope & IPV6_ADDR_COMPATv4) != 0 ) { /* compatv4 address */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: IPV6_ADDR_COMPATv4 type - fast conversion\n", DEBUG_function_name); }; snprintf(tempstring, sizeof(tempstring) - 1, "::%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 */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: IPV6_ADDR_MAPPED type - fast conversion\n", DEBUG_function_name); }; snprintf(tempstring, sizeof(tempstring) - 1, "::%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 */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: unspecified address - fast conversion\n", DEBUG_function_name); }; snprintf(tempstring, sizeof(tempstring) - 1, "::"); 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 */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: loopback - fast conversion\n", DEBUG_function_name); }; snprintf(tempstring, sizeof(tempstring) - 1, "::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; }; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: normal address, detect '0' blocks now\n", DEBUG_function_name); }; for ( i = 0; i <= w_max; i++ ) { if ( ipv6addr_getword(ipv6addrp, (unsigned int) i) == 0 ) { /* found a '0' */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: Found '0' in word '%d'\n", DEBUG_function_name, i); }; if ( tstart == -1 ) { /* possible starting '0' block */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: Found a possible '0' starting block at '%d'\n", DEBUG_function_name, i); }; tstart = i; }; } else { /* end of a '0' block */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: Found non '0' in word '%d'\n", DEBUG_function_name, i); }; if ( tstart != -1 ) { tend = i - 1; if ( ( tend - tstart ) >= 0 ) { /* ok, a block with 1 or more '0' */ if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: Found a '0' block from '%d' to '%d' with length '%d'\n", DEBUG_function_name, tstart, tend, tend - tstart + 1); }; if ( zstart < 0 ) { /* no other block before, init */ zstart = tstart; zend = tend; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: First found '0' block from '%d' to '%d' with length '%d'\n", DEBUG_function_name, zstart, zend, zend - zstart + 1); }; } else if ( ( zend - zstart ) < ( tend - tstart ) ) { /* ok, bigger block found */ zstart = tstart; zend = tend; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: Found bigger '0' block from '%d' to '%d' with length '%d'\n", DEBUG_function_name, zstart, zend, zend - zstart + 1); }; } else { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: This '0' block is not bigger than the last one - skip\n", DEBUG_function_name); }; }; }; 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 ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { if ( zstart != -1 ) { fprintf(stderr, "%s: biggest '0' block is from word '%d' to '%d'\n", DEBUG_function_name, zstart, zend); } else { fprintf(stderr, "%s: no '0' block found\n", DEBUG_function_name); }; }; /* create string */ tempstring[0] = '\0'; for ( i = 0; i <= w_max; i++ ) { if ( i == zstart ) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: start of '0' at '%d'\n", DEBUG_function_name, i); }; snprintf(temp2string, sizeof(temp2string) - 1, "%s:", tempstring); } else if ( i == 0 ) { if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: normal start value at '%d' (%x)\n", DEBUG_function_name, i, (unsigned int) ipv6addr_getword(ipv6addrp, (unsigned int) i)); }; snprintf(temp2string, sizeof(temp2string) - 1, "%x", (unsigned int) ipv6addr_getword(ipv6addrp, (unsigned int) i)); } else if ( ( i > zend ) || ( i < zstart ) ) { snprintf(temp2string, sizeof(temp2string) - 1, "%s:%x", tempstring, (unsigned int) ipv6addr_getword(ipv6addrp, (unsigned int) i)); } else if ( ( i == 7 ) && ( zend == i )) { snprintf(temp2string, sizeof(temp2string) - 1, "%s:", tempstring); }; snprintf(tempstring, sizeof(tempstring) - 1, "%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) - 1, "%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) - 1, "%s", temp2string); }; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: new method: '%s'\n", DEBUG_function_name, tempstring); }; retval = 0; }; if ( ( retval == 0 ) && ( ipv6addrp->flag_prefixuse == 1 ) && ((formatoptions & FORMATOPTION_literal) == 0) ) { snprintf(resultstring, NI_MAXHOST - 1, "%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, NI_MAXHOST - 1, "%ss%s.ipv6-literal.net", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s.ipv6-literal.net", tempstring); }; } else { if (ipv6addrp->flag_scopeid) { snprintf(resultstring, NI_MAXHOST - 1, "%s%%%s", tempstring, ipv6addrp->scopeid); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); }; }; }; if ( (formatoptions & FORMATOPTION_printlowercase) != 0 ) { /* nothing to do */ } else if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; if ( (ipv6calc_debug & DEBUG_librfc1884) != 0 ) { fprintf(stderr, "%s: Result: '%s'\n", DEBUG_function_name, resultstring); }; return (retval); }; #undef DEBUG_function_name ipv6calc-0.95.0/lib/libieee.h0000664000175100017510000000323612234027416014662 0ustar peterpeter/* * Project : ipv6calc * File : libieee.h * Version : $Id: libieee.h,v 1.13 2013/10/29 21:56:30 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 int libieee_get_vendor_string(char *resultstring, const ipv6calc_macaddr *macaddrp); extern int libieee_get_short_vendor_string(char *resultstring, const ipv6calc_macaddr *macaddrp); 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.95.0/lib/libmac.c0000664000175100017510000002077712234545236014524 0ustar peterpeter/* * Project : ipv6calc * File : libmac.c * Version : $Id: libmac.c,v 1.24 2013/10/31 21:24:46 ds6peter Exp $ * Copyright : 2001-2013 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, 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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Error, 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, NI_MAXHOST - 1, "Error, unexpected failure on scanning MAC address '%s'!", addrstring); retval = 1; return (retval); }; if ( result != 6 ) { snprintf(resultstring, NI_MAXHOST - 1, "Error splitting address %s, got %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, NI_MAXHOST - 1, "Error, 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, ipv6calc_macaddr *macaddrp) { return (mac_to_macaddrstruct(addrstring, resultstring, 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 uint32_t formatoptions) { char tempstring[NI_MAXHOST]; /* address */ snprintf(tempstring, sizeof(tempstring) - 1, "%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, NI_MAXHOST - 1, "MAC=%s", tempstring); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); }; return(0); }; /* compatible name */ int libmacaddr_macaddrstruct_to_string(const ipv6calc_macaddr *macaddrp, char *resultstring, const uint32_t formatoptions) { return (macaddrstruct_to_string(macaddrp, resultstring, 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.95.0/lib/librfc1886.h0000664000175100017510000000117607453126053015061 0ustar peterpeter/* * Project : ipv6calc * File : librfc1886.h * Version : $Id: librfc1886.h,v 1.2 2002/04/04 19:40:27 peter Exp $ * Copyright : 2001-2002 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 uint32_t formatoptions, char* domain); extern int librfc1886_nibblestring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring); extern int librfc1886_formatcheck(const char *string, char *infostring); ipv6calc-0.95.0/lib/ipv6calccommands.h0000664000175100017510000000521612234545236016522 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calccommands.h * Version : $Id: ipv6calccommands.h,v 1.18 2013/10/31 21:24:46 ds6peter Exp $ * Copyright : 2002-2013 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 /* 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 0x0002011 #define DB_geoip_ipv6 0x0002012 #define DB_geoip_ipv4_default 0x0002013 #define DB_geoip_ipv6_default 0x0002014 /* database options (new) */ #define DB_ip2location_disable 0x0002000 #define DB_ip2location_dir 0x0002005 #define DB_ip2location_lib 0x0002006 #define DB_geoip_disable 0x0002010 #define DB_geoip_dir 0x0002015 #define DB_geoip_lib 0x0002016 /* 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 #endif ipv6calc-0.95.0/lib/libipv4addr.c0000664000175100017510000011201512234263111015451 0ustar peterpeter/* * Project : ipv6calc/lib * File : libipv4addr.c * Version : $Id: libipv4addr.c,v 1.48 2013/10/30 20:04:25 ds6peter Exp $ * Copyright : 2002-2013 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" #ifdef SUPPORT_DB_IPV4 #include "../databases/ipv4-assignment/dbipv4addr_assignment.h" #endif /* * 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 ) { fprintf(stderr, "%s/%s: given octet number '%u' is out of range!\n", __FILE__, __func__, numoctet); exit(EXIT_FAILURE); }; retval = (uint8_t) ( (ipv4addrp->in_addr.s_addr >> ( (unsigned int) (3 - 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 */ #define DEBUG_function_name "libipv4addr/ipv4addr_getword" uint16_t ipv4addr_getword(const ipv6calc_ipv4addr *ipv4addrp, const unsigned int numword) { uint16_t retval; if ( numword > 1 ) { fprintf(stderr, "%s: given word number '%u' is out of range!\n", DEBUG_function_name, numword); exit(EXIT_FAILURE); }; retval = (uint16_t) ( (ipv4addr_getoctet(ipv4addrp, (numword << 1)) << 8 ) | ipv4addr_getoctet(ipv4addrp, (numword << 1) + 1) ); return (retval); }; #undef DEBUG_function_name /* * function returns a dword of an IPv4 address * * in: ipv4addrp = pointer to IPv4 address structure * additional: calls exit on out of range */ #define DEBUG_function_name "libipv4addr/ipv4addr_getdword" 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); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv4addr/ipv4addr_setoctet" void ipv4addr_setoctet(ipv6calc_ipv4addr *ipv4addrp, const unsigned int numoctet, const uint8_t value) { if ( numoctet > 3 ) { fprintf(stderr, "%s: given octet number '%u' is out of range!\n", DEBUG_function_name, numoctet); exit(EXIT_FAILURE); }; ipv4addrp->in_addr.s_addr &= ~ (0xff << ((unsigned int) (3 - numoctet) << 3) ); ipv4addrp->in_addr.s_addr |= (value & 0xff) << ((unsigned int) (3 - numoctet) << 3); return; }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv4addr/ipv4addr_setword" void ipv4addr_setword(ipv6calc_ipv4addr *ipv4addrp, const unsigned int numword, const uint16_t value) { unsigned int n; unsigned int v; if ( numword > 1 ) { fprintf(stderr, "%s: given word number '%u' is out of range!\n", DEBUG_function_name, numword); exit(EXIT_FAILURE); }; n = numword << 1; v = (value & 0xff00) >> 8; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: set octet %u: %02x (%u %04x)\n", DEBUG_function_name, n, v, numword, value); }; ipv4addr_setoctet(ipv4addrp, n, v); n = (numword << 1) + 1; v = value & 0xff; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: set octet %u: %02x (%u %04x)\n", DEBUG_function_name, n, v, numword, value); }; ipv4addr_setoctet(ipv4addrp, n, v); return; }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv4addr/ipv4addr_setdword" void ipv4addr_setdword(ipv6calc_ipv4addr *ipv4addrp, const uint32_t value) { unsigned int n; unsigned int v; if ( value > 0xffffffffu ) { fprintf(stderr, "%s: given value '%x' is out of range!\n", DEBUG_function_name, value); exit(EXIT_FAILURE); }; n = 0; v = (value & 0xffff0000u) >> 16; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: set word %u: %04x (%08x)\n", DEBUG_function_name, n, v, value); }; ipv4addr_setword(ipv4addrp, n, v); n = 1; v = value & 0xffffu; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: set word %u: %04x (%08x)\n", DEBUG_function_name, n, v, value); }; ipv4addr_setword(ipv4addrp, n, v); return; }; #undef DEBUG_function_name /* * function clears the IPv4 structure * * mod: ipv4addrp = pointer to IPv4 address structure */ #define DEBUG_function_name "libipv4addr/ipv4addr_clear" void ipv4addr_clear(ipv6calc_ipv4addr *ipv4addrp) { ipv4addrp->in_addr.s_addr = 0; /* Clear valid flag */ ipv4addrp->flag_valid = 0; return; }; #undef DEBUG_function_name /* * function clears the IPv4 structure * * mod: ipv4addrp = pointer to IPv4 address structure */ #define DEBUG_function_name "libipv4addr/ipv4addr_clearall" void ipv4addr_clearall(ipv6calc_ipv4addr *ipv4addrp) { ipv4addr_clear(ipv4addrp); (*ipv4addrp).prefixlength = 0; (*ipv4addrp).flag_prefixuse = 0; return; }; #undef DEBUG_function_name /* * function copies the IPv4 structure * * in: ipv64ddrp = pointer to IPv4 address structure * mod: ipv64ddrp2 = pointer to IPv4 address structure */ #define DEBUG_function_name "libipv4addr/ipv4addr_copy" void ipv4addr_copy(ipv6calc_ipv4addr *ipv4addrp_dst, const ipv6calc_ipv4addr *ipv4addrp_src) { *(ipv4addrp_dst) = *(ipv4addrp_src); return; }; #undef DEBUG_function_name /* * 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) { DEBUGPRINT_NA(DEBUG_libipv4addr, "Address is an anonymized one"); type = IPV4_ADDR_ANONYMIZED | IPV4_ADDR_UNICAST; goto END_ipv4addr_gettype; }; }; }; 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 & 0xf0000000u) == 0xf0000000u) { // 240.0.0.0/4 (RFC 1112) type = IPV4_ADDR_RESERVED; } else { type = IPV4_ADDR_UNICAST | IPV4_ADDR_GLOBAL; }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: return typeinfo: 0x%08x\n", __FILE__, __func__, 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 */ #define DEBUG_function_name "libipv4addr/addr_to_ipv4addrstruct" int addr_to_ipv4addrstruct(const char *addrstring, char *resultstring, 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 */ if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Got input '%s'\n", DEBUG_function_name, addrstring); }; if ((strlen(addrstring) < 7) || (strlen(addrstring) > 18)) { /* min: 0.0.0.0 */ /* max: 123.123.123.123/32 */ snprintf(resultstring, NI_MAXHOST - 1, "Error in given dot notated IPv4 address, has not 7 to 18 chars!"); return (1); }; if (strlen(addrstring) > sizeof(tempstring) - 1) { fprintf(stderr, "%s: Input too long: %s\n", DEBUG_function_name, addrstring); return (1); }; snprintf(tempstring, sizeof(tempstring) - 1, "%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, NI_MAXHOST - 1, "Illegal prefix length: '%s'", cp); retval = 1; return (retval); }; ipv4addrp->flag_prefixuse = 1; ipv4addrp->prefixlength = (uint8_t) i; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: prefix length %u\n", DEBUG_function_name, (unsigned int) ipv4addrp->prefixlength); fprintf(stderr, "%s: flag_prefixuse %d\n", DEBUG_function_name, 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, NI_MAXHOST - 1, "Error, 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, NI_MAXHOST - 1, "Error, given IPv4 address '%s' is not valid!", 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, NI_MAXHOST - 1, "Error, given IPv4 address '%s' is not valid (%d on position %d)!", addronlystring, compat[i], i+1); retval = 1; return (retval); }; }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: reading into array, got items: %d\n", DEBUG_function_name, result); }; if ( result != expecteditems ) { snprintf(resultstring, NI_MAXHOST - 1, "Error splitting address %s, got %d items instead of %d!", addronlystring, result, expecteditems); retval = 1; return (retval); }; /* copy into structure */ for ( i = 0; i <= 3; i++ ) { if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Octett %d = %d\n", DEBUG_function_name, i, compat[i]); }; ipv4addr_setoctet(ipv4addrp, (unsigned int) i, (unsigned int) compat[i]); }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: In structure %03u %03u %03u %03u\n", DEBUG_function_name, (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), (unsigned int) ipv4addr_getoctet(ipv4addrp, 3)); fprintf(stderr, "%s: In structure %8x\n", DEBUG_function_name, (unsigned int) ipv4addr_getdword(ipv4addrp)); }; typeinfo = ipv4addr_gettype(ipv4addrp); if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Got typeinfo: 0x%08x\n", DEBUG_function_name, typeinfo); }; ipv4addrp->scope = typeinfo; ipv4addrp->flag_valid = 1; retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv4addr/addrhex_to_ipv4addrstruct" int addrhex_to_ipv4addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv4addr *ipv4addrp, 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 */ if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Got input '%s'\n", DEBUG_function_name, addrstring); }; if ((strlen(addrstring) < 7) || (strlen(addrstring) > 11)) { /* min: ffffffff */ /* max: ffffffff/32 */ snprintf(resultstring, NI_MAXHOST - 1, "Error in given hex notated IPv4 address, has not 7 to 11 chars!"); return (1); }; if (strlen(addrstring) > sizeof(tempstring) - 1) { fprintf(stderr, "%s: Input too long: %s\n", DEBUG_function_name, addrstring); return (1); }; snprintf(tempstring, sizeof(tempstring) - 1, "%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, NI_MAXHOST - 1, "Illegal prefix length: '%s'", cp); retval = 1; return (retval); }; ipv4addrp->flag_prefixuse = 1; ipv4addrp->prefixlength = (uint8_t) i; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: prefix length %u\n", DEBUG_function_name, (unsigned int) ipv4addrp->prefixlength); fprintf(stderr, "%s: flag_prefixuse %d\n", DEBUG_function_name, ipv4addrp->flag_prefixuse); }; }; /* check length 3 */ if ((flag_reverse == 0 && (strlen(addronlystring) < 7 || strlen(addronlystring) > 8)) || (flag_reverse != 0 && strlen(addronlystring) != 8)) { snprintf(resultstring, NI_MAXHOST - 1, "Error, given hexadecimal 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, NI_MAXHOST - 1, "Error, given IPv4 address '%s' is not valid (%d on position %d)!", addronlystring, compat[i], i+1); retval = 1; return (retval); }; }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: reading into array, got items: %d\n", DEBUG_function_name, result); }; if ( result != expecteditems ) { snprintf(resultstring, NI_MAXHOST - 1, "Error splitting address %s, got %d items instead of %d!", addronlystring, result, expecteditems); retval = 1; return (retval); }; /* copy into structure */ for ( i = 0; i <= 3; i++ ) { if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Octett %d = %d\n", DEBUG_function_name, i, compat[i]); }; ipv4addr_setoctet(ipv4addrp, (unsigned int) i, (unsigned int) compat[i]); }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: In structure %03u %03u %03u %03u\n", DEBUG_function_name, (unsigned int) ipv4addr_getoctet(ipv4addrp, 0), (unsigned int) ipv4addr_getoctet(ipv4addrp, 1), (unsigned int) ipv4addr_getoctet(ipv4addrp, 2), (unsigned int) ipv4addr_getoctet(ipv4addrp, 3)); fprintf(stderr, "%s: In structure %8x\n", DEBUG_function_name, (unsigned int) ipv4addr_getdword(ipv4addrp)); }; typeinfo = ipv4addr_gettype(ipv4addrp); if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Got typeinfo: 0x%08x\n", DEBUG_function_name, typeinfo); }; ipv4addrp->scope = typeinfo; ipv4addrp->flag_valid = 1; retval = 0; return (retval); }; #undef DEBUG_function_name /* * stores the ipv4addr structure in a string * * in: ipv4addr = IPv4 address structure * out: *resultstring = IPv4 address string * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "libipv4addr/ipv4addrstruct_to_string" int libipv4addr_ipv4addrstruct_to_string(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const uint32_t formatoptions) { char tempstring[NI_MAXHOST]; /* address */ snprintf(tempstring, sizeof(tempstring) - 1, "%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, NI_MAXHOST - 1, "IPV4=%s", tempstring); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); }; /* netmaks */ if (ipv4addrp->flag_prefixuse == 1) { /* to be filled */ /* IPV4NETMASK= */ }; return(0); }; #undef DEBUG_function_name /* * get registry string of an IPv4 address * * in: ipv4addr = IPv4 address structure * out: *resultstring = Registry string * ret: 0: ok, 1: unknown, 2: reserved */ #define DEBUG_function_name "libipv4addr/get_registry_string" int libipv4addr_get_registry_string(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring) { uint32_t ipv4 = ipv4addr_getdword(ipv4addrp); if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Given IPv4 address: %08x\n", DEBUG_function_name, (unsigned int) ipv4); }; if ((ipv4 & 0xff000000u) == 0x00000000u) { // 0.0.0.0/8 (RFC 1122) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC1122#3.2.1.3)"); return (2); } else if ((ipv4 & 0xff000000u) == 0x0a000000u) { // 10.0.0.0/8 (RFC 1918) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC1918#3)"); return (2); } else if ((ipv4 & 0xffc00000u) == 0x64400000u) { // 100.64.0.0/10 (RFC 6598) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC6598)"); return (2); } else if ((ipv4 & 0xff000000u) == 0x7f000000u) { // 127.0.0.0/8 (RFC 1122) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC1122#3.2.1.3)"); return (2); } else if ((ipv4 & 0xffff0000u) == 0xa9fe0000u) { // 169.254.0.0/16 (RFC 1918) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC3927#1)"); return (2); } else if ((ipv4 & 0xfff00000u) == 0xac100000u) { // 172.16.0.0/12 (RFC 1918) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC1918#3)"); return (2); } else if ((ipv4 & 0xffff0000u) == 0xc0a80000u) { // 192.168.0.0/16 (RFC 1918) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC1918#3)"); return (2); } else if ((ipv4 & 0xffffff00u) == 0xc0000000u) { // 192.0.0.0/24 (RFC 5736) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC5736#1)"); return (2); } else if ((ipv4 & 0xffffff00u) == 0xc0000200u) { // 192.0.2.0/24 (RFC 3330) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC5737#1)"); return (2); } else if ((ipv4 & 0xffffff00u) == 0xc0586300u) { // 192.88.99.0/24 (RFC 3068) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC3068#2.3)"); return (2); } else if ((ipv4 & 0xfffe0000u) == 0xc6120000u) { // 198.18.0.0/15 (RFC 2544) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC2544#C.2.2)"); return (2); } else if ((ipv4 & 0xffffff00u) == 0xc6336400u) { // 198.51.100.0/24 (RFC 5737) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC5737#3)"); return (2); } else if ((ipv4 & 0xffffff00u) == 0xcb007100u) { // 203.0.113.0/24 (RFC 5737) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC5737#3)"); return (2); } else if ((ipv4 & 0xf0000000u) == 0xe0000000u) { // 224.0.0.0/4 (RFC 3171) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC3171#2)"); return (2); } else if ((ipv4 & 0xffffffffu) == 0xffffffffu) { // 255.255.255.255/32 snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC919#7)"); return (2); } else if ((ipv4 & 0xf0000000u) == 0xf0000000u) { // 240.0.0.0/4 (RFC 1112) snprintf(resultstring, NI_MAXHOST - 1, "%s", "reserved(RFC1112#4)"); return (2); }; #ifdef SUPPORT_DB_IPV4 int i; int match = -1; uint32_t match_mask = 0; #define OPTIMIZED_LOOKUP 1 #ifdef OPTIMIZED_LOOKUP uint8_t octet_msb; /* lookup in hint table for faster start */ octet_msb = ipv4addr_getoctet(ipv4addrp, 0); for (i = (int) dbipv4addr_assignment_hint[octet_msb].start; i <= (int) dbipv4addr_assignment_hint[octet_msb].end; i++) { #else for (i = 0; i < (int) ( sizeof(dbipv4addr_assignment) / sizeof(dbipv4addr_assignment[0])); i++) { #endif /* run through database array */ if ( (ipv4 & dbipv4addr_assignment[i].ipv4mask) == dbipv4addr_assignment[i].ipv4addr ) { /* ok, entry matches */ if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Found match number: %d\n", DEBUG_function_name, i); }; /* have already found one */ if ( match != -1 ) { if ( dbipv4addr_assignment[i].ipv4mask > match_mask ) { /* this entry wins */ if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Overwrite match number: %d (old: %d)\n", DEBUG_function_name, i, match); }; match = i; match_mask = dbipv4addr_assignment[i].ipv4mask; } else { if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: No overwriting of match number: %d (candidate: %d)\n", DEBUG_function_name, match, i); }; }; } else { match = i; match_mask = dbipv4addr_assignment[i].ipv4mask; }; }; }; DEBUGPRINT_WA(DEBUG_libipv4addr, "Final match number: %d", match); /* result */ if ( match > -1 ) { snprintf(resultstring, NI_MAXHOST - 1, "%s", dbipv4addr_assignment[match].string_registry); return(0); } else { snprintf(resultstring, NI_MAXHOST - 1, "%s", "unknown"); return(1); }; #else snprintf(resultstring, NI_MAXHOST - 1, "%s", "(IPv4 database not compiled in)"); return(1); #endif }; #undef DEBUG_function_name /* * get registry number of an IPv4 address * * in: ipv4addr = IPv4 address structure * out: assignment number (-1 = no result) */ #define DEBUG_function_name "libipv4addr/getregistry" int ipv4addr_getregistry(const ipv6calc_ipv4addr *ipv4addrp) { char resultstring[NI_MAXHOST]; int i; i = libipv4addr_get_registry_string(ipv4addrp, resultstring); if (i == 2) { return(IPV4_ADDR_REGISTRY_RESERVED); } else if (i != 0) { return(IPV4_ADDR_REGISTRY_UNKNOWN); }; #ifdef SUPPORT_DB_IPV4 if (strcmp(resultstring, "IANA") == 0) { return(IPV4_ADDR_REGISTRY_IANA); } else if (strcmp(resultstring, "APNIC") == 0) { return(IPV4_ADDR_REGISTRY_APNIC); } else if (strcmp(resultstring, "ARIN") == 0) { return(IPV4_ADDR_REGISTRY_ARIN); } else if (strcmp(resultstring, "RIPENCC") == 0) { return(IPV4_ADDR_REGISTRY_RIPE); } else if (strcmp(resultstring, "LACNIC") == 0) { return(IPV4_ADDR_REGISTRY_LACNIC); } else if (strcmp(resultstring, "AFRINIC") == 0) { return(IPV4_ADDR_REGISTRY_AFRINIC); } else { return(IPV4_ADDR_REGISTRY_UNKNOWN); }; #else return(IPV4_ADDR_REGISTRY_UNKNOWN); #endif }; #undef DEBUG_function_name /* * converts IPv4addr_structure to a reverse decimal format string * * in : *ipv4addrp = IPv4 address structure * out: *resultstring = result * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "libipv4addr/addr_to_reversestring" int libipv4addr_to_reversestring(ipv6calc_ipv4addr *ipv4addrp, char *resultstring, 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; }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: start bit %d end bit %d\n", DEBUG_function_name, 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); if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: bit: %d = noctet: %u, value: %x\n", DEBUG_function_name, nbit, noctet, (unsigned int) octet); }; snprintf(tempstring, sizeof(tempstring) - 1, "%s%u", resultstring, (unsigned int) octet); snprintf(resultstring, NI_MAXHOST - 1, "%s.", tempstring); }; if (bit_start == 1) { snprintf(tempstring, sizeof(tempstring) - 1, "%sin-addr.arpa.", resultstring); }; snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(resultstring); }; if ( (formatoptions & FORMATOPTION_printmirrored) != 0 ) { string_to_reverse_dotted(resultstring); }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s: Print out: %s\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv4addr/ipv4addrstruct_to_octal" int libipv4addr_to_octal(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, const uint32_t formatoptions) { int retval = 1; char tempstring[NI_MAXHOST]; if ( (formatoptions & FORMATOPTION_printfulluncompressed) != 0 ) { snprintf(tempstring, sizeof(tempstring) - 1, "\\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) - 1, "\\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, NI_MAXHOST - 1, "%s", tempstring); retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ #define DEBUG_function_name "libipv4addr/ipv4addrstruct_to_hex" int libipv4addr_to_hex(const ipv6calc_ipv4addr *ipv4addrp, char *resultstring, /*@unused@*/ const uint32_t formatoptions) { int retval = 1; char tempstring[NI_MAXHOST]; snprintf(tempstring, sizeof(tempstring) - 1, "%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, NI_MAXHOST - 1, "%s", tempstring); retval = 0; return (retval); }; #undef DEBUG_function_name /* * 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 */ char resultstring[NI_MAXHOST]; uint32_t as_num32, as_num32_comp17, as_num32_decomp17, ipv4addr_anon, p; uint16_t cc_index, c; int i; 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 if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: anonymize by masking\n", __FILE__, __func__); }; 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"); libipv4addr_ipv4addrstruct_to_string(ipv4addrp, resultstring, 0); // get AS number as_num32 = libipv6calc_db_wrapper_as_num32_by_addr(resultstring, 4); 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(resultstring, 4); 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->typeinfo_must_have = 0; filter->typeinfo_may_not_have = 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; const char *prefix = "ipv4"; const char *prefixdot = "ipv4."; 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; }; if (strcmp(token + offset, prefix) == 0) { /* any */ if (negate == 1) { filter->typeinfo_may_not_have = ~IPV4_ADDR_ANY; } else { filter->typeinfo_must_have = IPV4_ADDR_ANY; }; 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 */ } else if (strstr(token, ".") != NULL) { /* other prefix */ DEBUGPRINT_WA(DEBUG_libipv4addr, "prefix did not match: %s", token + offset); return(1); }; for (i = 0; i < (int) (sizeof(ipv6calc_ipv4addrtypestrings) / sizeof(ipv6calc_ipv4addrtypestrings[0])); 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->typeinfo_may_not_have |= ipv6calc_ipv4addrtypestrings[i].number; } else { filter->typeinfo_must_have |= ipv6calc_ipv4addrtypestrings[i].number; }; filter->active = 1; result = 0; break; }; }; if (result != 0) { DEBUGPRINT_WA(DEBUG_libipv4addr, "token not supported: %s",token); return (result); }; END_ipv4addr_filter_parse: DEBUGPRINT_WA(DEBUG_libipv4addr, "filter 'must_have' : 0x%08x", filter->typeinfo_must_have); DEBUGPRINT_WA(DEBUG_libipv4addr, "filter 'may_not_have': 0x%08x", filter->typeinfo_may_not_have); DEBUGPRINT_WA(DEBUG_libipv4addr, "filter 'active': %d", filter->active); 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; if (filter->active == 0) { if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: no filter active (SKIP)\n", __FILE__, __func__); }; return (1); }; if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: start\n", __FILE__, __func__); }; /* get type */ typeinfo = ipv4addr_gettype(ipv4addrp); if ( (ipv6calc_debug & DEBUG_libipv4addr) != 0 ) { fprintf(stderr, "%s/%s: compare typeinfo against must_have: 0x%08x/0x%08x\n", __FILE__, __func__, typeinfo, filter->typeinfo_must_have); }; if ((typeinfo & filter->typeinfo_must_have) == filter->typeinfo_must_have) { if ((typeinfo & filter->typeinfo_may_not_have) == 0) { return (0); }; }; return (1); }; ipv6calc-0.95.0/lib/librfc5569.c0000664000175100017510000000307411634707731015061 0ustar peterpeter/* * Project : ipv6calc * File : librfc5569.c * Version : $Id: librfc5569.c,v 1.1 2011/09/16 18:05:13 peter Exp $ * Copyright : 2011 by Raphaël Assénat * * 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) { uint32_t local_ip_bits, j; uint8_t tmpaddr[16]; int i; int local_prefix_len; local_prefix_len = sixrd_prefix->prefixlength + 32 - sixrd_relay_prefix->prefixlength; if (local_prefix_len > 64) { snprintf(resultstring, NI_MAXHOST - 1, "Length of local prefix > 64: %d", local_prefix_len); return (1); } local_ip_bits = local_ip->in_addr.s_addr; 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.95.0/lib/librfc2874.c0000664000175100017510000002620212143641540015042 0ustar peterpeter/* * Project : ipv6calc * File : librfc2874.c * Version : $Id: librfc2874.c,v 1.14 2013/05/12 07:23:12 ds6peter Exp $ * Copyright : 2002-2013 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 */ #define DEBUG_function_name "librfc2874/addr_to_bitstring" int librfc2874_addr_to_bitstring(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, 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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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; }; if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: print from start bit to end bit: %u - %u\n", DEBUG_function_name, 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)); if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: bit: %u= noctet: %u, nnibble: %u, octet: %02x, value: %x\n", DEBUG_function_name, nbit, noctet, nnibble, (unsigned int) (*ipv6addrp).in6_addr.s6_addr[noctet], nibble); }; snprintf(tempstring, sizeof(tempstring) - 1, "%s%x", resultstring, nibble); snprintf(resultstring, NI_MAXHOST - 1, "%s", tempstring); if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: Result after step %u (temp): %s\n", DEBUG_function_name, nbit, tempstring); fprintf(stderr, "%s: Result after step %u (resu): %s\n", DEBUG_function_name, nbit, resultstring); }; }; /* add begin and end of label */ if ( (*ipv6addrp).flag_startend_use != 0 ) { prefixlength = bit_end - bit_start + 1; } else { prefixlength = 128; }; if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: Result after expanding: %s\n", DEBUG_function_name, tempstring); }; if ( bit_start != 1 ) { snprintf(tempstring, sizeof(tempstring) - 1, "%s/%u]", resultstring, prefixlength); } else { snprintf(tempstring, sizeof(tempstring) - 1, "%s/%u].ip6.arpa.", resultstring, prefixlength); }; if ( (formatoptions & FORMATOPTION_printuppercase) != 0 ) { string_to_upcase(tempstring); }; snprintf(resultstring, NI_MAXHOST - 1, "\\[x%s", tempstring); if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: Final result: %s\n", DEBUG_function_name, resultstring); }; retval = 0; return (retval); }; #undef DEBUG_function_name /* * converts a bitstring label into IPv6addr_structure * * in : inputstring * mod: *ipv6addrp = IPv6 address structure * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "librfc2874/bitstring_to_ipv6addrstruct" int librfc2874_bitstring_to_ipv6addrstruct(const char *inputstring, ipv6calc_ipv6addr *ipv6addrp, char *resultstring) { 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) - 1, "%s", inputstring); string_to_lowcase(tempstring); if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: get string: %s\n", DEBUG_function_name, tempstring); }; length = (unsigned int) strlen(tempstring); /* check content */ retval = librfc2874_formatcheck(tempstring, resultstring); if (retval != 0) { return (1); } if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: format is ok: %s\n", DEBUG_function_name, tempstring); }; index = 3; /* start value */ while(isxdigit((int) tempstring[index])) { snprintf(tempstring2, sizeof(tempstring2) - 1, "%c", tempstring[index]); if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: parse nibble: %s\n", DEBUG_function_name, tempstring2); }; /* now proceed nibbles */ retval = sscanf(tempstring2, "%x", &xdigit); if (retval != 1) { snprintf(resultstring, NI_MAXHOST - 1, "Nibble '%s' at position %u cannot be parsed", tempstring2, index + 1); return (1); }; if (xdigit > 0xf) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Unexpected end of string"); return (1); }; if (tempstring[index] == ']') { /* bitstring label closed */ ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) nibblecounter << 2; if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: implicit prefix length: %d\n", DEBUG_function_name, ipv6addrp->prefixlength); }; goto END_bitstring_to_ipv6addrstruct; }; index++; if (index > length) { snprintf(resultstring, NI_MAXHOST - 1, "Unexpected end of string"); return (1); }; /* proceed prefix length */ if (tempstring[index] == '/') { snprintf(resultstring, NI_MAXHOST - 1, "Char '%c' not expected on position %u", tempstring[index], index + 1); return (1); }; index++; if (index > length) { snprintf(resultstring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "Invalid prefix length"); return (1); }; if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: prefix length start=%d end=%d\n", DEBUG_function_name, startprefixlength, endprefixlength); }; snprintf(tempstring2, endprefixlength - startprefixlength + 2, "%s", tempstring + startprefixlength - 1); if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: parse prefix length: %s\n", DEBUG_function_name, tempstring2); }; /* now proceed nibbles */ retval = sscanf(tempstring2, "%u", &prefixlength); if ( /*prefixlength < 0 || */ prefixlength > 128) { snprintf(resultstring, NI_MAXHOST - 1, "Given prefix length '%u' is out of range", prefixlength); return (1); }; ipv6addrp->flag_prefixuse = 1; ipv6addrp->prefixlength = (uint8_t) prefixlength; if ( (ipv6calc_debug & DEBUG_librfc2874) != 0 ) { fprintf(stderr, "%s: explicit prefix length: %d\n", DEBUG_function_name, ipv6addrp->prefixlength); }; goto END_bitstring_to_ipv6addrstruct; }; snprintf(resultstring, NI_MAXHOST - 1, "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); }; #undef DEBUG_function_name /* * checks for proper format of a bitstring label * * in : string * ret: ==0: ok, !=0: error */ #define DEBUG_function_name "librfc2874/formatcheck" int librfc2874_formatcheck(const char *string, char *infostring) { 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, NI_MAXHOST - 1, "Error in given bitstring label, has less than 5 chars!"); return (1); }; /* check start */ if (string[index] != '\\') { snprintf(infostring, NI_MAXHOST - 1, "Char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; if (string[index] != '[') { snprintf(infostring, NI_MAXHOST - 1, "Char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; if ( (char) tolower(string[index]) != 'x') { snprintf(infostring, NI_MAXHOST - 1, "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, NI_MAXHOST - 1, "More than 32 nibbles on position %u", index + 1); return (1); }; index++; if (index > length) { break; }; }; if (index >= length) { snprintf(infostring, NI_MAXHOST - 1, "Unexpected end of string (missing '/' or ']')"); return (1); }; if (string[index] == ']') { /* bitstring label closed */ return (0); }; /* proceed prefix length */ if (string[index] != '/') { snprintf(infostring, NI_MAXHOST - 1, "Char '%c' not expected on position %u", string[index], index + 1); return (1); }; index++; if (index >= length) { snprintf(infostring, NI_MAXHOST - 1, "Unexpected end of string (missing prefix length)"); return (1); }; /* check digit string */ while(isdigit((int) string[index])) { digitcounter++; if (digitcounter > 3) { snprintf(infostring, NI_MAXHOST - 1, "More than 3 digits on position %u", index + 1); return (1); }; index++; if (index > length) { break; }; }; if (index >= length) { snprintf(infostring, NI_MAXHOST - 1, "Unexpected end of string (missing ']')"); return (1); }; if (string[index] == ']') { /* bitstring label closed */ return (0); }; snprintf(infostring, NI_MAXHOST - 1, "Char '%c' not expected on position %u", string[index], index + 1); return (1); }; #undef DEBUG_function_name ipv6calc-0.95.0/lib/ipv6calctypes.h0000664000175100017510000004013312234545236016062 0ustar peterpeter/* * Project : ipv6calc * File : ipv6calctypes.h * Version : $Id: ipv6calctypes.h,v 1.36 2013/10/31 21:24:46 ds6peter Exp $ * Copyright : 2002-2013 by Peter Bieringer * * Information: * Header file for ipv6calctypes.c */ #include "ipv6calc_inttypes.h" #include "ipv6calccommands.h" #include /* prototypes */ extern uint32_t ipv6calctypes_checktype(const char *string); extern uint32_t ipv6calctypes_checkaction(const char *string); /* defines */ #ifndef _ipv6calctypes_h_ #define _ipv6calctypes_h_ /* text representations for defines */ typedef struct { const uint32_t number; const char *token; } s_type; /* * 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_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_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 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_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_ipv4hex , FORMAT_ipv4addr | FORMAT_ipv6addr | FORMAT_revipv4 | FORMAT_ipv4hex }, { 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 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 // 00010000 #define FORMATOPTION_NUM_literal 16 // 00020000 #define FORMATOPTION_NUM_print_iid_var 17 // 00040000 #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_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"}, }; /* 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 }, { FORMAT_mac , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase }, { FORMAT_eui64 , FORMATOPTION_printlowercase | FORMATOPTION_printuppercase }, { FORMAT_base85 , 0 }, { FORMAT_ifinet6 , 0 }, { FORMAT_ipv4addr , FORMATOPTION_machinereadable }, { 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_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_filter 7 #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_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_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_filter , "filter" , "Filter addresses related to filter options", "" }, }; /* Possible action option map */ /*@unused@*/ static const uint32_t ipv6calc_actionoptionmap[8][2] = { { ACTION_auto , 0 }, { ACTION_mac_to_eui64 , 0 }, { ACTION_ipv4_to_6to4addr , 0 }, { ACTION_iid_token_to_privacy , 0 }, { ACTION_prefix_mac_to_ipv6 , 0 }, { ACTION_anonymize , 0 }, { ACTION_6rd_local_prefix , CMD_6rd_prefix }, { ACTION_6rd_local_prefix , CMD_6rd_relay_prefix } }; /* 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; #endif ipv6calc-0.95.0/ipv6calcweb/0000775000175100017510000000000012242072067014547 5ustar peterpeteripv6calc-0.95.0/ipv6calcweb/test_ipv6calcweb_form.sh0000775000175100017510000000440012227320161021365 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/ipv6calcweb # File : test_ipv6calcweb_form.sh # Version : $Id: test_ipv6calcweb_form.sh,v 1.3 2013/10/15 20:07:13 ds6peter Exp $ # Copyright : 2012-2013 by Peter Bieringer # # Information: # Test script for form mode of ipv6calcweb # # 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 echo "DEBUG: extracted tokenhash: $tokenhash" echo "DEBUG: extracted tokentime: $tokentime" 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" echo "Test: $input ($input_escaped) ($type)" echo "QUERY_STRING=$QUERY_STRING" export REMOTE_ADDR REMOTE_HOST HTTP_USER_AGENT SERVER_ADDR SERVER_NAME QUERY_STRING HTTP_IPV6CALCWEB_MODE OUTPUT="`./ipv6calcweb.cgi`" result=$? 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 done || exit $? ipv6calc-0.95.0/ipv6calcweb/USAGE0000664000175100017510000000043307757702464015356 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.95.0/ipv6calcweb/test_ipv6calcweb.sh0000775000175100017510000000344012237747205020362 0ustar peterpeter#!/bin/sh # # Project : ipv6calc/ipv6calcweb # File : test_ipv6calcweb.sh # Version : $Id: test_ipv6calcweb.sh,v 1.12 2013/11/10 18:20:53 ds6peter Exp $ # Copyright : 2012-2013 by Peter Bieringer # # Information: # Test script for ipv6calcweb # 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 for format in text html htmlfull; do echo "INFO : test format: $format" echo "DEBUG : execute: HTTP_IPV6CALCWEB_DEBUG=0x1000 HTTP_IPV6CALCWEB_OUTPUT_FORMAT=\"$format\" ./ipv6calcweb.cgi" HTTP_IPV6CALCWEB_DEBUG="0x1000" HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" ./ipv6calcweb.cgi >/dev/null if [ $? -ne 0 ];then echo "ERROR : output format reports an error: $format" HTTP_IPV6CALCWEB_OUTPUT_FORMAT="$format" ./ipv6calcweb.cgi exit 1 fi done || exit 1 ## 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" export REMOTE_ADDR REMOTE_HOST HTTP_USER_AGENT SERVER_ADDR SERVER_NAME QUERY_STRING HTTP_IPV6CALCWEB_DEBUG OUTPUT="`./ipv6calcweb.cgi`" result=$? echo "Result: $result" 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 echo "$OUTPUT" fi fi ipv6calc-0.95.0/ipv6calcweb/Makefile0000664000175100017510000000152612237747205016222 0ustar peterpeter# Project : ipv6calc/ipv6calcweb # File : Makefile # Version : $Id: Makefile,v 1.15 2013/11/10 18:20:53 ds6peter Exp $ # Copyright : 2002-2013 by Peter Bieringer # # Information: # Makefile for ipv6calcweb # all: ipv6calcweb ipv6calcweb: ipv6calcweb.cgi.in ./create_ipv6calcweb-cgi.sh update: distclean: ${MAKE} clean autoclean: ${MAKE} distclean clean: rm -f ipv6calcweb.cgi test: ${MAKE} ipv6calcweb pushd ../ipv6calc; ${MAKE}; popd # Pseudo random selected ./test_ipv6calcweb.sh 2001:200:1:ea::1 || exit 1 # www.hp.com ./test_ipv6calcweb.sh 15.200.30.23 || exit 1 # Pseudo random ./test_ipv6calcweb.sh 3ffe:831f:ce49:7601:8000:efff:af4a:86BF || exit 1 # RFC ./test_ipv6calcweb.sh :: || exit 1 # Form mode ./test_ipv6calcweb_form.sh || exit 1 test-minimal: ${MAKE} test ipv6calc-0.95.0/ipv6calcweb/ipv6calcweb.cgi.in0000775000175100017510000013762612240502041020053 0ustar peterpeter#!/usr/bin/perl -w -T # # Project : ipv6calc/ip6calcweb # File : ipv6calcweb.cgi # Version : $Id: ipv6calcweb.cgi.in,v 1.67 2013/11/12 19:40:17 ds6peter Exp $ # Copyright : 2002-2013 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 dyn-load support) # HTTP_IPV6CALCWEB_DB_GEOIP_DIR : GeoIPv4 database directory (optional) # HTTP_IPV6CALCWEB_DB_GEOIP_LIB : GeoIPv4 library name (optional in dyn-load support) # HTTP_IPV6CALCWEB_OUTPUT_FORMAT : html (default if SERVER_PROTOCOL=INCLUDED), htmlfull (default), text ## general use strict; use URI::Escape; 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; ## 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 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", ); 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 type # full = with description # simple = without description my $outputtype = "full"; #my $outputtype = "simple"; ## 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"); # Tokens to be formatted using my @format_tt = ( "EUI48", "EUI64", "IPV6", "IPV4", "SLA", "IID", "IPV4_6TO4", "IPV4_ANON", "IPV6_ANON", "HTTP-XForwardFor" ); 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_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_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-UserAgent' => { 'de' => "Browseridentifikation", 'en' => "User agent identification", }, 'HTTP-XForwardFor' => { '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_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_AREACODE' => { 'de' => "GeoIP AREACODE", 'en' => "GeoIP AREACODE", }, '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 IPv6 Adresse", 'en' => "Autonomous System of IPv6 address", }, 'SETTINGS_ANON' => { 'de' => "Einstellungen der Anonymisierung", 'en' => "Anoymizer settings", }, ); # 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"; my $options_ipv6calc_ip2location = ""; my $options_ipv6calc_geoip = ""; # Location of database files my $database_ip2location_dir; 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); }; my $database_ip2location_lib; 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(); }; }; my %db_info_ip2location; my %db_info_geoip; my $database_geoip_dir; 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); }; my $database_geoip_lib; 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(); }; }; my $info_geoip_string; 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"; }; 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"; }; ###### 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_forward_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; # 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_settings = ""; my %ipv6calc_settings_hash; ############### 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 eq "html" || $outputformat eq "htmlfull") { print $text; }; }; }; sub print_textonly ($) { my $text = shift; if ( defined $text ) { if ($outputformat eq "text") { print $text; }; }; }; ## Print one table part sub print_infohash ($$;$) { my $phash = $_[0]; my $parray = $_[1]; my $colormode = $_[2]; 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; }; # 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 = ""; if (defined $2) { $key_embedded = $2; if ($last_key_embedded eq "") { $last_key_embedded = $key_embedded; $count_key_embedded++; } elsif ( $last_key_embedded ne $key_embedded) { $last_key_embedded = $key_embedded; $count_key_embedded++; }; } else { $count_key_embedded = 0; $last_key_embedded = ""; }; if (grep(/^$key_lookup$/, @format_tt)) { $flag_tt = 1; }; # 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 $key; &print_textonly (' ' x ($length_max_key - length($key)) ); &print_textonly (" | "); &print_tagoutput ( "\n" ); # print description if ($outputtype ne "simple") { &print_tagoutput ( " " ); 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 ( "\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 $$phash{$key}; if ( $flag_whoisurl == 1 ) { &print_tagoutput ( "" ); }; if ($flag_tt) { &print_tagoutput ( "" ); }; &print_tagoutput ( "\n" ); &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_forward_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)$/o) { $outputformat = $ENV{'HTTP_IPV6CALCWEB_OUTPUT_FORMAT'}; }; }; ## 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; }; }; # catch internal keys if ( $key =~ /^IPV6CALC_/ ) { if ( $key eq "IPV6CALC_COPYRIGHT" ) { $ipv6calc_copyright = $content; $ipv6calc_copyright =~ s/^\"//; $ipv6calc_copyright =~ s/\"$//; }; if ( $key eq "IPV6CALC_VERSION" ) { $ipv6calc_version = $content; $ipv6calc_version =~ s/^\"//; $ipv6calc_version =~ s/\"$//; }; if ( $key eq "IPV6CALC_NAME" ) { $ipv6calc_name = $content; $ipv6calc_name =~ s/^\"//; $ipv6calc_name =~ s/\"$//; }; if ( $key eq "IPV6CALC_FEATURES" ) { $ipv6calc_features = $content; $ipv6calc_features =~ s/^\"//; $ipv6calc_features =~ s/\"$//; foreach my $feature (split / /, $ipv6calc_features) { $ipv6calc_feature_hash{$feature} = 1; }; }; if ( $key =~ /^IPV6CALC_SETTINGS_(.*)$/ ) { if (! defined $ipv6calc_settings_hash{$1}) { if (length($ipv6calc_settings) > 0) { $ipv6calc_settings .= " "; }; my $t = $1; $content =~ s/"$//o; $content =~ s/^"//o; $ipv6calc_settings_hash{$t} = $content; $ipv6calc_settings .= $t . ":" . $content; }; }; }; $$p_hash{$key} = $content; push @$p_array, $key; }; return 0; }; my $result; ## check HTTP-XForwardFor if (defined $x_forward_for) { my $addr_remote_temp = $addr_remote; # save exit proxy address my $x_forward_for_entries = 0; foreach my $address (split /, /, $x_forward_for) { if ($address !~ /^([[:xdigit:]\.\:]+)$/) { # silently skip next; }; if ($x_forward_for_entries == 0) { # first found entry is real client $addr_remote = $address; } else { # next proxy push @proxy_addresses, $address; }; $x_forward_for_entries++; }; if ($x_forward_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 ($result != 0) { &print_error(); }; # add options depending of available features if (defined $ipv6calc_feature_hash{"GeoIP"} && $ipv6calc_feature_hash{"GeoIP"} == "1") { $options_ipv6calc .= $options_ipv6calc_geoip; }; if (defined $ipv6calc_feature_hash{"IP2Location"} && $ipv6calc_feature_hash{"IP2Location"} == "1") { $options_ipv6calc .= $options_ipv6calc_ip2location; }; ## 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-UserAgent'} = $user_agent; push @sort_remote, 'HTTP-UserAgent'; }; # add x-forward-for information to client if not handled otherwise if ((defined $x_forward_for) && (scalar(@proxy_addresses) == 0)) { $infoh_remote{'HTTP-XForwardFor'} = $x_forward_for; push @sort_remote, 'HTTP-XForwardFor'; }; # 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" ); 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_tagoutput ( " \n" ); &print_infohash (\%infoh_input, \@sort_input); }; }; if ($mode eq "info" || $mode eq "mixed") { # Client &print_textonly ("\n"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_remote, \@sort_remote, 'client'); # Proxy 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"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_proxy, \@sort_proxy, 'proxy'); }; }; if ((defined $addr_server) && ($skip_server == 0)) { # Server &print_textonly ("\n"); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_tagoutput ( " \n" ); &print_infohash (\%infoh_server, \@sort_server); }; }; # 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 ( "

" . $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}; &print_textonly (" "); &print_tagoutput ( " " ); print $input; &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'REMOTE'}->{$lang}; &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'PROXY'}->{$lang} . " #" . $proxy_count; &print_textonly ("\n"); &print_tagoutput ( "
" ); print $text{'SERVER'}->{$lang}; &print_textonly ("\n"); &print_tagoutput ( "
\n" ); my $datetime = POSIX::strftime("%Y-%m-%d %H:%M:%S", gmtime) . " UTC"; if ($outputformat eq "html" || $outputformat eq "htmlfull") { print " " . $text{'generated'}->{$lang} . " " . $program_name . " " . $program_version . ", " . $program_copyright . " " . $text{'at'}->{$lang} . " " . $datetime . "
\n"; print " " . $text{'powered'}->{$lang} . " " . $ipv6calc_name . " " . $ipv6calc_version . ", " . $ipv6calc_copyright; if (length($ipv6calc_features) > 0) { print " (features: " . $ipv6calc_features . ")"; }; 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} . " " . join(" / ", sort keys %db_info_ip2location) . ")\n"; }; if (scalar(keys %db_info_geoip) > 0) { print "
\n"; print " " . $text{'powered'}->{$lang} . " MaxMind " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_geoip) . "\n"; }; } else { print $text{'generated'}->{$lang} . " " . $program_name . " " . $program_version . ", " . $program_copyright . " " . $text{'at'}->{$lang} . " " . $datetime . "\n"; print $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_settings) > 0) { print " (settings: " . $ipv6calc_settings . ")"; }; print "\n"; if (scalar(keys %db_info_ip2location) > 0) { print $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_ip2location) . " (http://www.ip2location.com)" . "\n"; }; if (scalar(keys %db_info_geoip) > 0) { print $text{'powered'}->{$lang} . " " . $text{'database'}->{$lang} . " " . join(" / ", sort keys %db_info_geoip) . " (http://www.maxmind.com)" . "\n"; }; }; &print_tagoutput ( "
\n" ); OUTPUT_END: if ($outputformat eq "htmlfull") { &print_tagoutput ( " \n" ); &print_tagoutput ( "\n" ); }; exit ($returncode); ipv6calc-0.95.0/ipv6calcweb/README0000664000175100017510000000053107757714575015454 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.95.0/ipv6calcweb/fix-cgi-in.sh0000775000175100017510000000034611673725432017053 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.95.0/ipv6calcweb/ipv6calcweb.conf0000664000175100017510000000130011700143042017603 0ustar peterpeterSetEnv HTTP_IPV6CALCWEB_MODE info SetEnv HTTP_IPV6CALCWEB_INFO_SERVER 0 SetEnv HTTP_IPV6CALCWEB_DEBUG 0 ## path to ipv6calc binary (optional) # SetEnv HTTP_IPV6CALCWEB_BIN_IPV6CALC /bin/ipv6calc ## IP2Location IPv4 database file (optional) # SetEnv HTTP_IPV6CALCWEB_DB_IP2LOCATION_IPV4 /var/local/share/IP2Location/IP-COUNTRY.BIN ## IP2Location IPv6 database file (optional) # SetEnv HTTP_IPV6CALCWEB_DB_IP2LOCATION_IPV6 /var/local/share/IP2Location/IPV6-COUNTRY.BIN ## GeoIPv4 database file (optional) # SetEnv HTTP_IPV6CALCWEB_DB_GEOPIP_IPV4 /var/local/share/GeoIP/GeoLiteCity.dat ## GeoIPv6 database file (optional) # SetEnv HTTP_IPV6CALCWEB_DB_GEOPIP_IPV6 /var/local/share/GeoIP/GeoIPv6.dat ipv6calc-0.95.0/ipv6calcweb/create_ipv6calcweb-cgi.sh0000775000175100017510000000223112227322027021371 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.95.0/config.h.in0000664000175100017510000000741712217637513014403 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 GeoIP database directory. */ #undef GEOIP_DB /* Define GeoIP dynamic library. */ #undef GEOIP_DYN_LIB /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* 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 /* 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 to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if you want IEEE database included. */ #undef SUPPORT_DB_IEEE /* Define if you want IPv4 database included. */ #undef SUPPORT_DB_IPV4 /* Define if you want IPv6 database included. */ #undef SUPPORT_DB_IPV6 /* 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 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 you want IP2Location support with dynamic loading support - requires also additional linker options. */ #undef SUPPORT_IP2LOCATION_DYN /* 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.95.0/man/0000775000175100017510000000000012242072067013115 5ustar peterpeteripv6calc-0.95.0/man/ipv6calc.80000664000175100017510000001120210553216275014715 0ustar peterpeter.TH "ipv6calc" "8" "0.0.2" "Masamichi Goudge M.D. " "system administration" .de EX .nf .ft CW .. .de EE .ft R .fi .. .SH "NAME" .LP ipv6calc \- a small utility written in C to manipulate IPv6 addresses. .SH "SYNOPSIS" .LP ipv6calc [\fIoption\fP] \fB\fR .SH "DESCRIPTION" .LP ipv6calc is a small utility in C to manipulate IPv6 addresses. This utility is used to extend features on network\-functions\-ipv6. .SH "OPTIONS" .LP General options : .TP \fB[\-\-debug | \-d ]\fR : debug value (bitwise like) .TP \fB[ \-q | \-\-quiet ]\fR : be more quiet .TP Usage with new style options : .TP \fB[\-\-in ]\fR : specify input type (default: autodetect) We can see available \fBinput types\fR to type "ipv6calc \-\-in \-?", "ipv6calc \-\-in \-h" or "ipv6calc \-\-in \-\-help" . .LP Available \fBinput types\fR : .TP \fBauto\fR : automatic detection .TP \fBrevnibbles.int\fR : dot separated nibbles reverse, ending with ip6.int. .TP \fBrevnibbles.arpa\fR : dot separated nibbles reverse, ending with ip6.arpa. .TP \fBbitstring\fR : bitstring labes, ending with ip6.arpa. .TP \fBipv6addr\fR : IPv6 address .TP \fBipv4addr\fR : IPv4 address .TP \fBmac\fR : MAC address (48 bits) .TP \fBbase85\fR : Base\-85 string .TP \fBifinet6\fR : Like line in /proc/net/if_inet6 .TP \fBiid+token\fR : Interface identifier and token .TP \fBipv6logconv\fR : ipv6logconv (currently not supported) .TP \fBprefix+mac\fR : IPv6 prefix and a MAC address .LP For examples and available format options use: .EX \-\-in \fB\fR \-\-examples \fB[\-\-out ]\fR : specify output type (sometimes: autodetect) .EE .LP We can see available \fBoutput types\fR to type "ipv6calc \-\-out \-?", "ipv6calc \-\-out \-h" or "ipv6calc \-\-out \-\-help". .TP Available \fBoutput types\fR : .TP \fBrevnibbles.int\fR : dot separated nibbles reverse, ending with ip6.int. .TP \fBrevnibbles.arpa\fR : dot separated nibbles reverse, ending with ip6.arpa. .TP \fBbitstring\fR : bitstring labes, ending with ip6.arpa. .TP \fBipv6addr\fR : IPv6 address .TP \fBipv4addr\fR : IPv4 address .TP \fBmac\fR : MAC address (48 bits) .TP \fBeui64\fR : EUI\-64 identifier (64 bits) .TP \fBbase85\fR : Base\-85 string .TP \fBifinet6\fR : Like line in /proc/net/if_inet6 .TP \fBiid\fR : Interface identifier .TP \fBiid+token\fR : Interface identifier and token .TP \fBaddrtype\fR : Address type .TP \fBouitype\fR : OUI (IEEE) type .TP \fBipv6addrtype\fR : IPv6 address type .TP \fBany\fR : any type (currently not supported) .TP \fBrevipv4\fR : reverse IPv4, ending with in\-addr.arpa .TP For examples and available format options use: .br \-\-out \fB\fR \-\-examples .TP \fB[\-\-action ]\fR : specify action (default: format conversion, sometimes: autodetect) .TP We can see available action types to type "ipv6calc \-\-action \-?", "ipv6calc \-\-action \-h" or "ipv6calc \-\-action \-\-help". .TP Available \fBaction types\fR : .TP \fBauto\fR : Automatic selection of action (default) .TP \fBgeneui64\fR : Converts a MAC address to an EUI\-64 address .TP \fBconv6to4\fR : Converts IPv4 address <\-> 6to4 IPv6 address (prefix) .TP \fBgenprivacyiid\fR : Generates a privacy interface ID out of a given one and a token .TP \fBprefixmac2ipv6\fR : Generates an IPv6 address out of a prefix and a MAC address .TP \fB[ ...]\fR : specify format options .TP \fB [...]\fR : input data. .sp For example, "\fB127.0.0.1\fR", "\fB::1\fR". .TP \fBOther usage\fR : .TP \fB\-\-showinfo\fR | \fB\-i\fR [ \fB\-\-machine_readable\fR | \fB\-m\fR ] : show information about \fBinput data\fR .TP \fB\-\-showinfo\fR | \fB\-i\fR \fB\-\-show_types\fB : show available types on '\fB\-m\fR' .TP To see old\-style option use : \fB\-\-printoldoptions\fR .TP \-\-printoldoptions : .TP \-\-addr2ip6_int .TP \-\-addr_to_ip6int .TP \-\-addr2ip6_arpa .TP \-\-addr_to_ip6arpa .TP \-\-addr_to_bitstring .TP \-\-addr2compaddr .TP \-\-addr_to_compressed .TP \-\-addr2uncompaddr .TP \-\-addr_to_uncompressed .TP \-\-addr_to_base85 .TP \-\-base85_to_addr .TP \-\-mac_to_eui64 .TP \-\-addr2fulluncompaddr .TP \-\-addr_to_fulluncompressed .TP \-\-addr2if_inet6 .TP \-\-addr_to_ifinet6 .TP \-\-if_inet62addr .TP \-\-ifinet6_to_compressed .TP \-\-eui64_to_privacy .TP \-\-ipv4_to_6to4addr .TP \fB\-\-version\fR : print version. .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 .SH "AUTHORS" .LP Peter Bieringer ipv6calc-0.95.0/man/ipv6logstats.80000664000175100017510000000135707757712161015674 0ustar peterpeter.TH "ipv6logstats" "8" "0.0.1" "Masamichi Goudge M.D. " "system administration" .SH "Name" ipv6logstats \- Takes http log data from stdin and print a table on output .SH "SYNTAX" ipv6logstats [logfile] .SH "DESCRIPTION" Takes http log data from stdin and print a table on output .SH "OPTIONS" .TP [\-d|\-\-debug ] : debug value (bitwise like) .TP [\-q|\-\-quiet] : be more quiet .TP [\-u|\-\-unknown] : print unknown IP addresses to stderr .TP [\-c|\-\-colums] : print statistics in colums .TP [\-n|\-\-noheader] : don't print header in colums mode .TP [\-o|\-\-onlyheader] : print only header in colums mode .TP [\-p|\-\-prefix ] : print token as prefix .SH "AUTHORS" Peter Bieringer ipv6calc-0.95.0/man/Makefile.in0000664000175100017510000000076011130704331015154 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.95.0/man/ipv6logconv.80000664000175100017510000000063110443344525015464 0ustar peterpeter.TH "ipv6logconv" "8" "0.0.1" "Matanuki@Goudge.org" "" .SH "NAME" .LP ipv6logconv \- a small IPv6 log converter written in C. .LP .SH "SYNTAX" .nf .fam C General: [\-d|\-\-debug ] : debug value (bitwise like) [\-q|\-\-quiet] : be more quiet Output: [\-\-out ] : specify output type Available output types: \-\-out \-? .SH "AUTHORS" .LP Peter Bieringer ipv6calc-0.95.0/man/ipv6loganon.80000664000175100017510000000750012036050366015451 0ustar peterpeter.TH "ipv6loganon" "8" "2012-05-09" "Peter Bieringer , Niko Tyni " "" .SH "NAME" ipv6loganon \- HTTP server log file anonymizer .SH "SYNOPSIS" .PP .B ipv6loganon [ .B \-d .I value ] [ .B \-V ] [ .B \-n ] [ .B \-w .I file ] [ .B \-a .I file ] [ .B \-c .I value ] [ .B \-\-mask\-ipv4 .I bits ] [ .B \-\-mask\-ipv6 .I bits ] [ .B \-\-no\-mask\-iid ] [ .B \-\-anonymize\-standard | .B \-\-anonymize\-careful | .B \-\-anonymize\-paranoid ] .SH "DESCRIPTION" .PP .B ipv6loganon is a HTTP server log file anonymizer .PP It expects a log line on stdin with an IPv4/IPv6 address as first token. .PP This token would be anonymized according to given/default options. .PP The anonymizer would keep as much information as possible for IPv6 address types. .PP Client\-side IID would be anonymized by .IP \(bu EUI\-48 based: serial number would be zero'ed, keeping OID \(bu EUI\-64 based: serial number would be zero'ed, keeping OID \(bu ISATAP: client IPv4 address would be anonymized by given IPv4 mask \(bu TEREDO: client IPv4 address would be anonymized by given IPv4 mask, client port would be zero'ed \(bu 6to4(Microsoft): client IPv4 address would be anonymized by given IPv4 mask \(bu local: whole IID would be zero'ed (except if privacy extension was detected, then replaced by a special token) .PP Client\-side SLA would be anonymized by .IP \(bu SLA would be zero'ed .PP Prefix would be anonymized by .IP \(bu 6to4: client IPv4 address would be anonymized by given IPv4 mask .PP Compat/Mapped IPv4 addresses would be anonymized by .IP \(bu IPv4 address would be anonymized by given IPv4 mask .PP Afterwards, the modified address and the trailing line would be printed to stdout or given file. .SH "OPTIONS" .SS "GENERAL" .TP .B \-d, \-\-debug debug value (bitwise like) .TP .B \-V, \-\-verbose be verbose .TP .B \-w, \-\-write write output to file instead of stdout .TP .B \-a, \-\-append append output to file instead of stdout .TP .B \-f, \-\-flush flush output after each line .TP .B \-n, \-\-nocache disable caching .TP .B \-c, \-\-cachelimit set cache limit (default: 20, maximum: 200) .SS "OUTPUT ANONYMIZATION" .TP .B \-\-mask\-ipv4 mask all IPv4 addresses [0\-32], default 24 (applied also to IPv4 addresses inside IPv6 address) .TP .B \-\-mask\-ipv6 mask IPv6 prefix [0\-63], default 48 (only applied to related address types) .TP .B \-\-no\-mask\-iid do not mask non\-IPv4 based IPv6\-IID .TP .B \-\-anonymize\-standard (default) preset for standard anonymization mask\-ipv4=24 mask\-ipv6=48 mask\-iid .TP .B \-\-anonymize\-careful preset for careful anonymization mask\-ipv4=20 mask\-ipv6=40 mask\-iid .TP .B \-\-anonymize\-paranoid preset for paranoid anonymization mask\-ipv4=16 mask\-ipv6=32 mask\-iid .PP .SH "EXAMPLE" .SS "OUTPUT" Original lines (stdin): .PP 207.46.98.53 \- \- [01/Jan/2007:00:01:15 +0100] "GET /Linux+IPv6\-HOWTO/x1112.html HTTP/1.0" 200 6162 "\-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 253 6334 2002:52b6:6b01:1:216:17ff:fe01:2345 \- \- [10/Jan/2007:15:04:28 +0100] "GET /favicon.ico HTTP/1.1" 200 4710 "http://www.bieringer.de/linux/IPv6/" "Mozilla/5.0 (X11; U; Linux i686; en\-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9\-1.fc6 Firefox/1.5.0.9 pango\-text" 413 5005 .PP Modified lines (stdout): .PP 207.46.98.0 \- \- [01/Jan/2007:00:01:15 +0100] "GET /Linux+IPv6\-HOWTO/x1112.html HTTP/1.0" 200 6162 "\-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 253 6334 2002:52b6:6b00:0:216:17ff:fe00:0 \- \- [10/Jan/2007:15:04:28 +0100] "GET /favicon.ico HTTP/1.1" 200 4710 "http://www.bieringer.de/linux/IPv6/" "Mozilla/5.0 (X11; U; Linux i686; en\-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9\-1.fc6 Firefox/1.5.0.9 pango\-text" 413 5005 .SS "OUTPUT" TODO .SH "AUTHORS" .PP Peter Bieringer .SH "SEE ALSO" .B ipv6calc(8)