netutils/ping: change socket type to SOCK_RAW #3320
+50
−17
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.
The ping socket creation method is changed from SOCK_DGRAM to SOCK_RAW, because SOCK_DGRAM may not have permission in some environments (e.g. Docker). Also add checksum calculation when send, and perform IP header processing when receive.
Note: Please adhere to Contributing Guidelines.
Summary
netutils/ping: change socket type to SOCK_RAW
The ping socket creation method is changed from SOCK_DGRAM to SOCK_RAW.
In some environments (e.g., Docker based on matrix), creating a socket with SOCK_DGRAM may lack the necessary permissions, causing network ping to be unavailable.
This change also adds manual checksum calculation when sending and performs IP header processing when receiving, which are required when using SOCK_RAW.
Impact
SOCK_DGRAMpermissions are restricted.pingutility.Testing
ping <target_ip>.