summaryrefslogtreecommitdiffstats
path: root/openwrt/package/libpcap/patches/102-alt-ether.patch
blob: d5e010ec678c2b992d80ffa181e19391577f0f56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--- libpcap-0.8.3-orig/nametoaddr.c	2003-11-19 19:13:48.000000000 +0100
+++ libpcap-0.8.3-7/nametoaddr.c	2005-03-08 03:38:22.000000000 +0100
@@ -333,7 +333,7 @@
 	e = ep = (u_char *)malloc(6);
 
 	while (*s) {
-		if (*s == ':')
+		if (*s == ':' || *s == '.')
 			s += 1;
 		d = xdtoi(*s++);
 		if (isxdigit((unsigned char)*s)) {
--- libpcap-0.8.3-orig/scanner.l	2004-03-28 23:45:33.000000000 +0200
+++ libpcap-0.8.3-7/scanner.l	2005-03-08 03:38:22.000000000 +0100
@@ -80,6 +80,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 16000
 %o 19000
@@ -296,7 +297,7 @@
 {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
@@ -314,6 +315,8 @@
 #endif /*INET6*/
 			}
 {B}:+({B}:+)+		{ bpf_error("bogus ethernet address %s", yytext); }
+{X}{12}			{ yylval.e = pcap_ether_aton((char *)yytext); return EID;}
+
 icmptype		{ yylval.i = 0; return NUM; }
 icmpcode		{ yylval.i = 1; return NUM; }
 icmp-echoreply		{ yylval.i = 0; return NUM; }