⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipv6.c

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 C
📖 第 1 页 / 共 5 页
字号:
/* *  IP MIB group implementation - ipv6.c * */#include <net-snmp/net-snmp-config.h>#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)#define _KERNEL 1#define _I_DEFINED_KERNEL#endif#include <sys/types.h>#include <sys/param.h>#include <sys/socket.h>#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)# if HAVE_SYS_SOCKETVAR_H#  include <sys/socketvar.h># endif#endif#if STDC_HEADERS#include <string.h>#include <stdlib.h>#else#if HAVE_STDLIB_H#include <stdlib.h>#endif#endif#if HAVE_UNISTD_H#include <unistd.h>#endif#if HAVE_SYS_IOCTL_H#include <sys/ioctl.h>#endif#if HAVE_NETINET_IN_H#include <netinet/in.h>#endif#if HAVE_SYS_SYSCTL_H#ifdef _I_DEFINED_KERNEL#undef _KERNEL#endif#include <sys/sysctl.h>#ifdef _I_DEFINED_KERNEL#define _KERNEL 1#endif#endif#if HAVE_SYS_SYSMP_H#include <sys/sysmp.h>#endif#if HAVE_SYS_TCPIPSTATS_H#include <sys/tcpipstats.h>#endif#include <net/if.h>#if HAVE_NET_IF_VAR_H#include <net/if_var.h>#endif#if HAVE_NET_IF_DL_H#include <net/if_dl.h>#endif#ifdef HAVE_NET_IF_MIB_H#include <net/if_mib.h>#endif#ifdef _I_DEFINED_KERNEL#undef _KERNEL#endif#include <netinet/in_systm.h>#if HAVE_SYS_HASHING_H#include <sys/hashing.h>#endif#if HAVE_SYS_SOCKIO_H#include <sys/sockio.h>#endif#if HAVE_NETINET6_IN6_VAR_H#include <netinet6/in6_var.h>#endif#include <netinet/ip6.h>#if HAVE_NETINET_IP_VAR_H# include <netinet/ip_var.h>#endif#if HAVE_NETINET6_IP6_VAR_H# include <netinet6/ip6_var.h>#endif#include <net/route.h>#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)# if HAVE_NETINET_IN_PCB_H#  include <netinet/in_pcb.h># endif#endif#if HAVE_NETINET6_IN6_PCB_H# include <netinet6/in6_pcb.h>#endif#if HAVE_NETINET6_TCP6_H# define TCP6#endif#ifndef TCP6# if HAVE_NETINET_TCP_H#  include <netinet/tcp.h># endif# if HAVE_NETINET_TCP_TIMER_H#  include <netinet/tcp_timer.h># endif# if HAVE_NETINET_TCP_VAR_H#  include <netinet/tcp_var.h># endif# if HAVE_NETINET_TCP_FSM_H#  include <netinet/tcp_fsm.h># endif#endif#if HAVE_NETINET6_TCP6_H# include <netinet6/tcp6.h>#endif#if HAVE_NETINET6_TCP6_TIMER_H#include <netinet6/tcp6_timer.h>#endif#if HAVE_NETINET6_TCP6_VAR_H#include <netinet6/tcp6_var.h>#endif#if HAVE_NETINET6_TCP6_FSM_H#include <netinet6/tcp6_fsm.h>#endif#if HAVE_INET_MIB2_H#include <inet/mib2.h>#endif#ifdef HAVE_SYSLOG_H#include <syslog.h>#endif#ifdef MIB_IPCOUNTER_SYMBOL#include <sys/mib.h>#include <netinet/mib_kern.h>#endif                          /* MIB_IPCOUNTER_SYMBOL */#include <net-snmp/net-snmp-includes.h>#include <net-snmp/agent/net-snmp-agent-includes.h>#include <net-snmp/agent/auto_nlist.h>#include "kernel.h"#include "util_funcs.h"#include "ipv6.h"#include "interfaces.h"static int header_ipv6__P((register struct variable *, oid *, size_t *, int, size_t *,     WriteMethod **));static int header_ipv6_scan__P((register struct variable *, oid *, size_t *, int, size_t *,     WriteMethod **, int, int));static int if_initialize __P((void));static int if_maxifindex __P((void));static char    *if_getname __P((int));#ifdef notusedstatic int if_getindex __P((const char *));#endifstruct variable3 ipv6_variables[] = {    {IPV6FORWARDING, ASN_INTEGER, RONLY, var_ipv6, 1, {1}},    {IPV6DEFAULTHOPLIMIT, ASN_INTEGER, RONLY, var_ipv6, 1, {2}},    {IPV6INTERFACES, ASN_GAUGE, RONLY, var_ipv6, 1, {3}},    {IPV6IFTBLLASTCHG, ASN_TIMETICKS, RONLY, var_ipv6, 1, {4}},    {IPV6IFDESCR, ASN_OCTET_STR, RONLY, var_ifv6Entry, 3, {5, 1, 2}},    {IPV6IFLOWLAYER, ASN_OBJECT_ID, RONLY, var_ifv6Entry, 3, {5, 1, 3}},    {IPV6IFEFFECTMTU, ASN_UNSIGNED, RONLY, var_ifv6Entry, 3, {5, 1, 4}},    {IPV6IFREASMMAXSIZE, ASN_UNSIGNED, RONLY, var_ifv6Entry, 3, {5, 1, 5}},    {IPV6IFTOKEN, ASN_OCTET_STR, RONLY, var_ifv6Entry, 3, {5, 1, 6}},    {IPV6IFTOKENLEN, ASN_INTEGER, RONLY, var_ifv6Entry, 3, {5, 1, 7}},    {IPV6IFPHYSADDRESS, ASN_OCTET_STR, RONLY, var_ifv6Entry, 3, {5, 1, 8}},    {IPV6IFADMSTATUS, ASN_INTEGER, RONLY, var_ifv6Entry, 3, {5, 1, 9}},    {IPV6IFOPERSTATUS, ASN_INTEGER, RONLY, var_ifv6Entry, 3, {5, 1, 10}},    {IPV6IFLASTCHANGE, ASN_TIMETICKS, RONLY, var_ifv6Entry, 3, {5, 1, 11}},    {IPV6IFSTATSINRCVS, ASN_COUNTER, RONLY, var_ifv6Entry, 3, {6, 1, 1}},    {IPV6IFSTATSINHDRERRS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 2}},    {IPV6IFSTATSTOOBIGERRS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 3}},    {IPV6IFSTATSINNOROUTES, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 4}},    {IPV6IFSTATSINADDRERRS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 5}},    {IPV6IFSTATSINUNKNOWPROTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 6}},    {IPV6IFSTATSINTRUNCATPKTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 7}},    {IPV6IFSTATSINDISCARDS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 8}},    {IPV6IFSTATSINDELIVERS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 9}},    {IPV6IFSTATSOUTFORWDATAS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 10}},    {IPV6IFSTATSOUTREQS, ASN_COUNTER, RONLY, var_ifv6Entry, 3, {6, 1, 11}},    {IPV6IFSTATSOUTDISCARDS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 12}},    {IPV6IFSTATSOUTFRAGOKS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 13}},    {IPV6IFSTATSOUTFRAGFAILS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 14}},    {IPV6IFSTATSOUTFRAGCREATS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 15}},    {IPV6IFSTATSOUTREASMREQS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 16}},    {IPV6IFSTATSOUTREASMOKS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 17}},    {IPV6IFSTATSOUTREASMFAILS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 18}},    {IPV6IFSTATSINMCASTPKTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 19}},    {IPV6IFSTATSOUTMCASTPKTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,     {6, 1, 20}},#if 0    {IPV6ADDRPREFIXONLINKFLG, INTEGER, RONLY, var_ipv6AddrEntry, 3,     {7, 1, 3}},    {IPV6ADDRPREFIXAUTONOMOUSFLAG, INTEGER, RONLY, var_ipv6AddrEntry, 3,     {7, 1, 4}},    {IPV6ADDRPREFIXADVPREFERLIFE, UNSIGNED32, RONLY, var_ipv6AddrEntry, 3,     {7, 1, 5}},    {IPV6ADDRPREFIXVALIDLIFE, UNSIGNED32, RONLY, var_ipv6AddrEntry, 3,     {7, 1, 6}},    {IPV6ADDRPFXLEN, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 2}},    {IPV6ADDRTYPE, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 3}},    {IPV6ADDRANYCASTFLAG, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 4}},    {IPV6ADDRSTATUS, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 5}},    {IPV6ROUTEIFINDEX, IpV6IFINDEX, RONLY, var_ipv6RouteEntry, 3,     {11, 1, 4}},    {IPV6ROUTENEXTHOP, IpV6ADDRESS, RONLY, var_ipv6RouteEntry, 3,     {11, 1, 5}},    {IPV6ROUTETYPE, INTEGER, RONLY, var_ipv6RouteEntry, 3, {11, 1, 6}},    {IPV6ROUTEPROTOCOL, INTEGER, RONLY, var_ipv6RouteEntry, 3, {11, 1, 7}},    {IPV6ROUTEPOLICY, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,     {11, 1, 8}},    {IPV6ROUTEAGE, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3, {11, 1, 9}},    {IPV6ROUTENEXTHOPRDI, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,     {11, 1, 10}},    {IPV6ROUTEMETRIC, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,     {11, 1, 11}},    {IPV6ROUTEWEIGHT, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,     {11, 1, 12}},    {IPV6ROUTEINFO, OBJID, RONLY, var_ipv6RouteEntry, 3, {11, 1, 13}},    {IPV6ROUTEVALID, INTEGER, RONLY, var_ipv6RouteEntry, 3, {11, 1, 14}},    {IPV6NETTOMEDIAPHYADDR, STRING, RONLY, var_ndpEntry, 3, {12, 1, 2}},    {IPV6NETTOMEDIATYPE, INTEGER, RONLY, var_ndpEntry, 3, {12, 1, 3}},    {IPV6NETTOMEDIASTATE, INTEGER, RONLY, var_ndpEntry, 3, {12, 1, 4}},    {IPV6NETTOMEDIALASTUPDATE, TIMETICKS, RONLY, var_ndpEntry, 3,     {12, 1, 5}},    {IPV6NETTOMEDIAVALID, INTEGER, RONLY, var_ndpEntry, 3, {12, 1, 6}},#endif};oid             ipv6_variables_oid[] = { SNMP_OID_MIB2, 55, 1 };#if 0config_load_mib(MIB .55 .1, 8, ipv6_variables)    config_add_mib(IPV6 - TC)    config_add_mib(IPV6 - MIB)#endif     struct variable3 ipv6icmp_variables[] = {         {IPV6IFICMPINMSG, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 1}},         {IPV6IFICMPINERRORS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 2}},         {IPV6IFICMPINDSTUNRCHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 3}},         {IPV6IFICMPINADMPROHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 4}},         {IPV6IFICMPINTIMEXCDS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 5}},         {IPV6IFICMPINPARMPROBS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 6}},         {IPV6IFICMPINPKTTOOBIGS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 7}},         {IPV6IFICMPINECHOS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 8}},         {IPV6IFICMPINECHOREPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 9}},         {IPV6IFICMPINRTRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 10}},         {IPV6IFICMPINRTRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 11}},         {IPV6IFICMPINNBRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 12}},         {IPV6IFICMPINNBRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 13}},         {IPV6IFICMPINREDIRECTS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 14}},         {IPV6IFICMPINGRPMEQERYS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 15}},         {IPV6IFICMPINGRPMERSPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 16}},         {IPV6IFICMPINGRPMEREDCS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 17}},         {IPV6IFICMPOUTMSG, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 18}},         {IPV6IFICMPOUTERRORS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 19}},         {IPV6IFICMPOUTDSTUNRCHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 20}},         {IPV6IFICMPOUTADMPROHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 21}},         {IPV6IFICMPOUTTIMEXCDS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 22}},         {IPV6IFICMPOUTPARMPROBS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 23}},         {IPV6IFICMPOUTPKTTOOBIGS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 24}},         {IPV6IFICMPOUTECHOS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 25}},         {IPV6IFICMPOUTECHOREPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 26}},         {IPV6IFICMPOUTRTRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 27}},         {IPV6IFICMPOUTRTRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 28}},         {IPV6IFICMPOUTNBRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 29}},         {IPV6IFICMPOUTNBRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 30}},         {IPV6IFICMPOUTREDIRECTS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 31}},         {IPV6IFICMPOUTGRPMEQERYS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 32}},         {IPV6IFICMPOUTGRPMERSPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 33}},         {IPV6IFICMPOUTGRPMEREDCS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,          {1, 1, 34}}     };oid             ipv6icmp_variables_oid[] = { 1, 3, 6, 1, 2, 1, 56, 1 };#if 0config_load_mib(MIB .56 .1, 8, ipv6icmp_variables)    config_add_mib(IPV6 - ICMP - MIB)#endif     struct variable2 ipv6udp_variables[] = {         {IPV6UDPLOCALADDRESS, ASN_OCTET_STR, RONLY, var_udp6, 2, {1, 1}},         {IPV6UDPLOCALPORT, ASN_INTEGER, RONLY, var_udp6, 2, {1, 2}},         {IPV6UDPIFINDEX, ASN_INTEGER, RONLY, var_udp6, 2, {1, 3}}     };oid             ipv6udp_variables_oid[] = { 1, 3, 6, 1, 2, 1, 7, 6 };#if 0config_load_mib(1.3 .6 .1 .3 .87 .1, 7, ipv6udp_variables)    config_add_mib(IPV6 - UDP - MIB)#endif     struct variable2 ipv6tcp_variables[] = {         {IPV6TCPLOCALADDR, ASN_OCTET_STR, RONLY, var_tcp6, 2, {1, 1}},         {IPV6TCPLOCALPORT, ASN_INTEGER, RONLY, var_tcp6, 2, {1, 2}},         {IPV6TCPREMOTEADDR, ASN_OCTET_STR, RONLY, var_tcp6, 2, {1, 3}},         {IPV6TCPREMOTEPORT, ASN_INTEGER, RONLY, var_tcp6, 2, {1, 4}},         {IPV6TCPIFINDEX, ASN_INTEGER, RONLY, var_tcp6, 2, {1, 5}},         {IPV6TCPCONNSTATE, ASN_INTEGER, RONLY, var_tcp6, 2, {1, 6}},     };oid             ipv6tcp_variables_oid[] = { 1, 3, 6, 1, 2, 1, 6, 16 };#if 0config_load_mib(1.3 .6 .1 .3 .86 .1, 7, ipv6tcp_variables)    config_add_mib(IPV6 - TCP - MIB)#endif     void                     init_ipv6(){    /*     * register ourselves with the agent to handle our mib tree      */    REGISTER_MIB("mibII/ipv6", ipv6_variables, variable3,                 ipv6_variables_oid);    REGISTER_MIB("mibII/icmpv6", ipv6icmp_variables, variable3,                 ipv6icmp_variables_oid);    REGISTER_MIB("mibII/ipv6udp", ipv6udp_variables, variable2,                 ipv6udp_variables_oid);    REGISTER_MIB("mibII/ipv6tcp", ipv6tcp_variables, variable2,                 ipv6tcp_variables_oid);}static intheader_ipv6(register struct variable *vp,            /*             * IN - pointer to variable entry that points here              */            oid * name,         /* IN/OUT - input name requested, output name found */            size_t * length,    /* IN/OUT - length of input and output oid's */            int exact,          /* IN - TRUE if an exact match was requested */            size_t * var_len,   /* OUT - length of variable or 0 if function returned */            WriteMethod ** write_method){    oid             newname[MAX_OID_LEN];    int             result;    DEBUGMSGTL(("mibII/ipv6", "header_ipv6: "));    DEBUGMSGOID(("mibII/ipv6", name, *length));    DEBUGMSG(("mibII/ipv6", " %d\n", exact));    memcpy((char *) newname, (char *) vp->name,           (int) vp->namelen * sizeof(oid));    newname[(int) vp->namelen] = 0;    result =        snmp_oid_compare(name, *length, newname, (int) vp->namelen + 1);    if ((exact && (result != 0)) || (!exact && (result >= 0)))        return (MATCH_FAILED);    memcpy((char *) name, (char *) newname,           ((int) vp->namelen + 1) * sizeof(oid));    *length = vp->namelen + 1;    *write_method = 0;    *var_len = sizeof(long);    /* default to 'long' results */    return (MATCH_SUCCEEDED);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -