lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

snmpd.init (7493B)


      1 #!/bin/sh /etc/rc.common
      2 # Copyright (C) 2008 OpenWrt.org
      3 START=50
      4 
      5 USE_PROCD=1
      6 PROG="/usr/sbin/snmpd"
      7 
      8 CONFIGFILE="/var/run/snmpd.conf"
      9 
     10 snmpd_agent_add() {
     11 	local cfg="$1"
     12 
     13 	config_get agentaddress "$cfg" agentaddress
     14 	[ -n "$agentaddress" ] || return 0
     15 	echo "agentaddress $agentaddress" >> $CONFIGFILE
     16 }
     17 
     18 snmpd_agentx_add() {
     19 	local cfg="$1"
     20 	echo "master agentx" >> $CONFIGFILE
     21 	config_get agentxsocket "$cfg" agentxsocket
     22 	[ -n "$agentxsocket" ] && echo "agentXSocket $agentxsocket" >> $CONFIGFILE
     23 }
     24 
     25 snmpd_system_add() {
     26 	local cfg="$1"
     27 	config_get syslocation "$cfg" sysLocation
     28 	[ -n "$syslocation" ] && echo "sysLocation $syslocation" >> $CONFIGFILE
     29 	config_get syscontact "$cfg" sysContact
     30 	[ -n "$syscontact" ] && echo "sysContact $syscontact" >> $CONFIGFILE
     31 	config_get sysname "$cfg" sysName
     32 	[ -n "$sysname" ] && echo "sysName $sysname" >> $CONFIGFILE
     33 	config_get sysservice "$cfg" sysService
     34 	[ -n "$sysservice" ] && echo "sysService $sysservice" >> $CONFIGFILE
     35 	config_get sysdescr "$cfg" sysDescr
     36 	[ -n "$sysdescr" ] && echo "sysDescr $sysdescr" >> $CONFIGFILE
     37 	config_get sysobjectid "$cfg" sysObjectID
     38 	[ -n "$sysobjectid" ] && echo "sysObjectID $sysobjectid" >> $CONFIGFILE
     39 }
     40 
     41 snmpd_com2sec_add() {
     42 	local cfg="$1"
     43 	config_get secname "$cfg" secname
     44 	[ -n "$secname" ] || return 0
     45 	config_get source "$cfg" source
     46 	[ -n "$source" ] || return 0
     47 	config_get community "$cfg" community
     48 	[ -n "$community" ] || return 0
     49 	echo "com2sec $secname $source $community" >> $CONFIGFILE
     50 }
     51 
     52 snmpd_com2sec6_add() {
     53 	local cfg="$1"
     54 	config_get secname "$cfg" secname
     55 	[ -n "$secname" ] || return 0
     56 	config_get source "$cfg" source
     57 	[ -n "$source" ] || return 0
     58 	config_get community "$cfg" community
     59 	[ -n "$community" ] || return 0
     60 	echo "com2sec6 $secname $source $community" >> $CONFIGFILE
     61 }
     62 
     63 snmpd_group_add() {
     64 	local cfg="$1"
     65 	config_get group "$cfg" group
     66 	[ -n "$group" ] || return 0
     67 	config_get version "$cfg" version
     68 	[ -n "$version" ] || return 0
     69 	config_get secname "$cfg" secname
     70 	[ -n "$secname" ] || return 0
     71 	echo "group $group $version $secname" >> $CONFIGFILE
     72 }
     73 
     74 snmpd_view_add() {
     75 	local cfg="$1"
     76 	config_get viewname "$cfg" viewname
     77 	[ -n "$viewname" ] || return 0
     78 	config_get type "$cfg" type
     79 	[ -n "$type" ] || return 0
     80 	config_get oid "$cfg" oid
     81 	[ -n "$oid" ] || return 0
     82 	# optional mask
     83 	config_get mask "$cfg" mask
     84 	echo "view $viewname $type $oid $mask" >> $CONFIGFILE
     85 }
     86 
     87 snmpd_access_add() {
     88 	local cfg="$1"
     89 	config_get group "$cfg" group
     90 	[ -n "$group" ] || return 0
     91 	config_get context "$cfg" context
     92 	[ -n $context ] || return 0
     93 	[ "$context" == "none" ] && context='""'
     94 	config_get version "$cfg" version
     95 	[ -n "$version" ] || return 0
     96 	config_get level "$cfg" level
     97 	[ -n "$level" ] || return 0
     98 	config_get prefix "$cfg" prefix
     99 	[ -n "$prefix" ] || return 0
    100 	config_get read "$cfg" read
    101 	[ -n "$read" ] || return 0
    102 	config_get write "$cfg" write
    103 	[ -n "$write" ] || return 0
    104 	config_get notify "$cfg" notify
    105 	[ -n "$notify" ] || return 0
    106 	echo "access $group $context $version $level $prefix $read $write $notify" >> $CONFIGFILE
    107 }
    108 
    109 snmpd_trap_hostname_add() {
    110 	local cfg="$1"
    111 	config_get hostname "$cfg" HostName
    112 	config_get port "$cfg" Port
    113 	config_get community "$cfg" Community
    114 	config_get type "$cfg" Type
    115 	echo "$type $hostname $community $port" >> $CONFIGFILE
    116 }
    117 
    118 snmpd_trap_ip_add() {
    119 	local cfg="$1"
    120 	config_get host_ip "$cfg" HostIP
    121 	config_get port "$cfg" Port
    122 	config_get community "$cfg" Community
    123 	config_get type "$cfg" Type
    124 	echo "$type $host_ip $community $port" >> $CONFIGFILE
    125 }
    126 
    127 snmpd_access_default_add() {
    128 	local cfg="$1"
    129 	config_get mode "$cfg" Mode
    130 	config_get community "$cfg" CommunityName
    131 	config_get oidrestrict "$cfg" RestrictOID
    132 	config_get oid "$cfg" RestrictedOID
    133 	echo -n "$mode $community default" >> $CONFIGFILE
    134 	[ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
    135 	[ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
    136 }
    137 
    138 snmpd_access_HostName_add() {
    139 	local cfg="$1"
    140 	config_get hostname "$cfg" HostName
    141 	config_get mode "$cfg" Mode
    142 	config_get community "$cfg" CommunityName
    143 	config_get oidrestrict "$cfg" RestrictOID
    144 	config_get oid "$cfg" RestrictedOID
    145 	echo -n "$mode $community $hostname" >> $CONFIGFILE
    146 	[ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
    147 	[ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
    148 }
    149 
    150 snmpd_access_HostIP_add() {
    151 	local cfg="$1"
    152 	config_get host_ip "$cfg" HostIP
    153 	config_get ip_mask "$cfg" IPMask
    154 	config_get mode "$cfg" Mode
    155 	config_get community "$cfg" CommunityName
    156 	config_get oidrestrict "$cfg" RestrictOID
    157 	config_get oid "$cfg" RestrictedOID
    158 	echo -n "$mode $community $host_ip/$ip_mask" >> $CONFIGFILE
    159 	[ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
    160 	[ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
    161 }
    162 
    163 snmpd_pass_add() {
    164 	local cfg="$1"
    165 	local pass='pass'
    166 
    167 	config_get miboid "$cfg" miboid
    168 	[ -n "$miboid" ] || return 0
    169 	config_get prog "$cfg" prog
    170 	[ -n "$prog" ] || return 0
    171 	config_get_bool persist "$cfg" persist 0
    172 	[ $persist -ne 0 ] && pass='pass_persist'
    173 	config_get priority "$cfg" priority
    174 	priority=${priority:+-p $priority}
    175 	echo "$pass $priority $miboid $prog" >> $CONFIGFILE
    176 }
    177 
    178 snmpd_exec_add() {
    179 	local cfg="$1"
    180 
    181 	config_get name "$cfg" name
    182 	[ -n "$name" ] || return 0
    183 	config_get prog "$cfg" prog
    184 	[ -n "$prog" ] || return 0
    185 	config_get args "$cfg" args
    186 	config_get miboid "$cfg" miboid
    187 	echo "exec $miboid $name $prog $args" >> $CONFIGFILE
    188 }
    189 
    190 snmpd_disk_add() {
    191         local cfg="$1"
    192         local disk='disk'
    193 
    194         config_get partition "$cfg" partition
    195         [ -n "$partition" ] || return 0
    196         config_get size "$cfg" size
    197         [ -n "$size" ] || return 0
    198         echo "$disk $partition $size" >> $CONFIGFILE
    199 }
    200 
    201 snmpd_engineid_add() {
    202 	local cfg="$1"
    203 
    204 	config_get engineid "$cfg" engineid
    205 	[ -n "$engineid" ] && echo "engineID $engineid" >> $CONFIGFILE
    206 	config_get engineidtype "$cfg" engineidtype
    207 	[ "$engineidtype" -ge 1 -a "$engineidtype" -le 3 ] && \
    208 		echo "engineIDType $engineidtype" >> $CONFIGFILE
    209 	config_get engineidnic "$cfg" engineidnic
    210 	[ -n "$engineidnic" ] && echo "engineIDNic $engineidnic" >> $CONFIGFILE
    211 }
    212 
    213 start_service() {
    214 	[ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
    215 
    216 	procd_open_instance
    217 
    218 	config_load snmpd
    219 
    220 	config_foreach snmpd_agent_add agent
    221 	config_foreach snmpd_agentx_add agentx
    222 	config_foreach snmpd_system_add system
    223 	config_foreach snmpd_com2sec_add com2sec
    224 	config_foreach snmpd_com2sec6_add com2sec6
    225 	config_foreach snmpd_group_add group
    226 	config_foreach snmpd_view_add view
    227 	config_foreach snmpd_access_add access
    228 	config_foreach snmpd_trap_hostname_add trap_HostName
    229 	config_foreach snmpd_trap_ip_add trap_HostIP
    230 	config_foreach snmpd_access_default_add access_default
    231 	config_foreach snmpd_access_HostName_add access_HostName
    232 	config_foreach snmpd_access_HostIP_add access_HostIP
    233 	config_foreach snmpd_pass_add pass
    234 	config_foreach snmpd_exec_add exec
    235 	config_foreach snmpd_disk_add disk
    236 	config_foreach snmpd_engineid_add engineid
    237 	
    238 	procd_set_param command $PROG -Lf /dev/null -f
    239 	procd_set_param file $CONFIGFILE
    240 	procd_set_param respawn
    241 
    242 	for iface in $(ls /sys/class/net 2>/dev/null); do
    243 		procd_append_param netdev "$iface"
    244 	done
    245 
    246 	procd_close_instance
    247 }
    248 
    249 stop_service() {
    250 	[ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
    251 }
    252 
    253 service_triggers(){
    254 	local script=$(readlink "$initscript")
    255 	local name=$(basename ${script:-$initscript})
    256 
    257 	procd_open_trigger
    258 	procd_add_raw_trigger "interface.*" 2000 /etc/init.d/$name reload
    259 	procd_close_trigger
    260 
    261 	procd_add_reload_trigger 'snmpd'
    262 }