blob: 99fb477a3a3156217f548014f58f0db91a043760 [file] [log] [blame]
/*
* vacm.h
*
* SNMPv3 View-based Access Control Model
*/
#ifndef VACM_H
#define VACM_H
#ifdef __cplusplus
extern "C" {
#endif
#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 VIEWNAME 1
#define VIEWSUBTREE 2
#define VIEWMASK 3
#define VIEWTYPE 4
#define VIEWSTORAGE 5
#define VIEWSTATUS 6
struct vacm_securityEntry {
char securityName[32];
snmp_ipaddr sourceIp;
snmp_ipaddr sourceMask;
char community[32];
struct vacm_securityEntry *next;
};
struct vacm_groupEntry {
int securityModel;
char securityName[32];
char groupName[32];
int storageType;
int status;
u_long bitMask;
struct vacm_groupEntry *reserved;
struct vacm_groupEntry *next;
};
struct vacm_accessEntry {
char groupName[32];
char contextPrefix[32];
int securityModel;
int securityLevel;
int contextMatch;
char readView[32];
char writeView[32];
char notifyView[32];
int storageType;
int status;
u_long bitMask;
struct vacm_accessEntry *reserved;
struct vacm_accessEntry *next;
};
struct vacm_viewEntry {
char viewName[32];
oid viewSubtree[MAX_OID_LEN];
size_t viewSubtreeLen;
u_char viewMask[32];
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);
struct vacm_viewEntry *
vacm_getViewEntry (const char *, oid *, size_t);
/*
* Returns a pointer to the viewEntry with the
* same viewName and viewSubtree
* Returns NULL if that entry does not exist.
*/
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);
#ifdef __cplusplus
}
#endif
#endif /* VACM_H */