area/udphelp wanted
仓库指标
- Star
- (27,997 star)
- PR 合并指标
- (平均合并 8天) (30 天内合并 378 个 PR)
描述
When UDP proxying from A-B it's really unfortunate when bad or misconfigured hardware ends up routing your packets in a loop. Decrementing TTL means you don't end up with that loop being infinite and destroying your CPU.
useful kernel options:
setsockopt(fd, IPPROTO_IP, IP_RECVTTL, &get_ttl, sizeof(get_ttl));
setsockopt(fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &get_ttl, sizeof(get_ttl));
kMinCmsgSpaceForRead += CMSG_SPACE(sizeof(int)) // TTL
if ((cmsg->cmsg_level == IPPROTO_IP && cmsg->cmsg_type == IP_TTL) || (cmsg->cmsg_level == IPPROTO_IPV6 && cmsg->cmsg_type == IPV6_HOPLIMIT)) { ttl = reinterpret_cast<int*>(CMSG_DATA(cmsg)))); }