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