[starnix][iptables] Support TCP and UDP match extensions

Iptables specifies the rule protocol in `ipt_ip`, but specifies port
ranges in match extensions. Add support for TCP and UDP match
extensions, which are only valid if the rule also specifies the
corresponding protocol.

Tested:
- From Starnix console, add a rule that specifies a protocol and port:
  $ iptables -t nat -A INPUT -p tcp --sport 1000:2000 --dport 8000:9000
  -j ACCEPT

- From Ffx, check that the new rule is installed on Netstack:
  $ ffx net filter list

- From Starnix console, add a rule with inversed port:
  $ iptables -t nat -A INPUT -p udp ! --sport 3000:4000 -j ACCEPT

Bug: 307908515
Change-Id: I44ae5909e229295d94d4d67aa6a054e7f9ef5cbb
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1109833
Commit-Queue: David Song <wintermelons@google.com>
Reviewed-by: Peter Johnston <peterjohnston@google.com>
2 files changed
tree: b8b57cdd1b2bd51359a3c284d408dcb07536023a
  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. analysis_options.yaml
  24. AUTHORS
  25. BUILD.gn
  26. CODE_OF_CONDUCT.md
  27. CONTRIBUTING.md
  28. fuchsia.code-workspace
  29. LICENSE
  30. OWNERS
  31. PATENTS
  32. pyproject.toml
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
  36. shac.star
  37. shac.textproto
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.