Merge remote-tracking branch 'origin/topic/seth/pf_ring_support'

* origin/topic/seth/pf_ring_support:
  Added pf_ring load balancing support to the scripting layer.
This commit is contained in:
Seth Hall 2011-09-06 15:20:22 -04:00
commit eda2245e9e
2 changed files with 32 additions and 0 deletions

View file

@ -0,0 +1,22 @@
##! This script adds the necessary environment variables for Bro to make use
##! of PF_RING's clustering (and load balancing) support through the libpcap
##! wrapper.
module PFRing;
export {
## Define the pf_ring cluster ID that you would like this instance
## of Bro to use. Please set a value from 0 to 255
const cluster_id = 150 &redef;
}
event bro_init() &priority=10
{
if ( cluster_id > 255 || cluster_id < 0 )
Reporter::fatal(fmt("%d is an invalid value for PFRing::cluster_id", cluster_id));
if ( ! setenv("PCAP_PF_RING_USE_CLUSTER_PER_FLOW", "1") ||
! setenv("PCAP_PF_RING_CLUSTER_ID", fmt("%d", cluster_id)) )
Reporter::fatal("Unable to set one or both of the PF_RING environment variables.");
}

View file

@ -791,6 +791,16 @@ function getenv%(var: string%): string
return new StringVal(env_val);
%}
function setenv%(var: string, val: string%): bool
%{
int result = setenv(var->AsString()->CheckString(),
val->AsString()->CheckString(), 1);
if ( result < 0 )
return new Val(0, TYPE_BOOL);
return new Val(1, TYPE_BOOL);
%}
function sqrt%(x: double%): double
%{
if ( x < 0 )