[Bro] Broadcast detection

Robin Sommer robin at icir.org
Thu Aug 27 08:03:21 PDT 2015

On Wed, Aug 26, 2015 at 18:12 -0700, anthony kasza wrote:

> I'm looking to write a bif which does this. How can I access a subnet's
> prefix as an int?

snet->Prefix() yields an IPAddr. You don't easily get that as an int,
but it has a method for getting it as a sequence of bytes:

    int GetBytes(const uint32_t** bytes)

That works for both IPv4 and v6.

That said, I think you can solve this more easily by combining some
other methods that IPAddr offers as well:

         * Masks out lower bits of the address.
        void Mask(int top_bits_to_keep);

         * Masks out top bits of the address.
        void ReverseMask(int top_bits_to_chop);

         * Bitwise OR operator returns the IP address resulting from the bitwise
         * OR operation on the raw bytes of this address with another.
       IPAddr operator|(const IPAddr& other)

You'd mask out the lower bits of the prefix, mask out the upper bits
of (for IPv4), and then "or" the two together.


Robin Sommer * ICSI/LBNL * robin at icir.org * www.icir.org/robin

More information about the Bro mailing list