102-alt-ether.patch 1.5 KB

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