static int spdk_nvmf_parse_init_grp(struct spdk_conf_section *sp) { int i; const char *mask; char **netmasks; int num_netmasks; struct spdk_nvmf_host *host; for (num_netmasks = 0; ; num_netmasks++) { mask = spdk_conf_section_get_nval(sp, "Netmask", num_netmasks); if (mask == NULL) { break; } } if (num_netmasks == 0) { return -1; } netmasks = calloc(num_netmasks, sizeof(char *)); if (!netmasks) { return -1; } for (i = 0; i < num_netmasks; i++) { mask = spdk_conf_section_get_nval(sp, "Netmask", i); netmasks[i] = strdup(mask); if (!netmasks[i]) { free(netmasks); return -1; } } host = spdk_nvmf_host_create(sp->num, num_netmasks, netmasks); if (!host) { free(netmasks); return -1; } return 0; }
int spdk_conf_section_get_intval(struct spdk_conf_section *sp, const char *key) { const char *v; int value; v = spdk_conf_section_get_nval(sp, key, 0); if (v == NULL) { return -1; } value = (int)strtol(v, NULL, 10); return value; }
static int blockdev_aio_initialize(void) { struct spdk_bdev *bdev; int i; const char *val = NULL; char *file; struct spdk_conf_section *sp = spdk_conf_find_section(NULL, "AIO"); bool skip_missing = false; if (sp != NULL) { val = spdk_conf_section_get_val(sp, "SkipMissingFiles"); } if (val != NULL && !strcmp(val, "Yes")) { skip_missing = true; } if (sp != NULL) { for (i = 0; ; i++) { val = spdk_conf_section_get_nval(sp, "AIO", i); if (val == NULL) break; file = spdk_conf_section_get_nmval(sp, "AIO", i, 0); if (file == NULL) { SPDK_ERRLOG("AIO%d: format error\n", i); return -1; } bdev = create_aio_disk(file); if (bdev == NULL && !skip_missing) { return -1; } } } return 0; }
char * spdk_conf_section_get_val(struct spdk_conf_section *sp, const char *key) { return spdk_conf_section_get_nval(sp, key, 0); }