This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 50eff3d35472b5c699b6f9f2ea3518c4e1cd7f21
Author: p-szafonimateusz <[email protected]>
AuthorDate: Mon Nov 9 11:51:11 2026 +0100

    net/can: Move can_setsockopt.c into can_raw.c.
    
    Move the code of can_setsockopt.c into can_raw.c without changes and remove
    can_setsockopt.c.  Only the include lists and the file guards are merged; 
the
    functions are copied as they are.
    
    Assisted-by: Claude:claude-opus-5-5
    Signed-off-by: p-szafonimateusz <[email protected]>
---
 .github/CODEOWNERS       |   1 -
 net/can/CMakeLists.txt   |   4 -
 net/can/Make.defs        |   4 -
 net/can/can_raw.c        | 209 ++++++++++++++++++++++++++++++++++++++
 net/can/can_setsockopt.c | 257 -----------------------------------------------
 5 files changed, 209 insertions(+), 266 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 062498fce51..1c83ccb642e 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -15893,7 +15893,6 @@ net/can/Kconfig [email protected] 
[email protected] [email protected] raide
 net/can/can.c [email protected] [email protected] [email protected] 
[email protected] [email protected]
 net/can/can.h [email protected] [email protected] 
[email protected] [email protected] [email protected]
 net/can/can_raw.c [email protected] [email protected] 
[email protected] [email protected] [email protected]
-net/can/can_setsockopt.c [email protected] [email protected] 
[email protected] [email protected] [email protected]
 net/devif/devif.h [email protected] [email protected] 
[email protected] [email protected]
 net/devif/devif_callback.c [email protected] [email protected] 
[email protected] [email protected]
 net/devif/devif_filesend.c [email protected] [email protected] 
[email protected] [email protected]
diff --git a/net/can/CMakeLists.txt b/net/can/CMakeLists.txt
index cbfd6a37b6a..39f2ac08f28 100644
--- a/net/can/CMakeLists.txt
+++ b/net/can/CMakeLists.txt
@@ -25,10 +25,6 @@ if(CONFIG_NET_CAN)
   # Socket layer
   list(APPEND SRCS can_raw.c)
 
-  if(CONFIG_NET_CANPROTO_OPTIONS)
-    list(APPEND SRCS can_setsockopt.c)
-  endif()
-
   if(CONFIG_NET_CAN_NBUFFERS GREATER 0)
     list(APPEND SRCS can_bufpool.c)
   endif()
diff --git a/net/can/Make.defs b/net/can/Make.defs
index ac39110e57a..58c33961a64 100644
--- a/net/can/Make.defs
+++ b/net/can/Make.defs
@@ -28,10 +28,6 @@ ifeq ($(CONFIG_NET_CAN),y)
 
 SOCK_CSRCS += can_raw.c
 
-ifeq ($(CONFIG_NET_CANPROTO_OPTIONS),y)
-SOCK_CSRCS += can_setsockopt.c
-endif
-
 ifdef CONFIG_NET_CAN_NBUFFERS
 ifneq (${CONFIG_NET_CAN_NBUFFERS},0)
 SOCK_CSRCS += can_bufpool.c
diff --git a/net/can/can_raw.c b/net/can/can_raw.c
index 903f6c76b6e..c51889064da 100644
--- a/net/can/can_raw.c
+++ b/net/can/can_raw.c
@@ -1530,6 +1530,215 @@ int can_getsockopt(FAR struct socket *psock, int level, 
int option,
   return ret;
 }
 
