Commit 65ba8a1b authored by 神楽坂玲奈's avatar 神楽坂玲奈

ipv6

parent 736011c3
Pipeline #15707 passed with stages
in 36 seconds
......@@ -156,28 +156,27 @@ int main(int argc, char *argv[]) {
auto up = get_var("UP_SCRIPT");
auto endpoint = get_var("ENDPOINT");
auto mark = get_var_number("MARK");
auto family = get_var_number("FAMILY", true) == 4 ? AF_INET : AF_INET6;
if (endpoint != nullptr) {
addrinfo hints = {
// .ai_family = AF_UNSPEC // AF_INET, AF_INET6 如果你需要只请求A或AAAA
.ai_family = family
};
addrinfo *result;
if (getaddrinfo(argv[1], argv[2], &hints, &result) != 0) {
perror("getaddrinfo");
}
for (auto rp = result; rp != nullptr; rp = rp->ai_next) {
remote_addr = *(sockaddr_storage *) rp->ai_addr;
break; // remote_addr.ss_family 如果你需要从结果里筛选
auto ret = getaddrinfo(endpoint, nullptr, &hints, &result);
if (ret != 0) {
puts(gai_strerror(ret));
return -1;
}
remote_addr = *(sockaddr_storage *) result->ai_addr;
freeaddrinfo(result); /* No longer needed */
}
ifreq ifr{};
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
auto raw = socket(AF_INET, SOCK_RAW, proto);
auto raw = socket(family, SOCK_RAW, proto);
if (raw < 0) {
perror("socket init error");
return -1;
......@@ -193,7 +192,7 @@ int main(int argc, char *argv[]) {
perror("tun init error");
return -1;
}
std::cout << dev << std::endl;
puts(dev);
if (ioctl(tun, TUNSETIFF, &ifr) < 0) {
perror("ioctl error");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment