41 lines
939 B
C
41 lines
939 B
C
/* PR middle-end/36520 */
|
|
/* Testcase by Richard Guenther <rguenth@gcc.gnu.org> */
|
|
|
|
typedef __SIZE_TYPE__ size_t;
|
|
typedef unsigned short int sa_family_t;
|
|
struct cmsghdr {
|
|
size_t cmsg_len;
|
|
__extension__ unsigned char __cmsg_data [];
|
|
};
|
|
typedef unsigned int uint32_t;
|
|
struct in6_addr {
|
|
union {
|
|
uint32_t u6_addr32[4];
|
|
} in6_u;
|
|
};
|
|
struct sockaddr_in {
|
|
sa_family_t sin_family;
|
|
};
|
|
struct in6_pktinfo {
|
|
struct in6_addr ipi6_addr;
|
|
};
|
|
typedef union {
|
|
struct sockaddr_in sin;
|
|
} sockaddr_any;
|
|
static sockaddr_any src_addr;
|
|
|
|
inline struct cmsghdr * cmsg_put(struct cmsghdr *cm, int type, void *data, size_t len)
|
|
{
|
|
memcpy(((cm)->__cmsg_data), data, len);
|
|
}
|
|
|
|
int hop_sendmsg(int fd) {
|
|
struct cmsghdr *cm;
|
|
if (src_addr.sin.sin_family) {
|
|
if (src_addr.sin.sin_family == 2) {
|
|
struct in6_pktinfo info;
|
|
cm = cmsg_put(cm, 50, &info, sizeof(info));
|
|
}
|
|
}
|
|
}
|