From 57637e59277dae887a70bad91a02bf1ac0578bc2 Mon Sep 17 00:00:00 2001 From: guoshichao Date: Tue, 14 Jan 2025 15:12:30 +0800 Subject: [PATCH] net: make the sendmsg param type consistent with posix specification To ensure consistency, in all places where the "sendmsg" function is used either directly or indirectly, the type of the "struct msghdr *msg" parameter needs to be modified to "const struct msghdr *msg". Signed-off-by: guoshichao --- include/nuttx/net/net.h | 4 ++-- include/sys/socket.h | 4 ++-- net/bluetooth/bluetooth.h | 4 ++-- net/bluetooth/bluetooth_sendmsg.c | 4 ++-- net/can/can.h | 2 +- net/can/can_sendmsg.c | 2 +- net/icmp/icmp.h | 2 +- net/icmp/icmp_sendmsg.c | 2 +- net/icmpv6/icmpv6.h | 4 ++-- net/icmpv6/icmpv6_sendmsg.c | 4 ++-- net/ieee802154/ieee802154.h | 4 ++-- net/ieee802154/ieee802154_sendmsg.c | 4 ++-- net/inet/inet_sockif.c | 4 ++-- net/local/local.h | 2 +- net/local/local_sendmsg.c | 4 ++-- net/netlink/netlink_sockif.c | 4 ++-- net/pkt/pkt.h | 2 +- net/pkt/pkt_sendmsg_unbuffered.c | 2 +- net/rpmsg/rpmsg_sockif.c | 5 +++-- net/socket/sendmsg.c | 4 ++-- net/usrsock/usrsock.h | 4 ++-- net/usrsock/usrsock_sendmsg.c | 13 +++++++------ syscall/syscall.csv | 2 +- 23 files changed, 44 insertions(+), 42 deletions(-) diff --git a/include/nuttx/net/net.h b/include/nuttx/net/net.h index 2fcdf612aeb..a319b5d345e 100644 --- a/include/nuttx/net/net.h +++ b/include/nuttx/net/net.h @@ -162,7 +162,7 @@ struct sock_intf_s CODE int (*si_poll)(FAR struct socket *psock, FAR struct pollfd *fds, bool setup); CODE ssize_t (*si_sendmsg)(FAR struct socket *psock, - FAR struct msghdr *msg, int flags); + FAR const struct msghdr *msg, int flags); CODE ssize_t (*si_recvmsg)(FAR struct socket *psock, FAR struct msghdr *msg, int flags); CODE int (*si_close)(FAR struct socket *psock); @@ -880,7 +880,7 @@ int psock_connect(FAR struct socket *psock, FAR const struct sockaddr *addr, * ****************************************************************************/ -ssize_t psock_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t psock_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags); /**************************************************************************** diff --git a/include/sys/socket.h b/include/sys/socket.h index ead113a62ef..3cdb3ce75b8 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -412,7 +412,7 @@ static inline FAR struct cmsghdr *__cmsg_nxthdr(FAR void *__ctl, return __ptr; } -static inline FAR struct cmsghdr *cmsg_nxthdr(FAR struct msghdr *__msg, +static inline FAR struct cmsghdr *cmsg_nxthdr(FAR const struct msghdr *__msg, FAR struct cmsghdr *__cmsg) { return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); @@ -462,7 +462,7 @@ int getpeername(int sockfd, FAR struct sockaddr *addr, FAR socklen_t *addrlen); ssize_t recvmsg(int sockfd, FAR struct msghdr *msg, int flags); -ssize_t sendmsg(int sockfd, FAR struct msghdr *msg, int flags); +ssize_t sendmsg(int sockfd, FAR const struct msghdr *msg, int flags); #if CONFIG_FORTIFY_SOURCE > 0 fortify_function(send) ssize_t send(int sockfd, FAR const void *buf, diff --git a/net/bluetooth/bluetooth.h b/net/bluetooth/bluetooth.h index c45c4333238..1494b5b80d6 100644 --- a/net/bluetooth/bluetooth.h +++ b/net/bluetooth/bluetooth.h @@ -387,8 +387,8 @@ void bluetooth_poll(FAR struct net_driver_s *dev, * ****************************************************************************/ -ssize_t bluetooth_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags); +ssize_t bluetooth_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags); /**************************************************************************** * Name: bluetooth_container_initialize diff --git a/net/bluetooth/bluetooth_sendmsg.c b/net/bluetooth/bluetooth_sendmsg.c index da4df8cc5b4..8259d590018 100644 --- a/net/bluetooth/bluetooth_sendmsg.c +++ b/net/bluetooth/bluetooth_sendmsg.c @@ -549,8 +549,8 @@ static ssize_t bluetooth_send(FAR struct socket *psock, FAR const void *buf, * ****************************************************************************/ -ssize_t bluetooth_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags) +ssize_t bluetooth_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags) { FAR const void *buf = msg->msg_iov->iov_base; size_t len = msg->msg_iov->iov_len; diff --git a/net/can/can.h b/net/can/can.h index 3a7a50165d0..5ab14a0e50d 100644 --- a/net/can/can.h +++ b/net/can/can.h @@ -354,7 +354,7 @@ int psock_can_cansend(FAR struct socket *psock); * ****************************************************************************/ -ssize_t can_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t can_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags); /**************************************************************************** diff --git a/net/can/can_sendmsg.c b/net/can/can_sendmsg.c index 1f3054618a7..023b653e258 100644 --- a/net/can/can_sendmsg.c +++ b/net/can/can_sendmsg.c @@ -166,7 +166,7 @@ end_wait: * ****************************************************************************/ -ssize_t can_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t can_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags) { FAR struct net_driver_s *dev; diff --git a/net/icmp/icmp.h b/net/icmp/icmp.h index eaf82f7abfb..0d615ac0f46 100644 --- a/net/icmp/icmp.h +++ b/net/icmp/icmp.h @@ -315,7 +315,7 @@ void icmp_poll(FAR struct net_driver_s *dev, FAR struct icmp_conn_s *conn); ****************************************************************************/ #ifdef CONFIG_NET_ICMP_SOCKET -ssize_t icmp_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t icmp_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags); #endif diff --git a/net/icmp/icmp_sendmsg.c b/net/icmp/icmp_sendmsg.c index 0aaeacdf438..14cfd15cecb 100644 --- a/net/icmp/icmp_sendmsg.c +++ b/net/icmp/icmp_sendmsg.c @@ -265,7 +265,7 @@ end_wait: * ****************************************************************************/ -ssize_t icmp_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t icmp_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags) { FAR const void *buf = msg->msg_iov->iov_base; diff --git a/net/icmpv6/icmpv6.h b/net/icmpv6/icmpv6.h index 6c3b6eb6763..ef2f24579e8 100644 --- a/net/icmpv6/icmpv6.h +++ b/net/icmpv6/icmpv6.h @@ -663,8 +663,8 @@ int icmpv6_foreach(icmpv6_callback_t callback, FAR void *arg); ****************************************************************************/ #ifdef CONFIG_NET_ICMPv6_SOCKET -ssize_t icmpv6_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags); +ssize_t icmpv6_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags); #endif /**************************************************************************** diff --git a/net/icmpv6/icmpv6_sendmsg.c b/net/icmpv6/icmpv6_sendmsg.c index 60e678f220f..0250e9ac5a4 100644 --- a/net/icmpv6/icmpv6_sendmsg.c +++ b/net/icmpv6/icmpv6_sendmsg.c @@ -262,8 +262,8 @@ end_wait: * ****************************************************************************/ -ssize_t icmpv6_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags) +ssize_t icmpv6_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags) { FAR const void *buf = msg->msg_iov->iov_base; size_t len = msg->msg_iov->iov_len; diff --git a/net/ieee802154/ieee802154.h b/net/ieee802154/ieee802154.h index 2864ba7989c..bbb648354a4 100644 --- a/net/ieee802154/ieee802154.h +++ b/net/ieee802154/ieee802154.h @@ -401,8 +401,8 @@ void ieee802154_poll(FAR struct net_driver_s *dev, * ****************************************************************************/ -ssize_t ieee802154_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags); +ssize_t ieee802154_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags); /**************************************************************************** * Name: ieee802154_container_initialize diff --git a/net/ieee802154/ieee802154_sendmsg.c b/net/ieee802154/ieee802154_sendmsg.c index 7da627aea14..c9c83673570 100644 --- a/net/ieee802154/ieee802154_sendmsg.c +++ b/net/ieee802154/ieee802154_sendmsg.c @@ -627,8 +627,8 @@ static ssize_t ieee802154_send(FAR struct socket *psock, FAR const void *buf, * ****************************************************************************/ -ssize_t ieee802154_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags) +ssize_t ieee802154_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags) { FAR const void *buf = msg->msg_iov->iov_base; size_t len = msg->msg_iov->iov_len; diff --git a/net/inet/inet_sockif.c b/net/inet/inet_sockif.c index 208fa3f2c36..b63df5bc599 100644 --- a/net/inet/inet_sockif.c +++ b/net/inet/inet_sockif.c @@ -95,7 +95,7 @@ static ssize_t inet_sendto(FAR struct socket *psock, FAR const void *buf, FAR const struct sockaddr *to, socklen_t tolen); static ssize_t inet_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags); + FAR const struct msghdr *msg, int flags); static ssize_t inet_recvmsg(FAR struct socket *psock, FAR struct msghdr *msg, int flags); static int inet_ioctl(FAR struct socket *psock, @@ -1867,7 +1867,7 @@ static ssize_t inet_sendto(FAR struct socket *psock, FAR const void *buf, ****************************************************************************/ static ssize_t inet_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags) + FAR const struct msghdr *msg, int flags) { FAR void *buf = msg->msg_iov->iov_base; size_t len = msg->msg_iov->iov_len; diff --git a/net/local/local.h b/net/local/local.h index bdeb14bd4c3..3b79a39f224 100644 --- a/net/local/local.h +++ b/net/local/local.h @@ -473,7 +473,7 @@ int local_accept(FAR struct socket *psock, FAR struct sockaddr *addr, * ****************************************************************************/ -ssize_t local_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t local_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags); /**************************************************************************** diff --git a/net/local/local_sendmsg.c b/net/local/local_sendmsg.c index c74a2ec5435..b4a5d25301a 100644 --- a/net/local/local_sendmsg.c +++ b/net/local/local_sendmsg.c @@ -71,7 +71,7 @@ static void local_freectl(FAR struct local_conn_s *conn, int count) } static int local_sendctl(FAR struct local_conn_s *conn, - FAR struct msghdr *msg) + FAR const struct msghdr *msg) { FAR struct local_conn_s *peer; FAR struct file *filep; @@ -410,7 +410,7 @@ errout_with_lock: * ****************************************************************************/ -ssize_t local_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t local_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags) { FAR const struct sockaddr *to = msg->msg_name; diff --git a/net/netlink/netlink_sockif.c b/net/netlink/netlink_sockif.c index 1366914a021..eb17bc19191 100644 --- a/net/netlink/netlink_sockif.c +++ b/net/netlink/netlink_sockif.c @@ -67,7 +67,7 @@ static int netlink_connect(FAR struct socket *psock, static int netlink_poll(FAR struct socket *psock, FAR struct pollfd *fds, bool setup); static ssize_t netlink_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags); + FAR const struct msghdr *msg, int flags); static ssize_t netlink_recvmsg(FAR struct socket *psock, FAR struct msghdr *msg, int flags); static int netlink_close(FAR struct socket *psock); @@ -575,7 +575,7 @@ static int netlink_poll(FAR struct socket *psock, FAR struct pollfd *fds, ****************************************************************************/ static ssize_t netlink_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags) + FAR const struct msghdr *msg, int flags) { FAR const void *buf = msg->msg_iov->iov_base; FAR const struct sockaddr *to = msg->msg_name; diff --git a/net/pkt/pkt.h b/net/pkt/pkt.h index 3753d110093..63d946dafa2 100644 --- a/net/pkt/pkt.h +++ b/net/pkt/pkt.h @@ -397,7 +397,7 @@ int pkt_pollteardown(FAR struct socket *psock, FAR struct pollfd *fds); * ****************************************************************************/ -ssize_t pkt_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t pkt_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags); #ifdef CONFIG_NET_PKTPROTO_OPTIONS diff --git a/net/pkt/pkt_sendmsg_unbuffered.c b/net/pkt/pkt_sendmsg_unbuffered.c index 039a4a99410..b6ddfa56acc 100644 --- a/net/pkt/pkt_sendmsg_unbuffered.c +++ b/net/pkt/pkt_sendmsg_unbuffered.c @@ -180,7 +180,7 @@ end_wait: * ****************************************************************************/ -ssize_t pkt_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t pkt_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags) { FAR const void *buf = msg->msg_iov->iov_base; diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c index 502053921be..0386ffc5408 100644 --- a/net/rpmsg/rpmsg_sockif.c +++ b/net/rpmsg/rpmsg_sockif.c @@ -171,7 +171,8 @@ static int rpmsg_socket_accept(FAR struct socket *psock, static int rpmsg_socket_poll(FAR struct socket *psock, FAR struct pollfd *fds, bool setup); static ssize_t rpmsg_socket_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags); + FAR const struct msghdr *msg, + int flags); static ssize_t rpmsg_socket_recvmsg(FAR struct socket *psock, FAR struct msghdr *msg, int flags); static int rpmsg_socket_close(FAR struct socket *psock); @@ -1182,7 +1183,7 @@ static ssize_t rpmsg_socket_send_single(FAR struct socket *psock, } static ssize_t rpmsg_socket_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags) + FAR const struct msghdr *msg, int flags) { FAR struct rpmsg_socket_conn_s *conn = psock->s_conn; FAR const struct iovec *buf = msg->msg_iov; diff --git a/net/socket/sendmsg.c b/net/socket/sendmsg.c index 7cf4b23c8aa..b20f9409327 100644 --- a/net/socket/sendmsg.c +++ b/net/socket/sendmsg.c @@ -69,7 +69,7 @@ * ****************************************************************************/ -ssize_t psock_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, +ssize_t psock_sendmsg(FAR struct socket *psock, FAR const struct msghdr *msg, int flags) { /* Verify that non-NULL pointers were passed */ @@ -140,7 +140,7 @@ ssize_t psock_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, * ****************************************************************************/ -ssize_t sendmsg(int sockfd, FAR struct msghdr *msg, int flags) +ssize_t sendmsg(int sockfd, FAR const struct msghdr *msg, int flags) { FAR struct socket *psock; FAR struct file *filep; diff --git a/net/usrsock/usrsock.h b/net/usrsock/usrsock.h index 9f9e05f78a8..e7f2e8e09ff 100644 --- a/net/usrsock/usrsock.h +++ b/net/usrsock/usrsock.h @@ -495,8 +495,8 @@ int usrsock_poll(FAR struct socket *psock, FAR struct pollfd *fds, * ****************************************************************************/ -ssize_t usrsock_sendmsg(FAR struct socket *psock, FAR struct msghdr *msg, - int flags); +ssize_t usrsock_sendmsg(FAR struct socket *psock, + FAR const struct msghdr *msg, int flags); /**************************************************************************** * Name: usrsock_recvmsg diff --git a/net/usrsock/usrsock_sendmsg.c b/net/usrsock/usrsock_sendmsg.c index 084806c9318..dfa8f9dc4ea 100644 --- a/net/usrsock/usrsock_sendmsg.c +++ b/net/usrsock/usrsock_sendmsg.c @@ -136,18 +136,19 @@ static uint32_t sendto_event(FAR struct net_driver_s *dev, ****************************************************************************/ static int do_sendto_request(FAR struct usrsock_conn_s *conn, - FAR struct msghdr *msg, int flags) + FAR const struct msghdr *msg, int flags) { struct usrsock_request_sendto_s req = { }; struct iovec bufs[2 + msg->msg_iovlen]; + socklen_t msg_namelen = msg->msg_namelen; int i; - if (msg->msg_namelen > UINT16_MAX) + if (msg_namelen > UINT16_MAX) { - msg->msg_namelen = UINT16_MAX; + msg_namelen = UINT16_MAX; } /* Prepare request for daemon to read. */ @@ -155,7 +156,7 @@ static int do_sendto_request(FAR struct usrsock_conn_s *conn, req.head.reqid = USRSOCK_REQUEST_SENDTO; req.usockid = conn->usockid; req.flags = flags; - req.addrlen = msg->msg_namelen; + req.addrlen = msg_namelen; for (i = 0; i < msg->msg_iovlen; i++) { @@ -170,7 +171,7 @@ static int do_sendto_request(FAR struct usrsock_conn_s *conn, bufs[0].iov_base = (FAR void *)&req; bufs[0].iov_len = sizeof(req); bufs[1].iov_base = msg->msg_name; - bufs[1].iov_len = msg->msg_namelen; + bufs[1].iov_len = msg_namelen; memcpy(&bufs[2], msg->msg_iov, sizeof(struct iovec) * msg->msg_iovlen); @@ -202,7 +203,7 @@ static int do_sendto_request(FAR struct usrsock_conn_s *conn, ****************************************************************************/ ssize_t usrsock_sendmsg(FAR struct socket *psock, - FAR struct msghdr *msg, int flags) + FAR const struct msghdr *msg, int flags) { FAR struct usrsock_conn_s *conn = psock->s_conn; struct usrsock_reqstate_s state = diff --git a/syscall/syscall.csv b/syscall/syscall.csv index 3fe9675905d..f4a403fafec 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -155,7 +155,7 @@ "select","sys/select.h","","int","int","FAR fd_set *","FAR fd_set *","FAR fd_set *","FAR struct timeval *" "send","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR const void *","size_t","int" "sendfile","sys/sendfile.h","","ssize_t","int","int","FAR off_t *","size_t" -"sendmsg","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR struct msghdr *","int" +"sendmsg","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR const struct msghdr *","int" "sendto","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR const void *","size_t","int","FAR const struct sockaddr *","socklen_t" "setegid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","int","gid_t" "setenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","int","FAR const char *","FAR const char *","int"