#!/bin/sh /etc/rc.common # Copyright (C) 2012 OpenWrt.org START=50 SERVICE_USE_PID=1 start() { config_load hsflowd local args agent conffile dnssd polling sampling uuid getcollectors() { echo " collector {" >> $tmpconf config_get ip "$1" ip [ -n "$ip" ] && echo " ip=${ip}" >> $tmpconf config_get port "$1" port [ -n "$port" ] && echo " udpport=${port}" >> $tmpconf echo " }" >> $tmpconf } config_get agent config agent_iface "br-lan" config_get conffile config config_file config_get_bool dnssd config dnssd 1 config_get polling config polling 30 config_get sampling config sampling 512 config_get uuid config uuid [ -z "$uuid" ] && { uuid="$(cat /proc/sys/kernel/random/uuid)" uci set hsflowd.config.uuid=$uuid uci commit hsflowd } args="" append args "-u $uuid" if [ -n "$conffile" ]; then append args "-f $conffile" else tmpconf="/var/etc/hsflowd.conf" append args "-f $tmpconf" mkdir -p /var/etc echo "sFlow {" > $tmpconf echo " agent=${agent}" >> $tmpconf if [ "$dnssd" -eq 1 ]; then echo " DNSSD=on" >> $tmpconf else echo " DNSSD=off" >> $tmpconf echo " polling=${polling}" >> $tmpconf echo " sampling=${sampling}" >> $tmpconf config_foreach getcollectors collector fi echo "}" >> $tmpconf fi service_start /usr/sbin/hsflowd $args } stop() { service_stop /usr/sbin/hsflowd pid_file="/var/run/hsflowd.pid" [ -f "$pid_file" ] && rm -f "$pid_file" }