Lines Matching refs:cmsg
99 "\t\t-f val Set don't fragment via cmsg\n"
101 "\t\t-c val Set TCLASS via cmsg\n"
103 "\t\t-l val Set HOPLIMIT via cmsg\n"
220 struct cmsghdr *cmsg;
225 cmsg = (struct cmsghdr *)(cbuf + *cmsg_len);
228 error(ERN_CMSG_WR, EFAULT, "cmsg buffer too small");
230 cmsg->cmsg_level = level;
231 cmsg->cmsg_type = optname;
232 cmsg->cmsg_len = CMSG_LEN(sizeof(__u32));
233 *(__u32 *)CMSG_DATA(cmsg) = uopt->val;
239 struct cmsghdr *cmsg;
268 cmsg = (struct cmsghdr *)(cbuf + cmsg_len);
271 error(ERN_CMSG_WR, EFAULT, "cmsg buffer too small");
273 cmsg->cmsg_level = SOL_SOCKET;
274 cmsg->cmsg_type = SCM_TXTIME;
275 cmsg->cmsg_len = CMSG_LEN(sizeof(txtime));
276 memcpy(CMSG_DATA(cmsg), &txtime, sizeof(txtime));
286 cmsg = (struct cmsghdr *)(cbuf + cmsg_len);
289 error(ERN_CMSG_WR, EFAULT, "cmsg buffer too small");
291 cmsg->cmsg_level = SOL_SOCKET;
292 cmsg->cmsg_type = SO_TIMESTAMPING;
293 cmsg->cmsg_len = CMSG_LEN(sizeof(__u32));
294 *(__u32 *)CMSG_DATA(cmsg) = SOF_TIMESTAMPING_TX_SCHED |
298 cmsg = (struct cmsghdr *)(cbuf + cmsg_len);
301 error(ERN_CMSG_WR, EFAULT, "cmsg buffer too small");
303 cmsg->cmsg_level = SOL_IPV6;
304 cmsg->cmsg_type = opt.v6.exthdr.val;
305 cmsg->cmsg_len = CMSG_LEN(8);
306 *(__u64 *)CMSG_DATA(cmsg) = 0;
333 struct cmsghdr *cmsg;
353 for (cmsg = CMSG_FIRSTHDR(msg); cmsg != NULL;
354 cmsg = CMSG_NXTHDR(msg, cmsg)) {
355 if (cmsg->cmsg_level == SOL_SOCKET &&
356 cmsg->cmsg_type == SO_TIMESTAMPING_OLD) {
357 if (cmsg->cmsg_len < sizeof(*ts))
358 error(ERN_CMSG_RD, EINVAL, "TS cmsg");
360 ts = (void *)CMSG_DATA(cmsg);
362 if ((cmsg->cmsg_level == SOL_IP &&
363 cmsg->cmsg_type == IP_RECVERR) ||
364 (cmsg->cmsg_level == SOL_IPV6 &&
365 cmsg->cmsg_type == IPV6_RECVERR)) {
366 if (cmsg->cmsg_len < sizeof(*see))
367 error(ERN_CMSG_RD, EINVAL, "sock_err cmsg");
369 see = (void *)CMSG_DATA(cmsg);
374 error(ERN_CMSG_RCV, ENOENT, "TS cmsg not found");
376 error(ERN_CMSG_RCV, ENOENT, "sock_err cmsg not found");