Repository navigation
feat(opds): network interface classification and bind planning - #147
Merged
Merged
Conversation
phildenhoff
added this pull request to stack #156
September 18, 2026 00:24
libcalibre Test Coverage ReportOverall coverage: 79.96% Coverage breakdown available in the artifacts. |
This was referenced Sep 18, 2026
phildenhoff
force-pushed
the
opds-3-network
branch
from
September 18, 2026 03:16
71b9b1c to
0a05e33
Compare
libcalibre Test Coverage ReportOverall coverage: 79.96% Coverage breakdown available in the artifacts. |
phildenhoff
force-pushed
the
opds-3-network
branch
from
September 18, 2026 17:11
0a05e33 to
f09bebc
Compare
libcalibre Test Coverage ReportOverall coverage: 80.16% Coverage breakdown available in the artifacts. |
phildenhoff
force-pushed
the
opds-3-network
branch
from
September 18, 2026 18:26
f09bebc to
e572f50
Compare
libcalibre Test Coverage ReportOverall coverage: 80.16% Coverage breakdown available in the artifacts. |
phildenhoff
force-pushed
the
opds-3-network
branch
from
September 18, 2026 22:05
e572f50 to
705fc46
Compare
libcalibre Test Coverage ReportOverall coverage: 80.16% Coverage breakdown available in the artifacts. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before anything can listen on a network, something has to answer "which network?" A laptop with Wi-Fi up, a VPN tunnel, and a half-configured IPv6 address all look like candidates, and guessing wrong either shares to the office VPN or binds nothing at all. This layer classifies and plans; the listening happens above it.
network.rsenumerates interfaces via netdev and classifies them LAN / VPN / loopback / other — that classification is policy, not a security boundary. Addresses get scoped before they're usable: link-local is never shareable, and deprecated, tentative, or duplicate-flagged IPv6 addresses are skipped. Bind plans contain concrete addresses only (never wildcard), and advertised URLs are IPv4-first so readers actually get one they can resolve.Covered by in-file unit tests (bind planning for all-networks vs per-interface selection, loopback rejection, unusable-address reporting); full workspace suite (348 tests) green at the stack tip, including 62 citadel-opds tests.
Part of the OPDS v1 stack (above #146; #148 → #149 → #150 → #151 → #152 → #153 → #154 → #155 build on top).