[cm][routing] Separate route step from open step

Defines an API for capability routing. This is essentially
one function, route_capability(), which takes an enum-valued
argument specifying the capability type (directory,
protocol, etc) and the relationship to the target (via
a use, expose, etc). Policy verification now occurs
in the routing step for all capability types.

The routing API also includes a helper function which
routes both a storage capability and its backing
directory.

In a follow-up, this will become the public API of the
routing lib.

Bug: 61861
Change-Id: I1b41c3808fb00c13d7cd448cd1ba71c79db07a2b
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/514300
Reviewed-by: Adam Lesinski <adamlesinski@google.com>
Commit-Queue: Laura Peskin <pesk@google.com>
12 files changed
tree: 0600bb56f34e5e1a71e0053c96850e29d394c60a
  1. .clang-format
  2. .clang-tidy
  3. .git-blame-ignore-revs
  4. .gitattributes
  5. .gitignore
  6. .gn
  7. .style.yapf
  8. AUTHORS
  9. BUILD.gn
  10. CODE_OF_CONDUCT.md
  11. CONTRIBUTING.md
  12. LICENSE
  13. OWNERS
  14. PATENTS
  15. README.md
  16. boards/
  17. build/
  18. buildtools/
  19. bundles/
  20. docs/
  21. examples/
  22. garnet/
  23. products/
  24. rustfmt.toml
  25. scripts/
  26. sdk/
  27. src/
  28. third_party/
  29. tools/
  30. zircon/
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

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.