forked from unpbook/unpv13e
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmcast_set_loop.lc
38 lines (32 loc) · 1.78 KB
/
mcast_set_loop.lc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* include mcast_set_loop */
#include "unp.h"## 1 ##src/lib/mcast_set_loop.c##
int## 2 ##src/lib/mcast_set_loop.c##
mcast_set_loop(int sockfd, int onoff)## 3 ##src/lib/mcast_set_loop.c##
{## 4 ##src/lib/mcast_set_loop.c##
switch (sockfd_to_family(sockfd)) {## 5 ##src/lib/mcast_set_loop.c##
case AF_INET:{## 6 ##src/lib/mcast_set_loop.c##
u_char flag;## 7 ##src/lib/mcast_set_loop.c##
flag = onoff;## 8 ##src/lib/mcast_set_loop.c##
return (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_LOOP,## 9 ##src/lib/mcast_set_loop.c##
&flag, sizeof(flag)));## 10 ##src/lib/mcast_set_loop.c##
}## 11 ##src/lib/mcast_set_loop.c##
#ifdef IPV6## 12 ##src/lib/mcast_set_loop.c##
case AF_INET6:{## 13 ##src/lib/mcast_set_loop.c##
u_int flag;## 14 ##src/lib/mcast_set_loop.c##
flag = onoff;## 15 ##src/lib/mcast_set_loop.c##
return (setsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,## 16 ##src/lib/mcast_set_loop.c##
&flag, sizeof(flag)));## 17 ##src/lib/mcast_set_loop.c##
}## 18 ##src/lib/mcast_set_loop.c##
#endif## 19 ##src/lib/mcast_set_loop.c##
default:## 20 ##src/lib/mcast_set_loop.c##
errno = EPROTONOSUPPORT;## 21 ##src/lib/mcast_set_loop.c##
return (-1);## 22 ##src/lib/mcast_set_loop.c##
}## 23 ##src/lib/mcast_set_loop.c##
}## 24 ##src/lib/mcast_set_loop.c##
/* end mcast_set_loop */
void## 25 ##src/lib/mcast_set_loop.c##
Mcast_set_loop(int sockfd, int onoff)## 26 ##src/lib/mcast_set_loop.c##
{## 27 ##src/lib/mcast_set_loop.c##
if (mcast_set_loop(sockfd, onoff) < 0)## 28 ##src/lib/mcast_set_loop.c##
err_sys("mcast_set_loop error");## 29 ##src/lib/mcast_set_loop.c##
}## 30 ##src/lib/mcast_set_loop.c##