You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-03 17:13:17 +03:00
252 lines
9.3 KiB
C
252 lines
9.3 KiB
C
#ifndef PARSE_H
|
|
#define PARSE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/*
|
|
* parse.h
|
|
*/
|
|
/***********************************************************
|
|
Copyright 1989 by Carnegie Mellon University
|
|
|
|
All Rights Reserved
|
|
|
|
Permission to use, copy, modify, and distribute this software and its
|
|
documentation for any purpose and without fee is hereby granted,
|
|
provided that the above copyright notice appear in all copies and that
|
|
both that copyright notice and this permission notice appear in
|
|
supporting documentation, and that the name of CMU not be
|
|
used in advertising or publicity pertaining to distribution of the
|
|
software without specific, written prior permission.
|
|
|
|
CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
|
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
|
CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
|
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
SOFTWARE.
|
|
******************************************************************/
|
|
|
|
#define MAXLABEL 64 /* maximum characters in a label */
|
|
#define MAXTOKEN 128 /* maximum characters in a token */
|
|
#define MAXQUOTESTR 4096 /* maximum characters in a quoted string */
|
|
|
|
struct variable_list;
|
|
|
|
/*
|
|
* A linked list of tag-value pairs for enumerated integers.
|
|
*/
|
|
struct enum_list {
|
|
struct enum_list *next;
|
|
int value;
|
|
char *label;
|
|
};
|
|
|
|
/*
|
|
* A linked list of ranges
|
|
*/
|
|
struct range_list {
|
|
struct range_list *next;
|
|
int low, high;
|
|
};
|
|
|
|
/*
|
|
* A linked list of indexes
|
|
*/
|
|
struct index_list {
|
|
struct index_list *next;
|
|
char *ilabel;
|
|
char isimplied;
|
|
};
|
|
|
|
/*
|
|
* A linked list of varbinds
|
|
*/
|
|
struct varbind_list {
|
|
struct varbind_list *next;
|
|
char *vblabel;
|
|
};
|
|
|
|
/*
|
|
* A linked list of nodes.
|
|
*/
|
|
struct node {
|
|
struct node *next;
|
|
char *label; /* This node's (unique) textual name */
|
|
u_long subid; /* This node's integer subidentifier */
|
|
int modid; /* The module containing this node */
|
|
char *parent; /* The parent's textual name */
|
|
int tc_index; /* index into tclist (-1 if NA) */
|
|
int type; /* The type of object this represents */
|
|
int access;
|
|
int status;
|
|
struct enum_list *enums; /* (optional) list of enumerated integers */
|
|
struct range_list *ranges;
|
|
struct index_list *indexes;
|
|
char *augments;
|
|
struct varbind_list *varbinds;
|
|
char *hint;
|
|
char *units;
|
|
char *description; /* description (a quoted string) */
|
|
char *reference; /* references (a quoted string) */
|
|
char *defaultValue;
|
|
char *filename;
|
|
int lineno;
|
|
};
|
|
|
|
/*
|
|
* A tree in the format of the tree structure of the MIB.
|
|
*/
|
|
struct tree {
|
|
struct tree *child_list; /* list of children of this node */
|
|
struct tree *next_peer; /* Next node in list of peers */
|
|
struct tree *next; /* Next node in hashed list of names */
|
|
struct tree *parent;
|
|
char *label; /* This node's textual name */
|
|
u_long subid; /* This node's integer subidentifier */
|
|
int modid; /* The module containing this node */
|
|
int number_modules;
|
|
int *module_list; /* To handle multiple modules */
|
|
int tc_index; /* index into tclist (-1 if NA) */
|
|
int type; /* This node's object type */
|
|
int access; /* This nodes access */
|
|
int status; /* This nodes status */
|
|
struct enum_list *enums; /* (optional) list of enumerated integers */
|
|
struct range_list *ranges;
|
|
struct index_list *indexes;
|
|
char *augments;
|
|
struct varbind_list *varbinds;
|
|
char *hint;
|
|
char *units;
|
|
int (*printomat) (u_char **, size_t *, size_t *, int,
|
|
const netsnmp_variable_list *,
|
|
const struct enum_list *, const char *,
|
|
const char *);
|
|
void (*printer) (char *, const netsnmp_variable_list *, const struct enum_list *, const char *, const char *); /* Value printing function */
|
|
char *description; /* description (a quoted string) */
|
|
char *reference; /* references (a quoted string) */
|
|
int reported; /* 1=report started in print_subtree... */
|
|
char *defaultValue;
|
|
};
|
|
|
|
/*
|
|
* Information held about each MIB module
|
|
*/
|
|
struct module_import {
|
|
char *label; /* The descriptor being imported */
|
|
int modid; /* The module imported from */
|
|
};
|
|
|
|
struct module {
|
|
char *name; /* This module's name */
|
|
char *file; /* The file containing the module */
|
|
struct module_import *imports; /* List of descriptors being imported */
|
|
int no_imports; /* The number of such import descriptors */
|
|
/*
|
|
* -1 implies the module hasn't been read in yet
|
|
*/
|
|
int modid; /* The index number of this module */
|
|
struct module *next; /* Linked list pointer */
|
|
};
|
|
|
|
struct module_compatability {
|
|
const char *old_module;
|
|
const char *new_module;
|
|
const char *tag; /* NULL implies unconditional replacement,
|
|
* otherwise node identifier or prefix */
|
|
size_t tag_len; /* 0 implies exact match (or unconditional) */
|
|
struct module_compatability *next; /* linked list */
|
|
};
|
|
|
|
|
|
/*
|
|
* non-aggregate types for tree end nodes
|
|
*/
|
|
#define TYPE_OTHER 0
|
|
#define TYPE_OBJID 1
|
|
#define TYPE_OCTETSTR 2
|
|
#define TYPE_INTEGER 3
|
|
#define TYPE_NETADDR 4
|
|
#define TYPE_IPADDR 5
|
|
#define TYPE_COUNTER 6
|
|
#define TYPE_GAUGE 7
|
|
#define TYPE_TIMETICKS 8
|
|
#define TYPE_OPAQUE 9
|
|
#define TYPE_NULL 10
|
|
#define TYPE_COUNTER64 11
|
|
#define TYPE_BITSTRING 12
|
|
#define TYPE_NSAPADDRESS 13
|
|
#define TYPE_UINTEGER 14
|
|
#define TYPE_UNSIGNED32 15
|
|
#define TYPE_INTEGER32 16
|
|
|
|
#define TYPE_SIMPLE_LAST 16
|
|
|
|
#define TYPE_TRAPTYPE 20
|
|
#define TYPE_NOTIFTYPE 21
|
|
#define TYPE_OBJGROUP 22
|
|
#define TYPE_NOTIFGROUP 23
|
|
#define TYPE_MODID 24
|
|
#define TYPE_AGENTCAP 25
|
|
#define TYPE_MODCOMP 26
|
|
|
|
#define MIB_ACCESS_READONLY 18
|
|
#define MIB_ACCESS_READWRITE 19
|
|
#define MIB_ACCESS_WRITEONLY 20
|
|
#define MIB_ACCESS_NOACCESS 21
|
|
#define MIB_ACCESS_NOTIFY 67
|
|
#define MIB_ACCESS_CREATE 48
|
|
|
|
#define MIB_STATUS_MANDATORY 23
|
|
#define MIB_STATUS_OPTIONAL 24
|
|
#define MIB_STATUS_OBSOLETE 25
|
|
#define MIB_STATUS_DEPRECATED 39
|
|
#define MIB_STATUS_CURRENT 57
|
|
|
|
#define ANON "anonymous#"
|
|
#define ANON_LEN strlen(ANON)
|
|
|
|
struct tree *read_module(const char *);
|
|
struct tree *read_mib(const char *);
|
|
struct tree *read_all_mibs(void);
|
|
int unload_module(const char *name);
|
|
void unload_all_mibs(void);
|
|
void init_mib_internals(void);
|
|
int add_mibfile(const char*, const char*, FILE *);
|
|
int add_mibdir(const char *);
|
|
void add_module_replacement(const char *, const char *,
|
|
const char *, int);
|
|
int which_module(const char *);
|
|
char *module_name(int, char *);
|
|
void print_subtree(FILE *, struct tree *, int);
|
|
void print_ascii_dump_tree(FILE *, struct tree *, int);
|
|
struct tree *find_tree_node(const char *, int);
|
|
const char *get_tc_descriptor(int);
|
|
const char *get_tc_description(int);
|
|
struct tree *find_best_tree_node(const char *, struct tree *,
|
|
u_int *);
|
|
/*
|
|
* backwards compatability
|
|
*/
|
|
struct tree *find_node(const char *, struct tree *);
|
|
struct tree *find_node2(const char *, const char *);
|
|
struct module *find_module(int);
|
|
void adopt_orphans(void);
|
|
char *snmp_mib_toggle_options(char *options);
|
|
void snmp_mib_toggle_options_usage(const char *lead,
|
|
FILE * outf);
|
|
void print_mib(FILE *);
|
|
void print_mib_tree(FILE *, struct tree *, int);
|
|
int get_mib_parse_error_count(void);
|
|
int snmp_get_token(FILE * fp, char *token, int maxtlen);
|
|
struct tree *find_best_tree_node(const char *name,
|
|
struct tree *tree_top,
|
|
u_int * match);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* PARSE_H */
|