diff options
author | harti <harti@FreeBSD.org> | 2006-10-31 09:00:35 +0000 |
---|---|---|
committer | harti <harti@FreeBSD.org> | 2006-10-31 09:00:35 +0000 |
commit | 3d94b0ab35417eb708a0cb1d89b8165771a58b17 (patch) | |
tree | b90703296109c0302e218286a2c6fbfe4c52f6a2 /contrib/bsnmp/snmpd | |
parent | a8b32f0cafba049f607e8d78bdeec4e72721621d (diff) | |
parent | fa063e4787b41eda66bc512bab64475c6d3b5c39 (diff) | |
download | FreeBSD-src-3d94b0ab35417eb708a0cb1d89b8165771a58b17.zip FreeBSD-src-3d94b0ab35417eb708a0cb1d89b8165771a58b17.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r163820,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/bsnmp/snmpd')
-rw-r--r-- | contrib/bsnmp/snmpd/action.c | 77 | ||||
-rw-r--r-- | contrib/bsnmp/snmpd/tree.def | 14 |
2 files changed, 63 insertions, 28 deletions
diff --git a/contrib/bsnmp/snmpd/action.c b/contrib/bsnmp/snmpd/action.c index 6a9b748..3d91ce3 100644 --- a/contrib/bsnmp/snmpd/action.c +++ b/contrib/bsnmp/snmpd/action.c @@ -2,6 +2,9 @@ * Copyright (c) 2001-2003 * Fraunhofer Institute for Open Communication Systems (FhG Fokus). * All rights reserved. + * Copyright (c) 2004-2006 + * Hartmut Brandt. + * All rights reserved. * * Author: Harti Brandt <harti@freebsd.org> * @@ -26,13 +29,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Begemot: bsnmp/snmpd/action.c,v 1.58 2004/08/06 08:47:09 brandt Exp $ + * $Begemot: action.c 517 2006-10-31 08:52:04Z brandt_h $ * * Variable access for SNMPd */ #include <sys/types.h> #include <sys/sysctl.h> #include <sys/un.h> +#include <sys/utsname.h> #include <stdio.h> #include <stdlib.h> #include <stdarg.h> @@ -48,6 +52,11 @@ static const struct asn_oid oid_begemotSnmpdModuleTable = OIDX_begemotSnmpdModuleTable; +#ifdef __FreeBSD__ +static const struct asn_oid + oid_freeBSDVersion = OIDX_freeBSDVersion; +#endif + /* * Get a string value from the KERN sysctl subtree. */ @@ -100,39 +109,57 @@ act_getkernint(int id) int init_actvals(void) { - char *v[4]; - u_int i; + struct utsname uts; + char *hostid; size_t len; +#ifdef __FreeBSD__ + char *rel, *p, *end; + u_long num; +#endif + + if (uname(&uts) == -1) + return (-1); + + if ((systemg.name = strdup(uts.nodename)) == NULL) + return (-1); - if ((systemg.name = act_getkernstring(KERN_HOSTNAME)) == NULL) + if ((hostid = act_getkernint(KERN_HOSTID)) == NULL) return (-1); - for (i = 0; i < 4; i++) - v[1] = NULL; + len = strlen(uts.nodename) + 1; + len += strlen(hostid) + 1; + len += strlen(uts.sysname) + 1; + len += strlen(uts.release) + 1; - if ((v[0] = act_getkernstring(KERN_HOSTNAME)) == NULL) - goto err; - if ((v[1] = act_getkernint(KERN_HOSTID)) == NULL) - goto err; - if ((v[2] = act_getkernstring(KERN_OSTYPE)) == NULL) - goto err; - if ((v[3] = act_getkernstring(KERN_OSRELEASE)) == NULL) - goto err; + if ((systemg.descr = malloc(len)) == NULL) { + free(hostid); + return (-1); + } + sprintf(systemg.descr, "%s %s %s %s", uts.nodename, hostid, uts.sysname, + uts.release); - for (i = 0, len = 0; i < 4; i++) - len += strlen(v[i]) + 1; +#ifdef __FreeBSD__ + /* + * Construct a FreeBSD oid + */ + systemg.object_id = oid_freeBSDVersion; + rel = uts.release; + while ((p = strsep(&rel, ".")) != NULL && + systemg.object_id.len < ASN_MAXOIDLEN) { + systemg.object_id.subs[systemg.object_id.len] = 0; + if (*p != '\0') { + num = strtoul(p, &end, 10); + if (end == p) + break; + systemg.object_id.subs[systemg.object_id.len] = num; + } + systemg.object_id.len++; + } +#endif - if ((systemg.descr = malloc(len)) == NULL) - goto err; - sprintf(systemg.descr, "%s %s %s %s", v[0], v[1], v[2], v[3]); + free(hostid); return (0); - - err: - for (i = 0; i < 4; i++) - if (v[i] != NULL) - free(v[i]); - return (-1); } diff --git a/contrib/bsnmp/snmpd/tree.def b/contrib/bsnmp/snmpd/tree.def index 3a56f65..613bcde 100644 --- a/contrib/bsnmp/snmpd/tree.def +++ b/contrib/bsnmp/snmpd/tree.def @@ -26,7 +26,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $Begemot: bsnmp/snmpd/tree.def,v 1.38 2004/08/06 08:47:17 brandt Exp $ +# $Begemot: tree.def 517 2006-10-31 08:52:04Z brandt_h $ # # System group and private Begemot SNMPd MIB. # @@ -64,11 +64,19 @@ (32 snmpProxyDrops COUNTER op_snmp GET) ) )) + + (4 private + (1 enterprises +# +# FreeBSD stuff +# + (2238 freeBSD + (4 freeBSDVersion) + ) + # # Private Begemot Stuff # - (4 private - (1 enterprises (12325 fokus (1 begemot |