Add Amnezia IPC support for dynamic peer configuration with obfuscation parameters #7
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.
This PR adds support for Amnezia WireGuard obfuscation parameters in the IPC protocol, enabling dynamic configuration of Amnezia peers with all necessary obfuscation settings.
Problem
The current implementation only supports standard WireGuard IPC fields. Amnezia WireGuard extends the protocol with additional obfuscation parameters that are essential for traffic disguising, but these weren't supported in the IPC interface, preventing dynamic peer configuration for Amnezia connections.
Solution
Extended the IPC protocol to support all 9 Amnezia obfuscation parameters:
Added Parameters
jc
- junk packet count (traffic padding)jmin
- minimum junk packet sizejmax
- maximum junk packet sizes1
- init packet magic headers2
- response packet magic headerh1
- underload packet magic headerh2
- transport packet magic headerh3
- additional header obfuscation parameterh4
- additional header obfuscation parameterImplementation Details
Peer Structure: Added atomic fields to
Peer
struct for thread-safe storage of obfuscation parameters.IPC Get: Enhanced to conditionally output Amnezia fields (only non-zero values are shown to keep output clean).
IPC Set: Added comprehensive parsing with validation:
Usage Example
Backward Compatibility
Fully backward compatible with existing standard WireGuard IPC usage. Standard peers continue to work unchanged, while Amnezia-specific fields are simply ignored for non-Amnezia configurations.
Resolves the need for dynamic Amnezia peer configuration via IPC as outlined in the issue requirements.
Additional instructions:
Fixes getlantern/engineering#2592
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.