-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for publishing on IPv6 networks #19
Merged
Merged
Conversation
This file contains 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
Pull Request Test Coverage Report for Build 9588896269Warning: This coverage report may be inaccurate.This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.
Details
💛 - Coveralls |
HI, |
going to merge into the beta branch for now. |
Merged
donavanbecker
added a commit
that referenced
this pull request
Jul 9, 2024
## v1.3.0 (2024-07-08) ### Added - Add support for publishing on IPv6 networks (#19) (@adriancable) - Add support for IPv4-mapped IPv6 addresses (#43) (@donavanbecker & @hjdhjd) ### Changed - update dependencies - update dependencies, fix typedoc (#44) - update changelog, fix lint - Fix: minor housekeeping. (#48) (@@hjdhjd)
donavanbecker
added a commit
that referenced
this pull request
Jul 9, 2024
Co-authored-by: Donavan Becker <donavan.becker@icloud.com>
donavanbecker
added a commit
that referenced
this pull request
Jul 9, 2024
## v1.3.0 (2024-07-08) ### Added - Add support for publishing on IPv6 networks (#19) (@adriancable) - Add support for IPv4-mapped IPv6 addresses (#43) (@donavanbecker & @hjdhjd) ### Changed - update dependencies - update dependencies, fix typedoc (#44) - update changelog, fix lint - Fix: minor housekeeping. (#48) (@@hjdhjd)
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.
♻️ Current situation
Ciao, while it can publish AAAA records over IPv4, cannot publish any records at all over IPv6. This means that on IPv6-only networks, or people who are using routers with broken IPv4 multicast support (Arris and CenturyLink - I am talking about you!), Ciao does not work. 'No Response'!
💡 Proposed solution
I recently made a PR for HAP-NodeJS which adds Avahi/D-Bus as a new advertiser. This supports IPv6 and generally I would recommend it. But some platforms don't/can't have Avahi, e.g. macOS and Windows. So there's still a hole.
So here is a PR to bridge that gap, and add IPv6 publishing to Ciao (which otherwise is pretty complete).
⚙️ Release Notes
MDNSServer.options now adds a new advertiseIpv6 option. It defaults to false, but if you set it to true it'll publish over IPv6.
Testing
Not done much, but I have tested these things on macOS and Linux, and they at least superficially work: (adding, deleting, updating records)
I made the decision to implement IPv6 support by effectively creating "wrapper interfaces" around IPv6-capable network interfaces, which then get special treatment to handle IPv6 vs. IPv4 differences. Out of all possible approaches this keeps the largest proportion of the existing Ciao code intact, which I felt was important because it is very easy with mDNS to subtly break things. (I don't promise I haven't already done that, unfortunately.)
For completeness, it is probably worth adding equivalents to Avahi's publish-aaaa-on-ipv4 and publish-a-on-ipv6 options.