From 64426362cba7aa510d9563f1966b78410ce5a249 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Mon, 19 Feb 2018 09:48:24 +0000 Subject: [PATCH] Reads a cisco.conf file now FossilOrigin-Name: 0d7631196d715c02ab556e28c5ce57372b89e6190cf7f5bef91d0c1a02817b3e --- src/mod/cisco/mod_cisco_ac.c | 61 +++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/src/mod/cisco/mod_cisco_ac.c b/src/mod/cisco/mod_cisco_ac.c index 5d57df23..798117de 100644 --- a/src/mod/cisco/mod_cisco_ac.c +++ b/src/mod/cisco/mod_cisco_ac.c @@ -1,3 +1,4 @@ +#include #include "cw/cw.h" #include "cw/mod.h" @@ -60,17 +61,45 @@ static int register_actions(struct cw_actiondef *actions, int mode) } - +static void errfunc(cfg_t *cfg, const char *fmt, va_list ap){ + + if (cfg && cfg->filename && cfg->line) + cw_log(LOG_ERR, "MOD Cisco cfg file in %s:%d: ", + cfg->filename, cfg->line); + else if (cfg && cfg->filename) + cw_log(LOG_ERR, "MOD Cisco cfg file in %s:", cfg->filename); +} static int init() { + int rc = 1; cw_dbg(DBG_INFO, "Initialiazing mod_cisco ..."); cisco_config = mbag_create(); + + char * hardware_version = strdup(".x01000001"); + char * software_version = NULL; + + cfg_opt_t opts[] = { + CFG_SIMPLE_STR("hardware_version", &hardware_version), + CFG_SIMPLE_STR("software_version",&software_version), + CFG_END() + }; + + cfg_t *cfg; + cfg = cfg_init(opts, CFGF_NONE); - char * hardware_version = ".x01000001"; - char * software_version = ".x07036500"; - + cfg_set_error_function(cfg, errfunc); + char *filename = "cisco.conf"; + FILE * f = fopen(filename,"r"); + if (f){ + fclose(f); + if (cfg_parse(cfg, filename)){ + rc = 0; + goto errX; + } + } + uint8_t * str; str = bstr_create_from_cfgstr(hardware_version); @@ -80,18 +109,22 @@ static int init() ); free(str); - str = bstr_create_from_cfgstr(software_version); - mbag_set_bstrv(cisco_config, CW_ITEM_AC_SOFTWARE_VERSION, - CW_VENDOR_ID_CISCO, - bstr_data(str),bstr_len(str) - ); - free(str); - - - return 1; + if (software_version){ + str = bstr_create_from_cfgstr(software_version); + mbag_set_bstrv(cisco_config, CW_ITEM_AC_SOFTWARE_VERSION, + CW_VENDOR_ID_CISCO, + bstr_data(str),bstr_len(str) + ); + free(str); + } +errX: + if (hardware_version) + free (hardware_version); + if (software_version) + free(software_version); + return rc; } - static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len, struct sockaddr *from, int mode) {