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[]) { ...@@ -156,28 +156,27 @@ int main(int argc, char *argv[]) {
auto up = get_var("UP_SCRIPT"); auto up = get_var("UP_SCRIPT");
auto endpoint = get_var("ENDPOINT"); auto endpoint = get_var("ENDPOINT");
auto mark = get_var_number("MARK"); auto mark = get_var_number("MARK");
auto family = get_var_number("FAMILY", true) == 4 ? AF_INET : AF_INET6;
if (endpoint != nullptr) { if (endpoint != nullptr) {
addrinfo hints = { addrinfo hints = {
// .ai_family = AF_UNSPEC // AF_INET, AF_INET6 如果你需要只请求A或AAAA .ai_family = family
}; };
addrinfo *result; addrinfo *result;
if (getaddrinfo(argv[1], argv[2], &hints, &result) != 0) { auto ret = getaddrinfo(endpoint, nullptr, &hints, &result);
perror("getaddrinfo"); if (ret != 0) {
} puts(gai_strerror(ret));
return -1;
for (auto rp = result; rp != nullptr; rp = rp->ai_next) {
remote_addr = *(sockaddr_storage *) rp->ai_addr;
break; // remote_addr.ss_family 如果你需要从结果里筛选
} }
remote_addr = *(sockaddr_storage *) result->ai_addr;
freeaddrinfo(result); /* No longer needed */ freeaddrinfo(result); /* No longer needed */
} }
ifreq ifr{}; ifreq ifr{};
ifr.ifr_flags = IFF_TUN | IFF_NO_PI; ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
strncpy(ifr.ifr_name, dev, IFNAMSIZ); strncpy(ifr.ifr_name, dev, IFNAMSIZ);
auto raw = socket(AF_INET, SOCK_RAW, proto); auto raw = socket(family, SOCK_RAW, proto);
if (raw < 0) { if (raw < 0) {
perror("socket init error"); perror("socket init error");
return -1; return -1;
...@@ -193,7 +192,7 @@ int main(int argc, char *argv[]) { ...@@ -193,7 +192,7 @@ int main(int argc, char *argv[]) {
perror("tun init error"); perror("tun init error");
return -1; return -1;
} }
std::cout << dev << std::endl; puts(dev);
if (ioctl(tun, TUNSETIFF, &ifr) < 0) { if (ioctl(tun, TUNSETIFF, &ifr) < 0) {
perror("ioctl error"); 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