dns
unknown
plain_text
5 years ago
1.2 kB
6
Indexable
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <netdb.h>
int main(int argc, char* argv[]) {
if (argc < 2) {
printf("Provide valid IPv4 or IPv6 address\n");
return EXIT_FAILURE;
}
struct sockaddr_in sa;
int res = inet_pton(AF_INET, argv[1], & sa.sin_addr);
switch (res) {
case 0:
printf("Not a valid IPv4 address.\n");
case -1:
if (res == -1) {
printf("\nError(%s)\n", strerror(errno));
}
int n_res = inet_pton(AF_INET6, argv[1], & sa.sin_addr);
switch (n_res) {
case 0:
printf("Not a valid IPv6 address.\n");
case -1:
if (n_res == -1) {
printf("\nError(%s)\n", strerror(errno));
}
return EXIT_FAILURE;
case 1:
sa.sin_family = AF_INET6;
}
case 1:
sa.sin_family = AF_INET;
}
char node[NI_MAXHOST];
memset(node, 0, NI_MAXHOST);
res = getnameinfo((struct sockaddr * ) & sa, sizeof sa, node, sizeof node, NULL, 0, 0);
if (res) {
printf("%s\n", gai_strerror(res));
return EXIT_FAILURE;
}
printf("\nProvided IP: %s\n", argv[1]);
printf("Hostname: %s\n", node);
return EXIT_SUCCESS;
}Editor is loading...