[packages] net-snmp: Add support for IPv6 'com2sec6'
[packages.git] / net / net-snmp / files / snmpd.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008 OpenWrt.org
3 START=50
4
5 DEFAULT=/etc/default/snmpd
6 LIB_D=/var/lib/snmp
7 LOG_D=/var/log
8 RUN_D=/var/run
9 PID_F=$RUN_D/snmpd.pid
10 RUN_C=$RUN_D/snmpd.conf
11
12 snmpd_agent_add() {
13         local cfg="$1"
14
15         config_get agentaddress "$cfg" agentaddress
16         [ -n "$agentaddress" ] || return 0
17         echo "agentaddress $agentaddress" >> $RUN_C
18 }
19 snmpd_system_add() {
20         local cfg="$1"
21         config_get syslocation "$cfg" sysLocation
22         [ -n "$syslocation" ] && echo "sysLocation $syslocation" >> $RUN_C
23         config_get syscontact "$cfg" sysContact
24         [ -n "$syscontact" ] && echo "sysContact $syscontact" >> $RUN_C
25         config_get sysname "$cfg" sysName
26         [ -n "$sysname" ] && echo "sysName $sysname" >> $RUN_C
27         config_get sysservice "$cfg" sysService
28         [ -n "$sysservice" ] && echo "sysService $sysservice" >> $RUN_C
29         config_get sysdescr "$cfg" sysDescr
30         [ -n "$sysdescr" ] && echo "sysDescr $sysdescr" >> $RUN_C
31         config_get sysobjectid "$cfg" sysObjectID
32         [ -n "$sysobjectid" ] && echo "sysObjectID $sysobjectid" >> $RUN_C
33 }
34 snmpd_com2sec_add() {
35         local cfg="$1"
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" >> $RUN_C
43 }
44 snmpd_com2sec6_add() {
45         local cfg="$1"
46         config_get secname "$cfg" secname
47         [ -n "$secname" ] || return 0
48         config_get source "$cfg" source
49         [ -n "$source" ] || return 0
50         config_get community "$cfg" community
51         [ -n "$community" ] || return 0
52         echo "com2sec6 $secname $source $community" >> $RUN_C
53 }
54 snmpd_group_add() {
55         local cfg="$1"
56         config_get group "$cfg" group
57         [ -n "$group" ] || return 0
58         config_get version "$cfg" version
59         [ -n "$version" ] || return 0
60         config_get secname "$cfg" secname
61         [ -n "$secname" ] || return 0
62         echo "group $group $version $secname" >> $RUN_C
63 }
64 snmpd_view_add() {
65         local cfg="$1"
66         config_get viewname "$cfg" viewname
67         [ -n "$viewname" ] || return 0
68         config_get type "$cfg" type
69         [ -n "$type" ] || return 0
70         config_get oid "$cfg" oid
71         [ -n "$oid" ] || return 0
72         # optional mask
73         config_get mask "$cfg" mask
74         echo "view $viewname $type $oid $mask" >> $RUN_C
75 }
76 snmpd_access_add() {
77         local cfg="$1"
78         config_get group "$cfg" group
79         [ -n "$group" ] || return 0
80         config_get context "$cfg" context
81         [ -n $context ] || return 0
82         [ "$context" == "none" ] && context='""'
83         config_get version "$cfg" version
84         [ -n "$version" ] || return 0
85         config_get level "$cfg" level
86         [ -n "$level" ] || return 0
87         config_get prefix "$cfg" prefix
88         [ -n "$prefix" ] || return 0
89         config_get read "$cfg" read
90         [ -n "$read" ] || return 0
91         config_get write "$cfg" write
92         [ -n "$write" ] || return 0
93         config_get notify "$cfg" notify
94         [ -n "$notify" ] || return 0
95         echo "access $group $context $version $level $prefix $read $write $notify" >> $RUN_C
96 }
97 snmpd_pass_add() {
98         local cfg="$1"
99         local pass='pass'
100
101         config_get miboid "$cfg" miboid
102         [ -n "$miboid" ] || return 0
103         config_get prog "$cfg" prog
104         [ -n "$prog" ] || return 0
105         config_get_bool persist "$cfg" persist 0
106         [ $persist -ne 0 ] && pass='pass_persist'
107         config_get priority "$cfg" priority
108         priority=${priority:+-p $priority}
109         echo "$pass $priority $miboid $prog" >> $RUN_C
110 }
111 snmpd_exec_add() {
112         local cfg="$1"
113
114         config_get name "$cfg" name
115         [ -n "$name" ] || return 0
116         config_get prog "$cfg" prog
117         [ -n "$prog" ] || return 0
118         config_get args "$cfg" args
119         config_get miboid "$cfg" miboid
120         echo "exec $miboid $name $prog $args" >> $RUN_C
121 }
122 start() {
123         [ -d $LIB_D ] || mkdir -p $LIB_D
124         [ -d $LOG_D ] || mkdir -p $LOG_D
125         [ -d $RUN_D ] || mkdir -p $RUN_D
126         [ -f $RUN_C ] && rm -f $RUN_C
127
128         config_load snmpd
129
130         config_foreach snmpd_agent_add agent
131         config_foreach snmpd_system_add system
132         config_foreach snmpd_com2sec_add com2sec
133         config_foreach snmpd_com2sec6_add com2sec6
134         config_foreach snmpd_group_add group
135         config_foreach snmpd_view_add view
136         config_foreach snmpd_access_add access
137         config_foreach snmpd_pass_add pass
138         config_foreach snmpd_exec_add exec
139
140         [ -f $DEFAULT ] && . $DEFAULT
141         $DEBUG /usr/sbin/snmpd $OPTIONS
142 }
143 stop() {
144         [ -f $PID_F ] && kill $(cat $PID_F)
145         [ -f $RUN_C ] && rm -f $RUN_C
146 }