dotnet/runtime

[Ping] Unix - some problems in ping API

Open

#927 创建于 2018年4月9日

在 GitHub 查看
 (30 评论) (8 反应) (0 负责人)C# (5,445 fork)batch import
area-System.Netbughelp wantedtenet-compatibility

仓库指标

Star
 (17,886 star)
PR 合并指标
 (平均合并 12天 11小时) (30 天内合并 661 个 PR)

描述

Related https://github.com/dotnet/corefx/issues/9350

In PowerShell repo we port TestConnection cmdlet and catch some problems in the ping API.

The problems documented in the cmdlet tests - see comments and if (!isWindows) blocks.

Below short list:

  1. Dontfragment doesn't work on Unixes This definitely should work on Linux and on MacOs too
  2. PingReply.Buffer is empty on Unix. Expected - a buffer we send.
  3. Ping unreachable host returns ErrorCode 6 (Handle is invalid) on Unix. Expected (as on Windows) - 11001 (Host not found).
  4. API always returns Options based on default PingOptions() constructor (Ttl=128, DontFragment = false). PingReply.Options.DontFragment:
  • on Windows always returns false. Expected - real value from ping request.
  • on Unix always returns null. Expected - real value from ping request (or false if not implemented).

PingReply.Options.Ttl - always 128. Expected - real value from ping request. PingReply.Options.Status - always Success (if we expect 'TtlExpired'). Expected - real status.

  1. PingReply doesn't return ScopeId in IPAddress

贡献者指南