Skip to content

solarish: add missing netinet/in.h and netinet/ip.h constants - #5709

Draft
extrowerk wants to merge 1 commit into
rust-lang:mainfrom
extrowerk:illumos-netinet
Draft

extrowerk wants to merge 1 commit into
rust-lang:mainfrom
extrowerk:illumos-netinet

Conversation

@extrowerk

Copy link
Copy Markdown

Only a handful of IPPROTO_* values were bound, and many common IPv4
and IPv6 socket options were missing. Add the remaining IPPROTO_*
values, the IP_RECV*, IP_NEXTHOP and IPV6_* socket options, the
RFC 3678 MCAST_* options, IPV6_PREFER_SRC_*, and the IPTOS_*,
IPOPT_* and limit constants from <netinet/ip.h>.

Types follow the other platforms (c_int for socket options and
protocol numbers, u8 for header field values).

IPPROTO_MH, IPPROTO_HIP and IPPROTO_SHIM6 go in the illumos module
since I could not confirm that Solaris defines them; everything else is
long-standing OpenSolaris API and goes in the shared module.

netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L154-L186
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L913-L937
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L1013-L1014
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L1126-L1127
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L1229-L1293
netinet/ip.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/ip.h#L34-L177

Testing

  • cargo check for x86_64-unknown-illumos, aarch64-unknown-illumos,
    x86_64-pc-solaris and sparcv9-sun-solaris (with -Dwarnings).
  • Every name in the applicable libc-test/semver lists compiles for
    illumos and Solaris; new constant values were cross-checked
    mechanically against the illumos-gate headers.
  • ci/style.py checks (rustfmt, sorted/unique semver lists, style test).
  • CC=clang cargo test -p libc-test on OmniOS r151060 (x86_64): passes

@rustbot label stable-nominated

🤖 Generated with Claude Code

https://claude.ai/code/session_01PUjq5rfL3s7TbKS3PeAE5K

Only a handful of `IPPROTO_*` values were bound, and many common IPv4
and IPv6 socket options were missing. Add the remaining `IPPROTO_*`
values, the `IP_RECV*`, `IP_NEXTHOP` and `IPV6_*` socket options, the
RFC 3678 `MCAST_*` options, `IPV6_PREFER_SRC_*`, and the `IPTOS_*`,
`IPOPT_*` and limit constants from `<netinet/ip.h>`.

Types follow the other platforms (`c_int` for socket options and
protocol numbers, `u8` for header field values).

`IPPROTO_MH`, `IPPROTO_HIP` and `IPPROTO_SHIM6` go in the illumos module
since I could not confirm that Solaris defines them; everything else is
long-standing OpenSolaris API and goes in the shared module.

netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L154-L186
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L913-L937
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L1013-L1014
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L1126-L1127
netinet/in.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/in.h#L1229-L1293
netinet/ip.h: https://github.com/illumos/illumos-gate/blob/b56614870515295c253babb2b10fffdd3c60fdbe/usr/src/uts/common/netinet/ip.h#L34-L177
@rustbot

rustbot commented Nov 5, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred in a solarish module

cc @jclulow, @pfmooney

@rustbot rustbot added O-illumos O-solarish O-unix S-waiting-on-review stable-nominated This PR should be considered for cherry-pick to libc's stable release branch labels Nov 5, 2026
@tgross35

tgross35 commented Nov 5, 2026

Copy link
Copy Markdown
Member

Rewrite commit messages and PR descriptions by hand, then you may unmark as a draft. See https://forge.rust-lang.org/policies/llm-usage.html#-banned.

@tgross35
tgross35 marked this pull request as draft November 5, 2026 22:51

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

O-illumos O-solarish O-unix stable-nominated This PR should be considered for cherry-pick to libc's stable release branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants