1--TEST--
2Multicast support: IPv6 send options
3--EXTENSIONS--
4sockets
5--SKIPIF--
6<?php
7
8if (getenv('CI_NO_IPV6') || !defined('IPPROTO_IPV6')) {
9    die('skip IPv6 not available.');
10}
11$level = IPPROTO_IPV6;
12$s = socket_create(AF_INET6, SOCK_DGRAM, SOL_UDP) or die("skip Can not create socket");
13if (socket_set_option($s, $level, IPV6_MULTICAST_IF, 1) === false) {
14    die("skip interface 1 either doesn't exist or has no ipv6 address");
15}
16--FILE--
17<?php
18$domain = AF_INET6;
19$level = IPPROTO_IPV6;
20$s = socket_create($domain, SOCK_DGRAM, SOL_UDP) or die("err");
21
22echo "Setting IPV6_MULTICAST_TTL\n";
23$r = socket_set_option($s, $level, IPV6_MULTICAST_HOPS, 9);
24var_dump($r);
25$r = socket_get_option($s, $level, IPV6_MULTICAST_HOPS);
26var_dump($r);
27echo "\n";
28
29echo "Setting IPV6_MULTICAST_LOOP\n";
30$r = socket_set_option($s, $level, IPV6_MULTICAST_LOOP, 0);
31var_dump($r);
32$r = socket_get_option($s, $level, IPV6_MULTICAST_LOOP);
33var_dump($r);
34$r = socket_set_option($s, $level, IPV6_MULTICAST_LOOP, 1);
35var_dump($r);
36$r = socket_get_option($s, $level, IPV6_MULTICAST_LOOP);
37var_dump($r);
38echo "\n";
39
40echo "Setting IPV6_MULTICAST_IF\n";
41echo "interface 0:\n";
42$r = socket_set_option($s, $level, IPV6_MULTICAST_IF, 0);
43var_dump($r);
44$r = socket_get_option($s, $level, IPV6_MULTICAST_IF);
45var_dump($r);
46echo "interface 1:\n";
47$r = socket_set_option($s, $level, IPV6_MULTICAST_IF, 1);
48var_dump($r);
49$r = socket_get_option($s, $level, IPV6_MULTICAST_IF);
50var_dump($r);
51echo "\n";
52?>
53--EXPECT--
54Setting IPV6_MULTICAST_TTL
55bool(true)
56int(9)
57
58Setting IPV6_MULTICAST_LOOP
59bool(true)
60int(0)
61bool(true)
62int(1)
63
64Setting IPV6_MULTICAST_IF
65interface 0:
66bool(true)
67int(0)
68interface 1:
69bool(true)
70int(1)
71