83eb2c3700
literal name_enable wherever possible, and ${name}_enable when it's not, to prepare for the demise of set_rcvar(). In cases where I had to hand-edit unusual instances also modify formatting slightly to be more uniform (and in some cases, correct). This includes adding some $FreeBSD$ tags, and most importantly moving rcvar= to right after name= so it's clear that one is derived from the other.
104 lines
2.9 KiB
Bash
104 lines
2.9 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: flow_fanout
|
|
# REQUIRE: DAEMON
|
|
# KEYWORD: shutdown
|
|
|
|
#
|
|
# Add the following line to /etc/rc.conf to enable flow-fanout:
|
|
# flow_fanout_enable (bool): Set it to "YES" to enable flow-fanout daemon.
|
|
# Set to "NO" by default.
|
|
# flow_fanout_ip (str): IP address to bind to
|
|
# Default to "0.0.0.0"
|
|
# flow_fanout_remoteip (str): IP address to accept flows from
|
|
# Default to "0.0.0.0" or all IPs
|
|
# flow_fanout_port (int): Port to accept flow data on
|
|
# Default is "8787"
|
|
# flow_fanout_export (str): Where to send flows to. Default is "0/0/8788"
|
|
# flow_fanout_flags (str): Custom additional arguments to be passed
|
|
# to flow-collector (default "").
|
|
# flow_fanout_profiles (str): A list of configuration profiles to enable.
|
|
# This allows you to run several instances of
|
|
# flow-fanout with different parameters.
|
|
# Consider the following example:
|
|
# flow_fanout_enable="YES"
|
|
# flow_fanout_ip="85.172.168.9"
|
|
# flow_fanout_profiles="r1 r2"
|
|
# flow_fanout_r1_port="4444"
|
|
# flow_fanout_r1_export="0/0/9500 0/10.5.5.5/9200"
|
|
# flow_fanout_r2_port="4445"
|
|
# flow_fanout_r2_export="0/0/9551 0/0/9101"
|
|
#
|
|
# This will run two instances of the flow-fanout
|
|
# with parameters taken from appropriate
|
|
# flow_fanout_PROFILENAME_xxx variables. For
|
|
# unspecified parameters flow_fanout_xxx
|
|
# varialbes will be used.
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="flow_fanout"
|
|
rcvar=flow_fanout_enable
|
|
|
|
setup_profile_vars()
|
|
{
|
|
name=flow_fanout_$1
|
|
eval ": \${flow_fanout_${1}_ip=${flow_fanout_ip}}"
|
|
eval ": \${flow_fanout_${1}_remoteip=${flow_fanout_remoteip}}"
|
|
eval ": \${flow_fanout_${1}_port=${flow_fanout_port}}"
|
|
eval ": \${flow_fanout_${1}_export=${flow_fanout_export}}"
|
|
eval ": \${flow_fanout_${1}_flags=${flow_fanout_flags}}"
|
|
eval "pidfile=${flow_fanout_pid}.\${flow_fanout_${1}_port}"
|
|
eval "command_args=\"-p ${flow_fanout_pid} \${flow_fanout_${1}_ip}/\${flow_fanout_${1}_remoteip}/\${flow_fanout_${1}_port} \${flow_fanout_${1}_export}\""
|
|
}
|
|
|
|
start_profiles()
|
|
{
|
|
unset start_cmd
|
|
for _profile in ${flow_fanout_profiles}; do
|
|
setup_profile_vars $_profile
|
|
run_rc_command "${rc_arg}"
|
|
done
|
|
}
|
|
|
|
stop_profiles()
|
|
{
|
|
unset stop_cmd
|
|
for _profile in ${flow_fanout_profiles}; do
|
|
setup_profile_vars $_profile
|
|
run_rc_command "${rc_arg}"
|
|
done
|
|
}
|
|
|
|
load_rc_config $name
|
|
|
|
: ${flow_fanout_enable="NO"}
|
|
: ${flow_fanout_ip="0.0.0.0"}
|
|
: ${flow_fanout_remoteip="0.0.0.0"}
|
|
: ${flow_fanout_port="8787"}
|
|
: ${flow_fanout_export="0/0/8788"}
|
|
: ${flow_fanout_pid="%%FLOW_CAPTURE_PIDDIR%%/flow-fanout.pid"}
|
|
: ${flow_fanout_user="flowtools"}
|
|
: ${flow_fanout_group="flowtools"}
|
|
|
|
pidfile="${flow_fanout_pid}.${flow_fanout_port}"
|
|
|
|
command="%%PREFIX%%/bin/flow-fanout"
|
|
command_args="-p ${flow_fanout_pid} ${flow_fanout_ip}/${flow_fanout_remoteip}/${flow_fanout_port} ${flow_fanout_export}"
|
|
|
|
cmd="$1"
|
|
if [ $# -gt 0 ]; then
|
|
shift
|
|
fi
|
|
|
|
[ -n "$*" ] && flow_fanout_profiles="$*"
|
|
|
|
if [ "${flow_fanout_profiles}" ]; then
|
|
start_cmd="start_profiles"
|
|
stop_cmd="stop_profiles"
|
|
fi
|
|
|
|
run_rc_command "$cmd"
|