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

📄 vacm.h

📁 net_snmp应用程序示例
💻 H
字号:
/* * vacm.h * * SNMPv3 View-based Access Control Model */#ifndef VACM_H#define VACM_H#ifdef __cplusplusextern          "C" {#endif#define VACM_SUCCESS       0#define VACM_NOSECNAME     1#define VACM_NOGROUP       2#define VACM_NOACCESS      3#define VACM_NOVIEW        4#define VACM_NOTINVIEW     5#define VACM_NOSUCHCONTEXT 6#define VACM_SUBTREE_UNKNOWN 7#define SECURITYMODEL	1#define SECURITYNAME	2#define SECURITYGROUP	3#define SECURITYSTORAGE	4#define SECURITYSTATUS	5#define ACCESSPREFIX	1#define ACCESSMODEL	2#define ACCESSLEVEL	3#define ACCESSMATCH	4#define ACCESSREAD	5#define ACCESSWRITE	6#define ACCESSNOTIFY	7#define ACCESSSTORAGE	8#define ACCESSSTATUS	9#define VACMVIEWSPINLOCK 1#define VIEWNAME	2#define VIEWSUBTREE	3#define VIEWMASK	4#define VIEWTYPE	5#define VIEWSTORAGE	6#define VIEWSTATUS	7#define VACM_MAX_STRING 32#define VACMSTRINGLEN   34      /* VACM_MAX_STRING + 2 */    struct vacm_groupEntry {        int             securityModel;        char            securityName[VACMSTRINGLEN];        char            groupName[VACMSTRINGLEN];        int             storageType;        int             status;        u_long          bitMask;        struct vacm_groupEntry *reserved;        struct vacm_groupEntry *next;    };#define CONTEXT_MATCH_EXACT  1#define CONTEXT_MATCH_PREFIX 2/* VIEW ENUMS ---------------------------------------- *//* SNMPD usage: get/set/send-notification views */#define VACM_VIEW_READ     0#define VACM_VIEW_WRITE    1#define VACM_VIEW_NOTIFY   2/* SNMPTRAPD usage: log execute and net-access (forward) usage */#define VACM_VIEW_LOG      3#define VACM_VIEW_EXECUTE  4#define VACM_VIEW_NET      5/* VIEW BIT MASK VALUES-------------------------------- *//* SNMPD usage: get/set/send-notification views */#define VACM_VIEW_READ_BIT      (1 << VACM_VIEW_READ)#define VACM_VIEW_WRITE_BIT     (1 << VACM_VIEW_WRITE)#define VACM_VIEW_NOTIFY_BIT    (1 << VACM_VIEW_NOTIFY)/* SNMPTRAPD usage: log execute and net-access (forward) usage */#define VACM_VIEW_LOG_BIT      (1 << VACM_VIEW_LOG)#define VACM_VIEW_EXECUTE_BIT  (1 << VACM_VIEW_EXECUTE)#define VACM_VIEW_NET_BIT      (1 << VACM_VIEW_NET)    #define VACM_VIEW_NO_BITS      0/* Maximum number of views in the view array */#define VACM_MAX_VIEWS     8#define VACM_VIEW_ENUM_NAME "vacmviews"        void init_vacm(void);        struct vacm_accessEntry {        char            groupName[VACMSTRINGLEN];        char            contextPrefix[VACMSTRINGLEN];        int             securityModel;        int             securityLevel;        int             contextMatch;        char            views[VACM_MAX_VIEWS][VACMSTRINGLEN];        int             storageType;        int             status;        u_long          bitMask;        struct vacm_accessEntry *reserved;        struct vacm_accessEntry *next;    };    struct vacm_viewEntry {        char            viewName[VACMSTRINGLEN];        oid             viewSubtree[MAX_OID_LEN];        size_t          viewSubtreeLen;        u_char          viewMask[VACMSTRINGLEN];        size_t          viewMaskLen;        int             viewType;        int             viewStorageType;        int             viewStatus;        u_long          bitMask;        struct vacm_viewEntry *reserved;        struct vacm_viewEntry *next;    };    void            vacm_destroyViewEntry(const char *, oid *, size_t);    void            vacm_destroyAllViewEntries(void);#define VACM_MODE_FIND                0#define VACM_MODE_IGNORE_MASK         1#define VACM_MODE_CHECK_SUBTREE       2    struct vacm_viewEntry *vacm_getViewEntry(const char *, oid *, size_t,                                             int);    /*     * Returns a pointer to the viewEntry with the     * same viewName and viewSubtree     * Returns NULL if that entry does not exist.     */    int vacm_checkSubtree(const char *, oid *, size_t);    /*     * Check to see if everything within a subtree is in view, not in view,     * or possibly both.     *     * Returns:     *   VACM_SUCCESS          The OID is included in the view.     *   VACM_NOTINVIEW        If no entry in the view list includes the     *                         provided OID, or the OID is explicitly excluded     *                         from the view.      *   VACM_SUBTREE_UNKNOWN  The entire subtree has both allowed and     *                         disallowed portions.     */    void                    vacm_scanViewInit(void);    /*     * Initialized the scan routines so that they will begin at the     * beginning of the list of viewEntries.     *     */    struct vacm_viewEntry *vacm_scanViewNext(void);    /*     * Returns a pointer to the next viewEntry.     * These entries are returned in no particular order,     * but if N entries exist, N calls to view_scanNext() will     * return all N entries once.     * Returns NULL if all entries have been returned.     * view_scanInit() starts the scan over.     */    struct vacm_viewEntry *vacm_createViewEntry(const char *, oid *,                                                size_t);    /*     * Creates a viewEntry with the given index     * and returns a pointer to it.     * The status of this entry is created as invalid.     */    void            vacm_destroyGroupEntry(int, const char *);    void            vacm_destroyAllGroupEntries(void);    struct vacm_groupEntry *vacm_createGroupEntry(int, const char *);    struct vacm_groupEntry *vacm_getGroupEntry(int, const char *);    void            vacm_scanGroupInit(void);    struct vacm_groupEntry *vacm_scanGroupNext(void);    void            vacm_destroyAccessEntry(const char *, const char *,                                            int, int);    void            vacm_destroyAllAccessEntries(void);    struct vacm_accessEntry *vacm_createAccessEntry(const char *,                                                    const char *, int,                                                    int);    struct vacm_accessEntry *vacm_getAccessEntry(const char *,                                                 const char *, int, int);    void            vacm_scanAccessInit(void);    struct vacm_accessEntry *vacm_scanAccessNext(void);    void            vacm_destroySecurityEntry(const char *);    struct vacm_securityEntry *vacm_createSecurityEntry(const char *);    struct vacm_securityEntry *vacm_getSecurityEntry(const char *);    void            vacm_scanSecurityInit(void);    struct vacm_securityEntry *vacm_scanSecurityEntry(void);    int             vacm_is_configured(void);    void            vacm_save(const char *token, const char *type);    void            vacm_save_view(struct vacm_viewEntry *view,                                   const char *token, const char *type);    void            vacm_save_access(struct vacm_accessEntry *access_entry,                                     const char *token, const char *type);    void            vacm_save_group(struct vacm_groupEntry *group_entry,                                    const char *token, const char *type);    void            vacm_parse_config_view(const char *token, char *line);    void            vacm_parse_config_group(const char *token, char *line);    void            vacm_parse_config_access(const char *token,                                             char *line);    int             store_vacm(int majorID, int minorID, void *serverarg,                               void *clientarg);    struct vacm_viewEntry *netsnmp_view_get(struct vacm_viewEntry *head,                                            const char *viewName,                                            oid * viewSubtree,                                            size_t viewSubtreeLen, int mode);#ifdef __cplusplus}#endif#endif                          /* VACM_H */

⌨️ 快捷键说明

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