📄 ospf6_snmp.c
字号:
/* OSPFv3 SNMP support * Copyright (C) 2004 Yasuhiro Ohara * * This file is part of GNU Zebra. * * GNU Zebra is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * GNU Zebra is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Zebra; see the file COPYING. If not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#include <zebra.h>#ifdef HAVE_SNMP#ifdef HAVE_NETSNMP#include <net-snmp/net-snmp-config.h>#endif /*HAVE_NETSNMP*/#include <asn1.h>#include <snmp.h>#include <snmp_impl.h>#include "log.h"#include "vty.h"#include "linklist.h"#include "smux.h"#include "ospf6_proto.h"#include "ospf6_lsa.h"#include "ospf6_lsdb.h"#include "ospf6_route.h"#include "ospf6_top.h"#include "ospf6_area.h"#include "ospf6_interface.h"#include "ospf6_message.h"#include "ospf6_neighbor.h"#include "ospf6d.h"/* OSPFv3-MIB */#define OSPFv3MIB 1,3,6,1,3,102/* Zebra enterprise ospf6d MIB */#define OSPF6DOID 1,3,6,1,4,1,3317,1,2,6/* OSPFv3 MIB General Group values. */#define OSPFv3ROUTERID 1#define OSPFv3ADMINSTAT 2#define OSPFv3VERSIONNUMBER 3#define OSPFv3AREABDRRTRSTATUS 4#define OSPFv3ASBDRRTRSTATUS 5#define OSPFv3ASSCOPELSACOUNT 6#define OSPFv3ASSCOPELSACHECKSUMSUM 7#define OSPFv3ORIGINATENEWLSAS 8#define OSPFv3RXNEWLSAS 9#define OSPFv3EXTLSACOUNT 10#define OSPFv3EXTAREALSDBLIMIT 11#define OSPFv3MULTICASTEXTENSIONS 12#define OSPFv3EXITOVERFLOWINTERVAL 13#define OSPFv3DEMANDEXTENSIONS 14#define OSPFv3TRAFFICENGINEERINGSUPPORT 15#define OSPFv3REFERENCEBANDWIDTH 16#define OSPFv3RESTARTSUPPORT 17#define OSPFv3RESTARTINTERVAL 18#define OSPFv3RESTARTSTATUS 19#define OSPFv3RESTARTAGE 20#define OSPFv3RESTARTEXITREASON 21/* OSPFv3 MIB Area Table values. */#define OSPFv3AREAID 1#define OSPFv3IMPORTASEXTERN 2#define OSPFv3AREASPFRUNS 3#define OSPFv3AREABDRRTRCOUNT 4#define OSPFv3AREAASBDRRTRCOUNT 5#define OSPFv3AREASCOPELSACOUNT 6#define OSPFv3AREASCOPELSACKSUMSUM 7#define OSPFv3AREASUMMARY 8#define OSPFv3AREASTATUS 9#define OSPFv3STUBMETRIC 10#define OSPFv3AREANSSATRANSLATORROLE 11#define OSPFv3AREANSSATRANSLATORSTATE 12#define OSPFv3AREANSSATRANSLATORSTABILITYINTERVAL 13#define OSPFv3AREANSSATRANSLATOREVENTS 14#define OSPFv3AREASTUBMETRICTYPE 15/* OSPFv3 MIB Area Lsdb Table values. */#define OSPFv3AREALSDBAREAID 1#define OSPFv3AREALSDBTYPE 2#define OSPFv3AREALSDBROUTERID 3#define OSPFv3AREALSDBLSID 4#define OSPFv3AREALSDBSEQUENCE 5#define OSPFv3AREALSDBAGE 6#define OSPFv3AREALSDBCHECKSUM 7#define OSPFv3AREALSDBADVERTISEMENT 8#define OSPFv3AREALSDBTYPEKNOWN 9/* SYNTAX Status from OSPF-MIB. */#define OSPF_STATUS_ENABLED 1#define OSPF_STATUS_DISABLED 2/* SNMP value hack. */#define COUNTER ASN_COUNTER#define INTEGER ASN_INTEGER#define GAUGE ASN_GAUGE#define TIMETICKS ASN_TIMETICKS#define IPADDRESS ASN_IPADDRESS#define STRING ASN_OCTET_STR/* For return values e.g. SNMP_INTEGER macro */SNMP_LOCAL_VARIABLESstatic struct in_addr tmp;#define INT32_INADDR(x) \ (tmp.s_addr = (x), tmp)/* OSPFv3-MIB instances. */oid ospfv3_oid [] = { OSPFv3MIB };oid ospf6d_oid [] = { OSPF6DOID };/* empty ID 0.0.0.0 e.g. empty router-id */static struct in_addr ospf6_empty_id = {0};/* Hook functions. */static u_char *ospfv3GeneralGroup ();static u_char *ospfv3AreaEntry ();static u_char *ospfv3AreaLsdbEntry ();struct variable ospfv3_variables[] ={ /* OSPF general variables */ {OSPFv3ROUTERID, IPADDRESS, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 1}}, {OSPFv3ADMINSTAT, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 2}}, {OSPFv3VERSIONNUMBER, INTEGER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 3}}, {OSPFv3AREABDRRTRSTATUS, INTEGER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 4}}, {OSPFv3ASBDRRTRSTATUS, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 5}}, {OSPFv3ASSCOPELSACOUNT, GAUGE, RONLY, ospfv3GeneralGroup, 3, {1, 1, 6}}, {OSPFv3ASSCOPELSACHECKSUMSUM, INTEGER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 7}}, {OSPFv3ORIGINATENEWLSAS, COUNTER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 8}}, {OSPFv3RXNEWLSAS, COUNTER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 9}}, {OSPFv3EXTLSACOUNT, GAUGE, RONLY, ospfv3GeneralGroup, 3, {1, 1, 10}}, {OSPFv3EXTAREALSDBLIMIT, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 11}}, {OSPFv3MULTICASTEXTENSIONS, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 12}}, {OSPFv3EXITOVERFLOWINTERVAL, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 13}}, {OSPFv3DEMANDEXTENSIONS, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 14}}, {OSPFv3TRAFFICENGINEERINGSUPPORT, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 15}}, {OSPFv3REFERENCEBANDWIDTH, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 16}}, {OSPFv3RESTARTSUPPORT, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 17}}, {OSPFv3RESTARTINTERVAL, INTEGER, RWRITE, ospfv3GeneralGroup, 3, {1, 1, 18}}, {OSPFv3RESTARTSTATUS, INTEGER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 19}}, {OSPFv3RESTARTAGE, INTEGER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 20}}, {OSPFv3RESTARTEXITREASON, INTEGER, RONLY, ospfv3GeneralGroup, 3, {1, 1, 21}}, /* OSPFv3 Area Data Structure */ {OSPFv3AREAID, IPADDRESS, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 1}}, {OSPFv3IMPORTASEXTERN, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 2}}, {OSPFv3AREASPFRUNS, COUNTER, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 3}}, {OSPFv3AREABDRRTRCOUNT, GAUGE, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 4}}, {OSPFv3AREAASBDRRTRCOUNT, GAUGE, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 5}}, {OSPFv3AREASCOPELSACOUNT, GAUGE, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 6}}, {OSPFv3AREASCOPELSACKSUMSUM, INTEGER, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 7}}, {OSPFv3AREASUMMARY, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 8}}, {OSPFv3AREASTATUS, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 9}}, {OSPFv3STUBMETRIC, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 10}}, {OSPFv3AREANSSATRANSLATORROLE, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 11}}, {OSPFv3AREANSSATRANSLATORSTATE, INTEGER, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 12}}, {OSPFv3AREANSSATRANSLATORSTABILITYINTERVAL, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 13}}, {OSPFv3AREANSSATRANSLATOREVENTS, COUNTER, RONLY, ospfv3AreaEntry, 4, {1, 2, 1, 14}}, {OSPFv3AREASTUBMETRICTYPE, INTEGER, RWRITE, ospfv3AreaEntry, 4, {1, 2, 1, 15}}, {OSPFv3AREALSDBAREAID, IPADDRESS, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 1}}, {OSPFv3AREALSDBTYPE, GAUGE, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 2}}, {OSPFv3AREALSDBROUTERID, IPADDRESS, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 3}}, {OSPFv3AREALSDBLSID, IPADDRESS, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 4}}, {OSPFv3AREALSDBSEQUENCE, INTEGER, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 5}}, {OSPFv3AREALSDBAGE, INTEGER, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 6}}, {OSPFv3AREALSDBCHECKSUM, INTEGER, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 7}}, {OSPFv3AREALSDBADVERTISEMENT, STRING, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 8}}, {OSPFv3AREALSDBTYPEKNOWN, INTEGER, RONLY, ospfv3AreaLsdbEntry, 4, {1, 4, 1, 9}},};static u_char *ospfv3GeneralGroup (struct variable *v, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method){ /* Check whether the instance identifier is valid */ if (smux_header_generic (v, name, length, exact, var_len, write_method) == MATCH_FAILED) return NULL; /* Return the current value of the variable */ switch (v->magic) { case OSPFv3ROUTERID: /* 1*/ /* Router-ID of this OSPF instance. */ if (ospf6) return SNMP_IPADDRESS (INT32_INADDR (ospf6->router_id)); else return SNMP_IPADDRESS (ospf6_empty_id); break; case OSPFv3ADMINSTAT: /* 2*/ break; case OSPFv3VERSIONNUMBER: /* 3*/ break; case OSPFv3AREABDRRTRSTATUS: /* 4*/ break; case OSPFv3ASBDRRTRSTATUS: /* 5*/ break; case OSPFv3ASSCOPELSACOUNT: /* 6*/ break; case OSPFv3ASSCOPELSACHECKSUMSUM: /* 7*/ break; case OSPFv3ORIGINATENEWLSAS: /* 8*/ break; case OSPFv3RXNEWLSAS: /* 9*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -