| 123 | } |
| 124 | |
| 125 | inline ui32 CalcAddressCrc(const sockaddr_in6& addr) { |
| 126 | Y_ASSERT(addr.sin6_family == AF_INET6); |
| 127 | const ui64* addr64 = (const ui64*)addr.sin6_addr.s6_addr; |
| 128 | const ui32* addr32 = (const ui32*)addr.sin6_addr.s6_addr; |
| 129 | if (addr64[0] == 0 && addr32[2] == 0xffff0000ll) { |
| 130 | // ipv4 |
| 131 | return addr32[3]; |
| 132 | } else { |
| 133 | // ipv6 |
| 134 | return GetIPv6SuffixCrc(addr); |
| 135 | } |
| 136 | } |
| 137 | |
| 138 | TNetSocket::ESendError TNetSocket::SendTo(const char* buf, int size, const sockaddr_in6& toAddress, const EFragFlag frag) const { |
| 139 | Y_ASSERT(size >= UDP_LOW_LEVEL_HEADER_SIZE); |
no test coverage detected