--- /dev/null
+#!/usr/bin/perl
+use warnings;
+use strict;
+use autodie;
+
+use Data::Dump qw(dump);
+
+$|=1; # flush stdout
+
+my $debug = $ENV{DEBUG} || 0;
+
+my @name_mac_files = ( qw( /dev/shm/sw-name-mac /dev/shm/wap-name-mac ), $ENV{NAME_MAC}, glob '/dev/shm/name-mac*' );
+my $mac2name;
+
+foreach my $name_mac ( @name_mac_files ) {
+ next unless -e $name_mac;
+ open(my $f, '<'. $name_mac);
+ my $count = 0;
+ while(<$f>) {
+ chomp;
+ #my ( $ip, $name, $mac ) = split(/ /,$_);
+ my ( $name, $mac ) = split(/ /,$_);
+ $mac = lc($mac);
+ $mac2name->{$mac} = $name;
+ $count++;
+ }
+ warn "## $name_mac $count";
+}
+
+sub mac2name {
+ my ( $mac, $name ) = @_;
+
+ $mac = lc($mac);
+ if ( exists $mac2name->{$mac} ) {
+ my $mac_name = $mac2name->{$mac};
+ warn "ERROR: name different $name != $mac_name" if $name && $name ne $mac_name;
+ #return ( $mac, $mac_name );
+ return $mac . ' ' . $mac_name;
+ }
+ #return ( $mac, $name );
+ return $mac;
+}
+
+warn "# mac2name = ",dump($mac2name) if $debug;
+
+sub fix_mac {
+ my $mac = shift;
+ $mac = lc($mac);
+ $mac =~ s/^([0-9a-f]):/0$1:/;
+ while ( $mac =~ s/:([0-9a-f]):/:0$1:/g ) {};
+ $mac =~ s/:([0-9a-f])$/:0$1/;
+# warn "# $mac\n";
+ return $mac;
+}
+
+while(<>) {
+ s/((:?[0-9A-Fa-f]{2}[:-]){5}(:?[0-9A-Fa-f]{2}))/mac2name($1)/ge;
+ print;
+}