Revision 878a0ae0 qga/commands-posix.c
b/qga/commands-posix.c | ||
---|---|---|
802 | 802 |
{ |
803 | 803 |
GuestNetworkInterfaceList *head = NULL, *cur_item = NULL; |
804 | 804 |
struct ifaddrs *ifap, *ifa; |
805 |
char err_msg[512]; |
|
806 | 805 |
|
807 | 806 |
if (getifaddrs(&ifap) < 0) { |
808 |
snprintf(err_msg, sizeof(err_msg), |
|
809 |
"getifaddrs failed: %s", strerror(errno)); |
|
810 |
error_set(errp, QERR_QGA_COMMAND_FAILED, err_msg); |
|
807 |
error_setg_errno(errp, errno, "getifaddrs failed"); |
|
811 | 808 |
goto error; |
812 | 809 |
} |
813 | 810 |
|
... | ... | |
843 | 840 |
/* we haven't obtained HW address yet */ |
844 | 841 |
sock = socket(PF_INET, SOCK_STREAM, 0); |
845 | 842 |
if (sock == -1) { |
846 |
snprintf(err_msg, sizeof(err_msg), |
|
847 |
"failed to create socket: %s", strerror(errno)); |
|
848 |
error_set(errp, QERR_QGA_COMMAND_FAILED, err_msg); |
|
843 |
error_setg_errno(errp, errno, "failed to create socket"); |
|
849 | 844 |
goto error; |
850 | 845 |
} |
851 | 846 |
|
852 | 847 |
memset(&ifr, 0, sizeof(ifr)); |
853 | 848 |
pstrcpy(ifr.ifr_name, IF_NAMESIZE, info->value->name); |
854 | 849 |
if (ioctl(sock, SIOCGIFHWADDR, &ifr) == -1) { |
855 |
snprintf(err_msg, sizeof(err_msg), |
|
856 |
"failed to get MAC address of %s: %s", |
|
857 |
ifa->ifa_name, |
|
858 |
strerror(errno)); |
|
859 |
error_set(errp, QERR_QGA_COMMAND_FAILED, err_msg); |
|
850 |
error_setg_errno(errp, errno, |
|
851 |
"failed to get MAC address of %s", |
|
852 |
ifa->ifa_name); |
|
860 | 853 |
goto error; |
861 | 854 |
} |
862 | 855 |
|
... | ... | |
867 | 860 |
(int) mac_addr[0], (int) mac_addr[1], |
868 | 861 |
(int) mac_addr[2], (int) mac_addr[3], |
869 | 862 |
(int) mac_addr[4], (int) mac_addr[5]) == -1) { |
870 |
snprintf(err_msg, sizeof(err_msg), |
|
871 |
"failed to format MAC: %s", strerror(errno)); |
|
872 |
error_set(errp, QERR_QGA_COMMAND_FAILED, err_msg); |
|
863 |
error_setg_errno(errp, errno, "failed to format MAC"); |
|
873 | 864 |
goto error; |
874 | 865 |
} |
875 | 866 |
|
... | ... | |
884 | 875 |
address_item->value = g_malloc0(sizeof(*address_item->value)); |
885 | 876 |
p = &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; |
886 | 877 |
if (!inet_ntop(AF_INET, p, addr4, sizeof(addr4))) { |
887 |
snprintf(err_msg, sizeof(err_msg), |
|
888 |
"inet_ntop failed : %s", strerror(errno)); |
|
889 |
error_set(errp, QERR_QGA_COMMAND_FAILED, err_msg); |
|
878 |
error_setg_errno(errp, errno, "inet_ntop failed"); |
|
890 | 879 |
goto error; |
891 | 880 |
} |
892 | 881 |
|
... | ... | |
906 | 895 |
address_item->value = g_malloc0(sizeof(*address_item->value)); |
907 | 896 |
p = &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr; |
908 | 897 |
if (!inet_ntop(AF_INET6, p, addr6, sizeof(addr6))) { |
909 |
snprintf(err_msg, sizeof(err_msg), |
|
910 |
"inet_ntop failed : %s", strerror(errno)); |
|
911 |
error_set(errp, QERR_QGA_COMMAND_FAILED, err_msg); |
|
898 |
error_setg_errno(errp, errno, "inet_ntop failed"); |
|
912 | 899 |
goto error; |
913 | 900 |
} |
914 | 901 |
|
Also available in: Unified diff