📄 v3cmpnt.c
字号:
/* * Copyright 1984-2005 Wind River Systems, Inc. * All rights reserved. Provided under license only. * Distribution or other use of this software is only * permitted pursuant to the terms of a license agreement * from Wind River Systems (and is otherwise prohibited). * Refer to that license agreement for terms of use. */#include "copyright_wrs.h"/* * $Log: v3cmpnt.c,v $ * Revision 1.12 2003/01/15 14:05:19 josh * directory structure shifting * * Revision 1.11 2002/03/27 19:22:49 josh * rfc2575 MIB trees needed to be broken up into three separate files * so that there wouldn't be conflicts with the view table that's already * in the same area of the tree. * * Revision 1.10 2001/12/17 21:48:53 meister * Add missimg 4 objects from rfc2571 * * Revision 1.9 2001/12/05 23:07:56 meister * Add rfc2575 mib * * Revision 1.8 2001/12/05 18:48:20 josh * add dynamic funcptr init for lookup_SNMP_community * * Revision 1.7 2001/11/30 19:34:25 meister * exclude snmpv3io if not SNMP_VERSION_3_LICENSED. fix prototype warning * in v3cmpnt.c * * Revision 1.6 2001/11/15 21:53:50 josh * populate the proxy table a little * * Revision 1.5 2001/11/12 22:54:08 meister * Changed some DYNCFG_FUNCPTR's to DYNCFG_EXTERN_FUNCPTR's * * Revision 1.4 2001/11/08 22:18:37 meister * rework pathnames * * Revision 1.3 2001/11/06 21:50:55 josh * second (and hopefully final) pass of new path hacking * * Revision 1.2 2001/11/06 21:20:42 josh * revised new path hacking * * Revision 1.1.1.1 2001/11/05 17:47:51 tneale * Tornado shuffle * * Revision 1.1.2.10 2001/11/02 21:15:11 meister * envoy/h/vxprotos.h -> snmp/vxagent/h/vxprotos.h * * Revision 1.1.2.9 2001/11/02 17:20:24 meister * split out user and core dynamic config * * Revision 1.1.2.8 2001/10/19 21:50:49 meister * snmpdInstalledComponentsValue should be unsigned in all references. * * Revision 1.1.2.7 2001/10/19 21:09:34 meister * get rid of the message-queue method of communicating which components * are installed, in favor of a directly accessible bit-mask variable. We never * never used the message queue for anything the simple bit mask couldnt do. * * Revision 1.1.2.6 2001/10/16 20:52:11 meister * fix that snmpdLog message (initSmpV3Component) typo * * Revision 1.1.2.5 2001/10/16 20:07:22 josh * ...so we shouldn't be referring to it. * * Revision 1.1.2.4 2001/10/16 19:53:04 meister * Tornado 2 doesnt have a VX_USER_MODE #define. * * Revision 1.1.2.3 2001/09/27 01:10:16 meister * Split out coexistence support into V3 component * * Revision 1.1.2.2 2001/09/18 16:36:16 meister * snmpd config msgQ and mutex should have consistent names. * * Revision 1.1.2.1 2001/08/29 15:43:24 meister * component initialization for the vxworks snmpd components * *//* [clearcase]modification history-------------------01c,15apr05,AJS Diffie-Hellman work01b,13apr05,AJS Diffie-Hellman work01a,24nov03,job update copyright information*/#include <vxWorks.h>#include <stdio.h>#include <msgQLib.h>#include <semLib.h>#include <taskLib.h>#include <wrn/wm/snmp/vxagent/snmpdLib.h>#include <wrn/wm/snmp/engine/vxcmpnts.h>#include <wrn/wm/snmp/vxagent/vxprotos.h>#include <wrn/wm/common/dyncfg.h>#include <wrn/wm/snmp/engine/v3_user.h>#include <wrn/wm/snmp/engine/v3_acc.h>#include <wrn/wm/snmp/engine/v3_trgt.h>#include <wrn/wm/snmp/engine/v3_ntfy.h>#include <wrn/wm/snmp/engine/v3_proxy.h>#include <wrn/wm/snmp/engine/v3_comm.h>#include <wrn/wm/snmp/engine/v3_con.h>#include <wrn/wm/snmp/engine/entlogic.h>#if INSTALL_SNMP_V3_DIFFIE_HELLMAN#include <wrn/wm/snmp/engine/v3_dh.h>#include <openssl/rand.h>#include <tickLib.h>#endif /* INSTALL_SNMP_V3_DIFFIE_HELLMAN */DYNCFG_EXTERN_FUNCPTR1(_nvhard_read_v3myid,int,char *)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3users,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_usmDHparams,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3groups,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3access,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3contexts,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3taddr,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3tparam,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3notify,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3nprof,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3nfilt,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_v3proxy,int)DYNCFG_EXTERN_FUNCPTR0(_nvhard_read_community,int)#if (INSTALL_SNMP_VXWORKS_VIRTUAL_STACK)DYNCFG_EXTERN_FUNCPTR1(_nvhard_vs_add, int, int)DYNCFG_EXTERN_FUNCPTR1(_nvhard_vs_remove, int, int)DYNCFG_EXTERN_FUNCPTR1(_vs_v3engine_set, void, ENT_LOGICAL_T *)#endif /*(INSTALL_SNMP_VXWORKS_VIRTUAL_STACK)*/DYNCFG_EXTERN_FUNCPTR0(v3_add_v3_mibs,void)DYNCFG_EXTERN_FUNCPTR3(lookup_SNMP_community,int,SNMP_PKT_T *,SNMPADDR_T *, SNMPADDR_T *)DYNCFG_EXTERN_FUNCPTR0(snmpCleanUserTable,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanSecurityToGroupTable,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanAccessTable,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanContextTable,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanV3Tree,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanTargetTables,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanNotifyTables,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanCommunityTable,void)DYNCFG_EXTERN_FUNCPTR0(snmpCleanProxyTable,void) void registerSnmpV3Component (void);void v3_user_dyncfg_init (void);extern unsigned int snmpdInstalledComponentsValue;extern SEM_ID snmpdConfigMutex;void initSnmpV3Component (void){ int task_mode;#if INSTALL_ENVOY_VXWORKS_TAE task_mode = VX_USER_MODE;#else task_mode = 0x0000;#endif snmpdLog (SNMP_INFO, "InitSnmpV3Component() called\n"); taskSpawn ("tRegSnmpV3Component", 95, task_mode, 8182, (FUNCPTR) registerSnmpV3Component, 0,0,0,0,0,0,0,0,0,0);}void v3_user_dyncfg_init (void){/* these are all from nvhard.c */DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3myid);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3users);#if INSTALL_SNMP_V3_DIFFIE_HELLMANDYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_usmDHparams);#endif /* INSTALL_SNMP_V3_DIFFIE_HELLMAN */DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3groups);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3access);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3contexts);/* these are from vsUtilLib.c */#if (INSTALL_SNMP_VXWORKS_VIRTUAL_STACK)DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_vs_add);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_vs_remove);DYNCFG_FUNCPTR_SET_DEFAULT(_vs_v3engine_set);#endif /*(INSTALL_SNMP_VXWORKS_VIRTUAL_STACK)*/DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanUserTable);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanSecurityToGroupTable);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanAccessTable);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanContextTable);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanV3Tree);DYNCFG_FUNCPTR_SET_DEFAULT(v3_add_v3_mibs);#if INSTALL_ENVOY_SNMP_V3_TARGETDYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3taddr);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3tparam);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanTargetTables);#if INSTALL_ENVOY_SNMP_V3_NOTIFYDYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3notify);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3nprof);DYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3nfilt);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanNotifyTables);#endif /* #if INSTALL_ENVOY_SNMP_V3_NOTIFY */#if INSTALL_ENVOY_SNMP_V3_PROXYDYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_v3proxy);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanProxyTable);#endif /* #if INSTALL_ENVOY_SNMP_V3_PROXY */#if INSTALL_ENVOY_SNMP_COEXISTENCEDYNCFG_FUNCPTR_SET_DEFAULT(_nvhard_read_community);DYNCFG_FUNCPTR_SET_DEFAULT(lookup_SNMP_community);DYNCFG_FUNCPTR_SET_DEFAULT(snmpCleanCommunityTable);#endif /* #if INSTALL_ENVOY_SNMP_COEXISTENCE */#endif /* #if INSTALL_ENVOY_SNMP_V3_TARGET */}void registerSnmpV3Component (void){ semTake (snmpdConfigMutex, WAIT_FOREVER); snmpdInstalledComponentsValue |= SNMPD_VERSION_3_COMPONENT; v3_dyncfg_init (); v3_user_dyncfg_init (); semGive (snmpdConfigMutex);}/** From RFC2571.MIB ** Subtree Object Identifier for Add_Node_From_Root ** snmpEngine OBJECT IDENTIFIER ::= { snmpFrameworkMIBObjects 1 }STATIC OIDC_T oid_v3snmp_engine_node[] = { 1, 3, 6, 1, 6, 3, 10, 2, 1 };OBJ_ID_T objid_v3snmp_engine_node = { sizeof(oid_v3snmp_engine_node)/sizeof(OIDC_T), oid_v3snmp_engine_node};**/extern OBJ_ID_T objid_v3snmp_engine_node;extern MIBNODE_T v3snmp_engine_node;/** From RFC2572.MIB ** Subtree Object Identifier for Add_Node_From_Root ** snmpMPDMIB OBJECT IDENTIFIER ::= { snmpModules 11 }STATIC OIDC_T oid_v3snmp_mpdmib_node[] = { 1, 3, 6, 1, 6, 3, 11 };OBJ_ID_T objid_v3snmp_mpdmib_node = { sizeof(oid_v3snmp_mpdmib_node)/sizeof(OIDC_T), oid_v3snmp_mpdmib_node};**/extern OBJ_ID_T objid_v3snmp_mpdmib_node;extern MIBNODE_T v3snmp_mpdmib_node;/** From RFC2573.MIB ** Subtree Object Identifier for Add_Node_From_Root ** snmpTargetMIB OBJECT IDENTIFIER ::= { snmpModules 12 }STATIC OIDC_T oid_v3snmp_targetmib_node[] = { 1, 3, 6, 1, 6, 3, 12 };OBJ_ID_T objid_v3snmp_targetmib_node = { sizeof(oid_v3snmp_targetmib_node)/sizeof(OIDC_T), oid_v3snmp_targetmib_node};STATIC OIDC_T oid_v3snmp_notifymib_node[] = { 1, 3, 6, 1, 6, 3, 13 };OBJ_ID_T objid_v3snmp_notifymib_node = { sizeof(oid_v3snmp_notifymib_node)/sizeof(OIDC_T), oid_v3snmp_notifymib_node};STATIC OIDC_T oid_v3snmp_proxymib_node[] = { 1, 3, 6, 1, 6, 3, 14 };OBJ_ID_T objid_v3snmp_proxymib_node = { sizeof(oid_v3snmp_proxymib_node)/sizeof(OIDC_T), oid_v3snmp_proxymib_node};**/extern OBJ_ID_T objid_v3snmp_targetmib_node;extern MIBNODE_T v3snmp_targetmib_node;extern OBJ_ID_T objid_v3snmp_notifymib_node;extern MIBNODE_T v3snmp_notifymib_node;extern OBJ_ID_T objid_v3snmp_proxymib_node;extern MIBNODE_T v3snmp_proxymib_node;/** From RFC2574.mibSTATIC OIDC_T oid_v3usm_root_node[] = { 1, 3, 6, 1, 6, 3, 15 };OBJ_ID_T objid_v3usm_root_node = { sizeof(oid_v3usm_root_node)/sizeof(OIDC_T), oid_v3usm_root_node};**/extern OBJ_ID_T objid_v3usm_root_node;extern MIBNODE_T v3usm_root_node;/** From RFC2586.mibSTATIC OIDC_T oid_v3usm_dh_node[] = { 1, 3, 6, 1, 3, 101 };OBJ_ID_T objid_v3usm_dh_node = { sizeof(oid_v3usm_dh_node)/sizeof(OIDC_T), oid_v3usm_dh_node};**/extern OBJ_ID_T objid_v3usm_dh_node;extern MIBNODE_T v3usm_dh_node;/** From RFC2575.MIB ** Subtree Object Identifier for Add_Node_From_Root ** vacmAccessTable OBJECT IDENTIFIER ::= { vacmMIBObjects 4 }STATIC OIDC_T oid_v3vacm_access_root_node[] = { 1, 3, 6, 1, 6, 3, 16, 1, 4 };OBJ_ID_T objid_v3vacm_access_root_node = { sizeof(oid_v3vacm_access_root_node)/sizeof(OIDC_T), oid_v3vacm_access_root_node}; ** Subtree Object Identifier for Add_Node_From_Root ** vacmContextTable OBJECT IDENTIFIER ::= { vacmMIBObjects 1 }STATIC OIDC_T oid_v3vacm_context_root_node[] = { 1, 3, 6, 1, 6, 3, 16, 1, 1 };OBJ_ID_T objid_v3vacm_context_root_node = { sizeof(oid_v3vacm_context_root_node)/sizeof(OIDC_T), oid_v3vacm_context_root_node}; ** Subtree Object Identifier for Add_Node_From_Root ** vacmSecurityToGroupTable OBJECT IDENTIFIER ::= { vacmMIBObjects 2 }STATIC OIDC_T oid_v3vacm_group_root_node[] = { 1, 3, 6, 1, 6, 3, 16, 1, 2 };OBJ_ID_T objid_v3vacm_group_root_node = { sizeof(oid_v3vacm_group_root_node)/sizeof(OIDC_T), oid_v3vacm_group_root_node};**/extern OBJ_ID_T objid_v3vacm_access_root_node;extern MIBNODE_T v3vacm_access_root_node;extern OBJ_ID_T objid_v3vacm_context_root_node;extern MIBNODE_T v3vacm_context_root_node;extern OBJ_ID_T objid_v3vacm_group_root_node;extern MIBNODE_T v3vacm_group_root_node;/** From RFC2576.MIB ** Subtree Object Identifier for Add_Node_From_Root ** snmpCommunityMIB OBJECT IDENTIFIER ::= { snmpModules 18 }STATIC OIDC_T oid_v3snmp_communitymib_node[] = { 1, 3, 6, 1, 6, 3, 18 };OBJ_ID_T objid_v3snmp_communitymib_node = { sizeof(oid_v3snmp_communitymib_node)/sizeof(OIDC_T), oid_v3snmp_communitymib_node};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -