Commit graph

206 commits

Author SHA1 Message Date
Jon Siwek
34ead91f99 Fix inconsistencies in random number generation.
The srand()/rand() interface was being intermixed with the
srandom()/random() one.  The later is now used throughout.

Changed the srand() and rand() BIFs to work deterministically if Bro
was given a seed file (addresses #825).  They also now wrap the
system's srandom() and random() instead of srand() and rand() as per
the above.
2012-06-29 16:24:31 -05:00
Daniel Thayer
18e61fcdfc Fix val_size BIF tests and improve docs
Improve documentation of "order" BIF, and made the "val_size" tests
more portable.
2012-06-08 15:25:49 -05:00
Robin Sommer
73cefcc11c Merge remote-tracking branch 'origin/topic/dnthayer/bif-tests'
* origin/topic/dnthayer/bif-tests:
  Improve "fmt" BIF documentation comment
  Improve tests of the type_name BIF
  Improve test cases for "order" BIF
  Fix documentation of sort BIF and add more tests
  Fix documentation for system_env BIF
  Deprecate the parse_dotted_addr BIF (use to_addr instead)
  Improve tests for to_port and type_name BIFs
  Improve tests for sort, order, and system_env BIFs
  Fix the join_string_vec BIF and add more tests
  Add more tests for previously-untested BIFs
  Add more tests for previously-untested BIFs
  Add more tests for previously-untested BIFs
  Add more tests for previously-untested BIFs
  Add tests for previously-untested strings BIFs
2012-06-06 11:42:16 -07:00
Daniel Thayer
6e5eb187dd Improve "fmt" BIF documentation comment
Also update test cases for fmt.
2012-06-01 18:11:46 -05:00
Daniel Thayer
6292083b74 Improve tests of the type_name BIF 2012-06-01 16:23:40 -05:00
Daniel Thayer
2b0db01874 Improve test cases for "order" BIF
Also fixed some comments and error messages in the "order" BIF.
2012-06-01 15:50:49 -05:00
Daniel Thayer
2eddaffc90 Fix documentation of sort BIF and add more tests 2012-06-01 14:24:42 -05:00
Daniel Thayer
19e3f2ee56 Fix documentation for system_env BIF 2012-06-01 13:12:55 -05:00
Daniel Thayer
3b2ac75e91 Deprecate the parse_dotted_addr BIF (use to_addr instead) 2012-06-01 12:36:30 -05:00
Daniel Thayer
2c62b98b5b Improve tests for to_port and type_name BIFs 2012-05-31 15:19:11 -05:00
Daniel Thayer
5f16a29aea Improve tests for sort, order, and system_env BIFs 2012-05-31 12:49:59 -05:00
Daniel Thayer
17155a103d Fix the join_string_vec BIF and add more tests 2012-05-30 16:50:43 -05:00
Daniel Thayer
6869e1aadc Add more tests for previously-untested BIFs 2012-05-30 16:30:50 -05:00
Daniel Thayer
15689ce005 Add more tests for previously-untested BIFs 2012-05-29 14:04:36 -05:00
Daniel Thayer
1059d9aa75 Add more tests for previously-untested BIFs 2012-05-25 17:15:29 -05:00
Daniel Thayer
03aee9197d Add more tests for previously-untested BIFs 2012-05-24 16:33:19 -05:00
Daniel Thayer
94e850397b Add tests for previously-untested strings BIFs 2012-05-23 16:34:03 -05:00
Jon Siwek
79afc834ce Add SHA1 and SHA256 hashing BIFs. (addresses #542)
Also refactor all internal MD5 stuff to use OpenSSL's.
2012-05-04 16:09:05 -05:00
Jon Siwek
f4101b5265 Improve handling of IPv6 routing type 0 extension headers.
- flow_weird event with name argument value of "routing0_hdr" is raised
  for packets containing an IPv6 routing type 0 header because this
  type of header is now deprecated according to RFC 5095.

- packets with a routing type 0 header and non-zero segments left
  now use the last address in that header in order to associate
  with a connection/flow and for calculating TCP/UDP checksums.

- added a set of IPv4/IPv6 TCP/UDP checksum unit tests
2012-03-27 16:05:45 -05:00
Jon Siwek
c765f43fe3 Refactor script-layer IPv6 ext. header chain (addresses #795)
This replaces the "ip6_hdr_chain" in the "ip6_hdr" record with a vector of
"ip6_ext_hdr" to make it easier to traverse the chain.
2012-03-21 10:34:38 -05:00
Jon Siwek
1c1d657039 Changes to IPv6 ext. header parsing (addresses #795).
In response to feedback from Robin:

  - rename "ip_hdr" to "ip4_hdr"

  - pkt_hdr$ip6 is now of type "ip6_hdr" instead of "ip6_hdr_chain"

  - "ip6_hdr_chain" no longer contains an "ip6_hdr" field, instead
    it's the other way around, "ip6_hdr" contains an "ip6_hdr_chain"

  - other internal refactoring
2012-03-20 15:50:17 -05:00
Jon Siwek
f11fca588e Merge branch 'master' into topic/jsiwek/ipv6-ext-headers 2012-03-19 14:26:59 -05:00
Jon Siwek
5312a904ab Fix ipv6_ext_headers event and add routing0_data_to_addrs BIF.
Also add unit tests for ipv6_ext_headers and esp_packet events.
2012-03-14 10:31:08 -05:00
Jon Siwek
bf3f184a01 Change IPv6 literal constant syntax to require encasing square brackets
This is to avoid ambiguity between compressed hex notation and
module namespacing, both which use "::". E.g.: "aaaa::bbbb" could
be an identifier or an IPv6 address, but "[aaaa::bbbb]" is now
clearly the address.

Also added IPv6 mixed notation to allow an IPv4 dotted-decimal
address to be specified in the lower 32-bits.
2012-03-13 13:47:07 -05:00
Jon Siwek
0b32c980bf Update PacketFilter/Discarder code for IP version independence.
The signatures of script-layer functions 'discarder_check_ip',
'discarder_check_tcp', 'discarder_check_udp', and 'discarder_check_icmp'
were changed to use the more general 'pkt_hdr' type as a parameter
instead of individual header types.
2012-03-08 13:12:04 -06:00
Robin Sommer
2eeac54857 Merge remote-tracking branch 'origin/fastpath'
* origin/fastpath:
  Add to_subnet bif (fixes #782).
  Refactor IPAddr v4 initialization from string. (fixes #775)

Closes #782.
Closes #775.
Closes #784.
2012-02-24 15:26:18 -08:00
Jon Siwek
32aabe8432 Add to_subnet bif (fixes #782).
Also fix IPAddr::Mask/ReverseMask not allowing argument of 0.

And clarified return value of to_addr bif when the input string
does not parse into a valid IP address.
2012-02-24 12:34:29 -06:00
Jon Siwek
d7dafe2fe2 Refactoring various usages of new IPAddr class.
Reducing number of places that internal representation was exposed
via GetBytes/CopyIPv6.

Also fixed a bug in remask_addr bif.
2012-02-22 14:45:44 -06:00
Jon Siwek
b66b74e5dc Decrease strictness of parsing IPv4 strings into addrs. (fixes #775)
IPv4 strings in dotted-decimal format with decimal parts containing
leading zeroes now parse better.
2012-02-20 14:28:42 -06:00
Jon Siwek
086f747bc1 Add counts_to_addr and addr_to_counts conversion BIFs. 2012-02-09 15:32:57 -06:00
Daniel Thayer
d3e432e8dd Add a test and baseline for addr_to_ptr_name BiF. 2012-02-08 11:23:02 -06:00
Seth Hall
161ad1a3df Adding a test and baseline for ptr_name_to_addr BiF. 2012-02-07 20:57:18 -05:00
Jon Siwek
b3f1f45082 Remove --enable-brov6 flag, IPv6 now supported by default.
Internally, all BROv6 preprocessor switches were removed and
addr/subnet representations wrapped in the new IPAddr/IPPrefix classes.

Some script-layer changes of note:

- dns_AAAA_reply event signature changed: the string representation
  of an IPv6 addr is easily derived from the addr value, it doesn't
  need to be another parameter.  This event also now generated directly
  by the DNS analyzer instead of being "faked" into a dns_A_reply event.

- removed addr_to_count BIF.  It used to return the host-order
  count representation of IPv4 addresses only.  To make it more
  generic, we might later add a BIF to return a vector of counts
  in order to support IPv6.

- changed the result of enclosing addr variables in vertical pipes
  (e.g. |my_addr|) to return the bit-width of the address type which
  is 128 for IPv6 and 32 for IPv4.  It used to function the same
  way as addr_to_count mentioned above.

- remove bro_has_ipv6 BIF
2012-02-03 16:46:58 -06:00
Jon Siwek
5865bf3850 Add decode_base64_custom BiF to allow alternate base64 alphabets.
Addresses #670
2011-11-11 13:48:11 -06:00
Gilbert Clark gc355804@ohio.edu
7bea71a2c2 Updated uid pools to use integer values instead of strings. 2011-08-15 15:47:39 -07:00
Gilbert Clark gc355804@ohio.edu
d46525dcca Merge branch 'master' into topic/gilbert/rand-pool 2011-08-14 22:21:59 -07:00
Gilbert Clark gc355804@ohio.edu
8feae0b7a7 Test no longer relevant. Need a way to generate and test collisions. 2011-08-09 09:47:47 -07:00
Seth Hall
3437220fe3 piped_exec can now write nulls in the "to_write" argument.
- Additional test for testing writing null values.
2011-08-09 09:51:03 -04:00
Gilbert Clark gc355804@ohio.edu
df142b9c4b Testing long (>32 character) pool names. 2011-08-08 23:16:16 -07:00
Gilbert Clark gc355804@ohio.edu
90bad36e49 Simple test to verify various pools are not affecting each other. 2011-08-08 22:50:36 -07:00
Gilbert Clark gc355804@ohio.edu
9322c063cc Some working code. Adds UID pools classified by string. Just compiles
and runs; need to go back through and make sure this code is actually
doing what I want it to do.

Note: Added new function unique_id_from(pool: string, prefix: string)
that allows the user to explicitly specify a randomness pool to use when
generating unique IDs.
2011-08-08 22:12:40 -07:00
Robin Sommer
d8aece07d7 Merge remote-tracking branch 'origin/topic/jsiwek/raw_output'
* origin/topic/jsiwek/raw_output:
  Fix &raw_output and enable_raw_output interpretation of NUL characters
2011-08-03 16:27:52 -07:00
Jon Siwek
648e1bda26 Fix &raw_output and enable_raw_output interpretation of NUL characters
When using a `print` statement to write to a file that has raw output
enabled, NUL characters in string are no longer interpreted into "\0",
no newline is appended afterwards, and each argument to `print` is
written to the file without any additional separation.

(Re)Assigning to identifiers with the &raw_output attribute should also
now correctly apply the attribute to the file value being assigned.

Note that the write_file BiF should already be capable of raw string
data to a file, expect it bypasses the print_hook event.

Addresses #474
2011-08-03 10:51:40 -05:00
Jon Siwek
d6d34f3a1f Fix PktSrc::Statistics returning bogus stats.
When reading from trace files, 'dropped' and 'link' fields are now
just zeroed.

When reading from an interface, the values filled in by pcap_stats()
are now only used when that function indicates success.

Closes #500.
2011-08-01 16:49:43 -05:00
Robin Sommer
0e5bc16a60 Merge remote-tracking branch 'origin/topic/jsiwek/mask_addr_rval'
* origin/topic/jsiwek/mask_addr_rval:
  mask_addr bif now returns subnet (addresses #512)
2011-07-28 17:11:15 -07:00
Jon Siwek
19dab4fdda Add new piped_exec BiF.
And changing email_notice_to() function in notice framework to
interface with sendmail through it.
2011-07-27 13:52:24 -05:00
Jon Siwek
b6a371f32d mask_addr bif now returns subnet (addresses #512) 2011-07-23 16:45:29 -05:00
Robin Sommer
8bacb6eb3d New BiF record_field_vals() that returns the fields of a record in a
table with meta-information.

Example:

type r: record {
	a: count;
	b: string &default="Foo";
	c: double &optional;
	d: string &log;
};

event bro_init()
{
    local x: r = [$a=42, $d="Bar"];
    print record_fields(x);
}

This prints:

  {
  [a] = [type_name=record, log=F, value=42, default_val=<uninitialized>]
  [b] = [type_name=record, log=F, value=<uninitialized>, default_val=Foo],
  [c] = [type_name=record, log=F, value=<uninitialized>, default_val=<uninitialized>],
  [d] = [type_name=record, log=T, value=Bar, default_val=<uninitialized>],
  }

This is one more step in Seth's quest for full inspection support. :-)
2011-07-07 19:56:48 -07:00
Robin Sommer
9709b1d522 Merge remote branch 'origin/topic/robin/reporting'
* origin/topic/robin/reporting:
  Syslog BiF now goes through the reporter as well.
  Avoiding infinite loops when an error message handlers triggers errors itself.
  Renaming the Logger to Reporter.
  Overhauling the internal reporting of messages to the user.

Updating a bunch of tests/baselines as well.

Conflicts:
	aux/broccoli
	policy.old/alarm.bro
	policy/all.bro
	policy/bro.init
	policy/frameworks/notice/weird.bro
	policy/notice.bro
	src/SSL-binpac.cc
	src/bro.bif
	src/main.cc
2011-07-01 13:59:21 -07:00
Jon Siwek
90196b4dc8 Fix bifs.unique_id-rnd test failing because of wc output formatting 2011-06-10 13:27:08 -05:00