int config_parse_route_priority(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { Network *network = userdata; _cleanup_route_free_ Route *n = NULL; int r; assert(filename); assert(section); assert(lvalue); assert(rvalue); assert(data); r = route_new_static(network, section_line, &n); if (r < 0) return r; r = config_parse_uint32(unit, filename, line, section, section_line, lvalue, ltype, rvalue, &n->priority, userdata); if (r < 0) return r; n = NULL; return 0; }
//------------------------------------------------ // Set run parameters. // static bool configure(int argc, char* argv[]) { if (argc != 2) { fprintf(stdout, "usage: act [config filename]\n"); return false; } FILE* config_file = fopen(argv[1], "r"); if (! config_file) { fprintf(stdout, "couldn't open config file: %s\n", argv[1]); return false; } char line[1024]; while (fgets(line, sizeof(line), config_file)) { if (*line == '#') { continue; } const char* tag = strtok(line, ":" WHITE_SPACE); if (! tag) { continue; } if (! strcmp(tag, TAG_DEVICE_NAMES)) { config_parse_device_names(); } else if (! strcmp(tag, TAG_QUEUE_PER_DEVICE)) { g_queue_per_device = config_parse_yes_no(); } else if (! strcmp(tag, TAG_NUM_QUEUES)) { g_num_queues = config_parse_uint32(); } else if (! strcmp(tag, TAG_THREADS_PER_QUEUE)) { g_threads_per_queue = config_parse_uint32(); } else if (! strcmp(tag, TAG_RUN_SEC)) { g_run_us = (uint64_t)config_parse_uint32() * 1000000; } else if (! strcmp(tag, TAG_REPORT_INTERVAL_SEC)) { g_report_interval_us = config_parse_uint32() * 1000000; } else if (! strcmp(tag, TAG_READ_REQS_PER_SEC)) { g_read_reqs_per_sec = (uint64_t)config_parse_uint32(); } else if (! strcmp(tag, TAG_LARGE_BLOCK_OPS_PER_SEC)) { g_large_block_ops_per_sec = (uint64_t)config_parse_uint32(); } else if (! strcmp(tag, TAG_READ_REQ_NUM_512_BLOCKS)) { g_read_req_num_512_blocks = config_parse_uint32(); } else if (! strcmp(tag, TAG_LARGE_BLOCK_OP_KBYTES)) { g_large_block_ops_bytes = config_parse_uint32() * 1024; } else if (! strcmp(tag, TAG_USE_VALLOC)) { g_use_valloc = config_parse_yes_no(); } else if (! strcmp(tag, TAG_NUM_WRITE_BUFFERS)) { g_num_write_buffers = config_parse_uint32(); } else if (! strcmp(tag, TAG_SCHEDULER_MODE)) { config_parse_scheduler_mode(); } } fclose(config_file); if (g_queue_per_device) { g_num_queues = g_num_devices; } return check_config(); }