[roll] Roll fuchsia [netstack] Add Rust ICMP ping library

Added a Rust ping library which can be used to send ICMP echo
requests, and verify replies.

A trait is used to abstract over facitilites provided by an async ICMP
socket. Although an implementation of the trait does not exist on
non-fuchsia platforms, the trait enables fakes in tests and describes
the non-portable facilities that are relied upon.

Reachability monitor has been migrated to use this ping library. The
new ping logic sends 3 echo requests on a 1s interval, and considers a
destination reachable iff a valid reply is received within 3 seconds
of the first request. Any error condition results in an unreachable
determination, e.g. socket errors, unable to send within the allotted
1-second duration. Note that as replies are no longer required for
all 3 requests sent, the happy path is now 1RTT compared to 2 seconds.

IPv4 and IPv6 reachability state are now computed in parallel unlike
before. The old C++ ping code has been removed.

Original-Fixed: 75954, 65581
Test: fx test reachability-core-lib-test \
              netstack_reachability_integration_test \
              ping_test ping-tests
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/528101
Original-Revision: fcabae09932a5a054343042e4295f8b2f8e1b33d
GitOrigin-RevId: 39fa2733473c1314f4fde66002c0265aee951823
Change-Id: If98fe629a3abb7849c5217b753655cf65e54dc5d
1 file changed
tree: 43be359029c9a04efb61cedfd8addd1aaddddc9e
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.