Date: Sat, 7 Jan 2017 05:10:06 +0000 (UTC) From: Ngie Cooper <ngie@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r311582 - projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6 Message-ID: <201701070510.v075A6DM086222@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701070510.v075A6DM086222>