[Bro-Dev] more set operators? (equality/subset)
Johanna Amann
johanna at icir.org
Fri Jun 29 08:52:01 PDT 2018
On Sun, Jun 24, 2018 at 07:07:06PM -0700, Vern Paxson wrote:
> s1 == s2 iff both sets have exactly the same members
>
> s1 < s2 iff every element in s1 is in s2, but s2 has some
> elements not in s1
[...]
> Any concerns with adding these too?
I actually have a small question when thinking about these - which I
should already have raised about the intersect operators. What happens
when sets contain records or other complex types in these cases?
>From what I can tell, Bro so far refuses to compare records - the reason
being that (I think) we do not have properly implemented comparison
operators internally. For example, the following script:
type A: record {
a: string;
};
event bro_init()
{
local i = A($a="a");
local j = A($a="a");
print i == j;
}
outputs:
$ bro test.bro
error in ./test.bro, line 9: illegal comparison (i == j)
I assume what will at the moment happen with sets is that the pointers of
records are checked for equality - not the content. Which might arguably
be a bit non-intuitive.
As I said this is more of a concern about the already added operators - in
principle I don't have a problem with ==, but I think it should work for
other complex datatypes too.
Johanna
More information about the bro-dev
mailing list