Ethereal-cvs: [ethereal-cvs] cvs commit: ethereal dfilter-grammar.y dfilter-scanner.l dfilter.

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Sun, 10 Oct 1999 22:03:25 -0500 (CDT)
guy         1999/10/10 22:03:20 CDT

  Modified files:
    .                    dfilter-grammar.y dfilter-scanner.l 
                         dfilter.c dfilter-int.h resolv.c resolv.h 
  Log:
  Have "get_host_ipaddr()" return a Boolean indicating whether it
  succeeded or failed, and, if it succeeded, have it fill in the IP
  address if found through a pointer passed as the second argument.
  
  Have it first try interpreting its first argument as a dotted-quad IP
  address, with "inet_aton()", and, if that fails, have it try to
  interpret it as a host name with "gethostbyname()"; don't bother with
  "gethostbyaddr()", as we should be allowed to filter on IP addresses
  even if there's no host name associated with them (there's no guarantee
  that "gethostbyaddr()" will succeed if handed an IP address with no
  corresponding name - and it looks as if FreeBSD 3.2, at least, may not
  succeed in that case).
  
  Add a "dfilter_fail()" routine that takes "printf()"-like arguments and
  uses them to set an error message for the parse; doing so means that
  even if the filter expression is syntactically valid, we treat it as
  being invalid.  (Is there a better way to force a parse to fail from
  arbitrary places in routines called by the parser?)
  
  Use that routine in the lexical analyzer.
  
  If that error message was set, use it as is as the failure message,
  rather than adding "Unable to parse filter string XXX" to it.
  
  Have the code to handle IP addresses and host names in display filters
  check whether "get_host_ipaddr()" succeeded or failed and, if it failed,
  arrange that the parse fail with an error message indicating the source
  of the problem.
  
  Revision  Changes    Path
  1.21      +7 -2      ethereal/dfilter-grammar.y
  1.17      +11 -6     ethereal/dfilter-scanner.l
  1.25      +20 -15    ethereal/dfilter.c
  1.7       +12 -3     ethereal/dfilter-int.h
  1.13      +21 -12    ethereal/resolv.c
  1.7       +5 -3      ethereal/resolv.h