Запрос на запись A в C - PullRequest
       4

Запрос на запись A в C

0 голосов
/ 12 февраля 2011

Я работаю над кодом, который будет проверять записи DNS с помощью libresolv.
Сначала я делаю запрос с помощью res_query, и это успешно, но если я проверяю запись 'A', dn_expand не вернет мне IP-адрес (и я не думаю, что я действительно должен ожидать его). Тем не менее, я не смог найти функцию, которая будет декодировать IP-адрес от rr
Как я могу получить IP?
Я могу опубликовать код, если это необходимо.

1 Ответ

1 голос
/ 13 февраля 2011

Способ сделать это - взять rdata из rr (используя res_rr_rdata (rr)) и запустить его через inet_ntop.

Для записи A это то, чем я закончил:

if (ns_parserr(&msg, ns_s_an, rrnum, &rr)) {
        printf("ns_parserr: %s\n", strerror(errno));
}
if(ns_rr_type(rr) == ns_t_cname){
        printf("Found cname\n");
}
inet_ntop(AF_INET, ns_rr_rdata(rr), decodedBuffer, NS_MAXDNAME);

decodedBuffer заканчивается ip. Очевидно, для AAAA, используйте AF_INET6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...