1 #include <arpa/inet.h> 2 #include <stdio.h> 3 4 int main(int argc, char* argv[]) 5 { 6 if (argc < 1) 7 { 8 return 1; 9 } 10 if (argc != 2) 11 { 12 fprintf(stderr, "Usage: %s <ip address>\n", argv[0]); 13 return 1; 14 } 15 16 union 17 { 18 struct in_addr in; 19 struct in6_addr in6; 20 } buf; 21 int af = AF_INET6; 22 if (inet_pton(af, argv[1], &buf) != 1) 23 { 24 af = AF_INET; 25 if (inet_pton(af, argv[1], &buf) != 1) 26 { 27 fprintf(stderr, "Invalid IP Address: %s\n", argv[1]); 28 return 2; 29 } 30 } 31 32 char str[INET6_ADDRSTRLEN]; 33 if (inet_ntop(af, &buf, str, sizeof(str)) == NULL) 34 { 35 return 1; 36 } 37 38 printf("%s\n", str); 39 return 0; 40 } 41