Reads a cisco.conf file now

FossilOrigin-Name: 0d7631196d715c02ab556e28c5ce57372b89e6190cf7f5bef91d0c1a02817b3e
This commit is contained in:
7u83@mail.ru 2018-02-19 09:48:24 +00:00
parent 9cef44d234
commit 64426362cb
1 changed files with 47 additions and 14 deletions

View File

@ -1,3 +1,4 @@
#include <confuse.h>
#include "cw/cw.h" #include "cw/cw.h"
#include "cw/mod.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() static int init()
{ {
int rc = 1;
cw_dbg(DBG_INFO, "Initialiazing mod_cisco ..."); cw_dbg(DBG_INFO, "Initialiazing mod_cisco ...");
cisco_config = mbag_create(); 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"; cfg_set_error_function(cfg, errfunc);
char * software_version = ".x07036500";
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; uint8_t * str;
str = bstr_create_from_cfgstr(hardware_version); str = bstr_create_from_cfgstr(hardware_version);
@ -80,18 +109,22 @@ static int init()
); );
free(str); free(str);
str = bstr_create_from_cfgstr(software_version); if (software_version){
mbag_set_bstrv(cisco_config, CW_ITEM_AC_SOFTWARE_VERSION, str = bstr_create_from_cfgstr(software_version);
CW_VENDOR_ID_CISCO, mbag_set_bstrv(cisco_config, CW_ITEM_AC_SOFTWARE_VERSION,
bstr_data(str),bstr_len(str) CW_VENDOR_ID_CISCO,
); bstr_data(str),bstr_len(str)
free(str); );
free(str);
}
return 1; 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, static int detect(struct conn *conn, const uint8_t * rawmsg, int rawlen, int elems_len,
struct sockaddr *from, int mode) struct sockaddr *from, int mode)
{ {