1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008 OpenWrt.org
8 CONFIGFILE
="/var/run/snmpd.conf"
13 config_get agentaddress
"$cfg" agentaddress
14 [ -n "$agentaddress" ] ||
return 0
15 echo "agentaddress $agentaddress" >> $CONFIGFILE
20 config_get syslocation
"$cfg" sysLocation
21 [ -n "$syslocation" ] && echo "sysLocation $syslocation" >> $CONFIGFILE
22 config_get syscontact
"$cfg" sysContact
23 [ -n "$syscontact" ] && echo "sysContact $syscontact" >> $CONFIGFILE
24 config_get sysname
"$cfg" sysName
25 [ -n "$sysname" ] && echo "sysName $sysname" >> $CONFIGFILE
26 config_get sysservice
"$cfg" sysService
27 [ -n "$sysservice" ] && echo "sysService $sysservice" >> $CONFIGFILE
28 config_get sysdescr
"$cfg" sysDescr
29 [ -n "$sysdescr" ] && echo "sysDescr $sysdescr" >> $CONFIGFILE
30 config_get sysobjectid
"$cfg" sysObjectID
31 [ -n "$sysobjectid" ] && echo "sysObjectID $sysobjectid" >> $CONFIGFILE
36 config_get secname
"$cfg" secname
37 [ -n "$secname" ] ||
return 0
38 config_get
source "$cfg" source
39 [ -n "$source" ] ||
return 0
40 config_get community
"$cfg" community
41 [ -n "$community" ] ||
return 0
42 echo "com2sec $secname $source $community" >> $CONFIGFILE
45 snmpd_com2sec6_add
() {
47 config_get secname
"$cfg" secname
48 [ -n "$secname" ] ||
return 0
49 config_get
source "$cfg" source
50 [ -n "$source" ] ||
return 0
51 config_get community
"$cfg" community
52 [ -n "$community" ] ||
return 0
53 echo "com2sec6 $secname $source $community" >> $CONFIGFILE
58 config_get group
"$cfg" group
59 [ -n "$group" ] ||
return 0
60 config_get version
"$cfg" version
61 [ -n "$version" ] ||
return 0
62 config_get secname
"$cfg" secname
63 [ -n "$secname" ] ||
return 0
64 echo "group $group $version $secname" >> $CONFIGFILE
69 config_get viewname
"$cfg" viewname
70 [ -n "$viewname" ] ||
return 0
71 config_get
type "$cfg" type
72 [ -n "$type" ] ||
return 0
73 config_get oid
"$cfg" oid
74 [ -n "$oid" ] ||
return 0
76 config_get mask
"$cfg" mask
77 echo "view $viewname $type $oid $mask" >> $CONFIGFILE
82 config_get group
"$cfg" group
83 [ -n "$group" ] ||
return 0
84 config_get context
"$cfg" context
85 [ -n $context ] ||
return 0
86 [ "$context" == "none" ] && context
='""'
87 config_get version
"$cfg" version
88 [ -n "$version" ] ||
return 0
89 config_get level
"$cfg" level
90 [ -n "$level" ] ||
return 0
91 config_get prefix
"$cfg" prefix
92 [ -n "$prefix" ] ||
return 0
93 config_get
read "$cfg" read
94 [ -n "$read" ] ||
return 0
95 config_get
write "$cfg" write
96 [ -n "$write" ] ||
return 0
97 config_get notify
"$cfg" notify
98 [ -n "$notify" ] ||
return 0
99 echo "access $group $context $version $level $prefix $read $write $notify" >> $CONFIGFILE
102 snmpd_trap_hostname_add
() {
104 config_get hostname
"$cfg" HostName
105 config_get port
"$cfg" Port
106 config_get community
"$cfg" Community
107 config_get
type "$cfg" Type
108 echo "$type $hostname $community $port" >> $CONFIGFILE
111 snmpd_trap_ip_add
() {
113 config_get host_ip
"$cfg" HostIP
114 config_get port
"$cfg" Port
115 config_get community
"$cfg" Community
116 config_get
type "$cfg" Type
117 echo "$type $host_ip $community $port" >> $CONFIGFILE
120 snmpd_access_default_add
() {
122 config_get mode
"$cfg" Mode
123 config_get community
"$cfg" CommunityName
124 config_get oidrestrict
"$cfg" RestrictOID
125 config_get oid
"$cfg" RestrictedOID
126 echo -n "$mode $community default" >> $CONFIGFILE
127 [ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
128 [ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
131 snmpd_access_HostName_add
() {
133 config_get hostname
"$cfg" HostName
134 config_get mode
"$cfg" Mode
135 config_get community
"$cfg" CommunityName
136 config_get oidrestrict
"$cfg" RestrictOID
137 config_get oid
"$cfg" RestrictedOID
138 echo -n "$mode $community $hostname" >> $CONFIGFILE
139 [ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
140 [ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
143 snmpd_access_HostIP_add
() {
145 config_get host_ip
"$cfg" HostIP
146 config_get ip_mask
"$cfg" IPMask
147 config_get mode
"$cfg" Mode
148 config_get community
"$cfg" CommunityName
149 config_get oidrestrict
"$cfg" RestrictOID
150 config_get oid
"$cfg" RestrictedOID
151 echo -n "$mode $community $host_ip/$ip_mask" >> $CONFIGFILE
152 [ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
153 [ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
160 config_get miboid
"$cfg" miboid
161 [ -n "$miboid" ] ||
return 0
162 config_get prog
"$cfg" prog
163 [ -n "$prog" ] ||
return 0
164 config_get_bool persist
"$cfg" persist
0
165 [ $persist -ne 0 ] && pass
='pass_persist'
166 config_get priority
"$cfg" priority
167 priority
=${priority:+-p $priority}
168 echo "$pass $priority $miboid $prog" >> $CONFIGFILE
174 config_get name
"$cfg" name
175 [ -n "$name" ] ||
return 0
176 config_get prog
"$cfg" prog
177 [ -n "$prog" ] ||
return 0
178 config_get args
"$cfg" args
179 config_get miboid
"$cfg" miboid
180 echo "exec $miboid $name $prog $args" >> $CONFIGFILE
187 config_get partition
"$cfg" partition
188 [ -n "$partition" ] ||
return 0
189 config_get size
"$cfg" size
190 [ -n "$size" ] ||
return 0
191 echo "$disk $partition $size" >> $CONFIGFILE
195 [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
201 config_foreach snmpd_agent_add agent
202 config_foreach snmpd_system_add system
203 config_foreach snmpd_com2sec_add com2sec
204 config_foreach snmpd_com2sec6_add com2sec6
205 config_foreach snmpd_group_add group
206 config_foreach snmpd_view_add view
207 config_foreach snmpd_access_add access
208 config_foreach snmpd_trap_hostname_add trap_HostName
209 config_foreach snmpd_trap_ip_add trap_HostIP
210 config_foreach snmpd_access_default_add access_default
211 config_foreach snmpd_access_HostName_add access_HostName
212 config_foreach snmpd_access_HostIP_add access_HostIP
213 config_foreach snmpd_pass_add pass
214 config_foreach snmpd_exec_add
exec
215 config_foreach snmpd_disk_add disk
217 procd_set_param
command $PROG -Lf /dev
/null
-f
218 procd_set_param
file $CONFIGFILE
219 procd_set_param respawn
221 for iface
in $
(ls /sys
/class
/net
2>/dev
/null
); do
222 procd_append_param netdev
"$iface"
229 [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
233 local script=$
(readlink
"$initscript")
234 local name
=$
(basename ${script:-$initscript})
237 procd_add_raw_trigger
"interface.*" 2000 /etc
/init.d
/$name reload
240 procd_add_reload_trigger
'snmpd'