/* * module init / deinit functions. Returns 0 if OK, or a combination of ERR_*. */ static int init_deviceatlas(void) { int err_code = 0; if (global_deviceatlas.jsonpath != 0) { FILE *jsonp; da_property_decl_t extraprops[] = {{0, 0}}; size_t atlasimglen; da_status_t status; jsonp = fopen(global_deviceatlas.jsonpath, "r"); if (jsonp == 0) { ha_alert("deviceatlas : '%s' json file has invalid path or is not readable.\n", global_deviceatlas.jsonpath); err_code |= ERR_ALERT | ERR_FATAL; goto out; } da_init(); da_seterrorfunc(da_haproxy_log); status = da_atlas_compile(jsonp, da_haproxy_read, da_haproxy_seek, &global_deviceatlas.atlasimgptr, &atlasimglen); fclose(jsonp); if (status != DA_OK) { ha_alert("deviceatlas : '%s' json file is invalid.\n", global_deviceatlas.jsonpath); err_code |= ERR_ALERT | ERR_FATAL; goto out; } status = da_atlas_open(&global_deviceatlas.atlas, extraprops, global_deviceatlas.atlasimgptr, atlasimglen); if (status != DA_OK) { ha_alert("deviceatlas : data could not be compiled.\n"); err_code |= ERR_ALERT | ERR_FATAL; goto out; } if (global_deviceatlas.cookiename == 0) { global_deviceatlas.cookiename = strdup(DA_COOKIENAME_DEFAULT); global_deviceatlas.cookienamelen = strlen(global_deviceatlas.cookiename); } global_deviceatlas.useragentid = da_atlas_header_evidence_id(&global_deviceatlas.atlas, "user-agent"); global_deviceatlas.daset = 1; fprintf(stdout, "Deviceatlas module loaded.\n"); } out: return err_code; }
int netns_init(void) { int err_code = 0; /* if no namespaces have been defined in the config then * there is no point in trying to initialize anything: * my_socketat() will never be called with a valid namespace * structure and thus switching back to the default namespace * is not needed either */ if (!eb_is_empty(&namespace_tree_root)) { if (init_default_namespace() < 0) { ha_alert("Failed to open the default namespace.\n"); err_code |= ERR_ALERT | ERR_FATAL; } } return err_code; }