Net-DHCPv6

 view release on metacpan or  search on metacpan

Build.PL  view on Meta::CPAN

    "Dean Hamstead <dean\@fragfest.com.au>"
  ],
  "dist_name" => "Net-DHCPv6",
  "dist_version" => "0.003",
  "license" => "mit",
  "module_name" => "Net::DHCPv6",
  "recursive_test_files" => 1,
  "requires" => {
    "Carp" => 0,
    "Const::Fast::Exporter" => 0,
    "Ref::Util" => 0,
    "namespace::clean" => 0,
    "perl" => "5.024",
    "strictures" => 2
  },
  "test_requires" => {
    "File::Slurper" => 0,
    "File::Spec" => 0,
    "IO::Handle" => 0,
    "IPC::Open3" => 0,
    "Test2::Mock" => 0,

META.json  view on Meta::CPAN

            "Test::Pod" : "1.41",
            "Test::Pod::Coverage" : "1.08",
            "Test::Portability::Files" : "0",
            "Test::Vars" : "0"
         }
      },
      "runtime" : {
         "requires" : {
            "Carp" : "0",
            "Const::Fast::Exporter" : "0",
            "Ref::Util" : "0",
            "namespace::clean" : "0",
            "perl" : "5.024",
            "strictures" : "2"
         }
      },
      "test" : {
         "requires" : {
            "File::Slurper" : "0",
            "File::Spec" : "0",
            "IO::Handle" : "0",

META.yml  view on Meta::CPAN

    version: '0.003'
  Net::DHCPv6::X::Internal:
    file: lib/Net/DHCPv6/X/Internal.pm
    version: '0.003'
  Net::DHCPv6::X::Truncated:
    file: lib/Net/DHCPv6/X/Truncated.pm
    version: '0.003'
requires:
  Carp: '0'
  Const::Fast::Exporter: '0'
  Ref::Util: '0'
  namespace::clean: '0'
  perl: '5.024'
  strictures: '2'
resources:
  bugtracker: https://github.com/djzort/perl-Net-DHCPv6/issues
  homepage: https://github.com/djzort/perl-Net-DHCPv6
  repository: https://github.com/djzort/perl-Net-DHCPv6.git
version: '0.003'
x_author_pledge:
  version: 1

Makefile.PL  view on Meta::CPAN

    "ExtUtils::MakeMaker" => 0,
    "Module::Build" => "0.28"
  },
  "DISTNAME" => "Net-DHCPv6",
  "LICENSE" => "mit",
  "MIN_PERL_VERSION" => "5.024",
  "NAME" => "Net::DHCPv6",
  "PREREQ_PM" => {
    "Carp" => 0,
    "Const::Fast::Exporter" => 0,
    "Ref::Util" => 0,
    "namespace::clean" => 0,
    "strictures" => 2
  },
  "TEST_REQUIRES" => {
    "File::Slurper" => 0,
    "File::Spec" => 0,
    "IO::Handle" => 0,
    "IPC::Open3" => 0,
    "Test2::Mock" => 0,
    "Test2::V1" => "1.302217",

Makefile.PL  view on Meta::CPAN



my %FallbackPrereqs = (
  "Carp" => 0,
  "Const::Fast::Exporter" => 0,
  "File::Slurper" => 0,
  "File::Spec" => 0,
  "IO::Handle" => 0,
  "IPC::Open3" => 0,
  "Module::Build" => "0.28",
  "Ref::Util" => 0,
  "Test2::Mock" => 0,
  "Test2::V1" => "1.302217",
  "Test::More" => 0,
  "namespace::clean" => 0,
  "strictures" => 2
);


unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
  delete $WriteMakefileArgs{TEST_REQUIRES};

cpanfile  view on Meta::CPAN

# This file is generated by Dist::Zilla::Plugin::CPANFile v6.037
# Do not edit this file directly. To change prereqs, edit the `dist.ini` file.

requires "Carp" => "0";
requires "Const::Fast::Exporter" => "0";
requires "Ref::Util" => "0";
requires "namespace::clean" => "0";
requires "perl" => "5.024";
requires "strictures" => "2";

on 'build' => sub {
  requires "Module::Build" => "0.28";
};

on 'test' => sub {
  requires "File::Slurper" => "0";

lib/Net/DHCPv6/Helpers.pm  view on Meta::CPAN

#!/bin/false
# ABSTRACT: Internal helper methods for IPv6 address resolution
# PODNAME: Net::DHCPv6::Helpers
use strictures 2;

package Net::DHCPv6::Helpers;
$Net::DHCPv6::Helpers::VERSION = '0.003';
use Carp                   qw( croak );
use Net::DHCPv6::Constants qw( $IPV6_ADDR_LEN );
use Ref::Util              qw( is_plain_arrayref );
use Socket                 qw( AF_INET6 inet_ntop inet_pton );
use namespace::clean;

sub _resolve_ipv6 {
    my ( $class, $arg ) = @_;
    return unless defined $arg;
    if ( CORE::length( $arg ) == $IPV6_ADDR_LEN ) {

        # If it looks like IPv6 text (hex digits + colons), parse it
        if ( $arg =~ m/^[0-9a-fA-F:]+$/ && $arg =~ m/:/ ) {

lib/Net/DHCPv6/Option/BootfileParam.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::BootfileParam;
$Net::DHCPv6::Option::BootfileParam::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $OPTION_BOOTFILE_PARAM
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    $args{code} = $OPTION_BOOTFILE_PARAM;
    my $data_list = $args{parameters} // [];
    $data_list = [$data_list] unless is_plain_arrayref( $data_list );
    $args{data} = join( $EMPTY, map { pack( 'n', CORE::length ) . $_ } @{$data_list} );
    my $self = $class->SUPER::new( %args );

lib/Net/DHCPv6/Option/DnsServers.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::DnsServers;
$Net::DHCPv6::Option::DnsServers::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $IPV6_ADDR_LEN $OPTION_DNS_SERVERS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    my $addresses = $class->_pick_addrs( \%args, 'servers' );
    if ( !defined $addresses && $args{addresses} ) {
        my $list = is_plain_arrayref( $args{addresses} ) ? $args{addresses} : [ $args{addresses} ];
        $addresses = [ map { $class->_resolve_ipv6( $_ ) } @{$list} ];
    }

lib/Net/DHCPv6/Option/DomainList.pm  view on Meta::CPAN

package Net::DHCPv6::Option::DomainList;
$Net::DHCPv6::Option::DomainList::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Option     ();
use Net::DHCPv6::Constants  qw(
    $DN_COMPRESS_MASK $DN_LABEL_MASK $OPTION_DOMAIN_LIST
);
use Net::DHCPv6::X::Truncated ();
use Net::DHCPv6::X::BadOption ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY         = q();
my $MAX_PTR_DEPTH = 255;    ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)

sub _encode_domain {
    my ( $domain ) = @_;
    return chr( 0 ) unless defined $domain && CORE::length( $domain );
    my @labels = split m/[.]/, $domain;
    return join( $EMPTY, map { pack( 'C', CORE::length ) . $_ } @labels ) . chr( 0 );
}

lib/Net/DHCPv6/Option/NisServers.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::NisServers;
$Net::DHCPv6::Option::NisServers::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $IPV6_ADDR_LEN $OPTION_NIS_SERVERS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    my $addresses = $class->_pick_addrs( \%args, 'servers' );
    if ( !defined $addresses && $args{addresses} ) {
        my $list = is_plain_arrayref( $args{addresses} ) ? $args{addresses} : [ $args{addresses} ];
        $addresses = [ map { $class->_resolve_ipv6( $_ ) } @{$list} ];
    }

lib/Net/DHCPv6/Option/NispServers.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::NispServers;
$Net::DHCPv6::Option::NispServers::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $IPV6_ADDR_LEN $OPTION_NISP_SERVERS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    my $addresses = $class->_pick_addrs( \%args, 'servers' );
    if ( !defined $addresses && $args{addresses} ) {
        my $list = is_plain_arrayref( $args{addresses} ) ? $args{addresses} : [ $args{addresses} ];
        $addresses = [ map { $class->_resolve_ipv6( $_ ) } @{$list} ];
    }

lib/Net/DHCPv6/Option/SipServerA.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::SipServerA;
$Net::DHCPv6::Option::SipServerA::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $IPV6_ADDR_LEN $OPTION_SIP_SERVER_A
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    my $addresses = $class->_pick_addrs( \%args, 'servers' );
    if ( !defined $addresses && $args{addresses} ) {
        my $list = is_plain_arrayref( $args{addresses} ) ? $args{addresses} : [ $args{addresses} ];
        $addresses = [ map { $class->_resolve_ipv6( $_ ) } @{$list} ];
    }

lib/Net/DHCPv6/Option/SipServerD.pm  view on Meta::CPAN

package Net::DHCPv6::Option::SipServerD;
$Net::DHCPv6::Option::SipServerD::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Option     ();
use Net::DHCPv6::Constants  qw(
    $DN_COMPRESS_MASK $DN_LABEL_MASK $OPTION_SIP_SERVER_D
);
use Net::DHCPv6::X::Truncated ();
use Net::DHCPv6::X::BadOption ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY         = q();
my $MAX_PTR_DEPTH = 255;    ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)

sub _encode_domain {
    my ( $domain ) = @_;
    return chr( 0 ) unless defined $domain && CORE::length( $domain );
    my @labels = split m/[.]/, $domain;
    return join( $EMPTY, map { pack( 'C', CORE::length ) . $_ } @labels ) . chr( 0 );
}

lib/Net/DHCPv6/Option/SntpServers.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::SntpServers;
$Net::DHCPv6::Option::SntpServers::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $IPV6_ADDR_LEN $OPTION_SNTP_SERVERS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    my $addresses = $class->_pick_addrs( \%args, 'servers' );
    if ( !defined $addresses && $args{addresses} ) {
        my $list = is_plain_arrayref( $args{addresses} ) ? $args{addresses} : [ $args{addresses} ];
        $addresses = [ map { $class->_resolve_ipv6( $_ ) } @{$list} ];
    }

lib/Net/DHCPv6/Option/UserClass.pm  view on Meta::CPAN

use strictures 2;

package Net::DHCPv6::Option::UserClass;
$Net::DHCPv6::Option::UserClass::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Net::DHCPv6::Constants  qw(
    $OPTION_USER_CLASS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY = q();

sub new {
    my ( $class, %args ) = @_;
    $args{code} = $OPTION_USER_CLASS;
    my $data_list = $args{user_class_data} // [];
    $data_list = [$data_list] unless is_plain_arrayref( $data_list );
    $args{data} = join( $EMPTY, map { pack( 'n', CORE::length ) . $_ } @{$data_list} );
    my $self = $class->SUPER::new( %args );

lib/Net/DHCPv6/Option/VendorClass.pm  view on Meta::CPAN


package Net::DHCPv6::Option::VendorClass;
$Net::DHCPv6::Option::VendorClass::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Carp                    qw( croak );
use Net::DHCPv6::Constants  qw(
    $OPTION_VENDOR_CLASS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY       = q();
my $ENT_NUM_LEN = 4;     ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)

sub new {
    my ( $class, %args ) = @_;
    croak 'VendorClass requires enterprise_number' unless defined $args{enterprise_number};
    $args{code} = $OPTION_VENDOR_CLASS;
    my $data_list = $args{vendor_data} // $args{data} // [];
    $data_list = [$data_list] unless is_plain_arrayref( $data_list );

lib/Net/DHCPv6/Option/VendorOpts.pm  view on Meta::CPAN


package Net::DHCPv6::Option::VendorOpts;
$Net::DHCPv6::Option::VendorOpts::VERSION = '0.003';
use Net::DHCPv6::OptionList ();
use Carp                    qw( croak );
use Net::DHCPv6::Constants  qw(
    $OPTION_VENDOR_OPTS
);
use Net::DHCPv6::X::Truncated ();
use parent 'Net::DHCPv6::Option';
use Ref::Util qw( is_plain_arrayref );
use namespace::clean;
my $EMPTY       = q();
my $ENT_NUM_LEN = 4;     ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)

sub new {
    my ( $class, %args ) = @_;
    croak 'VendorOpts requires enterprise_number' unless defined $args{enterprise_number};
    $args{code} = $OPTION_VENDOR_OPTS;
    my $sub_data = $args{sub_options} // $EMPTY;
    $sub_data = join( $EMPTY, map { $_->as_bytes } @{$sub_data} ) if is_plain_arrayref( $sub_data );

lib/Net/DHCPv6/OptionList.pm  view on Meta::CPAN

#!/bin/false
# ABSTRACT: Shared container for a collection of DHCPv6 options
# PODNAME: Net::DHCPv6::OptionList
use strictures 2;

package Net::DHCPv6::OptionList;
$Net::DHCPv6::OptionList::VERSION = '0.003';
use Net::DHCPv6::Option::Generic ();
use Carp                         qw( croak );
use Ref::Util                    qw( is_ref );
use namespace::clean;

my $EMPTY        = q();
my $OPT_HDR_SIZE = 4;     ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)

our %OPTION_CLASS;

sub new {
    my $class = shift;
    return bless {



( run in 2.432 seconds using v1.01-cache-2.11-cpan-6aa56a78535 )