| 277 | } |
| 278 | |
| 279 | bool TAbstractSocket::IsFragmentationForbiden() { |
| 280 | #if defined(_win_) |
| 281 | DWORD flag = 0; |
| 282 | socklen_t sz = sizeof(flag); |
| 283 | Y_ABORT_UNLESS(GetSockOpt(IPPROTO_IP, IP_DONTFRAGMENT, (char*)&flag, &sz) == 0, ""); |
| 284 | return flag; |
| 285 | #elif defined(_linux_) |
| 286 | int flag = 0; |
| 287 | socklen_t sz = sizeof(flag); |
| 288 | Y_ABORT_UNLESS(GetSockOpt(IPPROTO_IPV6, IPV6_MTU_DISCOVER, (char*)&flag, &sz) == 0, ""); |
| 289 | return flag == IPV6_PMTUDISC_DO; |
| 290 | #elif !defined(_darwin_) |
| 291 | int flag = 0; |
| 292 | socklen_t sz = sizeof(flag); |
| 293 | Y_ABORT_UNLESS(GetSockOpt(IPPROTO_IPV6, IPV6_DONTFRAG, (char*)&flag, &sz) == 0, ""); |
| 294 | return flag; |
| 295 | #endif |
| 296 | return false; |
| 297 | } |
| 298 | |
| 299 | void TAbstractSocket::ForbidFragmentation() { |
| 300 | // do not fragment ping packets |
nothing calls this directly
no test coverage detected