--TEST--
Multicast support: IPv4 send options with unusual values
--SKIPIF--
<?php
if (!extension_loaded('sockets')) {
    die(
'skip sockets extension not available.');
}
if (
socket_set_option($s$levelIP_MULTICAST_IF1) === false) {
    die(
"skip interface 1 either doesn't exist or has no ipv4 address");
}
--
FILE--
<?
php
$domain 
AF_INET;
$level IPPROTO_IP;
$s socket_create($domainSOCK_DGRAMSOL_UDP) or die("err");

echo 
"Setting IP_MULTICAST_LOOP with 256\n";
//if we had a simple cast to unsigned char, this would be the same as 0
$r socket_set_option($s$levelIP_MULTICAST_LOOP256);
var_dump($r);
$r socket_get_option($s$levelIP_MULTICAST_LOOP);
var_dump($r);
echo 
"\n";

echo 
"Setting IP_MULTICAST_LOOP with false\n";
//should convert to (unsigned char)0
$r socket_set_option($s$levelIP_MULTICAST_LOOPfalse);
var_dump($r);
$r socket_get_option($s$levelIP_MULTICAST_LOOP);
var_dump($r);
echo 
"\n";

echo 
"Setting IP_MULTICAST_TTL with 256\n";
//if we had a simple cast to unsigned char, this would be the same as 0
$r socket_set_option($s$levelIP_MULTICAST_TTL256);
var_dump($r);
$r socket_get_option($s$levelIP_MULTICAST_TTL);
var_dump($r);
echo 
"\n";

echo 
"Setting IP_MULTICAST_TTL with \"254\"\n";
$r socket_set_option($s$levelIP_MULTICAST_TTL"254");
var_dump($r);
$r socket_get_option($s$levelIP_MULTICAST_TTL);
var_dump($r);
echo 
"\n";

echo 
"Setting IP_MULTICAST_TTL with -1\n";
//should give error, not be the same as 255
$r socket_set_option($s$levelIP_MULTICAST_TTL, -1);
var_dump($r);
$r socket_get_option($s$levelIP_MULTICAST_TTL);
var_dump($r);
echo 
"\n";

--
EXPECTF--
Setting IP_MULTICAST_LOOP with 256
bool
(true)
int(1)

Setting IP_MULTICAST_LOOP with false
bool
(true)
int(0)

Setting IP_MULTICAST_TTL with 256

Warning
socket_set_option(): Expected a value between 0 and 255 in %s on line %d
bool
(false)
int(1)

Setting IP_MULTICAST_TTL with "254"
bool(true)
int(254)

Setting IP_MULTICAST_TTL with -1

Warning
socket_set_option(): Expected a value between 0 and 255 in %s on line %d
bool
(false)
int(254)