102-alt-ether.patch 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. --- a/nametoaddr.c
  2. +++ b/nametoaddr.c
  3. @@ -410,7 +410,7 @@
  4. e = ep = (u_char *)malloc(6);
  5. while (*s) {
  6. - if (*s == ':')
  7. + if (*s == ':' || *s == '.')
  8. s += 1;
  9. d = xdtoi(*s++);
  10. if (isxdigit((unsigned char)*s)) {
  11. --- a/scanner.l
  12. +++ b/scanner.l
  13. @@ -80,6 +80,7 @@
  14. N ([0-9]+|(0X|0x)[0-9A-Fa-f]+)
  15. B ([0-9A-Fa-f][0-9A-Fa-f]?)
  16. W ([0-9A-Fa-f][0-9A-Fa-f]?[0-9A-Fa-f]?[0-9A-Fa-f]?)
  17. +X [0-9A-Fa-f]
  18. %a 18400
  19. %o 21500
  20. @@ -310,7 +311,7 @@
  21. {N} { yylval.i = stoi((char *)yytext); return NUM; }
  22. ({N}\.{N})|({N}\.{N}\.{N})|({N}\.{N}\.{N}\.{N}) {
  23. yylval.s = sdup((char *)yytext); return HID; }
  24. -{B}:{B}:{B}:{B}:{B}:{B} { yylval.e = pcap_ether_aton((char *)yytext);
  25. +({B}:{B}:{B}:{B}:{B}:{B})|({B}\.{B}\.{B}\.{B}\.{B}\.{B}) { yylval.e = pcap_ether_aton((char *)yytext);
  26. return EID; }
  27. {V6} {
  28. #ifdef INET6
  29. @@ -328,6 +329,7 @@
  30. #endif /*INET6*/
  31. }
  32. {B}:+({B}:+)+ { bpf_error("bogus ethernet address %s", yytext); }
  33. +{X}{12} { yylval.e = pcap_ether_aton((char *)yytext); return EID;}
  34. icmptype { yylval.i = 0; return NUM; }
  35. icmpcode { yylval.i = 1; return NUM; }
  36. icmp-echoreply { yylval.i = 0; return NUM; }