The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Device::ZyXEL::IES::Port - A model of a Port on a Slot on an IES.

VERSION

Version 0.10

SYNOPSIS

Models a port on a ZyXEL IES Device.

Based on Moose.

# Must have a Device::Zyxel::IES::Slot object

my $p = Device::ZyXEL::IES::Port( id => 301, slot => $s );

my $adminstatus = $p->read_adminstatus();

# $adminstatus is now the same as $p->adminstatus();

# DOWN the port

$p->adminstatus(1);

MOOSE ATTRIBUTES

id

Required attribute that identifies the port. Matches ifIndex.

slot

Required attribute that isa Device::ZyXEL::IES::Slot object.

adminstatus (rw)

ifAdminStatus on the port. Read from IES using read_adminstatus

operstatus (ro)

ifOperStatus on the port. Read from IES using read_operstatus

uptime (ro)

uptime on the port. Read from IES using read_uptime

profile (rw)

Configuration profile on the port. This attribute OID will depend on the type of xDSL interface of the port.

ifInOctets (ro)

the ifInOctets on the port. Note that if this conglomorate of modules is used to systematically read and record (say using RRD) values, you might expience trouble with cpu load on the IES. (See Device::ZyXEL::IES)

Retrieve a value for this attribute from the IES using read_ifInOctets

ifOutOctets (ro)

the ifOutOctets on the port. Note that if this conglomorate of modules is used to systematically read and record (say using RRD) values, you might expience trouble with cpu load on the IES. (See Device::ZyXEL::IES)

Retrieve a value for this attribute from the IES using read_ifOutOctets

userinfo (ro)

Contains the userinfo OID value from the IES.

Retrieve userinfo from the IES Port using read_userinfo

ifLastChange (ro)

Contains the ifLastChange OID value from the IES.

Retrieve a value from the IES Port using read_ifLastChange.

This attribute can be used to calculate the uptime of the port.

maxmac (rw)

Contains the maxmac setting from the IES.

Retrieve the maxmac value from the IES Port using read_maxmac, before that the value of this attribute will not reflect reality.

The maxmac setting is used by the IES in conjunction with the Snoop feature to ensure a maximum number of MAC address pr port.

maxdown (ro)

Contains the maxAttainableDownstream setting from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

maxup (ro)

Contains the maxAttainableUpstream setting from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

downspeed (ro)

Contains the currAttainableDownstream setting from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

upspeed (ro)

Contains the currAttainableUpstream setting from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

snr_down (ro)

Contains the SNR on the Downstream channel from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

snr_up (ro)

Contains the SNR on the Upstream channel from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

atn_down (ro)

Contains the current Attenautaion Downstream setting from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

atn_up (ro)

Contains the current Attenautaion Upstream setting from the IES.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

inp_down (rw)

Contains the current impulse noise protection level on the Downstream channel.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

inp_up (rw)

The upstream Impulse Noise Protection minimum setting in unit of DMT symbol.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

annexM (rw)

The ADSL Annex M setting.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

annexL (rw)

The ADSL Annex L setting.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

wirepairmode (ro)

The S.HDSL Wirepair Mode setting.

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

vdslprotocol (ro)

The VDSL Protocol Mode setting.

One of

 none(1), 
 vdsl_8a(2), 
 vdsl_8b(3), 
 vdsl_8c(4), 
 vdsl_8d(5), 
 vdsl_12a(6), 
 vdsl_12b(7), 
 vdsl_17a(8), 
 vdsl_30a(9), 
 adsl2plus(10)

This attribute depends on the interface type, as determined by the assiciated Device::ZyXEL::IES::Slot object.

hlog_near (ro)

hlog data for the near end (dlsam)

This attribute depends on the interface type.

For ADSL it will contain an array of values between -32767 and 32768, with -32767 being special, meaning "no measurement".

For VDSL the "no measurement" value is 1023.

Values for all interface types are dB.

hlog_near_grpsize

In ADSL the group size (how many carriers are average over pr hlog value) is always one. In VDSL this is set by the dslam firmware.

hlog_far (ro)

hlog data for the far end (cpe)

This attribute depends on the interface type.

For ADSL it will contain an array of values between -32767 and 32768, with -32767 being special, meaning "no measurement".

