示例#1
0
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);
}
示例#2
0
uint32_t parse_ipv4_netmask(const char *dotted_notation)
{
	return parse_ipv4_addr(dotted_notation);
}
示例#3
0
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;
}