Skip to content
Snippets Groups Projects
Commit cc1c8b38 authored by Amin Ben Romdhane's avatar Amin Ben Romdhane
Browse files

IP.ActivePort: Stop browsing when a specific instance is required

parent 775bd689
No related branches found
No related tags found
1 merge request!2IP.ActivePort: Stop browsing when a specific instance is required
Pipeline #168196 passed
...@@ -68,14 +68,16 @@ static void parse_tcp_line(const char* line, int is_ipv6, ActivePort* port) ...@@ -68,14 +68,16 @@ static void parse_tcp_line(const char* line, int is_ipv6, ActivePort* port)
port->state = state; port->state = state;
} }
static void browse_ip_port(struct dmctx *dmctx, DMNODE *parent_node, bool is_ipv6, const char *proc_path, int *id, char *inst) static bool browse_ip_port(struct dmctx *dmctx, DMNODE *parent_node, bool is_ipv6, const char *proc_path, int *id)
{ {
bool is_instance = false;
if (proc_path == NULL || DM_STRLEN(proc_path) == 0) if (proc_path == NULL || DM_STRLEN(proc_path) == 0)
return; return is_instance;
FILE* fp = fopen(proc_path, "r"); FILE* fp = fopen(proc_path, "r");
if (fp == NULL) { if (fp == NULL) {
return; return is_instance;
} }
char line[256] = {0}; char line[256] = {0};
...@@ -93,13 +95,17 @@ static void browse_ip_port(struct dmctx *dmctx, DMNODE *parent_node, bool is_ipv ...@@ -93,13 +95,17 @@ static void browse_ip_port(struct dmctx *dmctx, DMNODE *parent_node, bool is_ipv
continue; continue;
curr_data.additional_data = (void *)(&port); curr_data.additional_data = (void *)(&port);
inst = handle_instance_without_section(dmctx, parent_node, ++(*id)); char *inst = handle_instance_without_section(dmctx, parent_node, ++(*id));
if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&curr_data, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&curr_data, inst) == DM_STOP) {
is_instance = true;
break; break;
} }
}
fclose(fp); fclose(fp);
return is_instance;
} }
static int init_interface_ip_args(struct dm_data *args, struct uci_section *iface_sec, struct uci_section *dmmap_sec, json_object *json_obj) static int init_interface_ip_args(struct dm_data *args, struct uci_section *iface_sec, struct uci_section *dmmap_sec, json_object *json_obj)
...@@ -899,11 +905,14 @@ end: ...@@ -899,11 +905,14 @@ end:
static int browseIPActivePortInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance) static int browseIPActivePortInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
{ {
char *inst = NULL; bool is_instance = false;
int id = 0; int id = 0;
browse_ip_port(dmctx, parent_node, 0, "/proc/net/tcp", &id, inst); is_instance = browse_ip_port(dmctx, parent_node, 0, "/proc/net/tcp", &id);
browse_ip_port(dmctx, parent_node, 1, "/proc/net/tcp6", &id, inst); if (is_instance)
return 0;
browse_ip_port(dmctx, parent_node, 1, "/proc/net/tcp6", &id);
return 0; return 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment