--- libpcap_0_5rel2/nametoaddr.c.wiget Thu Nov 25 09:25:35 1999 +++ libpcap_0_5rel2/nametoaddr.c Thu Jul 13 16:31:19 2000 @@ -308,7 +308,7 @@ e = ep = (u_char *)malloc(6); while (*s) { - if (*s == ':') + if (*s == ':' || *s == '.') s += 1; d = xdtoi(*s++); if (isxdigit(*s)) { --- libpcap_0_5rel2/scanner.l.wiget Wed Nov 17 05:09:58 1999 +++ libpcap_0_5rel2/scanner.l Thu Jul 13 16:30:01 2000 @@ -82,6 +82,7 @@ N ([0-9]+|(0X|0x)[0-9A-Fa-f]+) B ([0-9A-Fa-f][0-9A-Fa-f]?) W ([0-9A-Fa-f][0-9A-Fa-f]?[0-9A-Fa-f]?[0-9A-Fa-f]?) +X [0-9A-Fa-f] %a 15000 %o 17000 @@ -235,7 +236,8 @@ {N} { yylval.i = stoi((char *)yytext); return NUM; } ({N}\.{N})|({N}\.{N}\.{N})|({N}\.{N}\.{N}\.{N}) { yylval.s = sdup((char *)yytext); return HID; } -{B}:{B}:{B}:{B}:{B}:{B} { yylval.e = pcap_ether_aton((char *)yytext); +({B}:{B}:{B}:{B}:{B}:{B})|({B}\.{B}\.{B}\.{B}\.{B}\.{B}) { + yylval.e = pcap_ether_aton((char *)yytext); return EID; } {V6} { #ifdef INET6 @@ -253,6 +255,8 @@ #endif /*INET6*/ } {B}:+({B}:+)+ { bpf_error("bogus ethernet address %s", yytext); } +{X}{12} { yylval.e = pcap_ether_aton((char *)yytext); + return EID; } [A-Za-z0-9][-_.A-Za-z0-9]*[.A-Za-z0-9] { yylval.s = sdup((char *)yytext); return ID; } "\\"[^ !()\n\t]+ { yylval.s = sdup((char *)yytext + 1); return ID; }