[Bro-Dev] #372: bifcl cannot pass specific enum types

Bro Tracker bro at tracker.icir.org
Fri Feb 4 16:04:19 PST 2011

#372: bifcl cannot pass specific enum types
  Reporter:  robin    |      Owner:
      Type:  Problem  |     Status:  new
  Priority:  Normal   |  Milestone:  Bro1.6
 Component:  Bro      |    Version:
Resolution:           |   Keywords:  logging

Comment (by gregor):


 How use enums in C++, bif, and .bro

 That's actually pretty straight forward. The functionality has been in Bro
 for quite a while but it has been scarcely used.

 In ``const.bif`` you can define enums. These are then available in the
 policy layer as well
 as in the C++/bif layer. E.g.,::

   enum foobar %{

 Will make the enum ``foobar`` available in the policy layer.

 For the C++ layer the bif will automatically the following code that is
 included in ``NetVar.h`` (and also the necessary initialization code)::

    extern EnumType* enum_foobar;
    namespace BroEnum { enum foobar {

 Some code snippets showing how you can make use of those in C++ and bif::

   BroEnum::foobar x;
   x = BroEnum::foo;
   if (x == BroEnum::bar)

   EnumVal *y = new EnumVal(x, enum_foobar);
   EnumVal *z = new EnumVal(BroEnum::bar, enum_foobar);
   // y and z can now be passed to an event or returned from a bif.
   // In the policy script the type would be foobar.


Ticket URL: <http://tracker.icir.org/bro/ticket/372#comment:3>
Bro Tracker <http://tracker.icir.org/bro>
Bro Issue Tracker

More information about the bro-dev mailing list