[roll] Roll fuchsia [netstack] Change Watcher API to watch DHCP renew

The DHCP netemul integration test case for DHCP client renewal formerly
did not actually test renewal, something only recently revealed by a
test flake. DHCP renewal implies that the client's leased address does
not change upon renewal. But the fuchsia.net.interfaces/Watcher API will
only emit an event in response to a diff in
fuchsia.net.interfaces/Properties. Since DHCP renewal doesn't change the
address, no event was being emitted. But DHCP renewal SHOULD emit an
event: the address may not change but the address validity time, i.e.
the lease expiration time, does change.  In order to emit an event under
these circumstances, the fuchsia.net.interfaces/Address must be updated
to include a valid_until field. This CL makes the appropriate API change
and implements it in netstack, thereby allowing the flakey DHCP test
that instigated this work to be deflaked and fixed. Specifically:

- add `valid_until` field to fuchsia.net.interfaces/Address
- update fidl_fuchsia_net_interfaces_ext to use this new field
- update clients of fidl_fuchsia_net_interfaces_ext to use field
- from the DHCP client add a OfferedAt field to dhcp.Config so that it
can be propagated back to netstack
- in netstack, derive a value for ValidUntil and pipe it to
onPropertiesChange in a []addressPatch so that it may emitted as
part of fuchsia.net.interfaces/Properties events
- update the DHCP netemul integration test to use a long lease and short
renewal time so that the client promptly enters the renewing state but
cannot have its lease expire within the test suite timeout
- update dhcpd to properly issue custom renewal and rebinding time
options in response to configuration

Tested:
* fx test netstack-gotests
* fx test netstack-dhcp-gotests
* fx test dhcp-tests
* fx test netstack_dhcp_integration_test
Original-Fixed: 74365, 75083

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/520301
Original-Revision: 391dd7211441c1dd6b40042b34e4dadad51c128f
GitOrigin-RevId: 02287e4cc0ed9baddc07f62c4e562eb73f06e8e8
Change-Id: I629afa59304f646759e3ca61d737a96f1f669289
1 file changed
tree: bb851bb8d7b59e25453dd82133d14f4d52a885c0
  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.