sinsp_ipv4_ifinfo make_ipv4_interface(const char *addr, const char *netmask, const char* broadcast, const char *name) { return sinsp_ipv4_ifinfo( parse_ipv4_addr(addr), parse_ipv4_netmask(netmask), parse_ipv4_broadcast(broadcast), name); }
uint32_t parse_ipv4_netmask(const char *dotted_notation) { return parse_ipv4_addr(dotted_notation); }
uint32_t parse_ipv4_broadcast(const char *dotted_notation) { return parse_ipv4_addr(dotted_notation); }
int app_pipeline_fc_load_file_ipv4(char *filename, struct pipeline_fc_key *keys, uint32_t *port_ids, uint32_t *flow_ids, uint32_t *n_keys, uint32_t *line) { FILE *f = NULL; char file_buf[1024]; uint32_t i, l; /* Check input arguments */ if ((filename == NULL) || (keys == NULL) || (port_ids == NULL) || (flow_ids == NULL) || (n_keys == NULL) || (*n_keys == 0) || (line == NULL)) { if (line) *line = 0; return -1; } /* Open input file */ f = fopen(filename, "r"); if (f == NULL) { *line = 0; return -1; } /* Read file */ for (i = 0, l = 1; i < *n_keys; l++) { char *tokens[32]; uint32_t n_tokens = RTE_DIM(tokens); struct in_addr sipaddr, dipaddr; uint16_t sport, dport; uint8_t proto; uint32_t portid, flowid; int status; if (fgets(file_buf, sizeof(file_buf), f) == NULL) break; status = parse_tokenize_string(file_buf, tokens, &n_tokens); if (status) goto error2; if ((n_tokens == 0) || (tokens[0][0] == '#')) continue; if ((n_tokens != 10) || strcmp(tokens[0], "ipv4") || parse_ipv4_addr(tokens[1], &sipaddr) || parse_ipv4_addr(tokens[2], &dipaddr) || parser_read_uint16(&sport, tokens[3]) || parser_read_uint16(&dport, tokens[4]) || parser_read_uint8(&proto, tokens[5]) || strcmp(tokens[6], "port") || parser_read_uint32(&portid, tokens[7]) || strcmp(tokens[8], "id") || parser_read_uint32(&flowid, tokens[9])) goto error2; keys[i].type = FLOW_KEY_IPV4_5TUPLE; keys[i].key.ipv4_5tuple.ip_src = rte_be_to_cpu_32(sipaddr.s_addr); keys[i].key.ipv4_5tuple.ip_dst = rte_be_to_cpu_32(dipaddr.s_addr); keys[i].key.ipv4_5tuple.port_src = sport; keys[i].key.ipv4_5tuple.port_dst = dport; keys[i].key.ipv4_5tuple.proto = proto; port_ids[i] = portid; flow_ids[i] = flowid; if (app_pipeline_fc_key_check(&keys[i])) goto error2; i++; } /* Close file */ *n_keys = i; fclose(f); return 0; error2: *line = l; fclose(f); return -1; }