Loading tools/hv/hv_kvp_daemon.c +68 −0 Original line number Diff line number Diff line Loading @@ -491,6 +491,68 @@ void kvp_get_os_info(void) return; } static void kvp_process_ipconfig_file(char *cmd, char *config_buf, int len, int element_size, int offset) { char buf[256]; char *p; char *x; FILE *file; /* * First execute the command. */ file = popen(cmd, "r"); if (file == NULL) return; if (offset == 0) memset(config_buf, 0, len); while ((p = fgets(buf, sizeof(buf), file)) != NULL) { if ((len - strlen(config_buf)) < (element_size + 1)) break; x = strchr(p, '\n'); *x = '\0'; strcat(config_buf, p); strcat(config_buf, ";"); } pclose(file); } static void kvp_get_ipconfig_info(char *if_name, struct hv_kvp_ipaddr_value *buffer) { char cmd[512]; /* * Get the address of default gateway (ipv4). */ sprintf(cmd, "%s %s", "ip route show dev", if_name); strcat(cmd, " | awk '/default/ {print $3 }'"); /* * Execute the command to gather gateway info. */ kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way, (MAX_GATEWAY_SIZE * 2), INET_ADDRSTRLEN, 0); /* * Get the address of default gateway (ipv6). */ sprintf(cmd, "%s %s", "ip -f inet6 route show dev", if_name); strcat(cmd, " | awk '/default/ {print $3 }'"); /* * Execute the command to gather gateway info (ipv6). */ kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way, (MAX_GATEWAY_SIZE * 2), INET6_ADDRSTRLEN, 1); } static unsigned int hweight32(unsigned int *w) { unsigned int res = *w - ((*w >> 1) & 0x55555555); Loading Loading @@ -650,6 +712,12 @@ kvp_get_ip_address(int family, char *if_name, int op, strcat((char *)ip_buffer->sub_net, ";"); sn_offset += strlen(sn_str) + 1; } /* * Collect other ip related configuration info. */ kvp_get_ipconfig_info(if_name, ip_buffer); } gather_ipaddr: Loading Loading
tools/hv/hv_kvp_daemon.c +68 −0 Original line number Diff line number Diff line Loading @@ -491,6 +491,68 @@ void kvp_get_os_info(void) return; } static void kvp_process_ipconfig_file(char *cmd, char *config_buf, int len, int element_size, int offset) { char buf[256]; char *p; char *x; FILE *file; /* * First execute the command. */ file = popen(cmd, "r"); if (file == NULL) return; if (offset == 0) memset(config_buf, 0, len); while ((p = fgets(buf, sizeof(buf), file)) != NULL) { if ((len - strlen(config_buf)) < (element_size + 1)) break; x = strchr(p, '\n'); *x = '\0'; strcat(config_buf, p); strcat(config_buf, ";"); } pclose(file); } static void kvp_get_ipconfig_info(char *if_name, struct hv_kvp_ipaddr_value *buffer) { char cmd[512]; /* * Get the address of default gateway (ipv4). */ sprintf(cmd, "%s %s", "ip route show dev", if_name); strcat(cmd, " | awk '/default/ {print $3 }'"); /* * Execute the command to gather gateway info. */ kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way, (MAX_GATEWAY_SIZE * 2), INET_ADDRSTRLEN, 0); /* * Get the address of default gateway (ipv6). */ sprintf(cmd, "%s %s", "ip -f inet6 route show dev", if_name); strcat(cmd, " | awk '/default/ {print $3 }'"); /* * Execute the command to gather gateway info (ipv6). */ kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way, (MAX_GATEWAY_SIZE * 2), INET6_ADDRSTRLEN, 1); } static unsigned int hweight32(unsigned int *w) { unsigned int res = *w - ((*w >> 1) & 0x55555555); Loading Loading @@ -650,6 +712,12 @@ kvp_get_ip_address(int family, char *if_name, int op, strcat((char *)ip_buffer->sub_net, ";"); sn_offset += strlen(sn_str) + 1; } /* * Collect other ip related configuration info. */ kvp_get_ipconfig_info(if_name, ip_buffer); } gather_ipaddr: Loading