.iov_base = buf,
.iov_len = sizeof(buf),
};
+ union {
+ struct cmsghdr hdr;
#ifdef IP_RECVIF
- unsigned char ctl[CMSG_SPACE(sizeof(struct sockaddr_dl))] = { 0 };
+ uint8_t buf[CMSG_SPACE(sizeof(struct sockaddr_dl))];
#else
- unsigned char ctl[CMSG_SPACE(sizeof(struct in_pktinfo))] = { 0 };
+ uint8_t buf[CMSG_SPACE(sizeof(struct in_pktinfo))];
#endif
+ } cmsgbuf = { .buf = { 0 } };
struct msghdr msg = {
.msg_name = &from, .msg_namelen = sizeof(from),
.msg_iov = &iov, .msg_iovlen = 1,
- .msg_control = ctl, .msg_controllen = sizeof(ctl),
+ .msg_control = buf, .msg_controllen = sizeof(cmsgbuf.buf),
};
int s;
ssize_t bytes;
.iov_base = buf,
.iov_len = sizeof(buf),
};
- unsigned char ctl[CMSG_SPACE(sizeof(struct in6_pktinfo))] = { 0 };
+ union {
+ struct cmsghdr hdr;
+ uint8_t buf[CMSG_SPACE(sizeof(struct in6_pktinfo))];
+ } cmsgbuf = { .buf = { 0 } };
struct msghdr msg = {
.msg_name = &from, .msg_namelen = sizeof(from),
.msg_iov = &iov, .msg_iovlen = 1,
- .msg_control = ctl, .msg_controllen = sizeof(ctl),
+ .msg_control = cmsgbuf.buf, .msg_controllen = sizeof(cmsgbuf.buf),
};
int s;
ssize_t bytes;
.iov_base = buf,
.iov_len = sizeof(buf),
};
- unsigned char ctl[CMSG_SPACE(sizeof(struct in6_pktinfo)) + CMSG_SPACE(sizeof(int))] = { 0 };
+ union {
+ struct cmsghdr hdr;
+ uint8_t buf[CMSG_SPACE(sizeof(struct in6_pktinfo)) +
+ CMSG_SPACE(sizeof(int))];
+ } cmsgbuf = { .buf = { 0 } };
struct msghdr msg = {
.msg_name = &from, .msg_namelen = sizeof(from),
.msg_iov = &iov, .msg_iovlen = 1,
- .msg_control = ctl, .msg_controllen = sizeof(ctl),
+ .msg_control = cmsgbuf.buf, .msg_controllen = sizeof(cmsgbuf.buf),
};
ssize_t len;