Я получаю пакет протокола маршрутизации (RIP), и я могу получить локально-локальный адрес исходного маршрутизатора из этого пакета. Но я не могу установить маршрут с помощью link-local addr, мне нужна глобальная ссылка addr исходного маршрутизатора. Как написать код в C? Благодарю. Я попытался, но он не работает.Как получить удаленный глобальный адрес addr через локальную ссылку addr?
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
int main() {
int sockfd;
struct addrinfo hints, *servinfo, *p;
int rv;
char str[INET6_ADDRSTRLEN] = "";
char port[] = "521";
char addr[] ="fe80::a00:27ff:fe22:4d87";
struct sockaddr_in6 sa;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_INET6;
hints.ai_socktype = SOCK_DGRAM;
//inet_pton(AF_INET6, "fe80::a00:27ff:fe22:4d87", &(sa.sin6_addr));
//hints.ai_addr = (void *)&sa;
hints.ai_flags = AI_NUMERICHOST;
if ((rv = getaddrinfo(addr, NULL, &hints, &servinfo)) != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
return 0;
}
for(p = servinfo; p != NULL; p = p->ai_next) {
if (p->ai_family == AF_INET6) {
inet_ntop(AF_INET6, (struct in6_addr *)p->ai_addr->sa_data, str, INET6_ADDRSTRLEN);
printf("%s\n", str);
}
}
freeaddrinfo(servinfo); // all done with this structure
return 0;
}
Я использую индивидуальную операционную систему на встроенной системе. Это не позволяет мне устанавливать локальную ссылку addr в качестве шлюза. Может быть, мне придется попросить моих друзей исправить это. Большое вам спасибо, очень полезно. – zack1030
Если вы не можете использовать локальный адрес ссылки в качестве шлюза, то это ошибка. Какая ОС это? Может быть, я могу помочь. –