[dhcp/client] Implement Renewing state

Implements unicasting renewal requests to the DHCP server we originally
got the lease from and handling the response. If we never hear back from
the server, then we transition to Rebinding, but the Rebinding state
itself is still not finished, so instead we transition to Init as if
the lease had expired.

This means that we have worse behavior when there are multiple potential
DHCP servers on the network, but still allows us to renew "correctly"
in most cases without ever needing to hang onto a lease beyond its
expiration time.

Bug: 81593
Fixed: 124593
Fixed: 125443
Change-Id: If8f3cd3433966c3caff4d56cfed4d1b9952f62f0
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/851800
Reviewed-by: Ghanan Gowripalan <ghanan@google.com>
Fuchsia-Auto-Submit: Evan Wildenhain <wildenhain@google.com>
Reviewed-by: Alex Konradi <akonradi@google.com>
Commit-Queue: Evan Wildenhain <wildenhain@google.com>
11 files changed
tree: 2a714c83019f564a70ecb7c2825b112bb4d9c89a
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. .style.yapf
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.