Message ID | 1dddb8b5f6cea9f81f4f1477a5de53c45f246872.1361952867.git.christian.braunersorensen@prevas.dk |
---|---|
State | RFC |
Delegated to: | Jacob Kjaergaard |
Headers | show |
<christian.braunersorensen@prevas.dk> writes: > From: Jacob Barsøe Kjærgaard <jacob.kjaergaard@prevas.dk> > > --- > recipes/net-snmp/files/init | 63 +++ > recipes/net-snmp/files/snmpd.conf | 422 +++++++++++++++++++++ > recipes/net-snmp/files/snmptrapd.conf | 17 + > .../net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch | 65 ++++ > recipes/net-snmp/net-snmp.inc | 41 ++ > recipes/net-snmp/net-snmp_5.7.1.oe | 11 + > recipes/net-snmp/net-snmp_5.7.1.oe.sig | 1 + > 7 files changed, 620 insertions(+) > create mode 100755 recipes/net-snmp/files/init > create mode 100644 recipes/net-snmp/files/snmpd.conf > create mode 100644 recipes/net-snmp/files/snmptrapd.conf > create mode 100644 recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch > create mode 100644 recipes/net-snmp/net-snmp.inc > create mode 100644 recipes/net-snmp/net-snmp_5.7.1.oe > create mode 100644 recipes/net-snmp/net-snmp_5.7.1.oe.sig > > diff --git a/recipes/net-snmp/files/init b/recipes/net-snmp/files/init > new file mode 100755 > index 0000000..434b2fa > --- /dev/null > +++ b/recipes/net-snmp/files/init > @@ -0,0 +1,63 @@ > +#! /bin/sh > +# /etc/init.d/snmpd: start snmp daemon. > + > +test -x /usr/sbin/snmpd || exit 0 > +test -x /usr/sbin/snmptrapd || exit 0 > + > +# Defaults > +export MIBDIRS=/usr/share/snmp/mibs > +SNMPDRUN=yes > +SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid' > +TRAPDRUN=no > +TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid' > + > +# Cd to / before starting any daemons. > +cd / > + > +case "$1" in > + start) > + echo -n "Starting network management services:" > + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then > + start-stop-daemon -S -x /usr/sbin/snmpd \ > + -- $SNMPDOPTS > + echo -n " snmpd" > + fi > + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then > + start-stop-daemon -S -x /usr/sbin/snmptrapd \ > + -- $TRAPDOPTS > + echo -n " snmptrapd" > + fi > + echo "." > + ;; > + stop) > + echo -n "Stopping network management services:" > + start-stop-daemon -K -x /usr/sbin/snmpd > + echo -n " snmpd" > + start-stop-daemon -K -x /usr/sbin/snmptrapd > + echo -n " snmptrapd" > + echo "." > + ;; > + restart|reload|force-reload) > + echo -n "Restarting network management services:" > + start-stop-daemon -K -x /usr/sbin/snmpd > + start-stop-daemon -K -x /usr/sbin/snmptrapd > + # Allow the daemons time to exit completely. > + sleep 2 > + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then > + start-stop-daemon -S -x /usr/sbin/snmpd -- $SNMPDOPTS > + echo -n " snmpd" > + fi > + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then > + # Allow snmpd time to start up. > + sleep 1 > + start-stop-daemon -S -x /usr/sbin/snmptrapd -- $TRAPDOPTS > + echo -n " snmptrapd" > + fi > + echo "." > + ;; > + *) > + echo "Usage: /etc/init.d/snmpd {start|stop|restart|reload|force-reload}" > + exit 1 > +esac > + > +exit 0 > diff --git a/recipes/net-snmp/files/snmpd.conf b/recipes/net-snmp/files/snmpd.conf > new file mode 100644 > index 0000000..4e6b2eb > --- /dev/null > +++ b/recipes/net-snmp/files/snmpd.conf > @@ -0,0 +1,422 @@ > +############################################################################### > +# > +# EXAMPLE.conf: > +# An example configuration file for configuring the ucd-snmp snmpd agent. > +# > +############################################################################### > +# > +# This file is intended to only be an example. If, however, you want > +# to use it, it should be placed in /etc/snmp/snmpd.conf. > +# When the snmpd agent starts up, this is where it will look for it. > +# > +# You might be interested in generating your own snmpd.conf file using > +# the "snmpconf" program (perl script) instead. It's a nice menu > +# based interface to writing well commented configuration files. Try it! > +# > +# Note: This file is automatically generated from EXAMPLE.conf.def. > +# Do NOT read the EXAMPLE.conf.def file! Instead, after you have run > +# configure & make, and then make sure you read the EXAMPLE.conf file > +# instead, as it will tailor itself to your configuration. > + > +# All lines beginning with a '#' are comments and are intended for you > +# to read. All other lines are configuration commands for the agent. > + > +# > +# PLEASE: read the snmpd.conf(5) manual page as well! > +# > + > + > +############################################################################### > +# Access Control > +############################################################################### > + > +# YOU SHOULD CHANGE THE "COMMUNITY" TOKEN BELOW TO A NEW KEYWORD ONLY > +# KNOWN AT YOUR SITE. YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO > +# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE. > + > +# By far, the most common question I get about the agent is "why won't > +# it work?", when really it should be "how do I configure the agent to > +# allow me to access it?" > +# > +# By default, the agent responds to the "public" community for read > +# only access, if run out of the box without any configuration file in > +# place. The following examples show you other ways of configuring > +# the agent so that you can change the community names, and give > +# yourself write access as well. > +# > +# The following lines change the access permissions of the agent so > +# that the COMMUNITY string provides read-only access to your entire > +# NETWORK (EG: 10.10.10.0/24), and read/write access to only the > +# localhost (127.0.0.1, not its real ipaddress). > +# > +# For more information, read the FAQ as well as the snmpd.conf(5) > +# manual page. > + > +#### > +# First, map the community name (COMMUNITY) into a security name > +# (local and mynetwork, depending on where the request is coming > +# from): > + > +# sec.name source community > +com2sec paranoid default public > +#com2sec readonly default public > +#com2sec readwrite default private > + > +#### > +# Second, map the security names into group names: > + > +# sec.model sec.name > +group MyROSystem v1 paranoid > +group MyROSystem v2c paranoid > +group MyROSystem usm paranoid > +group MyROGroup v1 readonly > +group MyROGroup v2c readonly > +group MyROGroup usm readonly > +group MyRWGroup v1 readwrite > +group MyRWGroup v2c readwrite > +group MyRWGroup usm readwrite > + > +#### > +# Third, create a view for us to let the groups have rights to: > + > +# incl/excl subtree mask > +view all included .1 80 > +view system included .iso.org.dod.internet.mgmt.mib-2.system > + > +#### > +# Finally, grant the 2 groups access to the 1 view with different > +# write permissions: > + > +# context sec.model sec.level match read write notif > +access MyROSystem "" any noauth exact system none none > +access MyROGroup "" any noauth exact all none none > +access MyRWGroup "" any noauth exact all all none > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# System contact information > +# > + > +# It is also possible to set the sysContact and sysLocation system > +# variables through the snmpd.conf file. **PLEASE NOTE** that setting > +# the value of these objects here makes these objects READ-ONLY > +# (regardless of any access control settings). Any attempt to set the > +# value of an object whose value is given here will fail with an error > +# status of notWritable. > + > +syslocation Unknown (configure /etc/snmp/snmpd.local.conf) > +syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf) > + > +# Example output of snmpwalk: > +# % snmpwalk -v 1 -c public localhost system > +# system.sysDescr.0 = "SunOS name sun4c" > +# system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.sunos4 > +# system.sysUpTime.0 = Timeticks: (595637548) 68 days, 22:32:55 > +# system.sysContact.0 = "Me <me@somewhere.org>" > +# system.sysName.0 = "name" > +# system.sysLocation.0 = "Right here, right now." > +# system.sysServices.0 = 72 > + > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# Process checks. > +# > +# The following are examples of how to use the agent to check for > +# processes running on the host. The syntax looks something like: > +# > +# proc NAME [MAX=0] [MIN=0] > +# > +# NAME: the name of the process to check for. It must match > +# exactly (ie, http will not find httpd processes). > +# MAX: the maximum number allowed to be running. Defaults to 0. > +# MIN: the minimum number to be running. Defaults to 0. > + > +# > +# Examples: > +# > + > +# Make sure mountd is running > +#proc mountd > + > +# Make sure there are no more than 4 ntalkds running, but 0 is ok too. > +#proc ntalkd 4 > + > +# Make sure at least one sendmail, but less than or equal to 10 are running. > +#proc sendmail 10 1 > + > +# A snmpwalk of the prTable would look something like this: > +# > +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.2 > +# enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1 > +# enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2 > +# enterprises.ucdavis.procTable.prEntry.prIndex.3 = 3 > +# enterprises.ucdavis.procTable.prEntry.prNames.1 = "mountd" > +# enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd" > +# enterprises.ucdavis.procTable.prEntry.prNames.3 = "sendmail" > +# enterprises.ucdavis.procTable.prEntry.prMin.1 = 0 > +# enterprises.ucdavis.procTable.prEntry.prMin.2 = 0 > +# enterprises.ucdavis.procTable.prEntry.prMin.3 = 1 > +# enterprises.ucdavis.procTable.prEntry.prMax.1 = 0 > +# enterprises.ucdavis.procTable.prEntry.prMax.2 = 4 > +# enterprises.ucdavis.procTable.prEntry.prMax.3 = 10 > +# enterprises.ucdavis.procTable.prEntry.prCount.1 = 0 > +# enterprises.ucdavis.procTable.prEntry.prCount.2 = 0 > +# enterprises.ucdavis.procTable.prEntry.prCount.3 = 1 > +# enterprises.ucdavis.procTable.prEntry.prErrorFlag.1 = 1 > +# enterprises.ucdavis.procTable.prEntry.prErrorFlag.2 = 0 > +# enterprises.ucdavis.procTable.prEntry.prErrorFlag.3 = 0 > +# enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No mountd process running." > +# enterprises.ucdavis.procTable.prEntry.prErrMessage.2 = "" > +# enterprises.ucdavis.procTable.prEntry.prErrMessage.3 = "" > +# enterprises.ucdavis.procTable.prEntry.prErrFix.1 = 0 > +# enterprises.ucdavis.procTable.prEntry.prErrFix.2 = 0 > +# enterprises.ucdavis.procTable.prEntry.prErrFix.3 = 0 > +# > +# Note that the errorFlag for mountd is set to 1 because one is not > +# running (in this case an rpc.mountd is, but thats not good enough), > +# and the ErrMessage tells you what's wrong. The configuration > +# imposed in the snmpd.conf file is also shown. > +# > +# Special Case: When the min and max numbers are both 0, it assumes > +# you want a max of infinity and a min of 1. > +# > + > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# Executables/scripts > +# > + > +# > +# You can also have programs run by the agent that return a single > +# line of output and an exit code. Here are two examples. > +# > +# exec NAME PROGRAM [ARGS ...] > +# > +# NAME: A generic name. > +# PROGRAM: The program to run. Include the path! > +# ARGS: optional arguments to be passed to the program > + > +# a simple hello world > +#exec echotest /bin/echo hello world > + > +# Run a shell script containing: > +# > +# #!/bin/sh > +# echo hello world > +# echo hi there > +# exit 35 > +# > +# Note: this has been specifically commented out to prevent > +# accidental security holes due to someone else on your system writing > +# a /tmp/shtest before you do. Uncomment to use it. > +# > +#exec shelltest /bin/sh /tmp/shtest > + > +# Then, > +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8 > +# enterprises.ucdavis.extTable.extEntry.extIndex.1 = 1 > +# enterprises.ucdavis.extTable.extEntry.extIndex.2 = 2 > +# enterprises.ucdavis.extTable.extEntry.extNames.1 = "echotest" > +# enterprises.ucdavis.extTable.extEntry.extNames.2 = "shelltest" > +# enterprises.ucdavis.extTable.extEntry.extCommand.1 = "/bin/echo hello world" > +# enterprises.ucdavis.extTable.extEntry.extCommand.2 = "/bin/sh /tmp/shtest" > +# enterprises.ucdavis.extTable.extEntry.extResult.1 = 0 > +# enterprises.ucdavis.extTable.extEntry.extResult.2 = 35 > +# enterprises.ucdavis.extTable.extEntry.extOutput.1 = "hello world." > +# enterprises.ucdavis.extTable.extEntry.extOutput.2 = "hello world." > +# enterprises.ucdavis.extTable.extEntry.extErrFix.1 = 0 > +# enterprises.ucdavis.extTable.extEntry.extErrFix.2 = 0 > + > +# Note that the second line of the /tmp/shtest shell script is cut > +# off. Also note that the exit status of 35 was returned. > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# disk checks > +# > + > +# The agent can check the amount of available disk space, and make > +# sure it is above a set limit. > + > +# disk PATH [MIN=DEFDISKMINIMUMSPACE] > +# > +# PATH: mount path to the disk in question. > +# MIN: Disks with space below this value will have the Mib's errorFlag set. > +# Default value = DEFDISKMINIMUMSPACE. > + > +# Check the / partition and make sure it contains at least 10 megs. > + > +#disk / 10000 > + > +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.9 > +# enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0 > +# enterprises.ucdavis.diskTable.dskEntry.diskPath.1 = "/" Hex: 2F > +# enterprises.ucdavis.diskTable.dskEntry.diskDevice.1 = "/dev/dsk/c201d6s0" > +# enterprises.ucdavis.diskTable.dskEntry.diskMinimum.1 = 10000 > +# enterprises.ucdavis.diskTable.dskEntry.diskTotal.1 = 837130 > +# enterprises.ucdavis.diskTable.dskEntry.diskAvail.1 = 316325 > +# enterprises.ucdavis.diskTable.dskEntry.diskUsed.1 = 437092 > +# enterprises.ucdavis.diskTable.dskEntry.diskPercent.1 = 58 > +# enterprises.ucdavis.diskTable.dskEntry.diskErrorFlag.1 = 0 > +# enterprises.ucdavis.diskTable.dskEntry.diskErrorMsg.1 = "" > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# load average checks > +# > + > +# load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE] [15MAX=DEFMAXLOADAVE] > +# > +# 1MAX: If the 1 minute load average is above this limit at query > +# time, the errorFlag will be set. > +# 5MAX: Similar, but for 5 min average. > +# 15MAX: Similar, but for 15 min average. > + > +# Check for loads: > +#load 12 14 14 > + > +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.10 > +# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1 > +# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.2 = 2 > +# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.3 = 3 > +# enterprises.ucdavis.loadTable.laEntry.loadaveNames.1 = "Load-1" > +# enterprises.ucdavis.loadTable.laEntry.loadaveNames.2 = "Load-5" > +# enterprises.ucdavis.loadTable.laEntry.loadaveNames.3 = "Load-15" > +# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.1 = "0.49" Hex: 30 2E 34 39 > +# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.2 = "0.31" Hex: 30 2E 33 31 > +# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.3 = "0.26" Hex: 30 2E 32 36 > +# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.1 = "12.00" > +# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.2 = "14.00" > +# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.3 = "14.00" > +# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.1 = 0 > +# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.2 = 0 > +# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.3 = 0 > +# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.1 = "" > +# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.2 = "" > +# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.3 = "" > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# Extensible sections. > +# > + > +# This alleviates the multiple line output problem found in the > +# previous executable mib by placing each mib in its own mib table: > + > +# Run a shell script containing: > +# > +# #!/bin/sh > +# echo hello world > +# echo hi there > +# exit 35 > +# > +# Note: this has been specifically commented out to prevent > +# accidental security holes due to someone else on your system writing > +# a /tmp/shtest before you do. Uncomment to use it. > +# > +# exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest > + > +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.50 > +# enterprises.ucdavis.50.1.1 = 1 > +# enterprises.ucdavis.50.2.1 = "shelltest" > +# enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest" > +# enterprises.ucdavis.50.100.1 = 35 > +# enterprises.ucdavis.50.101.1 = "hello world." > +# enterprises.ucdavis.50.101.2 = "hi there." > +# enterprises.ucdavis.50.102.1 = 0 > + > +# Now the Output has grown to two lines, and we can see the 'hi > +# there.' output as the second line from our shell script. > +# > +# Note that you must alter the mib.txt file to be correct if you want > +# the .50.* outputs above to change to reasonable text descriptions. > + > +# Other ideas: > +# > +# exec .1.3.6.1.4.1.2021.51 ps /bin/ps > +# exec .1.3.6.1.4.1.2021.52 top /usr/local/bin/top > +# exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq > + > +# ----------------------------------------------------------------------------- > + > + > +############################################################################### > +# Pass through control. > +# > + > +# Usage: > +# pass MIBOID EXEC-COMMAND > +# > +# This will pass total control of the mib underneath the MIBOID > +# portion of the mib to the EXEC-COMMAND. > +# > +# Note: You'll have to change the path of the passtest script to your > +# source directory or install it in the given location. > +# > +# Example: (see the script for details) > +# (commented out here since it requires that you place the > +# script in the right location. (its not installed by default)) > + > +# pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/passtest > + > +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.255 > +# enterprises.ucdavis.255.1 = "life the universe and everything" > +# enterprises.ucdavis.255.2.1 = 42 > +# enterprises.ucdavis.255.2.2 = OID: 42.42.42 > +# enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42 > +# enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1 > +# enterprises.ucdavis.255.5 = 42 > +# enterprises.ucdavis.255.6 = Gauge: 42 > +# > +# % snmpget -v 1 -c public localhost .1.3.6.1.4.1.2021.255.5 > +# enterprises.ucdavis.255.5 = 42 > +# > +# % snmpset -v 1 -c public localhost .1.3.6.1.4.1.2021.255.1 s "New string" > +# enterprises.ucdavis.255.1 = "New string" > +# > + > +# For specific usage information, see the man/snmpd.conf.5 manual page > +# as well as the local/passtest script used in the above example. > + > +############################################################################### > +# Subagent control > +# > + > +# The agent can support subagents using a number of extension mechanisms. > +# From the 4.2.1 release, AgentX support is being compiled in by default. > +# However, this is still experimental code, so should not be used on > +# critical production systems. > +# Please see the file README.agentx for more details. > +# > +# If having read, marked, learnt and inwardly digested this information, > +# you decide that you do wish to make use of this mechanism, simply > +# uncomment the following directive. > +# > +# master agentx > +# > +# I repeat - this is *NOT* regarded as suitable for front-line production > +# systems, though it is probably stable enough for day-to-day use. > +# Probably. > +# > +# No refunds will be given. > + > +############################################################################### > +# Further Information > +# > +# See the snmpd.conf manual page, and the output of "snmpd -H". > +# MUCH more can be done with the snmpd.conf than is shown as an > +# example here. > diff --git a/recipes/net-snmp/files/snmptrapd.conf b/recipes/net-snmp/files/snmptrapd.conf > new file mode 100644 > index 0000000..a012a00 > --- /dev/null > +++ b/recipes/net-snmp/files/snmptrapd.conf > @@ -0,0 +1,17 @@ > +############################################################################### > +# > +# EXAMPLE.conf: > +# An example configuration file for configuring the ucd-snmp snmptrapd agent. > +# > +############################################################################### > +# > +# This file is intended to only be an example. If, however, you want > +# to use it, it should be placed in /etc/snmp/snmptrapd.conf. > +# When the snmptrapd agent starts up, this is where it will look for it. > +# > +# All lines beginning with a '#' are comments and are intended for you > +# to read. All other lines are configuration commands for the agent. > + > +# > +# PLEASE: read the snmptrapd.conf(5) manual page as well! > +# > diff --git a/recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch b/recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch > new file mode 100644 > index 0000000..0879e45 > --- /dev/null > +++ b/recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch > @@ -0,0 +1,65 @@ > +--- net-snmp-5.6.1/agent/mibgroup/mibII/tcpTable.c.org 2011-03-27 22:39:13.428728506 +0200 > ++++ net-snmp-5.6.1/agent/mibgroup/mibII/tcpTable.c 2011-03-27 22:39:47.606956561 +0200 > +@@ -555,8 +555,9 @@ > + static int > + tcpTable_load_netlink(void) > + { > ++ int err; > + /* TODO: perhaps use permanent nl handle? */ > +- struct nl_handle *nl = nl_handle_alloc(); > ++ struct nl_sock *nl = nl_socket_alloc(); > + > + if (nl == NULL) { > + DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n")); > +@@ -564,10 +565,10 @@ > + return -1; > + } > + > +- if (nl_connect(nl, NETLINK_INET_DIAG) < 0) { > +- DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror())); > +- snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror()); > +- nl_handle_destroy(nl); > ++ if ((err = nl_connect(nl, NETLINK_INET_DIAG)) < 0) { > ++ DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror(err))); > ++ snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror(err)); > ++ nl_socket_free(nl); > + return -1; > + } > + > +@@ -579,10 +580,10 @@ > + struct nl_msg *nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST); > + nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0); > + > +- if (nl_send_auto_complete(nl, nm) < 0) { > +- DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror())); > +- snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror()); > +- nl_handle_destroy(nl); > ++ if ((err = nl_send_auto_complete(nl, nm)) < 0) { > ++ DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror(err))); > ++ snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror(err)); > ++ nl_socket_free(nl); > + return -1; > + } > + nlmsg_free(nm); > +@@ -593,9 +594,9 @@ > + > + while (running) { > + if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) { > +- DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror())); > +- snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror()); > +- nl_handle_destroy(nl); > ++ DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror(len))); > ++ snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror(len)); > ++ nl_socket_free(nl); > + return -1; > + } > + > +@@ -644,7 +645,7 @@ > + free(buf); > + } > + > +- nl_handle_destroy(nl); > ++ nl_socket_free(nl); > + > + if (tcp_head) { > + DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n")); > diff --git a/recipes/net-snmp/net-snmp.inc b/recipes/net-snmp/net-snmp.inc > new file mode 100644 > index 0000000..e675e96 > --- /dev/null > +++ b/recipes/net-snmp/net-snmp.inc > @@ -0,0 +1,41 @@ > +DESCRIPTION = "Various tools relating to the Simple Network Management Protocol" > +HOMEPAGE = "http://www.net-snmp.org/" > +LICENSE = "BSD" > + > +DEPENDS = "openssl" > + > +inherit autotools-autoreconf sysvinit siteinfo > + > +require conf/fetch/sourceforge.conf > +SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz" > + > +EXTRA_OECONF = "--enable-shared --disable-manuals --with-defaults " > + > +inherit auto-package-libs > +AUTO_PACKAGE_LIBS = "netsnmpagent netsnmphelpers netsnmpmibs netsnmp netsnmptrapd" > + > +AUTO_PACKAGE_LIBS_RDEPENDS += "libc" > +RDEPENDS_${PN}-libnetsnmpagent += "libnetsnmp" > +RDEPENDS_${PN}-libnetsnmpmibs += "libnetsnmpagent libgcc libnetsnmp" > +RDEPENDS_${PN}-libnetsnmptrapd += "libnetsnmpagent libgcc libnetsnmp libnetsnmpmibs" > + > +inherit auto-package-utils > +AUTO_PACKAGE_UTILS = "\ > + agentxtrap encode_keychange fixproc ipf-mod.pl net-snmp-cert\ > + net-snmp-create-v3-user snmp-bridge-mib snmpbulkget snmpbulkwalk\ > + snmpcheck snmpconf snmpdelta snmpdf snmpget snmpgetnext\ > + snmpinform snmptrap snmpnetstat snmpset snmpstatus snmptable\ > + snmpusm snmpvacm snmpwalk tkmib snmptest snmptranslate \ > + traptoemail mib2c mib2c-update net-snmp-config" > + > +AUTO_PACKAGE_UTILS_RDEPENDS += "libnetsnmp libc" > +RDEPENDS_${PN}-snmpinform += "${PN}-snmptrap" > +RDEPENDS_${PN}-agentxtrap += "libnetsnmpmibs libnetsnmpagent" > + > +PACKAGES =+ "${PN}-mibs ${PN}-client ${PN}-server" > +RDEPENDS_${PN}-server += "libnetsnmptrapd libnetsnmpmibs libnetsnmpagent libnetsnmp" > +RDEPENDS_${PN}-client += "${AUTO_PACKAGE_UTILS_PROVIDES}" > + > +FILES_${PN}-mibs = "${datadir}/snmp/mibs" > +FILES_${PN}-client += "${datadir}/snmp" > +FILES_${PN}-server += "${sysconfdir} ${sbindir}/*" > diff --git a/recipes/net-snmp/net-snmp_5.7.1.oe b/recipes/net-snmp/net-snmp_5.7.1.oe > new file mode 100644 > index 0000000..48362b2 > --- /dev/null > +++ b/recipes/net-snmp/net-snmp_5.7.1.oe > @@ -0,0 +1,11 @@ > +require net-snmp.inc > + > +SRC_URI += "file://net-snmp-libnl.patch \ > + file://init \ > + file://snmpd.conf \ > + file://snmptrapd.conf" Shouldn't these two config files be installed to /etc/snmp/ ? The init script seems to expect them to be found there... Also, the 3 non-patch files in SRC_URI should probably be moved to net-snmp.inc. > + > +EXTRA_OECONF += "--disable-embedded-perl --with-perl-modules=no" > +EXTRA_OEMAKE = "INSTALL_PREFIX=${D}" > + > +#PARALLEL_MAKE = "" > diff --git a/recipes/net-snmp/net-snmp_5.7.1.oe.sig b/recipes/net-snmp/net-snmp_5.7.1.oe.sig > new file mode 100644 > index 0000000..6b12ff7 > --- /dev/null > +++ b/recipes/net-snmp/net-snmp_5.7.1.oe.sig > @@ -0,0 +1 @@ > +ddb82ce1112ef0642869d3c8d7c7e585f151849a net-snmp-5.7.1.tar.gz /Esben
diff --git a/recipes/net-snmp/files/init b/recipes/net-snmp/files/init new file mode 100755 index 0000000..434b2fa --- /dev/null +++ b/recipes/net-snmp/files/init @@ -0,0 +1,63 @@ +#! /bin/sh +# /etc/init.d/snmpd: start snmp daemon. + +test -x /usr/sbin/snmpd || exit 0 +test -x /usr/sbin/snmptrapd || exit 0 + +# Defaults +export MIBDIRS=/usr/share/snmp/mibs +SNMPDRUN=yes +SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid' +TRAPDRUN=no +TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid' + +# Cd to / before starting any daemons. +cd / + +case "$1" in + start) + echo -n "Starting network management services:" + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + start-stop-daemon -S -x /usr/sbin/snmpd \ + -- $SNMPDOPTS + echo -n " snmpd" + fi + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + start-stop-daemon -S -x /usr/sbin/snmptrapd \ + -- $TRAPDOPTS + echo -n " snmptrapd" + fi + echo "." + ;; + stop) + echo -n "Stopping network management services:" + start-stop-daemon -K -x /usr/sbin/snmpd + echo -n " snmpd" + start-stop-daemon -K -x /usr/sbin/snmptrapd + echo -n " snmptrapd" + echo "." + ;; + restart|reload|force-reload) + echo -n "Restarting network management services:" + start-stop-daemon -K -x /usr/sbin/snmpd + start-stop-daemon -K -x /usr/sbin/snmptrapd + # Allow the daemons time to exit completely. + sleep 2 + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + start-stop-daemon -S -x /usr/sbin/snmpd -- $SNMPDOPTS + echo -n " snmpd" + fi + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + # Allow snmpd time to start up. + sleep 1 + start-stop-daemon -S -x /usr/sbin/snmptrapd -- $TRAPDOPTS + echo -n " snmptrapd" + fi + echo "." + ;; + *) + echo "Usage: /etc/init.d/snmpd {start|stop|restart|reload|force-reload}" + exit 1 +esac + +exit 0 diff --git a/recipes/net-snmp/files/snmpd.conf b/recipes/net-snmp/files/snmpd.conf new file mode 100644 index 0000000..4e6b2eb --- /dev/null +++ b/recipes/net-snmp/files/snmpd.conf @@ -0,0 +1,422 @@ +############################################################################### +# +# EXAMPLE.conf: +# An example configuration file for configuring the ucd-snmp snmpd agent. +# +############################################################################### +# +# This file is intended to only be an example. If, however, you want +# to use it, it should be placed in /etc/snmp/snmpd.conf. +# When the snmpd agent starts up, this is where it will look for it. +# +# You might be interested in generating your own snmpd.conf file using +# the "snmpconf" program (perl script) instead. It's a nice menu +# based interface to writing well commented configuration files. Try it! +# +# Note: This file is automatically generated from EXAMPLE.conf.def. +# Do NOT read the EXAMPLE.conf.def file! Instead, after you have run +# configure & make, and then make sure you read the EXAMPLE.conf file +# instead, as it will tailor itself to your configuration. + +# All lines beginning with a '#' are comments and are intended for you +# to read. All other lines are configuration commands for the agent. + +# +# PLEASE: read the snmpd.conf(5) manual page as well! +# + + +############################################################################### +# Access Control +############################################################################### + +# YOU SHOULD CHANGE THE "COMMUNITY" TOKEN BELOW TO A NEW KEYWORD ONLY +# KNOWN AT YOUR SITE. YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO +# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE. + +# By far, the most common question I get about the agent is "why won't +# it work?", when really it should be "how do I configure the agent to +# allow me to access it?" +# +# By default, the agent responds to the "public" community for read +# only access, if run out of the box without any configuration file in +# place. The following examples show you other ways of configuring +# the agent so that you can change the community names, and give +# yourself write access as well. +# +# The following lines change the access permissions of the agent so +# that the COMMUNITY string provides read-only access to your entire +# NETWORK (EG: 10.10.10.0/24), and read/write access to only the +# localhost (127.0.0.1, not its real ipaddress). +# +# For more information, read the FAQ as well as the snmpd.conf(5) +# manual page. + +#### +# First, map the community name (COMMUNITY) into a security name +# (local and mynetwork, depending on where the request is coming +# from): + +# sec.name source community +com2sec paranoid default public +#com2sec readonly default public +#com2sec readwrite default private + +#### +# Second, map the security names into group names: + +# sec.model sec.name +group MyROSystem v1 paranoid +group MyROSystem v2c paranoid +group MyROSystem usm paranoid +group MyROGroup v1 readonly +group MyROGroup v2c readonly +group MyROGroup usm readonly +group MyRWGroup v1 readwrite +group MyRWGroup v2c readwrite +group MyRWGroup usm readwrite + +#### +# Third, create a view for us to let the groups have rights to: + +# incl/excl subtree mask +view all included .1 80 +view system included .iso.org.dod.internet.mgmt.mib-2.system + +#### +# Finally, grant the 2 groups access to the 1 view with different +# write permissions: + +# context sec.model sec.level match read write notif +access MyROSystem "" any noauth exact system none none +access MyROGroup "" any noauth exact all none none +access MyRWGroup "" any noauth exact all all none + +# ----------------------------------------------------------------------------- + + +############################################################################### +# System contact information +# + +# It is also possible to set the sysContact and sysLocation system +# variables through the snmpd.conf file. **PLEASE NOTE** that setting +# the value of these objects here makes these objects READ-ONLY +# (regardless of any access control settings). Any attempt to set the +# value of an object whose value is given here will fail with an error +# status of notWritable. + +syslocation Unknown (configure /etc/snmp/snmpd.local.conf) +syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf) + +# Example output of snmpwalk: +# % snmpwalk -v 1 -c public localhost system +# system.sysDescr.0 = "SunOS name sun4c" +# system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.sunos4 +# system.sysUpTime.0 = Timeticks: (595637548) 68 days, 22:32:55 +# system.sysContact.0 = "Me <me@somewhere.org>" +# system.sysName.0 = "name" +# system.sysLocation.0 = "Right here, right now." +# system.sysServices.0 = 72 + + +# ----------------------------------------------------------------------------- + + +############################################################################### +# Process checks. +# +# The following are examples of how to use the agent to check for +# processes running on the host. The syntax looks something like: +# +# proc NAME [MAX=0] [MIN=0] +# +# NAME: the name of the process to check for. It must match +# exactly (ie, http will not find httpd processes). +# MAX: the maximum number allowed to be running. Defaults to 0. +# MIN: the minimum number to be running. Defaults to 0. + +# +# Examples: +# + +# Make sure mountd is running +#proc mountd + +# Make sure there are no more than 4 ntalkds running, but 0 is ok too. +#proc ntalkd 4 + +# Make sure at least one sendmail, but less than or equal to 10 are running. +#proc sendmail 10 1 + +# A snmpwalk of the prTable would look something like this: +# +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.2 +# enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1 +# enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2 +# enterprises.ucdavis.procTable.prEntry.prIndex.3 = 3 +# enterprises.ucdavis.procTable.prEntry.prNames.1 = "mountd" +# enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd" +# enterprises.ucdavis.procTable.prEntry.prNames.3 = "sendmail" +# enterprises.ucdavis.procTable.prEntry.prMin.1 = 0 +# enterprises.ucdavis.procTable.prEntry.prMin.2 = 0 +# enterprises.ucdavis.procTable.prEntry.prMin.3 = 1 +# enterprises.ucdavis.procTable.prEntry.prMax.1 = 0 +# enterprises.ucdavis.procTable.prEntry.prMax.2 = 4 +# enterprises.ucdavis.procTable.prEntry.prMax.3 = 10 +# enterprises.ucdavis.procTable.prEntry.prCount.1 = 0 +# enterprises.ucdavis.procTable.prEntry.prCount.2 = 0 +# enterprises.ucdavis.procTable.prEntry.prCount.3 = 1 +# enterprises.ucdavis.procTable.prEntry.prErrorFlag.1 = 1 +# enterprises.ucdavis.procTable.prEntry.prErrorFlag.2 = 0 +# enterprises.ucdavis.procTable.prEntry.prErrorFlag.3 = 0 +# enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No mountd process running." +# enterprises.ucdavis.procTable.prEntry.prErrMessage.2 = "" +# enterprises.ucdavis.procTable.prEntry.prErrMessage.3 = "" +# enterprises.ucdavis.procTable.prEntry.prErrFix.1 = 0 +# enterprises.ucdavis.procTable.prEntry.prErrFix.2 = 0 +# enterprises.ucdavis.procTable.prEntry.prErrFix.3 = 0 +# +# Note that the errorFlag for mountd is set to 1 because one is not +# running (in this case an rpc.mountd is, but thats not good enough), +# and the ErrMessage tells you what's wrong. The configuration +# imposed in the snmpd.conf file is also shown. +# +# Special Case: When the min and max numbers are both 0, it assumes +# you want a max of infinity and a min of 1. +# + + +# ----------------------------------------------------------------------------- + + +############################################################################### +# Executables/scripts +# + +# +# You can also have programs run by the agent that return a single +# line of output and an exit code. Here are two examples. +# +# exec NAME PROGRAM [ARGS ...] +# +# NAME: A generic name. +# PROGRAM: The program to run. Include the path! +# ARGS: optional arguments to be passed to the program + +# a simple hello world +#exec echotest /bin/echo hello world + +# Run a shell script containing: +# +# #!/bin/sh +# echo hello world +# echo hi there +# exit 35 +# +# Note: this has been specifically commented out to prevent +# accidental security holes due to someone else on your system writing +# a /tmp/shtest before you do. Uncomment to use it. +# +#exec shelltest /bin/sh /tmp/shtest + +# Then, +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8 +# enterprises.ucdavis.extTable.extEntry.extIndex.1 = 1 +# enterprises.ucdavis.extTable.extEntry.extIndex.2 = 2 +# enterprises.ucdavis.extTable.extEntry.extNames.1 = "echotest" +# enterprises.ucdavis.extTable.extEntry.extNames.2 = "shelltest" +# enterprises.ucdavis.extTable.extEntry.extCommand.1 = "/bin/echo hello world" +# enterprises.ucdavis.extTable.extEntry.extCommand.2 = "/bin/sh /tmp/shtest" +# enterprises.ucdavis.extTable.extEntry.extResult.1 = 0 +# enterprises.ucdavis.extTable.extEntry.extResult.2 = 35 +# enterprises.ucdavis.extTable.extEntry.extOutput.1 = "hello world." +# enterprises.ucdavis.extTable.extEntry.extOutput.2 = "hello world." +# enterprises.ucdavis.extTable.extEntry.extErrFix.1 = 0 +# enterprises.ucdavis.extTable.extEntry.extErrFix.2 = 0 + +# Note that the second line of the /tmp/shtest shell script is cut +# off. Also note that the exit status of 35 was returned. + +# ----------------------------------------------------------------------------- + + +############################################################################### +# disk checks +# + +# The agent can check the amount of available disk space, and make +# sure it is above a set limit. + +# disk PATH [MIN=DEFDISKMINIMUMSPACE] +# +# PATH: mount path to the disk in question. +# MIN: Disks with space below this value will have the Mib's errorFlag set. +# Default value = DEFDISKMINIMUMSPACE. + +# Check the / partition and make sure it contains at least 10 megs. + +#disk / 10000 + +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.9 +# enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0 +# enterprises.ucdavis.diskTable.dskEntry.diskPath.1 = "/" Hex: 2F +# enterprises.ucdavis.diskTable.dskEntry.diskDevice.1 = "/dev/dsk/c201d6s0" +# enterprises.ucdavis.diskTable.dskEntry.diskMinimum.1 = 10000 +# enterprises.ucdavis.diskTable.dskEntry.diskTotal.1 = 837130 +# enterprises.ucdavis.diskTable.dskEntry.diskAvail.1 = 316325 +# enterprises.ucdavis.diskTable.dskEntry.diskUsed.1 = 437092 +# enterprises.ucdavis.diskTable.dskEntry.diskPercent.1 = 58 +# enterprises.ucdavis.diskTable.dskEntry.diskErrorFlag.1 = 0 +# enterprises.ucdavis.diskTable.dskEntry.diskErrorMsg.1 = "" + +# ----------------------------------------------------------------------------- + + +############################################################################### +# load average checks +# + +# load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE] [15MAX=DEFMAXLOADAVE] +# +# 1MAX: If the 1 minute load average is above this limit at query +# time, the errorFlag will be set. +# 5MAX: Similar, but for 5 min average. +# 15MAX: Similar, but for 15 min average. + +# Check for loads: +#load 12 14 14 + +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.10 +# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1 +# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.2 = 2 +# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.3 = 3 +# enterprises.ucdavis.loadTable.laEntry.loadaveNames.1 = "Load-1" +# enterprises.ucdavis.loadTable.laEntry.loadaveNames.2 = "Load-5" +# enterprises.ucdavis.loadTable.laEntry.loadaveNames.3 = "Load-15" +# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.1 = "0.49" Hex: 30 2E 34 39 +# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.2 = "0.31" Hex: 30 2E 33 31 +# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.3 = "0.26" Hex: 30 2E 32 36 +# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.1 = "12.00" +# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.2 = "14.00" +# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.3 = "14.00" +# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.1 = 0 +# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.2 = 0 +# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.3 = 0 +# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.1 = "" +# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.2 = "" +# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.3 = "" + +# ----------------------------------------------------------------------------- + + +############################################################################### +# Extensible sections. +# + +# This alleviates the multiple line output problem found in the +# previous executable mib by placing each mib in its own mib table: + +# Run a shell script containing: +# +# #!/bin/sh +# echo hello world +# echo hi there +# exit 35 +# +# Note: this has been specifically commented out to prevent +# accidental security holes due to someone else on your system writing +# a /tmp/shtest before you do. Uncomment to use it. +# +# exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest + +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.50 +# enterprises.ucdavis.50.1.1 = 1 +# enterprises.ucdavis.50.2.1 = "shelltest" +# enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest" +# enterprises.ucdavis.50.100.1 = 35 +# enterprises.ucdavis.50.101.1 = "hello world." +# enterprises.ucdavis.50.101.2 = "hi there." +# enterprises.ucdavis.50.102.1 = 0 + +# Now the Output has grown to two lines, and we can see the 'hi +# there.' output as the second line from our shell script. +# +# Note that you must alter the mib.txt file to be correct if you want +# the .50.* outputs above to change to reasonable text descriptions. + +# Other ideas: +# +# exec .1.3.6.1.4.1.2021.51 ps /bin/ps +# exec .1.3.6.1.4.1.2021.52 top /usr/local/bin/top +# exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq + +# ----------------------------------------------------------------------------- + + +############################################################################### +# Pass through control. +# + +# Usage: +# pass MIBOID EXEC-COMMAND +# +# This will pass total control of the mib underneath the MIBOID +# portion of the mib to the EXEC-COMMAND. +# +# Note: You'll have to change the path of the passtest script to your +# source directory or install it in the given location. +# +# Example: (see the script for details) +# (commented out here since it requires that you place the +# script in the right location. (its not installed by default)) + +# pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/passtest + +# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.255 +# enterprises.ucdavis.255.1 = "life the universe and everything" +# enterprises.ucdavis.255.2.1 = 42 +# enterprises.ucdavis.255.2.2 = OID: 42.42.42 +# enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42 +# enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1 +# enterprises.ucdavis.255.5 = 42 +# enterprises.ucdavis.255.6 = Gauge: 42 +# +# % snmpget -v 1 -c public localhost .1.3.6.1.4.1.2021.255.5 +# enterprises.ucdavis.255.5 = 42 +# +# % snmpset -v 1 -c public localhost .1.3.6.1.4.1.2021.255.1 s "New string" +# enterprises.ucdavis.255.1 = "New string" +# + +# For specific usage information, see the man/snmpd.conf.5 manual page +# as well as the local/passtest script used in the above example. + +############################################################################### +# Subagent control +# + +# The agent can support subagents using a number of extension mechanisms. +# From the 4.2.1 release, AgentX support is being compiled in by default. +# However, this is still experimental code, so should not be used on +# critical production systems. +# Please see the file README.agentx for more details. +# +# If having read, marked, learnt and inwardly digested this information, +# you decide that you do wish to make use of this mechanism, simply +# uncomment the following directive. +# +# master agentx +# +# I repeat - this is *NOT* regarded as suitable for front-line production +# systems, though it is probably stable enough for day-to-day use. +# Probably. +# +# No refunds will be given. + +############################################################################### +# Further Information +# +# See the snmpd.conf manual page, and the output of "snmpd -H". +# MUCH more can be done with the snmpd.conf than is shown as an +# example here. diff --git a/recipes/net-snmp/files/snmptrapd.conf b/recipes/net-snmp/files/snmptrapd.conf new file mode 100644 index 0000000..a012a00 --- /dev/null +++ b/recipes/net-snmp/files/snmptrapd.conf @@ -0,0 +1,17 @@ +############################################################################### +# +# EXAMPLE.conf: +# An example configuration file for configuring the ucd-snmp snmptrapd agent. +# +############################################################################### +# +# This file is intended to only be an example. If, however, you want +# to use it, it should be placed in /etc/snmp/snmptrapd.conf. +# When the snmptrapd agent starts up, this is where it will look for it. +# +# All lines beginning with a '#' are comments and are intended for you +# to read. All other lines are configuration commands for the agent. + +# +# PLEASE: read the snmptrapd.conf(5) manual page as well! +# diff --git a/recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch b/recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch new file mode 100644 index 0000000..0879e45 --- /dev/null +++ b/recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch @@ -0,0 +1,65 @@ +--- net-snmp-5.6.1/agent/mibgroup/mibII/tcpTable.c.org 2011-03-27 22:39:13.428728506 +0200 ++++ net-snmp-5.6.1/agent/mibgroup/mibII/tcpTable.c 2011-03-27 22:39:47.606956561 +0200 +@@ -555,8 +555,9 @@ + static int + tcpTable_load_netlink(void) + { ++ int err; + /* TODO: perhaps use permanent nl handle? */ +- struct nl_handle *nl = nl_handle_alloc(); ++ struct nl_sock *nl = nl_socket_alloc(); + + if (nl == NULL) { + DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n")); +@@ -564,10 +565,10 @@ + return -1; + } + +- if (nl_connect(nl, NETLINK_INET_DIAG) < 0) { +- DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror())); +- snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror()); +- nl_handle_destroy(nl); ++ if ((err = nl_connect(nl, NETLINK_INET_DIAG)) < 0) { ++ DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror(err))); ++ snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror(err)); ++ nl_socket_free(nl); + return -1; + } + +@@ -579,10 +580,10 @@ + struct nl_msg *nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST); + nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0); + +- if (nl_send_auto_complete(nl, nm) < 0) { +- DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror())); +- snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror()); +- nl_handle_destroy(nl); ++ if ((err = nl_send_auto_complete(nl, nm)) < 0) { ++ DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror(err))); ++ snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror(err)); ++ nl_socket_free(nl); + return -1; + } + nlmsg_free(nm); +@@ -593,9 +594,9 @@ + + while (running) { + if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) { +- DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror())); +- snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror()); +- nl_handle_destroy(nl); ++ DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror(len))); ++ snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror(len)); ++ nl_socket_free(nl); + return -1; + } + +@@ -644,7 +645,7 @@ + free(buf); + } + +- nl_handle_destroy(nl); ++ nl_socket_free(nl); + + if (tcp_head) { + DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n")); diff --git a/recipes/net-snmp/net-snmp.inc b/recipes/net-snmp/net-snmp.inc new file mode 100644 index 0000000..e675e96 --- /dev/null +++ b/recipes/net-snmp/net-snmp.inc @@ -0,0 +1,41 @@ +DESCRIPTION = "Various tools relating to the Simple Network Management Protocol" +HOMEPAGE = "http://www.net-snmp.org/" +LICENSE = "BSD" + +DEPENDS = "openssl" + +inherit autotools-autoreconf sysvinit siteinfo + +require conf/fetch/sourceforge.conf +SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz" + +EXTRA_OECONF = "--enable-shared --disable-manuals --with-defaults " + +inherit auto-package-libs +AUTO_PACKAGE_LIBS = "netsnmpagent netsnmphelpers netsnmpmibs netsnmp netsnmptrapd" + +AUTO_PACKAGE_LIBS_RDEPENDS += "libc" +RDEPENDS_${PN}-libnetsnmpagent += "libnetsnmp" +RDEPENDS_${PN}-libnetsnmpmibs += "libnetsnmpagent libgcc libnetsnmp" +RDEPENDS_${PN}-libnetsnmptrapd += "libnetsnmpagent libgcc libnetsnmp libnetsnmpmibs" + +inherit auto-package-utils +AUTO_PACKAGE_UTILS = "\ + agentxtrap encode_keychange fixproc ipf-mod.pl net-snmp-cert\ + net-snmp-create-v3-user snmp-bridge-mib snmpbulkget snmpbulkwalk\ + snmpcheck snmpconf snmpdelta snmpdf snmpget snmpgetnext\ + snmpinform snmptrap snmpnetstat snmpset snmpstatus snmptable\ + snmpusm snmpvacm snmpwalk tkmib snmptest snmptranslate \ + traptoemail mib2c mib2c-update net-snmp-config" + +AUTO_PACKAGE_UTILS_RDEPENDS += "libnetsnmp libc" +RDEPENDS_${PN}-snmpinform += "${PN}-snmptrap" +RDEPENDS_${PN}-agentxtrap += "libnetsnmpmibs libnetsnmpagent" + +PACKAGES =+ "${PN}-mibs ${PN}-client ${PN}-server" +RDEPENDS_${PN}-server += "libnetsnmptrapd libnetsnmpmibs libnetsnmpagent libnetsnmp" +RDEPENDS_${PN}-client += "${AUTO_PACKAGE_UTILS_PROVIDES}" + +FILES_${PN}-mibs = "${datadir}/snmp/mibs" +FILES_${PN}-client += "${datadir}/snmp" +FILES_${PN}-server += "${sysconfdir} ${sbindir}/*" diff --git a/recipes/net-snmp/net-snmp_5.7.1.oe b/recipes/net-snmp/net-snmp_5.7.1.oe new file mode 100644 index 0000000..48362b2 --- /dev/null +++ b/recipes/net-snmp/net-snmp_5.7.1.oe @@ -0,0 +1,11 @@ +require net-snmp.inc + +SRC_URI += "file://net-snmp-libnl.patch \ + file://init \ + file://snmpd.conf \ + file://snmptrapd.conf" + +EXTRA_OECONF += "--disable-embedded-perl --with-perl-modules=no" +EXTRA_OEMAKE = "INSTALL_PREFIX=${D}" + +#PARALLEL_MAKE = "" diff --git a/recipes/net-snmp/net-snmp_5.7.1.oe.sig b/recipes/net-snmp/net-snmp_5.7.1.oe.sig new file mode 100644 index 0000000..6b12ff7 --- /dev/null +++ b/recipes/net-snmp/net-snmp_5.7.1.oe.sig @@ -0,0 +1 @@ +ddb82ce1112ef0642869d3c8d7c7e585f151849a net-snmp-5.7.1.tar.gz
From: Jacob Barsøe Kjærgaard <jacob.kjaergaard@prevas.dk> --- recipes/net-snmp/files/init | 63 +++ recipes/net-snmp/files/snmpd.conf | 422 +++++++++++++++++++++ recipes/net-snmp/files/snmptrapd.conf | 17 + .../net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch | 65 ++++ recipes/net-snmp/net-snmp.inc | 41 ++ recipes/net-snmp/net-snmp_5.7.1.oe | 11 + recipes/net-snmp/net-snmp_5.7.1.oe.sig | 1 + 7 files changed, 620 insertions(+) create mode 100755 recipes/net-snmp/files/init create mode 100644 recipes/net-snmp/files/snmpd.conf create mode 100644 recipes/net-snmp/files/snmptrapd.conf create mode 100644 recipes/net-snmp/net-snmp-5.7.1/net-snmp-libnl.patch create mode 100644 recipes/net-snmp/net-snmp.inc create mode 100644 recipes/net-snmp/net-snmp_5.7.1.oe create mode 100644 recipes/net-snmp/net-snmp_5.7.1.oe.sig