File: inet_4map6.t

package info (click to toggle)
libnetaddr-ip-perl 4.079%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, stretch
  • size: 1,580 kB
  • ctags: 251
  • sloc: perl: 1,417; cpp: 67; sh: 51; makefile: 9
file content (70 lines) | stat: -rw-r--r-- 1,552 bytes parent folder | download | duplicates (3)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
$| = 1;
END {print "1..1\nnot ok 1\n" unless $test;}

#use diagnostics;
use NetAddr::IP::Util qw(
	ipv6_n2d
	inet_aton
	ipv6_aton
	inet_4map6
);

$test = 1;

sub ok {
  print "ok $test\n";
  ++$test;
}

# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
print "1..6\n";

my @stuff = qw(
	192.168.1.1
	1.2.3.4
	::3.4.5.6
	::FFFF:4.5.6.7
	::1:5.4.3.2
	::FEFF:4.3.2.1
);

  my $p4 = '0:0:0:0:0:FFFF:';
  my $p6 = '0:0:0:0:0:';

  foreach(0..$#stuff) {
    my $pass = 1;
    my $result;
    my $bstr;
    $pass = 0 if $_ > 3;
    if ($stuff[$_] =~ /\:/) {
      $bstr = ipv6_aton($stuff[$_]);
      my $prefix = ($stuff[$_] =~ /^\:\:F/)
	? $p6 : $p4;
      ($result = $stuff[$_]) =~ s/\:\:/$prefix/;
    }
    else {
      $bstr = inet_aton($stuff[$_]);
      $result = $p4 . $stuff[$_];
    }
    my $rv = inet_4map6($bstr);
    if ($pass && ! $rv) {
      print "failed to return valid address\nnot ";
    }
    elsif ($pass) {
      $rv = ipv6_n2d($rv);
      print "got: $rv, exp: $result\nnot " unless $rv eq $result;
    }
    else {
      print 'unknown return ', ipv6_n2d($rv), "\nnot " if $rv;
    }
    &ok;
  }