blob: dd28411e1d489d5c35c9f2721a67c11fda8e9c45 [file] [log] [blame]
/*
* read_config.h: reads configuration files for extensible sections.
*
*/
#ifndef READ_CONFIG_H
#define READ_CONFIG_H
#ifdef __cplusplus
extern "C" {
#endif
#define STRINGMAX 1024
#define NORMAL_CONFIG 0
#define PREMIB_CONFIG 1
#define EITHER_CONFIG 2
#include <net-snmp/config_api.h>
/*
* Defines a set of file types and the parse and free functions
* which process the syntax following a given token in a given file.
*/
struct config_files {
char *fileHeader; /* Label for entire file. */
struct config_line *start;
struct config_files *next;
};
struct config_line {
char *config_token; /* Label for each line parser
* in the given file. */
void (*parse_line) (const char *, char *);
void (*free_func) (void);
struct config_line *next;
char config_time; /* {NORMAL,PREMIB,EITHER}_CONFIG */
char *help;
};
struct read_config_memory {
char *line;
struct read_config_memory *next;
};
int netsnmp_config(char *); /* parse a simple line: token=values */
void netsnmp_config_remember(char *); /* process later, during snmp_init() */
void netsnmp_config_process_memories(void); /* run all memories through parser */
void read_config(const char *, struct config_line *, int);
void read_config_files(int);
void free_config(void);
#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2&& __GNUC_MINOR__ < 8)
void netsnmp_config_error(const char *, ...);
void netsnmp_config_warn(const char *, ...);
#else
void netsnmp_config_error(const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
void netsnmp_config_warn(const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
#endif
char *skip_white(char *);
char *skip_not_white(char *);
char *skip_token(char *);
char *copy_nword(char *, char *, int);
char *copy_word(char *, char *); /* do not use */
void read_config_with_type(const char *, const char *);
char *read_config_save_octet_string(char *saveto,
const u_char * str,
size_t len);
char *read_config_read_octet_string(char *readfrom,
u_char ** str,
size_t * len);
char *read_config_read_objid(char *readfrom, oid ** objid,
size_t * len);
char *read_config_save_objid(char *saveto, oid * objid,
size_t len);
char *read_config_read_data(int type, char *readfrom,
void *dataptr, size_t * len);
char *read_config_read_memory(int type, char *readfrom,
char *dataptr, size_t * len);
char *read_config_store_data(int type, char *storeto,
void *dataptr, size_t * len);
char *read_config_store_data_prefix(char prefix, int type,
char *storeto,
void *dataptr, size_t len);
void read_config_store(const char *type, const char *line);
void read_app_config_store(const char *line);
void snmp_save_persistent(const char *type);
void snmp_clean_persistent(const char *type);
struct config_line *read_config_get_handlers(const char *type);
/*
* external memory list handlers
*/
void snmp_config_remember_in_list(char *line,
struct read_config_memory
**mem);
void snmp_config_process_memory_list(struct
read_config_memory
**mem, int, int);
void snmp_config_remember_free_list(struct
read_config_memory
**mem);
void set_configuration_directory(const char *dir);
const char *get_configuration_directory(void);
void set_persistent_directory(const char *dir);
const char *get_persistent_directory(void);
void set_temp_file_pattern(const char *pattern);
const char *get_temp_file_pattern(void);
void handle_long_opt(const char *myoptarg);
#ifdef __cplusplus
}
#endif
#endif /* READ_CONFIG_H */