#!/bin/sh /etc/rc.common # Copyright (C) 2013 OpenWrt.org # start after and stop before networking START=12 STOP=89 USE_PROCD=1 PROG=/sbin/logread validate_log_section() { uci_validate_section system system "${1}" \ 'log_file:string' \ 'log_size:uinteger' \ 'log_ip:ipaddr' \ 'log_port:port:514' \ 'log_proto:or("tcp", "udp"):udp' \ 'log_prefix:string' return $? } start_service_file() { local pid_file="/var/run/logread.${PIDCOUNT}.pid" local log_file log_size validate_log_section "${1}" || { echo "validation failed" return 1 } [ -z "${log_file}" ] && return procd_open_instance procd_set_param command "$PROG" -f -F "$log_file" -p "$pid_file" [ -n "${log_size}" ] && procd_append_param command -S "$log_size" procd_close_instance } start_service_remote() { local pid_file="/var/run/logread.${PIDCOUNT}.pid" local log_ip log_port log_proto log_prefix validate_log_section "${1}" || { echo "validation failed" return 1 } [ -z "${log_ip}" ] && return procd_open_instance procd_set_param command "$PROG" -f -r "$log_ip" "${log_port}" -p "$pid_file" [ "${log_proto}" != "udp" ] || procd_append_param command -u [ -z "${log_prefix}" ] || procd_append_param command -P ${log_prefix} procd_close_instance } service_triggers() { procd_add_config_trigger "system" "/etc/init.d/log" "start" procd_add_validation validate_log_section } start_service() { procd_open_instance procd_set_param command "/sbin/logd" procd_set_param respawn procd_close_instance config_load system config_foreach start_service_file system config_foreach start_service_remote system }