svn commit: r311582 - projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6
Ngie Cooper
ngie at FreeBSD.org
Sat Jan 7 05:10:08 UTC 2017
Author: ngie
Date: Sat Jan 7 05:10:06 2017
New Revision: 311582
URL: https://svnweb.freebsd.org/changeset/base/311582
Log:
Stub in more of the structures and bits
Add ipv6_sys for dealing with interfaces and fetching from MIB-II
Added:
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_sys.c (contents, props changed)
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_sys.h (contents, props changed)
Modified:
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/Makefile
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.h
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.c
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.h
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrTable.h
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifStatsTable.h
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.h
projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_routeTable.h
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/Makefile
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/Makefile Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/Makefile Sat Jan 7 05:10:06 2017 (r311582)
@@ -10,6 +10,7 @@ SRCS+= ipv6_ifStatsTable.c
SRCS+= ipv6_ifTable.c
SRCS+= ipv6_netToMediaTable.c
SRCS+= ipv6_routeTable.c
+SRCS+= ipv6_sys.c
XSYM= ${MOD}
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c Sat Jan 7 05:10:06 2017 (r311582)
@@ -33,12 +33,15 @@ __FBSDID("$FreeBSD$");
#include <bsnmp/snmpmod.h>
#include "ipv6.h"
+#include "ipv6_sys.h"
#include "ipv6MIB_oid.h"
static struct lmodule *module;
static const struct asn_oid oid_ipv6MIB = OIDX_ipv6MIB;
+uint32_t mib_ipv6_ipv6Interfaces;
+
uint64_t mib_ipv6_ipv6IfTableLastChange;
static u_int ipv6_reg;
@@ -85,7 +88,8 @@ op_ipv6MIBObjects(struct snmp_context *c
break;
case LEAF_ipv6IfTableLastChange:
{
- if (mib_ipv6_ipv6IfTableLastChange > start_tick)
+ mib_ipv6_refresh_interfaces();
+ if (mib_ipv6_ipv6IfTableLastChange > start_tick)
value->v.uint32 =
mib_ipv6_ipv6IfTableLastChange - start_tick;
else
@@ -93,11 +97,8 @@ op_ipv6MIBObjects(struct snmp_context *c
break;
}
case LEAF_ipv6Interfaces:
- /*
- * XXX (ngie): this incorrectly assumes that all interfaces
- * are IPv6 enabled.
- */
- /*value->v.integer = if_countifindex()*/;
+ mib_ipv6_refresh_interfaces();
+ value->v.integer = mib_ipv6_ipv6Interfaces;
break;
default:
return (SNMP_ERR_NOSUCHNAME);
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.h
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.h Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -31,4 +31,7 @@
#include "ipv6MIB_tree.h"
+extern uint32_t mib_ipv6_ipv6Interfaces;
+extern uint64_t mib_ipv6_ipv6IfTableLastChange;
+
#endif
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.c
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.c Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.c Sat Jan 7 05:10:06 2017 (r311582)
@@ -29,11 +29,18 @@
__FBSDID("$FreeBSD$");
#include <sys/param.h>
-#include <sys/sysctl.h>
+
#include <bsnmp/snmpmod.h>
#include "ipv6_addrPrefixTable.h"
+#if 0
+SLIST_HEAD(ipv6AddrPrefixTable, ipv6AddrPrefixEntry)
+ ipv6AddrPrefixTable_head = SLIST_HEAD_INITIALIZER(ipv6AddrPrefixTable);
+struct ipv6AddrPrefixEntry *ipv6AddrPrefixTable;
+SLIST_INIT(&ipv6AddrPrefixTable_head);
+#endif
+
int
op_ipv6AddrPrefixTable(struct snmp_context *ctx __unused,
struct snmp_value *value, u_int sub, u_int iidx __unused, enum snmp_op op)
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.h
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.h Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrPrefixTable.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -31,4 +31,19 @@
#include "ipv6MIB_tree.h"
+typedef struct ipv6AddrPrefixEntry {
+#if 0
+ SLIST_ENTRY(ipv6AddrPrefixEntry) entries;
+#endif
+/*
+ char *ipv6AddrPrefix;
+ u_int ipv6AddrPrefixLength;
+ */
+ uint32_t ipv6AddrPrefixOnLinkFlag;
+ uint32_t ipv6AddrPrefixAutonomousFlag;
+ u_int ipv6AddrPrefixAdvPreferredLifetime;
+ u_int ipv6AddrPrefixAdvValidLifetime;
+
+} ipv6AddrPrefixEntry;
+
#endif
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrTable.h
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrTable.h Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_addrTable.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -31,4 +31,12 @@
#include "ipv6MIB_tree.h"
+typedef struct ipv6AddrEntry {
+ char * ipv6AddrAddress;
+ uint32_t ipv6AddrPfxLength;
+ uint32_t ipv6AddrType;
+ uint32_t ipv6AddrAnycastFlag;
+ uint32_t ipv6AddrStatus;
+} ipv6AddrEntry;
+
#endif
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifStatsTable.h
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifStatsTable.h Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifStatsTable.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -31,4 +31,27 @@
#include "ipv6MIB_tree.h"
+typedef struct ipv6IfStatsEntry {
+ u_int ipv6IfStatsInReceives;
+ u_int ipv6IfStatsInHdrErrors;
+ u_int ipv6IfStatsInTooBigErrors;
+ u_int ipv6IfStatsInNoRoutes;
+ u_int ipv6IfStatsInAddrErrors;
+ u_int ipv6IfStatsInUnknownProtos;
+ u_int ipv6IfStatsInTruncatedPkts;
+ u_int ipv6IfStatsInDiscards;
+ u_int ipv6IfStatsInDelivers;
+ u_int ipv6IfStatsOutForwDatagrams;
+ u_int ipv6IfStatsOutRequests;
+ u_int ipv6IfStatsOutDiscards;
+ u_int ipv6IfStatsOutFragOKs;
+ u_int ipv6IfStatsOutFragFails;
+ u_int ipv6IfStatsOutFragCreates;
+ u_int ipv6IfStatsReasmReqds;
+ u_int ipv6IfStatsReasmOKs;
+ u_int ipv6IfStatsReasmFails;
+ u_int ipv6IfStatsInMcastPkts;
+ u_int ipv6IfStatsOutMcastPkts;
+} ipv6IfStatsEntry;
+
#endif
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.h
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.h Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -31,4 +31,22 @@
#include "ipv6MIB_tree.h"
+typedef struct ipv6IfEntry {
+/*
+ INTEGER ipv6IfIndex
+ */
+ char *ipv6IfDescr;
+/*
+ OID ipv6IfLowerLayer
+ */
+ uint32_t ipv6IfEffectiveMtu;
+ uint32_t ipv6IfReasmMaxSize;
+ char *ipv6IfIdentifier;
+ u_int ipv6IfIdentifierLength;
+ char *ipv6IfPhysicalAddress;
+ uint32_t ipv6IfAdminStatus;
+ uint32_t ipv6IfOperStatus;
+ uint32_t ipv6IfLastChange;
+} ipv6IfEntry;
+
#endif
Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_routeTable.h
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_routeTable.h Sat Jan 7 04:57:21 2017 (r311581)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_routeTable.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -31,4 +31,26 @@
#include "ipv6MIB_tree.h"
+typedef struct ipv6RouteEntry {
+#if 0
+ OCTETSTRING | Ipv6Address ipv6RouteDest
+ INTEGER ipv6RoutePfxLength
+ USIGNED32 ipv6RouteIndex
+#endif
+ char *ipv6RouteNextHop;
+ uint32_t ipv6RouteIfIndex;
+ uint32_t ipv6RouteType;
+ uint32_t ipv6RouteProtocol;
+ int32_t ipv6RoutePolicy;
+ uint32_t ipv6RouteAge;
+ uint32_t ipv6RouteNextHopRDI;
+#if 0
+ UNSIGNED32 ipv6RouteIndex
+#endif
+ uint32_t ipv6RouteMetric;
+ uint32_t ipv6RouteWeight;
+ void *ipv6RouteInfo;
+ uint32_t ipv6RouteValid;
+} ipv6RouteEntry;
+
#endif
Added: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_sys.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_sys.c Sat Jan 7 05:10:06 2017 (r311582)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2017 Dell EMC Isilon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <bsnmp/snmpmod.h>
+
+#include "ipv6.h"
+#include "ipv6_sys.h"
+
+void
+mib_ipv6_refresh_interfaces(void)
+{
+
+ /* Refresh interfaces via MIB-II */
+
+ /*
+ * Take interface information from MIB-II and update cached interface
+ * structures
+ */
+
+ /*
+ * If there is a change between the cached interfaces and the
+ * retrieved interfaces, update the scalars.
+ */
+ mib_ipv6_ipv6Interfaces = 0;
+ mib_ipv6_ipv6IfTableLastChange = this_tick;
+}
Added: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_sys.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_sys.h Sat Jan 7 05:10:06 2017 (r311582)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2017 Dell EMC Isilon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef __SNMP_IPV6__IPV6_SYS_H__
+#define __SNMP_IPV6__IPV6_SYS_H__
+
+void mib_ipv6_refresh_interfaces(void);
+
+#endif
More information about the svn-src-projects
mailing list