Page MenuHomeFreeBSD

inpcb: Factor out parts of in6_pcbbind() and in_pcbbind_setup()
ClosedPublic

Authored by markj on Nov 15 2024, 3:55 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Dec 13, 2:40 PM
Unknown Object (File)
Fri, Dec 13, 1:28 PM
Unknown Object (File)
Thu, Dec 5, 3:35 PM
Unknown Object (File)
Wed, Dec 4, 8:33 AM
Unknown Object (File)
Fri, Nov 29, 2:55 PM
Unknown Object (File)
Nov 19 2024, 2:08 AM
Unknown Object (File)
Nov 18 2024, 6:54 AM
Unknown Object (File)
Nov 17 2024, 9:09 AM
Subscribers

Details

Summary

A large portion of these functions just determines whether the inpcb can
bind to the address/port. This portion has no side effects, so is a
good candidate to move into its own helper function. This patch does
so, making the callers less complicated and reducing indentation.

While moving this code, also make some changes:

  • Load socket options (SO_REUSEADDR etc.) only once. There is nothing preventing another thread from toggling the socket options, so make this function easier to reason about by avoiding races.
  • When checking whether the bind address is an interface address, make a separate sockaddr rather than temporarily modifying the one passed to in_pcbbind().

No functional change intended.

Sponsored by: Klara, Inc.
Sponsored by: Stormshield

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 60580
Build 57464: arc lint + arc unit