From Hadriel Kaplan:
authorJaap Keuter <jaap.keuter@xs4all.nl>
Tue, 26 Mar 2013 21:53:09 +0000 (21:53 -0000)
committerJaap Keuter <jaap.keuter@xs4all.nl>
Tue, 26 Mar 2013 21:53:09 +0000 (21:53 -0000)
The 'make-manuf'perl script gets the IEEE 22-bit OUI and IAB registries, but not OUI-36.
patch to get the OUI-36 listings.

From me:
Update header text in template to list the sources actually used.

svn path=/trunk/; revision=48572

manuf.tmpl
tools/make-manuf

index d5e3cb092b6118d1c8e2921442e1992ea3572334..777b28dadded2993a001be0350aefd75d75b2645 100644 (file)
 # The data below has been assembled from the following sources:
 #
 # The IEEE public OUI listing available from:
-# http://standards.ieee.org/regauth/oui/index.shtml
-# http://standards.ieee.org/regauth/oui/oui.txt
+# <http://standards.ieee.org/develop/regauth/oui/oui.txt>
+# <http://standards.ieee.org/develop/regauth/iab/iab.txt>
+# <http://standards.ieee.org/develop/regauth/oui36/oui36.txt>
 #
 # Michael Patton's "Ethernet Codes Master Page" available from:
-# <http://www.cavebear.com/CaveBear/Ethernet/>
-# <ftp://ftp.cavebear.com/pub/Ethernet.txt>
+# <http://www.cavebear.com/archive/cavebear/Ethernet/Ethernet.txt>
 #
 # This is Wireshark 'manuf' file, which started out as a subset of Michael
 # Patton's list and grew from there.
index af981bdfcdea7a25a418c609a61d28eaf2d1988c..8f8128f1bcfc31e7b05fdc89bae2dff3de770210 100755 (executable)
@@ -3,15 +3,14 @@
 # $Id$
 #
 # Make-manuf - Creates a file containing ethernet OUIs and their
-# company IDs.  It merges the databases at
-# http://standards.ieee.org/regauth/oui/index.shtml and
+# company IDs.  It merges the databases at IEEE and
 # http://www.cavebear.com/archive/cavebear/Ethernet/Ethernet.txt
 # with entries in our template file.
 #
 # The script reads the comments at the top of "manuf.tmpl" and writes
 # them to "manuf".  It then joins the manufacturer listing in "manuf.tmpl"
-# with the listing in "oui.txt", with the entries in "manuf.tmpl" taking
-# precedence.
+# with the listing in "oui.txt", "iab.txt", etc, with the entries in 
+# "manuf.tmpl" taking precedence.
 
 # LWP is part of the standard Perl module libwww
 
@@ -41,6 +40,7 @@ $outfile  = "manuf";
 $inheader = 1;
 $oui_url  = "http://standards.ieee.org/develop/regauth/oui/oui.txt";
 $iab_url  = "http://standards.ieee.org/develop/regauth/iab/iab.txt";
+$oui36_url  = "http://standards.ieee.org/develop/regauth/oui36/oui36.txt";
 $cb_url   = "http://www.cavebear.com/archive/cavebear/Ethernet/Ethernet.txt";
 %oui_list = ();
 $hp       = "[0-9a-fA-F]{2}";
@@ -55,6 +55,8 @@ $oui_added   = 0;
 $oui_skipped = 0;
 $iab_added   = 0;
 $iab_skipped = 0;
+$oui36_added   = 0;
+$oui36_skipped = 0;
 
 sub shorten
 {
@@ -138,6 +140,31 @@ foreach $line (split(/\n/, $ieee_list)) {
   }
 }
 
+# Add IEEE entries for OUI-36
+
+$ieee_list = fetch($oui36_url);
+
+foreach $line (split(/\n/, $ieee_list)) {
+  # determine the OUI used for OUI-36 (currently only 00-1B-C5)
+  if (($oui36_tmp, $manuf) = ($line =~ /^($ieee_re)\s+\(hex\)\s+(\S.*)$/)) {
+      $oui36_base = $oui36_tmp;
+  }
+  # determine next two bytes
+  if (($oui36_4, $oui36_5, $manuf) = ($line =~ /^($hp)($hp)$hp-$hp$hp$hp\s+\(base\s16\)\s+(\S.*)$/)) {
+    $oui36 = "$oui36_base:$oui36_4:$oui36_5:00/36";
+    $oui36 =~ tr /-/:/; # The IEEE bytes are separated by dashes.
+    # Ensure OUI-36 is all upper-case
+    $oui36 =~ tr/a-f/A-F/;
+    if (exists $oui_list{$oui36}) {
+      printf "$oui36 - Skipping IEEE \"$manuf\" in favor of \"$oui_list{$oui36}\"\n";
+      $oui36_skipped++;
+    } else {
+      $oui_list{$oui36} = &shorten($manuf);
+      $oui36_added++;
+    }
+  }
+}
+
 # Add IEEE entries for OUIs not yet known.
 
 $ieee_list = fetch($oui_url);
@@ -212,10 +239,12 @@ print <<"Fin"
 Original entries : $tmpl_added
 IEEE OUI added   : $oui_added
 IEEE IAB added   : $iab_added
+IEEE OUI36 added : $oui36_added
 CaveBear added   : $cb_added
 Total            : $total_added
 
 IEEE OUI skipped : $oui_skipped
 IEEE IAB skipped : $iab_skipped
+IEEE OUI36 skipd : $oui36_skipped
 CaveBear skipped : $cb_skipped
 Fin