| /linux/tools/testing/selftests/net/ |
| H A D | cmsg_sender.c | 77 } cmsg; member 178 opt.cmsg.dontfrag.ena = true; in cs_parse_args() 179 opt.cmsg.dontfrag.val = atoi(optarg); in cs_parse_args() 185 opt.cmsg.tclass.ena = true; in cs_parse_args() 186 opt.cmsg.tclass.val = atoi(optarg); in cs_parse_args() 192 opt.cmsg.hlimit.ena = true; in cs_parse_args() 193 opt.cmsg.hlimit.val = atoi(optarg); in cs_parse_args() 199 opt.cmsg.exthdr.ena = true; in cs_parse_args() 202 opt.cmsg.exthdr.val = IPV6_HOPOPTS; in cs_parse_args() 205 opt.cmsg.exthdr.val = IPV6_DSTOPTS; in cs_parse_args() [all …]
|
| H A D | udpgso_bench_tx.c | 139 static void flush_cmsg(struct cmsghdr *cmsg) in flush_cmsg() argument 147 switch (cmsg->cmsg_level) { in flush_cmsg() 149 if (cmsg->cmsg_type == SO_TIMESTAMPING) { in flush_cmsg() 151 tss = (struct scm_timestamping *)CMSG_DATA(cmsg); in flush_cmsg() 156 cmsg->cmsg_type); in flush_cmsg() 161 switch (cmsg->cmsg_type) { in flush_cmsg() 165 err = (struct sock_extended_err *)CMSG_DATA(cmsg); in flush_cmsg() 200 cmsg->cmsg_type); in flush_cmsg() 206 cmsg->cmsg_level); in flush_cmsg() 216 struct cmsghdr *cmsg; in flush_errqueue_recv() local [all …]
|
| H A D | timestamping.c | 159 struct cmsghdr *cmsg; in printpacket() local 172 for (cmsg = CMSG_FIRSTHDR(msg); in printpacket() 173 cmsg; in printpacket() 174 cmsg = CMSG_NXTHDR(msg, cmsg)) { in printpacket() 175 printf(" cmsg len %zu: ", cmsg->cmsg_len); in printpacket() 176 switch (cmsg->cmsg_level) { in printpacket() 179 switch (cmsg->cmsg_type) { in printpacket() 182 (struct timeval *)CMSG_DATA(cmsg); in printpacket() 190 (struct timespec *)CMSG_DATA(cmsg); in printpacket() 198 (struct timespec *)CMSG_DATA(cmsg); in printpacket() [all …]
|
| H A D | so_rcv_listener.c | 72 struct cmsghdr *cmsg; in main() local 146 for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; cmsg = CMSG_NXTHDR(&msg, cmsg)) { in main() 147 if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == opt.name) { in main() 148 recv_val = *(__u32 *)CMSG_DATA(cmsg); in main()
|
| H A D | rxtimestamp.c | 201 struct cmsghdr *cmsg; in do_recv() local 225 for (cmsg = CMSG_FIRSTHDR(&hdr); cmsg != NULL; in do_recv() 226 cmsg = CMSG_NXTHDR(&hdr, cmsg)) { in do_recv() 227 if (cmsg->cmsg_level != SOL_SOCKET) in do_recv() 229 cmsg->cmsg_level); in do_recv() 230 switch (cmsg->cmsg_type) { in do_recv() 238 ts = (struct scm_timestamping *)CMSG_DATA(cmsg); in do_recv() 245 error(1, 0, "Unexpected cmsg_type %d", cmsg->cmsg_type); in do_recv()
|
| H A D | udpgso_bench_rx.c | 220 struct cmsghdr *cmsg; in recv_msg() local 235 for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; in recv_msg() 236 cmsg = CMSG_NXTHDR(&msg, cmsg)) { in recv_msg() 237 if (cmsg->cmsg_level == SOL_UDP in recv_msg() 238 && cmsg->cmsg_type == UDP_GRO) { in recv_msg() 239 *gso_size = *(int *)CMSG_DATA(cmsg); in recv_msg()
|
| /linux/net/handshake/ |
| H A D | alert.c | 39 struct cmsghdr *cmsg; in tls_alert_send() local 56 cmsg = CMSG_FIRSTHDR(&msg); in tls_alert_send() 57 cmsg->cmsg_level = SOL_TLS; in tls_alert_send() 58 cmsg->cmsg_type = TLS_SET_RECORD_TYPE; in tls_alert_send() 59 cmsg->cmsg_len = CMSG_LEN(sizeof(record_type)); in tls_alert_send() 60 memcpy(CMSG_DATA(cmsg), &record_type, sizeof(record_type)); in tls_alert_send() 74 u8 tls_get_record_type(const struct sock *sk, const struct cmsghdr *cmsg) in tls_get_record_type() argument 78 if (cmsg->cmsg_level != SOL_TLS) in tls_get_record_type() 80 if (cmsg->cmsg_type != TLS_GET_RECORD_TYPE) in tls_get_record_type() 83 record_type = *((u8 *)CMSG_DATA(cmsg)); in tls_get_record_type()
|
| /linux/tools/testing/selftests/net/af_unix/ |
| H A D | scm_inq.c | 72 struct cmsghdr *cmsg; in recv_chunks() local 92 cmsg = CMSG_FIRSTHDR(&msg); in recv_chunks() 93 ASSERT_NE(NULL, cmsg); in recv_chunks() 94 ASSERT_EQ(CMSG_LEN(sizeof(int)), cmsg->cmsg_len); in recv_chunks() 95 ASSERT_EQ(SOL_SOCKET, cmsg->cmsg_level); in recv_chunks() 96 ASSERT_EQ(SCM_INQ, cmsg->cmsg_type); in recv_chunks() 100 ASSERT_EQ(*(int *)CMSG_DATA(cmsg), inq); in recv_chunks() 130 struct cmsghdr *cmsg; in TEST_F() local 160 cmsg = CMSG_FIRSTHDR(&msg); in TEST_F() 161 ASSERT_NE(NULL, cmsg); in TEST_F() [all …]
|
| H A D | scm_pidfd.c | 139 struct cmsghdr *cmsg; in parse_cmsg() local 146 for (cmsg = CMSG_FIRSTHDR(msg); cmsg != NULL; in parse_cmsg() 147 cmsg = CMSG_NXTHDR(msg, cmsg)) { in parse_cmsg() 148 if (cmsg->cmsg_level == SOL_SOCKET && in parse_cmsg() 149 cmsg->cmsg_type == SCM_PIDFD) { in parse_cmsg() 150 if (cmsg->cmsg_len < sizeof(*res->pidfd)) { in parse_cmsg() 155 res->pidfd = (void *)CMSG_DATA(cmsg); in parse_cmsg() 158 if (cmsg->cmsg_level == SOL_SOCKET && in parse_cmsg() 159 cmsg->cmsg_type == SCM_CREDENTIALS) { in parse_cmsg() 160 if (cmsg->cmsg_len < sizeof(*res->ucred)) { in parse_cmsg() [all …]
|
| H A D | scm_rights_denial_lsm.c | 155 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in send_fds() local 158 cmsg->cmsg_level = SOL_SOCKET; in send_fds() 159 cmsg->cmsg_type = SCM_RIGHTS; in send_fds() 160 cmsg->cmsg_len = CMSG_LEN(n * sizeof(int)); in send_fds() 161 memcpy(CMSG_DATA(cmsg), fds, n * sizeof(int)); in send_fds() 185 struct cmsghdr *cmsg; in recv_fd_slots() local 192 cmsg = CMSG_FIRSTHDR(&msg); in recv_fd_slots() 193 if (!cmsg) in recv_fd_slots() 196 nr_slots = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); in recv_fd_slots() 197 memcpy(slots, CMSG_DATA(cmsg), nr_slots * sizeof(int)); in recv_fd_slots()
|
| /linux/tools/testing/selftests/namespaces/ |
| H A D | siocgskns_test.c | 121 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in TEST() local 122 cmsg->cmsg_level = SOL_SOCKET; in TEST() 123 cmsg->cmsg_type = SCM_RIGHTS; in TEST() 124 cmsg->cmsg_len = CMSG_LEN(sizeof(int)); in TEST() 125 memcpy(CMSG_DATA(cmsg), &sock_fd, sizeof(int)); in TEST() 157 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in TEST() local 158 ASSERT_NE(cmsg, NULL); in TEST() 159 ASSERT_EQ(cmsg->cmsg_type, SCM_RIGHTS); in TEST() 161 memcpy(&sock_fd, CMSG_DATA(cmsg), sizeof(int)); in TEST() 457 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in TEST() local [all …]
|
| /linux/tools/perf/trace/beauty/include/linux/ |
| H A D | socket.h | 130 #define __CMSG_NXTHDR(ctl, len, cmsg) __cmsg_nxthdr((ctl),(len),(cmsg)) argument 131 #define CMSG_NXTHDR(mhdr, cmsg) cmsg_nxthdr((mhdr), (cmsg)) argument 135 #define CMSG_DATA(cmsg) \ argument 136 ((void *)(cmsg) + sizeof(struct cmsghdr)) 137 #define CMSG_USER_DATA(cmsg) \ argument 138 ((void __user *)(cmsg) + sizeof(struct cmsghdr)) 146 #define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) && \ argument 147 (cmsg)->cmsg_len <= (unsigned long) \ 149 ((char *)(cmsg) - (char *)(mhdr)->msg_control))) 150 #define for_each_cmsghdr(cmsg, msg) \ argument [all …]
|
| /linux/include/linux/ |
| H A D | socket.h | 130 #define __CMSG_NXTHDR(ctl, len, cmsg) __cmsg_nxthdr((ctl),(len),(cmsg)) argument 131 #define CMSG_NXTHDR(mhdr, cmsg) cmsg_nxthdr((mhdr), (cmsg)) argument 135 #define CMSG_DATA(cmsg) \ argument 136 ((void *)(cmsg) + sizeof(struct cmsghdr)) 137 #define CMSG_USER_DATA(cmsg) \ argument 138 ((void __user *)(cmsg) + sizeof(struct cmsghdr)) 146 #define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) && \ argument 147 (cmsg)->cmsg_len <= (unsigned long) \ 149 ((char *)(cmsg) - (char *)(mhdr)->msg_control))) 150 #define for_each_cmsghdr(cmsg, msg) \ argument [all …]
|
| /linux/drivers/md/ |
| H A D | md-cluster.c | 514 static int process_add_new_disk(struct mddev *mddev, struct cluster_msg *cmsg) in process_add_new_disk() argument 525 sprintf(disk_uuid + len, "%pU", cmsg->uuid); in process_add_new_disk() 526 snprintf(raid_slot, 16, "RAID_DISK=%d", le32_to_cpu(cmsg->raid_slot)); in process_add_new_disk() 764 static int __sendmsg(struct md_cluster_info *cinfo, struct cluster_msg *cmsg) in __sendmsg() argument 769 cmsg->slot = cpu_to_le32(slot); in __sendmsg() 777 memcpy(cinfo->message_lockres->lksb.sb_lvbptr, (void *)cmsg, in __sendmsg() 811 static int sendmsg(struct md_cluster_info *cinfo, struct cluster_msg *cmsg, in sendmsg() argument 818 ret = __sendmsg(cinfo, cmsg); in sendmsg() 1009 struct cluster_msg cmsg = {0}; in resync_bitmap() local 1012 cmsg.type = cpu_to_le32(BITMAP_NEEDS_SYNC); in resync_bitmap() [all …]
|
| /linux/Documentation/translations/zh_CN/networking/ |
| H A D | timestamping.rst | 83 也可以通过 cmsg 为单个 sendmsg 调用启用时间戳生成(1.3.4)。 179 cmsg = CMSG_FIRSTHDR(msg); 180 cmsg->cmsg_level = SOL_SOCKET; 181 cmsg->cmsg_type = SCM_TS_OPT_ID; 182 cmsg->cmsg_len = CMSG_LEN(sizeof(__u32)); 183 *((__u32 *) CMSG_DATA(cmsg)) = opt_id; 211 支持所有时间戳数据包的 recv() cmsg。控制消息已无条件地在所有接收时间戳数据包 218 仅适用于传输时间戳。使内核返回一个 cmsg 与一个空数据包一起,而不是与原 256 例外情况是当进程需要额外的 cmsg 数据时,例如 SOL_IP/IP_PKTINFO 以检测出 264 除了套接字选项外,时间戳生成还可以通过 cmsg 按写入请求,仅适用于 [all …]
|
| /linux/tools/testing/selftests/tty/ |
| H A D | tty_tiocsti_test.c | 252 struct cmsghdr *cmsg; in send_fd_via_socket() local 262 cmsg = CMSG_FIRSTHDR(&msg); in send_fd_via_socket() 263 cmsg->cmsg_level = SOL_SOCKET; in send_fd_via_socket() 264 cmsg->cmsg_type = SCM_RIGHTS; in send_fd_via_socket() 265 cmsg->cmsg_len = CMSG_LEN(sizeof(int)); in send_fd_via_socket() 267 memcpy(CMSG_DATA(cmsg), &fd_to_send, sizeof(int)); in send_fd_via_socket() 276 struct cmsghdr *cmsg; in recv_fd_via_socket() local 290 for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { in recv_fd_via_socket() 291 if (cmsg->cmsg_level == SOL_SOCKET && in recv_fd_via_socket() 292 cmsg->cmsg_type == SCM_RIGHTS) { in recv_fd_via_socket() [all …]
|
| /linux/samples/seccomp/ |
| H A D | user-trap.c | 35 struct cmsghdr *cmsg; in send_fd() local 47 cmsg = CMSG_FIRSTHDR(&msg); in send_fd() 48 cmsg->cmsg_level = SOL_SOCKET; in send_fd() 49 cmsg->cmsg_type = SCM_RIGHTS; in send_fd() 50 cmsg->cmsg_len = CMSG_LEN(sizeof(int)); in send_fd() 51 fd_ptr = (int *)CMSG_DATA(cmsg); in send_fd() 53 msg.msg_controllen = cmsg->cmsg_len; in send_fd() 66 struct cmsghdr *cmsg; in recv_fd() local 84 cmsg = CMSG_FIRSTHDR(&msg); in recv_fd() 85 fd_ptr = (int *)CMSG_DATA(cmsg); in recv_fd()
|
| /linux/tools/testing/selftests/landlock/ |
| H A D | common.h | 153 struct cmsghdr *cmsg; in recv_fd() 160 cmsg = CMSG_FIRSTHDR(&msg); in recv_fd() 161 if (cmsg->cmsg_len != CMSG_LEN(sizeof(fd_rx))) in recv_fd() 164 memcpy(&fd_rx, CMSG_DATA(cmsg), sizeof(fd_rx)); in recv_fd() 187 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in send_fd() 189 cmsg->cmsg_len = CMSG_LEN(sizeof(fd_tx)); in send_fd() 190 cmsg->cmsg_level = SOL_SOCKET; in send_fd() 191 cmsg->cmsg_type = SCM_RIGHTS; in send_fd() 192 memcpy(CMSG_DATA(cmsg), &fd_tx, sizeof(fd_tx)); in send_fd() 151 struct cmsghdr *cmsg; recv_fd() local 185 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); send_fd() local
|
| /linux/net/ipv6/ |
| H A D | datagram.c | 802 struct cmsghdr *cmsg; in ip6_datagram_send_ctl() local 810 for_each_cmsghdr(cmsg, msg) { in ip6_datagram_send_ctl() 813 if (!CMSG_OK(msg, cmsg)) { in ip6_datagram_send_ctl() 818 if (cmsg->cmsg_level == SOL_SOCKET) { in ip6_datagram_send_ctl() 819 err = __sock_cmsg_send(sk, cmsg, &ipc6->sockc); in ip6_datagram_send_ctl() 825 if (cmsg->cmsg_level != SOL_IPV6) in ip6_datagram_send_ctl() 828 switch (cmsg->cmsg_type) { in ip6_datagram_send_ctl() 835 if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct in6_pktinfo))) { in ip6_datagram_send_ctl() 840 src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg); in ip6_datagram_send_ctl() 888 if (cmsg->cmsg_len < CMSG_LEN(4)) { in ip6_datagram_send_ctl() [all …]
|
| /linux/net/rxrpc/ |
| H A D | oob.c | 116 struct cmsghdr *cmsg; in rxrpc_sendmsg_oob_cmsg() local 122 for_each_cmsghdr(cmsg, msg) { in rxrpc_sendmsg_oob_cmsg() 123 if (!CMSG_OK(msg, cmsg)) in rxrpc_sendmsg_oob_cmsg() 126 len = cmsg->cmsg_len - sizeof(struct cmsghdr); in rxrpc_sendmsg_oob_cmsg() 128 cmsg->cmsg_level, cmsg->cmsg_type, len); in rxrpc_sendmsg_oob_cmsg() 130 if (cmsg->cmsg_level != SOL_RXRPC) in rxrpc_sendmsg_oob_cmsg() 133 switch (cmsg->cmsg_type) { in rxrpc_sendmsg_oob_cmsg() 137 memcpy(&p->oob_id, CMSG_DATA(cmsg), sizeof(p->oob_id)); in rxrpc_sendmsg_oob_cmsg() 148 memcpy(&p->abort_code, CMSG_DATA(cmsg), sizeof(p->abort_code)); in rxrpc_sendmsg_oob_cmsg()
|
| /linux/net/rds/ |
| H A D | send.c | 979 struct cmsghdr *cmsg; in rds_rm_size() local 989 for_each_cmsghdr(cmsg, msg) { in rds_rm_size() 990 if (!CMSG_OK(msg, cmsg)) in rds_rm_size() 993 if (cmsg->cmsg_level != SOL_RDS) in rds_rm_size() 996 switch (cmsg->cmsg_type) { in rds_rm_size() 998 if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct rds_rdma_args))) in rds_rm_size() 1014 retval = rds_rdma_extra_size(CMSG_DATA(cmsg), iov); in rds_rm_size() 1058 struct cmsghdr *cmsg) in rds_cmsg_zcopy() argument 1062 if (cmsg->cmsg_len < CMSG_LEN(sizeof(*cookie)) || in rds_cmsg_zcopy() 1065 cookie = CMSG_DATA(cmsg); in rds_cmsg_zcopy() [all …]
|
| /linux/net/ |
| H A D | compat.c | 106 #define CMSG_COMPAT_DATA(cmsg) \ argument 107 ((void __user *)((char __user *)(cmsg) + sizeof(struct compat_cmsghdr))) 125 struct compat_cmsghdr __user *cmsg, int cmsg_len) in cmsg_compat_nxthdr() 127 char __user *ptr = (char __user *)cmsg + CMSG_COMPAT_ALIGN(cmsg_len); in cmsg_compat_nxthdr() 183 struct compat_cmsghdr cmsg; in cmsghdr_from_user_compat_to_kern() local 184 if (copy_from_user(&cmsg, ucmsg, sizeof(cmsg))) in cmsghdr_from_user_compat_to_kern() 186 if (!CMSG_COMPAT_OK(cmsg.cmsg_len, ucmsg, kmsg)) in cmsghdr_from_user_compat_to_kern() 188 tmp = ((cmsg.cmsg_len - sizeof(*ucmsg)) + sizeof(struct cmsghdr)); in cmsghdr_from_user_compat_to_kern() 192 kcmsg->cmsg_level = cmsg.cmsg_level; in cmsghdr_from_user_compat_to_kern() 193 kcmsg->cmsg_type = cmsg.cmsg_type; in cmsghdr_from_user_compat_to_kern() [all …]
|
| /linux/arch/um/os-Linux/ |
| H A D | file.c | 512 struct cmsghdr *cmsg; in os_rcv_fd_msg() local 532 cmsg = CMSG_FIRSTHDR(&msg); in os_rcv_fd_msg() 533 if (!cmsg || in os_rcv_fd_msg() 534 cmsg->cmsg_level != SOL_SOCKET || in os_rcv_fd_msg() 535 cmsg->cmsg_type != SCM_RIGHTS) in os_rcv_fd_msg() 538 memcpy(fds, CMSG_DATA(cmsg), cmsg->cmsg_len - CMSG_LEN(0)); in os_rcv_fd_msg() 661 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in os_sendmsg_fds() local 667 cmsg->cmsg_level = SOL_SOCKET; in os_sendmsg_fds() 668 cmsg->cmsg_type = SCM_RIGHTS; in os_sendmsg_fds() 669 cmsg->cmsg_len = CMSG_LEN(fds_size); in os_sendmsg_fds() [all …]
|
| /linux/tools/testing/selftests/bpf/prog_tests/ |
| H A D | crypto_sanity.c | 52 struct cmsghdr *cmsg; in do_crypt_afalg() local 59 cmsg = CMSG_FIRSTHDR(&msg); in do_crypt_afalg() 60 cmsg->cmsg_level = SOL_ALG; in do_crypt_afalg() 61 cmsg->cmsg_type = ALG_SET_OP; in do_crypt_afalg() 62 cmsg->cmsg_len = CMSG_LEN(4); in do_crypt_afalg() 63 *(__u32 *)CMSG_DATA(cmsg) = encrypt ? ALG_OP_ENCRYPT : ALG_OP_DECRYPT; in do_crypt_afalg()
|
| H A D | lwt_reroute.c | 102 struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); in overflow_fq() local 122 cmsg->cmsg_type = SCM_TXTIME; in overflow_fq() 123 cmsg->cmsg_level = SOL_SOCKET; in overflow_fq() 124 cmsg->cmsg_len = CMSG_LEN(sizeof(uint64_t)); in overflow_fq() 132 *(uint64_t *)CMSG_DATA(cmsg) = (now.tv_nsec + 1) * NSEC_PER_SEC + in overflow_fq()
|