diff options
-rw-r--r-- | src/bsnmp-regex.c | 46 | ||||
-rw-r--r-- | src/regex-tree.def | 7 |
2 files changed, 49 insertions, 4 deletions
diff --git a/src/bsnmp-regex.c b/src/bsnmp-regex.c index 2d20655..785659b 100644 --- a/src/bsnmp-regex.c +++ b/src/bsnmp-regex.c @@ -53,9 +53,11 @@ TAILQ_HEAD(data_entry_list, data_entry); static struct data_entry_list entries = TAILQ_HEAD_INITIALIZER(entries); static uint32_t entry_count = 0; +static char *config_memory = NULL; + /* configuration */ static u_char *regex_config = NULL; -static char *config_memory = NULL; +static u_char *regex_fifo = NULL; /* ----------------------------------------------------------------------------- * HELPERS @@ -409,6 +411,39 @@ op_regexconfig (struct snmp_context *ctx, struct snmp_value *value, } return SNMP_ERR_NOERROR; + + + case LEAF_regexFifo: + + if (op == SNMP_OP_GET) + return string_get (value, regex_fifo, -1); + + /* Remainder only at initialization */ + if (community != COMM_INITIALIZE) + return SNMP_ERR_NOT_WRITEABLE; + + switch (op) { + case SNMP_OP_SET: + if ((r = string_save (value, ctx, -1, ®ex_fifo)) != SNMP_ERR_NOERROR) + return r; + /* TODO: Make and open the FIFO here.... + if (config_parse () < 0) { + string_rollback (ctx, ®ex_config); + return SNMP_ERR_GENERR; + } */ + break; + case SNMP_OP_COMMIT: + string_commit (ctx); + break; + case SNMP_OP_ROLLBACK: + string_rollback (ctx, ®ex_fifo); + break; + default: + ASSERT(0); + break; + } + + return SNMP_ERR_NOERROR; } ASSERT(0); @@ -528,6 +563,12 @@ module_init (struct lmodule *mod, int argc, char *argv[]) if (!regex_config) return ENOMEM; + regex_fifo = strdup (""); + if (!regex_fifo) { + free (regex_config); + return ENOMEM; + } + return 0; } @@ -548,6 +589,9 @@ module_fini (void) ASSERT (regex_config); free (regex_config); + ASSERT (regex_fifo); + free (regex_fifo); + return 0; } diff --git a/src/regex-tree.def b/src/regex-tree.def index 23e0508..3305ada 100644 --- a/src/regex-tree.def +++ b/src/regex-tree.def @@ -5,9 +5,10 @@ # Valid only during configuration (0 regexConfig OCTETSTRING op_regexconfig GET SET) - - (1 regexCount INTEGER op_regex GET) - (2 regexEntry : INTEGER op_regexentry + (1 regexFifo OCTETSTRING op_regexconfig GET SET) + + (10 regexCount INTEGER op_regex GET) + (11 regexEntry : INTEGER op_regexentry (1 regexIndex INTEGER GET) (2 regexDescr OCTETSTRING GET) (3 regexLast TIMETICKS GET) |