Make libpcap shared
[openwrt/svn-archive/archive.git] / openwrt / package / libpcap / patches / 102-alt-ether.patch
diff --git a/openwrt/package/libpcap/patches/102-alt-ether.patch b/openwrt/package/libpcap/patches/102-alt-ether.patch
new file mode 100644 (file)
index 0000000..d5e010e
--- /dev/null
@@ -0,0 +1,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; }