p2p/nat: improve gateway detection in potentialGateways function #506
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.
Description
This PR improves the gateway detection mechanism in the NAT-PMP implementation. The current implementation makes a simple assumption that the router's IP is always X.X.X.1 in local networks, which isn't always true. The enhanced version provides more robust and flexible gateway detection by supporting multiple common gateway patterns and implementing better error handling.
Key improvements:
Support for multiple gateway IP patterns (X.X.X.1, X.X.X.254)
Skip inactive and loopback network interfaces
Implement deduplication of gateway IPs
Better error handling for network interface operations
Comprehensive function documentation
Tests
The existing test coverage for NAT-PMP functionality remains intact. The changes are primarily focused on improving the gateway detection logic without modifying the core NAT-PMP behavior. The improved implementation maintains backward compatibility while adding support for more network configurations.
The changes are defensive in nature - if a gateway can't be found using the new patterns, the function will still return the same results as before.
Additional context
This improvement addresses a limitation in gateway detection that could affect users with non-standard router configurations. The enhancement makes the NAT-PMP discovery process more reliable across different network setups while maintaining the quick discovery requirement (1-second timeout) of the original implementation.
Metadata
Fixes the TODO comment in p2p/nat/natpmp.go regarding gateway detection improvement.