aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>2000-08-23 06:02:23 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>2000-08-23 06:02:23 +0000
commitaa2a3bfd486bc256e97c5a0832523b0162aeadca (patch)
tree70ddfe8e27f68291d58aae01a465c93344ef5619
parent2b6a35f7cdc045bf01a0539cf76dcd34adb0ccbf (diff)
downloadpostgresql-aa2a3bfd486bc256e97c5a0832523b0162aeadca.tar.gz
postgresql-aa2a3bfd486bc256e97c5a0832523b0162aeadca.zip
Create and manage information on MAC address OUIs
(Organizationally Unique Identifiers). This is the manufacturer's code in the MAC address.
-rwxr-xr-xcontrib/mac/createoui52
-rwxr-xr-xcontrib/mac/dropoui25
-rw-r--r--contrib/mac/ouiparse.awk53
-rwxr-xr-xcontrib/mac/updateoui34
4 files changed, 164 insertions, 0 deletions
diff --git a/contrib/mac/createoui b/contrib/mac/createoui
new file mode 100755
index 00000000000..56d81c20d36
--- /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 <<EOF
+-- Table containing OUI portions of MAC address and manufacturer's name
+create table macoui (
+ addr macaddr not null,
+ name text not null
+);
+
+-- Create an index to help lookups
+create index macoui_idx on macoui (addr);
+
+-- Function to return manufacturer's name given MAC address
+create function manuf (macaddr)
+ returns text as '
+ select name from macoui m where trunc(\$1) = m.addr;
+' language 'SQL';
+EOF
+
+if [ $update -gt 0 ]; then
+ updateoui $args
+fi
+
+exit
diff --git a/contrib/mac/dropoui b/contrib/mac/dropoui
new file mode 100755
index 00000000000..6fffdc92d66
--- /dev/null
+++ b/contrib/mac/dropoui
@@ -0,0 +1,25 @@
+#! /bin/sh
+# Utility to remove manufacturer's oui table
+
+args=
+
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ --help)
+ echo "Usage: $0 dbname"
+ exit
+ ;;
+ *)
+ args="$args $1"
+ ;;
+ esac
+ shift
+done
+
+psql $args <<EOF
+drop function manuf(macaddr);
+drop table macoui;
+EOF
+
+exit
diff --git a/contrib/mac/ouiparse.awk b/contrib/mac/ouiparse.awk
new file mode 100644
index 00000000000..63c264a9eac
--- /dev/null
+++ b/contrib/mac/ouiparse.awk
@@ -0,0 +1,53 @@
+# $Id: ouiparse.awk,v 1.1 2000/08/23 06:02:23 thomas Exp $
+#
+# ouiparse.awk
+# Author: Lawrence E. Rosenman <ler@lerctr.org>
+# 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 00000000000..2a6a07c3dfb
--- /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