From aa2a3bfd486bc256e97c5a0832523b0162aeadca Mon Sep 17 00:00:00 2001 From: "Thomas G. Lockhart" Date: Wed, 23 Aug 2000 06:02:23 +0000 Subject: [PATCH] Create and manage information on MAC address OUIs (Organizationally Unique Identifiers). This is the manufacturer's code in the MAC address. --- contrib/mac/createoui | 52 +++++++++++++++++++++++++++++++++++++++ contrib/mac/dropoui | 25 +++++++++++++++++++ contrib/mac/ouiparse.awk | 53 ++++++++++++++++++++++++++++++++++++++++ contrib/mac/updateoui | 34 ++++++++++++++++++++++++++ 4 files changed, 164 insertions(+) create mode 100755 contrib/mac/createoui create mode 100755 contrib/mac/dropoui create mode 100644 contrib/mac/ouiparse.awk create mode 100755 contrib/mac/updateoui diff --git a/contrib/mac/createoui b/contrib/mac/createoui new file mode 100755 index 0000000000..56d81c20d3 --- /dev/null +++ b/contrib/mac/createoui @@ -0,0 +1,52 @@ +#! /bin/sh +# Utility to create manufacturer's oui table +# OUI is "Organizationally Unique Identifier" assigned by IEEE. +# There are currently three duplicate listings, so we can not enforce +# uniqueness in the OUI field. +# - thomas 2000-08-21 + +args= +update=0 + +while [ $# -gt 0 ] +do + case "$1" in + --update) + update=1 + ;; + --noupdate) + update=0 + ;; + --help) + echo "Usage: $0 --[no]update dbname" + exit + ;; + *) + args="$args $1" + ;; + esac + shift +done + +psql -e $args < +# Original Date: 30 July 2000 (in this form). +# This AWK script takes the IEEE's oui.txt file and creates insert +# statements to populate a SQL table with the following attributes: +# create table oui ( +# oui macaddr primary key, +# manufacturer text); +# the table name is set by setting the AWK variable TABLE +# +# we translate the character apostrophe (') to space inside the company name +# to avoid SQL errors. +# +# match ONLY lines that begin with 2 hex numbers, -, and another hex number + +BEGIN { + TABLE="macoui"; + printf "DELETE FROM %s;",TABLE; + printf "BEGIN TRANSACTION;"; + nrec=0; +} + +END { +# if (nrec > 0) + printf "COMMIT TRANSACTION;"; +} + +/^[0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F]/ { +# if (nrec >= 100) { +# printf "COMMIT TRANSACTION;"; +# printf "BEGIN TRANSACTION;"; +# nrec=0; +# } else { +# nrec++; +# } + # Get the OUI + OUI=$1; + # Skip the (hex) tag to get to Company Name + Company=$3; + # make the OUI look like a macaddr + gsub("-",":",OUI); + OUI=OUI ":00:00:00" + # Pick up the rest of the company name + for (i=4;i<=NF;i++) + Company=Company " " $i; + # Modify any apostrophes (') to avoid grief below. + gsub("'","''",Company); + # Print out for the 'C' structure in mac.c + printf "INSERT INTO %s (addr, name) VALUES (trunc(macaddr \'%s\'),\'%s\');\n", + TABLE,OUI,Company; +} diff --git a/contrib/mac/updateoui b/contrib/mac/updateoui new file mode 100755 index 0000000000..2a6a07c3df --- /dev/null +++ b/contrib/mac/updateoui @@ -0,0 +1,34 @@ +#! /bin/sh +# Utility to create manufacturer's OUI table + +args= +refresh=0 + +while [ $# -gt 0 ] +do + case "$1" in + --refresh|--fetch|-r) + refresh=1 + ;; + --norefresh|--nofetch) + refresh=0 + ;; + --help) + echo "Usage: $0 --[no]refresh dbname" + exit + ;; + *) + args="$args $1" + ;; + esac + shift +done + +if [ $refresh -gt 0 ]; then + [ -e oui.txt ] && rm -rf oui.txt + wget -nd 'http://standards.ieee.org/regauth/oui/oui.txt' +fi + +awk -f ouiparse.awk < oui.txt | psql -e $args + +exit