111
|
1 /* PR middle-end/36520 */
|
|
2 /* Testcase by Richard Guenther <rguenth@gcc.gnu.org> */
|
|
3
|
|
4 typedef __SIZE_TYPE__ size_t;
|
|
5 typedef unsigned short int sa_family_t;
|
|
6 struct cmsghdr {
|
|
7 size_t cmsg_len;
|
|
8 __extension__ unsigned char __cmsg_data [];
|
|
9 };
|
|
10 typedef unsigned int uint32_t;
|
|
11 struct in6_addr {
|
|
12 union {
|
|
13 uint32_t u6_addr32[4];
|
|
14 } in6_u;
|
|
15 };
|
|
16 struct sockaddr_in {
|
|
17 sa_family_t sin_family;
|
|
18 };
|
|
19 struct in6_pktinfo {
|
|
20 struct in6_addr ipi6_addr;
|
|
21 };
|
|
22 typedef union {
|
|
23 struct sockaddr_in sin;
|
|
24 } sockaddr_any;
|
|
25 static sockaddr_any src_addr;
|
|
26
|
|
27 inline struct cmsghdr * cmsg_put(struct cmsghdr *cm, int type, void *data, size_t len)
|
|
28 {
|
|
29 memcpy(((cm)->__cmsg_data), data, len);
|
|
30 }
|
|
31
|
|
32 int hop_sendmsg(int fd) {
|
|
33 struct cmsghdr *cm;
|
|
34 if (src_addr.sin.sin_family) {
|
|
35 if (src_addr.sin.sin_family == 2) {
|
|
36 struct in6_pktinfo info;
|
|
37 cm = cmsg_put(cm, 50, &info, sizeof(info));
|
|
38 }
|
|
39 }
|
|
40 }
|