For VDSL the "no measurement" value is 1023.

Values for all interface types are dB.

hlog_far_grpsize

In ADSL the group size (how many carriers are average over pr hlog value) is always one. In VDSL this is set by the dslam firmware.

qln_near (ro)

qln data for the near end (dlsam)

This attribute depends on the interface type.

For ADSL it will contain an array of values between -32767 and 32768, with -32767 being special, meaning "no measurement".

For VDSL the "no measurement" value is 255.

Values for all interface types are dB.

qln_near_grpsize

In ADSL the group size (how many carriers are average over pr qln value) is always one. In VDSL this is set by the dslam firmware.

qln_far (ro)

qln data for the far end (cpe)

This attribute depends on the interface type.

For ADSL it will contain an array of values between -32767 and 32768, with -32767 being special, meaning "no measurement".

For VDSL the "no measurement" value is 255.

Values for all interface types are dB.

qln_far_grpsize

In ADSL the group size (how many carriers are average over pr qln value) is always one. In VDSL this is set by the dslam firmware.

snr_near (ro)

snr data for the near end (dlsam)

This attribute depends on the interface type.

For ADSL it will contain nothing.

For VDSL the "no measurement" value is 255.

Values for all interface types are dB.

snr_near_grpsize

The number of carriers grouped together for each snr value.

snr_far (ro)

snr data for the far end (cpe)

This attribute depends on the interface type.

For ADSL it will contain nothing.

For VDSL the "no measurement" value is 255.

Values for all interface types are dB.

snr_far_grpsize

The number of carriers grouped together for each snr value.

seltStatus

Contains the status of a SELT operation on the port.

seltCableType

Contains the cable type reported by the IES as a result of a SELT operation.

 1 => 'awg24'
 2 => 'awg26'
 

seltLoopEstimateLengthFt

 Contains the IES estimate of the loop length in Feet.
 

seltLoopEstimateLengthMeter

 Contains the IES estimate of the loop length in Meters.
 

dhcpDiscovery

Contains the number of dhcp discoveries on the port.

dhcpOffer

Contains the number of dhcp offer on the port.

dhcpRequest

 Contains the number of dhcp request on the port.
 

dhcpAck

 Contains the number of dhcp ack on the port.
 

dhcpAckBySnoopFull

 Contains the number of dhcp ack on the port.
 

METHODS

BUILD

 When the object is created, we need to create an instance of the oid translater.
 

write_oid

Used (mainly internally) to write a new value into the specified OID on the IES.

Params: $oidname: Symbolic name of the OID, translated through mib files or statically through OID.pm $type: An SNMP type, i.e. OCTET_STRING, INTEGER aso, imported by Net::SNMP asn1 $value: <the value to set> $actual: 1 => the oid indcated by oidname, and translated to an actual oid is the actual final one 0 => Append port ID to the oid before setting

Returns: a status string indicating the result.

read_oid

Uses Net::SNMP::Util to read the value of an oid for a specific slot.

read_operstatus

Asks the IES for OperStatus on the port.

read_uptime

Asks the IES for uptime on the port.

read_profile

Asks the IES for profile on the port.

write_profile

read_ifInOctets

Asks the IES for ifInOctets on the port.

read_ifOutOctets

Asks the IES for ifOutOctets on the port.

read_ifLastChange

Asks the IES for ifLastChange on the port.

read_maxmac

Asks the IES for maxmac on the port.

write_maxmac

Sets the macFilterPortMacCount value in the dslam, and the value of the attribute here.

read_adminstatus

Asks the IES for OperStatus on the port.

write_adminstatus

 Sets ifAdminStatus on the Port on the device.
 

read_userinfo

Asks the IES for userinfo on the port.

readIfType

Retrieves the ifType [ADSL, VDSL, SHDSL] from the associated slot object. If cardtype (which determines the ifType) is not previosly read from the dslam, and present in the object, it start by reading the cardtype from the IES.

read_maxdown

Asks the IES for max attainable downstream speed on the port.

Different OID's for different slot types, determined by the slot cardtype.

read_maxup

Asks the IES for maximum attainable speed upstream on the port.

Different OID's for different slot types, determined by the slot cardtype.

read_downspeed

