| 307 | } |
| 308 | |
| 309 | static void |
| 310 | tbl_init(struct rule **tbl, uint32_t *n_entries, |
| 311 | const char *file_name, int rule_tbl) |
| 312 | { |
| 313 | FILE *f = NULL; |
| 314 | int ret; |
| 315 | const char *rules = "rules"; |
| 316 | const char *tuples = "tuples"; |
| 317 | |
| 318 | if (file_name != NULL) { |
| 319 | f = fopen(file_name, "r"); |
| 320 | if (f == NULL) |
| 321 | rte_exit(-EINVAL, "failed to open file: %s\n", |
| 322 | file_name); |
| 323 | } |
| 324 | |
| 325 | printf("init %s table...", (rule_tbl) ? rules : tuples); |
| 326 | *n_entries = get_str_num(f, *n_entries); |
| 327 | printf("%d entries\n", *n_entries); |
| 328 | *tbl = rte_zmalloc(NULL, sizeof(struct rule) * *n_entries, |
| 329 | RTE_CACHE_LINE_SIZE); |
| 330 | if (*tbl == NULL) |
| 331 | rte_exit(-ENOMEM, "failed to allocate tbl\n"); |
| 332 | |
| 333 | if (f != NULL) { |
| 334 | printf("parse file %s\n", file_name); |
| 335 | ret = parse_file(f, *tbl, rule_tbl); |
| 336 | if (ret != 0) |
| 337 | rte_exit(-EINVAL, "failed to parse file %s\n" |
| 338 | "rules file must be: " |
| 339 | "<uint32_t: spi> <space> " |
| 340 | "<ip_addr: dip> <space> " |
| 341 | "<ip_addr: sip> <space> " |
| 342 | "<string: SPI|SPI_DIP|SIP_DIP_SIP>\n" |
| 343 | "tuples file must be: " |
| 344 | "<uint32_t: spi> <space> " |
| 345 | "<ip_addr: dip> <space> " |
| 346 | "<ip_addr: sip>\n", |
| 347 | file_name); |
| 348 | } else { |
| 349 | printf("generate random values in %s table\n", |
| 350 | (rule_tbl) ? rules : tuples); |
| 351 | get_random_rules(*tbl, *n_entries, rule_tbl); |
| 352 | } |
| 353 | if (f != NULL) |
| 354 | fclose(f); |
| 355 | } |
| 356 | |
| 357 | static void |
| 358 | parse_opts(int argc, char **argv) |
no test coverage detected