+/****************************************************************************
+ * Name: can_setsockopt
+ *
+ * Description:
+ *   can_setsockopt() sets the CAN-protocol option specified by the
+ *   'option' argument to the value pointed to by the 'value' argument for
+ *   the socket specified by the 'psock' argument.
+ *
+ *   See <nuttx/can.h> for the a complete list of values of CAN protocol
+ *   options.
+ *
+ * Input Parameters:
+ *   psock     Socket structure of socket to operate on
+ *   level     Protocol level to set the option
+ *   option    identifies the option to set
+ *   value     Points to the argument value
+ *   value_len The length of the argument value
+ *
+ * Returned Value:
+ *   Returns zero (OK) on success.  On failure, it returns a negated errno
+ *   value to indicate the nature of the error.  See psock_setcockopt() for
+ *   the list of possible error values.
+ *
+ ****************************************************************************/
+
+int can_setsockopt(FAR struct socket *psock, int level, int option,
+                   FAR const void *value, socklen_t value_len)
+{
+  FAR struct can_conn_s *conn;
+  int ret = OK;
+  int count = 0;
+
+  DEBUGASSERT(value_len == 0 || value != NULL);
+
+  conn = psock->s_conn;
+
+  /* SO_RCVBUF and SO_SNDBUF are socket-level options that are kept in
+   * the CAN connection; psock_socketlevel_option() handles the others.
+   */
+
+  if (level == SOL_SOCKET)
+    {
+      if (option != SO_RCVBUF && option != SO_SNDBUF)
+        {
+          return -ENOPROTOOPT;
+        }
+    }
+  else if (level != SOL_CAN_RAW)
+    {
+      return -ENOPROTOOPT;
+    }
+
+  if (psock->s_type != SOCK_RAW)
+    {
+      nerr("ERROR:  Not a RAW CAN socket\n");
+      return -ENOTCONN;
+    }
+
+  switch (option)
+    {
+      case CAN_RAW_FILTER:
+        if (value_len == 0)
+          {
+            conn->filter_count = 0;
+            ret = OK;
+          }
+        else if (value_len % sizeof(struct can_filter) != 0)
+          {
+            ret = -EINVAL;
+          }
+        else if (value_len > CONFIG_NET_CAN_RAW_FILTER_MAX *
+                   sizeof(struct can_filter))
+          {
+            ret = -EINVAL;
+          }
+        else
+          {
+            int i;
+
+            count = value_len / sizeof(struct can_filter);
+
+            for (i = 0; i < count; i++)
+              {
+                conn->filters[i] = ((struct can_filter *)value)[i];
+              }
+
+            conn->filter_count = count;
+
+            ret = OK;
+          }
+        break;
+
+#ifdef CONFIG_NET_CAN_ERRORS
+      case CAN_RAW_ERR_FILTER:
+        if (value_len != sizeof(can_err_mask_t))
+          {
+            return -EINVAL;
+          }
+
+        conn->err_mask = *(FAR can_err_mask_t *)value;
+        break;
+#endif
+
+      case CAN_RAW_LOOPBACK:
+      case CAN_RAW_RECV_OWN_MSGS:
+#ifdef CONFIG_NET_CAN_CANFD
+      case CAN_RAW_FD_FRAMES:
+#endif
+#ifdef CONFIG_NET_CAN_RAW_TX_DEADLINE
+      case CAN_RAW_TX_DEADLINE:
+#endif
+        /* Verify that option is the size of an 'int'.  Should also check
+         * that 'value' is properly aligned for an 'int'
+         */
+
+        if (value_len != sizeof(int))
+          {
+            return -EINVAL;
+          }
+
+        /* Lock the network so that we have exclusive access to the socket
+         * options.
+         */
+
+        conn_lock(&conn->sconn);
+
+        /* Set or clear the option bit */
+
+        if (*(FAR int *)value)
+          {
+            _SO_SETOPT(conn->sconn.s_options, option);
+          }
+        else
+          {
+            _SO_CLROPT(conn->sconn.s_options, option);
+          }
+
+        conn_unlock(&conn->sconn);
+        break;
+
+#if CONFIG_NET_RECV_BUFSIZE > 0
+      case SO_RCVBUF:
+        {
+          int buffersize;
+
+          /* Verify that option is the size of an 'int'.  Should also check
+           * that 'value' is properly aligned for an 'int'
+           */
+
+          if (value_len != sizeof(int))
+            {
+              return -EINVAL;
+            }
+
+          /* Get the value.  Is the option being set or cleared? */
+
+          buffersize = *(FAR int *)value;
+          if (buffersize < 0)
+            {
+              return -EINVAL;
+            }
+
+#if CONFIG_NET_MAX_RECV_BUFSIZE > 0
+          buffersize = MIN(buffersize, CONFIG_NET_MAX_RECV_BUFSIZE);
+#endif
+          conn->rcvbufs = buffersize;
+
+          break;
+        }
+#endif
+
+#if CONFIG_NET_SEND_BUFSIZE > 0
+      case SO_SNDBUF:
+        {
+          int buffersize;
+
+          /* Verify options */
+
+          if (value_len != sizeof(int))
+            {
+              return -EINVAL;
+            }
+
+          buffersize = *(FAR int *)value;
+          if (buffersize < 0)
+            {
+              return -EINVAL;
+            }
+
+#   if CONFIG_NET_MAX_SEND_BUFSIZE > 0
+          /* Limit the size of the send buffer */
+
+          buffersize = MIN(buffersize, CONFIG_NET_MAX_SEND_BUFSIZE);
+#   endif
+
+          conn->sndbufs = buffersize;
+          break;
+        }
+#endif
+
+      default:
+        nerr("ERROR: Unrecognized CAN option: %d\n", option);
+        ret = -ENOPROTOOPT;
+        break;
+    }
+
+  return ret;
+}
+
 #endif
 
 /****************************************************************************
diff --git a/net/can/can_setsockopt.c b/net/can/can_setsockopt.c
deleted file mode 100644
index 175fd1fd85a..00000000000
--- a/net/can/can_setsockopt.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/****************************************************************************
- * net/can/can_setsockopt.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/time.h>
-#include <stdint.h>
-#include <errno.h>
-#include <assert.h>
-#include <nuttx/debug.h>
-
-#include <nuttx/net/net.h>
-#include <nuttx/net/can.h>
-
-#include "socket/socket.h"
-#include "utils/utils.h"
-#include "can/can.h"
-
-#ifdef CONFIG_NET_CANPROTO_OPTIONS
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: can_setsockopt
- *
- * Description:
- *   can_setsockopt() sets the CAN-protocol option specified by the
- *   'option' argument to the value pointed to by the 'value' argument for
- *   the socket specified by the 'psock' argument.
- *
- *   See <nuttx/can.h> for the a complete list of values of CAN protocol
- *   options.
- *
- * Input Parameters:
- *   psock     Socket structure of socket to operate on
- *   level     Protocol level to set the option
- *   option    identifies the option to set
- *   value     Points to the argument value
- *   value_len The length of the argument value
- *
- * Returned Value:
- *   Returns zero (OK) on success.  On failure, it returns a negated errno
- *   value to indicate the nature of the error.  See psock_setcockopt() for
- *   the list of possible error values.
- *
- ****************************************************************************/
-
-int can_setsockopt(FAR struct socket *psock, int level, int option,
-                   FAR const void *value, socklen_t value_len)
-{
-  FAR struct can_conn_s *conn;
-  int ret = OK;
-  int count = 0;
-
-  DEBUGASSERT(value_len == 0 || value != NULL);
-
-  conn = psock->s_conn;
-
-  /* SO_RCVBUF and SO_SNDBUF are socket-level options that are kept in
-   * the CAN connection; psock_socketlevel_option() handles the others.
-   */
-
-  if (level == SOL_SOCKET)
-    {
-      if (option != SO_RCVBUF && option != SO_SNDBUF)
-        {
-          return -ENOPROTOOPT;
-        }
-    }
-  else if (level != SOL_CAN_RAW)
-    {
-      return -ENOPROTOOPT;
-    }
-
-  if (psock->s_type != SOCK_RAW)
-    {
-      nerr("ERROR:  Not a RAW CAN socket\n");
-      return -ENOTCONN;
-    }
-
-  switch (option)
-    {
-      case CAN_RAW_FILTER:
-        if (value_len == 0)
-          {
-            conn->filter_count = 0;
-            ret = OK;
-          }
-        else if (value_len % sizeof(struct can_filter) != 0)
-          {
-            ret = -EINVAL;
-          }
-        else if (value_len > CONFIG_NET_CAN_RAW_FILTER_MAX *
-                   sizeof(struct can_filter))
-          {
-            ret = -EINVAL;
-          }
-        else
-          {
-            int i;
-
-            count = value_len / sizeof(struct can_filter);
-
-            for (i = 0; i < count; i++)
-              {
-                conn->filters[i] = ((struct can_filter *)value)[i];
-              }
-
-            conn->filter_count = count;
-
-            ret = OK;
-          }
-        break;
-
-#ifdef CONFIG_NET_CAN_ERRORS
-      case CAN_RAW_ERR_FILTER:
-        if (value_len != sizeof(can_err_mask_t))
-          {
-            return -EINVAL;
-          }
-
-        conn->err_mask = *(FAR can_err_mask_t *)value;
-        break;
-#endif
-
-      case CAN_RAW_LOOPBACK:
-      case CAN_RAW_RECV_OWN_MSGS:
-#ifdef CONFIG_NET_CAN_CANFD
-      case CAN_RAW_FD_FRAMES:
-#endif
-#ifdef CONFIG_NET_CAN_RAW_TX_DEADLINE
-      case CAN_RAW_TX_DEADLINE:
-#endif
-        /* Verify that option is the size of an 'int'.  Should also check
-         * that 'value' is properly aligned for an 'int'
-         */
-
-        if (value_len != sizeof(int))
-          {
-            return -EINVAL;
-          }
-
-        /* Lock the network so that we have exclusive access to the socket
-         * options.
-         */
-
-        conn_lock(&conn->sconn);
-
-        /* Set or clear the option bit */
-
-        if (*(FAR int *)value)
-          {
-            _SO_SETOPT(conn->sconn.s_options, option);
-          }
-        else
-          {
-            _SO_CLROPT(conn->sconn.s_options, option);
-          }
-
-        conn_unlock(&conn->sconn);
-        break;
-
-#if CONFIG_NET_RECV_BUFSIZE > 0
-      case SO_RCVBUF:
-        {
-          int buffersize;
-
-          /* Verify that option is the size of an 'int'.  Should also check
-           * that 'value' is properly aligned for an 'int'
-           */
-
-          if (value_len != sizeof(int))
-            {
-              return -EINVAL;
-            }
-
-          /* Get the value.  Is the option being set or cleared? */
-
-          buffersize = *(FAR int *)value;
-          if (buffersize < 0)
-            {
-              return -EINVAL;
-            }
-
-#if CONFIG_NET_MAX_RECV_BUFSIZE > 0
-          buffersize = MIN(buffersize, CONFIG_NET_MAX_RECV_BUFSIZE);
-#endif
-          conn->rcvbufs = buffersize;
-
-          break;
-        }
-#endif
-
-#if CONFIG_NET_SEND_BUFSIZE > 0
-      case SO_SNDBUF:
-        {
-          int buffersize;
-
-          /* Verify options */
-
-          if (value_len != sizeof(int))
-            {
-              return -EINVAL;
-            }
-
-          buffersize = *(FAR int *)value;
-          if (buffersize < 0)
-            {
-              return -EINVAL;
-            }
-
-#   if CONFIG_NET_MAX_SEND_BUFSIZE > 0
-          /* Limit the size of the send buffer */
-
-          buffersize = MIN(buffersize, CONFIG_NET_MAX_SEND_BUFSIZE);
-#   endif
-
-          conn->sndbufs = buffersize;
-          break;
-        }
-#endif
-
-      default:
-        nerr("ERROR: Unrecognized CAN option: %d\n", option);
-        ret = -ENOPROTOOPT;
-        break;
-    }
-
-  return ret;
-}
-
-#endif /* CONFIG_NET_CANPROTO_OPTIONS */

Reply via email to