1#!/usr/bin/perl
2
3use warnings;
4use strict;
5
6use IO::Socket;
7use IO::Socket::INET;
8use Socket;
9use Test::More;
10
11plan tests => 7;
12
13my $listener = IO::Socket::INET->new(LocalAddr => '127.0.0.1',
14                                     Proto => 'udp');
15ok(defined($listener), 'socket created');
16
17my $p = $listener->protocol();
18ok(defined($p), 'protocol defined');
19my $d = $listener->sockdomain();
20ok(defined($d), 'domain defined');
21my $s = $listener->socktype();
22ok(defined($s), 'type defined');
23
24my $new = IO::Socket::INET->new_from_fd($listener->fileno(), 'r+');
25
26is($new->sockdomain(), $d, 'domain match');
27SKIP: {
28    skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
29    skip "SO_PROTOCOL defined but not implemented", 1
30	if !defined $new->sockopt(Socket::SO_PROTOCOL);
31    is($new->protocol(), $p, 'protocol match');
32}
33SKIP: {
34    skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
35        if $^O eq "aix";
36    skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
37    skip "SO_TYPE defined but not implemented", 1
38	if !defined $new->sockopt(Socket::SO_TYPE);
39    is($new->socktype(), $s, 'type match');
40}
41