blob: a26bfbca2481139dfe476872eb0118a9f682ab20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#ifndef __DEFS_H__
#define __DEFS_H__
#include <stdlib.h>
#include <stdio.h>
#include "cli_val.h"
#define boolean int
#define LOWEST_PRIORITY 1000
#define MAX_DEPTH 128
#define ENV_ACTION_NAME "COMMIT_ACTION"
#define ENV_ACTION_DELETE "DELETE"
#define ENV_ACTION_SET "SET"
struct Result
{
int _err_code;
char *_err_str;
int _action;
};
typedef enum {
K_NO_OP = 0x01,
K_ACTIVE_OP = 0x02, //as a result of an already created node, but assuming action
K_SET_OP = 0x04,
K_CREATE_OP = 0x08,
K_DEL_OP = 0x10
} NODE_OPERATION;
#define IS_SET(op) (op & K_SET_OP)
#define IS_ACTIVE(op) (op & K_ACTIVE_OP)
#define IS_CREATE(op) (op & K_CREATE_OP)
#define IS_DELETE(op) (op & K_DEL_OP)
#define IS_NOOP(op) (op & K_NO_OP)
#define IS_SET_OR_CREATE(op) ((op & K_SET_OP) || (op & K_CREATE_OP))
/**
* keeps both configuration and template data in single structure
*
**/
/*
TODO: either port over to new system or retain complete set of cli_val definiaitons.
remove _actions and rely on def in the future.
*/
struct Config
{
boolean _multi;
vtw_def _def; //keep this here
char* _help;
char* _default;
char* _path;
};
/*
* is used to define embedded nodes (multi) and leafs
*/
struct Data
{
char* _name; //name of this node
boolean _value; //is this a value?
char* _path;
NODE_OPERATION _operation; //no-op, set, or delete
};
struct VyattaNode
{
struct Data _data;
struct Config _config;
int _priority; //used for setting priority
};
#endif //__DEFS_H__
|