102-alt-ether.patch 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. diff -urN libpcap-0.9.4.orig/nametoaddr.c libpcap-0.9.4/nametoaddr.c
  2. --- libpcap-0.9.4.orig/nametoaddr.c 2005-04-20 13:13:51.000000000 +0200
  3. +++ libpcap-0.9.4/nametoaddr.c 2006-02-05 16:58:46.000000000 +0100
  4. @@ -410,7 +410,7 @@
  5. e = ep = (u_char *)malloc(6);
  6. while (*s) {
  7. - if (*s == ':')
  8. + if (*s == ':' || *s == '.')
  9. s += 1;
  10. d = xdtoi(*s++);
  11. if (isxdigit((unsigned char)*s)) {
  12. diff -urN libpcap-0.9.4.orig/scanner.l libpcap-0.9.4/scanner.l
  13. --- libpcap-0.9.4.orig/scanner.l 2005-09-05 11:08:07.000000000 +0200
  14. +++ libpcap-0.9.4/scanner.l 2006-02-05 17:00:13.000000000 +0100
  15. @@ -80,6 +80,7 @@
  16. N ([0-9]+|(0X|0x)[0-9A-Fa-f]+)
  17. B ([0-9A-Fa-f][0-9A-Fa-f]?)
  18. W ([0-9A-Fa-f][0-9A-Fa-f]?[0-9A-Fa-f]?[0-9A-Fa-f]?)
  19. +X [0-9A-Fa-f]
  20. %a 16000
  21. %o 19000
  22. @@ -306,7 +307,7 @@
  23. {N} { yylval.i = stoi((char *)yytext); return NUM; }
  24. ({N}\.{N})|({N}\.{N}\.{N})|({N}\.{N}\.{N}\.{N}) {
  25. yylval.s = sdup((char *)yytext); return HID; }
  26. -{B}:{B}:{B}:{B}:{B}:{B} { yylval.e = pcap_ether_aton((char *)yytext);
  27. +({B}:{B}:{B}:{B}:{B}:{B})|({B}\.{B}\.{B}\.{B}\.{B}\.{B}) { yylval.e = pcap_ether_aton((char *)yytext);
  28. return EID; }
  29. {V6} {
  30. #ifdef INET6
  31. @@ -324,6 +325,7 @@
  32. #endif /*INET6*/
  33. }
  34. {B}:+({B}:+)+ { bpf_error("bogus ethernet address %s", yytext); }
  35. +{X}{12} { yylval.e = pcap_ether_aton((char *)yytext); return EID;}
  36. icmptype { yylval.i = 0; return NUM; }
  37. icmpcode { yylval.i = 1; return NUM; }
  38. icmp-echoreply { yylval.i = 0; return NUM; }