Asks the IES for the current downstream speed on the port.

Different OID's for different slot types, determined by the slot cardtype.

read_upspeed

Asks the IES for current upstream speed on the port.

Different OID's for different slot types, determined by the slot cardtype.

read_snrdown

Asks the IES for the SNR for the downstream channel on the port.

Network side in case of SHDSL.

Different OID's for different slot types, determined by the slot cardtype.

read_snrup

Asks the IES for SNR Margin on the upstream channel on the port.

Customer side in case of SHDSL.

Different OID's for different slot types, determined by the slot cardtype.

read_atndown

Asks the IES for the Attenaution for the downstream channel on the port.

Network side in case of SHDSL.

Different OID's for different slot types, determined by the slot cardtype.

read_atnup

Asks the IES for Attenaution on the upstream channel on the port.

Customer side in case of SHDSL.

Different OID's for different slot types, determined by the slot cardtype.

read_inpdown

Asks the IES for the Impulse Noice Protection level for the downstream channel on the port.

Different OID's for different slot types, determined by the slot cardtype.

write_inpdown

Set the INP value in the device, and sets the attribute upon succes.

read_inpup

Asks the IES for the Impulse Noice Protection level for the upstream channel on the port.

Different OID's for different slot types, determined by the slot cardtype.

write_inpup

read_annexM

Asks the IES for the Annex M setting for the ADSL port.

Different OID's for different slot types, determined by the slot cardtype.

write_annexM

Sets the annexM value on the port on the IES.

read_annexL

Asks the IES for the Annex L setting for the ADSL port.

Different OID's for different slot types, determined by the slot cardtype.

write_annexL

Sets the annexL value on the port on the IES.

read_wirepairmode

Asks the IES for the S.HDSL Wirepair mode of the port.

Different OID's for different slot types, determined by the slot cardtype.

read_vdslprotocol

Asks the IES for the actual VDSL protocol used on the port

Different OID's for different slot types, determined by the slot cardtype.

read_hlog_near

Asks the dslam for the near end part (dslam side) of the hlog data.

Finds the correct oids to ask for, depending on the ifType

read_hlog_far

Asks the dslam for the far end part (cpe side) of the hlog data.

Finds the correct oids to ask for, depending on the ifType

read_qln_near

Asks the dslam for the near end part (dslam side) of the qln data.

Finds the correct oids to ask for, depending on the ifType

read_qln_far

Asks the dslam for the far end part (cpe side) of the qln data.

Finds the correct oids to ask for, depending on the ifType

read_snr_near

Asks the dslam for the downstream part of the snr data.

read_snr_far

Asks the dslam for the upstream part of the snr data.

write_selt_begin

Sets the SeltOps thus initiating the SELT procedure on the port.

read_selt_results

Attempts to fetch the results of a SELT operation on the port.

Stores fetched values in the corresponding port attributes.

read_dhcp_stats

Fetches the number of DHCPDISCOVER,-OFFER,-REQUEST and -ACK from the IES DHCP relay feature.

Params: None

Returns: Hash containing values for DISCOVER,OFFER,REQUEST,ACK and ACKBYSNOOPFULL

read_snoop_iplist

 Retrieves the list of IP-Mac combination in the snoop table
 for a given port.
 

read_es_interval

 Reads the ES Interval MIB, which returns a value for each 15 minute interval during the past 24 hours.
 

read_crc_interval

 Reads the ES Interval MIB, which returns a value for each 15 minute interval during the past 24 hours.
 

fetchAllDetails

Retrieves the details of a port from the IES.

Fetches all relevant information from the port, and fills values into the appropriate attributes.

fetchDetails

 Retrieves the details of a port from the IES.
 
 Fetches all relevant information from the port, and fills values into the appropriate attributes.
 

Private Methods

to_signed16int

Method that converts a 16 bit unsigned to a signed value

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Device::ZyXEL::IES::Port


        You can also look for information at:

ACKNOWLEDGEMENTS

Fullrate (http://www.fullrate.dk) Thanks for allowing me to be introduced to the "wonderful" device ;) And thanks for donating some of my work time to create this module and sharing it with the world.

COPYRIGHT & LICENSE

Copyright 2012 Jesper Dalberg, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.