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:
wangchen
2025-12-24 20:46:22 +08:00
committed by Xiang Xiao
parent 1ec63f72ac
commit c825404a2b
+18
View File
@@ -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);