mirror of
https://github.com/apache/nuttx.git
synced 2026-05-21 04:52:02 +08:00
net/icmp: Return -ENOPROTOOPT for SOL_SOCKET to avoid misleading logs
When SOL_SOCKET options (e.g., SO_BINDTODEVICE via ping -I) hit ICMP sockets, icmp_{get,set}sockopt logged “Unrecognized ICMP option: 17” before fallback. Handle SOL_SOCKET explicitly by returning -ENOPROTOOPT so psock_* routes to the socket-level handler. Removes noisy logs without changing behavior (invalid devices still return -ENODEV).
Signed-off-by: wangchen <wangchen41@xiaomi.com>
This commit is contained in:
@@ -383,6 +383,15 @@ static int icmp_getsockopt(FAR struct socket *psock, int level, int option,
|
||||
{
|
||||
switch (level)
|
||||
{
|
||||
case SOL_SOCKET:
|
||||
|
||||
/* Socket-level options are handled by psock_getsockopt()/inet layer.
|
||||
* Return -ENOPROTOOPT so upper layer will fallback to socket-level
|
||||
* handler without emitting misleading ICMP error logs.
|
||||
*/
|
||||
|
||||
return -ENOPROTOOPT;
|
||||
|
||||
case SOL_IP:
|
||||
return ipv4_getsockopt(psock, option, value, value_len);
|
||||
|
||||
@@ -486,6 +495,15 @@ static int icmp_setsockopt(FAR struct socket *psock, int level, int option,
|
||||
{
|
||||
switch (level)
|
||||
{
|
||||
case SOL_SOCKET:
|
||||
|
||||
/* Socket-level options are handled by psock_setsockopt()/inet layer.
|
||||
* Return -ENOPROTOOPT so upper layer will fallback to socket-level
|
||||
* handler without emitting misleading ICMP error logs.
|
||||
*/
|
||||
|
||||
return -ENOPROTOOPT;
|
||||
|
||||
case SOL_IP:
|
||||
return ipv4_setsockopt(psock, option, value, value_len);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user