Lines Matching refs:cmsg
248 struct cmsghdr *cmsg; in ip_cmsg_send() local
251 for_each_cmsghdr(cmsg, msg) { in ip_cmsg_send()
252 if (!CMSG_OK(msg, cmsg)) in ip_cmsg_send()
256 cmsg->cmsg_level == SOL_IPV6 && in ip_cmsg_send()
257 cmsg->cmsg_type == IPV6_PKTINFO) { in ip_cmsg_send()
260 if (cmsg->cmsg_len < CMSG_LEN(sizeof(*src_info))) in ip_cmsg_send()
262 src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg); in ip_cmsg_send()
271 if (cmsg->cmsg_level == SOL_SOCKET) { in ip_cmsg_send()
272 err = __sock_cmsg_send(sk, msg, cmsg, &ipc->sockc); in ip_cmsg_send()
278 if (cmsg->cmsg_level != SOL_IP) in ip_cmsg_send()
280 switch (cmsg->cmsg_type) { in ip_cmsg_send()
282 err = cmsg->cmsg_len - sizeof(struct cmsghdr); in ip_cmsg_send()
285 err = ip_options_get(net, &ipc->opt, CMSG_DATA(cmsg), in ip_cmsg_send()
293 if (cmsg->cmsg_len != CMSG_LEN(sizeof(struct in_pktinfo))) in ip_cmsg_send()
295 info = (struct in_pktinfo *)CMSG_DATA(cmsg); in ip_cmsg_send()
302 if (cmsg->cmsg_len != CMSG_LEN(sizeof(int))) in ip_cmsg_send()
304 val = *(int *)CMSG_DATA(cmsg); in ip_cmsg_send()
310 if (cmsg->cmsg_len == CMSG_LEN(sizeof(int))) in ip_cmsg_send()
311 val = *(int *)CMSG_DATA(cmsg); in ip_cmsg_send()
312 else if (cmsg->cmsg_len == CMSG_LEN(sizeof(u8))) in ip_cmsg_send()
313 val = *(u8 *)CMSG_DATA(cmsg); in ip_cmsg_send()